all:
  children:
    tempest:
      hosts:
        controller: null
    zuul_unreachable:
      hosts: {}
  hosts:
    controller:
      ansible_connection: ssh
      ansible_host: 199.204.45.240
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      configure_swap_size: 8192
      devstack_local_conf:
        post-config:
          $NEUTRON_CONF:
            DEFAULT:
              global_physnet_mtu: '{{ external_bridge_mtu }}'
          /etc/magnum/magnum.conf:
            cluster_template:
              kubernetes_allowed_network_drivers: calico,cilium
              kubernetes_default_network_driver: calico
            nova_client:
              api_version: 2.15
          /etc/manila/manila.conf:
            generic:
              connect_share_server_to_tenant_network: true
              driver_handles_share_servers: true
      devstack_localrc:
        ADMIN_PASSWORD: secretadmin
        DATABASE_PASSWORD: secretdatabase
        DEBUG_LIBVIRT_COREDUMPS: true
        DISABLE_AMP_IMAGE_BUILD: true
        ENABLE_SYSCTL_MEM_TUNING: true
        ENABLE_SYSCTL_NET_TUNING: true
        ENABLE_ZSWAP: true
        ERROR_ON_CLONE: true
        FIXED_RANGE: 10.1.0.0/20
        FLOATING_RANGE: 172.24.5.0/24
        GIT_BASE: https://github.com
        HOST_IP: '{{ hostvars[''controller''][''nodepool''][''private_ipv4''] }}'
        IPV4_ADDRS_SAFE_TO_USE: 10.1.0.0/20
        LIBVIRT_TYPE: '{{ devstack_libvirt_type | default("qemu") }}'
        LOGFILE: /opt/stack/logs/devstacklog.txt
        LOG_COLOR: false
        MAGNUM_GUEST_IMAGE_URL: '{{ image_url }}'
        MANILA_DEFAULT_SHARE_TYPE_EXTRA_SPECS: snapshot_support=True create_share_from_snapshot_support=True
        MANILA_ENABLED_BACKENDS: generic
        MANILA_USE_SERVICE_INSTANCE_PASSWORD: true
        NETWORK_GATEWAY: 10.1.0.1
        NOVA_LIBVIRT_TB_CACHE_SIZE: 128
        NOVA_VNC_ENABLED: true
        OCTAVIA_NODE: api
        OVN_DBS_LOG_LEVEL: dbg
        PUBLIC_BRIDGE_MTU: '{{ external_bridge_mtu }}'
        PUBLIC_NETWORK_GATEWAY: 172.24.5.1
        RABBIT_PASSWORD: secretrabbit
        SERVICE_HOST: '{{ hostvars[''controller''][''nodepool''][''private_ipv4'']
          }}'
        SERVICE_PASSWORD: secretservice
        SWIFT_HASH: 1234123412341234
        SWIFT_REPLICAS: 1
        SWIFT_START_ALL_SERVICES: false
        VERBOSE: true
        VERBOSE_NO_TIMESTAMP: true
      devstack_plugins:
        barbican: https://github.com/openstack/barbican
        magnum: https://review.opendev.org/openstack/magnum
        magnum-cluster-api: https://github.com/vexxhost/magnum-cluster-api
        manila: https://github.com/openstack/manila
        octavia: https://github.com/openstack/octavia
        ovn-octavia-provider: https://github.com/openstack/ovn-octavia-provider
      devstack_services:
        base: false
        c-api: true
        c-bak: true
        c-sch: true
        c-vol: true
        dstat: false
        etcd3: true
        file_tracker: true
        g-api: true
        horizon: false
        key: true
        memory_tracker: true
        mysql: true
        n-api: true
        n-api-meta: true
        n-cond: true
        n-cpu: true
        n-novnc: true
        n-sch: true
        o-api: true
        o-da: true
        o-hk: true
        octavia: true
        openstack-cli-server: true
        ovn-controller: true
        ovn-northd: true
        ovs-vswitchd: true
        ovsdb-server: true
        placement-api: true
        q-ovn-agent: true
        q-svc: true
        rabbit: true
        s-account: false
        s-container: false
        s-object: false
        s-proxy: false
        tempest: false
        tls-proxy: true
      extensions_to_txt:
        auto: true
        conf: true
        localrc: true
        log: true
        stackenv: true
      image_url: https://github.com/vexxhost/capo-image-elements/releases/latest/download/ubuntu-22.04-{{
        kube_tag }}.qcow2
      kube_tag: v1.34.7
      network_driver: calico
      nodepool:
        az: nova
        cloud: public
        external_id: d0f4ccf2-13ee-44a2-b20d-8e1d03b8b77b
        host_id: be92abac58cdf319c41ec3044bb265315879370c10aa7110cfdbfb5f
        interface_ip: 199.204.45.240
        label: ubuntu-noble-16
        node_properties: {}
        private_ipv4: 199.204.45.240
        private_ipv6: null
        provider: yul1
        public_ipv4: 199.204.45.240
        public_ipv6: 2604:e100:1:0:f816:3eff:feb3:e0d7
        region: ca-ymq-1
        slot: null
      zuul_copy_output:
        /etc/ceph: logs
        /etc/glusterfs/glusterd.vol: logs
        /etc/libvirt: logs
        /etc/lvm: logs
        /etc/resolv.conf: logs
        /etc/sudoers: logs
        /etc/sudoers.d: logs
        /var/log/ceph: logs
        /var/log/glusterfs: logs
        /var/log/libvirt: logs
        /var/log/mysql: logs
        /var/log/openvswitch: logs
        /var/log/postgresql: logs
        /var/log/rabbitmq: logs
        /var/log/unbound.log: logs
        '{{ devstack_conf_dir }}/.localrc.auto': logs
        '{{ devstack_conf_dir }}/.stackenv': logs
        '{{ devstack_conf_dir }}/local.conf': logs
        '{{ devstack_conf_dir }}/localrc': logs
        '{{ devstack_full_log}}': logs
        '{{ devstack_log_dir }}/atop': logs
        '{{ devstack_log_dir }}/devstacklog.txt': logs
        '{{ devstack_log_dir }}/devstacklog.txt.summary': logs
        '{{ devstack_log_dir }}/dstat-csv.log': logs
        '{{ devstack_log_dir }}/qemu.coredump': logs
        '{{ devstack_log_dir }}/tcpdump.pcap': logs
        '{{ devstack_log_dir }}/worlddump-latest.txt': logs
        '{{ stage_dir }}/apache': logs
        '{{ stage_dir }}/apache_config': logs
        '{{ stage_dir }}/audit.log': logs
        '{{ stage_dir }}/core': logs
        '{{ stage_dir }}/deprecations.log': logs
        '{{ stage_dir }}/df.txt': logs
        '{{ stage_dir }}/dpkg-l.txt': logs
        '{{ stage_dir }}/etc': logs
        '{{ stage_dir }}/iptables.txt': logs
        '{{ stage_dir }}/listen53.txt': logs
        '{{ stage_dir }}/mount.txt': logs
        '{{ stage_dir }}/performance.json': logs
        '{{ stage_dir }}/pip2-freeze.txt': logs
        '{{ stage_dir }}/pip3-freeze.txt': logs
        '{{ stage_dir }}/rpm-qa.txt': logs
        '{{ stage_dir }}/services.txt': logs
        '{{ stage_dir }}/verify_tempest_conf.log': logs
      zuul_node:
        az: nova
        cloud: public
        external_id: d0f4ccf2-13ee-44a2-b20d-8e1d03b8b77b
        host_id: be92abac58cdf319c41ec3044bb265315879370c10aa7110cfdbfb5f
        interface_ip: 199.204.45.240
        label: ubuntu-noble-16
        node_properties: {}
        private_ipv4: 199.204.45.240
        private_ipv6: null
        provider: yul1
        public_ipv4: 199.204.45.240
        public_ipv6: 2604:e100:1:0:f816:3eff:feb3:e0d7
        region: ca-ymq-1
        slot: null
        uuid: null
  vars:
    configure_swap_size: 8192
    devstack_local_conf:
      post-config:
        $NEUTRON_CONF:
          DEFAULT:
            global_physnet_mtu: '{{ external_bridge_mtu }}'
        /etc/magnum/magnum.conf:
          cluster_template:
            kubernetes_allowed_network_drivers: calico,cilium
            kubernetes_default_network_driver: calico
          nova_client:
            api_version: 2.15
        /etc/manila/manila.conf:
          generic:
            connect_share_server_to_tenant_network: true
            driver_handles_share_servers: true
    devstack_localrc:
      ADMIN_PASSWORD: secretadmin
      DATABASE_PASSWORD: secretdatabase
      DEBUG_LIBVIRT_COREDUMPS: true
      DISABLE_AMP_IMAGE_BUILD: true
      ENABLE_SYSCTL_MEM_TUNING: true
      ENABLE_SYSCTL_NET_TUNING: true
      ENABLE_ZSWAP: true
      ERROR_ON_CLONE: true
      FIXED_RANGE: 10.1.0.0/20
      FLOATING_RANGE: 172.24.5.0/24
      GIT_BASE: https://github.com
      HOST_IP: '{{ hostvars[''controller''][''nodepool''][''private_ipv4''] }}'
      IPV4_ADDRS_SAFE_TO_USE: 10.1.0.0/20
      LIBVIRT_TYPE: '{{ devstack_libvirt_type | default("qemu") }}'
      LOGFILE: /opt/stack/logs/devstacklog.txt
      LOG_COLOR: false
      MAGNUM_GUEST_IMAGE_URL: '{{ image_url }}'
      MANILA_DEFAULT_SHARE_TYPE_EXTRA_SPECS: snapshot_support=True create_share_from_snapshot_support=True
      MANILA_ENABLED_BACKENDS: generic
      MANILA_USE_SERVICE_INSTANCE_PASSWORD: true
      NETWORK_GATEWAY: 10.1.0.1
      NOVA_LIBVIRT_TB_CACHE_SIZE: 128
      NOVA_VNC_ENABLED: true
      OCTAVIA_NODE: api
      OVN_DBS_LOG_LEVEL: dbg
      PUBLIC_BRIDGE_MTU: '{{ external_bridge_mtu }}'
      PUBLIC_NETWORK_GATEWAY: 172.24.5.1
      RABBIT_PASSWORD: secretrabbit
      SERVICE_HOST: '{{ hostvars[''controller''][''nodepool''][''private_ipv4''] }}'
      SERVICE_PASSWORD: secretservice
      SWIFT_HASH: 1234123412341234
      SWIFT_REPLICAS: 1
      SWIFT_START_ALL_SERVICES: false
      VERBOSE: true
      VERBOSE_NO_TIMESTAMP: true
    devstack_plugins:
      barbican: https://github.com/openstack/barbican
      magnum: https://review.opendev.org/openstack/magnum
      magnum-cluster-api: https://github.com/vexxhost/magnum-cluster-api
      manila: https://github.com/openstack/manila
      octavia: https://github.com/openstack/octavia
      ovn-octavia-provider: https://github.com/openstack/ovn-octavia-provider
    devstack_services:
      base: false
      c-api: true
      c-bak: true
      c-sch: true
      c-vol: true
      dstat: false
      etcd3: true
      file_tracker: true
      g-api: true
      horizon: false
      key: true
      memory_tracker: true
      mysql: true
      n-api: true
      n-api-meta: true
      n-cond: true
      n-cpu: true
      n-novnc: true
      n-sch: true
      o-api: true
      o-da: true
      o-hk: true
      octavia: true
      openstack-cli-server: true
      ovn-controller: true
      ovn-northd: true
      ovs-vswitchd: true
      ovsdb-server: true
      placement-api: true
      q-ovn-agent: true
      q-svc: true
      rabbit: true
      s-account: false
      s-container: false
      s-object: false
      s-proxy: false
      tempest: false
      tls-proxy: true
    extensions_to_txt:
      auto: true
      conf: true
      localrc: true
      log: true
      stackenv: true
    image_url: https://github.com/vexxhost/capo-image-elements/releases/latest/download/ubuntu-22.04-{{
      kube_tag }}.qcow2
    kube_tag: v1.34.7
    network_driver: calico
    zuul:
      _inheritance_path:
      - '<Job base explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: vexxhost/zuul-config/zuul.d/jobs.yaml@main#1>'
      - '<Job openstack-multinode-fips explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: vexxhost/zuul-config/zuul.d/jobs.yaml@main#17>'
      - '<Job devstack-base explicit: None implied: {MatchAny:{ImpliedBranchMatcher:master}}
        source: openstack/devstack/.zuul.yaml@master#368>'
      - '<Job devstack-minimal explicit: None implied: {MatchAny:{ImpliedBranchMatcher:master}}
        source: openstack/devstack/.zuul.yaml@master#502>'
      - '<Job devstack explicit: None implied: {MatchAny:{ImpliedBranchMatcher:master}}
        source: openstack/devstack/.zuul.yaml@master#545>'
      - '<Job magnum-cluster-api-devstack explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: vexxhost/magnum-cluster-api/zuul.d/jobs.yaml@main#1>'
      - '<Job magnum-cluster-api-hydrophone explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: vexxhost/magnum-cluster-api/zuul.d/jobs.yaml@main#60>'
      - '<Job magnum-cluster-api-hydrophone-v1.34.7 explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: vexxhost/magnum-cluster-api/zuul.d/jobs.yaml@main#90>'
      - '<Job magnum-cluster-api-hydrophone-v1.34.7-calico explicit: None implied:
        {MatchAny:{ImpliedBranchMatcher:main}} source: vexxhost/magnum-cluster-api/zuul.d/jobs.yaml@main#96>'
      - '<Job magnum-cluster-api-hydrophone-v1.34.7-calico explicit: None implied:
        None source: vexxhost/magnum-cluster-api/zuul.d/project.yaml@main#1>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: 6a2ccefed54d448cbea698bcdc94d3bb
      build_refs:
      - branch: main
        change: '1067'
        change_message: "fix(deps): update rust crate pyo3 to 0.29.0 [security]\n\nThis
          PR contains the following updates:\n\n| Package | Type | Update | Change
          |\n|---|---|---|---|\n| [pyo3](https://redirect.github.com/pyo3/pyo3) |
          dependencies | minor | `0.28.0` \u2192 `0.29.0` |\n\n---\n\n### PyO3 has
          an Out-of-bounds Read in `nth` / `nth_back` for `PyList` and `PyTuple` iterators\n[GHSA-36hh-v3qg-5jq4](https://redirect.github.com/advisories/GHSA-36hh-v3qg-5jq4)\n\n<details>\n<summary>More
          information</summary>\n\n#### Details\nPyO3 0.24.0 added optimized implementations
          of `Iterator::nth` and `DoubleEndedIterator::nth_back` for the `BoundListIterator`
          and `BoundTupleIterator` types. These implementations computed the target
          index using unchecked `usize` addition (`index + n`) before bounds-checking
          against the sequence length, then read the element via `get_item_unchecked`.\n\nIn
          `nth` methods, a sufficiently large `n` (combined with a non-zero internal
          index) could cause the addition to overflow and wrap around, producing a
          small \"target index\" that passed the bounds check and enabling reads at
          the front of the `list` or `tuple` of elements previously yielded by the
          iterator.\n\nIn `nth_back` methods, a sufficiently large `n` could cause
          underflow in a similar fashion, however would instead allow reads of arbitrary
          memory past the end of the `list` or `tuple` storage.\n\n#### Severity\n-
          CVSS Score: 8.7 / 10 (High)\n- Vector String: `CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N`\n\n####
          References\n- [https://github.com/PyO3/pyo3/pull/6086](https://redirect.github.com/PyO3/pyo3/pull/6086)\n-
          [https://rustsec.org/advisories/RUSTSEC-2026-0176.html](https://rustsec.org/advisories/RUSTSEC-2026-0176.html)\n-
          [https://github.com/advisories/GHSA-36hh-v3qg-5jq4](https://redirect.github.com/advisories/GHSA-36hh-v3qg-5jq4)\n\nThis
          data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-36hh-v3qg-5jq4)
          ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).\n</details>\n\n---\n\n###
          Release Notes\n\n<details>\n<summary>pyo3/pyo3 (pyo3)</summary>\n\n### [`v0.29.0`](https://redirect.github.com/pyo3/pyo3/blob/HEAD/CHANGELOG.md#0290---2026-06-11)\n\n[Compare
          Source](https://redirect.github.com/pyo3/pyo3/compare/v0.28.3...v0.29.0)\n\n#####
          Packaging\n\n- Support the new PEP 803 abi3t ABI with new `abi3t` and `abi3t-py315`
          features. [#&#8203;5807](https://redirect.github.com/PyO3/pyo3/pull/5807)\n-
          `pyo3-macros-backend` no longer depends on `pyo3-build-config`. [#&#8203;5809](https://redirect.github.com/PyO3/pyo3/pull/5809)\n-
          Drop support for Python 3.13t (3.14t and above continue to be supported;
          CPython declared free-threading supported starting with Python 3.14). [#&#8203;5865](https://redirect.github.com/PyO3/pyo3/pull/5865)\n-
          Drop support for Python 3.7. [#&#8203;5912](https://redirect.github.com/PyO3/pyo3/pull/5912)\n-
          Extend range of supported versions of `hashbrown` optional dependency to
          include version 0.17. [#&#8203;5973](https://redirect.github.com/PyO3/pyo3/pull/5973)\n-
          Support Python 3.15.0b1. [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n-
          `pyo3-ffi` is now `no_std`. [#&#8203;6022](https://redirect.github.com/PyO3/pyo3/pull/6022)\n\n#####
          Added\n\n- Add `PyErr::set_traceback` to set the traceback of an exception
          object. [#&#8203;5349](https://redirect.github.com/PyO3/pyo3/pull/5349)\n-
          Add `PyUnicodeDecodeError::new_err_from_utf8` to create a `PyErr` from a
          `str::Utf8Error`. [#&#8203;5668](https://redirect.github.com/PyO3/pyo3/pull/5668)\n-
          `experimental-inspect`: implement `INPUT_TYPE` and `OUTPUT_TYPE` on optional
          third-party crate conversions. [#&#8203;5770](https://redirect.github.com/PyO3/pyo3/pull/5770)\n-
          `experimental-inspect`: include doc comments in generated stubs. [#&#8203;5782](https://redirect.github.com/PyO3/pyo3/pull/5782)\n-
          Add `pyo3_build_config::PythonAbi`, `pyo3_build_config::PythonAbiKind`,
          `pyo3_build_config::PythonAbiBuilder`, `pyo3_build_config::InterpreterConfig::target_abi`,
          and `pyo3_build_config::InterpreterConfigBuilder::target_abi`. [#&#8203;5807](https://redirect.github.com/PyO3/pyo3/pull/5807)\n-
          Add `Borrowed::get` as an equivalent to `Bound::get` and `Py::get`. [#&#8203;5849](https://redirect.github.com/PyO3/pyo3/pull/5849)\n-
          Add `PyFrame::new`, `PyTraceBack::new`, and `PyFrameMethods::line_number`.
          [#&#8203;5857](https://redirect.github.com/PyO3/pyo3/pull/5857)\n- Add `PyUntypedBuffer::obj`
          to retrieve the Python object owning the buffer. [#&#8203;5870](https://redirect.github.com/PyO3/pyo3/pull/5870)\n-
          Add `PyCapsule::new_with_value` and `PyCapsule::new_with_value_and_destructor`.
          [#&#8203;5881](https://redirect.github.com/PyO3/pyo3/pull/5881)\n- Add `PyErr::set_context`
          and `PyErr::context`. [#&#8203;5887](https://redirect.github.com/PyO3/pyo3/pull/5887)\n-
          Add a small CLI to `pyo3-introspection` to generate stubs. [#&#8203;5904](https://redirect.github.com/PyO3/pyo3/pull/5904)\n-
          Add `Python::version_str`. [#&#8203;5921](https://redirect.github.com/PyO3/pyo3/pull/5921)\n-
          Add `TryFrom<&Bound<T>>` for `PyRef<T>`, `PyRefMut<T>`, `PyClassGuard<T>`
          and `PyClassGuardMut<T>`. [#&#8203;5922](https://redirect.github.com/PyO3/pyo3/pull/5922)\n-
          Add `From<&Bound<T>>` for `Bound<T>` and `Py<T>` [#&#8203;5922](https://redirect.github.com/PyO3/pyo3/pull/5922)\n-
          Add `PyDictMethods::set_default` and `PyDictMethods::set_default_ref` to
          allow atomically setting default values in a PyDict. [#&#8203;5955](https://redirect.github.com/PyO3/pyo3/pull/5955)\n-
          add `PyFrameMethods::outer|code|var|builtins|globals|locals`. [#&#8203;5967](https://redirect.github.com/PyO3/pyo3/pull/5967)\n-
          Add `From` conversions for `PyErr` from `std::time::TryFromFloatSecsError`,
          `std::time::SystemTimeError`, `std::path::StripPrefixError`, `std::env::JoinPathsError`,
          `std::char::ParseCharError`, and `std::char::CharTryFromError`. [#&#8203;6001](https://redirect.github.com/PyO3/pyo3/pull/6001)\n-
          Add `pyo3_build_config::InterpreterConfigBuilder`. [#&#8203;6034](https://redirect.github.com/PyO3/pyo3/pull/6034)\n-
          Add `PyCapsule::import_pointer` [#&#8203;6066](https://redirect.github.com/PyO3/pyo3/pull/6066)\n-
          Add `PyClassGuardMapMut`. [#&#8203;6073](https://redirect.github.com/PyO3/pyo3/pull/6073)\n-
          Expose `PyListMethods::get_item_unchecked`, `PyTupleMethods::get_item_unchecked`,
          and `PyTupleMethods::get_borrowed_item_unchecked` on abi3. [#&#8203;6075](https://redirect.github.com/PyO3/pyo3/pull/6075)\n-
          Add `PyClassGuardMapSuper`. [#&#8203;6104](https://redirect.github.com/PyO3/pyo3/pull/6104)\n-
          Add `PyClassGuard` and `PyClassGuardMut` to `pyo3::prelude`. [#&#8203;6112](https://redirect.github.com/PyO3/pyo3/pull/6112)\n-
          Add `Debug` impls for `PyClassGuard` and `PyClassGuardMut`. [#&#8203;6112](https://redirect.github.com/PyO3/pyo3/pull/6112)\n-
          Enable extending `PyDateTime`, `PyDate`, `PyTime`, `PyDelta` and `PyTzInfo`
          on abi3 with python 3.12+. [#&#8203;6115](https://redirect.github.com/PyO3/pyo3/pull/6115)\n-
          Expose `PyFunction` available on abi3. [#&#8203;6117](https://redirect.github.com/PyO3/pyo3/pull/6117)\n-
          FFI definitions:\n  - Added FFI definitions `PyUnstable_Object_IsUniquelyReferenced`,
          `PyUnstable_Object_IsUniquelyReferencedTemporary`, `PyUnstable_EnableTryIncref`,
          and `PyUnstable_TryIncref`. [#&#8203;5828](https://redirect.github.com/PyO3/pyo3/pull/5828)\n
          \ - Add FFI definitions `ffi::PyErr_GetHandledException` and `ffi::PyErr_SetHandledException`.
          [#&#8203;5887](https://redirect.github.com/PyO3/pyo3/pull/5887)\n  - Add
          FFI definition `Py_HASH_SIPHASH13`. [#&#8203;5891](https://redirect.github.com/PyO3/pyo3/pull/5891)\n
          \ - Add FFI definition `PyStructSequence_UnnamedField` constant on Python
          3.9 and up (or 3.11 with abi3 features). [#&#8203;5892](https://redirect.github.com/PyO3/pyo3/pull/5892)\n
          \ - Add FFI definitions `PyUnstable_InterpreterFrame_GetCode`, `PyUnstable_InterpreterFrame_GetLasti`,
          `PyUnstable_InterpreterFrame_GetLine`, and `PyUnstable_ExecutableKinds`.
          [#&#8203;5932](https://redirect.github.com/PyO3/pyo3/pull/5932)\n  - Add
          FFI definitions `PyMarshal_WriteLongToFile`, `PyMarshal_WriteObjectToFile`,
          `PyMarshal_ReadLongFromFile`, `PyMarshal_ReadShortFromFile`, `PyMarshal_ReadObjectFromFile`,
          and `PyMarshal_ReadLastObjectFromFile`. [#&#8203;5934](https://redirect.github.com/PyO3/pyo3/pull/5934)\n
          \ - Add FFI definitions `PyObject_GetAIter`, `PyAIter_Check`, `PyMapping_HasKeyWithError`,
          `PyMapping_HasKeyStringWithError`, `PyMapping_GetOptionalItem`, `PyMapping_GetOptionalItemString`,
          `PySequence_ITEM`, `PySequence_Fast_GET_SIZE`, `PySequence_Fast_GET_ITEM`,
          and `PySequence_Fast_ITEMS`. [#&#8203;5942](https://redirect.github.com/PyO3/pyo3/pull/5942)\n
          \ - Add FFI definition `compat::PyObject_HasAttrWithError`. [#&#8203;5944](https://redirect.github.com/PyO3/pyo3/pull/5944)\n
          \ - Add FFI definitions `PyDict_SetDefault`, `PyDict_SetDefaultRef`, `PyDict_ContainsString`,
          `PyDict_Pop`, `PyDict_PopString`, `PyDict_ClearWatcher`, `PyDict_Watch`,
          `PyDict_Unwatch`, and `PyFrozenDict_New`. [#&#8203;5947](https://redirect.github.com/PyO3/pyo3/pull/5947)\n
          \ - Add FFI definitions `PyDate_FromDate`, `PyDateTime_FromDateAndTime`,
          `PyDateTime_FromDateAndTimeAndFold`, `PyTime_FromTime`, `PyTime_FromTimeAndFold`,
          and `PyDelta_FromDSU`. [#&#8203;5949](https://redirect.github.com/PyO3/pyo3/pull/5949)\n
          \ - Add FFI definitions `PyDict_SetDefaultRef` and `compat::PyDict_SetDefaultRef`.
          [#&#8203;5955](https://redirect.github.com/PyO3/pyo3/pull/5955)\n    versions.\n
          \ - Add FFI definitions for non-limited API header `cpython/bytearrayobject.h`.
          [#&#8203;5966](https://redirect.github.com/PyO3/pyo3/pull/5966)\n  - Add
          FFI definitions for non-limited API version of `PyCellObject` and associated
          functions. [#&#8203;5978](https://redirect.github.com/PyO3/pyo3/pull/5978)\n
          \ - Add FFI definition `PyErr_WarnExplicitObject`. [#&#8203;5979](https://redirect.github.com/PyO3/pyo3/pull/5979)\n
          \ - Add FFI definition `PyTracebackObject`. [#&#8203;5980](https://redirect.github.com/PyO3/pyo3/pull/5980)\n
          \ - Add FFI definition `PyTuple_FromArray` on 3.15+. [#&#8203;5990](https://redirect.github.com/PyO3/pyo3/pull/5990)\n
          \ - Add FFI definitions for the PEP 820 PySlot C API. [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n
          \ - Add FFI definitions for the critical section API in the limited API
          on Python 3.15\n    and newer. [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n
          \ - Add FFI definitions for [PEP 757](https://peps.python.org/pep-0757/)
          `PyLong` import / export API on Python 3.14+. [#&#8203;6016](https://redirect.github.com/PyO3/pyo3/pull/6016)\n
          \ - Add FFI definitions `PyEval_SetProfileAllThreads` and `PyEval_SetTraceAllThreads`.
          [#&#8203;6038](https://redirect.github.com/PyO3/pyo3/pull/6038)\n  - Add
          FFI definition `Py_UNICODE_TODECIMAL`. [#&#8203;6041](https://redirect.github.com/PyO3/pyo3/pull/6041)\n\n#####
          Changed\n\n- Change exception enrichment on `#[pyfunction]` argument extraction
          error to use `PyErr::add_note` instead of replacing `TypeError` instances.
          [#&#8203;5349](https://redirect.github.com/PyO3/pyo3/pull/5349)\n- Deprecate
          super-class initialization via tuples. [#&#8203;5741](https://redirect.github.com/PyO3/pyo3/pull/5741)\n-
          Change module initialization uses the PyModExport and PyABIInfo APIs on
          Python 3.15+. [#&#8203;5753](https://redirect.github.com/PyO3/pyo3/pull/5753)\n-
          Deprecate `Py<T>::get_refcnt` and `PyAnyMethods::get_refcnt` in favor of
          `pyo3::ffi::Py_REFCNT(obj.as_ptr())`. [#&#8203;5797](https://redirect.github.com/PyO3/pyo3/pull/5797)\n-
          Change `PyEnvironmentError`, `PyIOError`, and `PyWindowsError` to be type
          aliases of `PyOSError` (as is the case in Python since 3.3). [#&#8203;5803](https://redirect.github.com/PyO3/pyo3/pull/5803)\n-
          Change `pyo3_build_config::InterpreterConfig::from_interpreter` to require
          an additional `stable_abi_version` argument. The old behavior is the same
          as passing `None`. [#&#8203;5807](https://redirect.github.com/PyO3/pyo3/pull/5807)\n-
          Change `PyList::new` to no longer have `ExactSizeIterator` bound. [#&#8203;5830](https://redirect.github.com/PyO3/pyo3/pull/5830)\n-
          `experimental-inspect`: emit `#[classattribute]` as plain Python class attributes
          and not functions annotated with `@classattribute` and `@property`. [#&#8203;5839](https://redirect.github.com/PyO3/pyo3/pull/5839)\n-
          `experimental-inspect`: use `object` as the input annotation type of magic
          methods that return `NonImplemented` if the input value is not of the correct
          type. [#&#8203;5841](https://redirect.github.com/PyO3/pyo3/pull/5841)\n-
          Deprecate `pyo3-build-config/resolve-config` feature. [#&#8203;5862](https://redirect.github.com/PyO3/pyo3/pull/5862)\n-
          Change `pyo3-ffi` to use raw-dylib for Windows linking. [#&#8203;5866](https://redirect.github.com/PyO3/pyo3/pull/5866)\n-
          Deprecate `generate-import-lib` feature. [#&#8203;5866](https://redirect.github.com/PyO3/pyo3/pull/5866)\n-
          Allow zero-sized types in `PyCapsule::new`. [#&#8203;5889](https://redirect.github.com/PyO3/pyo3/pull/5889)\n-
          `PyDate::from_timestamp` argument is now a `f64` (the Python API expects
          a float and not an integer) [#&#8203;5896](https://redirect.github.com/PyO3/pyo3/pull/5896)\n-
          `experimental-inspect`: Change `PathBuf::extract` input type hint from `str
          | os.PathLike` to `str | os.PathLike[str]` [#&#8203;5897](https://redirect.github.com/PyO3/pyo3/pull/5897)\n-
          Remove lifetime from `PythonVersionInfo`. [#&#8203;5921](https://redirect.github.com/PyO3/pyo3/pull/5921)\n-
          Remove redundant type checks for methods where CPython guarantees the type
          of `self`. [#&#8203;5930](https://redirect.github.com/PyO3/pyo3/pull/5930)\n-
          Elide temporary reference count cycles inside `PyAnyMethods::call`, `PyAnyMethods::call1`
          and `PyAnyMethods::call_method1` for arguments passed as Rust tuples containing
          borrowed references to Python objects. [#&#8203;5941](https://redirect.github.com/PyO3/pyo3/pull/5941)\n-
          Allow type annotations to be used in `#[pyo3(signature = ...)]` when `experimental-inspect`
          feature is not enabled (they will be ignored). [#&#8203;5999](https://redirect.github.com/PyO3/pyo3/pull/5999)\n-
          `pyo3-ffi` will now rebuild when the Python virtual environment changes
          in-place. [#&#8203;6008](https://redirect.github.com/PyO3/pyo3/pull/6008)\n-
          Change module initialization on 3.15+ to use PEP 820 PySlot API internally.
          [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n- Deprecate
          direct access to all `pyo3_build_config::InterpreterConfig` fields; getter
          methods have been added as replacements. [#&#8203;6034](https://redirect.github.com/PyO3/pyo3/pull/6034)\n-
          FFI definitions `_PyCode_GetExtra`, `_PyCode_SetExtra`, and `_PyEval_RequestCodeExtraIndex`
          have been updated to `PyUnstable_Code_GetExtra`, `PyUnstable_Code_SetExtra`,
          and `PyUnstable_Eval_RequestCodeExtraIndex`. [#&#8203;6038](https://redirect.github.com/PyO3/pyo3/pull/6038)\n-
          Change `PyCapsule::import` to return an error if the pointer is not properly
          aligned. [#&#8203;6066](https://redirect.github.com/PyO3/pyo3/pull/6066)\n-
          Change `PyClassGuardMap` to be only for `PyClassGuard::map` and return `PyClassGuardMapMut`
          from `PyClassGuardMut::map`. [#&#8203;6073](https://redirect.github.com/PyO3/pyo3/pull/6073)\n-
          Change `with_critical_section_mutex2` closure to take `Option<EnteredCriticalSection>`
          instead of `EnteredCriticalSection` as the second argument. [#&#8203;6098](https://redirect.github.com/PyO3/pyo3/pull/6098)\n-
          `PyClassGuardMut::as_super` now returns `PyClassGuardMutSuper`. [#&#8203;6104](https://redirect.github.com/PyO3/pyo3/pull/6104)\n-
          `experimental-inspect`: Generate relative imports instead of absolute ones
          (useful if the stubs are not describing a root package) [#&#8203;6097](https://redirect.github.com/PyO3/pyo3/pull/6097)\n\n#####
          Removed\n\n- Removed the broken (and unfixable) implementations of `From<str::Utf8Error>`,
          `From<string::FromUtf16Error>`, and `From<char::DecodeUtf16Error>` for `PyErr`.
          [#&#8203;5668](https://redirect.github.com/PyO3/pyo3/pull/5668)\n- Remove
          `Py_TRACE_REFS` support (unsupported from Python 3.13). [#&#8203;5824](https://redirect.github.com/PyO3/pyo3/pull/5824)\n-
          `experimental-inspect`: Remove the `TypeInfo` enum and the `FromPyObject::type_input`
          and `IntoPyObject::type_output` functions. They are replaced by the `PyStaticExpr`
          enum and the `FromPyObject::INPUT_TYPE` and the `IntoPyObject::OUTPUT_TYPE`
          associated constants. [#&#8203;5893](https://redirect.github.com/PyO3/pyo3/pull/5893)\n-
          Remove all functionality deprecated in PyO3 0.27. [#&#8203;6068](https://redirect.github.com/PyO3/pyo3/pull/6068)\n-
          FFI definitions:\n  - Remove private FFI definitions `_PyStack_AsDict`,
          `_PyObject_CallNoArg`, `_PyObject_FastCall`, `_PyObject_FastCallTstate`.
          `_PyObject_VectorcallTstate`, `_PyObject_MakeTpCall`, `_Py_CheckFunctionResult`,
          `_PyObject_CallFunction_SizeT`, `_PyObject_CallMethod_SizeT`, and `_PySequence_IterSearch`.
          [#&#8203;5942](https://redirect.github.com/PyO3/pyo3/pull/5942)\n  - Remove
          FFI definitions `PY_ITERSEARCH_COUNT`, `PY_ITERSEARCH_INDEX`, and `PY_ITERSEARCH_CONTAINS`.
          [#&#8203;5942](https://redirect.github.com/PyO3/pyo3/pull/5942)\n  - Removed
          private FFI definitions `_PySet_NextEntry`, and `_PyLong_NumBits`. [#&#8203;5946](https://redirect.github.com/PyO3/pyo3/pull/5946)\n
          \ - Remove private FFI definitions `_PyFloat_CAST`, `_PyRun_SimpleFileObject`,
          `_PyRun_AnyFileObject`, `_PyRun_InteractiveLoopObject`, `_PyUnicode_CheckConsistency`,
          `_PyUnicode_COMPACT_DATA`, `_PyUnicode_NONCOMPACT_DATA`, `_PyUnicode_Ready`,
          and `_Py_HashBytes`. [#&#8203;6036](https://redirect.github.com/PyO3/pyo3/pull/6036)\n
          \ - Remove private FFI definition `_PyEval_EvalFrameDefault`. [#&#8203;6038](https://redirect.github.com/PyO3/pyo3/pull/6038)\n
          \ - Remove private FFI definition `_PyBytes_Resize`. [#&#8203;6042](https://redirect.github.com/PyO3/pyo3/pull/6042)\n
          \ - Remove private FFI definitions `_PyErr_BadInternalCall`, `_Py_GetAllocatedBlocks`,
          `_PyObject_GC_Malloc`, `_PyObject_GC_Calloc`, and `_PyLong_NumBits`. [#&#8203;6053](https://redirect.github.com/PyO3/pyo3/pull/6053)\n
          \ - Remove `Default` for FFI definitions `PyHeapTypeObject`, `PyObjectArenaAllocator`,
          `PyHash_FuncDef`, and `PyType_Spec`. [#&#8203;6093](https://redirect.github.com/PyO3/pyo3/pull/6093)\n\n#####
          Fixed\n\n- Fix `add_libpython_rpath_link_args` emitting rpath link args
          on wasm targets which don't support rpath. [#&#8203;5447](https://redirect.github.com/PyO3/pyo3/pull/5447)\n-
          Fix `From<string::FromUtf8Error>` and `From<ffi::IntoStringError>` for `PyErr`
          producing `TypeError` due to broken internals. [#&#8203;5668](https://redirect.github.com/PyO3/pyo3/pull/5668)\n-
          Fix `PyMappingProxy::is_type_of` and `PyWeakrefReference::is_type_of` not
          accepting subclasses. [#&#8203;5883](https://redirect.github.com/PyO3/pyo3/pull/5883)\n-
          Fix `getattr_opt` not treating `AttributeError` subclasses as missing attributes
          on Python < 3.13. [#&#8203;5985](https://redirect.github.com/PyO3/pyo3/pull/5985)\n-
          Fix compilation error for `#[new]` return types that contain named lifetimes.
          [#&#8203;5998](https://redirect.github.com/PyO3/pyo3/pull/5998)\n- Fix missing
          `'static` bound on `PyCapsule` destructors. [#&#8203;6049](https://redirect.github.com/PyO3/pyo3/pull/6049)\n-
          Fix case where `PyFrame::builtins` could return a non-dict object. [#&#8203;6052](https://redirect.github.com/PyO3/pyo3/pull/6052)\n-
          Fix type confusion when returning a `#[pyclass]` from a different pyclass'
          `#[new]` method. [#&#8203;6062](https://redirect.github.com/PyO3/pyo3/pull/6062)\n-
          Fix soundness issue caused by variance in `PyClassGuardMap` by splitting
          off the mutable variant. [#&#8203;6073](https://redirect.github.com/PyO3/pyo3/pull/6073)\n-
          Fix nondeterministic JSON metadata emitted by the `experimental-inspect`
          proc macros (to enable reproducible builds). [#&#8203;6076](https://redirect.github.com/PyO3/pyo3/pull/6076)\n-
          Fix UB in `PyEval_RestoreThread` when the interpreter is shutting down on
          Python 3.13 and older (hang the thread instead of allowing `pthread_exit`
          to jump across Rust frames). [#&#8203;6085](https://redirect.github.com/PyO3/pyo3/pull/6085)\n-
          Fix possible out of bounds read in `BoundListIterator` and `BoundTupleIterator`'s
          `nth` and `nth_back` implementations. [#&#8203;6086](https://redirect.github.com/PyO3/pyo3/pull/6086)\n-
          Fix `BoundListIterator` and `BoundTupleIterator` not being exhausted when
          `nth` or `nth_back` is called with N larger than the remaining count of
          items. [#&#8203;6086](https://redirect.github.com/PyO3/pyo3/pull/6086)\n-
          Fix missing `Sync` bound on closure type in `PyCFunction::new_closure`.
          [#&#8203;6096](https://redirect.github.com/PyO3/pyo3/pull/6096)\n- Fix soundness
          issue caused by exposing a mutable reference from `PyClassGuardMut::as_super`
          by moving into `PyClassGuardMutSuper`. [#&#8203;6104](https://redirect.github.com/PyO3/pyo3/pull/6104)\n-
          FFI definitions:\n  - Fix missing FFI definition for `PyTypeObject.tp_versions_used`
          on Python 3.13 and newer. [#&#8203;5917](https://redirect.github.com/PyO3/pyo3/pull/5917)\n
          \ - Mark FFI definitions no longer available on 3.11 and up: `PyUnicode_Encode`,
          `PyUnicode_EncodeASCII`, `PyUnicode_EncodeCharmap`, `PyUnicode_EncodeDecimal`,
          `PyUnicode_EncodeLatin1`, `PyUnicode_EncodeRawUnicodeEscape`, `PyUnicode_EncodeUTF7`,
          `PyUnicode_EncodeUTF8`, `PyUnicode_EncodeUTF16`, `PyUnicode_EncodeUTF32`,
          `PyUnicode_EncodeUnicodeEscape`, `PyUnicode_TransformDecimalToASCII`, and
          `PyUnicode_TranslateCharmap`. [#&#8203;6041](https://redirect.github.com/PyO3/pyo3/pull/6041)\n
          \ - Mark FFI definition `PyUnicode_ClearFreeList` no longer available on
          3.9 and up. [#&#8203;6041](https://redirect.github.com/PyO3/pyo3/pull/6041)\n
          \ - Fix FFI definition `PyErr_SetInterruptEx` missing `c_int` return type.
          [#&#8203;6043](https://redirect.github.com/PyO3/pyo3/pull/6043)\n  - Fix
          return type of FFI definition `PyBuffer_SizeFromFormat` on Python 3.8 (was
          changed from `c_int` to `Py_ssize_t` on Python 3.9). [#&#8203;6090](https://redirect.github.com/PyO3/pyo3/pull/6090)\n
          \ - Fix return type of FFI definition `PyUnicode_Tailmatch` on PyPy (is
          `c_int`, unlike CPython). [#&#8203;6090](https://redirect.github.com/PyO3/pyo3/pull/6090)\n\n</details>\n\n---\n\n###
          Configuration\n\n\U0001F4C5 **Schedule**: (UTC)\n\n- Branch creation\n  -
          At any time (no schedule defined)\n- Automerge\n  - At any time (no schedule
          defined)\n\n\U0001F6A6 **Automerge**: Disabled by config. Please merge this
          manually once you are satisfied.\n\n\u267B **Rebasing**: Whenever PR is
          behind base branch, or you tick the rebase/retry checkbox.\n\n\U0001F515
          **Ignore**: Close this PR and you won't be reminded about this update again.\n\n---\n\n
          - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this
          box\n\n---\n\nThis PR was generated by [Mend Renovate](https://mend.io/renovate/).
          View the [repository job log](https://developer.mend.io/github/vexxhost/magnum-cluster-api).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMTkuMCIsInVwZGF0ZWRJblZlciI6IjQzLjIxOS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->\n"
        change_url: https://github.com/vexxhost/magnum-cluster-api/pull/1067
        commit_id: b8f4a29949264713846be1392ce32550fe1e5379
        patchset: b8f4a29949264713846be1392ce32550fe1e5379
        project:
          canonical_hostname: github.com
          canonical_name: github.com/vexxhost/magnum-cluster-api
          name: vexxhost/magnum-cluster-api
          short_name: magnum-cluster-api
          src_dir: src/github.com/vexxhost/magnum-cluster-api
        src_dir: src/github.com/vexxhost/magnum-cluster-api
        topic: null
      buildset: 3568df326b35440da0814a955423ce99
      buildset_refs:
      - branch: main
        change: '1067'
        change_message: "fix(deps): update rust crate pyo3 to 0.29.0 [security]\n\nThis
          PR contains the following updates:\n\n| Package | Type | Update | Change
          |\n|---|---|---|---|\n| [pyo3](https://redirect.github.com/pyo3/pyo3) |
          dependencies | minor | `0.28.0` \u2192 `0.29.0` |\n\n---\n\n### PyO3 has
          an Out-of-bounds Read in `nth` / `nth_back` for `PyList` and `PyTuple` iterators\n[GHSA-36hh-v3qg-5jq4](https://redirect.github.com/advisories/GHSA-36hh-v3qg-5jq4)\n\n<details>\n<summary>More
          information</summary>\n\n#### Details\nPyO3 0.24.0 added optimized implementations
          of `Iterator::nth` and `DoubleEndedIterator::nth_back` for the `BoundListIterator`
          and `BoundTupleIterator` types. These implementations computed the target
          index using unchecked `usize` addition (`index + n`) before bounds-checking
          against the sequence length, then read the element via `get_item_unchecked`.\n\nIn
          `nth` methods, a sufficiently large `n` (combined with a non-zero internal
          index) could cause the addition to overflow and wrap around, producing a
          small \"target index\" that passed the bounds check and enabling reads at
          the front of the `list` or `tuple` of elements previously yielded by the
          iterator.\n\nIn `nth_back` methods, a sufficiently large `n` could cause
          underflow in a similar fashion, however would instead allow reads of arbitrary
          memory past the end of the `list` or `tuple` storage.\n\n#### Severity\n-
          CVSS Score: 8.7 / 10 (High)\n- Vector String: `CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N`\n\n####
          References\n- [https://github.com/PyO3/pyo3/pull/6086](https://redirect.github.com/PyO3/pyo3/pull/6086)\n-
          [https://rustsec.org/advisories/RUSTSEC-2026-0176.html](https://rustsec.org/advisories/RUSTSEC-2026-0176.html)\n-
          [https://github.com/advisories/GHSA-36hh-v3qg-5jq4](https://redirect.github.com/advisories/GHSA-36hh-v3qg-5jq4)\n\nThis
          data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-36hh-v3qg-5jq4)
          ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).\n</details>\n\n---\n\n###
          Release Notes\n\n<details>\n<summary>pyo3/pyo3 (pyo3)</summary>\n\n### [`v0.29.0`](https://redirect.github.com/pyo3/pyo3/blob/HEAD/CHANGELOG.md#0290---2026-06-11)\n\n[Compare
          Source](https://redirect.github.com/pyo3/pyo3/compare/v0.28.3...v0.29.0)\n\n#####
          Packaging\n\n- Support the new PEP 803 abi3t ABI with new `abi3t` and `abi3t-py315`
          features. [#&#8203;5807](https://redirect.github.com/PyO3/pyo3/pull/5807)\n-
          `pyo3-macros-backend` no longer depends on `pyo3-build-config`. [#&#8203;5809](https://redirect.github.com/PyO3/pyo3/pull/5809)\n-
          Drop support for Python 3.13t (3.14t and above continue to be supported;
          CPython declared free-threading supported starting with Python 3.14). [#&#8203;5865](https://redirect.github.com/PyO3/pyo3/pull/5865)\n-
          Drop support for Python 3.7. [#&#8203;5912](https://redirect.github.com/PyO3/pyo3/pull/5912)\n-
          Extend range of supported versions of `hashbrown` optional dependency to
          include version 0.17. [#&#8203;5973](https://redirect.github.com/PyO3/pyo3/pull/5973)\n-
          Support Python 3.15.0b1. [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n-
          `pyo3-ffi` is now `no_std`. [#&#8203;6022](https://redirect.github.com/PyO3/pyo3/pull/6022)\n\n#####
          Added\n\n- Add `PyErr::set_traceback` to set the traceback of an exception
          object. [#&#8203;5349](https://redirect.github.com/PyO3/pyo3/pull/5349)\n-
          Add `PyUnicodeDecodeError::new_err_from_utf8` to create a `PyErr` from a
          `str::Utf8Error`. [#&#8203;5668](https://redirect.github.com/PyO3/pyo3/pull/5668)\n-
          `experimental-inspect`: implement `INPUT_TYPE` and `OUTPUT_TYPE` on optional
          third-party crate conversions. [#&#8203;5770](https://redirect.github.com/PyO3/pyo3/pull/5770)\n-
          `experimental-inspect`: include doc comments in generated stubs. [#&#8203;5782](https://redirect.github.com/PyO3/pyo3/pull/5782)\n-
          Add `pyo3_build_config::PythonAbi`, `pyo3_build_config::PythonAbiKind`,
          `pyo3_build_config::PythonAbiBuilder`, `pyo3_build_config::InterpreterConfig::target_abi`,
          and `pyo3_build_config::InterpreterConfigBuilder::target_abi`. [#&#8203;5807](https://redirect.github.com/PyO3/pyo3/pull/5807)\n-
          Add `Borrowed::get` as an equivalent to `Bound::get` and `Py::get`. [#&#8203;5849](https://redirect.github.com/PyO3/pyo3/pull/5849)\n-
          Add `PyFrame::new`, `PyTraceBack::new`, and `PyFrameMethods::line_number`.
          [#&#8203;5857](https://redirect.github.com/PyO3/pyo3/pull/5857)\n- Add `PyUntypedBuffer::obj`
          to retrieve the Python object owning the buffer. [#&#8203;5870](https://redirect.github.com/PyO3/pyo3/pull/5870)\n-
          Add `PyCapsule::new_with_value` and `PyCapsule::new_with_value_and_destructor`.
          [#&#8203;5881](https://redirect.github.com/PyO3/pyo3/pull/5881)\n- Add `PyErr::set_context`
          and `PyErr::context`. [#&#8203;5887](https://redirect.github.com/PyO3/pyo3/pull/5887)\n-
          Add a small CLI to `pyo3-introspection` to generate stubs. [#&#8203;5904](https://redirect.github.com/PyO3/pyo3/pull/5904)\n-
          Add `Python::version_str`. [#&#8203;5921](https://redirect.github.com/PyO3/pyo3/pull/5921)\n-
          Add `TryFrom<&Bound<T>>` for `PyRef<T>`, `PyRefMut<T>`, `PyClassGuard<T>`
          and `PyClassGuardMut<T>`. [#&#8203;5922](https://redirect.github.com/PyO3/pyo3/pull/5922)\n-
          Add `From<&Bound<T>>` for `Bound<T>` and `Py<T>` [#&#8203;5922](https://redirect.github.com/PyO3/pyo3/pull/5922)\n-
          Add `PyDictMethods::set_default` and `PyDictMethods::set_default_ref` to
          allow atomically setting default values in a PyDict. [#&#8203;5955](https://redirect.github.com/PyO3/pyo3/pull/5955)\n-
          add `PyFrameMethods::outer|code|var|builtins|globals|locals`. [#&#8203;5967](https://redirect.github.com/PyO3/pyo3/pull/5967)\n-
          Add `From` conversions for `PyErr` from `std::time::TryFromFloatSecsError`,
          `std::time::SystemTimeError`, `std::path::StripPrefixError`, `std::env::JoinPathsError`,
          `std::char::ParseCharError`, and `std::char::CharTryFromError`. [#&#8203;6001](https://redirect.github.com/PyO3/pyo3/pull/6001)\n-
          Add `pyo3_build_config::InterpreterConfigBuilder`. [#&#8203;6034](https://redirect.github.com/PyO3/pyo3/pull/6034)\n-
          Add `PyCapsule::import_pointer` [#&#8203;6066](https://redirect.github.com/PyO3/pyo3/pull/6066)\n-
          Add `PyClassGuardMapMut`. [#&#8203;6073](https://redirect.github.com/PyO3/pyo3/pull/6073)\n-
          Expose `PyListMethods::get_item_unchecked`, `PyTupleMethods::get_item_unchecked`,
          and `PyTupleMethods::get_borrowed_item_unchecked` on abi3. [#&#8203;6075](https://redirect.github.com/PyO3/pyo3/pull/6075)\n-
          Add `PyClassGuardMapSuper`. [#&#8203;6104](https://redirect.github.com/PyO3/pyo3/pull/6104)\n-
          Add `PyClassGuard` and `PyClassGuardMut` to `pyo3::prelude`. [#&#8203;6112](https://redirect.github.com/PyO3/pyo3/pull/6112)\n-
          Add `Debug` impls for `PyClassGuard` and `PyClassGuardMut`. [#&#8203;6112](https://redirect.github.com/PyO3/pyo3/pull/6112)\n-
          Enable extending `PyDateTime`, `PyDate`, `PyTime`, `PyDelta` and `PyTzInfo`
          on abi3 with python 3.12+. [#&#8203;6115](https://redirect.github.com/PyO3/pyo3/pull/6115)\n-
          Expose `PyFunction` available on abi3. [#&#8203;6117](https://redirect.github.com/PyO3/pyo3/pull/6117)\n-
          FFI definitions:\n  - Added FFI definitions `PyUnstable_Object_IsUniquelyReferenced`,
          `PyUnstable_Object_IsUniquelyReferencedTemporary`, `PyUnstable_EnableTryIncref`,
          and `PyUnstable_TryIncref`. [#&#8203;5828](https://redirect.github.com/PyO3/pyo3/pull/5828)\n
          \ - Add FFI definitions `ffi::PyErr_GetHandledException` and `ffi::PyErr_SetHandledException`.
          [#&#8203;5887](https://redirect.github.com/PyO3/pyo3/pull/5887)\n  - Add
          FFI definition `Py_HASH_SIPHASH13`. [#&#8203;5891](https://redirect.github.com/PyO3/pyo3/pull/5891)\n
          \ - Add FFI definition `PyStructSequence_UnnamedField` constant on Python
          3.9 and up (or 3.11 with abi3 features). [#&#8203;5892](https://redirect.github.com/PyO3/pyo3/pull/5892)\n
          \ - Add FFI definitions `PyUnstable_InterpreterFrame_GetCode`, `PyUnstable_InterpreterFrame_GetLasti`,
          `PyUnstable_InterpreterFrame_GetLine`, and `PyUnstable_ExecutableKinds`.
          [#&#8203;5932](https://redirect.github.com/PyO3/pyo3/pull/5932)\n  - Add
          FFI definitions `PyMarshal_WriteLongToFile`, `PyMarshal_WriteObjectToFile`,
          `PyMarshal_ReadLongFromFile`, `PyMarshal_ReadShortFromFile`, `PyMarshal_ReadObjectFromFile`,
          and `PyMarshal_ReadLastObjectFromFile`. [#&#8203;5934](https://redirect.github.com/PyO3/pyo3/pull/5934)\n
          \ - Add FFI definitions `PyObject_GetAIter`, `PyAIter_Check`, `PyMapping_HasKeyWithError`,
          `PyMapping_HasKeyStringWithError`, `PyMapping_GetOptionalItem`, `PyMapping_GetOptionalItemString`,
          `PySequence_ITEM`, `PySequence_Fast_GET_SIZE`, `PySequence_Fast_GET_ITEM`,
          and `PySequence_Fast_ITEMS`. [#&#8203;5942](https://redirect.github.com/PyO3/pyo3/pull/5942)\n
          \ - Add FFI definition `compat::PyObject_HasAttrWithError`. [#&#8203;5944](https://redirect.github.com/PyO3/pyo3/pull/5944)\n
          \ - Add FFI definitions `PyDict_SetDefault`, `PyDict_SetDefaultRef`, `PyDict_ContainsString`,
          `PyDict_Pop`, `PyDict_PopString`, `PyDict_ClearWatcher`, `PyDict_Watch`,
          `PyDict_Unwatch`, and `PyFrozenDict_New`. [#&#8203;5947](https://redirect.github.com/PyO3/pyo3/pull/5947)\n
          \ - Add FFI definitions `PyDate_FromDate`, `PyDateTime_FromDateAndTime`,
          `PyDateTime_FromDateAndTimeAndFold`, `PyTime_FromTime`, `PyTime_FromTimeAndFold`,
          and `PyDelta_FromDSU`. [#&#8203;5949](https://redirect.github.com/PyO3/pyo3/pull/5949)\n
          \ - Add FFI definitions `PyDict_SetDefaultRef` and `compat::PyDict_SetDefaultRef`.
          [#&#8203;5955](https://redirect.github.com/PyO3/pyo3/pull/5955)\n    versions.\n
          \ - Add FFI definitions for non-limited API header `cpython/bytearrayobject.h`.
          [#&#8203;5966](https://redirect.github.com/PyO3/pyo3/pull/5966)\n  - Add
          FFI definitions for non-limited API version of `PyCellObject` and associated
          functions. [#&#8203;5978](https://redirect.github.com/PyO3/pyo3/pull/5978)\n
          \ - Add FFI definition `PyErr_WarnExplicitObject`. [#&#8203;5979](https://redirect.github.com/PyO3/pyo3/pull/5979)\n
          \ - Add FFI definition `PyTracebackObject`. [#&#8203;5980](https://redirect.github.com/PyO3/pyo3/pull/5980)\n
          \ - Add FFI definition `PyTuple_FromArray` on 3.15+. [#&#8203;5990](https://redirect.github.com/PyO3/pyo3/pull/5990)\n
          \ - Add FFI definitions for the PEP 820 PySlot C API. [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n
          \ - Add FFI definitions for the critical section API in the limited API
          on Python 3.15\n    and newer. [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n
          \ - Add FFI definitions for [PEP 757](https://peps.python.org/pep-0757/)
          `PyLong` import / export API on Python 3.14+. [#&#8203;6016](https://redirect.github.com/PyO3/pyo3/pull/6016)\n
          \ - Add FFI definitions `PyEval_SetProfileAllThreads` and `PyEval_SetTraceAllThreads`.
          [#&#8203;6038](https://redirect.github.com/PyO3/pyo3/pull/6038)\n  - Add
          FFI definition `Py_UNICODE_TODECIMAL`. [#&#8203;6041](https://redirect.github.com/PyO3/pyo3/pull/6041)\n\n#####
          Changed\n\n- Change exception enrichment on `#[pyfunction]` argument extraction
          error to use `PyErr::add_note` instead of replacing `TypeError` instances.
          [#&#8203;5349](https://redirect.github.com/PyO3/pyo3/pull/5349)\n- Deprecate
          super-class initialization via tuples. [#&#8203;5741](https://redirect.github.com/PyO3/pyo3/pull/5741)\n-
          Change module initialization uses the PyModExport and PyABIInfo APIs on
          Python 3.15+. [#&#8203;5753](https://redirect.github.com/PyO3/pyo3/pull/5753)\n-
          Deprecate `Py<T>::get_refcnt` and `PyAnyMethods::get_refcnt` in favor of
          `pyo3::ffi::Py_REFCNT(obj.as_ptr())`. [#&#8203;5797](https://redirect.github.com/PyO3/pyo3/pull/5797)\n-
          Change `PyEnvironmentError`, `PyIOError`, and `PyWindowsError` to be type
          aliases of `PyOSError` (as is the case in Python since 3.3). [#&#8203;5803](https://redirect.github.com/PyO3/pyo3/pull/5803)\n-
          Change `pyo3_build_config::InterpreterConfig::from_interpreter` to require
          an additional `stable_abi_version` argument. The old behavior is the same
          as passing `None`. [#&#8203;5807](https://redirect.github.com/PyO3/pyo3/pull/5807)\n-
          Change `PyList::new` to no longer have `ExactSizeIterator` bound. [#&#8203;5830](https://redirect.github.com/PyO3/pyo3/pull/5830)\n-
          `experimental-inspect`: emit `#[classattribute]` as plain Python class attributes
          and not functions annotated with `@classattribute` and `@property`. [#&#8203;5839](https://redirect.github.com/PyO3/pyo3/pull/5839)\n-
          `experimental-inspect`: use `object` as the input annotation type of magic
          methods that return `NonImplemented` if the input value is not of the correct
          type. [#&#8203;5841](https://redirect.github.com/PyO3/pyo3/pull/5841)\n-
          Deprecate `pyo3-build-config/resolve-config` feature. [#&#8203;5862](https://redirect.github.com/PyO3/pyo3/pull/5862)\n-
          Change `pyo3-ffi` to use raw-dylib for Windows linking. [#&#8203;5866](https://redirect.github.com/PyO3/pyo3/pull/5866)\n-
          Deprecate `generate-import-lib` feature. [#&#8203;5866](https://redirect.github.com/PyO3/pyo3/pull/5866)\n-
          Allow zero-sized types in `PyCapsule::new`. [#&#8203;5889](https://redirect.github.com/PyO3/pyo3/pull/5889)\n-
          `PyDate::from_timestamp` argument is now a `f64` (the Python API expects
          a float and not an integer) [#&#8203;5896](https://redirect.github.com/PyO3/pyo3/pull/5896)\n-
          `experimental-inspect`: Change `PathBuf::extract` input type hint from `str
          | os.PathLike` to `str | os.PathLike[str]` [#&#8203;5897](https://redirect.github.com/PyO3/pyo3/pull/5897)\n-
          Remove lifetime from `PythonVersionInfo`. [#&#8203;5921](https://redirect.github.com/PyO3/pyo3/pull/5921)\n-
          Remove redundant type checks for methods where CPython guarantees the type
          of `self`. [#&#8203;5930](https://redirect.github.com/PyO3/pyo3/pull/5930)\n-
          Elide temporary reference count cycles inside `PyAnyMethods::call`, `PyAnyMethods::call1`
          and `PyAnyMethods::call_method1` for arguments passed as Rust tuples containing
          borrowed references to Python objects. [#&#8203;5941](https://redirect.github.com/PyO3/pyo3/pull/5941)\n-
          Allow type annotations to be used in `#[pyo3(signature = ...)]` when `experimental-inspect`
          feature is not enabled (they will be ignored). [#&#8203;5999](https://redirect.github.com/PyO3/pyo3/pull/5999)\n-
          `pyo3-ffi` will now rebuild when the Python virtual environment changes
          in-place. [#&#8203;6008](https://redirect.github.com/PyO3/pyo3/pull/6008)\n-
          Change module initialization on 3.15+ to use PEP 820 PySlot API internally.
          [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n- Deprecate
          direct access to all `pyo3_build_config::InterpreterConfig` fields; getter
          methods have been added as replacements. [#&#8203;6034](https://redirect.github.com/PyO3/pyo3/pull/6034)\n-
          FFI definitions `_PyCode_GetExtra`, `_PyCode_SetExtra`, and `_PyEval_RequestCodeExtraIndex`
          have been updated to `PyUnstable_Code_GetExtra`, `PyUnstable_Code_SetExtra`,
          and `PyUnstable_Eval_RequestCodeExtraIndex`. [#&#8203;6038](https://redirect.github.com/PyO3/pyo3/pull/6038)\n-
          Change `PyCapsule::import` to return an error if the pointer is not properly
          aligned. [#&#8203;6066](https://redirect.github.com/PyO3/pyo3/pull/6066)\n-
          Change `PyClassGuardMap` to be only for `PyClassGuard::map` and return `PyClassGuardMapMut`
          from `PyClassGuardMut::map`. [#&#8203;6073](https://redirect.github.com/PyO3/pyo3/pull/6073)\n-
          Change `with_critical_section_mutex2` closure to take `Option<EnteredCriticalSection>`
          instead of `EnteredCriticalSection` as the second argument. [#&#8203;6098](https://redirect.github.com/PyO3/pyo3/pull/6098)\n-
          `PyClassGuardMut::as_super` now returns `PyClassGuardMutSuper`. [#&#8203;6104](https://redirect.github.com/PyO3/pyo3/pull/6104)\n-
          `experimental-inspect`: Generate relative imports instead of absolute ones
          (useful if the stubs are not describing a root package) [#&#8203;6097](https://redirect.github.com/PyO3/pyo3/pull/6097)\n\n#####
          Removed\n\n- Removed the broken (and unfixable) implementations of `From<str::Utf8Error>`,
          `From<string::FromUtf16Error>`, and `From<char::DecodeUtf16Error>` for `PyErr`.
          [#&#8203;5668](https://redirect.github.com/PyO3/pyo3/pull/5668)\n- Remove
          `Py_TRACE_REFS` support (unsupported from Python 3.13). [#&#8203;5824](https://redirect.github.com/PyO3/pyo3/pull/5824)\n-
          `experimental-inspect`: Remove the `TypeInfo` enum and the `FromPyObject::type_input`
          and `IntoPyObject::type_output` functions. They are replaced by the `PyStaticExpr`
          enum and the `FromPyObject::INPUT_TYPE` and the `IntoPyObject::OUTPUT_TYPE`
          associated constants. [#&#8203;5893](https://redirect.github.com/PyO3/pyo3/pull/5893)\n-
          Remove all functionality deprecated in PyO3 0.27. [#&#8203;6068](https://redirect.github.com/PyO3/pyo3/pull/6068)\n-
          FFI definitions:\n  - Remove private FFI definitions `_PyStack_AsDict`,
          `_PyObject_CallNoArg`, `_PyObject_FastCall`, `_PyObject_FastCallTstate`.
          `_PyObject_VectorcallTstate`, `_PyObject_MakeTpCall`, `_Py_CheckFunctionResult`,
          `_PyObject_CallFunction_SizeT`, `_PyObject_CallMethod_SizeT`, and `_PySequence_IterSearch`.
          [#&#8203;5942](https://redirect.github.com/PyO3/pyo3/pull/5942)\n  - Remove
          FFI definitions `PY_ITERSEARCH_COUNT`, `PY_ITERSEARCH_INDEX`, and `PY_ITERSEARCH_CONTAINS`.
          [#&#8203;5942](https://redirect.github.com/PyO3/pyo3/pull/5942)\n  - Removed
          private FFI definitions `_PySet_NextEntry`, and `_PyLong_NumBits`. [#&#8203;5946](https://redirect.github.com/PyO3/pyo3/pull/5946)\n
          \ - Remove private FFI definitions `_PyFloat_CAST`, `_PyRun_SimpleFileObject`,
          `_PyRun_AnyFileObject`, `_PyRun_InteractiveLoopObject`, `_PyUnicode_CheckConsistency`,
          `_PyUnicode_COMPACT_DATA`, `_PyUnicode_NONCOMPACT_DATA`, `_PyUnicode_Ready`,
          and `_Py_HashBytes`. [#&#8203;6036](https://redirect.github.com/PyO3/pyo3/pull/6036)\n
          \ - Remove private FFI definition `_PyEval_EvalFrameDefault`. [#&#8203;6038](https://redirect.github.com/PyO3/pyo3/pull/6038)\n
          \ - Remove private FFI definition `_PyBytes_Resize`. [#&#8203;6042](https://redirect.github.com/PyO3/pyo3/pull/6042)\n
          \ - Remove private FFI definitions `_PyErr_BadInternalCall`, `_Py_GetAllocatedBlocks`,
          `_PyObject_GC_Malloc`, `_PyObject_GC_Calloc`, and `_PyLong_NumBits`. [#&#8203;6053](https://redirect.github.com/PyO3/pyo3/pull/6053)\n
          \ - Remove `Default` for FFI definitions `PyHeapTypeObject`, `PyObjectArenaAllocator`,
          `PyHash_FuncDef`, and `PyType_Spec`. [#&#8203;6093](https://redirect.github.com/PyO3/pyo3/pull/6093)\n\n#####
          Fixed\n\n- Fix `add_libpython_rpath_link_args` emitting rpath link args
          on wasm targets which don't support rpath. [#&#8203;5447](https://redirect.github.com/PyO3/pyo3/pull/5447)\n-
          Fix `From<string::FromUtf8Error>` and `From<ffi::IntoStringError>` for `PyErr`
          producing `TypeError` due to broken internals. [#&#8203;5668](https://redirect.github.com/PyO3/pyo3/pull/5668)\n-
          Fix `PyMappingProxy::is_type_of` and `PyWeakrefReference::is_type_of` not
          accepting subclasses. [#&#8203;5883](https://redirect.github.com/PyO3/pyo3/pull/5883)\n-
          Fix `getattr_opt` not treating `AttributeError` subclasses as missing attributes
          on Python < 3.13. [#&#8203;5985](https://redirect.github.com/PyO3/pyo3/pull/5985)\n-
          Fix compilation error for `#[new]` return types that contain named lifetimes.
          [#&#8203;5998](https://redirect.github.com/PyO3/pyo3/pull/5998)\n- Fix missing
          `'static` bound on `PyCapsule` destructors. [#&#8203;6049](https://redirect.github.com/PyO3/pyo3/pull/6049)\n-
          Fix case where `PyFrame::builtins` could return a non-dict object. [#&#8203;6052](https://redirect.github.com/PyO3/pyo3/pull/6052)\n-
          Fix type confusion when returning a `#[pyclass]` from a different pyclass'
          `#[new]` method. [#&#8203;6062](https://redirect.github.com/PyO3/pyo3/pull/6062)\n-
          Fix soundness issue caused by variance in `PyClassGuardMap` by splitting
          off the mutable variant. [#&#8203;6073](https://redirect.github.com/PyO3/pyo3/pull/6073)\n-
          Fix nondeterministic JSON metadata emitted by the `experimental-inspect`
          proc macros (to enable reproducible builds). [#&#8203;6076](https://redirect.github.com/PyO3/pyo3/pull/6076)\n-
          Fix UB in `PyEval_RestoreThread` when the interpreter is shutting down on
          Python 3.13 and older (hang the thread instead of allowing `pthread_exit`
          to jump across Rust frames). [#&#8203;6085](https://redirect.github.com/PyO3/pyo3/pull/6085)\n-
          Fix possible out of bounds read in `BoundListIterator` and `BoundTupleIterator`'s
          `nth` and `nth_back` implementations. [#&#8203;6086](https://redirect.github.com/PyO3/pyo3/pull/6086)\n-
          Fix `BoundListIterator` and `BoundTupleIterator` not being exhausted when
          `nth` or `nth_back` is called with N larger than the remaining count of
          items. [#&#8203;6086](https://redirect.github.com/PyO3/pyo3/pull/6086)\n-
          Fix missing `Sync` bound on closure type in `PyCFunction::new_closure`.
          [#&#8203;6096](https://redirect.github.com/PyO3/pyo3/pull/6096)\n- Fix soundness
          issue caused by exposing a mutable reference from `PyClassGuardMut::as_super`
          by moving into `PyClassGuardMutSuper`. [#&#8203;6104](https://redirect.github.com/PyO3/pyo3/pull/6104)\n-
          FFI definitions:\n  - Fix missing FFI definition for `PyTypeObject.tp_versions_used`
          on Python 3.13 and newer. [#&#8203;5917](https://redirect.github.com/PyO3/pyo3/pull/5917)\n
          \ - Mark FFI definitions no longer available on 3.11 and up: `PyUnicode_Encode`,
          `PyUnicode_EncodeASCII`, `PyUnicode_EncodeCharmap`, `PyUnicode_EncodeDecimal`,
          `PyUnicode_EncodeLatin1`, `PyUnicode_EncodeRawUnicodeEscape`, `PyUnicode_EncodeUTF7`,
          `PyUnicode_EncodeUTF8`, `PyUnicode_EncodeUTF16`, `PyUnicode_EncodeUTF32`,
          `PyUnicode_EncodeUnicodeEscape`, `PyUnicode_TransformDecimalToASCII`, and
          `PyUnicode_TranslateCharmap`. [#&#8203;6041](https://redirect.github.com/PyO3/pyo3/pull/6041)\n
          \ - Mark FFI definition `PyUnicode_ClearFreeList` no longer available on
          3.9 and up. [#&#8203;6041](https://redirect.github.com/PyO3/pyo3/pull/6041)\n
          \ - Fix FFI definition `PyErr_SetInterruptEx` missing `c_int` return type.
          [#&#8203;6043](https://redirect.github.com/PyO3/pyo3/pull/6043)\n  - Fix
          return type of FFI definition `PyBuffer_SizeFromFormat` on Python 3.8 (was
          changed from `c_int` to `Py_ssize_t` on Python 3.9). [#&#8203;6090](https://redirect.github.com/PyO3/pyo3/pull/6090)\n
          \ - Fix return type of FFI definition `PyUnicode_Tailmatch` on PyPy (is
          `c_int`, unlike CPython). [#&#8203;6090](https://redirect.github.com/PyO3/pyo3/pull/6090)\n\n</details>\n\n---\n\n###
          Configuration\n\n\U0001F4C5 **Schedule**: (UTC)\n\n- Branch creation\n  -
          At any time (no schedule defined)\n- Automerge\n  - At any time (no schedule
          defined)\n\n\U0001F6A6 **Automerge**: Disabled by config. Please merge this
          manually once you are satisfied.\n\n\u267B **Rebasing**: Whenever PR is
          behind base branch, or you tick the rebase/retry checkbox.\n\n\U0001F515
          **Ignore**: Close this PR and you won't be reminded about this update again.\n\n---\n\n
          - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this
          box\n\n---\n\nThis PR was generated by [Mend Renovate](https://mend.io/renovate/).
          View the [repository job log](https://developer.mend.io/github/vexxhost/magnum-cluster-api).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMTkuMCIsInVwZGF0ZWRJblZlciI6IjQzLjIxOS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->\n"
        change_url: https://github.com/vexxhost/magnum-cluster-api/pull/1067
        commit_id: b8f4a29949264713846be1392ce32550fe1e5379
        patchset: b8f4a29949264713846be1392ce32550fe1e5379
        project:
          canonical_hostname: github.com
          canonical_name: github.com/vexxhost/magnum-cluster-api
          name: vexxhost/magnum-cluster-api
          short_name: magnum-cluster-api
          src_dir: src/github.com/vexxhost/magnum-cluster-api
        src_dir: src/github.com/vexxhost/magnum-cluster-api
        topic: null
      change: '1067'
      change_message: "fix(deps): update rust crate pyo3 to 0.29.0 [security]\n\nThis
        PR contains the following updates:\n\n| Package | Type | Update | Change |\n|---|---|---|---|\n|
        [pyo3](https://redirect.github.com/pyo3/pyo3) | dependencies | minor | `0.28.0`
        \u2192 `0.29.0` |\n\n---\n\n### PyO3 has an Out-of-bounds Read in `nth` /
        `nth_back` for `PyList` and `PyTuple` iterators\n[GHSA-36hh-v3qg-5jq4](https://redirect.github.com/advisories/GHSA-36hh-v3qg-5jq4)\n\n<details>\n<summary>More
        information</summary>\n\n#### Details\nPyO3 0.24.0 added optimized implementations
        of `Iterator::nth` and `DoubleEndedIterator::nth_back` for the `BoundListIterator`
        and `BoundTupleIterator` types. These implementations computed the target
        index using unchecked `usize` addition (`index + n`) before bounds-checking
        against the sequence length, then read the element via `get_item_unchecked`.\n\nIn
        `nth` methods, a sufficiently large `n` (combined with a non-zero internal
        index) could cause the addition to overflow and wrap around, producing a small
        \"target index\" that passed the bounds check and enabling reads at the front
        of the `list` or `tuple` of elements previously yielded by the iterator.\n\nIn
        `nth_back` methods, a sufficiently large `n` could cause underflow in a similar
        fashion, however would instead allow reads of arbitrary memory past the end
        of the `list` or `tuple` storage.\n\n#### Severity\n- CVSS Score: 8.7 / 10
        (High)\n- Vector String: `CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N`\n\n####
        References\n- [https://github.com/PyO3/pyo3/pull/6086](https://redirect.github.com/PyO3/pyo3/pull/6086)\n-
        [https://rustsec.org/advisories/RUSTSEC-2026-0176.html](https://rustsec.org/advisories/RUSTSEC-2026-0176.html)\n-
        [https://github.com/advisories/GHSA-36hh-v3qg-5jq4](https://redirect.github.com/advisories/GHSA-36hh-v3qg-5jq4)\n\nThis
        data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-36hh-v3qg-5jq4)
        ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).\n</details>\n\n---\n\n###
        Release Notes\n\n<details>\n<summary>pyo3/pyo3 (pyo3)</summary>\n\n### [`v0.29.0`](https://redirect.github.com/pyo3/pyo3/blob/HEAD/CHANGELOG.md#0290---2026-06-11)\n\n[Compare
        Source](https://redirect.github.com/pyo3/pyo3/compare/v0.28.3...v0.29.0)\n\n#####
        Packaging\n\n- Support the new PEP 803 abi3t ABI with new `abi3t` and `abi3t-py315`
        features. [#&#8203;5807](https://redirect.github.com/PyO3/pyo3/pull/5807)\n-
        `pyo3-macros-backend` no longer depends on `pyo3-build-config`. [#&#8203;5809](https://redirect.github.com/PyO3/pyo3/pull/5809)\n-
        Drop support for Python 3.13t (3.14t and above continue to be supported; CPython
        declared free-threading supported starting with Python 3.14). [#&#8203;5865](https://redirect.github.com/PyO3/pyo3/pull/5865)\n-
        Drop support for Python 3.7. [#&#8203;5912](https://redirect.github.com/PyO3/pyo3/pull/5912)\n-
        Extend range of supported versions of `hashbrown` optional dependency to include
        version 0.17. [#&#8203;5973](https://redirect.github.com/PyO3/pyo3/pull/5973)\n-
        Support Python 3.15.0b1. [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n-
        `pyo3-ffi` is now `no_std`. [#&#8203;6022](https://redirect.github.com/PyO3/pyo3/pull/6022)\n\n#####
        Added\n\n- Add `PyErr::set_traceback` to set the traceback of an exception
        object. [#&#8203;5349](https://redirect.github.com/PyO3/pyo3/pull/5349)\n-
        Add `PyUnicodeDecodeError::new_err_from_utf8` to create a `PyErr` from a `str::Utf8Error`.
        [#&#8203;5668](https://redirect.github.com/PyO3/pyo3/pull/5668)\n- `experimental-inspect`:
        implement `INPUT_TYPE` and `OUTPUT_TYPE` on optional third-party crate conversions.
        [#&#8203;5770](https://redirect.github.com/PyO3/pyo3/pull/5770)\n- `experimental-inspect`:
        include doc comments in generated stubs. [#&#8203;5782](https://redirect.github.com/PyO3/pyo3/pull/5782)\n-
        Add `pyo3_build_config::PythonAbi`, `pyo3_build_config::PythonAbiKind`, `pyo3_build_config::PythonAbiBuilder`,
        `pyo3_build_config::InterpreterConfig::target_abi`, and `pyo3_build_config::InterpreterConfigBuilder::target_abi`.
        [#&#8203;5807](https://redirect.github.com/PyO3/pyo3/pull/5807)\n- Add `Borrowed::get`
        as an equivalent to `Bound::get` and `Py::get`. [#&#8203;5849](https://redirect.github.com/PyO3/pyo3/pull/5849)\n-
        Add `PyFrame::new`, `PyTraceBack::new`, and `PyFrameMethods::line_number`.
        [#&#8203;5857](https://redirect.github.com/PyO3/pyo3/pull/5857)\n- Add `PyUntypedBuffer::obj`
        to retrieve the Python object owning the buffer. [#&#8203;5870](https://redirect.github.com/PyO3/pyo3/pull/5870)\n-
        Add `PyCapsule::new_with_value` and `PyCapsule::new_with_value_and_destructor`.
        [#&#8203;5881](https://redirect.github.com/PyO3/pyo3/pull/5881)\n- Add `PyErr::set_context`
        and `PyErr::context`. [#&#8203;5887](https://redirect.github.com/PyO3/pyo3/pull/5887)\n-
        Add a small CLI to `pyo3-introspection` to generate stubs. [#&#8203;5904](https://redirect.github.com/PyO3/pyo3/pull/5904)\n-
        Add `Python::version_str`. [#&#8203;5921](https://redirect.github.com/PyO3/pyo3/pull/5921)\n-
        Add `TryFrom<&Bound<T>>` for `PyRef<T>`, `PyRefMut<T>`, `PyClassGuard<T>`
        and `PyClassGuardMut<T>`. [#&#8203;5922](https://redirect.github.com/PyO3/pyo3/pull/5922)\n-
        Add `From<&Bound<T>>` for `Bound<T>` and `Py<T>` [#&#8203;5922](https://redirect.github.com/PyO3/pyo3/pull/5922)\n-
        Add `PyDictMethods::set_default` and `PyDictMethods::set_default_ref` to allow
        atomically setting default values in a PyDict. [#&#8203;5955](https://redirect.github.com/PyO3/pyo3/pull/5955)\n-
        add `PyFrameMethods::outer|code|var|builtins|globals|locals`. [#&#8203;5967](https://redirect.github.com/PyO3/pyo3/pull/5967)\n-
        Add `From` conversions for `PyErr` from `std::time::TryFromFloatSecsError`,
        `std::time::SystemTimeError`, `std::path::StripPrefixError`, `std::env::JoinPathsError`,
        `std::char::ParseCharError`, and `std::char::CharTryFromError`. [#&#8203;6001](https://redirect.github.com/PyO3/pyo3/pull/6001)\n-
        Add `pyo3_build_config::InterpreterConfigBuilder`. [#&#8203;6034](https://redirect.github.com/PyO3/pyo3/pull/6034)\n-
        Add `PyCapsule::import_pointer` [#&#8203;6066](https://redirect.github.com/PyO3/pyo3/pull/6066)\n-
        Add `PyClassGuardMapMut`. [#&#8203;6073](https://redirect.github.com/PyO3/pyo3/pull/6073)\n-
        Expose `PyListMethods::get_item_unchecked`, `PyTupleMethods::get_item_unchecked`,
        and `PyTupleMethods::get_borrowed_item_unchecked` on abi3. [#&#8203;6075](https://redirect.github.com/PyO3/pyo3/pull/6075)\n-
        Add `PyClassGuardMapSuper`. [#&#8203;6104](https://redirect.github.com/PyO3/pyo3/pull/6104)\n-
        Add `PyClassGuard` and `PyClassGuardMut` to `pyo3::prelude`. [#&#8203;6112](https://redirect.github.com/PyO3/pyo3/pull/6112)\n-
        Add `Debug` impls for `PyClassGuard` and `PyClassGuardMut`. [#&#8203;6112](https://redirect.github.com/PyO3/pyo3/pull/6112)\n-
        Enable extending `PyDateTime`, `PyDate`, `PyTime`, `PyDelta` and `PyTzInfo`
        on abi3 with python 3.12+. [#&#8203;6115](https://redirect.github.com/PyO3/pyo3/pull/6115)\n-
        Expose `PyFunction` available on abi3. [#&#8203;6117](https://redirect.github.com/PyO3/pyo3/pull/6117)\n-
        FFI definitions:\n  - Added FFI definitions `PyUnstable_Object_IsUniquelyReferenced`,
        `PyUnstable_Object_IsUniquelyReferencedTemporary`, `PyUnstable_EnableTryIncref`,
        and `PyUnstable_TryIncref`. [#&#8203;5828](https://redirect.github.com/PyO3/pyo3/pull/5828)\n
        \ - Add FFI definitions `ffi::PyErr_GetHandledException` and `ffi::PyErr_SetHandledException`.
        [#&#8203;5887](https://redirect.github.com/PyO3/pyo3/pull/5887)\n  - Add FFI
        definition `Py_HASH_SIPHASH13`. [#&#8203;5891](https://redirect.github.com/PyO3/pyo3/pull/5891)\n
        \ - Add FFI definition `PyStructSequence_UnnamedField` constant on Python
        3.9 and up (or 3.11 with abi3 features). [#&#8203;5892](https://redirect.github.com/PyO3/pyo3/pull/5892)\n
        \ - Add FFI definitions `PyUnstable_InterpreterFrame_GetCode`, `PyUnstable_InterpreterFrame_GetLasti`,
        `PyUnstable_InterpreterFrame_GetLine`, and `PyUnstable_ExecutableKinds`. [#&#8203;5932](https://redirect.github.com/PyO3/pyo3/pull/5932)\n
        \ - Add FFI definitions `PyMarshal_WriteLongToFile`, `PyMarshal_WriteObjectToFile`,
        `PyMarshal_ReadLongFromFile`, `PyMarshal_ReadShortFromFile`, `PyMarshal_ReadObjectFromFile`,
        and `PyMarshal_ReadLastObjectFromFile`. [#&#8203;5934](https://redirect.github.com/PyO3/pyo3/pull/5934)\n
        \ - Add FFI definitions `PyObject_GetAIter`, `PyAIter_Check`, `PyMapping_HasKeyWithError`,
        `PyMapping_HasKeyStringWithError`, `PyMapping_GetOptionalItem`, `PyMapping_GetOptionalItemString`,
        `PySequence_ITEM`, `PySequence_Fast_GET_SIZE`, `PySequence_Fast_GET_ITEM`,
        and `PySequence_Fast_ITEMS`. [#&#8203;5942](https://redirect.github.com/PyO3/pyo3/pull/5942)\n
        \ - Add FFI definition `compat::PyObject_HasAttrWithError`. [#&#8203;5944](https://redirect.github.com/PyO3/pyo3/pull/5944)\n
        \ - Add FFI definitions `PyDict_SetDefault`, `PyDict_SetDefaultRef`, `PyDict_ContainsString`,
        `PyDict_Pop`, `PyDict_PopString`, `PyDict_ClearWatcher`, `PyDict_Watch`, `PyDict_Unwatch`,
        and `PyFrozenDict_New`. [#&#8203;5947](https://redirect.github.com/PyO3/pyo3/pull/5947)\n
        \ - Add FFI definitions `PyDate_FromDate`, `PyDateTime_FromDateAndTime`, `PyDateTime_FromDateAndTimeAndFold`,
        `PyTime_FromTime`, `PyTime_FromTimeAndFold`, and `PyDelta_FromDSU`. [#&#8203;5949](https://redirect.github.com/PyO3/pyo3/pull/5949)\n
        \ - Add FFI definitions `PyDict_SetDefaultRef` and `compat::PyDict_SetDefaultRef`.
        [#&#8203;5955](https://redirect.github.com/PyO3/pyo3/pull/5955)\n    versions.\n
        \ - Add FFI definitions for non-limited API header `cpython/bytearrayobject.h`.
        [#&#8203;5966](https://redirect.github.com/PyO3/pyo3/pull/5966)\n  - Add FFI
        definitions for non-limited API version of `PyCellObject` and associated functions.
        [#&#8203;5978](https://redirect.github.com/PyO3/pyo3/pull/5978)\n  - Add FFI
        definition `PyErr_WarnExplicitObject`. [#&#8203;5979](https://redirect.github.com/PyO3/pyo3/pull/5979)\n
        \ - Add FFI definition `PyTracebackObject`. [#&#8203;5980](https://redirect.github.com/PyO3/pyo3/pull/5980)\n
        \ - Add FFI definition `PyTuple_FromArray` on 3.15+. [#&#8203;5990](https://redirect.github.com/PyO3/pyo3/pull/5990)\n
        \ - Add FFI definitions for the PEP 820 PySlot C API. [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n
        \ - Add FFI definitions for the critical section API in the limited API on
        Python 3.15\n    and newer. [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n
        \ - Add FFI definitions for [PEP 757](https://peps.python.org/pep-0757/) `PyLong`
        import / export API on Python 3.14+. [#&#8203;6016](https://redirect.github.com/PyO3/pyo3/pull/6016)\n
        \ - Add FFI definitions `PyEval_SetProfileAllThreads` and `PyEval_SetTraceAllThreads`.
        [#&#8203;6038](https://redirect.github.com/PyO3/pyo3/pull/6038)\n  - Add FFI
        definition `Py_UNICODE_TODECIMAL`. [#&#8203;6041](https://redirect.github.com/PyO3/pyo3/pull/6041)\n\n#####
        Changed\n\n- Change exception enrichment on `#[pyfunction]` argument extraction
        error to use `PyErr::add_note` instead of replacing `TypeError` instances.
        [#&#8203;5349](https://redirect.github.com/PyO3/pyo3/pull/5349)\n- Deprecate
        super-class initialization via tuples. [#&#8203;5741](https://redirect.github.com/PyO3/pyo3/pull/5741)\n-
        Change module initialization uses the PyModExport and PyABIInfo APIs on Python
        3.15+. [#&#8203;5753](https://redirect.github.com/PyO3/pyo3/pull/5753)\n-
        Deprecate `Py<T>::get_refcnt` and `PyAnyMethods::get_refcnt` in favor of `pyo3::ffi::Py_REFCNT(obj.as_ptr())`.
        [#&#8203;5797](https://redirect.github.com/PyO3/pyo3/pull/5797)\n- Change
        `PyEnvironmentError`, `PyIOError`, and `PyWindowsError` to be type aliases
        of `PyOSError` (as is the case in Python since 3.3). [#&#8203;5803](https://redirect.github.com/PyO3/pyo3/pull/5803)\n-
        Change `pyo3_build_config::InterpreterConfig::from_interpreter` to require
        an additional `stable_abi_version` argument. The old behavior is the same
        as passing `None`. [#&#8203;5807](https://redirect.github.com/PyO3/pyo3/pull/5807)\n-
        Change `PyList::new` to no longer have `ExactSizeIterator` bound. [#&#8203;5830](https://redirect.github.com/PyO3/pyo3/pull/5830)\n-
        `experimental-inspect`: emit `#[classattribute]` as plain Python class attributes
        and not functions annotated with `@classattribute` and `@property`. [#&#8203;5839](https://redirect.github.com/PyO3/pyo3/pull/5839)\n-
        `experimental-inspect`: use `object` as the input annotation type of magic
        methods that return `NonImplemented` if the input value is not of the correct
        type. [#&#8203;5841](https://redirect.github.com/PyO3/pyo3/pull/5841)\n- Deprecate
        `pyo3-build-config/resolve-config` feature. [#&#8203;5862](https://redirect.github.com/PyO3/pyo3/pull/5862)\n-
        Change `pyo3-ffi` to use raw-dylib for Windows linking. [#&#8203;5866](https://redirect.github.com/PyO3/pyo3/pull/5866)\n-
        Deprecate `generate-import-lib` feature. [#&#8203;5866](https://redirect.github.com/PyO3/pyo3/pull/5866)\n-
        Allow zero-sized types in `PyCapsule::new`. [#&#8203;5889](https://redirect.github.com/PyO3/pyo3/pull/5889)\n-
        `PyDate::from_timestamp` argument is now a `f64` (the Python API expects a
        float and not an integer) [#&#8203;5896](https://redirect.github.com/PyO3/pyo3/pull/5896)\n-
        `experimental-inspect`: Change `PathBuf::extract` input type hint from `str
        | os.PathLike` to `str | os.PathLike[str]` [#&#8203;5897](https://redirect.github.com/PyO3/pyo3/pull/5897)\n-
        Remove lifetime from `PythonVersionInfo`. [#&#8203;5921](https://redirect.github.com/PyO3/pyo3/pull/5921)\n-
        Remove redundant type checks for methods where CPython guarantees the type
        of `self`. [#&#8203;5930](https://redirect.github.com/PyO3/pyo3/pull/5930)\n-
        Elide temporary reference count cycles inside `PyAnyMethods::call`, `PyAnyMethods::call1`
        and `PyAnyMethods::call_method1` for arguments passed as Rust tuples containing
        borrowed references to Python objects. [#&#8203;5941](https://redirect.github.com/PyO3/pyo3/pull/5941)\n-
        Allow type annotations to be used in `#[pyo3(signature = ...)]` when `experimental-inspect`
        feature is not enabled (they will be ignored). [#&#8203;5999](https://redirect.github.com/PyO3/pyo3/pull/5999)\n-
        `pyo3-ffi` will now rebuild when the Python virtual environment changes in-place.
        [#&#8203;6008](https://redirect.github.com/PyO3/pyo3/pull/6008)\n- Change
        module initialization on 3.15+ to use PEP 820 PySlot API internally. [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n-
        Deprecate direct access to all `pyo3_build_config::InterpreterConfig` fields;
        getter methods have been added as replacements. [#&#8203;6034](https://redirect.github.com/PyO3/pyo3/pull/6034)\n-
        FFI definitions `_PyCode_GetExtra`, `_PyCode_SetExtra`, and `_PyEval_RequestCodeExtraIndex`
        have been updated to `PyUnstable_Code_GetExtra`, `PyUnstable_Code_SetExtra`,
        and `PyUnstable_Eval_RequestCodeExtraIndex`. [#&#8203;6038](https://redirect.github.com/PyO3/pyo3/pull/6038)\n-
        Change `PyCapsule::import` to return an error if the pointer is not properly
        aligned. [#&#8203;6066](https://redirect.github.com/PyO3/pyo3/pull/6066)\n-
        Change `PyClassGuardMap` to be only for `PyClassGuard::map` and return `PyClassGuardMapMut`
        from `PyClassGuardMut::map`. [#&#8203;6073](https://redirect.github.com/PyO3/pyo3/pull/6073)\n-
        Change `with_critical_section_mutex2` closure to take `Option<EnteredCriticalSection>`
        instead of `EnteredCriticalSection` as the second argument. [#&#8203;6098](https://redirect.github.com/PyO3/pyo3/pull/6098)\n-
        `PyClassGuardMut::as_super` now returns `PyClassGuardMutSuper`. [#&#8203;6104](https://redirect.github.com/PyO3/pyo3/pull/6104)\n-
        `experimental-inspect`: Generate relative imports instead of absolute ones
        (useful if the stubs are not describing a root package) [#&#8203;6097](https://redirect.github.com/PyO3/pyo3/pull/6097)\n\n#####
        Removed\n\n- Removed the broken (and unfixable) implementations of `From<str::Utf8Error>`,
        `From<string::FromUtf16Error>`, and `From<char::DecodeUtf16Error>` for `PyErr`.
        [#&#8203;5668](https://redirect.github.com/PyO3/pyo3/pull/5668)\n- Remove
        `Py_TRACE_REFS` support (unsupported from Python 3.13). [#&#8203;5824](https://redirect.github.com/PyO3/pyo3/pull/5824)\n-
        `experimental-inspect`: Remove the `TypeInfo` enum and the `FromPyObject::type_input`
        and `IntoPyObject::type_output` functions. They are replaced by the `PyStaticExpr`
        enum and the `FromPyObject::INPUT_TYPE` and the `IntoPyObject::OUTPUT_TYPE`
        associated constants. [#&#8203;5893](https://redirect.github.com/PyO3/pyo3/pull/5893)\n-
        Remove all functionality deprecated in PyO3 0.27. [#&#8203;6068](https://redirect.github.com/PyO3/pyo3/pull/6068)\n-
        FFI definitions:\n  - Remove private FFI definitions `_PyStack_AsDict`, `_PyObject_CallNoArg`,
        `_PyObject_FastCall`, `_PyObject_FastCallTstate`. `_PyObject_VectorcallTstate`,
        `_PyObject_MakeTpCall`, `_Py_CheckFunctionResult`, `_PyObject_CallFunction_SizeT`,
        `_PyObject_CallMethod_SizeT`, and `_PySequence_IterSearch`. [#&#8203;5942](https://redirect.github.com/PyO3/pyo3/pull/5942)\n
        \ - Remove FFI definitions `PY_ITERSEARCH_COUNT`, `PY_ITERSEARCH_INDEX`, and
        `PY_ITERSEARCH_CONTAINS`. [#&#8203;5942](https://redirect.github.com/PyO3/pyo3/pull/5942)\n
        \ - Removed private FFI definitions `_PySet_NextEntry`, and `_PyLong_NumBits`.
        [#&#8203;5946](https://redirect.github.com/PyO3/pyo3/pull/5946)\n  - Remove
        private FFI definitions `_PyFloat_CAST`, `_PyRun_SimpleFileObject`, `_PyRun_AnyFileObject`,
        `_PyRun_InteractiveLoopObject`, `_PyUnicode_CheckConsistency`, `_PyUnicode_COMPACT_DATA`,
        `_PyUnicode_NONCOMPACT_DATA`, `_PyUnicode_Ready`, and `_Py_HashBytes`. [#&#8203;6036](https://redirect.github.com/PyO3/pyo3/pull/6036)\n
        \ - Remove private FFI definition `_PyEval_EvalFrameDefault`. [#&#8203;6038](https://redirect.github.com/PyO3/pyo3/pull/6038)\n
        \ - Remove private FFI definition `_PyBytes_Resize`. [#&#8203;6042](https://redirect.github.com/PyO3/pyo3/pull/6042)\n
        \ - Remove private FFI definitions `_PyErr_BadInternalCall`, `_Py_GetAllocatedBlocks`,
        `_PyObject_GC_Malloc`, `_PyObject_GC_Calloc`, and `_PyLong_NumBits`. [#&#8203;6053](https://redirect.github.com/PyO3/pyo3/pull/6053)\n
        \ - Remove `Default` for FFI definitions `PyHeapTypeObject`, `PyObjectArenaAllocator`,
        `PyHash_FuncDef`, and `PyType_Spec`. [#&#8203;6093](https://redirect.github.com/PyO3/pyo3/pull/6093)\n\n#####
        Fixed\n\n- Fix `add_libpython_rpath_link_args` emitting rpath link args on
        wasm targets which don't support rpath. [#&#8203;5447](https://redirect.github.com/PyO3/pyo3/pull/5447)\n-
        Fix `From<string::FromUtf8Error>` and `From<ffi::IntoStringError>` for `PyErr`
        producing `TypeError` due to broken internals. [#&#8203;5668](https://redirect.github.com/PyO3/pyo3/pull/5668)\n-
        Fix `PyMappingProxy::is_type_of` and `PyWeakrefReference::is_type_of` not
        accepting subclasses. [#&#8203;5883](https://redirect.github.com/PyO3/pyo3/pull/5883)\n-
        Fix `getattr_opt` not treating `AttributeError` subclasses as missing attributes
        on Python < 3.13. [#&#8203;5985](https://redirect.github.com/PyO3/pyo3/pull/5985)\n-
        Fix compilation error for `#[new]` return types that contain named lifetimes.
        [#&#8203;5998](https://redirect.github.com/PyO3/pyo3/pull/5998)\n- Fix missing
        `'static` bound on `PyCapsule` destructors. [#&#8203;6049](https://redirect.github.com/PyO3/pyo3/pull/6049)\n-
        Fix case where `PyFrame::builtins` could return a non-dict object. [#&#8203;6052](https://redirect.github.com/PyO3/pyo3/pull/6052)\n-
        Fix type confusion when returning a `#[pyclass]` from a different pyclass'
        `#[new]` method. [#&#8203;6062](https://redirect.github.com/PyO3/pyo3/pull/6062)\n-
        Fix soundness issue caused by variance in `PyClassGuardMap` by splitting off
        the mutable variant. [#&#8203;6073](https://redirect.github.com/PyO3/pyo3/pull/6073)\n-
        Fix nondeterministic JSON metadata emitted by the `experimental-inspect` proc
        macros (to enable reproducible builds). [#&#8203;6076](https://redirect.github.com/PyO3/pyo3/pull/6076)\n-
        Fix UB in `PyEval_RestoreThread` when the interpreter is shutting down on
        Python 3.13 and older (hang the thread instead of allowing `pthread_exit`
        to jump across Rust frames). [#&#8203;6085](https://redirect.github.com/PyO3/pyo3/pull/6085)\n-
        Fix possible out of bounds read in `BoundListIterator` and `BoundTupleIterator`'s
        `nth` and `nth_back` implementations. [#&#8203;6086](https://redirect.github.com/PyO3/pyo3/pull/6086)\n-
        Fix `BoundListIterator` and `BoundTupleIterator` not being exhausted when
        `nth` or `nth_back` is called with N larger than the remaining count of items.
        [#&#8203;6086](https://redirect.github.com/PyO3/pyo3/pull/6086)\n- Fix missing
        `Sync` bound on closure type in `PyCFunction::new_closure`. [#&#8203;6096](https://redirect.github.com/PyO3/pyo3/pull/6096)\n-
        Fix soundness issue caused by exposing a mutable reference from `PyClassGuardMut::as_super`
        by moving into `PyClassGuardMutSuper`. [#&#8203;6104](https://redirect.github.com/PyO3/pyo3/pull/6104)\n-
        FFI definitions:\n  - Fix missing FFI definition for `PyTypeObject.tp_versions_used`
        on Python 3.13 and newer. [#&#8203;5917](https://redirect.github.com/PyO3/pyo3/pull/5917)\n
        \ - Mark FFI definitions no longer available on 3.11 and up: `PyUnicode_Encode`,
        `PyUnicode_EncodeASCII`, `PyUnicode_EncodeCharmap`, `PyUnicode_EncodeDecimal`,
        `PyUnicode_EncodeLatin1`, `PyUnicode_EncodeRawUnicodeEscape`, `PyUnicode_EncodeUTF7`,
        `PyUnicode_EncodeUTF8`, `PyUnicode_EncodeUTF16`, `PyUnicode_EncodeUTF32`,
        `PyUnicode_EncodeUnicodeEscape`, `PyUnicode_TransformDecimalToASCII`, and
        `PyUnicode_TranslateCharmap`. [#&#8203;6041](https://redirect.github.com/PyO3/pyo3/pull/6041)\n
        \ - Mark FFI definition `PyUnicode_ClearFreeList` no longer available on 3.9
        and up. [#&#8203;6041](https://redirect.github.com/PyO3/pyo3/pull/6041)\n
        \ - Fix FFI definition `PyErr_SetInterruptEx` missing `c_int` return type.
        [#&#8203;6043](https://redirect.github.com/PyO3/pyo3/pull/6043)\n  - Fix return
        type of FFI definition `PyBuffer_SizeFromFormat` on Python 3.8 (was changed
        from `c_int` to `Py_ssize_t` on Python 3.9). [#&#8203;6090](https://redirect.github.com/PyO3/pyo3/pull/6090)\n
        \ - Fix return type of FFI definition `PyUnicode_Tailmatch` on PyPy (is `c_int`,
        unlike CPython). [#&#8203;6090](https://redirect.github.com/PyO3/pyo3/pull/6090)\n\n</details>\n\n---\n\n###
        Configuration\n\n\U0001F4C5 **Schedule**: (UTC)\n\n- Branch creation\n  -
        At any time (no schedule defined)\n- Automerge\n  - At any time (no schedule
        defined)\n\n\U0001F6A6 **Automerge**: Disabled by config. Please merge this
        manually once you are satisfied.\n\n\u267B **Rebasing**: Whenever PR is behind
        base branch, or you tick the rebase/retry checkbox.\n\n\U0001F515 **Ignore**:
        Close this PR and you won't be reminded about this update again.\n\n---\n\n
        - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this
        box\n\n---\n\nThis PR was generated by [Mend Renovate](https://mend.io/renovate/).
        View the [repository job log](https://developer.mend.io/github/vexxhost/magnum-cluster-api).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMTkuMCIsInVwZGF0ZWRJblZlciI6IjQzLjIxOS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->\n"
      change_url: https://github.com/vexxhost/magnum-cluster-api/pull/1067
      child_jobs: []
      commit_id: b8f4a29949264713846be1392ce32550fe1e5379
      event_id: 357e26e0-669b-11f1-9514-512912594da8
      executor:
        hostname: 2d72f0692154
        inventory_file: /var/lib/zuul/builds/6a2ccefed54d448cbea698bcdc94d3bb/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/6a2ccefed54d448cbea698bcdc94d3bb/work/logs
        result_data_file: /var/lib/zuul/builds/6a2ccefed54d448cbea698bcdc94d3bb/work/results.json
        src_root: /var/lib/zuul/builds/6a2ccefed54d448cbea698bcdc94d3bb/work/src
        work_root: /var/lib/zuul/builds/6a2ccefed54d448cbea698bcdc94d3bb/work
      include_vars: []
      items:
      - branch: main
        change: '1067'
        change_message: "fix(deps): update rust crate pyo3 to 0.29.0 [security]\n\nThis
          PR contains the following updates:\n\n| Package | Type | Update | Change
          |\n|---|---|---|---|\n| [pyo3](https://redirect.github.com/pyo3/pyo3) |
          dependencies | minor | `0.28.0` \u2192 `0.29.0` |\n\n---\n\n### PyO3 has
          an Out-of-bounds Read in `nth` / `nth_back` for `PyList` and `PyTuple` iterators\n[GHSA-36hh-v3qg-5jq4](https://redirect.github.com/advisories/GHSA-36hh-v3qg-5jq4)\n\n<details>\n<summary>More
          information</summary>\n\n#### Details\nPyO3 0.24.0 added optimized implementations
          of `Iterator::nth` and `DoubleEndedIterator::nth_back` for the `BoundListIterator`
          and `BoundTupleIterator` types. These implementations computed the target
          index using unchecked `usize` addition (`index + n`) before bounds-checking
          against the sequence length, then read the element via `get_item_unchecked`.\n\nIn
          `nth` methods, a sufficiently large `n` (combined with a non-zero internal
          index) could cause the addition to overflow and wrap around, producing a
          small \"target index\" that passed the bounds check and enabling reads at
          the front of the `list` or `tuple` of elements previously yielded by the
          iterator.\n\nIn `nth_back` methods, a sufficiently large `n` could cause
          underflow in a similar fashion, however would instead allow reads of arbitrary
          memory past the end of the `list` or `tuple` storage.\n\n#### Severity\n-
          CVSS Score: 8.7 / 10 (High)\n- Vector String: `CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N`\n\n####
          References\n- [https://github.com/PyO3/pyo3/pull/6086](https://redirect.github.com/PyO3/pyo3/pull/6086)\n-
          [https://rustsec.org/advisories/RUSTSEC-2026-0176.html](https://rustsec.org/advisories/RUSTSEC-2026-0176.html)\n-
          [https://github.com/advisories/GHSA-36hh-v3qg-5jq4](https://redirect.github.com/advisories/GHSA-36hh-v3qg-5jq4)\n\nThis
          data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-36hh-v3qg-5jq4)
          ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).\n</details>\n\n---\n\n###
          Release Notes\n\n<details>\n<summary>pyo3/pyo3 (pyo3)</summary>\n\n### [`v0.29.0`](https://redirect.github.com/pyo3/pyo3/blob/HEAD/CHANGELOG.md#0290---2026-06-11)\n\n[Compare
          Source](https://redirect.github.com/pyo3/pyo3/compare/v0.28.3...v0.29.0)\n\n#####
          Packaging\n\n- Support the new PEP 803 abi3t ABI with new `abi3t` and `abi3t-py315`
          features. [#&#8203;5807](https://redirect.github.com/PyO3/pyo3/pull/5807)\n-
          `pyo3-macros-backend` no longer depends on `pyo3-build-config`. [#&#8203;5809](https://redirect.github.com/PyO3/pyo3/pull/5809)\n-
          Drop support for Python 3.13t (3.14t and above continue to be supported;
          CPython declared free-threading supported starting with Python 3.14). [#&#8203;5865](https://redirect.github.com/PyO3/pyo3/pull/5865)\n-
          Drop support for Python 3.7. [#&#8203;5912](https://redirect.github.com/PyO3/pyo3/pull/5912)\n-
          Extend range of supported versions of `hashbrown` optional dependency to
          include version 0.17. [#&#8203;5973](https://redirect.github.com/PyO3/pyo3/pull/5973)\n-
          Support Python 3.15.0b1. [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n-
          `pyo3-ffi` is now `no_std`. [#&#8203;6022](https://redirect.github.com/PyO3/pyo3/pull/6022)\n\n#####
          Added\n\n- Add `PyErr::set_traceback` to set the traceback of an exception
          object. [#&#8203;5349](https://redirect.github.com/PyO3/pyo3/pull/5349)\n-
          Add `PyUnicodeDecodeError::new_err_from_utf8` to create a `PyErr` from a
          `str::Utf8Error`. [#&#8203;5668](https://redirect.github.com/PyO3/pyo3/pull/5668)\n-
          `experimental-inspect`: implement `INPUT_TYPE` and `OUTPUT_TYPE` on optional
          third-party crate conversions. [#&#8203;5770](https://redirect.github.com/PyO3/pyo3/pull/5770)\n-
          `experimental-inspect`: include doc comments in generated stubs. [#&#8203;5782](https://redirect.github.com/PyO3/pyo3/pull/5782)\n-
          Add `pyo3_build_config::PythonAbi`, `pyo3_build_config::PythonAbiKind`,
          `pyo3_build_config::PythonAbiBuilder`, `pyo3_build_config::InterpreterConfig::target_abi`,
          and `pyo3_build_config::InterpreterConfigBuilder::target_abi`. [#&#8203;5807](https://redirect.github.com/PyO3/pyo3/pull/5807)\n-
          Add `Borrowed::get` as an equivalent to `Bound::get` and `Py::get`. [#&#8203;5849](https://redirect.github.com/PyO3/pyo3/pull/5849)\n-
          Add `PyFrame::new`, `PyTraceBack::new`, and `PyFrameMethods::line_number`.
          [#&#8203;5857](https://redirect.github.com/PyO3/pyo3/pull/5857)\n- Add `PyUntypedBuffer::obj`
          to retrieve the Python object owning the buffer. [#&#8203;5870](https://redirect.github.com/PyO3/pyo3/pull/5870)\n-
          Add `PyCapsule::new_with_value` and `PyCapsule::new_with_value_and_destructor`.
          [#&#8203;5881](https://redirect.github.com/PyO3/pyo3/pull/5881)\n- Add `PyErr::set_context`
          and `PyErr::context`. [#&#8203;5887](https://redirect.github.com/PyO3/pyo3/pull/5887)\n-
          Add a small CLI to `pyo3-introspection` to generate stubs. [#&#8203;5904](https://redirect.github.com/PyO3/pyo3/pull/5904)\n-
          Add `Python::version_str`. [#&#8203;5921](https://redirect.github.com/PyO3/pyo3/pull/5921)\n-
          Add `TryFrom<&Bound<T>>` for `PyRef<T>`, `PyRefMut<T>`, `PyClassGuard<T>`
          and `PyClassGuardMut<T>`. [#&#8203;5922](https://redirect.github.com/PyO3/pyo3/pull/5922)\n-
          Add `From<&Bound<T>>` for `Bound<T>` and `Py<T>` [#&#8203;5922](https://redirect.github.com/PyO3/pyo3/pull/5922)\n-
          Add `PyDictMethods::set_default` and `PyDictMethods::set_default_ref` to
          allow atomically setting default values in a PyDict. [#&#8203;5955](https://redirect.github.com/PyO3/pyo3/pull/5955)\n-
          add `PyFrameMethods::outer|code|var|builtins|globals|locals`. [#&#8203;5967](https://redirect.github.com/PyO3/pyo3/pull/5967)\n-
          Add `From` conversions for `PyErr` from `std::time::TryFromFloatSecsError`,
          `std::time::SystemTimeError`, `std::path::StripPrefixError`, `std::env::JoinPathsError`,
          `std::char::ParseCharError`, and `std::char::CharTryFromError`. [#&#8203;6001](https://redirect.github.com/PyO3/pyo3/pull/6001)\n-
          Add `pyo3_build_config::InterpreterConfigBuilder`. [#&#8203;6034](https://redirect.github.com/PyO3/pyo3/pull/6034)\n-
          Add `PyCapsule::import_pointer` [#&#8203;6066](https://redirect.github.com/PyO3/pyo3/pull/6066)\n-
          Add `PyClassGuardMapMut`. [#&#8203;6073](https://redirect.github.com/PyO3/pyo3/pull/6073)\n-
          Expose `PyListMethods::get_item_unchecked`, `PyTupleMethods::get_item_unchecked`,
          and `PyTupleMethods::get_borrowed_item_unchecked` on abi3. [#&#8203;6075](https://redirect.github.com/PyO3/pyo3/pull/6075)\n-
          Add `PyClassGuardMapSuper`. [#&#8203;6104](https://redirect.github.com/PyO3/pyo3/pull/6104)\n-
          Add `PyClassGuard` and `PyClassGuardMut` to `pyo3::prelude`. [#&#8203;6112](https://redirect.github.com/PyO3/pyo3/pull/6112)\n-
          Add `Debug` impls for `PyClassGuard` and `PyClassGuardMut`. [#&#8203;6112](https://redirect.github.com/PyO3/pyo3/pull/6112)\n-
          Enable extending `PyDateTime`, `PyDate`, `PyTime`, `PyDelta` and `PyTzInfo`
          on abi3 with python 3.12+. [#&#8203;6115](https://redirect.github.com/PyO3/pyo3/pull/6115)\n-
          Expose `PyFunction` available on abi3. [#&#8203;6117](https://redirect.github.com/PyO3/pyo3/pull/6117)\n-
          FFI definitions:\n  - Added FFI definitions `PyUnstable_Object_IsUniquelyReferenced`,
          `PyUnstable_Object_IsUniquelyReferencedTemporary`, `PyUnstable_EnableTryIncref`,
          and `PyUnstable_TryIncref`. [#&#8203;5828](https://redirect.github.com/PyO3/pyo3/pull/5828)\n
          \ - Add FFI definitions `ffi::PyErr_GetHandledException` and `ffi::PyErr_SetHandledException`.
          [#&#8203;5887](https://redirect.github.com/PyO3/pyo3/pull/5887)\n  - Add
          FFI definition `Py_HASH_SIPHASH13`. [#&#8203;5891](https://redirect.github.com/PyO3/pyo3/pull/5891)\n
          \ - Add FFI definition `PyStructSequence_UnnamedField` constant on Python
          3.9 and up (or 3.11 with abi3 features). [#&#8203;5892](https://redirect.github.com/PyO3/pyo3/pull/5892)\n
          \ - Add FFI definitions `PyUnstable_InterpreterFrame_GetCode`, `PyUnstable_InterpreterFrame_GetLasti`,
          `PyUnstable_InterpreterFrame_GetLine`, and `PyUnstable_ExecutableKinds`.
          [#&#8203;5932](https://redirect.github.com/PyO3/pyo3/pull/5932)\n  - Add
          FFI definitions `PyMarshal_WriteLongToFile`, `PyMarshal_WriteObjectToFile`,
          `PyMarshal_ReadLongFromFile`, `PyMarshal_ReadShortFromFile`, `PyMarshal_ReadObjectFromFile`,
          and `PyMarshal_ReadLastObjectFromFile`. [#&#8203;5934](https://redirect.github.com/PyO3/pyo3/pull/5934)\n
          \ - Add FFI definitions `PyObject_GetAIter`, `PyAIter_Check`, `PyMapping_HasKeyWithError`,
          `PyMapping_HasKeyStringWithError`, `PyMapping_GetOptionalItem`, `PyMapping_GetOptionalItemString`,
          `PySequence_ITEM`, `PySequence_Fast_GET_SIZE`, `PySequence_Fast_GET_ITEM`,
          and `PySequence_Fast_ITEMS`. [#&#8203;5942](https://redirect.github.com/PyO3/pyo3/pull/5942)\n
          \ - Add FFI definition `compat::PyObject_HasAttrWithError`. [#&#8203;5944](https://redirect.github.com/PyO3/pyo3/pull/5944)\n
          \ - Add FFI definitions `PyDict_SetDefault`, `PyDict_SetDefaultRef`, `PyDict_ContainsString`,
          `PyDict_Pop`, `PyDict_PopString`, `PyDict_ClearWatcher`, `PyDict_Watch`,
          `PyDict_Unwatch`, and `PyFrozenDict_New`. [#&#8203;5947](https://redirect.github.com/PyO3/pyo3/pull/5947)\n
          \ - Add FFI definitions `PyDate_FromDate`, `PyDateTime_FromDateAndTime`,
          `PyDateTime_FromDateAndTimeAndFold`, `PyTime_FromTime`, `PyTime_FromTimeAndFold`,
          and `PyDelta_FromDSU`. [#&#8203;5949](https://redirect.github.com/PyO3/pyo3/pull/5949)\n
          \ - Add FFI definitions `PyDict_SetDefaultRef` and `compat::PyDict_SetDefaultRef`.
          [#&#8203;5955](https://redirect.github.com/PyO3/pyo3/pull/5955)\n    versions.\n
          \ - Add FFI definitions for non-limited API header `cpython/bytearrayobject.h`.
          [#&#8203;5966](https://redirect.github.com/PyO3/pyo3/pull/5966)\n  - Add
          FFI definitions for non-limited API version of `PyCellObject` and associated
          functions. [#&#8203;5978](https://redirect.github.com/PyO3/pyo3/pull/5978)\n
          \ - Add FFI definition `PyErr_WarnExplicitObject`. [#&#8203;5979](https://redirect.github.com/PyO3/pyo3/pull/5979)\n
          \ - Add FFI definition `PyTracebackObject`. [#&#8203;5980](https://redirect.github.com/PyO3/pyo3/pull/5980)\n
          \ - Add FFI definition `PyTuple_FromArray` on 3.15+. [#&#8203;5990](https://redirect.github.com/PyO3/pyo3/pull/5990)\n
          \ - Add FFI definitions for the PEP 820 PySlot C API. [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n
          \ - Add FFI definitions for the critical section API in the limited API
          on Python 3.15\n    and newer. [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n
          \ - Add FFI definitions for [PEP 757](https://peps.python.org/pep-0757/)
          `PyLong` import / export API on Python 3.14+. [#&#8203;6016](https://redirect.github.com/PyO3/pyo3/pull/6016)\n
          \ - Add FFI definitions `PyEval_SetProfileAllThreads` and `PyEval_SetTraceAllThreads`.
          [#&#8203;6038](https://redirect.github.com/PyO3/pyo3/pull/6038)\n  - Add
          FFI definition `Py_UNICODE_TODECIMAL`. [#&#8203;6041](https://redirect.github.com/PyO3/pyo3/pull/6041)\n\n#####
          Changed\n\n- Change exception enrichment on `#[pyfunction]` argument extraction
          error to use `PyErr::add_note` instead of replacing `TypeError` instances.
          [#&#8203;5349](https://redirect.github.com/PyO3/pyo3/pull/5349)\n- Deprecate
          super-class initialization via tuples. [#&#8203;5741](https://redirect.github.com/PyO3/pyo3/pull/5741)\n-
          Change module initialization uses the PyModExport and PyABIInfo APIs on
          Python 3.15+. [#&#8203;5753](https://redirect.github.com/PyO3/pyo3/pull/5753)\n-
          Deprecate `Py<T>::get_refcnt` and `PyAnyMethods::get_refcnt` in favor of
          `pyo3::ffi::Py_REFCNT(obj.as_ptr())`. [#&#8203;5797](https://redirect.github.com/PyO3/pyo3/pull/5797)\n-
          Change `PyEnvironmentError`, `PyIOError`, and `PyWindowsError` to be type
          aliases of `PyOSError` (as is the case in Python since 3.3). [#&#8203;5803](https://redirect.github.com/PyO3/pyo3/pull/5803)\n-
          Change `pyo3_build_config::InterpreterConfig::from_interpreter` to require
          an additional `stable_abi_version` argument. The old behavior is the same
          as passing `None`. [#&#8203;5807](https://redirect.github.com/PyO3/pyo3/pull/5807)\n-
          Change `PyList::new` to no longer have `ExactSizeIterator` bound. [#&#8203;5830](https://redirect.github.com/PyO3/pyo3/pull/5830)\n-
          `experimental-inspect`: emit `#[classattribute]` as plain Python class attributes
          and not functions annotated with `@classattribute` and `@property`. [#&#8203;5839](https://redirect.github.com/PyO3/pyo3/pull/5839)\n-
          `experimental-inspect`: use `object` as the input annotation type of magic
          methods that return `NonImplemented` if the input value is not of the correct
          type. [#&#8203;5841](https://redirect.github.com/PyO3/pyo3/pull/5841)\n-
          Deprecate `pyo3-build-config/resolve-config` feature. [#&#8203;5862](https://redirect.github.com/PyO3/pyo3/pull/5862)\n-
          Change `pyo3-ffi` to use raw-dylib for Windows linking. [#&#8203;5866](https://redirect.github.com/PyO3/pyo3/pull/5866)\n-
          Deprecate `generate-import-lib` feature. [#&#8203;5866](https://redirect.github.com/PyO3/pyo3/pull/5866)\n-
          Allow zero-sized types in `PyCapsule::new`. [#&#8203;5889](https://redirect.github.com/PyO3/pyo3/pull/5889)\n-
          `PyDate::from_timestamp` argument is now a `f64` (the Python API expects
          a float and not an integer) [#&#8203;5896](https://redirect.github.com/PyO3/pyo3/pull/5896)\n-
          `experimental-inspect`: Change `PathBuf::extract` input type hint from `str
          | os.PathLike` to `str | os.PathLike[str]` [#&#8203;5897](https://redirect.github.com/PyO3/pyo3/pull/5897)\n-
          Remove lifetime from `PythonVersionInfo`. [#&#8203;5921](https://redirect.github.com/PyO3/pyo3/pull/5921)\n-
          Remove redundant type checks for methods where CPython guarantees the type
          of `self`. [#&#8203;5930](https://redirect.github.com/PyO3/pyo3/pull/5930)\n-
          Elide temporary reference count cycles inside `PyAnyMethods::call`, `PyAnyMethods::call1`
          and `PyAnyMethods::call_method1` for arguments passed as Rust tuples containing
          borrowed references to Python objects. [#&#8203;5941](https://redirect.github.com/PyO3/pyo3/pull/5941)\n-
          Allow type annotations to be used in `#[pyo3(signature = ...)]` when `experimental-inspect`
          feature is not enabled (they will be ignored). [#&#8203;5999](https://redirect.github.com/PyO3/pyo3/pull/5999)\n-
          `pyo3-ffi` will now rebuild when the Python virtual environment changes
          in-place. [#&#8203;6008](https://redirect.github.com/PyO3/pyo3/pull/6008)\n-
          Change module initialization on 3.15+ to use PEP 820 PySlot API internally.
          [#&#8203;6014](https://redirect.github.com/PyO3/pyo3/pull/6014)\n- Deprecate
          direct access to all `pyo3_build_config::InterpreterConfig` fields; getter
          methods have been added as replacements. [#&#8203;6034](https://redirect.github.com/PyO3/pyo3/pull/6034)\n-
          FFI definitions `_PyCode_GetExtra`, `_PyCode_SetExtra`, and `_PyEval_RequestCodeExtraIndex`
          have been updated to `PyUnstable_Code_GetExtra`, `PyUnstable_Code_SetExtra`,
          and `PyUnstable_Eval_RequestCodeExtraIndex`. [#&#8203;6038](https://redirect.github.com/PyO3/pyo3/pull/6038)\n-
          Change `PyCapsule::import` to return an error if the pointer is not properly
          aligned. [#&#8203;6066](https://redirect.github.com/PyO3/pyo3/pull/6066)\n-
          Change `PyClassGuardMap` to be only for `PyClassGuard::map` and return `PyClassGuardMapMut`
          from `PyClassGuardMut::map`. [#&#8203;6073](https://redirect.github.com/PyO3/pyo3/pull/6073)\n-
          Change `with_critical_section_mutex2` closure to take `Option<EnteredCriticalSection>`
          instead of `EnteredCriticalSection` as the second argument. [#&#8203;6098](https://redirect.github.com/PyO3/pyo3/pull/6098)\n-
          `PyClassGuardMut::as_super` now returns `PyClassGuardMutSuper`. [#&#8203;6104](https://redirect.github.com/PyO3/pyo3/pull/6104)\n-
          `experimental-inspect`: Generate relative imports instead of absolute ones
          (useful if the stubs are not describing a root package) [#&#8203;6097](https://redirect.github.com/PyO3/pyo3/pull/6097)\n\n#####
          Removed\n\n- Removed the broken (and unfixable) implementations of `From<str::Utf8Error>`,
          `From<string::FromUtf16Error>`, and `From<char::DecodeUtf16Error>` for `PyErr`.
          [#&#8203;5668](https://redirect.github.com/PyO3/pyo3/pull/5668)\n- Remove
          `Py_TRACE_REFS` support (unsupported from Python 3.13). [#&#8203;5824](https://redirect.github.com/PyO3/pyo3/pull/5824)\n-
          `experimental-inspect`: Remove the `TypeInfo` enum and the `FromPyObject::type_input`
          and `IntoPyObject::type_output` functions. They are replaced by the `PyStaticExpr`
          enum and the `FromPyObject::INPUT_TYPE` and the `IntoPyObject::OUTPUT_TYPE`
          associated constants. [#&#8203;5893](https://redirect.github.com/PyO3/pyo3/pull/5893)\n-
          Remove all functionality deprecated in PyO3 0.27. [#&#8203;6068](https://redirect.github.com/PyO3/pyo3/pull/6068)\n-
          FFI definitions:\n  - Remove private FFI definitions `_PyStack_AsDict`,
          `_PyObject_CallNoArg`, `_PyObject_FastCall`, `_PyObject_FastCallTstate`.
          `_PyObject_VectorcallTstate`, `_PyObject_MakeTpCall`, `_Py_CheckFunctionResult`,
          `_PyObject_CallFunction_SizeT`, `_PyObject_CallMethod_SizeT`, and `_PySequence_IterSearch`.
          [#&#8203;5942](https://redirect.github.com/PyO3/pyo3/pull/5942)\n  - Remove
          FFI definitions `PY_ITERSEARCH_COUNT`, `PY_ITERSEARCH_INDEX`, and `PY_ITERSEARCH_CONTAINS`.
          [#&#8203;5942](https://redirect.github.com/PyO3/pyo3/pull/5942)\n  - Removed
          private FFI definitions `_PySet_NextEntry`, and `_PyLong_NumBits`. [#&#8203;5946](https://redirect.github.com/PyO3/pyo3/pull/5946)\n
          \ - Remove private FFI definitions `_PyFloat_CAST`, `_PyRun_SimpleFileObject`,
          `_PyRun_AnyFileObject`, `_PyRun_InteractiveLoopObject`, `_PyUnicode_CheckConsistency`,
          `_PyUnicode_COMPACT_DATA`, `_PyUnicode_NONCOMPACT_DATA`, `_PyUnicode_Ready`,
          and `_Py_HashBytes`. [#&#8203;6036](https://redirect.github.com/PyO3/pyo3/pull/6036)\n
          \ - Remove private FFI definition `_PyEval_EvalFrameDefault`. [#&#8203;6038](https://redirect.github.com/PyO3/pyo3/pull/6038)\n
          \ - Remove private FFI definition `_PyBytes_Resize`. [#&#8203;6042](https://redirect.github.com/PyO3/pyo3/pull/6042)\n
          \ - Remove private FFI definitions `_PyErr_BadInternalCall`, `_Py_GetAllocatedBlocks`,
          `_PyObject_GC_Malloc`, `_PyObject_GC_Calloc`, and `_PyLong_NumBits`. [#&#8203;6053](https://redirect.github.com/PyO3/pyo3/pull/6053)\n
          \ - Remove `Default` for FFI definitions `PyHeapTypeObject`, `PyObjectArenaAllocator`,
          `PyHash_FuncDef`, and `PyType_Spec`. [#&#8203;6093](https://redirect.github.com/PyO3/pyo3/pull/6093)\n\n#####
          Fixed\n\n- Fix `add_libpython_rpath_link_args` emitting rpath link args
          on wasm targets which don't support rpath. [#&#8203;5447](https://redirect.github.com/PyO3/pyo3/pull/5447)\n-
          Fix `From<string::FromUtf8Error>` and `From<ffi::IntoStringError>` for `PyErr`
          producing `TypeError` due to broken internals. [#&#8203;5668](https://redirect.github.com/PyO3/pyo3/pull/5668)\n-
          Fix `PyMappingProxy::is_type_of` and `PyWeakrefReference::is_type_of` not
          accepting subclasses. [#&#8203;5883](https://redirect.github.com/PyO3/pyo3/pull/5883)\n-
          Fix `getattr_opt` not treating `AttributeError` subclasses as missing attributes
          on Python < 3.13. [#&#8203;5985](https://redirect.github.com/PyO3/pyo3/pull/5985)\n-
          Fix compilation error for `#[new]` return types that contain named lifetimes.
          [#&#8203;5998](https://redirect.github.com/PyO3/pyo3/pull/5998)\n- Fix missing
          `'static` bound on `PyCapsule` destructors. [#&#8203;6049](https://redirect.github.com/PyO3/pyo3/pull/6049)\n-
          Fix case where `PyFrame::builtins` could return a non-dict object. [#&#8203;6052](https://redirect.github.com/PyO3/pyo3/pull/6052)\n-
          Fix type confusion when returning a `#[pyclass]` from a different pyclass'
          `#[new]` method. [#&#8203;6062](https://redirect.github.com/PyO3/pyo3/pull/6062)\n-
          Fix soundness issue caused by variance in `PyClassGuardMap` by splitting
          off the mutable variant. [#&#8203;6073](https://redirect.github.com/PyO3/pyo3/pull/6073)\n-
          Fix nondeterministic JSON metadata emitted by the `experimental-inspect`
          proc macros (to enable reproducible builds). [#&#8203;6076](https://redirect.github.com/PyO3/pyo3/pull/6076)\n-
          Fix UB in `PyEval_RestoreThread` when the interpreter is shutting down on
          Python 3.13 and older (hang the thread instead of allowing `pthread_exit`
          to jump across Rust frames). [#&#8203;6085](https://redirect.github.com/PyO3/pyo3/pull/6085)\n-
          Fix possible out of bounds read in `BoundListIterator` and `BoundTupleIterator`'s
          `nth` and `nth_back` implementations. [#&#8203;6086](https://redirect.github.com/PyO3/pyo3/pull/6086)\n-
          Fix `BoundListIterator` and `BoundTupleIterator` not being exhausted when
          `nth` or `nth_back` is called with N larger than the remaining count of
          items. [#&#8203;6086](https://redirect.github.com/PyO3/pyo3/pull/6086)\n-
          Fix missing `Sync` bound on closure type in `PyCFunction::new_closure`.
          [#&#8203;6096](https://redirect.github.com/PyO3/pyo3/pull/6096)\n- Fix soundness
          issue caused by exposing a mutable reference from `PyClassGuardMut::as_super`
          by moving into `PyClassGuardMutSuper`. [#&#8203;6104](https://redirect.github.com/PyO3/pyo3/pull/6104)\n-
          FFI definitions:\n  - Fix missing FFI definition for `PyTypeObject.tp_versions_used`
          on Python 3.13 and newer. [#&#8203;5917](https://redirect.github.com/PyO3/pyo3/pull/5917)\n
          \ - Mark FFI definitions no longer available on 3.11 and up: `PyUnicode_Encode`,
          `PyUnicode_EncodeASCII`, `PyUnicode_EncodeCharmap`, `PyUnicode_EncodeDecimal`,
          `PyUnicode_EncodeLatin1`, `PyUnicode_EncodeRawUnicodeEscape`, `PyUnicode_EncodeUTF7`,
          `PyUnicode_EncodeUTF8`, `PyUnicode_EncodeUTF16`, `PyUnicode_EncodeUTF32`,
          `PyUnicode_EncodeUnicodeEscape`, `PyUnicode_TransformDecimalToASCII`, and
          `PyUnicode_TranslateCharmap`. [#&#8203;6041](https://redirect.github.com/PyO3/pyo3/pull/6041)\n
          \ - Mark FFI definition `PyUnicode_ClearFreeList` no longer available on
          3.9 and up. [#&#8203;6041](https://redirect.github.com/PyO3/pyo3/pull/6041)\n
          \ - Fix FFI definition `PyErr_SetInterruptEx` missing `c_int` return type.
          [#&#8203;6043](https://redirect.github.com/PyO3/pyo3/pull/6043)\n  - Fix
          return type of FFI definition `PyBuffer_SizeFromFormat` on Python 3.8 (was
          changed from `c_int` to `Py_ssize_t` on Python 3.9). [#&#8203;6090](https://redirect.github.com/PyO3/pyo3/pull/6090)\n
          \ - Fix return type of FFI definition `PyUnicode_Tailmatch` on PyPy (is
          `c_int`, unlike CPython). [#&#8203;6090](https://redirect.github.com/PyO3/pyo3/pull/6090)\n\n</details>\n\n---\n\n###
          Configuration\n\n\U0001F4C5 **Schedule**: (UTC)\n\n- Branch creation\n  -
          At any time (no schedule defined)\n- Automerge\n  - At any time (no schedule
          defined)\n\n\U0001F6A6 **Automerge**: Disabled by config. Please merge this
          manually once you are satisfied.\n\n\u267B **Rebasing**: Whenever PR is
          behind base branch, or you tick the rebase/retry checkbox.\n\n\U0001F515
          **Ignore**: Close this PR and you won't be reminded about this update again.\n\n---\n\n
          - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this
          box\n\n---\n\nThis PR was generated by [Mend Renovate](https://mend.io/renovate/).
          View the [repository job log](https://developer.mend.io/github/vexxhost/magnum-cluster-api).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMTkuMCIsInVwZGF0ZWRJblZlciI6IjQzLjIxOS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->\n"
        change_url: https://github.com/vexxhost/magnum-cluster-api/pull/1067
        commit_id: b8f4a29949264713846be1392ce32550fe1e5379
        patchset: b8f4a29949264713846be1392ce32550fe1e5379
        project:
          canonical_hostname: github.com
          canonical_name: github.com/vexxhost/magnum-cluster-api
          name: vexxhost/magnum-cluster-api
          short_name: magnum-cluster-api
          src_dir: src/github.com/vexxhost/magnum-cluster-api
        topic: null
      job: magnum-cluster-api-hydrophone-v1.34.7-calico
      jobtags: []
      max_attempts: 3
      message: Zml4KGRlcHMpOiB1cGRhdGUgcnVzdCBjcmF0ZSBweW8zIHRvIDAuMjkuMCBbc2VjdXJpdHldCgpUaGlzIFBSIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgdXBkYXRlczoKCnwgUGFja2FnZSB8IFR5cGUgfCBVcGRhdGUgfCBDaGFuZ2UgfAp8LS0tfC0tLXwtLS18LS0tfAp8IFtweW8zXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcHlvMy9weW8zKSB8IGRlcGVuZGVuY2llcyB8IG1pbm9yIHwgYDAuMjguMGAg4oaSIGAwLjI5LjBgIHwKCi0tLQoKIyMjIFB5TzMgaGFzIGFuIE91dC1vZi1ib3VuZHMgUmVhZCBpbiBgbnRoYCAvIGBudGhfYmFja2AgZm9yIGBQeUxpc3RgIGFuZCBgUHlUdXBsZWAgaXRlcmF0b3JzCltHSFNBLTM2aGgtdjNxZy01anE0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYWR2aXNvcmllcy9HSFNBLTM2aGgtdjNxZy01anE0KQoKPGRldGFpbHM+CjxzdW1tYXJ5Pk1vcmUgaW5mb3JtYXRpb248L3N1bW1hcnk+CgojIyMjIERldGFpbHMKUHlPMyAwLjI0LjAgYWRkZWQgb3B0aW1pemVkIGltcGxlbWVudGF0aW9ucyBvZiBgSXRlcmF0b3I6Om50aGAgYW5kIGBEb3VibGVFbmRlZEl0ZXJhdG9yOjpudGhfYmFja2AgZm9yIHRoZSBgQm91bmRMaXN0SXRlcmF0b3JgIGFuZCBgQm91bmRUdXBsZUl0ZXJhdG9yYCB0eXBlcy4gVGhlc2UgaW1wbGVtZW50YXRpb25zIGNvbXB1dGVkIHRoZSB0YXJnZXQgaW5kZXggdXNpbmcgdW5jaGVja2VkIGB1c2l6ZWAgYWRkaXRpb24gKGBpbmRleCArIG5gKSBiZWZvcmUgYm91bmRzLWNoZWNraW5nIGFnYWluc3QgdGhlIHNlcXVlbmNlIGxlbmd0aCwgdGhlbiByZWFkIHRoZSBlbGVtZW50IHZpYSBgZ2V0X2l0ZW1fdW5jaGVja2VkYC4KCkluIGBudGhgIG1ldGhvZHMsIGEgc3VmZmljaWVudGx5IGxhcmdlIGBuYCAoY29tYmluZWQgd2l0aCBhIG5vbi16ZXJvIGludGVybmFsIGluZGV4KSBjb3VsZCBjYXVzZSB0aGUgYWRkaXRpb24gdG8gb3ZlcmZsb3cgYW5kIHdyYXAgYXJvdW5kLCBwcm9kdWNpbmcgYSBzbWFsbCAidGFyZ2V0IGluZGV4IiB0aGF0IHBhc3NlZCB0aGUgYm91bmRzIGNoZWNrIGFuZCBlbmFibGluZyByZWFkcyBhdCB0aGUgZnJvbnQgb2YgdGhlIGBsaXN0YCBvciBgdHVwbGVgIG9mIGVsZW1lbnRzIHByZXZpb3VzbHkgeWllbGRlZCBieSB0aGUgaXRlcmF0b3IuCgpJbiBgbnRoX2JhY2tgIG1ldGhvZHMsIGEgc3VmZmljaWVudGx5IGxhcmdlIGBuYCBjb3VsZCBjYXVzZSB1bmRlcmZsb3cgaW4gYSBzaW1pbGFyIGZhc2hpb24sIGhvd2V2ZXIgd291bGQgaW5zdGVhZCBhbGxvdyByZWFkcyBvZiBhcmJpdHJhcnkgbWVtb3J5IHBhc3QgdGhlIGVuZCBvZiB0aGUgYGxpc3RgIG9yIGB0dXBsZWAgc3RvcmFnZS4KCiMjIyMgU2V2ZXJpdHkKLSBDVlNTIFNjb3JlOiA4LjcgLyAxMCAoSGlnaCkKLSBWZWN0b3IgU3RyaW5nOiBgQ1ZTUzo0LjAvQVY6Ti9BQzpML0FUOk4vUFI6Ti9VSTpOL1ZDOkgvVkk6Ti9WQTpOL1NDOk4vU0k6Ti9TQTpOYAoKIyMjIyBSZWZlcmVuY2VzCi0gW2h0dHBzOi8vZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDg2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNjA4NikKLSBbaHR0cHM6Ly9ydXN0c2VjLm9yZy9hZHZpc29yaWVzL1JVU1RTRUMtMjAyNi0wMTc2Lmh0bWxdKGh0dHBzOi8vcnVzdHNlYy5vcmcvYWR2aXNvcmllcy9SVVNUU0VDLTIwMjYtMDE3Ni5odG1sKQotIFtodHRwczovL2dpdGh1Yi5jb20vYWR2aXNvcmllcy9HSFNBLTM2aGgtdjNxZy01anE0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYWR2aXNvcmllcy9HSFNBLTM2aGgtdjNxZy01anE0KQoKVGhpcyBkYXRhIGlzIHByb3ZpZGVkIGJ5IHRoZSBbR2l0SHViIEFkdmlzb3J5IERhdGFiYXNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYWR2aXNvcmllcy9HSFNBLTM2aGgtdjNxZy01anE0KSAoW0NDLUJZIDQuMF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2dpdGh1Yi9hZHZpc29yeS1kYXRhYmFzZS9ibG9iL21haW4vTElDRU5TRS5tZCkpLgo8L2RldGFpbHM+CgotLS0KCiMjIyBSZWxlYXNlIE5vdGVzCgo8ZGV0YWlscz4KPHN1bW1hcnk+cHlvMy9weW8zIChweW8zKTwvc3VtbWFyeT4KCiMjIyBbYHYwLjI5LjBgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcHlvMy9weW8zL2Jsb2IvSEVBRC9DSEFOR0VMT0cubWQjMDI5MC0tLTIwMjYtMDYtMTEpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9weW8zL3B5bzMvY29tcGFyZS92MC4yOC4zLi4udjAuMjkuMCkKCiMjIyMjIFBhY2thZ2luZwoKLSBTdXBwb3J0IHRoZSBuZXcgUEVQIDgwMyBhYmkzdCBBQkkgd2l0aCBuZXcgYGFiaTN0YCBhbmQgYGFiaTN0LXB5MzE1YCBmZWF0dXJlcy4gWyMmIzgyMDM7NTgwN10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzU4MDcpCi0gYHB5bzMtbWFjcm9zLWJhY2tlbmRgIG5vIGxvbmdlciBkZXBlbmRzIG9uIGBweW8zLWJ1aWxkLWNvbmZpZ2AuIFsjJiM4MjAzOzU4MDldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81ODA5KQotIERyb3Agc3VwcG9ydCBmb3IgUHl0aG9uIDMuMTN0ICgzLjE0dCBhbmQgYWJvdmUgY29udGludWUgdG8gYmUgc3VwcG9ydGVkOyBDUHl0aG9uIGRlY2xhcmVkIGZyZWUtdGhyZWFkaW5nIHN1cHBvcnRlZCBzdGFydGluZyB3aXRoIFB5dGhvbiAzLjE0KS4gWyMmIzgyMDM7NTg2NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzU4NjUpCi0gRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMy43LiBbIyYjODIwMzs1OTEyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTkxMikKLSBFeHRlbmQgcmFuZ2Ugb2Ygc3VwcG9ydGVkIHZlcnNpb25zIG9mIGBoYXNoYnJvd25gIG9wdGlvbmFsIGRlcGVuZGVuY3kgdG8gaW5jbHVkZSB2ZXJzaW9uIDAuMTcuIFsjJiM4MjAzOzU5NzNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81OTczKQotIFN1cHBvcnQgUHl0aG9uIDMuMTUuMGIxLiBbIyYjODIwMzs2MDE0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNjAxNCkKLSBgcHlvMy1mZmlgIGlzIG5vdyBgbm9fc3RkYC4gWyMmIzgyMDM7NjAyMl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYwMjIpCgojIyMjIyBBZGRlZAoKLSBBZGQgYFB5RXJyOjpzZXRfdHJhY2ViYWNrYCB0byBzZXQgdGhlIHRyYWNlYmFjayBvZiBhbiBleGNlcHRpb24gb2JqZWN0LiBbIyYjODIwMzs1MzQ5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTM0OSkKLSBBZGQgYFB5VW5pY29kZURlY29kZUVycm9yOjpuZXdfZXJyX2Zyb21fdXRmOGAgdG8gY3JlYXRlIGEgYFB5RXJyYCBmcm9tIGEgYHN0cjo6VXRmOEVycm9yYC4gWyMmIzgyMDM7NTY2OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzU2NjgpCi0gYGV4cGVyaW1lbnRhbC1pbnNwZWN0YDogaW1wbGVtZW50IGBJTlBVVF9UWVBFYCBhbmQgYE9VVFBVVF9UWVBFYCBvbiBvcHRpb25hbCB0aGlyZC1wYXJ0eSBjcmF0ZSBjb252ZXJzaW9ucy4gWyMmIzgyMDM7NTc3MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzU3NzApCi0gYGV4cGVyaW1lbnRhbC1pbnNwZWN0YDogaW5jbHVkZSBkb2MgY29tbWVudHMgaW4gZ2VuZXJhdGVkIHN0dWJzLiBbIyYjODIwMzs1NzgyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTc4MikKLSBBZGQgYHB5bzNfYnVpbGRfY29uZmlnOjpQeXRob25BYmlgLCBgcHlvM19idWlsZF9jb25maWc6OlB5dGhvbkFiaUtpbmRgLCBgcHlvM19idWlsZF9jb25maWc6OlB5dGhvbkFiaUJ1aWxkZXJgLCBgcHlvM19idWlsZF9jb25maWc6OkludGVycHJldGVyQ29uZmlnOjp0YXJnZXRfYWJpYCwgYW5kIGBweW8zX2J1aWxkX2NvbmZpZzo6SW50ZXJwcmV0ZXJDb25maWdCdWlsZGVyOjp0YXJnZXRfYWJpYC4gWyMmIzgyMDM7NTgwN10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzU4MDcpCi0gQWRkIGBCb3Jyb3dlZDo6Z2V0YCBhcyBhbiBlcXVpdmFsZW50IHRvIGBCb3VuZDo6Z2V0YCBhbmQgYFB5OjpnZXRgLiBbIyYjODIwMzs1ODQ5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTg0OSkKLSBBZGQgYFB5RnJhbWU6Om5ld2AsIGBQeVRyYWNlQmFjazo6bmV3YCwgYW5kIGBQeUZyYW1lTWV0aG9kczo6bGluZV9udW1iZXJgLiBbIyYjODIwMzs1ODU3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTg1NykKLSBBZGQgYFB5VW50eXBlZEJ1ZmZlcjo6b2JqYCB0byByZXRyaWV2ZSB0aGUgUHl0aG9uIG9iamVjdCBvd25pbmcgdGhlIGJ1ZmZlci4gWyMmIzgyMDM7NTg3MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzU4NzApCi0gQWRkIGBQeUNhcHN1bGU6Om5ld193aXRoX3ZhbHVlYCBhbmQgYFB5Q2Fwc3VsZTo6bmV3X3dpdGhfdmFsdWVfYW5kX2Rlc3RydWN0b3JgLiBbIyYjODIwMzs1ODgxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTg4MSkKLSBBZGQgYFB5RXJyOjpzZXRfY29udGV4dGAgYW5kIGBQeUVycjo6Y29udGV4dGAuIFsjJiM4MjAzOzU4ODddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81ODg3KQotIEFkZCBhIHNtYWxsIENMSSB0byBgcHlvMy1pbnRyb3NwZWN0aW9uYCB0byBnZW5lcmF0ZSBzdHVicy4gWyMmIzgyMDM7NTkwNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzU5MDQpCi0gQWRkIGBQeXRob246OnZlcnNpb25fc3RyYC4gWyMmIzgyMDM7NTkyMV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzU5MjEpCi0gQWRkIGBUcnlGcm9tPCZCb3VuZDxUPj5gIGZvciBgUHlSZWY8VD5gLCBgUHlSZWZNdXQ8VD5gLCBgUHlDbGFzc0d1YXJkPFQ+YCBhbmQgYFB5Q2xhc3NHdWFyZE11dDxUPmAuIFsjJiM4MjAzOzU5MjJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81OTIyKQotIEFkZCBgRnJvbTwmQm91bmQ8VD4+YCBmb3IgYEJvdW5kPFQ+YCBhbmQgYFB5PFQ+YCBbIyYjODIwMzs1OTIyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTkyMikKLSBBZGQgYFB5RGljdE1ldGhvZHM6OnNldF9kZWZhdWx0YCBhbmQgYFB5RGljdE1ldGhvZHM6OnNldF9kZWZhdWx0X3JlZmAgdG8gYWxsb3cgYXRvbWljYWxseSBzZXR0aW5nIGRlZmF1bHQgdmFsdWVzIGluIGEgUHlEaWN0LiBbIyYjODIwMzs1OTU1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTk1NSkKLSBhZGQgYFB5RnJhbWVNZXRob2RzOjpvdXRlcnxjb2RlfHZhcnxidWlsdGluc3xnbG9iYWxzfGxvY2Fsc2AuIFsjJiM4MjAzOzU5NjddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81OTY3KQotIEFkZCBgRnJvbWAgY29udmVyc2lvbnMgZm9yIGBQeUVycmAgZnJvbSBgc3RkOjp0aW1lOjpUcnlGcm9tRmxvYXRTZWNzRXJyb3JgLCBgc3RkOjp0aW1lOjpTeXN0ZW1UaW1lRXJyb3JgLCBgc3RkOjpwYXRoOjpTdHJpcFByZWZpeEVycm9yYCwgYHN0ZDo6ZW52OjpKb2luUGF0aHNFcnJvcmAsIGBzdGQ6OmNoYXI6OlBhcnNlQ2hhckVycm9yYCwgYW5kIGBzdGQ6OmNoYXI6OkNoYXJUcnlGcm9tRXJyb3JgLiBbIyYjODIwMzs2MDAxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNjAwMSkKLSBBZGQgYHB5bzNfYnVpbGRfY29uZmlnOjpJbnRlcnByZXRlckNvbmZpZ0J1aWxkZXJgLiBbIyYjODIwMzs2MDM0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNjAzNCkKLSBBZGQgYFB5Q2Fwc3VsZTo6aW1wb3J0X3BvaW50ZXJgIFsjJiM4MjAzOzYwNjZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDY2KQotIEFkZCBgUHlDbGFzc0d1YXJkTWFwTXV0YC4gWyMmIzgyMDM7NjA3M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYwNzMpCi0gRXhwb3NlIGBQeUxpc3RNZXRob2RzOjpnZXRfaXRlbV91bmNoZWNrZWRgLCBgUHlUdXBsZU1ldGhvZHM6OmdldF9pdGVtX3VuY2hlY2tlZGAsIGFuZCBgUHlUdXBsZU1ldGhvZHM6OmdldF9ib3Jyb3dlZF9pdGVtX3VuY2hlY2tlZGAgb24gYWJpMy4gWyMmIzgyMDM7NjA3NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYwNzUpCi0gQWRkIGBQeUNsYXNzR3VhcmRNYXBTdXBlcmAuIFsjJiM4MjAzOzYxMDRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MTA0KQotIEFkZCBgUHlDbGFzc0d1YXJkYCBhbmQgYFB5Q2xhc3NHdWFyZE11dGAgdG8gYHB5bzM6OnByZWx1ZGVgLiBbIyYjODIwMzs2MTEyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNjExMikKLSBBZGQgYERlYnVnYCBpbXBscyBmb3IgYFB5Q2xhc3NHdWFyZGAgYW5kIGBQeUNsYXNzR3VhcmRNdXRgLiBbIyYjODIwMzs2MTEyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNjExMikKLSBFbmFibGUgZXh0ZW5kaW5nIGBQeURhdGVUaW1lYCwgYFB5RGF0ZWAsIGBQeVRpbWVgLCBgUHlEZWx0YWAgYW5kIGBQeVR6SW5mb2Agb24gYWJpMyB3aXRoIHB5dGhvbiAzLjEyKy4gWyMmIzgyMDM7NjExNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYxMTUpCi0gRXhwb3NlIGBQeUZ1bmN0aW9uYCBhdmFpbGFibGUgb24gYWJpMy4gWyMmIzgyMDM7NjExN10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYxMTcpCi0gRkZJIGRlZmluaXRpb25zOgogIC0gQWRkZWQgRkZJIGRlZmluaXRpb25zIGBQeVVuc3RhYmxlX09iamVjdF9Jc1VuaXF1ZWx5UmVmZXJlbmNlZGAsIGBQeVVuc3RhYmxlX09iamVjdF9Jc1VuaXF1ZWx5UmVmZXJlbmNlZFRlbXBvcmFyeWAsIGBQeVVuc3RhYmxlX0VuYWJsZVRyeUluY3JlZmAsIGFuZCBgUHlVbnN0YWJsZV9UcnlJbmNyZWZgLiBbIyYjODIwMzs1ODI4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTgyOCkKICAtIEFkZCBGRkkgZGVmaW5pdGlvbnMgYGZmaTo6UHlFcnJfR2V0SGFuZGxlZEV4Y2VwdGlvbmAgYW5kIGBmZmk6OlB5RXJyX1NldEhhbmRsZWRFeGNlcHRpb25gLiBbIyYjODIwMzs1ODg3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTg4NykKICAtIEFkZCBGRkkgZGVmaW5pdGlvbiBgUHlfSEFTSF9TSVBIQVNIMTNgLiBbIyYjODIwMzs1ODkxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTg5MSkKICAtIEFkZCBGRkkgZGVmaW5pdGlvbiBgUHlTdHJ1Y3RTZXF1ZW5jZV9Vbm5hbWVkRmllbGRgIGNvbnN0YW50IG9uIFB5dGhvbiAzLjkgYW5kIHVwIChvciAzLjExIHdpdGggYWJpMyBmZWF0dXJlcykuIFsjJiM4MjAzOzU4OTJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81ODkyKQogIC0gQWRkIEZGSSBkZWZpbml0aW9ucyBgUHlVbnN0YWJsZV9JbnRlcnByZXRlckZyYW1lX0dldENvZGVgLCBgUHlVbnN0YWJsZV9JbnRlcnByZXRlckZyYW1lX0dldExhc3RpYCwgYFB5VW5zdGFibGVfSW50ZXJwcmV0ZXJGcmFtZV9HZXRMaW5lYCwgYW5kIGBQeVVuc3RhYmxlX0V4ZWN1dGFibGVLaW5kc2AuIFsjJiM4MjAzOzU5MzJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81OTMyKQogIC0gQWRkIEZGSSBkZWZpbml0aW9ucyBgUHlNYXJzaGFsX1dyaXRlTG9uZ1RvRmlsZWAsIGBQeU1hcnNoYWxfV3JpdGVPYmplY3RUb0ZpbGVgLCBgUHlNYXJzaGFsX1JlYWRMb25nRnJvbUZpbGVgLCBgUHlNYXJzaGFsX1JlYWRTaG9ydEZyb21GaWxlYCwgYFB5TWFyc2hhbF9SZWFkT2JqZWN0RnJvbUZpbGVgLCBhbmQgYFB5TWFyc2hhbF9SZWFkTGFzdE9iamVjdEZyb21GaWxlYC4gWyMmIzgyMDM7NTkzNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzU5MzQpCiAgLSBBZGQgRkZJIGRlZmluaXRpb25zIGBQeU9iamVjdF9HZXRBSXRlcmAsIGBQeUFJdGVyX0NoZWNrYCwgYFB5TWFwcGluZ19IYXNLZXlXaXRoRXJyb3JgLCBgUHlNYXBwaW5nX0hhc0tleVN0cmluZ1dpdGhFcnJvcmAsIGBQeU1hcHBpbmdfR2V0T3B0aW9uYWxJdGVtYCwgYFB5TWFwcGluZ19HZXRPcHRpb25hbEl0ZW1TdHJpbmdgLCBgUHlTZXF1ZW5jZV9JVEVNYCwgYFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRWAsIGBQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU1gLCBhbmQgYFB5U2VxdWVuY2VfRmFzdF9JVEVNU2AuIFsjJiM4MjAzOzU5NDJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81OTQyKQogIC0gQWRkIEZGSSBkZWZpbml0aW9uIGBjb21wYXQ6OlB5T2JqZWN0X0hhc0F0dHJXaXRoRXJyb3JgLiBbIyYjODIwMzs1OTQ0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTk0NCkKICAtIEFkZCBGRkkgZGVmaW5pdGlvbnMgYFB5RGljdF9TZXREZWZhdWx0YCwgYFB5RGljdF9TZXREZWZhdWx0UmVmYCwgYFB5RGljdF9Db250YWluc1N0cmluZ2AsIGBQeURpY3RfUG9wYCwgYFB5RGljdF9Qb3BTdHJpbmdgLCBgUHlEaWN0X0NsZWFyV2F0Y2hlcmAsIGBQeURpY3RfV2F0Y2hgLCBgUHlEaWN0X1Vud2F0Y2hgLCBhbmQgYFB5RnJvemVuRGljdF9OZXdgLiBbIyYjODIwMzs1OTQ3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTk0NykKICAtIEFkZCBGRkkgZGVmaW5pdGlvbnMgYFB5RGF0ZV9Gcm9tRGF0ZWAsIGBQeURhdGVUaW1lX0Zyb21EYXRlQW5kVGltZWAsIGBQeURhdGVUaW1lX0Zyb21EYXRlQW5kVGltZUFuZEZvbGRgLCBgUHlUaW1lX0Zyb21UaW1lYCwgYFB5VGltZV9Gcm9tVGltZUFuZEZvbGRgLCBhbmQgYFB5RGVsdGFfRnJvbURTVWAuIFsjJiM4MjAzOzU5NDldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81OTQ5KQogIC0gQWRkIEZGSSBkZWZpbml0aW9ucyBgUHlEaWN0X1NldERlZmF1bHRSZWZgIGFuZCBgY29tcGF0OjpQeURpY3RfU2V0RGVmYXVsdFJlZmAuIFsjJiM4MjAzOzU5NTVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81OTU1KQogICAgdmVyc2lvbnMuCiAgLSBBZGQgRkZJIGRlZmluaXRpb25zIGZvciBub24tbGltaXRlZCBBUEkgaGVhZGVyIGBjcHl0aG9uL2J5dGVhcnJheW9iamVjdC5oYC4gWyMmIzgyMDM7NTk2Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzU5NjYpCiAgLSBBZGQgRkZJIGRlZmluaXRpb25zIGZvciBub24tbGltaXRlZCBBUEkgdmVyc2lvbiBvZiBgUHlDZWxsT2JqZWN0YCBhbmQgYXNzb2NpYXRlZCBmdW5jdGlvbnMuIFsjJiM4MjAzOzU5NzhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81OTc4KQogIC0gQWRkIEZGSSBkZWZpbml0aW9uIGBQeUVycl9XYXJuRXhwbGljaXRPYmplY3RgLiBbIyYjODIwMzs1OTc5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTk3OSkKICAtIEFkZCBGRkkgZGVmaW5pdGlvbiBgUHlUcmFjZWJhY2tPYmplY3RgLiBbIyYjODIwMzs1OTgwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTk4MCkKICAtIEFkZCBGRkkgZGVmaW5pdGlvbiBgUHlUdXBsZV9Gcm9tQXJyYXlgIG9uIDMuMTUrLiBbIyYjODIwMzs1OTkwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTk5MCkKICAtIEFkZCBGRkkgZGVmaW5pdGlvbnMgZm9yIHRoZSBQRVAgODIwIFB5U2xvdCBDIEFQSS4gWyMmIzgyMDM7NjAxNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYwMTQpCiAgLSBBZGQgRkZJIGRlZmluaXRpb25zIGZvciB0aGUgY3JpdGljYWwgc2VjdGlvbiBBUEkgaW4gdGhlIGxpbWl0ZWQgQVBJIG9uIFB5dGhvbiAzLjE1CiAgICBhbmQgbmV3ZXIuIFsjJiM4MjAzOzYwMTRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDE0KQogIC0gQWRkIEZGSSBkZWZpbml0aW9ucyBmb3IgW1BFUCA3NTddKGh0dHBzOi8vcGVwcy5weXRob24ub3JnL3BlcC0wNzU3LykgYFB5TG9uZ2AgaW1wb3J0IC8gZXhwb3J0IEFQSSBvbiBQeXRob24gMy4xNCsuIFsjJiM4MjAzOzYwMTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDE2KQogIC0gQWRkIEZGSSBkZWZpbml0aW9ucyBgUHlFdmFsX1NldFByb2ZpbGVBbGxUaHJlYWRzYCBhbmQgYFB5RXZhbF9TZXRUcmFjZUFsbFRocmVhZHNgLiBbIyYjODIwMzs2MDM4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNjAzOCkKICAtIEFkZCBGRkkgZGVmaW5pdGlvbiBgUHlfVU5JQ09ERV9UT0RFQ0lNQUxgLiBbIyYjODIwMzs2MDQxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNjA0MSkKCiMjIyMjIENoYW5nZWQKCi0gQ2hhbmdlIGV4Y2VwdGlvbiBlbnJpY2htZW50IG9uIGAjW3B5ZnVuY3Rpb25dYCBhcmd1bWVudCBleHRyYWN0aW9uIGVycm9yIHRvIHVzZSBgUHlFcnI6OmFkZF9ub3RlYCBpbnN0ZWFkIG9mIHJlcGxhY2luZyBgVHlwZUVycm9yYCBpbnN0YW5jZXMuIFsjJiM4MjAzOzUzNDldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81MzQ5KQotIERlcHJlY2F0ZSBzdXBlci1jbGFzcyBpbml0aWFsaXphdGlvbiB2aWEgdHVwbGVzLiBbIyYjODIwMzs1NzQxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTc0MSkKLSBDaGFuZ2UgbW9kdWxlIGluaXRpYWxpemF0aW9uIHVzZXMgdGhlIFB5TW9kRXhwb3J0IGFuZCBQeUFCSUluZm8gQVBJcyBvbiBQeXRob24gMy4xNSsuIFsjJiM4MjAzOzU3NTNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81NzUzKQotIERlcHJlY2F0ZSBgUHk8VD46OmdldF9yZWZjbnRgIGFuZCBgUHlBbnlNZXRob2RzOjpnZXRfcmVmY250YCBpbiBmYXZvciBvZiBgcHlvMzo6ZmZpOjpQeV9SRUZDTlQob2JqLmFzX3B0cigpKWAuIFsjJiM4MjAzOzU3OTddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81Nzk3KQotIENoYW5nZSBgUHlFbnZpcm9ubWVudEVycm9yYCwgYFB5SU9FcnJvcmAsIGFuZCBgUHlXaW5kb3dzRXJyb3JgIHRvIGJlIHR5cGUgYWxpYXNlcyBvZiBgUHlPU0Vycm9yYCAoYXMgaXMgdGhlIGNhc2UgaW4gUHl0aG9uIHNpbmNlIDMuMykuIFsjJiM4MjAzOzU4MDNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81ODAzKQotIENoYW5nZSBgcHlvM19idWlsZF9jb25maWc6OkludGVycHJldGVyQ29uZmlnOjpmcm9tX2ludGVycHJldGVyYCB0byByZXF1aXJlIGFuIGFkZGl0aW9uYWwgYHN0YWJsZV9hYmlfdmVyc2lvbmAgYXJndW1lbnQuIFRoZSBvbGQgYmVoYXZpb3IgaXMgdGhlIHNhbWUgYXMgcGFzc2luZyBgTm9uZWAuIFsjJiM4MjAzOzU4MDddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81ODA3KQotIENoYW5nZSBgUHlMaXN0OjpuZXdgIHRvIG5vIGxvbmdlciBoYXZlIGBFeGFjdFNpemVJdGVyYXRvcmAgYm91bmQuIFsjJiM4MjAzOzU4MzBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81ODMwKQotIGBleHBlcmltZW50YWwtaW5zcGVjdGA6IGVtaXQgYCNbY2xhc3NhdHRyaWJ1dGVdYCBhcyBwbGFpbiBQeXRob24gY2xhc3MgYXR0cmlidXRlcyBhbmQgbm90IGZ1bmN0aW9ucyBhbm5vdGF0ZWQgd2l0aCBgQGNsYXNzYXR0cmlidXRlYCBhbmQgYEBwcm9wZXJ0eWAuIFsjJiM4MjAzOzU4MzldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81ODM5KQotIGBleHBlcmltZW50YWwtaW5zcGVjdGA6IHVzZSBgb2JqZWN0YCBhcyB0aGUgaW5wdXQgYW5ub3RhdGlvbiB0eXBlIG9mIG1hZ2ljIG1ldGhvZHMgdGhhdCByZXR1cm4gYE5vbkltcGxlbWVudGVkYCBpZiB0aGUgaW5wdXQgdmFsdWUgaXMgbm90IG9mIHRoZSBjb3JyZWN0IHR5cGUuIFsjJiM4MjAzOzU4NDFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81ODQxKQotIERlcHJlY2F0ZSBgcHlvMy1idWlsZC1jb25maWcvcmVzb2x2ZS1jb25maWdgIGZlYXR1cmUuIFsjJiM4MjAzOzU4NjJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81ODYyKQotIENoYW5nZSBgcHlvMy1mZmlgIHRvIHVzZSByYXctZHlsaWIgZm9yIFdpbmRvd3MgbGlua2luZy4gWyMmIzgyMDM7NTg2Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzU4NjYpCi0gRGVwcmVjYXRlIGBnZW5lcmF0ZS1pbXBvcnQtbGliYCBmZWF0dXJlLiBbIyYjODIwMzs1ODY2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTg2NikKLSBBbGxvdyB6ZXJvLXNpemVkIHR5cGVzIGluIGBQeUNhcHN1bGU6Om5ld2AuIFsjJiM4MjAzOzU4ODldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81ODg5KQotIGBQeURhdGU6OmZyb21fdGltZXN0YW1wYCBhcmd1bWVudCBpcyBub3cgYSBgZjY0YCAodGhlIFB5dGhvbiBBUEkgZXhwZWN0cyBhIGZsb2F0IGFuZCBub3QgYW4gaW50ZWdlcikgWyMmIzgyMDM7NTg5Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzU4OTYpCi0gYGV4cGVyaW1lbnRhbC1pbnNwZWN0YDogQ2hhbmdlIGBQYXRoQnVmOjpleHRyYWN0YCBpbnB1dCB0eXBlIGhpbnQgZnJvbSBgc3RyIHwgb3MuUGF0aExpa2VgIHRvIGBzdHIgfCBvcy5QYXRoTGlrZVtzdHJdYCBbIyYjODIwMzs1ODk3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTg5NykKLSBSZW1vdmUgbGlmZXRpbWUgZnJvbSBgUHl0aG9uVmVyc2lvbkluZm9gLiBbIyYjODIwMzs1OTIxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTkyMSkKLSBSZW1vdmUgcmVkdW5kYW50IHR5cGUgY2hlY2tzIGZvciBtZXRob2RzIHdoZXJlIENQeXRob24gZ3VhcmFudGVlcyB0aGUgdHlwZSBvZiBgc2VsZmAuIFsjJiM4MjAzOzU5MzBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81OTMwKQotIEVsaWRlIHRlbXBvcmFyeSByZWZlcmVuY2UgY291bnQgY3ljbGVzIGluc2lkZSBgUHlBbnlNZXRob2RzOjpjYWxsYCwgYFB5QW55TWV0aG9kczo6Y2FsbDFgIGFuZCBgUHlBbnlNZXRob2RzOjpjYWxsX21ldGhvZDFgIGZvciBhcmd1bWVudHMgcGFzc2VkIGFzIFJ1c3QgdHVwbGVzIGNvbnRhaW5pbmcgYm9ycm93ZWQgcmVmZXJlbmNlcyB0byBQeXRob24gb2JqZWN0cy4gWyMmIzgyMDM7NTk0MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzU5NDEpCi0gQWxsb3cgdHlwZSBhbm5vdGF0aW9ucyB0byBiZSB1c2VkIGluIGAjW3B5bzMoc2lnbmF0dXJlID0gLi4uKV1gIHdoZW4gYGV4cGVyaW1lbnRhbC1pbnNwZWN0YCBmZWF0dXJlIGlzIG5vdCBlbmFibGVkICh0aGV5IHdpbGwgYmUgaWdub3JlZCkuIFsjJiM4MjAzOzU5OTldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81OTk5KQotIGBweW8zLWZmaWAgd2lsbCBub3cgcmVidWlsZCB3aGVuIHRoZSBQeXRob24gdmlydHVhbCBlbnZpcm9ubWVudCBjaGFuZ2VzIGluLXBsYWNlLiBbIyYjODIwMzs2MDA4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNjAwOCkKLSBDaGFuZ2UgbW9kdWxlIGluaXRpYWxpemF0aW9uIG9uIDMuMTUrIHRvIHVzZSBQRVAgODIwIFB5U2xvdCBBUEkgaW50ZXJuYWxseS4gWyMmIzgyMDM7NjAxNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYwMTQpCi0gRGVwcmVjYXRlIGRpcmVjdCBhY2Nlc3MgdG8gYWxsIGBweW8zX2J1aWxkX2NvbmZpZzo6SW50ZXJwcmV0ZXJDb25maWdgIGZpZWxkczsgZ2V0dGVyIG1ldGhvZHMgaGF2ZSBiZWVuIGFkZGVkIGFzIHJlcGxhY2VtZW50cy4gWyMmIzgyMDM7NjAzNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYwMzQpCi0gRkZJIGRlZmluaXRpb25zIGBfUHlDb2RlX0dldEV4dHJhYCwgYF9QeUNvZGVfU2V0RXh0cmFgLCBhbmQgYF9QeUV2YWxfUmVxdWVzdENvZGVFeHRyYUluZGV4YCBoYXZlIGJlZW4gdXBkYXRlZCB0byBgUHlVbnN0YWJsZV9Db2RlX0dldEV4dHJhYCwgYFB5VW5zdGFibGVfQ29kZV9TZXRFeHRyYWAsIGFuZCBgUHlVbnN0YWJsZV9FdmFsX1JlcXVlc3RDb2RlRXh0cmFJbmRleGAuIFsjJiM4MjAzOzYwMzhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDM4KQotIENoYW5nZSBgUHlDYXBzdWxlOjppbXBvcnRgIHRvIHJldHVybiBhbiBlcnJvciBpZiB0aGUgcG9pbnRlciBpcyBub3QgcHJvcGVybHkgYWxpZ25lZC4gWyMmIzgyMDM7NjA2Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYwNjYpCi0gQ2hhbmdlIGBQeUNsYXNzR3VhcmRNYXBgIHRvIGJlIG9ubHkgZm9yIGBQeUNsYXNzR3VhcmQ6Om1hcGAgYW5kIHJldHVybiBgUHlDbGFzc0d1YXJkTWFwTXV0YCBmcm9tIGBQeUNsYXNzR3VhcmRNdXQ6Om1hcGAuIFsjJiM4MjAzOzYwNzNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDczKQotIENoYW5nZSBgd2l0aF9jcml0aWNhbF9zZWN0aW9uX211dGV4MmAgY2xvc3VyZSB0byB0YWtlIGBPcHRpb248RW50ZXJlZENyaXRpY2FsU2VjdGlvbj5gIGluc3RlYWQgb2YgYEVudGVyZWRDcml0aWNhbFNlY3Rpb25gIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQuIFsjJiM4MjAzOzYwOThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDk4KQotIGBQeUNsYXNzR3VhcmRNdXQ6OmFzX3N1cGVyYCBub3cgcmV0dXJucyBgUHlDbGFzc0d1YXJkTXV0U3VwZXJgLiBbIyYjODIwMzs2MTA0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNjEwNCkKLSBgZXhwZXJpbWVudGFsLWluc3BlY3RgOiBHZW5lcmF0ZSByZWxhdGl2ZSBpbXBvcnRzIGluc3RlYWQgb2YgYWJzb2x1dGUgb25lcyAodXNlZnVsIGlmIHRoZSBzdHVicyBhcmUgbm90IGRlc2NyaWJpbmcgYSByb290IHBhY2thZ2UpIFsjJiM4MjAzOzYwOTddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDk3KQoKIyMjIyMgUmVtb3ZlZAoKLSBSZW1vdmVkIHRoZSBicm9rZW4gKGFuZCB1bmZpeGFibGUpIGltcGxlbWVudGF0aW9ucyBvZiBgRnJvbTxzdHI6OlV0ZjhFcnJvcj5gLCBgRnJvbTxzdHJpbmc6OkZyb21VdGYxNkVycm9yPmAsIGFuZCBgRnJvbTxjaGFyOjpEZWNvZGVVdGYxNkVycm9yPmAgZm9yIGBQeUVycmAuIFsjJiM4MjAzOzU2NjhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81NjY4KQotIFJlbW92ZSBgUHlfVFJBQ0VfUkVGU2Agc3VwcG9ydCAodW5zdXBwb3J0ZWQgZnJvbSBQeXRob24gMy4xMykuIFsjJiM4MjAzOzU4MjRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81ODI0KQotIGBleHBlcmltZW50YWwtaW5zcGVjdGA6IFJlbW92ZSB0aGUgYFR5cGVJbmZvYCBlbnVtIGFuZCB0aGUgYEZyb21QeU9iamVjdDo6dHlwZV9pbnB1dGAgYW5kIGBJbnRvUHlPYmplY3Q6OnR5cGVfb3V0cHV0YCBmdW5jdGlvbnMuIFRoZXkgYXJlIHJlcGxhY2VkIGJ5IHRoZSBgUHlTdGF0aWNFeHByYCBlbnVtIGFuZCB0aGUgYEZyb21QeU9iamVjdDo6SU5QVVRfVFlQRWAgYW5kIHRoZSBgSW50b1B5T2JqZWN0OjpPVVRQVVRfVFlQRWAgYXNzb2NpYXRlZCBjb25zdGFudHMuIFsjJiM4MjAzOzU4OTNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81ODkzKQotIFJlbW92ZSBhbGwgZnVuY3Rpb25hbGl0eSBkZXByZWNhdGVkIGluIFB5TzMgMC4yNy4gWyMmIzgyMDM7NjA2OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYwNjgpCi0gRkZJIGRlZmluaXRpb25zOgogIC0gUmVtb3ZlIHByaXZhdGUgRkZJIGRlZmluaXRpb25zIGBfUHlTdGFja19Bc0RpY3RgLCBgX1B5T2JqZWN0X0NhbGxOb0FyZ2AsIGBfUHlPYmplY3RfRmFzdENhbGxgLCBgX1B5T2JqZWN0X0Zhc3RDYWxsVHN0YXRlYC4gYF9QeU9iamVjdF9WZWN0b3JjYWxsVHN0YXRlYCwgYF9QeU9iamVjdF9NYWtlVHBDYWxsYCwgYF9QeV9DaGVja0Z1bmN0aW9uUmVzdWx0YCwgYF9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVRgLCBgX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVRgLCBhbmQgYF9QeVNlcXVlbmNlX0l0ZXJTZWFyY2hgLiBbIyYjODIwMzs1OTQyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTk0MikKICAtIFJlbW92ZSBGRkkgZGVmaW5pdGlvbnMgYFBZX0lURVJTRUFSQ0hfQ09VTlRgLCBgUFlfSVRFUlNFQVJDSF9JTkRFWGAsIGFuZCBgUFlfSVRFUlNFQVJDSF9DT05UQUlOU2AuIFsjJiM4MjAzOzU5NDJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC81OTQyKQogIC0gUmVtb3ZlZCBwcml2YXRlIEZGSSBkZWZpbml0aW9ucyBgX1B5U2V0X05leHRFbnRyeWAsIGFuZCBgX1B5TG9uZ19OdW1CaXRzYC4gWyMmIzgyMDM7NTk0Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzU5NDYpCiAgLSBSZW1vdmUgcHJpdmF0ZSBGRkkgZGVmaW5pdGlvbnMgYF9QeUZsb2F0X0NBU1RgLCBgX1B5UnVuX1NpbXBsZUZpbGVPYmplY3RgLCBgX1B5UnVuX0FueUZpbGVPYmplY3RgLCBgX1B5UnVuX0ludGVyYWN0aXZlTG9vcE9iamVjdGAsIGBfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3lgLCBgX1B5VW5pY29kZV9DT01QQUNUX0RBVEFgLCBgX1B5VW5pY29kZV9OT05DT01QQUNUX0RBVEFgLCBgX1B5VW5pY29kZV9SZWFkeWAsIGFuZCBgX1B5X0hhc2hCeXRlc2AuIFsjJiM4MjAzOzYwMzZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDM2KQogIC0gUmVtb3ZlIHByaXZhdGUgRkZJIGRlZmluaXRpb24gYF9QeUV2YWxfRXZhbEZyYW1lRGVmYXVsdGAuIFsjJiM4MjAzOzYwMzhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDM4KQogIC0gUmVtb3ZlIHByaXZhdGUgRkZJIGRlZmluaXRpb24gYF9QeUJ5dGVzX1Jlc2l6ZWAuIFsjJiM4MjAzOzYwNDJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDQyKQogIC0gUmVtb3ZlIHByaXZhdGUgRkZJIGRlZmluaXRpb25zIGBfUHlFcnJfQmFkSW50ZXJuYWxDYWxsYCwgYF9QeV9HZXRBbGxvY2F0ZWRCbG9ja3NgLCBgX1B5T2JqZWN0X0dDX01hbGxvY2AsIGBfUHlPYmplY3RfR0NfQ2FsbG9jYCwgYW5kIGBfUHlMb25nX051bUJpdHNgLiBbIyYjODIwMzs2MDUzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNjA1MykKICAtIFJlbW92ZSBgRGVmYXVsdGAgZm9yIEZGSSBkZWZpbml0aW9ucyBgUHlIZWFwVHlwZU9iamVjdGAsIGBQeU9iamVjdEFyZW5hQWxsb2NhdG9yYCwgYFB5SGFzaF9GdW5jRGVmYCwgYW5kIGBQeVR5cGVfU3BlY2AuIFsjJiM4MjAzOzYwOTNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDkzKQoKIyMjIyMgRml4ZWQKCi0gRml4IGBhZGRfbGlicHl0aG9uX3JwYXRoX2xpbmtfYXJnc2AgZW1pdHRpbmcgcnBhdGggbGluayBhcmdzIG9uIHdhc20gdGFyZ2V0cyB3aGljaCBkb24ndCBzdXBwb3J0IHJwYXRoLiBbIyYjODIwMzs1NDQ3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTQ0NykKLSBGaXggYEZyb208c3RyaW5nOjpGcm9tVXRmOEVycm9yPmAgYW5kIGBGcm9tPGZmaTo6SW50b1N0cmluZ0Vycm9yPmAgZm9yIGBQeUVycmAgcHJvZHVjaW5nIGBUeXBlRXJyb3JgIGR1ZSB0byBicm9rZW4gaW50ZXJuYWxzLiBbIyYjODIwMzs1NjY4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTY2OCkKLSBGaXggYFB5TWFwcGluZ1Byb3h5Ojppc190eXBlX29mYCBhbmQgYFB5V2Vha3JlZlJlZmVyZW5jZTo6aXNfdHlwZV9vZmAgbm90IGFjY2VwdGluZyBzdWJjbGFzc2VzLiBbIyYjODIwMzs1ODgzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTg4MykKLSBGaXggYGdldGF0dHJfb3B0YCBub3QgdHJlYXRpbmcgYEF0dHJpYnV0ZUVycm9yYCBzdWJjbGFzc2VzIGFzIG1pc3NpbmcgYXR0cmlidXRlcyBvbiBQeXRob24gPCAzLjEzLiBbIyYjODIwMzs1OTg1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTk4NSkKLSBGaXggY29tcGlsYXRpb24gZXJyb3IgZm9yIGAjW25ld11gIHJldHVybiB0eXBlcyB0aGF0IGNvbnRhaW4gbmFtZWQgbGlmZXRpbWVzLiBbIyYjODIwMzs1OTk4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTk5OCkKLSBGaXggbWlzc2luZyBgJ3N0YXRpY2AgYm91bmQgb24gYFB5Q2Fwc3VsZWAgZGVzdHJ1Y3RvcnMuIFsjJiM4MjAzOzYwNDldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDQ5KQotIEZpeCBjYXNlIHdoZXJlIGBQeUZyYW1lOjpidWlsdGluc2AgY291bGQgcmV0dXJuIGEgbm9uLWRpY3Qgb2JqZWN0LiBbIyYjODIwMzs2MDUyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNjA1MikKLSBGaXggdHlwZSBjb25mdXNpb24gd2hlbiByZXR1cm5pbmcgYSBgI1tweWNsYXNzXWAgZnJvbSBhIGRpZmZlcmVudCBweWNsYXNzJyBgI1tuZXddYCBtZXRob2QuIFsjJiM4MjAzOzYwNjJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDYyKQotIEZpeCBzb3VuZG5lc3MgaXNzdWUgY2F1c2VkIGJ5IHZhcmlhbmNlIGluIGBQeUNsYXNzR3VhcmRNYXBgIGJ5IHNwbGl0dGluZyBvZmYgdGhlIG11dGFibGUgdmFyaWFudC4gWyMmIzgyMDM7NjA3M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYwNzMpCi0gRml4IG5vbmRldGVybWluaXN0aWMgSlNPTiBtZXRhZGF0YSBlbWl0dGVkIGJ5IHRoZSBgZXhwZXJpbWVudGFsLWluc3BlY3RgIHByb2MgbWFjcm9zICh0byBlbmFibGUgcmVwcm9kdWNpYmxlIGJ1aWxkcykuIFsjJiM4MjAzOzYwNzZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDc2KQotIEZpeCBVQiBpbiBgUHlFdmFsX1Jlc3RvcmVUaHJlYWRgIHdoZW4gdGhlIGludGVycHJldGVyIGlzIHNodXR0aW5nIGRvd24gb24gUHl0aG9uIDMuMTMgYW5kIG9sZGVyIChoYW5nIHRoZSB0aHJlYWQgaW5zdGVhZCBvZiBhbGxvd2luZyBgcHRocmVhZF9leGl0YCB0byBqdW1wIGFjcm9zcyBSdXN0IGZyYW1lcykuIFsjJiM4MjAzOzYwODVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDg1KQotIEZpeCBwb3NzaWJsZSBvdXQgb2YgYm91bmRzIHJlYWQgaW4gYEJvdW5kTGlzdEl0ZXJhdG9yYCBhbmQgYEJvdW5kVHVwbGVJdGVyYXRvcmAncyBgbnRoYCBhbmQgYG50aF9iYWNrYCBpbXBsZW1lbnRhdGlvbnMuIFsjJiM4MjAzOzYwODZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDg2KQotIEZpeCBgQm91bmRMaXN0SXRlcmF0b3JgIGFuZCBgQm91bmRUdXBsZUl0ZXJhdG9yYCBub3QgYmVpbmcgZXhoYXVzdGVkIHdoZW4gYG50aGAgb3IgYG50aF9iYWNrYCBpcyBjYWxsZWQgd2l0aCBOIGxhcmdlciB0aGFuIHRoZSByZW1haW5pbmcgY291bnQgb2YgaXRlbXMuIFsjJiM4MjAzOzYwODZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDg2KQotIEZpeCBtaXNzaW5nIGBTeW5jYCBib3VuZCBvbiBjbG9zdXJlIHR5cGUgaW4gYFB5Q0Z1bmN0aW9uOjpuZXdfY2xvc3VyZWAuIFsjJiM4MjAzOzYwOTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDk2KQotIEZpeCBzb3VuZG5lc3MgaXNzdWUgY2F1c2VkIGJ5IGV4cG9zaW5nIGEgbXV0YWJsZSByZWZlcmVuY2UgZnJvbSBgUHlDbGFzc0d1YXJkTXV0Ojphc19zdXBlcmAgYnkgbW92aW5nIGludG8gYFB5Q2xhc3NHdWFyZE11dFN1cGVyYC4gWyMmIzgyMDM7NjEwNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYxMDQpCi0gRkZJIGRlZmluaXRpb25zOgogIC0gRml4IG1pc3NpbmcgRkZJIGRlZmluaXRpb24gZm9yIGBQeVR5cGVPYmplY3QudHBfdmVyc2lvbnNfdXNlZGAgb24gUHl0aG9uIDMuMTMgYW5kIG5ld2VyLiBbIyYjODIwMzs1OTE3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vUHlPMy9weW8zL3B1bGwvNTkxNykKICAtIE1hcmsgRkZJIGRlZmluaXRpb25zIG5vIGxvbmdlciBhdmFpbGFibGUgb24gMy4xMSBhbmQgdXA6IGBQeVVuaWNvZGVfRW5jb2RlYCwgYFB5VW5pY29kZV9FbmNvZGVBU0NJSWAsIGBQeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcGAsIGBQeVVuaWNvZGVfRW5jb2RlRGVjaW1hbGAsIGBQeVVuaWNvZGVfRW5jb2RlTGF0aW4xYCwgYFB5VW5pY29kZV9FbmNvZGVSYXdVbmljb2RlRXNjYXBlYCwgYFB5VW5pY29kZV9FbmNvZGVVVEY3YCwgYFB5VW5pY29kZV9FbmNvZGVVVEY4YCwgYFB5VW5pY29kZV9FbmNvZGVVVEYxNmAsIGBQeVVuaWNvZGVfRW5jb2RlVVRGMzJgLCBgUHlVbmljb2RlX0VuY29kZVVuaWNvZGVFc2NhcGVgLCBgUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxUb0FTQ0lJYCwgYW5kIGBQeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcGAuIFsjJiM4MjAzOzYwNDFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDQxKQogIC0gTWFyayBGRkkgZGVmaW5pdGlvbiBgUHlVbmljb2RlX0NsZWFyRnJlZUxpc3RgIG5vIGxvbmdlciBhdmFpbGFibGUgb24gMy45IGFuZCB1cC4gWyMmIzgyMDM7NjA0MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYwNDEpCiAgLSBGaXggRkZJIGRlZmluaXRpb24gYFB5RXJyX1NldEludGVycnVwdEV4YCBtaXNzaW5nIGBjX2ludGAgcmV0dXJuIHR5cGUuIFsjJiM4MjAzOzYwNDNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9QeU8zL3B5bzMvcHVsbC82MDQzKQogIC0gRml4IHJldHVybiB0eXBlIG9mIEZGSSBkZWZpbml0aW9uIGBQeUJ1ZmZlcl9TaXplRnJvbUZvcm1hdGAgb24gUHl0aG9uIDMuOCAod2FzIGNoYW5nZWQgZnJvbSBgY19pbnRgIHRvIGBQeV9zc2l6ZV90YCBvbiBQeXRob24gMy45KS4gWyMmIzgyMDM7NjA5MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYwOTApCiAgLSBGaXggcmV0dXJuIHR5cGUgb2YgRkZJIGRlZmluaXRpb24gYFB5VW5pY29kZV9UYWlsbWF0Y2hgIG9uIFB5UHkgKGlzIGBjX2ludGAsIHVubGlrZSBDUHl0aG9uKS4gWyMmIzgyMDM7NjA5MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL1B5TzMvcHlvMy9wdWxsLzYwOTApCgo8L2RldGFpbHM+CgotLS0KCiMjIyBDb25maWd1cmF0aW9uCgrwn5OFICoqU2NoZWR1bGUqKjogKFVUQykKCi0gQnJhbmNoIGNyZWF0aW9uCiAgLSBBdCBhbnkgdGltZSAobm8gc2NoZWR1bGUgZGVmaW5lZCkKLSBBdXRvbWVyZ2UKICAtIEF0IGFueSB0aW1lIChubyBzY2hlZHVsZSBkZWZpbmVkKQoK8J+apiAqKkF1dG9tZXJnZSoqOiBEaXNhYmxlZCBieSBjb25maWcuIFBsZWFzZSBtZXJnZSB0aGlzIG1hbnVhbGx5IG9uY2UgeW91IGFyZSBzYXRpc2ZpZWQuCgrimbsgKipSZWJhc2luZyoqOiBXaGVuZXZlciBQUiBpcyBiZWhpbmQgYmFzZSBicmFuY2gsIG9yIHlvdSB0aWNrIHRoZSByZWJhc2UvcmV0cnkgY2hlY2tib3guCgrwn5SVICoqSWdub3JlKio6IENsb3NlIHRoaXMgUFIgYW5kIHlvdSB3b24ndCBiZSByZW1pbmRlZCBhYm91dCB0aGlzIHVwZGF0ZSBhZ2Fpbi4KCi0tLQoKIC0gWyBdIDwhLS0gcmViYXNlLWNoZWNrIC0tPklmIHlvdSB3YW50IHRvIHJlYmFzZS9yZXRyeSB0aGlzIFBSLCBjaGVjayB0aGlzIGJveAoKLS0tCgpUaGlzIFBSIHdhcyBnZW5lcmF0ZWQgYnkgW01lbmQgUmVub3ZhdGVdKGh0dHBzOi8vbWVuZC5pby9yZW5vdmF0ZS8pLiBWaWV3IHRoZSBbcmVwb3NpdG9yeSBqb2IgbG9nXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2dpdGh1Yi92ZXh4aG9zdC9tYWdudW0tY2x1c3Rlci1hcGkpLgo8IS0tcmVub3ZhdGUtZGVidWc6ZXlKamNtVmhkR1ZrU1c1V1pYSWlPaUkwTXk0eU1Ua3VNQ0lzSW5Wd1pHRjBaV1JKYmxabGNpSTZJalF6TGpJeE9TNHdJaXdpZEdGeVoyVjBRbkpoYm1Ob0lqb2liV0ZwYmlJc0lteGhZbVZzY3lJNlcxMTktLT4K
      override_checkout: master
      patchset: b8f4a29949264713846be1392ce32550fe1e5379
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/vexxhost/zuul-config:
            canonical_name: github.com/vexxhost/zuul-config
            checkout: main
            commit: 298983cd1253e6833abdb49d87d912527e0e6597
          trusted/project_1/opendev.org/zuul/zuul-jobs:
            canonical_name: opendev.org/zuul/zuul-jobs
            checkout: master
            commit: 82e3e8b1292a25e38235bb92b157992d326531d1
          trusted/project_2/github.com/vexxhost/zuul-jobs:
            canonical_name: github.com/vexxhost/zuul-jobs
            checkout: main
            commit: 348c7ff425450b0356e1d84589143dce260be74a
          untrusted/project_0/opendev.org/openstack/devstack:
            canonical_name: opendev.org/openstack/devstack
            checkout: master
            commit: 37fb911deef99dce62bfce22cce767b821a23bb1
          untrusted/project_1/opendev.org/openstack/openstack-zuul-jobs:
            canonical_name: opendev.org/openstack/openstack-zuul-jobs
            checkout: master
            commit: aebda82f8822e38db5bbd25ab31ea110792e8c2b
          untrusted/project_2/github.com/vexxhost/zuul-config:
            canonical_name: github.com/vexxhost/zuul-config
            checkout: main
            commit: 298983cd1253e6833abdb49d87d912527e0e6597
          untrusted/project_3/opendev.org/zuul/zuul-jobs:
            canonical_name: opendev.org/zuul/zuul-jobs
            checkout: master
            commit: 82e3e8b1292a25e38235bb92b157992d326531d1
          untrusted/project_4/github.com/vexxhost/zuul-jobs:
            canonical_name: github.com/vexxhost/zuul-jobs
            checkout: main
            commit: 348c7ff425450b0356e1d84589143dce260be74a
          untrusted/project_5/github.com/vexxhost/magnum-cluster-api:
            canonical_name: github.com/vexxhost/magnum-cluster-api
            checkout: main
            commit: b8f4a29949264713846be1392ce32550fe1e5379
        playbooks:
        - path: untrusted/project_5/github.com/vexxhost/magnum-cluster-api/zuul.d/playbooks/hydrophone/run.yml
          roles:
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/playbook_0/role_1/devstack
            link_target: untrusted/project_0/opendev.org/openstack/devstack
            role_path: ansible/playbook_0/role_1/devstack/roles
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/playbook_0/role_2/openstack-zuul-jobs
            link_target: untrusted/project_1/opendev.org/openstack/openstack-zuul-jobs
            role_path: ansible/playbook_0/role_2/openstack-zuul-jobs/roles
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/playbook_0/role_4/zuul-jobs
            link_target: untrusted/project_3/opendev.org/zuul/zuul-jobs
            role_path: ansible/playbook_0/role_4/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_5/zuul-jobs
            link_target: untrusted/project_4/github.com/vexxhost/zuul-jobs
            role_path: ansible/playbook_0/role_5/zuul-jobs/roles
        post_playbooks:
        - path: untrusted/project_5/github.com/vexxhost/magnum-cluster-api/zuul.d/playbooks/hydrophone/post.yml
          roles:
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/post_playbook_0/role_1/devstack
            link_target: untrusted/project_0/opendev.org/openstack/devstack
            role_path: ansible/post_playbook_0/role_1/devstack/roles
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/post_playbook_0/role_2/openstack-zuul-jobs
            link_target: untrusted/project_1/opendev.org/openstack/openstack-zuul-jobs
            role_path: ansible/post_playbook_0/role_2/openstack-zuul-jobs/roles
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/post_playbook_0/role_4/zuul-jobs
            link_target: untrusted/project_3/opendev.org/zuul/zuul-jobs
            role_path: ansible/post_playbook_0/role_4/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/post_playbook_0/role_5/zuul-jobs
            link_target: untrusted/project_4/github.com/vexxhost/zuul-jobs
            role_path: ansible/post_playbook_0/role_5/zuul-jobs/roles
        - path: untrusted/project_0/opendev.org/openstack/devstack/playbooks/post.yaml
          roles:
          - checkout: master
            checkout_description: playbook branch
            link_name: ansible/post_playbook_1/role_0/devstack
            link_target: untrusted/project_0/opendev.org/openstack/devstack
            role_path: ansible/post_playbook_1/role_0/devstack/roles
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/post_playbook_1/role_1/openstack-zuul-jobs
            link_target: untrusted/project_1/opendev.org/openstack/openstack-zuul-jobs
            role_path: ansible/post_playbook_1/role_1/openstack-zuul-jobs/roles
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/post_playbook_1/role_3/zuul-jobs
            link_target: untrusted/project_3/opendev.org/zuul/zuul-jobs
            role_path: ansible/post_playbook_1/role_3/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/post_playbook_1/role_4/zuul-jobs
            link_target: untrusted/project_4/github.com/vexxhost/zuul-jobs
            role_path: ansible/post_playbook_1/role_4/zuul-jobs/roles
        - path: trusted/project_0/github.com/vexxhost/zuul-config/playbooks/base/post.yaml
          roles:
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/post_playbook_2/role_1/zuul-jobs
            link_target: trusted/project_1/opendev.org/zuul/zuul-jobs
            role_path: ansible/post_playbook_2/role_1/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/post_playbook_2/role_2/zuul-jobs
            link_target: trusted/project_2/github.com/vexxhost/zuul-jobs
            role_path: ansible/post_playbook_2/role_2/zuul-jobs/roles
        - path: trusted/project_0/github.com/vexxhost/zuul-config/playbooks/base/post-logs.yaml
          roles:
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/post_playbook_3/role_1/zuul-jobs
            link_target: trusted/project_1/opendev.org/zuul/zuul-jobs
            role_path: ansible/post_playbook_3/role_1/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/post_playbook_3/role_2/zuul-jobs
            link_target: trusted/project_2/github.com/vexxhost/zuul-jobs
            role_path: ansible/post_playbook_3/role_2/zuul-jobs/roles
        pre_playbooks:
        - path: trusted/project_0/github.com/vexxhost/zuul-config/playbooks/base/pre.yaml
          roles:
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/pre_playbook_0/role_1/zuul-jobs
            link_target: trusted/project_1/opendev.org/zuul/zuul-jobs
            role_path: ansible/pre_playbook_0/role_1/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_0/role_2/zuul-jobs
            link_target: trusted/project_2/github.com/vexxhost/zuul-jobs
            role_path: ansible/pre_playbook_0/role_2/zuul-jobs/roles
        - path: untrusted/project_0/opendev.org/openstack/devstack/playbooks/pre.yaml
          roles:
          - checkout: master
            checkout_description: playbook branch
            link_name: ansible/pre_playbook_1/role_0/devstack
            link_target: untrusted/project_0/opendev.org/openstack/devstack
            role_path: ansible/pre_playbook_1/role_0/devstack/roles
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/pre_playbook_1/role_1/openstack-zuul-jobs
            link_target: untrusted/project_1/opendev.org/openstack/openstack-zuul-jobs
            role_path: ansible/pre_playbook_1/role_1/openstack-zuul-jobs/roles
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/pre_playbook_1/role_3/zuul-jobs
            link_target: untrusted/project_3/opendev.org/zuul/zuul-jobs
            role_path: ansible/pre_playbook_1/role_3/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_1/role_4/zuul-jobs
            link_target: untrusted/project_4/github.com/vexxhost/zuul-jobs
            role_path: ansible/pre_playbook_1/role_4/zuul-jobs/roles
        - path: untrusted/project_5/github.com/vexxhost/magnum-cluster-api/zuul.d/playbooks/hydrophone/pre.yml
          roles:
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/pre_playbook_2/role_1/devstack
            link_target: untrusted/project_0/opendev.org/openstack/devstack
            role_path: ansible/pre_playbook_2/role_1/devstack/roles
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/pre_playbook_2/role_2/openstack-zuul-jobs
            link_target: untrusted/project_1/opendev.org/openstack/openstack-zuul-jobs
            role_path: ansible/pre_playbook_2/role_2/openstack-zuul-jobs/roles
          - checkout: master
            checkout_description: job override ref
            link_name: ansible/pre_playbook_2/role_4/zuul-jobs
            link_target: untrusted/project_3/opendev.org/zuul/zuul-jobs
            role_path: ansible/pre_playbook_2/role_4/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_2/role_5/zuul-jobs
            link_target: untrusted/project_4/github.com/vexxhost/zuul-jobs
            role_path: ansible/pre_playbook_2/role_5/zuul-jobs/roles
      post_review: false
      post_timeout: null
      pre_timeout: null
      project:
        canonical_hostname: github.com
        canonical_name: github.com/vexxhost/magnum-cluster-api
        name: vexxhost/magnum-cluster-api
        short_name: magnum-cluster-api
        src_dir: src/github.com/vexxhost/magnum-cluster-api
      projects:
        github.com/novnc/novnc:
          canonical_hostname: github.com
          canonical_name: github.com/novnc/novnc
          checkout: master
          checkout_description: job override ref
          commit: 7c36fabe599e053c5a81e98e091ac636f6c1e174
          name: novnc/novnc
          required: true
          short_name: novnc
          src_dir: src/github.com/novnc/novnc
        github.com/vexxhost/magnum-cluster-api:
          canonical_hostname: github.com
          canonical_name: github.com/vexxhost/magnum-cluster-api
          checkout: main
          checkout_description: zuul branch
          commit: b8f4a29949264713846be1392ce32550fe1e5379
          name: vexxhost/magnum-cluster-api
          required: false
          short_name: magnum-cluster-api
          src_dir: src/github.com/vexxhost/magnum-cluster-api
        opendev.org/openstack/barbican:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/barbican
          checkout: master
          checkout_description: job override ref
          commit: a9b738f9c21e41c123e60dfe02888477c9886603
          name: openstack/barbican
          required: true
          short_name: barbican
          src_dir: src/opendev.org/openstack/barbican
        opendev.org/openstack/cinder:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/cinder
          checkout: master
          checkout_description: job override ref
          commit: 9bfe91494e77266466064e6b633d1205a055b27a
          name: openstack/cinder
          required: true
          short_name: cinder
          src_dir: src/opendev.org/openstack/cinder
        opendev.org/openstack/devstack:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/devstack
          checkout: master
          checkout_description: job override ref
          commit: 37fb911deef99dce62bfce22cce767b821a23bb1
          name: openstack/devstack
          required: true
          short_name: devstack
          src_dir: src/opendev.org/openstack/devstack
        opendev.org/openstack/glance:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/glance
          checkout: master
          checkout_description: job override ref
          commit: 7da26c564198ec5471a62c4a2a899da18643c6a7
          name: openstack/glance
          required: true
          short_name: glance
          src_dir: src/opendev.org/openstack/glance
        opendev.org/openstack/keystone:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/keystone
          checkout: master
          checkout_description: job override ref
          commit: eb3c0cd99a353fde717155aa80da4ddb4251ffe4
          name: openstack/keystone
          required: true
          short_name: keystone
          src_dir: src/opendev.org/openstack/keystone
        opendev.org/openstack/magnum:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/magnum
          checkout: master
          checkout_description: job override ref
          commit: b9a40a6f0ecd692a1fe7cc0f18454413505b44df
          name: openstack/magnum
          required: true
          short_name: magnum
          src_dir: src/opendev.org/openstack/magnum
        opendev.org/openstack/manila:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/manila
          checkout: master
          checkout_description: job override ref
          commit: 5cf57fbe77c3ede8914294524fefd4f2134c2d40
          name: openstack/manila
          required: true
          short_name: manila
          src_dir: src/opendev.org/openstack/manila
        opendev.org/openstack/neutron:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/neutron
          checkout: master
          checkout_description: job override ref
          commit: de087e8f12a916d46565a360b9a350356d8ed994
          name: openstack/neutron
          required: true
          short_name: neutron
          src_dir: src/opendev.org/openstack/neutron
        opendev.org/openstack/nova:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/nova
          checkout: master
          checkout_description: job override ref
          commit: 6ef5422574a1829114a8aa6ae367cd968a914682
          name: openstack/nova
          required: true
          short_name: nova
          src_dir: src/opendev.org/openstack/nova
        opendev.org/openstack/octavia:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/octavia
          checkout: master
          checkout_description: job override ref
          commit: 9ff4683c8212e4c043af69f1b5ebadc21651dc58
          name: openstack/octavia
          required: true
          short_name: octavia
          src_dir: src/opendev.org/openstack/octavia
        opendev.org/openstack/os-test-images:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/os-test-images
          checkout: master
          checkout_description: job override ref
          commit: 5d0367e03788764f41da8effffa14e3eac513201
          name: openstack/os-test-images
          required: true
          short_name: os-test-images
          src_dir: src/opendev.org/openstack/os-test-images
        opendev.org/openstack/ovn-octavia-provider:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/ovn-octavia-provider
          checkout: master
          checkout_description: job override ref
          commit: 890b6266450916ddf9ef8c0a157f3fe4eb03e7a5
          name: openstack/ovn-octavia-provider
          required: true
          short_name: ovn-octavia-provider
          src_dir: src/opendev.org/openstack/ovn-octavia-provider
        opendev.org/openstack/placement:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/placement
          checkout: master
          checkout_description: job override ref
          commit: 3cba66c70ce49e31e582c8d03e945017f38fcf11
          name: openstack/placement
          required: true
          short_name: placement
          src_dir: src/opendev.org/openstack/placement
        opendev.org/openstack/python-magnumclient:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/python-magnumclient
          checkout: master
          checkout_description: job override ref
          commit: 0cee96126c3fed1df41976493c17e4b54923ae5d
          name: openstack/python-magnumclient
          required: true
          short_name: python-magnumclient
          src_dir: src/opendev.org/openstack/python-magnumclient
        opendev.org/openstack/requirements:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/requirements
          checkout: master
          checkout_description: job override ref
          commit: 3c52a72d47377080503df780bf96c3ef778bd1dd
          name: openstack/requirements
          required: true
          short_name: requirements
          src_dir: src/opendev.org/openstack/requirements
        opendev.org/openstack/swift:
          canonical_hostname: opendev.org
          canonical_name: opendev.org/openstack/swift
          checkout: master
          checkout_description: job override ref
          commit: a4fcc02614e9b47c35da234eb0c6c5b2c3b46a4a
          name: openstack/swift
          required: true
          short_name: swift
          src_dir: src/opendev.org/openstack/swift
      ref: refs/pull/1067/head
      resources: {}
      tenant: oss
      timeout: 7200
      topic: null
      voting: true
    zuul_copy_output:
      /etc/ceph: logs
      /etc/glusterfs/glusterd.vol: logs
      /etc/libvirt: logs
      /etc/lvm: logs
      /etc/resolv.conf: logs
      /etc/sudoers: logs
      /etc/sudoers.d: logs
      /var/log/ceph: logs
      /var/log/glusterfs: logs
      /var/log/libvirt: logs
      /var/log/mysql: logs
      /var/log/openvswitch: logs
      /var/log/postgresql: logs
      /var/log/rabbitmq: logs
      /var/log/unbound.log: logs
      '{{ devstack_conf_dir }}/.localrc.auto': logs
      '{{ devstack_conf_dir }}/.stackenv': logs
      '{{ devstack_conf_dir }}/local.conf': logs
      '{{ devstack_conf_dir }}/localrc': logs
      '{{ devstack_full_log}}': logs
      '{{ devstack_log_dir }}/atop': logs
      '{{ devstack_log_dir }}/devstacklog.txt': logs
      '{{ devstack_log_dir }}/devstacklog.txt.summary': logs
      '{{ devstack_log_dir }}/dstat-csv.log': logs
      '{{ devstack_log_dir }}/qemu.coredump': logs
      '{{ devstack_log_dir }}/tcpdump.pcap': logs
      '{{ devstack_log_dir }}/worlddump-latest.txt': logs
      '{{ stage_dir }}/apache': logs
      '{{ stage_dir }}/apache_config': logs
      '{{ stage_dir }}/audit.log': logs
      '{{ stage_dir }}/core': logs
      '{{ stage_dir }}/deprecations.log': logs
      '{{ stage_dir }}/df.txt': logs
      '{{ stage_dir }}/dpkg-l.txt': logs
      '{{ stage_dir }}/etc': logs
      '{{ stage_dir }}/iptables.txt': logs
      '{{ stage_dir }}/listen53.txt': logs
      '{{ stage_dir }}/mount.txt': logs
      '{{ stage_dir }}/performance.json': logs
      '{{ stage_dir }}/pip2-freeze.txt': logs
      '{{ stage_dir }}/pip3-freeze.txt': logs
      '{{ stage_dir }}/rpm-qa.txt': logs
      '{{ stage_dir }}/services.txt': logs
      '{{ stage_dir }}/verify_tempest_conf.log': logs
