all:
  hosts:
    ubuntu-noble:
      ansible_connection: ssh
      ansible_host: 81.163.193.233
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      docker_namespace: osism
      docker_registry: osism.harbor.regio.digital
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: 92ec9a99-d1aa-44bd-b8eb-e2f62e60b0f2
        host_id: 55633341e2323245483187cac115f046b03a9f9bdd80b43c7e9345ac
        interface_ip: 81.163.193.233
        label: ubuntu-noble
        private_ipv4: 10.128.0.110
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.193.233
        public_ipv6: ''
        region: null
        slot: null
  vars:
    docker_namespace: osism
    docker_registry: osism.harbor.regio.digital
    zuul:
      _inheritance_path:
      - '<Job base branches: None source: osism/zuul-config/zuul.d/jobs.yaml@main#2>'
      - '<Job container-image-python-osism-build branches: None source: osism/python-osism/.zuul.yaml@main#43>'
      - '<Job container-image-python-osism-build branches: None source: osism/python-osism/.zuul.yaml@main#71>'
      ansible_version: '8'
      attempts: 1
      branch: main
      build: e6b49f9244314dabb920bb70cd61ed7d
      buildset: abbf0e4d9d214d408740dd7280e51bae
      change: '1262'
      change_message: "chore(deps): update dependency celery to v5.5.0\n\nThis PR\
        \ contains the following updates:\n\n| Package | Change | Age | Adoption |\
        \ Passing | Confidence |\n|---|---|---|---|---|---|\n| [celery](https://docs.celeryq.dev/)\
        \ ([source](https://redirect.github.com/celery/celery), [changelog](https://docs.celeryq.dev/en/stable/changelog.html))\
        \ | `==5.4.0` -> `==5.5.0` | [![age](https://developer.mend.io/api/mc/badges/age/pypi/celery/5.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/celery/5.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/celery/5.4.0/5.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ | [![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/celery/5.4.0/5.5.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)\
        \ |\n\n---\n\n### Release Notes\n\n<details>\n<summary>celery/celery (celery)</summary>\n\
        \n### [`v5.5.0`](https://redirect.github.com/celery/celery/blob/HEAD/Changelog.rst#550)\n\
        \n[Compare Source](https://redirect.github.com/celery/celery/compare/v5.4.0...v5.5.0)\n\
        \n\\=====\n\n:release-date: 2025-03-31\n:release-by: Tomer Nosrati\n\nCelery\
        \ v5.5.0 is now available.\n\nKey Highlights\n\n```\n\nSee :ref:`whatsnew-5.5`\
        \ for a complete overview or read the main highlights below.\n\nRedis Broker\
        \ Stability Improvements\n-----------------------------------\n\nLong-standing\
        \ disconnection issues with the Redis broker have been identified and\nresolved\
        \ in Kombu 5.5.0, which is included with this release. These improvements\n\
        significantly enhance stability when using Redis as a broker.\n\nAdditionally,\
        \ the Redis backend now has better exception handling with the new\n``exception_safe_to_retry``\
        \ feature, which improves resilience during temporary\nRedis connection issues.\
        \ See :ref:`conf-redis-result-backend` for complete\ndocumentation.\n\nContributed\
        \ by `@drienkop <https://github.com/drienkop>`_ in\n`#&#8203;9614 <https://github.com/celery/celery/pull/9614>`_.\n\
        \n``pycurl`` replaced with ``urllib3``\n------------------------------------\n\
        \nReplaced the :pypi:`pycurl` dependency with :pypi:`urllib3`.\n\nWe're monitoring\
        \ the performance impact of this change and welcome feedback from users\n\
        who notice any significant differences in their environments.\n\nContributed\
        \ by `@spawn-guy <https://github.com/spawn-guy>`_ in Kombu\n`#&#8203;2134\
        \ <https://github.com/celery/kombu/pull/2134>`_ and integrated in Celery via\n\
        `#&#8203;9526 <https://github.com/celery/celery/pull/9526>`_.\n\nRabbitMQ\
        \ Quorum Queues Support\n------------------------------\n\nAdded support for\
        \ RabbitMQ's new `Quorum Queues <https://www.rabbitmq.com/docs/quorum-queues>`_\n\
        feature, including compatibility with ETA tasks. This implementation has some\
        \ limitations compared\nto classic queues, so please refer to the documentation\
        \ for details.\n\n`Native Delayed Delivery <https://docs.particular.net/transports/rabbitmq/delayed-delivery>`_\n\
        is automatically enabled when quorum queues are detected to implement the\
        \ ETA mechanism.\n\nSee :ref:`using-quorum-queues` for complete documentation.\n\
        \nConfiguration options:\n\n- :setting:`broker_native_delayed_delivery_queue_type`:\
        \ Specifies the queue type for\n  delayed delivery (default: ``quorum``)\n\
        - :setting:`task_default_queue_type`: Sets the default queue type for tasks\n\
        \  (default: ``classic``)\n- :setting:`worker_detect_quorum_queues`: Controls\
        \ automatic detection of quorum\n  queues (default: ``True``)\n\nContributed\
        \ in `#&#8203;9207 <https://github.com/celery/celery/pull/9207>`_,\n`#&#8203;9121\
        \ <https://github.com/celery/celery/pull/9121>`_, and\n`#&#8203;9599 <https://github.com/celery/celery/pull/9599>`_.\n\
        \nFor details regarding the 404 errors, see\n`New Year's Security Incident\
        \ <https://github.com/celery/celery/discussions/9525>`_.\n\nSoft Shutdown\
        \ Mechanism\n-----------------------\n\nSoft shutdown is a time limited warm\
        \ shutdown, initiated just before the cold shutdown.\nThe worker will allow\
        \ :setting:`worker_soft_shutdown_timeout` seconds for all currently\nexecuting\
        \ tasks to finish before it terminates. If the time limit is reached, the\
        \ worker\nwill initiate a cold shutdown and cancel all currently executing\
        \ tasks.\n\nThis feature is particularly valuable when using brokers with\
        \ visibility timeout\nmechanisms, such as Redis or SQS. It allows the worker\
        \ enough time to re-queue\ntasks that were not completed before exiting, preventing\
        \ task loss during worker\nshutdown.\n\nSee :ref:`worker-stopping` for complete\
        \ documentation on worker shutdown types.\n\nConfiguration options:\n\n- :setting:`worker_soft_shutdown_timeout`:\
        \ Sets the duration in seconds for the soft\n  shutdown period (default: ``0.0``,\
        \ disabled)\n- :setting:`worker_enable_soft_shutdown_on_idle`: Controls whether\
        \ soft shutdown\n  should be enabled even when the worker is idle (default:\
        \ ``False``)\n\nContributed by `@Nusnus <https://github.com/Nusnus>`_ in\n\
        `#&#8203;9213 <https://github.com/celery/celery/pull/9213>`_,\n`#&#8203;9231\
        \ <https://github.com/celery/celery/pull/9231>`_, and\n`#&#8203;9238 <https://github.com/celery/celery/pull/9238>`_.\n\
        \nPydantic Support\n----------------\n\nNew native support for Pydantic models\
        \ in tasks. This integration\nallows you to leverage Pydantic's powerful data\
        \ validation and serialization\ncapabilities directly in your Celery tasks.\n\
        \nExample usage:\n\n.. code-block:: python\n\n    from pydantic import BaseModel\n\
        \    from celery import Celery\n\n    app = Celery('tasks')\n\n    class ArgModel(BaseModel):\n\
        \        value: int\n\n    class ReturnModel(BaseModel):\n        value: str\n\
        \n    @&#8203;app.task(pydantic=True)\n    def x(arg: ArgModel) -> ReturnModel:\n\
        \n### args/kwargs type hinted as Pydantic model will be converted\n      \
        \  assert isinstance(arg, ArgModel)\n\n### The returned model will be converted\
        \ to a dict automatically\n        return ReturnModel(value=f\"example: {arg.value}\"\
        )\n\nSee :ref:`task-pydantic` for complete documentation.\n\nConfiguration\
        \ options:\n\n- ``pydantic=True``: Enables Pydantic integration for the task\n\
        - ``pydantic_strict=True/False``: Controls whether strict validation is enabled\n\
        \  (default: ``False``)\n- ``pydantic_context={...}``: Provides additional\
        \ context for validation\n- ``pydantic_dump_kwargs={...}``: Customizes serialization\
        \ behavior\n\nContributed by `@mathiasertl <https://github.com/mathiasertl>`_\
        \ in\n`#&#8203;9023 <https://github.com/celery/celery/pull/9023>`_,\n`#&#8203;9319\
        \ <https://github.com/celery/celery/pull/9319>`_, and\n`#&#8203;9393 <https://github.com/celery/celery/pull/9393>`_.\n\
        \nGoogle Pub/Sub Transport\n------------------------\n\nNew support for Google\
        \ Cloud Pub/Sub as a message transport, expanding\nCelery's cloud integration\
        \ options.\n\nSee :ref:`broker-gcpubsub` for complete documentation.\n\nFor\
        \ the Google Pub/Sub support you have to install additional dependencies:\n\
        \n.. code-block:: console\n\n    $ pip install \"celery[gcpubsub]\"\n\nThen\
        \ configure your Celery application to use the Google Pub/Sub transport:\n\
        \n.. code-block:: python\n\n    broker_url = 'gcpubsub://projects/project-id'\n\
        \nContributed by `@haimjether <https://github.com/haimjether>`_ in\n`#&#8203;9351\
        \ <https://github.com/celery/celery/pull/9351>`_.\n\nPython 3.13 Support\n\
        -------------------\n\nOfficial support for Python 3.13. All core dependencies\
        \ have been\nupdated to ensure compatibility, including Kombu and py-amqp.\n\
        \nThis release maintains compatibility with Python 3.8 through 3.13, as well\
        \ as\nPyPy 3.10+.\n\nContributed by `@Nusnus <https://github.com/Nusnus>`_\
        \ in\n`#&#8203;9309 <https://github.com/celery/celery/pull/9309>`_ and\n`#&#8203;9350\
        \ <https://github.com/celery/celery/pull/9350>`_.\n\nREMAP_SIGTERM Support\n\
        ---------------------\n\nThe \"REMAP_SIGTERM\" feature, previously undocumented,\
        \ has been tested, documented,\nand is now officially supported. This feature\
        \ allows you to remap the SIGTERM\nsignal to SIGQUIT, enabling you to initiate\
        \ a soft or cold shutdown using TERM\ninstead of QUIT.\n\nThis is particularly\
        \ useful in containerized environments where SIGTERM is the\nstandard signal\
        \ for graceful termination.\n\nSee :ref:`Cold Shutdown documentation <worker-REMAP_SIGTERM>`\
        \ for more info.\n\nTo enable this feature, set the environment variable:\n\
        \n.. code-block:: bash\n\n    export REMAP_SIGTERM=\"SIGQUIT\"\n\nContributed\
        \ by `@Nusnus <https://github.com/Nusnus>`_ in\n`#&#8203;9461 <https://github.com/celery/celery/pull/9461>`_.\n\
        \nDatabase Backend Improvements\n-----------------------------\n\nNew ``create_tables_at_setup``\
        \ option for the database\nbackend. This option controls when database tables\
        \ are created, allowing for\nnon-lazy table creation.\n\nBy default (``create_tables_at_setup=True``),\
        \ tables are created during backend\ninitialization. Setting this to ``False``\
        \ defers table creation until they are\nactually needed, which can be useful\
        \ in certain deployment scenarios where you want\nmore control over database\
        \ schema management.\n\nSee :ref:`conf-database-result-backend` for complete\
        \ documentation.\n\nConfiguration:\n\n.. code-block:: python\n\n    app.conf.result_backend\
        \ = 'db+sqlite:///results.db'\n    app.conf.database_create_tables_at_setup\
        \ = False\n\nContributed by `@MarcBresson <https://github.com/MarcBresson>`_\
        \ in\n`#&#8203;9228 <https://github.com/celery/celery/pull/9228>`_.\n\nWhat's\
        \ Changed\n```\n\n-   (docs): use correct version celery v.5.4.x ([#&#8203;8975](https://redirect.github.com/celery/celery/issues/8975))\n\
        -   Update mypy to 1.10.0 ([#&#8203;8977](https://redirect.github.com/celery/celery/issues/8977))\n\
        -   Limit pymongo<4.7 when Python <= 3.10 due to breaking changes in 4.7 ([#&#8203;8988](https://redirect.github.com/celery/celery/issues/8988))\n\
        -   Bump pytest from 8.1.1 to 8.2.0 ([#&#8203;8987](https://redirect.github.com/celery/celery/issues/8987))\n\
        -   Update README to Include FastAPI in Framework Integration Section ([#&#8203;8978](https://redirect.github.com/celery/celery/issues/8978))\n\
        -   Clarify return values of ...\\_on_commit methods ([#&#8203;8984](https://redirect.github.com/celery/celery/issues/8984))\n\
        -   add kafka broker docs ([#&#8203;8935](https://redirect.github.com/celery/celery/issues/8935))\n\
        -   Limit pymongo<4.7 regardless of Python version ([#&#8203;8999](https://redirect.github.com/celery/celery/issues/8999))\n\
        -   Update pymongo\\[srv] requirement from <4.7,>=4.0.2 to >=4.0.2,<4.8 ([#&#8203;9000](https://redirect.github.com/celery/celery/issues/9000))\n\
        -   Update elasticsearch requirement from <=8.13.0 to <=8.13.1 ([#&#8203;9004](https://redirect.github.com/celery/celery/issues/9004))\n\
        -   security: SecureSerializer: support generic low-level serializers ([#&#8203;8982](https://redirect.github.com/celery/celery/issues/8982))\n\
        -   don't kill if pid same as file ([#&#8203;8997](https://redirect.github.com/celery/celery/issues/8997))\
        \ ([#&#8203;8998](https://redirect.github.com/celery/celery/issues/8998))\n\
        -   Update cryptography to 42.0.6 ([#&#8203;9005](https://redirect.github.com/celery/celery/issues/9005))\n\
        -   Bump cryptography from 42.0.6 to 42.0.7 ([#&#8203;9009](https://redirect.github.com/celery/celery/issues/9009))\n\
        -   don't kill if pid same as file ([#&#8203;8997](https://redirect.github.com/celery/celery/issues/8997))\
        \ ([#&#8203;8998](https://redirect.github.com/celery/celery/issues/8998))\
        \ ([#&#8203;9007](https://redirect.github.com/celery/celery/issues/9007))\n\
        -   Added -vv to unit, integration and smoke tests ([#&#8203;9014](https://redirect.github.com/celery/celery/issues/9014))\n\
        -   SecuritySerializer: ensure pack separator will not be conflicted with\
        \ serialized fields ([#&#8203;9010](https://redirect.github.com/celery/celery/issues/9010))\n\
        -   Update sphinx-click to 5.2.2 ([#&#8203;9025](https://redirect.github.com/celery/celery/issues/9025))\n\
        -   Bump sphinx-click from 5.2.2 to 6.0.0 ([#&#8203;9029](https://redirect.github.com/celery/celery/issues/9029))\n\
        -   Fix a typo to display the help message in first-steps-with-django ([#&#8203;9036](https://redirect.github.com/celery/celery/issues/9036))\n\
        -   Pinned requests to v2.31.0 due to docker-py bug [#&#8203;3256](https://redirect.github.com/celery/celery/issues/3256)\
        \ ([#&#8203;9039](https://redirect.github.com/celery/celery/issues/9039))\n\
        -   Fix certificate validity check ([#&#8203;9037](https://redirect.github.com/celery/celery/issues/9037))\n\
        -   Revert \"Pinned requests to v2.31.0 due to docker-py bug [#&#8203;3256](https://redirect.github.com/celery/celery/issues/3256)\"\
        \ ([#&#8203;9043](https://redirect.github.com/celery/celery/issues/9043))\n\
        -   Bump pytest from 8.2.0 to 8.2.1 ([#&#8203;9035](https://redirect.github.com/celery/celery/issues/9035))\n\
        -   Update elasticsearch requirement from <=8.13.1 to <=8.13.2 ([#&#8203;9045](https://redirect.github.com/celery/celery/issues/9045))\n\
        -   Fix detection of custom task set as class attribute with Django ([#&#8203;9038](https://redirect.github.com/celery/celery/issues/9038))\n\
        -   Update elastic-transport requirement from <=8.13.0 to <=8.13.1 ([#&#8203;9050](https://redirect.github.com/celery/celery/issues/9050))\n\
        -   Bump pycouchdb from 1.14.2 to 1.16.0 ([#&#8203;9052](https://redirect.github.com/celery/celery/issues/9052))\n\
        -   Update pytest to 8.2.2 ([#&#8203;9060](https://redirect.github.com/celery/celery/issues/9060))\n\
        -   Bump cryptography from 42.0.7 to 42.0.8 ([#&#8203;9061](https://redirect.github.com/celery/celery/issues/9061))\n\
        -   Update elasticsearch requirement from <=8.13.2 to <=8.14.0 ([#&#8203;9069](https://redirect.github.com/celery/celery/issues/9069))\n\
        -   \\[enhance feature] Crontab schedule: allow using month names ([#&#8203;9068](https://redirect.github.com/celery/celery/issues/9068))\n\
        -   Enhance tox environment: \\[testenv:clean] ([#&#8203;9072](https://redirect.github.com/celery/celery/issues/9072))\n\
        -   Clarify docs about Reserve one task at a time ([#&#8203;9073](https://redirect.github.com/celery/celery/issues/9073))\n\
        -   GCS docs fixes ([#&#8203;9075](https://redirect.github.com/celery/celery/issues/9075))\n\
        -   Use hub.remove_writer instead of hub.remove for write fds ([#&#8203;4185](https://redirect.github.com/celery/celery/issues/4185))\
        \ ([#&#8203;9055](https://redirect.github.com/celery/celery/issues/9055))\n\
        -   Class method to process crontab string ([#&#8203;9079](https://redirect.github.com/celery/celery/issues/9079))\n\
        -   Fixed smoke tests env bug when using integration tasks that rely on Redis\
        \ ([#&#8203;9090](https://redirect.github.com/celery/celery/issues/9090))\n\
        -   Bugfix - a task will run multiple times when chaining chains with groups\
        \ ([#&#8203;9021](https://redirect.github.com/celery/celery/issues/9021))\n\
        -   Bump mypy from 1.10.0 to 1.10.1 ([#&#8203;9096](https://redirect.github.com/celery/celery/issues/9096))\n\
        -   Don't add a separator to global_keyprefix if it already has one ([#&#8203;9080](https://redirect.github.com/celery/celery/issues/9080))\n\
        -   Update pymongo\\[srv] requirement from <4.8,>=4.0.2 to >=4.0.2,<4.9 ([#&#8203;9111](https://redirect.github.com/celery/celery/issues/9111))\n\
        -   Added missing import in examples for Django ([#&#8203;9099](https://redirect.github.com/celery/celery/issues/9099))\n\
        -   Bump Kombu to v5.4.0rc1 ([#&#8203;9117](https://redirect.github.com/celery/celery/issues/9117))\n\
        -   Removed skipping Redis in t/smoke/tests/test_consumer.py tests ([#&#8203;9118](https://redirect.github.com/celery/celery/issues/9118))\n\
        -   Update pytest-subtests to 0.13.0 ([#&#8203;9120](https://redirect.github.com/celery/celery/issues/9120))\n\
        -   Increased smoke tests CI timeout ([#&#8203;9122](https://redirect.github.com/celery/celery/issues/9122))\n\
        -   Bump Kombu to v5.4.0rc2 ([#&#8203;9127](https://redirect.github.com/celery/celery/issues/9127))\n\
        -   Update zstandard to 0.23.0 ([#&#8203;9129](https://redirect.github.com/celery/celery/issues/9129))\n\
        -   Update pytest-subtests to 0.13.1 ([#&#8203;9130](https://redirect.github.com/celery/celery/issues/9130))\n\
        -   Changed retry to tenacity in smoke tests ([#&#8203;9133](https://redirect.github.com/celery/celery/issues/9133))\n\
        -   Bump mypy from 1.10.1 to 1.11.0 ([#&#8203;9135](https://redirect.github.com/celery/celery/issues/9135))\n\
        -   Update cryptography to 43.0.0 ([#&#8203;9138](https://redirect.github.com/celery/celery/issues/9138))\n\
        -   Update pytest to 8.3.1 ([#&#8203;9137](https://redirect.github.com/celery/celery/issues/9137))\n\
        -   Added support for Quorum Queues ([#&#8203;9121](https://redirect.github.com/celery/celery/issues/9121))\n\
        -   Bump Kombu to v5.4.0rc3 ([#&#8203;9139](https://redirect.github.com/celery/celery/issues/9139))\n\
        -   Cleanup in Changelog.rst ([#&#8203;9141](https://redirect.github.com/celery/celery/issues/9141))\n\
        -   Update Django docs for CELERY_CACHE_BACKEND ([#&#8203;9143](https://redirect.github.com/celery/celery/issues/9143))\n\
        -   Added missing docs to previous releases ([#&#8203;9144](https://redirect.github.com/celery/celery/issues/9144))\n\
        -   Fixed a few documentation build warnings ([#&#8203;9145](https://redirect.github.com/celery/celery/issues/9145))\n\
        -   docs(README): link invalid ([#&#8203;9148](https://redirect.github.com/celery/celery/issues/9148))\n\
        -   Prepare for (pre) release: v5.5.0b1 ([#&#8203;9146](https://redirect.github.com/celery/celery/issues/9146))\n\
        -   Bump pytest from 8.3.1 to 8.3.2 ([#&#8203;9153](https://redirect.github.com/celery/celery/issues/9153))\n\
        -   Remove setuptools deprecated test command from setup.py ([#&#8203;9159](https://redirect.github.com/celery/celery/issues/9159))\n\
        -   Pin pre-commit to latest version 3.8.0 from Python 3.9 ([#&#8203;9156](https://redirect.github.com/celery/celery/issues/9156))\n\
        -   Bump mypy from 1.11.0 to 1.11.1 ([#&#8203;9164](https://redirect.github.com/celery/celery/issues/9164))\n\
        -   Change \"docker-compose\" to \"docker compose\" in Makefile ([#&#8203;9169](https://redirect.github.com/celery/celery/issues/9169))\n\
        -   update python versions and docker compose ([#&#8203;9171](https://redirect.github.com/celery/celery/issues/9171))\n\
        -   Add support for Pydantic model validation/serialization (fixes [#&#8203;8751](https://redirect.github.com/celery/celery/issues/8751))\
        \ ([#&#8203;9023](https://redirect.github.com/celery/celery/issues/9023))\n\
        -   Allow local dynamodb to be installed on another host than localhost ([#&#8203;8965](https://redirect.github.com/celery/celery/issues/8965))\n\
        -   Terminate job implementation for gevent concurrency backend ([#&#8203;9083](https://redirect.github.com/celery/celery/issues/9083))\n\
        -   Bump Kombu to v5.4.0 ([#&#8203;9177](https://redirect.github.com/celery/celery/issues/9177))\n\
        -   Add check for soft_time_limit and time_limit values ([#&#8203;9173](https://redirect.github.com/celery/celery/issues/9173))\n\
        -   Prepare for (pre) release: v5.5.0b2 ([#&#8203;9178](https://redirect.github.com/celery/celery/issues/9178))\n\
        -   Added SQS (localstack) broker to canvas smoke tests ([#&#8203;9179](https://redirect.github.com/celery/celery/issues/9179))\n\
        -   Pin elastic-transport to <= latest version 8.15.0 ([#&#8203;9182](https://redirect.github.com/celery/celery/issues/9182))\n\
        -   Update elasticsearch requirement from <=8.14.0 to <=8.15.0 ([#&#8203;9186](https://redirect.github.com/celery/celery/issues/9186))\n\
        -   improve formatting ([#&#8203;9188](https://redirect.github.com/celery/celery/issues/9188))\n\
        -   Add basic helm chart for celery ([#&#8203;9181](https://redirect.github.com/celery/celery/issues/9181))\n\
        -   Update kafka.rst ([#&#8203;9194](https://redirect.github.com/celery/celery/issues/9194))\n\
        -   Update pytest-order to 1.3.0 ([#&#8203;9198](https://redirect.github.com/celery/celery/issues/9198))\n\
        -   Update mypy to 1.11.2 ([#&#8203;9206](https://redirect.github.com/celery/celery/issues/9206))\n\
        -   all added to routes ([#&#8203;9204](https://redirect.github.com/celery/celery/issues/9204))\n\
        -   Fix typos discovered by codespell ([#&#8203;9212](https://redirect.github.com/celery/celery/issues/9212))\n\
        -   Use tzdata extras with zoneinfo backports ([#&#8203;8286](https://redirect.github.com/celery/celery/issues/8286))\n\
        -   Use `docker compose` in Contributing's doc build section ([#&#8203;9219](https://redirect.github.com/celery/celery/issues/9219))\n\
        -   Failing test for issue [#&#8203;9119](https://redirect.github.com/celery/celery/issues/9119)\
        \ ([#&#8203;9215](https://redirect.github.com/celery/celery/issues/9215))\n\
        -   Fix date_done timezone issue ([#&#8203;8385](https://redirect.github.com/celery/celery/issues/8385))\n\
        -   CI Fixes to smoke tests ([#&#8203;9223](https://redirect.github.com/celery/celery/issues/9223))\n\
        -   fix: passes current request context when pushing to request_stack ([#&#8203;9208](https://redirect.github.com/celery/celery/issues/9208))\n\
        -   Fix broken link in the Using RabbitMQ docs page ([#&#8203;9226](https://redirect.github.com/celery/celery/issues/9226))\n\
        -   Added Soft Shutdown Mechanism ([#&#8203;9213](https://redirect.github.com/celery/celery/issues/9213))\n\
        -   Added worker_enable_soft_shutdown_on_idle ([#&#8203;9231](https://redirect.github.com/celery/celery/issues/9231))\n\
        -   Bump cryptography from 43.0.0 to 43.0.1 ([#&#8203;9233](https://redirect.github.com/celery/celery/issues/9233))\n\
        -   Added docs regarding the relevancy of soft shutdown and ETA tasks ([#&#8203;9238](https://redirect.github.com/celery/celery/issues/9238))\n\
        -   Show broker_connection_retry_on_startup warning only if it evaluates as\
        \ False ([#&#8203;9227](https://redirect.github.com/celery/celery/issues/9227))\n\
        -   Fixed docker-docs CI failure ([#&#8203;9240](https://redirect.github.com/celery/celery/issues/9240))\n\
        -   Added docker cleanup auto-fixture to improve smoke tests stability ([#&#8203;9243](https://redirect.github.com/celery/celery/issues/9243))\n\
        -   print is not thread-safe, so should not be used in signal handler ([#&#8203;9222](https://redirect.github.com/celery/celery/issues/9222))\n\
        -   Prepare for (pre) release: v5.5.0b3 ([#&#8203;9244](https://redirect.github.com/celery/celery/issues/9244))\n\
        -   Correct the error description in exception message when validate soft_time_limit\
        \ ([#&#8203;9246](https://redirect.github.com/celery/celery/issues/9246))\n\
        -   Update msgpack to 1.1.0 ([#&#8203;9249](https://redirect.github.com/celery/celery/issues/9249))\n\
        -   chore(utils/time.py): rename `_is_ambigious` -> `_is_ambiguous` ([#&#8203;9248](https://redirect.github.com/celery/celery/issues/9248))\n\
        -   Reduced Smoke Tests to min/max supported python (3.8/3.12) ([#&#8203;9252](https://redirect.github.com/celery/celery/issues/9252))\n\
        -   Update pytest to 8.3.3 ([#&#8203;9253](https://redirect.github.com/celery/celery/issues/9253))\n\
        -   Update elasticsearch requirement from <=8.15.0 to <=8.15.1 ([#&#8203;9255](https://redirect.github.com/celery/celery/issues/9255))\n\
        -   update mongodb without deprecated `[srv]` extra requirement ([#&#8203;9258](https://redirect.github.com/celery/celery/issues/9258))\n\
        -   blacksmith.sh: Migrate workflows to Blacksmith ([#&#8203;9261](https://redirect.github.com/celery/celery/issues/9261))\n\
        -   Fixes [#&#8203;9119](https://redirect.github.com/celery/celery/issues/9119):\
        \ inject dispatch_uid for retry-wrapped receivers ([#&#8203;9247](https://redirect.github.com/celery/celery/issues/9247))\n\
        -   Run all smoke tests CI jobs together ([#&#8203;9263](https://redirect.github.com/celery/celery/issues/9263))\n\
        -   Improve documentation on visibility timeout ([#&#8203;9264](https://redirect.github.com/celery/celery/issues/9264))\n\
        -   Bump pytest-celery to 1.1.2 ([#&#8203;9267](https://redirect.github.com/celery/celery/issues/9267))\n\
        -   Added missing \"app.conf.visibility_timeout\" in smoke tests ([#&#8203;9266](https://redirect.github.com/celery/celery/issues/9266))\n\
        -   Improved stability with t/smoke/tests/test_consumer.py ([#&#8203;9268](https://redirect.github.com/celery/celery/issues/9268))\n\
        -   Improved Redis container stability in the smoke tests ([#&#8203;9271](https://redirect.github.com/celery/celery/issues/9271))\n\
        -   Disabled EXHAUST_MEMORY tests in Smoke-tasks ([#&#8203;9272](https://redirect.github.com/celery/celery/issues/9272))\n\
        -   Marked xfail for test_reducing_prefetch_count with Redis - flaky test\
        \ ([#&#8203;9273](https://redirect.github.com/celery/celery/issues/9273))\n\
        -   Fixed pypy unit tests random failures in the CI ([#&#8203;9275](https://redirect.github.com/celery/celery/issues/9275))\n\
        -   Fixed more pypy unit tests random failures in the CI ([#&#8203;9278](https://redirect.github.com/celery/celery/issues/9278))\n\
        -   Fix Redis container from aborting randomly ([#&#8203;9276](https://redirect.github.com/celery/celery/issues/9276))\n\
        -   Run Integration & Smoke CI tests together after unit tests passes ([#&#8203;9280](https://redirect.github.com/celery/celery/issues/9280))\n\
        -   Added \"loglevel verbose\" to Redis containers in smoke tests ([#&#8203;9282](https://redirect.github.com/celery/celery/issues/9282))\n\
        -   Fixed Redis error in the smoke tests: \"Possible SECURITY ATTACK detected\"\
        \ ([#&#8203;9284](https://redirect.github.com/celery/celery/issues/9284))\n\
        -   Refactored the smoke tests github workflow ([#&#8203;9285](https://redirect.github.com/celery/celery/issues/9285))\n\
        -   Increased --reruns 3->4 in smoke tests ([#&#8203;9286](https://redirect.github.com/celery/celery/issues/9286))\n\
        -   Improve stability of smoke tests (CI and Local) ([#&#8203;9287](https://redirect.github.com/celery/celery/issues/9287))\n\
        -   Fixed Smoke tests CI \"test-case\" lables (specific instead of general)\
        \ ([#&#8203;9288](https://redirect.github.com/celery/celery/issues/9288))\n\
        -   Use assert_log_exists instead of wait_for_log in worker smoke tests ([#&#8203;9290](https://redirect.github.com/celery/celery/issues/9290))\n\
        -   Optimized t/smoke/tests/test_worker.py ([#&#8203;9291](https://redirect.github.com/celery/celery/issues/9291))\n\
        -   Enable smoke tests dockers check before each test starts ([#&#8203;9292](https://redirect.github.com/celery/celery/issues/9292))\n\
        -   Relaxed smoke tests flaky tests mechanism ([#&#8203;9293](https://redirect.github.com/celery/celery/issues/9293))\n\
        -   Updated quorum queue detection to handle multiple broker instances ([#&#8203;9294](https://redirect.github.com/celery/celery/issues/9294))\n\
        -   Non-lazy table creation for database backend ([#&#8203;9228](https://redirect.github.com/celery/celery/issues/9228))\n\
        -   Pin pymongo to latest version 4.9 ([#&#8203;9297](https://redirect.github.com/celery/celery/issues/9297))\n\
        -   Bump pymongo from 4.9 to 4.9.1 ([#&#8203;9298](https://redirect.github.com/celery/celery/issues/9298))\n\
        -   Bump Kombu to v5.4.2 ([#&#8203;9304](https://redirect.github.com/celery/celery/issues/9304))\n\
        -   Use rabbitmq:3 in stamping smoke tests ([#&#8203;9307](https://redirect.github.com/celery/celery/issues/9307))\n\
        -   Bump pytest-celery to 1.1.3 ([#&#8203;9308](https://redirect.github.com/celery/celery/issues/9308))\n\
        -   Added Python 3.13 Support ([#&#8203;9309](https://redirect.github.com/celery/celery/issues/9309))\n\
        -   Add log when global qos is disabled ([#&#8203;9296](https://redirect.github.com/celery/celery/issues/9296))\n\
        -   Added official release docs (whatsnew) for v5.5 ([#&#8203;9312](https://redirect.github.com/celery/celery/issues/9312))\n\
        -   Enable Codespell autofix ([#&#8203;9313](https://redirect.github.com/celery/celery/issues/9313))\n\
        -   Pydantic typehints: Fix optional, allow generics ([#&#8203;9319](https://redirect.github.com/celery/celery/issues/9319))\n\
        -   Prepare for (pre) release: v5.5.0b4 ([#&#8203;9322](https://redirect.github.com/celery/celery/issues/9322))\n\
        -   Added Blacksmith.sh to the Sponsors section in the README ([#&#8203;9323](https://redirect.github.com/celery/celery/issues/9323))\n\
        -   Revert \"Added Blacksmith.sh to the Sponsors section in the README\" ([#&#8203;9324](https://redirect.github.com/celery/celery/issues/9324))\n\
        -   Added Blacksmith.sh to the Sponsors section in the README ([#&#8203;9325](https://redirect.github.com/celery/celery/issues/9325))\n\
        -   Added missing \" |oc-sponsor-3|\u201D in README ([#&#8203;9326](https://redirect.github.com/celery/celery/issues/9326))\n\
        -   Use Blacksmith SVG logo ([#&#8203;9327](https://redirect.github.com/celery/celery/issues/9327))\n\
        -   Updated Blacksmith SVG logo ([#&#8203;9328](https://redirect.github.com/celery/celery/issues/9328))\n\
        -   Revert \"Updated Blacksmith SVG logo\" ([#&#8203;9329](https://redirect.github.com/celery/celery/issues/9329))\n\
        -   Update pymongo to 4.10.0 ([#&#8203;9330](https://redirect.github.com/celery/celery/issues/9330))\n\
        -   Update pymongo to 4.10.1 ([#&#8203;9332](https://redirect.github.com/celery/celery/issues/9332))\n\
        -   Update user guide to recommend delay_on_commit ([#&#8203;9333](https://redirect.github.com/celery/celery/issues/9333))\n\
        -   Pin pre-commit to latest version 4.0.0 (Python 3.9+) ([#&#8203;9334](https://redirect.github.com/celery/celery/issues/9334))\n\
        -   Update ephem to 4.1.6 ([#&#8203;9336](https://redirect.github.com/celery/celery/issues/9336))\n\
        -   Updated Blacksmith SVG logo ([#&#8203;9337](https://redirect.github.com/celery/celery/issues/9337))\n\
        -   Prepare for (pre) release: v5.5.0rc1 ([#&#8203;9341](https://redirect.github.com/celery/celery/issues/9341))\n\
        -   Fix: Treat dbm.error as a corrupted schedule file ([#&#8203;9331](https://redirect.github.com/celery/celery/issues/9331))\n\
        -   Pin pre-commit to latest version 4.0.1 ([#&#8203;9343](https://redirect.github.com/celery/celery/issues/9343))\n\
        -   Added Python 3.13 to Dockerfiles ([#&#8203;9350](https://redirect.github.com/celery/celery/issues/9350))\n\
        -   Skip test_pool_restart_import_modules on PyPy due to test issue ([#&#8203;9352](https://redirect.github.com/celery/celery/issues/9352))\n\
        -   Update elastic-transport requirement from <=8.15.0 to <=8.15.1 ([#&#8203;9347](https://redirect.github.com/celery/celery/issues/9347))\n\
        -   added dragonfly logo ([#&#8203;9353](https://redirect.github.com/celery/celery/issues/9353))\n\
        -   Update README.rst ([#&#8203;9354](https://redirect.github.com/celery/celery/issues/9354))\n\
        -   Update README.rst ([#&#8203;9355](https://redirect.github.com/celery/celery/issues/9355))\n\
        -   Update mypy to 1.12.0 ([#&#8203;9356](https://redirect.github.com/celery/celery/issues/9356))\n\
        -   Bump Kombu to v5.5.0rc1 ([#&#8203;9357](https://redirect.github.com/celery/celery/issues/9357))\n\
        -   Fix `celery --loader` option parsing ([#&#8203;9361](https://redirect.github.com/celery/celery/issues/9361))\n\
        -   Add support for Google Pub/Sub transport ([#&#8203;9351](https://redirect.github.com/celery/celery/issues/9351))\n\
        -   Add native incr support for GCSBackend ([#&#8203;9302](https://redirect.github.com/celery/celery/issues/9302))\n\
        -   fix(perform_pending_operations): prevent task duplication on shutdown\u2026\
        \ ([#&#8203;9348](https://redirect.github.com/celery/celery/issues/9348))\n\
        -   Update grpcio to 1.67.0 ([#&#8203;9365](https://redirect.github.com/celery/celery/issues/9365))\n\
        -   Update google-cloud-firestore to 2.19.0 ([#&#8203;9364](https://redirect.github.com/celery/celery/issues/9364))\n\
        -   Annotate celery/utils/timer2.py ([#&#8203;9362](https://redirect.github.com/celery/celery/issues/9362))\n\
        -   Update cryptography to 43.0.3 ([#&#8203;9366](https://redirect.github.com/celery/celery/issues/9366))\n\
        -   Update mypy to 1.12.1 ([#&#8203;9368](https://redirect.github.com/celery/celery/issues/9368))\n\
        -   Bump mypy from 1.12.1 to 1.13.0 ([#&#8203;9373](https://redirect.github.com/celery/celery/issues/9373))\n\
        -   Pass timeout and confirm_timeout to producer.publish() ([#&#8203;9374](https://redirect.github.com/celery/celery/issues/9374))\n\
        -   Bump Kombu to v5.5.0rc2 ([#&#8203;9382](https://redirect.github.com/celery/celery/issues/9382))\n\
        -   Bump pytest-cov from 5.0.0 to 6.0.0 ([#&#8203;9388](https://redirect.github.com/celery/celery/issues/9388))\n\
        -   default strict to False for pydantic tasks ([#&#8203;9393](https://redirect.github.com/celery/celery/issues/9393))\n\
        -   Only log that global QoS is disabled if using amqp ([#&#8203;9395](https://redirect.github.com/celery/celery/issues/9395))\n\
        -   chore: update sponsorship logo ([#&#8203;9398](https://redirect.github.com/celery/celery/issues/9398))\n\
        -   Allow custom hostname for celery_worker in celery.contrib.pytest / celery.contrib.testing.worker\
        \ ([#&#8203;9405](https://redirect.github.com/celery/celery/issues/9405))\n\
        -   Removed docker-docs from CI (optional job, malfunctioning) ([#&#8203;9406](https://redirect.github.com/celery/celery/issues/9406))\n\
        -   Added a utility to format changelogs from the auto-generated GitHub release\
        \ notes ([#&#8203;9408](https://redirect.github.com/celery/celery/issues/9408))\n\
        -   Bump codecov/codecov-action from 4 to 5 ([#&#8203;9412](https://redirect.github.com/celery/celery/issues/9412))\n\
        -   Update elasticsearch requirement from <=8.15.1 to <=8.16.0 ([#&#8203;9410](https://redirect.github.com/celery/celery/issues/9410))\n\
        -   Native Delayed Delivery in RabbitMQ ([#&#8203;9207](https://redirect.github.com/celery/celery/issues/9207))\n\
        -   Prepare for (pre) release: v5.5.0rc2 ([#&#8203;9416](https://redirect.github.com/celery/celery/issues/9416))\n\
        -   Document usage of broker_native_delayed_delivery_queue_type ([#&#8203;9419](https://redirect.github.com/celery/celery/issues/9419))\n\
        -   Adjust section in what's new document regarding quorum queues support\
        \ ([#&#8203;9420](https://redirect.github.com/celery/celery/issues/9420))\n\
        -   Update pytest-rerunfailures to 15.0 ([#&#8203;9422](https://redirect.github.com/celery/celery/issues/9422))\n\
        -   Document group unrolling ([#&#8203;9421](https://redirect.github.com/celery/celery/issues/9421))\n\
        -   fix small typo acces -> access ([#&#8203;9434](https://redirect.github.com/celery/celery/issues/9434))\n\
        -   Update cryptography to 44.0.0 ([#&#8203;9437](https://redirect.github.com/celery/celery/issues/9437))\n\
        -   Added pypy to Dockerfile ([#&#8203;9438](https://redirect.github.com/celery/celery/issues/9438))\n\
        -   Skipped flaky tests on pypy (all pass after ~10 reruns) ([#&#8203;9439](https://redirect.github.com/celery/celery/issues/9439))\n\
        -   Allowing managed credentials for azureblockblob ([#&#8203;9430](https://redirect.github.com/celery/celery/issues/9430))\n\
        -   Allow passing Celery objects to the Click entry point ([#&#8203;9426](https://redirect.github.com/celery/celery/issues/9426))\n\
        -   support Request termination for gevent ([#&#8203;9440](https://redirect.github.com/celery/celery/issues/9440))\n\
        -   Prevent event_mask from being overwritten. ([#&#8203;9432](https://redirect.github.com/celery/celery/issues/9432))\n\
        -   Update pytest to 8.3.4 ([#&#8203;9444](https://redirect.github.com/celery/celery/issues/9444))\n\
        -   Prepare for (pre) release: v5.5.0rc3 ([#&#8203;9450](https://redirect.github.com/celery/celery/issues/9450))\n\
        -   Bugfix: SIGQUIT not initiating cold shutdown when `task_acks_late=False`\
        \ ([#&#8203;9461](https://redirect.github.com/celery/celery/issues/9461))\n\
        -   Fixed pycurl dep with Python 3.8 ([#&#8203;9471](https://redirect.github.com/celery/celery/issues/9471))\n\
        -   Update elasticsearch requirement from <=8.16.0 to <=8.17.0 ([#&#8203;9469](https://redirect.github.com/celery/celery/issues/9469))\n\
        -   Bump pytest-subtests from 0.13.1 to 0.14.1 ([#&#8203;9459](https://redirect.github.com/celery/celery/issues/9459))\n\
        -   documentation: Added a type annotation to the periodic task example ([#&#8203;9473](https://redirect.github.com/celery/celery/issues/9473))\n\
        -   Prepare for (pre) release: v5.5.0rc4 ([#&#8203;9474](https://redirect.github.com/celery/celery/issues/9474))\n\
        -   Bump mypy from 1.13.0 to 1.14.0 ([#&#8203;9476](https://redirect.github.com/celery/celery/issues/9476))\n\
        -   Fix cassandra backend port settings not working ([#&#8203;9465](https://redirect.github.com/celery/celery/issues/9465))\n\
        -   Unroll group when a group with a single item is chained using the | operator\
        \ ([#&#8203;9456](https://redirect.github.com/celery/celery/issues/9456))\n\
        -   fix(django): catch the right error when trying to close db connection\
        \ ([#&#8203;9392](https://redirect.github.com/celery/celery/issues/9392))\n\
        -   Replacing a task with a chain which contains a group now returns a result\
        \ instead of hanging ([#&#8203;9484](https://redirect.github.com/celery/celery/issues/9484))\n\
        -   Avoid using a group of one as it is now unrolled into a chain ([#&#8203;9510](https://redirect.github.com/celery/celery/issues/9510))\n\
        -   Link to the correct IRC network ([#&#8203;9509](https://redirect.github.com/celery/celery/issues/9509))\n\
        -   Bump pytest-github-actions-annotate-failures from 0.2.0 to 0.3.0 ([#&#8203;9504](https://redirect.github.com/celery/celery/issues/9504))\n\
        -   Update canvas.rst to fix output result from chain object ([#&#8203;9502](https://redirect.github.com/celery/celery/issues/9502))\n\
        -   Unauthorized Changes Cleanup ([#&#8203;9528](https://redirect.github.com/celery/celery/issues/9528))\n\
        -   \\[RE-APPROVED] fix(django): catch the right error when trying to close\
        \ db connection ([#&#8203;9529](https://redirect.github.com/celery/celery/issues/9529))\n\
        -   \\[RE-APPROVED] Link to the correct IRC network ([#&#8203;9531](https://redirect.github.com/celery/celery/issues/9531))\n\
        -   \\[RE-APPROVED] Update canvas.rst to fix output result from chain object\
        \ ([#&#8203;9532](https://redirect.github.com/celery/celery/issues/9532))\n\
        -   Update test-ci-base.txt ([#&#8203;9539](https://redirect.github.com/celery/celery/issues/9539))\n\
        -   Update install-pyenv.sh ([#&#8203;9540](https://redirect.github.com/celery/celery/issues/9540))\n\
        -   Update elasticsearch requirement from <=8.17.0 to <=8.17.1 ([#&#8203;9518](https://redirect.github.com/celery/celery/issues/9518))\n\
        -   Bump google-cloud-firestore from 2.19.0 to 2.20.0 ([#&#8203;9493](https://redirect.github.com/celery/celery/issues/9493))\n\
        -   Bump mypy from 1.14.0 to 1.14.1 ([#&#8203;9483](https://redirect.github.com/celery/celery/issues/9483))\n\
        -   Update elastic-transport requirement from <=8.15.1 to <=8.17.0 ([#&#8203;9490](https://redirect.github.com/celery/celery/issues/9490))\n\
        -   Update Dockerfile by adding missing Python version 3.13 ([#&#8203;9549](https://redirect.github.com/celery/celery/issues/9549))\n\
        -   Fix typo for default of sig ([#&#8203;9495](https://redirect.github.com/celery/celery/issues/9495))\n\
        -   fix(crontab): resolve constructor type conflicts ([#&#8203;9551](https://redirect.github.com/celery/celery/issues/9551))\n\
        -   worker_max_memory_per_child: kilobyte is 1024 bytes ([#&#8203;9553](https://redirect.github.com/celery/celery/issues/9553))\n\
        -   Fix formatting in quorum queue docs ([#&#8203;9555](https://redirect.github.com/celery/celery/issues/9555))\n\
        -   Bump cryptography from 44.0.0 to 44.0.1 ([#&#8203;9556](https://redirect.github.com/celery/celery/issues/9556))\n\
        -   Fix the send_task method when detecting if the native delayed delivery\
        \ approach is available ([#&#8203;9552](https://redirect.github.com/celery/celery/issues/9552))\n\
        -   Reverted PR [#&#8203;7814](https://redirect.github.com/celery/celery/issues/7814)\
        \ & minor code improvement ([#&#8203;9494](https://redirect.github.com/celery/celery/issues/9494))\n\
        -   Improved donation and sponsorship visibility ([#&#8203;9558](https://redirect.github.com/celery/celery/issues/9558))\n\
        -   Updated the Getting Help section, replacing deprecated with new resources\
        \ ([#&#8203;9559](https://redirect.github.com/celery/celery/issues/9559))\n\
        -   Fixed django example ([#&#8203;9562](https://redirect.github.com/celery/celery/issues/9562))\n\
        -   Bump Kombu to v5.5.0rc3 ([#&#8203;9564](https://redirect.github.com/celery/celery/issues/9564))\n\
        -   Bump ephem from 4.1.6 to 4.2 ([#&#8203;9565](https://redirect.github.com/celery/celery/issues/9565))\n\
        -   Bump pytest-celery to v1.2.0 ([#&#8203;9568](https://redirect.github.com/celery/celery/issues/9568))\n\
        -   Remove dependency on `pycurl` ([#&#8203;9526](https://redirect.github.com/celery/celery/issues/9526))\n\
        -   Set TestWorkController.**test** ([#&#8203;9574](https://redirect.github.com/celery/celery/issues/9574))\n\
        -   Fixed bug when revoking by stamped headers a stamp that does not exist\
        \ ([#&#8203;9575](https://redirect.github.com/celery/celery/issues/9575))\n\
        -   Canvas Stamping Doc Fixes ([#&#8203;9578](https://redirect.github.com/celery/celery/issues/9578))\n\
        -   Bugfix: Chord with a chord in header doesn't invoke error callback on\
        \ inner chord header failure (default config) ([#&#8203;9580](https://redirect.github.com/celery/celery/issues/9580))\n\
        -   Prepare for (pre) release: v5.5.0rc5 ([#&#8203;9582](https://redirect.github.com/celery/celery/issues/9582))\n\
        -   Bump google-cloud-firestore from 2.20.0 to 2.20.1 ([#&#8203;9584](https://redirect.github.com/celery/celery/issues/9584))\n\
        -   Fix tests with Click 8.2 ([#&#8203;9590](https://redirect.github.com/celery/celery/issues/9590))\n\
        -   Bump cryptography from 44.0.1 to 44.0.2 ([#&#8203;9591](https://redirect.github.com/celery/celery/issues/9591))\n\
        -   Update elasticsearch requirement from <=8.17.1 to <=8.17.2 ([#&#8203;9594](https://redirect.github.com/celery/celery/issues/9594))\n\
        -   Bump pytest from 8.3.4 to 8.3.5 ([#&#8203;9598](https://redirect.github.com/celery/celery/issues/9598))\n\
        -   Refactored and Enhanced DelayedDelivery bootstep ([#&#8203;9599](https://redirect.github.com/celery/celery/issues/9599))\n\
        -   Improve docs about acks_on_failure_or_timeout ([#&#8203;9577](https://redirect.github.com/celery/celery/issues/9577))\n\
        -   Update SECURITY.md ([#&#8203;9609](https://redirect.github.com/celery/celery/issues/9609))\n\
        -   remove flake8plus as not needed anymore ([#&#8203;9610](https://redirect.github.com/celery/celery/issues/9610))\n\
        -   remove \\[bdist_wheel] universal = 0  from setup.cfg as not needed ([#&#8203;9611](https://redirect.github.com/celery/celery/issues/9611))\n\
        -   remove importlib-metadata as not needed in python3.8 anymore ([#&#8203;9612](https://redirect.github.com/celery/celery/issues/9612))\n\
        -   feat: define exception_safe_to_retry for redisbackend ([#&#8203;9614](https://redirect.github.com/celery/celery/issues/9614))\n\
        -   Bump Kombu to v5.5.0 ([#&#8203;9615](https://redirect.github.com/celery/celery/issues/9615))\n\
        -   Update elastic-transport requirement from <=8.17.0 to <=8.17.1 ([#&#8203;9616](https://redirect.github.com/celery/celery/issues/9616))\n\
        -   \\[docs] fix first-steps ([#&#8203;9618](https://redirect.github.com/celery/celery/issues/9618))\n\
        -   Revert \"Improve docs about acks_on_failure_or_timeout\" ([#&#8203;9606](https://redirect.github.com/celery/celery/issues/9606))\n\
        -   Improve CI stability and performance ([#&#8203;9624](https://redirect.github.com/celery/celery/issues/9624))\n\
        -   Improved explanation for Database transactions at user guide for tasks\
        \ ([#&#8203;9617](https://redirect.github.com/celery/celery/issues/9617))\n\
        -   update tests to use python 3.8 codes only ([#&#8203;9627](https://redirect.github.com/celery/celery/issues/9627))\n\
        -   [#&#8203;9597](https://redirect.github.com/celery/celery/issues/9597):\
        \ Ensure surpassing Hard Timeout limit when task_acks_on_failure_or_timeout\
        \ is False rejects the task ([#&#8203;9626](https://redirect.github.com/celery/celery/issues/9626))\n\
        -   Lock Kombu to v5.5.x (using urllib3 instead of pycurl) ([#&#8203;9632](https://redirect.github.com/celery/celery/issues/9632))\n\
        -   Lock pytest-celery to v1.2.x (using urllib3 instead of pycurl) ([#&#8203;9633](https://redirect.github.com/celery/celery/issues/9633))\n\
        -   Add Codecov Test Analytics ([#&#8203;9635](https://redirect.github.com/celery/celery/issues/9635))\n\
        -   Bump Kombu to v5.5.2 ([#&#8203;9643](https://redirect.github.com/celery/celery/issues/9643))\n\
        -   Prepare for release: v5.5.0 ([#&#8203;9644](https://redirect.github.com/celery/celery/issues/9644))\n\
        \n.. \\_version-5.5.0rc5:\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\U0001F515 **Ignore**: Close this PR and you won't be reminded\
        \ about these updates 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/osism/python-osism).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDcuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIwNy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZSJdfQ==-->\n"
      change_url: https://github.com/osism/python-osism/pull/1262
      child_jobs: []
      commit_id: 108233aeb2451749ee8160a66d94306c66660547
      event_id: bd682be0-0e87-11f0-966e-e609557968f1
      executor:
        hostname: 7d211f194f6a
        inventory_file: /var/lib/zuul/builds/e6b49f9244314dabb920bb70cd61ed7d/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/e6b49f9244314dabb920bb70cd61ed7d/work/logs
        result_data_file: /var/lib/zuul/builds/e6b49f9244314dabb920bb70cd61ed7d/work/results.json
        src_root: /var/lib/zuul/builds/e6b49f9244314dabb920bb70cd61ed7d/work/src
        work_root: /var/lib/zuul/builds/e6b49f9244314dabb920bb70cd61ed7d/work
      items:
      - branch: main
        change: '1262'
        change_url: https://github.com/osism/python-osism/pull/1262
        patchset: 108233aeb2451749ee8160a66d94306c66660547
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/python-osism
          name: osism/python-osism
          short_name: python-osism
          src_dir: src/github.com/osism/python-osism
      job: container-image-python-osism-build
      jobtags: []
      max_attempts: 3
      message: Y2hvcmUoZGVwcyk6IHVwZGF0ZSBkZXBlbmRlbmN5IGNlbGVyeSB0byB2NS41LjAKClRoaXMgUFIgY29udGFpbnMgdGhlIGZvbGxvd2luZyB1cGRhdGVzOgoKfCBQYWNrYWdlIHwgQ2hhbmdlIHwgQWdlIHwgQWRvcHRpb24gfCBQYXNzaW5nIHwgQ29uZmlkZW5jZSB8CnwtLS18LS0tfC0tLXwtLS18LS0tfC0tLXwKfCBbY2VsZXJ5XShodHRwczovL2RvY3MuY2VsZXJ5cS5kZXYvKSAoW3NvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkpLCBbY2hhbmdlbG9nXShodHRwczovL2RvY3MuY2VsZXJ5cS5kZXYvZW4vc3RhYmxlL2NoYW5nZWxvZy5odG1sKSkgfCBgPT01LjQuMGAgLT4gYD09NS41LjBgIHwgWyFbYWdlXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2FwaS9tYy9iYWRnZXMvYWdlL3B5cGkvY2VsZXJ5LzUuNS4wP3NsaW09dHJ1ZSldKGh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vbWVyZ2UtY29uZmlkZW5jZS8pIHwgWyFbYWRvcHRpb25dKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9hZG9wdGlvbi9weXBpL2NlbGVyeS81LjUuMD9zbGltPXRydWUpXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8IFshW3Bhc3NpbmddKGh0dHBzOi8vZGV2ZWxvcGVyLm1lbmQuaW8vYXBpL21jL2JhZGdlcy9jb21wYXRpYmlsaXR5L3B5cGkvY2VsZXJ5LzUuNC4wLzUuNS4wP3NsaW09dHJ1ZSldKGh0dHBzOi8vZG9jcy5yZW5vdmF0ZWJvdC5jb20vbWVyZ2UtY29uZmlkZW5jZS8pIHwgWyFbY29uZmlkZW5jZV0oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9hcGkvbWMvYmFkZ2VzL2NvbmZpZGVuY2UvcHlwaS9jZWxlcnkvNS40LjAvNS41LjA/c2xpbT10cnVlKV0oaHR0cHM6Ly9kb2NzLnJlbm92YXRlYm90LmNvbS9tZXJnZS1jb25maWRlbmNlLykgfAoKLS0tCgojIyMgUmVsZWFzZSBOb3RlcwoKPGRldGFpbHM+CjxzdW1tYXJ5PmNlbGVyeS9jZWxlcnkgKGNlbGVyeSk8L3N1bW1hcnk+CgojIyMgW2B2NS41LjBgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9ibG9iL0hFQUQvQ2hhbmdlbG9nLnJzdCM1NTApCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2NvbXBhcmUvdjUuNC4wLi4udjUuNS4wKQoKXD09PT09Cgo6cmVsZWFzZS1kYXRlOiAyMDI1LTAzLTMxCjpyZWxlYXNlLWJ5OiBUb21lciBOb3NyYXRpCgpDZWxlcnkgdjUuNS4wIGlzIG5vdyBhdmFpbGFibGUuCgpLZXkgSGlnaGxpZ2h0cwoKYGBgCgpTZWUgOnJlZjpgd2hhdHNuZXctNS41YCBmb3IgYSBjb21wbGV0ZSBvdmVydmlldyBvciByZWFkIHRoZSBtYWluIGhpZ2hsaWdodHMgYmVsb3cuCgpSZWRpcyBCcm9rZXIgU3RhYmlsaXR5IEltcHJvdmVtZW50cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKTG9uZy1zdGFuZGluZyBkaXNjb25uZWN0aW9uIGlzc3VlcyB3aXRoIHRoZSBSZWRpcyBicm9rZXIgaGF2ZSBiZWVuIGlkZW50aWZpZWQgYW5kCnJlc29sdmVkIGluIEtvbWJ1IDUuNS4wLCB3aGljaCBpcyBpbmNsdWRlZCB3aXRoIHRoaXMgcmVsZWFzZS4gVGhlc2UgaW1wcm92ZW1lbnRzCnNpZ25pZmljYW50bHkgZW5oYW5jZSBzdGFiaWxpdHkgd2hlbiB1c2luZyBSZWRpcyBhcyBhIGJyb2tlci4KCkFkZGl0aW9uYWxseSwgdGhlIFJlZGlzIGJhY2tlbmQgbm93IGhhcyBiZXR0ZXIgZXhjZXB0aW9uIGhhbmRsaW5nIHdpdGggdGhlIG5ldwpgYGV4Y2VwdGlvbl9zYWZlX3RvX3JldHJ5YGAgZmVhdHVyZSwgd2hpY2ggaW1wcm92ZXMgcmVzaWxpZW5jZSBkdXJpbmcgdGVtcG9yYXJ5ClJlZGlzIGNvbm5lY3Rpb24gaXNzdWVzLiBTZWUgOnJlZjpgY29uZi1yZWRpcy1yZXN1bHQtYmFja2VuZGAgZm9yIGNvbXBsZXRlCmRvY3VtZW50YXRpb24uCgpDb250cmlidXRlZCBieSBgQGRyaWVua29wIDxodHRwczovL2dpdGh1Yi5jb20vZHJpZW5rb3A+YF8gaW4KYCMmIzgyMDM7OTYxNCA8aHR0cHM6Ly9naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvcHVsbC85NjE0PmBfLgoKYGBweWN1cmxgYCByZXBsYWNlZCB3aXRoIGBgdXJsbGliM2BgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKUmVwbGFjZWQgdGhlIDpweXBpOmBweWN1cmxgIGRlcGVuZGVuY3kgd2l0aCA6cHlwaTpgdXJsbGliM2AuCgpXZSdyZSBtb25pdG9yaW5nIHRoZSBwZXJmb3JtYW5jZSBpbXBhY3Qgb2YgdGhpcyBjaGFuZ2UgYW5kIHdlbGNvbWUgZmVlZGJhY2sgZnJvbSB1c2Vycwp3aG8gbm90aWNlIGFueSBzaWduaWZpY2FudCBkaWZmZXJlbmNlcyBpbiB0aGVpciBlbnZpcm9ubWVudHMuCgpDb250cmlidXRlZCBieSBgQHNwYXduLWd1eSA8aHR0cHM6Ly9naXRodWIuY29tL3NwYXduLWd1eT5gXyBpbiBLb21idQpgIyYjODIwMzsyMTM0IDxodHRwczovL2dpdGh1Yi5jb20vY2VsZXJ5L2tvbWJ1L3B1bGwvMjEzND5gXyBhbmQgaW50ZWdyYXRlZCBpbiBDZWxlcnkgdmlhCmAjJiM4MjAzOzk1MjYgPGh0dHBzOi8vZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L3B1bGwvOTUyNj5gXy4KClJhYmJpdE1RIFF1b3J1bSBRdWV1ZXMgU3VwcG9ydAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkFkZGVkIHN1cHBvcnQgZm9yIFJhYmJpdE1RJ3MgbmV3IGBRdW9ydW0gUXVldWVzIDxodHRwczovL3d3dy5yYWJiaXRtcS5jb20vZG9jcy9xdW9ydW0tcXVldWVzPmBfCmZlYXR1cmUsIGluY2x1ZGluZyBjb21wYXRpYmlsaXR5IHdpdGggRVRBIHRhc2tzLiBUaGlzIGltcGxlbWVudGF0aW9uIGhhcyBzb21lIGxpbWl0YXRpb25zIGNvbXBhcmVkCnRvIGNsYXNzaWMgcXVldWVzLCBzbyBwbGVhc2UgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuCgpgTmF0aXZlIERlbGF5ZWQgRGVsaXZlcnkgPGh0dHBzOi8vZG9jcy5wYXJ0aWN1bGFyLm5ldC90cmFuc3BvcnRzL3JhYmJpdG1xL2RlbGF5ZWQtZGVsaXZlcnk+YF8KaXMgYXV0b21hdGljYWxseSBlbmFibGVkIHdoZW4gcXVvcnVtIHF1ZXVlcyBhcmUgZGV0ZWN0ZWQgdG8gaW1wbGVtZW50IHRoZSBFVEEgbWVjaGFuaXNtLgoKU2VlIDpyZWY6YHVzaW5nLXF1b3J1bS1xdWV1ZXNgIGZvciBjb21wbGV0ZSBkb2N1bWVudGF0aW9uLgoKQ29uZmlndXJhdGlvbiBvcHRpb25zOgoKLSA6c2V0dGluZzpgYnJva2VyX25hdGl2ZV9kZWxheWVkX2RlbGl2ZXJ5X3F1ZXVlX3R5cGVgOiBTcGVjaWZpZXMgdGhlIHF1ZXVlIHR5cGUgZm9yCiAgZGVsYXllZCBkZWxpdmVyeSAoZGVmYXVsdDogYGBxdW9ydW1gYCkKLSA6c2V0dGluZzpgdGFza19kZWZhdWx0X3F1ZXVlX3R5cGVgOiBTZXRzIHRoZSBkZWZhdWx0IHF1ZXVlIHR5cGUgZm9yIHRhc2tzCiAgKGRlZmF1bHQ6IGBgY2xhc3NpY2BgKQotIDpzZXR0aW5nOmB3b3JrZXJfZGV0ZWN0X3F1b3J1bV9xdWV1ZXNgOiBDb250cm9scyBhdXRvbWF0aWMgZGV0ZWN0aW9uIG9mIHF1b3J1bQogIHF1ZXVlcyAoZGVmYXVsdDogYGBUcnVlYGApCgpDb250cmlidXRlZCBpbiBgIyYjODIwMzs5MjA3IDxodHRwczovL2dpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9wdWxsLzkyMDc+YF8sCmAjJiM4MjAzOzkxMjEgPGh0dHBzOi8vZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L3B1bGwvOTEyMT5gXywgYW5kCmAjJiM4MjAzOzk1OTkgPGh0dHBzOi8vZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L3B1bGwvOTU5OT5gXy4KCkZvciBkZXRhaWxzIHJlZ2FyZGluZyB0aGUgNDA0IGVycm9ycywgc2VlCmBOZXcgWWVhcidzIFNlY3VyaXR5IEluY2lkZW50IDxodHRwczovL2dpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9kaXNjdXNzaW9ucy85NTI1PmBfLgoKU29mdCBTaHV0ZG93biBNZWNoYW5pc20KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KClNvZnQgc2h1dGRvd24gaXMgYSB0aW1lIGxpbWl0ZWQgd2FybSBzaHV0ZG93biwgaW5pdGlhdGVkIGp1c3QgYmVmb3JlIHRoZSBjb2xkIHNodXRkb3duLgpUaGUgd29ya2VyIHdpbGwgYWxsb3cgOnNldHRpbmc6YHdvcmtlcl9zb2Z0X3NodXRkb3duX3RpbWVvdXRgIHNlY29uZHMgZm9yIGFsbCBjdXJyZW50bHkKZXhlY3V0aW5nIHRhc2tzIHRvIGZpbmlzaCBiZWZvcmUgaXQgdGVybWluYXRlcy4gSWYgdGhlIHRpbWUgbGltaXQgaXMgcmVhY2hlZCwgdGhlIHdvcmtlcgp3aWxsIGluaXRpYXRlIGEgY29sZCBzaHV0ZG93biBhbmQgY2FuY2VsIGFsbCBjdXJyZW50bHkgZXhlY3V0aW5nIHRhc2tzLgoKVGhpcyBmZWF0dXJlIGlzIHBhcnRpY3VsYXJseSB2YWx1YWJsZSB3aGVuIHVzaW5nIGJyb2tlcnMgd2l0aCB2aXNpYmlsaXR5IHRpbWVvdXQKbWVjaGFuaXNtcywgc3VjaCBhcyBSZWRpcyBvciBTUVMuIEl0IGFsbG93cyB0aGUgd29ya2VyIGVub3VnaCB0aW1lIHRvIHJlLXF1ZXVlCnRhc2tzIHRoYXQgd2VyZSBub3QgY29tcGxldGVkIGJlZm9yZSBleGl0aW5nLCBwcmV2ZW50aW5nIHRhc2sgbG9zcyBkdXJpbmcgd29ya2VyCnNodXRkb3duLgoKU2VlIDpyZWY6YHdvcmtlci1zdG9wcGluZ2AgZm9yIGNvbXBsZXRlIGRvY3VtZW50YXRpb24gb24gd29ya2VyIHNodXRkb3duIHR5cGVzLgoKQ29uZmlndXJhdGlvbiBvcHRpb25zOgoKLSA6c2V0dGluZzpgd29ya2VyX3NvZnRfc2h1dGRvd25fdGltZW91dGA6IFNldHMgdGhlIGR1cmF0aW9uIGluIHNlY29uZHMgZm9yIHRoZSBzb2Z0CiAgc2h1dGRvd24gcGVyaW9kIChkZWZhdWx0OiBgYDAuMGBgLCBkaXNhYmxlZCkKLSA6c2V0dGluZzpgd29ya2VyX2VuYWJsZV9zb2Z0X3NodXRkb3duX29uX2lkbGVgOiBDb250cm9scyB3aGV0aGVyIHNvZnQgc2h1dGRvd24KICBzaG91bGQgYmUgZW5hYmxlZCBldmVuIHdoZW4gdGhlIHdvcmtlciBpcyBpZGxlIChkZWZhdWx0OiBgYEZhbHNlYGApCgpDb250cmlidXRlZCBieSBgQE51c251cyA8aHR0cHM6Ly9naXRodWIuY29tL051c251cz5gXyBpbgpgIyYjODIwMzs5MjEzIDxodHRwczovL2dpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9wdWxsLzkyMTM+YF8sCmAjJiM4MjAzOzkyMzEgPGh0dHBzOi8vZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L3B1bGwvOTIzMT5gXywgYW5kCmAjJiM4MjAzOzkyMzggPGh0dHBzOi8vZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L3B1bGwvOTIzOD5gXy4KClB5ZGFudGljIFN1cHBvcnQKLS0tLS0tLS0tLS0tLS0tLQoKTmV3IG5hdGl2ZSBzdXBwb3J0IGZvciBQeWRhbnRpYyBtb2RlbHMgaW4gdGFza3MuIFRoaXMgaW50ZWdyYXRpb24KYWxsb3dzIHlvdSB0byBsZXZlcmFnZSBQeWRhbnRpYydzIHBvd2VyZnVsIGRhdGEgdmFsaWRhdGlvbiBhbmQgc2VyaWFsaXphdGlvbgpjYXBhYmlsaXRpZXMgZGlyZWN0bHkgaW4geW91ciBDZWxlcnkgdGFza3MuCgpFeGFtcGxlIHVzYWdlOgoKLi4gY29kZS1ibG9jazo6IHB5dGhvbgoKICAgIGZyb20gcHlkYW50aWMgaW1wb3J0IEJhc2VNb2RlbAogICAgZnJvbSBjZWxlcnkgaW1wb3J0IENlbGVyeQoKICAgIGFwcCA9IENlbGVyeSgndGFza3MnKQoKICAgIGNsYXNzIEFyZ01vZGVsKEJhc2VNb2RlbCk6CiAgICAgICAgdmFsdWU6IGludAoKICAgIGNsYXNzIFJldHVybk1vZGVsKEJhc2VNb2RlbCk6CiAgICAgICAgdmFsdWU6IHN0cgoKICAgIEAmIzgyMDM7YXBwLnRhc2socHlkYW50aWM9VHJ1ZSkKICAgIGRlZiB4KGFyZzogQXJnTW9kZWwpIC0+IFJldHVybk1vZGVsOgoKIyMjIGFyZ3Mva3dhcmdzIHR5cGUgaGludGVkIGFzIFB5ZGFudGljIG1vZGVsIHdpbGwgYmUgY29udmVydGVkCiAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoYXJnLCBBcmdNb2RlbCkKCiMjIyBUaGUgcmV0dXJuZWQgbW9kZWwgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBkaWN0IGF1dG9tYXRpY2FsbHkKICAgICAgICByZXR1cm4gUmV0dXJuTW9kZWwodmFsdWU9ZiJleGFtcGxlOiB7YXJnLnZhbHVlfSIpCgpTZWUgOnJlZjpgdGFzay1weWRhbnRpY2AgZm9yIGNvbXBsZXRlIGRvY3VtZW50YXRpb24uCgpDb25maWd1cmF0aW9uIG9wdGlvbnM6CgotIGBgcHlkYW50aWM9VHJ1ZWBgOiBFbmFibGVzIFB5ZGFudGljIGludGVncmF0aW9uIGZvciB0aGUgdGFzawotIGBgcHlkYW50aWNfc3RyaWN0PVRydWUvRmFsc2VgYDogQ29udHJvbHMgd2hldGhlciBzdHJpY3QgdmFsaWRhdGlvbiBpcyBlbmFibGVkCiAgKGRlZmF1bHQ6IGBgRmFsc2VgYCkKLSBgYHB5ZGFudGljX2NvbnRleHQ9ey4uLn1gYDogUHJvdmlkZXMgYWRkaXRpb25hbCBjb250ZXh0IGZvciB2YWxpZGF0aW9uCi0gYGBweWRhbnRpY19kdW1wX2t3YXJncz17Li4ufWBgOiBDdXN0b21pemVzIHNlcmlhbGl6YXRpb24gYmVoYXZpb3IKCkNvbnRyaWJ1dGVkIGJ5IGBAbWF0aGlhc2VydGwgPGh0dHBzOi8vZ2l0aHViLmNvbS9tYXRoaWFzZXJ0bD5gXyBpbgpgIyYjODIwMzs5MDIzIDxodHRwczovL2dpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9wdWxsLzkwMjM+YF8sCmAjJiM4MjAzOzkzMTkgPGh0dHBzOi8vZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L3B1bGwvOTMxOT5gXywgYW5kCmAjJiM4MjAzOzkzOTMgPGh0dHBzOi8vZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L3B1bGwvOTM5Mz5gXy4KCkdvb2dsZSBQdWIvU3ViIFRyYW5zcG9ydAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk5ldyBzdXBwb3J0IGZvciBHb29nbGUgQ2xvdWQgUHViL1N1YiBhcyBhIG1lc3NhZ2UgdHJhbnNwb3J0LCBleHBhbmRpbmcKQ2VsZXJ5J3MgY2xvdWQgaW50ZWdyYXRpb24gb3B0aW9ucy4KClNlZSA6cmVmOmBicm9rZXItZ2NwdWJzdWJgIGZvciBjb21wbGV0ZSBkb2N1bWVudGF0aW9uLgoKRm9yIHRoZSBHb29nbGUgUHViL1N1YiBzdXBwb3J0IHlvdSBoYXZlIHRvIGluc3RhbGwgYWRkaXRpb25hbCBkZXBlbmRlbmNpZXM6CgouLiBjb2RlLWJsb2NrOjogY29uc29sZQoKICAgICQgcGlwIGluc3RhbGwgImNlbGVyeVtnY3B1YnN1Yl0iCgpUaGVuIGNvbmZpZ3VyZSB5b3VyIENlbGVyeSBhcHBsaWNhdGlvbiB0byB1c2UgdGhlIEdvb2dsZSBQdWIvU3ViIHRyYW5zcG9ydDoKCi4uIGNvZGUtYmxvY2s6OiBweXRob24KCiAgICBicm9rZXJfdXJsID0gJ2djcHVic3ViOi8vcHJvamVjdHMvcHJvamVjdC1pZCcKCkNvbnRyaWJ1dGVkIGJ5IGBAaGFpbWpldGhlciA8aHR0cHM6Ly9naXRodWIuY29tL2hhaW1qZXRoZXI+YF8gaW4KYCMmIzgyMDM7OTM1MSA8aHR0cHM6Ly9naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvcHVsbC85MzUxPmBfLgoKUHl0aG9uIDMuMTMgU3VwcG9ydAotLS0tLS0tLS0tLS0tLS0tLS0tCgpPZmZpY2lhbCBzdXBwb3J0IGZvciBQeXRob24gMy4xMy4gQWxsIGNvcmUgZGVwZW5kZW5jaWVzIGhhdmUgYmVlbgp1cGRhdGVkIHRvIGVuc3VyZSBjb21wYXRpYmlsaXR5LCBpbmNsdWRpbmcgS29tYnUgYW5kIHB5LWFtcXAuCgpUaGlzIHJlbGVhc2UgbWFpbnRhaW5zIGNvbXBhdGliaWxpdHkgd2l0aCBQeXRob24gMy44IHRocm91Z2ggMy4xMywgYXMgd2VsbCBhcwpQeVB5IDMuMTArLgoKQ29udHJpYnV0ZWQgYnkgYEBOdXNudXMgPGh0dHBzOi8vZ2l0aHViLmNvbS9OdXNudXM+YF8gaW4KYCMmIzgyMDM7OTMwOSA8aHR0cHM6Ly9naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvcHVsbC85MzA5PmBfIGFuZApgIyYjODIwMzs5MzUwIDxodHRwczovL2dpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9wdWxsLzkzNTA+YF8uCgpSRU1BUF9TSUdURVJNIFN1cHBvcnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpUaGUgIlJFTUFQX1NJR1RFUk0iIGZlYXR1cmUsIHByZXZpb3VzbHkgdW5kb2N1bWVudGVkLCBoYXMgYmVlbiB0ZXN0ZWQsIGRvY3VtZW50ZWQsCmFuZCBpcyBub3cgb2ZmaWNpYWxseSBzdXBwb3J0ZWQuIFRoaXMgZmVhdHVyZSBhbGxvd3MgeW91IHRvIHJlbWFwIHRoZSBTSUdURVJNCnNpZ25hbCB0byBTSUdRVUlULCBlbmFibGluZyB5b3UgdG8gaW5pdGlhdGUgYSBzb2Z0IG9yIGNvbGQgc2h1dGRvd24gdXNpbmcgVEVSTQppbnN0ZWFkIG9mIFFVSVQuCgpUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgaW4gY29udGFpbmVyaXplZCBlbnZpcm9ubWVudHMgd2hlcmUgU0lHVEVSTSBpcyB0aGUKc3RhbmRhcmQgc2lnbmFsIGZvciBncmFjZWZ1bCB0ZXJtaW5hdGlvbi4KClNlZSA6cmVmOmBDb2xkIFNodXRkb3duIGRvY3VtZW50YXRpb24gPHdvcmtlci1SRU1BUF9TSUdURVJNPmAgZm9yIG1vcmUgaW5mby4KClRvIGVuYWJsZSB0aGlzIGZlYXR1cmUsIHNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGU6CgouLiBjb2RlLWJsb2NrOjogYmFzaAoKICAgIGV4cG9ydCBSRU1BUF9TSUdURVJNPSJTSUdRVUlUIgoKQ29udHJpYnV0ZWQgYnkgYEBOdXNudXMgPGh0dHBzOi8vZ2l0aHViLmNvbS9OdXNudXM+YF8gaW4KYCMmIzgyMDM7OTQ2MSA8aHR0cHM6Ly9naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvcHVsbC85NDYxPmBfLgoKRGF0YWJhc2UgQmFja2VuZCBJbXByb3ZlbWVudHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCk5ldyBgYGNyZWF0ZV90YWJsZXNfYXRfc2V0dXBgYCBvcHRpb24gZm9yIHRoZSBkYXRhYmFzZQpiYWNrZW5kLiBUaGlzIG9wdGlvbiBjb250cm9scyB3aGVuIGRhdGFiYXNlIHRhYmxlcyBhcmUgY3JlYXRlZCwgYWxsb3dpbmcgZm9yCm5vbi1sYXp5IHRhYmxlIGNyZWF0aW9uLgoKQnkgZGVmYXVsdCAoYGBjcmVhdGVfdGFibGVzX2F0X3NldHVwPVRydWVgYCksIHRhYmxlcyBhcmUgY3JlYXRlZCBkdXJpbmcgYmFja2VuZAppbml0aWFsaXphdGlvbi4gU2V0dGluZyB0aGlzIHRvIGBgRmFsc2VgYCBkZWZlcnMgdGFibGUgY3JlYXRpb24gdW50aWwgdGhleSBhcmUKYWN0dWFsbHkgbmVlZGVkLCB3aGljaCBjYW4gYmUgdXNlZnVsIGluIGNlcnRhaW4gZGVwbG95bWVudCBzY2VuYXJpb3Mgd2hlcmUgeW91IHdhbnQKbW9yZSBjb250cm9sIG92ZXIgZGF0YWJhc2Ugc2NoZW1hIG1hbmFnZW1lbnQuCgpTZWUgOnJlZjpgY29uZi1kYXRhYmFzZS1yZXN1bHQtYmFja2VuZGAgZm9yIGNvbXBsZXRlIGRvY3VtZW50YXRpb24uCgpDb25maWd1cmF0aW9uOgoKLi4gY29kZS1ibG9jazo6IHB5dGhvbgoKICAgIGFwcC5jb25mLnJlc3VsdF9iYWNrZW5kID0gJ2RiK3NxbGl0ZTovLy9yZXN1bHRzLmRiJwogICAgYXBwLmNvbmYuZGF0YWJhc2VfY3JlYXRlX3RhYmxlc19hdF9zZXR1cCA9IEZhbHNlCgpDb250cmlidXRlZCBieSBgQE1hcmNCcmVzc29uIDxodHRwczovL2dpdGh1Yi5jb20vTWFyY0JyZXNzb24+YF8gaW4KYCMmIzgyMDM7OTIyOCA8aHR0cHM6Ly9naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvcHVsbC85MjI4PmBfLgoKV2hhdCdzIENoYW5nZWQKYGBgCgotICAgKGRvY3MpOiB1c2UgY29ycmVjdCB2ZXJzaW9uIGNlbGVyeSB2LjUuNC54IChbIyYjODIwMzs4OTc1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvODk3NSkpCi0gICBVcGRhdGUgbXlweSB0byAxLjEwLjAgKFsjJiM4MjAzOzg5NzddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy84OTc3KSkKLSAgIExpbWl0IHB5bW9uZ288NC43IHdoZW4gUHl0aG9uIDw9IDMuMTAgZHVlIHRvIGJyZWFraW5nIGNoYW5nZXMgaW4gNC43IChbIyYjODIwMzs4OTg4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvODk4OCkpCi0gICBCdW1wIHB5dGVzdCBmcm9tIDguMS4xIHRvIDguMi4wIChbIyYjODIwMzs4OTg3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvODk4NykpCi0gICBVcGRhdGUgUkVBRE1FIHRvIEluY2x1ZGUgRmFzdEFQSSBpbiBGcmFtZXdvcmsgSW50ZWdyYXRpb24gU2VjdGlvbiAoWyMmIzgyMDM7ODk3OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzg5NzgpKQotICAgQ2xhcmlmeSByZXR1cm4gdmFsdWVzIG9mIC4uLlxfb25fY29tbWl0IG1ldGhvZHMgKFsjJiM4MjAzOzg5ODRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy84OTg0KSkKLSAgIGFkZCBrYWZrYSBicm9rZXIgZG9jcyAoWyMmIzgyMDM7ODkzNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzg5MzUpKQotICAgTGltaXQgcHltb25nbzw0LjcgcmVnYXJkbGVzcyBvZiBQeXRob24gdmVyc2lvbiAoWyMmIzgyMDM7ODk5OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzg5OTkpKQotICAgVXBkYXRlIHB5bW9uZ29cW3Nydl0gcmVxdWlyZW1lbnQgZnJvbSA8NC43LD49NC4wLjIgdG8gPj00LjAuMiw8NC44IChbIyYjODIwMzs5MDAwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTAwMCkpCi0gICBVcGRhdGUgZWxhc3RpY3NlYXJjaCByZXF1aXJlbWVudCBmcm9tIDw9OC4xMy4wIHRvIDw9OC4xMy4xIChbIyYjODIwMzs5MDA0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTAwNCkpCi0gICBzZWN1cml0eTogU2VjdXJlU2VyaWFsaXplcjogc3VwcG9ydCBnZW5lcmljIGxvdy1sZXZlbCBzZXJpYWxpemVycyAoWyMmIzgyMDM7ODk4Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzg5ODIpKQotICAgZG9uJ3Qga2lsbCBpZiBwaWQgc2FtZSBhcyBmaWxlIChbIyYjODIwMzs4OTk3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvODk5NykpIChbIyYjODIwMzs4OTk4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvODk5OCkpCi0gICBVcGRhdGUgY3J5cHRvZ3JhcGh5IHRvIDQyLjAuNiAoWyMmIzgyMDM7OTAwNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkwMDUpKQotICAgQnVtcCBjcnlwdG9ncmFwaHkgZnJvbSA0Mi4wLjYgdG8gNDIuMC43IChbIyYjODIwMzs5MDA5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTAwOSkpCi0gICBkb24ndCBraWxsIGlmIHBpZCBzYW1lIGFzIGZpbGUgKFsjJiM4MjAzOzg5OTddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy84OTk3KSkgKFsjJiM4MjAzOzg5OThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy84OTk4KSkgKFsjJiM4MjAzOzkwMDddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MDA3KSkKLSAgIEFkZGVkIC12diB0byB1bml0LCBpbnRlZ3JhdGlvbiBhbmQgc21va2UgdGVzdHMgKFsjJiM4MjAzOzkwMTRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MDE0KSkKLSAgIFNlY3VyaXR5U2VyaWFsaXplcjogZW5zdXJlIHBhY2sgc2VwYXJhdG9yIHdpbGwgbm90IGJlIGNvbmZsaWN0ZWQgd2l0aCBzZXJpYWxpemVkIGZpZWxkcyAoWyMmIzgyMDM7OTAxMF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkwMTApKQotICAgVXBkYXRlIHNwaGlueC1jbGljayB0byA1LjIuMiAoWyMmIzgyMDM7OTAyNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkwMjUpKQotICAgQnVtcCBzcGhpbngtY2xpY2sgZnJvbSA1LjIuMiB0byA2LjAuMCAoWyMmIzgyMDM7OTAyOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkwMjkpKQotICAgRml4IGEgdHlwbyB0byBkaXNwbGF5IHRoZSBoZWxwIG1lc3NhZ2UgaW4gZmlyc3Qtc3RlcHMtd2l0aC1kamFuZ28gKFsjJiM4MjAzOzkwMzZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MDM2KSkKLSAgIFBpbm5lZCByZXF1ZXN0cyB0byB2Mi4zMS4wIGR1ZSB0byBkb2NrZXItcHkgYnVnIFsjJiM4MjAzOzMyNTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy8zMjU2KSAoWyMmIzgyMDM7OTAzOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkwMzkpKQotICAgRml4IGNlcnRpZmljYXRlIHZhbGlkaXR5IGNoZWNrIChbIyYjODIwMzs5MDM3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTAzNykpCi0gICBSZXZlcnQgIlBpbm5lZCByZXF1ZXN0cyB0byB2Mi4zMS4wIGR1ZSB0byBkb2NrZXItcHkgYnVnIFsjJiM4MjAzOzMyNTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy8zMjU2KSIgKFsjJiM4MjAzOzkwNDNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MDQzKSkKLSAgIEJ1bXAgcHl0ZXN0IGZyb20gOC4yLjAgdG8gOC4yLjEgKFsjJiM4MjAzOzkwMzVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MDM1KSkKLSAgIFVwZGF0ZSBlbGFzdGljc2VhcmNoIHJlcXVpcmVtZW50IGZyb20gPD04LjEzLjEgdG8gPD04LjEzLjIgKFsjJiM4MjAzOzkwNDVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MDQ1KSkKLSAgIEZpeCBkZXRlY3Rpb24gb2YgY3VzdG9tIHRhc2sgc2V0IGFzIGNsYXNzIGF0dHJpYnV0ZSB3aXRoIERqYW5nbyAoWyMmIzgyMDM7OTAzOF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkwMzgpKQotICAgVXBkYXRlIGVsYXN0aWMtdHJhbnNwb3J0IHJlcXVpcmVtZW50IGZyb20gPD04LjEzLjAgdG8gPD04LjEzLjEgKFsjJiM4MjAzOzkwNTBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MDUwKSkKLSAgIEJ1bXAgcHljb3VjaGRiIGZyb20gMS4xNC4yIHRvIDEuMTYuMCAoWyMmIzgyMDM7OTA1Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkwNTIpKQotICAgVXBkYXRlIHB5dGVzdCB0byA4LjIuMiAoWyMmIzgyMDM7OTA2MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkwNjApKQotICAgQnVtcCBjcnlwdG9ncmFwaHkgZnJvbSA0Mi4wLjcgdG8gNDIuMC44IChbIyYjODIwMzs5MDYxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTA2MSkpCi0gICBVcGRhdGUgZWxhc3RpY3NlYXJjaCByZXF1aXJlbWVudCBmcm9tIDw9OC4xMy4yIHRvIDw9OC4xNC4wIChbIyYjODIwMzs5MDY5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTA2OSkpCi0gICBcW2VuaGFuY2UgZmVhdHVyZV0gQ3JvbnRhYiBzY2hlZHVsZTogYWxsb3cgdXNpbmcgbW9udGggbmFtZXMgKFsjJiM4MjAzOzkwNjhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MDY4KSkKLSAgIEVuaGFuY2UgdG94IGVudmlyb25tZW50OiBcW3Rlc3RlbnY6Y2xlYW5dIChbIyYjODIwMzs5MDcyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTA3MikpCi0gICBDbGFyaWZ5IGRvY3MgYWJvdXQgUmVzZXJ2ZSBvbmUgdGFzayBhdCBhIHRpbWUgKFsjJiM4MjAzOzkwNzNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MDczKSkKLSAgIEdDUyBkb2NzIGZpeGVzIChbIyYjODIwMzs5MDc1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTA3NSkpCi0gICBVc2UgaHViLnJlbW92ZV93cml0ZXIgaW5zdGVhZCBvZiBodWIucmVtb3ZlIGZvciB3cml0ZSBmZHMgKFsjJiM4MjAzOzQxODVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy80MTg1KSkgKFsjJiM4MjAzOzkwNTVdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MDU1KSkKLSAgIENsYXNzIG1ldGhvZCB0byBwcm9jZXNzIGNyb250YWIgc3RyaW5nIChbIyYjODIwMzs5MDc5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTA3OSkpCi0gICBGaXhlZCBzbW9rZSB0ZXN0cyBlbnYgYnVnIHdoZW4gdXNpbmcgaW50ZWdyYXRpb24gdGFza3MgdGhhdCByZWx5IG9uIFJlZGlzIChbIyYjODIwMzs5MDkwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTA5MCkpCi0gICBCdWdmaXggLSBhIHRhc2sgd2lsbCBydW4gbXVsdGlwbGUgdGltZXMgd2hlbiBjaGFpbmluZyBjaGFpbnMgd2l0aCBncm91cHMgKFsjJiM4MjAzOzkwMjFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MDIxKSkKLSAgIEJ1bXAgbXlweSBmcm9tIDEuMTAuMCB0byAxLjEwLjEgKFsjJiM4MjAzOzkwOTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MDk2KSkKLSAgIERvbid0IGFkZCBhIHNlcGFyYXRvciB0byBnbG9iYWxfa2V5cHJlZml4IGlmIGl0IGFscmVhZHkgaGFzIG9uZSAoWyMmIzgyMDM7OTA4MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkwODApKQotICAgVXBkYXRlIHB5bW9uZ29cW3Nydl0gcmVxdWlyZW1lbnQgZnJvbSA8NC44LD49NC4wLjIgdG8gPj00LjAuMiw8NC45IChbIyYjODIwMzs5MTExXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTExMSkpCi0gICBBZGRlZCBtaXNzaW5nIGltcG9ydCBpbiBleGFtcGxlcyBmb3IgRGphbmdvIChbIyYjODIwMzs5MDk5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTA5OSkpCi0gICBCdW1wIEtvbWJ1IHRvIHY1LjQuMHJjMSAoWyMmIzgyMDM7OTExN10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkxMTcpKQotICAgUmVtb3ZlZCBza2lwcGluZyBSZWRpcyBpbiB0L3Ntb2tlL3Rlc3RzL3Rlc3RfY29uc3VtZXIucHkgdGVzdHMgKFsjJiM4MjAzOzkxMThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MTE4KSkKLSAgIFVwZGF0ZSBweXRlc3Qtc3VidGVzdHMgdG8gMC4xMy4wIChbIyYjODIwMzs5MTIwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTEyMCkpCi0gICBJbmNyZWFzZWQgc21va2UgdGVzdHMgQ0kgdGltZW91dCAoWyMmIzgyMDM7OTEyMl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkxMjIpKQotICAgQnVtcCBLb21idSB0byB2NS40LjByYzIgKFsjJiM4MjAzOzkxMjddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MTI3KSkKLSAgIFVwZGF0ZSB6c3RhbmRhcmQgdG8gMC4yMy4wIChbIyYjODIwMzs5MTI5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTEyOSkpCi0gICBVcGRhdGUgcHl0ZXN0LXN1YnRlc3RzIHRvIDAuMTMuMSAoWyMmIzgyMDM7OTEzMF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkxMzApKQotICAgQ2hhbmdlZCByZXRyeSB0byB0ZW5hY2l0eSBpbiBzbW9rZSB0ZXN0cyAoWyMmIzgyMDM7OTEzM10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkxMzMpKQotICAgQnVtcCBteXB5IGZyb20gMS4xMC4xIHRvIDEuMTEuMCAoWyMmIzgyMDM7OTEzNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkxMzUpKQotICAgVXBkYXRlIGNyeXB0b2dyYXBoeSB0byA0My4wLjAgKFsjJiM4MjAzOzkxMzhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MTM4KSkKLSAgIFVwZGF0ZSBweXRlc3QgdG8gOC4zLjEgKFsjJiM4MjAzOzkxMzddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MTM3KSkKLSAgIEFkZGVkIHN1cHBvcnQgZm9yIFF1b3J1bSBRdWV1ZXMgKFsjJiM4MjAzOzkxMjFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MTIxKSkKLSAgIEJ1bXAgS29tYnUgdG8gdjUuNC4wcmMzIChbIyYjODIwMzs5MTM5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTEzOSkpCi0gICBDbGVhbnVwIGluIENoYW5nZWxvZy5yc3QgKFsjJiM4MjAzOzkxNDFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MTQxKSkKLSAgIFVwZGF0ZSBEamFuZ28gZG9jcyBmb3IgQ0VMRVJZX0NBQ0hFX0JBQ0tFTkQgKFsjJiM4MjAzOzkxNDNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MTQzKSkKLSAgIEFkZGVkIG1pc3NpbmcgZG9jcyB0byBwcmV2aW91cyByZWxlYXNlcyAoWyMmIzgyMDM7OTE0NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkxNDQpKQotICAgRml4ZWQgYSBmZXcgZG9jdW1lbnRhdGlvbiBidWlsZCB3YXJuaW5ncyAoWyMmIzgyMDM7OTE0NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkxNDUpKQotICAgZG9jcyhSRUFETUUpOiBsaW5rIGludmFsaWQgKFsjJiM4MjAzOzkxNDhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MTQ4KSkKLSAgIFByZXBhcmUgZm9yIChwcmUpIHJlbGVhc2U6IHY1LjUuMGIxIChbIyYjODIwMzs5MTQ2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTE0NikpCi0gICBCdW1wIHB5dGVzdCBmcm9tIDguMy4xIHRvIDguMy4yIChbIyYjODIwMzs5MTUzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTE1MykpCi0gICBSZW1vdmUgc2V0dXB0b29scyBkZXByZWNhdGVkIHRlc3QgY29tbWFuZCBmcm9tIHNldHVwLnB5IChbIyYjODIwMzs5MTU5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTE1OSkpCi0gICBQaW4gcHJlLWNvbW1pdCB0byBsYXRlc3QgdmVyc2lvbiAzLjguMCBmcm9tIFB5dGhvbiAzLjkgKFsjJiM4MjAzOzkxNTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MTU2KSkKLSAgIEJ1bXAgbXlweSBmcm9tIDEuMTEuMCB0byAxLjExLjEgKFsjJiM4MjAzOzkxNjRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MTY0KSkKLSAgIENoYW5nZSAiZG9ja2VyLWNvbXBvc2UiIHRvICJkb2NrZXIgY29tcG9zZSIgaW4gTWFrZWZpbGUgKFsjJiM4MjAzOzkxNjldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MTY5KSkKLSAgIHVwZGF0ZSBweXRob24gdmVyc2lvbnMgYW5kIGRvY2tlciBjb21wb3NlIChbIyYjODIwMzs5MTcxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTE3MSkpCi0gICBBZGQgc3VwcG9ydCBmb3IgUHlkYW50aWMgbW9kZWwgdmFsaWRhdGlvbi9zZXJpYWxpemF0aW9uIChmaXhlcyBbIyYjODIwMzs4NzUxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvODc1MSkpIChbIyYjODIwMzs5MDIzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTAyMykpCi0gICBBbGxvdyBsb2NhbCBkeW5hbW9kYiB0byBiZSBpbnN0YWxsZWQgb24gYW5vdGhlciBob3N0IHRoYW4gbG9jYWxob3N0IChbIyYjODIwMzs4OTY1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvODk2NSkpCi0gICBUZXJtaW5hdGUgam9iIGltcGxlbWVudGF0aW9uIGZvciBnZXZlbnQgY29uY3VycmVuY3kgYmFja2VuZCAoWyMmIzgyMDM7OTA4M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkwODMpKQotICAgQnVtcCBLb21idSB0byB2NS40LjAgKFsjJiM4MjAzOzkxNzddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MTc3KSkKLSAgIEFkZCBjaGVjayBmb3Igc29mdF90aW1lX2xpbWl0IGFuZCB0aW1lX2xpbWl0IHZhbHVlcyAoWyMmIzgyMDM7OTE3M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkxNzMpKQotICAgUHJlcGFyZSBmb3IgKHByZSkgcmVsZWFzZTogdjUuNS4wYjIgKFsjJiM4MjAzOzkxNzhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MTc4KSkKLSAgIEFkZGVkIFNRUyAobG9jYWxzdGFjaykgYnJva2VyIHRvIGNhbnZhcyBzbW9rZSB0ZXN0cyAoWyMmIzgyMDM7OTE3OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkxNzkpKQotICAgUGluIGVsYXN0aWMtdHJhbnNwb3J0IHRvIDw9IGxhdGVzdCB2ZXJzaW9uIDguMTUuMCAoWyMmIzgyMDM7OTE4Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkxODIpKQotICAgVXBkYXRlIGVsYXN0aWNzZWFyY2ggcmVxdWlyZW1lbnQgZnJvbSA8PTguMTQuMCB0byA8PTguMTUuMCAoWyMmIzgyMDM7OTE4Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkxODYpKQotICAgaW1wcm92ZSBmb3JtYXR0aW5nIChbIyYjODIwMzs5MTg4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTE4OCkpCi0gICBBZGQgYmFzaWMgaGVsbSBjaGFydCBmb3IgY2VsZXJ5IChbIyYjODIwMzs5MTgxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTE4MSkpCi0gICBVcGRhdGUga2Fma2EucnN0IChbIyYjODIwMzs5MTk0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTE5NCkpCi0gICBVcGRhdGUgcHl0ZXN0LW9yZGVyIHRvIDEuMy4wIChbIyYjODIwMzs5MTk4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTE5OCkpCi0gICBVcGRhdGUgbXlweSB0byAxLjExLjIgKFsjJiM4MjAzOzkyMDZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MjA2KSkKLSAgIGFsbCBhZGRlZCB0byByb3V0ZXMgKFsjJiM4MjAzOzkyMDRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MjA0KSkKLSAgIEZpeCB0eXBvcyBkaXNjb3ZlcmVkIGJ5IGNvZGVzcGVsbCAoWyMmIzgyMDM7OTIxMl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkyMTIpKQotICAgVXNlIHR6ZGF0YSBleHRyYXMgd2l0aCB6b25laW5mbyBiYWNrcG9ydHMgKFsjJiM4MjAzOzgyODZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy84Mjg2KSkKLSAgIFVzZSBgZG9ja2VyIGNvbXBvc2VgIGluIENvbnRyaWJ1dGluZydzIGRvYyBidWlsZCBzZWN0aW9uIChbIyYjODIwMzs5MjE5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTIxOSkpCi0gICBGYWlsaW5nIHRlc3QgZm9yIGlzc3VlIFsjJiM4MjAzOzkxMTldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MTE5KSAoWyMmIzgyMDM7OTIxNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkyMTUpKQotICAgRml4IGRhdGVfZG9uZSB0aW1lem9uZSBpc3N1ZSAoWyMmIzgyMDM7ODM4NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzgzODUpKQotICAgQ0kgRml4ZXMgdG8gc21va2UgdGVzdHMgKFsjJiM4MjAzOzkyMjNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MjIzKSkKLSAgIGZpeDogcGFzc2VzIGN1cnJlbnQgcmVxdWVzdCBjb250ZXh0IHdoZW4gcHVzaGluZyB0byByZXF1ZXN0X3N0YWNrIChbIyYjODIwMzs5MjA4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTIwOCkpCi0gICBGaXggYnJva2VuIGxpbmsgaW4gdGhlIFVzaW5nIFJhYmJpdE1RIGRvY3MgcGFnZSAoWyMmIzgyMDM7OTIyNl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkyMjYpKQotICAgQWRkZWQgU29mdCBTaHV0ZG93biBNZWNoYW5pc20gKFsjJiM4MjAzOzkyMTNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MjEzKSkKLSAgIEFkZGVkIHdvcmtlcl9lbmFibGVfc29mdF9zaHV0ZG93bl9vbl9pZGxlIChbIyYjODIwMzs5MjMxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTIzMSkpCi0gICBCdW1wIGNyeXB0b2dyYXBoeSBmcm9tIDQzLjAuMCB0byA0My4wLjEgKFsjJiM4MjAzOzkyMzNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MjMzKSkKLSAgIEFkZGVkIGRvY3MgcmVnYXJkaW5nIHRoZSByZWxldmFuY3kgb2Ygc29mdCBzaHV0ZG93biBhbmQgRVRBIHRhc2tzIChbIyYjODIwMzs5MjM4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTIzOCkpCi0gICBTaG93IGJyb2tlcl9jb25uZWN0aW9uX3JldHJ5X29uX3N0YXJ0dXAgd2FybmluZyBvbmx5IGlmIGl0IGV2YWx1YXRlcyBhcyBGYWxzZSAoWyMmIzgyMDM7OTIyN10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkyMjcpKQotICAgRml4ZWQgZG9ja2VyLWRvY3MgQ0kgZmFpbHVyZSAoWyMmIzgyMDM7OTI0MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkyNDApKQotICAgQWRkZWQgZG9ja2VyIGNsZWFudXAgYXV0by1maXh0dXJlIHRvIGltcHJvdmUgc21va2UgdGVzdHMgc3RhYmlsaXR5IChbIyYjODIwMzs5MjQzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTI0MykpCi0gICBwcmludCBpcyBub3QgdGhyZWFkLXNhZmUsIHNvIHNob3VsZCBub3QgYmUgdXNlZCBpbiBzaWduYWwgaGFuZGxlciAoWyMmIzgyMDM7OTIyMl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkyMjIpKQotICAgUHJlcGFyZSBmb3IgKHByZSkgcmVsZWFzZTogdjUuNS4wYjMgKFsjJiM4MjAzOzkyNDRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MjQ0KSkKLSAgIENvcnJlY3QgdGhlIGVycm9yIGRlc2NyaXB0aW9uIGluIGV4Y2VwdGlvbiBtZXNzYWdlIHdoZW4gdmFsaWRhdGUgc29mdF90aW1lX2xpbWl0IChbIyYjODIwMzs5MjQ2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTI0NikpCi0gICBVcGRhdGUgbXNncGFjayB0byAxLjEuMCAoWyMmIzgyMDM7OTI0OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkyNDkpKQotICAgY2hvcmUodXRpbHMvdGltZS5weSk6IHJlbmFtZSBgX2lzX2FtYmlnaW91c2AgLT4gYF9pc19hbWJpZ3VvdXNgIChbIyYjODIwMzs5MjQ4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTI0OCkpCi0gICBSZWR1Y2VkIFNtb2tlIFRlc3RzIHRvIG1pbi9tYXggc3VwcG9ydGVkIHB5dGhvbiAoMy44LzMuMTIpIChbIyYjODIwMzs5MjUyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTI1MikpCi0gICBVcGRhdGUgcHl0ZXN0IHRvIDguMy4zIChbIyYjODIwMzs5MjUzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTI1MykpCi0gICBVcGRhdGUgZWxhc3RpY3NlYXJjaCByZXF1aXJlbWVudCBmcm9tIDw9OC4xNS4wIHRvIDw9OC4xNS4xIChbIyYjODIwMzs5MjU1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTI1NSkpCi0gICB1cGRhdGUgbW9uZ29kYiB3aXRob3V0IGRlcHJlY2F0ZWQgYFtzcnZdYCBleHRyYSByZXF1aXJlbWVudCAoWyMmIzgyMDM7OTI1OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkyNTgpKQotICAgYmxhY2tzbWl0aC5zaDogTWlncmF0ZSB3b3JrZmxvd3MgdG8gQmxhY2tzbWl0aCAoWyMmIzgyMDM7OTI2MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkyNjEpKQotICAgRml4ZXMgWyMmIzgyMDM7OTExOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkxMTkpOiBpbmplY3QgZGlzcGF0Y2hfdWlkIGZvciByZXRyeS13cmFwcGVkIHJlY2VpdmVycyAoWyMmIzgyMDM7OTI0N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkyNDcpKQotICAgUnVuIGFsbCBzbW9rZSB0ZXN0cyBDSSBqb2JzIHRvZ2V0aGVyIChbIyYjODIwMzs5MjYzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTI2MykpCi0gICBJbXByb3ZlIGRvY3VtZW50YXRpb24gb24gdmlzaWJpbGl0eSB0aW1lb3V0IChbIyYjODIwMzs5MjY0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTI2NCkpCi0gICBCdW1wIHB5dGVzdC1jZWxlcnkgdG8gMS4xLjIgKFsjJiM4MjAzOzkyNjddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MjY3KSkKLSAgIEFkZGVkIG1pc3NpbmcgImFwcC5jb25mLnZpc2liaWxpdHlfdGltZW91dCIgaW4gc21va2UgdGVzdHMgKFsjJiM4MjAzOzkyNjZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MjY2KSkKLSAgIEltcHJvdmVkIHN0YWJpbGl0eSB3aXRoIHQvc21va2UvdGVzdHMvdGVzdF9jb25zdW1lci5weSAoWyMmIzgyMDM7OTI2OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkyNjgpKQotICAgSW1wcm92ZWQgUmVkaXMgY29udGFpbmVyIHN0YWJpbGl0eSBpbiB0aGUgc21va2UgdGVzdHMgKFsjJiM4MjAzOzkyNzFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MjcxKSkKLSAgIERpc2FibGVkIEVYSEFVU1RfTUVNT1JZIHRlc3RzIGluIFNtb2tlLXRhc2tzIChbIyYjODIwMzs5MjcyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTI3MikpCi0gICBNYXJrZWQgeGZhaWwgZm9yIHRlc3RfcmVkdWNpbmdfcHJlZmV0Y2hfY291bnQgd2l0aCBSZWRpcyAtIGZsYWt5IHRlc3QgKFsjJiM4MjAzOzkyNzNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MjczKSkKLSAgIEZpeGVkIHB5cHkgdW5pdCB0ZXN0cyByYW5kb20gZmFpbHVyZXMgaW4gdGhlIENJIChbIyYjODIwMzs5Mjc1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTI3NSkpCi0gICBGaXhlZCBtb3JlIHB5cHkgdW5pdCB0ZXN0cyByYW5kb20gZmFpbHVyZXMgaW4gdGhlIENJIChbIyYjODIwMzs5Mjc4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTI3OCkpCi0gICBGaXggUmVkaXMgY29udGFpbmVyIGZyb20gYWJvcnRpbmcgcmFuZG9tbHkgKFsjJiM4MjAzOzkyNzZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85Mjc2KSkKLSAgIFJ1biBJbnRlZ3JhdGlvbiAmIFNtb2tlIENJIHRlc3RzIHRvZ2V0aGVyIGFmdGVyIHVuaXQgdGVzdHMgcGFzc2VzIChbIyYjODIwMzs5MjgwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTI4MCkpCi0gICBBZGRlZCAibG9nbGV2ZWwgdmVyYm9zZSIgdG8gUmVkaXMgY29udGFpbmVycyBpbiBzbW9rZSB0ZXN0cyAoWyMmIzgyMDM7OTI4Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkyODIpKQotICAgRml4ZWQgUmVkaXMgZXJyb3IgaW4gdGhlIHNtb2tlIHRlc3RzOiAiUG9zc2libGUgU0VDVVJJVFkgQVRUQUNLIGRldGVjdGVkIiAoWyMmIzgyMDM7OTI4NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkyODQpKQotICAgUmVmYWN0b3JlZCB0aGUgc21va2UgdGVzdHMgZ2l0aHViIHdvcmtmbG93IChbIyYjODIwMzs5Mjg1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTI4NSkpCi0gICBJbmNyZWFzZWQgLS1yZXJ1bnMgMy0+NCBpbiBzbW9rZSB0ZXN0cyAoWyMmIzgyMDM7OTI4Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkyODYpKQotICAgSW1wcm92ZSBzdGFiaWxpdHkgb2Ygc21va2UgdGVzdHMgKENJIGFuZCBMb2NhbCkgKFsjJiM4MjAzOzkyODddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85Mjg3KSkKLSAgIEZpeGVkIFNtb2tlIHRlc3RzIENJICJ0ZXN0LWNhc2UiIGxhYmxlcyAoc3BlY2lmaWMgaW5zdGVhZCBvZiBnZW5lcmFsKSAoWyMmIzgyMDM7OTI4OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkyODgpKQotICAgVXNlIGFzc2VydF9sb2dfZXhpc3RzIGluc3RlYWQgb2Ygd2FpdF9mb3JfbG9nIGluIHdvcmtlciBzbW9rZSB0ZXN0cyAoWyMmIzgyMDM7OTI5MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkyOTApKQotICAgT3B0aW1pemVkIHQvc21va2UvdGVzdHMvdGVzdF93b3JrZXIucHkgKFsjJiM4MjAzOzkyOTFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MjkxKSkKLSAgIEVuYWJsZSBzbW9rZSB0ZXN0cyBkb2NrZXJzIGNoZWNrIGJlZm9yZSBlYWNoIHRlc3Qgc3RhcnRzIChbIyYjODIwMzs5MjkyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTI5MikpCi0gICBSZWxheGVkIHNtb2tlIHRlc3RzIGZsYWt5IHRlc3RzIG1lY2hhbmlzbSAoWyMmIzgyMDM7OTI5M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkyOTMpKQotICAgVXBkYXRlZCBxdW9ydW0gcXVldWUgZGV0ZWN0aW9uIHRvIGhhbmRsZSBtdWx0aXBsZSBicm9rZXIgaW5zdGFuY2VzIChbIyYjODIwMzs5Mjk0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTI5NCkpCi0gICBOb24tbGF6eSB0YWJsZSBjcmVhdGlvbiBmb3IgZGF0YWJhc2UgYmFja2VuZCAoWyMmIzgyMDM7OTIyOF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkyMjgpKQotICAgUGluIHB5bW9uZ28gdG8gbGF0ZXN0IHZlcnNpb24gNC45IChbIyYjODIwMzs5Mjk3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTI5NykpCi0gICBCdW1wIHB5bW9uZ28gZnJvbSA0LjkgdG8gNC45LjEgKFsjJiM4MjAzOzkyOThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85Mjk4KSkKLSAgIEJ1bXAgS29tYnUgdG8gdjUuNC4yIChbIyYjODIwMzs5MzA0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTMwNCkpCi0gICBVc2UgcmFiYml0bXE6MyBpbiBzdGFtcGluZyBzbW9rZSB0ZXN0cyAoWyMmIzgyMDM7OTMwN10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkzMDcpKQotICAgQnVtcCBweXRlc3QtY2VsZXJ5IHRvIDEuMS4zIChbIyYjODIwMzs5MzA4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTMwOCkpCi0gICBBZGRlZCBQeXRob24gMy4xMyBTdXBwb3J0IChbIyYjODIwMzs5MzA5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTMwOSkpCi0gICBBZGQgbG9nIHdoZW4gZ2xvYmFsIHFvcyBpcyBkaXNhYmxlZCAoWyMmIzgyMDM7OTI5Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkyOTYpKQotICAgQWRkZWQgb2ZmaWNpYWwgcmVsZWFzZSBkb2NzICh3aGF0c25ldykgZm9yIHY1LjUgKFsjJiM4MjAzOzkzMTJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MzEyKSkKLSAgIEVuYWJsZSBDb2Rlc3BlbGwgYXV0b2ZpeCAoWyMmIzgyMDM7OTMxM10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkzMTMpKQotICAgUHlkYW50aWMgdHlwZWhpbnRzOiBGaXggb3B0aW9uYWwsIGFsbG93IGdlbmVyaWNzIChbIyYjODIwMzs5MzE5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTMxOSkpCi0gICBQcmVwYXJlIGZvciAocHJlKSByZWxlYXNlOiB2NS41LjBiNCAoWyMmIzgyMDM7OTMyMl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkzMjIpKQotICAgQWRkZWQgQmxhY2tzbWl0aC5zaCB0byB0aGUgU3BvbnNvcnMgc2VjdGlvbiBpbiB0aGUgUkVBRE1FIChbIyYjODIwMzs5MzIzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTMyMykpCi0gICBSZXZlcnQgIkFkZGVkIEJsYWNrc21pdGguc2ggdG8gdGhlIFNwb25zb3JzIHNlY3Rpb24gaW4gdGhlIFJFQURNRSIgKFsjJiM4MjAzOzkzMjRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MzI0KSkKLSAgIEFkZGVkIEJsYWNrc21pdGguc2ggdG8gdGhlIFNwb25zb3JzIHNlY3Rpb24gaW4gdGhlIFJFQURNRSAoWyMmIzgyMDM7OTMyNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkzMjUpKQotICAgQWRkZWQgbWlzc2luZyAiIHxvYy1zcG9uc29yLTN84oCdIGluIFJFQURNRSAoWyMmIzgyMDM7OTMyNl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkzMjYpKQotICAgVXNlIEJsYWNrc21pdGggU1ZHIGxvZ28gKFsjJiM4MjAzOzkzMjddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MzI3KSkKLSAgIFVwZGF0ZWQgQmxhY2tzbWl0aCBTVkcgbG9nbyAoWyMmIzgyMDM7OTMyOF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkzMjgpKQotICAgUmV2ZXJ0ICJVcGRhdGVkIEJsYWNrc21pdGggU1ZHIGxvZ28iIChbIyYjODIwMzs5MzI5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTMyOSkpCi0gICBVcGRhdGUgcHltb25nbyB0byA0LjEwLjAgKFsjJiM4MjAzOzkzMzBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MzMwKSkKLSAgIFVwZGF0ZSBweW1vbmdvIHRvIDQuMTAuMSAoWyMmIzgyMDM7OTMzMl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkzMzIpKQotICAgVXBkYXRlIHVzZXIgZ3VpZGUgdG8gcmVjb21tZW5kIGRlbGF5X29uX2NvbW1pdCAoWyMmIzgyMDM7OTMzM10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkzMzMpKQotICAgUGluIHByZS1jb21taXQgdG8gbGF0ZXN0IHZlcnNpb24gNC4wLjAgKFB5dGhvbiAzLjkrKSAoWyMmIzgyMDM7OTMzNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkzMzQpKQotICAgVXBkYXRlIGVwaGVtIHRvIDQuMS42IChbIyYjODIwMzs5MzM2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTMzNikpCi0gICBVcGRhdGVkIEJsYWNrc21pdGggU1ZHIGxvZ28gKFsjJiM4MjAzOzkzMzddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MzM3KSkKLSAgIFByZXBhcmUgZm9yIChwcmUpIHJlbGVhc2U6IHY1LjUuMHJjMSAoWyMmIzgyMDM7OTM0MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkzNDEpKQotICAgRml4OiBUcmVhdCBkYm0uZXJyb3IgYXMgYSBjb3JydXB0ZWQgc2NoZWR1bGUgZmlsZSAoWyMmIzgyMDM7OTMzMV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkzMzEpKQotICAgUGluIHByZS1jb21taXQgdG8gbGF0ZXN0IHZlcnNpb24gNC4wLjEgKFsjJiM4MjAzOzkzNDNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MzQzKSkKLSAgIEFkZGVkIFB5dGhvbiAzLjEzIHRvIERvY2tlcmZpbGVzIChbIyYjODIwMzs5MzUwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTM1MCkpCi0gICBTa2lwIHRlc3RfcG9vbF9yZXN0YXJ0X2ltcG9ydF9tb2R1bGVzIG9uIFB5UHkgZHVlIHRvIHRlc3QgaXNzdWUgKFsjJiM4MjAzOzkzNTJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MzUyKSkKLSAgIFVwZGF0ZSBlbGFzdGljLXRyYW5zcG9ydCByZXF1aXJlbWVudCBmcm9tIDw9OC4xNS4wIHRvIDw9OC4xNS4xIChbIyYjODIwMzs5MzQ3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTM0NykpCi0gICBhZGRlZCBkcmFnb25mbHkgbG9nbyAoWyMmIzgyMDM7OTM1M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkzNTMpKQotICAgVXBkYXRlIFJFQURNRS5yc3QgKFsjJiM4MjAzOzkzNTRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MzU0KSkKLSAgIFVwZGF0ZSBSRUFETUUucnN0IChbIyYjODIwMzs5MzU1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTM1NSkpCi0gICBVcGRhdGUgbXlweSB0byAxLjEyLjAgKFsjJiM4MjAzOzkzNTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MzU2KSkKLSAgIEJ1bXAgS29tYnUgdG8gdjUuNS4wcmMxIChbIyYjODIwMzs5MzU3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTM1NykpCi0gICBGaXggYGNlbGVyeSAtLWxvYWRlcmAgb3B0aW9uIHBhcnNpbmcgKFsjJiM4MjAzOzkzNjFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MzYxKSkKLSAgIEFkZCBzdXBwb3J0IGZvciBHb29nbGUgUHViL1N1YiB0cmFuc3BvcnQgKFsjJiM4MjAzOzkzNTFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MzUxKSkKLSAgIEFkZCBuYXRpdmUgaW5jciBzdXBwb3J0IGZvciBHQ1NCYWNrZW5kIChbIyYjODIwMzs5MzAyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTMwMikpCi0gICBmaXgocGVyZm9ybV9wZW5kaW5nX29wZXJhdGlvbnMpOiBwcmV2ZW50IHRhc2sgZHVwbGljYXRpb24gb24gc2h1dGRvd27igKYgKFsjJiM4MjAzOzkzNDhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MzQ4KSkKLSAgIFVwZGF0ZSBncnBjaW8gdG8gMS42Ny4wIChbIyYjODIwMzs5MzY1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTM2NSkpCi0gICBVcGRhdGUgZ29vZ2xlLWNsb3VkLWZpcmVzdG9yZSB0byAyLjE5LjAgKFsjJiM4MjAzOzkzNjRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MzY0KSkKLSAgIEFubm90YXRlIGNlbGVyeS91dGlscy90aW1lcjIucHkgKFsjJiM4MjAzOzkzNjJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MzYyKSkKLSAgIFVwZGF0ZSBjcnlwdG9ncmFwaHkgdG8gNDMuMC4zIChbIyYjODIwMzs5MzY2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTM2NikpCi0gICBVcGRhdGUgbXlweSB0byAxLjEyLjEgKFsjJiM4MjAzOzkzNjhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MzY4KSkKLSAgIEJ1bXAgbXlweSBmcm9tIDEuMTIuMSB0byAxLjEzLjAgKFsjJiM4MjAzOzkzNzNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MzczKSkKLSAgIFBhc3MgdGltZW91dCBhbmQgY29uZmlybV90aW1lb3V0IHRvIHByb2R1Y2VyLnB1Ymxpc2goKSAoWyMmIzgyMDM7OTM3NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzkzNzQpKQotICAgQnVtcCBLb21idSB0byB2NS41LjByYzIgKFsjJiM4MjAzOzkzODJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MzgyKSkKLSAgIEJ1bXAgcHl0ZXN0LWNvdiBmcm9tIDUuMC4wIHRvIDYuMC4wIChbIyYjODIwMzs5Mzg4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTM4OCkpCi0gICBkZWZhdWx0IHN0cmljdCB0byBGYWxzZSBmb3IgcHlkYW50aWMgdGFza3MgKFsjJiM4MjAzOzkzOTNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85MzkzKSkKLSAgIE9ubHkgbG9nIHRoYXQgZ2xvYmFsIFFvUyBpcyBkaXNhYmxlZCBpZiB1c2luZyBhbXFwIChbIyYjODIwMzs5Mzk1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTM5NSkpCi0gICBjaG9yZTogdXBkYXRlIHNwb25zb3JzaGlwIGxvZ28gKFsjJiM4MjAzOzkzOThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85Mzk4KSkKLSAgIEFsbG93IGN1c3RvbSBob3N0bmFtZSBmb3IgY2VsZXJ5X3dvcmtlciBpbiBjZWxlcnkuY29udHJpYi5weXRlc3QgLyBjZWxlcnkuY29udHJpYi50ZXN0aW5nLndvcmtlciAoWyMmIzgyMDM7OTQwNV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk0MDUpKQotICAgUmVtb3ZlZCBkb2NrZXItZG9jcyBmcm9tIENJIChvcHRpb25hbCBqb2IsIG1hbGZ1bmN0aW9uaW5nKSAoWyMmIzgyMDM7OTQwNl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk0MDYpKQotICAgQWRkZWQgYSB1dGlsaXR5IHRvIGZvcm1hdCBjaGFuZ2Vsb2dzIGZyb20gdGhlIGF1dG8tZ2VuZXJhdGVkIEdpdEh1YiByZWxlYXNlIG5vdGVzIChbIyYjODIwMzs5NDA4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTQwOCkpCi0gICBCdW1wIGNvZGVjb3YvY29kZWNvdi1hY3Rpb24gZnJvbSA0IHRvIDUgKFsjJiM4MjAzOzk0MTJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85NDEyKSkKLSAgIFVwZGF0ZSBlbGFzdGljc2VhcmNoIHJlcXVpcmVtZW50IGZyb20gPD04LjE1LjEgdG8gPD04LjE2LjAgKFsjJiM4MjAzOzk0MTBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85NDEwKSkKLSAgIE5hdGl2ZSBEZWxheWVkIERlbGl2ZXJ5IGluIFJhYmJpdE1RIChbIyYjODIwMzs5MjA3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTIwNykpCi0gICBQcmVwYXJlIGZvciAocHJlKSByZWxlYXNlOiB2NS41LjByYzIgKFsjJiM4MjAzOzk0MTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85NDE2KSkKLSAgIERvY3VtZW50IHVzYWdlIG9mIGJyb2tlcl9uYXRpdmVfZGVsYXllZF9kZWxpdmVyeV9xdWV1ZV90eXBlIChbIyYjODIwMzs5NDE5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTQxOSkpCi0gICBBZGp1c3Qgc2VjdGlvbiBpbiB3aGF0J3MgbmV3IGRvY3VtZW50IHJlZ2FyZGluZyBxdW9ydW0gcXVldWVzIHN1cHBvcnQgKFsjJiM4MjAzOzk0MjBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85NDIwKSkKLSAgIFVwZGF0ZSBweXRlc3QtcmVydW5mYWlsdXJlcyB0byAxNS4wIChbIyYjODIwMzs5NDIyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTQyMikpCi0gICBEb2N1bWVudCBncm91cCB1bnJvbGxpbmcgKFsjJiM4MjAzOzk0MjFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85NDIxKSkKLSAgIGZpeCBzbWFsbCB0eXBvIGFjY2VzIC0+IGFjY2VzcyAoWyMmIzgyMDM7OTQzNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk0MzQpKQotICAgVXBkYXRlIGNyeXB0b2dyYXBoeSB0byA0NC4wLjAgKFsjJiM4MjAzOzk0MzddKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85NDM3KSkKLSAgIEFkZGVkIHB5cHkgdG8gRG9ja2VyZmlsZSAoWyMmIzgyMDM7OTQzOF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk0MzgpKQotICAgU2tpcHBlZCBmbGFreSB0ZXN0cyBvbiBweXB5IChhbGwgcGFzcyBhZnRlciB+MTAgcmVydW5zKSAoWyMmIzgyMDM7OTQzOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk0MzkpKQotICAgQWxsb3dpbmcgbWFuYWdlZCBjcmVkZW50aWFscyBmb3IgYXp1cmVibG9ja2Jsb2IgKFsjJiM4MjAzOzk0MzBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85NDMwKSkKLSAgIEFsbG93IHBhc3NpbmcgQ2VsZXJ5IG9iamVjdHMgdG8gdGhlIENsaWNrIGVudHJ5IHBvaW50IChbIyYjODIwMzs5NDI2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTQyNikpCi0gICBzdXBwb3J0IFJlcXVlc3QgdGVybWluYXRpb24gZm9yIGdldmVudCAoWyMmIzgyMDM7OTQ0MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk0NDApKQotICAgUHJldmVudCBldmVudF9tYXNrIGZyb20gYmVpbmcgb3ZlcndyaXR0ZW4uIChbIyYjODIwMzs5NDMyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTQzMikpCi0gICBVcGRhdGUgcHl0ZXN0IHRvIDguMy40IChbIyYjODIwMzs5NDQ0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTQ0NCkpCi0gICBQcmVwYXJlIGZvciAocHJlKSByZWxlYXNlOiB2NS41LjByYzMgKFsjJiM4MjAzOzk0NTBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85NDUwKSkKLSAgIEJ1Z2ZpeDogU0lHUVVJVCBub3QgaW5pdGlhdGluZyBjb2xkIHNodXRkb3duIHdoZW4gYHRhc2tfYWNrc19sYXRlPUZhbHNlYCAoWyMmIzgyMDM7OTQ2MV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk0NjEpKQotICAgRml4ZWQgcHljdXJsIGRlcCB3aXRoIFB5dGhvbiAzLjggKFsjJiM4MjAzOzk0NzFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85NDcxKSkKLSAgIFVwZGF0ZSBlbGFzdGljc2VhcmNoIHJlcXVpcmVtZW50IGZyb20gPD04LjE2LjAgdG8gPD04LjE3LjAgKFsjJiM4MjAzOzk0NjldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85NDY5KSkKLSAgIEJ1bXAgcHl0ZXN0LXN1YnRlc3RzIGZyb20gMC4xMy4xIHRvIDAuMTQuMSAoWyMmIzgyMDM7OTQ1OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk0NTkpKQotICAgZG9jdW1lbnRhdGlvbjogQWRkZWQgYSB0eXBlIGFubm90YXRpb24gdG8gdGhlIHBlcmlvZGljIHRhc2sgZXhhbXBsZSAoWyMmIzgyMDM7OTQ3M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk0NzMpKQotICAgUHJlcGFyZSBmb3IgKHByZSkgcmVsZWFzZTogdjUuNS4wcmM0IChbIyYjODIwMzs5NDc0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTQ3NCkpCi0gICBCdW1wIG15cHkgZnJvbSAxLjEzLjAgdG8gMS4xNC4wIChbIyYjODIwMzs5NDc2XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTQ3NikpCi0gICBGaXggY2Fzc2FuZHJhIGJhY2tlbmQgcG9ydCBzZXR0aW5ncyBub3Qgd29ya2luZyAoWyMmIzgyMDM7OTQ2NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk0NjUpKQotICAgVW5yb2xsIGdyb3VwIHdoZW4gYSBncm91cCB3aXRoIGEgc2luZ2xlIGl0ZW0gaXMgY2hhaW5lZCB1c2luZyB0aGUgfCBvcGVyYXRvciAoWyMmIzgyMDM7OTQ1Nl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk0NTYpKQotICAgZml4KGRqYW5nbyk6IGNhdGNoIHRoZSByaWdodCBlcnJvciB3aGVuIHRyeWluZyB0byBjbG9zZSBkYiBjb25uZWN0aW9uIChbIyYjODIwMzs5MzkyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTM5MikpCi0gICBSZXBsYWNpbmcgYSB0YXNrIHdpdGggYSBjaGFpbiB3aGljaCBjb250YWlucyBhIGdyb3VwIG5vdyByZXR1cm5zIGEgcmVzdWx0IGluc3RlYWQgb2YgaGFuZ2luZyAoWyMmIzgyMDM7OTQ4NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk0ODQpKQotICAgQXZvaWQgdXNpbmcgYSBncm91cCBvZiBvbmUgYXMgaXQgaXMgbm93IHVucm9sbGVkIGludG8gYSBjaGFpbiAoWyMmIzgyMDM7OTUxMF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk1MTApKQotICAgTGluayB0byB0aGUgY29ycmVjdCBJUkMgbmV0d29yayAoWyMmIzgyMDM7OTUwOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk1MDkpKQotICAgQnVtcCBweXRlc3QtZ2l0aHViLWFjdGlvbnMtYW5ub3RhdGUtZmFpbHVyZXMgZnJvbSAwLjIuMCB0byAwLjMuMCAoWyMmIzgyMDM7OTUwNF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk1MDQpKQotICAgVXBkYXRlIGNhbnZhcy5yc3QgdG8gZml4IG91dHB1dCByZXN1bHQgZnJvbSBjaGFpbiBvYmplY3QgKFsjJiM4MjAzOzk1MDJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85NTAyKSkKLSAgIFVuYXV0aG9yaXplZCBDaGFuZ2VzIENsZWFudXAgKFsjJiM4MjAzOzk1MjhdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85NTI4KSkKLSAgIFxbUkUtQVBQUk9WRURdIGZpeChkamFuZ28pOiBjYXRjaCB0aGUgcmlnaHQgZXJyb3Igd2hlbiB0cnlpbmcgdG8gY2xvc2UgZGIgY29ubmVjdGlvbiAoWyMmIzgyMDM7OTUyOV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk1MjkpKQotICAgXFtSRS1BUFBST1ZFRF0gTGluayB0byB0aGUgY29ycmVjdCBJUkMgbmV0d29yayAoWyMmIzgyMDM7OTUzMV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk1MzEpKQotICAgXFtSRS1BUFBST1ZFRF0gVXBkYXRlIGNhbnZhcy5yc3QgdG8gZml4IG91dHB1dCByZXN1bHQgZnJvbSBjaGFpbiBvYmplY3QgKFsjJiM4MjAzOzk1MzJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85NTMyKSkKLSAgIFVwZGF0ZSB0ZXN0LWNpLWJhc2UudHh0IChbIyYjODIwMzs5NTM5XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTUzOSkpCi0gICBVcGRhdGUgaW5zdGFsbC1weWVudi5zaCAoWyMmIzgyMDM7OTU0MF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk1NDApKQotICAgVXBkYXRlIGVsYXN0aWNzZWFyY2ggcmVxdWlyZW1lbnQgZnJvbSA8PTguMTcuMCB0byA8PTguMTcuMSAoWyMmIzgyMDM7OTUxOF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk1MTgpKQotICAgQnVtcCBnb29nbGUtY2xvdWQtZmlyZXN0b3JlIGZyb20gMi4xOS4wIHRvIDIuMjAuMCAoWyMmIzgyMDM7OTQ5M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk0OTMpKQotICAgQnVtcCBteXB5IGZyb20gMS4xNC4wIHRvIDEuMTQuMSAoWyMmIzgyMDM7OTQ4M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk0ODMpKQotICAgVXBkYXRlIGVsYXN0aWMtdHJhbnNwb3J0IHJlcXVpcmVtZW50IGZyb20gPD04LjE1LjEgdG8gPD04LjE3LjAgKFsjJiM4MjAzOzk0OTBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85NDkwKSkKLSAgIFVwZGF0ZSBEb2NrZXJmaWxlIGJ5IGFkZGluZyBtaXNzaW5nIFB5dGhvbiB2ZXJzaW9uIDMuMTMgKFsjJiM4MjAzOzk1NDldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85NTQ5KSkKLSAgIEZpeCB0eXBvIGZvciBkZWZhdWx0IG9mIHNpZyAoWyMmIzgyMDM7OTQ5NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk0OTUpKQotICAgZml4KGNyb250YWIpOiByZXNvbHZlIGNvbnN0cnVjdG9yIHR5cGUgY29uZmxpY3RzIChbIyYjODIwMzs5NTUxXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTU1MSkpCi0gICB3b3JrZXJfbWF4X21lbW9yeV9wZXJfY2hpbGQ6IGtpbG9ieXRlIGlzIDEwMjQgYnl0ZXMgKFsjJiM4MjAzOzk1NTNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85NTUzKSkKLSAgIEZpeCBmb3JtYXR0aW5nIGluIHF1b3J1bSBxdWV1ZSBkb2NzIChbIyYjODIwMzs5NTU1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTU1NSkpCi0gICBCdW1wIGNyeXB0b2dyYXBoeSBmcm9tIDQ0LjAuMCB0byA0NC4wLjEgKFsjJiM4MjAzOzk1NTZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85NTU2KSkKLSAgIEZpeCB0aGUgc2VuZF90YXNrIG1ldGhvZCB3aGVuIGRldGVjdGluZyBpZiB0aGUgbmF0aXZlIGRlbGF5ZWQgZGVsaXZlcnkgYXBwcm9hY2ggaXMgYXZhaWxhYmxlIChbIyYjODIwMzs5NTUyXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTU1MikpCi0gICBSZXZlcnRlZCBQUiBbIyYjODIwMzs3ODE0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvNzgxNCkgJiBtaW5vciBjb2RlIGltcHJvdmVtZW50IChbIyYjODIwMzs5NDk0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTQ5NCkpCi0gICBJbXByb3ZlZCBkb25hdGlvbiBhbmQgc3BvbnNvcnNoaXAgdmlzaWJpbGl0eSAoWyMmIzgyMDM7OTU1OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk1NTgpKQotICAgVXBkYXRlZCB0aGUgR2V0dGluZyBIZWxwIHNlY3Rpb24sIHJlcGxhY2luZyBkZXByZWNhdGVkIHdpdGggbmV3IHJlc291cmNlcyAoWyMmIzgyMDM7OTU1OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk1NTkpKQotICAgRml4ZWQgZGphbmdvIGV4YW1wbGUgKFsjJiM4MjAzOzk1NjJdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85NTYyKSkKLSAgIEJ1bXAgS29tYnUgdG8gdjUuNS4wcmMzIChbIyYjODIwMzs5NTY0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTU2NCkpCi0gICBCdW1wIGVwaGVtIGZyb20gNC4xLjYgdG8gNC4yIChbIyYjODIwMzs5NTY1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTU2NSkpCi0gICBCdW1wIHB5dGVzdC1jZWxlcnkgdG8gdjEuMi4wIChbIyYjODIwMzs5NTY4XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTU2OCkpCi0gICBSZW1vdmUgZGVwZW5kZW5jeSBvbiBgcHljdXJsYCAoWyMmIzgyMDM7OTUyNl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk1MjYpKQotICAgU2V0IFRlc3RXb3JrQ29udHJvbGxlci4qKnRlc3QqKiAoWyMmIzgyMDM7OTU3NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk1NzQpKQotICAgRml4ZWQgYnVnIHdoZW4gcmV2b2tpbmcgYnkgc3RhbXBlZCBoZWFkZXJzIGEgc3RhbXAgdGhhdCBkb2VzIG5vdCBleGlzdCAoWyMmIzgyMDM7OTU3NV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk1NzUpKQotICAgQ2FudmFzIFN0YW1waW5nIERvYyBGaXhlcyAoWyMmIzgyMDM7OTU3OF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk1NzgpKQotICAgQnVnZml4OiBDaG9yZCB3aXRoIGEgY2hvcmQgaW4gaGVhZGVyIGRvZXNuJ3QgaW52b2tlIGVycm9yIGNhbGxiYWNrIG9uIGlubmVyIGNob3JkIGhlYWRlciBmYWlsdXJlIChkZWZhdWx0IGNvbmZpZykgKFsjJiM4MjAzOzk1ODBdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85NTgwKSkKLSAgIFByZXBhcmUgZm9yIChwcmUpIHJlbGVhc2U6IHY1LjUuMHJjNSAoWyMmIzgyMDM7OTU4Ml0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk1ODIpKQotICAgQnVtcCBnb29nbGUtY2xvdWQtZmlyZXN0b3JlIGZyb20gMi4yMC4wIHRvIDIuMjAuMSAoWyMmIzgyMDM7OTU4NF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk1ODQpKQotICAgRml4IHRlc3RzIHdpdGggQ2xpY2sgOC4yIChbIyYjODIwMzs5NTkwXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTU5MCkpCi0gICBCdW1wIGNyeXB0b2dyYXBoeSBmcm9tIDQ0LjAuMSB0byA0NC4wLjIgKFsjJiM4MjAzOzk1OTFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85NTkxKSkKLSAgIFVwZGF0ZSBlbGFzdGljc2VhcmNoIHJlcXVpcmVtZW50IGZyb20gPD04LjE3LjEgdG8gPD04LjE3LjIgKFsjJiM4MjAzOzk1OTRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85NTk0KSkKLSAgIEJ1bXAgcHl0ZXN0IGZyb20gOC4zLjQgdG8gOC4zLjUgKFsjJiM4MjAzOzk1OThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85NTk4KSkKLSAgIFJlZmFjdG9yZWQgYW5kIEVuaGFuY2VkIERlbGF5ZWREZWxpdmVyeSBib290c3RlcCAoWyMmIzgyMDM7OTU5OV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk1OTkpKQotICAgSW1wcm92ZSBkb2NzIGFib3V0IGFja3Nfb25fZmFpbHVyZV9vcl90aW1lb3V0IChbIyYjODIwMzs5NTc3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTU3NykpCi0gICBVcGRhdGUgU0VDVVJJVFkubWQgKFsjJiM4MjAzOzk2MDldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85NjA5KSkKLSAgIHJlbW92ZSBmbGFrZThwbHVzIGFzIG5vdCBuZWVkZWQgYW55bW9yZSAoWyMmIzgyMDM7OTYxMF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk2MTApKQotICAgcmVtb3ZlIFxbYmRpc3Rfd2hlZWxdIHVuaXZlcnNhbCA9IDAgIGZyb20gc2V0dXAuY2ZnIGFzIG5vdCBuZWVkZWQgKFsjJiM4MjAzOzk2MTFdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85NjExKSkKLSAgIHJlbW92ZSBpbXBvcnRsaWItbWV0YWRhdGEgYXMgbm90IG5lZWRlZCBpbiBweXRob24zLjggYW55bW9yZSAoWyMmIzgyMDM7OTYxMl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk2MTIpKQotICAgZmVhdDogZGVmaW5lIGV4Y2VwdGlvbl9zYWZlX3RvX3JldHJ5IGZvciByZWRpc2JhY2tlbmQgKFsjJiM4MjAzOzk2MTRdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85NjE0KSkKLSAgIEJ1bXAgS29tYnUgdG8gdjUuNS4wIChbIyYjODIwMzs5NjE1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTYxNSkpCi0gICBVcGRhdGUgZWxhc3RpYy10cmFuc3BvcnQgcmVxdWlyZW1lbnQgZnJvbSA8PTguMTcuMCB0byA8PTguMTcuMSAoWyMmIzgyMDM7OTYxNl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk2MTYpKQotICAgXFtkb2NzXSBmaXggZmlyc3Qtc3RlcHMgKFsjJiM4MjAzOzk2MThdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85NjE4KSkKLSAgIFJldmVydCAiSW1wcm92ZSBkb2NzIGFib3V0IGFja3Nfb25fZmFpbHVyZV9vcl90aW1lb3V0IiAoWyMmIzgyMDM7OTYwNl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk2MDYpKQotICAgSW1wcm92ZSBDSSBzdGFiaWxpdHkgYW5kIHBlcmZvcm1hbmNlIChbIyYjODIwMzs5NjI0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTYyNCkpCi0gICBJbXByb3ZlZCBleHBsYW5hdGlvbiBmb3IgRGF0YWJhc2UgdHJhbnNhY3Rpb25zIGF0IHVzZXIgZ3VpZGUgZm9yIHRhc2tzIChbIyYjODIwMzs5NjE3XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTYxNykpCi0gICB1cGRhdGUgdGVzdHMgdG8gdXNlIHB5dGhvbiAzLjggY29kZXMgb25seSAoWyMmIzgyMDM7OTYyN10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk2MjcpKQotICAgWyMmIzgyMDM7OTU5N10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk1OTcpOiBFbnN1cmUgc3VycGFzc2luZyBIYXJkIFRpbWVvdXQgbGltaXQgd2hlbiB0YXNrX2Fja3Nfb25fZmFpbHVyZV9vcl90aW1lb3V0IGlzIEZhbHNlIHJlamVjdHMgdGhlIHRhc2sgKFsjJiM4MjAzOzk2MjZdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85NjI2KSkKLSAgIExvY2sgS29tYnUgdG8gdjUuNS54ICh1c2luZyB1cmxsaWIzIGluc3RlYWQgb2YgcHljdXJsKSAoWyMmIzgyMDM7OTYzMl0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk2MzIpKQotICAgTG9jayBweXRlc3QtY2VsZXJ5IHRvIHYxLjIueCAodXNpbmcgdXJsbGliMyBpbnN0ZWFkIG9mIHB5Y3VybCkgKFsjJiM4MjAzOzk2MzNdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jZWxlcnkvY2VsZXJ5L2lzc3Vlcy85NjMzKSkKLSAgIEFkZCBDb2RlY292IFRlc3QgQW5hbHl0aWNzIChbIyYjODIwMzs5NjM1XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTYzNSkpCi0gICBCdW1wIEtvbWJ1IHRvIHY1LjUuMiAoWyMmIzgyMDM7OTY0M10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NlbGVyeS9jZWxlcnkvaXNzdWVzLzk2NDMpKQotICAgUHJlcGFyZSBmb3IgcmVsZWFzZTogdjUuNS4wIChbIyYjODIwMzs5NjQ0XShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY2VsZXJ5L2NlbGVyeS9pc3N1ZXMvOTY0NCkpCgouLiBcX3ZlcnNpb24tNS41LjByYzU6Cgo8L2RldGFpbHM+CgotLS0KCiMjIyBDb25maWd1cmF0aW9uCgrwn5OFICoqU2NoZWR1bGUqKjogQnJhbmNoIGNyZWF0aW9uIC0gQXQgYW55IHRpbWUgKG5vIHNjaGVkdWxlIGRlZmluZWQpLCBBdXRvbWVyZ2UgLSBBdCBhbnkgdGltZSAobm8gc2NoZWR1bGUgZGVmaW5lZCkuCgrwn5qmICoqQXV0b21lcmdlKio6IERpc2FibGVkIGJ5IGNvbmZpZy4gUGxlYXNlIG1lcmdlIHRoaXMgbWFudWFsbHkgb25jZSB5b3UgYXJlIHNhdGlzZmllZC4KCuKZuyAqKlJlYmFzaW5nKio6IFdoZW5ldmVyIFBSIGJlY29tZXMgY29uZmxpY3RlZCwgb3IgeW91IHRpY2sgdGhlIHJlYmFzZS9yZXRyeSBjaGVja2JveC4KCvCflJUgKipJZ25vcmUqKjogQ2xvc2UgdGhpcyBQUiBhbmQgeW91IHdvbid0IGJlIHJlbWluZGVkIGFib3V0IHRoZXNlIHVwZGF0ZXMgYWdhaW4uCgotLS0KCiAtIFsgXSA8IS0tIHJlYmFzZS1jaGVjayAtLT5JZiB5b3Ugd2FudCB0byByZWJhc2UvcmV0cnkgdGhpcyBQUiwgY2hlY2sgdGhpcyBib3gKCi0tLQoKVGhpcyBQUiB3YXMgZ2VuZXJhdGVkIGJ5IFtNZW5kIFJlbm92YXRlXShodHRwczovL21lbmQuaW8vcmVub3ZhdGUvKS4gVmlldyB0aGUgW3JlcG9zaXRvcnkgam9iIGxvZ10oaHR0cHM6Ly9kZXZlbG9wZXIubWVuZC5pby9naXRodWIvb3Npc20vcHl0aG9uLW9zaXNtKS4KPCEtLXJlbm92YXRlLWRlYnVnOmV5SmpjbVZoZEdWa1NXNVdaWElpT2lJek9TNHlNRGN1TVNJc0luVndaR0YwWldSSmJsWmxjaUk2SWpNNUxqSXdOeTR4SWl3aWRHRnlaMlYwUW5KaGJtTm9Jam9pYldGcGJpSXNJbXhoWW1Wc2N5STZXeUp5Wlc1dmRtRjBaU0pkZlE9PS0tPgo=
      patchset: 108233aeb2451749ee8160a66d94306c66660547
      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: f4b6fd9a1705fe2891122bf2563527cfe56b40d1
          untrusted/project_0/github.com/osism/python-osism:
            canonical_name: github.com/osism/python-osism
            checkout: main
            commit: 9bca48ec34c2217c2cc95d1cbf6e1bbd7e0e706e
          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: f4b6fd9a1705fe2891122bf2563527cfe56b40d1
        playbooks:
        - path: untrusted/project_0/github.com/osism/python-osism/playbooks/build.yml
          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/python-osism
        name: osism/python-osism
        short_name: python-osism
        src_dir: src/github.com/osism/python-osism
      projects:
        github.com/osism/python-osism:
          canonical_hostname: github.com
          canonical_name: github.com/osism/python-osism
          checkout: main
          checkout_description: zuul branch
          commit: 9bca48ec34c2217c2cc95d1cbf6e1bbd7e0e706e
          name: osism/python-osism
          required: false
          short_name: python-osism
          src_dir: src/github.com/osism/python-osism
      ref: refs/pull/1262/head
      resources: {}
      tenant: osism
      timeout: 1800
      voting: true
