--- yq-2.14.0.orig/debian/changelog
+++ yq-2.14.0/debian/changelog
@@ -0,0 +1,11 @@
+yq (2.14.0-1+1.1) stable; urgency=medium
+
+  * version number update by debtransform
+
+ -- debtransform <build@opensuse.org>  Mon, 27 Jun 2022 20:34:09 +0000
+
+yq (2.14.0) stable; urgency=medium
+
+  * Initial release.
+
+ -- Sebastian Wagner <sebix@sebix.at>  Mon, 27 Jun 2022 20:16:53 +0000
--- yq-2.14.0.orig/debian/control
+++ yq-2.14.0/debian/control
@@ -0,0 +1,9 @@
+Source: yq
+Maintainer: Sebastian Wagner <sebix@sebix.at
+Build-Depends: debhelper-compat (= 9), dh-python, python3-all-dev (>= 2.3.5-11), python3-yaml, python3-xmltodict, python3-setuptools, python3-toml, python3-argcomplete, python3-setuptools-scm
+
+Package: yq
+Architecture: any
+Depends: python3-yaml, python3-xmltodict, python3-setuptools, python3-toml, python3-argcomplete
+Description: Command-line YAML/XML processor
+ jq wrapper for YAML/XML documents
--- yq-2.14.0.orig/debian/rules
+++ yq-2.14.0/debian/rules
@@ -0,0 +1,13 @@
+#!/usr/bin/make -f
+
+export PYBUILD_NAME=yq
+# tests fail with ModuleNotFoundError: No module named 'test.test'
+
+export DEB_BUILD_OPTIONS=nocheck
+%:
+	dh $@ --with python3 --without python2 --buildsystem=pybuild
+
+override_dh_auto_build:
+
+override_dh_auto_install: $(BOTDOCS)
+	python3 setup.py install --root=debian/yq --prefix=/usr
--- yq-2.14.0.orig/debian/yq-2.14.0/.github/FUNDING.yml
+++ yq-2.14.0/debian/yq-2.14.0/.github/FUNDING.yml
@@ -0,0 +1 @@
+github: [kislyuk]
--- yq-2.14.0.orig/debian/yq-2.14.0/.github/workflows/pythonpackage.yml
+++ yq-2.14.0/debian/yq-2.14.0/.github/workflows/pythonpackage.yml
@@ -0,0 +1,28 @@
+name: Python package
+
+on: [push, pull_request]
+
+jobs:
+  build:
+    runs-on: ${{matrix.os}}
+    strategy:
+      max-parallel: 8
+      matrix:
+        os: [ubuntu-18.04, ubuntu-20.04, macos-10.15]
+        python-version: ["3.6", "3.7", "3.8", "3.9", "3.10"]
+
+    steps:
+    - uses: actions/checkout@v2
+    - name: Set up Python ${{ matrix.python-version }}
+      uses: actions/setup-python@v2
+      with:
+        python-version: ${{ matrix.python-version }}
+    - name: Install
+      run: |
+        [[ $(uname) == Linux ]] && sudo apt-get install --yes jq
+        [[ $(uname) == Darwin ]] && brew install jq
+        pip install coverage wheel
+        make install
+    - name: Test
+      run: |
+        make test
--- yq-2.14.0.orig/debian/yq-2.14.0/.gitignore
+++ yq-2.14.0/debian/yq-2.14.0/.gitignore
@@ -0,0 +1,33 @@
+# Reminder:
+# - A leading slash means the pattern is anchored at the root.
+# - No leading slash means the pattern matches at any depth.
+
+# Python files
+*.pyc
+__pycache__/
+.tox/
+*.egg-info/
+/build/
+/dist/
+/.eggs/
+/yq/version.py
+
+# IDE project files
+/.pydevproject
+
+# vim python-mode plugin
+/.ropeproject
+
+# IntelliJ IDEA / PyCharm project files
+/.idea
+/*.iml
+
+# JS/node/npm/web dev files
+node_modules
+npm-debug.log
+
+# OS X metadata files
+.DS_Store
+
+# Python coverage 
+.coverage
--- yq-2.14.0.orig/debian/yq-2.14.0/Changes.rst
+++ yq-2.14.0/debian/yq-2.14.0/Changes.rst
@@ -0,0 +1,240 @@
+Changes for v2.14.0 (2022-02-20)
+================================
+
+-  Support binary and set tags. Fixes #140
+
+Changes for v2.13.0 (2021-12-02)
+================================
+
+-  Armor against entity expansion attacks
+
+-  Improve YAML loading performance by using CSafeLoader where available
+
+-  Require PyYAML 5.3.1 or newer
+
+-  Test and release infrastructure improvements
+
+Changes for v2.12.2 (2021-06-13)
+================================
+
+-  Handle -n correctly
+
+Changes for v2.12.1 (2021-06-13)
+================================
+
+-  Do not close fds on child process
+
+Changes for v2.12.0 (2021-02-05)
+================================
+
+-  Add TOML support and the tomlq CLI utility to access it
+
+-  Drop Python 2.7 support
+
+Changes for v2.11.1 (2020-09-26)
+================================
+
+Parse correctly when empty string is passed as jq_filter
+
+Changes for v2.11.0 (2020-09-03)
+================================
+
+-  Better handling of jq_filter and files arguments (#102)
+
+-  Create **main**.py (#82)
+
+Changes for v2.10.1 (2020-05-11)
+================================
+
+-  Add support for xmltodict force_list definition for xq CLI (#95)
+
+-  Support explicit doc markers (#93)
+
+-  Ensure proper ordering of help messages (#90)
+
+Changes for v2.10.0 (2019-12-23)
+================================
+
+-  Add support for in-place editing (yq -yi)
+
+-  Add argcomplete integration
+
+-  Docs: Migrate from RTD to gh-pages
+
+Changes for v2.9.2 (2019-11-04)
+===============================
+
+-  Fix interrupted release
+
+Changes for v2.9.1 (2019-11-04)
+===============================
+
+-  Fix documentation build
+
+Changes for v2.9.0 (2019-11-04)
+===============================
+
+-  Add -Y/–yaml-roundtrip for preserving YAML styles and tags
+
+Changes for v2.8.1 (2019-10-28)
+===============================
+
+-  Filter out -C and separate commingled yq and jq short options
+
+Changes for v2.8.0 (2019-10-25)
+===============================
+
+-  Set default block sequence indentation to 2 spaces, –indentless for 0
+
+-  Make main body of yq callable as a library function
+
+-  Test and release infrastructure updates
+
+Changes for v2.7.2 (2019-01-09)
+===============================
+
+-  Support options introduced in jq 1.6. Fixes #46
+
+-  xq: Re-raise if exception is unrecognized
+
+Changes for v2.7.1 (2018-11-05)
+===============================
+
+-  xq: Introduce –xml-dtd and –xml-root. Fixes #37.
+
+-  TOML support is optional and experimental
+
+Changes for v2.7.0 (2018-08-04)
+===============================
+
+-  TOML support with the tq executable entry point.
+
+-  Disallow argparse abbreviated options. Fixes #38 on Python 3.5+.
+
+-  Now available in Homebrew as python-yq.
+
+Changes for v2.6.0 (2018-04-28)
+===============================
+
+-  Packaging: Replace scripts with entry-points
+
+-  Packaging: Package the license file
+
+Changes for v2.5.0 (2018-04-02)
+===============================
+
+-  Parse unrecognized tags instead of dropping them. Fixes #23
+
+Changes for v2.4.1 (2018-02-13)
+===============================
+
+-  Ignore unrecognized YAML tags instead of crashing
+
+-  Explicitly disable XML entity expansion and mention in docs
+
+-  xq -x: Raise understandable error on non-dict conversion failure
+
+Changes for v2.4.0 (2018-02-08)
+===============================
+
+-  Support XML parsing with xmltodict
+
+Changes for v2.3.7 (2018-02-07)
+===============================
+
+-  Fix for the –from-file/-f argument: Re-route jq_filter to files when
+   using –from-file. Fixes #19.
+
+Changes for v2.3.6 (2018-01-29)
+===============================
+
+-  Parse and pass multiple positional-consuming jq args
+
+Changes for v2.3.5 (2018-01-29)
+===============================
+
+-  Support jq arguments that consume subsequent positionals (such as
+   –arg k v) (#16).
+
+Changes for v2.3.4 (2017-12-26)
+===============================
+
+-  Support bare YAML dates and times. Fixes #10
+
+Changes for v2.3.3 (2017-09-30)
+===============================
+
+-  Avoid buffering all input docs in memory with no -y
+
+-  End all json.dump output with newlines. Close all input streams.
+   Fixes #8. Thanks to @bubbleattic for reporting.
+
+Changes for v2.3.2 (2017-09-25)
+===============================
+
+-  Fix test suite on Python 3
+
+Changes for v2.3.1 (2017-09-25)
+===============================
+
+-  Add support for multiple yaml files in arguments. Thanks to
+   @bubbleattic (PR #7)
+
+Changes for v2.3.0 (2017-08-27)
+===============================
+
+-  Handle multi-document streams. Fixes #6
+
+-  Report version via yq --version
+
+Changes for v2.2.0 (2017-07-07)
+===============================
+
+-  Stringify datetimes loaded from YAML. Fixes #5
+
+Changes for v2.1.2 (2017-06-27)
+===============================
+
+-  Fix ResourceWarning: unclosed file
+
+-  Internal: Make usage of loader argument consistent
+
+-  Documentation improvements
+
+Changes for v2.1.1 (2017-05-02)
+===============================
+
+-  Fix release script. Release is identical to v2.1.0.
+
+Changes for v2.1.0 (2017-05-02)
+===============================
+
+-  yq now supports emitting YAML (round-trip YAML support) using "yq
+   -y". Fixes #2.
+
+-  Key order is now preserved in mappings/objects/dictionaries.
+
+-  Passing input files by filename as an argument is now supported (in
+   addition to providing data on standard input).
+
+Changes for v2.0.2 (2017-01-16)
+===============================
+
+-  Test and documentation improvements
+
+Changes for v2.0.1 (2017-01-14)
+===============================
+
+-  Fix description in setup.py
+
+Changes for v2.0.0 (2017-01-14)
+===============================
+
+-  Begin 2.0.0 release series. This package's release series available
+   on PyPI begins with version 2.0.0. Versions of ``yq`` prior to 2.0.0
+   are distributed by https://github.com/abesto/yq and are not related
+   to this package. No guarantees of compatibility are made between
+   abesto/yq and kislyuk/yq. This package follows the
+   ``Semantic   Versioning 2.0.0 <http://semver.org/>``\ \_ standard. To
+   ensure proper operation, declare dependency version ranges according
+   to SemVer. See the Readme for more information.
--- yq-2.14.0.orig/debian/yq-2.14.0/LICENSE
+++ yq-2.14.0/debian/yq-2.14.0/LICENSE
@@ -0,0 +1,191 @@
+Apache License
+Version 2.0, January 2004
+http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and
+distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright
+owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities
+that control, are controlled by, or are under common control with that entity.
+For the purposes of this definition, "control" means (i) the power, direct or
+indirect, to cause the direction or management of such entity, whether by
+contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
+outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising
+permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications, including
+but not limited to software source code, documentation source, and configuration
+files.
+
+"Object" form shall mean any form resulting from mechanical transformation or
+translation of a Source form, including but not limited to compiled object code,
+generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made
+available under the License, as indicated by a copyright notice that is included
+in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that
+is based on (or derived from) the Work and for which the editorial revisions,
+annotations, elaborations, or other modifications represent, as a whole, an
+original work of authorship. For the purposes of this License, Derivative Works
+shall not include works that remain separable from, or merely link (or bind by
+name) to the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original version
+of the Work and any modifications or additions to that Work or Derivative Works
+thereof, that is intentionally submitted to Licensor for inclusion in the Work
+by the copyright owner or by an individual or Legal Entity authorized to submit
+on behalf of the copyright owner. For the purposes of this definition,
+"submitted" means any form of electronic, verbal, or written communication sent
+to the Licensor or its representatives, including but not limited to
+communication on electronic mailing lists, source code control systems, and
+issue tracking systems that are managed by, or on behalf of, the Licensor for
+the purpose of discussing and improving the Work, but excluding communication
+that is conspicuously marked or otherwise designated in writing by the copyright
+owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
+of whom a Contribution has been received by Licensor and subsequently
+incorporated within the Work.
+
+2. Grant of Copyright License.
+
+Subject to the terms and conditions of this License, each Contributor hereby
+grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
+irrevocable copyright license to reproduce, prepare Derivative Works of,
+publicly display, publicly perform, sublicense, and distribute the Work and such
+Derivative Works in Source or Object form.
+
+3. Grant of Patent License.
+
+Subject to the terms and conditions of this License, each Contributor hereby
+grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
+irrevocable (except as stated in this section) patent license to make, have
+made, use, offer to sell, sell, import, and otherwise transfer the Work, where
+such license applies only to those patent claims licensable by such Contributor
+that are necessarily infringed by their Contribution(s) alone or by combination
+of their Contribution(s) with the Work to which such Contribution(s) was
+submitted. If You institute patent litigation against any entity (including a
+cross-claim or counterclaim in a lawsuit) alleging that the Work or a
+Contribution incorporated within the Work constitutes direct or contributory
+patent infringement, then any patent licenses granted to You under this License
+for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution.
+
+You may reproduce and distribute copies of the Work or Derivative Works thereof
+in any medium, with or without modifications, and in Source or Object form,
+provided that You meet the following conditions:
+
+You must give any other recipients of the Work or Derivative Works a copy of
+this License; and
+You must cause any modified files to carry prominent notices stating that You
+changed the files; and
+You must retain, in the Source form of any Derivative Works that You distribute,
+all copyright, patent, trademark, and attribution notices from the Source form
+of the Work, excluding those notices that do not pertain to any part of the
+Derivative Works; and
+If the Work includes a "NOTICE" text file as part of its distribution, then any
+Derivative Works that You distribute must include a readable copy of the
+attribution notices contained within such NOTICE file, excluding those notices
+that do not pertain to any part of the Derivative Works, in at least one of the
+following places: within a NOTICE text file distributed as part of the
+Derivative Works; within the Source form or documentation, if provided along
+with the Derivative Works; or, within a display generated by the Derivative
+Works, if and wherever such third-party notices normally appear. The contents of
+the NOTICE file are for informational purposes only and do not modify the
+License. You may add Your own attribution notices within Derivative Works that
+You distribute, alongside or as an addendum to the NOTICE text from the Work,
+provided that such additional attribution notices cannot be construed as
+modifying the License.
+You may add Your own copyright statement to Your modifications and may provide
+additional or different license terms and conditions for use, reproduction, or
+distribution of Your modifications, or for any such Derivative Works as a whole,
+provided Your use, reproduction, and distribution of the Work otherwise complies
+with the conditions stated in this License.
+
+5. Submission of Contributions.
+
+Unless You explicitly state otherwise, any Contribution intentionally submitted
+for inclusion in the Work by You to the Licensor shall be under the terms and
+conditions of this License, without any additional terms or conditions.
+Notwithstanding the above, nothing herein shall supersede or modify the terms of
+any separate license agreement you may have executed with Licensor regarding
+such Contributions.
+
+6. Trademarks.
+
+This License does not grant permission to use the trade names, trademarks,
+service marks, or product names of the Licensor, except as required for
+reasonable and customary use in describing the origin of the Work and
+reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty.
+
+Unless required by applicable law or agreed to in writing, Licensor provides the
+Work (and each Contributor provides its Contributions) on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
+including, without limitation, any warranties or conditions of TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
+solely responsible for determining the appropriateness of using or
+redistributing the Work and assume any risks associated with Your exercise of
+permissions under this License.
+
+8. Limitation of Liability.
+
+In no event and under no legal theory, whether in tort (including negligence),
+contract, or otherwise, unless required by applicable law (such as deliberate
+and grossly negligent acts) or agreed to in writing, shall any Contributor be
+liable to You for damages, including any direct, indirect, special, incidental,
+or consequential damages of any character arising as a result of this License or
+out of the use or inability to use the Work (including but not limited to
+damages for loss of goodwill, work stoppage, computer failure or malfunction, or
+any and all other commercial damages or losses), even if such Contributor has
+been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability.
+
+While redistributing the Work or Derivative Works thereof, You may choose to
+offer, and charge a fee for, acceptance of support, warranty, indemnity, or
+other liability obligations and/or rights consistent with this License. However,
+in accepting such obligations, You may act only on Your own behalf and on Your
+sole responsibility, not on behalf of any other Contributor, and only if You
+agree to indemnify, defend, and hold each Contributor harmless for any liability
+incurred by, or claims asserted against, such Contributor by reason of your
+accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work
+
+To apply the Apache License to your work, attach the following boilerplate
+notice, with the fields enclosed by brackets "[]" replaced with your own
+identifying information. (Don't include the brackets!) The text should be
+enclosed in the appropriate comment syntax for the file format. We also
+recommend that a file or class name and description of purpose be included on
+the same "printed page" as the copyright notice for easier identification within
+third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
--- yq-2.14.0.orig/debian/yq-2.14.0/MANIFEST.in
+++ yq-2.14.0/debian/yq-2.14.0/MANIFEST.in
@@ -0,0 +1,2 @@
+include LICENSE
+recursive-include test *
--- yq-2.14.0.orig/debian/yq-2.14.0/Makefile
+++ yq-2.14.0/debian/yq-2.14.0/Makefile
@@ -0,0 +1,24 @@
+test_deps:
+	pip install .[tests]
+
+lint: test_deps
+	flake8 $$(python setup.py --name)
+
+test: test_deps lint
+	coverage run --source=$$(python setup.py --name) ./test/test.py -v
+
+docs:
+	sphinx-build docs docs/html
+
+install: clean
+	pip install build
+	python -m build
+	pip install --upgrade dist/*.whl
+
+clean:
+	-rm -rf build dist
+	-rm -rf *.egg-info
+
+.PHONY: lint test test_deps docs install clean
+
+include common.mk
--- yq-2.14.0.orig/debian/yq-2.14.0/PKG-INFO
+++ yq-2.14.0/debian/yq-2.14.0/PKG-INFO
@@ -0,0 +1,174 @@
+Metadata-Version: 2.1
+Name: yq
+Version: 2.14.0
+Summary: Command-line YAML/XML processor - jq wrapper for YAML/XML documents
+Home-page: https://github.com/kislyuk/yq
+Author: Andrey Kislyuk
+Author-email: kislyuk@gmail.com
+License: Apache Software License
+Platform: UNKNOWN
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: Apache Software License
+Classifier: Operating System :: MacOS :: MacOS X
+Classifier: Operating System :: POSIX
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
+Classifier: Topic :: Software Development :: Libraries :: Python Modules
+Requires-Python: >=3.6
+Provides-Extra: tests
+License-File: LICENSE
+
+yq: Command-line YAML/XML/TOML processor - jq wrapper for YAML, XML, TOML documents
+===================================================================================
+
+Installation
+------------
+::
+
+    pip3 install yq
+
+Before using ``yq``, you also have to install its dependency, ``jq``. See the `jq installation instructions
+<https://stedolan.github.io/jq/download/>`_ for details and directions specific to your platform.
+
+On macOS, ``yq`` is also available on `Homebrew <https://brew.sh/>`_: use ``brew install python-yq``.
+
+Synopsis
+--------
+
+``yq`` takes YAML input, converts it to JSON, and pipes it to `jq <https://stedolan.github.io/jq/>`_::
+
+    cat input.yml | yq .foo.bar
+
+Like in ``jq``, you can also specify input filename(s) as arguments::
+
+    yq .foo.bar input.yml
+
+By default, no conversion of ``jq`` output is done. Use the ``--yaml-output``/``-y`` option to convert it back into YAML::
+
+    cat input.yml | yq -y .foo.bar
+
+Mapping key order is preserved. By default, custom `YAML tags <http://www.yaml.org/spec/1.2/spec.html#id2764295>`_ and
+`styles <https://yaml.org/spec/current.html#id2509255>`_ in the input are ignored. Use the ``--yaml-roundtrip``/``-Y``
+option to preserve YAML tags and styles by representing them as extra items in their enclosing mappings and sequences
+while in JSON::
+
+    yq -Y .foo.bar input.yml
+
+Use the ``--width``/``-w`` option to pass the line wrap width for string literals. With ``-y/-Y``, files can be edited
+in place like with ``sed -i``: ``yq -yi .foo=1 *.yml``. All other command line arguments are forwarded to ``jq``. ``yq``
+forwards the exit code ``jq`` produced, unless there was an error in YAML parsing, in which case the exit code is 1.
+See the `jq manual <https://stedolan.github.io/jq/manual/>`_ for more details on ``jq`` features and options.
+
+Because YAML treats JSON as a dialect of YAML, you can use yq to convert JSON to YAML: ``yq -y . < in.json > out.yml``.
+
+Preserving tags and styles using the ``-Y`` (``--yaml-roundtrip``) option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The ``-Y`` option helps preserve custom `string styles <https://yaml-multiline.info/>`_ and
+`tags <https://camel.readthedocs.io/en/latest/yamlref.html#tags>`_ in your document. For example, consider the following
+document (an `AWS CloudFormation <https://aws.amazon.com/cloudformation/>`_ template fragment)::
+
+    Resources:
+      ElasticLoadBalancer:
+        Type: 'AWS::ElasticLoadBalancing::LoadBalancer'
+        Properties:
+          AvailabilityZones: !GetAZs ''
+          Instances:
+            - !Ref Ec2Instance1
+            - !Ref Ec2Instance2
+          Description: >-
+            Load balancer for Big Important Service.
+
+            Good thing it's managed by this template.
+
+Passing this document through ``yq -y .Resources.ElasticLoadBalancer`` will drop custom tags, such as ``!Ref``,
+and styles, such as the `folded <https://yaml-multiline.info/>`_ style of the ``Description`` field::
+
+    Type: AWS::ElasticLoadBalancing::LoadBalancer
+    Properties:
+      AvailabilityZones: ''
+      Instances:
+        - Ec2Instance1
+        - Ec2Instance2
+      Description: 'Load balancer for Big Important Service.
+
+        Good thing it''s managed by this template.'
+
+By contrast, passing it through ``yq -Y .Resources.ElasticLoadBalancer`` will preserve tags and styles::
+
+    Type: 'AWS::ElasticLoadBalancing::LoadBalancer'
+    Properties:
+      AvailabilityZones: !GetAZs ''
+      Instances:
+        - !Ref 'Ec2Instance1'
+        - !Ref 'Ec2Instance2'
+      Description: >-
+        Load balancer for Big Important Service.
+
+        Good thing it's managed by this template.
+
+To accomplish this in ``-Y`` mode, yq carries extra metadata (mapping pairs and sequence values) in the JSON
+representation of your document for any custom tags or styles that it finds. When converting the JSON back into YAML, it
+parses this metadata, re-applies the tags and styles, and discards the extra pairs and values.
+
+.. warning ::
+
+ The ``-Y`` option is incompatible with jq filters that do not expect the extra information injected into the document
+ to preserve the YAML formatting. For example, a jq filter that counts entries in the Instances array will come up with
+ 4 entries instead of 2. A filter that expects all array entries to be mappings may break due to the presence of string
+ metadata keys. Check your jq filter for compatibility/semantic validity when using the ``-Y`` option.
+
+XML support
+-----------
+``yq`` also supports XML. The ``yq`` package installs an executable, ``xq``, which
+`transcodes XML to JSON <https://www.xml.com/pub/a/2006/05/31/converting-between-xml-and-json.html>`_ using
+`xmltodict <https://github.com/martinblech/xmltodict>`_ and pipes it to ``jq``. Roundtrip transcoding is available with
+the ``xq --xml-output``/``xq -x`` option. Multiple XML documents can be passed in separate files/streams as
+``xq a.xml b.xml``. Entity expansion and DTD resolution is disabled to avoid XML parsing vulnerabilities.
+
+TOML support
+------------
+``yq`` supports `TOML <https://toml.io/>`_ as well. The ``yq`` package installs an executable, ``tomlq``, which uses the
+`toml library <https://github.com/uiri/toml>`_ to transcode TOML to JSON, then pipes it to ``jq``. Roundtrip transcoding
+is available with the ``tomlq --toml-output``/``tomlq -t`` option.
+
+.. admonition:: Compatibility note
+
+ This package's release series available on PyPI begins with version 2.0.0. Versions of ``yq`` prior to 2.0.0 are
+ distributed by https://github.com/abesto/yq and are not related to this package. No guarantees of compatibility are
+ made between abesto/yq and kislyuk/yq. This package follows the `Semantic Versioning 2.0.0 <http://semver.org/>`_
+ standard. To ensure proper operation, declare dependency version ranges according to SemVer.
+
+Authors
+-------
+* Andrey Kislyuk
+
+Links
+-----
+* `Project home page (GitHub) <https://github.com/kislyuk/yq>`_
+* `Documentation <https://kislyuk.github.io/yq/>`_
+* `Package distribution (PyPI) <https://pypi.python.org/pypi/yq>`_
+* `Change log <https://github.com/kislyuk/yq/blob/master/Changes.rst>`_
+* `jq <https://stedolan.github.io/jq/>`_ - the command-line JSON processor utility powering ``yq``
+
+Bugs
+~~~~
+Please report bugs, issues, feature requests, etc. on `GitHub <https://github.com/kislyuk/yq/issues>`_.
+
+License
+-------
+Licensed under the terms of the `Apache License, Version 2.0 <http://www.apache.org/licenses/LICENSE-2.0>`_.
+
+.. image:: https://github.com/kislyuk/yq/workflows/Python%20package/badge.svg
+        :target: https://github.com/kislyuk/yq/actions
+.. image:: https://codecov.io/github/kislyuk/yq/coverage.svg?branch=master
+        :target: https://codecov.io/github/kislyuk/yq?branch=master
+.. image:: https://img.shields.io/pypi/v/yq.svg
+        :target: https://pypi.python.org/pypi/yq
+.. image:: https://img.shields.io/pypi/l/yq.svg
+        :target: https://pypi.python.org/pypi/yq
--- yq-2.14.0.orig/debian/yq-2.14.0/README.rst
+++ yq-2.14.0/debian/yq-2.14.0/README.rst
@@ -0,0 +1,149 @@
+yq: Command-line YAML/XML/TOML processor - jq wrapper for YAML, XML, TOML documents
+===================================================================================
+
+Installation
+------------
+::
+
+    pip3 install yq
+
+Before using ``yq``, you also have to install its dependency, ``jq``. See the `jq installation instructions
+<https://stedolan.github.io/jq/download/>`_ for details and directions specific to your platform.
+
+On macOS, ``yq`` is also available on `Homebrew <https://brew.sh/>`_: use ``brew install python-yq``.
+
+Synopsis
+--------
+
+``yq`` takes YAML input, converts it to JSON, and pipes it to `jq <https://stedolan.github.io/jq/>`_::
+
+    cat input.yml | yq .foo.bar
+
+Like in ``jq``, you can also specify input filename(s) as arguments::
+
+    yq .foo.bar input.yml
+
+By default, no conversion of ``jq`` output is done. Use the ``--yaml-output``/``-y`` option to convert it back into YAML::
+
+    cat input.yml | yq -y .foo.bar
+
+Mapping key order is preserved. By default, custom `YAML tags <http://www.yaml.org/spec/1.2/spec.html#id2764295>`_ and
+`styles <https://yaml.org/spec/current.html#id2509255>`_ in the input are ignored. Use the ``--yaml-roundtrip``/``-Y``
+option to preserve YAML tags and styles by representing them as extra items in their enclosing mappings and sequences
+while in JSON::
+
+    yq -Y .foo.bar input.yml
+
+Use the ``--width``/``-w`` option to pass the line wrap width for string literals. With ``-y/-Y``, files can be edited
+in place like with ``sed -i``: ``yq -yi .foo=1 *.yml``. All other command line arguments are forwarded to ``jq``. ``yq``
+forwards the exit code ``jq`` produced, unless there was an error in YAML parsing, in which case the exit code is 1.
+See the `jq manual <https://stedolan.github.io/jq/manual/>`_ for more details on ``jq`` features and options.
+
+Because YAML treats JSON as a dialect of YAML, you can use yq to convert JSON to YAML: ``yq -y . < in.json > out.yml``.
+
+Preserving tags and styles using the ``-Y`` (``--yaml-roundtrip``) option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The ``-Y`` option helps preserve custom `string styles <https://yaml-multiline.info/>`_ and
+`tags <https://camel.readthedocs.io/en/latest/yamlref.html#tags>`_ in your document. For example, consider the following
+document (an `AWS CloudFormation <https://aws.amazon.com/cloudformation/>`_ template fragment)::
+
+    Resources:
+      ElasticLoadBalancer:
+        Type: 'AWS::ElasticLoadBalancing::LoadBalancer'
+        Properties:
+          AvailabilityZones: !GetAZs ''
+          Instances:
+            - !Ref Ec2Instance1
+            - !Ref Ec2Instance2
+          Description: >-
+            Load balancer for Big Important Service.
+
+            Good thing it's managed by this template.
+
+Passing this document through ``yq -y .Resources.ElasticLoadBalancer`` will drop custom tags, such as ``!Ref``,
+and styles, such as the `folded <https://yaml-multiline.info/>`_ style of the ``Description`` field::
+
+    Type: AWS::ElasticLoadBalancing::LoadBalancer
+    Properties:
+      AvailabilityZones: ''
+      Instances:
+        - Ec2Instance1
+        - Ec2Instance2
+      Description: 'Load balancer for Big Important Service.
+
+        Good thing it''s managed by this template.'
+
+By contrast, passing it through ``yq -Y .Resources.ElasticLoadBalancer`` will preserve tags and styles::
+
+    Type: 'AWS::ElasticLoadBalancing::LoadBalancer'
+    Properties:
+      AvailabilityZones: !GetAZs ''
+      Instances:
+        - !Ref 'Ec2Instance1'
+        - !Ref 'Ec2Instance2'
+      Description: >-
+        Load balancer for Big Important Service.
+
+        Good thing it's managed by this template.
+
+To accomplish this in ``-Y`` mode, yq carries extra metadata (mapping pairs and sequence values) in the JSON
+representation of your document for any custom tags or styles that it finds. When converting the JSON back into YAML, it
+parses this metadata, re-applies the tags and styles, and discards the extra pairs and values.
+
+.. warning ::
+
+ The ``-Y`` option is incompatible with jq filters that do not expect the extra information injected into the document
+ to preserve the YAML formatting. For example, a jq filter that counts entries in the Instances array will come up with
+ 4 entries instead of 2. A filter that expects all array entries to be mappings may break due to the presence of string
+ metadata keys. Check your jq filter for compatibility/semantic validity when using the ``-Y`` option.
+
+XML support
+-----------
+``yq`` also supports XML. The ``yq`` package installs an executable, ``xq``, which
+`transcodes XML to JSON <https://www.xml.com/pub/a/2006/05/31/converting-between-xml-and-json.html>`_ using
+`xmltodict <https://github.com/martinblech/xmltodict>`_ and pipes it to ``jq``. Roundtrip transcoding is available with
+the ``xq --xml-output``/``xq -x`` option. Multiple XML documents can be passed in separate files/streams as
+``xq a.xml b.xml``. Entity expansion and DTD resolution is disabled to avoid XML parsing vulnerabilities.
+
+TOML support
+------------
+``yq`` supports `TOML <https://toml.io/>`_ as well. The ``yq`` package installs an executable, ``tomlq``, which uses the
+`toml library <https://github.com/uiri/toml>`_ to transcode TOML to JSON, then pipes it to ``jq``. Roundtrip transcoding
+is available with the ``tomlq --toml-output``/``tomlq -t`` option.
+
+.. admonition:: Compatibility note
+
+ This package's release series available on PyPI begins with version 2.0.0. Versions of ``yq`` prior to 2.0.0 are
+ distributed by https://github.com/abesto/yq and are not related to this package. No guarantees of compatibility are
+ made between abesto/yq and kislyuk/yq. This package follows the `Semantic Versioning 2.0.0 <http://semver.org/>`_
+ standard. To ensure proper operation, declare dependency version ranges according to SemVer.
+
+Authors
+-------
+* Andrey Kislyuk
+
+Links
+-----
+* `Project home page (GitHub) <https://github.com/kislyuk/yq>`_
+* `Documentation <https://kislyuk.github.io/yq/>`_
+* `Package distribution (PyPI) <https://pypi.python.org/pypi/yq>`_
+* `Change log <https://github.com/kislyuk/yq/blob/master/Changes.rst>`_
+* `jq <https://stedolan.github.io/jq/>`_ - the command-line JSON processor utility powering ``yq``
+
+Bugs
+~~~~
+Please report bugs, issues, feature requests, etc. on `GitHub <https://github.com/kislyuk/yq/issues>`_.
+
+License
+-------
+Licensed under the terms of the `Apache License, Version 2.0 <http://www.apache.org/licenses/LICENSE-2.0>`_.
+
+.. image:: https://github.com/kislyuk/yq/workflows/Python%20package/badge.svg
+        :target: https://github.com/kislyuk/yq/actions
+.. image:: https://codecov.io/github/kislyuk/yq/coverage.svg?branch=master
+        :target: https://codecov.io/github/kislyuk/yq?branch=master
+.. image:: https://img.shields.io/pypi/v/yq.svg
+        :target: https://pypi.python.org/pypi/yq
+.. image:: https://img.shields.io/pypi/l/yq.svg
+        :target: https://pypi.python.org/pypi/yq
--- yq-2.14.0.orig/debian/yq-2.14.0/common.mk
+++ yq-2.14.0/debian/yq-2.14.0/common.mk
@@ -0,0 +1,63 @@
+SHELL=/bin/bash -eo pipefail
+
+release-major:
+	$(eval export TAG=$(shell git describe --tags --match 'v*.*.*' | perl -ne '/^v(\d+)\.(\d+)\.(\d+)/; print "v@{[$$1+1]}.0.0"'))
+	$(MAKE) release
+
+release-minor:
+	$(eval export TAG=$(shell git describe --tags --match 'v*.*.*' | perl -ne '/^v(\d+)\.(\d+)\.(\d+)/; print "v$$1.@{[$$2+1]}.0"'))
+	$(MAKE) release
+
+release-patch:
+	$(eval export TAG=$(shell git describe --tags --match 'v*.*.*' | perl -ne '/^v(\d+)\.(\d+)\.(\d+)/; print "v$$1.$$2.@{[$$3+1]}"'))
+	$(MAKE) release
+
+release:
+	@if ! git diff --cached --exit-code; then echo "Commit staged files before proceeding"; exit 1; fi
+	@if [[ -z $$TAG ]]; then echo "Use release-{major,minor,patch}"; exit 1; fi
+	@if ! type -P pandoc; then echo "Please install pandoc"; exit 1; fi
+	@if ! type -P sponge; then echo "Please install moreutils"; exit 1; fi
+	@if ! type -P http; then echo "Please install httpie"; exit 1; fi
+	@if ! type -P twine; then echo "Please install twine"; exit 1; fi
+	$(eval REMOTE=$(shell git remote get-url origin | perl -ne '/([^\/\:]+\/[^\/\:]+?)(\.git)?$$/; print $$1'))
+	$(eval GIT_USER=$(shell git config --get user.email))
+	$(eval GH_AUTH=$(shell if grep -q '@github.com' ~/.git-credentials; then echo $$(grep '@github.com' ~/.git-credentials | python3 -c 'import sys, urllib.parse as p; print(p.urlparse(sys.stdin.read()).netloc.split("@")[0])'); else echo $(GIT_USER); fi))
+	$(eval RELEASES_API=https://api.github.com/repos/${REMOTE}/releases)
+	$(eval UPLOADS_API=https://uploads.github.com/repos/${REMOTE}/releases)
+	git pull
+	git clean -x --force $$(python setup.py --name)
+	sed -i -e "s/version=\([\'\"]\)[0-9]*\.[0-9]*\.[0-9]*/version=\1$${TAG:1}/" setup.py
+	git add setup.py
+	TAG_MSG=$$(mktemp); \
+	    echo "# Changes for ${TAG} ($$(date +%Y-%m-%d))" > $$TAG_MSG; \
+	    git log --pretty=format:%s $$(git describe --abbrev=0)..HEAD >> $$TAG_MSG; \
+	    $${EDITOR:-emacs} $$TAG_MSG; \
+	    if [[ -f Changes.md ]]; then cat $$TAG_MSG <(echo) Changes.md | sponge Changes.md; git add Changes.md; fi; \
+	    if [[ -f Changes.rst ]]; then cat <(pandoc --from markdown --to rst $$TAG_MSG) <(echo) Changes.rst | sponge Changes.rst; git add Changes.rst; fi; \
+	    yq --help > docs/cli-doc.txt; git add docs/cli-doc.txt; \
+	    git commit -m ${TAG}; \
+	    git tag --sign --annotate --file $$TAG_MSG ${TAG}
+	git push --follow-tags
+	http --check-status --auth ${GH_AUTH} ${RELEASES_API} tag_name=${TAG} name=${TAG} \
+	    body="$$(git tag --list ${TAG} -n99 | perl -pe 's/^\S+\s*// if $$. == 1' | sed 's/^\s\s\s\s//')"
+	$(MAKE) install
+	http --check-status --auth ${GH_AUTH} POST ${UPLOADS_API}/$$(http --auth ${GH_AUTH} ${RELEASES_API}/latest | jq .id)/assets \
+	    name==$$(basename dist/*.whl) label=="Python Wheel" < dist/*.whl
+	$(MAKE) release-pypi
+	$(MAKE) release-docs
+
+release-pypi:
+	python -m build
+	twine upload dist/*.tar.gz dist/*.whl --sign --verbose
+
+release-docs:
+	$(MAKE) docs
+	-git branch -D gh-pages
+	git checkout -B gh-pages-stage
+	touch docs/html/.nojekyll
+	git add --force docs/html
+	git commit -m "Docs for ${TAG}"
+	git push --force origin $$(git subtree split --prefix docs/html --branch gh-pages):refs/heads/gh-pages
+	git checkout -
+
+.PHONY: release
--- yq-2.14.0.orig/debian/yq-2.14.0/docs/changelog.rst
+++ yq-2.14.0/debian/yq-2.14.0/docs/changelog.rst
@@ -0,0 +1,3 @@
+Release Notes
+=============
+.. include:: ../Changes.rst
--- yq-2.14.0.orig/debian/yq-2.14.0/docs/cli-doc.txt
+++ yq-2.14.0/debian/yq-2.14.0/docs/cli-doc.txt
@@ -0,0 +1,72 @@
+usage: yq [options] <jq filter> [input file...]
+          [jq_filter] [files ...]
+
+yq: Command-line YAML processor - jq wrapper for YAML documents
+
+yq transcodes YAML documents to JSON and passes them to jq.
+See https://github.com/kislyuk/yq for more information.
+
+positional arguments:
+  jq_filter
+  files
+
+optional arguments:
+  -h, --help            show this help message and exit
+  --yaml-output, --yml-output, -y
+                        Transcode jq JSON output back into YAML and emit it
+  --yaml-roundtrip, --yml-roundtrip, -Y
+                        Transcode jq JSON output back into YAML and emit it. Preserve YAML tags and styles by representing them as extra items in their enclosing mappings and sequences while in JSON. This option is incompatible with jq filters that do not expect these extra items.
+  --width WIDTH, -w WIDTH
+                        When using --yaml-output, specify string wrap width
+  --indentless-lists, --indentless
+                        When using --yaml-output, indent block style lists (sequences) with 0 spaces instead of 2
+  --in-place, -i        Edit files in place (no backup - use caution)
+  --version             show program's version number and exit
+
+jq - commandline JSON processor [version 1.6]
+
+Usage:	jq [options] <jq filter> [file...]
+	jq [options] --args <jq filter> [strings...]
+	jq [options] --jsonargs <jq filter> [JSON_TEXTS...]
+
+jq is a tool for processing JSON inputs, applying the given filter to
+its JSON text inputs and producing the filter's results as JSON on
+standard output.
+
+The simplest filter is ., which copies jq's input to its output
+unmodified (except for formatting, but note that IEEE754 is used
+for number representation internally, with all that that implies).
+
+For more advanced filters see the jq(1) manpage ("man jq")
+and/or https://stedolan.github.io/jq
+
+Example:
+
+	$ echo '{"foo": 0}' | jq .
+	{
+		"foo": 0
+	}
+
+Some of the options include:
+  -c               compact instead of pretty-printed output;
+  -n               use `null` as the single input value;
+  -e               set the exit status code based on the output;
+  -s               read (slurp) all inputs into an array; apply filter to it;
+  -r               output raw strings, not JSON texts;
+  -R               read raw strings, not JSON texts;
+  -C               colorize JSON;
+  -M               monochrome (don't colorize JSON);
+  -S               sort keys of objects on output;
+  --tab            use tabs for indentation;
+  --arg a v        set variable $a to value <v>;
+  --argjson a v    set variable $a to JSON value <v>;
+  --slurpfile a f  set variable $a to an array of JSON texts read from <f>;
+  --rawfile a f    set variable $a to a string consisting of the contents of <f>;
+  --args           remaining arguments are string arguments, not files;
+  --jsonargs       remaining arguments are JSON arguments, not files;
+  --               terminates argument processing;
+
+Named arguments are also available as $ARGS.named[], while
+positional arguments are available as $ARGS.positional[].
+
+See the manpage for more options.
--- yq-2.14.0.orig/debian/yq-2.14.0/docs/conf.py
+++ yq-2.14.0/debian/yq-2.14.0/docs/conf.py
@@ -0,0 +1,33 @@
+import os
+
+project = "yq"
+copyright = "Andrey Kislyuk"
+author = "Andrey Kislyuk"
+version = ""
+release = ""
+language = None
+master_doc = "index"
+extensions = ["sphinx.ext.autodoc", "sphinx.ext.viewcode"]
+source_suffix = [".rst", ".md"]
+exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
+pygments_style = "sphinx"
+
+if "readthedocs.org" in os.getcwd().split("/"):
+    with open("index.rst", "w") as fh:
+        fh.write("Documentation for this project has moved to https://kislyuk.github.io/" + project)
+else:
+    import guzzle_sphinx_theme
+    html_theme_path = guzzle_sphinx_theme.html_theme_path()
+    html_theme = "guzzle_sphinx_theme"
+    html_theme_options = {
+        "project_nav_name": project,
+        "projectlink": "https://github.com/kislyuk/" + project,
+    }
+    html_sidebars = {
+        "**": [
+            "logo-text.html",
+            # "globaltoc.html",
+            "localtoc.html",
+            "searchbox.html"
+        ]
+    }
--- yq-2.14.0.orig/debian/yq-2.14.0/docs/index.rst
+++ yq-2.14.0/debian/yq-2.14.0/docs/index.rst
@@ -0,0 +1,14 @@
+.. include:: ../README.rst
+
+CLI usage
+=========
+
+.. literalinclude:: cli-doc.txt
+
+Change log
+==========
+
+.. toctree::
+   :maxdepth: 5
+
+   changelog
--- yq-2.14.0.orig/debian/yq-2.14.0/setup.cfg
+++ yq-2.14.0/debian/yq-2.14.0/setup.cfg
@@ -0,0 +1,10 @@
+[metadata]
+license_file = LICENSE
+
+[flake8]
+max-line-length = 120
+ignore = E302, E305, E401
+
+[egg_info]
+tag_build = 
+tag_date = 0
--- yq-2.14.0.orig/debian/yq-2.14.0/setup.py
+++ yq-2.14.0/debian/yq-2.14.0/setup.py
@@ -0,0 +1,56 @@
+#!/usr/bin/env python
+
+from setuptools import setup, find_packages
+
+setup(
+    name="yq",
+    version="2.14.0",
+    url="https://github.com/kislyuk/yq",
+    license="Apache Software License",
+    author="Andrey Kislyuk",
+    author_email="kislyuk@gmail.com",
+    description="Command-line YAML/XML processor - jq wrapper for YAML/XML documents",
+    long_description=open("README.rst").read(),
+    python_requires=">=3.6",
+    use_scm_version={
+        "write_to": "yq/version.py",
+    },
+    setup_requires=['setuptools_scm >= 3.4.3'],
+    install_requires=[
+        "PyYAML >= 5.3.1",
+        "xmltodict >= 0.11.0",
+        "toml >= 0.10.0",
+        "argcomplete >= 1.8.1"
+    ],
+    extras_require={
+        "tests": [
+            "coverage",
+            "flake8",
+            "wheel"
+        ]
+    },
+    packages=find_packages(exclude=["test"]),
+    include_package_data=True,
+    entry_points={
+        'console_scripts': [
+            'yq=yq:cli',
+            'xq=yq:xq_cli',
+            'tomlq=yq:tq_cli'
+        ],
+    },
+    test_suite="test",
+    classifiers=[
+        "Intended Audience :: Developers",
+        "License :: OSI Approved :: Apache Software License",
+        "Operating System :: MacOS :: MacOS X",
+        "Operating System :: POSIX",
+        "Programming Language :: Python",
+        "Programming Language :: Python :: 3",
+        "Programming Language :: Python :: 3.6",
+        "Programming Language :: Python :: 3.7",
+        "Programming Language :: Python :: 3.8",
+        "Programming Language :: Python :: 3.9",
+        "Programming Language :: Python :: 3.10",
+        "Topic :: Software Development :: Libraries :: Python Modules"
+    ]
+)
--- yq-2.14.0.orig/debian/yq-2.14.0/test/cfn.yml
+++ yq-2.14.0/debian/yq-2.14.0/test/cfn.yml
@@ -0,0 +1,92 @@
+AWSTemplateFormatVersion: '2010-09-09'
+Metadata:
+  License: Apache-2.0
+Description: 'AWS CloudFormation Sample Template S3_Website_With_CloudFront_Distribution:
+  Sample template showing how to create a website with a custom DNS name, hosted on
+  Amazon S3 and served via Amazone CloudFront. It assumes you already have a Hosted
+  Zone registered with Amazon Route 53. **WARNING** This template creates an Amazon
+  Route 53 DNS record, an S3 bucket and a CloudFront distribution. You will be billed
+  for the AWS resources used if you create a stack from this template.'
+Parameters:
+  HostedZone:
+    Type: String
+    Description: The DNS name of an existing Amazon Route 53 hosted zone
+    AllowedPattern: (?!-)[a-zA-Z0-9-.]{1,63}(?<!-)
+    ConstraintDescription: must be a valid DNS zone name.
+Mappings:
+  Region2S3WebsiteSuffix:
+    us-east-1:
+      Suffix: .s3-website-us-east-1.amazonaws.com
+    us-west-1:
+      Suffix: .s3-website-us-west-1.amazonaws.com
+    us-west-2:
+      Suffix: .s3-website-us-west-2.amazonaws.com
+    eu-west-1:
+      Suffix: .s3-website-eu-west-1.amazonaws.com
+    ap-northeast-1:
+      Suffix: .s3-website-ap-northeast-1.amazonaws.com
+    ap-northeast-2:
+      Suffix: .s3-website-ap-northeast-2.amazonaws.com
+    ap-southeast-1:
+      Suffix: .s3-website-ap-southeast-1.amazonaws.com
+    ap-southeast-2:
+      Suffix: .s3-website-ap-southeast-2.amazonaws.com
+    ap-south-1:
+      Suffix: .s3-website-ap-south-1.amazonaws.com
+    us-east-2:
+      Suffix: .s3-website-us-east-2.amazonaws.com
+    sa-east-1:
+      Suffix: .s3-website-sa-east-1.amazonaws.com
+    cn-north-1:
+      Suffix: .s3-website.cn-north-1.amazonaws.com.cn
+    eu-central-1:
+      Suffix: .s3-website.eu-central-1.amazonaws.com
+Resources:
+  S3BucketForWebsiteContent:
+    Type: AWS::S3::Bucket
+    Properties:
+      AccessControl: PublicRead
+      WebsiteConfiguration:
+        IndexDocument: index.html
+        ErrorDocument: error.html
+  WebsiteCDN:
+    Type: AWS::CloudFront::Distribution
+    Properties:
+      DistributionConfig:
+        Comment: CDN for S3-backed website
+        Aliases:
+          - !Join ['', [!Ref 'AWS::StackName', !Ref 'AWS::AccountId', ., !Ref 'AWS::Region',
+              ., !Ref 'HostedZone']]
+        Enabled: 'true'
+        DefaultCacheBehavior:
+          ForwardedValues:
+            QueryString: 'true'
+          TargetOriginId: only-origin
+          ViewerProtocolPolicy: allow-all
+        DefaultRootObject: index.html
+        Origins:
+          - CustomOriginConfig:
+              HTTPPort: '80'
+              HTTPSPort: '443'
+              OriginProtocolPolicy: http-only
+            DomainName: !Join ['', [!Ref 'S3BucketForWebsiteContent', !FindInMap [
+                  Region2S3WebsiteSuffix, !Ref 'AWS::Region', Suffix]]]
+            Id: only-origin
+  WebsiteDNSName:
+    Type: AWS::Route53::RecordSet
+    Properties:
+      HostedZoneName: !Join ['', [!Ref 'HostedZone', .]]
+      Comment: CNAME redirect custom name to CloudFront distribution
+      Name: !Join ['', [!Ref 'AWS::StackName', !Ref 'AWS::AccountId', ., !Ref 'AWS::Region',
+          ., !Ref 'HostedZone']]
+      Type: CNAME
+      TTL: '900'
+      ResourceRecords:
+        - !GetAtt [WebsiteCDN, DomainName]
+Outputs:
+  WebsiteURL:
+    Value: !Join ['', ['http://', !Ref 'WebsiteDNSName']]
+    Description: The URL of the newly created website
+  BucketName:
+    Value: !Ref 'S3BucketForWebsiteContent'
+    Description: Name of S3 bucket to hold website content
--- yq-2.14.0.orig/debian/yq-2.14.0/test/doc.yml
+++ yq-2.14.0/debian/yq-2.14.0/test/doc.yml
@@ -0,0 +1,18 @@
+---
+yaml_struct:
+  - key_1: '$.*?/|\^(){}+@[]&_-'
+    key_2:
+      - '$.*?/|\^(){}+@[]&_-'
+      - "{\_}"
+      - value23
+    key_3: value31
+    key_4:
+      - value41
+      - value42
+    key_5: value51
+  - key_1_: value12
+    _key_2:
+      - value24
+      - value25
+    _key__3: '$.*?/|\^(){}+@[]&_-'
+...
--- yq-2.14.0.orig/debian/yq-2.14.0/test/filter.jq
+++ yq-2.14.0/debian/yq-2.14.0/test/filter.jq
@@ -0,0 +1 @@
+.
--- yq-2.14.0.orig/debian/yq-2.14.0/test/test.py
+++ yq-2.14.0/debian/yq-2.14.0/test/test.py
@@ -0,0 +1,266 @@
+#!/usr/bin/env python
+
+import os, sys, unittest, tempfile, io, platform, subprocess, yaml
+
+sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
+from yq import yq, cli  # noqa
+
+USING_PYPY = True if platform.python_implementation() == "PyPy" else False
+
+yaml_with_tags = """
+foo: !vault |
+  $ANSIBLE_VAULT;1.1;AES256
+  3766343436323632623130303
+xyz: !!mytag
+  foo: bar
+  baz: 1
+xyzzt: !binary
+  - 1
+  - 2
+  - 3
+scalar-red: !color FF0000
+scalar-orange: !color FFFF00
+mapping-red: !color-mapping {r: 255, g: 0, b: 0}
+mapping-orange:
+  !color-mapping
+  r: 255
+  g: 255
+  b: 0
+"""
+
+bomb_yaml = """
+lol1: &lol1 "lol"
+lol2: &lol2 [*lol1,*lol1,*lol1,*lol1,*lol1,*lol1,*lol1,*lol1,*lol1]
+lol3: &lol3 [*lol2,*lol2,*lol2,*lol2,*lol2,*lol2,*lol2,*lol2,*lol2]
+lol4: &lol4 [*lol3,*lol3,*lol3,*lol3,*lol3,*lol3,*lol3,*lol3,*lol3]
+lol5: &lol5 [*lol4,*lol4,*lol4,*lol4,*lol4,*lol4,*lol4,*lol4,*lol4]
+lol6: &lol6 [*lol5,*lol5,*lol5,*lol5,*lol5,*lol5,*lol5,*lol5,*lol5]
+lol7: &lol7 [*lol6,*lol6,*lol6,*lol6,*lol6,*lol6,*lol6,*lol6,*lol6]
+lol8: &lol8 [*lol7,*lol7,*lol7,*lol7,*lol7,*lol7,*lol7,*lol7,*lol7]
+lol9: &lol9 [*lol8,*lol8,*lol8,*lol8,*lol8,*lol8,*lol8,*lol8,*lol8]
+lol10: &lol10 [*lol9,*lol9,*lol9,*lol9,*lol9,*lol9,*lol9,*lol9,*lol9]
+"""
+
+class TestYq(unittest.TestCase):
+    def run_yq(self, input_data, args, expect_exit_codes={os.EX_OK}, input_format="yaml"):
+        stdin, stdout = sys.stdin, sys.stdout
+        try:
+            if isinstance(input_data, str):
+                sys.stdin = io.StringIO(input_data)
+            else:
+                sys.stdin = input_data
+            sys.stdout = io.StringIO()
+            cli(args, input_format=input_format)
+        except SystemExit as e:
+            self.assertIn(e.code, expect_exit_codes)
+        finally:
+            result = sys.stdout.getvalue()
+            sys.stdin, sys.stdout = stdin, stdout
+        return result
+
+    def test_yq(self):
+        for input_format in "yaml", "xml":
+            try:
+                cli(["--help"], input_format=input_format)
+            except SystemExit as e:
+                self.assertEqual(e.code, 0)
+        self.assertEqual(self.run_yq("{}", ["."]), "")
+        self.assertEqual(self.run_yq("foo:\n bar: 1\n baz: {bat: 3}", [".foo.baz.bat"]), "")
+        self.assertEqual(self.run_yq("[1, 2, 3]", ["--yaml-output", "-M", "."]), "- 1\n- 2\n- 3\n")
+        self.assertEqual(self.run_yq("foo:\n bar: 1\n baz: {bat: 3}", ["-y", ".foo.baz.bat"]), "3\n...\n")
+        self.assertEqual(self.run_yq("[aaaaaaaaaa bbb]", ["-y", "."]), "- aaaaaaaaaa bbb\n")
+        self.assertEqual(self.run_yq("[aaaaaaaaaa bbb]", ["-y", "-w", "8", "."]), "- aaaaaaaaaa\n  bbb\n")
+        self.assertEqual(self.run_yq('{"понедельник": 1}', ['.["понедельник"]']), "")
+        self.assertEqual(self.run_yq('{"понедельник": 1}', ["-y", '.["понедельник"]']), "1\n...\n")
+        self.assertEqual(self.run_yq("- понедельник\n- вторник\n", ["-y", "."]), "- понедельник\n- вторник\n")
+
+    def test_yq_err(self):
+        err = ('yq: Error running jq: ScannerError: while scanning for the next token\nfound character that '
+               'cannot start any token\n  in "<file>", line 1, column 3.')
+        self.run_yq("- %", ["."], expect_exit_codes={err, 2})
+
+    def test_yq_arg_handling(self):
+        from unittest import mock
+
+        test_doc = os.path.join(os.path.dirname(__file__), "doc.yml")
+        test_filter = os.path.join(os.path.dirname(__file__), "filter.jq")
+        unusable_non_tty_input = mock.Mock()
+        unusable_non_tty_input.isatty = mock.Mock(return_value=False)
+        unusable_tty_input = mock.Mock()
+        unusable_tty_input.isatty = mock.Mock(return_value=True)
+
+        self.run_yq("{}", ["."])
+        self.run_yq(unusable_non_tty_input, [".", test_doc])
+        self.run_yq(unusable_non_tty_input, [".", test_doc, test_doc])
+        self.run_yq("{}", ["-f", test_filter])
+        self.run_yq(unusable_non_tty_input, ["-f", test_filter, test_doc])
+        self.run_yq(unusable_non_tty_input, ["-f", test_filter, test_doc, test_doc])
+
+        self.run_yq(unusable_tty_input, [], expect_exit_codes={2})
+        self.run_yq(unusable_tty_input, ["."], expect_exit_codes={2})
+        self.run_yq(unusable_tty_input, ["-f", test_filter], expect_exit_codes={2})
+
+    def test_yq_arg_passthrough(self):
+        self.assertEqual(self.run_yq("{}", ["--arg", "foo", "bar", "--arg", "x", "y", "--indent", "4", "."]), "")
+        self.assertEqual(self.run_yq("{}", ["--arg", "foo", "bar", "--arg", "x", "y", "-y", "--indent", "4", ".x=$x"]),
+                         "x: y\n")
+        err = "yq: Error running jq: BrokenPipeError: [Errno 32] Broken pipe" + (": '<fdopen>'." if USING_PYPY else ".")
+        self.run_yq("{}", ["--indent", "9", "."], expect_exit_codes={err, 2})
+        self.assertEqual(self.run_yq('', ["true", "-y", "-rn"]), "true\n...\n")
+
+        with tempfile.NamedTemporaryFile() as tf, tempfile.TemporaryFile() as tf2:
+            tf.write(b'.a')
+            tf.seek(0)
+            tf2.write(b'{"a": 1}')
+            for arg in "--from-file", "-f":
+                tf2.seek(0)
+                self.assertEqual(self.run_yq("", ["-y", arg, tf.name, self.fd_path(tf2)]), '1\n...\n')
+
+    @unittest.skipIf(subprocess.check_output(["jq", "--version"]) < b"jq-1.6", "Test options introduced in jq 1.6")
+    def test_jq16_arg_passthrough(self):
+        self.assertEqual(self.run_yq("{}", ["--indentless", "-y", ".a=$ARGS.positional", "--args", "a", "b"]),
+                         "a:\n- a\n- b\n")
+        self.assertEqual(self.run_yq("{}", ["-y", ".a=$ARGS.positional", "--args", "a", "b"]), "a:\n  - a\n  - b\n")
+        self.assertEqual(self.run_yq("{}", [".", "--jsonargs", "a", "b"]), "")
+
+    def test_short_option_separation(self):
+        # self.assertEqual(self.run_yq('{"a": 1}', ["-yCcC", "."]), "a: 1\n") - Fails on 2.7 and 3.8
+        self.assertEqual(self.run_yq('{"a": 1}', ["-CcCy", "."]), "a: 1\n")
+        self.assertEqual(self.run_yq('{"a": 1}', ["-y", "-CS", "."]), "a: 1\n")
+        self.assertEqual(self.run_yq('{"a": 1}', ["-y", "-CC", "."]), "a: 1\n")
+        self.assertEqual(self.run_yq('{"a": 1}', ["-y", "-cC", "."]), "a: 1\n")
+        self.assertEqual(self.run_yq('{"a": 1}', ["-x", "-cC", "."]), "<a>1</a>\n")
+        self.assertEqual(self.run_yq('{"a": 1}', ["-C", "."]), "")
+        self.assertEqual(self.run_yq('{"a": 1}', ["-Cc", "."]), "")
+
+    def fd_path(self, fh):
+        return "/dev/fd/{}".format(fh.fileno())
+
+    def test_multidocs(self):
+        self.assertEqual(self.run_yq("---\na: b\n---\nc: d", ["-y", "."]), "a: b\n---\nc: d\n")
+        with tempfile.TemporaryFile() as tf, tempfile.TemporaryFile() as tf2:
+            tf.write(b'{"a": "b"}')
+            tf.seek(0)
+            tf2.write(b'{"a": 1}')
+            tf2.seek(0)
+            self.assertEqual(self.run_yq("", ["-y", ".a", self.fd_path(tf), self.fd_path(tf2)]), 'b\n--- 1\n...\n')
+
+    def test_datetimes(self):
+        self.assertEqual(self.run_yq("- 2016-12-20T22:07:36Z\n", ["."]), "")
+        if yaml.__version__ < '5.3':
+            self.assertEqual(self.run_yq("- 2016-12-20T22:07:36Z\n", ["-y", "."]), "- '2016-12-20T22:07:36'\n")
+        else:
+            self.assertEqual(self.run_yq("- 2016-12-20T22:07:36Z\n", ["-y", "."]), "- '2016-12-20T22:07:36+00:00'\n")
+
+        self.assertEqual(self.run_yq("2016-12-20", ["."]), "")
+        self.assertEqual(self.run_yq("2016-12-20", ["-y", "."]), "'2016-12-20'\n")
+
+    def test_unrecognized_tags(self):
+        self.assertEqual(self.run_yq("!!foo bar\n", ["."]), "")
+        self.assertEqual(self.run_yq("!!foo bar\n", ["-y", "."]), "bar\n...\n")
+        self.assertEqual(self.run_yq("x: !foo bar\n", ["-y", "."]), "x: bar\n")
+        self.assertEqual(self.run_yq("x: !!foo bar\n", ["-y", "."]), "x: bar\n")
+        with tempfile.TemporaryFile() as tf:
+            tf.write(yaml_with_tags.encode())
+            tf.seek(0)
+            self.assertEqual(self.run_yq("", ["-y", ".xyz.foo", self.fd_path(tf)]), 'bar\n...\n')
+
+    def test_roundtrip_yaml(self):
+        cfn_filename = os.path.join(os.path.dirname(__file__), "cfn.yml")
+        with io.open(cfn_filename) as fh:
+            self.assertEqual(self.run_yq("", ["-Y", ".", cfn_filename]), fh.read())
+
+    def test_in_place(self):
+        with tempfile.NamedTemporaryFile() as tf, tempfile.NamedTemporaryFile() as tf2:
+            tf.write(b"- foo\n- bar\n")
+            tf.seek(0)
+            tf2.write(b"- foo\n- bar\n")
+            tf2.seek(0)
+            self.run_yq("", ["-i", "-y", ".[0]", tf.name, tf2.name])
+            self.assertEqual(tf.read(), b'foo\n...\n')
+            self.assertEqual(tf2.read(), b'foo\n...\n')
+
+            # Files do not get overwritten on error (DeferredOutputStream logic)
+            self.run_yq("", ["-i", "-y", tf.name, tf2.name], expect_exit_codes=[3])
+            tf.seek(0)
+            tf2.seek(0)
+            self.assertEqual(tf.read(), b'foo\n...\n')
+            self.assertEqual(tf2.read(), b'foo\n...\n')
+
+    def test_explicit_doc_markers(self):
+        test_doc = os.path.join(os.path.dirname(__file__), "doc.yml")
+        self.assertTrue(self.run_yq("", ["-y", ".", test_doc]).startswith("yaml_struct"))
+        self.assertTrue(self.run_yq("", ["-y", "--explicit-start", ".", test_doc]).startswith("---"))
+        self.assertTrue(self.run_yq("", ["-y", "--explicit-end", ".", test_doc]).endswith("...\n"))
+
+    @unittest.expectedFailure
+    def test_times(self):
+        """
+        Timestamps are parsed as sexagesimals in YAML 1.1 but not 1.2. No PyYAML support for YAML 1.2 yet. See issue 10
+        """
+        self.assertEqual(self.run_yq("11:12:13", ["."]), "")
+        self.assertEqual(self.run_yq("11:12:13", ["-y", "."]), "'11:12:13'\n")
+
+    def test_xq(self):
+        self.assertEqual(self.run_yq("<foo/>", ["."], input_format="xml"), "")
+        self.assertEqual(self.run_yq("<foo/>", ["-x", ".foo.x=1"], input_format="xml"),
+                         '<foo>\n  <x>1</x>\n</foo>\n')
+
+        self.assertEqual(self.run_yq("<a><b/></a>", ["-y", "."], input_format="xml"),
+                         "a:\n  b: null\n")
+        self.assertEqual(self.run_yq("<a><b/></a>", ["-y", "--xml-force-list", "b", "."], input_format="xml"),
+                         "a:\n  b:\n    - null\n")
+
+        with tempfile.TemporaryFile() as tf, tempfile.TemporaryFile() as tf2:
+            tf.write(b'<a><b/></a>')
+            tf.seek(0)
+            tf2.write(b'<a><c/></a>')
+            tf2.seek(0)
+            self.assertEqual(self.run_yq("", ["-x", ".a", self.fd_path(tf), self.fd_path(tf2)], input_format="xml"),
+                             '<b></b>\n<c></c>\n')
+        err = ("yq: Error converting JSON to XML: cannot represent non-object types at top level. "
+               "Use --xml-root=name to envelope your output with a root element.")
+        self.run_yq("[1]", ["-x", "."], expect_exit_codes=[err])
+
+    def test_xq_dtd(self):
+        with tempfile.TemporaryFile() as tf:
+            tf.write(b'<a><b c="d">e</b><b>f</b></a>')
+            tf.seek(0)
+            self.assertEqual(self.run_yq("", ["-x", ".a", self.fd_path(tf)], input_format="xml"),
+                             '<b c="d">e</b><b>f</b>\n')
+            tf.seek(0)
+            self.assertEqual(self.run_yq("", ["-x", "--xml-dtd", ".", self.fd_path(tf)], input_format="xml"),
+                             '<?xml version="1.0" encoding="utf-8"?>\n<a>\n  <b c="d">e</b>\n  <b>f</b>\n</a>\n')
+            tf.seek(0)
+            self.assertEqual(
+                self.run_yq("", ["-x", "--xml-dtd", "--xml-root=g", ".a", self.fd_path(tf)], input_format="xml"),
+                '<?xml version="1.0" encoding="utf-8"?>\n<g>\n  <b c="d">e</b>\n  <b>f</b>\n</g>\n'
+            )
+
+    def test_tomlq(self):
+        self.assertEqual(self.run_yq("[foo]\nbar = 1", ["."], input_format="toml"), "")
+        self.assertEqual(self.run_yq("[foo]\nbar = 1", ["-t", ".foo"], input_format="toml"), "bar = 1\n")
+
+    def test_abbrev_opt_collisions(self):
+        with tempfile.TemporaryFile() as tf, tempfile.TemporaryFile() as tf2:
+            self.assertEqual(
+                self.run_yq("", ["-y", "-e", "--slurp", ".[0] == .[1]", "-", self.fd_path(tf), self.fd_path(tf2)]),
+                "true\n...\n"
+            )
+
+    def test_entity_expansion_defense(self):
+        self.run_yq(bomb_yaml, ["."], expect_exit_codes=["yq: Error: detected unsafe YAML entity expansion"])
+
+    def test_yaml_type_tags(self):
+        bin_yaml = "example: !!binary Zm9vYmFyCg=="
+        self.assertEqual(self.run_yq(bin_yaml, ["."]), "")
+        self.assertEqual(self.run_yq(bin_yaml, ["-y", "."]), "example: Zm9vYmFyCg==\n")
+        set_yaml = "example: !!set { Boston Red Sox, Detroit Tigers, New York Yankees }"
+        self.assertEqual(self.run_yq(set_yaml, ["."]), "")
+        self.assertEqual(
+            self.run_yq(set_yaml, ["-y", "."]),
+            "example:\n  Boston Red Sox: null\n  Detroit Tigers: null\n  New York Yankees: null\n"
+        )
+
+if __name__ == '__main__':
+    unittest.main()
--- yq-2.14.0.orig/debian/yq-2.14.0/yq.egg-info/PKG-INFO
+++ yq-2.14.0/debian/yq-2.14.0/yq.egg-info/PKG-INFO
@@ -0,0 +1,174 @@
+Metadata-Version: 2.1
+Name: yq
+Version: 2.14.0
+Summary: Command-line YAML/XML processor - jq wrapper for YAML/XML documents
+Home-page: https://github.com/kislyuk/yq
+Author: Andrey Kislyuk
+Author-email: kislyuk@gmail.com
+License: Apache Software License
+Platform: UNKNOWN
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: Apache Software License
+Classifier: Operating System :: MacOS :: MacOS X
+Classifier: Operating System :: POSIX
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
+Classifier: Topic :: Software Development :: Libraries :: Python Modules
+Requires-Python: >=3.6
+Provides-Extra: tests
+License-File: LICENSE
+
+yq: Command-line YAML/XML/TOML processor - jq wrapper for YAML, XML, TOML documents
+===================================================================================
+
+Installation
+------------
+::
+
+    pip3 install yq
+
+Before using ``yq``, you also have to install its dependency, ``jq``. See the `jq installation instructions
+<https://stedolan.github.io/jq/download/>`_ for details and directions specific to your platform.
+
+On macOS, ``yq`` is also available on `Homebrew <https://brew.sh/>`_: use ``brew install python-yq``.
+
+Synopsis
+--------
+
+``yq`` takes YAML input, converts it to JSON, and pipes it to `jq <https://stedolan.github.io/jq/>`_::
+
+    cat input.yml | yq .foo.bar
+
+Like in ``jq``, you can also specify input filename(s) as arguments::
+
+    yq .foo.bar input.yml
+
+By default, no conversion of ``jq`` output is done. Use the ``--yaml-output``/``-y`` option to convert it back into YAML::
+
+    cat input.yml | yq -y .foo.bar
+
+Mapping key order is preserved. By default, custom `YAML tags <http://www.yaml.org/spec/1.2/spec.html#id2764295>`_ and
+`styles <https://yaml.org/spec/current.html#id2509255>`_ in the input are ignored. Use the ``--yaml-roundtrip``/``-Y``
+option to preserve YAML tags and styles by representing them as extra items in their enclosing mappings and sequences
+while in JSON::
+
+    yq -Y .foo.bar input.yml
+
+Use the ``--width``/``-w`` option to pass the line wrap width for string literals. With ``-y/-Y``, files can be edited
+in place like with ``sed -i``: ``yq -yi .foo=1 *.yml``. All other command line arguments are forwarded to ``jq``. ``yq``
+forwards the exit code ``jq`` produced, unless there was an error in YAML parsing, in which case the exit code is 1.
+See the `jq manual <https://stedolan.github.io/jq/manual/>`_ for more details on ``jq`` features and options.
+
+Because YAML treats JSON as a dialect of YAML, you can use yq to convert JSON to YAML: ``yq -y . < in.json > out.yml``.
+
+Preserving tags and styles using the ``-Y`` (``--yaml-roundtrip``) option
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The ``-Y`` option helps preserve custom `string styles <https://yaml-multiline.info/>`_ and
+`tags <https://camel.readthedocs.io/en/latest/yamlref.html#tags>`_ in your document. For example, consider the following
+document (an `AWS CloudFormation <https://aws.amazon.com/cloudformation/>`_ template fragment)::
+
+    Resources:
+      ElasticLoadBalancer:
+        Type: 'AWS::ElasticLoadBalancing::LoadBalancer'
+        Properties:
+          AvailabilityZones: !GetAZs ''
+          Instances:
+            - !Ref Ec2Instance1
+            - !Ref Ec2Instance2
+          Description: >-
+            Load balancer for Big Important Service.
+
+            Good thing it's managed by this template.
+
+Passing this document through ``yq -y .Resources.ElasticLoadBalancer`` will drop custom tags, such as ``!Ref``,
+and styles, such as the `folded <https://yaml-multiline.info/>`_ style of the ``Description`` field::
+
+    Type: AWS::ElasticLoadBalancing::LoadBalancer
+    Properties:
+      AvailabilityZones: ''
+      Instances:
+        - Ec2Instance1
+        - Ec2Instance2
+      Description: 'Load balancer for Big Important Service.
+
+        Good thing it''s managed by this template.'
+
+By contrast, passing it through ``yq -Y .Resources.ElasticLoadBalancer`` will preserve tags and styles::
+
+    Type: 'AWS::ElasticLoadBalancing::LoadBalancer'
+    Properties:
+      AvailabilityZones: !GetAZs ''
+      Instances:
+        - !Ref 'Ec2Instance1'
+        - !Ref 'Ec2Instance2'
+      Description: >-
+        Load balancer for Big Important Service.
+
+        Good thing it's managed by this template.
+
+To accomplish this in ``-Y`` mode, yq carries extra metadata (mapping pairs and sequence values) in the JSON
+representation of your document for any custom tags or styles that it finds. When converting the JSON back into YAML, it
+parses this metadata, re-applies the tags and styles, and discards the extra pairs and values.
+
+.. warning ::
+
+ The ``-Y`` option is incompatible with jq filters that do not expect the extra information injected into the document
+ to preserve the YAML formatting. For example, a jq filter that counts entries in the Instances array will come up with
+ 4 entries instead of 2. A filter that expects all array entries to be mappings may break due to the presence of string
+ metadata keys. Check your jq filter for compatibility/semantic validity when using the ``-Y`` option.
+
+XML support
+-----------
+``yq`` also supports XML. The ``yq`` package installs an executable, ``xq``, which
+`transcodes XML to JSON <https://www.xml.com/pub/a/2006/05/31/converting-between-xml-and-json.html>`_ using
+`xmltodict <https://github.com/martinblech/xmltodict>`_ and pipes it to ``jq``. Roundtrip transcoding is available with
+the ``xq --xml-output``/``xq -x`` option. Multiple XML documents can be passed in separate files/streams as
+``xq a.xml b.xml``. Entity expansion and DTD resolution is disabled to avoid XML parsing vulnerabilities.
+
+TOML support
+------------
+``yq`` supports `TOML <https://toml.io/>`_ as well. The ``yq`` package installs an executable, ``tomlq``, which uses the
+`toml library <https://github.com/uiri/toml>`_ to transcode TOML to JSON, then pipes it to ``jq``. Roundtrip transcoding
+is available with the ``tomlq --toml-output``/``tomlq -t`` option.
+
+.. admonition:: Compatibility note
+
+ This package's release series available on PyPI begins with version 2.0.0. Versions of ``yq`` prior to 2.0.0 are
+ distributed by https://github.com/abesto/yq and are not related to this package. No guarantees of compatibility are
+ made between abesto/yq and kislyuk/yq. This package follows the `Semantic Versioning 2.0.0 <http://semver.org/>`_
+ standard. To ensure proper operation, declare dependency version ranges according to SemVer.
+
+Authors
+-------
+* Andrey Kislyuk
+
+Links
+-----
+* `Project home page (GitHub) <https://github.com/kislyuk/yq>`_
+* `Documentation <https://kislyuk.github.io/yq/>`_
+* `Package distribution (PyPI) <https://pypi.python.org/pypi/yq>`_
+* `Change log <https://github.com/kislyuk/yq/blob/master/Changes.rst>`_
+* `jq <https://stedolan.github.io/jq/>`_ - the command-line JSON processor utility powering ``yq``
+
+Bugs
+~~~~
+Please report bugs, issues, feature requests, etc. on `GitHub <https://github.com/kislyuk/yq/issues>`_.
+
+License
+-------
+Licensed under the terms of the `Apache License, Version 2.0 <http://www.apache.org/licenses/LICENSE-2.0>`_.
+
+.. image:: https://github.com/kislyuk/yq/workflows/Python%20package/badge.svg
+        :target: https://github.com/kislyuk/yq/actions
+.. image:: https://codecov.io/github/kislyuk/yq/coverage.svg?branch=master
+        :target: https://codecov.io/github/kislyuk/yq?branch=master
+.. image:: https://img.shields.io/pypi/v/yq.svg
+        :target: https://pypi.python.org/pypi/yq
+.. image:: https://img.shields.io/pypi/l/yq.svg
+        :target: https://pypi.python.org/pypi/yq
--- yq-2.14.0.orig/debian/yq-2.14.0/yq.egg-info/SOURCES.txt
+++ yq-2.14.0/debian/yq-2.14.0/yq.egg-info/SOURCES.txt
@@ -0,0 +1,31 @@
+.gitignore
+Changes.rst
+LICENSE
+MANIFEST.in
+Makefile
+README.rst
+common.mk
+setup.cfg
+setup.py
+.github/FUNDING.yml
+.github/workflows/pythonpackage.yml
+docs/changelog.rst
+docs/cli-doc.txt
+docs/conf.py
+docs/index.rst
+test/cfn.yml
+test/doc.yml
+test/filter.jq
+test/test.py
+yq/__init__.py
+yq/__main__.py
+yq/dumper.py
+yq/loader.py
+yq/parser.py
+yq/version.py
+yq.egg-info/PKG-INFO
+yq.egg-info/SOURCES.txt
+yq.egg-info/dependency_links.txt
+yq.egg-info/entry_points.txt
+yq.egg-info/requires.txt
+yq.egg-info/top_level.txt
--- yq-2.14.0.orig/debian/yq-2.14.0/yq.egg-info/entry_points.txt
+++ yq-2.14.0/debian/yq-2.14.0/yq.egg-info/entry_points.txt
@@ -0,0 +1,4 @@
+[console_scripts]
+tomlq = yq:tq_cli
+xq = yq:xq_cli
+yq = yq:cli
--- yq-2.14.0.orig/debian/yq-2.14.0/yq.egg-info/requires.txt
+++ yq-2.14.0/debian/yq-2.14.0/yq.egg-info/requires.txt
@@ -0,0 +1,9 @@
+PyYAML>=5.3.1
+xmltodict>=0.11.0
+toml>=0.10.0
+argcomplete>=1.8.1
+
+[tests]
+coverage
+flake8
+wheel
--- yq-2.14.0.orig/debian/yq-2.14.0/yq.egg-info/top_level.txt
+++ yq-2.14.0/debian/yq-2.14.0/yq.egg-info/top_level.txt
@@ -0,0 +1 @@
+yq
--- yq-2.14.0.orig/debian/yq-2.14.0/yq/__init__.py
+++ yq-2.14.0/debian/yq-2.14.0/yq/__init__.py
@@ -0,0 +1,270 @@
+"""
+yq: Command-line YAML processor - jq wrapper for YAML documents
+
+yq transcodes YAML documents to JSON and passes them to jq.
+See https://github.com/kislyuk/yq for more information.
+"""
+
+# PYTHON_ARGCOMPLETE_OK
+
+import os, sys, argparse, subprocess, json, io
+from datetime import datetime, date, time
+
+import yaml, argcomplete
+
+from .parser import get_parser, jq_arg_spec
+from .loader import get_loader
+from .dumper import get_dumper
+
+try:
+    from .version import version as __version__
+except ImportError:
+    __version__ = "0.0.0"
+
+class JSONDateTimeEncoder(json.JSONEncoder):
+    def default(self, o):
+        if isinstance(o, (datetime, date, time)):
+            return o.isoformat()
+        return json.JSONEncoder.default(self, o)
+
+def decode_docs(jq_output, json_decoder):
+    while jq_output:
+        doc, pos = json_decoder.raw_decode(jq_output)
+        jq_output = jq_output[pos + 1:]
+        yield doc
+
+def xq_cli():
+    cli(input_format="xml", program_name="xq")
+
+def tq_cli():
+    cli(input_format="toml", program_name="tomlq")
+
+class DeferredOutputStream:
+    def __init__(self, name, mode="w"):
+        self.name = name
+        self.mode = mode
+        self._fh = None
+
+    @property
+    def fh(self):
+        if self._fh is None:
+            self._fh = open(self.name, self.mode)
+        return self._fh
+
+    def flush(self):
+        if self._fh is not None:
+            return self.fh.flush()
+
+    def close(self):
+        if self._fh is not None:
+            return self.fh.close()
+
+    def __getattr__(self, a):
+        return getattr(self.fh, a)
+
+def cli(args=None, input_format="yaml", program_name="yq"):
+    parser = get_parser(program_name, __doc__)
+    argcomplete.autocomplete(parser)
+    args, jq_args = parser.parse_known_args(args=args)
+    null_input = False
+
+    for i, arg in enumerate(jq_args):
+        if arg.startswith("-") and not arg.startswith("--"):
+            if "n" in arg:
+                null_input = True
+            if "i" in arg:
+                args.in_place = True
+            if "y" in arg:
+                args.output_format = "yaml"
+            elif "Y" in arg:
+                args.output_format = "annotated_yaml"
+            elif "x" in arg:
+                args.output_format = "xml"
+            jq_args[i] = arg.replace("i", "").replace("x", "").replace("y", "").replace("Y", "")
+        if args.output_format != "json":
+            jq_args[i] = jq_args[i].replace("C", "")
+            if jq_args[i] == "-":
+                jq_args[i] = None
+
+    jq_args = [arg for arg in jq_args if arg is not None]
+
+    for arg in jq_arg_spec:
+        values = getattr(args, arg, None)
+        delattr(args, arg)
+        if values is not None:
+            for value_group in values:
+                jq_args.append(arg)
+                jq_args.extend(value_group)
+    if args.jq_filter is not None:
+        if "--from-file" in jq_args or "-f" in jq_args:
+            args.input_streams.insert(0, argparse.FileType()(args.jq_filter))
+        else:
+            jq_filter_arg_loc = len(jq_args)
+            if "--args" in jq_args:
+                jq_filter_arg_loc = jq_args.index('--args') + 1
+            elif "--jsonargs" in jq_args:
+                jq_filter_arg_loc = jq_args.index('--jsonargs') + 1
+            jq_args.insert(jq_filter_arg_loc, args.jq_filter)
+            if null_input:
+                args.input_streams.insert(0, open(os.devnull))
+    delattr(args, "jq_filter")
+    in_place = args.in_place
+    delattr(args, "in_place")
+
+    if sys.stdin.isatty() and not args.input_streams:
+        parser.print_help()
+        sys.exit(2)
+    elif not args.input_streams:
+        args.input_streams = [sys.stdin]
+
+    yq_args = dict(input_format=input_format, program_name=program_name, jq_args=jq_args, **vars(args))
+    if in_place:
+        if args.output_format not in {"yaml", "annotated_yaml"}:
+            sys.exit("{}: -i/--in-place can only be used with -y/-Y".format(program_name))
+        input_streams = yq_args.pop("input_streams")
+        if len(input_streams) == 1 and input_streams[0].name == "<stdin>":
+            msg = "{}: -i/--in-place can only be used with filename arguments, not on standard input"
+            sys.exit(msg.format(program_name))
+        for i, input_stream in enumerate(input_streams):
+            def exit_handler(arg=None):
+                if arg:
+                    sys.exit(arg)
+            if i < len(input_streams):
+                yq_args["exit_func"] = exit_handler
+            yq(input_streams=[input_stream], output_stream=DeferredOutputStream(input_stream.name), **yq_args)
+    else:
+        yq(**yq_args)
+
+def load_yaml_docs(in_stream, out_stream, jq, loader_class, max_expansion_factor, exit_func, prog):
+    loader = loader_class(in_stream)
+    last_loader_pos = 0
+    try:
+        while loader.check_node():
+            node = loader.get_node()
+            doc = loader.construct_document(node)
+            loader_pos = node.end_mark.index
+            doc_len = loader_pos - last_loader_pos
+            doc_bytes_written = 0
+            for chunk in JSONDateTimeEncoder().iterencode(doc):
+                doc_bytes_written += len(chunk)
+                if doc_bytes_written > doc_len * max_expansion_factor:
+                    if jq:
+                        jq.kill()
+                    exit_func("{}: Error: detected unsafe YAML entity expansion".format(prog))
+                out_stream.write(chunk)
+            out_stream.write("\n")
+            last_loader_pos = loader_pos
+    finally:
+        loader.dispose()
+
+def yq(input_streams=None, output_stream=None, input_format="yaml", output_format="json",
+       program_name="yq", width=None, indentless_lists=False, xml_root=None, xml_dtd=False, xml_force_list=frozenset(),
+       explicit_start=False, explicit_end=False, expand_aliases=True, max_expansion_factor=1024, jq_args=frozenset(),
+       exit_func=None):
+    if not input_streams:
+        input_streams = [sys.stdin]
+    if not output_stream:
+        output_stream = sys.stdout
+    if not exit_func:
+        exit_func = sys.exit
+    converting_output = True if output_format != "json" else False
+
+    try:
+        # Notes: universal_newlines is just a way to induce subprocess to make stdin a text buffer and encode it for us;
+        # close_fds must be false for command substitution to work (yq . t.yml --slurpfile t <(yq . t.yml))
+        jq = subprocess.Popen(["jq"] + list(jq_args),
+                              stdin=subprocess.PIPE,
+                              stdout=subprocess.PIPE if converting_output else None,
+                              close_fds=False,
+                              universal_newlines=True)
+    except OSError as e:
+        msg = "{}: Error starting jq: {}: {}. Is jq installed and available on PATH?"
+        exit_func(msg.format(program_name, type(e).__name__, e))
+
+    try:
+        if converting_output:
+            # TODO: enable true streaming in this branch (with asyncio, asyncproc, a multi-shot variant of
+            # subprocess.Popen._communicate, etc.)
+            # See https://stackoverflow.com/questions/375427/non-blocking-read-on-a-subprocess-pipe-in-python
+            use_annotations = True if output_format == "annotated_yaml" else False
+            json_buffer = io.StringIO()
+            for input_stream in input_streams:
+                if input_format == "yaml":
+                    loader_class = get_loader(use_annotations=use_annotations, expand_aliases=expand_aliases)
+                    load_yaml_docs(in_stream=input_stream, out_stream=json_buffer, jq=None, loader_class=loader_class,
+                                   max_expansion_factor=max_expansion_factor, exit_func=exit_func, prog=program_name)
+                elif input_format == "xml":
+                    import xmltodict
+                    doc = xmltodict.parse(input_stream.read(), disable_entities=True, force_list=xml_force_list)
+                    json.dump(doc, json_buffer, cls=JSONDateTimeEncoder)
+                    json_buffer.write("\n")
+                elif input_format == "toml":
+                    import toml
+                    doc = toml.load(input_stream)
+                    json.dump(doc, json_buffer, cls=JSONDateTimeEncoder)
+                    json_buffer.write("\n")
+                else:
+                    raise Exception("Unknown input format")
+            jq_out, jq_err = jq.communicate(json_buffer.getvalue())
+            json_decoder = json.JSONDecoder()
+            if output_format == "yaml" or output_format == "annotated_yaml":
+                dumper_class = get_dumper(use_annotations=use_annotations, indentless=indentless_lists)
+                yaml.dump_all(decode_docs(jq_out, json_decoder), stream=output_stream, Dumper=dumper_class,
+                              width=width, allow_unicode=True, default_flow_style=False,
+                              explicit_start=explicit_start, explicit_end=explicit_end)
+            elif output_format == "xml":
+                import xmltodict
+                for doc in decode_docs(jq_out, json_decoder):
+                    if xml_root:
+                        doc = {xml_root: doc}
+                    elif not isinstance(doc, dict):
+                        msg = ("{}: Error converting JSON to XML: cannot represent non-object types at top level. "
+                               "Use --xml-root=name to envelope your output with a root element.")
+                        exit_func(msg.format(program_name))
+                    full_document = True if xml_dtd else False
+                    try:
+                        xmltodict.unparse(doc, output=output_stream, full_document=full_document, pretty=True,
+                                          indent="  ")
+                    except ValueError as e:
+                        if "Document must have exactly one root" in str(e):
+                            raise Exception(str(e) + " Use --xml-root=name to envelope your output with a root element")
+                        else:
+                            raise
+                    output_stream.write(b"\n" if sys.version_info < (3, 0) else "\n")
+            elif output_format == "toml":
+                import toml
+                for doc in decode_docs(jq_out, json_decoder):
+                    if not isinstance(doc, dict):
+                        msg = "{}: Error converting JSON to TOML: cannot represent non-object types at top level."
+                        exit_func(msg.format(program_name))
+                    toml.dump(doc, output_stream)
+        else:
+            if input_format == "yaml":
+                loader_class = get_loader(use_annotations=False, expand_aliases=expand_aliases)
+                for input_stream in input_streams:
+                    load_yaml_docs(in_stream=input_stream, out_stream=jq.stdin, jq=jq, loader_class=loader_class,
+                                   max_expansion_factor=max_expansion_factor, exit_func=exit_func, prog=program_name)
+            elif input_format == "xml":
+                import xmltodict
+                for input_stream in input_streams:
+                    json.dump(xmltodict.parse(input_stream.read(), disable_entities=True,
+                                              force_list=xml_force_list), jq.stdin)
+                    jq.stdin.write("\n")
+            elif input_format == "toml":
+                import toml
+                for input_stream in input_streams:
+                    json.dump(toml.load(input_stream), jq.stdin)
+                    jq.stdin.write("\n")
+            else:
+                raise Exception("Unknown input format")
+
+            try:
+                jq.stdin.close()
+            except Exception:
+                pass
+            jq.wait()
+        for input_stream in input_streams:
+            input_stream.close()
+        exit_func(jq.returncode)
+    except Exception as e:
+        exit_func("{}: Error running jq: {}: {}.".format(program_name, type(e).__name__, e))
--- yq-2.14.0.orig/debian/yq-2.14.0/yq/__main__.py
+++ yq-2.14.0/debian/yq-2.14.0/yq/__main__.py
@@ -0,0 +1,4 @@
+from yq.__init__ import cli
+
+if __name__ == "__main__":
+    cli()
--- yq-2.14.0.orig/debian/yq-2.14.0/yq/dumper.py
+++ yq-2.14.0/debian/yq-2.14.0/yq/dumper.py
@@ -0,0 +1,82 @@
+import re
+
+import yaml
+# try:
+#     from yaml import CSafeDumper as default_dumper
+# except ImportError:
+#     from yaml import SafeDumper as default_dumper
+
+from .loader import hash_key
+
+class OrderedIndentlessDumper(yaml.SafeDumper):
+    pass
+
+class OrderedDumper(yaml.SafeDumper):
+    def increase_indent(self, flow=False, indentless=False):
+        return super(OrderedDumper, self).increase_indent(flow, False)
+
+    def ignore_aliases(self, data):
+        return True
+
+yaml_value_annotation_re = re.compile(r"^__yq_(?P<type>tag|style)_(?P<key>.+)__$")
+yaml_item_annotation_re = re.compile(r"^__yq_(?P<type>tag|style)_(?P<key>\d+)_(?P<value>.+)__$")
+
+def get_dumper(use_annotations=False, indentless=False):
+    # if not (use_annotations or indentless):
+    #     return default_dumper
+
+    def represent_dict(dumper, data):
+        pairs, custom_styles, custom_tags = [], {}, {}
+        for k, v in data.items():
+            if use_annotations and isinstance(k, str):
+                if k == "__yq_alias__":
+                    continue
+                value_annotation = yaml_value_annotation_re.match(k)
+                if value_annotation and value_annotation.group("type") == "style":
+                    custom_styles[value_annotation.group("key")] = v
+                    continue
+                elif value_annotation and value_annotation.group("type") == "tag":
+                    custom_tags[value_annotation.group("key")] = v
+                    continue
+            pairs.append((k, v))
+        mapping = dumper.represent_mapping("tag:yaml.org,2002:map", pairs)
+        if use_annotations:
+            for k, v in mapping.value:
+                hashed_key = hash_key(k.value)
+                if hashed_key in custom_styles:
+                    if isinstance(v, yaml.nodes.ScalarNode):
+                        v.style = custom_styles[hashed_key]
+                    elif custom_styles[hashed_key] == "flow":
+                        v.flow_style = True
+                if hashed_key in custom_tags:
+                    v.tag = custom_tags[hashed_key]
+        return mapping
+
+    def represent_list(dumper, data):
+        raw_list, custom_styles, custom_tags = [], {}, {}
+        for v in data:
+            if use_annotations and isinstance(v, str):
+                annotation = yaml_item_annotation_re.match(v)
+                if annotation and annotation.group("type") == "style":
+                    custom_styles[annotation.group("key")] = annotation.group("value")
+                    continue
+                elif annotation and annotation.group("type") == "tag":
+                    custom_tags[annotation.group("key")] = annotation.group("value")
+                    continue
+            raw_list.append(v)
+        sequence = dumper.represent_list(raw_list)
+        if use_annotations:
+            for i, v in enumerate(sequence.value):
+                if str(i) in custom_styles:
+                    if isinstance(v, yaml.nodes.ScalarNode):
+                        v.style = custom_styles[str(i)]
+                    elif custom_styles[str(i)] == "flow":
+                        v.flow_style = True
+                if str(i) in custom_tags:
+                    v.tag = custom_tags[str(i)]
+        return sequence
+
+    dumper = OrderedIndentlessDumper if indentless else OrderedDumper
+    dumper.add_representer(dict, represent_dict)
+    dumper.add_representer(list, represent_list)
+    return dumper
--- yq-2.14.0.orig/debian/yq-2.14.0/yq/loader.py
+++ yq-2.14.0/debian/yq-2.14.0/yq/loader.py
@@ -0,0 +1,89 @@
+from base64 import b64encode
+from hashlib import sha224
+
+import yaml
+from yaml.tokens import (AliasToken, AnchorToken, ScalarToken, FlowMappingStartToken, FlowMappingEndToken, KeyToken,
+                         ValueToken)
+try:
+    from yaml import CSafeLoader as default_loader
+except ImportError:
+    from yaml import SafeLoader as default_loader
+
+def hash_key(key):
+    return b64encode(sha224(key.encode() if isinstance(key, str) else key).digest()).decode()
+
+
+class CustomLoader(yaml.SafeLoader):
+    expand_aliases = False
+
+    def emit_yq_kv(self, key, value, original_token):
+        marks = dict(start_mark=original_token.start_mark, end_mark=original_token.end_mark)
+        self.tokens.append(FlowMappingStartToken(**marks))
+        self.tokens.append(KeyToken(**marks))
+        self.tokens.append(ScalarToken(value=key, plain=True, **marks))
+        self.tokens.append(ValueToken(**marks))
+        self.tokens.append(ScalarToken(value=value, plain=True, **marks))
+        self.tokens.append(FlowMappingEndToken(**marks))
+
+    def fetch_alias(self):
+        if self.expand_aliases:
+            return super().fetch_alias()
+        self.save_possible_simple_key()
+        self.allow_simple_key = False
+        alias_token = self.scan_anchor(AliasToken)
+        self.emit_yq_kv("__yq_alias__", alias_token.value, original_token=alias_token)
+
+    def fetch_anchor(self):
+        if self.expand_aliases:
+            return super().fetch_anchor()
+        self.save_possible_simple_key()
+        self.allow_simple_key = False
+        anchor_token = self.scan_anchor(AnchorToken)  # noqa: F841
+        # self.emit_yq_kv("__yq_anchor__", anchor_token.value, original_token=anchor_token)
+
+def get_loader(use_annotations=False, expand_aliases=True):
+    def construct_sequence(loader, node):
+        annotations = []
+        for i, v_node in enumerate(node.value):
+            if not use_annotations:
+                break
+            if v_node.tag and v_node.tag.startswith("!") and not v_node.tag.startswith("!!") and len(v_node.tag) > 1:
+                annotations.append("__yq_tag_{}_{}__".format(i, v_node.tag))
+            if isinstance(v_node, yaml.nodes.ScalarNode) and v_node.style:
+                annotations.append("__yq_style_{}_{}__".format(i, v_node.style))
+            elif isinstance(v_node, (yaml.nodes.SequenceNode, yaml.nodes.MappingNode)) and v_node.flow_style is True:
+                annotations.append("__yq_style_{}_{}__".format(i, "flow"))
+        return [loader.construct_object(i) for i in node.value] + annotations
+
+    def construct_mapping(loader, node):
+        loader.flatten_mapping(node)  # TODO: is this needed?
+        pairs = []
+        for k_node, v_node in node.value:
+            key = loader.construct_object(k_node)
+            value = loader.construct_object(v_node)
+            pairs.append((key, value))
+            if not (use_annotations and isinstance(key, (str, bytes))):
+                continue
+            if v_node.tag and v_node.tag.startswith("!") and not v_node.tag.startswith("!!") and len(v_node.tag) > 1:
+                pairs.append(("__yq_tag_{}__".format(hash_key(key)), v_node.tag))
+            if isinstance(v_node, yaml.nodes.ScalarNode) and v_node.style:
+                pairs.append(("__yq_style_{}__".format(hash_key(key)), v_node.style))
+            elif isinstance(v_node, (yaml.nodes.SequenceNode, yaml.nodes.MappingNode)) and v_node.flow_style is True:
+                pairs.append(("__yq_style_{}__".format(hash_key(key)), "flow"))
+        return dict(pairs)
+
+    def parse_unknown_tags(loader, tag_suffix, node):
+        if isinstance(node, yaml.nodes.ScalarNode):
+            return loader.construct_scalar(node)
+        elif isinstance(node, yaml.nodes.SequenceNode):
+            return construct_sequence(loader, node)
+        elif isinstance(node, yaml.nodes.MappingNode):
+            return construct_mapping(loader, node)
+
+    loader_class = default_loader if expand_aliases else CustomLoader
+    loader_class.add_constructor(yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, construct_mapping)
+    loader_class.add_constructor(yaml.resolver.BaseResolver.DEFAULT_SEQUENCE_TAG, construct_sequence)
+    loader_class.add_multi_constructor('', parse_unknown_tags)
+    loader_class.yaml_constructors.pop("tag:yaml.org,2002:binary", None)
+    loader_class.yaml_constructors.pop("tag:yaml.org,2002:set", None)
+    return loader_class
--- yq-2.14.0.orig/debian/yq-2.14.0/yq/parser.py
+++ yq-2.14.0/debian/yq-2.14.0/yq/parser.py
@@ -0,0 +1,86 @@
+from __future__ import absolute_import, division, print_function, unicode_literals
+
+import sys, argparse, subprocess
+
+try:
+    from .version import version as __version__
+except ImportError:
+    __version__ = "0.0.0"
+
+# jq arguments that consume positionals must be listed here to avoid our parser mistaking them for our positionals
+jq_arg_spec = {"--indent": 1, "-f": 1, "--from-file": 1, "-L": 1, "--arg": 2, "--argjson": 2, "--slurpfile": 2,
+               "--argfile": 2, "--rawfile": 2, "--args": argparse.REMAINDER, "--jsonargs": argparse.REMAINDER}
+
+class Parser(argparse.ArgumentParser):
+    def print_help(self):
+        yq_help = argparse.ArgumentParser.format_help(self).splitlines()
+        print("\n".join(["usage: {} [options] <jq filter> [input file...]".format(self.prog)] + yq_help[2:] + [""]))
+        sys.stdout.flush()
+        try:
+            subprocess.check_call(["jq", "--help"])
+        except Exception:
+            pass
+
+def get_parser(program_name, description):
+    # By default suppress these help strings and only enable them in the specific programs.
+    yaml_output_help, yaml_roundtrip_help, width_help, indentless_help = (argparse.SUPPRESS, argparse.SUPPRESS,
+                                                                          argparse.SUPPRESS, argparse.SUPPRESS)
+    xml_output_help, xml_dtd_help, xml_root_help, xml_force_list_help = (argparse.SUPPRESS, argparse.SUPPRESS,
+                                                                         argparse.SUPPRESS, argparse.SUPPRESS)
+    toml_output_help = argparse.SUPPRESS
+
+    if program_name == "yq":
+        current_language = "YAML"
+        yaml_output_help = "Transcode jq JSON output back into YAML and emit it"
+        yaml_roundtrip_help = ("Transcode jq JSON output back into YAML and emit it. "
+                               "Preserve YAML tags and styles by representing them as extra items "
+                               "in their enclosing mappings and sequences while in JSON. This option "
+                               "is incompatible with jq filters that do not expect these extra items.")
+        width_help = "When using --yaml-output, specify string wrap width"
+        indentless_help = ("When using --yaml-output, indent block style lists (sequences) "
+                           "with 0 spaces instead of 2")
+    elif program_name == "xq":
+        current_language = "XML"
+        xml_output_help = "Transcode jq JSON output back into XML and emit it"
+        xml_dtd_help = "Preserve XML Document Type Definition (disables streaming of multiple docs)"
+        xml_root_help = "When transcoding back to XML, envelope the output in an element with this name"
+        xml_force_list_help = ("Tag name to pass to force_list parameter of xmltodict.parse(). "
+                               "Can be used multiple times.")
+    elif program_name == "tomlq":
+        current_language = "TOML"
+        toml_output_help = "Transcode jq JSON output back into TOML and emit it"
+    else:
+        raise Exception("Unknown program name")
+
+    description = description.replace("yq", program_name).replace("YAML", current_language)
+    parser_args = dict(prog=program_name, description=description, formatter_class=argparse.RawTextHelpFormatter)
+    if sys.version_info >= (3, 5):
+        parser_args.update(allow_abbrev=False)  # required to disambiguate options listed in jq_arg_spec
+    parser = Parser(**parser_args)
+    parser.add_argument("--output-format", default="json", help=argparse.SUPPRESS)
+    parser.add_argument("--yaml-output", "--yml-output", "-y", dest="output_format", action="store_const", const="yaml",
+                        help=yaml_output_help)
+    parser.add_argument("--yaml-roundtrip", "--yml-roundtrip", "-Y", dest="output_format", action="store_const",
+                        const="annotated_yaml", help=yaml_roundtrip_help)
+    parser.add_argument("--width", "-w", type=int, help=width_help)
+    parser.add_argument("--indentless-lists", "--indentless", action="store_true", help=indentless_help)
+    parser.add_argument("--explicit-start", action="store_true", help=argparse.SUPPRESS)
+    parser.add_argument("--explicit-end", action="store_true", help=argparse.SUPPRESS)
+    parser.add_argument("--no-expand-aliases", action="store_false", dest="expand_aliases", help=argparse.SUPPRESS)
+    parser.add_argument("--max-expansion-factor", type=int, default=1024, help=argparse.SUPPRESS)
+    parser.add_argument("--xml-output", "-x", dest="output_format", action="store_const", const="xml",
+                        help=xml_output_help)
+    parser.add_argument("--xml-dtd", action="store_true", help=xml_dtd_help)
+    parser.add_argument("--xml-root", help=xml_root_help)
+    parser.add_argument("--xml-force-list", action="append", help=xml_force_list_help)
+    parser.add_argument("--toml-output", "-t", dest="output_format", action="store_const", const="toml",
+                        help=toml_output_help)
+    parser.add_argument("--in-place", "-i", action="store_true", help="Edit files in place (no backup - use caution)")
+    parser.add_argument("--version", action="version", version="%(prog)s {version}".format(version=__version__))
+
+    for arg in jq_arg_spec:
+        parser.add_argument(arg, nargs=jq_arg_spec[arg], dest=arg, action="append", help=argparse.SUPPRESS)
+
+    parser.add_argument("jq_filter", nargs="?")
+    parser.add_argument("input_streams", nargs="*", type=argparse.FileType(), metavar="files", default=[])
+    return parser
--- yq-2.14.0.orig/debian/yq-2.14.0/yq/version.py
+++ yq-2.14.0/debian/yq-2.14.0/yq/version.py
@@ -0,0 +1,5 @@
+# coding: utf-8
+# file generated by setuptools_scm
+# don't change, don't track in version control
+version = '2.14.0'
+version_tuple = (2, 14, 0)
--- yq-2.14.0.orig/yq/version.py
+++ yq-2.14.0/yq/version.py
@@ -2,4 +2,3 @@
 # file generated by setuptools_scm
 # don't change, don't track in version control
 version = '2.14.0'
-version_tuple = (2, 14, 0)
