all:
  hosts:
    ubuntu-noble:
      ansible_connection: ssh
      ansible_host: 81.163.192.179
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: 475300eb-edbf-4ca1-8b58-6874078d6083
        host_id: 9a3b43c52073b98876da7433cf53a5f9772104a91b94e1d0ef2a8e4f
        interface_ip: 81.163.192.179
        label: ubuntu-noble
        private_ipv4: 10.128.7.67
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.192.179
        public_ipv6: ''
        region: null
        slot: null
  vars:
    zuul:
      _inheritance_path:
      - '<Job base branches: None source: osism/zuul-config/zuul.d/jobs.yaml@main#2>'
      - '<Job hadolint branches: None source: osism/zuul-jobs/.zuul.yaml@main#37>'
      - '<Job hadolint branches: None source: osism/container-images/.zuul.yaml@main#2>'
      ansible_version: '8'
      attempts: 1
      branch: main
      build: d60c9153d3de41c78de80d313fa52784
      buildset: a64d580e03484f60bec8c1831f65fa23
      change: '709'
      change_message: "chore(deps): update netbox\n\nThis PR contains the following\
        \ updates:\n\n| Package | Type | Update | Change | Age | Adoption | Passing\
        \ | Confidence |\n|---|---|---|---|---|---|---|---|\n| [ghcr.io/astral-sh/uv](https://redirect.github.com/astral-sh/uv)\
        \ | final | patch | `0.6.11` -> `0.6.17` | [![age](https://developer.mend.io/api/mc/badges/age/docker/ghcr.io%2fastral-sh%2fuv/0.6.17?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![adoption](https://developer.mend.io/api/mc/badges/adoption/docker/ghcr.io%2fastral-sh%2fuv/0.6.17?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![passing](https://developer.mend.io/api/mc/badges/compatibility/docker/ghcr.io%2fastral-sh%2fuv/0.6.11/0.6.17?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/ghcr.io%2fastral-sh%2fuv/0.6.11/0.6.17?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ |\n| [netbox-plugin-dns](https://redirect.github.com/peteeckel/netbox-plugin-dns)\
        \ |  | patch | `==1.2.6` -> `==1.2.9` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/netbox-plugin-dns/1.2.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/netbox-plugin-dns/1.2.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/netbox-plugin-dns/1.2.6/1.2.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/netbox-plugin-dns/1.2.6/1.2.9?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ |\n| [quay.io/netboxcommunity/netbox](https://redirect.github.com/netbox-community/netbox-docker)\
        \ |  | patch | `v4.2.2` -> `v4.2.8` | [![age](https://developer.mend.io/api/mc/badges/age/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.2.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![adoption](https://developer.mend.io/api/mc/badges/adoption/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.2.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![passing](https://developer.mend.io/api/mc/badges/compatibility/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.2.2/v4.2.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.2.2/v4.2.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ |\n| [quay.io/netboxcommunity/netbox](https://redirect.github.com/netbox-community/netbox-docker)\
        \ | stage | patch | `v4.2.2` -> `v4.2.8` | [![age](https://developer.mend.io/api/mc/badges/age/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.2.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![adoption](https://developer.mend.io/api/mc/badges/adoption/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.2.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![passing](https://developer.mend.io/api/mc/badges/compatibility/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.2.2/v4.2.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![confidence](https://developer.mend.io/api/mc/badges/confidence/docker/quay.io%2fnetboxcommunity%2fnetbox/v4.2.2/v4.2.8?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ |\n\n---\n\n### Release Notes\n\n<details>\n<summary>astral-sh/uv (ghcr.io/astral-sh/uv)</summary>\n\
        \n### [`v0.6.17`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0617)\n\
        \n[Compare Source](https://redirect.github.com/astral-sh/uv/compare/0.6.16...0.6.17)\n\
        \n##### Preview features\n\n-   Add PyTorch v2.7.0 to GPU backend ([#&#8203;13072](https://redirect.github.com/astral-sh/uv/pull/13072))\n\
        \n##### Bug fixes\n\n-   Avoid panic for invalid Python versions ([#&#8203;13077](https://redirect.github.com/astral-sh/uv/pull/13077))\n\
        -   Block scripts from overwriting `python` ([#&#8203;13051](https://redirect.github.com/astral-sh/uv/pull/13051))\n\
        -   Check distribution names to handle invalid redirects ([#&#8203;12917](https://redirect.github.com/astral-sh/uv/pull/12917))\n\
        -   Check for mismatched package and distribution names on resolver thread\
        \ ([#&#8203;13088](https://redirect.github.com/astral-sh/uv/pull/13088))\n\
        -   Fix panic with invalid last character in PEP 508 name ([#&#8203;13105](https://redirect.github.com/astral-sh/uv/pull/13105))\n\
        -   Reject `requires-python` even if not listed on the index page ([#&#8203;13086](https://redirect.github.com/astral-sh/uv/pull/13086))\n\
        \n### [`v0.6.16`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0616)\n\
        \n[Compare Source](https://redirect.github.com/astral-sh/uv/compare/0.6.15...0.6.16)\n\
        \n##### Bug fixes\n\n-   Revert \"Properly handle authentication for 302 redirect\
        \ URLs\" ([#&#8203;13041](https://redirect.github.com/astral-sh/uv/pull/13041))\n\
        \n### [`v0.6.15`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0615)\n\
        \n[Compare Source](https://redirect.github.com/astral-sh/uv/compare/0.6.14...0.6.15)\n\
        \nThis release includes preliminary support for the `pylock.toml` file format,\
        \ as standardized in [PEP 751](https://peps.python.org/pep-0751/). `pylock.toml`\
        \ is an alternative resolution output format intended to replace `requirements.txt`\
        \ (e.g., in the context of `uv pip compile`, whereby a \"locked\" `requirements.txt`\
        \ file is generated from a set of input requirements). `pylock.toml` is standardized\
        \ and tool-agnostic, such that in the future, `pylock.toml` files generated\
        \ by uv could be installed by other tools, and vice versa.\n\nAs of this release,\
        \ `pylock.toml` is supported in the following commands:\n\n-   To export a\
        \ `uv.lock` to the `pylock.toml` format, run: `uv export -o pylock.toml`\n\
        -   To generate a `pylock.toml` file from a set of requirements, run: `uv\
        \ pip compile -o pylock.toml -r requirements.in`\n-   To install from a `pylock.toml`\
        \ file, run: `uv pip sync pylock.toml` or `uv pip install -r pylock.toml`\n\
        \n##### Enhancements\n\n-   Add PEP 751 support to `uv pip compile` ([#&#8203;13019](https://redirect.github.com/astral-sh/uv/pull/13019))\n\
        -   Add `uv export` support for PEP 751 ([#&#8203;12955](https://redirect.github.com/astral-sh/uv/pull/12955))\n\
        -   Accept `requirements.txt` (verbatim) as a format on the CLI ([#&#8203;12957](https://redirect.github.com/astral-sh/uv/pull/12957))\n\
        -   Add `UV_NO_EDITABLE` environment variable to set `--no-editable` on all\
        \ invocations ([#&#8203;12773](https://redirect.github.com/astral-sh/uv/pull/12773))\n\
        -   Add `pylock.toml` to `uv pip install` and `uv pip sync` ([#&#8203;12992](https://redirect.github.com/astral-sh/uv/pull/12992))\n\
        -   Add a brief sleep before sending `SIGINT` to child processes ([#&#8203;13018](https://redirect.github.com/astral-sh/uv/pull/13018))\n\
        -   Add upload time to `uv.lock` ([#&#8203;12968](https://redirect.github.com/astral-sh/uv/pull/12968))\n\
        -   Allow updating Git sources by name ([#&#8203;12897](https://redirect.github.com/astral-sh/uv/pull/12897))\n\
        -   Cache `which git` in `uv init` ([#&#8203;12893](https://redirect.github.com/astral-sh/uv/pull/12893))\n\
        -   Enable `--dry-run` with `--locked` / `--frozen` for `uv sync` ([#&#8203;12778](https://redirect.github.com/astral-sh/uv/pull/12778))\n\
        -   Infer output type in `uv export` ([#&#8203;12958](https://redirect.github.com/astral-sh/uv/pull/12958))\n\
        -   Make `uv init` resilient against broken git ([#&#8203;12895](https://redirect.github.com/astral-sh/uv/pull/12895))\n\
        -   Respect build constraints for `uv run --with` dependencies ([#&#8203;12882](https://redirect.github.com/astral-sh/uv/pull/12882))\n\
        -   Split UV_INDEX on all whitespace ([#&#8203;12820](https://redirect.github.com/astral-sh/uv/pull/12820))\n\
        -   Support build constraints in `uv tool` and PEP723 scripts. ([#&#8203;12842](https://redirect.github.com/astral-sh/uv/pull/12842))\n\
        -   Use suffix from `uvx` binary when searching for uv binary ([#&#8203;12923](https://redirect.github.com/astral-sh/uv/pull/12923))\n\
        -   Update version formatting to use cyan color ([#&#8203;12943](https://redirect.github.com/astral-sh/uv/pull/12943))\n\
        -   Add debug logs for version file search ([#&#8203;12951](https://redirect.github.com/astral-sh/uv/pull/12951))\n\
        -   Fix `SourceNotAllowed` error message during Python discovery ([#&#8203;13012](https://redirect.github.com/astral-sh/uv/pull/13012))\n\
        -   Obfuscate password in credentials debug messages ([#&#8203;12944](https://redirect.github.com/astral-sh/uv/pull/12944))\n\
        -   Obfuscate possible tokens in URL logs ([#&#8203;12969](https://redirect.github.com/astral-sh/uv/pull/12969))\n\
        -   Validate that PEP 751 entries don't include multiple sources ([#&#8203;12993](https://redirect.github.com/astral-sh/uv/pull/12993))\n\
        \n##### Preview features\n\n-   Build backend: Add reference docs and schema\
        \ ([#&#8203;12803](https://redirect.github.com/astral-sh/uv/pull/12803))\n\
        \n##### Bug fixes\n\n-   Align supported `config-settings` with example in\
        \ docs ([#&#8203;12947](https://redirect.github.com/astral-sh/uv/pull/12947))\n\
        -   Ensure virtual environment is compatible with interpreter on sync ([#&#8203;12884](https://redirect.github.com/astral-sh/uv/pull/12884))\n\
        -   Fix `PythonDownloadRequest` parsing for partial keys ([#&#8203;12925](https://redirect.github.com/astral-sh/uv/pull/12925))\n\
        -   Fix pre-release exclusive comparison operator in `uv-pep440` ([#&#8203;12836](https://redirect.github.com/astral-sh/uv/pull/12836))\n\
        -   Forward additional signals to the child process in `uv run` ([#&#8203;13017](https://redirect.github.com/astral-sh/uv/pull/13017))\n\
        -   Omit PEP 751 version for source trees ([#&#8203;13030](https://redirect.github.com/astral-sh/uv/pull/13030))\n\
        -   Patch `CC` and `CCX` entries in sysconfig for cross-compiled `aarch64`\
        \ Python distributions ([#&#8203;12239](https://redirect.github.com/astral-sh/uv/pull/12239))\n\
        -   Properly handle authentication for HTTP 302 redirect URLs ([#&#8203;12920](https://redirect.github.com/astral-sh/uv/pull/12920))\n\
        -   Set 4MB stack size for all threads, introduce `UV_STACK_SIZE` ([#&#8203;12839](https://redirect.github.com/astral-sh/uv/pull/12839))\n\
        -   Show PyPy downloads during `uv python list` ([#&#8203;12915](https://redirect.github.com/astral-sh/uv/pull/12915))\n\
        -   Add `subdirectory` to Direct URL for local directories ([#&#8203;12971](https://redirect.github.com/astral-sh/uv/pull/12971))\n\
        -   Prefer stable releases over pre-releases in `uv python install` ([#&#8203;12194](https://redirect.github.com/astral-sh/uv/pull/12194))\n\
        -   Write requested Python variant to pin file in `uv init` ([#&#8203;12870](https://redirect.github.com/astral-sh/uv/pull/12870))\n\
        \n##### Documentation\n\n-   Fix CLI reference with code block ([#&#8203;12807](https://redirect.github.com/astral-sh/uv/pull/12807))\n\
        -   Fix lockfile note ([#&#8203;12793](https://redirect.github.com/astral-sh/uv/pull/12793))\n\
        -   Fix typo in a reference ([#&#8203;12858](https://redirect.github.com/astral-sh/uv/pull/12858))\n\
        -   Improve docs for `uv python list --only-downloads` and `--only-installed`\
        \ ([#&#8203;12916](https://redirect.github.com/astral-sh/uv/pull/12916))\n\
        -   Update note on lack of musl distributions to ARM-only ([#&#8203;12825](https://redirect.github.com/astral-sh/uv/pull/12825))\n\
        -   Add section on shebangs for scripts ([#&#8203;11553](https://redirect.github.com/astral-sh/uv/pull/11553))\n\
        -   Display aliases for long and short args in the CLI reference ([#&#8203;12824](https://redirect.github.com/astral-sh/uv/pull/12824))\n\
        -   Fix highlight line in explicit index documentation ([#&#8203;12887](https://redirect.github.com/astral-sh/uv/pull/12887))\n\
        -   Add explicit source (matching PyTorch guide) ([#&#8203;12844](https://redirect.github.com/astral-sh/uv/pull/12844))\n\
        -   Fix link to issue ([#&#8203;12823](https://redirect.github.com/astral-sh/uv/pull/12823))\n\
        -   Fix grammatical error in FastAPI guide ([#&#8203;12908](https://redirect.github.com/astral-sh/uv/pull/12908))\n\
        -   Add `--locked` to `uv sync` in GitHub Actions guide ([#&#8203;12819](https://redirect.github.com/astral-sh/uv/pull/12819))\n\
        -   Improve formatting for `\"all\"` `default-groups` setting documentation\
        \ ([#&#8203;12963](https://redirect.github.com/astral-sh/uv/pull/12963))\n\
        -   Replace `--frozen` with `--locked` in Docker integration guide ([#&#8203;12818](https://redirect.github.com/astral-sh/uv/pull/12818))\n\
        \n### [`v0.6.14`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0614)\n\
        \n[Compare Source](https://redirect.github.com/astral-sh/uv/compare/0.6.13...0.6.14)\n\
        \n##### Python versions\n\nThe following Python versions have been added:\n\
        \n-   CPython 3.13.3\n-   CPython 3.12.10\n-   CPython 3.11.12\n-   CPython\
        \ 3.10.17\n-   CPython 3.9.22\n\nSee the [`python-build-standalone` release\
        \ notes](https://redirect.github.com/astral-sh/python-build-standalone/releases/tag/20250409)\
        \ for more details.\n\n##### Enhancements\n\n-   Add `uv-build` and `uv_build`\
        \ aliases to `uv init --build-backend` ([#&#8203;12776](https://redirect.github.com/astral-sh/uv/pull/12776))\n\
        -   Emit dedicated error message for Conda `environment.yml` files ([#&#8203;12669](https://redirect.github.com/astral-sh/uv/pull/12669))\n\
        \n##### Preview features\n\n-   Build backend: Check module dir exists for\
        \ sdist build ([#&#8203;12779](https://redirect.github.com/astral-sh/uv/pull/12779))\n\
        -   Build backend: Fix sdist with long directories ([#&#8203;12764](https://redirect.github.com/astral-sh/uv/pull/12764))\n\
        \n##### Performance\n\n-   Avoid querying GitHub on repeated install invocations\
        \ ([#&#8203;12767](https://redirect.github.com/astral-sh/uv/pull/12767))\n\
        \n##### Bug fixes\n\n-   Error when `tool.uv.sources` is set in system-level\
        \ configuration file ([#&#8203;12757](https://redirect.github.com/astral-sh/uv/pull/12757))\n\
        -   Split workspace members onto their own lines in `uv init` ([#&#8203;12756](https://redirect.github.com/astral-sh/uv/pull/12756))\n\
        \n##### Documentation\n\n-   Add lockfile note about PEP 751 ([#&#8203;12732](https://redirect.github.com/astral-sh/uv/pull/12732))\n\
        -   Extend the reference documentation for `uv pip sync` ([#&#8203;12683](https://redirect.github.com/astral-sh/uv/pull/12683))\n\
        -   Fix mismatched pip interface header / nav titles ([#&#8203;12640](https://redirect.github.com/astral-sh/uv/pull/12640))\n\
        \n### [`v0.6.13`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0613)\n\
        \n[Compare Source](https://redirect.github.com/astral-sh/uv/compare/0.6.12...0.6.13)\n\
        \n##### Enhancements\n\n-   Add `--show-version` to `uv python find` ([#&#8203;12376](https://redirect.github.com/astral-sh/uv/pull/12376))\n\
        -   Remove `--no-config` warning from `uv pip compile` and `uv pip sync` ([#&#8203;12642](https://redirect.github.com/astral-sh/uv/pull/12642))\n\
        -   Skip repeated directories in `PATH` when searching for Python interpreters\
        \ ([#&#8203;12367](https://redirect.github.com/astral-sh/uv/pull/12367))\n\
        -   Unset `SCRIPT_PATH` in relocatable activation script ([#&#8203;12672](https://redirect.github.com/astral-sh/uv/pull/12672))\n\
        -   Add `UV_PYTHON_DOWNLOADS_JSON_URL` to set custom managed python sources\
        \ ([#&#8203;10939](https://redirect.github.com/astral-sh/uv/pull/10939))\n\
        -   Reject `pyproject.toml` files in `uv pip compile -o` ([#&#8203;12673](https://redirect.github.com/astral-sh/uv/pull/12673))\n\
        -   Respect the `--offline` flag for Git operations ([#&#8203;12619](https://redirect.github.com/astral-sh/uv/pull/12619))\n\
        \n##### Bug fixes\n\n-   Warn instead of error if CRC appears to be missing\
        \ ([#&#8203;12722](https://redirect.github.com/astral-sh/uv/pull/12722))\n\
        -   Avoid infinite loop in `uv export` with conflicts ([#&#8203;12726](https://redirect.github.com/astral-sh/uv/pull/12726))\n\
        \n##### Rust API\n\n-   Update MSRV to 1.84 ([#&#8203;12670](https://redirect.github.com/astral-sh/uv/pull/12670))\n\
        \n### [`v0.6.12`](https://redirect.github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0612)\n\
        \n[Compare Source](https://redirect.github.com/astral-sh/uv/compare/0.6.11...0.6.12)\n\
        \n##### Enhancements\n\n-   Report the queried executable path in `uv python\
        \ list` ([#&#8203;12628](https://redirect.github.com/astral-sh/uv/pull/12628))\n\
        -   Improve archive unpack error messages ([#&#8203;12627](https://redirect.github.com/astral-sh/uv/pull/12627))\n\
        \n##### Bug fixes\n\n-   Respect `authenticate` when using `explicit = true`\
        \ ([#&#8203;12631](https://redirect.github.com/astral-sh/uv/pull/12631))\n\
        -   Normalize extra and group names in `uv add` and `uv remove` ([#&#8203;12586](https://redirect.github.com/astral-sh/uv/pull/12586))\n\
        -   Enforce CRC-32 checks when unpacking archives ([#&#8203;12623](https://redirect.github.com/astral-sh/uv/pull/12623))\n\
        -   Fix parsing of `python-platform` in settings files ([#&#8203;12592](https://redirect.github.com/astral-sh/uv/pull/12592))\n\
        \n##### Documentation\n\n-   Add note about `uv build` to `package = false`\
        \ ([#&#8203;12608](https://redirect.github.com/astral-sh/uv/pull/12608))\n\
        -   Add index fallback note to `authenticate = always` documentation ([#&#8203;12498](https://redirect.github.com/astral-sh/uv/pull/12498))\n\
        -   Fix invalid 'kind' reference in flat index docs ([#&#8203;12583](https://redirect.github.com/astral-sh/uv/pull/12583))\n\
        \n</details>\n\n<details>\n<summary>peteeckel/netbox-plugin-dns (netbox-plugin-dns)</summary>\n\
        \n### [`v1.2.9`](https://redirect.github.com/peteeckel/netbox-plugin-dns/releases/tag/1.2.9):\
        \ Feature release 1.2.9\n\n[Compare Source](https://redirect.github.com/peteeckel/netbox-plugin-dns/compare/1.2.8...1.2.9)\n\
        \n#### What's Changed\n\n-   Redesigned the record ChoiceSets and created\
        \ the `custom_record_types` option by [@&#8203;peteeckel](https://redirect.github.com/peteeckel)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/599](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/599)\n\
        -   Provide a default list of filtered RRTYPEs by [@&#8203;peteeckel](https://redirect.github.com/peteeckel)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/601](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/601)\n\
        -   slight change of wording by [@&#8203;jpmens](https://redirect.github.com/jpmens)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/602](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/602)\n\
        -   Added the option to remove specific record types from the filter list\
        \ by [@&#8203;peteeckel](https://redirect.github.com/peteeckel) in [https://github.com/peteeckel/netbox-plugin-dns/pull/604](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/604)\n\
        -   Introduced check for SOA-safe fields and added tests by [@&#8203;peteeckel](https://redirect.github.com/peteeckel)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/606](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/606)\n\
        -   Added the parental_agents field to DNSSECPolicy by [@&#8203;peteeckel](https://redirect.github.com/peteeckel)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/607](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/607)\n\
        -   Moved the parental_agents field from DNSSECPolicy to Zone by [@&#8203;peteeckel](https://redirect.github.com/peteeckel)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/609](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/609)\n\
        \n**Full Changelog**: https://github.com/peteeckel/netbox-plugin-dns/compare/1.2.7...1.2.9\n\
        \n### [`v1.2.8`](https://redirect.github.com/peteeckel/netbox-plugin-dns/compare/1.2.7...1.2.8)\n\
        \n[Compare Source](https://redirect.github.com/peteeckel/netbox-plugin-dns/compare/1.2.7...1.2.8)\n\
        \n### [`v1.2.7`](https://redirect.github.com/peteeckel/netbox-plugin-dns/releases/tag/1.2.7):\
        \ Feature/Bugfix Release 1.2.7\n\n[Compare Source](https://redirect.github.com/peteeckel/netbox-plugin-dns/compare/1.2.6...1.2.7)\n\
        \n#### DNSSEC\n\nThis is release adds DNSSEC support for NetBox DNS.\n\nNetBox\
        \ DNS supports the management of DNSSEC in as much as DNSSEC Key Templates\
        \ and DNSSEC Policies can be stored in NetBox DNS and assigned to zones. It\
        \ does not, however, support zone signing nor storing cryptographic material\
        \ in the NetBox database. There are two main reasons for this concept:\n\n\
        1.  Storing cryptographic material in a data source for automation is generally\
        \ problematic. While there is the NetBox Secrets plugin, it is better practice\
        \ to store confidential data in vault systems specifically created for this\
        \ purpose. (In some cases the keys are stored in HSMs as an added method of\
        \ protection.)\n2.  In typical modern scenarios, signing servers maintain\
        \ keys and sign records, so such configurations do not even require having\
        \ NetBox DNS provide keys or create the signatures from within NetBox DNS.\n\
        \nAdditionally, there is no direct integration between NetBox and any given\
        \ name server implementation, so an interface for providing signed zones to\
        \ a name server is generally out of scope for NetBox DNS, just as it is the\
        \ case for serving plain DNS. This should be implemented using specific solutions\
        \ adapted to the use case and the name server implementation used.\n\nAs noted\
        \ earlier there are two data models for DNSSEC in NetBox DNS: DNSSEC Key Templates\
        \ and DNSSEC Policies. The former are used for storing parameters for DNSSEC\
        \ Keys such as the type, algorithm and lifetime, and the latter to define\
        \ policies that determine how often signatures are regenerated, DS records\
        \ are propagated etc.\n\nWhile the implementation is oriented largely towards\
        \ options BIND 9 provides, this is mainly because that software has a huge\
        \ set of configuration options and other products are usually not very different,\
        \ in most cases more limited than BIND 9. Given the large installed base of\
        \ BIND 9, this is considered a good basis. (There is, however, no reason why\
        \ NetBox DNS cannot be used to maintain data for, say, Knot-DNS or PowerDNS.)\n\
        \nFor a summary of the new functionality, see [this blogpost](https://jpmens.net/2025/03/16/dnssec-policy-and-key-template-support-in-netbox-dns/)\
        \ by [@&#8203;jpmens](https://redirect.github.com/jpmens).\n\n#### What's\
        \ Changed\n\n-   SOA MNAME must be checked in zone forms if zone template\
        \ is not set by [@&#8203;peteeckel](https://redirect.github.com/peteeckel)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/589](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/589)\n\
        -   complete fr translation by [@&#8203;jean1](https://redirect.github.com/jean1)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/592](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/592)\n\
        -   Check whether zone was passed via dict before resolving templates by [@&#8203;peteeckel](https://redirect.github.com/peteeckel)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/594](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/594)\n\
        -   Add DNSSEC support by [@&#8203;peteeckel](https://redirect.github.com/peteeckel)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/563](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/563)\n\
        -   Add domain registration expiration date and EPP status fields by [@&#8203;peteeckel](https://redirect.github.com/peteeckel)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/590](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/590)\n\
        -   Add tests for NetBox DNS objects as custom field targets by [@&#8203;peteeckel](https://redirect.github.com/peteeckel)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/595](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/595)\n\
        -   Initialise views in `urls.py` instead of `ready()` by [@&#8203;peteeckel](https://redirect.github.com/peteeckel)\
        \ in [https://github.com/peteeckel/netbox-plugin-dns/pull/596](https://redirect.github.com/peteeckel/netbox-plugin-dns/pull/596)\n\
        \n**Full Changelog**: https://github.com/peteeckel/netbox-plugin-dns/compare/1.2.6...1.2.7\n\
        \n</details>\n\n---\n\n### Configuration\n\n\U0001F4C5 **Schedule**: Branch\
        \ creation - At any time (no schedule defined), Automerge - 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 becomes conflicted, or you tick the rebase/retry checkbox.\n\n\U0001F47B\
        \ **Immortal**: This PR will be recreated if closed unmerged. Get [config\
        \ help](https://redirect.github.com/renovatebot/renovate/discussions) if that's\
        \ undesired.\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/osism/container-images).\n\
        <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjI1Ny4zIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZSJdfQ==-->\n"
      change_url: https://github.com/osism/container-images/pull/709
      child_jobs: []
      commit_id: 87718016771b5a4793796d3a9af3695c9451f609
      event_id: 76797640-2213-11f0-9a0d-b7e56389c328
      executor:
        hostname: 7d211f194f6a
        inventory_file: /var/lib/zuul/builds/d60c9153d3de41c78de80d313fa52784/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/d60c9153d3de41c78de80d313fa52784/work/logs
        result_data_file: /var/lib/zuul/builds/d60c9153d3de41c78de80d313fa52784/work/results.json
        src_root: /var/lib/zuul/builds/d60c9153d3de41c78de80d313fa52784/work/src
        work_root: /var/lib/zuul/builds/d60c9153d3de41c78de80d313fa52784/work
      items:
      - branch: main
        change: '709'
        change_url: https://github.com/osism/container-images/pull/709
        patchset: 87718016771b5a4793796d3a9af3695c9451f609
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/container-images
          name: osism/container-images
          short_name: container-images
          src_dir: src/github.com/osism/container-images
      job: hadolint
      jobtags: []
      max_attempts: 3
      message: Y2hvcmUoZGVwcyk6IHVwZGF0ZSBuZXRib3gKClRoaXMgUFIgY29udGFpbnMgdGhlIGZvbGxvd2luZyB1cGRhdGVzOgoKfCBQYWNrYWdlIHwgVHlwZSB8IFVwZGF0ZSB8IENoYW5nZSB8IEFnZSB8IEFkb3B0aW9uIHwgUGFzc2luZyB8IENvbmZpZGVuY2UgfAp8LS0tfC0tLXwtLS18LS0tfC0tLXwtLS18LS0tfC0tLXwKfCBbZ2hjci5pby9hc3RyYWwtc2gvdXZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYpIHwgZmluYWwgfCBwYXRjaCB8IGAwLjYuMTFgIC0+IGAwLjYuMTdgIHwgWyFbYWdlXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2FwaS9tYy9iYWRnZXMvYWdlL2RvY2tlci9naGNyLmlvJTJmYXN0cmFsLXNoJTJmdXYvMC42LjE3P3NsaW09dHJ1ZSldKGh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vbWVyZ2UtY29uZmlkZW5jZS8pIHwgWyFbYWRvcHRpb25dKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9hZG9wdGlvbi9kb2NrZXIvZ2hjci5pbyUyZmFzdHJhbC1zaCUyZnV2LzAuNi4xNz9zbGltPXRydWUpXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8IFshW3Bhc3NpbmddKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9jb21wYXRpYmlsaXR5L2RvY2tlci9naGNyLmlvJTJmYXN0cmFsLXNoJTJmdXYvMC42LjExLzAuNi4xNz9zbGltPXRydWUpXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8IFshW2NvbmZpZGVuY2VdKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9jb25maWRlbmNlL2RvY2tlci9naGNyLmlvJTJmYXN0cmFsLXNoJTJmdXYvMC42LjExLzAuNi4xNz9zbGltPXRydWUpXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8CnwgW25ldGJveC1wbHVnaW4tZG5zXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zKSB8ICB8IHBhdGNoIHwgYD09MS4yLjZgIC0+IGA9PTEuMi45YCB8IFshW2FnZV0oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9hcGkvbWMvYmFkZ2VzL2FnZS9weXBpL25ldGJveC1wbHVnaW4tZG5zLzEuMi45P3NsaW09dHJ1ZSldKGh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vbWVyZ2UtY29uZmlkZW5jZS8pIHwgWyFbYWRvcHRpb25dKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9hZG9wdGlvbi9weXBpL25ldGJveC1wbHVnaW4tZG5zLzEuMi45P3NsaW09dHJ1ZSldKGh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vbWVyZ2UtY29uZmlkZW5jZS8pIHwgWyFbcGFzc2luZ10oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9hcGkvbWMvYmFkZ2VzL2NvbXBhdGliaWxpdHkvcHlwaS9uZXRib3gtcGx1Z2luLWRucy8xLjIuNi8xLjIuOT9zbGltPXRydWUpXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8IFshW2NvbmZpZGVuY2VdKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9jb25maWRlbmNlL3B5cGkvbmV0Ym94LXBsdWdpbi1kbnMvMS4yLjYvMS4yLjk/c2xpbT10cnVlKV0oaHR0cHM6Ly9kb2NzLnJlbm92YXRlYm90LmNvbS9tZXJnZS1jb25maWRlbmNlLykgfAp8IFtxdWF5LmlvL25ldGJveGNvbW11bml0eS9uZXRib3hdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9uZXRib3gtY29tbXVuaXR5L25ldGJveC1kb2NrZXIpIHwgIHwgcGF0Y2ggfCBgdjQuMi4yYCAtPiBgdjQuMi44YCB8IFshW2FnZV0oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9hcGkvbWMvYmFkZ2VzL2FnZS9kb2NrZXIvcXVheS5pbyUyZm5ldGJveGNvbW11bml0eSUyZm5ldGJveC92NC4yLjg/c2xpbT10cnVlKV0oaHR0cHM6Ly9kb2NzLnJlbm92YXRlYm90LmNvbS9tZXJnZS1jb25maWRlbmNlLykgfCBbIVthZG9wdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9hcGkvbWMvYmFkZ2VzL2Fkb3B0aW9uL2RvY2tlci9xdWF5LmlvJTJmbmV0Ym94Y29tbXVuaXR5JTJmbmV0Ym94L3Y0LjIuOD9zbGltPXRydWUpXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8IFshW3Bhc3NpbmddKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9jb21wYXRpYmlsaXR5L2RvY2tlci9xdWF5LmlvJTJmbmV0Ym94Y29tbXVuaXR5JTJmbmV0Ym94L3Y0LjIuMi92NC4yLjg/c2xpbT10cnVlKV0oaHR0cHM6Ly9kb2NzLnJlbm92YXRlYm90LmNvbS9tZXJnZS1jb25maWRlbmNlLykgfCBbIVtjb25maWRlbmNlXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2FwaS9tYy9iYWRnZXMvY29uZmlkZW5jZS9kb2NrZXIvcXVheS5pbyUyZm5ldGJveGNvbW11bml0eSUyZm5ldGJveC92NC4yLjIvdjQuMi44P3NsaW09dHJ1ZSldKGh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vbWVyZ2UtY29uZmlkZW5jZS8pIHwKfCBbcXVheS5pby9uZXRib3hjb21tdW5pdHkvbmV0Ym94XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vbmV0Ym94LWNvbW11bml0eS9uZXRib3gtZG9ja2VyKSB8IHN0YWdlIHwgcGF0Y2ggfCBgdjQuMi4yYCAtPiBgdjQuMi44YCB8IFshW2FnZV0oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9hcGkvbWMvYmFkZ2VzL2FnZS9kb2NrZXIvcXVheS5pbyUyZm5ldGJveGNvbW11bml0eSUyZm5ldGJveC92NC4yLjg/c2xpbT10cnVlKV0oaHR0cHM6Ly9kb2NzLnJlbm92YXRlYm90LmNvbS9tZXJnZS1jb25maWRlbmNlLykgfCBbIVthZG9wdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9hcGkvbWMvYmFkZ2VzL2Fkb3B0aW9uL2RvY2tlci9xdWF5LmlvJTJmbmV0Ym94Y29tbXVuaXR5JTJmbmV0Ym94L3Y0LjIuOD9zbGltPXRydWUpXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8IFshW3Bhc3NpbmddKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9jb21wYXRpYmlsaXR5L2RvY2tlci9xdWF5LmlvJTJmbmV0Ym94Y29tbXVuaXR5JTJmbmV0Ym94L3Y0LjIuMi92NC4yLjg/c2xpbT10cnVlKV0oaHR0cHM6Ly9kb2NzLnJlbm92YXRlYm90LmNvbS9tZXJnZS1jb25maWRlbmNlLykgfCBbIVtjb25maWRlbmNlXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2FwaS9tYy9iYWRnZXMvY29uZmlkZW5jZS9kb2NrZXIvcXVheS5pbyUyZm5ldGJveGNvbW11bml0eSUyZm5ldGJveC92NC4yLjIvdjQuMi44P3NsaW09dHJ1ZSldKGh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vbWVyZ2UtY29uZmlkZW5jZS8pIHwKCi0tLQoKIyMjIFJlbGVhc2UgTm90ZXMKCjxkZXRhaWxzPgo8c3VtbWFyeT5hc3RyYWwtc2gvdXYgKGdoY3IuaW8vYXN0cmFsLXNoL3V2KTwvc3VtbWFyeT4KCiMjIyBbYHYwLjYuMTdgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L2Jsb2IvSEVBRC9DSEFOR0VMT0cubWQjMDYxNykKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9jb21wYXJlLzAuNi4xNi4uLjAuNi4xNykKCiMjIyMjIFByZXZpZXcgZmVhdHVyZXMKCi0gICBBZGQgUHlUb3JjaCB2Mi43LjAgdG8gR1BVIGJhY2tlbmQgKFsjJiM4MjAzOzEzMDcyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTMwNzIpKQoKIyMjIyMgQnVnIGZpeGVzCgotICAgQXZvaWQgcGFuaWMgZm9yIGludmFsaWQgUHl0aG9uIHZlcnNpb25zIChbIyYjODIwMzsxMzA3N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEzMDc3KSkKLSAgIEJsb2NrIHNjcmlwdHMgZnJvbSBvdmVyd3JpdGluZyBgcHl0aG9uYCAoWyMmIzgyMDM7MTMwNTFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMzA1MSkpCi0gICBDaGVjayBkaXN0cmlidXRpb24gbmFtZXMgdG8gaGFuZGxlIGludmFsaWQgcmVkaXJlY3RzIChbIyYjODIwMzsxMjkxN10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyOTE3KSkKLSAgIENoZWNrIGZvciBtaXNtYXRjaGVkIHBhY2thZ2UgYW5kIGRpc3RyaWJ1dGlvbiBuYW1lcyBvbiByZXNvbHZlciB0aHJlYWQgKFsjJiM4MjAzOzEzMDg4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTMwODgpKQotICAgRml4IHBhbmljIHdpdGggaW52YWxpZCBsYXN0IGNoYXJhY3RlciBpbiBQRVAgNTA4IG5hbWUgKFsjJiM4MjAzOzEzMTA1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTMxMDUpKQotICAgUmVqZWN0IGByZXF1aXJlcy1weXRob25gIGV2ZW4gaWYgbm90IGxpc3RlZCBvbiB0aGUgaW5kZXggcGFnZSAoWyMmIzgyMDM7MTMwODZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMzA4NikpCgojIyMgW2B2MC42LjE2YF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9ibG9iL0hFQUQvQ0hBTkdFTE9HLm1kIzA2MTYpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvY29tcGFyZS8wLjYuMTUuLi4wLjYuMTYpCgojIyMjIyBCdWcgZml4ZXMKCi0gICBSZXZlcnQgIlByb3Blcmx5IGhhbmRsZSBhdXRoZW50aWNhdGlvbiBmb3IgMzAyIHJlZGlyZWN0IFVSTHMiIChbIyYjODIwMzsxMzA0MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEzMDQxKSkKCiMjIyBbYHYwLjYuMTVgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L2Jsb2IvSEVBRC9DSEFOR0VMT0cubWQjMDYxNSkKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9jb21wYXJlLzAuNi4xNC4uLjAuNi4xNSkKClRoaXMgcmVsZWFzZSBpbmNsdWRlcyBwcmVsaW1pbmFyeSBzdXBwb3J0IGZvciB0aGUgYHB5bG9jay50b21sYCBmaWxlIGZvcm1hdCwgYXMgc3RhbmRhcmRpemVkIGluIFtQRVAgNzUxXShodHRwczovL3BlcHMucHl0aG9uLm9yZy9wZXAtMDc1MS8pLiBgcHlsb2NrLnRvbWxgIGlzIGFuIGFsdGVybmF0aXZlIHJlc29sdXRpb24gb3V0cHV0IGZvcm1hdCBpbnRlbmRlZCB0byByZXBsYWNlIGByZXF1aXJlbWVudHMudHh0YCAoZS5nLiwgaW4gdGhlIGNvbnRleHQgb2YgYHV2IHBpcCBjb21waWxlYCwgd2hlcmVieSBhICJsb2NrZWQiIGByZXF1aXJlbWVudHMudHh0YCBmaWxlIGlzIGdlbmVyYXRlZCBmcm9tIGEgc2V0IG9mIGlucHV0IHJlcXVpcmVtZW50cykuIGBweWxvY2sudG9tbGAgaXMgc3RhbmRhcmRpemVkIGFuZCB0b29sLWFnbm9zdGljLCBzdWNoIHRoYXQgaW4gdGhlIGZ1dHVyZSwgYHB5bG9jay50b21sYCBmaWxlcyBnZW5lcmF0ZWQgYnkgdXYgY291bGQgYmUgaW5zdGFsbGVkIGJ5IG90aGVyIHRvb2xzLCBhbmQgdmljZSB2ZXJzYS4KCkFzIG9mIHRoaXMgcmVsZWFzZSwgYHB5bG9jay50b21sYCBpcyBzdXBwb3J0ZWQgaW4gdGhlIGZvbGxvd2luZyBjb21tYW5kczoKCi0gICBUbyBleHBvcnQgYSBgdXYubG9ja2AgdG8gdGhlIGBweWxvY2sudG9tbGAgZm9ybWF0LCBydW46IGB1diBleHBvcnQgLW8gcHlsb2NrLnRvbWxgCi0gICBUbyBnZW5lcmF0ZSBhIGBweWxvY2sudG9tbGAgZmlsZSBmcm9tIGEgc2V0IG9mIHJlcXVpcmVtZW50cywgcnVuOiBgdXYgcGlwIGNvbXBpbGUgLW8gcHlsb2NrLnRvbWwgLXIgcmVxdWlyZW1lbnRzLmluYAotICAgVG8gaW5zdGFsbCBmcm9tIGEgYHB5bG9jay50b21sYCBmaWxlLCBydW46IGB1diBwaXAgc3luYyBweWxvY2sudG9tbGAgb3IgYHV2IHBpcCBpbnN0YWxsIC1yIHB5bG9jay50b21sYAoKIyMjIyMgRW5oYW5jZW1lbnRzCgotICAgQWRkIFBFUCA3NTEgc3VwcG9ydCB0byBgdXYgcGlwIGNvbXBpbGVgIChbIyYjODIwMzsxMzAxOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEzMDE5KSkKLSAgIEFkZCBgdXYgZXhwb3J0YCBzdXBwb3J0IGZvciBQRVAgNzUxIChbIyYjODIwMzsxMjk1NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyOTU1KSkKLSAgIEFjY2VwdCBgcmVxdWlyZW1lbnRzLnR4dGAgKHZlcmJhdGltKSBhcyBhIGZvcm1hdCBvbiB0aGUgQ0xJIChbIyYjODIwMzsxMjk1N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyOTU3KSkKLSAgIEFkZCBgVVZfTk9fRURJVEFCTEVgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHNldCBgLS1uby1lZGl0YWJsZWAgb24gYWxsIGludm9jYXRpb25zIChbIyYjODIwMzsxMjc3M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNzczKSkKLSAgIEFkZCBgcHlsb2NrLnRvbWxgIHRvIGB1diBwaXAgaW5zdGFsbGAgYW5kIGB1diBwaXAgc3luY2AgKFsjJiM4MjAzOzEyOTkyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI5OTIpKQotICAgQWRkIGEgYnJpZWYgc2xlZXAgYmVmb3JlIHNlbmRpbmcgYFNJR0lOVGAgdG8gY2hpbGQgcHJvY2Vzc2VzIChbIyYjODIwMzsxMzAxOF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEzMDE4KSkKLSAgIEFkZCB1cGxvYWQgdGltZSB0byBgdXYubG9ja2AgKFsjJiM4MjAzOzEyOTY4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI5NjgpKQotICAgQWxsb3cgdXBkYXRpbmcgR2l0IHNvdXJjZXMgYnkgbmFtZSAoWyMmIzgyMDM7MTI4OTddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjg5NykpCi0gICBDYWNoZSBgd2hpY2ggZ2l0YCBpbiBgdXYgaW5pdGAgKFsjJiM4MjAzOzEyODkzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI4OTMpKQotICAgRW5hYmxlIGAtLWRyeS1ydW5gIHdpdGggYC0tbG9ja2VkYCAvIGAtLWZyb3plbmAgZm9yIGB1diBzeW5jYCAoWyMmIzgyMDM7MTI3NzhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjc3OCkpCi0gICBJbmZlciBvdXRwdXQgdHlwZSBpbiBgdXYgZXhwb3J0YCAoWyMmIzgyMDM7MTI5NThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjk1OCkpCi0gICBNYWtlIGB1diBpbml0YCByZXNpbGllbnQgYWdhaW5zdCBicm9rZW4gZ2l0IChbIyYjODIwMzsxMjg5NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyODk1KSkKLSAgIFJlc3BlY3QgYnVpbGQgY29uc3RyYWludHMgZm9yIGB1diBydW4gLS13aXRoYCBkZXBlbmRlbmNpZXMgKFsjJiM4MjAzOzEyODgyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI4ODIpKQotICAgU3BsaXQgVVZfSU5ERVggb24gYWxsIHdoaXRlc3BhY2UgKFsjJiM4MjAzOzEyODIwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI4MjApKQotICAgU3VwcG9ydCBidWlsZCBjb25zdHJhaW50cyBpbiBgdXYgdG9vbGAgYW5kIFBFUDcyMyBzY3JpcHRzLiAoWyMmIzgyMDM7MTI4NDJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjg0MikpCi0gICBVc2Ugc3VmZml4IGZyb20gYHV2eGAgYmluYXJ5IHdoZW4gc2VhcmNoaW5nIGZvciB1diBiaW5hcnkgKFsjJiM4MjAzOzEyOTIzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI5MjMpKQotICAgVXBkYXRlIHZlcnNpb24gZm9ybWF0dGluZyB0byB1c2UgY3lhbiBjb2xvciAoWyMmIzgyMDM7MTI5NDNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjk0MykpCi0gICBBZGQgZGVidWcgbG9ncyBmb3IgdmVyc2lvbiBmaWxlIHNlYXJjaCAoWyMmIzgyMDM7MTI5NTFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjk1MSkpCi0gICBGaXggYFNvdXJjZU5vdEFsbG93ZWRgIGVycm9yIG1lc3NhZ2UgZHVyaW5nIFB5dGhvbiBkaXNjb3ZlcnkgKFsjJiM4MjAzOzEzMDEyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTMwMTIpKQotICAgT2JmdXNjYXRlIHBhc3N3b3JkIGluIGNyZWRlbnRpYWxzIGRlYnVnIG1lc3NhZ2VzIChbIyYjODIwMzsxMjk0NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyOTQ0KSkKLSAgIE9iZnVzY2F0ZSBwb3NzaWJsZSB0b2tlbnMgaW4gVVJMIGxvZ3MgKFsjJiM4MjAzOzEyOTY5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI5NjkpKQotICAgVmFsaWRhdGUgdGhhdCBQRVAgNzUxIGVudHJpZXMgZG9uJ3QgaW5jbHVkZSBtdWx0aXBsZSBzb3VyY2VzIChbIyYjODIwMzsxMjk5M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyOTkzKSkKCiMjIyMjIFByZXZpZXcgZmVhdHVyZXMKCi0gICBCdWlsZCBiYWNrZW5kOiBBZGQgcmVmZXJlbmNlIGRvY3MgYW5kIHNjaGVtYSAoWyMmIzgyMDM7MTI4MDNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjgwMykpCgojIyMjIyBCdWcgZml4ZXMKCi0gICBBbGlnbiBzdXBwb3J0ZWQgYGNvbmZpZy1zZXR0aW5nc2Agd2l0aCBleGFtcGxlIGluIGRvY3MgKFsjJiM4MjAzOzEyOTQ3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI5NDcpKQotICAgRW5zdXJlIHZpcnR1YWwgZW52aXJvbm1lbnQgaXMgY29tcGF0aWJsZSB3aXRoIGludGVycHJldGVyIG9uIHN5bmMgKFsjJiM4MjAzOzEyODg0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI4ODQpKQotICAgRml4IGBQeXRob25Eb3dubG9hZFJlcXVlc3RgIHBhcnNpbmcgZm9yIHBhcnRpYWwga2V5cyAoWyMmIzgyMDM7MTI5MjVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjkyNSkpCi0gICBGaXggcHJlLXJlbGVhc2UgZXhjbHVzaXZlIGNvbXBhcmlzb24gb3BlcmF0b3IgaW4gYHV2LXBlcDQ0MGAgKFsjJiM4MjAzOzEyODM2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI4MzYpKQotICAgRm9yd2FyZCBhZGRpdGlvbmFsIHNpZ25hbHMgdG8gdGhlIGNoaWxkIHByb2Nlc3MgaW4gYHV2IHJ1bmAgKFsjJiM4MjAzOzEzMDE3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTMwMTcpKQotICAgT21pdCBQRVAgNzUxIHZlcnNpb24gZm9yIHNvdXJjZSB0cmVlcyAoWyMmIzgyMDM7MTMwMzBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMzAzMCkpCi0gICBQYXRjaCBgQ0NgIGFuZCBgQ0NYYCBlbnRyaWVzIGluIHN5c2NvbmZpZyBmb3IgY3Jvc3MtY29tcGlsZWQgYGFhcmNoNjRgIFB5dGhvbiBkaXN0cmlidXRpb25zIChbIyYjODIwMzsxMjIzOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyMjM5KSkKLSAgIFByb3Blcmx5IGhhbmRsZSBhdXRoZW50aWNhdGlvbiBmb3IgSFRUUCAzMDIgcmVkaXJlY3QgVVJMcyAoWyMmIzgyMDM7MTI5MjBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjkyMCkpCi0gICBTZXQgNE1CIHN0YWNrIHNpemUgZm9yIGFsbCB0aHJlYWRzLCBpbnRyb2R1Y2UgYFVWX1NUQUNLX1NJWkVgIChbIyYjODIwMzsxMjgzOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyODM5KSkKLSAgIFNob3cgUHlQeSBkb3dubG9hZHMgZHVyaW5nIGB1diBweXRob24gbGlzdGAgKFsjJiM4MjAzOzEyOTE1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI5MTUpKQotICAgQWRkIGBzdWJkaXJlY3RvcnlgIHRvIERpcmVjdCBVUkwgZm9yIGxvY2FsIGRpcmVjdG9yaWVzIChbIyYjODIwMzsxMjk3MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyOTcxKSkKLSAgIFByZWZlciBzdGFibGUgcmVsZWFzZXMgb3ZlciBwcmUtcmVsZWFzZXMgaW4gYHV2IHB5dGhvbiBpbnN0YWxsYCAoWyMmIzgyMDM7MTIxOTRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjE5NCkpCi0gICBXcml0ZSByZXF1ZXN0ZWQgUHl0aG9uIHZhcmlhbnQgdG8gcGluIGZpbGUgaW4gYHV2IGluaXRgIChbIyYjODIwMzsxMjg3MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyODcwKSkKCiMjIyMjIERvY3VtZW50YXRpb24KCi0gICBGaXggQ0xJIHJlZmVyZW5jZSB3aXRoIGNvZGUgYmxvY2sgKFsjJiM4MjAzOzEyODA3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI4MDcpKQotICAgRml4IGxvY2tmaWxlIG5vdGUgKFsjJiM4MjAzOzEyNzkzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI3OTMpKQotICAgRml4IHR5cG8gaW4gYSByZWZlcmVuY2UgKFsjJiM4MjAzOzEyODU4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI4NTgpKQotICAgSW1wcm92ZSBkb2NzIGZvciBgdXYgcHl0aG9uIGxpc3QgLS1vbmx5LWRvd25sb2Fkc2AgYW5kIGAtLW9ubHktaW5zdGFsbGVkYCAoWyMmIzgyMDM7MTI5MTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjkxNikpCi0gICBVcGRhdGUgbm90ZSBvbiBsYWNrIG9mIG11c2wgZGlzdHJpYnV0aW9ucyB0byBBUk0tb25seSAoWyMmIzgyMDM7MTI4MjVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjgyNSkpCi0gICBBZGQgc2VjdGlvbiBvbiBzaGViYW5ncyBmb3Igc2NyaXB0cyAoWyMmIzgyMDM7MTE1NTNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMTU1MykpCi0gICBEaXNwbGF5IGFsaWFzZXMgZm9yIGxvbmcgYW5kIHNob3J0IGFyZ3MgaW4gdGhlIENMSSByZWZlcmVuY2UgKFsjJiM4MjAzOzEyODI0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI4MjQpKQotICAgRml4IGhpZ2hsaWdodCBsaW5lIGluIGV4cGxpY2l0IGluZGV4IGRvY3VtZW50YXRpb24gKFsjJiM4MjAzOzEyODg3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI4ODcpKQotICAgQWRkIGV4cGxpY2l0IHNvdXJjZSAobWF0Y2hpbmcgUHlUb3JjaCBndWlkZSkgKFsjJiM4MjAzOzEyODQ0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI4NDQpKQotICAgRml4IGxpbmsgdG8gaXNzdWUgKFsjJiM4MjAzOzEyODIzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI4MjMpKQotICAgRml4IGdyYW1tYXRpY2FsIGVycm9yIGluIEZhc3RBUEkgZ3VpZGUgKFsjJiM4MjAzOzEyOTA4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI5MDgpKQotICAgQWRkIGAtLWxvY2tlZGAgdG8gYHV2IHN5bmNgIGluIEdpdEh1YiBBY3Rpb25zIGd1aWRlIChbIyYjODIwMzsxMjgxOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyODE5KSkKLSAgIEltcHJvdmUgZm9ybWF0dGluZyBmb3IgYCJhbGwiYCBgZGVmYXVsdC1ncm91cHNgIHNldHRpbmcgZG9jdW1lbnRhdGlvbiAoWyMmIzgyMDM7MTI5NjNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjk2MykpCi0gICBSZXBsYWNlIGAtLWZyb3plbmAgd2l0aCBgLS1sb2NrZWRgIGluIERvY2tlciBpbnRlZ3JhdGlvbiBndWlkZSAoWyMmIzgyMDM7MTI4MThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjgxOCkpCgojIyMgW2B2MC42LjE0YF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9ibG9iL0hFQUQvQ0hBTkdFTE9HLm1kIzA2MTQpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvY29tcGFyZS8wLjYuMTMuLi4wLjYuMTQpCgojIyMjIyBQeXRob24gdmVyc2lvbnMKClRoZSBmb2xsb3dpbmcgUHl0aG9uIHZlcnNpb25zIGhhdmUgYmVlbiBhZGRlZDoKCi0gICBDUHl0aG9uIDMuMTMuMwotICAgQ1B5dGhvbiAzLjEyLjEwCi0gICBDUHl0aG9uIDMuMTEuMTIKLSAgIENQeXRob24gMy4xMC4xNwotICAgQ1B5dGhvbiAzLjkuMjIKClNlZSB0aGUgW2BweXRob24tYnVpbGQtc3RhbmRhbG9uZWAgcmVsZWFzZSBub3Rlc10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC9weXRob24tYnVpbGQtc3RhbmRhbG9uZS9yZWxlYXNlcy90YWcvMjAyNTA0MDkpIGZvciBtb3JlIGRldGFpbHMuCgojIyMjIyBFbmhhbmNlbWVudHMKCi0gICBBZGQgYHV2LWJ1aWxkYCBhbmQgYHV2X2J1aWxkYCBhbGlhc2VzIHRvIGB1diBpbml0IC0tYnVpbGQtYmFja2VuZGAgKFsjJiM4MjAzOzEyNzc2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI3NzYpKQotICAgRW1pdCBkZWRpY2F0ZWQgZXJyb3IgbWVzc2FnZSBmb3IgQ29uZGEgYGVudmlyb25tZW50LnltbGAgZmlsZXMgKFsjJiM4MjAzOzEyNjY5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI2NjkpKQoKIyMjIyMgUHJldmlldyBmZWF0dXJlcwoKLSAgIEJ1aWxkIGJhY2tlbmQ6IENoZWNrIG1vZHVsZSBkaXIgZXhpc3RzIGZvciBzZGlzdCBidWlsZCAoWyMmIzgyMDM7MTI3NzldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjc3OSkpCi0gICBCdWlsZCBiYWNrZW5kOiBGaXggc2Rpc3Qgd2l0aCBsb25nIGRpcmVjdG9yaWVzIChbIyYjODIwMzsxMjc2NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNzY0KSkKCiMjIyMjIFBlcmZvcm1hbmNlCgotICAgQXZvaWQgcXVlcnlpbmcgR2l0SHViIG9uIHJlcGVhdGVkIGluc3RhbGwgaW52b2NhdGlvbnMgKFsjJiM4MjAzOzEyNzY3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI3NjcpKQoKIyMjIyMgQnVnIGZpeGVzCgotICAgRXJyb3Igd2hlbiBgdG9vbC51di5zb3VyY2VzYCBpcyBzZXQgaW4gc3lzdGVtLWxldmVsIGNvbmZpZ3VyYXRpb24gZmlsZSAoWyMmIzgyMDM7MTI3NTddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjc1NykpCi0gICBTcGxpdCB3b3Jrc3BhY2UgbWVtYmVycyBvbnRvIHRoZWlyIG93biBsaW5lcyBpbiBgdXYgaW5pdGAgKFsjJiM4MjAzOzEyNzU2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI3NTYpKQoKIyMjIyMgRG9jdW1lbnRhdGlvbgoKLSAgIEFkZCBsb2NrZmlsZSBub3RlIGFib3V0IFBFUCA3NTEgKFsjJiM4MjAzOzEyNzMyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI3MzIpKQotICAgRXh0ZW5kIHRoZSByZWZlcmVuY2UgZG9jdW1lbnRhdGlvbiBmb3IgYHV2IHBpcCBzeW5jYCAoWyMmIzgyMDM7MTI2ODNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjY4MykpCi0gICBGaXggbWlzbWF0Y2hlZCBwaXAgaW50ZXJmYWNlIGhlYWRlciAvIG5hdiB0aXRsZXMgKFsjJiM4MjAzOzEyNjQwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI2NDApKQoKIyMjIFtgdjAuNi4xM2BdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvYmxvYi9IRUFEL0NIQU5HRUxPRy5tZCMwNjEzKQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L2NvbXBhcmUvMC42LjEyLi4uMC42LjEzKQoKIyMjIyMgRW5oYW5jZW1lbnRzCgotICAgQWRkIGAtLXNob3ctdmVyc2lvbmAgdG8gYHV2IHB5dGhvbiBmaW5kYCAoWyMmIzgyMDM7MTIzNzZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjM3NikpCi0gICBSZW1vdmUgYC0tbm8tY29uZmlnYCB3YXJuaW5nIGZyb20gYHV2IHBpcCBjb21waWxlYCBhbmQgYHV2IHBpcCBzeW5jYCAoWyMmIzgyMDM7MTI2NDJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjY0MikpCi0gICBTa2lwIHJlcGVhdGVkIGRpcmVjdG9yaWVzIGluIGBQQVRIYCB3aGVuIHNlYXJjaGluZyBmb3IgUHl0aG9uIGludGVycHJldGVycyAoWyMmIzgyMDM7MTIzNjddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjM2NykpCi0gICBVbnNldCBgU0NSSVBUX1BBVEhgIGluIHJlbG9jYXRhYmxlIGFjdGl2YXRpb24gc2NyaXB0IChbIyYjODIwMzsxMjY3Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNjcyKSkKLSAgIEFkZCBgVVZfUFlUSE9OX0RPV05MT0FEU19KU09OX1VSTGAgdG8gc2V0IGN1c3RvbSBtYW5hZ2VkIHB5dGhvbiBzb3VyY2VzIChbIyYjODIwMzsxMDkzOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEwOTM5KSkKLSAgIFJlamVjdCBgcHlwcm9qZWN0LnRvbWxgIGZpbGVzIGluIGB1diBwaXAgY29tcGlsZSAtb2AgKFsjJiM4MjAzOzEyNjczXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI2NzMpKQotICAgUmVzcGVjdCB0aGUgYC0tb2ZmbGluZWAgZmxhZyBmb3IgR2l0IG9wZXJhdGlvbnMgKFsjJiM4MjAzOzEyNjE5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI2MTkpKQoKIyMjIyMgQnVnIGZpeGVzCgotICAgV2FybiBpbnN0ZWFkIG9mIGVycm9yIGlmIENSQyBhcHBlYXJzIHRvIGJlIG1pc3NpbmcgKFsjJiM4MjAzOzEyNzIyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI3MjIpKQotICAgQXZvaWQgaW5maW5pdGUgbG9vcCBpbiBgdXYgZXhwb3J0YCB3aXRoIGNvbmZsaWN0cyAoWyMmIzgyMDM7MTI3MjZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjcyNikpCgojIyMjIyBSdXN0IEFQSQoKLSAgIFVwZGF0ZSBNU1JWIHRvIDEuODQgKFsjJiM4MjAzOzEyNjcwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI2NzApKQoKIyMjIFtgdjAuNi4xMmBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvYmxvYi9IRUFEL0NIQU5HRUxPRy5tZCMwNjEyKQoKW0NvbXBhcmUgU291cmNlXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L2NvbXBhcmUvMC42LjExLi4uMC42LjEyKQoKIyMjIyMgRW5oYW5jZW1lbnRzCgotICAgUmVwb3J0IHRoZSBxdWVyaWVkIGV4ZWN1dGFibGUgcGF0aCBpbiBgdXYgcHl0aG9uIGxpc3RgIChbIyYjODIwMzsxMjYyOF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNjI4KSkKLSAgIEltcHJvdmUgYXJjaGl2ZSB1bnBhY2sgZXJyb3IgbWVzc2FnZXMgKFsjJiM4MjAzOzEyNjI3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vYXN0cmFsLXNoL3V2L3B1bGwvMTI2MjcpKQoKIyMjIyMgQnVnIGZpeGVzCgotICAgUmVzcGVjdCBgYXV0aGVudGljYXRlYCB3aGVuIHVzaW5nIGBleHBsaWNpdCA9IHRydWVgIChbIyYjODIwMzsxMjYzMV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNjMxKSkKLSAgIE5vcm1hbGl6ZSBleHRyYSBhbmQgZ3JvdXAgbmFtZXMgaW4gYHV2IGFkZGAgYW5kIGB1diByZW1vdmVgIChbIyYjODIwMzsxMjU4Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNTg2KSkKLSAgIEVuZm9yY2UgQ1JDLTMyIGNoZWNrcyB3aGVuIHVucGFja2luZyBhcmNoaXZlcyAoWyMmIzgyMDM7MTI2MjNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjYyMykpCi0gICBGaXggcGFyc2luZyBvZiBgcHl0aG9uLXBsYXRmb3JtYCBpbiBzZXR0aW5ncyBmaWxlcyAoWyMmIzgyMDM7MTI1OTJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjU5MikpCgojIyMjIyBEb2N1bWVudGF0aW9uCgotICAgQWRkIG5vdGUgYWJvdXQgYHV2IGJ1aWxkYCB0byBgcGFja2FnZSA9IGZhbHNlYCAoWyMmIzgyMDM7MTI2MDhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9hc3RyYWwtc2gvdXYvcHVsbC8xMjYwOCkpCi0gICBBZGQgaW5kZXggZmFsbGJhY2sgbm90ZSB0byBgYXV0aGVudGljYXRlID0gYWx3YXlzYCBkb2N1bWVudGF0aW9uIChbIyYjODIwMzsxMjQ5OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNDk4KSkKLSAgIEZpeCBpbnZhbGlkICdraW5kJyByZWZlcmVuY2UgaW4gZmxhdCBpbmRleCBkb2NzIChbIyYjODIwMzsxMjU4M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2FzdHJhbC1zaC91di9wdWxsLzEyNTgzKSkKCjwvZGV0YWlscz4KCjxkZXRhaWxzPgo8c3VtbWFyeT5wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMgKG5ldGJveC1wbHVnaW4tZG5zKTwvc3VtbWFyeT4KCiMjIyBbYHYxLjIuOWBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcmVsZWFzZXMvdGFnLzEuMi45KTogRmVhdHVyZSByZWxlYXNlIDEuMi45CgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvY29tcGFyZS8xLjIuOC4uLjEuMi45KQoKIyMjIyBXaGF0J3MgQ2hhbmdlZAoKLSAgIFJlZGVzaWduZWQgdGhlIHJlY29yZCBDaG9pY2VTZXRzIGFuZCBjcmVhdGVkIHRoZSBgY3VzdG9tX3JlY29yZF90eXBlc2Agb3B0aW9uIGJ5IFtAJiM4MjAzO3BldGVlY2tlbF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3BldGVlY2tlbCkgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcHVsbC81OTldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcHVsbC81OTkpCi0gICBQcm92aWRlIGEgZGVmYXVsdCBsaXN0IG9mIGZpbHRlcmVkIFJSVFlQRXMgYnkgW0AmIzgyMDM7cGV0ZWVja2VsXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGV0ZWVja2VsKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL3BldGVlY2tlbC9uZXRib3gtcGx1Z2luLWRucy9wdWxsLzYwMV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3BldGVlY2tlbC9uZXRib3gtcGx1Z2luLWRucy9wdWxsLzYwMSkKLSAgIHNsaWdodCBjaGFuZ2Ugb2Ygd29yZGluZyBieSBbQCYjODIwMztqcG1lbnNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9qcG1lbnMpIGluIFtodHRwczovL2dpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL3B1bGwvNjAyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL3B1bGwvNjAyKQotICAgQWRkZWQgdGhlIG9wdGlvbiB0byByZW1vdmUgc3BlY2lmaWMgcmVjb3JkIHR5cGVzIGZyb20gdGhlIGZpbHRlciBsaXN0IGJ5IFtAJiM4MjAzO3BldGVlY2tlbF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3BldGVlY2tlbCkgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcHVsbC82MDRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcHVsbC82MDQpCi0gICBJbnRyb2R1Y2VkIGNoZWNrIGZvciBTT0Etc2FmZSBmaWVsZHMgYW5kIGFkZGVkIHRlc3RzIGJ5IFtAJiM4MjAzO3BldGVlY2tlbF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3BldGVlY2tlbCkgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcHVsbC82MDZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcHVsbC82MDYpCi0gICBBZGRlZCB0aGUgcGFyZW50YWxfYWdlbnRzIGZpZWxkIHRvIEROU1NFQ1BvbGljeSBieSBbQCYjODIwMztwZXRlZWNrZWxdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwpIGluIFtodHRwczovL2dpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL3B1bGwvNjA3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL3B1bGwvNjA3KQotICAgTW92ZWQgdGhlIHBhcmVudGFsX2FnZW50cyBmaWVsZCBmcm9tIEROU1NFQ1BvbGljeSB0byBab25lIGJ5IFtAJiM4MjAzO3BldGVlY2tlbF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3BldGVlY2tlbCkgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcHVsbC82MDldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcHVsbC82MDkpCgoqKkZ1bGwgQ2hhbmdlbG9nKio6IGh0dHBzOi8vZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvY29tcGFyZS8xLjIuNy4uLjEuMi45CgojIyMgW2B2MS4yLjhgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL2NvbXBhcmUvMS4yLjcuLi4xLjIuOCkKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3BldGVlY2tlbC9uZXRib3gtcGx1Z2luLWRucy9jb21wYXJlLzEuMi43Li4uMS4yLjgpCgojIyMgW2B2MS4yLjdgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL3JlbGVhc2VzL3RhZy8xLjIuNyk6IEZlYXR1cmUvQnVnZml4IFJlbGVhc2UgMS4yLjcKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3BldGVlY2tlbC9uZXRib3gtcGx1Z2luLWRucy9jb21wYXJlLzEuMi42Li4uMS4yLjcpCgojIyMjIEROU1NFQwoKVGhpcyBpcyByZWxlYXNlIGFkZHMgRE5TU0VDIHN1cHBvcnQgZm9yIE5ldEJveCBETlMuCgpOZXRCb3ggRE5TIHN1cHBvcnRzIHRoZSBtYW5hZ2VtZW50IG9mIEROU1NFQyBpbiBhcyBtdWNoIGFzIEROU1NFQyBLZXkgVGVtcGxhdGVzIGFuZCBETlNTRUMgUG9saWNpZXMgY2FuIGJlIHN0b3JlZCBpbiBOZXRCb3ggRE5TIGFuZCBhc3NpZ25lZCB0byB6b25lcy4gSXQgZG9lcyBub3QsIGhvd2V2ZXIsIHN1cHBvcnQgem9uZSBzaWduaW5nIG5vciBzdG9yaW5nIGNyeXB0b2dyYXBoaWMgbWF0ZXJpYWwgaW4gdGhlIE5ldEJveCBkYXRhYmFzZS4gVGhlcmUgYXJlIHR3byBtYWluIHJlYXNvbnMgZm9yIHRoaXMgY29uY2VwdDoKCjEuICBTdG9yaW5nIGNyeXB0b2dyYXBoaWMgbWF0ZXJpYWwgaW4gYSBkYXRhIHNvdXJjZSBmb3IgYXV0b21hdGlvbiBpcyBnZW5lcmFsbHkgcHJvYmxlbWF0aWMuIFdoaWxlIHRoZXJlIGlzIHRoZSBOZXRCb3ggU2VjcmV0cyBwbHVnaW4sIGl0IGlzIGJldHRlciBwcmFjdGljZSB0byBzdG9yZSBjb25maWRlbnRpYWwgZGF0YSBpbiB2YXVsdCBzeXN0ZW1zIHNwZWNpZmljYWxseSBjcmVhdGVkIGZvciB0aGlzIHB1cnBvc2UuIChJbiBzb21lIGNhc2VzIHRoZSBrZXlzIGFyZSBzdG9yZWQgaW4gSFNNcyBhcyBhbiBhZGRlZCBtZXRob2Qgb2YgcHJvdGVjdGlvbi4pCjIuICBJbiB0eXBpY2FsIG1vZGVybiBzY2VuYXJpb3MsIHNpZ25pbmcgc2VydmVycyBtYWludGFpbiBrZXlzIGFuZCBzaWduIHJlY29yZHMsIHNvIHN1Y2ggY29uZmlndXJhdGlvbnMgZG8gbm90IGV2ZW4gcmVxdWlyZSBoYXZpbmcgTmV0Qm94IEROUyBwcm92aWRlIGtleXMgb3IgY3JlYXRlIHRoZSBzaWduYXR1cmVzIGZyb20gd2l0aGluIE5ldEJveCBETlMuCgpBZGRpdGlvbmFsbHksIHRoZXJlIGlzIG5vIGRpcmVjdCBpbnRlZ3JhdGlvbiBiZXR3ZWVuIE5ldEJveCBhbmQgYW55IGdpdmVuIG5hbWUgc2VydmVyIGltcGxlbWVudGF0aW9uLCBzbyBhbiBpbnRlcmZhY2UgZm9yIHByb3ZpZGluZyBzaWduZWQgem9uZXMgdG8gYSBuYW1lIHNlcnZlciBpcyBnZW5lcmFsbHkgb3V0IG9mIHNjb3BlIGZvciBOZXRCb3ggRE5TLCBqdXN0IGFzIGl0IGlzIHRoZSBjYXNlIGZvciBzZXJ2aW5nIHBsYWluIEROUy4gVGhpcyBzaG91bGQgYmUgaW1wbGVtZW50ZWQgdXNpbmcgc3BlY2lmaWMgc29sdXRpb25zIGFkYXB0ZWQgdG8gdGhlIHVzZSBjYXNlIGFuZCB0aGUgbmFtZSBzZXJ2ZXIgaW1wbGVtZW50YXRpb24gdXNlZC4KCkFzIG5vdGVkIGVhcmxpZXIgdGhlcmUgYXJlIHR3byBkYXRhIG1vZGVscyBmb3IgRE5TU0VDIGluIE5ldEJveCBETlM6IEROU1NFQyBLZXkgVGVtcGxhdGVzIGFuZCBETlNTRUMgUG9saWNpZXMuIFRoZSBmb3JtZXIgYXJlIHVzZWQgZm9yIHN0b3JpbmcgcGFyYW1ldGVycyBmb3IgRE5TU0VDIEtleXMgc3VjaCBhcyB0aGUgdHlwZSwgYWxnb3JpdGhtIGFuZCBsaWZldGltZSwgYW5kIHRoZSBsYXR0ZXIgdG8gZGVmaW5lIHBvbGljaWVzIHRoYXQgZGV0ZXJtaW5lIGhvdyBvZnRlbiBzaWduYXR1cmVzIGFyZSByZWdlbmVyYXRlZCwgRFMgcmVjb3JkcyBhcmUgcHJvcGFnYXRlZCBldGMuCgpXaGlsZSB0aGUgaW1wbGVtZW50YXRpb24gaXMgb3JpZW50ZWQgbGFyZ2VseSB0b3dhcmRzIG9wdGlvbnMgQklORCA5IHByb3ZpZGVzLCB0aGlzIGlzIG1haW5seSBiZWNhdXNlIHRoYXQgc29mdHdhcmUgaGFzIGEgaHVnZSBzZXQgb2YgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBvdGhlciBwcm9kdWN0cyBhcmUgdXN1YWxseSBub3QgdmVyeSBkaWZmZXJlbnQsIGluIG1vc3QgY2FzZXMgbW9yZSBsaW1pdGVkIHRoYW4gQklORCA5LiBHaXZlbiB0aGUgbGFyZ2UgaW5zdGFsbGVkIGJhc2Ugb2YgQklORCA5LCB0aGlzIGlzIGNvbnNpZGVyZWQgYSBnb29kIGJhc2lzLiAoVGhlcmUgaXMsIGhvd2V2ZXIsIG5vIHJlYXNvbiB3aHkgTmV0Qm94IEROUyBjYW5ub3QgYmUgdXNlZCB0byBtYWludGFpbiBkYXRhIGZvciwgc2F5LCBLbm90LUROUyBvciBQb3dlckROUy4pCgpGb3IgYSBzdW1tYXJ5IG9mIHRoZSBuZXcgZnVuY3Rpb25hbGl0eSwgc2VlIFt0aGlzIGJsb2dwb3N0XShodHRwczovL2pwbWVucy5uZXQvMjAyNS8wMy8xNi9kbnNzZWMtcG9saWN5LWFuZC1rZXktdGVtcGxhdGUtc3VwcG9ydC1pbi1uZXRib3gtZG5zLykgYnkgW0AmIzgyMDM7anBtZW5zXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vanBtZW5zKS4KCiMjIyMgV2hhdCdzIENoYW5nZWQKCi0gICBTT0EgTU5BTUUgbXVzdCBiZSBjaGVja2VkIGluIHpvbmUgZm9ybXMgaWYgem9uZSB0ZW1wbGF0ZSBpcyBub3Qgc2V0IGJ5IFtAJiM4MjAzO3BldGVlY2tlbF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3BldGVlY2tlbCkgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcHVsbC81ODldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcHVsbC81ODkpCi0gICBjb21wbGV0ZSBmciB0cmFuc2xhdGlvbiBieSBbQCYjODIwMztqZWFuMV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2plYW4xKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL3BldGVlY2tlbC9uZXRib3gtcGx1Z2luLWRucy9wdWxsLzU5Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3BldGVlY2tlbC9uZXRib3gtcGx1Z2luLWRucy9wdWxsLzU5MikKLSAgIENoZWNrIHdoZXRoZXIgem9uZSB3YXMgcGFzc2VkIHZpYSBkaWN0IGJlZm9yZSByZXNvbHZpbmcgdGVtcGxhdGVzIGJ5IFtAJiM4MjAzO3BldGVlY2tlbF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3BldGVlY2tlbCkgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcHVsbC81OTRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcHVsbC81OTQpCi0gICBBZGQgRE5TU0VDIHN1cHBvcnQgYnkgW0AmIzgyMDM7cGV0ZWVja2VsXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGV0ZWVja2VsKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL3BldGVlY2tlbC9uZXRib3gtcGx1Z2luLWRucy9wdWxsLzU2M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3BldGVlY2tlbC9uZXRib3gtcGx1Z2luLWRucy9wdWxsLzU2MykKLSAgIEFkZCBkb21haW4gcmVnaXN0cmF0aW9uIGV4cGlyYXRpb24gZGF0ZSBhbmQgRVBQIHN0YXR1cyBmaWVsZHMgYnkgW0AmIzgyMDM7cGV0ZWVja2VsXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGV0ZWVja2VsKSBpbiBbaHR0cHM6Ly9naXRodWIuY29tL3BldGVlY2tlbC9uZXRib3gtcGx1Z2luLWRucy9wdWxsLzU5MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3BldGVlY2tlbC9uZXRib3gtcGx1Z2luLWRucy9wdWxsLzU5MCkKLSAgIEFkZCB0ZXN0cyBmb3IgTmV0Qm94IEROUyBvYmplY3RzIGFzIGN1c3RvbSBmaWVsZCB0YXJnZXRzIGJ5IFtAJiM4MjAzO3BldGVlY2tlbF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL3BldGVlY2tlbCkgaW4gW2h0dHBzOi8vZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcHVsbC81OTVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwvbmV0Ym94LXBsdWdpbi1kbnMvcHVsbC81OTUpCi0gICBJbml0aWFsaXNlIHZpZXdzIGluIGB1cmxzLnB5YCBpbnN0ZWFkIG9mIGByZWFkeSgpYCBieSBbQCYjODIwMztwZXRlZWNrZWxdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9wZXRlZWNrZWwpIGluIFtodHRwczovL2dpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL3B1bGwvNTk2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL3B1bGwvNTk2KQoKKipGdWxsIENoYW5nZWxvZyoqOiBodHRwczovL2dpdGh1Yi5jb20vcGV0ZWVja2VsL25ldGJveC1wbHVnaW4tZG5zL2NvbXBhcmUvMS4yLjYuLi4xLjIuNwoKPC9kZXRhaWxzPgoKLS0tCgojIyMgQ29uZmlndXJhdGlvbgoK8J+ThSAqKlNjaGVkdWxlKio6IEJyYW5jaCBjcmVhdGlvbiAtIEF0IGFueSB0aW1lIChubyBzY2hlZHVsZSBkZWZpbmVkKSwgQXV0b21lcmdlIC0gQXQgYW55IHRpbWUgKG5vIHNjaGVkdWxlIGRlZmluZWQpLgoK8J+apiAqKkF1dG9tZXJnZSoqOiBEaXNhYmxlZCBieSBjb25maWcuIFBsZWFzZSBtZXJnZSB0aGlzIG1hbnVhbGx5IG9uY2UgeW91IGFyZSBzYXRpc2ZpZWQuCgrimbsgKipSZWJhc2luZyoqOiBXaGVuZXZlciBQUiBiZWNvbWVzIGNvbmZsaWN0ZWQsIG9yIHlvdSB0aWNrIHRoZSByZWJhc2UvcmV0cnkgY2hlY2tib3guCgrwn5G7ICoqSW1tb3J0YWwqKjogVGhpcyBQUiB3aWxsIGJlIHJlY3JlYXRlZCBpZiBjbG9zZWQgdW5tZXJnZWQuIEdldCBbY29uZmlnIGhlbHBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9yZW5vdmF0ZWJvdC9yZW5vdmF0ZS9kaXNjdXNzaW9ucykgaWYgdGhhdCdzIHVuZGVzaXJlZC4KCi0tLQoKIC0gWyBdIDwhLS0gcmViYXNlLWNoZWNrIC0tPklmIHlvdSB3YW50IHRvIHJlYmFzZS9yZXRyeSB0aGlzIFBSLCBjaGVjayB0aGlzIGJveAoKLS0tCgpUaGlzIFBSIHdhcyBnZW5lcmF0ZWQgYnkgW01lbmQgUmVub3ZhdGVdKGh0dHBzOi8vbWVuZC5pby9yZW5vdmF0ZS8pLiBWaWV3IHRoZSBbcmVwb3NpdG9yeSBqb2IgbG9nXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2dpdGh1Yi9vc2lzbS9jb250YWluZXItaW1hZ2VzKS4KPCEtLXJlbm92YXRlLWRlYnVnOmV5SmpjbVZoZEdWa1NXNVdaWElpT2lJek9TNHlNRGN1TVNJc0luVndaR0YwWldSSmJsWmxjaUk2SWpNNUxqSTFOeTR6SWl3aWRHRnlaMlYwUW5KaGJtTm9Jam9pYldGcGJpSXNJbXhoWW1Wc2N5STZXeUp5Wlc1dmRtRjBaU0pkZlE9PS0tPgo=
      patchset: 87718016771b5a4793796d3a9af3695c9451f609
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: fa94074a33c2a4b1ff3eaadb063e1f29046bf671
          trusted/project_1/opendev.org/zuul/zuul-jobs:
            canonical_name: opendev.org/zuul/zuul-jobs
            checkout: master
            commit: 34ae850a7303da5bb21907d41439ae6afbc1fe3e
          untrusted/project_0/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: f7abfe5b7dfd12b80bc14a21a9dbf0711aea1f3b
          untrusted/project_1/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: fa94074a33c2a4b1ff3eaadb063e1f29046bf671
          untrusted/project_2/opendev.org/zuul/zuul-jobs:
            canonical_name: opendev.org/zuul/zuul-jobs
            checkout: master
            commit: 34ae850a7303da5bb21907d41439ae6afbc1fe3e
        playbooks:
        - path: untrusted/project_0/github.com/osism/zuul-jobs/playbooks/hadolint/run.yaml
          roles:
          - checkout: main
            checkout_description: playbook branch
            link_name: ansible/playbook_0/role_0/zuul-jobs
            link_target: untrusted/project_0/github.com/osism/zuul-jobs
            role_path: ansible/playbook_0/role_0/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_1/zuul-config
            link_target: untrusted/project_1/github.com/osism/zuul-config
            role_path: ansible/playbook_0/role_1/zuul-config/roles
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/playbook_0/role_2/zuul-jobs
            link_target: untrusted/project_2/opendev.org/zuul/zuul-jobs
            role_path: ansible/playbook_0/role_2/zuul-jobs/roles
      post_review: false
      project:
        canonical_hostname: github.com
        canonical_name: github.com/osism/container-images
        name: osism/container-images
        short_name: container-images
        src_dir: src/github.com/osism/container-images
      projects:
        github.com/osism/container-images:
          canonical_hostname: github.com
          canonical_name: github.com/osism/container-images
          checkout: main
          checkout_description: zuul branch
          commit: 54173d7390b59cea6d60bfb9de9727c07d517e3d
          name: osism/container-images
          required: false
          short_name: container-images
          src_dir: src/github.com/osism/container-images
      ref: refs/pull/709/head
      resources: {}
      tenant: osism
      timeout: 1800
      voting: true
