galaxy-commits
Threads by month
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
February 2016
- 2 participants
- 135 discussions
[galaxyproject/galaxy] 06e52c: Drop python2.6 (deprecated, will not be supported ...
by GitHub 25 Feb '16
by GitHub 25 Feb '16
25 Feb '16
Branch: refs/heads/dev
Home: https://github.com/galaxyproject/galaxy
Commit: 06e52c0129581f7ed4691bc6790eb2418c20c366
https://github.com/galaxyproject/galaxy/commit/06e52c0129581f7ed4691bc6790e…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-02-23 (Tue, 23 Feb 2016)
Changed paths:
M .travis.yml
M tox.ini
Log Message:
-----------
Drop python2.6 (deprecated, will not be supported in 16.04) from testing.
Commit: 70a96dd79e4e3479def3e9072d6d0e5076357fc8
https://github.com/galaxyproject/galaxy/commit/70a96dd79e4e3479def3e9072d6d…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-02-25 (Thu, 25 Feb 2016)
Changed paths:
M .travis.yml
M tox.ini
Log Message:
-----------
Merge pull request #1785 from dannon/26_deprecated
Drop python2.6 (deprecated, will not be supported in 16.04) from test…
Compare: https://github.com/galaxyproject/galaxy/compare/874540e9120d...70a96dd79e4e
1
0
Branch: refs/heads/dev
Home: https://github.com/galaxyproject/galaxy
Commit: 87d6467812ff1025955006db1554b3b433b544f5
https://github.com/galaxyproject/galaxy/commit/87d6467812ff1025955006db1554…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2016-02-25 (Thu, 25 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
Log Message:
-----------
Fix unused import.
Commit: 874540e9120d33595f6a64ba34a8fcc94481fb50
https://github.com/galaxyproject/galaxy/commit/874540e9120d33595f6a64ba34a8…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-02-25 (Thu, 25 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
Log Message:
-----------
Merge pull request #1796 from nsoranzo/lint_fix
Fix unused import.
Compare: https://github.com/galaxyproject/galaxy/compare/b14e35f48ba8...874540e9120d
1
0
3 new commits in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/ccabdd21cb20/
Changeset: ccabdd21cb20
Branch: release_16.01
User: natefoo
Date: 2016-02-25 02:33:13+00:00
Summary: Update Tags
Affected #: 1 file
diff -r 0079d3c5a85d4f5316a41628a2669c442ead02c4 -r ccabdd21cb20e9d84120dbd1fb85d8c8af881158 .hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -20,18 +20,26 @@
ca45b78adb4152fc6e7395514d46eba6b7d0b838 release_2014.08.11
6d6d7f8b321725a21a96ce21e7d18a3a66f7b72e latest_2014.08.11
2092948937ac30ef82f71463a235c66d34987088 release_2014.10.06
-92a6a3da997408ae10e9085e6ebcd83ef0b5826c latest_2014.10.06
+a94b3a97ed7ae6672c9b1dc87922f7e9f2a70860 latest_2014.10.06
+a94b3a97ed7ae6672c9b1dc87922f7e9f2a70860 v14.10.3
2e8dd2949dd3eee0f56f9a3a5ebf1b2baca24aee release_2015.01.13
-6ee7fe93e76d91919d43a3ef2984e182601b82d7 latest_2015.01.13
+7ca8f0ecb2ae8b1ba2b53e1fd09ccae481940a49 latest_2015.01.13
+7ca8f0ecb2ae8b1ba2b53e1fd09ccae481940a49 v15.01.4
738f4ad0eb62d5e4bcf0d22a2722ee6c570382b9 v15.03
9f40ff3e3fe1f7fed7e055d4269fe83199cf5ed2 v15.03.1
bfd4635011e39aa210b2b1498dd65831dd2a365e v15.03.2
ec735da377ca3badbb6c8bf8a60b3909d2333f9b v15.03.3
-ec735da377ca3badbb6c8bf8a60b3909d2333f9b latest_15.03
+7ddb41dcb2b2e4d3a6f834d3dd11426f26fb7902 v15.03.4
+7ddb41dcb2b2e4d3a6f834d3dd11426f26fb7902 latest_15.03
c3cef260df887330c6da902caf8a5f068b9d29b4 v15.05
403973a6b841888e1a920eac266087703af53718 v15.05.1
-403973a6b841888e1a920eac266087703af53718 latest_15.05
+6c2fd7bddc6c1c4e8a64093f3fc4c4370f515b4e v15.05.2
+6c2fd7bddc6c1c4e8a64093f3fc4c4370f515b4e latest_15.05
0994712eb599fb98f63816bd9278946066784c4d v15.07
-0994712eb599fb98f63816bd9278946066784c4d latest_15.07
+034cb0fb87dfc2ae56de1072a45a68189797e979 v15.07.1
+034cb0fb87dfc2ae56de1072a45a68189797e979 latest_15.07
37d665ba001b780e08977a1faa310a651e4875db v15.10
-37d665ba001b780e08977a1faa310a651e4875db latest_15.10
+36c05261343412370f9e44f4bdd4b1e19a97aa55 v15.10.2
+36c05261343412370f9e44f4bdd4b1e19a97aa55 latest_15.10
+0079d3c5a85d4f5316a41628a2669c442ead02c4 v16.01
+0079d3c5a85d4f5316a41628a2669c442ead02c4 latest_16.01
https://bitbucket.org/galaxy/galaxy-central/commits/e9926c3b0a23/
Changeset: e9926c3b0a23
Branch: stable
User: natefoo
Date: 2016-02-25 02:33:32+00:00
Summary: Merge release_16.01 to stable
Affected #: 1 file
diff -r b3337bd87fe5c76ab37211f4daaa15a053e8e0b3 -r e9926c3b0a23b051ba96a54306da46aad263b119 .hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -20,18 +20,26 @@
ca45b78adb4152fc6e7395514d46eba6b7d0b838 release_2014.08.11
6d6d7f8b321725a21a96ce21e7d18a3a66f7b72e latest_2014.08.11
2092948937ac30ef82f71463a235c66d34987088 release_2014.10.06
-92a6a3da997408ae10e9085e6ebcd83ef0b5826c latest_2014.10.06
+a94b3a97ed7ae6672c9b1dc87922f7e9f2a70860 latest_2014.10.06
+a94b3a97ed7ae6672c9b1dc87922f7e9f2a70860 v14.10.3
2e8dd2949dd3eee0f56f9a3a5ebf1b2baca24aee release_2015.01.13
-6ee7fe93e76d91919d43a3ef2984e182601b82d7 latest_2015.01.13
+7ca8f0ecb2ae8b1ba2b53e1fd09ccae481940a49 latest_2015.01.13
+7ca8f0ecb2ae8b1ba2b53e1fd09ccae481940a49 v15.01.4
738f4ad0eb62d5e4bcf0d22a2722ee6c570382b9 v15.03
9f40ff3e3fe1f7fed7e055d4269fe83199cf5ed2 v15.03.1
bfd4635011e39aa210b2b1498dd65831dd2a365e v15.03.2
ec735da377ca3badbb6c8bf8a60b3909d2333f9b v15.03.3
-ec735da377ca3badbb6c8bf8a60b3909d2333f9b latest_15.03
+7ddb41dcb2b2e4d3a6f834d3dd11426f26fb7902 v15.03.4
+7ddb41dcb2b2e4d3a6f834d3dd11426f26fb7902 latest_15.03
c3cef260df887330c6da902caf8a5f068b9d29b4 v15.05
403973a6b841888e1a920eac266087703af53718 v15.05.1
-403973a6b841888e1a920eac266087703af53718 latest_15.05
+6c2fd7bddc6c1c4e8a64093f3fc4c4370f515b4e v15.05.2
+6c2fd7bddc6c1c4e8a64093f3fc4c4370f515b4e latest_15.05
0994712eb599fb98f63816bd9278946066784c4d v15.07
-0994712eb599fb98f63816bd9278946066784c4d latest_15.07
+034cb0fb87dfc2ae56de1072a45a68189797e979 v15.07.1
+034cb0fb87dfc2ae56de1072a45a68189797e979 latest_15.07
37d665ba001b780e08977a1faa310a651e4875db v15.10
-37d665ba001b780e08977a1faa310a651e4875db latest_15.10
+36c05261343412370f9e44f4bdd4b1e19a97aa55 v15.10.2
+36c05261343412370f9e44f4bdd4b1e19a97aa55 latest_15.10
+0079d3c5a85d4f5316a41628a2669c442ead02c4 v16.01
+0079d3c5a85d4f5316a41628a2669c442ead02c4 latest_16.01
https://bitbucket.org/galaxy/galaxy-central/commits/3f95c21b1a85/
Changeset: 3f95c21b1a85
User: natefoo
Date: 2016-02-25 02:33:44+00:00
Summary: Merge stable to default
Affected #: 1 file
diff -r a601b5dfeea28d200985b5af87e3e0202be6b125 -r 3f95c21b1a85af3ae1260eb957ea041d1de8bd5b .hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -20,18 +20,26 @@
ca45b78adb4152fc6e7395514d46eba6b7d0b838 release_2014.08.11
6d6d7f8b321725a21a96ce21e7d18a3a66f7b72e latest_2014.08.11
2092948937ac30ef82f71463a235c66d34987088 release_2014.10.06
-92a6a3da997408ae10e9085e6ebcd83ef0b5826c latest_2014.10.06
+a94b3a97ed7ae6672c9b1dc87922f7e9f2a70860 latest_2014.10.06
+a94b3a97ed7ae6672c9b1dc87922f7e9f2a70860 v14.10.3
2e8dd2949dd3eee0f56f9a3a5ebf1b2baca24aee release_2015.01.13
-6ee7fe93e76d91919d43a3ef2984e182601b82d7 latest_2015.01.13
+7ca8f0ecb2ae8b1ba2b53e1fd09ccae481940a49 latest_2015.01.13
+7ca8f0ecb2ae8b1ba2b53e1fd09ccae481940a49 v15.01.4
738f4ad0eb62d5e4bcf0d22a2722ee6c570382b9 v15.03
9f40ff3e3fe1f7fed7e055d4269fe83199cf5ed2 v15.03.1
bfd4635011e39aa210b2b1498dd65831dd2a365e v15.03.2
ec735da377ca3badbb6c8bf8a60b3909d2333f9b v15.03.3
-ec735da377ca3badbb6c8bf8a60b3909d2333f9b latest_15.03
+7ddb41dcb2b2e4d3a6f834d3dd11426f26fb7902 v15.03.4
+7ddb41dcb2b2e4d3a6f834d3dd11426f26fb7902 latest_15.03
c3cef260df887330c6da902caf8a5f068b9d29b4 v15.05
403973a6b841888e1a920eac266087703af53718 v15.05.1
-403973a6b841888e1a920eac266087703af53718 latest_15.05
+6c2fd7bddc6c1c4e8a64093f3fc4c4370f515b4e v15.05.2
+6c2fd7bddc6c1c4e8a64093f3fc4c4370f515b4e latest_15.05
0994712eb599fb98f63816bd9278946066784c4d v15.07
-0994712eb599fb98f63816bd9278946066784c4d latest_15.07
+034cb0fb87dfc2ae56de1072a45a68189797e979 v15.07.1
+034cb0fb87dfc2ae56de1072a45a68189797e979 latest_15.07
37d665ba001b780e08977a1faa310a651e4875db v15.10
-37d665ba001b780e08977a1faa310a651e4875db latest_15.10
+36c05261343412370f9e44f4bdd4b1e19a97aa55 v15.10.2
+36c05261343412370f9e44f4bdd4b1e19a97aa55 latest_15.10
+0079d3c5a85d4f5316a41628a2669c442ead02c4 v16.01
+0079d3c5a85d4f5316a41628a2669c442ead02c4 latest_16.01
Repository URL: https://bitbucket.org/galaxy/galaxy-central/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
1
0
Branch: refs/heads/master
Home: https://github.com/galaxyproject/galaxy
Commit: 76bcfaa0ff85fe996ee2afccfb85e01f154e75b3
https://github.com/galaxyproject/galaxy/commit/76bcfaa0ff85fe996ee2afccfb85…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-11-07 (Sat, 07 Nov 2015)
Changed paths:
M client/galaxy/scripts/galaxy-app-base.js
M client/galaxy/scripts/mvc/form/form-parameters.js
M client/galaxy/scripts/mvc/form/form-repeat.js
M client/galaxy/scripts/mvc/form/form-select-content.js
M client/galaxy/scripts/mvc/form/form-view.js
M client/galaxy/scripts/mvc/tools/tools-form-base.js
M client/galaxy/scripts/mvc/tools/tools-form-workflow.js
M client/galaxy/scripts/mvc/tools/tools-jobs.js
M client/galaxy/scripts/utils/deferred.js
M client/galaxy/scripts/utils/uploadbox.js
M static/maps/galaxy-app-base.js.map
M static/maps/mvc/form/form-parameters.js.map
M static/maps/mvc/form/form-repeat.js.map
M static/maps/mvc/form/form-select-content.js.map
M static/maps/mvc/form/form-view.js.map
M static/maps/mvc/tools/tools-form-base.js.map
M static/maps/mvc/tools/tools-form-workflow.js.map
M static/maps/mvc/tools/tools-jobs.js.map
M static/maps/utils/deferred.js.map
M static/maps/utils/uploadbox.js.map
M static/scripts/galaxy-app-base.js
M static/scripts/mvc/form/form-parameters.js
M static/scripts/mvc/form/form-repeat.js
M static/scripts/mvc/form/form-select-content.js
M static/scripts/mvc/form/form-view.js
M static/scripts/mvc/tools/tools-form-base.js
M static/scripts/mvc/tools/tools-form-workflow.js
M static/scripts/mvc/tools/tools-jobs.js
M static/scripts/utils/deferred.js
M static/scripts/utils/uploadbox.js
Log Message:
-----------
Fix log comments
Use emit
Fix namespace
Fix namespace
Remove empty line
Check if logger exists
Fix comment
Redo
More
Fix yet another log
Fix statements
More fixes
Move emitter
Commit: c36ff5bcc7e840289e1d6c10610ac1dd90ddee19
https://github.com/galaxyproject/galaxy/commit/c36ff5bcc7e840289e1d6c10610a…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2015-11-07 (Sat, 07 Nov 2015)
Changed paths:
A scripts/check_eggs.py
A scripts/fetch_eggs.py
Log Message:
-----------
Merge pull request #1037 from natefoo/smash-eggs-bugfix1
Add stub fetch_eggs.py/check_eggs.py
Commit: dc534bb258d7a9aaf262784acdb9893339ca43c0
https://github.com/galaxyproject/galaxy/commit/dc534bb258d7a9aaf262784acdb9…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-09 (Mon, 09 Nov 2015)
Changed paths:
M client/galaxy/scripts/mvc/collection/list-of-pairs-collection-creator.js
M lib/galaxy/web/framework/webapp.py
M static/maps/mvc/collection/list-of-pairs-collection-creator.js.map
M static/scripts/mvc/collection/list-of-pairs-collection-creator.js
M tools/stats/gsummary.py
Log Message:
-----------
Merge branch 'release_15.10' into dev
Conflicts:
client/galaxy/scripts/mvc/grid/grid-view.js
static/maps/mvc/collection/list-of-pairs-collection-creator.js.map
static/scripts/mvc/collection/list-of-pairs-collection-creator.js
Commit: daccea42bdbd545e6ed9d91bd4685036b95410a8
https://github.com/galaxyproject/galaxy/commit/daccea42bdbd545e6ed9d91bd468…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-11-09 (Mon, 09 Nov 2015)
Changed paths:
M client/galaxy/scripts/galaxy-app-base.js
M client/galaxy/scripts/mvc/form/form-parameters.js
M client/galaxy/scripts/mvc/form/form-repeat.js
M client/galaxy/scripts/mvc/form/form-select-content.js
M client/galaxy/scripts/mvc/form/form-view.js
M client/galaxy/scripts/mvc/tools/tools-form-base.js
M client/galaxy/scripts/mvc/tools/tools-form-workflow.js
M client/galaxy/scripts/mvc/tools/tools-jobs.js
M client/galaxy/scripts/utils/deferred.js
M client/galaxy/scripts/utils/uploadbox.js
M static/maps/galaxy-app-base.js.map
M static/maps/mvc/form/form-parameters.js.map
M static/maps/mvc/form/form-repeat.js.map
M static/maps/mvc/form/form-select-content.js.map
M static/maps/mvc/form/form-view.js.map
M static/maps/mvc/tools/tools-form-base.js.map
M static/maps/mvc/tools/tools-form-workflow.js.map
M static/maps/mvc/tools/tools-jobs.js.map
M static/maps/utils/deferred.js.map
M static/maps/utils/uploadbox.js.map
M static/scripts/galaxy-app-base.js
M static/scripts/mvc/form/form-parameters.js
M static/scripts/mvc/form/form-repeat.js
M static/scripts/mvc/form/form-select-content.js
M static/scripts/mvc/form/form-view.js
M static/scripts/mvc/tools/tools-form-base.js
M static/scripts/mvc/tools/tools-form-workflow.js
M static/scripts/mvc/tools/tools-jobs.js
M static/scripts/utils/deferred.js
M static/scripts/utils/uploadbox.js
Log Message:
-----------
Merge pull request #1040 from guerler/revise_logging_000
Fix log statements and link to logger
Commit: 2934c2f3bd2aba6bad02d18f687b4410362738ed
https://github.com/galaxyproject/galaxy/commit/2934c2f3bd2aba6bad02d18f687b…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-09 (Mon, 09 Nov 2015)
Changed paths:
M tools/stats/gsummary.py
Log Message:
-----------
Lint fix for 15.10 to dev merge.
Commit: 9c35d35c52eca6638e25459293ac9a28e40f9d63
https://github.com/galaxyproject/galaxy/commit/9c35d35c52eca6638e25459293ac…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-09 (Mon, 09 Nov 2015)
Changed paths:
R client/galaxy/scripts/galaxy.base.js
M client/galaxy/scripts/galaxy.masthead.js
R client/galaxy/scripts/galaxy.panels.js
M client/galaxy/scripts/mvc/app/app-view.js
A client/galaxy/scripts/onload.js
A client/galaxy/scripts/panel.js
M client/galaxy/scripts/ui/autocom_tagging.js
M client/galaxy/scripts/viz/trackster/tracks.js
M client/galaxy/scripts/viz/trackster/util.js
M client/webpack.config.js
R static/maps/galaxy.base.js.map
R static/maps/galaxy.panels.js.map
M static/maps/mvc/app/app-view.js.map
A static/maps/onload.js.map
A static/maps/panel.js.map
M static/maps/ui/autocom_tagging.js.map
M static/maps/viz/trackster/tracks.js.map
M static/maps/viz/trackster/util.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/galaxy.bundled.js
M static/scripts/bundled/galaxy.bundled.js.map
R static/scripts/galaxy.base.js
R static/scripts/galaxy.panels.js
M static/scripts/mvc/app/app-view.js
A static/scripts/onload.js
A static/scripts/panel.js
M static/scripts/ui/autocom_tagging.js
M static/scripts/viz/trackster/util.js
Log Message:
-----------
Webpack: make autocom_tagging into a module, export commatize, rename galaxy.base to onload and galaxy.panels to panels
Commit: d4ca44c898d173b9a32c3bdc7c7cce313ecbfa73
https://github.com/galaxyproject/galaxy/commit/d4ca44c898d173b9a32c3bdc7c7c…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-09 (Mon, 09 Nov 2015)
Changed paths:
M lib/galaxy/dependencies/__init__.py
M lib/galaxy/dependencies/conditional-requirements.txt
Log Message:
-----------
Add pygments back, since it's a dependency of a conditional dependency.
Commit: 063390097e23e0f9c8d956ca8a4e493e41b3b38b
https://github.com/galaxyproject/galaxy/commit/063390097e23e0f9c8d956ca8a4e…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-09 (Mon, 09 Nov 2015)
Changed paths:
M .ci/flake8_wrapper.sh
M client/galaxy/scripts/galaxy-app-base.js
M client/galaxy/scripts/galaxy.panels.js
M client/galaxy/scripts/libs/jquery/select2.js
M client/galaxy/scripts/mvc/app/app-analysis.js
M client/galaxy/scripts/mvc/app/app-view.js
M client/galaxy/scripts/mvc/base-mvc.js
M client/galaxy/scripts/mvc/citation/citation-model.js
M client/galaxy/scripts/mvc/collection/collection-li-edit.js
M client/galaxy/scripts/mvc/collection/collection-li.js
M client/galaxy/scripts/mvc/collection/collection-model.js
M client/galaxy/scripts/mvc/collection/collection-panel.js
M client/galaxy/scripts/mvc/collection/list-collection-creator.js
M client/galaxy/scripts/mvc/collection/list-of-pairs-collection-creator.js
M client/galaxy/scripts/mvc/collection/pair-collection-creator.js
M client/galaxy/scripts/mvc/dataset/dataset-choice.js
M client/galaxy/scripts/mvc/dataset/dataset-li.js
M client/galaxy/scripts/mvc/dataset/dataset-list.js
M client/galaxy/scripts/mvc/dataset/dataset-model.js
M client/galaxy/scripts/mvc/form/form-parameters.js
M client/galaxy/scripts/mvc/form/form-repeat.js
M client/galaxy/scripts/mvc/form/form-select-content.js
M client/galaxy/scripts/mvc/form/form-view.js
M client/galaxy/scripts/mvc/grid/grid-template.js
M client/galaxy/scripts/mvc/history/history-content-model.js
M client/galaxy/scripts/mvc/history/history-contents.js
M client/galaxy/scripts/mvc/history/history-model.js
M client/galaxy/scripts/mvc/history/history-panel.js
M client/galaxy/scripts/mvc/history/history-structure-view.js
M client/galaxy/scripts/mvc/history/multi-panel.js
M client/galaxy/scripts/mvc/job/job-model.js
M client/galaxy/scripts/mvc/list/list-item.js
M client/galaxy/scripts/mvc/list/list-panel.js
M client/galaxy/scripts/mvc/tags.js
M client/galaxy/scripts/mvc/tools/tools-form-base.js
M client/galaxy/scripts/mvc/tools/tools-form-workflow.js
M client/galaxy/scripts/mvc/tools/tools-jobs.js
M client/galaxy/scripts/mvc/ui/ui-select-default.js
M client/galaxy/scripts/mvc/upload/upload-button.js
M client/galaxy/scripts/mvc/user/user-model.js
M client/galaxy/scripts/mvc/user/user-quotameter.js
M client/galaxy/scripts/mvc/visualization/visualization-model.js
M client/galaxy/scripts/templates/compiled/tool_link.js
M client/galaxy/scripts/templates/tool_link.handlebars
M client/galaxy/scripts/utils/add-logging.js
M client/galaxy/scripts/utils/deferred.js
M client/galaxy/scripts/utils/metrics-logger.js
M client/galaxy/scripts/utils/uploadbox.js
M client/galaxy/style/less/base.less
M client/galaxy/style/less/bootstrap.less
M client/galaxy/style/less/ui.less
M client/galaxy/style/less/upload.less
M config/plugins/visualizations/charts/static/build-app.js
M config/plugins/visualizations/charts/static/charts/jqplot/boxplot/wrapper.js
M config/plugins/visualizations/charts/static/charts/nvd3/pie/wrapper.js
M config/plugins/visualizations/charts/static/charts/tools.js
M config/plugins/visualizations/charts/static/views/group.js
M config/plugins/visualizations/charts/static/views/viewport.js
M lib/galaxy/app.py
M lib/galaxy/config.py
M lib/galaxy/dependencies/__init__.py
M lib/galaxy/dependencies/conditional-requirements.txt
M lib/galaxy/dependencies/requirements.txt
M lib/galaxy/model/__init__.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/search/__init__.py
M lib/galaxy/tools/toolbox/base.py
M lib/galaxy/util/__init__.py
M lib/galaxy/webapps/galaxy/api/library_contents.py
M lib/galaxy/webapps/galaxy/controllers/requests_common.py
M lib/galaxy/webapps/reports/app.py
M lib/galaxy/webapps/tool_shed/app.py
M lib/galaxy/webapps/tool_shed/framework/middleware/hg.py
M lib/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/step_handler.py
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/tag_handler.py
M lib/tool_shed/galaxy_install/tool_migration_manager.py
M lib/tool_shed/util/common_util.py
M lib/tool_shed/util/hg_util.py
M run.sh
A scripts/check_eggs.py
A scripts/fetch_eggs.py
M static/maps/galaxy-app-base.js.map
M static/maps/libs/jquery/select2.js.map
M static/maps/mvc/app/app-analysis.js.map
M static/maps/mvc/app/app-view.js.map
M static/maps/mvc/base-mvc.js.map
M static/maps/mvc/citation/citation-model.js.map
M static/maps/mvc/collection/collection-model.js.map
M static/maps/mvc/collection/collection-panel.js.map
M static/maps/mvc/collection/list-collection-creator.js.map
M static/maps/mvc/collection/list-of-pairs-collection-creator.js.map
M static/maps/mvc/collection/pair-collection-creator.js.map
M static/maps/mvc/dataset/dataset-choice.js.map
M static/maps/mvc/dataset/dataset-li.js.map
M static/maps/mvc/dataset/dataset-list.js.map
M static/maps/mvc/dataset/dataset-model.js.map
M static/maps/mvc/form/form-parameters.js.map
M static/maps/mvc/form/form-repeat.js.map
M static/maps/mvc/form/form-select-content.js.map
M static/maps/mvc/form/form-view.js.map
M static/maps/mvc/grid/grid-template.js.map
M static/maps/mvc/history/history-content-model.js.map
M static/maps/mvc/history/history-contents.js.map
M static/maps/mvc/history/history-model.js.map
M static/maps/mvc/history/history-panel.js.map
M static/maps/mvc/history/history-structure-view.js.map
M static/maps/mvc/history/multi-panel.js.map
M static/maps/mvc/job/job-model.js.map
M static/maps/mvc/list/list-item.js.map
M static/maps/mvc/list/list-panel.js.map
M static/maps/mvc/tags.js.map
M static/maps/mvc/tools/tools-form-base.js.map
M static/maps/mvc/tools/tools-form-workflow.js.map
M static/maps/mvc/tools/tools-jobs.js.map
M static/maps/mvc/ui/ui-select-default.js.map
M static/maps/mvc/upload/upload-button.js.map
M static/maps/mvc/user/user-model.js.map
M static/maps/mvc/user/user-quotameter.js.map
M static/maps/mvc/visualization/visualization-model.js.map
M static/maps/templates/compiled/tool_link.js.map
M static/maps/utils/add-logging.js.map
M static/maps/utils/deferred.js.map
M static/maps/utils/metrics-logger.js.map
M static/maps/utils/uploadbox.js.map
M static/scripts/galaxy-app-base.js
M static/scripts/galaxy.panels.js
M static/scripts/libs/jquery/select2.js
M static/scripts/mvc/app/app-analysis.js
M static/scripts/mvc/base-mvc.js
M static/scripts/mvc/citation/citation-model.js
M static/scripts/mvc/collection/collection-model.js
M static/scripts/mvc/collection/collection-panel.js
M static/scripts/mvc/collection/list-collection-creator.js
M static/scripts/mvc/collection/list-of-pairs-collection-creator.js
M static/scripts/mvc/collection/pair-collection-creator.js
M static/scripts/mvc/dataset/dataset-choice.js
M static/scripts/mvc/dataset/dataset-li.js
M static/scripts/mvc/dataset/dataset-list.js
M static/scripts/mvc/dataset/dataset-model.js
M static/scripts/mvc/form/form-parameters.js
M static/scripts/mvc/form/form-repeat.js
M static/scripts/mvc/form/form-select-content.js
M static/scripts/mvc/form/form-view.js
M static/scripts/mvc/grid/grid-template.js
M static/scripts/mvc/history/history-content-model.js
M static/scripts/mvc/history/history-contents.js
M static/scripts/mvc/history/history-model.js
M static/scripts/mvc/history/history-panel.js
M static/scripts/mvc/history/history-structure-view.js
M static/scripts/mvc/history/multi-panel.js
M static/scripts/mvc/job/job-model.js
M static/scripts/mvc/list/list-item.js
M static/scripts/mvc/list/list-panel.js
M static/scripts/mvc/tools/tools-form-base.js
M static/scripts/mvc/tools/tools-form-workflow.js
M static/scripts/mvc/tools/tools-jobs.js
M static/scripts/mvc/ui/ui-select-default.js
M static/scripts/mvc/upload/upload-button.js
M static/scripts/mvc/user/user-model.js
M static/scripts/mvc/user/user-quotameter.js
M static/scripts/templates/compiled/tool_link.js
M static/scripts/utils/add-logging.js
M static/scripts/utils/deferred.js
M static/scripts/utils/metrics-logger.js
M static/scripts/utils/uploadbox.js
M static/style/blue/base.css
M templates/galaxy_client_app.mako
M test/api/helpers.py
M test/qunit/tests/galaxy-app-base.js
M tools/filters/wig_to_bigwig.xml
Log Message:
-----------
Merge and resolve conflicts
Commit: 649a83c1aa8026160f8d77cb423547ecb76cda28
https://github.com/galaxyproject/galaxy/commit/649a83c1aa8026160f8d77cb4235…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-09 (Mon, 09 Nov 2015)
Changed paths:
M client/galaxy/scripts/galaxy.frame.js
M client/galaxy/scripts/galaxy.masthead.js
M client/galaxy/scripts/galaxy.menu.js
M client/galaxy/scripts/mvc/app/app-view.js
M client/galaxy/style/less/base.less
M lib/galaxy/web/base/controller.py
M lib/galaxy/webapps/galaxy/controllers/root.py
M static/maps/galaxy.frame.js.map
M static/maps/galaxy.masthead.js.map
M static/maps/galaxy.menu.js.map
M static/maps/mvc/app/app-view.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/galaxy.bundled.js
M static/scripts/bundled/galaxy.bundled.js.map
M static/scripts/galaxy.frame.js
M static/scripts/galaxy.masthead.js
M static/scripts/galaxy.menu.js
M static/scripts/mvc/app/app-view.js
M static/style/blue/base.css
M templates/js-app.mako
M templates/webapps/galaxy/galaxy.masthead.mako
Log Message:
-----------
Webpack: (shoulda been 2 sep. commits) re-add minimal DOM for 1,2,3 panel layouts via server-side/js-app.mako, correct noscript tag styling; Instantiate galaxy.frame and galaxy.menu from galaxy.masthead (currently the only user), reverse dependencies in them (masthead imports them), and move GalaxyMastheadTab into galaxy.menu and GalaxyMastheadIcon into galaxy.frame - allowing a single import of galaxy.masthead
Commit: a639b0c996b13d45412115009615af826ca38ed8
https://github.com/galaxyproject/galaxy/commit/a639b0c996b13d45412115009615…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-09 (Mon, 09 Nov 2015)
Changed paths:
R client/galaxy/scripts/galaxy.frame.js
R client/galaxy/scripts/galaxy.masthead.js
R client/galaxy/scripts/galaxy.menu.js
A client/galaxy/scripts/layout/masthead.js
A client/galaxy/scripts/layout/menu.js
A client/galaxy/scripts/layout/panel.js
A client/galaxy/scripts/layout/scratchbook.js
M client/galaxy/scripts/mvc/app/app-view.js
R client/galaxy/scripts/panel.js
M client/webpack.config.js
R static/maps/galaxy.frame.js.map
R static/maps/galaxy.masthead.js.map
R static/maps/galaxy.menu.js.map
A static/maps/layout/masthead.js.map
A static/maps/layout/menu.js.map
A static/maps/layout/panel.js.map
A static/maps/layout/scratchbook.js.map
M static/maps/mvc/app/app-view.js.map
R static/maps/panel.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/galaxy.bundled.js
M static/scripts/bundled/galaxy.bundled.js.map
R static/scripts/galaxy.frame.js
R static/scripts/galaxy.masthead.js
R static/scripts/galaxy.menu.js
A static/scripts/layout/masthead.js
A static/scripts/layout/menu.js
A static/scripts/layout/panel.js
A static/scripts/layout/scratchbook.js
M static/scripts/mvc/app/app-view.js
R static/scripts/panel.js
M templates/webapps/galaxy/galaxy.masthead.mako
Log Message:
-----------
Webpack: move galaxy.masthead and galaxy.menu to layout/masthead and layout/menu, panel to layout/panel, and rename galaxy.frame to layout/scratchbook
Commit: 54382e8c2f0e6a3e54d7968b999708dcb8bd0998
https://github.com/galaxyproject/galaxy/commit/54382e8c2f0e6a3e54d7968b9997…
Author: youri <y.hoogstrate(a)erasmusmc.nl>
Date: 2015-11-09 (Mon, 09 Nov 2015)
Changed paths:
M .gitignore
Log Message:
-----------
Added gitignore rules to ignore custom tool-data
Commit: 1333f803757215a77a988bf211e315744ec00024
https://github.com/galaxyproject/galaxy/commit/1333f803757215a77a988bf211e3…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-10 (Tue, 10 Nov 2015)
Changed paths:
M .gitignore
Log Message:
-----------
Merge pull request #1048 from yhoogstrate/tool_data_gitignore
Added gitignore rules to ignore custom tool-data
Commit: b3d5f80621cc7a450158c472aa4bffa0570fbe6c
https://github.com/galaxyproject/galaxy/commit/b3d5f80621cc7a450158c472aa4b…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-10 (Tue, 10 Nov 2015)
Changed paths:
M lib/galaxy/jobs/__init__.py
M lib/galaxy/jobs/command_factory.py
M lib/galaxy/jobs/runners/__init__.py
M lib/galaxy/jobs/runners/util/job_script/__init__.py
M lib/galaxy/tools/parameters/basic.py
M test/functional/tools/samples_tool_conf.xml
A test/functional/tools/unicode_stream.xml
Log Message:
-----------
Improved unicode handling stdout/stderr/command_line.
Commit: c790fcb84d005025b331b2a9106e7097860a7545
https://github.com/galaxyproject/galaxy/commit/c790fcb84d005025b331b2a9106e…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-10 (Tue, 10 Nov 2015)
Changed paths:
M lib/galaxy/jobs/__init__.py
M lib/galaxy/jobs/output_checker.py
M lib/galaxy/model/__init__.py
Log Message:
-----------
Unify standard error and output trimming and unicoding.
Should be more complete now (were paths for task and jobs where it wasn't be unicodified) and with less duplication. Moved logic into model layer where it probably belongs anyway.
Commit: 6b521a3557bc61e37200cbd4c14dbc037cf9696d
https://github.com/galaxyproject/galaxy/commit/6b521a3557bc61e37200cbd4c14d…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-10 (Tue, 10 Nov 2015)
Changed paths:
M lib/galaxy/model/__init__.py
M test/unit/jobs/test_job_output_checker.py
Log Message:
-----------
Fix failing tests for output checker changes.
Commit: 69dcf36678db48851cb6d820aec85f9fa37ccfbf
https://github.com/galaxyproject/galaxy/commit/69dcf36678db48851cb6d820aec8…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-10 (Tue, 10 Nov 2015)
Changed paths:
M lib/galaxy/jobs/__init__.py
Log Message:
-----------
Fixes for c790fcb84d005025b331b2a9106e7097860a7545.
Thanks to @nsoranzo.
Commit: df576f3d3602cad77ea6829717ea11606bce97c2
https://github.com/galaxyproject/galaxy/commit/df576f3d3602cad77ea6829717ea…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-10 (Tue, 10 Nov 2015)
Changed paths:
M lib/galaxy/jobs/__init__.py
Log Message:
-----------
Remove more unneeded stuff from galaxy.jobs now.
Thanks to @nsoranzo.
Commit: 6dfacb6fe648097c94fb32db2df5e643cdcc45e1
https://github.com/galaxyproject/galaxy/commit/6dfacb6fe648097c94fb32db2df5…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2015-11-10 (Tue, 10 Nov 2015)
Changed paths:
M lib/galaxy/dependencies/__init__.py
M lib/galaxy/dependencies/conditional-requirements.txt
M lib/galaxy/dependencies/requirements.txt
Log Message:
-----------
Merge pull request #1017 from dannon/weberror_downgrade
Downgrade WebError.
Commit: d0751ef80c3074e9f67cde240d4b512e1bc9a445
https://github.com/galaxyproject/galaxy/commit/d0751ef80c3074e9f67cde240d4b…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-10 (Tue, 10 Nov 2015)
Changed paths:
M lib/galaxy/jobs/__init__.py
Log Message:
-----------
Restore lost call.
Caught by @nsoranzo.
Commit: 39ff0e9d767a7a4089546d76b0747d4373ea97c9
https://github.com/galaxyproject/galaxy/commit/39ff0e9d767a7a4089546d76b074…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2015-11-10 (Tue, 10 Nov 2015)
Changed paths:
M client/galaxy/scripts/mvc/collection/list-of-pairs-collection-creator.js
M lib/galaxy/web/framework/webapp.py
M static/maps/mvc/collection/list-of-pairs-collection-creator.js.map
M static/scripts/mvc/collection/list-of-pairs-collection-creator.js
M tools/stats/gsummary.py
Log Message:
-----------
Merge pull request #1044 from jmchilton/release_15.10_to_dev
Bring 15.10 (and 15.07) fixes into dev.
Commit: a956cac4196e0e0c58b45b2efbc79256e4962e0e
https://github.com/galaxyproject/galaxy/commit/a956cac4196e0e0c58b45b2efbc7…
Author: Marius van den Beek <m.vandenbeek(a)gmail.com>
Date: 2015-11-10 (Tue, 10 Nov 2015)
Changed paths:
M client/galaxy/scripts/mvc/library/library-folderrow-view.js
Log Message:
-----------
Fix import of history datasets into library.
Commit: 4f824cb920e36d2b79250bdd327e59a771b4587c
https://github.com/galaxyproject/galaxy/commit/4f824cb920e36d2b79250bdd327e…
Author: Marius van den Beek <m.vandenbeek(a)gmail.com>
Date: 2015-11-10 (Tue, 10 Nov 2015)
Changed paths:
M static/maps/mvc/library/library-folderrow-view.js.map
M static/scripts/mvc/library/library-folderrow-view.js
Log Message:
-----------
Add changed static files.
Commit: 30668fe5344192e7b17f05060062fa330c5496a0
https://github.com/galaxyproject/galaxy/commit/30668fe5344192e7b17f05060062…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2015-11-10 (Tue, 10 Nov 2015)
Changed paths:
M lib/galaxy/web/base/controllers/admin.py
M templates/admin/reload_tool.mako
Log Message:
-----------
Fix for reloading tools that have non-standard tool_ids/versions.
Commit: 3f898677f19d7600648802b1a428ce916dd35e11
https://github.com/galaxyproject/galaxy/commit/3f898677f19d7600648802b1a428…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2015-11-10 (Tue, 10 Nov 2015)
Changed paths:
M lib/galaxy/tools/toolbox/base.py
Log Message:
-----------
HTML escape tool name, id, version, on tool reload message.
Commit: 045832bd8ecd4515d134cb5e05f64d2b7b4e933a
https://github.com/galaxyproject/galaxy/commit/045832bd8ecd4515d134cb5e05f6…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2015-11-10 (Tue, 10 Nov 2015)
Changed paths:
M lib/galaxy/tools/toolbox/base.py
Log Message:
-----------
Also escape tool name, id, version in message when removing tools.
Commit: 75d64893489d56e1a7b80165bacdeb2a8777875c
https://github.com/galaxyproject/galaxy/commit/75d64893489d56e1a7b80165bacd…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-11-10 (Tue, 10 Nov 2015)
Changed paths:
M client/galaxy/scripts/mvc/library/library-folderrow-view.js
M static/maps/mvc/library/library-folderrow-view.js.map
M static/scripts/mvc/library/library-folderrow-view.js
Log Message:
-----------
Merge pull request #1049 from mvdbeek/library_add_from_history
Fix import of history datasets into library.
Commit: 8aab57a09eb322c7f10025ee4518995323fbc637
https://github.com/galaxyproject/galaxy/commit/8aab57a09eb322c7f10025ee4518…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-11 (Wed, 11 Nov 2015)
Changed paths:
M lib/galaxy/jobs/output_checker.py
M lib/galaxy/model/__init__.py
Log Message:
-----------
Fix nit picks unrelated to PR #1052...
... as pointed out by @nsoranzo and @blankenberg.
Commit: 81dc3a955bae39d90f16441dad5a67a708177844
https://github.com/galaxyproject/galaxy/commit/81dc3a955bae39d90f16441dad5a…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2015-11-11 (Wed, 11 Nov 2015)
Changed paths:
M lib/galaxy/webapps/galaxy/api/history_contents.py
Log Message:
-----------
Fix typo.
Commit: 86220c7685ff831d3d5b39732706c679e77afd38
https://github.com/galaxyproject/galaxy/commit/86220c7685ff831d3d5b39732706…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2015-11-11 (Wed, 11 Nov 2015)
Changed paths:
M lib/galaxy/managers/users.py
M lib/galaxy/webapps/galaxy/api/users.py
Log Message:
-----------
Extend users API with delete action.
Commit: f700e38241d302406dde9c0eef9449ae2f054c6d
https://github.com/galaxyproject/galaxy/commit/f700e38241d302406dde9c0eef94…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2015-11-11 (Wed, 11 Nov 2015)
Changed paths:
M lib/galaxy/webapps/galaxy/api/users.py
Log Message:
-----------
Fix is_admin value in users API show method to show if the requested user is an admin, not the current user.
Commit: d4e7c601a095c9138f5f5841b29d345c8b2d96a9
https://github.com/galaxyproject/galaxy/commit/d4e7c601a095c9138f5f5841b29d…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2015-11-11 (Wed, 11 Nov 2015)
Changed paths:
M lib/galaxy/webapps/galaxy/api/users.py
Log Message:
-----------
Add check for allow_user_deletion.
Commit: 24a7ee6205ac4cb45f9249a6aa3f89241121c7ca
https://github.com/galaxyproject/galaxy/commit/24a7ee6205ac4cb45f9249a6aa3f…
Author: Björn Grüning <bjoern(a)gruenings.eu>
Date: 2015-11-11 (Wed, 11 Nov 2015)
Changed paths:
M lib/galaxy/jobs/__init__.py
M lib/galaxy/jobs/command_factory.py
M lib/galaxy/jobs/output_checker.py
M lib/galaxy/jobs/runners/__init__.py
M lib/galaxy/jobs/runners/util/job_script/__init__.py
M lib/galaxy/model/__init__.py
M lib/galaxy/tools/parameters/basic.py
M test/functional/tools/samples_tool_conf.xml
A test/functional/tools/unicode_stream.xml
M test/unit/jobs/test_job_output_checker.py
Log Message:
-----------
Merge pull request #1052 from jmchilton/unicode_stream_3
Improved Encoding Handling for Jobs
Commit: b1266b45dc4ddd63a2b2ae1cc9c28ba9d43a2bc0
https://github.com/galaxyproject/galaxy/commit/b1266b45dc4ddd63a2b2ae1cc9c2…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-11 (Wed, 11 Nov 2015)
Changed paths:
M client/galaxy/scripts/apps/analysis.js
M client/galaxy/scripts/apps/galaxy.js
A client/galaxy/scripts/apps/history-panel.js
A client/galaxy/scripts/apps/tool-panel.js
M client/galaxy/scripts/galaxy-app-base.js
A client/galaxy/scripts/layout/page.js
M client/galaxy/scripts/layout/panel.js
M client/galaxy/scripts/mvc/tools.js
M client/galaxy/scripts/onload.js
M client/webpack.config.js
M lib/galaxy/webapps/galaxy/controllers/root.py
M static/maps/galaxy-app-base.js.map
A static/maps/layout/page.js.map
M static/maps/layout/panel.js.map
M static/maps/mvc/tools.js.map
M static/maps/onload.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/galaxy.bundled.js
M static/scripts/bundled/galaxy.bundled.js.map
M static/scripts/galaxy-app-base.js
A static/scripts/layout/page.js
M static/scripts/layout/panel.js
M static/scripts/mvc/tools.js
M static/scripts/onload.js
M templates/base/base_panels.mako
M templates/js-app.mako
M templates/webapps/galaxy/galaxy.panels.mako
Log Message:
-----------
Webpack: move panel to Backbone, implement ToolPanel and HistoryPanel; simplify js-app.mako (by removing alternate layouts); clean up debugging info, make Galaxy less chatty before logging setup
Commit: 43b8addcbcbe69eb1d223a3689fdb81ef1510f6d
https://github.com/galaxyproject/galaxy/commit/43b8addcbcbe69eb1d223a3689fd…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-11-12 (Thu, 12 Nov 2015)
Changed paths:
M lib/galaxy/managers/users.py
M lib/galaxy/webapps/galaxy/api/history_contents.py
M lib/galaxy/webapps/galaxy/api/users.py
Log Message:
-----------
Merge pull request #1063 from nsoranzo/api_delete_user
Extend users API with delete action.
Commit: ee721c5d360e774636d271db673d1485ddcc7a21
https://github.com/galaxyproject/galaxy/commit/ee721c5d360e774636d271db673d…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2015-11-12 (Thu, 12 Nov 2015)
Changed paths:
M cron/build_chrom_db.py
Log Message:
-----------
Check len files during download from UCSC.
Do not create file in case of errors, so the cron script will not
overwrite a good file with a bad one.
Commit: 11926b3b9c3241d0b72ee4fcea127c18c5aaf9c6
https://github.com/galaxyproject/galaxy/commit/11926b3b9c3241d0b72ee4fcea12…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-11-12 (Thu, 12 Nov 2015)
Changed paths:
M CONTRIBUTORS.md
Log Message:
-----------
add @mr-c
Commit: c1bf4caea985d53bbcdf844561a34a588f541eec
https://github.com/galaxyproject/galaxy/commit/c1bf4caea985d53bbcdf844561a3…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-12 (Thu, 12 Nov 2015)
Changed paths:
M CONTRIBUTORS.md
Log Message:
-----------
Merge pull request #1067 from martenson/add-biocrusoe
add biocrusoe to contributors
Commit: c1cc3bd483fc2197b43048f467be6e80f80babea
https://github.com/galaxyproject/galaxy/commit/c1cc3bd483fc2197b43048f467be…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-12 (Thu, 12 Nov 2015)
Changed paths:
M client/galaxy/scripts/galaxy.library.js
M client/galaxy/scripts/mvc/library/library-folderlist-view.js
M client/galaxy/scripts/mvc/library/library-folderrow-view.js
M client/galaxy/scripts/mvc/library/library-foldertoolbar-view.js
M client/galaxy/scripts/mvc/library/library-librarylist-view.js
M client/galaxy/scripts/mvc/library/library-libraryrow-view.js
M static/scripts/galaxy.library.js
M static/scripts/mvc/library/library-folderlist-view.js
M static/scripts/mvc/library/library-folderrow-view.js
M static/scripts/mvc/library/library-foldertoolbar-view.js
M static/scripts/mvc/library/library-librarylist-view.js
M static/scripts/mvc/library/library-libraryrow-view.js
M templates/base/base_panels.mako
M templates/webapps/galaxy/galaxy.panels.mako
Log Message:
-----------
Webpack: fix masthead in libraries; update Panel usage in base_panels.mako, galaxy.panels.mako
Commit: 11b23bf8392c8ecf7c48978003f0fc3082d07234
https://github.com/galaxyproject/galaxy/commit/11b23bf8392c8ecf7c48978003f0…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-12 (Thu, 12 Nov 2015)
Changed paths:
M lib/galaxy/datatypes/converters/pbed_to_lped_converter.py
Log Message:
-----------
Fix lped report output from converter
Commit: 22ed188c0344a41df5cf015486be34de197b88fc
https://github.com/galaxyproject/galaxy/commit/22ed188c0344a41df5cf015486be…
Author: Björn Grüning <bjoern(a)gruenings.eu>
Date: 2015-11-12 (Thu, 12 Nov 2015)
Changed paths:
M lib/galaxy/datatypes/converters/pbed_to_lped_converter.py
Log Message:
-----------
Merge pull request #1069 from dannon/fix_lped_report_output
Fix lped report output from converter
Commit: be3d9cbf70b1899f316ff7cf5aabdd0d191179ce
https://github.com/galaxyproject/galaxy/commit/be3d9cbf70b1899f316ff7cf5aab…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-12 (Thu, 12 Nov 2015)
Changed paths:
M lib/galaxy/datatypes/converters/lped_to_pbed_converter.py
Log Message:
-----------
Fix one more hanging div.
Commit: a4edf159be9996d09bb029d2098d9c0d39fb2975
https://github.com/galaxyproject/galaxy/commit/a4edf159be9996d09bb029d2098d…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-12 (Thu, 12 Nov 2015)
Changed paths:
M .gitignore
M CONTRIBUTORS.md
M client/galaxy/scripts/galaxy-app-base.js
M client/galaxy/scripts/libs/jquery/select2.js
M client/galaxy/scripts/mvc/collection/list-of-pairs-collection-creator.js
M client/galaxy/scripts/mvc/form/form-parameters.js
M client/galaxy/scripts/mvc/form/form-repeat.js
M client/galaxy/scripts/mvc/form/form-select-content.js
M client/galaxy/scripts/mvc/form/form-view.js
M client/galaxy/scripts/mvc/grid/grid-template.js
M client/galaxy/scripts/mvc/library/library-folderrow-view.js
M client/galaxy/scripts/mvc/tools/tools-form-base.js
M client/galaxy/scripts/mvc/tools/tools-form-workflow.js
M client/galaxy/scripts/mvc/tools/tools-jobs.js
M client/galaxy/scripts/mvc/ui/ui-select-default.js
M client/galaxy/scripts/mvc/upload/upload-button.js
M client/galaxy/scripts/utils/deferred.js
M client/galaxy/scripts/utils/uploadbox.js
M client/galaxy/style/less/base.less
M client/galaxy/style/less/ui.less
M client/galaxy/style/less/upload.less
M config/plugins/visualizations/charts/static/build-app.js
M lib/galaxy/dependencies/__init__.py
M lib/galaxy/dependencies/conditional-requirements.txt
M lib/galaxy/dependencies/requirements.txt
M lib/galaxy/jobs/__init__.py
M lib/galaxy/jobs/command_factory.py
M lib/galaxy/jobs/output_checker.py
M lib/galaxy/jobs/runners/__init__.py
M lib/galaxy/jobs/runners/util/job_script/__init__.py
M lib/galaxy/managers/users.py
M lib/galaxy/model/__init__.py
M lib/galaxy/tools/parameters/basic.py
M lib/galaxy/web/framework/webapp.py
M lib/galaxy/webapps/galaxy/api/history_contents.py
M lib/galaxy/webapps/galaxy/api/users.py
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/step_handler.py
M run.sh
A scripts/check_eggs.py
A scripts/fetch_eggs.py
M static/maps/galaxy-app-base.js.map
M static/maps/libs/jquery/select2.js.map
M static/maps/mvc/collection/list-of-pairs-collection-creator.js.map
M static/maps/mvc/form/form-parameters.js.map
M static/maps/mvc/form/form-repeat.js.map
M static/maps/mvc/form/form-select-content.js.map
M static/maps/mvc/form/form-view.js.map
M static/maps/mvc/grid/grid-template.js.map
M static/maps/mvc/library/library-folderrow-view.js.map
M static/maps/mvc/tools/tools-form-base.js.map
M static/maps/mvc/tools/tools-form-workflow.js.map
M static/maps/mvc/tools/tools-jobs.js.map
M static/maps/mvc/ui/ui-select-default.js.map
M static/maps/mvc/upload/upload-button.js.map
M static/maps/utils/deferred.js.map
M static/maps/utils/uploadbox.js.map
M static/scripts/galaxy-app-base.js
M static/scripts/libs/jquery/select2.js
M static/scripts/mvc/collection/list-of-pairs-collection-creator.js
M static/scripts/mvc/form/form-parameters.js
M static/scripts/mvc/form/form-repeat.js
M static/scripts/mvc/form/form-select-content.js
M static/scripts/mvc/form/form-view.js
M static/scripts/mvc/grid/grid-template.js
M static/scripts/mvc/library/library-folderrow-view.js
M static/scripts/mvc/tools/tools-form-base.js
M static/scripts/mvc/tools/tools-form-workflow.js
M static/scripts/mvc/tools/tools-jobs.js
M static/scripts/mvc/ui/ui-select-default.js
M static/scripts/mvc/upload/upload-button.js
M static/scripts/utils/deferred.js
M static/scripts/utils/uploadbox.js
M static/style/blue/base.css
M test/api/helpers.py
M test/functional/tools/samples_tool_conf.xml
A test/functional/tools/unicode_stream.xml
M test/unit/jobs/test_job_output_checker.py
M tools/filters/wig_to_bigwig.xml
M tools/stats/gsummary.py
Log Message:
-----------
(merge dev)
Commit: dc0b960ea1242ae3ec34e7d00c5f8619e06f7b59
https://github.com/galaxyproject/galaxy/commit/dc0b960ea1242ae3ec34e7d00c5f…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-12 (Thu, 12 Nov 2015)
Changed paths:
M client/galaxy/scripts/layout/page.js
M client/galaxy/scripts/layout/panel.js
M client/galaxy/scripts/onload.js
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/galaxy.bundled.js
M static/scripts/bundled/galaxy.bundled.js.map
M static/scripts/layout/page.js
M static/scripts/layout/panel.js
M static/scripts/onload.js
M templates/base/base_panels.mako
M templates/js-app.mako
M templates/webapps/galaxy/galaxy.panels.mako
Log Message:
-----------
Webpack: lowercase DD-helper throughout project to reflect changes in 7717659
Commit: 1cf5af4c20231996e58756ace72e4a1ca96b227d
https://github.com/galaxyproject/galaxy/commit/1cf5af4c20231996e58756ace72e…
Author: carlfeberhard <carlfeberhard(a)users.noreply.github.com>
Date: 2015-11-12 (Thu, 12 Nov 2015)
Changed paths:
M lib/galaxy/datatypes/converters/lped_to_pbed_converter.py
Log Message:
-----------
Merge pull request #1070 from dannon/fix_lped_report_output
Fix one more hanging div in lped to pbed converter.
Commit: 240da5e720c069b08caf77828dc4e3e598b56089
https://github.com/galaxyproject/galaxy/commit/240da5e720c069b08caf77828dc4…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-12 (Thu, 12 Nov 2015)
Changed paths:
M lib/galaxy/datatypes/converters/lped_to_pbed_converter.py
M lib/galaxy/datatypes/converters/pbed_to_lped_converter.py
Log Message:
-----------
Update both lped pbed pbed lped converters to be in sync with their html. Thanks @nsoranzo.
Commit: 67d0bcb5b3bba9c13bfa0c556a4460e1304b63a9
https://github.com/galaxyproject/galaxy/commit/67d0bcb5b3bba9c13bfa0c556a44…
Author: Mark Einon <mark.einon(a)gmail.com>
Date: 2015-11-12 (Thu, 12 Nov 2015)
Changed paths:
M client/galaxy/scripts/mvc/tools.js
M static/maps/mvc/tools.js.map
M static/scripts/mvc/tools.js
Log Message:
-----------
Trivial: Replace unnecessary duplicated var check with 'else if'
Commit: 926b1a2cdd3c772f214a2ae62945427d2c36402f
https://github.com/galaxyproject/galaxy/commit/926b1a2cdd3c772f214a2ae62945…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-11-12 (Thu, 12 Nov 2015)
Changed paths:
M client/galaxy/scripts/mvc/tools.js
M static/maps/mvc/tools.js.map
M static/scripts/mvc/tools.js
Log Message:
-----------
Merge pull request #1073 from einon/einon
Trivial: Replace unnecessary duplicated var check with 'else if'
Commit: 78e6253178b51afa77346b259801f221eb9c201e
https://github.com/galaxyproject/galaxy/commit/78e6253178b51afa77346b259801…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-12 (Thu, 12 Nov 2015)
Changed paths:
A client/galaxy/scripts/layout/modal.js
R client/galaxy/scripts/modal.js
M client/galaxy/scripts/onload.js
M client/webpack.config.js
A static/maps/layout/modal.js.map
R static/maps/modal.js.map
A static/scripts/layout/modal.js
R static/scripts/modal.js
Log Message:
-----------
Webpack: move old school modal into layout/
Commit: 215391f571f72725a87f45b556be10e8446db8a9
https://github.com/galaxyproject/galaxy/commit/215391f571f72725a87f45b556be…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-12 (Thu, 12 Nov 2015)
Changed paths:
R client/galaxy/scripts/galaxy-async.js
R static/maps/galaxy-async.js.map
R static/scripts/galaxy-async.js
Log Message:
-----------
Webpack: remove galaxy-async
Commit: 3a70dc395a2afb73363440edaa624d6f053467d2
https://github.com/galaxyproject/galaxy/commit/3a70dc395a2afb73363440edaa62…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-12 (Thu, 12 Nov 2015)
Changed paths:
M lib/galaxy/tools/toolbox/base.py
M lib/galaxy/web/base/controllers/admin.py
M templates/admin/reload_tool.mako
Log Message:
-----------
Merge pull request #1050 from blankenberg/reload-tool-id-fix
Fix for reloading tools that have non-standard tool_ids/versions.
Commit: 350a53f1ef9c686ad3617cc37f037251a79a28ef
https://github.com/galaxyproject/galaxy/commit/350a53f1ef9c686ad3617cc37f03…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-12 (Thu, 12 Nov 2015)
Changed paths:
R client/galaxy/scripts/base.js
M client/galaxy/scripts/viz/trackster.js
R static/maps/base.js.map
M static/maps/viz/trackster.js.map
R static/scripts/base.js
M static/scripts/viz/trackster.js
Log Message:
-----------
Webpack: move base.Base to trackster (which uses it)
Commit: f971e17f95d62662eaec47a96da88f1b45d823ce
https://github.com/galaxyproject/galaxy/commit/f971e17f95d62662eaec47a96da8…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-12 (Thu, 12 Nov 2015)
Changed paths:
R client/galaxy/scripts/galaxy.ui.scrollPanel.js
A client/galaxy/scripts/ui/scroll-panel.js
R static/maps/galaxy.ui.scrollPanel.js.map
A static/maps/ui/scroll-panel.js.map
R static/scripts/galaxy.ui.scrollPanel.js
A static/scripts/ui/scroll-panel.js
Log Message:
-----------
Webpack: move galaxy.ui.scrollPanel into ui/scroll-panel
Commit: 2214f887a668a4eed1e3b94d880c57e2e57ef9a1
https://github.com/galaxyproject/galaxy/commit/2214f887a668a4eed1e3b94d880c…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2015-11-12 (Thu, 12 Nov 2015)
Changed paths:
M lib/galaxy/datatypes/converters/lped_to_pbed_converter.py
M lib/galaxy/datatypes/converters/pbed_to_lped_converter.py
Log Message:
-----------
Merge pull request #1072 from dannon/fix_lped_report_output
Update both lped pbed pbed lped converters to be in sync with their h…
Commit: f2356ef819111fe2507cc96059f5e1da7fbf6b3e
https://github.com/galaxyproject/galaxy/commit/f2356ef819111fe2507cc96059f5…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-11-12 (Thu, 12 Nov 2015)
Changed paths:
M test/base/api.py
M test/base/interactor.py
Log Message:
-----------
extend API interactor to allow http PATCH and DELETE testing
Commit: 43dc7a52e5289acdb681c30a2aeb49bb2f68e61d
https://github.com/galaxyproject/galaxy/commit/43dc7a52e5289acdb681c30a2aeb…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-11-12 (Thu, 12 Nov 2015)
Changed paths:
M test/api/test_libraries.py
M test/base/interactor.py
Log Message:
-----------
add more API tests for data libraries
Commit: 93629bb29e35340618aca2d1b420d948b56c695b
https://github.com/galaxyproject/galaxy/commit/93629bb29e35340618aca2d1b420…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-12 (Thu, 12 Nov 2015)
Changed paths:
M client/galaxy/scripts/mvc/tools.js
M client/package.json
M client/webpack.config.js
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/galaxy.bundled.js
M static/scripts/bundled/galaxy.bundled.js.map
Log Message:
-----------
Webpack: add handlebars loader, update tools.js
Commit: 2f0b64613770c8e59613bb46218e12565d260038
https://github.com/galaxyproject/galaxy/commit/2f0b64613770c8e59613bb46218e…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-12 (Thu, 12 Nov 2015)
Changed paths:
M client/galaxy/scripts/apps/tool-panel.js
M client/galaxy/scripts/galaxy.tools.js
M client/galaxy/scripts/mvc/app/app-analysis.js
R client/galaxy/scripts/mvc/tools.js
A client/galaxy/scripts/mvc/tools/tools.js
M client/galaxy/scripts/viz/sweepster.js
M client/galaxy/scripts/viz/trackster/tracks.js
R static/maps/mvc/tools.js.map
A static/maps/mvc/tools/tools.js.map
R static/scripts/mvc/tools.js
A static/scripts/mvc/tools/tools.js
Log Message:
-----------
Webpack: move tools.js into mvc/tools/
Commit: 372c2e9e43854b0e5e576abcead50e22f00923d9
https://github.com/galaxyproject/galaxy/commit/372c2e9e43854b0e5e576abcead5…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-12 (Thu, 12 Nov 2015)
Changed paths:
M client/galaxy/scripts/layout/scratchbook.js
R client/galaxy/scripts/mvc/data.js
A client/galaxy/scripts/mvc/dataset/data.js
M client/galaxy/scripts/mvc/tools/tools.js
M client/galaxy/scripts/viz/phyloviz.js
M client/galaxy/scripts/viz/sweepster.js
M client/galaxy/scripts/viz/trackster/tracks.js
M client/galaxy/scripts/viz/visualization.js
M static/maps/galaxy.tools.js.map
M static/maps/layout/scratchbook.js.map
M static/maps/mvc/app/app-analysis.js.map
R static/maps/mvc/data.js.map
A static/maps/mvc/dataset/data.js.map
M static/maps/mvc/tools/tools.js.map
M static/maps/onload.js.map
M static/maps/ui/scroll-panel.js.map
M static/maps/viz/phyloviz.js.map
M static/maps/viz/sweepster.js.map
M static/maps/viz/trackster/tracks.js.map
M static/maps/viz/visualization.js.map
M static/scripts/galaxy.tools.js
M static/scripts/layout/scratchbook.js
M static/scripts/mvc/app/app-analysis.js
R static/scripts/mvc/data.js
A static/scripts/mvc/dataset/data.js
M static/scripts/mvc/tools/tools.js
M static/scripts/onload.js
M static/scripts/ui/scroll-panel.js
M static/scripts/viz/phyloviz.js
M static/scripts/viz/sweepster.js
M static/scripts/viz/trackster/tracks.js
M static/scripts/viz/visualization.js
M templates/webapps/galaxy/dataset/display.mako
M templates/webapps/galaxy/dataset/tabular_chunked.mako
Log Message:
-----------
Webpack: move data.js into dataset/data.js; pack scripts
Commit: 6d0ab669ecbd12e75cf38f8c914bbf5954caac20
https://github.com/galaxyproject/galaxy/commit/6d0ab669ecbd12e75cf38f8c914b…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-12 (Thu, 12 Nov 2015)
Changed paths:
M client/galaxy/scripts/mvc/citation/citation-model.js
M client/webpack.config.js
M static/maps/mvc/citation/citation-model.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/galaxy.bundled.js
M static/scripts/bundled/galaxy.bundled.js.map
M static/scripts/mvc/citation/citation-model.js
Log Message:
-----------
Webpack: correctly load jQuery-ui, require bibtex in citations, and move polyfills to first loaded
Commit: c66bc7ab766e2af197a668a76e15e1dc21cfb9fa
https://github.com/galaxyproject/galaxy/commit/c66bc7ab766e2af197a668a76e15…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-12 (Thu, 12 Nov 2015)
Changed paths:
R client/galaxy/scripts/mvc/collection/collection-panel-edit.js
R client/galaxy/scripts/mvc/collection/collection-panel.js
A client/galaxy/scripts/mvc/collection/collection-view-edit.js
A client/galaxy/scripts/mvc/collection/collection-view.js
R client/galaxy/scripts/mvc/history/history-panel-annotated.js
R client/galaxy/scripts/mvc/history/history-panel-edit-current.js
R client/galaxy/scripts/mvc/history/history-panel-edit.js
R client/galaxy/scripts/mvc/history/history-panel.js
A client/galaxy/scripts/mvc/history/history-view-annotated.js
A client/galaxy/scripts/mvc/history/history-view-edit-current.js
A client/galaxy/scripts/mvc/history/history-view-edit.js
A client/galaxy/scripts/mvc/history/history-view.js
M client/webpack.config.js
R static/maps/mvc/collection/collection-panel-edit.js.map
R static/maps/mvc/collection/collection-panel.js.map
A static/maps/mvc/collection/collection-view-edit.js.map
A static/maps/mvc/collection/collection-view.js.map
R static/maps/mvc/history/history-panel-annotated.js.map
R static/maps/mvc/history/history-panel-edit-current.js.map
R static/maps/mvc/history/history-panel-edit.js.map
R static/maps/mvc/history/history-panel.js.map
A static/maps/mvc/history/history-view-annotated.js.map
A static/maps/mvc/history/history-view-edit-current.js.map
A static/maps/mvc/history/history-view-edit.js.map
A static/maps/mvc/history/history-view.js.map
R static/scripts/mvc/collection/collection-panel-edit.js
R static/scripts/mvc/collection/collection-panel.js
A static/scripts/mvc/collection/collection-view-edit.js
A static/scripts/mvc/collection/collection-view.js
R static/scripts/mvc/history/history-panel-annotated.js
R static/scripts/mvc/history/history-panel-edit-current.js
R static/scripts/mvc/history/history-panel-edit.js
R static/scripts/mvc/history/history-panel.js
A static/scripts/mvc/history/history-view-annotated.js
A static/scripts/mvc/history/history-view-edit-current.js
A static/scripts/mvc/history/history-view-edit.js
A static/scripts/mvc/history/history-view.js
Log Message:
-----------
Webpack: normalize history and panel module names with other mvc modules (history-panel is not a panel - just a view)
Commit: 55068dea285c82232bd9dbf024de580013c5f3d8
https://github.com/galaxyproject/galaxy/commit/55068dea285c82232bd9dbf024de…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-12 (Thu, 12 Nov 2015)
Changed paths:
M client/galaxy/scripts/apps/history-panel.js
M client/galaxy/scripts/mvc/app/app-analysis.js
M client/galaxy/scripts/mvc/base-mvc.js
M client/galaxy/scripts/mvc/collection/collection-view-edit.js
M client/galaxy/scripts/mvc/collection/collection-view.js
M client/galaxy/scripts/mvc/history/hdca-li-edit.js
M client/galaxy/scripts/mvc/history/hdca-li.js
M client/galaxy/scripts/mvc/history/history-view-annotated.js
M client/galaxy/scripts/mvc/history/history-view-edit-current.js
M client/galaxy/scripts/mvc/history/history-view-edit.js
M client/galaxy/scripts/mvc/history/history-view.js
M client/galaxy/scripts/mvc/history/multi-panel.js
M client/galaxy/scripts/mvc/list/list-panel.js
M client/galaxy/scripts/mvc/user/user-model.js
M client/galaxy/scripts/nls/ja/locale.js
M client/galaxy/scripts/nls/locale.js
M client/galaxy/scripts/nls/zh/locale.js
M static/maps/mvc/app/app-analysis.js.map
M static/maps/mvc/collection/collection-view-edit.js.map
M static/maps/mvc/collection/collection-view.js.map
M static/maps/mvc/history/hdca-li-edit.js.map
M static/maps/mvc/history/hdca-li.js.map
M static/maps/mvc/history/history-view-annotated.js.map
M static/maps/mvc/history/history-view-edit-current.js.map
M static/maps/mvc/history/history-view-edit.js.map
M static/maps/mvc/history/history-view.js.map
M static/maps/mvc/history/multi-panel.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/galaxy.bundled.js
M static/scripts/mvc/app/app-analysis.js
M static/scripts/mvc/collection/collection-view-edit.js
M static/scripts/mvc/collection/collection-view.js
M static/scripts/mvc/history/hdca-li-edit.js
M static/scripts/mvc/history/hdca-li.js
M static/scripts/mvc/history/history-view-annotated.js
M static/scripts/mvc/history/history-view-edit-current.js
M static/scripts/mvc/history/history-view-edit.js
M static/scripts/mvc/history/history-view.js
M static/scripts/mvc/history/multi-panel.js
M templates/webapps/galaxy/history/display.mako
M templates/webapps/galaxy/history/embed.mako
M templates/webapps/galaxy/history/view.mako
M templates/webapps/galaxy/history/view_multiple.mako
Log Message:
-----------
Webpack: normalize 'panel' names part-2: history and collection modules
Commit: d6d8e5ef86bbfe460709c82590596252de2d5a71
https://github.com/galaxyproject/galaxy/commit/d6d8e5ef86bbfe460709c8259059…
Author: Mark Einon <mark.einon(a)gmail.com>
Date: 2015-11-13 (Fri, 13 Nov 2015)
Changed paths:
M tools/data_source/upload.py
Log Message:
-----------
upload.py: Remove unused function parameter
Commit: 625d49e2de074c240555efbff1319c6ddf9676a1
https://github.com/galaxyproject/galaxy/commit/625d49e2de074c240555efbff131…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-11-13 (Fri, 13 Nov 2015)
Changed paths:
M tools/data_source/upload.py
Log Message:
-----------
Merge pull request #1078 from einon/einon
upload.py: Remove unused function parameter
Commit: 8efabbbcd5546441182cbff1cc66e525cf6abf48
https://github.com/galaxyproject/galaxy/commit/8efabbbcd5546441182cbff1cc66…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-13 (Fri, 13 Nov 2015)
Changed paths:
M templates/grid_base.mako
M templates/webapps/galaxy/dataset/edit_attributes.mako
M templates/webapps/galaxy/library/common/ldda_edit_info.mako
M templates/webapps/galaxy/library/common/move_library_item.mako
M templates/webapps/galaxy/library/common/upload.mako
M templates/webapps/galaxy/page/editor.mako
M templates/webapps/galaxy/requests/common/create_request.mako
M templates/webapps/galaxy/requests/common/find_samples.mako
M templates/webapps/galaxy/workflow/editor.mako
Log Message:
-----------
Webpack: fix load order in embedded grids by removing autocom_tagging script tag (it's in the libs.bundle), remove it from other mako templates as well; remove bibtex script from workflow/editor.mako (unused)
Commit: 2dcb92aa0e83f9893595b68222fc62cf052a9220
https://github.com/galaxyproject/galaxy/commit/2dcb92aa0e83f9893595b68222fc…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-11-13 (Fri, 13 Nov 2015)
Changed paths:
M lib/galaxy/model/orm/scripts.py
M lib/galaxy/webapps/tool_shed/buildapp.py
M test/docker/base/Dockerfile
M test/docker/base/ansible_vars.yml
M test/docker/base/provision.yml
M test/docker/base/run_test_wrapper.sh
M test/docker/base/start_mysql.sh
Log Message:
-----------
Merge pull request #942 from davebx/docker
Enable dockerized toolshed tests.
Commit: 7c45bf13fad2d60fbee8be409c6879af2ebc25d1
https://github.com/galaxyproject/galaxy/commit/7c45bf13fad2d60fbee8be409c68…
Author: Dave B <dave(a)bx.psu.edu>
Date: 2015-11-13 (Fri, 13 Nov 2015)
Changed paths:
M lib/galaxy/util/__init__.py
M lib/galaxy/webapps/tool_shed/framework/middleware/hg.py
Log Message:
-----------
Fix 500 error when attempting to update installed repository.
Commit: 321b64d8dcc1917eb107e46124cdb945c5005511
https://github.com/galaxyproject/galaxy/commit/321b64d8dcc1917eb107e46124cd…
Author: Dave B <dave(a)bx.psu.edu>
Date: 2015-11-13 (Fri, 13 Nov 2015)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Ensure that invalid parameters don't break things.
Commit: 6d4328766baa3f8bf35cc5824d870d8fc86e481f
https://github.com/galaxyproject/galaxy/commit/6d4328766baa3f8bf35cc5824d87…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-11-13 (Fri, 13 Nov 2015)
Changed paths:
M run_tests.sh
Log Message:
-----------
remove whitespace at line ends
Commit: 7c863eb2aeaa1418dde26ed2101b88435b3a763b
https://github.com/galaxyproject/galaxy/commit/7c863eb2aeaa1418dde26ed2101b…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-11-13 (Fri, 13 Nov 2015)
Changed paths:
M run_tests.sh
Log Message:
-----------
update the image tag
Commit: ce418d33fe221b27da162717a208381aa8042ea8
https://github.com/galaxyproject/galaxy/commit/ce418d33fe221b27da162717a208…
Author: jgoecks <jgoecks(a)gwu.edu>
Date: 2015-11-13 (Fri, 13 Nov 2015)
Changed paths:
M client/galaxy/scripts/viz/trackster/tracks.js
M client/galaxy/style/less/trackster.less
M static/maps/viz/trackster/tracks.js.map
M static/scripts/viz/trackster/tracks.js
M static/style/blue/autocomplete_tagging.css
M static/style/blue/base.css
M static/style/blue/embed_item.css
M static/style/blue/iphone.css
M static/style/blue/library.css
M static/style/blue/trackster.css
Log Message:
-----------
Resolve conflicting label CSS class.
Commit: f1abf1e9ab4dc4f1d3e6987c6bb68ab3b188083c
https://github.com/galaxyproject/galaxy/commit/f1abf1e9ab4dc4f1d3e6987c6bb6…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-11-13 (Fri, 13 Nov 2015)
Changed paths:
M client/galaxy/scripts/viz/trackster/tracks.js
M client/galaxy/style/less/trackster.less
M static/maps/viz/trackster/tracks.js.map
M static/scripts/viz/trackster/tracks.js
M static/style/blue/autocomplete_tagging.css
M static/style/blue/base.css
M static/style/blue/embed_item.css
M static/style/blue/iphone.css
M static/style/blue/library.css
M static/style/blue/trackster.css
Log Message:
-----------
Merge pull request #1086 from jgoecks/trackster-pos-label
Resolve conflicting label CSS class for trackster.
Commit: 87f35ea9752a37da76595db1fee481c391ee686b
https://github.com/galaxyproject/galaxy/commit/87f35ea9752a37da76595db1fee4…
Author: Dave B <dave(a)bx.psu.edu>
Date: 2015-11-13 (Fri, 13 Nov 2015)
Changed paths:
M lib/galaxy/util/__init__.py
M lib/galaxy/webapps/tool_shed/framework/middleware/hg.py
Log Message:
-----------
Use preexisting library to parse query string.
Commit: c3f4b54b686ba93b3bb8f65d17f3961d344b9d7c
https://github.com/galaxyproject/galaxy/commit/c3f4b54b686ba93b3bb8f65d17f3…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-13 (Fri, 13 Nov 2015)
Changed paths:
M client/galaxy/scripts/galaxy-app-base.js
M client/galaxy/scripts/utils/localization.js
R client/galaxy/scripts/utils/webpack-localization.js
M client/package.json
M client/webpack.config.js
M static/maps/galaxy-app-base.js.map
M static/maps/utils/localization.js.map
R static/maps/utils/webpack-localization.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/galaxy.bundled.js
M static/scripts/bundled/galaxy.bundled.js.map
M static/scripts/utils/localization.js
R static/scripts/utils/webpack-localization.js
Log Message:
-----------
Webpack, localization: support both requirejs and webpack i18n by including the amdi18n-loader (both now share the utils/localization file)
Commit: 6f754216a4100969b18185aa705065b03a215628
https://github.com/galaxyproject/galaxy/commit/6f754216a4100969b18185aa7050…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-13 (Fri, 13 Nov 2015)
Changed paths:
M client/galaxy/scripts/mvc/collection/collection-view.js
M client/galaxy/scripts/mvc/dataset/dataset-list.js
M client/galaxy/scripts/mvc/history/history-view.js
M client/galaxy/scripts/mvc/history/multi-panel.js
R client/galaxy/scripts/mvc/list/list-panel.js
A client/galaxy/scripts/mvc/list/list-view.js
M static/maps/mvc/collection/collection-view.js.map
M static/maps/mvc/dataset/dataset-list.js.map
M static/maps/mvc/history/history-view.js.map
R static/maps/mvc/list/list-panel.js.map
A static/maps/mvc/list/list-view.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/mvc/collection/collection-view.js
M static/scripts/mvc/dataset/dataset-list.js
M static/scripts/mvc/history/history-view.js
R static/scripts/mvc/list/list-panel.js
A static/scripts/mvc/list/list-view.js
Log Message:
-----------
Webpack: normalize list-panel to list-view
Commit: d285c01108f59d1b054955f312b16c3b978aa97a
https://github.com/galaxyproject/galaxy/commit/d285c01108f59d1b054955f312b1…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-13 (Fri, 13 Nov 2015)
Changed paths:
A client/galaxy/scripts/mvc/annotation.js
R client/galaxy/scripts/mvc/annotations.js
A client/galaxy/scripts/mvc/tag.js
R client/galaxy/scripts/mvc/tags.js
A client/galaxy/scripts/mvc/tool/tools-form-base.js
A client/galaxy/scripts/mvc/tool/tools-form-workflow.js
A client/galaxy/scripts/mvc/tool/tools-form.js
A client/galaxy/scripts/mvc/tool/tools-jobs.js
A client/galaxy/scripts/mvc/tool/tools-template.js
A client/galaxy/scripts/mvc/tool/tools.js
R client/galaxy/scripts/mvc/tools/tools-form-base.js
R client/galaxy/scripts/mvc/tools/tools-form-workflow.js
R client/galaxy/scripts/mvc/tools/tools-form.js
R client/galaxy/scripts/mvc/tools/tools-jobs.js
R client/galaxy/scripts/mvc/tools/tools-template.js
R client/galaxy/scripts/mvc/tools/tools.js
Log Message:
-----------
Webpack: normalize tags, annotations, and tools (the names of)
Commit: 894af4c5deadc75d2f1a5e11e26abc9c3f4f7256
https://github.com/galaxyproject/galaxy/commit/894af4c5deadc75d2f1a5e11e26a…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-13 (Fri, 13 Nov 2015)
Changed paths:
A static/maps/mvc/annotation.js.map
R static/maps/mvc/annotations.js.map
A static/maps/mvc/tag.js.map
R static/maps/mvc/tags.js.map
A static/maps/mvc/tool/tools-form-base.js.map
A static/maps/mvc/tool/tools-form-workflow.js.map
A static/maps/mvc/tool/tools-form.js.map
A static/maps/mvc/tool/tools-jobs.js.map
A static/maps/mvc/tool/tools-template.js.map
A static/maps/mvc/tool/tools.js.map
R static/maps/mvc/tools/tools-form-base.js.map
R static/maps/mvc/tools/tools-form-workflow.js.map
R static/maps/mvc/tools/tools-form.js.map
R static/maps/mvc/tools/tools-jobs.js.map
R static/maps/mvc/tools/tools-template.js.map
R static/maps/mvc/tools/tools.js.map
A static/scripts/mvc/annotation.js
R static/scripts/mvc/annotations.js
A static/scripts/mvc/tag.js
R static/scripts/mvc/tags.js
A static/scripts/mvc/tool/tools-form-base.js
A static/scripts/mvc/tool/tools-form-workflow.js
A static/scripts/mvc/tool/tools-form.js
A static/scripts/mvc/tool/tools-jobs.js
A static/scripts/mvc/tool/tools-template.js
A static/scripts/mvc/tool/tools.js
R static/scripts/mvc/tools/tools-form-base.js
R static/scripts/mvc/tools/tools-form-workflow.js
R static/scripts/mvc/tools/tools-form.js
R static/scripts/mvc/tools/tools-jobs.js
R static/scripts/mvc/tools/tools-template.js
R static/scripts/mvc/tools/tools.js
Log Message:
-----------
Webpack: normalize tags, annotations, and tools (2 of 3)
Commit: cc6c15f3b102afd22c3a9f1c7d1a5d92daad03bc
https://github.com/galaxyproject/galaxy/commit/cc6c15f3b102afd22c3a9f1c7d1a…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-13 (Fri, 13 Nov 2015)
Changed paths:
M client/galaxy/scripts/apps/analysis.js
M client/galaxy/scripts/apps/tool-panel.js
M client/galaxy/scripts/mvc/app/app-analysis.js
M client/galaxy/scripts/mvc/dataset/dataset-li-edit.js
M client/galaxy/scripts/mvc/form/form-select-content.js
M client/galaxy/scripts/mvc/history/history-view-edit.js
M client/galaxy/scripts/mvc/tool/tools-form-base.js
M client/galaxy/scripts/mvc/tool/tools-form-workflow.js
M client/galaxy/scripts/mvc/tool/tools-form.js
M client/galaxy/scripts/mvc/tool/tools-jobs.js
M client/galaxy/scripts/mvc/tool/tools.js
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M client/galaxy/scripts/viz/trackster/tracks.js
M static/maps/mvc/annotation.js.map
M static/maps/mvc/app/app-analysis.js.map
M static/maps/mvc/dataset/dataset-li-edit.js.map
M static/maps/mvc/form/form-select-content.js.map
M static/maps/mvc/history/history-view-edit.js.map
M static/maps/mvc/tag.js.map
M static/maps/mvc/tool/tools-form-base.js.map
M static/maps/mvc/tool/tools-form-workflow.js.map
M static/maps/mvc/tool/tools-form.js.map
M static/maps/mvc/tool/tools-jobs.js.map
M static/maps/mvc/tool/tools-template.js.map
M static/maps/mvc/tool/tools.js.map
M static/maps/mvc/workflow/workflow-view.js.map
M static/maps/viz/trackster/tracks.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/mvc/annotation.js
M static/scripts/mvc/app/app-analysis.js
M static/scripts/mvc/dataset/dataset-li-edit.js
M static/scripts/mvc/form/form-select-content.js
M static/scripts/mvc/history/history-view-edit.js
M static/scripts/mvc/tag.js
M static/scripts/mvc/tool/tools-form-base.js
M static/scripts/mvc/tool/tools-form-workflow.js
M static/scripts/mvc/tool/tools-form.js
M static/scripts/mvc/tool/tools-jobs.js
M static/scripts/mvc/tool/tools-template.js
M static/scripts/mvc/tool/tools.js
M static/scripts/mvc/workflow/workflow-view.js
M static/scripts/viz/trackster/tracks.js
Log Message:
-----------
Webpack: normalize tags, annotations, and tools (change refs - 3 of 3)
Commit: 2956b12e9b292e42dfd2e2309b5c7d29b5b0d48b
https://github.com/galaxyproject/galaxy/commit/2956b12e9b292e42dfd2e2309b5c…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-13 (Fri, 13 Nov 2015)
Changed paths:
M client/galaxy/scripts/galaxy-app-base.js
M client/galaxy/scripts/galaxy.library.js
M client/galaxy/scripts/layout/masthead.js
M client/galaxy/scripts/layout/menu.js
M client/galaxy/scripts/layout/scratchbook.js
M client/galaxy/scripts/mvc/citation/citation-model.js
M client/galaxy/scripts/mvc/collection/collection-model.js
M client/galaxy/scripts/mvc/collection/collection-view-edit.js
M client/galaxy/scripts/mvc/collection/list-of-pairs-collection-creator.js
M client/galaxy/scripts/mvc/dataset/data.js
M client/galaxy/scripts/mvc/dataset/dataset-model.js
M client/galaxy/scripts/mvc/history/history-content-model.js
M client/galaxy/scripts/mvc/history/history-contents.js
M client/galaxy/scripts/mvc/history/history-model.js
M client/galaxy/scripts/mvc/history/history-view-edit-current.js
M client/galaxy/scripts/mvc/history/history-view-edit.js
M client/galaxy/scripts/mvc/history/history-view.js
M client/galaxy/scripts/mvc/history/multi-panel.js
M client/galaxy/scripts/mvc/history/options-menu.js
M client/galaxy/scripts/mvc/job/job-model.js
M client/galaxy/scripts/mvc/library/library-dataset-view.js
M client/galaxy/scripts/mvc/library/library-folder-view.js
M client/galaxy/scripts/mvc/library/library-foldertoolbar-view.js
M client/galaxy/scripts/mvc/library/library-library-view.js
M client/galaxy/scripts/mvc/library/library-librarytoolbar-view.js
M client/galaxy/scripts/mvc/library/library-model.js
M client/galaxy/scripts/mvc/tag.js
M client/galaxy/scripts/mvc/tool/tools-form-workflow.js
M client/galaxy/scripts/mvc/tool/tools-jobs.js
M client/galaxy/scripts/mvc/tool/tools.js
M client/galaxy/scripts/mvc/ui/ui-select-ftp.js
M client/galaxy/scripts/mvc/ui/ui-select-library.js
M client/galaxy/scripts/mvc/upload/upload-ftp.js
M client/galaxy/scripts/mvc/upload/upload-view.js
M client/galaxy/scripts/mvc/user/user-model.js
M client/galaxy/scripts/mvc/visualization/visualization-model.js
M client/galaxy/scripts/mvc/workflow/workflow-manager.js
M client/galaxy/scripts/mvc/workflow/workflow-view-data.js
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M client/galaxy/scripts/utils/utils.js
M client/galaxy/scripts/viz/circster.js
M client/galaxy/scripts/viz/sweepster.js
M client/galaxy/scripts/viz/trackster.js
M client/galaxy/scripts/viz/trackster/tracks.js
M client/galaxy/scripts/viz/visualization.js
M static/maps/galaxy-app-base.js.map
M static/maps/galaxy.library.js.map
M static/maps/layout/masthead.js.map
M static/maps/layout/menu.js.map
M static/maps/layout/scratchbook.js.map
M static/maps/mvc/citation/citation-model.js.map
M static/maps/mvc/collection/collection-model.js.map
M static/maps/mvc/collection/collection-view-edit.js.map
M static/maps/mvc/collection/list-of-pairs-collection-creator.js.map
M static/maps/mvc/dataset/data.js.map
M static/maps/mvc/dataset/dataset-model.js.map
M static/maps/mvc/history/history-content-model.js.map
M static/maps/mvc/history/history-contents.js.map
M static/maps/mvc/history/history-model.js.map
M static/maps/mvc/history/history-view-edit-current.js.map
M static/maps/mvc/history/history-view-edit.js.map
M static/maps/mvc/history/history-view.js.map
M static/maps/mvc/history/multi-panel.js.map
M static/maps/mvc/history/options-menu.js.map
M static/maps/mvc/job/job-model.js.map
M static/maps/mvc/library/library-dataset-view.js.map
M static/maps/mvc/library/library-folder-view.js.map
M static/maps/mvc/library/library-foldertoolbar-view.js.map
M static/maps/mvc/library/library-library-view.js.map
M static/maps/mvc/library/library-librarytoolbar-view.js.map
M static/maps/mvc/library/library-model.js.map
M static/maps/mvc/tag.js.map
M static/maps/mvc/tool/tools-form-workflow.js.map
M static/maps/mvc/tool/tools-jobs.js.map
M static/maps/mvc/tool/tools.js.map
M static/maps/mvc/ui/ui-select-ftp.js.map
M static/maps/mvc/ui/ui-select-library.js.map
M static/maps/mvc/upload/upload-ftp.js.map
M static/maps/mvc/upload/upload-view.js.map
M static/maps/mvc/user/user-model.js.map
M static/maps/mvc/visualization/visualization-model.js.map
M static/maps/mvc/workflow/workflow-manager.js.map
M static/maps/mvc/workflow/workflow-view-data.js.map
M static/maps/mvc/workflow/workflow-view.js.map
M static/maps/utils/utils.js.map
M static/maps/viz/circster.js.map
M static/maps/viz/sweepster.js.map
M static/maps/viz/trackster.js.map
M static/maps/viz/trackster/tracks.js.map
M static/maps/viz/visualization.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/galaxy.bundled.js
M static/scripts/bundled/galaxy.bundled.js.map
M static/scripts/galaxy-app-base.js
M static/scripts/galaxy.library.js
M static/scripts/layout/masthead.js
M static/scripts/layout/menu.js
M static/scripts/layout/scratchbook.js
M static/scripts/mvc/citation/citation-model.js
M static/scripts/mvc/collection/collection-model.js
M static/scripts/mvc/collection/collection-view-edit.js
M static/scripts/mvc/collection/list-of-pairs-collection-creator.js
M static/scripts/mvc/dataset/data.js
M static/scripts/mvc/dataset/dataset-model.js
M static/scripts/mvc/history/history-content-model.js
M static/scripts/mvc/history/history-contents.js
M static/scripts/mvc/history/history-model.js
M static/scripts/mvc/history/history-view-edit-current.js
M static/scripts/mvc/history/history-view-edit.js
M static/scripts/mvc/history/history-view.js
M static/scripts/mvc/history/multi-panel.js
M static/scripts/mvc/history/options-menu.js
M static/scripts/mvc/job/job-model.js
M static/scripts/mvc/library/library-dataset-view.js
M static/scripts/mvc/library/library-folder-view.js
M static/scripts/mvc/library/library-foldertoolbar-view.js
M static/scripts/mvc/library/library-library-view.js
M static/scripts/mvc/library/library-librarytoolbar-view.js
M static/scripts/mvc/library/library-model.js
M static/scripts/mvc/tag.js
M static/scripts/mvc/tool/tools-form-workflow.js
M static/scripts/mvc/tool/tools-jobs.js
M static/scripts/mvc/tool/tools.js
M static/scripts/mvc/ui/ui-select-ftp.js
M static/scripts/mvc/ui/ui-select-library.js
M static/scripts/mvc/upload/upload-ftp.js
M static/scripts/mvc/upload/upload-view.js
M static/scripts/mvc/user/user-model.js
M static/scripts/mvc/visualization/visualization-model.js
M static/scripts/mvc/workflow/workflow-manager.js
M static/scripts/mvc/workflow/workflow-view-data.js
M static/scripts/mvc/workflow/workflow-view.js
M static/scripts/utils/utils.js
M static/scripts/viz/circster.js
M static/scripts/viz/sweepster.js
M static/scripts/viz/trackster.js
M static/scripts/viz/trackster/tracks.js
M static/scripts/viz/visualization.js
M templates/base.mako
M templates/base/base_panels.mako
M templates/js-app.mako
M templates/user/logout.mako
M templates/webapps/galaxy/galaxy.masthead.mako
M templates/webapps/galaxy/galaxy.panels.mako
Log Message:
-----------
Webpack: correct tool menu template loading in requirejs/galaxy.panels.mako by using require.config.map; normalize galaxy_config.root and Galaxy.options.root to Galaxy.root across the templates and js
Commit: 638e36f51d2c9d1af3a0ff62a869e72c02a38f76
https://github.com/galaxyproject/galaxy/commit/638e36f51d2c9d1af3a0ff62a869…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2015-11-14 (Sat, 14 Nov 2015)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/dataset.py
M lib/galaxy/webapps/galaxy/controllers/history.py
M lib/galaxy/webapps/galaxy/controllers/user.py
M lib/galaxy/webapps/galaxy/controllers/visualization.py
M lib/galaxy/webapps/galaxy/controllers/workflow.py
Log Message:
-----------
Newer versions of WebOb set None in referer, older versions set an empty
string. Handle cases where it is assumed to be a string.
I checked all other trans.request attributes to find other cases where
this might crop up and didn't find any.
Commit: 3ba139fe1bf8a40df647282a9884eae543a656bc
https://github.com/galaxyproject/galaxy/commit/3ba139fe1bf8a40df647282a9884…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-11-14 (Sat, 14 Nov 2015)
Changed paths:
M lib/galaxy/webapps/tool_shed/framework/middleware/hg.py
Log Message:
-----------
Merge pull request #1082 from davebx/hg_middleware
Fix 500 error when attempting to update installed repository.
Commit: 1aecca7889681ad9518e26e2a62b470809d2cdd1
https://github.com/galaxyproject/galaxy/commit/1aecca7889681ad9518e26e2a62b…
Author: Björn Grüning <bjoern(a)gruenings.eu>
Date: 2015-11-14 (Sat, 14 Nov 2015)
Changed paths:
M lib/galaxy/webapps/tool_shed/api/repositories.py
Log Message:
-----------
Fix API installation of tool_dependencies
This should fix an installation issue with tool_dependencies via the API.
Tool dependency repositories to not have any tools specified and with this no metadata associated.
It was broken in https://github.com/galaxyproject/galaxy/commit/bb6a784f13ff3f91762244d44884…
So I think this should be part of 15.10.
Thanks to Greg for fixing this one.
Commit: 7e67368424a718f2e156b961aaf0a1a9672df9ce
https://github.com/galaxyproject/galaxy/commit/7e67368424a718f2e156b961aaf0…
Author: Björn Grüning <bjoern(a)gruenings.eu>
Date: 2015-11-15 (Sun, 15 Nov 2015)
Changed paths:
M lib/galaxy/webapps/galaxy/api/tool_shed_repositories.py
Log Message:
-----------
Don't fail if a repository is already installed
If an repository is already installed `installed_tool_shed_repositories` is None and this does not work with map.
Commit: f629cbdb6aa34a349e088382a51054a946e0185e
https://github.com/galaxyproject/galaxy/commit/f629cbdb6aa34a349e088382a510…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-15 (Sun, 15 Nov 2015)
Changed paths:
M lib/galaxy/tools/__init__.py
Log Message:
-----------
Refactor tool parsing, parse id first.
Small refactoring cleans up downstream diff for dynamic tool branch.
Commit: 8189fb450bdb90f3ff7af220c573c128ed776085
https://github.com/galaxyproject/galaxy/commit/8189fb450bdb90f3ff7af220c573…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-15 (Sun, 15 Nov 2015)
Changed paths:
M lib/galaxy/workflow/extract.py
M lib/galaxy/workflow/modules.py
Log Message:
-----------
Add tool version to workflow extract.
Commit: 0b070f406c650e664c413dc60897fafd6e3611a8
https://github.com/galaxyproject/galaxy/commit/0b070f406c650e664c413dc60897…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-15 (Sun, 15 Nov 2015)
Changed paths:
M lib/galaxy/managers/workflows.py
M lib/galaxy/web/base/controller.py
M lib/galaxy/webapps/galaxy/api/workflows.py
Log Message:
-----------
Add app property to workflow contents manager.
Most other managers already have this.
Commit: 38f0ed5d043951cc06abeaab9bbf1f4d888e372a
https://github.com/galaxyproject/galaxy/commit/38f0ed5d043951cc06abeaab9bbf…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-15 (Sun, 15 Nov 2015)
Changed paths:
M templates/show_params.mako
Log Message:
-----------
Improve the API attributes on parameters page.
Make clear what API ID is and add display of API value for job.
Commit: bbe7fbe38c57fd89434eea850621770a1d355231
https://github.com/galaxyproject/galaxy/commit/bbe7fbe38c57fd89434eea850621…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-11-15 (Sun, 15 Nov 2015)
Changed paths:
M templates/show_params.mako
Log Message:
-----------
Merge pull request #1098 from jmchilton/show_param
Improve the API attributes on parameters page.
Commit: a26526b085c29d41f5662b7f80dee7e3e7a7c294
https://github.com/galaxyproject/galaxy/commit/a26526b085c29d41f5662b7f80de…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-11-15 (Sun, 15 Nov 2015)
Changed paths:
M lib/galaxy/webapps/tool_shed/api/repositories.py
Log Message:
-----------
Merge pull request #1094 from bgruening/fix_api_ts_installation
Fix api TS installation
Commit: cfe45d8e0c357cbe191a346a2ae05e1625bb5010
https://github.com/galaxyproject/galaxy/commit/cfe45d8e0c357cbe191a346a2ae0…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-11-15 (Sun, 15 Nov 2015)
Changed paths:
M lib/galaxy/webapps/galaxy/api/tool_shed_repositories.py
Log Message:
-----------
Merge pull request #1095 from bgruening/ts_api_fail_if_installed
Don't fail if a repository is already installed
Commit: b19e71ec465c7145840acf684f8f09eeebb99b5a
https://github.com/galaxyproject/galaxy/commit/b19e71ec465c7145840acf684f8f…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2015-11-16 (Mon, 16 Nov 2015)
Changed paths:
M run_tests.sh
Log Message:
-----------
Update run_tests.sh help for #844.
Commit: b8870bfedc008d378481bd6740f31ff516271c16
https://github.com/galaxyproject/galaxy/commit/b8870bfedc008d378481bd6740f3…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-16 (Mon, 16 Nov 2015)
Changed paths:
M client/galaxy/scripts/mvc/tool/tools.js
M client/galaxy/scripts/viz/trackster/tracks.js
M client/galaxy/style/less/trackster.less
M lib/galaxy/datatypes/converters/lped_to_pbed_converter.py
M lib/galaxy/datatypes/converters/pbed_to_lped_converter.py
M lib/galaxy/model/orm/scripts.py
M lib/galaxy/tools/toolbox/base.py
M lib/galaxy/web/base/controllers/admin.py
M lib/galaxy/webapps/galaxy/api/tool_shed_repositories.py
M lib/galaxy/webapps/tool_shed/api/repositories.py
M lib/galaxy/webapps/tool_shed/buildapp.py
M lib/galaxy/webapps/tool_shed/framework/middleware/hg.py
M static/maps/mvc/tool/tools.js.map
A static/maps/mvc/tools.js.map
M static/maps/viz/trackster/tracks.js.map
M static/scripts/mvc/tool/tools.js
A static/scripts/mvc/tools.js
M static/scripts/viz/trackster/tracks.js
M static/style/blue/trackster.css
M templates/admin/reload_tool.mako
M templates/show_params.mako
M test/docker/base/Dockerfile
M test/docker/base/ansible_vars.yml
M test/docker/base/provision.yml
M test/docker/base/run_test_wrapper.sh
M test/docker/base/start_mysql.sh
M tools/data_source/upload.py
Log Message:
-----------
(merge dev)
Commit: 13eb47e789336f4ebfe0923ae07f0db81afd2d63
https://github.com/galaxyproject/galaxy/commit/13eb47e789336f4ebfe0923ae07f…
Author: Nicola Soranzo <nsoranzo(a)tiscali.it>
Date: 2015-11-16 (Mon, 16 Nov 2015)
Changed paths:
M doc/source/project/organization.rst
Log Message:
-----------
Merge pull request #1020 from dannon/issue_procedure
[PROCEDURES] Issue procedure linkage
Commit: d2d2ff12775bc630ff6705c7989fe84fed9cbdbb
https://github.com/galaxyproject/galaxy/commit/d2d2ff12775bc630ff6705c7989f…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-11-16 (Mon, 16 Nov 2015)
Changed paths:
M run_tests.sh
Log Message:
-----------
Merge pull request #1101 from nsoranzo/run_tests_sh
Update run_tests.sh help for #844.
Commit: bb089dfa424cefc64e65f1dd2aab5fe8fe1dad16
https://github.com/galaxyproject/galaxy/commit/bb089dfa424cefc64e65f1dd2aab…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-16 (Mon, 16 Nov 2015)
Changed paths:
M client/galaxy/scripts/galaxy-app-base.js
M static/maps/galaxy-app-base.js.map
M test/qunit/test-common.js
M test/qunit/tests/galaxy-app-base.js
Log Message:
-----------
Tests, qunit: fix import of underscore from libs, fix galaxy-app-base to not require config but have it passed in
Commit: 474a454958398bc3e70d16f7eaab5805aa89cf19
https://github.com/galaxyproject/galaxy/commit/474a454958398bc3e70d16f7eaab…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-16 (Mon, 16 Nov 2015)
Changed paths:
M client/galaxy/scripts/mvc/history/hda-model.js
M test/qunit/test-app.js
M test/qunit/test-common.js
M test/qunit/tests/workflow_editor_tests.js
Log Message:
-----------
Tests, qunit: galaxy_config.root->Galaxy.root, correct locations and shims of underscore and backbone in qunit tests
Commit: 39fe6b44bfbab9f490524dff902ceb80bc52a2ee
https://github.com/galaxyproject/galaxy/commit/39fe6b44bfbab9f490524dff902c…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-16 (Mon, 16 Nov 2015)
Changed paths:
M static/style/blue/autocomplete_tagging.css
M static/style/blue/base.css
M static/style/blue/embed_item.css
M static/style/blue/iphone.css
M static/style/blue/library.css
M static/style/blue/trackster.css
Log Message:
-----------
Rebuild styles, fixes history panel green being wrong.
Commit: 65301bb9c85a1c09fdd36890b68593b320fcf3e7
https://github.com/galaxyproject/galaxy/commit/65301bb9c85a1c09fdd36890b685…
Author: Aysam Guerler <aysam.guerler(a)gmail.com>
Date: 2015-11-16 (Mon, 16 Nov 2015)
Changed paths:
M static/style/blue/autocomplete_tagging.css
M static/style/blue/base.css
M static/style/blue/embed_item.css
M static/style/blue/iphone.css
M static/style/blue/library.css
M static/style/blue/trackster.css
Log Message:
-----------
Merge pull request #1102 from dannon/style_rebuild
Rebuild styles, fixes history panel green being wrong.
Commit: 0a09de5453540b55ddb43c63c430a5edfff120b1
https://github.com/galaxyproject/galaxy/commit/0a09de5453540b55ddb43c63c430…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-11-16 (Mon, 16 Nov 2015)
Changed paths:
M client/galaxy/scripts/mvc/app/app-login.js
M client/galaxy/scripts/utils/utils.js
M static/maps/mvc/app/app-login.js.map
M static/maps/utils/utils.js.map
M static/scripts/mvc/app/app-login.js
M static/scripts/utils/utils.js
Log Message:
-----------
Show welcome page with required login, remove iframes
Reinsert iframe for login
Use iframes
Commit: a610dc59a85519e3a84455ae5b2b23c3390017a5
https://github.com/galaxyproject/galaxy/commit/a610dc59a85519e3a84455ae5b2b…
Author: Lance Parsons <lparsons(a)princeton.edu>
Date: 2015-11-16 (Mon, 16 Nov 2015)
Changed paths:
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/tag_handler.py
Log Message:
-----------
Better error when tool shed repo dir missing
Check for a tool shed repository directory and throw exception if it's
missing. This avoids a cryptic NoneType error when searching for
tool_dependencies.xml file and directory was not found.
Commit: 0b788e97314a9e88b82fa3799127524b16a2adc2
https://github.com/galaxyproject/galaxy/commit/0b788e97314a9e88b82fa3799127…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-16 (Mon, 16 Nov 2015)
Changed paths:
M client/galaxy/scripts/mvc/app/app-login.js
M client/galaxy/scripts/utils/utils.js
M static/maps/mvc/app/app-login.js.map
M static/maps/utils/utils.js.map
M static/scripts/mvc/app/app-login.js
M static/scripts/utils/utils.js
Log Message:
-----------
Merge pull request #1105 from guerler/revise_require_login_003
Show welcome page with required login
Commit: 51f8e21218757fa82e30986a946bbb7fc5c7a2ac
https://github.com/galaxyproject/galaxy/commit/51f8e21218757fa82e30986a946b…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-16 (Mon, 16 Nov 2015)
Changed paths:
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/tag_handler.py
Log Message:
-----------
Merge pull request #1107 from lparsons/tool_shed_repo_dir_check
Better error when tool shed repo dir missing
Commit: d40d384a8672b5bc58db210a6e1aca41cb50e9d6
https://github.com/galaxyproject/galaxy/commit/d40d384a8672b5bc58db210a6e1a…
Author: youri <y.hoogstrate(a)erasmusmc.nl>
Date: 2015-11-16 (Mon, 16 Nov 2015)
Changed paths:
M config/datatypes_conf.xml.sample
M lib/galaxy/datatypes/binary.py
Log Message:
-----------
CRAM format
Commit: 3df95ae9a6f081090bb554b0778f145f0ec622fa
https://github.com/galaxyproject/galaxy/commit/3df95ae9a6f081090bb554b0778f…
Author: youri <y.hoogstrate(a)erasmusmc.nl>
Date: 2015-11-16 (Mon, 16 Nov 2015)
Changed paths:
M lib/galaxy/datatypes/binary.py
Log Message:
-----------
flake8
Commit: 727167b8d15063920d01c2f7651cc4a76c2caafc
https://github.com/galaxyproject/galaxy/commit/727167b8d15063920d01c2f7651c…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2015-11-16 (Mon, 16 Nov 2015)
Changed paths:
M run_tests.sh
Log Message:
-----------
Merge pull request #1083 from martenson/update-testing-docker-image
Update testing docker image
Commit: 71b27b0f018c6bc3997099137ff2c80ca088981d
https://github.com/galaxyproject/galaxy/commit/71b27b0f018c6bc3997099137ff2…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2015-11-16 (Mon, 16 Nov 2015)
Changed paths:
M templates/ind_share_base.mako
Log Message:
-----------
Select2 for sharing
This adjusts the default 'share' template to use the select2/exposed
user list implemented in 60ad9e934b3e4c50389a624a28578aa9fc326f32. As
previously, if the email list is not exposed then you may still enter an
email address manually.
If usernames are exposed but not emails (e.g. public galaxies) we
currently just hide those results even if searches match.
Fixes #977
Commit: 86bb4aeaca80b9fbf98ef89f92c1ce2a5bfc6208
https://github.com/galaxyproject/galaxy/commit/86bb4aeaca80b9fbf98ef89f92c1…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2015-11-16 (Mon, 16 Nov 2015)
Changed paths:
M templates/webapps/galaxy/history/share.mako
Log Message:
-----------
Patch other share implementation to handle case of undefined emails more gracefully
Commit: 944df4a5647a71304bab12185b708b4bb28da049
https://github.com/galaxyproject/galaxy/commit/944df4a5647a71304bab12185b70…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2015-11-16 (Mon, 16 Nov 2015)
Changed paths:
M lib/galaxy/webapps/galaxy/api/users.py
M templates/ind_share_base.mako
M templates/webapps/galaxy/history/share.mako
Log Message:
-----------
Followup to #1109, #1110, add f_any to user API
Commit: 312746d1698e99e13b9a60db881d0093da6cc4c0
https://github.com/galaxyproject/galaxy/commit/312746d1698e99e13b9a60db881d…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-17 (Tue, 17 Nov 2015)
Changed paths:
M lib/galaxy/tools/actions/__init__.py
A test/functional/tools/output_format_collection.xml
M test/functional/tools/samples_tool_conf.xml
M test/unit/tools/test_actions.py
Log Message:
-----------
Allow accessing collection elements in format_source.
Can do it by numeric index or element name, e.g. input[0] or input["forward"]. Only works for 1-D collections.
Implements #699.
Run new and most relevant existing tests with the following commands:
```
nosetests test/unit/tools/test_actions.py
./run_tests.sh -framework -id output_format_collection
./run_tests.sh -framework -id output_format
```
Commit: 0030f4c5499b0121e2c7e25388ac402272728ba7
https://github.com/galaxyproject/galaxy/commit/0030f4c5499b0121e2c7e25388ac…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-17 (Tue, 17 Nov 2015)
Changed paths:
M lib/galaxy/webapps/galaxy/api/workflows.py
Log Message:
-----------
API test fix from @nsoranzo.
Commit: 7018753bc9def1ec0b461f95918bb16d569ab326
https://github.com/galaxyproject/galaxy/commit/7018753bc9def1ec0b461f95918b…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-17 (Tue, 17 Nov 2015)
Changed paths:
M lib/galaxy/jobs/runners/__init__.py
Log Message:
-----------
Give writing job script more time to flush and sync during verification.
Still having occasional failures - https://jenkins.galaxyproject.org/job/docker-api/1172/testReport/junit/api.….
Commit: d8152f3336d68fbf9bdecd89fd866c94338c3557
https://github.com/galaxyproject/galaxy/commit/d8152f3336d68fbf9bdecd89fd86…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2015-11-17 (Tue, 17 Nov 2015)
Changed paths:
M client/galaxy/scripts/galaxy-app-base.js
M config/plugins/interactive_environments/ipython/config/ipython.ini.sample
M config/plugins/interactive_environments/ipython/templates/ipython.mako
M lib/galaxy/managers/configuration.py
M lib/galaxy/tools/parameters/dynamic_options.py
M lib/galaxy/web/base/interactive_environments.py
M lib/galaxy/webapps/galaxy/api/jobs.py
M static/maps/galaxy-app-base.js.map
M static/scripts/galaxy-app-base.js
M test/api/helpers.py
M test/api/test_jobs.py
M test/api/test_workflow_extraction.py
Log Message:
-----------
Merge branch 'release_15.10' into dev
Commit: 2374c55f7233a9b2ff4a72ff3c2535ce9dc732e3
https://github.com/galaxyproject/galaxy/commit/2374c55f7233a9b2ff4a72ff3c25…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2015-11-17 (Tue, 17 Nov 2015)
Changed paths:
M client/galaxy/scripts/galaxy-app-base.js
Log Message:
-----------
Fix removal of comment missed in merge.
Commit: 7b93a53a4cbe671c40bb39849ae354938fffa284
https://github.com/galaxyproject/galaxy/commit/7b93a53a4cbe671c40bb39849ae3…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-17 (Tue, 17 Nov 2015)
Changed paths:
M client/galaxy/scripts/apps/history-panel.js
M client/galaxy/scripts/apps/tool-panel.js
M client/galaxy/scripts/layout/masthead.js
M client/galaxy/scripts/layout/page.js
M client/galaxy/scripts/polyfills.js
M client/galaxy/scripts/utils/localization.js
M lib/galaxy/webapps/galaxy/controllers/user.py
M static/maps/layout/masthead.js.map
M static/maps/layout/page.js.map
M static/maps/polyfills.js.map
M static/maps/utils/localization.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/galaxy.bundled.js
M static/scripts/bundled/galaxy.bundled.js.map
M static/scripts/layout/masthead.js
M static/scripts/layout/page.js
M static/scripts/polyfills.js
M static/scripts/utils/localization.js
R static/style/blue/galaxy.frame.masthead.css
M templates/base/base_panels.mako
M templates/js-app.mako
M templates/webapps/galaxy/galaxy.masthead.mako
M test/casperjs/api-history-permission-tests.js
Log Message:
-----------
Webpack: polyfill object.assign for phantomjs; remove galaxy.frame.masthead.css in favor of adding styles locally; change css load order to prevent 'ui-button' name collision between base and jquery-ui
Commit: 9516b7179d541953ebaea4061300440d02f11bb7
https://github.com/galaxyproject/galaxy/commit/9516b7179d541953ebaea4061300…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2015-11-17 (Tue, 17 Nov 2015)
Changed paths:
M lib/galaxy/webapps/galaxy/api/users.py
Log Message:
-----------
Documented API call
Commit: d5fe49ec6f1250da732faaf5c605549183249938
https://github.com/galaxyproject/galaxy/commit/d5fe49ec6f1250da732faaf5c605…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2015-11-17 (Tue, 17 Nov 2015)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/dataset.py
M lib/galaxy/webapps/galaxy/controllers/history.py
M lib/galaxy/webapps/galaxy/controllers/visualization.py
M lib/galaxy/webapps/galaxy/controllers/workflow.py
Log Message:
-----------
Incorporate @nsoranzo's suggestions
Commit: e6d651be32f0afb34792a3be204df54c9e36bb53
https://github.com/galaxyproject/galaxy/commit/e6d651be32f0afb34792a3be204d…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-17 (Tue, 17 Nov 2015)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/dataset.py
M lib/galaxy/webapps/galaxy/controllers/history.py
M lib/galaxy/webapps/galaxy/controllers/user.py
M lib/galaxy/webapps/galaxy/controllers/visualization.py
M lib/galaxy/webapps/galaxy/controllers/workflow.py
Log Message:
-----------
Merge pull request #1091 from natefoo/webob-string-to-none
Fix bug with referer attribute type change in WebOb
Commit: 1063c175be53962e8d55097ddb04537cdbac5da6
https://github.com/galaxyproject/galaxy/commit/1063c175be53962e8d55097ddb04…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-17 (Tue, 17 Nov 2015)
Changed paths:
M lib/galaxy/jobs/runners/__init__.py
Log Message:
-----------
Merge pull request #1114 from jmchilton/sync_more
Give writing job script more time to flush and sync during verification.
Commit: f4db7587565c912005da35410228b293b11555cd
https://github.com/galaxyproject/galaxy/commit/f4db7587565c912005da35410228…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-17 (Tue, 17 Nov 2015)
Changed paths:
M cron/build_chrom_db.py
Log Message:
-----------
Merge pull request #1066 from nsoranzo/cron_ucsc
Check len files during download from UCSC.
Commit: 729ed463aa87d07bc27dc669ba80d0187dd85b47
https://github.com/galaxyproject/galaxy/commit/729ed463aa87d07bc27dc669ba80…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-11-17 (Tue, 17 Nov 2015)
Changed paths:
M config/datatypes_conf.xml.sample
M lib/galaxy/datatypes/binary.py
Log Message:
-----------
Merge pull request #1108 from yhoogstrate/cram_datatype
CRAM datatype definiton
Commit: 3d933edd32dd872a1e660a061cdef4cffc587ec0
https://github.com/galaxyproject/galaxy/commit/3d933edd32dd872a1e660a061cde…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-17 (Tue, 17 Nov 2015)
Changed paths:
M test/api/test_libraries.py
M test/base/api.py
M test/base/interactor.py
Log Message:
-----------
Merge pull request #1074 from martenson/lib-api-tests
[WIP] add more data libraries API tests
Commit: c252987b4c5febb7fa10db3c7359449f325fc9ca
https://github.com/galaxyproject/galaxy/commit/c252987b4c5febb7fa10db3c7359…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2015-11-18 (Wed, 18 Nov 2015)
Changed paths:
M client/galaxy/scripts/galaxy.menu.js
M lib/galaxy/webapps/galaxy/api/remote_files.py
M static/maps/galaxy.menu.js.map
M static/scripts/galaxy.menu.js
Log Message:
-----------
Merge branch 'master' into dev
Commit: 704144c16936e6ddedee9d509ee4361f50f152f2
https://github.com/galaxyproject/galaxy/commit/704144c16936e6ddedee9d509ee4…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-18 (Wed, 18 Nov 2015)
Changed paths:
M lib/galaxy/tools/evaluation.py
Log Message:
-----------
Don't let $input hang cheetah evaluation...
If $input is undefined. The Python input command was being used and causing Galaxy to hang during evaluation.
Commit: 0ff8a21891f7780dd30f81047cb5f8112c924b4a
https://github.com/galaxyproject/galaxy/commit/0ff8a21891f7780dd30f81047cb5…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-18 (Wed, 18 Nov 2015)
Changed paths:
M lib/galaxy/tools/evaluation.py
A test/functional/tools/cheetah_problem_unbound_var.xml
A test/functional/tools/cheetah_problem_unbound_var_input.xml
M test/functional/tools/samples_tool_conf.xml
Log Message:
-----------
Add example tools demonstrating cheetah problem (unbound variable).
Refine default override of input to raise an exception instead of just throwing in a dummy string.
Commit: 7dedb3ff18f06b123ac9d64ac1d9b42948ba903c
https://github.com/galaxyproject/galaxy/commit/7dedb3ff18f06b123ac9d64ac1d9…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-18 (Wed, 18 Nov 2015)
Changed paths:
A test/functional/tools/cheetah_problem_syntax_error.xml
M test/functional/tools/samples_tool_conf.xml
Log Message:
-----------
Add another cheetah syntax error example...
... ensure the test framework run the tool, detects that there is an error, and handles things appropriately.
Commit: b4c77b761799b3a8752a6fec500717b1a6f3818b
https://github.com/galaxyproject/galaxy/commit/b4c77b761799b3a8752a6fec5007…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-18 (Wed, 18 Nov 2015)
Changed paths:
M test/api/test_workflow_extraction.py
M test/api/test_workflows.py
M test/api/test_workflows_from_yaml.py
A test/api/workflows_format_2/README.txt
A test/api/workflows_format_2/__init__.py
A test/api/workflows_format_2/converter.py
A test/api/workflows_format_2/interface.py
A test/api/workflows_format_2/main.py
R test/api/yaml_to_workflow.py
M test/functional/tools/simple_constructs.yml
M test/unit/tools/test_parsing.py
Log Message:
-----------
Introduce "Format 2" workflow definitions.
This is a slight tightening up of the ad-hoc, experimental workflow YAML definition used by the test framework (and by Kyle, but lets just admit Kyle is part of Galaxy's test framework).
This format is still defined entirely client side by transcoding the YAML or python object description into real (or format 1) Galaxy workflows - so these cannot realisticaly be declared part of Galaxy's public interface and can remain experimental and subject to change.
In addition to refactoring the code implementing these workflows for upstream modifications to explore new features, the format itself has been made slightly more stringent in two ways:
- 'steps' must now be explicit (previously converted auto-convert list to dict).
- Ensure the workflow declared a 'class' is defined and the class is 'GalaxyWorkflow'.
This will help with discovery of workflow objects with downstream tooling (planemo for workflows?) and brings the Galaxy definition slightly more inline with the CWL definition for workflows (very slightly).
Commit: b25b8c3f243e87a196a6cb0fa23328ee7c7e26f7
https://github.com/galaxyproject/galaxy/commit/b25b8c3f243e87a196a6cb0fa233…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-18 (Wed, 18 Nov 2015)
Changed paths:
M lib/galaxy/tools/parser/xml.py
M lib/galaxy/tools/test.py
M test/base/twilltestcase.py
A test/functional/tools/maxseconds.xml
M test/functional/tools/samples_tool_conf.xml
Log Message:
-----------
Revise and fix waiting for tool tests.
- maxseconds on test tag stopped being respected at some point, fix that.
- maxseconds on test tag stopped being parsed at some later point, fix that.
- Revise default behavior so it can be overridden with yet another testing environment variable GALAXY_TEST_DEFAULT_WAIT.
- Add test case to ensure there is no future regression of these behaviors.
Commit: ee2b34c387d9bb6189c8befaa069887b535d413c
https://github.com/galaxyproject/galaxy/commit/ee2b34c387d9bb6189c8befaa069…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-18 (Wed, 18 Nov 2015)
Changed paths:
M config/datatypes_conf.xml.sample
M lib/galaxy/datatypes/text.py
Log Message:
-----------
Merge pull request #950 from fescudie/dev
Add BIOM v1 in default datatypes.
Commit: 7fef50f45fb6484fcb600cfd167e43d1a735a9d2
https://github.com/galaxyproject/galaxy/commit/7fef50f45fb6484fcb600cfd167e…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-18 (Wed, 18 Nov 2015)
Changed paths:
M lib/galaxy/web/base/controllers/admin.py
Log Message:
-----------
Merge pull request #881 from scholtalbers/role-page-fix
Fix the issue where too many datasets are linked to a certain role
Commit: e4e44be27b7b3ddf778eb95559b4d0f11e4aecb7
https://github.com/galaxyproject/galaxy/commit/e4e44be27b7b3ddf778eb95559b4…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-18 (Wed, 18 Nov 2015)
Changed paths:
M config/datatypes_conf.xml.sample
M lib/galaxy/datatypes/proteomics.py
Log Message:
-----------
Merge pull request #1004 from jj-umn/uniprotxml_datatype
UniProtXML datatype
Commit: f770128915df3fa9d8a3a9fe2c4a210fbd9ac2c6
https://github.com/galaxyproject/galaxy/commit/f770128915df3fa9d8a3a9fe2c4a…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-18 (Wed, 18 Nov 2015)
Changed paths:
M lib/galaxy/datatypes/data.py
Log Message:
-----------
Merge pull request #991 from erasche/fix-932
Fixes #932
Commit: 72faca1a3a81b6104c776353ee7b4dc03d6ae9be
https://github.com/galaxyproject/galaxy/commit/72faca1a3a81b6104c776353ee7b…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2015-11-18 (Wed, 18 Nov 2015)
Changed paths:
M doc/source/admin/interactive_environments.rst
Log Message:
-----------
Document GIE proxy config for nginx, mention the Ansible role.
Commit: 7ab070e9df6ebf0658c966942d38779fbc9d16f1
https://github.com/galaxyproject/galaxy/commit/7ab070e9df6ebf0658c966942d38…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2015-11-18 (Wed, 18 Nov 2015)
Changed paths:
M doc/source/admin/interactive_environments.rst
Log Message:
-----------
Merge pull request #1123 from natefoo/ie-docfix
Add nginx config for GIE proxy to documentation
Commit: d1d2f8388a4bc077275f535e41841158076a56de
https://github.com/galaxyproject/galaxy/commit/d1d2f8388a4bc077275f535e4184…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-18 (Wed, 18 Nov 2015)
Changed paths:
M client/galaxy/scripts/apps/analysis.js
M client/galaxy/scripts/apps/tool-panel.js
M client/galaxy/scripts/layout/masthead.js
M client/galaxy/scripts/layout/page.js
M client/galaxy/scripts/utils/query-string-parsing.js
M client/webpack.config.js
M config/galaxy.ini.sample
M lib/galaxy/config.py
M lib/galaxy/web/base/controller.py
M lib/galaxy/web/framework/webapp.py
M lib/galaxy/webapps/galaxy/buildapp.py
M lib/galaxy/webapps/galaxy/controllers/root.py
M lib/galaxy/webapps/galaxy/controllers/user.py
M static/maps/layout/masthead.js.map
M static/maps/layout/page.js.map
M static/maps/utils/query-string-parsing.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/galaxy.bundled.js
M static/scripts/bundled/galaxy.bundled.js.map
M static/scripts/layout/masthead.js
M static/scripts/layout/page.js
M static/scripts/utils/query-string-parsing.js
M templates/js-app.mako
Log Message:
-----------
Webpack: allow extending options from template call, add /login as app entry point for login app (still allowing user/login), add root/welcome and /login to allowed paths when require_login, fix None type error for redirect when visiting user/login directly, fix rendering of masthead, add query string to object util, correct job_id loading from index
Commit: 5eb9b206e798522fff1a9332e5d1a58c83528523
https://github.com/galaxyproject/galaxy/commit/5eb9b206e798522fff1a9332e5d1…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-18 (Wed, 18 Nov 2015)
Changed paths:
A client/galaxy/scripts/apps/login.js
A static/scripts/bundled/login.bundled.js
A static/scripts/bundled/login.bundled.js.map
Log Message:
-----------
Webpack: properly add login app to the repo
Commit: 17ec1b08fbc88c4960b94fbd19252c40e8a4e579
https://github.com/galaxyproject/galaxy/commit/17ec1b08fbc88c4960b94fbd1925…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-18 (Wed, 18 Nov 2015)
Changed paths:
M templates/webapps/galaxy/galaxy.panels.mako
Log Message:
-----------
Webpack: add masthead div to galaxy.panels.mako as a target for replacement and becauseiamgoingcrazyfromtheeightdifferentwayswehavetorenderwebpages
Commit: bd476ce146d47e12b25e4faacc6ae7eeed09fbe2
https://github.com/galaxyproject/galaxy/commit/bd476ce146d47e12b25e4faacc6a…
Author: jgoecks <jgoecks(a)gwu.edu>
Date: 2015-11-18 (Wed, 18 Nov 2015)
Changed paths:
M templates/webapps/galaxy/galaxy.panels.mako
Log Message:
-----------
Readd jquery.migrate to galaxy.panels template because it is needed for farbtastic, which is used in visualizations.
Commit: d2bab13fa92a87a3c4959d782ba0bf061ecf07db
https://github.com/galaxyproject/galaxy/commit/d2bab13fa92a87a3c4959d782ba0…
Author: Nicola Soranzo <nsoranzo(a)tiscali.it>
Date: 2015-11-19 (Thu, 19 Nov 2015)
Changed paths:
M lib/galaxy/tools/parser/xml.py
M lib/galaxy/tools/test.py
M test/base/twilltestcase.py
A test/functional/tools/maxseconds.xml
M test/functional/tools/samples_tool_conf.xml
Log Message:
-----------
Merge pull request #1119 from jmchilton/maxseconds
Revise and fix waiting for tool tests.
Commit: a3fee086c6dee9a688ffb7da13f71c1210cb76da
https://github.com/galaxyproject/galaxy/commit/a3fee086c6dee9a688ffb7da13f7…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-19 (Thu, 19 Nov 2015)
Changed paths:
M client/galaxy/style/less/galaxy_bootstrap/variables.less
Log Message:
-----------
Style: fix state-success-bg change that was not reverted during 5fd4daf
Commit: 5191c2136a9131005533faff4b0c1267f1ce35c1
https://github.com/galaxyproject/galaxy/commit/5191c2136a9131005533faff4b0c…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-19 (Thu, 19 Nov 2015)
Changed paths:
M client/galaxy/style/less/galaxy_bootstrap/variables.less
Log Message:
-----------
Merge pull request #1129 from carlfeberhard/fix.styles
Style: fix state-success-bg change that was not reverted during 5fd4daf
Commit: 40e3e7926aec154fa5f761cf5a7e84fad98b785c
https://github.com/galaxyproject/galaxy/commit/40e3e7926aec154fa5f761cf5a7e…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-19 (Thu, 19 Nov 2015)
Changed paths:
M static/style/blue/autocomplete_tagging.css
M static/style/blue/base.css
M static/style/blue/embed_item.css
M static/style/blue/iphone.css
M static/style/blue/library.css
M static/style/blue/trackster.css
Log Message:
-----------
Rebuild style with lessc > 2.5 (which everyone needs to update to now, or we'll have battling commits of packed css
Commit: 5c285eaee751a9257e01b6ae4fcff70305e34d56
https://github.com/galaxyproject/galaxy/commit/5c285eaee751a9257e01b6ae4fcf…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-19 (Thu, 19 Nov 2015)
Changed paths:
M client/GruntFile.js
M client/grunt-tasks/style.js
M client/package.json
M static/maps/galaxy-app-base.js.map
Log Message:
-----------
Add grunt check task to verify npm modules are up to date
Commit: d4a380b49d0c84fd1765aa5f6e6ad0f85f1b5585
https://github.com/galaxyproject/galaxy/commit/d4a380b49d0c84fd1765aa5f6e6a…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-19 (Thu, 19 Nov 2015)
Changed paths:
M client/package.json
Log Message:
-----------
Swap devDependencies for flat dependencies -- this allows npm ls (and thereby grunt-check-modules) to enforce dep versions.
Commit: af36ca6d9467932036d19a448ca4c74affffae9a
https://github.com/galaxyproject/galaxy/commit/af36ca6d9467932036d19a448ca4…
Author: Bjoern Gruening <bjoern.gruening(a)gmail.com>
Date: 2015-11-19 (Thu, 19 Nov 2015)
Changed paths:
A config/plugins/interactive_environments/bam_iobio/config/bam_iobio.ini.sample
A config/plugins/interactive_environments/bam_iobio/config/bam_iobio.xml
A config/plugins/interactive_environments/bam_iobio/static/js/bam_iobio.js
A config/plugins/interactive_environments/bam_iobio/templates/bam_iobio.mako
M config/plugins/interactive_environments/common/templates/ie.mako
M config/plugins/interactive_environments/ipython/config/ipython.ini.sample
M config/plugins/interactive_environments/ipython/static/js/ipython.js
M config/plugins/interactive_environments/rstudio/static/js/rstudio.js
M lib/galaxy/web/base/interactive_environments.py
Log Message:
-----------
add BAM iobio visualisation as Interactive Environment
Commit: 5188b4179063b3cc57c5c983d48a5fb62387d2b3
https://github.com/galaxyproject/galaxy/commit/5188b4179063b3cc57c5c983d48a…
Author: Bjoern Gruening <bjoern.gruening(a)gmail.com>
Date: 2015-11-19 (Thu, 19 Nov 2015)
Changed paths:
M lib/galaxy/web/base/interactive_environments.py
Log Message:
-----------
make travis happy
Commit: 81f842743d0c42522f7f80b603eccbc78d697a3c
https://github.com/galaxyproject/galaxy/commit/81f842743d0c42522f7f80b603ec…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2015-11-19 (Thu, 19 Nov 2015)
Changed paths:
A config/plugins/interactive_environments/bam_iobio/config/bam_iobio.ini.sample
A config/plugins/interactive_environments/bam_iobio/config/bam_iobio.xml
A config/plugins/interactive_environments/bam_iobio/static/js/bam_iobio.js
A config/plugins/interactive_environments/bam_iobio/templates/bam_iobio.mako
M config/plugins/interactive_environments/common/templates/ie.mako
M config/plugins/interactive_environments/ipython/config/ipython.ini.sample
M config/plugins/interactive_environments/ipython/static/js/ipython.js
M config/plugins/interactive_environments/rstudio/static/js/rstudio.js
M lib/galaxy/web/base/interactive_environments.py
Log Message:
-----------
Merge pull request #1131 from bgruening/IE_iobio
Add BAM iobio visualisation as Interactive Environment
Commit: 96b17bd8560f938ee9d3244b6cf5b198864c44ce
https://github.com/galaxyproject/galaxy/commit/96b17bd8560f938ee9d3244b6cf5…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-19 (Thu, 19 Nov 2015)
Changed paths:
M lib/galaxy/tools/evaluation.py
A test/functional/tools/cheetah_problem_syntax_error.xml
A test/functional/tools/cheetah_problem_unbound_var.xml
A test/functional/tools/cheetah_problem_unbound_var_input.xml
M test/functional/tools/samples_tool_conf.xml
Log Message:
-----------
Merge pull request #1117 from jmchilton/input_hang
Don't let $input hang cheetah evaluation...
Commit: f61ec1c3c01b51fe3449a583e1966cc3dff099f2
https://github.com/galaxyproject/galaxy/commit/f61ec1c3c01b51fe3449a583e196…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-19 (Thu, 19 Nov 2015)
Changed paths:
M client/galaxy/scripts/mvc/collection/list-collection-creator.js
M client/galaxy/scripts/mvc/collection/list-of-pairs-collection-creator.js
M client/galaxy/scripts/mvc/collection/pair-collection-creator.js
M client/galaxy/scripts/mvc/dataset/dataset-choice.js
M client/galaxy/scripts/mvc/dataset/dataset-li-edit.js
M client/galaxy/scripts/mvc/dataset/dataset-li.js
M client/galaxy/scripts/mvc/history/copy-dialog.js
M client/galaxy/scripts/mvc/history/history-panel.js
M client/galaxy/scripts/mvc/history/multi-panel.js
M client/galaxy/scripts/mvc/job/job-li.js
M client/galaxy/scripts/mvc/list/list-panel.js
M client/galaxy/scripts/mvc/ui/ui-select-default.js
M client/toolshed/scripts/mvc/groups/group-detail-view.js
M client/toolshed/scripts/mvc/groups/group-listrow-view.js
M lib/galaxy/util/xml_macros.py
M lib/galaxy/webapps/galaxy/controllers/admin.py
M lib/galaxy/webapps/galaxy/controllers/dataset.py
M lib/galaxy/webapps/galaxy/controllers/external_service.py
M lib/galaxy/webapps/galaxy/controllers/forms.py
M lib/galaxy/webapps/galaxy/controllers/history.py
M lib/galaxy/webapps/galaxy/controllers/library.py
M lib/galaxy/webapps/galaxy/controllers/library_admin.py
M lib/galaxy/webapps/galaxy/controllers/request_type.py
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
M lib/galaxy/webapps/galaxy/controllers/requests_common.py
M lib/galaxy/webapps/galaxy/controllers/visualization.py
M lib/galaxy/webapps/reports/controllers/jobs.py
M lib/galaxy/webapps/reports/controllers/sample_tracking.py
M lib/galaxy/webapps/reports/controllers/workflows.py
M lib/tool_shed/grids/admin_grids.py
M lib/tool_shed/grids/repository_grids.py
M lib/tool_shed/grids/repository_review_grids.py
M static/maps/galaxy-app-base.js.map
M static/maps/mvc/history/copy-dialog.js.map
M static/maps/mvc/ui/ui-select-default.js.map
M static/scripts/mvc/collection/list-collection-creator.js
M static/scripts/mvc/collection/list-of-pairs-collection-creator.js
M static/scripts/mvc/collection/pair-collection-creator.js
M static/scripts/mvc/dataset/dataset-choice.js
M static/scripts/mvc/dataset/dataset-li-edit.js
M static/scripts/mvc/dataset/dataset-li.js
M static/scripts/mvc/history/copy-dialog.js
M static/scripts/mvc/history/history-panel.js
M static/scripts/mvc/history/multi-panel.js
M static/scripts/mvc/job/job-li.js
M static/scripts/mvc/list/list-panel.js
M static/scripts/mvc/ui/ui-select-default.js
M test/unit/tools/test_tool_loader.py
Log Message:
-----------
Merge and rebuild client
Commit: 05ed245353331489ee443ac483b1569dab38f500
https://github.com/galaxyproject/galaxy/commit/05ed245353331489ee443ac483b1…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-19 (Thu, 19 Nov 2015)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/external_service.py
M lib/galaxy/webapps/galaxy/controllers/forms.py
M lib/galaxy/webapps/galaxy/controllers/request_type.py
M lib/galaxy/webapps/galaxy/controllers/requests_common.py
M lib/galaxy/webapps/reports/controllers/jobs.py
M lib/galaxy/webapps/reports/controllers/sample_tracking.py
M lib/galaxy/webapps/reports/controllers/workflows.py
M lib/tool_shed/grids/admin_grids.py
M lib/tool_shed/grids/repository_review_grids.py
Log Message:
-----------
Fix the bad merge :(
Commit: ed992b3b28c7f6d9d637e82e88305b665733a50b
https://github.com/galaxyproject/galaxy/commit/ed992b3b28c7f6d9d637e82e8830…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-19 (Thu, 19 Nov 2015)
Changed paths:
M client/galaxy/scripts/mvc/collection/list-collection-creator.js
M client/galaxy/scripts/mvc/collection/list-of-pairs-collection-creator.js
M client/galaxy/scripts/mvc/collection/pair-collection-creator.js
M client/galaxy/scripts/mvc/dataset/dataset-choice.js
M client/galaxy/scripts/mvc/dataset/dataset-li-edit.js
M client/galaxy/scripts/mvc/dataset/dataset-li.js
M client/galaxy/scripts/mvc/history/history-panel.js
M client/galaxy/scripts/mvc/history/multi-panel.js
M client/galaxy/scripts/mvc/job/job-li.js
M client/galaxy/scripts/mvc/list/list-panel.js
M client/galaxy/scripts/mvc/ui/ui-select-default.js
M client/toolshed/scripts/mvc/groups/group-detail-view.js
M client/toolshed/scripts/mvc/groups/group-listrow-view.js
M lib/galaxy/webapps/galaxy/controllers/admin.py
M lib/galaxy/webapps/galaxy/controllers/dataset.py
M lib/galaxy/webapps/galaxy/controllers/external_service.py
M lib/galaxy/webapps/galaxy/controllers/forms.py
M lib/galaxy/webapps/galaxy/controllers/history.py
M lib/galaxy/webapps/galaxy/controllers/library.py
M lib/galaxy/webapps/galaxy/controllers/library_admin.py
M lib/galaxy/webapps/galaxy/controllers/request_type.py
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
M lib/galaxy/webapps/galaxy/controllers/requests_common.py
M lib/galaxy/webapps/galaxy/controllers/visualization.py
M lib/galaxy/webapps/reports/controllers/jobs.py
M lib/galaxy/webapps/reports/controllers/sample_tracking.py
M lib/galaxy/webapps/reports/controllers/workflows.py
M lib/tool_shed/grids/admin_grids.py
M lib/tool_shed/grids/repository_grids.py
M lib/tool_shed/grids/repository_review_grids.py
M static/maps/mvc/history/multi-panel.js.map
M static/maps/mvc/ui/ui-select-default.js.map
M static/scripts/libs/jquery/jquery.dynatree.js
M static/scripts/mvc/collection/list-collection-creator.js
M static/scripts/mvc/collection/list-of-pairs-collection-creator.js
M static/scripts/mvc/collection/pair-collection-creator.js
M static/scripts/mvc/dataset/dataset-choice.js
M static/scripts/mvc/dataset/dataset-li-edit.js
M static/scripts/mvc/dataset/dataset-li.js
M static/scripts/mvc/history/history-panel.js
M static/scripts/mvc/history/multi-panel.js
M static/scripts/mvc/job/job-li.js
M static/scripts/mvc/list/list-panel.js
M static/scripts/mvc/ui/ui-select-default.js
Log Message:
-----------
A large assortment of escaping fixes to primarily grids and javascript
templating, and one bad-data-ingress fix (copy history name).
Commit: 458766b00f05a2d46c834d461e59201796ff0358
https://github.com/galaxyproject/galaxy/commit/458766b00f05a2d46c834d461e59…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-11-20 (Fri, 20 Nov 2015)
Changed paths:
M client/galaxy/scripts/mvc/app/app-analysis.js
M client/galaxy/scripts/mvc/dataset/dataset-li-edit.js
M client/galaxy/scripts/mvc/form/form-data.js
M client/galaxy/scripts/mvc/form/form-input.js
M client/galaxy/scripts/mvc/form/form-parameters.js
M client/galaxy/scripts/mvc/form/form-repeat.js
M client/galaxy/scripts/mvc/form/form-section.js
M client/galaxy/scripts/mvc/form/form-select-content.js
M client/galaxy/scripts/mvc/form/form-view.js
A client/galaxy/scripts/mvc/tool/tool-form-base.js
A client/galaxy/scripts/mvc/tool/tool-form-composite.js
A client/galaxy/scripts/mvc/tool/tool-form-workflow.js
A client/galaxy/scripts/mvc/tool/tool-form.js
A client/galaxy/scripts/mvc/tool/tool-template.js
M client/galaxy/scripts/mvc/tools.js
R client/galaxy/scripts/mvc/tools/tools-form-base.js
R client/galaxy/scripts/mvc/tools/tools-form-workflow.js
R client/galaxy/scripts/mvc/tools/tools-form.js
R client/galaxy/scripts/mvc/tools/tools-jobs.js
R client/galaxy/scripts/mvc/tools/tools-template.js
M client/galaxy/scripts/mvc/ui/ui-misc.js
M client/galaxy/scripts/mvc/ui/ui-portlet.js
M client/galaxy/scripts/mvc/ui/ui-slider.js
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M client/galaxy/scripts/utils/utils.js
M client/galaxy/style/less/galaxy_bootstrap/variables.less
M client/galaxy/style/less/ui.less
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/parameters/basic.py
M lib/galaxy/webapps/galaxy/api/workflows.py
M static/maps/galaxy-app-base.js.map
M static/maps/mvc/app/app-analysis.js.map
M static/maps/mvc/dataset/dataset-li-edit.js.map
M static/maps/mvc/form/form-data.js.map
M static/maps/mvc/form/form-input.js.map
M static/maps/mvc/form/form-parameters.js.map
M static/maps/mvc/form/form-repeat.js.map
M static/maps/mvc/form/form-section.js.map
M static/maps/mvc/form/form-select-content.js.map
M static/maps/mvc/form/form-view.js.map
A static/maps/mvc/tool/tool-form-base.js.map
A static/maps/mvc/tool/tool-form-composite.js.map
A static/maps/mvc/tool/tool-form-workflow.js.map
A static/maps/mvc/tool/tool-form.js.map
A static/maps/mvc/tool/tool-template.js.map
M static/maps/mvc/tools.js.map
R static/maps/mvc/tools/tools-form-base.js.map
R static/maps/mvc/tools/tools-form-workflow.js.map
R static/maps/mvc/tools/tools-form.js.map
R static/maps/mvc/tools/tools-jobs.js.map
R static/maps/mvc/tools/tools-template.js.map
M static/maps/mvc/ui/ui-misc.js.map
M static/maps/mvc/ui/ui-portlet.js.map
M static/maps/mvc/ui/ui-slider.js.map
M static/maps/mvc/workflow/workflow-view.js.map
M static/maps/utils/utils.js.map
M static/scripts/mvc/app/app-analysis.js
M static/scripts/mvc/dataset/dataset-li-edit.js
M static/scripts/mvc/form/form-data.js
M static/scripts/mvc/form/form-input.js
M static/scripts/mvc/form/form-parameters.js
M static/scripts/mvc/form/form-repeat.js
M static/scripts/mvc/form/form-section.js
M static/scripts/mvc/form/form-select-content.js
M static/scripts/mvc/form/form-view.js
A static/scripts/mvc/tool/tool-form-base.js
A static/scripts/mvc/tool/tool-form-composite.js
A static/scripts/mvc/tool/tool-form-workflow.js
A static/scripts/mvc/tool/tool-form.js
A static/scripts/mvc/tool/tool-template.js
M static/scripts/mvc/tools.js
R static/scripts/mvc/tools/tools-form-base.js
R static/scripts/mvc/tools/tools-form-workflow.js
R static/scripts/mvc/tools/tools-form.js
R static/scripts/mvc/tools/tools-jobs.js
R static/scripts/mvc/tools/tools-template.js
M static/scripts/mvc/ui/ui-misc.js
M static/scripts/mvc/ui/ui-portlet.js
M static/scripts/mvc/ui/ui-slider.js
M static/scripts/mvc/workflow/workflow-view.js
M static/scripts/utils/utils.js
M static/style/blue/base.css
M templates/webapps/galaxy/workflow/run.mako
Log Message:
-----------
Add run workflow tool form
Move styles to css
Improve handling of numeric workflow parameters
Commit: 7cd5713dbb3acc82ee7c01f5110d37cb413392c8
https://github.com/galaxyproject/galaxy/commit/7cd5713dbb3acc82ee7c01f5110d…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-20 (Fri, 20 Nov 2015)
Changed paths:
M client/galaxy/scripts/apps/analysis.js
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/galaxy.bundled.js
M static/scripts/bundled/galaxy.bundled.js.map
M static/scripts/bundled/login.bundled.js
M static/scripts/bundled/login.bundled.js.map
M templates/base.mako
M templates/base/base_panels.mako
M templates/display_base.mako
M templates/webapps/galaxy/dataset/display.mako
M templates/webapps/galaxy/dataset/tabular_chunked.mako
M templates/webapps/galaxy/galaxy.panels.mako
M test/casperjs/spaceghost.js
Log Message:
-----------
Webpack: simplify query routes in analysis, remove duplicate js in display.mako and tabular_chunked.mako, change order of requirejs import; testing, casperjs: quiet requirejs scripterrors when navigating away from pages
Commit: 9c5d4cfc0e95966f8a41e8dedf83ea4b4793868e
https://github.com/galaxyproject/galaxy/commit/9c5d4cfc0e95966f8a41e8dedf83…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-20 (Fri, 20 Nov 2015)
Changed paths:
M client/galaxy/scripts/galaxy-app-base.js
M client/galaxy/scripts/layout/menu.js
M client/galaxy/scripts/mvc/app/app-login.js
M client/galaxy/scripts/mvc/collection/list-collection-creator.js
M client/galaxy/scripts/mvc/collection/list-of-pairs-collection-creator.js
M client/galaxy/scripts/mvc/collection/pair-collection-creator.js
M client/galaxy/scripts/mvc/dataset/dataset-choice.js
M client/galaxy/scripts/mvc/dataset/dataset-li-edit.js
M client/galaxy/scripts/mvc/dataset/dataset-li.js
M client/galaxy/scripts/mvc/history/copy-dialog.js
M client/galaxy/scripts/mvc/history/history-view.js
M client/galaxy/scripts/mvc/history/multi-panel.js
M client/galaxy/scripts/mvc/job/job-li.js
M client/galaxy/scripts/mvc/list/list-view.js
M client/galaxy/scripts/mvc/ui/ui-select-default.js
M client/galaxy/scripts/utils/utils.js
M client/galaxy/style/less/galaxy_bootstrap/variables.less
M client/toolshed/scripts/mvc/groups/group-detail-view.js
M client/toolshed/scripts/mvc/groups/group-listrow-view.js
M config/datatypes_conf.xml.sample
A config/plugins/interactive_environments/bam_iobio/config/bam_iobio.ini.sample
A config/plugins/interactive_environments/bam_iobio/config/bam_iobio.xml
A config/plugins/interactive_environments/bam_iobio/static/js/bam_iobio.js
A config/plugins/interactive_environments/bam_iobio/templates/bam_iobio.mako
M config/plugins/interactive_environments/common/templates/ie.mako
M config/plugins/interactive_environments/ipython/config/ipython.ini.sample
M config/plugins/interactive_environments/ipython/static/js/ipython.js
M config/plugins/interactive_environments/ipython/templates/ipython.mako
M config/plugins/interactive_environments/rstudio/static/js/rstudio.js
M cron/build_chrom_db.py
M doc/source/admin/interactive_environments.rst
M doc/source/project/organization.rst
M lib/galaxy/datatypes/binary.py
M lib/galaxy/datatypes/data.py
M lib/galaxy/datatypes/proteomics.py
M lib/galaxy/datatypes/text.py
M lib/galaxy/jobs/runners/__init__.py
M lib/galaxy/managers/configuration.py
M lib/galaxy/tools/evaluation.py
M lib/galaxy/tools/parameters/dynamic_options.py
M lib/galaxy/tools/parser/xml.py
M lib/galaxy/tools/test.py
M lib/galaxy/util/xml_macros.py
M lib/galaxy/web/base/controllers/admin.py
M lib/galaxy/web/base/interactive_environments.py
M lib/galaxy/webapps/galaxy/api/jobs.py
M lib/galaxy/webapps/galaxy/api/remote_files.py
M lib/galaxy/webapps/galaxy/controllers/admin.py
M lib/galaxy/webapps/galaxy/controllers/dataset.py
M lib/galaxy/webapps/galaxy/controllers/external_service.py
M lib/galaxy/webapps/galaxy/controllers/forms.py
M lib/galaxy/webapps/galaxy/controllers/history.py
M lib/galaxy/webapps/galaxy/controllers/library.py
M lib/galaxy/webapps/galaxy/controllers/library_admin.py
M lib/galaxy/webapps/galaxy/controllers/request_type.py
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
M lib/galaxy/webapps/galaxy/controllers/requests_common.py
M lib/galaxy/webapps/galaxy/controllers/user.py
M lib/galaxy/webapps/galaxy/controllers/visualization.py
M lib/galaxy/webapps/galaxy/controllers/workflow.py
M lib/galaxy/webapps/reports/controllers/jobs.py
M lib/galaxy/webapps/reports/controllers/sample_tracking.py
M lib/galaxy/webapps/reports/controllers/workflows.py
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/tag_handler.py
M lib/tool_shed/grids/admin_grids.py
M lib/tool_shed/grids/repository_grids.py
M lib/tool_shed/grids/repository_review_grids.py
M run_tests.sh
M static/maps/galaxy-app-base.js.map
A static/maps/galaxy.menu.js.map
M static/maps/layout/menu.js.map
M static/maps/mvc/app/app-login.js.map
M static/maps/mvc/history/copy-dialog.js.map
M static/maps/mvc/ui/ui-select-default.js.map
M static/maps/utils/utils.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/galaxy.bundled.js.map
M static/scripts/bundled/login.bundled.js
M static/scripts/bundled/login.bundled.js.map
A static/scripts/galaxy.menu.js
M static/scripts/layout/menu.js
M static/scripts/mvc/app/app-login.js
M static/scripts/mvc/collection/list-collection-creator.js
M static/scripts/mvc/collection/list-of-pairs-collection-creator.js
M static/scripts/mvc/collection/pair-collection-creator.js
M static/scripts/mvc/dataset/dataset-choice.js
M static/scripts/mvc/dataset/dataset-li-edit.js
M static/scripts/mvc/dataset/dataset-li.js
M static/scripts/mvc/history/copy-dialog.js
A static/scripts/mvc/history/history-panel.js
M static/scripts/mvc/history/history-view.js
M static/scripts/mvc/history/multi-panel.js
M static/scripts/mvc/job/job-li.js
M static/scripts/mvc/list/list-view.js
M static/scripts/mvc/ui/ui-select-default.js
M static/scripts/utils/utils.js
M test/api/helpers.py
M test/api/test_jobs.py
M test/api/test_libraries.py
M test/api/test_workflow_extraction.py
M test/base/api.py
M test/base/interactor.py
M test/base/twilltestcase.py
A test/functional/tools/cheetah_problem_syntax_error.xml
A test/functional/tools/cheetah_problem_unbound_var.xml
A test/functional/tools/cheetah_problem_unbound_var_input.xml
A test/functional/tools/maxseconds.xml
M test/functional/tools/samples_tool_conf.xml
M test/unit/tools/test_tool_loader.py
Log Message:
-----------
(merge dev)
Commit: 0c22d138891604d0df98784ab7edc43e9b541c1d
https://github.com/galaxyproject/galaxy/commit/0c22d138891604d0df98784ab7ed…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-20 (Fri, 20 Nov 2015)
Changed paths:
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/actions/__init__.py
M lib/galaxy/tools/parser/xml.py
A test/functional/tools/collection_type_source.xml
M test/functional/tools/samples_tool_conf.xml
Log Message:
-----------
Implement type_source on output collections.
Inherit collection_type from an input, the way metadata and format can be.
This commit includes a test tool demonstrating this functionality. The tool test for this tool can be executed using the following command:
```
./run_tests.sh -framework -id collection_type_source
```
Commit: 9f7dff740f0133d6ba66abe067fb2edeb7a6b705
https://github.com/galaxyproject/galaxy/commit/9f7dff740f0133d6ba66abe067fb…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-11-20 (Fri, 20 Nov 2015)
Changed paths:
M client/galaxy/scripts/mvc/tool/tool-form-workflow.js
M static/maps/mvc/tool/tool-form-workflow.js.map
M static/scripts/mvc/tool/tool-form-workflow.js
Log Message:
-----------
Revise is_workflow setting
Commit: b8b0e4412247bd0f7611710ce69e0b4e9a76b4d7
https://github.com/galaxyproject/galaxy/commit/b8b0e4412247bd0f7611710ce69e…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-20 (Fri, 20 Nov 2015)
Changed paths:
M client/galaxy/scripts/galaxy.masthead.js
Log Message:
-----------
Strip whitespace
Commit: f0e28555af8129eae424c3e677b6bb22a4c68154
https://github.com/galaxyproject/galaxy/commit/f0e28555af8129eae424c3e677b6…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-20 (Fri, 20 Nov 2015)
Changed paths:
M client/galaxy/scripts/galaxy.masthead.js
M static/maps/galaxy.masthead.js.map
M static/scripts/galaxy.masthead.js
Log Message:
-----------
Support onclick for menu items.
Commit: dba7e6640f816325c853fcc320e97c454a465bae
https://github.com/galaxyproject/galaxy/commit/dba7e6640f816325c853fcc320e9…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-20 (Fri, 20 Nov 2015)
Changed paths:
M client/galaxy/scripts/layout/panel.js
M client/galaxy/scripts/mvc/tool/tools.js
M client/galaxy/scripts/templates/compiled/panel_section.js
M client/galaxy/scripts/templates/compiled/tool_form.js
M client/galaxy/scripts/templates/compiled/tool_link.js
M client/galaxy/scripts/templates/compiled/tool_search.js
M client/galaxy/scripts/viz/sweepster.js
M client/galaxy/scripts/viz/trackster/tracks.js
M client/grunt-tasks/templates.js
M static/maps/layout/panel.js.map
M static/maps/mvc/tool/tools.js.map
M static/maps/templates/compiled/panel_section.js.map
M static/maps/templates/compiled/tool_form.js.map
M static/maps/templates/compiled/tool_link.js.map
M static/maps/templates/compiled/tool_search.js.map
M static/maps/viz/sweepster.js.map
M static/maps/viz/trackster/tracks.js.map
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/layout/panel.js
M static/scripts/templates/compiled/panel_section.js
M static/scripts/templates/compiled/tool_form.js
M static/scripts/templates/compiled/tool_link.js
M static/scripts/templates/compiled/tool_search.js
M static/scripts/viz/sweepster.js
M static/scripts/viz/trackster/tracks.js
M templates/base/base_panels.mako
M templates/webapps/galaxy/visualization/sweepster.mako
Log Message:
-----------
Webpack: correct handlebars template generation to return an AMD function - this normalizes import of templates between webpack and require, fix sweepster tools import and templates
Commit: 0770d8d988b20e36c2178d906bd05c6471018edf
https://github.com/galaxyproject/galaxy/commit/0770d8d988b20e36c2178d906bd0…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-11-20 (Fri, 20 Nov 2015)
Changed paths:
M client/galaxy/scripts/mvc/tool/tool-form-base.js
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/parameters/basic.py
M lib/galaxy/webapps/galaxy/api/workflows.py
M static/maps/mvc/tool/tool-form-base.js.map
M static/scripts/mvc/tool/tool-form-base.js
M templates/webapps/galaxy/workflow/editor_tool_form.mako
M templates/webapps/galaxy/workflow/run.mako
Log Message:
-----------
Revise workflow mode flag handling
Fix comment
Commit: 7bb88b3f44a53fcd881d69f01d84d88624157ff5
https://github.com/galaxyproject/galaxy/commit/7bb88b3f44a53fcd881d69f01d84…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-11-20 (Fri, 20 Nov 2015)
Changed paths:
M lib/galaxy/managers/workflows.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/web/base/controller.py
M lib/galaxy/webapps/galaxy/api/workflows.py
M lib/galaxy/workflow/extract.py
M lib/galaxy/workflow/modules.py
Log Message:
-----------
Merge pull request #1097 from jmchilton/cwl_refactoring
Small Tool and Workflow Cleanups from CWL Work.
Commit: 81f1b7f8e0ce0febe18460e67a97651aa1fd72a3
https://github.com/galaxyproject/galaxy/commit/81f1b7f8e0ce0febe18460e67a97…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-20 (Fri, 20 Nov 2015)
Changed paths:
M client/galaxy/scripts/galaxy.masthead.js
M static/maps/galaxy.masthead.js.map
M static/scripts/galaxy.masthead.js
Log Message:
-----------
Remove debugging logic and shortcut.
Commit: 844facd1f1ea3d669cf7e61463c8ca8966c69006
https://github.com/galaxyproject/galaxy/commit/844facd1f1ea3d669cf7e61463c8…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-20 (Fri, 20 Nov 2015)
Changed paths:
M client/galaxy/scripts/mvc/base-mvc.js
M client/galaxy/scripts/mvc/list/list-panel.js
M static/maps/mvc/base-mvc.js.map
M static/maps/mvc/list/list-panel.js.map
M static/scripts/mvc/base-mvc.js
M static/scripts/mvc/list/list-panel.js
Log Message:
-----------
UI, Lists: throttle selector animation when number of list items > 20
Commit: 303af68c33699bada56ddbc95a5f8272401b2f0e
https://github.com/galaxyproject/galaxy/commit/303af68c33699bada56ddbc95a5f…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-11-20 (Fri, 20 Nov 2015)
Changed paths:
M client/galaxy/scripts/mvc/base-mvc.js
M client/galaxy/scripts/mvc/list/list-panel.js
M static/maps/mvc/base-mvc.js.map
M static/maps/mvc/list/list-panel.js.map
M static/scripts/mvc/base-mvc.js
M static/scripts/mvc/list/list-panel.js
Log Message:
-----------
Merge pull request #1149 from carlfeberhard/history.selector-anim
UI, Lists: throttle selector animation when number of list items > 20
Commit: 119e26f4e5f91a2091ff1cacffb3f2f99c4c79f4
https://github.com/galaxyproject/galaxy/commit/119e26f4e5f91a2091ff1cacffb3…
Author: carlfeberhard <carlfeberhard(a)users.noreply.github.com>
Date: 2015-11-20 (Fri, 20 Nov 2015)
Changed paths:
M client/galaxy/scripts/galaxy.masthead.js
M static/maps/galaxy.masthead.js.map
M static/scripts/galaxy.masthead.js
Log Message:
-----------
Merge pull request #1142 from dannon/menu_onclick_addition
Menu onclick addition
Commit: 51e098649070435570f9b68bf17ecc005da65bc2
https://github.com/galaxyproject/galaxy/commit/51e098649070435570f9b68bf17e…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-20 (Fri, 20 Nov 2015)
Changed paths:
A static/scripts/bundled/libs.bundled.js
A static/scripts/bundled/libs.bundled.js.map
Log Message:
-----------
Webpack: add in the libs bundles, Carl. They're kinda important.
Commit: baeaae99059fc94ae2a0dc059cfd448d05bdcbbe
https://github.com/galaxyproject/galaxy/commit/baeaae99059fc94ae2a0dc059cfd…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-20 (Fri, 20 Nov 2015)
Changed paths:
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/galaxy.bundled.js
M static/scripts/bundled/galaxy.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/bundled/login.bundled.js
M static/scripts/bundled/login.bundled.js.map
Log Message:
-----------
Webpack: rebuild bundles using webpack 1.12.8 as defined in the package.json
Commit: a664deeee76bcde33c725f37d61d8b41ea220b3d
https://github.com/galaxyproject/galaxy/commit/a664deeee76bcde33c725f37d61d…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-20 (Fri, 20 Nov 2015)
Changed paths:
M client/GruntFile.js
M client/grunt-tasks/style.js
M client/package.json
M static/style/blue/autocomplete_tagging.css
M static/style/blue/base.css
M static/style/blue/embed_item.css
M static/style/blue/iphone.css
M static/style/blue/library.css
M static/style/blue/trackster.css
Log Message:
-----------
Merge pull request #1130 from dannon/repack_dev
Enforce client build deps are up-to-date. Rebuild style with lessc > 2.5
Commit: ab0829f2e8df480d467f3b575c18a1ace38543cd
https://github.com/galaxyproject/galaxy/commit/ab0829f2e8df480d467f3b575c18…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-11-20 (Fri, 20 Nov 2015)
Changed paths:
M test/api/test_workflow_extraction.py
M test/api/test_workflows.py
M test/api/test_workflows_from_yaml.py
A test/api/workflows_format_2/README.txt
A test/api/workflows_format_2/__init__.py
A test/api/workflows_format_2/converter.py
A test/api/workflows_format_2/interface.py
A test/api/workflows_format_2/main.py
R test/api/yaml_to_workflow.py
M test/functional/tools/simple_constructs.yml
M test/unit/tools/test_parsing.py
Log Message:
-----------
Merge pull request #1096 from jmchilton/format_2
Outline "Format 2" workflow definitions.
Commit: 2e510bd5e12ab5e2c401e835e0f84f29376766db
https://github.com/galaxyproject/galaxy/commit/2e510bd5e12ab5e2c401e835e0f8…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-11-21 (Sat, 21 Nov 2015)
Changed paths:
M lib/galaxy/tools/actions/__init__.py
A test/functional/tools/output_format_collection.xml
M test/functional/tools/samples_tool_conf.xml
M test/unit/tools/test_actions.py
Log Message:
-----------
Merge pull request #1113 from jmchilton/format_source_collection
Allow accessing collection elements in format_source.
Commit: a16cb06705676aa49e725c8ab58521c239dfea4d
https://github.com/galaxyproject/galaxy/commit/a16cb06705676aa49e725c8ab585…
Author: Greg Von Kuster <ghv2(a)psu.edu>
Date: 2015-11-22 (Sun, 22 Nov 2015)
Changed paths:
M lib/tool_shed/util/shed_util_common.py
Log Message:
-----------
Fix for re-installing an uninstalled TS repository with a dependency
where both the repository and the dependency were updated in the TS
after the repository was uninstalled.
Commit: 11f9fed4acb3fb912bc0e0e5c0232fb85c974f2f
https://github.com/galaxyproject/galaxy/commit/11f9fed4acb3fb912bc0e0e5c023…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-11-22 (Sun, 22 Nov 2015)
Changed paths:
M lib/tool_shed/util/shed_util_common.py
Log Message:
-----------
Merge pull request #1154 from gregvonkuster/dev
Fix for re-installing an uninstalled TS repository with a dependency
Commit: b6451d0be60a3bf2ca7c65c7700cb7361cb50754
https://github.com/galaxyproject/galaxy/commit/b6451d0be60a3bf2ca7c65c7700c…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2015-11-23 (Mon, 23 Nov 2015)
Changed paths:
M lib/galaxy/tools/actions/__init__.py
M test/functional/tools/output_format_collection.xml
M test/unit/tools/test_actions.py
Log Message:
-----------
Fix bugs in test and code introduced in PR #1113.
Commit: 3cadcdffb51f3994ed6ca0f4a9508f31fba1c4a6
https://github.com/galaxyproject/galaxy/commit/3cadcdffb51f3994ed6ca0f4a950…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-23 (Mon, 23 Nov 2015)
Changed paths:
M lib/galaxy/tools/actions/__init__.py
M test/functional/tools/output_format_collection.xml
M test/unit/tools/test_actions.py
Log Message:
-----------
Merge pull request #1155 from nsoranzo/fix_for_1113
Fix bugs in test and code introduced in PR #1113.
Commit: 368da171f5f4490029fb6e80b888e5b091051901
https://github.com/galaxyproject/galaxy/commit/368da171f5f4490029fb6e80b888…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-11-23 (Mon, 23 Nov 2015)
Changed paths:
M client/galaxy/scripts/mvc/app/app-analysis.js
M config/plugins/visualizations/charts/templates/charts.mako
M static/maps/mvc/app/app-analysis.js.map
M static/scripts/mvc/app/app-analysis.js
Log Message:
-----------
Call onbeforeunload before hiding iframe through display()
Validated message
Commit: 9cc8e08537291a85885ee3ad52daeb36b95b4f8e
https://github.com/galaxyproject/galaxy/commit/9cc8e08537291a85885ee3ad52da…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-11-23 (Mon, 23 Nov 2015)
Changed paths:
M test/qunit/package.json
Log Message:
-----------
add local grunt-cli dependency for qunit tests
Commit: 77166a7295b1fe13f366414361b1752e6c0dd953
https://github.com/galaxyproject/galaxy/commit/77166a7295b1fe13f366414361b1…
Author: carlfeberhard <carlfeberhard(a)users.noreply.github.com>
Date: 2015-11-23 (Mon, 23 Nov 2015)
Changed paths:
M test/qunit/package.json
Log Message:
-----------
Merge pull request #1159 from martenson/local-grunt-cli-dep
add local grunt-cli dependency for qunit tests
Commit: 6e185fa208c27564b4cd2db5e31f55bf58c6eb4e
https://github.com/galaxyproject/galaxy/commit/6e185fa208c27564b4cd2db5e31f…
Author: Christian-B <github(a)brenn.co.uk>
Date: 2015-11-23 (Mon, 23 Nov 2015)
Changed paths:
M lib/galaxy/tools/deps/resolvers/unlinked_tool_shed_packages.py
Log Message:
-----------
Allowed for capitailsed packgae name such as R
Commit: 32728e23921553c75fda61acadb4f5dc82a4f915
https://github.com/galaxyproject/galaxy/commit/32728e23921553c75fda61acadb4…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-24 (Tue, 24 Nov 2015)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/tools/actions/__init__.py
Log Message:
-----------
Small optimizations to running tools.
Commit: 1ea68f938408b72f8f0f4ebe2545550baea85037
https://github.com/galaxyproject/galaxy/commit/1ea68f938408b72f8f0f4ebe2545…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-24 (Tue, 24 Nov 2015)
Changed paths:
M lib/galaxy/security/__init__.py
M lib/galaxy/tools/actions/__init__.py
Log Message:
-----------
Save a query per output during tool execution.
Commit: 42d006162c095669a2c7afe1ab0f1fb67b000798
https://github.com/galaxyproject/galaxy/commit/42d006162c095669a2c7afe1ab0f…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-24 (Tue, 24 Nov 2015)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/tools/actions/__init__.py
Log Message:
-----------
Another tool dataset creation optimization...
Rather than using three transactions to create an HDA, a dataset, and its roles - do this all in one transaction.
Commit: 01c57908eaf8bd589ce8738fdab14d415543d072
https://github.com/galaxyproject/galaxy/commit/01c57908eaf8bd589ce8738fdab1…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-24 (Tue, 24 Nov 2015)
Changed paths:
M lib/galaxy/model/__init__.py
Log Message:
-----------
Another tool execution optimization...
Prefetch all groups, roles, and associations when using User.all_users(). This reduces three queries down to one if the user has no groups or group roles and only belongs to the private user role, obviously the number of queries saved would increase more and more if the user belonged to multiple roles or groups.
Commit: 853efcea14d1ce11961d171324dbce03e6694117
https://github.com/galaxyproject/galaxy/commit/853efcea14d1ce11961d171324db…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2015-11-24 (Tue, 24 Nov 2015)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/tools/actions/__init__.py
Log Message:
-----------
Merge pull request #1163 from jmchilton/tool_opts_1
Small optimizations to running tools.
Commit: f3f8fef28a55c7b4e6994b08e3125a0d66a36140
https://github.com/galaxyproject/galaxy/commit/f3f8fef28a55c7b4e6994b08e312…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-24 (Tue, 24 Nov 2015)
Changed paths:
M client/galaxy/scripts/apps/analysis.js
R client/galaxy/scripts/apps/galaxy.js
M client/galaxy/scripts/apps/history-panel.js
M client/galaxy/scripts/apps/login.js
M client/galaxy/scripts/apps/tool-panel.js
M client/galaxy/scripts/galaxy-app-base.js
M client/grunt-tasks/scripts.js
M client/webpack.config.js
M lib/galaxy/web/base/controller.py
M static/maps/galaxy-app-base.js.map
R static/maps/galaxy.menu.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
R static/scripts/bundled/galaxy.bundled.js
R static/scripts/bundled/galaxy.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/bundled/login.bundled.js
M static/scripts/bundled/login.bundled.js.map
M static/scripts/galaxy-app-base.js
R static/scripts/galaxy.menu.js
M templates/js-app.mako
Log Message:
-----------
Webpack: move Galaxy object creation from mako to app js, clean up and localize page, panels, and app
Commit: b15a4082939be8b533dddf9a6a63efec9be6b817
https://github.com/galaxyproject/galaxy/commit/b15a4082939be8b533dddf9a6a63…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-24 (Tue, 24 Nov 2015)
Changed paths:
R client/galaxy/scripts/tools/rgenetics/checkbox_and_radiobutton.js
R client/galaxy/scripts/tools/rgenetics/helper_functions.js
R client/galaxy/scripts/tools/rgenetics/timer.js
R static/maps/tools/rgenetics/checkbox_and_radiobutton.js.map
R static/maps/tools/rgenetics/helper_functions.js.map
R static/maps/tools/rgenetics/timer.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/bundled/login.bundled.js
M static/scripts/bundled/login.bundled.js.map
R static/scripts/tools/rgenetics/checkbox_and_radiobutton.js
R static/scripts/tools/rgenetics/helper_functions.js
R static/scripts/tools/rgenetics/timer.js
Log Message:
-----------
Client: remove duplicate rgenetics directory tools/rgenetics
Commit: d921b4243101130d7de5517167eb38fa1aa6b1d3
https://github.com/galaxyproject/galaxy/commit/d921b4243101130d7de5517167eb…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-24 (Tue, 24 Nov 2015)
Changed paths:
R client/galaxy/scripts/mvc/app/app-analysis.js
R client/galaxy/scripts/mvc/app/app-login.js
R client/galaxy/scripts/mvc/app/app-view.js
R static/maps/mvc/app/app-analysis.js.map
R static/maps/mvc/app/app-login.js.map
R static/maps/mvc/app/app-view.js.map
R static/scripts/mvc/app/app-analysis.js
R static/scripts/mvc/app/app-login.js
R static/scripts/mvc/app/app-view.js
Log Message:
-----------
Webpack: remove mvc/app
Commit: 9f91b82245fc3ba467e8bef7b57bfc58ef02e9f0
https://github.com/galaxyproject/galaxy/commit/9f91b82245fc3ba467e8bef7b57b…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-24 (Tue, 24 Nov 2015)
Changed paths:
R client/galaxy/scripts/libs/IE/IE7.js
R client/galaxy/scripts/libs/IE/IE8.js
R client/galaxy/scripts/libs/IE/blank.gif
R client/galaxy/scripts/libs/IE/excanvas.js
R client/galaxy/scripts/libs/IE/ie7-recalc.js
M client/galaxy/scripts/libs/d3.js
M client/galaxy/scripts/mvc/workflow/workflow-connector.js
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M client/galaxy/scripts/polyfills.js
M client/galaxy/scripts/viz/visualization.js
A static/incompatible-browser.html
R static/maps/libs/IE/IE7.js.map
R static/maps/libs/IE/IE8.js.map
R static/maps/libs/IE/excanvas.js.map
R static/maps/libs/IE/ie7-recalc.js.map
M static/maps/mvc/workflow/workflow-connector.js.map
M static/maps/mvc/workflow/workflow-view.js.map
M static/maps/polyfills.js.map
M static/maps/viz/visualization.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/bundled/login.bundled.js
M static/scripts/bundled/login.bundled.js.map
R static/scripts/libs/IE/IE7.js
R static/scripts/libs/IE/IE8.js
R static/scripts/libs/IE/blank.gif
R static/scripts/libs/IE/excanvas.js
R static/scripts/libs/IE/ie7-recalc.js
M static/scripts/mvc/workflow/workflow-connector.js
M static/scripts/mvc/workflow/workflow-view.js
M static/scripts/polyfills.js
M static/scripts/viz/visualization.js
M templates/webapps/galaxy/visualization/display.mako
M templates/webapps/galaxy/visualization/display_in_frame.mako
M templates/webapps/galaxy/workflow/editor.mako
Log Message:
-----------
Client: remove IE7/8 and excanvas polyfills
Commit: e3e9579a812c468fba3f8a64fae7c7455e4b5a9e
https://github.com/galaxyproject/galaxy/commit/e3e9579a812c468fba3f8a64fae7…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-24 (Tue, 24 Nov 2015)
Changed paths:
M client/galaxy/scripts/apps/analysis.js
M client/galaxy/scripts/apps/login.js
R client/galaxy/scripts/galaxy-app-base.js
A client/galaxy/scripts/galaxy.js
R static/maps/galaxy-app-base.js.map
A static/maps/galaxy.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/bundled/login.bundled.js
M static/scripts/bundled/login.bundled.js.map
R static/scripts/galaxy-app-base.js
A static/scripts/galaxy.js
M templates/galaxy_client_app.mako
Log Message:
-----------
Webpack: pack scripts, move galaxy-app-base.js to galaxy.js
Commit: 11edf3559d7092c9e3fada3f04d9291bea64f2f0
https://github.com/galaxyproject/galaxy/commit/11edf3559d7092c9e3fada3f04d9…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2015-11-24 (Tue, 24 Nov 2015)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/security/__init__.py
M lib/galaxy/tools/actions/__init__.py
Log Message:
-----------
Merge pull request #1166 from jmchilton/tool_opts_2
Another set of tool execution optimizations
Commit: 4261403fad1c5fd1346b0cfe9fd25e97459cd028
https://github.com/galaxyproject/galaxy/commit/4261403fad1c5fd1346b0cfe9fd2…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-25 (Wed, 25 Nov 2015)
Changed paths:
M lib/galaxy/web/base/controller.py
M lib/galaxy/webapps/galaxy/controllers/workflow.py
Log Message:
-----------
Fixes for WorkflowContentsManager requiring app during init.
Commit: 6752fcc100e0448d6fef6d27dacb8e2467de88ee
https://github.com/galaxyproject/galaxy/commit/6752fcc100e0448d6fef6d27dacb…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-25 (Wed, 25 Nov 2015)
Changed paths:
M lib/galaxy/workflow/modules.py
M templates/webapps/galaxy/workflow/run.mako
Log Message:
-----------
Fix interface and usage of WorkflowModule.get_runtime_inputs.
Run workflow workflow form was broken for workflows with pause steps.
Fixes #1015 (thanks @afgane).
Commit: 68da0004709e88ed8a856d39e9fa4e64aa3bc653
https://github.com/galaxyproject/galaxy/commit/68da0004709e88ed8a856d39e9fa…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-25 (Wed, 25 Nov 2015)
Changed paths:
R client/galaxy/scripts/rgenetics/checkbox_and_radiobutton.js
R client/galaxy/scripts/rgenetics/helper_functions.js
R client/galaxy/scripts/rgenetics/timer.js
R static/maps/rgenetics/checkbox_and_radiobutton.js.map
R static/maps/rgenetics/helper_functions.js.map
R static/maps/rgenetics/timer.js.map
R static/scripts/rgenetics/checkbox_and_radiobutton.js
R static/scripts/rgenetics/helper_functions.js
R static/scripts/rgenetics/timer.js
Log Message:
-----------
Client, rgenetics: 'Nuke 'em all' - R.Lazarus
Commit: c408b0ec6515deccd92a264edd4ab78061a06b87
https://github.com/galaxyproject/galaxy/commit/c408b0ec6515deccd92a264edd4a…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-11-25 (Wed, 25 Nov 2015)
Changed paths:
M scripts/functional_tests.py
Log Message:
-----------
Do not check for tool migrations when running tests.
This is an inappropriate time for the check and causes slow down when running tests.
Commit: 4f6aad473d99d7327b3c2aa395f1b546a443fc02
https://github.com/galaxyproject/galaxy/commit/4f6aad473d99d7327b3c2aa395f1…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2015-11-25 (Wed, 25 Nov 2015)
Changed paths:
M config/tool_shed.ini.sample
A doc/source/releases/15.10.rst
M doc/source/releases/15.10_announce.rst
A doc/source/releases/16.01_announce.rst
M lib/galaxy/webapps/galaxy/controllers/dataset.py
M lib/galaxy/webapps/tool_shed/config.py
M scripts/bootstrap_history.py
M templates/webapps/galaxy/root/index.mako
Log Message:
-----------
Merge branch 'master' into dev
Commit: 6fda0e0aac54c1c9e758110b4868b4a3fece16aa
https://github.com/galaxyproject/galaxy/commit/6fda0e0aac54c1c9e758110b4868…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2015-11-25 (Wed, 25 Nov 2015)
Log Message:
-----------
Merge branch 'master' into dev
Conflicts:
run_tests.sh
Commit: f397584538f59d03d9c37d3f9366b455022e97b2
https://github.com/galaxyproject/galaxy/commit/f397584538f59d03d9c37d3f9366…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-11-25 (Wed, 25 Nov 2015)
Changed paths:
M client/galaxy/scripts/polyfills.js
M static/maps/polyfills.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/polyfills.js
M templates/base.mako
M templates/base/base_panels.mako
M templates/js-app.mako
Log Message:
-----------
Webpack: add link rel='index' with href to Galaxy.root, rework browser testing to use the same when redirecting to error pages
Commit: c11c07d9bb124d41a301c5adf8f81c42b99430cc
https://github.com/galaxyproject/galaxy/commit/c11c07d9bb124d41a301c5adf8f8…
Author: Dave B <dave(a)bx.psu.edu>
Date: 2015-11-25 (Wed, 25 Nov 2015)
Changed paths:
M .ci/flake8_blacklist.txt
M .ci/flake8_wrapper.sh
M .gitignore
A CODE_OF_CONDUCT.md
M CONTRIBUTING.md
M CONTRIBUTORS.md
M README.rst
M client/GruntFile.js
M client/galaxy/scripts/galaxy-app-base.js
M client/galaxy/scripts/galaxy.library.js
M client/galaxy/scripts/galaxy.masthead.js
M client/galaxy/scripts/galaxy.menu.js
M client/galaxy/scripts/galaxy.panels.js
M client/galaxy/scripts/libs/jquery/jquery.dynatree.js
M client/galaxy/scripts/libs/jquery/select2.js
A client/galaxy/scripts/mvc/app/app-analysis.js
A client/galaxy/scripts/mvc/app/app-login.js
A client/galaxy/scripts/mvc/app/app-view.js
M client/galaxy/scripts/mvc/base-mvc.js
M client/galaxy/scripts/mvc/citation/citation-model.js
M client/galaxy/scripts/mvc/collection/collection-li-edit.js
M client/galaxy/scripts/mvc/collection/collection-li.js
M client/galaxy/scripts/mvc/collection/collection-model.js
M client/galaxy/scripts/mvc/collection/collection-panel.js
M client/galaxy/scripts/mvc/collection/list-collection-creator.js
M client/galaxy/scripts/mvc/collection/list-of-pairs-collection-creator.js
M client/galaxy/scripts/mvc/collection/pair-collection-creator.js
M client/galaxy/scripts/mvc/dataset/dataset-choice.js
M client/galaxy/scripts/mvc/dataset/dataset-li-edit.js
M client/galaxy/scripts/mvc/dataset/dataset-li.js
M client/galaxy/scripts/mvc/dataset/dataset-list.js
M client/galaxy/scripts/mvc/dataset/dataset-model.js
M client/galaxy/scripts/mvc/form/form-input.js
M client/galaxy/scripts/mvc/form/form-parameters.js
M client/galaxy/scripts/mvc/form/form-repeat.js
M client/galaxy/scripts/mvc/form/form-section.js
M client/galaxy/scripts/mvc/form/form-select-content.js
M client/galaxy/scripts/mvc/form/form-view.js
M client/galaxy/scripts/mvc/grid/grid-model.js
M client/galaxy/scripts/mvc/grid/grid-template.js
M client/galaxy/scripts/mvc/grid/grid-view.js
A client/galaxy/scripts/mvc/history/copy-dialog.js
M client/galaxy/scripts/mvc/history/hda-li-edit.js
M client/galaxy/scripts/mvc/history/hdca-li.js
M client/galaxy/scripts/mvc/history/history-content-model.js
M client/galaxy/scripts/mvc/history/history-contents.js
M client/galaxy/scripts/mvc/history/history-model.js
M client/galaxy/scripts/mvc/history/history-panel-edit-current.js
M client/galaxy/scripts/mvc/history/history-panel.js
M client/galaxy/scripts/mvc/history/history-structure-view.js
M client/galaxy/scripts/mvc/history/multi-panel.js
M client/galaxy/scripts/mvc/history/options-menu.js
M client/galaxy/scripts/mvc/job/job-li.js
M client/galaxy/scripts/mvc/job/job-model.js
M client/galaxy/scripts/mvc/library/library-folderlist-view.js
M client/galaxy/scripts/mvc/library/library-folderrow-view.js
M client/galaxy/scripts/mvc/library/library-foldertoolbar-view.js
M client/galaxy/scripts/mvc/library/library-librarylist-view.js
M client/galaxy/scripts/mvc/library/library-librarytoolbar-view.js
M client/galaxy/scripts/mvc/library/library-model.js
M client/galaxy/scripts/mvc/list/list-item.js
M client/galaxy/scripts/mvc/list/list-panel.js
M client/galaxy/scripts/mvc/tags.js
M client/galaxy/scripts/mvc/tools.js
M client/galaxy/scripts/mvc/tools/tools-form-base.js
M client/galaxy/scripts/mvc/tools/tools-form-workflow.js
M client/galaxy/scripts/mvc/tools/tools-form.js
M client/galaxy/scripts/mvc/tools/tools-jobs.js
R client/galaxy/scripts/mvc/ui/ui-button-check.js
R client/galaxy/scripts/mvc/ui/ui-button-menu.js
A client/galaxy/scripts/mvc/ui/ui-buttons.js
M client/galaxy/scripts/mvc/ui/ui-color-picker.js
M client/galaxy/scripts/mvc/ui/ui-misc.js
M client/galaxy/scripts/mvc/ui/ui-modal.js
M client/galaxy/scripts/mvc/ui/ui-options.js
M client/galaxy/scripts/mvc/ui/ui-popover.js
M client/galaxy/scripts/mvc/ui/ui-select-default.js
A client/galaxy/scripts/mvc/upload/composite/composite-row.js
A client/galaxy/scripts/mvc/upload/composite/composite-view.js
A client/galaxy/scripts/mvc/upload/default/default-row.js
A client/galaxy/scripts/mvc/upload/default/default-view.js
M client/galaxy/scripts/mvc/upload/upload-button.js
M client/galaxy/scripts/mvc/upload/upload-ftp.js
M client/galaxy/scripts/mvc/upload/upload-model.js
R client/galaxy/scripts/mvc/upload/upload-row.js
M client/galaxy/scripts/mvc/upload/upload-settings.js
M client/galaxy/scripts/mvc/upload/upload-view.js
M client/galaxy/scripts/mvc/user/user-model.js
M client/galaxy/scripts/mvc/user/user-quotameter.js
M client/galaxy/scripts/mvc/visualization/visualization-model.js
M client/galaxy/scripts/mvc/workflow/workflow-terminals.js
M client/galaxy/scripts/reports_webapp/run_stats.js
M client/galaxy/scripts/templates/compiled/tool_link.js
M client/galaxy/scripts/templates/tool_link.handlebars
M client/galaxy/scripts/utils/add-logging.js
M client/galaxy/scripts/utils/deferred.js
M client/galaxy/scripts/utils/metrics-logger.js
M client/galaxy/scripts/utils/uploadbox.js
M client/galaxy/scripts/utils/utils.js
M client/galaxy/scripts/viz/trackster/tracks.js
M client/galaxy/style/less/base.less
M client/galaxy/style/less/bootstrap.less
M client/galaxy/style/less/galaxy_bootstrap/variables.less
M client/galaxy/style/less/history.less
M client/galaxy/style/less/library.less
M client/galaxy/style/less/list-item.less
M client/galaxy/style/less/reports.less
M client/galaxy/style/less/trackster.less
M client/galaxy/style/less/ui.less
M client/galaxy/style/less/upload.less
M client/grunt-tasks/scripts.js
M client/grunt-tasks/style.js
M client/package.json
M client/toolshed/scripts/mvc/groups/group-detail-view.js
M client/toolshed/scripts/mvc/groups/group-listrow-view.js
M config/auth_conf.xml.sample
M config/datatypes_conf.xml.sample
M config/galaxy.ini.sample
M config/job_conf.xml.sample_advanced
A config/plugins/interactive_environments/bam_iobio/config/bam_iobio.ini.sample
A config/plugins/interactive_environments/bam_iobio/config/bam_iobio.xml
A config/plugins/interactive_environments/bam_iobio/static/js/bam_iobio.js
A config/plugins/interactive_environments/bam_iobio/templates/bam_iobio.mako
M config/plugins/interactive_environments/common/templates/ie.mako
M config/plugins/interactive_environments/ipython/config/ipython.ini.sample
M config/plugins/interactive_environments/ipython/static/js/ipython.js
M config/plugins/interactive_environments/ipython/templates/ipython.mako
M config/plugins/interactive_environments/rstudio/config/rstudio.ini.sample
M config/plugins/interactive_environments/rstudio/static/js/rstudio.js
M config/plugins/interactive_environments/rstudio/templates/rstudio.mako
M config/plugins/visualizations/charts/static/build-app.js
M config/plugins/visualizations/charts/static/charts/jqplot/boxplot/wrapper.js
M config/plugins/visualizations/charts/static/charts/nvd3/pie/wrapper.js
M config/plugins/visualizations/charts/static/charts/tools.js
M config/plugins/visualizations/charts/static/views/group.js
M config/plugins/visualizations/charts/static/views/viewport.js
A config/plugins/visualizations/graphviz/README.md
A config/plugins/visualizations/graphviz/config/graphviz.xml
A config/plugins/visualizations/graphviz/static/css/style.css
A config/plugins/visualizations/graphviz/static/img/15xvbd5.png
A config/plugins/visualizations/graphviz/static/img/lite-blue-check.png
A config/plugins/visualizations/graphviz/static/js/collapse.js
A config/plugins/visualizations/graphviz/static/js/cytoscape.min.js
A config/plugins/visualizations/graphviz/static/js/graphVis.js
A config/plugins/visualizations/graphviz/static/js/jquery.qtip.js
A config/plugins/visualizations/graphviz/static/js/tip_centerwindow.js
A config/plugins/visualizations/graphviz/static/js/tip_followscroll.js
A config/plugins/visualizations/graphviz/static/js/toolPanelFunctions.js
A config/plugins/visualizations/graphviz/static/js/wz_tooltip.js
A config/plugins/visualizations/graphviz/templates/graphviz.mako
M config/tool_data_table_conf.xml.sample
M config/tool_shed.ini.sample
M contrib/galaxy_config_merger.py
M contrib/nagios/check_galaxy.py
M create_db.sh
M cron/add_manual_builds.py
M cron/build_chrom_db.py
M cron/cleanup_datasets.py
R dist-eggs.ini
A doc/source/admin/index.rst
A doc/source/admin/interactive_environments.png
A doc/source/admin/interactive_environments.rst
A doc/source/admin/interactive_environments.svg
A doc/source/admin/interactive_environments_success.png
A doc/source/admin/useful_scripts.rst
A doc/source/api/quickstart.rst
M doc/source/api_doc.rst
M doc/source/conf.py
A doc/source/dev/faq.rst
A doc/source/dev/index.rst
M doc/source/index.rst
M doc/source/lib/galaxy.auth.providers.rst
M doc/source/lib/galaxy.datatypes.rst
A doc/source/lib/galaxy.dependencies.rst
M doc/source/lib/galaxy.eggs.rst
R doc/source/lib/galaxy.jobs.runners.lwr_client.rst
R doc/source/lib/galaxy.jobs.runners.lwr_client.staging.rst
R doc/source/lib/galaxy.jobs.runners.lwr_client.transport.rst
M doc/source/lib/galaxy.jobs.runners.rst
M doc/source/lib/galaxy.rst
M doc/source/lib/galaxy.tools.deps.resolvers.rst
M doc/source/lib/galaxy.web.framework.middleware.rst
M doc/source/lib/galaxy.webapps.galaxy.controllers.rst
M doc/source/lib/galaxy.webapps.reports.controllers.rst
M doc/source/lib/galaxy.webapps.rst
M doc/source/lib/galaxy.webapps.tool_shed.api.rst
M doc/source/lib/modules.rst
R doc/source/lib/pkg_resources.rst
A doc/source/project/issues.rst
M doc/source/project/organization.rst
A doc/source/releases/15.07.rst
M doc/source/releases/15.07_announce.rst
A doc/source/releases/15.10.rst
A doc/source/releases/15.10_announce.rst
A doc/source/releases/16.01_announce.rst
M doc/source/releases/index.rst
M doc/source/ts_api_doc.rst
R eggs.ini
M lib/galaxy/__init__.py
M lib/galaxy/app.py
M lib/galaxy/auth/__init__.py
M lib/galaxy/auth/providers/ldap_ad.py
M lib/galaxy/config.py
M lib/galaxy/dataset_collections/matching.py
M lib/galaxy/dataset_collections/structure.py
M lib/galaxy/dataset_collections/type_description.py
M lib/galaxy/datatypes/binary.py
A lib/galaxy/datatypes/constructive_solid_geometry.py
M lib/galaxy/datatypes/converters/bedgraph_to_array_tree_converter.py
M lib/galaxy/datatypes/converters/bgzip.py
M lib/galaxy/datatypes/converters/gff_to_interval_index_converter.py
M lib/galaxy/datatypes/converters/interval_to_bed_converter.py
M lib/galaxy/datatypes/converters/interval_to_bedstrict_converter.py
M lib/galaxy/datatypes/converters/interval_to_coverage.py
M lib/galaxy/datatypes/converters/interval_to_fli.py
M lib/galaxy/datatypes/converters/interval_to_interval_index_converter.py
M lib/galaxy/datatypes/converters/interval_to_tabix_converter.py
M lib/galaxy/datatypes/converters/lped_to_pbed_converter.py
M lib/galaxy/datatypes/converters/maf_to_fasta_converter.py
M lib/galaxy/datatypes/converters/maf_to_interval_converter.py
M lib/galaxy/datatypes/converters/pbed_to_lped_converter.py
M lib/galaxy/datatypes/converters/pileup_to_interval_index_converter.py
M lib/galaxy/datatypes/converters/vcf_to_interval_index_converter.py
M lib/galaxy/datatypes/converters/vcf_to_vcf_bgzip.py
M lib/galaxy/datatypes/converters/wiggle_to_array_tree_converter.py
M lib/galaxy/datatypes/converters/wiggle_to_simple_converter.py
M lib/galaxy/datatypes/coverage.py
M lib/galaxy/datatypes/data.py
M lib/galaxy/datatypes/dataproviders/dataset.py
M lib/galaxy/datatypes/display_applications/util.py
M lib/galaxy/datatypes/genetics.py
M lib/galaxy/datatypes/interval.py
M lib/galaxy/datatypes/metadata.py
M lib/galaxy/datatypes/proteomics.py
M lib/galaxy/datatypes/registry.py
M lib/galaxy/datatypes/sequence.py
A lib/galaxy/datatypes/set_metadata_tool.xml
M lib/galaxy/datatypes/tabular.py
A lib/galaxy/datatypes/test/1.gg
A lib/galaxy/datatypes/test/oxli_countgraph.oxlicg
A lib/galaxy/datatypes/test/oxli_graphlabels.oxligl
A lib/galaxy/datatypes/test/oxli_nodegraph.oxling
A lib/galaxy/datatypes/test/oxli_stoptags.oxlist
A lib/galaxy/datatypes/test/oxli_subset.oxliss
A lib/galaxy/datatypes/test/oxli_tagset.oxlits
M lib/galaxy/datatypes/text.py
M lib/galaxy/datatypes/util/gff_util.py
A lib/galaxy/dependencies/__init__.py
A lib/galaxy/dependencies/conditional-requirements.txt
A lib/galaxy/dependencies/dev-requirements.txt
A lib/galaxy/dependencies/requirements.txt
M lib/galaxy/eggs/__init__.py
R lib/galaxy/eggs/dist.py
R lib/galaxy/eggs/scramble.py
M lib/galaxy/exceptions/__init__.py
M lib/galaxy/jobs/__init__.py
M lib/galaxy/jobs/actions/post.py
M lib/galaxy/jobs/command_factory.py
M lib/galaxy/jobs/deferred/__init__.py
M lib/galaxy/jobs/metrics/instrumenters/collectl.py
M lib/galaxy/jobs/output_checker.py
M lib/galaxy/jobs/runners/__init__.py
M lib/galaxy/jobs/runners/cli.py
M lib/galaxy/jobs/runners/condor.py
M lib/galaxy/jobs/runners/drmaa.py
M lib/galaxy/jobs/runners/local.py
R lib/galaxy/jobs/runners/lwr.py
R lib/galaxy/jobs/runners/lwr_client/__init__.py
R lib/galaxy/jobs/runners/lwr_client/action_mapper.py
R lib/galaxy/jobs/runners/lwr_client/amqp_exchange.py
R lib/galaxy/jobs/runners/lwr_client/amqp_exchange_factory.py
R lib/galaxy/jobs/runners/lwr_client/client.py
R lib/galaxy/jobs/runners/lwr_client/config_util.py
R lib/galaxy/jobs/runners/lwr_client/decorators.py
R lib/galaxy/jobs/runners/lwr_client/destination.py
R lib/galaxy/jobs/runners/lwr_client/interface.py
R lib/galaxy/jobs/runners/lwr_client/job_directory.py
R lib/galaxy/jobs/runners/lwr_client/manager.py
R lib/galaxy/jobs/runners/lwr_client/object_client.py
R lib/galaxy/jobs/runners/lwr_client/path_mapper.py
R lib/galaxy/jobs/runners/lwr_client/setup_handler.py
R lib/galaxy/jobs/runners/lwr_client/staging/__init__.py
R lib/galaxy/jobs/runners/lwr_client/staging/down.py
R lib/galaxy/jobs/runners/lwr_client/staging/up.py
R lib/galaxy/jobs/runners/lwr_client/transport/__init__.py
R lib/galaxy/jobs/runners/lwr_client/transport/curl.py
R lib/galaxy/jobs/runners/lwr_client/transport/standard.py
R lib/galaxy/jobs/runners/lwr_client/util.py
M lib/galaxy/jobs/runners/pbs.py
M lib/galaxy/jobs/runners/pulsar.py
A lib/galaxy/jobs/runners/util/drmaa/__init__.py
M lib/galaxy/jobs/runners/util/job_script/DEFAULT_JOB_FILE_TEMPLATE.sh
M lib/galaxy/jobs/runners/util/job_script/__init__.py
A lib/galaxy/jobs/runners/util/retry.py
A lib/galaxy/jobs/runners/util/sudo.py
M lib/galaxy/jobs/transfer_manager.py
M lib/galaxy/main.py
M lib/galaxy/managers/base.py
M lib/galaxy/managers/citations.py
M lib/galaxy/managers/collections.py
M lib/galaxy/managers/configuration.py
M lib/galaxy/managers/datasets.py
M lib/galaxy/managers/folders.py
M lib/galaxy/managers/hdas.py
M lib/galaxy/managers/histories.py
M lib/galaxy/managers/libraries.py
M lib/galaxy/managers/rbac_secured.py
M lib/galaxy/managers/sharable.py
M lib/galaxy/managers/users.py
M lib/galaxy/managers/workflows.py
M lib/galaxy/model/__init__.py
M lib/galaxy/model/custom_types.py
M lib/galaxy/model/mapping.py
M lib/galaxy/model/migrate/check.py
M lib/galaxy/model/migrate/versions/0001_initial_tables.py
M lib/galaxy/model/migrate/versions/0002_metadata_file_table.py
M lib/galaxy/model/migrate/versions/0003_security_and_libraries.py
M lib/galaxy/model/migrate/versions/0004_indexes_and_defaults.py
M lib/galaxy/model/migrate/versions/0005_cleanup_datasets_fix.py
M lib/galaxy/model/migrate/versions/0006_change_qual_datatype.py
M lib/galaxy/model/migrate/versions/0007_sharing_histories.py
M lib/galaxy/model/migrate/versions/0008_galaxy_forms.py
M lib/galaxy/model/migrate/versions/0009_request_table.py
M lib/galaxy/model/migrate/versions/0010_hda_display_at_authz_table.py
M lib/galaxy/model/migrate/versions/0011_v0010_mysql_index_fix.py
M lib/galaxy/model/migrate/versions/0012_user_address.py
M lib/galaxy/model/migrate/versions/0013_change_lib_item_templates_to_forms.py
M lib/galaxy/model/migrate/versions/0014_pages.py
M lib/galaxy/model/migrate/versions/0015_tagging.py
M lib/galaxy/model/migrate/versions/0016_v0015_mysql_index_fix.py
M lib/galaxy/model/migrate/versions/0017_library_item_indexes.py
M lib/galaxy/model/migrate/versions/0018_ordered_tags_and_page_tags.py
M lib/galaxy/model/migrate/versions/0019_request_library_folder.py
M lib/galaxy/model/migrate/versions/0020_library_upload_job.py
M lib/galaxy/model/migrate/versions/0021_user_prefs.py
M lib/galaxy/model/migrate/versions/0022_visualization_tables.py
M lib/galaxy/model/migrate/versions/0023_page_published_and_deleted_columns.py
M lib/galaxy/model/migrate/versions/0024_page_slug_unique_constraint.py
M lib/galaxy/model/migrate/versions/0025_user_info.py
M lib/galaxy/model/migrate/versions/0026_cloud_tables.py
M lib/galaxy/model/migrate/versions/0027_request_events.py
M lib/galaxy/model/migrate/versions/0028_external_metadata_file_override.py
M lib/galaxy/model/migrate/versions/0029_user_actions.py
M lib/galaxy/model/migrate/versions/0030_history_slug_column.py
M lib/galaxy/model/migrate/versions/0031_community_and_workflow_tags.py
M lib/galaxy/model/migrate/versions/0032_stored_workflow_slug_column.py
M lib/galaxy/model/migrate/versions/0033_published_cols_for_histories_and_workflows.py
M lib/galaxy/model/migrate/versions/0034_page_user_share_association.py
M lib/galaxy/model/migrate/versions/0035_item_annotations_and_workflow_step_tags.py
M lib/galaxy/model/migrate/versions/0036_add_deleted_column_to_library_template_assoc_tables.py
M lib/galaxy/model/migrate/versions/0037_samples_library.py
M lib/galaxy/model/migrate/versions/0038_add_inheritable_column_to_library_template_assoc_tables.py
M lib/galaxy/model/migrate/versions/0039_add_synopsis_column_to_library_table.py
M lib/galaxy/model/migrate/versions/0040_page_annotations.py
M lib/galaxy/model/migrate/versions/0041_workflow_invocation.py
M lib/galaxy/model/migrate/versions/0042_workflow_invocation_fix.py
M lib/galaxy/model/migrate/versions/0043_visualization_sharing_tagging_annotating.py
M lib/galaxy/model/migrate/versions/0044_add_notify_column_to_request_table.py
M lib/galaxy/model/migrate/versions/0045_request_type_permissions_table.py
M lib/galaxy/model/migrate/versions/0046_post_job_actions.py
M lib/galaxy/model/migrate/versions/0047_job_table_user_id_column.py
M lib/galaxy/model/migrate/versions/0048_dataset_instance_state_column.py
M lib/galaxy/model/migrate/versions/0049_api_keys_table.py
M lib/galaxy/model/migrate/versions/0050_drop_cloud_tables.py
M lib/galaxy/model/migrate/versions/0051_imported_col_for_jobs_table.py
M lib/galaxy/model/migrate/versions/0052_sample_dataset_table.py
M lib/galaxy/model/migrate/versions/0053_item_ratings.py
M lib/galaxy/model/migrate/versions/0054_visualization_dbkey.py
M lib/galaxy/model/migrate/versions/0055_add_pja_assoc_for_jobs.py
M lib/galaxy/model/migrate/versions/0056_workflow_outputs.py
M lib/galaxy/model/migrate/versions/0057_request_notify.py
M lib/galaxy/model/migrate/versions/0058_history_import_export.py
M lib/galaxy/model/migrate/versions/0059_sample_dataset_file_path.py
M lib/galaxy/model/migrate/versions/0060_history_archive_import.py
M lib/galaxy/model/migrate/versions/0061_tasks.py
M lib/galaxy/model/migrate/versions/0062_user_openid_table.py
M lib/galaxy/model/migrate/versions/0063_sequencer_table.py
M lib/galaxy/model/migrate/versions/0064_add_run_and_sample_run_association_tables.py
M lib/galaxy/model/migrate/versions/0065_add_name_to_form_fields_and_values.py
M lib/galaxy/model/migrate/versions/0066_deferred_job_and_transfer_job_tables.py
M lib/galaxy/model/migrate/versions/0067_populate_sequencer_table.py
M lib/galaxy/model/migrate/versions/0068_rename_sequencer_to_external_services.py
M lib/galaxy/model/migrate/versions/0069_rename_sequencer_form_type.py
M lib/galaxy/model/migrate/versions/0070_add_info_column_to_deferred_job_table.py
M lib/galaxy/model/migrate/versions/0071_add_history_and_workflow_to_sample.py
M lib/galaxy/model/migrate/versions/0072_add_pid_and_socket_columns_to_transfer_job_table.py
M lib/galaxy/model/migrate/versions/0073_add_ldda_to_implicit_conversion_table.py
M lib/galaxy/model/migrate/versions/0074_add_purged_column_to_library_dataset_table.py
M lib/galaxy/model/migrate/versions/0075_add_subindex_column_to_run_table.py
M lib/galaxy/model/migrate/versions/0076_fix_form_values_data_corruption.py
M lib/galaxy/model/migrate/versions/0077_create_tool_tag_association_table.py
M lib/galaxy/model/migrate/versions/0078_add_columns_for_disk_usage_accounting.py
M lib/galaxy/model/migrate/versions/0079_input_library_to_job_table.py
M lib/galaxy/model/migrate/versions/0080_quota_tables.py
M lib/galaxy/model/migrate/versions/0081_add_tool_version_to_hda_ldda.py
M lib/galaxy/model/migrate/versions/0082_add_tool_shed_repository_table.py
M lib/galaxy/model/migrate/versions/0083_add_prepare_files_to_task.py
M lib/galaxy/model/migrate/versions/0084_add_ldda_id_to_implicit_conversion_table.py
M lib/galaxy/model/migrate/versions/0085_add_task_info.py
M lib/galaxy/model/migrate/versions/0086_add_tool_shed_repository_table_columns.py
M lib/galaxy/model/migrate/versions/0087_tool_id_guid_map_table.py
M lib/galaxy/model/migrate/versions/0088_add_installed_changeset_revison_column.py
M lib/galaxy/model/migrate/versions/0089_add_object_store_id_columns.py
M lib/galaxy/model/migrate/versions/0090_add_tool_shed_repository_table_columns.py
M lib/galaxy/model/migrate/versions/0091_add_tool_version_tables.py
M lib/galaxy/model/migrate/versions/0092_add_migrate_tools_table.py
M lib/galaxy/model/migrate/versions/0093_add_job_params_col.py
M lib/galaxy/model/migrate/versions/0094_add_job_handler_col.py
M lib/galaxy/model/migrate/versions/0095_hda_subsets.py
M lib/galaxy/model/migrate/versions/0096_openid_provider.py
M lib/galaxy/model/migrate/versions/0097_add_ctx_rev_column.py
M lib/galaxy/model/migrate/versions/0098_genome_index_tool_data_table.py
M lib/galaxy/model/migrate/versions/0099_add_tool_dependency_table.py
M lib/galaxy/model/migrate/versions/0100_alter_tool_dependency_table_version_column.py
M lib/galaxy/model/migrate/versions/0101_drop_installed_changeset_revision_column.py
M lib/galaxy/model/migrate/versions/0102_add_tool_dependency_status_columns.py
M lib/galaxy/model/migrate/versions/0103_add_tool_shed_repository_status_columns.py
M lib/galaxy/model/migrate/versions/0104_update_genome_downloader_job_parameters.py
M lib/galaxy/model/migrate/versions/0105_add_cleanup_event_table.py
M lib/galaxy/model/migrate/versions/0106_add_missing_indexes.py
M lib/galaxy/model/migrate/versions/0107_add_exit_code_to_job_and_task.py
M lib/galaxy/model/migrate/versions/0108_add_extended_metadata.py
M lib/galaxy/model/migrate/versions/0109_add_repository_dependency_tables.py
M lib/galaxy/model/migrate/versions/0110_add_dataset_uuid.py
M lib/galaxy/model/migrate/versions/0111_add_job_destinations.py
M lib/galaxy/model/migrate/versions/0112_add_data_manager_history_association_and_data_manager_job_association_tables.py
M lib/galaxy/model/migrate/versions/0113_update_migrate_tools_table.py
M lib/galaxy/model/migrate/versions/0114_update_migrate_tools_table_again.py
M lib/galaxy/model/migrate/versions/0115_longer_user_password_field.py
M lib/galaxy/model/migrate/versions/0116_drop_update_available_col_add_tool_shed_status_col.py
M lib/galaxy/model/migrate/versions/0117_add_user_activation.py
M lib/galaxy/model/migrate/versions/0118_add_hda_extended_metadata.py
M lib/galaxy/model/migrate/versions/0119_job_metrics.py
M lib/galaxy/model/migrate/versions/0120_dataset_collections.py
M lib/galaxy/model/migrate/versions/0121_workflow_uuids.py
M lib/galaxy/model/migrate/versions/0123_add_workflow_request_tables.py
M lib/galaxy/model/migrate/versions/0124_job_state_history.py
M lib/galaxy/model/migrate/versions/0125_workflow_step_tracking.py
M lib/galaxy/model/migrate/versions/0126_password_reset.py
M lib/galaxy/model/migrate/versions/0127_output_collection_adjustments.py
M lib/galaxy/model/migrate/versions/0128_session_timeout.py
M lib/galaxy/model/migrate/versions/0129_job_external_output_metadata_validity.py
A lib/galaxy/model/migrate/versions/0130_change_pref_datatype.py
M lib/galaxy/model/orm/__init__.py
M lib/galaxy/model/orm/engine_factory.py
M lib/galaxy/model/orm/logging_connection_proxy.py
M lib/galaxy/model/orm/scripts.py
M lib/galaxy/model/search.py
M lib/galaxy/model/tool_shed_install/__init__.py
M lib/galaxy/model/tool_shed_install/migrate/check.py
M lib/galaxy/objectstore/__init__.py
M lib/galaxy/objectstore/rods.py
M lib/galaxy/objectstore/s3.py
M lib/galaxy/objectstore/s3_multipart_upload.py
M lib/galaxy/queue_worker.py
M lib/galaxy/queues.py
M lib/galaxy/quota/__init__.py
M lib/galaxy/security/__init__.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/actions/__init__.py
M lib/galaxy/tools/actions/upload_common.py
M lib/galaxy/tools/data_manager/manager.py
M lib/galaxy/tools/deps/commands.py
M lib/galaxy/tools/deps/docker_util.py
M lib/galaxy/tools/deps/dockerfiles.py
M lib/galaxy/tools/deps/resolvers/modules.py
M lib/galaxy/tools/deps/resolvers/tool_shed_packages.py
M lib/galaxy/tools/errors.py
M lib/galaxy/tools/evaluation.py
M lib/galaxy/tools/imp_exp/__init__.py
A lib/galaxy/tools/imp_exp/exp_history_to_archive.xml
M lib/galaxy/tools/imp_exp/export_history.py
M lib/galaxy/tools/lint.py
A lib/galaxy/tools/lint_util.py
M lib/galaxy/tools/linters/command.py
M lib/galaxy/tools/linters/help.py
M lib/galaxy/tools/linters/inputs.py
M lib/galaxy/tools/linters/outputs.py
A lib/galaxy/tools/linters/stdio.py
M lib/galaxy/tools/linters/tests.py
M lib/galaxy/tools/linters/top_level.py
A lib/galaxy/tools/linters/xml_order.py
M lib/galaxy/tools/loader_directory.py
M lib/galaxy/tools/parameters/basic.py
M lib/galaxy/tools/parameters/dynamic_options.py
M lib/galaxy/tools/parameters/grouping.py
M lib/galaxy/tools/parameters/meta.py
M lib/galaxy/tools/parameters/output_collect.py
M lib/galaxy/tools/parser/factory.py
M lib/galaxy/tools/parser/interface.py
M lib/galaxy/tools/parser/xml.py
M lib/galaxy/tools/parser/yaml.py
M lib/galaxy/tools/search/__init__.py
M lib/galaxy/tools/test.py
M lib/galaxy/tools/toolbox/base.py
M lib/galaxy/tools/toolbox/lineages/stock.py
M lib/galaxy/tools/util/maf_utilities.py
M lib/galaxy/tools/wrappers.py
M lib/galaxy/util/__init__.py
M lib/galaxy/util/bunch.py
M lib/galaxy/util/jstree.py
M lib/galaxy/util/log/fluent_log.py
M lib/galaxy/util/plugin_config.py
M lib/galaxy/util/template.py
M lib/galaxy/util/topsort.py
M lib/galaxy/util/xml_macros.py
M lib/galaxy/version.py
M lib/galaxy/visualization/data_providers/genome.py
M lib/galaxy/visualization/plugins/config_parser.py
M lib/galaxy/visualization/plugins/plugin.py
M lib/galaxy/web/base/controller.py
M lib/galaxy/web/base/controllers/admin.py
M lib/galaxy/web/base/interactive_environments.py
M lib/galaxy/web/base/pluginframework.py
M lib/galaxy/web/framework/__init__.py
M lib/galaxy/web/framework/base.py
M lib/galaxy/web/framework/decorators.py
M lib/galaxy/web/framework/helpers/__init__.py
M lib/galaxy/web/framework/middleware/profile.py
M lib/galaxy/web/framework/middleware/remoteuser.py
M lib/galaxy/web/framework/middleware/sentry.py
A lib/galaxy/web/framework/middleware/statsd.py
M lib/galaxy/web/framework/openid_manager.py
M lib/galaxy/web/framework/webapp.py
M lib/galaxy/web/proxy/__init__.py
M lib/galaxy/web/proxy/js/package.json
M lib/galaxy/web/security/__init__.py
M lib/galaxy/webapps/galaxy/api/datatypes.py
M lib/galaxy/webapps/galaxy/api/folders.py
M lib/galaxy/webapps/galaxy/api/histories.py
M lib/galaxy/webapps/galaxy/api/history_contents.py
M lib/galaxy/webapps/galaxy/api/jobs.py
M lib/galaxy/webapps/galaxy/api/lda_datasets.py
M lib/galaxy/webapps/galaxy/api/library_contents.py
M lib/galaxy/webapps/galaxy/api/quotas.py
M lib/galaxy/webapps/galaxy/api/remote_files.py
M lib/galaxy/webapps/galaxy/api/requests.py
M lib/galaxy/webapps/galaxy/api/roles.py
M lib/galaxy/webapps/galaxy/api/tool_shed_repositories.py
M lib/galaxy/webapps/galaxy/api/tools.py
M lib/galaxy/webapps/galaxy/api/users.py
M lib/galaxy/webapps/galaxy/api/workflows.py
M lib/galaxy/webapps/galaxy/buildapp.py
M lib/galaxy/webapps/galaxy/controllers/admin.py
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/galaxy/controllers/async.py
R lib/galaxy/webapps/galaxy/controllers/cloudlaunch.py
M lib/galaxy/webapps/galaxy/controllers/data_manager.py
M lib/galaxy/webapps/galaxy/controllers/dataset.py
M lib/galaxy/webapps/galaxy/controllers/external_service.py
M lib/galaxy/webapps/galaxy/controllers/forms.py
M lib/galaxy/webapps/galaxy/controllers/history.py
M lib/galaxy/webapps/galaxy/controllers/library.py
M lib/galaxy/webapps/galaxy/controllers/library_admin.py
M lib/galaxy/webapps/galaxy/controllers/library_common.py
M lib/galaxy/webapps/galaxy/controllers/mobile.py
M lib/galaxy/webapps/galaxy/controllers/request_type.py
M lib/galaxy/webapps/galaxy/controllers/requests.py
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
M lib/galaxy/webapps/galaxy/controllers/requests_common.py
M lib/galaxy/webapps/galaxy/controllers/root.py
M lib/galaxy/webapps/galaxy/controllers/tool_runner.py
R lib/galaxy/webapps/galaxy/controllers/ucsc_proxy.py
M lib/galaxy/webapps/galaxy/controllers/user.py
M lib/galaxy/webapps/galaxy/controllers/userskeys.py
M lib/galaxy/webapps/galaxy/controllers/visualization.py
M lib/galaxy/webapps/galaxy/controllers/workflow.py
M lib/galaxy/webapps/reports/app.py
M lib/galaxy/webapps/reports/buildapp.py
M lib/galaxy/webapps/reports/controllers/home.py
M lib/galaxy/webapps/reports/controllers/jobs.py
M lib/galaxy/webapps/reports/controllers/query.py
M lib/galaxy/webapps/reports/controllers/sample_tracking.py
M lib/galaxy/webapps/reports/controllers/system.py
M lib/galaxy/webapps/reports/controllers/users.py
M lib/galaxy/webapps/reports/controllers/workflows.py
A lib/galaxy/webapps/tool_shed/api/configuration.py
M lib/galaxy/webapps/tool_shed/api/repositories.py
M lib/galaxy/webapps/tool_shed/api/repository_revisions.py
M lib/galaxy/webapps/tool_shed/app.py
M lib/galaxy/webapps/tool_shed/buildapp.py
M lib/galaxy/webapps/tool_shed/config.py
M lib/galaxy/webapps/tool_shed/controllers/admin.py
M lib/galaxy/webapps/tool_shed/controllers/hg.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/galaxy/webapps/tool_shed/controllers/repository_review.py
M lib/galaxy/webapps/tool_shed/controllers/upload.py
M lib/galaxy/webapps/tool_shed/framework/middleware/hg.py
M lib/galaxy/webapps/tool_shed/model/__init__.py
M lib/galaxy/webapps/tool_shed/model/mapping.py
M lib/galaxy/webapps/tool_shed/model/migrate/check.py
M lib/galaxy/webapps/tool_shed/model/migrate/versions/0001_initial_tables.py
M lib/galaxy/webapps/tool_shed/model/migrate/versions/0002_add_tool_suite_column.py
M lib/galaxy/webapps/tool_shed/model/migrate/versions/0003_review_and_review_association_tables.py
M lib/galaxy/webapps/tool_shed/model/migrate/versions/0004_repository_tables.py
M lib/galaxy/webapps/tool_shed/model/migrate/versions/0005_drop_tool_related_tables.py
M lib/galaxy/webapps/tool_shed/model/migrate/versions/0006_add_email_alerts_column.py
M lib/galaxy/webapps/tool_shed/model/migrate/versions/0007_add_long_description_times_downloaded_columns.py
M lib/galaxy/webapps/tool_shed/model/migrate/versions/0008_add_repository_metadata_table.py
M lib/galaxy/webapps/tool_shed/model/migrate/versions/0009_add_malicious_column.py
M lib/galaxy/webapps/tool_shed/model/migrate/versions/0010_add_new_repo_alert_column.py
M lib/galaxy/webapps/tool_shed/model/migrate/versions/0011_add_tool_versions_column.py
M lib/galaxy/webapps/tool_shed/model/migrate/versions/0012_add_downloadable_column.py
M lib/galaxy/webapps/tool_shed/model/migrate/versions/0013_add_review_tables.py
M lib/galaxy/webapps/tool_shed/model/migrate/versions/0014_add_deprecated_column.py
M lib/galaxy/webapps/tool_shed/model/migrate/versions/0015_add_api_keys_table.py
M lib/galaxy/webapps/tool_shed/model/migrate/versions/0016_add_do_not_test_tools_functionally_correct_errors_columns.py
M lib/galaxy/webapps/tool_shed/model/migrate/versions/0017_add_galaxy_utility_columns_to_repository_metadata_table.py
M lib/galaxy/webapps/tool_shed/model/migrate/versions/0018_add_repository_metadata_flag_columns.py
M lib/galaxy/webapps/tool_shed/model/migrate/versions/0019_add_skip_tool_test_table_and_test_install_error_column.py
M lib/galaxy/webapps/tool_shed/model/migrate/versions/0020_add_repository_type_column.py
M lib/galaxy/webapps/tool_shed/model/migrate/versions/0021_change_repository_type_value.py
M lib/galaxy/webapps/tool_shed/model/migrate/versions/0022_add_repository_admin_roles.py
M lib/galaxy/webapps/tool_shed/model/migrate/versions/0023_add_repository_url_and_hompeage_url.py
M lib/galaxy/webapps/tool_shed/model/migrate/versions/0024_password_reset.py
M lib/galaxy/webapps/tool_shed/model/migrate/versions/0025_session_timeout.py
M lib/galaxy/webapps/tool_shed/search/repo_search.py
M lib/galaxy/webapps/tool_shed/search/tool_search.py
M lib/galaxy/webapps/tool_shed/security/__init__.py
A lib/galaxy/webapps/util.py
M lib/galaxy/workflow/extract.py
M lib/galaxy/workflow/modules.py
M lib/galaxy/workflow/render.py
M lib/galaxy/workflow/run.py
M lib/galaxy_ext/metadata/set_metadata.py
M lib/galaxy_utils/sequence/fasta.py
M lib/galaxy_utils/sequence/fastq.py
M lib/galaxy_utils/sequence/sequence.py
M lib/galaxy_utils/sequence/transform.py
M lib/galaxy_utils/sequence/vcf.py
R lib/pkg_resources.py
M lib/pulsar/client/action_mapper.py
M lib/pulsar/client/amqp_exchange.py
M lib/pulsar/client/amqp_exchange_factory.py
M lib/pulsar/client/client.py
M lib/pulsar/client/config_util.py
M lib/pulsar/client/decorators.py
M lib/pulsar/client/interface.py
M lib/pulsar/client/manager.py
M lib/pulsar/client/staging/__init__.py
M lib/pulsar/client/staging/down.py
M lib/pulsar/client/staging/up.py
M lib/pulsar/client/transport/curl.py
M lib/pulsar/client/transport/poster.py
M lib/pulsar/client/transport/requests.py
M lib/pulsar/client/util.py
M lib/tool_shed/capsule/capsule_manager.py
M lib/tool_shed/dependencies/attribute_handlers.py
M lib/tool_shed/dependencies/repository/relation_builder.py
M lib/tool_shed/dependencies/tool/tag_attribute_handler.py
M lib/tool_shed/galaxy_install/datatypes/custom_datatype_manager.py
M lib/tool_shed/galaxy_install/dependency_display.py
M lib/tool_shed/galaxy_install/grids/admin_toolshed_grids.py
M lib/tool_shed/galaxy_install/install_manager.py
M lib/tool_shed/galaxy_install/installed_repository_manager.py
M lib/tool_shed/galaxy_install/metadata/installed_repository_metadata_manager.py
M lib/tool_shed/galaxy_install/migrate/check.py
M lib/tool_shed/galaxy_install/migrate/common.py
M lib/tool_shed/galaxy_install/migrate/versions/0001_tools.py
M lib/tool_shed/galaxy_install/migrate/versions/0002_tools.py
M lib/tool_shed/galaxy_install/migrate/versions/0003_tools.py
M lib/tool_shed/galaxy_install/migrate/versions/0004_tools.py
M lib/tool_shed/galaxy_install/migrate/versions/0005_tools.py
M lib/tool_shed/galaxy_install/migrate/versions/0006_tools.py
M lib/tool_shed/galaxy_install/migrate/versions/0007_tools.py
M lib/tool_shed/galaxy_install/migrate/versions/0008_tools.py
M lib/tool_shed/galaxy_install/migrate/versions/0009_tools.py
M lib/tool_shed/galaxy_install/migrate/versions/0010_tools.py
M lib/tool_shed/galaxy_install/migrate/versions/0011_tools.py
M lib/tool_shed/galaxy_install/migrate/versions/0012_tools.py
M lib/tool_shed/galaxy_install/repair_repository_manager.py
M lib/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py
M lib/tool_shed/galaxy_install/tool_dependencies/env_manager.py
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/asynchronous_reader.py
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/install_environment.py
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/recipe_manager.py
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/step_handler.py
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/tag_handler.py
M lib/tool_shed/galaxy_install/tool_migration_manager.py
M lib/tool_shed/galaxy_install/tools/data_manager.py
M lib/tool_shed/galaxy_install/update_repository_manager.py
M lib/tool_shed/galaxy_install/utility_containers/__init__.py
M lib/tool_shed/grids/admin_grids.py
M lib/tool_shed/grids/repository_grid_filter_manager.py
M lib/tool_shed/grids/repository_grids.py
M lib/tool_shed/grids/repository_review_grids.py
M lib/tool_shed/grids/util.py
M lib/tool_shed/managers/groups.py
M lib/tool_shed/metadata/metadata_generator.py
M lib/tool_shed/metadata/repository_metadata_manager.py
M lib/tool_shed/repository_registry.py
M lib/tool_shed/repository_types/metadata.py
M lib/tool_shed/repository_types/repository_suite_definition.py
M lib/tool_shed/repository_types/tool_dependency_definition.py
M lib/tool_shed/repository_types/util.py
M lib/tool_shed/scripts/api/add_repository_registry_entry.py
M lib/tool_shed/scripts/api/common.py
M lib/tool_shed/scripts/api/create_categories.py
M lib/tool_shed/scripts/api/create_users.py
M lib/tool_shed/scripts/api/export.py
M lib/tool_shed/scripts/api/get_filtered_repository_revisions.py
M lib/tool_shed/scripts/api/import_capsule.py
M lib/tool_shed/scripts/api/remove_repository_registry_entry.py
M lib/tool_shed/scripts/api/reset_metadata_on_repositories.py
M lib/tool_shed/scripts/api/tool_shed_repository_revision_update.py
M lib/tool_shed/scripts/bootstrap_tool_shed/bootstrap_util.py
M lib/tool_shed/scripts/bootstrap_tool_shed/create_user_with_api_key.py
M lib/tool_shed/scripts/check_filesystem_for_empty_tool_dependency_installation_paths.py
M lib/tool_shed/scripts/check_repositories_for_functional_tests.py
M lib/tool_shed/scripts/check_s3_for_empty_tool_dependency_installation_paths.py
M lib/tool_shed/scripts/check_tool_dependency_definition_repositories.py
M lib/tool_shed/scripts/clean_up_tool_dependency_directory.py
M lib/tool_shed/scripts/deprecate_repositories_without_metadata.py
M lib/tool_shed/scripts/show_tool_dependency_installation_dir_contents.py
M lib/tool_shed/tool_shed_registry.py
M lib/tool_shed/tools/data_table_manager.py
M lib/tool_shed/tools/tool_version_manager.py
M lib/tool_shed/util/basic_util.py
M lib/tool_shed/util/commit_util.py
M lib/tool_shed/util/common_util.py
M lib/tool_shed/util/container_util.py
M lib/tool_shed/util/encoding_util.py
M lib/tool_shed/util/hg_util.py
M lib/tool_shed/util/metadata_util.py
M lib/tool_shed/util/readme_util.py
M lib/tool_shed/util/repository_util.py
M lib/tool_shed/util/review_util.py
M lib/tool_shed/util/search_util.py
M lib/tool_shed/util/shed_util_common.py
M lib/tool_shed/util/tool_dependency_util.py
M lib/tool_shed/util/xml_util.py
M lib/tool_shed/utility_containers/__init__.py
M lib/tool_shed/utility_containers/utility_container_manager.py
M manage_db.sh
M manage_tools.sh
M requirements.txt
M run.sh
R run_functional_tests.sh
M run_reports.sh
M run_tests.sh
M run_tool_shed.sh
M scripts/api/common.py
A scripts/api/library_upload_dir.py
A scripts/binary_compatibility.py
M scripts/bootstrap_history.py
A scripts/bootstrap_history_announce_template.rst
M scripts/check_eggs.py
M scripts/check_galaxy.py
M scripts/cleanup_datasets/admin_cleanup_datasets.py
M scripts/cleanup_datasets/cleanup_datasets.py
M scripts/cleanup_datasets/pgcleanup.py
M scripts/common_startup.sh
M scripts/data_libraries/build_lucene_index.py
M scripts/data_libraries/build_whoosh_index.py
M scripts/db_shell.py
R scripts/dist-scramble.py
M scripts/drmaa_external_killer.py
M scripts/drmaa_external_runner.py
R scripts/egg_packager_template.py
M scripts/fetch_eggs.py
M scripts/functional_tests.py
A scripts/galaxy-main
R scripts/make_egg_packager.py
M scripts/manage_db.py
M scripts/manage_tools.py
M scripts/nosetests.py
M scripts/others/incorrect_gops_jobs.py
M scripts/others/incorrect_gops_join_jobs.py
M scripts/paster.py
R scripts/scramble.py
R scripts/scramble/lib/scramble_lib.py
R scripts/scramble/patches/Cheetah/SetupConfig.py
R scripts/scramble/patches/MySQL_python/site.cfg
R scripts/scramble/patches/PasteScript/setup.py
R scripts/scramble/patches/python_daemon/setup.py
R scripts/scramble/scripts/DRMAA_python-macosx.py
R scripts/scramble/scripts/DRMAA_python-solaris.py
R scripts/scramble/scripts/DRMAA_python.py
R scripts/scramble/scripts/MySQL_python-solaris.py
R scripts/scramble/scripts/MySQL_python.py
R scripts/scramble/scripts/PyRods.py
R scripts/scramble/scripts/bx_python-solaris.py
R scripts/scramble/scripts/generic.py
R scripts/scramble/scripts/pbs_python.py
R scripts/scramble/scripts/psycopg2-linux.py
R scripts/scramble/scripts/psycopg2-macosx.py
R scripts/scramble/scripts/psycopg2-solaris.py
R scripts/scramble/scripts/psycopg2.py
R scripts/scramble/scripts/pysam-solaris.py
R scripts/scramble/scripts/pysqlite.py
M scripts/summarize_timings.py
R scripts/test_dist_egg.py
M scripts/tool_shed/build_ts_whoosh_index.py
M scripts/tool_shed/migrate_tools_to_repositories.py
M scripts/tools/maf/check_loc_file.py
M scripts/transfer.py
M scripts/update_shed_config_path.py
M set_metadata.sh
M static/maps/galaxy-app-base.js.map
M static/maps/galaxy.library.js.map
M static/maps/galaxy.masthead.js.map
M static/maps/galaxy.menu.js.map
M static/maps/galaxy.panels.js.map
M static/maps/libs/jquery/jquery.dynatree.js.map
M static/maps/libs/jquery/select2.js.map
A static/maps/mvc/app/app-analysis.js.map
A static/maps/mvc/app/app-login.js.map
A static/maps/mvc/app/app-view.js.map
M static/maps/mvc/base-mvc.js.map
M static/maps/mvc/citation/citation-model.js.map
M static/maps/mvc/collection/collection-li-edit.js.map
M static/maps/mvc/collection/collection-li.js.map
M static/maps/mvc/collection/collection-model.js.map
M static/maps/mvc/collection/collection-panel.js.map
M static/maps/mvc/collection/list-collection-creator.js.map
M static/maps/mvc/collection/list-of-pairs-collection-creator.js.map
M static/maps/mvc/collection/pair-collection-creator.js.map
M static/maps/mvc/dataset/dataset-choice.js.map
M static/maps/mvc/dataset/dataset-li-edit.js.map
M static/maps/mvc/dataset/dataset-li.js.map
M static/maps/mvc/dataset/dataset-list.js.map
M static/maps/mvc/dataset/dataset-model.js.map
M static/maps/mvc/form/form-input.js.map
M static/maps/mvc/form/form-parameters.js.map
M static/maps/mvc/form/form-repeat.js.map
M static/maps/mvc/form/form-section.js.map
M static/maps/mvc/form/form-select-content.js.map
M static/maps/mvc/form/form-view.js.map
M static/maps/mvc/grid/grid-template.js.map
M static/maps/mvc/grid/grid-view.js.map
A static/maps/mvc/history/copy-dialog.js.map
M static/maps/mvc/history/hda-li-edit.js.map
M static/maps/mvc/history/hdca-li.js.map
M static/maps/mvc/history/history-content-model.js.map
M static/maps/mvc/history/history-contents.js.map
M static/maps/mvc/history/history-model.js.map
M static/maps/mvc/history/history-panel-edit-current.js.map
M static/maps/mvc/history/history-panel.js.map
M static/maps/mvc/history/history-structure-view.js.map
M static/maps/mvc/history/multi-panel.js.map
M static/maps/mvc/history/options-menu.js.map
M static/maps/mvc/job/job-model.js.map
M static/maps/mvc/library/library-folderlist-view.js.map
M static/maps/mvc/library/library-folderrow-view.js.map
M static/maps/mvc/library/library-foldertoolbar-view.js.map
M static/maps/mvc/library/library-librarylist-view.js.map
M static/maps/mvc/library/library-librarytoolbar-view.js.map
M static/maps/mvc/library/library-model.js.map
M static/maps/mvc/list/list-item.js.map
M static/maps/mvc/list/list-panel.js.map
M static/maps/mvc/tags.js.map
M static/maps/mvc/tools.js.map
M static/maps/mvc/tools/tools-form-base.js.map
M static/maps/mvc/tools/tools-form-workflow.js.map
M static/maps/mvc/tools/tools-form.js.map
M static/maps/mvc/tools/tools-jobs.js.map
R static/maps/mvc/ui/ui-button-check.js.map
R static/maps/mvc/ui/ui-button-menu.js.map
A static/maps/mvc/ui/ui-buttons.js.map
M static/maps/mvc/ui/ui-color-picker.js.map
M static/maps/mvc/ui/ui-misc.js.map
M static/maps/mvc/ui/ui-modal.js.map
M static/maps/mvc/ui/ui-options.js.map
M static/maps/mvc/ui/ui-popover.js.map
M static/maps/mvc/ui/ui-select-default.js.map
A static/maps/mvc/upload/composite/composite-row.js.map
A static/maps/mvc/upload/composite/composite-view.js.map
A static/maps/mvc/upload/default/default-row.js.map
A static/maps/mvc/upload/default/default-view.js.map
M static/maps/mvc/upload/upload-button.js.map
M static/maps/mvc/upload/upload-ftp.js.map
M static/maps/mvc/upload/upload-model.js.map
M static/maps/mvc/upload/upload-row.js.map
M static/maps/mvc/upload/upload-settings.js.map
M static/maps/mvc/upload/upload-view.js.map
M static/maps/mvc/user/user-model.js.map
M static/maps/mvc/user/user-quotameter.js.map
M static/maps/mvc/visualization/visualization-model.js.map
M static/maps/mvc/workflow/workflow-terminals.js.map
M static/maps/reports_webapp/run_stats.js.map
M static/maps/templates/compiled/tool_link.js.map
M static/maps/utils/add-logging.js.map
M static/maps/utils/deferred.js.map
M static/maps/utils/metrics-logger.js.map
M static/maps/utils/uploadbox.js.map
M static/maps/utils/utils.js.map
M static/maps/viz/trackster/tracks.js.map
M static/scripts/galaxy-app-base.js
M static/scripts/galaxy.library.js
M static/scripts/galaxy.masthead.js
M static/scripts/galaxy.menu.js
M static/scripts/galaxy.panels.js
M static/scripts/libs/jquery/jquery.dynatree.js
M static/scripts/libs/jquery/select2.js
A static/scripts/mvc/app/app-analysis.js
A static/scripts/mvc/app/app-login.js
A static/scripts/mvc/app/app-view.js
M static/scripts/mvc/base-mvc.js
M static/scripts/mvc/citation/citation-model.js
M static/scripts/mvc/collection/collection-li-edit.js
M static/scripts/mvc/collection/collection-li.js
M static/scripts/mvc/collection/collection-model.js
M static/scripts/mvc/collection/collection-panel.js
M static/scripts/mvc/collection/list-collection-creator.js
M static/scripts/mvc/collection/list-of-pairs-collection-creator.js
M static/scripts/mvc/collection/pair-collection-creator.js
M static/scripts/mvc/dataset/dataset-choice.js
M static/scripts/mvc/dataset/dataset-li-edit.js
M static/scripts/mvc/dataset/dataset-li.js
M static/scripts/mvc/dataset/dataset-list.js
M static/scripts/mvc/dataset/dataset-model.js
M static/scripts/mvc/form/form-input.js
M static/scripts/mvc/form/form-parameters.js
M static/scripts/mvc/form/form-repeat.js
M static/scripts/mvc/form/form-section.js
M static/scripts/mvc/form/form-select-content.js
M static/scripts/mvc/form/form-view.js
M static/scripts/mvc/grid/grid-template.js
M static/scripts/mvc/grid/grid-view.js
A static/scripts/mvc/history/copy-dialog.js
M static/scripts/mvc/history/hda-li-edit.js
M static/scripts/mvc/history/hdca-li.js
M static/scripts/mvc/history/history-content-model.js
M static/scripts/mvc/history/history-contents.js
M static/scripts/mvc/history/history-model.js
M static/scripts/mvc/history/history-panel-edit-current.js
M static/scripts/mvc/history/history-panel.js
M static/scripts/mvc/history/history-structure-view.js
M static/scripts/mvc/history/multi-panel.js
M static/scripts/mvc/history/options-menu.js
M static/scripts/mvc/job/job-li.js
M static/scripts/mvc/job/job-model.js
M static/scripts/mvc/library/library-folderlist-view.js
M static/scripts/mvc/library/library-folderrow-view.js
M static/scripts/mvc/library/library-foldertoolbar-view.js
M static/scripts/mvc/library/library-librarylist-view.js
M static/scripts/mvc/library/library-librarytoolbar-view.js
M static/scripts/mvc/library/library-model.js
M static/scripts/mvc/list/list-item.js
M static/scripts/mvc/list/list-panel.js
M static/scripts/mvc/tools.js
M static/scripts/mvc/tools/tools-form-base.js
M static/scripts/mvc/tools/tools-form-workflow.js
M static/scripts/mvc/tools/tools-form.js
M static/scripts/mvc/tools/tools-jobs.js
R static/scripts/mvc/ui/ui-button-check.js
R static/scripts/mvc/ui/ui-button-menu.js
A static/scripts/mvc/ui/ui-buttons.js
M static/scripts/mvc/ui/ui-color-picker.js
M static/scripts/mvc/ui/ui-misc.js
M static/scripts/mvc/ui/ui-modal.js
M static/scripts/mvc/ui/ui-options.js
M static/scripts/mvc/ui/ui-popover.js
M static/scripts/mvc/ui/ui-select-default.js
A static/scripts/mvc/upload/composite/composite-row.js
A static/scripts/mvc/upload/composite/composite-view.js
A static/scripts/mvc/upload/default/default-row.js
A static/scripts/mvc/upload/default/default-view.js
M static/scripts/mvc/upload/upload-button.js
M static/scripts/mvc/upload/upload-ftp.js
M static/scripts/mvc/upload/upload-model.js
M static/scripts/mvc/upload/upload-row.js
M static/scripts/mvc/upload/upload-settings.js
M static/scripts/mvc/upload/upload-view.js
M static/scripts/mvc/user/user-model.js
M static/scripts/mvc/user/user-quotameter.js
M static/scripts/mvc/workflow/workflow-terminals.js
M static/scripts/reports_webapp/run_stats.js
M static/scripts/templates/compiled/tool_link.js
M static/scripts/utils/add-logging.js
M static/scripts/utils/deferred.js
M static/scripts/utils/metrics-logger.js
M static/scripts/utils/uploadbox.js
M static/scripts/utils/utils.js
M static/scripts/viz/trackster/tracks.js
M static/style/blue/autocomplete_tagging.css
M static/style/blue/base.css
R static/style/blue/dynatree_skin/cbChecked.gif
R static/style/blue/dynatree_skin/cbChecked_hover.gif
R static/style/blue/dynatree_skin/cbIntermediate.gif
R static/style/blue/dynatree_skin/cbIntermediate_hover.gif
R static/style/blue/dynatree_skin/cbUnchecked.gif
R static/style/blue/dynatree_skin/cbUnchecked_hover.gif
R static/style/blue/dynatree_skin/customDoc1.gif
R static/style/blue/dynatree_skin/customFolder1.gif
A static/style/blue/dynatree_skin/icons-rtl.gif
A static/style/blue/dynatree_skin/icons.gif
A static/style/blue/dynatree_skin/loading.gif
R static/style/blue/dynatree_skin/ltD_ne.gif
R static/style/blue/dynatree_skin/ltD_nes.gif
R static/style/blue/dynatree_skin/ltDoc.gif
R static/style/blue/dynatree_skin/ltError.gif
R static/style/blue/dynatree_skin/ltFld.gif
R static/style/blue/dynatree_skin/ltFld_o.gif
R static/style/blue/dynatree_skin/ltL_.gif
R static/style/blue/dynatree_skin/ltL_ne.gif
R static/style/blue/dynatree_skin/ltL_nes.gif
R static/style/blue/dynatree_skin/ltL_ns.gif
R static/style/blue/dynatree_skin/ltM_ne.gif
R static/style/blue/dynatree_skin/ltM_nes.gif
R static/style/blue/dynatree_skin/ltP_ne.gif
R static/style/blue/dynatree_skin/ltP_nes.gif
R static/style/blue/dynatree_skin/ltWait.gif
R static/style/blue/dynatree_skin/rbChecked.gif
R static/style/blue/dynatree_skin/rbChecked_hover.gif
R static/style/blue/dynatree_skin/rbIntermediate.gif
R static/style/blue/dynatree_skin/rbIntermediate_hover.gif
R static/style/blue/dynatree_skin/rbUnchecked.gif
R static/style/blue/dynatree_skin/rbUnchecked_hover.gif
M static/style/blue/dynatree_skin/ui.dynatree.css
A static/style/blue/dynatree_skin/vline-rtl.gif
A static/style/blue/dynatree_skin/vline.gif
M static/style/blue/embed_item.css
M static/style/blue/iphone.css
M static/style/blue/library.css
M static/style/blue/reports.css
M static/style/blue/trackster.css
M static/welcome.html.sample
M templates/admin/reload_tool.mako
M templates/admin/requests/select_datasets_to_transfer.mako
M templates/admin/tool_shed_repository/common.mako
M templates/base.mako
M templates/base/base_panels.mako
M templates/galaxy_client_app.mako
M templates/page_base.mako
M templates/show_params.mako
M templates/spark_base.mako
M templates/user/login.mako
M templates/webapps/galaxy/admin/center.mako
M templates/webapps/galaxy/admin/index.mako
R templates/webapps/galaxy/cloud/index.mako
M templates/webapps/galaxy/data_manager/index.mako
M templates/webapps/galaxy/data_manager/view_job.mako
M templates/webapps/galaxy/galaxy.masthead.mako
A templates/webapps/galaxy/history/as_xml.mako
M templates/webapps/galaxy/history/copy.mako
M templates/webapps/galaxy/history/view.mako
M templates/webapps/galaxy/history/view_multiple.mako
R templates/webapps/galaxy/root/history.mako
R templates/webapps/galaxy/root/history_as_xml.mako
M templates/webapps/galaxy/root/index.mako
R templates/webapps/galaxy/root/tool_menu.mako
A templates/webapps/galaxy/root/tool_runner.mako
R templates/webapps/galaxy/tool_executed.mako
R templates/webapps/galaxy/tool_form.mako
M templates/webapps/galaxy/workflow/editor.mako
M templates/webapps/reports/job_info.mako
M templates/webapps/reports/jobs_errors_per_tool.mako
M templates/webapps/reports/jobs_per_month_all.mako
M templates/webapps/reports/jobs_per_month_in_error.mako
M templates/webapps/reports/jobs_per_tool.mako
M templates/webapps/reports/jobs_per_user.mako
M templates/webapps/reports/jobs_specified_month_all.mako
M templates/webapps/reports/jobs_specified_month_in_error.mako
M templates/webapps/reports/jobs_tool_per_month.mako
M templates/webapps/reports/jobs_user_per_month.mako
M templates/webapps/reports/registered_users.mako
M templates/webapps/reports/registered_users_per_month.mako
M templates/webapps/reports/registered_users_specified_date.mako
M templates/webapps/reports/registered_users_specified_month.mako
M templates/webapps/reports/requests_per_month_all.mako
M templates/webapps/reports/requests_per_user.mako
M templates/webapps/reports/requests_user_per_month.mako
M templates/webapps/reports/run_stats.mako
M templates/webapps/reports/system.mako
M templates/webapps/reports/users_last_access_date.mako
M templates/webapps/reports/users_user_disk_usage.mako
M templates/webapps/reports/workflows_per_month_all.mako
M templates/webapps/reports/workflows_per_user.mako
M templates/webapps/reports/workflows_per_workflow.mako
M templates/webapps/reports/workflows_user_per_month.mako
M templates/webapps/tool_shed/repository/common.mako
A test-data/1.RData
A test-data/3.bam
M test/api/helpers.py
M test/api/test_dataset_collections.py
M test/api/test_jobs.py
M test/api/test_libraries.py
M test/api/test_tools.py
M test/api/test_workflow_extraction.py
M test/api/test_workflows.py
M test/api/test_workflows_from_yaml.py
A test/api/workflows_format_2/README.txt
A test/api/workflows_format_2/__init__.py
A test/api/workflows_format_2/converter.py
A test/api/workflows_format_2/interface.py
A test/api/workflows_format_2/main.py
R test/api/yaml_to_workflow.py
M test/base/api.py
M test/base/asserts/__init__.py
M test/base/instrument.py
M test/base/interactor.py
M test/base/nose_util.py
M test/base/test_data.py
M test/base/test_db_util.py
A test/base/test_logging.py
M test/base/tool_shed_util.py
M test/base/twilltestcase.py
M test/casperjs/anon-history-tests.js
M test/casperjs/api-hda-tests.js
M test/casperjs/api-history-tests.js
M test/casperjs/casperjs_runner.py
M test/casperjs/hda-state-tests.js
M test/casperjs/history-panel-tests.js
M test/casperjs/modules/historypanel.js
M test/casperjs/server_env.py
M test/docker/README.md
M test/docker/base/Dockerfile
M test/docker/base/ansible_vars.yml
M test/docker/base/provision.yml
M test/docker/base/run_test_wrapper.sh
M test/docker/base/start_mysql.sh
M test/functional/test_metadata_editing.py
A test/functional/tools/cheetah_problem_syntax_error.xml
A test/functional/tools/cheetah_problem_unbound_var.xml
A test/functional/tools/cheetah_problem_unbound_var_input.xml
R test/functional/tools/compare_bam_as_sam.xml
M test/functional/tools/disambiguate_cond.xml
A test/functional/tools/maxseconds.xml
M test/functional/tools/metadata_bam.xml
M test/functional/tools/min_repeat.xml
M test/functional/tools/multi_data_param.xml
M test/functional/tools/multi_output_configured.xml
M test/functional/tools/output_format.xml
A test/functional/tools/output_format_collection.xml
M test/functional/tools/samples_tool_conf.xml
M test/functional/tools/simple_constructs.yml
A test/functional/tools/unicode_stream.xml
M test/functional/tools/validation_repeat.xml
M test/install_and_test_tool_shed_repositories/base/test_db_util.py
M test/install_and_test_tool_shed_repositories/base/twilltestcase.py
M test/install_and_test_tool_shed_repositories/base/util.py
M test/install_and_test_tool_shed_repositories/functional/test_install_repositories.py
M test/install_and_test_tool_shed_repositories/repositories_with_tools/functional_tests.py
M test/install_and_test_tool_shed_repositories/tool_dependency_definitions/functional_tests.py
M test/manual/workflows_scaling.py
M test/qunit/README.txt
M test/qunit/package.json
A test/qunit/test-app.js
M test/qunit/test-common.js
A test/qunit/test-data/bootstrapped.js
A test/qunit/test-data/fakeserver.js
M test/qunit/tests/galaxy-app-base.js
A test/qunit/tests/upload_dialog_tests.html
A test/qunit/tests/upload_dialog_tests.js
M test/qunit/tests/workflow_editor_tests.js
M test/tool_shed/base/test_db_util.py
M test/tool_shed/base/twilltestcase.py
M test/tool_shed/functional/test_0000_basic_repository_features.py
M test/tool_shed/functional/test_0010_repository_with_tool_dependencies.py
M test/tool_shed/functional/test_0020_basic_repository_dependencies.py
M test/tool_shed/functional/test_0030_repository_dependency_revisions.py
M test/tool_shed/functional/test_0040_repository_circular_dependencies.py
M test/tool_shed/functional/test_0050_circular_dependencies_4_levels.py
M test/tool_shed/functional/test_0060_workflows.py
M test/tool_shed/functional/test_0070_invalid_tool.py
M test/tool_shed/functional/test_0080_advanced_circular_dependencies.py
M test/tool_shed/functional/test_0090_tool_search.py
M test/tool_shed/functional/test_0100_complex_repository_dependencies.py
M test/tool_shed/functional/test_0110_invalid_simple_repository_dependencies.py
M test/tool_shed/functional/test_0120_simple_repository_dependency_multiple_owners.py
M test/tool_shed/functional/test_0130_datatype_converters.py
M test/tool_shed/functional/test_0140_tool_help_images.py
M test/tool_shed/functional/test_0150_prior_installation_required.py
M test/tool_shed/functional/test_0160_circular_prior_installation_required.py
M test/tool_shed/functional/test_0170_complex_prior_installation_required.py
M test/tool_shed/functional/test_0300_reset_all_metadata.py
M test/tool_shed/functional/test_0310_hg_push_from_api.py
M test/tool_shed/functional/test_0400_repository_component_reviews.py
M test/tool_shed/functional/test_0410_repository_component_review_access_control.py
M test/tool_shed/functional/test_0420_citable_urls_for_repositories.py
M test/tool_shed/functional/test_0430_browse_utilities.py
M test/tool_shed/functional/test_0440_deleting_dependency_definitions.py
M test/tool_shed/functional/test_0450_skip_tool_tests.py
M test/tool_shed/functional/test_0460_upload_to_repository.py
M test/tool_shed/functional/test_0470_tool_dependency_repository_type.py
M test/tool_shed/functional/test_0480_tool_dependency_xml_verification.py
M test/tool_shed/functional/test_0490_export_import_repositories.py
M test/tool_shed/functional/test_0500_export_repository_simple_dependency.py
M test/tool_shed/functional/test_0510_export_import_repository_complex_dependencies.py
M test/tool_shed/functional/test_0520_import_export_circular_dependencies.py
M test/tool_shed/functional/test_0530_repository_admin_feature.py
M test/tool_shed/functional/test_1000_install_basic_repository.py
M test/tool_shed/functional/test_1010_install_repository_with_tool_dependencies.py
M test/tool_shed/functional/test_1020_install_repository_with_repository_dependencies.py
M test/tool_shed/functional/test_1030_install_repository_with_dependency_revisions.py
M test/tool_shed/functional/test_1040_install_repository_basic_circular_dependencies.py
M test/tool_shed/functional/test_1050_circular_dependencies_4_levels.py
M test/tool_shed/functional/test_1060_install_repository_with_workflow.py
M test/tool_shed/functional/test_1070_invalid_tool.py
M test/tool_shed/functional/test_1080_advanced_circular_dependency_installation.py
M test/tool_shed/functional/test_1085_repository_dependency_handling.py
M test/tool_shed/functional/test_1087_install_updated_repository_dependencies.py
M test/tool_shed/functional/test_1090_install_tool_from_tool_search.py
M test/tool_shed/functional/test_1100_install_repository_with_complex_dependencies.py
M test/tool_shed/functional/test_1110_install_repository_with_invalid_repository_dependency.py
M test/tool_shed/functional/test_1120_simple_repository_dependency_multiple_owners.py
M test/tool_shed/functional/test_1130_datatype_converters.py
M test/tool_shed/functional/test_1140_tool_help_images.py
M test/tool_shed/functional/test_1150_prior_installation_required.py
M test/tool_shed/functional/test_1160_circular_prior_installation_required.py
M test/tool_shed/functional/test_1170_complex_prior_installation_required.py
M test/tool_shed/functional/test_1200_uninstall_and_reinstall_basic_repository.py
M test/tool_shed/functional/test_1210_uninstall_reinstall_repository_with_tool_dependencies.py
M test/tool_shed/functional/test_1220_uninstall_reinstall_repository_with_repository_dependencies.py
M test/tool_shed/functional/test_1230_uninstall_reinstall_repository_with_dependency_revisions.py
M test/tool_shed/functional/test_1300_reset_all_metadata.py
M test/tool_shed/functional/test_1400_review_migration_stages.py
M test/tool_shed/functional/test_1410_update_manager.py
M test/tool_shed/functional/test_1420_tool_dependency_environment_inheritance.py
M test/tool_shed/functional/test_1430_repair_installed_repository.py
M test/tool_shed/functional/test_1440_missing_env_sh_files.py
M test/tool_shed/functional/test_1450_installing_datatypes_sniffers.py
M test/tool_shed/functional/test_1460_data_managers.py
M test/tool_shed/functional/test_1470_updating_installed_repositories.py
M test/tool_shed/functional_tests.py
M test/tool_shed/test_data/proteomics_datatypes/proteomics_datatypes.tar
M test/unit/jobs/test_job_configuration.py
M test/unit/jobs/test_job_output_checker.py
M test/unit/jobs/test_runner_local.py
M test/unit/managers/base.py
M test/unit/managers/test_DatasetManager.py
M test/unit/managers/test_HDAManager.py
M test/unit/managers/test_HistoryManager.py
M test/unit/managers/test_UserManager.py
M test/unit/test_galaxy_mapping.py
M test/unit/test_objectstore.py
M test/unit/tools/test_actions.py
M test/unit/tools/test_execution.py
M test/unit/tools/test_parsing.py
M test/unit/tools/test_tool_loader.py
M test/unit/tools/test_toolbox_filters.py
M test/unit/unittest_utils/utility.py
M test/unit/workflows/test_modules.py
R tool-data/fastx_clipper_sequences.txt
R tool-data/shared/ucsc/manual_builds.txt
A tool-data/shared/ucsc/manual_builds.txt.sample
M tools/data_source/biomart.xml
M tools/data_source/biomart_test.xml
M tools/data_source/data_source.py
R tools/data_source/echo.py
R tools/data_source/echo.xml
R tools/data_source/ucsc_archaea.xml
R tools/data_source/ucsc_filter.py
R tools/data_source/ucsc_proxy.py
R tools/data_source/ucsc_proxy.xml
M tools/data_source/ucsc_tablebrowser.xml
M tools/data_source/ucsc_tablebrowser_archaea.xml
M tools/data_source/ucsc_tablebrowser_test.xml
R tools/data_source/ucsc_testproxy.xml
M tools/data_source/upload.py
M tools/evolution/add_scores.py
M tools/extract/extract_genomic_dna.py
M tools/extract/liftOver_wrapper.py
M tools/extract/liftOver_wrapper.xml
M tools/filters/axt_to_concat_fasta.py
M tools/filters/axt_to_fasta.py
M tools/filters/axt_to_lav.py
M tools/filters/catWrapper.py
M tools/filters/cutWrapper.xml
M tools/filters/gff/extract_GFF_Features.py
M tools/filters/gff/gff_filter_by_attribute.py
M tools/filters/gff/gff_filter_by_attribute.xml
M tools/filters/gff/gff_filter_by_feature_count.py
M tools/filters/gff/sort_gtf.py
M tools/filters/gff_to_bed_converter.py
M tools/filters/lav_to_bed.py
M tools/filters/secure_hash_message_digest.py
M tools/filters/wig_to_bigwig.xml
M tools/filters/wiggle_to_simple.py
M tools/genomespace/genomespace_exporter.py
M tools/genomespace/genomespace_exporter.xml
M tools/genomespace/genomespace_file_browser.py
M tools/genomespace/genomespace_file_browser_dev.xml
M tools/genomespace/genomespace_file_browser_prod.xml
M tools/genomespace/genomespace_file_browser_test.xml
M tools/genomespace/genomespace_importer.py
M tools/genomespace/genomespace_importer.xml
M tools/maf/interval2maf.py
M tools/maf/interval2maf.xml
M tools/maf/interval_maf_to_merged_fasta.py
M tools/maf/maf_by_block_number.py
M tools/maf/maf_filter.py
M tools/maf/maf_limit_size.py
M tools/maf/maf_limit_to_species.py
M tools/maf/maf_reverse_complement.py
M tools/maf/maf_split_by_species.py
M tools/maf/maf_stats.py
M tools/maf/maf_thread_for_species.py
M tools/maf/maf_to_bed.py
M tools/maf/maf_to_bed_code.py
M tools/maf/maf_to_fasta_concat.py
M tools/maf/maf_to_fasta_multiple_sets.py
M tools/maf/maf_to_interval.py
M tools/maf/vcf_to_maf_customtrack.py
M tools/next_gen_conversion/fastq_conversions.py
M tools/next_gen_conversion/fastq_gen_conv.py
M tools/next_gen_conversion/solid2fastq.py
M tools/next_gen_conversion/solid_to_fastq.py
M tools/ngs_simulation/ngs_simulation.py
M tools/sr_mapping/bfast_wrapper.xml
M tools/sr_mapping/fastq_statistics.xml
M tools/sr_mapping/mosaik.xml
M tools/sr_mapping/srma_wrapper.xml
M tools/stats/aggregate_scores_in_intervals.py
M tools/stats/filtering.py
M tools/stats/grouping.py
M tools/stats/gsummary.py
M tools/visualization/LAJ.xml
M tox.ini
Log Message:
-----------
Merge branch 'dev' of https://github.com/galaxyproject/galaxy into async_metadata_reset
Commit: 0c75af7192b7f34260098a21ff30d98492ba738e
https://github.com/galaxyproject/galaxy/commit/0c75af7192b7f34260098a21ff30…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2015-11-25 (Wed, 25 Nov 2015)
Changed paths:
M client/galaxy/scripts/mvc/app/app-analysis.js
M config/plugins/visualizations/charts/templates/charts.mako
M static/maps/mvc/app/app-analysis.js.map
M static/scripts/mvc/app/app-analysis.js
Log Message:
-----------
Merge pull request #1157 from guerler/revise_iframe_unload_001
Call onbeforeunload before hiding iframe through display()
Commit: 62474100f8f075ce519d008336060dfa952da725
https://github.com/galaxyproject/galaxy/commit/62474100f8f075ce519d00833606…
Author: Bjoern Gruening <bjoern.gruening(a)gmail.com>
Date: 2015-11-26 (Thu, 26 Nov 2015)
Changed paths:
M config/plugins/interactive_environments/common/templates/ie.mako
Log Message:
-----------
add onbeforeunload to IE
Commit: 1931bd59077f97946a1af6daa93bc920fceee58e
https://github.com/galaxyproject/galaxy/commit/1931bd59077f97946a1af6daa93b…
Author: Anthony Bretaudeau <anthony.bretaudeau(a)inria.fr>
Date: 2015-11-26 (Thu, 26 Nov 2015)
Changed paths:
M lib/galaxy/model/mapping.py
Log Message:
-----------
lazy load metadata to speed up history loading
Commit: 2a54ff08292d85b3ecdab79e307b4b5d0aba4cc3
https://github.com/galaxyproject/galaxy/commit/2a54ff08292d85b3ecdab79e307b…
Author: Nicola Soranzo <nsoranzo(a)tiscali.it>
Date: 2015-11-26 (Thu, 26 Nov 2015)
Changed paths:
M scripts/functional_tests.py
Log Message:
-----------
Merge pull request #1176 from jmchilton/auto_migrate
Do not check for tool migrations when running tests.
Commit: 7d4f0d82de328ffb763737c067fc9332b61534e9
https://github.com/galaxyproject/galaxy/commit/7d4f0d82de328ffb763737c067fc…
Author: Anthony Bretaudeau <anthony.bretaudeau(a)inria.fr>
Date: 2015-11-26 (Thu, 26 Nov 2015)
Changed paths:
M lib/galaxy/model/mapping.py
Log Message:
-----------
fix indentation
Commit: f4dab5523b687c079df68d4d2988dc830429bd93
https://github.com/galaxyproject/galaxy/commit/f4dab5523b687c079df68d4d2988…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2015-11-26 (Thu, 26 Nov 2015)
Changed paths:
M config/plugins/interactive_environments/common/templates/ie.mako
Log Message:
-----------
Merge pull request #1178 from bgruening/obbeforechange_ie
Prevent GIEs from being closed without user confirmation
Commit: 2be9aa2569b35a86f4c593215189a07eb5dd62f0
https://github.com/galaxyproject/galaxy/commit/2be9aa2569b35a86f4c593215189…
Author: y.hoogstrate(a)erasmusmc.nl <y.hoogstrate(a)erasmusmc.nl>
Date: 2015-11-27 (Fri, 27 Nov 2015)
Changed paths:
M lib/galaxy/datatypes/binary.py
Log Message:
-----------
cram datatype: support for crai indexes via pysam
Commit: 2568e85e7b84a8d9c7039f4c4b44661b9930a55e
https://github.com/galaxyproject/galaxy/commit/2568e85e7b84a8d9c7039f4c4b44…
Author: Sourav Singh <souravsingh(a)users.noreply.github.com>
Date: 2015-11-27 (Fri, 27 Nov 2015)
Changed paths:
A config/reports.ini.sample
R config/reports_wsgi.ini.sample
Log Message:
-----------
Renames reports_wsgi.ini
Commit: a3668355961e3988158a8bdb1bbe0f898d475967
https://github.com/galaxyproject/galaxy/commit/a3668355961e3988158a8bdb1bbe…
Author: Sourav Singh <souravsingh(a)users.noreply.github.com>
Date: 2015-11-27 (Fri, 27 Nov 2015)
Changed paths:
M run_reports.sh
Log Message:
-----------
Changed reports_wsgi.ini to reports.ini
Commit: 9fceddf8a2f62df2774f269755398ce7d9f203b3
https://github.com/galaxyproject/galaxy/commit/9fceddf8a2f62df2774f26975539…
Author: Sourav Singh <souravsingh(a)users.noreply.github.com>
Date: 2015-11-27 (Fri, 27 Nov 2015)
Changed paths:
M scripts/sync_reports_config.py
Log Message:
-----------
Changed reports_wsgi.ini to reports.ini
Commit: ca3e3760ccd92e3162a5740e713a7b3daf4c4e03
https://github.com/galaxyproject/galaxy/commit/ca3e3760ccd92e3162a5740e713a…
Author: Sourav Singh <souravsingh(a)users.noreply.github.com>
Date: 2015-11-27 (Fri, 27 Nov 2015)
Changed paths:
M .gitignore
Log Message:
-----------
Changed reports_wsgi.ini to reports.ini
Commit: d7eb84e57bbd119d788ca759e0d61a464a030c7a
https://github.com/galaxyproject/galaxy/commit/d7eb84e57bbd119d788ca759e0d6…
Author: youri <y.hoogstrate(a)erasmusmc.nl>
Date: 2015-11-27 (Fri, 27 Nov 2015)
Changed paths:
M lib/galaxy/datatypes/binary.py
Log Message:
-----------
cram datatype: support for crai index (using built-in pysam)
Commit: 2e97553194a0e13dc4158c29a161c0b678bcd02e
https://github.com/galaxyproject/galaxy/commit/2e97553194a0e13dc4158c29a161…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-11-28 (Sat, 28 Nov 2015)
Changed paths:
M client/galaxy/scripts/galaxy.frame.js
M client/galaxy/scripts/galaxy.masthead.js
M client/galaxy/scripts/mvc/dataset/dataset-li.js
M client/galaxy/scripts/mvc/tools/tools-form-base.js
M client/galaxy/scripts/mvc/ui/ui-buttons.js
M static/maps/galaxy.frame.js.map
M static/maps/galaxy.masthead.js.map
M static/maps/mvc/dataset/dataset-li.js.map
M static/maps/mvc/tools/tools-form-base.js.map
M static/maps/mvc/ui/ui-buttons.js.map
M static/scripts/galaxy.frame.js
M static/scripts/galaxy.masthead.js
M static/scripts/mvc/dataset/dataset-li.js
M static/scripts/mvc/tools/tools-form-base.js
M static/scripts/mvc/ui/ui-buttons.js
Log Message:
-----------
Filter download links
Commit: 7b85684683b3a6ee07ec024f943bada03f51195b
https://github.com/galaxyproject/galaxy/commit/7b85684683b3a6ee07ec024f943b…
Author: Sourav Singh <souravsingh(a)users.noreply.github.com>
Date: 2015-11-29 (Sun, 29 Nov 2015)
Changed paths:
M run_reports.sh
Log Message:
-----------
Updated run_reports.sh
Updated run_reports.sh to reflect new changes.
Commit: 1b06e8d674edd7f1a1f9397429b319670891a8bd
https://github.com/galaxyproject/galaxy/commit/1b06e8d674edd7f1a1f9397429b3…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-30 (Mon, 30 Nov 2015)
Changed paths:
M templates/webapps/galaxy/galaxy.panels.mako
Log Message:
-----------
Merge pull request #1126 from jgoecks/farbtastic-fix
Readd jquery.migrate to galaxy.panels template because it is needed f…
Commit: 8971badb10aa216fab3ce7318ec28389e0ea79b9
https://github.com/galaxyproject/galaxy/commit/8971badb10aa216fab3ce7318ec2…
Author: Sourav Singh <souravsingh(a)users.noreply.github.com>
Date: 2015-11-30 (Mon, 30 Nov 2015)
Changed paths:
M .gitignore
Log Message:
-----------
Updated gitignore
Commit: 9e353028d5ad5ef6a0ba7889f5f5e8b975261811
https://github.com/galaxyproject/galaxy/commit/9e353028d5ad5ef6a0ba7889f5f5…
Author: Sourav Singh <souravsingh(a)users.noreply.github.com>
Date: 2015-11-30 (Mon, 30 Nov 2015)
Changed paths:
M run_reports.sh
Log Message:
-----------
Updated run_reports.sh
Updated run_reports.sh to mark the latest changes.
Commit: dc41856812f9064c518a8e45c4559b2f32fe9db2
https://github.com/galaxyproject/galaxy/commit/dc41856812f9064c518a8e45c455…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-30 (Mon, 30 Nov 2015)
Changed paths:
M lib/galaxy/web/base/controller.py
M lib/galaxy/webapps/galaxy/controllers/workflow.py
Log Message:
-----------
Merge pull request #1173 from jmchilton/wfcfix
Fixes for WorkflowContentsManager requiring app during init.
Commit: c2f93316112ce90d0f1f7fe947ce1881cae3c773
https://github.com/galaxyproject/galaxy/commit/c2f93316112ce90d0f1f7fe947ce…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-30 (Mon, 30 Nov 2015)
Changed paths:
M lib/galaxy/workflow/modules.py
M templates/webapps/galaxy/workflow/run.mako
Log Message:
-----------
Merge pull request #1174 from jmchilton/workflow_runtime_fix
Fix interface and usage of WorkflowModule.get_runtime_inputs.
Commit: 2829cab105c202a49904d65d88a9ac37dc12d81e
https://github.com/galaxyproject/galaxy/commit/2829cab105c202a49904d65d88a9…
Author: Greg Von Kuster <ghv2(a)psu.edu>
Date: 2015-11-30 (Mon, 30 Nov 2015)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/tool_shed/util/shed_util_common.py
Log Message:
-----------
Add enhancements to the Galaxy repository install process
to cleanly handle the case described here:
https://github.com/galaxyproject/galaxy/issues/667. Specifically, the
following scenario is now cleanly handled:
Example use case: In a toolshed I have a repository of a tool, say
package_new_gene_db_1_2_3, and in revision 1 it depends on
package_sqlite_1_0_0:
package_new_gene_db_1_2_3
package_sqlite_1_0_0
At some point in time I discover that postgres is a better solution for
my gene database, and I upload revision 2:
package_new_gene_db_1_2_3
package_postgres__2_0_0
And I remove the dependecy of sqlite. If I go to my galaxy instance and
I remove revision 1 and install revision 2, the installation is cleanly
handled with theis PR.
It should be noted that this enhancement could adversely impact
reproducibility if best practices are not followed with regard to
defining package dependencies. Since it is now cleanly possible to
eliminate dependencies over time, best practices must be followed to
ensure that elimination of a dependency does not affect the output of a
tool that uses the underlying hierarchy of packages.
Commit: f35bd9ae02aaa814d9ab62838146be2ba4791f2b
https://github.com/galaxyproject/galaxy/commit/f35bd9ae02aaa814d9ab62838146…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-11-30 (Mon, 30 Nov 2015)
Changed paths:
M .gitignore
A config/reports.ini.sample
R config/reports_wsgi.ini.sample
M run_reports.sh
M scripts/sync_reports_config.py
Log Message:
-----------
Merge pull request #1181 from souravsingh/rename_file
Renames reports_wsgi.ini
Commit: 492fcdab9fa1cdc1465c191289077e103d8d8020
https://github.com/galaxyproject/galaxy/commit/492fcdab9fa1cdc1465c19128907…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-11-30 (Mon, 30 Nov 2015)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/tool_shed/util/shed_util_common.py
Log Message:
-----------
Merge pull request #1193 from mvdbeek/gvk_ts_fixes
Add enhancements to the Galaxy repository install process
Commit: 9e28f2e786bcb2bc727f7dba571742f9d2773165
https://github.com/galaxyproject/galaxy/commit/9e28f2e786bcb2bc727f7dba5717…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2015-11-30 (Mon, 30 Nov 2015)
Changed paths:
M client/galaxy/scripts/mvc/library/library-folderrow-view.js
M client/galaxy/scripts/mvc/library/library-foldertoolbar-view.js
M config/datatypes_conf.xml.sample
M lib/galaxy/datatypes/interval.py
M static/maps/mvc/library/library-folderrow-view.js.map
M static/maps/mvc/library/library-foldertoolbar-view.js.map
M static/scripts/mvc/library/library-folderrow-view.js
M static/scripts/mvc/library/library-foldertoolbar-view.js
Log Message:
-----------
Merge branch 'release_15.10' into dev
Commit: 78558beec3ebeca63a282e667948a18c2b21c508
https://github.com/galaxyproject/galaxy/commit/78558beec3ebeca63a282e667948…
Author: y.hoogstrate(a)erasmusmc.nl <y.hoogstrate(a)erasmusmc.nl>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M lib/galaxy/datatypes/binary.py
Log Message:
-----------
cram datatype definition: flake8 correction
Commit: 28715a5bca299933c69859559d5b88b381b6c998
https://github.com/galaxyproject/galaxy/commit/28715a5bca299933c69859559d5b…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/form/form-input.js
M client/galaxy/scripts/mvc/form/form-section.js
M client/galaxy/scripts/mvc/tool/tool-form-composite.js
M client/galaxy/scripts/mvc/tool/tool-form-workflow.js
M client/galaxy/style/less/ui.less
M lib/galaxy/tools/__init__.py
M static/maps/mvc/form/form-input.js.map
M static/maps/mvc/form/form-section.js.map
M static/maps/mvc/tool/tool-form-composite.js.map
M static/maps/mvc/tool/tool-form-workflow.js.map
M static/scripts/mvc/form/form-input.js
M static/scripts/mvc/form/form-section.js
M static/scripts/mvc/tool/tool-form-composite.js
M static/style/blue/base.css
Log Message:
-----------
Add runtime modification switch
Commit: 3524476bc6c75461fd8b793a3bf047d1ad475e2a
https://github.com/galaxyproject/galaxy/commit/3524476bc6c75461fd8b793a3bf0…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M doc/source/releases/15.10_announce.rst
Log Message:
-----------
Merge branch 'master' into dev
Commit: 84464288b18ca587334dba89c9fd011c7f3a0fc6
https://github.com/galaxyproject/galaxy/commit/84464288b18ca587334dba89c9fd…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M client/galaxy/scripts/galaxy.frame.js
M client/galaxy/scripts/galaxy.masthead.js
M client/galaxy/scripts/mvc/dataset/dataset-li.js
M client/galaxy/scripts/mvc/tools/tools-form-base.js
M client/galaxy/scripts/mvc/ui/ui-buttons.js
M static/maps/galaxy.frame.js.map
M static/maps/galaxy.masthead.js.map
M static/maps/mvc/dataset/dataset-li.js.map
M static/maps/mvc/tools/tools-form-base.js.map
M static/maps/mvc/ui/ui-buttons.js.map
M static/scripts/galaxy.frame.js
M static/scripts/galaxy.masthead.js
M static/scripts/mvc/dataset/dataset-li.js
M static/scripts/mvc/tools/tools-form-base.js
M static/scripts/mvc/ui/ui-buttons.js
Log Message:
-----------
Merge pull request #1184 from guerler/fix_download_links_002
Filter download links, avoid warning dialog
Commit: bb23701fa80c74a6621b1826b050d9e42c12455f
https://github.com/galaxyproject/galaxy/commit/bb23701fa80c74a6621b1826b050…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M lib/galaxy/datatypes/text.py
Log Message:
-----------
White space in BIOM1 datatype.
Commit: 64506bbd43e21b299a8b42ee3cfd2ef8e40c06d2
https://github.com/galaxyproject/galaxy/commit/64506bbd43e21b299a8b42ee3cfd…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M lib/galaxy/datatypes/text.py
Log Message:
-----------
Prevent unneccessary extra read in BIOM1 sniffer.
Commit: ff619df3946621b819df03909fc63ce9ee412ced
https://github.com/galaxyproject/galaxy/commit/ff619df3946621b819df03909fc6…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M lib/galaxy/dependencies/requirements.txt
M lib/tool_shed/util/hg_util.py
Log Message:
-----------
Downgrade Mercurial wheel to 3.4.2 to restore hg push of Tool Shed repositories. Fix #1183.
Commit: 657afa89d3ac91e53a84ae132334f137eb07acdc
https://github.com/galaxyproject/galaxy/commit/657afa89d3ac91e53a84ae132334…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M lib/tool_shed/util/common_util.py
Log Message:
-----------
Small fixes.
Commit: 194d871e38b3815bba120d6bb40c3eef45660738
https://github.com/galaxyproject/galaxy/commit/194d871e38b3815bba120d6bb40c…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M lib/tool_shed/util/hg_util.py
Log Message:
-----------
Fix Tool Shed export capsule for Mercurial >= 3.4 .
Fix the following error:
tool_shed.capsule.capsule_manager ERROR 2015-12-01 12:24:37,542 unable to find mercurial command "archive"
Traceback (most recent call last):
File "/opt/galaxy/lib/tool_shed/capsule/capsule_manager.py", line 88, in export_repository
work_dir )
File "/opt/galaxy/lib/tool_shed/capsule/capsule_manager.py", line 148, in generate_repository_archive
changeset_revision )
File "/opt/galaxy/lib/tool_shed/util/hg_util.py", line 28, in archive_repository_revision
options_dict = get_mercurial_default_options_dict( 'archive' )
File "/opt/galaxy/lib/tool_shed/util/hg_util.py", line 200, in get_mercurial_default_options_dict
raise Exception('unable to find mercurial command "%s"' % command)
Exception: unable to find mercurial command "archive"
Commit: b5c77a8e8c0255f61ca62a7ff2311d443e224bec
https://github.com/galaxyproject/galaxy/commit/b5c77a8e8c0255f61ca62a7ff231…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M lib/galaxy/datatypes/text.py
Log Message:
-----------
Add metadata for BIOM1 datatype. I am not yet sure that we should store table_rows and table_columns, as these could grow quite large, but could be useful in tools.
Commit: f41540f6137a2f63a6dcb27327e33bf73752f954
https://github.com/galaxyproject/galaxy/commit/f41540f6137a2f63a6dcb27327e3…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M lib/galaxy/datatypes/text.py
Log Message:
-----------
Most of these should probably not be user visible.
Commit: b20fb71e33c1779e42dd67bb68aa9b31b69ffca2
https://github.com/galaxyproject/galaxy/commit/b20fb71e33c1779e42dd67bb68aa…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M lib/galaxy/datatypes/text.py
Log Message:
-----------
Fix extraneous white space.
Commit: f64d1597b84801dd48c2cdb5bc0c303355786942
https://github.com/galaxyproject/galaxy/commit/f64d1597b84801dd48c2cdb5bc0c…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M lib/galaxy/tools/__init__.py
Log Message:
-----------
Extension point for environment variables.
Commit: ea9f4a0467b6955ccc470da06eaf7c13e7643715
https://github.com/galaxyproject/galaxy/commit/ea9f4a0467b6955ccc470da06eaf…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M lib/galaxy/tools/__init__.py
Log Message:
-----------
Initialize a ToolOutput.from_work_dir.
Commit: 7ce43a0463c3d98b757d78d0600aadf5d7876eb9
https://github.com/galaxyproject/galaxy/commit/7ce43a0463c3d98b757d78d0600a…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M lib/galaxy/workflow/run_request.py
Log Message:
-----------
Refactor run_request for downstream diff improvements.
Commit: 77ed5681f8565b12ab1d5e5c7d0302c938e9c73d
https://github.com/galaxyproject/galaxy/commit/77ed5681f8565b12ab1d5e5c7d03…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M test/api/test_workflows.py
Log Message:
-----------
Extend base api workflow _run_jobs helper...
... to allow loading content from test-data files.
Commit: 42778e27539d919ff11d67a07368c0b6e4ebae75
https://github.com/galaxyproject/galaxy/commit/42778e27539d919ff11d67a07368…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M lib/galaxy/workflow/run.py
Log Message:
-----------
Improved error handling in workflow run code.
Commit: 2f31a3cbcd087f26caa9b8754920a6dddb924b30
https://github.com/galaxyproject/galaxy/commit/2f31a3cbcd087f26caa9b8754920…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/form/form-input.js
M client/galaxy/scripts/mvc/form/form-parameters.js
M client/galaxy/scripts/mvc/form/form-section.js
M client/galaxy/scripts/mvc/tool/tool-form-composite.js
M client/galaxy/scripts/mvc/tool/tool-form-workflow.js
M static/maps/mvc/form/form-input.js.map
M static/maps/mvc/form/form-parameters.js.map
M static/maps/mvc/form/form-section.js.map
M static/maps/mvc/tool/tool-form-composite.js.map
M static/maps/mvc/tool/tool-form-workflow.js.map
M static/scripts/mvc/form/form-input.js
M static/scripts/mvc/form/form-parameters.js
M static/scripts/mvc/form/form-section.js
M static/scripts/mvc/tool/tool-form-composite.js
M static/scripts/mvc/tool/tool-form-workflow.js
Log Message:
-----------
Cleanup collapsible handling
Commit: 3017c61f380c8caa722ff04d11e2e3d37ca56b1c
https://github.com/galaxyproject/galaxy/commit/3017c61f380c8caa722ff04d11e2…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/tool/tool-form-composite.js
M static/maps/mvc/tool/tool-form-composite.js.map
M static/scripts/mvc/tool/tool-form-composite.js
Log Message:
-----------
Fix step order
Commit: 98e738d6f0cb2faae1c304a889baaa66b10df953
https://github.com/galaxyproject/galaxy/commit/98e738d6f0cb2faae1c304a889ba…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/tool/tool-form-composite.js
M static/maps/mvc/tool/tool-form-composite.js.map
M static/scripts/mvc/tool/tool-form-composite.js
Log Message:
-----------
Show pja info inside form portlet
Improve readability
Commit: 28501ab676f9df797bae316c3d24e9ae8fd58a9b
https://github.com/galaxyproject/galaxy/commit/28501ab676f9df797bae316c3d24…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M lib/galaxy/managers/workflows.py
M test/unit/test_galaxy_mapping.py
Log Message:
-----------
Refactor workflow manager for extension.
Commit: 4584a579a297ffd02bd77584b71a8c17d85d261a
https://github.com/galaxyproject/galaxy/commit/4584a579a297ffd02bd77584b71a…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M lib/galaxy/workflow/modules.py
Log Message:
-----------
Fix interface declaration for WorkflowModule.get_state.
Implementers all take this attribute.
Commit: 21213ef70f535e06bc485370686807a6d2850345
https://github.com/galaxyproject/galaxy/commit/21213ef70f535e06bc4853706868…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M test/unit/workflows/test_render.py
M test/unit/workflows/workflow_support.py
Log Message:
-----------
Refactor workflow testing code to quickly bootstrap workflows.
Commit: 031a39aba83932fd0291f440a7e58c962deadfe8
https://github.com/galaxyproject/galaxy/commit/031a39aba83932fd0291f440a7e5…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
A test/unit/workflows/test_workflow_progress.py
M test/unit/workflows/workflow_support.py
Log Message:
-----------
Basic unit tests for workflow progress tracking.
Commit: 8a01b42112ec32e5f978f3a4245127cad3219c45
https://github.com/galaxyproject/galaxy/commit/8a01b42112ec32e5f978f3a42451…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/workflow/modules.py
Log Message:
-----------
Refactor input_by_connections_name logic into model.
Continue to delay calculation of this but auto-compute it if requested and module injection code hasn't been called explicitly. Moves logic internal to class where it belongs also.
Commit: cf367ff0c75454837359b74046c05cc7cb456dc5
https://github.com/galaxyproject/galaxy/commit/cf367ff0c75454837359b74046c0…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M test/unit/workflows/test_workflow_progress.py
Log Message:
-----------
Add another workflow progress test case.
This one for replacing a tool input with an input dataset.
Commit: 7974c1f33486c0a66803004c5d7885a9d91b9c70
https://github.com/galaxyproject/galaxy/commit/7974c1f33486c0a66803004c5d78…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M test/unit/workflows/test_workflow_progress.py
Log Message:
-----------
Add unit tests for workflow progress initialization.
Commit: 07c3d10f31e48f783baf05c133b117e7f3e7ee1a
https://github.com/galaxyproject/galaxy/commit/07c3d10f31e48f783baf05c133b1…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M test/unit/workflows/test_workflow_progress.py
Log Message:
-----------
Extend workflow recovery progress test case to include replacement check.
Commit: 48340b5829fb5ca346060d9372ba7df7e3effcef
https://github.com/galaxyproject/galaxy/commit/48340b5829fb5ca346060d9372ba…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M test/unit/workflows/test_workflow_progress.py
Log Message:
-----------
Add TODO items to workflow progress unit tests.
Commit: 67c98f54cad4f20413568417e2cbb97bee24b0e5
https://github.com/galaxyproject/galaxy/commit/67c98f54cad4f20413568417e2cb…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-01 (Tue, 01 Dec 2015)
Changed paths:
M lib/galaxy/dependencies/requirements.txt
M lib/tool_shed/util/common_util.py
M lib/tool_shed/util/hg_util.py
Log Message:
-----------
Merge pull request #1200 from nsoranzo/tool_shed_fixes
Tool shed fixes.
Commit: ffb3de9ede515d10fbdf06519140a726e0cfa7d1
https://github.com/galaxyproject/galaxy/commit/ffb3de9ede515d10fbdf06519140…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-02 (Wed, 02 Dec 2015)
Changed paths:
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/actions/__init__.py
M lib/galaxy/tools/parser/xml.py
A test/functional/tools/collection_type_source.xml
M test/functional/tools/samples_tool_conf.xml
Log Message:
-----------
Merge pull request #1153 from jmchilton/collection_type_source
Implement type_source on output collections.
Commit: aa90e346dd4e10850482e38c7331864bef50f007
https://github.com/galaxyproject/galaxy/commit/aa90e346dd4e10850482e38c7331…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-02 (Wed, 02 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/form/form-view.js
M client/galaxy/scripts/mvc/tool/tool-form-base.js
M client/galaxy/scripts/mvc/tool/tool-form-composite.js
M client/galaxy/scripts/mvc/tool/tool-form-workflow.js
M client/galaxy/scripts/mvc/tool/tool-form.js
M lib/galaxy/tools/parameters/basic.py
M static/maps/mvc/form/form-view.js.map
M static/maps/mvc/tool/tool-form-base.js.map
M static/maps/mvc/tool/tool-form-composite.js.map
M static/maps/mvc/tool/tool-form-workflow.js.map
M static/maps/mvc/tool/tool-form.js.map
M static/scripts/mvc/form/form-view.js
M static/scripts/mvc/tool/tool-form-base.js
M static/scripts/mvc/tool/tool-form-composite.js
M static/scripts/mvc/tool/tool-form-workflow.js
M static/scripts/mvc/tool/tool-form.js
Log Message:
-----------
Revise form base
Fix style
Commit: 2c6c5236323dbea196cfd2e8fe3915f0c7e4c6df
https://github.com/galaxyproject/galaxy/commit/2c6c5236323dbea196cfd2e8fe39…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2015-12-02 (Wed, 02 Dec 2015)
Changed paths:
M lib/galaxy/datatypes/text.py
Log Message:
-----------
Only store ids for row and column in BIOM1 datatype.
Commit: 3acfa9c786e1fa5567cf313b294b68ab4c508c1b
https://github.com/galaxyproject/galaxy/commit/3acfa9c786e1fa5567cf313b294b…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2015-12-02 (Wed, 02 Dec 2015)
Changed paths:
M lib/galaxy/datatypes/text.py
Log Message:
-----------
Add blank lines around internal function.
Commit: 002bc6b40a4314fc5f35f6156a73cad91532484d
https://github.com/galaxyproject/galaxy/commit/002bc6b40a4314fc5f35f6156a73…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-02 (Wed, 02 Dec 2015)
Changed paths:
M .gitignore
M client/GruntFile.js
M client/galaxy/scripts/layout/masthead.js
M client/galaxy/scripts/layout/panel.js
M client/galaxy/scripts/layout/scratchbook.js
M client/galaxy/scripts/mvc/base-mvc.js
M client/galaxy/scripts/mvc/dataset/dataset-li.js
M client/galaxy/scripts/mvc/library/library-folderrow-view.js
M client/galaxy/scripts/mvc/library/library-foldertoolbar-view.js
M client/galaxy/scripts/mvc/list/list-view.js
M client/galaxy/scripts/mvc/tool/tools-form-base.js
M client/galaxy/scripts/mvc/ui/ui-buttons.js
M client/grunt-tasks/style.js
M client/package.json
M config/datatypes_conf.xml.sample
M config/plugins/interactive_environments/common/templates/ie.mako
M config/plugins/visualizations/charts/templates/charts.mako
A config/reports.ini.sample
R config/reports_wsgi.ini.sample
M config/tool_shed.ini.sample
A doc/source/releases/15.10.rst
M doc/source/releases/15.10_announce.rst
A doc/source/releases/16.01_announce.rst
M lib/galaxy/datatypes/interval.py
M lib/galaxy/dependencies/requirements.txt
M lib/galaxy/managers/workflows.py
M lib/galaxy/model/__init__.py
M lib/galaxy/security/__init__.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/actions/__init__.py
M lib/galaxy/tools/parser/xml.py
M lib/galaxy/web/base/controller.py
M lib/galaxy/webapps/galaxy/api/workflows.py
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/galaxy/controllers/dataset.py
M lib/galaxy/webapps/galaxy/controllers/workflow.py
M lib/galaxy/webapps/tool_shed/config.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/galaxy/workflow/extract.py
M lib/galaxy/workflow/modules.py
M lib/tool_shed/util/common_util.py
M lib/tool_shed/util/hg_util.py
M lib/tool_shed/util/shed_util_common.py
M run_reports.sh
M scripts/bootstrap_history.py
M scripts/functional_tests.py
M scripts/sync_reports_config.py
M static/maps/layout/masthead.js.map
M static/maps/layout/panel.js.map
M static/maps/layout/scratchbook.js.map
M static/maps/mvc/base-mvc.js.map
M static/maps/mvc/dataset/dataset-li.js.map
M static/maps/mvc/library/library-folderrow-view.js.map
M static/maps/mvc/library/library-foldertoolbar-view.js.map
A static/maps/mvc/list/list-panel.js.map
M static/maps/mvc/list/list-view.js.map
M static/maps/mvc/tool/tools-form-base.js.map
A static/maps/mvc/tools/tools-form-base.js.map
M static/maps/mvc/ui/ui-buttons.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/layout/masthead.js
M static/scripts/layout/panel.js
M static/scripts/layout/scratchbook.js
M static/scripts/mvc/base-mvc.js
M static/scripts/mvc/dataset/dataset-li.js
M static/scripts/mvc/library/library-folderrow-view.js
M static/scripts/mvc/library/library-foldertoolbar-view.js
M static/scripts/mvc/list/list-view.js
M static/scripts/mvc/tool/tools-form-base.js
A static/scripts/mvc/tools/tools-form-base.js
M static/scripts/mvc/ui/ui-buttons.js
M static/style/blue/autocomplete_tagging.css
M static/style/blue/base.css
M static/style/blue/embed_item.css
M static/style/blue/iphone.css
M static/style/blue/library.css
M static/style/blue/trackster.css
M templates/webapps/galaxy/root/index.mako
M templates/webapps/galaxy/workflow/run.mako
M test/api/test_workflow_extraction.py
M test/api/test_workflows.py
M test/api/test_workflows_from_yaml.py
A test/api/workflows_format_2/README.txt
A test/api/workflows_format_2/__init__.py
A test/api/workflows_format_2/converter.py
A test/api/workflows_format_2/interface.py
A test/api/workflows_format_2/main.py
R test/api/yaml_to_workflow.py
A test/functional/tools/collection_type_source.xml
A test/functional/tools/output_format_collection.xml
M test/functional/tools/samples_tool_conf.xml
M test/functional/tools/simple_constructs.yml
M test/qunit/package.json
M test/unit/tools/test_actions.py
M test/unit/tools/test_parsing.py
Log Message:
-----------
(merge dev)
Commit: cfdbf8c0e71c5cdfa0ae47f6da7cc4553efd8429
https://github.com/galaxyproject/galaxy/commit/cfdbf8c0e71c5cdfa0ae47f6da7c…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-02 (Wed, 02 Dec 2015)
Changed paths:
M test/qunit/test-app.js
M test/qunit/test-data/bootstrapped.js
M test/qunit/tests/galaxy-app-base.js
Log Message:
-----------
Testing, webpack: correct name of Galaxy module in qunit, properly call require, pass GalaxyApp data
Commit: 963d8637e869a214ee0e2c352a8184feb980a40e
https://github.com/galaxyproject/galaxy/commit/963d8637e869a214ee0e2c352a81…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-02 (Wed, 02 Dec 2015)
Changed paths:
R client/galaxy/scripts/galaxy.tools.js
R static/maps/galaxy.tools.js.map
R static/maps/galaxy.workflows.js.map
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
R static/scripts/galaxy.tools.js
R static/scripts/galaxy.workflows.js
Log Message:
-----------
Webpack: remove cruft galaxy.tools.js and (remnants of) galaxy.workflows.js
Commit: 97415de3ce2bda54fb0730a41b4e0c7d8e93778a
https://github.com/galaxyproject/galaxy/commit/97415de3ce2bda54fb0730a41b4e…
Author: chambm <matt.chambers42(a)gmail.com>
Date: 2015-12-02 (Wed, 02 Dec 2015)
Changed paths:
M config/datatypes_conf.xml.sample
M lib/galaxy/datatypes/binary.py
M lib/galaxy/datatypes/proteomics.py
M lib/galaxy/datatypes/registry.py
M lib/galaxy/datatypes/sniff.py
A lib/galaxy/datatypes/test/test.idpDB
A lib/galaxy/datatypes/test/test.mz5
Log Message:
-----------
Move idpDB and MzSQlite formats from proteomics.py to binary.py, because the SQLite sniffer lives there, and more specialized formats must be registered for sniffing before the generic format
Add proper idpDB sniffing logic (akin to MzSQlite) and test case
Add H5 sniffing based on magic number and test case
Add SQLite/IdpDB/MzSQlite/GeminiSQLite and H5 to default datatypes in registry.py
Commit: dd5f3aec52d1cec8e2a98dc9cf7134cd9b381d84
https://github.com/galaxyproject/galaxy/commit/dd5f3aec52d1cec8e2a98dc9cf71…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M test/api/test_workflows.py
Log Message:
-----------
Fix workflow extraction test cases broken with 77ed5681f8565b12ab1d5e5c7d0302c938e9c73d
Commit: dd7bddcaa682d6d7cdaba8661c2c7cc80997ade0
https://github.com/galaxyproject/galaxy/commit/dd7bddcaa682d6d7cdaba8661c2c…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M lib/galaxy/jobs/__init__.py
M lib/galaxy/jobs/runners/__init__.py
M lib/galaxy/model/__init__.py
Log Message:
-----------
Optimize initial queueing of jobs.
- Don't refresh job when this is the only thread fetching it.
- Avoid a bunch of unnecessary flushes, just flush once essentially during process.
Brings this process from taking over 1 second per job on average on sqlite for cat1 on my laptop to around 400 ms on average.
Commit: 299fbe99d7e157b9c01bbf0cdfcb7057dd59791a
https://github.com/galaxyproject/galaxy/commit/299fbe99d7e157b9c01bbf0cdfcb…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M lib/galaxy/tools/__init__.py
Log Message:
-----------
Micro optimization, only fetch tool validation once per multi-run.
Commit: 876c28f88d81a8599a3278d9deac730adbac10d9
https://github.com/galaxyproject/galaxy/commit/876c28f88d81a8599a3278d9deac…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/execute.py
Log Message:
-----------
Add more job timers.
Commit: 41d3dc62f7e967ea3b409be410310563d0737bc4
https://github.com/galaxyproject/galaxy/commit/41d3dc62f7e967ea3b409be41031…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M config/galaxy.ini.sample
M lib/galaxy/config.py
M lib/galaxy/managers/collections.py
M lib/galaxy/model/__init__.py
M lib/galaxy/security/__init__.py
M lib/galaxy/tools/actions/__init__.py
M lib/galaxy/tools/execute.py
Log Message:
-----------
Parallelize executing tool parameter combinations.
Should work when mapping over collections or for big muli-run tool submissions.
Because of database tension with sqlalchemy it is not strictly a linear increase, but the end user walltime experience for a 24 dataset collection being submitted using 4 threads instead 1 drops execution time from 68 seconds to 35.
Rebased with fixes thanks to @nsoranzo - https://github.com/jmchilton/galaxy/commit/7f6514a21222ea787a0676764e4a4fe8….
Commit: 64b7cc9fef21caac5f9d21a8d42b60262fd28162
https://github.com/galaxyproject/galaxy/commit/64b7cc9fef21caac5f9d21a8d42b…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
A test/functional/tools/create_10.xml
M test/functional/tools/samples_tool_conf.xml
Log Message:
-----------
Add sample tool that creates 10 outputs.
Commit: a190b69e33a41717ddcc9eaa82826a82cc3d69b1
https://github.com/galaxyproject/galaxy/commit/a190b69e33a41717ddcc9eaa8282…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/model/mapping.py
M lib/galaxy/tools/actions/__init__.py
Log Message:
-----------
Optimize tools that produce multiple outputs.
Fetch HIDs for these datasets all at once and flush once for all assignments. Creating jobs from 4 threads each job producing 10 outputs - this resulted in reducing the runtime of this portion of the code by 90% and saving around 20 seconds per job.
Before:
galaxy.tools.actions INFO 2015-11-30 15:53:46,235 Add outputs to history (22494.829 ms)
galaxy.tools.actions INFO 2015-11-30 15:53:47,295 Add outputs to history (22239.062 ms)
galaxy.tools.actions INFO 2015-11-30 15:53:48,320 Add outputs to history (23781.079 ms)
galaxy.tools.actions INFO 2015-11-30 15:53:51,490 Add outputs to history (21820.567 ms)
galaxy.tools.actions INFO 2015-11-30 15:54:24,506 Add outputs to history (25353.837 ms)
After:
galaxy.tools.actions INFO 2015-11-30 16:08:47,640 Add outputs to history (2781.675 ms)
galaxy.tools.actions INFO 2015-11-30 16:08:47,860 Add outputs to history (3177.738 ms)
galaxy.tools.actions INFO 2015-11-30 16:08:48,776 Add outputs to history (2425.528 ms)
galaxy.tools.actions INFO 2015-11-30 16:09:02,942 Add outputs to history (2579.022 ms)
Commit: ab2c7c2c079b51ffd4ed7ef00724ef3f8d2636ec
https://github.com/galaxyproject/galaxy/commit/ab2c7c2c079b51ffd4ed7ef00724…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M lib/galaxy/tools/actions/__init__.py
Log Message:
-----------
Tool execution micro optimization...
... Don't create an extra list to reverse, just iterate over in reversed order.
Commit: 3de8579633c4294abb2a3235f90463108c35d324
https://github.com/galaxyproject/galaxy/commit/3de8579633c4294abb2a3235f904…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M lib/galaxy/jobs/output_checker.py
Log Message:
-----------
Add debug statement in output checker for why job is failing.
Should help tool testing and other Galaxy testing.
Commit: 59944046b7f16d13886928eb6928a7d67446c1e6
https://github.com/galaxyproject/galaxy/commit/59944046b7f16d13886928eb6928…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M test/unit/workflows/test_workflow_progress.py
Log Message:
-----------
Fix for workflow progress unit testing.
Commit: bed421fbc98583fdc00db57d3bb787450766576b
https://github.com/galaxyproject/galaxy/commit/bed421fbc98583fdc00db57d3bb7…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M lib/galaxy/managers/workflows.py
M lib/galaxy/model/__init__.py
Log Message:
-----------
Introduce model abstractions for dealing with workflow steps.
Three methods to provide higher-level access and reasoning about steps than just a flat array.
Commit: da6051922e51ecc43c2f5b973adf5ba2dbf7554b
https://github.com/galaxyproject/galaxy/commit/da6051922e51ecc43c2f5b973adf…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M lib/galaxy/managers/workflows.py
Log Message:
-----------
Unroll input connection logic.
Need to extend it downstream and the one-liner is fun but not easy to extend or particularily readable.
Commit: d97d8a203c7c09123f7298627ad394d6c96e5b1c
https://github.com/galaxyproject/galaxy/commit/d97d8a203c7c09123f7298627ad3…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M lib/galaxy/workflow/run.py
Log Message:
-----------
Better error messages in workflow running code.
Commit: 4fdea55f81756a27bff8ef66b3fe27d4bda36905
https://github.com/galaxyproject/galaxy/commit/4fdea55f81756a27bff8ef66b3fe…
Author: Greg Von Kuster <ghv2(a)psu.edu>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M lib/galaxy/datatypes/constructive_solid_geometry.py
Log Message:
-----------
Enhance the VTK datatypes to support cell data in addition to point
data.
Replaces https://github.com/galaxyproject/galaxy/pull/1189.
Commit: 69b8d83ba2b829621183361694f341bda66a77fe
https://github.com/galaxyproject/galaxy/commit/69b8d83ba2b829621183361694f3…
Author: Peter van Heusden <pvh(a)sanbi.ac.za>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M lib/galaxy/tools/deps/resolvers/modules.py
Log Message:
-----------
* Make default_indicator configurable
* Document classes
Commit: b87c22c73b9a3f6d31507d268e945a6ae8deef60
https://github.com/galaxyproject/galaxy/commit/b87c22c73b9a3f6d31507d268e94…
Author: Peter van Heusden <pvh(a)sanbi.ac.za>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
A config/dependency_resolvers_conf.xml.sample
Log Message:
-----------
* Add sample dependency_resolvers_conf.xml that matches actual default
Commit: a443d99fddc14b58698618860076032cb9540dca
https://github.com/galaxyproject/galaxy/commit/a443d99fddc14b58698618860076…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M lib/galaxy/datatypes/data.py
M lib/galaxy/datatypes/graph.py
Log Message:
-----------
Undo deprecated datatypes stuff, doesn't work with Galaxy well.
Commit: 20b96d883d9ef33b51d5a32d82ce2d1251daf572
https://github.com/galaxyproject/galaxy/commit/20b96d883d9ef33b51d5a32d82ce…
Author: Nicola Soranzo <nsoranzo(a)tiscali.it>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M lib/galaxy/managers/workflows.py
M lib/galaxy/model/__init__.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/workflow/modules.py
M lib/galaxy/workflow/run.py
M lib/galaxy/workflow/run_request.py
M test/api/test_workflows.py
M test/unit/test_galaxy_mapping.py
M test/unit/workflows/test_render.py
A test/unit/workflows/test_workflow_progress.py
M test/unit/workflows/workflow_support.py
Log Message:
-----------
Merge pull request #1202 from jmchilton/workflow_tool_refactoring
Small Tool and Workflow Refactoring and Fixes
Commit: c034dc3e33a4c4aeecefcea375ea179621be1af6
https://github.com/galaxyproject/galaxy/commit/c034dc3e33a4c4aeecefcea375ea…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M lib/galaxy/jobs/output_checker.py
Log Message:
-----------
Merge pull request #1213 from jmchilton/tool_logging_2
Add debug statement in output checker for why job is failing.
Commit: 1adff983f2509e6551f9000008d614a61d9b12a6
https://github.com/galaxyproject/galaxy/commit/1adff983f2509e6551f9000008d6…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M test/api/helpers.py
M test/api/test_jobs.py
Log Message:
-----------
Wait on jobs and history in certain API test cases.
This strategy proved to work around certain race conditions in tool testing so hopefully it will solve the transiently failing job searching and filtering test cases.
Commit: 362a25e6e6b03dfada43ad1b9ab651966936c795
https://github.com/galaxyproject/galaxy/commit/362a25e6e6b03dfada43ad1b9ab6…
Author: Eric Enns <eric.enns(a)phac-aspc.gc.ca>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M lib/galaxy/tools/actions/__init__.py
Log Message:
-----------
Updated tool input collection to only add items from a collection which are being used by the tool and not the entire collection. (Thanks to @markiskander for helping me find this).
Commit: 6c9a82e142c5bf70ae4612f094b8d0c89e3fd2f3
https://github.com/galaxyproject/galaxy/commit/6c9a82e142c5bf70ae4612f094b8…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M lib/galaxy/tools/__init__.py
Log Message:
-----------
Fix for Section upgrade messages.
Commit: 2c0ad432f8485cb40719adfa8ecbbf1a342afd03
https://github.com/galaxyproject/galaxy/commit/2c0ad432f8485cb40719adfa8ecb…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M lib/galaxy/tools/__init__.py
Log Message:
-----------
Use test param label instead of param label in conditional upgrade missing message.
Commit: a3e3bde6a2b5c2fc9433336526ec32badfc8ce9d
https://github.com/galaxyproject/galaxy/commit/a3e3bde6a2b5c2fc9433336526ec…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M client/galaxy/scripts/apps/login.js
M lib/galaxy/web/framework/webapp.py
M lib/galaxy/webapps/galaxy/controllers/root.py
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/bundled/login.bundled.js
M static/scripts/bundled/login.bundled.js.map
Log Message:
-----------
Webpack: restore redirect for after login when require_login; remove allowed_paths for require_login: /index, /tool_menu, /masthead, library/browse, history/list, dataset/list
Commit: 56054c6d98519541b896a5145998b02688750bb6
https://github.com/galaxyproject/galaxy/commit/56054c6d98519541b896a5145998…
Author: Peter van Heusden <pvh(a)sanbi.ac.za>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M lib/galaxy/tools/deps/resolvers/modules.py
Log Message:
-----------
* Fix AvailModuleChecker() invocation and propogate default default_indicator
Commit: 9b085740dfddfcb67f6a2e21a51503cd2ac0741e
https://github.com/galaxyproject/galaxy/commit/9b085740dfddfcb67f6a2e21a515…
Author: Greg Von Kuster <ghv2(a)psu.edu>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M lib/galaxy/jobs/output_checker.py
M lib/galaxy/managers/workflows.py
M lib/galaxy/model/__init__.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/workflow/modules.py
M lib/galaxy/workflow/run.py
M lib/galaxy/workflow/run_request.py
M test/api/test_workflows.py
M test/unit/test_galaxy_mapping.py
M test/unit/workflows/test_render.py
A test/unit/workflows/test_workflow_progress.py
M test/unit/workflows/workflow_support.py
Log Message:
-----------
Merge branch 'dev' of https://github.com/galaxyproject/galaxy into dev
Commit: 65e6a1c3b6ca26e9f0d760cb39be7ec177d6c40f
https://github.com/galaxyproject/galaxy/commit/65e6a1c3b6ca26e9f0d760cb39be…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M config/datatypes_conf.xml.sample
M lib/galaxy/datatypes/binary.py
M lib/galaxy/datatypes/proteomics.py
M lib/galaxy/datatypes/registry.py
M lib/galaxy/datatypes/sniff.py
A lib/galaxy/datatypes/test/test.idpDB
A lib/galaxy/datatypes/test/test.mz5
Log Message:
-----------
Merge pull request #1209 from chambm/feature/idpdb_hdf5_sniffers
Add idpDB and HDF5 sniffers and fix MzSQlite sniffer
Commit: 4c13c92540c7ed4f8305dcb0216c2a448f33c24d
https://github.com/galaxyproject/galaxy/commit/4c13c92540c7ed4f8305dcb0216c…
Author: Jesse <jesse.vandam(a)wur.nl>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M lib/galaxy/datatypes/data.py
M lib/galaxy/datatypes/graph.py
Log Message:
-----------
Merge pull request #2 from jmchilton/triples_2
Remove deprecated datatype stuff
Commit: a57095661246fab1d9045e0cabb1845f662edb5d
https://github.com/galaxyproject/galaxy/commit/a57095661246fab1d9045e0cabb1…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M config/datatypes_conf.xml.sample
M lib/galaxy/datatypes/graph.py
A lib/galaxy/datatypes/triples.py
Log Message:
-----------
Merge pull request #396 from jessevdam/dev
Added better support for formats that store triples.
Commit: 92a7b995b05f7966e2936b62f052d3a4b8ed0642
https://github.com/galaxyproject/galaxy/commit/92a7b995b05f7966e2936b62f052…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M lib/galaxy/tools/actions/__init__.py
Log Message:
-----------
Merge pull request #1217 from ericenns/collection-tool-input-fixes
Collection tool input mapping performance fixes
Commit: bd0663f65062d60de810478566604b3ee33b109d
https://github.com/galaxyproject/galaxy/commit/bd0663f65062d60de81047856660…
Author: Peter van Heusden <pvh(a)sanbi.ac.za>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M lib/galaxy/tools/deps/resolvers/modules.py
Log Message:
-----------
* Initialise default_indicator before using __modules
Commit: b72035c9fc4136af5f3db464fd5b2a9c5e330cca
https://github.com/galaxyproject/galaxy/commit/b72035c9fc4136af5f3db464fd5b…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M client/galaxy/scripts/apps/analysis.js
M client/galaxy/scripts/layout/masthead.js
M client/galaxy/scripts/mvc/history/history-model.js
M client/galaxy/scripts/mvc/history/history-view-edit-current.js
M static/maps/layout/masthead.js.map
M static/maps/mvc/history/history-model.js.map
M static/maps/mvc/history/history-view-edit-current.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/layout/masthead.js
M static/scripts/mvc/history/history-model.js
M static/scripts/mvc/history/history-view-edit-current.js
Log Message:
-----------
Webpack: fix/re-work the pub-sub connection between the quotameter and the history panel so that the meter updates properly when a new dataset is added
Commit: 14ac3665ee37224aa5278ce7a3876fb204b1bf2d
https://github.com/galaxyproject/galaxy/commit/14ac3665ee37224aa5278ce7a387…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M lib/galaxy/webapps/tool_shed/api/repositories.py
M templates/webapps/tool_shed/common/reset_metadata_on_selected_repositories.mako
Log Message:
-----------
Merge pull request #598 from davebx/async_metadata_reset
Make bulk repository metadata resets asynchronous.
Commit: ba3e3da946b699a03ef9cab9095ea294d6df3b69
https://github.com/galaxyproject/galaxy/commit/ba3e3da946b699a03ef9cab9095e…
Author: Peter van Heusden <pvh(a)sanbi.ac.za>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M config/dependency_resolvers_conf.xml.sample
Log Message:
-----------
* Add sample config for modules resolver
Commit: 9a1fc647a38007fef2a7a179648ea8f925ab5a8f
https://github.com/galaxyproject/galaxy/commit/9a1fc647a38007fef2a7a179648e…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M config/galaxy.ini.sample
M lib/galaxy/config.py
M lib/galaxy/jobs/__init__.py
M lib/galaxy/jobs/runners/__init__.py
M lib/galaxy/managers/collections.py
M lib/galaxy/model/__init__.py
M lib/galaxy/model/mapping.py
M lib/galaxy/security/__init__.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/actions/__init__.py
M lib/galaxy/tools/execute.py
A test/functional/tools/create_10.xml
M test/functional/tools/samples_tool_conf.xml
Log Message:
-----------
Merge pull request #1212 from jmchilton/tool_opts_6
Smaller Tool Optimization PR
Commit: 6f727962945481b75dd675e70eed78e8b785cb0a
https://github.com/galaxyproject/galaxy/commit/6f727962945481b75dd675e70eed…
Author: Peter van Heusden <pvh(a)sanbi.ac.za>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M config/dependency_resolvers_conf.xml.sample
Log Message:
-----------
* Update sample config for modules resolver
Commit: 6735c9deceadba39c0a2b34b076f37440c087fc3
https://github.com/galaxyproject/galaxy/commit/6735c9deceadba39c0a2b34b076f…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M README.rst
Log Message:
-----------
replace the readthedocs badge,
we cannot use it until https://github.com/rtfd/readthedocs.org/issues/1767 is resolved
Commit: e76933b55749c619c4debf4e62cd1f4d7e3cb7e1
https://github.com/galaxyproject/galaxy/commit/e76933b55749c619c4debf4e62cd…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M README.rst
Log Message:
-----------
Merge pull request #1229 from martenson/remove-readthecdocs-badge
replace the readthedocs badge,
Commit: d2ce6d4d2b03fc7ad0a40ac4b0194f8636350f52
https://github.com/galaxyproject/galaxy/commit/d2ce6d4d2b03fc7ad0a40ac4b019…
Author: Greg Von Kuster <ghv2(a)psu.edu>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M README.rst
M config/datatypes_conf.xml.sample
M config/galaxy.ini.sample
M lib/galaxy/config.py
M lib/galaxy/datatypes/binary.py
M lib/galaxy/datatypes/graph.py
M lib/galaxy/datatypes/proteomics.py
M lib/galaxy/datatypes/registry.py
M lib/galaxy/datatypes/sniff.py
A lib/galaxy/datatypes/test/test.idpDB
A lib/galaxy/datatypes/test/test.mz5
A lib/galaxy/datatypes/triples.py
M lib/galaxy/jobs/__init__.py
M lib/galaxy/jobs/runners/__init__.py
M lib/galaxy/managers/collections.py
M lib/galaxy/model/__init__.py
M lib/galaxy/model/mapping.py
M lib/galaxy/security/__init__.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/actions/__init__.py
M lib/galaxy/tools/execute.py
M lib/galaxy/webapps/tool_shed/api/repositories.py
M templates/webapps/tool_shed/common/reset_metadata_on_selected_repositories.mako
A test/functional/tools/create_10.xml
M test/functional/tools/samples_tool_conf.xml
Log Message:
-----------
Merge branch 'dev' of https://github.com/galaxyproject/galaxy into dev
Commit: 102eeef2d7045fa5b8706497f04817cb2f75813a
https://github.com/galaxyproject/galaxy/commit/102eeef2d7045fa5b8706497f048…
Author: Takao Nakaguchi <takao.nakaguchi(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M lib/tool_shed/galaxy_install/migrate/check.py
Log Message:
-----------
Replacement should be applied only to first occurrence.
Commit: a8a4480d5c7e92e0f121eefd66357f5504c4cb26
https://github.com/galaxyproject/galaxy/commit/a8a4480d5c7e92e0f121eefd6635…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/form/form-data.js
M client/galaxy/scripts/mvc/form/form-input.js
M client/galaxy/scripts/mvc/form/form-repeat.js
M client/galaxy/scripts/mvc/form/form-section.js
M client/galaxy/scripts/mvc/form/form-select-content.js
M client/galaxy/scripts/mvc/form/form-view.js
M client/galaxy/scripts/mvc/tool/tool-form-base.js
M client/galaxy/scripts/mvc/tool/tool-form-composite.js
M client/galaxy/style/less/ui.less
M config/plugins/visualizations/charts/static/build-app.js
M config/plugins/visualizations/charts/static/library/ui-table-form.js
M config/plugins/visualizations/charts/static/views/editor.js
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/parameters/dataset_matcher.py
M static/maps/mvc/form/form-data.js.map
M static/maps/mvc/form/form-input.js.map
M static/maps/mvc/form/form-repeat.js.map
M static/maps/mvc/form/form-section.js.map
M static/maps/mvc/form/form-select-content.js.map
M static/maps/mvc/form/form-view.js.map
M static/maps/mvc/tool/tool-form-base.js.map
M static/maps/mvc/tool/tool-form-composite.js.map
M static/scripts/mvc/form/form-input.js
M static/scripts/mvc/form/form-repeat.js
M static/scripts/mvc/form/form-section.js
M static/scripts/mvc/form/form-select-content.js
M static/scripts/mvc/form/form-view.js
M static/scripts/mvc/tool/tool-form-base.js
M static/scripts/mvc/tool/tool-form-composite.js
M static/style/blue/base.css
M templates/webapps/galaxy/workflow/run.mako
Log Message:
-----------
Fix dataset matching
Commit: ac79cf191c0a0588cdaf45b5075a2494bf097f57
https://github.com/galaxyproject/galaxy/commit/ac79cf191c0a0588cdaf45b5075a…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-03 (Thu, 03 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/form/form-input.js
M client/galaxy/style/less/ui.less
M static/maps/mvc/form/form-input.js.map
M static/scripts/mvc/form/form-input.js
M static/style/blue/base.css
Log Message:
-----------
Fix style naming
Commit: 11c46f4f35f3c1cb579198d28402ebacd51e6ec8
https://github.com/galaxyproject/galaxy/commit/11c46f4f35f3c1cb579198d28402…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M lib/galaxy/datatypes/interval.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M test/tool_shed/test_data/1440_files/complex_dependency/tool_dependencies.xml
Log Message:
-----------
Merge branch 'master' into dev
Commit: f969eabf268a2e07235083d37168ae9887f87876
https://github.com/galaxyproject/galaxy/commit/f969eabf268a2e07235083d37168…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M test/qunit/test-common.js
Log Message:
-----------
Fix qunit shim to match base_panels.mako shim.
QUnit tests of things with underscore require statements would not work without this change.
Commit: 0c8a738a35d8c28b18dba6da92ec702096c1554a
https://github.com/galaxyproject/galaxy/commit/0c8a738a35d8c28b18dba6da92ec…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M run_tests.sh
Log Message:
-----------
Export GALAXY_TEST_DBURI as GALAXY_CONFIG_OVERRIDE_DATABASE_CONNECTION before installing wheels. Fix #1205.
As test/docker/base/run_test_wrapper.sh does.
Commit: df781dcc188193ff044a625540dc02961a8c5640
https://github.com/galaxyproject/galaxy/commit/df781dcc188193ff044a625540dc…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M test/api/helpers.py
Log Message:
-----------
Fix missing assertion pointed out @nsoranzo.
Lots of other tests would fail if simple uploads aren't working, but it is better to be direct and very explicit about why this particular test is failing.
Commit: 296971c5ded17367d2a14a32a072678b727ddf05
https://github.com/galaxyproject/galaxy/commit/296971c5ded17367d2a14a32a072…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M lib/galaxy/workflow/run.py
Log Message:
-----------
Fix typo spotted by @nsoranzo.
Commit: fcabc5242ca8fc6b1e7533ade17e2a8e3d27fe82
https://github.com/galaxyproject/galaxy/commit/fcabc5242ca8fc6b1e7533ade17e…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M lib/galaxy/tools/deps/resolvers/unlinked_tool_shed_packages.py
Log Message:
-----------
Merge pull request #1160 from Christian-B/unlinked_dependencies
Allowed for capitalised package names such as R
Commit: 93bfa1992cc23a411e46437547581843c0e7b952
https://github.com/galaxyproject/galaxy/commit/93bfa1992cc23a411e4643754758…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M lib/galaxy/managers/workflows.py
M lib/galaxy/model/__init__.py
Log Message:
-----------
Make more workflow methods properties.
As suggested by @nsoranzo.
Commit: f40d4fc178cbf3a3266a56ce0108b87e21bd5be0
https://github.com/galaxyproject/galaxy/commit/f40d4fc178cbf3a3266a56ce0108…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M config/galaxy.ini.sample
R templates/webapps/galaxy/root/index.mako
Log Message:
-----------
Webpack: re-add show_welcome_with_login config option (lost due to merge/gitignore?); remove root/index.mako
Commit: 600338dac7b0dad7f514f1b9a3c7c123dd63c379
https://github.com/galaxyproject/galaxy/commit/600338dac7b0dad7f514f1b9a3c7…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M run_tests.sh
Log Message:
-----------
Merge pull request #1231 from nsoranzo/dev_tests_conditional_wheels
Export GALAXY_TEST_DBURI as GALAXY_CONFIG_OVERRIDE_DATABASE_CONNECTION before installing wheels.
Commit: bab7ae099845f4503a2e41c939abc2aca9dc7a66
https://github.com/galaxyproject/galaxy/commit/bab7ae099845f4503a2e41c939ab…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M test/base/twilltestcase.py
Log Message:
-----------
Improved logging related tool test timeouts.
There are transient failures of maxseconds.xml's tool test on Jenkins that I can't reproduce locally, hopefully improved logging will help.
https://jenkins.galaxyproject.org/job/docker-framework/1309/testReport/juni…
Commit: 74f7b900368030e425f79f835e2093102dbed5ba
https://github.com/galaxyproject/galaxy/commit/74f7b900368030e425f79f835e20…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M lib/tool_shed/galaxy_install/migrate/check.py
Log Message:
-----------
Merge pull request #1230 from openlangrid/dev
Replacement should be applied only to first occurrence.
Commit: 732b5722ae7c668634185209171fa55288e19985
https://github.com/galaxyproject/galaxy/commit/732b5722ae7c668634185209171f…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M lib/tool_shed/galaxy_install/migrate/check.py
Log Message:
-----------
Do not mess with galaxy_config_file, if provided.
Commit: 5c87d07e0f535ed3367bbd463fb16bc0d83d7cf9
https://github.com/galaxyproject/galaxy/commit/5c87d07e0f535ed3367bbd463fb1…
Author: carlfeberhard <carlfeberhard(a)users.noreply.github.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M test/qunit/test-common.js
Log Message:
-----------
Merge pull request #1233 from jmchilton/underscore_shim
Fix qunit shim to match base_panels.mako shim.
Commit: 905471e32fef02b9da38d2efe0cc463cd258cbff
https://github.com/galaxyproject/galaxy/commit/905471e32fef02b9da38d2efe0cc…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M test/api/helpers.py
M test/api/test_jobs.py
Log Message:
-----------
Merge pull request #1226 from jmchilton/jobs_api_test_fix
Wait on jobs and history in certain API test cases.
Commit: 0eb87f911c4523ecb268b26ad8c74a0252ce8453
https://github.com/galaxyproject/galaxy/commit/0eb87f911c4523ecb268b26ad8c7…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M lib/galaxy/model/__init__.py
Log Message:
-----------
Minor docstring typo
Commit: 4289cf3ab2f92375e6e4d9751064325b55cceaae
https://github.com/galaxyproject/galaxy/commit/4289cf3ab2f92375e6e4d9751064…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M lib/galaxy/model/__init__.py
Log Message:
-----------
Merge pull request #1235 from blankenberg/typo_dev
Minor docstring typo
Commit: 1cc57b1eb2c295dbd68837c864740b6ff079b83d
https://github.com/galaxyproject/galaxy/commit/1cc57b1eb2c295dbd68837c86474…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/history/options-menu.js
M static/maps/mvc/history/options-menu.js.map
M static/scripts/mvc/history/options-menu.js
Log Message:
-----------
Add icons and reorganise history menu
Commit: 564f12c50ffaed386f57e1fd2d4048840e5f8288
https://github.com/galaxyproject/galaxy/commit/564f12c50ffaed386f57e1fd2d40…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/history/options-menu.js
M static/maps/mvc/history/options-menu.js.map
M static/scripts/mvc/history/options-menu.js
Log Message:
-----------
Remove icons
Commit: 42b6da87554b78fddd5b592a82d46deb83cada15
https://github.com/galaxyproject/galaxy/commit/42b6da87554b78fddd5b592a82d4…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/history/options-menu.js
Log Message:
-----------
Comment out debugging
Commit: 9bd2712c5d9aa260012ffdad267434758bf086c0
https://github.com/galaxyproject/galaxy/commit/9bd2712c5d9aa260012ffdad2674…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M static/maps/mvc/history/options-menu.js.map
M static/scripts/libs/jquery/jquery.dynatree.js
M static/scripts/mvc/history/options-menu.js
Log Message:
-----------
Just going to clobber everything
Commit: 4d396a6945b3394cd529849076b1f6c9892962c5
https://github.com/galaxyproject/galaxy/commit/4d396a6945b3394cd529849076b1…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
A config/dependency_resolvers_conf.xml.sample
M lib/galaxy/tools/deps/resolvers/modules.py
Log Message:
-----------
Merge pull request #1221 from pvanheus/env-modules-resolve
Add documentation and extra options to Environment Modules resolver
Commit: 198cb7c9a1534e7914ca76c4648fd750234ddb9f
https://github.com/galaxyproject/galaxy/commit/198cb7c9a1534e7914ca76c4648f…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M static/scripts/libs/jquery/jquery.dynatree.js
Log Message:
-----------
Fix rebase issue
Commit: 5675617178b6d103de88ff907d137974b908761e
https://github.com/galaxyproject/galaxy/commit/5675617178b6d103de88ff907d13…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/history/options-menu.js
M static/maps/mvc/history/options-menu.js.map
M static/scripts/mvc/history/options-menu.js
Log Message:
-----------
Merge pull request #985 from erasche/nicer-history-menu
Add icons and reorganise history menu
Commit: a0c7d87db35133c2a81d54766f0e718d7fe5f766
https://github.com/galaxyproject/galaxy/commit/a0c7d87db35133c2a81d54766f0e…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
A Makefile
A client/.docker-build.sh
A client/Dockerfile
M doc/source/dev/faq.rst
Log Message:
-----------
Ease the grunt uglify process
Commit: 3e8b58c5aa66da83206230d27aacba1eaa7faa00
https://github.com/galaxyproject/galaxy/commit/3e8b58c5aa66da83206230d27aac…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M lib/galaxy/jobs/runners/pulsar.py
Log Message:
-----------
Merge branch 'release_15.10' into dev
Commit: 9e8068f3671cdef499ed51aca3869f91e2e5b69d
https://github.com/galaxyproject/galaxy/commit/9e8068f3671cdef499ed51aca386…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M README.rst
M client/galaxy/scripts/mvc/history/options-menu.js
M config/datatypes_conf.xml.sample
A config/dependency_resolvers_conf.xml.sample
M config/galaxy.ini.sample
M lib/galaxy/config.py
M lib/galaxy/datatypes/binary.py
M lib/galaxy/datatypes/graph.py
M lib/galaxy/datatypes/interval.py
M lib/galaxy/datatypes/proteomics.py
M lib/galaxy/datatypes/registry.py
M lib/galaxy/datatypes/sniff.py
A lib/galaxy/datatypes/test/test.idpDB
A lib/galaxy/datatypes/test/test.mz5
A lib/galaxy/datatypes/triples.py
M lib/galaxy/jobs/__init__.py
M lib/galaxy/jobs/output_checker.py
M lib/galaxy/jobs/runners/__init__.py
M lib/galaxy/managers/collections.py
M lib/galaxy/managers/workflows.py
M lib/galaxy/model/__init__.py
M lib/galaxy/model/mapping.py
M lib/galaxy/security/__init__.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/actions/__init__.py
M lib/galaxy/tools/deps/resolvers/modules.py
M lib/galaxy/tools/deps/resolvers/unlinked_tool_shed_packages.py
M lib/galaxy/tools/execute.py
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/tool_shed/api/repositories.py
M lib/galaxy/workflow/modules.py
M lib/galaxy/workflow/run.py
M lib/galaxy/workflow/run_request.py
M lib/tool_shed/galaxy_install/migrate/check.py
M run_tests.sh
M static/maps/mvc/history/options-menu.js.map
M static/scripts/mvc/history/options-menu.js
M templates/webapps/tool_shed/common/reset_metadata_on_selected_repositories.mako
M test/api/helpers.py
M test/api/test_jobs.py
M test/api/test_workflows.py
A test/functional/tools/create_10.xml
M test/functional/tools/samples_tool_conf.xml
M test/qunit/test-common.js
M test/tool_shed/test_data/1440_files/complex_dependency/tool_dependencies.xml
M test/unit/test_galaxy_mapping.py
M test/unit/workflows/test_render.py
A test/unit/workflows/test_workflow_progress.py
M test/unit/workflows/workflow_support.py
Log Message:
-----------
(merge dev)
Commit: 7cf98d32d811fbf9c8b64f72334c4f4c1e502882
https://github.com/galaxyproject/galaxy/commit/7cf98d32d811fbf9c8b64f72334c…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M doc/source/dev/faq.rst
Log Message:
-----------
Align opinions with @jmchilton
Commit: 1295f985106a9440135e139368a708ef8dcc0538
https://github.com/galaxyproject/galaxy/commit/1295f985106a9440135e139368a7…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M Makefile
Log Message:
-----------
Rename docker image
Commit: 0fec39d3bd323b203d6221f087ccac8014c3fefc
https://github.com/galaxyproject/galaxy/commit/0fec39d3bd323b203d6221f087cc…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M client/Dockerfile
Log Message:
-----------
Less insane build recipe if it's included in the repo
Commit: 0924891e31f3f215323fe7030e0d6c167f596878
https://github.com/galaxyproject/galaxy/commit/0924891e31f3f215323fe7030e0d…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M test/qunit/test-common.js
Log Message:
-----------
Fix up merge issue with double underscore shim.
Commit: 4a279ffb64576258f2f2755f182430e1ccbacbc2
https://github.com/galaxyproject/galaxy/commit/4a279ffb64576258f2f2755f1824…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M test/api/test_workflows_from_yaml.py
M test/api/workflows_format_2/converter.py
Log Message:
-----------
Allow inputs section for Format 2 workflow definitions.
Arguably a more natural way to define inputs, regardless it allows more CWL-like input definitions for workflows.
Commit: b0b26e69019162e335ea5a331ab21009c882f0d1
https://github.com/galaxyproject/galaxy/commit/b0b26e69019162e335ea5a331ab2…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M test/api/test_workflows.py
M test/api/workflows_format_2/converter.py
M test/api/workflows_format_2/main.py
Log Message:
-----------
Allow specifying Format 2 workflow by path.
This will allow importing workflow relative resources in subsequent passes at this.
Commit: 70a9f213932947758f9882776140727eb6c0e246
https://github.com/galaxyproject/galaxy/commit/70a9f213932947758f9882776140…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M test/api/test_workflows_from_yaml.py
M test/api/workflows_format_2/converter.py
M test/api/workflows_format_2/interface.py
Log Message:
-----------
Update workflow format 2 code with infrastructure for nesting runnables.
In downstream work this is used for subworkflows and nested tools. Not sure which of these would potentially hit main line Galaxy first so setting this all up in its own commit.
Commit: 1bd0a4e9703406223f0e9bfe31df4c801998f400
https://github.com/galaxyproject/galaxy/commit/1bd0a4e9703406223f0e9bfe31df…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M test/api/test_workflows_from_yaml.py
M test/api/workflows_format_2/converter.py
Log Message:
-----------
Refactoring and more testing of format 2 workflow implementation code...
... toward more reusable design.
Commit: a597e0e8349f33d4d2c642d2e0a74e3da64b156b
https://github.com/galaxyproject/galaxy/commit/a597e0e8349f33d4d2c642d2e0a7…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M lib/galaxy/managers/workflows.py
M test/api/test_workflows_from_yaml.py
M test/api/workflows_format_2/converter.py
Log Message:
-----------
Implement workflow outputs for format 2 workflow definitions.
Copy CWL style of specifying a outputs specification block at the top-level of the workflow specification and within that use the "source" attribute to specify the output. Reuse the specification used by "$link"s to describe this output - namely <label_or_order_index>[#<output_name=output>].
Commit: 3d0723c812632a276102748ec6a754bbec0b9d9a
https://github.com/galaxyproject/galaxy/commit/3d0723c812632a276102748ec6a7…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/workflow/workflow-manager.js
M client/galaxy/scripts/mvc/workflow/workflow-node.js
M client/galaxy/scripts/mvc/workflow/workflow-view-data.js
M client/galaxy/scripts/mvc/workflow/workflow-view.js
Log Message:
-----------
JS Model abstractions for dealing workflow outputs.
Need to modify how these are represented so I want the logic centralized in the model... also the logic should be centralized in the model.
Commit: 7b3fa824b67c0c7f881a514ae5b6598ede62e14c
https://github.com/galaxyproject/galaxy/commit/7b3fa824b67c0c7f881a514ae5b6…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/workflow/workflow-node.js
M lib/galaxy/managers/workflows.py
M test/qunit/tests/workflow_editor_tests.js
Log Message:
-----------
Update worklfow editor representation of workflow outputs.
Modified this for the workflow export representation but this needed to be updated for the workflow editor because they shared some code in the manager. This was going to be needed downstream when I add labels and uuids to workflow outputs anyway.
Commit: cee9d4d1b30633689d8dd5fde715aed528e578a1
https://github.com/galaxyproject/galaxy/commit/cee9d4d1b30633689d8dd5fde715…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M static/maps/mvc/workflow/workflow-manager.js.map
M static/maps/mvc/workflow/workflow-node.js.map
M static/maps/mvc/workflow/workflow-view-data.js.map
M static/maps/mvc/workflow/workflow-view.js.map
M static/scripts/mvc/workflow/workflow-manager.js
M static/scripts/mvc/workflow/workflow-node.js
M static/scripts/mvc/workflow/workflow-view-data.js
Log Message:
-----------
Grunt the workflow JS.
Commit: 40e6932a25f71c240e038e4e6dc9be6a19ff8459
https://github.com/galaxyproject/galaxy/commit/40e6932a25f71c240e038e4e6dc9…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M test/api/test_workflows.py
M test/api/workflows_format_2/converter.py
Log Message:
-----------
Fix workflow API tests for workflow output changes.
Commit: e9e73f4828f7926a1a36654ed48325828992bed3
https://github.com/galaxyproject/galaxy/commit/e9e73f4828f7926a1a36654ed483…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/dataset/dataset-choice.js
Log Message:
-----------
Remove dated comment.
Commit: c91a2eb33947a64ed8c03115d1de9ccf746cc195
https://github.com/galaxyproject/galaxy/commit/c91a2eb33947a64ed8c03115d1de…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/form/form-select-content.js
M lib/galaxy/tools/actions/__init__.py
M lib/galaxy/tools/evaluation.py
M lib/galaxy/tools/parameters/basic.py
M lib/galaxy/tools/parameters/wrapped.py
M lib/galaxy/tools/wrappers.py
M static/maps/mvc/dataset/dataset-choice.js.map
M static/maps/mvc/form/form-select-content.js.map
M static/scripts/mvc/form/form-select-content.js
M test/api/test_tools.py
M test/unit/tools/test_data_parameters.py
Log Message:
-----------
Multi data parameter improvements.
Allow multiple collections to be fed to a multi data parameter in one reduction step. Fixes #750 and will really simplify certain classes of tools.
Rebased original with fixes for rerun of such reductions.
Manually tested workflow execution and everything seems fine. The workflow editor already thought this was possible, so that is another bug corrected by this enhancement.
To run the associated API test, execute the following command:
./run_tests.sh -with_framework_test_tools -api test/api/test_tools.py:ToolsTestCase.test_reduce_multiple_lists_on_multi_data
Conflicts:
static/maps/mvc/dataset/dataset-choice.js.map
static/maps/mvc/form/form-select-content.js.map
static/scripts/mvc/form/form-select-content.js
Commit: 62a26516cd7a3a6d1ad6441dc8d63efafa25d8d0
https://github.com/galaxyproject/galaxy/commit/62a26516cd7a3a6d1ad6441dc8d6…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M lib/galaxy/tools/actions/__init__.py
Log Message:
-----------
Fix PR #805 for changes in PR #1153.
Commit: 17851ba0ea9572f1c387ff1fea1012b7af737855
https://github.com/galaxyproject/galaxy/commit/17851ba0ea9572f1c387ff1fea10…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M test/unit/tools/test_actions.py
Log Message:
-----------
And fix unit test for b036adcaa166153e544935c12123877c69a7450f.
Commit: 9f8eb465e718d4b643120e8554d119702c264135
https://github.com/galaxyproject/galaxy/commit/9f8eb465e718d4b643120e8554d1…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-04 (Fri, 04 Dec 2015)
Changed paths:
M .gitignore
A client/galaxy/scripts/apps/analysis.js
A client/galaxy/scripts/apps/history-panel.js
A client/galaxy/scripts/apps/login.js
A client/galaxy/scripts/apps/tool-panel.js
R client/galaxy/scripts/base.js
R client/galaxy/scripts/galaxy-app-base.js
R client/galaxy/scripts/galaxy.autocom_tagging.js
R client/galaxy/scripts/galaxy.base.js
R client/galaxy/scripts/galaxy.frame.js
A client/galaxy/scripts/galaxy.js
M client/galaxy/scripts/galaxy.library.js
R client/galaxy/scripts/galaxy.masthead.js
R client/galaxy/scripts/galaxy.menu.js
M client/galaxy/scripts/galaxy.pages.js
R client/galaxy/scripts/galaxy.panels.js
R client/galaxy/scripts/galaxy.tools.js
R client/galaxy/scripts/galaxy.ui.scrollPanel.js
A client/galaxy/scripts/layout/masthead.js
A client/galaxy/scripts/layout/menu.js
A client/galaxy/scripts/layout/modal.js
A client/galaxy/scripts/layout/page.js
A client/galaxy/scripts/layout/panel.js
A client/galaxy/scripts/layout/scratchbook.js
R client/galaxy/scripts/libs/IE/IE7.js
R client/galaxy/scripts/libs/IE/IE8.js
R client/galaxy/scripts/libs/IE/blank.gif
R client/galaxy/scripts/libs/IE/excanvas.js
R client/galaxy/scripts/libs/IE/ie7-recalc.js
A client/galaxy/scripts/libs/backbone.js
R client/galaxy/scripts/libs/backbone/backbone.js
M client/galaxy/scripts/libs/d3.js
A client/galaxy/scripts/mvc/annotation.js
R client/galaxy/scripts/mvc/annotations.js
R client/galaxy/scripts/mvc/app/app-analysis.js
R client/galaxy/scripts/mvc/app/app-login.js
R client/galaxy/scripts/mvc/app/app-view.js
M client/galaxy/scripts/mvc/base-mvc.js
M client/galaxy/scripts/mvc/citation/citation-model.js
M client/galaxy/scripts/mvc/collection/collection-model.js
R client/galaxy/scripts/mvc/collection/collection-panel-edit.js
R client/galaxy/scripts/mvc/collection/collection-panel.js
A client/galaxy/scripts/mvc/collection/collection-view-edit.js
A client/galaxy/scripts/mvc/collection/collection-view.js
M client/galaxy/scripts/mvc/collection/list-of-pairs-collection-creator.js
R client/galaxy/scripts/mvc/data.js
A client/galaxy/scripts/mvc/dataset/data.js
M client/galaxy/scripts/mvc/dataset/dataset-li-edit.js
M client/galaxy/scripts/mvc/dataset/dataset-list.js
M client/galaxy/scripts/mvc/dataset/dataset-model.js
M client/galaxy/scripts/mvc/form/form-select-content.js
M client/galaxy/scripts/mvc/grid/grid-view.js
M client/galaxy/scripts/mvc/history/hda-model.js
M client/galaxy/scripts/mvc/history/hdca-li-edit.js
M client/galaxy/scripts/mvc/history/hdca-li.js
M client/galaxy/scripts/mvc/history/history-content-model.js
M client/galaxy/scripts/mvc/history/history-contents.js
M client/galaxy/scripts/mvc/history/history-model.js
R client/galaxy/scripts/mvc/history/history-panel-annotated.js
R client/galaxy/scripts/mvc/history/history-panel-edit-current.js
R client/galaxy/scripts/mvc/history/history-panel-edit.js
R client/galaxy/scripts/mvc/history/history-panel.js
A client/galaxy/scripts/mvc/history/history-view-annotated.js
A client/galaxy/scripts/mvc/history/history-view-edit-current.js
A client/galaxy/scripts/mvc/history/history-view-edit.js
A client/galaxy/scripts/mvc/history/history-view.js
M client/galaxy/scripts/mvc/history/multi-panel.js
M client/galaxy/scripts/mvc/history/options-menu.js
M client/galaxy/scripts/mvc/job/job-model.js
M client/galaxy/scripts/mvc/library/library-dataset-view.js
M client/galaxy/scripts/mvc/library/library-folder-view.js
M client/galaxy/scripts/mvc/library/library-folderlist-view.js
M client/galaxy/scripts/mvc/library/library-folderrow-view.js
M client/galaxy/scripts/mvc/library/library-foldertoolbar-view.js
M client/galaxy/scripts/mvc/library/library-library-view.js
M client/galaxy/scripts/mvc/library/library-librarylist-view.js
M client/galaxy/scripts/mvc/library/library-libraryrow-view.js
M client/galaxy/scripts/mvc/library/library-librarytoolbar-view.js
M client/galaxy/scripts/mvc/library/library-model.js
R client/galaxy/scripts/mvc/list/list-panel.js
A client/galaxy/scripts/mvc/list/list-view.js
A client/galaxy/scripts/mvc/tag.js
R client/galaxy/scripts/mvc/tags.js
A client/galaxy/scripts/mvc/tool/tools-form-base.js
A client/galaxy/scripts/mvc/tool/tools-form-workflow.js
A client/galaxy/scripts/mvc/tool/tools-form.js
A client/galaxy/scripts/mvc/tool/tools-jobs.js
A client/galaxy/scripts/mvc/tool/tools-template.js
A client/galaxy/scripts/mvc/tool/tools.js
R client/galaxy/scripts/mvc/tools.js
R client/galaxy/scripts/mvc/tools/tools-form-base.js
R client/galaxy/scripts/mvc/tools/tools-form-workflow.js
R client/galaxy/scripts/mvc/tools/tools-form.js
R client/galaxy/scripts/mvc/tools/tools-jobs.js
R client/galaxy/scripts/mvc/tools/tools-template.js
M client/galaxy/scripts/mvc/ui/ui-select-ftp.js
M client/galaxy/scripts/mvc/ui/ui-select-library.js
M client/galaxy/scripts/mvc/upload/upload-ftp.js
M client/galaxy/scripts/mvc/upload/upload-view.js
M client/galaxy/scripts/mvc/user/user-model.js
M client/galaxy/scripts/mvc/visualization/visualization-model.js
M client/galaxy/scripts/mvc/workflow/workflow-connector.js
M client/galaxy/scripts/mvc/workflow/workflow-manager.js
M client/galaxy/scripts/mvc/workflow/workflow-view-data.js
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M client/galaxy/scripts/nls/ja/locale.js
M client/galaxy/scripts/nls/locale.js
M client/galaxy/scripts/nls/zh/locale.js
A client/galaxy/scripts/onload.js
A client/galaxy/scripts/polyfills.js
R client/galaxy/scripts/rgenetics/checkbox_and_radiobutton.js
R client/galaxy/scripts/rgenetics/helper_functions.js
R client/galaxy/scripts/rgenetics/timer.js
M client/galaxy/scripts/templates/compiled/panel_section.js
M client/galaxy/scripts/templates/compiled/tool_form.js
M client/galaxy/scripts/templates/compiled/tool_link.js
M client/galaxy/scripts/templates/compiled/tool_search.js
R client/galaxy/scripts/tools/rgenetics/checkbox_and_radiobutton.js
R client/galaxy/scripts/tools/rgenetics/helper_functions.js
R client/galaxy/scripts/tools/rgenetics/timer.js
A client/galaxy/scripts/ui/autocom_tagging.js
A client/galaxy/scripts/ui/editable-text.js
A client/galaxy/scripts/ui/popupmenu.js
A client/galaxy/scripts/ui/scroll-panel.js
A client/galaxy/scripts/utils/async-save-text.js
M client/galaxy/scripts/utils/localization.js
M client/galaxy/scripts/utils/query-string-parsing.js
M client/galaxy/scripts/utils/utils.js
M client/galaxy/scripts/viz/circster.js
M client/galaxy/scripts/viz/phyloviz.js
M client/galaxy/scripts/viz/sweepster.js
M client/galaxy/scripts/viz/trackster.js
M client/galaxy/scripts/viz/trackster/tracks.js
M client/galaxy/scripts/viz/trackster/util.js
M client/galaxy/scripts/viz/visualization.js
M client/galaxy/style/less/base.less
M client/grunt-tasks/install-libs.js
M client/grunt-tasks/scripts.js
M client/grunt-tasks/templates.js
M client/package.json
A client/webpack.config.js
M config/galaxy.ini.sample
M lib/galaxy/config.py
M lib/galaxy/managers/configuration.py
M lib/galaxy/managers/users.py
M lib/galaxy/web/base/controller.py
M lib/galaxy/web/framework/webapp.py
M lib/galaxy/webapps/galaxy/buildapp.py
M lib/galaxy/webapps/galaxy/controllers/root.py
A static/incompatible-browser.html
R static/maps/base.js.map
R static/maps/galaxy-app-base.js.map
R static/maps/galaxy.autocom_tagging.js.map
R static/maps/galaxy.base.js.map
R static/maps/galaxy.frame.js.map
A static/maps/galaxy.js.map
M static/maps/galaxy.library.js.map
R static/maps/galaxy.masthead.js.map
R static/maps/galaxy.menu.js.map
M static/maps/galaxy.pages.js.map
R static/maps/galaxy.panels.js.map
R static/maps/galaxy.tools.js.map
R static/maps/galaxy.ui.scrollPanel.js.map
R static/maps/galaxy.workflows.js.map
A static/maps/layout/masthead.js.map
A static/maps/layout/menu.js.map
A static/maps/layout/modal.js.map
A static/maps/layout/page.js.map
A static/maps/layout/panel.js.map
A static/maps/layout/scratchbook.js.map
R static/maps/libs/IE/IE7.js.map
R static/maps/libs/IE/IE8.js.map
R static/maps/libs/IE/excanvas.js.map
R static/maps/libs/IE/ie7-recalc.js.map
A static/maps/libs/backbone.js.map
A static/maps/libs/common-libs.js.map
A static/maps/mvc/annotation.js.map
R static/maps/mvc/annotations.js.map
R static/maps/mvc/app/app-analysis.js.map
R static/maps/mvc/app/app-login.js.map
R static/maps/mvc/app/app-view.js.map
M static/maps/mvc/base-mvc.js.map
M static/maps/mvc/citation/citation-model.js.map
M static/maps/mvc/collection/collection-model.js.map
R static/maps/mvc/collection/collection-panel-edit.js.map
R static/maps/mvc/collection/collection-panel.js.map
A static/maps/mvc/collection/collection-view-edit.js.map
A static/maps/mvc/collection/collection-view.js.map
M static/maps/mvc/collection/list-of-pairs-collection-creator.js.map
R static/maps/mvc/data.js.map
A static/maps/mvc/dataset/data.js.map
M static/maps/mvc/dataset/dataset-li-edit.js.map
M static/maps/mvc/dataset/dataset-list.js.map
M static/maps/mvc/dataset/dataset-model.js.map
M static/maps/mvc/form/form-select-content.js.map
M static/maps/mvc/grid/grid-view.js.map
M static/maps/mvc/history/hdca-li-edit.js.map
M static/maps/mvc/history/hdca-li.js.map
M static/maps/mvc/history/history-content-model.js.map
M static/maps/mvc/history/history-contents.js.map
M static/maps/mvc/history/history-model.js.map
R static/maps/mvc/history/history-panel-annotated.js.map
R static/maps/mvc/history/history-panel-edit-current.js.map
R static/maps/mvc/history/history-panel-edit.js.map
R static/maps/mvc/history/history-panel.js.map
A static/maps/mvc/history/history-view-annotated.js.map
A static/maps/mvc/history/history-view-edit-current.js.map
A static/maps/mvc/history/history-view-edit.js.map
A static/maps/mvc/history/history-view.js.map
M static/maps/mvc/history/multi-panel.js.map
M static/maps/mvc/history/options-menu.js.map
M static/maps/mvc/job/job-model.js.map
M static/maps/mvc/library/library-dataset-view.js.map
M static/maps/mvc/library/library-folder-view.js.map
M static/maps/mvc/library/library-foldertoolbar-view.js.map
M static/maps/mvc/library/library-library-view.js.map
M static/maps/mvc/library/library-librarytoolbar-view.js.map
M static/maps/mvc/library/library-model.js.map
A static/maps/mvc/list/list-view.js.map
A static/maps/mvc/tag.js.map
R static/maps/mvc/tags.js.map
A static/maps/mvc/tool/tools-form-base.js.map
A static/maps/mvc/tool/tools-form-workflow.js.map
A static/maps/mvc/tool/tools-form.js.map
A static/maps/mvc/tool/tools-jobs.js.map
A static/maps/mvc/tool/tools-template.js.map
A static/maps/mvc/tool/tools.js.map
R static/maps/mvc/tools/tools-form-workflow.js.map
R static/maps/mvc/tools/tools-form.js.map
R static/maps/mvc/tools/tools-jobs.js.map
R static/maps/mvc/tools/tools-template.js.map
M static/maps/mvc/ui/ui-select-ftp.js.map
M static/maps/mvc/ui/ui-select-library.js.map
M static/maps/mvc/upload/upload-ftp.js.map
M static/maps/mvc/upload/upload-view.js.map
M static/maps/mvc/user/user-model.js.map
M static/maps/mvc/visualization/visualization-model.js.map
M static/maps/mvc/workflow/workflow-connector.js.map
M static/maps/mvc/workflow/workflow-manager.js.map
M static/maps/mvc/workflow/workflow-view-data.js.map
M static/maps/mvc/workflow/workflow-view.js.map
A static/maps/onload.js.map
A static/maps/polyfills.js.map
R static/maps/rgenetics/checkbox_and_radiobutton.js.map
R static/maps/rgenetics/helper_functions.js.map
R static/maps/rgenetics/timer.js.map
M static/maps/templates/compiled/panel_section.js.map
M static/maps/templates/compiled/tool_form.js.map
M static/maps/templates/compiled/tool_link.js.map
M static/maps/templates/compiled/tool_search.js.map
R static/maps/tools/rgenetics/checkbox_and_radiobutton.js.map
R static/maps/tools/rgenetics/helper_functions.js.map
R static/maps/tools/rgenetics/timer.js.map
A static/maps/ui/autocom_tagging.js.map
A static/maps/ui/editable-text.js.map
A static/maps/ui/popupmenu.js.map
A static/maps/ui/scroll-panel.js.map
A static/maps/utils/async-save-text.js.map
M static/maps/utils/localization.js.map
M static/maps/utils/query-string-parsing.js.map
M static/maps/utils/utils.js.map
M static/maps/viz/circster.js.map
M static/maps/viz/phyloviz.js.map
M static/maps/viz/sweepster.js.map
M static/maps/viz/trackster.js.map
M static/maps/viz/trackster/tracks.js.map
M static/maps/viz/trackster/util.js.map
M static/maps/viz/visualization.js.map
R static/scripts/base.js
A static/scripts/bundled/analysis.bundled.js
A static/scripts/bundled/analysis.bundled.js.map
A static/scripts/bundled/libs.bundled.js
A static/scripts/bundled/libs.bundled.js.map
A static/scripts/bundled/login.bundled.js
A static/scripts/bundled/login.bundled.js.map
R static/scripts/galaxy-app-base.js
R static/scripts/galaxy.autocom_tagging.js
R static/scripts/galaxy.base.js
R static/scripts/galaxy.frame.js
A static/scripts/galaxy.js
M static/scripts/galaxy.library.js
R static/scripts/galaxy.masthead.js
R static/scripts/galaxy.menu.js
M static/scripts/galaxy.pages.js
R static/scripts/galaxy.panels.js
R static/scripts/galaxy.tools.js
R static/scripts/galaxy.ui.scrollPanel.js
R static/scripts/galaxy.workflows.js
A static/scripts/layout/masthead.js
A static/scripts/layout/menu.js
A static/scripts/layout/modal.js
A static/scripts/layout/page.js
A static/scripts/layout/panel.js
A static/scripts/layout/scratchbook.js
R static/scripts/libs/IE/IE7.js
R static/scripts/libs/IE/IE8.js
R static/scripts/libs/IE/blank.gif
R static/scripts/libs/IE/excanvas.js
R static/scripts/libs/IE/ie7-recalc.js
A static/scripts/libs/backbone.js
A static/scripts/libs/common-libs.js
A static/scripts/mvc/annotation.js
R static/scripts/mvc/annotations.js
R static/scripts/mvc/app/app-analysis.js
R static/scripts/mvc/app/app-login.js
R static/scripts/mvc/app/app-view.js
M static/scripts/mvc/base-mvc.js
M static/scripts/mvc/citation/citation-model.js
M static/scripts/mvc/collection/collection-model.js
R static/scripts/mvc/collection/collection-panel-edit.js
R static/scripts/mvc/collection/collection-panel.js
A static/scripts/mvc/collection/collection-view-edit.js
A static/scripts/mvc/collection/collection-view.js
M static/scripts/mvc/collection/list-of-pairs-collection-creator.js
R static/scripts/mvc/data.js
A static/scripts/mvc/dataset/data.js
M static/scripts/mvc/dataset/dataset-li-edit.js
M static/scripts/mvc/dataset/dataset-list.js
M static/scripts/mvc/dataset/dataset-model.js
M static/scripts/mvc/form/form-select-content.js
M static/scripts/mvc/history/hdca-li-edit.js
M static/scripts/mvc/history/hdca-li.js
M static/scripts/mvc/history/history-content-model.js
M static/scripts/mvc/history/history-contents.js
M static/scripts/mvc/history/history-model.js
R static/scripts/mvc/history/history-panel-annotated.js
R static/scripts/mvc/history/history-panel-edit-current.js
R static/scripts/mvc/history/history-panel-edit.js
A static/scripts/mvc/history/history-view-annotated.js
A static/scripts/mvc/history/history-view-edit-current.js
A static/scripts/mvc/history/history-view-edit.js
A static/scripts/mvc/history/history-view.js
M static/scripts/mvc/history/multi-panel.js
M static/scripts/mvc/history/options-menu.js
M static/scripts/mvc/job/job-model.js
M static/scripts/mvc/library/library-dataset-view.js
M static/scripts/mvc/library/library-folder-view.js
M static/scripts/mvc/library/library-folderlist-view.js
M static/scripts/mvc/library/library-folderrow-view.js
M static/scripts/mvc/library/library-foldertoolbar-view.js
M static/scripts/mvc/library/library-library-view.js
M static/scripts/mvc/library/library-librarylist-view.js
M static/scripts/mvc/library/library-libraryrow-view.js
M static/scripts/mvc/library/library-librarytoolbar-view.js
M static/scripts/mvc/library/library-model.js
R static/scripts/mvc/list/list-panel.js
A static/scripts/mvc/list/list-view.js
A static/scripts/mvc/tag.js
R static/scripts/mvc/tags.js
A static/scripts/mvc/tool/tools-form-base.js
A static/scripts/mvc/tool/tools-form-workflow.js
A static/scripts/mvc/tool/tools-form.js
A static/scripts/mvc/tool/tools-jobs.js
A static/scripts/mvc/tool/tools-template.js
A static/scripts/mvc/tool/tools.js
R static/scripts/mvc/tools/tools-form-workflow.js
R static/scripts/mvc/tools/tools-form.js
R static/scripts/mvc/tools/tools-jobs.js
R static/scripts/mvc/tools/tools-template.js
M static/scripts/mvc/ui/ui-select-ftp.js
M static/scripts/mvc/ui/ui-select-library.js
M static/scripts/mvc/upload/upload-ftp.js
M static/scripts/mvc/upload/upload-view.js
M static/scripts/mvc/user/user-model.js
M static/scripts/mvc/visualization/visualization-model.js
M static/scripts/mvc/workflow/workflow-connector.js
M static/scripts/mvc/workflow/workflow-manager.js
M static/scripts/mvc/workflow/workflow-view-data.js
M static/scripts/mvc/workflow/workflow-view.js
A static/scripts/onload.js
A static/scripts/polyfills.js
R static/scripts/rgenetics/checkbox_and_radiobutton.js
R static/scripts/rgenetics/helper_functions.js
R static/scripts/rgenetics/timer.js
M static/scripts/templates/compiled/panel_section.js
M static/scripts/templates/compiled/tool_form.js
M static/scripts/templates/compiled/tool_link.js
M static/scripts/templates/compiled/tool_search.js
R static/scripts/tools/rgenetics/checkbox_and_radiobutton.js
R static/scripts/tools/rgenetics/helper_functions.js
R static/scripts/tools/rgenetics/timer.js
A static/scripts/ui/autocom_tagging.js
A static/scripts/ui/editable-text.js
A static/scripts/ui/popupmenu.js
A static/scripts/ui/scroll-panel.js
A static/scripts/utils/async-save-text.js
M static/scripts/utils/localization.js
M static/scripts/utils/query-string-parsing.js
M static/scripts/utils/utils.js
M static/scripts/viz/circster.js
M static/scripts/viz/phyloviz.js
M static/scripts/viz/sweepster.js
M static/scripts/viz/trackster.js
M static/scripts/viz/trackster/tracks.js
M static/scripts/viz/trackster/util.js
M static/scripts/viz/visualization.js
M static/style/blue/base.css
R static/style/blue/galaxy.frame.masthead.css
M templates/base.mako
M templates/base/base_panels.mako
M templates/display_base.mako
M templates/galaxy_client_app.mako
M templates/grid_base.mako
A templates/js-app.mako
M templates/refresh_frames.mako
M templates/tagging_common.mako
M templates/user/logout.mako
M templates/webapps/galaxy/dataset/display.mako
M templates/webapps/galaxy/dataset/edit_attributes.mako
M templates/webapps/galaxy/dataset/tabular_chunked.mako
M templates/webapps/galaxy/galaxy.masthead.mako
M templates/webapps/galaxy/galaxy.panels.mako
M templates/webapps/galaxy/history/display.mako
M templates/webapps/galaxy/history/embed.mako
M templates/webapps/galaxy/history/view.mako
M templates/webapps/galaxy/history/view_multiple.mako
M templates/webapps/galaxy/library/common/ldda_edit_info.mako
M templates/webapps/galaxy/library/common/move_library_item.mako
M templates/webapps/galaxy/library/common/upload.mako
M templates/webapps/galaxy/page/editor.mako
M templates/webapps/galaxy/requests/common/create_request.mako
M templates/webapps/galaxy/requests/common/find_samples.mako
R templates/webapps/galaxy/root/index.mako
M templates/webapps/galaxy/visualization/display.mako
M templates/webapps/galaxy/visualization/display_in_frame.mako
M templates/webapps/galaxy/visualization/sweepster.mako
M templates/webapps/galaxy/workflow/editor.mako
M templates/webapps/galaxy/workflow/run.mako
M test/casperjs/api-history-permission-tests.js
M test/casperjs/spaceghost.js
M test/qunit/test-app.js
M test/qunit/test-common.js
M test/qunit/test-data/bootstrapped.js
M test/qunit/tests/galaxy-app-base.js
M test/qunit/tests/workflow_editor_tests.js
Log Message:
-----------
Merge pull request #1144 from carlfeberhard/webpack
Webpack
Commit: f7a2acdcabdfb0d2368e00c4959712bf7d5c98f2
https://github.com/galaxyproject/galaxy/commit/f7a2acdcabdfb0d2368e00c49597…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-05 (Sat, 05 Dec 2015)
Changed paths:
M test/qunit/test-common.js
Log Message:
-----------
Merge pull request #1246 from jmchilton/test-commons
Fix up merge issue with double underscore shim.
Commit: b0c1cd7460f13075c565750298f9d4c3cb89bb80
https://github.com/galaxyproject/galaxy/commit/b0c1cd7460f13075c565750298f9…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-05 (Sat, 05 Dec 2015)
Changed paths:
M test/base/twilltestcase.py
Log Message:
-----------
Merge pull request #1243 from jmchilton/maxseconds_debug
Improved logging related tool test timeouts.
Commit: d0a011675323ba7e8deba588ae0ae6ed9c23f0fe
https://github.com/galaxyproject/galaxy/commit/d0a011675323ba7e8deba588ae0a…
Author: mvdbeek <m.vandenbeek(a)gmail.com>
Date: 2015-12-05 (Sat, 05 Dec 2015)
Changed paths:
M lib/galaxy/tools/toolbox/base.py
Log Message:
-----------
Enable lookup of tools from other tool sheds.
Commit: c040a18b4b164e58a45d1c4f6da65f1eacf18ed5
https://github.com/galaxyproject/galaxy/commit/c040a18b4b164e58a45d1c4f6da6…
Author: mvdbeek <m.vandenbeek(a)gmail.com>
Date: 2015-12-05 (Sat, 05 Dec 2015)
Changed paths:
M lib/galaxy/tools/toolbox/base.py
Log Message:
-----------
Modify get_tool() directly instead of using decorator.
Commit: 2d168a2c07798ab736676a1eb865ae6976b48464
https://github.com/galaxyproject/galaxy/commit/2d168a2c07798ab736676a1eb865…
Author: mvdbeek <m.vandenbeek(a)gmail.com>
Date: 2015-12-05 (Sat, 05 Dec 2015)
Changed paths:
M lib/galaxy/tools/toolbox/base.py
Log Message:
-----------
Remove whitespaces in blank line.
Commit: 1be4f85404c75be364cb20b3c460ea3f51c4dae2
https://github.com/galaxyproject/galaxy/commit/1be4f85404c75be364cb20b3c460…
Author: Marius van den Beek <m.vandenbeek(a)gmail.com>
Date: 2015-12-05 (Sat, 05 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/tools/tools-form-base.js
M lib/galaxy/managers/workflows.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/workflow/modules.py
M static/maps/mvc/tools/tools-form-base.js.map
M static/scripts/mvc/tools/tools-form-base.js
Log Message:
-----------
Add messages inform users of changes in the tool_id.
Commit: 4f1359a0a6d703c8a40b6bb015e89d991d97570e
https://github.com/galaxyproject/galaxy/commit/4f1359a0a6d703c8a40b6bb015e8…
Author: Marius van den Beek <m.vandenbeek(a)gmail.com>
Date: 2015-12-05 (Sat, 05 Dec 2015)
Changed paths:
M .gitignore
A client/galaxy/scripts/apps/analysis.js
A client/galaxy/scripts/apps/history-panel.js
A client/galaxy/scripts/apps/login.js
A client/galaxy/scripts/apps/tool-panel.js
R client/galaxy/scripts/base.js
R client/galaxy/scripts/galaxy-app-base.js
R client/galaxy/scripts/galaxy.autocom_tagging.js
R client/galaxy/scripts/galaxy.base.js
R client/galaxy/scripts/galaxy.frame.js
A client/galaxy/scripts/galaxy.js
M client/galaxy/scripts/galaxy.library.js
R client/galaxy/scripts/galaxy.masthead.js
R client/galaxy/scripts/galaxy.menu.js
M client/galaxy/scripts/galaxy.pages.js
R client/galaxy/scripts/galaxy.panels.js
R client/galaxy/scripts/galaxy.tools.js
R client/galaxy/scripts/galaxy.ui.scrollPanel.js
A client/galaxy/scripts/layout/masthead.js
A client/galaxy/scripts/layout/menu.js
A client/galaxy/scripts/layout/modal.js
A client/galaxy/scripts/layout/page.js
A client/galaxy/scripts/layout/panel.js
A client/galaxy/scripts/layout/scratchbook.js
R client/galaxy/scripts/libs/IE/IE7.js
R client/galaxy/scripts/libs/IE/IE8.js
R client/galaxy/scripts/libs/IE/blank.gif
R client/galaxy/scripts/libs/IE/excanvas.js
R client/galaxy/scripts/libs/IE/ie7-recalc.js
A client/galaxy/scripts/libs/backbone.js
R client/galaxy/scripts/libs/backbone/backbone.js
M client/galaxy/scripts/libs/d3.js
A client/galaxy/scripts/mvc/annotation.js
R client/galaxy/scripts/mvc/annotations.js
R client/galaxy/scripts/mvc/app/app-analysis.js
R client/galaxy/scripts/mvc/app/app-login.js
R client/galaxy/scripts/mvc/app/app-view.js
M client/galaxy/scripts/mvc/base-mvc.js
M client/galaxy/scripts/mvc/citation/citation-model.js
M client/galaxy/scripts/mvc/collection/collection-model.js
R client/galaxy/scripts/mvc/collection/collection-panel-edit.js
R client/galaxy/scripts/mvc/collection/collection-panel.js
A client/galaxy/scripts/mvc/collection/collection-view-edit.js
A client/galaxy/scripts/mvc/collection/collection-view.js
M client/galaxy/scripts/mvc/collection/list-of-pairs-collection-creator.js
R client/galaxy/scripts/mvc/data.js
A client/galaxy/scripts/mvc/dataset/data.js
M client/galaxy/scripts/mvc/dataset/dataset-li-edit.js
M client/galaxy/scripts/mvc/dataset/dataset-list.js
M client/galaxy/scripts/mvc/dataset/dataset-model.js
M client/galaxy/scripts/mvc/form/form-select-content.js
M client/galaxy/scripts/mvc/grid/grid-view.js
M client/galaxy/scripts/mvc/history/hda-model.js
M client/galaxy/scripts/mvc/history/hdca-li-edit.js
M client/galaxy/scripts/mvc/history/hdca-li.js
M client/galaxy/scripts/mvc/history/history-content-model.js
M client/galaxy/scripts/mvc/history/history-contents.js
M client/galaxy/scripts/mvc/history/history-model.js
R client/galaxy/scripts/mvc/history/history-panel-annotated.js
R client/galaxy/scripts/mvc/history/history-panel-edit-current.js
R client/galaxy/scripts/mvc/history/history-panel-edit.js
R client/galaxy/scripts/mvc/history/history-panel.js
A client/galaxy/scripts/mvc/history/history-view-annotated.js
A client/galaxy/scripts/mvc/history/history-view-edit-current.js
A client/galaxy/scripts/mvc/history/history-view-edit.js
A client/galaxy/scripts/mvc/history/history-view.js
M client/galaxy/scripts/mvc/history/multi-panel.js
M client/galaxy/scripts/mvc/history/options-menu.js
M client/galaxy/scripts/mvc/job/job-model.js
M client/galaxy/scripts/mvc/library/library-dataset-view.js
M client/galaxy/scripts/mvc/library/library-folder-view.js
M client/galaxy/scripts/mvc/library/library-folderlist-view.js
M client/galaxy/scripts/mvc/library/library-folderrow-view.js
M client/galaxy/scripts/mvc/library/library-foldertoolbar-view.js
M client/galaxy/scripts/mvc/library/library-library-view.js
M client/galaxy/scripts/mvc/library/library-librarylist-view.js
M client/galaxy/scripts/mvc/library/library-libraryrow-view.js
M client/galaxy/scripts/mvc/library/library-librarytoolbar-view.js
M client/galaxy/scripts/mvc/library/library-model.js
R client/galaxy/scripts/mvc/list/list-panel.js
A client/galaxy/scripts/mvc/list/list-view.js
A client/galaxy/scripts/mvc/tag.js
R client/galaxy/scripts/mvc/tags.js
A client/galaxy/scripts/mvc/tool/tools-form-base.js
A client/galaxy/scripts/mvc/tool/tools-form-workflow.js
A client/galaxy/scripts/mvc/tool/tools-form.js
A client/galaxy/scripts/mvc/tool/tools-jobs.js
A client/galaxy/scripts/mvc/tool/tools-template.js
A client/galaxy/scripts/mvc/tool/tools.js
R client/galaxy/scripts/mvc/tools.js
R client/galaxy/scripts/mvc/tools/tools-form-base.js
R client/galaxy/scripts/mvc/tools/tools-form-workflow.js
R client/galaxy/scripts/mvc/tools/tools-form.js
R client/galaxy/scripts/mvc/tools/tools-jobs.js
R client/galaxy/scripts/mvc/tools/tools-template.js
M client/galaxy/scripts/mvc/ui/ui-select-ftp.js
M client/galaxy/scripts/mvc/ui/ui-select-library.js
M client/galaxy/scripts/mvc/upload/upload-ftp.js
M client/galaxy/scripts/mvc/upload/upload-view.js
M client/galaxy/scripts/mvc/user/user-model.js
M client/galaxy/scripts/mvc/visualization/visualization-model.js
M client/galaxy/scripts/mvc/workflow/workflow-connector.js
M client/galaxy/scripts/mvc/workflow/workflow-manager.js
M client/galaxy/scripts/mvc/workflow/workflow-view-data.js
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M client/galaxy/scripts/nls/ja/locale.js
M client/galaxy/scripts/nls/locale.js
M client/galaxy/scripts/nls/zh/locale.js
A client/galaxy/scripts/onload.js
A client/galaxy/scripts/polyfills.js
R client/galaxy/scripts/rgenetics/checkbox_and_radiobutton.js
R client/galaxy/scripts/rgenetics/helper_functions.js
R client/galaxy/scripts/rgenetics/timer.js
M client/galaxy/scripts/templates/compiled/panel_section.js
M client/galaxy/scripts/templates/compiled/tool_form.js
M client/galaxy/scripts/templates/compiled/tool_link.js
M client/galaxy/scripts/templates/compiled/tool_search.js
R client/galaxy/scripts/tools/rgenetics/checkbox_and_radiobutton.js
R client/galaxy/scripts/tools/rgenetics/helper_functions.js
R client/galaxy/scripts/tools/rgenetics/timer.js
A client/galaxy/scripts/ui/autocom_tagging.js
A client/galaxy/scripts/ui/editable-text.js
A client/galaxy/scripts/ui/popupmenu.js
A client/galaxy/scripts/ui/scroll-panel.js
A client/galaxy/scripts/utils/async-save-text.js
M client/galaxy/scripts/utils/localization.js
M client/galaxy/scripts/utils/query-string-parsing.js
M client/galaxy/scripts/utils/utils.js
M client/galaxy/scripts/viz/circster.js
M client/galaxy/scripts/viz/phyloviz.js
M client/galaxy/scripts/viz/sweepster.js
M client/galaxy/scripts/viz/trackster.js
M client/galaxy/scripts/viz/trackster/tracks.js
M client/galaxy/scripts/viz/trackster/util.js
M client/galaxy/scripts/viz/visualization.js
M client/galaxy/style/less/base.less
M client/grunt-tasks/install-libs.js
M client/grunt-tasks/scripts.js
M client/grunt-tasks/templates.js
M client/package.json
A client/webpack.config.js
A config/dependency_resolvers_conf.xml.sample
M config/galaxy.ini.sample
M lib/galaxy/config.py
M lib/galaxy/datatypes/interval.py
M lib/galaxy/jobs/runners/pulsar.py
M lib/galaxy/managers/configuration.py
M lib/galaxy/managers/users.py
M lib/galaxy/model/__init__.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/deps/resolvers/modules.py
M lib/galaxy/tools/deps/resolvers/unlinked_tool_shed_packages.py
M lib/galaxy/web/base/controller.py
M lib/galaxy/web/framework/webapp.py
M lib/galaxy/webapps/galaxy/buildapp.py
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/galaxy/controllers/root.py
M lib/tool_shed/galaxy_install/migrate/check.py
M run_tests.sh
A static/incompatible-browser.html
R static/maps/base.js.map
R static/maps/galaxy-app-base.js.map
R static/maps/galaxy.autocom_tagging.js.map
R static/maps/galaxy.base.js.map
R static/maps/galaxy.frame.js.map
A static/maps/galaxy.js.map
M static/maps/galaxy.library.js.map
R static/maps/galaxy.masthead.js.map
R static/maps/galaxy.menu.js.map
M static/maps/galaxy.pages.js.map
R static/maps/galaxy.panels.js.map
R static/maps/galaxy.tools.js.map
R static/maps/galaxy.ui.scrollPanel.js.map
R static/maps/galaxy.workflows.js.map
A static/maps/layout/masthead.js.map
A static/maps/layout/menu.js.map
A static/maps/layout/modal.js.map
A static/maps/layout/page.js.map
A static/maps/layout/panel.js.map
A static/maps/layout/scratchbook.js.map
R static/maps/libs/IE/IE7.js.map
R static/maps/libs/IE/IE8.js.map
R static/maps/libs/IE/excanvas.js.map
R static/maps/libs/IE/ie7-recalc.js.map
A static/maps/libs/backbone.js.map
A static/maps/libs/common-libs.js.map
A static/maps/mvc/annotation.js.map
R static/maps/mvc/annotations.js.map
R static/maps/mvc/app/app-analysis.js.map
R static/maps/mvc/app/app-login.js.map
R static/maps/mvc/app/app-view.js.map
M static/maps/mvc/base-mvc.js.map
M static/maps/mvc/citation/citation-model.js.map
M static/maps/mvc/collection/collection-model.js.map
R static/maps/mvc/collection/collection-panel-edit.js.map
R static/maps/mvc/collection/collection-panel.js.map
A static/maps/mvc/collection/collection-view-edit.js.map
A static/maps/mvc/collection/collection-view.js.map
M static/maps/mvc/collection/list-of-pairs-collection-creator.js.map
R static/maps/mvc/data.js.map
A static/maps/mvc/dataset/data.js.map
M static/maps/mvc/dataset/dataset-li-edit.js.map
M static/maps/mvc/dataset/dataset-list.js.map
M static/maps/mvc/dataset/dataset-model.js.map
M static/maps/mvc/form/form-select-content.js.map
M static/maps/mvc/grid/grid-view.js.map
M static/maps/mvc/history/hdca-li-edit.js.map
M static/maps/mvc/history/hdca-li.js.map
M static/maps/mvc/history/history-content-model.js.map
M static/maps/mvc/history/history-contents.js.map
M static/maps/mvc/history/history-model.js.map
R static/maps/mvc/history/history-panel-annotated.js.map
R static/maps/mvc/history/history-panel-edit-current.js.map
R static/maps/mvc/history/history-panel-edit.js.map
R static/maps/mvc/history/history-panel.js.map
A static/maps/mvc/history/history-view-annotated.js.map
A static/maps/mvc/history/history-view-edit-current.js.map
A static/maps/mvc/history/history-view-edit.js.map
A static/maps/mvc/history/history-view.js.map
M static/maps/mvc/history/multi-panel.js.map
M static/maps/mvc/history/options-menu.js.map
M static/maps/mvc/job/job-model.js.map
M static/maps/mvc/library/library-dataset-view.js.map
M static/maps/mvc/library/library-folder-view.js.map
M static/maps/mvc/library/library-foldertoolbar-view.js.map
M static/maps/mvc/library/library-library-view.js.map
M static/maps/mvc/library/library-librarytoolbar-view.js.map
M static/maps/mvc/library/library-model.js.map
A static/maps/mvc/list/list-view.js.map
A static/maps/mvc/tag.js.map
R static/maps/mvc/tags.js.map
A static/maps/mvc/tool/tools-form-base.js.map
A static/maps/mvc/tool/tools-form-workflow.js.map
A static/maps/mvc/tool/tools-form.js.map
A static/maps/mvc/tool/tools-jobs.js.map
A static/maps/mvc/tool/tools-template.js.map
A static/maps/mvc/tool/tools.js.map
R static/maps/mvc/tools/tools-form-workflow.js.map
R static/maps/mvc/tools/tools-form.js.map
R static/maps/mvc/tools/tools-jobs.js.map
R static/maps/mvc/tools/tools-template.js.map
M static/maps/mvc/ui/ui-select-ftp.js.map
M static/maps/mvc/ui/ui-select-library.js.map
M static/maps/mvc/upload/upload-ftp.js.map
M static/maps/mvc/upload/upload-view.js.map
M static/maps/mvc/user/user-model.js.map
M static/maps/mvc/visualization/visualization-model.js.map
M static/maps/mvc/workflow/workflow-connector.js.map
M static/maps/mvc/workflow/workflow-manager.js.map
M static/maps/mvc/workflow/workflow-view-data.js.map
M static/maps/mvc/workflow/workflow-view.js.map
A static/maps/onload.js.map
A static/maps/polyfills.js.map
R static/maps/rgenetics/checkbox_and_radiobutton.js.map
R static/maps/rgenetics/helper_functions.js.map
R static/maps/rgenetics/timer.js.map
M static/maps/templates/compiled/panel_section.js.map
M static/maps/templates/compiled/tool_form.js.map
M static/maps/templates/compiled/tool_link.js.map
M static/maps/templates/compiled/tool_search.js.map
R static/maps/tools/rgenetics/checkbox_and_radiobutton.js.map
R static/maps/tools/rgenetics/helper_functions.js.map
R static/maps/tools/rgenetics/timer.js.map
A static/maps/ui/autocom_tagging.js.map
A static/maps/ui/editable-text.js.map
A static/maps/ui/popupmenu.js.map
A static/maps/ui/scroll-panel.js.map
A static/maps/utils/async-save-text.js.map
M static/maps/utils/localization.js.map
M static/maps/utils/query-string-parsing.js.map
M static/maps/utils/utils.js.map
M static/maps/viz/circster.js.map
M static/maps/viz/phyloviz.js.map
M static/maps/viz/sweepster.js.map
M static/maps/viz/trackster.js.map
M static/maps/viz/trackster/tracks.js.map
M static/maps/viz/trackster/util.js.map
M static/maps/viz/visualization.js.map
R static/scripts/base.js
A static/scripts/bundled/analysis.bundled.js
A static/scripts/bundled/analysis.bundled.js.map
A static/scripts/bundled/libs.bundled.js
A static/scripts/bundled/libs.bundled.js.map
A static/scripts/bundled/login.bundled.js
A static/scripts/bundled/login.bundled.js.map
R static/scripts/galaxy-app-base.js
R static/scripts/galaxy.autocom_tagging.js
R static/scripts/galaxy.base.js
R static/scripts/galaxy.frame.js
A static/scripts/galaxy.js
M static/scripts/galaxy.library.js
R static/scripts/galaxy.masthead.js
R static/scripts/galaxy.menu.js
M static/scripts/galaxy.pages.js
R static/scripts/galaxy.panels.js
R static/scripts/galaxy.tools.js
R static/scripts/galaxy.ui.scrollPanel.js
R static/scripts/galaxy.workflows.js
A static/scripts/layout/masthead.js
A static/scripts/layout/menu.js
A static/scripts/layout/modal.js
A static/scripts/layout/page.js
A static/scripts/layout/panel.js
A static/scripts/layout/scratchbook.js
R static/scripts/libs/IE/IE7.js
R static/scripts/libs/IE/IE8.js
R static/scripts/libs/IE/blank.gif
R static/scripts/libs/IE/excanvas.js
R static/scripts/libs/IE/ie7-recalc.js
A static/scripts/libs/backbone.js
A static/scripts/libs/common-libs.js
A static/scripts/mvc/annotation.js
R static/scripts/mvc/annotations.js
R static/scripts/mvc/app/app-analysis.js
R static/scripts/mvc/app/app-login.js
R static/scripts/mvc/app/app-view.js
M static/scripts/mvc/base-mvc.js
M static/scripts/mvc/citation/citation-model.js
M static/scripts/mvc/collection/collection-model.js
R static/scripts/mvc/collection/collection-panel-edit.js
R static/scripts/mvc/collection/collection-panel.js
A static/scripts/mvc/collection/collection-view-edit.js
A static/scripts/mvc/collection/collection-view.js
M static/scripts/mvc/collection/list-of-pairs-collection-creator.js
R static/scripts/mvc/data.js
A static/scripts/mvc/dataset/data.js
M static/scripts/mvc/dataset/dataset-li-edit.js
M static/scripts/mvc/dataset/dataset-list.js
M static/scripts/mvc/dataset/dataset-model.js
M static/scripts/mvc/form/form-select-content.js
M static/scripts/mvc/history/hdca-li-edit.js
M static/scripts/mvc/history/hdca-li.js
M static/scripts/mvc/history/history-content-model.js
M static/scripts/mvc/history/history-contents.js
M static/scripts/mvc/history/history-model.js
R static/scripts/mvc/history/history-panel-annotated.js
R static/scripts/mvc/history/history-panel-edit-current.js
R static/scripts/mvc/history/history-panel-edit.js
A static/scripts/mvc/history/history-view-annotated.js
A static/scripts/mvc/history/history-view-edit-current.js
A static/scripts/mvc/history/history-view-edit.js
A static/scripts/mvc/history/history-view.js
M static/scripts/mvc/history/multi-panel.js
M static/scripts/mvc/history/options-menu.js
M static/scripts/mvc/job/job-model.js
M static/scripts/mvc/library/library-dataset-view.js
M static/scripts/mvc/library/library-folder-view.js
M static/scripts/mvc/library/library-folderlist-view.js
M static/scripts/mvc/library/library-folderrow-view.js
M static/scripts/mvc/library/library-foldertoolbar-view.js
M static/scripts/mvc/library/library-library-view.js
M static/scripts/mvc/library/library-librarylist-view.js
M static/scripts/mvc/library/library-libraryrow-view.js
M static/scripts/mvc/library/library-librarytoolbar-view.js
M static/scripts/mvc/library/library-model.js
R static/scripts/mvc/list/list-panel.js
A static/scripts/mvc/list/list-view.js
A static/scripts/mvc/tag.js
R static/scripts/mvc/tags.js
A static/scripts/mvc/tool/tools-form-base.js
A static/scripts/mvc/tool/tools-form-workflow.js
A static/scripts/mvc/tool/tools-form.js
A static/scripts/mvc/tool/tools-jobs.js
A static/scripts/mvc/tool/tools-template.js
A static/scripts/mvc/tool/tools.js
R static/scripts/mvc/tools/tools-form-workflow.js
R static/scripts/mvc/tools/tools-form.js
R static/scripts/mvc/tools/tools-jobs.js
R static/scripts/mvc/tools/tools-template.js
M static/scripts/mvc/ui/ui-select-ftp.js
M static/scripts/mvc/ui/ui-select-library.js
M static/scripts/mvc/upload/upload-ftp.js
M static/scripts/mvc/upload/upload-view.js
M static/scripts/mvc/user/user-model.js
M static/scripts/mvc/visualization/visualization-model.js
M static/scripts/mvc/workflow/workflow-connector.js
M static/scripts/mvc/workflow/workflow-manager.js
M static/scripts/mvc/workflow/workflow-view-data.js
M static/scripts/mvc/workflow/workflow-view.js
A static/scripts/onload.js
A static/scripts/polyfills.js
R static/scripts/rgenetics/checkbox_and_radiobutton.js
R static/scripts/rgenetics/helper_functions.js
R static/scripts/rgenetics/timer.js
M static/scripts/templates/compiled/panel_section.js
M static/scripts/templates/compiled/tool_form.js
M static/scripts/templates/compiled/tool_link.js
M static/scripts/templates/compiled/tool_search.js
R static/scripts/tools/rgenetics/checkbox_and_radiobutton.js
R static/scripts/tools/rgenetics/helper_functions.js
R static/scripts/tools/rgenetics/timer.js
A static/scripts/ui/autocom_tagging.js
A static/scripts/ui/editable-text.js
A static/scripts/ui/popupmenu.js
A static/scripts/ui/scroll-panel.js
A static/scripts/utils/async-save-text.js
M static/scripts/utils/localization.js
M static/scripts/utils/query-string-parsing.js
M static/scripts/utils/utils.js
M static/scripts/viz/circster.js
M static/scripts/viz/phyloviz.js
M static/scripts/viz/sweepster.js
M static/scripts/viz/trackster.js
M static/scripts/viz/trackster/tracks.js
M static/scripts/viz/trackster/util.js
M static/scripts/viz/visualization.js
M static/style/blue/base.css
R static/style/blue/galaxy.frame.masthead.css
M templates/base.mako
M templates/base/base_panels.mako
M templates/display_base.mako
M templates/galaxy_client_app.mako
M templates/grid_base.mako
A templates/js-app.mako
M templates/refresh_frames.mako
M templates/tagging_common.mako
M templates/user/logout.mako
M templates/webapps/galaxy/dataset/display.mako
M templates/webapps/galaxy/dataset/edit_attributes.mako
M templates/webapps/galaxy/dataset/tabular_chunked.mako
M templates/webapps/galaxy/galaxy.masthead.mako
M templates/webapps/galaxy/galaxy.panels.mako
M templates/webapps/galaxy/history/display.mako
M templates/webapps/galaxy/history/embed.mako
M templates/webapps/galaxy/history/view.mako
M templates/webapps/galaxy/history/view_multiple.mako
M templates/webapps/galaxy/library/common/ldda_edit_info.mako
M templates/webapps/galaxy/library/common/move_library_item.mako
M templates/webapps/galaxy/library/common/upload.mako
M templates/webapps/galaxy/page/editor.mako
M templates/webapps/galaxy/requests/common/create_request.mako
M templates/webapps/galaxy/requests/common/find_samples.mako
R templates/webapps/galaxy/root/index.mako
M templates/webapps/galaxy/visualization/display.mako
M templates/webapps/galaxy/visualization/display_in_frame.mako
M templates/webapps/galaxy/visualization/sweepster.mako
M templates/webapps/galaxy/workflow/editor.mako
M templates/webapps/galaxy/workflow/run.mako
M test/api/helpers.py
M test/api/test_jobs.py
M test/base/twilltestcase.py
M test/casperjs/api-history-permission-tests.js
M test/casperjs/spaceghost.js
M test/qunit/test-app.js
M test/qunit/test-common.js
M test/qunit/test-data/bootstrapped.js
M test/qunit/tests/galaxy-app-base.js
M test/qunit/tests/workflow_editor_tests.js
M test/tool_shed/test_data/1440_files/complex_dependency/tool_dependencies.xml
Log Message:
-----------
Merge branch 'dev' of github.com:galaxyproject/galaxy into cross_toolshed_tool_fetching
Commit: 77f034019b93bdd539a495a89318bcb1e51b3993
https://github.com/galaxyproject/galaxy/commit/77f034019b93bdd539a495a89318…
Author: Marius van den Beek <m.vandenbeek(a)gmail.com>
Date: 2015-12-05 (Sat, 05 Dec 2015)
Changed paths:
M lib/galaxy/managers/workflows.py
Log Message:
-----------
Fix failing api test
Commit: 1fdde2cb4d3d685916dc82a8fc846079a8066cd5
https://github.com/galaxyproject/galaxy/commit/1fdde2cb4d3d685916dc82a8fc84…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-05 (Sat, 05 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M static/maps/mvc/workflow/workflow-view.js.map
M static/scripts/mvc/workflow/workflow-view.js
Log Message:
-----------
Refactor generic side workflow editor panel toward backbone.
Commit: cae457d8c18ded2abf03a0a6c3fb027735e1b5ef
https://github.com/galaxyproject/galaxy/commit/cae457d8c18ded2abf03a0a6c3fb…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-05 (Sat, 05 Dec 2015)
Changed paths:
M test/functional/tools/maxseconds.xml
Log Message:
-----------
Fail maxseconds test tool if sleep is interrupted.
Commit: d7f5dbe4ca1bc0943e3d3edbddd88d1c226ff5e5
https://github.com/galaxyproject/galaxy/commit/d7f5dbe4ca1bc0943e3d3edbddd8…
Author: Björn Grüning <bjoern(a)gruenings.eu>
Date: 2015-12-05 (Sat, 05 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/dataset/dataset-choice.js
M client/galaxy/scripts/mvc/form/form-select-content.js
M lib/galaxy/tools/actions/__init__.py
M lib/galaxy/tools/evaluation.py
M lib/galaxy/tools/parameters/basic.py
M lib/galaxy/tools/parameters/wrapped.py
M lib/galaxy/tools/wrappers.py
M static/maps/mvc/dataset/dataset-choice.js.map
M static/maps/mvc/form/form-select-content.js.map
M static/scripts/mvc/form/form-select-content.js
M test/api/test_tools.py
M test/unit/tools/test_actions.py
M test/unit/tools/test_data_parameters.py
Log Message:
-----------
Merge pull request #805 from jmchilton/multi_data_param_enhance
Allow multiple collections to be supplied to a multiple data parameter.
Commit: 3069e12ca741245563b9e372bf581747861fce6e
https://github.com/galaxyproject/galaxy/commit/3069e12ca741245563b9e372bf58…
Author: Greg Von Kuster <ghv2(a)psu.edu>
Date: 2015-12-05 (Sat, 05 Dec 2015)
Changed paths:
M .gitignore
A client/galaxy/scripts/apps/analysis.js
A client/galaxy/scripts/apps/history-panel.js
A client/galaxy/scripts/apps/login.js
A client/galaxy/scripts/apps/tool-panel.js
R client/galaxy/scripts/base.js
R client/galaxy/scripts/galaxy-app-base.js
R client/galaxy/scripts/galaxy.autocom_tagging.js
R client/galaxy/scripts/galaxy.base.js
R client/galaxy/scripts/galaxy.frame.js
A client/galaxy/scripts/galaxy.js
M client/galaxy/scripts/galaxy.library.js
R client/galaxy/scripts/galaxy.masthead.js
R client/galaxy/scripts/galaxy.menu.js
M client/galaxy/scripts/galaxy.pages.js
R client/galaxy/scripts/galaxy.panels.js
R client/galaxy/scripts/galaxy.tools.js
R client/galaxy/scripts/galaxy.ui.scrollPanel.js
A client/galaxy/scripts/layout/masthead.js
A client/galaxy/scripts/layout/menu.js
A client/galaxy/scripts/layout/modal.js
A client/galaxy/scripts/layout/page.js
A client/galaxy/scripts/layout/panel.js
A client/galaxy/scripts/layout/scratchbook.js
R client/galaxy/scripts/libs/IE/IE7.js
R client/galaxy/scripts/libs/IE/IE8.js
R client/galaxy/scripts/libs/IE/blank.gif
R client/galaxy/scripts/libs/IE/excanvas.js
R client/galaxy/scripts/libs/IE/ie7-recalc.js
A client/galaxy/scripts/libs/backbone.js
R client/galaxy/scripts/libs/backbone/backbone.js
M client/galaxy/scripts/libs/d3.js
A client/galaxy/scripts/mvc/annotation.js
R client/galaxy/scripts/mvc/annotations.js
R client/galaxy/scripts/mvc/app/app-analysis.js
R client/galaxy/scripts/mvc/app/app-login.js
R client/galaxy/scripts/mvc/app/app-view.js
M client/galaxy/scripts/mvc/base-mvc.js
M client/galaxy/scripts/mvc/citation/citation-model.js
M client/galaxy/scripts/mvc/collection/collection-model.js
R client/galaxy/scripts/mvc/collection/collection-panel-edit.js
R client/galaxy/scripts/mvc/collection/collection-panel.js
A client/galaxy/scripts/mvc/collection/collection-view-edit.js
A client/galaxy/scripts/mvc/collection/collection-view.js
M client/galaxy/scripts/mvc/collection/list-of-pairs-collection-creator.js
R client/galaxy/scripts/mvc/data.js
A client/galaxy/scripts/mvc/dataset/data.js
M client/galaxy/scripts/mvc/dataset/dataset-choice.js
M client/galaxy/scripts/mvc/dataset/dataset-li-edit.js
M client/galaxy/scripts/mvc/dataset/dataset-list.js
M client/galaxy/scripts/mvc/dataset/dataset-model.js
M client/galaxy/scripts/mvc/form/form-select-content.js
M client/galaxy/scripts/mvc/grid/grid-view.js
M client/galaxy/scripts/mvc/history/hda-model.js
M client/galaxy/scripts/mvc/history/hdca-li-edit.js
M client/galaxy/scripts/mvc/history/hdca-li.js
M client/galaxy/scripts/mvc/history/history-content-model.js
M client/galaxy/scripts/mvc/history/history-contents.js
M client/galaxy/scripts/mvc/history/history-model.js
R client/galaxy/scripts/mvc/history/history-panel-annotated.js
R client/galaxy/scripts/mvc/history/history-panel-edit-current.js
R client/galaxy/scripts/mvc/history/history-panel-edit.js
R client/galaxy/scripts/mvc/history/history-panel.js
A client/galaxy/scripts/mvc/history/history-view-annotated.js
A client/galaxy/scripts/mvc/history/history-view-edit-current.js
A client/galaxy/scripts/mvc/history/history-view-edit.js
A client/galaxy/scripts/mvc/history/history-view.js
M client/galaxy/scripts/mvc/history/multi-panel.js
M client/galaxy/scripts/mvc/history/options-menu.js
M client/galaxy/scripts/mvc/job/job-model.js
M client/galaxy/scripts/mvc/library/library-dataset-view.js
M client/galaxy/scripts/mvc/library/library-folder-view.js
M client/galaxy/scripts/mvc/library/library-folderlist-view.js
M client/galaxy/scripts/mvc/library/library-folderrow-view.js
M client/galaxy/scripts/mvc/library/library-foldertoolbar-view.js
M client/galaxy/scripts/mvc/library/library-library-view.js
M client/galaxy/scripts/mvc/library/library-librarylist-view.js
M client/galaxy/scripts/mvc/library/library-libraryrow-view.js
M client/galaxy/scripts/mvc/library/library-librarytoolbar-view.js
M client/galaxy/scripts/mvc/library/library-model.js
R client/galaxy/scripts/mvc/list/list-panel.js
A client/galaxy/scripts/mvc/list/list-view.js
A client/galaxy/scripts/mvc/tag.js
R client/galaxy/scripts/mvc/tags.js
A client/galaxy/scripts/mvc/tool/tools-form-base.js
A client/galaxy/scripts/mvc/tool/tools-form-workflow.js
A client/galaxy/scripts/mvc/tool/tools-form.js
A client/galaxy/scripts/mvc/tool/tools-jobs.js
A client/galaxy/scripts/mvc/tool/tools-template.js
A client/galaxy/scripts/mvc/tool/tools.js
R client/galaxy/scripts/mvc/tools.js
R client/galaxy/scripts/mvc/tools/tools-form-base.js
R client/galaxy/scripts/mvc/tools/tools-form-workflow.js
R client/galaxy/scripts/mvc/tools/tools-form.js
R client/galaxy/scripts/mvc/tools/tools-jobs.js
R client/galaxy/scripts/mvc/tools/tools-template.js
M client/galaxy/scripts/mvc/ui/ui-select-ftp.js
M client/galaxy/scripts/mvc/ui/ui-select-library.js
M client/galaxy/scripts/mvc/upload/upload-ftp.js
M client/galaxy/scripts/mvc/upload/upload-view.js
M client/galaxy/scripts/mvc/user/user-model.js
M client/galaxy/scripts/mvc/visualization/visualization-model.js
M client/galaxy/scripts/mvc/workflow/workflow-connector.js
M client/galaxy/scripts/mvc/workflow/workflow-manager.js
M client/galaxy/scripts/mvc/workflow/workflow-view-data.js
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M client/galaxy/scripts/nls/ja/locale.js
M client/galaxy/scripts/nls/locale.js
M client/galaxy/scripts/nls/zh/locale.js
A client/galaxy/scripts/onload.js
A client/galaxy/scripts/polyfills.js
R client/galaxy/scripts/rgenetics/checkbox_and_radiobutton.js
R client/galaxy/scripts/rgenetics/helper_functions.js
R client/galaxy/scripts/rgenetics/timer.js
M client/galaxy/scripts/templates/compiled/panel_section.js
M client/galaxy/scripts/templates/compiled/tool_form.js
M client/galaxy/scripts/templates/compiled/tool_link.js
M client/galaxy/scripts/templates/compiled/tool_search.js
R client/galaxy/scripts/tools/rgenetics/checkbox_and_radiobutton.js
R client/galaxy/scripts/tools/rgenetics/helper_functions.js
R client/galaxy/scripts/tools/rgenetics/timer.js
A client/galaxy/scripts/ui/autocom_tagging.js
A client/galaxy/scripts/ui/editable-text.js
A client/galaxy/scripts/ui/popupmenu.js
A client/galaxy/scripts/ui/scroll-panel.js
A client/galaxy/scripts/utils/async-save-text.js
M client/galaxy/scripts/utils/localization.js
M client/galaxy/scripts/utils/query-string-parsing.js
M client/galaxy/scripts/utils/utils.js
M client/galaxy/scripts/viz/circster.js
M client/galaxy/scripts/viz/phyloviz.js
M client/galaxy/scripts/viz/sweepster.js
M client/galaxy/scripts/viz/trackster.js
M client/galaxy/scripts/viz/trackster/tracks.js
M client/galaxy/scripts/viz/trackster/util.js
M client/galaxy/scripts/viz/visualization.js
M client/galaxy/style/less/base.less
M client/grunt-tasks/install-libs.js
M client/grunt-tasks/scripts.js
M client/grunt-tasks/templates.js
M client/package.json
A client/webpack.config.js
A config/dependency_resolvers_conf.xml.sample
M config/galaxy.ini.sample
M lib/galaxy/config.py
M lib/galaxy/datatypes/interval.py
M lib/galaxy/jobs/runners/pulsar.py
M lib/galaxy/managers/configuration.py
M lib/galaxy/managers/users.py
M lib/galaxy/model/__init__.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/actions/__init__.py
M lib/galaxy/tools/deps/resolvers/modules.py
M lib/galaxy/tools/deps/resolvers/unlinked_tool_shed_packages.py
M lib/galaxy/tools/evaluation.py
M lib/galaxy/tools/parameters/basic.py
M lib/galaxy/tools/parameters/wrapped.py
M lib/galaxy/tools/wrappers.py
M lib/galaxy/web/base/controller.py
M lib/galaxy/web/framework/webapp.py
M lib/galaxy/webapps/galaxy/buildapp.py
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/galaxy/controllers/root.py
M lib/tool_shed/galaxy_install/migrate/check.py
M run_tests.sh
A static/incompatible-browser.html
R static/maps/base.js.map
R static/maps/galaxy-app-base.js.map
R static/maps/galaxy.autocom_tagging.js.map
R static/maps/galaxy.base.js.map
R static/maps/galaxy.frame.js.map
A static/maps/galaxy.js.map
M static/maps/galaxy.library.js.map
R static/maps/galaxy.masthead.js.map
R static/maps/galaxy.menu.js.map
M static/maps/galaxy.pages.js.map
R static/maps/galaxy.panels.js.map
R static/maps/galaxy.tools.js.map
R static/maps/galaxy.ui.scrollPanel.js.map
R static/maps/galaxy.workflows.js.map
A static/maps/layout/masthead.js.map
A static/maps/layout/menu.js.map
A static/maps/layout/modal.js.map
A static/maps/layout/page.js.map
A static/maps/layout/panel.js.map
A static/maps/layout/scratchbook.js.map
R static/maps/libs/IE/IE7.js.map
R static/maps/libs/IE/IE8.js.map
R static/maps/libs/IE/excanvas.js.map
R static/maps/libs/IE/ie7-recalc.js.map
A static/maps/libs/backbone.js.map
A static/maps/libs/common-libs.js.map
A static/maps/mvc/annotation.js.map
R static/maps/mvc/annotations.js.map
R static/maps/mvc/app/app-analysis.js.map
R static/maps/mvc/app/app-login.js.map
R static/maps/mvc/app/app-view.js.map
M static/maps/mvc/base-mvc.js.map
M static/maps/mvc/citation/citation-model.js.map
M static/maps/mvc/collection/collection-model.js.map
R static/maps/mvc/collection/collection-panel-edit.js.map
R static/maps/mvc/collection/collection-panel.js.map
A static/maps/mvc/collection/collection-view-edit.js.map
A static/maps/mvc/collection/collection-view.js.map
M static/maps/mvc/collection/list-of-pairs-collection-creator.js.map
R static/maps/mvc/data.js.map
A static/maps/mvc/dataset/data.js.map
M static/maps/mvc/dataset/dataset-choice.js.map
M static/maps/mvc/dataset/dataset-li-edit.js.map
M static/maps/mvc/dataset/dataset-list.js.map
M static/maps/mvc/dataset/dataset-model.js.map
M static/maps/mvc/form/form-select-content.js.map
M static/maps/mvc/grid/grid-view.js.map
M static/maps/mvc/history/hdca-li-edit.js.map
M static/maps/mvc/history/hdca-li.js.map
M static/maps/mvc/history/history-content-model.js.map
M static/maps/mvc/history/history-contents.js.map
M static/maps/mvc/history/history-model.js.map
R static/maps/mvc/history/history-panel-annotated.js.map
R static/maps/mvc/history/history-panel-edit-current.js.map
R static/maps/mvc/history/history-panel-edit.js.map
R static/maps/mvc/history/history-panel.js.map
A static/maps/mvc/history/history-view-annotated.js.map
A static/maps/mvc/history/history-view-edit-current.js.map
A static/maps/mvc/history/history-view-edit.js.map
A static/maps/mvc/history/history-view.js.map
M static/maps/mvc/history/multi-panel.js.map
M static/maps/mvc/history/options-menu.js.map
M static/maps/mvc/job/job-model.js.map
M static/maps/mvc/library/library-dataset-view.js.map
M static/maps/mvc/library/library-folder-view.js.map
M static/maps/mvc/library/library-foldertoolbar-view.js.map
M static/maps/mvc/library/library-library-view.js.map
M static/maps/mvc/library/library-librarytoolbar-view.js.map
M static/maps/mvc/library/library-model.js.map
A static/maps/mvc/list/list-view.js.map
A static/maps/mvc/tag.js.map
R static/maps/mvc/tags.js.map
A static/maps/mvc/tool/tools-form-base.js.map
A static/maps/mvc/tool/tools-form-workflow.js.map
A static/maps/mvc/tool/tools-form.js.map
A static/maps/mvc/tool/tools-jobs.js.map
A static/maps/mvc/tool/tools-template.js.map
A static/maps/mvc/tool/tools.js.map
R static/maps/mvc/tools/tools-form-workflow.js.map
R static/maps/mvc/tools/tools-form.js.map
R static/maps/mvc/tools/tools-jobs.js.map
R static/maps/mvc/tools/tools-template.js.map
M static/maps/mvc/ui/ui-select-ftp.js.map
M static/maps/mvc/ui/ui-select-library.js.map
M static/maps/mvc/upload/upload-ftp.js.map
M static/maps/mvc/upload/upload-view.js.map
M static/maps/mvc/user/user-model.js.map
M static/maps/mvc/visualization/visualization-model.js.map
M static/maps/mvc/workflow/workflow-connector.js.map
M static/maps/mvc/workflow/workflow-manager.js.map
M static/maps/mvc/workflow/workflow-view-data.js.map
M static/maps/mvc/workflow/workflow-view.js.map
A static/maps/onload.js.map
A static/maps/polyfills.js.map
R static/maps/rgenetics/checkbox_and_radiobutton.js.map
R static/maps/rgenetics/helper_functions.js.map
R static/maps/rgenetics/timer.js.map
M static/maps/templates/compiled/panel_section.js.map
M static/maps/templates/compiled/tool_form.js.map
M static/maps/templates/compiled/tool_link.js.map
M static/maps/templates/compiled/tool_search.js.map
R static/maps/tools/rgenetics/checkbox_and_radiobutton.js.map
R static/maps/tools/rgenetics/helper_functions.js.map
R static/maps/tools/rgenetics/timer.js.map
A static/maps/ui/autocom_tagging.js.map
A static/maps/ui/editable-text.js.map
A static/maps/ui/popupmenu.js.map
A static/maps/ui/scroll-panel.js.map
A static/maps/utils/async-save-text.js.map
M static/maps/utils/localization.js.map
M static/maps/utils/query-string-parsing.js.map
M static/maps/utils/utils.js.map
M static/maps/viz/circster.js.map
M static/maps/viz/phyloviz.js.map
M static/maps/viz/sweepster.js.map
M static/maps/viz/trackster.js.map
M static/maps/viz/trackster/tracks.js.map
M static/maps/viz/trackster/util.js.map
M static/maps/viz/visualization.js.map
R static/scripts/base.js
A static/scripts/bundled/analysis.bundled.js
A static/scripts/bundled/analysis.bundled.js.map
A static/scripts/bundled/libs.bundled.js
A static/scripts/bundled/libs.bundled.js.map
A static/scripts/bundled/login.bundled.js
A static/scripts/bundled/login.bundled.js.map
R static/scripts/galaxy-app-base.js
R static/scripts/galaxy.autocom_tagging.js
R static/scripts/galaxy.base.js
R static/scripts/galaxy.frame.js
A static/scripts/galaxy.js
M static/scripts/galaxy.library.js
R static/scripts/galaxy.masthead.js
R static/scripts/galaxy.menu.js
M static/scripts/galaxy.pages.js
R static/scripts/galaxy.panels.js
R static/scripts/galaxy.tools.js
R static/scripts/galaxy.ui.scrollPanel.js
R static/scripts/galaxy.workflows.js
A static/scripts/layout/masthead.js
A static/scripts/layout/menu.js
A static/scripts/layout/modal.js
A static/scripts/layout/page.js
A static/scripts/layout/panel.js
A static/scripts/layout/scratchbook.js
R static/scripts/libs/IE/IE7.js
R static/scripts/libs/IE/IE8.js
R static/scripts/libs/IE/blank.gif
R static/scripts/libs/IE/excanvas.js
R static/scripts/libs/IE/ie7-recalc.js
A static/scripts/libs/backbone.js
A static/scripts/libs/common-libs.js
A static/scripts/mvc/annotation.js
R static/scripts/mvc/annotations.js
R static/scripts/mvc/app/app-analysis.js
R static/scripts/mvc/app/app-login.js
R static/scripts/mvc/app/app-view.js
M static/scripts/mvc/base-mvc.js
M static/scripts/mvc/citation/citation-model.js
M static/scripts/mvc/collection/collection-model.js
R static/scripts/mvc/collection/collection-panel-edit.js
R static/scripts/mvc/collection/collection-panel.js
A static/scripts/mvc/collection/collection-view-edit.js
A static/scripts/mvc/collection/collection-view.js
M static/scripts/mvc/collection/list-of-pairs-collection-creator.js
R static/scripts/mvc/data.js
A static/scripts/mvc/dataset/data.js
M static/scripts/mvc/dataset/dataset-li-edit.js
M static/scripts/mvc/dataset/dataset-list.js
M static/scripts/mvc/dataset/dataset-model.js
M static/scripts/mvc/form/form-select-content.js
M static/scripts/mvc/history/hdca-li-edit.js
M static/scripts/mvc/history/hdca-li.js
M static/scripts/mvc/history/history-content-model.js
M static/scripts/mvc/history/history-contents.js
M static/scripts/mvc/history/history-model.js
R static/scripts/mvc/history/history-panel-annotated.js
R static/scripts/mvc/history/history-panel-edit-current.js
R static/scripts/mvc/history/history-panel-edit.js
A static/scripts/mvc/history/history-view-annotated.js
A static/scripts/mvc/history/history-view-edit-current.js
A static/scripts/mvc/history/history-view-edit.js
A static/scripts/mvc/history/history-view.js
M static/scripts/mvc/history/multi-panel.js
M static/scripts/mvc/history/options-menu.js
M static/scripts/mvc/job/job-model.js
M static/scripts/mvc/library/library-dataset-view.js
M static/scripts/mvc/library/library-folder-view.js
M static/scripts/mvc/library/library-folderlist-view.js
M static/scripts/mvc/library/library-folderrow-view.js
M static/scripts/mvc/library/library-foldertoolbar-view.js
M static/scripts/mvc/library/library-library-view.js
M static/scripts/mvc/library/library-librarylist-view.js
M static/scripts/mvc/library/library-libraryrow-view.js
M static/scripts/mvc/library/library-librarytoolbar-view.js
M static/scripts/mvc/library/library-model.js
R static/scripts/mvc/list/list-panel.js
A static/scripts/mvc/list/list-view.js
A static/scripts/mvc/tag.js
R static/scripts/mvc/tags.js
A static/scripts/mvc/tool/tools-form-base.js
A static/scripts/mvc/tool/tools-form-workflow.js
A static/scripts/mvc/tool/tools-form.js
A static/scripts/mvc/tool/tools-jobs.js
A static/scripts/mvc/tool/tools-template.js
A static/scripts/mvc/tool/tools.js
R static/scripts/mvc/tools/tools-form-workflow.js
R static/scripts/mvc/tools/tools-form.js
R static/scripts/mvc/tools/tools-jobs.js
R static/scripts/mvc/tools/tools-template.js
M static/scripts/mvc/ui/ui-select-ftp.js
M static/scripts/mvc/ui/ui-select-library.js
M static/scripts/mvc/upload/upload-ftp.js
M static/scripts/mvc/upload/upload-view.js
M static/scripts/mvc/user/user-model.js
M static/scripts/mvc/visualization/visualization-model.js
M static/scripts/mvc/workflow/workflow-connector.js
M static/scripts/mvc/workflow/workflow-manager.js
M static/scripts/mvc/workflow/workflow-view-data.js
M static/scripts/mvc/workflow/workflow-view.js
A static/scripts/onload.js
A static/scripts/polyfills.js
R static/scripts/rgenetics/checkbox_and_radiobutton.js
R static/scripts/rgenetics/helper_functions.js
R static/scripts/rgenetics/timer.js
M static/scripts/templates/compiled/panel_section.js
M static/scripts/templates/compiled/tool_form.js
M static/scripts/templates/compiled/tool_link.js
M static/scripts/templates/compiled/tool_search.js
R static/scripts/tools/rgenetics/checkbox_and_radiobutton.js
R static/scripts/tools/rgenetics/helper_functions.js
R static/scripts/tools/rgenetics/timer.js
A static/scripts/ui/autocom_tagging.js
A static/scripts/ui/editable-text.js
A static/scripts/ui/popupmenu.js
A static/scripts/ui/scroll-panel.js
A static/scripts/utils/async-save-text.js
M static/scripts/utils/localization.js
M static/scripts/utils/query-string-parsing.js
M static/scripts/utils/utils.js
M static/scripts/viz/circster.js
M static/scripts/viz/phyloviz.js
M static/scripts/viz/sweepster.js
M static/scripts/viz/trackster.js
M static/scripts/viz/trackster/tracks.js
M static/scripts/viz/trackster/util.js
M static/scripts/viz/visualization.js
M static/style/blue/base.css
R static/style/blue/galaxy.frame.masthead.css
M templates/base.mako
M templates/base/base_panels.mako
M templates/display_base.mako
M templates/galaxy_client_app.mako
M templates/grid_base.mako
A templates/js-app.mako
M templates/refresh_frames.mako
M templates/tagging_common.mako
M templates/user/logout.mako
M templates/webapps/galaxy/dataset/display.mako
M templates/webapps/galaxy/dataset/edit_attributes.mako
M templates/webapps/galaxy/dataset/tabular_chunked.mako
M templates/webapps/galaxy/galaxy.masthead.mako
M templates/webapps/galaxy/galaxy.panels.mako
M templates/webapps/galaxy/history/display.mako
M templates/webapps/galaxy/history/embed.mako
M templates/webapps/galaxy/history/view.mako
M templates/webapps/galaxy/history/view_multiple.mako
M templates/webapps/galaxy/library/common/ldda_edit_info.mako
M templates/webapps/galaxy/library/common/move_library_item.mako
M templates/webapps/galaxy/library/common/upload.mako
M templates/webapps/galaxy/page/editor.mako
M templates/webapps/galaxy/requests/common/create_request.mako
M templates/webapps/galaxy/requests/common/find_samples.mako
R templates/webapps/galaxy/root/index.mako
M templates/webapps/galaxy/visualization/display.mako
M templates/webapps/galaxy/visualization/display_in_frame.mako
M templates/webapps/galaxy/visualization/sweepster.mako
M templates/webapps/galaxy/workflow/editor.mako
M templates/webapps/galaxy/workflow/run.mako
M test/api/helpers.py
M test/api/test_jobs.py
M test/api/test_tools.py
M test/base/twilltestcase.py
M test/casperjs/api-history-permission-tests.js
M test/casperjs/spaceghost.js
M test/qunit/test-app.js
M test/qunit/test-common.js
M test/qunit/test-data/bootstrapped.js
M test/qunit/tests/galaxy-app-base.js
M test/qunit/tests/workflow_editor_tests.js
M test/tool_shed/test_data/1440_files/complex_dependency/tool_dependencies.xml
M test/unit/tools/test_actions.py
M test/unit/tools/test_data_parameters.py
Log Message:
-----------
Merge branch 'dev' of https://github.com/galaxyproject/galaxy into dev
Commit: 6126bd0e93e17c2d9cd6512ec068f806cc9da72d
https://github.com/galaxyproject/galaxy/commit/6126bd0e93e17c2d9cd6512ec068…
Author: Björn Grüning <bjoern(a)gruenings.eu>
Date: 2015-12-05 (Sat, 05 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/workflow/workflow-manager.js
M client/galaxy/scripts/mvc/workflow/workflow-node.js
M client/galaxy/scripts/mvc/workflow/workflow-view-data.js
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M lib/galaxy/managers/workflows.py
M static/maps/mvc/workflow/workflow-manager.js.map
M static/maps/mvc/workflow/workflow-node.js.map
M static/maps/mvc/workflow/workflow-view-data.js.map
M static/maps/mvc/workflow/workflow-view.js.map
M static/scripts/mvc/workflow/workflow-manager.js
M static/scripts/mvc/workflow/workflow-node.js
M static/scripts/mvc/workflow/workflow-view-data.js
M test/api/test_workflows.py
M test/api/test_workflows_from_yaml.py
M test/api/workflows_format_2/converter.py
M test/api/workflows_format_2/interface.py
M test/api/workflows_format_2/main.py
M test/qunit/tests/workflow_editor_tests.js
Log Message:
-----------
Merge pull request #1214 from jmchilton/format_2_1
Small enhancements in workflow inputs and outputs
Commit: 4d252119fd0057b9b9433a4d874784c86f96d42e
https://github.com/galaxyproject/galaxy/commit/4d252119fd0057b9b9433a4d8747…
Author: Björn Grüning <bjoern(a)gruenings.eu>
Date: 2015-12-05 (Sat, 05 Dec 2015)
Changed paths:
M lib/galaxy/managers/workflows.py
M lib/galaxy/model/__init__.py
M lib/galaxy/workflow/run.py
M test/unit/workflows/test_workflow_progress.py
Log Message:
-----------
Merge pull request #1216 from jmchilton/workflow_tweaks_1
More small workflow tweaks.
Commit: 4dc134d43bfa415cf3d1b77475dc0d4a3efb05b1
https://github.com/galaxyproject/galaxy/commit/4dc134d43bfa415cf3d1b77475dc…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-05 (Sat, 05 Dec 2015)
Changed paths:
M .gitignore
M README.rst
M client/GruntFile.js
A client/galaxy/scripts/apps/analysis.js
A client/galaxy/scripts/apps/history-panel.js
A client/galaxy/scripts/apps/login.js
A client/galaxy/scripts/apps/tool-panel.js
R client/galaxy/scripts/base.js
R client/galaxy/scripts/galaxy-app-base.js
R client/galaxy/scripts/galaxy.autocom_tagging.js
R client/galaxy/scripts/galaxy.base.js
R client/galaxy/scripts/galaxy.frame.js
A client/galaxy/scripts/galaxy.js
M client/galaxy/scripts/galaxy.library.js
R client/galaxy/scripts/galaxy.masthead.js
R client/galaxy/scripts/galaxy.menu.js
M client/galaxy/scripts/galaxy.pages.js
R client/galaxy/scripts/galaxy.panels.js
R client/galaxy/scripts/galaxy.tools.js
R client/galaxy/scripts/galaxy.ui.scrollPanel.js
A client/galaxy/scripts/layout/masthead.js
A client/galaxy/scripts/layout/menu.js
A client/galaxy/scripts/layout/modal.js
A client/galaxy/scripts/layout/page.js
A client/galaxy/scripts/layout/panel.js
A client/galaxy/scripts/layout/scratchbook.js
R client/galaxy/scripts/libs/IE/IE7.js
R client/galaxy/scripts/libs/IE/IE8.js
R client/galaxy/scripts/libs/IE/blank.gif
R client/galaxy/scripts/libs/IE/excanvas.js
R client/galaxy/scripts/libs/IE/ie7-recalc.js
A client/galaxy/scripts/libs/backbone.js
R client/galaxy/scripts/libs/backbone/backbone.js
M client/galaxy/scripts/libs/d3.js
A client/galaxy/scripts/mvc/annotation.js
R client/galaxy/scripts/mvc/annotations.js
R client/galaxy/scripts/mvc/app/app-login.js
R client/galaxy/scripts/mvc/app/app-view.js
M client/galaxy/scripts/mvc/base-mvc.js
M client/galaxy/scripts/mvc/citation/citation-model.js
M client/galaxy/scripts/mvc/collection/collection-model.js
R client/galaxy/scripts/mvc/collection/collection-panel-edit.js
R client/galaxy/scripts/mvc/collection/collection-panel.js
A client/galaxy/scripts/mvc/collection/collection-view-edit.js
A client/galaxy/scripts/mvc/collection/collection-view.js
M client/galaxy/scripts/mvc/collection/list-collection-creator.js
M client/galaxy/scripts/mvc/collection/list-of-pairs-collection-creator.js
M client/galaxy/scripts/mvc/collection/pair-collection-creator.js
R client/galaxy/scripts/mvc/data.js
A client/galaxy/scripts/mvc/dataset/data.js
M client/galaxy/scripts/mvc/dataset/dataset-choice.js
M client/galaxy/scripts/mvc/dataset/dataset-li-edit.js
M client/galaxy/scripts/mvc/dataset/dataset-li.js
M client/galaxy/scripts/mvc/dataset/dataset-list.js
M client/galaxy/scripts/mvc/dataset/dataset-model.js
M client/galaxy/scripts/mvc/form/form-select-content.js
M client/galaxy/scripts/mvc/grid/grid-view.js
M client/galaxy/scripts/mvc/history/copy-dialog.js
M client/galaxy/scripts/mvc/history/hda-model.js
M client/galaxy/scripts/mvc/history/hdca-li-edit.js
M client/galaxy/scripts/mvc/history/hdca-li.js
M client/galaxy/scripts/mvc/history/history-content-model.js
M client/galaxy/scripts/mvc/history/history-contents.js
M client/galaxy/scripts/mvc/history/history-model.js
R client/galaxy/scripts/mvc/history/history-panel-annotated.js
R client/galaxy/scripts/mvc/history/history-panel-edit-current.js
R client/galaxy/scripts/mvc/history/history-panel-edit.js
R client/galaxy/scripts/mvc/history/history-panel.js
A client/galaxy/scripts/mvc/history/history-view-annotated.js
A client/galaxy/scripts/mvc/history/history-view-edit-current.js
A client/galaxy/scripts/mvc/history/history-view-edit.js
A client/galaxy/scripts/mvc/history/history-view.js
M client/galaxy/scripts/mvc/history/multi-panel.js
M client/galaxy/scripts/mvc/history/options-menu.js
M client/galaxy/scripts/mvc/job/job-li.js
M client/galaxy/scripts/mvc/job/job-model.js
M client/galaxy/scripts/mvc/library/library-dataset-view.js
M client/galaxy/scripts/mvc/library/library-folder-view.js
M client/galaxy/scripts/mvc/library/library-folderlist-view.js
M client/galaxy/scripts/mvc/library/library-folderrow-view.js
M client/galaxy/scripts/mvc/library/library-foldertoolbar-view.js
M client/galaxy/scripts/mvc/library/library-library-view.js
M client/galaxy/scripts/mvc/library/library-librarylist-view.js
M client/galaxy/scripts/mvc/library/library-libraryrow-view.js
M client/galaxy/scripts/mvc/library/library-librarytoolbar-view.js
M client/galaxy/scripts/mvc/library/library-model.js
R client/galaxy/scripts/mvc/list/list-panel.js
A client/galaxy/scripts/mvc/list/list-view.js
A client/galaxy/scripts/mvc/tag.js
R client/galaxy/scripts/mvc/tags.js
A client/galaxy/scripts/mvc/tool/tools-form-base.js
A client/galaxy/scripts/mvc/tool/tools-form-workflow.js
A client/galaxy/scripts/mvc/tool/tools-form.js
A client/galaxy/scripts/mvc/tool/tools-jobs.js
A client/galaxy/scripts/mvc/tool/tools-template.js
A client/galaxy/scripts/mvc/tool/tools.js
R client/galaxy/scripts/mvc/tools.js
M client/galaxy/scripts/mvc/ui/ui-buttons.js
M client/galaxy/scripts/mvc/ui/ui-select-default.js
M client/galaxy/scripts/mvc/ui/ui-select-ftp.js
M client/galaxy/scripts/mvc/ui/ui-select-library.js
M client/galaxy/scripts/mvc/upload/upload-ftp.js
M client/galaxy/scripts/mvc/upload/upload-view.js
M client/galaxy/scripts/mvc/user/user-model.js
M client/galaxy/scripts/mvc/visualization/visualization-model.js
M client/galaxy/scripts/mvc/workflow/workflow-connector.js
M client/galaxy/scripts/mvc/workflow/workflow-manager.js
M client/galaxy/scripts/mvc/workflow/workflow-node.js
M client/galaxy/scripts/mvc/workflow/workflow-view-data.js
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M client/galaxy/scripts/nls/ja/locale.js
M client/galaxy/scripts/nls/locale.js
M client/galaxy/scripts/nls/zh/locale.js
A client/galaxy/scripts/onload.js
A client/galaxy/scripts/polyfills.js
R client/galaxy/scripts/rgenetics/checkbox_and_radiobutton.js
R client/galaxy/scripts/rgenetics/helper_functions.js
R client/galaxy/scripts/rgenetics/timer.js
M client/galaxy/scripts/templates/compiled/panel_section.js
M client/galaxy/scripts/templates/compiled/tool_form.js
M client/galaxy/scripts/templates/compiled/tool_link.js
M client/galaxy/scripts/templates/compiled/tool_search.js
R client/galaxy/scripts/tools/rgenetics/checkbox_and_radiobutton.js
R client/galaxy/scripts/tools/rgenetics/helper_functions.js
R client/galaxy/scripts/tools/rgenetics/timer.js
A client/galaxy/scripts/ui/autocom_tagging.js
A client/galaxy/scripts/ui/editable-text.js
A client/galaxy/scripts/ui/popupmenu.js
A client/galaxy/scripts/ui/scroll-panel.js
A client/galaxy/scripts/utils/async-save-text.js
M client/galaxy/scripts/utils/localization.js
M client/galaxy/scripts/utils/query-string-parsing.js
M client/galaxy/scripts/utils/utils.js
M client/galaxy/scripts/viz/circster.js
M client/galaxy/scripts/viz/phyloviz.js
M client/galaxy/scripts/viz/sweepster.js
M client/galaxy/scripts/viz/trackster.js
M client/galaxy/scripts/viz/trackster/tracks.js
M client/galaxy/scripts/viz/trackster/util.js
M client/galaxy/scripts/viz/visualization.js
M client/galaxy/style/less/base.less
M client/grunt-tasks/install-libs.js
M client/grunt-tasks/scripts.js
M client/grunt-tasks/style.js
M client/grunt-tasks/templates.js
M client/package.json
M client/toolshed/scripts/mvc/groups/group-detail-view.js
M client/toolshed/scripts/mvc/groups/group-listrow-view.js
A client/webpack.config.js
M config/datatypes_conf.xml.sample
A config/dependency_resolvers_conf.xml.sample
M config/galaxy.ini.sample
A config/plugins/interactive_environments/bam_iobio/config/bam_iobio.ini.sample
A config/plugins/interactive_environments/bam_iobio/config/bam_iobio.xml
A config/plugins/interactive_environments/bam_iobio/static/js/bam_iobio.js
A config/plugins/interactive_environments/bam_iobio/templates/bam_iobio.mako
M config/plugins/interactive_environments/common/templates/ie.mako
M config/plugins/interactive_environments/ipython/config/ipython.ini.sample
M config/plugins/interactive_environments/ipython/static/js/ipython.js
M config/plugins/interactive_environments/rstudio/static/js/rstudio.js
M config/plugins/visualizations/charts/templates/charts.mako
A config/reports.ini.sample
R config/reports_wsgi.ini.sample
M config/tool_shed.ini.sample
M doc/source/admin/interactive_environments.rst
A doc/source/releases/15.10.rst
M doc/source/releases/15.10_announce.rst
A doc/source/releases/16.01_announce.rst
M lib/galaxy/config.py
M lib/galaxy/datatypes/binary.py
M lib/galaxy/datatypes/data.py
M lib/galaxy/datatypes/graph.py
M lib/galaxy/datatypes/interval.py
M lib/galaxy/datatypes/proteomics.py
M lib/galaxy/datatypes/registry.py
M lib/galaxy/datatypes/sniff.py
A lib/galaxy/datatypes/test/test.idpDB
A lib/galaxy/datatypes/test/test.mz5
M lib/galaxy/datatypes/text.py
A lib/galaxy/datatypes/triples.py
M lib/galaxy/dependencies/requirements.txt
M lib/galaxy/jobs/__init__.py
M lib/galaxy/jobs/output_checker.py
M lib/galaxy/jobs/runners/__init__.py
M lib/galaxy/jobs/runners/pulsar.py
M lib/galaxy/managers/collections.py
M lib/galaxy/managers/configuration.py
M lib/galaxy/managers/users.py
M lib/galaxy/managers/workflows.py
M lib/galaxy/model/__init__.py
M lib/galaxy/model/mapping.py
M lib/galaxy/security/__init__.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/actions/__init__.py
M lib/galaxy/tools/deps/resolvers/modules.py
M lib/galaxy/tools/deps/resolvers/unlinked_tool_shed_packages.py
M lib/galaxy/tools/evaluation.py
M lib/galaxy/tools/execute.py
M lib/galaxy/tools/parameters/basic.py
M lib/galaxy/tools/parameters/wrapped.py
M lib/galaxy/tools/parser/xml.py
M lib/galaxy/tools/test.py
M lib/galaxy/tools/wrappers.py
M lib/galaxy/util/xml_macros.py
M lib/galaxy/web/base/controller.py
M lib/galaxy/web/base/controllers/admin.py
M lib/galaxy/web/base/interactive_environments.py
M lib/galaxy/web/framework/webapp.py
M lib/galaxy/webapps/galaxy/api/workflows.py
M lib/galaxy/webapps/galaxy/buildapp.py
M lib/galaxy/webapps/galaxy/controllers/admin.py
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/galaxy/controllers/dataset.py
M lib/galaxy/webapps/galaxy/controllers/external_service.py
M lib/galaxy/webapps/galaxy/controllers/forms.py
M lib/galaxy/webapps/galaxy/controllers/history.py
M lib/galaxy/webapps/galaxy/controllers/library.py
M lib/galaxy/webapps/galaxy/controllers/library_admin.py
M lib/galaxy/webapps/galaxy/controllers/request_type.py
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
M lib/galaxy/webapps/galaxy/controllers/requests_common.py
M lib/galaxy/webapps/galaxy/controllers/root.py
M lib/galaxy/webapps/galaxy/controllers/visualization.py
M lib/galaxy/webapps/galaxy/controllers/workflow.py
M lib/galaxy/webapps/reports/controllers/jobs.py
M lib/galaxy/webapps/reports/controllers/sample_tracking.py
M lib/galaxy/webapps/reports/controllers/workflows.py
M lib/galaxy/webapps/tool_shed/api/repositories.py
M lib/galaxy/webapps/tool_shed/config.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/galaxy/workflow/extract.py
M lib/galaxy/workflow/modules.py
M lib/galaxy/workflow/run.py
M lib/galaxy/workflow/run_request.py
M lib/tool_shed/galaxy_install/migrate/check.py
M lib/tool_shed/grids/admin_grids.py
M lib/tool_shed/grids/repository_grids.py
M lib/tool_shed/grids/repository_review_grids.py
M lib/tool_shed/util/common_util.py
M lib/tool_shed/util/hg_util.py
M lib/tool_shed/util/shed_util_common.py
M run_reports.sh
M run_tests.sh
M scripts/bootstrap_history.py
M scripts/functional_tests.py
M scripts/sync_reports_config.py
A static/incompatible-browser.html
R static/maps/base.js.map
R static/maps/galaxy.autocom_tagging.js.map
R static/maps/galaxy.base.js.map
R static/maps/galaxy.frame.js.map
A static/maps/galaxy.js.map
M static/maps/galaxy.library.js.map
R static/maps/galaxy.masthead.js.map
R static/maps/galaxy.menu.js.map
M static/maps/galaxy.pages.js.map
R static/maps/galaxy.panels.js.map
R static/maps/galaxy.tools.js.map
R static/maps/galaxy.ui.scrollPanel.js.map
R static/maps/galaxy.workflows.js.map
A static/maps/layout/masthead.js.map
A static/maps/layout/menu.js.map
A static/maps/layout/modal.js.map
A static/maps/layout/page.js.map
A static/maps/layout/panel.js.map
A static/maps/layout/scratchbook.js.map
R static/maps/libs/IE/IE7.js.map
R static/maps/libs/IE/IE8.js.map
R static/maps/libs/IE/excanvas.js.map
R static/maps/libs/IE/ie7-recalc.js.map
A static/maps/libs/backbone.js.map
A static/maps/libs/common-libs.js.map
A static/maps/mvc/annotation.js.map
R static/maps/mvc/annotations.js.map
R static/maps/mvc/app/app-login.js.map
R static/maps/mvc/app/app-view.js.map
M static/maps/mvc/base-mvc.js.map
M static/maps/mvc/citation/citation-model.js.map
M static/maps/mvc/collection/collection-model.js.map
R static/maps/mvc/collection/collection-panel-edit.js.map
R static/maps/mvc/collection/collection-panel.js.map
A static/maps/mvc/collection/collection-view-edit.js.map
A static/maps/mvc/collection/collection-view.js.map
M static/maps/mvc/collection/list-of-pairs-collection-creator.js.map
R static/maps/mvc/data.js.map
A static/maps/mvc/dataset/data.js.map
M static/maps/mvc/dataset/dataset-choice.js.map
M static/maps/mvc/dataset/dataset-li-edit.js.map
M static/maps/mvc/dataset/dataset-li.js.map
M static/maps/mvc/dataset/dataset-list.js.map
M static/maps/mvc/dataset/dataset-model.js.map
M static/maps/mvc/form/form-select-content.js.map
M static/maps/mvc/grid/grid-view.js.map
M static/maps/mvc/history/copy-dialog.js.map
M static/maps/mvc/history/hdca-li-edit.js.map
M static/maps/mvc/history/hdca-li.js.map
M static/maps/mvc/history/history-content-model.js.map
M static/maps/mvc/history/history-contents.js.map
M static/maps/mvc/history/history-model.js.map
R static/maps/mvc/history/history-panel-annotated.js.map
R static/maps/mvc/history/history-panel-edit-current.js.map
R static/maps/mvc/history/history-panel-edit.js.map
R static/maps/mvc/history/history-panel.js.map
A static/maps/mvc/history/history-view-annotated.js.map
A static/maps/mvc/history/history-view-edit-current.js.map
A static/maps/mvc/history/history-view-edit.js.map
A static/maps/mvc/history/history-view.js.map
M static/maps/mvc/history/multi-panel.js.map
M static/maps/mvc/history/options-menu.js.map
M static/maps/mvc/job/job-model.js.map
M static/maps/mvc/library/library-dataset-view.js.map
M static/maps/mvc/library/library-folder-view.js.map
M static/maps/mvc/library/library-folderrow-view.js.map
M static/maps/mvc/library/library-foldertoolbar-view.js.map
M static/maps/mvc/library/library-library-view.js.map
M static/maps/mvc/library/library-librarytoolbar-view.js.map
M static/maps/mvc/library/library-model.js.map
M static/maps/mvc/list/list-panel.js.map
A static/maps/mvc/list/list-view.js.map
A static/maps/mvc/tag.js.map
R static/maps/mvc/tags.js.map
A static/maps/mvc/tool/tools-form-base.js.map
A static/maps/mvc/tool/tools-form-workflow.js.map
A static/maps/mvc/tool/tools-form.js.map
A static/maps/mvc/tool/tools-jobs.js.map
A static/maps/mvc/tool/tools-template.js.map
A static/maps/mvc/tool/tools.js.map
A static/maps/mvc/tools/tools-form-base.js.map
M static/maps/mvc/ui/ui-buttons.js.map
M static/maps/mvc/ui/ui-select-default.js.map
M static/maps/mvc/ui/ui-select-ftp.js.map
M static/maps/mvc/ui/ui-select-library.js.map
M static/maps/mvc/upload/upload-ftp.js.map
M static/maps/mvc/upload/upload-view.js.map
M static/maps/mvc/user/user-model.js.map
M static/maps/mvc/visualization/visualization-model.js.map
M static/maps/mvc/workflow/workflow-connector.js.map
M static/maps/mvc/workflow/workflow-manager.js.map
M static/maps/mvc/workflow/workflow-node.js.map
M static/maps/mvc/workflow/workflow-view-data.js.map
M static/maps/mvc/workflow/workflow-view.js.map
A static/maps/onload.js.map
A static/maps/polyfills.js.map
R static/maps/rgenetics/checkbox_and_radiobutton.js.map
R static/maps/rgenetics/helper_functions.js.map
R static/maps/rgenetics/timer.js.map
M static/maps/templates/compiled/panel_section.js.map
M static/maps/templates/compiled/tool_form.js.map
M static/maps/templates/compiled/tool_link.js.map
M static/maps/templates/compiled/tool_search.js.map
R static/maps/tools/rgenetics/checkbox_and_radiobutton.js.map
R static/maps/tools/rgenetics/helper_functions.js.map
R static/maps/tools/rgenetics/timer.js.map
A static/maps/ui/autocom_tagging.js.map
A static/maps/ui/editable-text.js.map
A static/maps/ui/popupmenu.js.map
A static/maps/ui/scroll-panel.js.map
A static/maps/utils/async-save-text.js.map
M static/maps/utils/localization.js.map
M static/maps/utils/query-string-parsing.js.map
M static/maps/utils/utils.js.map
M static/maps/viz/circster.js.map
M static/maps/viz/phyloviz.js.map
M static/maps/viz/sweepster.js.map
M static/maps/viz/trackster.js.map
M static/maps/viz/trackster/tracks.js.map
M static/maps/viz/trackster/util.js.map
M static/maps/viz/visualization.js.map
R static/scripts/base.js
A static/scripts/bundled/analysis.bundled.js
A static/scripts/bundled/analysis.bundled.js.map
A static/scripts/bundled/libs.bundled.js
A static/scripts/bundled/libs.bundled.js.map
A static/scripts/bundled/login.bundled.js
A static/scripts/bundled/login.bundled.js.map
R static/scripts/galaxy-app-base.js
R static/scripts/galaxy.autocom_tagging.js
R static/scripts/galaxy.base.js
R static/scripts/galaxy.frame.js
A static/scripts/galaxy.js
M static/scripts/galaxy.library.js
R static/scripts/galaxy.masthead.js
R static/scripts/galaxy.menu.js
M static/scripts/galaxy.pages.js
R static/scripts/galaxy.panels.js
R static/scripts/galaxy.tools.js
R static/scripts/galaxy.ui.scrollPanel.js
R static/scripts/galaxy.workflows.js
A static/scripts/layout/masthead.js
A static/scripts/layout/menu.js
A static/scripts/layout/modal.js
A static/scripts/layout/page.js
A static/scripts/layout/panel.js
A static/scripts/layout/scratchbook.js
R static/scripts/libs/IE/IE7.js
R static/scripts/libs/IE/IE8.js
R static/scripts/libs/IE/blank.gif
R static/scripts/libs/IE/excanvas.js
R static/scripts/libs/IE/ie7-recalc.js
A static/scripts/libs/backbone.js
A static/scripts/libs/common-libs.js
A static/scripts/mvc/annotation.js
R static/scripts/mvc/annotations.js
R static/scripts/mvc/app/app-login.js
R static/scripts/mvc/app/app-view.js
M static/scripts/mvc/base-mvc.js
M static/scripts/mvc/citation/citation-model.js
M static/scripts/mvc/collection/collection-model.js
R static/scripts/mvc/collection/collection-panel-edit.js
R static/scripts/mvc/collection/collection-panel.js
A static/scripts/mvc/collection/collection-view-edit.js
A static/scripts/mvc/collection/collection-view.js
M static/scripts/mvc/collection/list-collection-creator.js
M static/scripts/mvc/collection/list-of-pairs-collection-creator.js
M static/scripts/mvc/collection/pair-collection-creator.js
R static/scripts/mvc/data.js
A static/scripts/mvc/dataset/data.js
M static/scripts/mvc/dataset/dataset-choice.js
M static/scripts/mvc/dataset/dataset-li-edit.js
M static/scripts/mvc/dataset/dataset-li.js
M static/scripts/mvc/dataset/dataset-list.js
M static/scripts/mvc/dataset/dataset-model.js
M static/scripts/mvc/form/form-select-content.js
M static/scripts/mvc/history/copy-dialog.js
M static/scripts/mvc/history/hdca-li-edit.js
M static/scripts/mvc/history/hdca-li.js
M static/scripts/mvc/history/history-content-model.js
M static/scripts/mvc/history/history-contents.js
M static/scripts/mvc/history/history-model.js
R static/scripts/mvc/history/history-panel-annotated.js
R static/scripts/mvc/history/history-panel-edit-current.js
R static/scripts/mvc/history/history-panel-edit.js
M static/scripts/mvc/history/history-panel.js
A static/scripts/mvc/history/history-view-annotated.js
A static/scripts/mvc/history/history-view-edit-current.js
A static/scripts/mvc/history/history-view-edit.js
A static/scripts/mvc/history/history-view.js
M static/scripts/mvc/history/multi-panel.js
M static/scripts/mvc/history/options-menu.js
M static/scripts/mvc/job/job-li.js
M static/scripts/mvc/job/job-model.js
M static/scripts/mvc/library/library-dataset-view.js
M static/scripts/mvc/library/library-folder-view.js
M static/scripts/mvc/library/library-folderlist-view.js
M static/scripts/mvc/library/library-folderrow-view.js
M static/scripts/mvc/library/library-foldertoolbar-view.js
M static/scripts/mvc/library/library-library-view.js
M static/scripts/mvc/library/library-librarylist-view.js
M static/scripts/mvc/library/library-libraryrow-view.js
M static/scripts/mvc/library/library-librarytoolbar-view.js
M static/scripts/mvc/library/library-model.js
R static/scripts/mvc/list/list-panel.js
A static/scripts/mvc/list/list-view.js
A static/scripts/mvc/tag.js
R static/scripts/mvc/tags.js
A static/scripts/mvc/tool/tools-form-base.js
A static/scripts/mvc/tool/tools-form-workflow.js
A static/scripts/mvc/tool/tools-form.js
A static/scripts/mvc/tool/tools-jobs.js
A static/scripts/mvc/tool/tools-template.js
A static/scripts/mvc/tool/tools.js
A static/scripts/mvc/tools/tools-form-base.js
M static/scripts/mvc/ui/ui-buttons.js
M static/scripts/mvc/ui/ui-select-default.js
M static/scripts/mvc/ui/ui-select-ftp.js
M static/scripts/mvc/ui/ui-select-library.js
M static/scripts/mvc/upload/upload-ftp.js
M static/scripts/mvc/upload/upload-view.js
M static/scripts/mvc/user/user-model.js
M static/scripts/mvc/visualization/visualization-model.js
M static/scripts/mvc/workflow/workflow-connector.js
M static/scripts/mvc/workflow/workflow-manager.js
M static/scripts/mvc/workflow/workflow-node.js
M static/scripts/mvc/workflow/workflow-view-data.js
M static/scripts/mvc/workflow/workflow-view.js
A static/scripts/onload.js
A static/scripts/polyfills.js
R static/scripts/rgenetics/checkbox_and_radiobutton.js
R static/scripts/rgenetics/helper_functions.js
R static/scripts/rgenetics/timer.js
M static/scripts/templates/compiled/panel_section.js
M static/scripts/templates/compiled/tool_form.js
M static/scripts/templates/compiled/tool_link.js
M static/scripts/templates/compiled/tool_search.js
R static/scripts/tools/rgenetics/checkbox_and_radiobutton.js
R static/scripts/tools/rgenetics/helper_functions.js
R static/scripts/tools/rgenetics/timer.js
A static/scripts/ui/autocom_tagging.js
A static/scripts/ui/editable-text.js
A static/scripts/ui/popupmenu.js
A static/scripts/ui/scroll-panel.js
A static/scripts/utils/async-save-text.js
M static/scripts/utils/localization.js
M static/scripts/utils/query-string-parsing.js
M static/scripts/utils/utils.js
M static/scripts/viz/circster.js
M static/scripts/viz/phyloviz.js
M static/scripts/viz/sweepster.js
M static/scripts/viz/trackster.js
M static/scripts/viz/trackster/tracks.js
M static/scripts/viz/trackster/util.js
M static/scripts/viz/visualization.js
M static/style/blue/autocomplete_tagging.css
M static/style/blue/base.css
M static/style/blue/embed_item.css
R static/style/blue/galaxy.frame.masthead.css
M static/style/blue/iphone.css
M static/style/blue/library.css
M static/style/blue/trackster.css
M templates/base.mako
M templates/base/base_panels.mako
M templates/display_base.mako
M templates/galaxy_client_app.mako
M templates/grid_base.mako
A templates/js-app.mako
M templates/refresh_frames.mako
M templates/tagging_common.mako
M templates/user/logout.mako
M templates/webapps/galaxy/dataset/display.mako
M templates/webapps/galaxy/dataset/edit_attributes.mako
M templates/webapps/galaxy/dataset/tabular_chunked.mako
M templates/webapps/galaxy/galaxy.masthead.mako
M templates/webapps/galaxy/galaxy.panels.mako
M templates/webapps/galaxy/history/display.mako
M templates/webapps/galaxy/history/embed.mako
M templates/webapps/galaxy/history/view.mako
M templates/webapps/galaxy/history/view_multiple.mako
M templates/webapps/galaxy/library/common/ldda_edit_info.mako
M templates/webapps/galaxy/library/common/move_library_item.mako
M templates/webapps/galaxy/library/common/upload.mako
M templates/webapps/galaxy/page/editor.mako
M templates/webapps/galaxy/requests/common/create_request.mako
M templates/webapps/galaxy/requests/common/find_samples.mako
R templates/webapps/galaxy/root/index.mako
M templates/webapps/galaxy/visualization/display.mako
M templates/webapps/galaxy/visualization/display_in_frame.mako
M templates/webapps/galaxy/visualization/sweepster.mako
M templates/webapps/galaxy/workflow/editor.mako
M templates/webapps/galaxy/workflow/run.mako
M templates/webapps/tool_shed/common/reset_metadata_on_selected_repositories.mako
M test/api/helpers.py
M test/api/test_jobs.py
M test/api/test_tools.py
M test/api/test_workflow_extraction.py
M test/api/test_workflows.py
M test/api/test_workflows_from_yaml.py
A test/api/workflows_format_2/README.txt
A test/api/workflows_format_2/__init__.py
A test/api/workflows_format_2/converter.py
A test/api/workflows_format_2/interface.py
A test/api/workflows_format_2/main.py
R test/api/yaml_to_workflow.py
M test/base/twilltestcase.py
M test/casperjs/api-history-permission-tests.js
M test/casperjs/spaceghost.js
A test/functional/tools/cheetah_problem_syntax_error.xml
A test/functional/tools/cheetah_problem_unbound_var.xml
A test/functional/tools/cheetah_problem_unbound_var_input.xml
A test/functional/tools/collection_type_source.xml
A test/functional/tools/create_10.xml
A test/functional/tools/maxseconds.xml
A test/functional/tools/output_format_collection.xml
M test/functional/tools/samples_tool_conf.xml
M test/functional/tools/simple_constructs.yml
M test/qunit/package.json
M test/qunit/test-app.js
M test/qunit/test-common.js
M test/qunit/test-data/bootstrapped.js
M test/qunit/tests/galaxy-app-base.js
M test/qunit/tests/workflow_editor_tests.js
M test/tool_shed/test_data/1440_files/complex_dependency/tool_dependencies.xml
M test/unit/test_galaxy_mapping.py
M test/unit/tools/test_actions.py
M test/unit/tools/test_data_parameters.py
M test/unit/tools/test_parsing.py
M test/unit/tools/test_tool_loader.py
M test/unit/workflows/test_render.py
A test/unit/workflows/test_workflow_progress.py
M test/unit/workflows/workflow_support.py
Log Message:
-----------
Merge branch 'dev' of git://github.com/galaxyproject/galaxy into run_workflow_form_004
Commit: 8e5b8016c6684e2364ba14b9061b0d5a2d218eb1
https://github.com/galaxyproject/galaxy/commit/8e5b8016c6684e2364ba14b9061b…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-05 (Sat, 05 Dec 2015)
Changed paths:
R client/galaxy/scripts/mvc/app/app-analysis.js
R static/maps/mvc/app/app-analysis.js.map
Log Message:
-----------
Remove files
Commit: 7e5069baff533ba61fef3f8f6fc46ecab565a9c6
https://github.com/galaxyproject/galaxy/commit/7e5069baff533ba61fef3f8f6fc4…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-05 (Sat, 05 Dec 2015)
Changed paths:
R client/galaxy/scripts/mvc/tool/tools-form-base.js
R client/galaxy/scripts/mvc/tool/tools-form-workflow.js
R client/galaxy/scripts/mvc/tool/tools-form.js
R client/galaxy/scripts/mvc/tool/tools-jobs.js
R client/galaxy/scripts/mvc/tool/tools-template.js
R static/maps/mvc/tool/tools-form-base.js.map
R static/maps/mvc/tool/tools-form-workflow.js.map
R static/maps/mvc/tool/tools-form.js.map
R static/maps/mvc/tool/tools-jobs.js.map
R static/maps/mvc/tool/tools-template.js.map
R static/maps/mvc/tools/tools-form-base.js.map
R static/scripts/mvc/tool/tools-form-base.js
R static/scripts/mvc/tool/tools-form-workflow.js
R static/scripts/mvc/tool/tools-form.js
R static/scripts/mvc/tool/tools-jobs.js
R static/scripts/mvc/tool/tools-template.js
R static/scripts/mvc/tools/tools-form-base.js
Log Message:
-----------
Remove files
Commit: 0f9cb1478f81d512d4232b42cf490b8022b3a420
https://github.com/galaxyproject/galaxy/commit/0f9cb1478f81d512d4232b42cf49…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-05 (Sat, 05 Dec 2015)
Changed paths:
M static/style/blue/base.css
Log Message:
-----------
Repack files
Commit: df6470654411bfa8ce997f932e92b4c2d644c685
https://github.com/galaxyproject/galaxy/commit/df6470654411bfa8ce997f932e92…
Author: Björn Grüning <bjoern(a)gruenings.eu>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M test/api/helpers.py
Log Message:
-----------
Merge pull request #1237 from jmchilton/test_jobs_fix
Fix missing assertion pointed out @nsoranzo.
Commit: fef8ce2a762b82480d5f7304c345cc3168e10036
https://github.com/galaxyproject/galaxy/commit/fef8ce2a762b82480d5f7304c345…
Author: Björn Grüning <bjoern(a)gruenings.eu>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M test/functional/tools/maxseconds.xml
Log Message:
-----------
Merge pull request #1248 from jmchilton/maxseconds_debug_2
Attempt to fix transiently failing tool test on Jenkins
Commit: e12179b0160d242be870b15b8da5a46e294063bf
https://github.com/galaxyproject/galaxy/commit/e12179b0160d242be870b15b8da5…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-05 (Sat, 05 Dec 2015)
Changed paths:
M lib/galaxy/datatypes/constructive_solid_geometry.py
Log Message:
-----------
Merge pull request #1211 from gregvonkuster/dev
Enhance the VTK datatypes to support cell data in addition to point
Commit: 91d348a73fd49453c9cde5fb6116c3b230a2f162
https://github.com/galaxyproject/galaxy/commit/91d348a73fd49453c9cde5fb6116…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-05 (Sat, 05 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M static/maps/mvc/workflow/workflow-view.js.map
M static/scripts/mvc/workflow/workflow-view.js
Log Message:
-----------
Merge pull request #1247 from jmchilton/editor_refactor
Refactor generic side workflow editor panel toward backbone.
Commit: e29f7155c479365ede4a69513e729fa1bc67c369
https://github.com/galaxyproject/galaxy/commit/e29f7155c479365ede4a69513e72…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-05 (Sat, 05 Dec 2015)
Changed paths:
R static/maps/mvc/tools.js.map
R static/scripts/mvc/app/app-analysis.js
R static/scripts/mvc/tools.js
Log Message:
-----------
Remove files
Commit: 6820b29d3b867b452205c275f274449fb55c8119
https://github.com/galaxyproject/galaxy/commit/6820b29d3b867b452205c275f274…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-05 (Sat, 05 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M lib/galaxy/datatypes/constructive_solid_geometry.py
M static/maps/mvc/workflow/workflow-view.js.map
M static/scripts/mvc/workflow/workflow-view.js
M test/api/helpers.py
M test/functional/tools/maxseconds.xml
Log Message:
-----------
Merge branch 'dev' of git://github.com/galaxyproject/galaxy into run_workflow_form_004
Commit: b11002bef32d83b058e3495f96695c8dc12cb91b
https://github.com/galaxyproject/galaxy/commit/b11002bef32d83b058e3495f9669…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M test/api/workflows_format_2/converter.py
Log Message:
-----------
Don't iterate over unused key.
Thanks to @bgruening.
Commit: 2aa7f04364e10e46c655de636925883a43698694
https://github.com/galaxyproject/galaxy/commit/2aa7f04364e10e46c655de636925…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M test/api/workflows_format_2/converter.py
Log Message:
-----------
Replace __rip_value with dict.pop.
Thanks @bgruening.
Commit: 98249058e85d8133748519ac59ebed96a28a77ac
https://github.com/galaxyproject/galaxy/commit/98249058e85d8133748519ac59eb…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M lib/galaxy/workflow/run.py
Log Message:
-----------
Cleanup error message.
Thanks @bgruening.
Commit: f17a6c996a060f68bc8a250effa23f60b96b44a7
https://github.com/galaxyproject/galaxy/commit/f17a6c996a060f68bc8a250effa2…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M lib/galaxy/managers/base.py
M lib/galaxy/web/base/controller.py
Log Message:
-----------
Synchronize decoding ids across base controller and manager base.
To ensure we have the same kind of exception thrown in both cases.
Commit: f6d26c9ee6f148fd033d1b070c2dbe8c69b08fa8
https://github.com/galaxyproject/galaxy/commit/f6d26c9ee6f148fd033d1b070c2d…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/workflow/workflow-manager.js
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M lib/galaxy/managers/workflows.py
M lib/galaxy/webapps/galaxy/controllers/workflow.py
M lib/galaxy/workflow/modules.py
M test/unit/workflows/test_modules.py
Log Message:
-----------
Small refactor making workflow views and modules tad more generic.
- Reduce duplication between initializing generic modules and tool modules.
- Switch tool_id to content_id as variable names throughout the client.
- Rename get_tool_id to get_content_id on workflow modules.
- Add some minimal documentation to the workflow module about get_content_id.
Downstream in the subworkflow commit I switch the over-the-wire communication to use content_id instead of tool_id also and use content_ids to refer to workflow ids in subworkflow moduls.
Commit: 73bfbf016347f764a0747ad7c6d138c74b6f519d
https://github.com/galaxyproject/galaxy/commit/73bfbf016347f764a0747ad7c6d1…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M lib/galaxy/managers/workflows.py
M lib/galaxy/webapps/galaxy/api/workflows.py
Log Message:
-----------
Refactor some workflow API code into workflows manager.
This allows for reuse outside of the API controller, such as loading subworkflows downstream.
Commit: f92220a74f216d937dc5b147472261d154779512
https://github.com/galaxyproject/galaxy/commit/f92220a74f216d937dc5b1474722…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M lib/galaxy/managers/workflows.py
Log Message:
-----------
Allow workflow outputs on non-tool steps.
Commit: d18c75ceb875632f9e68a74ebeb88389262d6fa8
https://github.com/galaxyproject/galaxy/commit/d18c75ceb875632f9e68a74ebeb8…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M templates/webapps/galaxy/workflow/editor_generic_form.mako
Log Message:
-----------
Bring gneric and tool module styles into alignment in workflow editor.
Commit: d7ac52f6bb61fe360198f91310a3e22076183d7b
https://github.com/galaxyproject/galaxy/commit/d7ac52f6bb61fe360198f91310a3…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/workflow/workflow-view.js
Log Message:
-----------
Add icons to existing workflow steps in workflow editor.
Tools have an icon there.
Commit: e3161b4671e9fb19a47c7f341e3fb46617111a9e
https://github.com/galaxyproject/galaxy/commit/e3161b4671e9fb19a47c7f341e3f…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/workflow/workflow-manager.js
M client/galaxy/scripts/mvc/workflow/workflow-node.js
M client/galaxy/scripts/mvc/workflow/workflow-view-node.js
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M lib/galaxy/webapps/galaxy/controllers/workflow.py
M lib/galaxy/workflow/modules.py
M static/maps/mvc/workflow/workflow-manager.js.map
M static/maps/mvc/workflow/workflow-node.js.map
M static/maps/mvc/workflow/workflow-view-node.js.map
M static/maps/mvc/workflow/workflow-view.js.map
M static/scripts/mvc/workflow/workflow-manager.js
M static/scripts/mvc/workflow/workflow-node.js
M static/scripts/mvc/workflow/workflow-view-node.js
M static/scripts/mvc/workflow/workflow-view.js
M templates/webapps/galaxy/workflow/editor_generic_form.mako
M test/qunit/tests/workflow_editor_tests.js
Log Message:
-----------
Add support for workflow step labels in editor.
- If a step has a label, display it in the step editor side panel title.
- Allow clicking the title to change the label.
- Display the label (if set) as the workflow node box title.
- Add icon to workflow node since the title might not be related to type anymore.
- Enforce unique labels accross the workflow in the editor.
- Qunit test cases for some of this behavior and other recent changes.
Commit: 563e363478258cb1d08802e16586c42efe511e6a
https://github.com/galaxyproject/galaxy/commit/563e363478258cb1d08802e16586…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M lib/galaxy/managers/histories.py
M lib/galaxy/tools/actions/__init__.py
Log Message:
-----------
Tool optimization - don't set state to queued twice.
Just keep the dataset in the correct NEW state until it has actually been queued. Addresses FIXME comment added by James 7 years ago in https://github.com/galaxyproject/galaxy/commit/4c3db1af95fb0520960046ae5494….
This behavior feels correct to me, but it does have ramifications in the GUI. I had previously never actually seen a dataset in the "NEW" state.
Saves an extra flush per dataset, on sqlite this translates to 50ms per dataset for me.
Commit: 0ac7c33522cfeb51b89ec8d14fbb2d716f956450
https://github.com/galaxyproject/galaxy/commit/0ac7c33522cfeb51b89ec8d14fbb…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M lib/galaxy/tools/actions/__init__.py
Log Message:
-----------
Tool optimization and comment improvement.
Commit: 2b8a1423f7e9ae6bdf09571b8992493dc30e035c
https://github.com/galaxyproject/galaxy/commit/2b8a1423f7e9ae6bdf09571b8992…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M lib/galaxy/tools/actions/__init__.py
Log Message:
-----------
Tool optimization - remove another seemingly needless flush.
Saves around a teenth of a second per job.
Before:
- galaxy.tools.execute DEBUG 2015-12-01 13:00:56,984 Tool [cat1] created job [24] (435.468 ms)
- galaxy.tools.execute DEBUG 2015-12-01 13:01:17,296 Tool [cat1] created job [25] (341.687 ms)
- galaxy.tools.execute DEBUG 2015-12-01 13:01:32,896 Tool [cat1] created job [26] (354.138 ms)
After -
- galaxy.tools.execute DEBUG 2015-12-01 12:58:51,154 Tool [cat1] created job [21] (261.932 ms)
- galaxy.tools.execute DEBUG 2015-12-01 12:59:11,354 Tool [cat1] created job [22] (278.699 ms)
- galaxy.tools.execute DEBUG 2015-12-01 12:59:43,105 Tool [cat1] created job [23] (296.438 ms)
Commit: 81799bd3a72b3e704be6c12e89b85eb5bd077428
https://github.com/galaxyproject/galaxy/commit/81799bd3a72b3e704be6c12e89b8…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M lib/galaxy/model/__init__.py
Log Message:
-----------
Micro-optimizations for adding many datasets to history...
... during tool execution. Build method once instead of in each function call, use imap instead of map since we don't need a list, remove some duplicated checks. Frankly this is all stuff Python is probably doing anyway - but in case it doesn't and just so the eye doesn't jump to these optimizations again.
Timings before and after for a section of tool action execute that includes this additon show that this might have a small effect.
Before:
- galaxy.tools.actions INFO 2015-12-01 13:11:39,446 Add outputs to history (127.379 ms)
- galaxy.tools.actions INFO 2015-12-01 13:12:06,598 Add outputs to history (137.029 ms)
- galaxy.tools.actions INFO 2015-12-01 13:12:23,931 Add outputs to history (118.489 ms)
After:
- galaxy.tools.actions INFO 2015-12-01 13:13:09,999 Add outputs to history (99.456 ms)
- galaxy.tools.actions INFO 2015-12-01 13:13:38,573 Add outputs to history (126.131 ms)
- galaxy.tools.actions INFO 2015-12-01 13:13:54,538 Add outputs to history (137.643 ms)
- galaxy.tools.actions INFO 2015-12-01 13:14:12,516 Add outputs to history (101.451 ms)
Commit: bd6a34e279f8d612185fe9d8aa27084efe246e2d
https://github.com/galaxyproject/galaxy/commit/bd6a34e279f8d612185fe9d8aa27…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M lib/galaxy/tools/actions/__init__.py
Log Message:
-----------
Tool optimization comments for future reference.
Including replacing a log statement with a comment.
Commit: 59c3acfbf56e14c8f691946932be71b81774de0e
https://github.com/galaxyproject/galaxy/commit/59c3acfbf56e14c8f691946932be…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M lib/galaxy/tools/actions/__init__.py
Log Message:
-----------
Tool execution optimization - remove another unneeded flush.
Flush the job and its output datasets all at the same time in one transaction.
Inuitively it makes sense that this should work and the timings seem to improve, triming another quater or third of the submission time per job.
Before:
- galaxy.tools.execute DEBUG 2015-12-01 12:58:51,154 Tool [cat1] created job [21] (261.932 ms)
- galaxy.tools.execute DEBUG 2015-12-01 12:59:11,354 Tool [cat1] created job [22] (278.699 ms)
- galaxy.tools.execute DEBUG 2015-12-01 12:59:43,105 Tool [cat1] created job [23] (296.438 ms)
After:
- galaxy.tools.execute DEBUG 2015-12-01 13:22:00,649 Tool [cat1] created job [39] (265.547 ms)
- galaxy.tools.execute DEBUG 2015-12-01 13:22:27,720 Tool [cat1] created job [40] (214.905 ms)
- galaxy.tools.execute DEBUG 2015-12-01 13:21:40,225 Tool [cat1] created job [38] (198.936 ms)
- galaxy.tools.execute DEBUG 2015-12-01 13:22:44,076 Tool [cat1] created job [41] (213.096 ms)
Commit: 3bf466c8f5d554f583dfc2fe8f7b95397278b2d9
https://github.com/galaxyproject/galaxy/commit/3bf466c8f5d554f583dfc2fe8f7b…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M lib/galaxy/tools/actions/__init__.py
Log Message:
-----------
Micro optimization in tool execute - eliminate repeated trans.app fetch.
Commit: e72604be7c0c0a88c6267140b6433fcde88f1d01
https://github.com/galaxyproject/galaxy/commit/e72604be7c0c0a88c6267140b643…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M lib/galaxy/tools/actions/upload.py
Log Message:
-----------
Instrument upload action for timing.
- Checked and cleanup datasets ~500ms
- Create job ~200ms
- Persisting ~20 ms
Commit: 2c6819cd87520fb43f4ebea96eea5fb151787edb
https://github.com/galaxyproject/galaxy/commit/2c6819cd87520fb43f4ebea96eea…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M lib/galaxy/tools/actions/__init__.py
Log Message:
-----------
Tool optimization - eliminate repeated role generation.
For cat1 with 5 inputs - this shaves about 100 ms off of job execution time.
Before:
galaxy.tools.execute DEBUG 2015-12-01 15:08:56,745 Tool [cat1] created job [171] (545.776 ms)
galaxy.tools.execute DEBUG 2015-12-01 15:08:31,871 Tool [cat1] created job [170] (478.813 ms)
After :
galaxy.tools.execute DEBUG 2015-12-01 15:07:11,401 Tool [cat1] created job [168] (371.722 ms)
galaxy.tools.execute DEBUG 2015-12-01 15:07:42,060 Tool [cat1] created job [169] (333.296 ms)
Commit: 836b0dfc1504357b738375b109b22243dd58efe7
https://github.com/galaxyproject/galaxy/commit/836b0dfc1504357b738375b109b2…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M lib/galaxy/tools/execute.py
Log Message:
-----------
Fix location of timer generation for fairer comparison in next commit.
Commit: c14c45be46a4a3b08b3cb0b5132cbbdf151d5100
https://github.com/galaxyproject/galaxy/commit/c14c45be46a4a3b08b3cb0b5132c…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/actions/__init__.py
M lib/galaxy/tools/execute.py
M test/unit/tools/test_execution.py
Log Message:
-----------
Further cache user roles across batched tool executions.
Commit: 53354c7e361cc769f42c7eae42de0eca1769e9a4
https://github.com/galaxyproject/galaxy/commit/53354c7e361cc769f42c7eae42de…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M lib/galaxy/tools/actions/__init__.py
Log Message:
-----------
Fix collection output for less flushing in tool action handle_output.
Commit: ab651fa89c0e24d637daa8bd5716b3932532c6a3
https://github.com/galaxyproject/galaxy/commit/ab651fa89c0e24d637daa8bd5716…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M client/galaxy/scripts/apps/analysis.js
M client/galaxy/scripts/mvc/dataset/dataset-li-edit.js
M client/galaxy/scripts/mvc/tool/tool-form-workflow.js
M client/galaxy/scripts/mvc/tool/tool-form.js
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/parameters/basic.py
M static/maps/mvc/dataset/dataset-li-edit.js.map
M static/maps/mvc/tool/tool-form-workflow.js.map
M static/maps/mvc/tool/tool-form.js.map
M static/maps/utils/utils.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/bundled/login.bundled.js
M static/scripts/bundled/login.bundled.js.map
M static/scripts/mvc/dataset/dataset-li-edit.js
M static/scripts/mvc/tool/tool-form-workflow.js
M static/scripts/mvc/tool/tool-form.js
M static/scripts/utils/utils.js
Log Message:
-----------
Fix url, lint and packing
Catch missing history, fix failing api test
Commit: b55635f71b7fd3bba8393a3c267408d6dd248f99
https://github.com/galaxyproject/galaxy/commit/b55635f71b7fd3bba8393a3c2674…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M client/galaxy/scripts/apps/analysis.js
M client/galaxy/scripts/apps/tool-panel.js
M lib/galaxy/managers/configuration.py
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
Log Message:
-----------
Client, upload: fix passing of nginx_upload_path and ftp_upload_site to upload-view, fix default nginx_upload_path in configuration serializer
Commit: 00452e1b8aecd3ed2fc4c06262f451c9efafa1c6
https://github.com/galaxyproject/galaxy/commit/00452e1b8aecd3ed2fc4c06262f4…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M lib/galaxy/tools/parameters/basic.py
Log Message:
-----------
Add more specific error message for workflow parameters
Commit: beb4a67fb0a4b879b732fd05b35d03019481ea90
https://github.com/galaxyproject/galaxy/commit/beb4a67fb0a4b879b732fd05b35d…
Author: Björn Grüning <bjoern(a)gruenings.eu>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M client/galaxy/scripts/apps/analysis.js
M client/galaxy/scripts/apps/tool-panel.js
M lib/galaxy/managers/configuration.py
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
Log Message:
-----------
Merge pull request #1250 from carlfeberhard/fix.upload
Client, upload: fix passing of nginx_upload_path and ftp_upload_site …
Commit: a951d34c703a239ac00c780025a9657bc7101b0b
https://github.com/galaxyproject/galaxy/commit/a951d34c703a239ac00c780025a9…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M client/galaxy/scripts/apps/analysis.js
M client/galaxy/scripts/apps/tool-panel.js
M lib/galaxy/managers/configuration.py
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
Log Message:
-----------
Merge branch 'dev' of git://github.com/galaxyproject/galaxy into run_workflow_form_004
Commit: 4fe36f8d6a151536267e3aeace2414cc148e18e8
https://github.com/galaxyproject/galaxy/commit/4fe36f8d6a151536267e3aeace24…
Author: Björn Grüning <bjoern(a)gruenings.eu>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M lib/galaxy/managers/histories.py
M lib/galaxy/model/__init__.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/actions/__init__.py
M lib/galaxy/tools/actions/upload.py
M lib/galaxy/tools/execute.py
M test/unit/tools/test_execution.py
Log Message:
-----------
Merge pull request #1199 from jmchilton/tool_opts_4
Yet More Tool Execution Optimizations
Commit: 3a023f4cae6b9b6b25c1d389b9ba2ad7223cb24a
https://github.com/galaxyproject/galaxy/commit/3a023f4cae6b9b6b25c1d389b9ba…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/tool/tools-form-base.js
M lib/galaxy/managers/workflows.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/toolbox/base.py
M lib/galaxy/workflow/modules.py
M static/maps/mvc/tools/tools-form-base.js.map
M static/scripts/mvc/tools/tools-form-base.js
Log Message:
-----------
Merge pull request #818 from mvdbeek/cross_toolshed_tool_fetching
Look up installed tools from different toolshed(s)
Commit: 371125bc870a29371fba8656d3c93538a50a63ab
https://github.com/galaxyproject/galaxy/commit/371125bc870a29371fba8656d3c9…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-06 (Sun, 06 Dec 2015)
Changed paths:
M lib/galaxy/webapps/galaxy/api/users.py
M templates/ind_share_base.mako
M templates/webapps/galaxy/history/share.mako
Log Message:
-----------
Merge pull request #1111 from erasche/user-search-name
Add search on username/any for API calls to user, use Select2 for sharing workflows/pages/histories
Commit: 8c6d530a661842a56fbb8800856237582701fc56
https://github.com/galaxyproject/galaxy/commit/8c6d530a661842a56fbb88008562…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-07 (Mon, 07 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/tool/tool-form-base.js
M lib/galaxy/managers/histories.py
M lib/galaxy/managers/workflows.py
M lib/galaxy/model/__init__.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/actions/__init__.py
M lib/galaxy/tools/actions/upload.py
M lib/galaxy/tools/execute.py
M lib/galaxy/tools/toolbox/base.py
M lib/galaxy/webapps/galaxy/api/users.py
M lib/galaxy/workflow/modules.py
M static/maps/mvc/tool/tool-form-base.js.map
M static/scripts/mvc/tool/tool-form-base.js
M templates/ind_share_base.mako
M templates/webapps/galaxy/history/share.mako
M test/unit/tools/test_execution.py
Log Message:
-----------
Merge branch 'dev' of git://github.com/galaxyproject/galaxy into run_workflow_form_004
Commit: 48064cc20352d3e38f985769ba5b2eeb66f051a8
https://github.com/galaxyproject/galaxy/commit/48064cc20352d3e38f985769ba5b…
Author: Peter van Heusden <pvh(a)sanbi.ac.za>
Date: 2015-12-07 (Mon, 07 Dec 2015)
Changed paths:
M config/dependency_resolvers_conf.xml.sample
Log Message:
-----------
* Clarify comment in XML
Commit: 01a919ce6a7cc29556e257fd0af46f5071310748
https://github.com/galaxyproject/galaxy/commit/01a919ce6a7cc29556e257fd0af4…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-07 (Mon, 07 Dec 2015)
Changed paths:
M lib/tool_shed/galaxy_install/migrate/check.py
Log Message:
-----------
Merge pull request #1253 from nsoranzo/dev_verify_tools
Tool migration: do not mess with galaxy_config_file, if provided.
Commit: bcf8ddfbd0a966fd3d6fad157f8ca87702e9c61a
https://github.com/galaxyproject/galaxy/commit/bcf8ddfbd0a966fd3d6fad157f8c…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2015-12-07 (Mon, 07 Dec 2015)
Changed paths:
M lib/galaxy/model/tool_shed_install/__init__.py
Log Message:
-----------
Merge branch 'master' into dev
Conflicts:
lib/galaxy/jobs/runners/__init__.py
Commit: e505a4f6123f119577955459cda1846b5f67f0b8
https://github.com/galaxyproject/galaxy/commit/e505a4f6123f119577955459cda1…
Author: Greg Von Kuster <ghv2(a)psu.edu>
Date: 2015-12-07 (Mon, 07 Dec 2015)
Changed paths:
A config/plugins/visualizations/csg/config/csg.xml
A config/plugins/visualizations/csg/static/Detector.js
A config/plugins/visualizations/csg/static/OrbitControls.js
A config/plugins/visualizations/csg/static/PLYLoader.js
A config/plugins/visualizations/csg/static/VTKLoader.js
A config/plugins/visualizations/csg/static/dat.gui.min.js
A config/plugins/visualizations/csg/static/three.min.js
A config/plugins/visualizations/csg/templates/csg.mako
Log Message:
-----------
Add the CSG Viewer visualization plugin
based on conversations here:
https://github.com/galaxyproject/galaxy/issues/1191#issuecomment-162553926
Commit: ef0b6cc459a40227db2e63ee709e9dd5d8fd37c6
https://github.com/galaxyproject/galaxy/commit/ef0b6cc459a40227db2e63ee709e…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-07 (Mon, 07 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/workflow/workflow-manager.js
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M static/maps/mvc/workflow/workflow-manager.js.map
M static/maps/mvc/workflow/workflow-view.js.map
M static/scripts/mvc/workflow/workflow-manager.js
M static/scripts/mvc/workflow/workflow-view.js
Log Message:
-----------
show notifications as Toasts and not like JS alerts (bleh)
Commit: 4a9dad9f14b94df14b52f41466c9e66dbbfb0556
https://github.com/galaxyproject/galaxy/commit/4a9dad9f14b94df14b52f41466c9…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-07 (Mon, 07 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/workflow/workflow-manager.js
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M static/maps/mvc/workflow/workflow-manager.js.map
M static/maps/mvc/workflow/workflow-view.js.map
M static/scripts/mvc/workflow/workflow-manager.js
M static/scripts/mvc/workflow/workflow-view.js
Log Message:
-----------
Merge pull request #12 from martenson/labels_toastr
show notifications as Toasts and not like JS alerts (bleh)
Commit: 485e8ef8f22330bce5a402c5b4bb0182ce5b180c
https://github.com/galaxyproject/galaxy/commit/485e8ef8f22330bce5a402c5b4bb…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-07 (Mon, 07 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/form/form-section.js
M static/maps/mvc/form/form-section.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/form/form-section.js
Log Message:
-----------
Add fallback for missing section and repeat title
Commit: 3924a5a0e3d2c7d787e81fabc4e2908f30ff0168
https://github.com/galaxyproject/galaxy/commit/3924a5a0e3d2c7d787e81fabc4e2…
Author: Mark Iskander <motiontracker(a)gmail.com>
Date: 2015-12-07 (Mon, 07 Dec 2015)
Changed paths:
M templates/webapps/reports/jobs_errors_per_tool.mako
M templates/webapps/reports/jobs_per_month_all.mako
M templates/webapps/reports/jobs_per_month_in_error.mako
M templates/webapps/reports/jobs_per_tool.mako
M templates/webapps/reports/jobs_per_user.mako
M templates/webapps/reports/jobs_specified_month_all.mako
M templates/webapps/reports/jobs_specified_month_in_error.mako
M templates/webapps/reports/jobs_tool_per_month.mako
M templates/webapps/reports/jobs_user_per_month.mako
M templates/webapps/reports/registered_users_per_month.mako
M templates/webapps/reports/requests_user_per_month.mako
M templates/webapps/reports/users_last_access_date.mako
M templates/webapps/reports/users_user_disk_usage.mako
M templates/webapps/reports/workflows_per_month_all.mako
M templates/webapps/reports/workflows_per_user.mako
M templates/webapps/reports/workflows_per_workflow.mako
M templates/webapps/reports/workflows_user_per_month.mako
Log Message:
-----------
Fixed indentation errors
Commit: 3f8950628c3e31d9e2abe0b4f4a360c035133b8e
https://github.com/galaxyproject/galaxy/commit/3f8950628c3e31d9e2abe0b4f4a3…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-08 (Tue, 08 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/workflow/workflow-view-node.js
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M static/maps/mvc/workflow/workflow-view-node.js.map
M static/maps/mvc/workflow/workflow-view.js.map
M static/scripts/mvc/workflow/workflow-view-node.js
M static/scripts/mvc/workflow/workflow-view.js
M templates/webapps/galaxy/workflow/editor_generic_form.mako
Log Message:
-----------
Workflow label UI refinement.
- Escape workflow labels in mako.
- Handle unlabelling steps properly (restore original node name to node and editor form titles).
Commit: 5ff09896f7d4ee5208f2f39ca16a7846690af229
https://github.com/galaxyproject/galaxy/commit/5ff09896f7d4ee5208f2f39ca16a…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-08 (Tue, 08 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/citation/citation-model.js
M static/maps/mvc/citation/citation-model.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/citation/citation-model.js
Log Message:
-----------
UI, Citations: fix require of bibtex parser
Commit: 6ba86d89bc9d2b6b45dddb13d8dc79a4e2c395a0
https://github.com/galaxyproject/galaxy/commit/6ba86d89bc9d2b6b45dddb13d8dc…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-08 (Tue, 08 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/citation/citation-model.js
M static/maps/mvc/citation/citation-model.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/citation/citation-model.js
Log Message:
-----------
UI, Citations: don't create new BibtexParser, remove debugging
Commit: 0e5d42f3d67e5f75dea4abe78909539df3716f1e
https://github.com/galaxyproject/galaxy/commit/0e5d42f3d67e5f75dea4abe78909…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-08 (Tue, 08 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/citation/citation-model.js
M static/maps/mvc/citation/citation-model.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/citation/citation-model.js
Log Message:
-----------
Merge pull request #1261 from carlfeberhard/fix.citations
UI, Citations: fix require of bibtex parser
Commit: 52078baf99ed2aadae4b30f6b71ae00aecba521a
https://github.com/galaxyproject/galaxy/commit/52078baf99ed2aadae4b30f6b71a…
Author: Anthony Bretaudeau <anthony.bretaudeau(a)inria.fr>
Date: 2015-12-08 (Tue, 08 Dec 2015)
Changed paths:
M lib/galaxy/model/custom_types.py
Log Message:
-----------
don't load or overwrite a value with a not-yet-loaded value (i.e. None)
Commit: 7f4c3fcfc88914cb91e325fe95f08c90c034ef3e
https://github.com/galaxyproject/galaxy/commit/7f4c3fcfc88914cb91e325fe95f0…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-08 (Tue, 08 Dec 2015)
Changed paths:
M lib/galaxy/managers/users.py
Log Message:
-----------
Managers, users: properly return a boolean from has_requests
Commit: 38a9aa6a5c3b006867e16877999545e1e0e7ddea
https://github.com/galaxyproject/galaxy/commit/38a9aa6a5c3b006867e168779995…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-08 (Tue, 08 Dec 2015)
Changed paths:
M lib/galaxy/managers/users.py
M test/unit/managers/test_UserManager.py
Log Message:
-----------
Managers, users: update serialized key 'requests' to 'has_requests', update test
Commit: a22c09b11f5a16b4c429cf88ebd74faa433da97c
https://github.com/galaxyproject/galaxy/commit/a22c09b11f5a16b4c429cf88ebd7…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2015-12-08 (Tue, 08 Dec 2015)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/tag_handler.py
M test/docker/base/Dockerfile
M test/tool_shed/functional/test_1460_data_managers.py
Log Message:
-----------
Fix typos.
Commit: f974b0f740d4ed8c44ebafde74908cdea1748a1a
https://github.com/galaxyproject/galaxy/commit/f974b0f740d4ed8c44ebafde7490…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2015-12-08 (Tue, 08 Dec 2015)
Changed paths:
M lib/tool_shed/galaxy_install/install_manager.py
M lib/tool_shed/galaxy_install/repair_repository_manager.py
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/install_environment.py
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/step_handler.py
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/tag_handler.py
M lib/tool_shed/util/tool_dependency_util.py
Log Message:
-----------
Extend the logging of tool dependency status changes.
Also merge handle_tool_dependency_installation_error() in
set_tool_dependency_attributes() and consolidate its use.
Commit: fe1c9dd2931fb8efccb98fb1646c3e1063b0ab52
https://github.com/galaxyproject/galaxy/commit/fe1c9dd2931fb8efccb98fb1646c…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-08 (Tue, 08 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/workflow/workflow-manager.js
M client/galaxy/scripts/mvc/workflow/workflow-node.js
M client/galaxy/scripts/mvc/workflow/workflow-view-node.js
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M lib/galaxy/managers/base.py
M lib/galaxy/managers/workflows.py
M lib/galaxy/web/base/controller.py
M lib/galaxy/webapps/galaxy/api/workflows.py
M lib/galaxy/webapps/galaxy/controllers/workflow.py
M lib/galaxy/workflow/modules.py
M lib/galaxy/workflow/run.py
M static/maps/mvc/workflow/workflow-manager.js.map
M static/maps/mvc/workflow/workflow-node.js.map
M static/maps/mvc/workflow/workflow-view-node.js.map
M static/maps/mvc/workflow/workflow-view.js.map
M static/scripts/mvc/workflow/workflow-manager.js
M static/scripts/mvc/workflow/workflow-node.js
M static/scripts/mvc/workflow/workflow-view-node.js
M static/scripts/mvc/workflow/workflow-view.js
M templates/webapps/galaxy/workflow/editor_generic_form.mako
M test/api/workflows_format_2/converter.py
M test/qunit/tests/workflow_editor_tests.js
M test/unit/workflows/test_modules.py
Log Message:
-----------
Merge pull request #1251 from jmchilton/workflow_labels_2
Workflow Editor UI for Step Labels
Commit: 6d16549a46a330d50eccfa73684e0090a397b3c6
https://github.com/galaxyproject/galaxy/commit/6d16549a46a330d50eccfa73684e…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-08 (Tue, 08 Dec 2015)
Changed paths:
M lib/galaxy/managers/users.py
M test/unit/managers/test_UserManager.py
Log Message:
-----------
Merge pull request #1262 from carlfeberhard/fix.js-app-mako
Managers, users: properly return a boolean from has_requests
Commit: b273e3b0c51c13f7e46ccc2977925d9247033289
https://github.com/galaxyproject/galaxy/commit/b273e3b0c51c13f7e46ccc297792…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2015-12-08 (Tue, 08 Dec 2015)
Changed paths:
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/install_environment.py
Log Message:
-----------
Improve logging during package installation
Commit: 864472870f7e1af14a5807effe1fc5685f16e92f
https://github.com/galaxyproject/galaxy/commit/864472870f7e1af14a5807effe1f…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-08 (Tue, 08 Dec 2015)
Changed paths:
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/install_environment.py
Log Message:
-----------
Merge pull request #1267 from erasche/install-logging
Log command executed during package installation
Commit: a033d798de1c36484a1a16d135860a3b5fb5af33
https://github.com/galaxyproject/galaxy/commit/a033d798de1c36484a1a16d13586…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-08 (Tue, 08 Dec 2015)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/root.py
R templates/webapps/galaxy/history/options.mako
Log Message:
-----------
Remove: history_options and options.mako (history options as a page)
Commit: 2b63427e965837eb29df54e5918cf8f84004f534
https://github.com/galaxyproject/galaxy/commit/2b63427e965837eb29df54e5918c…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-08 (Tue, 08 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/tool/tool-form-composite.js
M lib/galaxy/managers/workflows.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/parameters/dynamic_options.py
M static/maps/mvc/tool/tool-form-composite.js.map
M static/scripts/mvc/tool/tool-form-composite.js
Log Message:
-----------
Handle late validated dataset references
Commit: 7dbbac31b3581d43445a8030e2cba990c90e1b2e
https://github.com/galaxyproject/galaxy/commit/7dbbac31b3581d43445a8030e2cb…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-08 (Tue, 08 Dec 2015)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/root.py
R templates/webapps/galaxy/history/options.mako
Log Message:
-----------
Merge pull request #1271 from carlfeberhard/jettison.history-options
Remove: history_options and options.mako (history options as a page)
Commit: 37931505d4c967d70e495467fd615f9540202e4b
https://github.com/galaxyproject/galaxy/commit/37931505d4c967d70e495467fd61…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-09 (Wed, 09 Dec 2015)
Changed paths:
M lib/galaxy/webapps/tool_shed/model/__init__.py
M lib/tool_shed/util/workflow_util.py
Log Message:
-----------
Fix tool shed tests for recent workflow changes.
Thanks for bug report by @nsoranzo on https://github.com/galaxyproject/galaxy/pull/1263.
Commit: 78427438adcb794af630ebb3b9b77b3628c2c5bb
https://github.com/galaxyproject/galaxy/commit/78427438adcb794af630ebb3b9b7…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-09 (Wed, 09 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/history/copy-dialog.js
M client/galaxy/scripts/mvc/history/options-menu.js
M client/galaxy/scripts/mvc/ui/ui-modal.js
M lib/galaxy/model/__init__.py
M lib/galaxy/webapps/galaxy/controllers/history.py
M static/maps/mvc/history/copy-dialog.js.map
M static/maps/mvc/history/options-menu.js.map
M static/maps/mvc/ui/ui-modal.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/bundled/login.bundled.js
M static/scripts/bundled/login.bundled.js.map
M static/scripts/mvc/history/copy-dialog.js
M static/scripts/mvc/history/options-menu.js
M static/scripts/mvc/ui/ui-modal.js
M test/unit/managers/test_HistoryManager.py
Log Message:
-----------
UI, History: refactor the history copy dialog, use it from the options menu (instead of history/copy), pass ui-modal closing_callback a flag whether it was a cancellation or not
Commit: bd1349eb9b62dfac0b1affbd1a4ea8e1fe109c2c
https://github.com/galaxyproject/galaxy/commit/bd1349eb9b62dfac0b1affbd1a4e…
Author: Nicola Soranzo <nsoranzo(a)tiscali.it>
Date: 2015-12-09 (Wed, 09 Dec 2015)
Changed paths:
M lib/galaxy/webapps/tool_shed/model/__init__.py
M lib/tool_shed/util/workflow_util.py
Log Message:
-----------
Merge pull request #1274 from jmchilton/workflow_fix_3
Fix tool shed tests for recent workflow changes.
Commit: c3e4ae11b06d0e10f1fd5a3c2df0433b90f527b7
https://github.com/galaxyproject/galaxy/commit/c3e4ae11b06d0e10f1fd5a3c2df0…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-09 (Wed, 09 Dec 2015)
Changed paths:
M test/docker/base/run_test_wrapper.sh
Log Message:
-----------
set client_encoding for TS dockerized test db
Commit: e391fa4975800fd1d21e1e7d03183d146728f1c8
https://github.com/galaxyproject/galaxy/commit/e391fa4975800fd1d21e1e7d0318…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-09 (Wed, 09 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/history/copy-dialog.js
M client/galaxy/scripts/mvc/history/options-menu.js
M static/maps/mvc/history/copy-dialog.js.map
M static/maps/mvc/history/options-menu.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/mvc/history/copy-dialog.js
M static/scripts/mvc/history/options-menu.js
M templates/webapps/galaxy/history/display.mako
Log Message:
-----------
UI, History: allow copy dialog to have default of copy-all-datasets passed in as option; Replace import link with copy dialog in published histories
Commit: d41ea8d315be735ab506d2643cf2dcb67e030c9c
https://github.com/galaxyproject/galaxy/commit/d41ea8d315be735ab506d2643cf2…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2015-12-09 (Wed, 09 Dec 2015)
Changed paths:
M test/docker/base/run_test_wrapper.sh
Log Message:
-----------
Merge pull request #1276 from martenson/fix-ts-dbconnection-tag
set client_encoding for TS dockerized test db
Commit: 7187eddd2fdec95093c765b838814435c9f6b92d
https://github.com/galaxyproject/galaxy/commit/7187eddd2fdec95093c765b83881…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-09 (Wed, 09 Dec 2015)
Changed paths:
M templates/display_base.mako
M templates/webapps/galaxy/visualization/display.mako
M templates/webapps/galaxy/visualization/display_in_frame.mako
Log Message:
-----------
UI, published items: fix css bleeding of trackster.css into other published item displays
Commit: f0fc8d6d4cc59afaacccb8a7ae036b15f5b7f681
https://github.com/galaxyproject/galaxy/commit/f0fc8d6d4cc59afaacccb8a7ae03…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-09 (Wed, 09 Dec 2015)
Changed paths:
M run_tests.sh
Log Message:
-----------
update used galaxy/testing-base to 15.10.3
Commit: c39544807565d4e345963d1d280deb28b85d281a
https://github.com/galaxyproject/galaxy/commit/c39544807565d4e345963d1d280d…
Author: Nicola Soranzo <nsoranzo(a)tiscali.it>
Date: 2015-12-09 (Wed, 09 Dec 2015)
Changed paths:
M run_tests.sh
Log Message:
-----------
Merge pull request #1277 from martenson/update-docker-image-v
update used galaxy/testing-base to 15.10.3
Commit: d72dd3735c0dfd652fb45a117fe1942f10ff726d
https://github.com/galaxyproject/galaxy/commit/d72dd3735c0dfd652fb45a117fe1…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-09 (Wed, 09 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/base-mvc.js
M client/galaxy/scripts/polyfills.js
M static/maps/mvc/base-mvc.js.map
M static/maps/polyfills.js.map
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/base-mvc.js
M static/scripts/polyfills.js
Log Message:
-----------
Client, polyfills: check for sessionStorage using a more cross-browser (apparently) way
Commit: 183c3c11b60aa5a36747dbe7b0ac069dc3bac6fc
https://github.com/galaxyproject/galaxy/commit/183c3c11b60aa5a36747dbe7b0ac…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-09 (Wed, 09 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/base-mvc.js
M client/galaxy/scripts/polyfills.js
M static/maps/mvc/base-mvc.js.map
M static/maps/polyfills.js.map
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/base-mvc.js
M static/scripts/polyfills.js
Log Message:
-----------
Merge pull request #1279 from carlfeberhard/fix.casper
Client, polyfills: check for sessionStorage using a more cross-browse…
Commit: 133e5f2e24eed9650a0862ced42092d35f8a6566
https://github.com/galaxyproject/galaxy/commit/133e5f2e24eed9650a0862ced420…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-10 (Thu, 10 Dec 2015)
Changed paths:
M test/api/test_tools.py
M test/api/test_workflows.py
M test/base/interactor.py
Log Message:
-----------
Various small API testing fixes/improvements.
Commit: 09a68adb1e2a837f4ae01ca9ec25b4d6d0fab446
https://github.com/galaxyproject/galaxy/commit/09a68adb1e2a837f4ae01ca9ec25…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-10 (Thu, 10 Dec 2015)
Changed paths:
M test/api/test_workflows.py
Log Message:
-----------
Add another API test verifying validation of workflow substitions.
A little different because it targets a different tool, validation, and is inside a repeat.
Commit: 941109dda860325938960b93f66e50d314b67e4a
https://github.com/galaxyproject/galaxy/commit/941109dda860325938960b93f66e…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-09 (Wed, 09 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/history/copy-dialog.js
M client/galaxy/scripts/mvc/history/options-menu.js
M static/maps/mvc/history/copy-dialog.js.map
M static/maps/mvc/history/options-menu.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/bundled/login.bundled.js
M static/scripts/bundled/login.bundled.js.map
M static/scripts/mvc/history/copy-dialog.js
M static/scripts/mvc/history/options-menu.js
M templates/grid_base.mako
M templates/webapps/galaxy/history/display.mako
Log Message:
-----------
UI, History: use copy dialog as import dialog in published history pages, refactor copy-dialog
Commit: 1959288637bf8c4f11da70df5cd5558c1bc1099a
https://github.com/galaxyproject/galaxy/commit/1959288637bf8c4f11da70df5cd5…
Author: Marius van den Beek <m.vandenbeek(a)gmail.com>
Date: 2015-12-10 (Thu, 10 Dec 2015)
Changed paths:
M lib/galaxy/managers/workflows.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/workflow/modules.py
Log Message:
-----------
Include link to toolshed repository, and make sure upgrade message is not overwritten by tool_version changes.
Commit: 928ff581efa3ace63a57e97db80e7a9c21c09841
https://github.com/galaxyproject/galaxy/commit/928ff581efa3ace63a57e97db80e…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-10 (Thu, 10 Dec 2015)
Changed paths:
M test/base/interactor.py
Log Message:
-----------
Fix typo spotted by @nsoranzo.
Commit: c143748e62e976fa3a43a721ed49bdbdc78ea980
https://github.com/galaxyproject/galaxy/commit/c143748e62e976fa3a43a721ed49…
Author: Marius van den Beek <m.vandenbeek(a)gmail.com>
Date: 2015-12-10 (Thu, 10 Dec 2015)
Changed paths:
M lib/galaxy/workflow/modules.py
Log Message:
-----------
Better formatting of workflow warning message.
Commit: 80bd59dd90722afb837c01a26b78eebe04dd277b
https://github.com/galaxyproject/galaxy/commit/80bd59dd90722afb837c01a26b78…
Author: Greg Von Kuster <ghv2(a)psu.edu>
Date: 2015-12-10 (Thu, 10 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/base-mvc.js
M client/galaxy/scripts/mvc/citation/citation-model.js
M client/galaxy/scripts/mvc/workflow/workflow-manager.js
M client/galaxy/scripts/mvc/workflow/workflow-node.js
M client/galaxy/scripts/mvc/workflow/workflow-view-node.js
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M client/galaxy/scripts/polyfills.js
M lib/galaxy/managers/base.py
M lib/galaxy/managers/users.py
M lib/galaxy/managers/workflows.py
M lib/galaxy/model/tool_shed_install/__init__.py
M lib/galaxy/web/base/controller.py
M lib/galaxy/webapps/galaxy/api/workflows.py
M lib/galaxy/webapps/galaxy/controllers/root.py
M lib/galaxy/webapps/galaxy/controllers/workflow.py
M lib/galaxy/webapps/tool_shed/model/__init__.py
M lib/galaxy/workflow/modules.py
M lib/galaxy/workflow/run.py
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/install_environment.py
M lib/tool_shed/util/workflow_util.py
M run_tests.sh
M static/maps/mvc/base-mvc.js.map
M static/maps/mvc/citation/citation-model.js.map
M static/maps/mvc/workflow/workflow-manager.js.map
M static/maps/mvc/workflow/workflow-node.js.map
M static/maps/mvc/workflow/workflow-view-node.js.map
M static/maps/mvc/workflow/workflow-view.js.map
M static/maps/polyfills.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/base-mvc.js
M static/scripts/mvc/citation/citation-model.js
M static/scripts/mvc/workflow/workflow-manager.js
M static/scripts/mvc/workflow/workflow-node.js
M static/scripts/mvc/workflow/workflow-view-node.js
M static/scripts/mvc/workflow/workflow-view.js
M static/scripts/polyfills.js
R templates/webapps/galaxy/history/options.mako
M templates/webapps/galaxy/workflow/editor_generic_form.mako
M test/api/workflows_format_2/converter.py
M test/docker/base/run_test_wrapper.sh
M test/qunit/tests/workflow_editor_tests.js
M test/unit/managers/test_UserManager.py
M test/unit/workflows/test_modules.py
Log Message:
-----------
Merge branch 'dev' of https://github.com/galaxyproject/galaxy into dev
Commit: cd61cdc51b387d6cfb7905307c669e17111ab96d
https://github.com/galaxyproject/galaxy/commit/cd61cdc51b387d6cfb7905307c66…
Author: Marius van den Beek <m.vandenbeek(a)gmail.com>
Date: 2015-12-10 (Thu, 10 Dec 2015)
Changed paths:
M lib/galaxy/workflow/modules.py
Log Message:
-----------
Add back tool id to pass unit tests.
Commit: ce6cd03f6c7f020a8127025c49224f1bb920bc18
https://github.com/galaxyproject/galaxy/commit/ce6cd03f6c7f020a8127025c4922…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-10 (Thu, 10 Dec 2015)
Changed paths:
A .ci/check_controller.sh
A .ci/check_mako.sh
M tox.ini
Log Message:
-----------
Enforce metrics related to moving toward modern client infrastructure.
Having a CI enforced blacklist and then a whitelist of files failing to meet style guidelines (as well as expanding list of rules enforced) may have helped create incentive to rework Galaxy toward a more compliant and uniform Python styling.
We briefly discussed the possibility of doing this with other team code base objectives on a conference call - in particular to help the transition toward replacing all of the web controllers with API controllers and eliminating the use of Python mako files for rendering web content and replacing it with client side templates.
To do this I have created two rough metrics - the number of lines of web controller code in the Galaxy app and the number of mako files in the templates directory. The hope is that people feel ... compelled to lower these numbers. While these metrics are admittedly rough, they do also encourage de-duplication of mako templates and transition of API code into managers (in addition to elimination of functions) both of these secondary incentives are also good things and should be project objectives.
Commit: 253ca7ec4940188d11157448d73be09e762e65f8
https://github.com/galaxyproject/galaxy/commit/253ca7ec4940188d11157448d73b…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-10 (Thu, 10 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/history/copy-dialog.js
M client/galaxy/scripts/mvc/history/options-menu.js
M client/galaxy/scripts/mvc/ui/popup-menu.js
M static/maps/mvc/history/copy-dialog.js.map
M static/maps/mvc/history/options-menu.js.map
M static/maps/mvc/ui/popup-menu.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/bundled/login.bundled.js
M static/scripts/bundled/login.bundled.js.map
M static/scripts/mvc/history/copy-dialog.js
M static/scripts/mvc/ui/popup-menu.js
M templates/webapps/galaxy/history/grid.mako
Log Message:
-----------
UI, History: insert/use copy dialog in the 'Saved Histories' grid
Commit: 636e9900ba5e82c37a26fee84f56872c9413bd1b
https://github.com/galaxyproject/galaxy/commit/636e9900ba5e82c37a26fee84f56…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-10 (Thu, 10 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/tool/tool-form-composite.js
M static/maps/mvc/tool/tool-form-composite.js.map
M static/scripts/mvc/tool/tool-form-composite.js
Log Message:
-----------
Improve handling of unspecified workflow editor values
Commit: 09cb673a9b13f6f9faae21b48c317e485afb8eb1
https://github.com/galaxyproject/galaxy/commit/09cb673a9b13f6f9faae21b48c31…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-10 (Thu, 10 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/history/copy-dialog.js
M lib/galaxy/webapps/galaxy/controllers/history.py
M static/maps/mvc/history/copy-dialog.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/bundled/login.bundled.js
M static/scripts/bundled/login.bundled.js.map
M static/scripts/mvc/history/copy-dialog.js
M templates/webapps/galaxy/history/grid.mako
A templates/webapps/galaxy/history/grid_js.mako
A templates/webapps/galaxy/history/shared_grid.mako
Log Message:
-----------
UI, History: use copy dialog for shared history popupmenus, use custom templates for both saved and shared history lists/grids. refactor custom grid code for insertion of copy dialog
Commit: 9a4c8343701c676ccf996cbbaa864f12135bac5b
https://github.com/galaxyproject/galaxy/commit/9a4c8343701c676ccf996cbbaa86…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-10 (Thu, 10 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/ui/ui-drilldown.js
M client/galaxy/style/less/ui.less
M static/maps/mvc/ui/ui-drilldown.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/ui/ui-drilldown.js
M static/style/blue/base.css
Log Message:
-----------
Use fa icons for drill down expansion
Commit: cb23e010d7750b533be7690e72c92500ddc8e2f1
https://github.com/galaxyproject/galaxy/commit/cb23e010d7750b533be7690e72c9…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-10 (Thu, 10 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/history/copy-dialog.js
M static/maps/mvc/history/copy-dialog.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/history/copy-dialog.js
M templates/webapps/galaxy/history/display.mako
M templates/webapps/galaxy/history/view.mako
Log Message:
-----------
UI, History: use copy dialog in history/view for import, minor fixes
Commit: 1ebc0ea9e719bf7557f0e190a7dd4883629257f5
https://github.com/galaxyproject/galaxy/commit/1ebc0ea9e719bf7557f0e190a7dd…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-10 (Thu, 10 Dec 2015)
Changed paths:
M client/galaxy/scripts/apps/analysis.js
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
Log Message:
-----------
UI, Quotameter: correctly update the quotameter for anon users
Commit: bce8140bd9f9c3e069c83f765ae892d0fd1656b7
https://github.com/galaxyproject/galaxy/commit/bce8140bd9f9c3e069c83f765ae8…
Author: Nicola Soranzo <nsoranzo(a)tiscali.it>
Date: 2015-12-10 (Thu, 10 Dec 2015)
Changed paths:
M test/api/test_tools.py
M test/api/test_workflows.py
M test/base/interactor.py
Log Message:
-----------
Merge pull request #1285 from jmchilton/test_improvemnts_1
Small API Test Improvements
Commit: 25f420fc8f47865e2cee2da15dc283e2cf130b91
https://github.com/galaxyproject/galaxy/commit/25f420fc8f47865e2cee2da15dc2…
Author: Aysam Guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-10 (Thu, 10 Dec 2015)
Changed paths:
M client/galaxy/scripts/apps/analysis.js
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
Log Message:
-----------
Merge pull request #1289 from carlfeberhard/fix.anon-user-quotameter
UI, Quotameter: correctly update the quotameter for anon users
Commit: d72b913c1d25bf9e2ee2c9e7320bff4f52b366e3
https://github.com/galaxyproject/galaxy/commit/d72b913c1d25bf9e2ee2c9e7320b…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-10 (Thu, 10 Dec 2015)
Changed paths:
M client/galaxy/scripts/utils/ajax-queue.js
M static/maps/utils/ajax-queue.js.map
M static/scripts/utils/ajax-queue.js
M templates/webapps/galaxy/history/shared_grid.mako
Log Message:
-----------
UI, History: hack multiple copy by API into the 'histories shared with me' mako grid
Commit: 7a3aa044fbf968c120832402091cb3b1d70afd7b
https://github.com/galaxyproject/galaxy/commit/7a3aa044fbf968c120832402091c…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-10 (Thu, 10 Dec 2015)
Changed paths:
A Makefile
A client/.docker-build.sh
A client/Dockerfile
M doc/source/dev/faq.rst
Log Message:
-----------
Merge pull request #1238 from erasche/client-builder
Ease the grunt uglify process
Commit: b455157bd6f3f23ce2de81d5145b6268e4da77f3
https://github.com/galaxyproject/galaxy/commit/b455157bd6f3f23ce2de81d5145b…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-10 (Thu, 10 Dec 2015)
Changed paths:
M lib/galaxy/datatypes/text.py
Log Message:
-----------
Merge pull request #1198 from blankenberg/dt-biom
BIOM1 Datatype enhancements
Commit: f8d95abf061608e2dc544e56fc5b83ad3d54d1bd
https://github.com/galaxyproject/galaxy/commit/f8d95abf061608e2dc544e56fc5b…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-10 (Thu, 10 Dec 2015)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/tool_shed/galaxy_install/install_manager.py
M lib/tool_shed/galaxy_install/repair_repository_manager.py
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/install_environment.py
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/step_handler.py
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/tag_handler.py
M lib/tool_shed/util/tool_dependency_util.py
M test/docker/base/Dockerfile
M test/tool_shed/functional/test_1460_data_managers.py
Log Message:
-----------
Merge pull request #1263 from nsoranzo/dev_tool_shed_fixes
Extend the logging of tool dependency status changes.
Commit: e40fbe5374f906139f8be7a3ceb001f049a6b244
https://github.com/galaxyproject/galaxy/commit/e40fbe5374f906139f8be7a3ceb0…
Author: Peter van Heusden <pvh(a)sanbi.ac.za>
Date: 2015-12-11 (Fri, 11 Dec 2015)
Changed paths:
M config/dependency_resolvers_conf.xml.sample
A doc/source/admin/dependency_resolvers.rst
M doc/source/admin/index.rst
Log Message:
-----------
* Add comment about base_path in sample config
* Add documentation on dependency resolvers
Commit: 952f3f9b7a04a6e7d3185da76d84dea0fa9bca8d
https://github.com/galaxyproject/galaxy/commit/952f3f9b7a04a6e7d3185da76d84…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-11 (Fri, 11 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/ui/ui-select-default.js
M client/galaxy/style/less/ui.less
M static/maps/mvc/ui/ui-select-default.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/ui/ui-select-default.js
M static/style/blue/base.css
Log Message:
-----------
Open select2 dropdown on click
Commit: bca004eff8607e347d440ce5fc5d086d7acb45f9
https://github.com/galaxyproject/galaxy/commit/bca004eff8607e347d440ce5fc5d…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-11 (Fri, 11 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/ui/ui-select-default.js
M client/galaxy/style/less/ui.less
M static/maps/mvc/ui/ui-select-default.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/ui/ui-select-default.js
M static/style/blue/base.css
Log Message:
-----------
Merge pull request #1298 from guerler/fix_select2_open_000
Open select2 drop down on caret click
Commit: 1aafc489356d4ad62a00b82f1b0679d66f037be4
https://github.com/galaxyproject/galaxy/commit/1aafc489356d4ad62a00b82f1b06…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-11 (Fri, 11 Dec 2015)
Changed paths:
M config/reports.ini.sample
M config/tool_shed.ini.sample
M lib/galaxy/webapps/reports/config.py
M lib/galaxy/webapps/tool_shed/config.py
Log Message:
-----------
Dead sendmail_path vars, this is unused in favor of smtp (as of a long time ago)
Commit: 9e512f52465c158855c2a0750d8a7d794316940e
https://github.com/galaxyproject/galaxy/commit/9e512f52465c158855c2a0750d8a…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-11 (Fri, 11 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/history/copy-dialog.js
M lib/galaxy/model/__init__.py
M static/maps/mvc/history/copy-dialog.js.map
M static/maps/mvc/tool/tools-form-base.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/history/copy-dialog.js
M static/scripts/mvc/tool/tools-form-base.js
M static/scripts/utils/ajax-queue.js
M templates/webapps/galaxy/history/embed.mako
Log Message:
-----------
UI, History: use copy dialog in the embedded histories in Pages, add autoClose option to copy dialog
Commit: c0b349306f17ed924a5673fab465d105d2cfdaf2
https://github.com/galaxyproject/galaxy/commit/c0b349306f17ed924a5673fab465…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-11 (Fri, 11 Dec 2015)
Changed paths:
M config/tool_shed.ini.sample
M lib/galaxy/webapps/tool_shed/config.py
Log Message:
-----------
Add smtp_ssl option to toolshed mailing capabilities, update .sample to include the smtp auth/ssl.
Commit: 324af9caeda230bfe35ce79cf3e6f84a3ca27ee5
https://github.com/galaxyproject/galaxy/commit/324af9caeda230bfe35ce79cf3e6…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-11 (Fri, 11 Dec 2015)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/history.py
R templates/webapps/galaxy/history/copy.mako
M templates/webapps/galaxy/history/embed.mako
Log Message:
-----------
UI, History: remove copy and imp methods from controllers/history.py, remove history copy template
Commit: 27e43e8907a5fb529cdf36175a6ffe04de762379
https://github.com/galaxyproject/galaxy/commit/27e43e8907a5fb529cdf36175a6f…
Author: Anthony Bretaudeau <anthony.bretaudeau(a)inria.fr>
Date: 2015-12-11 (Fri, 11 Dec 2015)
Changed paths:
M lib/galaxy/datatypes/metadata.py
Log Message:
-----------
Load deferred column before pickling dataset instance
Commit: 32be886f0f51103a648003997c7d06cd12ba08d9
https://github.com/galaxyproject/galaxy/commit/32be886f0f51103a648003997c7d…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-11 (Fri, 11 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/history/copy-dialog.js
M lib/galaxy/model/__init__.py
M lib/galaxy/webapps/galaxy/api/histories.py
M lib/galaxy/webapps/galaxy/controllers/history.py
M static/maps/mvc/history/copy-dialog.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/history/copy-dialog.js
Log Message:
-----------
API, Histories: allow api/histories/create to be used as anon user; UI, Histories: minor fixes
Commit: 584d886b5ee68257921dff24c4dbe0a2dbb0c00c
https://github.com/galaxyproject/galaxy/commit/584d886b5ee68257921dff24c4db…
Author: Peter van Heusden <pvh(a)sanbi.ac.za>
Date: 2015-12-11 (Fri, 11 Dec 2015)
Changed paths:
M doc/source/admin/dependency_resolvers.rst
M lib/galaxy/tools/deps/__init__.py
M lib/galaxy/tools/deps/resolvers/modules.py
Log Message:
-----------
* Mention modulepath attribute in dependency resolver docs
* Use modulepath in both environment modules resolvers
* Export MODULEPATH in generated shell command
* Add logging for operation of dependency resolvers
Commit: 035f1b5d663841fa61d32ba79e1b43553dab4fab
https://github.com/galaxyproject/galaxy/commit/035f1b5d663841fa61d32ba79e1b…
Author: Peter van Heusden <pvh(a)sanbi.ac.za>
Date: 2015-12-11 (Fri, 11 Dec 2015)
Changed paths:
M doc/source/admin/dependency_resolvers.rst
M lib/galaxy/tools/deps/__init__.py
M lib/galaxy/tools/deps/resolvers/modules.py
M test/unit/tools/test_tool_deps.py
Log Message:
-----------
* Incorporate documentation fixes from nsoranzo
* Replace {} and .format with %s and % to preserve Python 2.6 compatibility
* Add a modulepath= paranter to the fake resolver (Bunch object) used to test the modules dependency resolver
Commit: 84f3b72e1ad829e6f2f46049ff4af42f27429a5b
https://github.com/galaxyproject/galaxy/commit/84f3b72e1ad829e6f2f46049ff4a…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-11 (Fri, 11 Dec 2015)
Changed paths:
A Makefile
A client/.docker-build.sh
A client/Dockerfile
M client/galaxy/scripts/apps/analysis.js
M client/galaxy/scripts/mvc/base-mvc.js
M client/galaxy/scripts/mvc/citation/citation-model.js
M client/galaxy/scripts/mvc/ui/ui-select-default.js
M client/galaxy/scripts/mvc/workflow/workflow-manager.js
M client/galaxy/scripts/mvc/workflow/workflow-node.js
M client/galaxy/scripts/mvc/workflow/workflow-view-node.js
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M client/galaxy/scripts/polyfills.js
M client/galaxy/style/less/ui.less
M doc/source/dev/faq.rst
M lib/galaxy/datatypes/text.py
M lib/galaxy/managers/base.py
M lib/galaxy/managers/users.py
M lib/galaxy/managers/workflows.py
M lib/galaxy/web/base/controller.py
M lib/galaxy/webapps/galaxy/api/workflows.py
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/galaxy/controllers/root.py
M lib/galaxy/webapps/galaxy/controllers/workflow.py
M lib/galaxy/webapps/tool_shed/model/__init__.py
M lib/galaxy/workflow/modules.py
M lib/galaxy/workflow/run.py
M lib/tool_shed/galaxy_install/install_manager.py
M lib/tool_shed/galaxy_install/repair_repository_manager.py
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/install_environment.py
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/step_handler.py
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/tag_handler.py
M lib/tool_shed/util/tool_dependency_util.py
M lib/tool_shed/util/workflow_util.py
M run_tests.sh
M static/maps/mvc/base-mvc.js.map
M static/maps/mvc/citation/citation-model.js.map
M static/maps/mvc/ui/ui-select-default.js.map
M static/maps/mvc/workflow/workflow-manager.js.map
M static/maps/mvc/workflow/workflow-node.js.map
M static/maps/mvc/workflow/workflow-view-node.js.map
M static/maps/mvc/workflow/workflow-view.js.map
M static/maps/polyfills.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/base-mvc.js
M static/scripts/mvc/citation/citation-model.js
M static/scripts/mvc/ui/ui-select-default.js
M static/scripts/mvc/workflow/workflow-manager.js
M static/scripts/mvc/workflow/workflow-node.js
M static/scripts/mvc/workflow/workflow-view-node.js
M static/scripts/mvc/workflow/workflow-view.js
M static/scripts/polyfills.js
M static/style/blue/base.css
R templates/webapps/galaxy/history/options.mako
M templates/webapps/galaxy/workflow/editor_generic_form.mako
M test/api/test_tools.py
M test/api/test_workflows.py
M test/api/workflows_format_2/converter.py
M test/base/interactor.py
M test/casperjs/api-anon-history-permission-tests.js
M test/casperjs/api-anon-history-tests.js
M test/docker/base/Dockerfile
M test/docker/base/run_test_wrapper.sh
M test/qunit/tests/workflow_editor_tests.js
M test/tool_shed/functional/test_1460_data_managers.py
M test/unit/managers/test_UserManager.py
M test/unit/workflows/test_modules.py
Log Message:
-----------
(merge dev); Testing, histories: update tests to reflect allowing anon to create/copy histories via the API
Commit: 2b90ca9b0e23715bd7a03614fa989bcf540f73e9
https://github.com/galaxyproject/galaxy/commit/2b90ca9b0e23715bd7a03614fa98…
Author: Peter van Heusden <pvh(a)sanbi.ac.za>
Date: 2015-12-11 (Fri, 11 Dec 2015)
Changed paths:
M lib/galaxy/tools/deps/__init__.py
Log Message:
-----------
* Replaced incorrect %b with %s
Commit: 73b6fb23db300501c9124c61c90d73d2c28dc7a4
https://github.com/galaxyproject/galaxy/commit/73b6fb23db300501c9124c61c90d…
Author: Peter van Heusden <pvh(a)sanbi.ac.za>
Date: 2015-12-11 (Fri, 11 Dec 2015)
Changed paths:
M doc/source/admin/dependency_resolvers.rst
Log Message:
-----------
* Replaced all references to "version number" with "version string"
Commit: 760c2b56bee664f2f874e2cc26d2129858da1bb1
https://github.com/galaxyproject/galaxy/commit/760c2b56bee664f2f874e2cc26d2…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-11 (Fri, 11 Dec 2015)
Changed paths:
M lib/galaxy/tools/parameters/basic.py
Log Message:
-----------
Properly show and label hidden datasets on rerurn
Commit: 6580d5129386ab5b8634583c5378dfc340ed2800
https://github.com/galaxyproject/galaxy/commit/6580d5129386ab5b8634583c5378…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-11 (Fri, 11 Dec 2015)
Changed paths:
M config/dependency_resolvers_conf.xml.sample
A doc/source/admin/dependency_resolvers.rst
M doc/source/admin/index.rst
M lib/galaxy/tools/deps/__init__.py
M lib/galaxy/tools/deps/resolvers/modules.py
M test/unit/tools/test_tool_deps.py
Log Message:
-----------
Merge pull request #1296 from pvanheus/env-modules-resolve
Documentation for dependency resolvers
Commit: eb4b8e716d26897e58c78c08e9a2d62a770604f5
https://github.com/galaxyproject/galaxy/commit/eb4b8e716d26897e58c78c08e9a2…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-11 (Fri, 11 Dec 2015)
Changed paths:
M config/reports.ini.sample
M config/tool_shed.ini.sample
M lib/galaxy/webapps/reports/config.py
M lib/galaxy/webapps/tool_shed/config.py
Log Message:
-----------
Merge pull request #1299 from dannon/mail_fixes
Minor mail config cleanup
Commit: 66146ad5d0e17e35b6eee50699b0261422835000
https://github.com/galaxyproject/galaxy/commit/66146ad5d0e17e35b6eee50699b0…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2015-12-11 (Fri, 11 Dec 2015)
Changed paths:
M lib/galaxy/tools/parameters/basic.py
Log Message:
-----------
Merge pull request #1305 from guerler/fix_workflow_rerun_001
[15.10] Properly show and label hidden datasets on workflow reruns
Commit: a7e60eae2c2721e7d4377112b7aaceb8424fd3da
https://github.com/galaxyproject/galaxy/commit/a7e60eae2c2721e7d4377112b7aa…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2015-12-11 (Fri, 11 Dec 2015)
Changed paths:
A .ci/check_controller.sh
A .ci/check_mako.sh
M tox.ini
Log Message:
-----------
Merge pull request #1292 from jmchilton/client_incentives
Enforce metrics related to moving toward modern client infrastructure.
Commit: 989f961fb6351d1f63374b4fc40429c1e897b1e2
https://github.com/galaxyproject/galaxy/commit/989f961fb6351d1f63374b4fc404…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-11 (Fri, 11 Dec 2015)
Changed paths:
M lib/galaxy/tools/__init__.py
Log Message:
-----------
Merge pull request #1218 from blankenberg/rerunfix_15.10
[15.10] Fix for Section and conditional upgrade messages.
Commit: 65bd907e08168daecabd984465b735f50ff0da56
https://github.com/galaxyproject/galaxy/commit/65bd907e08168daecabd984465b7…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-12 (Sat, 12 Dec 2015)
Changed paths:
M lib/galaxy/app.py
M lib/galaxy/tools/imp_exp/__init__.py
A lib/galaxy/tools/special_tools.py
Log Message:
-----------
Refactor imp_exp toolbox toward more generic entry point.
Commit: 0180c0525d5f545f67d99c79677a94382ae73ff1
https://github.com/galaxyproject/galaxy/commit/0180c0525d5f545f67d99c79677a…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-12 (Sat, 12 Dec 2015)
Changed paths:
M lib/galaxy/jobs/command_factory.py
Log Message:
-----------
Improve error log warning for tools with empty commands.
Commit: a208961cd3145f90a04e58ac1bb23ed2d91365a4
https://github.com/galaxyproject/galaxy/commit/a208961cd3145f90a04e58ac1bb2…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-12 (Sat, 12 Dec 2015)
Changed paths:
M lib/galaxy/tools/actions/__init__.py
Log Message:
-----------
Refactor tool actions for reuse of pieces in downstream actions.
Commit: 8af5671953df12e5207a8b3e5e70c742cea9f158
https://github.com/galaxyproject/galaxy/commit/8af5671953df12e5207a8b3e5e70…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-13 (Sun, 13 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/workflow/workflow-terminals.js
M lib/galaxy/dataset_collections/type_description.py
M lib/galaxy/tools/parameters/basic.py
M lib/galaxy/tools/parameters/history_query.py
M lib/galaxy/workflow/modules.py
M static/maps/mvc/workflow/workflow-terminals.js.map
M static/scripts/mvc/workflow/workflow-terminals.js
M test/qunit/tests/workflow_editor_tests.js
M test/unit/tools/test_parameter_parsing.py
M test/unit/workflows/test_modules.py
Log Message:
-----------
Allow input collections to specify mutiple collection types.
Parallelling format specifier which can take multiple formats.
Commit: b633c949c875788d5bba9ae0126882b3439d7f7e
https://github.com/galaxyproject/galaxy/commit/b633c949c875788d5bba9ae01268…
Author: Marius van den Beek <m.vandenbeek(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M lib/galaxy/workflow/modules.py
Log Message:
-----------
Mention tool id as hover text on version changes.
Commit: 812343d8ccc10a77bab58287178cceb64ad9cb39
https://github.com/galaxyproject/galaxy/commit/812343d8ccc10a77bab58287178c…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M lib/galaxy/managers/workflows.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/workflow/modules.py
Log Message:
-----------
Merge pull request #1286 from mvdbeek/cross_toolshed_tool_fetching
Include link to old and new toolshed repository, and make sure upgrade message is…
Commit: f14b38124bc08c228bfce30f27d1815d7dd27c0b
https://github.com/galaxyproject/galaxy/commit/f14b38124bc08c228bfce30f27d1…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/collection/list-of-pairs-collection-creator.js
M static/maps/mvc/collection/list-of-pairs-collection-creator.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/collection/list-of-pairs-collection-creator.js
Log Message:
-----------
UI, list of pairs collection creator: prevent vice-versa pair duplication by removing paired dataset from both temp lists during auto pairing
Commit: 58911edbfb5aa6e858addd9452e90d6ed389b0d2
https://github.com/galaxyproject/galaxy/commit/58911edbfb5aa6e858addd9452e9…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
R test/casperjs/api-workflow-tests.js
M test/casperjs/casperjs_runner.py
Log Message:
-----------
Remove worklfow casperjs API test.
It has good and more updated coverage in the Python API testing framework.
Commit: c1ce8ef0ce074271c9ba7a9a1718258482cca69f
https://github.com/galaxyproject/galaxy/commit/c1ce8ef0ce074271c9ba7a9a1718…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/collection/list-of-pairs-collection-creator.js
M static/maps/mvc/collection/list-of-pairs-collection-creator.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/collection/list-of-pairs-collection-creator.js
Log Message:
-----------
UI, list of pairs collection creator: improve auto-pair error message to be more beginner friendly(?)
Commit: dd429b640ffeb656a1fd61b49e88db890e7743cf
https://github.com/galaxyproject/galaxy/commit/dd429b640ffeb656a1fd61b49e88…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/collection/list-of-pairs-collection-creator.js
M static/maps/mvc/collection/list-of-pairs-collection-creator.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/collection/list-of-pairs-collection-creator.js
Log Message:
-----------
Merge pull request #1310 from carlfeberhard/fix.lop-creator
UI, list of pairs creator: properly remove datasets from the filtered lists when pairing
Commit: 886f6d2d707a9b4e2a80b0aaa89157e1137415ad
https://github.com/galaxyproject/galaxy/commit/886f6d2d707a9b4e2a80b0aaa891…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/execute.py
M test/api/test_workflows.py
Log Message:
-----------
Improved validation of tools during workflow execution.
Do a more complete validation of everything after workflow parameters have been replaced and inputs connected up.
Attempt 2 at the idea in https://github.com/galaxyproject/galaxy/pull/1284.
Commit: cdd9ca16f0a38ffab5fe54d559fc4bb4e4a7a37d
https://github.com/galaxyproject/galaxy/commit/cdd9ca16f0a38ffab5fe54d559fc…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/execute.py
M lib/galaxy/workflow/modules.py
M lib/galaxy/workflow/run.py
Log Message:
-----------
Don't silently swallow job creation problems when running workflows.
Commit: ce787adff93dafb950341243f3951221cadfc813
https://github.com/galaxyproject/galaxy/commit/ce787adff93dafb950341243f395…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M lib/galaxy/tools/parameters/basic.py
Log Message:
-----------
Fix bug related to collection reductions state.
Commit: c61a5529b4c788580d2c3615c7dab2386a9b8e4e
https://github.com/galaxyproject/galaxy/commit/c61a5529b4c788580d2c3615c7da…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
A .ci/check_controller.sh
A .ci/check_mako.sh
A Makefile
A client/.docker-build.sh
A client/Dockerfile
M client/galaxy/scripts/apps/analysis.js
M client/galaxy/scripts/mvc/base-mvc.js
M client/galaxy/scripts/mvc/citation/citation-model.js
M client/galaxy/scripts/mvc/collection/list-of-pairs-collection-creator.js
M client/galaxy/scripts/mvc/ui/ui-select-default.js
M client/galaxy/scripts/mvc/workflow/workflow-manager.js
M client/galaxy/scripts/mvc/workflow/workflow-node.js
M client/galaxy/scripts/mvc/workflow/workflow-view-node.js
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M client/galaxy/scripts/polyfills.js
M client/galaxy/style/less/ui.less
M config/dependency_resolvers_conf.xml.sample
M config/reports.ini.sample
M config/tool_shed.ini.sample
A doc/source/admin/dependency_resolvers.rst
M doc/source/admin/index.rst
M doc/source/dev/faq.rst
M lib/galaxy/datatypes/text.py
M lib/galaxy/managers/base.py
M lib/galaxy/managers/users.py
M lib/galaxy/managers/workflows.py
M lib/galaxy/model/tool_shed_install/__init__.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/deps/__init__.py
M lib/galaxy/tools/deps/resolvers/modules.py
M lib/galaxy/web/base/controller.py
M lib/galaxy/webapps/galaxy/api/workflows.py
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/galaxy/controllers/root.py
M lib/galaxy/webapps/galaxy/controllers/workflow.py
M lib/galaxy/webapps/reports/config.py
M lib/galaxy/webapps/tool_shed/config.py
M lib/galaxy/webapps/tool_shed/model/__init__.py
M lib/galaxy/workflow/modules.py
M lib/galaxy/workflow/run.py
M lib/tool_shed/galaxy_install/install_manager.py
M lib/tool_shed/galaxy_install/migrate/check.py
M lib/tool_shed/galaxy_install/repair_repository_manager.py
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/install_environment.py
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/step_handler.py
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/tag_handler.py
M lib/tool_shed/util/tool_dependency_util.py
M lib/tool_shed/util/workflow_util.py
M run_tests.sh
M static/maps/mvc/base-mvc.js.map
M static/maps/mvc/citation/citation-model.js.map
M static/maps/mvc/collection/list-of-pairs-collection-creator.js.map
M static/maps/mvc/ui/ui-select-default.js.map
M static/maps/mvc/workflow/workflow-manager.js.map
M static/maps/mvc/workflow/workflow-node.js.map
M static/maps/mvc/workflow/workflow-view-node.js.map
M static/maps/mvc/workflow/workflow-view.js.map
M static/maps/polyfills.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/base-mvc.js
M static/scripts/mvc/citation/citation-model.js
M static/scripts/mvc/collection/list-of-pairs-collection-creator.js
M static/scripts/mvc/ui/ui-select-default.js
M static/scripts/mvc/workflow/workflow-manager.js
M static/scripts/mvc/workflow/workflow-node.js
M static/scripts/mvc/workflow/workflow-view-node.js
M static/scripts/mvc/workflow/workflow-view.js
M static/scripts/polyfills.js
M static/style/blue/base.css
R templates/webapps/galaxy/history/options.mako
M templates/webapps/galaxy/workflow/editor_generic_form.mako
M test/api/test_tools.py
M test/api/test_workflows.py
M test/api/workflows_format_2/converter.py
M test/base/interactor.py
M test/docker/base/Dockerfile
M test/docker/base/run_test_wrapper.sh
M test/qunit/tests/workflow_editor_tests.js
M test/tool_shed/functional/test_1460_data_managers.py
M test/unit/managers/test_UserManager.py
M test/unit/tools/test_tool_deps.py
M test/unit/workflows/test_modules.py
M tox.ini
Log Message:
-----------
Merge branch 'dev' of git://github.com/galaxyproject/galaxy into run_workflow_form_004
Commit: b8d7cf035df49f2fda9291b91eadf59fd48bfdd0
https://github.com/galaxyproject/galaxy/commit/b8d7cf035df49f2fda9291b91ead…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M config/galaxy.ini.sample
M templates/webapps/galaxy/workflow/run.mako
Log Message:
-----------
Add config setting, disable by default
Commit: 42edfca679f204aa7e69a6c3df6dc14c8118e22c
https://github.com/galaxyproject/galaxy/commit/42edfca679f204aa7e69a6c3df6d…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M lib/galaxy/tools/__init__.py
M static/maps/mvc/workflow/workflow-view.js.map
M static/scripts/mvc/workflow/workflow-view.js
Log Message:
-----------
Repack, refix section validation
Commit: 148c11f403674d133bb0301ce2fc01ef108c38bd
https://github.com/galaxyproject/galaxy/commit/148c11f403674d133bb0301ce2fc…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M lib/galaxy/tools/parameters/basic.py
Log Message:
-----------
Adjust interface to basic.py.
Commit: 10fff14ce5ba6952f21da10c81a31ceda397a666
https://github.com/galaxyproject/galaxy/commit/10fff14ce5ba6952f21da10c81a3…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M templates/webapps/galaxy/workflow/run.mako
Log Message:
-----------
Fix missing wf parameter issue in classic form
Commit: 9f68003438cac76a223e84756b0584d7530df239
https://github.com/galaxyproject/galaxy/commit/9f68003438cac76a223e84756b05…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/parameters/basic.py
Log Message:
-----------
Revise checking for workflow parameters in tooling code.
- Use verbose and higher level abstractions.
- Tighten up checks (use re.match instead of search when appropriate, replace startwith.("$") with more robust regex matches).
Commit: 7687ed7fad52ef69002a2f985fcf682999068f00
https://github.com/galaxyproject/galaxy/commit/7687ed7fad52ef69002a2f985fcf…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/parameters/__init__.py
M lib/galaxy/tools/parameters/basic.py
Log Message:
-----------
Tighten workflow parameter check.
a440813e37941d050ac503a0898dcf00c5f1b4fe always skipped validation of text/int/float values if they looked like they were workflow parameters. This restricts that check to just occurring when coming from the workflow editor tool form.
Commit: fafa72dde200b05954d038902e317c8fe0d302bd
https://github.com/galaxyproject/galaxy/commit/fafa72dde200b05954d038902e31…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M lib/galaxy/tools/parameters/basic.py
Log Message:
-----------
Slightly tighten up relaxed validation of workflow paramters.
Don't allow mid-parameter placement of values for integers, floats, etc... (e.g. 10${param}). This is enforced other places as well.
Commit: 57bc4660cf4e21ebe8b73035095e021e4f298680
https://github.com/galaxyproject/galaxy/commit/57bc4660cf4e21ebe8b73035095e…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M lib/galaxy/tools/parameters/basic.py
Log Message:
-----------
Fix workflow parameter validation
Commit: 9b30b134d6ab93c2a84a856352f32a6713dd49cd
https://github.com/galaxyproject/galaxy/commit/9b30b134d6ab93c2a84a856352f3…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M lib/galaxy/tools/toolbox/base.py
Log Message:
-----------
Reduce code duplication by reusing get_installed_repository() function.
Commit: 11eca70db129173ea20aac0040c9645049af189c
https://github.com/galaxyproject/galaxy/commit/11eca70db129173ea20aac0040c9…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M lib/galaxy/tools/toolbox/base.py
Log Message:
-----------
When loading a tool from Tool Shed, check that the <installed_changeset_revision> element matches the tool path.
Workaround for issue #1283, which causes the loaded tool to have a
StockLineage instead of a ToolShedLineage, thus creating multiple entries
for the tool in the panel.
Commit: 3108ba5c01ded7b0209685f57ab231c2cfe92938
https://github.com/galaxyproject/galaxy/commit/3108ba5c01ded7b0209685f57ab2…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/ui/ui-misc.js
M static/maps/mvc/ui/ui-misc.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/ui/ui-misc.js
Log Message:
-----------
Ensure that text fields only display text
Commit: 7f7010dbd96b4b9ce494ba320b853e6441162f5e
https://github.com/galaxyproject/galaxy/commit/7f7010dbd96b4b9ce494ba320b85…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
R static/scripts/mvc/collection/paired-collection-creator.js
R static/scripts/mvc/history/history-panel.js
R static/scripts/mvc/upload/upload-row.js
R static/scripts/mvc/workflow/workflow.js
Log Message:
-----------
Remove left over packed scripts.
The source files have been deleted.
Commit: 0fce226b96f98bf3393935602e0b5e9a8762bc4e
https://github.com/galaxyproject/galaxy/commit/0fce226b96f98bf3393935602e0b…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M lib/galaxy/datatypes/metadata.py
M lib/galaxy/model/custom_types.py
M lib/galaxy/model/mapping.py
Log Message:
-----------
Merge pull request #1179 from abretaud/defer_metadata
Lazy load HDA/LDDA metadata to speed up history loading
Commit: a440813e37941d050ac503a0898dcf00c5f1b4fe
https://github.com/galaxyproject/galaxy/commit/a440813e37941d050ac503a0898d…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M lib/galaxy/tools/parameters/basic.py
Log Message:
-----------
Add workflow_mode flag to validation
Commit: e838b03300964615bc2144ceeb9ba785cf5f7a7d
https://github.com/galaxyproject/galaxy/commit/e838b03300964615bc2144ceeb9b…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M client/galaxy/scripts/apps/analysis.js
M client/galaxy/scripts/mvc/dataset/dataset-li-edit.js
M client/galaxy/scripts/mvc/form/form-data.js
M client/galaxy/scripts/mvc/form/form-input.js
M client/galaxy/scripts/mvc/form/form-parameters.js
M client/galaxy/scripts/mvc/form/form-repeat.js
M client/galaxy/scripts/mvc/form/form-section.js
M client/galaxy/scripts/mvc/form/form-select-content.js
M client/galaxy/scripts/mvc/form/form-view.js
A client/galaxy/scripts/mvc/tool/tool-form-base.js
A client/galaxy/scripts/mvc/tool/tool-form-composite.js
A client/galaxy/scripts/mvc/tool/tool-form-workflow.js
A client/galaxy/scripts/mvc/tool/tool-form.js
A client/galaxy/scripts/mvc/tool/tool-template.js
R client/galaxy/scripts/mvc/tool/tools-form-base.js
R client/galaxy/scripts/mvc/tool/tools-form-workflow.js
R client/galaxy/scripts/mvc/tool/tools-form.js
R client/galaxy/scripts/mvc/tool/tools-jobs.js
R client/galaxy/scripts/mvc/tool/tools-template.js
M client/galaxy/scripts/mvc/tool/tools.js
M client/galaxy/scripts/mvc/ui/ui-drilldown.js
M client/galaxy/scripts/mvc/ui/ui-misc.js
M client/galaxy/scripts/mvc/ui/ui-portlet.js
M client/galaxy/scripts/mvc/ui/ui-slider.js
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M client/galaxy/scripts/utils/utils.js
M client/galaxy/style/less/ui.less
M config/galaxy.ini.sample
M config/plugins/visualizations/charts/static/build-app.js
M config/plugins/visualizations/charts/static/library/ui-table-form.js
M config/plugins/visualizations/charts/static/views/editor.js
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/parameters/basic.py
M lib/galaxy/tools/parameters/dataset_matcher.py
M lib/galaxy/tools/parameters/dynamic_options.py
M lib/galaxy/webapps/galaxy/api/workflows.py
A static/maps/galaxy-app-base.js.map
M static/maps/mvc/dataset/dataset-li-edit.js.map
M static/maps/mvc/form/form-data.js.map
M static/maps/mvc/form/form-input.js.map
M static/maps/mvc/form/form-parameters.js.map
M static/maps/mvc/form/form-repeat.js.map
M static/maps/mvc/form/form-section.js.map
M static/maps/mvc/form/form-select-content.js.map
M static/maps/mvc/form/form-view.js.map
A static/maps/mvc/tool/tool-form-base.js.map
A static/maps/mvc/tool/tool-form-composite.js.map
A static/maps/mvc/tool/tool-form-workflow.js.map
A static/maps/mvc/tool/tool-form.js.map
A static/maps/mvc/tool/tool-template.js.map
R static/maps/mvc/tool/tools-form-base.js.map
R static/maps/mvc/tool/tools-form-workflow.js.map
R static/maps/mvc/tool/tools-form.js.map
R static/maps/mvc/tool/tools-jobs.js.map
R static/maps/mvc/tool/tools-template.js.map
M static/maps/mvc/tool/tools.js.map
R static/maps/mvc/tools.js.map
R static/maps/mvc/tools/tools-form-base.js.map
M static/maps/mvc/ui/ui-drilldown.js.map
M static/maps/mvc/ui/ui-misc.js.map
M static/maps/mvc/ui/ui-portlet.js.map
M static/maps/mvc/ui/ui-slider.js.map
M static/maps/mvc/workflow/workflow-view.js.map
M static/maps/utils/utils.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/bundled/login.bundled.js
M static/scripts/bundled/login.bundled.js.map
M static/scripts/mvc/dataset/dataset-li-edit.js
M static/scripts/mvc/form/form-data.js
M static/scripts/mvc/form/form-input.js
M static/scripts/mvc/form/form-parameters.js
M static/scripts/mvc/form/form-repeat.js
M static/scripts/mvc/form/form-section.js
M static/scripts/mvc/form/form-select-content.js
M static/scripts/mvc/form/form-view.js
A static/scripts/mvc/tool/tool-form-base.js
A static/scripts/mvc/tool/tool-form-composite.js
A static/scripts/mvc/tool/tool-form-workflow.js
A static/scripts/mvc/tool/tool-form.js
A static/scripts/mvc/tool/tool-template.js
R static/scripts/mvc/tool/tools-form-base.js
R static/scripts/mvc/tool/tools-form-workflow.js
R static/scripts/mvc/tool/tools-form.js
R static/scripts/mvc/tool/tools-jobs.js
R static/scripts/mvc/tool/tools-template.js
M static/scripts/mvc/tool/tools.js
R static/scripts/mvc/tools.js
R static/scripts/mvc/tools/tools-form-base.js
M static/scripts/mvc/ui/ui-drilldown.js
M static/scripts/mvc/ui/ui-misc.js
M static/scripts/mvc/ui/ui-portlet.js
M static/scripts/mvc/ui/ui-slider.js
M static/scripts/mvc/workflow/workflow-view.js
M static/scripts/utils/utils.js
M static/style/blue/base.css
M templates/webapps/galaxy/workflow/editor_tool_form.mako
M templates/webapps/galaxy/workflow/run.mako
Log Message:
-----------
Merge pull request #1249 from guerler/run_workflow_form_004
Run workflow form
Commit: 5bf926bf3ec19933c0ef82e51c919c0595bfc741
https://github.com/galaxyproject/galaxy/commit/5bf926bf3ec19933c0ef82e51c91…
Author: Aysam Guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/execute.py
M lib/galaxy/tools/parameters/basic.py
M lib/galaxy/workflow/modules.py
M lib/galaxy/workflow/run.py
M test/api/test_workflows.py
Log Message:
-----------
Merge pull request #1302 from jmchilton/workflow_validation_1
Improved validation of tools during workflow execution.
Commit: ce57930342c2a4f7eb672f95dc0b19c93c2322f8
https://github.com/galaxyproject/galaxy/commit/ce57930342c2a4f7eb672f95dc0b…
Author: shane <shane(a)shanedowling.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M lib/galaxy/config.py
Log Message:
-----------
Show a more user-friendly error when the webserver port is blocked
Commit: a42328f0002955295cfb70bc6e16fcf83e42ad82
https://github.com/galaxyproject/galaxy/commit/a42328f0002955295cfb70bc6e16…
Author: shane <shane(a)shanedowling.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M lib/galaxy/config.py
Log Message:
-----------
Removing unnecessary line
Commit: c14bb93a60dba72db34996cadcf20ee0e19a7f19
https://github.com/galaxyproject/galaxy/commit/c14bb93a60dba72db34996cadcf2…
Author: shane <shane(a)shanedowling.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M lib/galaxy/config.py
Log Message:
-----------
Tidying code for linter
Commit: 2acdbe54f76312cb748693e018d2d505cf95c3a2
https://github.com/galaxyproject/galaxy/commit/2acdbe54f76312cb748693e018d2…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/citation/citation-model.js
M static/maps/mvc/citation/citation-model.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/citation/citation-model.js
M templates/webapps/galaxy/workflow/editor.mako
Log Message:
-----------
UI, Citations: fix citation-model's import of bibtex to use *either* commonjs or global
Commit: 8e2db2944cbd546fa0f6f6cb46bf78d470ab31c8
https://github.com/galaxyproject/galaxy/commit/8e2db2944cbd546fa0f6f6cb46bf…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M lib/galaxy/managers/workflows.py
Log Message:
-----------
Fix workflow output step entries
Commit: 541231bb1723b2aac3fede7f45ca0455ca954894
https://github.com/galaxyproject/galaxy/commit/541231bb1723b2aac3fede7f45ca…
Author: shane <shane(a)shanedowling.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M lib/galaxy/config.py
M lib/galaxy/util/pastescript/serve.py
Log Message:
-----------
Config-based port checker has been removed and adding in an exception checker for paste response
Commit: 4c3dfc7cd471181edc406724ca8f039e6b2a83d1
https://github.com/galaxyproject/galaxy/commit/4c3dfc7cd471181edc406724ca8f…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/citation/citation-model.js
M static/maps/mvc/citation/citation-model.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/citation/citation-model.js
M templates/webapps/galaxy/workflow/editor.mako
Log Message:
-----------
Merge pull request #1321 from carlfeberhard/fix.citations
UI, Citations: fix citation-model's import of bibtex to use *either* …
Commit: 19cb62660a3779a6333696ec645f7fcee3db5bc5
https://github.com/galaxyproject/galaxy/commit/19cb62660a3779a6333696ec645f…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M lib/galaxy/util/pastescript/serve.py
Log Message:
-----------
Merge pull request #1320 from shano/dev
Show a more user-friendly error when the webserver port is blocked
Commit: cc67557df8483899e7058f2047607d0e5339c4eb
https://github.com/galaxyproject/galaxy/commit/cc67557df8483899e7058f204760…
Author: Aysam Guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
M lib/galaxy/managers/workflows.py
Log Message:
-----------
Merge pull request #1322 from guerler/fix_workflow_outputs
Fix workflow output step entries
Commit: b2a3684f03e42d3743d02f4d4f039d429bf5e235
https://github.com/galaxyproject/galaxy/commit/b2a3684f03e42d3743d02f4d4f03…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-14 (Mon, 14 Dec 2015)
Changed paths:
R static/scripts/mvc/collection/paired-collection-creator.js
R static/scripts/mvc/history/history-panel.js
R static/scripts/mvc/upload/upload-row.js
R static/scripts/mvc/workflow/workflow.js
Log Message:
-----------
Merge pull request #1323 from jmchilton/fix_deleted_static
Remove left over packed scripts.
Commit: 946438ceba25151706ba2ca62e5c488e358c4f55
https://github.com/galaxyproject/galaxy/commit/946438ceba25151706ba2ca62e5c…
Author: Greg Von Kuster <ghv2(a)psu.edu>
Date: 2015-12-15 (Tue, 15 Dec 2015)
Changed paths:
A .ci/check_controller.sh
A .ci/check_mako.sh
A Makefile
A client/.docker-build.sh
A client/Dockerfile
M client/galaxy/scripts/apps/analysis.js
M client/galaxy/scripts/mvc/citation/citation-model.js
M client/galaxy/scripts/mvc/collection/list-of-pairs-collection-creator.js
M client/galaxy/scripts/mvc/dataset/dataset-li-edit.js
M client/galaxy/scripts/mvc/form/form-data.js
M client/galaxy/scripts/mvc/form/form-input.js
M client/galaxy/scripts/mvc/form/form-parameters.js
M client/galaxy/scripts/mvc/form/form-repeat.js
M client/galaxy/scripts/mvc/form/form-section.js
M client/galaxy/scripts/mvc/form/form-select-content.js
M client/galaxy/scripts/mvc/form/form-view.js
A client/galaxy/scripts/mvc/tool/tool-form-base.js
A client/galaxy/scripts/mvc/tool/tool-form-composite.js
A client/galaxy/scripts/mvc/tool/tool-form-workflow.js
A client/galaxy/scripts/mvc/tool/tool-form.js
A client/galaxy/scripts/mvc/tool/tool-template.js
R client/galaxy/scripts/mvc/tool/tools-form-base.js
R client/galaxy/scripts/mvc/tool/tools-form-workflow.js
R client/galaxy/scripts/mvc/tool/tools-form.js
R client/galaxy/scripts/mvc/tool/tools-jobs.js
R client/galaxy/scripts/mvc/tool/tools-template.js
M client/galaxy/scripts/mvc/tool/tools.js
M client/galaxy/scripts/mvc/ui/ui-drilldown.js
M client/galaxy/scripts/mvc/ui/ui-misc.js
M client/galaxy/scripts/mvc/ui/ui-portlet.js
M client/galaxy/scripts/mvc/ui/ui-select-default.js
M client/galaxy/scripts/mvc/ui/ui-slider.js
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M client/galaxy/scripts/utils/utils.js
M client/galaxy/style/less/ui.less
M config/dependency_resolvers_conf.xml.sample
M config/galaxy.ini.sample
M config/plugins/visualizations/charts/static/build-app.js
M config/plugins/visualizations/charts/static/library/ui-table-form.js
M config/plugins/visualizations/charts/static/views/editor.js
M config/reports.ini.sample
M config/tool_shed.ini.sample
A doc/source/admin/dependency_resolvers.rst
M doc/source/admin/index.rst
M doc/source/dev/faq.rst
M lib/galaxy/datatypes/metadata.py
M lib/galaxy/datatypes/text.py
M lib/galaxy/managers/workflows.py
M lib/galaxy/model/__init__.py
M lib/galaxy/model/custom_types.py
M lib/galaxy/model/mapping.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/deps/__init__.py
M lib/galaxy/tools/deps/resolvers/modules.py
M lib/galaxy/tools/execute.py
M lib/galaxy/tools/parameters/basic.py
M lib/galaxy/tools/parameters/dataset_matcher.py
M lib/galaxy/tools/parameters/dynamic_options.py
M lib/galaxy/util/pastescript/serve.py
M lib/galaxy/webapps/galaxy/api/workflows.py
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/reports/config.py
M lib/galaxy/webapps/tool_shed/config.py
M lib/galaxy/workflow/modules.py
M lib/galaxy/workflow/run.py
M lib/tool_shed/galaxy_install/install_manager.py
M lib/tool_shed/galaxy_install/repair_repository_manager.py
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/install_environment.py
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/step_handler.py
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/tag_handler.py
M lib/tool_shed/util/tool_dependency_util.py
A static/maps/galaxy-app-base.js.map
M static/maps/mvc/citation/citation-model.js.map
M static/maps/mvc/collection/list-of-pairs-collection-creator.js.map
M static/maps/mvc/dataset/dataset-li-edit.js.map
M static/maps/mvc/form/form-data.js.map
M static/maps/mvc/form/form-input.js.map
M static/maps/mvc/form/form-parameters.js.map
M static/maps/mvc/form/form-repeat.js.map
M static/maps/mvc/form/form-section.js.map
M static/maps/mvc/form/form-select-content.js.map
M static/maps/mvc/form/form-view.js.map
A static/maps/mvc/tool/tool-form-base.js.map
A static/maps/mvc/tool/tool-form-composite.js.map
A static/maps/mvc/tool/tool-form-workflow.js.map
A static/maps/mvc/tool/tool-form.js.map
A static/maps/mvc/tool/tool-template.js.map
R static/maps/mvc/tool/tools-form-base.js.map
R static/maps/mvc/tool/tools-form-workflow.js.map
R static/maps/mvc/tool/tools-form.js.map
R static/maps/mvc/tool/tools-jobs.js.map
R static/maps/mvc/tool/tools-template.js.map
M static/maps/mvc/tool/tools.js.map
R static/maps/mvc/tools.js.map
R static/maps/mvc/tools/tools-form-base.js.map
M static/maps/mvc/ui/ui-drilldown.js.map
M static/maps/mvc/ui/ui-misc.js.map
M static/maps/mvc/ui/ui-portlet.js.map
M static/maps/mvc/ui/ui-select-default.js.map
M static/maps/mvc/ui/ui-slider.js.map
M static/maps/mvc/workflow/workflow-view.js.map
M static/maps/utils/utils.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/bundled/login.bundled.js
M static/scripts/bundled/login.bundled.js.map
M static/scripts/mvc/citation/citation-model.js
M static/scripts/mvc/collection/list-of-pairs-collection-creator.js
R static/scripts/mvc/collection/paired-collection-creator.js
M static/scripts/mvc/dataset/dataset-li-edit.js
M static/scripts/mvc/form/form-data.js
M static/scripts/mvc/form/form-input.js
M static/scripts/mvc/form/form-parameters.js
M static/scripts/mvc/form/form-repeat.js
M static/scripts/mvc/form/form-section.js
M static/scripts/mvc/form/form-select-content.js
M static/scripts/mvc/form/form-view.js
R static/scripts/mvc/history/history-panel.js
A static/scripts/mvc/tool/tool-form-base.js
A static/scripts/mvc/tool/tool-form-composite.js
A static/scripts/mvc/tool/tool-form-workflow.js
A static/scripts/mvc/tool/tool-form.js
A static/scripts/mvc/tool/tool-template.js
R static/scripts/mvc/tool/tools-form-base.js
R static/scripts/mvc/tool/tools-form-workflow.js
R static/scripts/mvc/tool/tools-form.js
R static/scripts/mvc/tool/tools-jobs.js
R static/scripts/mvc/tool/tools-template.js
M static/scripts/mvc/tool/tools.js
R static/scripts/mvc/tools.js
R static/scripts/mvc/tools/tools-form-base.js
M static/scripts/mvc/ui/ui-drilldown.js
M static/scripts/mvc/ui/ui-misc.js
M static/scripts/mvc/ui/ui-portlet.js
M static/scripts/mvc/ui/ui-select-default.js
M static/scripts/mvc/ui/ui-slider.js
R static/scripts/mvc/upload/upload-row.js
M static/scripts/mvc/workflow/workflow-view.js
R static/scripts/mvc/workflow/workflow.js
M static/scripts/utils/utils.js
M static/style/blue/base.css
M templates/webapps/galaxy/workflow/editor.mako
M templates/webapps/galaxy/workflow/editor_tool_form.mako
M templates/webapps/galaxy/workflow/run.mako
M test/api/test_tools.py
M test/api/test_workflows.py
M test/base/interactor.py
M test/docker/base/Dockerfile
M test/tool_shed/functional/test_1460_data_managers.py
M test/unit/tools/test_tool_deps.py
M tox.ini
Log Message:
-----------
Merge branch 'dev' of https://github.com/galaxyproject/galaxy into dev
Commit: 74be6f54cd1868f663dc89609c90a28c0db8214f
https://github.com/galaxyproject/galaxy/commit/74be6f54cd1868f663dc89609c90…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-15 (Tue, 15 Dec 2015)
Changed paths:
M lib/galaxy/managers/workflows.py
Log Message:
-----------
Fix for creating workflow outputs on initial workflow upload.
Commit: 86632afdd3b7f2dbfed47671779818835a075496
https://github.com/galaxyproject/galaxy/commit/86632afdd3b7f2dbfed476717798…
Author: carlfeberhard <carlfeberhard(a)users.noreply.github.com>
Date: 2015-12-15 (Tue, 15 Dec 2015)
Changed paths:
R test/casperjs/api-workflow-tests.js
M test/casperjs/casperjs_runner.py
Log Message:
-----------
Merge pull request #1316 from jmchilton/remove_casper_api_tests
Remove worklfow casperjs API test.
Commit: f953005f72310279fe69a0deb0b9adef973bf6da
https://github.com/galaxyproject/galaxy/commit/f953005f72310279fe69a0deb0b9…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2015-12-15 (Tue, 15 Dec 2015)
Changed paths:
M lib/galaxy/webapps/galaxy/api/lda_datasets.py
Log Message:
-----------
Fix typo causing the option "Link files instead of copying" to be ignored.
When uploading folders with the new data library interface.
Commit: 54b54b1f11a30bad0b2e15802c44b30e745ca4a6
https://github.com/galaxyproject/galaxy/commit/54b54b1f11a30bad0b2e15802c44…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2015-12-15 (Tue, 15 Dec 2015)
Changed paths:
M lib/galaxy/managers/users.py
Log Message:
-----------
UI, Users: when an first logging out, anon users may not have a history when they're serialized, return 0 usage from the user serilializer when this is the case
Commit: b3e3b359aec1bce3d7ee4a23289d96318f5b0af3
https://github.com/galaxyproject/galaxy/commit/b3e3b359aec1bce3d7ee4a23289d…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2015-12-15 (Tue, 15 Dec 2015)
Changed paths:
M lib/galaxy/dependencies/requirements.txt
Log Message:
-----------
Update Kombu and AMQP wheels to fix problems with El Capitan's System
Integrity Protection
Commit: c48965ffcc5d35877f00dcf1941317cf23c3d4f4
https://github.com/galaxyproject/galaxy/commit/c48965ffcc5d35877f00dcf19413…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2015-12-15 (Tue, 15 Dec 2015)
Changed paths:
M lib/galaxy/webapps/galaxy/api/lda_datasets.py
Log Message:
-----------
Merge pull request #1326 from nsoranzo/release_15.10_link_data_only
[15.10] Fix typo causing the option "Link files instead of copying" to be ignored.
Commit: 31f174a4254e5cc4c85747a76c3908b0170cf358
https://github.com/galaxyproject/galaxy/commit/31f174a4254e5cc4c85747a76c39…
Author: Greg Von Kuster <ghv2(a)psu.edu>
Date: 2015-12-15 (Tue, 15 Dec 2015)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/tool_shed/util/shed_util_common.py
Log Message:
-----------
Add enhancements to the Galaxy repository install process
to cleanly handle the case described here:
https://github.com/galaxyproject/galaxy/issues/667. Specifically, the
following scenario is now cleanly handled:
Example use case: In a toolshed I have a repository of a tool, say
package_new_gene_db_1_2_3, and in revision 1 it depends on
package_sqlite_1_0_0:
package_new_gene_db_1_2_3
package_sqlite_1_0_0
At some point in time I discover that postgres is a better solution for
my gene database, and I upload revision 2:
package_new_gene_db_1_2_3
package_postgres__2_0_0
And I remove the dependecy of sqlite. If I go to my galaxy instance and
I remove revision 1 and install revision 2, the installation is cleanly
handled with theis PR.
It should be noted that this enhancement could adversely impact
reproducibility if best practices are not followed with regard to
defining package dependencies. Since it is now cleanly possible to
eliminate dependencies over time, best practices must be followed to
ensure that elimination of a dependency does not affect the output of a
tool that uses the underlying hierarchy of packages.
Commit: a23e644a9cd7ab64f0fa56314ae5ec2b5a768f7a
https://github.com/galaxyproject/galaxy/commit/a23e644a9cd7ab64f0fa56314ae5…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-15 (Tue, 15 Dec 2015)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/tool_shed/util/shed_util_common.py
Log Message:
-----------
Merge pull request #1329 from martenson/release_15.10
[15.10] Add enhancements to the Galaxy repository install process
Commit: bb0c1366f723b8236872d05da4c553a53d1aedc7
https://github.com/galaxyproject/galaxy/commit/bb0c1366f723b8236872d05da4c5…
Author: Nicola Soranzo <nsoranzo(a)tiscali.it>
Date: 2015-12-15 (Tue, 15 Dec 2015)
Changed paths:
M lib/galaxy/dependencies/requirements.txt
Log Message:
-----------
Merge pull request #1327 from natefoo/kombu-el-cap-wheels
Update Kombu and AMQP wheels to fix problems with El Capitan's System Integrity Protection
Commit: d5cddaf7cc4fa734cb738521167e854393e5d380
https://github.com/galaxyproject/galaxy/commit/d5cddaf7cc4fa734cb738521167e…
Author: Aysam Guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-15 (Tue, 15 Dec 2015)
Changed paths:
M lib/galaxy/managers/workflows.py
Log Message:
-----------
Merge pull request #1330 from jmchilton/failing_test
Fix for creating workflow outputs on initial workflow upload.
Commit: 9dad7f76c41845e23d07a8583950d41e4b60b3cf
https://github.com/galaxyproject/galaxy/commit/9dad7f76c41845e23d07a8583950…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-15 (Tue, 15 Dec 2015)
Changed paths:
M lib/galaxy/tools/parameters/basic.py
Log Message:
-----------
Fix another instance of using _allow_workflow_parameters_in_context.
As recommended by @nsoranzo.
Commit: 7b11ebc52e30e6613e1b94c6db0db6bda70a5255
https://github.com/galaxyproject/galaxy/commit/7b11ebc52e30e6613e1b94c6db0d…
Author: Nicola Soranzo <nsoranzo(a)tiscali.it>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/parameters/__init__.py
M lib/galaxy/tools/parameters/basic.py
Log Message:
-----------
Merge pull request #1319 from jmchilton/workflow_validation_2
More tightening up of parameter validation during workflow stuff.
Commit: d1fd23a2f4e5c5408f469ee5560f526833f5f682
https://github.com/galaxyproject/galaxy/commit/d1fd23a2f4e5c5408f469ee5560f…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-15 (Tue, 15 Dec 2015)
Changed paths:
A config/plugins/visualizations/csg/config/csg.xml
A config/plugins/visualizations/csg/static/Detector.js
A config/plugins/visualizations/csg/static/OrbitControls.js
A config/plugins/visualizations/csg/static/PLYLoader.js
A config/plugins/visualizations/csg/static/VTKLoader.js
A config/plugins/visualizations/csg/static/dat.gui.min.js
A config/plugins/visualizations/csg/static/three.min.js
A config/plugins/visualizations/csg/templates/csg.mako
Log Message:
-----------
Merge pull request #1254 from gregvonkuster/dev
Add the CSG Viewer visualization plugin
Commit: cf5d209e0f01b7fb13e06f013f2a3693f194ebb4
https://github.com/galaxyproject/galaxy/commit/cf5d209e0f01b7fb13e06f013f2a…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/history/copy-dialog.js
M client/galaxy/scripts/mvc/history/options-menu.js
M client/galaxy/scripts/mvc/ui/popup-menu.js
M client/galaxy/scripts/mvc/ui/ui-modal.js
M client/galaxy/scripts/utils/ajax-queue.js
M lib/galaxy/model/__init__.py
M lib/galaxy/webapps/galaxy/api/histories.py
M lib/galaxy/webapps/galaxy/controllers/history.py
M static/maps/mvc/history/copy-dialog.js.map
M static/maps/mvc/history/options-menu.js.map
M static/maps/mvc/ui/popup-menu.js.map
M static/maps/mvc/ui/ui-modal.js.map
M static/maps/utils/ajax-queue.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/history/copy-dialog.js
M static/scripts/mvc/history/options-menu.js
M static/scripts/mvc/ui/popup-menu.js
M static/scripts/mvc/ui/ui-modal.js
M static/scripts/utils/ajax-queue.js
M templates/display_base.mako
M templates/grid_base.mako
R templates/webapps/galaxy/history/copy.mako
M templates/webapps/galaxy/history/display.mako
M templates/webapps/galaxy/history/embed.mako
M templates/webapps/galaxy/history/grid.mako
A templates/webapps/galaxy/history/grid_js.mako
A templates/webapps/galaxy/history/shared_grid.mako
M templates/webapps/galaxy/history/view.mako
M templates/webapps/galaxy/visualization/display.mako
M templates/webapps/galaxy/visualization/display_in_frame.mako
M test/casperjs/api-anon-history-permission-tests.js
M test/casperjs/api-anon-history-tests.js
M test/unit/managers/test_HistoryManager.py
Log Message:
-----------
Manual merge of #1303 to resolve build artifact conflicts.
Commit: 99f9d7724c53326330a41fa6a1b1c36624fef02d
https://github.com/galaxyproject/galaxy/commit/99f9d7724c53326330a41fa6a1b1…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M lib/galaxy/managers/libraries.py
Log Message:
-----------
Use the datetime object instead of a string for pretty interval formatting.
Commit: 0c8df84685c587322f6c3b83ea45c0b20819d3ab
https://github.com/galaxyproject/galaxy/commit/0c8df84685c587322f6c3b83ea45…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M lib/galaxy/managers/users.py
Log Message:
-----------
Merge pull request #1328 from carlfeberhard/fix.quotameter
UI, Users: when an first logging out, anon users may not have a histo…
Commit: f1c36485c1ecef33667f3c35bad44899233d04f5
https://github.com/galaxyproject/galaxy/commit/f1c36485c1ecef33667f3c35bad4…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/dataset.py
Log Message:
-----------
Don't bother querying on unencoded IDs
Commit: ea785ea598371f7aef0b37df59996e892d82f281
https://github.com/galaxyproject/galaxy/commit/ea785ea598371f7aef0b37df5999…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M lib/galaxy/managers/libraries.py
Log Message:
-----------
Merge pull request #1339 from dannon/library_datetime_tweak
Use the datetime object instead of a string for pretty interval formatting.
Commit: 41b77d0c1352e569d861ed327fd523dd12efffae
https://github.com/galaxyproject/galaxy/commit/41b77d0c1352e569d861ed327fd5…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M Makefile
M client/README.md
Log Message:
-----------
Use local versions of node modules instead of system-installed, add a 'build-it-all' target for building the whole client.
Fix two old typos.
Commit: 8cc10c98ec4569ccfe1226d4c28a8526abbf3f44
https://github.com/galaxyproject/galaxy/commit/8cc10c98ec4569ccfe1226d4c28a…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/dataset.py
Log Message:
-----------
Merge pull request #1340 from erasche/id_decoding
Don't bother querying on unencoded IDs for error form
Commit: b9cba364982a9fa77fc2952fb803da75ee8d26e2
https://github.com/galaxyproject/galaxy/commit/b9cba364982a9fa77fc2952fb803…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M Makefile
M client/README.md
Log Message:
-----------
Merge pull request #1337 from dannon/makefile_singletarget
Simpler build-it-all rule in Makefile
Commit: d41caa53cf24aca29bb90e32b420558558461d9c
https://github.com/galaxyproject/galaxy/commit/d41caa53cf24aca29bb90e32b420…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
A lib/galaxy/model/migrate/versions/0131_subworkflow_and_input_paramter_modules.py
Log Message:
-----------
Database migration enabling subworkflow and input parameter modules.
Commit: 45962f32344a00162f5d04b94096c8a570f2adf1
https://github.com/galaxyproject/galaxy/commit/45962f32344a00162f5d04b94096…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/model/mapping.py
M lib/galaxy/tools/parameters/__init__.py
M lib/galaxy/web/framework/formbuilder.py
M lib/galaxy/workflow/modules.py
M lib/galaxy/workflow/run.py
M lib/galaxy/workflow/run_request.py
M test/api/test_workflows.py
M test/api/workflows_format_2/converter.py
Log Message:
-----------
Input parameter workflow module (experimental).
- Implement a input parameter module that mirrors data and collection input modules but has a type that can currently be one of text, integer, float, color, and boolean.
- Allow connections between these and tool step inputs.
- Extend model to support this.
- Add new input types for format 2 workflow definitions for various types that all map to this kind of step. Typed inputs such as this match well with CWL workflow inputs.
Someday I imagine these will be superior to just marking a tool input "Specify at Runtime" for all the same reasons input steps are superior to leaving inputs unattached.
Commit: 157939aa8f46b7599f48011d9f1e2c40c9f6cd47
https://github.com/galaxyproject/galaxy/commit/157939aa8f46b7599f48011d9f1e…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/tool/tool-form-workflow.js
M client/galaxy/scripts/mvc/workflow/workflow-manager.js
M client/galaxy/scripts/mvc/workflow/workflow-node.js
M client/galaxy/scripts/mvc/workflow/workflow-view-data.js
M client/galaxy/scripts/mvc/workflow/workflow-view-node.js
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M lib/galaxy/managers/workflows.py
M lib/galaxy/model/__init__.py
M lib/galaxy/model/mapping.py
M lib/galaxy/model/migrate/versions/0131_subworkflow_and_input_paramter_modules.py
M lib/galaxy/webapps/galaxy/controllers/workflow.py
M lib/galaxy/workflow/modules.py
M lib/galaxy/workflow/run.py
M lib/galaxy/workflow/run_request.py
M static/maps/mvc/tool/tool-form-workflow.js.map
M static/maps/mvc/workflow/workflow-manager.js.map
M static/maps/mvc/workflow/workflow-node.js.map
M static/maps/mvc/workflow/workflow-view-data.js.map
M static/maps/mvc/workflow/workflow-view-node.js.map
M static/maps/mvc/workflow/workflow-view.js.map
M static/scripts/mvc/tool/tool-form-workflow.js
M static/scripts/mvc/workflow/workflow-manager.js
M static/scripts/mvc/workflow/workflow-node.js
M static/scripts/mvc/workflow/workflow-view-data.js
M static/scripts/mvc/workflow/workflow-view-node.js
M static/scripts/mvc/workflow/workflow-view.js
M templates/webapps/galaxy/workflow/editor.mako
M test/api/test_workflows.py
M test/api/test_workflows_from_yaml.py
M test/api/workflows_format_2/converter.py
M test/unit/test_galaxy_mapping.py
M test/unit/workflows/test_modules.py
M test/unit/workflows/test_run_parameters.py
M test/unit/workflows/test_workflow_progress.py
M test/unit/workflows/workflow_support.py
Log Message:
-----------
Implement nested workflows.
Details:
- Add a new workflow module describing subworkflows.
- Add workflow list to editor side panel - with options to link in a subworkflow module or copy the target workflow into the workflow being editted node for node.
- Update workflow, workflow step, and workflow invocation models to track subworkflow connections and execution.
- Extend workflow outputs with concepts of labels (and UUIDs while I'm there) to match workflow inputs. This allow us to have something to label outputs with in the workflow editor and to reference in the format 2 workflow description language.
- Extend workflow editor UI to allow labeling workflow outputs (and enforce that these are unique across a workflow).
- Extend workflow invocation and progress tracking to allow invoking a subworkflow as part of another workflow invocation.
- Extend workflow import and export code to allow a nested representation of workflows.
- Update format 2 workflow description to allow testing nested workflows.
Most relevant new and modified test cases can be run using the following commands:
```
./run_tests.sh -api test/api/test_workflows.py:WorkflowsApiTestCase.test_run_subworkflow_simple
./run_tests.sh -api test/api/test_workflows_from_yaml.py:WorkflowsFromYamlApiTestCase.test_subworkflow_simple
./run_tests.sh -api test/api/test_workflows_from_yaml.py:WorkflowsFromYamlApiTestCase.test_outputs
nosetests test/unit/test_galaxy_mapping.py
nosetests test/unit/workflows/test_workflow_progress.py
```
Commit: f88ad8d4e35b51a5f88b0d29b71755f576fc1f7a
https://github.com/galaxyproject/galaxy/commit/f88ad8d4e35b51a5f88b0d29b717…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/tool/tool-form-workflow.js
M static/maps/mvc/tool/tool-form-workflow.js.map
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/tool/tool-form-workflow.js
Log Message:
-----------
Fix Change type label in editor form
Commit: 48eec81f48f92d7b5e7a42a9cf4be453f9f14fa5
https://github.com/galaxyproject/galaxy/commit/48eec81f48f92d7b5e7a42a9cf4b…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/workflow/workflow-view-data.js
M client/galaxy/scripts/mvc/workflow/workflow-view.js
Log Message:
-----------
Allow specifying workflow outputs on subworkflow nodes.
Commit: 1b3ee81dbae9375443ea396280c1e418cae84876
https://github.com/galaxyproject/galaxy/commit/1b3ee81dbae9375443ea396280c1…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M lib/galaxy/tools/toolbox/base.py
Log Message:
-----------
Merge pull request #1314 from nsoranzo/release_15.10_tool_load_fixes
[15.10] When loading a tool from Tool Shed, check that the <installed_changeset_revision> element matches the tool path.
Commit: f10b968075e37b650f46811f6f83286c6aaefccd
https://github.com/galaxyproject/galaxy/commit/f10b968075e37b650f46811f6f83…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M static/maps/mvc/workflow/workflow-view.js.map
M static/scripts/mvc/workflow/workflow-view.js
M templates/webapps/galaxy/workflow/editor.mako
Log Message:
-----------
Build section dom in js
Commit: b4bfde4089a5f1893ddd839fa4a2c34c71378ae2
https://github.com/galaxyproject/galaxy/commit/b4bfde4089a5f1893ddd839fa4a2…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M static/maps/mvc/workflow/workflow-view-data.js.map
M static/maps/mvc/workflow/workflow-view.js.map
M static/scripts/mvc/workflow/workflow-view-data.js
M static/scripts/mvc/workflow/workflow-view.js
Log Message:
-----------
Fix attribute
Commit: 530ceb13befdc0850efb9db47c5389c3218338b3
https://github.com/galaxyproject/galaxy/commit/530ceb13befdc0850efb9db47c53…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M test/qunit/tests/workflow_editor_tests.js
Log Message:
-----------
Fix for failing qunit test.
Commit: 952eb34f447772918f8af7f66779c5dfa734424a
https://github.com/galaxyproject/galaxy/commit/952eb34f447772918f8af7f66779…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M lib/galaxy/dependencies/requirements.txt
Log Message:
-----------
Upgrade Paste to 2.0.2
Commit: f54138237dcba721d61af5f692b3195e812a6939
https://github.com/galaxyproject/galaxy/commit/f54138237dcba721d61af5f692b3…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M lib/galaxy/tools/parameters/basic.py
Log Message:
-----------
Fix optional parameters
Commit: fc85857a71a270172e8390c1846daad86f547b14
https://github.com/galaxyproject/galaxy/commit/fc85857a71a270172e8390c1846d…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/parameters/output_collect.py
A lib/galaxy/tools/parser/output_collection_def.py
M lib/galaxy/tools/parser/xml.py
M lib/galaxy/tools/parser/yaml.py
M test/unit/tools/test_collect_primary_datasets.py
Log Message:
-----------
Separate abstractions for parsing discovered datasets and discovering.
This is part of a long effort to build a galaxy.tools.parser module that has no dependencies outside of say galaxy.util - so I can add it to the code shared with planemo and pulsar. This would allow planemo (and by extension Tool Shed 2.0) to reason about tools in an abstract way without the billion dependencies of galxaxy.tools.Tool.
Commit: 586ab24970856f12112714759f1ead088bc48a04
https://github.com/galaxyproject/galaxy/commit/586ab24970856f12112714759f1e…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M lib/galaxy/tools/parameters/basic.py
R lib/galaxy/tools/parameters/output.py
M lib/galaxy/tools/parser/interface.py
A lib/galaxy/tools/parser/output_actions.py
M lib/galaxy/tools/parser/xml.py
M lib/galaxy/tools/parser/yaml.py
Log Message:
-----------
Move galaxy.tools.parameters.outputs into galaxy.tools.paraser.output_actions.
This module has not external dependencies so it is prefect for the parser module. There still remains work to be done to separate it from XML.
Commit: 8480f9187e8cae34fc4822ae1d2d8971f3504f5a
https://github.com/galaxyproject/galaxy/commit/8480f9187e8cae34fc4822ae1d2d…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M lib/galaxy/dependencies/requirements.txt
Log Message:
-----------
Merge pull request #1344 from natefoo/paste2
Upgrade Paste to 2.0.2
Commit: 191f75407ed955b3b0836b7503616f664f0d0a73
https://github.com/galaxyproject/galaxy/commit/191f75407ed955b3b0836b750361…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M lib/galaxy/tools/parameters/basic.py
Log Message:
-----------
Merge pull request #1343 from guerler/fix_validation_000
Fix optional parameters
Commit: e38e4449cddc0a6b31ca6f19d849cae1796e22df
https://github.com/galaxyproject/galaxy/commit/e38e4449cddc0a6b31ca6f19d849…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M lib/galaxy/jobs/runners/local.py
Log Message:
-----------
If GALAXY_SLOTS is defined in the environment, use it for the local runner when job destinations haven't been configured.
Commit: 984ceb104d91cdd23daf8a1b6c2382d1eacd1e90
https://github.com/galaxyproject/galaxy/commit/984ceb104d91cdd23daf8a1b6c23…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/model/item_attrs.py
M lib/galaxy/model/tool_shed_install/__init__.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/data/__init__.py
M lib/galaxy/tools/parameters/basic.py
M lib/galaxy/tools/parameters/grouping.py
M lib/galaxy/tools/toolbox/base.py
M lib/galaxy/tools/toolbox/panel.py
A lib/galaxy/util/dictifiable.py
M lib/galaxy/web/base/controller.py
M lib/galaxy/webapps/tool_shed/model/__init__.py
Log Message:
-----------
Move Dictifiable out of model package into util.
Many objects that aren't model objects are Dictifiable at this point so there is no reason to have this in model. This changes eliminates Dictifiable's dependency on sqlalchemy (by using a more pythonic type check). Now that Dictifiable has no external dependencies, it is much easier to reuse it (and more important objects that extend it) in other projects such as planemo.
Commit: d24bc3df1e627a0586860600a89352f6bddf49b1
https://github.com/galaxyproject/galaxy/commit/d24bc3df1e627a0586860600a893…
Author: Lance Parsons <lparsons(a)genomics.princeton.edu>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M lib/galaxy/jobs/runners/util/job_script/CLUSTER_SLOTS_STATEMENT.sh
Log Message:
-----------
Use both SLURM_NTASKS and SLURM_CPUS_PER_TASK to set GALAXY_SLOTS
Commit: f51ee306b1e88001f76fd818e495cdbd9db2e10c
https://github.com/galaxyproject/galaxy/commit/f51ee306b1e88001f76fd818e495…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M lib/galaxy/jobs/runners/local.py
Log Message:
-----------
Merge pull request #1346 from dannon/local_slots
If GALAXY_SLOTS is defined in the environment, use it for the local r…
Commit: c8e61140e7b297356f1830d46761660a85d7b79d
https://github.com/galaxyproject/galaxy/commit/c8e61140e7b297356f1830d46761…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
R lib/galaxy/util/lrucache.py
Log Message:
-----------
Remove unused lrucache.py file in galaxy.util.
Added without context in https://github.com/galaxyproject/galaxy/commit/88164c123d3faafe04bf38193e60….
Commit: 869b1a4ef0ec647cca1420e6c0f82023c5ffbad0
https://github.com/galaxyproject/galaxy/commit/869b1a4ef0ec647cca1420e6c0f8…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M lib/galaxy/util/hash_util.py
Log Message:
-----------
Remove Python 2.4- from hash_util.py.
Commit: 73dce68376df898d01cc8fcf843d363914a39adf
https://github.com/galaxyproject/galaxy/commit/73dce68376df898d01cc8fcf843d…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
R lib/galaxy/util/debugging.py
Log Message:
-----------
Remove seemingly unused debugging.py.
Add in https://github.com/galaxyproject/galaxy/commit/017a3c356b8742dd09e65f1c6ce8….
Commit: 87ce6c778ffc9087d589914a5eec640da067c231
https://github.com/galaxyproject/galaxy/commit/87ce6c778ffc9087d589914a5eec…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M lib/galaxy/managers/workflows.py
Log Message:
-----------
Fix for loading workflows that have tool verions / step upgrade messages.
Commit: 14d25e9d426ef6fb329c0a04f0c0fdf0beabe9bf
https://github.com/galaxyproject/galaxy/commit/14d25e9d426ef6fb329c0a04f0c0…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M lib/galaxy/managers/workflows.py
Log Message:
-----------
Merge pull request #1348 from blankenberg/workflow_fix
Fix for loading workflows that have tool version / step upgrade messages.
Commit: 83f57c56c183f38b6a8915d506dbf6d00c634c65
https://github.com/galaxyproject/galaxy/commit/83f57c56c183f38b6a8915d506db…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M lib/galaxy/datatypes/sniff.py
M lib/galaxy/model/__init__.py
M lib/galaxy/util/__init__.py
A lib/galaxy/util/multi_byte.py
M tools/data_source/upload.py
Log Message:
-----------
Refactor is_multi_byte out of galaxy.util.
It introduces a fairly esoteric dependency in galaxy.util for just a couple uses in Galaxy. Separating it out like this will allow reuse of the entire galaxy.util with only one external dependency (docutils, which planemo for instance already depends on).
Commit: 61f64e828530c54bae6a090580a6e4278b32a699
https://github.com/galaxyproject/galaxy/commit/61f64e828530c54bae6a090580a6…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/actions/__init__.py
M lib/galaxy/tools/execute.py
M lib/galaxy/tools/parser/__init__.py
M lib/galaxy/tools/parser/output_actions.py
A lib/galaxy/tools/parser/output_objects.py
M lib/galaxy/tools/parser/xml.py
M lib/galaxy/tools/parser/yaml.py
M lib/galaxy/workflow/extract.py
M test/unit/tools/test_actions.py
M test/unit/tools/test_evaluation.py
Log Message:
-----------
Refactor tool output classes out of galaxy.tools and into parser module.
This makes the galaxy.tool.parser much more portable, it no longer has a dependency on anything in galaxy.tools or submodules except galaxy.tools.loader (which in turn has no dependencies on galaxy.tools or submodules).
Commit: 12014cc2252d710b617953dbfcc804fc9b3f0a67
https://github.com/galaxyproject/galaxy/commit/12014cc2252d710b617953dbfcc8…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M lib/galaxy/workflow/modules.py
M static/maps/mvc/workflow/workflow-view.js.map
M static/scripts/mvc/workflow/workflow-view.js
Log Message:
-----------
Show correct subworkflow name
Commit: 2ff3bf0c0c66946557f21f0bafa55768b7a8cd63
https://github.com/galaxyproject/galaxy/commit/2ff3bf0c0c66946557f21f0bafa5…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M static/maps/mvc/workflow/workflow-view.js.map
M static/scripts/mvc/workflow/workflow-view.js
Log Message:
-----------
Fix label change handling
Commit: c9016f9553784b3a83f448c787fa8b90e11a2599
https://github.com/galaxyproject/galaxy/commit/c9016f9553784b3a83f448c787fa…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M lib/galaxy/workflow/modules.py
M static/maps/mvc/workflow/workflow-view.js.map
M static/scripts/mvc/workflow/workflow-view.js
Log Message:
-----------
Merge pull request #15 from guerler/fix_subworkflows_005
Fix subworkflows 005
Commit: e52cc6614769c0b332c32a1068db816917a5708c
https://github.com/galaxyproject/galaxy/commit/e52cc6614769c0b332c32a1068db…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/parameters/basic.py
R lib/galaxy/tools/parameters/output.py
M lib/galaxy/tools/parameters/output_collect.py
M lib/galaxy/tools/parser/interface.py
A lib/galaxy/tools/parser/output_actions.py
A lib/galaxy/tools/parser/output_collection_def.py
M lib/galaxy/tools/parser/xml.py
M lib/galaxy/tools/parser/yaml.py
M test/unit/tools/test_collect_primary_datasets.py
Log Message:
-----------
Merge pull request #1349 from jmchilton/planemo_refactor_0
Refactor tool parsing handling toward reuse outside Galaxy
Commit: 58ce52a0bae5971670a99bf41502867b02ebb1f3
https://github.com/galaxyproject/galaxy/commit/58ce52a0bae5971670a99bf41502…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/model/item_attrs.py
M lib/galaxy/model/tool_shed_install/__init__.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/data/__init__.py
M lib/galaxy/tools/parameters/basic.py
M lib/galaxy/tools/parameters/grouping.py
M lib/galaxy/tools/toolbox/base.py
M lib/galaxy/tools/toolbox/panel.py
A lib/galaxy/util/dictifiable.py
M lib/galaxy/web/base/controller.py
M lib/galaxy/webapps/tool_shed/model/__init__.py
Log Message:
-----------
Merge pull request #1350 from jmchilton/dictifiable_refactor
Move Dictifiable out of model package into util.
Commit: 8e0b6af87658cd2a014a16cdf35349db6e61a84d
https://github.com/galaxyproject/galaxy/commit/8e0b6af87658cd2a014a16cdf353…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
R lib/galaxy/util/debugging.py
M lib/galaxy/util/hash_util.py
R lib/galaxy/util/lrucache.py
Log Message:
-----------
Merge pull request #1351 from jmchilton/util_clean_0
Remove some unused stuff from galaxy.util.
Commit: 1ec67c864b3af590c337d86c2f2a6b52ae96fd0e
https://github.com/galaxyproject/galaxy/commit/1ec67c864b3af590c337d86c2f2a…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-16 (Wed, 16 Dec 2015)
Changed paths:
M lib/galaxy/datatypes/sniff.py
M lib/galaxy/model/__init__.py
M lib/galaxy/util/__init__.py
A lib/galaxy/util/multi_byte.py
M tools/data_source/upload.py
Log Message:
-----------
Merge pull request #1352 from jmchilton/multibyte_refactor
Refactor is_multi_byte out of top-level galaxy.util.
Commit: 66944ba7de178cc45ffa7a4aa9253ec4512cb6fd
https://github.com/galaxyproject/galaxy/commit/66944ba7de178cc45ffa7a4aa925…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-17 (Thu, 17 Dec 2015)
Changed paths:
A .ci/flake8_py3_wrapper.sh
A .ci/py3_sources.txt
M lib/galaxy/jobs/metrics/collectl/processes.py
M lib/galaxy/jobs/metrics/instrumenters/meminfo.py
M lib/galaxy/objectstore/s3_multipart_upload.py
M lib/galaxy/tools/toolbox/base.py
M lib/galaxy/tools/toolbox/integrated_panel.py
M lib/galaxy/util/__init__.py
M lib/galaxy/util/backports/importlib/__init__.py
M lib/galaxy/util/biostar.py
M lib/galaxy/util/dictobj.py
M lib/galaxy/util/inflection.py
M lib/galaxy/util/json.py
M lib/galaxy/util/multi_byte.py
M lib/galaxy/util/object_wrapper.py
M lib/galaxy/util/pastescript/loadwsgi.py
M lib/galaxy/util/pastescript/serve.py
M lib/galaxy/util/sanitize_html.py
M lib/galaxy/util/validation.py
M tox.ini
Log Message:
-----------
Lint with Python 3 serveral modules.
Namely the modules I'd like to be shared with planemo, pulsar, etc....
Commit: cdf9380735878d44fee863c86b69a686ab0fd76f
https://github.com/galaxyproject/galaxy/commit/cdf9380735878d44fee863c86b69…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-17 (Thu, 17 Dec 2015)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
PY3 fixes for galaxy.util.
Commit: 7a36b141bd72b7fc2c675254c10779dace9be6e1
https://github.com/galaxyproject/galaxy/commit/7a36b141bd72b7fc2c675254c107…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-17 (Thu, 17 Dec 2015)
Changed paths:
M lib/galaxy/util/aliaspickler.py
M lib/galaxy/util/expressions.py
M lib/galaxy/util/object_wrapper.py
M lib/galaxy/util/odict.py
Log Message:
-----------
PY3 fixes for galaxy.util submodules.
Commit: 41da9b0f88727759d1d2453a90b548858d10ffa7
https://github.com/galaxyproject/galaxy/commit/41da9b0f88727759d1d2453a90b5…
Author: Aysam Guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-17 (Thu, 17 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/tool/tool-form-workflow.js
M client/galaxy/scripts/mvc/workflow/workflow-manager.js
M client/galaxy/scripts/mvc/workflow/workflow-node.js
M client/galaxy/scripts/mvc/workflow/workflow-view-data.js
M client/galaxy/scripts/mvc/workflow/workflow-view-node.js
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M lib/galaxy/managers/workflows.py
M lib/galaxy/model/__init__.py
M lib/galaxy/model/mapping.py
A lib/galaxy/model/migrate/versions/0131_subworkflow_and_input_paramter_modules.py
M lib/galaxy/tools/parameters/__init__.py
M lib/galaxy/web/framework/formbuilder.py
M lib/galaxy/webapps/galaxy/controllers/workflow.py
M lib/galaxy/workflow/modules.py
M lib/galaxy/workflow/run.py
M lib/galaxy/workflow/run_request.py
M static/maps/mvc/tool/tool-form-workflow.js.map
M static/maps/mvc/workflow/workflow-manager.js.map
M static/maps/mvc/workflow/workflow-node.js.map
M static/maps/mvc/workflow/workflow-view-data.js.map
M static/maps/mvc/workflow/workflow-view-node.js.map
M static/maps/mvc/workflow/workflow-view.js.map
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/tool/tool-form-workflow.js
M static/scripts/mvc/workflow/workflow-manager.js
M static/scripts/mvc/workflow/workflow-node.js
M static/scripts/mvc/workflow/workflow-view-data.js
M static/scripts/mvc/workflow/workflow-view-node.js
M static/scripts/mvc/workflow/workflow-view.js
M templates/webapps/galaxy/workflow/editor.mako
M test/api/test_workflows.py
M test/api/test_workflows_from_yaml.py
M test/api/workflows_format_2/converter.py
M test/qunit/tests/workflow_editor_tests.js
M test/unit/test_galaxy_mapping.py
M test/unit/workflows/test_modules.py
M test/unit/workflows/test_run_parameters.py
M test/unit/workflows/test_workflow_progress.py
M test/unit/workflows/workflow_support.py
Log Message:
-----------
Merge pull request #1306 from common-workflow-language/subworkflows
New Workflow Modules - Input Parameters and Subworkflows
Commit: 50e531aa5971bee6f727ad0013b45c4a5d052fc9
https://github.com/galaxyproject/galaxy/commit/50e531aa5971bee6f727ad0013b4…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-17 (Thu, 17 Dec 2015)
Changed paths:
R lib/galaxy/datatypes/checkers.py
M lib/galaxy/datatypes/converters/fastq_to_fqtoc.py
M lib/galaxy/datatypes/sequence.py
M lib/galaxy/datatypes/sniff.py
M lib/galaxy/datatypes/tabular.py
A lib/galaxy/util/checkers.py
M lib/galaxy/webapps/tool_shed/api/repositories.py
M lib/galaxy/webapps/tool_shed/controllers/upload.py
M lib/tool_shed/metadata/metadata_generator.py
M lib/tool_shed/util/commit_util.py
M lib/tool_shed/util/shed_util_common.py
M lib/tool_shed/util/tool_util.py
M tools/data_source/upload.py
Log Message:
-----------
Refactor galaxy.datatypes.checkers into galaxy.util.checkers.
- Primary reason is because it is used all over the place in contexts that have nothing to do with Galaxy datatype classes or datatype registery or sniffing, most importantly by the code in the tool shed for determining if something is a tool or not.
- This code has no dependencies on the datatypes module or any hard dependencies on things not in the Python standard library.
Commit: b0deead9c3260598f83d1ab2ec74b3c3e8974456
https://github.com/galaxyproject/galaxy/commit/b0deead9c3260598f83d1ab2ec74…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-17 (Thu, 17 Dec 2015)
Changed paths:
M client/galaxy/scripts/utils/uploadbox.js
M static/maps/utils/uploadbox.js.map
M static/scripts/utils/uploadbox.js
Log Message:
-----------
Fix change handler association
Commit: 1562c74b2b93aaea78c3fed62ed1de9a76ebe3e2
https://github.com/galaxyproject/galaxy/commit/1562c74b2b93aaea78c3fed62ed1…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2015-12-17 (Thu, 17 Dec 2015)
Changed paths:
A .ci/flake8_py3_wrapper.sh
A .ci/py3_sources.txt
M lib/galaxy/jobs/metrics/collectl/processes.py
M lib/galaxy/jobs/metrics/instrumenters/meminfo.py
M lib/galaxy/objectstore/s3_multipart_upload.py
M lib/galaxy/tools/toolbox/base.py
M lib/galaxy/tools/toolbox/integrated_panel.py
M lib/galaxy/util/__init__.py
M lib/galaxy/util/backports/importlib/__init__.py
M lib/galaxy/util/biostar.py
M lib/galaxy/util/dictobj.py
M lib/galaxy/util/inflection.py
M lib/galaxy/util/json.py
M lib/galaxy/util/multi_byte.py
M lib/galaxy/util/object_wrapper.py
M lib/galaxy/util/pastescript/loadwsgi.py
M lib/galaxy/util/pastescript/serve.py
M lib/galaxy/util/sanitize_html.py
M lib/galaxy/util/validation.py
M tox.ini
Log Message:
-----------
Merge pull request #1354 from jmchilton/py3_0
Lint with Python 3 several modules.
Commit: b4683fbce4cf7c133fdd8af6c6fef58a5bf3c76d
https://github.com/galaxyproject/galaxy/commit/b4683fbce4cf7c133fdd8af6c6fe…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-17 (Thu, 17 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/library/library-foldertoolbar-view.js
M lib/galaxy/webapps/galaxy/api/remote_files.py
M static/maps/mvc/library/library-foldertoolbar-view.js.map
M static/scripts/mvc/library/library-foldertoolbar-view.js
Log Message:
-----------
raise and show specific exception and warning when no files detected
Commit: 6f3852188e35612800c6a5ab47b0dc800263778b
https://github.com/galaxyproject/galaxy/commit/6f3852188e35612800c6a5ab47b0…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-17 (Thu, 17 Dec 2015)
Changed paths:
M lib/galaxy/model/migrate/versions/0131_subworkflow_and_input_paramter_modules.py
Log Message:
-----------
Update documentation in migration 131 to not be copypasta.
Commit: f6557964b6b88b1752ea70e1132610596f6fa103
https://github.com/galaxyproject/galaxy/commit/f6557964b6b88b1752ea70e11326…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-17 (Thu, 17 Dec 2015)
Changed paths:
M lib/galaxy/model/migrate/versions/0131_subworkflow_and_input_paramter_modules.py
Log Message:
-----------
Merge pull request #1361 from dannon/oops_copypasta
Update documentation in migration 131
Commit: 2d7c2019fba1b3de89a5a5183c7bd147a309f958
https://github.com/galaxyproject/galaxy/commit/2d7c2019fba1b3de89a5a5183c7b…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-17 (Thu, 17 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/library/library-foldertoolbar-view.js
M lib/galaxy/webapps/galaxy/api/remote_files.py
M static/maps/mvc/library/library-foldertoolbar-view.js.map
M static/scripts/mvc/library/library-foldertoolbar-view.js
Log Message:
-----------
Merge pull request #1360 from martenson/raise-specific-exception
[15.10] datalibs: raise and show specific exception and warning when no files detected
Commit: abd51e7f791c99a93062b9f2fee7827dea857c20
https://github.com/galaxyproject/galaxy/commit/abd51e7f791c99a93062b9f2fee7…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-17 (Thu, 17 Dec 2015)
Changed paths:
M client/galaxy/scripts/utils/uploadbox.js
M static/maps/utils/uploadbox.js.map
M static/scripts/utils/uploadbox.js
Log Message:
-----------
Merge pull request #1358 from guerler/fix_same_upload_000
[15.10] Fix change handler association
Commit: d9068a808994dee2b1c0ea873365846706e03d70
https://github.com/galaxyproject/galaxy/commit/d9068a808994dee2b1c0ea873365…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2015-12-17 (Thu, 17 Dec 2015)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Merge pull request #1359 from jmchilton/py3_0
PY3 fixes for galaxy.util.
Commit: 872458f8b9ebda4d86863b3d0ca2a9d74e0b53ba
https://github.com/galaxyproject/galaxy/commit/872458f8b9ebda4d86863b3d0ca2…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2015-12-17 (Thu, 17 Dec 2015)
Changed paths:
M lib/galaxy/util/aliaspickler.py
M lib/galaxy/util/expressions.py
M lib/galaxy/util/object_wrapper.py
M lib/galaxy/util/odict.py
Log Message:
-----------
Merge pull request #1362 from jmchilton/py3_1
PY3 fixes for galaxy.util submodules.
Commit: e7f4ec9685f345c13309b16412fd22a6ddadf852
https://github.com/galaxyproject/galaxy/commit/e7f4ec9685f345c13309b16412fd…
Author: Björn Grüning <bjoern(a)gruenings.eu>
Date: 2015-12-17 (Thu, 17 Dec 2015)
Changed paths:
M lib/galaxy/app.py
M lib/galaxy/jobs/command_factory.py
M lib/galaxy/tools/actions/__init__.py
M lib/galaxy/tools/imp_exp/__init__.py
A lib/galaxy/tools/special_tools.py
Log Message:
-----------
Merge pull request #1307 from jmchilton/collection_opts_prereq1
Refactor tool stuff for generic model actions
Commit: 80a35c21841671907d326e4fb6cedb433389648d
https://github.com/galaxyproject/galaxy/commit/80a35c21841671907d326e4fb6ce…
Author: Björn Grüning <bjoern(a)gruenings.eu>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
R lib/galaxy/datatypes/checkers.py
M lib/galaxy/datatypes/converters/fastq_to_fqtoc.py
M lib/galaxy/datatypes/sequence.py
M lib/galaxy/datatypes/sniff.py
M lib/galaxy/datatypes/tabular.py
A lib/galaxy/util/checkers.py
M lib/galaxy/webapps/tool_shed/api/repositories.py
M lib/galaxy/webapps/tool_shed/controllers/upload.py
M lib/tool_shed/metadata/metadata_generator.py
M lib/tool_shed/util/commit_util.py
M lib/tool_shed/util/shed_util_common.py
M lib/tool_shed/util/tool_util.py
M tools/data_source/upload.py
Log Message:
-----------
Merge pull request #1363 from jmchilton/checkers_refactor
Refactor galaxy.datatypes.checkers into galaxy.util.checkers.
Commit: 455372e6bf711d64947768f8b05418f8e6b49647
https://github.com/galaxyproject/galaxy/commit/455372e6bf711d64947768f8b054…
Author: Björn Grüning <bjoern(a)gruenings.eu>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/actions/__init__.py
M lib/galaxy/tools/execute.py
M lib/galaxy/tools/parser/__init__.py
M lib/galaxy/tools/parser/output_actions.py
A lib/galaxy/tools/parser/output_objects.py
M lib/galaxy/tools/parser/xml.py
M lib/galaxy/tools/parser/yaml.py
M lib/galaxy/workflow/extract.py
M test/unit/tools/test_actions.py
M test/unit/tools/test_evaluation.py
Log Message:
-----------
Merge pull request #1353 from jmchilton/output_refactor
Refactor tool output classes out of galaxy.tools and into parser module.
Commit: 04f5ed4552d5b0b837eabded18704eeda5cc8c26
https://github.com/galaxyproject/galaxy/commit/04f5ed4552d5b0b837eabded1870…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-17 (Thu, 17 Dec 2015)
Changed paths:
M client/galaxy/scripts/layout/menu.js
M static/maps/layout/menu.js.map
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/layout/menu.js
Log Message:
-----------
Reimplement menu onclick functionality that appears to have been dropped (probably a bad merge?) in the webpack PR.
Commit: b5ad20401b28e29b727c1212be5443d7dd9c2dad
https://github.com/galaxyproject/galaxy/commit/b5ad20401b28e29b727c1212be54…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/toolbox/base.py
Log Message:
-----------
Refactor UI component out of AbstractToolBox.
If it belongs in the base class ToolBox which is more concerned with Galaxy-spcifics like UI, AbstractToolBox is suppose to be an abstract description of a toolbox - it is about data management.
Commit: 536b4e2a2038d889486bbf0836341e03d737f53c
https://github.com/galaxyproject/galaxy/commit/536b4e2a2038d889486bbf083634…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M lib/galaxy/util/__init__.py
M lib/tool_shed/util/common_util.py
Log Message:
-----------
Improve some random tool shed code.
Commit: 914adfcc0cd5e8b060df059da9a4f8e9b1293fde
https://github.com/galaxyproject/galaxy/commit/914adfcc0cd5e8b060df059da9a4…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M lib/galaxy/tools/loader_directory.py
M lib/galaxy/tools/toolbox/base.py
M lib/tool_shed/metadata/metadata_generator.py
Log Message:
-----------
Sychronize tool shed, planemo, and toolbox code for filtering out non-tool XML files.
A single abstraction will allow toolbox and planemo to deal with other kinds of tools in the future, and the stronger preconditions should eliminate some busy error logging when monitoring a tool directory.
Commit: 20b47f3ca208ded3682f68591f5801b85547efc1
https://github.com/galaxyproject/galaxy/commit/20b47f3ca208ded3682f68591f58…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M lib/galaxy/tools/loader_directory.py
M lib/galaxy/tools/toolbox/base.py
Log Message:
-----------
Update looks_like_a_tool to respect enable_beta_tool_formats.
Default is off obviously, so for instance the tool shed will never think unsupported beta tools are real tools.
Commit: a8ed6146e88642b17273e316c571c5a5a9f4df45
https://github.com/galaxyproject/galaxy/commit/a8ed6146e88642b17273e316c571…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M lib/galaxy/tools/parser/factory.py
M lib/galaxy/tools/parser/yaml.py
M lib/galaxy/util/odict.py
Log Message:
-----------
Tweak YAML tools to use ordered dictionaries.
Order of inputs and outputs in Galaxy is important, so preserve this order if using dictionary-style (both available) for inputs and/or outputs.
Commit: 75e7276e5e9c43ec6f09f68adea2870b3a6917dc
https://github.com/galaxyproject/galaxy/commit/75e7276e5e9c43ec6f09f68adea2…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/toolbox/base.py
M lib/galaxy/tools/toolbox/lineages/tool_shed.py
Log Message:
-----------
Eliminate sqlalchemy and tool shed dependencies from AbstractToolBox.
Provide an extension point instead that allows Galaxy's ToolBox class to provide the functionality that required these dependencies. And optionally load ToolVersion class required for reasoning about tool shed logic.
Commit: e06bf5a32052d6cf474cb5c3d195f632ffe8b9e4
https://github.com/galaxyproject/galaxy/commit/e06bf5a32052d6cf474cb5c3d195…
Author: Marius van den Beek <m.vandenbeek(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M lib/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py
Log Message:
-----------
Allow installation of different repositories with the same name in a single install transaction.
Commit: c6fbf987d2c4422eda793fa817f0ce83931d0119
https://github.com/galaxyproject/galaxy/commit/c6fbf987d2c4422eda793fa817f0…
Author: Marius van den Beek <m.vandenbeek(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M lib/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py
Log Message:
-----------
Whitespaces around operator.
Commit: b7b8f097d5a7617b2997f254b4e0229adfaae623
https://github.com/galaxyproject/galaxy/commit/b7b8f097d5a7617b2997f254b4e0…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M lib/galaxy/tools/parser/yaml.py
Log Message:
-----------
Enhance YAML/dictionary tool rep. to allow output collections.
Commit: f042fe8548ec4a0f2f29b72d0c34736e2ff524f9
https://github.com/galaxyproject/galaxy/commit/f042fe8548ec4a0f2f29b72d0c34…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M test/api/test_jobs.py
Log Message:
-----------
Attempt to fix transiently failing API tests.
- Fix default timeout of wait_on_state api helper. Had the wrong default specified and might fix this failure: https://jenkins.galaxyproject.org/job/docker-api/229/testReport/junit/api.t…
- Modify job search test case to allow a little more time between the history being "ok" and the job, in case there is a timing condition if the HDA is committed first and then job. Also improve the test output in case this isn't the problem.
Commit: 93c6d0542124c220e36c1e90d62e3e2aef607e9a
https://github.com/galaxyproject/galaxy/commit/93c6d0542124c220e36c1e90d62e…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M lib/galaxy/tools/parser/xml.py
M lib/galaxy/tools/test.py
M test/base/twilltestcase.py
A test/functional/tools/maxseconds.xml
M test/functional/tools/samples_tool_conf.xml
Log Message:
-----------
Revise and fix waiting for tool tests.
- maxseconds on test tag stopped being respected at some point, fix that.
- maxseconds on test tag stopped being parsed at some later point, fix that.
- Revise default behavior so it can be overridden with yet another testing environment variable GALAXY_TEST_DEFAULT_WAIT.
- Add test case to ensure there is no future regression of these behaviors.
Commit: ffb973477b02c4bc1cbfa95c7a6247f1d7949fdd
https://github.com/galaxyproject/galaxy/commit/ffb973477b02c4bc1cbfa95c7a62…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M scripts/functional_tests.py
Log Message:
-----------
Do not check for tool migrations when running tests.
This is an inappropriate time for the check and causes slow down when running tests.
Commit: 641b275aa424421591833f6a3bce3ebd8b358017
https://github.com/galaxyproject/galaxy/commit/641b275aa424421591833f6a3bce…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M test/api/helpers.py
M test/api/test_jobs.py
Log Message:
-----------
Wait on jobs and history in certain API test cases.
This strategy proved to work around certain race conditions in tool testing so hopefully it will solve the transiently failing job searching and filtering test cases.
Commit: 57a76065a54f63a47874158c121f002308648025
https://github.com/galaxyproject/galaxy/commit/57a76065a54f63a47874158c121f…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M test/api/helpers.py
Log Message:
-----------
Fix missing assertion pointed out @nsoranzo.
Lots of other tests would fail if simple uploads aren't working, but it is better to be direct and very explicit about why this particular test is failing.
Commit: 2817eabf95a980a250e272c3917e5dcfc24743b2
https://github.com/galaxyproject/galaxy/commit/2817eabf95a980a250e272c3917e…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M test/functional/tools/maxseconds.xml
Log Message:
-----------
Fail maxseconds test tool if sleep is interrupted.
Commit: 2c657b98e2945f48e1339f229e7de4de9f40fe4c
https://github.com/galaxyproject/galaxy/commit/2c657b98e2945f48e1339f229e7d…
Author: mvdbeek <m.vandenbeek(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M lib/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py
Log Message:
-----------
Break out of loop once we know the repo is already in all_repo_info_dicts.
Commit: 9752fa76c54e927918560d474df4fbae6551d4ca
https://github.com/galaxyproject/galaxy/commit/9752fa76c54e927918560d474df4…
Author: mvdbeek <m.vandenbeek(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M lib/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py
Log Message:
-----------
Typo
Commit: 0203a69d88c854c1fe3a210c83ff3ee0d943f4df
https://github.com/galaxyproject/galaxy/commit/0203a69d88c854c1fe3a210c83ff…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M client/bower.json
M client/galaxy/scripts/apps/analysis.js
M client/galaxy/scripts/layout/menu.js
A client/galaxy/scripts/libs/bootstrap-tour.js
M client/galaxy/scripts/mvc/tool/tool-form-composite.js
A client/galaxy/scripts/mvc/tours.js
M client/galaxy/scripts/mvc/upload/upload-button.js
M client/galaxy/style/less/galaxy_bootstrap/variables.less
M client/grunt-tasks/install-libs.js
M config/galaxy.ini.sample
M lib/galaxy/app.py
M lib/galaxy/config.py
A lib/galaxy/tours/__init__.py
A lib/galaxy/webapps/galaxy/api/tours.py
M lib/galaxy/webapps/galaxy/buildapp.py
A static/maps/galaxy.menu.js.map
M static/maps/layout/menu.js.map
A static/maps/libs/bootstrap-tour.js.map
A static/maps/mvc/tours.js.map
M static/maps/mvc/upload/upload-button.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
A static/scripts/galaxy.menu.js
M static/scripts/layout/menu.js
A static/scripts/libs/bootstrap-tour.js
A static/scripts/mvc/tours.js
M static/scripts/mvc/upload/upload-button.js
M static/style/blue/base.css
A static/style/blue/bootstrap-tour.css
M templates/base.mako
M templates/base/base_panels.mako
Log Message:
-----------
Tours.
Commit: 40382fb0c1d7ec38252413aa50b3cb24418d158e
https://github.com/galaxyproject/galaxy/commit/40382fb0c1d7ec38252413aa50b3…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
A config/plugins/tours/galaxy_ui.yaml
Log Message:
-----------
Add slightly modified intro tour from bjoern, mostly compatible.
Commit: cced5c3378937c14787884d91a613f56112ce7ff
https://github.com/galaxyproject/galaxy/commit/cced5c3378937c14787884d91a61…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M lib/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py
Log Message:
-----------
Merge pull request #1366 from mvdbeek/fix_repository_install
Allow installation of different repositories with the same name in a …
Commit: f107b17928bddbe4f87e757f2301d56b807253cf
https://github.com/galaxyproject/galaxy/commit/f107b17928bddbe4f87e757f2301…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M client/galaxy/scripts/apps/analysis.js
M client/galaxy/scripts/mvc/tours.js
M client/webpack.config.js
M static/maps/mvc/tours.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/tours.js
Log Message:
-----------
Refactor a bit, adjust textinsert action to trigger 'change' on the element.
Commit: 1e5640163a36c12e5f9e719358a1653a0fb18401
https://github.com/galaxyproject/galaxy/commit/1e5640163a36c12e5f9e719358a1…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/tours.js
M client/galaxy/scripts/onload.js
M static/maps/mvc/tours.js.map
M static/maps/onload.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/bundled/login.bundled.js
M static/scripts/bundled/login.bundled.js.map
M static/scripts/mvc/tours.js
M static/scripts/onload.js
Log Message:
-----------
Tour shim in onload, check sessionStorage (or would local be more appropriate?)
Commit: 43e38414e6770b447d9de19450f2fe738a07f471
https://github.com/galaxyproject/galaxy/commit/43e38414e6770b447d9de19450f2…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M scripts/common_startup.sh
Log Message:
-----------
--pre does not exist on pip < 1.4, but on pip < 1.4, the default
behavior was the same as using --pre on pip >= 1.4. Therefore, detect
the version of pip and add --pre if necessary.
Fixes #1134
Commit: 7110a0cc5e411062b8c6e5857e04ce10f121ffdd
https://github.com/galaxyproject/galaxy/commit/7110a0cc5e411062b8c6e5857e04…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M client/galaxy/scripts/onload.js
M static/maps/onload.js.map
M static/scripts/bundled/libs.bundled.js.map
Log Message:
-----------
Document necessary tweak.
Commit: 6ed3ceafed73ace54537f79a72caec02ef798cbb
https://github.com/galaxyproject/galaxy/commit/6ed3ceafed73ace54537f79a72ca…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M client/galaxy/scripts/layout/menu.js
M static/maps/layout/menu.js.map
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/layout/menu.js
Log Message:
-----------
Merge pull request #1365 from dannon/redo_click
Reimplement menu onclick functionality that appears to have been drop…
Commit: 6678544caa7bc5a415984fae448826aefc1ec6ea
https://github.com/galaxyproject/galaxy/commit/6678544caa7bc5a415984fae4488…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M scripts/common_startup.sh
Log Message:
-----------
Merge pull request #1372 from natefoo/pip-pre-fix
Fix usage of --pre with pip < 1.4
Commit: 9e7eaaa7aaf9c9a6928edc08abecbc26a3a76004
https://github.com/galaxyproject/galaxy/commit/9e7eaaa7aaf9c9a6928edc08abec…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/tours.js
M client/galaxy/scripts/onload.js
M static/maps/mvc/tours.js.map
M static/maps/onload.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/bundled/login.bundled.js
M static/scripts/bundled/login.bundled.js.map
M static/scripts/mvc/tours.js
M static/scripts/onload.js
Log Message:
-----------
Finish sessionStorage and restart of tours across multiple pages.
Commit: 5a3524245b41f2978b81ee01176dcf1caa382d50
https://github.com/galaxyproject/galaxy/commit/5a3524245b41f2978b81ee01176d…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/tours.js
M client/galaxy/scripts/onload.js
M static/maps/mvc/tours.js.map
M static/maps/onload.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/bundled/login.bundled.js
M static/scripts/bundled/login.bundled.js.map
M static/scripts/mvc/tours.js
M static/scripts/onload.js
Log Message:
-----------
Actually let people end a tour.
Commit: ffede653023a49aabcfcc958816b20e0e183a4ba
https://github.com/galaxyproject/galaxy/commit/ffede653023a49aabcfcc958816b…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M client/galaxy/scripts/onload.js
M static/maps/onload.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/onload.js
Log Message:
-----------
Debugging cruft.
Commit: 8c1beb2af5633660efc8ec7caaa871416f2508ea
https://github.com/galaxyproject/galaxy/commit/8c1beb2af5633660efc8ec7caaa8…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/tours.js
M client/galaxy/scripts/onload.js
M config/plugins/tours/galaxy_ui.yaml
M lib/galaxy/tours/__init__.py
M static/maps/mvc/tours.js.map
M static/maps/onload.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/tours.js
M static/scripts/onload.js
Log Message:
-----------
title override, working on fixing style.
Commit: 4efa8e73b3479f3914b6b54d6a8bc4651aec7ef4
https://github.com/galaxyproject/galaxy/commit/4efa8e73b3479f3914b6b54d6a8b…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/tours.js
M client/galaxy/scripts/onload.js
M config/plugins/tours/galaxy_ui.yaml
M lib/galaxy/tours/__init__.py
M static/maps/mvc/tours.js.map
M static/maps/onload.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/tours.js
M static/scripts/onload.js
Log Message:
-----------
Consolidate to standard options dict, minor refactorings.
Commit: 38b3c6e97aa0d6fe595be0f6e9021109ddd17226
https://github.com/galaxyproject/galaxy/commit/38b3c6e97aa0d6fe595be0f6e902…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/bundled/login.bundled.js
M static/scripts/bundled/login.bundled.js.map
Log Message:
-----------
Build client, bundle.
Commit: 9b14d515db16d3a769532740a9b807b37a1177bd
https://github.com/galaxyproject/galaxy/commit/9b14d515db16d3a769532740a9b8…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M static/style/blue/bootstrap-tour.css
M templates/base/base_panels.mako
M templates/js-app.mako
Log Message:
-----------
Stylize!
Commit: e8116b8bbf22373ae8e784e83cf55426fd5b60bc
https://github.com/galaxyproject/galaxy/commit/e8116b8bbf22373ae8e784e83cf5…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M client/galaxy/style/less/galaxy_bootstrap/variables.less
M static/style/blue/base.css
Log Message:
-----------
Flip global vars back, now that bootstrap-tours.css is included and will override.
Commit: aecc5d864f8e211c6f60ea8717f726c5807a1a76
https://github.com/galaxyproject/galaxy/commit/aecc5d864f8e211c6f60ea8717f7…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/tours.js
M config/plugins/tours/galaxy_ui.yaml
M static/maps/mvc/tours.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/bundled/login.bundled.js
M static/scripts/bundled/login.bundled.js.map
M static/scripts/mvc/tours.js
Log Message:
-----------
Make tours.js safe (but possibly not functional wrt/ listing) to use on pages without Galaxy object.
Commit: 2c5241dc3bba2114b43fe7f7e6e2efb17b705a28
https://github.com/galaxyproject/galaxy/commit/2c5241dc3bba2114b43fe7f7e6e2…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-18 (Fri, 18 Dec 2015)
Changed paths:
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/bundled/login.bundled.js
M static/scripts/bundled/login.bundled.js.map
Log Message:
-----------
Full client rebuild.
Commit: 048561d282d32373e4432edcccb54fe963eb6f95
https://github.com/galaxyproject/galaxy/commit/048561d282d32373e4432edcccb5…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-19 (Sat, 19 Dec 2015)
Changed paths:
M client/galaxy/scripts/layout/page.js
M client/galaxy/scripts/mvc/ui/ui-modal.js
M client/galaxy/scripts/utils/uploadbox.js
M client/galaxy/style/less/ui.less
M static/maps/layout/page.js.map
M static/maps/mvc/ui/ui-modal.js.map
M static/maps/utils/uploadbox.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/layout/page.js
M static/scripts/mvc/ui/ui-modal.js
M static/scripts/utils/uploadbox.js
M static/style/blue/base.css
M test/qunit/test-app.js
A test/qunit/tests/modal_dialog_tests.html
A test/qunit/tests/modal_dialog_tests.js
Log Message:
-----------
Avoid duplicate upload entries, revise modals, add tests
Revise styles
Add more tests
Commit: 39e7f025ebd9386f5b07ca99f3b233cd94299c32
https://github.com/galaxyproject/galaxy/commit/39e7f025ebd9386f5b07ca99f3b2…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-19 (Sat, 19 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/ui/ui-modal.js
M client/galaxy/scripts/mvc/ui/ui-popover.js
M client/galaxy/scripts/mvc/upload/default/default-view.js
M client/galaxy/scripts/mvc/upload/upload-ftp.js
M client/galaxy/scripts/mvc/upload/upload-settings.js
M client/galaxy/style/less/ui.less
M static/maps/mvc/ui/ui-popover.js.map
M static/maps/mvc/upload/default/default-view.js.map
M static/maps/mvc/upload/upload-ftp.js.map
M static/maps/mvc/upload/upload-settings.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/ui/ui-popover.js
M static/scripts/mvc/upload/default/default-view.js
M static/scripts/mvc/upload/upload-ftp.js
M static/scripts/mvc/upload/upload-settings.js
R test/qunit/tests/modal_dialog_tests.html
R test/qunit/tests/modal_dialog_tests.js
A test/qunit/tests/modal_tests.html
A test/qunit/tests/modal_tests.js
A test/qunit/tests/popover_tests.html
A test/qunit/tests/popover_tests.js
Log Message:
-----------
Refine popover wrapper
Revise popover, add tests
Commit: 17d733b0428f125e6deb1007937dff6b9bfe80b2
https://github.com/galaxyproject/galaxy/commit/17d733b0428f125e6deb1007937d…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-19 (Sat, 19 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/ui/ui-modal.js
M static/maps/mvc/ui/ui-modal.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/ui/ui-modal.js
Log Message:
-----------
Move closing events to show/hide function
Commit: 36d9514e26037a927ad8becab9a834a4807abc50
https://github.com/galaxyproject/galaxy/commit/36d9514e26037a927ad8becab9a8…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-20 (Sun, 20 Dec 2015)
Changed paths:
M lib/galaxy/objectstore/pulsar.py
M lib/galaxy/tools/parser/output_objects.py
M lib/galaxy/tools/toolbox/base.py
M lib/galaxy/tools/toolbox/panel.py
M lib/galaxy/util/__init__.py
M lib/galaxy/util/expressions.py
M lib/galaxy/util/object_wrapper.py
M lib/galaxy/util/topsort.py
M test/unit/test_objectstore.py
Log Message:
-----------
More Python 3 fixes.
This fixes all unit tests for code exclusively covering the stuff I'm moving into the galaxy-lib that will be used by planemo, pulsar, and future tooling efforts.
Commit: 355bb281e21e701e05d1f671f080022de9df987b
https://github.com/galaxyproject/galaxy/commit/355bb281e21e701e05d1f671f080…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-20 (Sun, 20 Dec 2015)
Changed paths:
M lib/galaxy/managers/workflows.py
M lib/galaxy/webapps/galaxy/api/workflows.py
M lib/galaxy/workflow/run_request.py
M test/api/test_workflows.py
M test/unit/workflows/test_run_parameters.py
Log Message:
-----------
Finish swapping unencoded ids with order_index in workflows API.
Running a workflow or showing a workflow can both restore the previous behavior by passing legacy=True as an API parameter. By changing these two endpoints in tandem I believe backward compatiblity for most existing code should be maintained unless:
- The external application saved these workflow IDs previously and re-runs workflows without refetching the workflow definition. I could imagine Refinery for instance might do this and will have to update indexed workflows or add legacy=True to workflow requests.
- The external application contacted the database directly after using this API endpoint to fetch more information about the step (seems unlikely).
See conversation:
- http://dev.list.galaxyproject.org/workflow-API-step-order-vs-step-id-in-bio…
Rebased with changes suggested by @nsoranzo.
Commit: 6eb8eae3967d62909f2b4d5fcded46f5ea411b40
https://github.com/galaxyproject/galaxy/commit/6eb8eae3967d62909f2b4d5fcded…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-20 (Sun, 20 Dec 2015)
Changed paths:
M client/galaxy/scripts/layout/page.js
M client/galaxy/scripts/mvc/ui/ui-modal.js
M client/galaxy/scripts/mvc/ui/ui-popover.js
M client/galaxy/scripts/mvc/upload/default/default-view.js
M client/galaxy/scripts/mvc/upload/upload-ftp.js
M client/galaxy/scripts/mvc/upload/upload-settings.js
M client/galaxy/scripts/utils/uploadbox.js
M client/galaxy/style/less/ui.less
M static/maps/layout/page.js.map
M static/maps/mvc/ui/ui-modal.js.map
M static/maps/mvc/ui/ui-popover.js.map
M static/maps/mvc/upload/default/default-view.js.map
M static/maps/mvc/upload/upload-ftp.js.map
M static/maps/mvc/upload/upload-settings.js.map
M static/maps/utils/uploadbox.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/layout/page.js
M static/scripts/mvc/ui/ui-modal.js
M static/scripts/mvc/ui/ui-popover.js
M static/scripts/mvc/upload/default/default-view.js
M static/scripts/mvc/upload/upload-ftp.js
M static/scripts/mvc/upload/upload-settings.js
M static/scripts/utils/uploadbox.js
M static/style/blue/base.css
M test/qunit/test-app.js
A test/qunit/tests/modal_tests.html
A test/qunit/tests/modal_tests.js
A test/qunit/tests/popover_tests.html
A test/qunit/tests/popover_tests.js
Log Message:
-----------
Merge pull request #1377 from guerler/revise_upload_000
Uploader enhancements, modal and popover cleanup, fixes and new test cases
Commit: ae2b94824a322909fb29277ea2571c419d09946b
https://github.com/galaxyproject/galaxy/commit/ae2b94824a322909fb29277ea257…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-21 (Mon, 21 Dec 2015)
Changed paths:
M lib/galaxy/objectstore/pulsar.py
M lib/galaxy/tools/parser/output_objects.py
M lib/galaxy/tools/toolbox/base.py
M lib/galaxy/tools/toolbox/panel.py
M lib/galaxy/util/__init__.py
M lib/galaxy/util/expressions.py
M lib/galaxy/util/object_wrapper.py
M lib/galaxy/util/topsort.py
M test/unit/test_objectstore.py
Log Message:
-----------
Merge pull request #1376 from jmchilton/py3_0
More Python 3 fixes.
Commit: e325eba37c159e78a20895edbd6d521657f9b650
https://github.com/galaxyproject/galaxy/commit/e325eba37c159e78a20895edbd6d…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-21 (Mon, 21 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/tours.js
M config/plugins/tours/galaxy_ui.yaml
M lib/galaxy/tours/__init__.py
M lib/galaxy/webapps/galaxy/api/tours.py
M static/maps/mvc/tours.js.map
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/tours.js
Log Message:
-----------
Some tweaks care of @bgruening. This adds (slightly tweaked) functionality to support a series of clicks, still needs a delay between clicks, and since it's the most common case that pre/postclick will be a single item, a list shouldn't be required here.
Commit: 630ac3658f3c64bd9a9abe5757cce0ed01cad229
https://github.com/galaxyproject/galaxy/commit/630ac3658f3c64bd9a9abe5757cc…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-22 (Tue, 22 Dec 2015)
Changed paths:
M lib/galaxy/exceptions/error_codes.py
M lib/galaxy/tools/deps/commands.py
M lib/galaxy/tools/deps/containers.py
M lib/galaxy/tools/lint.py
M lib/galaxy/tools/linters/inputs.py
M lib/galaxy/tools/linters/stdio.py
M lib/galaxy/tools/parser/output_objects.py
M lib/galaxy/tools/parser/yaml.py
M lib/galaxy/tools/toolbox/base.py
M lib/galaxy/tools/toolbox/panel.py
M lib/galaxy/util/__init__.py
M lib/galaxy/util/heartbeat.py
M lib/galaxy/util/json.py
M lib/galaxy/util/xml_macros.py
Log Message:
-----------
Python 3 fixes and galaxy-lib updates from planemo.
(Minus changes for conda which - should be merged as their own PR obviously.)
Commit: f874d559b7db28c3fa7b4df6844f077da419911a
https://github.com/galaxyproject/galaxy/commit/f874d559b7db28c3fa7b4df6844f…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-22 (Tue, 22 Dec 2015)
Changed paths:
M lib/galaxy/tools/loader_directory.py
M lib/galaxy/tools/parser/factory.py
M lib/galaxy/tools/parser/yaml.py
M lib/galaxy/tools/toolbox/base.py
M lib/galaxy/util/odict.py
M lib/tool_shed/metadata/metadata_generator.py
Log Message:
-----------
Merge pull request #1368 from jmchilton/looks_like_a_tool
Unify and Abstract Code for Checking if File Looks Like a Tool
Commit: c3580da7b826b42de631017d4d2baf7e6ac3cfdf
https://github.com/galaxyproject/galaxy/commit/c3580da7b826b42de631017d4d2b…
Author: Marius van den Beek <m.vandenbeek(a)gmail.com>
Date: 2015-12-22 (Tue, 22 Dec 2015)
Changed paths:
M lib/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py
Log Message:
-----------
Allow installation of different repositories with the same name in a single install transaction.
Commit: 52b66d0dee8c026bfb8858671f900b862837fae5
https://github.com/galaxyproject/galaxy/commit/52b66d0dee8c026bfb8858671f90…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-22 (Tue, 22 Dec 2015)
Changed paths:
M lib/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py
Log Message:
-----------
Merge pull request #1385 from martenson/port-marius-ts-fix
[15.10] Port marius TS fix
Commit: 5d26f589cc475ff95b97ef2dcb34d5a290079e8b
https://github.com/galaxyproject/galaxy/commit/5d26f589cc475ff95b97ef2dcb34…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-22 (Tue, 22 Dec 2015)
Changed paths:
M lib/galaxy/tools/parser/xml.py
M lib/galaxy/tools/test.py
M scripts/functional_tests.py
M test/api/helpers.py
M test/api/test_jobs.py
M test/base/twilltestcase.py
A test/functional/tools/maxseconds.xml
M test/functional/tools/samples_tool_conf.xml
Log Message:
-----------
Merge pull request #1295 from jmchilton/test_fixes_backport_15_10
[15.10] Backport various testing fixes.
Commit: 61cba6c9429fe790da19f843d8e2b0d415459b4c
https://github.com/galaxyproject/galaxy/commit/61cba6c9429fe790da19f843d8e2…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-22 (Tue, 22 Dec 2015)
Changed paths:
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/toolbox/base.py
M lib/galaxy/tools/toolbox/lineages/tool_shed.py
M lib/galaxy/util/__init__.py
M lib/tool_shed/util/common_util.py
Log Message:
-----------
Merge pull request #1367 from jmchilton/toolbox_refactor_0
Refactor AbstractToolbox toward reuse outside Galaxy
Commit: 4eefd885eccd0c42c7a74c8415add3a948a91135
https://github.com/galaxyproject/galaxy/commit/4eefd885eccd0c42c7a74c8415ad…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2015-12-22 (Tue, 22 Dec 2015)
Changed paths:
A lib/galaxy/dependencies/pinned-requirements.txt
M lib/galaxy/dependencies/requirements.txt
M run.sh
M run_tests.sh
M scripts/common_startup.sh
Log Message:
-----------
Improve startup options related to wheel/dependency/virtualenv
management. Drop hard requirement on lzo (doubt anyone other than
usegalaxy.org is using it, but it will be added as a extras option for
bxlab/bx-python for anyone who is).
Fixes #1150
Commit: 9934a45134283d307814058fa09e4b26d3d8452f
https://github.com/galaxyproject/galaxy/commit/9934a45134283d307814058fa09e…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2015-12-22 (Tue, 22 Dec 2015)
Changed paths:
M tox.ini
Log Message:
-----------
Run tox/Travis with --no-create-venv instead of --skip-venv
Commit: ded904cb12580723b192fe571cf2a4f20ec16619
https://github.com/galaxyproject/galaxy/commit/ded904cb12580723b192fe571cf2…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-23 (Wed, 23 Dec 2015)
Changed paths:
M lib/galaxy/exceptions/error_codes.py
M lib/galaxy/tools/deps/commands.py
M lib/galaxy/tools/deps/containers.py
M lib/galaxy/tools/lint.py
M lib/galaxy/tools/linters/inputs.py
M lib/galaxy/tools/linters/stdio.py
M lib/galaxy/tools/parser/output_objects.py
M lib/galaxy/tools/parser/yaml.py
M lib/galaxy/tools/toolbox/base.py
M lib/galaxy/tools/toolbox/panel.py
M lib/galaxy/util/__init__.py
M lib/galaxy/util/heartbeat.py
M lib/galaxy/util/json.py
M lib/galaxy/util/xml_macros.py
Log Message:
-----------
Merge pull request #1388 from jmchilton/py3_2
Python 3 fixes and galaxy-lib updates from planemo.
Commit: 26d7e97ed7b4eaa845bf86fd4991b1fbf4a3ead0
https://github.com/galaxyproject/galaxy/commit/26d7e97ed7b4eaa845bf86fd4991…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-23 (Wed, 23 Dec 2015)
Changed paths:
A lib/galaxy/dependencies/pinned-requirements.txt
M lib/galaxy/dependencies/requirements.txt
M run.sh
M run_tests.sh
M scripts/common_startup.sh
M tox.ini
Log Message:
-----------
Merge pull request #1389 from natefoo/wheel-startup-option-improvements
Improve startup options related to wheel/dependency/virtualenv management.
Commit: 6ca159136638e54a0fe9fe471202aaa788987cf1
https://github.com/galaxyproject/galaxy/commit/6ca159136638e54a0fe9fe471202…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2015-12-23 (Wed, 23 Dec 2015)
Changed paths:
M lib/galaxy/dependencies/pinned-requirements.txt
Log Message:
-----------
Added hashes
Fixes #1260
Commit: ddaa1189f75627f516926b5363398fe7e24fe992
https://github.com/galaxyproject/galaxy/commit/ddaa1189f75627f516926b536339…
Author: Kyle Ellrott <kellrott(a)gmail.com>
Date: 2015-12-23 (Wed, 23 Dec 2015)
Changed paths:
M lib/galaxy/util/directory_hash.py
Log Message:
-----------
Adding uuid support to directory_hash_id
Commit: 8f34f2a6104ff595d411bfc5e77b488f2c86dfd9
https://github.com/galaxyproject/galaxy/commit/8f34f2a6104ff595d411bfc5e77b…
Author: Kyle Ellrott <kellrott(a)gmail.com>
Date: 2015-12-23 (Wed, 23 Dec 2015)
Changed paths:
M lib/galaxy/util/directory_hash.py
Log Message:
-----------
Fixing issues for PR unit testing and linting
Commit: 4840a3d8b1caae9666eeebf95d4aeaebaee8260b
https://github.com/galaxyproject/galaxy/commit/4840a3d8b1caae9666eeebf95d4a…
Author: Kyle Ellrott <kellrott(a)gmail.com>
Date: 2015-12-23 (Wed, 23 Dec 2015)
Changed paths:
M lib/galaxy/util/directory_hash.py
Log Message:
-----------
Fixing lint problem
Commit: 2466b1cb65757b0157dab67a16c7bbfd7b48c710
https://github.com/galaxyproject/galaxy/commit/2466b1cb65757b0157dab67a16c7…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-24 (Thu, 24 Dec 2015)
Changed paths:
M lib/galaxy/util/directory_hash.py
Log Message:
-----------
Merge pull request #1397 from kellrott/dev
Adding uuid support to directory_hash_id
Commit: ed11f7ab00b0ff3f414dc23736c054a655b44663
https://github.com/galaxyproject/galaxy/commit/ed11f7ab00b0ff3f414dc23736c0…
Author: Bjoern Gruening <bjoern.gruening(a)gmail.com>
Date: 2015-12-25 (Fri, 25 Dec 2015)
Changed paths:
M lib/galaxy/web/base/interactive_environments.py
Log Message:
-----------
Offer galaxy_web_port in all scenarios, this can be useful in some local dev settings.
Commit: 7b118990d2bee4377b364373fd596b88d0275307
https://github.com/galaxyproject/galaxy/commit/7b118990d2bee4377b364373fd59…
Author: Bjoern Gruening <bjoern.gruening(a)gmail.com>
Date: 2015-12-25 (Fri, 25 Dec 2015)
Changed paths:
M lib/galaxy/web/proxy/js/lib/proxy.js
Log Message:
-----------
Catch errors in some wired cases. This will prevent the proxy to crash badly if the Docker container just disappears.
Commit: 1873d2c5edbb44eb0e8138612d55510b3492782b
https://github.com/galaxyproject/galaxy/commit/1873d2c5edbb44eb0e8138612d55…
Author: Bjoern Gruening <bjoern.gruening(a)gmail.com>
Date: 2015-12-25 (Fri, 25 Dec 2015)
Changed paths:
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
Log Message:
-----------
update js scripts
Commit: 47a44202673839fe1ff00408c50c533ddd823a27
https://github.com/galaxyproject/galaxy/commit/47a44202673839fe1ff00408c50c…
Author: Bjoern Gruening <bjoern.gruening(a)gmail.com>
Date: 2015-12-25 (Fri, 25 Dec 2015)
Changed paths:
A config/plugins/interactive_environments/jupyter/config/jupyter.ini.sample
A config/plugins/interactive_environments/jupyter/config/jupyter.xml
A config/plugins/interactive_environments/jupyter/static/js/jupyter.js
A config/plugins/interactive_environments/jupyter/templates/jupyter.mako
Log Message:
-----------
Add Jupyter Interactive Environment
Commit: 7269f76e6e8227d26c928e76cd81941498c0acd7
https://github.com/galaxyproject/galaxy/commit/7269f76e6e8227d26c928e76cd81…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-26 (Sat, 26 Dec 2015)
Changed paths:
M test/functional/tools/samples_tool_conf.xml
Log Message:
-----------
Remove transiently failing maxseconds.xml framework test.
Commit: 79bbc97a189bea03392bff2ab6a819aca1fad0db
https://github.com/galaxyproject/galaxy/commit/79bbc97a189bea03392bff2ab6a8…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-26 (Sat, 26 Dec 2015)
Changed paths:
M test/tool_shed/base/twilltestcase.py
Log Message:
-----------
Attempt to fix transiently failing capsule TS test.
Guess here is that a flush is not occuring on that file because it is happening as part of garbage collection and not explictly as part of an explicit close.
Commit: 6aa7691a637e86491a51d41a1672521f42a06bb5
https://github.com/galaxyproject/galaxy/commit/6aa7691a637e86491a51d41a1672…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-26 (Sat, 26 Dec 2015)
Changed paths:
M lib/galaxy/managers/workflows.py
M lib/galaxy/webapps/galaxy/api/workflows.py
M lib/galaxy/workflow/run_request.py
M test/api/test_workflows.py
M test/unit/workflows/test_run_parameters.py
Log Message:
-----------
Merge pull request #1137 from jmchilton/workflow_api_order_2
Finish swapping unencoded ids with order_index in workflows API.
Commit: 1148081435e6eb4075eb62783129299ebbd4d490
https://github.com/galaxyproject/galaxy/commit/1148081435e6eb4075eb62783129…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-26 (Sat, 26 Dec 2015)
Changed paths:
M config/dependency_resolvers_conf.xml.sample
M config/galaxy.ini.sample
M doc/source/admin/dependency_resolvers.rst
M lib/galaxy/jobs/__init__.py
M lib/galaxy/jobs/runners/__init__.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/deps/__init__.py
A lib/galaxy/tools/deps/conda_util.py
M lib/galaxy/tools/deps/resolvers/__init__.py
A lib/galaxy/tools/deps/resolvers/conda.py
M lib/galaxy/util/checkers.py
M test/unit/jobs/test_job_wrapper.py
A test/unit/tools/test_conda_resolution.py
Log Message:
-----------
Implement a conda dependency resolver.
Much more information on planemo PR that I used to build a test bed for this:
https://github.com/galaxyproject/planemo/pull/392
Also syncs galaxy with planemo shared library changed.
Commit: 38d40e7af11525348bb54bad3a3a8496539a2a3a
https://github.com/galaxyproject/galaxy/commit/38d40e7af11525348bb54bad3a3a…
Author: Bjoern Gruening <bjoern.gruening(a)gmail.com>
Date: 2015-12-27 (Sun, 27 Dec 2015)
Changed paths:
M config/plugins/interactive_environments/jupyter/static/js/jupyter.js
M config/plugins/interactive_environments/jupyter/templates/jupyter.mako
Log Message:
-----------
move keep_alive into jupyter.js
Commit: 6ac01675f3f37a6af1d498b96cad753a03a8a776
https://github.com/galaxyproject/galaxy/commit/6ac01675f3f37a6af1d498b96cad…
Author: Bjoern Gruening <bjoern.gruening(a)gmail.com>
Date: 2015-12-27 (Sun, 27 Dec 2015)
Changed paths:
M config/plugins/interactive_environments/jupyter/config/jupyter.ini.sample
Log Message:
-----------
Change default image name to a versioned tagged Docker release.
Commit: 4e55f7e519a0e03805e0f3d91ab8de47c357d040
https://github.com/galaxyproject/galaxy/commit/4e55f7e519a0e03805e0f3d91ab8…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-27 (Sun, 27 Dec 2015)
Changed paths:
M lib/galaxy/web/base/interactive_environments.py
M lib/galaxy/web/proxy/js/lib/proxy.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
Log Message:
-----------
Merge pull request #1399 from bgruening/ie
Interactive Environment updates
Commit: 798c7e20c33860ada2bb066277a3280488e25492
https://github.com/galaxyproject/galaxy/commit/798c7e20c33860ada2bb066277a3…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2015-12-27 (Sun, 27 Dec 2015)
Changed paths:
A config/plugins/interactive_environments/jupyter/config/jupyter.ini.sample
A config/plugins/interactive_environments/jupyter/config/jupyter.xml
A config/plugins/interactive_environments/jupyter/static/js/jupyter.js
A config/plugins/interactive_environments/jupyter/templates/jupyter.mako
Log Message:
-----------
Merge pull request #1400 from bgruening/jupyter
Add Jupyter Interactive Environment
Commit: 14a618ee3ab084e43f51f72136afd6b4c482b4cf
https://github.com/galaxyproject/galaxy/commit/14a618ee3ab084e43f51f72136af…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2015-12-28 (Mon, 28 Dec 2015)
Changed paths:
M test/functional/tools/samples_tool_conf.xml
M test/tool_shed/base/twilltestcase.py
Log Message:
-----------
Merge pull request #1401 from jmchilton/transient_tests_2
Fix and potential fix for transiently failing tests.
Commit: 578e201d64aa33224a586fe7928a8be5b476d332
https://github.com/galaxyproject/galaxy/commit/578e201d64aa33224a586fe7928a…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-28 (Mon, 28 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/tours.js
M client/galaxy/scripts/onload.js
M static/maps/mvc/tours.js.map
M static/maps/onload.js.map
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/tours.js
M static/scripts/onload.js
Log Message:
-----------
Launch tour on GET arg (?tour_id=core.galaxy_ui).
Commit: 4322f5e9b9e152aec75339925228b90ef759b47b
https://github.com/galaxyproject/galaxy/commit/4322f5e9b9e152aec75339925228…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-29 (Tue, 29 Dec 2015)
Changed paths:
A config/plugins/tours/core.galaxy_ui.yaml
R config/plugins/tours/galaxy_ui.yaml
M lib/galaxy/tours/__init__.py
Log Message:
-----------
Force tour_id to be locked to filename, instead of allowing these to be out of sync.
Commit: 401583d730a6d5d1e57c82bb08c3216b40856d8f
https://github.com/galaxyproject/galaxy/commit/401583d730a6d5d1e57c82bb08c3…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2015-12-29 (Tue, 29 Dec 2015)
Changed paths:
M client/galaxy/scripts/mvc/tours.js
M static/maps/mvc/tours.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/tours.js
Log Message:
-----------
Move TOURS.giveTour at the top level of the namespace instead of a method of the view.
Commit: d5d404c912340013aab34fe3350a2570010b0898
https://github.com/galaxyproject/galaxy/commit/d5d404c912340013aab34fe3350a…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-29 (Tue, 29 Dec 2015)
Changed paths:
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/evaluation.py
A lib/galaxy/tools/parameters/wrapped_json.py
A test/functional/tools/inputs_as_json.xml
M test/functional/tools/samples_tool_conf.xml
Log Message:
-----------
Implement special config file to dump parameters as json.
```
<configfiles>
<inputs name="inputs" format="json" version="1" />
</configfiles>
```
Version is specified as 1, because the Galaxy tool plumbing doesn't really distinguish between parameter is '', parameter was explicitly supplied as None, parameter was absent, etc... - everything is a just a string in some ways. This distinction may be more important with JSON and for instance the CWL will require more percision, so we may want to revise Galaxy's tool handling in a backward compatible way someday.
Commit: de0c913b8bb3ca01fd0ab5c8286450dbef9b604d
https://github.com/galaxyproject/galaxy/commit/de0c913b8bb3ca01fd0ab5c82864…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-30 (Wed, 30 Dec 2015)
Changed paths:
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/evaluation.py
M lib/galaxy/tools/parameters/wrapped_json.py
M test/functional/tools/inputs_as_json.xml
Log Message:
-----------
More work on converting tool inputs to json.
- Drop version requirement per commends by @bgruening.
- Add examples for conditionals, repeats, sections, colors, and booleans specified truevalue/falsevalue.
- Various bug fixes unearthed by new test cases.
Commit: cd32b91dc9f562d17349d8cc15ba1b60eba07f70
https://github.com/galaxyproject/galaxy/commit/cd32b91dc9f562d17349d8cc15ba…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-30 (Wed, 30 Dec 2015)
Changed paths:
M test/functional/tools/inputs_as_json.xml
Log Message:
-----------
Update inputs_as_json.xml to drop version attribute.
Also add note about filename.
Commit: 9a0ef0ed14893bf1dcaae67b466a8b1167571032
https://github.com/galaxyproject/galaxy/commit/9a0ef0ed14893bf1dcaae67b466a…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-30 (Wed, 30 Dec 2015)
Changed paths:
M lib/galaxy/tools/parameters/wrapped_json.py
Log Message:
-----------
Expose hidden parameters in inputs json.
Commit: 2b2f93d393a4e66c0e466e98a945222bd54e448a
https://github.com/galaxyproject/galaxy/commit/2b2f93d393a4e66c0e466e98a945…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2015-12-30 (Wed, 30 Dec 2015)
Changed paths:
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/evaluation.py
A lib/galaxy/tools/parameters/wrapped_json.py
A test/functional/tools/inputs_as_json.xml
M test/functional/tools/samples_tool_conf.xml
Log Message:
-----------
Merge pull request #1405 from jmchilton/json_config
Implement special config file to dump parameters as json.
Commit: f597b08b878f478b9beee32c59b5e4218458c4fe
https://github.com/galaxyproject/galaxy/commit/f597b08b878f478b9beee32c59b5…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-30 (Wed, 30 Dec 2015)
Changed paths:
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/toolbox/__init__.py
M lib/galaxy/tools/toolbox/base.py
Log Message:
-----------
Refactor ToolBox functionality.
This moves in two directions toward a better design. It moves some Galaxy tool specific logic out of the AbstractToolBox (which should just be worried about panels, etc... IMO) and it moves more galaxy-lib functionality (dependency resolution) into a galaxy-lib module (galaxy.tools.toolbox). It does this by creating a BaseGalaxyToolBox that can reason about which files look like tools and what dependency resoution should be - without dependening on Galaxy models, job running, etc... that is in galaxy.tools.__init__.
Commit: 204aa96206a7fdaff69d22fde6387a9956c1a0bc
https://github.com/galaxyproject/galaxy/commit/204aa96206a7fdaff69d22fde638…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-30 (Wed, 30 Dec 2015)
Changed paths:
M lib/galaxy/tools/deps/__init__.py
M lib/galaxy/tools/deps/resolvers/__init__.py
M lib/galaxy/tools/deps/resolvers/conda.py
M lib/galaxy/tools/deps/resolvers/galaxy_packages.py
M lib/galaxy/tools/deps/resolvers/modules.py
M lib/galaxy/tools/deps/resolvers/tool_shed_packages.py
M lib/galaxy/tools/deps/resolvers/unlinked_tool_shed_packages.py
A lib/galaxy/tools/deps/views.py
M lib/galaxy/tools/toolbox/base.py
A lib/galaxy/webapps/galaxy/api/tool_dependencies.py
M lib/galaxy/webapps/galaxy/buildapp.py
M test/unit/test_routes.py
Log Message:
-----------
API-ify tool dependency resolution.
Commit: b167a741a444c3988447b0d63a1ba3dc5e4e62f5
https://github.com/galaxyproject/galaxy/commit/b167a741a444c3988447b0d63a1b…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-30 (Wed, 30 Dec 2015)
Changed paths:
M lib/galaxy/tools/deps/__init__.py
M lib/galaxy/tools/deps/resolvers/__init__.py
M lib/galaxy/tools/deps/resolvers/conda.py
M lib/galaxy/tools/deps/resolvers/galaxy_packages.py
M lib/galaxy/tools/deps/resolvers/modules.py
M lib/galaxy/tools/deps/resolvers/resolver_mixins.py
M lib/galaxy/tools/deps/resolvers/tool_shed_packages.py
M lib/galaxy/tools/deps/resolvers/unlinked_tool_shed_packages.py
M lib/galaxy/webapps/galaxy/api/tool_dependencies.py
Log Message:
-----------
Include information about whether matches are dependencies are exact.
Commit: 71a876840a6c9acf11bd2ac7706ec21b32d2fb88
https://github.com/galaxyproject/galaxy/commit/71a876840a6c9acf11bd2ac7706e…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-30 (Wed, 30 Dec 2015)
Changed paths:
M lib/galaxy/tools/deps/resolvers/__init__.py
M lib/galaxy/tools/deps/resolvers/conda.py
M lib/galaxy/tools/deps/resolvers/galaxy_packages.py
M lib/galaxy/tools/deps/resolvers/tool_shed_packages.py
M lib/galaxy/tools/deps/resolvers/unlinked_tool_shed_packages.py
M lib/galaxy/tools/deps/views.py
M lib/galaxy/webapps/galaxy/api/tool_dependencies.py
M lib/galaxy/webapps/galaxy/buildapp.py
Log Message:
-----------
Implement concept of listable dependency resolvers.
DependencyResolver classes which can enumerate the requirements then can resolve "exactly" should mix in ListableDependencyResolver and implement list_dependencies.
The galaxy package resolver can easily be enumerated but its subclasses like the tool shed dependency resolver couldn't, so I have separated that class into a base class that there others can inherit and an actual resolver that implements ListableDependencyResolver.
Rebase into listable.
Commit: 29f20cf09c18e24e898517bf685418ec1db4cd11
https://github.com/galaxyproject/galaxy/commit/29f20cf09c18e24e898517bf6854…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2015-12-30 (Wed, 30 Dec 2015)
Changed paths:
M lib/galaxy/tools/deps/resolvers/__init__.py
M lib/galaxy/tools/deps/resolvers/conda.py
M lib/galaxy/tools/deps/views.py
M lib/galaxy/webapps/galaxy/buildapp.py
Log Message:
-----------
Implement concept of installable dependency resolvers.
DependencyResolver classes which can install "simple" dependences should mix in the new InstallableDependencyResolver and implement install_dependency.
Currently this is only the conda dependency resolver, one can easily imagine doing the same for the brew dependency resolver and potentially doing it for some variant of the unlinked dependency resolvers.
Commit: 0aa1c5133e029196444ac9c0b32f43489cee3713
https://github.com/galaxyproject/galaxy/commit/0aa1c5133e029196444ac9c0b32f…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2015-12-30 (Wed, 30 Dec 2015)
Changed paths:
M config/dependency_resolvers_conf.xml.sample
M config/galaxy.ini.sample
M doc/source/admin/dependency_resolvers.rst
M lib/galaxy/jobs/__init__.py
M lib/galaxy/jobs/runners/__init__.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/deps/__init__.py
A lib/galaxy/tools/deps/conda_util.py
M lib/galaxy/tools/deps/resolvers/__init__.py
A lib/galaxy/tools/deps/resolvers/conda.py
M lib/galaxy/util/checkers.py
M test/unit/jobs/test_job_wrapper.py
A test/unit/tools/test_conda_resolution.py
Log Message:
-----------
Merge pull request #1345 from jmchilton/conda_0
Implement a conda dependency resolver.
Commit: 339ad57f3fa626fe30c1bf26f90e0647be038cc9
https://github.com/galaxyproject/galaxy/commit/339ad57f3fa626fe30c1bf26f90e…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-30 (Wed, 30 Dec 2015)
Changed paths:
M client/galaxy/scripts/layout/masthead.js
M client/galaxy/scripts/layout/menu.js
M client/galaxy/scripts/layout/page.js
M client/galaxy/scripts/layout/scratchbook.js
M client/galaxy/scripts/mvc/dataset/dataset-li-edit.js
M client/galaxy/scripts/mvc/dataset/dataset-li.js
M client/galaxy/scripts/mvc/ui/ui-frames.js
M client/galaxy/scripts/onload.js
M client/galaxy/style/less/base.less
M client/galaxy/style/less/frame.less
R client/galaxy/style/less/masthead.less
M client/galaxy/style/less/ui.less
M config/plugins/visualizations/charts/templates/charts.mako
M static/maps/layout/masthead.js.map
M static/maps/layout/menu.js.map
M static/maps/layout/page.js.map
M static/maps/layout/scratchbook.js.map
M static/maps/mvc/dataset/dataset-li-edit.js.map
M static/maps/mvc/dataset/dataset-li.js.map
M static/maps/mvc/ui/ui-frames.js.map
M static/maps/onload.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/layout/masthead.js
M static/scripts/layout/menu.js
M static/scripts/layout/page.js
M static/scripts/layout/scratchbook.js
M static/scripts/mvc/dataset/dataset-li-edit.js
M static/scripts/mvc/dataset/dataset-li.js
M static/scripts/mvc/ui/ui-frames.js
M static/scripts/onload.js
M static/style/blue/base.css
M static/style/blue/masthead.css
M templates/webapps/galaxy/galaxy.masthead.mako
Log Message:
-----------
Cleanup Masthead and Scratchbook
Cleanup Masthead and Scratchbook
Commit: 4cd621dd378e3a9db0d934203a5e1cdebd817b6c
https://github.com/galaxyproject/galaxy/commit/4cd621dd378e3a9db0d934203a5e…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2015-12-31 (Thu, 31 Dec 2015)
Changed paths:
M client/galaxy/scripts/layout/menu.js
M client/galaxy/scripts/layout/scratchbook.js
M static/maps/layout/menu.js.map
M static/maps/layout/scratchbook.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/layout/menu.js
M static/scripts/layout/scratchbook.js
A test/qunit/tests/masthead_tests.html
A test/qunit/tests/masthead_tests.js
Log Message:
-----------
Add test cases
Commit: 868a7dfe0e03503adaf6646e10d8184d18b66a34
https://github.com/galaxyproject/galaxy/commit/868a7dfe0e03503adaf6646e10d8…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-02 (Sat, 02 Jan 2016)
Changed paths:
M lib/galaxy/tools/deps/conda_util.py
M lib/galaxy/tools/deps/resolvers/conda.py
M test/unit/tools/test_conda_resolution.py
Log Message:
-----------
Modify unmodified conda behavior.
- Add configuration option for overriding condarc location used by conda resolve commands.
- Default location of condarc to be in tool_dependency_dir.
- Delay updating the condarc to ensure channels until this would actually be needed (during package installation).
- Add configuration flag to allow Galaxy to *NOT* check the PATH for conda.
- Update unit test that verifies conda's installation to never use conda on PATH, since a precondition of this test is that certain packages haven't been installed previously.
- Change default behavior to not check the PATH for conda, everything else here I feel pretty good about - this I'm ambivalent about - it will reduce error reports and problems with network filesystems, but doesn't seem to be good Unix best practice.
Points 2 and 3 above should address this issue: https://github.com/galaxyproject/ansible-galaxy-extras/pull/33#issuecomment…
This commit also addresses most of #1406.
Commit: a6cbb88ad12288eca031c0469113abc831a42d37
https://github.com/galaxyproject/galaxy/commit/a6cbb88ad12288eca031c0469113…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-02 (Sat, 02 Jan 2016)
Changed paths:
M config/galaxy.ini.sample
M lib/galaxy/config.py
Log Message:
-----------
Enable tool isolation by default and fix bugs.
Commit: 1084f14dd0637bc47978a33122c74d86cb617241
https://github.com/galaxyproject/galaxy/commit/1084f14dd0637bc47978a33122c7…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-02 (Sat, 02 Jan 2016)
Changed paths:
M test/unit/jobs/test_command_factory.py
Log Message:
-----------
Unit test modifications for running tool commands in isolated scripts.
Commit: 7f8e37d5a1aa96c2c839acea4511e071e81eb450
https://github.com/galaxyproject/galaxy/commit/7f8e37d5a1aa96c2c839acea4511…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-02 (Sat, 02 Jan 2016)
Changed paths:
M lib/galaxy/jobs/__init__.py
M lib/galaxy/jobs/command_factory.py
Log Message:
-----------
Attempt to fix samtools resolution for metadata when tool command externalized.
Commit: acab90d63c6c96a6e609f32080f5b610b33dd549
https://github.com/galaxyproject/galaxy/commit/acab90d63c6c96a6e609f32080f5…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-02 (Sat, 02 Jan 2016)
Changed paths:
M lib/galaxy/jobs/command_factory.py
Log Message:
-----------
Fix unicode-y problem with tool command externalization.
Commit: 340aef2550d16bb987b36bc7b2df8e0ed4f6f56b
https://github.com/galaxyproject/galaxy/commit/340aef2550d16bb987b36bc7b2df…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-02 (Sat, 02 Jan 2016)
Changed paths:
M lib/galaxy/jobs/command_factory.py
Log Message:
-----------
Fix logging for tool script externalization.
Commit: ef9e1876a2d4dd02718784f2b9f1045f2f9d0b59
https://github.com/galaxyproject/galaxy/commit/ef9e1876a2d4dd02718784f2b9f1…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-03 (Sun, 03 Jan 2016)
Changed paths:
M lib/galaxy/tools/deps/resolvers/__init__.py
M lib/galaxy/webapps/galaxy/api/tool_dependencies.py
Log Message:
-----------
Fixup dependency module and API comments.
Thanks to suggestions by @bgruening.
Commit: 4650d77bd988b90b6652cc108f83bf6d86cae271
https://github.com/galaxyproject/galaxy/commit/4650d77bd988b90b6652cc108f83…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-03 (Sun, 03 Jan 2016)
Changed paths:
M lib/galaxy/tools/deps/conda_util.py
Log Message:
-----------
Fix listing conda requirements if conda hasn't been installed.
Fix problem discovered by @bgruening.
Commit: 0da66ee8dcf5fef52b11558228c1eb95479cbce9
https://github.com/galaxyproject/galaxy/commit/0da66ee8dcf5fef52b11558228c1…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-03 (Sun, 03 Jan 2016)
Changed paths:
M lib/galaxy/tools/loader_directory.py
Log Message:
-----------
Small improvements to load_directory for downstream extension.
Commit: a9d4783f2c3d22e7d830fc88d30b6112e2d43fc0
https://github.com/galaxyproject/galaxy/commit/a9d4783f2c3d22e7d830fc88d30b…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-03 (Sun, 03 Jan 2016)
Changed paths:
M lib/galaxy/tools/loader_directory.py
Log Message:
-----------
Add CWL suppoort to tool checking and parsing.
To be clear, this provides none of the infrastructure for running the tools. This is just so that planemo and future tool registry efforts can have a unified interface for accessing and reasoning about tools using the same methods Galaxy does.
Commit: 2054f538be010ab6d47e0de1da646268ca6d6ff4
https://github.com/galaxyproject/galaxy/commit/2054f538be010ab6d47e0de1da64…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-03 (Sun, 03 Jan 2016)
Changed paths:
A lib/galaxy/tools/cwl/__init__.py
A lib/galaxy/tools/cwl/cwltool_deps.py
A lib/galaxy/tools/cwl/parser.py
A lib/galaxy/tools/cwl/representation.py
A lib/galaxy/tools/cwl/runtime_actions.py
A lib/galaxy/tools/parser/cwl.py
M lib/galaxy/tools/parser/factory.py
Log Message:
-----------
Infrastructure for parsing CWL tools.
Commit: db845fa1875bcb08aa2129830f1d405d1d894cfb
https://github.com/galaxyproject/galaxy/commit/db845fa1875bcb08aa2129830f1d…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-03 (Sun, 03 Jan 2016)
Changed paths:
M lib/galaxy/tools/loader_directory.py
Log Message:
-----------
Refactor loader_directory to support beta formats in other ways.
Commit: fcc83d4e09d4603c5fbd831e9e1933916bf00827
https://github.com/galaxyproject/galaxy/commit/fcc83d4e09d4603c5fbd831e9e19…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-03 (Sun, 03 Jan 2016)
Changed paths:
M lib/galaxy/tools/toolbox/base.py
M lib/galaxy/tools/toolbox/panel.py
A lib/galaxy/tools/toolbox/parser.py
Log Message:
-----------
Introduce ToolBox parser.
Abstract simpler ToolBox interactions to separate XML representation from handling. Doesn't cover tool shed operations since the tool shed explicitly writes XML.
Commit: b68991c4caa44aefeaba752748ae62db98a446fd
https://github.com/galaxyproject/galaxy/commit/b68991c4caa44aefeaba752748ae…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-03 (Sun, 03 Jan 2016)
Changed paths:
M lib/galaxy/tools/toolbox/panel.py
M lib/galaxy/tools/toolbox/parser.py
M test/unit/tools/test_toolbox.py
Log Message:
-----------
Allow loading tool confs written in YAML and JSON.
Because lets say someone was writing a programatic way to manage elements in a tool conf, that hypothetical person probably shouldn't be writing XML.
Commit: 864cc32892a1b4bf91b5d2fe70f7e64eec736393
https://github.com/galaxyproject/galaxy/commit/864cc32892a1b4bf91b5d2fe70f7…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-03 (Sun, 03 Jan 2016)
Changed paths:
M lib/galaxy/config.py
M lib/galaxy/tools/toolbox/base.py
A lib/galaxy/tools/toolbox/cache.py
M lib/galaxy/webapps/galaxy/api/configuration.py
M lib/galaxy/webapps/galaxy/buildapp.py
M lib/tool_shed/galaxy_install/tool_migration_manager.py
M templates/admin/reload_tool.mako
Log Message:
-----------
Allow toolbox reloading via app, UI, and API.
Introduce an app ToolCache to help ensure this operation remains speedy.
Commit: 4086dd61dafe562ec01a8b1fce687a539aedbcfe
https://github.com/galaxyproject/galaxy/commit/4086dd61dafe562ec01a8b1fce68…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-03 (Sun, 03 Jan 2016)
Changed paths:
M config/tool_conf.xml.sample
M lib/galaxy/config.py
M lib/galaxy/tools/toolbox/base.py
M lib/galaxy/tools/toolbox/parser.py
M lib/galaxy/tools/toolbox/watcher.py
M test/unit/tools/test_watcher.py
Log Message:
-----------
Implement toolbox monitoring.
- Add monitor tag on toolbox root elements to force Galaxy to watch the toolbox for changes.
- Refactoring and test improvements for existing tool monitoring code.
- Implement toolbox shutdown process to ensure different watchers don't compete with each other.
- Set the default tool conf to be monitored.
Commit: 8027228639a771e4c62131ab15ba4ffbb656498a
https://github.com/galaxyproject/galaxy/commit/8027228639a771e4c62131ab15ba…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-03 (Sun, 03 Jan 2016)
Changed paths:
M lib/galaxy/tools/toolbox/base.py
M lib/galaxy/tools/toolbox/cache.py
M lib/tool_shed/galaxy_install/metadata/installed_repository_metadata_manager.py
M lib/tool_shed/galaxy_install/tool_migration_manager.py
M lib/tool_shed/tools/data_table_manager.py
M lib/tool_shed/tools/tool_validator.py
M lib/tool_shed/util/tool_util.py
Log Message:
-----------
Revise tool caching for tool shed tool loading...
The tool shed appears to load the same tool in the toolbox multiple times with different settings. Get around this by not using the cache when loading tools from a few tool shed components later in this process.
Commit: eddfec36fdf6d19bae398d09ee16952136d2b379
https://github.com/galaxyproject/galaxy/commit/eddfec36fdf6d19bae398d09ee16…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-03 (Sun, 03 Jan 2016)
Changed paths:
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/toolbox/base.py
M lib/galaxy/web/base/controllers/admin.py
M lib/galaxy/webapps/galaxy/api/tools.py
Log Message:
-----------
Refactor package_tool for better separation of concerns.
The tool should know how to package itself, it shouldn't be the responsiblity of the toolbox. Update the code to reflect this and use more pythonic exception handling.
Commit: ce24ec6821bdb87f14f3047eef186c246de2d5ed
https://github.com/galaxyproject/galaxy/commit/ce24ec6821bdb87f14f3047eef18…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-03 (Sun, 03 Jan 2016)
Changed paths:
M templates/admin/reload_tool.mako
Log Message:
-----------
Remove alert from toolbox reload.
Commit: 523e2b40063d2abb7662a163f0144902541bed18
https://github.com/galaxyproject/galaxy/commit/523e2b40063d2abb7662a163f014…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-03 (Sun, 03 Jan 2016)
Changed paths:
M lib/galaxy/tools/toolbox/watcher.py
Log Message:
-----------
Fix shutdown of tool watcher if never activated.
Caused a harmless, but distracting stacktrace to be printed on toolbox reload as pointed out by @bgruening https://github.com/galaxyproject/galaxy/pull/1398#issuecomment-168499678.
Commit: 7cbf41feb3dfd6eb12c99630692776565c72c579
https://github.com/galaxyproject/galaxy/commit/7cbf41feb3dfd6eb12c996306927…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-03 (Sun, 03 Jan 2016)
Changed paths:
M lib/galaxy/datatypes/binary.py
M lib/galaxy/tools/deps/commands.py
M lib/galaxy/util/__init__.py
Log Message:
-----------
Better exception when samtools is required but not on PATH.
Commit: ce2795d87ca4e5063ca699ad75cb6e4461fba30c
https://github.com/galaxyproject/galaxy/commit/ce2795d87ca4e5063ca699ad75cb…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-03 (Sun, 03 Jan 2016)
Changed paths:
M lib/galaxy/util/properties.py
Log Message:
-----------
Copy pastescript's NiceConfigParser into galaxy.util.properties.
This is used in galaxy-lib and by utilities such as galaxy/main.py which has no reason to depend on pastescript.
Commit: 308435b7391d349b0077375409d631eb96038889
https://github.com/galaxyproject/galaxy/commit/308435b7391d349b0077375409d6…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-03 (Sun, 03 Jan 2016)
Changed paths:
M lib/galaxy/tools/loader_directory.py
Log Message:
-----------
Fix bug in db845fa1875bcb08aa2129830f1d405d1d894cfb.
Commit: 5ca71d6f292ff122d35c25d0dfd7c0e14d5366e2
https://github.com/galaxyproject/galaxy/commit/5ca71d6f292ff122d35c25d0dfd7…
Author: Björn Grüning <bjoern(a)gruenings.eu>
Date: 2016-01-03 (Sun, 03 Jan 2016)
Changed paths:
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/deps/__init__.py
M lib/galaxy/tools/deps/conda_util.py
M lib/galaxy/tools/deps/resolvers/__init__.py
M lib/galaxy/tools/deps/resolvers/conda.py
M lib/galaxy/tools/deps/resolvers/galaxy_packages.py
M lib/galaxy/tools/deps/resolvers/modules.py
M lib/galaxy/tools/deps/resolvers/resolver_mixins.py
M lib/galaxy/tools/deps/resolvers/tool_shed_packages.py
M lib/galaxy/tools/deps/resolvers/unlinked_tool_shed_packages.py
A lib/galaxy/tools/deps/views.py
M lib/galaxy/tools/toolbox/__init__.py
M lib/galaxy/tools/toolbox/base.py
A lib/galaxy/webapps/galaxy/api/tool_dependencies.py
M lib/galaxy/webapps/galaxy/buildapp.py
M test/unit/test_routes.py
M test/unit/tools/test_conda_resolution.py
Log Message:
-----------
Merge pull request #1409 from jmchilton/dep_resolution_api
Evolving from dependency resolution to dependency management.
Commit: 73defd48ce70241d7cc163aaadfef6fcd6830231
https://github.com/galaxyproject/galaxy/commit/73defd48ce70241d7cc163aaadfe…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-01-03 (Sun, 03 Jan 2016)
Changed paths:
M config/tool_conf.xml.sample
M lib/galaxy/config.py
M lib/galaxy/tools/__init__.py
A lib/galaxy/tools/cwl/__init__.py
A lib/galaxy/tools/cwl/cwltool_deps.py
A lib/galaxy/tools/cwl/parser.py
A lib/galaxy/tools/cwl/representation.py
A lib/galaxy/tools/cwl/runtime_actions.py
M lib/galaxy/tools/loader_directory.py
A lib/galaxy/tools/parser/cwl.py
M lib/galaxy/tools/parser/factory.py
M lib/galaxy/tools/toolbox/base.py
A lib/galaxy/tools/toolbox/cache.py
M lib/galaxy/tools/toolbox/panel.py
A lib/galaxy/tools/toolbox/parser.py
M lib/galaxy/tools/toolbox/watcher.py
M lib/galaxy/web/base/controllers/admin.py
M lib/galaxy/webapps/galaxy/api/configuration.py
M lib/galaxy/webapps/galaxy/api/tools.py
M lib/galaxy/webapps/galaxy/buildapp.py
M lib/tool_shed/galaxy_install/metadata/installed_repository_metadata_manager.py
M lib/tool_shed/galaxy_install/tool_migration_manager.py
M lib/tool_shed/tools/data_table_manager.py
M lib/tool_shed/tools/tool_validator.py
M lib/tool_shed/util/tool_util.py
M templates/admin/reload_tool.mako
M test/unit/tools/test_toolbox.py
M test/unit/tools/test_watcher.py
Log Message:
-----------
Merge pull request #1398 from jmchilton/toolbox_overhaul
ToolBox Overhaul
Commit: 10677319f74f96160a4ee0b48e7d1053df242951
https://github.com/galaxyproject/galaxy/commit/10677319f74f96160a4ee0b48e7d…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2016-01-03 (Sun, 03 Jan 2016)
Changed paths:
M lib/galaxy/tools/loader_directory.py
Log Message:
-----------
Merge pull request #1414 from jmchilton/lib_1
Fix bug in db845fa1875bcb08aa2129830f1d405d1d894cfb.
Commit: 905adbac38992ae2fc889d23f000fa2541e87939
https://github.com/galaxyproject/galaxy/commit/905adbac38992ae2fc889d23f000…
Author: Björn Grüning <bjoern(a)gruenings.eu>
Date: 2016-01-04 (Mon, 04 Jan 2016)
Changed paths:
M config/galaxy.ini.sample
M lib/galaxy/config.py
M lib/galaxy/datatypes/binary.py
M lib/galaxy/jobs/__init__.py
M lib/galaxy/jobs/command_factory.py
M lib/galaxy/tools/deps/commands.py
M lib/galaxy/util/__init__.py
M test/unit/jobs/test_command_factory.py
Log Message:
-----------
Merge pull request #1412 from jmchilton/isolate
Isolate tool commands by default.
Commit: 34bb21c411c3ebce94e67f996e70387d33e7f8cf
https://github.com/galaxyproject/galaxy/commit/34bb21c411c3ebce94e67f996e70…
Author: Björn Grüning <bjoern(a)gruenings.eu>
Date: 2016-01-04 (Mon, 04 Jan 2016)
Changed paths:
M client/galaxy/scripts/layout/masthead.js
M client/galaxy/scripts/layout/menu.js
M client/galaxy/scripts/layout/page.js
M client/galaxy/scripts/layout/scratchbook.js
M client/galaxy/scripts/mvc/dataset/dataset-li-edit.js
M client/galaxy/scripts/mvc/dataset/dataset-li.js
M client/galaxy/scripts/mvc/ui/ui-frames.js
M client/galaxy/scripts/onload.js
M client/galaxy/style/less/base.less
M client/galaxy/style/less/frame.less
R client/galaxy/style/less/masthead.less
M client/galaxy/style/less/ui.less
M config/plugins/visualizations/charts/templates/charts.mako
M static/maps/layout/masthead.js.map
M static/maps/layout/menu.js.map
M static/maps/layout/page.js.map
M static/maps/layout/scratchbook.js.map
M static/maps/mvc/dataset/dataset-li-edit.js.map
M static/maps/mvc/dataset/dataset-li.js.map
M static/maps/mvc/ui/ui-frames.js.map
M static/maps/onload.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/layout/masthead.js
M static/scripts/layout/menu.js
M static/scripts/layout/page.js
M static/scripts/layout/scratchbook.js
M static/scripts/mvc/dataset/dataset-li-edit.js
M static/scripts/mvc/dataset/dataset-li.js
M static/scripts/mvc/ui/ui-frames.js
M static/scripts/onload.js
M static/style/blue/base.css
M static/style/blue/masthead.css
M templates/webapps/galaxy/galaxy.masthead.mako
A test/qunit/tests/masthead_tests.html
A test/qunit/tests/masthead_tests.js
Log Message:
-----------
Merge pull request #1407 from guerler/revise_masthead_000
Masthead/Scratchbook revision and test cases
Commit: 61f4c82642c5f48057d36fb9c728b66242807879
https://github.com/galaxyproject/galaxy/commit/61f4c82642c5f48057d36fb9c728…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-04 (Mon, 04 Jan 2016)
Changed paths:
A test/api/test_workflow_missing_tool.ga
M test/api/test_workflows.py
Log Message:
-----------
Add test case for importing a workflow with missing tool.
Commit: bed79b5e6a90965c0c0ba73a3c14851319ab90d2
https://github.com/galaxyproject/galaxy/commit/bed79b5e6a90965c0c0ba73a3c14…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-04 (Mon, 04 Jan 2016)
Changed paths:
M lib/galaxy/managers/workflows.py
Log Message:
-----------
Fix importing pre-16.01 workflows with missing tools.
Fixes #1386 (thanks to @trevor for the bug report).
Test with:
```
./run_tests.sh -api test/api/test_workflows.py:WorkflowsApiTestCase.test_import_missing_tool
```
Commit: c9870cb89d92f52d04d5dd163c340dd4f6cf499c
https://github.com/galaxyproject/galaxy/commit/c9870cb89d92f52d04d5dd163c34…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2016-01-04 (Mon, 04 Jan 2016)
Changed paths:
M client/galaxy/scripts/layout/menu.js
M static/maps/layout/menu.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/layout/menu.js
Log Message:
-----------
Fix url formatting
Commit: 607db31b0432c4bf30d84a4662aa0cc0f9cd3442
https://github.com/galaxyproject/galaxy/commit/607db31b0432c4bf30d84a4662aa…
Author: Björn Grüning <bjoern(a)gruenings.eu>
Date: 2016-01-04 (Mon, 04 Jan 2016)
Changed paths:
M client/galaxy/scripts/layout/menu.js
M static/maps/layout/menu.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/layout/menu.js
Log Message:
-----------
Merge pull request #1415 from guerler/fix_url_001
Fix url formatting
Commit: 603cb2f18dfc1f4518066e514f660f7db91eb45d
https://github.com/galaxyproject/galaxy/commit/603cb2f18dfc1f4518066e514f66…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-04 (Mon, 04 Jan 2016)
Changed paths:
A config/plugins/tours/core.history.yaml
Log Message:
-----------
Add history tour from @bgruening
Commit: 28cf2822f7bb3497cedee1951c22ca21e3aca956
https://github.com/galaxyproject/galaxy/commit/28cf2822f7bb3497cedee1951c22…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-01-04 (Mon, 04 Jan 2016)
Changed paths:
M lib/galaxy/managers/workflows.py
A test/api/test_workflow_missing_tool.ga
M test/api/test_workflows.py
Log Message:
-----------
Merge pull request #1416 from jmchilton/workflow_missing_tool_import
Fix importing pre-16.01 workflows with missing tools.
Commit: 1c21ba82417f2a6d3e8d024ccd3a60a3416f5340
https://github.com/galaxyproject/galaxy/commit/1c21ba82417f2a6d3e8d024ccd3a…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-01-04 (Mon, 04 Jan 2016)
Changed paths:
M lib/galaxy/jobs/runners/util/job_script/CLUSTER_SLOTS_STATEMENT.sh
Log Message:
-----------
Prefer $SLURM_CPUS_ON_NODE for $GALAXY_SLOTS to other SLURM variables.
Commit: 9bbe4b869e000e0b86e85e19743390c0bed77d57
https://github.com/galaxyproject/galaxy/commit/9bbe4b869e000e0b86e85e197433…
Author: Lance Parsons <lparsons(a)yahoo.com>
Date: 2016-01-04 (Mon, 04 Jan 2016)
Changed paths:
M lib/galaxy/jobs/runners/util/job_script/CLUSTER_SLOTS_STATEMENT.sh
Log Message:
-----------
Merge pull request #1 from natefoo/lparsons_galaxy_slots
Prefer $SLURM_CPUS_ON_NODE for $GALAXY_SLOTS to other SLURM variables.
Commit: 4c0bb9902ada3ed2dea7f1eeeb047aa4f9228be0
https://github.com/galaxyproject/galaxy/commit/4c0bb9902ada3ed2dea7f1eeeb04…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-01-04 (Mon, 04 Jan 2016)
Changed paths:
M lib/galaxy/jobs/runners/util/job_script/CLUSTER_SLOTS_STATEMENT.sh
Log Message:
-----------
Merge pull request #1347 from lparsons/galaxy_slots
Use both SLURM_NTASKS and SLURM_CPUS_PER_TASK to set GALAXY_SLOTS
Commit: 7b45f7b4047377dc1e5c622a3dc6449e3c68f9ad
https://github.com/galaxyproject/galaxy/commit/7b45f7b4047377dc1e5c622a3dc6…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-04 (Mon, 04 Jan 2016)
Changed paths:
M templates/webapps/reports/jobs_errors_per_tool.mako
M templates/webapps/reports/jobs_per_month_all.mako
M templates/webapps/reports/jobs_per_month_in_error.mako
M templates/webapps/reports/jobs_per_tool.mako
M templates/webapps/reports/jobs_per_user.mako
M templates/webapps/reports/jobs_specified_month_all.mako
M templates/webapps/reports/jobs_specified_month_in_error.mako
M templates/webapps/reports/jobs_tool_per_month.mako
M templates/webapps/reports/jobs_user_per_month.mako
M templates/webapps/reports/registered_users_per_month.mako
M templates/webapps/reports/requests_user_per_month.mako
M templates/webapps/reports/users_last_access_date.mako
M templates/webapps/reports/users_user_disk_usage.mako
M templates/webapps/reports/workflows_per_month_all.mako
M templates/webapps/reports/workflows_per_user.mako
M templates/webapps/reports/workflows_per_workflow.mako
M templates/webapps/reports/workflows_user_per_month.mako
Log Message:
-----------
Merge pull request #1259 from markiskander/reporter_fixes
Fixed indentation errors for Reports
Commit: 5a441044fbc1b773f9a59f12050a8b7dcda11694
https://github.com/galaxyproject/galaxy/commit/5a441044fbc1b773f9a59f12050a…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2016-01-04 (Mon, 04 Jan 2016)
Changed paths:
M client/galaxy/scripts/mvc/workflow/workflow-terminals.js
M lib/galaxy/dataset_collections/type_description.py
M lib/galaxy/tools/parameters/basic.py
M lib/galaxy/tools/parameters/history_query.py
M lib/galaxy/workflow/modules.py
M static/maps/mvc/workflow/workflow-terminals.js.map
M static/scripts/mvc/workflow/workflow-terminals.js
M test/qunit/tests/workflow_editor_tests.js
M test/unit/tools/test_parameter_parsing.py
M test/unit/workflows/test_modules.py
Log Message:
-----------
Merge pull request #1308 from jmchilton/multi_collection_types
Allow input collections to specify multiple collection types.
Commit: d23541092070b3dff9ef18a56620fc93837d9233
https://github.com/galaxyproject/galaxy/commit/d23541092070b3dff9ef18a56620…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-04 (Mon, 04 Jan 2016)
Changed paths:
M config/plugins/tours/core.history.yaml
Log Message:
-----------
Remove tour id from tour; unique and namespaced by filename and not a separate identifier.
Commit: e243fe3bc1e66dfcb9de778e66ff99028c56f358
https://github.com/galaxyproject/galaxy/commit/e243fe3bc1e66dfcb9de778e66ff…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-04 (Mon, 04 Jan 2016)
Changed paths:
M lib/galaxy/tours/__init__.py
Log Message:
-----------
Slight refactoring, fix .yaml stripping bug.
Commit: 0ef88e1e5397bc094a4a0f9f9683fdaffab35f48
https://github.com/galaxyproject/galaxy/commit/0ef88e1e5397bc094a4a0f9f9683…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-04 (Mon, 04 Jan 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/api/tours.py
M lib/galaxy/webapps/galaxy/buildapp.py
Log Message:
-----------
Add tour reloading API endpoint.
Commit: 6cea5121b1159a1966647dafb8d7930e9c5ee53c
https://github.com/galaxyproject/galaxy/commit/6cea5121b1159a1966647dafb8d7…
Author: Björn Grüning <bjoern(a)gruenings.eu>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M lib/galaxy/tools/deps/conda_util.py
Log Message:
-----------
Fix conda installation in debug mode
Commit: b9faf84b245a39780373545f778586bcc9ace916
https://github.com/galaxyproject/galaxy/commit/b9faf84b245a39780373545f7785…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
A test/api/test_tours.py
Log Message:
-----------
Stub an API test for tours so I can refactor a little.
Commit: 01fed4b6d4d473d81fe2e89ee8199b00d0815a00
https://github.com/galaxyproject/galaxy/commit/01fed4b6d4d473d81fe2e89ee819…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M lib/galaxy/tours/__init__.py
Log Message:
-----------
Allow .yml extensions.
Though not the "official" extension for YAML files, it is actually seen much more common in the wild.
Commit: b35a39bd55d088fa25d2b3999fa482b83055f38a
https://github.com/galaxyproject/galaxy/commit/b35a39bd55d088fa25d2b3999fa4…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/api/tours.py
Log Message:
-----------
Prefer self.app to trans.app.
See comments here https://github.com/galaxyproject/galaxy/pull/1392#commitcomment-15141262 for instance for argument why this is superior.
Commit: da8b943f538d55c2d8290870eb19210c831cb627
https://github.com/galaxyproject/galaxy/commit/da8b943f538d55c2d8290870eb19…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-04 (Mon, 04 Jan 2016)
Changed paths:
M client/galaxy/scripts/layout/masthead.js
M client/galaxy/scripts/layout/menu.js
M client/galaxy/scripts/layout/page.js
M client/galaxy/scripts/layout/scratchbook.js
M client/galaxy/scripts/mvc/dataset/dataset-li-edit.js
M client/galaxy/scripts/mvc/dataset/dataset-li.js
M client/galaxy/scripts/mvc/ui/ui-frames.js
M client/galaxy/scripts/mvc/ui/ui-modal.js
M client/galaxy/scripts/mvc/ui/ui-popover.js
M client/galaxy/scripts/mvc/upload/default/default-view.js
M client/galaxy/scripts/mvc/upload/upload-ftp.js
M client/galaxy/scripts/mvc/upload/upload-settings.js
M client/galaxy/scripts/mvc/workflow/workflow-terminals.js
M client/galaxy/scripts/onload.js
M client/galaxy/scripts/utils/uploadbox.js
M client/galaxy/style/less/base.less
M client/galaxy/style/less/frame.less
R client/galaxy/style/less/masthead.less
M client/galaxy/style/less/ui.less
M config/dependency_resolvers_conf.xml.sample
M config/galaxy.ini.sample
A config/plugins/interactive_environments/jupyter/config/jupyter.ini.sample
A config/plugins/interactive_environments/jupyter/config/jupyter.xml
A config/plugins/interactive_environments/jupyter/static/js/jupyter.js
A config/plugins/interactive_environments/jupyter/templates/jupyter.mako
M config/plugins/visualizations/charts/templates/charts.mako
M config/tool_conf.xml.sample
M doc/source/admin/dependency_resolvers.rst
M lib/galaxy/config.py
M lib/galaxy/dataset_collections/type_description.py
M lib/galaxy/datatypes/binary.py
A lib/galaxy/dependencies/pinned-requirements.txt
M lib/galaxy/dependencies/requirements.txt
M lib/galaxy/exceptions/error_codes.py
M lib/galaxy/jobs/__init__.py
M lib/galaxy/jobs/command_factory.py
M lib/galaxy/jobs/runners/__init__.py
M lib/galaxy/jobs/runners/util/job_script/CLUSTER_SLOTS_STATEMENT.sh
M lib/galaxy/managers/workflows.py
M lib/galaxy/objectstore/pulsar.py
M lib/galaxy/tools/__init__.py
A lib/galaxy/tools/cwl/__init__.py
A lib/galaxy/tools/cwl/cwltool_deps.py
A lib/galaxy/tools/cwl/parser.py
A lib/galaxy/tools/cwl/representation.py
A lib/galaxy/tools/cwl/runtime_actions.py
M lib/galaxy/tools/deps/__init__.py
M lib/galaxy/tools/deps/commands.py
A lib/galaxy/tools/deps/conda_util.py
M lib/galaxy/tools/deps/containers.py
M lib/galaxy/tools/deps/resolvers/__init__.py
A lib/galaxy/tools/deps/resolvers/conda.py
M lib/galaxy/tools/deps/resolvers/galaxy_packages.py
M lib/galaxy/tools/deps/resolvers/modules.py
M lib/galaxy/tools/deps/resolvers/resolver_mixins.py
M lib/galaxy/tools/deps/resolvers/tool_shed_packages.py
M lib/galaxy/tools/deps/resolvers/unlinked_tool_shed_packages.py
A lib/galaxy/tools/deps/views.py
M lib/galaxy/tools/evaluation.py
M lib/galaxy/tools/lint.py
M lib/galaxy/tools/linters/inputs.py
M lib/galaxy/tools/linters/stdio.py
M lib/galaxy/tools/loader_directory.py
M lib/galaxy/tools/parameters/basic.py
M lib/galaxy/tools/parameters/history_query.py
A lib/galaxy/tools/parameters/wrapped_json.py
A lib/galaxy/tools/parser/cwl.py
M lib/galaxy/tools/parser/factory.py
M lib/galaxy/tools/parser/output_objects.py
M lib/galaxy/tools/parser/yaml.py
M lib/galaxy/tools/toolbox/__init__.py
M lib/galaxy/tools/toolbox/base.py
A lib/galaxy/tools/toolbox/cache.py
M lib/galaxy/tools/toolbox/lineages/tool_shed.py
M lib/galaxy/tools/toolbox/panel.py
A lib/galaxy/tools/toolbox/parser.py
M lib/galaxy/tools/toolbox/watcher.py
M lib/galaxy/util/__init__.py
M lib/galaxy/util/checkers.py
M lib/galaxy/util/directory_hash.py
M lib/galaxy/util/expressions.py
M lib/galaxy/util/heartbeat.py
M lib/galaxy/util/json.py
M lib/galaxy/util/object_wrapper.py
M lib/galaxy/util/odict.py
M lib/galaxy/util/topsort.py
M lib/galaxy/util/xml_macros.py
M lib/galaxy/web/base/controllers/admin.py
M lib/galaxy/web/base/interactive_environments.py
M lib/galaxy/web/proxy/js/lib/proxy.js
M lib/galaxy/webapps/galaxy/api/configuration.py
A lib/galaxy/webapps/galaxy/api/tool_dependencies.py
M lib/galaxy/webapps/galaxy/api/tools.py
M lib/galaxy/webapps/galaxy/api/workflows.py
M lib/galaxy/webapps/galaxy/buildapp.py
M lib/galaxy/workflow/modules.py
M lib/galaxy/workflow/run_request.py
M lib/tool_shed/galaxy_install/metadata/installed_repository_metadata_manager.py
M lib/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py
M lib/tool_shed/galaxy_install/tool_migration_manager.py
M lib/tool_shed/metadata/metadata_generator.py
M lib/tool_shed/tools/data_table_manager.py
M lib/tool_shed/tools/tool_validator.py
M lib/tool_shed/util/common_util.py
M lib/tool_shed/util/tool_util.py
M run.sh
M run_tests.sh
M scripts/common_startup.sh
M static/maps/layout/masthead.js.map
M static/maps/layout/menu.js.map
M static/maps/layout/page.js.map
M static/maps/layout/scratchbook.js.map
M static/maps/mvc/dataset/dataset-li-edit.js.map
M static/maps/mvc/dataset/dataset-li.js.map
M static/maps/mvc/ui/ui-frames.js.map
M static/maps/mvc/ui/ui-modal.js.map
M static/maps/mvc/ui/ui-popover.js.map
M static/maps/mvc/upload/default/default-view.js.map
M static/maps/mvc/upload/upload-ftp.js.map
M static/maps/mvc/upload/upload-settings.js.map
M static/maps/mvc/workflow/workflow-terminals.js.map
M static/maps/onload.js.map
M static/maps/utils/uploadbox.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/layout/masthead.js
M static/scripts/layout/menu.js
M static/scripts/layout/page.js
M static/scripts/layout/scratchbook.js
M static/scripts/mvc/dataset/dataset-li-edit.js
M static/scripts/mvc/dataset/dataset-li.js
M static/scripts/mvc/ui/ui-frames.js
M static/scripts/mvc/ui/ui-modal.js
M static/scripts/mvc/ui/ui-popover.js
M static/scripts/mvc/upload/default/default-view.js
M static/scripts/mvc/upload/upload-ftp.js
M static/scripts/mvc/upload/upload-settings.js
M static/scripts/mvc/workflow/workflow-terminals.js
M static/scripts/onload.js
M static/scripts/utils/uploadbox.js
M static/style/blue/base.css
M static/style/blue/masthead.css
M templates/admin/reload_tool.mako
M templates/webapps/galaxy/galaxy.masthead.mako
A test/api/test_workflow_missing_tool.ga
M test/api/test_workflows.py
A test/functional/tools/inputs_as_json.xml
M test/functional/tools/samples_tool_conf.xml
M test/qunit/test-app.js
A test/qunit/tests/masthead_tests.html
A test/qunit/tests/masthead_tests.js
A test/qunit/tests/modal_tests.html
A test/qunit/tests/modal_tests.js
A test/qunit/tests/popover_tests.html
A test/qunit/tests/popover_tests.js
M test/qunit/tests/workflow_editor_tests.js
M test/tool_shed/base/twilltestcase.py
M test/unit/jobs/test_command_factory.py
M test/unit/jobs/test_job_wrapper.py
M test/unit/test_objectstore.py
M test/unit/test_routes.py
A test/unit/tools/test_conda_resolution.py
M test/unit/tools/test_parameter_parsing.py
M test/unit/tools/test_toolbox.py
M test/unit/tools/test_watcher.py
M test/unit/workflows/test_modules.py
M test/unit/workflows/test_run_parameters.py
M tox.ini
Log Message:
-----------
Merge.
Commit: 7587809bb6f08a1ff4754b8d13b8ebfafaabc259
https://github.com/galaxyproject/galaxy/commit/7587809bb6f08a1ff4754b8d13b8…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M config/galaxy.ini.sample
M lib/galaxy/tours/__init__.py
M lib/galaxy/util/__init__.py
M lib/galaxy/web/base/pluginframework.py
Log Message:
-----------
Improve tour directory logic.
- Refactor plugin framework logic for finding configuration directories out into util.
- Rework tours to use the plugin framework logic to parse configuration directories.
- Rework tour logic to allow multiple tour configuration directories.
- Fix up config.ini.sample comments on interactive environments and tours to reflect these changes and include more information like the viz directory does.
Commit: c97053a5e844ff19b628f65282a1392c86240b0a
https://github.com/galaxyproject/galaxy/commit/c97053a5e844ff19b628f65282a1…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-04 (Mon, 04 Jan 2016)
Changed paths:
M lib/galaxy/tools/deps/conda_util.py
Log Message:
-----------
Merge pull request #1421 from galaxyproject/conda_install_fix
Fix conda installation in debug mode
Commit: c28d4d01eef483a2c8255f1ac14d636ab60351a7
https://github.com/galaxyproject/galaxy/commit/c28d4d01eef483a2c8255f1ac14d…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-04 (Mon, 04 Jan 2016)
Changed paths:
M config/galaxy.ini.sample
M lib/galaxy/config.py
Log Message:
-----------
Correctly specify default tour location.
Commit: 4ef3e21c954a8bfe5b12758252ffcb5b303445f8
https://github.com/galaxyproject/galaxy/commit/4ef3e21c954a8bfe5b12758252ff…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M client/galaxy/scripts/layout/menu.js
M static/maps/layout/menu.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/layout/menu.js
Log Message:
-----------
Fix onclick handling broken w/ #1407
Commit: 62b80dfcc5e00ee92c2be83bbd89911158b9f9b4
https://github.com/galaxyproject/galaxy/commit/62b80dfcc5e00ee92c2be83bbd89…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M client/galaxy/scripts/layout/menu.js
M static/maps/layout/menu.js.map
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/layout/menu.js
Log Message:
-----------
Fix onclick broken in #1407
Commit: c416426522c7cf8f684f12937a42354abd4ce875
https://github.com/galaxyproject/galaxy/commit/c416426522c7cf8f684f12937a42…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M lib/galaxy/util/pastescript/loadwsgi.py
M lib/galaxy/util/properties.py
Log Message:
-----------
Remove dup NiceConfigParser from loadwsgi.py.
We are really adopting pastescript as our own.
Commit: 39f5c5d207f091f214b87d391a5aefb47402b9fc
https://github.com/galaxyproject/galaxy/commit/39f5c5d207f091f214b87d391a5a…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Make docutils an optional dependency of galaxy-lib.
Commit: 951b95e07964885e2fac88b685f498aca2f3e7fc
https://github.com/galaxyproject/galaxy/commit/951b95e07964885e2fac88b685f4…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M lib/galaxy/util/multi_byte.py
Log Message:
-----------
Make wchartype an optional dependency of galaxy-lib.
Commit: 099f1447a66631250f61f5b61920f9b11018daa2
https://github.com/galaxyproject/galaxy/commit/099f1447a66631250f61f5b61920…
Author: Aysam Guerler <aysam.guerler(a)gmail.com>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M client/galaxy/scripts/layout/menu.js
M static/maps/layout/menu.js.map
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/layout/menu.js
Log Message:
-----------
Merge pull request #1424 from dannon/fix_onclick
Fix masthead/menu.js onclick functionality
Commit: 5c765c08715c17c07c1916c8c7a484d8ef71a954
https://github.com/galaxyproject/galaxy/commit/5c765c08715c17c07c1916c8c7a4…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M lib/galaxy/tools/deps/conda_util.py
Log Message:
-----------
Merge branch 'dev' into interactive_tours
Commit: 1d97e4271ef40969bb117e424691418ccecec7a2
https://github.com/galaxyproject/galaxy/commit/1d97e4271ef40969bb117e424691…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M client/galaxy/scripts/layout/menu.js
M static/maps/layout/menu.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/layout/menu.js
Log Message:
-----------
Merge dev to include menu/onclick fix.
Commit: 884b1d42db8ca46dc5613e398cc22015a5384935
https://github.com/galaxyproject/galaxy/commit/884b1d42db8ca46dc5613e398cc2…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M client/galaxy/scripts/mvc/ui/ui-frames.js
M static/maps/mvc/ui/ui-frames.js.map
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/ui/ui-frames.js
Log Message:
-----------
Change scratchbook close icon
Commit: 1730c12f8d3ba9d7e32bfbd1625835ab0d7dae53
https://github.com/galaxyproject/galaxy/commit/1730c12f8d3ba9d7e32bfbd16258…
Author: Eric Rasche <rasche.eric(a)gmail.com>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M client/galaxy/scripts/mvc/ui/ui-frames.js
M static/maps/mvc/ui/ui-frames.js.map
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/ui/ui-frames.js
Log Message:
-----------
Merge pull request #1425 from guerler/fix_close_icon_000
Change scratchbook close icon
Commit: 1876ea6bb2565ccaf7f6475f9387e43f91e34bb5
https://github.com/galaxyproject/galaxy/commit/1876ea6bb2565ccaf7f6475f9387…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M config/galaxy.ini.sample
M lib/galaxy/tours/__init__.py
M lib/galaxy/util/__init__.py
M lib/galaxy/web/base/pluginframework.py
M lib/galaxy/webapps/galaxy/api/tours.py
A test/api/test_tours.py
Log Message:
-----------
Merge pull request #8 from jmchilton/interactive_tours
Minor tweaks to interactive tours backend.
Commit: 5924857c2c7e012875b9840811ab22b9d4935cfa
https://github.com/galaxyproject/galaxy/commit/5924857c2c7e012875b9840811ab…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M client/galaxy/scripts/mvc/tours.js
M static/maps/mvc/tours.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/tours.js
Log Message:
-----------
Fix pre/postclick that got broken somewhere along the way w/ patches&merges.
Commit: 9416e6f3f75513f8e86f741d5c2f322708abdb0b
https://github.com/galaxyproject/galaxy/commit/9416e6f3f75513f8e86f741d5c2f…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M client/galaxy/scripts/mvc/ui/ui-frames.js
M static/maps/mvc/ui/ui-frames.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/ui/ui-frames.js
Log Message:
-----------
Merge and resolve conflicts, rebuilding.
Commit: 3d1b3f9806007e456ea5f409df5be96b69aabdb7
https://github.com/galaxyproject/galaxy/commit/3d1b3f9806007e456ea5f409df5b…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M config/plugins/tours/core.galaxy_ui.yaml
Log Message:
-----------
How'd that get there?
Commit: a1a549ea67b28679b079f4150cf6ce18bc87dd56
https://github.com/galaxyproject/galaxy/commit/a1a549ea67b28679b079f4150cf6…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M client/galaxy/scripts/layout/menu.js
M client/galaxy/scripts/layout/scratchbook.js
M static/maps/layout/menu.js.map
M static/maps/layout/scratchbook.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/layout/menu.js
M static/scripts/layout/scratchbook.js
Log Message:
-----------
Re-add identifiers to masthead, new ones for scratchbook (thanks @guerler)
Commit: 6bd854ebe428a69f2e5664448330b8a4b2aafe77
https://github.com/galaxyproject/galaxy/commit/6bd854ebe428a69f2e5664448330…
Author: Björn Grüning <bjoern(a)gruenings.eu>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M client/bower.json
M client/galaxy/scripts/layout/menu.js
M client/galaxy/scripts/layout/scratchbook.js
A client/galaxy/scripts/libs/bootstrap-tour.js
M client/galaxy/scripts/mvc/tool/tool-form-composite.js
A client/galaxy/scripts/mvc/tours.js
M client/galaxy/scripts/mvc/upload/upload-button.js
M client/galaxy/scripts/onload.js
M client/grunt-tasks/install-libs.js
M client/webpack.config.js
M config/galaxy.ini.sample
A config/plugins/tours/core.galaxy_ui.yaml
A config/plugins/tours/core.history.yaml
M lib/galaxy/app.py
M lib/galaxy/config.py
A lib/galaxy/tours/__init__.py
M lib/galaxy/util/__init__.py
M lib/galaxy/web/base/pluginframework.py
A lib/galaxy/webapps/galaxy/api/tours.py
M lib/galaxy/webapps/galaxy/buildapp.py
A static/maps/galaxy.menu.js.map
M static/maps/layout/menu.js.map
M static/maps/layout/scratchbook.js.map
A static/maps/libs/bootstrap-tour.js.map
A static/maps/mvc/tours.js.map
M static/maps/mvc/upload/upload-button.js.map
M static/maps/onload.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
A static/scripts/galaxy.menu.js
M static/scripts/layout/menu.js
M static/scripts/layout/scratchbook.js
A static/scripts/libs/bootstrap-tour.js
A static/scripts/mvc/tours.js
M static/scripts/mvc/upload/upload-button.js
M static/scripts/onload.js
A static/style/blue/bootstrap-tour.css
M templates/base.mako
M templates/base/base_panels.mako
M templates/js-app.mako
A test/api/test_tours.py
Log Message:
-----------
Merge pull request #1422 from dannon/interactive_tours
Interactive Tours
Commit: 634a5b7fd9f289c09a963f19a9db36937fc301c9
https://github.com/galaxyproject/galaxy/commit/634a5b7fd9f289c09a963f19a9db…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M lib/galaxy/util/properties.py
Log Message:
-----------
Merge pull request #1413 from jmchilton/lib_0
Copy pastescript's NiceConfigParser into galaxy.util.properties.
Commit: 0bad80ebdf2a36ae23e05b1dee6152ee387b3b79
https://github.com/galaxyproject/galaxy/commit/0bad80ebdf2a36ae23e05b1dee61…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M lib/galaxy/datatypes/binary.py
Log Message:
-----------
Merge pull request #1182 from yhoogstrate/bam_cram_index_via_pysam
cram datatype: crai index via pysam
Commit: 8bd293683bd2144a877ec7206c003d52892c5796
https://github.com/galaxyproject/galaxy/commit/8bd293683bd2144a877ec7206c00…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M lib/galaxy/util/__init__.py
M lib/galaxy/util/multi_byte.py
M lib/galaxy/util/pastescript/loadwsgi.py
M lib/galaxy/util/properties.py
Log Message:
-----------
Merge pull request #1427 from jmchilton/lib-deps
Revise galaxy-lib dependencies.
Commit: 237ecc77898f90d8d2d5d95741ff6fbaecc9e936
https://github.com/galaxyproject/galaxy/commit/237ecc77898f90d8d2d5d95741ff…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M client/galaxy/scripts/mvc/tool/tool-template.js
M client/galaxy/style/less/ui.less
M static/maps/mvc/tool/tool-template.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/tool/tool-template.js
M static/style/blue/base.css
Log Message:
-----------
Add form help class
Commit: 1568c0db809988599f10aebe1a24457087a49a1d
https://github.com/galaxyproject/galaxy/commit/1568c0db809988599f10aebe1a24…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M lib/galaxy/tours/__init__.py
Log Message:
-----------
fix title_default to work as a default and not an override
Commit: ddc2a12eb18e036e2e5cad072eb4ea99328ec7b2
https://github.com/galaxyproject/galaxy/commit/ddc2a12eb18e036e2e5cad072eb4…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M client/galaxy/scripts/mvc/tool/tool-template.js
M client/galaxy/style/less/ui.less
M static/maps/mvc/tool/tool-template.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/tool/tool-template.js
M static/style/blue/base.css
Log Message:
-----------
Merge pull request #1428 from guerler/add_pseudo_class_000
Add form help class
Commit: 0ae86f59a1f491eaa022676cdac76fce251eb322
https://github.com/galaxyproject/galaxy/commit/0ae86f59a1f491eaa022676cdac7…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M lib/galaxy/tours/__init__.py
Log Message:
-----------
Merge pull request #1429 from dannon/interactive_tours
fix title_default to work as a default and not an override
Commit: b4fe6e2c3d9b77593f00ef6aa4a2e3611f3125ad
https://github.com/galaxyproject/galaxy/commit/b4fe6e2c3d9b77593f00ef6aa4a2…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M lib/galaxy/dependencies/pinned-requirements.txt
Log Message:
-----------
Merge pull request #1393 from erasche/requirements-hashes-round-3
Added hashes
Commit: a0610ecdc0b070a671d4439378e3e9629b8d337e
https://github.com/galaxyproject/galaxy/commit/a0610ecdc0b070a671d4439378e3…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M lib/galaxy/version.py
Log Message:
-----------
Update version to 16.01.rc1
Commit: 291d7751707d2382c1d3a24b01fafec4ae757748
https://github.com/galaxyproject/galaxy/commit/291d7751707d2382c1d3a24b01fa…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-05 (Tue, 05 Jan 2016)
Changed paths:
M lib/galaxy/version.py
Log Message:
-----------
Merge pull request #1430 from natefoo/version-16.01
[16.01] Update version to 16.01.rc1
Commit: 073609d005d2e5d109e7f55b839058dce005ca95
https://github.com/galaxyproject/galaxy/commit/073609d005d2e5d109e7f55b8390…
Author: Dave B <dave(a)bx.psu.edu>
Date: 2016-01-06 (Wed, 06 Jan 2016)
Changed paths:
M test/casperjs/api-tool-tests.js
M test/casperjs/modules/historyoptions.js
M test/casperjs/modules/user.js
M test/casperjs/registration-tests.js
M test/casperjs/spaceghost.js
Log Message:
-----------
Fix casper tests.
Commit: 5d32c9f8fc7ef8f287df2a1047dc1c394d9d791d
https://github.com/galaxyproject/galaxy/commit/5d32c9f8fc7ef8f287df2a1047dc…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-01-06 (Wed, 06 Jan 2016)
Changed paths:
M test/casperjs/api-tool-tests.js
M test/casperjs/modules/historyoptions.js
M test/casperjs/modules/user.js
M test/casperjs/registration-tests.js
M test/casperjs/spaceghost.js
Log Message:
-----------
Merge pull request #1439 from jmchilton/backport_casper_fixes
[16.01] Fix casper tests.
Commit: 7a3cc410549474de18ff195c0e1dcd76fa92f64b
https://github.com/galaxyproject/galaxy/commit/7a3cc410549474de18ff195c0e1d…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-08 (Fri, 08 Jan 2016)
Changed paths:
M lib/galaxy/tools/toolbox/watcher.py
Log Message:
-----------
Fix optional watchdog handling.
Broken with 4086dd61dafe562ec01a8b1fce687a539aedbcfe.
Thanks for bug report from @nsoranzo.
Commit: e611b8fdb80beb87196a685924abe8e71bedcbea
https://github.com/galaxyproject/galaxy/commit/e611b8fdb80beb87196a685924ab…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-08 (Fri, 08 Jan 2016)
Changed paths:
M lib/galaxy/tools/toolbox/watcher.py
Log Message:
-----------
Use a more typical optional default value for optional import in watcher.py.
Thanks to @nsoranzo for the advice - https://github.com/galaxyproject/galaxy/pull/1448#discussion_r49210125.
Commit: d05ee507253901ef69a8892f6820b953c8d05725
https://github.com/galaxyproject/galaxy/commit/d05ee507253901ef69a8892f6820…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-08 (Fri, 08 Jan 2016)
Log Message:
-----------
Empty cherry-pick of 93c6d05 to cleanup merge.
Commit: 47361f12ecaad83d5d563be763320ae1b17edc3b
https://github.com/galaxyproject/galaxy/commit/47361f12ecaad83d5d563be76332…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2016-01-08 (Fri, 08 Jan 2016)
Changed paths:
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/toolbox/base.py
Log Message:
-----------
Reduce code duplication by reusing get_installed_repository() function.
Conflicts:
lib/galaxy/tools/toolbox/base.py
Commit: e8e01bdfb19cf1cc8f8cf485762c68d3f8e2f352
https://github.com/galaxyproject/galaxy/commit/e8e01bdfb19cf1cc8f8cf485762c…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2016-01-08 (Fri, 08 Jan 2016)
Changed paths:
M lib/galaxy/tools/toolbox/base.py
Log Message:
-----------
When loading a tool from Tool Shed, check that the <installed_changeset_revision> element matches the tool path.
Workaround for issue #1283, which causes the loaded tool to have a
StockLineage instead of a ToolShedLineage, thus creating multiple entries
for the tool in the panel.
Conflicts:
lib/galaxy/tools/toolbox/base.py
Commit: 90bed00ebe8a5b4a7e0aeb61c23c991daae03fb8
https://github.com/galaxyproject/galaxy/commit/90bed00ebe8a5b4a7e0aeb61c23c…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-08 (Fri, 08 Jan 2016)
Log Message:
-----------
Merge 15.07 into 15.10.
Merge remote-tracking branch 'jmchilton/release_15.07' into release_15.10
Conflicts:
client/galaxy/scripts/mvc/history/multi-panel.js
lib/galaxy/webapps/galaxy/controllers/external_service.py
lib/galaxy/webapps/galaxy/controllers/forms.py
lib/galaxy/webapps/galaxy/controllers/library_admin.py
lib/galaxy/webapps/galaxy/controllers/request_type.py
lib/galaxy/webapps/galaxy/controllers/requests_admin.py
lib/galaxy/webapps/galaxy/controllers/requests_common.py
lib/galaxy/webapps/galaxy/controllers/visualization.py
lib/galaxy/webapps/reports/controllers/jobs.py
lib/galaxy/webapps/reports/controllers/sample_tracking.py
lib/galaxy/webapps/reports/controllers/workflows.py
lib/tool_shed/grids/admin_grids.py
lib/tool_shed/grids/repository_grids.py
lib/tool_shed/grids/repository_review_grids.py
static/maps/mvc/history/multi-panel.js.map
static/maps/mvc/ui/ui-select-default.js.map
static/scripts/mvc/collection/list-collection-creator.js
static/scripts/mvc/collection/list-of-pairs-collection-creator.js
static/scripts/mvc/dataset/dataset-li-edit.js
static/scripts/mvc/dataset/dataset-li.js
static/scripts/mvc/history/history-panel.js
static/scripts/mvc/history/multi-panel.js
static/scripts/mvc/list/list-panel.js
static/scripts/mvc/ui/ui-select-default.js
Commit: dff94d743fd6e438f069deae5c9e8479357190cc
https://github.com/galaxyproject/galaxy/commit/dff94d743fd6e438f069deae5c9e…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-08 (Fri, 08 Jan 2016)
Changed paths:
M lib/galaxy/tools/actions/__init__.py
M test/api/test_tools.py
Log Message:
-----------
"Fix" collection outputs to hide the HDAs in the history.
Long term this is just not a solution, but it is the strategy we use for mapped over output HDAs also.
Rebased and fixed based on comments from @nsoranzo indicating the previous attempt did absolutely nothing to fix the problem.
xref https://github.com/galaxyproject/tools-iuc/pull/412/files
Conflicts:
lib/galaxy/tools/actions/__init__.py
Commit: 88a1e636b8dea04a0db7d557fa6eb1483097b69d
https://github.com/galaxyproject/galaxy/commit/88a1e636b8dea04a0db7d557fa6e…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2016-01-08 (Fri, 08 Jan 2016)
Changed paths:
M lib/galaxy/tools/toolbox/watcher.py
Log Message:
-----------
Merge pull request #1448 from jmchilton/watcher_fix
[16.01] Fix optional watchdog handling.
Commit: e36d33ce74babd939b3e70f30f0bf84f3cd2e527
https://github.com/galaxyproject/galaxy/commit/e36d33ce74babd939b3e70f30f0b…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-08 (Fri, 08 Jan 2016)
Log Message:
-----------
Merge pull request #1451 from jmchilton/release_16.01_merge_0
[16.01] Empty cherry-pick of 93c6d05 to cleanup merge 15.10 -> 16.01
Commit: f8a7ac082036995573f849b12f64f6d4fbfb8b6b
https://github.com/galaxyproject/galaxy/commit/f8a7ac082036995573f849b12f64…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-08 (Fri, 08 Jan 2016)
Changed paths:
M client/galaxy/scripts/mvc/collection/list-collection-creator.js
M client/galaxy/scripts/mvc/library/library-foldertoolbar-view.js
M lib/galaxy/config.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/parameters/basic.py
M lib/galaxy/tools/toolbox/base.py
M lib/galaxy/webapps/galaxy/api/lda_datasets.py
M lib/galaxy/webapps/galaxy/api/remote_files.py
M lib/galaxy/workflow/extract.py
M static/maps/mvc/collection/list-collection-creator.js.map
M static/maps/mvc/library/library-foldertoolbar-view.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/collection/list-collection-creator.js
M static/scripts/mvc/library/library-foldertoolbar-view.js
M templates/webapps/reports/jobs_errors_per_tool.mako
M templates/webapps/reports/jobs_per_month_all.mako
M templates/webapps/reports/jobs_per_month_in_error.mako
M templates/webapps/reports/jobs_per_tool.mako
M templates/webapps/reports/jobs_per_user.mako
M templates/webapps/reports/jobs_specified_month_all.mako
M templates/webapps/reports/jobs_specified_month_in_error.mako
M templates/webapps/reports/jobs_tool_per_month.mako
M templates/webapps/reports/jobs_user_per_month.mako
M templates/webapps/reports/registered_users_per_month.mako
M templates/webapps/reports/requests_user_per_month.mako
M templates/webapps/reports/users_last_access_date.mako
M templates/webapps/reports/users_user_disk_usage.mako
M templates/webapps/reports/workflows_per_month_all.mako
M templates/webapps/reports/workflows_per_user.mako
M templates/webapps/reports/workflows_per_workflow.mako
M templates/webapps/reports/workflows_user_per_month.mako
Log Message:
-----------
Merge release_15.10 into release_16.01.
Conflicts:
eggs.ini
lib/galaxy/tools/__init__.py
lib/galaxy/tools/actions/__init__.py
lib/galaxy/tools/toolbox/base.py
static/maps/mvc/collection/list-collection-creator.js.map
static/maps/mvc/library/library-foldertoolbar-view.js.map
static/maps/utils/uploadbox.js.map
static/scripts/mvc/collection/list-collection-creator.js
static/scripts/mvc/library/library-foldertoolbar-view.js
static/scripts/utils/uploadbox.js
test/base/twilltestcase.py
test/functional/tools/samples_tool_conf.xml
Commit: c13b1c088cfbb0c708b2ce1d9068c704aba6cc95
https://github.com/galaxyproject/galaxy/commit/c13b1c088cfbb0c708b2ce1d9068…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-08 (Fri, 08 Jan 2016)
Log Message:
-----------
Merge pull request #1458 from jmchilton/release_15.10_merge_0
[15.10] Merge 15.07 into 15.10.
Commit: bb8f0f75efb971471fa65c2cc6951bfaa00b0fd0
https://github.com/galaxyproject/galaxy/commit/bb8f0f75efb971471fa65c2cc695…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-08 (Fri, 08 Jan 2016)
Changed paths:
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/toolbox/base.py
Log Message:
-----------
Merge pull request #1455 from jmchilton/release_16.01_merge_1
[16.01] Merge #1314 forward into 16.01.
Commit: 0403a3175cbbdf45c76b8db31549ae7ec734b1ce
https://github.com/galaxyproject/galaxy/commit/0403a3175cbbdf45c76b8db31549…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-08 (Fri, 08 Jan 2016)
Changed paths:
M lib/galaxy/tours/__init__.py
Log Message:
-----------
Fix refactoring from 7587809b
Commit: 71aef50d25646325aca1eefab79f5cfff93246c3
https://github.com/galaxyproject/galaxy/commit/71aef50d25646325aca1eefab79f…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-08 (Fri, 08 Jan 2016)
Changed paths:
M lib/galaxy/tools/actions/__init__.py
M test/api/test_tools.py
Log Message:
-----------
Merge pull request #1461 from jmchilton/release_16.01
[16.01] Merge more of 15.10 forward.
Commit: 252586f86cfe0467244472d75483cd182556bfef
https://github.com/galaxyproject/galaxy/commit/252586f86cfe0467244472d75483…
Author: Bjoern Gruening <bjoern.gruening(a)gmail.com>
Date: 2016-01-10 (Sun, 10 Jan 2016)
Changed paths:
M config/plugins/tours/core.galaxy_ui.yaml
M config/plugins/tours/core.history.yaml
Log Message:
-----------
improve default tours
Commit: 3dda415fb9f516630f360aba5a9cd562ee70e680
https://github.com/galaxyproject/galaxy/commit/3dda415fb9f516630f360aba5a9c…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-11 (Mon, 11 Jan 2016)
Changed paths:
M client/galaxy/scripts/mvc/history/history-view-edit.js
M config/plugins/tours/core.galaxy_ui.yaml
M config/plugins/tours/core.history.yaml
M static/maps/mvc/history/history-view-edit.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/history/history-view-edit.js
Log Message:
-----------
Merge remote-tracking branch 'jmchilton/release_16.01' into release_16.01_merge_4
Conflicts:
static/scripts/bundled/analysis.bundled.js.map
static/scripts/bundled/libs.bundled.js.map
Commit: d2702e9e4448a008b8d49744f549c160c7023ee1
https://github.com/galaxyproject/galaxy/commit/d2702e9e4448a008b8d49744f549…
Author: Björn Grüning <bjoern(a)gruenings.eu>
Date: 2016-01-11 (Mon, 11 Jan 2016)
Changed paths:
M config/plugins/tours/core.history.yaml
Log Message:
-----------
Fix spelling mistake spotted by Nicola
Commit: 54dca064fafca929ccd16625797a1eafe21da391
https://github.com/galaxyproject/galaxy/commit/54dca064fafca929ccd16625797a…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2016-01-11 (Mon, 11 Jan 2016)
Changed paths:
M client/galaxy/scripts/mvc/history/history-view-edit.js
M static/maps/mvc/history/history-view-edit.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/history/history-view-edit.js
Log Message:
-----------
UI, Multi-history: fix drop event handler to use dataTransfer of original event
Commit: 107ce1986f62eaeb1fb26a49921d8e1cbc53c958
https://github.com/galaxyproject/galaxy/commit/107ce1986f62eaeb1fb26a49921d…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-11 (Mon, 11 Jan 2016)
Changed paths:
M config/plugins/tours/core.galaxy_ui.yaml
M config/plugins/tours/core.history.yaml
Log Message:
-----------
Merge pull request #1464 from bgruening/tours+
Improve default tours
Commit: 66c94125ee258baf6578b439e9fb4b33f2bd5499
https://github.com/galaxyproject/galaxy/commit/66c94125ee258baf6578b439e9fb…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-11 (Mon, 11 Jan 2016)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/web/base/controller.py
M test/api/test_workflows.py
M test/api/workflows_format_2/interface.py
M test/api/workflows_format_2/main.py
Log Message:
-----------
Copy workflow objects when importing them.
If not anywhere workflow.stored_workflow is checked will be broken.
Commit: cea1f9e617b9375e3a01b7b4bf7804d0d0117cee
https://github.com/galaxyproject/galaxy/commit/cea1f9e617b9375e3a01b7b4bf78…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-11 (Mon, 11 Jan 2016)
Changed paths:
M client/galaxy/scripts/mvc/history/history-view-edit.js
M static/maps/mvc/history/history-view-edit.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/history/history-view-edit.js
Log Message:
-----------
Merge pull request #1468 from carlfeberhard/fix.multihistory-drop
[16.01] UI, Multi-history: fix drop event handler to use dataTransfer of orig…
Commit: 24cb97cdbf9672ea09748a58c3d6d14b97704958
https://github.com/galaxyproject/galaxy/commit/24cb97cdbf9672ea09748a58c3d6…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-01-11 (Mon, 11 Jan 2016)
Changed paths:
M client/galaxy/scripts/mvc/collection/list-collection-creator.js
M client/galaxy/scripts/mvc/library/library-foldertoolbar-view.js
M lib/galaxy/config.py
M lib/galaxy/tools/__init__.py
M lib/galaxy/tools/parameters/basic.py
M lib/galaxy/tools/toolbox/base.py
M lib/galaxy/webapps/galaxy/api/lda_datasets.py
M lib/galaxy/webapps/galaxy/api/remote_files.py
M lib/galaxy/workflow/extract.py
M static/maps/mvc/collection/list-collection-creator.js.map
M static/maps/mvc/library/library-foldertoolbar-view.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/collection/list-collection-creator.js
M static/scripts/mvc/library/library-foldertoolbar-view.js
M templates/webapps/reports/jobs_errors_per_tool.mako
M templates/webapps/reports/jobs_per_month_all.mako
M templates/webapps/reports/jobs_per_month_in_error.mako
M templates/webapps/reports/jobs_per_tool.mako
M templates/webapps/reports/jobs_per_user.mako
M templates/webapps/reports/jobs_specified_month_all.mako
M templates/webapps/reports/jobs_specified_month_in_error.mako
M templates/webapps/reports/jobs_tool_per_month.mako
M templates/webapps/reports/jobs_user_per_month.mako
M templates/webapps/reports/registered_users_per_month.mako
M templates/webapps/reports/requests_user_per_month.mako
M templates/webapps/reports/users_last_access_date.mako
M templates/webapps/reports/users_user_disk_usage.mako
M templates/webapps/reports/workflows_per_month_all.mako
M templates/webapps/reports/workflows_per_user.mako
M templates/webapps/reports/workflows_per_workflow.mako
M templates/webapps/reports/workflows_user_per_month.mako
Log Message:
-----------
Merge pull request #1462 from jmchilton/release_16.01_merge_4
[16.01] Full merge of 15.10 into 16.01.
Commit: 9dc9ddf8cdede7c62d4ba5f00283675b872891e4
https://github.com/galaxyproject/galaxy/commit/9dc9ddf8cdede7c62d4ba5f00283…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-13 (Wed, 13 Jan 2016)
Changed paths:
M run.sh
M run_tests.sh
M scripts/common_startup.sh
Log Message:
-----------
Add --replace-pip option to common_startup.sh.
Needed to restore correct functionality to planemo.
Commit: 8fd83df6652a40882bcc3ca8a1db917887b71c11
https://github.com/galaxyproject/galaxy/commit/8fd83df6652a40882bcc3ca8a1db…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-13 (Wed, 13 Jan 2016)
Changed paths:
M run.sh
M run_tests.sh
M scripts/common_startup.sh
Log Message:
-----------
Allow override of location of virtual env Galaxy manages.
Commit: 55677f2d3db723c023540b8d640563a9f3ca04c5
https://github.com/galaxyproject/galaxy/commit/55677f2d3db723c023540b8d6405…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-13 (Wed, 13 Jan 2016)
Changed paths:
M config/galaxy.ini.sample
M lib/galaxy/jobs/command_factory.py
M lib/galaxy/jobs/runners/__init__.py
M lib/galaxy/jobs/runners/util/job_script/DEFAULT_JOB_FILE_TEMPLATE.sh
M lib/galaxy/jobs/runners/util/job_script/__init__.py
M test/unit/jobs/test_command_factory.py
Log Message:
-----------
Fix to ensure integrity of tool_script.sh also.
Previously the job script underwent these checks and I had assumed since that got written later it would never be the case that tool_script.sh wouldn't be synchronized by the job script was - turns out file systems are more creative and less logical than one might expected.
Also increases the count for the number of syncs that will execute because 15 on rare occasion proved not to be enough as well as making both the count and sleep time configurable.
Commit: b559cf303c1b14aa862ba394d7bc868bc517db5a
https://github.com/galaxyproject/galaxy/commit/b559cf303c1b14aa862ba394d7bc…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-13 (Wed, 13 Jan 2016)
Changed paths:
M setup.cfg
Log Message:
-----------
Drop E731 from flake8 enforcement (though we should revisit this and see if we *do* want to follow this or not)
Commit: 2f1dbeee68ddd75a561fe0f463d5b9968278ef13
https://github.com/galaxyproject/galaxy/commit/2f1dbeee68ddd75a561fe0f463d5…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-13 (Wed, 13 Jan 2016)
Changed paths:
M lib/galaxy/jobs/__init__.py
M lib/galaxy/managers/rbac_secured.py
M lib/galaxy/model/migrate/versions/0052_sample_dataset_table.py
M lib/galaxy/model/migrate/versions/0065_add_name_to_form_fields_and_values.py
M lib/galaxy/model/migrate/versions/0067_populate_sequencer_table.py
M lib/galaxy/util/pastescript/loadwsgi.py
M lib/pulsar/client/amqp_exchange.py
M scripts/cleanup_datasets/admin_cleanup_datasets.py
M test/casperjs/casperjs_runner.py
Log Message:
-----------
Address W503 and E721 errors now enforced by pep8 1.7.
Commit: 86158cbc7fb601d0f3563fa2bea67e23b464db93
https://github.com/galaxyproject/galaxy/commit/86158cbc7fb601d0f3563fa2bea6…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-01-13 (Wed, 13 Jan 2016)
Changed paths:
M lib/galaxy/jobs/__init__.py
M lib/galaxy/managers/rbac_secured.py
M lib/galaxy/model/migrate/versions/0052_sample_dataset_table.py
M lib/galaxy/model/migrate/versions/0065_add_name_to_form_fields_and_values.py
M lib/galaxy/model/migrate/versions/0067_populate_sequencer_table.py
M lib/galaxy/util/pastescript/loadwsgi.py
M lib/pulsar/client/amqp_exchange.py
M scripts/cleanup_datasets/admin_cleanup_datasets.py
M setup.cfg
M test/casperjs/casperjs_runner.py
Log Message:
-----------
Merge pull request #1487 from dannon/release_16.01
[16.01] Cherrypick of pep8 fixes.
Commit: becffe93a3f78ca74b5d093974844a3634e1ed6b
https://github.com/galaxyproject/galaxy/commit/becffe93a3f78ca74b5d09397484…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-01-13 (Wed, 13 Jan 2016)
Changed paths:
M run.sh
M run_tests.sh
M scripts/common_startup.sh
Log Message:
-----------
Merge pull request #1485 from jmchilton/common_startup_fixes
[16.01] Fix common_startup options for planemo.
Commit: 37f8038d63f8243151e817e9d564f90c58772c1f
https://github.com/galaxyproject/galaxy/commit/37f8038d63f8243151e817e9d564…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2016-01-13 (Wed, 13 Jan 2016)
Changed paths:
M client/galaxy/scripts/layout/menu.js
M static/maps/layout/menu.js.map
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/layout/menu.js
Log Message:
-----------
Undo user icon in masthead
Commit: 9d91be8dd3b84a5b37b6010cbb31df7070fb6170
https://github.com/galaxyproject/galaxy/commit/9d91be8dd3b84a5b37b6010cbb31…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-01-13 (Wed, 13 Jan 2016)
Changed paths:
A lib/galaxy/dependencies/pinned-hashed-requirements.txt
M lib/galaxy/dependencies/pinned-requirements.txt
M requirements.txt
Log Message:
-----------
Pin release wheel verisons. pinned-requirements.txt renamed to
pinned-hashed-requirements.txt as unfortunately even Galaxy pip does not
support --hash
Commit: 0bcfa74ea1e0eb57927bd1850feb9331489af6bc
https://github.com/galaxyproject/galaxy/commit/0bcfa74ea1e0eb57927bd1850feb…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2016-01-13 (Wed, 13 Jan 2016)
Changed paths:
M lib/galaxy/datatypes/tabular.py
Log Message:
-----------
Set mime type when previewing tabular data that has > 50 columns, but < 1000000 bytes. Fixes the issue of losing newlines and actual spacing (i.e. do not treat as html).
Commit: cb09c35a07e3b9f8ca7e4eb5e8d37ffacdee6253
https://github.com/galaxyproject/galaxy/commit/cb09c35a07e3b9f8ca7e4eb5e8d3…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2016-01-13 (Wed, 13 Jan 2016)
Changed paths:
M lib/galaxy/datatypes/data.py
M lib/galaxy/datatypes/tabular.py
Log Message:
-----------
Fix line wrapping for peek of tabular files.
Commit: f78756cb79f294689227e0222c8b75f3100047b5
https://github.com/galaxyproject/galaxy/commit/f78756cb79f294689227e0222c8b…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-13 (Wed, 13 Jan 2016)
Changed paths:
M lib/galaxy/tools/cwl/cwltool_deps.py
M lib/galaxy/tools/deps/resolvers/__init__.py
M lib/galaxy/tools/deps/resolvers/conda.py
Log Message:
-----------
Fix a few problems discovered through planemo.
Including 'TypeError: _get_config_option() got multiple values for keyword argument 'prefix' and problem when planemo's cwltool is installed in Galaxy's virtualenv.
Commit: 9d52a4a31dd9e660855bf1e12bd07d3c49b73fd9
https://github.com/galaxyproject/galaxy/commit/9d52a4a31dd9e660855bf1e12bd0…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-13 (Wed, 13 Jan 2016)
Changed paths:
M client/galaxy/scripts/layout/menu.js
M static/maps/layout/menu.js.map
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/layout/menu.js
Log Message:
-----------
Merge pull request #1493 from guerler/undo_user_000
[16.01] Undo user icon in masthead
Commit: 4b5b970d7898a33faca5557b4382ddc9d3923ae6
https://github.com/galaxyproject/galaxy/commit/4b5b970d7898a33faca5557b4382…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2016-01-13 (Wed, 13 Jan 2016)
Changed paths:
M client/galaxy/scripts/layout/menu.js
M static/maps/layout/menu.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/layout/menu.js
M test/qunit/tests/masthead_tests.js
Log Message:
-----------
Fix disabled css
Commit: 2e62388b2f34ad83f215bb3eff4c6ae5b1efd7b7
https://github.com/galaxyproject/galaxy/commit/2e62388b2f34ad83f215bb3eff4c…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-01-14 (Thu, 14 Jan 2016)
Changed paths:
M config/galaxy.ini.sample
M lib/galaxy/jobs/command_factory.py
M lib/galaxy/jobs/runners/__init__.py
M lib/galaxy/jobs/runners/util/job_script/DEFAULT_JOB_FILE_TEMPLATE.sh
M lib/galaxy/jobs/runners/util/job_script/__init__.py
M test/unit/jobs/test_command_factory.py
Log Message:
-----------
Merge pull request #1494 from jmchilton/tool_command_integrity
[16.01] Fix to ensure integrity of tool_script.sh also.
Commit: 3e47aa23b8426e21f5dac573f6eb96bfeac550b6
https://github.com/galaxyproject/galaxy/commit/3e47aa23b8426e21f5dac573f6eb…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-14 (Thu, 14 Jan 2016)
Changed paths:
M config/galaxy.ini.sample
M lib/galaxy/config.py
M lib/galaxy/jobs/__init__.py
M lib/galaxy/jobs/command_factory.py
M lib/galaxy/jobs/runners/__init__.py
M lib/galaxy/jobs/runners/util/job_script/DEFAULT_JOB_FILE_TEMPLATE.sh
M lib/galaxy/jobs/runners/util/job_script/__init__.py
M lib/galaxy/tools/deps/resolvers/conda.py
M test/unit/jobs/test_command_factory.py
M test/unit/jobs/test_runner_local.py
Log Message:
-----------
Switch to bash as default shell (for conda resolver).
I'm making more things configurable in case someday the BSD user wants to use Galaxy - the default shell for jobs can be configured at the galaxy or job destination level now.
Commit: e69638277fc4e0c56347e51ed77f93c1f9261ecf
https://github.com/galaxyproject/galaxy/commit/e69638277fc4e0c56347e51ed77f…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-14 (Thu, 14 Jan 2016)
Changed paths:
M test/functional/tools/output_action_change_format.xml
Log Message:
-----------
Fix tab problem in test tool.
dash will convert the literal characters \t to a tab, bash doesn't seem to do this. Use portable printf as suggested by nicola.
Commit: 602dc7f6649d96086b85ed0d309eef7c4ed73a13
https://github.com/galaxyproject/galaxy/commit/602dc7f6649d96086b85ed0d309e…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-14 (Thu, 14 Jan 2016)
Changed paths:
M config/galaxy.ini.sample
M lib/galaxy/config.py
M lib/galaxy/jobs/__init__.py
M lib/galaxy/jobs/runners/util/job_script/__init__.py
Log Message:
-----------
Switch default job shell back to /bin/sh for 16.01.
Commit: 0902c23f3491b4840b649a203315939d0c7caa8c
https://github.com/galaxyproject/galaxy/commit/0902c23f3491b4840b649a203315…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-14 (Thu, 14 Jan 2016)
Changed paths:
M client/galaxy/scripts/layout/menu.js
M static/maps/layout/menu.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/layout/menu.js
M test/qunit/tests/masthead_tests.js
Log Message:
-----------
Merge pull request #1501 from guerler/fix_disabled_000
[16.01] Fix disabled css
Commit: eb3fc642fc1bddaeb5aaec3d4dbba8efd0ab398d
https://github.com/galaxyproject/galaxy/commit/eb3fc642fc1bddaeb5aaec3d4dbb…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-14 (Thu, 14 Jan 2016)
Changed paths:
M lib/galaxy/datatypes/tabular.py
Log Message:
-----------
Merge pull request #1498 from blankenberg/tab_mime
[16.01] Set mime type when previewing tabular data that has > 50 columns, but < 1000000 bytes.
Commit: 7de3bcdd7e4ecfbe4202bff1ad69a0d8b6b716cc
https://github.com/galaxyproject/galaxy/commit/7de3bcdd7e4ecfbe4202bff1ad69…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-14 (Thu, 14 Jan 2016)
Changed paths:
A lib/galaxy/dependencies/pinned-hashed-requirements.txt
M lib/galaxy/dependencies/pinned-requirements.txt
M requirements.txt
Log Message:
-----------
Merge pull request #1495 from natefoo/pin-release-wheels
[16.01] Pin release wheel versions
Commit: 1dac5f3bb63f7b34e7a84ae79d3eb60089712d0b
https://github.com/galaxyproject/galaxy/commit/1dac5f3bb63f7b34e7a84ae79d3e…
Author: Björn Grüning <bjoern(a)gruenings.eu>
Date: 2016-01-14 (Thu, 14 Jan 2016)
Changed paths:
M lib/galaxy/tools/cwl/cwltool_deps.py
M lib/galaxy/tools/deps/resolvers/__init__.py
M lib/galaxy/tools/deps/resolvers/conda.py
Log Message:
-----------
Merge pull request #1502 from jmchilton/planemo_fix
[16.01] Fix a few problems discovered through planemo.
Commit: be4ddb26d4c448bee8f797b9972360c93cae33fc
https://github.com/galaxyproject/galaxy/commit/be4ddb26d4c448bee8f797b99723…
Author: Björn Grüning <bjoern(a)gruenings.eu>
Date: 2016-01-14 (Thu, 14 Jan 2016)
Changed paths:
M config/galaxy.ini.sample
M lib/galaxy/config.py
M lib/galaxy/jobs/__init__.py
M lib/galaxy/jobs/command_factory.py
M lib/galaxy/jobs/runners/__init__.py
M lib/galaxy/jobs/runners/util/job_script/DEFAULT_JOB_FILE_TEMPLATE.sh
M lib/galaxy/jobs/runners/util/job_script/__init__.py
M lib/galaxy/tools/deps/resolvers/conda.py
M test/functional/tools/output_action_change_format.xml
M test/unit/jobs/test_command_factory.py
M test/unit/jobs/test_runner_local.py
Log Message:
-----------
Merge pull request #1473 from jmchilton/job_shell
[16.01] Allow override of job shell (for conda resolver).
Commit: 95d00b4174efd23b0ad9c350d3463bf9d696d8cc
https://github.com/galaxyproject/galaxy/commit/95d00b4174efd23b0ad9c350d346…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-14 (Thu, 14 Jan 2016)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Fix MIMEText usage in galaxy.util
Commit: e397ebba585ed578798645ee9352b891e3055372
https://github.com/galaxyproject/galaxy/commit/e397ebba585ed578798645ee9352…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-14 (Thu, 14 Jan 2016)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Merge pull request #1509 from dannon/release_16.01
Fix MIMEText usage in galaxy.util
Commit: 3ee94d58e0f24d3812ac59ef91b43e24856db45b
https://github.com/galaxyproject/galaxy/commit/3ee94d58e0f24d3812ac59ef91b4…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-01-14 (Thu, 14 Jan 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/user.py
Log Message:
-----------
catch Exception and properly log errors
Commit: c143d659d4f7b598bc89a9d06b8040dff39a1b85
https://github.com/galaxyproject/galaxy/commit/c143d659d4f7b598bc89a9d06b80…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-14 (Thu, 14 Jan 2016)
Changed paths:
M lib/galaxy/tools/toolbox/base.py
Log Message:
-----------
Revise tool caching to be less broken.
Just switch the default for tool caching and only cache during initial loads of tool panels - as during a toolbox refresh. This should mean that all code from tool shed will ignore the cache and should fix #1515.
Additionally, reloading the tool was broken since if would call the load tool code and then just trust the cache. This should fix tool reloading as well.
Commit: 12445a0524510dbafffa4c7908e243f70c55f154
https://github.com/galaxyproject/galaxy/commit/12445a0524510dbafffa4c7908e2…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-01-14 (Thu, 14 Jan 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/user.py
Log Message:
-----------
use log.exception instead of log.error to retain the stacktrace
Commit: 3d1ad5ad8dab30aa6c6372fbe85a0c3c7d198d61
https://github.com/galaxyproject/galaxy/commit/3d1ad5ad8dab30aa6c6372fbe85a…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-14 (Thu, 14 Jan 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/user.py
Log Message:
-----------
Merge pull request #1511 from martenson/log-user-exceptions-properly
[16.01] catch Exception and properly log errors
Commit: ae2ee4a4432b55a4b0fbdd218bc34f88f7ad1b2b
https://github.com/galaxyproject/galaxy/commit/ae2ee4a4432b55a4b0fbdd218bc3…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-15 (Fri, 15 Jan 2016)
Changed paths:
M lib/galaxy/tools/toolbox/base.py
Log Message:
-----------
Merge pull request #1517 from jmchilton/tool_cache_fixes
[16.01] Tool cache fixes
Commit: 817f36626d7e720b0dbb63d0071f2889146c1c41
https://github.com/galaxyproject/galaxy/commit/817f36626d7e720b0dbb63d0071f…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-15 (Fri, 15 Jan 2016)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/web/base/controller.py
M test/api/test_workflows.py
M test/api/workflows_format_2/interface.py
M test/api/workflows_format_2/main.py
Log Message:
-----------
Merge pull request #1474 from jmchilton/workflow_copy
[16.01] Copy workflow objects when importing them.
Commit: fc434d62e971df92bc51b296d119030ca85af303
https://github.com/galaxyproject/galaxy/commit/fc434d62e971df92bc51b296d119…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2016-01-15 (Fri, 15 Jan 2016)
Changed paths:
M lib/galaxy/tools/__init__.py
Log Message:
-----------
Handle unvalidated values in depth
Commit: 0e9302127f4478611170dee237d811e072100e99
https://github.com/galaxyproject/galaxy/commit/0e9302127f4478611170dee237d8…
Author: Bjoern Gruening <bjoern.gruening(a)gmail.com>
Date: 2016-01-16 (Sat, 16 Jan 2016)
Changed paths:
M lib/galaxy/tools/deps/resolvers/conda.py
Log Message:
-----------
sourcing Conda will write to stderr, we need to redirect it to stdout
Commit: a77403cc9e6ef2d90ba78822afca601eed09e6ec
https://github.com/galaxyproject/galaxy/commit/a77403cc9e6ef2d90ba78822afca…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-15 (Fri, 15 Jan 2016)
Changed paths:
M lib/galaxy/tools/deps/resolvers/conda.py
Log Message:
-----------
Merge pull request #1527 from bgruening/release_16.01
Sourcing Conda will write to stderr
Commit: 16e0bc08c8333c75c05a1a47de57eed8196bf9d9
https://github.com/galaxyproject/galaxy/commit/16e0bc08c8333c75c05a1a47de57…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-15 (Fri, 15 Jan 2016)
Changed paths:
M lib/galaxy/tools/__init__.py
Log Message:
-----------
Merge pull request #1526 from guerler/fix_unvalidated_001
[16.01] Handle unvalidated values in depth
Commit: eca2c3bcee2c9f05dee062c60607251a589a93fd
https://github.com/galaxyproject/galaxy/commit/eca2c3bcee2c9f05dee062c60607…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-19 (Tue, 19 Jan 2016)
Changed paths:
M test/api/test_workflows.py
A test/functional/tools/for_workflows/1.bam
A test/functional/tools/for_workflows/mapper.xml
A test/functional/tools/for_workflows/pileup.xml
M test/functional/tools/samples_tool_conf.xml
Log Message:
-----------
Failing test case to exhibit #1514.
Commit: f1394d250db103eda0bc88044eaa92f54f56476c
https://github.com/galaxyproject/galaxy/commit/f1394d250db103eda0bc88044eaa…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-19 (Tue, 19 Jan 2016)
Changed paths:
M lib/galaxy/tools/parameters/basic.py
M lib/galaxy/tools/parameters/validation.py
Log Message:
-----------
Fix #1514.
Prior to PR #1302 workflows wouldn't validate call validate at all on inputs. 1302 was perhaps an over correction that causes validate to be called on datasets that aren't yet READY but require metadata. This rolls that back somewhat, other parameters will still validate - but validation asserting the existence of metadata won't get called in workflows. This is still not ideal but after 1302 and this - we are still in a better, more secure place than beforehand.
One might argue that since we need to introduce a new validation point (right before a job is scheduled and set to QUEUED) - that we would be better off rolling back #1302 entirely. I've considered that, but I still think it is better to fail fast on the other problems, also I would rather call the validation code too many times than not enough and it would be very late in the release cycle for such a change.
Commit: 3f51101527fee096761a4c22ee8841e64b98f7a6
https://github.com/galaxyproject/galaxy/commit/3f51101527fee096761a4c22ee88…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-20 (Wed, 20 Jan 2016)
Changed paths:
M lib/galaxy/jobs/actions/post.py
M test/api/test_workflows.py
M test/api/workflows_format_2/converter.py
Log Message:
-----------
Attempt to fix #1531.
I was unable to reproduce #1531 in testing, but if the problem is something to do with stale state the following sledge hammer should fix it.
Runt the new test case with:
./run_tests.sh -api test/api/test_workflows.py:WorkflowsApiTestCase.test_delete_intermediate_datasets_pja_1
Commit: cd95635197eddaeee55be88f96543dc3a97e9343
https://github.com/galaxyproject/galaxy/commit/cd95635197eddaeee55be88f9654…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-20 (Wed, 20 Jan 2016)
Changed paths:
M lib/galaxy/tools/parameters/basic.py
Log Message:
-----------
Fix #1538.
Displaying subcollection mapping in tool forms was broken with #1308 - this fixes that I believe.
Commit: bbff72e0ce9876b495971d20223780f1244d1f03
https://github.com/galaxyproject/galaxy/commit/bbff72e0ce9876b495971d202237…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2016-01-20 (Wed, 20 Jan 2016)
Changed paths:
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M static/maps/mvc/workflow/workflow-view.js.map
M static/scripts/mvc/workflow/workflow-view.js
Log Message:
-----------
Fix upgrade messages
Commit: 035a67d0b5a1deeb54592937150a9ae82fab997e
https://github.com/galaxyproject/galaxy/commit/035a67d0b5a1deeb54592937150a…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2016-01-21 (Thu, 21 Jan 2016)
Changed paths:
M client/galaxy/scripts/mvc/form/form-select-content.js
M client/galaxy/scripts/mvc/ui/ui-select-default.js
M static/maps/mvc/form/form-select-content.js.map
M static/maps/mvc/ui/ui-select-default.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/form/form-select-content.js
M static/scripts/mvc/ui/ui-select-default.js
Log Message:
-----------
Keep track of hidden datasets
Commit: 1b43e8d68ffd44780f552e2472010d02dbc274b6
https://github.com/galaxyproject/galaxy/commit/1b43e8d68ffd44780f552e247201…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-21 (Thu, 21 Jan 2016)
Changed paths:
M lib/galaxy/tools/special_tools.py
Log Message:
-----------
Logging fix.
Commit: 093f1f2712eeaa3c4a23952e2488a9a7a6731b17
https://github.com/galaxyproject/galaxy/commit/093f1f2712eeaa3c4a23952e2488…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-21 (Thu, 21 Jan 2016)
Changed paths:
M lib/galaxy/datatypes/interval.py
Log Message:
-----------
Make sciex sniffer tighter.
Otherwise a bed file easily could sniff as sciex.
Commit: 58d75f4bc2e4e52b9f4541d20c1253e49735a22f
https://github.com/galaxyproject/galaxy/commit/58d75f4bc2e4e52b9f4541d20c12…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-21 (Thu, 21 Jan 2016)
Changed paths:
M client/galaxy/scripts/mvc/workflow/workflow-view.js
M static/maps/mvc/workflow/workflow-view.js.map
M static/scripts/mvc/workflow/workflow-view.js
Log Message:
-----------
Merge pull request #1550 from guerler/fix_upgrade_000
[16.01] Fix upgrade messages
Commit: a00faba4fefabd1e28f3ce58603c9f99abf9a4f8
https://github.com/galaxyproject/galaxy/commit/a00faba4fefabd1e28f3ce58603c…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-21 (Thu, 21 Jan 2016)
Changed paths:
M client/galaxy/scripts/mvc/form/form-select-content.js
M client/galaxy/scripts/mvc/ui/ui-select-default.js
M static/maps/mvc/form/form-select-content.js.map
M static/maps/mvc/ui/ui-select-default.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/form/form-select-content.js
M static/scripts/mvc/ui/ui-select-default.js
Log Message:
-----------
Merge pull request #1551 from guerler/fix_hidden_rerun_000
[16.01] Keep track of hidden datasets
Commit: 17abd4a30d41ff070202c1818ad84c015a642733
https://github.com/galaxyproject/galaxy/commit/17abd4a30d41ff070202c1818ad8…
Author: Aysam Guerler <aysam.guerler(a)gmail.com>
Date: 2016-01-21 (Thu, 21 Jan 2016)
Changed paths:
M lib/galaxy/tools/parameters/basic.py
M lib/galaxy/tools/parameters/validation.py
M test/api/test_workflows.py
A test/functional/tools/for_workflows/1.bam
A test/functional/tools/for_workflows/mapper.xml
A test/functional/tools/for_workflows/pileup.xml
M test/functional/tools/samples_tool_conf.xml
Log Message:
-----------
Merge pull request #1536 from jmchilton/issue_1514
[16.01] Test case and fix for issue #1514
Commit: 2fc982027cb3de555afbd1650b52dbd84897956a
https://github.com/galaxyproject/galaxy/commit/2fc982027cb3de555afbd1650b52…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-21 (Thu, 21 Jan 2016)
Changed paths:
M lib/galaxy/tools/special_tools.py
Log Message:
-----------
Merge pull request #1553 from jmchilton/logging_fix
[16.01] Logging fix.
Commit: e48388ef6cca6505d47b3daf3c2e0c4a5041b3f4
https://github.com/galaxyproject/galaxy/commit/e48388ef6cca6505d47b3daf3c2e…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-21 (Thu, 21 Jan 2016)
Changed paths:
M lib/galaxy/tools/parameters/basic.py
Log Message:
-----------
Merge pull request #1545 from jmchilton/subcollection_mapping_problem
[16.01] Fix #1538.
Commit: 8ceb4d8ee495d21a664e3faece1e072a88048494
https://github.com/galaxyproject/galaxy/commit/8ceb4d8ee495d21a664e3faece1e…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-01-21 (Thu, 21 Jan 2016)
Changed paths:
M scripts/common_startup.sh
Log Message:
-----------
Force --skip-venv if we can detect that Python is Conda Python.
Commit: aad5d9a2e557e935bd88f725deb10d0ed82468d8
https://github.com/galaxyproject/galaxy/commit/aad5d9a2e557e935bd88f725deb1…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-01-21 (Thu, 21 Jan 2016)
Changed paths:
M lib/galaxy/version.py
Log Message:
-----------
Bump 15.10 version to 15.10.1 (and apparently it has been incorrectly
set to 15.10.dev all this time).
Commit: 868acc362f6ce8a8b3559fcb88ebb4c060321905
https://github.com/galaxyproject/galaxy/commit/868acc362f6ce8a8b3559fcb88eb…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-01-21 (Thu, 21 Jan 2016)
Changed paths:
M lib/galaxy/version.py
Log Message:
-----------
Merge pull request #1555 from natefoo/release_15.10
[15.10] Bump 15.10 version to 15.10.1
Commit: fe96255022f4fdf72f39be959a15993d014a0d38
https://github.com/galaxyproject/galaxy/commit/fe96255022f4fdf72f39be959a15…
Author: Björn Grüning <bjoern(a)gruenings.eu>
Date: 2016-01-21 (Thu, 21 Jan 2016)
Changed paths:
M scripts/common_startup.sh
Log Message:
-----------
Merge pull request #1554 from natefoo/conda-interop
[16.01] Force --skip-venv if we can detect that Python is Conda Python.
Commit: f5fbe1c5020fb432346ce6340833937d13cbf6d0
https://github.com/galaxyproject/galaxy/commit/f5fbe1c5020fb432346ce6340833…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2016-01-21 (Thu, 21 Jan 2016)
Changed paths:
M client/galaxy/scripts/mvc/visualization/visualization-model.js
M config/plugins/visualizations/charts/Gruntfile.js
M config/plugins/visualizations/charts/static/build-app.js
M config/plugins/visualizations/charts/templates/charts.mako
M config/plugins/visualizations/scatterplot/templates/scatterplot.mako
R static/maps/libs/backbone/backbone.js.map
M static/maps/mvc/visualization/visualization-model.js.map
R static/scripts/libs/backbone/backbone.js
M static/scripts/mvc/visualization/visualization-model.js
Log Message:
-----------
Client: remove older compiled backbone/backbone.js, update scatterplot and charts for same; Visualizations: fix visualization-model url; Scatterplot: fix title bug and Galaxy var
Commit: c8b0057349be9a683e295c073f66163f47c257e7
https://github.com/galaxyproject/galaxy/commit/c8b0057349be9a683e295c073f66…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-01-21 (Thu, 21 Jan 2016)
Changed paths:
A lib/galaxy/dependencies/conda-requirements.txt
Log Message:
-----------
Add a requirements file suitable for use with `conda {create,install} --file`.
Commit: 1b7462644d0352d44b36e2d790d6d10d906e7be4
https://github.com/galaxyproject/galaxy/commit/1b7462644d0352d44b36e2d790d6…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-01-22 (Fri, 22 Jan 2016)
Changed paths:
M client/galaxy/scripts/mvc/visualization/visualization-model.js
M config/plugins/visualizations/charts/Gruntfile.js
M config/plugins/visualizations/charts/static/build-app.js
M config/plugins/visualizations/charts/templates/charts.mako
M config/plugins/visualizations/scatterplot/templates/scatterplot.mako
R static/maps/libs/backbone/backbone.js.map
M static/maps/mvc/visualization/visualization-model.js.map
R static/scripts/libs/backbone/backbone.js
M static/scripts/mvc/visualization/visualization-model.js
Log Message:
-----------
Merge pull request #1558 from carlfeberhard/release_16.01
[16.01] Fix redundant backbone and visualizations
Commit: bc9f9b9bf1de555db3a56b50a6655862f3cb4c73
https://github.com/galaxyproject/galaxy/commit/bc9f9b9bf1de555db3a56b50a665…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-26 (Tue, 26 Jan 2016)
Changed paths:
M scripts/bootstrap_history.py
Log Message:
-----------
Adapt release notes boot strap to new issues.
Commit: 528f80e40b7f7d729ce0761a25315b2a140f758a
https://github.com/galaxyproject/galaxy/commit/528f80e40b7f7d729ce0761a2531…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-26 (Tue, 26 Jan 2016)
Changed paths:
A doc/source/releases/16.01.rst
M doc/source/releases/16.01_announce.rst
A doc/source/releases/16.04_announce.rst
Log Message:
-----------
Auto-generate 16.01 release notes.
Commit: 4064bbf94f6d167d62e65b5fed988fb4232fd6ca
https://github.com/galaxyproject/galaxy/commit/4064bbf94f6d167d62e65b5fed98…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-26 (Tue, 26 Jan 2016)
Changed paths:
M doc/source/releases/16.01.rst
M doc/source/releases/16.01_announce.rst
M doc/source/releases/index.rst
Log Message:
-----------
16.01 release notes.
Commit: f0b5f7757e4df3226db30271e64646c828306aad
https://github.com/galaxyproject/galaxy/commit/f0b5f7757e4df3226db30271e646…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-01-26 (Tue, 26 Jan 2016)
Changed paths:
M doc/source/releases/16.01_announce.rst
Log Message:
-----------
add link to Main tour; add sentence to WF nesting
Commit: 79dfff4d65a6e8a2e102aae5d9af129c445fe9a5
https://github.com/galaxyproject/galaxy/commit/79dfff4d65a6e8a2e102aae5d9af…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-26 (Tue, 26 Jan 2016)
Changed paths:
M doc/source/releases/16.01.rst
Log Message:
-----------
Typo discovered by @nsoranzo
Commit: c117d400506e605c41e3837b83d79593733c5af0
https://github.com/galaxyproject/galaxy/commit/c117d400506e605c41e3837b83d7…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-01-26 (Tue, 26 Jan 2016)
Changed paths:
M lib/galaxy/datatypes/interval.py
Log Message:
-----------
Merge pull request #1557 from jmchilton/sciex_sniff
[16.01] Tighten up ScIdx sniffer.
Commit: 281a53d97567dbc5458b47e283f891e91b680bc9
https://github.com/galaxyproject/galaxy/commit/281a53d97567dbc5458b47e283f8…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2016-01-26 (Tue, 26 Jan 2016)
Changed paths:
M doc/source/releases/16.01.rst
Log Message:
-----------
Small RST fixes.
Commit: 08fbd8923af0ba5012e23a774adea7e878ea2047
https://github.com/galaxyproject/galaxy/commit/08fbd8923af0ba5012e23a774ade…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2016-01-26 (Tue, 26 Jan 2016)
Changed paths:
M doc/source/releases/16.01.rst
Log Message:
-----------
Merge some entries. Add some missing PRs.
Commit: dc801dc1f6097b283e01c784d09261b3c4ee21e5
https://github.com/galaxyproject/galaxy/commit/dc801dc1f6097b283e01c784d092…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-01-26 (Tue, 26 Jan 2016)
Changed paths:
A doc/source/admin/framework_dependencies.rst
M doc/source/admin/index.rst
Log Message:
-----------
Add admin documentation for framework dependencies (wheels) for the
16.01 release.
Commit: 35f90da20ca21a8f82d1650c0cf520a064b6bd8a
https://github.com/galaxyproject/galaxy/commit/35f90da20ca21a8f82d1650c0cf5…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-01-26 (Tue, 26 Jan 2016)
Changed paths:
M lib/galaxy/jobs/actions/post.py
M test/api/test_workflows.py
M test/api/workflows_format_2/converter.py
Log Message:
-----------
Merge pull request #1542 from jmchilton/did_fix
[16.01] Attempt to fix #1531.
Commit: 1486af0ef90a186b5648f737af32e84640263857
https://github.com/galaxyproject/galaxy/commit/1486af0ef90a186b5648f737af32…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-01-26 (Tue, 26 Jan 2016)
Changed paths:
A lib/galaxy/dependencies/conda-environment.txt
R lib/galaxy/dependencies/conda-requirements.txt
Log Message:
-----------
Rename conda-requirements.txt to conda-environment.txt since it is not a
requirements file, include instructions on how to install remaining
dependencies from pip.
Commit: 9827f32775b34a566c887963103a1f921e2b7a95
https://github.com/galaxyproject/galaxy/commit/9827f32775b34a566c887963103a…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-01-26 (Tue, 26 Jan 2016)
Changed paths:
M doc/source/admin/framework_dependencies.rst
Log Message:
-----------
conda-requirements.txt renamed to conda-environment.txt
Commit: c2d94c43bbd5929d4773e859dc1f5d8e436b0ee8
https://github.com/galaxyproject/galaxy/commit/c2d94c43bbd5929d4773e859dc1f…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-26 (Tue, 26 Jan 2016)
Changed paths:
A lib/galaxy/dependencies/conda-environment.txt
Log Message:
-----------
Merge pull request #1560 from natefoo/conda-interop
[16.01] Add a requirements file suitable for use with `conda {create,install} --file`
Commit: 168f453094d546cd1552a1a179decc4914c1d93a
https://github.com/galaxyproject/galaxy/commit/168f453094d546cd1552a1a179de…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-01-26 (Tue, 26 Jan 2016)
Changed paths:
M doc/source/admin/framework_dependencies.rst
Log Message:
-----------
Suggest installing virtualenv from brew
Commit: 954aff7fa806ee77682476ac56ec95027482bb0c
https://github.com/galaxyproject/galaxy/commit/954aff7fa806ee77682476ac56ec…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-26 (Tue, 26 Jan 2016)
Changed paths:
A doc/source/admin/framework_dependencies.rst
M doc/source/admin/index.rst
Log Message:
-----------
Merge pull request #1589 from natefoo/admin-docs
[16.01] Add admin documentation for framework dependencies (wheels)
Commit: b1ae5d8c67f1565084eb811a8e84632718ac5543
https://github.com/galaxyproject/galaxy/commit/b1ae5d8c67f1565084eb811a8e84…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2016-01-27 (Wed, 27 Jan 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/user.py
Log Message:
-----------
UI, users: allow '/user' and '/user/' to default controller and correctly return the user/index.mako template (preventing an internal error)
Commit: 390c1fc275ba7128f22f533b0b512b0bc517e521
https://github.com/galaxyproject/galaxy/commit/390c1fc275ba7128f22f533b0b51…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-01-27 (Wed, 27 Jan 2016)
Changed paths:
M scripts/common_startup.sh
Log Message:
-----------
Always install a specific version of Galaxy pip in common_startup.sh.
Commit: 55f67e59d654588ff0fca9e168e8f5e1411af50a
https://github.com/galaxyproject/galaxy/commit/55f67e59d654588ff0fca9e168e8…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2016-01-27 (Wed, 27 Jan 2016)
Changed paths:
M lib/galaxy/model/__init__.py
Log Message:
-----------
Core, HDCAs: fix 'copy_item_annotation' error when copying a history with an hdca by adding UsesAnnotations mixin to HDCA model
Commit: d3277072cc49d9a7e50a9619e899c0796c2a808e
https://github.com/galaxyproject/galaxy/commit/d3277072cc49d9a7e50a9619e899…
Author: Aysam Guerler <aysam.guerler(a)gmail.com>
Date: 2016-01-28 (Thu, 28 Jan 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/user.py
Log Message:
-----------
Merge pull request #1594 from carlfeberhard/release_16.01
[16.01] UI, users: allow '/user' and '/user/' to default controller and corre…
Commit: c60ddc241b9bb92ea0c67fea16b2ec5fa415bceb
https://github.com/galaxyproject/galaxy/commit/c60ddc241b9bb92ea0c67fea16b2…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-28 (Thu, 28 Jan 2016)
Changed paths:
M lib/galaxy/model/__init__.py
Log Message:
-----------
Merge pull request #1599 from carlfeberhard/fix.hdca-copy
[16.01] Core, HDCAs: fix 'copy_item_annotation' error when copying a history …
Commit: f499ec0cabefb62b87d43af223d0473e2528dcc7
https://github.com/galaxyproject/galaxy/commit/f499ec0cabefb62b87d43af223d0…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-01-28 (Thu, 28 Jan 2016)
Changed paths:
A doc/source/releases/16.01.rst
M doc/source/releases/16.01_announce.rst
A doc/source/releases/16.04_announce.rst
M doc/source/releases/index.rst
M scripts/bootstrap_history.py
Log Message:
-----------
Merge pull request #1585 from jmchilton/16.01_release_notes
[16.01] Release notes for 16.01
Commit: 46471d61e4349bba2d0c702de18f91a5b201bb66
https://github.com/galaxyproject/galaxy/commit/46471d61e4349bba2d0c702de18f…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-01-28 (Thu, 28 Jan 2016)
Changed paths:
M scripts/common_startup.sh
Log Message:
-----------
pip < 1.6 cannot parse requirement specifiers to the `install` command
that contain a `+` in the version. For these older versions, directly
install the wheel or install from the sdist. Technically 1.4 and later
can install wheels, but in testing, only 1.5+ was able to install them
properly with their scripts.
The new heredoc execute and redirect syntax is Bourne-compatible.
pip --pre is no longer necessary since the Galaxy pip version is no
longer a development version of pip.
Commit: 60062b020dc2b753e5b8f034272e0b982b8c2f6f
https://github.com/galaxyproject/galaxy/commit/60062b020dc2b753e5b8f034272e…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-01-28 (Thu, 28 Jan 2016)
Changed paths:
M scripts/common_startup.sh
Log Message:
-----------
pip 1.6 -> 6.0, thanks @nsoranzo
Commit: 33ba1face9e1f1bf025f37dc4e508143972845dc
https://github.com/galaxyproject/galaxy/commit/33ba1face9e1f1bf025f37dc4e50…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-01-28 (Thu, 28 Jan 2016)
Changed paths:
M doc/source/admin/framework_dependencies.rst
M doc/source/releases/16.01_announce.rst
Log Message:
-----------
Link from the 16.01 announcement to the Admin wheels documentation,
document the process of adding new wheels.
Commit: 27685377f629c536e56189e795bc91bb8caf0736
https://github.com/galaxyproject/galaxy/commit/27685377f629c536e56189e795bc…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-28 (Thu, 28 Jan 2016)
Changed paths:
M doc/source/admin/framework_dependencies.rst
M doc/source/releases/16.01_announce.rst
Log Message:
-----------
Merge pull request #1612 from natefoo/admin-docs
[16.01] Additional documentation regarding wheels
Commit: 685fd1560e98e6d885d6cf627b691d2228807974
https://github.com/galaxyproject/galaxy/commit/685fd1560e98e6d885d6cf627b69…
Author: Nicola Soranzo <nsoranzo(a)tiscali.it>
Date: 2016-01-28 (Thu, 28 Jan 2016)
Changed paths:
M scripts/common_startup.sh
Log Message:
-----------
Merge pull request #1595 from natefoo/fix-pip-wheel-version
[16.01] Always install a specific version of Galaxy pip in common_startup.sh.
Commit: 981f904c3f8a501ffabaf7b83538151070bd8a21
https://github.com/galaxyproject/galaxy/commit/981f904c3f8a501ffabaf7b83538…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-29 (Fri, 29 Jan 2016)
Changed paths:
M lib/galaxy/objectstore/__init__.py
M lib/galaxy/util/__init__.py
Log Message:
-----------
Attempt to fix transiently failing test due to object store makedirs call.
Failing test - https://jenkins.galaxyproject.org/job/docker-api/2421/testReport/junit/api.….
If you look at the actual source code for os.makedirs - it does inconsistently handle errno.EEXIST - this is probably a better approach than raw os.makedirs for most cases.
xref #1617
Commit: 81535c5778b70001bfeb3da5690eba6426ea4638
https://github.com/galaxyproject/galaxy/commit/81535c5778b70001bfeb3da5690e…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-01-29 (Fri, 29 Jan 2016)
Changed paths:
M lib/galaxy/datatypes/data.py
M lib/galaxy/datatypes/tabular.py
Log Message:
-----------
Merge pull request #1500 from blankenberg/peek-fix
[16.01] Fix line wrapping for peek of tabular files.
Commit: 4ae49fbfec952a2087a9cf3f9b9940f86fd05220
https://github.com/galaxyproject/galaxy/commit/4ae49fbfec952a2087a9cf3f9b99…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2016-01-29 (Fri, 29 Jan 2016)
Changed paths:
M client/galaxy/style/less/base.less
M static/style/blue/base.css
Log Message:
-----------
Fix module/step border style in workflow canvas
Commit: 44336b289bd5ba7d9911bf1c1fcc0a604fda7358
https://github.com/galaxyproject/galaxy/commit/44336b289bd5ba7d9911bf1c1fcc…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-01-29 (Fri, 29 Jan 2016)
Changed paths:
M client/galaxy/style/less/base.less
M static/style/blue/base.css
Log Message:
-----------
Merge pull request #1620 from guerler/fix_module_border_000
[16.01] Fix module/step border style in workflow canvas
Commit: 17a1683a383d7f375b77371548ff7d349a561a96
https://github.com/galaxyproject/galaxy/commit/17a1683a383d7f375b77371548ff…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-02-01 (Mon, 01 Feb 2016)
Changed paths:
M lib/galaxy/tools/__init__.py
Log Message:
-----------
Warn on optional select test parameter.
Commit: ade18b3cd23c54c347d38585736d32da5fccc4dd
https://github.com/galaxyproject/galaxy/commit/ade18b3cd23c54c347d38585736d…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-02-01 (Mon, 01 Feb 2016)
Changed paths:
M lib/galaxy/objectstore/__init__.py
M lib/galaxy/util/__init__.py
Log Message:
-----------
Merge pull request #1623 from jmchilton/makedirs
[16.01] Attempt to fix transiently failing test due to objectstore makedirs …
Commit: 30ccebfb0c8ef0809bbd3f1d2d64be5ac23bb3a2
https://github.com/galaxyproject/galaxy/commit/30ccebfb0c8ef0809bbd3f1d2d64…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-02-01 (Mon, 01 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/api/lda_datasets.py
Log Message:
-----------
remove forgotten util.params that fails when POSTing a payload{} dict
(because it cannot sanitize dict in dict)
Commit: 61818948a163602b3c135937d053fe42c46bb4d2
https://github.com/galaxyproject/galaxy/commit/61818948a163602b3c135937d053…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2016-02-01 (Mon, 01 Feb 2016)
Changed paths:
M client/galaxy/scripts/mvc/form/form-section.js
M static/maps/mvc/form/form-section.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/form/form-section.js
Log Message:
-----------
Fix default option for repeats
Commit: ee4f58ce7d6a81477e5e4fc3e544e5da909f1198
https://github.com/galaxyproject/galaxy/commit/ee4f58ce7d6a81477e5e4fc3e544…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-02-01 (Mon, 01 Feb 2016)
Changed paths:
M client/galaxy/scripts/mvc/form/form-section.js
M static/maps/mvc/form/form-section.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/form/form-section.js
Log Message:
-----------
Merge pull request #1635 from guerler/fix_repeat_default_001
[16.01] Fix default option for repeats
Commit: 9170865dfbe0f8588ec47449e683236e5ba92a39
https://github.com/galaxyproject/galaxy/commit/9170865dfbe0f8588ec47449e683…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-02-01 (Mon, 01 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/api/lda_datasets.py
Log Message:
-----------
Merge pull request #1634 from martenson/remove-utilparams
[16.01] libraries: remove forgotten util.params that fails when POSTing a payload {}
Commit: ccdb027d38428a38d79b4272fadb076b7f428825
https://github.com/galaxyproject/galaxy/commit/ccdb027d38428a38d79b4272fadb…
Author: guerler <aysam.guerler(a)gmail.com>
Date: 2016-02-01 (Mon, 01 Feb 2016)
Changed paths:
M lib/galaxy/tools/__init__.py
Log Message:
-----------
Prevent optional test parameters in conditionals
Commit: 6fa7f1e1edda25ec36f2373148af223493924803
https://github.com/galaxyproject/galaxy/commit/6fa7f1e1edda25ec36f2373148af…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-02-01 (Mon, 01 Feb 2016)
Changed paths:
M lib/galaxy/dependencies/conda-environment.txt
M lib/galaxy/dependencies/pinned-hashed-requirements.txt
M lib/galaxy/dependencies/pinned-requirements.txt
M lib/galaxy/dependencies/requirements.txt
Log Message:
-----------
Bump pysam to new 0.8.4+gx1.
Commit: 508ebea63f2376b5a3b452148e4a6d3c18366b3b
https://github.com/galaxyproject/galaxy/commit/508ebea63f2376b5a3b452148e4a…
Author: Aysam Guerler <aysam.guerler(a)gmail.com>
Date: 2016-02-01 (Mon, 01 Feb 2016)
Changed paths:
M lib/galaxy/tools/__init__.py
Log Message:
-----------
Merge pull request #8 from jmchilton/fix_optional_001
Warn on optional select test parameter.
Commit: afc5f2a45399c474d86f1530a62afe280a0eb3be
https://github.com/galaxyproject/galaxy/commit/afc5f2a45399c474d86f1530a62a…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-02-02 (Tue, 02 Feb 2016)
Changed paths:
M lib/galaxy/config.py
Log Message:
-----------
Fix: Use dependency resolvers if any config exists.
This way resolvers like the Module resolver work even if tool_dependency_dir is not set.
Commit: 50ea4694af82ac33eaac1ddc9ca8aee1e71e1f00
https://github.com/galaxyproject/galaxy/commit/50ea4694af82ac33eaac1ddc9ca8…
Author: Mark Einon <mark.einon(a)gmail.com>
Date: 2016-02-02 (Tue, 02 Feb 2016)
Changed paths:
M scripts/binary_compatibility.py
Log Message:
-----------
Change python print() format to be backward compatible with older versions
In python versions prior to 3.1, the print("{}", .format(x)) form throws
an error, use the more compatible print("{0}", .format(x)) form
instead.
Commit: 85eccba79151a545af1e7aa07f24cece9c5398bd
https://github.com/galaxyproject/galaxy/commit/85eccba79151a545af1e7aa07f24…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-02-02 (Tue, 02 Feb 2016)
Changed paths:
M templates/user/info.mako
M templates/user/username.mako
Log Message:
-----------
Public name is mandatory not optional, update help text.
Commit: ba9ad97c40bd994e0dc51888ef235cf3b434168a
https://github.com/galaxyproject/galaxy/commit/ba9ad97c40bd994e0dc51888ef23…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-02-02 (Tue, 02 Feb 2016)
Changed paths:
M test-data/3.bam
Log Message:
-----------
Fix 3.bam @PG header to use : instead of = as a key:value separator. See commentary in https://github.com/galaxyproject/galaxy/pull/1638 for more details.
Commit: e4e48941a6174a148cde06ef2218ef6480568716
https://github.com/galaxyproject/galaxy/commit/e4e48941a6174a148cde06ef2218…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-02-02 (Tue, 02 Feb 2016)
Changed paths:
M scripts/binary_compatibility.py
Log Message:
-----------
Merge pull request #1651 from jmchilton/backport_print_fix
[16.01] Backport print fix.
Commit: 916ddb575f40c445a47cf91a58aad00bf9360ae8
https://github.com/galaxyproject/galaxy/commit/916ddb575f40c445a47cf91a58aa…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2016-02-02 (Tue, 02 Feb 2016)
Changed paths:
M lib/galaxy/config.py
Log Message:
-----------
Merge pull request #1648 from jmchilton/dependencies_conf
[16.01] Fix use_tool_dependencies for non-default dependency_resolver_conf files.
Commit: 6635e91170b310beafe629bc2956607234c41cb0
https://github.com/galaxyproject/galaxy/commit/6635e91170b310beafe629bc2956…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-02-02 (Tue, 02 Feb 2016)
Changed paths:
M scripts/common_startup.sh
Log Message:
-----------
Bump gx pip version to fix OSX platform issues.
Commit: 39eb262219beca9ec6b849b49c0430d834cfd2ae
https://github.com/galaxyproject/galaxy/commit/39eb262219beca9ec6b849b49c04…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-02-02 (Tue, 02 Feb 2016)
Changed paths:
M test-data/3.bam
Log Message:
-----------
More fixes to 3.bam to make it valid stripped out secondary HD header and duplicated sequences chr10-16
Commit: 66f20e7df91074e07cbade57b20deb68cb840a55
https://github.com/galaxyproject/galaxy/commit/66f20e7df91074e07cbade57b20d…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-02-02 (Tue, 02 Feb 2016)
Changed paths:
M lib/galaxy/datatypes/binary.py
Log Message:
-----------
Fix method signature of bam.set_meta to include a positional argument which is now required.
Commit: 05e68addbe846a8f39cd1192285f936df166bf35
https://github.com/galaxyproject/galaxy/commit/05e68addbe846a8f39cd1192285f…
Author: Nicola Soranzo <nsoranzo(a)tiscali.it>
Date: 2016-02-02 (Tue, 02 Feb 2016)
Changed paths:
M scripts/common_startup.sh
Log Message:
-----------
Merge pull request #1652 from dannon/pip_bump
[16.01] Bump gx pip version to fix OSX platform issues.
Commit: 39aff8457201fc383d49cc8e90798795b7923189
https://github.com/galaxyproject/galaxy/commit/39aff8457201fc383d49cc8e9079…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-02-02 (Tue, 02 Feb 2016)
Changed paths:
M templates/user/info.mako
M templates/user/username.mako
Log Message:
-----------
Merge pull request #1655 from jmchilton/public-name-fixes
[16.01] Public name is mandatory not optional, update help text.
Commit: d6325c5039f28062a2cf49d00c091d83a92865c3
https://github.com/galaxyproject/galaxy/commit/d6325c5039f28062a2cf49d00c09…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-02-02 (Tue, 02 Feb 2016)
Changed paths:
M lib/galaxy/visualization/data_providers/genome.py
Log Message:
-----------
Update data providers pysam.AlignmentFile usage
Commit: a95827751f463f35c67e76f84127f850972244c5
https://github.com/galaxyproject/galaxy/commit/a95827751f463f35c67e76f84127…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-02-02 (Tue, 02 Feb 2016)
Changed paths:
M lib/galaxy/tools/__init__.py
Log Message:
-----------
Merge pull request #1637 from guerler/fix_optional_001
[16.01] Prevent optional test parameters in conditionals
Commit: 45f523f9229f6d943e3a65042b8cad0276a0a7d7
https://github.com/galaxyproject/galaxy/commit/45f523f9229f6d943e3a65042b8c…
Author: Bjoern Gruening <bjoern.gruening(a)gmail.com>
Date: 2016-02-03 (Wed, 03 Feb 2016)
Changed paths:
M client/galaxy/scripts/layout/page.js
M static/maps/layout/page.js.map
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/layout/page.js
Log Message:
-----------
fix show_welcome_with_login = True
Commit: b5d1c7721ee2f8ad1095e52d4e710b998f92945d
https://github.com/galaxyproject/galaxy/commit/b5d1c7721ee2f8ad1095e52d4e71…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-02-03 (Wed, 03 Feb 2016)
Changed paths:
M client/galaxy/scripts/layout/page.js
M static/maps/layout/page.js.map
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/layout/page.js
Log Message:
-----------
Merge pull request #1664 from bgruening/release_16.01
fix `show_welcome_with_login = True`
Commit: bf989f6051303658c6bc537fc1e00c877c55c6e1
https://github.com/galaxyproject/galaxy/commit/bf989f6051303658c6bc537fc1e0…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-02-03 (Wed, 03 Feb 2016)
Changed paths:
M lib/galaxy/datatypes/text.py
Log Message:
-----------
correct typo in text datatype
Commit: cd3f3b330db34e294e78374e8e8b32300c66f36e
https://github.com/galaxyproject/galaxy/commit/cd3f3b330db34e294e78374e8e8b…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-03 (Wed, 03 Feb 2016)
Changed paths:
M lib/galaxy/datatypes/binary.py
M lib/galaxy/dependencies/conda-environment.txt
M lib/galaxy/dependencies/pinned-hashed-requirements.txt
M lib/galaxy/dependencies/pinned-requirements.txt
M lib/galaxy/dependencies/requirements.txt
M lib/galaxy/visualization/data_providers/genome.py
M test-data/3.bam
Log Message:
-----------
Merge pull request #1638 from dannon/pysam_84_update
Pysam 84 update [16.01]
Commit: 04af1ae1c609c0b73afabaf2aeb58110043847e6
https://github.com/galaxyproject/galaxy/commit/04af1ae1c609c0b73afabaf2aeb5…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-03 (Wed, 03 Feb 2016)
Changed paths:
M scripts/common_startup.sh
Log Message:
-----------
Always use the python hashlib for verifying the virtualenv download in
common_startup.sh rather than attempting to use sha256sum. Older
versions of coreutils (such as in RHEL 6) did not include the --strict
argument to sha256sum.
Commit: 2641f0af9ac84f91ea0cf3e849b6e8348da8909d
https://github.com/galaxyproject/galaxy/commit/2641f0af9ac84f91ea0cf3e849b6…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-02-03 (Wed, 03 Feb 2016)
Changed paths:
M scripts/common_startup.sh
Log Message:
-----------
Merge pull request #1668 from natefoo/venv-checksum
[16.01] Always use the python hashlib method for verifying the virtualenv download
Commit: bb95a65b2201509ce950d6c3c578f8d417f83cc4
https://github.com/galaxyproject/galaxy/commit/bb95a65b2201509ce950d6c3c578…
Author: Aysam Guerler <aysam.guerler(a)gmail.com>
Date: 2016-02-03 (Wed, 03 Feb 2016)
Changed paths:
M lib/galaxy/datatypes/text.py
Log Message:
-----------
Merge pull request #1666 from martenson/correct-datatype-typo
[16.01] correct typo in text datatype
Commit: 9551fc07b475b4095b7d002315cbc05bdf0925b5
https://github.com/galaxyproject/galaxy/commit/9551fc07b475b4095b7d002315cb…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-03 (Wed, 03 Feb 2016)
Changed paths:
M scripts/binary_compatibility.py
Log Message:
-----------
Add the `scientific` platform (Scientific Linux) as binary compatible
with RHEL.
Commit: 9ead68aeca6722f62d3d6fabae6484aa00246615
https://github.com/galaxyproject/galaxy/commit/9ead68aeca6722f62d3d6fabae64…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-02-03 (Wed, 03 Feb 2016)
Changed paths:
M scripts/binary_compatibility.py
Log Message:
-----------
Merge pull request #1669 from natefoo/scientificlinux-tag-compat
[16.01] Add the `scientific` platform (Scientific Linux) as binary compatible with RHEL
Commit: 4b24d95f6f95124f357b72434a29113fa9bacf73
https://github.com/galaxyproject/galaxy/commit/4b24d95f6f95124f357b72434a29…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-04 (Thu, 04 Feb 2016)
Changed paths:
M doc/source/admin/framework_dependencies.rst
Log Message:
-----------
Improve documentation about binary-compatibility.cfg. Resolves #1672.
Commit: ada39dea6ab68be543f53feb7a30e97167d96013
https://github.com/galaxyproject/galaxy/commit/ada39dea6ab68be543f53feb7a30…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-02-04 (Thu, 04 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/api/lda_datasets.py
Log Message:
-----------
handle correctly application/json pased in POST
Commit: 530501c682be85b595bd8115bc2fc0ebc53f57a0
https://github.com/galaxyproject/galaxy/commit/530501c682be85b595bd8115bc2f…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-02-04 (Thu, 04 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/api/libraries.py
Log Message:
-----------
fix setting library permissions to accept JSON correctly
Commit: 5dd839960e1ca5170b528c4c88ad8965eebde08b
https://github.com/galaxyproject/galaxy/commit/5dd839960e1ca5170b528c4c88ad…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-02-04 (Thu, 04 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/api/libraries.py
Log Message:
-----------
unify api for library creation; support POST with url params
Commit: edd8b222acac34cd2e35e768ab1cbd888b2fc824
https://github.com/galaxyproject/galaxy/commit/edd8b222acac34cd2e35e768ab1c…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-02-04 (Thu, 04 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/api/libraries.py
Log Message:
-----------
catch value errors from id decoding
Commit: 0398aafb1cf0aa0863d0867d20dd79a09bc2fb85
https://github.com/galaxyproject/galaxy/commit/0398aafb1cf0aa0863d0867d20dd…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-02-04 (Thu, 04 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/api/libraries.py
Log Message:
-----------
fix updating library API to not require payload
and to properly handle optional params
Commit: 4b51be57d114d840112970baccb979ec1876663b
https://github.com/galaxyproject/galaxy/commit/4b51be57d114d840112970baccb9…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-02-04 (Thu, 04 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/api/libraries.py
Log Message:
-----------
allow specifying DELETE params in JSON
Commit: c288b43627d3da925c5fe4b2fd0ebd5a7bc752b2
https://github.com/galaxyproject/galaxy/commit/c288b43627d3da925c5fe4b2fd0e…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-02-04 (Thu, 04 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/api/folders.py
Log Message:
-----------
allow creating folders with JSON payload
Commit: 7867f3e0835a2cbd99658ad25debd9be278300f2
https://github.com/galaxyproject/galaxy/commit/7867f3e0835a2cbd99658ad25deb…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-02-04 (Thu, 04 Feb 2016)
Changed paths:
M client/galaxy/scripts/mvc/library/library-folder-view.js
M lib/galaxy/webapps/galaxy/api/folders.py
M static/maps/mvc/library/library-folder-view.js.map
M static/scripts/mvc/library/library-folder-view.js
Log Message:
-----------
accept json as input for setting permissions;
fix inconsistency by leveraging role_manager
Commit: a4c2098da010d79a70a9425e8ccb6c1e69807442
https://github.com/galaxyproject/galaxy/commit/a4c2098da010d79a70a9425e8ccb…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-02-04 (Thu, 04 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/api/folders.py
Log Message:
-----------
allow PATCHing with payload in urlparams
Commit: b46636a53f579fc6ffa63fbca888196bb0ff99f6
https://github.com/galaxyproject/galaxy/commit/b46636a53f579fc6ffa63fbca888…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-02-04 (Thu, 04 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/api/libraries.py
Log Message:
-----------
remove deletion of the payload dict item
it is not necessary and the key does not have to exist
Commit: 170c83e6c283e97b1e399bc122ee94ddb8cb34b4
https://github.com/galaxyproject/galaxy/commit/170c83e6c283e97b1e399bc122ee…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-02-04 (Thu, 04 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/api/folders.py
M lib/galaxy/webapps/galaxy/api/libraries.py
Log Message:
-----------
fix unused imports and unused vars
Commit: 9c7c75b7661989b5fe6f2e4819b04ae6e7b901a1
https://github.com/galaxyproject/galaxy/commit/9c7c75b7661989b5fe6f2e4819b0…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-05 (Fri, 05 Feb 2016)
Changed paths:
M doc/source/admin/framework_dependencies.rst
Log Message:
-----------
Typo
Commit: c693b69b344461bd428a0ef314b3ec985e1a60d9
https://github.com/galaxyproject/galaxy/commit/c693b69b344461bd428a0ef314b3…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-02-05 (Fri, 05 Feb 2016)
Changed paths:
M doc/source/admin/framework_dependencies.rst
Log Message:
-----------
Merge pull request #1677 from natefoo/admin-docs
[16.01] Improve documentation about binary-compatibility.cfg
Commit: 134d792c1fcfba5d09e2937074c3263792bea991
https://github.com/galaxyproject/galaxy/commit/134d792c1fcfba5d09e2937074c3…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-02-05 (Fri, 05 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/api/libraries.py
Log Message:
-----------
delete the 'payload' if it is in kwd so it is not supplied twice
Commit: e7b6b4b13bd93a8520942c94d0ed28d110af261b
https://github.com/galaxyproject/galaxy/commit/e7b6b4b13bd93a8520942c94d0ed…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-02-05 (Fri, 05 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/api/libraries.py
Log Message:
-----------
Revert "delete the 'payload' if it is in kwd so it is not supplied twice"
This reverts commit 134d792c1fcfba5d09e2937074c3263792bea991.
Commit: 5301269fbb54753e75969ecd446b8cb74c6093b6
https://github.com/galaxyproject/galaxy/commit/5301269fbb54753e75969ecd446b…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-02-05 (Fri, 05 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/api/folder_contents.py
M lib/galaxy/webapps/galaxy/api/folders.py
M lib/galaxy/webapps/galaxy/api/lda_datasets.py
M lib/galaxy/webapps/galaxy/api/libraries.py
Log Message:
-----------
update docs of the data libraries API
Commit: 5e77af198a9b81646dbe59a02b991d496b334967
https://github.com/galaxyproject/galaxy/commit/5e77af198a9b81646dbe59a02b99…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-08 (Mon, 08 Feb 2016)
Changed paths:
M client/galaxy/style/less/base.less
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/style/blue/base.css
Log Message:
-----------
Update help text rST note/warning/error box styling for change in div
class from toolHelpBody to ui-form-help.
Commit: ef6bd90f20394f6fb74b1bdedbd0f94ecb752018
https://github.com/galaxyproject/galaxy/commit/ef6bd90f20394f6fb74b1bdedbd0…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-02-08 (Mon, 08 Feb 2016)
Changed paths:
M client/galaxy/scripts/mvc/library/library-folder-view.js
M lib/galaxy/webapps/galaxy/api/folder_contents.py
M lib/galaxy/webapps/galaxy/api/folders.py
M lib/galaxy/webapps/galaxy/api/lda_datasets.py
M lib/galaxy/webapps/galaxy/api/libraries.py
M static/maps/mvc/library/library-folder-view.js.map
M static/scripts/mvc/library/library-folder-view.js
Log Message:
-----------
Merge pull request #1641 from martenson/libraries-load-handle-payload
[16.01] libraries: handle correctly application/json pased in POST
Commit: 054c04f490fe5e641c1dec8c4f8af53cf02daffd
https://github.com/galaxyproject/galaxy/commit/054c04f490fe5e641c1dec8c4f8a…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-02-08 (Mon, 08 Feb 2016)
Changed paths:
M client/galaxy/style/less/base.less
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/style/blue/base.css
Log Message:
-----------
Merge pull request #1695 from natefoo/help-message-css
[16.01] Update help text rST note/warning/error box styling for change in div class from toolHelpBody to ui-form-help.
Commit: bf4e736c3ca8e129ff8c75f8261c08f303c76080
https://github.com/galaxyproject/galaxy/commit/bf4e736c3ca8e129ff8c75f8261c…
Author: pavanvidem <videmp(a)informatik.uni-freiburg.de>
Date: 2016-02-09 (Tue, 09 Feb 2016)
Changed paths:
M tools/phenotype_association/linkToDavid.xml
Log Message:
-----------
Update david identifier types
David identifier types seem to be changed. Some of them are no more available on david web server.
Commit: 776180ab80b352a60713fbf6576adbfc4934ed85
https://github.com/galaxyproject/galaxy/commit/776180ab80b352a60713fbf6576a…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-02-09 (Tue, 09 Feb 2016)
Changed paths:
M client/galaxy/scripts/mvc/library/library-foldertoolbar-view.js
M lib/galaxy/webapps/galaxy/api/folder_contents.py
M static/maps/mvc/library/library-foldertoolbar-view.js.map
M static/scripts/mvc/library/library-foldertoolbar-view.js
Log Message:
-----------
show all available information for current library and the opened folder
Commit: 65d9ec9cab2b6e46fa7a067948bba69e3255c1ff
https://github.com/galaxyproject/galaxy/commit/65d9ec9cab2b6e46fa7a067948bb…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-02-09 (Tue, 09 Feb 2016)
Changed paths:
M client/galaxy/scripts/mvc/library/library-foldertoolbar-view.js
M lib/galaxy/webapps/galaxy/api/folder_contents.py
M static/maps/mvc/library/library-foldertoolbar-view.js.map
M static/scripts/mvc/library/library-foldertoolbar-view.js
Log Message:
-----------
Merge pull request #1705 from martenson/fix-location-info
[16.01] libraries - fix location info
Commit: e0ee1203c6fc176ffb56ecd717540cc6b2f0b0e7
https://github.com/galaxyproject/galaxy/commit/e0ee1203c6fc176ffb56ecd71754…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-02-12 (Fri, 12 Feb 2016)
Changed paths:
M lib/galaxy/managers/workflows.py
M lib/galaxy/model/__init__.py
Log Message:
-----------
Fix problem with legacy workflows and duplicate output labels.
Fixes #1704 - many thanks to @tzk and @mvdbeek.
Commit: ff29b263630614b96c617eb9468afcec9d04d72f
https://github.com/galaxyproject/galaxy/commit/ff29b263630614b96c617eb9468a…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-02-12 (Fri, 12 Feb 2016)
Changed paths:
M lib/galaxy/managers/workflows.py
M lib/galaxy/model/__init__.py
Log Message:
-----------
Merge pull request #1718 from jmchilton/workflow_fixes
[16.01] Fix problem with legacy workflows and duplicate output labels.
Commit: 75a3797d0fa03fc80240326e6b7fdae40ee5d658
https://github.com/galaxyproject/galaxy/commit/75a3797d0fa03fc80240326e6b7f…
Author: Marius van den Beek <m.vandenbeek(a)gmail.com>
Date: 2016-02-15 (Mon, 15 Feb 2016)
Changed paths:
M lib/galaxy/managers/workflows.py
Log Message:
-----------
Also fix legacy export.
Commit: 00b739fc1451d7a529913ab626358bd968e75ee3
https://github.com/galaxyproject/galaxy/commit/00b739fc1451d7a529913ab62635…
Author: Aysam Guerler <aysam.guerler(a)gmail.com>
Date: 2016-02-15 (Mon, 15 Feb 2016)
Changed paths:
M lib/galaxy/managers/workflows.py
Log Message:
-----------
Merge pull request #1733 from mvdbeek/legacy_export
[16.01] Also check for unique outputs on legacy workflow export
Commit: 4a566b6db8ac69bf5f5619e9a9aa2640ce3bd9af
https://github.com/galaxyproject/galaxy/commit/4a566b6db8ac69bf5f5619e9a9aa…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-02-16 (Tue, 16 Feb 2016)
Changed paths:
M lib/galaxy/workflow/run.py
Log Message:
-----------
Improved debug message in workflow scheduling.
Commit: 39ec09df48060e4e384d7af2669a6fe074b6d71a
https://github.com/galaxyproject/galaxy/commit/39ec09df48060e4e384d7af2669a…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-02-16 (Tue, 16 Feb 2016)
Changed paths:
M lib/galaxy/workflow/run.py
Log Message:
-----------
Merge pull request #1741 from jmchilton/workflow_schedule_fixes
[16.01] Improved debug message in workflow scheduling.
Commit: 37b98b773ea378bdd4a7845d60f589f7454f2291
https://github.com/galaxyproject/galaxy/commit/37b98b773ea378bdd4a7845d60f5…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-02-17 (Wed, 17 Feb 2016)
Changed paths:
M lib/galaxy/config.py
Log Message:
-----------
Load whitelist regardless of whether the setting is explicit in config.
This is a sensible enough default, and requiring the option to be set in
galaxy.ini is cumbersome and unnecessary since it's admin-only
functionality.
Commit: aabc916ed20ac7f25174ce4d552b735253697081
https://github.com/galaxyproject/galaxy/commit/aabc916ed20ac7f25174ce4d552b…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2016-02-17 (Wed, 17 Feb 2016)
Changed paths:
M lib/galaxy/config.py
Log Message:
-----------
Merge pull request #1749 from dannon/whitelist_loading
Load whitelist regardless of whether the setting is explicit in config.
Commit: 84de6b4ed31906756c3c219eda3f4462773d0a21
https://github.com/galaxyproject/galaxy/commit/84de6b4ed31906756c3c219eda3f…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2016-02-17 (Wed, 17 Feb 2016)
Changed paths:
M client/galaxy/scripts/mvc/ui/popup-menu.js
M static/maps/mvc/ui/popup-menu.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/ui/popup-menu.js
M templates/webapps/galaxy/history/display.mako
Log Message:
-----------
Fix target or window.location when importing histories from display.mako (shared with me->view) to allow for iframes; silence popup-menu.js when menu is closed due to location change
Commit: 80a858a3afd970ca086992744b46725eb829b94e
https://github.com/galaxyproject/galaxy/commit/80a858a3afd970ca086992744b46…
Author: Martin Cech <cech.marten(a)gmail.com>
Date: 2016-02-17 (Wed, 17 Feb 2016)
Changed paths:
M client/galaxy/scripts/mvc/ui/popup-menu.js
M static/maps/mvc/ui/popup-menu.js.map
M static/scripts/bundled/analysis.bundled.js
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/ui/popup-menu.js
M templates/webapps/galaxy/history/display.mako
Log Message:
-----------
Merge pull request #1753 from carlfeberhard/release_16.01
[16.01] Fix target or window.location when importing histories from display.m…
Commit: 4c0993cc420bc5e6a1d315677962d41803a41cd3
https://github.com/galaxyproject/galaxy/commit/4c0993cc420bc5e6a1d315677962…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-02-18 (Thu, 18 Feb 2016)
Changed paths:
M lib/galaxy/tools/toolbox/base.py
Log Message:
-----------
Fix updating in-memory tools for tool shed installs into sections.
Commit: 587d450402f8b618e4922a04aa87fc5625edce82
https://github.com/galaxyproject/galaxy/commit/587d450402f8b618e4922a04aa87…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2016-02-18 (Thu, 18 Feb 2016)
Changed paths:
M lib/tool_shed/util/encoding_util.py
Log Message:
-----------
Fix installation of Tool Shed repositories containing non-ASCII characters in the description. Fix #1702.
Commit: 476734d8651009e38505408be2e5f7331800680b
https://github.com/galaxyproject/galaxy/commit/476734d8651009e38505408be2e5…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-02-18 (Thu, 18 Feb 2016)
Changed paths:
M lib/tool_shed/util/encoding_util.py
Log Message:
-----------
Merge pull request #1759 from nsoranzo/release_15.10_fix_for_1702
[15.10] Fix installation of Tool Shed repositories containing non-ASCII characters in the description.
Commit: 3f34131ff506836d400f8d55b696d8044546b162
https://github.com/galaxyproject/galaxy/commit/3f34131ff506836d400f8d55b696…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2016-02-18 (Thu, 18 Feb 2016)
Changed paths:
M lib/tool_shed/util/encoding_util.py
Log Message:
-----------
Merge branch 'release_15.10' into release_16.01
Conflicts:
lib/galaxy/version.py
Commit: b4c823f2cd47bd0f75351c820651abfefa1a8472
https://github.com/galaxyproject/galaxy/commit/b4c823f2cd47bd0f75351c820651…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2016-02-18 (Thu, 18 Feb 2016)
Changed paths:
M lib/galaxy/tools/toolbox/base.py
Log Message:
-----------
Merge pull request #1758 from jmchilton/ts_section_fix
[16.01] Fix updating in-memory tools for tool shed installs into sections.
Commit: ef9362971920c6561015376d3f604bf6234f2547
https://github.com/galaxyproject/galaxy/commit/ef9362971920c6561015376d3f60…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2016-02-18 (Thu, 18 Feb 2016)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Fix pretty_print_time_interval for MySQL. Fix #1619.
Commit: 6c83fbe24dd0dea35967021c061e975225aeb02b
https://github.com/galaxyproject/galaxy/commit/6c83fbe24dd0dea35967021c061e…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2016-02-18 (Thu, 18 Feb 2016)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Merge pull request #1761 from nsoranzo/release_15.10_fix_for_1619
[15.10] Fix pretty_print_time_interval for MySQL.
Commit: b5e91d23779cc6db491b7d7b1701b25cb10da6fb
https://github.com/galaxyproject/galaxy/commit/b5e91d23779cc6db491b7d7b1701…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2016-02-19 (Fri, 19 Feb 2016)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Merge branch 'release_15.10' into release_16.01
Conflicts:
lib/galaxy/util/__init__.py
Commit: a47a4f40b47302c43dea33f8b040f41570b0587c
https://github.com/galaxyproject/galaxy/commit/a47a4f40b47302c43dea33f8b040…
Author: Marius van den Beek <m.vandenbeek(a)gmail.com>
Date: 2016-02-22 (Mon, 22 Feb 2016)
Changed paths:
M lib/galaxy/web/base/interactive_environments.py
Log Message:
-----------
Remove len(stderr), breaks on recent docker versions
Commit: f2a27acff8fd5d199eda841fd575305c3644c439
https://github.com/galaxyproject/galaxy/commit/f2a27acff8fd5d199eda841fd575…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-02-22 (Mon, 22 Feb 2016)
Changed paths:
M doc/source/releases/16.01_announce.rst
Log Message:
-----------
Drop Python 2.6 with 16.04.
xref #1596
Commit: dbab6f5b979f19c33c3cd1aeb5c459dcc5612eec
https://github.com/galaxyproject/galaxy/commit/dbab6f5b979f19c33c3cd1aeb5c4…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-02-22 (Mon, 22 Feb 2016)
Changed paths:
M client/galaxy/scripts/mvc/workflow/workflow-terminals.js
M static/maps/mvc/workflow/workflow-terminals.js.map
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/workflow/workflow-terminals.js
M test/qunit/tests/workflow_editor_tests.js
Log Message:
-----------
Workaround for #1739 - fixing up subworkflow inut connections.
Do the same relaxed thing we do for inputs of type 'input' as we do for outputs of this type. Someday we should have better tracking, but such a change is probably not wise for a release branch.
Commit: 5ce771b70e44f28fde2e14bf963f97fed36bc2ae
https://github.com/galaxyproject/galaxy/commit/5ce771b70e44f28fde2e14bf963f…
Author: Nicola Soranzo <nicola.soranzo(a)tgac.ac.uk>
Date: 2016-02-23 (Tue, 23 Feb 2016)
Changed paths:
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/step_handler.py
Log Message:
-----------
Strip URL of download_file and download_by_url install actions.
Commit: 5b720b4a02408a0601e7ecaf4fb2374c8c5753a7
https://github.com/galaxyproject/galaxy/commit/5b720b4a02408a0601e7ecaf4fb2…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2016-02-23 (Tue, 23 Feb 2016)
Changed paths:
M client/galaxy/scripts/mvc/workflow/workflow-terminals.js
M static/maps/mvc/workflow/workflow-terminals.js.map
M static/scripts/bundled/analysis.bundled.js.map
M static/scripts/bundled/libs.bundled.js
M static/scripts/bundled/libs.bundled.js.map
M static/scripts/mvc/workflow/workflow-terminals.js
M test/qunit/tests/workflow_editor_tests.js
Log Message:
-----------
Merge pull request #1774 from jmchilton/wf_fixes
[16.01] Workaround for #1739 - fixing up subworkflow input connections.
Commit: 4c815a7d0589a00df8c8fffba730a79030ad7791
https://github.com/galaxyproject/galaxy/commit/4c815a7d0589a00df8c8fffba730…
Author: Nicola Soranzo <nsoranzo(a)tiscali.it>
Date: 2016-02-23 (Tue, 23 Feb 2016)
Changed paths:
M lib/tool_shed/galaxy_install/tool_dependencies/recipe/step_handler.py
Log Message:
-----------
Merge pull request #1778 from nsoranzo/release_16.01_fix_download_file
[16.01] Strip URL of download_file and download_by_url install actions.
Commit: b4020934793829f3735fa696de1fa3237391d945
https://github.com/galaxyproject/galaxy/commit/b4020934793829f3735fa696de1f…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-02-23 (Tue, 23 Feb 2016)
Changed paths:
M lib/galaxy/workflow/modules.py
M test/functional/tools/output_format.xml
Log Message:
-----------
format_source in workflow editor is too restrictive.
Case made well by @erasche on #1746, fixes #1746.
To resolve this more correctly (and many other potential type problems) - the workflow editor should be significantly reworked to track the datatype (or a range of datatypes) on each terminal (the way it does for collection mapping information). The change would be a weeks worth of development effort and inappropriate to apply to a release branch.
Commit: 9acbfdf3c3444ca0cb0cf87f80c57d00765673d9
https://github.com/galaxyproject/galaxy/commit/9acbfdf3c3444ca0cb0cf87f80c5…
Author: carlfeberhard <carlfeberhard(a)gmail.com>
Date: 2016-02-23 (Tue, 23 Feb 2016)
Changed paths:
M client/galaxy/style/less/base.less
M client/galaxy/style/less/ui/icon-btn.less
M static/style/blue/base.css
Log Message:
-----------
Fix chrome-only intermittent rendering error of font awesome icons that have their sizes changed by overriding 4.2 font-size inheritance rule from core.less
Commit: 3621d6f2212566b8a172424177b8eafc92af7fca
https://github.com/galaxyproject/galaxy/commit/3621d6f2212566b8a172424177b8…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2016-02-23 (Tue, 23 Feb 2016)
Changed paths:
M client/galaxy/style/less/base.less
M client/galaxy/style/less/ui/icon-btn.less
M static/style/blue/base.css
Log Message:
-----------
Merge pull request #1784 from carlfeberhard/fix.fa
[16.01] Fix chrome-only intermittent rendering error of font awesome icons th…
Commit: 805b5906b2f43947af36814fe67b5914acc35a08
https://github.com/galaxyproject/galaxy/commit/805b5906b2f43947af36814fe67b…
Author: Dannon Baker <dannon.baker(a)gmail.com>
Date: 2016-02-23 (Tue, 23 Feb 2016)
Changed paths:
M doc/source/releases/16.01_announce.rst
Log Message:
-----------
Merge pull request #1772 from jmchilton/python26_drop
[16.01] Deprecation notice - Python 2.6.
Commit: a5c30c563e878c3b0171bdc992eaea248e2371cf
https://github.com/galaxyproject/galaxy/commit/a5c30c563e878c3b0171bdc992ea…
Author: John Chilton <jmchilton(a)gmail.com>
Date: 2016-02-23 (Tue, 23 Feb 2016)
Changed paths:
M lib/galaxy/web/base/interactive_environments.py
Log Message:
-----------
Merge pull request #1771 from mvdbeek/16.01_fix_ies
[16.01] Remove len(stderr), breaks on recent docker versions
Commit: 6bb43aa4aff83f832997d01fc5663b9d501bc866
https://github.com/galaxyproject/galaxy/commit/6bb43aa4aff83f832997d01fc566…
Author: Daniel Blankenberg <dan.blankenberg(a)gmail.com>
Date: 2016-02-23 (Tue, 23 Feb 2016)
Changed paths:
M lib/galaxy/workflow/modules.py
M test/functional/tools/output_format.xml
Log Message:
-----------
Merge pull request #1786 from jmchilton/format_source_restrictive
[16.01] format_source in workflow editor is too restrictive.
Commit: ca123a4f2674351e01235bab545559b299b99ff9
https://github.com/galaxyproject/galaxy/commit/ca123a4f2674351e01235bab5455…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Add a safe_relpath util function for ensuring a path does not reference an absolute or parent directory
Commit: 3b963226a110b8de8aa11d3c4e053a220bbcba53
https://github.com/galaxyproject/galaxy/commit/3b963226a110b8de8aa11d3c4e05…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/exceptions/__init__.py
M lib/galaxy/exceptions/error_codes.json
M lib/galaxy/tools/imp_exp/__init__.py
M lib/galaxy/tools/imp_exp/unpack_tar_gz_archive.py
Log Message:
-----------
Security fixes for history imports
Commit: 5ab53c3fda3a43236b444a31aa408c9f5cb5c4c4
https://github.com/galaxyproject/galaxy/commit/5ab53c3fda3a43236b444a31aa40…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Add a safe_relpath util function for ensuring a path does not reference an absolute or parent directory
Commit: 88277c9723c558e2b2003f1b81c7f2d16143fcc6
https://github.com/galaxyproject/galaxy/commit/88277c9723c558e2b2003f1b81c7…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/exceptions/__init__.py
M lib/galaxy/exceptions/error_codes.json
M lib/galaxy/tools/imp_exp/__init__.py
M lib/galaxy/tools/imp_exp/unpack_tar_gz_archive.py
Log Message:
-----------
Security fixes for history imports
Commit: d650055ca824d5cf8ab1ede389e9b3060c1f4094
https://github.com/galaxyproject/galaxy/commit/d650055ca824d5cf8ab1ede389e9…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/objectstore/__init__.py
M lib/galaxy/objectstore/rods.py
M lib/galaxy/objectstore/s3.py
Log Message:
-----------
Security fixes for object store paths
Commit: 32c910ac4021b0e65112d557a7f12d24e158171d
https://github.com/galaxyproject/galaxy/commit/32c910ac4021b0e65112d557a7f1…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/objectstore/__init__.py
M lib/galaxy/objectstore/rods.py
M lib/galaxy/objectstore/s3.py
Log Message:
-----------
Security fixes for object store paths
Commit: 37548ef8edb95d59fddd73283561e8b1a6588c10
https://github.com/galaxyproject/galaxy/commit/37548ef8edb95d59fddd73283561…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
R templates/admin/requests/select_datasets_to_transfer.mako
M templates/webapps/galaxy/requests/common/common.mako
M templates/webapps/galaxy/requests/common/view_request_history.mako
M templates/webapps/galaxy/requests/common/view_sample_datasets.mako
Log Message:
-----------
Remove sample tracking manual external service transfer due to security concerns
Commit: 78f441b9c7bfd68f7b3ee030f4ffe4a95b5fdc58
https://github.com/galaxyproject/galaxy/commit/78f441b9c7bfd68f7b3ee030f4ff…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
R templates/admin/requests/select_datasets_to_transfer.mako
M templates/webapps/galaxy/requests/common/common.mako
M templates/webapps/galaxy/requests/common/view_request_history.mako
M templates/webapps/galaxy/requests/common/view_sample_datasets.mako
Log Message:
-----------
Remove sample tracking manual external service transfer due to security concerns
Commit: 4f3397fa0ab187a4b5c32e1268265925fc1a8753
https://github.com/galaxyproject/galaxy/commit/4f3397fa0ab187a4b5c32e126826…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/tool_shed/util/shed_util_common.py
M templates/admin/tool_shed_repository/common.mako
M templates/webapps/tool_shed/repository/common.mako
Log Message:
-----------
Security fixes for tool shed repository browsing
Commit: 8468871ee481598a84888b5329139590ec75e98d
https://github.com/galaxyproject/galaxy/commit/8468871ee481598a84888b532913…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Add a safe_relpath util function for ensuring a path does not reference an absolute or parent directory
Commit: cee85bae67377d3fad42bec5b4ebb022aaf7b2c7
https://github.com/galaxyproject/galaxy/commit/cee85bae67377d3fad42bec5b4eb…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/tool_shed/util/shed_util_common.py
M templates/admin/tool_shed_repository/common.mako
M templates/webapps/tool_shed/repository/common.mako
Log Message:
-----------
Security fixes for tool shed repository browsing
Commit: 4845a39071ab4e2652e564efdf7647a942563603
https://github.com/galaxyproject/galaxy/commit/4845a39071ab4e2652e564efdf76…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/tool_shed/framework/middleware/hg.py
M lib/tool_shed/capsule/capsule_manager.py
M lib/tool_shed/util/commit_util.py
M lib/tool_shed/util/repository_content_util.py
Log Message:
-----------
Security fixes for tool shed hg push and capsule/tarball uploads
Commit: ef4a9f6e2114e69f6ea3167e99a857f2ea4d28af
https://github.com/galaxyproject/galaxy/commit/ef4a9f6e2114e69f6ea3167e99a8…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/exceptions/__init__.py
M lib/galaxy/exceptions/error_codes.json
M lib/galaxy/tools/imp_exp/__init__.py
M lib/galaxy/tools/imp_exp/unpack_tar_gz_archive.py
Log Message:
-----------
Security fixes for history imports
Commit: 61cd045ffa947a69abacddea459f725ba569584a
https://github.com/galaxyproject/galaxy/commit/61cd045ffa947a69abacddea459f…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_14.10' into release_15.01
Commit: 2a8089749caab12c087064c840708fb05b0104cd
https://github.com/galaxyproject/galaxy/commit/2a8089749caab12c087064c84070…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Add a safe_relpath util function for ensuring a path does not reference an absolute or parent directory
Commit: 6e3b74869a54558fe48d6e1633c5af7197051447
https://github.com/galaxyproject/galaxy/commit/6e3b74869a54558fe48d6e1633c5…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/exceptions/__init__.py
M lib/galaxy/exceptions/error_codes.json
M lib/galaxy/tools/imp_exp/__init__.py
M lib/galaxy/tools/imp_exp/unpack_tar_gz_archive.py
Log Message:
-----------
Security fixes for history imports
Commit: c8963786d53efd2cf3b359b2f9a000e00688285f
https://github.com/galaxyproject/galaxy/commit/c8963786d53efd2cf3b359b2f9a0…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/objectstore/__init__.py
M lib/galaxy/objectstore/rods.py
M lib/galaxy/objectstore/s3.py
Log Message:
-----------
Security fixes for object store paths
Commit: ce88f2f81caff6af7dc730ef9c1fbc2a40922dab
https://github.com/galaxyproject/galaxy/commit/ce88f2f81caff6af7dc730ef9c1f…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/objectstore/__init__.py
M lib/galaxy/objectstore/rods.py
M lib/galaxy/objectstore/s3.py
Log Message:
-----------
Security fixes for object store paths
Commit: d4b94722f992c9309aa2ec5bfa5bce2dacd9b218
https://github.com/galaxyproject/galaxy/commit/d4b94722f992c9309aa2ec5bfa5b…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
R templates/admin/requests/select_datasets_to_transfer.mako
M templates/webapps/galaxy/requests/common/common.mako
M templates/webapps/galaxy/requests/common/view_request_history.mako
M templates/webapps/galaxy/requests/common/view_sample_datasets.mako
Log Message:
-----------
Remove sample tracking manual external service transfer due to security concerns
Commit: fcd8f50448cd1db7b50a58321c8fa391506bf997
https://github.com/galaxyproject/galaxy/commit/fcd8f50448cd1db7b50a58321c8f…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
R templates/admin/requests/select_datasets_to_transfer.mako
M templates/webapps/galaxy/requests/common/common.mako
M templates/webapps/galaxy/requests/common/view_request_history.mako
M templates/webapps/galaxy/requests/common/view_sample_datasets.mako
Log Message:
-----------
Remove sample tracking manual external service transfer due to security concerns
Commit: 626cade512894e54c5b3e5257543f267a1826a71
https://github.com/galaxyproject/galaxy/commit/626cade512894e54c5b3e5257543…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/tool_shed/util/shed_util_common.py
M templates/admin/tool_shed_repository/common.mako
M templates/webapps/tool_shed/repository/common.mako
Log Message:
-----------
Security fixes for tool shed repository browsing
Commit: 91f5fa81fe3c1c4d45b3987b27c187c4cb53f8e8
https://github.com/galaxyproject/galaxy/commit/91f5fa81fe3c1c4d45b3987b27c1…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/tool_shed/util/shed_util_common.py
M templates/admin/tool_shed_repository/common.mako
M templates/webapps/tool_shed/repository/common.mako
Log Message:
-----------
Security fixes for tool shed repository browsing
Commit: 581808aa98a6058a4bdbe13c21271ca4b0d3ef77
https://github.com/galaxyproject/galaxy/commit/581808aa98a6058a4bdbe13c2127…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/tool_shed/framework/middleware/hg.py
M lib/tool_shed/capsule/capsule_manager.py
M lib/tool_shed/util/commit_util.py
M lib/tool_shed/util/repository_content_util.py
Log Message:
-----------
Security fixes for tool shed hg push and capsule/tarball uploads
Commit: 2bda436473b116c7d98c36a8435056745bf832f2
https://github.com/galaxyproject/galaxy/commit/2bda436473b116c7d98c36a84350…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/tool_shed/framework/middleware/hg.py
M lib/tool_shed/capsule/capsule_manager.py
M lib/tool_shed/util/commit_util.py
M lib/tool_shed/util/repository_content_util.py
Log Message:
-----------
Security fixes for tool shed hg push and capsule/tarball uploads
Commit: f8a1aef76c022612a8a28938e1d57412348884ab
https://github.com/galaxyproject/galaxy/commit/f8a1aef76c022612a8a28938e1d5…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_15.01' into release_15.03
Commit: 47a8b6e86733472ad3c0dbe2d5774d69ecba44eb
https://github.com/galaxyproject/galaxy/commit/47a8b6e86733472ad3c0dbe2d577…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Add a safe_relpath util function for ensuring a path does not reference an absolute or parent directory
Commit: 6190f6fa6db26ada3380c9a54b5481d12b3ac9ae
https://github.com/galaxyproject/galaxy/commit/6190f6fa6db26ada3380c9a54b54…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/exceptions/__init__.py
M lib/galaxy/exceptions/error_codes.json
M lib/galaxy/tools/imp_exp/__init__.py
M lib/galaxy/tools/imp_exp/unpack_tar_gz_archive.py
Log Message:
-----------
Security fixes for history imports
Commit: 27d7298ec4788a2e59a5988007fde05e5fc004ce
https://github.com/galaxyproject/galaxy/commit/27d7298ec4788a2e59a5988007fd…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/objectstore/__init__.py
M lib/galaxy/objectstore/rods.py
M lib/galaxy/objectstore/s3.py
Log Message:
-----------
Security fixes for object store paths
Commit: c465489ea1676905ddb4cfb88605c1e869a7019c
https://github.com/galaxyproject/galaxy/commit/c465489ea1676905ddb4cfb88605…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
R templates/admin/requests/select_datasets_to_transfer.mako
M templates/webapps/galaxy/requests/common/common.mako
M templates/webapps/galaxy/requests/common/view_request_history.mako
M templates/webapps/galaxy/requests/common/view_sample_datasets.mako
Log Message:
-----------
Remove sample tracking manual external service transfer due to security concerns
Commit: 18b3126a15ec7fe3873253be0c1344e9f067f0ca
https://github.com/galaxyproject/galaxy/commit/18b3126a15ec7fe3873253be0c13…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/tool_shed/util/shed_util_common.py
M templates/admin/tool_shed_repository/common.mako
M templates/webapps/tool_shed/repository/common.mako
Log Message:
-----------
Security fixes for tool shed repository browsing
Commit: 40a90831ed28b762e90cf2b50abec7e8bef738d6
https://github.com/galaxyproject/galaxy/commit/40a90831ed28b762e90cf2b50abe…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/tool_shed/framework/middleware/hg.py
M lib/tool_shed/capsule/capsule_manager.py
M lib/tool_shed/util/commit_util.py
M lib/tool_shed/util/repository_content_util.py
Log Message:
-----------
Security fixes for tool shed hg push and capsule/tarball uploads
Commit: f65bcb3383ba142d514b38ab5ed03d5f9ecd5f1d
https://github.com/galaxyproject/galaxy/commit/f65bcb3383ba142d514b38ab5ed0…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_15.03' into release_15.05
Commit: ab1a135dd4a422897c74ea87e5210ec5baa27ff7
https://github.com/galaxyproject/galaxy/commit/ab1a135dd4a422897c74ea87e521…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_15.05' into release_15.07
Commit: b3e0315e1e40912366c8103412e64a645e0a93a9
https://github.com/galaxyproject/galaxy/commit/b3e0315e1e40912366c8103412e6…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Add a safe_relpath util function for ensuring a path does not reference an absolute or parent directory
Commit: 8736c7bd77bd3c5cd38225538085c0eb2a40e8f4
https://github.com/galaxyproject/galaxy/commit/8736c7bd77bd3c5cd38225538085…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/exceptions/__init__.py
M lib/galaxy/exceptions/error_codes.json
M lib/galaxy/tools/imp_exp/__init__.py
M lib/galaxy/tools/imp_exp/unpack_tar_gz_archive.py
Log Message:
-----------
Security fixes for history imports
Commit: 23e203c48180b6ab1e4886be81447e33afb853e5
https://github.com/galaxyproject/galaxy/commit/23e203c48180b6ab1e4886be8144…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/objectstore/__init__.py
M lib/galaxy/objectstore/rods.py
M lib/galaxy/objectstore/s3.py
Log Message:
-----------
Security fixes for object store paths
Commit: 64cd02ae385fb509378c78e6e4832768ff4f1e00
https://github.com/galaxyproject/galaxy/commit/64cd02ae385fb509378c78e6e483…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
R templates/admin/requests/select_datasets_to_transfer.mako
M templates/webapps/galaxy/requests/common/common.mako
M templates/webapps/galaxy/requests/common/view_request_history.mako
M templates/webapps/galaxy/requests/common/view_sample_datasets.mako
Log Message:
-----------
Remove sample tracking manual external service transfer due to security concerns
Commit: 2dcbda93b29e4dd975453af8eeb4f171f7db2918
https://github.com/galaxyproject/galaxy/commit/2dcbda93b29e4dd975453af8eeb4…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/tool_shed/util/shed_util_common.py
M templates/admin/tool_shed_repository/common.mako
M templates/webapps/tool_shed/repository/common.mako
Log Message:
-----------
Security fixes for tool shed repository browsing
Commit: b11b8e68500a3d074bf20b08958671d958d42eca
https://github.com/galaxyproject/galaxy/commit/b11b8e68500a3d074bf20b089586…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/tool_shed/framework/middleware/hg.py
M lib/tool_shed/capsule/capsule_manager.py
M lib/tool_shed/util/commit_util.py
M lib/tool_shed/util/repository_content_util.py
Log Message:
-----------
Security fixes for tool shed hg push and capsule/tarball uploads
Commit: f540a16768307995ea49c5d241948537ebbfa540
https://github.com/galaxyproject/galaxy/commit/f540a16768307995ea49c5d24194…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Add a safe_relpath util function for ensuring a path does not reference an absolute or parent directory
Commit: bf1c77d171f079f42d481ad465dbaef3bac8b4d4
https://github.com/galaxyproject/galaxy/commit/bf1c77d171f079f42d481ad465db…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/exceptions/__init__.py
M lib/galaxy/exceptions/error_codes.json
M lib/galaxy/tools/imp_exp/__init__.py
M lib/galaxy/tools/imp_exp/unpack_tar_gz_archive.py
Log Message:
-----------
Security fixes for history imports
Commit: 5da91bddcda3ad3a4942e752d9b4bb3e7872046c
https://github.com/galaxyproject/galaxy/commit/5da91bddcda3ad3a4942e752d9b4…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/objectstore/__init__.py
M lib/galaxy/objectstore/rods.py
M lib/galaxy/objectstore/s3.py
Log Message:
-----------
Security fixes for object store paths
Commit: cd8b96553f673145ee64a86d32960ba42643baed
https://github.com/galaxyproject/galaxy/commit/cd8b96553f673145ee64a86d3296…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
R templates/admin/requests/select_datasets_to_transfer.mako
M templates/webapps/galaxy/requests/common/common.mako
M templates/webapps/galaxy/requests/common/view_request_history.mako
M templates/webapps/galaxy/requests/common/view_sample_datasets.mako
Log Message:
-----------
Remove sample tracking manual external service transfer due to security concerns
Commit: e4a1d5727805168a9fd15aca1cdd21630ada2bbc
https://github.com/galaxyproject/galaxy/commit/e4a1d5727805168a9fd15aca1cdd…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/tool_shed/util/shed_util_common.py
M templates/admin/tool_shed_repository/common.mako
M templates/webapps/tool_shed/repository/common.mako
Log Message:
-----------
Security fixes for tool shed repository browsing
Commit: e845d649c672c51cc2336da0d880c9ff74ea6b5f
https://github.com/galaxyproject/galaxy/commit/e845d649c672c51cc2336da0d880…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/tool_shed/framework/middleware/hg.py
M lib/tool_shed/capsule/capsule_manager.py
M lib/tool_shed/util/commit_util.py
M lib/tool_shed/util/repository_content_util.py
Log Message:
-----------
Security fixes for tool shed hg push and capsule/tarball uploads
Commit: 8c4542b136ef1eab3231ba0df4aab53b91f504af
https://github.com/galaxyproject/galaxy/commit/8c4542b136ef1eab3231ba0df4aa…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_15.07' into release_15.10
Commit: 624e3837bd3d2dffdee7737f4e55d2e66316896a
https://github.com/galaxyproject/galaxy/commit/624e3837bd3d2dffdee7737f4e55…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_15.10' into release_16.01
Commit: c6b010af346d0fed5bba7e5610ea59210be5ceb7
https://github.com/galaxyproject/galaxy/commit/c6b010af346d0fed5bba7e5610ea…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M doc/source/releases/16.01.rst
M doc/source/releases/16.01_announce.rst
Log Message:
-----------
Add security announcement to v16.01 release notes.
Commit: 0122040fad865487e2377cee35360af49e37d0e8
https://github.com/galaxyproject/galaxy/commit/0122040fad865487e2377cee3536…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/version.py
Log Message:
-----------
Update version to 15.03.4
Commit: 3516e94e5cb0e971d8e10de018b72cf22296766e
https://github.com/galaxyproject/galaxy/commit/3516e94e5cb0e971d8e10de018b7…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_15.03' into release_15.05
Commit: c8e9845c5c57714042a75053d954b1c7f0962672
https://github.com/galaxyproject/galaxy/commit/c8e9845c5c57714042a75053d954…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/version.py
Log Message:
-----------
Update version to 15.05.2
Commit: 3d832aff0abe5a4ca48bfc80c84032f388bf7024
https://github.com/galaxyproject/galaxy/commit/3d832aff0abe5a4ca48bfc80c840…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_15.05' into release_15.07
Commit: 30608c177c625f4ce66f1376a66621687fe7711e
https://github.com/galaxyproject/galaxy/commit/30608c177c625f4ce66f1376a666…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/version.py
Log Message:
-----------
Update version to 15.07.1
Commit: 21cc5b2da540eba18445603146407c1779257bba
https://github.com/galaxyproject/galaxy/commit/21cc5b2da540eba1844560314640…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_15.07' into release_15.10
Commit: b5949bcbbfbc613b0ec72ce23e4da448c9316c49
https://github.com/galaxyproject/galaxy/commit/b5949bcbbfbc613b0ec72ce23e4d…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/version.py
Log Message:
-----------
Update version to 15.10.2
Commit: 70329f64ab8b6dcf9e9a6b6762783543b49c36eb
https://github.com/galaxyproject/galaxy/commit/70329f64ab8b6dcf9e9a6b676278…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_15.10' into release_16.01
Commit: 5677c2ee4fce70c9898ea5e6cae125b6147ae36a
https://github.com/galaxyproject/galaxy/commit/5677c2ee4fce70c9898ea5e6cae1…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/version.py
Log Message:
-----------
Update version to 16.01
Compare: https://github.com/galaxyproject/galaxy/compare/6a47d2d3a7f2...5677c2ee4fce
1
0
[galaxyproject/galaxy] b14e35: Add a safe_relpath util function for ensuring a pa...
by GitHub 24 Feb '16
by GitHub 24 Feb '16
24 Feb '16
Branch: refs/heads/dev
Home: https://github.com/galaxyproject/galaxy
Commit: b14e35f48ba86d836ab78dad56bace573b6836f1
https://github.com/galaxyproject/galaxy/commit/b14e35f48ba86d836ab78dad56ba…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Add a safe_relpath util function for ensuring a path does not reference an absolute or parent directory
1
0
24 Feb '16
Branch: refs/heads/master
Home: https://github.com/galaxyproject/usegalaxy-playbook
Commit: 04f7c63fbbba7eac2dcd2f3a6bf01e9964ea779d
https://github.com/galaxyproject/usegalaxy-playbook/commit/04f7c63fbbba7eac…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M production/group_vars/toolshedservers.yml
M stage/group_vars/toolshedservers.yml
Log Message:
-----------
Update Test and Main Tool Sheds
1
0
Branch: refs/heads/master
Home: https://github.com/galaxyproject/usegalaxy-playbook
Commit: c2a6f1c1cb675486ddf26827d69e218eef63355b
https://github.com/galaxyproject/usegalaxy-playbook/commit/c2a6f1c1cb675486…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M production/group_vars/all.yml
Log Message:
-----------
Update Main
1
0
NiBuZXcgY29tbWl0cyBpbiBnYWxheHktY2VudHJhbDoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9n
YWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy9hOTRiM2E5N2VkN2EvCkNoYW5nZXNldDogICBh
OTRiM2E5N2VkN2EKQnJhbmNoOiAgICAgIHJlbGVhc2VfMTQuMTAKVXNlcjogICAgICAgIG5hdGVm
b28KRGF0ZTogICAgICAgIDIwMTYtMDItMjQgMjA6NDg6MDArMDA6MDAKU3VtbWFyeTogICAgIFJl
bGVhc2UgMTQuMTAuMwpBZmZlY3RlZCAjOiAgMjAgZmlsZXMKCmRpZmYgLXIgZWIxM2QxODIwMWZi
YmY4MzE5ZmIyYjFjMDNhMjcyZWI1NTFiN2QyNiAtciBhOTRiM2E5N2VkN2FlNjY3MmM5YjFkYz0K
ODc5MjJmN2U5ZjJhNzA4NjAgbGliL2dhbGF4eS9leGNlcHRpb25zL19faW5pdF9fLnB5Ci0tLSBh
L2xpYi9nYWxheHkvZXhjZXB0aW9ucy9fX2luaXRfXy5weQorKysgYi9saWIvZ2FsYXh5L2V4Y2Vw
dGlvbnMvX19pbml0X18ucHkKQEAgLTY2LDYgKzY2LDExIEBACiAgICAgZXJyX2NvZGUgPTNEIGVy
cm9yX2NvZGVzLk1BTEZPUk1FRF9JRAo9MjAKPTIwCitjbGFzcyBNYWxmb3JtZWRDb250ZW50cygg
TWVzc2FnZUV4Y2VwdGlvbiApOgorICAgIHN0YXR1c19jb2RlID0zRCA0MDAKKyAgICBlcnJfY29k
ZSA9M0QgZXJyb3JfY29kZXMuTUFMRk9STUVEX0NPTlRFTlRTCisKKwogY2xhc3MgVW5rbm93bkNv
bnRlbnRzVHlwZSggTWVzc2FnZUV4Y2VwdGlvbiApOgogICAgIHN0YXR1c19jb2RlID0zRCA0MDAK
ICAgICBlcnJfY29kZSA9M0QgZXJyb3JfY29kZXMuVU5LTk9XTl9DT05URU5UU19UWVBFCgpkaWZm
IC1yIGViMTNkMTgyMDFmYmJmODMxOWZiMmIxYzAzYTI3MmViNTUxYjdkMjYgLXIgYTk0YjNhOTdl
ZDdhZTY2NzJjOWIxZGM9Cjg3OTIyZjdlOWYyYTcwODYwIGxpYi9nYWxheHkvZXhjZXB0aW9ucy9l
cnJvcl9jb2Rlcy5qc29uCi0tLSBhL2xpYi9nYWxheHkvZXhjZXB0aW9ucy9lcnJvcl9jb2Rlcy5q
c29uCisrKyBiL2xpYi9nYWxheHkvZXhjZXB0aW9ucy9lcnJvcl9jb2Rlcy5qc29uCkBAIC01Niwx
MCArNTYsMTUgQEAKICAgICB9LAogICAgewogICAgICJuYW1lIjogIlVTRVJfVE9PTF9NRVRBX1BB
UkFNRVRFUl9QUk9CTEVNIiwKLSAgICAiY29kZSI6IDQwMDAxMSwKKyAgICAiY29kZSI6IDQwMDAx
MiwKICAgICAibWVzc2FnZSI6ICJTdXBwbGllZCBpbmNvcnJlY3Qgb3IgaW5jb21wYXRpYmxlIHRv
b2wgbWV0YSBwYXJhbWV0ZXJzLiIKICAgIH0sCiAgICB7CisgICAgIm5hbWUiOiAiTUFMRk9STUVE
X0NPTlRFTlRTIiwKKyAgICAiY29kZSI6IDQwMDAxMywKKyAgICAibWVzc2FnZSI6ICJUaGUgY29u
dGVudHMgb2YgdGhlIHJlcXVlc3QgYXJlIG1hbGZvcm1lZC4iCisgICAgfSwKKyAgIHsKICAgICAi
bmFtZSI6ICJVU0VSX0FVVEhFTlRJQ0FUSU9OX0ZBSUxFRCIsCiAgICAgImNvZGUiOiA0MDEwMDEs
CiAgICAgIm1lc3NhZ2UiOiAiQXV0aGVudGljYXRpb24gZmFpbGVkLCBpbnZhbGlkIGNyZWRlbnRp
YWxzIHN1cHBsaWVkLiIKCmRpZmYgLXIgZWIxM2QxODIwMWZiYmY4MzE5ZmIyYjFjMDNhMjcyZWI1
NTFiN2QyNiAtciBhOTRiM2E5N2VkN2FlNjY3MmM5YjFkYz0KODc5MjJmN2U5ZjJhNzA4NjAgbGli
L2dhbGF4eS9tb2RlbC9fX2luaXRfXy5weQotLS0gYS9saWIvZ2FsYXh5L21vZGVsL19faW5pdF9f
LnB5CisrKyBiL2xpYi9nYWxheHkvbW9kZWwvX19pbml0X18ucHkKQEAgLTUsMTUgKzUsMTEgQEAK
IHRoZSByZWxhdGlvbnNoaXAgY2FyZGluYWxpdGllcyBhcmUgb2J2aW91cyAoZS5nLiBwcmVmZXIg
RGF0YXNldCB0byBEYXRhKQogIiIiCj0yMAotZnJvbSBnYWxheHkgaW1wb3J0IGVnZ3MKLWVnZ3Mu
cmVxdWlyZSgicGV4cGVjdCIpCi0KIGltcG9ydCBjb2RlY3MKIGltcG9ydCBlcnJubwogaW1wb3J0
IGxvZ2dpbmcKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IG9zCi1pbXBvcnQgcGV4cGVjdAogaW1w
b3J0IGpzb24KIGltcG9ydCBzb2NrZXQKIGltcG9ydCB0aW1lCkBAIC0zNjk0LDI3ICszNjkwLDYg
QEAKICAgICAgICAgICAgICAgICB1bnRyYW5zZmVycmVkX2RhdGFzZXRzLmFwcGVuZCggZGF0YXNl
dCApCiAgICAgICAgIHJldHVybiB1bnRyYW5zZmVycmVkX2RhdGFzZXRzCj0yMAotICAgIGRlZiBn
ZXRfdW50cmFuc2ZlcnJlZF9kYXRhc2V0X3NpemUoIHNlbGYsIGZpbGVwYXRoLCBzY3BfY29uZmln
cyApOgotICAgICAgICBkZWYgcHJpbnRfdGlja3MoIGQgKToKLSAgICAgICAgICAgIHBhc3MKLSAg
ICAgICAgZXJyb3JfbXNnID0zRCAnRXJyb3IgZW5jb3VudGVyZWQgaW4gZGV0ZXJtaW5pbmcgdGhl
IGZpbGUgc2l6ZSBvZiAlPQpzIG9uIHRoZSBleHRlcm5hbF9zZXJ2aWNlLicgJSBmaWxlcGF0aAot
ICAgICAgICBpZiBub3Qgc2NwX2NvbmZpZ3NbJ2hvc3QnXSBvciBub3Qgc2NwX2NvbmZpZ3NbJ3Vz
ZXJfbmFtZSddIG9yIG5vdCA9CnNjcF9jb25maWdzWydwYXNzd29yZCddOgotICAgICAgICAgICAg
cmV0dXJuIGVycm9yX21zZwotICAgICAgICBsb2dpbl9zdHIgPTNEICclc0AlcycgJSAoIHNjcF9j
b25maWdzWyd1c2VyX25hbWUnXSwgc2NwX2NvbmZpZ3NbJ2g9Cm9zdCddICkKLSAgICAgICAgY21k
ICA9M0QgJ3NzaCAlcyAiZHUgLXNoIFwnJXNcJyInICUgKCBsb2dpbl9zdHIsIGZpbGVwYXRoICkK
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3V0cHV0ID0zRCBwZXhwZWN0LnJ1biggY21kLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50cz0zRHsgJy5zc3dvcmQ6Kic6
IHNjcF9jb25maWdzWydwYXM9CnN3b3JkJ10rJ1xyXG4nLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBleHBlY3QuVElNRU9VVDpwcmludF90aWNrc30sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD0zRDEwICkKLSAgICAgICAgZXhj
ZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIHJldHVybiBlcnJvcl9tc2cKLSAgICAgICAgIyBj
bGVhbnVwIHRoZSBvdXRwdXQgdG8gZ2V0IGp1c3QgdGhlIGZpbGUgc2l6ZQotICAgICAgICByZXR1
cm4gIG91dHB1dC5yZXBsYWNlKCBmaWxlcGF0aCwgJycgKVwKLSAgICAgICAgICAgICAgICAgICAg
ICAucmVwbGFjZSggJ1Bhc3N3b3JkOicsICcnIClcCi0gICAgICAgICAgICAgICAgICAgICAgLnJl
cGxhY2UoICIncyBwYXNzd29yZDoiLCAnJyApXAotICAgICAgICAgICAgICAgICAgICAgIC5yZXBs
YWNlKCBsb2dpbl9zdHIsICcnIClcCi0gICAgICAgICAgICAgICAgICAgICAgLnN0cmlwKCkKICAg
ICBAcHJvcGVydHkKICAgICBkZWYgcnVuX2RldGFpbHMoIHNlbGYgKToKICAgICAgICAgIyBzZWxm
LnJ1bnMgaXMgYSBsaXN0IG9mIFNhbXBsZVJ1bkFzc29jaWF0aW9ucyBvcmRlcmVkIGRlc2NlbmRp
bmcgPQpvbiB1cGRhdGVfdGltZS4KCmRpZmYgLXIgZWIxM2QxODIwMWZiYmY4MzE5ZmIyYjFjMDNh
MjcyZWI1NTFiN2QyNiAtciBhOTRiM2E5N2VkN2FlNjY3MmM5YjFkYz0KODc5MjJmN2U5ZjJhNzA4
NjAgbGliL2dhbGF4eS9vYmplY3RzdG9yZS9fX2luaXRfXy5weQotLS0gYS9saWIvZ2FsYXh5L29i
amVjdHN0b3JlL19faW5pdF9fLnB5CisrKyBiL2xpYi9nYWxheHkvb2JqZWN0c3RvcmUvX19pbml0
X18ucHkKQEAgLTExLDcgKzExLDcgQEAKIGltcG9ydCB0aHJlYWRpbmcKIGZyb20geG1sLmV0cmVl
IGltcG9ydCBFbGVtZW50VHJlZQo9MjAKLWZyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IHVtYXNrX2Zp
eF9wZXJtcywgZm9yY2Vfc3ltbGluaworZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgdW1hc2tfZml4
X3Blcm1zLCBmb3JjZV9zeW1saW5rLCBzYWZlX3JlbHBhdGgKIGZyb20gZ2FsYXh5LmV4Y2VwdGlv
bnMgaW1wb3J0IE9iamVjdEludmFsaWQsIE9iamVjdE5vdEZvdW5kCiBmcm9tIGdhbGF4eS51dGls
LnNsZWVwZXIgaW1wb3J0IFNsZWVwZXIKIGZyb20gZ2FsYXh5LnV0aWwuZGlyZWN0b3J5X2hhc2gg
aW1wb3J0IGRpcmVjdG9yeV9oYXNoX2lkCkBAIC0yNTYsNyArMjU2LDE3IEBACiAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGhlIGNvbXBvc2VkIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZG9lcyBub3Qg
aW5jbHVkZT0KIGEgaGFzaCBpZAogICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuLCAvZmls
ZXMvZGF0YXNldF8xMC5kYXQgKG9sZCkgdnMuIC9maWxlcy8wMDA9Ci9kYXRhc2V0XzEwLmRhdCAo
bmV3KSkKICAgICAgICAgIiIiCi0gICAgICAgIGJhc2UgPTNEIHNlbGYuZXh0cmFfZGlycy5nZXQo
YmFzZV9kaXIsIHNlbGYuZmlsZV9wYXRoKQorICAgICAgICBiYXNlID0zRCBvcy5wYXRoLmFic3Bh
dGgoc2VsZi5leHRyYV9kaXJzLmdldChiYXNlX2Rpciwgc2VsZi5maWxlX3A9CmF0aCkpCisgICAg
ICAgICMgZXh0cmFfZGlyIHNob3VsZCBuZXZlciBiZSBjb25zdHJ1Y3RlZCBmcm9tIHByb3ZpZGVk
IGRhdGEgYnV0IGp1c3QKKyAgICAgICAgIyBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIHNoZW5hbm5p
Z2FucyBhZm9vdAorICAgICAgICBpZiBleHRyYV9kaXIgYW5kIGV4dHJhX2RpciAhPTNEIG9zLnBh
dGgubm9ybXBhdGgoZXh0cmFfZGlyKToKKyAgICAgICAgICAgIGxvZy53YXJuaW5nKCdleHRyYV9k
aXIgaXMgbm90IG5vcm1hbGl6ZWQ6ICVzJywgZXh0cmFfZGlyKQorICAgICAgICAgICAgcmFpc2Ug
T2JqZWN0SW52YWxpZCgiVGhlIHJlcXVlc3RlZCBvYmplY3QgaXMgaW52YWxpZCIpCisgICAgICAg
ICMgZW5zdXJlIHRoYXQgYW55IHBhcmVudCBkaXJlY3RvcnkgcmVmZXJlbmNlcyBpbiBhbHRfbmFt
ZSB3b3VsZCBub3QKKyAgICAgICAgIyByZXN1bHQgaW4gYSBwYXRoIG5vdCBjb250YWluZWQgaW4g
dGhlIGRpcmVjdG9yeSBwYXRoIGNvbnN0cnVjdGVkPQogaGVyZQorICAgICAgICBpZiBhbHRfbmFt
ZSBhbmQgbm90IHNhZmVfcmVscGF0aChhbHRfbmFtZSk6CisgICAgICAgICAgICBsb2cud2Fybmlu
ZygnYWx0X25hbWUgd291bGQgbG9jYXRlIHBhdGggb3V0c2lkZSBkaXI6ICVzJywgYWx0Xz0KbmFt
ZSkKKyAgICAgICAgICAgIHJhaXNlIE9iamVjdEludmFsaWQoIlRoZSByZXF1ZXN0ZWQgb2JqZWN0
IGlzIGludmFsaWQiKQogICAgICAgICBpZiBvbGRfc3R5bGU6CiAgICAgICAgICAgICBpZiBleHRy
YV9kaXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcGF0aCA9M0Qgb3MucGF0aC5qb2lu
KGJhc2UsIGV4dHJhX2RpcikKQEAgLTYyMyw5ICs2MzMsMTAgQEAKICAgICBlbGlmIHN0b3JlID0z
RD0zRCAnaXJvZHMnOgogICAgICAgICBmcm9tIC5yb2RzIGltcG9ydCBJUk9EU09iamVjdFN0b3Jl
CiAgICAgICAgIHJldHVybiBJUk9EU09iamVjdFN0b3JlKGNvbmZpZz0zRGNvbmZpZywgY29uZmln
X3htbD0zRGNvbmZpZ194bWwpCi0gICAgZWxpZiBzdG9yZSA9M0Q9M0QgJ3B1bHNhcic6Ci0gICAg
ICAgIGZyb20gLnB1bHNhciBpbXBvcnQgUHVsc2FyT2JqZWN0U3RvcmUKLSAgICAgICAgcmV0dXJu
IFB1bHNhck9iamVjdFN0b3JlKGNvbmZpZz0zRGNvbmZpZywgY29uZmlnX3htbD0zRGNvbmZpZ194
bWwpCisgICAgIyBEaXNhYmxlIHRoZSBQdWxzYXIgb2JqZWN0IHN0b3JlIGZvciBub3cgdW50aWwg
aXQgcmVjZWl2ZXMgc29tZSBhdHRlbj0KdGlvbgorICAgICMgZWxpZiBzdG9yZSA9M0Q9M0QgJ3B1
bHNhcic6CisgICAgIyAgICBmcm9tIC5wdWxzYXIgaW1wb3J0IFB1bHNhck9iamVjdFN0b3JlCisg
ICAgIyAgICByZXR1cm4gUHVsc2FyT2JqZWN0U3RvcmUoY29uZmlnPTNEY29uZmlnLCBjb25maWdf
eG1sPTNEY29uZmlnX3htbCkKICAgICBlbHNlOgogICAgICAgICBsb2cuZXJyb3IoIlVucmVjb2du
aXplZCBvYmplY3Qgc3RvcmUgZGVmaW5pdGlvbjogezB9Ii5mb3JtYXQoc3RvcmU9CikpCj0yMAoK
ZGlmZiAtciBlYjEzZDE4MjAxZmJiZjgzMTlmYjJiMWMwM2EyNzJlYjU1MWI3ZDI2IC1yIGE5NGIz
YTk3ZWQ3YWU2NjcyYzliMWRjPQo4NzkyMmY3ZTlmMmE3MDg2MCBsaWIvZ2FsYXh5L29iamVjdHN0
b3JlL3JvZHMucHkKLS0tIGEvbGliL2dhbGF4eS9vYmplY3RzdG9yZS9yb2RzLnB5CisrKyBiL2xp
Yi9nYWxheHkvb2JqZWN0c3RvcmUvcm9kcy5weQpAQCAtMTIsNyArMTIsOCBAQAogZnJvbSBwb3Np
eHBhdGggaW1wb3J0IGJhc2VuYW1lIGFzIHBhdGhfYmFzZW5hbWUKIGZyb20gcG9zaXhwYXRoIGlt
cG9ydCBkaXJuYW1lIGFzIHBhdGhfZGlybmFtZQo9MjAKLWZyb20gZ2FsYXh5LmV4Y2VwdGlvbnMg
aW1wb3J0IE9iamVjdE5vdEZvdW5kCitmcm9tIGdhbGF4eS5leGNlcHRpb25zIGltcG9ydCBPYmpl
Y3ROb3RGb3VuZCwgT2JqZWN0SW52YWxpZAorZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgc2FmZV9y
ZWxwYXRoCiBmcm9tIC4ub2JqZWN0c3RvcmUgaW1wb3J0IERpc2tPYmplY3RTdG9yZSwgT2JqZWN0
U3RvcmUsIGxvY2FsX2V4dHJhX2RpcnMKPTIwCiB0cnk6CkBAIC03MSw2ICs3MiwyMCBAQAogICAg
ICAgICBsb2cuaW5mbyggImlST0RTIGRhdGEgZm9yIHRoaXMgaW5zdGFuY2Ugd2lsbCBiZSBzdG9y
ZWQgaW4gY29sbGVjdGk9Cm9uOiAlcywgcmVzb3VyY2U6ICVzIiwgc2VsZi5yb290X2NvbGxlY3Rp
b25fcGF0aCwgc2VsZi5kZWZhdWx0X3Jlc291cmNlICkKPTIwCiAgICAgZGVmIF9fZ2V0X3JvZHNf
cGF0aCggc2VsZiwgb2JqLCBiYXNlX2Rpcj0zRE5vbmUsIGRpcl9vbmx5PTNERmFsc2UsIGV4dD0K
cmFfZGlyPTNETm9uZSwgZXh0cmFfZGlyX2F0X3Jvb3Q9M0RGYWxzZSwgYWx0X25hbWU9M0ROb25l
LCBzdHJpcF9kYXQ9M0RUcnVlPQosICoqa3dhcmdzICk6CisgICAgICAgICMgZXh0cmFfZGlyIHNo
b3VsZCBuZXZlciBiZSBjb25zdHJ1Y3RlZCBmcm9tIHByb3ZpZGVkIGRhdGEgYnV0IGp1c3QKKyAg
ICAgICAgIyBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIHNoZW5hbm5pZ2FucyBhZm9vdAorICAgICAg
ICBpZiBleHRyYV9kaXIgYW5kIGV4dHJhX2RpciAhPTNEIG9zLnBhdGgubm9ybXBhdGgoZXh0cmFf
ZGlyKToKKyAgICAgICAgICAgIGxvZy53YXJuaW5nKCdleHRyYV9kaXIgaXMgbm90IG5vcm1hbGl6
ZWQ6ICVzJywgZXh0cmFfZGlyKQorICAgICAgICAgICAgcmFpc2UgT2JqZWN0SW52YWxpZCgiVGhl
IHJlcXVlc3RlZCBvYmplY3QgaXMgaW52YWxpZCIpCisgICAgICAgICMgZW5zdXJlIHRoYXQgYW55
IHBhcmVudCBkaXJlY3RvcnkgcmVmZXJlbmNlcyBpbiBhbHRfbmFtZSB3b3VsZCBub3QKKyAgICAg
ICAgIyByZXN1bHQgaW4gYSBwYXRoIG5vdCBjb250YWluZWQgaW4gdGhlIGRpcmVjdG9yeSBwYXRo
IGNvbnN0cnVjdGVkPQogaGVyZQorICAgICAgICBpZiBhbHRfbmFtZToKKyAgICAgICAgICAgIGlm
IG5vdCBzYWZlX3JlbHBhdGgoYWx0X25hbWUpOgorICAgICAgICAgICAgICAgIGxvZy53YXJuaW5n
KCdhbHRfbmFtZSB3b3VsZCBsb2NhdGUgcGF0aCBvdXRzaWRlIGRpcjogJXMnLCA9CmFsdF9uYW1l
KQorICAgICAgICAgICAgICAgIHJhaXNlIE9iamVjdEludmFsaWQoIlRoZSByZXF1ZXN0ZWQgb2Jq
ZWN0IGlzIGludmFsaWQiKQorICAgICAgICAgICAgIyBhbHRfbmFtZSBjYW4gY29udGFpbiBwYXJl
bnQgZGlyZWN0b3J5IHJlZmVyZW5jZXMsIGJ1dCBpUk9EUyA9CndpbGwKKyAgICAgICAgICAgICMg
bm90IGZvbGxvdyB0aGVtLCBzbyBpZiB0aGV5IGFyZSB2YWxpZCB3ZSBub3JtYWxpemUgdGhlbSBv
dXQKKyAgICAgICAgICAgIGFsdF9uYW1lID0zRCBvcy5wYXRoLm5vcm1wYXRoKGFsdF9uYW1lKQog
ICAgICAgICBwYXRoID0zRCAiIgogICAgICAgICBpZiBleHRyYV9kaXIgaXMgbm90IE5vbmU6CiAg
ICAgICAgICAgICBwYXRoID0zRCBleHRyYV9kaXIKCmRpZmYgLXIgZWIxM2QxODIwMWZiYmY4MzE5
ZmIyYjFjMDNhMjcyZWI1NTFiN2QyNiAtciBhOTRiM2E5N2VkN2FlNjY3MmM5YjFkYz0KODc5MjJm
N2U5ZjJhNzA4NjAgbGliL2dhbGF4eS9vYmplY3RzdG9yZS9zMy5weQotLS0gYS9saWIvZ2FsYXh5
L29iamVjdHN0b3JlL3MzLnB5CisrKyBiL2xpYi9nYWxheHkvb2JqZWN0c3RvcmUvczMucHkKQEAg
LTEyLDggKzEyLDggQEAKPTIwCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQo9MjAKLWZy
b20gZ2FsYXh5LmV4Y2VwdGlvbnMgaW1wb3J0IE9iamVjdE5vdEZvdW5kCi1mcm9tIGdhbGF4eS51
dGlsIGltcG9ydCB1bWFza19maXhfcGVybXMKK2Zyb20gZ2FsYXh5LmV4Y2VwdGlvbnMgaW1wb3J0
IE9iamVjdE5vdEZvdW5kLCBPYmplY3RJbnZhbGlkCitmcm9tIGdhbGF4eS51dGlsIGltcG9ydCB1
bWFza19maXhfcGVybXMsIHNhZmVfcmVscGF0aAogZnJvbSBnYWxheHkudXRpbC5kaXJlY3Rvcnlf
aGFzaCBpbXBvcnQgZGlyZWN0b3J5X2hhc2hfaWQKIGZyb20gZ2FsYXh5LnV0aWwuc2xlZXBlciBp
bXBvcnQgU2xlZXBlcgogZnJvbSAuczNfbXVsdGlwYXJ0X3VwbG9hZCBpbXBvcnQgbXVsdGlwYXJ0
X3VwbG9hZApAQCAtMTgxLDYgKzE4MSwyMCBAQAogICAgICAgICAgICAgICAgIHVtYXNrX2ZpeF9w
ZXJtcyggcGF0aCwgc2VsZi5jb25maWcudW1hc2ssIDA2NjYsIHNlbGYuY29uZmk9CmcuZ2lkICkK
PTIwCiAgICAgZGVmIF9jb25zdHJ1Y3RfcGF0aChzZWxmLCBvYmosIGRpcl9vbmx5PTNETm9uZSwg
ZXh0cmFfZGlyPTNETm9uZSwgZXh0cj0KYV9kaXJfYXRfcm9vdD0zREZhbHNlLCBhbHRfbmFtZT0z
RE5vbmUsICoqa3dhcmdzKToKKyAgICAgICAgIyBleHRyYV9kaXIgc2hvdWxkIG5ldmVyIGJlIGNv
bnN0cnVjdGVkIGZyb20gcHJvdmlkZWQgZGF0YSBidXQganVzdAorICAgICAgICAjIG1ha2Ugc3Vy
ZSB0aGVyZSBhcmUgbm8gc2hlbmFubmlnYW5zIGFmb290CisgICAgICAgIGlmIGV4dHJhX2RpciBh
bmQgZXh0cmFfZGlyICE9M0Qgb3MucGF0aC5ub3JtcGF0aChleHRyYV9kaXIpOgorICAgICAgICAg
ICAgbG9nLndhcm5pbmcoJ2V4dHJhX2RpciBpcyBub3Qgbm9ybWFsaXplZDogJXMnLCBleHRyYV9k
aXIpCisgICAgICAgICAgICByYWlzZSBPYmplY3RJbnZhbGlkKCJUaGUgcmVxdWVzdGVkIG9iamVj
dCBpcyBpbnZhbGlkIikKKyAgICAgICAgIyBlbnN1cmUgdGhhdCBhbnkgcGFyZW50IGRpcmVjdG9y
eSByZWZlcmVuY2VzIGluIGFsdF9uYW1lIHdvdWxkIG5vdAorICAgICAgICAjIHJlc3VsdCBpbiBh
IHBhdGggbm90IGNvbnRhaW5lZCBpbiB0aGUgZGlyZWN0b3J5IHBhdGggY29uc3RydWN0ZWQ9CiBo
ZXJlCisgICAgICAgIGlmIGFsdF9uYW1lOgorICAgICAgICAgICAgaWYgbm90IHNhZmVfcmVscGF0
aChhbHRfbmFtZSk6CisgICAgICAgICAgICAgICAgbG9nLndhcm5pbmcoJ2FsdF9uYW1lIHdvdWxk
IGxvY2F0ZSBwYXRoIG91dHNpZGUgZGlyOiAlcycsID0KYWx0X25hbWUpCisgICAgICAgICAgICAg
ICAgcmFpc2UgT2JqZWN0SW52YWxpZCgiVGhlIHJlcXVlc3RlZCBvYmplY3QgaXMgaW52YWxpZCIp
CisgICAgICAgICAgICAjIGFsdF9uYW1lIGNhbiBjb250YWluIHBhcmVudCBkaXJlY3RvcnkgcmVm
ZXJlbmNlcywgYnV0IFMzIHdpbD0KbCBub3QKKyAgICAgICAgICAgICMgZm9sbG93IHRoZW0sIHNv
IGlmIHRoZXkgYXJlIHZhbGlkIHdlIG5vcm1hbGl6ZSB0aGVtIG91dAorICAgICAgICAgICAgYWx0
X25hbWUgPTNEIG9zLnBhdGgubm9ybXBhdGgoYWx0X25hbWUpCiAgICAgICAgIHJlbF9wYXRoID0z
RCBvcy5wYXRoLmpvaW4oKmRpcmVjdG9yeV9oYXNoX2lkKG9iai5pZCkpCiAgICAgICAgIGlmIGV4
dHJhX2RpciBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGlmIGV4dHJhX2Rpcl9hdF9yb290OgoK
ZGlmZiAtciBlYjEzZDE4MjAxZmJiZjgzMTlmYjJiMWMwM2EyNzJlYjU1MWI3ZDI2IC1yIGE5NGIz
YTk3ZWQ3YWU2NjcyYzliMWRjPQo4NzkyMmY3ZTlmMmE3MDg2MCBsaWIvZ2FsYXh5L3Rvb2xzL2lt
cF9leHAvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4eS90b29scy9pbXBfZXhwL19faW5pdF9f
LnB5CisrKyBiL2xpYi9nYWxheHkvdG9vbHMvaW1wX2V4cC9fX2luaXRfXy5weQpAQCAtNSw2ICs1
LDcgQEAKIGltcG9ydCBqc29uCiBpbXBvcnQgZGF0ZXRpbWUKIGZyb20gZ2FsYXh5IGltcG9ydCBt
b2RlbAorZnJvbSBnYWxheHkuZXhjZXB0aW9ucyBpbXBvcnQgTWFsZm9ybWVkQ29udGVudHMKIGZy
b20gZ2FsYXh5LnRvb2xzLnBhcmFtZXRlcnMuYmFzaWMgaW1wb3J0IFVudmFsaWRhdGVkVmFsdWUK
IGZyb20gZ2FsYXh5LndlYi5mcmFtZXdvcmsuaGVscGVycyBpbXBvcnQgdG9fdW5pY29kZQogZnJv
bSBnYWxheHkubW9kZWwuaXRlbV9hdHRycyBpbXBvcnQgVXNlc0Fubm90YXRpb25zCkBAIC0xODcs
OSArMTg4LDkgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgZGF0YXNldF9hdHRycy5nZXQoJ2V4
cG9ydGVkJywgVHJ1ZSkgPTNEPTNEIFRydWU6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIERv
IHNlY3VyaXR5IGNoZWNrIGFuZCBtb3ZlL2NvcHkgZGF0YXNldCBkYXRhLgogICAgICAgICAgICAg
ICAgICAgICAgICAgdGVtcF9kYXRhc2V0X2ZpbGVfbmFtZSA9M0QgXAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9zLnBhdGguYWJzcGF0aCggb3MucGF0aC5qb2luKCBhcmNoaXZlX2Rpciwg
ZGE9CnRhc2V0X2F0dHJzWydmaWxlX25hbWUnXSApICkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvcy5wYXRoLnJlYWxwYXRoKCBvcy5wYXRoLmFic3BhdGgoIG9zLnBhdGguam9pPQpuKCBh
cmNoaXZlX2RpciwgZGF0YXNldF9hdHRyc1snZmlsZV9uYW1lJ10gKSApICkKICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIG5vdCBmaWxlX2luX2RpciggdGVtcF9kYXRhc2V0X2ZpbGVfbmFtZSwg
b3MucGF0PQpoLmpvaW4oIGFyY2hpdmVfZGlyLCAiZGF0YXNldHMiICkgKToKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oICJJbnZhbGlkIGRhdGFzZXQgcGF0aDog
JXMiICUgPQp0ZW1wX2RhdGFzZXRfZmlsZV9uYW1lICkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByYWlzZSBNYWxmb3JtZWRDb250ZW50cyggIkludmFsaWQgZGF0YXNldCBwYXRoPQo6ICVz
IiAlIHRlbXBfZGF0YXNldF9maWxlX25hbWUgKQogICAgICAgICAgICAgICAgICAgICAgICAgaWYg
ZGF0YXNldHNfdXNhZ2VfY291bnRzWyB0ZW1wX2RhdGFzZXRfZmlsZV9uYW1lIF09CiA9M0Q9M0Qg
MToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaHV0aWwubW92ZSggdGVtcF9kYXRhc2V0
X2ZpbGVfbmFtZSwgaGRhLmZpbGVfPQpuYW1lICkKICAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2U6CkBAIC0zMTMsNiArMzE0LDcgQEAKICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6
CiAgICAgICAgICAgICAgICAgamloYS5qb2Iuc3RkZXJyICs9M0QgIkVycm9yIGNsZWFuaW5nIHVw
IGhpc3RvcnkgaW1wb3J0IGpvYj0KOiAlcyIgJSBlCiAgICAgICAgICAgICAgICAgc2VsZi5zYV9z
ZXNzaW9uLmZsdXNoKCkKKyAgICAgICAgICAgICAgICByYWlzZQo9MjAKPTIwCiBjbGFzcyBKb2JF
eHBvcnRIaXN0b3J5QXJjaGl2ZVdyYXBwZXIoIG9iamVjdCwgVXNlc0hpc3RvcnlNaXhpbiwgVXNl
c0Fubm90YT0KdGlvbnMgKToKCmRpZmYgLXIgZWIxM2QxODIwMWZiYmY4MzE5ZmIyYjFjMDNhMjcy
ZWI1NTFiN2QyNiAtciBhOTRiM2E5N2VkN2FlNjY3MmM5YjFkYz0KODc5MjJmN2U5ZjJhNzA4NjAg
bGliL2dhbGF4eS90b29scy9pbXBfZXhwL3VucGFja190YXJfZ3pfYXJjaGl2ZS5weQotLS0gYS9s
aWIvZ2FsYXh5L3Rvb2xzL2ltcF9leHAvdW5wYWNrX3Rhcl9nel9hcmNoaXZlLnB5CisrKyBiL2xp
Yi9nYWxheHkvdG9vbHMvaW1wX2V4cC91bnBhY2tfdGFyX2d6X2FyY2hpdmUucHkKQEAgLTYsNiAr
Niw3IEBACiAgICAgLS1bdXJsfGZpbGVdIHNvdXJjZSB0eXBlLCBlaXRoZXIgYSBVUkwgb3IgYSBm
aWxlLgogIiIiCj0yMAoraW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgb3B0cGFyc2UKIGlt
cG9ydCB0YXJmaWxlCkBAIC00Myw2ICs0NCwyMiBAQAogICAgICAgICByZXR1cm4gTm9uZQo9MjAK
PTIwCitkZWYgY2hlY2tfYXJjaGl2ZSggYXJjaGl2ZV9maWxlLCBkZXN0X2RpciApOgorICAgICIi
IgorICAgIEVuc3VyZSB0aGF0IGEgdGFyIGFyY2hpdmUgaGFzIG5vIGFic29sdXRlIHBhdGhzIG9y
IHJlbGF0aXZlIHBhdGhzIG91dHM9CmlkZQorICAgIHRoZSBhcmNoaXZlLgorICAgICIiIgorICAg
IHdpdGggdGFyZmlsZS5vcGVuKCBhcmNoaXZlX2ZpbGUsIG1vZGU9M0QncjpneicgKSBhcyBhcmNo
aXZlX2ZwOgorICAgICAgICBmb3IgYXJjX3BhdGggaW4gYXJjaGl2ZV9mcC5nZXRuYW1lcygpOgor
ICAgICAgICAgICAgYXNzZXJ0IG9zLnBhdGgubm9ybXBhdGgoCisgICAgICAgICAgICAgICAgb3Mu
cGF0aC5qb2luKAorICAgICAgICAgICAgICAgICAgICBkZXN0X2RpciwKKyAgICAgICAgICAgICAg
ICAgICAgYXJjX3BhdGgKKyAgICAgICAgICAgICAgICApICkuc3RhcnRzd2l0aCggZGVzdF9kaXIu
cnN0cmlwKG9zLnNlcCkgKyBvcy5zZXAgKSwgXAorICAgICAgICAgICAgICAgICJBcmNoaXZlIG1l
bWJlciB3b3VsZCBleHRyYWN0IG91dHNpZGUgdGFyZ2V0IGRpcmVjdG9yeTogJXM9CiIgJSBhcmNf
cGF0aAorICAgIHJldHVybiBUcnVlCisKKwogZGVmIHVucGFja19hcmNoaXZlKCBhcmNoaXZlX2Zp
bGUsIGRlc3RfZGlyICk6CiAgICAgIiIiCiAgICAgVW5wYWNrIGEgdGFyIGFuZC9vciBnemlwcGVk
IGFyY2hpdmUgaW50byBhIGRlc3RpbmF0aW9uIGRpcmVjdG9yeS4KQEAgLTUxLDEzICs2OCw4IEBA
CiAgICAgYXJjaGl2ZV9mcC5leHRyYWN0YWxsKCBwYXRoPTNEZGVzdF9kaXIgKQogICAgIGFyY2hp
dmVfZnAuY2xvc2UoKQo9MjAKLWlmIF9fbmFtZV9fID0zRD0zRCAiX19tYWluX18iOgotICAgICMg
UGFyc2UgY29tbWFuZCBsaW5lLgotICAgIHBhcnNlciA9M0Qgb3B0cGFyc2UuT3B0aW9uUGFyc2Vy
KCkKLSAgICBwYXJzZXIuYWRkX29wdGlvbiggJy1VJywgJy0tdXJsJywgZGVzdD0zRCdpc191cmwn
LCBhY3Rpb249M0Qic3RvcmVfdHJ1PQplIiwgaGVscD0zRCdTb3VyY2UgaXMgYSBVUkwuJyApCi0g
ICAgcGFyc2VyLmFkZF9vcHRpb24oICctRicsICctLWZpbGUnLCBkZXN0PTNEJ2lzX2ZpbGUnLCBh
Y3Rpb249M0Qic3RvcmVfdD0KcnVlIiwgaGVscD0zRCdTb3VyY2UgaXMgYSBVUkwuJyApCi0gICAg
cGFyc2VyLmFkZF9vcHRpb24oICctZScsICctLWVuY29kZWQnLCBkZXN0PTNEJ2lzX2I2NGVuY29k
ZWQnLCBhY3Rpb249Cj0zRCJzdG9yZV90cnVlIiwgZGVmYXVsdD0zREZhbHNlLCBoZWxwPTNEJ1Nv
dXJjZSBhbmQgZGVzdGluYXRpb24gZGlyIHZhbHVlcz0KIGFyZSBiYXNlNjQgZW5jb2RlZC4nICkK
LSAgICAob3B0aW9ucywgYXJncykgPTNEIHBhcnNlci5wYXJzZV9hcmdzKCkKKworZGVmIG1haW4o
b3B0aW9ucywgYXJncyk6CiAgICAgaXNfdXJsID0zRCBib29sKCBvcHRpb25zLmlzX3VybCApCiAg
ICAgaXNfZmlsZSA9M0QgYm9vbCggb3B0aW9ucy5pc19maWxlICkKICAgICBhcmNoaXZlX3NvdXJj
ZSwgZGVzdF9kaXIgPTNEIGFyZ3MKQEAgLTY2LDE0ICs3OCwyNSBAQAogICAgICAgICBhcmNoaXZl
X3NvdXJjZSA9M0QgYjY0ZGVjb2RlKCBhcmNoaXZlX3NvdXJjZSApCiAgICAgICAgIGRlc3RfZGly
ID0zRCBiNjRkZWNvZGUoIGRlc3RfZGlyICkKPTIwCisgICAgIyBHZXQgYXJjaGl2ZSBmcm9tIFVS
TC4KKyAgICBpZiBpc191cmw6CisgICAgICAgIGFyY2hpdmVfZmlsZSA9M0QgdXJsX3RvX2ZpbGUo
IGFyY2hpdmVfc291cmNlLCB0ZW1wZmlsZS5OYW1lZFRlbXBvcj0KYXJ5RmlsZSggZGlyPTNEZGVz
dF9kaXIgKS5uYW1lICkKKyAgICBlbGlmIGlzX2ZpbGU6CisgICAgICAgIGFyY2hpdmVfZmlsZSA9
M0QgYXJjaGl2ZV9zb3VyY2UKKworICAgICMgVW5wYWNrIGFyY2hpdmUuCisgICAgY2hlY2tfYXJj
aGl2ZSggYXJjaGl2ZV9maWxlLCBkZXN0X2RpciApCisgICAgdW5wYWNrX2FyY2hpdmUoIGFyY2hp
dmVfZmlsZSwgZGVzdF9kaXIgKQorCisKK2lmIF9fbmFtZV9fID0zRD0zRCAiX19tYWluX18iOgor
ICAgICMgUGFyc2UgY29tbWFuZCBsaW5lLgorICAgIHBhcnNlciA9M0Qgb3B0cGFyc2UuT3B0aW9u
UGFyc2VyKCkKKyAgICBwYXJzZXIuYWRkX29wdGlvbiggJy1VJywgJy0tdXJsJywgZGVzdD0zRCdp
c191cmwnLCBhY3Rpb249M0Qic3RvcmVfdHJ1PQplIiwgaGVscD0zRCdTb3VyY2UgaXMgYSBVUkwu
JyApCisgICAgcGFyc2VyLmFkZF9vcHRpb24oICctRicsICctLWZpbGUnLCBkZXN0PTNEJ2lzX2Zp
bGUnLCBhY3Rpb249M0Qic3RvcmVfdD0KcnVlIiwgaGVscD0zRCdTb3VyY2UgaXMgYSBVUkwuJyAp
CisgICAgcGFyc2VyLmFkZF9vcHRpb24oICctZScsICctLWVuY29kZWQnLCBkZXN0PTNEJ2lzX2I2
NGVuY29kZWQnLCBhY3Rpb249Cj0zRCJzdG9yZV90cnVlIiwgZGVmYXVsdD0zREZhbHNlLCBoZWxw
PTNEJ1NvdXJjZSBhbmQgZGVzdGluYXRpb24gZGlyIHZhbHVlcz0KIGFyZSBiYXNlNjQgZW5jb2Rl
ZC4nICkKKyAgICAob3B0aW9ucywgYXJncykgPTNEIHBhcnNlci5wYXJzZV9hcmdzKCkKICAgICB0
cnk6Ci0gICAgICAgICMgR2V0IGFyY2hpdmUgZnJvbSBVUkwuCi0gICAgICAgIGlmIGlzX3VybDoK
LSAgICAgICAgICAgIGFyY2hpdmVfZmlsZSA9M0QgdXJsX3RvX2ZpbGUoIGFyY2hpdmVfc291cmNl
LCB0ZW1wZmlsZS5OYW1lZFRlPQptcG9yYXJ5RmlsZSggZGlyPTNEZGVzdF9kaXIgKS5uYW1lICkK
LSAgICAgICAgZWxpZiBpc19maWxlOgotICAgICAgICAgICAgYXJjaGl2ZV9maWxlID0zRCBhcmNo
aXZlX3NvdXJjZQotCi0gICAgICAgICMgVW5wYWNrIGFyY2hpdmUuCi0gICAgICAgIHVucGFja19h
cmNoaXZlKCBhcmNoaXZlX2ZpbGUsIGRlc3RfZGlyICkKKyAgICAgICAgbWFpbihvcHRpb25zLCBh
cmdzKQogICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6CiAgICAgICAgIHByaW50ICJFcnJvciB1bnBh
Y2tpbmcgdGFyL2d6IGFyY2hpdmU6ICVzIiAlIGUsIHN5cy5zdGRlcnIKCmRpZmYgLXIgZWIxM2Qx
ODIwMWZiYmY4MzE5ZmIyYjFjMDNhMjcyZWI1NTFiN2QyNiAtciBhOTRiM2E5N2VkN2FlNjY3MmM5
YjFkYz0KODc5MjJmN2U5ZjJhNzA4NjAgbGliL2dhbGF4eS91dGlsL19faW5pdF9fLnB5Ci0tLSBh
L2xpYi9nYWxheHkvdXRpbC9fX2luaXRfXy5weQorKysgYi9saWIvZ2FsYXh5L3V0aWwvX19pbml0
X18ucHkKQEAgLTI3LDcgKzI3LDcgQEAKPTIwCiBmcm9tIGVtYWlsLk1JTUVUZXh0IGltcG9ydCBN
SU1FVGV4dAo9MjAKLWZyb20gb3MucGF0aCBpbXBvcnQgcmVscGF0aAorZnJvbSBvcy5wYXRoIGlt
cG9ydCByZWxwYXRoLCBub3JtcGF0aAogZnJvbSBoYXNobGliIGltcG9ydCBtZDUKIGZyb20gaXRl
cnRvb2xzIGltcG9ydCBpemlwCj0yMApAQCAtMTE0Myw2ICsxMTQzLDIzIEBACiBkZWYgZ2FsYXh5
X2RpcmVjdG9yeSgpOgogICAgIHJldHVybiBvcy5wYXRoLmFic3BhdGgoZ2FsYXh5X3Jvb3RfcGF0
aCkKPTIwCisKK2RlZiBzYWZlX3JlbHBhdGgocGF0aCk6CisgICAgIiIiCisgICAgR2l2ZW4gd2hh
dCB3ZSBleHBlY3QgdG8gYmUgYSByZWxhdGl2ZSBwYXRoLCBkZXRlcm1pbmUgd2hldGhlciB0aGUg
cGF0aAorICAgIHdvdWxkIGV4aXN0IGluc2lkZSB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisKKyAg
ICA6dHlwZSAgIHBhdGg6ICAgc3RyaW5nCisgICAgOnBhcmFtICBwYXRoOiAgIGEgcGF0aCB0byBj
aGVjaworICAgIDpydHlwZTogICAgICAgICBib29sCisgICAgOnJldHVybnM6ICAgICAgIGBgVHJ1
ZWBgIGlmIHBhdGggaXMgcmVsYXRpdmUgYW5kIGRvZXMgbm90IHJlZmVyZW5jZSBhID0KcGF0aAor
ICAgICAgICBpbiBhIHBhcmVudCBkaXJlY3RvcnksIGBgRmFsc2VgYCBvdGhlcndpc2UuCisgICAg
IiIiCisgICAgaWYgcGF0aC5zdGFydHN3aXRoKG9zLnNlcCkgb3Igbm9ybXBhdGgocGF0aCkuc3Rh
cnRzd2l0aChvcy5wYXJkaXIpOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICByZXR1cm4gVHJ1
ZQorCisKIGlmIF9fbmFtZV9fID0zRD0zRCAnX19tYWluX18nOgogICAgIGltcG9ydCBkb2N0ZXN0
CiAgICAgZG9jdGVzdC50ZXN0bW9kKHN5cy5tb2R1bGVzW19fbmFtZV9fXSwgdmVyYm9zZT0zREZh
bHNlKQoKZGlmZiAtciBlYjEzZDE4MjAxZmJiZjgzMTlmYjJiMWMwM2EyNzJlYjU1MWI3ZDI2IC1y
IGE5NGIzYTk3ZWQ3YWU2NjcyYzliMWRjPQo4NzkyMmY3ZTlmMmE3MDg2MCBsaWIvZ2FsYXh5L3dl
YmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL2FkbWluX3Rvb2xzaGVkLnB5Ci0tLSBhL2xpYi9nYWxh
eHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvYWRtaW5fdG9vbHNoZWQucHkKKysrIGIvbGli
L2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9hZG1pbl90b29sc2hlZC5weQpAQCAt
MzgzLDExICszODMsMTEgQEAKPTIwCiAgICAgQHdlYi5qc29uCiAgICAgQHdlYi5yZXF1aXJlX2Fk
bWluCi0gICAgZGVmIGdldF9maWxlX2NvbnRlbnRzKCBzZWxmLCB0cmFucywgZmlsZV9wYXRoICk6
CisgICAgZGVmIGdldF9maWxlX2NvbnRlbnRzKCBzZWxmLCB0cmFucywgZmlsZV9wYXRoLCByZXBv
c2l0b3J5X2lkICk6CiAgICAgICAgICMgQXZvaWQgY2FjaGluZwogICAgICAgICB0cmFucy5yZXNw
b25zZS5oZWFkZXJzWydQcmFnbWEnXSA9M0QgJ25vLWNhY2hlJwogICAgICAgICB0cmFucy5yZXNw
b25zZS5oZWFkZXJzWydFeHBpcmVzJ10gPTNEICcwJwotICAgICAgICByZXR1cm4gc3VjLmdldF9y
ZXBvc2l0b3J5X2ZpbGVfY29udGVudHMoIGZpbGVfcGF0aCApCisgICAgICAgIHJldHVybiBzdWMu
Z2V0X3JlcG9zaXRvcnlfZmlsZV9jb250ZW50cyggdHJhbnMuYXBwLCBmaWxlX3BhdGgsIHJlcD0K
b3NpdG9yeV9pZCApCj0yMAogICAgIEB3ZWIuZXhwb3NlCiAgICAgQHdlYi5yZXF1aXJlX2FkbWlu
CkBAIC05NjAsMTEgKzk2MCwxMSBAQAo9MjAKICAgICBAd2ViLmpzb24KICAgICBAd2ViLnJlcXVp
cmVfYWRtaW4KLSAgICBkZWYgb3Blbl9mb2xkZXIoIHNlbGYsIHRyYW5zLCBmb2xkZXJfcGF0aCAp
OgorICAgIGRlZiBvcGVuX2ZvbGRlciggc2VsZiwgdHJhbnMsIGZvbGRlcl9wYXRoLCByZXBvc2l0
b3J5X2lkICk6CiAgICAgICAgICMgQXZvaWQgY2FjaGluZwogICAgICAgICB0cmFucy5yZXNwb25z
ZS5oZWFkZXJzWydQcmFnbWEnXSA9M0QgJ25vLWNhY2hlJwogICAgICAgICB0cmFucy5yZXNwb25z
ZS5oZWFkZXJzWydFeHBpcmVzJ10gPTNEICcwJwotICAgICAgICByZXR1cm4gc3VjLm9wZW5fcmVw
b3NpdG9yeV9maWxlc19mb2xkZXIoIGZvbGRlcl9wYXRoICkKKyAgICAgICAgcmV0dXJuIHN1Yy5v
cGVuX3JlcG9zaXRvcnlfZmlsZXNfZm9sZGVyKCB0cmFucy5hcHAsIGZvbGRlcl9wYXRoLCByPQpl
cG9zaXRvcnlfaWQgKQo9MjAKICAgICBAd2ViLmV4cG9zZQogICAgIEB3ZWIucmVxdWlyZV9hZG1p
bgoKZGlmZiAtciBlYjEzZDE4MjAxZmJiZjgzMTlmYjJiMWMwM2EyNzJlYjU1MWI3ZDI2IC1yIGE5
NGIzYTk3ZWQ3YWU2NjcyYzliMWRjPQo4NzkyMmY3ZTlmMmE3MDg2MCBsaWIvZ2FsYXh5L3dlYmFw
cHMvZ2FsYXh5L2NvbnRyb2xsZXJzL3JlcXVlc3RzX2FkbWluLnB5Ci0tLSBhL2xpYi9nYWxheHkv
d2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvcmVxdWVzdHNfYWRtaW4ucHkKKysrIGIvbGliL2dh
bGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9yZXF1ZXN0c19hZG1pbi5weQpAQCAtNiwx
MCArNiw3IEBACiBmcm9tIGdhbGF4eSBpbXBvcnQgbW9kZWwsIHV0aWwKIGZyb20gZ2FsYXh5Lndl
Yi5mb3JtX2J1aWxkZXIgaW1wb3J0ICoKIGZyb20gLnJlcXVlc3RzX2NvbW1vbiBpbXBvcnQgUmVx
dWVzdHNHcmlkLCBpbnZhbGlkX2lkX3JlZGlyZWN0Ci1mcm9tIGdhbGF4eSBpbXBvcnQgZWdncwot
ZWdncy5yZXF1aXJlKCJhbXFwIikKLWltcG9ydCBhbXFwCi1pbXBvcnQgbG9nZ2luZywgb3MsIHBl
eHBlY3QsIENvbmZpZ1BhcnNlcgoraW1wb3J0IGxvZ2dpbmcsIG9zLCBDb25maWdQYXJzZXIKPTIw
CiBsb2cgPTNEIGxvZ2dpbmcuZ2V0TG9nZ2VyKCBfX25hbWVfXyApCj0yMApAQCAtMzUxLDE4MiAr
MzQ4LDYgQEAKICAgICAgICAgcmV0dXJuIHRyYW5zLnJlc3BvbnNlLnNlbmRfcmVkaXJlY3QoIHdl
Yi51cmxfZm9yKCBjb250cm9sbGVyPTNEJ3JlPQpxdWVzdHNfYWRtaW4nLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0zRCdt
YW5hZ2U9Cl9kYXRhc2V0cycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2FtcGxlX2lkPTNEc2FtcD0KbGVfaWQgKSApCi0gICAgQHdl
Yi5leHBvc2UKLSAgICBAd2ViLnJlcXVpcmVfYWRtaW4KLSAgICBkZWYgc2VsZWN0X2RhdGFzZXRz
X3RvX3RyYW5zZmVyKCBzZWxmLCB0cmFucywgKiprd2QgKToKLSAgICAgICAgcGFyYW1zID0zRCB1
dGlsLlBhcmFtcygga3dkICkKLSAgICAgICAgbWVzc2FnZSA9M0QgdXRpbC5yZXN0b3JlX3RleHQo
IHBhcmFtcy5nZXQoICdtZXNzYWdlJywgJycgKSApCi0gICAgICAgIHN0YXR1cyA9M0QgcGFyYW1z
LmdldCggJ3N0YXR1cycsICdkb25lJyApCi0gICAgICAgIHJlcXVlc3RfaWQgPTNEIGt3ZC5nZXQo
ICdyZXF1ZXN0X2lkJywgTm9uZSApCi0gICAgICAgIGV4dGVybmFsX3NlcnZpY2VfaWQgPTNEIGt3
ZC5nZXQoICdleHRlcm5hbF9zZXJ2aWNlX2lkJywgTm9uZSApCi0gICAgICAgIGZpbGVzID0zRCBb
XQotICAgICAgICByZXF1ZXN0ID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5tb2Rl
bC5SZXF1ZXN0ICkuZ2V0KCB0cmE9Cm5zLnNlY3VyaXR5LmRlY29kZV9pZCggcmVxdWVzdF9pZCAp
ICkKLSAgICAgICAgZXh0ZXJuYWxfc2VydmljZSA9M0QgdHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeSgg
dHJhbnMubW9kZWwuRXh0ZXJuYWxTPQplcnZpY2UgKS5nZXQoIHRyYW5zLnNlY3VyaXR5LmRlY29k
ZV9pZCggZXh0ZXJuYWxfc2VydmljZV9pZCApICkKLSAgICAgICAgIyBMb2FkIHRoZSBkYXRhIHRy
YW5zZmVyIHNldHRpbmdzCi0gICAgICAgIGV4dGVybmFsX3NlcnZpY2UubG9hZF9kYXRhX3RyYW5z
ZmVyX3NldHRpbmdzKCB0cmFucyApCi0gICAgICAgIHNjcF9jb25maWdzID0zRCBleHRlcm5hbF9z
ZXJ2aWNlLmRhdGFfdHJhbnNmZXJbIHRyYW5zLm1vZGVsLkV4dGVybj0KYWxTZXJ2aWNlLmRhdGFf
dHJhbnNmZXJfcHJvdG9jb2wuU0NQIF0KLSAgICAgICAgc2VsZWN0ZWRfZGF0YXNldHNfdG9fdHJh
bnNmZXIgPTNEIHV0aWwucmVzdG9yZV90ZXh0KCBwYXJhbXMuZ2V0KCAnPQpzZWxlY3RlZF9kYXRh
c2V0c190b190cmFuc2ZlcicsICcnICkgKQotICAgICAgICBpZiBzZWxlY3RlZF9kYXRhc2V0c190
b190cmFuc2ZlcjoKLSAgICAgICAgICAgIHNlbGVjdGVkX2RhdGFzZXRzX3RvX3RyYW5zZmVyID0z
RCBzZWxlY3RlZF9kYXRhc2V0c190b190cmFuc2ZlPQpyLnNwbGl0KCcsJykKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIHNlbGVjdGVkX2RhdGFzZXRzX3RvX3RyYW5zZmVyID0zRCBbXQotICAg
ICAgICBzYW1wbGVfaWQgPTNEIGt3ZC5nZXQoICdzYW1wbGVfaWQnLCAnbm9uZScgKQotICAgICAg
ICBzYW1wbGVfaWRfc2VsZWN0X2ZpZWxkID0zRCBzZWxmLl9fYnVpbGRfc2FtcGxlX2lkX3NlbGVj
dF9maWVsZCggdHI9CmFucywgcmVxdWVzdCwgc2FtcGxlX2lkICkKLSAgICAgICAgaWYgc2FtcGxl
X2lkICE9M0QgJ25vbmUnOgotICAgICAgICAgICAgc2FtcGxlID0zRCB0cmFucy5zYV9zZXNzaW9u
LnF1ZXJ5KCB0cmFucy5tb2RlbC5TYW1wbGUgKS5nZXQoIHQ9CnJhbnMuc2VjdXJpdHkuZGVjb2Rl
X2lkKCBzYW1wbGVfaWQgKSApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzYW1wbGUgPTNE
IE5vbmUKLSAgICAgICAgIyBUaGUgX19nZXRfZmlsZXMoKSBtZXRob2QgcmVkaXJlY3RzIGhlcmUg
d2l0aCBhIHN0YXR1cyBvZiAnZXJyb3InPQogYW5kIGEgbWVzc2FnZSBpZiB0aGVyZQotICAgICAg
ICAjIHdhcyBhIHByb2JsZW0gcmV0cmlldmluZyB0aGUgZmlsZXMuCi0gICAgICAgIGlmIHBhcmFt
cy5nZXQoICdzZWxlY3RfZGF0YXNldHNfdG9fdHJhbnNmZXJfYnV0dG9uJywgRmFsc2UgKToKLSAg
ICAgICAgICAgICMgR2V0IHRoZSBzYW1wbGUgdGhhdCB3YXMgc2VxdWVuY2VkIHRvIHByb2R1Y2Ug
dGhlc2UgZGF0YXNldHMuCi0gICAgICAgICAgICBpZiBzYW1wbGVfaWQgPTNEPTNEICdub25lJzoK
LSAgICAgICAgICAgICAgICBkZWwga3dkWyAnc2VsZWN0X2RhdGFzZXRzX3RvX3RyYW5zZmVyX2J1
dHRvbicgXQotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPTNEICdTZWxlY3QgdGhlIHNhbXBsZSB0
aGF0IHdhcyBzZXF1ZW5jZWQgdG8gcHJvZHU9CmNlIHRoZSBkYXRhc2V0cyB5b3Ugd2FudCB0byB0
cmFuc2Zlci4nCi0gICAgICAgICAgICAgICAga3dkWyAnbWVzc2FnZScgXSA9M0QgbWVzc2FnZQot
ICAgICAgICAgICAgICAgIGt3ZFsgJ3N0YXR1cycgXSA9M0QgJ2Vycm9yJwotICAgICAgICAgICAg
ICAgIHJldHVybiB0cmFucy5yZXNwb25zZS5zZW5kX3JlZGlyZWN0KCB3ZWIudXJsX2ZvciggY29u
dHJvbGw9CmVyPTNEJ3JlcXVlc3RzX2FkbWluJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0KPTNEJ3NlbGVj
dF9kYXRhc2V0c190b190cmFuc2ZlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKmt3ZCApICkKLSAgICAgICAgICAg
IGlmIG5vdCBzYW1wbGUubGlicmFyeToKLSAgICAgICAgICAgICAgICAjIERpc3BsYXkgYW4gZXJy
b3IgaWYgYSBzYW1wbGUgaGFzIGJlZW4gc2VsZWN0ZWQgdGhhdAotICAgICAgICAgICAgICAgICMg
aGFzIG5vdCB5ZXQgYmVlbiBhc3NvY2lhdGVkIHdpdGggYSBkZXN0aW5hdGlvbiBsaWJyYXJ5Lgot
ICAgICAgICAgICAgICAgIG1lc3NhZ2UgPTNEICdTZWxlY3QgYSB0YXJnZXQgZGF0YSBsaWJyYXJ5
IGFuZCBmb2xkZXIgZm9yIHQ9CmhlIHNhbXBsZSBiZWZvcmUgc2VsZWN0aW5nIHRoZSBkYXRhc2V0
cy4nCi0gICAgICAgICAgICAgICAgc3RhdHVzID0zRCAnZXJyb3InCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHRyYW5zLnJlc3BvbnNlLnNlbmRfcmVkaXJlY3QoIHdlYi51cmxfZm9yKCBjb250cm9s
bD0KZXI9M0QncmVxdWVzdHNfY29tbW9uJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0KPTNEJ2VkaXRfc2Ft
cGxlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjbnRybGxlcj0KPTNEJ3JlcXVlc3RzX2FkbWluJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlkPTNEdHJhPQpucy5zZWN1cml0eS5lbmNvZGVfaWQoIHJlcXVlc3QuaWQgKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXR1cz0KPTNEc3RhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0KPTNEbWVzc2FnZSApICkKLSAg
ICAgICAgICAgICMgU2F2ZSB0aGUgc2FtcGxlIGRhdGFzZXRzCi0gICAgICAgICAgICBzYW1wbGVf
ZGF0YXNldF9maWxlX25hbWVzID0zRCBzZWxmLl9fY3JlYXRlX3NhbXBsZV9kYXRhc2V0cyggdD0K
cmFucywgc2FtcGxlLCBzZWxlY3RlZF9kYXRhc2V0c190b190cmFuc2ZlciwgZXh0ZXJuYWxfc2Vy
dmljZSApCi0gICAgICAgICAgICBpZiBzYW1wbGVfZGF0YXNldF9maWxlX25hbWVzOgotICAgICAg
ICAgICAgICAgIG1lc3NhZ2UgPTNEICdEYXRhc2V0cyAoJXMpIGhhdmUgYmVlbiBzZWxlY3RlZCBm
b3Igc2FtcGxlICg9CiVzKScgJSBcCi0gICAgICAgICAgICAgICAgICAgICggc3RyKCBzYW1wbGVf
ZGF0YXNldF9maWxlX25hbWVzIClbMTotMV0ucmVwbGFjZSggIiciLD0KICIiICksIHNhbXBsZS5u
YW1lICkKLSAgICAgICAgICAgIHJldHVybiB0cmFucy5yZXNwb25zZS5zZW5kX3JlZGlyZWN0KCB3
ZWIudXJsX2ZvciggY29udHJvbGxlcj0KPTNEJ3JlcXVlc3RzX2FkbWluJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9u
PTNEJ21hPQpuYWdlX2RhdGFzZXRzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9pZD0KPTNEcmVxdWVzdF9pZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2FtcGxlX2lkPTNEPQpzYW1wbGVfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9M0RtZT0Kc3NhZ2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXR1cz0zRHN0YT0KdHVzICkgKQotICAgICAgICByZXR1cm4gdHJhbnMuZmlsbF90
ZW1wbGF0ZSggJy9hZG1pbi9yZXF1ZXN0cy9zZWxlY3RfZGF0YXNldHNfdG9fdHI9CmFuc2Zlci5t
YWtvJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNudHJsbGVyPTNEJ3Jl
cXVlc3RzX2FkbWluJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3Q9M0RyZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZXJu
YWxfc2VydmljZT0zRGV4dGVybmFsX3NlcnZpY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzY3BfY29uZmlncz0zRHNjcF9jb25maWdzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2FtcGxlPTNEc2FtcGxlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2FtcGxlX2lkX3NlbGVjdF9maWVsZD0zRHNhbXBsZV9pZF9zZWw9CmVj
dF9maWVsZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz0zRHN0
YXR1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9M0RtZXNz
YWdlICkKLSAgICBAd2ViLmpzb24KLSAgICBkZWYgZ2V0X2ZpbGVfZGV0YWlscyggc2VsZiwgdHJh
bnMsIHJlcXVlc3RfaWQsIGV4dGVybmFsX3NlcnZpY2VfaWQsIGZvPQpsZGVyX3BhdGggKToKLSAg
ICAgICAgZGVmIHByaW50X3RpY2tzKCBkICk6Ci0gICAgICAgICAgICAjIHBleHBlY3QgdGltZW91
dCBtZXRob2QKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgIyBBdm9pZCBjYWNoaW5nCi0gICAg
ICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ1ByYWdtYSddID0zRCAnbm8tY2FjaGUnCi0gICAg
ICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ0V4cGlyZXMnXSA9M0QgJzAnCi0gICAgICAgIHJl
cXVlc3QgPTNEIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIHRyYW5zLm1vZGVsLlJlcXVlc3QgKS5n
ZXQoIHRyYT0KbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCByZXF1ZXN0X2lkICkgKQotICAgICAgICBl
eHRlcm5hbF9zZXJ2aWNlID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5tb2RlbC5F
eHRlcm5hbFM9CmVydmljZSApLmdldCggdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBleHRlcm5h
bF9zZXJ2aWNlX2lkICkgKQotICAgICAgICBleHRlcm5hbF9zZXJ2aWNlLmxvYWRfZGF0YV90cmFu
c2Zlcl9zZXR0aW5ncyggdHJhbnMgKQotICAgICAgICBzY3BfY29uZmlncyA9M0QgZXh0ZXJuYWxf
c2VydmljZS5kYXRhX3RyYW5zZmVyWyB0cmFucy5tb2RlbC5FeHRlcm49CmFsU2VydmljZS5kYXRh
X3RyYW5zZmVyX3Byb3RvY29sLlNDUCBdCi0gICAgICAgIGNtZCAgPTNEICdzc2ggJXNAJXMgImxz
IC1vZ2hwIFwnJXNcJyInICUgKCBzY3BfY29uZmlnc1sgJ3VzZXJfbmFtZT0KJyBdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcF9jb25maWdzWyAn
aG9zdCcgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmb2xkZXJfcGF0aCApCi0gICAgICAgICMgSGFuZGxlIHRoZSBhdXRoZW50aWNhdGlvbiBtZXNz
YWdlIGlmIHNzaCBrZXlzIGFyZSBub3Qgc2V0IC0gdGhlID0KbWVzc2FnZSBpcwotICAgICAgICAj
IHNvbWV0aGluZyBsaWtlOiAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNvbnRpbnVlIGNvbm5l
Y3RpbmcgKHk9CmVzL25vKS4iCi0gICAgICAgIG91dHB1dCA9M0QgcGV4cGVjdC5ydW4oIGNtZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50cz0zRHsgJ1woeWVzXC9ub1wpXC4q
JyA6ICd5ZXNcclxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcu
c3N3b3JkOionIDogc2NwX2NvbmZpZ3NbICdwYXNzd29yPQpkJyBdICsgJ1xyXG4nLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGV4cGVjdC5USU1FT1VUIDogcHJpbnRf
dGlja3MgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9M0QxMCApCi0g
ICAgICAgIGZvciBwYXNzd29yZF9zdHIgaW4gWyAnUGFzc3dvcmQ6XHJcbicsICdwYXNzd29yZDpc
clxuJyBdOgotICAgICAgICAgICAgIyBFbGltaW5hdGUgdGhlIG91dHB1dCBjcmVhdGVkIHVzaW5n
IHNzaCBmcm9tIHRoZSB0cmVlCi0gICAgICAgICAgICBpZiBwYXNzd29yZF9zdHIgaW4gb3V0cHV0
OgotICAgICAgICAgICAgICAgIG91dHB1dCA9M0Qgb3V0cHV0LnJlcGxhY2UoIHBhc3N3b3JkX3N0
ciwgJycgKQotICAgICAgICByZXR1cm4gdW5pY29kZSggb3V0cHV0LnJlcGxhY2UoICdcclxuJywg
Jzxici8+JyApICkKLSAgICBAd2ViLmpzb24KLSAgICBkZWYgb3Blbl9mb2xkZXIoIHNlbGYsIHRy
YW5zLCByZXF1ZXN0X2lkLCBleHRlcm5hbF9zZXJ2aWNlX2lkLCBrZXkgKToKLSAgICAgICAgIyBB
dm9pZCBjYWNoaW5nCi0gICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ1ByYWdtYSddID0z
RCAnbm8tY2FjaGUnCi0gICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ0V4cGlyZXMnXSA9
M0QgJzAnCi0gICAgICAgIHJlcXVlc3QgPTNEIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIHRyYW5z
Lm1vZGVsLlJlcXVlc3QgKS5nZXQoIHRyYT0KbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCByZXF1ZXN0
X2lkICkgKQotICAgICAgICBleHRlcm5hbF9zZXJ2aWNlID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1
ZXJ5KCB0cmFucy5tb2RlbC5FeHRlcm5hbFM9CmVydmljZSApLmdldCggdHJhbnMuc2VjdXJpdHku
ZGVjb2RlX2lkKCBleHRlcm5hbF9zZXJ2aWNlX2lkICkgKQotICAgICAgICBmb2xkZXJfcGF0aCA9
M0Qga2V5Ci0gICAgICAgIGZpbGVzX2xpc3QgPTNEIHNlbGYuX19nZXRfZmlsZXMoIHRyYW5zLCBy
ZXF1ZXN0LCBleHRlcm5hbF9zZXJ2aWNlLD0KIGZvbGRlcl9wYXRoICkKLSAgICAgICAgZm9sZGVy
X2NvbnRlbnRzID0zRCBbXQotICAgICAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZXNfbGlzdDoKLSAg
ICAgICAgICAgIGlzX2ZvbGRlciA9M0QgRmFsc2UKLSAgICAgICAgICAgIGlmIGZpbGVuYW1lIGFu
ZCBmaWxlbmFtZVstMV0gPTNEPTNEIG9zLnNlcDoKLSAgICAgICAgICAgICAgICBpc19mb2xkZXIg
PTNEIFRydWUKLSAgICAgICAgICAgIGlmIGZpbGVuYW1lOgotICAgICAgICAgICAgICAgIGZ1bGxf
cGF0aCA9M0Qgb3MucGF0aC5qb2luKCBmb2xkZXJfcGF0aCwgZmlsZW5hbWUgKQotICAgICAgICAg
ICAgICAgIG5vZGUgPTNEIHsgInRpdGxlIjogZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgImlzRm9sZGVyIjogaXNfZm9sZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICJp
c0xhenkiOiBpc19mb2xkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgInRvb2x0aXAiOiBm
dWxsX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgImtleSI6IGZ1bGxfcGF0aCB9Ci0g
ICAgICAgICAgICAgICAgZm9sZGVyX2NvbnRlbnRzLmFwcGVuZCggbm9kZSApCi0gICAgICAgIHJl
dHVybiBmb2xkZXJfY29udGVudHMKLSAgICBkZWYgX19nZXRfZmlsZXMoIHNlbGYsIHRyYW5zLCBy
ZXF1ZXN0LCBleHRlcm5hbF9zZXJ2aWNlLCBmb2xkZXJfcGF0aCApOgotICAgICAgICAjIFJldHJp
ZXZlcyB0aGUgZmlsZW5hbWVzIHRvIGJlIHRyYW5zZmVycmVkIGZyb20gdGhlIHJlbW90ZSBob3N0
LgotICAgICAgICBvayA9M0QgVHJ1ZQotICAgICAgICBleHRlcm5hbF9zZXJ2aWNlLmxvYWRfZGF0
YV90cmFuc2Zlcl9zZXR0aW5ncyggdHJhbnMgKQotICAgICAgICBzY3BfY29uZmlncyA9M0QgZXh0
ZXJuYWxfc2VydmljZS5kYXRhX3RyYW5zZmVyWyB0cmFucy5tb2RlbC5FeHRlcm49CmFsU2Vydmlj
ZS5kYXRhX3RyYW5zZmVyX3Byb3RvY29sLlNDUCBdCi0gICAgICAgIGlmIG5vdCBzY3BfY29uZmln
c1sgJ2hvc3QnIF0gb3Igbm90IHNjcF9jb25maWdzWyAndXNlcl9uYW1lJyBdIG9yID0Kbm90IHNj
cF9jb25maWdzWyAncGFzc3dvcmQnIF06Ci0gICAgICAgICAgICBzdGF0dXMgPTNEICdlcnJvcicK
LSAgICAgICAgICAgIG1lc3NhZ2UgPTNEICJFcnJvciBpbiBleHRlcm5hbCBzZXJ2aWNlIGxvZ2lu
IGluZm9ybWF0aW9uLiIKLSAgICAgICAgICAgIG9rID0zRCBGYWxzZQotICAgICAgICBkZWYgcHJp
bnRfdGlja3MoIGQgKToKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgY21kICA9M0QgJ3NzaCAl
c0AlcyAibHMgLXAgXCclc1wnIicgJSAoIHNjcF9jb25maWdzWyAndXNlcl9uYW1lJyBdPQosIHNj
cF9jb25maWdzWyAnaG9zdCcgXSwgZm9sZGVyX3BhdGggKQotICAgICAgICAjIEhhbmRsZSB0aGUg
YXV0aGVudGljYXRpb24gbWVzc2FnZSBpZiBrZXlzIGFyZSBub3Qgc2V0IC0gdGhlIG1lc3M9CmFn
ZSBpcwotICAgICAgICAjIHNvbWV0aGluZyBsaWtlOiAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRv
IGNvbnRpbnVlIGNvbm5lY3RpbmcgKHk9CmVzL25vKS4iCi0gICAgICAgIG91dHB1dCA9M0QgcGV4
cGVjdC5ydW4oIGNtZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50cz0zRHsg
J1woeWVzXC9ub1wpXC4qJyA6ICd5ZXNcclxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJy5zc3dvcmQ6KicgOiBzY3BfY29uZmlnc1sgJ3Bhc3N3b3JkPQonIF0gKyAn
XHJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXhwZWN0LlRJ
TUVPVVQgOiBwcmludF90aWNrcyB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlt
ZW91dD0zRDEwICkKLSAgICAgICAgaWYgJ05vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnknIGluIG91
dHB1dDoKLSAgICAgICAgICAgIHN0YXR1cyA9M0QgJ2Vycm9yJwotICAgICAgICAgICAgbWVzc2Fn
ZSA9M0QgIk5vIGZvbGRlciBuYW1lZCAoJXMpIGV4aXN0cyBvbiB0aGUgZXh0ZXJuYWwgc2Vydmk9
CmNlLiIgJSBmb2xkZXJfcGF0aAotICAgICAgICAgICAgb2sgPTNEIEZhbHNlCi0gICAgICAgIGlm
IG9rOgotICAgICAgICAgICAgaWYgJ2Fzc3dvcmQ6JyBpbiBvdXRwdXQ6Ci0gICAgICAgICAgICAg
ICAgIyBFbGltaW5hdGUgdGhlIG91dHB1dCBjcmVhdGVkIHVzaW5nIHNzaCBmcm9tIHRoZSB0cmVl
Ci0gICAgICAgICAgICAgICAgb3V0cHV0X2FzX2xpc3QgPTNEIG91dHB1dC5zcGxpdGxpbmVzKClb
IDE6IF0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgb3V0cHV0X2FzX2xpc3Qg
PTNEIG91dHB1dC5zcGxpdGxpbmVzKCkKLSAgICAgICAgICAgIHJldHVybiBvdXRwdXRfYXNfbGlz
dAotICAgICAgICByZXR1cm4gdHJhbnMucmVzcG9uc2Uuc2VuZF9yZWRpcmVjdCggd2ViLnVybF9m
b3IoIGNvbnRyb2xsZXI9M0QncmU9CnF1ZXN0c19hZG1pbicsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPTNEJ3NlbGVjdD0K
X2RhdGFzZXRzX3RvX3RyYW5zZmVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X2lkPTNEdHJhPQpucy5zZWN1cml0eS5l
bmNvZGVfaWQoIHJlcXVlc3QuaWQgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlcm5hbF9zZXJ2aWNlPQpfaWQ9M0R0cmFucy5z
ZWN1cml0eS5lbmNvZGVfaWQoIGV4dGVybmFsX3NlcnZpY2UuaWQgKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9M0RzdGF0
dXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWVzc2FnZT0zRG1lc3NhZz0KZSApICkKLSAgICBkZWYgX19jcmVhdGVfc2FtcGxlX2Rh
dGFzZXRzKCBzZWxmLCB0cmFucywgc2FtcGxlLCBzZWxlY3RlZF9kYXRhc2V0c190PQpvX3RyYW5z
ZmVyLCBleHRlcm5hbF9zZXJ2aWNlICk6Ci0gICAgICAgIGV4dGVybmFsX3NlcnZpY2UubG9hZF9k
YXRhX3RyYW5zZmVyX3NldHRpbmdzKCB0cmFucyApCi0gICAgICAgIHNjcF9jb25maWdzID0zRCBl
eHRlcm5hbF9zZXJ2aWNlLmRhdGFfdHJhbnNmZXJbIHRyYW5zLm1vZGVsLkV4dGVybj0KYWxTZXJ2
aWNlLmRhdGFfdHJhbnNmZXJfcHJvdG9jb2wuU0NQIF0KLSAgICAgICAgc2FtcGxlX2RhdGFzZXRf
ZmlsZV9uYW1lcyA9M0QgW10KLSAgICAgICAgaWYgc2VsZWN0ZWRfZGF0YXNldHNfdG9fdHJhbnNm
ZXI6Ci0gICAgICAgICAgICBmb3IgZmlsZXBhdGggaW4gc2VsZWN0ZWRfZGF0YXNldHNfdG9fdHJh
bnNmZXI6Ci0gICAgICAgICAgICAgICAgIyBGSVhNRTogaGFuZGxlIGZvbGRlciBzZWxlY3Rpb24g
LSBpZ25vcmUgZm9sZGVycyBmb3Igbm93Ci0gICAgICAgICAgICAgICAgaWYgZmlsZXBhdGhbLTFd
ICE9M0Qgb3Muc2VwOgotICAgICAgICAgICAgICAgICAgICBuYW1lID0zRCBzZWxmLl9fcmVuYW1l
X2RhdGFzZXQoIHNhbXBsZSwgZmlsZXBhdGguc3BsaXQ9CiggJy8nIClbLTFdLCBzY3BfY29uZmln
cyApCi0gICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9M0QgdHJhbnMuYXBwLm1vZGVsLlNhbXBs
ZURhdGFzZXQudHJhbnNmZXJfc3RhdD0KdXMuTk9UX1NUQVJURUQKLSAgICAgICAgICAgICAgICAg
ICAgc2l6ZSA9M0Qgc2FtcGxlLmdldF91bnRyYW5zZmVycmVkX2RhdGFzZXRfc2l6ZSggZmlsZXBh
PQp0aCwgc2NwX2NvbmZpZ3MgKQotICAgICAgICAgICAgICAgICAgICBzYW1wbGVfZGF0YXNldCA9
M0QgdHJhbnMubW9kZWwuU2FtcGxlRGF0YXNldCggc2FtcGxlPQo9M0RzYW1wbGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmlsZV9wYXRoPQo9M0RmaWxlcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9M0RzPQp0YXR1cywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuYW1lPTNEbmFtPQplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX21zZz0KPTNEJycsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT0z
RHNpej0KZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleHRlcm5hbF9zPQplcnZpY2U9M0RleHRlcm5hbF9zZXJ2aWNlICkK
LSAgICAgICAgICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5hZGQoIHNhbXBsZV9kYXRhc2V0
ICkKLSAgICAgICAgICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCi0gICAgICAg
ICAgICAgICAgICAgIHNhbXBsZV9kYXRhc2V0X2ZpbGVfbmFtZXMuYXBwZW5kKCBzdHIoIHNhbXBs
ZV9kYXRhc2V0Lj0KbmFtZSApICkKLSAgICAgICAgcmV0dXJuIHNhbXBsZV9kYXRhc2V0X2ZpbGVf
bmFtZXMKICAgICBkZWYgX19yZW5hbWVfZGF0YXNldCggc2VsZiwgc2FtcGxlLCBmaWxlcGF0aCwg
c2NwX2NvbmZpZ3MgKToKICAgICAgICAgbmFtZSA9M0QgZmlsZXBhdGguc3BsaXQoICcvJyApWy0x
XQogICAgICAgICBvcHRpb25zID0zRCBzYW1wbGUucmVxdWVzdC50eXBlLnJlbmFtZV9kYXRhc2V0
X29wdGlvbnMKQEAgLTU2MSw5MCArMzgyLDYgQEAKICAgICAgICAgICAgIGZsdXNoX25lZWRlZCA9
M0QgVHJ1ZQogICAgICAgICBpZiBmbHVzaF9uZWVkZWQ6CiAgICAgICAgICAgICB0cmFucy5zYV9z
ZXNzaW9uLmZsdXNoKCkKLSAgICBkZWYgX19jcmVhdGVfZGF0YV90cmFuc2Zlcl9tZXNzYWdlcygg
c2VsZiwgdHJhbnMsIHNhbXBsZSwgc2VsZWN0ZWRfc2FtPQpwbGVfZGF0YXNldHMgKToKLSAgICAg
ICAgIiIiCi0gICAgICAgIENyZWF0ZXMgdGhlIHhtbCBtZXNzYWdlcyB0byBzZW5kIHRvIHRoZSBy
YWJiaXRtcSBzZXJ2ZXIuIEl0IHJldHVybj0KcyBhIGRpY3Rpb25hcnkgb2YgbWVzc2FnZXMKLSAg
ICAgICAga2V5ZWQgYnkgdGhlIGV4dGVybmFsIHNlcnZpY2UgdXNlZCB0byB0cmFuc2ZlciB0aGUg
ZGF0YXNldHMKLSAgICAgICAgIiIiCi0gICAgICAgICMgQ3JlYXRlIHRoZSB4bWwgbWVzc2FnZSBi
YXNlZCBvbiB0aGUgZm9sbG93aW5nIHRlbXBsYXRlCi0gICAgICAgIHhtbCA9M0QgXAotICAgICAg
ICAgICAgJycnIDxkYXRhX3RyYW5zZmVyPgotICAgICAgICAgICAgICAgICAgICA8Z2FsYXh5X2hv
c3Q+JShHQUxBWFlfSE9TVClzPC9nYWxheHlfaG9zdD4KLSAgICAgICAgICAgICAgICAgICAgPGFw
aV9rZXk+JShBUElfS0VZKXM8L2FwaV9rZXk+Ci0gICAgICAgICAgICAgICAgICAgIDxkYXRhX2hv
c3Q+JShEQVRBX0hPU1QpczwvZGF0YV9ob3N0PgotICAgICAgICAgICAgICAgICAgICA8ZGF0YV91
c2VyPiUoREFUQV9VU0VSKXM8L2RhdGFfdXNlcj4KLSAgICAgICAgICAgICAgICAgICAgPGRhdGFf
cGFzc3dvcmQ+JShEQVRBX1BBU1NXT1JEKXM8L2RhdGFfcGFzc3dvcmQ+Ci0gICAgICAgICAgICAg
ICAgICAgIDxyZXF1ZXN0X2lkPiUoUkVRVUVTVF9JRClzPC9yZXF1ZXN0X2lkPgotICAgICAgICAg
ICAgICAgICAgICA8c2FtcGxlX2lkPiUoU0FNUExFX0lEKXM8L3NhbXBsZV9pZD4KLSAgICAgICAg
ICAgICAgICAgICAgPGxpYnJhcnlfaWQ+JShMSUJSQVJZX0lEKXM8L2xpYnJhcnlfaWQ+Ci0gICAg
ICAgICAgICAgICAgICAgIDxmb2xkZXJfaWQ+JShGT0xERVJfSUQpczwvZm9sZGVyX2lkPgotICAg
ICAgICAgICAgICAgICAgICAlKERBVEFTRVRTKXMKLSAgICAgICAgICAgICAgICA8L2RhdGFfdHJh
bnNmZXI+JycnCi0gICAgICAgIGRhdGFzZXRfeG1sID0zRCBcCi0gICAgICAgICAgICAnJyc8ZGF0
YXNldD4KLSAgICAgICAgICAgICAgICAgICA8ZGF0YXNldF9pZD4lKElEKXM8L2RhdGFzZXRfaWQ+
Ci0gICAgICAgICAgICAgICAgICAgPG5hbWU+JShOQU1FKXM8L25hbWU+Ci0gICAgICAgICAgICAg
ICAgICAgPGZpbGU+JShGSUxFKXM8L2ZpbGU+Ci0gICAgICAgICAgICAgICA8L2RhdGFzZXQ+Jycn
Ci0gICAgICAgICMgSGVyZSB3ZSBncm91cCBhbGwgdGhlIHNhbXBsZV9kYXRhc2V0cyBieSB0aGUg
ZXh0ZXJuYWwgc2VydmljZSB1cz0KZWQgdG8gdHJhbnNmZXIgdGhlbS4KLSAgICAgICAgIyBUaGUg
aWRlYSBpcyB0byBidW5kbGUgdXAgdGhlIHNhbXBsZV9kYXRhc2V0cyB3aGljaCB1c2VzIHRoZSBz
YW1lPQogZXh0ZXJuYWwgc2VydmljZSBhbmQKLSAgICAgICAgIyBzZW5kIGEgc2luZ2xlIEFNUVAg
bWVzc2FnZSB0byB0aGUgZ2FsYXh5X2xpc3RlbmVyCi0gICAgICAgIGRhdGFzZXRfZWxlbWVudHMg
PTNEIHt9Ci0gICAgICAgIGZvciBzYW1wbGVfZGF0YXNldCBpbiBzZWxlY3RlZF9zYW1wbGVfZGF0
YXNldHM6Ci0gICAgICAgICAgICBleHRlcm5hbF9zZXJ2aWNlID0zRCBzYW1wbGVfZGF0YXNldC5l
eHRlcm5hbF9zZXJ2aWNlCi0gICAgICAgICAgICBpZiBzYW1wbGVfZGF0YXNldC5zdGF0dXMgPTNE
PTNEIHRyYW5zLmFwcC5tb2RlbC5TYW1wbGVEYXRhc2V0Lj0KdHJhbnNmZXJfc3RhdHVzLk5PVF9T
VEFSVEVEOgotICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRhc2V0X2VsZW1lbnRzLmhhc19rZXko
IGV4dGVybmFsX3NlcnZpY2UgKToKLSAgICAgICAgICAgICAgICAgICAgZGF0YXNldF9lbGVtZW50
c1sgZXh0ZXJuYWxfc2VydmljZSBdID0zRCAnJwotICAgICAgICAgICAgICAgIGRhdGFzZXRfZWxl
bWVudHNbIGV4dGVybmFsX3NlcnZpY2UgXSArPTNEIGRhdGFzZXRfeG1sICUgZGk9CmN0KCBJRD0z
RHN0ciggc2FtcGxlX2RhdGFzZXQuaWQgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQU1FPQo9M0RzYW1wbGVf
ZGF0YXNldC5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEU9Cj0zRHNhbXBsZV9kYXRhc2V0LmZpbGVf
cGF0aCApCi0gICAgICAgICAgICAgICAgIyB1cGRhdGUgdGhlIGRhdGFzZXQgdHJhbnNmZXIgc3Rh
dHVzCi0gICAgICAgICAgICAgICAgc2FtcGxlX2RhdGFzZXQuc3RhdHVzID0zRCB0cmFucy5hcHAu
bW9kZWwuU2FtcGxlRGF0YXNldC50cj0KYW5zZmVyX3N0YXR1cy5JTl9RVUVVRQotICAgICAgICAg
ICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uYWRkKCBzYW1wbGVfZGF0YXNldCApCi0gICAgICAgICAg
ICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCi0gICAgICAgICMgRmluYWxseSBwcmVwZW5k
IHRoZSBleHRlcm5hbCBzZXJ2aWNlIGluZm8gdG8gdGhlIHNldHMgb2Ygc2FtcGxlID0KZGF0YXNl
dHMKLSAgICAgICAgbWVzc2FnZXMgPTNEIFtdCi0gICAgICAgIGZvciBleHRlcm5hbF9zZXJ2aWNl
LCBkYXRhc2V0X2VsZW0gaW4gZGF0YXNldF9lbGVtZW50cy5pdGVtcygpOgotICAgICAgICAgICAg
ZXh0ZXJuYWxfc2VydmljZS5sb2FkX2RhdGFfdHJhbnNmZXJfc2V0dGluZ3MoIHRyYW5zICkKLSAg
ICAgICAgICAgIHNjcF9jb25maWdzID0zRCBleHRlcm5hbF9zZXJ2aWNlLmRhdGFfdHJhbnNmZXJb
IHRyYW5zLm1vZGVsLkV4PQp0ZXJuYWxTZXJ2aWNlLmRhdGFfdHJhbnNmZXJfcHJvdG9jb2wuU0NQ
IF0KLSAgICAgICAgICAgICMgQ2hlY2sgZGF0YSB0cmFuc2ZlciBzZXR0aW5ncwotICAgICAgICAg
ICAgZXJyX21zZyA9M0Qgc2VsZi5fX3ZhbGlkYXRlX2RhdGFfdHJhbnNmZXJfc2V0dGluZ3MoIHRy
YW5zLCBzYW09CnBsZS5yZXF1ZXN0LnR5cGUsIHNjcF9jb25maWdzICkKLSAgICAgICAgICAgIGlm
IGVycl9tc2c6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zLnJlc3BvbnNlLnNlbmRfcmVk
aXJlY3QoIHdlYi51cmxfZm9yKCBjb250cm9sbD0KZXI9M0QncmVxdWVzdHNfYWRtaW4nLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWN0aW9uPQo9M0QnbWFuYWdlX2RhdGFzZXRzJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZV9pPQpk
PTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBzYW1wbGUuaWQgKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1
cz0KPTNEJ2Vycm9yJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9Cj0zRGVycl9tc2cgKSApCi0gICAgICAg
ICAgICBtZXNzYWdlID0zRCB4bWwgJSBkaWN0KCBHQUxBWFlfSE9TVD0zRHRyYW5zLnJlcXVlc3Qu
aG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUElfS0VZPTNEdHJhbnMu
dXNlci5hcGlfa2V5c1swXS5rZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
REFUQV9IT1NUPTNEc2NwX2NvbmZpZ3NbICdob3N0JyBdLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERBVEFfVVNFUj0zRHNjcF9jb25maWdzWyAndXNlcl9uYW1lJyBdLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEFfUEFTU1dPUkQ9M0RzY3BfY29uZmln
c1sgJ3Bhc3N3b3JkJyA9Cl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVR
VUVTVF9JRD0zRHN0ciggc2FtcGxlLnJlcXVlc3QuaWQgKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTQU1QTEVfSUQ9M0RzdHIoIHNhbXBsZS5pZCApLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIExJQlJBUllfSUQ9M0RzdHIoIHNhbXBsZS5saWJyYXJ5Lmlk
ICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk9MREVSX0lEPTNEc3RyKCBz
YW1wbGUuZm9sZGVyLmlkICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFU
QVNFVFM9M0RkYXRhc2V0X2VsZW0gKQotICAgICAgICAgICAgbWVzc2FnZXMuYXBwZW5kKCBtZXNz
YWdlLnJlcGxhY2UoICdcbicsICcnICkucmVwbGFjZSggJ1xyJywgJyc9CiApICkKLSAgICAgICAg
cmV0dXJuIG1lc3NhZ2VzCi0gICAgZGVmIF9fdmFsaWRhdGVfZGF0YV90cmFuc2Zlcl9zZXR0aW5n
cyggc2VsZiwgdHJhbnMsIHJlcXVlc3RfdHlwZSwgc2NwXz0KY29uZmlncyApOgotICAgICAgICBl
cnJfbXNnID0zRCAnJwotICAgICAgICAjIGNoZWNrIHRoZSBleHRlcm5hbCBzZXJ2aWNlIGxvZ2lu
IGluZm8KLSAgICAgICAgaWYgbm90IHNjcF9jb25maWdzLmdldCggJ2hvc3QnLCAnJyApIFwKLSAg
ICAgICAgICAgIG9yIG5vdCBzY3BfY29uZmlncy5nZXQoICd1c2VyX25hbWUnLCAnJyApIFwKLSAg
ICAgICAgICAgIG9yIG5vdCBzY3BfY29uZmlncy5nZXQoICdwYXNzd29yZCcsICcnICk6Ci0gICAg
ICAgICAgICBlcnJfbXNnICs9M0QgIkVycm9yIGluIGV4dGVybmFsIHNlcnZpY2UgbG9naW4gaW5m
b3JtYXRpb24uICIKLSAgICAgICAgaWYgbm90IHRyYW5zLnVzZXIuYXBpX2tleXM6Ci0gICAgICAg
ICAgICBlcnJfbXNnICs9M0QgIlNldCB5b3VyIEFQSSBLZXkgaW4geW91ciBVc2VyIFByZWZlcmVu
Y2VzIHRvIHRyYT0KbnNmZXIgZGF0YXNldHMuICIKLSAgICAgICAgIyBDaGVjayBpZiBsaWJyYXJ5
X2ltcG9ydF9kaXIgaXMgc2V0Ci0gICAgICAgIGlmIG5vdCB0cmFucy5hcHAuY29uZmlnLmxpYnJh
cnlfaW1wb3J0X2RpcjoKLSAgICAgICAgICAgIGVycl9tc2cgPTNEICInVGhlIGxpYnJhcnlfaW1w
b3J0X2Rpcicgc2V0dGluZyBpcyBub3QgY29ycmVjdGx5PQogc2V0IGluIHRoZSBHYWxheHkgY29u
ZmlnIGZpbGUuICIKLSAgICAgICAgIyBDaGVjayB0aGUgUmFiYml0TVEgc2VydmVyIHNldHRpbmdz
IGluIHRoZSBjb25maWcgZmlsZQotICAgICAgICBmb3IgaywgdiBpbiB0cmFucy5hcHAuY29uZmln
LmFtcXAuaXRlbXMoKToKLSAgICAgICAgICAgIGlmIG5vdCB2OgotICAgICAgICAgICAgICAgIGVy
cl9tc2cgKz0zRCAnU2V0IFJhYmJpdE1RIHNlcnZlciBzZXR0aW5ncyBpbiB0aGUgImdhbGF4eV89
CmFtcXAiIHNlY3Rpb24gb2YgdGhlIEdhbGF4eSBjb25maWcgZmlsZSwgc3BlY2lmaWNhbGx5ICIl
cyIgaXMgbm90IHNldC4nICUgawotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIHJldHVy
biBlcnJfbXNnCiAgICAgQHdlYi5leHBvc2UKICAgICBAd2ViLnJlcXVpcmVfYWRtaW4KICAgICBk
ZWYgaW5pdGlhdGVfZGF0YV90cmFuc2Zlciggc2VsZiwgdHJhbnMsIHNhbXBsZV9pZCwgc2FtcGxl
X2RhdGFzZXRzPTNEPQpbXSwgc2FtcGxlX2RhdGFzZXRfaWQ9M0QnJyApOgpAQCAtNjg2LDM1ICs0
MjMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9CiAgICAgICAgICAgICAgICAgIGV4dGVybmFsX3Nl
cnZpY2U9M0RleHRlcm5hbF9zZXJ2aWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9CiAgICAgICAgICAg
ICAgICAgIGV4dGVybmFsX3NlcnZpY2VfdHlwZT0zRGV4dGVybmFsX3NlcnZpY2VfdHlwZSApCiAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIFRPRE86IFVzaW5nIFJhYmJpdE1xIGZvciBub3cs
IGJ1dCBlbGltaW5hdGUgdGhpcyBlbnRpcmUgYmxvYz0KayB3aGVuIHdlIHJlcGxhY2UgUmFiYml0
TXEgd2l0aCBHYWxheHkncwotICAgICAgICAgICAgIyBvd24gbWVzc2FnaW5nIGVuZ2luZS4gIFdl
J3JlIGhvbGRpbmcgb2ZmIG9uIHVzaW5nIHRoZSBuZXcgd2E9CnkgdG8gdHJhbnNmZXIgZmlsZXMg
bWFudWFsbHkgdW50aWwgd2UKLSAgICAgICAgICAgICMgaW1wbGVtZW50IGEgR2FsYXh5LXByb3By
aWV0YXJ5IG1lc3NhZ2luZyBlbmdpbmUgYmVjYXVzZSB0aGUgPQpkZWZlcnJlZCBqb2IgcGx1Z2lu
cyBjdXJyZW50bHkgcGVyZm9ybQotICAgICAgICAgICAgIyBjb25zdGFudCBkYiBoaXRzIHRvIGNo
ZWNrIGZvciBkZWZlcnJlZCBqb2JzIHRoYXQgYXJlIG5vdCBpbiA9CmEgZmluaXNoZWQgc3RhdGUu
Ci0gICAgICAgICAgICAjIENyZWF0ZSB0aGUgbWVzc2FnZQotICAgICAgICAgICAgbWVzc2FnZXMg
PTNEIHNlbGYuX19jcmVhdGVfZGF0YV90cmFuc2Zlcl9tZXNzYWdlcyggdHJhbnMsIHNhbXA9Cmxl
LCBzYW1wbGVfZGF0YXNldHMgKQotICAgICAgICAgICAgIyBTZW5kIHRoZSBtZXNzYWdlcwotICAg
ICAgICAgICAgZm9yIHJtcV9tc2cgaW4gbWVzc2FnZXM6Ci0gICAgICAgICAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgICAgICAgICBjb25uID0zRCBhbXFwLkNvbm5lY3Rpb24oIGhvc3Q9M0R0cmFu
cy5hcHAuY29uZmlnLmFtcXA9ClsgJ2hvc3QnIF0gKyAiOiIgKyB0cmFucy5hcHAuY29uZmlnLmFt
cXBbICdwb3J0JyBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1c2VyaWQ9M0R0cmFucy5hcHAuY29uZmlnLmFtcXA9ClsgJ3VzZXJpZCcgXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ9M0R0cmFucy5hcHAu
Y29uZmlnLmFtPQpxcFsgJ3Bhc3N3b3JkJyBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2aXJ0dWFsX2hvc3Q9M0R0cmFucy5hcHAuY29uZmk9CmcuYW1xcFsg
J3ZpcnR1YWxfaG9zdCcgXSkKLSAgICAgICAgICAgICAgICAgICAgY2hhbiA9M0QgY29ubi5jaGFu
bmVsKCkKLSAgICAgICAgICAgICAgICAgICAgbXNnID0zRCBhbXFwLk1lc3NhZ2UoIHJtcV9tc2cs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudF90eXBlPTNE
J3RleHQvcGxhaW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFw
cGxpY2F0aW9uX2hlYWRlcnM9M0R7ICdtc2dfdHlwZSc9CjogJ2RhdGFfdHJhbnNmZXInIH0gKQot
ICAgICAgICAgICAgICAgICAgICBtc2cucHJvcGVydGllc1sgImRlbGl2ZXJ5X21vZGUiIF0gPTNE
IDIKLSAgICAgICAgICAgICAgICAgICAgY2hhbi5iYXNpY19wdWJsaXNoKCBtc2csCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjaGFuZ2U9M0R0cmFucy5hcHAuY29u
ZmlnLmFtcXBbID0KJ2V4Y2hhbmdlJyBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJvdXRpbmdfa2V5PTNEdHJhbnMuYXBwLmNvbmZpZy5hbXE9CnBbICdyb3V0aW5n
X2tleScgXSApCi0gICAgICAgICAgICAgICAgICAgIGNoYW4uY2xvc2UoKQotICAgICAgICAgICAg
ICAgICAgICBjb25uLmNsb3NlKCkKLSAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBl
OgotICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0zRCAiRXJyb3Igc2VuZGluZyB0aGUgZGF0
YSB0cmFuc2ZlciBtZXNzYWdlIHQ9Cm8gdGhlIEdhbGF4eSBBTVFQIG1lc3NhZ2UgcXVldWU6PGJy
Lz4lcyIgJSBzdHIoZSkKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0zRCAiZXJyb3IiCi0g
ICAgICAgICAgICBpZiBub3QgbWVzc2FnZToKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0zRCAi
JWkgZGF0YXNldHMgaGF2ZSBiZWVuIHF1ZXVlZCBmb3IgdHJhbnNmZXIgZnJvPQptIHRoZSBleHRl
cm5hbCBzZXJ2aWNlLiIgJSBsZW4oIHNhbXBsZV9kYXRhc2V0cyApCi0gICAgICAgICAgICAgICAg
c3RhdHVzID0zRCAiZG9uZSIKKyAgICAgICAgICAgIG1lc3NhZ2UgPTNEICJNZXNzYWdlIHF1ZXVl
IHRyYW5zZmVyIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQsIHBsPQplYXNlIHNldCBlbmFibGVfYmV0
YV9qb2JfbWFuYWdlcnMgPTNEIFRydWUgaW4gZ2FsYXh5LmluaSIKKyAgICAgICAgICAgIHN0YXR1
cyA9M0QgImVycm9yIgogICAgICAgICByZXR1cm4gdHJhbnMucmVzcG9uc2Uuc2VuZF9yZWRpcmVj
dCggd2ViLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmU9CnF1ZXN0c19hZG1pbicsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9u
PTNEJ21hbmFnZT0KX2RhdGFzZXRzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVfaWQ9M0R0cmFuPQpzLnNlY3VyaXR5LmVu
Y29kZV9pZCggc2FtcGxlLmlkICksCgpkaWZmIC1yIGViMTNkMTgyMDFmYmJmODMxOWZiMmIxYzAz
YTI3MmViNTUxYjdkMjYgLXIgYTk0YjNhOTdlZDdhZTY2NzJjOWIxZGM9Cjg3OTIyZjdlOWYyYTcw
ODYwIGxpYi9nYWxheHkvd2ViYXBwcy90b29sX3NoZWQvY29udHJvbGxlcnMvcmVwb3NpdG9yeS5w
eQotLS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvdG9vbF9zaGVkL2NvbnRyb2xsZXJzL3JlcG9zaXRv
cnkucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL3Rvb2xfc2hlZC9jb250cm9sbGVycy9yZXBv
c2l0b3J5LnB5CkBAIC0xNjI5LDExICsxNjI5LDExIEBACiAgICAgICAgIHJldHVybiAnJwo9MjAK
ICAgICBAd2ViLmpzb24KLSAgICBkZWYgZ2V0X2ZpbGVfY29udGVudHMoIHNlbGYsIHRyYW5zLCBm
aWxlX3BhdGggKToKKyAgICBkZWYgZ2V0X2ZpbGVfY29udGVudHMoIHNlbGYsIHRyYW5zLCBmaWxl
X3BhdGgsIHJlcG9zaXRvcnlfaWQgKToKICAgICAgICAgIyBBdm9pZCBjYWNoaW5nCiAgICAgICAg
IHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ1ByYWdtYSddID0zRCAnbm8tY2FjaGUnCiAgICAgICAg
IHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ0V4cGlyZXMnXSA9M0QgJzAnCi0gICAgICAgIHJldHVy
biBzdWMuZ2V0X3JlcG9zaXRvcnlfZmlsZV9jb250ZW50cyggZmlsZV9wYXRoICkKKyAgICAgICAg
cmV0dXJuIHN1Yy5nZXRfcmVwb3NpdG9yeV9maWxlX2NvbnRlbnRzKCB0cmFucy5hcHAsIGZpbGVf
cGF0aCwgcmVwPQpvc2l0b3J5X2lkICkKPTIwCiAgICAgQHdlYi5leHBvc2UKICAgICBkZWYgZ2V0
X2Z1bmN0aW9uYWxfdGVzdF9yc3MoIHNlbGYsIHRyYW5zLCAqKmt3ZCApOgpAQCAtMjYwMCwxMSAr
MjYwMCwxMSBAQAogICAgICAgICByZXR1cm4gJycKPTIwCiAgICAgQHdlYi5qc29uCi0gICAgZGVm
IG9wZW5fZm9sZGVyKCBzZWxmLCB0cmFucywgZm9sZGVyX3BhdGggKToKKyAgICBkZWYgb3Blbl9m
b2xkZXIoIHNlbGYsIHRyYW5zLCBmb2xkZXJfcGF0aCwgcmVwb3NpdG9yeV9pZCApOgogICAgICAg
ICAjIEF2b2lkIGNhY2hpbmcKICAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVhZGVyc1snUHJhZ21h
J10gPTNEICduby1jYWNoZScKICAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVhZGVyc1snRXhwaXJl
cyddID0zRCAnMCcKLSAgICAgICAgcmV0dXJuIHN1Yy5vcGVuX3JlcG9zaXRvcnlfZmlsZXNfZm9s
ZGVyKCBmb2xkZXJfcGF0aCApCisgICAgICAgIHJldHVybiBzdWMub3Blbl9yZXBvc2l0b3J5X2Zp
bGVzX2ZvbGRlciggdHJhbnMuYXBwLCBmb2xkZXJfcGF0aCwgcj0KZXBvc2l0b3J5X2lkICkKPTIw
CiAgICAgQHdlYi5leHBvc2UKICAgICBkZWYgcHJldmlld190b29sc19pbl9jaGFuZ2VzZXQoIHNl
bGYsIHRyYW5zLCByZXBvc2l0b3J5X2lkLCAqKmt3ZCApOgoKZGlmZiAtciBlYjEzZDE4MjAxZmJi
ZjgzMTlmYjJiMWMwM2EyNzJlYjU1MWI3ZDI2IC1yIGE5NGIzYTk3ZWQ3YWU2NjcyYzliMWRjPQo4
NzkyMmY3ZTlmMmE3MDg2MCBsaWIvdG9vbF9zaGVkL3Rvb2xzL3Rvb2xfdmVyc2lvbl9tYW5hZ2Vy
LnB5Ci0tLSBhL2xpYi90b29sX3NoZWQvdG9vbHMvdG9vbF92ZXJzaW9uX21hbmFnZXIucHkKKysr
IGIvbGliL3Rvb2xfc2hlZC90b29scy90b29sX3ZlcnNpb25fbWFuYWdlci5weQpAQCAtMSw3ICsx
LDggQEAKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MKPTIwCi1mcm9tIGdhbGF4eS5tb2RlbC5v
cm0gaW1wb3J0IGFuZF8KK2Zyb20gZ2FsYXh5IGltcG9ydCBlZ2dzCitlZ2dzLnJlcXVpcmUoJ1NR
TEFsY2hlbXknKQorZnJvbSBzcWxhbGNoZW15IGltcG9ydCBhbmRfLCBvcl8KPTIwCiBmcm9tIHRv
b2xfc2hlZC51dGlsIGltcG9ydCBoZ191dGlsCiBmcm9tIHRvb2xfc2hlZC51dGlsIGltcG9ydCBz
aGVkX3V0aWxfY29tbW9uIGFzIHN1YwpAQCAtMjIsOCArMjMsOCBAQAo9MjAKICAgICBkZWYgZ2V0
X3Rvb2xfdmVyc2lvbl9hc3NvY2lhdGlvbiggc2VsZiwgcGFyZW50X3Rvb2xfdmVyc2lvbiwgdG9v
bF92ZXJzPQppb24gKToKICAgICAgICAgIiIiCi0gICAgICAgIFJldHVybiBhIFRvb2xWZXJzaW9u
QXNzb2NpYXRpb24gaWYgb25lIGV4aXN0cyB0aGF0IGFzc29jaWF0ZXMgdGhlID0KdHdvIHJlY2Vp
dmVkCi0gICAgICAgIHRvb2xfdmVyc2lvbnMgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9ubHkg
ZnJvbSBHYWxheHkuCisgICAgICAgIFJldHVybiBhIFRvb2xWZXJzaW9uQXNzb2NpYXRpb24gaWYg
b25lIGV4aXN0cyB0aGF0IGFzc29jaWF0ZXMgdGhlID0KdHdvCisgICAgICAgIHJlY2VpdmVkIHRv
b2xfdmVyc2lvbnMuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9ubHkgZnJvbSBHYWxheHkuCiAg
ICAgICAgICIiIgogICAgICAgICBjb250ZXh0ID0zRCBzZWxmLmFwcC5pbnN0YWxsX21vZGVsLmNv
bnRleHQKICAgICAgICAgcmV0dXJuIGNvbnRleHQucXVlcnkoIHNlbGYuYXBwLmluc3RhbGxfbW9k
ZWwuVG9vbFZlcnNpb25Bc3NvY2lhdGlvPQpuICkgXApAQCAtOTEsNiArOTIsMTYgQEAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRv
b2xfc2hlZF9yZXBvPQpzaXRvcnk9M0R0b29sX3NoZWRfcmVwb3NpdG9yeSApCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQuYWRkKCB0b29sX3ZlcnNpb25fdXNpbmdfcGFyZW50X2lkICkKICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC5mbHVzaCgpCisgICAgICAgICAgICAgICAgIyBSZW1v
dmUgZXhpc3Rpbmcgd3JvbmcgdG9vbCB2ZXJzaW9uIGFzc29jaWF0aW9ucyBoYXZpbmcKKyAgICAg
ICAgICAgICAgICAjIHRvb2xfdmVyc2lvbl91c2luZ19wYXJlbnRfaWQgYXMgcGFyZW50IG9yCisg
ICAgICAgICAgICAgICAgIyB0b29sX3ZlcnNpb25fdXNpbmdfdG9vbF9ndWlkIGFzIGNoaWxkLgor
ICAgICAgICAgICAgICAgIGNvbnRleHQucXVlcnkoIHNlbGYuYXBwLmluc3RhbGxfbW9kZWwuVG9v
bFZlcnNpb25Bc3NvY2lhdGk9Cm9uICkgXAorICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVy
KCBvcl8oIGFuZF8oIHNlbGYuYXBwLmluc3RhbGxfbW9kZWwuVG9vbFZlcnM9CmlvbkFzc29jaWF0
aW9uLnRhYmxlLmMucGFyZW50X2lkID0zRD0zRCB0b29sX3ZlcnNpb25fdXNpbmdfcGFyZW50X2lk
LmlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXBw
Lmluc3RhbGxfbW9kZWwuVG9vbFZlcnM9CmlvbkFzc29jaWF0aW9uLnRhYmxlLmMudG9vbF9pZCAh
PTNEIHRvb2xfdmVyc2lvbl91c2luZ190b29sX2d1aWQuaWQgKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbmRfKCBzZWxmLmFwcC5pbnN0YWxsX21vZGVsLlRvb2xWZXJz
PQppb25Bc3NvY2lhdGlvbi50YWJsZS5jLnBhcmVudF9pZCAhPTNEIHRvb2xfdmVyc2lvbl91c2lu
Z19wYXJlbnRfaWQuaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5hcHAuaW5zdGFsbF9tb2RlbC5Ub29sVmVycz0KaW9uQXNzb2NpYXRpb24udGFibGUu
Yy50b29sX2lkID0zRD0zRCB0b29sX3ZlcnNpb25fdXNpbmdfdG9vbF9ndWlkLmlkICkgKSApPQog
XAorICAgICAgICAgICAgICAgICAgICAgICAuZGVsZXRlKCkKKyAgICAgICAgICAgICAgICBjb250
ZXh0LmZsdXNoKCkKICAgICAgICAgICAgICAgICB0b29sX3ZlcnNpb25fYXNzb2NpYXRpb24gPTNE
IFwKICAgICAgICAgICAgICAgICAgICAgc2VsZi5nZXRfdG9vbF92ZXJzaW9uX2Fzc29jaWF0aW9u
KCB0b29sX3ZlcnNpb25fdXNpbmdfPQpwYXJlbnRfaWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbF92ZXJzaW9uX3VzaW5nXz0KdG9v
bF9ndWlkICkKCmRpZmYgLXIgZWIxM2QxODIwMWZiYmY4MzE5ZmIyYjFjMDNhMjcyZWI1NTFiN2Qy
NiAtciBhOTRiM2E5N2VkN2FlNjY3MmM5YjFkYz0KODc5MjJmN2U5ZjJhNzA4NjAgbGliL3Rvb2xf
c2hlZC91dGlsL3NoZWRfdXRpbF9jb21tb24ucHkKLS0tIGEvbGliL3Rvb2xfc2hlZC91dGlsL3No
ZWRfdXRpbF9jb21tb24ucHkKKysrIGIvbGliL3Rvb2xfc2hlZC91dGlsL3NoZWRfdXRpbF9jb21t
b24ucHkKQEAgLTUwOSw5ICs1MDksMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPQogICAgICAgICAg
ICAgICBjaGFuZ2VzZXRfcmV2aXNpb249M0R0ZXh0ICkKICAgICByZXR1cm4gcmVwb3NpdG9yeQo9
MjAKLWRlZiBnZXRfcmVwb3NpdG9yeV9maWxlX2NvbnRlbnRzKCBmaWxlX3BhdGggKToKK2RlZiBn
ZXRfcmVwb3NpdG9yeV9maWxlX2NvbnRlbnRzKCBhcHAsIGZpbGVfcGF0aCwgcmVwb3NpdG9yeV9p
ZCApOgogICAgICIiIlJldHVybiB0aGUgZGlzcGxheS1zYWZlIGNvbnRlbnRzIG9mIGEgcmVwb3Np
dG9yeSBmaWxlIGZvciBkaXNwbGF5IGk9Cm4gYSBicm93c2VyLiIiIgotICAgIGlmIGNoZWNrZXJz
LmlzX2d6aXAoIGZpbGVfcGF0aCApOgorICAgIHNhZmVfc3RyID0zRCAnJworICAgIGlmIG5vdCBp
c19wYXRoX3dpdGhpbl9yZXBvKCBhcHAsIGZpbGVfcGF0aCwgcmVwb3NpdG9yeV9pZCApOgorICAg
ICAgICBsb2cud2FybmluZyggJ1JlcXVlc3QgdHJpZXMgdG8gYWNjZXNzIGEgZmlsZSBvdXRzaWRl
IG9mIHRoZSByZXBvc2k9CnRvcnkgbG9jYXRpb24uIEZpbGUgcGF0aDogJXMnLCBmaWxlX3BhdGgg
KQorICAgICAgICByZXR1cm4gJ0ludmFsaWQgZmlsZSBwYXRoJworICAgICMgU3ltbGluayB0YXJn
ZXRzIGFyZSBjaGVja2VkIGJ5IGlzX3BhdGhfd2l0aGluX3JlcG8KKyAgICBpZiBvcy5wYXRoLmlz
bGluayggZmlsZV9wYXRoICk6CisgICAgICAgIHNhZmVfc3RyID0zRCAnbGluayB0bzogJyArIGJh
c2ljX3V0aWwudG9faHRtbF9zdHJpbmcoIG9zLnJlYWRsaW5rKD0KIGZpbGVfcGF0aCApICkKKyAg
ICAgICAgcmV0dXJuIHNhZmVfc3RyCisgICAgZWxpZiBjaGVja2Vycy5pc19nemlwKCBmaWxlX3Bh
dGggKToKICAgICAgICAgcmV0dXJuICc8YnIvPmd6aXAgY29tcHJlc3NlZCBmaWxlPGJyLz4nCiAg
ICAgZWxpZiBjaGVja2Vycy5pc19iejIoIGZpbGVfcGF0aCApOgogICAgICAgICByZXR1cm4gJzxi
ci8+YnoyIGNvbXByZXNzZWQgZmlsZTxici8+JwpAQCAtNTIwLDcgKzUyOCw2IEBACiAgICAgZWxp
ZiBjaGVja2Vycy5jaGVja19iaW5hcnkoIGZpbGVfcGF0aCApOgogICAgICAgICByZXR1cm4gJzxi
ci8+QmluYXJ5IGZpbGU8YnIvPicKICAgICBlbHNlOgotICAgICAgICBzYWZlX3N0ciA9M0QgJycK
ICAgICAgICAgZm9yIGksIGxpbmUgaW4gZW51bWVyYXRlKCBvcGVuKCBmaWxlX3BhdGggKSApOgog
ICAgICAgICAgICAgc2FmZV9zdHIgPTNEICclcyVzJyAlICggc2FmZV9zdHIsIGJhc2ljX3V0aWwu
dG9faHRtbF9zdHJpbmcoIGw9CmluZSApICkKICAgICAgICAgICAgICMgU3RvcCByZWFkaW5nIGFm
dGVyIHN0cmluZyBpcyBsYXJnZXIgdGhhbiBNQVhfQ09OVEVOVF9TSVpFLgpAQCAtNTMwLDYgKzUz
Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgIHV0aWwubmljZV9zaXplKCBNQVhfQ09OVEVOVF9T
SVpFICkKICAgICAgICAgICAgICAgICBzYWZlX3N0ciA9M0QgJyVzJXMnICUgKCBzYWZlX3N0ciwg
bGFyZ2Vfc3RyICkKICAgICAgICAgICAgICAgICBicmVhaworCiAgICAgICAgIGlmIGxlbiggc2Fm
ZV9zdHIgKSA+IGJhc2ljX3V0aWwuTUFYX0RJU1BMQVlfU0laRToKICAgICAgICAgICAgICMgRWxp
bWluYXRlIHRoZSBtaWRkbGUgb2YgdGhlIGZpbGUgdG8gZGlzcGxheSBhIGZpbGUgbm8gbGFyZ2Vy
PQogdGhhbiBiYXNpY191dGlsLk1BWF9ESVNQTEFZX1NJWkUuCiAgICAgICAgICAgICAjIFRoaXMg
bWF5IG5vdCBiZSBpZGVhbCBpZiB0aGUgZmlsZSBpcyBsYXJnZXIgdGhhbiBNQVhfQ09OVEVOVD0K
X1NJWkUuCkBAIC01NTAsOSArNTU4LDYgQEAKICAgICAgICAgIyBTa2lwIC5oZyBkaXJlY3Rvcmll
cwogICAgICAgICBpZiBpdGVtLnN0YXJ0c3dpdGgoICcuaGcnICk6CiAgICAgICAgICAgICBjb250
aW51ZQotICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKCBvcy5wYXRoLmpvaW4oIGZvbGRlcl9wYXRo
LCBpdGVtICkgKToKLSAgICAgICAgICAgICMgQXBwZW5kIGEgJy8nIGNoYXJhY3RlciBzbyB0aGF0
IG91ciBqcXVlcnkgZHluYXRyZWUgd2lsbCBmdW5jPQp0aW9uIHByb3Blcmx5LgotICAgICAgICAg
ICAgaXRlbSA9M0QgJyVzLycgJSBpdGVtCiAgICAgICAgIGNvbnRlbnRzLmFwcGVuZCggaXRlbSAp
CiAgICAgaWYgY29udGVudHM6CiAgICAgICAgIGNvbnRlbnRzLnNvcnQoKQpAQCAtMTAwOCwxMSAr
MTAxMywxNSBAQAogICAgICIiIgogICAgIHJldHVybiBoYXNhdHRyKCBhcHAsICJpbnN0YWxsX21v
ZGVsIiApCj0yMAotZGVmIG9wZW5fcmVwb3NpdG9yeV9maWxlc19mb2xkZXIoIGZvbGRlcl9wYXRo
ICk6CitkZWYgb3Blbl9yZXBvc2l0b3J5X2ZpbGVzX2ZvbGRlciggYXBwLCBmb2xkZXJfcGF0aCwg
cmVwb3NpdG9yeV9pZCApOgogICAgICIiIgogICAgIFJldHVybiBhIGxpc3Qgb2YgZGljdGlvbmFy
aWVzLCBlYWNoIG9mIHdoaWNoIGNvbnRhaW5zIGluZm9ybWF0aW9uIGZvciA9CmEgZmlsZSBvciBk
aXJlY3RvcnkgY29udGFpbmVkCiAgICAgd2l0aGluIGEgZGlyZWN0b3J5IGluIGEgcmVwb3NpdG9y
eSBmaWxlIGhpZXJhcmNoeS4KICAgICAiIiIKKyAgICAjIFN5bWxpbmsgdGFyZ2V0cyBhcmUgY2hl
Y2tlZCBieSBpc19wYXRoX3dpdGhpbl9yZXBvCisgICAgaWYgbm90IGlzX3BhdGhfd2l0aGluX3Jl
cG8oIGFwcCwgZm9sZGVyX3BhdGgsIHJlcG9zaXRvcnlfaWQgKToKKyAgICAgICAgbG9nLndhcm5p
bmcoICdSZXF1ZXN0IHRyaWVzIHRvIGFjY2VzcyBhIGZvbGRlciBvdXRzaWRlIG9mIHRoZSByZXBv
PQpzaXRvcnkgbG9jYXRpb24uIEZvbGRlciBwYXRoOiAlcycsIGZvbGRlcl9wYXRoICkKKyAgICAg
ICAgcmV0dXJuIFtdCiAgICAgdHJ5OgogICAgICAgICBmaWxlc19saXN0ID0zRCBnZXRfcmVwb3Np
dG9yeV9maWxlcyggZm9sZGVyX3BhdGggKQogICAgIGV4Y2VwdCBPU0Vycm9yLCBlOgpAQCAtMTAy
MiwxMCArMTAzMSwxNyBAQAogICAgIGZvbGRlcl9jb250ZW50cyA9M0QgW10KICAgICBmb3IgZmls
ZW5hbWUgaW4gZmlsZXNfbGlzdDoKICAgICAgICAgaXNfZm9sZGVyID0zRCBGYWxzZQotICAgICAg
ICBpZiBmaWxlbmFtZSBhbmQgZmlsZW5hbWVbIC0xIF0gPTNEPTNEIG9zLnNlcDoKLSAgICAgICAg
ICAgIGlzX2ZvbGRlciA9M0QgVHJ1ZQorICAgICAgICBmdWxsX3BhdGggPTNEIG9zLnBhdGguam9p
biggZm9sZGVyX3BhdGgsIGZpbGVuYW1lICkKKyAgICAgICAgaXNfbGluayA9M0Qgb3MucGF0aC5p
c2xpbmsoIGZ1bGxfcGF0aCApCisgICAgICAgIHBhdGhfaXNfd2l0aGluX3JlcG8gPTNEIGlzX3Bh
dGhfd2l0aGluX3JlcG8oIGFwcCwgZnVsbF9wYXRoLCByZXBvcz0KaXRvcnlfaWQgKQorICAgICAg
ICBpZiBpc19saW5rIGFuZCBub3QgcGF0aF9pc193aXRoaW5fcmVwbzoKKyAgICAgICAgICAgIGxv
Zy53YXJuaW5nKCAnVmFsaWQgZm9sZGVyIGNvbnRhaW5zIGEgc3ltbGluayBvdXRzaWRlIG9mIHRo
ZSByPQplcG9zaXRvcnkgbG9jYXRpb24uIExpbmsgZm91bmQgaW46ICcgKyBzdHIoIGZ1bGxfcGF0
aCApICkKICAgICAgICAgaWYgZmlsZW5hbWU6Ci0gICAgICAgICAgICBmdWxsX3BhdGggPTNEIG9z
LnBhdGguam9pbiggZm9sZGVyX3BhdGgsIGZpbGVuYW1lICkKKyAgICAgICAgICAgIGlmIG9zLnBh
dGguaXNkaXIoIGZ1bGxfcGF0aCApIGFuZCBwYXRoX2lzX3dpdGhpbl9yZXBvOgorICAgICAgICAg
ICAgICAgICMgQXBwZW5kIGEgJy8nIGNoYXJhY3RlciBzbyB0aGF0IG91ciBqcXVlcnkgZHluYXRy
ZWUgd2lsbCA9CmZ1bmN0aW9uIHByb3Blcmx5LgorICAgICAgICAgICAgICAgIGZpbGVuYW1lID0z
RCAnJXMvJyAlIGZpbGVuYW1lCisgICAgICAgICAgICAgICAgZnVsbF9wYXRoID0zRCAnJXMvJyAl
IGZ1bGxfcGF0aAorICAgICAgICAgICAgICAgIGlzX2ZvbGRlciA9M0QgVHJ1ZQogICAgICAgICAg
ICAgbm9kZSA9M0QgeyAidGl0bGUiIDogZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAi
aXNGb2xkZXIiIDogaXNfZm9sZGVyLAogICAgICAgICAgICAgICAgICAgICAgImlzTGF6eSIgOiBp
c19mb2xkZXIsCkBAIC0xMDM0LDYgKzEwNTAsMTYgQEAKICAgICAgICAgICAgIGZvbGRlcl9jb250
ZW50cy5hcHBlbmQoIG5vZGUgKQogICAgIHJldHVybiBmb2xkZXJfY29udGVudHMKPTIwCitkZWYg
aXNfcGF0aF93aXRoaW5fcmVwbyggYXBwLCBwYXRoLCByZXBvc2l0b3J5X2lkICk6CisgICAgIiIi
CisgICAgRGV0ZWN0IHdoZXRoZXIgdGhlIGdpdmVuIHBhdGggaXMgd2l0aGluIHRoZSByZXBvc2l0
b3J5IGZvbGRlIHJvbiB0aGUgZD0KaXNrLgorICAgIFVzZSB0byBmaWx0ZXIgbWFsaWNpb3VzIHN5
bWxpbmtzIHRhcmdldGluZyBvdXRzaWRlIHBhdGhzLgorICAgICIiIgorICAgIHJlcG9fcGF0aCA9
M0Qgb3MucGF0aC5hYnNwYXRoKCBnZXRfcmVwb3NpdG9yeV9ieV9pZCggYXBwLCByZXBvc2l0b3J5
X2k9CmQgKS5yZXBvX3BhdGgoIGFwcCApICkKKyAgICByZXNvbHZlZF9wYXRoID0zRCBvcy5wYXRo
LnJlYWxwYXRoKCBwYXRoICkKKyAgICByZXR1cm4gb3MucGF0aC5jb21tb25wcmVmaXgoIFsgcmVw
b19wYXRoLCByZXNvbHZlZF9wYXRoIF0gKSA9M0Q9M0QgcmVwPQpvX3BhdGgKKworCiBkZWYgcmVw
b3NpdG9yeV93YXNfcHJldmlvdXNseV9pbnN0YWxsZWQoIGFwcCwgdG9vbF9zaGVkX3VybCwgcmVw
b3NpdG9yeV9uYT0KbWUsIHJlcG9faW5mb190dXBsZSwgZnJvbV90aXA9M0RGYWxzZSApOgogICAg
ICIiIgogICAgIEZpbmQgb3V0IGlmIGEgcmVwb3NpdG9yeSBpcyBhbHJlYWR5IGluc3RhbGxlZCBp
bnRvIEdhbGF4eSAtIHRoZXJlIGFyZSA9CnNldmVyYWwgc2NlbmFyaW9zIHdoZXJlIHRoaXMKCmRp
ZmYgLXIgZWIxM2QxODIwMWZiYmY4MzE5ZmIyYjFjMDNhMjcyZWI1NTFiN2QyNiAtciBhOTRiM2E5
N2VkN2FlNjY3MmM5YjFkYz0KODc5MjJmN2U5ZjJhNzA4NjAgdGVtcGxhdGVzL2FkbWluL3JlcXVl
c3RzL3NlbGVjdF9kYXRhc2V0c190b190cmFuc2Zlci5tYWtvCi0tLSBhL3RlbXBsYXRlcy9hZG1p
bi9yZXF1ZXN0cy9zZWxlY3RfZGF0YXNldHNfdG9fdHJhbnNmZXIubWFrbworKysgL2Rldi9udWxs
CkBAIC0xLDE0OSArMCwwIEBACi08JWluaGVyaXQgZmlsZT0zRCIvYmFzZS5tYWtvIi8+Ci08JW5h
bWVzcGFjZSBmaWxlPTNEIi9tZXNzYWdlLm1ha28iIGltcG9ydD0zRCJyZW5kZXJfbXNnIiAvPgot
PCVuYW1lc3BhY2UgZmlsZT0zRCIvcmVxdWVzdHMvY29tbW9uL2NvbW1vbi5tYWtvIiBpbXBvcnQ9
M0QicmVuZGVyX3NhbXBsZV89CmRhdGFzZXRzIiAvPgotPCVuYW1lc3BhY2UgZmlsZT0zRCIvcmVx
dWVzdHMvY29tbW9uL2NvbW1vbi5tYWtvIiBpbXBvcnQ9M0QiY29tbW9uX2phdmFzY3I9CmlwdHMi
IC8+Ci0KLTwlZGVmIG5hbWU9M0QiamF2YXNjcmlwdHMoKSI+Ci0gICAke3BhcmVudC5qYXZhc2Ny
aXB0cygpfQotICAgJHtjb21tb25famF2YXNjcmlwdHMoKX0KLTwvJWRlZj4KLQotJHtoLmpzKCAi
bGlicy9qcXVlcnkvanF1ZXJ5LXVpIiwgImxpYnMvanF1ZXJ5L2pxdWVyeS5jb29raWUiLCAibGli
cy9qcXVlcnk9Ci9qcXVlcnkuZHluYXRyZWUiICl9Ci0ke2guY3NzKCAiZHluYXRyZWVfc2tpbi91
aS5keW5hdHJlZSIgKX0KLQotPHNjcmlwdCB0eXBlPTNEInRleHQvamF2YXNjcmlwdCI+Ci0gICAg
JChmdW5jdGlvbigpewotICAgICAgICAkKCIjdHJlZSIpLmFqYXhDb21wbGV0ZShmdW5jdGlvbihl
dmVudCwgWE1MSHR0cFJlcXVlc3QsIGFqYXhPcHRpb249CnMpIHsKLSAgICAgICAgICAgIF9sb2co
ImRlYnVnIiwgImFqYXhDb21wbGV0ZTogJW8iLCB0aGlzKTsgLy8gZG9tIGVsZW1lbnQgbGlzdGVu
PQppbmcKLSAgICAgICAgfSk7Ci0gICAgICAgIC8vIC0tLSBJbml0aWFsaXplIHNhbXBsZSB0cmVl
cwotICAgICAgICAkKCIjdHJlZSIpLmR5bmF0cmVlKHsKLSAgICAgICAgICAgIHRpdGxlOiAiJHtz
Y3BfY29uZmlnc1snZGF0YV9sb2NhdGlvbiddfSIsCi0gICAgICAgICAgICByb290VmlzaWJsZTog
dHJ1ZSwKLSAgICAgICAgICAgIG1pbkV4cGFuZExldmVsOiAwLCAvLyAxOiByb290IG5vZGUgaXMg
bm90IGNvbGxhcHNpYmxlCi0gICAgICAgICAgICBwZXJzaXN0OiBmYWxzZSwKLSAgICAgICAgICAg
IGNoZWNrYm94OiB0cnVlLAotICAgICAgICAgICAgc2VsZWN0TW9kZTogMywKLSAgICAgICAgICAg
IG9uUG9zdEluaXQ6IGZ1bmN0aW9uKGlzUmVsb2FkaW5nLCBpc0Vycm9yKSB7Ci0gICAgICAgICAg
ICAgICAgLy9hbGVydCgicmVsb2FkaW5nOiAiK2lzUmVsb2FkaW5nKyIsIGVycm9yOiIraXNFcnJv
cik7Ci0gICAgICAgICAgICAgICAgbG9nTXNnKCJvblBvc3RJbml0KCVvLCAlbykgLSAlbyIsIGlz
UmVsb2FkaW5nLCBpc0Vycm9yLCB0aD0KaXMpOwotICAgICAgICAgICAgICAgIC8vIFJlLWZpcmUg
b25BY3RpdmF0ZSwgc28gdGhlIHRleHQgaXMgdXBkYXRlZAotICAgICAgICAgICAgICAgIHRoaXMu
cmVhY3RpdmF0ZSgpOwotICAgICAgICAgICAgfSw9MjAKLSAgICAgICAgICAgIGZ4OiB7IGhlaWdo
dDogInRvZ2dsZSIsIGR1cmF0aW9uOiAyMDAgfSwKLSAgICAgICAgICAgIC8vIGluaXRBamF4IGlz
IGhhcmQgdG8gZmFrZSwgc28gd2UgcGFzcyB0aGUgY2hpbGRyZW4gYXMgb2JqZWN0PQogYXJyYXk6
Ci0gICAgICAgICAgICBpbml0QWpheDoge3VybDogIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNE
J3JlcXVlc3RzX2FkbWluJywgYT0KY3Rpb249M0Qnb3Blbl9mb2xkZXInICl9IiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YVR5cGU6ICJqc29uIiw9MjAKLSAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YTogeyByZXF1ZXN0X2lkOiAiJHt0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHJlPQpx
dWVzdC5pZCApfSIsIGV4dGVybmFsX3NlcnZpY2VfaWQ6ICIke3RyYW5zLnNlY3VyaXR5LmVuY29k
ZV9pZCggZXh0ZXJuYWxfc2U9CnJ2aWNlLmlkICl9Iiwga2V5OiAiJHtzY3BfY29uZmlnc1snZGF0
YV9sb2NhdGlvbiddfSIgfSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBvbkxhenlSZWFk
OiBmdW5jdGlvbihkdG5vZGUpewotICAgICAgICAgICAgICAgIGR0bm9kZS5hcHBlbmRBamF4KHsK
LSAgICAgICAgICAgICAgICAgICAgdXJsOiAiJHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmVx
dWVzdHNfYWRtaW4nLCBhY3RpPQpvbj0zRCdvcGVuX2ZvbGRlcicgKX0iLD0yMAotICAgICAgICAg
ICAgICAgICAgICBkYXRhVHlwZTogImpzb24iLAotICAgICAgICAgICAgICAgICAgICBkYXRhOiB7
IHJlcXVlc3RfaWQ6ICIke3RyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggcmVxdWU9CnN0LmlkICl9
IiwgZXh0ZXJuYWxfc2VydmljZV9pZDogIiR7dHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBleHRl
cm5hbF9zZXJ2aT0KY2UuaWQgKX0iLCBrZXk6IGR0bm9kZS5kYXRhLmtleSB9LAotICAgICAgICAg
ICAgICAgIH0pOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIG9uU2VsZWN0OiBmdW5jdGlv
bihzZWxlY3QsIGR0bm9kZSkgewotICAgICAgICAgICAgICAgIC8vIERpc3BsYXkgbGlzdCBvZiBz
ZWxlY3RlZCBub2RlcwotICAgICAgICAgICAgICAgIHZhciBzZWxOb2RlcyA9M0QgZHRub2RlLnRy
ZWUuZ2V0U2VsZWN0ZWROb2RlcygpOwotICAgICAgICAgICAgICAgIC8vIGNvbnZlcnQgdG8gdGl0
bGUva2V5IGFycmF5Ci0gICAgICAgICAgICAgICAgdmFyIHNlbEtleXMgPTNEICQubWFwKHNlbE5v
ZGVzLCBmdW5jdGlvbihub2RlKXsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUuZGF0
YS5rZXk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgZG9jdW1lbnQuc2Vs
ZWN0X2RhdGFzZXRzX3RvX3RyYW5zZmVyLnNlbGVjdGVkX2RhdGFzZXRzX3RvXz0KdHJhbnNmZXIu
dmFsdWUgPTNEIHNlbEtleXMuam9pbigiLCIpCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAg
b25BY3RpdmF0ZTogZnVuY3Rpb24oZHRub2RlKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGNlbGwg
PTNEICQoIiNmaWxlX2RldGFpbHMiKTsKLSAgICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWRfdmFs
dWU7Ci0gICAgICAgICAgICAgICAgaWYgKGR0bm9kZS5kYXRhLmtleSA9M0Q9M0QgJ3Jvb3QnKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkX3ZhbHVlID0zRCAiJHtzY3BfY29uZmlnc1sn
ZGF0YV9sb2NhdGlvbiddfS8iOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHNlbGVjdGVkX3ZhbHVlID0zRCBkdG5vZGUuZGF0YS5rZXk7Ci0gICAgICAgICAg
ICAgICAgfTsKLSAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRfdmFsdWUuY2hhckF0KHNlbGVj
dGVkX3ZhbHVlLmxlbmd0aC0xKSAhPTNEICcvPQonKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8v
IE1ha2UgYWpheCBjYWxsCi0gICAgICAgICAgICAgICAgICAgICQuYWpheCggewotICAgICAgICAg
ICAgICAgICAgICAgICAgdHlwZTogIlBPU1QiLAotICAgICAgICAgICAgICAgICAgICAgICAgdXJs
OiAiJHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmVxdWVzdHNfYWRtaW4nLCA9CmFjdGlvbj0z
RCdnZXRfZmlsZV9kZXRhaWxzJyApfSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlw
ZTogImpzb24iLAotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogeyByZXF1ZXN0X2lkOiAi
JHt0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQocmU9CnF1ZXN0LmlkKX0iLCBleHRlcm5hbF9zZXJ2
aWNlX2lkOiAiJHt0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoZXh0ZXJuYWxfc2Vydj0KaWNlLmlk
KX0iLCBmb2xkZXJfcGF0aDogc2VsZWN0ZWRfdmFsdWUgfSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHN1Y2Nlc3MgOiBmdW5jdGlvbiAoIGRhdGEgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2VsbC5odG1sKCAnPGxhYmVsPicrZGF0YSsnPC9sYWJlbD4nICkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgY2VsbC5odG1sKCAnJyApOwotICAgICAgICAg
ICAgICAgIH07Ci0gICAgICAgICAgICB9LAotICAgICAgICB9KTsKLSAgICB9KTsKLTwvc2NyaXB0
PgotCi08JQotICAgIGlzX2FkbWluID0zRCBjbnRybGxlciA9M0Q9M0QgJ3JlcXVlc3RzX2FkbWlu
JyBhbmQgdHJhbnMudXNlcl9pc19hZG1pbigpCi0gICAgY2FuX3RyYW5zZmVyX2RhdGFzZXRzID0z
RCBpc19hZG1pbiBhbmQgc2FtcGxlLnVudHJhbnNmZXJyZWRfZGF0YXNldF9maT0KbGVzIGFuZCBz
YW1wbGUubGlicmFyeSBhbmQgc2FtcGxlLmZvbGRlcgotJT4KLQotPGJyLz48YnIvPgotPHVsIGNs
YXNzPTNEIm1hbmFnZS10YWJsZS1hY3Rpb25zIj4KLSAgICA8bGk+PGEgY2xhc3M9M0QiYWN0aW9u
LWJ1dHRvbiIgaHJlZj0zRCIke2gudXJsX2ZvciggY29udHJvbGxlcj0zRCdleHRlPQpybmFsX3Nl
cnZpY2UnLCBhY3Rpb249M0Qndmlld19leHRlcm5hbF9zZXJ2aWNlJywgaWQ9M0R0cmFucy5zZWN1
cml0eS5lbmNvZGU9Cl9pZCggZXh0ZXJuYWxfc2VydmljZS5pZCApICl9Ij5FeHRlcm5hbCBzZXJ2
aWNlIGNvbmZpZ3VyYXRpb248L2E+PC9saT4KLSAgICAlaWYgY2FuX3RyYW5zZmVyX2RhdGFzZXRz
OgotICAgICAgICA8bGk+PGEgY2xhc3M9M0QiYWN0aW9uLWJ1dHRvbiIgaHJlZj0zRCIke2gudXJs
X2ZvciggY29udHJvbGxlcj0zRCc9CnJlcXVlc3RzX2FkbWluJywgYWN0aW9uPTNEJ21hbmFnZV9k
YXRhc2V0cycsIGNudHJsbGVyPTNEY250cmxsZXIsIHNhbXBsZV9pZD0KPTNEdHJhbnMuc2VjdXJp
dHkuZW5jb2RlX2lkKCBzYW1wbGUuaWQgKSApfSI+VHJhbnNmZXIgZGF0YXNldHM8L2E+PC9saT4K
LSAgICAlZW5kaWYKLSAgICA8bGk+PGEgY2xhc3M9M0QiYWN0aW9uLWJ1dHRvbiIgaHJlZj0zRCIk
e2gudXJsX2ZvciggY29udHJvbGxlcj0zRCdyZXF1PQplc3RzX2NvbW1vbicsIGFjdGlvbj0zRCd2
aWV3X3JlcXVlc3QnLCBjbnRybGxlcj0zRGNudHJsbGVyLCBpZD0zRHRyYW5zLnNlY3U9CnJpdHku
ZW5jb2RlX2lkKCByZXF1ZXN0LmlkICkgKX0iPkJyb3dzZSB0aGlzIHJlcXVlc3Q8L2E+PC9saT4K
LTwvdWw+Ci0KLSVpZiBub3Qgc2FtcGxlOgotICAgIDxici8+Ci0gICAgPGZvbnQgY29sb3I9M0Qi
cmVkIj48Yj48aT5TZWxlY3QgYSBzYW1wbGUgYmVmb3JlIHNlbGVjdGluZyBkYXRhc2V0cyB0bz0K
IHRyYW5zZmVyPC9pPjwvYj48L2ZvbnQ+Ci0gICAgPGJyLz4KLSVlbmRpZgotCi0laWYgcmVxdWVz
dC5zYW1wbGVzX3dpdGhvdXRfbGlicmFyeV9kZXN0aW5hdGlvbnM6Ci0gICAgPHA+Ci0gICAgPGZv
bnQgY29sb3I9M0QicmVkIj48Yj48aT5TZWxlY3QgYSB0YXJnZXQgZGF0YSBsaWJyYXJ5IGFuZCBm
b2xkZXIgZm9yID0KYSBzYW1wbGUgYmVmb3JlIHNlbGVjdGluZyBpdHMgZGF0YXNldHMgdG8gdHJh
bnNmZXIgZnJvbSB0aGUgZXh0ZXJuYWwgc2VydmljPQplPC9pPjwvYj48L2ZvbnQ+Ci0gICAgPC9w
PgotJWVuZGlmCi0KLSVpZiBtZXNzYWdlOgotICAgICR7cmVuZGVyX21zZyggbWVzc2FnZSwgc3Rh
dHVzICl9Ci0lZW5kaWYKLQotPGRpdiBjbGFzcz0zRCJ0b29sRm9ybSI+Ci0gICAgPGRpdiBjbGFz
cz0zRCJ0b29sRm9ybVRpdGxlIj5TZWxlY3QgZGF0YXNldHMgdG8gdHJhbnNmZXIgZnJvbSBkYXRh
IGRpcj0KZWN0b3J5IGNvbmZpZ3VyZWQgZm9yIHRoZSBleHRlcm5hbCBzZXJ2aWNlPC9kaXY+Ci0g
ICAgPGZvcm0gbmFtZT0zRCJzZWxlY3RfZGF0YXNldHNfdG9fdHJhbnNmZXIiIGlkPTNEInNlbGVj
dF9kYXRhc2V0c190b190cj0KYW5zZmVyIiBhY3Rpb249M0QiJHtoLnVybF9mb3IoIGNvbnRyb2xs
ZXI9M0QncmVxdWVzdHNfYWRtaW4nLCBhY3Rpb249M0Qnc2VsPQplY3RfZGF0YXNldHNfdG9fdHJh
bnNmZXInLCBjbnRybGxlcj0zRGNudHJsbGVyLCBleHRlcm5hbF9zZXJ2aWNlX2lkPTNEdHJhbnM9
Ci5zZWN1cml0eS5lbmNvZGVfaWQoIGV4dGVybmFsX3NlcnZpY2UuaWQgKSwgcmVxdWVzdF9pZD0z
RHRyYW5zLnNlY3VyaXR5LmVuYz0Kb2RlX2lkKCByZXF1ZXN0LmlkICkpfSIgbWV0aG9kPTNEInBv
c3QiID4KLSAgICAgICAgPGRpdiBjbGFzcz0zRCJmb3JtLXJvdyI+Ci0gICAgICAgICAgICA8bGFi
ZWw+U2FtcGxlOjwvbGFiZWw+Ci0gICAgICAgICAgICAke3NhbXBsZV9pZF9zZWxlY3RfZmllbGQu
Z2V0X2h0bWwoKX0KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9M0QidG9vbFBhcmFtSGVscCIgc3R5
bGU9M0QiY2xlYXI6IGJvdGg7Ij4KLSAgICAgICAgICAgICAgICBTZWxlY3QgdGhlIHNhbXBsZSB0
aGF0IHdhcyBzZXF1ZW5jZWQgdG8gcHJvZHVjZSB0aGUgZGF0YXNlPQp0cyB5b3Ugd2FudCB0byB0
cmFuc2Zlci4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRp
diBjbGFzcz0zRCJmb3JtLXJvdyIgPgotICAgICAgICAgICAgPGxhYmVsPlNlbGVjdCBkYXRhc2V0
cyBmcm9tIHNvdXJjZSBkYXRhIGxvY2F0aW9uIGRlZmluZWQgaW4gdGg9CmUgZXh0ZXJuYWwgc2Vy
dmljZSBjb25maWd1cmF0aW9uOjwvbGFiZWw+Ci0gICAgICAgICAgICA8ZGl2IGlkPTNEInRyZWUi
ID4KLSAgICAgICAgICAgICAgICBMb2FkaW5nLi4uCi0gICAgICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgICAgIDxpbnB1dCBpZD0zRCJzZWxlY3RlZF9kYXRhc2V0c190b190cmFuc2ZlciIgbmFtZT0z
RCJzZWxlY3RlZF9kPQphdGFzZXRzX3RvX3RyYW5zZmVyIiB0eXBlPTNEImhpZGRlbiIgc2l6ZT0z
RDQwIi8+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPTNEInRvb2xQYXJhbUhlbHAiIHN0eWxlPTNE
ImNsZWFyOiBib3RoOyI+Ci0gICAgICAgICAgICAgICAgPHVsPgotICAgICAgICAgICAgICAgICAg
ICA8bGk+Q2xpY2sgdGhlIDxiPmV4dGVybmFsIHNlcnZpY2UgY29uZmlndXJhdGlvbjwvYj4gYnU9
CnR0b24gYW5kIGNoYW5nZSB0aGUgPGI+RGF0YSBkaXJlY3Rvcnk8L2I+IHNldHRpbmcgdG8gcmVk
ZWZpbmUgdGhlIHNvdXJjZSBkYT0KdGEgbG9jYXRpb24uPC9saT4KLSAgICAgICAgICAgICAgICAg
ICAgPGxpPlNlbGVjdCBhIGZvbGRlciB0byBzZWxlY3QgYWxsIG9mIHRoZSBpbmRpdmlkdWFsIGZp
PQpsZXMgd2l0aGluIHRoYXQgZm9sZGVyLjwvbGk+Ci0gICAgICAgICAgICAgICAgICAgIDxsaT5D
bGljayB0aGUgPGI+U2VsZWN0IGRhdGFzZXRzPC9iPiBidXR0b24gd2hlbiBkZXNpcj0KZWQgZGF0
YXNldCBjaGVjayBib3hlcyBhcmUgY2hlY2tlZC48L2xpPgotICAgICAgICAgICAgICAgIDwvdWw+
Ci0gICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgID0yMAotICAgICAgICA8L2Rpdj4KLSAgICAg
ICAgPGRpdiBjbGFzcz0zRCJmb3JtLXJvdyI+Ci0gICAgICAgICAgICA8ZGl2IGlkPTNEImZpbGVf
ZGV0YWlscyIgY2xhc3M9M0QidG9vbFBhcmFtSGVscCIgc3R5bGU9M0QiY2xlYT0KcjogYm90aDti
YWNrZ3JvdW5kLWNvbG9yOiNGQUZBRkE7Ij48L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAg
IDxkaXYgY2xhc3M9M0QiZm9ybS1yb3ciPgotICAgICAgICAgICAgPGlucHV0IHR5cGU9M0Qic3Vi
bWl0IiBuYW1lPTNEInNlbGVjdF9kYXRhc2V0c190b190cmFuc2Zlcl9idXQ9CnRvbiIgdmFsdWU9
M0QiU2VsZWN0IGRhdGFzZXRzIi8+Ci0gICAgICAgIDwvZGl2PgotICAgIDwvZm9ybT4KLTwvZGl2
PgotCi0laWYgc2FtcGxlIGFuZCBzYW1wbGUuZGF0YXNldHM6Ci0gICAgPCUgdGl0bGUgPTNEICdB
bGwgc2VsZWN0ZWQgZGF0YXNldHMgZm9yICIlcyInICUgc2FtcGxlLm5hbWUgJT4KLSAgICA8cC8+
Ci0gICAgJHtyZW5kZXJfc2FtcGxlX2RhdGFzZXRzKCAncmVxdWVzdHNfYWRtaW4nLCBzYW1wbGUs
IHNhbXBsZS5kYXRhc2V0cywgdD0KaXRsZSApfQotJWVuZGlmCgpkaWZmIC1yIGViMTNkMTgyMDFm
YmJmODMxOWZiMmIxYzAzYTI3MmViNTUxYjdkMjYgLXIgYTk0YjNhOTdlZDdhZTY2NzJjOWIxZGM9
Cjg3OTIyZjdlOWYyYTcwODYwIHRlbXBsYXRlcy9hZG1pbi90b29sX3NoZWRfcmVwb3NpdG9yeS9j
b21tb24ubWFrbwotLS0gYS90ZW1wbGF0ZXMvYWRtaW4vdG9vbF9zaGVkX3JlcG9zaXRvcnkvY29t
bW9uLm1ha28KKysrIGIvdGVtcGxhdGVzL2FkbWluL3Rvb2xfc2hlZF9yZXBvc2l0b3J5L2NvbW1v
bi5tYWtvCkBAIC0yMywxNCArMjMsMTYgQEAKICAgICAgICAgICAgICAgICBmeDogeyBoZWlnaHQ6
ICJ0b2dnbGUiLCBkdXJhdGlvbjogMjAwIH0sCiAgICAgICAgICAgICAgICAgLy8gaW5pdEFqYXgg
aXMgaGFyZCB0byBmYWtlLCBzbyB3ZSBwYXNzIHRoZSBjaGlsZHJlbiBhcyBvYj0KamVjdCBhcnJh
eToKICAgICAgICAgICAgICAgICBpbml0QWpheDoge3VybDogIiR7aC51cmxfZm9yKCBjb250cm9s
bGVyPTNEJ2FkbWluX3Rvb2xzaGVkPQonLCBhY3Rpb249M0Qnb3Blbl9mb2xkZXInICl9IiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAianNvbiIsPTIwCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICBkYXRhOiB7IGZvbGRlcl9wYXRoOiAiJHtkaXJlY3RvcnlfcGF0aHxo
fSIgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAianNvbiIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IGZvbGRlcl9wYXRoOiAiJHtkaXJlY3Rvcnlf
cGF0aHxofSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlf
aWQ6ICIke3RyYW5zLnNlY3VyaXR5LmVuY29kZT0KX2lkKCByZXBvc2l0b3J5LmlkICl9IiB9LAog
ICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgb25MYXp5UmVhZDogZnVuY3Rpb24o
ZHRub2RlKXsKICAgICAgICAgICAgICAgICAgICAgZHRub2RlLmFwcGVuZEFqYXgoewotICAgICAg
ICAgICAgICAgICAgICAgICAgdXJsOiAiJHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QnYWRtaW5f
dG9vbHNoZWQnLCA9CmFjdGlvbj0zRCdvcGVuX2ZvbGRlcicgKX0iLD0yMAorICAgICAgICAgICAg
ICAgICAgICAgICAgdXJsOiAiJHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QnYWRtaW5fdG9vbHNo
ZWQnLCA9CmFjdGlvbj0zRCdvcGVuX2ZvbGRlcicgKX0iLAogICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YVR5cGU6ICJqc29uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgZm9s
ZGVyX3BhdGg6IGR0bm9kZS5kYXRhLmtleSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0
YTogeyBmb2xkZXJfcGF0aDogZHRub2RlLmRhdGEua2V5LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXBvc2l0b3J5X2lkOiAiJHt0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQ9Cigg
cmVwb3NpdG9yeS5pZCApfSIgfSwKICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
ICAgICAgfSwKICAgICAgICAgICAgICAgICBvblNlbGVjdDogZnVuY3Rpb24oc2VsZWN0LCBkdG5v
ZGUpIHsKQEAgLTU1LDcgKzU3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBl
OiAiUE9TVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAiJHtoLnVybF9mb3Io
IGNvbnRyb2xsZXI9M0QnYWRtaW5fdG9vbHNoZT0KZCcsIGFjdGlvbj0zRCdnZXRfZmlsZV9jb250
ZW50cycgKX0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAianNvbiIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogeyBmaWxlX3BhdGg6IHNlbGVjdGVk
X3ZhbHVlIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogeyBmaWxlX3BhdGg6
IHNlbGVjdGVkX3ZhbHVlLCByZXBvc2l0b3J5Xz0KaWQ6ICIke3RyYW5zLnNlY3VyaXR5LmVuY29k
ZV9pZCggcmVwb3NpdG9yeS5pZCApfSIgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dWNjZXNzIDogZnVuY3Rpb24oIGRhdGEgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNlbGwuaHRtbCggJzxsYWJlbD4nK2RhdGErJzwvbGFiZWw+JyApCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQoKZGlmZiAtciBlYjEzZDE4MjAxZmJiZjgzMTlmYjJiMWMwM2EyNzJl
YjU1MWI3ZDI2IC1yIGE5NGIzYTk3ZWQ3YWU2NjcyYzliMWRjPQo4NzkyMmY3ZTlmMmE3MDg2MCB0
ZW1wbGF0ZXMvd2ViYXBwcy9nYWxheHkvcmVxdWVzdHMvY29tbW9uL2NvbW1vbi5tYWtvCi0tLSBh
L3RlbXBsYXRlcy93ZWJhcHBzL2dhbGF4eS9yZXF1ZXN0cy9jb21tb24vY29tbW9uLm1ha28KKysr
IGIvdGVtcGxhdGVzL3dlYmFwcHMvZ2FsYXh5L3JlcXVlc3RzL2NvbW1vbi9jb21tb24ubWFrbwpA
QCAtMzMzLDcgKzMzMyw2IEBACiAgICAgICAgY2FuX2FkZF9zYW1wbGVzID0zRCBpc191bnN1Ym1p
dHRlZAogICAgIGNhbl9kZWxldGVfc2FtcGxlcyA9M0Qgbm90IGFkZGluZ19uZXdfc2FtcGxlcyBh
bmQgcmVxdWVzdC5zYW1wbGVzIGFuZCA9CiggKCBpc19hZG1pbiBhbmQgbm90IGlzX2NvbXBsZXRl
ICkgb3IgaXNfdW5zdWJtaXR0ZWQgKQogICAgIGNhbl9lZGl0X3NhbXBsZXMgPTNEIHJlcXVlc3Qu
c2FtcGxlcyBhbmQgKCBpc19hZG1pbiBvciBub3QgaXNfY29tcGxldGU9CiApCi0gICAgY2FuX3Nl
bGVjdF9kYXRhc2V0cyA9M0QgaXNfYWRtaW4gYW5kIGRpc3BsYXlhYmxlX3NhbXBsZV93aWRnZXRz
IGFuZCAoID0KaXNfc3VibWl0dGVkIG9yIGlzX2NvbXBsZXRlICkKICAgICBjYW5fdHJhbnNmZXJf
ZGF0YXNldHMgPTNEIGlzX2FkbWluIGFuZCByZXF1ZXN0LnNhbXBsZXMgYW5kIG5vdCByZXF1ZXN0
PQouaXNfcmVqZWN0ZWQKICAgICBkaXNwbGF5X2NoZWNrYm94ZXMgPTNEIG5vdCBhZGRpbmdfbmV3
X3NhbXBsZXMgYW5kICggaXNfY29tcGxldGUgb3IgaXNfPQpyZWplY3RlZCBvciBpc19zdWJtaXR0
ZWQgKQogICAgIGRpc3BsYXlfYmFyX2NvZGUgPTNEIHJlcXVlc3Quc2FtcGxlcyBhbmQgKCBpc19j
b21wbGV0ZSBvciBpc19yZWplY3RlZCA9Cm9yIGlzX3N1Ym1pdHRlZCApCkBAIC00MDcsNyArNDA2
LDcgQEAKICAgICAgICAgICAgICAgICAlZWxpZiBzYW1wbGU6CiAgICAgICAgICAgICAgICAgICAg
IDx0cj48dGQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJWlmIHNhbXBsZS5zdGF0ZSBh
bmQgKCBjYW5fc2VsZWN0X2RhdGFzZXRzIG9yID0KY2FuX3RyYW5zZmVyX2RhdGFzZXRzICk6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJWlmIHNhbXBsZS5zdGF0ZSBhbmQgY2FuX3RyYW5z
ZmVyX2RhdGFzZXRzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIyBBIHNhbXBs
ZSB3aWxsIGhhdmUgYSBzdGF0ZSBvbmx5IGFmdGVyIHQ9CmhlIHJlcXVlc3QgaGFzIGJlZW4gc3Vi
bWl0dGVkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8JQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlZF9pZCA9M0QgdHJhbnMuc2VjdXJpdHkuZW5j
b2RlX2k9CmQoIHNhbXBsZS5pZCApCkBAIC00MTksMTQgKzQxOCw2IEBACiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0zRCJ2aWV3LWluZm8iIGhyZWY9M0QiJHto
LnVybD0KX2ZvciggY29udHJvbGxlcj0zRCdyZXF1ZXN0c19jb21tb24nLCBhY3Rpb249M0Qndmll
d19zYW1wbGUnLCBjbnRybGxlcj0zRGNuPQp0cmxsZXIsIGlkPTNEdHJhbnMuc2VjdXJpdHkuZW5j
b2RlX2lkKCBzYW1wbGUuaWQgKSApfSI+JHtzYW1wbGUubmFtZSB8IGh9PC89CmE+PC9kaXY+PGRp
diBwb3B1cG1lbnU9M0Qic2FtcGxlLSR7c2FtcGxlLmlkfS1wb3B1cCI+Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAlaWYgY2FuX3NlbGVjdF9kYXRhc2V0czoKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlZm9yIGV4dGVybmFsX3NlcnZpY2UgaW4g
c2FtcGxlLnJlPQpxdWVzdC50eXBlLmdldF9leHRlcm5hbF9zZXJ2aWNlc19mb3JfbWFudWFsX2Rh
dGFfdHJhbnNmZXIoIHRyYW5zICk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDwlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtZW51X2l0ZW1fbGFiZWwgPTNEICJTZWxlYz0KdCBkYXRhc2V0cyB0byB0cmFuc2ZlciB1
c2luZyAlcyIgJSBleHRlcm5hbF9zZXJ2aWNlLm5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPGxpPjxhIGNsYXNzPTNEImFjdGlvbi1idXR0b24iPQogaHJlZj0zRCIke2gu
dXJsX2ZvciggY29udHJvbGxlcj0zRCdyZXF1ZXN0c19hZG1pbicsIGFjdGlvbj0zRCdzZWxlY3Rf
ZGF0YXM9CmV0c190b190cmFuc2ZlcicsIGV4dGVybmFsX3NlcnZpY2VfaWQ9M0R0cmFucy5zZWN1
cml0eS5lbmNvZGVfaWQoIGV4dGVybmFsXz0Kc2VydmljZS5pZCApLCByZXF1ZXN0X2lkPTNEdHJh
bnMuc2VjdXJpdHkuZW5jb2RlX2lkKCByZXF1ZXN0LmlkICksIHNhbXBsZV9pPQpkPTNEdHJhbnMu
c2VjdXJpdHkuZW5jb2RlX2lkKCBzYW1wbGUuaWQgKSApfSI+JHttZW51X2l0ZW1fbGFiZWx9PC9h
PjwvbGk+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJWVuZGZvcgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJWVuZGlmCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAlaWYgc2FtcGxlLmRhdGFzZXRzIGFuZCBsZW4oIHNhbXBs
ZS5kYT0KdGFzZXRzICkgPiBsZW4oIHRyYW5zZmVycmVkX2RhdGFzZXRfZmlsZXMgKSBhbmQgc2Ft
cGxlLmxpYnJhcnkgYW5kIHNhbXBsZS5mPQpvbGRlcjoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA8bGk+PGEgY2xhc3M9M0QiYWN0aW9uLWJ1dHRvbiIgaHJlPQpmPTNE
IiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJ3JlcXVlc3RzX2FkbWluJywgYWN0aW9uPTNEJ21h
bmFnZV9kYXRhc2V0cyc9Ciwgc2FtcGxlX2lkPTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBz
YW1wbGUuaWQgKSApfSI+TWFuYWdlIHNlbGVjdGVkIGRhdD0KYXNldHM8L2E+PC9saT4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVlbGlmIHNhbXBsZS5kYXRhc2V0cyBhbmQg
bGVuKCBzYW1wbGUuPQpkYXRhc2V0cyApID0zRD0zRCBsZW4oIHRyYW5zZmVycmVkX2RhdGFzZXRf
ZmlsZXMgKToKQEAgLTY2NSw3ICs2NTYsNiBAQAogICAgICAgICAgICAgaXNfYWRtaW4gPTNEIGNu
dHJsbGVyID0zRD0zRCAncmVxdWVzdHNfYWRtaW4nIGFuZCB0cmFucy51c2VyX2k9CnNfYWRtaW4o
KQogICAgICAgICAgICAgaXNfY29tcGxldGUgPTNEIHNhbXBsZS5yZXF1ZXN0LmlzX2NvbXBsZXRl
CiAgICAgICAgICAgICBpc19zdWJtaXR0ZWQgPTNEIHNhbXBsZS5yZXF1ZXN0LmlzX3N1Ym1pdHRl
ZAotICAgICAgICAgICAgY2FuX3NlbGVjdF9kYXRhc2V0cyA9M0QgaXNfYWRtaW4gYW5kICggaXNf
Y29tcGxldGUgb3IgaXNfc3VibWk9CnR0ZWQgKQogICAgICAgICAgICAgY2FuX3RyYW5zZmVyX2Rh
dGFzZXRzID0zRCBpc19hZG1pbiBhbmQgc2FtcGxlLnVudHJhbnNmZXJyZWRfZGE9CnRhc2V0X2Zp
bGVzCiAgICAgICAgICU+CiAgICAgICAgICMjIFRoZSB0cmFuc2ZlciBzdGF0dXMgc2hvdWxkIHVw
ZGF0ZSBvbmx5IHdoZW4gdGhlIHJlcXVlc3QgaGFzIGJlZT0KbiBzdWJtaXR0ZWQgb3IgY29tcGxl
dGUKCmRpZmYgLXIgZWIxM2QxODIwMWZiYmY4MzE5ZmIyYjFjMDNhMjcyZWI1NTFiN2QyNiAtciBh
OTRiM2E5N2VkN2FlNjY3MmM5YjFkYz0KODc5MjJmN2U5ZjJhNzA4NjAgdGVtcGxhdGVzL3dlYmFw
cHMvZ2FsYXh5L3JlcXVlc3RzL2NvbW1vbi92aWV3X3JlcXVlc3RfaGlzPQp0b3J5Lm1ha28KLS0t
IGEvdGVtcGxhdGVzL3dlYmFwcHMvZ2FsYXh5L3JlcXVlc3RzL2NvbW1vbi92aWV3X3JlcXVlc3Rf
aGlzdG9yeS5tYWtvCisrKyBiL3RlbXBsYXRlcy93ZWJhcHBzL2dhbGF4eS9yZXF1ZXN0cy9jb21t
b24vdmlld19yZXF1ZXN0X2hpc3RvcnkubWFrbwpAQCAtMTEsNyArMTEsNiBAQAogICAgIGNhbl9h
ZGRfc2FtcGxlcyA9M0QgaXNfdW5zdWJtaXR0ZWQKICAgICBjYW5fZWRpdF9yZXF1ZXN0ID0zRCAo
IGlzX2FkbWluIGFuZCBub3QgaXNfY29tcGxldGUgKSBvciBpc191bnN1Ym1pdHRlZAogICAgIGNh
bl9yZWplY3QgPTNEIGlzX2FkbWluIGFuZCBpc19zdWJtaXR0ZWQKLSAgICBjYW5fc2VsZWN0X2Rh
dGFzZXRzID0zRCBpc19hZG1pbiBhbmQgKCBpc19jb21wbGV0ZSBvciBpc19zdWJtaXR0ZWQgKQog
ICAgIGNhbl9zdWJtaXRfcmVxdWVzdCA9M0QgcmVxdWVzdC5zYW1wbGVzIGFuZCBpc191bnN1Ym1p
dHRlZAogJT4KPTIwCgpkaWZmIC1yIGViMTNkMTgyMDFmYmJmODMxOWZiMmIxYzAzYTI3MmViNTUx
YjdkMjYgLXIgYTk0YjNhOTdlZDdhZTY2NzJjOWIxZGM9Cjg3OTIyZjdlOWYyYTcwODYwIHRlbXBs
YXRlcy93ZWJhcHBzL2dhbGF4eS9yZXF1ZXN0cy9jb21tb24vdmlld19zYW1wbGVfZGF0YT0Kc2V0
cy5tYWtvCi0tLSBhL3RlbXBsYXRlcy93ZWJhcHBzL2dhbGF4eS9yZXF1ZXN0cy9jb21tb24vdmll
d19zYW1wbGVfZGF0YXNldHMubWFrbworKysgYi90ZW1wbGF0ZXMvd2ViYXBwcy9nYWxheHkvcmVx
dWVzdHMvY29tbW9uL3ZpZXdfc2FtcGxlX2RhdGFzZXRzLm1ha28KQEAgLTEyLDcgKzEyLDYgQEAK
ICAgICBpc19hZG1pbiA9M0QgY250cmxsZXIgPTNEPTNEICdyZXF1ZXN0c19hZG1pbicgYW5kIHRy
YW5zLnVzZXJfaXNfYWRtaW4oKQogICAgIGlzX2NvbXBsZXRlID0zRCBzYW1wbGUucmVxdWVzdC5p
c19jb21wbGV0ZQogICAgIGlzX3N1Ym1pdHRlZCA9M0Qgc2FtcGxlLnJlcXVlc3QuaXNfc3VibWl0
dGVkCi0gICAgY2FuX3NlbGVjdF9kYXRhc2V0cyA9M0QgaXNfYWRtaW4gYW5kICggaXNfY29tcGxl
dGUgb3IgaXNfc3VibWl0dGVkICkKICAgICBjYW5fdHJhbnNmZXJfZGF0YXNldHMgPTNEIGlzX2Fk
bWluIGFuZCBzYW1wbGUudW50cmFuc2ZlcnJlZF9kYXRhc2V0X2ZpPQpsZXMgYW5kIHNhbXBsZS5s
aWJyYXJ5IGFuZCBzYW1wbGUuZm9sZGVyCiAlPgo9MjAKQEAgLTI0LDkgKzIzLDYgQEAKICAgICAl
ZW5kaWYKICAgICA8bGk+PGEgY2xhc3M9M0QiYWN0aW9uLWJ1dHRvbiIgaWQ9M0Qic2FtcGxlLSR7
c2FtcGxlLmlkfS1wb3B1cCIgY2xhc3M9Cj0zRCJtZW51YnV0dG9uIj5EYXRhc2V0IEFjdGlvbnM8
L2E+PC9saT48ZGl2IHBvcHVwbWVudT0zRCJzYW1wbGUtJHtzYW1wbGUuaT0KZH0tcG9wdXAiPgot
ICAgICAgICAlaWYgY2FuX3NlbGVjdF9kYXRhc2V0czoKLSAgICAgICAgICAgIDxsaT48YSBjbGFz
cz0zRCJhY3Rpb24tYnV0dG9uIiBocmVmPTNEIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPQo9M0Qn
cmVxdWVzdHNfYWRtaW4nLCBhY3Rpb249M0Qnc2VsZWN0X2RhdGFzZXRzX3RvX3RyYW5zZmVyJywg
Y250cmxsZXI9M0RjbnQ9CnJsbGVyLCBleHRlcm5hbF9zZXJ2aWNlX2lkPTNEdHJhbnMuc2VjdXJp
dHkuZW5jb2RlX2lkKCBleHRlcm5hbF9zZXJ2aWNlLmlkID0KKSwgcmVxdWVzdF9pZD0zRHRyYW5z
LnNlY3VyaXR5LmVuY29kZV9pZCggc2FtcGxlLnJlcXVlc3QuaWQgKSwgc2FtcGxlX2lkPTNEPQp0
cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHNhbXBsZS5pZCApICl9Ij5TZWxlY3QgbW9yZSBkYXRh
c2V0czwvYT48L2xpPgotICAgICAgICAlZW5kaWYKICAgICAgICAgPGxpPjxhIGNsYXNzPTNEImFj
dGlvbi1idXR0b24iIGhyZWY9M0QiJHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QnPQpsaWJyYXJ5
X2NvbW1vbicsIGFjdGlvbj0zRCdicm93c2VfbGlicmFyeScsIGNudHJsbGVyPTNEY250cmxsZXIs
IGlkPTNEdHJhbnM9Ci5zZWN1cml0eS5lbmNvZGVfaWQoIHNhbXBsZS5saWJyYXJ5LmlkICkgKX0i
PlZpZXcgdGFyZ2V0IERhdGEgTGlicmFyeTwvYT48Lz0KbGk+PGxpPjxhIGNsYXNzPTNEImFjdGlv
bi1idXR0b24iIGhyZWY9M0QiJHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmVxdWVzPQp0c19j
b21tb24nLCBhY3Rpb249M0Qndmlld19yZXF1ZXN0JywgY250cmxsZXI9M0RjbnRybGxlciwgaWQ9
M0R0cmFucy5zZWN1cmk9CnR5LmVuY29kZV9pZCggc2FtcGxlLnJlcXVlc3QuaWQgKSApfSI+QnJv
d3NlIHRoaXMgcmVxdWVzdDwvYT48L2xpPjwvZGl2PgoKZGlmZiAtciBlYjEzZDE4MjAxZmJiZjgz
MTlmYjJiMWMwM2EyNzJlYjU1MWI3ZDI2IC1yIGE5NGIzYTk3ZWQ3YWU2NjcyYzliMWRjPQo4Nzky
MmY3ZTlmMmE3MDg2MCB0ZW1wbGF0ZXMvd2ViYXBwcy90b29sX3NoZWQvcmVwb3NpdG9yeS9jb21t
b24ubWFrbwotLS0gYS90ZW1wbGF0ZXMvd2ViYXBwcy90b29sX3NoZWQvcmVwb3NpdG9yeS9jb21t
b24ubWFrbworKysgYi90ZW1wbGF0ZXMvd2ViYXBwcy90b29sX3NoZWQvcmVwb3NpdG9yeS9jb21t
b24ubWFrbwpAQCAtMjEsMTQgKzIxLDE0IEBACiAgICAgICAgICAgICAgICAgZng6IHsgaGVpZ2h0
OiAidG9nZ2xlIiwgZHVyYXRpb246IDIwMCB9LAogICAgICAgICAgICAgICAgIC8vIGluaXRBamF4
IGlzIGhhcmQgdG8gZmFrZSwgc28gd2UgcGFzcyB0aGUgY2hpbGRyZW4gYXMgb2I9CmplY3QgYXJy
YXk6CiAgICAgICAgICAgICAgICAgaW5pdEFqYXg6IHt1cmw6ICIke2gudXJsX2ZvciggY29udHJv
bGxlcj0zRCdyZXBvc2l0b3J5JywgYT0KY3Rpb249M0Qnb3Blbl9mb2xkZXInICl9IiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAianNvbiIsPTIwCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBkYXRhOiB7IGZvbGRlcl9wYXRoOiAiJHtyZXBvc2l0b3J5LnJlcG9fcGF0
aCggdD0KcmFucy5hcHAgKX0iIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlw
ZTogImpzb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogeyBmb2xkZXJfcGF0
aDogIiR7cmVwb3NpdG9yeS5yZXBvX3BhdGgoIHQ9CnJhbnMuYXBwICl9IiwgcmVwb3NpdG9yeV9p
ZDogIiR7dHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCByZXBvc2l0b3J5LmlkICl9Ij0KICB9LAog
ICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgb25MYXp5UmVhZDogZnVuY3Rpb24o
ZHRub2RlKXsKICAgICAgICAgICAgICAgICAgICAgZHRub2RlLmFwcGVuZEFqYXgoewotICAgICAg
ICAgICAgICAgICAgICAgICAgdXJsOiAiJHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmVwb3Np
dG9yeScsIGFjdGk9Cm9uPTNEJ29wZW5fZm9sZGVyJyApfSIsPTIwCisgICAgICAgICAgICAgICAg
ICAgICAgICB1cmw6ICIke2gudXJsX2ZvciggY29udHJvbGxlcj0zRCdyZXBvc2l0b3J5JywgYWN0
aT0Kb249M0Qnb3Blbl9mb2xkZXInICl9IiwKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFU
eXBlOiAianNvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IGZvbGRlcl9wYXRo
OiBkdG5vZGUuZGF0YS5rZXkgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgZm9s
ZGVyX3BhdGg6IGR0bm9kZS5kYXRhLmtleSwgcmVwb3NpdG9yeV9pPQpkOiAiJHt0cmFucy5zZWN1
cml0eS5lbmNvZGVfaWQoIHJlcG9zaXRvcnkuaWQgKX0iICB9LAogICAgICAgICAgICAgICAgICAg
ICB9KTsKICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIG9uU2VsZWN0OiBmdW5j
dGlvbihzZWxlY3QsIGR0bm9kZSkgewpAQCAtNjEsNyArNjEsNyBAQAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHR5cGU6ICJQT1NUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
cmw6ICIke2gudXJsX2ZvciggY29udHJvbGxlcj0zRCdyZXBvc2l0b3J5JywgPQphY3Rpb249M0Qn
Z2V0X2ZpbGVfY29udGVudHMnICl9IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh
VHlwZTogImpzb24iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgZmlsZV9w
YXRoOiBzZWxlY3RlZF92YWx1ZSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6
IHsgZmlsZV9wYXRoOiBzZWxlY3RlZF92YWx1ZSwgcmVwb3NpdG9yeV89CmlkOiAiJHt0cmFucy5z
ZWN1cml0eS5lbmNvZGVfaWQoIHJlcG9zaXRvcnkuaWQgKX0iIH0sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3VjY2VzcyA6IGZ1bmN0aW9uICggZGF0YSApIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2VsbC5odG1sKCAnPGxhYmVsPicrZGF0YSsnPC9sYWJlbD4nICkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dh
bGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzLzdjYThmMGVjYjJhZS8KQ2hhbmdlc2V0OiAgIDdj
YThmMGVjYjJhZQpCcmFuY2g6ICAgICAgcmVsZWFzZV8xNS4wMQpVc2VyOiAgICAgICAgbmF0ZWZv
bwpEYXRlOiAgICAgICAgMjAxNi0wMi0yNCAyMDo1MDowNiswMDowMApTdW1tYXJ5OiAgICAgUmVs
ZWFzZSAxNS4wMS40CkFmZmVjdGVkICM6ICAyNiBmaWxlcwoKZGlmZiAtciBjMWNjNzZmYTNkNjZl
ZmIwNzBmMTk2MzE1MWM0YWMwY2FlMDQ4ZjNmIC1yIDdjYThmMGVjYjJhZThiMWJhMmI1M2UxPQpm
ZDA5Y2NhZTQ4MTk0MGE0OSBsaWIvZ2FsYXh5L2V4Y2VwdGlvbnMvX19pbml0X18ucHkKLS0tIGEv
bGliL2dhbGF4eS9leGNlcHRpb25zL19faW5pdF9fLnB5CisrKyBiL2xpYi9nYWxheHkvZXhjZXB0
aW9ucy9fX2luaXRfXy5weQpAQCAtNjYsNiArNjYsMTEgQEAKICAgICBlcnJfY29kZSA9M0QgZXJy
b3JfY29kZXMuTUFMRk9STUVEX0lECj0yMAo9MjAKK2NsYXNzIE1hbGZvcm1lZENvbnRlbnRzKCBN
ZXNzYWdlRXhjZXB0aW9uICk6CisgICAgc3RhdHVzX2NvZGUgPTNEIDQwMAorICAgIGVycl9jb2Rl
ID0zRCBlcnJvcl9jb2Rlcy5NQUxGT1JNRURfQ09OVEVOVFMKKworCiBjbGFzcyBVbmtub3duQ29u
dGVudHNUeXBlKCBNZXNzYWdlRXhjZXB0aW9uICk6CiAgICAgc3RhdHVzX2NvZGUgPTNEIDQwMAog
ICAgIGVycl9jb2RlID0zRCBlcnJvcl9jb2Rlcy5VTktOT1dOX0NPTlRFTlRTX1RZUEUKCmRpZmYg
LXIgYzFjYzc2ZmEzZDY2ZWZiMDcwZjE5NjMxNTFjNGFjMGNhZTA0OGYzZiAtciA3Y2E4ZjBlY2Iy
YWU4YjFiYTJiNTNlMT0KZmQwOWNjYWU0ODE5NDBhNDkgbGliL2dhbGF4eS9leGNlcHRpb25zL2Vy
cm9yX2NvZGVzLmpzb24KLS0tIGEvbGliL2dhbGF4eS9leGNlcHRpb25zL2Vycm9yX2NvZGVzLmpz
b24KKysrIGIvbGliL2dhbGF4eS9leGNlcHRpb25zL2Vycm9yX2NvZGVzLmpzb24KQEAgLTU2LDEw
ICs1NiwxNSBAQAogICAgIH0sCiAgICB7CiAgICAgIm5hbWUiOiAiVVNFUl9UT09MX01FVEFfUEFS
QU1FVEVSX1BST0JMRU0iLAotICAgICJjb2RlIjogNDAwMDExLAorICAgICJjb2RlIjogNDAwMDEy
LAogICAgICJtZXNzYWdlIjogIlN1cHBsaWVkIGluY29ycmVjdCBvciBpbmNvbXBhdGlibGUgdG9v
bCBtZXRhIHBhcmFtZXRlcnMuIgogICAgfSwKICAgIHsKKyAgICAibmFtZSI6ICJNQUxGT1JNRURf
Q09OVEVOVFMiLAorICAgICJjb2RlIjogNDAwMDEzLAorICAgICJtZXNzYWdlIjogIlRoZSBjb250
ZW50cyBvZiB0aGUgcmVxdWVzdCBhcmUgbWFsZm9ybWVkLiIKKyAgICB9LAorICAgewogICAgICJu
YW1lIjogIlVTRVJfQVVUSEVOVElDQVRJT05fRkFJTEVEIiwKICAgICAiY29kZSI6IDQwMTAwMSwK
ICAgICAibWVzc2FnZSI6ICJBdXRoZW50aWNhdGlvbiBmYWlsZWQsIGludmFsaWQgY3JlZGVudGlh
bHMgc3VwcGxpZWQuIgoKZGlmZiAtciBjMWNjNzZmYTNkNjZlZmIwNzBmMTk2MzE1MWM0YWMwY2Fl
MDQ4ZjNmIC1yIDdjYThmMGVjYjJhZThiMWJhMmI1M2UxPQpmZDA5Y2NhZTQ4MTk0MGE0OSBsaWIv
Z2FsYXh5L21vZGVsL19faW5pdF9fLnB5Ci0tLSBhL2xpYi9nYWxheHkvbW9kZWwvX19pbml0X18u
cHkKKysrIGIvbGliL2dhbGF4eS9tb2RlbC9fX2luaXRfXy5weQpAQCAtNSwxNSArNSwxMSBAQAog
dGhlIHJlbGF0aW9uc2hpcCBjYXJkaW5hbGl0aWVzIGFyZSBvYnZpb3VzIChlLmcuIHByZWZlciBE
YXRhc2V0IHRvIERhdGEpCiAiIiIKPTIwCi1mcm9tIGdhbGF4eSBpbXBvcnQgZWdncwotZWdncy5y
ZXF1aXJlKCJwZXhwZWN0IikKLQogaW1wb3J0IGNvZGVjcwogaW1wb3J0IGVycm5vCiBpbXBvcnQg
bG9nZ2luZwogaW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgb3MKLWltcG9ydCBwZXhwZWN0CiBpbXBv
cnQganNvbgogaW1wb3J0IHNvY2tldAogaW1wb3J0IHRpbWUKQEAgLTM4NTgsMjcgKzM4NTQsNiBA
QAogICAgICAgICAgICAgICAgIHVudHJhbnNmZXJyZWRfZGF0YXNldHMuYXBwZW5kKCBkYXRhc2V0
ICkKICAgICAgICAgcmV0dXJuIHVudHJhbnNmZXJyZWRfZGF0YXNldHMKPTIwCi0gICAgZGVmIGdl
dF91bnRyYW5zZmVycmVkX2RhdGFzZXRfc2l6ZSggc2VsZiwgZmlsZXBhdGgsIHNjcF9jb25maWdz
ICk6Ci0gICAgICAgIGRlZiBwcmludF90aWNrcyggZCApOgotICAgICAgICAgICAgcGFzcwotICAg
ICAgICBlcnJvcl9tc2cgPTNEICdFcnJvciBlbmNvdW50ZXJlZCBpbiBkZXRlcm1pbmluZyB0aGUg
ZmlsZSBzaXplIG9mICU9CnMgb24gdGhlIGV4dGVybmFsX3NlcnZpY2UuJyAlIGZpbGVwYXRoCi0g
ICAgICAgIGlmIG5vdCBzY3BfY29uZmlnc1snaG9zdCddIG9yIG5vdCBzY3BfY29uZmlnc1sndXNl
cl9uYW1lJ10gb3Igbm90ID0Kc2NwX2NvbmZpZ3NbJ3Bhc3N3b3JkJ106Ci0gICAgICAgICAgICBy
ZXR1cm4gZXJyb3JfbXNnCi0gICAgICAgIGxvZ2luX3N0ciA9M0QgJyVzQCVzJyAlICggc2NwX2Nv
bmZpZ3NbJ3VzZXJfbmFtZSddLCBzY3BfY29uZmlnc1snaD0Kb3N0J10gKQotICAgICAgICBjbWQg
ID0zRCAnc3NoICVzICJkdSAtc2ggXCclc1wnIicgJSAoIGxvZ2luX3N0ciwgZmlsZXBhdGggKQot
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvdXRwdXQgPTNEIHBleHBlY3QucnVuKCBjbWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRzPTNEeyAnLnNzd29yZDoqJzog
c2NwX2NvbmZpZ3NbJ3Bhcz0Kc3dvcmQnXSsnXHJcbicsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGV4cGVjdC5USU1FT1VUOnByaW50X3RpY2tzfSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTNEMTAgKQotICAgICAgICBleGNl
cHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgcmV0dXJuIGVycm9yX21zZwotICAgICAgICAjIGNs
ZWFudXAgdGhlIG91dHB1dCB0byBnZXQganVzdCB0aGUgZmlsZSBzaXplCi0gICAgICAgIHJldHVy
biAgb3V0cHV0LnJlcGxhY2UoIGZpbGVwYXRoLCAnJyApXAotICAgICAgICAgICAgICAgICAgICAg
IC5yZXBsYWNlKCAnUGFzc3dvcmQ6JywgJycgKVwKLSAgICAgICAgICAgICAgICAgICAgICAucmVw
bGFjZSggIidzIHBhc3N3b3JkOiIsICcnIClcCi0gICAgICAgICAgICAgICAgICAgICAgLnJlcGxh
Y2UoIGxvZ2luX3N0ciwgJycgKVwKLSAgICAgICAgICAgICAgICAgICAgICAuc3RyaXAoKQogICAg
IEBwcm9wZXJ0eQogICAgIGRlZiBydW5fZGV0YWlscyggc2VsZiApOgogICAgICAgICAjIHNlbGYu
cnVucyBpcyBhIGxpc3Qgb2YgU2FtcGxlUnVuQXNzb2NpYXRpb25zIG9yZGVyZWQgZGVzY2VuZGlu
ZyA9Cm9uIHVwZGF0ZV90aW1lLgoKZGlmZiAtciBjMWNjNzZmYTNkNjZlZmIwNzBmMTk2MzE1MWM0
YWMwY2FlMDQ4ZjNmIC1yIDdjYThmMGVjYjJhZThiMWJhMmI1M2UxPQpmZDA5Y2NhZTQ4MTk0MGE0
OSBsaWIvZ2FsYXh5L29iamVjdHN0b3JlL19faW5pdF9fLnB5Ci0tLSBhL2xpYi9nYWxheHkvb2Jq
ZWN0c3RvcmUvX19pbml0X18ucHkKKysrIGIvbGliL2dhbGF4eS9vYmplY3RzdG9yZS9fX2luaXRf
Xy5weQpAQCAtMTEsNyArMTEsNyBAQAogaW1wb3J0IHRocmVhZGluZwogZnJvbSB4bWwuZXRyZWUg
aW1wb3J0IEVsZW1lbnRUcmVlCj0yMAotZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgdW1hc2tfZml4
X3Blcm1zLCBmb3JjZV9zeW1saW5rCitmcm9tIGdhbGF4eS51dGlsIGltcG9ydCB1bWFza19maXhf
cGVybXMsIGZvcmNlX3N5bWxpbmssIHNhZmVfcmVscGF0aAogZnJvbSBnYWxheHkuZXhjZXB0aW9u
cyBpbXBvcnQgT2JqZWN0SW52YWxpZCwgT2JqZWN0Tm90Rm91bmQKIGZyb20gZ2FsYXh5LnV0aWwu
c2xlZXBlciBpbXBvcnQgU2xlZXBlcgogZnJvbSBnYWxheHkudXRpbC5kaXJlY3RvcnlfaGFzaCBp
bXBvcnQgZGlyZWN0b3J5X2hhc2hfaWQKQEAgLTI1Niw3ICsyNTYsMTcgQEAKICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aGUgY29tcG9zZWQgZGlyZWN0b3J5IHN0cnVjdHVyZSBkb2VzIG5vdCBp
bmNsdWRlPQogYSBoYXNoIGlkCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGUuZy4sIC9maWxl
cy9kYXRhc2V0XzEwLmRhdCAob2xkKSB2cy4gL2ZpbGVzLzAwMD0KL2RhdGFzZXRfMTAuZGF0IChu
ZXcpKQogICAgICAgICAiIiIKLSAgICAgICAgYmFzZSA9M0Qgc2VsZi5leHRyYV9kaXJzLmdldChi
YXNlX2Rpciwgc2VsZi5maWxlX3BhdGgpCisgICAgICAgIGJhc2UgPTNEIG9zLnBhdGguYWJzcGF0
aChzZWxmLmV4dHJhX2RpcnMuZ2V0KGJhc2VfZGlyLCBzZWxmLmZpbGVfcD0KYXRoKSkKKyAgICAg
ICAgIyBleHRyYV9kaXIgc2hvdWxkIG5ldmVyIGJlIGNvbnN0cnVjdGVkIGZyb20gcHJvdmlkZWQg
ZGF0YSBidXQganVzdAorICAgICAgICAjIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gc2hlbmFubmln
YW5zIGFmb290CisgICAgICAgIGlmIGV4dHJhX2RpciBhbmQgZXh0cmFfZGlyICE9M0Qgb3MucGF0
aC5ub3JtcGF0aChleHRyYV9kaXIpOgorICAgICAgICAgICAgbG9nLndhcm5pbmcoJ2V4dHJhX2Rp
ciBpcyBub3Qgbm9ybWFsaXplZDogJXMnLCBleHRyYV9kaXIpCisgICAgICAgICAgICByYWlzZSBP
YmplY3RJbnZhbGlkKCJUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBpbnZhbGlkIikKKyAgICAgICAg
IyBlbnN1cmUgdGhhdCBhbnkgcGFyZW50IGRpcmVjdG9yeSByZWZlcmVuY2VzIGluIGFsdF9uYW1l
IHdvdWxkIG5vdAorICAgICAgICAjIHJlc3VsdCBpbiBhIHBhdGggbm90IGNvbnRhaW5lZCBpbiB0
aGUgZGlyZWN0b3J5IHBhdGggY29uc3RydWN0ZWQ9CiBoZXJlCisgICAgICAgIGlmIGFsdF9uYW1l
IGFuZCBub3Qgc2FmZV9yZWxwYXRoKGFsdF9uYW1lKToKKyAgICAgICAgICAgIGxvZy53YXJuaW5n
KCdhbHRfbmFtZSB3b3VsZCBsb2NhdGUgcGF0aCBvdXRzaWRlIGRpcjogJXMnLCBhbHRfPQpuYW1l
KQorICAgICAgICAgICAgcmFpc2UgT2JqZWN0SW52YWxpZCgiVGhlIHJlcXVlc3RlZCBvYmplY3Qg
aXMgaW52YWxpZCIpCiAgICAgICAgIGlmIG9sZF9zdHlsZToKICAgICAgICAgICAgIGlmIGV4dHJh
X2RpciBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBwYXRoID0zRCBvcy5wYXRoLmpvaW4o
YmFzZSwgZXh0cmFfZGlyKQpAQCAtNjIzLDkgKzYzMywxMCBAQAogICAgIGVsaWYgc3RvcmUgPTNE
PTNEICdpcm9kcyc6CiAgICAgICAgIGZyb20gLnJvZHMgaW1wb3J0IElST0RTT2JqZWN0U3RvcmUK
ICAgICAgICAgcmV0dXJuIElST0RTT2JqZWN0U3RvcmUoY29uZmlnPTNEY29uZmlnLCBjb25maWdf
eG1sPTNEY29uZmlnX3htbCkKLSAgICBlbGlmIHN0b3JlID0zRD0zRCAncHVsc2FyJzoKLSAgICAg
ICAgZnJvbSAucHVsc2FyIGltcG9ydCBQdWxzYXJPYmplY3RTdG9yZQotICAgICAgICByZXR1cm4g
UHVsc2FyT2JqZWN0U3RvcmUoY29uZmlnPTNEY29uZmlnLCBjb25maWdfeG1sPTNEY29uZmlnX3ht
bCkKKyAgICAjIERpc2FibGUgdGhlIFB1bHNhciBvYmplY3Qgc3RvcmUgZm9yIG5vdyB1bnRpbCBp
dCByZWNlaXZlcyBzb21lIGF0dGVuPQp0aW9uCisgICAgIyBlbGlmIHN0b3JlID0zRD0zRCAncHVs
c2FyJzoKKyAgICAjICAgIGZyb20gLnB1bHNhciBpbXBvcnQgUHVsc2FyT2JqZWN0U3RvcmUKKyAg
ICAjICAgIHJldHVybiBQdWxzYXJPYmplY3RTdG9yZShjb25maWc9M0Rjb25maWcsIGNvbmZpZ194
bWw9M0Rjb25maWdfeG1sKQogICAgIGVsc2U6CiAgICAgICAgIGxvZy5lcnJvcigiVW5yZWNvZ25p
emVkIG9iamVjdCBzdG9yZSBkZWZpbml0aW9uOiB7MH0iLmZvcm1hdChzdG9yZT0KKSkKPTIwCgpk
aWZmIC1yIGMxY2M3NmZhM2Q2NmVmYjA3MGYxOTYzMTUxYzRhYzBjYWUwNDhmM2YgLXIgN2NhOGYw
ZWNiMmFlOGIxYmEyYjUzZTE9CmZkMDljY2FlNDgxOTQwYTQ5IGxpYi9nYWxheHkvb2JqZWN0c3Rv
cmUvcm9kcy5weQotLS0gYS9saWIvZ2FsYXh5L29iamVjdHN0b3JlL3JvZHMucHkKKysrIGIvbGli
L2dhbGF4eS9vYmplY3RzdG9yZS9yb2RzLnB5CkBAIC0xMiw3ICsxMiw4IEBACiBmcm9tIHBvc2l4
cGF0aCBpbXBvcnQgYmFzZW5hbWUgYXMgcGF0aF9iYXNlbmFtZQogZnJvbSBwb3NpeHBhdGggaW1w
b3J0IGRpcm5hbWUgYXMgcGF0aF9kaXJuYW1lCj0yMAotZnJvbSBnYWxheHkuZXhjZXB0aW9ucyBp
bXBvcnQgT2JqZWN0Tm90Rm91bmQKK2Zyb20gZ2FsYXh5LmV4Y2VwdGlvbnMgaW1wb3J0IE9iamVj
dE5vdEZvdW5kLCBPYmplY3RJbnZhbGlkCitmcm9tIGdhbGF4eS51dGlsIGltcG9ydCBzYWZlX3Jl
bHBhdGgKIGZyb20gLi5vYmplY3RzdG9yZSBpbXBvcnQgRGlza09iamVjdFN0b3JlLCBPYmplY3RT
dG9yZSwgbG9jYWxfZXh0cmFfZGlycwo9MjAKIHRyeToKQEAgLTcxLDYgKzcyLDIwIEBACiAgICAg
ICAgIGxvZy5pbmZvKCAiaVJPRFMgZGF0YSBmb3IgdGhpcyBpbnN0YW5jZSB3aWxsIGJlIHN0b3Jl
ZCBpbiBjb2xsZWN0aT0Kb246ICVzLCByZXNvdXJjZTogJXMiLCBzZWxmLnJvb3RfY29sbGVjdGlv
bl9wYXRoLCBzZWxmLmRlZmF1bHRfcmVzb3VyY2UgKQo9MjAKICAgICBkZWYgX19nZXRfcm9kc19w
YXRoKCBzZWxmLCBvYmosIGJhc2VfZGlyPTNETm9uZSwgZGlyX29ubHk9M0RGYWxzZSwgZXh0PQpy
YV9kaXI9M0ROb25lLCBleHRyYV9kaXJfYXRfcm9vdD0zREZhbHNlLCBhbHRfbmFtZT0zRE5vbmUs
IHN0cmlwX2RhdD0zRFRydWU9CiwgKiprd2FyZ3MgKToKKyAgICAgICAgIyBleHRyYV9kaXIgc2hv
dWxkIG5ldmVyIGJlIGNvbnN0cnVjdGVkIGZyb20gcHJvdmlkZWQgZGF0YSBidXQganVzdAorICAg
ICAgICAjIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gc2hlbmFubmlnYW5zIGFmb290CisgICAgICAg
IGlmIGV4dHJhX2RpciBhbmQgZXh0cmFfZGlyICE9M0Qgb3MucGF0aC5ub3JtcGF0aChleHRyYV9k
aXIpOgorICAgICAgICAgICAgbG9nLndhcm5pbmcoJ2V4dHJhX2RpciBpcyBub3Qgbm9ybWFsaXpl
ZDogJXMnLCBleHRyYV9kaXIpCisgICAgICAgICAgICByYWlzZSBPYmplY3RJbnZhbGlkKCJUaGUg
cmVxdWVzdGVkIG9iamVjdCBpcyBpbnZhbGlkIikKKyAgICAgICAgIyBlbnN1cmUgdGhhdCBhbnkg
cGFyZW50IGRpcmVjdG9yeSByZWZlcmVuY2VzIGluIGFsdF9uYW1lIHdvdWxkIG5vdAorICAgICAg
ICAjIHJlc3VsdCBpbiBhIHBhdGggbm90IGNvbnRhaW5lZCBpbiB0aGUgZGlyZWN0b3J5IHBhdGgg
Y29uc3RydWN0ZWQ9CiBoZXJlCisgICAgICAgIGlmIGFsdF9uYW1lOgorICAgICAgICAgICAgaWYg
bm90IHNhZmVfcmVscGF0aChhbHRfbmFtZSk6CisgICAgICAgICAgICAgICAgbG9nLndhcm5pbmco
J2FsdF9uYW1lIHdvdWxkIGxvY2F0ZSBwYXRoIG91dHNpZGUgZGlyOiAlcycsID0KYWx0X25hbWUp
CisgICAgICAgICAgICAgICAgcmFpc2UgT2JqZWN0SW52YWxpZCgiVGhlIHJlcXVlc3RlZCBvYmpl
Y3QgaXMgaW52YWxpZCIpCisgICAgICAgICAgICAjIGFsdF9uYW1lIGNhbiBjb250YWluIHBhcmVu
dCBkaXJlY3RvcnkgcmVmZXJlbmNlcywgYnV0IGlST0RTID0Kd2lsbAorICAgICAgICAgICAgIyBu
b3QgZm9sbG93IHRoZW0sIHNvIGlmIHRoZXkgYXJlIHZhbGlkIHdlIG5vcm1hbGl6ZSB0aGVtIG91
dAorICAgICAgICAgICAgYWx0X25hbWUgPTNEIG9zLnBhdGgubm9ybXBhdGgoYWx0X25hbWUpCiAg
ICAgICAgIHBhdGggPTNEICIiCiAgICAgICAgIGlmIGV4dHJhX2RpciBpcyBub3QgTm9uZToKICAg
ICAgICAgICAgIHBhdGggPTNEIGV4dHJhX2RpcgoKZGlmZiAtciBjMWNjNzZmYTNkNjZlZmIwNzBm
MTk2MzE1MWM0YWMwY2FlMDQ4ZjNmIC1yIDdjYThmMGVjYjJhZThiMWJhMmI1M2UxPQpmZDA5Y2Nh
ZTQ4MTk0MGE0OSBsaWIvZ2FsYXh5L29iamVjdHN0b3JlL3MzLnB5Ci0tLSBhL2xpYi9nYWxheHkv
b2JqZWN0c3RvcmUvczMucHkKKysrIGIvbGliL2dhbGF4eS9vYmplY3RzdG9yZS9zMy5weQpAQCAt
MTIsOCArMTIsOCBAQAo9MjAKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCj0yMAotZnJv
bSBnYWxheHkuZXhjZXB0aW9ucyBpbXBvcnQgT2JqZWN0Tm90Rm91bmQKLWZyb20gZ2FsYXh5LnV0
aWwgaW1wb3J0IHVtYXNrX2ZpeF9wZXJtcworZnJvbSBnYWxheHkuZXhjZXB0aW9ucyBpbXBvcnQg
T2JqZWN0Tm90Rm91bmQsIE9iamVjdEludmFsaWQKK2Zyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IHVt
YXNrX2ZpeF9wZXJtcywgc2FmZV9yZWxwYXRoCiBmcm9tIGdhbGF4eS51dGlsLmRpcmVjdG9yeV9o
YXNoIGltcG9ydCBkaXJlY3RvcnlfaGFzaF9pZAogZnJvbSBnYWxheHkudXRpbC5zbGVlcGVyIGlt
cG9ydCBTbGVlcGVyCiBmcm9tIC5zM19tdWx0aXBhcnRfdXBsb2FkIGltcG9ydCBtdWx0aXBhcnRf
dXBsb2FkCkBAIC0xODksNiArMTg5LDIwIEBACiAgICAgICAgICAgICAgICAgdW1hc2tfZml4X3Bl
cm1zKCBwYXRoLCBzZWxmLmNvbmZpZy51bWFzaywgMDY2Niwgc2VsZi5jb25maT0KZy5naWQgKQo9
MjAKICAgICBkZWYgX2NvbnN0cnVjdF9wYXRoKHNlbGYsIG9iaiwgZGlyX29ubHk9M0ROb25lLCBl
eHRyYV9kaXI9M0ROb25lLCBleHRyPQphX2Rpcl9hdF9yb290PTNERmFsc2UsIGFsdF9uYW1lPTNE
Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICAjIGV4dHJhX2RpciBzaG91bGQgbmV2ZXIgYmUgY29u
c3RydWN0ZWQgZnJvbSBwcm92aWRlZCBkYXRhIGJ1dCBqdXN0CisgICAgICAgICMgbWFrZSBzdXJl
IHRoZXJlIGFyZSBubyBzaGVuYW5uaWdhbnMgYWZvb3QKKyAgICAgICAgaWYgZXh0cmFfZGlyIGFu
ZCBleHRyYV9kaXIgIT0zRCBvcy5wYXRoLm5vcm1wYXRoKGV4dHJhX2Rpcik6CisgICAgICAgICAg
ICBsb2cud2FybmluZygnZXh0cmFfZGlyIGlzIG5vdCBub3JtYWxpemVkOiAlcycsIGV4dHJhX2Rp
cikKKyAgICAgICAgICAgIHJhaXNlIE9iamVjdEludmFsaWQoIlRoZSByZXF1ZXN0ZWQgb2JqZWN0
IGlzIGludmFsaWQiKQorICAgICAgICAjIGVuc3VyZSB0aGF0IGFueSBwYXJlbnQgZGlyZWN0b3J5
IHJlZmVyZW5jZXMgaW4gYWx0X25hbWUgd291bGQgbm90CisgICAgICAgICMgcmVzdWx0IGluIGEg
cGF0aCBub3QgY29udGFpbmVkIGluIHRoZSBkaXJlY3RvcnkgcGF0aCBjb25zdHJ1Y3RlZD0KIGhl
cmUKKyAgICAgICAgaWYgYWx0X25hbWU6CisgICAgICAgICAgICBpZiBub3Qgc2FmZV9yZWxwYXRo
KGFsdF9uYW1lKToKKyAgICAgICAgICAgICAgICBsb2cud2FybmluZygnYWx0X25hbWUgd291bGQg
bG9jYXRlIHBhdGggb3V0c2lkZSBkaXI6ICVzJywgPQphbHRfbmFtZSkKKyAgICAgICAgICAgICAg
ICByYWlzZSBPYmplY3RJbnZhbGlkKCJUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBpbnZhbGlkIikK
KyAgICAgICAgICAgICMgYWx0X25hbWUgY2FuIGNvbnRhaW4gcGFyZW50IGRpcmVjdG9yeSByZWZl
cmVuY2VzLCBidXQgUzMgd2lsPQpsIG5vdAorICAgICAgICAgICAgIyBmb2xsb3cgdGhlbSwgc28g
aWYgdGhleSBhcmUgdmFsaWQgd2Ugbm9ybWFsaXplIHRoZW0gb3V0CisgICAgICAgICAgICBhbHRf
bmFtZSA9M0Qgb3MucGF0aC5ub3JtcGF0aChhbHRfbmFtZSkKICAgICAgICAgcmVsX3BhdGggPTNE
IG9zLnBhdGguam9pbigqZGlyZWN0b3J5X2hhc2hfaWQob2JqLmlkKSkKICAgICAgICAgaWYgZXh0
cmFfZGlyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgaWYgZXh0cmFfZGlyX2F0X3Jvb3Q6Cgpk
aWZmIC1yIGMxY2M3NmZhM2Q2NmVmYjA3MGYxOTYzMTUxYzRhYzBjYWUwNDhmM2YgLXIgN2NhOGYw
ZWNiMmFlOGIxYmEyYjUzZTE9CmZkMDljY2FlNDgxOTQwYTQ5IGxpYi9nYWxheHkvdG9vbHMvaW1w
X2V4cC9fX2luaXRfXy5weQotLS0gYS9saWIvZ2FsYXh5L3Rvb2xzL2ltcF9leHAvX19pbml0X18u
cHkKKysrIGIvbGliL2dhbGF4eS90b29scy9pbXBfZXhwL19faW5pdF9fLnB5CkBAIC01LDYgKzUs
NyBAQAogaW1wb3J0IGpzb24KIGltcG9ydCBkYXRldGltZQogZnJvbSBnYWxheHkgaW1wb3J0IG1v
ZGVsCitmcm9tIGdhbGF4eS5leGNlcHRpb25zIGltcG9ydCBNYWxmb3JtZWRDb250ZW50cwogZnJv
bSBnYWxheHkudG9vbHMucGFyYW1ldGVycy5iYXNpYyBpbXBvcnQgVW52YWxpZGF0ZWRWYWx1ZQog
ZnJvbSBnYWxheHkud2ViLmZyYW1ld29yay5oZWxwZXJzIGltcG9ydCB0b191bmljb2RlCiBmcm9t
IGdhbGF4eS5tb2RlbC5pdGVtX2F0dHJzIGltcG9ydCBVc2VzQW5ub3RhdGlvbnMKQEAgLTE4Nyw5
ICsxODgsOSBAQAogICAgICAgICAgICAgICAgICAgICBpZiBkYXRhc2V0X2F0dHJzLmdldCgnZXhw
b3J0ZWQnLCBUcnVlKSA9M0Q9M0QgVHJ1ZToKICAgICAgICAgICAgICAgICAgICAgICAgICMgRG8g
c2VjdXJpdHkgY2hlY2sgYW5kIG1vdmUvY29weSBkYXRhc2V0IGRhdGEuCiAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZW1wX2RhdGFzZXRfZmlsZV9uYW1lID0zRCBcCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3MucGF0aC5hYnNwYXRoKCBvcy5wYXRoLmpvaW4oIGFyY2hpdmVfZGlyLCBk
YT0KdGFzZXRfYXR0cnNbJ2ZpbGVfbmFtZSddICkgKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9zLnBhdGgucmVhbHBhdGgoIG9zLnBhdGguYWJzcGF0aCggb3MucGF0aC5qb2k9Cm4oIGFy
Y2hpdmVfZGlyLCBkYXRhc2V0X2F0dHJzWydmaWxlX25hbWUnXSApICkgKQogICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgbm90IGZpbGVfaW5fZGlyKCB0ZW1wX2RhdGFzZXRfZmlsZV9uYW1lLCBv
cy5wYXQ9Cmguam9pbiggYXJjaGl2ZV9kaXIsICJkYXRhc2V0cyIgKSApOgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbiggIkludmFsaWQgZGF0YXNldCBwYXRoOiAl
cyIgJSA9CnRlbXBfZGF0YXNldF9maWxlX25hbWUgKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJhaXNlIE1hbGZvcm1lZENvbnRlbnRzKCAiSW52YWxpZCBkYXRhc2V0IHBhdGg9CjogJXMi
ICUgdGVtcF9kYXRhc2V0X2ZpbGVfbmFtZSApCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBk
YXRhc2V0c191c2FnZV9jb3VudHNbIHRlbXBfZGF0YXNldF9maWxlX25hbWUgXT0KID0zRD0zRCAx
OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNodXRpbC5tb3ZlKCB0ZW1wX2RhdGFzZXRf
ZmlsZV9uYW1lLCBoZGEuZmlsZV89Cm5hbWUgKQogICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZToKQEAgLTMxMyw2ICszMTQsNyBAQAogICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToK
ICAgICAgICAgICAgICAgICBqaWhhLmpvYi5zdGRlcnIgKz0zRCAiRXJyb3IgY2xlYW5pbmcgdXAg
aGlzdG9yeSBpbXBvcnQgam9iPQo6ICVzIiAlIGUKICAgICAgICAgICAgICAgICBzZWxmLnNhX3Nl
c3Npb24uZmx1c2goKQorICAgICAgICAgICAgICAgIHJhaXNlCj0yMAo9MjAKIGNsYXNzIEpvYkV4
cG9ydEhpc3RvcnlBcmNoaXZlV3JhcHBlciggb2JqZWN0LCBVc2VzSGlzdG9yeU1peGluLCBVc2Vz
QW5ub3RhPQp0aW9ucyApOgoKZGlmZiAtciBjMWNjNzZmYTNkNjZlZmIwNzBmMTk2MzE1MWM0YWMw
Y2FlMDQ4ZjNmIC1yIDdjYThmMGVjYjJhZThiMWJhMmI1M2UxPQpmZDA5Y2NhZTQ4MTk0MGE0OSBs
aWIvZ2FsYXh5L3Rvb2xzL2ltcF9leHAvdW5wYWNrX3Rhcl9nel9hcmNoaXZlLnB5Ci0tLSBhL2xp
Yi9nYWxheHkvdG9vbHMvaW1wX2V4cC91bnBhY2tfdGFyX2d6X2FyY2hpdmUucHkKKysrIGIvbGli
L2dhbGF4eS90b29scy9pbXBfZXhwL3VucGFja190YXJfZ3pfYXJjaGl2ZS5weQpAQCAtNiw2ICs2
LDcgQEAKICAgICAtLVt1cmx8ZmlsZV0gc291cmNlIHR5cGUsIGVpdGhlciBhIFVSTCBvciBhIGZp
bGUuCiAiIiIKPTIwCitpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCBvcHRwYXJzZQogaW1w
b3J0IHRhcmZpbGUKQEAgLTQzLDYgKzQ0LDIyIEBACiAgICAgICAgIHJldHVybiBOb25lCj0yMAo9
MjAKK2RlZiBjaGVja19hcmNoaXZlKCBhcmNoaXZlX2ZpbGUsIGRlc3RfZGlyICk6CisgICAgIiIi
CisgICAgRW5zdXJlIHRoYXQgYSB0YXIgYXJjaGl2ZSBoYXMgbm8gYWJzb2x1dGUgcGF0aHMgb3Ig
cmVsYXRpdmUgcGF0aHMgb3V0cz0KaWRlCisgICAgdGhlIGFyY2hpdmUuCisgICAgIiIiCisgICAg
d2l0aCB0YXJmaWxlLm9wZW4oIGFyY2hpdmVfZmlsZSwgbW9kZT0zRCdyOmd6JyApIGFzIGFyY2hp
dmVfZnA6CisgICAgICAgIGZvciBhcmNfcGF0aCBpbiBhcmNoaXZlX2ZwLmdldG5hbWVzKCk6Cisg
ICAgICAgICAgICBhc3NlcnQgb3MucGF0aC5ub3JtcGF0aCgKKyAgICAgICAgICAgICAgICBvcy5w
YXRoLmpvaW4oCisgICAgICAgICAgICAgICAgICAgIGRlc3RfZGlyLAorICAgICAgICAgICAgICAg
ICAgICBhcmNfcGF0aAorICAgICAgICAgICAgICAgICkgKS5zdGFydHN3aXRoKCBkZXN0X2Rpci5y
c3RyaXAob3Muc2VwKSArIG9zLnNlcCApLCBcCisgICAgICAgICAgICAgICAgIkFyY2hpdmUgbWVt
YmVyIHdvdWxkIGV4dHJhY3Qgb3V0c2lkZSB0YXJnZXQgZGlyZWN0b3J5OiAlcz0KIiAlIGFyY19w
YXRoCisgICAgcmV0dXJuIFRydWUKKworCiBkZWYgdW5wYWNrX2FyY2hpdmUoIGFyY2hpdmVfZmls
ZSwgZGVzdF9kaXIgKToKICAgICAiIiIKICAgICBVbnBhY2sgYSB0YXIgYW5kL29yIGd6aXBwZWQg
YXJjaGl2ZSBpbnRvIGEgZGVzdGluYXRpb24gZGlyZWN0b3J5LgpAQCAtNTEsMTMgKzY4LDggQEAK
ICAgICBhcmNoaXZlX2ZwLmV4dHJhY3RhbGwoIHBhdGg9M0RkZXN0X2RpciApCiAgICAgYXJjaGl2
ZV9mcC5jbG9zZSgpCj0yMAotaWYgX19uYW1lX18gPTNEPTNEICJfX21haW5fXyI6Ci0gICAgIyBQ
YXJzZSBjb21tYW5kIGxpbmUuCi0gICAgcGFyc2VyID0zRCBvcHRwYXJzZS5PcHRpb25QYXJzZXIo
KQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCAnLVUnLCAnLS11cmwnLCBkZXN0PTNEJ2lzX3VybCcs
IGFjdGlvbj0zRCJzdG9yZV90cnU9CmUiLCBoZWxwPTNEJ1NvdXJjZSBpcyBhIFVSTC4nICkKLSAg
ICBwYXJzZXIuYWRkX29wdGlvbiggJy1GJywgJy0tZmlsZScsIGRlc3Q9M0QnaXNfZmlsZScsIGFj
dGlvbj0zRCJzdG9yZV90PQpydWUiLCBoZWxwPTNEJ1NvdXJjZSBpcyBhIFVSTC4nICkKLSAgICBw
YXJzZXIuYWRkX29wdGlvbiggJy1lJywgJy0tZW5jb2RlZCcsIGRlc3Q9M0QnaXNfYjY0ZW5jb2Rl
ZCcsIGFjdGlvbj0KPTNEInN0b3JlX3RydWUiLCBkZWZhdWx0PTNERmFsc2UsIGhlbHA9M0QnU291
cmNlIGFuZCBkZXN0aW5hdGlvbiBkaXIgdmFsdWVzPQogYXJlIGJhc2U2NCBlbmNvZGVkLicgKQot
ICAgIChvcHRpb25zLCBhcmdzKSA9M0QgcGFyc2VyLnBhcnNlX2FyZ3MoKQorCitkZWYgbWFpbihv
cHRpb25zLCBhcmdzKToKICAgICBpc191cmwgPTNEIGJvb2woIG9wdGlvbnMuaXNfdXJsICkKICAg
ICBpc19maWxlID0zRCBib29sKCBvcHRpb25zLmlzX2ZpbGUgKQogICAgIGFyY2hpdmVfc291cmNl
LCBkZXN0X2RpciA9M0QgYXJncwpAQCAtNjYsMTQgKzc4LDI1IEBACiAgICAgICAgIGFyY2hpdmVf
c291cmNlID0zRCBiNjRkZWNvZGUoIGFyY2hpdmVfc291cmNlICkKICAgICAgICAgZGVzdF9kaXIg
PTNEIGI2NGRlY29kZSggZGVzdF9kaXIgKQo9MjAKKyAgICAjIEdldCBhcmNoaXZlIGZyb20gVVJM
LgorICAgIGlmIGlzX3VybDoKKyAgICAgICAgYXJjaGl2ZV9maWxlID0zRCB1cmxfdG9fZmlsZSgg
YXJjaGl2ZV9zb3VyY2UsIHRlbXBmaWxlLk5hbWVkVGVtcG9yPQphcnlGaWxlKCBkaXI9M0RkZXN0
X2RpciApLm5hbWUgKQorICAgIGVsaWYgaXNfZmlsZToKKyAgICAgICAgYXJjaGl2ZV9maWxlID0z
RCBhcmNoaXZlX3NvdXJjZQorCisgICAgIyBVbnBhY2sgYXJjaGl2ZS4KKyAgICBjaGVja19hcmNo
aXZlKCBhcmNoaXZlX2ZpbGUsIGRlc3RfZGlyICkKKyAgICB1bnBhY2tfYXJjaGl2ZSggYXJjaGl2
ZV9maWxlLCBkZXN0X2RpciApCisKKworaWYgX19uYW1lX18gPTNEPTNEICJfX21haW5fXyI6Cisg
ICAgIyBQYXJzZSBjb21tYW5kIGxpbmUuCisgICAgcGFyc2VyID0zRCBvcHRwYXJzZS5PcHRpb25Q
YXJzZXIoKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCAnLVUnLCAnLS11cmwnLCBkZXN0PTNEJ2lz
X3VybCcsIGFjdGlvbj0zRCJzdG9yZV90cnU9CmUiLCBoZWxwPTNEJ1NvdXJjZSBpcyBhIFVSTC4n
ICkKKyAgICBwYXJzZXIuYWRkX29wdGlvbiggJy1GJywgJy0tZmlsZScsIGRlc3Q9M0QnaXNfZmls
ZScsIGFjdGlvbj0zRCJzdG9yZV90PQpydWUiLCBoZWxwPTNEJ1NvdXJjZSBpcyBhIFVSTC4nICkK
KyAgICBwYXJzZXIuYWRkX29wdGlvbiggJy1lJywgJy0tZW5jb2RlZCcsIGRlc3Q9M0QnaXNfYjY0
ZW5jb2RlZCcsIGFjdGlvbj0KPTNEInN0b3JlX3RydWUiLCBkZWZhdWx0PTNERmFsc2UsIGhlbHA9
M0QnU291cmNlIGFuZCBkZXN0aW5hdGlvbiBkaXIgdmFsdWVzPQogYXJlIGJhc2U2NCBlbmNvZGVk
LicgKQorICAgIChvcHRpb25zLCBhcmdzKSA9M0QgcGFyc2VyLnBhcnNlX2FyZ3MoKQogICAgIHRy
eToKLSAgICAgICAgIyBHZXQgYXJjaGl2ZSBmcm9tIFVSTC4KLSAgICAgICAgaWYgaXNfdXJsOgot
ICAgICAgICAgICAgYXJjaGl2ZV9maWxlID0zRCB1cmxfdG9fZmlsZSggYXJjaGl2ZV9zb3VyY2Us
IHRlbXBmaWxlLk5hbWVkVGU9Cm1wb3JhcnlGaWxlKCBkaXI9M0RkZXN0X2RpciApLm5hbWUgKQot
ICAgICAgICBlbGlmIGlzX2ZpbGU6Ci0gICAgICAgICAgICBhcmNoaXZlX2ZpbGUgPTNEIGFyY2hp
dmVfc291cmNlCi0KLSAgICAgICAgIyBVbnBhY2sgYXJjaGl2ZS4KLSAgICAgICAgdW5wYWNrX2Fy
Y2hpdmUoIGFyY2hpdmVfZmlsZSwgZGVzdF9kaXIgKQorICAgICAgICBtYWluKG9wdGlvbnMsIGFy
Z3MpCiAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKICAgICAgICAgcHJpbnQgIkVycm9yIHVucGFj
a2luZyB0YXIvZ3ogYXJjaGl2ZTogJXMiICUgZSwgc3lzLnN0ZGVycgoKZGlmZiAtciBjMWNjNzZm
YTNkNjZlZmIwNzBmMTk2MzE1MWM0YWMwY2FlMDQ4ZjNmIC1yIDdjYThmMGVjYjJhZThiMWJhMmI1
M2UxPQpmZDA5Y2NhZTQ4MTk0MGE0OSBsaWIvZ2FsYXh5L3V0aWwvX19pbml0X18ucHkKLS0tIGEv
bGliL2dhbGF4eS91dGlsL19faW5pdF9fLnB5CisrKyBiL2xpYi9nYWxheHkvdXRpbC9fX2luaXRf
Xy5weQpAQCAtMjcsNyArMjcsNyBAQAo9MjAKIGZyb20gZW1haWwuTUlNRVRleHQgaW1wb3J0IE1J
TUVUZXh0Cj0yMAotZnJvbSBvcy5wYXRoIGltcG9ydCByZWxwYXRoCitmcm9tIG9zLnBhdGggaW1w
b3J0IHJlbHBhdGgsIG5vcm1wYXRoCiBmcm9tIGhhc2hsaWIgaW1wb3J0IG1kNQogZnJvbSBpdGVy
dG9vbHMgaW1wb3J0IGl6aXAKPTIwCkBAIC0xMTQzLDYgKzExNDMsMjMgQEAKIGRlZiBnYWxheHlf
ZGlyZWN0b3J5KCk6CiAgICAgcmV0dXJuIG9zLnBhdGguYWJzcGF0aChnYWxheHlfcm9vdF9wYXRo
KQo9MjAKKworZGVmIHNhZmVfcmVscGF0aChwYXRoKToKKyAgICAiIiIKKyAgICBHaXZlbiB3aGF0
IHdlIGV4cGVjdCB0byBiZSBhIHJlbGF0aXZlIHBhdGgsIGRldGVybWluZSB3aGV0aGVyIHRoZSBw
YXRoCisgICAgd291bGQgZXhpc3QgaW5zaWRlIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKworICAg
IDp0eXBlICAgcGF0aDogICBzdHJpbmcKKyAgICA6cGFyYW0gIHBhdGg6ICAgYSBwYXRoIHRvIGNo
ZWNrCisgICAgOnJ0eXBlOiAgICAgICAgIGJvb2wKKyAgICA6cmV0dXJuczogICAgICAgYGBUcnVl
YGAgaWYgcGF0aCBpcyByZWxhdGl2ZSBhbmQgZG9lcyBub3QgcmVmZXJlbmNlIGEgPQpwYXRoCisg
ICAgICAgIGluIGEgcGFyZW50IGRpcmVjdG9yeSwgYGBGYWxzZWBgIG90aGVyd2lzZS4KKyAgICAi
IiIKKyAgICBpZiBwYXRoLnN0YXJ0c3dpdGgob3Muc2VwKSBvciBub3JtcGF0aChwYXRoKS5zdGFy
dHN3aXRoKG9zLnBhcmRpcik6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIHJldHVybiBUcnVl
CisKKwogaWYgX19uYW1lX18gPTNEPTNEICdfX21haW5fXyc6CiAgICAgaW1wb3J0IGRvY3Rlc3QK
ICAgICBkb2N0ZXN0LnRlc3Rtb2Qoc3lzLm1vZHVsZXNbX19uYW1lX19dLCB2ZXJib3NlPTNERmFs
c2UpCgpkaWZmIC1yIGMxY2M3NmZhM2Q2NmVmYjA3MGYxOTYzMTUxYzRhYzBjYWUwNDhmM2YgLXIg
N2NhOGYwZWNiMmFlOGIxYmEyYjUzZTE9CmZkMDljY2FlNDgxOTQwYTQ5IGxpYi9nYWxheHkvd2Vi
YXBwcy9nYWxheHkvYXBpL3Rvb2xzLnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkv
YXBpL3Rvb2xzLnB5CisrKyBiL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL3Rvb2xzLnB5
CkBAIC03NywxNCArNzcsMTQgQEAKICAgID0yMAogICAgIEBfZnV0dXJlX2V4cG9zZV9hcGkKICAg
ICBAd2ViLnJlcXVpcmVfYWRtaW4KLSAgICBkZWYgcmVsb2FkKCBzZWxmLCB0cmFucywgdG9vbF9p
ZCwgKiprd2QgKToKKyAgICBkZWYgcmVsb2FkKCBzZWxmLCB0cmFucywgaWQsICoqa3dkICk6CiAg
ICAgICAgICIiIgogICAgICAgICBHRVQgL2FwaS90b29scy97dG9vbF9pZH0vcmVsb2FkCiAgICAg
ICAgIFJlbG9hZCBzcGVjaWZpZWQgdG9vbC4KICAgICAgICAgIiIiCiAgICAgICAgIHRvb2xib3gg
PTNEIHRyYW5zLmFwcC50b29sYm94Ci0gICAgICAgIGdhbGF4eS5xdWV1ZV93b3JrZXIuc2VuZF9j
b250cm9sX3Rhc2soIHRyYW5zLCAncmVsb2FkX3Rvb2wnLCBub29wXz0Kc2VsZj0zRFRydWUsIGt3
YXJncz0zRHsgJ3Rvb2xfaWQnOiB0b29sX2lkIH0gKQotICAgICAgICBtZXNzYWdlLCBzdGF0dXMg
PTNEIHRyYW5zLmFwcC50b29sYm94LnJlbG9hZF90b29sX2J5X2lkKCB0b29sX2lkICkKKyAgICAg
ICAgZ2FsYXh5LnF1ZXVlX3dvcmtlci5zZW5kX2NvbnRyb2xfdGFzayggdHJhbnMsICdyZWxvYWRf
dG9vbCcsIG5vb3BfPQpzZWxmPTNEVHJ1ZSwga3dhcmdzPTNEeyAndG9vbF9pZCc6IGlkIH0gKQor
ICAgICAgICBtZXNzYWdlLCBzdGF0dXMgPTNEIHRyYW5zLmFwcC50b29sYm94LnJlbG9hZF90b29s
X2J5X2lkKCBpZCApCiAgICAgICAgIHJldHVybiB7IHN0YXR1czogbWVzc2FnZSB9Cj0yMAogICAg
IEBfZnV0dXJlX2V4cG9zZV9hcGlfYW5vbnltb3VzCgpkaWZmIC1yIGMxY2M3NmZhM2Q2NmVmYjA3
MGYxOTYzMTUxYzRhYzBjYWUwNDhmM2YgLXIgN2NhOGYwZWNiMmFlOGIxYmEyYjUzZTE9CmZkMDlj
Y2FlNDgxOTQwYTQ5IGxpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvYWRtaW5f
dG9vbHNoZWQucHkKLS0tIGEvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9h
ZG1pbl90b29sc2hlZC5weQorKysgYi9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xs
ZXJzL2FkbWluX3Rvb2xzaGVkLnB5CkBAIC0zODMsMTEgKzM4MywxMSBAQAo9MjAKICAgICBAd2Vi
Lmpzb24KICAgICBAd2ViLnJlcXVpcmVfYWRtaW4KLSAgICBkZWYgZ2V0X2ZpbGVfY29udGVudHMo
IHNlbGYsIHRyYW5zLCBmaWxlX3BhdGggKToKKyAgICBkZWYgZ2V0X2ZpbGVfY29udGVudHMoIHNl
bGYsIHRyYW5zLCBmaWxlX3BhdGgsIHJlcG9zaXRvcnlfaWQgKToKICAgICAgICAgIyBBdm9pZCBj
YWNoaW5nCiAgICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ1ByYWdtYSddID0zRCAnbm8t
Y2FjaGUnCiAgICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ0V4cGlyZXMnXSA9M0QgJzAn
Ci0gICAgICAgIHJldHVybiBzdWMuZ2V0X3JlcG9zaXRvcnlfZmlsZV9jb250ZW50cyggZmlsZV9w
YXRoICkKKyAgICAgICAgcmV0dXJuIHN1Yy5nZXRfcmVwb3NpdG9yeV9maWxlX2NvbnRlbnRzKCB0
cmFucy5hcHAsIGZpbGVfcGF0aCwgcmVwPQpvc2l0b3J5X2lkICkKPTIwCiAgICAgQHdlYi5leHBv
c2UKICAgICBAd2ViLnJlcXVpcmVfYWRtaW4KQEAgLTk2MCwxMSArOTYwLDExIEBACj0yMAogICAg
IEB3ZWIuanNvbgogICAgIEB3ZWIucmVxdWlyZV9hZG1pbgotICAgIGRlZiBvcGVuX2ZvbGRlcigg
c2VsZiwgdHJhbnMsIGZvbGRlcl9wYXRoICk6CisgICAgZGVmIG9wZW5fZm9sZGVyKCBzZWxmLCB0
cmFucywgZm9sZGVyX3BhdGgsIHJlcG9zaXRvcnlfaWQgKToKICAgICAgICAgIyBBdm9pZCBjYWNo
aW5nCiAgICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ1ByYWdtYSddID0zRCAnbm8tY2Fj
aGUnCiAgICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ0V4cGlyZXMnXSA9M0QgJzAnCi0g
ICAgICAgIHJldHVybiBzdWMub3Blbl9yZXBvc2l0b3J5X2ZpbGVzX2ZvbGRlciggZm9sZGVyX3Bh
dGggKQorICAgICAgICByZXR1cm4gc3VjLm9wZW5fcmVwb3NpdG9yeV9maWxlc19mb2xkZXIoIHRy
YW5zLmFwcCwgZm9sZGVyX3BhdGgsIHI9CmVwb3NpdG9yeV9pZCApCj0yMAogICAgIEB3ZWIuZXhw
b3NlCiAgICAgQHdlYi5yZXF1aXJlX2FkbWluCgpkaWZmIC1yIGMxY2M3NmZhM2Q2NmVmYjA3MGYx
OTYzMTUxYzRhYzBjYWUwNDhmM2YgLXIgN2NhOGYwZWNiMmFlOGIxYmEyYjUzZTE9CmZkMDljY2Fl
NDgxOTQwYTQ5IGxpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvcmVxdWVzdHNf
YWRtaW4ucHkKLS0tIGEvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9yZXF1
ZXN0c19hZG1pbi5weQorKysgYi9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJz
L3JlcXVlc3RzX2FkbWluLnB5CkBAIC02LDEwICs2LDcgQEAKIGZyb20gZ2FsYXh5IGltcG9ydCBt
b2RlbCwgdXRpbAogZnJvbSBnYWxheHkud2ViLmZvcm1fYnVpbGRlciBpbXBvcnQgKgogZnJvbSAu
cmVxdWVzdHNfY29tbW9uIGltcG9ydCBSZXF1ZXN0c0dyaWQsIGludmFsaWRfaWRfcmVkaXJlY3QK
LWZyb20gZ2FsYXh5IGltcG9ydCBlZ2dzCi1lZ2dzLnJlcXVpcmUoImFtcXAiKQotaW1wb3J0IGFt
cXAKLWltcG9ydCBsb2dnaW5nLCBvcywgcGV4cGVjdCwgQ29uZmlnUGFyc2VyCitpbXBvcnQgbG9n
Z2luZywgb3MsIENvbmZpZ1BhcnNlcgo9MjAKIGxvZyA9M0QgbG9nZ2luZy5nZXRMb2dnZXIoIF9f
bmFtZV9fICkKPTIwCkBAIC0zNTEsMTgyICszNDgsNiBAQAogICAgICAgICByZXR1cm4gdHJhbnMu
cmVzcG9uc2Uuc2VuZF9yZWRpcmVjdCggd2ViLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmU9CnF1
ZXN0c19hZG1pbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWN0aW9uPTNEJ21hbmFnZT0KX2RhdGFzZXRzJywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVfaWQ9
M0RzYW1wPQpsZV9pZCApICkKLSAgICBAd2ViLmV4cG9zZQotICAgIEB3ZWIucmVxdWlyZV9hZG1p
bgotICAgIGRlZiBzZWxlY3RfZGF0YXNldHNfdG9fdHJhbnNmZXIoIHNlbGYsIHRyYW5zLCAqKmt3
ZCApOgotICAgICAgICBwYXJhbXMgPTNEIHV0aWwuUGFyYW1zKCBrd2QgKQotICAgICAgICBtZXNz
YWdlID0zRCB1dGlsLnJlc3RvcmVfdGV4dCggcGFyYW1zLmdldCggJ21lc3NhZ2UnLCAnJyApICkK
LSAgICAgICAgc3RhdHVzID0zRCBwYXJhbXMuZ2V0KCAnc3RhdHVzJywgJ2RvbmUnICkKLSAgICAg
ICAgcmVxdWVzdF9pZCA9M0Qga3dkLmdldCggJ3JlcXVlc3RfaWQnLCBOb25lICkKLSAgICAgICAg
ZXh0ZXJuYWxfc2VydmljZV9pZCA9M0Qga3dkLmdldCggJ2V4dGVybmFsX3NlcnZpY2VfaWQnLCBO
b25lICkKLSAgICAgICAgZmlsZXMgPTNEIFtdCi0gICAgICAgIHJlcXVlc3QgPTNEIHRyYW5zLnNh
X3Nlc3Npb24ucXVlcnkoIHRyYW5zLm1vZGVsLlJlcXVlc3QgKS5nZXQoIHRyYT0KbnMuc2VjdXJp
dHkuZGVjb2RlX2lkKCByZXF1ZXN0X2lkICkgKQotICAgICAgICBleHRlcm5hbF9zZXJ2aWNlID0z
RCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5tb2RlbC5FeHRlcm5hbFM9CmVydmljZSAp
LmdldCggdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBleHRlcm5hbF9zZXJ2aWNlX2lkICkgKQot
ICAgICAgICAjIExvYWQgdGhlIGRhdGEgdHJhbnNmZXIgc2V0dGluZ3MKLSAgICAgICAgZXh0ZXJu
YWxfc2VydmljZS5sb2FkX2RhdGFfdHJhbnNmZXJfc2V0dGluZ3MoIHRyYW5zICkKLSAgICAgICAg
c2NwX2NvbmZpZ3MgPTNEIGV4dGVybmFsX3NlcnZpY2UuZGF0YV90cmFuc2ZlclsgdHJhbnMubW9k
ZWwuRXh0ZXJuPQphbFNlcnZpY2UuZGF0YV90cmFuc2Zlcl9wcm90b2NvbC5TQ1AgXQotICAgICAg
ICBzZWxlY3RlZF9kYXRhc2V0c190b190cmFuc2ZlciA9M0QgdXRpbC5yZXN0b3JlX3RleHQoIHBh
cmFtcy5nZXQoICc9CnNlbGVjdGVkX2RhdGFzZXRzX3RvX3RyYW5zZmVyJywgJycgKSApCi0gICAg
ICAgIGlmIHNlbGVjdGVkX2RhdGFzZXRzX3RvX3RyYW5zZmVyOgotICAgICAgICAgICAgc2VsZWN0
ZWRfZGF0YXNldHNfdG9fdHJhbnNmZXIgPTNEIHNlbGVjdGVkX2RhdGFzZXRzX3RvX3RyYW5zZmU9
CnIuc3BsaXQoJywnKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZWN0ZWRfZGF0YXNl
dHNfdG9fdHJhbnNmZXIgPTNEIFtdCi0gICAgICAgIHNhbXBsZV9pZCA9M0Qga3dkLmdldCggJ3Nh
bXBsZV9pZCcsICdub25lJyApCi0gICAgICAgIHNhbXBsZV9pZF9zZWxlY3RfZmllbGQgPTNEIHNl
bGYuX19idWlsZF9zYW1wbGVfaWRfc2VsZWN0X2ZpZWxkKCB0cj0KYW5zLCByZXF1ZXN0LCBzYW1w
bGVfaWQgKQotICAgICAgICBpZiBzYW1wbGVfaWQgIT0zRCAnbm9uZSc6Ci0gICAgICAgICAgICBz
YW1wbGUgPTNEIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIHRyYW5zLm1vZGVsLlNhbXBsZSApLmdl
dCggdD0KcmFucy5zZWN1cml0eS5kZWNvZGVfaWQoIHNhbXBsZV9pZCApICkKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIHNhbXBsZSA9M0QgTm9uZQotICAgICAgICAjIFRoZSBfX2dldF9maWxl
cygpIG1ldGhvZCByZWRpcmVjdHMgaGVyZSB3aXRoIGEgc3RhdHVzIG9mICdlcnJvcic9CiBhbmQg
YSBtZXNzYWdlIGlmIHRoZXJlCi0gICAgICAgICMgd2FzIGEgcHJvYmxlbSByZXRyaWV2aW5nIHRo
ZSBmaWxlcy4KLSAgICAgICAgaWYgcGFyYW1zLmdldCggJ3NlbGVjdF9kYXRhc2V0c190b190cmFu
c2Zlcl9idXR0b24nLCBGYWxzZSApOgotICAgICAgICAgICAgIyBHZXQgdGhlIHNhbXBsZSB0aGF0
IHdhcyBzZXF1ZW5jZWQgdG8gcHJvZHVjZSB0aGVzZSBkYXRhc2V0cy4KLSAgICAgICAgICAgIGlm
IHNhbXBsZV9pZCA9M0Q9M0QgJ25vbmUnOgotICAgICAgICAgICAgICAgIGRlbCBrd2RbICdzZWxl
Y3RfZGF0YXNldHNfdG9fdHJhbnNmZXJfYnV0dG9uJyBdCi0gICAgICAgICAgICAgICAgbWVzc2Fn
ZSA9M0QgJ1NlbGVjdCB0aGUgc2FtcGxlIHRoYXQgd2FzIHNlcXVlbmNlZCB0byBwcm9kdT0KY2Ug
dGhlIGRhdGFzZXRzIHlvdSB3YW50IHRvIHRyYW5zZmVyLicKLSAgICAgICAgICAgICAgICBrd2Rb
ICdtZXNzYWdlJyBdID0zRCBtZXNzYWdlCi0gICAgICAgICAgICAgICAga3dkWyAnc3RhdHVzJyBd
ID0zRCAnZXJyb3InCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zLnJlc3BvbnNlLnNlbmRf
cmVkaXJlY3QoIHdlYi51cmxfZm9yKCBjb250cm9sbD0KZXI9M0QncmVxdWVzdHNfYWRtaW4nLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYWN0aW9uPQo9M0Qnc2VsZWN0X2RhdGFzZXRzX3RvX3RyYW5zZmVyJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICoqa3dkICkgKQotICAgICAgICAgICAgaWYgbm90IHNhbXBsZS5saWJyYXJ5OgotICAgICAg
ICAgICAgICAgICMgRGlzcGxheSBhbiBlcnJvciBpZiBhIHNhbXBsZSBoYXMgYmVlbiBzZWxlY3Rl
ZCB0aGF0Ci0gICAgICAgICAgICAgICAgIyBoYXMgbm90IHlldCBiZWVuIGFzc29jaWF0ZWQgd2l0
aCBhIGRlc3RpbmF0aW9uIGxpYnJhcnkuCi0gICAgICAgICAgICAgICAgbWVzc2FnZSA9M0QgJ1Nl
bGVjdCBhIHRhcmdldCBkYXRhIGxpYnJhcnkgYW5kIGZvbGRlciBmb3IgdD0KaGUgc2FtcGxlIGJl
Zm9yZSBzZWxlY3RpbmcgdGhlIGRhdGFzZXRzLicKLSAgICAgICAgICAgICAgICBzdGF0dXMgPTNE
ICdlcnJvcicKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnMucmVzcG9uc2Uuc2VuZF9yZWRp
cmVjdCggd2ViLnVybF9mb3IoIGNvbnRyb2xsPQplcj0zRCdyZXF1ZXN0c19jb21tb24nLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWN0aW9uPQo9M0QnZWRpdF9zYW1wbGVzJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNudHJsbGVyPQo9M0Qn
cmVxdWVzdHNfYWRtaW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9M0R0cmE9Cm5zLnNlY3VyaXR5LmVuY29kZV9p
ZCggcmVxdWVzdC5pZCApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPQo9M0RzdGF0dXMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
ZXNzYWdlPQo9M0RtZXNzYWdlICkgKQotICAgICAgICAgICAgIyBTYXZlIHRoZSBzYW1wbGUgZGF0
YXNldHMKLSAgICAgICAgICAgIHNhbXBsZV9kYXRhc2V0X2ZpbGVfbmFtZXMgPTNEIHNlbGYuX19j
cmVhdGVfc2FtcGxlX2RhdGFzZXRzKCB0PQpyYW5zLCBzYW1wbGUsIHNlbGVjdGVkX2RhdGFzZXRz
X3RvX3RyYW5zZmVyLCBleHRlcm5hbF9zZXJ2aWNlICkKLSAgICAgICAgICAgIGlmIHNhbXBsZV9k
YXRhc2V0X2ZpbGVfbmFtZXM6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9M0QgJ0RhdGFzZXRz
ICglcykgaGF2ZSBiZWVuIHNlbGVjdGVkIGZvciBzYW1wbGUgKD0KJXMpJyAlIFwKLSAgICAgICAg
ICAgICAgICAgICAgKCBzdHIoIHNhbXBsZV9kYXRhc2V0X2ZpbGVfbmFtZXMgKVsxOi0xXS5yZXBs
YWNlKCAiJyIsPQogIiIgKSwgc2FtcGxlLm5hbWUgKQotICAgICAgICAgICAgcmV0dXJuIHRyYW5z
LnJlc3BvbnNlLnNlbmRfcmVkaXJlY3QoIHdlYi51cmxfZm9yKCBjb250cm9sbGVyPQo9M0QncmVx
dWVzdHNfYWRtaW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhY3Rpb249M0QnbWE9Cm5hZ2VfZGF0YXNldHMnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXF1ZXN0X2lkPQo9M0RyZXF1ZXN0X2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVfaWQ9M0Q9CnNhbXBsZV9pZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWVzc2FnZT0zRG1lPQpzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTNEc3RhPQp0dXMgKSApCi0g
ICAgICAgIHJldHVybiB0cmFucy5maWxsX3RlbXBsYXRlKCAnL2FkbWluL3JlcXVlc3RzL3NlbGVj
dF9kYXRhc2V0c190b190cj0KYW5zZmVyLm1ha28nLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY250cmxsZXI9M0QncmVxdWVzdHNfYWRtaW4nLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdD0zRHJlcXVlc3QsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBleHRlcm5hbF9zZXJ2aWNlPTNEZXh0ZXJuYWxfc2VydmljZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcF9jb25maWdzPTNEc2NwX2Nv
bmZpZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGU9M0RzYW1w
bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVfaWRfc2VsZWN0
X2ZpZWxkPTNEc2FtcGxlX2lkX3NlbD0KZWN0X2ZpZWxkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdHVzPTNEc3RhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWVzc2FnZT0zRG1lc3NhZ2UgKQotICAgIEB3ZWIuanNvbgotICAgIGRlZiBn
ZXRfZmlsZV9kZXRhaWxzKCBzZWxmLCB0cmFucywgcmVxdWVzdF9pZCwgZXh0ZXJuYWxfc2Vydmlj
ZV9pZCwgZm89CmxkZXJfcGF0aCApOgotICAgICAgICBkZWYgcHJpbnRfdGlja3MoIGQgKToKLSAg
ICAgICAgICAgICMgcGV4cGVjdCB0aW1lb3V0IG1ldGhvZAotICAgICAgICAgICAgcGFzcwotICAg
ICAgICAjIEF2b2lkIGNhY2hpbmcKLSAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVhZGVyc1snUHJh
Z21hJ10gPTNEICduby1jYWNoZScKLSAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVhZGVyc1snRXhw
aXJlcyddID0zRCAnMCcKLSAgICAgICAgcmVxdWVzdCA9M0QgdHJhbnMuc2Ffc2Vzc2lvbi5xdWVy
eSggdHJhbnMubW9kZWwuUmVxdWVzdCApLmdldCggdHJhPQpucy5zZWN1cml0eS5kZWNvZGVfaWQo
IHJlcXVlc3RfaWQgKSApCi0gICAgICAgIGV4dGVybmFsX3NlcnZpY2UgPTNEIHRyYW5zLnNhX3Nl
c3Npb24ucXVlcnkoIHRyYW5zLm1vZGVsLkV4dGVybmFsUz0KZXJ2aWNlICkuZ2V0KCB0cmFucy5z
ZWN1cml0eS5kZWNvZGVfaWQoIGV4dGVybmFsX3NlcnZpY2VfaWQgKSApCi0gICAgICAgIGV4dGVy
bmFsX3NlcnZpY2UubG9hZF9kYXRhX3RyYW5zZmVyX3NldHRpbmdzKCB0cmFucyApCi0gICAgICAg
IHNjcF9jb25maWdzID0zRCBleHRlcm5hbF9zZXJ2aWNlLmRhdGFfdHJhbnNmZXJbIHRyYW5zLm1v
ZGVsLkV4dGVybj0KYWxTZXJ2aWNlLmRhdGFfdHJhbnNmZXJfcHJvdG9jb2wuU0NQIF0KLSAgICAg
ICAgY21kICA9M0QgJ3NzaCAlc0AlcyAibHMgLW9naHAgXCclc1wnIicgJSAoIHNjcF9jb25maWdz
WyAndXNlcl9uYW1lPQonIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2NwX2NvbmZpZ3NbICdob3N0JyBdLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGRlcl9wYXRoICkKLSAgICAgICAgIyBIYW5k
bGUgdGhlIGF1dGhlbnRpY2F0aW9uIG1lc3NhZ2UgaWYgc3NoIGtleXMgYXJlIG5vdCBzZXQgLSB0
aGUgPQptZXNzYWdlIGlzCi0gICAgICAgICMgc29tZXRoaW5nIGxpa2U6ICJBcmUgeW91IHN1cmUg
eW91IHdhbnQgdG8gY29udGludWUgY29ubmVjdGluZyAoeT0KZXMvbm8pLiIKLSAgICAgICAgb3V0
cHV0ID0zRCBwZXhwZWN0LnJ1biggY21kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXZlbnRzPTNEeyAnXCh5ZXNcL25vXClcLionIDogJ3llc1xyXG4nLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJy5zc3dvcmQ6KicgOiBzY3BfY29uZmlnc1sgJ3Bhc3N3
b3I9CmQnIF0gKyAnXHJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwZXhwZWN0LlRJTUVPVVQgOiBwcmludF90aWNrcyB9LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGltZW91dD0zRDEwICkKLSAgICAgICAgZm9yIHBhc3N3b3JkX3N0ciBpbiBbICdQ
YXNzd29yZDpcclxuJywgJ3Bhc3N3b3JkOlxyXG4nIF06Ci0gICAgICAgICAgICAjIEVsaW1pbmF0
ZSB0aGUgb3V0cHV0IGNyZWF0ZWQgdXNpbmcgc3NoIGZyb20gdGhlIHRyZWUKLSAgICAgICAgICAg
IGlmIHBhc3N3b3JkX3N0ciBpbiBvdXRwdXQ6Ci0gICAgICAgICAgICAgICAgb3V0cHV0ID0zRCBv
dXRwdXQucmVwbGFjZSggcGFzc3dvcmRfc3RyLCAnJyApCi0gICAgICAgIHJldHVybiB1bmljb2Rl
KCBvdXRwdXQucmVwbGFjZSggJ1xyXG4nLCAnPGJyLz4nICkgKQotICAgIEB3ZWIuanNvbgotICAg
IGRlZiBvcGVuX2ZvbGRlciggc2VsZiwgdHJhbnMsIHJlcXVlc3RfaWQsIGV4dGVybmFsX3NlcnZp
Y2VfaWQsIGtleSApOgotICAgICAgICAjIEF2b2lkIGNhY2hpbmcKLSAgICAgICAgdHJhbnMucmVz
cG9uc2UuaGVhZGVyc1snUHJhZ21hJ10gPTNEICduby1jYWNoZScKLSAgICAgICAgdHJhbnMucmVz
cG9uc2UuaGVhZGVyc1snRXhwaXJlcyddID0zRCAnMCcKLSAgICAgICAgcmVxdWVzdCA9M0QgdHJh
bnMuc2Ffc2Vzc2lvbi5xdWVyeSggdHJhbnMubW9kZWwuUmVxdWVzdCApLmdldCggdHJhPQpucy5z
ZWN1cml0eS5kZWNvZGVfaWQoIHJlcXVlc3RfaWQgKSApCi0gICAgICAgIGV4dGVybmFsX3NlcnZp
Y2UgPTNEIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIHRyYW5zLm1vZGVsLkV4dGVybmFsUz0KZXJ2
aWNlICkuZ2V0KCB0cmFucy5zZWN1cml0eS5kZWNvZGVfaWQoIGV4dGVybmFsX3NlcnZpY2VfaWQg
KSApCi0gICAgICAgIGZvbGRlcl9wYXRoID0zRCBrZXkKLSAgICAgICAgZmlsZXNfbGlzdCA9M0Qg
c2VsZi5fX2dldF9maWxlcyggdHJhbnMsIHJlcXVlc3QsIGV4dGVybmFsX3NlcnZpY2UsPQogZm9s
ZGVyX3BhdGggKQotICAgICAgICBmb2xkZXJfY29udGVudHMgPTNEIFtdCi0gICAgICAgIGZvciBm
aWxlbmFtZSBpbiBmaWxlc19saXN0OgotICAgICAgICAgICAgaXNfZm9sZGVyID0zRCBGYWxzZQot
ICAgICAgICAgICAgaWYgZmlsZW5hbWUgYW5kIGZpbGVuYW1lWy0xXSA9M0Q9M0Qgb3Muc2VwOgot
ICAgICAgICAgICAgICAgIGlzX2ZvbGRlciA9M0QgVHJ1ZQotICAgICAgICAgICAgaWYgZmlsZW5h
bWU6Ci0gICAgICAgICAgICAgICAgZnVsbF9wYXRoID0zRCBvcy5wYXRoLmpvaW4oIGZvbGRlcl9w
YXRoLCBmaWxlbmFtZSApCi0gICAgICAgICAgICAgICAgbm9kZSA9M0QgeyAidGl0bGUiOiBmaWxl
bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiaXNGb2xkZXIiOiBpc19mb2xkZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgImlzTGF6eSI6IGlzX2ZvbGRlciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAidG9vbHRpcCI6IGZ1bGxfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAia2V5IjogZnVsbF9wYXRoIH0KLSAgICAgICAgICAgICAgICBmb2xkZXJfY29udGVudHMu
YXBwZW5kKCBub2RlICkKLSAgICAgICAgcmV0dXJuIGZvbGRlcl9jb250ZW50cwotICAgIGRlZiBf
X2dldF9maWxlcyggc2VsZiwgdHJhbnMsIHJlcXVlc3QsIGV4dGVybmFsX3NlcnZpY2UsIGZvbGRl
cl9wYXRoICk6Ci0gICAgICAgICMgUmV0cmlldmVzIHRoZSBmaWxlbmFtZXMgdG8gYmUgdHJhbnNm
ZXJyZWQgZnJvbSB0aGUgcmVtb3RlIGhvc3QuCi0gICAgICAgIG9rID0zRCBUcnVlCi0gICAgICAg
IGV4dGVybmFsX3NlcnZpY2UubG9hZF9kYXRhX3RyYW5zZmVyX3NldHRpbmdzKCB0cmFucyApCi0g
ICAgICAgIHNjcF9jb25maWdzID0zRCBleHRlcm5hbF9zZXJ2aWNlLmRhdGFfdHJhbnNmZXJbIHRy
YW5zLm1vZGVsLkV4dGVybj0KYWxTZXJ2aWNlLmRhdGFfdHJhbnNmZXJfcHJvdG9jb2wuU0NQIF0K
LSAgICAgICAgaWYgbm90IHNjcF9jb25maWdzWyAnaG9zdCcgXSBvciBub3Qgc2NwX2NvbmZpZ3Nb
ICd1c2VyX25hbWUnIF0gb3IgPQpub3Qgc2NwX2NvbmZpZ3NbICdwYXNzd29yZCcgXToKLSAgICAg
ICAgICAgIHN0YXR1cyA9M0QgJ2Vycm9yJwotICAgICAgICAgICAgbWVzc2FnZSA9M0QgIkVycm9y
IGluIGV4dGVybmFsIHNlcnZpY2UgbG9naW4gaW5mb3JtYXRpb24uIgotICAgICAgICAgICAgb2sg
PTNEIEZhbHNlCi0gICAgICAgIGRlZiBwcmludF90aWNrcyggZCApOgotICAgICAgICAgICAgcGFz
cwotICAgICAgICBjbWQgID0zRCAnc3NoICVzQCVzICJscyAtcCBcJyVzXCciJyAlICggc2NwX2Nv
bmZpZ3NbICd1c2VyX25hbWUnIF09Ciwgc2NwX2NvbmZpZ3NbICdob3N0JyBdLCBmb2xkZXJfcGF0
aCApCi0gICAgICAgICMgSGFuZGxlIHRoZSBhdXRoZW50aWNhdGlvbiBtZXNzYWdlIGlmIGtleXMg
YXJlIG5vdCBzZXQgLSB0aGUgbWVzcz0KYWdlIGlzCi0gICAgICAgICMgc29tZXRoaW5nIGxpa2U6
ICJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY29udGludWUgY29ubmVjdGluZyAoeT0KZXMvbm8p
LiIKLSAgICAgICAgb3V0cHV0ID0zRCBwZXhwZWN0LnJ1biggY21kLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXZlbnRzPTNEeyAnXCh5ZXNcL25vXClcLionIDogJ3llc1xyXG4nLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLnNzd29yZDoqJyA6IHNjcF9j
b25maWdzWyAncGFzc3dvcmQ9CicgXSArICdcclxuJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBleHBlY3QuVElNRU9VVCA6IHByaW50X3RpY2tzIH0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTNEMTAgKQotICAgICAgICBpZiAnTm8gc3Vj
aCBmaWxlIG9yIGRpcmVjdG9yeScgaW4gb3V0cHV0OgotICAgICAgICAgICAgc3RhdHVzID0zRCAn
ZXJyb3InCi0gICAgICAgICAgICBtZXNzYWdlID0zRCAiTm8gZm9sZGVyIG5hbWVkICglcykgZXhp
c3RzIG9uIHRoZSBleHRlcm5hbCBzZXJ2aT0KY2UuIiAlIGZvbGRlcl9wYXRoCi0gICAgICAgICAg
ICBvayA9M0QgRmFsc2UKLSAgICAgICAgaWYgb2s6Ci0gICAgICAgICAgICBpZiAnYXNzd29yZDon
IGluIG91dHB1dDoKLSAgICAgICAgICAgICAgICAjIEVsaW1pbmF0ZSB0aGUgb3V0cHV0IGNyZWF0
ZWQgdXNpbmcgc3NoIGZyb20gdGhlIHRyZWUKLSAgICAgICAgICAgICAgICBvdXRwdXRfYXNfbGlz
dCA9M0Qgb3V0cHV0LnNwbGl0bGluZXMoKVsgMTogXQotICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICBvdXRwdXRfYXNfbGlzdCA9M0Qgb3V0cHV0LnNwbGl0bGluZXMoKQotICAgICAg
ICAgICAgcmV0dXJuIG91dHB1dF9hc19saXN0Ci0gICAgICAgIHJldHVybiB0cmFucy5yZXNwb25z
ZS5zZW5kX3JlZGlyZWN0KCB3ZWIudXJsX2ZvciggY29udHJvbGxlcj0zRCdyZT0KcXVlc3RzX2Fk
bWluJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhY3Rpb249M0Qnc2VsZWN0PQpfZGF0YXNldHNfdG9fdHJhbnNmZXInLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3RfaWQ9M0R0cmE9Cm5zLnNlY3VyaXR5LmVuY29kZV9pZCggcmVxdWVzdC5pZCApLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVy
bmFsX3NlcnZpY2U9Cl9pZD0zRHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggZXh0ZXJuYWxfc2Vy
dmljZS5pZCApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXR1cz0zRHN0YXR1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPTNEbWVzc2FnPQplICkgKQot
ICAgIGRlZiBfX2NyZWF0ZV9zYW1wbGVfZGF0YXNldHMoIHNlbGYsIHRyYW5zLCBzYW1wbGUsIHNl
bGVjdGVkX2RhdGFzZXRzX3Q9Cm9fdHJhbnNmZXIsIGV4dGVybmFsX3NlcnZpY2UgKToKLSAgICAg
ICAgZXh0ZXJuYWxfc2VydmljZS5sb2FkX2RhdGFfdHJhbnNmZXJfc2V0dGluZ3MoIHRyYW5zICkK
LSAgICAgICAgc2NwX2NvbmZpZ3MgPTNEIGV4dGVybmFsX3NlcnZpY2UuZGF0YV90cmFuc2Zlclsg
dHJhbnMubW9kZWwuRXh0ZXJuPQphbFNlcnZpY2UuZGF0YV90cmFuc2Zlcl9wcm90b2NvbC5TQ1Ag
XQotICAgICAgICBzYW1wbGVfZGF0YXNldF9maWxlX25hbWVzID0zRCBbXQotICAgICAgICBpZiBz
ZWxlY3RlZF9kYXRhc2V0c190b190cmFuc2ZlcjoKLSAgICAgICAgICAgIGZvciBmaWxlcGF0aCBp
biBzZWxlY3RlZF9kYXRhc2V0c190b190cmFuc2ZlcjoKLSAgICAgICAgICAgICAgICAjIEZJWE1F
OiBoYW5kbGUgZm9sZGVyIHNlbGVjdGlvbiAtIGlnbm9yZSBmb2xkZXJzIGZvciBub3cKLSAgICAg
ICAgICAgICAgICBpZiBmaWxlcGF0aFstMV0gIT0zRCBvcy5zZXA6Ci0gICAgICAgICAgICAgICAg
ICAgIG5hbWUgPTNEIHNlbGYuX19yZW5hbWVfZGF0YXNldCggc2FtcGxlLCBmaWxlcGF0aC5zcGxp
dD0KKCAnLycgKVstMV0sIHNjcF9jb25maWdzICkKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVz
ID0zRCB0cmFucy5hcHAubW9kZWwuU2FtcGxlRGF0YXNldC50cmFuc2Zlcl9zdGF0PQp1cy5OT1Rf
U1RBUlRFRAotICAgICAgICAgICAgICAgICAgICBzaXplID0zRCBzYW1wbGUuZ2V0X3VudHJhbnNm
ZXJyZWRfZGF0YXNldF9zaXplKCBmaWxlcGE9CnRoLCBzY3BfY29uZmlncyApCi0gICAgICAgICAg
ICAgICAgICAgIHNhbXBsZV9kYXRhc2V0ID0zRCB0cmFucy5tb2RlbC5TYW1wbGVEYXRhc2V0KCBz
YW1wbGU9Cj0zRHNhbXBsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3BhdGg9Cj0zRGZpbGVwYXRoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXR1cz0zRHM9CnRhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9M0RuYW09CmUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3Jf
bXNnPQo9M0QnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplPTNEc2l6PQplLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVybmFsX3M9CmVy
dmljZT0zRGV4dGVybmFsX3NlcnZpY2UgKQotICAgICAgICAgICAgICAgICAgICB0cmFucy5zYV9z
ZXNzaW9uLmFkZCggc2FtcGxlX2RhdGFzZXQgKQotICAgICAgICAgICAgICAgICAgICB0cmFucy5z
YV9zZXNzaW9uLmZsdXNoKCkKLSAgICAgICAgICAgICAgICAgICAgc2FtcGxlX2RhdGFzZXRfZmls
ZV9uYW1lcy5hcHBlbmQoIHN0ciggc2FtcGxlX2RhdGFzZXQuPQpuYW1lICkgKQotICAgICAgICBy
ZXR1cm4gc2FtcGxlX2RhdGFzZXRfZmlsZV9uYW1lcwogICAgIGRlZiBfX3JlbmFtZV9kYXRhc2V0
KCBzZWxmLCBzYW1wbGUsIGZpbGVwYXRoLCBzY3BfY29uZmlncyApOgogICAgICAgICBuYW1lID0z
RCBmaWxlcGF0aC5zcGxpdCggJy8nIClbLTFdCiAgICAgICAgIG9wdGlvbnMgPTNEIHNhbXBsZS5y
ZXF1ZXN0LnR5cGUucmVuYW1lX2RhdGFzZXRfb3B0aW9ucwpAQCAtNTYxLDkwICszODIsNiBAQAog
ICAgICAgICAgICAgZmx1c2hfbmVlZGVkID0zRCBUcnVlCiAgICAgICAgIGlmIGZsdXNoX25lZWRl
ZDoKICAgICAgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uZmx1c2goKQotICAgIGRlZiBfX2NyZWF0
ZV9kYXRhX3RyYW5zZmVyX21lc3NhZ2VzKCBzZWxmLCB0cmFucywgc2FtcGxlLCBzZWxlY3RlZF9z
YW09CnBsZV9kYXRhc2V0cyApOgotICAgICAgICAiIiIKLSAgICAgICAgQ3JlYXRlcyB0aGUgeG1s
IG1lc3NhZ2VzIHRvIHNlbmQgdG8gdGhlIHJhYmJpdG1xIHNlcnZlci4gSXQgcmV0dXJuPQpzIGEg
ZGljdGlvbmFyeSBvZiBtZXNzYWdlcwotICAgICAgICBrZXllZCBieSB0aGUgZXh0ZXJuYWwgc2Vy
dmljZSB1c2VkIHRvIHRyYW5zZmVyIHRoZSBkYXRhc2V0cwotICAgICAgICAiIiIKLSAgICAgICAg
IyBDcmVhdGUgdGhlIHhtbCBtZXNzYWdlIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgdGVtcGxhdGUK
LSAgICAgICAgeG1sID0zRCBcCi0gICAgICAgICAgICAnJycgPGRhdGFfdHJhbnNmZXI+Ci0gICAg
ICAgICAgICAgICAgICAgIDxnYWxheHlfaG9zdD4lKEdBTEFYWV9IT1NUKXM8L2dhbGF4eV9ob3N0
PgotICAgICAgICAgICAgICAgICAgICA8YXBpX2tleT4lKEFQSV9LRVkpczwvYXBpX2tleT4KLSAg
ICAgICAgICAgICAgICAgICAgPGRhdGFfaG9zdD4lKERBVEFfSE9TVClzPC9kYXRhX2hvc3Q+Ci0g
ICAgICAgICAgICAgICAgICAgIDxkYXRhX3VzZXI+JShEQVRBX1VTRVIpczwvZGF0YV91c2VyPgot
ICAgICAgICAgICAgICAgICAgICA8ZGF0YV9wYXNzd29yZD4lKERBVEFfUEFTU1dPUkQpczwvZGF0
YV9wYXNzd29yZD4KLSAgICAgICAgICAgICAgICAgICAgPHJlcXVlc3RfaWQ+JShSRVFVRVNUX0lE
KXM8L3JlcXVlc3RfaWQ+Ci0gICAgICAgICAgICAgICAgICAgIDxzYW1wbGVfaWQ+JShTQU1QTEVf
SUQpczwvc2FtcGxlX2lkPgotICAgICAgICAgICAgICAgICAgICA8bGlicmFyeV9pZD4lKExJQlJB
UllfSUQpczwvbGlicmFyeV9pZD4KLSAgICAgICAgICAgICAgICAgICAgPGZvbGRlcl9pZD4lKEZP
TERFUl9JRClzPC9mb2xkZXJfaWQ+Ci0gICAgICAgICAgICAgICAgICAgICUoREFUQVNFVFMpcwot
ICAgICAgICAgICAgICAgIDwvZGF0YV90cmFuc2Zlcj4nJycKLSAgICAgICAgZGF0YXNldF94bWwg
PTNEIFwKLSAgICAgICAgICAgICcnJzxkYXRhc2V0PgotICAgICAgICAgICAgICAgICAgIDxkYXRh
c2V0X2lkPiUoSUQpczwvZGF0YXNldF9pZD4KLSAgICAgICAgICAgICAgICAgICA8bmFtZT4lKE5B
TUUpczwvbmFtZT4KLSAgICAgICAgICAgICAgICAgICA8ZmlsZT4lKEZJTEUpczwvZmlsZT4KLSAg
ICAgICAgICAgICAgIDwvZGF0YXNldD4nJycKLSAgICAgICAgIyBIZXJlIHdlIGdyb3VwIGFsbCB0
aGUgc2FtcGxlX2RhdGFzZXRzIGJ5IHRoZSBleHRlcm5hbCBzZXJ2aWNlIHVzPQplZCB0byB0cmFu
c2ZlciB0aGVtLgotICAgICAgICAjIFRoZSBpZGVhIGlzIHRvIGJ1bmRsZSB1cCB0aGUgc2FtcGxl
X2RhdGFzZXRzIHdoaWNoIHVzZXMgdGhlIHNhbWU9CiBleHRlcm5hbCBzZXJ2aWNlIGFuZAotICAg
ICAgICAjIHNlbmQgYSBzaW5nbGUgQU1RUCBtZXNzYWdlIHRvIHRoZSBnYWxheHlfbGlzdGVuZXIK
LSAgICAgICAgZGF0YXNldF9lbGVtZW50cyA9M0Qge30KLSAgICAgICAgZm9yIHNhbXBsZV9kYXRh
c2V0IGluIHNlbGVjdGVkX3NhbXBsZV9kYXRhc2V0czoKLSAgICAgICAgICAgIGV4dGVybmFsX3Nl
cnZpY2UgPTNEIHNhbXBsZV9kYXRhc2V0LmV4dGVybmFsX3NlcnZpY2UKLSAgICAgICAgICAgIGlm
IHNhbXBsZV9kYXRhc2V0LnN0YXR1cyA9M0Q9M0QgdHJhbnMuYXBwLm1vZGVsLlNhbXBsZURhdGFz
ZXQuPQp0cmFuc2Zlcl9zdGF0dXMuTk9UX1NUQVJURUQ6Ci0gICAgICAgICAgICAgICAgaWYgbm90
IGRhdGFzZXRfZWxlbWVudHMuaGFzX2tleSggZXh0ZXJuYWxfc2VydmljZSApOgotICAgICAgICAg
ICAgICAgICAgICBkYXRhc2V0X2VsZW1lbnRzWyBleHRlcm5hbF9zZXJ2aWNlIF0gPTNEICcnCi0g
ICAgICAgICAgICAgICAgZGF0YXNldF9lbGVtZW50c1sgZXh0ZXJuYWxfc2VydmljZSBdICs9M0Qg
ZGF0YXNldF94bWwgJSBkaT0KY3QoIElEPTNEc3RyKCBzYW1wbGVfZGF0YXNldC5pZCApLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5BTUU9Cj0zRHNhbXBsZV9kYXRhc2V0Lm5hbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklM
RT0KPTNEc2FtcGxlX2RhdGFzZXQuZmlsZV9wYXRoICkKLSAgICAgICAgICAgICAgICAjIHVwZGF0
ZSB0aGUgZGF0YXNldCB0cmFuc2ZlciBzdGF0dXMKLSAgICAgICAgICAgICAgICBzYW1wbGVfZGF0
YXNldC5zdGF0dXMgPTNEIHRyYW5zLmFwcC5tb2RlbC5TYW1wbGVEYXRhc2V0LnRyPQphbnNmZXJf
c3RhdHVzLklOX1FVRVVFCi0gICAgICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5hZGQoIHNh
bXBsZV9kYXRhc2V0ICkKLSAgICAgICAgICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmZsdXNoKCkK
LSAgICAgICAgIyBGaW5hbGx5IHByZXBlbmQgdGhlIGV4dGVybmFsIHNlcnZpY2UgaW5mbyB0byB0
aGUgc2V0cyBvZiBzYW1wbGUgPQpkYXRhc2V0cwotICAgICAgICBtZXNzYWdlcyA9M0QgW10KLSAg
ICAgICAgZm9yIGV4dGVybmFsX3NlcnZpY2UsIGRhdGFzZXRfZWxlbSBpbiBkYXRhc2V0X2VsZW1l
bnRzLml0ZW1zKCk6Ci0gICAgICAgICAgICBleHRlcm5hbF9zZXJ2aWNlLmxvYWRfZGF0YV90cmFu
c2Zlcl9zZXR0aW5ncyggdHJhbnMgKQotICAgICAgICAgICAgc2NwX2NvbmZpZ3MgPTNEIGV4dGVy
bmFsX3NlcnZpY2UuZGF0YV90cmFuc2ZlclsgdHJhbnMubW9kZWwuRXg9CnRlcm5hbFNlcnZpY2Uu
ZGF0YV90cmFuc2Zlcl9wcm90b2NvbC5TQ1AgXQotICAgICAgICAgICAgIyBDaGVjayBkYXRhIHRy
YW5zZmVyIHNldHRpbmdzCi0gICAgICAgICAgICBlcnJfbXNnID0zRCBzZWxmLl9fdmFsaWRhdGVf
ZGF0YV90cmFuc2Zlcl9zZXR0aW5ncyggdHJhbnMsIHNhbT0KcGxlLnJlcXVlc3QudHlwZSwgc2Nw
X2NvbmZpZ3MgKQotICAgICAgICAgICAgaWYgZXJyX21zZzoKLSAgICAgICAgICAgICAgICByZXR1
cm4gdHJhbnMucmVzcG9uc2Uuc2VuZF9yZWRpcmVjdCggd2ViLnVybF9mb3IoIGNvbnRyb2xsPQpl
cj0zRCdyZXF1ZXN0c19hZG1pbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249Cj0zRCdtYW5hZ2VfZGF0YXNl
dHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2FtcGxlX2k9CmQ9M0R0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHNh
bXBsZS5pZCApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPQo9M0QnZXJyb3InLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2Fn
ZT0KPTNEZXJyX21zZyApICkKLSAgICAgICAgICAgIG1lc3NhZ2UgPTNEIHhtbCAlIGRpY3QoIEdB
TEFYWV9IT1NUPTNEdHJhbnMucmVxdWVzdC5ob3N0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFQSV9LRVk9M0R0cmFucy51c2VyLmFwaV9rZXlzWzBdLmtleSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRBX0hPU1Q9M0RzY3BfY29uZmlnc1sgJ2hvc3Qn
IF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFUQV9VU0VSPTNEc2NwX2Nv
bmZpZ3NbICd1c2VyX25hbWUnIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
REFUQV9QQVNTV09SRD0zRHNjcF9jb25maWdzWyAncGFzc3dvcmQnID0KXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSRVFVRVNUX0lEPTNEc3RyKCBzYW1wbGUucmVxdWVzdC5p
ZCApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNBTVBMRV9JRD0zRHN0cigg
c2FtcGxlLmlkICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCUkFSWV9J
RD0zRHN0ciggc2FtcGxlLmxpYnJhcnkuaWQgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGT0xERVJfSUQ9M0RzdHIoIHNhbXBsZS5mb2xkZXIuaWQgKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEQVRBU0VUUz0zRGRhdGFzZXRfZWxlbSApCi0gICAgICAg
ICAgICBtZXNzYWdlcy5hcHBlbmQoIG1lc3NhZ2UucmVwbGFjZSggJ1xuJywgJycgKS5yZXBsYWNl
KCAnXHInLCAnJz0KICkgKQotICAgICAgICByZXR1cm4gbWVzc2FnZXMKLSAgICBkZWYgX192YWxp
ZGF0ZV9kYXRhX3RyYW5zZmVyX3NldHRpbmdzKCBzZWxmLCB0cmFucywgcmVxdWVzdF90eXBlLCBz
Y3BfPQpjb25maWdzICk6Ci0gICAgICAgIGVycl9tc2cgPTNEICcnCi0gICAgICAgICMgY2hlY2sg
dGhlIGV4dGVybmFsIHNlcnZpY2UgbG9naW4gaW5mbwotICAgICAgICBpZiBub3Qgc2NwX2NvbmZp
Z3MuZ2V0KCAnaG9zdCcsICcnICkgXAotICAgICAgICAgICAgb3Igbm90IHNjcF9jb25maWdzLmdl
dCggJ3VzZXJfbmFtZScsICcnICkgXAotICAgICAgICAgICAgb3Igbm90IHNjcF9jb25maWdzLmdl
dCggJ3Bhc3N3b3JkJywgJycgKToKLSAgICAgICAgICAgIGVycl9tc2cgKz0zRCAiRXJyb3IgaW4g
ZXh0ZXJuYWwgc2VydmljZSBsb2dpbiBpbmZvcm1hdGlvbi4gIgotICAgICAgICBpZiBub3QgdHJh
bnMudXNlci5hcGlfa2V5czoKLSAgICAgICAgICAgIGVycl9tc2cgKz0zRCAiU2V0IHlvdXIgQVBJ
IEtleSBpbiB5b3VyIFVzZXIgUHJlZmVyZW5jZXMgdG8gdHJhPQpuc2ZlciBkYXRhc2V0cy4gIgot
ICAgICAgICAjIENoZWNrIGlmIGxpYnJhcnlfaW1wb3J0X2RpciBpcyBzZXQKLSAgICAgICAgaWYg
bm90IHRyYW5zLmFwcC5jb25maWcubGlicmFyeV9pbXBvcnRfZGlyOgotICAgICAgICAgICAgZXJy
X21zZyA9M0QgIidUaGUgbGlicmFyeV9pbXBvcnRfZGlyJyBzZXR0aW5nIGlzIG5vdCBjb3JyZWN0
bHk9CiBzZXQgaW4gdGhlIEdhbGF4eSBjb25maWcgZmlsZS4gIgotICAgICAgICAjIENoZWNrIHRo
ZSBSYWJiaXRNUSBzZXJ2ZXIgc2V0dGluZ3MgaW4gdGhlIGNvbmZpZyBmaWxlCi0gICAgICAgIGZv
ciBrLCB2IGluIHRyYW5zLmFwcC5jb25maWcuYW1xcC5pdGVtcygpOgotICAgICAgICAgICAgaWYg
bm90IHY6Ci0gICAgICAgICAgICAgICAgZXJyX21zZyArPTNEICdTZXQgUmFiYml0TVEgc2VydmVy
IHNldHRpbmdzIGluIHRoZSAiZ2FsYXh5Xz0KYW1xcCIgc2VjdGlvbiBvZiB0aGUgR2FsYXh5IGNv
bmZpZyBmaWxlLCBzcGVjaWZpY2FsbHkgIiVzIiBpcyBub3Qgc2V0LicgJSBrCi0gICAgICAgICAg
ICAgICAgYnJlYWsKLSAgICAgICAgcmV0dXJuIGVycl9tc2cKICAgICBAd2ViLmV4cG9zZQogICAg
IEB3ZWIucmVxdWlyZV9hZG1pbgogICAgIGRlZiBpbml0aWF0ZV9kYXRhX3RyYW5zZmVyKCBzZWxm
LCB0cmFucywgc2FtcGxlX2lkLCBzYW1wbGVfZGF0YXNldHM9M0Q9CltdLCBzYW1wbGVfZGF0YXNl
dF9pZD0zRCcnICk6CkBAIC02ODYsMzUgKzQyMyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0KICAg
ICAgICAgICAgICAgICAgZXh0ZXJuYWxfc2VydmljZT0zRGV4dGVybmFsX3NlcnZpY2UsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0KICAgICAgICAgICAgICAgICAgZXh0ZXJuYWxfc2VydmljZV90eXBlPTNE
ZXh0ZXJuYWxfc2VydmljZV90eXBlICkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgVE9E
TzogVXNpbmcgUmFiYml0TXEgZm9yIG5vdywgYnV0IGVsaW1pbmF0ZSB0aGlzIGVudGlyZSBibG9j
PQprIHdoZW4gd2UgcmVwbGFjZSBSYWJiaXRNcSB3aXRoIEdhbGF4eSdzCi0gICAgICAgICAgICAj
IG93biBtZXNzYWdpbmcgZW5naW5lLiAgV2UncmUgaG9sZGluZyBvZmYgb24gdXNpbmcgdGhlIG5l
dyB3YT0KeSB0byB0cmFuc2ZlciBmaWxlcyBtYW51YWxseSB1bnRpbCB3ZQotICAgICAgICAgICAg
IyBpbXBsZW1lbnQgYSBHYWxheHktcHJvcHJpZXRhcnkgbWVzc2FnaW5nIGVuZ2luZSBiZWNhdXNl
IHRoZSA9CmRlZmVycmVkIGpvYiBwbHVnaW5zIGN1cnJlbnRseSBwZXJmb3JtCi0gICAgICAgICAg
ICAjIGNvbnN0YW50IGRiIGhpdHMgdG8gY2hlY2sgZm9yIGRlZmVycmVkIGpvYnMgdGhhdCBhcmUg
bm90IGluID0KYSBmaW5pc2hlZCBzdGF0ZS4KLSAgICAgICAgICAgICMgQ3JlYXRlIHRoZSBtZXNz
YWdlCi0gICAgICAgICAgICBtZXNzYWdlcyA9M0Qgc2VsZi5fX2NyZWF0ZV9kYXRhX3RyYW5zZmVy
X21lc3NhZ2VzKCB0cmFucywgc2FtcD0KbGUsIHNhbXBsZV9kYXRhc2V0cyApCi0gICAgICAgICAg
ICAjIFNlbmQgdGhlIG1lc3NhZ2VzCi0gICAgICAgICAgICBmb3Igcm1xX21zZyBpbiBtZXNzYWdl
czoKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbm4gPTNEIGFt
cXAuQ29ubmVjdGlvbiggaG9zdD0zRHRyYW5zLmFwcC5jb25maWcuYW1xcD0KWyAnaG9zdCcgXSAr
ICI6IiArIHRyYW5zLmFwcC5jb25maWcuYW1xcFsgJ3BvcnQnIF0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJpZD0zRHRyYW5zLmFwcC5jb25maWcuYW1x
cD0KWyAndXNlcmlkJyBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwYXNzd29yZD0zRHRyYW5zLmFwcC5jb25maWcuYW09CnFwWyAncGFzc3dvcmQnIF0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWxfaG9zdD0z
RHRyYW5zLmFwcC5jb25maT0KZy5hbXFwWyAndmlydHVhbF9ob3N0JyBdKQotICAgICAgICAgICAg
ICAgICAgICBjaGFuID0zRCBjb25uLmNoYW5uZWwoKQotICAgICAgICAgICAgICAgICAgICBtc2cg
PTNEIGFtcXAuTWVzc2FnZSggcm1xX21zZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250ZW50X3R5cGU9M0QndGV4dC9wbGFpbicsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25faGVhZGVycz0zRHsgJ21zZ190eXBl
Jz0KOiAnZGF0YV90cmFuc2ZlcicgfSApCi0gICAgICAgICAgICAgICAgICAgIG1zZy5wcm9wZXJ0
aWVzWyAiZGVsaXZlcnlfbW9kZSIgXSA9M0QgMgotICAgICAgICAgICAgICAgICAgICBjaGFuLmJh
c2ljX3B1Ymxpc2goIG1zZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleGNoYW5nZT0zRHRyYW5zLmFwcC5jb25maWcuYW1xcFsgPQonZXhjaGFuZ2UnIF0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGluZ19rZXk9M0R0cmFucy5h
cHAuY29uZmlnLmFtcT0KcFsgJ3JvdXRpbmdfa2V5JyBdICkKLSAgICAgICAgICAgICAgICAgICAg
Y2hhbi5jbG9zZSgpCi0gICAgICAgICAgICAgICAgICAgIGNvbm4uY2xvc2UoKQotICAgICAgICAg
ICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2Ug
PTNEICJFcnJvciBzZW5kaW5nIHRoZSBkYXRhIHRyYW5zZmVyIG1lc3NhZ2UgdD0KbyB0aGUgR2Fs
YXh5IEFNUVAgbWVzc2FnZSBxdWV1ZTo8YnIvPiVzIiAlIHN0cihlKQotICAgICAgICAgICAgICAg
ICAgICBzdGF0dXMgPTNEICJlcnJvciIKLSAgICAgICAgICAgIGlmIG5vdCBtZXNzYWdlOgotICAg
ICAgICAgICAgICAgIG1lc3NhZ2UgPTNEICIlaSBkYXRhc2V0cyBoYXZlIGJlZW4gcXVldWVkIGZv
ciB0cmFuc2ZlciBmcm89Cm0gdGhlIGV4dGVybmFsIHNlcnZpY2UuIiAlIGxlbiggc2FtcGxlX2Rh
dGFzZXRzICkKLSAgICAgICAgICAgICAgICBzdGF0dXMgPTNEICJkb25lIgorICAgICAgICAgICAg
bWVzc2FnZSA9M0QgIk1lc3NhZ2UgcXVldWUgdHJhbnNmZXIgaXMgbm8gbG9uZ2VyIHN1cHBvcnRl
ZCwgcGw9CmVhc2Ugc2V0IGVuYWJsZV9iZXRhX2pvYl9tYW5hZ2VycyA9M0QgVHJ1ZSBpbiBnYWxh
eHkuaW5pIgorICAgICAgICAgICAgc3RhdHVzID0zRCAiZXJyb3IiCiAgICAgICAgIHJldHVybiB0
cmFucy5yZXNwb25zZS5zZW5kX3JlZGlyZWN0KCB3ZWIudXJsX2ZvciggY29udHJvbGxlcj0zRCdy
ZT0KcXVlc3RzX2FkbWluJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhY3Rpb249M0QnbWFuYWdlPQpfZGF0YXNldHMnLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBs
ZV9pZD0zRHRyYW49CnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBzYW1wbGUuaWQgKSwKCmRpZmYgLXIg
YzFjYzc2ZmEzZDY2ZWZiMDcwZjE5NjMxNTFjNGFjMGNhZTA0OGYzZiAtciA3Y2E4ZjBlY2IyYWU4
YjFiYTJiNTNlMT0KZmQwOWNjYWU0ODE5NDBhNDkgbGliL2dhbGF4eS93ZWJhcHBzL3Rvb2xfc2hl
ZC9jb250cm9sbGVycy9yZXBvc2l0b3J5LnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy90b29s
X3NoZWQvY29udHJvbGxlcnMvcmVwb3NpdG9yeS5weQorKysgYi9saWIvZ2FsYXh5L3dlYmFwcHMv
dG9vbF9zaGVkL2NvbnRyb2xsZXJzL3JlcG9zaXRvcnkucHkKQEAgLTE2MjksMTEgKzE2MjksMTEg
QEAKICAgICAgICAgcmV0dXJuICcnCj0yMAogICAgIEB3ZWIuanNvbgotICAgIGRlZiBnZXRfZmls
ZV9jb250ZW50cyggc2VsZiwgdHJhbnMsIGZpbGVfcGF0aCApOgorICAgIGRlZiBnZXRfZmlsZV9j
b250ZW50cyggc2VsZiwgdHJhbnMsIGZpbGVfcGF0aCwgcmVwb3NpdG9yeV9pZCApOgogICAgICAg
ICAjIEF2b2lkIGNhY2hpbmcKICAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVhZGVyc1snUHJhZ21h
J10gPTNEICduby1jYWNoZScKICAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVhZGVyc1snRXhwaXJl
cyddID0zRCAnMCcKLSAgICAgICAgcmV0dXJuIHN1Yy5nZXRfcmVwb3NpdG9yeV9maWxlX2NvbnRl
bnRzKCBmaWxlX3BhdGggKQorICAgICAgICByZXR1cm4gc3VjLmdldF9yZXBvc2l0b3J5X2ZpbGVf
Y29udGVudHMoIHRyYW5zLmFwcCwgZmlsZV9wYXRoLCByZXA9Cm9zaXRvcnlfaWQgKQo9MjAKICAg
ICBAd2ViLmV4cG9zZQogICAgIGRlZiBnZXRfZnVuY3Rpb25hbF90ZXN0X3Jzcyggc2VsZiwgdHJh
bnMsICoqa3dkICk6CkBAIC0yNjAzLDExICsyNjAzLDExIEBACiAgICAgICAgIHJldHVybiAnJwo9
MjAKICAgICBAd2ViLmpzb24KLSAgICBkZWYgb3Blbl9mb2xkZXIoIHNlbGYsIHRyYW5zLCBmb2xk
ZXJfcGF0aCApOgorICAgIGRlZiBvcGVuX2ZvbGRlciggc2VsZiwgdHJhbnMsIGZvbGRlcl9wYXRo
LCByZXBvc2l0b3J5X2lkICk6CiAgICAgICAgICMgQXZvaWQgY2FjaGluZwogICAgICAgICB0cmFu
cy5yZXNwb25zZS5oZWFkZXJzWydQcmFnbWEnXSA9M0QgJ25vLWNhY2hlJwogICAgICAgICB0cmFu
cy5yZXNwb25zZS5oZWFkZXJzWydFeHBpcmVzJ10gPTNEICcwJwotICAgICAgICByZXR1cm4gc3Vj
Lm9wZW5fcmVwb3NpdG9yeV9maWxlc19mb2xkZXIoIGZvbGRlcl9wYXRoICkKKyAgICAgICAgcmV0
dXJuIHN1Yy5vcGVuX3JlcG9zaXRvcnlfZmlsZXNfZm9sZGVyKCB0cmFucy5hcHAsIGZvbGRlcl9w
YXRoLCByPQplcG9zaXRvcnlfaWQgKQo9MjAKICAgICBAd2ViLmV4cG9zZQogICAgIGRlZiBwcmV2
aWV3X3Rvb2xzX2luX2NoYW5nZXNldCggc2VsZiwgdHJhbnMsIHJlcG9zaXRvcnlfaWQsICoqa3dk
ICk6CgpkaWZmIC1yIGMxY2M3NmZhM2Q2NmVmYjA3MGYxOTYzMTUxYzRhYzBjYWUwNDhmM2YgLXIg
N2NhOGYwZWNiMmFlOGIxYmEyYjUzZTE9CmZkMDljY2FlNDgxOTQwYTQ5IGxpYi9nYWxheHkvd2Vi
YXBwcy90b29sX3NoZWQvZnJhbWV3b3JrL21pZGRsZXdhcmUvaGcucHkKLS0tIGEvbGliL2dhbGF4
eS93ZWJhcHBzL3Rvb2xfc2hlZC9mcmFtZXdvcmsvbWlkZGxld2FyZS9oZy5weQorKysgYi9saWIv
Z2FsYXh5L3dlYmFwcHMvdG9vbF9zaGVkL2ZyYW1ld29yay9taWRkbGV3YXJlL2hnLnB5CkBAIC05
LDcgKzksNyBAQAogZnJvbSBwYXN0ZS5odHRwaGVhZGVycyBpbXBvcnQgQVVUSF9UWVBFCiBmcm9t
IHBhc3RlLmh0dHBoZWFkZXJzIGltcG9ydCBSRU1PVEVfVVNFUgo9MjAKLWZyb20gZ2FsYXh5LnV0
aWwgaW1wb3J0IGFzYm9vbAorZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgYXNib29sLCBzYWZlX3Jl
bHBhdGgKIGZyb20gZ2FsYXh5LnV0aWwuaGFzaF91dGlsIGltcG9ydCBuZXdfc2VjdXJlX2hhc2gK
IGZyb20gdG9vbF9zaGVkLnV0aWwgaW1wb3J0IGhnX3V0aWwKIGltcG9ydCB0b29sX3NoZWQucmVw
b3NpdG9yeV90eXBlcy51dGlsIGFzIHJ0X3V0aWwKQEAgLTExMyw3ICsxMTMsMTEgQEAKICAgICAg
ICAgICAgICAgICAgICAgZmgud3JpdGUoIGNodW5rICkKICAgICAgICAgICAgICAgICBmaC5jbG9z
ZSgpCiAgICAgICAgICAgICAgICAgZmggPTNEIG9wZW4oIHRtcF9maWxlbmFtZSwgJ3JiJyApCi0g
ICAgICAgICAgICAgICAgY2hhbmdlc2V0X2dyb3VwcyA9M0QganNvbi5sb2FkcyggaGdfdXRpbC5i
dW5kbGVfdG9fanNvbiggZj0KaCApICkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAg
ICAgICAgICAgIGNoYW5nZXNldF9ncm91cHMgPTNEIGpzb24ubG9hZHMoIGhnX3V0aWwuYnVuZGxl
X3RvX2pzbz0KbiggZmggKSApCisgICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9y
OgorICAgICAgICAgICAgICAgICAgICBtc2cgPTNEICdZb3VyIHZlcnNpb24gb2YgTWVyY3VyaWFs
IGlzIG5vdCBzdXBwb3J0ZWQuIFA9CmxlYXNlIHVzZSBhIHZlcnNpb24gPCAzLjUnCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBzZWxmLl9fZGlzcGxheV9leGNlcHRpb25fcmVtb3RlbHkoIHN0
YXJ0X3Jlc3Bvbj0Kc2UsIG1zZyApCiAgICAgICAgICAgICAgICAgZmguY2xvc2UoKQogICAgICAg
ICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKCB0bXBfZmlsZW5h
bWUgKQpAQCAtMTIyLDYgKzEyNiwxOSBAQAogICAgICAgICAgICAgICAgIGlmIGNoYW5nZXNldF9n
cm91cHM6CiAgICAgICAgICAgICAgICAgICAgICMgQ2hlY2sgdGhlIHJlcG9zaXRvcnkgdHlwZSB0
byBtYWtlIHN1cmUgaW5hcHByb3ByaWF0ZT0KIGZpbGVzIGFyZSBub3QgYmVpbmcgcHVzaGVkLgog
ICAgICAgICAgICAgICAgICAgICBpZiAnUEFUSF9JTkZPJyBpbiBlbnZpcm9uOgorICAgICAgICAg
ICAgICAgICAgICAgICAgIyBFbnN1cmUgdGhlcmUgYXJlIG5vIHN5bWxpbmtzIHdpdGggdGFyZ2V0
cyBvdXRzaWQ9CmUgdGhlIHJlcG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBlbnRyeSBp
biBjaGFuZ2VzZXRfZ3JvdXBzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxlbigg
ZW50cnkgKSA9M0Q9M0QgMjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5h
bWUsIGNoYW5nZV9saXN0ID0zRCBlbnRyeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiBub3QgaXNpbnN0YW5jZShjaGFuZ2VfbGlzdCwgbGlzdCk6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VfbGlzdCA9M0QgW2NoYW5nZV9saXN0XQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgY2hhbmdlIGluIGNoYW5nZV9saXN0OgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHBhdGNoIGluIGNoYW5nZVsnZGF0
YSddOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCA9M0Qg
cGF0Y2hbJ2Jsb2NrJ10uc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICggKCBwYXRjaFsnZW5kJ10gLSBwYXRjaFsnc3RhcnQ9CiddID0zRD0zRCAwICkg
YW5kIG5vdCBzYWZlX3JlbHBhdGgoIHRhcmdldCApICk6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1zZyA9M0QgIkNoYW5nZXMgaW5jbHVkZSBhIHN5bT0KbGlu
ayBvdXRzaWRlIG9mIHRoZSByZXBvc2l0b3J5OiAlcyAtPiAlcyIgJSAoIGZpbGVuYW1lLCB0YXJn
ZXQgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2cud2Fy
bmluZyggbXNnICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHNlbGYuX19kaXNwbGF5X2V4Y2VwdGlvPQpuX3JlbW90ZWx5KCBzdGFydF9yZXNwb25z
ZSwgbXNnICkKICAgICAgICAgICAgICAgICAgICAgICAgICMgSW5zdGFudGlhdGUgYSBkYXRhYmFz
ZSBjb25uZWN0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICBlbmdpbmUgPTNEIHNxbGFsY2hl
bXkuY3JlYXRlX2VuZ2luZSggc2VsZi5kYl91cmwgKQogICAgICAgICAgICAgICAgICAgICAgICAg
Y29ubmVjdGlvbiA9M0QgZW5naW5lLmNvbm5lY3QoKQoKZGlmZiAtciBjMWNjNzZmYTNkNjZlZmIw
NzBmMTk2MzE1MWM0YWMwY2FlMDQ4ZjNmIC1yIDdjYThmMGVjYjJhZThiMWJhMmI1M2UxPQpmZDA5
Y2NhZTQ4MTk0MGE0OSBsaWIvZ2FsYXh5L3dvcmtmbG93L3JlbmRlci5weQotLS0gYS9saWIvZ2Fs
YXh5L3dvcmtmbG93L3JlbmRlci5weQorKysgYi9saWIvZ2FsYXh5L3dvcmtmbG93L3JlbmRlci5w
eQpAQCAtMzQsOCArMzQsOCBAQAogICAgICAgICBjYW52YXMuYXBwZW5kKCBzZWxmLmJveGVzICkK
ICAgICAgICAgY2FudmFzLmFwcGVuZCggc2VsZi50ZXh0ICkKICAgICAgICAgd2lkdGgsIGhlaWdo
dCA9M0QgKCBtYXhfeCArIG1heF93aWR0aCArIDUwICksIG1heF95ICsgMzAwCi0gICAgICAgIGNh
bnZhc1sgJ3dpZHRoJyBdID0zRCAiJXMgcHgiICUgd2lkdGgKLSAgICAgICAgY2FudmFzWyAnaGVp
Z2h0JyBdID0zRCAiJXMgcHgiICUgaGVpZ2h0CisgICAgICAgIGNhbnZhc1sgJ3dpZHRoJyBdID0z
RCAiJXNweCIgJSB3aWR0aAorICAgICAgICBjYW52YXNbICdoZWlnaHQnIF0gPTNEICIlc3B4IiAl
IGhlaWdodAogICAgICAgICBjYW52YXNbICd2aWV3Qm94JyBdID0zRCAiMCAwICVzICVzIiAlICgg
d2lkdGgsIGhlaWdodCApCj0yMAogICAgIGRlZiBhZGRfYm94ZXMoIHNlbGYsIHN0ZXBfZGljdCwg
d2lkdGgsIG5hbWVfZmlsbCApOgpAQCAtMTIwLDcgKzEyMCw3IEBACiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGp1c3RlZFsgMSBdIC0gbWFyZ2luLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fY29vcmRzWyAwIF0g
LSAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX2Nv
b3Jkc1sgMSBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXJyb3dfZW5kPTNEInRydWUiICkuU1ZHKCkgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXJyb3dfZW5kPTNEImNvbm5fJXMiICUgKGxlbig9CnNlbGYuY29u
bmVjdG9ycy5rZXlzKCkpICsgMSkgKS5TVkcoKSApCj0yMAogICAgIGRlZiBhZGRfc3RlcHMoIHNl
bGYsIGhpZ2hsaWdodF9lcnJvcnM9M0RGYWxzZSApOgogICAgICAgICAjIE9ubHkgaGlnaGxpZ2h0
IG1pc3NpbmcgdG9vbHMgaWYgZGlzcGxheWluZyBpbiB0aGUgdG9vbCBzaGVkLgoKZGlmZiAtciBj
MWNjNzZmYTNkNjZlZmIwNzBmMTk2MzE1MWM0YWMwY2FlMDQ4ZjNmIC1yIDdjYThmMGVjYjJhZThi
MWJhMmI1M2UxPQpmZDA5Y2NhZTQ4MTk0MGE0OSBsaWIvdG9vbF9zaGVkL2NhcHN1bGUvY2Fwc3Vs
ZV9tYW5hZ2VyLnB5Ci0tLSBhL2xpYi90b29sX3NoZWQvY2Fwc3VsZS9jYXBzdWxlX21hbmFnZXIu
cHkKKysrIGIvbGliL3Rvb2xfc2hlZC9jYXBzdWxlL2NhcHN1bGVfbWFuYWdlci5weQpAQCAtMTIs
NiArMTIsNyBAQAogZnJvbSBnYWxheHkubW9kZWwub3JtIGltcG9ydCBhbmRfCiBmcm9tIGdhbGF4
eS51dGlsIGltcG9ydCBhc2Jvb2wKIGZyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IENIVU5LX1NJWkUK
K2Zyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IHNhZmVfcmVscGF0aAogZnJvbSBnYWxheHkudXRpbC5v
ZGljdCBpbXBvcnQgb2RpY3QKPTIwCiBmcm9tIHRvb2xfc2hlZC5kZXBlbmRlbmNpZXMucmVwb3Np
dG9yeS5yZWxhdGlvbl9idWlsZGVyIGltcG9ydCBSZWxhdGlvbkJ1aT0KbGRlcgpAQCAtNzI3LDI5
ICs3MjgsMTYgQEAKICAgICAgICAgcmVwbyA9M0QgaGdfdXRpbC5nZXRfcmVwb19mb3JfcmVwb3Np
dG9yeSggc2VsZi5hcHAsIHJlcG9zaXRvcnk9M0ROPQpvbmUsIHJlcG9fcGF0aD0zRHJlcG9fZGly
LCBjcmVhdGU9M0RGYWxzZSApCiAgICAgICAgIHVuZGVzaXJhYmxlX2RpcnNfcmVtb3ZlZCA9M0Qg
MAogICAgICAgICB1bmRlc2lyYWJsZV9maWxlc19yZW1vdmVkID0zRCAwCi0gICAgICAgIG9rLCBl
cnJvcl9tZXNzYWdlID0zRCBjb21taXRfdXRpbC5jaGVja19hcmNoaXZlKCByZXBvc2l0b3J5LCBh
cmNoaT0KdmUgKQotICAgICAgICBpZiBvazoKKyAgICAgICAgY2hlY2tfcmVzdWx0cyA9M0QgY29t
bWl0X3V0aWwuY2hlY2tfYXJjaGl2ZSggcmVwb3NpdG9yeSwgYXJjaGl2ZSApCisgICAgICAgICMg
V2UgZmlsdGVyIG91dCB1bmRlc2lyYWJsZSBmaWxlcyBidXQgZmFpbCBvbiB1bmRlc3JpYWJsZSBk
aXJzLiBOb3QKKyAgICAgICAgIyBzdXJlIHdoeSwganVzdCB0cnlpbmcgdG8gbWFpbnRhaW4gdGhl
IHNhbWUgYmVoYXZpb3IgYXMgYmVmb3JlLiAtPQpuYXRlCisgICAgICAgIGlmIG5vdCBjaGVja19y
ZXN1bHRzLmludmFsaWQgYW5kIG5vdCBjaGVja19yZXN1bHRzLnVuZGVzaXJhYmxlX2Rpcj0KczoK
ICAgICAgICAgICAgIGZ1bGxfcGF0aCA9M0Qgb3MucGF0aC5hYnNwYXRoKCByZXBvX2RpciApCi0g
ICAgICAgICAgICBmaWxlbmFtZXNfaW5fYXJjaGl2ZSA9M0QgW10KLSAgICAgICAgICAgIGZvciB0
YXJpbmZvX29iaiBpbiBhcmNoaXZlLmdldG1lbWJlcnMoKToKLSAgICAgICAgICAgICAgICAjIENo
ZWNrIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBpbiB0aGUgYXJjaGl2ZS4KLSAgICAgICAgICAgICAg
ICBvayA9M0Qgb3MucGF0aC5iYXNlbmFtZSggdGFyaW5mb19vYmoubmFtZSApIG5vdCBpbiBjb21t
aXRfPQp1dGlsLlVOREVTSVJBQkxFX0ZJTEVTCi0gICAgICAgICAgICAgICAgaWYgb2s6Ci0gICAg
ICAgICAgICAgICAgICAgIGZvciBmaWxlX3BhdGhfaXRlbSBpbiB0YXJpbmZvX29iai5uYW1lLnNw
bGl0KCAnLycgKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpbGVfcGF0aF9pdGVtIGlu
IGNvbW1pdF91dGlsLlVOREVTSVJBQkxFX0RJUlM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5kZXNpcmFibGVfZGlyc19yZW1vdmVkICs9M0QgMQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVycm9yX21lc3NhZ2UgPTNEICdJbXBvcnQgZmFpbGVkOiBpbnZhbGlkIGZpbGU9CiBw
YXRoIDxiPiVzPC9iPiBpbiBhcmNoaXZlIDxiPiVzPC9iPicgJSBcCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICggc3RyKCBmaWxlX3BhdGhfaXRlbSApLCBzdHIoIGFyY2hpdmVfZmls
ZT0KX25hbWUgKSApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0c19kaWN0WyAn
b2snIF0gPTNEIEZhbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0c19kaWN0
WyAnZXJyb3JfbWVzc2FnZScgXSArPTNEIGVycm9yX21lcz0Kc2FnZQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiByZXN1bHRzX2RpY3QKLSAgICAgICAgICAgICAgICAgICAgZmls
ZW5hbWVzX2luX2FyY2hpdmUuYXBwZW5kKCB0YXJpbmZvX29iai5uYW1lICkKLSAgICAgICAgICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICB1bmRlc2lyYWJsZV9maWxlc19yZW1vdmVk
ICs9M0QgMQogICAgICAgICAgICAgIyBFeHRyYWN0IHRoZSB1cGxvYWRlZCBhcmNoaXZlIHRvIHRo
ZSByZXBvc2l0b3J5IHJvb3QuCi0gICAgICAgICAgICBhcmNoaXZlLmV4dHJhY3RhbGwoIHBhdGg9
M0RmdWxsX3BhdGggKQorICAgICAgICAgICAgYXJjaGl2ZS5leHRyYWN0YWxsKCBwYXRoPTNEZnVs
bF9wYXRoLCBtZW1iZXJzPTNEY2hlY2tfcmVzdWx0cy49CnZhbGlkICkKICAgICAgICAgICAgIGFy
Y2hpdmUuY2xvc2UoKQotICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVuYW1lc19pbl9h
cmNoaXZlOgorICAgICAgICAgICAgZm9yIHRhcl9tZW1iZXIgaW4gY2hlY2tfcmVzdWx0cy52YWxp
ZDoKKyAgICAgICAgICAgICAgICBmaWxlbmFtZSA9M0QgdGFyX21lbWJlci5uYW1lCiAgICAgICAg
ICAgICAgICAgdXBsb2FkZWRfZmlsZV9uYW1lID0zRCBvcy5wYXRoLmpvaW4oIGZ1bGxfcGF0aCwg
ZmlsZW5hbWUgKQogICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguc3BsaXQoIHVwbG9hZGVkX2Zp
bGVfbmFtZSApWyAtMSBdID0zRD0zRCBydF91dGk9CmwuUkVQT1NJVE9SWV9ERVBFTkRFTkNZX0RF
RklOSVRJT05fRklMRU5BTUU6CiAgICAgICAgICAgICAgICAgICAgICMgSW5zcGVjdCB0aGUgY29u
dGVudHMgb2YgdGhlIGZpbGUgdG8gc2VlIGlmIHRvb2xzaGVkID0Kb3IgY2hhbmdlc2V0X3Jldmlz
aW9uIGF0dHJpYnV0ZXMKQEAgLTc3Niw2ICs3NjQsOSBAQAogICAgICAgICAgICAgbmV3X3JlcG9f
YWxlcnQgPTNEIFRydWUKICAgICAgICAgICAgICMgU2luY2UgdGhlIHJlcG9zaXRvcnkgaXMgbmV3
LCB0aGUgZm9sbG93aW5nIG11c3QgYmUgRmFsc2UuCiAgICAgICAgICAgICByZW1vdmVfcmVwb19m
aWxlc19ub3RfaW5fdGFyID0zRCBGYWxzZQorICAgICAgICAgICAgZmlsZW5hbWVzX2luX2FyY2hp
dmUgPTNEIFsgbWVtYmVyLm5hbWUgZm9yIG1lbWJlciBpbiBjaGVja19yZXM9CnVsdHMudmFsaWQg
XQorICAgICAgICAgICAgdW5kZXNpcmFibGVfZmlsZXNfcmVtb3ZlZCA9M0QgbGVuKCBjaGVja19y
ZXN1bHRzLnVuZGVzaXJhYmxlX2Y9CmlsZXMgKQorICAgICAgICAgICAgdW5kZXNpcmFibGVfZGly
c19yZW1vdmVkID0zRCAwCiAgICAgICAgICAgICBvaywgZXJyb3JfbWVzc2FnZSwgZmlsZXNfdG9f
cmVtb3ZlLCBjb250ZW50X2FsZXJ0X3N0ciwgdW5kZXNpcj0KYWJsZV9kaXJzX3JlbW92ZWQsIHVu
ZGVzaXJhYmxlX2ZpbGVzX3JlbW92ZWQgPTNEIFwKICAgICAgICAgICAgICAgICBjb21taXRfdXRp
bC5oYW5kbGVfZGlyZWN0b3J5X2NoYW5nZXMoIHNlbGYuYXBwLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ob3N0LApAQCAtODA2LDcg
Kzc5NywxMyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgYXJjaGl2ZS5jbG9zZSgpCiAg
ICAgICAgICAgICByZXN1bHRzX2RpY3RbICdvaycgXSA9M0QgRmFsc2UKLSAgICAgICAgICAgIHJl
c3VsdHNfZGljdFsgJ2Vycm9yX21lc3NhZ2UnIF0gKz0zRCBlcnJvcl9tZXNzYWdlCisgICAgICAg
ICAgICByZXN1bHRzX2RpY3RbICdlcnJvcl9tZXNzYWdlJyBdICs9M0QgJ0NhcHN1bGUgZXJyb3Jz
IHdlcmUgZm91bj0KZDogJworICAgICAgICAgICAgaWYgY2hlY2tfcmVzdWx0cy5pbnZhbGlkOgor
ICAgICAgICAgICAgICAgIHJlc3VsdHNfZGljdFsgJ2Vycm9yX21lc3NhZ2UnIF0gKz0zRCAnJXMg
SW52YWxpZCBmaWxlcyB3ZXI9CmU6ICVzLicgJSAoCisgICAgICAgICAgICAgICAgICAgICcgJy5q
b2luKCBjaGVja19yZXN1bHRzLmVycm9ycyApLCAnLCAnLmpvaW4oIGNoZWNrX3Jlcz0KdWx0cy5p
bnZhbGlkICkgKQorICAgICAgICAgICAgaWYgY2hlY2tfcmVzdWx0cy51bmRlc2lyYWJsZV9kaXJz
OgorICAgICAgICAgICAgICAgIHJlc3VsdHNfZGljdFsgJ2Vycm9yX21lc3NhZ2UnIF0gKz0zRCAn
IFVuZGVzaXJhYmxlIGRpcmVjdG89CnJpZXMgd2VyZTogJXMuJyAlICgKKyAgICAgICAgICAgICAg
ICAgICAgJywgJy5qb2luKCBjaGVja19yZXN1bHRzLnVuZGVzaXJhYmxlX2RpcnMgKSApCiAgICAg
ICAgIHJldHVybiByZXN1bHRzX2RpY3QKPTIwCiAgICAgZGVmIHVwbG9hZF9jYXBzdWxlKCBzZWxm
LCAqKmt3ZCApOgpAQCAtODYzLDYgKzg2MCwxMiBAQAogICAgICAgICAgICAgICAgIHJldHVybl9k
aWN0WyAnc3RhdHVzJyBdID0zRCAnZXJyb3InCiAgICAgICAgICAgICAgICAgdXBsb2FkZWRfZmls
ZS5jbG9zZSgpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldHVybl9kaWN0CisgICAgICAgICAg
ICBpZiBub3Qgc2VsZi52YWxpZGF0ZV9hcmNoaXZlX3BhdGhzKCB0YXJfYXJjaGl2ZSApOgorICAg
ICAgICAgICAgICAgIHJldHVybl9kaWN0WyAnc3RhdHVzJyBdID0zRCAnZXJyb3InCisgICAgICAg
ICAgICAgICAgcmV0dXJuX2RpY3RbICdtZXNzYWdlJyBdID0zRCAoICdUaGlzIGNhcHN1bGUgY29u
dGFpbnMgYW4gaT0KbnZhbGlkIG1lbWJlciB0eXBlICcKKyAgICAgICAgICAgICAgICAgICAgJ29y
IGEgZmlsZSBvdXRzaWRlIHRoZSBhcmNoaXZlIHBhdGguJyApCisgICAgICAgICAgICAgICAgdXBs
b2FkZWRfZmlsZS5jbG9zZSgpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJldHVybl9kaWN0CiAg
ICAgICAgICAgICByZXR1cm5fZGljdFsgJ3Rhcl9hcmNoaXZlJyBdID0zRCB0YXJfYXJjaGl2ZQog
ICAgICAgICAgICAgcmV0dXJuX2RpY3RbICdjYXBzdWxlX2ZpbGVfbmFtZScgXSA9M0QgdXBsb2Fk
ZWRfZmlsZV9maWxlbmFtZQogICAgICAgICAgICAgdXBsb2FkZWRfZmlsZS5jbG9zZSgpCkBAIC04
NzIsNiArODc1LDE4IEBACiAgICAgICAgICAgICByZXR1cm4gcmV0dXJuX2RpY3QKICAgICAgICAg
cmV0dXJuIHJldHVybl9kaWN0Cj0yMAorICAgIGRlZiB2YWxpZGF0ZV9hcmNoaXZlX3BhdGhzKCBz
ZWxmLCB0YXJfYXJjaGl2ZSApOgorICAgICAgICAnJycKKyAgICAgICAgSW5zcGVjdCB0aGUgYXJj
aGl2ZSBjb250ZW50cyB0byBlbnN1cmUgdGhhdCB0aGVyZSBhcmUgbm8gcmlza3kgc3ltPQpsaW5r
cy4KKyAgICAgICAgUmV0dXJucyBUcnVlIGlmIGEgc3VzcGljaW91cyBwYXRoIGlzIGZvdW5kLgor
ICAgICAgICAnJycKKyAgICAgICAgZm9yIG1lbWJlciBpbiB0YXJfYXJjaGl2ZS5nZXRtZW1iZXJz
KCk6CisgICAgICAgICAgICBpZiBub3QgKCBtZW1iZXIuaXNkaXIoKSBvciBtZW1iZXIuaXNmaWxl
KCkgb3IgbWVtYmVyLmlzbG5rKCkgKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAg
ICAgICAgICAgIGVsaWYgbm90IHNhZmVfcmVscGF0aCggbWVtYmVyLm5hbWUgKToKKyAgICAgICAg
ICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIFRydWUKKwogICAgIGRlZiB2YWxp
ZGF0ZV9jYXBzdWxlKCBzZWxmLCAqKmt3ZCApOgogICAgICAgICAiIiIKICAgICAgICAgSW5zcGVj
dCB0aGUgdXBsb2FkZWQgY2Fwc3VsZSdzIG1hbmlmZXN0IGFuZCBpdHMgY29udGFpbmVkIGZpbGVz
IHRvPQogZW5zdXJlIGl0IGlzIGEgdmFsaWQKCmRpZmYgLXIgYzFjYzc2ZmEzZDY2ZWZiMDcwZjE5
NjMxNTFjNGFjMGNhZTA0OGYzZiAtciA3Y2E4ZjBlY2IyYWU4YjFiYTJiNTNlMT0KZmQwOWNjYWU0
ODE5NDBhNDkgbGliL3Rvb2xfc2hlZC90b29scy90b29sX3ZlcnNpb25fbWFuYWdlci5weQotLS0g
YS9saWIvdG9vbF9zaGVkL3Rvb2xzL3Rvb2xfdmVyc2lvbl9tYW5hZ2VyLnB5CisrKyBiL2xpYi90
b29sX3NoZWQvdG9vbHMvdG9vbF92ZXJzaW9uX21hbmFnZXIucHkKQEAgLTEsNyArMSw4IEBACiBp
bXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCj0yMAotZnJvbSBnYWxheHkubW9kZWwub3JtIGltcG9y
dCBhbmRfCitmcm9tIGdhbGF4eSBpbXBvcnQgZWdncworZWdncy5yZXF1aXJlKCdTUUxBbGNoZW15
JykKK2Zyb20gc3FsYWxjaGVteSBpbXBvcnQgYW5kXywgb3JfCj0yMAogZnJvbSB0b29sX3NoZWQu
dXRpbCBpbXBvcnQgaGdfdXRpbAogZnJvbSB0b29sX3NoZWQudXRpbCBpbXBvcnQgc2hlZF91dGls
X2NvbW1vbiBhcyBzdWMKQEAgLTIyLDggKzIzLDggQEAKPTIwCiAgICAgZGVmIGdldF90b29sX3Zl
cnNpb25fYXNzb2NpYXRpb24oIHNlbGYsIHBhcmVudF90b29sX3ZlcnNpb24sIHRvb2xfdmVycz0K
aW9uICk6CiAgICAgICAgICIiIgotICAgICAgICBSZXR1cm4gYSBUb29sVmVyc2lvbkFzc29jaWF0
aW9uIGlmIG9uZSBleGlzdHMgdGhhdCBhc3NvY2lhdGVzIHRoZSA9CnR3byByZWNlaXZlZAotICAg
ICAgICB0b29sX3ZlcnNpb25zICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmx5IGZyb20gR2Fs
YXh5LgorICAgICAgICBSZXR1cm4gYSBUb29sVmVyc2lvbkFzc29jaWF0aW9uIGlmIG9uZSBleGlz
dHMgdGhhdCBhc3NvY2lhdGVzIHRoZSA9CnR3bworICAgICAgICByZWNlaXZlZCB0b29sX3ZlcnNp
b25zLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmx5IGZyb20gR2FsYXh5LgogICAgICAgICAi
IiIKICAgICAgICAgY29udGV4dCA9M0Qgc2VsZi5hcHAuaW5zdGFsbF9tb2RlbC5jb250ZXh0CiAg
ICAgICAgIHJldHVybiBjb250ZXh0LnF1ZXJ5KCBzZWxmLmFwcC5pbnN0YWxsX21vZGVsLlRvb2xW
ZXJzaW9uQXNzb2NpYXRpbz0KbiApIFwKQEAgLTkxLDYgKzkyLDE2IEBACiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sX3NoZWRf
cmVwbz0Kc2l0b3J5PTNEdG9vbF9zaGVkX3JlcG9zaXRvcnkgKQogICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LmFkZCggdG9vbF92ZXJzaW9uX3VzaW5nX3BhcmVudF9pZCApCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQuZmx1c2goKQorICAgICAgICAgICAgICAgICMgUmVtb3ZlIGV4aXN0
aW5nIHdyb25nIHRvb2wgdmVyc2lvbiBhc3NvY2lhdGlvbnMgaGF2aW5nCisgICAgICAgICAgICAg
ICAgIyB0b29sX3ZlcnNpb25fdXNpbmdfcGFyZW50X2lkIGFzIHBhcmVudCBvcgorICAgICAgICAg
ICAgICAgICMgdG9vbF92ZXJzaW9uX3VzaW5nX3Rvb2xfZ3VpZCBhcyBjaGlsZC4KKyAgICAgICAg
ICAgICAgICBjb250ZXh0LnF1ZXJ5KCBzZWxmLmFwcC5pbnN0YWxsX21vZGVsLlRvb2xWZXJzaW9u
QXNzb2NpYXRpPQpvbiApIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlciggb3JfKCBh
bmRfKCBzZWxmLmFwcC5pbnN0YWxsX21vZGVsLlRvb2xWZXJzPQppb25Bc3NvY2lhdGlvbi50YWJs
ZS5jLnBhcmVudF9pZCA9M0Q9M0QgdG9vbF92ZXJzaW9uX3VzaW5nX3BhcmVudF9pZC5pZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFwcC5pbnN0YWxs
X21vZGVsLlRvb2xWZXJzPQppb25Bc3NvY2lhdGlvbi50YWJsZS5jLnRvb2xfaWQgIT0zRCB0b29s
X3ZlcnNpb25fdXNpbmdfdG9vbF9ndWlkLmlkICksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYW5kXyggc2VsZi5hcHAuaW5zdGFsbF9tb2RlbC5Ub29sVmVycz0KaW9uQXNz
b2NpYXRpb24udGFibGUuYy5wYXJlbnRfaWQgIT0zRCB0b29sX3ZlcnNpb25fdXNpbmdfcGFyZW50
X2lkLmlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
YXBwLmluc3RhbGxfbW9kZWwuVG9vbFZlcnM9CmlvbkFzc29jaWF0aW9uLnRhYmxlLmMudG9vbF9p
ZCA9M0Q9M0QgdG9vbF92ZXJzaW9uX3VzaW5nX3Rvb2xfZ3VpZC5pZCApICkgKT0KIFwKKyAgICAg
ICAgICAgICAgICAgICAgICAgLmRlbGV0ZSgpCisgICAgICAgICAgICAgICAgY29udGV4dC5mbHVz
aCgpCiAgICAgICAgICAgICAgICAgdG9vbF92ZXJzaW9uX2Fzc29jaWF0aW9uID0zRCBcCiAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuZ2V0X3Rvb2xfdmVyc2lvbl9hc3NvY2lhdGlvbiggdG9vbF92
ZXJzaW9uX3VzaW5nXz0KcGFyZW50X2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xfdmVyc2lvbl91c2luZ189CnRvb2xfZ3VpZCAp
CgpkaWZmIC1yIGMxY2M3NmZhM2Q2NmVmYjA3MGYxOTYzMTUxYzRhYzBjYWUwNDhmM2YgLXIgN2Nh
OGYwZWNiMmFlOGIxYmEyYjUzZTE9CmZkMDljY2FlNDgxOTQwYTQ5IGxpYi90b29sX3NoZWQvdXRp
bC9jb21taXRfdXRpbC5weQotLS0gYS9saWIvdG9vbF9zaGVkL3V0aWwvY29tbWl0X3V0aWwucHkK
KysrIGIvbGliL3Rvb2xfc2hlZC91dGlsL2NvbW1pdF91dGlsLnB5CkBAIC00LDggKzQsMTAgQEAK
IGltcG9ydCBvcwogaW1wb3J0IHNodXRpbAogaW1wb3J0IHRlbXBmaWxlCitmcm9tIGNvbGxlY3Rp
b25zIGltcG9ydCBuYW1lZHR1cGxlCj0yMAogZnJvbSBnYWxheHkuZGF0YXR5cGVzIGltcG9ydCBj
aGVja2VycworZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgc2FmZV9yZWxwYXRoCj0yMAogZnJvbSB0
b29sX3NoZWQudG9vbHMgaW1wb3J0IGRhdGFfdGFibGVfbWFuYWdlcgo9MjAKQEAgLTIxLDMwICsy
Myw0NCBAQAogVU5ERVNJUkFCTEVfRklMRVMgPTNEIFsgJy5oZ19hcmNoaXZhbC50eHQnLCAnaGdy
YycsICcuRFNfU3RvcmUnIF0KPTIwCiBkZWYgY2hlY2tfYXJjaGl2ZSggcmVwb3NpdG9yeSwgYXJj
aGl2ZSApOgorICAgIHZhbGlkID0zRCBbXQorICAgIGludmFsaWQgPTNEIFtdCisgICAgZXJyb3Jz
ID0zRCBbXQorICAgIHVuZGVzaXJhYmxlX2ZpbGVzID0zRCBbXQorICAgIHVuZGVzaXJhYmxlX2Rp
cnMgPTNEIFtdCiAgICAgZm9yIG1lbWJlciBpbiBhcmNoaXZlLmdldG1lbWJlcnMoKToKICAgICAg
ICAgIyBBbGxvdyByZWd1bGFyIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBvbmx5CiAgICAgICAgIGlm
IG5vdCAoIG1lbWJlci5pc2RpcigpIG9yIG1lbWJlci5pc2ZpbGUoKSBvciBtZW1iZXIuaXNsbmso
KSApOgotICAgICAgICAgICAgbWVzc2FnZSA9M0QgIlVwbG9hZGVkIGFyY2hpdmVzIGNhbiBvbmx5
IGluY2x1ZGUgcmVndWxhciBkaXJlY3Q9Cm9yaWVzIGFuZCBmaWxlcyAobm8gc3ltYm9saWMgbGlu
a3MsIGRldmljZXMsIGV0YykuICAiCi0gICAgICAgICAgICBtZXNzYWdlICs9M0QgIlRoZSBwcm9i
bGVtYXRpYyBtZW1iZXIgaW4gdGhpcyBhcmNoaXZlIGlzICVzLCIgJT0KIHN0ciggbWVtYmVyLm5h
bWUgKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBtZXNzYWdlCi0gICAgICAgIGZvciBpdGVt
IGluIFsgJy5oZycsICcuLicsICcvJyBdOgotICAgICAgICAgICAgaWYgbWVtYmVyLm5hbWUuc3Rh
cnRzd2l0aCggaXRlbSApOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPTNEICJVcGxvYWRlZCBh
cmNoaXZlcyBjYW5ub3QgY29udGFpbiAuaGcgZGlyZWN0b3I9CmllcywgYWJzb2x1dGUgZmlsZW5h
bWVzIHN0YXJ0aW5nIHdpdGggJy8nLCBvciBmaWxlbmFtZXMgd2l0aCB0d28gZG90cyAnLi4nLj0K
ICAiCi0gICAgICAgICAgICAgICAgbWVzc2FnZSArPTNEICJUaGUgcHJvYmxlbWF0aWMgbWVtYmVy
IGluIHRoaXMgYXJjaGl2ZSBpcyAlcz0KLiIgJSBzdHIoIG1lbWJlci5uYW1lICkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gRmFsc2UsIG1lc3NhZ2UKLSAgICAgICAgaWYgbWVtYmVyLm5hbWUgaW4g
WyAnaGdyYycgXToKLSAgICAgICAgICAgIG1lc3NhZ2UgPTNEICJVcGxvYWRlZCBhcmNoaXZlcyBj
YW5ub3QgY29udGFpbiBoZ3JjIGZpbGVzLiAgIgotICAgICAgICAgICAgbWVzc2FnZSArPTNEICJU
aGUgcHJvYmxlbWF0aWMgbWVtYmVyIGluIHRoaXMgYXJjaGl2ZSBpcyAlcy4iICU9CiBzdHIoIG1l
bWJlci5uYW1lICkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZSwgbWVzc2FnZQorICAgICAgICAg
ICAgZXJyb3JzLmFwcGVuZCggIlVwbG9hZGVkIGFyY2hpdmVzIGNhbiBvbmx5IGluY2x1ZGUgcmVn
dWxhciBkaXI9CmVjdG9yaWVzIGFuZCBmaWxlcyAobm8gc3ltYm9saWMgbGlua3MsIGRldmljZXMs
IGV0YykuIiApCisgICAgICAgICAgICBpbnZhbGlkLmFwcGVuZCggbWVtYmVyICkKKyAgICAgICAg
ICAgIGNvbnRpbnVlCisgICAgICAgIGlmIG5vdCBzYWZlX3JlbHBhdGgoIG1lbWJlci5uYW1lICk6
CisgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCAiVXBsb2FkZWQgYXJjaGl2ZXMgY2Fubm90IGNv
bnRhaW4gZmlsZXMgdGhhdCB3bz0KdWxkIGV4dHJhY3Qgb3V0c2lkZSBvZiB0aGUgYXJjaGl2ZS4i
ICkKKyAgICAgICAgICAgIGludmFsaWQuYXBwZW5kKCBtZW1iZXIgKQorICAgICAgICAgICAgY29u
dGludWUKKyAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZSggbWVtYmVyLm5hbWUgKSBpbiBVTkRF
U0lSQUJMRV9GSUxFUzoKKyAgICAgICAgICAgIHVuZGVzaXJhYmxlX2ZpbGVzLmFwcGVuZCggbWVt
YmVyICkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGhlYWQgPTNEIHRhaWwgPTNEIG1l
bWJlci5uYW1lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIHRhaWw6CisgICAgICAg
ICAgICAgICAgaGVhZCwgdGFpbCA9M0Qgb3MucGF0aC5zcGxpdChoZWFkKQorICAgICAgICAgICAg
ICAgIGlmIHRhaWwgaW4gVU5ERVNJUkFCTEVfRElSUzoKKyAgICAgICAgICAgICAgICAgICAgdW5k
ZXNpcmFibGVfZGlycy5hcHBlbmQoIG1lbWJlciApCisgICAgICAgICAgICAgICAgICAgIGFzc2Vy
dCBGYWxzZQorICAgICAgICBleGNlcHQgQXNzZXJ0aW9uRXJyb3I6CisgICAgICAgICAgICBjb250
aW51ZQogICAgICAgICBpZiByZXBvc2l0b3J5LnR5cGUgPTNEPTNEIHJ0X3V0aWwuUkVQT1NJVE9S
WV9TVUlURV9ERUZJTklUSU9OIGFuZCA9Cm1lbWJlci5uYW1lICE9M0QgcnRfdXRpbC5SRVBPU0lU
T1JZX0RFUEVOREVOQ1lfREVGSU5JVElPTl9GSUxFTkFNRToKLSAgICAgICAgICAgIG1lc3NhZ2Ug
PTNEICdSZXBvc2l0b3JpZXMgb2YgdHlwZSA8Yj5SZXBvc2l0b3J5IHN1aXRlIGRlZmluaXRpPQpv
bjwvYj4gY2FuIGNvbnRhaW4gb25seSBhIHNpbmdsZSBmaWxlIG5hbWVkIDxiPnJlcG9zaXRvcnlf
ZGVwZW5kZW5jaWVzLnhtbDw9Ci9iPi4nCi0gICAgICAgICAgICBtZXNzYWdlICs9M0QgJ1RoaXMg
YXJjaGl2ZSBjb250YWlucyBhIG1lbWJlciBuYW1lZCAlcy4nICUgc3RyKD0KIG1lbWJlci5uYW1l
ICkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZSwgbWVzc2FnZQorICAgICAgICAgICAgZXJyb3Jz
LmFwcGVuZCggJ1JlcG9zaXRvcmllcyBvZiB0eXBlIDxiPlJlcG9zaXRvcnkgc3VpdGUgZGVmaW49
Cml0aW9uPC9iPiBjYW4gY29udGFpbiBvbmx5IGEgc2luZ2xlIGZpbGUgbmFtZWQgPGI+cmVwb3Np
dG9yeV9kZXBlbmRlbmNpZXMueD0KbWw8L2I+LicgKQorICAgICAgICAgICAgaW52YWxpZC5hcHBl
bmQoIG1lbWJlciApCisgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBpZiByZXBvc2l0b3J5
LnR5cGUgPTNEPTNEIHJ0X3V0aWwuVE9PTF9ERVBFTkRFTkNZX0RFRklOSVRJT04gYW5kIG09CmVt
YmVyLm5hbWUgIT0zRCBydF91dGlsLlRPT0xfREVQRU5ERU5DWV9ERUZJTklUSU9OX0ZJTEVOQU1F
OgotICAgICAgICAgICAgbWVzc2FnZSA9M0QgJ1JlcG9zaXRvcmllcyBvZiB0eXBlIDxiPlRvb2wg
ZGVwZW5kZW5jeSBkZWZpbml0aW89Cm48L2I+IGNhbiBjb250YWluIG9ubHkgYSBzaW5nbGUgZmls
ZSBuYW1lZCA8Yj50b29sX2RlcGVuZGVuY2llcy54bWw8L2I+LicKLSAgICAgICAgICAgIG1lc3Nh
Z2UgKz0zRCAnVGhpcyBhcmNoaXZlIGNvbnRhaW5zIGEgbWVtYmVyIG5hbWVkICVzLicgJSBzdHIo
PQogbWVtYmVyLm5hbWUgKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBtZXNzYWdlCi0gICAg
cmV0dXJuIFRydWUsICcnCisgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCAnUmVwb3NpdG9yaWVz
IG9mIHR5cGUgPGI+VG9vbCBkZXBlbmRlbmN5IGRlZmluaT0KdGlvbjwvYj4gY2FuIGNvbnRhaW4g
b25seSBhIHNpbmdsZSBmaWxlIG5hbWVkIDxiPnRvb2xfZGVwZW5kZW5jaWVzLnhtbDwvYj4uPQon
ICkKKyAgICAgICAgICAgIGludmFsaWQuYXBwZW5kKCBtZW1iZXIgKQorICAgICAgICAgICAgY29u
dGludWUKKyAgICAgICAgdmFsaWQuYXBwZW5kKCBtZW1iZXIgKQorICAgIEFyY2hpdmVDaGVja1Jl
c3VsdHMgPTNEIG5hbWVkdHVwbGUoICdBcmNoaXZlQ2hlY2tSZXN1bHRzJywgWyAndmFsaWQnLCA9
CidpbnZhbGlkJywgJ3VuZGVzaXJhYmxlX2ZpbGVzJywgJ3VuZGVzaXJhYmxlX2RpcnMnLCAnZXJy
b3JzJyBdICkKKyAgICByZXR1cm4gQXJjaGl2ZUNoZWNrUmVzdWx0cyggdmFsaWQsIGludmFsaWQs
IHVuZGVzaXJhYmxlX2ZpbGVzLCB1bmRlc2lyPQphYmxlX2RpcnMsIGVycm9ycyApCj0yMAogZGVm
IGNoZWNrX2ZpbGVfY29udGVudHNfZm9yX2VtYWlsX2FsZXJ0cyggYXBwICk6CiAgICAgIiIiCgpk
aWZmIC1yIGMxY2M3NmZhM2Q2NmVmYjA3MGYxOTYzMTUxYzRhYzBjYWUwNDhmM2YgLXIgN2NhOGYw
ZWNiMmFlOGIxYmEyYjUzZTE9CmZkMDljY2FlNDgxOTQwYTQ5IGxpYi90b29sX3NoZWQvdXRpbC9y
ZXBvc2l0b3J5X2NvbnRlbnRfdXRpbC5weQotLS0gYS9saWIvdG9vbF9zaGVkL3V0aWwvcmVwb3Np
dG9yeV9jb250ZW50X3V0aWwucHkKKysrIGIvbGliL3Rvb2xfc2hlZC91dGlsL3JlcG9zaXRvcnlf
Y29udGVudF91dGlsLnB5CkBAIC0xNSwzMSArMTUsMjMgQEAKICAgICBoZ191dGlsLmdldF9yZXBv
X2Zvcl9yZXBvc2l0b3J5KCB0cmFucy5hcHAsIHJlcG9zaXRvcnk9M0ROb25lLCByZXBvX3BhPQp0
aD0zRHJlcG9fZGlyLCBjcmVhdGU9M0RGYWxzZSApCiAgICAgdW5kZXNpcmFibGVfZGlyc19yZW1v
dmVkID0zRCAwCiAgICAgdW5kZXNpcmFibGVfZmlsZXNfcmVtb3ZlZCA9M0QgMAotICAgIG9rLCBt
ZXNzYWdlID0zRCBjb21taXRfdXRpbC5jaGVja19hcmNoaXZlKCByZXBvc2l0b3J5LCB0YXIgKQot
ICAgIGlmIG5vdCBvazoKKyAgICBjaGVja19yZXN1bHRzID0zRCBjb21taXRfdXRpbC5jaGVja19h
cmNoaXZlKCByZXBvc2l0b3J5LCB0YXIgKQorICAgIGlmIGNoZWNrX3Jlc3VsdHMuaW52YWxpZDoK
ICAgICAgICAgdGFyLmNsb3NlKCkKICAgICAgICAgdXBsb2FkZWRfZmlsZS5jbG9zZSgpCi0gICAg
ICAgIHJldHVybiBvaywgbWVzc2FnZSwgW10sICcnLCB1bmRlc2lyYWJsZV9kaXJzX3JlbW92ZWQs
IHVuZGVzaXJhYmxlXz0KZmlsZXNfcmVtb3ZlZAorICAgICAgICBtZXNzYWdlID0zRCAnJXMgSW52
YWxpZCBwYXRocyB3ZXJlOiAlcycgJSAoCisgICAgICAgICAgICAnICcuam9pbiggY2hlY2tfcmVz
dWx0cy5lcnJvcnMgKSwgJywgJy5qb2luKCBjaGVja19yZXN1bHRzLmludj0KYWxpZCApICkKKyAg
ICAgICAgcmV0dXJuIEZhbHNlLCBtZXNzYWdlLCBbXSwgJycsIHVuZGVzaXJhYmxlX2RpcnNfcmVt
b3ZlZCwgdW5kZXNpcmFiPQpsZV9maWxlc19yZW1vdmVkCiAgICAgZWxzZToKICAgICAgICAgaWYg
dXBsb2FkX3BvaW50IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgZnVsbF9wYXRoID0zRCBvcy5w
YXRoLmFic3BhdGgoIG9zLnBhdGguam9pbiggcmVwb19kaXIsIHVwbG9hZF89CnBvaW50ICkgKQog
ICAgICAgICBlbHNlOgogICAgICAgICAgICAgZnVsbF9wYXRoID0zRCBvcy5wYXRoLmFic3BhdGgo
IHJlcG9fZGlyICkKLSAgICAgICAgZmlsZW5hbWVzX2luX2FyY2hpdmUgPTNEIFtdCi0gICAgICAg
IGZvciB0YXJpbmZvX29iaiBpbiB0YXIuZ2V0bWVtYmVycygpOgotICAgICAgICAgICAgb2sgPTNE
IG9zLnBhdGguYmFzZW5hbWUoIHRhcmluZm9fb2JqLm5hbWUgKSBub3QgaW4gY29tbWl0X3V0aWw9
Ci5VTkRFU0lSQUJMRV9GSUxFUwotICAgICAgICAgICAgaWYgb2s6Ci0gICAgICAgICAgICAgICAg
Zm9yIGZpbGVfcGF0aF9pdGVtIGluIHRhcmluZm9fb2JqLm5hbWUuc3BsaXQoICcvJyApOgotICAg
ICAgICAgICAgICAgICAgICBpZiBmaWxlX3BhdGhfaXRlbSBpbiBjb21taXRfdXRpbC5VTkRFU0lS
QUJMRV9ESVJTOgotICAgICAgICAgICAgICAgICAgICAgICAgdW5kZXNpcmFibGVfZGlyc19yZW1v
dmVkICs9M0QgMQotICAgICAgICAgICAgICAgICAgICAgICAgb2sgPTNEIEZhbHNlCi0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg
ICB1bmRlc2lyYWJsZV9maWxlc19yZW1vdmVkICs9M0QgMQotICAgICAgICAgICAgaWYgb2s6Ci0g
ICAgICAgICAgICAgICAgZmlsZW5hbWVzX2luX2FyY2hpdmUuYXBwZW5kKCB0YXJpbmZvX29iai5u
YW1lICkKKyAgICAgICAgdW5kZXNpcmFibGVfZmlsZXNfcmVtb3ZlZCA9M0QgbGVuKCBjaGVja19y
ZXN1bHRzLnVuZGVzaXJhYmxlX2ZpbGVzPQogKQorICAgICAgICB1bmRlc2lyYWJsZV9kaXJzX3Jl
bW92ZWQgPTNEIGxlbiggY2hlY2tfcmVzdWx0cy51bmRlc2lyYWJsZV9kaXJzICkKKyAgICAgICAg
ZmlsZW5hbWVzX2luX2FyY2hpdmUgPTNEIFsgdGkubmFtZSBmb3IgdGkgaW4gY2hlY2tfcmVzdWx0
cy52YWxpZCBdCiAgICAgICAgICMgRXh0cmFjdCB0aGUgdXBsb2FkZWQgdGFyIHRvIHRoZSBsb2Fk
X3BvaW50IHdpdGhpbiB0aGUgcmVwb3NpdG9yeT0KIGhpZXJhcmNoeS4KLSAgICAgICAgdGFyLmV4
dHJhY3RhbGwoIHBhdGg9M0RmdWxsX3BhdGggKQorICAgICAgICB0YXIuZXh0cmFjdGFsbCggcGF0
aD0zRGZ1bGxfcGF0aCwgbWVtYmVycz0zRGNoZWNrX3Jlc3VsdHMudmFsaWQgKQogICAgICAgICB0
YXIuY2xvc2UoKQogICAgICAgICB1cGxvYWRlZF9maWxlLmNsb3NlKCkKICAgICAgICAgZm9yIGZp
bGVuYW1lIGluIGZpbGVuYW1lc19pbl9hcmNoaXZlOgoKZGlmZiAtciBjMWNjNzZmYTNkNjZlZmIw
NzBmMTk2MzE1MWM0YWMwY2FlMDQ4ZjNmIC1yIDdjYThmMGVjYjJhZThiMWJhMmI1M2UxPQpmZDA5
Y2NhZTQ4MTk0MGE0OSBsaWIvdG9vbF9zaGVkL3V0aWwvc2hlZF91dGlsX2NvbW1vbi5weQotLS0g
YS9saWIvdG9vbF9zaGVkL3V0aWwvc2hlZF91dGlsX2NvbW1vbi5weQorKysgYi9saWIvdG9vbF9z
aGVkL3V0aWwvc2hlZF91dGlsX2NvbW1vbi5weQpAQCAtNTA5LDkgKzUwOSwxNyBAQAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9CiAgICAgICAgICAgICAgIGNoYW5nZXNldF9yZXZpc2lvbj0zRHRleHQgKQog
ICAgIHJldHVybiByZXBvc2l0b3J5Cj0yMAotZGVmIGdldF9yZXBvc2l0b3J5X2ZpbGVfY29udGVu
dHMoIGZpbGVfcGF0aCApOgorZGVmIGdldF9yZXBvc2l0b3J5X2ZpbGVfY29udGVudHMoIGFwcCwg
ZmlsZV9wYXRoLCByZXBvc2l0b3J5X2lkICk6CiAgICAgIiIiUmV0dXJuIHRoZSBkaXNwbGF5LXNh
ZmUgY29udGVudHMgb2YgYSByZXBvc2l0b3J5IGZpbGUgZm9yIGRpc3BsYXkgaT0KbiBhIGJyb3dz
ZXIuIiIiCi0gICAgaWYgY2hlY2tlcnMuaXNfZ3ppcCggZmlsZV9wYXRoICk6CisgICAgc2FmZV9z
dHIgPTNEICcnCisgICAgaWYgbm90IGlzX3BhdGhfd2l0aGluX3JlcG8oIGFwcCwgZmlsZV9wYXRo
LCByZXBvc2l0b3J5X2lkICk6CisgICAgICAgIGxvZy53YXJuaW5nKCAnUmVxdWVzdCB0cmllcyB0
byBhY2Nlc3MgYSBmaWxlIG91dHNpZGUgb2YgdGhlIHJlcG9zaT0KdG9yeSBsb2NhdGlvbi4gRmls
ZSBwYXRoOiAlcycsIGZpbGVfcGF0aCApCisgICAgICAgIHJldHVybiAnSW52YWxpZCBmaWxlIHBh
dGgnCisgICAgIyBTeW1saW5rIHRhcmdldHMgYXJlIGNoZWNrZWQgYnkgaXNfcGF0aF93aXRoaW5f
cmVwbworICAgIGlmIG9zLnBhdGguaXNsaW5rKCBmaWxlX3BhdGggKToKKyAgICAgICAgc2FmZV9z
dHIgPTNEICdsaW5rIHRvOiAnICsgYmFzaWNfdXRpbC50b19odG1sX3N0cmluZyggb3MucmVhZGxp
bmsoPQogZmlsZV9wYXRoICkgKQorICAgICAgICByZXR1cm4gc2FmZV9zdHIKKyAgICBlbGlmIGNo
ZWNrZXJzLmlzX2d6aXAoIGZpbGVfcGF0aCApOgogICAgICAgICByZXR1cm4gJzxici8+Z3ppcCBj
b21wcmVzc2VkIGZpbGU8YnIvPicKICAgICBlbGlmIGNoZWNrZXJzLmlzX2J6MiggZmlsZV9wYXRo
ICk6CiAgICAgICAgIHJldHVybiAnPGJyLz5iejIgY29tcHJlc3NlZCBmaWxlPGJyLz4nCkBAIC01
MjAsNyArNTI4LDYgQEAKICAgICBlbGlmIGNoZWNrZXJzLmNoZWNrX2JpbmFyeSggZmlsZV9wYXRo
ICk6CiAgICAgICAgIHJldHVybiAnPGJyLz5CaW5hcnkgZmlsZTxici8+JwogICAgIGVsc2U6Ci0g
ICAgICAgIHNhZmVfc3RyID0zRCAnJwogICAgICAgICBmb3IgaSwgbGluZSBpbiBlbnVtZXJhdGUo
IG9wZW4oIGZpbGVfcGF0aCApICk6CiAgICAgICAgICAgICBzYWZlX3N0ciA9M0QgJyVzJXMnICUg
KCBzYWZlX3N0ciwgYmFzaWNfdXRpbC50b19odG1sX3N0cmluZyggbD0KaW5lICkgKQogICAgICAg
ICAgICAgIyBTdG9wIHJlYWRpbmcgYWZ0ZXIgc3RyaW5nIGlzIGxhcmdlciB0aGFuIE1BWF9DT05U
RU5UX1NJWkUuCkBAIC01MzAsNiArNTM3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgdXRpbC5u
aWNlX3NpemUoIE1BWF9DT05URU5UX1NJWkUgKQogICAgICAgICAgICAgICAgIHNhZmVfc3RyID0z
RCAnJXMlcycgJSAoIHNhZmVfc3RyLCBsYXJnZV9zdHIgKQogICAgICAgICAgICAgICAgIGJyZWFr
CisKICAgICAgICAgaWYgbGVuKCBzYWZlX3N0ciApID4gYmFzaWNfdXRpbC5NQVhfRElTUExBWV9T
SVpFOgogICAgICAgICAgICAgIyBFbGltaW5hdGUgdGhlIG1pZGRsZSBvZiB0aGUgZmlsZSB0byBk
aXNwbGF5IGEgZmlsZSBubyBsYXJnZXI9CiB0aGFuIGJhc2ljX3V0aWwuTUFYX0RJU1BMQVlfU0la
RS4KICAgICAgICAgICAgICMgVGhpcyBtYXkgbm90IGJlIGlkZWFsIGlmIHRoZSBmaWxlIGlzIGxh
cmdlciB0aGFuIE1BWF9DT05URU5UPQpfU0laRS4KQEAgLTU1MCw5ICs1NTgsNiBAQAogICAgICAg
ICAjIFNraXAgLmhnIGRpcmVjdG9yaWVzCiAgICAgICAgIGlmIGl0ZW0uc3RhcnRzd2l0aCggJy5o
ZycgKToKICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGlmIG9zLnBhdGguaXNkaXIoIG9z
LnBhdGguam9pbiggZm9sZGVyX3BhdGgsIGl0ZW0gKSApOgotICAgICAgICAgICAgIyBBcHBlbmQg
YSAnLycgY2hhcmFjdGVyIHNvIHRoYXQgb3VyIGpxdWVyeSBkeW5hdHJlZSB3aWxsIGZ1bmM9CnRp
b24gcHJvcGVybHkuCi0gICAgICAgICAgICBpdGVtID0zRCAnJXMvJyAlIGl0ZW0KICAgICAgICAg
Y29udGVudHMuYXBwZW5kKCBpdGVtICkKICAgICBpZiBjb250ZW50czoKICAgICAgICAgY29udGVu
dHMuc29ydCgpCkBAIC0xMDA4LDExICsxMDEzLDE1IEBACiAgICAgIiIiCiAgICAgcmV0dXJuIGhh
c2F0dHIoIGFwcCwgImluc3RhbGxfbW9kZWwiICkKPTIwCi1kZWYgb3Blbl9yZXBvc2l0b3J5X2Zp
bGVzX2ZvbGRlciggZm9sZGVyX3BhdGggKToKK2RlZiBvcGVuX3JlcG9zaXRvcnlfZmlsZXNfZm9s
ZGVyKCBhcHAsIGZvbGRlcl9wYXRoLCByZXBvc2l0b3J5X2lkICk6CiAgICAgIiIiCiAgICAgUmV0
dXJuIGEgbGlzdCBvZiBkaWN0aW9uYXJpZXMsIGVhY2ggb2Ygd2hpY2ggY29udGFpbnMgaW5mb3Jt
YXRpb24gZm9yID0KYSBmaWxlIG9yIGRpcmVjdG9yeSBjb250YWluZWQKICAgICB3aXRoaW4gYSBk
aXJlY3RvcnkgaW4gYSByZXBvc2l0b3J5IGZpbGUgaGllcmFyY2h5LgogICAgICIiIgorICAgICMg
U3ltbGluayB0YXJnZXRzIGFyZSBjaGVja2VkIGJ5IGlzX3BhdGhfd2l0aGluX3JlcG8KKyAgICBp
ZiBub3QgaXNfcGF0aF93aXRoaW5fcmVwbyggYXBwLCBmb2xkZXJfcGF0aCwgcmVwb3NpdG9yeV9p
ZCApOgorICAgICAgICBsb2cud2FybmluZyggJ1JlcXVlc3QgdHJpZXMgdG8gYWNjZXNzIGEgZm9s
ZGVyIG91dHNpZGUgb2YgdGhlIHJlcG89CnNpdG9yeSBsb2NhdGlvbi4gRm9sZGVyIHBhdGg6ICVz
JywgZm9sZGVyX3BhdGggKQorICAgICAgICByZXR1cm4gW10KICAgICB0cnk6CiAgICAgICAgIGZp
bGVzX2xpc3QgPTNEIGdldF9yZXBvc2l0b3J5X2ZpbGVzKCBmb2xkZXJfcGF0aCApCiAgICAgZXhj
ZXB0IE9TRXJyb3IsIGU6CkBAIC0xMDIyLDEwICsxMDMxLDE3IEBACiAgICAgZm9sZGVyX2NvbnRl
bnRzID0zRCBbXQogICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlc19saXN0OgogICAgICAgICBpc19m
b2xkZXIgPTNEIEZhbHNlCi0gICAgICAgIGlmIGZpbGVuYW1lIGFuZCBmaWxlbmFtZVsgLTEgXSA9
M0Q9M0Qgb3Muc2VwOgotICAgICAgICAgICAgaXNfZm9sZGVyID0zRCBUcnVlCisgICAgICAgIGZ1
bGxfcGF0aCA9M0Qgb3MucGF0aC5qb2luKCBmb2xkZXJfcGF0aCwgZmlsZW5hbWUgKQorICAgICAg
ICBpc19saW5rID0zRCBvcy5wYXRoLmlzbGluayggZnVsbF9wYXRoICkKKyAgICAgICAgcGF0aF9p
c193aXRoaW5fcmVwbyA9M0QgaXNfcGF0aF93aXRoaW5fcmVwbyggYXBwLCBmdWxsX3BhdGgsIHJl
cG9zPQppdG9yeV9pZCApCisgICAgICAgIGlmIGlzX2xpbmsgYW5kIG5vdCBwYXRoX2lzX3dpdGhp
bl9yZXBvOgorICAgICAgICAgICAgbG9nLndhcm5pbmcoICdWYWxpZCBmb2xkZXIgY29udGFpbnMg
YSBzeW1saW5rIG91dHNpZGUgb2YgdGhlIHI9CmVwb3NpdG9yeSBsb2NhdGlvbi4gTGluayBmb3Vu
ZCBpbjogJyArIHN0ciggZnVsbF9wYXRoICkgKQogICAgICAgICBpZiBmaWxlbmFtZToKLSAgICAg
ICAgICAgIGZ1bGxfcGF0aCA9M0Qgb3MucGF0aC5qb2luKCBmb2xkZXJfcGF0aCwgZmlsZW5hbWUg
KQorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpciggZnVsbF9wYXRoICkgYW5kIHBhdGhfaXNf
d2l0aGluX3JlcG86CisgICAgICAgICAgICAgICAgIyBBcHBlbmQgYSAnLycgY2hhcmFjdGVyIHNv
IHRoYXQgb3VyIGpxdWVyeSBkeW5hdHJlZSB3aWxsID0KZnVuY3Rpb24gcHJvcGVybHkuCisgICAg
ICAgICAgICAgICAgZmlsZW5hbWUgPTNEICclcy8nICUgZmlsZW5hbWUKKyAgICAgICAgICAgICAg
ICBmdWxsX3BhdGggPTNEICclcy8nICUgZnVsbF9wYXRoCisgICAgICAgICAgICAgICAgaXNfZm9s
ZGVyID0zRCBUcnVlCiAgICAgICAgICAgICBub2RlID0zRCB7ICJ0aXRsZSIgOiBmaWxlbmFtZSwK
ICAgICAgICAgICAgICAgICAgICAgICJpc0ZvbGRlciIgOiBpc19mb2xkZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAiaXNMYXp5IiA6IGlzX2ZvbGRlciwKQEAgLTEwMzQsNiArMTA1MCwxNiBAQAog
ICAgICAgICAgICAgZm9sZGVyX2NvbnRlbnRzLmFwcGVuZCggbm9kZSApCiAgICAgcmV0dXJuIGZv
bGRlcl9jb250ZW50cwo9MjAKK2RlZiBpc19wYXRoX3dpdGhpbl9yZXBvKCBhcHAsIHBhdGgsIHJl
cG9zaXRvcnlfaWQgKToKKyAgICAiIiIKKyAgICBEZXRlY3Qgd2hldGhlciB0aGUgZ2l2ZW4gcGF0
aCBpcyB3aXRoaW4gdGhlIHJlcG9zaXRvcnkgZm9sZGUgcm9uIHRoZSBkPQppc2suCisgICAgVXNl
IHRvIGZpbHRlciBtYWxpY2lvdXMgc3ltbGlua3MgdGFyZ2V0aW5nIG91dHNpZGUgcGF0aHMuCisg
ICAgIiIiCisgICAgcmVwb19wYXRoID0zRCBvcy5wYXRoLmFic3BhdGgoIGdldF9yZXBvc2l0b3J5
X2J5X2lkKCBhcHAsIHJlcG9zaXRvcnlfaT0KZCApLnJlcG9fcGF0aCggYXBwICkgKQorICAgIHJl
c29sdmVkX3BhdGggPTNEIG9zLnBhdGgucmVhbHBhdGgoIHBhdGggKQorICAgIHJldHVybiBvcy5w
YXRoLmNvbW1vbnByZWZpeCggWyByZXBvX3BhdGgsIHJlc29sdmVkX3BhdGggXSApID0zRD0zRCBy
ZXA9Cm9fcGF0aAorCisKIGRlZiByZXBvc2l0b3J5X3dhc19wcmV2aW91c2x5X2luc3RhbGxlZCgg
YXBwLCB0b29sX3NoZWRfdXJsLCByZXBvc2l0b3J5X25hPQptZSwgcmVwb19pbmZvX3R1cGxlLCBm
cm9tX3RpcD0zREZhbHNlICk6CiAgICAgIiIiCiAgICAgRmluZCBvdXQgaWYgYSByZXBvc2l0b3J5
IGlzIGFscmVhZHkgaW5zdGFsbGVkIGludG8gR2FsYXh5IC0gdGhlcmUgYXJlID0Kc2V2ZXJhbCBz
Y2VuYXJpb3Mgd2hlcmUgdGhpcwoKZGlmZiAtciBjMWNjNzZmYTNkNjZlZmIwNzBmMTk2MzE1MWM0
YWMwY2FlMDQ4ZjNmIC1yIDdjYThmMGVjYjJhZThiMWJhMmI1M2UxPQpmZDA5Y2NhZTQ4MTk0MGE0
OSB0ZW1wbGF0ZXMvYWRtaW4vcmVxdWVzdHMvc2VsZWN0X2RhdGFzZXRzX3RvX3RyYW5zZmVyLm1h
a28KLS0tIGEvdGVtcGxhdGVzL2FkbWluL3JlcXVlc3RzL3NlbGVjdF9kYXRhc2V0c190b190cmFu
c2Zlci5tYWtvCisrKyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLTwlaW5oZXJpdCBmaWxl
PTNEIi9iYXNlLm1ha28iLz4KLTwlbmFtZXNwYWNlIGZpbGU9M0QiL21lc3NhZ2UubWFrbyIgaW1w
b3J0PTNEInJlbmRlcl9tc2ciIC8+Ci08JW5hbWVzcGFjZSBmaWxlPTNEIi9yZXF1ZXN0cy9jb21t
b24vY29tbW9uLm1ha28iIGltcG9ydD0zRCJyZW5kZXJfc2FtcGxlXz0KZGF0YXNldHMiIC8+Ci08
JW5hbWVzcGFjZSBmaWxlPTNEIi9yZXF1ZXN0cy9jb21tb24vY29tbW9uLm1ha28iIGltcG9ydD0z
RCJjb21tb25famF2YXNjcj0KaXB0cyIgLz4KLQotPCVkZWYgbmFtZT0zRCJqYXZhc2NyaXB0cygp
Ij4KLSAgICR7cGFyZW50LmphdmFzY3JpcHRzKCl9Ci0gICAke2NvbW1vbl9qYXZhc2NyaXB0cygp
fQotPC8lZGVmPgotCi0ke2guanMoICJsaWJzL2pxdWVyeS9qcXVlcnktdWkiLCAibGlicy9qcXVl
cnkvanF1ZXJ5LmNvb2tpZSIsICJsaWJzL2pxdWVyeT0KL2pxdWVyeS5keW5hdHJlZSIgKX0KLSR7
aC5jc3MoICJkeW5hdHJlZV9za2luL3VpLmR5bmF0cmVlIiApfQotCi08c2NyaXB0IHR5cGU9M0Qi
dGV4dC9qYXZhc2NyaXB0Ij4KLSAgICAkKGZ1bmN0aW9uKCl7Ci0gICAgICAgICQoIiN0cmVlIiku
YWpheENvbXBsZXRlKGZ1bmN0aW9uKGV2ZW50LCBYTUxIdHRwUmVxdWVzdCwgYWpheE9wdGlvbj0K
cykgewotICAgICAgICAgICAgX2xvZygiZGVidWciLCAiYWpheENvbXBsZXRlOiAlbyIsIHRoaXMp
OyAvLyBkb20gZWxlbWVudCBsaXN0ZW49CmluZwotICAgICAgICB9KTsKLSAgICAgICAgLy8gLS0t
IEluaXRpYWxpemUgc2FtcGxlIHRyZWVzCi0gICAgICAgICQoIiN0cmVlIikuZHluYXRyZWUoewot
ICAgICAgICAgICAgdGl0bGU6ICIke3NjcF9jb25maWdzWydkYXRhX2xvY2F0aW9uJ119IiwKLSAg
ICAgICAgICAgIHJvb3RWaXNpYmxlOiB0cnVlLAotICAgICAgICAgICAgbWluRXhwYW5kTGV2ZWw6
IDAsIC8vIDE6IHJvb3Qgbm9kZSBpcyBub3QgY29sbGFwc2libGUKLSAgICAgICAgICAgIHBlcnNp
c3Q6IGZhbHNlLAotICAgICAgICAgICAgY2hlY2tib3g6IHRydWUsCi0gICAgICAgICAgICBzZWxl
Y3RNb2RlOiAzLAotICAgICAgICAgICAgb25Qb3N0SW5pdDogZnVuY3Rpb24oaXNSZWxvYWRpbmcs
IGlzRXJyb3IpIHsKLSAgICAgICAgICAgICAgICAvL2FsZXJ0KCJyZWxvYWRpbmc6ICIraXNSZWxv
YWRpbmcrIiwgZXJyb3I6Iitpc0Vycm9yKTsKLSAgICAgICAgICAgICAgICBsb2dNc2coIm9uUG9z
dEluaXQoJW8sICVvKSAtICVvIiwgaXNSZWxvYWRpbmcsIGlzRXJyb3IsIHRoPQppcyk7Ci0gICAg
ICAgICAgICAgICAgLy8gUmUtZmlyZSBvbkFjdGl2YXRlLCBzbyB0aGUgdGV4dCBpcyB1cGRhdGVk
Ci0gICAgICAgICAgICAgICAgdGhpcy5yZWFjdGl2YXRlKCk7Ci0gICAgICAgICAgICB9LD0yMAot
ICAgICAgICAgICAgZng6IHsgaGVpZ2h0OiAidG9nZ2xlIiwgZHVyYXRpb246IDIwMCB9LAotICAg
ICAgICAgICAgLy8gaW5pdEFqYXggaXMgaGFyZCB0byBmYWtlLCBzbyB3ZSBwYXNzIHRoZSBjaGls
ZHJlbiBhcyBvYmplY3Q9CiBhcnJheToKLSAgICAgICAgICAgIGluaXRBamF4OiB7dXJsOiAiJHto
LnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmVxdWVzdHNfYWRtaW4nLCBhPQpjdGlvbj0zRCdvcGVu
X2ZvbGRlcicgKX0iLAotICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogImpzb24iLD0y
MAotICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IHJlcXVlc3RfaWQ6ICIke3RyYW5zLnNl
Y3VyaXR5LmVuY29kZV9pZCggcmU9CnF1ZXN0LmlkICl9IiwgZXh0ZXJuYWxfc2VydmljZV9pZDog
IiR7dHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBleHRlcm5hbF9zZT0KcnZpY2UuaWQgKX0iLCBr
ZXk6ICIke3NjcF9jb25maWdzWydkYXRhX2xvY2F0aW9uJ119IiB9LAotICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgIG9uTGF6eVJlYWQ6IGZ1bmN0aW9uKGR0bm9kZSl7Ci0gICAgICAgICAgICAg
ICAgZHRub2RlLmFwcGVuZEFqYXgoewotICAgICAgICAgICAgICAgICAgICB1cmw6ICIke2gudXJs
X2ZvciggY29udHJvbGxlcj0zRCdyZXF1ZXN0c19hZG1pbicsIGFjdGk9Cm9uPTNEJ29wZW5fZm9s
ZGVyJyApfSIsPTIwCi0gICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAianNvbiIsCi0gICAg
ICAgICAgICAgICAgICAgIGRhdGE6IHsgcmVxdWVzdF9pZDogIiR7dHJhbnMuc2VjdXJpdHkuZW5j
b2RlX2lkKCByZXF1ZT0Kc3QuaWQgKX0iLCBleHRlcm5hbF9zZXJ2aWNlX2lkOiAiJHt0cmFucy5z
ZWN1cml0eS5lbmNvZGVfaWQoIGV4dGVybmFsX3NlcnZpPQpjZS5pZCApfSIsIGtleTogZHRub2Rl
LmRhdGEua2V5IH0sCi0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9LAotICAgICAg
ICAgICAgb25TZWxlY3Q6IGZ1bmN0aW9uKHNlbGVjdCwgZHRub2RlKSB7Ci0gICAgICAgICAgICAg
ICAgLy8gRGlzcGxheSBsaXN0IG9mIHNlbGVjdGVkIG5vZGVzCi0gICAgICAgICAgICAgICAgdmFy
IHNlbE5vZGVzID0zRCBkdG5vZGUudHJlZS5nZXRTZWxlY3RlZE5vZGVzKCk7Ci0gICAgICAgICAg
ICAgICAgLy8gY29udmVydCB0byB0aXRsZS9rZXkgYXJyYXkKLSAgICAgICAgICAgICAgICB2YXIg
c2VsS2V5cyA9M0QgJC5tYXAoc2VsTm9kZXMsIGZ1bmN0aW9uKG5vZGUpewotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbm9kZS5kYXRhLmtleTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgICAgICBkb2N1bWVudC5zZWxlY3RfZGF0YXNldHNfdG9fdHJhbnNmZXIuc2VsZWN0ZWRf
ZGF0YXNldHNfdG9fPQp0cmFuc2Zlci52YWx1ZSA9M0Qgc2VsS2V5cy5qb2luKCIsIikKLSAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICBvbkFjdGl2YXRlOiBmdW5jdGlvbihkdG5vZGUpIHsKLSAg
ICAgICAgICAgICAgICB2YXIgY2VsbCA9M0QgJCgiI2ZpbGVfZGV0YWlscyIpOwotICAgICAgICAg
ICAgICAgIHZhciBzZWxlY3RlZF92YWx1ZTsKLSAgICAgICAgICAgICAgICBpZiAoZHRub2RlLmRh
dGEua2V5ID0zRD0zRCAncm9vdCcpIHsKLSAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRfdmFs
dWUgPTNEICIke3NjcF9jb25maWdzWydkYXRhX2xvY2F0aW9uJ119LyI7Ci0gICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRfdmFsdWUgPTNEIGR0bm9k
ZS5kYXRhLmtleTsKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgIGlmIChzZWxl
Y3RlZF92YWx1ZS5jaGFyQXQoc2VsZWN0ZWRfdmFsdWUubGVuZ3RoLTEpICE9M0QgJy89CicpIHsK
LSAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSBhamF4IGNhbGwKLSAgICAgICAgICAgICAgICAg
ICAgJC5hamF4KCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAiUE9TVCIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICB1cmw6ICIke2gudXJsX2ZvciggY29udHJvbGxlcj0zRCdyZXF1
ZXN0c19hZG1pbicsID0KYWN0aW9uPTNEJ2dldF9maWxlX2RldGFpbHMnICl9IiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAianNvbiIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhOiB7IHJlcXVlc3RfaWQ6ICIke3RyYW5zLnNlY3VyaXR5LmVuY29kZV9pZChyZT0KcXVl
c3QuaWQpfSIsIGV4dGVybmFsX3NlcnZpY2VfaWQ6ICIke3RyYW5zLnNlY3VyaXR5LmVuY29kZV9p
ZChleHRlcm5hbF9zZXJ2PQppY2UuaWQpfSIsIGZvbGRlcl9wYXRoOiBzZWxlY3RlZF92YWx1ZSB9
LAotICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA6IGZ1bmN0aW9uICggZGF0YSApIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmh0bWwoICc8bGFiZWw+JytkYXRhKyc8
L2xhYmVsPicgKQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBjZWxs
Lmh0bWwoICcnICk7Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIH0sCi0gICAgICAg
IH0pOwotICAgIH0pOwotPC9zY3JpcHQ+Ci0KLTwlCi0gICAgaXNfYWRtaW4gPTNEIGNudHJsbGVy
ID0zRD0zRCAncmVxdWVzdHNfYWRtaW4nIGFuZCB0cmFucy51c2VyX2lzX2FkbWluKCkKLSAgICBj
YW5fdHJhbnNmZXJfZGF0YXNldHMgPTNEIGlzX2FkbWluIGFuZCBzYW1wbGUudW50cmFuc2ZlcnJl
ZF9kYXRhc2V0X2ZpPQpsZXMgYW5kIHNhbXBsZS5saWJyYXJ5IGFuZCBzYW1wbGUuZm9sZGVyCi0l
PgotCi08YnIvPjxici8+Ci08dWwgY2xhc3M9M0QibWFuYWdlLXRhYmxlLWFjdGlvbnMiPgotICAg
IDxsaT48YSBjbGFzcz0zRCJhY3Rpb24tYnV0dG9uIiBocmVmPTNEIiR7aC51cmxfZm9yKCBjb250
cm9sbGVyPTNEJ2V4dGU9CnJuYWxfc2VydmljZScsIGFjdGlvbj0zRCd2aWV3X2V4dGVybmFsX3Nl
cnZpY2UnLCBpZD0zRHRyYW5zLnNlY3VyaXR5LmVuY29kZT0KX2lkKCBleHRlcm5hbF9zZXJ2aWNl
LmlkICkgKX0iPkV4dGVybmFsIHNlcnZpY2UgY29uZmlndXJhdGlvbjwvYT48L2xpPgotICAgICVp
ZiBjYW5fdHJhbnNmZXJfZGF0YXNldHM6Ci0gICAgICAgIDxsaT48YSBjbGFzcz0zRCJhY3Rpb24t
YnV0dG9uIiBocmVmPTNEIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJz0KcmVxdWVzdHNfYWRt
aW4nLCBhY3Rpb249M0QnbWFuYWdlX2RhdGFzZXRzJywgY250cmxsZXI9M0RjbnRybGxlciwgc2Ft
cGxlX2lkPQo9M0R0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHNhbXBsZS5pZCApICl9Ij5UcmFu
c2ZlciBkYXRhc2V0czwvYT48L2xpPgotICAgICVlbmRpZgotICAgIDxsaT48YSBjbGFzcz0zRCJh
Y3Rpb24tYnV0dG9uIiBocmVmPTNEIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJ3JlcXU9CmVz
dHNfY29tbW9uJywgYWN0aW9uPTNEJ3ZpZXdfcmVxdWVzdCcsIGNudHJsbGVyPTNEY250cmxsZXIs
IGlkPTNEdHJhbnMuc2VjdT0Kcml0eS5lbmNvZGVfaWQoIHJlcXVlc3QuaWQgKSApfSI+QnJvd3Nl
IHRoaXMgcmVxdWVzdDwvYT48L2xpPgotPC91bD4KLQotJWlmIG5vdCBzYW1wbGU6Ci0gICAgPGJy
Lz4KLSAgICA8Zm9udCBjb2xvcj0zRCJyZWQiPjxiPjxpPlNlbGVjdCBhIHNhbXBsZSBiZWZvcmUg
c2VsZWN0aW5nIGRhdGFzZXRzIHRvPQogdHJhbnNmZXI8L2k+PC9iPjwvZm9udD4KLSAgICA8YnIv
PgotJWVuZGlmCi0KLSVpZiByZXF1ZXN0LnNhbXBsZXNfd2l0aG91dF9saWJyYXJ5X2Rlc3RpbmF0
aW9uczoKLSAgICA8cD4KLSAgICA8Zm9udCBjb2xvcj0zRCJyZWQiPjxiPjxpPlNlbGVjdCBhIHRh
cmdldCBkYXRhIGxpYnJhcnkgYW5kIGZvbGRlciBmb3IgPQphIHNhbXBsZSBiZWZvcmUgc2VsZWN0
aW5nIGl0cyBkYXRhc2V0cyB0byB0cmFuc2ZlciBmcm9tIHRoZSBleHRlcm5hbCBzZXJ2aWM9CmU8
L2k+PC9iPjwvZm9udD4KLSAgICA8L3A+Ci0lZW5kaWYKLQotJWlmIG1lc3NhZ2U6Ci0gICAgJHty
ZW5kZXJfbXNnKCBtZXNzYWdlLCBzdGF0dXMgKX0KLSVlbmRpZgotCi08ZGl2IGNsYXNzPTNEInRv
b2xGb3JtIj4KLSAgICA8ZGl2IGNsYXNzPTNEInRvb2xGb3JtVGl0bGUiPlNlbGVjdCBkYXRhc2V0
cyB0byB0cmFuc2ZlciBmcm9tIGRhdGEgZGlyPQplY3RvcnkgY29uZmlndXJlZCBmb3IgdGhlIGV4
dGVybmFsIHNlcnZpY2U8L2Rpdj4KLSAgICA8Zm9ybSBuYW1lPTNEInNlbGVjdF9kYXRhc2V0c190
b190cmFuc2ZlciIgaWQ9M0Qic2VsZWN0X2RhdGFzZXRzX3RvX3RyPQphbnNmZXIiIGFjdGlvbj0z
RCIke2gudXJsX2ZvciggY29udHJvbGxlcj0zRCdyZXF1ZXN0c19hZG1pbicsIGFjdGlvbj0zRCdz
ZWw9CmVjdF9kYXRhc2V0c190b190cmFuc2ZlcicsIGNudHJsbGVyPTNEY250cmxsZXIsIGV4dGVy
bmFsX3NlcnZpY2VfaWQ9M0R0cmFucz0KLnNlY3VyaXR5LmVuY29kZV9pZCggZXh0ZXJuYWxfc2Vy
dmljZS5pZCApLCByZXF1ZXN0X2lkPTNEdHJhbnMuc2VjdXJpdHkuZW5jPQpvZGVfaWQoIHJlcXVl
c3QuaWQgKSl9IiBtZXRob2Q9M0QicG9zdCIgPgotICAgICAgICA8ZGl2IGNsYXNzPTNEImZvcm0t
cm93Ij4KLSAgICAgICAgICAgIDxsYWJlbD5TYW1wbGU6PC9sYWJlbD4KLSAgICAgICAgICAgICR7
c2FtcGxlX2lkX3NlbGVjdF9maWVsZC5nZXRfaHRtbCgpfQotICAgICAgICAgICAgPGRpdiBjbGFz
cz0zRCJ0b29sUGFyYW1IZWxwIiBzdHlsZT0zRCJjbGVhcjogYm90aDsiPgotICAgICAgICAgICAg
ICAgIFNlbGVjdCB0aGUgc2FtcGxlIHRoYXQgd2FzIHNlcXVlbmNlZCB0byBwcm9kdWNlIHRoZSBk
YXRhc2U9CnRzIHlvdSB3YW50IHRvIHRyYW5zZmVyLgotICAgICAgICAgICAgPC9kaXY+Ci0gICAg
ICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPTNEImZvcm0tcm93IiA+Ci0gICAgICAgICAg
ICA8bGFiZWw+U2VsZWN0IGRhdGFzZXRzIGZyb20gc291cmNlIGRhdGEgbG9jYXRpb24gZGVmaW5l
ZCBpbiB0aD0KZSBleHRlcm5hbCBzZXJ2aWNlIGNvbmZpZ3VyYXRpb246PC9sYWJlbD4KLSAgICAg
ICAgICAgIDxkaXYgaWQ9M0QidHJlZSIgPgotICAgICAgICAgICAgICAgIExvYWRpbmcuLi4KLSAg
ICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGlucHV0IGlkPTNEInNlbGVjdGVkX2RhdGFz
ZXRzX3RvX3RyYW5zZmVyIiBuYW1lPTNEInNlbGVjdGVkX2Q9CmF0YXNldHNfdG9fdHJhbnNmZXIi
IHR5cGU9M0QiaGlkZGVuIiBzaXplPTNENDAiLz4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9M0Qi
dG9vbFBhcmFtSGVscCIgc3R5bGU9M0QiY2xlYXI6IGJvdGg7Ij4KLSAgICAgICAgICAgICAgICA8
dWw+Ci0gICAgICAgICAgICAgICAgICAgIDxsaT5DbGljayB0aGUgPGI+ZXh0ZXJuYWwgc2Vydmlj
ZSBjb25maWd1cmF0aW9uPC9iPiBidT0KdHRvbiBhbmQgY2hhbmdlIHRoZSA8Yj5EYXRhIGRpcmVj
dG9yeTwvYj4gc2V0dGluZyB0byByZWRlZmluZSB0aGUgc291cmNlIGRhPQp0YSBsb2NhdGlvbi48
L2xpPgotICAgICAgICAgICAgICAgICAgICA8bGk+U2VsZWN0IGEgZm9sZGVyIHRvIHNlbGVjdCBh
bGwgb2YgdGhlIGluZGl2aWR1YWwgZmk9CmxlcyB3aXRoaW4gdGhhdCBmb2xkZXIuPC9saT4KLSAg
ICAgICAgICAgICAgICAgICAgPGxpPkNsaWNrIHRoZSA8Yj5TZWxlY3QgZGF0YXNldHM8L2I+IGJ1
dHRvbiB3aGVuIGRlc2lyPQplZCBkYXRhc2V0IGNoZWNrIGJveGVzIGFyZSBjaGVja2VkLjwvbGk+
Ci0gICAgICAgICAgICAgICAgPC91bD4KLSAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgPTIw
Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPTNEImZvcm0tcm93Ij4KLSAgICAg
ICAgICAgIDxkaXYgaWQ9M0QiZmlsZV9kZXRhaWxzIiBjbGFzcz0zRCJ0b29sUGFyYW1IZWxwIiBz
dHlsZT0zRCJjbGVhPQpyOiBib3RoO2JhY2tncm91bmQtY29sb3I6I0ZBRkFGQTsiPjwvZGl2Pgot
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0zRCJmb3JtLXJvdyI+Ci0gICAgICAg
ICAgICA8aW5wdXQgdHlwZT0zRCJzdWJtaXQiIG5hbWU9M0Qic2VsZWN0X2RhdGFzZXRzX3RvX3Ry
YW5zZmVyX2J1dD0KdG9uIiB2YWx1ZT0zRCJTZWxlY3QgZGF0YXNldHMiLz4KLSAgICAgICAgPC9k
aXY+Ci0gICAgPC9mb3JtPgotPC9kaXY+Ci0KLSVpZiBzYW1wbGUgYW5kIHNhbXBsZS5kYXRhc2V0
czoKLSAgICA8JSB0aXRsZSA9M0QgJ0FsbCBzZWxlY3RlZCBkYXRhc2V0cyBmb3IgIiVzIicgJSBz
YW1wbGUubmFtZSAlPgotICAgIDxwLz4KLSAgICAke3JlbmRlcl9zYW1wbGVfZGF0YXNldHMoICdy
ZXF1ZXN0c19hZG1pbicsIHNhbXBsZSwgc2FtcGxlLmRhdGFzZXRzLCB0PQppdGxlICl9Ci0lZW5k
aWYKCmRpZmYgLXIgYzFjYzc2ZmEzZDY2ZWZiMDcwZjE5NjMxNTFjNGFjMGNhZTA0OGYzZiAtciA3
Y2E4ZjBlY2IyYWU4YjFiYTJiNTNlMT0KZmQwOWNjYWU0ODE5NDBhNDkgdGVtcGxhdGVzL2FkbWlu
L3Rvb2xfc2hlZF9yZXBvc2l0b3J5L2NvbW1vbi5tYWtvCi0tLSBhL3RlbXBsYXRlcy9hZG1pbi90
b29sX3NoZWRfcmVwb3NpdG9yeS9jb21tb24ubWFrbworKysgYi90ZW1wbGF0ZXMvYWRtaW4vdG9v
bF9zaGVkX3JlcG9zaXRvcnkvY29tbW9uLm1ha28KQEAgLTIzLDE0ICsyMywxNiBAQAogICAgICAg
ICAgICAgICAgIGZ4OiB7IGhlaWdodDogInRvZ2dsZSIsIGR1cmF0aW9uOiAyMDAgfSwKICAgICAg
ICAgICAgICAgICAvLyBpbml0QWpheCBpcyBoYXJkIHRvIGZha2UsIHNvIHdlIHBhc3MgdGhlIGNo
aWxkcmVuIGFzIG9iPQpqZWN0IGFycmF5OgogICAgICAgICAgICAgICAgIGluaXRBamF4OiB7dXJs
OiAiJHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QnYWRtaW5fdG9vbHNoZWQ9CicsIGFjdGlvbj0z
RCdvcGVuX2ZvbGRlcicgKX0iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6
ICJqc29uIiw9MjAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgZm9sZGVyX3Bh
dGg6ICIke2RpcmVjdG9yeV9wYXRofGh9IiB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGF0YVR5cGU6ICJqc29uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgZm9s
ZGVyX3BhdGg6ICIke2RpcmVjdG9yeV9wYXRofGh9IiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVwb3NpdG9yeV9pZDogIiR7dHJhbnMuc2VjdXJpdHkuZW5jb2RlPQpfaWQo
IHJlcG9zaXRvcnkuaWQgKX0iIH0sCiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAg
ICBvbkxhenlSZWFkOiBmdW5jdGlvbihkdG5vZGUpewogICAgICAgICAgICAgICAgICAgICBkdG5v
ZGUuYXBwZW5kQWpheCh7Ci0gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICIke2gudXJsX2Zv
ciggY29udHJvbGxlcj0zRCdhZG1pbl90b29sc2hlZCcsID0KYWN0aW9uPTNEJ29wZW5fZm9sZGVy
JyApfSIsPTIwCisgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICIke2gudXJsX2ZvciggY29u
dHJvbGxlcj0zRCdhZG1pbl90b29sc2hlZCcsID0KYWN0aW9uPTNEJ29wZW5fZm9sZGVyJyApfSIs
CiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogImpzb24iLAotICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YTogeyBmb2xkZXJfcGF0aDogZHRub2RlLmRhdGEua2V5IH0sCisgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IGZvbGRlcl9wYXRoOiBkdG5vZGUuZGF0YS5rZXks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ6ICIke3RyYW5z
LnNlY3VyaXR5LmVuY29kZV9pZD0KKCByZXBvc2l0b3J5LmlkICl9IiB9LAogICAgICAgICAgICAg
ICAgICAgICB9KTsKICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIG9uU2VsZWN0
OiBmdW5jdGlvbihzZWxlY3QsIGR0bm9kZSkgewpAQCAtNTUsNyArNTcsNyBAQAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHR5cGU6ICJQT1NUIiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1cmw6ICIke2gudXJsX2ZvciggY29udHJvbGxlcj0zRCdhZG1pbl90b29sc2hlPQpkJywg
YWN0aW9uPTNEJ2dldF9maWxlX2NvbnRlbnRzJyApfSIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YVR5cGU6ICJqc29uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh
OiB7IGZpbGVfcGF0aDogc2VsZWN0ZWRfdmFsdWUgfSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhOiB7IGZpbGVfcGF0aDogc2VsZWN0ZWRfdmFsdWUsIHJlcG9zaXRvcnlfPQppZDog
IiR7dHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCByZXBvc2l0b3J5LmlkICl9IiB9LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgOiBmdW5jdGlvbiggZGF0YSApIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5odG1sKCAnPGxhYmVsPicrZGF0YSsnPC9s
YWJlbD4nICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgpkaWZmIC1yIGMxY2M3NmZh
M2Q2NmVmYjA3MGYxOTYzMTUxYzRhYzBjYWUwNDhmM2YgLXIgN2NhOGYwZWNiMmFlOGIxYmEyYjUz
ZTE9CmZkMDljY2FlNDgxOTQwYTQ5IHRlbXBsYXRlcy93ZWJhcHBzL2dhbGF4eS9yZXF1ZXN0cy9j
b21tb24vY29tbW9uLm1ha28KLS0tIGEvdGVtcGxhdGVzL3dlYmFwcHMvZ2FsYXh5L3JlcXVlc3Rz
L2NvbW1vbi9jb21tb24ubWFrbworKysgYi90ZW1wbGF0ZXMvd2ViYXBwcy9nYWxheHkvcmVxdWVz
dHMvY29tbW9uL2NvbW1vbi5tYWtvCkBAIC0zMzMsNyArMzMzLDYgQEAKICAgICAgICBjYW5fYWRk
X3NhbXBsZXMgPTNEIGlzX3Vuc3VibWl0dGVkCiAgICAgY2FuX2RlbGV0ZV9zYW1wbGVzID0zRCBu
b3QgYWRkaW5nX25ld19zYW1wbGVzIGFuZCByZXF1ZXN0LnNhbXBsZXMgYW5kID0KKCAoIGlzX2Fk
bWluIGFuZCBub3QgaXNfY29tcGxldGUgKSBvciBpc191bnN1Ym1pdHRlZCApCiAgICAgY2FuX2Vk
aXRfc2FtcGxlcyA9M0QgcmVxdWVzdC5zYW1wbGVzIGFuZCAoIGlzX2FkbWluIG9yIG5vdCBpc19j
b21wbGV0ZT0KICkKLSAgICBjYW5fc2VsZWN0X2RhdGFzZXRzID0zRCBpc19hZG1pbiBhbmQgZGlz
cGxheWFibGVfc2FtcGxlX3dpZGdldHMgYW5kICggPQppc19zdWJtaXR0ZWQgb3IgaXNfY29tcGxl
dGUgKQogICAgIGNhbl90cmFuc2Zlcl9kYXRhc2V0cyA9M0QgaXNfYWRtaW4gYW5kIHJlcXVlc3Qu
c2FtcGxlcyBhbmQgbm90IHJlcXVlc3Q9Ci5pc19yZWplY3RlZAogICAgIGRpc3BsYXlfY2hlY2ti
b3hlcyA9M0Qgbm90IGFkZGluZ19uZXdfc2FtcGxlcyBhbmQgKCBpc19jb21wbGV0ZSBvciBpc189
CnJlamVjdGVkIG9yIGlzX3N1Ym1pdHRlZCApCiAgICAgZGlzcGxheV9iYXJfY29kZSA9M0QgcmVx
dWVzdC5zYW1wbGVzIGFuZCAoIGlzX2NvbXBsZXRlIG9yIGlzX3JlamVjdGVkID0Kb3IgaXNfc3Vi
bWl0dGVkICkKQEAgLTQwNyw3ICs0MDYsNyBAQAogICAgICAgICAgICAgICAgICVlbGlmIHNhbXBs
ZToKICAgICAgICAgICAgICAgICAgICAgPHRyPjx0ZD4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAlaWYgc2FtcGxlLnN0YXRlIGFuZCAoIGNhbl9zZWxlY3RfZGF0YXNldHMgb3IgPQpjYW5f
dHJhbnNmZXJfZGF0YXNldHMgKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAlaWYgc2Ft
cGxlLnN0YXRlIGFuZCBjYW5fdHJhbnNmZXJfZGF0YXNldHM6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMjIEEgc2FtcGxlIHdpbGwgaGF2ZSBhIHN0YXRlIG9ubHkgYWZ0ZXIgdD0K
aGUgcmVxdWVzdCBoYXMgYmVlbiBzdWJtaXR0ZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDwlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVkX2lk
ID0zRCB0cmFucy5zZWN1cml0eS5lbmNvZGVfaT0KZCggc2FtcGxlLmlkICkKQEAgLTQxOSwxNCAr
NDE4LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPTNE
InZpZXctaW5mbyIgaHJlZj0zRCIke2gudXJsPQpfZm9yKCBjb250cm9sbGVyPTNEJ3JlcXVlc3Rz
X2NvbW1vbicsIGFjdGlvbj0zRCd2aWV3X3NhbXBsZScsIGNudHJsbGVyPTNEY249CnRybGxlciwg
aWQ9M0R0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHNhbXBsZS5pZCApICl9Ij4ke3NhbXBsZS5u
YW1lIHwgaH08Lz0KYT48L2Rpdj48ZGl2IHBvcHVwbWVudT0zRCJzYW1wbGUtJHtzYW1wbGUuaWR9
LXBvcHVwIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVpZiBjYW5fc2Vs
ZWN0X2RhdGFzZXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVm
b3IgZXh0ZXJuYWxfc2VydmljZSBpbiBzYW1wbGUucmU9CnF1ZXN0LnR5cGUuZ2V0X2V4dGVybmFs
X3NlcnZpY2VzX2Zvcl9tYW51YWxfZGF0YV90cmFuc2ZlciggdHJhbnMgKToKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCUKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVfaXRlbV9sYWJlbCA9M0QgIlNlbGVjPQp0
IGRhdGFzZXRzIHRvIHRyYW5zZmVyIHVzaW5nICVzIiAlIGV4dGVybmFsX3NlcnZpY2UubmFtZQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlPgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgY2xhc3M9M0QiYWN0aW9u
LWJ1dHRvbiI9CiBocmVmPTNEIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJ3JlcXVlc3RzX2Fk
bWluJywgYWN0aW9uPTNEJ3NlbGVjdF9kYXRhcz0KZXRzX3RvX3RyYW5zZmVyJywgZXh0ZXJuYWxf
c2VydmljZV9pZD0zRHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggZXh0ZXJuYWxfPQpzZXJ2aWNl
LmlkICksIHJlcXVlc3RfaWQ9M0R0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHJlcXVlc3QuaWQg
KSwgc2FtcGxlX2k9CmQ9M0R0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHNhbXBsZS5pZCApICl9
Ij4ke21lbnVfaXRlbV9sYWJlbH08L2E+PC9saT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAlZW5kZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAlZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVpZiBzYW1wbGUu
ZGF0YXNldHMgYW5kIGxlbiggc2FtcGxlLmRhPQp0YXNldHMgKSA+IGxlbiggdHJhbnNmZXJyZWRf
ZGF0YXNldF9maWxlcyApIGFuZCBzYW1wbGUubGlicmFyeSBhbmQgc2FtcGxlLmY9Cm9sZGVyOgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBjbGFzcz0zRCJh
Y3Rpb24tYnV0dG9uIiBocmU9CmY9M0QiJHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmVxdWVz
dHNfYWRtaW4nLCBhY3Rpb249M0QnbWFuYWdlX2RhdGFzZXRzJz0KLCBzYW1wbGVfaWQ9M0R0cmFu
cy5zZWN1cml0eS5lbmNvZGVfaWQoIHNhbXBsZS5pZCApICl9Ij5NYW5hZ2Ugc2VsZWN0ZWQgZGF0
PQphc2V0czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJWVs
aWYgc2FtcGxlLmRhdGFzZXRzIGFuZCBsZW4oIHNhbXBsZS49CmRhdGFzZXRzICkgPTNEPTNEIGxl
biggdHJhbnNmZXJyZWRfZGF0YXNldF9maWxlcyApOgpAQCAtNjY1LDcgKzY1Niw2IEBACiAgICAg
ICAgICAgICBpc19hZG1pbiA9M0QgY250cmxsZXIgPTNEPTNEICdyZXF1ZXN0c19hZG1pbicgYW5k
IHRyYW5zLnVzZXJfaT0Kc19hZG1pbigpCiAgICAgICAgICAgICBpc19jb21wbGV0ZSA9M0Qgc2Ft
cGxlLnJlcXVlc3QuaXNfY29tcGxldGUKICAgICAgICAgICAgIGlzX3N1Ym1pdHRlZCA9M0Qgc2Ft
cGxlLnJlcXVlc3QuaXNfc3VibWl0dGVkCi0gICAgICAgICAgICBjYW5fc2VsZWN0X2RhdGFzZXRz
ID0zRCBpc19hZG1pbiBhbmQgKCBpc19jb21wbGV0ZSBvciBpc19zdWJtaT0KdHRlZCApCiAgICAg
ICAgICAgICBjYW5fdHJhbnNmZXJfZGF0YXNldHMgPTNEIGlzX2FkbWluIGFuZCBzYW1wbGUudW50
cmFuc2ZlcnJlZF9kYT0KdGFzZXRfZmlsZXMKICAgICAgICAgJT4KICAgICAgICAgIyMgVGhlIHRy
YW5zZmVyIHN0YXR1cyBzaG91bGQgdXBkYXRlIG9ubHkgd2hlbiB0aGUgcmVxdWVzdCBoYXMgYmVl
PQpuIHN1Ym1pdHRlZCBvciBjb21wbGV0ZQoKZGlmZiAtciBjMWNjNzZmYTNkNjZlZmIwNzBmMTk2
MzE1MWM0YWMwY2FlMDQ4ZjNmIC1yIDdjYThmMGVjYjJhZThiMWJhMmI1M2UxPQpmZDA5Y2NhZTQ4
MTk0MGE0OSB0ZW1wbGF0ZXMvd2ViYXBwcy9nYWxheHkvcmVxdWVzdHMvY29tbW9uL3ZpZXdfcmVx
dWVzdF9oaXM9CnRvcnkubWFrbwotLS0gYS90ZW1wbGF0ZXMvd2ViYXBwcy9nYWxheHkvcmVxdWVz
dHMvY29tbW9uL3ZpZXdfcmVxdWVzdF9oaXN0b3J5Lm1ha28KKysrIGIvdGVtcGxhdGVzL3dlYmFw
cHMvZ2FsYXh5L3JlcXVlc3RzL2NvbW1vbi92aWV3X3JlcXVlc3RfaGlzdG9yeS5tYWtvCkBAIC0x
MSw3ICsxMSw2IEBACiAgICAgY2FuX2FkZF9zYW1wbGVzID0zRCBpc191bnN1Ym1pdHRlZAogICAg
IGNhbl9lZGl0X3JlcXVlc3QgPTNEICggaXNfYWRtaW4gYW5kIG5vdCBpc19jb21wbGV0ZSApIG9y
IGlzX3Vuc3VibWl0dGVkCiAgICAgY2FuX3JlamVjdCA9M0QgaXNfYWRtaW4gYW5kIGlzX3N1Ym1p
dHRlZAotICAgIGNhbl9zZWxlY3RfZGF0YXNldHMgPTNEIGlzX2FkbWluIGFuZCAoIGlzX2NvbXBs
ZXRlIG9yIGlzX3N1Ym1pdHRlZCApCiAgICAgY2FuX3N1Ym1pdF9yZXF1ZXN0ID0zRCByZXF1ZXN0
LnNhbXBsZXMgYW5kIGlzX3Vuc3VibWl0dGVkCiAlPgo9MjAKCmRpZmYgLXIgYzFjYzc2ZmEzZDY2
ZWZiMDcwZjE5NjMxNTFjNGFjMGNhZTA0OGYzZiAtciA3Y2E4ZjBlY2IyYWU4YjFiYTJiNTNlMT0K
ZmQwOWNjYWU0ODE5NDBhNDkgdGVtcGxhdGVzL3dlYmFwcHMvZ2FsYXh5L3JlcXVlc3RzL2NvbW1v
bi92aWV3X3NhbXBsZV9kYXRhPQpzZXRzLm1ha28KLS0tIGEvdGVtcGxhdGVzL3dlYmFwcHMvZ2Fs
YXh5L3JlcXVlc3RzL2NvbW1vbi92aWV3X3NhbXBsZV9kYXRhc2V0cy5tYWtvCisrKyBiL3RlbXBs
YXRlcy93ZWJhcHBzL2dhbGF4eS9yZXF1ZXN0cy9jb21tb24vdmlld19zYW1wbGVfZGF0YXNldHMu
bWFrbwpAQCAtMTIsNyArMTIsNiBAQAogICAgIGlzX2FkbWluID0zRCBjbnRybGxlciA9M0Q9M0Qg
J3JlcXVlc3RzX2FkbWluJyBhbmQgdHJhbnMudXNlcl9pc19hZG1pbigpCiAgICAgaXNfY29tcGxl
dGUgPTNEIHNhbXBsZS5yZXF1ZXN0LmlzX2NvbXBsZXRlCiAgICAgaXNfc3VibWl0dGVkID0zRCBz
YW1wbGUucmVxdWVzdC5pc19zdWJtaXR0ZWQKLSAgICBjYW5fc2VsZWN0X2RhdGFzZXRzID0zRCBp
c19hZG1pbiBhbmQgKCBpc19jb21wbGV0ZSBvciBpc19zdWJtaXR0ZWQgKQogICAgIGNhbl90cmFu
c2Zlcl9kYXRhc2V0cyA9M0QgaXNfYWRtaW4gYW5kIHNhbXBsZS51bnRyYW5zZmVycmVkX2RhdGFz
ZXRfZmk9CmxlcyBhbmQgc2FtcGxlLmxpYnJhcnkgYW5kIHNhbXBsZS5mb2xkZXIKICU+Cj0yMApA
QCAtMjQsOSArMjMsNiBAQAogICAgICVlbmRpZgogICAgIDxsaT48YSBjbGFzcz0zRCJhY3Rpb24t
YnV0dG9uIiBpZD0zRCJzYW1wbGUtJHtzYW1wbGUuaWR9LXBvcHVwIiBjbGFzcz0KPTNEIm1lbnVi
dXR0b24iPkRhdGFzZXQgQWN0aW9uczwvYT48L2xpPjxkaXYgcG9wdXBtZW51PTNEInNhbXBsZS0k
e3NhbXBsZS5pPQpkfS1wb3B1cCI+Ci0gICAgICAgICVpZiBjYW5fc2VsZWN0X2RhdGFzZXRzOgot
ICAgICAgICAgICAgPGxpPjxhIGNsYXNzPTNEImFjdGlvbi1idXR0b24iIGhyZWY9M0QiJHtoLnVy
bF9mb3IoIGNvbnRyb2xsZXI9Cj0zRCdyZXF1ZXN0c19hZG1pbicsIGFjdGlvbj0zRCdzZWxlY3Rf
ZGF0YXNldHNfdG9fdHJhbnNmZXInLCBjbnRybGxlcj0zRGNudD0KcmxsZXIsIGV4dGVybmFsX3Nl
cnZpY2VfaWQ9M0R0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIGV4dGVybmFsX3NlcnZpY2UuaWQg
PQopLCByZXF1ZXN0X2lkPTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBzYW1wbGUucmVxdWVz
dC5pZCApLCBzYW1wbGVfaWQ9M0Q9CnRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggc2FtcGxlLmlk
ICkgKX0iPlNlbGVjdCBtb3JlIGRhdGFzZXRzPC9hPjwvbGk+Ci0gICAgICAgICVlbmRpZgogICAg
ICAgICA8bGk+PGEgY2xhc3M9M0QiYWN0aW9uLWJ1dHRvbiIgaHJlZj0zRCIke2gudXJsX2Zvcigg
Y29udHJvbGxlcj0zRCc9CmxpYnJhcnlfY29tbW9uJywgYWN0aW9uPTNEJ2Jyb3dzZV9saWJyYXJ5
JywgY250cmxsZXI9M0RjbnRybGxlciwgaWQ9M0R0cmFucz0KLnNlY3VyaXR5LmVuY29kZV9pZCgg
c2FtcGxlLmxpYnJhcnkuaWQgKSApfSI+VmlldyB0YXJnZXQgRGF0YSBMaWJyYXJ5PC9hPjwvPQps
aT48bGk+PGEgY2xhc3M9M0QiYWN0aW9uLWJ1dHRvbiIgaHJlZj0zRCIke2gudXJsX2ZvciggY29u
dHJvbGxlcj0zRCdyZXF1ZXM9CnRzX2NvbW1vbicsIGFjdGlvbj0zRCd2aWV3X3JlcXVlc3QnLCBj
bnRybGxlcj0zRGNudHJsbGVyLCBpZD0zRHRyYW5zLnNlY3VyaT0KdHkuZW5jb2RlX2lkKCBzYW1w
bGUucmVxdWVzdC5pZCApICl9Ij5Ccm93c2UgdGhpcyByZXF1ZXN0PC9hPjwvbGk+PC9kaXY+Cgpk
aWZmIC1yIGMxY2M3NmZhM2Q2NmVmYjA3MGYxOTYzMTUxYzRhYzBjYWUwNDhmM2YgLXIgN2NhOGYw
ZWNiMmFlOGIxYmEyYjUzZTE9CmZkMDljY2FlNDgxOTQwYTQ5IHRlbXBsYXRlcy93ZWJhcHBzL3Rv
b2xfc2hlZC9yZXBvc2l0b3J5L2NvbW1vbi5tYWtvCi0tLSBhL3RlbXBsYXRlcy93ZWJhcHBzL3Rv
b2xfc2hlZC9yZXBvc2l0b3J5L2NvbW1vbi5tYWtvCisrKyBiL3RlbXBsYXRlcy93ZWJhcHBzL3Rv
b2xfc2hlZC9yZXBvc2l0b3J5L2NvbW1vbi5tYWtvCkBAIC0yMSwxNCArMjEsMTQgQEAKICAgICAg
ICAgICAgICAgICBmeDogeyBoZWlnaHQ6ICJ0b2dnbGUiLCBkdXJhdGlvbjogMjAwIH0sCiAgICAg
ICAgICAgICAgICAgLy8gaW5pdEFqYXggaXMgaGFyZCB0byBmYWtlLCBzbyB3ZSBwYXNzIHRoZSBj
aGlsZHJlbiBhcyBvYj0KamVjdCBhcnJheToKICAgICAgICAgICAgICAgICBpbml0QWpheDoge3Vy
bDogIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJ3JlcG9zaXRvcnknLCBhPQpjdGlvbj0zRCdv
cGVuX2ZvbGRlcicgKX0iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICJq
c29uIiw9MjAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgZm9sZGVyX3BhdGg6
ICIke3JlcG9zaXRvcnkucmVwb19wYXRoKCB0PQpyYW5zLmFwcCApfSIgfSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAianNvbiIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhOiB7IGZvbGRlcl9wYXRoOiAiJHtyZXBvc2l0b3J5LnJlcG9fcGF0aCggdD0KcmFu
cy5hcHAgKX0iLCByZXBvc2l0b3J5X2lkOiAiJHt0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHJl
cG9zaXRvcnkuaWQgKX0iPQogIH0sCiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAg
ICBvbkxhenlSZWFkOiBmdW5jdGlvbihkdG5vZGUpewogICAgICAgICAgICAgICAgICAgICBkdG5v
ZGUuYXBwZW5kQWpheCh7Ci0gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICIke2gudXJsX2Zv
ciggY29udHJvbGxlcj0zRCdyZXBvc2l0b3J5JywgYWN0aT0Kb249M0Qnb3Blbl9mb2xkZXInICl9
Iiw9MjAKKyAgICAgICAgICAgICAgICAgICAgICAgIHVybDogIiR7aC51cmxfZm9yKCBjb250cm9s
bGVyPTNEJ3JlcG9zaXRvcnknLCBhY3RpPQpvbj0zRCdvcGVuX2ZvbGRlcicgKX0iLAogICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICJqc29uIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGE6IHsgZm9sZGVyX3BhdGg6IGR0bm9kZS5kYXRhLmtleSB9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YTogeyBmb2xkZXJfcGF0aDogZHRub2RlLmRhdGEua2V5LCByZXBvc2l0
b3J5X2k9CmQ6ICIke3RyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggcmVwb3NpdG9yeS5pZCApfSIg
IH0sCiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIH0sCiAgICAgICAg
ICAgICAgICAgb25TZWxlY3Q6IGZ1bmN0aW9uKHNlbGVjdCwgZHRub2RlKSB7CkBAIC02MSw3ICs2
MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogIlBPU1QiLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVybDogIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJ3Jl
cG9zaXRvcnknLCA9CmFjdGlvbj0zRCdnZXRfZmlsZV9jb250ZW50cycgKX0iLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAianNvbiIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YTogeyBmaWxlX3BhdGg6IHNlbGVjdGVkX3ZhbHVlIH0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YTogeyBmaWxlX3BhdGg6IHNlbGVjdGVkX3ZhbHVlLCByZXBv
c2l0b3J5Xz0KaWQ6ICIke3RyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggcmVwb3NpdG9yeS5pZCAp
fSIgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzIDogZnVuY3Rpb24gKCBk
YXRhICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmh0bWwoICc8bGFi
ZWw+JytkYXRhKyc8L2xhYmVsPicgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCgpo
dHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvN2RkYjQx
ZGNiMmIyLwpDaGFuZ2VzZXQ6ICAgN2RkYjQxZGNiMmIyCkJyYW5jaDogICAgICByZWxlYXNlXzE1
LjAzClVzZXI6ICAgICAgICBuYXRlZm9vCkRhdGU6ICAgICAgICAyMDE2LTAyLTI0IDIwOjUzOjM1
KzAwOjAwClN1bW1hcnk6ICAgICBSZWxlYXNlIDE1LjAzLjQKQWZmZWN0ZWQgIzogIDI3IGZpbGVz
CgpkaWZmIC1yIDFmMzQwNzJkNDczZjg3MWI5MGJmMWIyYmNjNmE3MmMzMjI0MjAwMWQgLXIgN2Rk
YjQxZGNiMmIyZTRkM2E2ZjgzNGQ9CjNkZDExNDI2ZjI2ZmI3OTAyIGxpYi9nYWxheHkvZXhjZXB0
aW9ucy9fX2luaXRfXy5weQotLS0gYS9saWIvZ2FsYXh5L2V4Y2VwdGlvbnMvX19pbml0X18ucHkK
KysrIGIvbGliL2dhbGF4eS9leGNlcHRpb25zL19faW5pdF9fLnB5CkBAIC03MSw2ICs3MSwxMSBA
QAogICAgIGVycl9jb2RlID0zRCBlcnJvcl9jb2Rlcy5NQUxGT1JNRURfSUQKPTIwCj0yMAorY2xh
c3MgTWFsZm9ybWVkQ29udGVudHMoIE1lc3NhZ2VFeGNlcHRpb24gKToKKyAgICBzdGF0dXNfY29k
ZSA9M0QgNDAwCisgICAgZXJyX2NvZGUgPTNEIGVycm9yX2NvZGVzLk1BTEZPUk1FRF9DT05URU5U
UworCisKIGNsYXNzIFVua25vd25Db250ZW50c1R5cGUoIE1lc3NhZ2VFeGNlcHRpb24gKToKICAg
ICBzdGF0dXNfY29kZSA9M0QgNDAwCiAgICAgZXJyX2NvZGUgPTNEIGVycm9yX2NvZGVzLlVOS05P
V05fQ09OVEVOVFNfVFlQRQoKZGlmZiAtciAxZjM0MDcyZDQ3M2Y4NzFiOTBiZjFiMmJjYzZhNzJj
MzIyNDIwMDFkIC1yIDdkZGI0MWRjYjJiMmU0ZDNhNmY4MzRkPQozZGQxMTQyNmYyNmZiNzkwMiBs
aWIvZ2FsYXh5L2V4Y2VwdGlvbnMvZXJyb3JfY29kZXMuanNvbgotLS0gYS9saWIvZ2FsYXh5L2V4
Y2VwdGlvbnMvZXJyb3JfY29kZXMuanNvbgorKysgYi9saWIvZ2FsYXh5L2V4Y2VwdGlvbnMvZXJy
b3JfY29kZXMuanNvbgpAQCAtNjEsMTAgKzYxLDE1IEBACiAgICAgfSwKICAgIHsKICAgICAibmFt
ZSI6ICJVU0VSX1RPT0xfTUVUQV9QQVJBTUVURVJfUFJPQkxFTSIsCi0gICAgImNvZGUiOiA0MDAw
MTEsCisgICAgImNvZGUiOiA0MDAwMTIsCiAgICAgIm1lc3NhZ2UiOiAiU3VwcGxpZWQgaW5jb3Jy
ZWN0IG9yIGluY29tcGF0aWJsZSB0b29sIG1ldGEgcGFyYW1ldGVycy4iCiAgICB9LAogICAgewor
ICAgICJuYW1lIjogIk1BTEZPUk1FRF9DT05URU5UUyIsCisgICAgImNvZGUiOiA0MDAwMTMsCisg
ICAgIm1lc3NhZ2UiOiAiVGhlIGNvbnRlbnRzIG9mIHRoZSByZXF1ZXN0IGFyZSBtYWxmb3JtZWQu
IgorICAgIH0sCisgICB7CiAgICAgIm5hbWUiOiAiVVNFUl9BVVRIRU5USUNBVElPTl9GQUlMRUQi
LAogICAgICJjb2RlIjogNDAxMDAxLAogICAgICJtZXNzYWdlIjogIkF1dGhlbnRpY2F0aW9uIGZh
aWxlZCwgaW52YWxpZCBjcmVkZW50aWFscyBzdXBwbGllZC4iCgpkaWZmIC1yIDFmMzQwNzJkNDcz
Zjg3MWI5MGJmMWIyYmNjNmE3MmMzMjI0MjAwMWQgLXIgN2RkYjQxZGNiMmIyZTRkM2E2ZjgzNGQ9
CjNkZDExNDI2ZjI2ZmI3OTAyIGxpYi9nYWxheHkvbW9kZWwvX19pbml0X18ucHkKLS0tIGEvbGli
L2dhbGF4eS9tb2RlbC9fX2luaXRfXy5weQorKysgYi9saWIvZ2FsYXh5L21vZGVsL19faW5pdF9f
LnB5CkBAIC01LDE1ICs1LDExIEBACiB0aGUgcmVsYXRpb25zaGlwIGNhcmRpbmFsaXRpZXMgYXJl
IG9idmlvdXMgKGUuZy4gcHJlZmVyIERhdGFzZXQgdG8gRGF0YSkKICIiIgo9MjAKLWZyb20gZ2Fs
YXh5IGltcG9ydCBlZ2dzCi1lZ2dzLnJlcXVpcmUoInBleHBlY3QiKQotCiBpbXBvcnQgY29kZWNz
CiBpbXBvcnQgZXJybm8KIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCBv
cwotaW1wb3J0IHBleHBlY3QKIGltcG9ydCBqc29uCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgdGlt
ZQpAQCAtMzkzNywyNyArMzkzMyw2IEBACiAgICAgICAgICAgICAgICAgdW50cmFuc2ZlcnJlZF9k
YXRhc2V0cy5hcHBlbmQoIGRhdGFzZXQgKQogICAgICAgICByZXR1cm4gdW50cmFuc2ZlcnJlZF9k
YXRhc2V0cwo9MjAKLSAgICBkZWYgZ2V0X3VudHJhbnNmZXJyZWRfZGF0YXNldF9zaXplKCBzZWxm
LCBmaWxlcGF0aCwgc2NwX2NvbmZpZ3MgKToKLSAgICAgICAgZGVmIHByaW50X3RpY2tzKCBkICk6
Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVycm9yX21zZyA9M0QgJ0Vycm9yIGVuY291bnRl
cmVkIGluIGRldGVybWluaW5nIHRoZSBmaWxlIHNpemUgb2YgJT0KcyBvbiB0aGUgZXh0ZXJuYWxf
c2VydmljZS4nICUgZmlsZXBhdGgKLSAgICAgICAgaWYgbm90IHNjcF9jb25maWdzWydob3N0J10g
b3Igbm90IHNjcF9jb25maWdzWyd1c2VyX25hbWUnXSBvciBub3QgPQpzY3BfY29uZmlnc1sncGFz
c3dvcmQnXToKLSAgICAgICAgICAgIHJldHVybiBlcnJvcl9tc2cKLSAgICAgICAgbG9naW5fc3Ry
ID0zRCAnJXNAJXMnICUgKCBzY3BfY29uZmlnc1sndXNlcl9uYW1lJ10sIHNjcF9jb25maWdzWydo
PQpvc3QnXSApCi0gICAgICAgIGNtZCAgPTNEICdzc2ggJXMgImR1IC1zaCBcJyVzXCciJyAlICgg
bG9naW5fc3RyLCBmaWxlcGF0aCApCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG91dHB1dCA9
M0QgcGV4cGVjdC5ydW4oIGNtZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
dmVudHM9M0R7ICcuc3N3b3JkOionOiBzY3BfY29uZmlnc1sncGFzPQpzd29yZCddKydcclxuJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXhwZWN0LlRJTUVP
VVQ6cHJpbnRfdGlja3N9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVv
dXQ9M0QxMCApCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICByZXR1cm4g
ZXJyb3JfbXNnCi0gICAgICAgICMgY2xlYW51cCB0aGUgb3V0cHV0IHRvIGdldCBqdXN0IHRoZSBm
aWxlIHNpemUKLSAgICAgICAgcmV0dXJuICBvdXRwdXQucmVwbGFjZSggZmlsZXBhdGgsICcnIClc
Ci0gICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoICdQYXNzd29yZDonLCAnJyApXAotICAg
ICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKCAiJ3MgcGFzc3dvcmQ6IiwgJycgKVwKLSAgICAg
ICAgICAgICAgICAgICAgICAucmVwbGFjZSggbG9naW5fc3RyLCAnJyApXAotICAgICAgICAgICAg
ICAgICAgICAgIC5zdHJpcCgpCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIHJ1bl9kZXRhaWxzKCBz
ZWxmICk6CiAgICAgICAgICMgc2VsZi5ydW5zIGlzIGEgbGlzdCBvZiBTYW1wbGVSdW5Bc3NvY2lh
dGlvbnMgb3JkZXJlZCBkZXNjZW5kaW5nID0Kb24gdXBkYXRlX3RpbWUuCgpkaWZmIC1yIDFmMzQw
NzJkNDczZjg3MWI5MGJmMWIyYmNjNmE3MmMzMjI0MjAwMWQgLXIgN2RkYjQxZGNiMmIyZTRkM2E2
ZjgzNGQ9CjNkZDExNDI2ZjI2ZmI3OTAyIGxpYi9nYWxheHkvb2JqZWN0c3RvcmUvX19pbml0X18u
cHkKLS0tIGEvbGliL2dhbGF4eS9vYmplY3RzdG9yZS9fX2luaXRfXy5weQorKysgYi9saWIvZ2Fs
YXh5L29iamVjdHN0b3JlL19faW5pdF9fLnB5CkBAIC0xMSw3ICsxMSw3IEBACiBpbXBvcnQgdGhy
ZWFkaW5nCiBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFRyZWUKPTIwCi1mcm9tIGdhbGF4
eS51dGlsIGltcG9ydCB1bWFza19maXhfcGVybXMsIGZvcmNlX3N5bWxpbmsKK2Zyb20gZ2FsYXh5
LnV0aWwgaW1wb3J0IHVtYXNrX2ZpeF9wZXJtcywgZm9yY2Vfc3ltbGluaywgc2FmZV9yZWxwYXRo
CiBmcm9tIGdhbGF4eS5leGNlcHRpb25zIGltcG9ydCBPYmplY3RJbnZhbGlkLCBPYmplY3ROb3RG
b3VuZAogZnJvbSBnYWxheHkudXRpbC5zbGVlcGVyIGltcG9ydCBTbGVlcGVyCiBmcm9tIGdhbGF4
eS51dGlsLmRpcmVjdG9yeV9oYXNoIGltcG9ydCBkaXJlY3RvcnlfaGFzaF9pZApAQCAtMjU2LDcg
KzI1NiwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb21wb3NlZCBkaXJlY3Rv
cnkgc3RydWN0dXJlIGRvZXMgbm90IGluY2x1ZGU9CiBhIGhhc2ggaWQKICAgICAgICAgICAgICAg
ICAgICAgICAgICAoZS5nLiwgL2ZpbGVzL2RhdGFzZXRfMTAuZGF0IChvbGQpIHZzLiAvZmlsZXMv
MDAwPQovZGF0YXNldF8xMC5kYXQgKG5ldykpCiAgICAgICAgICIiIgotICAgICAgICBiYXNlID0z
RCBzZWxmLmV4dHJhX2RpcnMuZ2V0KGJhc2VfZGlyLCBzZWxmLmZpbGVfcGF0aCkKKyAgICAgICAg
YmFzZSA9M0Qgb3MucGF0aC5hYnNwYXRoKHNlbGYuZXh0cmFfZGlycy5nZXQoYmFzZV9kaXIsIHNl
bGYuZmlsZV9wPQphdGgpKQorICAgICAgICAjIGV4dHJhX2RpciBzaG91bGQgbmV2ZXIgYmUgY29u
c3RydWN0ZWQgZnJvbSBwcm92aWRlZCBkYXRhIGJ1dCBqdXN0CisgICAgICAgICMgbWFrZSBzdXJl
IHRoZXJlIGFyZSBubyBzaGVuYW5uaWdhbnMgYWZvb3QKKyAgICAgICAgaWYgZXh0cmFfZGlyIGFu
ZCBleHRyYV9kaXIgIT0zRCBvcy5wYXRoLm5vcm1wYXRoKGV4dHJhX2Rpcik6CisgICAgICAgICAg
ICBsb2cud2FybmluZygnZXh0cmFfZGlyIGlzIG5vdCBub3JtYWxpemVkOiAlcycsIGV4dHJhX2Rp
cikKKyAgICAgICAgICAgIHJhaXNlIE9iamVjdEludmFsaWQoIlRoZSByZXF1ZXN0ZWQgb2JqZWN0
IGlzIGludmFsaWQiKQorICAgICAgICAjIGVuc3VyZSB0aGF0IGFueSBwYXJlbnQgZGlyZWN0b3J5
IHJlZmVyZW5jZXMgaW4gYWx0X25hbWUgd291bGQgbm90CisgICAgICAgICMgcmVzdWx0IGluIGEg
cGF0aCBub3QgY29udGFpbmVkIGluIHRoZSBkaXJlY3RvcnkgcGF0aCBjb25zdHJ1Y3RlZD0KIGhl
cmUKKyAgICAgICAgaWYgYWx0X25hbWUgYW5kIG5vdCBzYWZlX3JlbHBhdGgoYWx0X25hbWUpOgor
ICAgICAgICAgICAgbG9nLndhcm5pbmcoJ2FsdF9uYW1lIHdvdWxkIGxvY2F0ZSBwYXRoIG91dHNp
ZGUgZGlyOiAlcycsIGFsdF89Cm5hbWUpCisgICAgICAgICAgICByYWlzZSBPYmplY3RJbnZhbGlk
KCJUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBpbnZhbGlkIikKICAgICAgICAgaWYgb2xkX3N0eWxl
OgogICAgICAgICAgICAgaWYgZXh0cmFfZGlyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAg
IHBhdGggPTNEIG9zLnBhdGguam9pbihiYXNlLCBleHRyYV9kaXIpCkBAIC02MjMsOSArNjMzLDEw
IEBACiAgICAgZWxpZiBzdG9yZSA9M0Q9M0QgJ2lyb2RzJzoKICAgICAgICAgZnJvbSAucm9kcyBp
bXBvcnQgSVJPRFNPYmplY3RTdG9yZQogICAgICAgICByZXR1cm4gSVJPRFNPYmplY3RTdG9yZShj
b25maWc9M0Rjb25maWcsIGNvbmZpZ194bWw9M0Rjb25maWdfeG1sKQotICAgIGVsaWYgc3RvcmUg
PTNEPTNEICdwdWxzYXInOgotICAgICAgICBmcm9tIC5wdWxzYXIgaW1wb3J0IFB1bHNhck9iamVj
dFN0b3JlCi0gICAgICAgIHJldHVybiBQdWxzYXJPYmplY3RTdG9yZShjb25maWc9M0Rjb25maWcs
IGNvbmZpZ194bWw9M0Rjb25maWdfeG1sKQorICAgICMgRGlzYWJsZSB0aGUgUHVsc2FyIG9iamVj
dCBzdG9yZSBmb3Igbm93IHVudGlsIGl0IHJlY2VpdmVzIHNvbWUgYXR0ZW49CnRpb24KKyAgICAj
IGVsaWYgc3RvcmUgPTNEPTNEICdwdWxzYXInOgorICAgICMgICAgZnJvbSAucHVsc2FyIGltcG9y
dCBQdWxzYXJPYmplY3RTdG9yZQorICAgICMgICAgcmV0dXJuIFB1bHNhck9iamVjdFN0b3JlKGNv
bmZpZz0zRGNvbmZpZywgY29uZmlnX3htbD0zRGNvbmZpZ194bWwpCiAgICAgZWxzZToKICAgICAg
ICAgbG9nLmVycm9yKCJVbnJlY29nbml6ZWQgb2JqZWN0IHN0b3JlIGRlZmluaXRpb246IHswfSIu
Zm9ybWF0KHN0b3JlPQopKQo9MjAKCmRpZmYgLXIgMWYzNDA3MmQ0NzNmODcxYjkwYmYxYjJiY2M2
YTcyYzMyMjQyMDAxZCAtciA3ZGRiNDFkY2IyYjJlNGQzYTZmODM0ZD0KM2RkMTE0MjZmMjZmYjc5
MDIgbGliL2dhbGF4eS9vYmplY3RzdG9yZS9yb2RzLnB5Ci0tLSBhL2xpYi9nYWxheHkvb2JqZWN0
c3RvcmUvcm9kcy5weQorKysgYi9saWIvZ2FsYXh5L29iamVjdHN0b3JlL3JvZHMucHkKQEAgLTEy
LDcgKzEyLDggQEAKIGZyb20gcG9zaXhwYXRoIGltcG9ydCBiYXNlbmFtZSBhcyBwYXRoX2Jhc2Vu
YW1lCiBmcm9tIHBvc2l4cGF0aCBpbXBvcnQgZGlybmFtZSBhcyBwYXRoX2Rpcm5hbWUKPTIwCi1m
cm9tIGdhbGF4eS5leGNlcHRpb25zIGltcG9ydCBPYmplY3ROb3RGb3VuZAorZnJvbSBnYWxheHku
ZXhjZXB0aW9ucyBpbXBvcnQgT2JqZWN0Tm90Rm91bmQsIE9iamVjdEludmFsaWQKK2Zyb20gZ2Fs
YXh5LnV0aWwgaW1wb3J0IHNhZmVfcmVscGF0aAogZnJvbSAuLm9iamVjdHN0b3JlIGltcG9ydCBE
aXNrT2JqZWN0U3RvcmUsIE9iamVjdFN0b3JlLCBsb2NhbF9leHRyYV9kaXJzCj0yMAogdHJ5OgpA
QCAtNzEsNiArNzIsMjAgQEAKICAgICAgICAgbG9nLmluZm8oICJpUk9EUyBkYXRhIGZvciB0aGlz
IGluc3RhbmNlIHdpbGwgYmUgc3RvcmVkIGluIGNvbGxlY3RpPQpvbjogJXMsIHJlc291cmNlOiAl
cyIsIHNlbGYucm9vdF9jb2xsZWN0aW9uX3BhdGgsIHNlbGYuZGVmYXVsdF9yZXNvdXJjZSApCj0y
MAogICAgIGRlZiBfX2dldF9yb2RzX3BhdGgoIHNlbGYsIG9iaiwgYmFzZV9kaXI9M0ROb25lLCBk
aXJfb25seT0zREZhbHNlLCBleHQ9CnJhX2Rpcj0zRE5vbmUsIGV4dHJhX2Rpcl9hdF9yb290PTNE
RmFsc2UsIGFsdF9uYW1lPTNETm9uZSwgc3RyaXBfZGF0PTNEVHJ1ZT0KLCAqKmt3YXJncyApOgor
ICAgICAgICAjIGV4dHJhX2RpciBzaG91bGQgbmV2ZXIgYmUgY29uc3RydWN0ZWQgZnJvbSBwcm92
aWRlZCBkYXRhIGJ1dCBqdXN0CisgICAgICAgICMgbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBzaGVu
YW5uaWdhbnMgYWZvb3QKKyAgICAgICAgaWYgZXh0cmFfZGlyIGFuZCBleHRyYV9kaXIgIT0zRCBv
cy5wYXRoLm5vcm1wYXRoKGV4dHJhX2Rpcik6CisgICAgICAgICAgICBsb2cud2FybmluZygnZXh0
cmFfZGlyIGlzIG5vdCBub3JtYWxpemVkOiAlcycsIGV4dHJhX2RpcikKKyAgICAgICAgICAgIHJh
aXNlIE9iamVjdEludmFsaWQoIlRoZSByZXF1ZXN0ZWQgb2JqZWN0IGlzIGludmFsaWQiKQorICAg
ICAgICAjIGVuc3VyZSB0aGF0IGFueSBwYXJlbnQgZGlyZWN0b3J5IHJlZmVyZW5jZXMgaW4gYWx0
X25hbWUgd291bGQgbm90CisgICAgICAgICMgcmVzdWx0IGluIGEgcGF0aCBub3QgY29udGFpbmVk
IGluIHRoZSBkaXJlY3RvcnkgcGF0aCBjb25zdHJ1Y3RlZD0KIGhlcmUKKyAgICAgICAgaWYgYWx0
X25hbWU6CisgICAgICAgICAgICBpZiBub3Qgc2FmZV9yZWxwYXRoKGFsdF9uYW1lKToKKyAgICAg
ICAgICAgICAgICBsb2cud2FybmluZygnYWx0X25hbWUgd291bGQgbG9jYXRlIHBhdGggb3V0c2lk
ZSBkaXI6ICVzJywgPQphbHRfbmFtZSkKKyAgICAgICAgICAgICAgICByYWlzZSBPYmplY3RJbnZh
bGlkKCJUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBpbnZhbGlkIikKKyAgICAgICAgICAgICMgYWx0
X25hbWUgY2FuIGNvbnRhaW4gcGFyZW50IGRpcmVjdG9yeSByZWZlcmVuY2VzLCBidXQgaVJPRFMg
PQp3aWxsCisgICAgICAgICAgICAjIG5vdCBmb2xsb3cgdGhlbSwgc28gaWYgdGhleSBhcmUgdmFs
aWQgd2Ugbm9ybWFsaXplIHRoZW0gb3V0CisgICAgICAgICAgICBhbHRfbmFtZSA9M0Qgb3MucGF0
aC5ub3JtcGF0aChhbHRfbmFtZSkKICAgICAgICAgcGF0aCA9M0QgIiIKICAgICAgICAgaWYgZXh0
cmFfZGlyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcGF0aCA9M0QgZXh0cmFfZGlyCgpkaWZm
IC1yIDFmMzQwNzJkNDczZjg3MWI5MGJmMWIyYmNjNmE3MmMzMjI0MjAwMWQgLXIgN2RkYjQxZGNi
MmIyZTRkM2E2ZjgzNGQ9CjNkZDExNDI2ZjI2ZmI3OTAyIGxpYi9nYWxheHkvb2JqZWN0c3RvcmUv
czMucHkKLS0tIGEvbGliL2dhbGF4eS9vYmplY3RzdG9yZS9zMy5weQorKysgYi9saWIvZ2FsYXh5
L29iamVjdHN0b3JlL3MzLnB5CkBAIC0xMiw4ICsxMiw4IEBACj0yMAogZnJvbSBkYXRldGltZSBp
bXBvcnQgZGF0ZXRpbWUKPTIwCi1mcm9tIGdhbGF4eS5leGNlcHRpb25zIGltcG9ydCBPYmplY3RO
b3RGb3VuZAotZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgc3RyaW5nX2FzX2Jvb2wsIHVtYXNrX2Zp
eF9wZXJtcworZnJvbSBnYWxheHkuZXhjZXB0aW9ucyBpbXBvcnQgT2JqZWN0Tm90Rm91bmQsIE9i
amVjdEludmFsaWQKK2Zyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IHN0cmluZ19hc19ib29sLCB1bWFz
a19maXhfcGVybXMsIHNhZmVfcmVscGF0aAogZnJvbSBnYWxheHkudXRpbC5kaXJlY3RvcnlfaGFz
aCBpbXBvcnQgZGlyZWN0b3J5X2hhc2hfaWQKIGZyb20gZ2FsYXh5LnV0aWwuc2xlZXBlciBpbXBv
cnQgU2xlZXBlcgogZnJvbSAuczNfbXVsdGlwYXJ0X3VwbG9hZCBpbXBvcnQgbXVsdGlwYXJ0X3Vw
bG9hZApAQCAtMjAxLDYgKzIwMSwyMCBAQAogICAgICAgICAgICAgICAgIHVtYXNrX2ZpeF9wZXJt
cyggcGF0aCwgc2VsZi5jb25maWcudW1hc2ssIDA2NjYsIHNlbGYuY29uZmk9CmcuZ2lkICkKPTIw
CiAgICAgZGVmIF9jb25zdHJ1Y3RfcGF0aChzZWxmLCBvYmosIGRpcl9vbmx5PTNETm9uZSwgZXh0
cmFfZGlyPTNETm9uZSwgZXh0cj0KYV9kaXJfYXRfcm9vdD0zREZhbHNlLCBhbHRfbmFtZT0zRE5v
bmUsICoqa3dhcmdzKToKKyAgICAgICAgIyBleHRyYV9kaXIgc2hvdWxkIG5ldmVyIGJlIGNvbnN0
cnVjdGVkIGZyb20gcHJvdmlkZWQgZGF0YSBidXQganVzdAorICAgICAgICAjIG1ha2Ugc3VyZSB0
aGVyZSBhcmUgbm8gc2hlbmFubmlnYW5zIGFmb290CisgICAgICAgIGlmIGV4dHJhX2RpciBhbmQg
ZXh0cmFfZGlyICE9M0Qgb3MucGF0aC5ub3JtcGF0aChleHRyYV9kaXIpOgorICAgICAgICAgICAg
bG9nLndhcm5pbmcoJ2V4dHJhX2RpciBpcyBub3Qgbm9ybWFsaXplZDogJXMnLCBleHRyYV9kaXIp
CisgICAgICAgICAgICByYWlzZSBPYmplY3RJbnZhbGlkKCJUaGUgcmVxdWVzdGVkIG9iamVjdCBp
cyBpbnZhbGlkIikKKyAgICAgICAgIyBlbnN1cmUgdGhhdCBhbnkgcGFyZW50IGRpcmVjdG9yeSBy
ZWZlcmVuY2VzIGluIGFsdF9uYW1lIHdvdWxkIG5vdAorICAgICAgICAjIHJlc3VsdCBpbiBhIHBh
dGggbm90IGNvbnRhaW5lZCBpbiB0aGUgZGlyZWN0b3J5IHBhdGggY29uc3RydWN0ZWQ9CiBoZXJl
CisgICAgICAgIGlmIGFsdF9uYW1lOgorICAgICAgICAgICAgaWYgbm90IHNhZmVfcmVscGF0aChh
bHRfbmFtZSk6CisgICAgICAgICAgICAgICAgbG9nLndhcm5pbmcoJ2FsdF9uYW1lIHdvdWxkIGxv
Y2F0ZSBwYXRoIG91dHNpZGUgZGlyOiAlcycsID0KYWx0X25hbWUpCisgICAgICAgICAgICAgICAg
cmFpc2UgT2JqZWN0SW52YWxpZCgiVGhlIHJlcXVlc3RlZCBvYmplY3QgaXMgaW52YWxpZCIpCisg
ICAgICAgICAgICAjIGFsdF9uYW1lIGNhbiBjb250YWluIHBhcmVudCBkaXJlY3RvcnkgcmVmZXJl
bmNlcywgYnV0IFMzIHdpbD0KbCBub3QKKyAgICAgICAgICAgICMgZm9sbG93IHRoZW0sIHNvIGlm
IHRoZXkgYXJlIHZhbGlkIHdlIG5vcm1hbGl6ZSB0aGVtIG91dAorICAgICAgICAgICAgYWx0X25h
bWUgPTNEIG9zLnBhdGgubm9ybXBhdGgoYWx0X25hbWUpCiAgICAgICAgIHJlbF9wYXRoID0zRCBv
cy5wYXRoLmpvaW4oKmRpcmVjdG9yeV9oYXNoX2lkKG9iai5pZCkpCiAgICAgICAgIGlmIGV4dHJh
X2RpciBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGlmIGV4dHJhX2Rpcl9hdF9yb290OgoKZGlm
ZiAtciAxZjM0MDcyZDQ3M2Y4NzFiOTBiZjFiMmJjYzZhNzJjMzIyNDIwMDFkIC1yIDdkZGI0MWRj
YjJiMmU0ZDNhNmY4MzRkPQozZGQxMTQyNmYyNmZiNzkwMiBsaWIvZ2FsYXh5L3Rvb2xzL2ltcF9l
eHAvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4eS90b29scy9pbXBfZXhwL19faW5pdF9fLnB5
CisrKyBiL2xpYi9nYWxheHkvdG9vbHMvaW1wX2V4cC9fX2luaXRfXy5weQpAQCAtNSw2ICs1LDcg
QEAKIGltcG9ydCBqc29uCiBpbXBvcnQgZGF0ZXRpbWUKIGZyb20gZ2FsYXh5IGltcG9ydCBtb2Rl
bAorZnJvbSBnYWxheHkuZXhjZXB0aW9ucyBpbXBvcnQgTWFsZm9ybWVkQ29udGVudHMKIGZyb20g
Z2FsYXh5Lm1vZGVsLml0ZW1fYXR0cnMgaW1wb3J0IFVzZXNBbm5vdGF0aW9ucwogZnJvbSBnYWxh
eHkubW9kZWwub3JtIGltcG9ydCBlYWdlcmxvYWQsIGVhZ2VybG9hZF9hbGwKIGZyb20gZ2FsYXh5
LnRvb2xzLnBhcmFtZXRlcnMuYmFzaWMgaW1wb3J0IFVudmFsaWRhdGVkVmFsdWUKQEAgLTE5MCw5
ICsxOTEsOSBAQAogICAgICAgICAgICAgICAgICAgICBpZiBkYXRhc2V0X2F0dHJzLmdldCgnZXhw
b3J0ZWQnLCBUcnVlKSBpcyBUcnVlOgogICAgICAgICAgICAgICAgICAgICAgICAgIyBEbyBzZWN1
cml0eSBjaGVjayBhbmQgbW92ZS9jb3B5IGRhdGFzZXQgZGF0YS4KICAgICAgICAgICAgICAgICAg
ICAgICAgIHRlbXBfZGF0YXNldF9maWxlX25hbWUgPTNEIFwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcy5wYXRoLmFic3BhdGgoIG9zLnBhdGguam9pbiggYXJjaGl2ZV9kaXIsIGRhPQp0
YXNldF9hdHRyc1snZmlsZV9uYW1lJ10gKSApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3MucGF0aC5yZWFscGF0aCggb3MucGF0aC5hYnNwYXRoKCBvcy5wYXRoLmpvaT0KbiggYXJjaGl2
ZV9kaXIsIGRhdGFzZXRfYXR0cnNbJ2ZpbGVfbmFtZSddICkgKSApCiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiBub3QgZmlsZV9pbl9kaXIoIHRlbXBfZGF0YXNldF9maWxlX25hbWUsIG9zLnBh
dD0KaC5qb2luKCBhcmNoaXZlX2RpciwgImRhdGFzZXRzIiApICk6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCAiSW52YWxpZCBkYXRhc2V0IHBhdGg6ICVzIiAl
ID0KdGVtcF9kYXRhc2V0X2ZpbGVfbmFtZSApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmFpc2UgTWFsZm9ybWVkQ29udGVudHMoICJJbnZhbGlkIGRhdGFzZXQgcGF0aD0KOiAlcyIgJSB0
ZW1wX2RhdGFzZXRfZmlsZV9uYW1lICkKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRhdGFz
ZXRzX3VzYWdlX2NvdW50c1sgdGVtcF9kYXRhc2V0X2ZpbGVfbmFtZSBdPQogPTNEPTNEIDE6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2h1dGlsLm1vdmUoIHRlbXBfZGF0YXNldF9maWxl
X25hbWUsIGhkYS5maWxlXz0KbmFtZSApCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgpA
QCAtMzE0LDYgKzMxNSw3IEBACiAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgogICAg
ICAgICAgICAgICAgIGppaGEuam9iLnN0ZGVyciArPTNEICJFcnJvciBjbGVhbmluZyB1cCBoaXN0
b3J5IGltcG9ydCBqb2I9CjogJXMiICUgZQogICAgICAgICAgICAgICAgIHNlbGYuc2Ffc2Vzc2lv
bi5mbHVzaCgpCisgICAgICAgICAgICAgICAgcmFpc2UKPTIwCj0yMAogY2xhc3MgSm9iRXhwb3J0
SGlzdG9yeUFyY2hpdmVXcmFwcGVyKCBvYmplY3QsIFVzZXNBbm5vdGF0aW9ucyApOgoKZGlmZiAt
ciAxZjM0MDcyZDQ3M2Y4NzFiOTBiZjFiMmJjYzZhNzJjMzIyNDIwMDFkIC1yIDdkZGI0MWRjYjJi
MmU0ZDNhNmY4MzRkPQozZGQxMTQyNmYyNmZiNzkwMiBsaWIvZ2FsYXh5L3Rvb2xzL2ltcF9leHAv
dW5wYWNrX3Rhcl9nel9hcmNoaXZlLnB5Ci0tLSBhL2xpYi9nYWxheHkvdG9vbHMvaW1wX2V4cC91
bnBhY2tfdGFyX2d6X2FyY2hpdmUucHkKKysrIGIvbGliL2dhbGF4eS90b29scy9pbXBfZXhwL3Vu
cGFja190YXJfZ3pfYXJjaGl2ZS5weQpAQCAtNiw2ICs2LDcgQEAKICAgICAtLVt1cmx8ZmlsZV0g
c291cmNlIHR5cGUsIGVpdGhlciBhIFVSTCBvciBhIGZpbGUuCiAiIiIKPTIwCitpbXBvcnQgb3MK
IGltcG9ydCBzeXMKIGltcG9ydCBvcHRwYXJzZQogaW1wb3J0IHRhcmZpbGUKQEAgLTQzLDYgKzQ0
LDIyIEBACiAgICAgICAgIHJldHVybiBOb25lCj0yMAo9MjAKK2RlZiBjaGVja19hcmNoaXZlKCBh
cmNoaXZlX2ZpbGUsIGRlc3RfZGlyICk6CisgICAgIiIiCisgICAgRW5zdXJlIHRoYXQgYSB0YXIg
YXJjaGl2ZSBoYXMgbm8gYWJzb2x1dGUgcGF0aHMgb3IgcmVsYXRpdmUgcGF0aHMgb3V0cz0KaWRl
CisgICAgdGhlIGFyY2hpdmUuCisgICAgIiIiCisgICAgd2l0aCB0YXJmaWxlLm9wZW4oIGFyY2hp
dmVfZmlsZSwgbW9kZT0zRCdyOmd6JyApIGFzIGFyY2hpdmVfZnA6CisgICAgICAgIGZvciBhcmNf
cGF0aCBpbiBhcmNoaXZlX2ZwLmdldG5hbWVzKCk6CisgICAgICAgICAgICBhc3NlcnQgb3MucGF0
aC5ub3JtcGF0aCgKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oCisgICAgICAgICAgICAg
ICAgICAgIGRlc3RfZGlyLAorICAgICAgICAgICAgICAgICAgICBhcmNfcGF0aAorICAgICAgICAg
ICAgICAgICkgKS5zdGFydHN3aXRoKCBkZXN0X2Rpci5yc3RyaXAob3Muc2VwKSArIG9zLnNlcCAp
LCBcCisgICAgICAgICAgICAgICAgIkFyY2hpdmUgbWVtYmVyIHdvdWxkIGV4dHJhY3Qgb3V0c2lk
ZSB0YXJnZXQgZGlyZWN0b3J5OiAlcz0KIiAlIGFyY19wYXRoCisgICAgcmV0dXJuIFRydWUKKwor
CiBkZWYgdW5wYWNrX2FyY2hpdmUoIGFyY2hpdmVfZmlsZSwgZGVzdF9kaXIgKToKICAgICAiIiIK
ICAgICBVbnBhY2sgYSB0YXIgYW5kL29yIGd6aXBwZWQgYXJjaGl2ZSBpbnRvIGEgZGVzdGluYXRp
b24gZGlyZWN0b3J5LgpAQCAtNTEsMTMgKzY4LDggQEAKICAgICBhcmNoaXZlX2ZwLmV4dHJhY3Rh
bGwoIHBhdGg9M0RkZXN0X2RpciApCiAgICAgYXJjaGl2ZV9mcC5jbG9zZSgpCj0yMAotaWYgX19u
YW1lX18gPTNEPTNEICJfX21haW5fXyI6Ci0gICAgIyBQYXJzZSBjb21tYW5kIGxpbmUuCi0gICAg
cGFyc2VyID0zRCBvcHRwYXJzZS5PcHRpb25QYXJzZXIoKQotICAgIHBhcnNlci5hZGRfb3B0aW9u
KCAnLVUnLCAnLS11cmwnLCBkZXN0PTNEJ2lzX3VybCcsIGFjdGlvbj0zRCJzdG9yZV90cnU9CmUi
LCBoZWxwPTNEJ1NvdXJjZSBpcyBhIFVSTC4nICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbiggJy1G
JywgJy0tZmlsZScsIGRlc3Q9M0QnaXNfZmlsZScsIGFjdGlvbj0zRCJzdG9yZV90PQpydWUiLCBo
ZWxwPTNEJ1NvdXJjZSBpcyBhIFVSTC4nICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbiggJy1lJywg
Jy0tZW5jb2RlZCcsIGRlc3Q9M0QnaXNfYjY0ZW5jb2RlZCcsIGFjdGlvbj0KPTNEInN0b3JlX3Ry
dWUiLCBkZWZhdWx0PTNERmFsc2UsIGhlbHA9M0QnU291cmNlIGFuZCBkZXN0aW5hdGlvbiBkaXIg
dmFsdWVzPQogYXJlIGJhc2U2NCBlbmNvZGVkLicgKQotICAgIChvcHRpb25zLCBhcmdzKSA9M0Qg
cGFyc2VyLnBhcnNlX2FyZ3MoKQorCitkZWYgbWFpbihvcHRpb25zLCBhcmdzKToKICAgICBpc191
cmwgPTNEIGJvb2woIG9wdGlvbnMuaXNfdXJsICkKICAgICBpc19maWxlID0zRCBib29sKCBvcHRp
b25zLmlzX2ZpbGUgKQogICAgIGFyY2hpdmVfc291cmNlLCBkZXN0X2RpciA9M0QgYXJncwpAQCAt
NjYsMTQgKzc4LDI1IEBACiAgICAgICAgIGFyY2hpdmVfc291cmNlID0zRCBiNjRkZWNvZGUoIGFy
Y2hpdmVfc291cmNlICkKICAgICAgICAgZGVzdF9kaXIgPTNEIGI2NGRlY29kZSggZGVzdF9kaXIg
KQo9MjAKKyAgICAjIEdldCBhcmNoaXZlIGZyb20gVVJMLgorICAgIGlmIGlzX3VybDoKKyAgICAg
ICAgYXJjaGl2ZV9maWxlID0zRCB1cmxfdG9fZmlsZSggYXJjaGl2ZV9zb3VyY2UsIHRlbXBmaWxl
Lk5hbWVkVGVtcG9yPQphcnlGaWxlKCBkaXI9M0RkZXN0X2RpciApLm5hbWUgKQorICAgIGVsaWYg
aXNfZmlsZToKKyAgICAgICAgYXJjaGl2ZV9maWxlID0zRCBhcmNoaXZlX3NvdXJjZQorCisgICAg
IyBVbnBhY2sgYXJjaGl2ZS4KKyAgICBjaGVja19hcmNoaXZlKCBhcmNoaXZlX2ZpbGUsIGRlc3Rf
ZGlyICkKKyAgICB1bnBhY2tfYXJjaGl2ZSggYXJjaGl2ZV9maWxlLCBkZXN0X2RpciApCisKKwor
aWYgX19uYW1lX18gPTNEPTNEICJfX21haW5fXyI6CisgICAgIyBQYXJzZSBjb21tYW5kIGxpbmUu
CisgICAgcGFyc2VyID0zRCBvcHRwYXJzZS5PcHRpb25QYXJzZXIoKQorICAgIHBhcnNlci5hZGRf
b3B0aW9uKCAnLVUnLCAnLS11cmwnLCBkZXN0PTNEJ2lzX3VybCcsIGFjdGlvbj0zRCJzdG9yZV90
cnU9CmUiLCBoZWxwPTNEJ1NvdXJjZSBpcyBhIFVSTC4nICkKKyAgICBwYXJzZXIuYWRkX29wdGlv
biggJy1GJywgJy0tZmlsZScsIGRlc3Q9M0QnaXNfZmlsZScsIGFjdGlvbj0zRCJzdG9yZV90PQpy
dWUiLCBoZWxwPTNEJ1NvdXJjZSBpcyBhIFVSTC4nICkKKyAgICBwYXJzZXIuYWRkX29wdGlvbigg
Jy1lJywgJy0tZW5jb2RlZCcsIGRlc3Q9M0QnaXNfYjY0ZW5jb2RlZCcsIGFjdGlvbj0KPTNEInN0
b3JlX3RydWUiLCBkZWZhdWx0PTNERmFsc2UsIGhlbHA9M0QnU291cmNlIGFuZCBkZXN0aW5hdGlv
biBkaXIgdmFsdWVzPQogYXJlIGJhc2U2NCBlbmNvZGVkLicgKQorICAgIChvcHRpb25zLCBhcmdz
KSA9M0QgcGFyc2VyLnBhcnNlX2FyZ3MoKQogICAgIHRyeToKLSAgICAgICAgIyBHZXQgYXJjaGl2
ZSBmcm9tIFVSTC4KLSAgICAgICAgaWYgaXNfdXJsOgotICAgICAgICAgICAgYXJjaGl2ZV9maWxl
ID0zRCB1cmxfdG9fZmlsZSggYXJjaGl2ZV9zb3VyY2UsIHRlbXBmaWxlLk5hbWVkVGU9Cm1wb3Jh
cnlGaWxlKCBkaXI9M0RkZXN0X2RpciApLm5hbWUgKQotICAgICAgICBlbGlmIGlzX2ZpbGU6Ci0g
ICAgICAgICAgICBhcmNoaXZlX2ZpbGUgPTNEIGFyY2hpdmVfc291cmNlCi0KLSAgICAgICAgIyBV
bnBhY2sgYXJjaGl2ZS4KLSAgICAgICAgdW5wYWNrX2FyY2hpdmUoIGFyY2hpdmVfZmlsZSwgZGVz
dF9kaXIgKQorICAgICAgICBtYWluKG9wdGlvbnMsIGFyZ3MpCiAgICAgZXhjZXB0IEV4Y2VwdGlv
biwgZToKICAgICAgICAgcHJpbnQgIkVycm9yIHVucGFja2luZyB0YXIvZ3ogYXJjaGl2ZTogJXMi
ICUgZSwgc3lzLnN0ZGVycgoKZGlmZiAtciAxZjM0MDcyZDQ3M2Y4NzFiOTBiZjFiMmJjYzZhNzJj
MzIyNDIwMDFkIC1yIDdkZGI0MWRjYjJiMmU0ZDNhNmY4MzRkPQozZGQxMTQyNmYyNmZiNzkwMiBs
aWIvZ2FsYXh5L3V0aWwvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4eS91dGlsL19faW5pdF9f
LnB5CisrKyBiL2xpYi9nYWxheHkvdXRpbC9fX2luaXRfXy5weQpAQCAtMjgsNyArMjgsNyBAQAo9
MjAKIGZyb20gZW1haWwuTUlNRVRleHQgaW1wb3J0IE1JTUVUZXh0Cj0yMAotZnJvbSBvcy5wYXRo
IGltcG9ydCByZWxwYXRoCitmcm9tIG9zLnBhdGggaW1wb3J0IHJlbHBhdGgsIG5vcm1wYXRoCiBm
cm9tIGhhc2hsaWIgaW1wb3J0IG1kNQogZnJvbSBpdGVydG9vbHMgaW1wb3J0IGl6aXAKPTIwCkBA
IC0xMjQzLDYgKzEyNDMsMjMgQEAKIGRlZiBnYWxheHlfZGlyZWN0b3J5KCk6CiAgICAgcmV0dXJu
IG9zLnBhdGguYWJzcGF0aChnYWxheHlfcm9vdF9wYXRoKQo9MjAKKworZGVmIHNhZmVfcmVscGF0
aChwYXRoKToKKyAgICAiIiIKKyAgICBHaXZlbiB3aGF0IHdlIGV4cGVjdCB0byBiZSBhIHJlbGF0
aXZlIHBhdGgsIGRldGVybWluZSB3aGV0aGVyIHRoZSBwYXRoCisgICAgd291bGQgZXhpc3QgaW5z
aWRlIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKworICAgIDp0eXBlICAgcGF0aDogICBzdHJpbmcK
KyAgICA6cGFyYW0gIHBhdGg6ICAgYSBwYXRoIHRvIGNoZWNrCisgICAgOnJ0eXBlOiAgICAgICAg
IGJvb2wKKyAgICA6cmV0dXJuczogICAgICAgYGBUcnVlYGAgaWYgcGF0aCBpcyByZWxhdGl2ZSBh
bmQgZG9lcyBub3QgcmVmZXJlbmNlIGEgPQpwYXRoCisgICAgICAgIGluIGEgcGFyZW50IGRpcmVj
dG9yeSwgYGBGYWxzZWBgIG90aGVyd2lzZS4KKyAgICAiIiIKKyAgICBpZiBwYXRoLnN0YXJ0c3dp
dGgob3Muc2VwKSBvciBub3JtcGF0aChwYXRoKS5zdGFydHN3aXRoKG9zLnBhcmRpcik6CisgICAg
ICAgIHJldHVybiBGYWxzZQorICAgIHJldHVybiBUcnVlCisKKwogaWYgX19uYW1lX18gPTNEPTNE
ICdfX21haW5fXyc6CiAgICAgaW1wb3J0IGRvY3Rlc3QKICAgICBkb2N0ZXN0LnRlc3Rtb2Qoc3lz
Lm1vZHVsZXNbX19uYW1lX19dLCB2ZXJib3NlPTNERmFsc2UpCgpkaWZmIC1yIDFmMzQwNzJkNDcz
Zjg3MWI5MGJmMWIyYmNjNmE3MmMzMjI0MjAwMWQgLXIgN2RkYjQxZGNiMmIyZTRkM2E2ZjgzNGQ9
CjNkZDExNDI2ZjI2ZmI3OTAyIGxpYi9nYWxheHkvdmVyc2lvbi5weQotLS0gYS9saWIvZ2FsYXh5
L3ZlcnNpb24ucHkKKysrIGIvbGliL2dhbGF4eS92ZXJzaW9uLnB5CkBAIC0xLDMgKzEsMyBAQAog
VkVSU0lPTl9NQUpPUiA9M0QgIjE1LjAzIgotVkVSU0lPTl9NSU5PUiA9M0QgIjMiCitWRVJTSU9O
X01JTk9SID0zRCAiNCIKIFZFUlNJT04gPTNEIFZFUlNJT05fTUFKT1IgKyAoJy4nICsgVkVSU0lP
Tl9NSU5PUiBpZiBWRVJTSU9OX01JTk9SIGVsc2UgJycpCgpkaWZmIC1yIDFmMzQwNzJkNDczZjg3
MWI5MGJmMWIyYmNjNmE3MmMzMjI0MjAwMWQgLXIgN2RkYjQxZGNiMmIyZTRkM2E2ZjgzNGQ9CjNk
ZDExNDI2ZjI2ZmI3OTAyIGxpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL3Rvb2xzLnB5Ci0t
LSBhL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL3Rvb2xzLnB5CisrKyBiL2xpYi9nYWxh
eHkvd2ViYXBwcy9nYWxheHkvYXBpL3Rvb2xzLnB5CkBAIC04NSwxNCArODUsMTQgQEAKPTIwCiAg
ICAgQF9mdXR1cmVfZXhwb3NlX2FwaQogICAgIEB3ZWIucmVxdWlyZV9hZG1pbgotICAgIGRlZiBy
ZWxvYWQoIHNlbGYsIHRyYW5zLCB0b29sX2lkLCAqKmt3ZCApOgorICAgIGRlZiByZWxvYWQoIHNl
bGYsIHRyYW5zLCBpZCwgKiprd2QgKToKICAgICAgICAgIiIiCiAgICAgICAgIEdFVCAvYXBpL3Rv
b2xzL3t0b29sX2lkfS9yZWxvYWQKICAgICAgICAgUmVsb2FkIHNwZWNpZmllZCB0b29sLgogICAg
ICAgICAiIiIKICAgICAgICAgdG9vbGJveCA9M0QgdHJhbnMuYXBwLnRvb2xib3gKLSAgICAgICAg
Z2FsYXh5LnF1ZXVlX3dvcmtlci5zZW5kX2NvbnRyb2xfdGFzayggdHJhbnMsICdyZWxvYWRfdG9v
bCcsIG5vb3BfPQpzZWxmPTNEVHJ1ZSwga3dhcmdzPTNEeyAndG9vbF9pZCc6IHRvb2xfaWQgfSAp
Ci0gICAgICAgIG1lc3NhZ2UsIHN0YXR1cyA9M0QgdHJhbnMuYXBwLnRvb2xib3gucmVsb2FkX3Rv
b2xfYnlfaWQoIHRvb2xfaWQgKQorICAgICAgICBnYWxheHkucXVldWVfd29ya2VyLnNlbmRfY29u
dHJvbF90YXNrKCB0cmFucywgJ3JlbG9hZF90b29sJywgbm9vcF89CnNlbGY9M0RUcnVlLCBrd2Fy
Z3M9M0R7ICd0b29sX2lkJzogaWQgfSApCisgICAgICAgIG1lc3NhZ2UsIHN0YXR1cyA9M0QgdHJh
bnMuYXBwLnRvb2xib3gucmVsb2FkX3Rvb2xfYnlfaWQoIGlkICkKICAgICAgICAgcmV0dXJuIHsg
c3RhdHVzOiBtZXNzYWdlIH0KPTIwCiAgICAgQF9mdXR1cmVfZXhwb3NlX2FwaQoKZGlmZiAtciAx
ZjM0MDcyZDQ3M2Y4NzFiOTBiZjFiMmJjYzZhNzJjMzIyNDIwMDFkIC1yIDdkZGI0MWRjYjJiMmU0
ZDNhNmY4MzRkPQozZGQxMTQyNmYyNmZiNzkwMiBsaWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2Nv
bnRyb2xsZXJzL2FkbWluX3Rvb2xzaGVkLnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxh
eHkvY29udHJvbGxlcnMvYWRtaW5fdG9vbHNoZWQucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBz
L2dhbGF4eS9jb250cm9sbGVycy9hZG1pbl90b29sc2hlZC5weQpAQCAtMzg0LDExICszODQsMTEg
QEAKPTIwCiAgICAgQHdlYi5qc29uCiAgICAgQHdlYi5yZXF1aXJlX2FkbWluCi0gICAgZGVmIGdl
dF9maWxlX2NvbnRlbnRzKCBzZWxmLCB0cmFucywgZmlsZV9wYXRoICk6CisgICAgZGVmIGdldF9m
aWxlX2NvbnRlbnRzKCBzZWxmLCB0cmFucywgZmlsZV9wYXRoLCByZXBvc2l0b3J5X2lkICk6CiAg
ICAgICAgICMgQXZvaWQgY2FjaGluZwogICAgICAgICB0cmFucy5yZXNwb25zZS5oZWFkZXJzWydQ
cmFnbWEnXSA9M0QgJ25vLWNhY2hlJwogICAgICAgICB0cmFucy5yZXNwb25zZS5oZWFkZXJzWydF
eHBpcmVzJ10gPTNEICcwJwotICAgICAgICByZXR1cm4gc3VjLmdldF9yZXBvc2l0b3J5X2ZpbGVf
Y29udGVudHMoIGZpbGVfcGF0aCApCisgICAgICAgIHJldHVybiBzdWMuZ2V0X3JlcG9zaXRvcnlf
ZmlsZV9jb250ZW50cyggdHJhbnMuYXBwLCBmaWxlX3BhdGgsIHJlcD0Kb3NpdG9yeV9pZCApCj0y
MAogICAgIEB3ZWIuZXhwb3NlCiAgICAgQHdlYi5yZXF1aXJlX2FkbWluCkBAIC05NjEsMTEgKzk2
MSwxMSBAQAo9MjAKICAgICBAd2ViLmpzb24KICAgICBAd2ViLnJlcXVpcmVfYWRtaW4KLSAgICBk
ZWYgb3Blbl9mb2xkZXIoIHNlbGYsIHRyYW5zLCBmb2xkZXJfcGF0aCApOgorICAgIGRlZiBvcGVu
X2ZvbGRlciggc2VsZiwgdHJhbnMsIGZvbGRlcl9wYXRoLCByZXBvc2l0b3J5X2lkICk6CiAgICAg
ICAgICMgQXZvaWQgY2FjaGluZwogICAgICAgICB0cmFucy5yZXNwb25zZS5oZWFkZXJzWydQcmFn
bWEnXSA9M0QgJ25vLWNhY2hlJwogICAgICAgICB0cmFucy5yZXNwb25zZS5oZWFkZXJzWydFeHBp
cmVzJ10gPTNEICcwJwotICAgICAgICByZXR1cm4gc3VjLm9wZW5fcmVwb3NpdG9yeV9maWxlc19m
b2xkZXIoIGZvbGRlcl9wYXRoICkKKyAgICAgICAgcmV0dXJuIHN1Yy5vcGVuX3JlcG9zaXRvcnlf
ZmlsZXNfZm9sZGVyKCB0cmFucy5hcHAsIGZvbGRlcl9wYXRoLCByPQplcG9zaXRvcnlfaWQgKQo9
MjAKICAgICBAd2ViLmV4cG9zZQogICAgIEB3ZWIucmVxdWlyZV9hZG1pbgoKZGlmZiAtciAxZjM0
MDcyZDQ3M2Y4NzFiOTBiZjFiMmJjYzZhNzJjMzIyNDIwMDFkIC1yIDdkZGI0MWRjYjJiMmU0ZDNh
NmY4MzRkPQozZGQxMTQyNmYyNmZiNzkwMiBsaWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRy
b2xsZXJzL3JlcXVlc3RzX2FkbWluLnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkv
Y29udHJvbGxlcnMvcmVxdWVzdHNfYWRtaW4ucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL2dh
bGF4eS9jb250cm9sbGVycy9yZXF1ZXN0c19hZG1pbi5weQpAQCAtNiwxMCArNiw3IEBACiBmcm9t
IGdhbGF4eSBpbXBvcnQgbW9kZWwsIHV0aWwKIGZyb20gZ2FsYXh5LndlYi5mb3JtX2J1aWxkZXIg
aW1wb3J0ICoKIGZyb20gLnJlcXVlc3RzX2NvbW1vbiBpbXBvcnQgUmVxdWVzdHNHcmlkLCBpbnZh
bGlkX2lkX3JlZGlyZWN0Ci1mcm9tIGdhbGF4eSBpbXBvcnQgZWdncwotZWdncy5yZXF1aXJlKCJh
bXFwIikKLWltcG9ydCBhbXFwCi1pbXBvcnQgbG9nZ2luZywgb3MsIHBleHBlY3QsIENvbmZpZ1Bh
cnNlcgoraW1wb3J0IGxvZ2dpbmcsIG9zLCBDb25maWdQYXJzZXIKPTIwCiBsb2cgPTNEIGxvZ2dp
bmcuZ2V0TG9nZ2VyKCBfX25hbWVfXyApCj0yMApAQCAtMzUxLDE4MiArMzQ4LDYgQEAKICAgICAg
ICAgcmV0dXJuIHRyYW5zLnJlc3BvbnNlLnNlbmRfcmVkaXJlY3QoIHdlYi51cmxfZm9yKCBjb250
cm9sbGVyPTNEJ3JlPQpxdWVzdHNfYWRtaW4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0zRCdtYW5hZ2U9Cl9kYXRhc2V0
cycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2FtcGxlX2lkPTNEc2FtcD0KbGVfaWQgKSApCi0gICAgQHdlYi5leHBvc2UKLSAgICBA
d2ViLnJlcXVpcmVfYWRtaW4KLSAgICBkZWYgc2VsZWN0X2RhdGFzZXRzX3RvX3RyYW5zZmVyKCBz
ZWxmLCB0cmFucywgKiprd2QgKToKLSAgICAgICAgcGFyYW1zID0zRCB1dGlsLlBhcmFtcygga3dk
ICkKLSAgICAgICAgbWVzc2FnZSA9M0QgdXRpbC5yZXN0b3JlX3RleHQoIHBhcmFtcy5nZXQoICdt
ZXNzYWdlJywgJycgKSApCi0gICAgICAgIHN0YXR1cyA9M0QgcGFyYW1zLmdldCggJ3N0YXR1cycs
ICdkb25lJyApCi0gICAgICAgIHJlcXVlc3RfaWQgPTNEIGt3ZC5nZXQoICdyZXF1ZXN0X2lkJywg
Tm9uZSApCi0gICAgICAgIGV4dGVybmFsX3NlcnZpY2VfaWQgPTNEIGt3ZC5nZXQoICdleHRlcm5h
bF9zZXJ2aWNlX2lkJywgTm9uZSApCi0gICAgICAgIGZpbGVzID0zRCBbXQotICAgICAgICByZXF1
ZXN0ID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5tb2RlbC5SZXF1ZXN0ICkuZ2V0
KCB0cmE9Cm5zLnNlY3VyaXR5LmRlY29kZV9pZCggcmVxdWVzdF9pZCApICkKLSAgICAgICAgZXh0
ZXJuYWxfc2VydmljZSA9M0QgdHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeSggdHJhbnMubW9kZWwuRXh0
ZXJuYWxTPQplcnZpY2UgKS5nZXQoIHRyYW5zLnNlY3VyaXR5LmRlY29kZV9pZCggZXh0ZXJuYWxf
c2VydmljZV9pZCApICkKLSAgICAgICAgIyBMb2FkIHRoZSBkYXRhIHRyYW5zZmVyIHNldHRpbmdz
Ci0gICAgICAgIGV4dGVybmFsX3NlcnZpY2UubG9hZF9kYXRhX3RyYW5zZmVyX3NldHRpbmdzKCB0
cmFucyApCi0gICAgICAgIHNjcF9jb25maWdzID0zRCBleHRlcm5hbF9zZXJ2aWNlLmRhdGFfdHJh
bnNmZXJbIHRyYW5zLm1vZGVsLkV4dGVybj0KYWxTZXJ2aWNlLmRhdGFfdHJhbnNmZXJfcHJvdG9j
b2wuU0NQIF0KLSAgICAgICAgc2VsZWN0ZWRfZGF0YXNldHNfdG9fdHJhbnNmZXIgPTNEIHV0aWwu
cmVzdG9yZV90ZXh0KCBwYXJhbXMuZ2V0KCAnPQpzZWxlY3RlZF9kYXRhc2V0c190b190cmFuc2Zl
cicsICcnICkgKQotICAgICAgICBpZiBzZWxlY3RlZF9kYXRhc2V0c190b190cmFuc2ZlcjoKLSAg
ICAgICAgICAgIHNlbGVjdGVkX2RhdGFzZXRzX3RvX3RyYW5zZmVyID0zRCBzZWxlY3RlZF9kYXRh
c2V0c190b190cmFuc2ZlPQpyLnNwbGl0KCcsJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHNlbGVjdGVkX2RhdGFzZXRzX3RvX3RyYW5zZmVyID0zRCBbXQotICAgICAgICBzYW1wbGVfaWQg
PTNEIGt3ZC5nZXQoICdzYW1wbGVfaWQnLCAnbm9uZScgKQotICAgICAgICBzYW1wbGVfaWRfc2Vs
ZWN0X2ZpZWxkID0zRCBzZWxmLl9fYnVpbGRfc2FtcGxlX2lkX3NlbGVjdF9maWVsZCggdHI9CmFu
cywgcmVxdWVzdCwgc2FtcGxlX2lkICkKLSAgICAgICAgaWYgc2FtcGxlX2lkICE9M0QgJ25vbmUn
OgotICAgICAgICAgICAgc2FtcGxlID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5t
b2RlbC5TYW1wbGUgKS5nZXQoIHQ9CnJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBzYW1wbGVfaWQg
KSApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzYW1wbGUgPTNEIE5vbmUKLSAgICAgICAg
IyBUaGUgX19nZXRfZmlsZXMoKSBtZXRob2QgcmVkaXJlY3RzIGhlcmUgd2l0aCBhIHN0YXR1cyBv
ZiAnZXJyb3InPQogYW5kIGEgbWVzc2FnZSBpZiB0aGVyZQotICAgICAgICAjIHdhcyBhIHByb2Js
ZW0gcmV0cmlldmluZyB0aGUgZmlsZXMuCi0gICAgICAgIGlmIHBhcmFtcy5nZXQoICdzZWxlY3Rf
ZGF0YXNldHNfdG9fdHJhbnNmZXJfYnV0dG9uJywgRmFsc2UgKToKLSAgICAgICAgICAgICMgR2V0
IHRoZSBzYW1wbGUgdGhhdCB3YXMgc2VxdWVuY2VkIHRvIHByb2R1Y2UgdGhlc2UgZGF0YXNldHMu
Ci0gICAgICAgICAgICBpZiBzYW1wbGVfaWQgPTNEPTNEICdub25lJzoKLSAgICAgICAgICAgICAg
ICBkZWwga3dkWyAnc2VsZWN0X2RhdGFzZXRzX3RvX3RyYW5zZmVyX2J1dHRvbicgXQotICAgICAg
ICAgICAgICAgIG1lc3NhZ2UgPTNEICdTZWxlY3QgdGhlIHNhbXBsZSB0aGF0IHdhcyBzZXF1ZW5j
ZWQgdG8gcHJvZHU9CmNlIHRoZSBkYXRhc2V0cyB5b3Ugd2FudCB0byB0cmFuc2Zlci4nCi0gICAg
ICAgICAgICAgICAga3dkWyAnbWVzc2FnZScgXSA9M0QgbWVzc2FnZQotICAgICAgICAgICAgICAg
IGt3ZFsgJ3N0YXR1cycgXSA9M0QgJ2Vycm9yJwotICAgICAgICAgICAgICAgIHJldHVybiB0cmFu
cy5yZXNwb25zZS5zZW5kX3JlZGlyZWN0KCB3ZWIudXJsX2ZvciggY29udHJvbGw9CmVyPTNEJ3Jl
cXVlc3RzX2FkbWluJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0KPTNEJ3NlbGVjdF9kYXRhc2V0c190b190
cmFuc2ZlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqKmt3ZCApICkKLSAgICAgICAgICAgIGlmIG5vdCBzYW1wbGUu
bGlicmFyeToKLSAgICAgICAgICAgICAgICAjIERpc3BsYXkgYW4gZXJyb3IgaWYgYSBzYW1wbGUg
aGFzIGJlZW4gc2VsZWN0ZWQgdGhhdAotICAgICAgICAgICAgICAgICMgaGFzIG5vdCB5ZXQgYmVl
biBhc3NvY2lhdGVkIHdpdGggYSBkZXN0aW5hdGlvbiBsaWJyYXJ5LgotICAgICAgICAgICAgICAg
IG1lc3NhZ2UgPTNEICdTZWxlY3QgYSB0YXJnZXQgZGF0YSBsaWJyYXJ5IGFuZCBmb2xkZXIgZm9y
IHQ9CmhlIHNhbXBsZSBiZWZvcmUgc2VsZWN0aW5nIHRoZSBkYXRhc2V0cy4nCi0gICAgICAgICAg
ICAgICAgc3RhdHVzID0zRCAnZXJyb3InCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zLnJl
c3BvbnNlLnNlbmRfcmVkaXJlY3QoIHdlYi51cmxfZm9yKCBjb250cm9sbD0KZXI9M0QncmVxdWVz
dHNfY29tbW9uJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0KPTNEJ2VkaXRfc2FtcGxlcycsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjbnRybGxlcj0KPTNEJ3JlcXVlc3RzX2FkbWluJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPTNEdHJhPQpucy5z
ZWN1cml0eS5lbmNvZGVfaWQoIHJlcXVlc3QuaWQgKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz0KPTNEc3Rh
dHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWVzc2FnZT0KPTNEbWVzc2FnZSApICkKLSAgICAgICAgICAgICMgU2F2
ZSB0aGUgc2FtcGxlIGRhdGFzZXRzCi0gICAgICAgICAgICBzYW1wbGVfZGF0YXNldF9maWxlX25h
bWVzID0zRCBzZWxmLl9fY3JlYXRlX3NhbXBsZV9kYXRhc2V0cyggdD0KcmFucywgc2FtcGxlLCBz
ZWxlY3RlZF9kYXRhc2V0c190b190cmFuc2ZlciwgZXh0ZXJuYWxfc2VydmljZSApCi0gICAgICAg
ICAgICBpZiBzYW1wbGVfZGF0YXNldF9maWxlX25hbWVzOgotICAgICAgICAgICAgICAgIG1lc3Nh
Z2UgPTNEICdEYXRhc2V0cyAoJXMpIGhhdmUgYmVlbiBzZWxlY3RlZCBmb3Igc2FtcGxlICg9CiVz
KScgJSBcCi0gICAgICAgICAgICAgICAgICAgICggc3RyKCBzYW1wbGVfZGF0YXNldF9maWxlX25h
bWVzIClbMTotMV0ucmVwbGFjZSggIiciLD0KICIiICksIHNhbXBsZS5uYW1lICkKLSAgICAgICAg
ICAgIHJldHVybiB0cmFucy5yZXNwb25zZS5zZW5kX3JlZGlyZWN0KCB3ZWIudXJsX2ZvciggY29u
dHJvbGxlcj0KPTNEJ3JlcXVlc3RzX2FkbWluJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPTNEJ21hPQpuYWdlX2Rh
dGFzZXRzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdF9pZD0KPTNEcmVxdWVzdF9pZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlX2lk
PTNEPQpzYW1wbGVfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9M0RtZT0Kc3NhZ2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz0z
RHN0YT0KdHVzICkgKQotICAgICAgICByZXR1cm4gdHJhbnMuZmlsbF90ZW1wbGF0ZSggJy9hZG1p
bi9yZXF1ZXN0cy9zZWxlY3RfZGF0YXNldHNfdG9fdHI9CmFuc2Zlci5tYWtvJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNudHJsbGVyPTNEJ3JlcXVlc3RzX2FkbWluJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Q9M0RyZXF1ZXN0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZXJuYWxfc2VydmljZT0zRGV4
dGVybmFsX3NlcnZpY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3Bf
Y29uZmlncz0zRHNjcF9jb25maWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2FtcGxlPTNEc2FtcGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2FtcGxlX2lkX3NlbGVjdF9maWVsZD0zRHNhbXBsZV9pZF9zZWw9CmVjdF9maWVsZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz0zRHN0YXR1cywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9M0RtZXNzYWdlICkKLSAgICBAd2Vi
Lmpzb24KLSAgICBkZWYgZ2V0X2ZpbGVfZGV0YWlscyggc2VsZiwgdHJhbnMsIHJlcXVlc3RfaWQs
IGV4dGVybmFsX3NlcnZpY2VfaWQsIGZvPQpsZGVyX3BhdGggKToKLSAgICAgICAgZGVmIHByaW50
X3RpY2tzKCBkICk6Ci0gICAgICAgICAgICAjIHBleHBlY3QgdGltZW91dCBtZXRob2QKLSAgICAg
ICAgICAgIHBhc3MKLSAgICAgICAgIyBBdm9pZCBjYWNoaW5nCi0gICAgICAgIHRyYW5zLnJlc3Bv
bnNlLmhlYWRlcnNbJ1ByYWdtYSddID0zRCAnbm8tY2FjaGUnCi0gICAgICAgIHRyYW5zLnJlc3Bv
bnNlLmhlYWRlcnNbJ0V4cGlyZXMnXSA9M0QgJzAnCi0gICAgICAgIHJlcXVlc3QgPTNEIHRyYW5z
LnNhX3Nlc3Npb24ucXVlcnkoIHRyYW5zLm1vZGVsLlJlcXVlc3QgKS5nZXQoIHRyYT0KbnMuc2Vj
dXJpdHkuZGVjb2RlX2lkKCByZXF1ZXN0X2lkICkgKQotICAgICAgICBleHRlcm5hbF9zZXJ2aWNl
ID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5tb2RlbC5FeHRlcm5hbFM9CmVydmlj
ZSApLmdldCggdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBleHRlcm5hbF9zZXJ2aWNlX2lkICkg
KQotICAgICAgICBleHRlcm5hbF9zZXJ2aWNlLmxvYWRfZGF0YV90cmFuc2Zlcl9zZXR0aW5ncygg
dHJhbnMgKQotICAgICAgICBzY3BfY29uZmlncyA9M0QgZXh0ZXJuYWxfc2VydmljZS5kYXRhX3Ry
YW5zZmVyWyB0cmFucy5tb2RlbC5FeHRlcm49CmFsU2VydmljZS5kYXRhX3RyYW5zZmVyX3Byb3Rv
Y29sLlNDUCBdCi0gICAgICAgIGNtZCAgPTNEICdzc2ggJXNAJXMgImxzIC1vZ2hwIFwnJXNcJyIn
ICUgKCBzY3BfY29uZmlnc1sgJ3VzZXJfbmFtZT0KJyBdLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcF9jb25maWdzWyAnaG9zdCcgXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xkZXJfcGF0aCAp
Ci0gICAgICAgICMgSGFuZGxlIHRoZSBhdXRoZW50aWNhdGlvbiBtZXNzYWdlIGlmIHNzaCBrZXlz
IGFyZSBub3Qgc2V0IC0gdGhlID0KbWVzc2FnZSBpcwotICAgICAgICAjIHNvbWV0aGluZyBsaWtl
OiAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNvbnRpbnVlIGNvbm5lY3RpbmcgKHk9CmVzL25v
KS4iCi0gICAgICAgIG91dHB1dCA9M0QgcGV4cGVjdC5ydW4oIGNtZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV2ZW50cz0zRHsgJ1woeWVzXC9ub1wpXC4qJyA6ICd5ZXNcclxuJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuc3N3b3JkOionIDogc2Nw
X2NvbmZpZ3NbICdwYXNzd29yPQpkJyBdICsgJ1xyXG4nLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGV4cGVjdC5USU1FT1VUIDogcHJpbnRfdGlja3MgfSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9M0QxMCApCi0gICAgICAgIGZvciBwYXNz
d29yZF9zdHIgaW4gWyAnUGFzc3dvcmQ6XHJcbicsICdwYXNzd29yZDpcclxuJyBdOgotICAgICAg
ICAgICAgIyBFbGltaW5hdGUgdGhlIG91dHB1dCBjcmVhdGVkIHVzaW5nIHNzaCBmcm9tIHRoZSB0
cmVlCi0gICAgICAgICAgICBpZiBwYXNzd29yZF9zdHIgaW4gb3V0cHV0OgotICAgICAgICAgICAg
ICAgIG91dHB1dCA9M0Qgb3V0cHV0LnJlcGxhY2UoIHBhc3N3b3JkX3N0ciwgJycgKQotICAgICAg
ICByZXR1cm4gdW5pY29kZSggb3V0cHV0LnJlcGxhY2UoICdcclxuJywgJzxici8+JyApICkKLSAg
ICBAd2ViLmpzb24KLSAgICBkZWYgb3Blbl9mb2xkZXIoIHNlbGYsIHRyYW5zLCByZXF1ZXN0X2lk
LCBleHRlcm5hbF9zZXJ2aWNlX2lkLCBrZXkgKToKLSAgICAgICAgIyBBdm9pZCBjYWNoaW5nCi0g
ICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ1ByYWdtYSddID0zRCAnbm8tY2FjaGUnCi0g
ICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ0V4cGlyZXMnXSA9M0QgJzAnCi0gICAgICAg
IHJlcXVlc3QgPTNEIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIHRyYW5zLm1vZGVsLlJlcXVlc3Qg
KS5nZXQoIHRyYT0KbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCByZXF1ZXN0X2lkICkgKQotICAgICAg
ICBleHRlcm5hbF9zZXJ2aWNlID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5tb2Rl
bC5FeHRlcm5hbFM9CmVydmljZSApLmdldCggdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBleHRl
cm5hbF9zZXJ2aWNlX2lkICkgKQotICAgICAgICBmb2xkZXJfcGF0aCA9M0Qga2V5Ci0gICAgICAg
IGZpbGVzX2xpc3QgPTNEIHNlbGYuX19nZXRfZmlsZXMoIHRyYW5zLCByZXF1ZXN0LCBleHRlcm5h
bF9zZXJ2aWNlLD0KIGZvbGRlcl9wYXRoICkKLSAgICAgICAgZm9sZGVyX2NvbnRlbnRzID0zRCBb
XQotICAgICAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZXNfbGlzdDoKLSAgICAgICAgICAgIGlzX2Zv
bGRlciA9M0QgRmFsc2UKLSAgICAgICAgICAgIGlmIGZpbGVuYW1lIGFuZCBmaWxlbmFtZVstMV0g
PTNEPTNEIG9zLnNlcDoKLSAgICAgICAgICAgICAgICBpc19mb2xkZXIgPTNEIFRydWUKLSAgICAg
ICAgICAgIGlmIGZpbGVuYW1lOgotICAgICAgICAgICAgICAgIGZ1bGxfcGF0aCA9M0Qgb3MucGF0
aC5qb2luKCBmb2xkZXJfcGF0aCwgZmlsZW5hbWUgKQotICAgICAgICAgICAgICAgIG5vZGUgPTNE
IHsgInRpdGxlIjogZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgImlzRm9sZGVy
IjogaXNfZm9sZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICJpc0xhenkiOiBpc19mb2xk
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgInRvb2x0aXAiOiBmdWxsX3BhdGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgImtleSI6IGZ1bGxfcGF0aCB9Ci0gICAgICAgICAgICAgICAg
Zm9sZGVyX2NvbnRlbnRzLmFwcGVuZCggbm9kZSApCi0gICAgICAgIHJldHVybiBmb2xkZXJfY29u
dGVudHMKLSAgICBkZWYgX19nZXRfZmlsZXMoIHNlbGYsIHRyYW5zLCByZXF1ZXN0LCBleHRlcm5h
bF9zZXJ2aWNlLCBmb2xkZXJfcGF0aCApOgotICAgICAgICAjIFJldHJpZXZlcyB0aGUgZmlsZW5h
bWVzIHRvIGJlIHRyYW5zZmVycmVkIGZyb20gdGhlIHJlbW90ZSBob3N0LgotICAgICAgICBvayA9
M0QgVHJ1ZQotICAgICAgICBleHRlcm5hbF9zZXJ2aWNlLmxvYWRfZGF0YV90cmFuc2Zlcl9zZXR0
aW5ncyggdHJhbnMgKQotICAgICAgICBzY3BfY29uZmlncyA9M0QgZXh0ZXJuYWxfc2VydmljZS5k
YXRhX3RyYW5zZmVyWyB0cmFucy5tb2RlbC5FeHRlcm49CmFsU2VydmljZS5kYXRhX3RyYW5zZmVy
X3Byb3RvY29sLlNDUCBdCi0gICAgICAgIGlmIG5vdCBzY3BfY29uZmlnc1sgJ2hvc3QnIF0gb3Ig
bm90IHNjcF9jb25maWdzWyAndXNlcl9uYW1lJyBdIG9yID0Kbm90IHNjcF9jb25maWdzWyAncGFz
c3dvcmQnIF06Ci0gICAgICAgICAgICBzdGF0dXMgPTNEICdlcnJvcicKLSAgICAgICAgICAgIG1l
c3NhZ2UgPTNEICJFcnJvciBpbiBleHRlcm5hbCBzZXJ2aWNlIGxvZ2luIGluZm9ybWF0aW9uLiIK
LSAgICAgICAgICAgIG9rID0zRCBGYWxzZQotICAgICAgICBkZWYgcHJpbnRfdGlja3MoIGQgKToK
LSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgY21kICA9M0QgJ3NzaCAlc0AlcyAibHMgLXAgXCcl
c1wnIicgJSAoIHNjcF9jb25maWdzWyAndXNlcl9uYW1lJyBdPQosIHNjcF9jb25maWdzWyAnaG9z
dCcgXSwgZm9sZGVyX3BhdGggKQotICAgICAgICAjIEhhbmRsZSB0aGUgYXV0aGVudGljYXRpb24g
bWVzc2FnZSBpZiBrZXlzIGFyZSBub3Qgc2V0IC0gdGhlIG1lc3M9CmFnZSBpcwotICAgICAgICAj
IHNvbWV0aGluZyBsaWtlOiAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNvbnRpbnVlIGNvbm5l
Y3RpbmcgKHk9CmVzL25vKS4iCi0gICAgICAgIG91dHB1dCA9M0QgcGV4cGVjdC5ydW4oIGNtZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50cz0zRHsgJ1woeWVzXC9ub1wpXC4q
JyA6ICd5ZXNcclxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy5z
c3dvcmQ6KicgOiBzY3BfY29uZmlnc1sgJ3Bhc3N3b3JkPQonIF0gKyAnXHJcbicsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXhwZWN0LlRJTUVPVVQgOiBwcmludF90
aWNrcyB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD0zRDEwICkKLSAg
ICAgICAgaWYgJ05vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnknIGluIG91dHB1dDoKLSAgICAgICAg
ICAgIHN0YXR1cyA9M0QgJ2Vycm9yJwotICAgICAgICAgICAgbWVzc2FnZSA9M0QgIk5vIGZvbGRl
ciBuYW1lZCAoJXMpIGV4aXN0cyBvbiB0aGUgZXh0ZXJuYWwgc2Vydmk9CmNlLiIgJSBmb2xkZXJf
cGF0aAotICAgICAgICAgICAgb2sgPTNEIEZhbHNlCi0gICAgICAgIGlmIG9rOgotICAgICAgICAg
ICAgaWYgJ2Fzc3dvcmQ6JyBpbiBvdXRwdXQ6Ci0gICAgICAgICAgICAgICAgIyBFbGltaW5hdGUg
dGhlIG91dHB1dCBjcmVhdGVkIHVzaW5nIHNzaCBmcm9tIHRoZSB0cmVlCi0gICAgICAgICAgICAg
ICAgb3V0cHV0X2FzX2xpc3QgPTNEIG91dHB1dC5zcGxpdGxpbmVzKClbIDE6IF0KLSAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgb3V0cHV0X2FzX2xpc3QgPTNEIG91dHB1dC5zcGxp
dGxpbmVzKCkKLSAgICAgICAgICAgIHJldHVybiBvdXRwdXRfYXNfbGlzdAotICAgICAgICByZXR1
cm4gdHJhbnMucmVzcG9uc2Uuc2VuZF9yZWRpcmVjdCggd2ViLnVybF9mb3IoIGNvbnRyb2xsZXI9
M0QncmU9CnF1ZXN0c19hZG1pbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPTNEJ3NlbGVjdD0KX2RhdGFzZXRzX3RvX3Ry
YW5zZmVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0X2lkPTNEdHJhPQpucy5zZWN1cml0eS5lbmNvZGVfaWQoIHJlcXVl
c3QuaWQgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleHRlcm5hbF9zZXJ2aWNlPQpfaWQ9M0R0cmFucy5zZWN1cml0eS5lbmNvZGVf
aWQoIGV4dGVybmFsX3NlcnZpY2UuaWQgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9M0RzdGF0dXMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0z
RG1lc3NhZz0KZSApICkKLSAgICBkZWYgX19jcmVhdGVfc2FtcGxlX2RhdGFzZXRzKCBzZWxmLCB0
cmFucywgc2FtcGxlLCBzZWxlY3RlZF9kYXRhc2V0c190PQpvX3RyYW5zZmVyLCBleHRlcm5hbF9z
ZXJ2aWNlICk6Ci0gICAgICAgIGV4dGVybmFsX3NlcnZpY2UubG9hZF9kYXRhX3RyYW5zZmVyX3Nl
dHRpbmdzKCB0cmFucyApCi0gICAgICAgIHNjcF9jb25maWdzID0zRCBleHRlcm5hbF9zZXJ2aWNl
LmRhdGFfdHJhbnNmZXJbIHRyYW5zLm1vZGVsLkV4dGVybj0KYWxTZXJ2aWNlLmRhdGFfdHJhbnNm
ZXJfcHJvdG9jb2wuU0NQIF0KLSAgICAgICAgc2FtcGxlX2RhdGFzZXRfZmlsZV9uYW1lcyA9M0Qg
W10KLSAgICAgICAgaWYgc2VsZWN0ZWRfZGF0YXNldHNfdG9fdHJhbnNmZXI6Ci0gICAgICAgICAg
ICBmb3IgZmlsZXBhdGggaW4gc2VsZWN0ZWRfZGF0YXNldHNfdG9fdHJhbnNmZXI6Ci0gICAgICAg
ICAgICAgICAgIyBGSVhNRTogaGFuZGxlIGZvbGRlciBzZWxlY3Rpb24gLSBpZ25vcmUgZm9sZGVy
cyBmb3Igbm93Ci0gICAgICAgICAgICAgICAgaWYgZmlsZXBhdGhbLTFdICE9M0Qgb3Muc2VwOgot
ICAgICAgICAgICAgICAgICAgICBuYW1lID0zRCBzZWxmLl9fcmVuYW1lX2RhdGFzZXQoIHNhbXBs
ZSwgZmlsZXBhdGguc3BsaXQ9CiggJy8nIClbLTFdLCBzY3BfY29uZmlncyApCi0gICAgICAgICAg
ICAgICAgICAgIHN0YXR1cyA9M0QgdHJhbnMuYXBwLm1vZGVsLlNhbXBsZURhdGFzZXQudHJhbnNm
ZXJfc3RhdD0KdXMuTk9UX1NUQVJURUQKLSAgICAgICAgICAgICAgICAgICAgc2l6ZSA9M0Qgc2Ft
cGxlLmdldF91bnRyYW5zZmVycmVkX2RhdGFzZXRfc2l6ZSggZmlsZXBhPQp0aCwgc2NwX2NvbmZp
Z3MgKQotICAgICAgICAgICAgICAgICAgICBzYW1wbGVfZGF0YXNldCA9M0QgdHJhbnMubW9kZWwu
U2FtcGxlRGF0YXNldCggc2FtcGxlPQo9M0RzYW1wbGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9wYXRoPQo9M0Rm
aWxlcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0dXM9M0RzPQp0YXR1cywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPTNEbmFtPQpl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVycm9yX21zZz0KPTNEJycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT0zRHNpej0KZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleHRlcm5hbF9zPQplcnZpY2U9M0RleHRlcm5hbF9zZXJ2aWNlICkKLSAgICAgICAgICAgICAg
ICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5hZGQoIHNhbXBsZV9kYXRhc2V0ICkKLSAgICAgICAgICAg
ICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCi0gICAgICAgICAgICAgICAgICAgIHNh
bXBsZV9kYXRhc2V0X2ZpbGVfbmFtZXMuYXBwZW5kKCBzdHIoIHNhbXBsZV9kYXRhc2V0Lj0KbmFt
ZSApICkKLSAgICAgICAgcmV0dXJuIHNhbXBsZV9kYXRhc2V0X2ZpbGVfbmFtZXMKICAgICBkZWYg
X19yZW5hbWVfZGF0YXNldCggc2VsZiwgc2FtcGxlLCBmaWxlcGF0aCwgc2NwX2NvbmZpZ3MgKToK
ICAgICAgICAgbmFtZSA9M0QgZmlsZXBhdGguc3BsaXQoICcvJyApWy0xXQogICAgICAgICBvcHRp
b25zID0zRCBzYW1wbGUucmVxdWVzdC50eXBlLnJlbmFtZV9kYXRhc2V0X29wdGlvbnMKQEAgLTU2
MSw5MCArMzgyLDYgQEAKICAgICAgICAgICAgIGZsdXNoX25lZWRlZCA9M0QgVHJ1ZQogICAgICAg
ICBpZiBmbHVzaF9uZWVkZWQ6CiAgICAgICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmZsdXNoKCkK
LSAgICBkZWYgX19jcmVhdGVfZGF0YV90cmFuc2Zlcl9tZXNzYWdlcyggc2VsZiwgdHJhbnMsIHNh
bXBsZSwgc2VsZWN0ZWRfc2FtPQpwbGVfZGF0YXNldHMgKToKLSAgICAgICAgIiIiCi0gICAgICAg
IENyZWF0ZXMgdGhlIHhtbCBtZXNzYWdlcyB0byBzZW5kIHRvIHRoZSByYWJiaXRtcSBzZXJ2ZXIu
IEl0IHJldHVybj0KcyBhIGRpY3Rpb25hcnkgb2YgbWVzc2FnZXMKLSAgICAgICAga2V5ZWQgYnkg
dGhlIGV4dGVybmFsIHNlcnZpY2UgdXNlZCB0byB0cmFuc2ZlciB0aGUgZGF0YXNldHMKLSAgICAg
ICAgIiIiCi0gICAgICAgICMgQ3JlYXRlIHRoZSB4bWwgbWVzc2FnZSBiYXNlZCBvbiB0aGUgZm9s
bG93aW5nIHRlbXBsYXRlCi0gICAgICAgIHhtbCA9M0QgXAotICAgICAgICAgICAgJycnIDxkYXRh
X3RyYW5zZmVyPgotICAgICAgICAgICAgICAgICAgICA8Z2FsYXh5X2hvc3Q+JShHQUxBWFlfSE9T
VClzPC9nYWxheHlfaG9zdD4KLSAgICAgICAgICAgICAgICAgICAgPGFwaV9rZXk+JShBUElfS0VZ
KXM8L2FwaV9rZXk+Ci0gICAgICAgICAgICAgICAgICAgIDxkYXRhX2hvc3Q+JShEQVRBX0hPU1Qp
czwvZGF0YV9ob3N0PgotICAgICAgICAgICAgICAgICAgICA8ZGF0YV91c2VyPiUoREFUQV9VU0VS
KXM8L2RhdGFfdXNlcj4KLSAgICAgICAgICAgICAgICAgICAgPGRhdGFfcGFzc3dvcmQ+JShEQVRB
X1BBU1NXT1JEKXM8L2RhdGFfcGFzc3dvcmQ+Ci0gICAgICAgICAgICAgICAgICAgIDxyZXF1ZXN0
X2lkPiUoUkVRVUVTVF9JRClzPC9yZXF1ZXN0X2lkPgotICAgICAgICAgICAgICAgICAgICA8c2Ft
cGxlX2lkPiUoU0FNUExFX0lEKXM8L3NhbXBsZV9pZD4KLSAgICAgICAgICAgICAgICAgICAgPGxp
YnJhcnlfaWQ+JShMSUJSQVJZX0lEKXM8L2xpYnJhcnlfaWQ+Ci0gICAgICAgICAgICAgICAgICAg
IDxmb2xkZXJfaWQ+JShGT0xERVJfSUQpczwvZm9sZGVyX2lkPgotICAgICAgICAgICAgICAgICAg
ICAlKERBVEFTRVRTKXMKLSAgICAgICAgICAgICAgICA8L2RhdGFfdHJhbnNmZXI+JycnCi0gICAg
ICAgIGRhdGFzZXRfeG1sID0zRCBcCi0gICAgICAgICAgICAnJyc8ZGF0YXNldD4KLSAgICAgICAg
ICAgICAgICAgICA8ZGF0YXNldF9pZD4lKElEKXM8L2RhdGFzZXRfaWQ+Ci0gICAgICAgICAgICAg
ICAgICAgPG5hbWU+JShOQU1FKXM8L25hbWU+Ci0gICAgICAgICAgICAgICAgICAgPGZpbGU+JShG
SUxFKXM8L2ZpbGU+Ci0gICAgICAgICAgICAgICA8L2RhdGFzZXQ+JycnCi0gICAgICAgICMgSGVy
ZSB3ZSBncm91cCBhbGwgdGhlIHNhbXBsZV9kYXRhc2V0cyBieSB0aGUgZXh0ZXJuYWwgc2Vydmlj
ZSB1cz0KZWQgdG8gdHJhbnNmZXIgdGhlbS4KLSAgICAgICAgIyBUaGUgaWRlYSBpcyB0byBidW5k
bGUgdXAgdGhlIHNhbXBsZV9kYXRhc2V0cyB3aGljaCB1c2VzIHRoZSBzYW1lPQogZXh0ZXJuYWwg
c2VydmljZSBhbmQKLSAgICAgICAgIyBzZW5kIGEgc2luZ2xlIEFNUVAgbWVzc2FnZSB0byB0aGUg
Z2FsYXh5X2xpc3RlbmVyCi0gICAgICAgIGRhdGFzZXRfZWxlbWVudHMgPTNEIHt9Ci0gICAgICAg
IGZvciBzYW1wbGVfZGF0YXNldCBpbiBzZWxlY3RlZF9zYW1wbGVfZGF0YXNldHM6Ci0gICAgICAg
ICAgICBleHRlcm5hbF9zZXJ2aWNlID0zRCBzYW1wbGVfZGF0YXNldC5leHRlcm5hbF9zZXJ2aWNl
Ci0gICAgICAgICAgICBpZiBzYW1wbGVfZGF0YXNldC5zdGF0dXMgPTNEPTNEIHRyYW5zLmFwcC5t
b2RlbC5TYW1wbGVEYXRhc2V0Lj0KdHJhbnNmZXJfc3RhdHVzLk5PVF9TVEFSVEVEOgotICAgICAg
ICAgICAgICAgIGlmIG5vdCBkYXRhc2V0X2VsZW1lbnRzLmhhc19rZXkoIGV4dGVybmFsX3NlcnZp
Y2UgKToKLSAgICAgICAgICAgICAgICAgICAgZGF0YXNldF9lbGVtZW50c1sgZXh0ZXJuYWxfc2Vy
dmljZSBdID0zRCAnJwotICAgICAgICAgICAgICAgIGRhdGFzZXRfZWxlbWVudHNbIGV4dGVybmFs
X3NlcnZpY2UgXSArPTNEIGRhdGFzZXRfeG1sICUgZGk9CmN0KCBJRD0zRHN0ciggc2FtcGxlX2Rh
dGFzZXQuaWQgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOQU1FPQo9M0RzYW1wbGVfZGF0YXNldC5uYW1lLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZJTEU9Cj0zRHNhbXBsZV9kYXRhc2V0LmZpbGVfcGF0aCApCi0gICAgICAg
ICAgICAgICAgIyB1cGRhdGUgdGhlIGRhdGFzZXQgdHJhbnNmZXIgc3RhdHVzCi0gICAgICAgICAg
ICAgICAgc2FtcGxlX2RhdGFzZXQuc3RhdHVzID0zRCB0cmFucy5hcHAubW9kZWwuU2FtcGxlRGF0
YXNldC50cj0KYW5zZmVyX3N0YXR1cy5JTl9RVUVVRQotICAgICAgICAgICAgICAgIHRyYW5zLnNh
X3Nlc3Npb24uYWRkKCBzYW1wbGVfZGF0YXNldCApCi0gICAgICAgICAgICAgICAgdHJhbnMuc2Ff
c2Vzc2lvbi5mbHVzaCgpCi0gICAgICAgICMgRmluYWxseSBwcmVwZW5kIHRoZSBleHRlcm5hbCBz
ZXJ2aWNlIGluZm8gdG8gdGhlIHNldHMgb2Ygc2FtcGxlID0KZGF0YXNldHMKLSAgICAgICAgbWVz
c2FnZXMgPTNEIFtdCi0gICAgICAgIGZvciBleHRlcm5hbF9zZXJ2aWNlLCBkYXRhc2V0X2VsZW0g
aW4gZGF0YXNldF9lbGVtZW50cy5pdGVtcygpOgotICAgICAgICAgICAgZXh0ZXJuYWxfc2Vydmlj
ZS5sb2FkX2RhdGFfdHJhbnNmZXJfc2V0dGluZ3MoIHRyYW5zICkKLSAgICAgICAgICAgIHNjcF9j
b25maWdzID0zRCBleHRlcm5hbF9zZXJ2aWNlLmRhdGFfdHJhbnNmZXJbIHRyYW5zLm1vZGVsLkV4
PQp0ZXJuYWxTZXJ2aWNlLmRhdGFfdHJhbnNmZXJfcHJvdG9jb2wuU0NQIF0KLSAgICAgICAgICAg
ICMgQ2hlY2sgZGF0YSB0cmFuc2ZlciBzZXR0aW5ncwotICAgICAgICAgICAgZXJyX21zZyA9M0Qg
c2VsZi5fX3ZhbGlkYXRlX2RhdGFfdHJhbnNmZXJfc2V0dGluZ3MoIHRyYW5zLCBzYW09CnBsZS5y
ZXF1ZXN0LnR5cGUsIHNjcF9jb25maWdzICkKLSAgICAgICAgICAgIGlmIGVycl9tc2c6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHRyYW5zLnJlc3BvbnNlLnNlbmRfcmVkaXJlY3QoIHdlYi51cmxf
Zm9yKCBjb250cm9sbD0KZXI9M0QncmVxdWVzdHNfYWRtaW4nLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPQo9
M0QnbWFuYWdlX2RhdGFzZXRzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZV9pPQpkPTNEdHJhbnMuc2VjdXJp
dHkuZW5jb2RlX2lkKCBzYW1wbGUuaWQgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz0KPTNEJ2Vycm9yJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1lc3NhZ2U9Cj0zRGVycl9tc2cgKSApCi0gICAgICAgICAgICBtZXNzYWdlID0z
RCB4bWwgJSBkaWN0KCBHQUxBWFlfSE9TVD0zRHRyYW5zLnJlcXVlc3QuaG9zdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBUElfS0VZPTNEdHJhbnMudXNlci5hcGlfa2V5c1sw
XS5rZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFUQV9IT1NUPTNEc2Nw
X2NvbmZpZ3NbICdob3N0JyBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERB
VEFfVVNFUj0zRHNjcF9jb25maWdzWyAndXNlcl9uYW1lJyBdLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERBVEFfUEFTU1dPUkQ9M0RzY3BfY29uZmlnc1sgJ3Bhc3N3b3JkJyA9
Cl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVRVUVTVF9JRD0zRHN0cigg
c2FtcGxlLnJlcXVlc3QuaWQgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
QU1QTEVfSUQ9M0RzdHIoIHNhbXBsZS5pZCApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIExJQlJBUllfSUQ9M0RzdHIoIHNhbXBsZS5saWJyYXJ5LmlkICksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRk9MREVSX0lEPTNEc3RyKCBzYW1wbGUuZm9sZGVyLmlk
ICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFUQVNFVFM9M0RkYXRhc2V0
X2VsZW0gKQotICAgICAgICAgICAgbWVzc2FnZXMuYXBwZW5kKCBtZXNzYWdlLnJlcGxhY2UoICdc
bicsICcnICkucmVwbGFjZSggJ1xyJywgJyc9CiApICkKLSAgICAgICAgcmV0dXJuIG1lc3NhZ2Vz
Ci0gICAgZGVmIF9fdmFsaWRhdGVfZGF0YV90cmFuc2Zlcl9zZXR0aW5ncyggc2VsZiwgdHJhbnMs
IHJlcXVlc3RfdHlwZSwgc2NwXz0KY29uZmlncyApOgotICAgICAgICBlcnJfbXNnID0zRCAnJwot
ICAgICAgICAjIGNoZWNrIHRoZSBleHRlcm5hbCBzZXJ2aWNlIGxvZ2luIGluZm8KLSAgICAgICAg
aWYgbm90IHNjcF9jb25maWdzLmdldCggJ2hvc3QnLCAnJyApIFwKLSAgICAgICAgICAgIG9yIG5v
dCBzY3BfY29uZmlncy5nZXQoICd1c2VyX25hbWUnLCAnJyApIFwKLSAgICAgICAgICAgIG9yIG5v
dCBzY3BfY29uZmlncy5nZXQoICdwYXNzd29yZCcsICcnICk6Ci0gICAgICAgICAgICBlcnJfbXNn
ICs9M0QgIkVycm9yIGluIGV4dGVybmFsIHNlcnZpY2UgbG9naW4gaW5mb3JtYXRpb24uICIKLSAg
ICAgICAgaWYgbm90IHRyYW5zLnVzZXIuYXBpX2tleXM6Ci0gICAgICAgICAgICBlcnJfbXNnICs9
M0QgIlNldCB5b3VyIEFQSSBLZXkgaW4geW91ciBVc2VyIFByZWZlcmVuY2VzIHRvIHRyYT0KbnNm
ZXIgZGF0YXNldHMuICIKLSAgICAgICAgIyBDaGVjayBpZiBsaWJyYXJ5X2ltcG9ydF9kaXIgaXMg
c2V0Ci0gICAgICAgIGlmIG5vdCB0cmFucy5hcHAuY29uZmlnLmxpYnJhcnlfaW1wb3J0X2RpcjoK
LSAgICAgICAgICAgIGVycl9tc2cgPTNEICInVGhlIGxpYnJhcnlfaW1wb3J0X2Rpcicgc2V0dGlu
ZyBpcyBub3QgY29ycmVjdGx5PQogc2V0IGluIHRoZSBHYWxheHkgY29uZmlnIGZpbGUuICIKLSAg
ICAgICAgIyBDaGVjayB0aGUgUmFiYml0TVEgc2VydmVyIHNldHRpbmdzIGluIHRoZSBjb25maWcg
ZmlsZQotICAgICAgICBmb3IgaywgdiBpbiB0cmFucy5hcHAuY29uZmlnLmFtcXAuaXRlbXMoKToK
LSAgICAgICAgICAgIGlmIG5vdCB2OgotICAgICAgICAgICAgICAgIGVycl9tc2cgKz0zRCAnU2V0
IFJhYmJpdE1RIHNlcnZlciBzZXR0aW5ncyBpbiB0aGUgImdhbGF4eV89CmFtcXAiIHNlY3Rpb24g
b2YgdGhlIEdhbGF4eSBjb25maWcgZmlsZSwgc3BlY2lmaWNhbGx5ICIlcyIgaXMgbm90IHNldC4n
ICUgawotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIHJldHVybiBlcnJfbXNnCiAgICAg
QHdlYi5leHBvc2UKICAgICBAd2ViLnJlcXVpcmVfYWRtaW4KICAgICBkZWYgaW5pdGlhdGVfZGF0
YV90cmFuc2Zlciggc2VsZiwgdHJhbnMsIHNhbXBsZV9pZCwgc2FtcGxlX2RhdGFzZXRzPTNEPQpb
XSwgc2FtcGxlX2RhdGFzZXRfaWQ9M0QnJyApOgpAQCAtNjg2LDM1ICs0MjMsOCBAQAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9CiAgICAgICAgICAgICAgICAgIGV4dGVybmFsX3NlcnZpY2U9M0RleHRlcm5h
bF9zZXJ2aWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9CiAgICAgICAgICAgICAgICAgIGV4dGVybmFs
X3NlcnZpY2VfdHlwZT0zRGV4dGVybmFsX3NlcnZpY2VfdHlwZSApCiAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAjIFRPRE86IFVzaW5nIFJhYmJpdE1xIGZvciBub3csIGJ1dCBlbGltaW5hdGUg
dGhpcyBlbnRpcmUgYmxvYz0KayB3aGVuIHdlIHJlcGxhY2UgUmFiYml0TXEgd2l0aCBHYWxheHkn
cwotICAgICAgICAgICAgIyBvd24gbWVzc2FnaW5nIGVuZ2luZS4gIFdlJ3JlIGhvbGRpbmcgb2Zm
IG9uIHVzaW5nIHRoZSBuZXcgd2E9CnkgdG8gdHJhbnNmZXIgZmlsZXMgbWFudWFsbHkgdW50aWwg
d2UKLSAgICAgICAgICAgICMgaW1wbGVtZW50IGEgR2FsYXh5LXByb3ByaWV0YXJ5IG1lc3NhZ2lu
ZyBlbmdpbmUgYmVjYXVzZSB0aGUgPQpkZWZlcnJlZCBqb2IgcGx1Z2lucyBjdXJyZW50bHkgcGVy
Zm9ybQotICAgICAgICAgICAgIyBjb25zdGFudCBkYiBoaXRzIHRvIGNoZWNrIGZvciBkZWZlcnJl
ZCBqb2JzIHRoYXQgYXJlIG5vdCBpbiA9CmEgZmluaXNoZWQgc3RhdGUuCi0gICAgICAgICAgICAj
IENyZWF0ZSB0aGUgbWVzc2FnZQotICAgICAgICAgICAgbWVzc2FnZXMgPTNEIHNlbGYuX19jcmVh
dGVfZGF0YV90cmFuc2Zlcl9tZXNzYWdlcyggdHJhbnMsIHNhbXA9CmxlLCBzYW1wbGVfZGF0YXNl
dHMgKQotICAgICAgICAgICAgIyBTZW5kIHRoZSBtZXNzYWdlcwotICAgICAgICAgICAgZm9yIHJt
cV9tc2cgaW4gbWVzc2FnZXM6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAg
ICAgICBjb25uID0zRCBhbXFwLkNvbm5lY3Rpb24oIGhvc3Q9M0R0cmFucy5hcHAuY29uZmlnLmFt
cXA9ClsgJ2hvc3QnIF0gKyAiOiIgKyB0cmFucy5hcHAuY29uZmlnLmFtcXBbICdwb3J0JyBdLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyaWQ9M0R0cmFu
cy5hcHAuY29uZmlnLmFtcXA9ClsgJ3VzZXJpZCcgXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ9M0R0cmFucy5hcHAuY29uZmlnLmFtPQpxcFsg
J3Bhc3N3b3JkJyBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2aXJ0dWFsX2hvc3Q9M0R0cmFucy5hcHAuY29uZmk9CmcuYW1xcFsgJ3ZpcnR1YWxfaG9zdCcg
XSkKLSAgICAgICAgICAgICAgICAgICAgY2hhbiA9M0QgY29ubi5jaGFubmVsKCkKLSAgICAgICAg
ICAgICAgICAgICAgbXNnID0zRCBhbXFwLk1lc3NhZ2UoIHJtcV9tc2csCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudF90eXBlPTNEJ3RleHQvcGxhaW4nLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uX2hlYWRl
cnM9M0R7ICdtc2dfdHlwZSc9CjogJ2RhdGFfdHJhbnNmZXInIH0gKQotICAgICAgICAgICAgICAg
ICAgICBtc2cucHJvcGVydGllc1sgImRlbGl2ZXJ5X21vZGUiIF0gPTNEIDIKLSAgICAgICAgICAg
ICAgICAgICAgY2hhbi5iYXNpY19wdWJsaXNoKCBtc2csCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXhjaGFuZ2U9M0R0cmFucy5hcHAuY29uZmlnLmFtcXBbID0KJ2V4
Y2hhbmdlJyBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRp
bmdfa2V5PTNEdHJhbnMuYXBwLmNvbmZpZy5hbXE9CnBbICdyb3V0aW5nX2tleScgXSApCi0gICAg
ICAgICAgICAgICAgICAgIGNoYW4uY2xvc2UoKQotICAgICAgICAgICAgICAgICAgICBjb25uLmNs
b3NlKCkKLSAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAg
ICAgICAgICBtZXNzYWdlID0zRCAiRXJyb3Igc2VuZGluZyB0aGUgZGF0YSB0cmFuc2ZlciBtZXNz
YWdlIHQ9Cm8gdGhlIEdhbGF4eSBBTVFQIG1lc3NhZ2UgcXVldWU6PGJyLz4lcyIgJSBzdHIoZSkK
LSAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0zRCAiZXJyb3IiCi0gICAgICAgICAgICBpZiBu
b3QgbWVzc2FnZToKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0zRCAiJWkgZGF0YXNldHMgaGF2
ZSBiZWVuIHF1ZXVlZCBmb3IgdHJhbnNmZXIgZnJvPQptIHRoZSBleHRlcm5hbCBzZXJ2aWNlLiIg
JSBsZW4oIHNhbXBsZV9kYXRhc2V0cyApCi0gICAgICAgICAgICAgICAgc3RhdHVzID0zRCAiZG9u
ZSIKKyAgICAgICAgICAgIG1lc3NhZ2UgPTNEICJNZXNzYWdlIHF1ZXVlIHRyYW5zZmVyIGlzIG5v
IGxvbmdlciBzdXBwb3J0ZWQsIHBsPQplYXNlIHNldCBlbmFibGVfYmV0YV9qb2JfbWFuYWdlcnMg
PTNEIFRydWUgaW4gZ2FsYXh5LmluaSIKKyAgICAgICAgICAgIHN0YXR1cyA9M0QgImVycm9yIgog
ICAgICAgICByZXR1cm4gdHJhbnMucmVzcG9uc2Uuc2VuZF9yZWRpcmVjdCggd2ViLnVybF9mb3Io
IGNvbnRyb2xsZXI9M0QncmU9CnF1ZXN0c19hZG1pbicsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPTNEJ21hbmFnZT0KX2Rh
dGFzZXRzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzYW1wbGVfaWQ9M0R0cmFuPQpzLnNlY3VyaXR5LmVuY29kZV9pZCggc2FtcGxl
LmlkICksCgpkaWZmIC1yIDFmMzQwNzJkNDczZjg3MWI5MGJmMWIyYmNjNmE3MmMzMjI0MjAwMWQg
LXIgN2RkYjQxZGNiMmIyZTRkM2E2ZjgzNGQ9CjNkZDExNDI2ZjI2ZmI3OTAyIGxpYi9nYWxheHkv
d2ViYXBwcy90b29sX3NoZWQvY29udHJvbGxlcnMvcmVwb3NpdG9yeS5weQotLS0gYS9saWIvZ2Fs
YXh5L3dlYmFwcHMvdG9vbF9zaGVkL2NvbnRyb2xsZXJzL3JlcG9zaXRvcnkucHkKKysrIGIvbGli
L2dhbGF4eS93ZWJhcHBzL3Rvb2xfc2hlZC9jb250cm9sbGVycy9yZXBvc2l0b3J5LnB5CkBAIC0x
NjM1LDExICsxNjM1LDExIEBACiAgICAgICAgIHJldHVybiAnJwo9MjAKICAgICBAd2ViLmpzb24K
LSAgICBkZWYgZ2V0X2ZpbGVfY29udGVudHMoIHNlbGYsIHRyYW5zLCBmaWxlX3BhdGggKToKKyAg
ICBkZWYgZ2V0X2ZpbGVfY29udGVudHMoIHNlbGYsIHRyYW5zLCBmaWxlX3BhdGgsIHJlcG9zaXRv
cnlfaWQgKToKICAgICAgICAgIyBBdm9pZCBjYWNoaW5nCiAgICAgICAgIHRyYW5zLnJlc3BvbnNl
LmhlYWRlcnNbJ1ByYWdtYSddID0zRCAnbm8tY2FjaGUnCiAgICAgICAgIHRyYW5zLnJlc3BvbnNl
LmhlYWRlcnNbJ0V4cGlyZXMnXSA9M0QgJzAnCi0gICAgICAgIHJldHVybiBzdWMuZ2V0X3JlcG9z
aXRvcnlfZmlsZV9jb250ZW50cyggZmlsZV9wYXRoICkKKyAgICAgICAgcmV0dXJuIHN1Yy5nZXRf
cmVwb3NpdG9yeV9maWxlX2NvbnRlbnRzKCB0cmFucy5hcHAsIGZpbGVfcGF0aCwgcmVwPQpvc2l0
b3J5X2lkICkKPTIwCiAgICAgQHdlYi5leHBvc2UKICAgICBkZWYgZ2V0X2Z1bmN0aW9uYWxfdGVz
dF9yc3MoIHNlbGYsIHRyYW5zLCAqKmt3ZCApOgpAQCAtMjYxOSwxMSArMjYxOSwxMSBAQAogICAg
ICAgICByZXR1cm4gJycKPTIwCiAgICAgQHdlYi5qc29uCi0gICAgZGVmIG9wZW5fZm9sZGVyKCBz
ZWxmLCB0cmFucywgZm9sZGVyX3BhdGggKToKKyAgICBkZWYgb3Blbl9mb2xkZXIoIHNlbGYsIHRy
YW5zLCBmb2xkZXJfcGF0aCwgcmVwb3NpdG9yeV9pZCApOgogICAgICAgICAjIEF2b2lkIGNhY2hp
bmcKICAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVhZGVyc1snUHJhZ21hJ10gPTNEICduby1jYWNo
ZScKICAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVhZGVyc1snRXhwaXJlcyddID0zRCAnMCcKLSAg
ICAgICAgcmV0dXJuIHN1Yy5vcGVuX3JlcG9zaXRvcnlfZmlsZXNfZm9sZGVyKCBmb2xkZXJfcGF0
aCApCisgICAgICAgIHJldHVybiBzdWMub3Blbl9yZXBvc2l0b3J5X2ZpbGVzX2ZvbGRlciggdHJh
bnMuYXBwLCBmb2xkZXJfcGF0aCwgcj0KZXBvc2l0b3J5X2lkICkKPTIwCiAgICAgQHdlYi5leHBv
c2UKICAgICBkZWYgcHJldmlld190b29sc19pbl9jaGFuZ2VzZXQoIHNlbGYsIHRyYW5zLCByZXBv
c2l0b3J5X2lkLCAqKmt3ZCApOgoKZGlmZiAtciAxZjM0MDcyZDQ3M2Y4NzFiOTBiZjFiMmJjYzZh
NzJjMzIyNDIwMDFkIC1yIDdkZGI0MWRjYjJiMmU0ZDNhNmY4MzRkPQozZGQxMTQyNmYyNmZiNzkw
MiBsaWIvZ2FsYXh5L3dlYmFwcHMvdG9vbF9zaGVkL2ZyYW1ld29yay9taWRkbGV3YXJlL2hnLnB5
Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy90b29sX3NoZWQvZnJhbWV3b3JrL21pZGRsZXdhcmUv
aGcucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL3Rvb2xfc2hlZC9mcmFtZXdvcmsvbWlkZGxl
d2FyZS9oZy5weQpAQCAtOSw3ICs5LDcgQEAKIGZyb20gcGFzdGUuaHR0cGhlYWRlcnMgaW1wb3J0
IEFVVEhfVFlQRQogZnJvbSBwYXN0ZS5odHRwaGVhZGVycyBpbXBvcnQgUkVNT1RFX1VTRVIKPTIw
Ci1mcm9tIGdhbGF4eS51dGlsIGltcG9ydCBhc2Jvb2wKK2Zyb20gZ2FsYXh5LnV0aWwgaW1wb3J0
IGFzYm9vbCwgc2FmZV9yZWxwYXRoCiBmcm9tIGdhbGF4eS51dGlsLmhhc2hfdXRpbCBpbXBvcnQg
bmV3X3NlY3VyZV9oYXNoCiBmcm9tIHRvb2xfc2hlZC51dGlsIGltcG9ydCBoZ191dGlsCiBpbXBv
cnQgdG9vbF9zaGVkLnJlcG9zaXRvcnlfdHlwZXMudXRpbCBhcyBydF91dGlsCkBAIC0xMTMsNyAr
MTEzLDExIEBACiAgICAgICAgICAgICAgICAgICAgIGZoLndyaXRlKCBjaHVuayApCiAgICAgICAg
ICAgICAgICAgZmguY2xvc2UoKQogICAgICAgICAgICAgICAgIGZoID0zRCBvcGVuKCB0bXBfZmls
ZW5hbWUsICdyYicgKQotICAgICAgICAgICAgICAgIGNoYW5nZXNldF9ncm91cHMgPTNEIGpzb24u
bG9hZHMoIGhnX3V0aWwuYnVuZGxlX3RvX2pzb24oIGY9CmggKSApCisgICAgICAgICAgICAgICAg
dHJ5OgorICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzZXRfZ3JvdXBzID0zRCBqc29uLmxvYWRz
KCBoZ191dGlsLmJ1bmRsZV90b19qc289Cm4oIGZoICkgKQorICAgICAgICAgICAgICAgIGV4Y2Vw
dCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgbXNnID0zRCAnWW91ciB2ZXJz
aW9uIG9mIE1lcmN1cmlhbCBpcyBub3Qgc3VwcG9ydGVkLiBQPQpsZWFzZSB1c2UgYSB2ZXJzaW9u
IDwgMy41JworICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fX2Rpc3BsYXlfZXhjZXB0
aW9uX3JlbW90ZWx5KCBzdGFydF9yZXNwb249CnNlLCBtc2cgKQogICAgICAgICAgICAgICAgIGZo
LmNsb3NlKCkKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIG9zLnVu
bGluayggdG1wX2ZpbGVuYW1lICkKQEAgLTEyMiw2ICsxMjYsMTkgQEAKICAgICAgICAgICAgICAg
ICBpZiBjaGFuZ2VzZXRfZ3JvdXBzOgogICAgICAgICAgICAgICAgICAgICAjIENoZWNrIHRoZSBy
ZXBvc2l0b3J5IHR5cGUgdG8gbWFrZSBzdXJlIGluYXBwcm9wcmlhdGU9CiBmaWxlcyBhcmUgbm90
IGJlaW5nIHB1c2hlZC4KICAgICAgICAgICAgICAgICAgICAgaWYgJ1BBVEhfSU5GTycgaW4gZW52
aXJvbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgRW5zdXJlIHRoZXJlIGFyZSBubyBzeW1s
aW5rcyB3aXRoIHRhcmdldHMgb3V0c2lkPQplIHRoZSByZXBvCisgICAgICAgICAgICAgICAgICAg
ICAgICBmb3IgZW50cnkgaW4gY2hhbmdlc2V0X2dyb3VwczoKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiBsZW4oIGVudHJ5ICkgPTNEPTNEIDI6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZpbGVuYW1lLCBjaGFuZ2VfbGlzdCA9M0QgZW50cnkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY2hhbmdlX2xpc3QsIGxpc3QpOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlX2xpc3QgPTNEIFtjaGFu
Z2VfbGlzdF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNoYW5nZSBpbiBj
aGFuZ2VfbGlzdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwYXRj
aCBpbiBjaGFuZ2VbJ2RhdGEnXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0YXJnZXQgPTNEIHBhdGNoWydibG9jayddLnN0cmlwKCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoICggcGF0Y2hbJ2VuZCddIC0gcGF0Y2hbJ3N0YXJ0
PQonXSA9M0Q9M0QgMCApIGFuZCBub3Qgc2FmZV9yZWxwYXRoKCB0YXJnZXQgKSApOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPTNEICJDaGFuZ2VzIGlu
Y2x1ZGUgYSBzeW09Cmxpbmsgb3V0c2lkZSBvZiB0aGUgcmVwb3NpdG9yeTogJXMgLT4gJXMiICUg
KCBmaWxlbmFtZSwgdGFyZ2V0ICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbG9nLndhcm5pbmcoIG1zZyApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9fZGlzcGxheV9leGNlcHRpbz0Kbl9yZW1vdGVs
eSggc3RhcnRfcmVzcG9uc2UsIG1zZyApCiAgICAgICAgICAgICAgICAgICAgICAgICAjIEluc3Rh
bnRpYXRlIGEgZGF0YWJhc2UgY29ubmVjdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgZW5n
aW5lID0zRCBzcWxhbGNoZW15LmNyZWF0ZV9lbmdpbmUoIHNlbGYuZGJfdXJsICkKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24gPTNEIGVuZ2luZS5jb25uZWN0KCkKCmRpZmYgLXIg
MWYzNDA3MmQ0NzNmODcxYjkwYmYxYjJiY2M2YTcyYzMyMjQyMDAxZCAtciA3ZGRiNDFkY2IyYjJl
NGQzYTZmODM0ZD0KM2RkMTE0MjZmMjZmYjc5MDIgbGliL2dhbGF4eS93b3JrZmxvdy9yZW5kZXIu
cHkKLS0tIGEvbGliL2dhbGF4eS93b3JrZmxvdy9yZW5kZXIucHkKKysrIGIvbGliL2dhbGF4eS93
b3JrZmxvdy9yZW5kZXIucHkKQEAgLTM0LDggKzM0LDggQEAKICAgICAgICAgY2FudmFzLmFwcGVu
ZCggc2VsZi5ib3hlcyApCiAgICAgICAgIGNhbnZhcy5hcHBlbmQoIHNlbGYudGV4dCApCiAgICAg
ICAgIHdpZHRoLCBoZWlnaHQgPTNEICggbWF4X3ggKyBtYXhfd2lkdGggKyA1MCApLCBtYXhfeSAr
IDMwMAotICAgICAgICBjYW52YXNbICd3aWR0aCcgXSA9M0QgIiVzIHB4IiAlIHdpZHRoCi0gICAg
ICAgIGNhbnZhc1sgJ2hlaWdodCcgXSA9M0QgIiVzIHB4IiAlIGhlaWdodAorICAgICAgICBjYW52
YXNbICd3aWR0aCcgXSA9M0QgIiVzcHgiICUgd2lkdGgKKyAgICAgICAgY2FudmFzWyAnaGVpZ2h0
JyBdID0zRCAiJXNweCIgJSBoZWlnaHQKICAgICAgICAgY2FudmFzWyAndmlld0JveCcgXSA9M0Qg
IjAgMCAlcyAlcyIgJSAoIHdpZHRoLCBoZWlnaHQgKQo9MjAKICAgICBkZWYgYWRkX2JveGVzKCBz
ZWxmLCBzdGVwX2RpY3QsIHdpZHRoLCBuYW1lX2ZpbGwgKToKQEAgLTEyMCw3ICsxMjAsNyBAQAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRqdXN0ZWRbIDEg
XSAtIG1hcmdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluX2Nvb3Jkc1sgMCBdIC0gMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbl9jb29yZHNbIDEgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFycm93X2VuZD0zRCJ0cnVlIiApLlNWRygpICkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycm93X2VuZD0zRCJjb25uXyVzIiAl
IChsZW4oPQpzZWxmLmNvbm5lY3RvcnMua2V5cygpKSArIDEpICkuU1ZHKCkgKQo9MjAKICAgICBk
ZWYgYWRkX3N0ZXBzKCBzZWxmLCBoaWdobGlnaHRfZXJyb3JzPTNERmFsc2UgKToKICAgICAgICAg
IyBPbmx5IGhpZ2hsaWdodCBtaXNzaW5nIHRvb2xzIGlmIGRpc3BsYXlpbmcgaW4gdGhlIHRvb2wg
c2hlZC4KCmRpZmYgLXIgMWYzNDA3MmQ0NzNmODcxYjkwYmYxYjJiY2M2YTcyYzMyMjQyMDAxZCAt
ciA3ZGRiNDFkY2IyYjJlNGQzYTZmODM0ZD0KM2RkMTE0MjZmMjZmYjc5MDIgbGliL3Rvb2xfc2hl
ZC9jYXBzdWxlL2NhcHN1bGVfbWFuYWdlci5weQotLS0gYS9saWIvdG9vbF9zaGVkL2NhcHN1bGUv
Y2Fwc3VsZV9tYW5hZ2VyLnB5CisrKyBiL2xpYi90b29sX3NoZWQvY2Fwc3VsZS9jYXBzdWxlX21h
bmFnZXIucHkKQEAgLTEyLDYgKzEyLDcgQEAKIGZyb20gZ2FsYXh5Lm1vZGVsLm9ybSBpbXBvcnQg
YW5kXwogZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgYXNib29sCiBmcm9tIGdhbGF4eS51dGlsIGlt
cG9ydCBDSFVOS19TSVpFCitmcm9tIGdhbGF4eS51dGlsIGltcG9ydCBzYWZlX3JlbHBhdGgKIGZy
b20gZ2FsYXh5LnV0aWwub2RpY3QgaW1wb3J0IG9kaWN0Cj0yMAogZnJvbSB0b29sX3NoZWQuZGVw
ZW5kZW5jaWVzLnJlcG9zaXRvcnkucmVsYXRpb25fYnVpbGRlciBpbXBvcnQgUmVsYXRpb25CdWk9
CmxkZXIKQEAgLTcyNywyOSArNzI4LDE2IEBACiAgICAgICAgIHJlcG8gPTNEIGhnX3V0aWwuZ2V0
X3JlcG9fZm9yX3JlcG9zaXRvcnkoIHNlbGYuYXBwLCByZXBvc2l0b3J5PTNETj0Kb25lLCByZXBv
X3BhdGg9M0RyZXBvX2RpciwgY3JlYXRlPTNERmFsc2UgKQogICAgICAgICB1bmRlc2lyYWJsZV9k
aXJzX3JlbW92ZWQgPTNEIDAKICAgICAgICAgdW5kZXNpcmFibGVfZmlsZXNfcmVtb3ZlZCA9M0Qg
MAotICAgICAgICBvaywgZXJyb3JfbWVzc2FnZSA9M0QgY29tbWl0X3V0aWwuY2hlY2tfYXJjaGl2
ZSggcmVwb3NpdG9yeSwgYXJjaGk9CnZlICkKLSAgICAgICAgaWYgb2s6CisgICAgICAgIGNoZWNr
X3Jlc3VsdHMgPTNEIGNvbW1pdF91dGlsLmNoZWNrX2FyY2hpdmUoIHJlcG9zaXRvcnksIGFyY2hp
dmUgKQorICAgICAgICAjIFdlIGZpbHRlciBvdXQgdW5kZXNpcmFibGUgZmlsZXMgYnV0IGZhaWwg
b24gdW5kZXNyaWFibGUgZGlycy4gTm90CisgICAgICAgICMgc3VyZSB3aHksIGp1c3QgdHJ5aW5n
IHRvIG1haW50YWluIHRoZSBzYW1lIGJlaGF2aW9yIGFzIGJlZm9yZS4gLT0KbmF0ZQorICAgICAg
ICBpZiBub3QgY2hlY2tfcmVzdWx0cy5pbnZhbGlkIGFuZCBub3QgY2hlY2tfcmVzdWx0cy51bmRl
c2lyYWJsZV9kaXI9CnM6CiAgICAgICAgICAgICBmdWxsX3BhdGggPTNEIG9zLnBhdGguYWJzcGF0
aCggcmVwb19kaXIgKQotICAgICAgICAgICAgZmlsZW5hbWVzX2luX2FyY2hpdmUgPTNEIFtdCi0g
ICAgICAgICAgICBmb3IgdGFyaW5mb19vYmogaW4gYXJjaGl2ZS5nZXRtZW1iZXJzKCk6Ci0gICAg
ICAgICAgICAgICAgIyBDaGVjayBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgaW4gdGhlIGFyY2hpdmUu
Ci0gICAgICAgICAgICAgICAgb2sgPTNEIG9zLnBhdGguYmFzZW5hbWUoIHRhcmluZm9fb2JqLm5h
bWUgKSBub3QgaW4gY29tbWl0Xz0KdXRpbC5VTkRFU0lSQUJMRV9GSUxFUwotICAgICAgICAgICAg
ICAgIGlmIG9rOgotICAgICAgICAgICAgICAgICAgICBmb3IgZmlsZV9wYXRoX2l0ZW0gaW4gdGFy
aW5mb19vYmoubmFtZS5zcGxpdCggJy8nICk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBm
aWxlX3BhdGhfaXRlbSBpbiBjb21taXRfdXRpbC5VTkRFU0lSQUJMRV9ESVJTOgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuZGVzaXJhYmxlX2RpcnNfcmVtb3ZlZCArPTNEIDEKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9tZXNzYWdlID0zRCAnSW1wb3J0IGZhaWxlZDog
aW52YWxpZCBmaWxlPQogcGF0aCA8Yj4lczwvYj4gaW4gYXJjaGl2ZSA8Yj4lczwvYj4nICUgXAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHN0ciggZmlsZV9wYXRoX2l0ZW0gKSwg
c3RyKCBhcmNoaXZlX2ZpbGU9Cl9uYW1lICkgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdHNfZGljdFsgJ29rJyBdID0zRCBGYWxzZQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdHNfZGljdFsgJ2Vycm9yX21lc3NhZ2UnIF0gKz0zRCBlcnJvcl9tZXM9CnNhZ2UK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0c19kaWN0Ci0gICAgICAg
ICAgICAgICAgICAgIGZpbGVuYW1lc19pbl9hcmNoaXZlLmFwcGVuZCggdGFyaW5mb19vYmoubmFt
ZSApCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdW5kZXNpcmFi
bGVfZmlsZXNfcmVtb3ZlZCArPTNEIDEKICAgICAgICAgICAgICMgRXh0cmFjdCB0aGUgdXBsb2Fk
ZWQgYXJjaGl2ZSB0byB0aGUgcmVwb3NpdG9yeSByb290LgotICAgICAgICAgICAgYXJjaGl2ZS5l
eHRyYWN0YWxsKCBwYXRoPTNEZnVsbF9wYXRoICkKKyAgICAgICAgICAgIGFyY2hpdmUuZXh0cmFj
dGFsbCggcGF0aD0zRGZ1bGxfcGF0aCwgbWVtYmVycz0zRGNoZWNrX3Jlc3VsdHMuPQp2YWxpZCAp
CiAgICAgICAgICAgICBhcmNoaXZlLmNsb3NlKCkKLSAgICAgICAgICAgIGZvciBmaWxlbmFtZSBp
biBmaWxlbmFtZXNfaW5fYXJjaGl2ZToKKyAgICAgICAgICAgIGZvciB0YXJfbWVtYmVyIGluIGNo
ZWNrX3Jlc3VsdHMudmFsaWQ6CisgICAgICAgICAgICAgICAgZmlsZW5hbWUgPTNEIHRhcl9tZW1i
ZXIubmFtZQogICAgICAgICAgICAgICAgIHVwbG9hZGVkX2ZpbGVfbmFtZSA9M0Qgb3MucGF0aC5q
b2luKCBmdWxsX3BhdGgsIGZpbGVuYW1lICkKICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLnNw
bGl0KCB1cGxvYWRlZF9maWxlX25hbWUgKVsgLTEgXSA9M0Q9M0QgcnRfdXRpPQpsLlJFUE9TSVRP
UllfREVQRU5ERU5DWV9ERUZJTklUSU9OX0ZJTEVOQU1FOgogICAgICAgICAgICAgICAgICAgICAj
IEluc3BlY3QgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIHRvIHNlZSBpZiB0b29sc2hlZCA9Cm9y
IGNoYW5nZXNldF9yZXZpc2lvbiBhdHRyaWJ1dGVzCkBAIC03NzYsNiArNzY0LDkgQEAKICAgICAg
ICAgICAgIG5ld19yZXBvX2FsZXJ0ID0zRCBUcnVlCiAgICAgICAgICAgICAjIFNpbmNlIHRoZSBy
ZXBvc2l0b3J5IGlzIG5ldywgdGhlIGZvbGxvd2luZyBtdXN0IGJlIEZhbHNlLgogICAgICAgICAg
ICAgcmVtb3ZlX3JlcG9fZmlsZXNfbm90X2luX3RhciA9M0QgRmFsc2UKKyAgICAgICAgICAgIGZp
bGVuYW1lc19pbl9hcmNoaXZlID0zRCBbIG1lbWJlci5uYW1lIGZvciBtZW1iZXIgaW4gY2hlY2tf
cmVzPQp1bHRzLnZhbGlkIF0KKyAgICAgICAgICAgIHVuZGVzaXJhYmxlX2ZpbGVzX3JlbW92ZWQg
PTNEIGxlbiggY2hlY2tfcmVzdWx0cy51bmRlc2lyYWJsZV9mPQppbGVzICkKKyAgICAgICAgICAg
IHVuZGVzaXJhYmxlX2RpcnNfcmVtb3ZlZCA9M0QgMAogICAgICAgICAgICAgb2ssIGVycm9yX21l
c3NhZ2UsIGZpbGVzX3RvX3JlbW92ZSwgY29udGVudF9hbGVydF9zdHIsIHVuZGVzaXI9CmFibGVf
ZGlyc19yZW1vdmVkLCB1bmRlc2lyYWJsZV9maWxlc19yZW1vdmVkID0zRCBcCiAgICAgICAgICAg
ICAgICAgY29tbWl0X3V0aWwuaGFuZGxlX2RpcmVjdG9yeV9jaGFuZ2VzKCBzZWxmLmFwcCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
aG9zdCwKQEAgLTgwNiw3ICs3OTcsMTMgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGFy
Y2hpdmUuY2xvc2UoKQogICAgICAgICAgICAgcmVzdWx0c19kaWN0WyAnb2snIF0gPTNEIEZhbHNl
Ci0gICAgICAgICAgICByZXN1bHRzX2RpY3RbICdlcnJvcl9tZXNzYWdlJyBdICs9M0QgZXJyb3Jf
bWVzc2FnZQorICAgICAgICAgICAgcmVzdWx0c19kaWN0WyAnZXJyb3JfbWVzc2FnZScgXSArPTNE
ICdDYXBzdWxlIGVycm9ycyB3ZXJlIGZvdW49CmQ6ICcKKyAgICAgICAgICAgIGlmIGNoZWNrX3Jl
c3VsdHMuaW52YWxpZDoKKyAgICAgICAgICAgICAgICByZXN1bHRzX2RpY3RbICdlcnJvcl9tZXNz
YWdlJyBdICs9M0QgJyVzIEludmFsaWQgZmlsZXMgd2VyPQplOiAlcy4nICUgKAorICAgICAgICAg
ICAgICAgICAgICAnICcuam9pbiggY2hlY2tfcmVzdWx0cy5lcnJvcnMgKSwgJywgJy5qb2luKCBj
aGVja19yZXM9CnVsdHMuaW52YWxpZCApICkKKyAgICAgICAgICAgIGlmIGNoZWNrX3Jlc3VsdHMu
dW5kZXNpcmFibGVfZGlyczoKKyAgICAgICAgICAgICAgICByZXN1bHRzX2RpY3RbICdlcnJvcl9t
ZXNzYWdlJyBdICs9M0QgJyBVbmRlc2lyYWJsZSBkaXJlY3RvPQpyaWVzIHdlcmU6ICVzLicgJSAo
CisgICAgICAgICAgICAgICAgICAgICcsICcuam9pbiggY2hlY2tfcmVzdWx0cy51bmRlc2lyYWJs
ZV9kaXJzICkgKQogICAgICAgICByZXR1cm4gcmVzdWx0c19kaWN0Cj0yMAogICAgIGRlZiB1cGxv
YWRfY2Fwc3VsZSggc2VsZiwgKiprd2QgKToKQEAgLTg2Myw2ICs4NjAsMTIgQEAKICAgICAgICAg
ICAgICAgICByZXR1cm5fZGljdFsgJ3N0YXR1cycgXSA9M0QgJ2Vycm9yJwogICAgICAgICAgICAg
ICAgIHVwbG9hZGVkX2ZpbGUuY2xvc2UoKQogICAgICAgICAgICAgICAgIHJldHVybiByZXR1cm5f
ZGljdAorICAgICAgICAgICAgaWYgbm90IHNlbGYudmFsaWRhdGVfYXJjaGl2ZV9wYXRocyggdGFy
X2FyY2hpdmUgKToKKyAgICAgICAgICAgICAgICByZXR1cm5fZGljdFsgJ3N0YXR1cycgXSA9M0Qg
J2Vycm9yJworICAgICAgICAgICAgICAgIHJldHVybl9kaWN0WyAnbWVzc2FnZScgXSA9M0QgKCAn
VGhpcyBjYXBzdWxlIGNvbnRhaW5zIGFuIGk9Cm52YWxpZCBtZW1iZXIgdHlwZSAnCisgICAgICAg
ICAgICAgICAgICAgICdvciBhIGZpbGUgb3V0c2lkZSB0aGUgYXJjaGl2ZSBwYXRoLicgKQorICAg
ICAgICAgICAgICAgIHVwbG9hZGVkX2ZpbGUuY2xvc2UoKQorICAgICAgICAgICAgICAgIHJldHVy
biByZXR1cm5fZGljdAogICAgICAgICAgICAgcmV0dXJuX2RpY3RbICd0YXJfYXJjaGl2ZScgXSA9
M0QgdGFyX2FyY2hpdmUKICAgICAgICAgICAgIHJldHVybl9kaWN0WyAnY2Fwc3VsZV9maWxlX25h
bWUnIF0gPTNEIHVwbG9hZGVkX2ZpbGVfZmlsZW5hbWUKICAgICAgICAgICAgIHVwbG9hZGVkX2Zp
bGUuY2xvc2UoKQpAQCAtODcyLDYgKzg3NSwxOCBAQAogICAgICAgICAgICAgcmV0dXJuIHJldHVy
bl9kaWN0CiAgICAgICAgIHJldHVybiByZXR1cm5fZGljdAo9MjAKKyAgICBkZWYgdmFsaWRhdGVf
YXJjaGl2ZV9wYXRocyggc2VsZiwgdGFyX2FyY2hpdmUgKToKKyAgICAgICAgJycnCisgICAgICAg
IEluc3BlY3QgdGhlIGFyY2hpdmUgY29udGVudHMgdG8gZW5zdXJlIHRoYXQgdGhlcmUgYXJlIG5v
IHJpc2t5IHN5bT0KbGlua3MuCisgICAgICAgIFJldHVybnMgVHJ1ZSBpZiBhIHN1c3BpY2lvdXMg
cGF0aCBpcyBmb3VuZC4KKyAgICAgICAgJycnCisgICAgICAgIGZvciBtZW1iZXIgaW4gdGFyX2Fy
Y2hpdmUuZ2V0bWVtYmVycygpOgorICAgICAgICAgICAgaWYgbm90ICggbWVtYmVyLmlzZGlyKCkg
b3IgbWVtYmVyLmlzZmlsZSgpIG9yIG1lbWJlci5pc2xuaygpICk6CisgICAgICAgICAgICAgICAg
cmV0dXJuIEZhbHNlCisgICAgICAgICAgICBlbGlmIG5vdCBzYWZlX3JlbHBhdGgoIG1lbWJlci5u
YW1lICk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVl
CisKICAgICBkZWYgdmFsaWRhdGVfY2Fwc3VsZSggc2VsZiwgKiprd2QgKToKICAgICAgICAgIiIi
CiAgICAgICAgIEluc3BlY3QgdGhlIHVwbG9hZGVkIGNhcHN1bGUncyBtYW5pZmVzdCBhbmQgaXRz
IGNvbnRhaW5lZCBmaWxlcyB0bz0KIGVuc3VyZSBpdCBpcyBhIHZhbGlkCgpkaWZmIC1yIDFmMzQw
NzJkNDczZjg3MWI5MGJmMWIyYmNjNmE3MmMzMjI0MjAwMWQgLXIgN2RkYjQxZGNiMmIyZTRkM2E2
ZjgzNGQ9CjNkZDExNDI2ZjI2ZmI3OTAyIGxpYi90b29sX3NoZWQvdG9vbHMvdG9vbF92ZXJzaW9u
X21hbmFnZXIucHkKLS0tIGEvbGliL3Rvb2xfc2hlZC90b29scy90b29sX3ZlcnNpb25fbWFuYWdl
ci5weQorKysgYi9saWIvdG9vbF9zaGVkL3Rvb2xzL3Rvb2xfdmVyc2lvbl9tYW5hZ2VyLnB5CkBA
IC0xLDYgKzEsOCBAQAogaW1wb3J0IGxvZ2dpbmcKPTIwCi1mcm9tIGdhbGF4eS5tb2RlbC5vcm0g
aW1wb3J0IGFuZF8KK2Zyb20gZ2FsYXh5IGltcG9ydCBlZ2dzCitlZ2dzLnJlcXVpcmUoJ1NRTEFs
Y2hlbXknKQorZnJvbSBzcWxhbGNoZW15IGltcG9ydCBhbmRfLCBvcl8KPTIwCiBmcm9tIHRvb2xf
c2hlZC51dGlsIGltcG9ydCBoZ191dGlsCiBmcm9tIHRvb2xfc2hlZC51dGlsIGltcG9ydCBzaGVk
X3V0aWxfY29tbW9uIGFzIHN1YwpAQCAtMjEsOCArMjMsOCBAQAo9MjAKICAgICBkZWYgZ2V0X3Rv
b2xfdmVyc2lvbl9hc3NvY2lhdGlvbiggc2VsZiwgcGFyZW50X3Rvb2xfdmVyc2lvbiwgdG9vbF92
ZXJzPQppb24gKToKICAgICAgICAgIiIiCi0gICAgICAgIFJldHVybiBhIFRvb2xWZXJzaW9uQXNz
b2NpYXRpb24gaWYgb25lIGV4aXN0cyB0aGF0IGFzc29jaWF0ZXMgdGhlID0KdHdvIHJlY2VpdmVk
Ci0gICAgICAgIHRvb2xfdmVyc2lvbnMgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9ubHkgZnJv
bSBHYWxheHkuCisgICAgICAgIFJldHVybiBhIFRvb2xWZXJzaW9uQXNzb2NpYXRpb24gaWYgb25l
IGV4aXN0cyB0aGF0IGFzc29jaWF0ZXMgdGhlID0KdHdvCisgICAgICAgIHJlY2VpdmVkIHRvb2xf
dmVyc2lvbnMuIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9ubHkgZnJvbSBHYWxheHkuCiAgICAg
ICAgICIiIgogICAgICAgICBjb250ZXh0ID0zRCBzZWxmLmFwcC5pbnN0YWxsX21vZGVsLmNvbnRl
eHQKICAgICAgICAgcmV0dXJuIGNvbnRleHQucXVlcnkoIHNlbGYuYXBwLmluc3RhbGxfbW9kZWwu
VG9vbFZlcnNpb25Bc3NvY2lhdGlvPQpuICkgXApAQCAtOTAsNiArOTIsMTYgQEAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xf
c2hlZF9yZXBvPQpzaXRvcnk9M0R0b29sX3NoZWRfcmVwb3NpdG9yeSApCiAgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQuYWRkKCB0b29sX3ZlcnNpb25fdXNpbmdfcGFyZW50X2lkICkKICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC5mbHVzaCgpCisgICAgICAgICAgICAgICAgIyBSZW1vdmUg
ZXhpc3Rpbmcgd3JvbmcgdG9vbCB2ZXJzaW9uIGFzc29jaWF0aW9ucyBoYXZpbmcKKyAgICAgICAg
ICAgICAgICAjIHRvb2xfdmVyc2lvbl91c2luZ19wYXJlbnRfaWQgYXMgcGFyZW50IG9yCisgICAg
ICAgICAgICAgICAgIyB0b29sX3ZlcnNpb25fdXNpbmdfdG9vbF9ndWlkIGFzIGNoaWxkLgorICAg
ICAgICAgICAgICAgIGNvbnRleHQucXVlcnkoIHNlbGYuYXBwLmluc3RhbGxfbW9kZWwuVG9vbFZl
cnNpb25Bc3NvY2lhdGk9Cm9uICkgXAorICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKCBv
cl8oIGFuZF8oIHNlbGYuYXBwLmluc3RhbGxfbW9kZWwuVG9vbFZlcnM9CmlvbkFzc29jaWF0aW9u
LnRhYmxlLmMucGFyZW50X2lkID0zRD0zRCB0b29sX3ZlcnNpb25fdXNpbmdfcGFyZW50X2lkLmlk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXBwLmlu
c3RhbGxfbW9kZWwuVG9vbFZlcnM9CmlvbkFzc29jaWF0aW9uLnRhYmxlLmMudG9vbF9pZCAhPTNE
IHRvb2xfdmVyc2lvbl91c2luZ190b29sX2d1aWQuaWQgKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbmRfKCBzZWxmLmFwcC5pbnN0YWxsX21vZGVsLlRvb2xWZXJzPQpp
b25Bc3NvY2lhdGlvbi50YWJsZS5jLnBhcmVudF9pZCAhPTNEIHRvb2xfdmVyc2lvbl91c2luZ19w
YXJlbnRfaWQuaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5hcHAuaW5zdGFsbF9tb2RlbC5Ub29sVmVycz0KaW9uQXNzb2NpYXRpb24udGFibGUuYy50
b29sX2lkID0zRD0zRCB0b29sX3ZlcnNpb25fdXNpbmdfdG9vbF9ndWlkLmlkICkgKSApPQogXAor
ICAgICAgICAgICAgICAgICAgICAgICAuZGVsZXRlKCkKKyAgICAgICAgICAgICAgICBjb250ZXh0
LmZsdXNoKCkKICAgICAgICAgICAgICAgICB0b29sX3ZlcnNpb25fYXNzb2NpYXRpb24gPTNEIFwK
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5nZXRfdG9vbF92ZXJzaW9uX2Fzc29jaWF0aW9uKCB0
b29sX3ZlcnNpb25fdXNpbmdfPQpwYXJlbnRfaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbF92ZXJzaW9uX3VzaW5nXz0KdG9vbF9n
dWlkICkKCmRpZmYgLXIgMWYzNDA3MmQ0NzNmODcxYjkwYmYxYjJiY2M2YTcyYzMyMjQyMDAxZCAt
ciA3ZGRiNDFkY2IyYjJlNGQzYTZmODM0ZD0KM2RkMTE0MjZmMjZmYjc5MDIgbGliL3Rvb2xfc2hl
ZC91dGlsL2NvbW1pdF91dGlsLnB5Ci0tLSBhL2xpYi90b29sX3NoZWQvdXRpbC9jb21taXRfdXRp
bC5weQorKysgYi9saWIvdG9vbF9zaGVkL3V0aWwvY29tbWl0X3V0aWwucHkKQEAgLTQsOCArNCwx
MCBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgdGVtcGZpbGUKK2Zyb20gY29s
bGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKPTIwCiBmcm9tIGdhbGF4eS5kYXRhdHlwZXMgaW1w
b3J0IGNoZWNrZXJzCitmcm9tIGdhbGF4eS51dGlsIGltcG9ydCBzYWZlX3JlbHBhdGgKPTIwCiBm
cm9tIHRvb2xfc2hlZC50b29scyBpbXBvcnQgZGF0YV90YWJsZV9tYW5hZ2VyCj0yMApAQCAtMjEs
MzAgKzIzLDQ0IEBACiBVTkRFU0lSQUJMRV9GSUxFUyA9M0QgWyAnLmhnX2FyY2hpdmFsLnR4dCcs
ICdoZ3JjJywgJy5EU19TdG9yZScsICd0b29sX3Rlcz0KdF9vdXRwdXQuaHRtbCcsICd0b29sX3Rl
c3Rfb3V0cHV0Lmpzb24nIF0KPTIwCiBkZWYgY2hlY2tfYXJjaGl2ZSggcmVwb3NpdG9yeSwgYXJj
aGl2ZSApOgorICAgIHZhbGlkID0zRCBbXQorICAgIGludmFsaWQgPTNEIFtdCisgICAgZXJyb3Jz
ID0zRCBbXQorICAgIHVuZGVzaXJhYmxlX2ZpbGVzID0zRCBbXQorICAgIHVuZGVzaXJhYmxlX2Rp
cnMgPTNEIFtdCiAgICAgZm9yIG1lbWJlciBpbiBhcmNoaXZlLmdldG1lbWJlcnMoKToKICAgICAg
ICAgIyBBbGxvdyByZWd1bGFyIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBvbmx5CiAgICAgICAgIGlm
IG5vdCAoIG1lbWJlci5pc2RpcigpIG9yIG1lbWJlci5pc2ZpbGUoKSBvciBtZW1iZXIuaXNsbmso
KSApOgotICAgICAgICAgICAgbWVzc2FnZSA9M0QgIlVwbG9hZGVkIGFyY2hpdmVzIGNhbiBvbmx5
IGluY2x1ZGUgcmVndWxhciBkaXJlY3Q9Cm9yaWVzIGFuZCBmaWxlcyAobm8gc3ltYm9saWMgbGlu
a3MsIGRldmljZXMsIGV0YykuICAiCi0gICAgICAgICAgICBtZXNzYWdlICs9M0QgIlRoZSBwcm9i
bGVtYXRpYyBtZW1iZXIgaW4gdGhpcyBhcmNoaXZlIGlzICVzLCIgJT0KIHN0ciggbWVtYmVyLm5h
bWUgKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBtZXNzYWdlCi0gICAgICAgIGZvciBpdGVt
IGluIFsgJy5oZycsICcuLicsICcvJyBdOgotICAgICAgICAgICAgaWYgbWVtYmVyLm5hbWUuc3Rh
cnRzd2l0aCggaXRlbSApOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPTNEICJVcGxvYWRlZCBh
cmNoaXZlcyBjYW5ub3QgY29udGFpbiAuaGcgZGlyZWN0b3I9CmllcywgYWJzb2x1dGUgZmlsZW5h
bWVzIHN0YXJ0aW5nIHdpdGggJy8nLCBvciBmaWxlbmFtZXMgd2l0aCB0d28gZG90cyAnLi4nLj0K
ICAiCi0gICAgICAgICAgICAgICAgbWVzc2FnZSArPTNEICJUaGUgcHJvYmxlbWF0aWMgbWVtYmVy
IGluIHRoaXMgYXJjaGl2ZSBpcyAlcz0KLiIgJSBzdHIoIG1lbWJlci5uYW1lICkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gRmFsc2UsIG1lc3NhZ2UKLSAgICAgICAgaWYgbWVtYmVyLm5hbWUgaW4g
WyAnaGdyYycgXToKLSAgICAgICAgICAgIG1lc3NhZ2UgPTNEICJVcGxvYWRlZCBhcmNoaXZlcyBj
YW5ub3QgY29udGFpbiBoZ3JjIGZpbGVzLiAgIgotICAgICAgICAgICAgbWVzc2FnZSArPTNEICJU
aGUgcHJvYmxlbWF0aWMgbWVtYmVyIGluIHRoaXMgYXJjaGl2ZSBpcyAlcy4iICU9CiBzdHIoIG1l
bWJlci5uYW1lICkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZSwgbWVzc2FnZQorICAgICAgICAg
ICAgZXJyb3JzLmFwcGVuZCggIlVwbG9hZGVkIGFyY2hpdmVzIGNhbiBvbmx5IGluY2x1ZGUgcmVn
dWxhciBkaXI9CmVjdG9yaWVzIGFuZCBmaWxlcyAobm8gc3ltYm9saWMgbGlua3MsIGRldmljZXMs
IGV0YykuIiApCisgICAgICAgICAgICBpbnZhbGlkLmFwcGVuZCggbWVtYmVyICkKKyAgICAgICAg
ICAgIGNvbnRpbnVlCisgICAgICAgIGlmIG5vdCBzYWZlX3JlbHBhdGgoIG1lbWJlci5uYW1lICk6
CisgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCAiVXBsb2FkZWQgYXJjaGl2ZXMgY2Fubm90IGNv
bnRhaW4gZmlsZXMgdGhhdCB3bz0KdWxkIGV4dHJhY3Qgb3V0c2lkZSBvZiB0aGUgYXJjaGl2ZS4i
ICkKKyAgICAgICAgICAgIGludmFsaWQuYXBwZW5kKCBtZW1iZXIgKQorICAgICAgICAgICAgY29u
dGludWUKKyAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZSggbWVtYmVyLm5hbWUgKSBpbiBVTkRF
U0lSQUJMRV9GSUxFUzoKKyAgICAgICAgICAgIHVuZGVzaXJhYmxlX2ZpbGVzLmFwcGVuZCggbWVt
YmVyICkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGhlYWQgPTNEIHRhaWwgPTNEIG1l
bWJlci5uYW1lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIHRhaWw6CisgICAgICAg
ICAgICAgICAgaGVhZCwgdGFpbCA9M0Qgb3MucGF0aC5zcGxpdChoZWFkKQorICAgICAgICAgICAg
ICAgIGlmIHRhaWwgaW4gVU5ERVNJUkFCTEVfRElSUzoKKyAgICAgICAgICAgICAgICAgICAgdW5k
ZXNpcmFibGVfZGlycy5hcHBlbmQoIG1lbWJlciApCisgICAgICAgICAgICAgICAgICAgIGFzc2Vy
dCBGYWxzZQorICAgICAgICBleGNlcHQgQXNzZXJ0aW9uRXJyb3I6CisgICAgICAgICAgICBjb250
aW51ZQogICAgICAgICBpZiByZXBvc2l0b3J5LnR5cGUgPTNEPTNEIHJ0X3V0aWwuUkVQT1NJVE9S
WV9TVUlURV9ERUZJTklUSU9OIGFuZCA9Cm1lbWJlci5uYW1lICE9M0QgcnRfdXRpbC5SRVBPU0lU
T1JZX0RFUEVOREVOQ1lfREVGSU5JVElPTl9GSUxFTkFNRToKLSAgICAgICAgICAgIG1lc3NhZ2Ug
PTNEICdSZXBvc2l0b3JpZXMgb2YgdHlwZSA8Yj5SZXBvc2l0b3J5IHN1aXRlIGRlZmluaXRpPQpv
bjwvYj4gY2FuIGNvbnRhaW4gb25seSBhIHNpbmdsZSBmaWxlIG5hbWVkIDxiPnJlcG9zaXRvcnlf
ZGVwZW5kZW5jaWVzLnhtbDw9Ci9iPi4nCi0gICAgICAgICAgICBtZXNzYWdlICs9M0QgJ1RoaXMg
YXJjaGl2ZSBjb250YWlucyBhIG1lbWJlciBuYW1lZCAlcy4nICUgc3RyKD0KIG1lbWJlci5uYW1l
ICkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZSwgbWVzc2FnZQorICAgICAgICAgICAgZXJyb3Jz
LmFwcGVuZCggJ1JlcG9zaXRvcmllcyBvZiB0eXBlIDxiPlJlcG9zaXRvcnkgc3VpdGUgZGVmaW49
Cml0aW9uPC9iPiBjYW4gY29udGFpbiBvbmx5IGEgc2luZ2xlIGZpbGUgbmFtZWQgPGI+cmVwb3Np
dG9yeV9kZXBlbmRlbmNpZXMueD0KbWw8L2I+LicgKQorICAgICAgICAgICAgaW52YWxpZC5hcHBl
bmQoIG1lbWJlciApCisgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBpZiByZXBvc2l0b3J5
LnR5cGUgPTNEPTNEIHJ0X3V0aWwuVE9PTF9ERVBFTkRFTkNZX0RFRklOSVRJT04gYW5kIG09CmVt
YmVyLm5hbWUgIT0zRCBydF91dGlsLlRPT0xfREVQRU5ERU5DWV9ERUZJTklUSU9OX0ZJTEVOQU1F
OgotICAgICAgICAgICAgbWVzc2FnZSA9M0QgJ1JlcG9zaXRvcmllcyBvZiB0eXBlIDxiPlRvb2wg
ZGVwZW5kZW5jeSBkZWZpbml0aW89Cm48L2I+IGNhbiBjb250YWluIG9ubHkgYSBzaW5nbGUgZmls
ZSBuYW1lZCA8Yj50b29sX2RlcGVuZGVuY2llcy54bWw8L2I+LicKLSAgICAgICAgICAgIG1lc3Nh
Z2UgKz0zRCAnVGhpcyBhcmNoaXZlIGNvbnRhaW5zIGEgbWVtYmVyIG5hbWVkICVzLicgJSBzdHIo
PQogbWVtYmVyLm5hbWUgKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBtZXNzYWdlCi0gICAg
cmV0dXJuIFRydWUsICcnCisgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCAnUmVwb3NpdG9yaWVz
IG9mIHR5cGUgPGI+VG9vbCBkZXBlbmRlbmN5IGRlZmluaT0KdGlvbjwvYj4gY2FuIGNvbnRhaW4g
b25seSBhIHNpbmdsZSBmaWxlIG5hbWVkIDxiPnRvb2xfZGVwZW5kZW5jaWVzLnhtbDwvYj4uPQon
ICkKKyAgICAgICAgICAgIGludmFsaWQuYXBwZW5kKCBtZW1iZXIgKQorICAgICAgICAgICAgY29u
dGludWUKKyAgICAgICAgdmFsaWQuYXBwZW5kKCBtZW1iZXIgKQorICAgIEFyY2hpdmVDaGVja1Jl
c3VsdHMgPTNEIG5hbWVkdHVwbGUoICdBcmNoaXZlQ2hlY2tSZXN1bHRzJywgWyAndmFsaWQnLCA9
CidpbnZhbGlkJywgJ3VuZGVzaXJhYmxlX2ZpbGVzJywgJ3VuZGVzaXJhYmxlX2RpcnMnLCAnZXJy
b3JzJyBdICkKKyAgICByZXR1cm4gQXJjaGl2ZUNoZWNrUmVzdWx0cyggdmFsaWQsIGludmFsaWQs
IHVuZGVzaXJhYmxlX2ZpbGVzLCB1bmRlc2lyPQphYmxlX2RpcnMsIGVycm9ycyApCj0yMAogZGVm
IGNoZWNrX2ZpbGVfY29udGVudHNfZm9yX2VtYWlsX2FsZXJ0cyggYXBwICk6CiAgICAgIiIiCgpk
aWZmIC1yIDFmMzQwNzJkNDczZjg3MWI5MGJmMWIyYmNjNmE3MmMzMjI0MjAwMWQgLXIgN2RkYjQx
ZGNiMmIyZTRkM2E2ZjgzNGQ9CjNkZDExNDI2ZjI2ZmI3OTAyIGxpYi90b29sX3NoZWQvdXRpbC9y
ZXBvc2l0b3J5X2NvbnRlbnRfdXRpbC5weQotLS0gYS9saWIvdG9vbF9zaGVkL3V0aWwvcmVwb3Np
dG9yeV9jb250ZW50X3V0aWwucHkKKysrIGIvbGliL3Rvb2xfc2hlZC91dGlsL3JlcG9zaXRvcnlf
Y29udGVudF91dGlsLnB5CkBAIC0xNSwzMSArMTUsMjMgQEAKICAgICBoZ191dGlsLmdldF9yZXBv
X2Zvcl9yZXBvc2l0b3J5KCB0cmFucy5hcHAsIHJlcG9zaXRvcnk9M0ROb25lLCByZXBvX3BhPQp0
aD0zRHJlcG9fZGlyLCBjcmVhdGU9M0RGYWxzZSApCiAgICAgdW5kZXNpcmFibGVfZGlyc19yZW1v
dmVkID0zRCAwCiAgICAgdW5kZXNpcmFibGVfZmlsZXNfcmVtb3ZlZCA9M0QgMAotICAgIG9rLCBt
ZXNzYWdlID0zRCBjb21taXRfdXRpbC5jaGVja19hcmNoaXZlKCByZXBvc2l0b3J5LCB0YXIgKQot
ICAgIGlmIG5vdCBvazoKKyAgICBjaGVja19yZXN1bHRzID0zRCBjb21taXRfdXRpbC5jaGVja19h
cmNoaXZlKCByZXBvc2l0b3J5LCB0YXIgKQorICAgIGlmIGNoZWNrX3Jlc3VsdHMuaW52YWxpZDoK
ICAgICAgICAgdGFyLmNsb3NlKCkKICAgICAgICAgdXBsb2FkZWRfZmlsZS5jbG9zZSgpCi0gICAg
ICAgIHJldHVybiBvaywgbWVzc2FnZSwgW10sICcnLCB1bmRlc2lyYWJsZV9kaXJzX3JlbW92ZWQs
IHVuZGVzaXJhYmxlXz0KZmlsZXNfcmVtb3ZlZAorICAgICAgICBtZXNzYWdlID0zRCAnJXMgSW52
YWxpZCBwYXRocyB3ZXJlOiAlcycgJSAoCisgICAgICAgICAgICAnICcuam9pbiggY2hlY2tfcmVz
dWx0cy5lcnJvcnMgKSwgJywgJy5qb2luKCBjaGVja19yZXN1bHRzLmludj0KYWxpZCApICkKKyAg
ICAgICAgcmV0dXJuIEZhbHNlLCBtZXNzYWdlLCBbXSwgJycsIHVuZGVzaXJhYmxlX2RpcnNfcmVt
b3ZlZCwgdW5kZXNpcmFiPQpsZV9maWxlc19yZW1vdmVkCiAgICAgZWxzZToKICAgICAgICAgaWYg
dXBsb2FkX3BvaW50IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgZnVsbF9wYXRoID0zRCBvcy5w
YXRoLmFic3BhdGgoIG9zLnBhdGguam9pbiggcmVwb19kaXIsIHVwbG9hZF89CnBvaW50ICkgKQog
ICAgICAgICBlbHNlOgogICAgICAgICAgICAgZnVsbF9wYXRoID0zRCBvcy5wYXRoLmFic3BhdGgo
IHJlcG9fZGlyICkKLSAgICAgICAgZmlsZW5hbWVzX2luX2FyY2hpdmUgPTNEIFtdCi0gICAgICAg
IGZvciB0YXJpbmZvX29iaiBpbiB0YXIuZ2V0bWVtYmVycygpOgotICAgICAgICAgICAgb2sgPTNE
IG9zLnBhdGguYmFzZW5hbWUoIHRhcmluZm9fb2JqLm5hbWUgKSBub3QgaW4gY29tbWl0X3V0aWw9
Ci5VTkRFU0lSQUJMRV9GSUxFUwotICAgICAgICAgICAgaWYgb2s6Ci0gICAgICAgICAgICAgICAg
Zm9yIGZpbGVfcGF0aF9pdGVtIGluIHRhcmluZm9fb2JqLm5hbWUuc3BsaXQoICcvJyApOgotICAg
ICAgICAgICAgICAgICAgICBpZiBmaWxlX3BhdGhfaXRlbSBpbiBjb21taXRfdXRpbC5VTkRFU0lS
QUJMRV9ESVJTOgotICAgICAgICAgICAgICAgICAgICAgICAgdW5kZXNpcmFibGVfZGlyc19yZW1v
dmVkICs9M0QgMQotICAgICAgICAgICAgICAgICAgICAgICAgb2sgPTNEIEZhbHNlCi0gICAgICAg
ICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg
ICB1bmRlc2lyYWJsZV9maWxlc19yZW1vdmVkICs9M0QgMQotICAgICAgICAgICAgaWYgb2s6Ci0g
ICAgICAgICAgICAgICAgZmlsZW5hbWVzX2luX2FyY2hpdmUuYXBwZW5kKCB0YXJpbmZvX29iai5u
YW1lICkKKyAgICAgICAgdW5kZXNpcmFibGVfZmlsZXNfcmVtb3ZlZCA9M0QgbGVuKCBjaGVja19y
ZXN1bHRzLnVuZGVzaXJhYmxlX2ZpbGVzPQogKQorICAgICAgICB1bmRlc2lyYWJsZV9kaXJzX3Jl
bW92ZWQgPTNEIGxlbiggY2hlY2tfcmVzdWx0cy51bmRlc2lyYWJsZV9kaXJzICkKKyAgICAgICAg
ZmlsZW5hbWVzX2luX2FyY2hpdmUgPTNEIFsgdGkubmFtZSBmb3IgdGkgaW4gY2hlY2tfcmVzdWx0
cy52YWxpZCBdCiAgICAgICAgICMgRXh0cmFjdCB0aGUgdXBsb2FkZWQgdGFyIHRvIHRoZSBsb2Fk
X3BvaW50IHdpdGhpbiB0aGUgcmVwb3NpdG9yeT0KIGhpZXJhcmNoeS4KLSAgICAgICAgdGFyLmV4
dHJhY3RhbGwoIHBhdGg9M0RmdWxsX3BhdGggKQorICAgICAgICB0YXIuZXh0cmFjdGFsbCggcGF0
aD0zRGZ1bGxfcGF0aCwgbWVtYmVycz0zRGNoZWNrX3Jlc3VsdHMudmFsaWQgKQogICAgICAgICB0
YXIuY2xvc2UoKQogICAgICAgICB1cGxvYWRlZF9maWxlLmNsb3NlKCkKICAgICAgICAgZm9yIGZp
bGVuYW1lIGluIGZpbGVuYW1lc19pbl9hcmNoaXZlOgoKZGlmZiAtciAxZjM0MDcyZDQ3M2Y4NzFi
OTBiZjFiMmJjYzZhNzJjMzIyNDIwMDFkIC1yIDdkZGI0MWRjYjJiMmU0ZDNhNmY4MzRkPQozZGQx
MTQyNmYyNmZiNzkwMiBsaWIvdG9vbF9zaGVkL3V0aWwvc2hlZF91dGlsX2NvbW1vbi5weQotLS0g
YS9saWIvdG9vbF9zaGVkL3V0aWwvc2hlZF91dGlsX2NvbW1vbi5weQorKysgYi9saWIvdG9vbF9z
aGVkL3V0aWwvc2hlZF91dGlsX2NvbW1vbi5weQpAQCAtNTM1LDkgKzUzNSwxNyBAQAogICAgIHJl
dHVybiByZXBvc2l0b3J5Cj0yMAo9MjAKLWRlZiBnZXRfcmVwb3NpdG9yeV9maWxlX2NvbnRlbnRz
KCBmaWxlX3BhdGggKToKK2RlZiBnZXRfcmVwb3NpdG9yeV9maWxlX2NvbnRlbnRzKCBhcHAsIGZp
bGVfcGF0aCwgcmVwb3NpdG9yeV9pZCApOgogICAgICIiIlJldHVybiB0aGUgZGlzcGxheS1zYWZl
IGNvbnRlbnRzIG9mIGEgcmVwb3NpdG9yeSBmaWxlIGZvciBkaXNwbGF5IGk9Cm4gYSBicm93c2Vy
LiIiIgotICAgIGlmIGNoZWNrZXJzLmlzX2d6aXAoIGZpbGVfcGF0aCApOgorICAgIHNhZmVfc3Ry
ID0zRCAnJworICAgIGlmIG5vdCBpc19wYXRoX3dpdGhpbl9yZXBvKCBhcHAsIGZpbGVfcGF0aCwg
cmVwb3NpdG9yeV9pZCApOgorICAgICAgICBsb2cud2FybmluZyggJ1JlcXVlc3QgdHJpZXMgdG8g
YWNjZXNzIGEgZmlsZSBvdXRzaWRlIG9mIHRoZSByZXBvc2k9CnRvcnkgbG9jYXRpb24uIEZpbGUg
cGF0aDogJXMnLCBmaWxlX3BhdGggKQorICAgICAgICByZXR1cm4gJ0ludmFsaWQgZmlsZSBwYXRo
JworICAgICMgU3ltbGluayB0YXJnZXRzIGFyZSBjaGVja2VkIGJ5IGlzX3BhdGhfd2l0aGluX3Jl
cG8KKyAgICBpZiBvcy5wYXRoLmlzbGluayggZmlsZV9wYXRoICk6CisgICAgICAgIHNhZmVfc3Ry
ID0zRCAnbGluayB0bzogJyArIGJhc2ljX3V0aWwudG9faHRtbF9zdHJpbmcoIG9zLnJlYWRsaW5r
KD0KIGZpbGVfcGF0aCApICkKKyAgICAgICAgcmV0dXJuIHNhZmVfc3RyCisgICAgZWxpZiBjaGVj
a2Vycy5pc19nemlwKCBmaWxlX3BhdGggKToKICAgICAgICAgcmV0dXJuICc8YnIvPmd6aXAgY29t
cHJlc3NlZCBmaWxlPGJyLz4nCiAgICAgZWxpZiBjaGVja2Vycy5pc19iejIoIGZpbGVfcGF0aCAp
OgogICAgICAgICByZXR1cm4gJzxici8+YnoyIGNvbXByZXNzZWQgZmlsZTxici8+JwpAQCAtNTQ2
LDcgKzU1NCw2IEBACiAgICAgZWxpZiBjaGVja2Vycy5jaGVja19iaW5hcnkoIGZpbGVfcGF0aCAp
OgogICAgICAgICByZXR1cm4gJzxici8+QmluYXJ5IGZpbGU8YnIvPicKICAgICBlbHNlOgotICAg
ICAgICBzYWZlX3N0ciA9M0QgJycKICAgICAgICAgZm9yIGksIGxpbmUgaW4gZW51bWVyYXRlKCBv
cGVuKCBmaWxlX3BhdGggKSApOgogICAgICAgICAgICAgc2FmZV9zdHIgPTNEICclcyVzJyAlICgg
c2FmZV9zdHIsIGJhc2ljX3V0aWwudG9faHRtbF9zdHJpbmcoIGw9CmluZSApICkKICAgICAgICAg
ICAgICMgU3RvcCByZWFkaW5nIGFmdGVyIHN0cmluZyBpcyBsYXJnZXIgdGhhbiBNQVhfQ09OVEVO
VF9TSVpFLgpAQCAtNTU2LDYgKzU2Myw3IEBACiAgICAgICAgICAgICAgICAgICAgIHV0aWwubmlj
ZV9zaXplKCBNQVhfQ09OVEVOVF9TSVpFICkKICAgICAgICAgICAgICAgICBzYWZlX3N0ciA9M0Qg
JyVzJXMnICUgKCBzYWZlX3N0ciwgbGFyZ2Vfc3RyICkKICAgICAgICAgICAgICAgICBicmVhawor
CiAgICAgICAgIGlmIGxlbiggc2FmZV9zdHIgKSA+IGJhc2ljX3V0aWwuTUFYX0RJU1BMQVlfU0la
RToKICAgICAgICAgICAgICMgRWxpbWluYXRlIHRoZSBtaWRkbGUgb2YgdGhlIGZpbGUgdG8gZGlz
cGxheSBhIGZpbGUgbm8gbGFyZ2VyPQogdGhhbiBiYXNpY191dGlsLk1BWF9ESVNQTEFZX1NJWkUu
CiAgICAgICAgICAgICAjIFRoaXMgbWF5IG5vdCBiZSBpZGVhbCBpZiB0aGUgZmlsZSBpcyBsYXJn
ZXIgdGhhbiBNQVhfQ09OVEVOVD0KX1NJWkUuCkBAIC01NzcsOSArNTg1LDYgQEAKICAgICAgICAg
IyBTa2lwIC5oZyBkaXJlY3RvcmllcwogICAgICAgICBpZiBpdGVtLnN0YXJ0c3dpdGgoICcuaGcn
ICk6CiAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKCBvcy5w
YXRoLmpvaW4oIGZvbGRlcl9wYXRoLCBpdGVtICkgKToKLSAgICAgICAgICAgICMgQXBwZW5kIGEg
Jy8nIGNoYXJhY3RlciBzbyB0aGF0IG91ciBqcXVlcnkgZHluYXRyZWUgd2lsbCBmdW5jPQp0aW9u
IHByb3Blcmx5LgotICAgICAgICAgICAgaXRlbSA9M0QgJyVzLycgJSBpdGVtCiAgICAgICAgIGNv
bnRlbnRzLmFwcGVuZCggaXRlbSApCiAgICAgaWYgY29udGVudHM6CiAgICAgICAgIGNvbnRlbnRz
LnNvcnQoKQpAQCAtMTA0OSwxMSArMTA1NCwxNSBAQAogICAgIHJldHVybiBoYXNhdHRyKCBhcHAs
ICJpbnN0YWxsX21vZGVsIiApCj0yMAo9MjAKLWRlZiBvcGVuX3JlcG9zaXRvcnlfZmlsZXNfZm9s
ZGVyKCBmb2xkZXJfcGF0aCApOgorZGVmIG9wZW5fcmVwb3NpdG9yeV9maWxlc19mb2xkZXIoIGFw
cCwgZm9sZGVyX3BhdGgsIHJlcG9zaXRvcnlfaWQgKToKICAgICAiIiIKICAgICBSZXR1cm4gYSBs
aXN0IG9mIGRpY3Rpb25hcmllcywgZWFjaCBvZiB3aGljaCBjb250YWlucyBpbmZvcm1hdGlvbiBm
b3IgPQphIGZpbGUgb3IgZGlyZWN0b3J5IGNvbnRhaW5lZAogICAgIHdpdGhpbiBhIGRpcmVjdG9y
eSBpbiBhIHJlcG9zaXRvcnkgZmlsZSBoaWVyYXJjaHkuCiAgICAgIiIiCisgICAgIyBTeW1saW5r
IHRhcmdldHMgYXJlIGNoZWNrZWQgYnkgaXNfcGF0aF93aXRoaW5fcmVwbworICAgIGlmIG5vdCBp
c19wYXRoX3dpdGhpbl9yZXBvKCBhcHAsIGZvbGRlcl9wYXRoLCByZXBvc2l0b3J5X2lkICk6Cisg
ICAgICAgIGxvZy53YXJuaW5nKCAnUmVxdWVzdCB0cmllcyB0byBhY2Nlc3MgYSBmb2xkZXIgb3V0
c2lkZSBvZiB0aGUgcmVwbz0Kc2l0b3J5IGxvY2F0aW9uLiBGb2xkZXIgcGF0aDogJXMnLCBmb2xk
ZXJfcGF0aCApCisgICAgICAgIHJldHVybiBbXQogICAgIHRyeToKICAgICAgICAgZmlsZXNfbGlz
dCA9M0QgZ2V0X3JlcG9zaXRvcnlfZmlsZXMoIGZvbGRlcl9wYXRoICkKICAgICBleGNlcHQgT1NF
cnJvciwgZToKQEAgLTEwNjMsMTAgKzEwNzIsMTcgQEAKICAgICBmb2xkZXJfY29udGVudHMgPTNE
IFtdCiAgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVzX2xpc3Q6CiAgICAgICAgIGlzX2ZvbGRlciA9
M0QgRmFsc2UKLSAgICAgICAgaWYgZmlsZW5hbWUgYW5kIGZpbGVuYW1lWyAtMSBdID0zRD0zRCBv
cy5zZXA6Ci0gICAgICAgICAgICBpc19mb2xkZXIgPTNEIFRydWUKKyAgICAgICAgZnVsbF9wYXRo
ID0zRCBvcy5wYXRoLmpvaW4oIGZvbGRlcl9wYXRoLCBmaWxlbmFtZSApCisgICAgICAgIGlzX2xp
bmsgPTNEIG9zLnBhdGguaXNsaW5rKCBmdWxsX3BhdGggKQorICAgICAgICBwYXRoX2lzX3dpdGhp
bl9yZXBvID0zRCBpc19wYXRoX3dpdGhpbl9yZXBvKCBhcHAsIGZ1bGxfcGF0aCwgcmVwb3M9Cml0
b3J5X2lkICkKKyAgICAgICAgaWYgaXNfbGluayBhbmQgbm90IHBhdGhfaXNfd2l0aGluX3JlcG86
CisgICAgICAgICAgICBsb2cud2FybmluZyggJ1ZhbGlkIGZvbGRlciBjb250YWlucyBhIHN5bWxp
bmsgb3V0c2lkZSBvZiB0aGUgcj0KZXBvc2l0b3J5IGxvY2F0aW9uLiBMaW5rIGZvdW5kIGluOiAn
ICsgc3RyKCBmdWxsX3BhdGggKSApCiAgICAgICAgIGlmIGZpbGVuYW1lOgotICAgICAgICAgICAg
ZnVsbF9wYXRoID0zRCBvcy5wYXRoLmpvaW4oIGZvbGRlcl9wYXRoLCBmaWxlbmFtZSApCisgICAg
ICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKCBmdWxsX3BhdGggKSBhbmQgcGF0aF9pc193aXRoaW5f
cmVwbzoKKyAgICAgICAgICAgICAgICAjIEFwcGVuZCBhICcvJyBjaGFyYWN0ZXIgc28gdGhhdCBv
dXIganF1ZXJ5IGR5bmF0cmVlIHdpbGwgPQpmdW5jdGlvbiBwcm9wZXJseS4KKyAgICAgICAgICAg
ICAgICBmaWxlbmFtZSA9M0QgJyVzLycgJSBmaWxlbmFtZQorICAgICAgICAgICAgICAgIGZ1bGxf
cGF0aCA9M0QgJyVzLycgJSBmdWxsX3BhdGgKKyAgICAgICAgICAgICAgICBpc19mb2xkZXIgPTNE
IFRydWUKICAgICAgICAgICAgIG5vZGUgPTNEIHsgInRpdGxlIjogZmlsZW5hbWUsCiAgICAgICAg
ICAgICAgICAgICAgICAiaXNGb2xkZXIiOiBpc19mb2xkZXIsCiAgICAgICAgICAgICAgICAgICAg
ICAiaXNMYXp5IjogaXNfZm9sZGVyLApAQCAtMTA3Niw2ICsxMDkyLDE2IEBACiAgICAgcmV0dXJu
IGZvbGRlcl9jb250ZW50cwo9MjAKPTIwCitkZWYgaXNfcGF0aF93aXRoaW5fcmVwbyggYXBwLCBw
YXRoLCByZXBvc2l0b3J5X2lkICk6CisgICAgIiIiCisgICAgRGV0ZWN0IHdoZXRoZXIgdGhlIGdp
dmVuIHBhdGggaXMgd2l0aGluIHRoZSByZXBvc2l0b3J5IGZvbGRlIHJvbiB0aGUgZD0KaXNrLgor
ICAgIFVzZSB0byBmaWx0ZXIgbWFsaWNpb3VzIHN5bWxpbmtzIHRhcmdldGluZyBvdXRzaWRlIHBh
dGhzLgorICAgICIiIgorICAgIHJlcG9fcGF0aCA9M0Qgb3MucGF0aC5hYnNwYXRoKCBnZXRfcmVw
b3NpdG9yeV9ieV9pZCggYXBwLCByZXBvc2l0b3J5X2k9CmQgKS5yZXBvX3BhdGgoIGFwcCApICkK
KyAgICByZXNvbHZlZF9wYXRoID0zRCBvcy5wYXRoLnJlYWxwYXRoKCBwYXRoICkKKyAgICByZXR1
cm4gb3MucGF0aC5jb21tb25wcmVmaXgoIFsgcmVwb19wYXRoLCByZXNvbHZlZF9wYXRoIF0gKSA9
M0Q9M0QgcmVwPQpvX3BhdGgKKworCiBkZWYgcmVwb3NpdG9yeV93YXNfcHJldmlvdXNseV9pbnN0
YWxsZWQoIGFwcCwgdG9vbF9zaGVkX3VybCwgcmVwb3NpdG9yeV9uYT0KbWUsIHJlcG9faW5mb190
dXBsZSwgZnJvbV90aXA9M0RGYWxzZSApOgogICAgICIiIgogICAgIEZpbmQgb3V0IGlmIGEgcmVw
b3NpdG9yeSBpcyBhbHJlYWR5IGluc3RhbGxlZCBpbnRvIEdhbGF4eSAtIHRoZXJlIGFyZSA9CnNl
dmVyYWwgc2NlbmFyaW9zIHdoZXJlIHRoaXMKCmRpZmYgLXIgMWYzNDA3MmQ0NzNmODcxYjkwYmYx
YjJiY2M2YTcyYzMyMjQyMDAxZCAtciA3ZGRiNDFkY2IyYjJlNGQzYTZmODM0ZD0KM2RkMTE0MjZm
MjZmYjc5MDIgdGVtcGxhdGVzL2FkbWluL3JlcXVlc3RzL3NlbGVjdF9kYXRhc2V0c190b190cmFu
c2Zlci5tYWtvCi0tLSBhL3RlbXBsYXRlcy9hZG1pbi9yZXF1ZXN0cy9zZWxlY3RfZGF0YXNldHNf
dG9fdHJhbnNmZXIubWFrbworKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi08JWluaGVy
aXQgZmlsZT0zRCIvYmFzZS5tYWtvIi8+Ci08JW5hbWVzcGFjZSBmaWxlPTNEIi9tZXNzYWdlLm1h
a28iIGltcG9ydD0zRCJyZW5kZXJfbXNnIiAvPgotPCVuYW1lc3BhY2UgZmlsZT0zRCIvcmVxdWVz
dHMvY29tbW9uL2NvbW1vbi5tYWtvIiBpbXBvcnQ9M0QicmVuZGVyX3NhbXBsZV89CmRhdGFzZXRz
IiAvPgotPCVuYW1lc3BhY2UgZmlsZT0zRCIvcmVxdWVzdHMvY29tbW9uL2NvbW1vbi5tYWtvIiBp
bXBvcnQ9M0QiY29tbW9uX2phdmFzY3I9CmlwdHMiIC8+Ci0KLTwlZGVmIG5hbWU9M0QiamF2YXNj
cmlwdHMoKSI+Ci0gICAke3BhcmVudC5qYXZhc2NyaXB0cygpfQotICAgJHtjb21tb25famF2YXNj
cmlwdHMoKX0KLTwvJWRlZj4KLQotJHtoLmpzKCAibGlicy9qcXVlcnkvanF1ZXJ5LXVpIiwgImxp
YnMvanF1ZXJ5L2pxdWVyeS5jb29raWUiLCAibGlicy9qcXVlcnk9Ci9qcXVlcnkuZHluYXRyZWUi
ICl9Ci0ke2guY3NzKCAiZHluYXRyZWVfc2tpbi91aS5keW5hdHJlZSIgKX0KLQotPHNjcmlwdCB0
eXBlPTNEInRleHQvamF2YXNjcmlwdCI+Ci0gICAgJChmdW5jdGlvbigpewotICAgICAgICAkKCIj
dHJlZSIpLmFqYXhDb21wbGV0ZShmdW5jdGlvbihldmVudCwgWE1MSHR0cFJlcXVlc3QsIGFqYXhP
cHRpb249CnMpIHsKLSAgICAgICAgICAgIF9sb2coImRlYnVnIiwgImFqYXhDb21wbGV0ZTogJW8i
LCB0aGlzKTsgLy8gZG9tIGVsZW1lbnQgbGlzdGVuPQppbmcKLSAgICAgICAgfSk7Ci0gICAgICAg
IC8vIC0tLSBJbml0aWFsaXplIHNhbXBsZSB0cmVlcwotICAgICAgICAkKCIjdHJlZSIpLmR5bmF0
cmVlKHsKLSAgICAgICAgICAgIHRpdGxlOiAiJHtzY3BfY29uZmlnc1snZGF0YV9sb2NhdGlvbidd
fSIsCi0gICAgICAgICAgICByb290VmlzaWJsZTogdHJ1ZSwKLSAgICAgICAgICAgIG1pbkV4cGFu
ZExldmVsOiAwLCAvLyAxOiByb290IG5vZGUgaXMgbm90IGNvbGxhcHNpYmxlCi0gICAgICAgICAg
ICBwZXJzaXN0OiBmYWxzZSwKLSAgICAgICAgICAgIGNoZWNrYm94OiB0cnVlLAotICAgICAgICAg
ICAgc2VsZWN0TW9kZTogMywKLSAgICAgICAgICAgIG9uUG9zdEluaXQ6IGZ1bmN0aW9uKGlzUmVs
b2FkaW5nLCBpc0Vycm9yKSB7Ci0gICAgICAgICAgICAgICAgLy9hbGVydCgicmVsb2FkaW5nOiAi
K2lzUmVsb2FkaW5nKyIsIGVycm9yOiIraXNFcnJvcik7Ci0gICAgICAgICAgICAgICAgbG9nTXNn
KCJvblBvc3RJbml0KCVvLCAlbykgLSAlbyIsIGlzUmVsb2FkaW5nLCBpc0Vycm9yLCB0aD0KaXMp
OwotICAgICAgICAgICAgICAgIC8vIFJlLWZpcmUgb25BY3RpdmF0ZSwgc28gdGhlIHRleHQgaXMg
dXBkYXRlZAotICAgICAgICAgICAgICAgIHRoaXMucmVhY3RpdmF0ZSgpOwotICAgICAgICAgICAg
fSw9MjAKLSAgICAgICAgICAgIGZ4OiB7IGhlaWdodDogInRvZ2dsZSIsIGR1cmF0aW9uOiAyMDAg
fSwKLSAgICAgICAgICAgIC8vIGluaXRBamF4IGlzIGhhcmQgdG8gZmFrZSwgc28gd2UgcGFzcyB0
aGUgY2hpbGRyZW4gYXMgb2JqZWN0PQogYXJyYXk6Ci0gICAgICAgICAgICBpbml0QWpheDoge3Vy
bDogIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJ3JlcXVlc3RzX2FkbWluJywgYT0KY3Rpb249
M0Qnb3Blbl9mb2xkZXInICl9IiwKLSAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICJq
c29uIiw9MjAKLSAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogeyByZXF1ZXN0X2lkOiAiJHt0
cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHJlPQpxdWVzdC5pZCApfSIsIGV4dGVybmFsX3NlcnZp
Y2VfaWQ6ICIke3RyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggZXh0ZXJuYWxfc2U9CnJ2aWNlLmlk
ICl9Iiwga2V5OiAiJHtzY3BfY29uZmlnc1snZGF0YV9sb2NhdGlvbiddfSIgfSwKLSAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICBvbkxhenlSZWFkOiBmdW5jdGlvbihkdG5vZGUpewotICAgICAg
ICAgICAgICAgIGR0bm9kZS5hcHBlbmRBamF4KHsKLSAgICAgICAgICAgICAgICAgICAgdXJsOiAi
JHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmVxdWVzdHNfYWRtaW4nLCBhY3RpPQpvbj0zRCdv
cGVuX2ZvbGRlcicgKX0iLD0yMAotICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogImpzb24i
LAotICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IHJlcXVlc3RfaWQ6ICIke3RyYW5zLnNlY3Vy
aXR5LmVuY29kZV9pZCggcmVxdWU9CnN0LmlkICl9IiwgZXh0ZXJuYWxfc2VydmljZV9pZDogIiR7
dHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBleHRlcm5hbF9zZXJ2aT0KY2UuaWQgKX0iLCBrZXk6
IGR0bm9kZS5kYXRhLmtleSB9LAotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgIG9uU2VsZWN0OiBmdW5jdGlvbihzZWxlY3QsIGR0bm9kZSkgewotICAgICAg
ICAgICAgICAgIC8vIERpc3BsYXkgbGlzdCBvZiBzZWxlY3RlZCBub2RlcwotICAgICAgICAgICAg
ICAgIHZhciBzZWxOb2RlcyA9M0QgZHRub2RlLnRyZWUuZ2V0U2VsZWN0ZWROb2RlcygpOwotICAg
ICAgICAgICAgICAgIC8vIGNvbnZlcnQgdG8gdGl0bGUva2V5IGFycmF5Ci0gICAgICAgICAgICAg
ICAgdmFyIHNlbEtleXMgPTNEICQubWFwKHNlbE5vZGVzLCBmdW5jdGlvbihub2RlKXsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUuZGF0YS5rZXk7Ci0gICAgICAgICAgICAgICAgfSk7
Ci0gICAgICAgICAgICAgICAgZG9jdW1lbnQuc2VsZWN0X2RhdGFzZXRzX3RvX3RyYW5zZmVyLnNl
bGVjdGVkX2RhdGFzZXRzX3RvXz0KdHJhbnNmZXIudmFsdWUgPTNEIHNlbEtleXMuam9pbigiLCIp
Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgb25BY3RpdmF0ZTogZnVuY3Rpb24oZHRub2Rl
KSB7Ci0gICAgICAgICAgICAgICAgdmFyIGNlbGwgPTNEICQoIiNmaWxlX2RldGFpbHMiKTsKLSAg
ICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWRfdmFsdWU7Ci0gICAgICAgICAgICAgICAgaWYgKGR0
bm9kZS5kYXRhLmtleSA9M0Q9M0QgJ3Jvb3QnKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNlbGVj
dGVkX3ZhbHVlID0zRCAiJHtzY3BfY29uZmlnc1snZGF0YV9sb2NhdGlvbiddfS8iOwotICAgICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkX3ZhbHVlID0z
RCBkdG5vZGUuZGF0YS5rZXk7Ci0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICBp
ZiAoc2VsZWN0ZWRfdmFsdWUuY2hhckF0KHNlbGVjdGVkX3ZhbHVlLmxlbmd0aC0xKSAhPTNEICcv
PQonKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIE1ha2UgYWpheCBjYWxsCi0gICAgICAgICAg
ICAgICAgICAgICQuYWpheCggewotICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogIlBPU1Qi
LAotICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAiJHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9
M0QncmVxdWVzdHNfYWRtaW4nLCA9CmFjdGlvbj0zRCdnZXRfZmlsZV9kZXRhaWxzJyApfSIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogImpzb24iLAotICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YTogeyByZXF1ZXN0X2lkOiAiJHt0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQo
cmU9CnF1ZXN0LmlkKX0iLCBleHRlcm5hbF9zZXJ2aWNlX2lkOiAiJHt0cmFucy5zZWN1cml0eS5l
bmNvZGVfaWQoZXh0ZXJuYWxfc2Vydj0KaWNlLmlkKX0iLCBmb2xkZXJfcGF0aDogc2VsZWN0ZWRf
dmFsdWUgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgOiBmdW5jdGlvbiAoIGRh
dGEgKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5odG1sKCAnPGxhYmVsPicr
ZGF0YSsnPC9sYWJlbD4nICkKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgY2VsbC5odG1sKCAnJyApOwotICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB9LAot
ICAgICAgICB9KTsKLSAgICB9KTsKLTwvc2NyaXB0PgotCi08JQotICAgIGlzX2FkbWluID0zRCBj
bnRybGxlciA9M0Q9M0QgJ3JlcXVlc3RzX2FkbWluJyBhbmQgdHJhbnMudXNlcl9pc19hZG1pbigp
Ci0gICAgY2FuX3RyYW5zZmVyX2RhdGFzZXRzID0zRCBpc19hZG1pbiBhbmQgc2FtcGxlLnVudHJh
bnNmZXJyZWRfZGF0YXNldF9maT0KbGVzIGFuZCBzYW1wbGUubGlicmFyeSBhbmQgc2FtcGxlLmZv
bGRlcgotJT4KLQotPGJyLz48YnIvPgotPHVsIGNsYXNzPTNEIm1hbmFnZS10YWJsZS1hY3Rpb25z
Ij4KLSAgICA8bGk+PGEgY2xhc3M9M0QiYWN0aW9uLWJ1dHRvbiIgaHJlZj0zRCIke2gudXJsX2Zv
ciggY29udHJvbGxlcj0zRCdleHRlPQpybmFsX3NlcnZpY2UnLCBhY3Rpb249M0Qndmlld19leHRl
cm5hbF9zZXJ2aWNlJywgaWQ9M0R0cmFucy5zZWN1cml0eS5lbmNvZGU9Cl9pZCggZXh0ZXJuYWxf
c2VydmljZS5pZCApICl9Ij5FeHRlcm5hbCBzZXJ2aWNlIGNvbmZpZ3VyYXRpb248L2E+PC9saT4K
LSAgICAlaWYgY2FuX3RyYW5zZmVyX2RhdGFzZXRzOgotICAgICAgICA8bGk+PGEgY2xhc3M9M0Qi
YWN0aW9uLWJ1dHRvbiIgaHJlZj0zRCIke2gudXJsX2ZvciggY29udHJvbGxlcj0zRCc9CnJlcXVl
c3RzX2FkbWluJywgYWN0aW9uPTNEJ21hbmFnZV9kYXRhc2V0cycsIGNudHJsbGVyPTNEY250cmxs
ZXIsIHNhbXBsZV9pZD0KPTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBzYW1wbGUuaWQgKSAp
fSI+VHJhbnNmZXIgZGF0YXNldHM8L2E+PC9saT4KLSAgICAlZW5kaWYKLSAgICA8bGk+PGEgY2xh
c3M9M0QiYWN0aW9uLWJ1dHRvbiIgaHJlZj0zRCIke2gudXJsX2ZvciggY29udHJvbGxlcj0zRCdy
ZXF1PQplc3RzX2NvbW1vbicsIGFjdGlvbj0zRCd2aWV3X3JlcXVlc3QnLCBjbnRybGxlcj0zRGNu
dHJsbGVyLCBpZD0zRHRyYW5zLnNlY3U9CnJpdHkuZW5jb2RlX2lkKCByZXF1ZXN0LmlkICkgKX0i
PkJyb3dzZSB0aGlzIHJlcXVlc3Q8L2E+PC9saT4KLTwvdWw+Ci0KLSVpZiBub3Qgc2FtcGxlOgot
ICAgIDxici8+Ci0gICAgPGZvbnQgY29sb3I9M0QicmVkIj48Yj48aT5TZWxlY3QgYSBzYW1wbGUg
YmVmb3JlIHNlbGVjdGluZyBkYXRhc2V0cyB0bz0KIHRyYW5zZmVyPC9pPjwvYj48L2ZvbnQ+Ci0g
ICAgPGJyLz4KLSVlbmRpZgotCi0laWYgcmVxdWVzdC5zYW1wbGVzX3dpdGhvdXRfbGlicmFyeV9k
ZXN0aW5hdGlvbnM6Ci0gICAgPHA+Ci0gICAgPGZvbnQgY29sb3I9M0QicmVkIj48Yj48aT5TZWxl
Y3QgYSB0YXJnZXQgZGF0YSBsaWJyYXJ5IGFuZCBmb2xkZXIgZm9yID0KYSBzYW1wbGUgYmVmb3Jl
IHNlbGVjdGluZyBpdHMgZGF0YXNldHMgdG8gdHJhbnNmZXIgZnJvbSB0aGUgZXh0ZXJuYWwgc2Vy
dmljPQplPC9pPjwvYj48L2ZvbnQ+Ci0gICAgPC9wPgotJWVuZGlmCi0KLSVpZiBtZXNzYWdlOgot
ICAgICR7cmVuZGVyX21zZyggbWVzc2FnZSwgc3RhdHVzICl9Ci0lZW5kaWYKLQotPGRpdiBjbGFz
cz0zRCJ0b29sRm9ybSI+Ci0gICAgPGRpdiBjbGFzcz0zRCJ0b29sRm9ybVRpdGxlIj5TZWxlY3Qg
ZGF0YXNldHMgdG8gdHJhbnNmZXIgZnJvbSBkYXRhIGRpcj0KZWN0b3J5IGNvbmZpZ3VyZWQgZm9y
IHRoZSBleHRlcm5hbCBzZXJ2aWNlPC9kaXY+Ci0gICAgPGZvcm0gbmFtZT0zRCJzZWxlY3RfZGF0
YXNldHNfdG9fdHJhbnNmZXIiIGlkPTNEInNlbGVjdF9kYXRhc2V0c190b190cj0KYW5zZmVyIiBh
Y3Rpb249M0QiJHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmVxdWVzdHNfYWRtaW4nLCBhY3Rp
b249M0Qnc2VsPQplY3RfZGF0YXNldHNfdG9fdHJhbnNmZXInLCBjbnRybGxlcj0zRGNudHJsbGVy
LCBleHRlcm5hbF9zZXJ2aWNlX2lkPTNEdHJhbnM9Ci5zZWN1cml0eS5lbmNvZGVfaWQoIGV4dGVy
bmFsX3NlcnZpY2UuaWQgKSwgcmVxdWVzdF9pZD0zRHRyYW5zLnNlY3VyaXR5LmVuYz0Kb2RlX2lk
KCByZXF1ZXN0LmlkICkpfSIgbWV0aG9kPTNEInBvc3QiID4KLSAgICAgICAgPGRpdiBjbGFzcz0z
RCJmb3JtLXJvdyI+Ci0gICAgICAgICAgICA8bGFiZWw+U2FtcGxlOjwvbGFiZWw+Ci0gICAgICAg
ICAgICAke3NhbXBsZV9pZF9zZWxlY3RfZmllbGQuZ2V0X2h0bWwoKX0KLSAgICAgICAgICAgIDxk
aXYgY2xhc3M9M0QidG9vbFBhcmFtSGVscCIgc3R5bGU9M0QiY2xlYXI6IGJvdGg7Ij4KLSAgICAg
ICAgICAgICAgICBTZWxlY3QgdGhlIHNhbXBsZSB0aGF0IHdhcyBzZXF1ZW5jZWQgdG8gcHJvZHVj
ZSB0aGUgZGF0YXNlPQp0cyB5b3Ugd2FudCB0byB0cmFuc2Zlci4KLSAgICAgICAgICAgIDwvZGl2
PgotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0zRCJmb3JtLXJvdyIgPgotICAg
ICAgICAgICAgPGxhYmVsPlNlbGVjdCBkYXRhc2V0cyBmcm9tIHNvdXJjZSBkYXRhIGxvY2F0aW9u
IGRlZmluZWQgaW4gdGg9CmUgZXh0ZXJuYWwgc2VydmljZSBjb25maWd1cmF0aW9uOjwvbGFiZWw+
Ci0gICAgICAgICAgICA8ZGl2IGlkPTNEInRyZWUiID4KLSAgICAgICAgICAgICAgICBMb2FkaW5n
Li4uCi0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxpbnB1dCBpZD0zRCJzZWxlY3Rl
ZF9kYXRhc2V0c190b190cmFuc2ZlciIgbmFtZT0zRCJzZWxlY3RlZF9kPQphdGFzZXRzX3RvX3Ry
YW5zZmVyIiB0eXBlPTNEImhpZGRlbiIgc2l6ZT0zRDQwIi8+Ci0gICAgICAgICAgICA8ZGl2IGNs
YXNzPTNEInRvb2xQYXJhbUhlbHAiIHN0eWxlPTNEImNsZWFyOiBib3RoOyI+Ci0gICAgICAgICAg
ICAgICAgPHVsPgotICAgICAgICAgICAgICAgICAgICA8bGk+Q2xpY2sgdGhlIDxiPmV4dGVybmFs
IHNlcnZpY2UgY29uZmlndXJhdGlvbjwvYj4gYnU9CnR0b24gYW5kIGNoYW5nZSB0aGUgPGI+RGF0
YSBkaXJlY3Rvcnk8L2I+IHNldHRpbmcgdG8gcmVkZWZpbmUgdGhlIHNvdXJjZSBkYT0KdGEgbG9j
YXRpb24uPC9saT4KLSAgICAgICAgICAgICAgICAgICAgPGxpPlNlbGVjdCBhIGZvbGRlciB0byBz
ZWxlY3QgYWxsIG9mIHRoZSBpbmRpdmlkdWFsIGZpPQpsZXMgd2l0aGluIHRoYXQgZm9sZGVyLjwv
bGk+Ci0gICAgICAgICAgICAgICAgICAgIDxsaT5DbGljayB0aGUgPGI+U2VsZWN0IGRhdGFzZXRz
PC9iPiBidXR0b24gd2hlbiBkZXNpcj0KZWQgZGF0YXNldCBjaGVjayBib3hlcyBhcmUgY2hlY2tl
ZC48L2xpPgotICAgICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICA8L2Rpdj4gICAgICAg
ICAgID0yMAotICAgICAgICA8L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0zRCJmb3JtLXJvdyI+
Ci0gICAgICAgICAgICA8ZGl2IGlkPTNEImZpbGVfZGV0YWlscyIgY2xhc3M9M0QidG9vbFBhcmFt
SGVscCIgc3R5bGU9M0QiY2xlYT0KcjogYm90aDtiYWNrZ3JvdW5kLWNvbG9yOiNGQUZBRkE7Ij48
L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9M0QiZm9ybS1yb3ciPgot
ICAgICAgICAgICAgPGlucHV0IHR5cGU9M0Qic3VibWl0IiBuYW1lPTNEInNlbGVjdF9kYXRhc2V0
c190b190cmFuc2Zlcl9idXQ9CnRvbiIgdmFsdWU9M0QiU2VsZWN0IGRhdGFzZXRzIi8+Ci0gICAg
ICAgIDwvZGl2PgotICAgIDwvZm9ybT4KLTwvZGl2PgotCi0laWYgc2FtcGxlIGFuZCBzYW1wbGUu
ZGF0YXNldHM6Ci0gICAgPCUgdGl0bGUgPTNEICdBbGwgc2VsZWN0ZWQgZGF0YXNldHMgZm9yICIl
cyInICUgc2FtcGxlLm5hbWUgJT4KLSAgICA8cC8+Ci0gICAgJHtyZW5kZXJfc2FtcGxlX2RhdGFz
ZXRzKCAncmVxdWVzdHNfYWRtaW4nLCBzYW1wbGUsIHNhbXBsZS5kYXRhc2V0cywgdD0KaXRsZSAp
fQotJWVuZGlmCgpkaWZmIC1yIDFmMzQwNzJkNDczZjg3MWI5MGJmMWIyYmNjNmE3MmMzMjI0MjAw
MWQgLXIgN2RkYjQxZGNiMmIyZTRkM2E2ZjgzNGQ9CjNkZDExNDI2ZjI2ZmI3OTAyIHRlbXBsYXRl
cy9hZG1pbi90b29sX3NoZWRfcmVwb3NpdG9yeS9jb21tb24ubWFrbwotLS0gYS90ZW1wbGF0ZXMv
YWRtaW4vdG9vbF9zaGVkX3JlcG9zaXRvcnkvY29tbW9uLm1ha28KKysrIGIvdGVtcGxhdGVzL2Fk
bWluL3Rvb2xfc2hlZF9yZXBvc2l0b3J5L2NvbW1vbi5tYWtvCkBAIC0yMywxNCArMjMsMTYgQEAK
ICAgICAgICAgICAgICAgICBmeDogeyBoZWlnaHQ6ICJ0b2dnbGUiLCBkdXJhdGlvbjogMjAwIH0s
CiAgICAgICAgICAgICAgICAgLy8gaW5pdEFqYXggaXMgaGFyZCB0byBmYWtlLCBzbyB3ZSBwYXNz
IHRoZSBjaGlsZHJlbiBhcyBvYj0KamVjdCBhcnJheToKICAgICAgICAgICAgICAgICBpbml0QWph
eDoge3VybDogIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJ2FkbWluX3Rvb2xzaGVkPQonLCBh
Y3Rpb249M0Qnb3Blbl9mb2xkZXInICl9IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGFUeXBlOiAianNvbiIsPTIwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IGZv
bGRlcl9wYXRoOiAiJHtkaXJlY3RvcnlfcGF0aHxofSIgfSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGFUeXBlOiAianNvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh
OiB7IGZvbGRlcl9wYXRoOiAiJHtkaXJlY3RvcnlfcGF0aHxofSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ6ICIke3RyYW5zLnNlY3VyaXR5LmVuY29k
ZT0KX2lkKCByZXBvc2l0b3J5LmlkICl9IiB9LAogICAgICAgICAgICAgICAgIH0sCiAgICAgICAg
ICAgICAgICAgb25MYXp5UmVhZDogZnVuY3Rpb24oZHRub2RlKXsKICAgICAgICAgICAgICAgICAg
ICAgZHRub2RlLmFwcGVuZEFqYXgoewotICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAiJHto
LnVybF9mb3IoIGNvbnRyb2xsZXI9M0QnYWRtaW5fdG9vbHNoZWQnLCA9CmFjdGlvbj0zRCdvcGVu
X2ZvbGRlcicgKX0iLD0yMAorICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAiJHtoLnVybF9m
b3IoIGNvbnRyb2xsZXI9M0QnYWRtaW5fdG9vbHNoZWQnLCA9CmFjdGlvbj0zRCdvcGVuX2ZvbGRl
cicgKX0iLAogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICJqc29uIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgZm9sZGVyX3BhdGg6IGR0bm9kZS5kYXRhLmtleSB9
LAorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogeyBmb2xkZXJfcGF0aDogZHRub2RlLmRh
dGEua2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkOiAi
JHt0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQ9CiggcmVwb3NpdG9yeS5pZCApfSIgfSwKICAgICAg
ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICBv
blNlbGVjdDogZnVuY3Rpb24oc2VsZWN0LCBkdG5vZGUpIHsKQEAgLTU1LDcgKzU3LDcgQEAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAiUE9TVCIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdXJsOiAiJHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QnYWRtaW5fdG9vbHNo
ZT0KZCcsIGFjdGlvbj0zRCdnZXRfZmlsZV9jb250ZW50cycgKX0iLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFUeXBlOiAianNvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YTogeyBmaWxlX3BhdGg6IHNlbGVjdGVkX3ZhbHVlIH0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YTogeyBmaWxlX3BhdGg6IHNlbGVjdGVkX3ZhbHVlLCByZXBvc2l0b3J5
Xz0KaWQ6ICIke3RyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggcmVwb3NpdG9yeS5pZCApfSIgfSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzIDogZnVuY3Rpb24oIGRhdGEgKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuaHRtbCggJzxsYWJlbD4nK2Rh
dGErJzwvbGFiZWw+JyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKZGlmZiAtciAx
ZjM0MDcyZDQ3M2Y4NzFiOTBiZjFiMmJjYzZhNzJjMzIyNDIwMDFkIC1yIDdkZGI0MWRjYjJiMmU0
ZDNhNmY4MzRkPQozZGQxMTQyNmYyNmZiNzkwMiB0ZW1wbGF0ZXMvd2ViYXBwcy9nYWxheHkvcmVx
dWVzdHMvY29tbW9uL2NvbW1vbi5tYWtvCi0tLSBhL3RlbXBsYXRlcy93ZWJhcHBzL2dhbGF4eS9y
ZXF1ZXN0cy9jb21tb24vY29tbW9uLm1ha28KKysrIGIvdGVtcGxhdGVzL3dlYmFwcHMvZ2FsYXh5
L3JlcXVlc3RzL2NvbW1vbi9jb21tb24ubWFrbwpAQCAtMzMzLDcgKzMzMyw2IEBACiAgICAgICAg
Y2FuX2FkZF9zYW1wbGVzID0zRCBpc191bnN1Ym1pdHRlZAogICAgIGNhbl9kZWxldGVfc2FtcGxl
cyA9M0Qgbm90IGFkZGluZ19uZXdfc2FtcGxlcyBhbmQgcmVxdWVzdC5zYW1wbGVzIGFuZCA9Cigg
KCBpc19hZG1pbiBhbmQgbm90IGlzX2NvbXBsZXRlICkgb3IgaXNfdW5zdWJtaXR0ZWQgKQogICAg
IGNhbl9lZGl0X3NhbXBsZXMgPTNEIHJlcXVlc3Quc2FtcGxlcyBhbmQgKCBpc19hZG1pbiBvciBu
b3QgaXNfY29tcGxldGU9CiApCi0gICAgY2FuX3NlbGVjdF9kYXRhc2V0cyA9M0QgaXNfYWRtaW4g
YW5kIGRpc3BsYXlhYmxlX3NhbXBsZV93aWRnZXRzIGFuZCAoID0KaXNfc3VibWl0dGVkIG9yIGlz
X2NvbXBsZXRlICkKICAgICBjYW5fdHJhbnNmZXJfZGF0YXNldHMgPTNEIGlzX2FkbWluIGFuZCBy
ZXF1ZXN0LnNhbXBsZXMgYW5kIG5vdCByZXF1ZXN0PQouaXNfcmVqZWN0ZWQKICAgICBkaXNwbGF5
X2NoZWNrYm94ZXMgPTNEIG5vdCBhZGRpbmdfbmV3X3NhbXBsZXMgYW5kICggaXNfY29tcGxldGUg
b3IgaXNfPQpyZWplY3RlZCBvciBpc19zdWJtaXR0ZWQgKQogICAgIGRpc3BsYXlfYmFyX2NvZGUg
PTNEIHJlcXVlc3Quc2FtcGxlcyBhbmQgKCBpc19jb21wbGV0ZSBvciBpc19yZWplY3RlZCA9Cm9y
IGlzX3N1Ym1pdHRlZCApCkBAIC00MDcsNyArNDA2LDcgQEAKICAgICAgICAgICAgICAgICAlZWxp
ZiBzYW1wbGU6CiAgICAgICAgICAgICAgICAgICAgIDx0cj48dGQ+Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJWlmIHNhbXBsZS5zdGF0ZSBhbmQgKCBjYW5fc2VsZWN0X2RhdGFzZXRzIG9y
ID0KY2FuX3RyYW5zZmVyX2RhdGFzZXRzICk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JWlmIHNhbXBsZS5zdGF0ZSBhbmQgY2FuX3RyYW5zZmVyX2RhdGFzZXRzOgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjIyBBIHNhbXBsZSB3aWxsIGhhdmUgYSBzdGF0ZSBvbmx5IGFm
dGVyIHQ9CmhlIHJlcXVlc3QgaGFzIGJlZW4gc3VibWl0dGVkLgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8JQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5j
b2RlZF9pZCA9M0QgdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2k9CmQoIHNhbXBsZS5pZCApCkBAIC00
MTksMTQgKzQxOCw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBj
bGFzcz0zRCJ2aWV3LWluZm8iIGhyZWY9M0QiJHtoLnVybD0KX2ZvciggY29udHJvbGxlcj0zRCdy
ZXF1ZXN0c19jb21tb24nLCBhY3Rpb249M0Qndmlld19zYW1wbGUnLCBjbnRybGxlcj0zRGNuPQp0
cmxsZXIsIGlkPTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBzYW1wbGUuaWQgKSApfSI+JHtz
YW1wbGUubmFtZSB8IGh9PC89CmE+PC9kaXY+PGRpdiBwb3B1cG1lbnU9M0Qic2FtcGxlLSR7c2Ft
cGxlLmlkfS1wb3B1cCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlaWYg
Y2FuX3NlbGVjdF9kYXRhc2V0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAlZm9yIGV4dGVybmFsX3NlcnZpY2UgaW4gc2FtcGxlLnJlPQpxdWVzdC50eXBlLmdldF9l
eHRlcm5hbF9zZXJ2aWNlc19mb3JfbWFudWFsX2RhdGFfdHJhbnNmZXIoIHRyYW5zICk6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51X2l0ZW1fbGFiZWwgPTNEICJT
ZWxlYz0KdCBkYXRhc2V0cyB0byB0cmFuc2ZlciB1c2luZyAlcyIgJSBleHRlcm5hbF9zZXJ2aWNl
Lm5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJT4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGNsYXNzPTNE
ImFjdGlvbi1idXR0b24iPQogaHJlZj0zRCIke2gudXJsX2ZvciggY29udHJvbGxlcj0zRCdyZXF1
ZXN0c19hZG1pbicsIGFjdGlvbj0zRCdzZWxlY3RfZGF0YXM9CmV0c190b190cmFuc2ZlcicsIGV4
dGVybmFsX3NlcnZpY2VfaWQ9M0R0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIGV4dGVybmFsXz0K
c2VydmljZS5pZCApLCByZXF1ZXN0X2lkPTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCByZXF1
ZXN0LmlkICksIHNhbXBsZV9pPQpkPTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBzYW1wbGUu
aWQgKSApfSI+JHttZW51X2l0ZW1fbGFiZWx9PC9hPjwvbGk+Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJWVuZGZvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJWVuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlaWYg
c2FtcGxlLmRhdGFzZXRzIGFuZCBsZW4oIHNhbXBsZS5kYT0KdGFzZXRzICkgPiBsZW4oIHRyYW5z
ZmVycmVkX2RhdGFzZXRfZmlsZXMgKSBhbmQgc2FtcGxlLmxpYnJhcnkgYW5kIHNhbXBsZS5mPQpv
bGRlcjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgY2xh
c3M9M0QiYWN0aW9uLWJ1dHRvbiIgaHJlPQpmPTNEIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNE
J3JlcXVlc3RzX2FkbWluJywgYWN0aW9uPTNEJ21hbmFnZV9kYXRhc2V0cyc9Ciwgc2FtcGxlX2lk
PTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBzYW1wbGUuaWQgKSApfSI+TWFuYWdlIHNlbGVj
dGVkIGRhdD0KYXNldHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICVlbGlmIHNhbXBsZS5kYXRhc2V0cyBhbmQgbGVuKCBzYW1wbGUuPQpkYXRhc2V0cyApID0z
RD0zRCBsZW4oIHRyYW5zZmVycmVkX2RhdGFzZXRfZmlsZXMgKToKQEAgLTY2NSw3ICs2NTYsNiBA
QAogICAgICAgICAgICAgaXNfYWRtaW4gPTNEIGNudHJsbGVyID0zRD0zRCAncmVxdWVzdHNfYWRt
aW4nIGFuZCB0cmFucy51c2VyX2k9CnNfYWRtaW4oKQogICAgICAgICAgICAgaXNfY29tcGxldGUg
PTNEIHNhbXBsZS5yZXF1ZXN0LmlzX2NvbXBsZXRlCiAgICAgICAgICAgICBpc19zdWJtaXR0ZWQg
PTNEIHNhbXBsZS5yZXF1ZXN0LmlzX3N1Ym1pdHRlZAotICAgICAgICAgICAgY2FuX3NlbGVjdF9k
YXRhc2V0cyA9M0QgaXNfYWRtaW4gYW5kICggaXNfY29tcGxldGUgb3IgaXNfc3VibWk9CnR0ZWQg
KQogICAgICAgICAgICAgY2FuX3RyYW5zZmVyX2RhdGFzZXRzID0zRCBpc19hZG1pbiBhbmQgc2Ft
cGxlLnVudHJhbnNmZXJyZWRfZGE9CnRhc2V0X2ZpbGVzCiAgICAgICAgICU+CiAgICAgICAgICMj
IFRoZSB0cmFuc2ZlciBzdGF0dXMgc2hvdWxkIHVwZGF0ZSBvbmx5IHdoZW4gdGhlIHJlcXVlc3Qg
aGFzIGJlZT0KbiBzdWJtaXR0ZWQgb3IgY29tcGxldGUKCmRpZmYgLXIgMWYzNDA3MmQ0NzNmODcx
YjkwYmYxYjJiY2M2YTcyYzMyMjQyMDAxZCAtciA3ZGRiNDFkY2IyYjJlNGQzYTZmODM0ZD0KM2Rk
MTE0MjZmMjZmYjc5MDIgdGVtcGxhdGVzL3dlYmFwcHMvZ2FsYXh5L3JlcXVlc3RzL2NvbW1vbi92
aWV3X3JlcXVlc3RfaGlzPQp0b3J5Lm1ha28KLS0tIGEvdGVtcGxhdGVzL3dlYmFwcHMvZ2FsYXh5
L3JlcXVlc3RzL2NvbW1vbi92aWV3X3JlcXVlc3RfaGlzdG9yeS5tYWtvCisrKyBiL3RlbXBsYXRl
cy93ZWJhcHBzL2dhbGF4eS9yZXF1ZXN0cy9jb21tb24vdmlld19yZXF1ZXN0X2hpc3RvcnkubWFr
bwpAQCAtMTEsNyArMTEsNiBAQAogICAgIGNhbl9hZGRfc2FtcGxlcyA9M0QgaXNfdW5zdWJtaXR0
ZWQKICAgICBjYW5fZWRpdF9yZXF1ZXN0ID0zRCAoIGlzX2FkbWluIGFuZCBub3QgaXNfY29tcGxl
dGUgKSBvciBpc191bnN1Ym1pdHRlZAogICAgIGNhbl9yZWplY3QgPTNEIGlzX2FkbWluIGFuZCBp
c19zdWJtaXR0ZWQKLSAgICBjYW5fc2VsZWN0X2RhdGFzZXRzID0zRCBpc19hZG1pbiBhbmQgKCBp
c19jb21wbGV0ZSBvciBpc19zdWJtaXR0ZWQgKQogICAgIGNhbl9zdWJtaXRfcmVxdWVzdCA9M0Qg
cmVxdWVzdC5zYW1wbGVzIGFuZCBpc191bnN1Ym1pdHRlZAogJT4KPTIwCgpkaWZmIC1yIDFmMzQw
NzJkNDczZjg3MWI5MGJmMWIyYmNjNmE3MmMzMjI0MjAwMWQgLXIgN2RkYjQxZGNiMmIyZTRkM2E2
ZjgzNGQ9CjNkZDExNDI2ZjI2ZmI3OTAyIHRlbXBsYXRlcy93ZWJhcHBzL2dhbGF4eS9yZXF1ZXN0
cy9jb21tb24vdmlld19zYW1wbGVfZGF0YT0Kc2V0cy5tYWtvCi0tLSBhL3RlbXBsYXRlcy93ZWJh
cHBzL2dhbGF4eS9yZXF1ZXN0cy9jb21tb24vdmlld19zYW1wbGVfZGF0YXNldHMubWFrbworKysg
Yi90ZW1wbGF0ZXMvd2ViYXBwcy9nYWxheHkvcmVxdWVzdHMvY29tbW9uL3ZpZXdfc2FtcGxlX2Rh
dGFzZXRzLm1ha28KQEAgLTEyLDcgKzEyLDYgQEAKICAgICBpc19hZG1pbiA9M0QgY250cmxsZXIg
PTNEPTNEICdyZXF1ZXN0c19hZG1pbicgYW5kIHRyYW5zLnVzZXJfaXNfYWRtaW4oKQogICAgIGlz
X2NvbXBsZXRlID0zRCBzYW1wbGUucmVxdWVzdC5pc19jb21wbGV0ZQogICAgIGlzX3N1Ym1pdHRl
ZCA9M0Qgc2FtcGxlLnJlcXVlc3QuaXNfc3VibWl0dGVkCi0gICAgY2FuX3NlbGVjdF9kYXRhc2V0
cyA9M0QgaXNfYWRtaW4gYW5kICggaXNfY29tcGxldGUgb3IgaXNfc3VibWl0dGVkICkKICAgICBj
YW5fdHJhbnNmZXJfZGF0YXNldHMgPTNEIGlzX2FkbWluIGFuZCBzYW1wbGUudW50cmFuc2ZlcnJl
ZF9kYXRhc2V0X2ZpPQpsZXMgYW5kIHNhbXBsZS5saWJyYXJ5IGFuZCBzYW1wbGUuZm9sZGVyCiAl
Pgo9MjAKQEAgLTI0LDkgKzIzLDYgQEAKICAgICAlZW5kaWYKICAgICA8bGk+PGEgY2xhc3M9M0Qi
YWN0aW9uLWJ1dHRvbiIgaWQ9M0Qic2FtcGxlLSR7c2FtcGxlLmlkfS1wb3B1cCIgY2xhc3M9Cj0z
RCJtZW51YnV0dG9uIj5EYXRhc2V0IEFjdGlvbnM8L2E+PC9saT48ZGl2IHBvcHVwbWVudT0zRCJz
YW1wbGUtJHtzYW1wbGUuaT0KZH0tcG9wdXAiPgotICAgICAgICAlaWYgY2FuX3NlbGVjdF9kYXRh
c2V0czoKLSAgICAgICAgICAgIDxsaT48YSBjbGFzcz0zRCJhY3Rpb24tYnV0dG9uIiBocmVmPTNE
IiR7aC51cmxfZm9yKCBjb250cm9sbGVyPQo9M0QncmVxdWVzdHNfYWRtaW4nLCBhY3Rpb249M0Qn
c2VsZWN0X2RhdGFzZXRzX3RvX3RyYW5zZmVyJywgY250cmxsZXI9M0RjbnQ9CnJsbGVyLCBleHRl
cm5hbF9zZXJ2aWNlX2lkPTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBleHRlcm5hbF9zZXJ2
aWNlLmlkID0KKSwgcmVxdWVzdF9pZD0zRHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggc2FtcGxl
LnJlcXVlc3QuaWQgKSwgc2FtcGxlX2lkPTNEPQp0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHNh
bXBsZS5pZCApICl9Ij5TZWxlY3QgbW9yZSBkYXRhc2V0czwvYT48L2xpPgotICAgICAgICAlZW5k
aWYKICAgICAgICAgPGxpPjxhIGNsYXNzPTNEImFjdGlvbi1idXR0b24iIGhyZWY9M0QiJHtoLnVy
bF9mb3IoIGNvbnRyb2xsZXI9M0QnPQpsaWJyYXJ5X2NvbW1vbicsIGFjdGlvbj0zRCdicm93c2Vf
bGlicmFyeScsIGNudHJsbGVyPTNEY250cmxsZXIsIGlkPTNEdHJhbnM9Ci5zZWN1cml0eS5lbmNv
ZGVfaWQoIHNhbXBsZS5saWJyYXJ5LmlkICkgKX0iPlZpZXcgdGFyZ2V0IERhdGEgTGlicmFyeTwv
YT48Lz0KbGk+PGxpPjxhIGNsYXNzPTNEImFjdGlvbi1idXR0b24iIGhyZWY9M0QiJHtoLnVybF9m
b3IoIGNvbnRyb2xsZXI9M0QncmVxdWVzPQp0c19jb21tb24nLCBhY3Rpb249M0Qndmlld19yZXF1
ZXN0JywgY250cmxsZXI9M0RjbnRybGxlciwgaWQ9M0R0cmFucy5zZWN1cmk9CnR5LmVuY29kZV9p
ZCggc2FtcGxlLnJlcXVlc3QuaWQgKSApfSI+QnJvd3NlIHRoaXMgcmVxdWVzdDwvYT48L2xpPjwv
ZGl2PgoKZGlmZiAtciAxZjM0MDcyZDQ3M2Y4NzFiOTBiZjFiMmJjYzZhNzJjMzIyNDIwMDFkIC1y
IDdkZGI0MWRjYjJiMmU0ZDNhNmY4MzRkPQozZGQxMTQyNmYyNmZiNzkwMiB0ZW1wbGF0ZXMvd2Vi
YXBwcy90b29sX3NoZWQvcmVwb3NpdG9yeS9jb21tb24ubWFrbwotLS0gYS90ZW1wbGF0ZXMvd2Vi
YXBwcy90b29sX3NoZWQvcmVwb3NpdG9yeS9jb21tb24ubWFrbworKysgYi90ZW1wbGF0ZXMvd2Vi
YXBwcy90b29sX3NoZWQvcmVwb3NpdG9yeS9jb21tb24ubWFrbwpAQCAtMjEsMTQgKzIxLDE0IEBA
CiAgICAgICAgICAgICAgICAgZng6IHsgaGVpZ2h0OiAidG9nZ2xlIiwgZHVyYXRpb246IDIwMCB9
LAogICAgICAgICAgICAgICAgIC8vIGluaXRBamF4IGlzIGhhcmQgdG8gZmFrZSwgc28gd2UgcGFz
cyB0aGUgY2hpbGRyZW4gYXMgb2I9CmplY3QgYXJyYXk6CiAgICAgICAgICAgICAgICAgaW5pdEFq
YXg6IHt1cmw6ICIke2gudXJsX2ZvciggY29udHJvbGxlcj0zRCdyZXBvc2l0b3J5JywgYT0KY3Rp
b249M0Qnb3Blbl9mb2xkZXInICl9IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFU
eXBlOiAianNvbiIsPTIwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IGZvbGRl
cl9wYXRoOiAiJHtyZXBvc2l0b3J5LnJlcG9fcGF0aCggdD0KcmFucy5hcHAgKX0iIH0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogImpzb24iLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YTogeyBmb2xkZXJfcGF0aDogIiR7cmVwb3NpdG9yeS5yZXBvX3BhdGgo
IHQ9CnJhbnMuYXBwICl9IiwgcmVwb3NpdG9yeV9pZDogIiR7dHJhbnMuc2VjdXJpdHkuZW5jb2Rl
X2lkKCByZXBvc2l0b3J5LmlkICl9Ij0KICB9LAogICAgICAgICAgICAgICAgIH0sCiAgICAgICAg
ICAgICAgICAgb25MYXp5UmVhZDogZnVuY3Rpb24oZHRub2RlKXsKICAgICAgICAgICAgICAgICAg
ICAgZHRub2RlLmFwcGVuZEFqYXgoewotICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAiJHto
LnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmVwb3NpdG9yeScsIGFjdGk9Cm9uPTNEJ29wZW5fZm9s
ZGVyJyApfSIsPTIwCisgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICIke2gudXJsX2Zvcigg
Y29udHJvbGxlcj0zRCdyZXBvc2l0b3J5JywgYWN0aT0Kb249M0Qnb3Blbl9mb2xkZXInICl9IiwK
ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAianNvbiIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBkYXRhOiB7IGZvbGRlcl9wYXRoOiBkdG5vZGUuZGF0YS5rZXkgfSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgZm9sZGVyX3BhdGg6IGR0bm9kZS5kYXRhLmtleSwg
cmVwb3NpdG9yeV9pPQpkOiAiJHt0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHJlcG9zaXRvcnku
aWQgKX0iICB9LAogICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICB9LAog
ICAgICAgICAgICAgICAgIG9uU2VsZWN0OiBmdW5jdGlvbihzZWxlY3QsIGR0bm9kZSkgewpAQCAt
NjEsNyArNjEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICJQT1NUIiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICIke2gudXJsX2ZvciggY29udHJvbGxl
cj0zRCdyZXBvc2l0b3J5JywgPQphY3Rpb249M0QnZ2V0X2ZpbGVfY29udGVudHMnICl9IiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogImpzb24iLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGE6IHsgZmlsZV9wYXRoOiBzZWxlY3RlZF92YWx1ZSB9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgZmlsZV9wYXRoOiBzZWxlY3RlZF92YWx1
ZSwgcmVwb3NpdG9yeV89CmlkOiAiJHt0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHJlcG9zaXRv
cnkuaWQgKX0iIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA6IGZ1bmN0
aW9uICggZGF0YSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbC5odG1s
KCAnPGxhYmVsPicrZGF0YSsnPC9sYWJlbD4nICkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRz
LzZjMmZkN2JkZGM2Yy8KQ2hhbmdlc2V0OiAgIDZjMmZkN2JkZGM2YwpCcmFuY2g6ICAgICAgcmVs
ZWFzZV8xNS4wNQpVc2VyOiAgICAgICAgbmF0ZWZvbwpEYXRlOiAgICAgICAgMjAxNi0wMi0yNCAy
MDo1NDo1MSswMDowMApTdW1tYXJ5OiAgICAgUmVsZWFzZSAxNS4wNS4yCkFmZmVjdGVkICM6ICAz
MSBmaWxlcwoKZGlmZiAtciAyMGQ1YTIxYWRkOWFiNDVkOWM0YzVjMjZkNjg2OTllNzcxMzEwMGRk
IC1yIDZjMmZkN2JkZGM2YzFjNGU4YTY0MDkzPQpmM2ZjNGM0MzcwZjUxNWI0ZSBsaWIvZ2FsYXh5
L2V4Y2VwdGlvbnMvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4eS9leGNlcHRpb25zL19faW5p
dF9fLnB5CisrKyBiL2xpYi9nYWxheHkvZXhjZXB0aW9ucy9fX2luaXRfXy5weQpAQCAtNzEsNiAr
NzEsMTEgQEAKICAgICBlcnJfY29kZSA9M0QgZXJyb3JfY29kZXMuTUFMRk9STUVEX0lECj0yMAo9
MjAKK2NsYXNzIE1hbGZvcm1lZENvbnRlbnRzKCBNZXNzYWdlRXhjZXB0aW9uICk6CisgICAgc3Rh
dHVzX2NvZGUgPTNEIDQwMAorICAgIGVycl9jb2RlID0zRCBlcnJvcl9jb2Rlcy5NQUxGT1JNRURf
Q09OVEVOVFMKKworCiBjbGFzcyBVbmtub3duQ29udGVudHNUeXBlKCBNZXNzYWdlRXhjZXB0aW9u
ICk6CiAgICAgc3RhdHVzX2NvZGUgPTNEIDQwMAogICAgIGVycl9jb2RlID0zRCBlcnJvcl9jb2Rl
cy5VTktOT1dOX0NPTlRFTlRTX1RZUEUKCmRpZmYgLXIgMjBkNWEyMWFkZDlhYjQ1ZDljNGM1YzI2
ZDY4Njk5ZTc3MTMxMDBkZCAtciA2YzJmZDdiZGRjNmMxYzRlOGE2NDA5Mz0KZjNmYzRjNDM3MGY1
MTViNGUgbGliL2dhbGF4eS9leGNlcHRpb25zL2Vycm9yX2NvZGVzLmpzb24KLS0tIGEvbGliL2dh
bGF4eS9leGNlcHRpb25zL2Vycm9yX2NvZGVzLmpzb24KKysrIGIvbGliL2dhbGF4eS9leGNlcHRp
b25zL2Vycm9yX2NvZGVzLmpzb24KQEAgLTYxLDEwICs2MSwxNSBAQAogICAgIH0sCiAgICB7CiAg
ICAgIm5hbWUiOiAiVVNFUl9UT09MX01FVEFfUEFSQU1FVEVSX1BST0JMRU0iLAotICAgICJjb2Rl
IjogNDAwMDExLAorICAgICJjb2RlIjogNDAwMDEyLAogICAgICJtZXNzYWdlIjogIlN1cHBsaWVk
IGluY29ycmVjdCBvciBpbmNvbXBhdGlibGUgdG9vbCBtZXRhIHBhcmFtZXRlcnMuIgogICAgfSwK
ICAgIHsKKyAgICAibmFtZSI6ICJNQUxGT1JNRURfQ09OVEVOVFMiLAorICAgICJjb2RlIjogNDAw
MDEzLAorICAgICJtZXNzYWdlIjogIlRoZSBjb250ZW50cyBvZiB0aGUgcmVxdWVzdCBhcmUgbWFs
Zm9ybWVkLiIKKyAgICB9LAorICAgewogICAgICJuYW1lIjogIlVTRVJfQVVUSEVOVElDQVRJT05f
RkFJTEVEIiwKICAgICAiY29kZSI6IDQwMTAwMSwKICAgICAibWVzc2FnZSI6ICJBdXRoZW50aWNh
dGlvbiBmYWlsZWQsIGludmFsaWQgY3JlZGVudGlhbHMgc3VwcGxpZWQuIgoKZGlmZiAtciAyMGQ1
YTIxYWRkOWFiNDVkOWM0YzVjMjZkNjg2OTllNzcxMzEwMGRkIC1yIDZjMmZkN2JkZGM2YzFjNGU4
YTY0MDkzPQpmM2ZjNGM0MzcwZjUxNWI0ZSBsaWIvZ2FsYXh5L21vZGVsL19faW5pdF9fLnB5Ci0t
LSBhL2xpYi9nYWxheHkvbW9kZWwvX19pbml0X18ucHkKKysrIGIvbGliL2dhbGF4eS9tb2RlbC9f
X2luaXRfXy5weQpAQCAtNSwxNSArNSwxMSBAQAogdGhlIHJlbGF0aW9uc2hpcCBjYXJkaW5hbGl0
aWVzIGFyZSBvYnZpb3VzIChlLmcuIHByZWZlciBEYXRhc2V0IHRvIERhdGEpCiAiIiIKPTIwCi1m
cm9tIGdhbGF4eSBpbXBvcnQgZWdncwotZWdncy5yZXF1aXJlKCJwZXhwZWN0IikKLQogaW1wb3J0
IGNvZGVjcwogaW1wb3J0IGVycm5vCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9wZXJhdG9yCiBp
bXBvcnQgb3MKLWltcG9ydCBwZXhwZWN0CiBpbXBvcnQganNvbgogaW1wb3J0IHNvY2tldAogaW1w
b3J0IHRpbWUKQEAgLTE0MzQsMTMgKzE0MzAsMTEgQEAKICAgICBkZWYgZ2V0X3RvdGFsX3NpemUo
IHNlbGYgKToKICAgICAgICAgaWYgc2VsZi50b3RhbF9zaXplIGlzIG5vdCBOb25lOgogICAgICAg
ICAgICAgcmV0dXJuIHNlbGYudG90YWxfc2l6ZQotICAgICAgICBpZiBzZWxmLmZpbGVfc2l6ZToK
LSAgICAgICAgICAgICMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBzZXQgaWYgdW5zZXQK
LSAgICAgICAgICAgIHNlbGYuc2V0X3RvdGFsX3NpemUoKQotICAgICAgICAgICAgZGJfc2Vzc2lv
biA9M0Qgb2JqZWN0X3Nlc3Npb24oIHNlbGYgKQotICAgICAgICAgICAgZGJfc2Vzc2lvbi5mbHVz
aCgpCi0gICAgICAgICAgICByZXR1cm4gc2VsZi50b3RhbF9zaXplCi0gICAgICAgIHJldHVybiAw
CisgICAgICAgICMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBzZXQgaWYgdW5zZXQKKyAg
ICAgICAgc2VsZi5zZXRfdG90YWxfc2l6ZSgpCisgICAgICAgIGRiX3Nlc3Npb24gPTNEIG9iamVj
dF9zZXNzaW9uKCBzZWxmICkKKyAgICAgICAgZGJfc2Vzc2lvbi5mbHVzaCgpCisgICAgICAgIHJl
dHVybiBzZWxmLnRvdGFsX3NpemUKICAgICBkZWYgc2V0X3RvdGFsX3NpemUoIHNlbGYgKToKICAg
ICAgICAgaWYgc2VsZi5maWxlX3NpemUgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuc2V0X3Np
emUoKQpAQCAtMzkzOSwyNyArMzkzMyw2IEBACiAgICAgICAgICAgICAgICAgdW50cmFuc2ZlcnJl
ZF9kYXRhc2V0cy5hcHBlbmQoIGRhdGFzZXQgKQogICAgICAgICByZXR1cm4gdW50cmFuc2ZlcnJl
ZF9kYXRhc2V0cwo9MjAKLSAgICBkZWYgZ2V0X3VudHJhbnNmZXJyZWRfZGF0YXNldF9zaXplKCBz
ZWxmLCBmaWxlcGF0aCwgc2NwX2NvbmZpZ3MgKToKLSAgICAgICAgZGVmIHByaW50X3RpY2tzKCBk
ICk6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVycm9yX21zZyA9M0QgJ0Vycm9yIGVuY291
bnRlcmVkIGluIGRldGVybWluaW5nIHRoZSBmaWxlIHNpemUgb2YgJT0KcyBvbiB0aGUgZXh0ZXJu
YWxfc2VydmljZS4nICUgZmlsZXBhdGgKLSAgICAgICAgaWYgbm90IHNjcF9jb25maWdzWydob3N0
J10gb3Igbm90IHNjcF9jb25maWdzWyd1c2VyX25hbWUnXSBvciBub3QgPQpzY3BfY29uZmlnc1sn
cGFzc3dvcmQnXToKLSAgICAgICAgICAgIHJldHVybiBlcnJvcl9tc2cKLSAgICAgICAgbG9naW5f
c3RyID0zRCAnJXNAJXMnICUgKCBzY3BfY29uZmlnc1sndXNlcl9uYW1lJ10sIHNjcF9jb25maWdz
WydoPQpvc3QnXSApCi0gICAgICAgIGNtZCAgPTNEICdzc2ggJXMgImR1IC1zaCBcJyVzXCciJyAl
ICggbG9naW5fc3RyLCBmaWxlcGF0aCApCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG91dHB1
dCA9M0QgcGV4cGVjdC5ydW4oIGNtZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBldmVudHM9M0R7ICcuc3N3b3JkOionOiBzY3BfY29uZmlnc1sncGFzPQpzd29yZCddKydcclxu
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXhwZWN0LlRJ
TUVPVVQ6cHJpbnRfdGlja3N9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRp
bWVvdXQ9M0QxMCApCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICByZXR1
cm4gZXJyb3JfbXNnCi0gICAgICAgICMgY2xlYW51cCB0aGUgb3V0cHV0IHRvIGdldCBqdXN0IHRo
ZSBmaWxlIHNpemUKLSAgICAgICAgcmV0dXJuICBvdXRwdXQucmVwbGFjZSggZmlsZXBhdGgsICcn
IClcCi0gICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoICdQYXNzd29yZDonLCAnJyApXAot
ICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKCAiJ3MgcGFzc3dvcmQ6IiwgJycgKVwKLSAg
ICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSggbG9naW5fc3RyLCAnJyApXAotICAgICAgICAg
ICAgICAgICAgICAgIC5zdHJpcCgpCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIHJ1bl9kZXRhaWxz
KCBzZWxmICk6CiAgICAgICAgICMgc2VsZi5ydW5zIGlzIGEgbGlzdCBvZiBTYW1wbGVSdW5Bc3Nv
Y2lhdGlvbnMgb3JkZXJlZCBkZXNjZW5kaW5nID0Kb24gdXBkYXRlX3RpbWUuCgpkaWZmIC1yIDIw
ZDVhMjFhZGQ5YWI0NWQ5YzRjNWMyNmQ2ODY5OWU3NzEzMTAwZGQgLXIgNmMyZmQ3YmRkYzZjMWM0
ZThhNjQwOTM9CmYzZmM0YzQzNzBmNTE1YjRlIGxpYi9nYWxheHkvb2JqZWN0c3RvcmUvX19pbml0
X18ucHkKLS0tIGEvbGliL2dhbGF4eS9vYmplY3RzdG9yZS9fX2luaXRfXy5weQorKysgYi9saWIv
Z2FsYXh5L29iamVjdHN0b3JlL19faW5pdF9fLnB5CkBAIC0xMSw3ICsxMSw3IEBACiBpbXBvcnQg
dGhyZWFkaW5nCiBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFRyZWUKPTIwCi1mcm9tIGdh
bGF4eS51dGlsIGltcG9ydCB1bWFza19maXhfcGVybXMsIGZvcmNlX3N5bWxpbmsKK2Zyb20gZ2Fs
YXh5LnV0aWwgaW1wb3J0IHVtYXNrX2ZpeF9wZXJtcywgZm9yY2Vfc3ltbGluaywgc2FmZV9yZWxw
YXRoCiBmcm9tIGdhbGF4eS5leGNlcHRpb25zIGltcG9ydCBPYmplY3RJbnZhbGlkLCBPYmplY3RO
b3RGb3VuZAogZnJvbSBnYWxheHkudXRpbC5zbGVlcGVyIGltcG9ydCBTbGVlcGVyCiBmcm9tIGdh
bGF4eS51dGlsLmRpcmVjdG9yeV9oYXNoIGltcG9ydCBkaXJlY3RvcnlfaGFzaF9pZApAQCAtMjUy
LDcgKzI1MiwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjb21wb3NlZCBkaXJl
Y3Rvcnkgc3RydWN0dXJlIGRvZXMgbm90IGluY2x1ZGU9CiBhIGhhc2ggaWQKICAgICAgICAgICAg
ICAgICAgICAgICAgICAoZS5nLiwgL2ZpbGVzL2RhdGFzZXRfMTAuZGF0IChvbGQpIHZzLiAvZmls
ZXMvMDAwPQovZGF0YXNldF8xMC5kYXQgKG5ldykpCiAgICAgICAgICIiIgotICAgICAgICBiYXNl
ID0zRCBzZWxmLmV4dHJhX2RpcnMuZ2V0KGJhc2VfZGlyLCBzZWxmLmZpbGVfcGF0aCkKKyAgICAg
ICAgYmFzZSA9M0Qgb3MucGF0aC5hYnNwYXRoKHNlbGYuZXh0cmFfZGlycy5nZXQoYmFzZV9kaXIs
IHNlbGYuZmlsZV9wPQphdGgpKQorICAgICAgICAjIGV4dHJhX2RpciBzaG91bGQgbmV2ZXIgYmUg
Y29uc3RydWN0ZWQgZnJvbSBwcm92aWRlZCBkYXRhIGJ1dCBqdXN0CisgICAgICAgICMgbWFrZSBz
dXJlIHRoZXJlIGFyZSBubyBzaGVuYW5uaWdhbnMgYWZvb3QKKyAgICAgICAgaWYgZXh0cmFfZGly
IGFuZCBleHRyYV9kaXIgIT0zRCBvcy5wYXRoLm5vcm1wYXRoKGV4dHJhX2Rpcik6CisgICAgICAg
ICAgICBsb2cud2FybmluZygnZXh0cmFfZGlyIGlzIG5vdCBub3JtYWxpemVkOiAlcycsIGV4dHJh
X2RpcikKKyAgICAgICAgICAgIHJhaXNlIE9iamVjdEludmFsaWQoIlRoZSByZXF1ZXN0ZWQgb2Jq
ZWN0IGlzIGludmFsaWQiKQorICAgICAgICAjIGVuc3VyZSB0aGF0IGFueSBwYXJlbnQgZGlyZWN0
b3J5IHJlZmVyZW5jZXMgaW4gYWx0X25hbWUgd291bGQgbm90CisgICAgICAgICMgcmVzdWx0IGlu
IGEgcGF0aCBub3QgY29udGFpbmVkIGluIHRoZSBkaXJlY3RvcnkgcGF0aCBjb25zdHJ1Y3RlZD0K
IGhlcmUKKyAgICAgICAgaWYgYWx0X25hbWUgYW5kIG5vdCBzYWZlX3JlbHBhdGgoYWx0X25hbWUp
OgorICAgICAgICAgICAgbG9nLndhcm5pbmcoJ2FsdF9uYW1lIHdvdWxkIGxvY2F0ZSBwYXRoIG91
dHNpZGUgZGlyOiAlcycsIGFsdF89Cm5hbWUpCisgICAgICAgICAgICByYWlzZSBPYmplY3RJbnZh
bGlkKCJUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBpbnZhbGlkIikKICAgICAgICAgaWYgb2xkX3N0
eWxlOgogICAgICAgICAgICAgaWYgZXh0cmFfZGlyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAg
ICAgIHBhdGggPTNEIG9zLnBhdGguam9pbihiYXNlLCBleHRyYV9kaXIpCkBAIC02MTksOSArNjI5
LDEwIEBACiAgICAgZWxpZiBzdG9yZSA9M0Q9M0QgJ2lyb2RzJzoKICAgICAgICAgZnJvbSAucm9k
cyBpbXBvcnQgSVJPRFNPYmplY3RTdG9yZQogICAgICAgICByZXR1cm4gSVJPRFNPYmplY3RTdG9y
ZShjb25maWc9M0Rjb25maWcsIGNvbmZpZ194bWw9M0Rjb25maWdfeG1sKQotICAgIGVsaWYgc3Rv
cmUgPTNEPTNEICdwdWxzYXInOgotICAgICAgICBmcm9tIC5wdWxzYXIgaW1wb3J0IFB1bHNhck9i
amVjdFN0b3JlCi0gICAgICAgIHJldHVybiBQdWxzYXJPYmplY3RTdG9yZShjb25maWc9M0Rjb25m
aWcsIGNvbmZpZ194bWw9M0Rjb25maWdfeG1sKQorICAgICMgRGlzYWJsZSB0aGUgUHVsc2FyIG9i
amVjdCBzdG9yZSBmb3Igbm93IHVudGlsIGl0IHJlY2VpdmVzIHNvbWUgYXR0ZW49CnRpb24KKyAg
ICAjIGVsaWYgc3RvcmUgPTNEPTNEICdwdWxzYXInOgorICAgICMgICAgZnJvbSAucHVsc2FyIGlt
cG9ydCBQdWxzYXJPYmplY3RTdG9yZQorICAgICMgICAgcmV0dXJuIFB1bHNhck9iamVjdFN0b3Jl
KGNvbmZpZz0zRGNvbmZpZywgY29uZmlnX3htbD0zRGNvbmZpZ194bWwpCiAgICAgZWxzZToKICAg
ICAgICAgbG9nLmVycm9yKCJVbnJlY29nbml6ZWQgb2JqZWN0IHN0b3JlIGRlZmluaXRpb246IHsw
fSIuZm9ybWF0KHN0b3JlPQopKQo9MjAKCmRpZmYgLXIgMjBkNWEyMWFkZDlhYjQ1ZDljNGM1YzI2
ZDY4Njk5ZTc3MTMxMDBkZCAtciA2YzJmZDdiZGRjNmMxYzRlOGE2NDA5Mz0KZjNmYzRjNDM3MGY1
MTViNGUgbGliL2dhbGF4eS9vYmplY3RzdG9yZS9yb2RzLnB5Ci0tLSBhL2xpYi9nYWxheHkvb2Jq
ZWN0c3RvcmUvcm9kcy5weQorKysgYi9saWIvZ2FsYXh5L29iamVjdHN0b3JlL3JvZHMucHkKQEAg
LTEyLDcgKzEyLDggQEAKIGZyb20gcG9zaXhwYXRoIGltcG9ydCBiYXNlbmFtZSBhcyBwYXRoX2Jh
c2VuYW1lCiBmcm9tIHBvc2l4cGF0aCBpbXBvcnQgZGlybmFtZSBhcyBwYXRoX2Rpcm5hbWUKPTIw
Ci1mcm9tIGdhbGF4eS5leGNlcHRpb25zIGltcG9ydCBPYmplY3ROb3RGb3VuZAorZnJvbSBnYWxh
eHkuZXhjZXB0aW9ucyBpbXBvcnQgT2JqZWN0Tm90Rm91bmQsIE9iamVjdEludmFsaWQKK2Zyb20g
Z2FsYXh5LnV0aWwgaW1wb3J0IHNhZmVfcmVscGF0aAogZnJvbSAuLm9iamVjdHN0b3JlIGltcG9y
dCBEaXNrT2JqZWN0U3RvcmUsIE9iamVjdFN0b3JlLCBsb2NhbF9leHRyYV9kaXJzCj0yMAogdHJ5
OgpAQCAtNzEsNiArNzIsMjAgQEAKICAgICAgICAgbG9nLmluZm8oICJpUk9EUyBkYXRhIGZvciB0
aGlzIGluc3RhbmNlIHdpbGwgYmUgc3RvcmVkIGluIGNvbGxlY3RpPQpvbjogJXMsIHJlc291cmNl
OiAlcyIsIHNlbGYucm9vdF9jb2xsZWN0aW9uX3BhdGgsIHNlbGYuZGVmYXVsdF9yZXNvdXJjZSAp
Cj0yMAogICAgIGRlZiBfX2dldF9yb2RzX3BhdGgoIHNlbGYsIG9iaiwgYmFzZV9kaXI9M0ROb25l
LCBkaXJfb25seT0zREZhbHNlLCBleHQ9CnJhX2Rpcj0zRE5vbmUsIGV4dHJhX2Rpcl9hdF9yb290
PTNERmFsc2UsIGFsdF9uYW1lPTNETm9uZSwgc3RyaXBfZGF0PTNEVHJ1ZT0KLCAqKmt3YXJncyAp
OgorICAgICAgICAjIGV4dHJhX2RpciBzaG91bGQgbmV2ZXIgYmUgY29uc3RydWN0ZWQgZnJvbSBw
cm92aWRlZCBkYXRhIGJ1dCBqdXN0CisgICAgICAgICMgbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBz
aGVuYW5uaWdhbnMgYWZvb3QKKyAgICAgICAgaWYgZXh0cmFfZGlyIGFuZCBleHRyYV9kaXIgIT0z
RCBvcy5wYXRoLm5vcm1wYXRoKGV4dHJhX2Rpcik6CisgICAgICAgICAgICBsb2cud2FybmluZygn
ZXh0cmFfZGlyIGlzIG5vdCBub3JtYWxpemVkOiAlcycsIGV4dHJhX2RpcikKKyAgICAgICAgICAg
IHJhaXNlIE9iamVjdEludmFsaWQoIlRoZSByZXF1ZXN0ZWQgb2JqZWN0IGlzIGludmFsaWQiKQor
ICAgICAgICAjIGVuc3VyZSB0aGF0IGFueSBwYXJlbnQgZGlyZWN0b3J5IHJlZmVyZW5jZXMgaW4g
YWx0X25hbWUgd291bGQgbm90CisgICAgICAgICMgcmVzdWx0IGluIGEgcGF0aCBub3QgY29udGFp
bmVkIGluIHRoZSBkaXJlY3RvcnkgcGF0aCBjb25zdHJ1Y3RlZD0KIGhlcmUKKyAgICAgICAgaWYg
YWx0X25hbWU6CisgICAgICAgICAgICBpZiBub3Qgc2FmZV9yZWxwYXRoKGFsdF9uYW1lKToKKyAg
ICAgICAgICAgICAgICBsb2cud2FybmluZygnYWx0X25hbWUgd291bGQgbG9jYXRlIHBhdGggb3V0
c2lkZSBkaXI6ICVzJywgPQphbHRfbmFtZSkKKyAgICAgICAgICAgICAgICByYWlzZSBPYmplY3RJ
bnZhbGlkKCJUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBpbnZhbGlkIikKKyAgICAgICAgICAgICMg
YWx0X25hbWUgY2FuIGNvbnRhaW4gcGFyZW50IGRpcmVjdG9yeSByZWZlcmVuY2VzLCBidXQgaVJP
RFMgPQp3aWxsCisgICAgICAgICAgICAjIG5vdCBmb2xsb3cgdGhlbSwgc28gaWYgdGhleSBhcmUg
dmFsaWQgd2Ugbm9ybWFsaXplIHRoZW0gb3V0CisgICAgICAgICAgICBhbHRfbmFtZSA9M0Qgb3Mu
cGF0aC5ub3JtcGF0aChhbHRfbmFtZSkKICAgICAgICAgcGF0aCA9M0QgIiIKICAgICAgICAgaWYg
ZXh0cmFfZGlyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcGF0aCA9M0QgZXh0cmFfZGlyCgpk
aWZmIC1yIDIwZDVhMjFhZGQ5YWI0NWQ5YzRjNWMyNmQ2ODY5OWU3NzEzMTAwZGQgLXIgNmMyZmQ3
YmRkYzZjMWM0ZThhNjQwOTM9CmYzZmM0YzQzNzBmNTE1YjRlIGxpYi9nYWxheHkvb2JqZWN0c3Rv
cmUvczMucHkKLS0tIGEvbGliL2dhbGF4eS9vYmplY3RzdG9yZS9zMy5weQorKysgYi9saWIvZ2Fs
YXh5L29iamVjdHN0b3JlL3MzLnB5CkBAIC0xMiw4ICsxMiw4IEBACj0yMAogZnJvbSBkYXRldGlt
ZSBpbXBvcnQgZGF0ZXRpbWUKPTIwCi1mcm9tIGdhbGF4eS5leGNlcHRpb25zIGltcG9ydCBPYmpl
Y3ROb3RGb3VuZAotZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgc3RyaW5nX2FzX2Jvb2wsIHVtYXNr
X2ZpeF9wZXJtcworZnJvbSBnYWxheHkuZXhjZXB0aW9ucyBpbXBvcnQgT2JqZWN0Tm90Rm91bmQs
IE9iamVjdEludmFsaWQKK2Zyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IHN0cmluZ19hc19ib29sLCB1
bWFza19maXhfcGVybXMsIHNhZmVfcmVscGF0aAogZnJvbSBnYWxheHkudXRpbC5kaXJlY3Rvcnlf
aGFzaCBpbXBvcnQgZGlyZWN0b3J5X2hhc2hfaWQKIGZyb20gZ2FsYXh5LnV0aWwuc2xlZXBlciBp
bXBvcnQgU2xlZXBlcgogZnJvbSAuczNfbXVsdGlwYXJ0X3VwbG9hZCBpbXBvcnQgbXVsdGlwYXJ0
X3VwbG9hZApAQCAtMjAxLDYgKzIwMSwyMCBAQAogICAgICAgICAgICAgICAgIHVtYXNrX2ZpeF9w
ZXJtcyggcGF0aCwgc2VsZi5jb25maWcudW1hc2ssIDA2NjYsIHNlbGYuY29uZmk9CmcuZ2lkICkK
PTIwCiAgICAgZGVmIF9jb25zdHJ1Y3RfcGF0aChzZWxmLCBvYmosIGRpcl9vbmx5PTNETm9uZSwg
ZXh0cmFfZGlyPTNETm9uZSwgZXh0cj0KYV9kaXJfYXRfcm9vdD0zREZhbHNlLCBhbHRfbmFtZT0z
RE5vbmUsICoqa3dhcmdzKToKKyAgICAgICAgIyBleHRyYV9kaXIgc2hvdWxkIG5ldmVyIGJlIGNv
bnN0cnVjdGVkIGZyb20gcHJvdmlkZWQgZGF0YSBidXQganVzdAorICAgICAgICAjIG1ha2Ugc3Vy
ZSB0aGVyZSBhcmUgbm8gc2hlbmFubmlnYW5zIGFmb290CisgICAgICAgIGlmIGV4dHJhX2RpciBh
bmQgZXh0cmFfZGlyICE9M0Qgb3MucGF0aC5ub3JtcGF0aChleHRyYV9kaXIpOgorICAgICAgICAg
ICAgbG9nLndhcm5pbmcoJ2V4dHJhX2RpciBpcyBub3Qgbm9ybWFsaXplZDogJXMnLCBleHRyYV9k
aXIpCisgICAgICAgICAgICByYWlzZSBPYmplY3RJbnZhbGlkKCJUaGUgcmVxdWVzdGVkIG9iamVj
dCBpcyBpbnZhbGlkIikKKyAgICAgICAgIyBlbnN1cmUgdGhhdCBhbnkgcGFyZW50IGRpcmVjdG9y
eSByZWZlcmVuY2VzIGluIGFsdF9uYW1lIHdvdWxkIG5vdAorICAgICAgICAjIHJlc3VsdCBpbiBh
IHBhdGggbm90IGNvbnRhaW5lZCBpbiB0aGUgZGlyZWN0b3J5IHBhdGggY29uc3RydWN0ZWQ9CiBo
ZXJlCisgICAgICAgIGlmIGFsdF9uYW1lOgorICAgICAgICAgICAgaWYgbm90IHNhZmVfcmVscGF0
aChhbHRfbmFtZSk6CisgICAgICAgICAgICAgICAgbG9nLndhcm5pbmcoJ2FsdF9uYW1lIHdvdWxk
IGxvY2F0ZSBwYXRoIG91dHNpZGUgZGlyOiAlcycsID0KYWx0X25hbWUpCisgICAgICAgICAgICAg
ICAgcmFpc2UgT2JqZWN0SW52YWxpZCgiVGhlIHJlcXVlc3RlZCBvYmplY3QgaXMgaW52YWxpZCIp
CisgICAgICAgICAgICAjIGFsdF9uYW1lIGNhbiBjb250YWluIHBhcmVudCBkaXJlY3RvcnkgcmVm
ZXJlbmNlcywgYnV0IFMzIHdpbD0KbCBub3QKKyAgICAgICAgICAgICMgZm9sbG93IHRoZW0sIHNv
IGlmIHRoZXkgYXJlIHZhbGlkIHdlIG5vcm1hbGl6ZSB0aGVtIG91dAorICAgICAgICAgICAgYWx0
X25hbWUgPTNEIG9zLnBhdGgubm9ybXBhdGgoYWx0X25hbWUpCiAgICAgICAgIHJlbF9wYXRoID0z
RCBvcy5wYXRoLmpvaW4oKmRpcmVjdG9yeV9oYXNoX2lkKG9iai5pZCkpCiAgICAgICAgIGlmIGV4
dHJhX2RpciBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGlmIGV4dHJhX2Rpcl9hdF9yb290OgoK
ZGlmZiAtciAyMGQ1YTIxYWRkOWFiNDVkOWM0YzVjMjZkNjg2OTllNzcxMzEwMGRkIC1yIDZjMmZk
N2JkZGM2YzFjNGU4YTY0MDkzPQpmM2ZjNGM0MzcwZjUxNWI0ZSBsaWIvZ2FsYXh5L3Rvb2xzL2lt
cF9leHAvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4eS90b29scy9pbXBfZXhwL19faW5pdF9f
LnB5CisrKyBiL2xpYi9nYWxheHkvdG9vbHMvaW1wX2V4cC9fX2luaXRfXy5weQpAQCAtNSw2ICs1
LDcgQEAKIGltcG9ydCBqc29uCiBpbXBvcnQgZGF0ZXRpbWUKIGZyb20gZ2FsYXh5IGltcG9ydCBt
b2RlbAorZnJvbSBnYWxheHkuZXhjZXB0aW9ucyBpbXBvcnQgTWFsZm9ybWVkQ29udGVudHMKIGZy
b20gZ2FsYXh5Lm1vZGVsLml0ZW1fYXR0cnMgaW1wb3J0IFVzZXNBbm5vdGF0aW9ucwogZnJvbSBn
YWxheHkubW9kZWwub3JtIGltcG9ydCBlYWdlcmxvYWQsIGVhZ2VybG9hZF9hbGwKIGZyb20gZ2Fs
YXh5LnRvb2xzLnBhcmFtZXRlcnMuYmFzaWMgaW1wb3J0IFVudmFsaWRhdGVkVmFsdWUKQEAgLTE5
Miw5ICsxOTMsOSBAQAogICAgICAgICAgICAgICAgICAgICBpZiBkYXRhc2V0X2F0dHJzLmdldCgn
ZXhwb3J0ZWQnLCBUcnVlKSBpcyBUcnVlOgogICAgICAgICAgICAgICAgICAgICAgICAgIyBEbyBz
ZWN1cml0eSBjaGVjayBhbmQgbW92ZS9jb3B5IGRhdGFzZXQgZGF0YS4KICAgICAgICAgICAgICAg
ICAgICAgICAgIHRlbXBfZGF0YXNldF9maWxlX25hbWUgPTNEIFwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvcy5wYXRoLmFic3BhdGgoIG9zLnBhdGguam9pbiggYXJjaGl2ZV9kaXIsIGRh
PQp0YXNldF9hdHRyc1snZmlsZV9uYW1lJ10gKSApCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3MucGF0aC5yZWFscGF0aCggb3MucGF0aC5hYnNwYXRoKCBvcy5wYXRoLmpvaT0KbiggYXJj
aGl2ZV9kaXIsIGRhdGFzZXRfYXR0cnNbJ2ZpbGVfbmFtZSddICkgKSApCiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiBub3QgZmlsZV9pbl9kaXIoIHRlbXBfZGF0YXNldF9maWxlX25hbWUsIG9z
LnBhdD0KaC5qb2luKCBhcmNoaXZlX2RpciwgImRhdGFzZXRzIiApICk6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCAiSW52YWxpZCBkYXRhc2V0IHBhdGg6ICVz
IiAlID0KdGVtcF9kYXRhc2V0X2ZpbGVfbmFtZSApCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmFpc2UgTWFsZm9ybWVkQ29udGVudHMoICJJbnZhbGlkIGRhdGFzZXQgcGF0aD0KOiAlcyIg
JSB0ZW1wX2RhdGFzZXRfZmlsZV9uYW1lICkKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRh
dGFzZXRzX3VzYWdlX2NvdW50c1sgdGVtcF9kYXRhc2V0X2ZpbGVfbmFtZSBdPQogPTNEPTNEIDE6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2h1dGlsLm1vdmUoIHRlbXBfZGF0YXNldF9m
aWxlX25hbWUsIGhkYS5maWxlXz0KbmFtZSApCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
OgpAQCAtMzE2LDYgKzMxNyw3IEBACiAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgog
ICAgICAgICAgICAgICAgIGppaGEuam9iLnN0ZGVyciArPTNEICJFcnJvciBjbGVhbmluZyB1cCBo
aXN0b3J5IGltcG9ydCBqb2I9CjogJXMiICUgZQogICAgICAgICAgICAgICAgIHNlbGYuc2Ffc2Vz
c2lvbi5mbHVzaCgpCisgICAgICAgICAgICAgICAgcmFpc2UKPTIwCj0yMAogY2xhc3MgSm9iRXhw
b3J0SGlzdG9yeUFyY2hpdmVXcmFwcGVyKCBvYmplY3QsIFVzZXNBbm5vdGF0aW9ucyApOgoKZGlm
ZiAtciAyMGQ1YTIxYWRkOWFiNDVkOWM0YzVjMjZkNjg2OTllNzcxMzEwMGRkIC1yIDZjMmZkN2Jk
ZGM2YzFjNGU4YTY0MDkzPQpmM2ZjNGM0MzcwZjUxNWI0ZSBsaWIvZ2FsYXh5L3Rvb2xzL2ltcF9l
eHAvdW5wYWNrX3Rhcl9nel9hcmNoaXZlLnB5Ci0tLSBhL2xpYi9nYWxheHkvdG9vbHMvaW1wX2V4
cC91bnBhY2tfdGFyX2d6X2FyY2hpdmUucHkKKysrIGIvbGliL2dhbGF4eS90b29scy9pbXBfZXhw
L3VucGFja190YXJfZ3pfYXJjaGl2ZS5weQpAQCAtNiw2ICs2LDcgQEAKICAgICAtLVt1cmx8Zmls
ZV0gc291cmNlIHR5cGUsIGVpdGhlciBhIFVSTCBvciBhIGZpbGUuCiAiIiIKPTIwCitpbXBvcnQg
b3MKIGltcG9ydCBzeXMKIGltcG9ydCBvcHRwYXJzZQogaW1wb3J0IHRhcmZpbGUKQEAgLTQzLDYg
KzQ0LDIyIEBACiAgICAgICAgIHJldHVybiBOb25lCj0yMAo9MjAKK2RlZiBjaGVja19hcmNoaXZl
KCBhcmNoaXZlX2ZpbGUsIGRlc3RfZGlyICk6CisgICAgIiIiCisgICAgRW5zdXJlIHRoYXQgYSB0
YXIgYXJjaGl2ZSBoYXMgbm8gYWJzb2x1dGUgcGF0aHMgb3IgcmVsYXRpdmUgcGF0aHMgb3V0cz0K
aWRlCisgICAgdGhlIGFyY2hpdmUuCisgICAgIiIiCisgICAgd2l0aCB0YXJmaWxlLm9wZW4oIGFy
Y2hpdmVfZmlsZSwgbW9kZT0zRCdyOmd6JyApIGFzIGFyY2hpdmVfZnA6CisgICAgICAgIGZvciBh
cmNfcGF0aCBpbiBhcmNoaXZlX2ZwLmdldG5hbWVzKCk6CisgICAgICAgICAgICBhc3NlcnQgb3Mu
cGF0aC5ub3JtcGF0aCgKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oCisgICAgICAgICAg
ICAgICAgICAgIGRlc3RfZGlyLAorICAgICAgICAgICAgICAgICAgICBhcmNfcGF0aAorICAgICAg
ICAgICAgICAgICkgKS5zdGFydHN3aXRoKCBkZXN0X2Rpci5yc3RyaXAob3Muc2VwKSArIG9zLnNl
cCApLCBcCisgICAgICAgICAgICAgICAgIkFyY2hpdmUgbWVtYmVyIHdvdWxkIGV4dHJhY3Qgb3V0
c2lkZSB0YXJnZXQgZGlyZWN0b3J5OiAlcz0KIiAlIGFyY19wYXRoCisgICAgcmV0dXJuIFRydWUK
KworCiBkZWYgdW5wYWNrX2FyY2hpdmUoIGFyY2hpdmVfZmlsZSwgZGVzdF9kaXIgKToKICAgICAi
IiIKICAgICBVbnBhY2sgYSB0YXIgYW5kL29yIGd6aXBwZWQgYXJjaGl2ZSBpbnRvIGEgZGVzdGlu
YXRpb24gZGlyZWN0b3J5LgpAQCAtNTEsMTMgKzY4LDggQEAKICAgICBhcmNoaXZlX2ZwLmV4dHJh
Y3RhbGwoIHBhdGg9M0RkZXN0X2RpciApCiAgICAgYXJjaGl2ZV9mcC5jbG9zZSgpCj0yMAotaWYg
X19uYW1lX18gPTNEPTNEICJfX21haW5fXyI6Ci0gICAgIyBQYXJzZSBjb21tYW5kIGxpbmUuCi0g
ICAgcGFyc2VyID0zRCBvcHRwYXJzZS5PcHRpb25QYXJzZXIoKQotICAgIHBhcnNlci5hZGRfb3B0
aW9uKCAnLVUnLCAnLS11cmwnLCBkZXN0PTNEJ2lzX3VybCcsIGFjdGlvbj0zRCJzdG9yZV90cnU9
CmUiLCBoZWxwPTNEJ1NvdXJjZSBpcyBhIFVSTC4nICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigg
Jy1GJywgJy0tZmlsZScsIGRlc3Q9M0QnaXNfZmlsZScsIGFjdGlvbj0zRCJzdG9yZV90PQpydWUi
LCBoZWxwPTNEJ1NvdXJjZSBpcyBhIFVSTC4nICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbiggJy1l
JywgJy0tZW5jb2RlZCcsIGRlc3Q9M0QnaXNfYjY0ZW5jb2RlZCcsIGFjdGlvbj0KPTNEInN0b3Jl
X3RydWUiLCBkZWZhdWx0PTNERmFsc2UsIGhlbHA9M0QnU291cmNlIGFuZCBkZXN0aW5hdGlvbiBk
aXIgdmFsdWVzPQogYXJlIGJhc2U2NCBlbmNvZGVkLicgKQotICAgIChvcHRpb25zLCBhcmdzKSA9
M0QgcGFyc2VyLnBhcnNlX2FyZ3MoKQorCitkZWYgbWFpbihvcHRpb25zLCBhcmdzKToKICAgICBp
c191cmwgPTNEIGJvb2woIG9wdGlvbnMuaXNfdXJsICkKICAgICBpc19maWxlID0zRCBib29sKCBv
cHRpb25zLmlzX2ZpbGUgKQogICAgIGFyY2hpdmVfc291cmNlLCBkZXN0X2RpciA9M0QgYXJncwpA
QCAtNjYsMTQgKzc4LDI1IEBACiAgICAgICAgIGFyY2hpdmVfc291cmNlID0zRCBiNjRkZWNvZGUo
IGFyY2hpdmVfc291cmNlICkKICAgICAgICAgZGVzdF9kaXIgPTNEIGI2NGRlY29kZSggZGVzdF9k
aXIgKQo9MjAKKyAgICAjIEdldCBhcmNoaXZlIGZyb20gVVJMLgorICAgIGlmIGlzX3VybDoKKyAg
ICAgICAgYXJjaGl2ZV9maWxlID0zRCB1cmxfdG9fZmlsZSggYXJjaGl2ZV9zb3VyY2UsIHRlbXBm
aWxlLk5hbWVkVGVtcG9yPQphcnlGaWxlKCBkaXI9M0RkZXN0X2RpciApLm5hbWUgKQorICAgIGVs
aWYgaXNfZmlsZToKKyAgICAgICAgYXJjaGl2ZV9maWxlID0zRCBhcmNoaXZlX3NvdXJjZQorCisg
ICAgIyBVbnBhY2sgYXJjaGl2ZS4KKyAgICBjaGVja19hcmNoaXZlKCBhcmNoaXZlX2ZpbGUsIGRl
c3RfZGlyICkKKyAgICB1bnBhY2tfYXJjaGl2ZSggYXJjaGl2ZV9maWxlLCBkZXN0X2RpciApCisK
KworaWYgX19uYW1lX18gPTNEPTNEICJfX21haW5fXyI6CisgICAgIyBQYXJzZSBjb21tYW5kIGxp
bmUuCisgICAgcGFyc2VyID0zRCBvcHRwYXJzZS5PcHRpb25QYXJzZXIoKQorICAgIHBhcnNlci5h
ZGRfb3B0aW9uKCAnLVUnLCAnLS11cmwnLCBkZXN0PTNEJ2lzX3VybCcsIGFjdGlvbj0zRCJzdG9y
ZV90cnU9CmUiLCBoZWxwPTNEJ1NvdXJjZSBpcyBhIFVSTC4nICkKKyAgICBwYXJzZXIuYWRkX29w
dGlvbiggJy1GJywgJy0tZmlsZScsIGRlc3Q9M0QnaXNfZmlsZScsIGFjdGlvbj0zRCJzdG9yZV90
PQpydWUiLCBoZWxwPTNEJ1NvdXJjZSBpcyBhIFVSTC4nICkKKyAgICBwYXJzZXIuYWRkX29wdGlv
biggJy1lJywgJy0tZW5jb2RlZCcsIGRlc3Q9M0QnaXNfYjY0ZW5jb2RlZCcsIGFjdGlvbj0KPTNE
InN0b3JlX3RydWUiLCBkZWZhdWx0PTNERmFsc2UsIGhlbHA9M0QnU291cmNlIGFuZCBkZXN0aW5h
dGlvbiBkaXIgdmFsdWVzPQogYXJlIGJhc2U2NCBlbmNvZGVkLicgKQorICAgIChvcHRpb25zLCBh
cmdzKSA9M0QgcGFyc2VyLnBhcnNlX2FyZ3MoKQogICAgIHRyeToKLSAgICAgICAgIyBHZXQgYXJj
aGl2ZSBmcm9tIFVSTC4KLSAgICAgICAgaWYgaXNfdXJsOgotICAgICAgICAgICAgYXJjaGl2ZV9m
aWxlID0zRCB1cmxfdG9fZmlsZSggYXJjaGl2ZV9zb3VyY2UsIHRlbXBmaWxlLk5hbWVkVGU9Cm1w
b3JhcnlGaWxlKCBkaXI9M0RkZXN0X2RpciApLm5hbWUgKQotICAgICAgICBlbGlmIGlzX2ZpbGU6
Ci0gICAgICAgICAgICBhcmNoaXZlX2ZpbGUgPTNEIGFyY2hpdmVfc291cmNlCi0KLSAgICAgICAg
IyBVbnBhY2sgYXJjaGl2ZS4KLSAgICAgICAgdW5wYWNrX2FyY2hpdmUoIGFyY2hpdmVfZmlsZSwg
ZGVzdF9kaXIgKQorICAgICAgICBtYWluKG9wdGlvbnMsIGFyZ3MpCiAgICAgZXhjZXB0IEV4Y2Vw
dGlvbiwgZToKICAgICAgICAgcHJpbnQgIkVycm9yIHVucGFja2luZyB0YXIvZ3ogYXJjaGl2ZTog
JXMiICUgZSwgc3lzLnN0ZGVycgoKZGlmZiAtciAyMGQ1YTIxYWRkOWFiNDVkOWM0YzVjMjZkNjg2
OTllNzcxMzEwMGRkIC1yIDZjMmZkN2JkZGM2YzFjNGU4YTY0MDkzPQpmM2ZjNGM0MzcwZjUxNWI0
ZSBsaWIvZ2FsYXh5L3V0aWwvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4eS91dGlsL19faW5p
dF9fLnB5CisrKyBiL2xpYi9nYWxheHkvdXRpbC9fX2luaXRfXy5weQpAQCAtMjksNyArMjksNyBA
QAo9MjAKIGZyb20gZW1haWwuTUlNRVRleHQgaW1wb3J0IE1JTUVUZXh0Cj0yMAotZnJvbSBvcy5w
YXRoIGltcG9ydCByZWxwYXRoCitmcm9tIG9zLnBhdGggaW1wb3J0IHJlbHBhdGgsIG5vcm1wYXRo
CiBmcm9tIGhhc2hsaWIgaW1wb3J0IG1kNQogZnJvbSBpdGVydG9vbHMgaW1wb3J0IGl6aXAKPTIw
CkBAIC0xMjUyLDYgKzEyNTIsMjIgQEAKICAgICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKGdhbGF4
eV9yb290X3BhdGgpCj0yMAo9MjAKK2RlZiBzYWZlX3JlbHBhdGgocGF0aCk6CisgICAgIiIiCisg
ICAgR2l2ZW4gd2hhdCB3ZSBleHBlY3QgdG8gYmUgYSByZWxhdGl2ZSBwYXRoLCBkZXRlcm1pbmUg
d2hldGhlciB0aGUgcGF0aAorICAgIHdvdWxkIGV4aXN0IGluc2lkZSB0aGUgY3VycmVudCBkaXJl
Y3RvcnkuCisKKyAgICA6dHlwZSAgIHBhdGg6ICAgc3RyaW5nCisgICAgOnBhcmFtICBwYXRoOiAg
IGEgcGF0aCB0byBjaGVjaworICAgIDpydHlwZTogICAgICAgICBib29sCisgICAgOnJldHVybnM6
ICAgICAgIGBgVHJ1ZWBgIGlmIHBhdGggaXMgcmVsYXRpdmUgYW5kIGRvZXMgbm90IHJlZmVyZW5j
ZSBhID0KcGF0aAorICAgICAgICBpbiBhIHBhcmVudCBkaXJlY3RvcnksIGBgRmFsc2VgYCBvdGhl
cndpc2UuCisgICAgIiIiCisgICAgaWYgcGF0aC5zdGFydHN3aXRoKG9zLnNlcCkgb3Igbm9ybXBh
dGgocGF0aCkuc3RhcnRzd2l0aChvcy5wYXJkaXIpOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAg
ICByZXR1cm4gVHJ1ZQorCisKIGNsYXNzIEV4ZWN1dGlvblRpbWVyKG9iamVjdCk6Cj0yMAogICAg
IGRlZiBfX2luaXRfXyhzZWxmKToKCmRpZmYgLXIgMjBkNWEyMWFkZDlhYjQ1ZDljNGM1YzI2ZDY4
Njk5ZTc3MTMxMDBkZCAtciA2YzJmZDdiZGRjNmMxYzRlOGE2NDA5Mz0KZjNmYzRjNDM3MGY1MTVi
NGUgbGliL2dhbGF4eS92ZXJzaW9uLnB5Ci0tLSBhL2xpYi9nYWxheHkvdmVyc2lvbi5weQorKysg
Yi9saWIvZ2FsYXh5L3ZlcnNpb24ucHkKQEAgLTEsMyArMSwzIEBACiBWRVJTSU9OX01BSk9SID0z
RCAiMTUuMDUiCi1WRVJTSU9OX01JTk9SID0zRCAiMSIKK1ZFUlNJT05fTUlOT1IgPTNEICIyIgog
VkVSU0lPTiA9M0QgVkVSU0lPTl9NQUpPUiArICgnLicgKyBWRVJTSU9OX01JTk9SIGlmIFZFUlNJ
T05fTUlOT1IgZWxzZSAnJykKCmRpZmYgLXIgMjBkNWEyMWFkZDlhYjQ1ZDljNGM1YzI2ZDY4Njk5
ZTc3MTMxMDBkZCAtciA2YzJmZDdiZGRjNmMxYzRlOGE2NDA5Mz0KZjNmYzRjNDM3MGY1MTViNGUg
bGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvdG9vbHMucHkKLS0tIGEvbGliL2dhbGF4eS93
ZWJhcHBzL2dhbGF4eS9hcGkvdG9vbHMucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4
eS9hcGkvdG9vbHMucHkKQEAgLTEwNywxNCArMTA3LDE0IEBACj0yMAogICAgIEBleHBvc2VfYXBp
CiAgICAgQHdlYi5yZXF1aXJlX2FkbWluCi0gICAgZGVmIHJlbG9hZCggc2VsZiwgdHJhbnMsIHRv
b2xfaWQsICoqa3dkICk6CisgICAgZGVmIHJlbG9hZCggc2VsZiwgdHJhbnMsIGlkLCAqKmt3ZCAp
OgogICAgICAgICAiIiIKICAgICAgICAgR0VUIC9hcGkvdG9vbHMve3Rvb2xfaWR9L3JlbG9hZAog
ICAgICAgICBSZWxvYWQgc3BlY2lmaWVkIHRvb2wuCiAgICAgICAgICIiIgogICAgICAgICB0b29s
Ym94ID0zRCB0cmFucy5hcHAudG9vbGJveAotICAgICAgICBnYWxheHkucXVldWVfd29ya2VyLnNl
bmRfY29udHJvbF90YXNrKCB0cmFucywgJ3JlbG9hZF90b29sJywgbm9vcF89CnNlbGY9M0RUcnVl
LCBrd2FyZ3M9M0R7ICd0b29sX2lkJzogdG9vbF9pZCB9ICkKLSAgICAgICAgbWVzc2FnZSwgc3Rh
dHVzID0zRCB0cmFucy5hcHAudG9vbGJveC5yZWxvYWRfdG9vbF9ieV9pZCggdG9vbF9pZCApCisg
ICAgICAgIGdhbGF4eS5xdWV1ZV93b3JrZXIuc2VuZF9jb250cm9sX3Rhc2soIHRyYW5zLCAncmVs
b2FkX3Rvb2wnLCBub29wXz0Kc2VsZj0zRFRydWUsIGt3YXJncz0zRHsgJ3Rvb2xfaWQnOiBpZCB9
ICkKKyAgICAgICAgbWVzc2FnZSwgc3RhdHVzID0zRCB0cmFucy5hcHAudG9vbGJveC5yZWxvYWRf
dG9vbF9ieV9pZCggaWQgKQogICAgICAgICByZXR1cm4geyBzdGF0dXM6IG1lc3NhZ2UgfQo9MjAK
ICAgICBAZXhwb3NlX2FwaQoKZGlmZiAtciAyMGQ1YTIxYWRkOWFiNDVkOWM0YzVjMjZkNjg2OTll
NzcxMzEwMGRkIC1yIDZjMmZkN2JkZGM2YzFjNGU4YTY0MDkzPQpmM2ZjNGM0MzcwZjUxNWI0ZSBs
aWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL2FkbWluX3Rvb2xzaGVkLnB5Ci0t
LSBhL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvYWRtaW5fdG9vbHNoZWQu
cHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9hZG1pbl90b29s
c2hlZC5weQpAQCAtMzgyLDExICszODIsMTEgQEAKPTIwCiAgICAgQHdlYi5qc29uCiAgICAgQHdl
Yi5yZXF1aXJlX2FkbWluCi0gICAgZGVmIGdldF9maWxlX2NvbnRlbnRzKCBzZWxmLCB0cmFucywg
ZmlsZV9wYXRoICk6CisgICAgZGVmIGdldF9maWxlX2NvbnRlbnRzKCBzZWxmLCB0cmFucywgZmls
ZV9wYXRoLCByZXBvc2l0b3J5X2lkICk6CiAgICAgICAgICMgQXZvaWQgY2FjaGluZwogICAgICAg
ICB0cmFucy5yZXNwb25zZS5oZWFkZXJzWydQcmFnbWEnXSA9M0QgJ25vLWNhY2hlJwogICAgICAg
ICB0cmFucy5yZXNwb25zZS5oZWFkZXJzWydFeHBpcmVzJ10gPTNEICcwJwotICAgICAgICByZXR1
cm4gc3VjLmdldF9yZXBvc2l0b3J5X2ZpbGVfY29udGVudHMoIGZpbGVfcGF0aCApCisgICAgICAg
IHJldHVybiBzdWMuZ2V0X3JlcG9zaXRvcnlfZmlsZV9jb250ZW50cyggdHJhbnMuYXBwLCBmaWxl
X3BhdGgsIHJlcD0Kb3NpdG9yeV9pZCApCj0yMAogICAgIEB3ZWIuZXhwb3NlCiAgICAgQHdlYi5y
ZXF1aXJlX2FkbWluCkBAIC05MTAsMTEgKzkxMCwxMSBAQAo9MjAKICAgICBAd2ViLmpzb24KICAg
ICBAd2ViLnJlcXVpcmVfYWRtaW4KLSAgICBkZWYgb3Blbl9mb2xkZXIoIHNlbGYsIHRyYW5zLCBm
b2xkZXJfcGF0aCApOgorICAgIGRlZiBvcGVuX2ZvbGRlciggc2VsZiwgdHJhbnMsIGZvbGRlcl9w
YXRoLCByZXBvc2l0b3J5X2lkICk6CiAgICAgICAgICMgQXZvaWQgY2FjaGluZwogICAgICAgICB0
cmFucy5yZXNwb25zZS5oZWFkZXJzWydQcmFnbWEnXSA9M0QgJ25vLWNhY2hlJwogICAgICAgICB0
cmFucy5yZXNwb25zZS5oZWFkZXJzWydFeHBpcmVzJ10gPTNEICcwJwotICAgICAgICByZXR1cm4g
c3VjLm9wZW5fcmVwb3NpdG9yeV9maWxlc19mb2xkZXIoIGZvbGRlcl9wYXRoICkKKyAgICAgICAg
cmV0dXJuIHN1Yy5vcGVuX3JlcG9zaXRvcnlfZmlsZXNfZm9sZGVyKCB0cmFucy5hcHAsIGZvbGRl
cl9wYXRoLCByPQplcG9zaXRvcnlfaWQgKQo9MjAKICAgICBAd2ViLmV4cG9zZQogICAgIEB3ZWIu
cmVxdWlyZV9hZG1pbgoKZGlmZiAtciAyMGQ1YTIxYWRkOWFiNDVkOWM0YzVjMjZkNjg2OTllNzcx
MzEwMGRkIC1yIDZjMmZkN2JkZGM2YzFjNGU4YTY0MDkzPQpmM2ZjNGM0MzcwZjUxNWI0ZSBsaWIv
Z2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL3JlcXVlc3RzX2FkbWluLnB5Ci0tLSBh
L2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvcmVxdWVzdHNfYWRtaW4ucHkK
KysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9yZXF1ZXN0c19hZG1p
bi5weQpAQCAtNiwxMCArNiw3IEBACiBmcm9tIGdhbGF4eSBpbXBvcnQgbW9kZWwsIHV0aWwKIGZy
b20gZ2FsYXh5LndlYi5mb3JtX2J1aWxkZXIgaW1wb3J0ICoKIGZyb20gLnJlcXVlc3RzX2NvbW1v
biBpbXBvcnQgUmVxdWVzdHNHcmlkLCBpbnZhbGlkX2lkX3JlZGlyZWN0Ci1mcm9tIGdhbGF4eSBp
bXBvcnQgZWdncwotZWdncy5yZXF1aXJlKCJhbXFwIikKLWltcG9ydCBhbXFwCi1pbXBvcnQgbG9n
Z2luZywgb3MsIHBleHBlY3QsIENvbmZpZ1BhcnNlcgoraW1wb3J0IGxvZ2dpbmcsIG9zLCBDb25m
aWdQYXJzZXIKPTIwCiBsb2cgPTNEIGxvZ2dpbmcuZ2V0TG9nZ2VyKCBfX25hbWVfXyApCj0yMApA
QCAtMzUxLDE4MiArMzQ4LDYgQEAKICAgICAgICAgcmV0dXJuIHRyYW5zLnJlc3BvbnNlLnNlbmRf
cmVkaXJlY3QoIHdlYi51cmxfZm9yKCBjb250cm9sbGVyPTNEJ3JlPQpxdWVzdHNfYWRtaW4nLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFjdGlvbj0zRCdtYW5hZ2U9Cl9kYXRhc2V0cycsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlX2lkPTNEc2FtcD0KbGVfaWQg
KSApCi0gICAgQHdlYi5leHBvc2UKLSAgICBAd2ViLnJlcXVpcmVfYWRtaW4KLSAgICBkZWYgc2Vs
ZWN0X2RhdGFzZXRzX3RvX3RyYW5zZmVyKCBzZWxmLCB0cmFucywgKiprd2QgKToKLSAgICAgICAg
cGFyYW1zID0zRCB1dGlsLlBhcmFtcygga3dkICkKLSAgICAgICAgbWVzc2FnZSA9M0QgdXRpbC5y
ZXN0b3JlX3RleHQoIHBhcmFtcy5nZXQoICdtZXNzYWdlJywgJycgKSApCi0gICAgICAgIHN0YXR1
cyA9M0QgcGFyYW1zLmdldCggJ3N0YXR1cycsICdkb25lJyApCi0gICAgICAgIHJlcXVlc3RfaWQg
PTNEIGt3ZC5nZXQoICdyZXF1ZXN0X2lkJywgTm9uZSApCi0gICAgICAgIGV4dGVybmFsX3NlcnZp
Y2VfaWQgPTNEIGt3ZC5nZXQoICdleHRlcm5hbF9zZXJ2aWNlX2lkJywgTm9uZSApCi0gICAgICAg
IGZpbGVzID0zRCBbXQotICAgICAgICByZXF1ZXN0ID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5
KCB0cmFucy5tb2RlbC5SZXF1ZXN0ICkuZ2V0KCB0cmE9Cm5zLnNlY3VyaXR5LmRlY29kZV9pZCgg
cmVxdWVzdF9pZCApICkKLSAgICAgICAgZXh0ZXJuYWxfc2VydmljZSA9M0QgdHJhbnMuc2Ffc2Vz
c2lvbi5xdWVyeSggdHJhbnMubW9kZWwuRXh0ZXJuYWxTPQplcnZpY2UgKS5nZXQoIHRyYW5zLnNl
Y3VyaXR5LmRlY29kZV9pZCggZXh0ZXJuYWxfc2VydmljZV9pZCApICkKLSAgICAgICAgIyBMb2Fk
IHRoZSBkYXRhIHRyYW5zZmVyIHNldHRpbmdzCi0gICAgICAgIGV4dGVybmFsX3NlcnZpY2UubG9h
ZF9kYXRhX3RyYW5zZmVyX3NldHRpbmdzKCB0cmFucyApCi0gICAgICAgIHNjcF9jb25maWdzID0z
RCBleHRlcm5hbF9zZXJ2aWNlLmRhdGFfdHJhbnNmZXJbIHRyYW5zLm1vZGVsLkV4dGVybj0KYWxT
ZXJ2aWNlLmRhdGFfdHJhbnNmZXJfcHJvdG9jb2wuU0NQIF0KLSAgICAgICAgc2VsZWN0ZWRfZGF0
YXNldHNfdG9fdHJhbnNmZXIgPTNEIHV0aWwucmVzdG9yZV90ZXh0KCBwYXJhbXMuZ2V0KCAnPQpz
ZWxlY3RlZF9kYXRhc2V0c190b190cmFuc2ZlcicsICcnICkgKQotICAgICAgICBpZiBzZWxlY3Rl
ZF9kYXRhc2V0c190b190cmFuc2ZlcjoKLSAgICAgICAgICAgIHNlbGVjdGVkX2RhdGFzZXRzX3Rv
X3RyYW5zZmVyID0zRCBzZWxlY3RlZF9kYXRhc2V0c190b190cmFuc2ZlPQpyLnNwbGl0KCcsJykK
LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGVjdGVkX2RhdGFzZXRzX3RvX3RyYW5zZmVy
ID0zRCBbXQotICAgICAgICBzYW1wbGVfaWQgPTNEIGt3ZC5nZXQoICdzYW1wbGVfaWQnLCAnbm9u
ZScgKQotICAgICAgICBzYW1wbGVfaWRfc2VsZWN0X2ZpZWxkID0zRCBzZWxmLl9fYnVpbGRfc2Ft
cGxlX2lkX3NlbGVjdF9maWVsZCggdHI9CmFucywgcmVxdWVzdCwgc2FtcGxlX2lkICkKLSAgICAg
ICAgaWYgc2FtcGxlX2lkICE9M0QgJ25vbmUnOgotICAgICAgICAgICAgc2FtcGxlID0zRCB0cmFu
cy5zYV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5tb2RlbC5TYW1wbGUgKS5nZXQoIHQ9CnJhbnMuc2Vj
dXJpdHkuZGVjb2RlX2lkKCBzYW1wbGVfaWQgKSApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBzYW1wbGUgPTNEIE5vbmUKLSAgICAgICAgIyBUaGUgX19nZXRfZmlsZXMoKSBtZXRob2QgcmVk
aXJlY3RzIGhlcmUgd2l0aCBhIHN0YXR1cyBvZiAnZXJyb3InPQogYW5kIGEgbWVzc2FnZSBpZiB0
aGVyZQotICAgICAgICAjIHdhcyBhIHByb2JsZW0gcmV0cmlldmluZyB0aGUgZmlsZXMuCi0gICAg
ICAgIGlmIHBhcmFtcy5nZXQoICdzZWxlY3RfZGF0YXNldHNfdG9fdHJhbnNmZXJfYnV0dG9uJywg
RmFsc2UgKToKLSAgICAgICAgICAgICMgR2V0IHRoZSBzYW1wbGUgdGhhdCB3YXMgc2VxdWVuY2Vk
IHRvIHByb2R1Y2UgdGhlc2UgZGF0YXNldHMuCi0gICAgICAgICAgICBpZiBzYW1wbGVfaWQgPTNE
PTNEICdub25lJzoKLSAgICAgICAgICAgICAgICBkZWwga3dkWyAnc2VsZWN0X2RhdGFzZXRzX3Rv
X3RyYW5zZmVyX2J1dHRvbicgXQotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPTNEICdTZWxlY3Qg
dGhlIHNhbXBsZSB0aGF0IHdhcyBzZXF1ZW5jZWQgdG8gcHJvZHU9CmNlIHRoZSBkYXRhc2V0cyB5
b3Ugd2FudCB0byB0cmFuc2Zlci4nCi0gICAgICAgICAgICAgICAga3dkWyAnbWVzc2FnZScgXSA9
M0QgbWVzc2FnZQotICAgICAgICAgICAgICAgIGt3ZFsgJ3N0YXR1cycgXSA9M0QgJ2Vycm9yJwot
ICAgICAgICAgICAgICAgIHJldHVybiB0cmFucy5yZXNwb25zZS5zZW5kX3JlZGlyZWN0KCB3ZWIu
dXJsX2ZvciggY29udHJvbGw9CmVyPTNEJ3JlcXVlc3RzX2FkbWluJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlv
bj0KPTNEJ3NlbGVjdF9kYXRhc2V0c190b190cmFuc2ZlcicsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKmt3ZCApICkK
LSAgICAgICAgICAgIGlmIG5vdCBzYW1wbGUubGlicmFyeToKLSAgICAgICAgICAgICAgICAjIERp
c3BsYXkgYW4gZXJyb3IgaWYgYSBzYW1wbGUgaGFzIGJlZW4gc2VsZWN0ZWQgdGhhdAotICAgICAg
ICAgICAgICAgICMgaGFzIG5vdCB5ZXQgYmVlbiBhc3NvY2lhdGVkIHdpdGggYSBkZXN0aW5hdGlv
biBsaWJyYXJ5LgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPTNEICdTZWxlY3QgYSB0YXJnZXQg
ZGF0YSBsaWJyYXJ5IGFuZCBmb2xkZXIgZm9yIHQ9CmhlIHNhbXBsZSBiZWZvcmUgc2VsZWN0aW5n
IHRoZSBkYXRhc2V0cy4nCi0gICAgICAgICAgICAgICAgc3RhdHVzID0zRCAnZXJyb3InCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIHRyYW5zLnJlc3BvbnNlLnNlbmRfcmVkaXJlY3QoIHdlYi51cmxf
Zm9yKCBjb250cm9sbD0KZXI9M0QncmVxdWVzdHNfY29tbW9uJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0K
PTNEJ2VkaXRfc2FtcGxlcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbnRybGxlcj0KPTNEJ3JlcXVlc3RzX2FkbWlu
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlkPTNEdHJhPQpucy5zZWN1cml0eS5lbmNvZGVfaWQoIHJlcXVlc3QuaWQg
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXR1cz0KPTNEc3RhdHVzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0KPTNEbWVz
c2FnZSApICkKLSAgICAgICAgICAgICMgU2F2ZSB0aGUgc2FtcGxlIGRhdGFzZXRzCi0gICAgICAg
ICAgICBzYW1wbGVfZGF0YXNldF9maWxlX25hbWVzID0zRCBzZWxmLl9fY3JlYXRlX3NhbXBsZV9k
YXRhc2V0cyggdD0KcmFucywgc2FtcGxlLCBzZWxlY3RlZF9kYXRhc2V0c190b190cmFuc2Zlciwg
ZXh0ZXJuYWxfc2VydmljZSApCi0gICAgICAgICAgICBpZiBzYW1wbGVfZGF0YXNldF9maWxlX25h
bWVzOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPTNEICdEYXRhc2V0cyAoJXMpIGhhdmUgYmVl
biBzZWxlY3RlZCBmb3Igc2FtcGxlICg9CiVzKScgJSBcCi0gICAgICAgICAgICAgICAgICAgICgg
c3RyKCBzYW1wbGVfZGF0YXNldF9maWxlX25hbWVzIClbMTotMV0ucmVwbGFjZSggIiciLD0KICIi
ICksIHNhbXBsZS5uYW1lICkKLSAgICAgICAgICAgIHJldHVybiB0cmFucy5yZXNwb25zZS5zZW5k
X3JlZGlyZWN0KCB3ZWIudXJsX2ZvciggY29udHJvbGxlcj0KPTNEJ3JlcXVlc3RzX2FkbWluJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWN0aW9uPTNEJ21hPQpuYWdlX2RhdGFzZXRzJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9pZD0KPTNE
cmVxdWVzdF9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2FtcGxlX2lkPTNEPQpzYW1wbGVfaWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9
M0RtZT0Kc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXR1cz0zRHN0YT0KdHVzICkgKQotICAgICAgICByZXR1cm4g
dHJhbnMuZmlsbF90ZW1wbGF0ZSggJy9hZG1pbi9yZXF1ZXN0cy9zZWxlY3RfZGF0YXNldHNfdG9f
dHI9CmFuc2Zlci5tYWtvJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNu
dHJsbGVyPTNEJ3JlcXVlc3RzX2FkbWluJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3Q9M0RyZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXh0ZXJuYWxfc2VydmljZT0zRGV4dGVybmFsX3NlcnZpY2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzY3BfY29uZmlncz0zRHNjcF9jb25maWdzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlPTNEc2FtcGxlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlX2lkX3NlbGVjdF9maWVsZD0zRHNhbXBs
ZV9pZF9zZWw9CmVjdF9maWVsZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXR1cz0zRHN0YXR1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1l
c3NhZ2U9M0RtZXNzYWdlICkKLSAgICBAd2ViLmpzb24KLSAgICBkZWYgZ2V0X2ZpbGVfZGV0YWls
cyggc2VsZiwgdHJhbnMsIHJlcXVlc3RfaWQsIGV4dGVybmFsX3NlcnZpY2VfaWQsIGZvPQpsZGVy
X3BhdGggKToKLSAgICAgICAgZGVmIHByaW50X3RpY2tzKCBkICk6Ci0gICAgICAgICAgICAjIHBl
eHBlY3QgdGltZW91dCBtZXRob2QKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgIyBBdm9pZCBj
YWNoaW5nCi0gICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ1ByYWdtYSddID0zRCAnbm8t
Y2FjaGUnCi0gICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ0V4cGlyZXMnXSA9M0QgJzAn
Ci0gICAgICAgIHJlcXVlc3QgPTNEIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIHRyYW5zLm1vZGVs
LlJlcXVlc3QgKS5nZXQoIHRyYT0KbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCByZXF1ZXN0X2lkICkg
KQotICAgICAgICBleHRlcm5hbF9zZXJ2aWNlID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCB0
cmFucy5tb2RlbC5FeHRlcm5hbFM9CmVydmljZSApLmdldCggdHJhbnMuc2VjdXJpdHkuZGVjb2Rl
X2lkKCBleHRlcm5hbF9zZXJ2aWNlX2lkICkgKQotICAgICAgICBleHRlcm5hbF9zZXJ2aWNlLmxv
YWRfZGF0YV90cmFuc2Zlcl9zZXR0aW5ncyggdHJhbnMgKQotICAgICAgICBzY3BfY29uZmlncyA9
M0QgZXh0ZXJuYWxfc2VydmljZS5kYXRhX3RyYW5zZmVyWyB0cmFucy5tb2RlbC5FeHRlcm49CmFs
U2VydmljZS5kYXRhX3RyYW5zZmVyX3Byb3RvY29sLlNDUCBdCi0gICAgICAgIGNtZCAgPTNEICdz
c2ggJXNAJXMgImxzIC1vZ2hwIFwnJXNcJyInICUgKCBzY3BfY29uZmlnc1sgJ3VzZXJfbmFtZT0K
JyBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNj
cF9jb25maWdzWyAnaG9zdCcgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmb2xkZXJfcGF0aCApCi0gICAgICAgICMgSGFuZGxlIHRoZSBhdXRoZW50
aWNhdGlvbiBtZXNzYWdlIGlmIHNzaCBrZXlzIGFyZSBub3Qgc2V0IC0gdGhlID0KbWVzc2FnZSBp
cwotICAgICAgICAjIHNvbWV0aGluZyBsaWtlOiAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNv
bnRpbnVlIGNvbm5lY3RpbmcgKHk9CmVzL25vKS4iCi0gICAgICAgIG91dHB1dCA9M0QgcGV4cGVj
dC5ydW4oIGNtZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50cz0zRHsgJ1wo
eWVzXC9ub1wpXC4qJyA6ICd5ZXNcclxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICcuc3N3b3JkOionIDogc2NwX2NvbmZpZ3NbICdwYXNzd29yPQpkJyBdICsgJ1xy
XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGV4cGVjdC5USU1F
T1VUIDogcHJpbnRfdGlja3MgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVv
dXQ9M0QxMCApCi0gICAgICAgIGZvciBwYXNzd29yZF9zdHIgaW4gWyAnUGFzc3dvcmQ6XHJcbics
ICdwYXNzd29yZDpcclxuJyBdOgotICAgICAgICAgICAgIyBFbGltaW5hdGUgdGhlIG91dHB1dCBj
cmVhdGVkIHVzaW5nIHNzaCBmcm9tIHRoZSB0cmVlCi0gICAgICAgICAgICBpZiBwYXNzd29yZF9z
dHIgaW4gb3V0cHV0OgotICAgICAgICAgICAgICAgIG91dHB1dCA9M0Qgb3V0cHV0LnJlcGxhY2Uo
IHBhc3N3b3JkX3N0ciwgJycgKQotICAgICAgICByZXR1cm4gdW5pY29kZSggb3V0cHV0LnJlcGxh
Y2UoICdcclxuJywgJzxici8+JyApICkKLSAgICBAd2ViLmpzb24KLSAgICBkZWYgb3Blbl9mb2xk
ZXIoIHNlbGYsIHRyYW5zLCByZXF1ZXN0X2lkLCBleHRlcm5hbF9zZXJ2aWNlX2lkLCBrZXkgKToK
LSAgICAgICAgIyBBdm9pZCBjYWNoaW5nCi0gICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNb
J1ByYWdtYSddID0zRCAnbm8tY2FjaGUnCi0gICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNb
J0V4cGlyZXMnXSA9M0QgJzAnCi0gICAgICAgIHJlcXVlc3QgPTNEIHRyYW5zLnNhX3Nlc3Npb24u
cXVlcnkoIHRyYW5zLm1vZGVsLlJlcXVlc3QgKS5nZXQoIHRyYT0KbnMuc2VjdXJpdHkuZGVjb2Rl
X2lkKCByZXF1ZXN0X2lkICkgKQotICAgICAgICBleHRlcm5hbF9zZXJ2aWNlID0zRCB0cmFucy5z
YV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5tb2RlbC5FeHRlcm5hbFM9CmVydmljZSApLmdldCggdHJh
bnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBleHRlcm5hbF9zZXJ2aWNlX2lkICkgKQotICAgICAgICBm
b2xkZXJfcGF0aCA9M0Qga2V5Ci0gICAgICAgIGZpbGVzX2xpc3QgPTNEIHNlbGYuX19nZXRfZmls
ZXMoIHRyYW5zLCByZXF1ZXN0LCBleHRlcm5hbF9zZXJ2aWNlLD0KIGZvbGRlcl9wYXRoICkKLSAg
ICAgICAgZm9sZGVyX2NvbnRlbnRzID0zRCBbXQotICAgICAgICBmb3IgZmlsZW5hbWUgaW4gZmls
ZXNfbGlzdDoKLSAgICAgICAgICAgIGlzX2ZvbGRlciA9M0QgRmFsc2UKLSAgICAgICAgICAgIGlm
IGZpbGVuYW1lIGFuZCBmaWxlbmFtZVstMV0gPTNEPTNEIG9zLnNlcDoKLSAgICAgICAgICAgICAg
ICBpc19mb2xkZXIgPTNEIFRydWUKLSAgICAgICAgICAgIGlmIGZpbGVuYW1lOgotICAgICAgICAg
ICAgICAgIGZ1bGxfcGF0aCA9M0Qgb3MucGF0aC5qb2luKCBmb2xkZXJfcGF0aCwgZmlsZW5hbWUg
KQotICAgICAgICAgICAgICAgIG5vZGUgPTNEIHsgInRpdGxlIjogZmlsZW5hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgImlzRm9sZGVyIjogaXNfZm9sZGVyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICJpc0xhenkiOiBpc19mb2xkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
InRvb2x0aXAiOiBmdWxsX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgImtleSI6IGZ1
bGxfcGF0aCB9Ci0gICAgICAgICAgICAgICAgZm9sZGVyX2NvbnRlbnRzLmFwcGVuZCggbm9kZSAp
Ci0gICAgICAgIHJldHVybiBmb2xkZXJfY29udGVudHMKLSAgICBkZWYgX19nZXRfZmlsZXMoIHNl
bGYsIHRyYW5zLCByZXF1ZXN0LCBleHRlcm5hbF9zZXJ2aWNlLCBmb2xkZXJfcGF0aCApOgotICAg
ICAgICAjIFJldHJpZXZlcyB0aGUgZmlsZW5hbWVzIHRvIGJlIHRyYW5zZmVycmVkIGZyb20gdGhl
IHJlbW90ZSBob3N0LgotICAgICAgICBvayA9M0QgVHJ1ZQotICAgICAgICBleHRlcm5hbF9zZXJ2
aWNlLmxvYWRfZGF0YV90cmFuc2Zlcl9zZXR0aW5ncyggdHJhbnMgKQotICAgICAgICBzY3BfY29u
ZmlncyA9M0QgZXh0ZXJuYWxfc2VydmljZS5kYXRhX3RyYW5zZmVyWyB0cmFucy5tb2RlbC5FeHRl
cm49CmFsU2VydmljZS5kYXRhX3RyYW5zZmVyX3Byb3RvY29sLlNDUCBdCi0gICAgICAgIGlmIG5v
dCBzY3BfY29uZmlnc1sgJ2hvc3QnIF0gb3Igbm90IHNjcF9jb25maWdzWyAndXNlcl9uYW1lJyBd
IG9yID0Kbm90IHNjcF9jb25maWdzWyAncGFzc3dvcmQnIF06Ci0gICAgICAgICAgICBzdGF0dXMg
PTNEICdlcnJvcicKLSAgICAgICAgICAgIG1lc3NhZ2UgPTNEICJFcnJvciBpbiBleHRlcm5hbCBz
ZXJ2aWNlIGxvZ2luIGluZm9ybWF0aW9uLiIKLSAgICAgICAgICAgIG9rID0zRCBGYWxzZQotICAg
ICAgICBkZWYgcHJpbnRfdGlja3MoIGQgKToKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgY21k
ICA9M0QgJ3NzaCAlc0AlcyAibHMgLXAgXCclc1wnIicgJSAoIHNjcF9jb25maWdzWyAndXNlcl9u
YW1lJyBdPQosIHNjcF9jb25maWdzWyAnaG9zdCcgXSwgZm9sZGVyX3BhdGggKQotICAgICAgICAj
IEhhbmRsZSB0aGUgYXV0aGVudGljYXRpb24gbWVzc2FnZSBpZiBrZXlzIGFyZSBub3Qgc2V0IC0g
dGhlIG1lc3M9CmFnZSBpcwotICAgICAgICAjIHNvbWV0aGluZyBsaWtlOiAiQXJlIHlvdSBzdXJl
IHlvdSB3YW50IHRvIGNvbnRpbnVlIGNvbm5lY3RpbmcgKHk9CmVzL25vKS4iCi0gICAgICAgIG91
dHB1dCA9M0QgcGV4cGVjdC5ydW4oIGNtZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV2ZW50cz0zRHsgJ1woeWVzXC9ub1wpXC4qJyA6ICd5ZXNcclxuJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJy5zc3dvcmQ6KicgOiBzY3BfY29uZmlnc1sgJ3Bhc3N3
b3JkPQonIF0gKyAnXHJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwZXhwZWN0LlRJTUVPVVQgOiBwcmludF90aWNrcyB9LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGltZW91dD0zRDEwICkKLSAgICAgICAgaWYgJ05vIHN1Y2ggZmlsZSBvciBkaXJl
Y3RvcnknIGluIG91dHB1dDoKLSAgICAgICAgICAgIHN0YXR1cyA9M0QgJ2Vycm9yJwotICAgICAg
ICAgICAgbWVzc2FnZSA9M0QgIk5vIGZvbGRlciBuYW1lZCAoJXMpIGV4aXN0cyBvbiB0aGUgZXh0
ZXJuYWwgc2Vydmk9CmNlLiIgJSBmb2xkZXJfcGF0aAotICAgICAgICAgICAgb2sgPTNEIEZhbHNl
Ci0gICAgICAgIGlmIG9rOgotICAgICAgICAgICAgaWYgJ2Fzc3dvcmQ6JyBpbiBvdXRwdXQ6Ci0g
ICAgICAgICAgICAgICAgIyBFbGltaW5hdGUgdGhlIG91dHB1dCBjcmVhdGVkIHVzaW5nIHNzaCBm
cm9tIHRoZSB0cmVlCi0gICAgICAgICAgICAgICAgb3V0cHV0X2FzX2xpc3QgPTNEIG91dHB1dC5z
cGxpdGxpbmVzKClbIDE6IF0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgb3V0
cHV0X2FzX2xpc3QgPTNEIG91dHB1dC5zcGxpdGxpbmVzKCkKLSAgICAgICAgICAgIHJldHVybiBv
dXRwdXRfYXNfbGlzdAotICAgICAgICByZXR1cm4gdHJhbnMucmVzcG9uc2Uuc2VuZF9yZWRpcmVj
dCggd2ViLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmU9CnF1ZXN0c19hZG1pbicsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9u
PTNEJ3NlbGVjdD0KX2RhdGFzZXRzX3RvX3RyYW5zZmVyJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X2lkPTNEdHJhPQpu
cy5zZWN1cml0eS5lbmNvZGVfaWQoIHJlcXVlc3QuaWQgKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlcm5hbF9zZXJ2aWNlPQpf
aWQ9M0R0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIGV4dGVybmFsX3NlcnZpY2UuaWQgKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGF0dXM9M0RzdGF0dXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWVzc2FnZT0zRG1lc3NhZz0KZSApICkKLSAgICBkZWYgX19jcmVh
dGVfc2FtcGxlX2RhdGFzZXRzKCBzZWxmLCB0cmFucywgc2FtcGxlLCBzZWxlY3RlZF9kYXRhc2V0
c190PQpvX3RyYW5zZmVyLCBleHRlcm5hbF9zZXJ2aWNlICk6Ci0gICAgICAgIGV4dGVybmFsX3Nl
cnZpY2UubG9hZF9kYXRhX3RyYW5zZmVyX3NldHRpbmdzKCB0cmFucyApCi0gICAgICAgIHNjcF9j
b25maWdzID0zRCBleHRlcm5hbF9zZXJ2aWNlLmRhdGFfdHJhbnNmZXJbIHRyYW5zLm1vZGVsLkV4
dGVybj0KYWxTZXJ2aWNlLmRhdGFfdHJhbnNmZXJfcHJvdG9jb2wuU0NQIF0KLSAgICAgICAgc2Ft
cGxlX2RhdGFzZXRfZmlsZV9uYW1lcyA9M0QgW10KLSAgICAgICAgaWYgc2VsZWN0ZWRfZGF0YXNl
dHNfdG9fdHJhbnNmZXI6Ci0gICAgICAgICAgICBmb3IgZmlsZXBhdGggaW4gc2VsZWN0ZWRfZGF0
YXNldHNfdG9fdHJhbnNmZXI6Ci0gICAgICAgICAgICAgICAgIyBGSVhNRTogaGFuZGxlIGZvbGRl
ciBzZWxlY3Rpb24gLSBpZ25vcmUgZm9sZGVycyBmb3Igbm93Ci0gICAgICAgICAgICAgICAgaWYg
ZmlsZXBhdGhbLTFdICE9M0Qgb3Muc2VwOgotICAgICAgICAgICAgICAgICAgICBuYW1lID0zRCBz
ZWxmLl9fcmVuYW1lX2RhdGFzZXQoIHNhbXBsZSwgZmlsZXBhdGguc3BsaXQ9CiggJy8nIClbLTFd
LCBzY3BfY29uZmlncyApCi0gICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9M0QgdHJhbnMuYXBw
Lm1vZGVsLlNhbXBsZURhdGFzZXQudHJhbnNmZXJfc3RhdD0KdXMuTk9UX1NUQVJURUQKLSAgICAg
ICAgICAgICAgICAgICAgc2l6ZSA9M0Qgc2FtcGxlLmdldF91bnRyYW5zZmVycmVkX2RhdGFzZXRf
c2l6ZSggZmlsZXBhPQp0aCwgc2NwX2NvbmZpZ3MgKQotICAgICAgICAgICAgICAgICAgICBzYW1w
bGVfZGF0YXNldCA9M0QgdHJhbnMubW9kZWwuU2FtcGxlRGF0YXNldCggc2FtcGxlPQo9M0RzYW1w
bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmlsZV9wYXRoPQo9M0RmaWxlcGF0aCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9M0RzPQp0
YXR1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuYW1lPTNEbmFtPQplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX21zZz0KPTNEJycsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZT0zRHNpej0KZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlcm5hbF9zPQplcnZpY2U9M0RleHRlcm5h
bF9zZXJ2aWNlICkKLSAgICAgICAgICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5hZGQoIHNh
bXBsZV9kYXRhc2V0ICkKLSAgICAgICAgICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVz
aCgpCi0gICAgICAgICAgICAgICAgICAgIHNhbXBsZV9kYXRhc2V0X2ZpbGVfbmFtZXMuYXBwZW5k
KCBzdHIoIHNhbXBsZV9kYXRhc2V0Lj0KbmFtZSApICkKLSAgICAgICAgcmV0dXJuIHNhbXBsZV9k
YXRhc2V0X2ZpbGVfbmFtZXMKICAgICBkZWYgX19yZW5hbWVfZGF0YXNldCggc2VsZiwgc2FtcGxl
LCBmaWxlcGF0aCwgc2NwX2NvbmZpZ3MgKToKICAgICAgICAgbmFtZSA9M0QgZmlsZXBhdGguc3Bs
aXQoICcvJyApWy0xXQogICAgICAgICBvcHRpb25zID0zRCBzYW1wbGUucmVxdWVzdC50eXBlLnJl
bmFtZV9kYXRhc2V0X29wdGlvbnMKQEAgLTU2MSw5MCArMzgyLDYgQEAKICAgICAgICAgICAgIGZs
dXNoX25lZWRlZCA9M0QgVHJ1ZQogICAgICAgICBpZiBmbHVzaF9uZWVkZWQ6CiAgICAgICAgICAg
ICB0cmFucy5zYV9zZXNzaW9uLmZsdXNoKCkKLSAgICBkZWYgX19jcmVhdGVfZGF0YV90cmFuc2Zl
cl9tZXNzYWdlcyggc2VsZiwgdHJhbnMsIHNhbXBsZSwgc2VsZWN0ZWRfc2FtPQpwbGVfZGF0YXNl
dHMgKToKLSAgICAgICAgIiIiCi0gICAgICAgIENyZWF0ZXMgdGhlIHhtbCBtZXNzYWdlcyB0byBz
ZW5kIHRvIHRoZSByYWJiaXRtcSBzZXJ2ZXIuIEl0IHJldHVybj0KcyBhIGRpY3Rpb25hcnkgb2Yg
bWVzc2FnZXMKLSAgICAgICAga2V5ZWQgYnkgdGhlIGV4dGVybmFsIHNlcnZpY2UgdXNlZCB0byB0
cmFuc2ZlciB0aGUgZGF0YXNldHMKLSAgICAgICAgIiIiCi0gICAgICAgICMgQ3JlYXRlIHRoZSB4
bWwgbWVzc2FnZSBiYXNlZCBvbiB0aGUgZm9sbG93aW5nIHRlbXBsYXRlCi0gICAgICAgIHhtbCA9
M0QgXAotICAgICAgICAgICAgJycnIDxkYXRhX3RyYW5zZmVyPgotICAgICAgICAgICAgICAgICAg
ICA8Z2FsYXh5X2hvc3Q+JShHQUxBWFlfSE9TVClzPC9nYWxheHlfaG9zdD4KLSAgICAgICAgICAg
ICAgICAgICAgPGFwaV9rZXk+JShBUElfS0VZKXM8L2FwaV9rZXk+Ci0gICAgICAgICAgICAgICAg
ICAgIDxkYXRhX2hvc3Q+JShEQVRBX0hPU1QpczwvZGF0YV9ob3N0PgotICAgICAgICAgICAgICAg
ICAgICA8ZGF0YV91c2VyPiUoREFUQV9VU0VSKXM8L2RhdGFfdXNlcj4KLSAgICAgICAgICAgICAg
ICAgICAgPGRhdGFfcGFzc3dvcmQ+JShEQVRBX1BBU1NXT1JEKXM8L2RhdGFfcGFzc3dvcmQ+Ci0g
ICAgICAgICAgICAgICAgICAgIDxyZXF1ZXN0X2lkPiUoUkVRVUVTVF9JRClzPC9yZXF1ZXN0X2lk
PgotICAgICAgICAgICAgICAgICAgICA8c2FtcGxlX2lkPiUoU0FNUExFX0lEKXM8L3NhbXBsZV9p
ZD4KLSAgICAgICAgICAgICAgICAgICAgPGxpYnJhcnlfaWQ+JShMSUJSQVJZX0lEKXM8L2xpYnJh
cnlfaWQ+Ci0gICAgICAgICAgICAgICAgICAgIDxmb2xkZXJfaWQ+JShGT0xERVJfSUQpczwvZm9s
ZGVyX2lkPgotICAgICAgICAgICAgICAgICAgICAlKERBVEFTRVRTKXMKLSAgICAgICAgICAgICAg
ICA8L2RhdGFfdHJhbnNmZXI+JycnCi0gICAgICAgIGRhdGFzZXRfeG1sID0zRCBcCi0gICAgICAg
ICAgICAnJyc8ZGF0YXNldD4KLSAgICAgICAgICAgICAgICAgICA8ZGF0YXNldF9pZD4lKElEKXM8
L2RhdGFzZXRfaWQ+Ci0gICAgICAgICAgICAgICAgICAgPG5hbWU+JShOQU1FKXM8L25hbWU+Ci0g
ICAgICAgICAgICAgICAgICAgPGZpbGU+JShGSUxFKXM8L2ZpbGU+Ci0gICAgICAgICAgICAgICA8
L2RhdGFzZXQ+JycnCi0gICAgICAgICMgSGVyZSB3ZSBncm91cCBhbGwgdGhlIHNhbXBsZV9kYXRh
c2V0cyBieSB0aGUgZXh0ZXJuYWwgc2VydmljZSB1cz0KZWQgdG8gdHJhbnNmZXIgdGhlbS4KLSAg
ICAgICAgIyBUaGUgaWRlYSBpcyB0byBidW5kbGUgdXAgdGhlIHNhbXBsZV9kYXRhc2V0cyB3aGlj
aCB1c2VzIHRoZSBzYW1lPQogZXh0ZXJuYWwgc2VydmljZSBhbmQKLSAgICAgICAgIyBzZW5kIGEg
c2luZ2xlIEFNUVAgbWVzc2FnZSB0byB0aGUgZ2FsYXh5X2xpc3RlbmVyCi0gICAgICAgIGRhdGFz
ZXRfZWxlbWVudHMgPTNEIHt9Ci0gICAgICAgIGZvciBzYW1wbGVfZGF0YXNldCBpbiBzZWxlY3Rl
ZF9zYW1wbGVfZGF0YXNldHM6Ci0gICAgICAgICAgICBleHRlcm5hbF9zZXJ2aWNlID0zRCBzYW1w
bGVfZGF0YXNldC5leHRlcm5hbF9zZXJ2aWNlCi0gICAgICAgICAgICBpZiBzYW1wbGVfZGF0YXNl
dC5zdGF0dXMgPTNEPTNEIHRyYW5zLmFwcC5tb2RlbC5TYW1wbGVEYXRhc2V0Lj0KdHJhbnNmZXJf
c3RhdHVzLk5PVF9TVEFSVEVEOgotICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRhc2V0X2VsZW1l
bnRzLmhhc19rZXkoIGV4dGVybmFsX3NlcnZpY2UgKToKLSAgICAgICAgICAgICAgICAgICAgZGF0
YXNldF9lbGVtZW50c1sgZXh0ZXJuYWxfc2VydmljZSBdID0zRCAnJwotICAgICAgICAgICAgICAg
IGRhdGFzZXRfZWxlbWVudHNbIGV4dGVybmFsX3NlcnZpY2UgXSArPTNEIGRhdGFzZXRfeG1sICUg
ZGk9CmN0KCBJRD0zRHN0ciggc2FtcGxlX2RhdGFzZXQuaWQgKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQU1F
PQo9M0RzYW1wbGVfZGF0YXNldC5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEU9Cj0zRHNhbXBsZV9k
YXRhc2V0LmZpbGVfcGF0aCApCi0gICAgICAgICAgICAgICAgIyB1cGRhdGUgdGhlIGRhdGFzZXQg
dHJhbnNmZXIgc3RhdHVzCi0gICAgICAgICAgICAgICAgc2FtcGxlX2RhdGFzZXQuc3RhdHVzID0z
RCB0cmFucy5hcHAubW9kZWwuU2FtcGxlRGF0YXNldC50cj0KYW5zZmVyX3N0YXR1cy5JTl9RVUVV
RQotICAgICAgICAgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uYWRkKCBzYW1wbGVfZGF0YXNldCAp
Ci0gICAgICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCi0gICAgICAgICMgRmlu
YWxseSBwcmVwZW5kIHRoZSBleHRlcm5hbCBzZXJ2aWNlIGluZm8gdG8gdGhlIHNldHMgb2Ygc2Ft
cGxlID0KZGF0YXNldHMKLSAgICAgICAgbWVzc2FnZXMgPTNEIFtdCi0gICAgICAgIGZvciBleHRl
cm5hbF9zZXJ2aWNlLCBkYXRhc2V0X2VsZW0gaW4gZGF0YXNldF9lbGVtZW50cy5pdGVtcygpOgot
ICAgICAgICAgICAgZXh0ZXJuYWxfc2VydmljZS5sb2FkX2RhdGFfdHJhbnNmZXJfc2V0dGluZ3Mo
IHRyYW5zICkKLSAgICAgICAgICAgIHNjcF9jb25maWdzID0zRCBleHRlcm5hbF9zZXJ2aWNlLmRh
dGFfdHJhbnNmZXJbIHRyYW5zLm1vZGVsLkV4PQp0ZXJuYWxTZXJ2aWNlLmRhdGFfdHJhbnNmZXJf
cHJvdG9jb2wuU0NQIF0KLSAgICAgICAgICAgICMgQ2hlY2sgZGF0YSB0cmFuc2ZlciBzZXR0aW5n
cwotICAgICAgICAgICAgZXJyX21zZyA9M0Qgc2VsZi5fX3ZhbGlkYXRlX2RhdGFfdHJhbnNmZXJf
c2V0dGluZ3MoIHRyYW5zLCBzYW09CnBsZS5yZXF1ZXN0LnR5cGUsIHNjcF9jb25maWdzICkKLSAg
ICAgICAgICAgIGlmIGVycl9tc2c6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zLnJlc3Bv
bnNlLnNlbmRfcmVkaXJlY3QoIHdlYi51cmxfZm9yKCBjb250cm9sbD0KZXI9M0QncmVxdWVzdHNf
YWRtaW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYWN0aW9uPQo9M0QnbWFuYWdlX2RhdGFzZXRzJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNhbXBsZV9pPQpkPTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBzYW1wbGUuaWQgKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXR1cz0KPTNEJ2Vycm9yJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9Cj0zRGVycl9tc2cg
KSApCi0gICAgICAgICAgICBtZXNzYWdlID0zRCB4bWwgJSBkaWN0KCBHQUxBWFlfSE9TVD0zRHRy
YW5zLnJlcXVlc3QuaG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUElf
S0VZPTNEdHJhbnMudXNlci5hcGlfa2V5c1swXS5rZXksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgREFUQV9IT1NUPTNEc2NwX2NvbmZpZ3NbICdob3N0JyBdLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERBVEFfVVNFUj0zRHNjcF9jb25maWdzWyAndXNlcl9u
YW1lJyBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEFfUEFTU1dPUkQ9
M0RzY3BfY29uZmlnc1sgJ3Bhc3N3b3JkJyA9Cl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUkVRVUVTVF9JRD0zRHN0ciggc2FtcGxlLnJlcXVlc3QuaWQgKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTQU1QTEVfSUQ9M0RzdHIoIHNhbXBsZS5pZCApLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlJBUllfSUQ9M0RzdHIoIHNhbXBs
ZS5saWJyYXJ5LmlkICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk9MREVS
X0lEPTNEc3RyKCBzYW1wbGUuZm9sZGVyLmlkICksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgREFUQVNFVFM9M0RkYXRhc2V0X2VsZW0gKQotICAgICAgICAgICAgbWVzc2FnZXMu
YXBwZW5kKCBtZXNzYWdlLnJlcGxhY2UoICdcbicsICcnICkucmVwbGFjZSggJ1xyJywgJyc9CiAp
ICkKLSAgICAgICAgcmV0dXJuIG1lc3NhZ2VzCi0gICAgZGVmIF9fdmFsaWRhdGVfZGF0YV90cmFu
c2Zlcl9zZXR0aW5ncyggc2VsZiwgdHJhbnMsIHJlcXVlc3RfdHlwZSwgc2NwXz0KY29uZmlncyAp
OgotICAgICAgICBlcnJfbXNnID0zRCAnJwotICAgICAgICAjIGNoZWNrIHRoZSBleHRlcm5hbCBz
ZXJ2aWNlIGxvZ2luIGluZm8KLSAgICAgICAgaWYgbm90IHNjcF9jb25maWdzLmdldCggJ2hvc3Qn
LCAnJyApIFwKLSAgICAgICAgICAgIG9yIG5vdCBzY3BfY29uZmlncy5nZXQoICd1c2VyX25hbWUn
LCAnJyApIFwKLSAgICAgICAgICAgIG9yIG5vdCBzY3BfY29uZmlncy5nZXQoICdwYXNzd29yZCcs
ICcnICk6Ci0gICAgICAgICAgICBlcnJfbXNnICs9M0QgIkVycm9yIGluIGV4dGVybmFsIHNlcnZp
Y2UgbG9naW4gaW5mb3JtYXRpb24uICIKLSAgICAgICAgaWYgbm90IHRyYW5zLnVzZXIuYXBpX2tl
eXM6Ci0gICAgICAgICAgICBlcnJfbXNnICs9M0QgIlNldCB5b3VyIEFQSSBLZXkgaW4geW91ciBV
c2VyIFByZWZlcmVuY2VzIHRvIHRyYT0KbnNmZXIgZGF0YXNldHMuICIKLSAgICAgICAgIyBDaGVj
ayBpZiBsaWJyYXJ5X2ltcG9ydF9kaXIgaXMgc2V0Ci0gICAgICAgIGlmIG5vdCB0cmFucy5hcHAu
Y29uZmlnLmxpYnJhcnlfaW1wb3J0X2RpcjoKLSAgICAgICAgICAgIGVycl9tc2cgPTNEICInVGhl
IGxpYnJhcnlfaW1wb3J0X2Rpcicgc2V0dGluZyBpcyBub3QgY29ycmVjdGx5PQogc2V0IGluIHRo
ZSBHYWxheHkgY29uZmlnIGZpbGUuICIKLSAgICAgICAgIyBDaGVjayB0aGUgUmFiYml0TVEgc2Vy
dmVyIHNldHRpbmdzIGluIHRoZSBjb25maWcgZmlsZQotICAgICAgICBmb3IgaywgdiBpbiB0cmFu
cy5hcHAuY29uZmlnLmFtcXAuaXRlbXMoKToKLSAgICAgICAgICAgIGlmIG5vdCB2OgotICAgICAg
ICAgICAgICAgIGVycl9tc2cgKz0zRCAnU2V0IFJhYmJpdE1RIHNlcnZlciBzZXR0aW5ncyBpbiB0
aGUgImdhbGF4eV89CmFtcXAiIHNlY3Rpb24gb2YgdGhlIEdhbGF4eSBjb25maWcgZmlsZSwgc3Bl
Y2lmaWNhbGx5ICIlcyIgaXMgbm90IHNldC4nICUgawotICAgICAgICAgICAgICAgIGJyZWFrCi0g
ICAgICAgIHJldHVybiBlcnJfbXNnCiAgICAgQHdlYi5leHBvc2UKICAgICBAd2ViLnJlcXVpcmVf
YWRtaW4KICAgICBkZWYgaW5pdGlhdGVfZGF0YV90cmFuc2Zlciggc2VsZiwgdHJhbnMsIHNhbXBs
ZV9pZCwgc2FtcGxlX2RhdGFzZXRzPTNEPQpbXSwgc2FtcGxlX2RhdGFzZXRfaWQ9M0QnJyApOgpA
QCAtNjg2LDM1ICs0MjMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9CiAgICAgICAgICAgICAgICAg
IGV4dGVybmFsX3NlcnZpY2U9M0RleHRlcm5hbF9zZXJ2aWNlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9
CiAgICAgICAgICAgICAgICAgIGV4dGVybmFsX3NlcnZpY2VfdHlwZT0zRGV4dGVybmFsX3NlcnZp
Y2VfdHlwZSApCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIFRPRE86IFVzaW5nIFJhYmJp
dE1xIGZvciBub3csIGJ1dCBlbGltaW5hdGUgdGhpcyBlbnRpcmUgYmxvYz0KayB3aGVuIHdlIHJl
cGxhY2UgUmFiYml0TXEgd2l0aCBHYWxheHkncwotICAgICAgICAgICAgIyBvd24gbWVzc2FnaW5n
IGVuZ2luZS4gIFdlJ3JlIGhvbGRpbmcgb2ZmIG9uIHVzaW5nIHRoZSBuZXcgd2E9CnkgdG8gdHJh
bnNmZXIgZmlsZXMgbWFudWFsbHkgdW50aWwgd2UKLSAgICAgICAgICAgICMgaW1wbGVtZW50IGEg
R2FsYXh5LXByb3ByaWV0YXJ5IG1lc3NhZ2luZyBlbmdpbmUgYmVjYXVzZSB0aGUgPQpkZWZlcnJl
ZCBqb2IgcGx1Z2lucyBjdXJyZW50bHkgcGVyZm9ybQotICAgICAgICAgICAgIyBjb25zdGFudCBk
YiBoaXRzIHRvIGNoZWNrIGZvciBkZWZlcnJlZCBqb2JzIHRoYXQgYXJlIG5vdCBpbiA9CmEgZmlu
aXNoZWQgc3RhdGUuCi0gICAgICAgICAgICAjIENyZWF0ZSB0aGUgbWVzc2FnZQotICAgICAgICAg
ICAgbWVzc2FnZXMgPTNEIHNlbGYuX19jcmVhdGVfZGF0YV90cmFuc2Zlcl9tZXNzYWdlcyggdHJh
bnMsIHNhbXA9CmxlLCBzYW1wbGVfZGF0YXNldHMgKQotICAgICAgICAgICAgIyBTZW5kIHRoZSBt
ZXNzYWdlcwotICAgICAgICAgICAgZm9yIHJtcV9tc2cgaW4gbWVzc2FnZXM6Ci0gICAgICAgICAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBjb25uID0zRCBhbXFwLkNvbm5lY3Rpb24o
IGhvc3Q9M0R0cmFucy5hcHAuY29uZmlnLmFtcXA9ClsgJ2hvc3QnIF0gKyAiOiIgKyB0cmFucy5h
cHAuY29uZmlnLmFtcXBbICdwb3J0JyBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1c2VyaWQ9M0R0cmFucy5hcHAuY29uZmlnLmFtcXA9ClsgJ3VzZXJpZCcg
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ9
M0R0cmFucy5hcHAuY29uZmlnLmFtPQpxcFsgJ3Bhc3N3b3JkJyBdLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsX2hvc3Q9M0R0cmFucy5hcHAuY29u
Zmk9CmcuYW1xcFsgJ3ZpcnR1YWxfaG9zdCcgXSkKLSAgICAgICAgICAgICAgICAgICAgY2hhbiA9
M0QgY29ubi5jaGFubmVsKCkKLSAgICAgICAgICAgICAgICAgICAgbXNnID0zRCBhbXFwLk1lc3Nh
Z2UoIHJtcV9tc2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGVudF90eXBlPTNEJ3RleHQvcGxhaW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFwcGxpY2F0aW9uX2hlYWRlcnM9M0R7ICdtc2dfdHlwZSc9CjogJ2RhdGFfdHJh
bnNmZXInIH0gKQotICAgICAgICAgICAgICAgICAgICBtc2cucHJvcGVydGllc1sgImRlbGl2ZXJ5
X21vZGUiIF0gPTNEIDIKLSAgICAgICAgICAgICAgICAgICAgY2hhbi5iYXNpY19wdWJsaXNoKCBt
c2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjaGFuZ2U9M0R0
cmFucy5hcHAuY29uZmlnLmFtcXBbID0KJ2V4Y2hhbmdlJyBdLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJvdXRpbmdfa2V5PTNEdHJhbnMuYXBwLmNvbmZpZy5hbXE9
CnBbICdyb3V0aW5nX2tleScgXSApCi0gICAgICAgICAgICAgICAgICAgIGNoYW4uY2xvc2UoKQot
ICAgICAgICAgICAgICAgICAgICBjb25uLmNsb3NlKCkKLSAgICAgICAgICAgICAgICBleGNlcHQg
RXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0zRCAiRXJyb3Igc2Vu
ZGluZyB0aGUgZGF0YSB0cmFuc2ZlciBtZXNzYWdlIHQ9Cm8gdGhlIEdhbGF4eSBBTVFQIG1lc3Nh
Z2UgcXVldWU6PGJyLz4lcyIgJSBzdHIoZSkKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0z
RCAiZXJyb3IiCi0gICAgICAgICAgICBpZiBub3QgbWVzc2FnZToKLSAgICAgICAgICAgICAgICBt
ZXNzYWdlID0zRCAiJWkgZGF0YXNldHMgaGF2ZSBiZWVuIHF1ZXVlZCBmb3IgdHJhbnNmZXIgZnJv
PQptIHRoZSBleHRlcm5hbCBzZXJ2aWNlLiIgJSBsZW4oIHNhbXBsZV9kYXRhc2V0cyApCi0gICAg
ICAgICAgICAgICAgc3RhdHVzID0zRCAiZG9uZSIKKyAgICAgICAgICAgIG1lc3NhZ2UgPTNEICJN
ZXNzYWdlIHF1ZXVlIHRyYW5zZmVyIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQsIHBsPQplYXNlIHNl
dCBlbmFibGVfYmV0YV9qb2JfbWFuYWdlcnMgPTNEIFRydWUgaW4gZ2FsYXh5LmluaSIKKyAgICAg
ICAgICAgIHN0YXR1cyA9M0QgImVycm9yIgogICAgICAgICByZXR1cm4gdHJhbnMucmVzcG9uc2Uu
c2VuZF9yZWRpcmVjdCggd2ViLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmU9CnF1ZXN0c19hZG1p
bicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWN0aW9uPTNEJ21hbmFnZT0KX2RhdGFzZXRzJywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVfaWQ9M0R0cmFuPQpz
LnNlY3VyaXR5LmVuY29kZV9pZCggc2FtcGxlLmlkICksCgpkaWZmIC1yIDIwZDVhMjFhZGQ5YWI0
NWQ5YzRjNWMyNmQ2ODY5OWU3NzEzMTAwZGQgLXIgNmMyZmQ3YmRkYzZjMWM0ZThhNjQwOTM9CmYz
ZmM0YzQzNzBmNTE1YjRlIGxpYi9nYWxheHkvd2ViYXBwcy90b29sX3NoZWQvY29udHJvbGxlcnMv
cmVwb3NpdG9yeS5weQotLS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvdG9vbF9zaGVkL2NvbnRyb2xs
ZXJzL3JlcG9zaXRvcnkucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL3Rvb2xfc2hlZC9jb250
cm9sbGVycy9yZXBvc2l0b3J5LnB5CkBAIC0xNjM1LDExICsxNjM1LDExIEBACiAgICAgICAgIHJl
dHVybiAnJwo9MjAKICAgICBAd2ViLmpzb24KLSAgICBkZWYgZ2V0X2ZpbGVfY29udGVudHMoIHNl
bGYsIHRyYW5zLCBmaWxlX3BhdGggKToKKyAgICBkZWYgZ2V0X2ZpbGVfY29udGVudHMoIHNlbGYs
IHRyYW5zLCBmaWxlX3BhdGgsIHJlcG9zaXRvcnlfaWQgKToKICAgICAgICAgIyBBdm9pZCBjYWNo
aW5nCiAgICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ1ByYWdtYSddID0zRCAnbm8tY2Fj
aGUnCiAgICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ0V4cGlyZXMnXSA9M0QgJzAnCi0g
ICAgICAgIHJldHVybiBzdWMuZ2V0X3JlcG9zaXRvcnlfZmlsZV9jb250ZW50cyggZmlsZV9wYXRo
ICkKKyAgICAgICAgcmV0dXJuIHN1Yy5nZXRfcmVwb3NpdG9yeV9maWxlX2NvbnRlbnRzKCB0cmFu
cy5hcHAsIGZpbGVfcGF0aCwgcmVwPQpvc2l0b3J5X2lkICkKPTIwCiAgICAgQHdlYi5leHBvc2UK
ICAgICBkZWYgZ2V0X2Z1bmN0aW9uYWxfdGVzdF9yc3MoIHNlbGYsIHRyYW5zLCAqKmt3ZCApOgpA
QCAtMjU4OSwxMSArMjU4OSwxMSBAQAogICAgICAgICByZXR1cm4gJycKPTIwCiAgICAgQHdlYi5q
c29uCi0gICAgZGVmIG9wZW5fZm9sZGVyKCBzZWxmLCB0cmFucywgZm9sZGVyX3BhdGggKToKKyAg
ICBkZWYgb3Blbl9mb2xkZXIoIHNlbGYsIHRyYW5zLCBmb2xkZXJfcGF0aCwgcmVwb3NpdG9yeV9p
ZCApOgogICAgICAgICAjIEF2b2lkIGNhY2hpbmcKICAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVh
ZGVyc1snUHJhZ21hJ10gPTNEICduby1jYWNoZScKICAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVh
ZGVyc1snRXhwaXJlcyddID0zRCAnMCcKLSAgICAgICAgcmV0dXJuIHN1Yy5vcGVuX3JlcG9zaXRv
cnlfZmlsZXNfZm9sZGVyKCBmb2xkZXJfcGF0aCApCisgICAgICAgIHJldHVybiBzdWMub3Blbl9y
ZXBvc2l0b3J5X2ZpbGVzX2ZvbGRlciggdHJhbnMuYXBwLCBmb2xkZXJfcGF0aCwgcj0KZXBvc2l0
b3J5X2lkICkKPTIwCiAgICAgQHdlYi5leHBvc2UKICAgICBkZWYgcHJldmlld190b29sc19pbl9j
aGFuZ2VzZXQoIHNlbGYsIHRyYW5zLCByZXBvc2l0b3J5X2lkLCAqKmt3ZCApOgoKZGlmZiAtciAy
MGQ1YTIxYWRkOWFiNDVkOWM0YzVjMjZkNjg2OTllNzcxMzEwMGRkIC1yIDZjMmZkN2JkZGM2YzFj
NGU4YTY0MDkzPQpmM2ZjNGM0MzcwZjUxNWI0ZSBsaWIvZ2FsYXh5L3dlYmFwcHMvdG9vbF9zaGVk
L2ZyYW1ld29yay9taWRkbGV3YXJlL2hnLnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy90b29s
X3NoZWQvZnJhbWV3b3JrL21pZGRsZXdhcmUvaGcucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBz
L3Rvb2xfc2hlZC9mcmFtZXdvcmsvbWlkZGxld2FyZS9oZy5weQpAQCAtOSw3ICs5LDcgQEAKIGZy
b20gcGFzdGUuaHR0cGhlYWRlcnMgaW1wb3J0IEFVVEhfVFlQRQogZnJvbSBwYXN0ZS5odHRwaGVh
ZGVycyBpbXBvcnQgUkVNT1RFX1VTRVIKPTIwCi1mcm9tIGdhbGF4eS51dGlsIGltcG9ydCBhc2Jv
b2wKK2Zyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IGFzYm9vbCwgc2FmZV9yZWxwYXRoCiBmcm9tIGdh
bGF4eS51dGlsLmhhc2hfdXRpbCBpbXBvcnQgbmV3X3NlY3VyZV9oYXNoCiBmcm9tIHRvb2xfc2hl
ZC51dGlsIGltcG9ydCBoZ191dGlsCiBmcm9tIHRvb2xfc2hlZC51dGlsIGltcG9ydCBjb21taXRf
dXRpbApAQCAtMTE0LDcgKzExNCwxMSBAQAogICAgICAgICAgICAgICAgICAgICBmaC53cml0ZSgg
Y2h1bmsgKQogICAgICAgICAgICAgICAgIGZoLmNsb3NlKCkKICAgICAgICAgICAgICAgICBmaCA9
M0Qgb3BlbiggdG1wX2ZpbGVuYW1lLCAncmInICkKLSAgICAgICAgICAgICAgICBjaGFuZ2VzZXRf
Z3JvdXBzID0zRCBqc29uLmxvYWRzKCBoZ191dGlsLmJ1bmRsZV90b19qc29uKCBmPQpoICkgKQor
ICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlc2V0X2dyb3Vw
cyA9M0QganNvbi5sb2FkcyggaGdfdXRpbC5idW5kbGVfdG9fanNvPQpuKCBmaCApICkKKyAgICAg
ICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIG1z
ZyA9M0QgJ1lvdXIgdmVyc2lvbiBvZiBNZXJjdXJpYWwgaXMgbm90IHN1cHBvcnRlZC4gUD0KbGVh
c2UgdXNlIGEgdmVyc2lvbiA8IDMuNScKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu
X19kaXNwbGF5X2V4Y2VwdGlvbl9yZW1vdGVseSggc3RhcnRfcmVzcG9uPQpzZSwgbXNnICkKICAg
ICAgICAgICAgICAgICBmaC5jbG9zZSgpCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAg
ICAgICAgICAgICBvcy51bmxpbmsoIHRtcF9maWxlbmFtZSApCkBAIC0xMjMsNiArMTI3LDE5IEBA
CiAgICAgICAgICAgICAgICAgaWYgY2hhbmdlc2V0X2dyb3VwczoKICAgICAgICAgICAgICAgICAg
ICAgIyBDaGVjayB0aGUgcmVwb3NpdG9yeSB0eXBlIHRvIG1ha2Ugc3VyZSBpbmFwcHJvcHJpYXRl
PQogZmlsZXMgYXJlIG5vdCBiZWluZyBwdXNoZWQuCiAgICAgICAgICAgICAgICAgICAgIGlmICdQ
QVRIX0lORk8nIGluIGVudmlyb246CisgICAgICAgICAgICAgICAgICAgICAgICAjIEVuc3VyZSB0
aGVyZSBhcmUgbm8gc3ltbGlua3Mgd2l0aCB0YXJnZXRzIG91dHNpZD0KZSB0aGUgcmVwbworICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yIGVudHJ5IGluIGNoYW5nZXNldF9ncm91cHM6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGVuKCBlbnRyeSApID0zRD0zRCAyOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgY2hhbmdlX2xpc3QgPTNEIGVudHJ5
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNoYW5n
ZV9saXN0LCBsaXN0KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5n
ZV9saXN0ID0zRCBbY2hhbmdlX2xpc3RdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZvciBjaGFuZ2UgaW4gY2hhbmdlX2xpc3Q6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmb3IgcGF0Y2ggaW4gY2hhbmdlWydkYXRhJ106CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0zRCBwYXRjaFsnYmxvY2snXS5zdHJpcCgpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAoIHBhdGNoWydlbmQn
XSAtIHBhdGNoWydzdGFydD0KJ10gPTNEPTNEIDAgKSBhbmQgbm90IHNhZmVfcmVscGF0aCggdGFy
Z2V0ICkgKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNn
ID0zRCAiQ2hhbmdlcyBpbmNsdWRlIGEgc3ltPQpsaW5rIG91dHNpZGUgb2YgdGhlIHJlcG9zaXRv
cnk6ICVzIC0+ICVzIiAlICggZmlsZW5hbWUsIHRhcmdldCApCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxvZy53YXJuaW5nKCBtc2cgKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fX2Rpc3BsYXlfZXhj
ZXB0aW89Cm5fcmVtb3RlbHkoIHN0YXJ0X3Jlc3BvbnNlLCBtc2cgKQogICAgICAgICAgICAgICAg
ICAgICAgICAgIyBJbnN0YW50aWF0ZSBhIGRhdGFiYXNlIGNvbm5lY3Rpb24KICAgICAgICAgICAg
ICAgICAgICAgICAgIGVuZ2luZSA9M0Qgc3FsYWxjaGVteS5jcmVhdGVfZW5naW5lKCBzZWxmLmRi
X3VybCApCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uID0zRCBlbmdpbmUuY29u
bmVjdCgpCgpkaWZmIC1yIDIwZDVhMjFhZGQ5YWI0NWQ5YzRjNWMyNmQ2ODY5OWU3NzEzMTAwZGQg
LXIgNmMyZmQ3YmRkYzZjMWM0ZThhNjQwOTM9CmYzZmM0YzQzNzBmNTE1YjRlIGxpYi9nYWxheHkv
d29ya2Zsb3cvcmVuZGVyLnB5Ci0tLSBhL2xpYi9nYWxheHkvd29ya2Zsb3cvcmVuZGVyLnB5Cisr
KyBiL2xpYi9nYWxheHkvd29ya2Zsb3cvcmVuZGVyLnB5CkBAIC0zMCw4ICszMCw4IEBACiAgICAg
ICAgIGNhbnZhcy5hcHBlbmQoIHNlbGYuYm94ZXMgKQogICAgICAgICBjYW52YXMuYXBwZW5kKCBz
ZWxmLnRleHQgKQogICAgICAgICB3aWR0aCwgaGVpZ2h0ID0zRCAoIG1heF94ICsgbWF4X3dpZHRo
ICsgNTAgKSwgbWF4X3kgKyAzMDAKLSAgICAgICAgY2FudmFzWyAnd2lkdGgnIF0gPTNEICIlcyBw
eCIgJSB3aWR0aAotICAgICAgICBjYW52YXNbICdoZWlnaHQnIF0gPTNEICIlcyBweCIgJSBoZWln
aHQKKyAgICAgICAgY2FudmFzWyAnd2lkdGgnIF0gPTNEICIlc3B4IiAlIHdpZHRoCisgICAgICAg
IGNhbnZhc1sgJ2hlaWdodCcgXSA9M0QgIiVzcHgiICUgaGVpZ2h0CiAgICAgICAgIGNhbnZhc1sg
J3ZpZXdCb3gnIF0gPTNEICIwIDAgJXMgJXMiICUgKCB3aWR0aCwgaGVpZ2h0ICkKPTIwCiAgICAg
ZGVmIGFkZF9ib3hlcyggc2VsZiwgc3RlcF9kaWN0LCB3aWR0aCwgbmFtZV9maWxsICk6CkBAIC0x
MDcsNyArMTA3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFkanVzdGVkWyAxIF0gLSBNQVJHSU4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbl9jb29yZHNbIDAgXSAtIDEwLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fY29vcmRzWyAxIF0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJvd19lbmQ9M0QidHJ1ZSIgKS5TVkco
KSApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJvd19l
bmQ9M0QiY29ubl8lcyIgJSAobGVuKD0Kc2VsZi5jb25uZWN0b3JzLmtleXMoKSkgKyAxKSApLlNW
RygpICkKPTIwCiAgICAgZGVmIGFkZF9zdGVwcyggc2VsZiwgaGlnaGxpZ2h0X2Vycm9ycz0zREZh
bHNlICk6CiAgICAgICAgICMgT25seSBoaWdobGlnaHQgbWlzc2luZyB0b29scyBpZiBkaXNwbGF5
aW5nIGluIHRoZSB0b29sIHNoZWQuCgpkaWZmIC1yIDIwZDVhMjFhZGQ5YWI0NWQ5YzRjNWMyNmQ2
ODY5OWU3NzEzMTAwZGQgLXIgNmMyZmQ3YmRkYzZjMWM0ZThhNjQwOTM9CmYzZmM0YzQzNzBmNTE1
YjRlIGxpYi9nYWxheHkvd29ya2Zsb3cvcnVuLnB5Ci0tLSBhL2xpYi9nYWxheHkvd29ya2Zsb3cv
cnVuLnB5CisrKyBiL2xpYi9nYWxheHkvd29ya2Zsb3cvcnVuLnB5CkBAIC0yODUsNyArMjg1LDEw
IEBACiAgICAgICAgICAgICAgICAgcmFpc2UgbW9kdWxlcy5EZWxheWVkV29ya2Zsb3dFdmFsdWF0
aW9uKCkKICAgICAgICAgcmV0dXJuIHJlcGxhY2VtZW50Cj0yMAotICAgIGRlZiBzZXRfb3V0cHV0
c19mb3JfaW5wdXQoIHNlbGYsIHN0ZXAsIG91dHB1dHM9M0R7fSApOgorICAgIGRlZiBzZXRfb3V0
cHV0c19mb3JfaW5wdXQoIHNlbGYsIHN0ZXAsIG91dHB1dHM9M0ROb25lICk6CisgICAgICAgIGlm
IG91dHB1dHMgaXMgTm9uZToKKyAgICAgICAgICAgIG91dHB1dHMgPTNEIHt9CisKICAgICAgICAg
aWYgc2VsZi5pbnB1dHNfYnlfc3RlcF9pZDoKICAgICAgICAgICAgIG91dHB1dHNbICdvdXRwdXQn
IF0gPTNEIHNlbGYuaW5wdXRzX2J5X3N0ZXBfaWRbIHN0ZXAuaWQgXQo9MjAKCmRpZmYgLXIgMjBk
NWEyMWFkZDlhYjQ1ZDljNGM1YzI2ZDY4Njk5ZTc3MTMxMDBkZCAtciA2YzJmZDdiZGRjNmMxYzRl
OGE2NDA5Mz0KZjNmYzRjNDM3MGY1MTViNGUgbGliL3Rvb2xfc2hlZC9jYXBzdWxlL2NhcHN1bGVf
bWFuYWdlci5weQotLS0gYS9saWIvdG9vbF9zaGVkL2NhcHN1bGUvY2Fwc3VsZV9tYW5hZ2VyLnB5
CisrKyBiL2xpYi90b29sX3NoZWQvY2Fwc3VsZS9jYXBzdWxlX21hbmFnZXIucHkKQEAgLTEyLDYg
KzEyLDcgQEAKIGZyb20gZ2FsYXh5Lm1vZGVsLm9ybSBpbXBvcnQgYW5kXwogZnJvbSBnYWxheHku
dXRpbCBpbXBvcnQgYXNib29sCiBmcm9tIGdhbGF4eS51dGlsIGltcG9ydCBDSFVOS19TSVpFCitm
cm9tIGdhbGF4eS51dGlsIGltcG9ydCBzYWZlX3JlbHBhdGgKIGZyb20gZ2FsYXh5LnV0aWwub2Rp
Y3QgaW1wb3J0IG9kaWN0Cj0yMAogZnJvbSB0b29sX3NoZWQuZGVwZW5kZW5jaWVzLnJlcG9zaXRv
cnkucmVsYXRpb25fYnVpbGRlciBpbXBvcnQgUmVsYXRpb25CdWk9CmxkZXIKQEAgLTcyNywyOSAr
NzI4LDE2IEBACiAgICAgICAgIHJlcG8gPTNEIGhnX3V0aWwuZ2V0X3JlcG9fZm9yX3JlcG9zaXRv
cnkoIHNlbGYuYXBwLCByZXBvc2l0b3J5PTNETj0Kb25lLCByZXBvX3BhdGg9M0RyZXBvX2Rpciwg
Y3JlYXRlPTNERmFsc2UgKQogICAgICAgICB1bmRlc2lyYWJsZV9kaXJzX3JlbW92ZWQgPTNEIDAK
ICAgICAgICAgdW5kZXNpcmFibGVfZmlsZXNfcmVtb3ZlZCA9M0QgMAotICAgICAgICBvaywgZXJy
b3JfbWVzc2FnZSA9M0QgY29tbWl0X3V0aWwuY2hlY2tfYXJjaGl2ZSggcmVwb3NpdG9yeSwgYXJj
aGk9CnZlICkKLSAgICAgICAgaWYgb2s6CisgICAgICAgIGNoZWNrX3Jlc3VsdHMgPTNEIGNvbW1p
dF91dGlsLmNoZWNrX2FyY2hpdmUoIHJlcG9zaXRvcnksIGFyY2hpdmUgKQorICAgICAgICAjIFdl
IGZpbHRlciBvdXQgdW5kZXNpcmFibGUgZmlsZXMgYnV0IGZhaWwgb24gdW5kZXNyaWFibGUgZGly
cy4gTm90CisgICAgICAgICMgc3VyZSB3aHksIGp1c3QgdHJ5aW5nIHRvIG1haW50YWluIHRoZSBz
YW1lIGJlaGF2aW9yIGFzIGJlZm9yZS4gLT0KbmF0ZQorICAgICAgICBpZiBub3QgY2hlY2tfcmVz
dWx0cy5pbnZhbGlkIGFuZCBub3QgY2hlY2tfcmVzdWx0cy51bmRlc2lyYWJsZV9kaXI9CnM6CiAg
ICAgICAgICAgICBmdWxsX3BhdGggPTNEIG9zLnBhdGguYWJzcGF0aCggcmVwb19kaXIgKQotICAg
ICAgICAgICAgZmlsZW5hbWVzX2luX2FyY2hpdmUgPTNEIFtdCi0gICAgICAgICAgICBmb3IgdGFy
aW5mb19vYmogaW4gYXJjaGl2ZS5nZXRtZW1iZXJzKCk6Ci0gICAgICAgICAgICAgICAgIyBDaGVj
ayBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgaW4gdGhlIGFyY2hpdmUuCi0gICAgICAgICAgICAgICAg
b2sgPTNEIG9zLnBhdGguYmFzZW5hbWUoIHRhcmluZm9fb2JqLm5hbWUgKSBub3QgaW4gY29tbWl0
Xz0KdXRpbC5VTkRFU0lSQUJMRV9GSUxFUwotICAgICAgICAgICAgICAgIGlmIG9rOgotICAgICAg
ICAgICAgICAgICAgICBmb3IgZmlsZV9wYXRoX2l0ZW0gaW4gdGFyaW5mb19vYmoubmFtZS5zcGxp
dCggJy8nICk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBmaWxlX3BhdGhfaXRlbSBpbiBj
b21taXRfdXRpbC5VTkRFU0lSQUJMRV9ESVJTOgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuZGVzaXJhYmxlX2RpcnNfcmVtb3ZlZCArPTNEIDEKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlcnJvcl9tZXNzYWdlID0zRCAnSW1wb3J0IGZhaWxlZDogaW52YWxpZCBmaWxlPQogcGF0
aCA8Yj4lczwvYj4gaW4gYXJjaGl2ZSA8Yj4lczwvYj4nICUgXAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoIHN0ciggZmlsZV9wYXRoX2l0ZW0gKSwgc3RyKCBhcmNoaXZlX2ZpbGU9
Cl9uYW1lICkgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHNfZGljdFsgJ29r
JyBdID0zRCBGYWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHNfZGljdFsg
J2Vycm9yX21lc3NhZ2UnIF0gKz0zRCBlcnJvcl9tZXM9CnNhZ2UKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0c19kaWN0Ci0gICAgICAgICAgICAgICAgICAgIGZpbGVu
YW1lc19pbl9hcmNoaXZlLmFwcGVuZCggdGFyaW5mb19vYmoubmFtZSApCi0gICAgICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdW5kZXNpcmFibGVfZmlsZXNfcmVtb3ZlZCAr
PTNEIDEKICAgICAgICAgICAgICMgRXh0cmFjdCB0aGUgdXBsb2FkZWQgYXJjaGl2ZSB0byB0aGUg
cmVwb3NpdG9yeSByb290LgotICAgICAgICAgICAgYXJjaGl2ZS5leHRyYWN0YWxsKCBwYXRoPTNE
ZnVsbF9wYXRoICkKKyAgICAgICAgICAgIGFyY2hpdmUuZXh0cmFjdGFsbCggcGF0aD0zRGZ1bGxf
cGF0aCwgbWVtYmVycz0zRGNoZWNrX3Jlc3VsdHMuPQp2YWxpZCApCiAgICAgICAgICAgICBhcmNo
aXZlLmNsb3NlKCkKLSAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlbmFtZXNfaW5fYXJj
aGl2ZToKKyAgICAgICAgICAgIGZvciB0YXJfbWVtYmVyIGluIGNoZWNrX3Jlc3VsdHMudmFsaWQ6
CisgICAgICAgICAgICAgICAgZmlsZW5hbWUgPTNEIHRhcl9tZW1iZXIubmFtZQogICAgICAgICAg
ICAgICAgIHVwbG9hZGVkX2ZpbGVfbmFtZSA9M0Qgb3MucGF0aC5qb2luKCBmdWxsX3BhdGgsIGZp
bGVuYW1lICkKICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLnNwbGl0KCB1cGxvYWRlZF9maWxl
X25hbWUgKVsgLTEgXSA9M0Q9M0QgcnRfdXRpPQpsLlJFUE9TSVRPUllfREVQRU5ERU5DWV9ERUZJ
TklUSU9OX0ZJTEVOQU1FOgogICAgICAgICAgICAgICAgICAgICAjIEluc3BlY3QgdGhlIGNvbnRl
bnRzIG9mIHRoZSBmaWxlIHRvIHNlZSBpZiB0b29sc2hlZCA9Cm9yIGNoYW5nZXNldF9yZXZpc2lv
biBhdHRyaWJ1dGVzCkBAIC03NzYsNiArNzY0LDkgQEAKICAgICAgICAgICAgIG5ld19yZXBvX2Fs
ZXJ0ID0zRCBUcnVlCiAgICAgICAgICAgICAjIFNpbmNlIHRoZSByZXBvc2l0b3J5IGlzIG5ldywg
dGhlIGZvbGxvd2luZyBtdXN0IGJlIEZhbHNlLgogICAgICAgICAgICAgcmVtb3ZlX3JlcG9fZmls
ZXNfbm90X2luX3RhciA9M0QgRmFsc2UKKyAgICAgICAgICAgIGZpbGVuYW1lc19pbl9hcmNoaXZl
ID0zRCBbIG1lbWJlci5uYW1lIGZvciBtZW1iZXIgaW4gY2hlY2tfcmVzPQp1bHRzLnZhbGlkIF0K
KyAgICAgICAgICAgIHVuZGVzaXJhYmxlX2ZpbGVzX3JlbW92ZWQgPTNEIGxlbiggY2hlY2tfcmVz
dWx0cy51bmRlc2lyYWJsZV9mPQppbGVzICkKKyAgICAgICAgICAgIHVuZGVzaXJhYmxlX2RpcnNf
cmVtb3ZlZCA9M0QgMAogICAgICAgICAgICAgb2ssIGVycm9yX21lc3NhZ2UsIGZpbGVzX3RvX3Jl
bW92ZSwgY29udGVudF9hbGVydF9zdHIsIHVuZGVzaXI9CmFibGVfZGlyc19yZW1vdmVkLCB1bmRl
c2lyYWJsZV9maWxlc19yZW1vdmVkID0zRCBcCiAgICAgICAgICAgICAgICAgY29tbWl0X3V0aWwu
aGFuZGxlX2RpcmVjdG9yeV9jaGFuZ2VzKCBzZWxmLmFwcCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaG9zdCwKQEAgLTgwNiw3ICs3
OTcsMTMgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGFyY2hpdmUuY2xvc2UoKQogICAg
ICAgICAgICAgcmVzdWx0c19kaWN0WyAnb2snIF0gPTNEIEZhbHNlCi0gICAgICAgICAgICByZXN1
bHRzX2RpY3RbICdlcnJvcl9tZXNzYWdlJyBdICs9M0QgZXJyb3JfbWVzc2FnZQorICAgICAgICAg
ICAgcmVzdWx0c19kaWN0WyAnZXJyb3JfbWVzc2FnZScgXSArPTNEICdDYXBzdWxlIGVycm9ycyB3
ZXJlIGZvdW49CmQ6ICcKKyAgICAgICAgICAgIGlmIGNoZWNrX3Jlc3VsdHMuaW52YWxpZDoKKyAg
ICAgICAgICAgICAgICByZXN1bHRzX2RpY3RbICdlcnJvcl9tZXNzYWdlJyBdICs9M0QgJyVzIElu
dmFsaWQgZmlsZXMgd2VyPQplOiAlcy4nICUgKAorICAgICAgICAgICAgICAgICAgICAnICcuam9p
biggY2hlY2tfcmVzdWx0cy5lcnJvcnMgKSwgJywgJy5qb2luKCBjaGVja19yZXM9CnVsdHMuaW52
YWxpZCApICkKKyAgICAgICAgICAgIGlmIGNoZWNrX3Jlc3VsdHMudW5kZXNpcmFibGVfZGlyczoK
KyAgICAgICAgICAgICAgICByZXN1bHRzX2RpY3RbICdlcnJvcl9tZXNzYWdlJyBdICs9M0QgJyBV
bmRlc2lyYWJsZSBkaXJlY3RvPQpyaWVzIHdlcmU6ICVzLicgJSAoCisgICAgICAgICAgICAgICAg
ICAgICcsICcuam9pbiggY2hlY2tfcmVzdWx0cy51bmRlc2lyYWJsZV9kaXJzICkgKQogICAgICAg
ICByZXR1cm4gcmVzdWx0c19kaWN0Cj0yMAogICAgIGRlZiB1cGxvYWRfY2Fwc3VsZSggc2VsZiwg
Kiprd2QgKToKQEAgLTg2Myw2ICs4NjAsMTIgQEAKICAgICAgICAgICAgICAgICByZXR1cm5fZGlj
dFsgJ3N0YXR1cycgXSA9M0QgJ2Vycm9yJwogICAgICAgICAgICAgICAgIHVwbG9hZGVkX2ZpbGUu
Y2xvc2UoKQogICAgICAgICAgICAgICAgIHJldHVybiByZXR1cm5fZGljdAorICAgICAgICAgICAg
aWYgbm90IHNlbGYudmFsaWRhdGVfYXJjaGl2ZV9wYXRocyggdGFyX2FyY2hpdmUgKToKKyAgICAg
ICAgICAgICAgICByZXR1cm5fZGljdFsgJ3N0YXR1cycgXSA9M0QgJ2Vycm9yJworICAgICAgICAg
ICAgICAgIHJldHVybl9kaWN0WyAnbWVzc2FnZScgXSA9M0QgKCAnVGhpcyBjYXBzdWxlIGNvbnRh
aW5zIGFuIGk9Cm52YWxpZCBtZW1iZXIgdHlwZSAnCisgICAgICAgICAgICAgICAgICAgICdvciBh
IGZpbGUgb3V0c2lkZSB0aGUgYXJjaGl2ZSBwYXRoLicgKQorICAgICAgICAgICAgICAgIHVwbG9h
ZGVkX2ZpbGUuY2xvc2UoKQorICAgICAgICAgICAgICAgIHJldHVybiByZXR1cm5fZGljdAogICAg
ICAgICAgICAgcmV0dXJuX2RpY3RbICd0YXJfYXJjaGl2ZScgXSA9M0QgdGFyX2FyY2hpdmUKICAg
ICAgICAgICAgIHJldHVybl9kaWN0WyAnY2Fwc3VsZV9maWxlX25hbWUnIF0gPTNEIHVwbG9hZGVk
X2ZpbGVfZmlsZW5hbWUKICAgICAgICAgICAgIHVwbG9hZGVkX2ZpbGUuY2xvc2UoKQpAQCAtODcy
LDYgKzg3NSwxOCBAQAogICAgICAgICAgICAgcmV0dXJuIHJldHVybl9kaWN0CiAgICAgICAgIHJl
dHVybiByZXR1cm5fZGljdAo9MjAKKyAgICBkZWYgdmFsaWRhdGVfYXJjaGl2ZV9wYXRocyggc2Vs
ZiwgdGFyX2FyY2hpdmUgKToKKyAgICAgICAgJycnCisgICAgICAgIEluc3BlY3QgdGhlIGFyY2hp
dmUgY29udGVudHMgdG8gZW5zdXJlIHRoYXQgdGhlcmUgYXJlIG5vIHJpc2t5IHN5bT0KbGlua3Mu
CisgICAgICAgIFJldHVybnMgVHJ1ZSBpZiBhIHN1c3BpY2lvdXMgcGF0aCBpcyBmb3VuZC4KKyAg
ICAgICAgJycnCisgICAgICAgIGZvciBtZW1iZXIgaW4gdGFyX2FyY2hpdmUuZ2V0bWVtYmVycygp
OgorICAgICAgICAgICAgaWYgbm90ICggbWVtYmVyLmlzZGlyKCkgb3IgbWVtYmVyLmlzZmlsZSgp
IG9yIG1lbWJlci5pc2xuaygpICk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAg
ICAgICAgICBlbGlmIG5vdCBzYWZlX3JlbHBhdGgoIG1lbWJlci5uYW1lICk6CisgICAgICAgICAg
ICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCisKICAgICBkZWYgdmFsaWRh
dGVfY2Fwc3VsZSggc2VsZiwgKiprd2QgKToKICAgICAgICAgIiIiCiAgICAgICAgIEluc3BlY3Qg
dGhlIHVwbG9hZGVkIGNhcHN1bGUncyBtYW5pZmVzdCBhbmQgaXRzIGNvbnRhaW5lZCBmaWxlcyB0
bz0KIGVuc3VyZSBpdCBpcyBhIHZhbGlkCgpkaWZmIC1yIDIwZDVhMjFhZGQ5YWI0NWQ5YzRjNWMy
NmQ2ODY5OWU3NzEzMTAwZGQgLXIgNmMyZmQ3YmRkYzZjMWM0ZThhNjQwOTM9CmYzZmM0YzQzNzBm
NTE1YjRlIGxpYi90b29sX3NoZWQvZ2FsYXh5X2luc3RhbGwvdG9vbF9kZXBlbmRlbmNpZXMvcmVj
aXBlL3N0ZT0KcF9oYW5kbGVyLnB5Ci0tLSBhL2xpYi90b29sX3NoZWQvZ2FsYXh5X2luc3RhbGwv
dG9vbF9kZXBlbmRlbmNpZXMvcmVjaXBlL3N0ZXBfaGFuZGxlci5weQorKysgYi9saWIvdG9vbF9z
aGVkL2dhbGF4eV9pbnN0YWxsL3Rvb2xfZGVwZW5kZW5jaWVzL3JlY2lwZS9zdGVwX2hhbmRsZXIu
cHkKQEAgLTExMDUsNiArMTEwNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICMgSWYgc2V0IHRv
IGEgdHJ1ZSB2YWx1ZSB0aGVuIE1ha2VNYWtlcidzIHByb21wdCBmdW5jdD0KaW9uIHdpbGwgYWx3
YXlzCiAgICAgICAgICAgICAgICAgICAgICMgcmV0dXJuIHRoZSBkZWZhdWx0IHdpdGhvdXQgd2Fp
dGluZyBmb3IgdXNlciBpbnB1dC4KICAgICAgICAgICAgICAgICAgICAgY21kID0zRCAnJydQRVJM
X01NX1VTRV9ERUZBVUxUPTNEMTsgZXhwb3J0IFBFUkxfTU1fVVNFPQpfREVGQVVMVDsgJycnCisg
ICAgICAgICAgICAgICAgICAgIGNtZCArPTNEICdIT01FPTNEJXM7IGV4cG9ydCBIT01FOyAnICUg
d29ya19kaXIKICAgICAgICAgICAgICAgICAgICAgY21kICs9M0QgJ2V4cG9ydCBQRVJMNUxJQj0z
RCRJTlNUQUxMX0RJUi9saWIvcGVybDU6JFBFPQpSTDVMSUI7JwogICAgICAgICAgICAgICAgICAg
ICBjbWQgKz0zRCAnZXhwb3J0IFBBVEg9M0QkSU5TVEFMTF9ESVIvYmluOiRQQVRIOycKICAgICAg
ICAgICAgICAgICAgICAgaWYgcGVybF9wYWNrYWdlLmZpbmQoICc6Ly8nICkgIT0zRCAtMToKCmRp
ZmYgLXIgMjBkNWEyMWFkZDlhYjQ1ZDljNGM1YzI2ZDY4Njk5ZTc3MTMxMDBkZCAtciA2YzJmZDdi
ZGRjNmMxYzRlOGE2NDA5Mz0KZjNmYzRjNDM3MGY1MTViNGUgbGliL3Rvb2xfc2hlZC90b29scy90
b29sX3ZlcnNpb25fbWFuYWdlci5weQotLS0gYS9saWIvdG9vbF9zaGVkL3Rvb2xzL3Rvb2xfdmVy
c2lvbl9tYW5hZ2VyLnB5CisrKyBiL2xpYi90b29sX3NoZWQvdG9vbHMvdG9vbF92ZXJzaW9uX21h
bmFnZXIucHkKQEAgLTEsNiArMSw4IEBACiBpbXBvcnQgbG9nZ2luZwo9MjAKLWZyb20gZ2FsYXh5
Lm1vZGVsLm9ybSBpbXBvcnQgYW5kXworZnJvbSBnYWxheHkgaW1wb3J0IGVnZ3MKK2VnZ3MucmVx
dWlyZSgnU1FMQWxjaGVteScpCitmcm9tIHNxbGFsY2hlbXkgaW1wb3J0IGFuZF8sIG9yXwo9MjAK
IGZyb20gdG9vbF9zaGVkLnV0aWwgaW1wb3J0IGhnX3V0aWwKIGZyb20gdG9vbF9zaGVkLnV0aWwg
aW1wb3J0IHNoZWRfdXRpbF9jb21tb24gYXMgc3VjCkBAIC0yMSw4ICsyMyw4IEBACj0yMAogICAg
IGRlZiBnZXRfdG9vbF92ZXJzaW9uX2Fzc29jaWF0aW9uKCBzZWxmLCBwYXJlbnRfdG9vbF92ZXJz
aW9uLCB0b29sX3ZlcnM9CmlvbiApOgogICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIGEgVG9v
bFZlcnNpb25Bc3NvY2lhdGlvbiBpZiBvbmUgZXhpc3RzIHRoYXQgYXNzb2NpYXRlcyB0aGUgPQp0
d28gcmVjZWl2ZWQKLSAgICAgICAgdG9vbF92ZXJzaW9ucyAgVGhpcyBmdW5jdGlvbiBpcyBjYWxs
ZWQgb25seSBmcm9tIEdhbGF4eS4KKyAgICAgICAgUmV0dXJuIGEgVG9vbFZlcnNpb25Bc3NvY2lh
dGlvbiBpZiBvbmUgZXhpc3RzIHRoYXQgYXNzb2NpYXRlcyB0aGUgPQp0d28KKyAgICAgICAgcmVj
ZWl2ZWQgdG9vbF92ZXJzaW9ucy4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgb25seSBmcm9tIEdh
bGF4eS4KICAgICAgICAgIiIiCiAgICAgICAgIGNvbnRleHQgPTNEIHNlbGYuYXBwLmluc3RhbGxf
bW9kZWwuY29udGV4dAogICAgICAgICByZXR1cm4gY29udGV4dC5xdWVyeSggc2VsZi5hcHAuaW5z
dGFsbF9tb2RlbC5Ub29sVmVyc2lvbkFzc29jaWF0aW89Cm4gKSBcCkBAIC05MCw2ICs5MiwxNiBA
QAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdG9vbF9zaGVkX3JlcG89CnNpdG9yeT0zRHRvb2xfc2hlZF9yZXBvc2l0b3J5ICkKICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC5hZGQoIHRvb2xfdmVyc2lvbl91c2luZ19wYXJlbnRf
aWQgKQogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmZsdXNoKCkKKyAgICAgICAgICAgICAg
ICAjIFJlbW92ZSBleGlzdGluZyB3cm9uZyB0b29sIHZlcnNpb24gYXNzb2NpYXRpb25zIGhhdmlu
ZworICAgICAgICAgICAgICAgICMgdG9vbF92ZXJzaW9uX3VzaW5nX3BhcmVudF9pZCBhcyBwYXJl
bnQgb3IKKyAgICAgICAgICAgICAgICAjIHRvb2xfdmVyc2lvbl91c2luZ190b29sX2d1aWQgYXMg
Y2hpbGQuCisgICAgICAgICAgICAgICAgY29udGV4dC5xdWVyeSggc2VsZi5hcHAuaW5zdGFsbF9t
b2RlbC5Ub29sVmVyc2lvbkFzc29jaWF0aT0Kb24gKSBcCisgICAgICAgICAgICAgICAgICAgICAg
IC5maWx0ZXIoIG9yXyggYW5kXyggc2VsZi5hcHAuaW5zdGFsbF9tb2RlbC5Ub29sVmVycz0KaW9u
QXNzb2NpYXRpb24udGFibGUuYy5wYXJlbnRfaWQgPTNEPTNEIHRvb2xfdmVyc2lvbl91c2luZ19w
YXJlbnRfaWQuaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5hcHAuaW5zdGFsbF9tb2RlbC5Ub29sVmVycz0KaW9uQXNzb2NpYXRpb24udGFibGUuYy50
b29sX2lkICE9M0QgdG9vbF92ZXJzaW9uX3VzaW5nX3Rvb2xfZ3VpZC5pZCApLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZF8oIHNlbGYuYXBwLmluc3RhbGxfbW9kZWwu
VG9vbFZlcnM9CmlvbkFzc29jaWF0aW9uLnRhYmxlLmMucGFyZW50X2lkICE9M0QgdG9vbF92ZXJz
aW9uX3VzaW5nX3BhcmVudF9pZC5pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLmFwcC5pbnN0YWxsX21vZGVsLlRvb2xWZXJzPQppb25Bc3NvY2lhdGlv
bi50YWJsZS5jLnRvb2xfaWQgPTNEPTNEIHRvb2xfdmVyc2lvbl91c2luZ190b29sX2d1aWQuaWQg
KSApICk9CiBcCisgICAgICAgICAgICAgICAgICAgICAgIC5kZWxldGUoKQorICAgICAgICAgICAg
ICAgIGNvbnRleHQuZmx1c2goKQogICAgICAgICAgICAgICAgIHRvb2xfdmVyc2lvbl9hc3NvY2lh
dGlvbiA9M0QgXAogICAgICAgICAgICAgICAgICAgICBzZWxmLmdldF90b29sX3ZlcnNpb25fYXNz
b2NpYXRpb24oIHRvb2xfdmVyc2lvbl91c2luZ189CnBhcmVudF9pZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sX3ZlcnNpb25fdXNp
bmdfPQp0b29sX2d1aWQgKQoKZGlmZiAtciAyMGQ1YTIxYWRkOWFiNDVkOWM0YzVjMjZkNjg2OTll
NzcxMzEwMGRkIC1yIDZjMmZkN2JkZGM2YzFjNGU4YTY0MDkzPQpmM2ZjNGM0MzcwZjUxNWI0ZSBs
aWIvdG9vbF9zaGVkL3V0aWwvY29tbWl0X3V0aWwucHkKLS0tIGEvbGliL3Rvb2xfc2hlZC91dGls
L2NvbW1pdF91dGlsLnB5CisrKyBiL2xpYi90b29sX3NoZWQvdXRpbC9jb21taXRfdXRpbC5weQpA
QCAtNSw4ICs1LDEwIEBACiBpbXBvcnQgb3MKIGltcG9ydCBzaHV0aWwKIGltcG9ydCB0ZW1wZmls
ZQorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQo9MjAKIGZyb20gZ2FsYXh5LmRh
dGF0eXBlcyBpbXBvcnQgY2hlY2tlcnMKK2Zyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IHNhZmVfcmVs
cGF0aAo9MjAKIGltcG9ydCB0b29sX3NoZWQucmVwb3NpdG9yeV90eXBlcy51dGlsIGFzIHJ0X3V0
aWwKIGZyb20gdG9vbF9zaGVkLnRvb2xzIGltcG9ydCBkYXRhX3RhYmxlX21hbmFnZXIKQEAgLTIx
LDMwICsyMyw0NCBAQAo9MjAKPTIwCiBkZWYgY2hlY2tfYXJjaGl2ZSggcmVwb3NpdG9yeSwgYXJj
aGl2ZSApOgorICAgIHZhbGlkID0zRCBbXQorICAgIGludmFsaWQgPTNEIFtdCisgICAgZXJyb3Jz
ID0zRCBbXQorICAgIHVuZGVzaXJhYmxlX2ZpbGVzID0zRCBbXQorICAgIHVuZGVzaXJhYmxlX2Rp
cnMgPTNEIFtdCiAgICAgZm9yIG1lbWJlciBpbiBhcmNoaXZlLmdldG1lbWJlcnMoKToKICAgICAg
ICAgIyBBbGxvdyByZWd1bGFyIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBvbmx5CiAgICAgICAgIGlm
IG5vdCAoIG1lbWJlci5pc2RpcigpIG9yIG1lbWJlci5pc2ZpbGUoKSBvciBtZW1iZXIuaXNsbmso
KSApOgotICAgICAgICAgICAgbWVzc2FnZSA9M0QgIlVwbG9hZGVkIGFyY2hpdmVzIGNhbiBvbmx5
IGluY2x1ZGUgcmVndWxhciBkaXJlY3Q9Cm9yaWVzIGFuZCBmaWxlcyAobm8gc3ltYm9saWMgbGlu
a3MsIGRldmljZXMsIGV0YykuICAiCi0gICAgICAgICAgICBtZXNzYWdlICs9M0QgIlRoZSBwcm9i
bGVtYXRpYyBtZW1iZXIgaW4gdGhpcyBhcmNoaXZlIGlzICVzLCIgJT0KIHN0ciggbWVtYmVyLm5h
bWUgKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBtZXNzYWdlCi0gICAgICAgIGZvciBpdGVt
IGluIFsgJy5oZycsICcuLicsICcvJyBdOgotICAgICAgICAgICAgaWYgbWVtYmVyLm5hbWUuc3Rh
cnRzd2l0aCggaXRlbSApOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPTNEICJVcGxvYWRlZCBh
cmNoaXZlcyBjYW5ub3QgY29udGFpbiAuaGcgZGlyZWN0b3I9CmllcywgYWJzb2x1dGUgZmlsZW5h
bWVzIHN0YXJ0aW5nIHdpdGggJy8nLCBvciBmaWxlbmFtZXMgd2l0aCB0d28gZG90cyAnLi4nLj0K
ICAiCi0gICAgICAgICAgICAgICAgbWVzc2FnZSArPTNEICJUaGUgcHJvYmxlbWF0aWMgbWVtYmVy
IGluIHRoaXMgYXJjaGl2ZSBpcyAlcz0KLiIgJSBzdHIoIG1lbWJlci5uYW1lICkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gRmFsc2UsIG1lc3NhZ2UKLSAgICAgICAgaWYgbWVtYmVyLm5hbWUgaW4g
WyAnaGdyYycgXToKLSAgICAgICAgICAgIG1lc3NhZ2UgPTNEICJVcGxvYWRlZCBhcmNoaXZlcyBj
YW5ub3QgY29udGFpbiBoZ3JjIGZpbGVzLiAgIgotICAgICAgICAgICAgbWVzc2FnZSArPTNEICJU
aGUgcHJvYmxlbWF0aWMgbWVtYmVyIGluIHRoaXMgYXJjaGl2ZSBpcyAlcy4iICU9CiBzdHIoIG1l
bWJlci5uYW1lICkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZSwgbWVzc2FnZQorICAgICAgICAg
ICAgZXJyb3JzLmFwcGVuZCggIlVwbG9hZGVkIGFyY2hpdmVzIGNhbiBvbmx5IGluY2x1ZGUgcmVn
dWxhciBkaXI9CmVjdG9yaWVzIGFuZCBmaWxlcyAobm8gc3ltYm9saWMgbGlua3MsIGRldmljZXMs
IGV0YykuIiApCisgICAgICAgICAgICBpbnZhbGlkLmFwcGVuZCggbWVtYmVyICkKKyAgICAgICAg
ICAgIGNvbnRpbnVlCisgICAgICAgIGlmIG5vdCBzYWZlX3JlbHBhdGgoIG1lbWJlci5uYW1lICk6
CisgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCAiVXBsb2FkZWQgYXJjaGl2ZXMgY2Fubm90IGNv
bnRhaW4gZmlsZXMgdGhhdCB3bz0KdWxkIGV4dHJhY3Qgb3V0c2lkZSBvZiB0aGUgYXJjaGl2ZS4i
ICkKKyAgICAgICAgICAgIGludmFsaWQuYXBwZW5kKCBtZW1iZXIgKQorICAgICAgICAgICAgY29u
dGludWUKKyAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZSggbWVtYmVyLm5hbWUgKSBpbiBVTkRF
U0lSQUJMRV9GSUxFUzoKKyAgICAgICAgICAgIHVuZGVzaXJhYmxlX2ZpbGVzLmFwcGVuZCggbWVt
YmVyICkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGhlYWQgPTNEIHRhaWwgPTNEIG1l
bWJlci5uYW1lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIHRhaWw6CisgICAgICAg
ICAgICAgICAgaGVhZCwgdGFpbCA9M0Qgb3MucGF0aC5zcGxpdChoZWFkKQorICAgICAgICAgICAg
ICAgIGlmIHRhaWwgaW4gVU5ERVNJUkFCTEVfRElSUzoKKyAgICAgICAgICAgICAgICAgICAgdW5k
ZXNpcmFibGVfZGlycy5hcHBlbmQoIG1lbWJlciApCisgICAgICAgICAgICAgICAgICAgIGFzc2Vy
dCBGYWxzZQorICAgICAgICBleGNlcHQgQXNzZXJ0aW9uRXJyb3I6CisgICAgICAgICAgICBjb250
aW51ZQogICAgICAgICBpZiByZXBvc2l0b3J5LnR5cGUgPTNEPTNEIHJ0X3V0aWwuUkVQT1NJVE9S
WV9TVUlURV9ERUZJTklUSU9OIGFuZCA9Cm1lbWJlci5uYW1lICE9M0QgcnRfdXRpbC5SRVBPU0lU
T1JZX0RFUEVOREVOQ1lfREVGSU5JVElPTl9GSUxFTkFNRToKLSAgICAgICAgICAgIG1lc3NhZ2Ug
PTNEICdSZXBvc2l0b3JpZXMgb2YgdHlwZSA8Yj5SZXBvc2l0b3J5IHN1aXRlIGRlZmluaXRpPQpv
bjwvYj4gY2FuIGNvbnRhaW4gb25seSBhIHNpbmdsZSBmaWxlIG5hbWVkIDxiPnJlcG9zaXRvcnlf
ZGVwZW5kZW5jaWVzLnhtbDw9Ci9iPi4nCi0gICAgICAgICAgICBtZXNzYWdlICs9M0QgJ1RoaXMg
YXJjaGl2ZSBjb250YWlucyBhIG1lbWJlciBuYW1lZCAlcy4nICUgc3RyKD0KIG1lbWJlci5uYW1l
ICkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZSwgbWVzc2FnZQorICAgICAgICAgICAgZXJyb3Jz
LmFwcGVuZCggJ1JlcG9zaXRvcmllcyBvZiB0eXBlIDxiPlJlcG9zaXRvcnkgc3VpdGUgZGVmaW49
Cml0aW9uPC9iPiBjYW4gY29udGFpbiBvbmx5IGEgc2luZ2xlIGZpbGUgbmFtZWQgPGI+cmVwb3Np
dG9yeV9kZXBlbmRlbmNpZXMueD0KbWw8L2I+LicgKQorICAgICAgICAgICAgaW52YWxpZC5hcHBl
bmQoIG1lbWJlciApCisgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBpZiByZXBvc2l0b3J5
LnR5cGUgPTNEPTNEIHJ0X3V0aWwuVE9PTF9ERVBFTkRFTkNZX0RFRklOSVRJT04gYW5kIG09CmVt
YmVyLm5hbWUgIT0zRCBydF91dGlsLlRPT0xfREVQRU5ERU5DWV9ERUZJTklUSU9OX0ZJTEVOQU1F
OgotICAgICAgICAgICAgbWVzc2FnZSA9M0QgJ1JlcG9zaXRvcmllcyBvZiB0eXBlIDxiPlRvb2wg
ZGVwZW5kZW5jeSBkZWZpbml0aW89Cm48L2I+IGNhbiBjb250YWluIG9ubHkgYSBzaW5nbGUgZmls
ZSBuYW1lZCA8Yj50b29sX2RlcGVuZGVuY2llcy54bWw8L2I+LicKLSAgICAgICAgICAgIG1lc3Nh
Z2UgKz0zRCAnVGhpcyBhcmNoaXZlIGNvbnRhaW5zIGEgbWVtYmVyIG5hbWVkICVzLicgJSBzdHIo
PQogbWVtYmVyLm5hbWUgKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBtZXNzYWdlCi0gICAg
cmV0dXJuIFRydWUsICcnCisgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCAnUmVwb3NpdG9yaWVz
IG9mIHR5cGUgPGI+VG9vbCBkZXBlbmRlbmN5IGRlZmluaT0KdGlvbjwvYj4gY2FuIGNvbnRhaW4g
b25seSBhIHNpbmdsZSBmaWxlIG5hbWVkIDxiPnRvb2xfZGVwZW5kZW5jaWVzLnhtbDwvYj4uPQon
ICkKKyAgICAgICAgICAgIGludmFsaWQuYXBwZW5kKCBtZW1iZXIgKQorICAgICAgICAgICAgY29u
dGludWUKKyAgICAgICAgdmFsaWQuYXBwZW5kKCBtZW1iZXIgKQorICAgIEFyY2hpdmVDaGVja1Jl
c3VsdHMgPTNEIG5hbWVkdHVwbGUoICdBcmNoaXZlQ2hlY2tSZXN1bHRzJywgWyAndmFsaWQnLCA9
CidpbnZhbGlkJywgJ3VuZGVzaXJhYmxlX2ZpbGVzJywgJ3VuZGVzaXJhYmxlX2RpcnMnLCAnZXJy
b3JzJyBdICkKKyAgICByZXR1cm4gQXJjaGl2ZUNoZWNrUmVzdWx0cyggdmFsaWQsIGludmFsaWQs
IHVuZGVzaXJhYmxlX2ZpbGVzLCB1bmRlc2lyPQphYmxlX2RpcnMsIGVycm9ycyApCj0yMAo9MjAK
IGRlZiBjaGVja19maWxlX2NvbnRlbnRzX2Zvcl9lbWFpbF9hbGVydHMoIGFwcCApOgoKZGlmZiAt
ciAyMGQ1YTIxYWRkOWFiNDVkOWM0YzVjMjZkNjg2OTllNzcxMzEwMGRkIC1yIDZjMmZkN2JkZGM2
YzFjNGU4YTY0MDkzPQpmM2ZjNGM0MzcwZjUxNWI0ZSBsaWIvdG9vbF9zaGVkL3V0aWwvcmVwb3Np
dG9yeV9jb250ZW50X3V0aWwucHkKLS0tIGEvbGliL3Rvb2xfc2hlZC91dGlsL3JlcG9zaXRvcnlf
Y29udGVudF91dGlsLnB5CisrKyBiL2xpYi90b29sX3NoZWQvdXRpbC9yZXBvc2l0b3J5X2NvbnRl
bnRfdXRpbC5weQpAQCAtMTUsMzEgKzE1LDIzIEBACiAgICAgaGdfdXRpbC5nZXRfcmVwb19mb3Jf
cmVwb3NpdG9yeSggdHJhbnMuYXBwLCByZXBvc2l0b3J5PTNETm9uZSwgcmVwb19wYT0KdGg9M0Ry
ZXBvX2RpciwgY3JlYXRlPTNERmFsc2UgKQogICAgIHVuZGVzaXJhYmxlX2RpcnNfcmVtb3ZlZCA9
M0QgMAogICAgIHVuZGVzaXJhYmxlX2ZpbGVzX3JlbW92ZWQgPTNEIDAKLSAgICBvaywgbWVzc2Fn
ZSA9M0QgY29tbWl0X3V0aWwuY2hlY2tfYXJjaGl2ZSggcmVwb3NpdG9yeSwgdGFyICkKLSAgICBp
ZiBub3Qgb2s6CisgICAgY2hlY2tfcmVzdWx0cyA9M0QgY29tbWl0X3V0aWwuY2hlY2tfYXJjaGl2
ZSggcmVwb3NpdG9yeSwgdGFyICkKKyAgICBpZiBjaGVja19yZXN1bHRzLmludmFsaWQ6CiAgICAg
ICAgIHRhci5jbG9zZSgpCiAgICAgICAgIHVwbG9hZGVkX2ZpbGUuY2xvc2UoKQotICAgICAgICBy
ZXR1cm4gb2ssIG1lc3NhZ2UsIFtdLCAnJywgdW5kZXNpcmFibGVfZGlyc19yZW1vdmVkLCB1bmRl
c2lyYWJsZV89CmZpbGVzX3JlbW92ZWQKKyAgICAgICAgbWVzc2FnZSA9M0QgJyVzIEludmFsaWQg
cGF0aHMgd2VyZTogJXMnICUgKAorICAgICAgICAgICAgJyAnLmpvaW4oIGNoZWNrX3Jlc3VsdHMu
ZXJyb3JzICksICcsICcuam9pbiggY2hlY2tfcmVzdWx0cy5pbnY9CmFsaWQgKSApCisgICAgICAg
IHJldHVybiBGYWxzZSwgbWVzc2FnZSwgW10sICcnLCB1bmRlc2lyYWJsZV9kaXJzX3JlbW92ZWQs
IHVuZGVzaXJhYj0KbGVfZmlsZXNfcmVtb3ZlZAogICAgIGVsc2U6CiAgICAgICAgIGlmIHVwbG9h
ZF9wb2ludCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGZ1bGxfcGF0aCA9M0Qgb3MucGF0aC5h
YnNwYXRoKCBvcy5wYXRoLmpvaW4oIHJlcG9fZGlyLCB1cGxvYWRfPQpwb2ludCApICkKICAgICAg
ICAgZWxzZToKICAgICAgICAgICAgIGZ1bGxfcGF0aCA9M0Qgb3MucGF0aC5hYnNwYXRoKCByZXBv
X2RpciApCi0gICAgICAgIGZpbGVuYW1lc19pbl9hcmNoaXZlID0zRCBbXQotICAgICAgICBmb3Ig
dGFyaW5mb19vYmogaW4gdGFyLmdldG1lbWJlcnMoKToKLSAgICAgICAgICAgIG9rID0zRCBvcy5w
YXRoLmJhc2VuYW1lKCB0YXJpbmZvX29iai5uYW1lICkgbm90IGluIGNvbW1pdF91dGlsPQouVU5E
RVNJUkFCTEVfRklMRVMKLSAgICAgICAgICAgIGlmIG9rOgotICAgICAgICAgICAgICAgIGZvciBm
aWxlX3BhdGhfaXRlbSBpbiB0YXJpbmZvX29iai5uYW1lLnNwbGl0KCAnLycgKToKLSAgICAgICAg
ICAgICAgICAgICAgaWYgZmlsZV9wYXRoX2l0ZW0gaW4gY29tbWl0X3V0aWwuVU5ERVNJUkFCTEVf
RElSUzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVzaXJhYmxlX2RpcnNfcmVtb3ZlZCAr
PTNEIDEKLSAgICAgICAgICAgICAgICAgICAgICAgIG9rID0zRCBGYWxzZQotICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdW5k
ZXNpcmFibGVfZmlsZXNfcmVtb3ZlZCArPTNEIDEKLSAgICAgICAgICAgIGlmIG9rOgotICAgICAg
ICAgICAgICAgIGZpbGVuYW1lc19pbl9hcmNoaXZlLmFwcGVuZCggdGFyaW5mb19vYmoubmFtZSAp
CisgICAgICAgIHVuZGVzaXJhYmxlX2ZpbGVzX3JlbW92ZWQgPTNEIGxlbiggY2hlY2tfcmVzdWx0
cy51bmRlc2lyYWJsZV9maWxlcz0KICkKKyAgICAgICAgdW5kZXNpcmFibGVfZGlyc19yZW1vdmVk
ID0zRCBsZW4oIGNoZWNrX3Jlc3VsdHMudW5kZXNpcmFibGVfZGlycyApCisgICAgICAgIGZpbGVu
YW1lc19pbl9hcmNoaXZlID0zRCBbIHRpLm5hbWUgZm9yIHRpIGluIGNoZWNrX3Jlc3VsdHMudmFs
aWQgXQogICAgICAgICAjIEV4dHJhY3QgdGhlIHVwbG9hZGVkIHRhciB0byB0aGUgbG9hZF9wb2lu
dCB3aXRoaW4gdGhlIHJlcG9zaXRvcnk9CiBoaWVyYXJjaHkuCi0gICAgICAgIHRhci5leHRyYWN0
YWxsKCBwYXRoPTNEZnVsbF9wYXRoICkKKyAgICAgICAgdGFyLmV4dHJhY3RhbGwoIHBhdGg9M0Rm
dWxsX3BhdGgsIG1lbWJlcnM9M0RjaGVja19yZXN1bHRzLnZhbGlkICkKICAgICAgICAgdGFyLmNs
b3NlKCkKICAgICAgICAgdXBsb2FkZWRfZmlsZS5jbG9zZSgpCiAgICAgICAgIGZvciBmaWxlbmFt
ZSBpbiBmaWxlbmFtZXNfaW5fYXJjaGl2ZToKCmRpZmYgLXIgMjBkNWEyMWFkZDlhYjQ1ZDljNGM1
YzI2ZDY4Njk5ZTc3MTMxMDBkZCAtciA2YzJmZDdiZGRjNmMxYzRlOGE2NDA5Mz0KZjNmYzRjNDM3
MGY1MTViNGUgbGliL3Rvb2xfc2hlZC91dGlsL3NoZWRfdXRpbF9jb21tb24ucHkKLS0tIGEvbGli
L3Rvb2xfc2hlZC91dGlsL3NoZWRfdXRpbF9jb21tb24ucHkKKysrIGIvbGliL3Rvb2xfc2hlZC91
dGlsL3NoZWRfdXRpbF9jb21tb24ucHkKQEAgLTUzNSw5ICs1MzUsMTcgQEAKICAgICByZXR1cm4g
cmVwb3NpdG9yeQo9MjAKPTIwCi1kZWYgZ2V0X3JlcG9zaXRvcnlfZmlsZV9jb250ZW50cyggZmls
ZV9wYXRoICk6CitkZWYgZ2V0X3JlcG9zaXRvcnlfZmlsZV9jb250ZW50cyggYXBwLCBmaWxlX3Bh
dGgsIHJlcG9zaXRvcnlfaWQgKToKICAgICAiIiJSZXR1cm4gdGhlIGRpc3BsYXktc2FmZSBjb250
ZW50cyBvZiBhIHJlcG9zaXRvcnkgZmlsZSBmb3IgZGlzcGxheSBpPQpuIGEgYnJvd3Nlci4iIiIK
LSAgICBpZiBjaGVja2Vycy5pc19nemlwKCBmaWxlX3BhdGggKToKKyAgICBzYWZlX3N0ciA9M0Qg
JycKKyAgICBpZiBub3QgaXNfcGF0aF93aXRoaW5fcmVwbyggYXBwLCBmaWxlX3BhdGgsIHJlcG9z
aXRvcnlfaWQgKToKKyAgICAgICAgbG9nLndhcm5pbmcoICdSZXF1ZXN0IHRyaWVzIHRvIGFjY2Vz
cyBhIGZpbGUgb3V0c2lkZSBvZiB0aGUgcmVwb3NpPQp0b3J5IGxvY2F0aW9uLiBGaWxlIHBhdGg6
ICVzJywgZmlsZV9wYXRoICkKKyAgICAgICAgcmV0dXJuICdJbnZhbGlkIGZpbGUgcGF0aCcKKyAg
ICAjIFN5bWxpbmsgdGFyZ2V0cyBhcmUgY2hlY2tlZCBieSBpc19wYXRoX3dpdGhpbl9yZXBvCisg
ICAgaWYgb3MucGF0aC5pc2xpbmsoIGZpbGVfcGF0aCApOgorICAgICAgICBzYWZlX3N0ciA9M0Qg
J2xpbmsgdG86ICcgKyBiYXNpY191dGlsLnRvX2h0bWxfc3RyaW5nKCBvcy5yZWFkbGluayg9CiBm
aWxlX3BhdGggKSApCisgICAgICAgIHJldHVybiBzYWZlX3N0cgorICAgIGVsaWYgY2hlY2tlcnMu
aXNfZ3ppcCggZmlsZV9wYXRoICk6CiAgICAgICAgIHJldHVybiAnPGJyLz5nemlwIGNvbXByZXNz
ZWQgZmlsZTxici8+JwogICAgIGVsaWYgY2hlY2tlcnMuaXNfYnoyKCBmaWxlX3BhdGggKToKICAg
ICAgICAgcmV0dXJuICc8YnIvPmJ6MiBjb21wcmVzc2VkIGZpbGU8YnIvPicKQEAgLTU0Niw3ICs1
NTQsNiBAQAogICAgIGVsaWYgY2hlY2tlcnMuY2hlY2tfYmluYXJ5KCBmaWxlX3BhdGggKToKICAg
ICAgICAgcmV0dXJuICc8YnIvPkJpbmFyeSBmaWxlPGJyLz4nCiAgICAgZWxzZToKLSAgICAgICAg
c2FmZV9zdHIgPTNEICcnCiAgICAgICAgIGZvciBpLCBsaW5lIGluIGVudW1lcmF0ZSggb3Blbigg
ZmlsZV9wYXRoICkgKToKICAgICAgICAgICAgIHNhZmVfc3RyID0zRCAnJXMlcycgJSAoIHNhZmVf
c3RyLCBiYXNpY191dGlsLnRvX2h0bWxfc3RyaW5nKCBsPQppbmUgKSApCiAgICAgICAgICAgICAj
IFN0b3AgcmVhZGluZyBhZnRlciBzdHJpbmcgaXMgbGFyZ2VyIHRoYW4gTUFYX0NPTlRFTlRfU0la
RS4KQEAgLTU1Niw2ICs1NjMsNyBAQAogICAgICAgICAgICAgICAgICAgICB1dGlsLm5pY2Vfc2l6
ZSggTUFYX0NPTlRFTlRfU0laRSApCiAgICAgICAgICAgICAgICAgc2FmZV9zdHIgPTNEICclcyVz
JyAlICggc2FmZV9zdHIsIGxhcmdlX3N0ciApCiAgICAgICAgICAgICAgICAgYnJlYWsKKwogICAg
ICAgICBpZiBsZW4oIHNhZmVfc3RyICkgPiBiYXNpY191dGlsLk1BWF9ESVNQTEFZX1NJWkU6CiAg
ICAgICAgICAgICAjIEVsaW1pbmF0ZSB0aGUgbWlkZGxlIG9mIHRoZSBmaWxlIHRvIGRpc3BsYXkg
YSBmaWxlIG5vIGxhcmdlcj0KIHRoYW4gYmFzaWNfdXRpbC5NQVhfRElTUExBWV9TSVpFLgogICAg
ICAgICAgICAgIyBUaGlzIG1heSBub3QgYmUgaWRlYWwgaWYgdGhlIGZpbGUgaXMgbGFyZ2VyIHRo
YW4gTUFYX0NPTlRFTlQ9Cl9TSVpFLgpAQCAtNTc3LDkgKzU4NSw2IEBACiAgICAgICAgICMgU2tp
cCAuaGcgZGlyZWN0b3JpZXMKICAgICAgICAgaWYgaXRlbS5zdGFydHN3aXRoKCAnLmhnJyApOgog
ICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaWYgb3MucGF0aC5pc2Rpciggb3MucGF0aC5q
b2luKCBmb2xkZXJfcGF0aCwgaXRlbSApICk6Ci0gICAgICAgICAgICAjIEFwcGVuZCBhICcvJyBj
aGFyYWN0ZXIgc28gdGhhdCBvdXIganF1ZXJ5IGR5bmF0cmVlIHdpbGwgZnVuYz0KdGlvbiBwcm9w
ZXJseS4KLSAgICAgICAgICAgIGl0ZW0gPTNEICclcy8nICUgaXRlbQogICAgICAgICBjb250ZW50
cy5hcHBlbmQoIGl0ZW0gKQogICAgIGlmIGNvbnRlbnRzOgogICAgICAgICBjb250ZW50cy5zb3J0
KCkKQEAgLTEwNTQsMTEgKzEwNTksMTUgQEAKICAgICByZXR1cm4gaGFzYXR0ciggYXBwLCAiaW5z
dGFsbF9tb2RlbCIgKQo9MjAKPTIwCi1kZWYgb3Blbl9yZXBvc2l0b3J5X2ZpbGVzX2ZvbGRlcigg
Zm9sZGVyX3BhdGggKToKK2RlZiBvcGVuX3JlcG9zaXRvcnlfZmlsZXNfZm9sZGVyKCBhcHAsIGZv
bGRlcl9wYXRoLCByZXBvc2l0b3J5X2lkICk6CiAgICAgIiIiCiAgICAgUmV0dXJuIGEgbGlzdCBv
ZiBkaWN0aW9uYXJpZXMsIGVhY2ggb2Ygd2hpY2ggY29udGFpbnMgaW5mb3JtYXRpb24gZm9yID0K
YSBmaWxlIG9yIGRpcmVjdG9yeSBjb250YWluZWQKICAgICB3aXRoaW4gYSBkaXJlY3RvcnkgaW4g
YSByZXBvc2l0b3J5IGZpbGUgaGllcmFyY2h5LgogICAgICIiIgorICAgICMgU3ltbGluayB0YXJn
ZXRzIGFyZSBjaGVja2VkIGJ5IGlzX3BhdGhfd2l0aGluX3JlcG8KKyAgICBpZiBub3QgaXNfcGF0
aF93aXRoaW5fcmVwbyggYXBwLCBmb2xkZXJfcGF0aCwgcmVwb3NpdG9yeV9pZCApOgorICAgICAg
ICBsb2cud2FybmluZyggJ1JlcXVlc3QgdHJpZXMgdG8gYWNjZXNzIGEgZm9sZGVyIG91dHNpZGUg
b2YgdGhlIHJlcG89CnNpdG9yeSBsb2NhdGlvbi4gRm9sZGVyIHBhdGg6ICVzJywgZm9sZGVyX3Bh
dGggKQorICAgICAgICByZXR1cm4gW10KICAgICB0cnk6CiAgICAgICAgIGZpbGVzX2xpc3QgPTNE
IGdldF9yZXBvc2l0b3J5X2ZpbGVzKCBmb2xkZXJfcGF0aCApCiAgICAgZXhjZXB0IE9TRXJyb3Is
IGU6CkBAIC0xMDY4LDEwICsxMDc3LDE3IEBACiAgICAgZm9sZGVyX2NvbnRlbnRzID0zRCBbXQog
ICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlc19saXN0OgogICAgICAgICBpc19mb2xkZXIgPTNEIEZh
bHNlCi0gICAgICAgIGlmIGZpbGVuYW1lIGFuZCBmaWxlbmFtZVsgLTEgXSA9M0Q9M0Qgb3Muc2Vw
OgotICAgICAgICAgICAgaXNfZm9sZGVyID0zRCBUcnVlCisgICAgICAgIGZ1bGxfcGF0aCA9M0Qg
b3MucGF0aC5qb2luKCBmb2xkZXJfcGF0aCwgZmlsZW5hbWUgKQorICAgICAgICBpc19saW5rID0z
RCBvcy5wYXRoLmlzbGluayggZnVsbF9wYXRoICkKKyAgICAgICAgcGF0aF9pc193aXRoaW5fcmVw
byA9M0QgaXNfcGF0aF93aXRoaW5fcmVwbyggYXBwLCBmdWxsX3BhdGgsIHJlcG9zPQppdG9yeV9p
ZCApCisgICAgICAgIGlmIGlzX2xpbmsgYW5kIG5vdCBwYXRoX2lzX3dpdGhpbl9yZXBvOgorICAg
ICAgICAgICAgbG9nLndhcm5pbmcoICdWYWxpZCBmb2xkZXIgY29udGFpbnMgYSBzeW1saW5rIG91
dHNpZGUgb2YgdGhlIHI9CmVwb3NpdG9yeSBsb2NhdGlvbi4gTGluayBmb3VuZCBpbjogJyArIHN0
ciggZnVsbF9wYXRoICkgKQogICAgICAgICBpZiBmaWxlbmFtZToKLSAgICAgICAgICAgIGZ1bGxf
cGF0aCA9M0Qgb3MucGF0aC5qb2luKCBmb2xkZXJfcGF0aCwgZmlsZW5hbWUgKQorICAgICAgICAg
ICAgaWYgb3MucGF0aC5pc2RpciggZnVsbF9wYXRoICkgYW5kIHBhdGhfaXNfd2l0aGluX3JlcG86
CisgICAgICAgICAgICAgICAgIyBBcHBlbmQgYSAnLycgY2hhcmFjdGVyIHNvIHRoYXQgb3VyIGpx
dWVyeSBkeW5hdHJlZSB3aWxsID0KZnVuY3Rpb24gcHJvcGVybHkuCisgICAgICAgICAgICAgICAg
ZmlsZW5hbWUgPTNEICclcy8nICUgZmlsZW5hbWUKKyAgICAgICAgICAgICAgICBmdWxsX3BhdGgg
PTNEICclcy8nICUgZnVsbF9wYXRoCisgICAgICAgICAgICAgICAgaXNfZm9sZGVyID0zRCBUcnVl
CiAgICAgICAgICAgICBub2RlID0zRCB7ICJ0aXRsZSI6IGZpbGVuYW1lLAogICAgICAgICAgICAg
ICAgICAgICAgImlzRm9sZGVyIjogaXNfZm9sZGVyLAogICAgICAgICAgICAgICAgICAgICAgImlz
TGF6eSI6IGlzX2ZvbGRlciwKQEAgLTEwODEsNiArMTA5NywxNiBAQAogICAgIHJldHVybiBmb2xk
ZXJfY29udGVudHMKPTIwCj0yMAorZGVmIGlzX3BhdGhfd2l0aGluX3JlcG8oIGFwcCwgcGF0aCwg
cmVwb3NpdG9yeV9pZCApOgorICAgICIiIgorICAgIERldGVjdCB3aGV0aGVyIHRoZSBnaXZlbiBw
YXRoIGlzIHdpdGhpbiB0aGUgcmVwb3NpdG9yeSBmb2xkZSByb24gdGhlIGQ9Cmlzay4KKyAgICBV
c2UgdG8gZmlsdGVyIG1hbGljaW91cyBzeW1saW5rcyB0YXJnZXRpbmcgb3V0c2lkZSBwYXRocy4K
KyAgICAiIiIKKyAgICByZXBvX3BhdGggPTNEIG9zLnBhdGguYWJzcGF0aCggZ2V0X3JlcG9zaXRv
cnlfYnlfaWQoIGFwcCwgcmVwb3NpdG9yeV9pPQpkICkucmVwb19wYXRoKCBhcHAgKSApCisgICAg
cmVzb2x2ZWRfcGF0aCA9M0Qgb3MucGF0aC5yZWFscGF0aCggcGF0aCApCisgICAgcmV0dXJuIG9z
LnBhdGguY29tbW9ucHJlZml4KCBbIHJlcG9fcGF0aCwgcmVzb2x2ZWRfcGF0aCBdICkgPTNEPTNE
IHJlcD0Kb19wYXRoCisKKwogZGVmIHJlcG9zaXRvcnlfd2FzX3ByZXZpb3VzbHlfaW5zdGFsbGVk
KCBhcHAsIHRvb2xfc2hlZF91cmwsIHJlcG9zaXRvcnlfbmE9Cm1lLCByZXBvX2luZm9fdHVwbGUs
IGZyb21fdGlwPTNERmFsc2UgKToKICAgICAiIiIKICAgICBGaW5kIG91dCBpZiBhIHJlcG9zaXRv
cnkgaXMgYWxyZWFkeSBpbnN0YWxsZWQgaW50byBHYWxheHkgLSB0aGVyZSBhcmUgPQpzZXZlcmFs
IHNjZW5hcmlvcyB3aGVyZSB0aGlzCgpkaWZmIC1yIDIwZDVhMjFhZGQ5YWI0NWQ5YzRjNWMyNmQ2
ODY5OWU3NzEzMTAwZGQgLXIgNmMyZmQ3YmRkYzZjMWM0ZThhNjQwOTM9CmYzZmM0YzQzNzBmNTE1
YjRlIHNjcmlwdHMvY2xlYW51cF9kYXRhc2V0cy9jbGVhbnVwX2RhdGFzZXRzLnB5Ci0tLSBhL3Nj
cmlwdHMvY2xlYW51cF9kYXRhc2V0cy9jbGVhbnVwX2RhdGFzZXRzLnB5CisrKyBiL3NjcmlwdHMv
Y2xlYW51cF9kYXRhc2V0cy9jbGVhbnVwX2RhdGFzZXRzLnB5CkBAIC00NjUsNyArNDY1LDcgQEAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaGRhLmhpc3RvcnkudXNlciBpcyBu
b3QgTm9uZSBhbmQgaGRhLmhpPQpzdG9yeS51c2VyIG5vdCBpbiB1c2FnZV91c2VyczoKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzYWdlX3VzZXJzLmFwcGVuZCggaGRhLmhp
c3RvcnkudXNlciApCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdXNlciBpbiB1c2FnZV91
c2VyczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLnRvdGFsX2Rpc2tfdXNhZ2Ug
LT0zRCBkYXRhc2V0LnRvdGFsX3NpemUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vy
LnRvdGFsX2Rpc2tfdXNhZ2UgLT0zRCBkYXRhc2V0LmdldF90b3RhbF9zPQppemUoKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFwcC5zYV9zZXNzaW9uLmFkZCggdXNlciApCiAgICAgICAg
ICAgICAgICAgICAgIHByaW50ICJQdXJnaW5nIGRhdGFzZXQgaWQiLCBkYXRhc2V0LmlkCiAgICAg
ICAgICAgICAgICAgICAgIGRhdGFzZXQucHVyZ2VkID0zRCBUcnVlCgpkaWZmIC1yIDIwZDVhMjFh
ZGQ5YWI0NWQ5YzRjNWMyNmQ2ODY5OWU3NzEzMTAwZGQgLXIgNmMyZmQ3YmRkYzZjMWM0ZThhNjQw
OTM9CmYzZmM0YzQzNzBmNTE1YjRlIHRlbXBsYXRlcy9hZG1pbi9yZXF1ZXN0cy9zZWxlY3RfZGF0
YXNldHNfdG9fdHJhbnNmZXIubWFrbwotLS0gYS90ZW1wbGF0ZXMvYWRtaW4vcmVxdWVzdHMvc2Vs
ZWN0X2RhdGFzZXRzX3RvX3RyYW5zZmVyLm1ha28KKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAs
MCBAQAotPCVpbmhlcml0IGZpbGU9M0QiL2Jhc2UubWFrbyIvPgotPCVuYW1lc3BhY2UgZmlsZT0z
RCIvbWVzc2FnZS5tYWtvIiBpbXBvcnQ9M0QicmVuZGVyX21zZyIgLz4KLTwlbmFtZXNwYWNlIGZp
bGU9M0QiL3JlcXVlc3RzL2NvbW1vbi9jb21tb24ubWFrbyIgaW1wb3J0PTNEInJlbmRlcl9zYW1w
bGVfPQpkYXRhc2V0cyIgLz4KLTwlbmFtZXNwYWNlIGZpbGU9M0QiL3JlcXVlc3RzL2NvbW1vbi9j
b21tb24ubWFrbyIgaW1wb3J0PTNEImNvbW1vbl9qYXZhc2NyPQppcHRzIiAvPgotCi08JWRlZiBu
YW1lPTNEImphdmFzY3JpcHRzKCkiPgotICAgJHtwYXJlbnQuamF2YXNjcmlwdHMoKX0KLSAgICR7
Y29tbW9uX2phdmFzY3JpcHRzKCl9Ci08LyVkZWY+Ci0KLSR7aC5qcyggImxpYnMvanF1ZXJ5L2px
dWVyeS11aSIsICJsaWJzL2pxdWVyeS9qcXVlcnkuY29va2llIiwgImxpYnMvanF1ZXJ5PQovanF1
ZXJ5LmR5bmF0cmVlIiApfQotJHtoLmNzcyggImR5bmF0cmVlX3NraW4vdWkuZHluYXRyZWUiICl9
Ci0KLTxzY3JpcHQgdHlwZT0zRCJ0ZXh0L2phdmFzY3JpcHQiPgotICAgICQoZnVuY3Rpb24oKXsK
LSAgICAgICAgJCgiI3RyZWUiKS5hamF4Q29tcGxldGUoZnVuY3Rpb24oZXZlbnQsIFhNTEh0dHBS
ZXF1ZXN0LCBhamF4T3B0aW9uPQpzKSB7Ci0gICAgICAgICAgICBfbG9nKCJkZWJ1ZyIsICJhamF4
Q29tcGxldGU6ICVvIiwgdGhpcyk7IC8vIGRvbSBlbGVtZW50IGxpc3Rlbj0KaW5nCi0gICAgICAg
IH0pOwotICAgICAgICAvLyAtLS0gSW5pdGlhbGl6ZSBzYW1wbGUgdHJlZXMKLSAgICAgICAgJCgi
I3RyZWUiKS5keW5hdHJlZSh7Ci0gICAgICAgICAgICB0aXRsZTogIiR7c2NwX2NvbmZpZ3NbJ2Rh
dGFfbG9jYXRpb24nXX0iLAotICAgICAgICAgICAgcm9vdFZpc2libGU6IHRydWUsCi0gICAgICAg
ICAgICBtaW5FeHBhbmRMZXZlbDogMCwgLy8gMTogcm9vdCBub2RlIGlzIG5vdCBjb2xsYXBzaWJs
ZQotICAgICAgICAgICAgcGVyc2lzdDogZmFsc2UsCi0gICAgICAgICAgICBjaGVja2JveDogdHJ1
ZSwKLSAgICAgICAgICAgIHNlbGVjdE1vZGU6IDMsCi0gICAgICAgICAgICBvblBvc3RJbml0OiBm
dW5jdGlvbihpc1JlbG9hZGluZywgaXNFcnJvcikgewotICAgICAgICAgICAgICAgIC8vYWxlcnQo
InJlbG9hZGluZzogIitpc1JlbG9hZGluZysiLCBlcnJvcjoiK2lzRXJyb3IpOwotICAgICAgICAg
ICAgICAgIGxvZ01zZygib25Qb3N0SW5pdCglbywgJW8pIC0gJW8iLCBpc1JlbG9hZGluZywgaXNF
cnJvciwgdGg9CmlzKTsKLSAgICAgICAgICAgICAgICAvLyBSZS1maXJlIG9uQWN0aXZhdGUsIHNv
IHRoZSB0ZXh0IGlzIHVwZGF0ZWQKLSAgICAgICAgICAgICAgICB0aGlzLnJlYWN0aXZhdGUoKTsK
LSAgICAgICAgICAgIH0sPTIwCi0gICAgICAgICAgICBmeDogeyBoZWlnaHQ6ICJ0b2dnbGUiLCBk
dXJhdGlvbjogMjAwIH0sCi0gICAgICAgICAgICAvLyBpbml0QWpheCBpcyBoYXJkIHRvIGZha2Us
IHNvIHdlIHBhc3MgdGhlIGNoaWxkcmVuIGFzIG9iamVjdD0KIGFycmF5OgotICAgICAgICAgICAg
aW5pdEFqYXg6IHt1cmw6ICIke2gudXJsX2ZvciggY29udHJvbGxlcj0zRCdyZXF1ZXN0c19hZG1p
bicsIGE9CmN0aW9uPTNEJ29wZW5fZm9sZGVyJyApfSIsCi0gICAgICAgICAgICAgICAgICAgICAg
IGRhdGFUeXBlOiAianNvbiIsPTIwCi0gICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgcmVx
dWVzdF9pZDogIiR7dHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCByZT0KcXVlc3QuaWQgKX0iLCBl
eHRlcm5hbF9zZXJ2aWNlX2lkOiAiJHt0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIGV4dGVybmFs
X3NlPQpydmljZS5pZCApfSIsIGtleTogIiR7c2NwX2NvbmZpZ3NbJ2RhdGFfbG9jYXRpb24nXX0i
IH0sCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgb25MYXp5UmVhZDogZnVuY3Rpb24oZHRu
b2RlKXsKLSAgICAgICAgICAgICAgICBkdG5vZGUuYXBwZW5kQWpheCh7Ci0gICAgICAgICAgICAg
ICAgICAgIHVybDogIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJ3JlcXVlc3RzX2FkbWluJywg
YWN0aT0Kb249M0Qnb3Blbl9mb2xkZXInICl9Iiw9MjAKLSAgICAgICAgICAgICAgICAgICAgZGF0
YVR5cGU6ICJqc29uIiwKLSAgICAgICAgICAgICAgICAgICAgZGF0YTogeyByZXF1ZXN0X2lkOiAi
JHt0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHJlcXVlPQpzdC5pZCApfSIsIGV4dGVybmFsX3Nl
cnZpY2VfaWQ6ICIke3RyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggZXh0ZXJuYWxfc2Vydmk9CmNl
LmlkICl9Iiwga2V5OiBkdG5vZGUuZGF0YS5rZXkgfSwKLSAgICAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICBvblNlbGVjdDogZnVuY3Rpb24oc2VsZWN0LCBkdG5v
ZGUpIHsKLSAgICAgICAgICAgICAgICAvLyBEaXNwbGF5IGxpc3Qgb2Ygc2VsZWN0ZWQgbm9kZXMK
LSAgICAgICAgICAgICAgICB2YXIgc2VsTm9kZXMgPTNEIGR0bm9kZS50cmVlLmdldFNlbGVjdGVk
Tm9kZXMoKTsKLSAgICAgICAgICAgICAgICAvLyBjb252ZXJ0IHRvIHRpdGxlL2tleSBhcnJheQot
ICAgICAgICAgICAgICAgIHZhciBzZWxLZXlzID0zRCAkLm1hcChzZWxOb2RlcywgZnVuY3Rpb24o
bm9kZSl7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlLmRhdGEua2V5OwotICAgICAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIGRvY3VtZW50LnNlbGVjdF9kYXRhc2V0c190
b190cmFuc2Zlci5zZWxlY3RlZF9kYXRhc2V0c190b189CnRyYW5zZmVyLnZhbHVlID0zRCBzZWxL
ZXlzLmpvaW4oIiwiKQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIG9uQWN0aXZhdGU6IGZ1
bmN0aW9uKGR0bm9kZSkgewotICAgICAgICAgICAgICAgIHZhciBjZWxsID0zRCAkKCIjZmlsZV9k
ZXRhaWxzIik7Ci0gICAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkX3ZhbHVlOwotICAgICAgICAg
ICAgICAgIGlmIChkdG5vZGUuZGF0YS5rZXkgPTNEPTNEICdyb290JykgewotICAgICAgICAgICAg
ICAgICAgICBzZWxlY3RlZF92YWx1ZSA9M0QgIiR7c2NwX2NvbmZpZ3NbJ2RhdGFfbG9jYXRpb24n
XX0vIjsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBzZWxl
Y3RlZF92YWx1ZSA9M0QgZHRub2RlLmRhdGEua2V5OwotICAgICAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICAgICAgaWYgKHNlbGVjdGVkX3ZhbHVlLmNoYXJBdChzZWxlY3RlZF92YWx1ZS5sZW5n
dGgtMSkgIT0zRCAnLz0KJykgewotICAgICAgICAgICAgICAgICAgICAvLyBNYWtlIGFqYXggY2Fs
bAotICAgICAgICAgICAgICAgICAgICAkLmFqYXgoIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHR5cGU6ICJQT1NUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVybDogIiR7aC51cmxfZm9y
KCBjb250cm9sbGVyPTNEJ3JlcXVlc3RzX2FkbWluJywgPQphY3Rpb249M0QnZ2V0X2ZpbGVfZGV0
YWlscycgKX0iLAotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICJqc29uIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgcmVxdWVzdF9pZDogIiR7dHJhbnMuc2VjdXJp
dHkuZW5jb2RlX2lkKHJlPQpxdWVzdC5pZCl9IiwgZXh0ZXJuYWxfc2VydmljZV9pZDogIiR7dHJh
bnMuc2VjdXJpdHkuZW5jb2RlX2lkKGV4dGVybmFsX3NlcnY9CmljZS5pZCl9IiwgZm9sZGVyX3Bh
dGg6IHNlbGVjdGVkX3ZhbHVlIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzIDog
ZnVuY3Rpb24gKCBkYXRhICkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGwuaHRt
bCggJzxsYWJlbD4nK2RhdGErJzwvbGFiZWw+JyApCi0gICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGNlbGwuaHRtbCggJycgKTsKLSAgICAgICAgICAgICAgICB9OwotICAg
ICAgICAgICAgfSwKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci08L3NjcmlwdD4KLQotPCUKLSAgICBp
c19hZG1pbiA9M0QgY250cmxsZXIgPTNEPTNEICdyZXF1ZXN0c19hZG1pbicgYW5kIHRyYW5zLnVz
ZXJfaXNfYWRtaW4oKQotICAgIGNhbl90cmFuc2Zlcl9kYXRhc2V0cyA9M0QgaXNfYWRtaW4gYW5k
IHNhbXBsZS51bnRyYW5zZmVycmVkX2RhdGFzZXRfZmk9CmxlcyBhbmQgc2FtcGxlLmxpYnJhcnkg
YW5kIHNhbXBsZS5mb2xkZXIKLSU+Ci0KLTxici8+PGJyLz4KLTx1bCBjbGFzcz0zRCJtYW5hZ2Ut
dGFibGUtYWN0aW9ucyI+Ci0gICAgPGxpPjxhIGNsYXNzPTNEImFjdGlvbi1idXR0b24iIGhyZWY9
M0QiJHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QnZXh0ZT0Kcm5hbF9zZXJ2aWNlJywgYWN0aW9u
PTNEJ3ZpZXdfZXh0ZXJuYWxfc2VydmljZScsIGlkPTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlPQpf
aWQoIGV4dGVybmFsX3NlcnZpY2UuaWQgKSApfSI+RXh0ZXJuYWwgc2VydmljZSBjb25maWd1cmF0
aW9uPC9hPjwvbGk+Ci0gICAgJWlmIGNhbl90cmFuc2Zlcl9kYXRhc2V0czoKLSAgICAgICAgPGxp
PjxhIGNsYXNzPTNEImFjdGlvbi1idXR0b24iIGhyZWY9M0QiJHtoLnVybF9mb3IoIGNvbnRyb2xs
ZXI9M0QnPQpyZXF1ZXN0c19hZG1pbicsIGFjdGlvbj0zRCdtYW5hZ2VfZGF0YXNldHMnLCBjbnRy
bGxlcj0zRGNudHJsbGVyLCBzYW1wbGVfaWQ9Cj0zRHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCgg
c2FtcGxlLmlkICkgKX0iPlRyYW5zZmVyIGRhdGFzZXRzPC9hPjwvbGk+Ci0gICAgJWVuZGlmCi0g
ICAgPGxpPjxhIGNsYXNzPTNEImFjdGlvbi1idXR0b24iIGhyZWY9M0QiJHtoLnVybF9mb3IoIGNv
bnRyb2xsZXI9M0QncmVxdT0KZXN0c19jb21tb24nLCBhY3Rpb249M0Qndmlld19yZXF1ZXN0Jywg
Y250cmxsZXI9M0RjbnRybGxlciwgaWQ9M0R0cmFucy5zZWN1PQpyaXR5LmVuY29kZV9pZCggcmVx
dWVzdC5pZCApICl9Ij5Ccm93c2UgdGhpcyByZXF1ZXN0PC9hPjwvbGk+Ci08L3VsPgotCi0laWYg
bm90IHNhbXBsZToKLSAgICA8YnIvPgotICAgIDxmb250IGNvbG9yPTNEInJlZCI+PGI+PGk+U2Vs
ZWN0IGEgc2FtcGxlIGJlZm9yZSBzZWxlY3RpbmcgZGF0YXNldHMgdG89CiB0cmFuc2ZlcjwvaT48
L2I+PC9mb250PgotICAgIDxici8+Ci0lZW5kaWYKLQotJWlmIHJlcXVlc3Quc2FtcGxlc193aXRo
b3V0X2xpYnJhcnlfZGVzdGluYXRpb25zOgotICAgIDxwPgotICAgIDxmb250IGNvbG9yPTNEInJl
ZCI+PGI+PGk+U2VsZWN0IGEgdGFyZ2V0IGRhdGEgbGlicmFyeSBhbmQgZm9sZGVyIGZvciA9CmEg
c2FtcGxlIGJlZm9yZSBzZWxlY3RpbmcgaXRzIGRhdGFzZXRzIHRvIHRyYW5zZmVyIGZyb20gdGhl
IGV4dGVybmFsIHNlcnZpYz0KZTwvaT48L2I+PC9mb250PgotICAgIDwvcD4KLSVlbmRpZgotCi0l
aWYgbWVzc2FnZToKLSAgICAke3JlbmRlcl9tc2coIG1lc3NhZ2UsIHN0YXR1cyApfQotJWVuZGlm
Ci0KLTxkaXYgY2xhc3M9M0QidG9vbEZvcm0iPgotICAgIDxkaXYgY2xhc3M9M0QidG9vbEZvcm1U
aXRsZSI+U2VsZWN0IGRhdGFzZXRzIHRvIHRyYW5zZmVyIGZyb20gZGF0YSBkaXI9CmVjdG9yeSBj
b25maWd1cmVkIGZvciB0aGUgZXh0ZXJuYWwgc2VydmljZTwvZGl2PgotICAgIDxmb3JtIG5hbWU9
M0Qic2VsZWN0X2RhdGFzZXRzX3RvX3RyYW5zZmVyIiBpZD0zRCJzZWxlY3RfZGF0YXNldHNfdG9f
dHI9CmFuc2ZlciIgYWN0aW9uPTNEIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJ3JlcXVlc3Rz
X2FkbWluJywgYWN0aW9uPTNEJ3NlbD0KZWN0X2RhdGFzZXRzX3RvX3RyYW5zZmVyJywgY250cmxs
ZXI9M0RjbnRybGxlciwgZXh0ZXJuYWxfc2VydmljZV9pZD0zRHRyYW5zPQouc2VjdXJpdHkuZW5j
b2RlX2lkKCBleHRlcm5hbF9zZXJ2aWNlLmlkICksIHJlcXVlc3RfaWQ9M0R0cmFucy5zZWN1cml0
eS5lbmM9Cm9kZV9pZCggcmVxdWVzdC5pZCApKX0iIG1ldGhvZD0zRCJwb3N0IiA+Ci0gICAgICAg
IDxkaXYgY2xhc3M9M0QiZm9ybS1yb3ciPgotICAgICAgICAgICAgPGxhYmVsPlNhbXBsZTo8L2xh
YmVsPgotICAgICAgICAgICAgJHtzYW1wbGVfaWRfc2VsZWN0X2ZpZWxkLmdldF9odG1sKCl9Ci0g
ICAgICAgICAgICA8ZGl2IGNsYXNzPTNEInRvb2xQYXJhbUhlbHAiIHN0eWxlPTNEImNsZWFyOiBi
b3RoOyI+Ci0gICAgICAgICAgICAgICAgU2VsZWN0IHRoZSBzYW1wbGUgdGhhdCB3YXMgc2VxdWVu
Y2VkIHRvIHByb2R1Y2UgdGhlIGRhdGFzZT0KdHMgeW91IHdhbnQgdG8gdHJhbnNmZXIuCi0gICAg
ICAgICAgICA8L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9M0QiZm9y
bS1yb3ciID4KLSAgICAgICAgICAgIDxsYWJlbD5TZWxlY3QgZGF0YXNldHMgZnJvbSBzb3VyY2Ug
ZGF0YSBsb2NhdGlvbiBkZWZpbmVkIGluIHRoPQplIGV4dGVybmFsIHNlcnZpY2UgY29uZmlndXJh
dGlvbjo8L2xhYmVsPgotICAgICAgICAgICAgPGRpdiBpZD0zRCJ0cmVlIiA+Ci0gICAgICAgICAg
ICAgICAgTG9hZGluZy4uLgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8aW5wdXQg
aWQ9M0Qic2VsZWN0ZWRfZGF0YXNldHNfdG9fdHJhbnNmZXIiIG5hbWU9M0Qic2VsZWN0ZWRfZD0K
YXRhc2V0c190b190cmFuc2ZlciIgdHlwZT0zRCJoaWRkZW4iIHNpemU9M0Q0MCIvPgotICAgICAg
ICAgICAgPGRpdiBjbGFzcz0zRCJ0b29sUGFyYW1IZWxwIiBzdHlsZT0zRCJjbGVhcjogYm90aDsi
PgotICAgICAgICAgICAgICAgIDx1bD4KLSAgICAgICAgICAgICAgICAgICAgPGxpPkNsaWNrIHRo
ZSA8Yj5leHRlcm5hbCBzZXJ2aWNlIGNvbmZpZ3VyYXRpb248L2I+IGJ1PQp0dG9uIGFuZCBjaGFu
Z2UgdGhlIDxiPkRhdGEgZGlyZWN0b3J5PC9iPiBzZXR0aW5nIHRvIHJlZGVmaW5lIHRoZSBzb3Vy
Y2UgZGE9CnRhIGxvY2F0aW9uLjwvbGk+Ci0gICAgICAgICAgICAgICAgICAgIDxsaT5TZWxlY3Qg
YSBmb2xkZXIgdG8gc2VsZWN0IGFsbCBvZiB0aGUgaW5kaXZpZHVhbCBmaT0KbGVzIHdpdGhpbiB0
aGF0IGZvbGRlci48L2xpPgotICAgICAgICAgICAgICAgICAgICA8bGk+Q2xpY2sgdGhlIDxiPlNl
bGVjdCBkYXRhc2V0czwvYj4gYnV0dG9uIHdoZW4gZGVzaXI9CmVkIGRhdGFzZXQgY2hlY2sgYm94
ZXMgYXJlIGNoZWNrZWQuPC9saT4KLSAgICAgICAgICAgICAgICA8L3VsPgotICAgICAgICAgICAg
PC9kaXY+ICAgICAgICAgICA9MjAKLSAgICAgICAgPC9kaXY+Ci0gICAgICAgIDxkaXYgY2xhc3M9
M0QiZm9ybS1yb3ciPgotICAgICAgICAgICAgPGRpdiBpZD0zRCJmaWxlX2RldGFpbHMiIGNsYXNz
PTNEInRvb2xQYXJhbUhlbHAiIHN0eWxlPTNEImNsZWE9CnI6IGJvdGg7YmFja2dyb3VuZC1jb2xv
cjojRkFGQUZBOyI+PC9kaXY+Ci0gICAgICAgIDwvZGl2PgotICAgICAgICA8ZGl2IGNsYXNzPTNE
ImZvcm0tcm93Ij4KLSAgICAgICAgICAgIDxpbnB1dCB0eXBlPTNEInN1Ym1pdCIgbmFtZT0zRCJz
ZWxlY3RfZGF0YXNldHNfdG9fdHJhbnNmZXJfYnV0PQp0b24iIHZhbHVlPTNEIlNlbGVjdCBkYXRh
c2V0cyIvPgotICAgICAgICA8L2Rpdj4KLSAgICA8L2Zvcm0+Ci08L2Rpdj4KLQotJWlmIHNhbXBs
ZSBhbmQgc2FtcGxlLmRhdGFzZXRzOgotICAgIDwlIHRpdGxlID0zRCAnQWxsIHNlbGVjdGVkIGRh
dGFzZXRzIGZvciAiJXMiJyAlIHNhbXBsZS5uYW1lICU+Ci0gICAgPHAvPgotICAgICR7cmVuZGVy
X3NhbXBsZV9kYXRhc2V0cyggJ3JlcXVlc3RzX2FkbWluJywgc2FtcGxlLCBzYW1wbGUuZGF0YXNl
dHMsIHQ9Cml0bGUgKX0KLSVlbmRpZgoKZGlmZiAtciAyMGQ1YTIxYWRkOWFiNDVkOWM0YzVjMjZk
Njg2OTllNzcxMzEwMGRkIC1yIDZjMmZkN2JkZGM2YzFjNGU4YTY0MDkzPQpmM2ZjNGM0MzcwZjUx
NWI0ZSB0ZW1wbGF0ZXMvYWRtaW4vdG9vbF9zaGVkX3JlcG9zaXRvcnkvY29tbW9uLm1ha28KLS0t
IGEvdGVtcGxhdGVzL2FkbWluL3Rvb2xfc2hlZF9yZXBvc2l0b3J5L2NvbW1vbi5tYWtvCisrKyBi
L3RlbXBsYXRlcy9hZG1pbi90b29sX3NoZWRfcmVwb3NpdG9yeS9jb21tb24ubWFrbwpAQCAtMjMs
MTQgKzIzLDE2IEBACiAgICAgICAgICAgICAgICAgZng6IHsgaGVpZ2h0OiAidG9nZ2xlIiwgZHVy
YXRpb246IDIwMCB9LAogICAgICAgICAgICAgICAgIC8vIGluaXRBamF4IGlzIGhhcmQgdG8gZmFr
ZSwgc28gd2UgcGFzcyB0aGUgY2hpbGRyZW4gYXMgb2I9CmplY3QgYXJyYXk6CiAgICAgICAgICAg
ICAgICAgaW5pdEFqYXg6IHt1cmw6ICIke2gudXJsX2ZvciggY29udHJvbGxlcj0zRCdhZG1pbl90
b29sc2hlZD0KJywgYWN0aW9uPTNEJ29wZW5fZm9sZGVyJyApfSIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICBkYXRhVHlwZTogImpzb24iLD0yMAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YTogeyBmb2xkZXJfcGF0aDogIiR7ZGlyZWN0b3J5X3BhdGh8aH0iIH0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogImpzb24iLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YTogeyBmb2xkZXJfcGF0aDogIiR7ZGlyZWN0b3J5X3BhdGh8aH0iLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkOiAiJHt0cmFucy5z
ZWN1cml0eS5lbmNvZGU9Cl9pZCggcmVwb3NpdG9yeS5pZCApfSIgfSwKICAgICAgICAgICAgICAg
ICB9LAogICAgICAgICAgICAgICAgIG9uTGF6eVJlYWQ6IGZ1bmN0aW9uKGR0bm9kZSl7CiAgICAg
ICAgICAgICAgICAgICAgIGR0bm9kZS5hcHBlbmRBamF4KHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHVybDogIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJ2FkbWluX3Rvb2xzaGVkJywgPQph
Y3Rpb249M0Qnb3Blbl9mb2xkZXInICl9Iiw9MjAKKyAgICAgICAgICAgICAgICAgICAgICAgIHVy
bDogIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJ2FkbWluX3Rvb2xzaGVkJywgPQphY3Rpb249
M0Qnb3Blbl9mb2xkZXInICl9IiwKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAi
anNvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IGZvbGRlcl9wYXRoOiBkdG5v
ZGUuZGF0YS5rZXkgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgZm9sZGVyX3Bh
dGg6IGR0bm9kZS5kYXRhLmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVw
b3NpdG9yeV9pZDogIiR7dHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkPQooIHJlcG9zaXRvcnkuaWQg
KX0iIH0sCiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIH0sCiAgICAg
ICAgICAgICAgICAgb25TZWxlY3Q6IGZ1bmN0aW9uKHNlbGVjdCwgZHRub2RlKSB7CkBAIC01NSw3
ICs1Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogIlBPU1QiLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNE
J2FkbWluX3Rvb2xzaGU9CmQnLCBhY3Rpb249M0QnZ2V0X2ZpbGVfY29udGVudHMnICl9IiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogImpzb24iLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGE6IHsgZmlsZV9wYXRoOiBzZWxlY3RlZF92YWx1ZSB9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgZmlsZV9wYXRoOiBzZWxlY3RlZF92YWx1
ZSwgcmVwb3NpdG9yeV89CmlkOiAiJHt0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHJlcG9zaXRv
cnkuaWQgKX0iIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA6IGZ1bmN0
aW9uKCBkYXRhICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsLmh0bWwo
ICc8bGFiZWw+JytkYXRhKyc8L2xhYmVsPicgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KCmRpZmYgLXIgMjBkNWEyMWFkZDlhYjQ1ZDljNGM1YzI2ZDY4Njk5ZTc3MTMxMDBkZCAtciA2
YzJmZDdiZGRjNmMxYzRlOGE2NDA5Mz0KZjNmYzRjNDM3MGY1MTViNGUgdGVtcGxhdGVzL3dlYmFw
cHMvZ2FsYXh5L3JlcXVlc3RzL2NvbW1vbi9jb21tb24ubWFrbwotLS0gYS90ZW1wbGF0ZXMvd2Vi
YXBwcy9nYWxheHkvcmVxdWVzdHMvY29tbW9uL2NvbW1vbi5tYWtvCisrKyBiL3RlbXBsYXRlcy93
ZWJhcHBzL2dhbGF4eS9yZXF1ZXN0cy9jb21tb24vY29tbW9uLm1ha28KQEAgLTMzMyw3ICszMzMs
NiBAQAogICAgICAgIGNhbl9hZGRfc2FtcGxlcyA9M0QgaXNfdW5zdWJtaXR0ZWQKICAgICBjYW5f
ZGVsZXRlX3NhbXBsZXMgPTNEIG5vdCBhZGRpbmdfbmV3X3NhbXBsZXMgYW5kIHJlcXVlc3Quc2Ft
cGxlcyBhbmQgPQooICggaXNfYWRtaW4gYW5kIG5vdCBpc19jb21wbGV0ZSApIG9yIGlzX3Vuc3Vi
bWl0dGVkICkKICAgICBjYW5fZWRpdF9zYW1wbGVzID0zRCByZXF1ZXN0LnNhbXBsZXMgYW5kICgg
aXNfYWRtaW4gb3Igbm90IGlzX2NvbXBsZXRlPQogKQotICAgIGNhbl9zZWxlY3RfZGF0YXNldHMg
PTNEIGlzX2FkbWluIGFuZCBkaXNwbGF5YWJsZV9zYW1wbGVfd2lkZ2V0cyBhbmQgKCA9CmlzX3N1
Ym1pdHRlZCBvciBpc19jb21wbGV0ZSApCiAgICAgY2FuX3RyYW5zZmVyX2RhdGFzZXRzID0zRCBp
c19hZG1pbiBhbmQgcmVxdWVzdC5zYW1wbGVzIGFuZCBub3QgcmVxdWVzdD0KLmlzX3JlamVjdGVk
CiAgICAgZGlzcGxheV9jaGVja2JveGVzID0zRCBub3QgYWRkaW5nX25ld19zYW1wbGVzIGFuZCAo
IGlzX2NvbXBsZXRlIG9yIGlzXz0KcmVqZWN0ZWQgb3IgaXNfc3VibWl0dGVkICkKICAgICBkaXNw
bGF5X2Jhcl9jb2RlID0zRCByZXF1ZXN0LnNhbXBsZXMgYW5kICggaXNfY29tcGxldGUgb3IgaXNf
cmVqZWN0ZWQgPQpvciBpc19zdWJtaXR0ZWQgKQpAQCAtNDA3LDcgKzQwNiw3IEBACiAgICAgICAg
ICAgICAgICAgJWVsaWYgc2FtcGxlOgogICAgICAgICAgICAgICAgICAgICA8dHI+PHRkPgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICVpZiBzYW1wbGUuc3RhdGUgYW5kICggY2FuX3NlbGVj
dF9kYXRhc2V0cyBvciA9CmNhbl90cmFuc2Zlcl9kYXRhc2V0cyApOgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICVpZiBzYW1wbGUuc3RhdGUgYW5kIGNhbl90cmFuc2Zlcl9kYXRhc2V0czoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMgQSBzYW1wbGUgd2lsbCBoYXZlIGEg
c3RhdGUgb25seSBhZnRlciB0PQpoZSByZXF1ZXN0IGhhcyBiZWVuIHN1Ym1pdHRlZC4KICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPCUKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVuY29kZWRfaWQgPTNEIHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pPQpkKCBzYW1w
bGUuaWQgKQpAQCAtNDE5LDE0ICs0MTgsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPGEgY2xhc3M9M0Qidmlldy1pbmZvIiBocmVmPTNEIiR7aC51cmw9Cl9mb3IoIGNv
bnRyb2xsZXI9M0QncmVxdWVzdHNfY29tbW9uJywgYWN0aW9uPTNEJ3ZpZXdfc2FtcGxlJywgY250
cmxsZXI9M0Rjbj0KdHJsbGVyLCBpZD0zRHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggc2FtcGxl
LmlkICkgKX0iPiR7c2FtcGxlLm5hbWUgfCBofTwvPQphPjwvZGl2PjxkaXYgcG9wdXBtZW51PTNE
InNhbXBsZS0ke3NhbXBsZS5pZH0tcG9wdXAiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJWlmIGNhbl9zZWxlY3RfZGF0YXNldHM6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJWZvciBleHRlcm5hbF9zZXJ2aWNlIGluIHNhbXBsZS5yZT0KcXVl
c3QudHlwZS5nZXRfZXh0ZXJuYWxfc2VydmljZXNfZm9yX21hbnVhbF9kYXRhX3RyYW5zZmVyKCB0
cmFucyApOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8JQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudV9pdGVt
X2xhYmVsID0zRCAiU2VsZWM9CnQgZGF0YXNldHMgdG8gdHJhbnNmZXIgdXNpbmcgJXMiICUgZXh0
ZXJuYWxfc2VydmljZS5uYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICU+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxs
aT48YSBjbGFzcz0zRCJhY3Rpb24tYnV0dG9uIj0KIGhyZWY9M0QiJHtoLnVybF9mb3IoIGNvbnRy
b2xsZXI9M0QncmVxdWVzdHNfYWRtaW4nLCBhY3Rpb249M0Qnc2VsZWN0X2RhdGFzPQpldHNfdG9f
dHJhbnNmZXInLCBleHRlcm5hbF9zZXJ2aWNlX2lkPTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lk
KCBleHRlcm5hbF89CnNlcnZpY2UuaWQgKSwgcmVxdWVzdF9pZD0zRHRyYW5zLnNlY3VyaXR5LmVu
Y29kZV9pZCggcmVxdWVzdC5pZCApLCBzYW1wbGVfaT0KZD0zRHRyYW5zLnNlY3VyaXR5LmVuY29k
ZV9pZCggc2FtcGxlLmlkICkgKX0iPiR7bWVudV9pdGVtX2xhYmVsfTwvYT48L2xpPgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVlbmRmb3IKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICVlbmRpZgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJWlmIHNhbXBsZS5kYXRhc2V0cyBhbmQgbGVuKCBzYW1wbGUuZGE9CnRhc2V0cyAp
ID4gbGVuKCB0cmFuc2ZlcnJlZF9kYXRhc2V0X2ZpbGVzICkgYW5kIHNhbXBsZS5saWJyYXJ5IGFu
ZCBzYW1wbGUuZj0Kb2xkZXI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPGxpPjxhIGNsYXNzPTNEImFjdGlvbi1idXR0b24iIGhyZT0KZj0zRCIke2gudXJsX2Zvcigg
Y29udHJvbGxlcj0zRCdyZXF1ZXN0c19hZG1pbicsIGFjdGlvbj0zRCdtYW5hZ2VfZGF0YXNldHMn
PQosIHNhbXBsZV9pZD0zRHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggc2FtcGxlLmlkICkgKX0i
Pk1hbmFnZSBzZWxlY3RlZCBkYXQ9CmFzZXRzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAlZWxpZiBzYW1wbGUuZGF0YXNldHMgYW5kIGxlbiggc2FtcGxlLj0K
ZGF0YXNldHMgKSA9M0Q9M0QgbGVuKCB0cmFuc2ZlcnJlZF9kYXRhc2V0X2ZpbGVzICk6CkBAIC02
NjUsNyArNjU2LDYgQEAKICAgICAgICAgICAgIGlzX2FkbWluID0zRCBjbnRybGxlciA9M0Q9M0Qg
J3JlcXVlc3RzX2FkbWluJyBhbmQgdHJhbnMudXNlcl9pPQpzX2FkbWluKCkKICAgICAgICAgICAg
IGlzX2NvbXBsZXRlID0zRCBzYW1wbGUucmVxdWVzdC5pc19jb21wbGV0ZQogICAgICAgICAgICAg
aXNfc3VibWl0dGVkID0zRCBzYW1wbGUucmVxdWVzdC5pc19zdWJtaXR0ZWQKLSAgICAgICAgICAg
IGNhbl9zZWxlY3RfZGF0YXNldHMgPTNEIGlzX2FkbWluIGFuZCAoIGlzX2NvbXBsZXRlIG9yIGlz
X3N1Ym1pPQp0dGVkICkKICAgICAgICAgICAgIGNhbl90cmFuc2Zlcl9kYXRhc2V0cyA9M0QgaXNf
YWRtaW4gYW5kIHNhbXBsZS51bnRyYW5zZmVycmVkX2RhPQp0YXNldF9maWxlcwogICAgICAgICAl
PgogICAgICAgICAjIyBUaGUgdHJhbnNmZXIgc3RhdHVzIHNob3VsZCB1cGRhdGUgb25seSB3aGVu
IHRoZSByZXF1ZXN0IGhhcyBiZWU9Cm4gc3VibWl0dGVkIG9yIGNvbXBsZXRlCgpkaWZmIC1yIDIw
ZDVhMjFhZGQ5YWI0NWQ5YzRjNWMyNmQ2ODY5OWU3NzEzMTAwZGQgLXIgNmMyZmQ3YmRkYzZjMWM0
ZThhNjQwOTM9CmYzZmM0YzQzNzBmNTE1YjRlIHRlbXBsYXRlcy93ZWJhcHBzL2dhbGF4eS9yZXF1
ZXN0cy9jb21tb24vdmlld19yZXF1ZXN0X2hpcz0KdG9yeS5tYWtvCi0tLSBhL3RlbXBsYXRlcy93
ZWJhcHBzL2dhbGF4eS9yZXF1ZXN0cy9jb21tb24vdmlld19yZXF1ZXN0X2hpc3RvcnkubWFrbwor
KysgYi90ZW1wbGF0ZXMvd2ViYXBwcy9nYWxheHkvcmVxdWVzdHMvY29tbW9uL3ZpZXdfcmVxdWVz
dF9oaXN0b3J5Lm1ha28KQEAgLTExLDcgKzExLDYgQEAKICAgICBjYW5fYWRkX3NhbXBsZXMgPTNE
IGlzX3Vuc3VibWl0dGVkCiAgICAgY2FuX2VkaXRfcmVxdWVzdCA9M0QgKCBpc19hZG1pbiBhbmQg
bm90IGlzX2NvbXBsZXRlICkgb3IgaXNfdW5zdWJtaXR0ZWQKICAgICBjYW5fcmVqZWN0ID0zRCBp
c19hZG1pbiBhbmQgaXNfc3VibWl0dGVkCi0gICAgY2FuX3NlbGVjdF9kYXRhc2V0cyA9M0QgaXNf
YWRtaW4gYW5kICggaXNfY29tcGxldGUgb3IgaXNfc3VibWl0dGVkICkKICAgICBjYW5fc3VibWl0
X3JlcXVlc3QgPTNEIHJlcXVlc3Quc2FtcGxlcyBhbmQgaXNfdW5zdWJtaXR0ZWQKICU+Cj0yMAoK
ZGlmZiAtciAyMGQ1YTIxYWRkOWFiNDVkOWM0YzVjMjZkNjg2OTllNzcxMzEwMGRkIC1yIDZjMmZk
N2JkZGM2YzFjNGU4YTY0MDkzPQpmM2ZjNGM0MzcwZjUxNWI0ZSB0ZW1wbGF0ZXMvd2ViYXBwcy9n
YWxheHkvcmVxdWVzdHMvY29tbW9uL3ZpZXdfc2FtcGxlX2RhdGE9CnNldHMubWFrbwotLS0gYS90
ZW1wbGF0ZXMvd2ViYXBwcy9nYWxheHkvcmVxdWVzdHMvY29tbW9uL3ZpZXdfc2FtcGxlX2RhdGFz
ZXRzLm1ha28KKysrIGIvdGVtcGxhdGVzL3dlYmFwcHMvZ2FsYXh5L3JlcXVlc3RzL2NvbW1vbi92
aWV3X3NhbXBsZV9kYXRhc2V0cy5tYWtvCkBAIC0xMiw3ICsxMiw2IEBACiAgICAgaXNfYWRtaW4g
PTNEIGNudHJsbGVyID0zRD0zRCAncmVxdWVzdHNfYWRtaW4nIGFuZCB0cmFucy51c2VyX2lzX2Fk
bWluKCkKICAgICBpc19jb21wbGV0ZSA9M0Qgc2FtcGxlLnJlcXVlc3QuaXNfY29tcGxldGUKICAg
ICBpc19zdWJtaXR0ZWQgPTNEIHNhbXBsZS5yZXF1ZXN0LmlzX3N1Ym1pdHRlZAotICAgIGNhbl9z
ZWxlY3RfZGF0YXNldHMgPTNEIGlzX2FkbWluIGFuZCAoIGlzX2NvbXBsZXRlIG9yIGlzX3N1Ym1p
dHRlZCApCiAgICAgY2FuX3RyYW5zZmVyX2RhdGFzZXRzID0zRCBpc19hZG1pbiBhbmQgc2FtcGxl
LnVudHJhbnNmZXJyZWRfZGF0YXNldF9maT0KbGVzIGFuZCBzYW1wbGUubGlicmFyeSBhbmQgc2Ft
cGxlLmZvbGRlcgogJT4KPTIwCkBAIC0yNCw5ICsyMyw2IEBACiAgICAgJWVuZGlmCiAgICAgPGxp
PjxhIGNsYXNzPTNEImFjdGlvbi1idXR0b24iIGlkPTNEInNhbXBsZS0ke3NhbXBsZS5pZH0tcG9w
dXAiIGNsYXNzPQo9M0QibWVudWJ1dHRvbiI+RGF0YXNldCBBY3Rpb25zPC9hPjwvbGk+PGRpdiBw
b3B1cG1lbnU9M0Qic2FtcGxlLSR7c2FtcGxlLmk9CmR9LXBvcHVwIj4KLSAgICAgICAgJWlmIGNh
bl9zZWxlY3RfZGF0YXNldHM6Ci0gICAgICAgICAgICA8bGk+PGEgY2xhc3M9M0QiYWN0aW9uLWJ1
dHRvbiIgaHJlZj0zRCIke2gudXJsX2ZvciggY29udHJvbGxlcj0KPTNEJ3JlcXVlc3RzX2FkbWlu
JywgYWN0aW9uPTNEJ3NlbGVjdF9kYXRhc2V0c190b190cmFuc2ZlcicsIGNudHJsbGVyPTNEY250
PQpybGxlciwgZXh0ZXJuYWxfc2VydmljZV9pZD0zRHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCgg
ZXh0ZXJuYWxfc2VydmljZS5pZCA9CiksIHJlcXVlc3RfaWQ9M0R0cmFucy5zZWN1cml0eS5lbmNv
ZGVfaWQoIHNhbXBsZS5yZXF1ZXN0LmlkICksIHNhbXBsZV9pZD0zRD0KdHJhbnMuc2VjdXJpdHku
ZW5jb2RlX2lkKCBzYW1wbGUuaWQgKSApfSI+U2VsZWN0IG1vcmUgZGF0YXNldHM8L2E+PC9saT4K
LSAgICAgICAgJWVuZGlmCiAgICAgICAgIDxsaT48YSBjbGFzcz0zRCJhY3Rpb24tYnV0dG9uIiBo
cmVmPTNEIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJz0KbGlicmFyeV9jb21tb24nLCBhY3Rp
b249M0QnYnJvd3NlX2xpYnJhcnknLCBjbnRybGxlcj0zRGNudHJsbGVyLCBpZD0zRHRyYW5zPQou
c2VjdXJpdHkuZW5jb2RlX2lkKCBzYW1wbGUubGlicmFyeS5pZCApICl9Ij5WaWV3IHRhcmdldCBE
YXRhIExpYnJhcnk8L2E+PC89CmxpPjxsaT48YSBjbGFzcz0zRCJhY3Rpb24tYnV0dG9uIiBocmVm
PTNEIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJ3JlcXVlcz0KdHNfY29tbW9uJywgYWN0aW9u
PTNEJ3ZpZXdfcmVxdWVzdCcsIGNudHJsbGVyPTNEY250cmxsZXIsIGlkPTNEdHJhbnMuc2VjdXJp
PQp0eS5lbmNvZGVfaWQoIHNhbXBsZS5yZXF1ZXN0LmlkICkgKX0iPkJyb3dzZSB0aGlzIHJlcXVl
c3Q8L2E+PC9saT48L2Rpdj4KCmRpZmYgLXIgMjBkNWEyMWFkZDlhYjQ1ZDljNGM1YzI2ZDY4Njk5
ZTc3MTMxMDBkZCAtciA2YzJmZDdiZGRjNmMxYzRlOGE2NDA5Mz0KZjNmYzRjNDM3MGY1MTViNGUg
dGVtcGxhdGVzL3dlYmFwcHMvdG9vbF9zaGVkL3JlcG9zaXRvcnkvY29tbW9uLm1ha28KLS0tIGEv
dGVtcGxhdGVzL3dlYmFwcHMvdG9vbF9zaGVkL3JlcG9zaXRvcnkvY29tbW9uLm1ha28KKysrIGIv
dGVtcGxhdGVzL3dlYmFwcHMvdG9vbF9zaGVkL3JlcG9zaXRvcnkvY29tbW9uLm1ha28KQEAgLTIy
LDE0ICsyMiwxNCBAQAogICAgICAgICAgICAgICAgIGZ4OiB7IGhlaWdodDogInRvZ2dsZSIsIGR1
cmF0aW9uOiAyMDAgfSwKICAgICAgICAgICAgICAgICAvLyBpbml0QWpheCBpcyBoYXJkIHRvIGZh
a2UsIHNvIHdlIHBhc3MgdGhlIGNoaWxkcmVuIGFzIG9iPQpqZWN0IGFycmF5OgogICAgICAgICAg
ICAgICAgIGluaXRBamF4OiB7dXJsOiAiJHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmVwb3Np
dG9yeScsIGE9CmN0aW9uPTNEJ29wZW5fZm9sZGVyJyApfSIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhVHlwZTogImpzb24iLD0yMAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGF0YTogeyBmb2xkZXJfcGF0aDogIiR7cmVwb3NpdG9yeS5yZXBvX3BhdGgoIHQ9CnJhbnMuYXBw
ICl9IiB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICJqc29uIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsgZm9sZGVyX3BhdGg6ICIke3JlcG9zaXRv
cnkucmVwb19wYXRoKCB0PQpyYW5zLmFwcCApfSIsIHJlcG9zaXRvcnlfaWQ6ICIke3RyYW5zLnNl
Y3VyaXR5LmVuY29kZV9pZCggcmVwb3NpdG9yeS5pZCApfSI9CiAgfSwKICAgICAgICAgICAgICAg
ICB9LAogICAgICAgICAgICAgICAgIG9uTGF6eVJlYWQ6IGZ1bmN0aW9uKGR0bm9kZSl7CiAgICAg
ICAgICAgICAgICAgICAgIGR0bm9kZS5hcHBlbmRBamF4KHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHVybDogIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJ3JlcG9zaXRvcnknLCBhY3RpPQpv
bj0zRCdvcGVuX2ZvbGRlcicgKX0iLD0yMAorICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAi
JHtoLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmVwb3NpdG9yeScsIGFjdGk9Cm9uPTNEJ29wZW5f
Zm9sZGVyJyApfSIsCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogImpzb24iLAot
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogeyBmb2xkZXJfcGF0aDogZHRub2RlLmRhdGEu
a2V5IH0sCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IGZvbGRlcl9wYXRoOiBkdG5v
ZGUuZGF0YS5rZXksIHJlcG9zaXRvcnlfaT0KZDogIiR7dHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lk
KCByZXBvc2l0b3J5LmlkICl9IiAgfSwKICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAg
ICAgICAgICAgfSwKICAgICAgICAgICAgICAgICBvblNlbGVjdDogZnVuY3Rpb24oc2VsZWN0LCBk
dG5vZGUpIHsKQEAgLTYyLDcgKzYyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
eXBlOiAiUE9TVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAiJHtoLnVybF9m
b3IoIGNvbnRyb2xsZXI9M0QncmVwb3NpdG9yeScsID0KYWN0aW9uPTNEJ2dldF9maWxlX2NvbnRl
bnRzJyApfSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICJqc29uIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IGZpbGVfcGF0aDogc2VsZWN0ZWRf
dmFsdWUgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7IGZpbGVfcGF0aDog
c2VsZWN0ZWRfdmFsdWUsIHJlcG9zaXRvcnlfPQppZDogIiR7dHJhbnMuc2VjdXJpdHkuZW5jb2Rl
X2lkKCByZXBvc2l0b3J5LmlkICl9IiB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1
Y2Nlc3MgOiBmdW5jdGlvbiAoIGRhdGEgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNlbGwuaHRtbCggJzxsYWJlbD4nK2RhdGErJzwvbGFiZWw+JyApCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQoKZGlmZiAtciAyMGQ1YTIxYWRkOWFiNDVkOWM0YzVjMjZkNjg2OTll
NzcxMzEwMGRkIC1yIDZjMmZkN2JkZGM2YzFjNGU4YTY0MDkzPQpmM2ZjNGM0MzcwZjUxNWI0ZSB0
ZXN0L3VuaXQvdGVzdF9nYWxheHlfbWFwcGluZy5weQotLS0gYS90ZXN0L3VuaXQvdGVzdF9nYWxh
eHlfbWFwcGluZy5weQorKysgYi90ZXN0L3VuaXQvdGVzdF9nYWxheHlfbWFwcGluZy5weQpAQCAt
NDEzLDcgKzQxMyw3IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldFVwQ2xhc3MoY2xz
KToKICAgICAgICAgIyBTdGFydCB0aGUgZGF0YWJhc2UgYW5kIGNvbm5lY3QgdGhlIG1hcHBpbmcK
LSAgICAgICAgY2xzLm1vZGVsID0zRCBtYXBwaW5nLmluaXQoICIvdG1wIiwgInNxbGl0ZTovLy86
bWVtb3J5OiIsIGNyZWF0ZV90PQphYmxlcz0zRFRydWUgKQorICAgICAgICBjbHMubW9kZWwgPTNE
IG1hcHBpbmcuaW5pdCggIi90bXAiLCAic3FsaXRlOi8vLzptZW1vcnk6IiwgY3JlYXRlX3Q9CmFi
bGVzPTNEVHJ1ZSwgb2JqZWN0X3N0b3JlPTNETW9ja09iamVjdFN0b3JlKCkgKQogICAgICAgICBh
c3NlcnQgY2xzLm1vZGVsLmVuZ2luZSBpcyBub3QgTm9uZQo9MjAKICAgICBAY2xhc3NtZXRob2QK
QEAgLTQ0Miw2ICs0NDIsMjEgQEAKICAgICAgICAgY2xzLm1vZGVsLnNlc3Npb24uZXhwdW5nZV9h
bGwoKQo9MjAKPTIwCitjbGFzcyBNb2NrT2JqZWN0U3RvcmUob2JqZWN0KToKKworICAgIGRlZiBf
X2luaXRfXyhzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHNpemUoc2VsZiwgZGF0YXNl
dCk6CisgICAgICAgIHJldHVybiA0MgorCisgICAgZGVmIGV4aXN0cyhzZWxmLCAqYXJncywgKipr
d2RzKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBnZXRfZmlsZW5hbWUoc2VsZiwg
KmFyZ3MsICoqa3dkcyk6CisgICAgICAgIHJldHVybiAiZGF0YWVzdF8xNC5kYXQiCisKKwogZGVm
IGdldF9zdWl0ZSgpOgogICAgIHN1aXRlID0zRCB1bml0dGVzdC5UZXN0U3VpdGUoKQogICAgIHN1
aXRlLmFkZFRlc3QoIE1hcHBpbmdUZXN0cyggInRlc3RfYmFzaWMiICkgKQoKCmh0dHBzOi8vYml0
YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy8wMzRjYjBmYjg3ZGYvCkNo
YW5nZXNldDogICAwMzRjYjBmYjg3ZGYKQnJhbmNoOiAgICAgIHJlbGVhc2VfMTUuMDcKVXNlcjog
ICAgICAgIG5hdGVmb28KRGF0ZTogICAgICAgIDIwMTYtMDItMjQgMjA6NTY6MzMrMDA6MDAKU3Vt
bWFyeTogICAgIFJlbGVhc2UgMTUuMDcuMQpBZmZlY3RlZCAjOiAgMTM1IGZpbGVzCgpkaWZmIC1y
IGM4YWIwZmUyODZiZjEwYWRkMjZmZTk2NzMzMGNmYzc5OTlhZmZkZjAgLXIgMDM0Y2IwZmI4N2Rm
YzJhZTU2ZGUxMDc9CjJhNDVhNjgxODk3OTdlOTc5IGNsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMv
Y29sbGVjdGlvbi9saXN0LWNvbGxlY3Rpb24tY3JlYT0KdG9yLmpzCi0tLSBhL2NsaWVudC9nYWxh
eHkvc2NyaXB0cy9tdmMvY29sbGVjdGlvbi9saXN0LWNvbGxlY3Rpb24tY3JlYXRvci5qcworKysg
Yi9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL2NvbGxlY3Rpb24vbGlzdC1jb2xsZWN0aW9uLWNy
ZWF0b3IuanMKQEAgLTQzLDcgKzQzLDcgQEAKICAgICAvL1RPRE86IGxvdHMgb2YgdW51c2VkIHNw
YWNlIGluIHRoZSBlbGVtZW50IC0gcG9zc2libHkgbG9hZCBkZXRhaWxzIGFuPQpkIGRpc3BsYXkg
dGhlbSBob3Jpei4KICAgICB0ZW1wbGF0ZSA6IF8udGVtcGxhdGUoWwogICAgICAgICAnPGEgY2xh
c3M9M0QibmFtZSIgdGl0bGU9M0QiJywgX2woICdDbGljayB0byByZW5hbWUnICksICciIGhyZWY9
M0Q9CiJqYXZhc2NyaXB0OnZvaWQoMCkiPicsCi0gICAgICAgICAgICAnPCU9M0QgZWxlbWVudC5u
YW1lICU+JywKKyAgICAgICAgICAgICc8JS0gZWxlbWVudC5uYW1lICU+JywKICAgICAgICAgJzwv
YT4nLAogICAgICAgICAnPGJ1dHRvbiBjbGFzcz0zRCJkaXNjYXJkIGJ0biBidG4tc20iIHRpdGxl
PTNEIicsIF9sKCAnUmVtb3ZlIHRoaXM9CiBkYXRhc2V0IGZyb20gdGhlIGxpc3QnICksICciPics
CiAgICAgICAgICAgICBfbCggJ0Rpc2NhcmQnICksCkBAIC05MjUsNyArOTI1LDcgQEAKICAgICAg
ICAgaW52YWxpZEVsZW1lbnRzIDogXy50ZW1wbGF0ZShbCiAgICAgICAgICAgICBfbCggJ1RoZSBm
b2xsb3dpbmcgc2VsZWN0aW9ucyBjb3VsZCBub3QgYmUgaW5jbHVkZWQgZHVlIHRvIHBybz0KYmxl
bXM6JyApLAogICAgICAgICAgICAgJzx1bD48JSBfLmVhY2goIHByb2JsZW1zLCBmdW5jdGlvbigg
cHJvYmxlbSApeyAlPicsCi0gICAgICAgICAgICAgICAgJzxsaT48Yj48JT0zRCBwcm9ibGVtLmVs
ZW1lbnQubmFtZSAlPjwvYj46IDwlPTNEIHByb2JsZW0udD0KZXh0ICU+PC9saT4nLAorICAgICAg
ICAgICAgICAgICc8bGk+PGI+PCUtIHByb2JsZW0uZWxlbWVudC5uYW1lICU+PC9iPjogPCUtIHBy
b2JsZW0udGV4dCA9CiU+PC9saT4nLAogICAgICAgICAgICAgJzwlIH0pOyAlPjwvdWw+JwogICAg
ICAgICBdLmpvaW4oJycpKSwKPTIwCkBAIC05NDUsNyArOTQ1LDcgQEAKICAgICAgICAgICAgICAg
ICAgICAgICAgICc8JSBpZiggXy5zaXplKCBwcm9ibGVtcyApICl7ICU+JywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfbCggJ1RoZSBmb2xsb3dpbmcgc2VsZWN0aW9ucyBjb3VsZCBub3Qg
YmUgaW5jPQpsdWRlZCBkdWUgdG8gcHJvYmxlbXMnICksICc6JywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnPHVsPjwlIF8uZWFjaCggcHJvYmxlbXMsIGZ1bmN0aW9uKCBwcm9ibGVtICl7
PQogJT4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGxpPjxiPjwlPTNEIHBy
b2JsZW0uZWxlbWVudC5uYW1lICU+PC9iPjo9CiA8JT0zRCBwcm9ibGVtLnRleHQgJT48L2xpPics
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8bGk+PGI+PCUtIHByb2JsZW0uZWxl
bWVudC5uYW1lICU+PC9iPjogPD0KJS0gcHJvYmxlbS50ZXh0ICU+PC9saT4nLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICc8JSB9KTsgJT48L3VsPicsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAnPCUgfSBlbHNlIGlmKCBfLnNpemUoIGVsZW1lbnRzICkgPCAxICl7ICU+JywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfbCggJ05vIGRhdGFzZXRzIHdlcmUgc2VsZWN0ZWQnICks
ICcuJywKCmRpZmYgLXIgYzhhYjBmZTI4NmJmMTBhZGQyNmZlOTY3MzMwY2ZjNzk5OWFmZmRmMCAt
ciAwMzRjYjBmYjg3ZGZjMmFlNTZkZTEwNz0KMmE0NWE2ODE4OTc5N2U5NzkgY2xpZW50L2dhbGF4
eS9zY3JpcHRzL212Yy9jb2xsZWN0aW9uL2xpc3Qtb2YtcGFpcnMtY29sbGVjPQp0aW9uLWNyZWF0
b3IuanMKLS0tIGEvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9jb2xsZWN0aW9uL2xpc3Qtb2Yt
cGFpcnMtY29sbGVjdGlvbi1jcmVhdG9yPQouanMKKysrIGIvY2xpZW50L2dhbGF4eS9zY3JpcHRz
L212Yy9jb2xsZWN0aW9uL2xpc3Qtb2YtcGFpcnMtY29sbGVjdGlvbi1jcmVhdG9yPQouanMKQEAg
LTMwLDExICszMCwxMSBAQAogICAgIH0sCj0yMAogICAgIHRlbXBsYXRlIDogXy50ZW1wbGF0ZShb
Ci0gICAgICAgICc8c3BhbiBjbGFzcz0zRCJmb3J3YXJkLWRhdGFzZXQtbmFtZSBmbGV4LWNvbHVt
biI+PCU9M0QgcGFpci5mb3J3YT0KcmQubmFtZSAlPjwvc3Bhbj4nLAorICAgICAgICAnPHNwYW4g
Y2xhc3M9M0QiZm9yd2FyZC1kYXRhc2V0LW5hbWUgZmxleC1jb2x1bW4iPjwlLSBwYWlyLmZvcndh
cmQ9Ci5uYW1lICU+PC9zcGFuPicsCiAgICAgICAgICc8c3BhbiBjbGFzcz0zRCJwYWlyLW5hbWUt
Y29sdW1uIGZsZXgtY29sdW1uIj4nLAotICAgICAgICAgICAgJzxzcGFuIGNsYXNzPTNEInBhaXIt
bmFtZSI+PCU9M0QgcGFpci5uYW1lICU+PC9zcGFuPicsCisgICAgICAgICAgICAnPHNwYW4gY2xh
c3M9M0QicGFpci1uYW1lIj48JS0gcGFpci5uYW1lICU+PC9zcGFuPicsCiAgICAgICAgICc8L3Nw
YW4+JywKLSAgICAgICAgJzxzcGFuIGNsYXNzPTNEInJldmVyc2UtZGF0YXNldC1uYW1lIGZsZXgt
Y29sdW1uIj48JT0zRCBwYWlyLnJldmVyPQpzZS5uYW1lICU+PC9zcGFuPicKKyAgICAgICAgJzxz
cGFuIGNsYXNzPTNEInJldmVyc2UtZGF0YXNldC1uYW1lIGZsZXgtY29sdW1uIj48JS0gcGFpci5y
ZXZlcnNlPQoubmFtZSAlPjwvc3Bhbj4nCiAgICAgXS5qb2luKCcnKSksCj0yMAogICAgIHJlbmRl
ciA6IGZ1bmN0aW9uKCl7CgpkaWZmIC1yIGM4YWIwZmUyODZiZjEwYWRkMjZmZTk2NzMzMGNmYzc5
OTlhZmZkZjAgLXIgMDM0Y2IwZmI4N2RmYzJhZTU2ZGUxMDc9CjJhNDVhNjgxODk3OTdlOTc5IGNs
aWVudC9nYWxheHkvc2NyaXB0cy9tdmMvY29sbGVjdGlvbi9wYWlyLWNvbGxlY3Rpb24tY3JlYT0K
dG9yLmpzCi0tLSBhL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvY29sbGVjdGlvbi9wYWlyLWNv
bGxlY3Rpb24tY3JlYXRvci5qcworKysgYi9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL2NvbGxl
Y3Rpb24vcGFpci1jb2xsZWN0aW9uLWNyZWF0b3IuanMKQEAgLTMyLDggKzMyLDggQEAKPTIwCiAg
ICAgLy9UT0RPOiBsb3RzIG9mIHVudXNlZCBzcGFjZSBpbiB0aGUgZWxlbWVudCAtIHBvc3NpYmx5
IGxvYWQgZGV0YWlscyBhbj0KZCBkaXNwbGF5IHRoZW0gaG9yaXouCiAgICAgdGVtcGxhdGUgOiBf
LnRlbXBsYXRlKFsKLSAgICAgICAgJzxzcGFuIGNsYXNzPTNEImlkZW50aWZpZXIiPjwlPTNEIGlk
ZW50aWZpZXIgJT48L3NwYW4+JywKLSAgICAgICAgJzxzcGFuIGNsYXNzPTNEIm5hbWUiPjwlPTNE
IGVsZW1lbnQubmFtZSAlPjwvc3Bhbj4nLAorICAgICAgICAnPHNwYW4gY2xhc3M9M0QiaWRlbnRp
ZmllciI+PCUtIGlkZW50aWZpZXIgJT48L3NwYW4+JywKKyAgICAgICAgJzxzcGFuIGNsYXNzPTNE
Im5hbWUiPjwlLSBlbGVtZW50Lm5hbWUgJT48L3NwYW4+JywKICAgICBdLmpvaW4oJycpKSwKPTIw
CiAgICAgLyoqIHJlbW92ZSB0aGUgRE9NIGFuZCBhbnkgbGlzdGVuZXJzICovCkBAIC0xNzYsMTUg
KzE3NiwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgJzwlIGlmKCBfLnNpemUoIHByb2Js
ZW1zICkgKXsgJT4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9sKCAnVGhlIGZvbGxv
d2luZyBzZWxlY3Rpb25zIGNvdWxkIG5vdCBiZSBpbmM9Cmx1ZGVkIGR1ZSB0byBwcm9ibGVtcycg
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHVsPjwlIF8uZWFjaCggcHJvYmxlbXMs
IGZ1bmN0aW9uKCBwcm9ibGVtICl7PQogJT4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnPGxpPjxiPjwlPTNEIHByb2JsZW0uZWxlbWVudC5uYW1lICU+PC9iPjo9CiA8JT0zRCBw
cm9ibGVtLnRleHQgJT48L2xpPicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8
bGk+PGI+PCUtIHByb2JsZW0uZWxlbWVudC5uYW1lICU+PC9iPjogPD0KJS0gcHJvYmxlbS50ZXh0
ICU+PC9saT4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8JSB9KTsgJT48L3VsPics
CiAgICAgICAgICAgICAgICAgICAgICAgICAnPCUgfSBlbHNlIGlmKCBfLnNpemUoIGVsZW1lbnRz
ICkgPTNEPTNEPTNEIDAgKXsgJT0KPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2wo
ICdObyBkYXRhc2V0cyB3ZXJlIHNlbGVjdGVkJyApLCAnLicsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAnPCUgfSBlbHNlIGlmKCBfLnNpemUoIGVsZW1lbnRzICkgPTNEPTNEPTNEIDEgKXsgJT0K
PicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2woICdPbmx5IG9uZSBkYXRhc2V0IHdh
cyBzZWxlY3RlZCcgKSwgJzogPCU9Cj0zRCBlbGVtZW50c1swXS5uYW1lICU+JywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfbCggJ09ubHkgb25lIGRhdGFzZXQgd2FzIHNlbGVjdGVkJyAp
LCAnOiA8JS0gPQplbGVtZW50c1swXS5uYW1lICU+JywKICAgICAgICAgICAgICAgICAgICAgICAg
ICc8JSB9IGVsc2UgaWYoIF8uc2l6ZSggZWxlbWVudHMgKSA+IDIgKXsgJT4nLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9sKCAnVG9vIG1hbnkgZGF0YXNldHMgd2VyZSBzZWxlY3RlZCcg
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnOiA8JT0zRCBfLnBsdWNrKCBlbGVtZW50
cywgIm5hbWUiICkuam9pbiggIiwgPQoiKSAlPicsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJzogPCUtIF8ucGx1Y2soIGVsZW1lbnRzLCAibmFtZSIgKS5qb2luKCAiLCAiKT0KICU+JywK
ICAgICAgICAgICAgICAgICAgICAgICAgICc8JSB9ICU+JywKICAgICAgICAgICAgICAgICAgICAg
ICAgICc8YnIgLz4nLAogICAgICAgICAgICAgICAgICAgICAgICAgX2woICdUd28gKGFuZCBvbmx5
IHR3bykgZWxlbWVudHMgYXJlIG5lZWRlZCBmb3IgdGg9CmUgcGFpcicgKSwgJy4gJywKCmRpZmYg
LXIgYzhhYjBmZTI4NmJmMTBhZGQyNmZlOTY3MzMwY2ZjNzk5OWFmZmRmMCAtciAwMzRjYjBmYjg3
ZGZjMmFlNTZkZTEwNz0KMmE0NWE2ODE4OTc5N2U5NzkgY2xpZW50L2dhbGF4eS9zY3JpcHRzL212
Yy9kYXRhc2V0L2RhdGFzZXQtY2hvaWNlLmpzCi0tLSBhL2NsaWVudC9nYWxheHkvc2NyaXB0cy9t
dmMvZGF0YXNldC9kYXRhc2V0LWNob2ljZS5qcworKysgYi9jbGllbnQvZ2FsYXh5L3NjcmlwdHMv
bXZjL2RhdGFzZXQvZGF0YXNldC1jaG9pY2UuanMKQEAgLTI0OSw3ICsyNDksNyBAQAogICAgIF90
ZW1wbGF0ZSA6IGZ1bmN0aW9uKCBqc29uICl7CiAgICAgICAgIHJldHVybiBfLnRlbXBsYXRlKFsK
ICAgICAgICAgICAgICc8bGFiZWw+JywKLSAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9M0Qi
cHJvbXB0Ij48JT0zRCBsYWJlbCAlPjwvc3Bhbj4nLAorICAgICAgICAgICAgICAgICc8c3BhbiBj
bGFzcz0zRCJwcm9tcHQiPjwlLSBsYWJlbCAlPjwvc3Bhbj4nLAogICAgICAgICAgICAgICAgICc8
ZGl2IGNsYXNzPTNEInNlbGVjdGVkIj48L2Rpdj4nLAogICAgICAgICAgICAgJzwvbGFiZWw+Jwog
ICAgICAgICBdLmpvaW4oJycpKSgganNvbiApOwpAQCAtMjYxLDExICsyNjEsMTEgQEAKIC8vVE9E
TzogYnJlYWsgb3V0PwogICAgICAgICAgICAgcmV0dXJuICQoIF8udGVtcGxhdGUoWwogICAgICAg
ICAgICAgICAgICc8ZGl2IGNsYXNzPTNEInNlbGVjdGVkIj4nLAotICAgICAgICAgICAgICAgICAg
ICAnPHNwYW4gY2xhc3M9M0QidGl0bGUiPjwlPTNEIHNlbGVjdGVkLmhpZCAlPjogPCU9M0Qgc2U9
CmxlY3RlZC5uYW1lICU+PC9zcGFuPicsCisgICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFz
cz0zRCJ0aXRsZSI+PCUtIHNlbGVjdGVkLmhpZCAlPjogPCUtIHNlbGVjdD0KZWQubmFtZSAlPjwv
c3Bhbj4nLAogICAgICAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9M0Qic3VidGl0bGUiPics
Ci0gICAgICAgICAgICAgICAgICAgICAgICAnPGk+PCU9M0Qgc2VsZWN0ZWQubWlzY19ibHVyYiAl
PjwvaT4nLAotICAgICAgICAgICAgICAgICAgICAgICAgJzxpPicsIF9sKCAnZm9ybWF0JyApICsg
JzogJywgJzwlPTNEIHNlbGVjdGVkLmZpbGU9Cl9leHQgJT48L2k+JywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICc8aT48JT0zRCBzZWxlY3RlZC5taXNjX2luZm8gJT48L2k+JywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICc8aT48JS0gc2VsZWN0ZWQubWlzY19ibHVyYiAlPjwvaT4nLAorICAg
ICAgICAgICAgICAgICAgICAgICAgJzxpPicsIF9sKCAnZm9ybWF0JyApICsgJzogJywgJzwlLSBz
ZWxlY3RlZC5maWxlX2U9Cnh0ICU+PC9pPicsCisgICAgICAgICAgICAgICAgICAgICAgICAnPGk+
PCUtIHNlbGVjdGVkLm1pc2NfaW5mbyAlPjwvaT4nLAogICAgICAgICAgICAgICAgICAgICAnPC9z
cGFuPicsCiAgICAgICAgICAgICAgICAgJzwvZGl2PicKICAgICAgICAgICAgIF0uam9pbiggJycg
KSwgeyB2YXJpYWJsZSA6ICdzZWxlY3RlZCcgfSkoIGpzb24uc2VsZWN0ZWRbMF0gKSk7CkBAIC0z
ODgsNyArMzg4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgJzwlIGlmKCBqc29uLnNob3dIZWFk
ZXJzICl7ICU+JywKICAgICAgICAgICAgICAgICAgICAgICAgICc8dGhlYWQ+PHRyPicsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJzwlIF8ubWFwKCBqc29uLmNlbGxzLCBmdW5jdGlvbigg
dmFsLCBrZXkgKXsgJT0KPicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8dGg+
PCU9M0QgdmFsICU+PC90aD4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHRo
PjwlLSB2YWwgJT48L3RoPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwlIH0pOyAl
PicsCiAgICAgICAgICAgICAgICAgICAgICAgICAnPC90cj48L3RoZWFkPicsCiAgICAgICAgICAg
ICAgICAgICAgICc8JSB9ICU+JywKQEAgLTM5Niw3ICszOTYsNyBAQAogICAgICAgICAgICAgICAg
ICAgICAgICAgJzwlIF8ubWFwKCBqc29uLnNlbGVjdGVkLCBmdW5jdGlvbiggc2VsZWN0ZWQgKXsg
JT49CicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzx0cj4nLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnPCUgXy5tYXAoIGpzb24uY2VsbHMsIGZ1bmN0aW9uKCB2YWws
IGtleSA9Cil7ICU+JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8dGQg
Y2xhc3M9M0QiY2VsbC08JT0zRCBrZXkgJT4iPjwlPTNEPQogc2VsZWN0ZWRbIGtleSBdICU+PC90
ZD4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzx0ZCBjbGFzcz0zRCJj
ZWxsLTwlLSBrZXkgJT4iPjwlLSBzZWw9CmVjdGVkWyBrZXkgXSAlPjwvdGQ+JywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJzwlIH0pICU+JywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnPC90cj4nLAogICAgICAgICAgICAgICAgICAgICAgICAgJzwlIH0pOyAlPicsCgpk
aWZmIC1yIGM4YWIwZmUyODZiZjEwYWRkMjZmZTk2NzMzMGNmYzc5OTlhZmZkZjAgLXIgMDM0Y2Iw
ZmI4N2RmYzJhZTU2ZGUxMDc9CjJhNDVhNjgxODk3OTdlOTc5IGNsaWVudC9nYWxheHkvc2NyaXB0
cy9tdmMvZGF0YXNldC9kYXRhc2V0LWxpLWVkaXQuanMKLS0tIGEvY2xpZW50L2dhbGF4eS9zY3Jp
cHRzL212Yy9kYXRhc2V0L2RhdGFzZXQtbGktZWRpdC5qcworKysgYi9jbGllbnQvZ2FsYXh5L3Nj
cmlwdHMvbXZjL2RhdGFzZXQvZGF0YXNldC1saS1lZGl0LmpzCkBAIC0zMDYsNyArMzA2LDcgQEAK
ICAgICAgICAgICAgICc8JSBpZiggZGF0YXNldC5zdGF0ZSA9M0Q9M0Q9M0QgImZhaWxlZF9tZXRh
ZGF0YSIgKXsgJT4nLAogICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPTNEImZhaWxlZF9tZXRh
ZGF0YS13YXJuaW5nIHdhcm5pbmdtZXNzYWdlc21hbGw9CiI+JywKICAgICAgICAgICAgICAgICAg
ICAgX2woICdBbiBlcnJvciBvY2N1cnJlZCBzZXR0aW5nIHRoZSBtZXRhZGF0YSBmb3IgdGhpcyBk
PQphdGFzZXQnICksCi0gICAgICAgICAgICAgICAgICAgICc8YnIgLz48YSBocmVmPTNEIjwlPTNE
IGRhdGFzZXQudXJscy5lZGl0ICU+IiB0YXJnZXQ9Cj0zRCI8JT0zRCB2aWV3LmxpbmtUYXJnZXQg
JT4iPicsCisgICAgICAgICAgICAgICAgICAgICc8YnIgLz48YSBocmVmPTNEIjwlLSBkYXRhc2V0
LnVybHMuZWRpdCAlPiIgdGFyZ2V0PTNEIj0KPCUtIHZpZXcubGlua1RhcmdldCAlPiI+JywKICAg
ICAgICAgICAgICAgICAgICAgICAgIF9sKCAnU2V0IGl0IG1hbnVhbGx5IG9yIHJldHJ5IGF1dG8t
ZGV0ZWN0aW9uJyApLAogICAgICAgICAgICAgICAgICAgICAnPC9hPicsCiAgICAgICAgICAgICAg
ICAgJzwvZGl2PicsCkBAIC0zMzIsOSArMzMyLDkgQEAKPTIwCiAgICAgdmFyIHZpc3VhbGl6YXRp
b25zVGVtcGxhdGUgPTNEIEJBU0VfTVZDLndyYXBUZW1wbGF0ZShbCiAgICAgICAgICc8JSBpZigg
dmlzdWFsaXphdGlvbnMubGVuZ3RoID0zRD0zRD0zRCAxICl7ICU+JywKLSAgICAgICAgICAgICc8
YSBjbGFzcz0zRCJ2aXN1YWxpemF0aW9uLWJ0biB2aXN1YWxpemF0aW9uLWxpbmsgaWNvbi1idG4i
IGhyPQplZj0zRCI8JT0zRCB2aXN1YWxpemF0aW9uc1swXS5ocmVmICU+IicsCi0gICAgICAgICAg
ICAgICAgICAgICcgdGFyZ2V0PTNEIjwlPTNEIHZpc3VhbGl6YXRpb25zWzBdLnRhcmdldCAlPiIg
dGl0bGU9Cj0zRCInLCBfbCggJ1Zpc3VhbGl6ZSBpbicgKSwKLSAgICAgICAgICAgICAgICAgICAg
JyA8JT0zRCB2aXN1YWxpemF0aW9uc1swXS5odG1sICU+Ij4nLAorICAgICAgICAgICAgJzxhIGNs
YXNzPTNEInZpc3VhbGl6YXRpb24tYnRuIHZpc3VhbGl6YXRpb24tbGluayBpY29uLWJ0biIgaHI9
CmVmPTNEIjwlLSB2aXN1YWxpemF0aW9uc1swXS5ocmVmICU+IicsCisgICAgICAgICAgICAgICAg
ICAgICcgdGFyZ2V0PTNEIjwlLSB2aXN1YWxpemF0aW9uc1swXS50YXJnZXQgJT4iIHRpdGxlPTNE
Ij0KJywgX2woICdWaXN1YWxpemUgaW4nICksCisgICAgICAgICAgICAgICAgICAgICcgPCUtIHZp
c3VhbGl6YXRpb25zWzBdLmh0bWwgJT4iPicsCiAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNz
PTNEImZhIGZhLWJhci1jaGFydC1vIj48L3NwYW4+JywKICAgICAgICAgICAgICc8L2E+JywKPTIw
CkBAIC0zNDUsOSArMzQ1LDkgQEAKICAgICAgICAgICAgICAgICAnPC9hPicsCiAgICAgICAgICAg
ICAgICAgJzx1bCBjbGFzcz0zRCJkcm9wZG93bi1tZW51IiByb2xlPTNEIm1lbnUiPicsCiAgICAg
ICAgICAgICAgICAgICAgICc8JSBfLmVhY2goIHZpc3VhbGl6YXRpb25zLCBmdW5jdGlvbiggdmlz
dWFsaXphdGlvbiApez0KICU+JywKLSAgICAgICAgICAgICAgICAgICAgICAgICc8bGk+PGEgY2xh
c3M9M0QidmlzdWFsaXphdGlvbi1saW5rIiBocmVmPTNEIjwlPTNEPQogdmlzdWFsaXphdGlvbi5o
cmVmICU+IicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgdGFyZ2V0PTNEIjwl
PTNEIHZpc3VhbGl6YXRpb24udGFyZ2V0ICU+Ij0KPicsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJzwlPTNEIHZpc3VhbGl6YXRpb24uaHRtbCAlPicsCisgICAgICAgICAgICAgICAgICAg
ICAgICAnPGxpPjxhIGNsYXNzPTNEInZpc3VhbGl6YXRpb24tbGluayIgaHJlZj0zRCI8JS0gdj0K
aXN1YWxpemF0aW9uLmhyZWYgJT4iJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JyB0YXJnZXQ9M0QiPCUtIHZpc3VhbGl6YXRpb24udGFyZ2V0ICU+Ij4nLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICc8JS0gdmlzdWFsaXphdGlvbi5odG1sICU+JywKICAgICAgICAgICAg
ICAgICAgICAgICAgICc8L2E+PC9saT4nLAogICAgICAgICAgICAgICAgICAgICAnPCUgfSk7ICU+
JywKICAgICAgICAgICAgICAgICAnPC91bD4nLAoKZGlmZiAtciBjOGFiMGZlMjg2YmYxMGFkZDI2
ZmU5NjczMzBjZmM3OTk5YWZmZGYwIC1yIDAzNGNiMGZiODdkZmMyYWU1NmRlMTA3PQoyYTQ1YTY4
MTg5Nzk3ZTk3OSBjbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL2RhdGFzZXQvZGF0YXNldC1saS5q
cwotLS0gYS9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL2RhdGFzZXQvZGF0YXNldC1saS5qcwor
KysgYi9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL2RhdGFzZXQvZGF0YXNldC1saS5qcwpAQCAt
NDczLDcgKzQ3Myw3IEBACiAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPTNEImRpc3BsYXkt
YXBwbGljYXRpb24tbG9jYXRpb24iPjwlLSBhcHAubGFiZT0KbCAlPjwvc3Bhbj4gJywKICAgICAg
ICAgICAgICAgICAnPHNwYW4gY2xhc3M9M0QiZGlzcGxheS1hcHBsaWNhdGlvbi1saW5rcyI+JywK
ICAgICAgICAgICAgICAgICAgICAgJzwlIF8uZWFjaCggYXBwLmxpbmtzLCBmdW5jdGlvbiggbGlu
ayApeyAlPicsCi0gICAgICAgICAgICAgICAgICAgICAgICAnPGEgdGFyZ2V0PTNEIjwlPTNEIGxp
bmsudGFyZ2V0ICU+IiBocmVmPTNEIjwlPTNEID0KbGluay5ocmVmICU+Ij4nLAorICAgICAgICAg
ICAgICAgICAgICAgICAgJzxhIHRhcmdldD0zRCI8JS0gbGluay50YXJnZXQgJT4iIGhyZWY9M0Qi
PCUtIGxpbms9Ci5ocmVmICU+Ij4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8JSBw
cmludCggX2woIGxpbmsudGV4dCApICk7ICU+JywKICAgICAgICAgICAgICAgICAgICAgICAgICc8
L2E+ICcsCiAgICAgICAgICAgICAgICAgICAgICc8JSB9KTsgJT4nLAoKZGlmZiAtciBjOGFiMGZl
Mjg2YmYxMGFkZDI2ZmU5NjczMzBjZmM3OTk5YWZmZGYwIC1yIDAzNGNiMGZiODdkZmMyYWU1NmRl
MTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3OSBjbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL2hpc3Rvcnkv
aGlzdG9yeS1wYW5lbC5qcwotLS0gYS9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL2hpc3Rvcnkv
aGlzdG9yeS1wYW5lbC5qcworKysgYi9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL2hpc3Rvcnkv
aGlzdG9yeS1wYW5lbC5qcwpAQCAtNjExLDEwICs2MTEsMTAgQEAKICAgICB2YXIgY29udHJvbHNU
ZW1wbGF0ZSA9M0QgQkFTRV9NVkMud3JhcFRlbXBsYXRlKFsKICAgICAgICAgJzxkaXYgY2xhc3M9
M0QiY29udHJvbHMiPicsCiAgICAgICAgICAgICAnPGRpdiBjbGFzcz0zRCJ0aXRsZSI+JywKLSAg
ICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0zRCJuYW1lIj48JT0zRCBoaXN0b3J5Lm5hbWUgJT48
L2Rpdj4nLAorICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPTNEIm5hbWUiPjwlLSBoaXN0b3J5
Lm5hbWUgJT48L2Rpdj4nLAogICAgICAgICAgICAgJzwvZGl2PicsCiAgICAgICAgICAgICAnPGRp
diBjbGFzcz0zRCJzdWJ0aXRsZSI+PC9kaXY+JywKLSAgICAgICAgICAgICc8ZGl2IGNsYXNzPTNE
Imhpc3Rvcnktc2l6ZSI+PCU9M0QgaGlzdG9yeS5uaWNlX3NpemUgJT48L2Rpdj4nLAorICAgICAg
ICAgICAgJzxkaXYgY2xhc3M9M0QiaGlzdG9yeS1zaXplIj48JS0gaGlzdG9yeS5uaWNlX3NpemUg
JT48L2Rpdj4nLAo9MjAKICAgICAgICAgICAgICc8ZGl2IGNsYXNzPTNEImFjdGlvbnMiPjwvZGl2
PicsCj0yMAoKZGlmZiAtciBjOGFiMGZlMjg2YmYxMGFkZDI2ZmU5NjczMzBjZmM3OTk5YWZmZGYw
IC1yIDAzNGNiMGZiODdkZmMyYWU1NmRlMTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3OSBjbGllbnQvZ2Fs
YXh5L3NjcmlwdHMvbXZjL2hpc3RvcnkvbXVsdGktcGFuZWwuanMKLS0tIGEvY2xpZW50L2dhbGF4
eS9zY3JpcHRzL212Yy9oaXN0b3J5L211bHRpLXBhbmVsLmpzCisrKyBiL2NsaWVudC9nYWxheHkv
c2NyaXB0cy9tdmMvaGlzdG9yeS9tdWx0aS1wYW5lbC5qcwpAQCAtMTYsNyArMTYsNyBAQAogICAg
IH0KPTIwCiAgICAgLy8gbWF5YmUgYmV0dGVyIGFzIG11bHRpc2VsZWN0IGRpYWxvZz8KLSAgICB2
YXIgaGlzdG9yeU5hbWUgPTNEIGhpc3RvcnkuZ2V0KCAnbmFtZScgKSwKKyAgICB2YXIgaGlzdG9y
eU5hbWUgPTNEIF8uZXNjYXBlKGhpc3RvcnkuZ2V0KCAnbmFtZScgKSksCiAgICAgICAgIGRlZmF1
bHRDb3B5TmFtZSA9M0QgIkNvcHkgb2YgJyIgKyBoaXN0b3J5TmFtZSArICInIjsKPTIwCiAgICAg
ZnVuY3Rpb24gdmFsaWRhdGVOYW1lKCBuYW1lICl7CkBAIC0xMDc1LDEzICsxMDc1LDEzIEBACiAg
ICAgICAgICAgICAnPGRpdiBjbGFzcz0zRCJvcmRlciBidG4tZ3JvdXAiPicsCiAgICAgICAgICAg
ICAgICAgJzxidXR0b24gdHlwZT0zRCJidXR0b24iIGNsYXNzPTNEImJ0biBidG4tZGVmYXVsdCBk
cm9wZG93bj0KLXRvZ2dsZSIgZGF0YS10b2dnbGU9M0QiZHJvcGRvd24iPicsCiAgICAgICAgICAg
ICAgICAgICAgIF9sKCAnT3JkZXIgaGlzdG9yaWVzIGJ5JyApICsgJyAnLAotICAgICAgICAgICAg
ICAgICAgICAnPHNwYW4gY2xhc3M9M0QiY3VycmVudC1vcmRlciI+PCU9M0Qgdmlldy5zb3J0T3Jk
ZXJzWyA9CnZpZXcub3JkZXIgXS50ZXh0ICU+PC9zcGFuPiAnLAorICAgICAgICAgICAgICAgICAg
ICAnPHNwYW4gY2xhc3M9M0QiY3VycmVudC1vcmRlciI+PCUtIHZpZXcuc29ydE9yZGVyc1sgdmk9
CmV3Lm9yZGVyIF0udGV4dCAlPjwvc3Bhbj4gJywKICAgICAgICAgICAgICAgICAgICAgJzxzcGFu
IGNsYXNzPTNEImNhcmV0Ij48L3NwYW4+JywKICAgICAgICAgICAgICAgICAnPC9idXR0b24+JywK
ICAgICAgICAgICAgICAgICAnPHVsIGNsYXNzPTNEImRyb3Bkb3duLW1lbnUiIHJvbGU9M0QibWVu
dSI+JywKICAgICAgICAgICAgICAgICAgICAgJzwlIF8uZWFjaCggdmlldy5zb3J0T3JkZXJzLCBm
dW5jdGlvbiggb3JkZXIsIGtleSApeyAlPQo+JywKLSAgICAgICAgICAgICAgICAgICAgICAgICc8
bGk+PGEgaHJlZj0zRCJqYXZhc2NyaXB0OnZvaWQoMCk7IiBjbGFzcz0zRCJzZXQtPQpvcmRlciIg
ZGF0YS1vcmRlcj0zRCI8JT0zRCBrZXkgJT4iPicsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJzwlPTNEIG9yZGVyLnRleHQgJT4nLAorICAgICAgICAgICAgICAgICAgICAgICAgJzxsaT48
YSBocmVmPTNEImphdmFzY3JpcHQ6dm9pZCgwKTsiIGNsYXNzPTNEInNldC09Cm9yZGVyIiBkYXRh
LW9yZGVyPTNEIjwlLSBrZXkgJT4iPicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwl
LSBvcmRlci50ZXh0ICU+JywKICAgICAgICAgICAgICAgICAgICAgICAgICc8L2E+PC9saT4nLAog
ICAgICAgICAgICAgICAgICAgICAnPCUgfSk7ICU+JywKICAgICAgICAgICAgICAgICAnPC91bD4n
LAoKZGlmZiAtciBjOGFiMGZlMjg2YmYxMGFkZDI2ZmU5NjczMzBjZmM3OTk5YWZmZGYwIC1yIDAz
NGNiMGZiODdkZmMyYWU1NmRlMTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3OSBjbGllbnQvZ2FsYXh5L3Nj
cmlwdHMvbXZjL2pvYi9qb2ItbGkuanMKLS0tIGEvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9q
b2Ivam9iLWxpLmpzCisrKyBiL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvam9iL2pvYi1saS5q
cwpAQCAtMTIxLDcgKzEyMSw3IEBACj0yMAogICAgIHZhciBlbFRlbXBsYXRlID0zRCBCQVNFX01W
Qy53cmFwVGVtcGxhdGUoWwogICAgICAgICAnPGRpdiBjbGFzcz0zRCJsaXN0LWVsZW1lbnQiPics
Ci0gICAgICAgICAgICAnPGRpdiBjbGFzcz0zRCJpZCI+PCU9M0QgbW9kZWwuaWQgJT48L2Rpdj4n
LAorICAgICAgICAgICAgJzxkaXYgY2xhc3M9M0QiaWQiPjwlLSBtb2RlbC5pZCAlPjwvZGl2Pics
CiAgICAgICAgICAgICAvLyBlcnJvcnMsIG1lc3NhZ2VzLCBldGMuCiAgICAgICAgICAgICAnPGRp
diBjbGFzcz0zRCJ3YXJuaW5ncyI+PC9kaXY+JywKPTIwCkBAIC0xNjEsNyArMTYxLDcgQEAKICAg
ICAgICAgICAgIC8vICAgICcgJywgX2woICdDcmVhdGVkJyApLCAnOiA8JT0zRCBuZXcgRGF0ZSgg
am9iLmNyZWF0ZV90aW1lPQogKS50b1N0cmluZygpICU+LCAnLAogICAgICAgICAgICAgLy8nPC9z
cGFuJywKICAgICAgICAgICAgIC8vJzxzcGFuIGNsYXNzPTNEInZlcnNpb24iPicsCi0gICAgICAg
ICAgICAvLyAgICAnICgnLCBfbCggJ3ZlcnNpb24nICksICc6IDwlPTNEIHZpZXcudG9vbC52ZXJz
aW9uICU+KScsCisgICAgICAgICAgICAvLyAgICAnICgnLCBfbCggJ3ZlcnNpb24nICksICc6IDwl
LSB2aWV3LnRvb2wudmVyc2lvbiAlPiknLAogICAgICAgICAgICAgLy8nPC9zcGFuJywKICAgICAg
ICAgJzwvZGl2PicKICAgICBdLCAnam9iJyApOwpAQCAtMTcwLDIwICsxNzAsMjAgQEAKICAgICAg
ICAgJzxkaXYgY2xhc3M9M0QiZGV0YWlscyI+JywKICAgICAgICAgICAgIC8vJzxkaXYgY2xhc3M9
M0QidmVyc2lvbiI+JywKICAgICAgICAgICAgIC8vICAgICc8bGFiZWwgY2xhc3M9M0QicHJvbXB0
Ij4nLCBfbCggJ1ZlcnNpb24nICksICc8L2xhYmVsPicsCi0gICAgICAgICAgICAvLyAgICAnPHNw
YW4gY2xhc3M9M0QidmFsdWUiPjwlPTNEIHZpZXcudG9vbC52ZXJzaW9uICU+PC9zcGFuPj0KJywK
KyAgICAgICAgICAgIC8vICAgICc8c3BhbiBjbGFzcz0zRCJ2YWx1ZSI+PCUtIHZpZXcudG9vbC52
ZXJzaW9uICU+PC9zcGFuPicsCiAgICAgICAgICAgICAvLyc8L2Rpdj4nLAogICAgICAgICAgICAg
JzxkaXYgY2xhc3M9M0QicGFyYW1zIj4nLAogICAgICAgICAgICAgICAgICc8JSBfLmVhY2goIHZp
ZXcuX2xhYmVsSW5wdXRNYXAoKSwgZnVuY3Rpb24oIGlucHV0LCBsYWJlbCA9Cil7ICU+JywKLSAg
ICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9M0QiaW5wdXQiIGRhdGEtaW5wdXQtbmFtZT0z
RCI8JT0zRCBpbnB1dC5uPQphbWUgJT4iIGRhdGEtaW5wdXQtaWQ9M0QiPCU9M0QgaW5wdXQuaWQg
JT4iPicsCi0gICAgICAgICAgICAgICAgICAgICAgICAnPGxhYmVsIGNsYXNzPTNEInByb21wdCI+
PCU9M0QgbGFiZWwgJT48L2xhYmVsPicsCisgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNz
PTNEImlucHV0IiBkYXRhLWlucHV0LW5hbWU9M0QiPCUtIGlucHV0Lm5hbT0KZSAlPiIgZGF0YS1p
bnB1dC1pZD0zRCI8JS0gaW5wdXQuaWQgJT4iPicsCisgICAgICAgICAgICAgICAgICAgICAgICAn
PGxhYmVsIGNsYXNzPTNEInByb21wdCI+PCUtIGxhYmVsICU+PC9sYWJlbD4nLAogLy9UT0RPOiBp
bnB1dCBkYXRhc2V0IG5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0z
RCJ2YWx1ZSI+PCU9M0QgaW5wdXQuY29udGVudC5uYW1lICU+PQo8L3NwYW4+JywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0zRCJ2YWx1ZSI+PCUtIGlucHV0LmNvbnRlbnQu
bmFtZSAlPjwvPQpzcGFuPicsCiAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nLAogICAgICAg
ICAgICAgICAgICc8JSB9KSAlPicsCiAgICAgICAgICAgICAgICAgJzwlIF8uZWFjaCggdmlldy5f
bGFiZWxQYXJhbU1hcCgpLCBmdW5jdGlvbiggcGFyYW0sIGxhYmVsID0KKXsgJT4nLAotICAgICAg
ICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0zRCJwYXJhbSIgZGF0YS1pbnB1dC1uYW1lPTNEIjwl
PTNEIHBhcmFtLm49CmFtZSAlPiI+JywKLSAgICAgICAgICAgICAgICAgICAgICAgICc8bGFiZWwg
Y2xhc3M9M0QicHJvbXB0Ij48JT0zRCBsYWJlbCAlPjwvbGFiZWw+JywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICc8c3BhbiBjbGFzcz0zRCJ2YWx1ZSI+PCU9M0QgcGFyYW0gJT48L3NwYW4+JywK
KyAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9M0QicGFyYW0iIGRhdGEtaW5wdXQtbmFt
ZT0zRCI8JS0gcGFyYW0ubmFtPQplICU+Ij4nLAorICAgICAgICAgICAgICAgICAgICAgICAgJzxs
YWJlbCBjbGFzcz0zRCJwcm9tcHQiPjwlLSBsYWJlbCAlPjwvbGFiZWw+JywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0zRCJ2YWx1ZSI+PCUtIHBhcmFtICU+PC9zcGFuPics
CiAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nLAogICAgICAgICAgICAgICAgICc8JSB9KSAl
PicsCiAgICAgICAgICAgICAnPC9kaXY+JywKCmRpZmYgLXIgYzhhYjBmZTI4NmJmMTBhZGQyNmZl
OTY3MzMwY2ZjNzk5OWFmZmRmMCAtciAwMzRjYjBmYjg3ZGZjMmFlNTZkZTEwNz0KMmE0NWE2ODE4
OTc5N2U5NzkgY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9saXN0L2xpc3QtcGFuZWwuanMKLS0t
IGEvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9saXN0L2xpc3QtcGFuZWwuanMKKysrIGIvY2xp
ZW50L2dhbGF4eS9zY3JpcHRzL212Yy9saXN0L2xpc3QtcGFuZWwuanMKQEAgLTgwMSw5ICs4MDEs
OSBAQAogICAgIHZhciBjb250cm9sc1RlbXBsYXRlID0zRCBCQVNFX01WQy53cmFwVGVtcGxhdGUo
WwogICAgICAgICAnPGRpdiBjbGFzcz0zRCJjb250cm9scyI+JywKICAgICAgICAgICAgICc8ZGl2
IGNsYXNzPTNEInRpdGxlIj4nLAotICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPTNEIm5hbWUi
PjwlPTNEIHZpZXcudGl0bGUgJT48L2Rpdj4nLAorICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNz
PTNEIm5hbWUiPjwlLSB2aWV3LnRpdGxlICU+PC9kaXY+JywKICAgICAgICAgICAgICc8L2Rpdj4n
LAotICAgICAgICAgICAgJzxkaXYgY2xhc3M9M0Qic3VidGl0bGUiPjwlPTNEIHZpZXcuc3VidGl0
bGUgJT48L2Rpdj4nLAorICAgICAgICAgICAgJzxkaXYgY2xhc3M9M0Qic3VidGl0bGUiPjwlLSB2
aWV3LnN1YnRpdGxlICU+PC9kaXY+JywKICAgICAgICAgICAgIC8vIGJ1dHRvbnMsIGNvbnRyb2xz
IGdvIGhlcmUKICAgICAgICAgICAgICc8ZGl2IGNsYXNzPTNEImFjdGlvbnMiPjwvZGl2PicsCiAg
ICAgICAgICAgICAvLyBkZWxldGVkIG1zZywgZXRjLgpAQCAtOTQyLDkgKzk0Miw5IEBACiAgICAg
ICAgICc8ZGl2IGNsYXNzPTNEImNvbnRyb2xzIj4nLAogICAgICAgICAgICAgJzxkaXYgY2xhc3M9
M0QidGl0bGUiPicsCiAvL1RPRE86IHRoaXMgaXMgcmVhbGx5IHRoZSBvbmx5IGRpZmZlcmVuY2Ug
LSBjb25zaWRlciBmYWN0b3JpbmcgdGl0bGViYXIgbz0KdXQKLSAgICAgICAgICAgICAgICAnPGRp
diBjbGFzcz0zRCJuYW1lIj48JT0zRCBtb2RlbC5uYW1lICU+PC9kaXY+JywKKyAgICAgICAgICAg
ICAgICAnPGRpdiBjbGFzcz0zRCJuYW1lIj48JS0gbW9kZWwubmFtZSAlPjwvZGl2PicsCiAgICAg
ICAgICAgICAnPC9kaXY+JywKLSAgICAgICAgICAgICc8ZGl2IGNsYXNzPTNEInN1YnRpdGxlIj48
JT0zRCB2aWV3LnN1YnRpdGxlICU+PC9kaXY+JywKKyAgICAgICAgICAgICc8ZGl2IGNsYXNzPTNE
InN1YnRpdGxlIj48JS0gdmlldy5zdWJ0aXRsZSAlPjwvZGl2PicsCiAgICAgICAgICAgICAnPGRp
diBjbGFzcz0zRCJhY3Rpb25zIj48L2Rpdj4nLAogICAgICAgICAgICAgJzxkaXYgY2xhc3M9M0Qi
bWVzc2FnZXMiPjwvZGl2PicsCj0yMAoKZGlmZiAtciBjOGFiMGZlMjg2YmYxMGFkZDI2ZmU5Njcz
MzBjZmM3OTk5YWZmZGYwIC1yIDAzNGNiMGZiODdkZmMyYWU1NmRlMTA3PQoyYTQ1YTY4MTg5Nzk3
ZTk3OSBjbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3Rvb2xzLmpzCi0tLSBhL2NsaWVudC9nYWxh
eHkvc2NyaXB0cy9tdmMvdG9vbHMuanMKKysrIGIvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy90
b29scy5qcwpAQCAtMjYyLDcgKzI2Miw3IEBACj0yMAogICAgICAgICAvLyBSdW4gam9iIGFuZCBy
ZXNvbHZlIHJ1bl9kZWZlcnJlZCB0byB0b29sIG91dHB1dHMuCiAgICAgICAgICQud2hlbihzc19k
ZWZlcnJlZC5nbygpKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgewotICAgICAgICAgICAgcnVuX2Rl
ZmVycmVkLnJlc29sdmUobmV3IGRhdGEuRGF0YXNldENvbGxlY3Rpb24oKS5yZXNldChyZXN1bHQ9
CikpOworICAgICAgICAgICAgcnVuX2RlZmVycmVkLnJlc29sdmUobmV3IGRhdGEuRGF0YXNldENv
bGxlY3Rpb24ocmVzdWx0KSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm4gcnVuX2RlZmVy
cmVkOwogICAgIH0KCmRpZmYgLXIgYzhhYjBmZTI4NmJmMTBhZGQyNmZlOTY3MzMwY2ZjNzk5OWFm
ZmRmMCAtciAwMzRjYjBmYjg3ZGZjMmFlNTZkZTEwNz0KMmE0NWE2ODE4OTc5N2U5NzkgY2xpZW50
L2dhbGF4eS9zY3JpcHRzL212Yy90b29scy90b29scy1mb3JtLmpzCi0tLSBhL2NsaWVudC9nYWxh
eHkvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtZm9ybS5qcworKysgYi9jbGllbnQvZ2FsYXh5L3Nj
cmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLWZvcm0uanMKQEAgLTE5LDcgKzE5LDcgQEAKICAgICAgICAg
ICAgICAgICBvbmNsaWNrICA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBleGVj
dXRlLndhaXQoKTsKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mb3JtLnBvcnRsZXQuZGlzYWJs
ZSgpOwotICAgICAgICAgICAgICAgICAgICBUb29sSm9icy5zdWJtaXQoc2VsZi5mb3JtLCBvcHRp
b25zLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgVG9vbEpvYnMuc3VibWl0KHNl
bGYuZm9ybSwgc2VsZi5vcHRpb25zLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4ZWN1dGUudW53YWl0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZvcm0u
cG9ydGxldC5lbmFibGUoKTsKICAgICAgICAgICAgICAgICAgICAgfSk7CkBAIC00MCw5ICs0MCwx
MCBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gY3JlYXRlIG9wdGlvbnMgZGljdGlv
bmFyeQogICAgICAgICAgICAgb3B0aW9ucyA9M0QgVXRpbHMubWVyZ2Uob3B0aW9ucywgewotICAg
ICAgICAgICAgICAgIGJ1dHRvbnMgICAgIDogeworICAgICAgICAgICAgICAgIGJ1dHRvbnMgICAg
ICAgIDogewogICAgICAgICAgICAgICAgICAgICBleGVjdXRlIDogZXhlY3V0ZQotICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGluaXRpYWxfZXJy
b3JzIDogdHJ1ZQogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBUb29sRm9ybUJhc2UucHJv
dG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLCBvcHRpb25zKTsKICAgICAgICAgfQoKZGlmZiAt
ciBjOGFiMGZlMjg2YmYxMGFkZDI2ZmU5NjczMzBjZmM3OTk5YWZmZGYwIC1yIDAzNGNiMGZiODdk
ZmMyYWU1NmRlMTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3OSBjbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZj
L3VpL3VpLXNlbGVjdC1kZWZhdWx0LmpzCi0tLSBhL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMv
dWkvdWktc2VsZWN0LWRlZmF1bHQuanMKKysrIGIvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy91
aS91aS1zZWxlY3QtZGVmYXVsdC5qcwpAQCAtMjYxLDcgKzI2MSw3IEBACiAgICAgLyoqIFRlbXBs
YXRlIGZvciBzZWxlY3Qgb3B0aW9ucwogICAgICovCiAgICAgX3RlbXBsYXRlT3B0aW9uOiBmdW5j
dGlvbihvcHRpb25zKSB7Ci0gICAgICAgIHJldHVybiAnPG9wdGlvbiB2YWx1ZT0zRCInICsgb3B0
aW9ucy52YWx1ZSArICciPicgKyBvcHRpb25zLmxhYmVsID0KKyAnPC9vcHRpb24+JzsKKyAgICAg
ICAgcmV0dXJuICc8b3B0aW9uIHZhbHVlPTNEIicgKyBvcHRpb25zLnZhbHVlICsgJyI+JyArIF8u
ZXNjYXBlKG9wdGlvPQpucy5sYWJlbCkgKyAnPC9vcHRpb24+JzsKICAgICB9LAo9MjAKICAgICAv
KiogVGVtcGxhdGUgZm9yIHNlbGVjdCB2aWV3CgpkaWZmIC1yIGM4YWIwZmUyODZiZjEwYWRkMjZm
ZTk2NzMzMGNmYzc5OTlhZmZkZjAgLXIgMDM0Y2IwZmI4N2RmYzJhZTU2ZGUxMDc9CjJhNDVhNjgx
ODk3OTdlOTc5IGNsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdWkvdWktc2VsZWN0LWxpYnJhcnku
anMKLS0tIGEvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy91aS91aS1zZWxlY3QtbGlicmFyeS5q
cworKysgYi9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3VpL3VpLXNlbGVjdC1saWJyYXJ5Lmpz
CkBAIC00LDcgKzQsNyBAQAo9MjAKIC8vIGNvbGxlY3Rpb24gb2YgbGlicmFyaWVzCiB2YXIgTGli
cmFyaWVzID0zRCBCYWNrYm9uZS5Db2xsZWN0aW9uLmV4dGVuZCh7Ci0gICAgdXJsOiBnYWxheHlf
Y29uZmlnLnJvb3QgKyAnYXBpL2xpYnJhcmllcycKKyAgICB1cmw6IGdhbGF4eV9jb25maWcucm9v
dCArICdhcGkvbGlicmFyaWVzP2RlbGV0ZWQ9M0RmYWxzZScKIH0pOwo9MjAKIC8vIGNvbGxlY3Rp
b24gb2YgZGF0YXNldAoKZGlmZiAtciBjOGFiMGZlMjg2YmYxMGFkZDI2ZmU5NjczMzBjZmM3OTk5
YWZmZGYwIC1yIDAzNGNiMGZiODdkZmMyYWU1NmRlMTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3OSBjbGll
bnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3VwbG9hZC91cGxvYWQtcm93LmpzCi0tLSBhL2NsaWVudC9n
YWxheHkvc2NyaXB0cy9tdmMvdXBsb2FkL3VwbG9hZC1yb3cuanMKKysrIGIvY2xpZW50L2dhbGF4
eS9zY3JpcHRzL212Yy91cGxvYWQvdXBsb2FkLXJvdy5qcwpAQCAtMTE4LDcgKzExOCw3IEBACiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLm9uKCdtb3VzZWRvd24nLCBmdW5jdGlvbihlKSB7
IGUucHJldmVudERlZmF1bD0KdCgpOyB9KTsKPTIwCiAgICAgICAgIC8vIGhhbmRsZSB0ZXh0IGVk
aXRpbmcgZXZlbnQKLSAgICAgICAgaXQuZmluZCgnI3RleHQtY29udGVudCcpLm9uKCdrZXl1cCcs
IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgaXQuZmluZCgnI3RleHQtY29udGVudCcpLm9uKCdjaGFu
Z2UgaW5wdXQnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICBzZWxmLm1vZGVsLnNldCgndXJs
X3Bhc3RlJywgJChlLnRhcmdldCkudmFsKCkpOwogICAgICAgICAgICAgc2VsZi5tb2RlbC5zZXQo
J2ZpbGVfc2l6ZScsICQoZS50YXJnZXQpLnZhbCgpLmxlbmd0aCk7CiAgICAgICAgIH0pOwoKZGlm
ZiAtciBjOGFiMGZlMjg2YmYxMGFkZDI2ZmU5NjczMzBjZmM3OTk5YWZmZGYwIC1yIDAzNGNiMGZi
ODdkZmMyYWU1NmRlMTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3OSBjbGllbnQvZ2FsYXh5L3NjcmlwdHMv
bXZjL3dvcmtmbG93L3dvcmtmbG93LXRlcm1pbmFscy5qcwotLS0gYS9jbGllbnQvZ2FsYXh5L3Nj
cmlwdHMvbXZjL3dvcmtmbG93L3dvcmtmbG93LXRlcm1pbmFscy5qcworKysgYi9jbGllbnQvZ2Fs
YXh5L3NjcmlwdHMvbXZjL3dvcmtmbG93L3dvcmtmbG93LXRlcm1pbmFscy5qcwpAQCAtNDU0LDcg
KzQ1NCw3IEBACiAgICAgICAgIH0KICAgICB9KTsKPTIwCi0gICAgdmFyIE91dHB1dENvbGxlY3Rp
b25UZXJtaW5hbCA9M0QgT3V0cHV0VGVybWluYWwuZXh0ZW5kKCB7CisgICAgdmFyIE91dHB1dENv
bGxlY3Rpb25UZXJtaW5hbCA9M0QgVGVybWluYWwuZXh0ZW5kKCB7CiAgICAgICAgIGluaXRpYWxp
emU6IGZ1bmN0aW9uKCBhdHRyICkgewogICAgICAgICAgICAgVGVybWluYWwucHJvdG90eXBlLmlu
aXRpYWxpemUuY2FsbCggdGhpcywgYXR0ciApOwogICAgICAgICAgICAgdGhpcy5kYXRhdHlwZXMg
PTNEIGF0dHIuZGF0YXR5cGVzOwoKZGlmZiAtciBjOGFiMGZlMjg2YmYxMGFkZDI2ZmU5NjczMzBj
ZmM3OTk5YWZmZGYwIC1yIDAzNGNiMGZiODdkZmMyYWU1NmRlMTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3
OSBjbGllbnQvZ2FsYXh5L3NjcmlwdHMvdml6L3N3ZWVwc3Rlci5qcwotLS0gYS9jbGllbnQvZ2Fs
YXh5L3NjcmlwdHMvdml6L3N3ZWVwc3Rlci5qcworKysgYi9jbGllbnQvZ2FsYXh5L3NjcmlwdHMv
dml6L3N3ZWVwc3Rlci5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qKgotICogVmlzdWFsaXphdGlvbiBh
bmQgY29tcG9uZW50cyBmb3IgU3dlZXBzdGVyLCBhIHZpc3VhbGl6YXRpb24gZm9yIGV4cGxvcmk9
Cm5nIGEgdG9vbCdzIHBhcmFtZXRlciBzcGFjZSB2aWE9MjAKKyAqIFZpc3VhbGl6YXRpb24gYW5k
IGNvbXBvbmVudHMgZm9yIFN3ZWVwc3RlciwgYSB2aXN1YWxpemF0aW9uIGZvciBleHBsb3JpPQpu
ZyBhIHRvb2wncyBwYXJhbWV0ZXIgc3BhY2UgdmlhCiAgKiBnZW5vbWljIHZpc3VhbGl6YXRpb24u
CiAgKi8KPTIwCkBAIC03LDcgKzcsNyBAQAogICAgICAgIGZ1bmN0aW9uKF8sIGQzLCB1dGlsLCB2
aXN1YWxpemF0aW9uLCB0cmFja3MsIHRvb2xzLCBkYXRhLCBjb25maWcsIG09Cm9kX2ljb25fYnRu
KSB7Cj0yMAogLyoqCi0gKiBBIGNvbGxlY3Rpb24gb2YgdG9vbCBpbnB1dCBzZXR0aW5ncy4gT2Jq
ZWN0IGlzIHVzZWZ1bCBmb3Iga2VlcGluZyBhIGxpcz0KdCBvZiBzZXR0aW5ncz0yMAorICogQSBj
b2xsZWN0aW9uIG9mIHRvb2wgaW5wdXQgc2V0dGluZ3MuIE9iamVjdCBpcyB1c2VmdWwgZm9yIGtl
ZXBpbmcgYSBsaXM9CnQgb2Ygc2V0dGluZ3MKICAqIGZvciBmdXR1cmUgdXNlIHdpdGhvdXQgY2hh
bmdpbmcgdGhlIGlucHV0J3MgdmFsdWUgYW5kIGZvciBwcmVzZXJ2aW5nIGluPQpwdXRzIG9yZGVy
LgogICovCiB2YXIgVG9vbElucHV0c1NldHRpbmdzID0zRCBCYWNrYm9uZS5Nb2RlbC5leHRlbmQo
ewpAQCAtMTYsNyArMTYsNyBAQAogICAgICAgICB2YWx1ZXM6IG51bGwKICAgICB9CiB9KTsKLT0y
MAorCiAvKioKICAqIFRyZWUgZm9yIGEgdG9vbCdzIHBhcmFtZXRlcnMuCiAgKi8KQEAgLTI1LDcg
KzI1LDcgQEAKICAgICAgICAgdG9vbDogbnVsbCwKICAgICAgICAgdHJlZV9kYXRhOiBudWxsCiAg
ICAgfSwKLSAgID0yMAorCiAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ob3B0aW9ucykgewogICAg
ICAgICAvLyBTZXQgdXAgdG9vbCBwYXJhbWV0ZXJzIHRvIHdvcmsgd2l0aCB0cmVlLgogICAgICAg
ICB2YXIgc2VsZiA9M0QgdGhpczsKQEAgLTEwOSw3ICsxMDksNyBAQAogICAgICAgICAgICAgICAg
ICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgPTIwCisKICAgICAgICAgICAgICAgICAvLyBSZWN1cnNlIHRvIGhhbmRs
ZSBvdGhlciBwYXJhbWV0ZXJzLgogICAgICAgICAgICAgICAgIHJldHVybiBfLm1hcChzZXR0aW5n
cywgZnVuY3Rpb24oc2V0dGluZykgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gewpAQCAt
MTQxLDcgKzE0MSw3IEBACiAgICAgZ2V0X251bV9sZWF2ZXM6IGZ1bmN0aW9uKCkgewogICAgICAg
ICByZXR1cm4gdGhpcy5nZXRfdHJlZV9wYXJhbXMoKS5yZWR1Y2UoZnVuY3Rpb24obWVtbywgcGFy
YW0pIHsgcmV0dXI9Cm4gbWVtbyAqIHBhcmFtLmdldF9zYW1wbGVzKCkubGVuZ3RoOyB9LCAxKTsK
ICAgICB9LAotICAgPTIwCisKICAgICAvKioKICAgICAgKiBSZXR1cm5zIGFycmF5IG9mIFRvb2xJ
bnB1dHNTZXR0aW5ncyBvYmplY3RzIGJhc2VkIG9uIGEgbm9kZSBhbmQgaXRzPQogc3VidHJlZS4K
ICAgICAgKi8KQEAgLTE1OSw3ICsxNTksNyBAQAogICAgICAgICAgICAgICAgIGN1cl9ub2RlID0z
RCBjdXJfbm9kZS5wYXJlbnQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICA9MjAK
KwogICAgICAgICAvLyBXYWxrIHN1YnRyZWUgc3RhcnRpbmcgYXQgY2xpY2tlZCBub2RlIHRvIGdl
dCBmdWxsIGxpc3Qgb2Ygc2V0dGk9Cm5ncy4KICAgICAgICAgdmFyIHNlbGYgPTNEIHRoaXMsCiAg
ICAgICAgICAgICBnZXRfc2V0dGluZ3MgPTNEIGZ1bmN0aW9uKG5vZGUsIHNldHRpbmdzKSB7CkBA
IC0xNjgsNyArMTY4LDcgQEAKICAgICAgICAgICAgICAgICBpZiAobm9kZS5wYXJhbSkgewogICAg
ICAgICAgICAgICAgICAgICBzZXR0aW5nc1tub2RlLnBhcmFtLmdldCgnbmFtZScpXSA9M0Qgbm9k
ZS52YWx1ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgID0yMAorCiAgICAgICAgICAg
ICAgICAgaWYgKCFub2RlLmNoaWxkcmVuKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEF0IGxl
YWYgbm9kZSwgc28gcmV0dXJuIHNldHRpbmdzLgogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bmV3IFRvb2xJbnB1dHNTZXR0aW5ncyh7CkBAIC0xODIsMTAgKzE4MiwxMCBAQAogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICBhbGxfc2V0dGluZ3MgPTNEIGdl
dF9zZXR0aW5ncyh0YXJnZXRfbm9kZSwgZml4ZWRfc2V0dGluZ3MpOwotICAgICAgID0yMAorCiAg
ICAgICAgIC8vIElmIHVzZXIgY2xpY2tlZCBvbiBsZWFmLCBzZXR0aW5ncyBpcyBhIHNpbmdsZSBk
aWN0LiBDb252ZXJ0IHRvID0KYXJyYXkgZm9yIHNpbXBsaWNpdHkuCiAgICAgICAgIGlmICghXy5p
c0FycmF5KGFsbF9zZXR0aW5ncykpIHsgYWxsX3NldHRpbmdzID0zRCBbIGFsbF9zZXR0aW5ncyBd
Oz0KIH0KLSAgICAgICA9MjAKKwogICAgICAgICByZXR1cm4gYWxsX3NldHRpbmdzOwogICAgIH0s
Cj0yMApAQCAtMjM1LDcgKzIzNSw3IEBACiAgICAgICogUmV0dXJucyBhIGxpc3Qgb2YgcGFyYW1l
dGVycyB1c2VkIGluIHRyZWUuCiAgICAgICovCiAgICAgdG9KU09OOiBmdW5jdGlvbigpIHsKLSAg
ICAgICAgLy8gRklYTUU6IHJldHVybmluZyBhbmQganNvbmlmeWluZyBjb21wbGV0ZSBwYXJhbSBj
YXVzZXMgdHJvdWJsZSBvPQpuIHRoZSBzZXJ2ZXIgc2lkZSw9MjAKKyAgICAgICAgLy8gRklYTUU6
IHJldHVybmluZyBhbmQganNvbmlmeWluZyBjb21wbGV0ZSBwYXJhbSBjYXVzZXMgdHJvdWJsZSBv
PQpuIHRoZSBzZXJ2ZXIgc2lkZSwKICAgICAgICAgLy8gc28ganVzdCB1c2UgZXNzZW50aWFsIGF0
dHJpYnV0ZXMgZm9yIG5vdy4KICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0X3RyZWVfcGFyYW1zKCku
bWFwKGZ1bmN0aW9uKHBhcmFtKSB7CiAgICAgICAgICAgICByZXR1cm4gewpAQCAtMjU1LDcgKzI1
NSw3IEBACiAgICAgICAgIHNldHRpbmdzOiBudWxsLAogICAgICAgICByZWdpb25zOiBudWxsCiAg
ICAgfSwKLSAgID0yMAorCiAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ob3B0aW9ucykgewogICAg
ICAgICB0aGlzLnNldCgncmVnaW9ucycsIG9wdGlvbnMucmVnaW9ucyk7CiAgICAgICAgIGlmIChv
cHRpb25zLnRyYWNrKSB7CkBAIC0yNzIsNyArMjcyLDcgQEAKICAgICAgICAgdmFyIHRoaXNfc2V0
dGluZ3MgPTNEIHRoaXMuZ2V0KCdzZXR0aW5ncycpLAogICAgICAgICAgICAgb3RoZXJfc2V0dGlu
Z3MgPTNEIGFfdHJhY2suZ2V0KCdzZXR0aW5ncycpOwogICAgICAgICBmb3IgKHZhciBwcm9wIGlu
IHRoaXNfc2V0dGluZ3MpIHsKLSAgICAgICAgICAgIGlmICghb3RoZXJfc2V0dGluZ3NbcHJvcF0g
fHw9MjAKKyAgICAgICAgICAgIGlmICghb3RoZXJfc2V0dGluZ3NbcHJvcF0gfHwKICAgICAgICAg
ICAgICAgICB0aGlzX3NldHRpbmdzW3Byb3BdICE9M0Q9M0Qgb3RoZXJfc2V0dGluZ3NbcHJvcF0p
IHsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CkBAIC0zMTYs
OCArMzE2LDggQEAKICAgICAgICAgdGhpcy5zZXQoJ3Rvb2xfd2l0aF9zYW1wbGFibGVfaW5wdXRz
JywgdG9vbF93aXRoX3NhbXBsYWJsZV9pbnB1dHMpOwogICAgICAgICAvLyBSZW1vdmUgY29tcGxl
eCBwYXJhbWV0ZXJzIGZvciBub3cuCiAgICAgICAgIHRvb2xfd2l0aF9zYW1wbGFibGVfaW5wdXRz
LnJlbW92ZV9pbnB1dHMoIFsgJ2RhdGEnLCAnaGlkZGVuX2RhdGEnLD0KICdjb25kaXRpb25hbCcs
ICd0ZXh0JyBdICk7Ci0gICAgICAgPTIwCi0gICAgICAgIHRoaXMuc2V0KCdwYXJhbWV0ZXJfdHJl
ZScsIG5ldyBUb29sUGFyYW1ldGVyVHJlZSh7PTIwCisKKyAgICAgICAgdGhpcy5zZXQoJ3BhcmFt
ZXRlcl90cmVlJywgbmV3IFRvb2xQYXJhbWV0ZXJUcmVlKHsKICAgICAgICAgICAgIHRvb2w6IHRv
b2xfd2l0aF9zYW1wbGFibGVfaW5wdXRzLAogICAgICAgICAgICAgY29uZmlnOiBvcHRpb25zLnRy
ZWVfY29uZmlnCiAgICAgICAgIH0pKTsKQEAgLTQ0NSw5ICs0NDUsOSBAQAogdmFyIFRvb2xJbnB1
dFZhbE9yU3dlZXBWaWV3ID0zRCBCYWNrYm9uZS5WaWV3LmV4dGVuZCh7Cj0yMAogICAgIC8vIFRl
bXBsYXRlIGZvciByZW5kZXJpbmcgc3dlZXAgaW5wdXRzOgotICAgIG51bWJlcl9pbnB1dF90ZW1w
bGF0ZTogJzxkaXYgY2xhc3M9M0QiZm9ybS1yb3ctaW5wdXQgc3dlZXAiPicgKz0yMAorICAgIG51
bWJlcl9pbnB1dF90ZW1wbGF0ZTogJzxkaXYgY2xhc3M9M0QiZm9ybS1yb3ctaW5wdXQgc3dlZXAi
PicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxpbnB1dCBjbGFzcz0zRCJtaW4iIHR5
cGU9M0QidGV4dCIgc2l6ZT0zRCI2IiA9CnZhbHVlPTNEIjwlPTNEIG1pbiAlPiI+IC0gJyArCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAnPGlucHV0IGNsYXNzPTNEIm1heCIgdHlwZT0zRCJ0
ZXh0IiBzaXplPTNEIjYiID0KdmFsdWU9M0QiPCU9M0QgbWF4ICU+Ij4nICs9MjAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICc8aW5wdXQgY2xhc3M9M0QibWF4IiB0eXBlPTNEInRleHQiIHNp
emU9M0QiNiIgPQp2YWx1ZT0zRCI8JT0zRCBtYXggJT4iPicgKwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJyBzYW1wbGVzOiA8aW5wdXQgY2xhc3M9M0QibnVtX3NhbXBsZXMiIHR5cGU9M0Q9
CiJ0ZXh0IiBzaXplPTNEIjEiIHZhbHVlPTNEIjwlPTNEIG51bV9zYW1wbGVzICU+Ij4nICsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nLAo9MjAKQEAgLTQ3MSwxNiArNDcxLDE2
IEBACj0yMAogICAgICAgICAvLyBBZGQgcm93IGZvciBwYXJhbWV0ZXIgc3dlZXAgaW5wdXRzLgog
ICAgICAgICBpZiAoaW5wdXQgaW5zdGFuY2VvZiB0b29scy5JbnRlZ2VyVG9vbFBhcmFtZXRlcikg
ewotICAgICAgICAgICAgc3dlZXBfaW5wdXRzX3JvdyA9M0QgJChfLnRlbXBsYXRlKHRoaXMubnVt
YmVyX2lucHV0X3RlbXBsYXRlLCA9CnRoaXMubW9kZWwudG9KU09OKCkpKTsKKyAgICAgICAgICAg
IHN3ZWVwX2lucHV0c19yb3cgPTNEICQoIF8udGVtcGxhdGUodGhpcy5udW1iZXJfaW5wdXRfdGVt
cGxhdGUpPQoodGhpcy5tb2RlbC50b0pTT04oKSkgKTsKICAgICAgICAgfQogICAgICAgICBlbHNl
IGlmIChpbnB1dCBpbnN0YW5jZW9mIHRvb2xzLlNlbGVjdFRvb2xQYXJhbWV0ZXIpIHsKICAgICAg
ICAgICAgIHZhciBvcHRpb25zID0zRCBfLm1hcCh0aGlzLiRlbC5maW5kKCdzZWxlY3Qgb3B0aW9u
JyksIGZ1bmN0aW9uPQoob3B0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKG9w
dGlvbikudmFsKCk7CiAgICAgICAgICAgICAgICAgfSksCiAgICAgICAgICAgICAgICAgb3B0aW9u
c190ZXh0ID0zRCBvcHRpb25zLmpvaW4oJywgJyk7Ci0gICAgICAgICAgICBzd2VlcF9pbnB1dHNf
cm93ID0zRCAkKF8udGVtcGxhdGUodGhpcy5zZWxlY3RfaW5wdXRfdGVtcGxhdGUsIHsKKyAgICAg
ICAgICAgIHN3ZWVwX2lucHV0c19yb3cgPTNEICQoIF8udGVtcGxhdGUodGhpcy5zZWxlY3RfaW5w
dXRfdGVtcGxhdGUpPQooewogICAgICAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnNfdGV4dAot
ICAgICAgICAgICAgfSkpOworICAgICAgICAgICAgfSkgKTsKICAgICAgICAgfQogICAgICAgICBz
d2VlcF9pbnB1dHNfcm93Lmluc2VydEFmdGVyKHNpbmdsZV9pbnB1dF9yb3cpOwo9MjAKQEAgLTQ5
Nyw3ICs0OTcsNyBAQAogICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmhpZGUoKTsKICAgICAg
ICAgICAgICAgICAgICAgc2VsZi4kZWwuZmluZCgnLmljb24tYnV0dG9uLnRvZ2dsZScpLnNob3co
KTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAg
fSwKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICB0aXRsZTogJ1JlbW92ZSBwYXJhbWV0
ZXIgZnJvbSB0cmVlJywKQEAgLTUxMSw5ICs1MTEsOSBAQAogICAgICAgICAgICAgICAgICAgICBz
ZWxmLiRlbC5maW5kKCcuaWNvbi1idXR0b24ucGx1cy1idXR0b24nKS5zaG93KCk7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgXSw9MjAKKyAgICAgICAgICAg
IF0sCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICB0aGlzLiRlbC5wcmVwZW5kKG1lbnUuJGVsKTsKPTIwCkBAIC01NjgsMTIg
KzU2OCwxMiBAQAogICovCiB2YXIgVG9vbFBhcmFtZXRlclRyZWVWaWV3ID0zRCBCYWNrYm9uZS5W
aWV3LmV4dGVuZCh7CiAgICAgY2xhc3NOYW1lOiAndG9vbC1wYXJhbWV0ZXItdHJlZScsCi0gICA9
MjAKKwogICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICAgLy8gV2hl
biB0cmVlIGRhdGEgY2hhbmdlcywgcmUtcmVuZGVyLgogICAgICAgICB0aGlzLm1vZGVsLm9uKCdj
aGFuZ2U6dHJlZV9kYXRhJywgdGhpcy5yZW5kZXIsIHRoaXMpOwogICAgIH0sCi0gICA9MjAKKwog
ICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgIC8vIFN0YXJ0IGZyZXNoLgogICAgICAg
ICB0aGlzLiRlbC5jaGlsZHJlbigpLnJlbW92ZSgpOwpAQCAtNjQwLDcgKzY0MCw3IEBACiAgICAg
ICAgICAgLm9uKCdtb3VzZW91dCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgbm9kZS5zdHls
ZSgnZmlsbCcsICcjMDAwJyk7CiAgICAgICAgICAgfSk7Ci0gPTIwCisKICAgICAgICAgbm9kZS5h
cHBlbmQoImNpcmNsZSIpCiAgICAgICAgICAgLmF0dHIoInIiLCA5KTsKPTIwCkBAIC02NTgsMTMg
KzY1OCwxMyBAQAogdmFyIFN3ZWVwc3RlclZpc3VhbGl6YXRpb25WaWV3ID0zRCBCYWNrYm9uZS5W
aWV3LmV4dGVuZCh7CiAgICAgY2xhc3NOYW1lOiAnU3dlZXBzdGVyJywKPTIwCi0gICAgaGVscFRl
eHQ6PTIwCisgICAgaGVscFRleHQ6CiAgICAgICAgICc8ZGl2PjxoND5HZXR0aW5nIFN0YXJ0ZWQ8
L2g0PicgKwogICAgICAgICAnPG9sPjxsaT5DcmVhdGUgYSBwYXJhbWV0ZXIgdHJlZSBieSB1c2lu
ZyB0aGUgaWNvbnMgbmV4dCB0byB0aGUgdG89Cm9sXCdzIHBhcmFtZXRlciBuYW1lcyB0byBhZGQg
b3IgcmVtb3ZlIHBhcmFtZXRlcnMuJyArCiAgICAgICAgICc8bGk+QWRqdXN0IHRoZSB0cmVlIGJ5
IHVzaW5nIHBhcmFtZXRlciBpbnB1dHMgdG8gc2VsZWN0IG1pbiwgbWF4LD0KIGFuZCBudW1iZXIg
b2Ygc2FtcGxlcycgKwogICAgICAgICAnPGxpPlJ1biB0aGUgdG9vbCB3aXRoIGRpZmZlcmVudCBz
ZXR0aW5ncyBieSBjbGlja2luZyBvbiB0cmVlIG5vZGU9CnMnICsKICAgICAgICAgJzwvb2w+PC9k
aXY+JywKLSAgID0yMAorCiAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ob3B0aW9ucykgewogICAg
ICAgICB0aGlzLmNhbnZhc19tYW5hZ2VyID0zRCBuZXcgdmlzdWFsaXphdGlvbi5DYW52YXNNYW5h
Z2VyKHRoaXMuJGVsLnA9CmFyZW50cygnYm9keScpKTsKICAgICAgICAgdGhpcy50b29sX3BhcmFt
X3RyZWVfdmlldyA9M0QgbmV3IFRvb2xQYXJhbWV0ZXJUcmVlVmlldyh7IG1vZGVsOiB0PQpoaXMu
bW9kZWwuZ2V0KCdwYXJhbWV0ZXJfdHJlZScpIH0pOwpAQCAtNjgwLDcgKzY4MCw3IEBACiAgICAg
ICAgIH0pOwo9MjAKICAgICAgICAgLy8gU2V0IGJsb2NrLCByZXZlcnNlIHN0cmFuZCBibG9jayBj
b2xvcnM7IHRoZXNlIGNvbG9ycyB3aWxsIGJlIHVzPQplZCBmb3IgYWxsIHRyYWNrcy4KLSAgICAg
ICAgdGhpcy5jb25maWcgPTNEIGNvbmZpZy5Db25maWdTZXR0aW5nQ29sbGVjdGlvbi5mcm9tX21v
ZGVsc19hbmRfc2F2PQplZF92YWx1ZXMoPTIwCisgICAgICAgIHRoaXMuY29uZmlnID0zRCBjb25m
aWcuQ29uZmlnU2V0dGluZ0NvbGxlY3Rpb24uZnJvbV9tb2RlbHNfYW5kX3Nhdj0KZWRfdmFsdWVz
KAogICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgIHsga2V5OiAnbmFtZScsIGxhYmVsOiAn
TmFtZScsIHR5cGU6ICd0ZXh0JywgZGVmYXVsdF92YWx1ZTo9CiAnJyB9LAogICAgICAgICAgICAg
ICAgIHsga2V5OiAnYV9jb2xvcicsIGxhYmVsOiAnQSBDb2xvcicsIHR5cGU6ICdjb2xvcicsIGRl
ZmF1bHQ9Cl92YWx1ZTogIiNGRjAwMDAiIH0sCkBAIC02OTMsNyArNjkzLDcgQEAKICAgICAgICAg
ICAgIF0sIHt9CiAgICAgICAgICk7CiAgICAgfSwKLSAgID0yMAorCiAgICAgcmVuZGVyOiBmdW5j
dGlvbigpIHsKICAgICAgICAgLy8gUmVuZGVyIHRyZWUgZGVzaWduIHZpZXcgaW4gbGVmdCBwYW5l
bC4KICAgICAgICAgdmFyIHRyZWVfZGVzaWduX3ZpZXcgPTNEIG5ldyBUb29sUGFyYW1ldGVyVHJl
ZURlc2lnblZpZXcoewpAQCAtNzQ5LDcgKzc0OSw3IEBACiAgICAgICAgICAgICBbCiAgICAgICAg
ICAgICAgICAgLy8gU2F2ZS4KICAgICAgICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgIHsg
aWNvbl9jbGFzczogJ2Rpc2stLWFycm93JywgdGl0bGU6ICdTYXZlJywgb25fY2xpY2s6IGZ1bmM9
CnRpb24oKSB7PTIwCisgICAgICAgICAgICAgICAgeyBpY29uX2NsYXNzOiAnZGlzay0tYXJyb3cn
LCB0aXRsZTogJ1NhdmUnLCBvbl9jbGljazogZnVuYz0KdGlvbigpIHsKICAgICAgICAgICAgICAg
ICAgICAgLy8gU2hvdyBzYXZpbmcgZGlhbG9nIGJveAogICAgICAgICAgICAgICAgICAgICBzaG93
X21vZGFsKCJTYXZpbmcuLi4iLCAicHJvZ3Jlc3MiKTsKPTIwCkBAIC03NjAsOCArNzYwLDggQEAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFzX2NoYW5nZXMnOiBmYWxzZQogICAgICAg
ICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgIH0pCi0gICAgICAgICAg
ICAgICAgICAgIC5lcnJvcihmdW5jdGlvbigpIHs9MjAKLSAgICAgICAgICAgICAgICAgICAgICAg
IHNob3dfbW9kYWwoICJDb3VsZCBOb3QgU2F2ZSIsICJDb3VsZCBub3Qgc2F2ZSB2aXN1PQphbGl6
YXRpb24uIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuIiw9MjAKKyAgICAgICAgICAgICAgICAgICAg
LmVycm9yKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc2hvd19tb2RhbCgg
IkNvdWxkIE5vdCBTYXZlIiwgIkNvdWxkIG5vdCBzYXZlIHZpc3U9CmFsaXphdGlvbi4gUGxlYXNl
IHRyeSBhZ2FpbiBsYXRlci4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eyAiQ2xvc2UiIDogaGlkZV9tb2RhbCB9ICk7CiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgICAgIH0gfSwKQEAgLTc3MiwxNCArNzcyLDE0IEBACiAgICAgICAgICAgICAgICAg
ICAgIHRpdGxlOiAnU2V0IGRpc3BsYXkgbW9kZScKICAgICAgICAgICAgICAgICB9LAogICAgICAg
ICAgICAgICAgIC8vIENsb3NlIHZpei4KLSAgICAgICAgICAgICAgICB7PTIwCi0gICAgICAgICAg
ICAgICAgICAgIGljb25fY2xhc3M6ICdjcm9zcy1jaXJjbGUnLD0yMAotICAgICAgICAgICAgICAg
ICAgICB0aXRsZTogJ0Nsb3NlJyw9MjAKLSAgICAgICAgICAgICAgICAgICAgb25fY2xpY2s6IGZ1
bmN0aW9uKCkgez0yMAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaWNv
bl9jbGFzczogJ2Nyb3NzLWNpcmNsZScsCisgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnQ2xv
c2UnLAorICAgICAgICAgICAgICAgICAgICBvbl9jbGljazogZnVuY3Rpb24oKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPTNEICIke2gudXJsX2ZvciggY29udHJv
bGxlcj0zRCd2aT0Kc3VhbGl6YXRpb24nLCBhY3Rpb249M0QnbGlzdCcgKX0iOwotICAgICAgICAg
ICAgICAgICAgICB9PTIwCisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBdLD0yMAorICAgICAgICAgICAgXSwKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICB0b29sdGlwX2NvbmZpZzoge3BsYWNlbWVudDogJ2JvdHRvbSd9CiAgICAgICAg
ICAgICB9KTsKQEAgLTc5NywxMyArNzk3LDEzIEBACiAgICAgICAgICAgICB9KTsKPTIwCiAgICAg
ICAgICAgICBtYWtlX3BvcHVwbWVudShtZW51LiRlbC5maW5kKCcuY2hldnJvbi1leHBhbmQnKSwg
bW9kZV9tYXBwaW5nKTsKLSAgICAgICA9MjAKKwogICAgICAgICBtZW51LiRlbC5hdHRyKCJzdHls
ZSIsICJmbG9hdDogcmlnaHQiKTsKICAgICAgICAgJCgiI3JpZ2h0IC51bmlmaWVkLXBhbmVsLWhl
YWRlci1pbm5lciIpLmFwcGVuZChtZW51LiRlbCk7CiAgICAgfSwKPTIwCiAgICAgZ2V0X2Jhc2Vf
Y29sb3I6IGZ1bmN0aW9uKGJhc2UpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmdldF92
YWx1ZShiYXNlLnRvTG93ZXJDYXNlKCkgKyAnX2NvbG9yJykgfHw9MjAKKyAgICAgICAgcmV0dXJu
IHRoaXMuY29uZmlnLmdldF92YWx1ZShiYXNlLnRvTG93ZXJDYXNlKCkgKyAnX2NvbG9yJykgfHwK
ICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmdldF92YWx1ZSgnbl9jb2xvcicpOwogICAgIH0s
Cj0yMApAQCAtODU3LDcgKzg1Nyw3IEBACiAgICAgfSwKPTIwCiAgICAgLyoqCi0gICAgICogU2V0
cyB1cCBoYW5kbGluZyB3aGVuIHRyZWUgbm9kZXMgYXJlIGNsaWNrZWQuIFdoZW4gYSBub2RlIGlz
IGNsaWNrZT0KZCwgdGhlIHRvb2wgaXMgcnVuIGZvciBlYWNoIG9mPTIwCisgICAgICogU2V0cyB1
cCBoYW5kbGluZyB3aGVuIHRyZWUgbm9kZXMgYXJlIGNsaWNrZWQuIFdoZW4gYSBub2RlIGlzIGNs
aWNrZT0KZCwgdGhlIHRvb2wgaXMgcnVuIGZvciBlYWNoIG9mCiAgICAgICogdGhlIHNldHRpbmdz
IGRlZmluZWQgYnkgdGhlIG5vZGUncyBzdWJ0cmVlIGFuZCB0cmFja3MgYXJlIGFkZGVkIGZvcj0K
IGVhY2ggcnVuLgogICAgICAqLwogICAgIGhhbmRsZV9ub2RlX2NsaWNrczogZnVuY3Rpb24oKSB7
CkBAIC04NzUsMTEgKzg3NSwxMSBAQAo9MjAKICAgICAgICAgICAgIC8vIERvIG5vdCBhbGxvdyAx
MCsgam9icyB0byBiZSBydW4uCiAgICAgICAgICAgICBpZiAoYWxsX3NldHRpbmdzLmxlbmd0aCA+
PTNEIDEwKSB7Ci0gICAgICAgICAgICAgICAgc2hvd19tb2RhbCgiV2hvYSB0aGVyZSBjb3dib3kh
Iiw9MjAKKyAgICAgICAgICAgICAgICBzaG93X21vZGFsKCJXaG9hIHRoZXJlIGNvd2JveSEiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZb3UgY2xpY2tlZCBvbiBhIG5vZGUgdG8gdHJ5
ICIgKyBzZWxmLm1vZGVsLmc9CmV0KCd0b29sJykuZ2V0KCduYW1lJykgKwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIgd2l0aCAiICsgYWxsX3NldHRpbmdzLmxlbmd0aCArCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiBkaWZmZXJlbnQgY29tYmluYXRpb25zIG9mIHNldHRpbmdz
LiBZb3UgY2FuID0Kb25seSBydW4gMTAgam9icyBhdCBhIHRpbWUuIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7PTIwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiT2siOiBmdW5jdGlvbigpIHsgaGlkZV9tb2RhbCgp
OyBydW5fam9ic189CmRlZmVycmVkLnJlc29sdmUoZmFsc2UpOyB9CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9CkBAIC05MDEsNyArOTAxLDcgQEAKICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5hZGRfdHJhY2socG1fdHJhY2spOwogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gcG1fdHJhY2s7CiAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAg
ICAgICAgPTIwCisKICAgICAgICAgICAgICAgICAvLyBGb3IgZWFjaCB0cmFjaywgcnVuIHRvb2wg
dXNpbmcgdHJhY2sncyBzZXR0aW5ncyBhbmQgdXBkPQphdGUgdHJhY2suCiAgICAgICAgICAgICAg
ICAgXy5lYWNoKG5ld190cmFja3MsIGZ1bmN0aW9uKHBtX3RyYWNrLCBpbmRleCkgewogICAgICAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewpAQCAtOTE1LDcgKzkxNSw3IEBA
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrX2NvbmZpZyA9M0QgZGF0YXNl
dC5nZXQoJ3RyYWNrX2NvbmZpZz0KJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
U2V0IGRhdGFzZXQgdG8gYmUgdGhlIHRvb2wncyBvdXRwdXQuCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHJhY2tfY29uZmlnLmRhdGFzZXQgPTNEIGRhdGFzZXQ7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gU2V0IHRvb2wgdG8gbnVsbCBzbyB0aGF0IGl0IGlzIG5vdCB1bnBh
Y2tlZD0KOyB1bnBhY2tpbmcgaXQgbWVzc2VzIHdpdGg9MjAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBTZXQgdG9vbCB0byBudWxsIHNvIHRoYXQgaXQgaXMgbm90IHVucGFja2VkPQo7
IHVucGFja2luZyBpdCBtZXNzZXMgd2l0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IHRoZSB0b29sIHBhcmFtZXRlcnMgYW5kIHBhcmFtZXRlciB0cmVlLgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRyYWNrX2NvbmZpZy50b29sID0zRCBudWxsOwo9MjAKQEAgLTkyNCwxMSAr
OTI0LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGFuZCBhZGQg
dHJhY2sgZm9yIG91dHB1dCBkYXRhc2V0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciB0cmFja19vYmogPTNEIHRyYWNrcy5vYmplY3RfZnJvbV90ZW1wbGF0ZSg9CnRyYWNrX2NvbmZp
Zywgc2VsZiwgbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2tfb2JqLmlu
aXRfZm9yX3Rvb2xfZGF0YSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgPTIwCisKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwbV90cmFjay5zZXQoJ3RyYWNrJywgdHJhY2tfb2Jq
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICB9LCBp
bmRleCAqIDEwMDAwKTsKLSAgICAgICAgICAgICAgICB9KTsgICA9MjAKKyAgICAgICAgICAgICAg
ICB9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9CgpkaWZmIC1yIGM4YWIw
ZmUyODZiZjEwYWRkMjZmZTk2NzMzMGNmYzc5OTlhZmZkZjAgLXIgMDM0Y2IwZmI4N2RmYzJhZTU2
ZGUxMDc9CjJhNDVhNjgxODk3OTdlOTc5IGNsaWVudC90b29sc2hlZC9zY3JpcHRzL212Yy9ncm91
cHMvZ3JvdXAtZGV0YWlsLXZpZXcuanMKLS0tIGEvY2xpZW50L3Rvb2xzaGVkL3NjcmlwdHMvbXZj
L2dyb3Vwcy9ncm91cC1kZXRhaWwtdmlldy5qcworKysgYi9jbGllbnQvdG9vbHNoZWQvc2NyaXB0
cy9tdmMvZ3JvdXBzL2dyb3VwLWRldGFpbC12aWV3LmpzCkBAIC01Niw3ICs1Niw3IEBACiAgICAg
dGVtcGxhdGVSb3c6IGZ1bmN0aW9uKCkgewogICAgICAgICByZXR1cm4gXy50ZW1wbGF0ZShbCiAg
ICAgICAgICAgICAgICAgJzxkaXY+JywKLSAgICAgICAgICAgICAgICAgICAgJzxoMz48JT0zRCBn
cm91cC5nZXQoIm5hbWUiKSAlPjwvaDM+JywKKyAgICAgICAgICAgICAgICAgICAgJzxoMz48JT0z
RCBfLmVzY2FwZShncm91cC5nZXQoIm5hbWUiKSkgJT48L2gzPicsCiAgICAgICAgICAgICAgICAg
ICAgICc8cCBjbGFzcz0zRCIiIHN0eWxlPTNEImNvbG9yOmdyYXk7Ij4nLAogICAgICAgICAgICAg
ICAgICAgICAnQSBncm91cCBvZiA8JT0zRCBncm91cC5nZXQoIm1lbWJlcnMiKS5sZW5ndGggJT4g
bWVtYmU9CnJzIHdpdGggPCU9M0QgZ3JvdXAuZ2V0KCJyZXBvc2l0b3JpZXMiKS5sZW5ndGggJT4g
cmVwb3NpdG9yaWVzIGFuZCBhIHRvdGFsID0Kb2YgPCU9M0QgZ3JvdXAuZ2V0KCJ0b3RhbF9kb3du
bG9hZHMiKSAlPiBjb21iaW5lZCByZXBvc2l0b3J5IGNsb25lcy48L3A+JywKPTIwCkBAIC03MSwx
MCArNzEsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPCUgXy5lYWNoKGdyb3Vw
LmdldCgibWVtYmVycyIpLCBmdW5jdGlvbihtZW1iPQplcikgeyAlPicsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJzx0cj4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
PHRkPicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPCU9M0QgbWVtYmVy
LnVzZXJuYW1lICU+JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8JT0z
RCBfLmVzY2FwZShtZW1iZXIudXNlcm5hbWUpICU+JywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJzwvdGQ+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzx0ZD4n
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxhIGRhdGEtdG9nZ2xlPTNE
InRvb2x0aXAiIGRhdGEtcGxhY2U9Cm1lbnQ9M0QidG9wIiB0aXRsZT0zRCJSZXBvc2l0b3JpZXMg
b2YgPCU9M0QgbWVtYmVyLnVzZXJuYW1lICU+IiBocmVmPTNEIi9yZT0KcG9zaXRvcnkvYnJvd3Nl
X3JlcG9zaXRvcmllc19ieV91c2VyP3VzZXJfaWQ9M0Q8JT0zRCBtZW1iZXIuaWQgJT4mdXNlX3Bh
bmVsPQpzPTNEdHJ1ZSIgaWQ9M0QiPCU9M0QgbWVtYmVyLmlkICU+Ij48JT0zRCBtZW1iZXIudXNl
cl9yZXBvc19jb3VudCAlPjwvYT4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJzxhIGRhdGEtdG9nZ2xlPTNEInRvb2x0aXAiIGRhdGEtcGxhY2U9Cm1lbnQ9M0QidG9wIiB0
aXRsZT0zRCJSZXBvc2l0b3JpZXMgb2YgPCU9M0QgXy5lc2NhcGUobWVtYmVyLnVzZXJuYW1lKSAl
PiIgaD0KcmVmPTNEIi9yZXBvc2l0b3J5L2Jyb3dzZV9yZXBvc2l0b3JpZXNfYnlfdXNlcj91c2Vy
X2lkPTNEPCU9M0QgbWVtYmVyLmlkICU+PQomdXNlX3BhbmVscz0zRHRydWUiIGlkPTNEIjwlPTNE
IG1lbWJlci5pZCAlPiI+PCU9M0QgbWVtYmVyLnVzZXJfcmVwb3NfY291bnQ9CiAlPjwvYT4nLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC90ZD4nLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnPHRkPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnPCU9M0QgbWVtYmVyLnRpbWVfY3JlYXRlZCAlPicsCkBAIC0xMDEsMTYgKzEwMSwxNiBA
QAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8JSBfLmVhY2goZ3JvdXAuZ2V0KCJyZXBv
c2l0b3JpZXMiKSwgZnVuY3Rpb249CihyZXBvKSB7ICU+JywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJzx0cj4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Jzx0ZD4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8YSBkYXRh
LXRvZ2dsZT0zRCJ0b29sdGlwIiBkYXRhLXA9CmxhY2VtZW50PTNEInRvcCIgdGl0bGU9M0QiRGV0
YWlscyBvZiA8JT0zRCByZXBvLm5hbWUgJT4iIGhyZWY9M0QiL3ZpZXcvPCU9Cj0zRCByZXBvLm93
bmVyICU+LzwlPTNEIHJlcG8ubmFtZSAlPiIgaWQ9M0QiPCU9M0QgcmVwby5pZCAlPiI+PCU9M0Qg
cmVwby5uYT0KbWUgJT48L2E+JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnPGEgZGF0YS10b2dnbGU9M0QidG9vbHRpcCIgZGF0YS1wPQpsYWNlbWVudD0zRCJ0b3Ai
IHRpdGxlPTNEIkRldGFpbHMgb2YgPCU9M0QgXy5lc2NhcGUocmVwby5uYW1lKSAlPiIgaHJlZj0z
RCI9Ci92aWV3LzwlPTNEIF8uZXNjYXBlKHJlcG8ub3duZXIpICU+LzwlPTNEIF9lc2NhcGUocmVw
by5uYW1lKSAlPiIgaWQ9M0QiPCU9Cj0zRCByZXBvLmlkICU+Ij48JT0zRCBfLmVzY2FwZShyZXBv
Lm5hbWUpICU+PC9hPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC90
ZD4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzx0ZD4nLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8JT0zRCByZXBvLmRlc2NyaXB0aW9u
ICU+JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPCU9M0QgXy5l
c2NhcGUocmVwby5kZXNjcmlwdGlvbikgPQolPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnPC90ZD4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Jzx0ZD4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8JT0zRCBy
ZXBvLnRpbWVzX2Rvd25sb2FkZWQgJT4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJzwvdGQ+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8dGQ+
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPCU9M0QgcmVwby5v
d25lciAlPicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwlPTNE
IF8uZXNjYXBlKHJlcG8ub3duZXIpICU+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICc8L3RkPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHRk
PicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwlIF8uZWFjaCgo
cmVwby5jYXRlZ29yaWVzKSwgZnVuYz0KdGlvbihjYXQpIHsgJT4nLAoKZGlmZiAtciBjOGFiMGZl
Mjg2YmYxMGFkZDI2ZmU5NjczMzBjZmM3OTk5YWZmZGYwIC1yIDAzNGNiMGZiODdkZmMyYWU1NmRl
MTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3OSBjbGllbnQvdG9vbHNoZWQvc2NyaXB0cy9tdmMvZ3JvdXBz
L2dyb3VwLWxpc3Ryb3ctdmlldy5qcwotLS0gYS9jbGllbnQvdG9vbHNoZWQvc2NyaXB0cy9tdmMv
Z3JvdXBzL2dyb3VwLWxpc3Ryb3ctdmlldy5qcworKysgYi9jbGllbnQvdG9vbHNoZWQvc2NyaXB0
cy9tdmMvZ3JvdXBzL2dyb3VwLWxpc3Ryb3ctdmlldy5qcwpAQCAtMTksNyArMTksNyBAQAogICAg
IHRlbXBsYXRlUm93OiBmdW5jdGlvbigpIHsKICAgICAgICAgcmV0dXJuIF8udGVtcGxhdGUoWwog
ICAgICAgICAgICAgICAgICc8dHIgY2xhc3M9M0QiIiBkYXRhLWlkPTNEIjwlLSBncm91cC5nZXQo
ImlkIikgJT4iPicsCi0gICAgICAgICAgICAgICAgJzx0ZD48YSBocmVmPTNEImdyb3VwcyMvPCU9
M0QgZ3JvdXAuZ2V0KCJpZCIpICU+Ij48JT0zRCBncj0Kb3VwLmdldCgibmFtZSIpICU+PC9hPjwv
dGQ+JywKKyAgICAgICAgICAgICAgICAnPHRkPjxhIGhyZWY9M0QiZ3JvdXBzIy88JT0zRCBncm91
cC5nZXQoImlkIikgJT4iPjwlPTNEIF8uPQplc2NhcGUoZ3JvdXAuZ2V0KCJuYW1lIikpICU+PC9h
PjwvdGQ+JywKICAgICAgICAgICAgICAgICAvLyAnPHRkPmRlc2NyaXB0aW9uPC90ZD4nLAogICAg
ICAgICAgICAgICAgICc8dGQ+PCU9M0QgZ3JvdXAuZ2V0KCJ0b3RhbF9tZW1iZXJzIikgJT48L3Rk
PicsCiAgICAgICAgICAgICAgICAgJzx0ZD48JT0zRCBncm91cC5nZXQoInRvdGFsX3JlcG9zIikg
JT48L3RkPicsCgpkaWZmIC1yIGM4YWIwZmUyODZiZjEwYWRkMjZmZTk2NzMzMGNmYzc5OTlhZmZk
ZjAgLXIgMDM0Y2IwZmI4N2RmYzJhZTU2ZGUxMDc9CjJhNDVhNjgxODk3OTdlOTc5IGNvbmZpZy9q
b2JfY29uZi54bWwuc2FtcGxlX2FkdmFuY2VkCi0tLSBhL2NvbmZpZy9qb2JfY29uZi54bWwuc2Ft
cGxlX2FkdmFuY2VkCisrKyBiL2NvbmZpZy9qb2JfY29uZi54bWwuc2FtcGxlX2FkdmFuY2VkCkBA
IC01NCw2ICs1NCwxOSBAQAogICAgICAgICAgICAgICAgZ2FsYXh5X2luZnJhc3RydWN0dXJlX3Vy
bCBpcyBzZXQgaW4gZ2FsYXh5LmluaS4KICAgICAgICAgICAtLT48cGFyYW0gaWQ9M0QiZ2FsYXh5
X3VybCI+aHR0cDovL2xvY2FsaG9zdDo4MDgwPC9wYXJhbT4KKyAgICAgICAgICA8IS0tIEFNUVAg
ZG9lcyBub3QgZ3VhcmFudGVlIHRoYXQgYSBwdWJsaXNoZWQgbWVzc2FnZSBpcyByZWNlaXZlPQpk
IGJ5CisgICAgICAgICAgICAgICB0aGUgQU1RUCBzZXJ2ZXIsIHNvIEdhbGF4eS9QdWxzYXIgY2Fu
IHJlcXVlc3QgdGhhdCB0aGUgY29ucz0KdW1lcgorICAgICAgICAgICAgICAgYWNrbm93bGVkZ2Ug
bWVzc2FnZXMgYW5kIHdpbGwgcmVzZW5kIHRoZW0gaWYgYWNrbm93bGVkZ2VtZW49CnQgaXMKKyAg
ICAgICAgICAgICAgIG5vdCByZWNlaXZlZCBhZnRlciBhIGNvbmZpZ3VyYWJsZSB0aW1lb3V0LiAg
LS0+CisgICAgICAgICAgPCEtLSA8cGFyYW0gaWQ9M0QiYW1xcF9hY2tub3dsZWRnZSI+RmFsc2U8
L3BhcmFtPiAtLT4KKyAgICAgICAgICA8IS0tIEdhbGF4eSByZXVzZXMgUHVsc2FyJ3MgcGVyc2lz
dGVuY2VfZGlyZWN0b3J5IHBhcmFtZXRlciAodmlhPQogdGhlCisgICAgICAgICAgICAgICBQdWxz
YXIgY2xpZW50IGxpYikgdG8gc3RvcmUgYSByZWNvcmQgb2YgcmVjZWl2ZWQKKyAgICAgICAgICAg
ICAgIGFja25vd2xlZGdlbWVudHMsIGFuZCB0byBrZWVwIHRyYWNrIG9mIG1lc3NhZ2VzIHdoaWNo
IGhhdmUgPQpub3QKKyAgICAgICAgICAgICAgIGJlZW4gYWNrbm93bGVkZ2VkLiAtLT4KKyAgICAg
ICAgICA8IS0tIDxwYXJhbSBpZD0zRCJwZXJzaXN0ZW5jZV9kaXJlY3RvcnkiPi9wYXRoL3RvL2Rp
cjwvcGFyYW0+IC0tPgorICAgICAgICAgIDwhLS0gTnVtYmVyIG9mIHNlY29uZHMgdG8gd2FpdCBm
b3IgYW4gYWNrbm93bGVkZ2VtZW50IGJlZm9yZQorICAgICAgICAgICAgICAgcmVwdWJsaXNoaW5n
IGEgbWVzc2FnZS4gLS0+CisgICAgICAgICAgPCEtLSA8cGFyYW0gaWQ9M0QiYW1xcF9yZXB1Ymxp
c2hfdGltZSI+MzA8L3BhcmFtPiAtLT48IS0tIFB1bHNhcj0KIGpvYiBtYW5hZ2VyIHRvIGNvbW11
bmljYXRlIHdpdGggKHNlZSBQdWxzYXIKICAgICAgICAgICAgICAgIGRvY3MgZm9yIGluZm9ybWF0
aW9uIG9uIGpvYiBtYW5hZ2VycykuIC0tPjwhLS0gPHBhcmFtIGlkPTNEPQoibWFuYWdlciI+X2Rl
ZmF1bHRfPC9wYXJhbT4gLS0+CgpkaWZmIC1yIGM4YWIwZmUyODZiZjEwYWRkMjZmZTk2NzMzMGNm
Yzc5OTlhZmZkZjAgLXIgMDM0Y2IwZmI4N2RmYzJhZTU2ZGUxMDc9CjJhNDVhNjgxODk3OTdlOTc5
IGNvbmZpZy9wbHVnaW5zL2ludGVyYWN0aXZlX2Vudmlyb25tZW50cy9pcHl0aG9uL2NvbmZpZy9p
cD0KeXRob24uaW5pLnNhbXBsZQotLS0gYS9jb25maWcvcGx1Z2lucy9pbnRlcmFjdGl2ZV9lbnZp
cm9ubWVudHMvaXB5dGhvbi9jb25maWcvaXB5dGhvbi5pbmkuc2E9Cm1wbGUKKysrIGIvY29uZmln
L3BsdWdpbnMvaW50ZXJhY3RpdmVfZW52aXJvbm1lbnRzL2lweXRob24vY29uZmlnL2lweXRob24u
aW5pLnNhPQptcGxlCkBAIC0xMiw3ICsxMiw3IEBACiBjb21tYW5kID0zRCBkb2NrZXIKPTIwCiAj
IFRoZSBkb2NrZXIgaW1hZ2UgbmFtZSB0aGF0IHNob3VsZCBiZSBzdGFydGVkLgotaW1hZ2UgPTNE
IGJncnVlbmluZy9kb2NrZXItaXB5dGhvbi1ub3RlYm9vazpkZXYKK2ltYWdlID0zRCBiZ3J1ZW5p
bmcvZG9ja2VyLWlweXRob24tbm90ZWJvb2s6MTUuMDcKPTIwCiAjIEFkZGl0aW9uYWwgYXJndW1l
bnRzIHRoYXQgYXJlIHBhc3NlZCB0byB0aGUgYGRvY2tlciBydW5gIGNvbW1hbmQuCiBjb21tYW5k
X2luamVjdCA9M0QgLS1zaWctcHJveHk9M0R0cnVlIC1lIERFQlVHPTNEZmFsc2UKCmRpZmYgLXIg
YzhhYjBmZTI4NmJmMTBhZGQyNmZlOTY3MzMwY2ZjNzk5OWFmZmRmMCAtciAwMzRjYjBmYjg3ZGZj
MmFlNTZkZTEwNz0KMmE0NWE2ODE4OTc5N2U5NzkgY29uZmlnL3BsdWdpbnMvaW50ZXJhY3RpdmVf
ZW52aXJvbm1lbnRzL3JzdHVkaW8vY29uZmlnL3JzPQp0dWRpby5pbmkuc2FtcGxlCi0tLSBhL2Nv
bmZpZy9wbHVnaW5zL2ludGVyYWN0aXZlX2Vudmlyb25tZW50cy9yc3R1ZGlvL2NvbmZpZy9yc3R1
ZGlvLmluaS5zYT0KbXBsZQorKysgYi9jb25maWcvcGx1Z2lucy9pbnRlcmFjdGl2ZV9lbnZpcm9u
bWVudHMvcnN0dWRpby9jb25maWcvcnN0dWRpby5pbmkuc2E9Cm1wbGUKQEAgLTcsNyArNyw3IEBA
Cj0yMAogW2RvY2tlcl0KIGNvbW1hbmQgPTNEIGRvY2tlcgotaW1hZ2UgPTNEIGVyYXNjaGUvZG9j
a2VyLXJzdHVkaW8tbm90ZWJvb2s6ZGV2CitpbWFnZSA9M0QgZXJhc2NoZS9kb2NrZXItcnN0dWRp
by1ub3RlYm9vazoxNS4wNwo9MjAKICMgQWRkaXRpb25hbCBhcmd1bWVudHMgdGhhdCBhcmUgcGFz
c2VkIHRvIHRoZSBgZG9ja2VyIHJ1bmAgY29tbWFuZC4gYC11YAogIyBzZXR0aW5ncyBhcmUgY29t
cGxldGVseSBpZ25vcmVkLgoKZGlmZiAtciBjOGFiMGZlMjg2YmYxMGFkZDI2ZmU5NjczMzBjZmM3
OTk5YWZmZGYwIC1yIDAzNGNiMGZiODdkZmMyYWU1NmRlMTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3OSBk
b2Mvc291cmNlL3JlbGVhc2VzLzE1LjA3LnJzdAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zb3Vy
Y2UvcmVsZWFzZXMvMTUuMDcucnN0CkBAIC0wLDAgKzEsNTQ4IEBACisKKy4uIHRvX2RvYworCist
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisxNS4wNworLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitFbmhhbmNlbWVudHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworCisuLiBlbmhhbmNlbWVudHMKKworKiBJbnRlcmFjdGl2ZSBlbnZpcm9ubWVudCAo
SUUpIGZyYW1ld29yayB1cGRhdGVzIGluY2x1ZGluZyBhIG5ldyBJRSBmb3IgUlM9CnR1ZGlvLgor
ICAoVGhhbmtzIHRvIGEgdGVhbSBlZmZvcnQgc3BlYXJoZWFkZWQgYnkgYEBlcmFzY2hlIDxodHRw
czovL2dpdGh1Yi5jb20vZXI9CmFzY2hlPmBfXy4pCisgIGBQdWxsIFJlcXVlc3QgMjI5YF8sIGBQ
dWxsIFJlcXVlc3QgMjMwYF8KKyogUmV3b3JrIHdvcmtmbG93IGVkaXRvciB0byB1c2UgbmV3ZXIg
dG9vbCBmb3JtIGNvbXBvbmVudHMgYW5kIGFsbG93IGNvbnN0PQpydWN0aW9uCisgIG9mIHdvcmtm
bG93cyB3aXRoIHRvb2xzIGV4cGxpY2l0bHkgcHJvZHVjaW5nIG91dHB1dCBjb2xsZWN0aW9ucy4K
KyAgYFB1bGwgUmVxdWVzdCAyODZgXywgYFB1bGwgUmVxdWVzdCAzMjhgXywgYFB1bGwgUmVxdWVz
dCAzMTFgXywKKyAgYFB1bGwgUmVxdWVzdCAzOTdgXywgYFB1bGwgUmVxdWVzdCAyMzNgXywgYFB1
bGwgUmVxdWVzdCA2MjVgXywKKyAgYFB1bGwgUmVxdWVzdCA2MDJgXworKiBJbXBsZW1lbnQgcG9s
aWNpZXMgZm9yIGNvbW1pdHRlcnMgYW5kIHB1bGwgcmVxdWVzdHMuCisgIGBQdWxsIFJlcXVlc3Qg
Mjk1YF8sIGBQdWxsIFJlcXVlc3QgMzE0YF8KKyogQWxsb3cgZXhwb3J0aW5nIGEgbGlicmFyeSBm
b2xkZXIgdG8gYSBoaXN0b3J5LiAoVGhhbmtzIHRvIGBAZXJpY2VubnMKKyAgPGh0dHBzOi8vZ2l0
aHViLmNvbS9lcmljZW5ucz5gX18uKSBgUHVsbCBSZXF1ZXN0IDQyNmBfCisqIEZpeCBhbmQgdXBk
YXRlIGRvY3VtZW50YXRpb24gYXZhaWxhYmxlIG9uIHRoZSBSZWFkVGhlRG9jcyB3aXRoIHBhcnRp
Y3VsYXIKKyAgZm9jdXMgb24gdGhlIEFQSSBkb2N1bWVudGF0aW9uLiAoVGhhbmtzIHRvIGBAbnNv
cmFuem8KKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9uc29yYW56bz5gX18uKQorICBgUHVsbCBSZXF1
ZXN0IDM5OWBfLCBgUHVsbCBSZXF1ZXN0IDQwNWBfCisqIEFkZCBFREFNIElEcyB0byBHYWxheHkg
ZGF0YXR5cGVzLiAoVGhhbmtzIHRvIGEgdGVhbSBlZmZvcnQgaW5pdGlhdGVkIGJ5ID0KYEBlcmFz
Y2hlCisgIDxodHRwczovL2dpdGh1Yi5jb20vZXJhc2NoZT5gX18uKQorICBgUHVsbCBSZXF1ZXN0
IDgwYF8sIGBQdWxsIFJlcXVlc3QgMzQyYF8KKyogSW1wcm92ZWQgcmVwb3J0cyBhcHAgc29ydGlu
ZyBhbmQgYnVnIGZpeGVzIHRoYW5rcyB0bworICBEYW5pZWwgQm91Y2hhcmQgKGBAQWlyaXN0b3Rh
bCA8aHR0cHM6Ly9naXRodWIuY29tL0FpcmlzdG90YWw+YF9fKS4gRXZlbiA9Cm1vcmUKKyAgcmVw
b3J0cyBlbmhhbmNlbWVudHMgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgbmV4dCByZWxlYXNlIG9m
IEdhbGF4eSBpbmNsPQp1ZGluZworICBuZXcgbGFuZGluZyBwYWdlLCBwYWdpbmF0aW9uLCBhbmQg
c3BhcmtsaW5lIGdyYXBocy4KKyAgYFB1bGwgUmVxdWVzdCAzMDNgXywgYFB1bGwgUmVxdWVzdCAz
MzBgXywgYFB1bGwgUmVxdWVzdCAzMzhgXworKiBTaWduaWZpY2FudCBzcGVlZHVwIG9mIHRvb2wg
cGFuZWwvaG9tZXBhZ2UgbG9hZGluZy4gKFRoYW5rcyB0byBgQGFicmV0YXVkCisgIDxodHRwczov
L2dpdGh1Yi5jb20vYWJyZXRhdWQ+YF9fLikgYFB1bGwgUmVxdWVzdCAxNTlgXworKiBBbGxvdyBw
YXJhbWV0ZXJpemF0aW9uIG9mIHRvb2wgWE1MIG1hY3Jvcy4gYFB1bGwgUmVxdWVzdCAzNjJgXwor
KiBBbGxvdyB1c2Ugb2YgdG9vbC1zdHlsZSBYTUwgbWFjcm9zIGluIGBgam9iX2NvbmYueG1sYGAu
IGBQdWxsIFJlcXVlc3QgMzY9CjJgXworKiBVcGRhdGUgYW5kIGNsYXJpZnkgYWRtaW4gbWVudS4g
YFB1bGwgUmVxdWVzdCAzMDJgXworKiBBZGQgdXNhZ2UgaW5mb3JtYXRpb24gdG8gcHl0aG9uIGNs
ZWFudXAgc2NyaXB0cy4gKFRoYW5rcyB0byBgQGRwcnlhbjc5CisgIDxodHRwczovL2dpdGh1Yi5j
b20vZHByeWFuNzk+YF9fLikgYFB1bGwgUmVxdWVzdCAyNzRgXworKiBBZGRlZCBkZWZhdWx0IGlu
ZGV4aW5nIGZvciBiY2YgZmlsZXMuIGBQdWxsIFJlcXVlc3QgMTYzYF8KKyogSW1wbGVtZW50IG1l
cmdpbmcgb2YgQkFNIGZpbGVzIGZvciB0aGUgcGFyYWxsZWxpc20gZnJhbWV3b3JrLiAoVGhhbmtz
IHRvCisgIGBAcm9hbHZhMSA8aHR0cHM6Ly9naXRodWIuY29tL3JvYWx2YTE+YF9fLikgYFB1bGwg
UmVxdWVzdCAxNDlgXworKiBTZW5kIHNpZ25hbCB0byByZWxvYWQgZGF0YSB0YWJsZXMgd2hlbiBh
ZGRpbmcgYW4gZW50cnkgKFRoYW5rcyB0byBgQGFicmU9CnRhdWQKKyAgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9hYnJldGF1ZD5gX18uKSBgUHVsbCBSZXF1ZXN0IDI1MGBfCisqIEFkZCBkaXNwbGF5IGZv
ciBJbnRlcnZhbCBmaWxlcyBhdCBJR1YgdmlhIGJlZHN0cmljdC4gYFB1bGwgUmVxdWVzdCAyNTlg
XworKiBJbmNsdWRlIG1vcmUgaW5mb3JtYXRpb24gaW4gZGVmYXVsdCBgYHdlbGNvbWUuaHRtbGBg
IGZpbGUuIGBQdWxsIFJlcXVlc3Q9CiAxOTBgXworKiBJbXBsZW1lbnQgYSBjb21tYW5kIGxpbmUg
c2NyaXB0IGZvciBjb2xsZWN0aW5nIHN0YXRzIG9uIGpvYiBydW50aW1lcy49MjAKKyAgYFB1bGwg
UmVxdWVzdCAxNTFgXworKiBJbXBsZW1lbnQgYW4gYXV0aGVudGljYXRpb24gcHJvdmlkZXIgZm9y
IFBBTSAoUGx1Z2dhYmxlIEF1dGhlbnRpY2F0aW9uIE09Cm9kdWxlcykKKyAgKFRoYW5rcyB0byBg
QHB2YW5oZXVzIDxodHRwczovL2dpdGh1Yi5jb20vcHZhbmhldXM+YF9fLikgYFB1bGwgUmVxdWVz
dCA0PQo1OGBfCisqIFJlLWltcGxlbWVudCBsaWJyYXJ5IGRhdGEgYW5kIEZUUCBmaWxlIHBhcmFt
ZXRlcnMgZm9yIG5ldyB0b29sIGZvcm0uCisgIGBQdWxsIFJlcXVlc3QgMTMyYF8sIGBQdWxsIFJl
cXVlc3QgNTQ2YF8KKyogQWRkaW5nIHRvb2wgZXJyb3IgdHJhY2tpbmcuIChUaGFua3MgdG8gYEBr
ZWxscm90dAorICA8aHR0cHM6Ly9naXRodWIuY29tL2tlbGxyb3R0PmBfXy4pIGBQdWxsIFJlcXVl
c3QgMzIyYF8KKyogSW1wbGVtZW50IGBgPGZpbHRlcj5gYCB0YWcgZm9yIG91dHB1dCBjb2xsZWN0
aW9ucy4gYFB1bGwgUmVxdWVzdCA0NTVgXworKiBBbGxvdyBlbnZpcm9ubWVudCB2YXJpYWJsZSBk
ZWZpbml0aW9ucyBpbiB0b29sIFhNTC4gYFB1bGwgUmVxdWVzdCAzOTVgXworKiBBZGQgbmV3IGBg
ZXhjbHVkZV9taW5gYCBhbmQgYGBleGNsdWRlX21heGBgIGF0dHJpYnV0ZXMgdG8gYGBJblJhbmdl
VmFsaWQ9CmF0b3JgYAorICBmb3IgbnVtZXJpYyB0b29sIHBhcmFtZXRlcnMuIChUaGFua3MgdG8g
YEBncmVndm9ua3VzdGVyCisgIDxodHRwczovL2dpdGh1Yi5jb20vZ3JlZ3Zvbmt1c3Rlcj5gX18u
KSBgUHVsbCBSZXF1ZXN0IDMzOWBfCisqIEFkZGVkIHVubGlua2VkIFRvb2wgU2hlZCBkZXBlbmRl
bmN5IHJlc29sdmVyLiAoVGhhbmtzIHRvIGBAQ2hyaXN0aWFuLUIKKyAgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9DaHJpc3RpYW4tQj5gX18uKSBgUHVsbCBSZXF1ZXN0IDQ0MWBfCisqIEFkZCBlbWJvc3Mg
ZGF0YXR5cGVzIChwcmV2aW91c2x5IG1pZ3JhdGVkIHRvIFRvb2wgU2hlZCkuIChUaGFua3MgdG8g
YEBiZz0KcnVlbmluZworICA8aHR0cHM6Ly9naXRodWIuY29tL2JncnVlbmluZz5gX18uKSBgUHVs
bCBSZXF1ZXN0IDE0OGBfCisqIEFkZCBuZXcgSG1tZXIgJiBTdG9ja2hvbG0gZGF0YXR5cGVzLiAo
VGhhbmtzIHRvIGBAZXJhc2NoZQorICA8aHR0cHM6Ly9naXRodWIuY29tL2VyYXNjaGU+YF9fLikg
YFB1bGwgUmVxdWVzdCAyMThgXworKiBBZGQgYW4gUkRhdGEgZGF0YXR5cGUuIChUaGFua3MgdG8g
YEBlcmFzY2hlCisgIDxodHRwczovL2dpdGh1Yi5jb20vZXJhc2NoZT5gX18uKSBgUHVsbCBSZXF1
ZXN0IDIzOWBfCisqIEFkZCBtYXV2ZSBYTUZBIGRhdGF0eXBlIChUaGFua3MgdG8gYEBlcmFzY2hl
IDxodHRwczovL2dpdGh1Yi5jb20vZXJhc2NoZT0KPmBfXy4pCisgIGBQdWxsIFJlcXVlc3QgMjcw
YF8KKyogQWRkIENvbm5lY3Rpdml0eVRhYmxlIChcKi5jdCkgKFJOQSAyRCBzdHJ1Y3R1cmUgZm9y
bWF0KSBkYXRhdHlwZS4KKyAgKFRoYW5rcyB0byBgQHlob29nc3RyYXRlIDxodHRwczovL2dpdGh1
Yi5jb20veWhvb2dzdHJhdGU+YF9fLikKKyAgYFB1bGwgUmVxdWVzdCA0MzlgXworKiBBZGQgSWxs
dW1pbmEgbWV0aHlsYXRpb24gZGF0YXR5cGUgKElEQVQpLiBgUHVsbCBSZXF1ZXN0IDMzNWBfCisq
IEFkZCBEb3QtQnJhY2tldCBub3RhdGlvbiAoZGJuKSBkYXRhdHlwZS4gKFRoYW5rcyB0byBgQHlo
b29nc3RyYXRlCisgIDxodHRwczovL2dpdGh1Yi5jb20veWhvb2dzdHJhdGU+YF9fLikgYFB1bGwg
UmVxdWVzdCAzNjZgXworKiBBZGQgcHJvdGVvbWljcyBkYXRhdHlwZXMuIChUaGFua3MgdG8gYEBp
cmFjb29rZQorICA8aHR0cHM6Ly9naXRodWIuY29tL2lyYWNvb2tlPmBfXy4pIGBQdWxsIFJlcXVl
c3QgMzg5YF8KKyogQWRkIG5ldyBNelNRbGl0ZSBkYXRhdHlwZSBmb3IgYWdncmVnYXRpbmcgTVMt
YmFzZWQgcHJvdGVpbiBpZGVudGlmaWNhdGlvbgorICBpbmZvcm1hdGlvbi4gKFRoYW5rcyB0byBg
QGpqLXVtbiA8aHR0cHM6Ly9naXRodWIuY29tL2pqLXVtbj5gX18uKQorICBgUHVsbCBSZXF1ZXN0
IDQyN2BfCisqIEFsbG93IGBgZGlzcGxheV9pbl91cGxvYWRgYCBieSBkZWZhdWx0IGZvciBoNSBm
aWxlcy4gYFB1bGwgUmVxdWVzdCA0NzBgXworKiBBY2NlcHQgaGlzdG9yeSBpZCBpbiB0b29sIHN0
YXRlIGNvbnN0cnVjdGlvbiBBUEkuIGBQdWxsIFJlcXVlc3QgMjY4YF8KKyogQWRkaW5nIGRhdGFz
ZXQgdXVpZCBpbmZvcm1hdGlvbiB0byBqb2IgYW5kIHdvcmtmbG93IGludm9jYXRpb24gY2FsbHMu
CisgIChUaGFua3MgdG8gYEBrZWxscm90dCA8aHR0cHM6Ly9naXRodWIuY29tL2tlbGxyb3R0PmBf
Xy4pIGBQdWxsIFJlcXVlc3QgMT0KODFgXworKiBBbGxvdyB3b3JrZmxvd3MgZXhlY3V0ZWQgdmlh
IHRoZSBBUEkgdG8gb3B0aW9uYWxseSBydW4gd2l0aCB0b29sIHVwZ3JhZGU9CnMuCisgIGBQdWxs
IFJlcXVlc3QgNDAyYF8KKyogVmFyaW91cyBQRVAtOCBmaXhlcywgbW9yZSB0byBjb21lIG5leHQg
cmVsZWFzZS4gKFRoYW5rcyB0byBlZmZvcnRzIGxlYWQgPQpieQorICBgQG5zb3JhbnpvIDxodHRw
czovL2dpdGh1Yi5jb20vbnNvcmFuem8+YF9fLAorICBgQHJlbWltYXJlbmNvIDxodHRwczovL2dp
dGh1Yi5jb20vcmVtaW1hcmVuY28+YF9fLCBhbmQKKyAgYEBiZ3J1ZW5pbmcgPGh0dHBzOi8vZ2l0
aHViLmNvbS9iZ3J1ZW5pbmc+YF9fLikKKyAgYFB1bGwgUmVxdWVzdCA0MjFgXywgYFB1bGwgUmVx
dWVzdCA0MjJgXywgYFB1bGwgUmVxdWVzdCA0MjRgXywKKyAgYFB1bGwgUmVxdWVzdCA0MzNgXywg
YFB1bGwgUmVxdWVzdCA0NDlgXywgYFB1bGwgUmVxdWVzdCAzNTBgXywKKyAgYFB1bGwgUmVxdWVz
dCA0NTNgXywgYFB1bGwgUmVxdWVzdCAzOTRgXywgYFB1bGwgUmVxdWVzdCAyMDRgXworKiBOb3Nl
IHVwZGF0ZSB3aXRoIGBgLS1kZWJ1Z2BgIG9wdGlvbiBhZGRlZCB0byBgYHJ1bl90ZXN0cy5zaGBg
LiBgUHVsbCBSZXE9CnVlc3QgMTcyYF8KKyogTWVudGlvbiBgYC1pbnN0YWxsZWRgYCBvcHRpb24g
aW4gYGBydW5fdGVzdHMuc2hgYCBoZWxwLiBgUHVsbCBSZXF1ZXN0IDMyPQozYF8KKyogQWxsb3cg
Y29uZmlnIG9mIHNoZWQgdG9vbCBjb25maWd1cmF0aW9uIGZpbGUgdXNlZCB3aXRoIGBgcnVuX3Rl
c3RzLnNoCisgIC1pbnN0YWxsZWRgYC4gYFB1bGwgUmVxdWVzdCAyNjdgXworKiBBbGxvdyBydW5u
aW5nIHRlc3RzIGZyb20gb3V0ZXIgZGlyZWN0b3JpZXMgKFRoYW5rcyB0byBgQHlob29nc3RyYXRl
CisgIDxodHRwczovL2dpdGh1Yi5jb20veWhvb2dzdHJhdGU+YF9fLikgYFB1bGwgUmVxdWVzdCAx
MzdgXworKiBFbmhhbmNlbWVudCBhbGxvd2luZyB1c2Ugb2YgRFJNQUEgd2hlbiBHYWxheHkgaW5z
dGFuY2UgaXNuJ3Qgb24gYSBzaGFyZWQKKyAgdm9sdW1lIHdpdGggY29tcHV0ZSBub2Rlcy4gKFRo
YW5rcyB0byBgQHZhdnJ1c2EgPGh0dHBzOi8vZ2l0aHViLmNvbS92YXZyPQp1c2E+YF9fLik9MjAK
KyAgYFB1bGwgUmVxdWVzdCAxNjBgXworKiBFbmhhbmNlbWVudHMgZm9yIENvbmRvci49MjAKKyAg
KFRoYW5rcyB0byBgQGRwcnlhbjc5IDxodHRwczovL2dpdGh1Yi5jb20vZHByeWFuNzk+YF9fLikK
KyAgYFB1bGwgUmVxdWVzdCAyODlgXworKiBVcGRhdGUgYGBnc3VtbWFyeWBgIGRlcGVuZGVuY2ll
cy4gKFRoYW5rcyB0byBgQGJncnVlbmluZworICA8aHR0cHM6Ly9naXRodWIuY29tL2JncnVlbmlu
Zz5gX18uKSBgUHVsbCBSZXF1ZXN0IDE4MmBfCisqIFJlZmFjdG9yIHZpc3VhbGl6YXRpb24gcGx1
Z2lucyB0byBwcm9tb3RlIGltcGxlbWVudGF0aW9uIHRvIGEgY2xhc3MuCisgIGBQdWxsIFJlcXVl
c3QgMTg2YF8KKyogU3dpdGNoIHZpc3VhbGl6YXRpb25zIHJlZ2lzdHJ5IHRvIGVudHJ5X3BvaW50
IGNvbmZpZyBkZWZpbml0aW9uIGZvcj0yMAorICBidWlsdC1pbiB2aXN1YWxpemF0aW9ucy4gYFB1
bGwgUmVxdWVzdCAyNDNgXworKiBTZXQgZGVmYXVsdCB2YWx1ZSBmb3IgSUUgc2lnIHByb3h5IChU
aGFua3MgdG8gYEBlcmFzY2hlCisgIDxodHRwczovL2dpdGh1Yi5jb20vZXJhc2NoZT5gX18uKSBg
UHVsbCBSZXF1ZXN0IDE5N2BfCisqIE90aGVyIHNtYWxsZXIgaW50ZXJhY3RpdmUgZW52aXJvbm1l
bnQgdXBkYXRlcy4gKFRoYW5rcyB0bworICBgQGVyYXNjaGUgPGh0dHBzOi8vZ2l0aHViLmNvbS9l
cmFzY2hlPmBfXy4pCisgIGBQdWxsIFJlcXVlc3QgNDEyYF8KKyogUmVmdXNlIHRvIGxvYWQgaW50
ZXJhY3RpdmUgZGVidWdnaW5nIG1pZGRsZXdhcmUgdW5kZXIgdXdzZ2kuCisgIGBQdWxsIFJlcXVl
c3QgMjAwYF8KKyogTW92ZSBzdHlsZXNoZWV0IHNvdXJjZSBmaWxlcyBmcm9tIGBgc3RhdGljL3N0
eWxlL3NyY2BgIHRvCisgIGBgY2xpZW50L2dhbGF4eS9zdHlsZWBgLiBgUHVsbCBSZXF1ZXN0IDIw
OGBfCisqIEZpeCBzcHJpdGUgcGF0aHMgYnkgdXNpbmcgaGFyZGNvZGVkIHBhdGggaW4gdGFzay4g
YFB1bGwgUmVxdWVzdAorICAyNzlgXworKiBJbXByb3ZlIHZhcmlvdXMgZm9jdXMgaGFuZGxpbmcg
YmVoYXZpb3IgaW4gdGhlIFVJLiBgUHVsbCBSZXF1ZXN0IDI4MGBfCisqIEZpeGVzIGFuZCB1cGRh
dGVzIHRvIHZhcmlvdXMgSmF2YVNjcmlwdC1iYXNlZCB1bml0IHRlc3RzLiBgUHVsbCBSZXF1ZXN0
ID0KMjE5YF8KKyogVXBkYXRlIHZhcmlvdXMgY2xpZW50IGxpYnMgKGUuZy4galF1ZXJ5LCBSYXZl
biwgZDMsIHJlcXVpcmVqcykuCisgIGBQdWxsIFJlcXVlc3QgMjIxYF8sIGBQdWxsIFJlcXVlc3Qg
MjQxYF8KKyogSWdub3JlIHNhbXBsZSBmaWxlcyBmcm9tIHRvb2xzaGVkIGluc3RhbGxlZCB0b29s
cy4gKFRoYW5rcyB0byBgQFVub2RlCisgIDxodHRwczovL2dpdGh1Yi5jb20vVW5vZGU+YF9fLikg
YFB1bGwgUmVxdWVzdCAyNDhgXworKiBBZGQgdGVzdCBvcHRpb24gZm9yIGRpc2FibGluZyB0cnVu
Y2F0aW9uIG9mIHRlc3QgZGlmZnMuCisgIGBQdWxsIFJlcXVlc3QgMjQ5YF8KKyogVmFyaW91cyBk
b2N1bWVudGF0aW9uIGFuZCB3b3JkaW5nIGltcHJvdmVtZW50cyBmb3IgdmFyaW91cyBmaWxlcy4K
KyAgKFRoYW5rcyB0byBgQG5zb3JhbnpvIDxodHRwczovL2dpdGh1Yi5jb20vbnNvcmFuem8+YF9f
LikKKyAgYFB1bGwgUmVxdWVzdCAyNzdgXworKiBBbGxvdyBleHRlcm5hbCBkaXNwbGF5IGFwcGxp
Y2F0aW9ucyBvcHRpb25hbCBhY2Nlc3MgdG8gZmlsZXMgd2l0aGluIGEKKyAgZGF0YXNldCdzIGBg
ZXh0cmFfZmlsZXNfcGF0aGBgLiBgUHVsbCBSZXF1ZXN0IDI4NGBfCisqIEltcHJvdmUgdGhlIGRh
dGEgbWFuYWdlciBKU09OIGRhdGF0eXBlJ3MgY2xhc3MgdG8gYmUgbW9yZSBzcGVjaWZpYy4KKyAg
YFB1bGwgUmVxdWVzdCAyODVgXworKiBBbGxvdyBzZXR0aW5nIGNvbm5lY3Rpb24gb3B0aW9ucyBm
b3IgTERBUCBhdXRoZW50aWNhdGlvbi4gKFRoYW5rcyB0byBgQFU9Cm5vZGUKKyAgPGh0dHBzOi8v
Z2l0aHViLmNvbS9Vbm9kZT5gX18uKSBgUHVsbCBSZXF1ZXN0IDI4N2BfCisqIEZpeCBmb3IgZ3pp
cCBiZWluZyBpbXBvcnRlZCB0d2ljZS4gKFRoYW5rcyB0byBgQGJncnVlbmluZworICA8aHR0cHM6
Ly9naXRodWIuY29tL2JncnVlbmluZz5gX18uKSBgUHVsbCBSZXF1ZXN0IDI5NmBfCisqIEV4cG9y
dCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZnJvbSBhbGwgZGVwZW5kZW50IHJlcG9zaXRvcmllcy4K
KyAgKFRoYW5rcyB0byBgQGJncnVlbmluZyA8aHR0cHM6Ly9naXRodWIuY29tL2JncnVlbmluZz5g
X18uKSBgUHVsbCBSZXF1ZXN0PQogMjk3YF8KKyogSW1wcm92ZSBgYGF1dGhfY29uZi54bWwuc2Ft
cGxlYGAgZG9jdW1lbnRhdGlvbi4gKFRoYW5rcyB0byBgQG5zb3JhbnpvCisgIDxodHRwczovL2dp
dGh1Yi5jb20vbnNvcmFuem8+YF9fLikgYFB1bGwgUmVxdWVzdCAyOTlgXworKiBQcmVzZXJ2ZSB1
bml4IHBlcm1pc3Npb25zLCBpZiBhbnksIHdoZW4gZXh0cmFjdGluZyAuemlwIGZpbGVzIGR1cmlu
ZyB0b289Cmwgc2hlZAorICBpbnN0YWxsYXRpb25zLiBgUHVsbCBSZXF1ZXN0IDMwOGBfCisqIFVw
ZGF0ZSBtYWlsaW5nIGxpc3RzIHRvIHVzZSBsaXN0cy5nYWxheHlwcm9qZWN0Lm9yZyBhZGRyZXNz
ZXMuCisgIGBQdWxsIFJlcXVlc3QgMzE2YF8KKyogQWRkIG5ldyBhcmd1bWVudCB0byBpbmplY3Qg
dm9sdW1lcyBpbiBgYGRvY2tlcl9jbWQoKWBgIGFuZCBgYGxhdW5jaCgpYGAuCisgIChUaGFua3Mg
dG8gYEBiZ3J1ZW5pbmcgPGh0dHBzOi8vZ2l0aHViLmNvbS9iZ3J1ZW5pbmc+YF9fLikgYFB1bGwg
UmVxdWVzdD0KIDMxOGBfCisqIENyZWF0ZSBhIHNlcGFyYXRlIGFwcGxpY2F0aW9uIGVudHJ5IHBv
aW50IHRvIGJlIHVzZWQgYnkgdVdTR0kgd2l0aG91dCBgYD0KLS1pbmktCisgIHBhc3RlYGAgYW5k
IFBhc3RlRGVwbG95LiBgUHVsbCBSZXF1ZXN0IDMyNWBfCisqIEltcGxlbWVudCBncm91cHMgaW4g
VG9vbCBTaGVkIG1vZGVscyBhbmQgVUkuIGBQdWxsIFJlcXVlc3QgMzI2YF8sCisgIGBQdWxsIFJl
cXVlc3QgMzc0YF8KKyogSW1wcm92ZWQgZGF0YXR5cGUgcmVnaXN0cnkgZGVidWdnaW5nLiBgUHVs
bCBSZXF1ZXN0IDMyOWBfCisqIEFkZCBhcHAgb3B0aW9uIHRvIGNsaWVudCBwcm9jZXNzIHRvIGFs
bG93IGJ1aWxkaW5nIFRvb2wgU2hlZCBzY3JpcHRzLj0yMAorICBgUHVsbCBSZXF1ZXN0IDMzMmBf
CisqIEFkZCBncnVudCBjb21tYW5kIGBgZ3J1bnQgZGVjb21wcmVzc2BgIHRvIGNvcHkgZGVjb21w
cmVzc2VkIGFydGlmYWN0cy4KKyAgYFB1bGwgUmVxdWVzdCAxNzNgXworKiBJbXByb3ZlbWVudHMg
dG8gVG9vbCBTaGVkIHNlYXJjaCBBUEkuCisgIGBQdWxsIFJlcXVlc3QgMzM0YF8sIGBQdWxsIFJl
cXVlc3QgMzc2YF8sIGBQdWxsIFJlcXVlc3QgNDIwYF8sIGBQdWxsIFJlcT0KdWVzdCA1NjNgXwor
KiBSZXN0b3JlIGxpbmsgdG8gbWVyY3VyaWFsIGJyb3dzaW5nIG9mIHJlcG9zaXRvcmllcy4gYFB1
bGwgUmVxdWVzdCAzNDBgXworKiBFbmhhbmNlIHRvb2wgdGVzdGluZyB0byBvbmx5IGNsZWFudXAg
c3VjY2Vzc2Z1bCBqb2JzLiBgUHVsbCBSZXF1ZXN0IDM0MWBfCisqIEltcGxlbWVudCBtZXRhZGF0
YSBzaXplIGxpbWl0aW5nLiBgUHVsbCBSZXF1ZXN0IDM0NWBfLCBgUHVsbCBSZXF1ZXN0IDQxNj0K
YF8KKyogQWRkIHRvb2wgcGFyYW1ldGVyIGFyZ3VtZW50IHRvIHBhcmFtZXRlciBoZWxwLgorICBg
UHVsbCBSZXF1ZXN0IDM0NmBfLCBgUHVsbCBSZXF1ZXN0IDM1MWBfCisqIFJlZmFjdG9yIFRvb2wg
U2hlZCBKYXZhU2NyaXB0IGZpbGVzIHRvIGJlIHNlcGFyYXRlZCBmcm9tIEdhbGF4eSBKYXZhIFNj
cj0KaXB0CisgIGBQdWxsIFJlcXVlc3QgMzQ3YF8KKyogRml4ZWQgb2JqZWN0IHN0b3JlIHBhdGgg
LSBgYGpvYl93b3JrYGAuIChUaGFua3MgdG8gYEBjaGFyegorICA8aHR0cHM6Ly9naXRodWIuY29t
L2NoYXJ6PmBfXy4pIGBQdWxsIFJlcXVlc3QgMzU0YF8KKyogTWFrZSBkZWJ1Z2dpbmcgb3V0cHV0
IG5pY2VyIGZvciBJRSdzIChUaGFua3MgdG8gYEBiZ3J1ZW5pbmcKKyAgPGh0dHBzOi8vZ2l0aHVi
LmNvbS9iZ3J1ZW5pbmc+YF9fLikgYFB1bGwgUmVxdWVzdCAzNTVgXworKiBBZGQgY29uZmlndXJh
YmxlIERvY2tlciBob3N0bmFtZSAoVGhhbmtzIHRvIGBAYmdydWVuaW5nCisgIDxodHRwczovL2dp
dGh1Yi5jb20vYmdydWVuaW5nPmBfXy4pIGBQdWxsIFJlcXVlc3QgMzU2YF8KKyogSW1wcm92ZSBY
TUwgc3R5bGluZyBvZiBkaXNwbGF5IGFwcGxpY2F0aW9ucy49MjAKKyAgKFRoYW5rcyB0byBgQGVy
YXNjaGUgPGh0dHBzOi8vZ2l0aHViLmNvbS9lcmFzY2hlPmBfXy4pCisgIGBQdWxsIFJlcXVlc3Qg
MzY0YF8KKyogUkVBRE1FIGltcHJvdmVtZW50cyBpbmNsdWRpbmcgLSBhZGRpbmcgc2hpZWxkcyBm
b3IgQmlvc3RhciwgSVJDLCBhbmQgVHJhPQp2aXMuCisgIGBQdWxsIFJlcXVlc3QgMzY4YF8sIGBQ
dWxsIFJlcXVlc3QgMzY5YF8KKyogVXNlIHBhc3NlZCBpbiBVUkwgZm9yIGdldGJ1aWxkcyBtZXRo
b2Qgb2YgcGFyc2VfYnVpbGRzLnB5IChUaGFua3MgdG8KKyAgYEBkY3RydWQgPGh0dHBzOi8vZ2l0
aHViLmNvbS9kY3RydWQ+YF9fLikgYFB1bGwgUmVxdWVzdCAzODRgXworKiBBZGQgZXJyb3IgbWVz
c2FnZSBmb3IgYmFkIGRlcGVuZGVuY3kgZGVjbGFyYXRpb24gKFRoYW5rcyB0byBgQGtha3R1czQy
CisgIDxodHRwczovL2dpdGh1Yi5jb20va2FrdHVzNDI+YF9fLikgYFB1bGwgUmVxdWVzdCA0MTlg
XworKiBSZWZhY3RvciBKYXZhU2NyaXB0IHNldCB1cCBjb2RlIGZvciB0YWdnaW5nIHRvd2FyZCBy
ZXVzZS4gYFB1bGwgUmVxdWVzdCA9CjQyOWBfCisqIEltcHJvdmVkIG1kNXN1bS9zaGEyNTYgaW4g
VG9vbCBTaGVkIGFjdGlvbnMuIChUaGFua3MgdG8gYEB5aG9vZ3N0cmF0ZQorICA8aHR0cHM6Ly9n
aXRodWIuY29tL3lob29nc3RyYXRlPmBfXy4pIGBQdWxsIFJlcXVlc3QgNDQ0YF8KKyogSW5jbHVk
ZSBvd25lciBhbm5vdGF0aW9ucyBvZiBIREFzIGluIHB1Ymxpc2hlZCBoaXN0b3J5IGRpc3BsYXku
CisgIGBQdWxsIFJlcXVlc3QgNDkwYF8KKyogQWRkZWQgbG9nIGVycm9yIGZvciBjb25maWcgZmls
ZSBub3QgZm91bmQuIChUaGFua3MgdG8gYEBDaHJpc3RpYW4tQgorICA8aHR0cHM6Ly9naXRodWIu
Y29tL0NocmlzdGlhbi1CPmBfXy4pIGBQdWxsIFJlcXVlc3QgNDQzYF8KKyogRml4IGZvciBpbnN0
YWxsaW5nIGRlcGVuZGVuY2llcyBmcm9tIHNvdXJjZSB3aGVuIGRvd25sb2FkIG9mIHByZWNvbXBp
bGVkCisgIGJpbmFyaWVzIGhhcyBmYWlsZWQuIGBQdWxsIFJlcXVlc3QgNTMxYF8KKyogVXNlIGEg
cGFzc3dvcmQgZmllbGQgZm9yIGRlcHJlY2F0ZWQgY2xvdWRsYXVuY2gncyBzZWNyZXQga2V5IGZp
ZWxkLgorICBgUHVsbCBSZXF1ZXN0IDU1MWBfCisqIE5vcm1hbGl6ZSBgYGRhdGF0eXBlc19ieV9l
eHRgYCB1cG9uIGVudHJ5LiBgUHVsbCBSZXF1ZXN0IDU2N2BfCisqIFN0b3AgY3JlYXRpbmcgdW5u
ZWVkZWQgYGBkYXRhYmFzZS9tZXNzYWdlLm1ha28ucHlgYC4gYFB1bGwgUmVxdWVzdCA1NzVgXwor
CisKK0ZpeGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGZpeGVzCisK
KyogRHVyaW5nIHRoZSAxNS4wNyBkZXZlbG9wbWVudCBjeWNsZSBkb3plbnMgb2YgZml4ZXMgd2Vy
ZSBwdXNoZWQgdG8gdGhlCisgIGBgcmVsZWFzZV8xNS4wNWBgIGJyYW5jaCBvZiBHYWxheHkuIFRo
ZXNlIGFyZSBhbGwgaW5jbHVkZWQgaW4gMTUuMDcgYW5kCisgIHN1bW1hcml6ZWQgYGhlcmUKKyAg
PGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9jb21wYXJlL3YxNS4wNS4u
LnJlbGVhc2VfMTUuMDU+PQpgX18KKyAgKHdpdGggc3BlY2lhbCB0aGFua3MgdG8gYEBiZ3J1ZW5p
bmcgPGh0dHBzOi8vZ2l0aHViLmNvbS9iZ3J1ZW5pbmc+YF9fLAorICBgQG12ZGJlZWsgPGh0dHBz
Oi8vZ2l0aHViLmNvbS9tdmRiZWVrPmBfXywKKyAgYEBuc29yYW56byA8aHR0cHM6Ly9naXRodWIu
Y29tL25zb3JhbnpvPmBfXywKKyAgYW5kIGBAYWJyZXRhdWQgPGh0dHBzOi8vZ2l0aHViLmNvbS9h
YnJldGF1ZD5gX18pLgorKiBTdG9wIFRyYWNrc3RlciBsb2NhdGlvbiB3cmFwcGluZyBpbiBDaHJv
bWUuIChUaGFua3MgdG8gYEBkY3RydWQKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9kY3RydWQ+YF9f
LikgYFB1bGwgUmVxdWVzdCA0NDBgXworKiBGaXggcmV0dXJuIGludGVnZXIgdmFsdWVzIHdoZW4g
J3JvdW5kIHRvIG5lYXJlc3QgaW50ZWdlcicgaXMgc2VsZWN0ZWQgaW4KKyAgR3JvdXAgdG9vbC4g
YFB1bGwgUmVxdWVzdCA0NTJgXworKiBGaXggZXh0ZXJuYWwgc2V0X21ldGEgdW5kZXIgc3FsYWxj
aGVteSAxLjAuMC4gYFB1bGwgUmVxdWVzdCAxNTBgXworKiBGaXggYGBiYXNlLnV0aWxgYCB0byBn
ZXQgdGhlIGNoYW5nZXNldCBmcm9tIGdpdC4gYFB1bGwgUmVxdWVzdCAxNjFgXworKiBSZW1vdmUg
YGBiaW9tYXJ0X3Rlc3RgYCB0b29sLCBodHRwOi8vdGVzdC5iaW9tYXJ0Lm9yZy8gaXMgZG93bi4g
KFRoYW5rcyA9CnRvCisgIGBAbnNvcmFuem8gPGh0dHBzOi8vZ2l0aHViLmNvbS9uc29yYW56bz5g
X18uKSBgUHVsbCBSZXF1ZXN0IDE4M2BfCisqIEZpeCBicm9rZW4gYnJvd3NlciB0ZXN0cy4gYFB1
bGwgUmVxdWVzdCAyMDJgXworKiBGaXggYXNzZXJ0aW9ucyBpbiBgYHRlc3RfVmlzdWFsaXphdGlv
bnNSZWdpc3RyeS5weWBgLiBgUHVsbCBSZXF1ZXN0IDIyM2BfCisqIEZpeCBgYHJ1bl90ZXN0cy5z
aGBgIGV4aXQgY29kZS4gYFB1bGwgUmVxdWVzdCAyMjVgXworKiBVc2UgYGB1bml0dGVzdDJgYCB0
byBhbGxvdyBQeXRob24gMi43IGFzc2VydGlvbnMgdW5kZXIgUHl0aG9uIDIuNi4KKyAgYFB1bGwg
UmVxdWVzdCAyNDZgXworKiBIYXZlIGBgdHJhbnMudXNlcl9mdHBfZGlyYGAgcmV0dXJuIGBgTm9u
ZWBgIGluc3RlYWQgb2YgZXJyb3IgaWYgdXBsb2FkIGQ9CmlyIHVuc2V0LgorICBgUHVsbCBSZXF1
ZXN0IDI1N2BfCisqIEFsbG93IElHViBleHRlcm5hbCBkaXNwbGF5cyB0byB1c2UgYSBuYW1lIHdp
dGggYSBjb21tYSBpbiBpdC4gYFB1bGwgUmVxdT0KZXN0IDI2MWBfCisqIEZpeCBidWcgaW4gaGlz
dG9yeSBzaGFyaW5nLiAoVGhhbmtzIHRvIGBAYmdydWVuaW5nCisgIDxodHRwczovL2dpdGh1Yi5j
b20vYmdydWVuaW5nPmBfXy4pIGBQdWxsIFJlcXVlc3QgMjYzYF8KKyogQ29udmVydCB0b29scyBk
aXJlY3RvcnkgdG8gb25seSB1c2UgdW5peCBuZXdsaW5lIGNoYXJhY3RlcnMuCisgIChUaGFua3Mg
dG8gYEBuc29yYW56byA8aHR0cHM6Ly9naXRodWIuY29tL25zb3JhbnpvPmBfXy4pIGBQdWxsIFJl
cXVlc3QgMj0KNjRgXworKiBSZW1vdmUgc3B1cmlvdXMgbnVtcHkgcmVxdWlyZW1lbnQgb24gYGBt
YWZfc3RhdHMueG1sYGAgdG9vbC4KKyAgKFRoYW5rcyB0byBgQG5zb3JhbnpvIDxodHRwczovL2dp
dGh1Yi5jb20vbnNvcmFuem8+YF9fLikgYFB1bGwgUmVxdWVzdCAyPQo2NGBfCisqIFVzZSBtb3Jl
IGFjdGlvbmFibGUgYGBwYWNrYWdlYGAgcmVxdWlyZW1lbnQgdHlwZSBvbiBzb21lIHRvb2xzLgor
ICAoVGhhbmtzIHRvIGBAbnNvcmFuem8gPGh0dHBzOi8vZ2l0aHViLmNvbS9uc29yYW56bz5gX18u
KSBgUHVsbCBSZXF1ZXN0IDI9CjY0YF8KKyogU21hbGwgZG9jIGZpeCBmb3IgYGBjb25maWcvcGx1
Z2lucy92aXN1YWxpemF0aW9ucy9SRUFETUUudHh0YGAuCisgIChUaGFua3MgdG8gYEBuc29yYW56
byA8aHR0cHM6Ly9naXRodWIuY29tL25zb3JhbnpvPmBfXy4pIGBQdWxsIFJlcXVlc3QgMj0KNjRg
XworKiBGaXggZnVuY3Rpb24gbmFtZXMgZm9yIGR5bmFtaWMgdG9vbCB0ZXN0IGZ1bmN0aW9ucy4g
YFB1bGwgUmVxdWVzdCAyNjZgXworKiBGaXhlcyB0byBkYXRhc2V0IGNob29zZXIuIGBQdWxsIFJl
cXVlc3QgMjcyYF8KKyogRml4IFRyYWNrc3RlciBsb2FkIG9yZGVyIG9mIHJlcXVpcmUgYW5kIGQz
LiBgUHVsbCBSZXF1ZXN0IDI5MWBfCisqIFJlbW92ZSBiYWQgSFRNTCB0YWdzIGZyb20gbG9naW4g
dGVtcGxhdGUuIChUaGFua3MgdG8gYEBVbm9kZQorICA8aHR0cHM6Ly9naXRodWIuY29tL1Vub2Rl
PmBfXy4pIGBQdWxsIFJlcXVlc3QgMjk0YF8KKyogRXhjbHVkZSBjdXJseSBicmFjZXMgZnJvbSBB
UEkta2V5IHRvIGZpeCB0b29sc2hlZCBib290c3RyYXBwaW5nLiAoVGhhbmtzPQogdG8KKyAgYEBt
dmRiZWVrIDxodHRwczovL2dpdGh1Yi5jb20vbXZkYmVlaz5gX18uKSBgUHVsbCBSZXF1ZXN0IDMw
MWBfCisqIEZpeCByZXBlYXRlZCBlcnJvciBtZXNzYWdlcyB3aXRoIGlkZW50aWNhbCB0ZXh0LiBg
UHVsbCBSZXF1ZXN0IDMwNmBfCisqIEZpeCBzaGFyZWQgbWFrbyB0ZW1wbGF0ZXMgdGhhdCB3b3Vs
ZCBub3Qgd29yayBwcm9wZXJseSB3aXRoIHRoZSBUb29sIFNoZT0KZC4KKyAgYFB1bGwgUmVxdWVz
dCAzMDdgXworKiBGaXgganNvbiBzbmlmZmVyIGZvciBsYXJnZSBmaWxlcy4gYFB1bGwgUmVxdWVz
dCAzMDlgXworKiBGaXggYSB0eXBvIGVycm9yIGluIGBgdmlzdWFsaXphdGlvbi9wbHVnaW5zL3Jl
c291cmNlX3BhcnNlci5weWBgLiAoVGhhbms9CnMgdG8KKyAgYEByZW1pbWFyZW5jbyA8aHR0cHM6
Ly9naXRodWIuY29tL3JlbWltYXJlbmNvPmBfXy4pIGBQdWxsIFJlcXVlc3QgMzEyYF8KKyogRml4
IGZvciBnZW5lcmF0aW5nIG1ldGFkYXRhIG9uIHRvb2xzaGVkIHRvb2xzIHRlc3RzLCB1bmRlciBj
ZXJ0YWluCisgIGNvbmRpdGlvbnMuIGBQdWxsIFJlcXVlc3QgMzE5YF8KKyogRml4IFRvb2wgU2hl
ZCBtZXRhZGF0YSBnZW5lcmF0aW9uIGJ1Zy4gKFRoYW5rcyB0byBgQGJncnVlbmluZworICA8aHR0
cHM6Ly9naXRodWIuY29tL2JncnVlbmluZz5gX18uKSBgUHVsbCBSZXF1ZXN0IDMzM2BfCisqIEZp
eGluZyBzdHJpbmcgYXBwZW5kaW5nIGVycm9yIGluIGxpYnJhcnkgZGljdGlmaWNhdGlvbi4gKFRo
YW5rcyB0byBgQGtlbD0KbHJvdHQKKyAgPGh0dHBzOi8vZ2l0aHViLmNvbS9rZWxscm90dD5gX18u
KSBgUHVsbCBSZXF1ZXN0IDMzNmBfCisqIEhpZGUgY29uc3RhbnRseSBicm9rZW4gVG9vbCBTaGVk
IHRlc3QgcmVzdWx0cy4gYFB1bGwgUmVxdWVzdCAzMzdgXworKiBGaXggZm9yIGZpeCBmb3IgaGFu
ZGxpbmcgb2YgdW5peCBwZXJtaXNzaW9ucyBpbiAuemlwIGZpbGVzLiBgUHVsbCBSZXF1ZXN0Cisg
IDM0NGBfCisqIEZpeCBjb21tb24gQVBJIHNjcmlwdHMgc28gdGhleSBkb24ndCBmYWlsIHdoZW4g
cmVzcG9uc2UgaGFzIG5vIFVSTCBwYXJhbS4KKyAgYFB1bGwgUmVxdWVzdCAzNTJgXworKiBGaXgg
Zm9yIGR5bmFtaWMgdGVzdCBkYXRhIGZldGNoaW5nLiBgUHVsbCBSZXF1ZXN0IDM3MWBfCisqIEZp
eCBidWcgaW4gYGBUZXh0LnNwbGl0KClgYCBtZXRob2QuIChUaGFua3MgdG8gYEBuc29yYW56bwor
ICA8aHR0cHM6Ly9naXRodWIuY29tL25zb3JhbnpvPmBfXy4pIGBQdWxsIFJlcXVlc3QgMzczYF8K
KyogRml4IGFuZCB1cGRhdGUgc2VyaWFsaXplciBjYWxsIHRvIG5vbi1gYHRyYW5zYGAgZm9ybSBm
b3IgaGlzdG9yaWVzLgorICBgUHVsbCBSZXF1ZXN0IDM5MGBfCisqIEZpeCBnZXR0aW5nIGFkbWlu
IGtleSB3aGVuIGJvb3RzdHJhcHBpbmcgdG9vbHNoZWQuIChUaGFua3MgdG8KKyAgYEBnYWxheHlw
cm9qZWN0IDxodHRwczovL2dpdGh1Yi5jb20vZ2FsYXh5cHJvamVjdD5gX18uKSBgUHVsbCBSZXF1
ZXN0IDM5PQoyYF8KKyogRml4IGVycm9yIHdoZW4gZGlzcGxheWluZyBqb2IgcGFyYW1zIGZvciB0
b29scyBjb250YWluaW5nIGEgc2VjdGlvbi4KKyAgKFRoYW5rcyB0byBgQGFicmV0YXVkIDxodHRw
czovL2dpdGh1Yi5jb20vYWJyZXRhdWQ+YF9fLikgYFB1bGwgUmVxdWVzdCAzPQo5OGBfCisqIEZp
eCBmb3Igc2V0dGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZSBwYXRocyBmb3IgaW5zdGFsbGVkIHRv
b2xzLiAoVGhhbmtzID0KdG8KKyAgYEBncmVndm9ua3VzdGVyIDxodHRwczovL2dpdGh1Yi5jb20v
Z3JlZ3Zvbmt1c3Rlcj5gX18uKSBgUHVsbCBSZXF1ZXN0IDQwPQozYF8KKyogUXVvdGEgY2FsY3Vs
YXRpb24gZml4ZXMgZm9yIG1hbmFnZXJzLiBgUHVsbCBSZXF1ZXN0IDQwNmBfCisqIEZpeCBwYWdp
bmcgaXNzdWUgd2l0aCB3aG9vc2ggZHVlIHRvIG1pc3NpbmcgYGBzdHJgYCB0byBgYGludGBgIGNv
bnZlcnNpbz0Kbi4KKyAgYFB1bGwgUmVxdWVzdCA0MDdgXworKiBVc2UgYGB3ZWIudXJsX2Zvcigg
Jy8nLCBxdWFsaWZpZWQ9M0RUcnVlIClgYCBpbnN0ZWFkIG9mIGBgJy8nYGAgdG8gZ2VuZXI9CmF0
ZQorICBVUkxzIChmb3IgY29ycmVjdG5lc3MpLiAoVGhhbmtzIHRvIGBAbXZkYmVlayA8aHR0cHM6
Ly9naXRodWIuY29tL212ZGJlZWs9Cj5gX18uKQorICBgUHVsbCBSZXF1ZXN0IDQxNGBfCisqIEZp
eCBmb3IgYXN5bmMgZGF0YXNvdXJjZXMuIGBQdWxsIFJlcXVlc3QgNDIzYF8KKyogRml4IFVJIGJ1
ZyByZWxhdGVkIHRvIElEIGNvbGxpc2lvbnMgZm9yIGRpc3BsYXkgb2YgY2VydGFpbiBjb2xsZWN0
aW9ucy4KKyAgYFB1bGwgUmVxdWVzdCA0MzFgXworKiBGaXggYGBydW5fdGVzdHMuc2hgYCBleGFt
cGxlIEFQSSB0ZXN0IGNvbW1hbmQuIGBQdWxsIFJlcXVlc3QgNDMyYF8KKyogRml4ZWQgdHlwbyBp
biBUb29sIFNoZWQgZG9jc3RyaW5nLiAoVGhhbmtzIHRvIGBAcGV0ZXJqYworICA8aHR0cHM6Ly9n
aXRodWIuY29tL3BldGVyamM+YF9fLikgYFB1bGwgUmVxdWVzdCA0MzhgXworKiBWYXJpb3VzIFRy
YWNrc3RlciBmaXhlcy4gYFB1bGwgUmVxdWVzdCA0NDZgXworKiBGaXggam9iIHF1ZXJ5IHRvIGFs
bG93IGFkbWlucyB0byB2aWV3IG90aGVyIGhpc3Rvcmllcy4gYFB1bGwgUmVxdWVzdCA0NjU9CmBf
CisqIEZpeCBgYGRia2V5YGAgZmlsdGVyaW5nIG9mIG11bHRpcGxlIGlucHV0IHRhcmdldHMuIGBQ
dWxsIFJlcXVlc3QgNTM0YF8KKyogRml4ZXMgZm9yIGBgRGVsZXRlSW50ZXJtZWRpYXRlc0FjdGlv
bmBgLiBgUHVsbCBSZXF1ZXN0IDU0N2BfCisqIEZpeCBvdmVycmlkaW5nIHRoZSBuYW1lIHZhcmlh
YmxlIGluIFRvb2wgU2hlZCBpbmRleCBjb2RlLiBgUHVsbCBSZXF1ZXN0ID0KNTY2YF8KKyogRml4
IGJhdGNoIG1vZGUgaW5wdXQgaW4gbmV3IHRvb2wgZm9ybSBVSS4gKFRoYW5rcyB0byBgQGVyaWNl
bm5zCisgIDxodHRwczovL2dpdGh1Yi5jb20vZXJpY2VubnM+YF9fLikgYFB1bGwgUmVxdWVzdCA1
NjhgXworKiBDU1YvU0FNIHNuaWZmIG9yZGVyIGZpeC4gYFB1bGwgUmVxdWVzdCA1NzFgXworKiBT
aG93IGZpZWxkIGZvciBlbnRlcmluZyByZW1vdGUvaG9tZSB1cmwgd2hlbiBtYW5hZ2luZyBhIFRv
b2wgU2hlZCByZXBvc2k9CnRvcnkuCisgIGBQdWxsIFJlcXVlc3QgNTgwYF8KKyogRml4IHJlZ2Vu
ZXJhdGluZyByZXBvc2l0b3J5IG1ldGFkYXRhIHdoZW4gY29taW5nIGZyb20gYmF0Y2ggaW50ZXJm
YWNlLgorICBgUHVsbCBSZXF1ZXN0IDYwMGBfCisKKworLi4gZ2l0aHViX2xpbmtzCisuLiBfUHVs
bCBSZXF1ZXN0IDgwOiBodHRwczovL2dpdGh1Yi5jb20vZ2FsYXh5cHJvamVjdC9nYWxheHkvcHVs
bC84MAorLi4gX1B1bGwgUmVxdWVzdCAxMzI6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9q
ZWN0L2dhbGF4eS9wdWxsLzEzMgorLi4gX1B1bGwgUmVxdWVzdCAxMzc6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzEzNworLi4gX1B1bGwgUmVxdWVzdCAxNDg6
IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzE0OAorLi4gX1B1
bGwgUmVxdWVzdCAxNDk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9w
dWxsLzE0OQorLi4gX1B1bGwgUmVxdWVzdCAxNTA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlw
cm9qZWN0L2dhbGF4eS9wdWxsLzE1MAorLi4gX1B1bGwgUmVxdWVzdCAxNTE6IGh0dHBzOi8vZ2l0
aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzE1MQorLi4gX1B1bGwgUmVxdWVzdCAx
NTk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzE1OQorLi4g
X1B1bGwgUmVxdWVzdCAxNjA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4
eS9wdWxsLzE2MAorLi4gX1B1bGwgUmVxdWVzdCAxNjE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxh
eHlwcm9qZWN0L2dhbGF4eS9wdWxsLzE2MQorLi4gX1B1bGwgUmVxdWVzdCAxNjM6IGh0dHBzOi8v
Z2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzE2MworLi4gX1B1bGwgUmVxdWVz
dCAxNzI6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzE3Mgor
Li4gX1B1bGwgUmVxdWVzdCAxNzM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dh
bGF4eS9wdWxsLzE3MworLi4gX1B1bGwgUmVxdWVzdCAxODE6IGh0dHBzOi8vZ2l0aHViLmNvbS9n
YWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzE4MQorLi4gX1B1bGwgUmVxdWVzdCAxODI6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzE4MgorLi4gX1B1bGwgUmVx
dWVzdCAxODM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzE4
MworLi4gX1B1bGwgUmVxdWVzdCAxODY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0
L2dhbGF4eS9wdWxsLzE4NgorLi4gX1B1bGwgUmVxdWVzdCAxOTA6IGh0dHBzOi8vZ2l0aHViLmNv
bS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzE5MAorLi4gX1B1bGwgUmVxdWVzdCAxOTE6IGh0
dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzE5MQorLi4gX1B1bGwg
UmVxdWVzdCAxOTc6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxs
LzE5NworLi4gX1B1bGwgUmVxdWVzdCAyMDA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9q
ZWN0L2dhbGF4eS9wdWxsLzIwMAorLi4gX1B1bGwgUmVxdWVzdCAyMDI6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzIwMgorLi4gX1B1bGwgUmVxdWVzdCAyMDQ6
IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzIwNAorLi4gX1B1
bGwgUmVxdWVzdCAyMDg6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9w
dWxsLzIwOAorLi4gX1B1bGwgUmVxdWVzdCAyMTg6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlw
cm9qZWN0L2dhbGF4eS9wdWxsLzIxOAorLi4gX1B1bGwgUmVxdWVzdCAyMTk6IGh0dHBzOi8vZ2l0
aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzIxOQorLi4gX1B1bGwgUmVxdWVzdCAy
MjE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzIyMQorLi4g
X1B1bGwgUmVxdWVzdCAyMjM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4
eS9wdWxsLzIyMworLi4gX1B1bGwgUmVxdWVzdCAyMjU6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxh
eHlwcm9qZWN0L2dhbGF4eS9wdWxsLzIyNQorLi4gX1B1bGwgUmVxdWVzdCAyMjk6IGh0dHBzOi8v
Z2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzIyOQorLi4gX1B1bGwgUmVxdWVz
dCAyMzA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzIzMAor
Li4gX1B1bGwgUmVxdWVzdCAyMzM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dh
bGF4eS9wdWxsLzIzMworLi4gX1B1bGwgUmVxdWVzdCAyMzk6IGh0dHBzOi8vZ2l0aHViLmNvbS9n
YWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzIzOQorLi4gX1B1bGwgUmVxdWVzdCAyNDA6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI0MAorLi4gX1B1bGwgUmVx
dWVzdCAyNDE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI0
MQorLi4gX1B1bGwgUmVxdWVzdCAyNDM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0
L2dhbGF4eS9wdWxsLzI0MworLi4gX1B1bGwgUmVxdWVzdCAyNDY6IGh0dHBzOi8vZ2l0aHViLmNv
bS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI0NgorLi4gX1B1bGwgUmVxdWVzdCAyNDg6IGh0
dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI0OAorLi4gX1B1bGwg
UmVxdWVzdCAyNDk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxs
LzI0OQorLi4gX1B1bGwgUmVxdWVzdCAyNTA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9q
ZWN0L2dhbGF4eS9wdWxsLzI1MAorLi4gX1B1bGwgUmVxdWVzdCAyNTc6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI1NworLi4gX1B1bGwgUmVxdWVzdCAyNTk6
IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI1OQorLi4gX1B1
bGwgUmVxdWVzdCAyNjE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9w
dWxsLzI2MQorLi4gX1B1bGwgUmVxdWVzdCAyNjM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlw
cm9qZWN0L2dhbGF4eS9wdWxsLzI2MworLi4gX1B1bGwgUmVxdWVzdCAyNjQ6IGh0dHBzOi8vZ2l0
aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI2NAorLi4gX1B1bGwgUmVxdWVzdCAy
NjY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI2NgorLi4g
X1B1bGwgUmVxdWVzdCAyNjc6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4
eS9wdWxsLzI2NworLi4gX1B1bGwgUmVxdWVzdCAyNjg6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxh
eHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI2OAorLi4gX1B1bGwgUmVxdWVzdCAyNjk6IGh0dHBzOi8v
Z2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI2OQorLi4gX1B1bGwgUmVxdWVz
dCAyNzA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI3MAor
Li4gX1B1bGwgUmVxdWVzdCAyNzI6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dh
bGF4eS9wdWxsLzI3MgorLi4gX1B1bGwgUmVxdWVzdCAyNzQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9n
YWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI3NAorLi4gX1B1bGwgUmVxdWVzdCAyNzc6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI3NworLi4gX1B1bGwgUmVx
dWVzdCAyNzk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI3
OQorLi4gX1B1bGwgUmVxdWVzdCAyODA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0
L2dhbGF4eS9wdWxsLzI4MAorLi4gX1B1bGwgUmVxdWVzdCAyODQ6IGh0dHBzOi8vZ2l0aHViLmNv
bS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI4NAorLi4gX1B1bGwgUmVxdWVzdCAyODU6IGh0
dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI4NQorLi4gX1B1bGwg
UmVxdWVzdCAyODY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxs
LzI4NgorLi4gX1B1bGwgUmVxdWVzdCAyODc6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9q
ZWN0L2dhbGF4eS9wdWxsLzI4NworLi4gX1B1bGwgUmVxdWVzdCAyODk6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI4OQorLi4gX1B1bGwgUmVxdWVzdCAyOTA6
IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI5MAorLi4gX1B1
bGwgUmVxdWVzdCAyOTE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9w
dWxsLzI5MQorLi4gX1B1bGwgUmVxdWVzdCAyOTQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlw
cm9qZWN0L2dhbGF4eS9wdWxsLzI5NAorLi4gX1B1bGwgUmVxdWVzdCAyOTU6IGh0dHBzOi8vZ2l0
aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI5NQorLi4gX1B1bGwgUmVxdWVzdCAy
OTY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI5NgorLi4g
X1B1bGwgUmVxdWVzdCAyOTc6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4
eS9wdWxsLzI5NworLi4gX1B1bGwgUmVxdWVzdCAyOTk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxh
eHlwcm9qZWN0L2dhbGF4eS9wdWxsLzI5OQorLi4gX1B1bGwgUmVxdWVzdCAzMDE6IGh0dHBzOi8v
Z2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMwMQorLi4gX1B1bGwgUmVxdWVz
dCAzMDI6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMwMgor
Li4gX1B1bGwgUmVxdWVzdCAzMDM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dh
bGF4eS9wdWxsLzMwMworLi4gX1B1bGwgUmVxdWVzdCAzMDY6IGh0dHBzOi8vZ2l0aHViLmNvbS9n
YWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMwNgorLi4gX1B1bGwgUmVxdWVzdCAzMDc6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMwNworLi4gX1B1bGwgUmVx
dWVzdCAzMDg6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMw
OAorLi4gX1B1bGwgUmVxdWVzdCAzMDk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0
L2dhbGF4eS9wdWxsLzMwOQorLi4gX1B1bGwgUmVxdWVzdCAzMTE6IGh0dHBzOi8vZ2l0aHViLmNv
bS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMxMQorLi4gX1B1bGwgUmVxdWVzdCAzMTI6IGh0
dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMxMgorLi4gX1B1bGwg
UmVxdWVzdCAzMTQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxs
LzMxNAorLi4gX1B1bGwgUmVxdWVzdCAzMTY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9q
ZWN0L2dhbGF4eS9wdWxsLzMxNgorLi4gX1B1bGwgUmVxdWVzdCAzMTg6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMxOAorLi4gX1B1bGwgUmVxdWVzdCAzMTk6
IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMxOQorLi4gX1B1
bGwgUmVxdWVzdCAzMjI6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9w
dWxsLzMyMgorLi4gX1B1bGwgUmVxdWVzdCAzMjM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlw
cm9qZWN0L2dhbGF4eS9wdWxsLzMyMworLi4gX1B1bGwgUmVxdWVzdCAzMjU6IGh0dHBzOi8vZ2l0
aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMyNQorLi4gX1B1bGwgUmVxdWVzdCAz
MjY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMyNgorLi4g
X1B1bGwgUmVxdWVzdCAzMjg6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4
eS9wdWxsLzMyOAorLi4gX1B1bGwgUmVxdWVzdCAzMjk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxh
eHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMyOQorLi4gX1B1bGwgUmVxdWVzdCAzMzA6IGh0dHBzOi8v
Z2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMzMAorLi4gX1B1bGwgUmVxdWVz
dCAzMzI6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMzMgor
Li4gX1B1bGwgUmVxdWVzdCAzMzM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dh
bGF4eS9wdWxsLzMzMworLi4gX1B1bGwgUmVxdWVzdCAzMzQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9n
YWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMzNAorLi4gX1B1bGwgUmVxdWVzdCAzMzU6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMzNQorLi4gX1B1bGwgUmVx
dWVzdCAzMzY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMz
NgorLi4gX1B1bGwgUmVxdWVzdCAzMzc6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0
L2dhbGF4eS9wdWxsLzMzNworLi4gX1B1bGwgUmVxdWVzdCAzMzg6IGh0dHBzOi8vZ2l0aHViLmNv
bS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMzOAorLi4gX1B1bGwgUmVxdWVzdCAzMzk6IGh0
dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzMzOQorLi4gX1B1bGwg
UmVxdWVzdCAzNDA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxs
LzM0MAorLi4gX1B1bGwgUmVxdWVzdCAzNDE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9q
ZWN0L2dhbGF4eS9wdWxsLzM0MQorLi4gX1B1bGwgUmVxdWVzdCAzNDI6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM0MgorLi4gX1B1bGwgUmVxdWVzdCAzNDQ6
IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM0NAorLi4gX1B1
bGwgUmVxdWVzdCAzNDU6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9w
dWxsLzM0NQorLi4gX1B1bGwgUmVxdWVzdCAzNDY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlw
cm9qZWN0L2dhbGF4eS9wdWxsLzM0NgorLi4gX1B1bGwgUmVxdWVzdCAzNDc6IGh0dHBzOi8vZ2l0
aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM0NworLi4gX1B1bGwgUmVxdWVzdCAz
NDk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM0OQorLi4g
X1B1bGwgUmVxdWVzdCAzNTA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4
eS9wdWxsLzM1MAorLi4gX1B1bGwgUmVxdWVzdCAzNTE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxh
eHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM1MQorLi4gX1B1bGwgUmVxdWVzdCAzNTI6IGh0dHBzOi8v
Z2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM1MgorLi4gX1B1bGwgUmVxdWVz
dCAzNTQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM1NAor
Li4gX1B1bGwgUmVxdWVzdCAzNTU6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dh
bGF4eS9wdWxsLzM1NQorLi4gX1B1bGwgUmVxdWVzdCAzNTY6IGh0dHBzOi8vZ2l0aHViLmNvbS9n
YWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM1NgorLi4gX1B1bGwgUmVxdWVzdCAzNjI6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM2MgorLi4gX1B1bGwgUmVx
dWVzdCAzNjQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM2
NAorLi4gX1B1bGwgUmVxdWVzdCAzNjY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0
L2dhbGF4eS9wdWxsLzM2NgorLi4gX1B1bGwgUmVxdWVzdCAzNjg6IGh0dHBzOi8vZ2l0aHViLmNv
bS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM2OAorLi4gX1B1bGwgUmVxdWVzdCAzNjk6IGh0
dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM2OQorLi4gX1B1bGwg
UmVxdWVzdCAzNzA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxs
LzM3MAorLi4gX1B1bGwgUmVxdWVzdCAzNzE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9q
ZWN0L2dhbGF4eS9wdWxsLzM3MQorLi4gX1B1bGwgUmVxdWVzdCAzNzM6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM3MworLi4gX1B1bGwgUmVxdWVzdCAzNzQ6
IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM3NAorLi4gX1B1
bGwgUmVxdWVzdCAzNzY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9w
dWxsLzM3NgorLi4gX1B1bGwgUmVxdWVzdCAzODE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlw
cm9qZWN0L2dhbGF4eS9wdWxsLzM4MQorLi4gX1B1bGwgUmVxdWVzdCAzODM6IGh0dHBzOi8vZ2l0
aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM4MworLi4gX1B1bGwgUmVxdWVzdCAz
ODQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM4NAorLi4g
X1B1bGwgUmVxdWVzdCAzODY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4
eS9wdWxsLzM4NgorLi4gX1B1bGwgUmVxdWVzdCAzODk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxh
eHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM4OQorLi4gX1B1bGwgUmVxdWVzdCAzOTA6IGh0dHBzOi8v
Z2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM5MAorLi4gX1B1bGwgUmVxdWVz
dCAzOTI6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM5Mgor
Li4gX1B1bGwgUmVxdWVzdCAzOTQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dh
bGF4eS9wdWxsLzM5NAorLi4gX1B1bGwgUmVxdWVzdCAzOTU6IGh0dHBzOi8vZ2l0aHViLmNvbS9n
YWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM5NQorLi4gX1B1bGwgUmVxdWVzdCAzOTc6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM5NworLi4gX1B1bGwgUmVx
dWVzdCAzOTg6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzM5
OAorLi4gX1B1bGwgUmVxdWVzdCAzOTk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0
L2dhbGF4eS9wdWxsLzM5OQorLi4gX1B1bGwgUmVxdWVzdCA0MDI6IGh0dHBzOi8vZ2l0aHViLmNv
bS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQwMgorLi4gX1B1bGwgUmVxdWVzdCA0MDM6IGh0
dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQwMworLi4gX1B1bGwg
UmVxdWVzdCA0MDU6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxs
LzQwNQorLi4gX1B1bGwgUmVxdWVzdCA0MDY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9q
ZWN0L2dhbGF4eS9wdWxsLzQwNgorLi4gX1B1bGwgUmVxdWVzdCA0MDc6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQwNworLi4gX1B1bGwgUmVxdWVzdCA0MTA6
IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQxMAorLi4gX1B1
bGwgUmVxdWVzdCA0MTI6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9w
dWxsLzQxMgorLi4gX1B1bGwgUmVxdWVzdCA0MTQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlw
cm9qZWN0L2dhbGF4eS9wdWxsLzQxNAorLi4gX1B1bGwgUmVxdWVzdCA0MTY6IGh0dHBzOi8vZ2l0
aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQxNgorLi4gX1B1bGwgUmVxdWVzdCA0
MTk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQxOQorLi4g
X1B1bGwgUmVxdWVzdCA0MjA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4
eS9wdWxsLzQyMAorLi4gX1B1bGwgUmVxdWVzdCA0MjE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxh
eHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQyMQorLi4gX1B1bGwgUmVxdWVzdCA0MjI6IGh0dHBzOi8v
Z2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQyMgorLi4gX1B1bGwgUmVxdWVz
dCA0MjM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQyMwor
Li4gX1B1bGwgUmVxdWVzdCA0MjQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dh
bGF4eS9wdWxsLzQyNAorLi4gX1B1bGwgUmVxdWVzdCA0MjY6IGh0dHBzOi8vZ2l0aHViLmNvbS9n
YWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQyNgorLi4gX1B1bGwgUmVxdWVzdCA0Mjc6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQyNworLi4gX1B1bGwgUmVx
dWVzdCA0Mjk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQy
OQorLi4gX1B1bGwgUmVxdWVzdCA0MzE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0
L2dhbGF4eS9wdWxsLzQzMQorLi4gX1B1bGwgUmVxdWVzdCA0MzI6IGh0dHBzOi8vZ2l0aHViLmNv
bS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQzMgorLi4gX1B1bGwgUmVxdWVzdCA0MzM6IGh0
dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQzMworLi4gX1B1bGwg
UmVxdWVzdCA0Mzg6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxs
LzQzOAorLi4gX1B1bGwgUmVxdWVzdCA0Mzk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9q
ZWN0L2dhbGF4eS9wdWxsLzQzOQorLi4gX1B1bGwgUmVxdWVzdCA0NDA6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ0MAorLi4gX1B1bGwgUmVxdWVzdCA0NDE6
IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ0MQorLi4gX1B1
bGwgUmVxdWVzdCA0NDM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9w
dWxsLzQ0MworLi4gX1B1bGwgUmVxdWVzdCA0NDQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlw
cm9qZWN0L2dhbGF4eS9wdWxsLzQ0NAorLi4gX1B1bGwgUmVxdWVzdCA0NDY6IGh0dHBzOi8vZ2l0
aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ0NgorLi4gX1B1bGwgUmVxdWVzdCA0
NDk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ0OQorLi4g
X1B1bGwgUmVxdWVzdCA0NTI6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4
eS9wdWxsLzQ1MgorLi4gX1B1bGwgUmVxdWVzdCA0NTM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxh
eHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ1MworLi4gX1B1bGwgUmVxdWVzdCA0NTQ6IGh0dHBzOi8v
Z2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ1NAorLi4gX1B1bGwgUmVxdWVz
dCA0NTU6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ1NQor
Li4gX1B1bGwgUmVxdWVzdCA0NTg6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dh
bGF4eS9wdWxsLzQ1OAorLi4gX1B1bGwgUmVxdWVzdCA0NTk6IGh0dHBzOi8vZ2l0aHViLmNvbS9n
YWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ1OQorLi4gX1B1bGwgUmVxdWVzdCA0NjI6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ2MgorLi4gX1B1bGwgUmVx
dWVzdCA0NjM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ2
MworLi4gX1B1bGwgUmVxdWVzdCA0NjU6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0
L2dhbGF4eS9wdWxsLzQ2NQorLi4gX1B1bGwgUmVxdWVzdCA0NzA6IGh0dHBzOi8vZ2l0aHViLmNv
bS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ3MAorLi4gX1B1bGwgUmVxdWVzdCA0NzI6IGh0
dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ3MgorLi4gX1B1bGwg
UmVxdWVzdCA0NzM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxs
LzQ3MworLi4gX1B1bGwgUmVxdWVzdCA0Nzg6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9q
ZWN0L2dhbGF4eS9wdWxsLzQ3OAorLi4gX1B1bGwgUmVxdWVzdCA0Nzk6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ3OQorLi4gX1B1bGwgUmVxdWVzdCA0ODA6
IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ4MAorLi4gX1B1
bGwgUmVxdWVzdCA0ODE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9w
dWxsLzQ4MQorLi4gX1B1bGwgUmVxdWVzdCA0ODI6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlw
cm9qZWN0L2dhbGF4eS9wdWxsLzQ4MgorLi4gX1B1bGwgUmVxdWVzdCA0ODQ6IGh0dHBzOi8vZ2l0
aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ4NAorLi4gX1B1bGwgUmVxdWVzdCA0
ODU6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ4NQorLi4g
X1B1bGwgUmVxdWVzdCA0ODY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4
eS9wdWxsLzQ4NgorLi4gX1B1bGwgUmVxdWVzdCA0ODc6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxh
eHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ4NworLi4gX1B1bGwgUmVxdWVzdCA0ODg6IGh0dHBzOi8v
Z2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ4OAorLi4gX1B1bGwgUmVxdWVz
dCA0OTA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ5MAor
Li4gX1B1bGwgUmVxdWVzdCA0OTE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dh
bGF4eS9wdWxsLzQ5MQorLi4gX1B1bGwgUmVxdWVzdCA0OTI6IGh0dHBzOi8vZ2l0aHViLmNvbS9n
YWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ5MgorLi4gX1B1bGwgUmVxdWVzdCA0OTM6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ5MworLi4gX1B1bGwgUmVx
dWVzdCA0OTQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ5
NAorLi4gX1B1bGwgUmVxdWVzdCA0OTU6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0
L2dhbGF4eS9wdWxsLzQ5NQorLi4gX1B1bGwgUmVxdWVzdCA0OTY6IGh0dHBzOi8vZ2l0aHViLmNv
bS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ5NgorLi4gX1B1bGwgUmVxdWVzdCA0OTk6IGh0
dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzQ5OQorLi4gX1B1bGwg
UmVxdWVzdCA1MDA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxs
LzUwMAorLi4gX1B1bGwgUmVxdWVzdCA1MDk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9q
ZWN0L2dhbGF4eS9wdWxsLzUwOQorLi4gX1B1bGwgUmVxdWVzdCA1MTA6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzUxMAorLi4gX1B1bGwgUmVxdWVzdCA1MTE6
IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzUxMQorLi4gX1B1
bGwgUmVxdWVzdCA1MTI6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9w
dWxsLzUxMgorLi4gX1B1bGwgUmVxdWVzdCA1MTQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlw
cm9qZWN0L2dhbGF4eS9wdWxsLzUxNAorLi4gX1B1bGwgUmVxdWVzdCA1MTU6IGh0dHBzOi8vZ2l0
aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzUxNQorLi4gX1B1bGwgUmVxdWVzdCA1
MTY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzUxNgorLi4g
X1B1bGwgUmVxdWVzdCA1MTc6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4
eS9wdWxsLzUxNworLi4gX1B1bGwgUmVxdWVzdCA1MjY6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxh
eHlwcm9qZWN0L2dhbGF4eS9wdWxsLzUyNgorLi4gX1B1bGwgUmVxdWVzdCA1Mjc6IGh0dHBzOi8v
Z2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzUyNworLi4gX1B1bGwgUmVxdWVz
dCA1Mjk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzUyOQor
Li4gX1B1bGwgUmVxdWVzdCA1MzA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dh
bGF4eS9wdWxsLzUzMAorLi4gX1B1bGwgUmVxdWVzdCA1MzE6IGh0dHBzOi8vZ2l0aHViLmNvbS9n
YWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzUzMQorLi4gX1B1bGwgUmVxdWVzdCA1MzI6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzUzMgorLi4gX1B1bGwgUmVx
dWVzdCA1MzM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzUz
MworLi4gX1B1bGwgUmVxdWVzdCA1MzQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0
L2dhbGF4eS9wdWxsLzUzNAorLi4gX1B1bGwgUmVxdWVzdCA1MzY6IGh0dHBzOi8vZ2l0aHViLmNv
bS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzUzNgorLi4gX1B1bGwgUmVxdWVzdCA1Mzc6IGh0
dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzUzNworLi4gX1B1bGwg
UmVxdWVzdCA1Mzg6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxs
LzUzOAorLi4gX1B1bGwgUmVxdWVzdCA1Mzk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9q
ZWN0L2dhbGF4eS9wdWxsLzUzOQorLi4gX1B1bGwgUmVxdWVzdCA1NDA6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU0MAorLi4gX1B1bGwgUmVxdWVzdCA1NDM6
IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU0MworLi4gX1B1
bGwgUmVxdWVzdCA1NDQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9w
dWxsLzU0NAorLi4gX1B1bGwgUmVxdWVzdCA1NDU6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlw
cm9qZWN0L2dhbGF4eS9wdWxsLzU0NQorLi4gX1B1bGwgUmVxdWVzdCA1NDY6IGh0dHBzOi8vZ2l0
aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU0NgorLi4gX1B1bGwgUmVxdWVzdCA1
NDc6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU0NworLi4g
X1B1bGwgUmVxdWVzdCA1NTA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4
eS9wdWxsLzU1MAorLi4gX1B1bGwgUmVxdWVzdCA1NTE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxh
eHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU1MQorLi4gX1B1bGwgUmVxdWVzdCA1NTM6IGh0dHBzOi8v
Z2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU1MworLi4gX1B1bGwgUmVxdWVz
dCA1NjE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU2MQor
Li4gX1B1bGwgUmVxdWVzdCA1NjM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dh
bGF4eS9wdWxsLzU2MworLi4gX1B1bGwgUmVxdWVzdCA1NjU6IGh0dHBzOi8vZ2l0aHViLmNvbS9n
YWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU2NQorLi4gX1B1bGwgUmVxdWVzdCA1NjY6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU2NgorLi4gX1B1bGwgUmVx
dWVzdCA1Njc6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU2
NworLi4gX1B1bGwgUmVxdWVzdCA1Njg6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0
L2dhbGF4eS9wdWxsLzU2OAorLi4gX1B1bGwgUmVxdWVzdCA1Njk6IGh0dHBzOi8vZ2l0aHViLmNv
bS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU2OQorLi4gX1B1bGwgUmVxdWVzdCA1NzE6IGh0
dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU3MQorLi4gX1B1bGwg
UmVxdWVzdCA1NzU6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxs
LzU3NQorLi4gX1B1bGwgUmVxdWVzdCA1Nzc6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9q
ZWN0L2dhbGF4eS9wdWxsLzU3NworLi4gX1B1bGwgUmVxdWVzdCA1ODA6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU4MAorLi4gX1B1bGwgUmVxdWVzdCA1ODE6
IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU4MQorLi4gX1B1
bGwgUmVxdWVzdCA1ODM6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9w
dWxsLzU4MworLi4gX1B1bGwgUmVxdWVzdCA1ODQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlw
cm9qZWN0L2dhbGF4eS9wdWxsLzU4NAorLi4gX1B1bGwgUmVxdWVzdCA1ODU6IGh0dHBzOi8vZ2l0
aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU4NQorLi4gX1B1bGwgUmVxdWVzdCA1
ODc6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU4NworLi4g
X1B1bGwgUmVxdWVzdCA1ODk6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4
eS9wdWxsLzU4OQorLi4gX1B1bGwgUmVxdWVzdCA1OTE6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxh
eHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU5MQorLi4gX1B1bGwgUmVxdWVzdCA1OTI6IGh0dHBzOi8v
Z2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU5MgorLi4gX1B1bGwgUmVxdWVz
dCA1OTQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzU5NAor
Li4gX1B1bGwgUmVxdWVzdCA2MDA6IGh0dHBzOi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dh
bGF4eS9wdWxsLzYwMAorLi4gX1B1bGwgUmVxdWVzdCA2MDI6IGh0dHBzOi8vZ2l0aHViLmNvbS9n
YWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzYwMgorLi4gX1B1bGwgUmVxdWVzdCA2MjU6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9nYWxheHlwcm9qZWN0L2dhbGF4eS9wdWxsLzYyNQoKZGlmZiAtciBjOGFi
MGZlMjg2YmYxMGFkZDI2ZmU5NjczMzBjZmM3OTk5YWZmZGYwIC1yIDAzNGNiMGZiODdkZmMyYWU1
NmRlMTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3OSBkb2Mvc291cmNlL3JlbGVhc2VzLzE1LjA3X2Fubm91
bmNlLnJzdAotLS0gYS9kb2Mvc291cmNlL3JlbGVhc2VzLzE1LjA3X2Fubm91bmNlLnJzdAorKysg
Yi9kb2Mvc291cmNlL3JlbGVhc2VzLzE1LjA3X2Fubm91bmNlLnJzdApAQCAtMiwyMiArMiw2OSBA
QAogSnVseSAyMDE1IEdhbGF4eSBSZWxlYXNlICh2IDE1LjA3KQogPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRAo9MjAKKwog
Li4gaW5jbHVkZTo6IF9oZWFkZXIucnN0Cj0yMAorSGlnaGxpZ2h0cworPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRAo9MjAK
LVNjaGVkdWxlCisqKkludGVyYWN0aXZlIEVudmlyb25tZW50cyoqCisgIFRoZSBpbnRlcmFjdGl2
ZSBlbnZpcm9ubWVudHMgKElFKSBmcmFtZXdvcmsgZmVhdHVyZXMgc2V2ZXJhbCB1cGRhdGVzIHRo
aT0KcyByZWxlYXNlCisgIGFuZCBHYWxheHkgaXMgbm93IGRpc3RyaWJ1dGVkIHdpdGggYSBuZXcg
SUUgZm9yIFJTdHVkaW8gaW1wbGVtZW50ZWQgYnkgRT0KcmljIFJhc2NoZS4KKworKipXb3JrZmxv
dyBFZGl0b3IgRW5oYW5jZW1lbnRzKioKKyAgVGhlIHdvcmtmbG93IGVkaXRvciBoYXMgYmVlbiBz
aWduaWZpY2FudGx5IHJldmFtcGVkIC0gaXQgbm93IHVzZXMgbmV3ZXIgPQp0b29sIGZvcm0KKyAg
Y29tcG9uZW50cyBhbmQgYWxsb3cgY29uc3RydWN0aW9uIG9mIHdvcmtmbG93cyB3aXRoIHRvb2xz
IGV4cGxpY2l0bHkgcHJvPQpkdWNpbmcKKyAgb3V0cHV0IGNvbGxlY3Rpb25zLgorCisqKlBvbGlj
aWVzIGZvciBDb21taXR0ZXJzIGFuZCBQdWxsIFJlcXVlc3RzKioKKyAgVGhlIHByb2Nlc3MgZm9y
IGFkZGluZyBjb21taXR0ZXJzIHRvIHRoZSBwcm9qZWN0IGFuZCBmaWVsZGluZyBwdWxsIHJlcXVl
PQpzdHMgaGFzPTIwCisgIGJlZW4gZm9ybWFsaXplZCBhbmQgZG9jdW1lbnRlZCBpbiB0aGUgc291
cmNlIGNvZGUuIFRocmVlIG5ldyBjb21taXR0ZXJzID0KaGF2ZSBiZWVuCisgIGFkZGVkIHRvIHRo
ZSBwcm9qZWN0IC0gQmo9QzM9QjZybiBHcj1DMz1CQ25pbmcsIE5pY29sYSBTb3JhbnpvLCBhbmQg
RXJpYz0KIFJhc2NoZS4KKworCitgR2l0aHViIDxodHRwczovL2dpdGh1Yi5jb20vZ2FsYXh5cHJv
amVjdC9nYWxheHk+YF9fCiA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNECi0gKiBQbGFubmVkIEZyZWV6ZSBEYXRlOiBKdWx5
IDEzLCAyMDE1Ci0gKiBQbGFubmVkIFJlbGVhc2UgRGF0ZTogSnVseSAyNywgMjAxNQo9MjAKLS4u
IEhpZ2hsaWdodHMKLS4uID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0QKK05ldworICAuLiBjb2RlLWJsb2NrOjogc2hlbGwK
KyA9MjAKKyAgICAgICUgZ2l0IGNsb25lIC1iIG1hc3RlciBodHRwczovL2dpdGh1Yi5jb20vZ2Fs
YXh5cHJvamVjdC9nYWxheHkuZ2l0Cj0yMAotLi4gRG93bmxvYWRzCi0uLiA9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNECitV
cGRhdGUgdG8gbGF0ZXN0IHN0YWJsZSByZWxlYXNlCisgIC4uIGNvZGUtYmxvY2s6OiBzaGVsbAor
ID0yMAorICAgICAgJSBnaXQgY2hlY2tvdXQgbWFzdGVyICYmIHB1bGwgLS1mZi1vbmx5IG9yaWdp
biBtYXN0ZXIKPTIwCi0uLiBSZWxlYXNlIE5vdGVzCi0uLiA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNECitVcGRhdGUgdG8g
ZXhhY3QgdmVyc2lvbgorICAuLiBjb2RlLWJsb2NrOjogc2hlbGwKKyA9MjAKKyAgICAgICUgZ2l0
IGNoZWNrb3V0IHYxNS4wNwo9MjAKPTIwCitgQml0QnVja2V0IDxodHRwczovL2JpdGJ1Y2tldC5v
cmcvZ2FsYXh5L2dhbGF4eS1kaXN0PmBfXworPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRAorCitVcGdyYWRlCisgIC4uIGNv
ZGUtYmxvY2s6OiBzaGVsbAorID0yMAorICAgICAgJSBoZyBwdWxsPTIwCisgICAgICAlIGhnIHVw
ZGF0ZSBsYXRlc3RfMTUuMDcKKworCitTZWUgYG91ciB3aWtpIDxodHRwczovL3dpa2kuZ2FsYXh5
cHJvamVjdC5vcmcvRGV2ZWxvcC9Tb3VyY2VDb2RlPmBfXyBmb3IgYT0KZGRpdGlvbmFsIGRldGFp
bHMgcmVnYXJkaW5nIHRoZSBzb3VyY2UgY29kZSBsb2NhdGlvbnMuCisKK0RlcHJlY2F0aW9uIE5v
dGljZQorPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRAorCitHYWxheHkncyBidWlsdC1pbiBjbG91ZGxhdW5jaCBmdW5jdGlv
bmFsaXR5IGlzIGJlaW5nIHJlcGxhY2VkIGJ5IGBDbG91ZExhdT0KbmNoCis8aHR0cHM6Ly9naXRo
dWIuY29tL2dhbGF4eXByb2plY3QvY2xvdWRsYXVuY2g+YF9fIGFuZCB3aWxsIGJlIHJlbW92ZWQg
ZnJvbT0KIHRoZQorY29yZSBjb2RlYmFzZSBpbiB0aGUgbmV4dCByZWxlYXNlLgorCitSZWxlYXNl
IE5vdGVzCis9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNECisKKy4uIGluY2x1ZGU6OiAxNS4wNy5yc3QKKyAgIDpzdGFydC1h
ZnRlcjogZW5oYW5jZW1lbnRzCisKIC4uIGluY2x1ZGU6OiBfdGhhbmtzLnJzdAoKZGlmZiAtciBj
OGFiMGZlMjg2YmYxMGFkZDI2ZmU5NjczMzBjZmM3OTk5YWZmZGYwIC1yIDAzNGNiMGZiODdkZmMy
YWU1NmRlMTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3OSBkb2Mvc291cmNlL3JlbGVhc2VzLzE1LjEwX2Fu
bm91bmNlLnJzdAotLS0gL2Rldi9udWxsCisrKyBiL2RvYy9zb3VyY2UvcmVsZWFzZXMvMTUuMTBf
YW5ub3VuY2UucnN0CkBAIC0wLDAgKzEsOSBAQAorPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRAorT2N0b2JlciAyMDE1IEdh
bGF4eSBSZWxlYXNlICh2IDE1LjEwKQorPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRAorCisKK1NjaGVkdWxlCis9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNECisgKiBQbGFubmVkIEZyZWV6ZSBEYXRlOiBPY3RvYmVyIDUsIDIwMTUKKyAqIFBsYW5uZWQg
UmVsZWFzZSBEYXRlOiBPY3RvYmVyIDI2LCAyMDE1CgpkaWZmIC1yIGM4YWIwZmUyODZiZjEwYWRk
MjZmZTk2NzMzMGNmYzc5OTlhZmZkZjAgLXIgMDM0Y2IwZmI4N2RmYzJhZTU2ZGUxMDc9CjJhNDVh
NjgxODk3OTdlOTc5IGRvYy9zb3VyY2UvcmVsZWFzZXMvaW5kZXgucnN0Ci0tLSBhL2RvYy9zb3Vy
Y2UvcmVsZWFzZXMvaW5kZXgucnN0CisrKyBiL2RvYy9zb3VyY2UvcmVsZWFzZXMvaW5kZXgucnN0
CkBAIC00LDYgKzQsNyBAQAogLi4gdG9jdHJlZTo6CiAgICA6bWF4ZGVwdGg6IDEKPTIwCisgICAx
NS4xMF9hbm5vdW5jZQogICAgMTUuMDdfYW5ub3VuY2UKICAgIDE1LjA1X2Fubm91bmNlCiAgICAx
NS4wM19hbm5vdW5jZQoKZGlmZiAtciBjOGFiMGZlMjg2YmYxMGFkZDI2ZmU5NjczMzBjZmM3OTk5
YWZmZGYwIC1yIDAzNGNiMGZiODdkZmMyYWU1NmRlMTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3OSBsaWIv
Z2FsYXh5L2RhdGF0eXBlcy9iaW5hcnkucHkKLS0tIGEvbGliL2dhbGF4eS9kYXRhdHlwZXMvYmlu
YXJ5LnB5CisrKyBiL2xpYi9nYWxheHkvZGF0YXR5cGVzL2JpbmFyeS5weQpAQCAtNDEsMTEgKzQx
LDExIEBACj0yMAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgcmVnaXN0ZXJfc25pZmZhYmxl
X2JpbmFyeV9mb3JtYXQoZGF0YV90eXBlLCBleHQsIHR5cGVfY2xhc3MpOgotICAgICAgICBCaW5h
cnkuc25pZmZhYmxlX2JpbmFyeV9mb3JtYXRzLmFwcGVuZCh7InR5cGUiOiBkYXRhX3R5cGUsICJl
eHQiOiA9CmV4dCwgImNsYXNzIjogdHlwZV9jbGFzc30pCisgICAgICAgIEJpbmFyeS5zbmlmZmFi
bGVfYmluYXJ5X2Zvcm1hdHMuYXBwZW5kKHsidHlwZSI6IGRhdGFfdHlwZSwgImV4dCI6ID0KZXh0
Lmxvd2VyKCksICJjbGFzcyI6IHR5cGVfY2xhc3N9KQo9MjAKICAgICBAc3RhdGljbWV0aG9kCiAg
ICAgZGVmIHJlZ2lzdGVyX3Vuc25pZmZhYmxlX2JpbmFyeV9leHQoZXh0KToKLSAgICAgICAgQmlu
YXJ5LnVuc25pZmZhYmxlX2JpbmFyeV9mb3JtYXRzLmFwcGVuZChleHQpCisgICAgICAgIEJpbmFy
eS51bnNuaWZmYWJsZV9iaW5hcnlfZm9ybWF0cy5hcHBlbmQoZXh0Lmxvd2VyKCkpCj0yMAogICAg
IEBzdGF0aWNtZXRob2QKICAgICBkZWYgaXNfc25pZmZhYmxlX2JpbmFyeSggZmlsZW5hbWUgKToK
QEAgLTg5MSw3ICs4OTEsNyBAQAo9MjAKIGNsYXNzIFJEYXRhKCBCaW5hcnkgKToKICAgICAiIiJH
ZW5lcmljIFIgRGF0YSBmaWxlIGRhdGF0eXBlIGltcGxlbWVudGF0aW9uIiIiCi0gICAgZmlsZV9l
eHQgPTNEICdyZGF0YScKKyAgICBmaWxlX2V4dCA9M0QgJ1JEYXRhJwo9MjAKICAgICBkZWYgX19p
bml0X18oIHNlbGYsICoqa3dkICk6CiAgICAgICAgIEJpbmFyeS5fX2luaXRfXyggc2VsZiwgKipr
d2QgKQpAQCAtOTA5LDQgKzkwOSw0IEBACiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHJl
dHVybiBGYWxzZQo9MjAKLUJpbmFyeS5yZWdpc3Rlcl9zbmlmZmFibGVfYmluYXJ5X2Zvcm1hdCgn
cmRhdGEnLCAncmRhdGEnLCBSRGF0YSkKK0JpbmFyeS5yZWdpc3Rlcl9zbmlmZmFibGVfYmluYXJ5
X2Zvcm1hdCgnUkRhdGEnLCAnUkRhdGEnLCBSRGF0YSkKCmRpZmYgLXIgYzhhYjBmZTI4NmJmMTBh
ZGQyNmZlOTY3MzMwY2ZjNzk5OWFmZmRmMCAtciAwMzRjYjBmYjg3ZGZjMmFlNTZkZTEwNz0KMmE0
NWE2ODE4OTc5N2U5NzkgbGliL2dhbGF4eS9kYXRhdHlwZXMvdGFidWxhci5weQotLS0gYS9saWIv
Z2FsYXh5L2RhdGF0eXBlcy90YWJ1bGFyLnB5CisrKyBiL2xpYi9nYWxheHkvZGF0YXR5cGVzL3Rh
YnVsYXIucHkKQEAgLTI3Myw3ICsyNzMsNyBAQAogICAgICAgICAgICAgICAgIGlmIGNvbHVtbl90
eXBlMiA9M0Q9M0QgY29sdW1uX3R5cGU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxz
ZQogICAgICAgICAgICAgIyBuZWl0aGVyIGNvbHVtbiB0eXBlIHdhcyBmb3VuZCBpbiBvdXIgb3Jk
ZXJlZCBsaXN0LCB0aGlzIGNhbm49Cm90IGhhcHBlbgotICAgICAgICAgICAgcmFpc2UgIlRyaWVk
IHRvIGNvbXBhcmUgdW5rbm93biBjb2x1bW4gdHlwZXMiCisgICAgICAgICAgICByYWlzZSBWYWx1
ZUVycm9yKCAiVHJpZWQgdG8gY29tcGFyZSB1bmtub3duIGNvbHVtbiB0eXBlczogJXMgYT0KbmQg
JXMiICUgKCBjb2x1bW5fdHlwZTEsIGNvbHVtbl90eXBlMiApICkKPTIwCiAgICAgICAgIGRlZiBp
c19pbnQoIGNvbHVtbl90ZXh0ICk6CiAgICAgICAgICAgICB0cnk6CkBAIC05MTMsOCArOTEzLDYg
QEAKICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0NTViByZWFkZXIgZXJyb3IgLSBs
aW5lICVkOiAlcycgJSAocmVhZGVyPQoubGluZV9udW0sIGUpKQo9MjAKICAgICAgICAgICAgICMg
R3Vlc3MgY29sdW1uIHR5cGVzCi0gICAgICAgICAgICBpZiBsZW4oaGVhZGVyX3JvdykgIT0zRCBs
ZW4oZGF0YV9yb3cpOgotICAgICAgICAgICAgICAgIHJhaXNlICgnbWlzbWF0Y2hpbmcgbnVtYmVy
IG9mIGNvbHVtbnMgaW4gaGVhZGVyIGFuZCBkYXRhJykKICAgICAgICAgICAgIGNvbHVtbl90eXBl
cyA9M0QgW10KICAgICAgICAgICAgIGZvciBjZWxsIGluIGRhdGFfcm93OgogICAgICAgICAgICAg
ICAgIGNvbHVtbl90eXBlcy5hcHBlbmQoc2VsZi5ndWVzc190eXBlKGNlbGwpKQpAQCAtOTIzLDcg
KzkyMSw3IEBACiAgICAgICAgICAgICBkYXRhc2V0Lm1ldGFkYXRhLmRhdGFfbGluZXMgPTNEIHJl
YWRlci5saW5lX251bSAtIDEKICAgICAgICAgICAgIGRhdGFzZXQubWV0YWRhdGEuY29tbWVudF9s
aW5lcyA9M0QgMQogICAgICAgICAgICAgZGF0YXNldC5tZXRhZGF0YS5jb2x1bW5fdHlwZXMgPTNE
IGNvbHVtbl90eXBlcwotICAgICAgICAgICAgZGF0YXNldC5tZXRhZGF0YS5jb2x1bW5zID0zRCBs
ZW4oaGVhZGVyX3JvdykKKyAgICAgICAgICAgIGRhdGFzZXQubWV0YWRhdGEuY29sdW1ucyA9M0Qg
bWF4KCBsZW4oIGhlYWRlcl9yb3cgKSwgbGVuKCBkYXRhPQpfcm93ICkgKQogICAgICAgICAgICAg
ZGF0YXNldC5tZXRhZGF0YS5jb2x1bW5fbmFtZXMgPTNEIGhlYWRlcl9yb3cKICAgICAgICAgICAg
IGRhdGFzZXQubWV0YWRhdGEuZGVsaW1pdGVyID0zRCByZWFkZXIuZGlhbGVjdC5kZWxpbWl0ZXIK
PTIwCgpkaWZmIC1yIGM4YWIwZmUyODZiZjEwYWRkMjZmZTk2NzMzMGNmYzc5OTlhZmZkZjAgLXIg
MDM0Y2IwZmI4N2RmYzJhZTU2ZGUxMDc9CjJhNDVhNjgxODk3OTdlOTc5IGxpYi9nYWxheHkvZXhj
ZXB0aW9ucy9fX2luaXRfXy5weQotLS0gYS9saWIvZ2FsYXh5L2V4Y2VwdGlvbnMvX19pbml0X18u
cHkKKysrIGIvbGliL2dhbGF4eS9leGNlcHRpb25zL19faW5pdF9fLnB5CkBAIC03MSw2ICs3MSwx
MSBAQAogICAgIGVycl9jb2RlID0zRCBlcnJvcl9jb2Rlcy5NQUxGT1JNRURfSUQKPTIwCj0yMAor
Y2xhc3MgTWFsZm9ybWVkQ29udGVudHMoIE1lc3NhZ2VFeGNlcHRpb24gKToKKyAgICBzdGF0dXNf
Y29kZSA9M0QgNDAwCisgICAgZXJyX2NvZGUgPTNEIGVycm9yX2NvZGVzLk1BTEZPUk1FRF9DT05U
RU5UUworCisKIGNsYXNzIFVua25vd25Db250ZW50c1R5cGUoIE1lc3NhZ2VFeGNlcHRpb24gKToK
ICAgICBzdGF0dXNfY29kZSA9M0QgNDAwCiAgICAgZXJyX2NvZGUgPTNEIGVycm9yX2NvZGVzLlVO
S05PV05fQ09OVEVOVFNfVFlQRQoKZGlmZiAtciBjOGFiMGZlMjg2YmYxMGFkZDI2ZmU5NjczMzBj
ZmM3OTk5YWZmZGYwIC1yIDAzNGNiMGZiODdkZmMyYWU1NmRlMTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3
OSBsaWIvZ2FsYXh5L2V4Y2VwdGlvbnMvZXJyb3JfY29kZXMuanNvbgotLS0gYS9saWIvZ2FsYXh5
L2V4Y2VwdGlvbnMvZXJyb3JfY29kZXMuanNvbgorKysgYi9saWIvZ2FsYXh5L2V4Y2VwdGlvbnMv
ZXJyb3JfY29kZXMuanNvbgpAQCAtNjEsMTAgKzYxLDE1IEBACiAgICAgfSwKICAgIHsKICAgICAi
bmFtZSI6ICJVU0VSX1RPT0xfTUVUQV9QQVJBTUVURVJfUFJPQkxFTSIsCi0gICAgImNvZGUiOiA0
MDAwMTEsCisgICAgImNvZGUiOiA0MDAwMTIsCiAgICAgIm1lc3NhZ2UiOiAiU3VwcGxpZWQgaW5j
b3JyZWN0IG9yIGluY29tcGF0aWJsZSB0b29sIG1ldGEgcGFyYW1ldGVycy4iCiAgICB9LAogICAg
eworICAgICJuYW1lIjogIk1BTEZPUk1FRF9DT05URU5UUyIsCisgICAgImNvZGUiOiA0MDAwMTMs
CisgICAgIm1lc3NhZ2UiOiAiVGhlIGNvbnRlbnRzIG9mIHRoZSByZXF1ZXN0IGFyZSBtYWxmb3Jt
ZWQuIgorICAgIH0sCisgICB7CiAgICAgIm5hbWUiOiAiVVNFUl9BVVRIRU5USUNBVElPTl9GQUlM
RUQiLAogICAgICJjb2RlIjogNDAxMDAxLAogICAgICJtZXNzYWdlIjogIkF1dGhlbnRpY2F0aW9u
IGZhaWxlZCwgaW52YWxpZCBjcmVkZW50aWFscyBzdXBwbGllZC4iCgpkaWZmIC1yIGM4YWIwZmUy
ODZiZjEwYWRkMjZmZTk2NzMzMGNmYzc5OTlhZmZkZjAgLXIgMDM0Y2IwZmI4N2RmYzJhZTU2ZGUx
MDc9CjJhNDVhNjgxODk3OTdlOTc5IGxpYi9nYWxheHkvam9icy9fX2luaXRfXy5weQotLS0gYS9s
aWIvZ2FsYXh5L2pvYnMvX19pbml0X18ucHkKKysrIGIvbGliL2dhbGF4eS9qb2JzL19faW5pdF9f
LnB5CkBAIC0xMDM2LDYgKzEwMzYsMTAgQEAKICAgICBkZWYgY2hhbmdlX3N0YXRlKCBzZWxmLCBz
dGF0ZSwgaW5mbz0zREZhbHNlICk6CiAgICAgICAgIGpvYiA9M0Qgc2VsZi5nZXRfam9iKCkKICAg
ICAgICAgc2VsZi5zYV9zZXNzaW9uLnJlZnJlc2goIGpvYiApCisgICAgICAgIGlmIGpvYi5zdGF0
ZSBpbiBtb2RlbC5Kb2IudGVybWluYWxfc3RhdGVzOgorICAgICAgICAgICAgbG9nLndhcm5pbmco
ICIoJXMpIElnbm9yaW5nIHN0YXRlIGNoYW5nZSBmcm9tICclcycgdG8gJyVzJyBmb3I9CiBqb2Ig
IgorICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGF0IGlzIGFscmVhZHkgdGVybWluYWwiLCBq
b2IuaWQsIGpvYi5zdGF0ZSwgc3Q9CmF0ZSApCisgICAgICAgICAgICByZXR1cm4KICAgICAgICAg
Zm9yIGRhdGFzZXRfYXNzb2MgaW4gam9iLm91dHB1dF9kYXRhc2V0cyArIGpvYi5vdXRwdXRfbGli
cmFyeV9kYXRhPQpzZXRzOgogICAgICAgICAgICAgZGF0YXNldCA9M0QgZGF0YXNldF9hc3NvYy5k
YXRhc2V0CiAgICAgICAgICAgICBzZWxmLnNhX3Nlc3Npb24ucmVmcmVzaCggZGF0YXNldCApCgpk
aWZmIC1yIGM4YWIwZmUyODZiZjEwYWRkMjZmZTk2NzMzMGNmYzc5OTlhZmZkZjAgLXIgMDM0Y2Iw
ZmI4N2RmYzJhZTU2ZGUxMDc9CjJhNDVhNjgxODk3OTdlOTc5IGxpYi9nYWxheHkvam9icy9ydW5u
ZXJzL3B1bHNhci5weQotLS0gYS9saWIvZ2FsYXh5L2pvYnMvcnVubmVycy9wdWxzYXIucHkKKysr
IGIvbGliL2dhbGF4eS9qb2JzL3J1bm5lcnMvcHVsc2FyLnB5CkBAIC02MSw2ICs2MSwxNCBAQAog
ICAgICAgICBtYXA9M0RzcGVjcy50b19zdHJfb3Jfbm9uZSwKICAgICAgICAgZGVmYXVsdD0zRE5v
bmUsCiAgICAgKSwKKyAgICBwZXJzaXN0ZW5jZV9kaXJlY3Rvcnk9M0RkaWN0KAorICAgICAgICBt
YXA9M0RzcGVjcy50b19zdHJfb3Jfbm9uZSwKKyAgICAgICAgZGVmYXVsdD0zRE5vbmUsCisgICAg
KSwKKyAgICBhbXFwX2Fja25vd2xlZGdlPTNEZGljdCgKKyAgICAgICAgbWFwPTNEc3BlY3MudG9f
Ym9vbF9vcl9ub25lLAorICAgICAgICBkZWZhdWx0PTNETm9uZQorICAgICksCiAgICAgYW1xcF9j
b25zdW1lcl90aW1lb3V0PTNEZGljdCgKICAgICAgICAgbWFwPTNEbGFtYmRhIHZhbDogTm9uZSBp
ZiB2YWwgPTNEPTNEICJOb25lIiBlbHNlIGZsb2F0KHZhbCksCiAgICAgICAgIGRlZmF1bHQ9M0RO
b25lLApAQCAtMTQ1LDcgKzE1Myw3IEBACj0yMAogICAgIGRlZiBfX2luaXRfY2xpZW50X21hbmFn
ZXIoIHNlbGYgKToKICAgICAgICAgY2xpZW50X21hbmFnZXJfa3dhcmdzID0zRCB7fQotICAgICAg
ICBmb3Iga3dkIGluICdtYW5hZ2VyJywgJ2NhY2hlJywgJ3RyYW5zcG9ydCc6CisgICAgICAgIGZv
ciBrd2QgaW4gJ21hbmFnZXInLCAnY2FjaGUnLCAndHJhbnNwb3J0JywgJ3BlcnNpc3RlbmNlX2Rp
cmVjdG9yeT0KJzoKICAgICAgICAgICAgIGNsaWVudF9tYW5hZ2VyX2t3YXJnc1sga3dkIF0gPTNE
IHNlbGYucnVubmVyX3BhcmFtc1sga3dkIF0KICAgICAgICAgZm9yIGt3ZCBpbiBzZWxmLnJ1bm5l
cl9wYXJhbXMua2V5cygpOgogICAgICAgICAgICAgaWYga3dkLnN0YXJ0c3dpdGgoICdhbXFwXycg
KToKQEAgLTYxMSw2ICs2MTksNyBAQAogICAgICAgICAjIFRoaXMgaXMgYSBtZXNzYWdlIHF1ZXVl
IGRyaXZlbiBydW5uZXIsIGRvbid0IG1vbml0b3IKICAgICAgICAgIyBqdXN0IHNldHVwIHJlcXVp
cmVkIGNhbGxiYWNrLgogICAgICAgICBzZWxmLmNsaWVudF9tYW5hZ2VyLmVuc3VyZV9oYXNfc3Rh
dHVzX3VwZGF0ZV9jYWxsYmFjayhzZWxmLl9fYXN5bmM9Cl91cGRhdGUpCisgICAgICAgIHNlbGYu
Y2xpZW50X21hbmFnZXIuZW5zdXJlX2hhc19hY2tfY29uc3VtZXJzKCkKPTIwCiAgICAgZGVmIF9f
YXN5bmNfdXBkYXRlKCBzZWxmLCBmdWxsX3N0YXR1cyApOgogICAgICAgICBqb2JfaWQgPTNEIE5v
bmUKCmRpZmYgLXIgYzhhYjBmZTI4NmJmMTBhZGQyNmZlOTY3MzMwY2ZjNzk5OWFmZmRmMCAtciAw
MzRjYjBmYjg3ZGZjMmFlNTZkZTEwNz0KMmE0NWE2ODE4OTc5N2U5NzkgbGliL2dhbGF4eS9tb2Rl
bC9fX2luaXRfXy5weQotLS0gYS9saWIvZ2FsYXh5L21vZGVsL19faW5pdF9fLnB5CisrKyBiL2xp
Yi9nYWxheHkvbW9kZWwvX19pbml0X18ucHkKQEAgLTUsMTUgKzUsMTEgQEAKIHRoZSByZWxhdGlv
bnNoaXAgY2FyZGluYWxpdGllcyBhcmUgb2J2aW91cyAoZS5nLiBwcmVmZXIgRGF0YXNldCB0byBE
YXRhKQogIiIiCj0yMAotZnJvbSBnYWxheHkgaW1wb3J0IGVnZ3MKLWVnZ3MucmVxdWlyZSgicGV4
cGVjdCIpCi0KIGltcG9ydCBjb2RlY3MKIGltcG9ydCBlcnJubwogaW1wb3J0IGxvZ2dpbmcKIGlt
cG9ydCBvcGVyYXRvcgogaW1wb3J0IG9zCi1pbXBvcnQgcGV4cGVjdAogaW1wb3J0IGpzb24KIGlt
cG9ydCBzb2NrZXQKIGltcG9ydCB0aW1lCkBAIC0zMTcsNiArMzEzLDkgQEAKICAgICAgICAgICAg
ICAgICAgICAgUEFVU0VEID0zRCAncGF1c2VkJywKICAgICAgICAgICAgICAgICAgICAgREVMRVRF
RCA9M0QgJ2RlbGV0ZWQnLAogICAgICAgICAgICAgICAgICAgICBERUxFVEVEX05FVyA9M0QgJ2Rl
bGV0ZWRfbmV3JyApCisgICAgdGVybWluYWxfc3RhdGVzID0zRCBbIHN0YXRlcy5PSywKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXRlcy5FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRlcy5ERUxFVEVEIF0KICAgICAjIFBsZWFzZSBpbmNsdWRlIGFuIGFjY2Vzc29yIChnZXQv
c2V0IHBhaXIpIGZvciBhbnkgbmV3IGNvbHVtbnMvbWVtYmVyPQpzLgogICAgIGRlZiBfX2luaXRf
Xyggc2VsZiApOgogICAgICAgICBzZWxmLnNlc3Npb25faWQgPTNEIE5vbmUKQEAgLTE0NDYsMTMg
KzE0NDUsMTEgQEAKICAgICBkZWYgZ2V0X3RvdGFsX3NpemUoIHNlbGYgKToKICAgICAgICAgaWYg
c2VsZi50b3RhbF9zaXplIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYudG90
YWxfc2l6ZQotICAgICAgICBpZiBzZWxmLmZpbGVfc2l6ZToKLSAgICAgICAgICAgICMgZm9yIGJh
Y2t3YXJkcyBjb21wYXRpYmlsaXR5LCBzZXQgaWYgdW5zZXQKLSAgICAgICAgICAgIHNlbGYuc2V0
X3RvdGFsX3NpemUoKQotICAgICAgICAgICAgZGJfc2Vzc2lvbiA9M0Qgb2JqZWN0X3Nlc3Npb24o
IHNlbGYgKQotICAgICAgICAgICAgZGJfc2Vzc2lvbi5mbHVzaCgpCi0gICAgICAgICAgICByZXR1
cm4gc2VsZi50b3RhbF9zaXplCi0gICAgICAgIHJldHVybiAwCisgICAgICAgICMgZm9yIGJhY2t3
YXJkcyBjb21wYXRpYmlsaXR5LCBzZXQgaWYgdW5zZXQKKyAgICAgICAgc2VsZi5zZXRfdG90YWxf
c2l6ZSgpCisgICAgICAgIGRiX3Nlc3Npb24gPTNEIG9iamVjdF9zZXNzaW9uKCBzZWxmICkKKyAg
ICAgICAgZGJfc2Vzc2lvbi5mbHVzaCgpCisgICAgICAgIHJldHVybiBzZWxmLnRvdGFsX3NpemUK
ICAgICBkZWYgc2V0X3RvdGFsX3NpemUoIHNlbGYgKToKICAgICAgICAgaWYgc2VsZi5maWxlX3Np
emUgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuc2V0X3NpemUoKQpAQCAtMzk3NCwyNyArMzk3
MSw2IEBACiAgICAgICAgICAgICAgICAgdW50cmFuc2ZlcnJlZF9kYXRhc2V0cy5hcHBlbmQoIGRh
dGFzZXQgKQogICAgICAgICByZXR1cm4gdW50cmFuc2ZlcnJlZF9kYXRhc2V0cwo9MjAKLSAgICBk
ZWYgZ2V0X3VudHJhbnNmZXJyZWRfZGF0YXNldF9zaXplKCBzZWxmLCBmaWxlcGF0aCwgc2NwX2Nv
bmZpZ3MgKToKLSAgICAgICAgZGVmIHByaW50X3RpY2tzKCBkICk6Ci0gICAgICAgICAgICBwYXNz
Ci0gICAgICAgIGVycm9yX21zZyA9M0QgJ0Vycm9yIGVuY291bnRlcmVkIGluIGRldGVybWluaW5n
IHRoZSBmaWxlIHNpemUgb2YgJT0KcyBvbiB0aGUgZXh0ZXJuYWxfc2VydmljZS4nICUgZmlsZXBh
dGgKLSAgICAgICAgaWYgbm90IHNjcF9jb25maWdzWydob3N0J10gb3Igbm90IHNjcF9jb25maWdz
Wyd1c2VyX25hbWUnXSBvciBub3QgPQpzY3BfY29uZmlnc1sncGFzc3dvcmQnXToKLSAgICAgICAg
ICAgIHJldHVybiBlcnJvcl9tc2cKLSAgICAgICAgbG9naW5fc3RyID0zRCAnJXNAJXMnICUgKCBz
Y3BfY29uZmlnc1sndXNlcl9uYW1lJ10sIHNjcF9jb25maWdzWydoPQpvc3QnXSApCi0gICAgICAg
IGNtZCAgPTNEICdzc2ggJXMgImR1IC1zaCBcJyVzXCciJyAlICggbG9naW5fc3RyLCBmaWxlcGF0
aCApCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG91dHB1dCA9M0QgcGV4cGVjdC5ydW4oIGNt
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudHM9M0R7ICcuc3N3b3Jk
OionOiBzY3BfY29uZmlnc1sncGFzPQpzd29yZCddKydcclxuJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwZXhwZWN0LlRJTUVPVVQ6cHJpbnRfdGlja3N9LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9M0QxMCApCi0gICAgICAg
IGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3JfbXNnCi0gICAgICAg
ICMgY2xlYW51cCB0aGUgb3V0cHV0IHRvIGdldCBqdXN0IHRoZSBmaWxlIHNpemUKLSAgICAgICAg
cmV0dXJuICBvdXRwdXQucmVwbGFjZSggZmlsZXBhdGgsICcnIClcCi0gICAgICAgICAgICAgICAg
ICAgICAgLnJlcGxhY2UoICdQYXNzd29yZDonLCAnJyApXAotICAgICAgICAgICAgICAgICAgICAg
IC5yZXBsYWNlKCAiJ3MgcGFzc3dvcmQ6IiwgJycgKVwKLSAgICAgICAgICAgICAgICAgICAgICAu
cmVwbGFjZSggbG9naW5fc3RyLCAnJyApXAotICAgICAgICAgICAgICAgICAgICAgIC5zdHJpcCgp
CiAgICAgQHByb3BlcnR5CiAgICAgZGVmIHJ1bl9kZXRhaWxzKCBzZWxmICk6CiAgICAgICAgICMg
c2VsZi5ydW5zIGlzIGEgbGlzdCBvZiBTYW1wbGVSdW5Bc3NvY2lhdGlvbnMgb3JkZXJlZCBkZXNj
ZW5kaW5nID0Kb24gdXBkYXRlX3RpbWUuCgpkaWZmIC1yIGM4YWIwZmUyODZiZjEwYWRkMjZmZTk2
NzMzMGNmYzc5OTlhZmZkZjAgLXIgMDM0Y2IwZmI4N2RmYzJhZTU2ZGUxMDc9CjJhNDVhNjgxODk3
OTdlOTc5IGxpYi9nYWxheHkvb2JqZWN0c3RvcmUvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4
eS9vYmplY3RzdG9yZS9fX2luaXRfXy5weQorKysgYi9saWIvZ2FsYXh5L29iamVjdHN0b3JlL19f
aW5pdF9fLnB5CkBAIC0xMSw3ICsxMSw3IEBACiBpbXBvcnQgdGhyZWFkaW5nCiBmcm9tIHhtbC5l
dHJlZSBpbXBvcnQgRWxlbWVudFRyZWUKPTIwCi1mcm9tIGdhbGF4eS51dGlsIGltcG9ydCB1bWFz
a19maXhfcGVybXMsIGZvcmNlX3N5bWxpbmsKK2Zyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IHVtYXNr
X2ZpeF9wZXJtcywgZm9yY2Vfc3ltbGluaywgc2FmZV9yZWxwYXRoCiBmcm9tIGdhbGF4eS5leGNl
cHRpb25zIGltcG9ydCBPYmplY3RJbnZhbGlkLCBPYmplY3ROb3RGb3VuZAogZnJvbSBnYWxheHku
dXRpbC5zbGVlcGVyIGltcG9ydCBTbGVlcGVyCiBmcm9tIGdhbGF4eS51dGlsLmRpcmVjdG9yeV9o
YXNoIGltcG9ydCBkaXJlY3RvcnlfaGFzaF9pZApAQCAtMzMsNiArMzMsMTAgQEAKICAgICBkZWYg
X19pbml0X18oc2VsZiwgY29uZmlnLCBjb25maWdfeG1sPTNETm9uZSwgKiprd2FyZ3MpOgogICAg
ICAgICBzZWxmLnJ1bm5pbmcgPTNEIFRydWUKICAgICAgICAgc2VsZi5leHRyYV9kaXJzID0zRCB7
fQorICAgICAgICBzZWxmLmNvbmZpZyA9M0QgY29uZmlnCisgICAgICAgIHNlbGYuY2hlY2tfb2xk
X3N0eWxlID0zRCBjb25maWcub2JqZWN0X3N0b3JlX2NoZWNrX29sZF9zdHlsZQorICAgICAgICBz
ZWxmLmV4dHJhX2RpcnNbJ2pvYl93b3JrJ10gPTNEIGNvbmZpZy5qb2Jfd29ya2luZ19kaXJlY3Rv
cnkKKyAgICAgICAgc2VsZi5leHRyYV9kaXJzWyd0ZW1wJ10gPTNEIGNvbmZpZy5uZXdfZmlsZV9w
YXRoCj0yMAogICAgIGRlZiBzaHV0ZG93bihzZWxmKToKICAgICAgICAgc2VsZi5ydW5uaW5nID0z
RCBGYWxzZQpAQCAtMTk4LDEwICsyMDIsNiBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25m
aWcsIGNvbmZpZ194bWw9M0ROb25lLCBmaWxlX3BhdGg9M0ROb25lLCBleHRyYV89CmRpcnM9M0RO
b25lKToKICAgICAgICAgc3VwZXIoRGlza09iamVjdFN0b3JlLCBzZWxmKS5fX2luaXRfXyhjb25m
aWcsIGNvbmZpZ194bWw9M0ROb25lLCBmPQppbGVfcGF0aD0zRGZpbGVfcGF0aCwgZXh0cmFfZGly
cz0zRGV4dHJhX2RpcnMpCiAgICAgICAgIHNlbGYuZmlsZV9wYXRoID0zRCBmaWxlX3BhdGggb3Ig
Y29uZmlnLmZpbGVfcGF0aAotICAgICAgICBzZWxmLmNvbmZpZyA9M0QgY29uZmlnCi0gICAgICAg
IHNlbGYuY2hlY2tfb2xkX3N0eWxlID0zRCBjb25maWcub2JqZWN0X3N0b3JlX2NoZWNrX29sZF9z
dHlsZQotICAgICAgICBzZWxmLmV4dHJhX2RpcnNbJ2pvYl93b3JrJ10gPTNEIGNvbmZpZy5qb2Jf
d29ya2luZ19kaXJlY3RvcnkKLSAgICAgICAgc2VsZi5leHRyYV9kaXJzWyd0ZW1wJ10gPTNEIGNv
bmZpZy5uZXdfZmlsZV9wYXRoCiAgICAgICAgICMgVGhlIG5ldyBjb25maWdfeG1sIG92ZXJyaWRl
cyB1bml2ZXJzZSBzZXR0aW5ncy4KICAgICAgICAgaWYgY29uZmlnX3htbCBpcyBub3QgTm9uZToK
ICAgICAgICAgICAgIGZvciBlIGluIGNvbmZpZ194bWw6CkBAIC0yNTIsNyArMjUyLDE3IEBACiAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNvbXBvc2VkIGRpcmVjdG9yeSBzdHJ1Y3R1cmUg
ZG9lcyBub3QgaW5jbHVkZT0KIGEgaGFzaCBpZAogICAgICAgICAgICAgICAgICAgICAgICAgIChl
LmcuLCAvZmlsZXMvZGF0YXNldF8xMC5kYXQgKG9sZCkgdnMuIC9maWxlcy8wMDA9Ci9kYXRhc2V0
XzEwLmRhdCAobmV3KSkKICAgICAgICAgIiIiCi0gICAgICAgIGJhc2UgPTNEIHNlbGYuZXh0cmFf
ZGlycy5nZXQoYmFzZV9kaXIsIHNlbGYuZmlsZV9wYXRoKQorICAgICAgICBiYXNlID0zRCBvcy5w
YXRoLmFic3BhdGgoc2VsZi5leHRyYV9kaXJzLmdldChiYXNlX2Rpciwgc2VsZi5maWxlX3A9CmF0
aCkpCisgICAgICAgICMgZXh0cmFfZGlyIHNob3VsZCBuZXZlciBiZSBjb25zdHJ1Y3RlZCBmcm9t
IHByb3ZpZGVkIGRhdGEgYnV0IGp1c3QKKyAgICAgICAgIyBtYWtlIHN1cmUgdGhlcmUgYXJlIG5v
IHNoZW5hbm5pZ2FucyBhZm9vdAorICAgICAgICBpZiBleHRyYV9kaXIgYW5kIGV4dHJhX2RpciAh
PTNEIG9zLnBhdGgubm9ybXBhdGgoZXh0cmFfZGlyKToKKyAgICAgICAgICAgIGxvZy53YXJuaW5n
KCdleHRyYV9kaXIgaXMgbm90IG5vcm1hbGl6ZWQ6ICVzJywgZXh0cmFfZGlyKQorICAgICAgICAg
ICAgcmFpc2UgT2JqZWN0SW52YWxpZCgiVGhlIHJlcXVlc3RlZCBvYmplY3QgaXMgaW52YWxpZCIp
CisgICAgICAgICMgZW5zdXJlIHRoYXQgYW55IHBhcmVudCBkaXJlY3RvcnkgcmVmZXJlbmNlcyBp
biBhbHRfbmFtZSB3b3VsZCBub3QKKyAgICAgICAgIyByZXN1bHQgaW4gYSBwYXRoIG5vdCBjb250
YWluZWQgaW4gdGhlIGRpcmVjdG9yeSBwYXRoIGNvbnN0cnVjdGVkPQogaGVyZQorICAgICAgICBp
ZiBhbHRfbmFtZSBhbmQgbm90IHNhZmVfcmVscGF0aChhbHRfbmFtZSk6CisgICAgICAgICAgICBs
b2cud2FybmluZygnYWx0X25hbWUgd291bGQgbG9jYXRlIHBhdGggb3V0c2lkZSBkaXI6ICVzJywg
YWx0Xz0KbmFtZSkKKyAgICAgICAgICAgIHJhaXNlIE9iamVjdEludmFsaWQoIlRoZSByZXF1ZXN0
ZWQgb2JqZWN0IGlzIGludmFsaWQiKQogICAgICAgICBpZiBvbGRfc3R5bGU6CiAgICAgICAgICAg
ICBpZiBleHRyYV9kaXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcGF0aCA9M0Qgb3Mu
cGF0aC5qb2luKGJhc2UsIGV4dHJhX2RpcikKQEAgLTYxOSw5ICs2MjksMTAgQEAKICAgICBlbGlm
IHN0b3JlID0zRD0zRCAnaXJvZHMnOgogICAgICAgICBmcm9tIC5yb2RzIGltcG9ydCBJUk9EU09i
amVjdFN0b3JlCiAgICAgICAgIHJldHVybiBJUk9EU09iamVjdFN0b3JlKGNvbmZpZz0zRGNvbmZp
ZywgY29uZmlnX3htbD0zRGNvbmZpZ194bWwpCi0gICAgZWxpZiBzdG9yZSA9M0Q9M0QgJ3B1bHNh
cic6Ci0gICAgICAgIGZyb20gLnB1bHNhciBpbXBvcnQgUHVsc2FyT2JqZWN0U3RvcmUKLSAgICAg
ICAgcmV0dXJuIFB1bHNhck9iamVjdFN0b3JlKGNvbmZpZz0zRGNvbmZpZywgY29uZmlnX3htbD0z
RGNvbmZpZ194bWwpCisgICAgIyBEaXNhYmxlIHRoZSBQdWxzYXIgb2JqZWN0IHN0b3JlIGZvciBu
b3cgdW50aWwgaXQgcmVjZWl2ZXMgc29tZSBhdHRlbj0KdGlvbgorICAgICMgZWxpZiBzdG9yZSA9
M0Q9M0QgJ3B1bHNhcic6CisgICAgIyAgICBmcm9tIC5wdWxzYXIgaW1wb3J0IFB1bHNhck9iamVj
dFN0b3JlCisgICAgIyAgICByZXR1cm4gUHVsc2FyT2JqZWN0U3RvcmUoY29uZmlnPTNEY29uZmln
LCBjb25maWdfeG1sPTNEY29uZmlnX3htbCkKICAgICBlbHNlOgogICAgICAgICBsb2cuZXJyb3Io
IlVucmVjb2duaXplZCBvYmplY3Qgc3RvcmUgZGVmaW5pdGlvbjogezB9Ii5mb3JtYXQoc3RvcmU9
CikpCj0yMAoKZGlmZiAtciBjOGFiMGZlMjg2YmYxMGFkZDI2ZmU5NjczMzBjZmM3OTk5YWZmZGYw
IC1yIDAzNGNiMGZiODdkZmMyYWU1NmRlMTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3OSBsaWIvZ2FsYXh5
L29iamVjdHN0b3JlL3JvZHMucHkKLS0tIGEvbGliL2dhbGF4eS9vYmplY3RzdG9yZS9yb2RzLnB5
CisrKyBiL2xpYi9nYWxheHkvb2JqZWN0c3RvcmUvcm9kcy5weQpAQCAtMTIsNyArMTIsOCBAQAog
ZnJvbSBwb3NpeHBhdGggaW1wb3J0IGJhc2VuYW1lIGFzIHBhdGhfYmFzZW5hbWUKIGZyb20gcG9z
aXhwYXRoIGltcG9ydCBkaXJuYW1lIGFzIHBhdGhfZGlybmFtZQo9MjAKLWZyb20gZ2FsYXh5LmV4
Y2VwdGlvbnMgaW1wb3J0IE9iamVjdE5vdEZvdW5kCitmcm9tIGdhbGF4eS5leGNlcHRpb25zIGlt
cG9ydCBPYmplY3ROb3RGb3VuZCwgT2JqZWN0SW52YWxpZAorZnJvbSBnYWxheHkudXRpbCBpbXBv
cnQgc2FmZV9yZWxwYXRoCiBmcm9tIC4ub2JqZWN0c3RvcmUgaW1wb3J0IERpc2tPYmplY3RTdG9y
ZSwgT2JqZWN0U3RvcmUsIGxvY2FsX2V4dHJhX2RpcnMKPTIwCiB0cnk6CkBAIC03MSw2ICs3Miwy
MCBAQAogICAgICAgICBsb2cuaW5mbyggImlST0RTIGRhdGEgZm9yIHRoaXMgaW5zdGFuY2Ugd2ls
bCBiZSBzdG9yZWQgaW4gY29sbGVjdGk9Cm9uOiAlcywgcmVzb3VyY2U6ICVzIiwgc2VsZi5yb290
X2NvbGxlY3Rpb25fcGF0aCwgc2VsZi5kZWZhdWx0X3Jlc291cmNlICkKPTIwCiAgICAgZGVmIF9f
Z2V0X3JvZHNfcGF0aCggc2VsZiwgb2JqLCBiYXNlX2Rpcj0zRE5vbmUsIGRpcl9vbmx5PTNERmFs
c2UsIGV4dD0KcmFfZGlyPTNETm9uZSwgZXh0cmFfZGlyX2F0X3Jvb3Q9M0RGYWxzZSwgYWx0X25h
bWU9M0ROb25lLCBzdHJpcF9kYXQ9M0RUcnVlPQosICoqa3dhcmdzICk6CisgICAgICAgICMgZXh0
cmFfZGlyIHNob3VsZCBuZXZlciBiZSBjb25zdHJ1Y3RlZCBmcm9tIHByb3ZpZGVkIGRhdGEgYnV0
IGp1c3QKKyAgICAgICAgIyBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIHNoZW5hbm5pZ2FucyBhZm9v
dAorICAgICAgICBpZiBleHRyYV9kaXIgYW5kIGV4dHJhX2RpciAhPTNEIG9zLnBhdGgubm9ybXBh
dGgoZXh0cmFfZGlyKToKKyAgICAgICAgICAgIGxvZy53YXJuaW5nKCdleHRyYV9kaXIgaXMgbm90
IG5vcm1hbGl6ZWQ6ICVzJywgZXh0cmFfZGlyKQorICAgICAgICAgICAgcmFpc2UgT2JqZWN0SW52
YWxpZCgiVGhlIHJlcXVlc3RlZCBvYmplY3QgaXMgaW52YWxpZCIpCisgICAgICAgICMgZW5zdXJl
IHRoYXQgYW55IHBhcmVudCBkaXJlY3RvcnkgcmVmZXJlbmNlcyBpbiBhbHRfbmFtZSB3b3VsZCBu
b3QKKyAgICAgICAgIyByZXN1bHQgaW4gYSBwYXRoIG5vdCBjb250YWluZWQgaW4gdGhlIGRpcmVj
dG9yeSBwYXRoIGNvbnN0cnVjdGVkPQogaGVyZQorICAgICAgICBpZiBhbHRfbmFtZToKKyAgICAg
ICAgICAgIGlmIG5vdCBzYWZlX3JlbHBhdGgoYWx0X25hbWUpOgorICAgICAgICAgICAgICAgIGxv
Zy53YXJuaW5nKCdhbHRfbmFtZSB3b3VsZCBsb2NhdGUgcGF0aCBvdXRzaWRlIGRpcjogJXMnLCA9
CmFsdF9uYW1lKQorICAgICAgICAgICAgICAgIHJhaXNlIE9iamVjdEludmFsaWQoIlRoZSByZXF1
ZXN0ZWQgb2JqZWN0IGlzIGludmFsaWQiKQorICAgICAgICAgICAgIyBhbHRfbmFtZSBjYW4gY29u
dGFpbiBwYXJlbnQgZGlyZWN0b3J5IHJlZmVyZW5jZXMsIGJ1dCBpUk9EUyA9CndpbGwKKyAgICAg
ICAgICAgICMgbm90IGZvbGxvdyB0aGVtLCBzbyBpZiB0aGV5IGFyZSB2YWxpZCB3ZSBub3JtYWxp
emUgdGhlbSBvdXQKKyAgICAgICAgICAgIGFsdF9uYW1lID0zRCBvcy5wYXRoLm5vcm1wYXRoKGFs
dF9uYW1lKQogICAgICAgICBwYXRoID0zRCAiIgogICAgICAgICBpZiBleHRyYV9kaXIgaXMgbm90
IE5vbmU6CiAgICAgICAgICAgICBwYXRoID0zRCBleHRyYV9kaXIKCmRpZmYgLXIgYzhhYjBmZTI4
NmJmMTBhZGQyNmZlOTY3MzMwY2ZjNzk5OWFmZmRmMCAtciAwMzRjYjBmYjg3ZGZjMmFlNTZkZTEw
Nz0KMmE0NWE2ODE4OTc5N2U5NzkgbGliL2dhbGF4eS9vYmplY3RzdG9yZS9zMy5weQotLS0gYS9s
aWIvZ2FsYXh5L29iamVjdHN0b3JlL3MzLnB5CisrKyBiL2xpYi9nYWxheHkvb2JqZWN0c3RvcmUv
czMucHkKQEAgLTEyLDggKzEyLDggQEAKPTIwCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGlt
ZQo9MjAKLWZyb20gZ2FsYXh5LmV4Y2VwdGlvbnMgaW1wb3J0IE9iamVjdE5vdEZvdW5kCi1mcm9t
IGdhbGF4eS51dGlsIGltcG9ydCBzdHJpbmdfYXNfYm9vbCwgdW1hc2tfZml4X3Blcm1zCitmcm9t
IGdhbGF4eS5leGNlcHRpb25zIGltcG9ydCBPYmplY3ROb3RGb3VuZCwgT2JqZWN0SW52YWxpZAor
ZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgc3RyaW5nX2FzX2Jvb2wsIHVtYXNrX2ZpeF9wZXJtcywg
c2FmZV9yZWxwYXRoCiBmcm9tIGdhbGF4eS51dGlsLmRpcmVjdG9yeV9oYXNoIGltcG9ydCBkaXJl
Y3RvcnlfaGFzaF9pZAogZnJvbSBnYWxheHkudXRpbC5zbGVlcGVyIGltcG9ydCBTbGVlcGVyCiBm
cm9tIC5zM19tdWx0aXBhcnRfdXBsb2FkIGltcG9ydCBtdWx0aXBhcnRfdXBsb2FkCkBAIC00NSw3
ICs0NSw2IEBACiAgICAgICAgIGlmIGJvdG8gaXMgTm9uZToKICAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbihOT19CT1RPX0VSUk9SX01FU1NBR0UpCiAgICAgICAgIHN1cGVyKFMzT2JqZWN0U3Rv
cmUsIHNlbGYpLl9faW5pdF9fKGNvbmZpZywgY29uZmlnX3htbCkKLSAgICAgICAgc2VsZi5jb25m
aWcgPTNEIGNvbmZpZwogICAgICAgICBzZWxmLnN0YWdpbmdfcGF0aCA9M0Qgc2VsZi5jb25maWcu
ZmlsZV9wYXRoCiAgICAgICAgIHNlbGYudHJhbnNmZXJfcHJvZ3Jlc3MgPTNEIDAKICAgICAgICAg
c2VsZi5fcGFyc2VfY29uZmlnX3htbChjb25maWdfeG1sKQpAQCAtMjA5LDYgKzIwOCwyMCBAQAog
ICAgICAgICAgICAgICAgIHVtYXNrX2ZpeF9wZXJtcyggcGF0aCwgc2VsZi5jb25maWcudW1hc2ss
IDA2NjYsIHNlbGYuY29uZmk9CmcuZ2lkICkKPTIwCiAgICAgZGVmIF9jb25zdHJ1Y3RfcGF0aChz
ZWxmLCBvYmosIGJhc2VfZGlyPTNETm9uZSwgZGlyX29ubHk9M0ROb25lLCBleHRyYT0KX2Rpcj0z
RE5vbmUsIGV4dHJhX2Rpcl9hdF9yb290PTNERmFsc2UsIGFsdF9uYW1lPTNETm9uZSwgb2JqX2Rp
cj0zREZhbHNlLCAqPQoqa3dhcmdzKToKKyAgICAgICAgIyBleHRyYV9kaXIgc2hvdWxkIG5ldmVy
IGJlIGNvbnN0cnVjdGVkIGZyb20gcHJvdmlkZWQgZGF0YSBidXQganVzdAorICAgICAgICAjIG1h
a2Ugc3VyZSB0aGVyZSBhcmUgbm8gc2hlbmFubmlnYW5zIGFmb290CisgICAgICAgIGlmIGV4dHJh
X2RpciBhbmQgZXh0cmFfZGlyICE9M0Qgb3MucGF0aC5ub3JtcGF0aChleHRyYV9kaXIpOgorICAg
ICAgICAgICAgbG9nLndhcm5pbmcoJ2V4dHJhX2RpciBpcyBub3Qgbm9ybWFsaXplZDogJXMnLCBl
eHRyYV9kaXIpCisgICAgICAgICAgICByYWlzZSBPYmplY3RJbnZhbGlkKCJUaGUgcmVxdWVzdGVk
IG9iamVjdCBpcyBpbnZhbGlkIikKKyAgICAgICAgIyBlbnN1cmUgdGhhdCBhbnkgcGFyZW50IGRp
cmVjdG9yeSByZWZlcmVuY2VzIGluIGFsdF9uYW1lIHdvdWxkIG5vdAorICAgICAgICAjIHJlc3Vs
dCBpbiBhIHBhdGggbm90IGNvbnRhaW5lZCBpbiB0aGUgZGlyZWN0b3J5IHBhdGggY29uc3RydWN0
ZWQ9CiBoZXJlCisgICAgICAgIGlmIGFsdF9uYW1lOgorICAgICAgICAgICAgaWYgbm90IHNhZmVf
cmVscGF0aChhbHRfbmFtZSk6CisgICAgICAgICAgICAgICAgbG9nLndhcm5pbmcoJ2FsdF9uYW1l
IHdvdWxkIGxvY2F0ZSBwYXRoIG91dHNpZGUgZGlyOiAlcycsID0KYWx0X25hbWUpCisgICAgICAg
ICAgICAgICAgcmFpc2UgT2JqZWN0SW52YWxpZCgiVGhlIHJlcXVlc3RlZCBvYmplY3QgaXMgaW52
YWxpZCIpCisgICAgICAgICAgICAjIGFsdF9uYW1lIGNhbiBjb250YWluIHBhcmVudCBkaXJlY3Rv
cnkgcmVmZXJlbmNlcywgYnV0IFMzIHdpbD0KbCBub3QKKyAgICAgICAgICAgICMgZm9sbG93IHRo
ZW0sIHNvIGlmIHRoZXkgYXJlIHZhbGlkIHdlIG5vcm1hbGl6ZSB0aGVtIG91dAorICAgICAgICAg
ICAgYWx0X25hbWUgPTNEIG9zLnBhdGgubm9ybXBhdGgoYWx0X25hbWUpCiAgICAgICAgIHJlbF9w
YXRoID0zRCBvcy5wYXRoLmpvaW4oKmRpcmVjdG9yeV9oYXNoX2lkKG9iai5pZCkpCiAgICAgICAg
IGlmIGV4dHJhX2RpciBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGlmIGV4dHJhX2Rpcl9hdF9y
b290OgoKZGlmZiAtciBjOGFiMGZlMjg2YmYxMGFkZDI2ZmU5NjczMzBjZmM3OTk5YWZmZGYwIC1y
IDAzNGNiMGZiODdkZmMyYWU1NmRlMTA3PQoyYTQ1YTY4MTg5Nzk3ZTk3OSBsaWIvZ2FsYXh5L3Rv
b2xzL19faW5pdF9fLnB5Ci0tLSBhL2xpYi9nYWxheHkvdG9vbHMvX19pbml0X18ucHkKKysrIGIv
bGliL2dhbGF4eS90b29scy9fX2luaXRfXy5weQpAQCAtMTUxNyw2ICsxNTE3LDggQEAKICAgICAg
ICAgICAgICAgICAgICAgICAgIGdyb3VwX2Vycm9yc1stMV0gPTNEIHsgJ19faW5kZXhfXyc6ICdD
YW5ub3QgYWRkIHJlPQpwZWF0IChtYXggc2l6ZT0zRCVpKS4nICUgaW5wdXQubWF4IH0KICAgICAg
ICAgICAgICAgICAgICAgICAgIGFueV9ncm91cF9lcnJvcnMgPTNEIFRydWUKICAgICAgICAgICAg
ICAgICAgICAgcmVwX2luZGV4ICs9M0QgMQorICAgICAgICAgICAgICAgIGlmIGFueV9ncm91cF9l
cnJvcnM6CisgICAgICAgICAgICAgICAgICAgIGVycm9yc1sgaW5wdXQubmFtZSBdID0zRCBncm91
cF9lcnJvcnMKICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSggaW5wdXQsIENvbmRpdGlvbmFs
ICk6CiAgICAgICAgICAgICAgICAgZ3JvdXBfc3RhdGUgPTNEIHN0YXRlW2lucHV0Lm5hbWVdCiAg
ICAgICAgICAgICAgICAgZ3JvdXBfcHJlZml4ID0zRCAiJXN8IiAlICgga2V5ICkKCmRpZmYgLXIg
YzhhYjBmZTI4NmJmMTBhZGQyNmZlOTY3MzMwY2ZjNzk5OWFmZmRmMCAtciAwMzRjYjBmYjg3ZGZj
MmFlNTZkZTEwNz0KMmE0NWE2ODE4OTc5N2U5NzkgbGliL2dhbGF4eS90b29scy9pbXBfZXhwL19f
aW5pdF9fLnB5Ci0tLSBhL2xpYi9nYWxheHkvdG9vbHMvaW1wX2V4cC9fX2luaXRfXy5weQorKysg
Yi9saWIvZ2FsYXh5L3Rvb2xzL2ltcF9leHAvX19pbml0X18ucHkKQEAgLTUsNiArNSw3IEBACiBp
bXBvcnQganNvbgogaW1wb3J0IGRhdGV0aW1lCiBmcm9tIGdhbGF4eSBpbXBvcnQgbW9kZWwKK2Zy
b20gZ2FsYXh5LmV4Y2VwdGlvbnMgaW1wb3J0IE1hbGZvcm1lZENvbnRlbnRzCiBmcm9tIGdhbGF4
eS5tb2RlbC5pdGVtX2F0dHJzIGltcG9ydCBVc2VzQW5ub3RhdGlvbnMKIGZyb20gZ2FsYXh5Lm1v
ZGVsLm9ybSBpbXBvcnQgZWFnZXJsb2FkLCBlYWdlcmxvYWRfYWxsCiBmcm9tIGdhbGF4eS50b29s
cy5wYXJhbWV0ZXJzLmJhc2ljIGltcG9ydCBVbnZhbGlkYXRlZFZhbHVlCkBAIC0xOTIsOSArMTkz
LDkgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgZGF0YXNldF9hdHRycy5nZXQoJ2V4cG9ydGVk
JywgVHJ1ZSkgaXMgVHJ1ZToKICAgICAgICAgICAgICAgICAgICAgICAgICMgRG8gc2VjdXJpdHkg
Y2hlY2sgYW5kIG1vdmUvY29weSBkYXRhc2V0IGRhdGEuCiAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZW1wX2RhdGFzZXRfZmlsZV9uYW1lID0zRCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3MucGF0aC5hYnNwYXRoKCBvcy5wYXRoLmpvaW4oIGFyY2hpdmVfZGlyLCBkYT0KdGFzZXRf
YXR0cnNbJ2ZpbGVfbmFtZSddICkgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBh
dGgucmVhbHBhdGgoIG9zLnBhdGguYWJzcGF0aCggb3MucGF0aC5qb2k9Cm4oIGFyY2hpdmVfZGly
LCBkYXRhc2V0X2F0dHJzWydmaWxlX25hbWUnXSApICkgKQogICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgbm90IGZpbGVfaW5fZGlyKCB0ZW1wX2RhdGFzZXRfZmlsZV9uYW1lLCBvcy5wYXQ9Cmgu
am9pbiggYXJjaGl2ZV9kaXIsICJkYXRhc2V0cyIgKSApOgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbiggIkludmFsaWQgZGF0YXNldCBwYXRoOiAlcyIgJSA9CnRl
bXBfZGF0YXNldF9maWxlX25hbWUgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNl
IE1hbGZvcm1lZENvbnRlbnRzKCAiSW52YWxpZCBkYXRhc2V0IHBhdGg9CjogJXMiICUgdGVtcF9k
YXRhc2V0X2ZpbGVfbmFtZSApCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBkYXRhc2V0c191
c2FnZV9jb3VudHNbIHRlbXBfZGF0YXNldF9maWxlX25hbWUgXT0KID0zRD0zRCAxOgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNodXRpbC5tb3ZlKCB0ZW1wX2RhdGFzZXRfZmlsZV9uYW1l
LCBoZGEuZmlsZV89Cm5hbWUgKQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKQEAgLTMx
Niw2ICszMTcsNyBAQAogICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKICAgICAgICAg
ICAgICAgICBqaWhhLmpvYi5zdGRlcnIgKz0zRCAiRXJyb3IgY2xlYW5pbmcgdXAgaGlzdG9yeSBp
bXBvcnQgam9iPQo6ICVzIiAlIGUKICAgICAgICAgICAgICAgICBzZWxmLnNhX3Nlc3Npb24uZmx1
c2goKQorICAgICAgICAgICAgICAgIHJhaXNlCj0yMAo9MjAKIGNsYXNzIEpvYkV4cG9ydEhpc3Rv
cnlBcmNoaXZlV3JhcHBlciggb2JqZWN0LCBVc2VzQW5ub3RhdGlvbnMgKToKCmRpZmYgLXIgYzhh
YjBmZTI4NmJmMTBhZGQyNmZlOTY3MzMwY2ZjNzk5OWFmZmRmMCAtciAwMzRjYjBmYjg3ZGZjMmFl
NTZkZTEwNz0KMmE0NWE2ODE4OTc5N2U5NzkgbGliL2dhbGF4eS90b29scy9pbXBfZXhwL3VucGFj
a190YXJfZ3pfYXJjaGl2ZS5weQotLS0gYS9saWIvZ2FsYXh5L3Rvb2xzL2ltcF9leHAvdW5wYWNr
X3Rhcl9nel9hcmNoaXZlLnB5CisrKyBiL2xpYi9nYWxheHkvdG9vbHMvaW1wX2V4cC91bnBhY2tf
dGFyX2d6X2FyY2hpdmUucHkKQEAgLTYsNiArNiw3IEBACiAgICAgLS1bdXJsfGZpbGVdIHNvdXJj
ZSB0eXBlLCBlaXRoZXIgYSBVUkwgb3IgYSBmaWxlLgogIiIiCj0yMAoraW1wb3J0IG9zCiBpbXBv
cnQgc3lzCiBpbXBvcnQgb3B0cGFyc2UKIGltcG9ydCB0YXJmaWxlCkBAIC00Myw2ICs0NCwyMiBA
QAogICAgICAgICByZXR1cm4gTm9uZQo9MjAKPTIwCitkZWYgY2hlY2tfYXJjaGl2ZSggYXJjaGl2
ZV9maWxlLCBkZXN0X2RpciApOgorICAgICIiIgorICAgIEVuc3VyZSB0aGF0IGEgdGFyIGFyY2hp
dmUgaGFzIG5vIGFic29sdXRlIHBhdGhzIG9yIHJlbGF0aXZlIHBhdGhzIG91dHM9CmlkZQorICAg
IHRoZSBhcmNoaXZlLgorICAgICIiIgorICAgIHdpdGggdGFyZmlsZS5vcGVuKCBhcmNoaXZlX2Zp
bGUsIG1vZGU9M0QncjpneicgKSBhcyBhcmNoaXZlX2ZwOgorICAgICAgICBmb3IgYXJjX3BhdGgg
aW4gYXJjaGl2ZV9mcC5nZXRuYW1lcygpOgorICAgICAgICAgICAgYXNzZXJ0IG9zLnBhdGgubm9y
bXBhdGgoCisgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKAorICAgICAgICAgICAgICAgICAg
ICBkZXN0X2RpciwKKyAgICAgICAgICAgICAgICAgICAgYXJjX3BhdGgKKyAgICAgICAgICAgICAg
ICApICkuc3RhcnRzd2l0aCggZGVzdF9kaXIucnN0cmlwKG9zLnNlcCkgKyBvcy5zZXAgKSwgXAor
ICAgICAgICAgICAgICAgICJBcmNoaXZlIG1lbWJlciB3b3VsZCBleHRyYWN0IG91dHNpZGUgdGFy
Z2V0IGRpcmVjdG9yeTogJXM9CiIgJSBhcmNfcGF0aAorICAgIHJldHVybiBUcnVlCisKKwogZGVm
IHVucGFja19hcmNoaXZlKCBhcmNoaXZlX2ZpbGUsIGRlc3RfZGlyICk6CiAgICAgIiIiCiAgICAg
VW5wYWNrIGEgdGFyIGFuZC9vciBnemlwcGVkIGFyY2hpdmUgaW50byBhIGRlc3RpbmF0aW9uIGRp
cmVjdG9yeS4KQEAgLTUxLDEzICs2OCw4IEBACiAgICAgYXJjaGl2ZV9mcC5leHRyYWN0YWxsKCBw
YXRoPTNEZGVzdF9kaXIgKQogICAgIGFyY2hpdmVfZnAuY2xvc2UoKQo9MjAKLWlmIF9fbmFtZV9f
ID0zRD0zRCAiX19tYWluX18iOgotICAgICMgUGFyc2UgY29tbWFuZCBsaW5lLgotICAgIHBhcnNl
ciA9M0Qgb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkKLSAgICBwYXJzZXIuYWRkX29wdGlvbiggJy1V
JywgJy0tdXJsJywgZGVzdD0zRCdpc191cmwnLCBhY3Rpb249M0Qic3RvcmVfdHJ1PQplIiwgaGVs
cD0zRCdTb3VyY2UgaXMgYSBVUkwuJyApCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oICctRicsICct
LWZpbGUnLCBkZXN0PTNEJ2lzX2ZpbGUnLCBhY3Rpb249M0Qic3RvcmVfdD0KcnVlIiwgaGVscD0z
RCdTb3VyY2UgaXMgYSBVUkwuJyApCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oICctZScsICctLWVu
Y29kZWQnLCBkZXN0PTNEJ2lzX2I2NGVuY29kZWQnLCBhY3Rpb249Cj0zRCJzdG9yZV90cnVlIiwg
ZGVmYXVsdD0zREZhbHNlLCBoZWxwPTNEJ1NvdXJjZSBhbmQgZGVzdGluYXRpb24gZGlyIHZhbHVl
cz0KIGFyZSBiYXNlNjQgZW5jb2RlZC4nICkKLSAgICAob3B0aW9ucywgYXJncykgPTNEIHBhcnNl
ci5wYXJzZV9hcmdzKCkKKworZGVmIG1haW4ob3B0aW9ucywgYXJncyk6CiAgICAgaXNfdXJsID0z
RCBib29sKCBvcHRpb25zLmlzX3VybCApCiAgICAgaXNfZmlsZSA9M0QgYm9vbCggb3B0aW9ucy5p
c19maWxlICkKICAgICBhcmNoaXZlX3NvdXJjZSwgZGVzdF9kaXIgPTNEIGFyZ3MKQEAgLTY2LDE0
ICs3OCwyNSBAQAogICAgICAgICBhcmNoaXZlX3NvdXJjZSA9M0QgYjY0ZGVjb2RlKCBhcmNoaXZl
X3NvdXJjZSApCiAgICAgICAgIGRlc3RfZGlyID0zRCBiNjRkZWNvZGUoIGRlc3RfZGlyICkKPTIw
CisgICAgIyBHZXQgYXJjaGl2ZSBmcm9tIFVSTC4KKyAgICBpZiBpc191cmw6CisgICAgICAgIGFy
Y2hpdmVfZmlsZSA9M0QgdXJsX3RvX2ZpbGUoIGFyY2hpdmVfc291cmNlLCB0ZW1wZmlsZS5OYW1l
ZFRlbXBvcj0KYXJ5RmlsZSggZGlyPTNEZGVzdF9kaXIgKS5uYW1lICkKKyAgICBlbGlmIGlzX2Zp
bGU6CisgICAgICAgIGFyY2hpdmVfZmlsZSA9M0QgYXJjaGl2ZV9zb3VyY2UKKworICAgICMgVW5w
YWNrIGFyY2hpdmUuCisgICAgY2hlY2tfYXJjaGl2ZSggYXJjaGl2ZV9maWxlLCBkZXN0X2RpciAp
CisgICAgdW5wYWNrX2FyY2hpdmUoIGFyY2hpdmVfZmlsZSwgZGVzdF9kaXIgKQorCisKK2lmIF9f
bmFtZV9fID0zRD0zRCAiX19tYWluX18iOgorICAgICMgUGFyc2UgY29tbWFuZCBsaW5lLgorICAg
IHBhcnNlciA9M0Qgb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkKKyAgICBwYXJzZXIuYWRkX29wdGlv
biggJy1VJywgJy0tdXJsJywgZGVzdD0zRCdpc191cmwnLCBhY3Rpb249M0Qic3RvcmVfdHJ1PQpl
IiwgaGVscD0zRCdTb3VyY2UgaXMgYSBVUkwuJyApCisgICAgcGFyc2VyLmFkZF9vcHRpb24oICct
RicsICctLWZpbGUnLCBkZXN0PTNEJ2lzX2ZpbGUnLCBhY3Rpb249M0Qic3RvcmVfdD0KcnVlIiwg
aGVscD0zRCdTb3VyY2UgaXMgYSBVUkwuJyApCisgICAgcGFyc2VyLmFkZF9vcHRpb24oICctZScs
ICctLWVuY29kZWQnLCBkZXN0PTNEJ2lzX2I2NGVuY29kZWQnLCBhY3Rpb249Cj0zRCJzdG9yZV90
cnVlIiwgZGVmYXVsdD0zREZhbHNlLCBoZWxwPTNEJ1NvdXJjZSBhbmQgZGVzdGluYXRpb24gZGly
IHZhbHVlcz0KIGFyZSBiYXNlNjQgZW5jb2RlZC4nICkKKyAgICAob3B0aW9ucywgYXJncykgPTNE
IHBhcnNlci5wYXJzZV9hcmdzKCkKICAgICB0cnk6Ci0gICAgICAgICMgR2V0IGFyY2hpdmUgZnJv
bSBVUkwuCi0gICAgICAgIGlmIGlzX3VybDoKLSAgICAgICAgICAgIGFyY2hpdmVfZmlsZSA9M0Qg
dXJsX3RvX2ZpbGUoIGFyY2hpdmVfc291cmNlLCB0ZW1wZmlsZS5OYW1lZFRlPQptcG9yYXJ5Rmls
ZSggZGlyPTNEZGVzdF9kaXIgKS5uYW1lICkKLSAgICAgICAgZWxpZiBpc19maWxlOgotICAgICAg
ICAgICAgYXJjaGl2ZV9maWxlID0zRCBhcmNoaXZlX3NvdXJjZQotCi0gICAgICAgICMgVW5wYWNr
IGFyY2hpdmUuCi0gICAgICAgIHVucGFja19hcmNoaXZlKCBhcmNoaXZlX2ZpbGUsIGRlc3RfZGly
ICkKKyAgICAgICAgbWFpbihvcHRpb25zLCBhcmdzKQogICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6
CiAgICAgICAgIHByaW50ICJFcnJvciB1bnBhY2tpbmcgdGFyL2d6IGFyY2hpdmU6ICVzIiAlIGUs
IHN5cy5zdGRlcnIKClRoaXMgZGlmZiBpcyBzbyBiaWcgdGhhdCB3ZSBuZWVkZWQgdG8gdHJ1bmNh
dGUgdGhlIHJlbWFpbmRlci4KCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNl
bnRyYWwvY29tbWl0cy8zNmMwNTI2MTM0MzQvCkNoYW5nZXNldDogICAzNmMwNTI2MTM0MzQKQnJh
bmNoOiAgICAgIHJlbGVhc2VfMTUuMTAKVXNlcjogICAgICAgIG5hdGVmb28KRGF0ZTogICAgICAg
IDIwMTYtMDItMjQgMjE6MDE6MjgrMDA6MDAKU3VtbWFyeTogICAgIFJlbGVhc2UgMTUuMTAuMgpB
ZmZlY3RlZCAjOiAgNzUgZmlsZXMKCmRpZmYgLXIgZDYyZjNlNTBiNTY3YTE1N2MwOTQ0NDczYWRi
YmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0Zj0KNGJkZDRiMWUxOWE5N2Fh
NTUgY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9jb2xsZWN0aW9uL2xpc3QtY29sbGVjdGlvbi1j
cmVhPQp0b3IuanMKLS0tIGEvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9jb2xsZWN0aW9uL2xp
c3QtY29sbGVjdGlvbi1jcmVhdG9yLmpzCisrKyBiL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMv
Y29sbGVjdGlvbi9saXN0LWNvbGxlY3Rpb24tY3JlYXRvci5qcwpAQCAtMTAwMyw3ICsxMDAzLDcg
QEAKICAgICAgICAgdGl0bGUgICA6IG9wdGlvbnMudGl0bGUgfHwgX2woICdDcmVhdGUgYSBjb2xs
ZWN0aW9uJyApLAogICAgICAgICBib2R5ICAgIDogY3JlYXRvci4kZWwsCiAgICAgICAgIHdpZHRo
ICAgOiAnODAlJywKLSAgICAgICAgaGVpZ2h0ICA6ICdtaW4tY29udGVudCcsCisgICAgICAgIGhl
aWdodCAgOiAnMTAwJScsCiAgICAgICAgIGNsb3NpbmdfZXZlbnRzOiB0cnVlCiAgICAgfSk7CiAg
ICAgY3JlYXRvci5yZW5kZXIoKTsKCmRpZmYgLXIgZDYyZjNlNTBiNTY3YTE1N2MwOTQ0NDczYWRi
YmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0Zj0KNGJkZDRiMWUxOWE5N2Fh
NTUgY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9saWJyYXJ5L2xpYnJhcnktZm9sZGVydG9vbGJh
ci12PQppZXcuanMKLS0tIGEvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9saWJyYXJ5L2xpYnJh
cnktZm9sZGVydG9vbGJhci12aWV3LmpzCisrKyBiL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMv
bGlicmFyeS9saWJyYXJ5LWZvbGRlcnRvb2xiYXItdmlldy5qcwpAQCAtNTUwLDcgKzU1MCwxMSBA
QAogICAgICAgfSwKICAgICAgIGVycm9yOiBmdW5jdGlvbihtb2RlbCwgcmVzcG9uc2UpewogICAg
ICAgICBpZiAodHlwZW9mIHJlc3BvbnNlLnJlc3BvbnNlSlNPTiAhPTNEPTNEICJ1bmRlZmluZWQi
KXsKLSAgICAgICAgICBtb2RfdG9hc3RyLmVycm9yKHJlc3BvbnNlLnJlc3BvbnNlSlNPTi5lcnJf
bXNnKTsKKyAgICAgICAgICBpZiAocmVzcG9uc2UucmVzcG9uc2VKU09OLmVycl9jb2RlID0zRD0z
RD0zRCA0MDQwMDEpeworICAgICAgICAgICAgbW9kX3RvYXN0ci53YXJuaW5nKHJlc3BvbnNlLnJl
c3BvbnNlSlNPTi5lcnJfbXNnKTsKKyAgICAgICAgICB9IGVsc2V7CisgICAgICAgICAgICBtb2Rf
dG9hc3RyLmVycm9yKHJlc3BvbnNlLnJlc3BvbnNlSlNPTi5lcnJfbXNnKTsKKyAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgbW9kX3RvYXN0ci5lcnJvcignQW4gZXJyb3Ig
b2N1cnJlZC4nKTsKICAgICAgICAgfQoKZGlmZiAtciBkNjJmM2U1MGI1NjdhMTU3YzA5NDQ0NzNh
ZGJiYzQxMGM1NTUyZDFhIC1yIDM2YzA1MjYxMzQzNDEyMzcwZjllNDRmPQo0YmRkNGIxZTE5YTk3
YWE1NSBjbGllbnQvZ2FsYXh5L3NjcmlwdHMvdXRpbHMvdXBsb2FkYm94LmpzCi0tLSBhL2NsaWVu
dC9nYWxheHkvc2NyaXB0cy91dGlscy91cGxvYWRib3guanMKKysrIGIvY2xpZW50L2dhbGF4eS9z
Y3JpcHRzL3V0aWxzL3VwbG9hZGJveC5qcwpAQCAtMTE3LDEwICsxMTcsMTAgQEAKPTIwCiAgICAg
ICAgIC8vIGFwcGVuZCBoaWRkZW4gdXBsb2FkIGZpZWxkCiAgICAgICAgIHZhciAkaW5wdXQgPTNE
ICQoJzxpbnB1dCB0eXBlPTNEImZpbGUiIHN0eWxlPTNEImRpc3BsYXk6IG5vbmUiICcgKz0KIChv
cHRzLm11bHRpcGxlICYmICdtdWx0aXBsZScgfHwgJycpICsgJy8+Jyk7Ci0gICAgICAgIGVsLmFw
cGVuZCgkaW5wdXQpLmNoYW5nZShmdW5jdGlvbiAoZSkgeworICAgICAgICBlbC5hcHBlbmQoJGlu
cHV0LmNoYW5nZShmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgb3B0cy5vbmNoYW5nZShlLnRh
cmdldC5maWxlcyk7CiAgICAgICAgICAgICAkKHRoaXMpLnZhbCgnJyk7Ci0gICAgICAgIH0pOwor
ICAgICAgICB9KSk7Cj0yMAogICAgICAgICAvLyBkcmFnL2Ryb3AgZXZlbnRzCiAgICAgICAgIGVs
Lm9uKCdkcm9wJywgZnVuY3Rpb24gKGUpIHsKCmRpZmYgLXIgZDYyZjNlNTBiNTY3YTE1N2MwOTQ0
NDczYWRiYmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0Zj0KNGJkZDRiMWUx
OWE5N2FhNTUgZWdncy5pbmkKLS0tIGEvZWdncy5pbmkKKysrIGIvZWdncy5pbmkKQEAgLTMwLDcg
KzMwLDcgQEAKIDsgbXNncGFja19weXRob24gPTNEIDAuMi40Cj0yMAogW2VnZ3M6bm9wbGF0Zm9y
bV0KLWFtcXAgPTNEIDEuNC42CithbXFwID0zRCAxLjQuOAogYW55anNvbiA9M0QgMC4zLjMKIEJl
YWtlciA9M0QgMS40CiBiaW9ibGVuZCA9M0QgMC41LjIKQEAgLTQwLDcgKzQwLDcgQEAKIGRybWFh
ID0zRCAwLjcuNgogRmFicmljID0zRCAxLjcuMAogaW1wb3J0bGliID0zRCAxLjAuMwota29tYnUg
PTNEIDMuMC4yNAora29tYnUgPTNEIDMuMC4zMAogbHJ1Y2FjaGUgPTNEIDAuMgogTWFrbyA9M0Qg
MC40LjEKIG1vY2sgPTNEIDEuMC4xCgpkaWZmIC1yIGQ2MmYzZTUwYjU2N2ExNTdjMDk0NDQ3M2Fk
YmJjNDEwYzU1NTJkMWEgLXIgMzZjMDUyNjEzNDM0MTIzNzBmOWU0NGY9CjRiZGQ0YjFlMTlhOTdh
YTU1IGxpYi9nYWxheHkvY29uZmlnLnB5Ci0tLSBhL2xpYi9nYWxheHkvY29uZmlnLnB5CisrKyBi
L2xpYi9nYWxheHkvY29uZmlnLnB5CkBAIC0yNTMsNyArMjUzLDkgQEAKICAgICAgICAgc2VsZi5s
b2dfZXZlbnRzID0zRCBzdHJpbmdfYXNfYm9vbCgga3dhcmdzLmdldCggJ2xvZ19ldmVudHMnLCAn
RmFsPQpzZScgKSApCiAgICAgICAgIHNlbGYuc2FuaXRpemVfYWxsX2h0bWwgPTNEIHN0cmluZ19h
c19ib29sKCBrd2FyZ3MuZ2V0KCAnc2FuaXRpemVfYT0KbGxfaHRtbCcsIFRydWUgKSApCiAgICAg
ICAgIHNlbGYuc2FuaXRpemVfd2hpdGVsaXN0X2ZpbGUgPTNEIHJlc29sdmVfcGF0aCgga3dhcmdz
LmdldCggJ3Nhbml0aT0KemVfd2hpdGVsaXN0X2ZpbGUnLCAiY29uZmlnL3Nhbml0aXplX3doaXRl
bGlzdC50eHQiICksIHNlbGYucm9vdCApCi0gICAgICAgIHNlbGYucmVsb2FkX3Nhbml0aXplX3do
aXRlbGlzdCgpCisgICAgICAgIHNlbGYuc2FuaXRpemVfd2hpdGVsaXN0ID0zRCBbXQorICAgICAg
ICBpZiBrd2FyZ3MuZ2V0KCdzYW5pdGl6ZV93aGl0ZWxpc3RfZmlsZScsIE5vbmUpIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgc2VsZi5yZWxvYWRfc2FuaXRpemVfd2hpdGVsaXN0KCkKICAgICAg
ICAgc2VsZi5zZXJ2ZV94c3NfdnVsbmVyYWJsZV9taW1ldHlwZXMgPTNEIHN0cmluZ19hc19ib29s
KCBrd2FyZ3MuZ2V0PQooICdzZXJ2ZV94c3NfdnVsbmVyYWJsZV9taW1ldHlwZXMnLCBGYWxzZSAp
ICkKICAgICAgICAgc2VsZi50cnVzdF9pcHl0aG9uX25vdGVib29rX2NvbnZlcnNpb24gPTNEIHN0
cmluZ19hc19ib29sKCBrd2FyZ3MuPQpnZXQoICd0cnVzdF9pcHl0aG9uX25vdGVib29rX2NvbnZl
cnNpb24nLCBGYWxzZSApICkKICAgICAgICAgc2VsZi5lbmFibGVfb2xkX2Rpc3BsYXlfYXBwbGlj
YXRpb25zID0zRCBzdHJpbmdfYXNfYm9vbCgga3dhcmdzLmdlPQp0KCAiZW5hYmxlX29sZF9kaXNw
bGF5X2FwcGxpY2F0aW9ucyIsICJUcnVlIiApICkKQEAgLTQ3NCw3ICs0NzYsNyBAQAogICAgICAg
ICAgICAgICAgICAgICBpZiBub3QgbGluZS5zdGFydHN3aXRoKCIjIik6CiAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLnNhbml0aXplX3doaXRlbGlzdC5hcHBlbmQobGluZS5zdHJpcCgpKQog
ICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgICAgIGxvZy53YXJuaW5nKCJTYW5pdGl6
ZSBsb2cgZmlsZSAlcyBkb2VzIG5vdCBleGlzdCwgY29udGludWluZyB3PQppdGggbm8gdG9vbHMg
d2hpdGVsaXN0ZWQuIikKKyAgICAgICAgICAgIGxvZy53YXJuaW5nKCJTYW5pdGl6ZSBsb2cgZmls
ZSAlcyBkb2VzIG5vdCBleGlzdCwgY29udGludWluZyB3PQppdGggbm8gdG9vbHMgd2hpdGVsaXN0
ZWQuIiwgc2VsZi5zYW5pdGl6ZV93aGl0ZWxpc3RfZmlsZSkKPTIwCiAgICAgZGVmIF9fcGFyc2Vf
Y29uZmlnX2ZpbGVfb3B0aW9ucyggc2VsZiwga3dhcmdzICk6CiAgICAgICAgICIiIgoKZGlmZiAt
ciBkNjJmM2U1MGI1NjdhMTU3YzA5NDQ0NzNhZGJiYzQxMGM1NTUyZDFhIC1yIDM2YzA1MjYxMzQz
NDEyMzcwZjllNDRmPQo0YmRkNGIxZTE5YTk3YWE1NSBsaWIvZ2FsYXh5L2RhdGF0eXBlcy9pbnRl
cnZhbC5weQotLS0gYS9saWIvZ2FsYXh5L2RhdGF0eXBlcy9pbnRlcnZhbC5weQorKysgYi9saWIv
Z2FsYXh5L2RhdGF0eXBlcy9pbnRlcnZhbC5weQpAQCAtMTUyMCwxNCArMTUyMCwyMSBAQAogICAg
ICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICBsaW5lID0zRCBmaC5yZWFkbGlu
ZSgpCiAgICAgICAgICAgICAgICAgbGluZSA9M0QgbGluZS5zdHJpcCgpCisgICAgICAgICAgICAg
ICAgIyBUaGUgZmlyc3QgbGluZSBpcyBhbHdheXMgYSBjb21tZW50IGxpa2UgdGhpczoKKyAgICAg
ICAgICAgICAgICAjIDIwMTUtMTEtMjMgMjA6MTg6NTYuNTE7aW5wdXQuYmFtO1JFQUQxCisgICAg
ICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCcjJyk6CisgICAgICAgICAgICAgICAgICAg
IGNvdW50ICs9M0QgMQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAg
ICAgIGlmIG5vdCBsaW5lOgogICAgICAgICAgICAgICAgICAgICAjIEVPRgogICAgICAgICAgICAg
ICAgICAgICBpZiBjb3VudCA+IDE6CisgICAgICAgICAgICAgICAgICAgICAgICAjIFRoZSBzZWNv
bmQgbGluZSBpcyBhbHdheXMgdGhlIGxhYmVsczoKKyAgICAgICAgICAgICAgICAgICAgICAgICMg
Y2hyb20gaW5kZXggZm9yd2FyZCByZXZlcnNlIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAg
ICAjIFdlIG5lZWQgYXQgbGVhc3QgdGhlIGNvbHVtbiBsYWJlbHMgYW5kIGEgZGF0YSBsaT0KbmUu
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgICAgICAjIFNraXAgZmlyc3QgbGluZS4KLSAgICAg
ICAgICAgICAgICBpZiBjb3VudCA+IDA6CisgICAgICAgICAgICAgICAgaWYgY291bnQgPiAxOgog
ICAgICAgICAgICAgICAgICAgICBpdGVtcyA9M0QgbGluZS5zcGxpdCgnXHQnKQogICAgICAgICAg
ICAgICAgICAgICBpZiBsZW4oaXRlbXMpICE9M0QgNToKICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBGYWxzZQoKZGlmZiAtciBkNjJmM2U1MGI1NjdhMTU3YzA5NDQ0NzNhZGJiYzQxMGM1
NTUyZDFhIC1yIDM2YzA1MjYxMzQzNDEyMzcwZjllNDRmPQo0YmRkNGIxZTE5YTk3YWE1NSBsaWIv
Z2FsYXh5L2V4Y2VwdGlvbnMvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4eS9leGNlcHRpb25z
L19faW5pdF9fLnB5CisrKyBiL2xpYi9nYWxheHkvZXhjZXB0aW9ucy9fX2luaXRfXy5weQpAQCAt
NzAsNiArNzAsMTEgQEAKICAgICBlcnJfY29kZSA9M0QgZXJyb3JfY29kZXMuTUFMRk9STUVEX0lE
Cj0yMAo9MjAKK2NsYXNzIE1hbGZvcm1lZENvbnRlbnRzKCBNZXNzYWdlRXhjZXB0aW9uICk6Cisg
ICAgc3RhdHVzX2NvZGUgPTNEIDQwMAorICAgIGVycl9jb2RlID0zRCBlcnJvcl9jb2Rlcy5NQUxG
T1JNRURfQ09OVEVOVFMKKworCiBjbGFzcyBVbmtub3duQ29udGVudHNUeXBlKCBNZXNzYWdlRXhj
ZXB0aW9uICk6CiAgICAgc3RhdHVzX2NvZGUgPTNEIDQwMAogICAgIGVycl9jb2RlID0zRCBlcnJv
cl9jb2Rlcy5VTktOT1dOX0NPTlRFTlRTX1RZUEUKCmRpZmYgLXIgZDYyZjNlNTBiNTY3YTE1N2Mw
OTQ0NDczYWRiYmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0Zj0KNGJkZDRi
MWUxOWE5N2FhNTUgbGliL2dhbGF4eS9leGNlcHRpb25zL2Vycm9yX2NvZGVzLmpzb24KLS0tIGEv
bGliL2dhbGF4eS9leGNlcHRpb25zL2Vycm9yX2NvZGVzLmpzb24KKysrIGIvbGliL2dhbGF4eS9l
eGNlcHRpb25zL2Vycm9yX2NvZGVzLmpzb24KQEAgLTYxLDEwICs2MSwxNSBAQAogICAgIH0sCiAg
ICB7CiAgICAgIm5hbWUiOiAiVVNFUl9UT09MX01FVEFfUEFSQU1FVEVSX1BST0JMRU0iLAotICAg
ICJjb2RlIjogNDAwMDExLAorICAgICJjb2RlIjogNDAwMDEyLAogICAgICJtZXNzYWdlIjogIlN1
cHBsaWVkIGluY29ycmVjdCBvciBpbmNvbXBhdGlibGUgdG9vbCBtZXRhIHBhcmFtZXRlcnMuIgog
ICAgfSwKICAgIHsKKyAgICAibmFtZSI6ICJNQUxGT1JNRURfQ09OVEVOVFMiLAorICAgICJjb2Rl
IjogNDAwMDEzLAorICAgICJtZXNzYWdlIjogIlRoZSBjb250ZW50cyBvZiB0aGUgcmVxdWVzdCBh
cmUgbWFsZm9ybWVkLiIKKyAgICB9LAorICAgewogICAgICJuYW1lIjogIlVTRVJfQVVUSEVOVElD
QVRJT05fRkFJTEVEIiwKICAgICAiY29kZSI6IDQwMTAwMSwKICAgICAibWVzc2FnZSI6ICJBdXRo
ZW50aWNhdGlvbiBmYWlsZWQsIGludmFsaWQgY3JlZGVudGlhbHMgc3VwcGxpZWQuIgoKZGlmZiAt
ciBkNjJmM2U1MGI1NjdhMTU3YzA5NDQ0NzNhZGJiYzQxMGM1NTUyZDFhIC1yIDM2YzA1MjYxMzQz
NDEyMzcwZjllNDRmPQo0YmRkNGIxZTE5YTk3YWE1NSBsaWIvZ2FsYXh5L2pvYnMvcnVubmVycy9f
X2luaXRfXy5weQotLS0gYS9saWIvZ2FsYXh5L2pvYnMvcnVubmVycy9fX2luaXRfXy5weQorKysg
Yi9saWIvZ2FsYXh5L2pvYnMvcnVubmVycy9fX2luaXRfXy5weQpAQCAtMzE5LDcgKzMxOSw3IEBA
CiAgICAgICAgICAgICAjIHN5bmMgZmlsZSBzeXN0ZW0gdG8gYXZvaWQgIlRleHQgZmlsZSBidXN5
IiBwcm9ibGVtcy4KICAgICAgICAgICAgICMgVGhlc2UgaGF2ZSBvY2N1cnJlZCBib3RoIGluIERv
Y2tlciBjb250YWluZXJzIGFuZCBvbiBFQzIgY2x1PQpzdGVycwogICAgICAgICAgICAgIyB1bmRl
ciBoaWdoIGxvYWQuCi0gICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoWyJzeW5jIl0p
CisgICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoWyIvYmluL3N5bmMiXSkKICAgICAg
ICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgIHBhc3MKPTIwCgpkaWZmIC1yIGQ2MmYz
ZTUwYjU2N2ExNTdjMDk0NDQ3M2FkYmJjNDEwYzU1NTJkMWEgLXIgMzZjMDUyNjEzNDM0MTIzNzBm
OWU0NGY9CjRiZGQ0YjFlMTlhOTdhYTU1IGxpYi9nYWxheHkvam9icy9ydW5uZXJzL3B1bHNhci5w
eQotLS0gYS9saWIvZ2FsYXh5L2pvYnMvcnVubmVycy9wdWxzYXIucHkKKysrIGIvbGliL2dhbGF4
eS9qb2JzL3J1bm5lcnMvcHVsc2FyLnB5CkBAIC02OSw2ICs2OSwxMCBAQAogICAgICAgICBtYXA9
M0RzcGVjcy50b19ib29sX29yX25vbmUsCiAgICAgICAgIGRlZmF1bHQ9M0ROb25lCiAgICAgKSwK
KyAgICBhbXFwX2Fja19yZXB1Ymxpc2hfdGltZT0zRGRpY3QoCisgICAgICAgIG1hcD0zRGxhbWJk
YSB2YWw6IE5vbmUgaWYgdmFsID0zRD0zRCAiTm9uZSIgZWxzZSBpbnQodmFsKSwKKyAgICAgICAg
ZGVmYXVsdD0zRE5vbmUsCisgICAgKSwKICAgICBhbXFwX2NvbnN1bWVyX3RpbWVvdXQ9M0RkaWN0
KAogICAgICAgICBtYXA9M0RsYW1iZGEgdmFsOiBOb25lIGlmIHZhbCA9M0Q9M0QgIk5vbmUiIGVs
c2UgZmxvYXQodmFsKSwKICAgICAgICAgZGVmYXVsdD0zRE5vbmUsCgpkaWZmIC1yIGQ2MmYzZTUw
YjU2N2ExNTdjMDk0NDQ3M2FkYmJjNDEwYzU1NTJkMWEgLXIgMzZjMDUyNjEzNDM0MTIzNzBmOWU0
NGY9CjRiZGQ0YjFlMTlhOTdhYTU1IGxpYi9nYWxheHkvbW9kZWwvX19pbml0X18ucHkKLS0tIGEv
bGliL2dhbGF4eS9tb2RlbC9fX2luaXRfXy5weQorKysgYi9saWIvZ2FsYXh5L21vZGVsL19faW5p
dF9fLnB5CkBAIC0yNCwxMSArMjQsNiBAQAogZnJvbSBzcWxhbGNoZW15Lm9ybSBpbXBvcnQgam9p
bmVkbG9hZCwgb2JqZWN0X3Nlc3Npb24sIGFsaWFzZWQKIGZyb20gc3FsYWxjaGVteS5leHQgaW1w
b3J0IGh5YnJpZAo9MjAKLXRyeToKLSAgICBpbXBvcnQgcGV4cGVjdAotZXhjZXB0IEltcG9ydEVy
cm9yOgotICAgIHBleHBlY3QgPTNEIE5vbmUKLQogaW1wb3J0IGdhbGF4eS5kYXRhdHlwZXMKIGlt
cG9ydCBnYWxheHkuZGF0YXR5cGVzLnJlZ2lzdHJ5CiBpbXBvcnQgZ2FsYXh5Lm1vZGVsLm9ybS5u
b3cKQEAgLTYwLDkgKzU1LDYgQEAKICMgdGhpcyBiZSB1bmxpbWl0ZWQgLSBmaWx0ZXIgaW4gUHl0
aG9uIGlmIG92ZXIgdGhpcyBsaW1pdC4KIE1BWF9JTl9GSUxURVJfTEVOR1RIID0zRCAxMDAKPTIw
Ci1QRVhQRUNUX0lNUE9SVF9NRVNTQUdFID0zRCAoJ1RoZSBQeXRob24gcGV4cGVjdCBwYWNrYWdl
IGlzIHJlcXVpcmVkIHRvIHVzZT0KIHRoaXMgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAn
ZmVhdHVyZSwgcGxlYXNlIGluc3RhbGwgaXQnKQotCj0yMAogY2xhc3MgTm9Db252ZXJ0ZXJFeGNl
cHRpb24oRXhjZXB0aW9uKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWUpOgpAQCAtNDI1
MSwzMCArNDI0Myw2IEBACiAgICAgICAgICAgICAgICAgdW50cmFuc2ZlcnJlZF9kYXRhc2V0cy5h
cHBlbmQoIGRhdGFzZXQgKQogICAgICAgICByZXR1cm4gdW50cmFuc2ZlcnJlZF9kYXRhc2V0cwo9
MjAKLSAgICBkZWYgZ2V0X3VudHJhbnNmZXJyZWRfZGF0YXNldF9zaXplKCBzZWxmLCBmaWxlcGF0
aCwgc2NwX2NvbmZpZ3MgKToKLSAgICAgICAgZGVmIHByaW50X3RpY2tzKCBkICk6Ci0gICAgICAg
ICAgICBwYXNzCi0gICAgICAgIGlmIHBleHBlY3QgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVy
biBQRVhQRUNUX0lNUE9SVF9NRVNTQUdFCi0gICAgICAgIGVycm9yX21zZyA9M0QgJ0Vycm9yIGVu
Y291bnRlcmVkIGluIGRldGVybWluaW5nIHRoZSBmaWxlIHNpemUgb2YgJT0KcyBvbiB0aGUgZXh0
ZXJuYWxfc2VydmljZS4nICUgZmlsZXBhdGgKLSAgICAgICAgaWYgbm90IHNjcF9jb25maWdzWydo
b3N0J10gb3Igbm90IHNjcF9jb25maWdzWyd1c2VyX25hbWUnXSBvciBub3QgPQpzY3BfY29uZmln
c1sncGFzc3dvcmQnXToKLSAgICAgICAgICAgIHJldHVybiBlcnJvcl9tc2cKLSAgICAgICAgbG9n
aW5fc3RyID0zRCAnJXNAJXMnICUgKCBzY3BfY29uZmlnc1sndXNlcl9uYW1lJ10sIHNjcF9jb25m
aWdzWydoPQpvc3QnXSApCi0gICAgICAgIGNtZCA9M0QgJ3NzaCAlcyAiZHUgLXNoIFwnJXNcJyIn
ICUgKCBsb2dpbl9zdHIsIGZpbGVwYXRoICkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3V0
cHV0ID0zRCBwZXhwZWN0LnJ1biggY21kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV2ZW50cz0zRHsgJy5zc3dvcmQ6Kic6IHNjcF9jb25maWdzWydwYXM9CnN3b3JkJ10gKyAn
XHJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGV4cGVj
dC5USU1FT1VUOiBwcmludF90aWNrc30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGltZW91dD0zRDEwICkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAg
IHJldHVybiBlcnJvcl9tc2cKLSAgICAgICAgIyBjbGVhbnVwIHRoZSBvdXRwdXQgdG8gZ2V0IGp1
c3QgdGhlIGZpbGUgc2l6ZQotICAgICAgICByZXR1cm4gb3V0cHV0LnJlcGxhY2UoIGZpbGVwYXRo
LCAnJyApXAotICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoICdQYXNzd29yZDonLCAnJyAp
XAotICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoICIncyBwYXNzd29yZDoiLCAnJyApXAot
ICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoIGxvZ2luX3N0ciwgJycgKVwKLSAgICAgICAg
ICAgICAgICAgICAgIC5zdHJpcCgpCi0KICAgICBAcHJvcGVydHkKICAgICBkZWYgcnVuX2RldGFp
bHMoIHNlbGYgKToKICAgICAgICAgIyBzZWxmLnJ1bnMgaXMgYSBsaXN0IG9mIFNhbXBsZVJ1bkFz
c29jaWF0aW9ucyBvcmRlcmVkIGRlc2NlbmRpbmcgPQpvbiB1cGRhdGVfdGltZS4KCmRpZmYgLXIg
ZDYyZjNlNTBiNTY3YTE1N2MwOTQ0NDczYWRiYmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQx
MjM3MGY5ZTQ0Zj0KNGJkZDRiMWUxOWE5N2FhNTUgbGliL2dhbGF4eS9tb2RlbC90b29sX3NoZWRf
aW5zdGFsbC9fX2luaXRfXy5weQotLS0gYS9saWIvZ2FsYXh5L21vZGVsL3Rvb2xfc2hlZF9pbnN0
YWxsL19faW5pdF9fLnB5CisrKyBiL2xpYi9nYWxheHkvbW9kZWwvdG9vbF9zaGVkX2luc3RhbGwv
X19pbml0X18ucHkKQEAgLTk2LDcgKzk2LDE0IEBACiAgICAgICAgIFJldHVybiB0aGUgaW4tbWVt
b3J5IHZlcnNpb24gb2YgdGhlIHNoZWRfdG9vbF9jb25mIGZpbGUsIHdoaWNoIGlzID0Kc3RvcmVk
IGluIHRoZSBjb25maWdfZWxlbXMgZW50cnkKICAgICAgICAgaW4gdGhlIHNoZWRfdG9vbF9jb25m
X2RpY3QuCiAgICAgICAgICIiIgotICAgICAgICBpZiBub3Qgc2VsZi5zaGVkX2NvbmZpZ19maWxl
bmFtZToKKworICAgICAgICBkZWYgX2lzX3ZhbGlkX3NoZWRfY29uZmlnX2ZpbGVuYW1lKCBmaWxl
bmFtZSApOgorICAgICAgICAgICAgZm9yIHNoZWRfdG9vbF9jb25mX2RpY3QgaW4gYXBwLnRvb2xi
b3guZHluYW1pY19jb25mcyggaW5jbHVkZV89Cm1pZ3JhdGVkX3Rvb2xfY29uZj0zRFRydWUgKToK
KyAgICAgICAgICAgICAgICBpZiBmaWxlbmFtZSA9M0Q9M0Qgc2hlZF90b29sX2NvbmZfZGljdFsg
J2NvbmZpZ19maWxlbmFtZScgPQpdOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQor
ICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgaWYgbm90IHNlbGYuc2hlZF9jb25m
aWdfZmlsZW5hbWUgb3Igbm90IF9pc192YWxpZF9zaGVkX2NvbmZpZ19maWxlPQpuYW1lKCBzZWxm
LnNoZWRfY29uZmlnX2ZpbGVuYW1lICk6CiAgICAgICAgICAgICBzZWxmLmd1ZXNzX3NoZWRfY29u
ZmlnKCBhcHAsIGRlZmF1bHQ9M0RkZWZhdWx0ICkKICAgICAgICAgaWYgc2VsZi5zaGVkX2NvbmZp
Z19maWxlbmFtZToKICAgICAgICAgICAgIGZvciBzaGVkX3Rvb2xfY29uZl9kaWN0IGluIGFwcC50
b29sYm94LmR5bmFtaWNfY29uZnMoIGluY2x1ZGVfPQptaWdyYXRlZF90b29sX2NvbmY9M0RUcnVl
ICk6CgpkaWZmIC1yIGQ2MmYzZTUwYjU2N2ExNTdjMDk0NDQ3M2FkYmJjNDEwYzU1NTJkMWEgLXIg
MzZjMDUyNjEzNDM0MTIzNzBmOWU0NGY9CjRiZGQ0YjFlMTlhOTdhYTU1IGxpYi9nYWxheHkvb2Jq
ZWN0c3RvcmUvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4eS9vYmplY3RzdG9yZS9fX2luaXRf
Xy5weQorKysgYi9saWIvZ2FsYXh5L29iamVjdHN0b3JlL19faW5pdF9fLnB5CkBAIC0xMSw3ICsx
MSw3IEBACiBpbXBvcnQgdGhyZWFkaW5nCiBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFRy
ZWUKPTIwCi1mcm9tIGdhbGF4eS51dGlsIGltcG9ydCB1bWFza19maXhfcGVybXMsIGZvcmNlX3N5
bWxpbmsKK2Zyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IHVtYXNrX2ZpeF9wZXJtcywgZm9yY2Vfc3lt
bGluaywgc2FmZV9yZWxwYXRoCiBmcm9tIGdhbGF4eS5leGNlcHRpb25zIGltcG9ydCBPYmplY3RJ
bnZhbGlkLCBPYmplY3ROb3RGb3VuZAogZnJvbSBnYWxheHkudXRpbC5zbGVlcGVyIGltcG9ydCBT
bGVlcGVyCiBmcm9tIGdhbGF4eS51dGlsLmRpcmVjdG9yeV9oYXNoIGltcG9ydCBkaXJlY3Rvcnlf
aGFzaF9pZApAQCAtMjUyLDcgKzI1MiwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHRo
ZSBjb21wb3NlZCBkaXJlY3Rvcnkgc3RydWN0dXJlIGRvZXMgbm90IGluY2x1ZGU9CiBhIGhhc2gg
aWQKICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiwgL2ZpbGVzL2RhdGFzZXRfMTAuZGF0
IChvbGQpIHZzLiAvZmlsZXMvMDAwPQovZGF0YXNldF8xMC5kYXQgKG5ldykpCiAgICAgICAgICIi
IgotICAgICAgICBiYXNlID0zRCBzZWxmLmV4dHJhX2RpcnMuZ2V0KGJhc2VfZGlyLCBzZWxmLmZp
bGVfcGF0aCkKKyAgICAgICAgYmFzZSA9M0Qgb3MucGF0aC5hYnNwYXRoKHNlbGYuZXh0cmFfZGly
cy5nZXQoYmFzZV9kaXIsIHNlbGYuZmlsZV9wPQphdGgpKQorICAgICAgICAjIGV4dHJhX2RpciBz
aG91bGQgbmV2ZXIgYmUgY29uc3RydWN0ZWQgZnJvbSBwcm92aWRlZCBkYXRhIGJ1dCBqdXN0Cisg
ICAgICAgICMgbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBzaGVuYW5uaWdhbnMgYWZvb3QKKyAgICAg
ICAgaWYgZXh0cmFfZGlyIGFuZCBleHRyYV9kaXIgIT0zRCBvcy5wYXRoLm5vcm1wYXRoKGV4dHJh
X2Rpcik6CisgICAgICAgICAgICBsb2cud2FybmluZygnZXh0cmFfZGlyIGlzIG5vdCBub3JtYWxp
emVkOiAlcycsIGV4dHJhX2RpcikKKyAgICAgICAgICAgIHJhaXNlIE9iamVjdEludmFsaWQoIlRo
ZSByZXF1ZXN0ZWQgb2JqZWN0IGlzIGludmFsaWQiKQorICAgICAgICAjIGVuc3VyZSB0aGF0IGFu
eSBwYXJlbnQgZGlyZWN0b3J5IHJlZmVyZW5jZXMgaW4gYWx0X25hbWUgd291bGQgbm90CisgICAg
ICAgICMgcmVzdWx0IGluIGEgcGF0aCBub3QgY29udGFpbmVkIGluIHRoZSBkaXJlY3RvcnkgcGF0
aCBjb25zdHJ1Y3RlZD0KIGhlcmUKKyAgICAgICAgaWYgYWx0X25hbWUgYW5kIG5vdCBzYWZlX3Jl
bHBhdGgoYWx0X25hbWUpOgorICAgICAgICAgICAgbG9nLndhcm5pbmcoJ2FsdF9uYW1lIHdvdWxk
IGxvY2F0ZSBwYXRoIG91dHNpZGUgZGlyOiAlcycsIGFsdF89Cm5hbWUpCisgICAgICAgICAgICBy
YWlzZSBPYmplY3RJbnZhbGlkKCJUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBpbnZhbGlkIikKICAg
ICAgICAgaWYgb2xkX3N0eWxlOgogICAgICAgICAgICAgaWYgZXh0cmFfZGlyIGlzIG5vdCBOb25l
OgogICAgICAgICAgICAgICAgIHBhdGggPTNEIG9zLnBhdGguam9pbihiYXNlLCBleHRyYV9kaXIp
CkBAIC02MTksOSArNjI5LDEwIEBACiAgICAgZWxpZiBzdG9yZSA9M0Q9M0QgJ2lyb2RzJzoKICAg
ICAgICAgZnJvbSAucm9kcyBpbXBvcnQgSVJPRFNPYmplY3RTdG9yZQogICAgICAgICByZXR1cm4g
SVJPRFNPYmplY3RTdG9yZShjb25maWc9M0Rjb25maWcsIGNvbmZpZ194bWw9M0Rjb25maWdfeG1s
KQotICAgIGVsaWYgc3RvcmUgPTNEPTNEICdwdWxzYXInOgotICAgICAgICBmcm9tIC5wdWxzYXIg
aW1wb3J0IFB1bHNhck9iamVjdFN0b3JlCi0gICAgICAgIHJldHVybiBQdWxzYXJPYmplY3RTdG9y
ZShjb25maWc9M0Rjb25maWcsIGNvbmZpZ194bWw9M0Rjb25maWdfeG1sKQorICAgICMgRGlzYWJs
ZSB0aGUgUHVsc2FyIG9iamVjdCBzdG9yZSBmb3Igbm93IHVudGlsIGl0IHJlY2VpdmVzIHNvbWUg
YXR0ZW49CnRpb24KKyAgICAjIGVsaWYgc3RvcmUgPTNEPTNEICdwdWxzYXInOgorICAgICMgICAg
ZnJvbSAucHVsc2FyIGltcG9ydCBQdWxzYXJPYmplY3RTdG9yZQorICAgICMgICAgcmV0dXJuIFB1
bHNhck9iamVjdFN0b3JlKGNvbmZpZz0zRGNvbmZpZywgY29uZmlnX3htbD0zRGNvbmZpZ194bWwp
CiAgICAgZWxzZToKICAgICAgICAgbG9nLmVycm9yKCJVbnJlY29nbml6ZWQgb2JqZWN0IHN0b3Jl
IGRlZmluaXRpb246IHswfSIuZm9ybWF0KHN0b3JlPQopKQo9MjAKCmRpZmYgLXIgZDYyZjNlNTBi
NTY3YTE1N2MwOTQ0NDczYWRiYmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0
Zj0KNGJkZDRiMWUxOWE5N2FhNTUgbGliL2dhbGF4eS9vYmplY3RzdG9yZS9yb2RzLnB5Ci0tLSBh
L2xpYi9nYWxheHkvb2JqZWN0c3RvcmUvcm9kcy5weQorKysgYi9saWIvZ2FsYXh5L29iamVjdHN0
b3JlL3JvZHMucHkKQEAgLTEyLDcgKzEyLDggQEAKIGZyb20gcG9zaXhwYXRoIGltcG9ydCBiYXNl
bmFtZSBhcyBwYXRoX2Jhc2VuYW1lCiBmcm9tIHBvc2l4cGF0aCBpbXBvcnQgZGlybmFtZSBhcyBw
YXRoX2Rpcm5hbWUKPTIwCi1mcm9tIGdhbGF4eS5leGNlcHRpb25zIGltcG9ydCBPYmplY3ROb3RG
b3VuZAorZnJvbSBnYWxheHkuZXhjZXB0aW9ucyBpbXBvcnQgT2JqZWN0Tm90Rm91bmQsIE9iamVj
dEludmFsaWQKK2Zyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IHNhZmVfcmVscGF0aAogZnJvbSAuLm9i
amVjdHN0b3JlIGltcG9ydCBEaXNrT2JqZWN0U3RvcmUsIE9iamVjdFN0b3JlLCBsb2NhbF9leHRy
YV9kaXJzCj0yMAogdHJ5OgpAQCAtNzEsNiArNzIsMjAgQEAKICAgICAgICAgbG9nLmluZm8oICJp
Uk9EUyBkYXRhIGZvciB0aGlzIGluc3RhbmNlIHdpbGwgYmUgc3RvcmVkIGluIGNvbGxlY3RpPQpv
bjogJXMsIHJlc291cmNlOiAlcyIsIHNlbGYucm9vdF9jb2xsZWN0aW9uX3BhdGgsIHNlbGYuZGVm
YXVsdF9yZXNvdXJjZSApCj0yMAogICAgIGRlZiBfX2dldF9yb2RzX3BhdGgoIHNlbGYsIG9iaiwg
YmFzZV9kaXI9M0ROb25lLCBkaXJfb25seT0zREZhbHNlLCBleHQ9CnJhX2Rpcj0zRE5vbmUsIGV4
dHJhX2Rpcl9hdF9yb290PTNERmFsc2UsIGFsdF9uYW1lPTNETm9uZSwgc3RyaXBfZGF0PTNEVHJ1
ZT0KLCAqKmt3YXJncyApOgorICAgICAgICAjIGV4dHJhX2RpciBzaG91bGQgbmV2ZXIgYmUgY29u
c3RydWN0ZWQgZnJvbSBwcm92aWRlZCBkYXRhIGJ1dCBqdXN0CisgICAgICAgICMgbWFrZSBzdXJl
IHRoZXJlIGFyZSBubyBzaGVuYW5uaWdhbnMgYWZvb3QKKyAgICAgICAgaWYgZXh0cmFfZGlyIGFu
ZCBleHRyYV9kaXIgIT0zRCBvcy5wYXRoLm5vcm1wYXRoKGV4dHJhX2Rpcik6CisgICAgICAgICAg
ICBsb2cud2FybmluZygnZXh0cmFfZGlyIGlzIG5vdCBub3JtYWxpemVkOiAlcycsIGV4dHJhX2Rp
cikKKyAgICAgICAgICAgIHJhaXNlIE9iamVjdEludmFsaWQoIlRoZSByZXF1ZXN0ZWQgb2JqZWN0
IGlzIGludmFsaWQiKQorICAgICAgICAjIGVuc3VyZSB0aGF0IGFueSBwYXJlbnQgZGlyZWN0b3J5
IHJlZmVyZW5jZXMgaW4gYWx0X25hbWUgd291bGQgbm90CisgICAgICAgICMgcmVzdWx0IGluIGEg
cGF0aCBub3QgY29udGFpbmVkIGluIHRoZSBkaXJlY3RvcnkgcGF0aCBjb25zdHJ1Y3RlZD0KIGhl
cmUKKyAgICAgICAgaWYgYWx0X25hbWU6CisgICAgICAgICAgICBpZiBub3Qgc2FmZV9yZWxwYXRo
KGFsdF9uYW1lKToKKyAgICAgICAgICAgICAgICBsb2cud2FybmluZygnYWx0X25hbWUgd291bGQg
bG9jYXRlIHBhdGggb3V0c2lkZSBkaXI6ICVzJywgPQphbHRfbmFtZSkKKyAgICAgICAgICAgICAg
ICByYWlzZSBPYmplY3RJbnZhbGlkKCJUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBpbnZhbGlkIikK
KyAgICAgICAgICAgICMgYWx0X25hbWUgY2FuIGNvbnRhaW4gcGFyZW50IGRpcmVjdG9yeSByZWZl
cmVuY2VzLCBidXQgaVJPRFMgPQp3aWxsCisgICAgICAgICAgICAjIG5vdCBmb2xsb3cgdGhlbSwg
c28gaWYgdGhleSBhcmUgdmFsaWQgd2Ugbm9ybWFsaXplIHRoZW0gb3V0CisgICAgICAgICAgICBh
bHRfbmFtZSA9M0Qgb3MucGF0aC5ub3JtcGF0aChhbHRfbmFtZSkKICAgICAgICAgcGF0aCA9M0Qg
IiIKICAgICAgICAgaWYgZXh0cmFfZGlyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcGF0aCA9
M0QgZXh0cmFfZGlyCgpkaWZmIC1yIGQ2MmYzZTUwYjU2N2ExNTdjMDk0NDQ3M2FkYmJjNDEwYzU1
NTJkMWEgLXIgMzZjMDUyNjEzNDM0MTIzNzBmOWU0NGY9CjRiZGQ0YjFlMTlhOTdhYTU1IGxpYi9n
YWxheHkvb2JqZWN0c3RvcmUvczMucHkKLS0tIGEvbGliL2dhbGF4eS9vYmplY3RzdG9yZS9zMy5w
eQorKysgYi9saWIvZ2FsYXh5L29iamVjdHN0b3JlL3MzLnB5CkBAIC0xMiw4ICsxMiw4IEBACj0y
MAogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKPTIwCi1mcm9tIGdhbGF4eS5leGNlcHRp
b25zIGltcG9ydCBPYmplY3ROb3RGb3VuZAotZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgc3RyaW5n
X2FzX2Jvb2wsIHVtYXNrX2ZpeF9wZXJtcworZnJvbSBnYWxheHkuZXhjZXB0aW9ucyBpbXBvcnQg
T2JqZWN0Tm90Rm91bmQsIE9iamVjdEludmFsaWQKK2Zyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IHN0
cmluZ19hc19ib29sLCB1bWFza19maXhfcGVybXMsIHNhZmVfcmVscGF0aAogZnJvbSBnYWxheHku
dXRpbC5kaXJlY3RvcnlfaGFzaCBpbXBvcnQgZGlyZWN0b3J5X2hhc2hfaWQKIGZyb20gZ2FsYXh5
LnV0aWwuc2xlZXBlciBpbXBvcnQgU2xlZXBlcgogZnJvbSAuczNfbXVsdGlwYXJ0X3VwbG9hZCBp
bXBvcnQgbXVsdGlwYXJ0X3VwbG9hZApAQCAtMjA4LDYgKzIwOCwyMCBAQAogICAgICAgICAgICAg
ICAgIHVtYXNrX2ZpeF9wZXJtcyggcGF0aCwgc2VsZi5jb25maWcudW1hc2ssIDA2NjYsIHNlbGYu
Y29uZmk9CmcuZ2lkICkKPTIwCiAgICAgZGVmIF9jb25zdHJ1Y3RfcGF0aChzZWxmLCBvYmosIGJh
c2VfZGlyPTNETm9uZSwgZGlyX29ubHk9M0ROb25lLCBleHRyYT0KX2Rpcj0zRE5vbmUsIGV4dHJh
X2Rpcl9hdF9yb290PTNERmFsc2UsIGFsdF9uYW1lPTNETm9uZSwgb2JqX2Rpcj0zREZhbHNlLCAq
PQoqa3dhcmdzKToKKyAgICAgICAgIyBleHRyYV9kaXIgc2hvdWxkIG5ldmVyIGJlIGNvbnN0cnVj
dGVkIGZyb20gcHJvdmlkZWQgZGF0YSBidXQganVzdAorICAgICAgICAjIG1ha2Ugc3VyZSB0aGVy
ZSBhcmUgbm8gc2hlbmFubmlnYW5zIGFmb290CisgICAgICAgIGlmIGV4dHJhX2RpciBhbmQgZXh0
cmFfZGlyICE9M0Qgb3MucGF0aC5ub3JtcGF0aChleHRyYV9kaXIpOgorICAgICAgICAgICAgbG9n
Lndhcm5pbmcoJ2V4dHJhX2RpciBpcyBub3Qgbm9ybWFsaXplZDogJXMnLCBleHRyYV9kaXIpCisg
ICAgICAgICAgICByYWlzZSBPYmplY3RJbnZhbGlkKCJUaGUgcmVxdWVzdGVkIG9iamVjdCBpcyBp
bnZhbGlkIikKKyAgICAgICAgIyBlbnN1cmUgdGhhdCBhbnkgcGFyZW50IGRpcmVjdG9yeSByZWZl
cmVuY2VzIGluIGFsdF9uYW1lIHdvdWxkIG5vdAorICAgICAgICAjIHJlc3VsdCBpbiBhIHBhdGgg
bm90IGNvbnRhaW5lZCBpbiB0aGUgZGlyZWN0b3J5IHBhdGggY29uc3RydWN0ZWQ9CiBoZXJlCisg
ICAgICAgIGlmIGFsdF9uYW1lOgorICAgICAgICAgICAgaWYgbm90IHNhZmVfcmVscGF0aChhbHRf
bmFtZSk6CisgICAgICAgICAgICAgICAgbG9nLndhcm5pbmcoJ2FsdF9uYW1lIHdvdWxkIGxvY2F0
ZSBwYXRoIG91dHNpZGUgZGlyOiAlcycsID0KYWx0X25hbWUpCisgICAgICAgICAgICAgICAgcmFp
c2UgT2JqZWN0SW52YWxpZCgiVGhlIHJlcXVlc3RlZCBvYmplY3QgaXMgaW52YWxpZCIpCisgICAg
ICAgICAgICAjIGFsdF9uYW1lIGNhbiBjb250YWluIHBhcmVudCBkaXJlY3RvcnkgcmVmZXJlbmNl
cywgYnV0IFMzIHdpbD0KbCBub3QKKyAgICAgICAgICAgICMgZm9sbG93IHRoZW0sIHNvIGlmIHRo
ZXkgYXJlIHZhbGlkIHdlIG5vcm1hbGl6ZSB0aGVtIG91dAorICAgICAgICAgICAgYWx0X25hbWUg
PTNEIG9zLnBhdGgubm9ybXBhdGgoYWx0X25hbWUpCiAgICAgICAgIHJlbF9wYXRoID0zRCBvcy5w
YXRoLmpvaW4oKmRpcmVjdG9yeV9oYXNoX2lkKG9iai5pZCkpCiAgICAgICAgIGlmIGV4dHJhX2Rp
ciBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGlmIGV4dHJhX2Rpcl9hdF9yb290OgoKZGlmZiAt
ciBkNjJmM2U1MGI1NjdhMTU3YzA5NDQ0NzNhZGJiYzQxMGM1NTUyZDFhIC1yIDM2YzA1MjYxMzQz
NDEyMzcwZjllNDRmPQo0YmRkNGIxZTE5YTk3YWE1NSBsaWIvZ2FsYXh5L3Rvb2xzL19faW5pdF9f
LnB5Ci0tLSBhL2xpYi9nYWxheHkvdG9vbHMvX19pbml0X18ucHkKKysrIGIvbGliL2dhbGF4eS90
b29scy9fX2luaXRfXy5weQpAQCAtMjAwMyw3ICsyMDAzLDcgQEAKICAgICAgICAgICAgICAgICBp
ZiBpc2luc3RhbmNlKCBpbnB1dCwgQ29uZGl0aW9uYWwgKToKICAgICAgICAgICAgICAgICAgICAg
Y29uZF9tZXNzYWdlcyA9M0Qge30KICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlucHV0Lmlz
X2pvYl9yZXNvdXJjZV9jb25kaXRpb25hbDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRf
bWVzc2FnZXMgPTNEIHsgaW5wdXQudGVzdF9wYXJhbS5uYW1lOiAiTm8gdmFsPQp1ZSBmb3VuZCBm
b3IgJyVzJXMnLCB1c2VkIGRlZmF1bHQiICUgKCBwcmVmaXgsIGlucHV0LmxhYmVsICkgfQorICAg
ICAgICAgICAgICAgICAgICAgICAgY29uZF9tZXNzYWdlcyA9M0QgeyBpbnB1dC50ZXN0X3BhcmFt
Lm5hbWU6ICJObyB2YWw9CnVlIGZvdW5kIGZvciAnJXMlcycsIHVzZWQgZGVmYXVsdCIgJSAoIHBy
ZWZpeCwgaW5wdXQudGVzdF9wYXJhbS5sYWJlbCApIH0KICAgICAgICAgICAgICAgICAgICAgICAg
IG1lc3NhZ2VzWyBpbnB1dC5uYW1lIF0gPTNEIGNvbmRfbWVzc2FnZXMKICAgICAgICAgICAgICAg
ICAgICAgdGVzdF92YWx1ZSA9M0QgaW5wdXQudGVzdF9wYXJhbS5nZXRfaW5pdGlhbF92YWx1ZSgg
dHJhPQpucywgY29udGV4dCApCiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfY2FzZSA9M0Qg
aW5wdXQuZ2V0X2N1cnJlbnRfY2FzZSggdGVzdF92YWx1ZSwgdD0KcmFucyApCkBAIC0yMDE2LDYg
KzIwMTYsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcF9kaWN0ID0zRCBkaWN0
KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlc1sgaW5wdXQubmFtZSBdLmFw
cGVuZCggcmVwX2RpY3QgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tf
YW5kX3VwZGF0ZV9wYXJhbV92YWx1ZXNfaGVscGVyKCBpbnA9CnV0LmlucHV0cywge30sIHRyYW5z
LCByZXBfZGljdCwgY29udGV4dCwgcmVwX3ByZWZpeCwgYWxsb3dfd29ya2Zsb3dfcGFyYW1ldD0K
ZXJzPTNEYWxsb3dfd29ya2Zsb3dfcGFyYW1ldGVycyApCisgICAgICAgICAgICAgICAgZWxpZiBp
c2luc3RhbmNlKCBpbnB1dCwgU2VjdGlvbiApOgorICAgICAgICAgICAgICAgICAgICBtZXNzYWdl
c1sgaW5wdXQubmFtZSBdID0zRCB7fQorICAgICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrX2Fu
ZF91cGRhdGVfcGFyYW1fdmFsdWVzX2hlbHBlciggaW5wdXQuaW5wdXQ9CnMsIHt9LCB0cmFucywg
bWVzc2FnZXNbIGlucHV0Lm5hbWUgXSwgY29udGV4dCwgcHJlZml4LCBhbGxvd193b3JrZmxvd19w
YXJhbT0KZXRlcnM9M0RhbGxvd193b3JrZmxvd19wYXJhbWV0ZXJzICkKICAgICAgICAgICAgICAg
ICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBtZXNzYWdlc1sgaW5wdXQubmFtZSBdID0zRCAi
Tm8gdmFsdWUgZm91bmQgZm9yICclcyVzJyw9CiB1c2VkIGRlZmF1bHQiICUgKCBwcmVmaXgsIGlu
cHV0LmxhYmVsICkKICAgICAgICAgICAgICAgICB2YWx1ZXNbIGlucHV0Lm5hbWUgXSA9M0QgaW5w
dXQuZ2V0X2luaXRpYWxfdmFsdWUoIHRyYW5zLCBjPQpvbnRleHQgKQpAQCAtMjA0Myw2ICsyMDQ2
LDkgQEAKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAg
IGN1cnJlbnQgPTNEIGdyb3VwX3ZhbHVlc1siX19jdXJyZW50X2Nhc2VfXyJdCiAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLmNoZWNrX2FuZF91cGRhdGVfcGFyYW1fdmFsdWVzX2hlbHBlcigg
aW5wdXQuYz0KYXNlc1tjdXJyZW50XS5pbnB1dHMsIGdyb3VwX3ZhbHVlcywgdHJhbnMsIG1lc3Nh
Z2VzLCBjb250ZXh0LCBwcmVmaXgsIGFsbG93PQpfd29ya2Zsb3dfcGFyYW1ldGVycz0zRGFsbG93
X3dvcmtmbG93X3BhcmFtZXRlcnMgKQorICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSgg
aW5wdXQsIFNlY3Rpb24gKToKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXNbIGlucHV0Lm5h
bWUgXSA9M0Qge30KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jaGVja19hbmRfdXBkYXRlX3Bh
cmFtX3ZhbHVlc19oZWxwZXIoIGlucHV0LmlucHV0PQpzLCB2YWx1ZXNbIGlucHV0Lm5hbWUgXSwg
dHJhbnMsIG1lc3NhZ2VzWyBpbnB1dC5uYW1lIF0sIGNvbnRleHQsIHByZWZpeCwgYWw9Cmxvd193
b3JrZmxvd19wYXJhbWV0ZXJzPTNEYWxsb3dfd29ya2Zsb3dfcGFyYW1ldGVycyApCiAgICAgICAg
ICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgIyBSZWd1bGFyIHRvb2wgcGFyYW1l
dGVyLCBubyByZWN1cnNpb24gbmVlZGVkCiAgICAgICAgICAgICAgICAgICAgIHRyeToKCmRpZmYg
LXIgZDYyZjNlNTBiNTY3YTE1N2MwOTQ0NDczYWRiYmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0
MzQxMjM3MGY5ZTQ0Zj0KNGJkZDRiMWUxOWE5N2FhNTUgbGliL2dhbGF4eS90b29scy9hY3Rpb25z
L19faW5pdF9fLnB5Ci0tLSBhL2xpYi9nYWxheHkvdG9vbHMvYWN0aW9ucy9fX2luaXRfXy5weQor
KysgYi9saWIvZ2FsYXh5L3Rvb2xzL2FjdGlvbnMvX19pbml0X18ucHkKQEAgLTExMSw5ICsxMTEs
MTkgQEAKICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSggaW5wdXQsIERhdGFDb2xsZWN0aW9u
VG9vbFBhcmFtZXRlciApOgogICAgICAgICAgICAgICAgIGlmIG5vdCB2YWx1ZToKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAgICAgZm9yIGksIHYgaW4gZW51bWVyYXRl
KCB2YWx1ZS5jb2xsZWN0aW9uLmRhdGFzZXRfaW5zdGFuY2VzID0KKToKKworICAgICAgICAgICAg
ICAgIGRhdGFzZXRfaW5zdGFuY2VzID0zRCBbXQorICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIo
IHZhbHVlLCAnY2hpbGRfY29sbGVjdGlvbicgKToKKyAgICAgICAgICAgICAgICAgICAgIyBpZiB3
ZSBhcmUgbWFwcGluZyBhIGNvbGxlY3Rpb24gb3ZlciBhIHRvb2wsIHdlIG9ubHkgPQpyZXF1aXJl
IHRoZSBjaGlsZF9jb2xsZWN0aW9uCisgICAgICAgICAgICAgICAgICAgIGRhdGFzZXRfaW5zdGFu
Y2VzID0zRCB2YWx1ZS5jaGlsZF9jb2xsZWN0aW9uLmRhdGFzZXRfaT0KbnN0YW5jZXMKKyAgICAg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIGVsc2UgdGhlIHRvb2wgdGFr
ZXMgYSBjb2xsZWN0aW9uIGFzIGlucHV0IHNvIHdlIG5lZWQ9CiBldmVyeXRoaW5nCisgICAgICAg
ICAgICAgICAgICAgIGRhdGFzZXRfaW5zdGFuY2VzID0zRCB2YWx1ZS5jb2xsZWN0aW9uLmRhdGFz
ZXRfaW5zdGFuYz0KZXMKKworICAgICAgICAgICAgICAgIGZvciBpLCB2IGluIGVudW1lcmF0ZSgg
ZGF0YXNldF9pbnN0YW5jZXMgKToKICAgICAgICAgICAgICAgICAgICAgZGF0YSA9M0QgdgogICAg
ICAgICAgICAgICAgICAgICBjdXJyZW50X3VzZXJfcm9sZXMgPTNEIHRyYW5zLmdldF9jdXJyZW50
X3VzZXJfcm9sZXMoKQorCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCB0cmFucy5hcHAuc2Vj
dXJpdHlfYWdlbnQuY2FuX2FjY2Vzc19kYXRhc2V0KCBjdT0KcnJlbnRfdXNlcl9yb2xlcywgZGF0
YS5kYXRhc2V0ICk6CiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oICJV
c2VyIGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0bz0KIHVzZSBhIGRhdGFzZXQgKCVzKSBwcm92
aWRlZCBmb3IgaW5wdXQuIiAlIGRhdGEuaWQgKQogICAgICAgICAgICAgICAgICAgICAjIFNraXBw
aW5nIGltcGxpY2l0IGNvbnZlcnNpb24gc3R1ZmYgZm9yIG5vdywgcmV2aXNpdCA9CmF0CkBAIC0y
MjQsNyArMjM0LDcgQEAKICAgICAgICAgY2hpbGRfZGF0YXNldF9uYW1lcyA9M0Qgc2V0KCkKICAg
ICAgICAgb2JqZWN0X3N0b3JlX3BvcHVsYXRvciA9M0QgT2JqZWN0U3RvcmVQb3B1bGF0b3IoIHRy
YW5zLmFwcCApCj0yMAotICAgICAgICBkZWYgaGFuZGxlX291dHB1dCggbmFtZSwgb3V0cHV0ICk6
CisgICAgICAgIGRlZiBoYW5kbGVfb3V0cHV0KCBuYW1lLCBvdXRwdXQsIGhpZGRlbj0zRE5vbmUg
KToKICAgICAgICAgICAgIGlmIG91dHB1dC5wYXJlbnQ6CiAgICAgICAgICAgICAgICAgcGFyZW50
X3RvX2NoaWxkX3BhaXJzLmFwcGVuZCggKCBvdXRwdXQucGFyZW50LCBuYW1lICkgKQogICAgICAg
ICAgICAgICAgIGNoaWxkX2RhdGFzZXRfbmFtZXMuYWRkKCBuYW1lICkKQEAgLTI0MCw3ICsyNTAs
OSBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBleHQgPTNEIGRldGVybWlu
ZV9vdXRwdXRfZm9ybWF0KCBvdXRwdXQsIHdyYXBwZWRfcGFyYW1zLnBhPQpyYW1zLCBpbnBfZGF0
YSwgaW5wdXRfZXh0ICkKICAgICAgICAgICAgICAgICBkYXRhID0zRCB0cmFucy5hcHAubW9kZWwu
SGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbiggZXh0ZW5zPQppb249M0RleHQsIGNyZWF0ZV9kYXRh
c2V0PTNEVHJ1ZSwgc2Ffc2Vzc2lvbj0zRHRyYW5zLnNhX3Nlc3Npb24gKQotICAgICAgICAgICAg
ICAgIGlmIG91dHB1dC5oaWRkZW46CisgICAgICAgICAgICAgICAgaWYgaGlkZGVuIGlzIE5vbmU6
CisgICAgICAgICAgICAgICAgICAgIGhpZGRlbiA9M0Qgb3V0cHV0LmhpZGRlbgorICAgICAgICAg
ICAgICAgIGlmIGhpZGRlbjoKICAgICAgICAgICAgICAgICAgICAgZGF0YS52aXNpYmxlID0zRCBG
YWxzZQogICAgICAgICAgICAgICAgICMgQ29tbWl0IHRoZSBkYXRhc2V0IGltbWVkaWF0ZWx5IHNv
IGl0IGdldHMgZGF0YWJhc2UgYXNzaWc9Cm5lZCB1bmlxdWUgaWQKICAgICAgICAgICAgICAgICB0
cmFucy5zYV9zZXNzaW9uLmFkZCggZGF0YSApCkBAIC0zMTgsNyArMzMwLDEwIEBACiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9lbGVtZW50X2lkZW50aWZpZXJzID0zRCBjdXJy
ZW50X2VsZW1lbj0KdF9pZGVudGlmaWVyc1sgaW5kZXggXVsgImVsZW1lbnRfaWRlbnRpZmllcnMi
IF0KPTIwCiAgICAgICAgICAgICAgICAgICAgICAgICBlZmZlY3RpdmVfb3V0cHV0X25hbWUgPTNE
IG91dHB1dF9wYXJ0X2RlZi5lZmZlY3Rpdj0KZV9vdXRwdXRfbmFtZQotICAgICAgICAgICAgICAg
ICAgICAgICAgZWxlbWVudCA9M0QgaGFuZGxlX291dHB1dCggZWZmZWN0aXZlX291dHB1dF9uYW1l
LCA9Cm91dHB1dF9wYXJ0X2RlZi5vdXRwdXRfZGVmICkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGVsZW1lbnQgPTNEIGhhbmRsZV9vdXRwdXQoIGVmZmVjdGl2ZV9vdXRwdXRfbmFtZSwgPQpvdXRw
dXRfcGFydF9kZWYub3V0cHV0X2RlZiwgaGlkZGVuPTNEVHJ1ZSApCisgICAgICAgICAgICAgICAg
ICAgICAgICAjIFRPRE86IHRoaXMgc2hvdWxkbid0IGV4aXN0IGluIHRoZSB0b3AtbGV2ZWwgb2Yg
dD0KaGUgaGlzdG9yeSBhdCBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICMgYnV0IGZvciBu
b3cgd2UgYXJlIHN0aWxsIHdvcmtpbmcgYXJvdW5kIHRoYXQgYnkgPQpoaWRpbmcgdGhlIGNvbnRl
bnRzCisgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZXJlLgogICAgICAgICAgICAgICAgICAg
ICAgICAgIyBGb2xsb3dpbmcgaGFjayBjYXVzZXMgZGF0YXNldCB0byBubyBiZSBhZGRlZCB0byA9
Cmhpc3RvcnkuLi4KICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkX2RhdGFzZXRfbmFtZXMu
YWRkKCBlZmZlY3RpdmVfb3V0cHV0X25hbWUgKQo9MjAKCmRpZmYgLXIgZDYyZjNlNTBiNTY3YTE1
N2MwOTQ0NDczYWRiYmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0Zj0KNGJk
ZDRiMWUxOWE5N2FhNTUgbGliL2dhbGF4eS90b29scy9pbXBfZXhwL19faW5pdF9fLnB5Ci0tLSBh
L2xpYi9nYWxheHkvdG9vbHMvaW1wX2V4cC9fX2luaXRfXy5weQorKysgYi9saWIvZ2FsYXh5L3Rv
b2xzL2ltcF9leHAvX19pbml0X18ucHkKQEAgLTEwLDYgKzEwLDcgQEAKIGZyb20gc3FsYWxjaGVt
eS5vcm0gaW1wb3J0IGVhZ2VybG9hZCwgZWFnZXJsb2FkX2FsbAo9MjAKIGZyb20gZ2FsYXh5IGlt
cG9ydCBtb2RlbAorZnJvbSBnYWxheHkuZXhjZXB0aW9ucyBpbXBvcnQgTWFsZm9ybWVkQ29udGVu
dHMKIGZyb20gZ2FsYXh5Lm1vZGVsLml0ZW1fYXR0cnMgaW1wb3J0IFVzZXNBbm5vdGF0aW9ucwog
ZnJvbSBnYWxheHkudG9vbHMucGFyYW1ldGVycy5iYXNpYyBpbXBvcnQgVW52YWxpZGF0ZWRWYWx1
ZQogZnJvbSBnYWxheHkudXRpbC5qc29uIGltcG9ydCBkdW1wcywgbG9hZHMKQEAgLTE3MCw5ICsx
NzEsOSBAQAogICAgICAgICAgICAgICAgICAgICBpZiBkYXRhc2V0X2F0dHJzLmdldCgnZXhwb3J0
ZWQnLCBUcnVlKSBpcyBUcnVlOgogICAgICAgICAgICAgICAgICAgICAgICAgIyBEbyBzZWN1cml0
eSBjaGVjayBhbmQgbW92ZS9jb3B5IGRhdGFzZXQgZGF0YS4KICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlbXBfZGF0YXNldF9maWxlX25hbWUgPTNEIFwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvcy5wYXRoLmFic3BhdGgoIG9zLnBhdGguam9pbiggYXJjaGl2ZV9kaXIsIGRhPQp0YXNl
dF9hdHRyc1snZmlsZV9uYW1lJ10gKSApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Mu
cGF0aC5yZWFscGF0aCggb3MucGF0aC5hYnNwYXRoKCBvcy5wYXRoLmpvaT0KbiggYXJjaGl2ZV9k
aXIsIGRhdGFzZXRfYXR0cnNbJ2ZpbGVfbmFtZSddICkgKSApCiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiBub3QgZmlsZV9pbl9kaXIoIHRlbXBfZGF0YXNldF9maWxlX25hbWUsIG9zLnBhdD0K
aC5qb2luKCBhcmNoaXZlX2RpciwgImRhdGFzZXRzIiApICk6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCAiSW52YWxpZCBkYXRhc2V0IHBhdGg6ICVzIiAlID0K
dGVtcF9kYXRhc2V0X2ZpbGVfbmFtZSApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFp
c2UgTWFsZm9ybWVkQ29udGVudHMoICJJbnZhbGlkIGRhdGFzZXQgcGF0aD0KOiAlcyIgJSB0ZW1w
X2RhdGFzZXRfZmlsZV9uYW1lICkKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRhdGFzZXRz
X3VzYWdlX2NvdW50c1sgdGVtcF9kYXRhc2V0X2ZpbGVfbmFtZSBdPQogPTNEPTNEIDE6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hcHAub2JqZWN0X3N0b3JlLnVwZGF0ZV9mcm9t
X2ZpbGUoIGhkYS5kYT0KdGFzZXQsIGZpbGVfbmFtZT0zRHRlbXBfZGF0YXNldF9maWxlX25hbWUs
IGNyZWF0ZT0zRFRydWUgKQo9MjAKQEAgLTMwOSw2ICszMTAsNyBAQAogICAgICAgICAgICAgZXhj
ZXB0IEV4Y2VwdGlvbiwgZToKICAgICAgICAgICAgICAgICBqaWhhLmpvYi5zdGRlcnIgKz0zRCAi
RXJyb3IgY2xlYW5pbmcgdXAgaGlzdG9yeSBpbXBvcnQgam9iPQo6ICVzIiAlIGUKICAgICAgICAg
ICAgICAgICBzZWxmLnNhX3Nlc3Npb24uZmx1c2goKQorICAgICAgICAgICAgICAgIHJhaXNlCj0y
MAo9MjAKIGNsYXNzIEpvYkV4cG9ydEhpc3RvcnlBcmNoaXZlV3JhcHBlciggb2JqZWN0LCBVc2Vz
QW5ub3RhdGlvbnMgKToKCmRpZmYgLXIgZDYyZjNlNTBiNTY3YTE1N2MwOTQ0NDczYWRiYmM0MTBj
NTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0Zj0KNGJkZDRiMWUxOWE5N2FhNTUgbGli
L2dhbGF4eS90b29scy9pbXBfZXhwL3VucGFja190YXJfZ3pfYXJjaGl2ZS5weQotLS0gYS9saWIv
Z2FsYXh5L3Rvb2xzL2ltcF9leHAvdW5wYWNrX3Rhcl9nel9hcmNoaXZlLnB5CisrKyBiL2xpYi9n
YWxheHkvdG9vbHMvaW1wX2V4cC91bnBhY2tfdGFyX2d6X2FyY2hpdmUucHkKQEAgLTYsNiArNiw3
IEBACiAgICAgLS1bdXJsfGZpbGVdIHNvdXJjZSB0eXBlLCBlaXRoZXIgYSBVUkwgb3IgYSBmaWxl
LgogIiIiCj0yMAoraW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgb3B0cGFyc2UKIGltcG9y
dCB0YXJmaWxlCkBAIC00Myw2ICs0NCwyMiBAQAogICAgICAgICByZXR1cm4gTm9uZQo9MjAKPTIw
CitkZWYgY2hlY2tfYXJjaGl2ZSggYXJjaGl2ZV9maWxlLCBkZXN0X2RpciApOgorICAgICIiIgor
ICAgIEVuc3VyZSB0aGF0IGEgdGFyIGFyY2hpdmUgaGFzIG5vIGFic29sdXRlIHBhdGhzIG9yIHJl
bGF0aXZlIHBhdGhzIG91dHM9CmlkZQorICAgIHRoZSBhcmNoaXZlLgorICAgICIiIgorICAgIHdp
dGggdGFyZmlsZS5vcGVuKCBhcmNoaXZlX2ZpbGUsIG1vZGU9M0QncjpneicgKSBhcyBhcmNoaXZl
X2ZwOgorICAgICAgICBmb3IgYXJjX3BhdGggaW4gYXJjaGl2ZV9mcC5nZXRuYW1lcygpOgorICAg
ICAgICAgICAgYXNzZXJ0IG9zLnBhdGgubm9ybXBhdGgoCisgICAgICAgICAgICAgICAgb3MucGF0
aC5qb2luKAorICAgICAgICAgICAgICAgICAgICBkZXN0X2RpciwKKyAgICAgICAgICAgICAgICAg
ICAgYXJjX3BhdGgKKyAgICAgICAgICAgICAgICApICkuc3RhcnRzd2l0aCggZGVzdF9kaXIucnN0
cmlwKG9zLnNlcCkgKyBvcy5zZXAgKSwgXAorICAgICAgICAgICAgICAgICJBcmNoaXZlIG1lbWJl
ciB3b3VsZCBleHRyYWN0IG91dHNpZGUgdGFyZ2V0IGRpcmVjdG9yeTogJXM9CiIgJSBhcmNfcGF0
aAorICAgIHJldHVybiBUcnVlCisKKwogZGVmIHVucGFja19hcmNoaXZlKCBhcmNoaXZlX2ZpbGUs
IGRlc3RfZGlyICk6CiAgICAgIiIiCiAgICAgVW5wYWNrIGEgdGFyIGFuZC9vciBnemlwcGVkIGFy
Y2hpdmUgaW50byBhIGRlc3RpbmF0aW9uIGRpcmVjdG9yeS4KQEAgLTUxLDEzICs2OCw4IEBACiAg
ICAgYXJjaGl2ZV9mcC5leHRyYWN0YWxsKCBwYXRoPTNEZGVzdF9kaXIgKQogICAgIGFyY2hpdmVf
ZnAuY2xvc2UoKQo9MjAKLWlmIF9fbmFtZV9fID0zRD0zRCAiX19tYWluX18iOgotICAgICMgUGFy
c2UgY29tbWFuZCBsaW5lLgotICAgIHBhcnNlciA9M0Qgb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkK
LSAgICBwYXJzZXIuYWRkX29wdGlvbiggJy1VJywgJy0tdXJsJywgZGVzdD0zRCdpc191cmwnLCBh
Y3Rpb249M0Qic3RvcmVfdHJ1PQplIiwgaGVscD0zRCdTb3VyY2UgaXMgYSBVUkwuJyApCi0gICAg
cGFyc2VyLmFkZF9vcHRpb24oICctRicsICctLWZpbGUnLCBkZXN0PTNEJ2lzX2ZpbGUnLCBhY3Rp
b249M0Qic3RvcmVfdD0KcnVlIiwgaGVscD0zRCdTb3VyY2UgaXMgYSBVUkwuJyApCi0gICAgcGFy
c2VyLmFkZF9vcHRpb24oICctZScsICctLWVuY29kZWQnLCBkZXN0PTNEJ2lzX2I2NGVuY29kZWQn
LCBhY3Rpb249Cj0zRCJzdG9yZV90cnVlIiwgZGVmYXVsdD0zREZhbHNlLCBoZWxwPTNEJ1NvdXJj
ZSBhbmQgZGVzdGluYXRpb24gZGlyIHZhbHVlcz0KIGFyZSBiYXNlNjQgZW5jb2RlZC4nICkKLSAg
ICAob3B0aW9ucywgYXJncykgPTNEIHBhcnNlci5wYXJzZV9hcmdzKCkKKworZGVmIG1haW4ob3B0
aW9ucywgYXJncyk6CiAgICAgaXNfdXJsID0zRCBib29sKCBvcHRpb25zLmlzX3VybCApCiAgICAg
aXNfZmlsZSA9M0QgYm9vbCggb3B0aW9ucy5pc19maWxlICkKICAgICBhcmNoaXZlX3NvdXJjZSwg
ZGVzdF9kaXIgPTNEIGFyZ3MKQEAgLTY2LDE0ICs3OCwyNSBAQAogICAgICAgICBhcmNoaXZlX3Nv
dXJjZSA9M0QgYjY0ZGVjb2RlKCBhcmNoaXZlX3NvdXJjZSApCiAgICAgICAgIGRlc3RfZGlyID0z
RCBiNjRkZWNvZGUoIGRlc3RfZGlyICkKPTIwCisgICAgIyBHZXQgYXJjaGl2ZSBmcm9tIFVSTC4K
KyAgICBpZiBpc191cmw6CisgICAgICAgIGFyY2hpdmVfZmlsZSA9M0QgdXJsX3RvX2ZpbGUoIGFy
Y2hpdmVfc291cmNlLCB0ZW1wZmlsZS5OYW1lZFRlbXBvcj0KYXJ5RmlsZSggZGlyPTNEZGVzdF9k
aXIgKS5uYW1lICkKKyAgICBlbGlmIGlzX2ZpbGU6CisgICAgICAgIGFyY2hpdmVfZmlsZSA9M0Qg
YXJjaGl2ZV9zb3VyY2UKKworICAgICMgVW5wYWNrIGFyY2hpdmUuCisgICAgY2hlY2tfYXJjaGl2
ZSggYXJjaGl2ZV9maWxlLCBkZXN0X2RpciApCisgICAgdW5wYWNrX2FyY2hpdmUoIGFyY2hpdmVf
ZmlsZSwgZGVzdF9kaXIgKQorCisKK2lmIF9fbmFtZV9fID0zRD0zRCAiX19tYWluX18iOgorICAg
ICMgUGFyc2UgY29tbWFuZCBsaW5lLgorICAgIHBhcnNlciA9M0Qgb3B0cGFyc2UuT3B0aW9uUGFy
c2VyKCkKKyAgICBwYXJzZXIuYWRkX29wdGlvbiggJy1VJywgJy0tdXJsJywgZGVzdD0zRCdpc191
cmwnLCBhY3Rpb249M0Qic3RvcmVfdHJ1PQplIiwgaGVscD0zRCdTb3VyY2UgaXMgYSBVUkwuJyAp
CisgICAgcGFyc2VyLmFkZF9vcHRpb24oICctRicsICctLWZpbGUnLCBkZXN0PTNEJ2lzX2ZpbGUn
LCBhY3Rpb249M0Qic3RvcmVfdD0KcnVlIiwgaGVscD0zRCdTb3VyY2UgaXMgYSBVUkwuJyApCisg
ICAgcGFyc2VyLmFkZF9vcHRpb24oICctZScsICctLWVuY29kZWQnLCBkZXN0PTNEJ2lzX2I2NGVu
Y29kZWQnLCBhY3Rpb249Cj0zRCJzdG9yZV90cnVlIiwgZGVmYXVsdD0zREZhbHNlLCBoZWxwPTNE
J1NvdXJjZSBhbmQgZGVzdGluYXRpb24gZGlyIHZhbHVlcz0KIGFyZSBiYXNlNjQgZW5jb2RlZC4n
ICkKKyAgICAob3B0aW9ucywgYXJncykgPTNEIHBhcnNlci5wYXJzZV9hcmdzKCkKICAgICB0cnk6
Ci0gICAgICAgICMgR2V0IGFyY2hpdmUgZnJvbSBVUkwuCi0gICAgICAgIGlmIGlzX3VybDoKLSAg
ICAgICAgICAgIGFyY2hpdmVfZmlsZSA9M0QgdXJsX3RvX2ZpbGUoIGFyY2hpdmVfc291cmNlLCB0
ZW1wZmlsZS5OYW1lZFRlPQptcG9yYXJ5RmlsZSggZGlyPTNEZGVzdF9kaXIgKS5uYW1lICkKLSAg
ICAgICAgZWxpZiBpc19maWxlOgotICAgICAgICAgICAgYXJjaGl2ZV9maWxlID0zRCBhcmNoaXZl
X3NvdXJjZQotCi0gICAgICAgICMgVW5wYWNrIGFyY2hpdmUuCi0gICAgICAgIHVucGFja19hcmNo
aXZlKCBhcmNoaXZlX2ZpbGUsIGRlc3RfZGlyICkKKyAgICAgICAgbWFpbihvcHRpb25zLCBhcmdz
KQogICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6CiAgICAgICAgIHByaW50ICJFcnJvciB1bnBhY2tp
bmcgdGFyL2d6IGFyY2hpdmU6ICVzIiAlIGUsIHN5cy5zdGRlcnIKCmRpZmYgLXIgZDYyZjNlNTBi
NTY3YTE1N2MwOTQ0NDczYWRiYmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0
Zj0KNGJkZDRiMWUxOWE5N2FhNTUgbGliL2dhbGF4eS90b29scy9wYXJhbWV0ZXJzL2Jhc2ljLnB5
Ci0tLSBhL2xpYi9nYWxheHkvdG9vbHMvcGFyYW1ldGVycy9iYXNpYy5weQorKysgYi9saWIvZ2Fs
YXh5L3Rvb2xzL3BhcmFtZXRlcnMvYmFzaWMucHkKQEAgLTIxNjYsMTQgKzIxNjYsMTUgQEAKICAg
ICAgICAgbXVsdGlwbGUgPTNEIHNlbGYubXVsdGlwbGUKPTIwCiAgICAgICAgICMgYWRkIGRhdGFz
ZXRzCisgICAgICAgIHZpc2libGVfaGRhID0zRCBvdGhlcl92YWx1ZXMuZ2V0KCBzZWxmLm5hbWUg
KQogICAgICAgICBmb3IgaGRhIGluIGhpc3RvcnkuYWN0aXZlX2RhdGFzZXRzX2NoaWxkcmVuX2Fu
ZF9yb2xlczoKLSAgICAgICAgICAgIG1hdGNoID0zRCBkYXRhc2V0X21hdGNoZXIuaGRhX21hdGNo
KCBoZGEgKQorICAgICAgICAgICAgbWF0Y2ggPTNEIGRhdGFzZXRfbWF0Y2hlci5oZGFfbWF0Y2go
IGhkYSwgZW5zdXJlX3Zpc2libGU9M0R2aXM9CmlibGVfaGRhICE9M0QgaGRhICkKICAgICAgICAg
ICAgIGlmIG1hdGNoOgogICAgICAgICAgICAgICAgIG0gPTNEIG1hdGNoLmhkYQogICAgICAgICAg
ICAgICAgIGRbJ29wdGlvbnMnXVsnaGRhJ10uYXBwZW5kKHsKICAgICAgICAgICAgICAgICAgICAg
J2lkJyAgICAgICAgICAgIDogdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBtLmlkICksCiAgICAg
ICAgICAgICAgICAgICAgICdoaWQnICAgICAgICAgICA6IG0uaGlkLAotICAgICAgICAgICAgICAg
ICAgICAnbmFtZScgICAgICAgICAgOiBtLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICduYW1l
JyAgICAgICAgICA6IG0ubmFtZSBpZiBtLnZpc2libGUgZWxzZSAnKGhpZGRlbikgJT0KcycgJSBt
Lm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICdzcmMnICAgICAgICAgICA6ICdoZGEnCiAgICAg
ICAgICAgICAgICAgfSkKPTIwCgpkaWZmIC1yIGQ2MmYzZTUwYjU2N2ExNTdjMDk0NDQ3M2FkYmJj
NDEwYzU1NTJkMWEgLXIgMzZjMDUyNjEzNDM0MTIzNzBmOWU0NGY9CjRiZGQ0YjFlMTlhOTdhYTU1
IGxpYi9nYWxheHkvdG9vbHMvcGFyc2VyL3htbC5weQotLS0gYS9saWIvZ2FsYXh5L3Rvb2xzL3Bh
cnNlci94bWwucHkKKysrIGIvbGliL2dhbGF4eS90b29scy9wYXJzZXIveG1sLnB5CkBAIC0zMDYs
NiArMzA2LDcgQEAKICAgICAgICAgc3RkZXJyPTNEX19wYXJzZV9hc3NlcnRfbGlzdF9mcm9tX2Vs
ZW0oIHRlc3RfZWxlbS5maW5kKCJhc3NlcnRfc3RkPQplcnIiKSApLAogICAgICAgICBleHBlY3Rf
ZXhpdF9jb2RlPTNEdGVzdF9lbGVtLmdldCgiZXhwZWN0X2V4aXRfY29kZSIpLAogICAgICAgICBl
eHBlY3RfZmFpbHVyZT0zRHN0cmluZ19hc19ib29sKHRlc3RfZWxlbS5nZXQoImV4cGVjdF9mYWls
dXJlIiwgRmE9CmxzZSkpLAorICAgICAgICBtYXhzZWNvbmRzPTNEdGVzdF9lbGVtLmdldCgibWF4
c2Vjb25kcyIsIE5vbmUpLAogICAgICkKICAgICBfY29weV90b19kaWN0X2lmX3ByZXNlbnQodGVz
dF9lbGVtLCBydmFsLCBbImludGVyYWN0b3IiLCAibnVtX291dHB1dHMiPQpdKQogICAgIHJldHVy
biBydmFsCgpkaWZmIC1yIGQ2MmYzZTUwYjU2N2ExNTdjMDk0NDQ3M2FkYmJjNDEwYzU1NTJkMWEg
LXIgMzZjMDUyNjEzNDM0MTIzNzBmOWU0NGY9CjRiZGQ0YjFlMTlhOTdhYTU1IGxpYi9nYWxheHkv
dG9vbHMvdGVzdC5weQotLS0gYS9saWIvZ2FsYXh5L3Rvb2xzL3Rlc3QucHkKKysrIGIvbGliL2dh
bGF4eS90b29scy90ZXN0LnB5CkBAIC0xNCw3ICsxNCw3IEBACiBERUZBVUxUX0ZUWVBFID0zRCAn
YXV0bycKIERFRkFVTFRfREJLRVkgPTNEICdoZzE3JwogREVGQVVMVF9JTlRFUkFDVE9SID0zRCAi
YXBpIiAgIyBEZWZhdWx0IG1lY2hhbmlzbSB0ZXN0IGNvZGUgdXNlcyBmb3IgaW50ZXI9CmFjdGlu
ZyB3aXRoIEdhbGF4eSBpbnN0YW5jZS4KLURFRkFVTFRfTUFYX1NFQ1MgPTNEIDEyMAorREVGQVVM
VF9NQVhfU0VDUyA9M0QgTm9uZQo9MjAKPTIwCiBAbm90dGVzdApAQCAtNDIsNyArNDIsOSBAQAo9
MjAKICAgICBkZWYgX19pbml0X18oIHNlbGYsIHRvb2wsIHRlc3RfZGljdCwgaSwgZGVmYXVsdF9p
bnRlcmFjdG9yICk6CiAgICAgICAgIG5hbWUgPTNEIHRlc3RfZGljdC5nZXQoICduYW1lJywgJ1Rl
c3QtJWQnICUgKGkgKyAxKSApCi0gICAgICAgIG1heHNlY29uZHMgPTNEIGludCggdGVzdF9kaWN0
LmdldCggJ21heHNlY29uZHMnLCBERUZBVUxUX01BWF9TRUNTID0KKSApCisgICAgICAgIG1heHNl
Y29uZHMgPTNEIHRlc3RfZGljdC5nZXQoICdtYXhzZWNvbmRzJywgREVGQVVMVF9NQVhfU0VDUyAp
CisgICAgICAgIGlmIG1heHNlY29uZHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBtYXhzZWNv
bmRzID0zRCBpbnQoIG1heHNlY29uZHMgKQo9MjAKICAgICAgICAgc2VsZi50b29sID0zRCB0b29s
CiAgICAgICAgIHNlbGYubmFtZSA9M0QgbmFtZQoKZGlmZiAtciBkNjJmM2U1MGI1NjdhMTU3YzA5
NDQ0NzNhZGJiYzQxMGM1NTUyZDFhIC1yIDM2YzA1MjYxMzQzNDEyMzcwZjllNDRmPQo0YmRkNGIx
ZTE5YTk3YWE1NSBsaWIvZ2FsYXh5L3Rvb2xzL3Rvb2xib3gvYmFzZS5weQotLS0gYS9saWIvZ2Fs
YXh5L3Rvb2xzL3Rvb2xib3gvYmFzZS5weQorKysgYi9saWIvZ2FsYXh5L3Rvb2xzL3Rvb2xib3gv
YmFzZS5weQpAQCAtNiw4ICs2LDYgQEAKIGltcG9ydCB0ZW1wZmlsZQo9MjAKIGZyb20gZ2FsYXh5
IGltcG9ydCBlZ2dzCi1lZ2dzLnJlcXVpcmUoICJTUUxBbGNoZW15ID49M0QgMC40IiApCi1mcm9t
IHNxbGFsY2hlbXkgaW1wb3J0IGFuZF8KIGVnZ3MucmVxdWlyZSggIk1hcmt1cFNhZmUiICkKIGZy
b20gbWFya3Vwc2FmZSBpbXBvcnQgZXNjYXBlCj0yMApAQCAtMTksNyArMTcsNyBAQAogZnJvbSBn
YWxheHkudXRpbCBpbXBvcnQgc3RyaW5nX2FzX2Jvb2wKIGZyb20gZ2FsYXh5LnV0aWwuYnVuY2gg
aW1wb3J0IEJ1bmNoCj0yMAotZnJvbSB0b29sX3NoZWQudXRpbCBpbXBvcnQgY29tbW9uX3V0aWwK
K2Zyb20gdG9vbF9zaGVkLnV0aWwgaW1wb3J0IHNoZWRfdXRpbF9jb21tb24KPTIwCiBmcm9tIC5w
YW5lbCBpbXBvcnQgVG9vbFBhbmVsRWxlbWVudHMKIGZyb20gLnBhbmVsIGltcG9ydCBUb29sU2Vj
dGlvbkxhYmVsCkBAIC00NDksMTYgKzQ0Nyw2IEBACiAgICAgZGVmIHRvb2xzKCBzZWxmICk6CiAg
ICAgICAgIHJldHVybiBzZWxmLl90b29sc19ieV9pZC5pdGVyaXRlbXMoKQo9MjAKLSAgICBkZWYg
X19nZXRfdG9vbF9zaGVkX3JlcG9zaXRvcnkoIHNlbGYsIHRvb2xfc2hlZCwgbmFtZSwgb3duZXIs
IGluc3RhbGxlPQpkX2NoYW5nZXNldF9yZXZpc2lvbiApOgotICAgICAgICAjIFdlIHN0b3JlIG9u
bHkgdGhlIHBvcnQsIGlmIG9uZSBleGlzdHMsIGluIHRoZSBkYXRhYmFzZS4KLSAgICAgICAgdG9v
bF9zaGVkID0zRCBjb21tb25fdXRpbC5yZW1vdmVfcHJvdG9jb2xfZnJvbV90b29sX3NoZWRfdXJs
KCB0b29sPQpfc2hlZCApCi0gICAgICAgIHJldHVybiBzZWxmLmFwcC5pbnN0YWxsX21vZGVsLmNv
bnRleHQucXVlcnkoIHNlbGYuYXBwLmluc3RhbGxfbW9kZT0KbC5Ub29sU2hlZFJlcG9zaXRvcnkg
KSBcCi0gICAgICAgICAgICAuZmlsdGVyKCBhbmRfKCBzZWxmLmFwcC5pbnN0YWxsX21vZGVsLlRv
b2xTaGVkUmVwb3NpdG9yeS50YWJsZT0KLmMudG9vbF9zaGVkID0zRD0zRCB0b29sX3NoZWQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFwcC5pbnN0YWxsX21vZGVsLlRvb2xTaGVk
UmVwb3NpdG9yeS50YWJsZT0KLmMubmFtZSA9M0Q9M0QgbmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuYXBwLmluc3RhbGxfbW9kZWwuVG9vbFNoZWRSZXBvc2l0b3J5LnRhYmxl
PQouYy5vd25lciA9M0Q9M0Qgb3duZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
LmFwcC5pbnN0YWxsX21vZGVsLlRvb2xTaGVkUmVwb3NpdG9yeS50YWJsZT0KLmMuaW5zdGFsbGVk
X2NoYW5nZXNldF9yZXZpc2lvbiA9M0Q9M0QgaW5zdGFsbGVkX2NoYW5nZXNldF9yZXZpc2lvbiAp
ICkgXAotICAgICAgICAgICAgLmZpcnN0KCkKLQogICAgIGRlZiBnZXRfdG9vbF9jb21wb25lbnRz
KCBzZWxmLCB0b29sX2lkLCB0b29sX3ZlcnNpb249M0ROb25lLCBnZXRfbG9hZGU9CmRfdG9vbHNf
YnlfbGluZWFnZT0zREZhbHNlLCBzZXRfc2VsZWN0ZWQ9M0RGYWxzZSApOgogICAgICAgICAiIiIK
ICAgICAgICAgUmV0cmlldmUgYWxsIGxvYWRlZCB2ZXJzaW9ucyBvZiBhIHRvb2wgZnJvbSB0aGUg
dG9vbGJveCBhbmQgcmV0dXJuPQogYSBzZWxlY3QgbGlzdCBlbmFibGluZwpAQCAtNTg4LDEwICs1
NzYsMjUgQEAKICAgICAgICAgICAgICAgICAgICAgIyBCYWNrd2FyZCBjb21wYXRpYmlsaXR5IGlz
c3VlIC0gdGhlIHRhZyB1c2VkIHRvIGJlIG5hPQptZWQgJ2NoYW5nZXNldF9yZXZpc2lvbicuCiAg
ICAgICAgICAgICAgICAgICAgIGluc3RhbGxlZF9jaGFuZ2VzZXRfcmV2aXNpb25fZWxlbSA9M0Qg
ZWxlbS5maW5kKCAiY2hhbj0KZ2VzZXRfcmV2aXNpb24iICkKICAgICAgICAgICAgICAgICBpbnN0
YWxsZWRfY2hhbmdlc2V0X3JldmlzaW9uID0zRCBpbnN0YWxsZWRfY2hhbmdlc2V0X3JldmlzPQpp
b25fZWxlbS50ZXh0Ci0gICAgICAgICAgICAgICAgdG9vbF9zaGVkX3JlcG9zaXRvcnkgPTNEIHNl
bGYuX19nZXRfdG9vbF9zaGVkX3JlcG9zaXRvcnkoID0KdG9vbF9zaGVkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmU9CnBvc2l0b3J5X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZT0KcG9zaXRvcnlfb3duZXIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbj0Kc3RhbGxlZF9jaGFuZ2VzZXRfcmV2aXNpb24gKQorICAgICAg
ICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc3BsaXR0ZWRfcGF0aCA9M0QgcGF0
aC5zcGxpdCgnLycpCisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBzcGxpdHRlZF9wYXRoWzBd
ID0zRD0zRCB0b29sX3NoZWQKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHNwbGl0dGVkX3Bh
dGhbMl0gPTNEPTNEIHJlcG9zaXRvcnlfb3duZXIKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0
IHNwbGl0dGVkX3BhdGhbM10gPTNEPTNEIHJlcG9zaXRvcnlfbmFtZQorICAgICAgICAgICAgICAg
ICAgICBpZiBzcGxpdHRlZF9wYXRoWzRdICE9M0QgaW5zdGFsbGVkX2NoYW5nZXNldF9yZXZpc2lv
bjoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSBUb29s
IFNoZWQgcmVwb3NpdG9yeSBoYXMgPQpiZWVuCisgICAgICAgICAgICAgICAgICAgICAgICAjIHVw
ZGF0ZWQgdG8gYSBuZXcgcmV2aXNpb24gYW5kIHRoZSBpbnN0YWxsZWRfY2hhbj0KZ2VzZXRfcmV2
aXNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICMgZWxlbWVudCBpbiBzaGVkX3Rvb2xfY29u
Zi54bWwgZmlsZSBoYXMgYmVlbiB1cGRhPQp0ZWQgdG9vCisgICAgICAgICAgICAgICAgICAgICAg
ICBsb2cuZGVidWcoIlRoZSBpbnN0YWxsZWRfY2hhbmdlc2V0X3JldmlzaW9uIGZvciB0bz0Kb2wg
JXMgaXMgJXMsIHVzaW5nICVzIGluc3RlYWQiLCBwYXRoLCBpbnN0YWxsZWRfY2hhbmdlc2V0X3Jl
dmlzaW9uLCBzcGxpdHRlPQpkX3BhdGhbNF0pCisgICAgICAgICAgICAgICAgICAgICAgICBpbnN0
YWxsZWRfY2hhbmdlc2V0X3JldmlzaW9uID0zRCBzcGxpdHRlZF9wYXRoWzRdCisgICAgICAgICAg
ICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICBsb2cuZGVi
dWcoIkVycm9yIHdoaWxlIGxvYWRpbmcgdG9vbCAlcyA6ICVzIiwgcGF0aCwgZSkKKyAgICAgICAg
ICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIHRvb2xfc2hlZF9yZXBvc2l0b3J5ID0z
RCBzaGVkX3V0aWxfY29tbW9uLmdldF9pbnN0YWxsZWRfcmU9CnBvc2l0b3J5KHNlbGYuYXBwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9CiAgICAgICB0b29sX3NoZWQ9M0R0b29sX3NoZWQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0KICAgICAgIG5hbWU9M0RyZXBvc2l0b3J5X25hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0KICAgICAgIG93bmVyPTNEcmVwb3NpdG9yeV9vd25lciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PQogICAgICAgaW5zdGFsbGVkX2NoYW5nZXNldF9yZXZpc2lvbj0zRGluc3RhbGxlZF9jaGFuZ2Vz
ZXRfcmV2aXNpb24pCj0yMAogICAgICAgICAgICAgICAgIGlmIHRvb2xfc2hlZF9yZXBvc2l0b3J5
OgogICAgICAgICAgICAgICAgICAgICAjIE9ubHkgbG9hZCB0b29scyBpZiB0aGUgcmVwb3NpdG9y
eSBpcyBub3QgZGVhY3RpdmF0ZWQ9CiBvciB1bmluc3RhbGxlZC4KCmRpZmYgLXIgZDYyZjNlNTBi
NTY3YTE1N2MwOTQ0NDczYWRiYmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0
Zj0KNGJkZDRiMWUxOWE5N2FhNTUgbGliL2dhbGF4eS91dGlsL19faW5pdF9fLnB5Ci0tLSBhL2xp
Yi9nYWxheHkvdXRpbC9fX2luaXRfXy5weQorKysgYi9saWIvZ2FsYXh5L3V0aWwvX19pbml0X18u
cHkKQEAgLTI5LDcgKzI5LDcgQEAKPTIwCiBmcm9tIGVtYWlsLk1JTUVUZXh0IGltcG9ydCBNSU1F
VGV4dAo9MjAKLWZyb20gb3MucGF0aCBpbXBvcnQgcmVscGF0aAorZnJvbSBvcy5wYXRoIGltcG9y
dCByZWxwYXRoLCBub3JtcGF0aAogZnJvbSBoYXNobGliIGltcG9ydCBtZDUKIGZyb20gaXRlcnRv
b2xzIGltcG9ydCBpemlwCj0yMApAQCAtMzUyLDcgKzM1MiwxMSBAQAogICAgIGVsaWYgaXNpbnN0
YW5jZSggdGltZSwgZGF0ZXRpbWUgKToKICAgICAgICAgZGlmZiA9M0Qgbm93IC0gdGltZQogICAg
IGVsaWYgaXNpbnN0YW5jZSggdGltZSwgYmFzZXN0cmluZyApOgotICAgICAgICB0aW1lID0zRCBk
YXRldGltZS5zdHJwdGltZSggdGltZSwgIiVZLSVtLSVkVCVIOiVNOiVTLiVmIiApCisgICAgICAg
IHRyeToKKyAgICAgICAgICAgIHRpbWUgPTNEIGRhdGV0aW1lLnN0cnB0aW1lKCB0aW1lLCAiJVkt
JW0tJWRUJUg6JU06JVMuJWYiICkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAg
ICAgICAjIE15U1FMIG1heSBub3Qgc3VwcG9ydCBtaWNyb3NlY29uZHMgcHJlY2lzaW9uCisgICAg
ICAgICAgICB0aW1lID0zRCBkYXRldGltZS5zdHJwdGltZSggdGltZSwgIiVZLSVtLSVkVCVIOiVN
OiVTIiApCiAgICAgICAgIGRpZmYgPTNEIG5vdyAtIHRpbWUKICAgICBlbHNlOgogICAgICAgICBk
aWZmID0zRCBub3cgLSBub3cKQEAgLTEyNzMsNiArMTI3NywyMiBAQAogICAgICAgICAgICAgcmFp
c2UKPTIwCj0yMAorZGVmIHNhZmVfcmVscGF0aChwYXRoKToKKyAgICAiIiIKKyAgICBHaXZlbiB3
aGF0IHdlIGV4cGVjdCB0byBiZSBhIHJlbGF0aXZlIHBhdGgsIGRldGVybWluZSB3aGV0aGVyIHRo
ZSBwYXRoCisgICAgd291bGQgZXhpc3QgaW5zaWRlIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKwor
ICAgIDp0eXBlICAgcGF0aDogICBzdHJpbmcKKyAgICA6cGFyYW0gIHBhdGg6ICAgYSBwYXRoIHRv
IGNoZWNrCisgICAgOnJ0eXBlOiAgICAgICAgIGJvb2wKKyAgICA6cmV0dXJuczogICAgICAgYGBU
cnVlYGAgaWYgcGF0aCBpcyByZWxhdGl2ZSBhbmQgZG9lcyBub3QgcmVmZXJlbmNlIGEgPQpwYXRo
CisgICAgICAgIGluIGEgcGFyZW50IGRpcmVjdG9yeSwgYGBGYWxzZWBgIG90aGVyd2lzZS4KKyAg
ICAiIiIKKyAgICBpZiBwYXRoLnN0YXJ0c3dpdGgob3Muc2VwKSBvciBub3JtcGF0aChwYXRoKS5z
dGFydHN3aXRoKG9zLnBhcmRpcik6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIHJldHVybiBU
cnVlCisKKwogY2xhc3MgRXhlY3V0aW9uVGltZXIob2JqZWN0KToKPTIwCiAgICAgZGVmIF9faW5p
dF9fKHNlbGYpOgoKZGlmZiAtciBkNjJmM2U1MGI1NjdhMTU3YzA5NDQ0NzNhZGJiYzQxMGM1NTUy
ZDFhIC1yIDM2YzA1MjYxMzQzNDEyMzcwZjllNDRmPQo0YmRkNGIxZTE5YTk3YWE1NSBsaWIvZ2Fs
YXh5L3ZlcnNpb24ucHkKLS0tIGEvbGliL2dhbGF4eS92ZXJzaW9uLnB5CisrKyBiL2xpYi9nYWxh
eHkvdmVyc2lvbi5weQpAQCAtMSwzICsxLDMgQEAKIFZFUlNJT05fTUFKT1IgPTNEICIxNS4xMCIK
LVZFUlNJT05fTUlOT1IgPTNEICJkZXYiCitWRVJTSU9OX01JTk9SID0zRCAiMiIKIFZFUlNJT04g
PTNEIFZFUlNJT05fTUFKT1IgKyAoJy4nICsgVkVSU0lPTl9NSU5PUiBpZiBWRVJTSU9OX01JTk9S
IGVsc2UgJycpCgpkaWZmIC1yIGQ2MmYzZTUwYjU2N2ExNTdjMDk0NDQ3M2FkYmJjNDEwYzU1NTJk
MWEgLXIgMzZjMDUyNjEzNDM0MTIzNzBmOWU0NGY9CjRiZGQ0YjFlMTlhOTdhYTU1IGxpYi9nYWxh
eHkvd2ViYXBwcy9nYWxheHkvYXBpL2xkYV9kYXRhc2V0cy5weQotLS0gYS9saWIvZ2FsYXh5L3dl
YmFwcHMvZ2FsYXh5L2FwaS9sZGFfZGF0YXNldHMucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBz
L2dhbGF4eS9hcGkvbGRhX2RhdGFzZXRzLnB5CkBAIC00MTMsNyArNDEzLDcgQEAKPTIwCiAgICAg
ICAgIDpwYXJhbSAgZW5jb2RlZF9mb2xkZXJfaWQ6ICAgICAgdGhlIGVuY29kZWQgaWQgb2YgdGhl
IGZvbGRlciB0byBpbT0KcG9ydCBkYXRhc2V0KHMpIHRvCiAgICAgICAgIDp0eXBlICAgZW5jb2Rl
ZF9mb2xkZXJfaWQ6ICAgICAgYW4gZW5jb2RlZCBpZCBzdHJpbmcKLSAgICAgICAgOnBhcmFtICBz
b3VyY2U6ICAgICAgICAgICAgICAgICBzb3VyY2UgdGhlIGRhdGFzZXRzIHNob3VsZCBiZSBsb2Fk
PQplZCBmb3JtCisgICAgICAgIDpwYXJhbSAgc291cmNlOiAgICAgICAgICAgICAgICAgc291cmNl
IHRoZSBkYXRhc2V0cyBzaG91bGQgYmUgbG9hZD0KZWQgZnJvbQogICAgICAgICA6dHlwZSAgIHNv
dXJjZTogICAgICAgICAgICAgICAgIHN0cgogICAgICAgICA6cGFyYW0gIGxpbmtfZGF0YTogICAg
ICAgICAgICAgIGZsYWcgd2hldGhlciB0byBsaW5rIHRoZSBkYXRhc2V0IHQ9Cm8gZGF0YSBvciBj
b3B5IGl0IHRvIEdhbGF4eSwgZGVmYXVsdHMgdG8gY29weQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdoaWxlIGxpbmtpbmcgaXMgc2V0IHRvIFRydWUgYWxsIHM9Cnlt
bGlua3Mgd2lsbCBiZSByZXNvbHZlZCBfb25jZV8KQEAgLTQzNCw3ICs0MzQsNyBAQAogICAgICAg
ICBrd2RbICd0b19wb3NpeF9saW5lcycgXSA9M0QgJ1RydWUnCiAgICAgICAgIGt3ZFsgJ2Ria2V5
JyBdID0zRCBrd2QuZ2V0KCAnZGJrZXknLCAnPycgKQogICAgICAgICBrd2RbICdmaWxlX3R5cGUn
IF0gPTNEIGt3ZC5nZXQoICdmaWxlX3R5cGUnLCAnYXV0bycgKQotICAgICAgICBrd2RbJyBsaW5r
X2RhdGFfb25seScgXSA9M0QgJ2xpbmtfdG9fZmlsZXMnIGlmIHV0aWwuc3RyaW5nX2FzX2Jvb2w9
Cigga3dkLmdldCggJ2xpbmtfZGF0YScsIEZhbHNlICkgKSBlbHNlICdjb3B5X2ZpbGVzJworICAg
ICAgICBrd2RbJ2xpbmtfZGF0YV9vbmx5J10gPTNEICdsaW5rX3RvX2ZpbGVzJyBpZiB1dGlsLnN0
cmluZ19hc19ib29sKCA9Cmt3ZC5nZXQoICdsaW5rX2RhdGEnLCBGYWxzZSApICkgZWxzZSAnY29w
eV9maWxlcycKICAgICAgICAgZW5jb2RlZF9mb2xkZXJfaWQgPTNEIGt3ZC5nZXQoICdlbmNvZGVk
X2ZvbGRlcl9pZCcsIE5vbmUgKQogICAgICAgICBpZiBlbmNvZGVkX2ZvbGRlcl9pZCBpcyBub3Qg
Tm9uZToKICAgICAgICAgICAgIGZvbGRlcl9pZCA9M0Qgc2VsZi5mb2xkZXJfbWFuYWdlci5jdXRf
YW5kX2RlY29kZSggdHJhbnMsIGVuY29kPQplZF9mb2xkZXJfaWQgKQoKZGlmZiAtciBkNjJmM2U1
MGI1NjdhMTU3YzA5NDQ0NzNhZGJiYzQxMGM1NTUyZDFhIC1yIDM2YzA1MjYxMzQzNDEyMzcwZjll
NDRmPQo0YmRkNGIxZTE5YTk3YWE1NSBsaWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9yZW1v
dGVfZmlsZXMucHkKLS0tIGEvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvcmVtb3RlX2Zp
bGVzLnB5CisrKyBiL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL3JlbW90ZV9maWxlcy5w
eQpAQCAtNDIsNiArNDIsOCBAQAogICAgICAgICAgICAgaWYgdXNlcl9iYXNlX2RpciBpcyBOb25l
OgogICAgICAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuQ29uZmlnRG9lc05vdEFsbG93RXhj
ZXB0aW9uKCAnVGhlIGNvbmZpZ3U9CnJhdGlvbiBvZiB0aGlzIEdhbGF4eSBpbnN0YW5jZSBkb2Vz
IG5vdCBhbGxvdyB1cGxvYWQgZnJvbSB1c2VyIGRpcmVjdG9yaWVzLj0KJyApCiAgICAgICAgICAg
ICBmdWxsX2ltcG9ydF9kaXIgPTNEIG9zLnBhdGguam9pbiggdXNlcl9iYXNlX2RpciwgdXNlcl9s
b2dpbiApCisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZnVsbF9pbXBvcnRfZGly
KToKKyAgICAgICAgICAgICAgICByYWlzZSBleGNlcHRpb25zLk9iamVjdE5vdEZvdW5kKCdZb3Ug
ZG8gbm90IGhhdmUgYW55IGZpbGVzPQogaW4geW91ciB1c2VyIGRpcmVjdG9yeS4gVXNlIEZUUCB0
byB1cGxvYWQgdGhlcmUuJykKICAgICAgICAgICAgIGlmIGZ1bGxfaW1wb3J0X2RpciBpcyBub3Qg
Tm9uZToKICAgICAgICAgICAgICAgICBpZiBmb3JtYXQgPTNEPTNEICdqc3RyZWUnOgogICAgICAg
ICAgICAgICAgICAgICBkaXNhYmxlID0zRCBrd2QuZ2V0KCAnZGlzYWJsZScsICdmb2xkZXJzJykK
QEAgLTUxLDYgKzUzLDggQEAKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwg
ZXhjZXB0aW9uOgogICAgICAgICAgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCBzdHIoIGV4Y2Vw
dGlvbiApICkKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuSW50ZXJu
YWxTZXJ2ZXJFcnJvciggJ0NvdWxkIG5vdCBjPQpyZWF0ZSB0cmVlIHJlcHJlc2VudGF0aW9uIG9m
IHRoZSBnaXZlbiBmb2xkZXI6ICcgKyBzdHIoIGZ1bGxfaW1wb3J0X2RpciApICkKKyAgICAgICAg
ICAgICAgICAgICAgaWYgbm90IHJlc3BvbnNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFp
c2UgZXhjZXB0aW9ucy5PYmplY3ROb3RGb3VuZCgnWW91IGRvIG5vdCBoYXZlIGE9Cm55IGZpbGVz
IGluIHlvdXIgdXNlciBkaXJlY3RvcnkuIFVzZSBGVFAgdG8gdXBsb2FkIHRoZXJlLicpCiAgICAg
ICAgICAgICAgICAgZWxpZiBmb3JtYXQgPTNEPTNEICdhamF4JzoKICAgICAgICAgICAgICAgICAg
ICAgcmFpc2UgZXhjZXB0aW9ucy5Ob3RJbXBsZW1lbnRlZCggJ05vdCBpbXBsZW1lbnRlZCB5ZXQu
PQogU29ycnkuJyApCiAgICAgICAgICAgICAgICAgZWxzZToKCmRpZmYgLXIgZDYyZjNlNTBiNTY3
YTE1N2MwOTQ0NDczYWRiYmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0Zj0K
NGJkZDRiMWUxOWE5N2FhNTUgbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9h
ZG1pbl90b29sc2hlZC5weQotLS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xs
ZXJzL2FkbWluX3Rvb2xzaGVkLnB5CisrKyBiL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29u
dHJvbGxlcnMvYWRtaW5fdG9vbHNoZWQucHkKQEAgLTM5MCwxMSArMzkwLDExIEBACj0yMAogICAg
IEB3ZWIuanNvbgogICAgIEB3ZWIucmVxdWlyZV9hZG1pbgotICAgIGRlZiBnZXRfZmlsZV9jb250
ZW50cyggc2VsZiwgdHJhbnMsIGZpbGVfcGF0aCApOgorICAgIGRlZiBnZXRfZmlsZV9jb250ZW50
cyggc2VsZiwgdHJhbnMsIGZpbGVfcGF0aCwgcmVwb3NpdG9yeV9pZCApOgogICAgICAgICAjIEF2
b2lkIGNhY2hpbmcKICAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVhZGVyc1snUHJhZ21hJ10gPTNE
ICduby1jYWNoZScKICAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVhZGVyc1snRXhwaXJlcyddID0z
RCAnMCcKLSAgICAgICAgcmV0dXJuIHN1Yy5nZXRfcmVwb3NpdG9yeV9maWxlX2NvbnRlbnRzKCBm
aWxlX3BhdGggKQorICAgICAgICByZXR1cm4gc3VjLmdldF9yZXBvc2l0b3J5X2ZpbGVfY29udGVu
dHMoIHRyYW5zLmFwcCwgZmlsZV9wYXRoLCByZXA9Cm9zaXRvcnlfaWQgKQo9MjAKICAgICBAd2Vi
LmV4cG9zZQogICAgIEB3ZWIucmVxdWlyZV9hZG1pbgpAQCAtOTE4LDExICs5MTgsMTEgQEAKPTIw
CiAgICAgQHdlYi5qc29uCiAgICAgQHdlYi5yZXF1aXJlX2FkbWluCi0gICAgZGVmIG9wZW5fZm9s
ZGVyKCBzZWxmLCB0cmFucywgZm9sZGVyX3BhdGggKToKKyAgICBkZWYgb3Blbl9mb2xkZXIoIHNl
bGYsIHRyYW5zLCBmb2xkZXJfcGF0aCwgcmVwb3NpdG9yeV9pZCApOgogICAgICAgICAjIEF2b2lk
IGNhY2hpbmcKICAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVhZGVyc1snUHJhZ21hJ10gPTNEICdu
by1jYWNoZScKICAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVhZGVyc1snRXhwaXJlcyddID0zRCAn
MCcKLSAgICAgICAgcmV0dXJuIHN1Yy5vcGVuX3JlcG9zaXRvcnlfZmlsZXNfZm9sZGVyKCBmb2xk
ZXJfcGF0aCApCisgICAgICAgIHJldHVybiBzdWMub3Blbl9yZXBvc2l0b3J5X2ZpbGVzX2ZvbGRl
ciggdHJhbnMuYXBwLCBmb2xkZXJfcGF0aCwgcj0KZXBvc2l0b3J5X2lkICkKPTIwCiAgICAgQHdl
Yi5leHBvc2UKICAgICBAd2ViLnJlcXVpcmVfYWRtaW4KQEAgLTEyOTYsNiArMTI5NiwyMSBAQAog
ICAgICAgICAgICAgICAgICMgSnVzdCBpbiBjYXNlIHRoZSB0b29sX3NlY3Rpb24uaWQgZGlmZmVy
cyBmcm9tIHRvb2xfcGFuZWw9Cl9zZWN0aW9uX2lkLCB3aGljaCBpdCBzaG91bGRuJ3QuLi4KICAg
ICAgICAgICAgICAgICB0b29sX3BhbmVsX3NlY3Rpb25faWQgPTNEIHN0ciggdG9vbF9zZWN0aW9u
LmlkICkKICAgICAgICAgaWYgdG9vbF9zaGVkX3JlcG9zaXRvcnkuc3RhdHVzID0zRD0zRCB0cmFu
cy5pbnN0YWxsX21vZGVsLlRvb2xTaGVkPQpSZXBvc2l0b3J5Lmluc3RhbGxhdGlvbl9zdGF0dXMu
VU5JTlNUQUxMRUQ6CisgICAgICAgICAgICByZXBvc2l0b3J5X3R5cGUgPTNEIHN1Yy5nZXRfcmVw
b3NpdG9yeV90eXBlX2Zyb21fdG9vbF9zaGVkKHRyYT0KbnMuYXBwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9v
bF89CnNoZWRfdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbF89CnNoZWRfcmVwb3NpdG9yeS5uYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdG9vbF89CnNoZWRfcmVwb3NpdG9yeS5vd25lcikKKyAgICAgICAgICAgIGlm
IHJlcG9zaXRvcnlfdHlwZSA9M0Q9M0QgcnRfdXRpbC5UT09MX0RFUEVOREVOQ1lfREVGSU5JVElP
TjoKKyAgICAgICAgICAgICAgICAjIFJlcG9zaXRvcmllcyBvZiB0eXBlIHRvb2xfZGVwZW5kZW5j
eV9kZWZpbml0aW9uIG11c3QgZ2V0PQogdGhlIGxhdGVzdAorICAgICAgICAgICAgICAgICMgbWV0
YWRhdGEgZnJvbSB0aGUgVG9vbCBTaGVkIHNpbmNlIHRoZXkgaGF2ZSBvbmx5IGEgc2luZ2w9CmUg
aW5zdGFsbGFibGUKKyAgICAgICAgICAgICAgICAjIHJldmlzaW9uLgorICAgICAgICAgICAgICAg
IHJhd190ZXh0ID0zRCBzdWMuZ2V0X3Rvb2xfZGVwZW5kZW5jeV9kZWZpbml0aW9uX21ldGFkYXRh
X2Y9CnJvbV90b29sX3NoZWQodHJhbnMuYXBwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9CiAgICAgICAg
ICAgIHRvb2xfc2hlZF91cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0KICAgICAgICAgICAgdG9vbF9z
aGVkX3JlcG9zaXRvcnkubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPQogICAgICAgICAgICB0b29s
X3NoZWRfcmVwb3NpdG9yeS5vd25lcikKKyAgICAgICAgICAgICAgICBuZXdfbWV0YSA9M0QganNv
bi5sb2FkcyhyYXdfdGV4dCkKKyAgICAgICAgICAgICAgICAjIENsZWFuIHVwIG9sZCByZXBvc2l0
b3J5IGRlcGVuZGVuY3kgYW5kIHRvb2wgZGVwZW5kZW5jeSByPQplbGF0aW9uc2hpcHMuCisgICAg
ICAgICAgICAgICAgc3VjLmNsZWFuX2RlcGVuZGVuY3lfcmVsYXRpb25zaGlwcyh0cmFucywgbmV3
X21ldGEsIHRvb2xfcz0KaGVkX3JlcG9zaXRvcnksIHRvb2xfc2hlZF91cmwpCiAgICAgICAgICAg
ICAjIFRoZSByZXBvc2l0b3J5J3Mgc3RhdHVzIG11c3QgYmUgdXBkYXRlZCBmcm9tICdVbmluc3Rh
bGxlZCcgdD0KbyAnTmV3JyB3aGVuIGluaXRpYXRpbmcgcmVpbnN0YWxsCiAgICAgICAgICAgICAj
IHNvIHRoZSByZXBvc2l0b3J5X2luc3RhbGxhdGlvbl91cGRhdGVyIHdpbGwgZnVuY3Rpb24uCiAg
ICAgICAgICAgICB0b29sX3NoZWRfcmVwb3NpdG9yeSA9M0Qgc3VjLmNyZWF0ZV9vcl91cGRhdGVf
dG9vbF9zaGVkX3JlcG9zaT0KdG9yeSggdHJhbnMuYXBwLApAQCAtMTQ4OCw3ICsxNTAzLDcgQEAK
ICAgICAgICAgcmVwb3NpdG9yeV9jbG9uZV91cmwgPTNEIGNvbW1vbl91dGlsLmdlbmVyYXRlX2Ns
b25lX3VybF9mb3JfaW5zdGFsPQpsZWRfcmVwb3NpdG9yeSggdHJhbnMuYXBwLCB0b29sX3NoZWRf
cmVwb3NpdG9yeSApCiAgICAgICAgIG1ldGFkYXRhID0zRCB0b29sX3NoZWRfcmVwb3NpdG9yeS5t
ZXRhZGF0YQogICAgICAgICB0b29sX3NoZWRfdXJsID0zRCBjb21tb25fdXRpbC5nZXRfdG9vbF9z
aGVkX3VybF9mcm9tX3Rvb2xfc2hlZF9yZWc9CmlzdHJ5KCB0cmFucy5hcHAsIHN0ciggdG9vbF9z
aGVkX3JlcG9zaXRvcnkudG9vbF9zaGVkICkgKQotICAgICAgICB0b29sX3BhdGgsIHJlbGF0aXZl
X2luc3RhbGxfZGlyID0zRCB0b29sX3NoZWRfcmVwb3NpdG9yeS5nZXRfdG9vbF89CnJlbGF0aXZl
X3BhdGgoIHRyYW5zLmFwcCApCisgICAgICAgIHRvb2xfcGF0aCA9M0QgdG9vbF9zaGVkX3JlcG9z
aXRvcnkuZ2V0X3Rvb2xfcmVsYXRpdmVfcGF0aCggdHJhbnMuYT0KcHAgKVswXQogICAgICAgICBp
ZiBsYXRlc3RfY2hhbmdlc2V0X3JldmlzaW9uIGFuZCBsYXRlc3RfY3R4X3JldjoKICAgICAgICAg
ICAgICMgVGhlcmUgYXJlIHVwZGF0ZXMgYXZhaWxhYmxlIGluIHRoZSB0b29sIHNoZWQgZm9yIHRo
ZSByZXBvc2l0PQpvcnksIHNvIHVzZSB0aGUgcmVjZWl2ZWQKICAgICAgICAgICAgICMgZGVwZW5k
ZW5jeSBpbmZvcm1hdGlvbiB3aGljaCB3YXMgcmV0cmlldmVkIGZyb20gdGhlIHRvb2wgc2hlPQpk
LgpAQCAtMTQ5NywyMCArMTUxMiwxNCBAQAogICAgICAgICAgICAgcmVhZG1lX2ZpbGVzX2RpY3Qg
PTNEIHVwZGF0ZWRfcmVwb19pbmZvX2RpY3QuZ2V0KCAncmVhZG1lX2ZpbGU9CnNfZGljdCcsIE5v
bmUgKQogICAgICAgICAgICAgaW5jbHVkZXNfZGF0YV9tYW5hZ2VycyA9M0QgdXBkYXRlZF9yZXBv
X2luZm9fZGljdC5nZXQoICdpbmNsdWQ9CmVzX2RhdGFfbWFuYWdlcnMnLCBGYWxzZSApCiAgICAg
ICAgICAgICBpbmNsdWRlc19kYXRhdHlwZXMgPTNEIHVwZGF0ZWRfcmVwb19pbmZvX2RpY3QuZ2V0
KCAnaW5jbHVkZXNfZD0KYXRhdHlwZXMnLCBGYWxzZSApCi0gICAgICAgICAgICBpbmNsdWRlc190
b29scyA9M0QgdXBkYXRlZF9yZXBvX2luZm9fZGljdC5nZXQoICdpbmNsdWRlc190b29scz0KJywg
RmFsc2UgKQotICAgICAgICAgICAgaW5jbHVkZXNfdG9vbHNfZm9yX2Rpc3BsYXlfaW5fdG9vbF9w
YW5lbCA9M0QgdXBkYXRlZF9yZXBvX2luZm89Cl9kaWN0LmdldCggJ2luY2x1ZGVzX3Rvb2xzX2Zv
cl9kaXNwbGF5X2luX3Rvb2xfcGFuZWwnLCBGYWxzZSApCiAgICAgICAgICAgICBpbmNsdWRlc193
b3JrZmxvd3MgPTNEIHVwZGF0ZWRfcmVwb19pbmZvX2RpY3QuZ2V0KCAnaW5jbHVkZXNfdz0Kb3Jr
Zmxvd3MnLCBGYWxzZSApCi0gICAgICAgICAgICBoYXNfcmVwb3NpdG9yeV9kZXBlbmRlbmNpZXMg
PTNEIHVwZGF0ZWRfcmVwb19pbmZvX2RpY3QuZ2V0KCAnaD0KYXNfcmVwb3NpdG9yeV9kZXBlbmRl
bmNpZXMnLCBGYWxzZSApCiAgICAgICAgICAgICBpbmNsdWRlc190b29sX2RlcGVuZGVuY2llcyA9
M0QgdXBkYXRlZF9yZXBvX2luZm9fZGljdC5nZXQoICdpbj0KY2x1ZGVzX3Rvb2xfZGVwZW5kZW5j
aWVzJywgRmFsc2UgKQogICAgICAgICAgICAgcmVwb19pbmZvX2RpY3QgPTNEIHVwZGF0ZWRfcmVw
b19pbmZvX2RpY3RbICdyZXBvX2luZm9fZGljdCcgXQogICAgICAgICBlbHNlOgogICAgICAgICAg
ICAgIyBUaGVyZSBhcmUgbm8gdXBkYXRlcyBhdmFpbGFibGUgZnJvbSB0aGUgdG9vbCBzaGVkIGZv
ciB0aGUgcmU9CnBvc2l0b3J5LCBzbyB1c2UgaXRzIGxvY2FsbHkgc3RvcmVkIG1ldGFkYXRhLgot
ICAgICAgICAgICAgaGFzX3JlcG9zaXRvcnlfZGVwZW5kZW5jaWVzID0zRCBGYWxzZQogICAgICAg
ICAgICAgaW5jbHVkZXNfZGF0YV9tYW5hZ2VycyA9M0QgRmFsc2UKICAgICAgICAgICAgIGluY2x1
ZGVzX2RhdGF0eXBlcyA9M0QgRmFsc2UKICAgICAgICAgICAgIGluY2x1ZGVzX3Rvb2xfZGVwZW5k
ZW5jaWVzID0zRCBGYWxzZQotICAgICAgICAgICAgaW5jbHVkZXNfdG9vbHMgPTNEIEZhbHNlCi0g
ICAgICAgICAgICBpbmNsdWRlc190b29sc19mb3JfZGlzcGxheV9pbl90b29sX3BhbmVsID0zRCBG
YWxzZQogICAgICAgICAgICAgaW5jbHVkZXNfd29ya2Zsb3dzID0zRCBGYWxzZQogICAgICAgICAg
ICAgcmVhZG1lX2ZpbGVzX2RpY3QgPTNEIE5vbmUKICAgICAgICAgICAgIHRvb2xfZGVwZW5kZW5j
aWVzID0zRCBOb25lCkBAIC0xNTE5LDE0ICsxNTI4LDYgQEAKICAgICAgICAgICAgICAgICAgICAg
aW5jbHVkZXNfZGF0YV9tYW5hZ2VycyA9M0QgVHJ1ZQogICAgICAgICAgICAgICAgIGlmICdkYXRh
dHlwZXMnIGluIG1ldGFkYXRhOgogICAgICAgICAgICAgICAgICAgICBpbmNsdWRlc19kYXRhdHlw
ZXMgPTNEIFRydWUKLSAgICAgICAgICAgICAgICBpZiAndG9vbHMnIGluIG1ldGFkYXRhOgotICAg
ICAgICAgICAgICAgICAgICBpbmNsdWRlc190b29scyA9M0QgVHJ1ZQotICAgICAgICAgICAgICAg
ICAgICAjIEhhbmRsZSBpbmNsdWRlc190b29sc19mb3JfZGlzcGxheV9pbl90b29sX3BhbmVsLgot
ICAgICAgICAgICAgICAgICAgICB0b29sX2RpY3RzID0zRCBtZXRhZGF0YVsgJ3Rvb2xzJyBdCi0g
ICAgICAgICAgICAgICAgICAgIGZvciB0b29sX2RpY3QgaW4gdG9vbF9kaWN0czoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIHRvb2xfZGljdC5nZXQoICdhZGRfdG9fdG9vbF9wYW5lbCcsIFRy
dWUgKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlc190b29sc19mb3JfZGlz
cGxheV9pbl90b29sX3BhbmVsID0zRCBUPQpydWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhawogICAgICAgICAgICAgICAgIGlmICd0b29sX2RlcGVuZGVuY2llcycgaW4gbWV0YWRh
dGE6CiAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzX3Rvb2xfZGVwZW5kZW5jaWVzID0zRCBU
cnVlCiAgICAgICAgICAgICAgICAgaWYgJ3dvcmtmbG93cycgaW4gbWV0YWRhdGE6CkBAIC0xNTU1
LDggKzE1NTYsNyBAQAogICAgICAgICBkZXBlbmRlbmNpZXNfZm9yX3JlcG9zaXRvcnlfZGljdCA9
M0QgaXJtLmdldF9kZXBlbmRlbmNpZXNfZm9yX3JlcG89CnNpdG9yeSggdG9vbF9zaGVkX3VybCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPQogICAgICByZXBvX2luZm9fZGljdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPQogICAgICBpbmNsdWRlc190b29sX2RlcGVuZGVuY2llcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PQogICAgICB1cGRhdGluZz0zREZhbHNlICkKLSAgICAgICAgaGFzX3JlcG9zaXRvcnlfZGVwZW5k
ZW5jaWVzID0zRCBkZXBlbmRlbmNpZXNfZm9yX3JlcG9zaXRvcnlfZGljdC5nPQpldCggJ2hhc19y
ZXBvc2l0b3J5X2RlcGVuZGVuY2llcycsIEZhbHNlICkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPQogICAg
ICB1cGRhdGluZz0zRFRydWUgKQogICAgICAgICBpbmNsdWRlc190b29sX2RlcGVuZGVuY2llcyA9
M0QgZGVwZW5kZW5jaWVzX2Zvcl9yZXBvc2l0b3J5X2RpY3QuZ2U9CnQoICdpbmNsdWRlc190b29s
X2RlcGVuZGVuY2llcycsIEZhbHNlICkKICAgICAgICAgaW5jbHVkZXNfdG9vbHMgPTNEIGRlcGVu
ZGVuY2llc19mb3JfcmVwb3NpdG9yeV9kaWN0LmdldCggJ2luY2x1ZGVzPQpfdG9vbHMnLCBGYWxz
ZSApCiAgICAgICAgIGluY2x1ZGVzX3Rvb2xzX2Zvcl9kaXNwbGF5X2luX3Rvb2xfcGFuZWwgPTNE
IGRlcGVuZGVuY2llc19mb3JfcmVwbz0Kc2l0b3J5X2RpY3QuZ2V0KCAnaW5jbHVkZXNfdG9vbHNf
Zm9yX2Rpc3BsYXlfaW5fdG9vbF9wYW5lbCcsIEZhbHNlICkKCmRpZmYgLXIgZDYyZjNlNTBiNTY3
YTE1N2MwOTQ0NDczYWRiYmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0Zj0K
NGJkZDRiMWUxOWE5N2FhNTUgbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9y
ZXF1ZXN0c19hZG1pbi5weQotLS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xs
ZXJzL3JlcXVlc3RzX2FkbWluLnB5CisrKyBiL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29u
dHJvbGxlcnMvcmVxdWVzdHNfYWRtaW4ucHkKQEAgLTEwLDE1ICsxMCw3IEBACiBmcm9tIGdhbGF4
eSBpbXBvcnQgZWdncwogZWdncy5yZXF1aXJlKCAiTWFya3VwU2FmZSIgKQogZnJvbSBtYXJrdXBz
YWZlIGltcG9ydCBlc2NhcGUKLWVnZ3MucmVxdWlyZSgiYW1xcCIpCi1pbXBvcnQgYW1xcAotdHJ5
OgotICAgIGltcG9ydCBwZXhwZWN0Ci1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgcGV4cGVjdCA9
M0QgTm9uZQo9MjAKLVBFWFBFQ1RfSU1QT1JUX01FU1NBR0UgPTNEICgnVGhlIFB5dGhvbiBwZXhw
ZWN0IHBhY2thZ2UgaXMgcmVxdWlyZWQgdG8gdXNlPQogdGhpcyAnCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICdmZWF0dXJlLCBwbGVhc2UgaW5zdGFsbCBpdCcpCj0yMAogbG9nID0zRCBsb2dn
aW5nLmdldExvZ2dlciggX19uYW1lX18gKQo9MjAKQEAgLTM3MiwyMDcgKzM2NCw2IEBACiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0
aW9uPTNEJ21hbmFnZT0KX2RhdGFzZXRzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVfaWQ9M0RzYW1wPQpsZV9pZCApICkK
PTIwCi0gICAgQHdlYi5leHBvc2UKLSAgICBAd2ViLnJlcXVpcmVfYWRtaW4KLSAgICBkZWYgc2Vs
ZWN0X2RhdGFzZXRzX3RvX3RyYW5zZmVyKCBzZWxmLCB0cmFucywgKiprd2QgKToKLSAgICAgICAg
cGFyYW1zID0zRCB1dGlsLlBhcmFtcygga3dkICkKLSAgICAgICAgbWVzc2FnZSA9M0QgdXRpbC5y
ZXN0b3JlX3RleHQoIHBhcmFtcy5nZXQoICdtZXNzYWdlJywgJycgKSApCi0gICAgICAgIHN0YXR1
cyA9M0QgcGFyYW1zLmdldCggJ3N0YXR1cycsICdkb25lJyApCi0gICAgICAgIHJlcXVlc3RfaWQg
PTNEIGt3ZC5nZXQoICdyZXF1ZXN0X2lkJywgTm9uZSApCi0gICAgICAgIGV4dGVybmFsX3NlcnZp
Y2VfaWQgPTNEIGt3ZC5nZXQoICdleHRlcm5hbF9zZXJ2aWNlX2lkJywgTm9uZSApCi0gICAgICAg
IHJlcXVlc3QgPTNEIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIHRyYW5zLm1vZGVsLlJlcXVlc3Qg
KS5nZXQoIHRyYT0KbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCByZXF1ZXN0X2lkICkgKQotICAgICAg
ICBleHRlcm5hbF9zZXJ2aWNlID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5tb2Rl
bC5FeHRlcm5hbFM9CmVydmljZSApLmdldCggdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBleHRl
cm5hbF9zZXJ2aWNlX2lkICkgKQotICAgICAgICAjIExvYWQgdGhlIGRhdGEgdHJhbnNmZXIgc2V0
dGluZ3MKLSAgICAgICAgZXh0ZXJuYWxfc2VydmljZS5sb2FkX2RhdGFfdHJhbnNmZXJfc2V0dGlu
Z3MoIHRyYW5zICkKLSAgICAgICAgc2NwX2NvbmZpZ3MgPTNEIGV4dGVybmFsX3NlcnZpY2UuZGF0
YV90cmFuc2ZlclsgdHJhbnMubW9kZWwuRXh0ZXJuPQphbFNlcnZpY2UuZGF0YV90cmFuc2Zlcl9w
cm90b2NvbC5TQ1AgXQotICAgICAgICBzZWxlY3RlZF9kYXRhc2V0c190b190cmFuc2ZlciA9M0Qg
dXRpbC5yZXN0b3JlX3RleHQoIHBhcmFtcy5nZXQoICc9CnNlbGVjdGVkX2RhdGFzZXRzX3RvX3Ry
YW5zZmVyJywgJycgKSApCi0gICAgICAgIGlmIHNlbGVjdGVkX2RhdGFzZXRzX3RvX3RyYW5zZmVy
OgotICAgICAgICAgICAgc2VsZWN0ZWRfZGF0YXNldHNfdG9fdHJhbnNmZXIgPTNEIHNlbGVjdGVk
X2RhdGFzZXRzX3RvX3RyYW5zZmU9CnIuc3BsaXQoJywnKQotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgc2VsZWN0ZWRfZGF0YXNldHNfdG9fdHJhbnNmZXIgPTNEIFtdCi0gICAgICAgIHNhbXBs
ZV9pZCA9M0Qga3dkLmdldCggJ3NhbXBsZV9pZCcsICdub25lJyApCi0gICAgICAgIHNhbXBsZV9p
ZF9zZWxlY3RfZmllbGQgPTNEIHNlbGYuX19idWlsZF9zYW1wbGVfaWRfc2VsZWN0X2ZpZWxkKCB0
cj0KYW5zLCByZXF1ZXN0LCBzYW1wbGVfaWQgKQotICAgICAgICBpZiBzYW1wbGVfaWQgIT0zRCAn
bm9uZSc6Ci0gICAgICAgICAgICBzYW1wbGUgPTNEIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIHRy
YW5zLm1vZGVsLlNhbXBsZSApLmdldCggdD0KcmFucy5zZWN1cml0eS5kZWNvZGVfaWQoIHNhbXBs
ZV9pZCApICkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNhbXBsZSA9M0QgTm9uZQotICAg
ICAgICAjIFRoZSBfX2dldF9maWxlcygpIG1ldGhvZCByZWRpcmVjdHMgaGVyZSB3aXRoIGEgc3Rh
dHVzIG9mICdlcnJvcic9CiBhbmQgYSBtZXNzYWdlIGlmIHRoZXJlCi0gICAgICAgICMgd2FzIGEg
cHJvYmxlbSByZXRyaWV2aW5nIHRoZSBmaWxlcy4KLSAgICAgICAgaWYgcGFyYW1zLmdldCggJ3Nl
bGVjdF9kYXRhc2V0c190b190cmFuc2Zlcl9idXR0b24nLCBGYWxzZSApOgotICAgICAgICAgICAg
IyBHZXQgdGhlIHNhbXBsZSB0aGF0IHdhcyBzZXF1ZW5jZWQgdG8gcHJvZHVjZSB0aGVzZSBkYXRh
c2V0cy4KLSAgICAgICAgICAgIGlmIHNhbXBsZV9pZCA9M0Q9M0QgJ25vbmUnOgotICAgICAgICAg
ICAgICAgIGRlbCBrd2RbICdzZWxlY3RfZGF0YXNldHNfdG9fdHJhbnNmZXJfYnV0dG9uJyBdCi0g
ICAgICAgICAgICAgICAgbWVzc2FnZSA9M0QgJ1NlbGVjdCB0aGUgc2FtcGxlIHRoYXQgd2FzIHNl
cXVlbmNlZCB0byBwcm9kdT0KY2UgdGhlIGRhdGFzZXRzIHlvdSB3YW50IHRvIHRyYW5zZmVyLicK
LSAgICAgICAgICAgICAgICBrd2RbICdtZXNzYWdlJyBdID0zRCBtZXNzYWdlCi0gICAgICAgICAg
ICAgICAga3dkWyAnc3RhdHVzJyBdID0zRCAnZXJyb3InCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHRyYW5zLnJlc3BvbnNlLnNlbmRfcmVkaXJlY3QoIHdlYi51cmxfZm9yKCBjb250cm9sbD0KZXI9
M0QncmVxdWVzdHNfYWRtaW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPQo9M0Qnc2VsZWN0X2RhdGFzZXRz
X3RvX3RyYW5zZmVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dkICkgKQotICAgICAgICAgICAgaWYgbm90IHNh
bXBsZS5saWJyYXJ5OgotICAgICAgICAgICAgICAgICMgRGlzcGxheSBhbiBlcnJvciBpZiBhIHNh
bXBsZSBoYXMgYmVlbiBzZWxlY3RlZCB0aGF0Ci0gICAgICAgICAgICAgICAgIyBoYXMgbm90IHll
dCBiZWVuIGFzc29jaWF0ZWQgd2l0aCBhIGRlc3RpbmF0aW9uIGxpYnJhcnkuCi0gICAgICAgICAg
ICAgICAgbWVzc2FnZSA9M0QgJ1NlbGVjdCBhIHRhcmdldCBkYXRhIGxpYnJhcnkgYW5kIGZvbGRl
ciBmb3IgdD0KaGUgc2FtcGxlIGJlZm9yZSBzZWxlY3RpbmcgdGhlIGRhdGFzZXRzLicKLSAgICAg
ICAgICAgICAgICBzdGF0dXMgPTNEICdlcnJvcicKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJh
bnMucmVzcG9uc2Uuc2VuZF9yZWRpcmVjdCggd2ViLnVybF9mb3IoIGNvbnRyb2xsPQplcj0zRCdy
ZXF1ZXN0c19jb21tb24nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPQo9M0QnZWRpdF9zYW1wbGVzJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNudHJsbGVyPQo9M0QncmVxdWVzdHNfYWRtaW4nLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9M0R0cmE9
Cm5zLnNlY3VyaXR5LmVuY29kZV9pZCggcmVxdWVzdC5pZCApLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPQo9
M0RzdGF0dXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPQo9M0RtZXNzYWdlICkgKQotICAgICAgICAgICAg
IyBTYXZlIHRoZSBzYW1wbGUgZGF0YXNldHMKLSAgICAgICAgICAgIHNhbXBsZV9kYXRhc2V0X2Zp
bGVfbmFtZXMgPTNEIHNlbGYuX19jcmVhdGVfc2FtcGxlX2RhdGFzZXRzKCB0PQpyYW5zLCBzYW1w
bGUsIHNlbGVjdGVkX2RhdGFzZXRzX3RvX3RyYW5zZmVyLCBleHRlcm5hbF9zZXJ2aWNlICkKLSAg
ICAgICAgICAgIGlmIHNhbXBsZV9kYXRhc2V0X2ZpbGVfbmFtZXM6Ci0gICAgICAgICAgICAgICAg
bWVzc2FnZSA9M0QgJ0RhdGFzZXRzICglcykgaGF2ZSBiZWVuIHNlbGVjdGVkIGZvciBzYW1wbGUg
KD0KJXMpJyAlIFwKLSAgICAgICAgICAgICAgICAgICAgKCBzdHIoIHNhbXBsZV9kYXRhc2V0X2Zp
bGVfbmFtZXMgKVsxOi0xXS5yZXBsYWNlKCAiJyIsPQogIiIgKSwgc2FtcGxlLm5hbWUgKQotICAg
ICAgICAgICAgcmV0dXJuIHRyYW5zLnJlc3BvbnNlLnNlbmRfcmVkaXJlY3QoIHdlYi51cmxfZm9y
KCBjb250cm9sbGVyPQo9M0QncmVxdWVzdHNfYWRtaW4nLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249M0QnbWE9Cm5h
Z2VfZGF0YXNldHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X2lkPQo9M0RyZXF1ZXN0X2lkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1w
bGVfaWQ9M0Q9CnNhbXBsZV9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0zRG1lPQpzc2FnZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dHVzPTNEc3RhPQp0dXMgKSApCi0gICAgICAgIHJldHVybiB0cmFucy5maWxsX3RlbXBsYXRlKCAn
L2FkbWluL3JlcXVlc3RzL3NlbGVjdF9kYXRhc2V0c190b190cj0KYW5zZmVyLm1ha28nLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY250cmxsZXI9M0QncmVxdWVzdHNfYWRt
aW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdD0zRHJlcXVl
c3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlcm5hbF9zZXJ2aWNl
PTNEZXh0ZXJuYWxfc2VydmljZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNjcF9jb25maWdzPTNEc2NwX2NvbmZpZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzYW1wbGU9M0RzYW1wbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzYW1wbGVfaWRfc2VsZWN0X2ZpZWxkPTNEc2FtcGxlX2lkX3NlbD0KZWN0X2ZpZWxkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTNEc3RhdHVzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0zRG1lc3NhZ2UgKQotCi0g
ICAgQHdlYi5qc29uCi0gICAgZGVmIGdldF9maWxlX2RldGFpbHMoIHNlbGYsIHRyYW5zLCByZXF1
ZXN0X2lkLCBleHRlcm5hbF9zZXJ2aWNlX2lkLCBmbz0KbGRlcl9wYXRoICk6Ci0gICAgICAgIGRl
ZiBwcmludF90aWNrcyggZCApOgotICAgICAgICAgICAgIyBwZXhwZWN0IHRpbWVvdXQgbWV0aG9k
Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgICMgQXZvaWQgY2FjaGluZwotICAgICAgICB0cmFu
cy5yZXNwb25zZS5oZWFkZXJzWydQcmFnbWEnXSA9M0QgJ25vLWNhY2hlJwotICAgICAgICB0cmFu
cy5yZXNwb25zZS5oZWFkZXJzWydFeHBpcmVzJ10gPTNEICcwJwotICAgICAgICBpZiBwZXhwZWN0
IGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gUEVYUEVDVF9JTVBPUlRfTUVTU0FHRQotICAg
ICAgICBleHRlcm5hbF9zZXJ2aWNlID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5t
b2RlbC5FeHRlcm5hbFM9CmVydmljZSApLmdldCggdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBl
eHRlcm5hbF9zZXJ2aWNlX2lkICkgKQotICAgICAgICBleHRlcm5hbF9zZXJ2aWNlLmxvYWRfZGF0
YV90cmFuc2Zlcl9zZXR0aW5ncyggdHJhbnMgKQotICAgICAgICBzY3BfY29uZmlncyA9M0QgZXh0
ZXJuYWxfc2VydmljZS5kYXRhX3RyYW5zZmVyWyB0cmFucy5tb2RlbC5FeHRlcm49CmFsU2Vydmlj
ZS5kYXRhX3RyYW5zZmVyX3Byb3RvY29sLlNDUCBdCi0gICAgICAgIGNtZCA9M0QgJ3NzaCAlc0Al
cyAibHMgLW9naHAgXCclc1wnIicgJSAoIHNjcF9jb25maWdzWyAndXNlcl9uYW1lJz0KIF0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3BfY29uZmln
c1sgJ2hvc3QnIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmb2xkZXJfcGF0aCApCi0gICAgICAgICMgSGFuZGxlIHRoZSBhdXRoZW50aWNhdGlvbiBt
ZXNzYWdlIGlmIHNzaCBrZXlzIGFyZSBub3Qgc2V0IC0gdGhlID0KbWVzc2FnZSBpcwotICAgICAg
ICAjIHNvbWV0aGluZyBsaWtlOiAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNvbnRpbnVlIGNv
bm5lY3RpbmcgKHk9CmVzL25vKS4iCi0gICAgICAgIG91dHB1dCA9M0QgcGV4cGVjdC5ydW4oIGNt
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50cz0zRHsgJ1woeWVzXC9ub1wp
XC4qJyA6ICd5ZXNcclxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICcuc3N3b3JkOionIDogc2NwX2NvbmZpZ3NbICdwYXNzd29yPQpkJyBdICsgJ1xyXG4nLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGV4cGVjdC5USU1FT1VUIDogcHJp
bnRfdGlja3MgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9M0QxMCAp
Ci0gICAgICAgIGZvciBwYXNzd29yZF9zdHIgaW4gWyAnUGFzc3dvcmQ6XHJcbicsICdwYXNzd29y
ZDpcclxuJyBdOgotICAgICAgICAgICAgIyBFbGltaW5hdGUgdGhlIG91dHB1dCBjcmVhdGVkIHVz
aW5nIHNzaCBmcm9tIHRoZSB0cmVlCi0gICAgICAgICAgICBpZiBwYXNzd29yZF9zdHIgaW4gb3V0
cHV0OgotICAgICAgICAgICAgICAgIG91dHB1dCA9M0Qgb3V0cHV0LnJlcGxhY2UoIHBhc3N3b3Jk
X3N0ciwgJycgKQotICAgICAgICByZXR1cm4gdW5pY29kZSggb3V0cHV0LnJlcGxhY2UoICdcclxu
JywgJzxici8+JyApICkKLQotICAgIEB3ZWIuanNvbgotICAgIGRlZiBvcGVuX2ZvbGRlciggc2Vs
ZiwgdHJhbnMsIHJlcXVlc3RfaWQsIGV4dGVybmFsX3NlcnZpY2VfaWQsIGtleSApOgotICAgICAg
ICAjIEF2b2lkIGNhY2hpbmcKLSAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVhZGVyc1snUHJhZ21h
J10gPTNEICduby1jYWNoZScKLSAgICAgICAgdHJhbnMucmVzcG9uc2UuaGVhZGVyc1snRXhwaXJl
cyddID0zRCAnMCcKLSAgICAgICAgcmVxdWVzdCA9M0QgdHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeSgg
dHJhbnMubW9kZWwuUmVxdWVzdCApLmdldCggdHJhPQpucy5zZWN1cml0eS5kZWNvZGVfaWQoIHJl
cXVlc3RfaWQgKSApCi0gICAgICAgIGV4dGVybmFsX3NlcnZpY2UgPTNEIHRyYW5zLnNhX3Nlc3Np
b24ucXVlcnkoIHRyYW5zLm1vZGVsLkV4dGVybmFsUz0KZXJ2aWNlICkuZ2V0KCB0cmFucy5zZWN1
cml0eS5kZWNvZGVfaWQoIGV4dGVybmFsX3NlcnZpY2VfaWQgKSApCi0gICAgICAgIGZvbGRlcl9w
YXRoID0zRCBrZXkKLSAgICAgICAgZmlsZXNfbGlzdCA9M0Qgc2VsZi5fX2dldF9maWxlcyggdHJh
bnMsIHJlcXVlc3QsIGV4dGVybmFsX3NlcnZpY2UsPQogZm9sZGVyX3BhdGggKQotICAgICAgICBm
b2xkZXJfY29udGVudHMgPTNEIFtdCi0gICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlc19saXN0
OgotICAgICAgICAgICAgaXNfZm9sZGVyID0zRCBGYWxzZQotICAgICAgICAgICAgaWYgZmlsZW5h
bWUgYW5kIGZpbGVuYW1lWy0xXSA9M0Q9M0Qgb3Muc2VwOgotICAgICAgICAgICAgICAgIGlzX2Zv
bGRlciA9M0QgVHJ1ZQotICAgICAgICAgICAgaWYgZmlsZW5hbWU6Ci0gICAgICAgICAgICAgICAg
ZnVsbF9wYXRoID0zRCBvcy5wYXRoLmpvaW4oIGZvbGRlcl9wYXRoLCBmaWxlbmFtZSApCi0gICAg
ICAgICAgICAgICAgbm9kZSA9M0QgeyAidGl0bGUiOiBmaWxlbmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAiaXNGb2xkZXIiOiBpc19mb2xkZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgImlzTGF6eSI6IGlzX2ZvbGRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAidG9vbHRp
cCI6IGZ1bGxfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAia2V5IjogZnVsbF9wYXRo
IH0KLSAgICAgICAgICAgICAgICBmb2xkZXJfY29udGVudHMuYXBwZW5kKCBub2RlICkKLSAgICAg
ICAgcmV0dXJuIGZvbGRlcl9jb250ZW50cwotCi0gICAgZGVmIF9fZ2V0X2ZpbGVzKCBzZWxmLCB0
cmFucywgcmVxdWVzdCwgZXh0ZXJuYWxfc2VydmljZSwgZm9sZGVyX3BhdGggKToKLSAgICAgICAg
IyBSZXRyaWV2ZXMgdGhlIGZpbGVuYW1lcyB0byBiZSB0cmFuc2ZlcnJlZCBmcm9tIHRoZSByZW1v
dGUgaG9zdC4KLSAgICAgICAgb2sgPTNEIFRydWUKLSAgICAgICAgZXh0ZXJuYWxfc2VydmljZS5s
b2FkX2RhdGFfdHJhbnNmZXJfc2V0dGluZ3MoIHRyYW5zICkKLSAgICAgICAgc2NwX2NvbmZpZ3Mg
PTNEIGV4dGVybmFsX3NlcnZpY2UuZGF0YV90cmFuc2ZlclsgdHJhbnMubW9kZWwuRXh0ZXJuPQph
bFNlcnZpY2UuZGF0YV90cmFuc2Zlcl9wcm90b2NvbC5TQ1AgXQotICAgICAgICBpZiBub3Qgc2Nw
X2NvbmZpZ3NbICdob3N0JyBdIG9yIG5vdCBzY3BfY29uZmlnc1sgJ3VzZXJfbmFtZScgXSBvciA9
Cm5vdCBzY3BfY29uZmlnc1sgJ3Bhc3N3b3JkJyBdOgotICAgICAgICAgICAgc3RhdHVzID0zRCAn
ZXJyb3InCi0gICAgICAgICAgICBtZXNzYWdlID0zRCAiRXJyb3IgaW4gZXh0ZXJuYWwgc2Vydmlj
ZSBsb2dpbiBpbmZvcm1hdGlvbi4iCi0gICAgICAgICAgICBvayA9M0QgRmFsc2UKLQotICAgICAg
ICBkZWYgcHJpbnRfdGlja3MoIGQgKToKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgY21kID0z
RCAnc3NoICVzQCVzICJscyAtcCBcJyVzXCciJyAlICggc2NwX2NvbmZpZ3NbICd1c2VyX25hbWUn
IF0sPQogc2NwX2NvbmZpZ3NbICdob3N0JyBdLCBmb2xkZXJfcGF0aCApCi0gICAgICAgICMgSGFu
ZGxlIHRoZSBhdXRoZW50aWNhdGlvbiBtZXNzYWdlIGlmIGtleXMgYXJlIG5vdCBzZXQgLSB0aGUg
bWVzcz0KYWdlIGlzCi0gICAgICAgICMgc29tZXRoaW5nIGxpa2U6ICJBcmUgeW91IHN1cmUgeW91
IHdhbnQgdG8gY29udGludWUgY29ubmVjdGluZyAoeT0KZXMvbm8pLiIKLSAgICAgICAgaWYgcGV4
cGVjdCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIG91dHB1dCA9M0QgcGV4cGVjdC5ydW4oIGNt
ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudHM9M0R7ICdcKHllc1wv
bm9cKVwuKicgOiAneWVzXHJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJy5zc3dvcmQ6KicgOiBzY3BfY29uZmlnc1sgJ3Bhcz0Kc3dvcmQnIF0gKyAnXHJc
bicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGV4cGVjdC5U
SU1FT1VUIDogcHJpbnRfdGlja3MgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0aW1lb3V0PTNEMTAgKQotICAgICAgICAgICAgaWYgJ05vIHN1Y2ggZmlsZSBvciBkaXJlY3Rv
cnknIGluIG91dHB1dDoKLSAgICAgICAgICAgICAgICBzdGF0dXMgPTNEICdlcnJvcicKLSAgICAg
ICAgICAgICAgICBtZXNzYWdlID0zRCAiTm8gZm9sZGVyIG5hbWVkICglcykgZXhpc3RzIG9uIHRo
ZSBleHRlcm5hbCBzPQplcnZpY2UuIiAlIGZvbGRlcl9wYXRoCi0gICAgICAgICAgICAgICAgb2sg
PTNEIEZhbHNlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc3RhdHVzID0zRCAnZXJy
b3InCi0gICAgICAgICAgICAgICAgbWVzc2FnZSA9M0QgUEVYUEVDVF9JTVBPUlRfTUVTU0FHRQot
ICAgICAgICAgICAgICAgIG9rID0zRCBGYWxzZQotICAgICAgICBpZiBvazoKLSAgICAgICAgICAg
IGlmICdhc3N3b3JkOicgaW4gb3V0cHV0OgotICAgICAgICAgICAgICAgICMgRWxpbWluYXRlIHRo
ZSBvdXRwdXQgY3JlYXRlZCB1c2luZyBzc2ggZnJvbSB0aGUgdHJlZQotICAgICAgICAgICAgICAg
IG91dHB1dF9hc19saXN0ID0zRCBvdXRwdXQuc3BsaXRsaW5lcygpWyAxOiBdCi0gICAgICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgICAgIG91dHB1dF9hc19saXN0ID0zRCBvdXRwdXQuc3BsaXRs
aW5lcygpCi0gICAgICAgICAgICByZXR1cm4gb3V0cHV0X2FzX2xpc3QKLSAgICAgICAgcmV0dXJu
IHRyYW5zLnJlc3BvbnNlLnNlbmRfcmVkaXJlY3QoIHdlYi51cmxfZm9yKCBjb250cm9sbGVyPTNE
J3JlPQpxdWVzdHNfYWRtaW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0zRCdzZWxlY3Q9Cl9kYXRhc2V0c190b190cmFu
c2ZlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdF9pZD0zRHRyYT0KbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCByZXF1ZXN0
LmlkICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXh0ZXJuYWxfc2VydmljZT0KX2lkPTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lk
KCBleHRlcm5hbF9zZXJ2aWNlLmlkICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTNEc3RhdHVzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9M0Rt
ZXNzYWc9CmUgKSApCi0KLSAgICBkZWYgX19jcmVhdGVfc2FtcGxlX2RhdGFzZXRzKCBzZWxmLCB0
cmFucywgc2FtcGxlLCBzZWxlY3RlZF9kYXRhc2V0c190PQpvX3RyYW5zZmVyLCBleHRlcm5hbF9z
ZXJ2aWNlICk6Ci0gICAgICAgIGV4dGVybmFsX3NlcnZpY2UubG9hZF9kYXRhX3RyYW5zZmVyX3Nl
dHRpbmdzKCB0cmFucyApCi0gICAgICAgIHNjcF9jb25maWdzID0zRCBleHRlcm5hbF9zZXJ2aWNl
LmRhdGFfdHJhbnNmZXJbIHRyYW5zLm1vZGVsLkV4dGVybj0KYWxTZXJ2aWNlLmRhdGFfdHJhbnNm
ZXJfcHJvdG9jb2wuU0NQIF0KLSAgICAgICAgc2FtcGxlX2RhdGFzZXRfZmlsZV9uYW1lcyA9M0Qg
W10KLSAgICAgICAgaWYgc2VsZWN0ZWRfZGF0YXNldHNfdG9fdHJhbnNmZXI6Ci0gICAgICAgICAg
ICBmb3IgZmlsZXBhdGggaW4gc2VsZWN0ZWRfZGF0YXNldHNfdG9fdHJhbnNmZXI6Ci0gICAgICAg
ICAgICAgICAgIyBGSVhNRTogaGFuZGxlIGZvbGRlciBzZWxlY3Rpb24gLSBpZ25vcmUgZm9sZGVy
cyBmb3Igbm93Ci0gICAgICAgICAgICAgICAgaWYgZmlsZXBhdGhbLTFdICE9M0Qgb3Muc2VwOgot
ICAgICAgICAgICAgICAgICAgICBuYW1lID0zRCBzZWxmLl9fcmVuYW1lX2RhdGFzZXQoIHNhbXBs
ZSwgZmlsZXBhdGguc3BsaXQ9CiggJy8nIClbLTFdLCBzY3BfY29uZmlncyApCi0gICAgICAgICAg
ICAgICAgICAgIHN0YXR1cyA9M0QgdHJhbnMuYXBwLm1vZGVsLlNhbXBsZURhdGFzZXQudHJhbnNm
ZXJfc3RhdD0KdXMuTk9UX1NUQVJURUQKLSAgICAgICAgICAgICAgICAgICAgc2l6ZSA9M0Qgc2Ft
cGxlLmdldF91bnRyYW5zZmVycmVkX2RhdGFzZXRfc2l6ZSggZmlsZXBhPQp0aCwgc2NwX2NvbmZp
Z3MgKQotICAgICAgICAgICAgICAgICAgICBzYW1wbGVfZGF0YXNldCA9M0QgdHJhbnMubW9kZWwu
U2FtcGxlRGF0YXNldCggc2FtcGxlPQo9M0RzYW1wbGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9wYXRoPQo9M0Rm
aWxlcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0dXM9M0RzPQp0YXR1cywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPTNEbmFtPQpl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVycm9yX21zZz0KPTNEJycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT0zRHNpej0KZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleHRlcm5hbF9zPQplcnZpY2U9M0RleHRlcm5hbF9zZXJ2aWNlICkKLSAgICAgICAgICAgICAg
ICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5hZGQoIHNhbXBsZV9kYXRhc2V0ICkKLSAgICAgICAgICAg
ICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCi0gICAgICAgICAgICAgICAgICAgIHNh
bXBsZV9kYXRhc2V0X2ZpbGVfbmFtZXMuYXBwZW5kKCBzdHIoIHNhbXBsZV9kYXRhc2V0Lj0KbmFt
ZSApICkKLSAgICAgICAgcmV0dXJuIHNhbXBsZV9kYXRhc2V0X2ZpbGVfbmFtZXMKLQotICAgIGRl
ZiBfX3JlbmFtZV9kYXRhc2V0KCBzZWxmLCBzYW1wbGUsIGZpbGVwYXRoLCBzY3BfY29uZmlncyAp
OgotICAgICAgICBuYW1lID0zRCBmaWxlcGF0aC5zcGxpdCggJy8nIClbLTFdCi0gICAgICAgIG9w
dGlvbnMgPTNEIHNhbXBsZS5yZXF1ZXN0LnR5cGUucmVuYW1lX2RhdGFzZXRfb3B0aW9ucwotICAg
ICAgICBvcHRpb24gPTNEIHNjcF9jb25maWdzLmdldCggJ3JlbmFtZV9kYXRhc2V0Jywgb3B0aW9u
cy5OTyApCi0gICAgICAgIGlmIG9wdGlvbiA9M0Q9M0Qgb3B0aW9ucy5TQU1QTEVfTkFNRToKLSAg
ICAgICAgICAgIG5ld19uYW1lID0zRCBzYW1wbGUubmFtZSArICdfJyArIG5hbWUKLSAgICAgICAg
aWYgb3B0aW9uID0zRD0zRCBvcHRpb25zLkVYUEVSSU1FTlRfQU5EX1NBTVBMRV9OQU1FOgotICAg
ICAgICAgICAgbmV3X25hbWUgPTNEIHNhbXBsZS5yZXF1ZXN0Lm5hbWUgKyAnXycgKyBzYW1wbGUu
bmFtZSArICdfJyArIG49CmFtZQotICAgICAgICBpZiBvcHRpb24gPTNEPTNEIG9wdGlvbnMuRVhQ
RVJJTUVOVF9OQU1FOgotICAgICAgICAgICAgbmV3X25hbWUgPTNEIHNhbXBsZS5yZXF1ZXN0Lm5h
bWUgKyAnXycgKyBuYW1lCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBuZXdfbmFtZSA9M0Qg
bmFtZQotICAgICAgICByZXR1cm4gdXRpbC5zYW5pdGl6ZV9mb3JfZmlsZW5hbWUoIG5ld19uYW1l
ICkKLQogICAgIGRlZiBfX2Vuc3VyZV9saWJyYXJ5X2FkZF9wZXJtaXNzaW9uKCBzZWxmLCB0cmFu
cywgdGFyZ2V0X2xpYnJhcnksIHRhcmc9CmV0X2ZvbGRlciApOgogICAgICAgICAiIiIKICAgICAg
ICAgRW5zdXJlcyB0aGUgY3VycmVudCBhZG1pbiB1c2VyIGhhcyBBRERfTElCUkFSWSBwZXJtaXNz
aW9uIG9uIHRoZSB0PQphcmdldCBkYXRhIGxpYnJhcnkgYW5kIGZvbGRlci4KQEAgLTU5NSw5MiAr
Mzg2LDYgQEAKICAgICAgICAgaWYgZmx1c2hfbmVlZGVkOgogICAgICAgICAgICAgdHJhbnMuc2Ff
c2Vzc2lvbi5mbHVzaCgpCj0yMAotICAgIGRlZiBfX2NyZWF0ZV9kYXRhX3RyYW5zZmVyX21lc3Nh
Z2VzKCBzZWxmLCB0cmFucywgc2FtcGxlLCBzZWxlY3RlZF9zYW09CnBsZV9kYXRhc2V0cyApOgot
ICAgICAgICAiIiIKLSAgICAgICAgQ3JlYXRlcyB0aGUgeG1sIG1lc3NhZ2VzIHRvIHNlbmQgdG8g
dGhlIHJhYmJpdG1xIHNlcnZlci4gSXQgcmV0dXJuPQpzIGEgZGljdGlvbmFyeSBvZiBtZXNzYWdl
cwotICAgICAgICBrZXllZCBieSB0aGUgZXh0ZXJuYWwgc2VydmljZSB1c2VkIHRvIHRyYW5zZmVy
IHRoZSBkYXRhc2V0cwotICAgICAgICAiIiIKLSAgICAgICAgIyBDcmVhdGUgdGhlIHhtbCBtZXNz
YWdlIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgdGVtcGxhdGUKLSAgICAgICAgeG1sID0zRCBcCi0g
ICAgICAgICAgICAnJycgPGRhdGFfdHJhbnNmZXI+Ci0gICAgICAgICAgICAgICAgICAgIDxnYWxh
eHlfaG9zdD4lKEdBTEFYWV9IT1NUKXM8L2dhbGF4eV9ob3N0PgotICAgICAgICAgICAgICAgICAg
ICA8YXBpX2tleT4lKEFQSV9LRVkpczwvYXBpX2tleT4KLSAgICAgICAgICAgICAgICAgICAgPGRh
dGFfaG9zdD4lKERBVEFfSE9TVClzPC9kYXRhX2hvc3Q+Ci0gICAgICAgICAgICAgICAgICAgIDxk
YXRhX3VzZXI+JShEQVRBX1VTRVIpczwvZGF0YV91c2VyPgotICAgICAgICAgICAgICAgICAgICA8
ZGF0YV9wYXNzd29yZD4lKERBVEFfUEFTU1dPUkQpczwvZGF0YV9wYXNzd29yZD4KLSAgICAgICAg
ICAgICAgICAgICAgPHJlcXVlc3RfaWQ+JShSRVFVRVNUX0lEKXM8L3JlcXVlc3RfaWQ+Ci0gICAg
ICAgICAgICAgICAgICAgIDxzYW1wbGVfaWQ+JShTQU1QTEVfSUQpczwvc2FtcGxlX2lkPgotICAg
ICAgICAgICAgICAgICAgICA8bGlicmFyeV9pZD4lKExJQlJBUllfSUQpczwvbGlicmFyeV9pZD4K
LSAgICAgICAgICAgICAgICAgICAgPGZvbGRlcl9pZD4lKEZPTERFUl9JRClzPC9mb2xkZXJfaWQ+
Ci0gICAgICAgICAgICAgICAgICAgICUoREFUQVNFVFMpcwotICAgICAgICAgICAgICAgIDwvZGF0
YV90cmFuc2Zlcj4nJycKLSAgICAgICAgZGF0YXNldF94bWwgPTNEIFwKLSAgICAgICAgICAgICcn
JzxkYXRhc2V0PgotICAgICAgICAgICAgICAgICAgIDxkYXRhc2V0X2lkPiUoSUQpczwvZGF0YXNl
dF9pZD4KLSAgICAgICAgICAgICAgICAgICA8bmFtZT4lKE5BTUUpczwvbmFtZT4KLSAgICAgICAg
ICAgICAgICAgICA8ZmlsZT4lKEZJTEUpczwvZmlsZT4KLSAgICAgICAgICAgICAgIDwvZGF0YXNl
dD4nJycKLSAgICAgICAgIyBIZXJlIHdlIGdyb3VwIGFsbCB0aGUgc2FtcGxlX2RhdGFzZXRzIGJ5
IHRoZSBleHRlcm5hbCBzZXJ2aWNlIHVzPQplZCB0byB0cmFuc2ZlciB0aGVtLgotICAgICAgICAj
IFRoZSBpZGVhIGlzIHRvIGJ1bmRsZSB1cCB0aGUgc2FtcGxlX2RhdGFzZXRzIHdoaWNoIHVzZXMg
dGhlIHNhbWU9CiBleHRlcm5hbCBzZXJ2aWNlIGFuZAotICAgICAgICAjIHNlbmQgYSBzaW5nbGUg
QU1RUCBtZXNzYWdlIHRvIHRoZSBnYWxheHlfbGlzdGVuZXIKLSAgICAgICAgZGF0YXNldF9lbGVt
ZW50cyA9M0Qge30KLSAgICAgICAgZm9yIHNhbXBsZV9kYXRhc2V0IGluIHNlbGVjdGVkX3NhbXBs
ZV9kYXRhc2V0czoKLSAgICAgICAgICAgIGV4dGVybmFsX3NlcnZpY2UgPTNEIHNhbXBsZV9kYXRh
c2V0LmV4dGVybmFsX3NlcnZpY2UKLSAgICAgICAgICAgIGlmIHNhbXBsZV9kYXRhc2V0LnN0YXR1
cyA9M0Q9M0QgdHJhbnMuYXBwLm1vZGVsLlNhbXBsZURhdGFzZXQuPQp0cmFuc2Zlcl9zdGF0dXMu
Tk9UX1NUQVJURUQ6Ci0gICAgICAgICAgICAgICAgaWYgZXh0ZXJuYWxfc2VydmljZSBub3QgaW4g
ZGF0YXNldF9lbGVtZW50czoKLSAgICAgICAgICAgICAgICAgICAgZGF0YXNldF9lbGVtZW50c1sg
ZXh0ZXJuYWxfc2VydmljZSBdID0zRCAnJwotICAgICAgICAgICAgICAgIGRhdGFzZXRfZWxlbWVu
dHNbIGV4dGVybmFsX3NlcnZpY2UgXSArPTNEIGRhdGFzZXRfeG1sICUgZGk9CmN0KCBJRD0zRHN0
ciggc2FtcGxlX2RhdGFzZXQuaWQgKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPQogIE5BTUU9M0RzYW1w
bGVfZGF0YXNldC5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9CiAgRklMRT0zRHNhbXBsZV9kYXRh
c2V0LmZpbGVfcGF0aCApCi0gICAgICAgICAgICAgICAgIyB1cGRhdGUgdGhlIGRhdGFzZXQgdHJh
bnNmZXIgc3RhdHVzCi0gICAgICAgICAgICAgICAgc2FtcGxlX2RhdGFzZXQuc3RhdHVzID0zRCB0
cmFucy5hcHAubW9kZWwuU2FtcGxlRGF0YXNldC50cj0KYW5zZmVyX3N0YXR1cy5JTl9RVUVVRQot
ICAgICAgICAgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uYWRkKCBzYW1wbGVfZGF0YXNldCApCi0g
ICAgICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCi0gICAgICAgICMgRmluYWxs
eSBwcmVwZW5kIHRoZSBleHRlcm5hbCBzZXJ2aWNlIGluZm8gdG8gdGhlIHNldHMgb2Ygc2FtcGxl
ID0KZGF0YXNldHMKLSAgICAgICAgbWVzc2FnZXMgPTNEIFtdCi0gICAgICAgIGZvciBleHRlcm5h
bF9zZXJ2aWNlLCBkYXRhc2V0X2VsZW0gaW4gZGF0YXNldF9lbGVtZW50cy5pdGVtcygpOgotICAg
ICAgICAgICAgZXh0ZXJuYWxfc2VydmljZS5sb2FkX2RhdGFfdHJhbnNmZXJfc2V0dGluZ3MoIHRy
YW5zICkKLSAgICAgICAgICAgIHNjcF9jb25maWdzID0zRCBleHRlcm5hbF9zZXJ2aWNlLmRhdGFf
dHJhbnNmZXJbIHRyYW5zLm1vZGVsLkV4PQp0ZXJuYWxTZXJ2aWNlLmRhdGFfdHJhbnNmZXJfcHJv
dG9jb2wuU0NQIF0KLSAgICAgICAgICAgICMgQ2hlY2sgZGF0YSB0cmFuc2ZlciBzZXR0aW5ncwot
ICAgICAgICAgICAgZXJyX21zZyA9M0Qgc2VsZi5fX3ZhbGlkYXRlX2RhdGFfdHJhbnNmZXJfc2V0
dGluZ3MoIHRyYW5zLCBzYW09CnBsZS5yZXF1ZXN0LnR5cGUsIHNjcF9jb25maWdzICkKLSAgICAg
ICAgICAgIGlmIGVycl9tc2c6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zLnJlc3BvbnNl
LnNlbmRfcmVkaXJlY3QoIHdlYi51cmxfZm9yKCBjb250cm9sbD0KZXI9M0QncmVxdWVzdHNfYWRt
aW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWN0aW9uPQo9M0QnbWFuYWdlX2RhdGFzZXRzJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNh
bXBsZV9pPQpkPTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBzYW1wbGUuaWQgKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXR1cz0KPTNEJ2Vycm9yJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9Cj0zRGVycl9tc2cgKSAp
Ci0gICAgICAgICAgICBtZXNzYWdlID0zRCB4bWwgJSBkaWN0KCBHQUxBWFlfSE9TVD0zRHRyYW5z
LnJlcXVlc3QuaG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUElfS0VZ
PTNEdHJhbnMudXNlci5hcGlfa2V5c1swXS5rZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgREFUQV9IT1NUPTNEc2NwX2NvbmZpZ3NbICdob3N0JyBdLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERBVEFfVVNFUj0zRHNjcF9jb25maWdzWyAndXNlcl9uYW1l
JyBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEFfUEFTU1dPUkQ9M0Rz
Y3BfY29uZmlnc1sgJ3Bhc3N3b3JkJyA9Cl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUkVRVUVTVF9JRD0zRHN0ciggc2FtcGxlLnJlcXVlc3QuaWQgKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTQU1QTEVfSUQ9M0RzdHIoIHNhbXBsZS5pZCApLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlJBUllfSUQ9M0RzdHIoIHNhbXBsZS5s
aWJyYXJ5LmlkICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRk9MREVSX0lE
PTNEc3RyKCBzYW1wbGUuZm9sZGVyLmlkICksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgREFUQVNFVFM9M0RkYXRhc2V0X2VsZW0gKQotICAgICAgICAgICAgbWVzc2FnZXMuYXBw
ZW5kKCBtZXNzYWdlLnJlcGxhY2UoICdcbicsICcnICkucmVwbGFjZSggJ1xyJywgJyc9CiApICkK
LSAgICAgICAgcmV0dXJuIG1lc3NhZ2VzCi0KLSAgICBkZWYgX192YWxpZGF0ZV9kYXRhX3RyYW5z
ZmVyX3NldHRpbmdzKCBzZWxmLCB0cmFucywgcmVxdWVzdF90eXBlLCBzY3BfPQpjb25maWdzICk6
Ci0gICAgICAgIGVycl9tc2cgPTNEICcnCi0gICAgICAgICMgY2hlY2sgdGhlIGV4dGVybmFsIHNl
cnZpY2UgbG9naW4gaW5mbwotICAgICAgICBpZiBub3Qgc2NwX2NvbmZpZ3MuZ2V0KCAnaG9zdCcs
ICcnICkgb3IgXAotICAgICAgICAgICAgICAgIG5vdCBzY3BfY29uZmlncy5nZXQoICd1c2VyX25h
bWUnLCAnJyApIG9yIFwKLSAgICAgICAgICAgICAgICBub3Qgc2NwX2NvbmZpZ3MuZ2V0KCAncGFz
c3dvcmQnLCAnJyApOgotICAgICAgICAgICAgZXJyX21zZyArPTNEICJFcnJvciBpbiBleHRlcm5h
bCBzZXJ2aWNlIGxvZ2luIGluZm9ybWF0aW9uLiAiCi0gICAgICAgIGlmIG5vdCB0cmFucy51c2Vy
LmFwaV9rZXlzOgotICAgICAgICAgICAgZXJyX21zZyArPTNEICJTZXQgeW91ciBBUEkgS2V5IGlu
IHlvdXIgVXNlciBQcmVmZXJlbmNlcyB0byB0cmE9Cm5zZmVyIGRhdGFzZXRzLiAiCi0gICAgICAg
ICMgQ2hlY2sgaWYgbGlicmFyeV9pbXBvcnRfZGlyIGlzIHNldAotICAgICAgICBpZiBub3QgdHJh
bnMuYXBwLmNvbmZpZy5saWJyYXJ5X2ltcG9ydF9kaXI6Ci0gICAgICAgICAgICBlcnJfbXNnID0z
RCAiJ1RoZSBsaWJyYXJ5X2ltcG9ydF9kaXInIHNldHRpbmcgaXMgbm90IGNvcnJlY3RseT0KIHNl
dCBpbiB0aGUgR2FsYXh5IGNvbmZpZyBmaWxlLiAiCi0gICAgICAgICMgQ2hlY2sgdGhlIFJhYmJp
dE1RIHNlcnZlciBzZXR0aW5ncyBpbiB0aGUgY29uZmlnIGZpbGUKLSAgICAgICAgZm9yIGssIHYg
aW4gdHJhbnMuYXBwLmNvbmZpZy5hbXFwLml0ZW1zKCk6Ci0gICAgICAgICAgICBpZiBub3QgdjoK
LSAgICAgICAgICAgICAgICBlcnJfbXNnICs9M0QgJ1NldCBSYWJiaXRNUSBzZXJ2ZXIgc2V0dGlu
Z3MgaW4gdGhlICJnYWxheHlfPQphbXFwIiBzZWN0aW9uIG9mIHRoZSBHYWxheHkgY29uZmlnIGZp
bGUsIHNwZWNpZmljYWxseSAiJXMiIGlzIG5vdCBzZXQuJyAlIGsKLSAgICAgICAgICAgICAgICBi
cmVhawotICAgICAgICByZXR1cm4gZXJyX21zZwotCiAgICAgQHdlYi5leHBvc2UKICAgICBAd2Vi
LnJlcXVpcmVfYWRtaW4KICAgICBkZWYgaW5pdGlhdGVfZGF0YV90cmFuc2Zlciggc2VsZiwgdHJh
bnMsIHNhbXBsZV9pZCwgc2FtcGxlX2RhdGFzZXRzPTNEPQpbXSwgc2FtcGxlX2RhdGFzZXRfaWQ9
M0QnJyApOgpAQCAtNzIyLDM1ICs0MjcsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9CiAgICAgICAg
ICAgICAgICAgIGV4dGVybmFsX3NlcnZpY2U9M0RleHRlcm5hbF9zZXJ2aWNlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9CiAgICAgICAgICAgICAgICAgIGV4dGVybmFsX3NlcnZpY2VfdHlwZT0zRGV4dGVy
bmFsX3NlcnZpY2VfdHlwZSApCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIFRPRE86IFVz
aW5nIFJhYmJpdE1xIGZvciBub3csIGJ1dCBlbGltaW5hdGUgdGhpcyBlbnRpcmUgYmxvYz0KayB3
aGVuIHdlIHJlcGxhY2UgUmFiYml0TXEgd2l0aCBHYWxheHkncwotICAgICAgICAgICAgIyBvd24g
bWVzc2FnaW5nIGVuZ2luZS4gIFdlJ3JlIGhvbGRpbmcgb2ZmIG9uIHVzaW5nIHRoZSBuZXcgd2E9
CnkgdG8gdHJhbnNmZXIgZmlsZXMgbWFudWFsbHkgdW50aWwgd2UKLSAgICAgICAgICAgICMgaW1w
bGVtZW50IGEgR2FsYXh5LXByb3ByaWV0YXJ5IG1lc3NhZ2luZyBlbmdpbmUgYmVjYXVzZSB0aGUg
PQpkZWZlcnJlZCBqb2IgcGx1Z2lucyBjdXJyZW50bHkgcGVyZm9ybQotICAgICAgICAgICAgIyBj
b25zdGFudCBkYiBoaXRzIHRvIGNoZWNrIGZvciBkZWZlcnJlZCBqb2JzIHRoYXQgYXJlIG5vdCBp
biA9CmEgZmluaXNoZWQgc3RhdGUuCi0gICAgICAgICAgICAjIENyZWF0ZSB0aGUgbWVzc2FnZQot
ICAgICAgICAgICAgbWVzc2FnZXMgPTNEIHNlbGYuX19jcmVhdGVfZGF0YV90cmFuc2Zlcl9tZXNz
YWdlcyggdHJhbnMsIHNhbXA9CmxlLCBzYW1wbGVfZGF0YXNldHMgKQotICAgICAgICAgICAgIyBT
ZW5kIHRoZSBtZXNzYWdlcwotICAgICAgICAgICAgZm9yIHJtcV9tc2cgaW4gbWVzc2FnZXM6Ci0g
ICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBjb25uID0zRCBhbXFwLkNv
bm5lY3Rpb24oIGhvc3Q9M0R0cmFucy5hcHAuY29uZmlnLmFtcXA9ClsgJ2hvc3QnIF0gKyAiOiIg
KyB0cmFucy5hcHAuY29uZmlnLmFtcXBbICdwb3J0JyBdLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1c2VyaWQ9M0R0cmFucy5hcHAuY29uZmlnLmFtcXA9Clsg
J3VzZXJpZCcgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFzc3dvcmQ9M0R0cmFucy5hcHAuY29uZmlnLmFtPQpxcFsgJ3Bhc3N3b3JkJyBdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsX2hvc3Q9M0R0cmFu
cy5hcHAuY29uZmk9CmcuYW1xcFsgJ3ZpcnR1YWxfaG9zdCcgXSkKLSAgICAgICAgICAgICAgICAg
ICAgY2hhbiA9M0QgY29ubi5jaGFubmVsKCkKLSAgICAgICAgICAgICAgICAgICAgbXNnID0zRCBh
bXFwLk1lc3NhZ2UoIHJtcV9tc2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGVudF90eXBlPTNEJ3RleHQvcGxhaW4nLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uX2hlYWRlcnM9M0R7ICdtc2dfdHlwZSc9Cjog
J2RhdGFfdHJhbnNmZXInIH0gKQotICAgICAgICAgICAgICAgICAgICBtc2cucHJvcGVydGllc1sg
ImRlbGl2ZXJ5X21vZGUiIF0gPTNEIDIKLSAgICAgICAgICAgICAgICAgICAgY2hhbi5iYXNpY19w
dWJsaXNoKCBtc2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhj
aGFuZ2U9M0R0cmFucy5hcHAuY29uZmlnLmFtcXBbID0KJ2V4Y2hhbmdlJyBdLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRpbmdfa2V5PTNEdHJhbnMuYXBwLmNv
bmZpZy5hbXE9CnBbICdyb3V0aW5nX2tleScgXSApCi0gICAgICAgICAgICAgICAgICAgIGNoYW4u
Y2xvc2UoKQotICAgICAgICAgICAgICAgICAgICBjb25uLmNsb3NlKCkKLSAgICAgICAgICAgICAg
ICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0zRCAi
RXJyb3Igc2VuZGluZyB0aGUgZGF0YSB0cmFuc2ZlciBtZXNzYWdlIHQ9Cm8gdGhlIEdhbGF4eSBB
TVFQIG1lc3NhZ2UgcXVldWU6PGJyLz4lcyIgJSBzdHIoZSkKLSAgICAgICAgICAgICAgICAgICAg
c3RhdHVzID0zRCAiZXJyb3IiCi0gICAgICAgICAgICBpZiBub3QgbWVzc2FnZToKLSAgICAgICAg
ICAgICAgICBtZXNzYWdlID0zRCAiJWkgZGF0YXNldHMgaGF2ZSBiZWVuIHF1ZXVlZCBmb3IgdHJh
bnNmZXIgZnJvPQptIHRoZSBleHRlcm5hbCBzZXJ2aWNlLiIgJSBsZW4oIHNhbXBsZV9kYXRhc2V0
cyApCi0gICAgICAgICAgICAgICAgc3RhdHVzID0zRCAiZG9uZSIKKyAgICAgICAgICAgIG1lc3Nh
Z2UgPTNEICJNZXNzYWdlIHF1ZXVlIHRyYW5zZmVyIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQsIHBs
PQplYXNlIHNldCBlbmFibGVfYmV0YV9qb2JfbWFuYWdlcnMgPTNEIFRydWUgaW4gZ2FsYXh5Lmlu
aSIKKyAgICAgICAgICAgIHN0YXR1cyA9M0QgImVycm9yIgogICAgICAgICByZXR1cm4gdHJhbnMu
cmVzcG9uc2Uuc2VuZF9yZWRpcmVjdCggd2ViLnVybF9mb3IoIGNvbnRyb2xsZXI9M0QncmU9CnF1
ZXN0c19hZG1pbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWN0aW9uPTNEJ21hbmFnZT0KX2RhdGFzZXRzJywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVfaWQ9
M0R0cmFuPQpzLnNlY3VyaXR5LmVuY29kZV9pZCggc2FtcGxlLmlkICksCgpkaWZmIC1yIGQ2MmYz
ZTUwYjU2N2ExNTdjMDk0NDQ3M2FkYmJjNDEwYzU1NTJkMWEgLXIgMzZjMDUyNjEzNDM0MTIzNzBm
OWU0NGY9CjRiZGQ0YjFlMTlhOTdhYTU1IGxpYi9nYWxheHkvd2ViYXBwcy90b29sX3NoZWQvY29u
dHJvbGxlcnMvcmVwb3NpdG9yeS5weQotLS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvdG9vbF9zaGVk
L2NvbnRyb2xsZXJzL3JlcG9zaXRvcnkucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL3Rvb2xf
c2hlZC9jb250cm9sbGVycy9yZXBvc2l0b3J5LnB5CkBAIC0xNDcwLDExICsxNDcwLDExIEBACiAg
ICAgICAgIHJldHVybiAnJwo9MjAKICAgICBAd2ViLmpzb24KLSAgICBkZWYgZ2V0X2ZpbGVfY29u
dGVudHMoIHNlbGYsIHRyYW5zLCBmaWxlX3BhdGggKToKKyAgICBkZWYgZ2V0X2ZpbGVfY29udGVu
dHMoIHNlbGYsIHRyYW5zLCBmaWxlX3BhdGgsIHJlcG9zaXRvcnlfaWQgKToKICAgICAgICAgIyBB
dm9pZCBjYWNoaW5nCiAgICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ1ByYWdtYSddID0z
RCAnbm8tY2FjaGUnCiAgICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbJ0V4cGlyZXMnXSA9
M0QgJzAnCi0gICAgICAgIHJldHVybiBzdWMuZ2V0X3JlcG9zaXRvcnlfZmlsZV9jb250ZW50cygg
ZmlsZV9wYXRoICkKKyAgICAgICAgcmV0dXJuIHN1Yy5nZXRfcmVwb3NpdG9yeV9maWxlX2NvbnRl
bnRzKCB0cmFucy5hcHAsIGZpbGVfcGF0aCwgcmVwPQpvc2l0b3J5X2lkICkKPTIwCiAgICAgQHdl
Yi5leHBvc2UKICAgICBkZWYgZ2V0X2Z1bmN0aW9uYWxfdGVzdF9yc3MoIHNlbGYsIHRyYW5zLCAq
Kmt3ZCApOgpAQCAtMTY4NCw2ICsxNjg0LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICBpbmNs
dWRlc190b29sX2RlcGVuZGVuY2llcz0zRGluY2x1ZGVzX3Rvb2xfZGVwZW5kZW5jaT0KZXMsCiAg
ICAgICAgICAgICAgICAgICAgICByZXBvX2luZm9fZGljdHM9M0RyZXBvX2luZm9fZGljdHMgKQo9
MjAKKyAgICBAd2ViLmV4cG9zZQorICAgIGRlZiBnZXRfcmVwb3NpdG9yeV90eXBlKCBzZWxmLCB0
cmFucywgKiprd2QgKToKKyAgICAgICAgIiIiR2l2ZW4gYSByZXBvc2l0b3J5IG5hbWUgYW5kIG93
bmVyLCByZXR1cm4gdGhlIHR5cGUuIiIiCisgICAgICAgIHJlcG9zaXRvcnlfbmFtZSA9M0Qga3dk
WyAnbmFtZScgXQorICAgICAgICByZXBvc2l0b3J5X293bmVyID0zRCBrd2RbICdvd25lcicgXQor
ICAgICAgICByZXBvc2l0b3J5ID0zRCBzdWMuZ2V0X3JlcG9zaXRvcnlfYnlfbmFtZV9hbmRfb3du
ZXIoIHRyYW5zLmFwcCwgcmU9CnBvc2l0b3J5X25hbWUsIHJlcG9zaXRvcnlfb3duZXIgKQorICAg
ICAgICByZXR1cm4gc3RyKCByZXBvc2l0b3J5LnR5cGUgKQorCiAgICAgQHdlYi5qc29uCiAgICAg
ZGVmIGdldF9yZXF1aXJlZF9yZXBvX2luZm9fZGljdCggc2VsZiwgdHJhbnMsIGVuY29kZWRfc3Ry
PTNETm9uZSApOgogICAgICAgICAiIiIKQEAgLTE3NTEsNiArMTc1OSwyMiBAQAogICAgICAgICAg
ICAgcmV0dXJuIGNvbnRlbnRzCiAgICAgICAgIHJldHVybiAnJwo9MjAKKyAgICBAd2ViLmpzb24K
KyAgICBkZWYgZ2V0X3Rvb2xfZGVwZW5kZW5jeV9kZWZpbml0aW9uX21ldGFkYXRhKCBzZWxmLCB0
cmFucywgKiprd2QgKToKKyAgICAgICAgIiIiCisgICAgICAgIEdpdmVuIGEgcmVwb3NpdG9yeSBu
YW1lIGFuZCBvd25lcm9mIGEgcmVwb3NpdG9yeSB3aG9zZSB0eXBlIGlzCisgICAgICAgIHRvb2xf
ZGVwZW5kZW5jeV9kZWZpbml0aW9uLCByZXR1cm4gdGhlIGN1cnJlbnQgbWV0YWRhdGEuCisgICAg
ICAgICIiIgorICAgICAgICByZXBvc2l0b3J5X25hbWUgPTNEIGt3ZFsgJ25hbWUnIF0KKyAgICAg
ICAgcmVwb3NpdG9yeV9vd25lciA9M0Qga3dkWyAnb3duZXInIF0KKyAgICAgICAgcmVwb3NpdG9y
eSA9M0Qgc3VjLmdldF9yZXBvc2l0b3J5X2J5X25hbWVfYW5kX293bmVyKCB0cmFucy5hcHAsIHJl
PQpwb3NpdG9yeV9uYW1lLCByZXBvc2l0b3J5X293bmVyICkKKyAgICAgICAgZW5jb2RlZF9pZCA9
M0QgdHJhbnMuYXBwLnNlY3VyaXR5LmVuY29kZV9pZCggcmVwb3NpdG9yeS5pZCApCisgICAgICAg
IHJlcG9zaXRvcnlfdGlwID0zRCByZXBvc2l0b3J5LnRpcCggdHJhbnMuYXBwICkKKyAgICAgICAg
cmVwb3NpdG9yeV9tZXRhZGF0YSA9M0Qgc3VjLmdldF9yZXBvc2l0b3J5X21ldGFkYXRhX2J5X2No
YW5nZXNldF9yPQpldmlzaW9uKCB0cmFucy5hcHAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0KICAgICAg
IGVuY29kZWRfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0KICAgICAgIHJlcG9zaXRvcnlfdGlwICkK
KyAgICAgICAgcmV0dXJuIHJlcG9zaXRvcnlfbWV0YWRhdGEubWV0YWRhdGEKKwogICAgIEB3ZWIu
ZXhwb3NlCiAgICAgZGVmIGdldF90b29sX3ZlcnNpb25zKCBzZWxmLCB0cmFucywgKiprd2QgKToK
ICAgICAgICAgIiIiCkBAIC0yNDE1LDExICsyNDM5LDExIEBACiAgICAgICAgIHJldHVybiAnJwo9
MjAKICAgICBAd2ViLmpzb24KLSAgICBkZWYgb3Blbl9mb2xkZXIoIHNlbGYsIHRyYW5zLCBmb2xk
ZXJfcGF0aCApOgorICAgIGRlZiBvcGVuX2ZvbGRlciggc2VsZiwgdHJhbnMsIGZvbGRlcl9wYXRo
LCByZXBvc2l0b3J5X2lkICk6CiAgICAgICAgICMgQXZvaWQgY2FjaGluZwogICAgICAgICB0cmFu
cy5yZXNwb25zZS5oZWFkZXJzWydQcmFnbWEnXSA9M0QgJ25vLWNhY2hlJwogICAgICAgICB0cmFu
cy5yZXNwb25zZS5oZWFkZXJzWydFeHBpcmVzJ10gPTNEICcwJwotICAgICAgICByZXR1cm4gc3Vj
Lm9wZW5fcmVwb3NpdG9yeV9maWxlc19mb2xkZXIoIGZvbGRlcl9wYXRoICkKKyAgICAgICAgcmV0
dXJuIHN1Yy5vcGVuX3JlcG9zaXRvcnlfZmlsZXNfZm9sZGVyKCB0cmFucy5hcHAsIGZvbGRlcl9w
YXRoLCByPQplcG9zaXRvcnlfaWQgKQo9MjAKICAgICBAd2ViLmV4cG9zZQogICAgIGRlZiBwcmV2
aWV3X3Rvb2xzX2luX2NoYW5nZXNldCggc2VsZiwgdHJhbnMsIHJlcG9zaXRvcnlfaWQsICoqa3dk
ICk6CgpkaWZmIC1yIGQ2MmYzZTUwYjU2N2ExNTdjMDk0NDQ3M2FkYmJjNDEwYzU1NTJkMWEgLXIg
MzZjMDUyNjEzNDM0MTIzNzBmOWU0NGY9CjRiZGQ0YjFlMTlhOTdhYTU1IGxpYi9nYWxheHkvd2Vi
YXBwcy90b29sX3NoZWQvZnJhbWV3b3JrL21pZGRsZXdhcmUvaGcucHkKLS0tIGEvbGliL2dhbGF4
eS93ZWJhcHBzL3Rvb2xfc2hlZC9mcmFtZXdvcmsvbWlkZGxld2FyZS9oZy5weQorKysgYi9saWIv
Z2FsYXh5L3dlYmFwcHMvdG9vbF9zaGVkL2ZyYW1ld29yay9taWRkbGV3YXJlL2hnLnB5CkBAIC0x
MCw3ICsxMCw3IEBACiBmcm9tIHBhc3RlLmh0dHBoZWFkZXJzIGltcG9ydCBBVVRIX1RZUEUKIGZy
b20gcGFzdGUuaHR0cGhlYWRlcnMgaW1wb3J0IFJFTU9URV9VU0VSCj0yMAotZnJvbSBnYWxheHku
dXRpbCBpbXBvcnQgYXNib29sCitmcm9tIGdhbGF4eS51dGlsIGltcG9ydCBhc2Jvb2wsIHNhZmVf
cmVscGF0aAogZnJvbSBnYWxheHkudXRpbC5oYXNoX3V0aWwgaW1wb3J0IG5ld19zZWN1cmVfaGFz
aAogZnJvbSB0b29sX3NoZWQudXRpbCBpbXBvcnQgaGdfdXRpbAogZnJvbSB0b29sX3NoZWQudXRp
bCBpbXBvcnQgY29tbWl0X3V0aWwKQEAgLTExNSw3ICsxMTUsMTEgQEAKICAgICAgICAgICAgICAg
ICAgICAgZmgud3JpdGUoIGNodW5rICkKICAgICAgICAgICAgICAgICBmaC5jbG9zZSgpCiAgICAg
ICAgICAgICAgICAgZmggPTNEIG9wZW4oIHRtcF9maWxlbmFtZSwgJ3JiJyApCi0gICAgICAgICAg
ICAgICAgY2hhbmdlc2V0X2dyb3VwcyA9M0QganNvbi5sb2FkcyggaGdfdXRpbC5idW5kbGVfdG9f
anNvbiggZj0KaCApICkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAg
IGNoYW5nZXNldF9ncm91cHMgPTNEIGpzb24ubG9hZHMoIGhnX3V0aWwuYnVuZGxlX3RvX2pzbz0K
biggZmggKSApCisgICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAg
ICAgICAgICAgICAgICBtc2cgPTNEICdZb3VyIHZlcnNpb24gb2YgTWVyY3VyaWFsIGlzIG5vdCBz
dXBwb3J0ZWQuIFA9CmxlYXNlIHVzZSBhIHZlcnNpb24gPCAzLjUnCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBzZWxmLl9fZGlzcGxheV9leGNlcHRpb25fcmVtb3RlbHkoIHN0YXJ0X3Jlc3Bv
bj0Kc2UsIG1zZyApCiAgICAgICAgICAgICAgICAgZmguY2xvc2UoKQogICAgICAgICAgICAgICAg
IHRyeToKICAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKCB0bXBfZmlsZW5hbWUgKQpAQCAt
MTI0LDYgKzEyOCwxOSBAQAogICAgICAgICAgICAgICAgIGlmIGNoYW5nZXNldF9ncm91cHM6CiAg
ICAgICAgICAgICAgICAgICAgICMgQ2hlY2sgdGhlIHJlcG9zaXRvcnkgdHlwZSB0byBtYWtlIHN1
cmUgaW5hcHByb3ByaWF0ZT0KIGZpbGVzIGFyZSBub3QgYmVpbmcgcHVzaGVkLgogICAgICAgICAg
ICAgICAgICAgICBpZiAnUEFUSF9JTkZPJyBpbiBlbnZpcm9uOgorICAgICAgICAgICAgICAgICAg
ICAgICAgIyBFbnN1cmUgdGhlcmUgYXJlIG5vIHN5bWxpbmtzIHdpdGggdGFyZ2V0cyBvdXRzaWQ9
CmUgdGhlIHJlcG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBlbnRyeSBpbiBjaGFuZ2Vz
ZXRfZ3JvdXBzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxlbiggZW50cnkgKSA9
M0Q9M0QgMjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGNoYW5n
ZV9saXN0ID0zRCBlbnRyeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qg
aXNpbnN0YW5jZShjaGFuZ2VfbGlzdCwgbGlzdCk6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFuZ2VfbGlzdCA9M0QgW2NoYW5nZV9saXN0XQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgY2hhbmdlIGluIGNoYW5nZV9saXN0OgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHBhdGNoIGluIGNoYW5nZVsnZGF0YSddOgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCA9M0QgcGF0Y2hbJ2Js
b2NrJ10uc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICggKCBwYXRjaFsnZW5kJ10gLSBwYXRjaFsnc3RhcnQ9CiddID0zRD0zRCAwICkgYW5kIG5vdCBz
YWZlX3JlbHBhdGgoIHRhcmdldCApICk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1zZyA9M0QgIkNoYW5nZXMgaW5jbHVkZSBhIHN5bT0KbGluayBvdXRzaWRl
IG9mIHRoZSByZXBvc2l0b3J5OiAlcyAtPiAlcyIgJSAoIGZpbGVuYW1lLCB0YXJnZXQgKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2cud2FybmluZyggbXNn
ICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNl
bGYuX19kaXNwbGF5X2V4Y2VwdGlvPQpuX3JlbW90ZWx5KCBzdGFydF9yZXNwb25zZSwgbXNnICkK
ICAgICAgICAgICAgICAgICAgICAgICAgICMgSW5zdGFudGlhdGUgYSBkYXRhYmFzZSBjb25uZWN0
aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICBlbmdpbmUgPTNEIHNxbGFsY2hlbXkuY3JlYXRl
X2VuZ2luZSggc2VsZi5kYl91cmwgKQogICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlv
biA9M0QgZW5naW5lLmNvbm5lY3QoKQoKZGlmZiAtciBkNjJmM2U1MGI1NjdhMTU3YzA5NDQ0NzNh
ZGJiYzQxMGM1NTUyZDFhIC1yIDM2YzA1MjYxMzQzNDEyMzcwZjllNDRmPQo0YmRkNGIxZTE5YTk3
YWE1NSBsaWIvZ2FsYXh5L3dvcmtmbG93L2V4dHJhY3QucHkKLS0tIGEvbGliL2dhbGF4eS93b3Jr
Zmxvdy9leHRyYWN0LnB5CisrKyBiL2xpYi9nYWxheHkvd29ya2Zsb3cvZXh0cmFjdC5weQpAQCAt
MTQsNyArMTQsOCBAQAogZnJvbSBnYWxheHkudG9vbHMgaW1wb3J0IFRvb2xPdXRwdXRDb2xsZWN0
aW9uUGFydAogZnJvbSBnYWxheHkudG9vbHMucGFyYW1ldGVycy5ncm91cGluZyBpbXBvcnQgKAog
ICAgIENvbmRpdGlvbmFsLAotICAgIFJlcGVhdAorICAgIFJlcGVhdCwKKyAgICBTZWN0aW9uCiAp
CiBmcm9tIC5zdGVwcyBpbXBvcnQgKAogICAgIGF0dGFjaF9vcmRlcmVkX3N0ZXBzLApAQCAtMzQw
LDEwICszNDEsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgay5zdGFydHN3aXRoKCBrZXkg
KToKICAgICAgICAgICAgICAgICAgICAgICAgIGRlbCByb290X3ZhbHVlc1trXQogICAgICAgICAg
ICAgZWxpZiBpc2luc3RhbmNlKCBpbnB1dCwgUmVwZWF0ICk6Ci0gICAgICAgICAgICAgICAgZ3Jv
dXBfdmFsdWVzID0zRCB2YWx1ZXNba2V5XQotICAgICAgICAgICAgICAgIGZvciBpLCByZXBfdmFs
dWVzIGluIGVudW1lcmF0ZSggZ3JvdXBfdmFsdWVzICk6Ci0gICAgICAgICAgICAgICAgICAgIHJl
cF9pbmRleCA9M0QgcmVwX3ZhbHVlc1snX19pbmRleF9fJ10KLSAgICAgICAgICAgICAgICAgICAg
Y2xlYW51cCggIiVzJXNfJWR8IiAlIChwcmVmaXgsIGtleSwgcmVwX2luZGV4ICksIGlucHV0PQou
aW5wdXRzLCBncm91cF92YWx1ZXNbaV0gKQorICAgICAgICAgICAgICAgIGlmIGtleSBpbiB2YWx1
ZXM6CisgICAgICAgICAgICAgICAgICAgIGdyb3VwX3ZhbHVlcyA9M0QgdmFsdWVzW2tleV0KKyAg
ICAgICAgICAgICAgICAgICAgZm9yIGksIHJlcF92YWx1ZXMgaW4gZW51bWVyYXRlKCBncm91cF92
YWx1ZXMgKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcF9pbmRleCA9M0QgcmVwX3ZhbHVl
c1snX19pbmRleF9fJ10KKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFudXAoICIlcyVzXyVk
fCIgJSAocHJlZml4LCBrZXksIHJlcF9pbmRleCApLCBpPQpucHV0LmlucHV0cywgZ3JvdXBfdmFs
dWVzW2ldICkKICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSggaW5wdXQsIENvbmRpdGlvbmFs
ICk6CiAgICAgICAgICAgICAgICAgIyBTY3J1YiBkeW5hbWljIHJlc291cmNlIHJlbGF0ZWQgcGFy
YW1ldGVycyBmcm9tIHdvcmtmbG93cywKICAgICAgICAgICAgICAgICAjIHRoZXkgY2F1c2UgcHJv
YmxlbXMgYW5kIHRoZSB3b3JrZmxvdyBwcm9iYWJseSBzaG91bGQgaW5jPQpsdWRlCkBAIC0zNTIs
OSArMzU0LDEzIEBACiAgICAgICAgICAgICAgICAgICAgIGlmIGlucHV0Lm5hbWUgaW4gdmFsdWVz
OgogICAgICAgICAgICAgICAgICAgICAgICAgZGVsIHZhbHVlc1tpbnB1dC5uYW1lXQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICBncm91cF92YWx1ZXMgPTNEIHZh
bHVlc1tpbnB1dC5uYW1lXQotICAgICAgICAgICAgICAgIGN1cnJlbnRfY2FzZSA9M0QgZ3JvdXBf
dmFsdWVzWydfX2N1cnJlbnRfY2FzZV9fJ10KLSAgICAgICAgICAgICAgICBjbGVhbnVwKCAiJXMl
c3wiICUgKCBwcmVmaXgsIGtleSApLCBpbnB1dC5jYXNlc1tjdXJyZW50X2NhPQpzZV0uaW5wdXRz
LCBncm91cF92YWx1ZXMgKQorICAgICAgICAgICAgICAgIGlmIGlucHV0Lm5hbWUgaW4gdmFsdWVz
OgorICAgICAgICAgICAgICAgICAgICBncm91cF92YWx1ZXMgPTNEIHZhbHVlc1tpbnB1dC5uYW1l
XQorICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2Nhc2UgPTNEIGdyb3VwX3ZhbHVlc1snX19j
dXJyZW50X2Nhc2VfXyddCisgICAgICAgICAgICAgICAgICAgIGNsZWFudXAoICIlcyVzfCIgJSAo
IHByZWZpeCwga2V5ICksIGlucHV0LmNhc2VzW2N1cnJlbj0KdF9jYXNlXS5pbnB1dHMsIGdyb3Vw
X3ZhbHVlcyApCisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoIGlucHV0LCBTZWN0aW9uICk6
CisgICAgICAgICAgICAgICAgaWYgaW5wdXQubmFtZSBpbiB2YWx1ZXM6CisgICAgICAgICAgICAg
ICAgICAgIGNsZWFudXAoICIlcyVzfCIgJSAoIHByZWZpeCwga2V5ICksIGlucHV0LmlucHV0cywg
dmFsdT0KZXNbaW5wdXQubmFtZV0gKQogICAgIGNsZWFudXAoICIiLCBpbnB1dHMsIHZhbHVlcyAp
CiAgICAgcmV0dXJuIGFzc29jaWF0aW9ucwo9MjAKCmRpZmYgLXIgZDYyZjNlNTBiNTY3YTE1N2Mw
OTQ0NDczYWRiYmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0Zj0KNGJkZDRi
MWUxOWE5N2FhNTUgbGliL3Rvb2xfc2hlZC9jYXBzdWxlL2NhcHN1bGVfbWFuYWdlci5weQotLS0g
YS9saWIvdG9vbF9zaGVkL2NhcHN1bGUvY2Fwc3VsZV9tYW5hZ2VyLnB5CisrKyBiL2xpYi90b29s
X3NoZWQvY2Fwc3VsZS9jYXBzdWxlX21hbmFnZXIucHkKQEAgLTE2LDYgKzE2LDcgQEAKIGZyb20g
Z2FsYXh5IGltcG9ydCB3ZWIKIGZyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IGFzYm9vbAogZnJvbSBn
YWxheHkudXRpbCBpbXBvcnQgQ0hVTktfU0laRQorZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgc2Fm
ZV9yZWxwYXRoCiBmcm9tIGdhbGF4eS51dGlsLm9kaWN0IGltcG9ydCBvZGljdAogZnJvbSB0b29s
X3NoZWQuZGVwZW5kZW5jaWVzLnJlcG9zaXRvcnkucmVsYXRpb25fYnVpbGRlciBpbXBvcnQgUmVs
YXRpb25CdWk9CmxkZXIKIGZyb20gdG9vbF9zaGVkLmRlcGVuZGVuY2llcyBpbXBvcnQgYXR0cmli
dXRlX2hhbmRsZXJzCkBAIC03MjEsMjkgKzcyMiwxNiBAQAogICAgICAgICBoZ191dGlsLmdldF9y
ZXBvX2Zvcl9yZXBvc2l0b3J5KCBzZWxmLmFwcCwgcmVwb3NpdG9yeT0zRE5vbmUsIHJlcG89Cl9w
YXRoPTNEcmVwb19kaXIsIGNyZWF0ZT0zREZhbHNlICkKICAgICAgICAgdW5kZXNpcmFibGVfZGly
c19yZW1vdmVkID0zRCAwCiAgICAgICAgIHVuZGVzaXJhYmxlX2ZpbGVzX3JlbW92ZWQgPTNEIDAK
LSAgICAgICAgb2ssIGVycm9yX21lc3NhZ2UgPTNEIGNvbW1pdF91dGlsLmNoZWNrX2FyY2hpdmUo
IHJlcG9zaXRvcnksIGFyY2hpPQp2ZSApCi0gICAgICAgIGlmIG9rOgorICAgICAgICBjaGVja19y
ZXN1bHRzID0zRCBjb21taXRfdXRpbC5jaGVja19hcmNoaXZlKCByZXBvc2l0b3J5LCBhcmNoaXZl
ICkKKyAgICAgICAgIyBXZSBmaWx0ZXIgb3V0IHVuZGVzaXJhYmxlIGZpbGVzIGJ1dCBmYWlsIG9u
IHVuZGVzcmlhYmxlIGRpcnMuIE5vdAorICAgICAgICAjIHN1cmUgd2h5LCBqdXN0IHRyeWluZyB0
byBtYWludGFpbiB0aGUgc2FtZSBiZWhhdmlvciBhcyBiZWZvcmUuIC09Cm5hdGUKKyAgICAgICAg
aWYgbm90IGNoZWNrX3Jlc3VsdHMuaW52YWxpZCBhbmQgbm90IGNoZWNrX3Jlc3VsdHMudW5kZXNp
cmFibGVfZGlyPQpzOgogICAgICAgICAgICAgZnVsbF9wYXRoID0zRCBvcy5wYXRoLmFic3BhdGgo
IHJlcG9fZGlyICkKLSAgICAgICAgICAgIGZpbGVuYW1lc19pbl9hcmNoaXZlID0zRCBbXQotICAg
ICAgICAgICAgZm9yIHRhcmluZm9fb2JqIGluIGFyY2hpdmUuZ2V0bWVtYmVycygpOgotICAgICAg
ICAgICAgICAgICMgQ2hlY2sgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGluIHRoZSBhcmNoaXZlLgot
ICAgICAgICAgICAgICAgIG9rID0zRCBvcy5wYXRoLmJhc2VuYW1lKCB0YXJpbmZvX29iai5uYW1l
ICkgbm90IGluIGNvbW1pdF89CnV0aWwuVU5ERVNJUkFCTEVfRklMRVMKLSAgICAgICAgICAgICAg
ICBpZiBvazoKLSAgICAgICAgICAgICAgICAgICAgZm9yIGZpbGVfcGF0aF9pdGVtIGluIHRhcmlu
Zm9fb2JqLm5hbWUuc3BsaXQoICcvJyApOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmls
ZV9wYXRoX2l0ZW0gaW4gY29tbWl0X3V0aWwuVU5ERVNJUkFCTEVfRElSUzoKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bmRlc2lyYWJsZV9kaXJzX3JlbW92ZWQgKz0zRCAxCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXJyb3JfbWVzc2FnZSA9M0QgJ0ltcG9ydCBmYWlsZWQ6IGlu
dmFsaWQgZmlsZT0KIHBhdGggPGI+JXM8L2I+IGluIGFyY2hpdmUgPGI+JXM8L2I+JyAlIFwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBzdHIoIGZpbGVfcGF0aF9pdGVtICksIHN0
ciggYXJjaGl2ZV9maWxlPQpfbmFtZSApICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRzX2RpY3RbICdvaycgXSA9M0QgRmFsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHRzX2RpY3RbICdlcnJvcl9tZXNzYWdlJyBdICs9M0QgZXJyb3JfbWVzPQpzYWdlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHNfZGljdAotICAgICAgICAg
ICAgICAgICAgICBmaWxlbmFtZXNfaW5fYXJjaGl2ZS5hcHBlbmQoIHRhcmluZm9fb2JqLm5hbWUg
KQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHVuZGVzaXJhYmxl
X2ZpbGVzX3JlbW92ZWQgKz0zRCAxCiAgICAgICAgICAgICAjIEV4dHJhY3QgdGhlIHVwbG9hZGVk
IGFyY2hpdmUgdG8gdGhlIHJlcG9zaXRvcnkgcm9vdC4KLSAgICAgICAgICAgIGFyY2hpdmUuZXh0
cmFjdGFsbCggcGF0aD0zRGZ1bGxfcGF0aCApCisgICAgICAgICAgICBhcmNoaXZlLmV4dHJhY3Rh
bGwoIHBhdGg9M0RmdWxsX3BhdGgsIG1lbWJlcnM9M0RjaGVja19yZXN1bHRzLj0KdmFsaWQgKQog
ICAgICAgICAgICAgYXJjaGl2ZS5jbG9zZSgpCi0gICAgICAgICAgICBmb3IgZmlsZW5hbWUgaW4g
ZmlsZW5hbWVzX2luX2FyY2hpdmU6CisgICAgICAgICAgICBmb3IgdGFyX21lbWJlciBpbiBjaGVj
a19yZXN1bHRzLnZhbGlkOgorICAgICAgICAgICAgICAgIGZpbGVuYW1lID0zRCB0YXJfbWVtYmVy
Lm5hbWUKICAgICAgICAgICAgICAgICB1cGxvYWRlZF9maWxlX25hbWUgPTNEIG9zLnBhdGguam9p
biggZnVsbF9wYXRoLCBmaWxlbmFtZSApCiAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5zcGxp
dCggdXBsb2FkZWRfZmlsZV9uYW1lIClbIC0xIF0gPTNEPTNEIHJ0X3V0aT0KbC5SRVBPU0lUT1JZ
X0RFUEVOREVOQ1lfREVGSU5JVElPTl9GSUxFTkFNRToKICAgICAgICAgICAgICAgICAgICAgIyBJ
bnNwZWN0IHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSB0byBzZWUgaWYgdG9vbHNoZWQgPQpvciBj
aGFuZ2VzZXRfcmV2aXNpb24gYXR0cmlidXRlcwpAQCAtNzcwLDYgKzc1OCw5IEBACiAgICAgICAg
ICAgICBuZXdfcmVwb19hbGVydCA9M0QgVHJ1ZQogICAgICAgICAgICAgIyBTaW5jZSB0aGUgcmVw
b3NpdG9yeSBpcyBuZXcsIHRoZSBmb2xsb3dpbmcgbXVzdCBiZSBGYWxzZS4KICAgICAgICAgICAg
IHJlbW92ZV9yZXBvX2ZpbGVzX25vdF9pbl90YXIgPTNEIEZhbHNlCisgICAgICAgICAgICBmaWxl
bmFtZXNfaW5fYXJjaGl2ZSA9M0QgWyBtZW1iZXIubmFtZSBmb3IgbWVtYmVyIGluIGNoZWNrX3Jl
cz0KdWx0cy52YWxpZCBdCisgICAgICAgICAgICB1bmRlc2lyYWJsZV9maWxlc19yZW1vdmVkID0z
RCBsZW4oIGNoZWNrX3Jlc3VsdHMudW5kZXNpcmFibGVfZj0KaWxlcyApCisgICAgICAgICAgICB1
bmRlc2lyYWJsZV9kaXJzX3JlbW92ZWQgPTNEIDAKICAgICAgICAgICAgIG9rLCBlcnJvcl9tZXNz
YWdlLCBmaWxlc190b19yZW1vdmUsIGNvbnRlbnRfYWxlcnRfc3RyLCB1bmRlc2lyPQphYmxlX2Rp
cnNfcmVtb3ZlZCwgdW5kZXNpcmFibGVfZmlsZXNfcmVtb3ZlZCA9M0QgXAogICAgICAgICAgICAg
ICAgIGNvbW1pdF91dGlsLmhhbmRsZV9kaXJlY3RvcnlfY2hhbmdlcyggc2VsZi5hcHAsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhv
c3QsCkBAIC04MDAsNyArNzkxLDEzIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBhcmNo
aXZlLmNsb3NlKCkKICAgICAgICAgICAgIHJlc3VsdHNfZGljdFsgJ29rJyBdID0zRCBGYWxzZQot
ICAgICAgICAgICAgcmVzdWx0c19kaWN0WyAnZXJyb3JfbWVzc2FnZScgXSArPTNEIGVycm9yX21l
c3NhZ2UKKyAgICAgICAgICAgIHJlc3VsdHNfZGljdFsgJ2Vycm9yX21lc3NhZ2UnIF0gKz0zRCAn
Q2Fwc3VsZSBlcnJvcnMgd2VyZSBmb3VuPQpkOiAnCisgICAgICAgICAgICBpZiBjaGVja19yZXN1
bHRzLmludmFsaWQ6CisgICAgICAgICAgICAgICAgcmVzdWx0c19kaWN0WyAnZXJyb3JfbWVzc2Fn
ZScgXSArPTNEICclcyBJbnZhbGlkIGZpbGVzIHdlcj0KZTogJXMuJyAlICgKKyAgICAgICAgICAg
ICAgICAgICAgJyAnLmpvaW4oIGNoZWNrX3Jlc3VsdHMuZXJyb3JzICksICcsICcuam9pbiggY2hl
Y2tfcmVzPQp1bHRzLmludmFsaWQgKSApCisgICAgICAgICAgICBpZiBjaGVja19yZXN1bHRzLnVu
ZGVzaXJhYmxlX2RpcnM6CisgICAgICAgICAgICAgICAgcmVzdWx0c19kaWN0WyAnZXJyb3JfbWVz
c2FnZScgXSArPTNEICcgVW5kZXNpcmFibGUgZGlyZWN0bz0KcmllcyB3ZXJlOiAlcy4nICUgKAor
ICAgICAgICAgICAgICAgICAgICAnLCAnLmpvaW4oIGNoZWNrX3Jlc3VsdHMudW5kZXNpcmFibGVf
ZGlycyApICkKICAgICAgICAgcmV0dXJuIHJlc3VsdHNfZGljdAo9MjAKICAgICBkZWYgdXBsb2Fk
X2NhcHN1bGUoIHNlbGYsICoqa3dkICk6CkBAIC04NTMsNiArODUwLDEyIEBACiAgICAgICAgICAg
ICAgICAgcmV0dXJuX2RpY3RbICdzdGF0dXMnIF0gPTNEICdlcnJvcicKICAgICAgICAgICAgICAg
ICB1cGxvYWRlZF9maWxlLmNsb3NlKCkKICAgICAgICAgICAgICAgICByZXR1cm4gcmV0dXJuX2Rp
Y3QKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLnZhbGlkYXRlX2FyY2hpdmVfcGF0aHMoIHRhcl9h
cmNoaXZlICk6CisgICAgICAgICAgICAgICAgcmV0dXJuX2RpY3RbICdzdGF0dXMnIF0gPTNEICdl
cnJvcicKKyAgICAgICAgICAgICAgICByZXR1cm5fZGljdFsgJ21lc3NhZ2UnIF0gPTNEICggJ1Ro
aXMgY2Fwc3VsZSBjb250YWlucyBhbiBpPQpudmFsaWQgbWVtYmVyIHR5cGUgJworICAgICAgICAg
ICAgICAgICAgICAnb3IgYSBmaWxlIG91dHNpZGUgdGhlIGFyY2hpdmUgcGF0aC4nICkKKyAgICAg
ICAgICAgICAgICB1cGxvYWRlZF9maWxlLmNsb3NlKCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
cmV0dXJuX2RpY3QKICAgICAgICAgICAgIHJldHVybl9kaWN0WyAndGFyX2FyY2hpdmUnIF0gPTNE
IHRhcl9hcmNoaXZlCiAgICAgICAgICAgICByZXR1cm5fZGljdFsgJ2NhcHN1bGVfZmlsZV9uYW1l
JyBdID0zRCB1cGxvYWRlZF9maWxlX2ZpbGVuYW1lCiAgICAgICAgICAgICB1cGxvYWRlZF9maWxl
LmNsb3NlKCkKQEAgLTg2Miw2ICs4NjUsMTggQEAKICAgICAgICAgICAgIHJldHVybiByZXR1cm5f
ZGljdAogICAgICAgICByZXR1cm4gcmV0dXJuX2RpY3QKPTIwCisgICAgZGVmIHZhbGlkYXRlX2Fy
Y2hpdmVfcGF0aHMoIHNlbGYsIHRhcl9hcmNoaXZlICk6CisgICAgICAgICcnJworICAgICAgICBJ
bnNwZWN0IHRoZSBhcmNoaXZlIGNvbnRlbnRzIHRvIGVuc3VyZSB0aGF0IHRoZXJlIGFyZSBubyBy
aXNreSBzeW09CmxpbmtzLgorICAgICAgICBSZXR1cm5zIFRydWUgaWYgYSBzdXNwaWNpb3VzIHBh
dGggaXMgZm91bmQuCisgICAgICAgICcnJworICAgICAgICBmb3IgbWVtYmVyIGluIHRhcl9hcmNo
aXZlLmdldG1lbWJlcnMoKToKKyAgICAgICAgICAgIGlmIG5vdCAoIG1lbWJlci5pc2RpcigpIG9y
IG1lbWJlci5pc2ZpbGUoKSBvciBtZW1iZXIuaXNsbmsoKSApOgorICAgICAgICAgICAgICAgIHJl
dHVybiBGYWxzZQorICAgICAgICAgICAgZWxpZiBub3Qgc2FmZV9yZWxwYXRoKCBtZW1iZXIubmFt
ZSApOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQor
CiAgICAgZGVmIHZhbGlkYXRlX2NhcHN1bGUoIHNlbGYsICoqa3dkICk6CiAgICAgICAgICIiIgog
ICAgICAgICBJbnNwZWN0IHRoZSB1cGxvYWRlZCBjYXBzdWxlJ3MgbWFuaWZlc3QgYW5kIGl0cyBj
b250YWluZWQgZmlsZXMgdG89CiBlbnN1cmUgaXQgaXMgYSB2YWxpZAoKZGlmZiAtciBkNjJmM2U1
MGI1NjdhMTU3YzA5NDQ0NzNhZGJiYzQxMGM1NTUyZDFhIC1yIDM2YzA1MjYxMzQzNDEyMzcwZjll
NDRmPQo0YmRkNGIxZTE5YTk3YWE1NSBsaWIvdG9vbF9zaGVkL2dhbGF4eV9pbnN0YWxsL3JlcG9z
aXRvcnlfZGVwZW5kZW5jaWVzL3JlcG89CnNpdG9yeV9kZXBlbmRlbmN5X21hbmFnZXIucHkKLS0t
IGEvbGliL3Rvb2xfc2hlZC9nYWxheHlfaW5zdGFsbC9yZXBvc2l0b3J5X2RlcGVuZGVuY2llcy9y
ZXBvc2l0b3J5X2RlcGVuPQpkZW5jeV9tYW5hZ2VyLnB5CisrKyBiL2xpYi90b29sX3NoZWQvZ2Fs
YXh5X2luc3RhbGwvcmVwb3NpdG9yeV9kZXBlbmRlbmNpZXMvcmVwb3NpdG9yeV9kZXBlbj0KZGVu
Y3lfbWFuYWdlci5weQpAQCAtNDE0LDYgKzQxNCwyMyBAQAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWxsX3JlcG9faW5mb19kaWN0c19rZXlzID0zRCBbIGQua2V5cyg9Cilb
IDAgXSBmb3IgZCBpbiBhbGxfcmVwb19pbmZvX2RpY3RzIF0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIHJlcXVpcmVkX3JlcG9faW5mb19kaWN0X2tleSBub3QgaW4gPQph
bGxfcmVwb19pbmZvX2RpY3RzX2tleXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYWxsX3JlcG9faW5mb19kaWN0cy5hcHBlbmQoIHJlcXVpcj0KZWRfcmVwb19pbmZv
X2RpY3QgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlcXVpcmVkX3JlcG9faW5mb19k
aWN0X2tleSBjb3JyPQplc3BvbmRzIHRvIHRoZSByZXBvIG5hbWUuCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIyBBIHNpbmdsZSBpbnN0YWxsIHRyYW5zYWN0aW9uIG1p
Zz0KaHQgcmVxdWlyZSB0aGUgaW5zdGFsbGF0aW9uIG9mIDIgb3IgbW9yZSByZXBvcworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aCB0aGUgc2FtZSByZXBvIG5h
bWUgYnV0IGRpZmY9CmVyZW50IG93bmVycyBvciB2ZXJzaW9ucy4KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjIFRoZXJlZm9yZSwgaWYgcmVxdWlyZWRfcmVwb19pbmZv
PQpfZGljdF9rZXkgaXMgYWxyZWFkeSBpbiBhbGxfcmVwb19pbmZvX2RpY3RzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgdGhhdCB0aGUgdG9vbCBpZCBp
cyBhbHJlYWQ9CnkgcHJlc2VudC4gSWYgaXQgaXMgbm90LCB3ZSBhcmUgZGVhbGluZyB3aXRoIHRo
ZSBzYW1lIHJlcG8gbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjIGJ1dCBhIGRpZmZlcmVudCBvd25lci9jaGFuZ2VzZXQgPQpyZXZpc2lvbiBvciB2ZXJzaW9u
IGFuZCB3ZSBhZGQgdGhlIHJlcG8gdG8gdGhlIGxpc3Qgb2YgcmVwb3MgdG8gYmUgaW5zdGFsbGU9
CmQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbF9pZCA9M0Qg
cmVxdWlyZWRfcmVwb19pbmZvX2RpYz0KdFsgcmVxdWlyZWRfcmVwb19pbmZvX2RpY3Rfa2V5IF1b
IDEgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX3ByZXNlbnQg
PTNEIEZhbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHJl
cG9faW5mb19kaWN0IGluIGFsbF9yZXBvX2luZj0Kb19kaWN0czoKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGssIHYgaW4gcmVwb19pbmZvX2RpY3QuaXRl
PQptcygpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgcmVxdWlyZWRfcmVwb19pbmZvX2RpY3Q9Cl9rZXkgPTNEPTNEIGs6CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdG9vbF9pZCA9M0Q9M0Qg
dlsxXToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaXNfcHJlc2VudCA9M0QgVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIG5vdCBpc19wcmVzZW50OgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhbGxfcmVwb19pbmZvX2RpY3RzLmFwcGVuZCggcmU9CnF1
aXJlZF9yZXBvX2luZm9fZGljdCApCiAgICAgICAgICAgICAgICAgICAgICAgICBhbGxfcmVxdWly
ZWRfcmVwb19pbmZvX2RpY3RbICdhbGxfcmVwb19pbmZvX2RpY3RzJz0KIF0gPTNEIGFsbF9yZXBv
X2luZm9fZGljdHMKICAgICAgICAgcmV0dXJuIGFsbF9yZXF1aXJlZF9yZXBvX2luZm9fZGljdAo9
MjAKCmRpZmYgLXIgZDYyZjNlNTBiNTY3YTE1N2MwOTQ0NDczYWRiYmM0MTBjNTU1MmQxYSAtciAz
NmMwNTI2MTM0MzQxMjM3MGY5ZTQ0Zj0KNGJkZDRiMWUxOWE5N2FhNTUgbGliL3Rvb2xfc2hlZC91
dGlsL2NvbW1pdF91dGlsLnB5Ci0tLSBhL2xpYi90b29sX3NoZWQvdXRpbC9jb21taXRfdXRpbC5w
eQorKysgYi9saWIvdG9vbF9zaGVkL3V0aWwvY29tbWl0X3V0aWwucHkKQEAgLTUsNiArNSw3IEBA
CiBpbXBvcnQgb3MKIGltcG9ydCBzaHV0aWwKIGltcG9ydCB0ZW1wZmlsZQorZnJvbSBjb2xsZWN0
aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQo9MjAKIGZyb20gZ2FsYXh5IGltcG9ydCBlZ2dzCiBlZ2dz
LnJlcXVpcmUoJ1NRTEFsY2hlbXknKQpAQCAtMTIsNiArMTMsNyBAQAo9MjAKIGltcG9ydCB0b29s
X3NoZWQucmVwb3NpdG9yeV90eXBlcy51dGlsIGFzIHJ0X3V0aWwKIGZyb20gZ2FsYXh5LmRhdGF0
eXBlcyBpbXBvcnQgY2hlY2tlcnMKK2Zyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IHNhZmVfcmVscGF0
aAogZnJvbSB0b29sX3NoZWQudG9vbHMgaW1wb3J0IGRhdGFfdGFibGVfbWFuYWdlcgogZnJvbSB0
b29sX3NoZWQudXRpbCBpbXBvcnQgYmFzaWNfdXRpbCwgaGdfdXRpbCwgc2hlZF91dGlsX2NvbW1v
biBhcyBzdWMKPTIwCkBAIC0yMiwzMCArMjQsNDQgQEAKPTIwCj0yMAogZGVmIGNoZWNrX2FyY2hp
dmUoIHJlcG9zaXRvcnksIGFyY2hpdmUgKToKKyAgICB2YWxpZCA9M0QgW10KKyAgICBpbnZhbGlk
ID0zRCBbXQorICAgIGVycm9ycyA9M0QgW10KKyAgICB1bmRlc2lyYWJsZV9maWxlcyA9M0QgW10K
KyAgICB1bmRlc2lyYWJsZV9kaXJzID0zRCBbXQogICAgIGZvciBtZW1iZXIgaW4gYXJjaGl2ZS5n
ZXRtZW1iZXJzKCk6CiAgICAgICAgICMgQWxsb3cgcmVndWxhciBmaWxlcyBhbmQgZGlyZWN0b3Jp
ZXMgb25seQogICAgICAgICBpZiBub3QgKCBtZW1iZXIuaXNkaXIoKSBvciBtZW1iZXIuaXNmaWxl
KCkgb3IgbWVtYmVyLmlzbG5rKCkgKToKLSAgICAgICAgICAgIG1lc3NhZ2UgPTNEICJVcGxvYWRl
ZCBhcmNoaXZlcyBjYW4gb25seSBpbmNsdWRlIHJlZ3VsYXIgZGlyZWN0PQpvcmllcyBhbmQgZmls
ZXMgKG5vIHN5bWJvbGljIGxpbmtzLCBkZXZpY2VzLCBldGMpLiAgIgotICAgICAgICAgICAgbWVz
c2FnZSArPTNEICJUaGUgcHJvYmxlbWF0aWMgbWVtYmVyIGluIHRoaXMgYXJjaGl2ZSBpcyAlcywi
ICU9CiBzdHIoIG1lbWJlci5uYW1lICkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZSwgbWVzc2Fn
ZQotICAgICAgICBmb3IgaXRlbSBpbiBbICcuaGcnLCAnLi4nLCAnLycgXToKLSAgICAgICAgICAg
IGlmIG1lbWJlci5uYW1lLnN0YXJ0c3dpdGgoIGl0ZW0gKToKLSAgICAgICAgICAgICAgICBtZXNz
YWdlID0zRCAiVXBsb2FkZWQgYXJjaGl2ZXMgY2Fubm90IGNvbnRhaW4gLmhnIGRpcmVjdG9yPQpp
ZXMsIGFic29sdXRlIGZpbGVuYW1lcyBzdGFydGluZyB3aXRoICcvJywgb3IgZmlsZW5hbWVzIHdp
dGggdHdvIGRvdHMgJy4uJy49CiAgIgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0zRCAiVGhl
IHByb2JsZW1hdGljIG1lbWJlciBpbiB0aGlzIGFyY2hpdmUgaXMgJXM9Ci4iICUgc3RyKCBtZW1i
ZXIubmFtZSApCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBtZXNzYWdlCi0gICAgICAg
IGlmIG1lbWJlci5uYW1lIGluIFsgJ2hncmMnIF06Ci0gICAgICAgICAgICBtZXNzYWdlID0zRCAi
VXBsb2FkZWQgYXJjaGl2ZXMgY2Fubm90IGNvbnRhaW4gaGdyYyBmaWxlcy4gICIKLSAgICAgICAg
ICAgIG1lc3NhZ2UgKz0zRCAiVGhlIHByb2JsZW1hdGljIG1lbWJlciBpbiB0aGlzIGFyY2hpdmUg
aXMgJXMuIiAlPQogc3RyKCBtZW1iZXIubmFtZSApCi0gICAgICAgICAgICByZXR1cm4gRmFsc2Us
IG1lc3NhZ2UKKyAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoICJVcGxvYWRlZCBhcmNoaXZlcyBj
YW4gb25seSBpbmNsdWRlIHJlZ3VsYXIgZGlyPQplY3RvcmllcyBhbmQgZmlsZXMgKG5vIHN5bWJv
bGljIGxpbmtzLCBkZXZpY2VzLCBldGMpLiIgKQorICAgICAgICAgICAgaW52YWxpZC5hcHBlbmQo
IG1lbWJlciApCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBub3Qgc2FmZV9yZWxw
YXRoKCBtZW1iZXIubmFtZSApOgorICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCggIlVwbG9hZGVk
IGFyY2hpdmVzIGNhbm5vdCBjb250YWluIGZpbGVzIHRoYXQgd289CnVsZCBleHRyYWN0IG91dHNp
ZGUgb2YgdGhlIGFyY2hpdmUuIiApCisgICAgICAgICAgICBpbnZhbGlkLmFwcGVuZCggbWVtYmVy
ICkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUoIG1l
bWJlci5uYW1lICkgaW4gVU5ERVNJUkFCTEVfRklMRVM6CisgICAgICAgICAgICB1bmRlc2lyYWJs
ZV9maWxlcy5hcHBlbmQoIG1lbWJlciApCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBo
ZWFkID0zRCB0YWlsID0zRCBtZW1iZXIubmFtZQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3
aGlsZSB0YWlsOgorICAgICAgICAgICAgICAgIGhlYWQsIHRhaWwgPTNEIG9zLnBhdGguc3BsaXQo
aGVhZCkKKyAgICAgICAgICAgICAgICBpZiB0YWlsIGluIFVOREVTSVJBQkxFX0RJUlM6CisgICAg
ICAgICAgICAgICAgICAgIHVuZGVzaXJhYmxlX2RpcnMuYXBwZW5kKCBtZW1iZXIgKQorICAgICAg
ICAgICAgICAgICAgICBhc3NlcnQgRmFsc2UKKyAgICAgICAgZXhjZXB0IEFzc2VydGlvbkVycm9y
OgorICAgICAgICAgICAgY29udGludWUKICAgICAgICAgaWYgcmVwb3NpdG9yeS50eXBlID0zRD0z
RCBydF91dGlsLlJFUE9TSVRPUllfU1VJVEVfREVGSU5JVElPTiBhbmQgPQptZW1iZXIubmFtZSAh
PTNEIHJ0X3V0aWwuUkVQT1NJVE9SWV9ERVBFTkRFTkNZX0RFRklOSVRJT05fRklMRU5BTUU6Ci0g
ICAgICAgICAgICBtZXNzYWdlID0zRCAnUmVwb3NpdG9yaWVzIG9mIHR5cGUgPGI+UmVwb3NpdG9y
eSBzdWl0ZSBkZWZpbml0aT0Kb248L2I+IGNhbiBjb250YWluIG9ubHkgYSBzaW5nbGUgZmlsZSBu
YW1lZCA8Yj5yZXBvc2l0b3J5X2RlcGVuZGVuY2llcy54bWw8PQovYj4uJwotICAgICAgICAgICAg
bWVzc2FnZSArPTNEICdUaGlzIGFyY2hpdmUgY29udGFpbnMgYSBtZW1iZXIgbmFtZWQgJXMuJyAl
IHN0cig9CiBtZW1iZXIubmFtZSApCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UsIG1lc3NhZ2UK
KyAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoICdSZXBvc2l0b3JpZXMgb2YgdHlwZSA8Yj5SZXBv
c2l0b3J5IHN1aXRlIGRlZmluPQppdGlvbjwvYj4gY2FuIGNvbnRhaW4gb25seSBhIHNpbmdsZSBm
aWxlIG5hbWVkIDxiPnJlcG9zaXRvcnlfZGVwZW5kZW5jaWVzLng9Cm1sPC9iPi4nICkKKyAgICAg
ICAgICAgIGludmFsaWQuYXBwZW5kKCBtZW1iZXIgKQorICAgICAgICAgICAgY29udGludWUKICAg
ICAgICAgaWYgcmVwb3NpdG9yeS50eXBlID0zRD0zRCBydF91dGlsLlRPT0xfREVQRU5ERU5DWV9E
RUZJTklUSU9OIGFuZCBtPQplbWJlci5uYW1lICE9M0QgcnRfdXRpbC5UT09MX0RFUEVOREVOQ1lf
REVGSU5JVElPTl9GSUxFTkFNRToKLSAgICAgICAgICAgIG1lc3NhZ2UgPTNEICdSZXBvc2l0b3Jp
ZXMgb2YgdHlwZSA8Yj5Ub29sIGRlcGVuZGVuY3kgZGVmaW5pdGlvPQpuPC9iPiBjYW4gY29udGFp
biBvbmx5IGEgc2luZ2xlIGZpbGUgbmFtZWQgPGI+dG9vbF9kZXBlbmRlbmNpZXMueG1sPC9iPi4n
Ci0gICAgICAgICAgICBtZXNzYWdlICs9M0QgJ1RoaXMgYXJjaGl2ZSBjb250YWlucyBhIG1lbWJl
ciBuYW1lZCAlcy4nICUgc3RyKD0KIG1lbWJlci5uYW1lICkKLSAgICAgICAgICAgIHJldHVybiBG
YWxzZSwgbWVzc2FnZQotICAgIHJldHVybiBUcnVlLCAnJworICAgICAgICAgICAgZXJyb3JzLmFw
cGVuZCggJ1JlcG9zaXRvcmllcyBvZiB0eXBlIDxiPlRvb2wgZGVwZW5kZW5jeSBkZWZpbmk9CnRp
b248L2I+IGNhbiBjb250YWluIG9ubHkgYSBzaW5nbGUgZmlsZSBuYW1lZCA8Yj50b29sX2RlcGVu
ZGVuY2llcy54bWw8L2I+Lj0KJyApCisgICAgICAgICAgICBpbnZhbGlkLmFwcGVuZCggbWVtYmVy
ICkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHZhbGlkLmFwcGVuZCggbWVtYmVyICkK
KyAgICBBcmNoaXZlQ2hlY2tSZXN1bHRzID0zRCBuYW1lZHR1cGxlKCAnQXJjaGl2ZUNoZWNrUmVz
dWx0cycsIFsgJ3ZhbGlkJywgPQonaW52YWxpZCcsICd1bmRlc2lyYWJsZV9maWxlcycsICd1bmRl
c2lyYWJsZV9kaXJzJywgJ2Vycm9ycycgXSApCisgICAgcmV0dXJuIEFyY2hpdmVDaGVja1Jlc3Vs
dHMoIHZhbGlkLCBpbnZhbGlkLCB1bmRlc2lyYWJsZV9maWxlcywgdW5kZXNpcj0KYWJsZV9kaXJz
LCBlcnJvcnMgKQo9MjAKPTIwCiBkZWYgY2hlY2tfZmlsZV9jb250ZW50c19mb3JfZW1haWxfYWxl
cnRzKCBhcHAgKToKCmRpZmYgLXIgZDYyZjNlNTBiNTY3YTE1N2MwOTQ0NDczYWRiYmM0MTBjNTU1
MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0Zj0KNGJkZDRiMWUxOWE5N2FhNTUgbGliL3Rv
b2xfc2hlZC91dGlsL2VuY29kaW5nX3V0aWwucHkKLS0tIGEvbGliL3Rvb2xfc2hlZC91dGlsL2Vu
Y29kaW5nX3V0aWwucHkKKysrIGIvbGliL3Rvb2xfc2hlZC91dGlsL2VuY29kaW5nX3V0aWwucHkK
QEAgLTMsNyArMyw2IEBACiBpbXBvcnQgbG9nZ2luZwo9MjAKIGZyb20gZ2FsYXh5LnV0aWwuaGFz
aF91dGlsIGltcG9ydCBobWFjX25ldwotZnJvbSBnYWxheHkudXRpbC5qc29uIGltcG9ydCBqc29u
X2ZpeAo9MjAKIGxvZyA9M0QgbG9nZ2luZy5nZXRMb2dnZXIoIF9fbmFtZV9fICkKPTIwCkBAIC0y
MSwxMyArMjAsOCBAQAogICAgIHZhbHVlcyA9M0QgTm9uZQogICAgIHRyeToKICAgICAgICAgdmFs
dWVzID0zRCBqc29uLmxvYWRzKCB2YWx1ZSApCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKKyAg
ICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICBwYXNzCi0gICAgaWYgdmFsdWVzIGlzIG5vdCBO
b25lOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4ganNvbl9maXgoIHZhbHVlcyAp
Ci0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBsb2cuZGVidWcoICJG
aXhpbmcgZGVjb2RlZCBqc29uIHZhbHVlcyAnJXMnIGZyb20gdG9vbCBzaGVkIHRocj0KZXcgZXhj
ZXB0aW9uOiAlcyIgJSAoIHN0ciggdmFsdWVzICksIHN0ciggZSApICkgKQogICAgIGlmIHZhbHVl
cyBpcyBOb25lOgogICAgICAgICB2YWx1ZXMgPTNEIHZhbHVlCiAgICAgcmV0dXJuIHZhbHVlcwoK
ZGlmZiAtciBkNjJmM2U1MGI1NjdhMTU3YzA5NDQ0NzNhZGJiYzQxMGM1NTUyZDFhIC1yIDM2YzA1
MjYxMzQzNDEyMzcwZjllNDRmPQo0YmRkNGIxZTE5YTk3YWE1NSBsaWIvdG9vbF9zaGVkL3V0aWwv
cmVwb3NpdG9yeV9jb250ZW50X3V0aWwucHkKLS0tIGEvbGliL3Rvb2xfc2hlZC91dGlsL3JlcG9z
aXRvcnlfY29udGVudF91dGlsLnB5CisrKyBiL2xpYi90b29sX3NoZWQvdXRpbC9yZXBvc2l0b3J5
X2NvbnRlbnRfdXRpbC5weQpAQCAtMTUsMzEgKzE1LDIzIEBACiAgICAgaGdfdXRpbC5nZXRfcmVw
b19mb3JfcmVwb3NpdG9yeSggdHJhbnMuYXBwLCByZXBvc2l0b3J5PTNETm9uZSwgcmVwb19wYT0K
dGg9M0RyZXBvX2RpciwgY3JlYXRlPTNERmFsc2UgKQogICAgIHVuZGVzaXJhYmxlX2RpcnNfcmVt
b3ZlZCA9M0QgMAogICAgIHVuZGVzaXJhYmxlX2ZpbGVzX3JlbW92ZWQgPTNEIDAKLSAgICBvaywg
bWVzc2FnZSA9M0QgY29tbWl0X3V0aWwuY2hlY2tfYXJjaGl2ZSggcmVwb3NpdG9yeSwgdGFyICkK
LSAgICBpZiBub3Qgb2s6CisgICAgY2hlY2tfcmVzdWx0cyA9M0QgY29tbWl0X3V0aWwuY2hlY2tf
YXJjaGl2ZSggcmVwb3NpdG9yeSwgdGFyICkKKyAgICBpZiBjaGVja19yZXN1bHRzLmludmFsaWQ6
CiAgICAgICAgIHRhci5jbG9zZSgpCiAgICAgICAgIHVwbG9hZGVkX2ZpbGUuY2xvc2UoKQotICAg
ICAgICByZXR1cm4gb2ssIG1lc3NhZ2UsIFtdLCAnJywgdW5kZXNpcmFibGVfZGlyc19yZW1vdmVk
LCB1bmRlc2lyYWJsZV89CmZpbGVzX3JlbW92ZWQKKyAgICAgICAgbWVzc2FnZSA9M0QgJyVzIElu
dmFsaWQgcGF0aHMgd2VyZTogJXMnICUgKAorICAgICAgICAgICAgJyAnLmpvaW4oIGNoZWNrX3Jl
c3VsdHMuZXJyb3JzICksICcsICcuam9pbiggY2hlY2tfcmVzdWx0cy5pbnY9CmFsaWQgKSApCisg
ICAgICAgIHJldHVybiBGYWxzZSwgbWVzc2FnZSwgW10sICcnLCB1bmRlc2lyYWJsZV9kaXJzX3Jl
bW92ZWQsIHVuZGVzaXJhYj0KbGVfZmlsZXNfcmVtb3ZlZAogICAgIGVsc2U6CiAgICAgICAgIGlm
IHVwbG9hZF9wb2ludCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGZ1bGxfcGF0aCA9M0Qgb3Mu
cGF0aC5hYnNwYXRoKCBvcy5wYXRoLmpvaW4oIHJlcG9fZGlyLCB1cGxvYWRfPQpwb2ludCApICkK
ICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGZ1bGxfcGF0aCA9M0Qgb3MucGF0aC5hYnNwYXRo
KCByZXBvX2RpciApCi0gICAgICAgIGZpbGVuYW1lc19pbl9hcmNoaXZlID0zRCBbXQotICAgICAg
ICBmb3IgdGFyaW5mb19vYmogaW4gdGFyLmdldG1lbWJlcnMoKToKLSAgICAgICAgICAgIG9rID0z
RCBvcy5wYXRoLmJhc2VuYW1lKCB0YXJpbmZvX29iai5uYW1lICkgbm90IGluIGNvbW1pdF91dGls
PQouVU5ERVNJUkFCTEVfRklMRVMKLSAgICAgICAgICAgIGlmIG9rOgotICAgICAgICAgICAgICAg
IGZvciBmaWxlX3BhdGhfaXRlbSBpbiB0YXJpbmZvX29iai5uYW1lLnNwbGl0KCAnLycgKToKLSAg
ICAgICAgICAgICAgICAgICAgaWYgZmlsZV9wYXRoX2l0ZW0gaW4gY29tbWl0X3V0aWwuVU5ERVNJ
UkFCTEVfRElSUzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVzaXJhYmxlX2RpcnNfcmVt
b3ZlZCArPTNEIDEKLSAgICAgICAgICAgICAgICAgICAgICAgIG9rID0zRCBGYWxzZQotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgdW5kZXNpcmFibGVfZmlsZXNfcmVtb3ZlZCArPTNEIDEKLSAgICAgICAgICAgIGlmIG9rOgot
ICAgICAgICAgICAgICAgIGZpbGVuYW1lc19pbl9hcmNoaXZlLmFwcGVuZCggdGFyaW5mb19vYmou
bmFtZSApCisgICAgICAgIHVuZGVzaXJhYmxlX2ZpbGVzX3JlbW92ZWQgPTNEIGxlbiggY2hlY2tf
cmVzdWx0cy51bmRlc2lyYWJsZV9maWxlcz0KICkKKyAgICAgICAgdW5kZXNpcmFibGVfZGlyc19y
ZW1vdmVkID0zRCBsZW4oIGNoZWNrX3Jlc3VsdHMudW5kZXNpcmFibGVfZGlycyApCisgICAgICAg
IGZpbGVuYW1lc19pbl9hcmNoaXZlID0zRCBbIHRpLm5hbWUgZm9yIHRpIGluIGNoZWNrX3Jlc3Vs
dHMudmFsaWQgXQogICAgICAgICAjIEV4dHJhY3QgdGhlIHVwbG9hZGVkIHRhciB0byB0aGUgbG9h
ZF9wb2ludCB3aXRoaW4gdGhlIHJlcG9zaXRvcnk9CiBoaWVyYXJjaHkuCi0gICAgICAgIHRhci5l
eHRyYWN0YWxsKCBwYXRoPTNEZnVsbF9wYXRoICkKKyAgICAgICAgdGFyLmV4dHJhY3RhbGwoIHBh
dGg9M0RmdWxsX3BhdGgsIG1lbWJlcnM9M0RjaGVja19yZXN1bHRzLnZhbGlkICkKICAgICAgICAg
dGFyLmNsb3NlKCkKICAgICAgICAgdXBsb2FkZWRfZmlsZS5jbG9zZSgpCiAgICAgICAgIGZvciBm
aWxlbmFtZSBpbiBmaWxlbmFtZXNfaW5fYXJjaGl2ZToKCmRpZmYgLXIgZDYyZjNlNTBiNTY3YTE1
N2MwOTQ0NDczYWRiYmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0Zj0KNGJk
ZDRiMWUxOWE5N2FhNTUgbGliL3Rvb2xfc2hlZC91dGlsL3NoZWRfdXRpbF9jb21tb24ucHkKLS0t
IGEvbGliL3Rvb2xfc2hlZC91dGlsL3NoZWRfdXRpbF9jb21tb24ucHkKKysrIGIvbGliL3Rvb2xf
c2hlZC91dGlsL3NoZWRfdXRpbF9jb21tb24ucHkKQEAgLTgzLDYgKzgzLDU5IEBACiAiIiIKPTIw
Cj0yMAorZGVmIGNhbl9lbGltaW5hdGVfcmVwb3NpdG9yeV9kZXBlbmRlbmN5KG1ldGFkYXRhX2Rp
Y3QsIHRvb2xfc2hlZF91cmwsIG5hbWU9Ciwgb3duZXIpOgorICAgICIiIgorICAgIERldGVybWlu
ZSBpZiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYSByZXBvc2l0b3J5X2RlcGVuZGVuY3kgcmVj
b3JkCisgICAgYXNzb2NpYXRlZCB3aXRoIGEgdG9vbF9zaGVkX3JlcG9zaXRvcnkgcmVjb3JkIG9u
IHRoZSBHYWxheHkgc2lkZQorICAgIGNhbiBiZSBlbGltaW5hdGVkLgorICAgICIiIgorICAgIHJk
X2RpY3QgPTNEIG1ldGFkYXRhX2RpY3QuZ2V0KCdyZXBvc2l0b3J5X2RlcGVuZGVuY2llcycsIHt9
KQorICAgIHJkX3R1cHMgPTNEIHJkX2RpY3QuZ2V0KCAncmVwb3NpdG9yeV9kZXBlbmRlbmNpZXMn
LCBbXSApCisgICAgZm9yIHJkX3R1cCBpbiByZF90dXBzOgorICAgICAgICB0c3UsIG4sIG8sIG5v
bmUxLCBub25lMiwgbm9uZTMgPTNEIGNvbW1vbl91dGlsLnBhcnNlX3JlcG9zaXRvcnlfZGU9CnBl
bmRlbmN5X3R1cGxlKHJkX3R1cCkKKyAgICAgICAgaWYgdHN1ID0zRD0zRCB0b29sX3NoZWRfdXJs
IGFuZCBuID0zRD0zRCBuYW1lIGFuZCBvID0zRD0zRCBvd25lcjoKKyAgICAgICAgICAgICMgVGhl
IHJlcG9zaXRvcnkgZGVwZW5kZW5jeSBpcyBjdXJyZW50LCBzbyBrZWVwIGl0LgorICAgICAgICAg
ICAgcmV0dXJuIEZhbHNlCisgICAgcmV0dXJuIFRydWUKKworCitkZWYgY2FuX2VsaW1pbmF0ZV90
b29sX2RlcGVuZGVuY3kobWV0YWRhdGFfZGljdCwgbmFtZSwgdHlwZSwgdmVyc2lvbik6CisgICAg
IiIiCisgICAgRGV0ZXJtaW5lIGlmIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBhIHRvb2xfZGVw
ZW5kZW5jeSByZWNvcmQKKyAgICBhc3NvY2lhdGVkIHdpdGggYSB0b29sX3NoZWRfcmVwb3NpdG9y
eSByZWNvcmQgb24gdGhlIEdhbGF4eSBzaWRlCisgICAgY2FuIGJlIGVsaW1pbmF0ZWQuCisgICAg
IiIiCisgICAgdGRfZGljdCA9M0QgbWV0YWRhdGFfZGljdC5nZXQoJ3Rvb2xfZGVwZW5kZW5jaWVz
Jywge30pCisgICAgZm9yIHRkX2tleSwgdGRfdmFsIGluIHRkX2RpY3QuaXRlbXMoKToKKyAgICAg
ICAgbiA9M0QgdGRfdmFsLmdldCgnbmFtZScsIE5vbmUpCisgICAgICAgIHQgPTNEIHRkX3ZhbC5n
ZXQoJ3R5cGUnLCBOb25lKQorICAgICAgICB2ID0zRCB0ZF92YWwuZ2V0KCd2ZXJzaW9uJywgTm9u
ZSkKKyAgICAgICAgaWYgbiA9M0Q9M0QgbmFtZSBhbmQgdCA9M0Q9M0QgdHlwZSBhbmQgdiA9M0Q9
M0QgdmVyc2lvbjoKKyAgICAgICAgICAgICMgVGhlIHRvb2wgZGVwZW5kZW5jeSBpcyBjdXJyZW50
LCBzbyBrZWVwIGl0LgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgcmV0dXJuIFRydWUK
KworCitkZWYgY2xlYW5fZGVwZW5kZW5jeV9yZWxhdGlvbnNoaXBzKHRyYW5zLCBtZXRhZGF0YV9k
aWN0LCB0b29sX3NoZWRfcmVwb3NpdD0Kb3J5LCB0b29sX3NoZWRfdXJsKToKKyAgICAiIiIKKyAg
ICBSZXBvc2l0b3JpZXMgb2YgdHlwZSB0b29sX2RlcGVuZGVuY3lfZGVmaW5pdGlvbiBhbGxvdyBm
b3IgZGVmaW5pbmcgYQorICAgIHBhY2thZ2UgZGVwZW5kZW5jeSBhdCBzb21lIHBvaW50IGluIHRo
ZSBjaGFuZ2UgbG9nIGFuZCB0aGVuIHJlbW92aW5nIHQ9CmhlCisgICAgZGVwZW5kZW5jeSBsYXRl
ciBpbiB0aGUgY2hhbmdlIGxvZy4gIFRoaXMgZnVuY3Rpb24ga2VlcHMgdGhlIGRlcGVuZGVuY3kK
KyAgICByZWxhdGlvbnNoaXBzIG9uIHRoZSBHYWxheHkgc2lkZSBjdXJyZW50IGJ5IGRlbGV0aW5n
IGRhdGFiYXNlIHJlY29yZHMKKyAgICB0aGF0IGRlZmluZWQgdGhlIG5vdy1icm9rZW4gcmVsYXRp
b25zaGlwcy4KKyAgICAiIiIKKyAgICBmb3IgcnJkYSBpbiB0b29sX3NoZWRfcmVwb3NpdG9yeS5y
ZXF1aXJlZF9yZXBvc2l0b3JpZXM6CisgICAgICAgIHJkID0zRCBycmRhLnJlcG9zaXRvcnlfZGVw
ZW5kZW5jeQorICAgICAgICByID0zRCByZC5yZXBvc2l0b3J5CisgICAgICAgIGlmIGNhbl9lbGlt
aW5hdGVfcmVwb3NpdG9yeV9kZXBlbmRlbmN5KG1ldGFkYXRhX2RpY3QsIHRvb2xfc2hlZF91cj0K
bCwgci5uYW1lLCByLm93bmVyKToKKyAgICAgICAgICAgIHRyYW5zLmluc3RhbGxfbW9kZWwuY29u
dGV4dC5kZWxldGUocnJkYSkKKyAgICAgICAgICAgIHRyYW5zLmluc3RhbGxfbW9kZWwuY29udGV4
dC5mbHVzaCgpCisgICAgZm9yIHRkIGluIHRvb2xfc2hlZF9yZXBvc2l0b3J5LnRvb2xfZGVwZW5k
ZW5jaWVzOgorICAgICAgICBpZiBjYW5fZWxpbWluYXRlX3Rvb2xfZGVwZW5kZW5jeShtZXRhZGF0
YV9kaWN0LCB0ZC5uYW1lLCB0ZC50eXBlLCA9CnRkLnZlcnNpb24pOgorICAgICAgICAgICAgdHJh
bnMuaW5zdGFsbF9tb2RlbC5jb250ZXh0LmRlbGV0ZSh0ZCkKKyAgICAgICAgICAgIHRyYW5zLmlu
c3RhbGxfbW9kZWwuY29udGV4dC5mbHVzaCgpCisKKwogZGVmIGNyZWF0ZV9vcl91cGRhdGVfdG9v
bF9zaGVkX3JlcG9zaXRvcnkoIGFwcCwgbmFtZSwgZGVzY3JpcHRpb24sIGluc3RhbGw9CmVkX2No
YW5nZXNldF9yZXZpc2lvbiwgY3R4X3JldiwgcmVwb3NpdG9yeV9jbG9uZV91cmwsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGFfZGljdCwgc3RhdHVz
LCBjdXJyZW50Xz0KY2hhbmdlc2V0X3JldmlzaW9uPTNETm9uZSwgb3duZXI9M0QnJywgZGlzdF90
b19zaGVkPTNERmFsc2UgKToKICAgICAiIiIKQEAgLTMwMCw2ICszNTMsMTkgQEAKICAgICByZXR1
cm4gaGdfdXRpbC5JTklUSUFMX0NIQU5HRUxPR19IQVNICj0yMAo9MjAKK2RlZiBnZXRfdG9vbF9k
ZXBlbmRlbmN5X2RlZmluaXRpb25fbWV0YWRhdGFfZnJvbV90b29sX3NoZWQoIGFwcCwgdG9vbF9z
aGVkPQpfdXJsLCBuYW1lLCBvd25lciApOgorICAgICIiIgorICAgIFNlbmQgYSByZXF1ZXN0IHRv
IHRoZSB0b29sIHNoZWQgdG8gcmV0cmlldmUgdGhlIGN1cnJlbnQgbWV0YWRhdGEgZm9yIGEKKyAg
ICByZXBvc2l0b3J5IG9mIHR5cGUgdG9vbF9kZXBlbmRlbmN5X2RlZmluaXRpb24gZGVmaW5lZCBi
eSB0aGUgY29tYmluYXRpPQpvbgorICAgIG9mIGEgbmFtZSBhbmQgb3duZXIuCisgICAgIiIiCisg
ICAgdG9vbF9zaGVkX3VybCA9M0QgY29tbW9uX3V0aWwuZ2V0X3Rvb2xfc2hlZF91cmxfZnJvbV90
b29sX3NoZWRfcmVnaXN0cj0KeSggYXBwLCB0b29sX3NoZWRfdXJsICkKKyAgICBwYXJhbXMgPTNE
IGRpY3QoIG5hbWU9M0RuYW1lLCBvd25lcj0zRG93bmVyICkKKyAgICBwYXRoc3BlYyA9M0QgWyAn
cmVwb3NpdG9yeScsICdnZXRfdG9vbF9kZXBlbmRlbmN5X2RlZmluaXRpb25fbWV0YWRhdGEnPQog
XQorICAgIG1ldGFkYXRhID0zRCBjb21tb25fdXRpbC50b29sX3NoZWRfZ2V0KCBhcHAsIHRvb2xf
c2hlZF91cmwsIHBhdGhzcGVjPQo9M0RwYXRoc3BlYywgcGFyYW1zPTNEcGFyYW1zICkKKyAgICBy
ZXR1cm4gbWV0YWRhdGEKKworCiBkZWYgZ2V0X25leHRfZG93bmxvYWRhYmxlX2NoYW5nZXNldF9y
ZXZpc2lvbiggcmVwb3NpdG9yeSwgcmVwbywgYWZ0ZXJfY2hhbj0KZ2VzZXRfcmV2aXNpb24gKToK
ICAgICAiIiIKICAgICBSZXR1cm4gdGhlIGluc3RhbGxhYmxlIGNoYW5nZXNldF9yZXZpc2lvbiBp
biB0aGUgcmVwb3NpdG9yeSBjaGFuZ2Vsb2cgPQphZnRlciB0aGUgY2hhbmdlc2V0IHRvIHdoaWNo
CkBAIC01MzQsOSArNjAwLDE3IEBACiAgICAgcmV0dXJuIHJlcG9zaXRvcnkKPTIwCj0yMAotZGVm
IGdldF9yZXBvc2l0b3J5X2ZpbGVfY29udGVudHMoIGZpbGVfcGF0aCApOgorZGVmIGdldF9yZXBv
c2l0b3J5X2ZpbGVfY29udGVudHMoIGFwcCwgZmlsZV9wYXRoLCByZXBvc2l0b3J5X2lkICk6CiAg
ICAgIiIiUmV0dXJuIHRoZSBkaXNwbGF5LXNhZmUgY29udGVudHMgb2YgYSByZXBvc2l0b3J5IGZp
bGUgZm9yIGRpc3BsYXkgaT0KbiBhIGJyb3dzZXIuIiIiCi0gICAgaWYgY2hlY2tlcnMuaXNfZ3pp
cCggZmlsZV9wYXRoICk6CisgICAgc2FmZV9zdHIgPTNEICcnCisgICAgaWYgbm90IGlzX3BhdGhf
d2l0aGluX3JlcG8oIGFwcCwgZmlsZV9wYXRoLCByZXBvc2l0b3J5X2lkICk6CisgICAgICAgIGxv
Zy53YXJuaW5nKCAnUmVxdWVzdCB0cmllcyB0byBhY2Nlc3MgYSBmaWxlIG91dHNpZGUgb2YgdGhl
IHJlcG9zaT0KdG9yeSBsb2NhdGlvbi4gRmlsZSBwYXRoOiAlcycsIGZpbGVfcGF0aCApCisgICAg
ICAgIHJldHVybiAnSW52YWxpZCBmaWxlIHBhdGgnCisgICAgIyBTeW1saW5rIHRhcmdldHMgYXJl
IGNoZWNrZWQgYnkgaXNfcGF0aF93aXRoaW5fcmVwbworICAgIGlmIG9zLnBhdGguaXNsaW5rKCBm
aWxlX3BhdGggKToKKyAgICAgICAgc2FmZV9zdHIgPTNEICdsaW5rIHRvOiAnICsgYmFzaWNfdXRp
bC50b19odG1sX3N0cmluZyggb3MucmVhZGxpbmsoPQogZmlsZV9wYXRoICkgKQorICAgICAgICBy
ZXR1cm4gc2FmZV9zdHIKKyAgICBlbGlmIGNoZWNrZXJzLmlzX2d6aXAoIGZpbGVfcGF0aCApOgog
ICAgICAgICByZXR1cm4gJzxici8+Z3ppcCBjb21wcmVzc2VkIGZpbGU8YnIvPicKICAgICBlbGlm
IGNoZWNrZXJzLmlzX2J6MiggZmlsZV9wYXRoICk6CiAgICAgICAgIHJldHVybiAnPGJyLz5iejIg
Y29tcHJlc3NlZCBmaWxlPGJyLz4nCkBAIC01NDUsNyArNjE5LDYgQEAKICAgICBlbGlmIGNoZWNr
ZXJzLmNoZWNrX2JpbmFyeSggZmlsZV9wYXRoICk6CiAgICAgICAgIHJldHVybiAnPGJyLz5CaW5h
cnkgZmlsZTxici8+JwogICAgIGVsc2U6Ci0gICAgICAgIHNhZmVfc3RyID0zRCAnJwogICAgICAg
ICBmb3IgaSwgbGluZSBpbiBlbnVtZXJhdGUoIG9wZW4oIGZpbGVfcGF0aCApICk6CiAgICAgICAg
ICAgICBzYWZlX3N0ciA9M0QgJyVzJXMnICUgKCBzYWZlX3N0ciwgYmFzaWNfdXRpbC50b19odG1s
X3N0cmluZyggbD0KaW5lICkgKQogICAgICAgICAgICAgIyBTdG9wIHJlYWRpbmcgYWZ0ZXIgc3Ry
aW5nIGlzIGxhcmdlciB0aGFuIE1BWF9DT05URU5UX1NJWkUuCkBAIC01NTUsNiArNjI4LDcgQEAK
ICAgICAgICAgICAgICAgICAgICAgdXRpbC5uaWNlX3NpemUoIE1BWF9DT05URU5UX1NJWkUgKQog
ICAgICAgICAgICAgICAgIHNhZmVfc3RyID0zRCAnJXMlcycgJSAoIHNhZmVfc3RyLCBsYXJnZV9z
dHIgKQogICAgICAgICAgICAgICAgIGJyZWFrCisKICAgICAgICAgaWYgbGVuKCBzYWZlX3N0ciAp
ID4gYmFzaWNfdXRpbC5NQVhfRElTUExBWV9TSVpFOgogICAgICAgICAgICAgIyBFbGltaW5hdGUg
dGhlIG1pZGRsZSBvZiB0aGUgZmlsZSB0byBkaXNwbGF5IGEgZmlsZSBubyBsYXJnZXI9CiB0aGFu
IGJhc2ljX3V0aWwuTUFYX0RJU1BMQVlfU0laRS4KICAgICAgICAgICAgICMgVGhpcyBtYXkgbm90
IGJlIGlkZWFsIGlmIHRoZSBmaWxlIGlzIGxhcmdlciB0aGFuIE1BWF9DT05URU5UPQpfU0laRS4K
QEAgLTU3Niw5ICs2NTAsNiBAQAogICAgICAgICAjIFNraXAgLmhnIGRpcmVjdG9yaWVzCiAgICAg
ICAgIGlmIGl0ZW0uc3RhcnRzd2l0aCggJy5oZycgKToKICAgICAgICAgICAgIGNvbnRpbnVlCi0g
ICAgICAgIGlmIG9zLnBhdGguaXNkaXIoIG9zLnBhdGguam9pbiggZm9sZGVyX3BhdGgsIGl0ZW0g
KSApOgotICAgICAgICAgICAgIyBBcHBlbmQgYSAnLycgY2hhcmFjdGVyIHNvIHRoYXQgb3VyIGpx
dWVyeSBkeW5hdHJlZSB3aWxsIGZ1bmM9CnRpb24gcHJvcGVybHkuCi0gICAgICAgICAgICBpdGVt
ID0zRCAnJXMvJyAlIGl0ZW0KICAgICAgICAgY29udGVudHMuYXBwZW5kKCBpdGVtICkKICAgICBp
ZiBjb250ZW50czoKICAgICAgICAgY29udGVudHMuc29ydCgpCkBAIC03MTMsNiArNzg0LDE4IEBA
CiAgICAgcmV0dXJuIHF1ZXJ5Cj0yMAo9MjAKK2RlZiBnZXRfcmVwb3NpdG9yeV90eXBlX2Zyb21f
dG9vbF9zaGVkKCBhcHAsIHRvb2xfc2hlZF91cmwsIG5hbWUsIG93bmVyICk6CisgICAgIiIiCisg
ICAgU2VuZCBhIHJlcXVlc3QgdG8gdGhlIHRvb2wgc2hlZCB0byByZXRyaWV2ZSB0aGUgdHlwZSBm
b3IgYSByZXBvc2l0b3J5ID0KZGVmaW5lZCBieSB0aGUKKyAgICBjb21iaW5hdGlvbiBvZiBhIG5h
bWUgYW5kIG93bmVyLgorICAgICIiIgorICAgIHRvb2xfc2hlZF91cmwgPTNEIGNvbW1vbl91dGls
LmdldF90b29sX3NoZWRfdXJsX2Zyb21fdG9vbF9zaGVkX3JlZ2lzdHI9CnkoIGFwcCwgdG9vbF9z
aGVkX3VybCApCisgICAgcGFyYW1zID0zRCBkaWN0KCBuYW1lPTNEbmFtZSwgb3duZXI9M0Rvd25l
ciApCisgICAgcGF0aHNwZWMgPTNEIFsgJ3JlcG9zaXRvcnknLCAnZ2V0X3JlcG9zaXRvcnlfdHlw
ZScgXQorICAgIHJlcG9zaXRvcnlfdHlwZSA9M0QgY29tbW9uX3V0aWwudG9vbF9zaGVkX2dldCgg
YXBwLCB0b29sX3NoZWRfdXJsLCBwYXQ9CmhzcGVjPTNEcGF0aHNwZWMsIHBhcmFtcz0zRHBhcmFt
cyApCisgICAgcmV0dXJuIHJlcG9zaXRvcnlfdHlwZQorCisKIGRlZiBnZXRfdG9vbF9wYW5lbF9j
b25maWdfdG9vbF9wYXRoX2luc3RhbGxfZGlyKCBhcHAsIHJlcG9zaXRvcnkgKToKICAgICAiIiIK
ICAgICBSZXR1cm4gc2hlZC1yZWxhdGVkIHRvb2wgcGFuZWwgY29uZmlnLCB0aGUgdG9vbF9wYXRo
IGNvbmZpZ3VyZWQgaW4gaXQsPQogYW5kIHRoZSByZWxhdGl2ZSBwYXRoIHRvCkBAIC0xMDMxLDEx
ICsxMTE0LDE1IEBACiAgICAgcmV0dXJuIGhhc2F0dHIoIGFwcCwgImluc3RhbGxfbW9kZWwiICkK
PTIwCj0yMAotZGVmIG9wZW5fcmVwb3NpdG9yeV9maWxlc19mb2xkZXIoIGZvbGRlcl9wYXRoICk6
CitkZWYgb3Blbl9yZXBvc2l0b3J5X2ZpbGVzX2ZvbGRlciggYXBwLCBmb2xkZXJfcGF0aCwgcmVw
b3NpdG9yeV9pZCApOgogICAgICIiIgogICAgIFJldHVybiBhIGxpc3Qgb2YgZGljdGlvbmFyaWVz
LCBlYWNoIG9mIHdoaWNoIGNvbnRhaW5zIGluZm9ybWF0aW9uIGZvciA9CmEgZmlsZSBvciBkaXJl
Y3RvcnkgY29udGFpbmVkCiAgICAgd2l0aGluIGEgZGlyZWN0b3J5IGluIGEgcmVwb3NpdG9yeSBm
aWxlIGhpZXJhcmNoeS4KICAgICAiIiIKKyAgICAjIFN5bWxpbmsgdGFyZ2V0cyBhcmUgY2hlY2tl
ZCBieSBpc19wYXRoX3dpdGhpbl9yZXBvCisgICAgaWYgbm90IGlzX3BhdGhfd2l0aGluX3JlcG8o
IGFwcCwgZm9sZGVyX3BhdGgsIHJlcG9zaXRvcnlfaWQgKToKKyAgICAgICAgbG9nLndhcm5pbmco
ICdSZXF1ZXN0IHRyaWVzIHRvIGFjY2VzcyBhIGZvbGRlciBvdXRzaWRlIG9mIHRoZSByZXBvPQpz
aXRvcnkgbG9jYXRpb24uIEZvbGRlciBwYXRoOiAlcycsIGZvbGRlcl9wYXRoICkKKyAgICAgICAg
cmV0dXJuIFtdCiAgICAgdHJ5OgogICAgICAgICBmaWxlc19saXN0ID0zRCBnZXRfcmVwb3NpdG9y
eV9maWxlcyggZm9sZGVyX3BhdGggKQogICAgIGV4Y2VwdCBPU0Vycm9yLCBlOgpAQCAtMTA0NSwx
MCArMTEzMiwxNyBAQAogICAgIGZvbGRlcl9jb250ZW50cyA9M0QgW10KICAgICBmb3IgZmlsZW5h
bWUgaW4gZmlsZXNfbGlzdDoKICAgICAgICAgaXNfZm9sZGVyID0zRCBGYWxzZQotICAgICAgICBp
ZiBmaWxlbmFtZSBhbmQgZmlsZW5hbWVbIC0xIF0gPTNEPTNEIG9zLnNlcDoKLSAgICAgICAgICAg
IGlzX2ZvbGRlciA9M0QgVHJ1ZQorICAgICAgICBmdWxsX3BhdGggPTNEIG9zLnBhdGguam9pbigg
Zm9sZGVyX3BhdGgsIGZpbGVuYW1lICkKKyAgICAgICAgaXNfbGluayA9M0Qgb3MucGF0aC5pc2xp
bmsoIGZ1bGxfcGF0aCApCisgICAgICAgIHBhdGhfaXNfd2l0aGluX3JlcG8gPTNEIGlzX3BhdGhf
d2l0aGluX3JlcG8oIGFwcCwgZnVsbF9wYXRoLCByZXBvcz0KaXRvcnlfaWQgKQorICAgICAgICBp
ZiBpc19saW5rIGFuZCBub3QgcGF0aF9pc193aXRoaW5fcmVwbzoKKyAgICAgICAgICAgIGxvZy53
YXJuaW5nKCAnVmFsaWQgZm9sZGVyIGNvbnRhaW5zIGEgc3ltbGluayBvdXRzaWRlIG9mIHRoZSBy
PQplcG9zaXRvcnkgbG9jYXRpb24uIExpbmsgZm91bmQgaW46ICcgKyBzdHIoIGZ1bGxfcGF0aCAp
ICkKICAgICAgICAgaWYgZmlsZW5hbWU6Ci0gICAgICAgICAgICBmdWxsX3BhdGggPTNEIG9zLnBh
dGguam9pbiggZm9sZGVyX3BhdGgsIGZpbGVuYW1lICkKKyAgICAgICAgICAgIGlmIG9zLnBhdGgu
aXNkaXIoIGZ1bGxfcGF0aCApIGFuZCBwYXRoX2lzX3dpdGhpbl9yZXBvOgorICAgICAgICAgICAg
ICAgICMgQXBwZW5kIGEgJy8nIGNoYXJhY3RlciBzbyB0aGF0IG91ciBqcXVlcnkgZHluYXRyZWUg
d2lsbCA9CmZ1bmN0aW9uIHByb3Blcmx5LgorICAgICAgICAgICAgICAgIGZpbGVuYW1lID0zRCAn
JXMvJyAlIGZpbGVuYW1lCisgICAgICAgICAgICAgICAgZnVsbF9wYXRoID0zRCAnJXMvJyAlIGZ1
bGxfcGF0aAorICAgICAgICAgICAgICAgIGlzX2ZvbGRlciA9M0QgVHJ1ZQogICAgICAgICAgICAg
bm9kZSA9M0QgeyAidGl0bGUiOiBmaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICJpc0Zv
bGRlciI6IGlzX2ZvbGRlciwKICAgICAgICAgICAgICAgICAgICAgICJpc0xhenkiOiBpc19mb2xk
ZXIsCkBAIC0xMDU4LDYgKzExNTIsMTYgQEAKICAgICByZXR1cm4gZm9sZGVyX2NvbnRlbnRzCj0y
MAo9MjAKK2RlZiBpc19wYXRoX3dpdGhpbl9yZXBvKCBhcHAsIHBhdGgsIHJlcG9zaXRvcnlfaWQg
KToKKyAgICAiIiIKKyAgICBEZXRlY3Qgd2hldGhlciB0aGUgZ2l2ZW4gcGF0aCBpcyB3aXRoaW4g
dGhlIHJlcG9zaXRvcnkgZm9sZGUgcm9uIHRoZSBkPQppc2suCisgICAgVXNlIHRvIGZpbHRlciBt
YWxpY2lvdXMgc3ltbGlua3MgdGFyZ2V0aW5nIG91dHNpZGUgcGF0aHMuCisgICAgIiIiCisgICAg
cmVwb19wYXRoID0zRCBvcy5wYXRoLmFic3BhdGgoIGdldF9yZXBvc2l0b3J5X2J5X2lkKCBhcHAs
IHJlcG9zaXRvcnlfaT0KZCApLnJlcG9fcGF0aCggYXBwICkgKQorICAgIHJlc29sdmVkX3BhdGgg
PTNEIG9zLnBhdGgucmVhbHBhdGgoIHBhdGggKQorICAgIHJldHVybiBvcy5wYXRoLmNvbW1vbnBy
ZWZpeCggWyByZXBvX3BhdGgsIHJlc29sdmVkX3BhdGggXSApID0zRD0zRCByZXA9Cm9fcGF0aAor
CisKIGRlZiByZXBvc2l0b3J5X3dhc19wcmV2aW91c2x5X2luc3RhbGxlZCggYXBwLCB0b29sX3No
ZWRfdXJsLCByZXBvc2l0b3J5X25hPQptZSwgcmVwb19pbmZvX3R1cGxlLCBmcm9tX3RpcD0zREZh
bHNlICk6CiAgICAgIiIiCiAgICAgRmluZCBvdXQgaWYgYSByZXBvc2l0b3J5IGlzIGFscmVhZHkg
aW5zdGFsbGVkIGludG8gR2FsYXh5IC0gdGhlcmUgYXJlID0Kc2V2ZXJhbCBzY2VuYXJpb3Mgd2hl
cmUgdGhpcwoKZGlmZiAtciBkNjJmM2U1MGI1NjdhMTU3YzA5NDQ0NzNhZGJiYzQxMGM1NTUyZDFh
IC1yIDM2YzA1MjYxMzQzNDEyMzcwZjllNDRmPQo0YmRkNGIxZTE5YTk3YWE1NSBzY3JpcHRzL2Z1
bmN0aW9uYWxfdGVzdHMucHkKLS0tIGEvc2NyaXB0cy9mdW5jdGlvbmFsX3Rlc3RzLnB5CisrKyBi
L3NjcmlwdHMvZnVuY3Rpb25hbF90ZXN0cy5weQpAQCAtMzM2LDYgKzMzNiw3IEBACiAgICAgICAg
ICAgICAgICAgICAgICAgIHVzZXJfbGlicmFyeV9pbXBvcnRfZGlyPTNEdXNlcl9saWJyYXJ5X2lt
cG9ydF9kaXIsCiAgICAgICAgICAgICAgICAgICAgICAgIG1hc3Rlcl9hcGlfa2V5PTNEbWFzdGVy
X2FwaV9rZXksCiAgICAgICAgICAgICAgICAgICAgICAgIHVzZV90YXNrZWRfam9icz0zRFRydWUs
CisgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX21pZ3JhdGVfdG9vbHM9M0RGYWxzZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgY2xlYW51cF9qb2I9M0Qnb25zdWNjZXNzJywKICAgICAgICAg
ICAgICAgICAgICAgICAgZW5hYmxlX2JldGFfdG9vbF9mb3JtYXRzPTNEVHJ1ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgYXV0b19jb25maWd1cmVfbG9nZ2luZz0zRGxvZ2dpbmdfY29uZmlnX2Zp
bGUgaXMgTm9uPQplLAoKZGlmZiAtciBkNjJmM2U1MGI1NjdhMTU3YzA5NDQ0NzNhZGJiYzQxMGM1
NTUyZDFhIC1yIDM2YzA1MjYxMzQzNDEyMzcwZjllNDRmPQo0YmRkNGIxZTE5YTk3YWE1NSBzdGF0
aWMvbWFwcy9tdmMvY29sbGVjdGlvbi9saXN0LWNvbGxlY3Rpb24tY3JlYXRvci5qcy5tYXAKLS0t
IGEvc3RhdGljL21hcHMvbXZjL2NvbGxlY3Rpb24vbGlzdC1jb2xsZWN0aW9uLWNyZWF0b3IuanMu
bWFwCisrKyBiL3N0YXRpYy9tYXBzL212Yy9jb2xsZWN0aW9uL2xpc3QtY29sbGVjdGlvbi1jcmVh
dG9yLmpzLm1hcApAQCAtMSwxICsxLDEgQEAKLXsidmVyc2lvbiI6MywiZmlsZSI6Imxpc3QtY29s
bGVjdGlvbi1jcmVhdG9yLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvPQptdmMvY29sbGVj
dGlvbi9saXN0LWNvbGxlY3Rpb24tY3JlYXRvci5qcyJdLCJuYW1lcyI6WyJkZWZpbmUiLCJIRENB
IiwiU1RBVEU9ClMiLCJCQVNFX01WQyIsIlVJX01PREFMIiwibmF0dXJhbFNvcnQiLCJfbCIsImNy
ZWF0ZUxpc3RDb2xsZWN0aW9uIiwiY29udGVudD0KcyIsImVsZW1lbnRzIiwidG9KU09OIiwicHJv
bWlzZSIsImxpc3RDb2xsZWN0aW9uQ3JlYXRvck1vZGFsIiwiY3JlYXRpb25GbiIsPQoibmFtZSIs
Im1hcCIsImVsZW1lbnQiLCJpZCIsInNyYyIsImhpc3RvcnlfY29udGVudF90eXBlIiwiY3JlYXRl
SERDQSIsIkRhdGE9CnNldENvbGxlY3Rpb25FbGVtZW50VmlldyIsIkJhY2tib25lIiwiVmlldyIs
ImV4dGVuZCIsIkxvZ2dhYmxlTWl4aW4iLCJ0YWdOYT0KbWUiLCJjbGFzc05hbWUiLCJpbml0aWFs
aXplIiwiYXR0cmlidXRlcyIsInRoaXMiLCJzZWxlY3RlZCIsInJlbmRlciIsIiRlbCIsPQoiYXR0
ciIsImh0bWwiLCJ0ZW1wbGF0ZSIsImFkZENsYXNzIiwiXyIsImpvaW4iLCJzZWxlY3QiLCJ0b2dn
bGUiLCJ0b2dnbGVDbGE9CnNzIiwidHJpZ2dlciIsInNvdXJjZSIsImhhc0NsYXNzIiwiZGlzY2Fy
ZCIsInZpZXciLCJwYXJlbnRXaWR0aCIsInBhcmVudCIsIj0Kd2lkdGgiLCJhbmltYXRlIiwibWFy
Z2luLXJpZ2h0IiwiZGVzdHJveSIsIm9mZiIsInJlbW92ZSIsImV2ZW50cyIsImNsaWNrIiwiPQpj
bGljayAubmFtZSIsImNsaWNrIC5kaXNjYXJkIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdv
dmVyIiwiZHJvcCIsIl9jbGk9CmNrIiwiZXYiLCJzdG9wUHJvcGFnYXRpb24iLCJfY2xpY2tOYW1l
IiwicHJldmVudERlZmF1bHQiLCJyZXNwb25zZSIsInByb21wdD0KIiwiX2NsaWNrRGlzY2FyZCIs
Il9kcmFnc3RhcnQiLCJvcmlnaW5hbEV2ZW50IiwiZGF0YVRyYW5zZmVyIiwiZWZmZWN0QWxsb3dl
PQpkIiwic2V0RGF0YSIsIkpTT04iLCJzdHJpbmdpZnkiLCJfZHJhZ2VuZCIsInJlbW92ZUNsYXNz
IiwiX3NlbmRUb1BhcmVudCIsInQ9Cm9TdHJpbmciLCJMaXN0Q29sbGVjdGlvbkNyZWF0b3IiLCJl
bGVtZW50Vmlld0NsYXNzIiwiY29sbGVjdGlvbkNsYXNzIiwiSGlzdD0Kb3J5TGlzdERhdGFzZXRD
b2xsZWN0aW9uIiwibWluRWxlbWVudHMiLCJkZWZhdWx0QXR0cmlidXRlcyIsIlR5cGVFcnJvciIs
Im9uPQpjcmVhdGUiLCJvbmNhbmNlbCIsImF1dG9zY3JvbGxEaXN0IiwiaGlnaGxpZ2h0Q2xyIiwi
bWV0cmljIiwiY3JlYXRvciIsImVhY2g9CiIsInZhbHVlIiwia2V5IiwiaW5pdGlhbEVsZW1lbnRz
IiwiX2luc3RhbmNlU2V0VXAiLCJfZWxlbWVudHNTZXRVcCIsIl9zZXRVcD0KQmVoYXZpb3JzIiwi
c2VsZWN0ZWRJZHMiLCIkZHJhZ2dpbmciLCJibG9ja2luZyIsImludmFsaWRFbGVtZW50cyIsIndv
cmtpbmdFPQpsZW1lbnRzIiwiZWxlbWVudFZpZXdzIiwic2xpY2UiLCJfZW5zdXJlRWxlbWVudElk
cyIsIl92YWxpZGF0ZUVsZW1lbnRzIiwiX209CmFuZ2xlRHVwbGljYXRlTmFtZXMiLCJfc29ydEVs
ZW1lbnRzIiwiZm9yRWFjaCIsImhhc093blByb3BlcnR5IiwidW5pcXVlSWQiLD0KImZpbHRlciIs
InByb2JsZW0iLCJfaXNFbGVtZW50SW52YWxpZCIsInB1c2giLCJ0ZXh0Iiwic3RhdGUiLCJPSyIs
ImNvbnRhaW5zPQoiLCJOT1RfUkVBRFlfU1RBVEVTIiwiZGVsZXRlZCIsInB1cmdlZCIsIlNBRkVU
WSIsImNvdW50ZXIiLCJleGlzdGluZ05hbWVzIiw9CiJjdXJyTmFtZSIsIkVycm9yIiwic3BlZWQi
LCJjYWxsYmFjayIsImxlbmd0aCIsIl9yZW5kZXJJbnZhbGlkIiwiZW1wdHkiLCJ0ZT0KbXBsYXRl
cyIsIm1haW4iLCJfcmVuZGVySGVhZGVyIiwiX3JlbmRlck1pZGRsZSIsIl9yZW5kZXJGb290ZXIi
LCJfYWRkUGx1Z2luPQpDb21wb25lbnRzIiwiJCIsImZvY3VzIiwiaW52YWxpZEluaXRpYWwiLCJw
cm9ibGVtcyIsInNob3ciLCIkaGVhZGVyIiwiaGVhZGU9CnIiLCJmaW5kIiwicHJlcGVuZCIsImhl
bHBDb250ZW50IiwiX2ludmFsaWRFbGVtZW50c0FsZXJ0IiwiJG1pZGRsZSIsIm1pZGRsZT0KIiwi
X3JlbmRlckxpc3QiLCIkZm9vdGVyIiwiZm9vdGVyIiwiaG92ZXJoaWdobGlnaHQiLCJfc2hvd0Fs
ZXJ0IiwiX3ZhbGlkYXRpPQpvbldhcm5pbmciLCJ3aGF0IiwiY2xlYXIiLCJWQUxJREFUSU9OX0NM
QVNTIiwiYWRkIiwiX2Rpc2FibGVOYW1lQW5kQ3JlYXRlIiw9CiJkaXNhYmxlIiwiaXNVbmRlZmlu
ZWQiLCJwcm9wIiwiJGxpc3QiLCJfcmVuZGVyQ2xlYXJTZWxlY3RlZCIsInNpemUiLCJoaWRlIj0K
LCIkdG1wIiwialF1ZXJ5IiwicmVtb3ZlRWxlbWVudFZpZXciLCJlbGVtZW50VmlldyIsIl9jcmVh
dGVFbGVtZW50VmlldyIsImFwPQpwZW5kIiwiY2hpbGRyZW4iLCJpbnZva2UiLCJoZWlnaHQiLCJj
c3MiLCJoYXMiLCJfbGlzdGVuVG9FbGVtZW50VmlldyIsImxpc3Q9CmVuVG8iLCJkYXRhIiwiYWRk
RWxlbWVudFZpZXciLCJ3aXRob3V0Iiwic3RvcExpc3RlbmluZyIsIl9yZW5kZXJOb0VsZW1lbnRz
TD0KZWZ0Iiwibm9FbGVtZW50c0xlZnQiLCJfZWxlbWVudFRvSlNPTiIsImNyZWF0ZUxpc3QiLCJt
ZXNzYWdlIiwiYWx3YXlzIiwiZmFpPQpsIiwieGhyIiwic3RhdHVzIiwiZG9uZSIsImNhbGwiLCJv
biIsIl9lcnJvckhhbmRsZXIiLCJvbmNlIiwiZXJyb3IiLCJjb250ZW49CnQiLCJyZWFkeVN0YXRl
IiwicmVzcG9uc2VKU09OIiwiY2xpY2sgLm1vcmUtaGVscCIsImNsaWNrIC5sZXNzLWhlbHAiLCJj
bGljaz0KIC5tYWluLWhlbHAiLCJjbGljayAuaGVhZGVyIC5hbGVydCBidXR0b24iLCJjbGljayAu
cmVzZXQiLCJjbGljayAuY2xlYXItc2VsPQplY3RlZCIsImNsaWNrIC5jb2xsZWN0aW9uLWVsZW1l
bnRzIiwiZHJhZ292ZXIgLmNvbGxlY3Rpb24tZWxlbWVudHMiLCJkcm9wIC49CmNvbGxlY3Rpb24t
ZWxlbWVudHMiLCJjb2xsZWN0aW9uLWVsZW1lbnQuZHJhZ3N0YXJ0IC5jb2xsZWN0aW9uLWVsZW1l
bnRzIiwiYz0Kb2xsZWN0aW9uLWVsZW1lbnQuZHJhZ2VuZCAgIC5jb2xsZWN0aW9uLWVsZW1lbnRz
IiwiY2hhbmdlIC5jb2xsZWN0aW9uLW5hbWUiPQosImtleWRvd24gLmNvbGxlY3Rpb24tbmFtZSIs
ImNsaWNrIC5jYW5jZWwtY3JlYXRlIiwiY2xpY2sgLmNyZWF0ZS1jb2xsZWN0aW89Cm4iLCJfY2xp
Y2tNb3JlSGVscCIsIl9jbGlja0xlc3NIZWxwIiwiX3RvZ2dsZUhlbHAiLCJhbGVydENsYXNzIiwi
X2hpZGVBbGVydD0KIiwicmVzZXQiLCJjbGVhclNlbGVjdGVkRWxlbWVudHMiLCJfZHJhZ292ZXJF
bGVtZW50cyIsIl9jaGVja0ZvckF1dG9zY3JvbGwiPQosImNsaWVudFkiLCIkbmVhcmVzdCIsIl9n
ZXROZWFyZXN0RWxlbWVudCIsIiRwbGFjZWhvbGRlciIsImJlZm9yZSIsIiRlbGVtZW49CnQiLCJ5
IiwiQVVUT1NDUk9MTF9TUEVFRCIsIm9mZnNldCIsInNjcm9sbFRvcCIsInVwcGVyRGlzdCIsInRv
cCIsImxvd2VyRGlzdD0KIiwib3V0ZXJIZWlnaHQiLCJXSUdHTEUiLCJsaXMiLCJ0b0FycmF5Iiwi
aSIsIiRsaSIsImhhbGZIZWlnaHQiLCJNYXRoIiwiZmxvPQpvciIsIl9kcm9wRWxlbWVudHMiLCJk
cm9wRWZmZWN0IiwiaW5zZXJ0QmVmb3JlIiwiaW5zZXJ0QWZ0ZXIiLCJsYXN0IiwiX3N5bmM9Ck9y
ZGVyVG9Eb20iLCJuZXdFbGVtZW50cyIsImZpbmRXaGVyZSIsImNvbnNvbGUiLCJfZWxlbWVudERy
YWdzdGFydCIsIl9lbGVtZT0KbnREcmFnZW5kIiwiX2NoYW5nZU5hbWUiLCJfZ2V0TmFtZSIsIl9u
YW1lQ2hlY2tGb3JFbnRlciIsImtleUNvZGUiLCJfY2xpY2tDPQpyZWF0ZSIsImVzY2FwZSIsInZh
bCIsImNvbGxlY3Rpb25DcmVhdG9yTW9kYWwiLCJvcHRpb25zIiwiQ3JlYXRvckNsYXNzIiwiZGU9
CmZlcnJlZCIsIkRlZmVycmVkIiwibW9kYWwiLCJHYWxheHkiLCJkZWZhdWx0cyIsInJlamVjdCIs
InJlc29sdmUiLCJ0aXRsZSIsIj0KYm9keSIsImNsb3NpbmdfZXZlbnRzIiwid2luZG93IiwiX2Nv
bGxlY3Rpb25DcmVhdG9yIl0sIm1hcHBpbmdzIjoiQUFDQUEsUUFDPQpJLHlCQUNBLHFCQUNBLGVB
Q0Esa0JBQ0EscUJBQ0EscUJBQ0EscUJBQ0QsU0FBVUMsRUFBTUMsRUFBUUMsRUFBVUMsRUFBVUMs
RUE9CkFhQyxHQTAvQjVELFFBQVNDLEdBQXNCQyxHQUMzQixHQUFJQyxHQUFXRCxFQUFTRSxTQUNw
QkMsRUFBVUMsRUFBNEJILEdBQ2xDST0KLFdBQWEsU0FBVUosRUFBVUssR0FTN0IsTUFSQUwsR0FB
V0EsRUFBU00sSUFBSyxTQUFVQyxHQUMvQixPQUNJQyxHQUFVRCxFQUFRPQpDLEdBQ2xCSCxLQUFV
RSxFQUFRRixLQUVsQkksSUFBNkMsWUFBakNGLEVBQVFHLHFCQUFvQyxNQUFRLFVBR2pFWCxFQUFT
WSxXQUE9CllYLEVBQVUsT0FBUUssS0FHMUQsT0FBT0gsR0E3L0JYLEdBQUlVLEdBQStCQyxTQUFT
QyxLQUFLQyxPQUFRckIsRUFBU3NCLGVBQT0KZ0JELFFBRTlFRSxRQUFjLEtBQ2RDLFVBQWMscUJB
RWRDLFdBQWEsU0FBVUMsR0FDbkJDLEtBQUtkLFFBQVVhLEVBQVdiLFlBQzFCPQpjLEtBQUtDLFNB
QVdGLEVBQVdFLFdBQVksR0FHM0NDLE9BQVMsV0FRTCxNQVBBRixNQUFLRyxJQUNBQyxLQUFNLGtC
QUFtQkosS0E9CkFLZCxRQUFRQyxJQUN0Q2lCLEtBQU0sYUFBYSxHQUNuQkMsS0FBTUwsS0FBS00s
VUFBV3BCLFFBQVNjLEtBQUtkLFdBQ3JDYyxLQT0KQUtDLFVBQ0xELEtBQUtHLElBQUlJLFNBQVUs
WUFFaEJQLE1BSVhNLFNBQVdFLEVBQUVGLFVBQ1QsMEJBQTJCOUIsRUFBSSxtQkFBPQpxQiwrQkFD
aEQsc0JBQ0osT0FDQSw2Q0FBOENBLEVBQUkscUNBQXVDLEtBQ3JGQSxFQUFJLFdBQ1IsYUFDRmlD
LEtBQUssS0FHUEM9CixPQUFTLFNBQVVDLEdBQ2ZYLEtBQUtHLElBQUlTLFlBQWEsV0FBWUQsR0FD
bENYLEtBQUthLFFBQVMsVUFDVkMsT0FBV2QsS0FDWD0KQyxTQUFXRCxLQUFLRyxJQUFJWSxTQUFV
LGVBS3RDQyxRQUFVLFdBQ04sR0FBSUMsR0FBT2pCLEtBQ1BrQixFQUFjbEIsS0FBS0csPQpJQUFJ
Z0IsU0FBU0MsT0FDcENwQixNQUFLRyxJQUFJa0IsU0FBVUMsZUFBaUJKLEdBQWUsT0FBUSxXQUN2
REQsRUFBS0osUUFBUyw9CldBQ1ZDLE9BQVNHLElBRWJBLEVBQUtNLGFBS2JBLFFBQVUsV0FDTnZC
LEtBQUt3QixNQUNMeEIsS0FBS0csSUFBSXNCLFVBR2JDLD0KUUFDSUMsTUFBa0IsU0FDbEJDLGNB
QWtCLGFBQ2xCQyxpQkFBa0IsZ0JBRWxCQyxVQUFrQixhQUNsQkMsUUFBa0IsV0FDbEJDLFNBPQpB
a0IsZ0JBQ2xCQyxLQUFrQixpQkFJdEJDLE9BQVMsU0FBVUMsR0FDZkEsRUFBR0Msa0JBQ0hwQyxL
QUFLVSxPQUFReUIsSUFJakI9CkUsV0FBYSxTQUFVRixHQUNuQkEsRUFBR0Msa0JBQ0hELEVBQUdH
LGdCQUNILElBRUlDLEtBRmlCL0QsRUFBSSxvQ0FBc0MsT0FDMT0KQ0EsRUFBSSxnRUFBa0UsS0FB
TWlDLEtBQU0sSUFDeEYrQixPQUFRaEUsRUFBSSxvQ0FBdUMsSUFBS3dCLEtBQUtkLFFBQVFGLE1B
PQpDaEZ1RCxLQUNBdkMsS0FBS2QsUUFBUUYsS0FBT3VELEVBQ3BCdkMsS0FBS0UsV0FNYnVDLGNB
QWdCLFNBQVVOLEdBQ3RCQSxFQUE9CkdDLGtCQUNIcEMsS0FBS2dCLFdBSVQwQixXQUFhLFNBQVVQ
LEdBQ2ZBLEVBQUdRLGdCQUFpQlIsRUFBS0EsRUFBR1EsZUFDaENSLD0KRUFBR1MsYUFBYUMsY0FB
Z0IsT0FDaENWLEVBQUdTLGFBQWFFLFFBQVMsYUFBY0MsS0FBS0MsVUFBV2hELEtBQUtkLFVBRTVE
YyxLPQpBQUtHLElBQUlJLFNBQVUsWUFDbkJQLEtBQUtHLElBQUlnQixTQUFTTixRQUFTLGdDQUFr
Q2IsUUFJakVpRCxTQUFXLFdBQ1BqRCw9CktBQUtHLElBQUkrQyxZQUFhLFlBQ3RCbEQsS0FBS0cs
SUFBSWdCLFNBQVNOLFFBQVMsOEJBQWdDYixRQUkvRG1ELGNBQWdCLFNBQT0KVWhCLEdBQ3RCbkMs
S0FBS0csSUFBSWdCLFNBQVNOLFFBQVNzQixJQUkvQmlCLFNBQVcsV0FDUCxNQUFPLG9DQVFYQyxF
QUF3QjdEPQosU0FBU0MsS0FBS0MsT0FBUXJCLEVBQVNzQixlQUFnQkQsUUFHdkU0RCxpQkFBbUIv
RCxFQUVuQmdFLGdCQUFtQnBGLEVBQUtxRiw9CjZCQUN4QjNELFVBQW1CLGdFQUduQjRELFlBQW1C
LEVBRW5CQyxtQkFHSTNFLFdBQWEsV0FBWSxLQUFNLElBQUk0RSxXQUFXLCtCQT0KRTlDQyxTQUFh
LGFBRWJDLFNBQWEsYUFFYkMsZUFBa0IsR0FFbEJDLGFBQWtCLDZCQUl0QmpFLFdBQWEsU0FBVUMs
R0FDbkJDLEtBPQpBS2dFLE9BQVEsbUNBQW9DakUsRUFDakQsSUFBSWtFLEdBQVVqRSxJQUNkUSxH
QUFFMEQsS0FBTWxFLEtBQUswRCxrQkFBbUIsU0E9CkFVUyxFQUFPQyxHQUM3Q0QsRUFBUXBFLEVB
QVlxRSxJQUFTRCxFQUM3QkYsRUFBU0csR0FBUUQsSUFJckJGLEVBQVFJLGdCQUFrQj0KdEUsRUFB
V3BCLGFBRXJDcUIsS0FBS3NFLGlCQUNMdEUsS0FBS3VFLGlCQUNMdkUsS0FBS3dFLG1CQUlURixl
QUFpQixXQUVidEUsPQpLQUFLeUUsZUFFTHpFLEtBQUswRSxVQUFZLEtBRWpCMUUsS0FBSzJFLFVB
QVcsR0FLcEJKLGVBQWlCLFdBR2J2RSxLQUFLNEUsbUI9CkFHTDVFLEtBQUs2RSxtQkFFTDdFLEtB
QUs4RSxnQkFHTDlFLEtBQUs2RSxnQkFBa0I3RSxLQUFLcUUsZ0JBQWdCVSxNQUFPLEdBQz0KbkQv
RSxLQUFLZ0Ysb0JBQ0xoRixLQUFLaUYsb0JBQ0xqRixLQUFLa0Ysd0JBQ0xsRixLQUFLbUYsaUJB
SVRILGtCQUFvQixXQU1oPQpCLE1BTEFoRixNQUFLNkUsZ0JBQWdCTyxRQUFTLFNBQVVsRyxHQUMv
QkEsRUFBUW1HLGVBQWdCLFFBQ3pCbkcsRUFBUUMsR0FBS3E9CkIsRUFBRThFLGNBR2hCdEYsS0FB
SzZFLGlCQUloQkksa0JBQW9CLFdBQ2hCLEdBQUloQixHQUFVakUsSUFjZCxPQVpBaUUsR0FBUT0K
VyxtQkFFUjVFLEtBQUs2RSxnQkFBa0I3RSxLQUFLNkUsZ0JBQWdCVSxPQUFRLFNBQVVyRyxHQUMx
RCxHQUFJc0csR0FBVXZCLEVBPQpBUXdCLGtCQUFtQnZHLEVBT3pDLE9BTklzRyxJQUNBdkIsRUFB
UVcsZ0JBQWdCYyxNQUNwQnhHLFFBQVVBLEVBQ1Z5RyxLQUFVSCw9CktBR1ZBLElBRUx4RixLQUFL
NkUsaUJBSWhCWSxrQkFBb0IsU0FBVXZHLEdBQzFCLE1BQXFDLFlBQWpDQSxFQUFRRyxxQkFDRGIs
RT0KQUFJLG9CQUVYVSxFQUFRMEcsUUFBVXhILEVBQU95SCxHQUVkckgsRUFEUGdDLEVBQUVzRixT
QUFVMUgsRUFBTzJILGlCQUFrQjdHPQosRUFBUTBHLE9BQ2xDLDhCQUVKLGdEQUVYMUcsRUFBUThH
LFNBQVc5RyxFQUFRK0csT0FDcEJ6SCxFQUFJLDhCQUVSLE1BSVgwRyw9CnNCQUF3QixXQUNwQixH
QUFJZ0IsR0FBUyxJQUNUQyxFQUFVLEVBQ1ZDLElBQ0pwRyxNQUFLNkUsZ0JBQWdCTyxRQUFTLFNB
QVVsRz0KLEdBRXBDLElBREEsR0FBSW1ILEdBQVduSCxFQUFRRixLQUNoQm9ILEVBQWNmLGVBQWdC
Z0IsSUFHakMsR0FGQUEsRUFBV25ILEVBPQpBUUYsS0FBTyxLQUFPbUgsRUFBVSxJQUMzQ0EsR0FB
VyxFQUNQQSxHQUFXRCxFQUNYLEtBQU0sSUFBSUksT0FBTyw4Q0FHekJwSCw9CkdBQVFGLEtBQU9x
SCxFQUNmRCxFQUFlbEgsRUFBUUYsT0FBUyxLQUt4Q21HLGNBQWdCLGFBU2hCakYsT0FBUyxTQUFV
cUcsRUFBTz0KQyxHQUV0QixNQUFJeEcsTUFBSzZFLGdCQUFnQjRCLE9BQVN6RyxLQUFLeUQsWUFD
NUJ6RCxLQUFLMEcsZUFBZ0JILEVBQU9DLElBPQpHdkN4RyxLQUFLRyxJQUFJd0csUUFBUXRHLEtB
QU1MLEtBQUs0RyxVQUFVQyxRQUN0QzdHLEtBQUs4RyxjQUFlUCxHQUNwQnZHLEs9CkFBSytHLGNB
QWVSLEdBQ3BCdkcsS0FBS2dILGNBQWVULEdBQ3BCdkcsS0FBS2lILHVCQUNMakgsS0FBS2tILEVB
QUcsb0JBQXFCQz0KLFFBQzdCbkgsS0FBS2EsUUFBUyxXQUFZYixNQUNuQkEsT0FLWDBHLGVBQWlC
LFdBVWIsTUFSQTFHLE1BQUtHLElBQUl3RyxRQUFRPQp0RyxLQUFNTCxLQUFLNEcsVUFBVVEsZ0JB
Q2xDQyxTQUFVckgsS0FBSzRFLGdCQUNmakcsU0FBVXFCLEtBQUs2RSxtQkFFVSxrQkE9CkFsQjdF
LE1BQUs2RCxVQUNaN0QsS0FBS2tILEVBQUcsc0JBQXVCSSxPQUVuQ3RILEtBQUthLFFBQVMsV0FB
WWIsTUFDbkJBLE1BST0KWDhHLGNBQWdCLFdBQ1osR0FBSVMsR0FBVXZILEtBQUtrSCxFQUFHLFdB
QVlQLFFBQVF0RyxLQUFNTCxLQUFLNEcsVUFBVVksVUFDPQoxREMsS0FBTSxpQkFBa0JDLFFBQVNS
LEVBQUdsSCxLQUFLNEcsVUFBVWUsZUFLeEQsT0FISTNILE1BQUs0RSxnQkFBZ0I2QixRQUM9CnJC
ekcsS0FBSzRILHdCQUVGTCxHQUlYUixjQUFnQixTQUFVUixHQUN0QixHQUFJc0IsR0FBVTdILEtB
QUtrSCxFQUFHLFdBQVlQLD0KUUFBUXRHLEtBQU1MLEtBQUs0RyxVQUFVa0IsU0FFL0QsT0FEQTlI
LE1BQUsrSCxZQUFheEIsR0FDWHNCLEdBSVhiLGNBQWdCLFdBPQpDWixHQUFJZ0IsR0FBVWhJLEtB
QUtrSCxFQUFHLFdBQVlQLFFBQVF0RyxLQUFNTCxLQUFLNEcsVUFBVXFCLFNBSS9ELE9BSDZCLGs9
CkJBQWxCakksTUFBSzZELFVBQ1o3RCxLQUFLa0gsRUFBRyxzQkFBdUJJLE9BRTVCVSxHQUlYZixx
QkFBdUIsV0FDbkJqSCxLQUFLaz0KSCxFQUFHLG1CQUFvQmdCLGVBQWdCLHNCQUF1QmxJLEtBQUsr
RCxlQUk1RTZELHNCQUF3QixXQUNwQjVILEtBQUttSSxXQUFZbkksPQpLQUFLNEcsVUFBVWhDLGlC
QUFrQnlDLFNBQVVySCxLQUFLNEUsa0JBQW9CLGtCQUl6RndELG1CQUFxQixTQUFVQyxFQUFNQyxH
QUM9CmpDLEdBQUlDLEdBQW1CLG9CQUNWLFVBQVRGLElBQ0FBLEVBQU9ySSxLQUFLa0gsRUFBRyxv
QkFBcUJzQixJQUFLeEksS0FBS2tILD0KRUFBRyw0QkFDakRsSCxLQUFLa0gsRUFBRyxvQkFBcUJD
LFFBQVF6RyxVQUVyQzRILEdBQ0FELEVBQU9BLEdBQVFySSxLQUFLa0gsPQpFQUFHLElBQU1xQixH
QUM3QkYsRUFBS25GLFlBQWFxRixJQUVsQkYsRUFBSzlILFNBQVVnSSxJQUl2QkUsc0JBQXdCLFNB
QVVDLEc9CkFDOUJBLEVBQVdsSSxFQUFFbUksWUFBYUQsSUFBcUIsRUFBVkEsRUFDakNBLElBQ0Ex
SSxLQUFLa0gsRUFBRyxvQkFBcUIwQixLQT0KQU0sWUFBWSxHQUMvQzVJLEtBQUtrSCxFQUFHLHNC
QUF1QnRHLFlBQWEsWUFBWSxLQVNoRWlJLE1BQVEsV0FDSixNQUFPN0ksTUFBPQpLa0gsRUFBRyx5
QkFJbkI0QixxQkFBdUIsV0FDZnRJLEVBQUV1SSxLQUFNL0ksS0FBS3lFLGFBQ2J6RSxLQUFLa0gs
RUFBRyxtREE9CkFvREksT0FFNUR0SCxLQUFLa0gsRUFBRyxtREFBb0Q4QixRQUtwRWpCLFlBQWMs
V0FFVixHQUFJOUQsR0FBVWpFLEtBQ1ZpSixFQT0KQU9DLE9BQVEsVUFDZkwsRUFBUTVFLEVBQVE0
RSxPQUVwQnJJLEdBQUUwRCxLQUFNbEUsS0FBSzhFLGFBQWMsU0FBVTdELEdBQ2pDPQpBLEVBQUtN
LFVBQ0wwQyxFQUFRa0Ysa0JBQW1CbEksS0FRL0JnRCxFQUFRWSxnQkFBZ0JPLFFBQVMsU0FBVWxH
LEdBQ3ZDLEdBQUk9CmtLLEdBQWNuRixFQUFRb0YsbUJBQW9CbkssRUFDOUMrSixHQUFLSyxPQUFR
RixFQUFZakosT0FHN0I4RCxFQUFRNkUsdUJBQ1JELD0KRUFBTWxDLFFBQVEyQyxPQUFRTCxFQUFL
TSxZQUMzQi9JLEVBQUVnSixPQUFRdkYsRUFBUWEsYUFBYyxVQUU1QitELEVBQU1ZLFNBPQpBV1os
RUFBTWEsSUFBSyxjQUM1QmIsRUFBTWEsSUFBSyxlQUFnQixtQkFFM0JiLEVBQU1hLElBQUssZUFB
Z0IsUUFLbkNMLG1CQUE9CnFCLFNBQVVuSyxHQUMzQixHQUFJa0ssR0FBYyxHQUFJcEosTUFBS3NE
LGtCQUd2QnBFLFFBQVVBLEVBQ1ZlLFNBQVVPLEVBQUVtSj0KLElBQUszSixLQUFLeUUsWUFBYXZG
LEVBQVFDLEtBSS9DLE9BRkFhLE1BQUs4RSxhQUFhWSxLQUFNMEQsR0FDeEJwSixLQUFLNEosPQpx
QkFBc0JSLEdBQ3BCQSxHQUlYUSxxQkFBdUIsU0FBVTNJLEdBQzdCLEdBQUlnRCxHQUFVakUsSUFD
ZGlFLEdBQVE0RixTQUFVNUk9CixHQUNkUCxPQUFTLFNBQVVvSixHQUNmLEdBQUk1SyxHQUFVNEss
RUFBS2hKLE9BQU81QixPQUN0QjRLLEdBQUs3SixTQUNMZ0UsRT0KQUFRUSxZQUFhdkYsRUFBUUMs
S0FBTyxRQUU3QjhFLEdBQVFRLFlBQWF2RixFQUFRQyxJQUV4QzhFLEVBQVFwRCxRQUFTLGtCQUFt
PQpCaUosSUFFeEM5SSxRQUFVLFNBQVU4SSxHQUNoQjdGLEVBQVFwRCxRQUFTLG1CQUFvQmlKLE9B
TWpEQyxlQUFpQixhQVFqQlosa0I9CkFBb0IsU0FBVWxJLFNBQ25CakIsTUFBS3lFLFlBQWF4RCxF
QUFLL0IsUUFBUUMsSUFDdENhLEtBQUs4SSx1QkFFTDlJLEtBQUs4RT0KLGFBQWV0RSxFQUFFd0os
UUFBU2hLLEtBQUs4RSxhQUFjN0QsR0FDbERqQixLQUFLaUssY0FBZWhKLElBSXhCaUosc0JBQXdC
LFdBPQpDcEJsSyxLQUFLeUksdUJBQXVCLEdBQzVCekksS0FBS2tILEVBQUcsd0JBQXlCb0MsT0FB
UXRKLEtBQUs0RyxVQUFVdUQsbUJBVzU9CkRDLGVBQWlCLFNBQVVsTCxHQUV2QixNQUFPQSxJQU1Y
bUwsV0FBYSxTQUFVckwsR0FDbkIsSUFBS2dCLEtBQUs2RSxnQkFBZ0I0Qj0KLE9BQVEsQ0FDOUIs
R0FBSTZELEdBQVU5TCxFQUFJLG9DQUF1QyxJQUt6RCxPQUpBOEwsSUFBVyx1REFBeUQ5TCxFQUFJ
LFVBQWEsPQpRQUNyRjhMLEdBQVc5TCxFQUFJLE1BQ2Y4TCxHQUFXLGdEQUFrRDlMLEVBQUksY0FB
aUIsWUFDbEZ3QixNQUFLbUksV0FBWW1DLEc9CkFJckIsR0FBSXJHLEdBQVVqRSxLQUNWckIsRUFB
V3FCLEtBQUs2RSxnQkFBZ0I1RixJQUFLLFNBQVVDLEdBQzNDLE1BQU8rRSxHQT0KQVFtRyxlQUFn
QmxMLElBSXZDLE9BREErRSxHQUFRVSxVQUFXLEVBQ1pWLEVBQVFsRixXQUFZSixFQUFVSyxHQUNo
Q3VMLE9BQVEsPQpXQUNMdEcsRUFBUVUsVUFBVyxJQUV0QjZGLEtBQU0sU0FBVUMsRUFBS0MsR0FD
bEJ6RyxFQUFRcEQsUUFBUyxTQUNiNEosSUFBVUE9CixFQUNWQyxPQUFVQSxFQUNWSixRQUFVOUws
RUFBSSx3REFHckJtTSxLQUFNLFNBQVVwSSxFQUFVK0gsRUFBU0csR0FDaEN4RyxFQT0KQVFwRCxR
QUFTLHFCQUFzQjBCLEVBQVUrSCxFQUFTRyxHQUMxRHhHLEVBQVFELE9BQVEscUJBQXNCekIsR0FD
TixrQkFBckIwQixHPQpBQVFMLFVBQ2ZLLEVBQVFMLFNBQVNnSCxLQUFNNUssS0FBTXVDLEVBQVUr
SCxFQUFTRyxNQU9oRWpHLGdCQUFrQixXQXdCZCxNQXY9CkJBeEUsTUFBSzZLLEdBQUksUUFBUzdL
LEtBQUs4SyxlQUV2QjlLLEtBQUsrSyxLQUFNLFdBQVksV0FDbkIvSyxLQUFLYSxRQUFTLD0KbUJB
QW9CYixRQUd0Q0EsS0FBSzZLLEdBQUksa0JBQW1CLFdBQ3hCN0ssS0FBSzhJLHlCQUdUOUksS0FB
SzZLLEdBQUksbUJBQW9CPQosU0FBVWYsR0FDbkMsR0FBSTVLLEdBQVU0SyxFQUFLaEosT0FBTzVC
LE9BQzFCYyxNQUFLbUosa0JBQW1CVyxFQUFLaEosUUFFN0I9CmQsS0FBSzZFLGdCQUFrQnJFLEVB
QUV3SixRQUFTaEssS0FBSzZFLGdCQUFpQjNGLEdBQ25EYyxLQUFLNkUsZ0JBQWdCNEIsUUFDdD0K
QnpHLEtBQUtrSywwQkFPTmxLLE1BSVg4SyxjQUFnQixTQUFVaEIsR0FDdEI5SixLQUFLZ0wsTUFB
T2xCLEVBRVosSUFBSTdGLEdBPQpBVWpFLElBRWQsSUFESWlMLFFBQVVuQixFQUFLUSxTQUFXOUws
RUFBSSxxQkFDOUJzTCxFQUFLVyxJQUFLLENBQ1YsR0FBSUEsR0E9CkFNWCxFQUFLVyxJQUNYSCxF
QUFVUixFQUFLUSxPQUVmVyxVQURtQixJQUFuQlIsRUFBSVMsWUFBbUMsSUFBZlQsRUFBSUMsT0FD
aj0KQixLQUFPbE0sRUFBSSxvREFDbEJBLEVBQUksZ0NBQ0RpTSxFQUFJVSxhQUNBLGVBQWlCcEks
S0FBS0MsVUFBV3lILEVBQUlVLGNBPQpBaUIsU0FFdEQsS0FBT2IsRUFHMUJyRyxFQUFRa0UsV0FB
WThDLFFBQVMsaUJBR2pDdkosUUFFSTBKLG1CQUFrQyxpQkFDbENDLG09CkJBQWtDLGlCQUNsQ0Ms
bUJBQWtDLGNBQ2xDQyw4QkFBa0MsYUFFbENDLGVBQWtDLFFBQ2xDQyx3QkFBa0Msd0JBR2xDQyw2
QkFBaz0KQyx3QkFLbENDLGdDQUFrQyxvQkFDbENDLDRCQUFrQyxnQkFHbENDLG9EQUFzRCxvQkFD
dERDLG9EQUFzRCxrQkFHdERDLDBCQUFrPQpDLGNBQ2xDQywyQkFBa0MscUJBQ2xDQyx1QkFBa0Ms
V0FDRCxrQkFBbEJqTSxNQUFLNkQsVUFDWjdELEtBQUs2RCxTQUFTK0csS0E9CkFNNUssT0FHNUJr
TSwyQkFBa0MsZ0JBS3RDQyxlQUFpQixTQUFVaEssR0FDdkJBLEVBQUdDLGtCQUNIcEMsS0FBS2tI
LEVBQUcsYz0KQUFlM0csU0FBVSxZQUNqQ1AsS0FBS2tILEVBQUcsY0FBZThCLFFBRzNCb0QsZUFB
aUIsU0FBVWpLLEdBQ3ZCQSxFQUFHQyxrQkFDPQpIcEMsS0FBS2tILEVBQUcsY0FBZWhFLFlBQWEs
WUFDcENsRCxLQUFLa0gsRUFBRyxjQUFlSSxRQUczQitFLFlBQWMsU0FBVWxLLEc9CkFDcEJBLEVB
QUdDLGtCQUNIcEMsS0FBS2tILEVBQUcsY0FBZXRHLFlBQWEsWUFDcENaLEtBQUtrSCxFQUFHLGNB
QWV2RyxVQUkzQj0Kd0gsV0FBYSxTQUFVbUMsRUFBU2dDLEdBQzVCQSxFQUFhQSxHQUFjLGVBQzNC
dE0sS0FBS2tILEVBQUcsY0FBZThCLE9BQ3ZCaEosPQpLQUFLa0gsRUFBRyxrQkFDSDlHLEtBQU0s
UUFBUywyQkFBNEJHLFNBQVUrTCxHQUFhaEYsT0FDbEVHLEtBQU0sa0JBQW1CcEgsS0E9CkFNaUss
SUFHeENpQyxXQUFhLFdBQ1R2TSxLQUFLa0gsRUFBRyxjQUFlSSxPQUN2QnRILEtBQUtrSCxFQUFH
LGtCQUFtQjhCLFFBSz0KL0J3RCxNQUFRLFdBQ0p4TSxLQUFLc0UsaUJBQ0x0RSxLQUFLdUUsaUJB
Q0x2RSxLQUFLRSxVQUlUdU0sc0JBQXdCLFdBQ3BCek0sPQpLQUFLa0gsRUFBRyw0Q0FBNkNoRSxZ
QUFhLFlBQ2xFbEQsS0FBS2tILEVBQUcsbURBQW9EOEIsUUFZaEUwRCxrQkFBb0IsU0FBVXY9Ckss
R0FFMUJBLEVBQUdHLGdCQUVILElBQUl1RyxHQUFRN0ksS0FBSzZJLE9BQ2pCN0ksTUFBSzJNLG9C
QUFxQjlELEVBQU8xRyxFQT0KQUdRLGNBQWNpSyxRQUNsRCxJQUFJQyxHQUFXN00sS0FBSzhNLG1C
QUFvQjNLLEVBQUdRLGNBQWNpSyxRQUd6RDVNLE1BQUtrSCxFPQpBQUcsNkJBQThCekYsUUFDdEMs
SUFBSXNMLEdBQWU3RixFQUFHLCtDQUNqQjJGLEdBQVM5RCxPQUdWOEQsRUFBU0csT0FBUUQsR0E9
CkZqQmxFLEVBQU1TLE9BQVF5RCxJQU90Qkosb0JBQXNCLFNBQVVNLEVBQVVDLEdBQ3RDLEdBQUlD
LEdBQW1CLEVBQ25CQyxFQUFTSD0KLEVBQVNHLFNBQ2xCQyxFQUFZSixFQUFTSSxZQUNyQkMsRUFB
WUosRUFBSUUsRUFBT0csSUFDdkJDLEVBQWNKLEVBQU9HLElBQU1OPQosRUFBU1EsY0FBa0JQLENB
Q3RESSxJQUFhLEdBQUtBLEVBQVl0TixLQUFLOEQsZUFDbkNtSixFQUFTSSxVQUFXQSxFQUFZRixH
QUM9CnpCSyxHQUFhLEdBQUtBLEVBQVl4TixLQUFLOEQsZ0JBQzFDbUosRUFBU0ksVUFBV0EsRUFB
WUYsSUFPeENMLG1CQUFxQixTQUFVST0KLEdBRzNCLElBQUssR0FGRFEsR0FBUyxFQUNUQyxFQUFN
M04sS0FBS2tILEVBQUcsOENBQStDMEcsVUFDeERDLEVBQUUsRUFBR0EsPQpFQUFFRixFQUFJbEgs
T0FBUW9ILElBQUssQ0FDN0IsR0FBSUMsR0FBTTVHLEVBQUd5RyxFQUFJRSxJQUNiTixFQUFNTyxF
QUFJViw9ClNBQVNHLElBQ25CUSxFQUFhQyxLQUFLQyxNQUFPSCxFQUFJTCxjQUFnQixHQUFNQyxD
QUN2RCxJQUFJSCxFQUFNUSxFQUFhYixHQT0KQXdCQSxFQUFuQkssRUFBTVEsRUFDOUIsTUFBT0Qs
R0FHZixNQUFPNUcsTUFJWGdILGNBQWdCLFNBQVUvTCxHQUNsQkEsRUFBR1EsPQpnQkFBaUJSLEVB
QUtBLEVBQUdRLGVBRWhDUixFQUFHRyxpQkFDSEgsRUFBR1MsYUFBYXVMLFdBQWEsTUFHN0IsSUFB
SXRCLEdBQVc9CjdNLEtBQUs4TSxtQkFBb0IzSyxFQUFHeUssUUFTM0MsT0FSSUMsR0FBUzlELE9B
Q1QvSSxLQUFLMEUsVUFBVTBKLGFBQWN2QixHQT0KRzdCN00sS0FBSzBFLFVBQVUySixZQUFhck8s
S0FBS2tILEVBQUcsNENBQTZDb0gsUUFHckZ0TyxLQUFLdU8sbUJBQ0UsR0FJWEEsPQpnQkFBa0Is
V0FDZCxHQUFJdEssR0FBVWpFLEtBQ1Z3TyxJQUVKeE8sTUFBS2tILEVBQUcsNENBQTZDaEQsS0FB
TSxXQUN2RCxHQUE9CkkvRSxHQUFLK0gsRUFBR2xILE1BQU9JLEtBQU0sbUJBQ3JCbEIsRUFBVXNC
LEVBQUVpTyxVQUFXeEssRUFBUVksaUJBQW1CMUYsRz0KQUFJQSxHQUN0REQsR0FDQXNQLEVBQVk5
SSxLQUFNeEcsR0FFbEJ3UCxRQUFRMUQsTUFBTyxvQkFBcUI3TCxLQUc1Q2EsS0FBSzZFPQosZ0JB
QWtCMkosRUFDdkJ4TyxLQUFLK0gsZUFJVDRHLGtCQUFvQixTQUFVeE0sRUFBSWpELEdBRTlCQSxF
QUFRd0IsUUFBUSxHQUM9CmhCVixLQUFLMEUsVUFBWTFFLEtBQUtrSCxFQUFHLHNEQUk3QjBILGdC
QUFrQixXQUNkMUgsRUFBRyw2QkFBOEJ6RixTQUNqQ3pCLD0KS0FBSzBFLFVBQVksTUFLckJtSyxZ
QUFjLFdBQ1Y3TyxLQUFLb0ksbUJBQW9CLFNBQVVwSSxLQUFLOE8sYUFJNUNDLG1CQUFxQixTPQpB
QVU1TSxHQUNSLEtBQWZBLEVBQUc2TSxTQUFtQmhQLEtBQUsyRSxVQUMzQjNFLEtBQUtpUCxnQkFL
YkgsU0FBVyxXQUNQLE1BQU89CnRPLEdBQUUwTyxPQUFRbFAsS0FBS2tILEVBQUcsb0JBQXFCaUks
UUFJbERGLGFBQWUsV0FDWCxHQUFJalEsR0FBT2dCLEtBQUs4Tz0KLFVBQ1g5UCxHQUVPZ0IsS0FB
SzJFLFVBQ2IzRSxLQUFLcUssV0FBWXJMLEdBRmpCZ0IsS0FBS29JLG1CQUFvQixTQVdqQ3hCLFdB
PQpFSUMsS0FBT3JHLEVBQUVGLFVBQ0wsOENBQ0EseURBQ0EsK0NBQ0ZHLEtBQUssS0FHUCtHLE9B
QVNoSCxFQUFFRixVQUNQLHFDQUM9CkksbURBQW9EOUIsRUFBSSxhQUFlLE9BQ3ZFLDZCQUNJLG1E
QUFvREEsRUFBSSxRQUFVLE9BQ3RFLFNBQ0osU0FDQSx3Q0FDSSw0RD0KQUNJLFVBQVdBLEVBQUks
NEJBQThCLHdDQUNqRCxzQ0FDSixVQUNGaUMsS0FBSyxLQUdQcUgsT0FBU3RILEVBQUVGLFVBQ1As
NkNBPQpDSSwrQ0FDSSxVQUFXOUIsRUFBSSxvQ0FBc0MsS0FDckRBLEVBQUksY0FDUixPQUNBLHdE
QUNJLFVBQVdBLEVBQUksbUNBQXFDLEs9CkFDcERBLEVBQUksa0JBQ1IsT0FDSixTQUNBLDhEQUNB
LFVBQ0ZpQyxLQUFLLEtBR1B3SCxPQUFTekgsRUFBRUYsVUFDUCxpQ0FDST0KLHNCQUNJLDBEQUNJ
LGdCQUFpQjlCLEVBQUksd0NBQTBDLE9BQ25FLGtEQUFtREEsRUFBSSxRQUFVLFVBQ3JFLFNBQ0os
U0FFQSxnPQpEQUNJLHdDQUNJLG1EQUFvREEsRUFBSSxVQUFZLFlBQ3BFLDhDQUNJLDBFQUNNQSxF
QUFJLHlDQUNKLCtCQUNOLFlBQ0EseUNBQ009CixtQkFBb0JBLEVBQUksK0JBQWlDLFlBQ3pELG1C
QUFvQkEsRUFBSSw2Q0FBK0MsWUFDN0UsUUFDSixTQUNKLFNBRUEsd0NBQ0kscT0KREFBc0RBLEVB
QUksZUFBaUIsWUFDL0UsU0FDSixVQUNGaUMsS0FBSyxLQUdQa0gsWUFBY25ILEVBQUVGLFVBQ1os
TUFBTzlCLEdBPQpDSCxvR0FDQSxzR0FDQSxpRUFDRmlDLEtBQU0sS0FBTyxPQUNmLE9BQ0ksT0FB
UWpDLEdBQ0osOENBQ0EscUVBQ0ZpQyxLQUFNLEs9CkFBTyxRQUNmLE9BQVFqQyxHQUNKLG1FQUNB
LHVFQUNGaUMsS0FBTSxLQUFPLFFBQ2YsT0FBUWpDLEdBQ0osK0ZBQ0Esc0dBQ0EseT0KRUFDQSxt
RUFDRmlDLEtBQU0sS0FBTyxRQUNmLE9BQVFqQyxHQUNKLG9HQUNBLGtCQUNGaUMsS0FBTSxLQUFP
LFFBQ2YsT0FBUWpDPQosR0FDSix3RkFDRmlDLEtBQU0sS0FBTyxRQUNuQixjQUNBLE1BQU9qQyxH
QUNILDRGQUNBLGdFQUNGaUMsS0FBTSxLQUFPLFFBQ2o9CkJBLEtBQUssS0FHUG1FLGdCQUFrQnBF
LEVBQUVGLFVBQ2hCOUIsRUFBSSxtRUFDSixtREFDSSxtRUFDSixrQkFDRmlDLEtBQUssSz0KQUdQ
MEosZUFBaUIzSixFQUFFRixVQUNmLHdDQUNJOUIsRUFBSSxzQkFDSkEsRUFBSSxzQkFBd0IsOENB
QStDQSxFQUFJLGNBQWdCPQosUUFDbkcsU0FDRmlDLEtBQUssS0FHUDJHLGVBQWlCNUcsRUFBRUYs
VUFDZix3Q0FDSSwyREFDSSwrQkFDSSxrQ0FDSTlCLEVBQUk9CixrRUFBb0UsSUFDeEUsbURBQ0ks
bUVBQ0osaUJBQ0osNkNBQ0lBLEVBQUksNkJBQStCLElBQ3ZDLFVBQ0EsU0FDQUEsRUFBSSxxRD0K
QUF1RCxLQUMzREEsRUFBSSxvQkFDSixzREFBdURBLEVBQUksVUFBWSxRQUN2RUEsRUFBSSw2QkFB
K0IsSUFDdkMsVUFDSixTQUNKPQosU0FDQSx3Q0FDSSxnREFDSSx3Q0FDSSxtREFBb0RBLEVBQUks
VUFBWSxZQUV4RSxTQUNKLFNBQ0osVUFDRmlDLEtBQUssTUFLWDI9CkMsU0FBVyxXQUFZLE1BQU8s
MkJBUzlCZ00sRUFBeUIsU0FBa0N6USxFQUFVMFEsRUFBU0MsR0FFOUUsR0FFSXJMLEdBRkFzTCxF
QT0KQVdyRyxPQUFPc0csV0FDbEJDLEVBQVFDLE9BQU9ELE9BQVMsR0FBTW5SLEdBQVNtQixJQTJC
M0MsT0F4QkE0UCxHQUFVN08sRUFBPQpFbVAsU0FBVU4sT0FDbEIxUSxTQUFjQSxFQUNka0YsU0FB
YyxXQUNWNEwsRUFBTXpHLE9BQ051RyxFQUFTSyxPQUFRLGNBRXJCaE09CixTQUFjLFNBQVVLLEVB
QVMxQixHQUM3QmtOLEVBQU16RyxPQUNOdUcsRUFBU00sUUFBU3ROLE1BSTFCMEIsRUFBVSxHQUFJ
cUwsRz0KQUFjRCxHQUM1QkksRUFBTW5JLE1BQ0Z3SSxNQUFVVCxFQUFRUyxPQUFTdFIsRUFBSSx1
QkFDL0J1UixLQUFVOUwsRUFBUTlELElBPQpDbEJpQixNQUFVLE1BQ1ZxSSxPQUFVLGNBQ1Z1Ryxn
QkFBZ0IsSUFFcEIvTCxFQUFRL0QsU0FDUitQLE9BQU9DLG1CQUFxQmpNLEU9CkFHckJzTCxHQUlQ
elEsRUFBNkIsU0FBc0NILEVBQVUwUSxHQUc3RSxNQUZBQSxHQUFVQSxNQUNWQSxFQUFRUyxNQUFR
dFIsRUFBST0KLCtDQUNiNFEsRUFBd0J6USxFQUFVMFEsRUFBU2hNLEdBMkJsRCxRQUNJOUQsNkJB
QThCQSxFQUM5QjhELHNCQUE4QkEsRUFFOUIrPQpMLHVCQUE4QkEsRUFDOUJ0USwyQkFBOEJBLEVB
QzlCTCxxQkFBOEJBIn0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit7InZlcnNpb24iOjMs
ImZpbGUiOiJsaXN0LWNvbGxlY3Rpb24tY3JlYXRvci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4v
c3JjLz0KbXZjL2NvbGxlY3Rpb24vbGlzdC1jb2xsZWN0aW9uLWNyZWF0b3IuanMiXSwibmFtZXMi
OlsiZGVmaW5lIiwiSERDQSIsIlNUQVRFPQpTIiwiQkFTRV9NVkMiLCJVSV9NT0RBTCIsIm5hdHVy
YWxTb3J0IiwiX2wiLCJjcmVhdGVMaXN0Q29sbGVjdGlvbiIsImNvbnRlbnQ9CnMiLCJlbGVtZW50
cyIsInRvSlNPTiIsInByb21pc2UiLCJsaXN0Q29sbGVjdGlvbkNyZWF0b3JNb2RhbCIsImNyZWF0
aW9uRm4iLD0KIm5hbWUiLCJtYXAiLCJlbGVtZW50IiwiaWQiLCJzcmMiLCJoaXN0b3J5X2NvbnRl
bnRfdHlwZSIsImNyZWF0ZUhEQ0EiLCJEYXRhPQpzZXRDb2xsZWN0aW9uRWxlbWVudFZpZXciLCJC
YWNrYm9uZSIsIlZpZXciLCJleHRlbmQiLCJMb2dnYWJsZU1peGluIiwidGFnTmE9Cm1lIiwiY2xh
c3NOYW1lIiwiaW5pdGlhbGl6ZSIsImF0dHJpYnV0ZXMiLCJ0aGlzIiwic2VsZWN0ZWQiLCJyZW5k
ZXIiLCIkZWwiLD0KImF0dHIiLCJodG1sIiwidGVtcGxhdGUiLCJhZGRDbGFzcyIsIl8iLCJqb2lu
Iiwic2VsZWN0IiwidG9nZ2xlIiwidG9nZ2xlQ2xhPQpzcyIsInRyaWdnZXIiLCJzb3VyY2UiLCJo
YXNDbGFzcyIsImRpc2NhcmQiLCJ2aWV3IiwicGFyZW50V2lkdGgiLCJwYXJlbnQiLCI9CndpZHRo
IiwiYW5pbWF0ZSIsIm1hcmdpbi1yaWdodCIsImRlc3Ryb3kiLCJvZmYiLCJyZW1vdmUiLCJldmVu
dHMiLCJjbGljayIsIj0KY2xpY2sgLm5hbWUiLCJjbGljayAuZGlzY2FyZCIsImRyYWdzdGFydCIs
ImRyYWdlbmQiLCJkcmFnb3ZlciIsImRyb3AiLCJfY2xpPQpjayIsImV2Iiwic3RvcFByb3BhZ2F0
aW9uIiwiX2NsaWNrTmFtZSIsInByZXZlbnREZWZhdWx0IiwicmVzcG9uc2UiLCJwcm9tcHQ9CiIs
Il9jbGlja0Rpc2NhcmQiLCJfZHJhZ3N0YXJ0Iiwib3JpZ2luYWxFdmVudCIsImRhdGFUcmFuc2Zl
ciIsImVmZmVjdEFsbG93ZT0KZCIsInNldERhdGEiLCJKU09OIiwic3RyaW5naWZ5IiwiX2RyYWdl
bmQiLCJyZW1vdmVDbGFzcyIsIl9zZW5kVG9QYXJlbnQiLCJ0PQpvU3RyaW5nIiwiTGlzdENvbGxl
Y3Rpb25DcmVhdG9yIiwiZWxlbWVudFZpZXdDbGFzcyIsImNvbGxlY3Rpb25DbGFzcyIsIkhpc3Q9
Cm9yeUxpc3REYXRhc2V0Q29sbGVjdGlvbiIsIm1pbkVsZW1lbnRzIiwiZGVmYXVsdEF0dHJpYnV0
ZXMiLCJUeXBlRXJyb3IiLCJvbj0KY3JlYXRlIiwib25jYW5jZWwiLCJhdXRvc2Nyb2xsRGlzdCIs
ImhpZ2hsaWdodENsciIsIm1ldHJpYyIsImNyZWF0b3IiLCJlYWNoPQoiLCJ2YWx1ZSIsImtleSIs
ImluaXRpYWxFbGVtZW50cyIsIl9pbnN0YW5jZVNldFVwIiwiX2VsZW1lbnRzU2V0VXAiLCJfc2V0
VXA9CkJlaGF2aW9ycyIsInNlbGVjdGVkSWRzIiwiJGRyYWdnaW5nIiwiYmxvY2tpbmciLCJpbnZh
bGlkRWxlbWVudHMiLCJ3b3JraW5nRT0KbGVtZW50cyIsImVsZW1lbnRWaWV3cyIsInNsaWNlIiwi
X2Vuc3VyZUVsZW1lbnRJZHMiLCJfdmFsaWRhdGVFbGVtZW50cyIsIl9tPQphbmdsZUR1cGxpY2F0
ZU5hbWVzIiwiX3NvcnRFbGVtZW50cyIsImZvckVhY2giLCJoYXNPd25Qcm9wZXJ0eSIsInVuaXF1
ZUlkIiw9CiJmaWx0ZXIiLCJwcm9ibGVtIiwiX2lzRWxlbWVudEludmFsaWQiLCJwdXNoIiwidGV4
dCIsInN0YXRlIiwiT0siLCJjb250YWlucz0KIiwiTk9UX1JFQURZX1NUQVRFUyIsImRlbGV0ZWQi
LCJwdXJnZWQiLCJTQUZFVFkiLCJjb3VudGVyIiwiZXhpc3RpbmdOYW1lcyIsPQoiY3Vyck5hbWUi
LCJFcnJvciIsInNwZWVkIiwiY2FsbGJhY2siLCJsZW5ndGgiLCJfcmVuZGVySW52YWxpZCIsImVt
cHR5IiwidGU9Cm1wbGF0ZXMiLCJtYWluIiwiX3JlbmRlckhlYWRlciIsIl9yZW5kZXJNaWRkbGUi
LCJfcmVuZGVyRm9vdGVyIiwiX2FkZFBsdWdpbj0KQ29tcG9uZW50cyIsIiQiLCJmb2N1cyIsImlu
dmFsaWRJbml0aWFsIiwicHJvYmxlbXMiLCJzaG93IiwiJGhlYWRlciIsImhlYWRlPQpyIiwiZmlu
ZCIsInByZXBlbmQiLCJoZWxwQ29udGVudCIsIl9pbnZhbGlkRWxlbWVudHNBbGVydCIsIiRtaWRk
bGUiLCJtaWRkbGU9CiIsIl9yZW5kZXJMaXN0IiwiJGZvb3RlciIsImZvb3RlciIsImhvdmVyaGln
aGxpZ2h0IiwiX3Nob3dBbGVydCIsIl92YWxpZGF0aT0Kb25XYXJuaW5nIiwid2hhdCIsImNsZWFy
IiwiVkFMSURBVElPTl9DTEFTUyIsImFkZCIsIl9kaXNhYmxlTmFtZUFuZENyZWF0ZSIsPQoiZGlz
YWJsZSIsImlzVW5kZWZpbmVkIiwicHJvcCIsIiRsaXN0IiwiX3JlbmRlckNsZWFyU2VsZWN0ZWQi
LCJzaXplIiwiaGlkZSI9CiwiJHRtcCIsImpRdWVyeSIsInJlbW92ZUVsZW1lbnRWaWV3IiwiZWxl
bWVudFZpZXciLCJfY3JlYXRlRWxlbWVudFZpZXciLCJhcD0KcGVuZCIsImNoaWxkcmVuIiwiaW52
b2tlIiwiaGVpZ2h0IiwiY3NzIiwiaGFzIiwiX2xpc3RlblRvRWxlbWVudFZpZXciLCJsaXN0PQpl
blRvIiwiZGF0YSIsImFkZEVsZW1lbnRWaWV3Iiwid2l0aG91dCIsInN0b3BMaXN0ZW5pbmciLCJf
cmVuZGVyTm9FbGVtZW50c0w9CmVmdCIsIm5vRWxlbWVudHNMZWZ0IiwiX2VsZW1lbnRUb0pTT04i
LCJjcmVhdGVMaXN0IiwibWVzc2FnZSIsImFsd2F5cyIsImZhaT0KbCIsInhociIsInN0YXR1cyIs
ImRvbmUiLCJjYWxsIiwib24iLCJfZXJyb3JIYW5kbGVyIiwib25jZSIsImVycm9yIiwiY29udGVu
PQp0IiwicmVhZHlTdGF0ZSIsInJlc3BvbnNlSlNPTiIsImNsaWNrIC5tb3JlLWhlbHAiLCJjbGlj
ayAubGVzcy1oZWxwIiwiY2xpY2s9CiAubWFpbi1oZWxwIiwiY2xpY2sgLmhlYWRlciAuYWxlcnQg
YnV0dG9uIiwiY2xpY2sgLnJlc2V0IiwiY2xpY2sgLmNsZWFyLXNlbD0KZWN0ZWQiLCJjbGljayAu
Y29sbGVjdGlvbi1lbGVtZW50cyIsImRyYWdvdmVyIC5jb2xsZWN0aW9uLWVsZW1lbnRzIiwiZHJv
cCAuPQpjb2xsZWN0aW9uLWVsZW1lbnRzIiwiY29sbGVjdGlvbi1lbGVtZW50LmRyYWdzdGFydCAu
Y29sbGVjdGlvbi1lbGVtZW50cyIsImM9Cm9sbGVjdGlvbi1lbGVtZW50LmRyYWdlbmQgICAuY29s
bGVjdGlvbi1lbGVtZW50cyIsImNoYW5nZSAuY29sbGVjdGlvbi1uYW1lIj0KLCJrZXlkb3duIC5j
b2xsZWN0aW9uLW5hbWUiLCJjbGljayAuY2FuY2VsLWNyZWF0ZSIsImNsaWNrIC5jcmVhdGUtY29s
bGVjdGlvPQpuIiwiX2NsaWNrTW9yZUhlbHAiLCJfY2xpY2tMZXNzSGVscCIsIl90b2dnbGVIZWxw
IiwiYWxlcnRDbGFzcyIsIl9oaWRlQWxlcnQ9CiIsInJlc2V0IiwiY2xlYXJTZWxlY3RlZEVsZW1l
bnRzIiwiX2RyYWdvdmVyRWxlbWVudHMiLCJfY2hlY2tGb3JBdXRvc2Nyb2xsIj0KLCJjbGllbnRZ
IiwiJG5lYXJlc3QiLCJfZ2V0TmVhcmVzdEVsZW1lbnQiLCIkcGxhY2Vob2xkZXIiLCJiZWZvcmUi
LCIkZWxlbWVuPQp0IiwieSIsIkFVVE9TQ1JPTExfU1BFRUQiLCJvZmZzZXQiLCJzY3JvbGxUb3Ai
LCJ1cHBlckRpc3QiLCJ0b3AiLCJsb3dlckRpc3Q9CiIsIm91dGVySGVpZ2h0IiwiV0lHR0xFIiwi
bGlzIiwidG9BcnJheSIsImkiLCIkbGkiLCJoYWxmSGVpZ2h0IiwiTWF0aCIsImZsbz0Kb3IiLCJf
ZHJvcEVsZW1lbnRzIiwiZHJvcEVmZmVjdCIsImluc2VydEJlZm9yZSIsImluc2VydEFmdGVyIiwi
bGFzdCIsIl9zeW5jPQpPcmRlclRvRG9tIiwibmV3RWxlbWVudHMiLCJmaW5kV2hlcmUiLCJjb25z
b2xlIiwiX2VsZW1lbnREcmFnc3RhcnQiLCJfZWxlbWU9Cm50RHJhZ2VuZCIsIl9jaGFuZ2VOYW1l
IiwiX2dldE5hbWUiLCJfbmFtZUNoZWNrRm9yRW50ZXIiLCJrZXlDb2RlIiwiX2NsaWNrQz0KcmVh
dGUiLCJlc2NhcGUiLCJ2YWwiLCJjb2xsZWN0aW9uQ3JlYXRvck1vZGFsIiwib3B0aW9ucyIsIkNy
ZWF0b3JDbGFzcyIsImRlPQpmZXJyZWQiLCJEZWZlcnJlZCIsIm1vZGFsIiwiR2FsYXh5IiwiZGVm
YXVsdHMiLCJyZWplY3QiLCJyZXNvbHZlIiwidGl0bGUiLCI9CmJvZHkiLCJjbG9zaW5nX2V2ZW50
cyIsIndpbmRvdyIsIl9jb2xsZWN0aW9uQ3JlYXRvciJdLCJtYXBwaW5ncyI6IkFBQ0FBLFFBQz0K
SSx5QkFDQSxxQkFDQSxlQUNBLGtCQUNBLHFCQUNBLHFCQUNBLHFCQUNELFNBQVVDLEVBQU1DLEVB
QVFDLEVBQVVDLEVBQVVDLEVBPQpBYUMsR0EwL0I1RCxRQUFTQyxHQUFzQkMsR0FDM0IsR0FBSUMs
R0FBV0QsRUFBU0UsU0FDcEJDLEVBQVVDLEVBQTRCSCxHQUNsQ0k9CixXQUFhLFNBQVVKLEVBQVVL
LEdBUzdCLE1BUkFMLEdBQVdBLEVBQVNNLElBQUssU0FBVUMsR0FDL0IsT0FDSUMsR0FBVUQsRUFB
UT0KQyxHQUNsQkgsS0FBVUUsRUFBUUYsS0FFbEJJLElBQTZDLFlBQWpDRixFQUFRRyxxQkFBb0Ms
TUFBUSxVQUdqRVgsRUFBU1ksV0FBPQpZWCxFQUFVLE9BQVFLLEtBRzFELE9BQU9ILEdBNy9CWCxH
QUFJVSxHQUErQkMsU0FBU0MsS0FBS0MsT0FBUXJCLEVBQVNzQixlQUE9CmdCRCxRQUU5RUUsUUFB
YyxLQUNkQyxVQUFjLHFCQUVkQyxXQUFhLFNBQVVDLEdBQ25CQyxLQUFLZCxRQUFVYSxFQUFXYixZ
QUMxQj0KYyxLQUFLQyxTQUFXRixFQUFXRSxXQUFZLEdBRzNDQyxPQUFTLFdBUUwsTUFQQUYsTUFB
S0csSUFDQUMsS0FBTSxrQkFBbUJKLEtBPQpBS2QsUUFBUUMsSUFDdENpQixLQUFNLGFBQWEsR0FD
bkJDLEtBQU1MLEtBQUtNLFVBQVdwQixRQUFTYyxLQUFLZCxXQUNyQ2MsS0E9CkFLQyxVQUNMRCxL
QUFLRyxJQUFJSSxTQUFVLFlBRWhCUCxNQUlYTSxTQUFXRSxFQUFFRixVQUNULDBCQUEyQjlCLEVB
QUksbUJBQT0KcUIsK0JBQ2hELHNCQUNKLE9BQ0EsNkNBQThDQSxFQUFJLHFDQUF1QyxLQUNyRkEs
RUFBSSxXQUNSLGFBQ0ZpQyxLQUFLLEtBR1BDPQosT0FBUyxTQUFVQyxHQUNmWCxLQUFLRyxJQUFJ
UyxZQUFhLFdBQVlELEdBQ2xDWCxLQUFLYSxRQUFTLFVBQ1ZDLE9BQVdkLEtBQ1g9CkMsU0FBV0Qs
S0FBS0csSUFBSVksU0FBVSxlQUt0Q0MsUUFBVSxXQUNOLEdBQUlDLEdBQU9qQixLQUNQa0IsRUFB
Y2xCLEtBQUtHLD0KSUFBSWdCLFNBQVNDLE9BQ3BDcEIsTUFBS0csSUFBSWtCLFNBQVVDLGVBQWlC
SixHQUFlLE9BQVEsV0FDdkRELEVBQUtKLFFBQVMsPQpXQUNWQyxPQUFTRyxJQUViQSxFQUFLTSxh
QUtiQSxRQUFVLFdBQ052QixLQUFLd0IsTUFDTHhCLEtBQUtHLElBQUlzQixVQUdiQyw9ClFBQ0lD
LE1BQWtCLFNBQ2xCQyxjQUFrQixhQUNsQkMsaUJBQWtCLGdCQUVsQkMsVUFBa0IsYUFDbEJDLFFB
QWtCLFdBQ2xCQyxTQT0KQWtCLGdCQUNsQkMsS0FBa0IsaUJBSXRCQyxPQUFTLFNBQVVDLEdBQ2ZB
LEVBQUdDLGtCQUNIcEMsS0FBS1UsT0FBUXlCLElBSWpCPQpFLFdBQWEsU0FBVUYsR0FDbkJBLEVB
QUdDLGtCQUNIRCxFQUFHRyxnQkFDSCxJQUVJQyxLQUZpQi9ELEVBQUksb0NBQXNDLE9BQzE9CkNB
LEVBQUksZ0VBQWtFLEtBQU1pQyxLQUFNLElBQ3hGK0IsT0FBUWhFLEVBQUksb0NBQXVDLElBQUt3
QixLQUFLZCxRQUFRRixNQT0KQ2hGdUQsS0FDQXZDLEtBQUtkLFFBQVFGLEtBQU91RCxFQUNwQnZD
LEtBQUtFLFdBTWJ1QyxjQUFnQixTQUFVTixHQUN0QkEsRUFBPQpHQyxrQkFDSHBDLEtBQUtnQixX
QUlUMEIsV0FBYSxTQUFVUCxHQUNmQSxFQUFHUSxnQkFBaUJSLEVBQUtBLEVBQUdRLGVBQ2hDUiw9
CkVBQUdTLGFBQWFDLGNBQWdCLE9BQ2hDVixFQUFHUyxhQUFhRSxRQUFTLGFBQWNDLEtBQUtDLFVB
QVdoRCxLQUFLZCxVQUU1RGMsSz0KQUFLRyxJQUFJSSxTQUFVLFlBQ25CUCxLQUFLRyxJQUFJZ0Is
U0FBU04sUUFBUyxnQ0FBa0NiLFFBSWpFaUQsU0FBVyxXQUNQakQsPQpLQUFLRyxJQUFJK0MsWUFB
YSxZQUN0QmxELEtBQUtHLElBQUlnQixTQUFTTixRQUFTLDhCQUFnQ2IsUUFJL0RtRCxjQUFnQixT
QUE9ClVoQixHQUN0Qm5DLEtBQUtHLElBQUlnQixTQUFTTixRQUFTc0IsSUFJL0JpQixTQUFXLFdB
Q1AsTUFBTyxvQ0FRWEMsRUFBd0I3RD0KLFNBQVNDLEtBQUtDLE9BQVFyQixFQUFTc0IsZUFBZ0JE
LFFBR3ZFNEQsaUJBQW1CL0QsRUFFbkJnRSxnQkFBbUJwRixFQUFLcUYsPQo2QkFDeEIzRCxVQUFt
QixnRUFHbkI0RCxZQUFtQixFQUVuQkMsbUJBR0kzRSxXQUFhLFdBQVksS0FBTSxJQUFJNEUsV0FB
VywrQkE9CkU5Q0MsU0FBYSxhQUViQyxTQUFhLGFBRWJDLGVBQWtCLEdBRWxCQyxhQUFrQiw2QkFJ
dEJqRSxXQUFhLFNBQVVDLEdBQ25CQyxLQT0KQUtnRSxPQUFRLG1DQUFvQ2pFLEVBQ2pELElBQUlr
RSxHQUFVakUsSUFDZFEsR0FBRTBELEtBQU1sRSxLQUFLMEQsa0JBQW1CLFNBPQpBVVMsRUFBT0Ms
R0FDN0NELEVBQVFwRSxFQUFZcUUsSUFBU0QsRUFDN0JGLEVBQVNHLEdBQVFELElBSXJCRixFQUFR
SSxnQkFBa0I9CnRFLEVBQVdwQixhQUVyQ3FCLEtBQUtzRSxpQkFDTHRFLEtBQUt1RSxpQkFDTHZF
LEtBQUt3RSxtQkFJVEYsZUFBaUIsV0FFYnRFLD0KS0FBS3lFLGVBRUx6RSxLQUFLMEUsVUFBWSxL
QUVqQjFFLEtBQUsyRSxVQUFXLEdBS3BCSixlQUFpQixXQUdidkUsS0FBSzRFLG1CPQpBR0w1RSxL
QUFLNkUsbUJBRUw3RSxLQUFLOEUsZ0JBR0w5RSxLQUFLNkUsZ0JBQWtCN0UsS0FBS3FFLGdCQUFn
QlUsTUFBTyxHQUM9Cm5EL0UsS0FBS2dGLG9CQUNMaEYsS0FBS2lGLG9CQUNMakYsS0FBS2tGLHdC
QUNMbEYsS0FBS21GLGlCQUlUSCxrQkFBb0IsV0FNaD0KQixNQUxBaEYsTUFBSzZFLGdCQUFnQk8s
UUFBUyxTQUFVbEcsR0FDL0JBLEVBQVFtRyxlQUFnQixRQUN6Qm5HLEVBQVFDLEdBQUtxPQpCLEVB
QUU4RSxjQUdoQnRGLEtBQUs2RSxpQkFJaEJJLGtCQUFvQixXQUNoQixHQUFJaEIsR0FBVWpFLElB
Y2QsT0FaQWlFLEdBQVE9ClcsbUJBRVI1RSxLQUFLNkUsZ0JBQWtCN0UsS0FBSzZFLGdCQUFnQlUs
T0FBUSxTQUFVckcsR0FDMUQsR0FBSXNHLEdBQVV2QixFQT0KQVF3QixrQkFBbUJ2RyxFQU96QyxP
QU5Jc0csSUFDQXZCLEVBQVFXLGdCQUFnQmMsTUFDcEJ4RyxRQUFVQSxFQUNWeUcsS0FBVUgsPQpL
QUdWQSxJQUVMeEYsS0FBSzZFLGlCQUloQlksa0JBQW9CLFNBQVV2RyxHQUMxQixNQUFxQyxZQUFq
Q0EsRUFBUUcscUJBQ0RiLEU9CkFBSSxvQkFFWFUsRUFBUTBHLFFBQVV4SCxFQUFPeUgsR0FFZHJI
LEVBRFBnQyxFQUFFc0YsU0FBVTFILEVBQU8ySCxpQkFBa0I3Rz0KLEVBQVEwRyxPQUNsQyw4QkFF
SixnREFFWDFHLEVBQVE4RyxTQUFXOUcsRUFBUStHLE9BQ3BCekgsRUFBSSw4QkFFUixNQUlYMEcs
PQpzQkFBd0IsV0FDcEIsR0FBSWdCLEdBQVMsSUFDVEMsRUFBVSxFQUNWQyxJQUNKcEcsTUFBSzZF
LGdCQUFnQk8sUUFBUyxTQUFVbEc9CixHQUVwQyxJQURBLEdBQUltSCxHQUFXbkgsRUFBUUYsS0FD
aEJvSCxFQUFjZixlQUFnQmdCLElBR2pDLEdBRkFBLEVBQVduSCxFQT0KQVFGLEtBQU8sS0FBT21I
LEVBQVUsSUFDM0NBLEdBQVcsRUFDUEEsR0FBV0QsRUFDWCxLQUFNLElBQUlJLE9BQU8sOENBR3pC
cEgsPQpHQUFRRixLQUFPcUgsRUFDZkQsRUFBZWxILEVBQVFGLE9BQVMsS0FLeENtRyxjQUFnQixh
QVNoQmpGLE9BQVMsU0FBVXFHLEVBQU89CkMsR0FFdEIsTUFBSXhHLE1BQUs2RSxnQkFBZ0I0QixP
QUFTekcsS0FBS3lELFlBQzVCekQsS0FBSzBHLGVBQWdCSCxFQUFPQyxJQT0KR3ZDeEcsS0FBS0cs
SUFBSXdHLFFBQVF0RyxLQUFNTCxLQUFLNEcsVUFBVUMsUUFDdEM3RyxLQUFLOEcsY0FBZVAsR0FD
cEJ2RyxLPQpBQUsrRyxjQUFlUixHQUNwQnZHLEtBQUtnSCxjQUFlVCxHQUNwQnZHLEtBQUtpSCx1
QkFDTGpILEtBQUtrSCxFQUFHLG9CQUFxQkM9CixRQUM3Qm5ILEtBQUthLFFBQVMsV0FBWWIsTUFD
bkJBLE9BS1gwRyxlQUFpQixXQVViLE1BUkExRyxNQUFLRyxJQUFJd0csUUFBUT0KdEcsS0FBTUws
S0FBSzRHLFVBQVVRLGdCQUNsQ0MsU0FBVXJILEtBQUs0RSxnQkFDZmpHLFNBQVVxQixLQUFLNkUs
bUJBRVUsa0JBPQpBbEI3RSxNQUFLNkQsVUFDWjdELEtBQUtrSCxFQUFHLHNCQUF1QkksT0FFbkN0
SCxLQUFLYSxRQUFTLFdBQVliLE1BQ25CQSxNQUk9Clg4RyxjQUFnQixXQUNaLEdBQUlTLEdBQVV2
SCxLQUFLa0gsRUFBRyxXQUFZUCxRQUFRdEcsS0FBTUwsS0FBSzRHLFVBQVVZLFVBQz0KMURDLEtB
QU0saUJBQWtCQyxRQUFTUixFQUFHbEgsS0FBSzRHLFVBQVVlLGVBS3hELE9BSEkzSCxNQUFLNEUs
Z0JBQWdCNkIsUUFDPQpyQnpHLEtBQUs0SCx3QkFFRkwsR0FJWFIsY0FBZ0IsU0FBVVIsR0FDdEIs
R0FBSXNCLEdBQVU3SCxLQUFLa0gsRUFBRyxXQUFZUCw9ClFBQVF0RyxLQUFNTCxLQUFLNEcsVUFB
VWtCLFNBRS9ELE9BREE5SCxNQUFLK0gsWUFBYXhCLEdBQ1hzQixHQUlYYixjQUFnQixXQT0KQ1os
R0FBSWdCLEdBQVVoSSxLQUFLa0gsRUFBRyxXQUFZUCxRQUFRdEcsS0FBTUwsS0FBSzRHLFVBQVVx
QixTQUkvRCxPQUg2QixrPQpCQUFsQmpJLE1BQUs2RCxVQUNaN0QsS0FBS2tILEVBQUcsc0JBQXVC
SSxPQUU1QlUsR0FJWGYscUJBQXVCLFdBQ25CakgsS0FBS2s9CkgsRUFBRyxtQkFBb0JnQixlQUFn
QixzQkFBdUJsSSxLQUFLK0QsZUFJNUU2RCxzQkFBd0IsV0FDcEI1SCxLQUFLbUksV0FBWW5JLD0K
S0FBSzRHLFVBQVVoQyxpQkFBa0J5QyxTQUFVckgsS0FBSzRFLGtCQUFvQixrQkFJekZ3RCxtQkFB
cUIsU0FBVUMsRUFBTUMsR0FDPQpqQyxHQUFJQyxHQUFtQixvQkFDVixVQUFURixJQUNBQSxFQUFP
ckksS0FBS2tILEVBQUcsb0JBQXFCc0IsSUFBS3hJLEtBQUtrSCw9CkVBQUcsNEJBQ2pEbEgsS0FB
S2tILEVBQUcsb0JBQXFCQyxRQUFRekcsVUFFckM0SCxHQUNBRCxFQUFPQSxHQUFRckksS0FBS2tI
LD0KRUFBRyxJQUFNcUIsR0FDN0JGLEVBQUtuRixZQUFhcUYsSUFFbEJGLEVBQUs5SCxTQUFVZ0ks
SUFJdkJFLHNCQUF3QixTQUFVQyxHPQpBQzlCQSxFQUFXbEksRUFBRW1JLFlBQWFELElBQXFCLEVB
QVZBLEVBQ2pDQSxJQUNBMUksS0FBS2tILEVBQUcsb0JBQXFCMEIsS0E9CkFNLFlBQVksR0FDL0M1
SSxLQUFLa0gsRUFBRyxzQkFBdUJ0RyxZQUFhLFlBQVksS0FTaEVpSSxNQUFRLFdBQ0osTUFBTzdJ
LE1BQT0KS2tILEVBQUcseUJBSW5CNEIscUJBQXVCLFdBQ2Z0SSxFQUFFdUksS0FBTS9JLEtBQUt5
RSxhQUNiekUsS0FBS2tILEVBQUcsbURBPQpBb0RJLE9BRTVEdEgsS0FBS2tILEVBQUcsbURBQW9E
OEIsUUFLcEVqQixZQUFjLFdBRVYsR0FBSTlELEdBQVVqRSxLQUNWaUosRUE9CkFPQyxPQUFRLFVB
Q2ZMLEVBQVE1RSxFQUFRNEUsT0FFcEJySSxHQUFFMEQsS0FBTWxFLEtBQUs4RSxhQUFjLFNBQVU3
RCxHQUNqQz0KQSxFQUFLTSxVQUNMMEMsRUFBUWtGLGtCQUFtQmxJLEtBUS9CZ0QsRUFBUVksZ0JB
QWdCTyxRQUFTLFNBQVVsRyxHQUN2QyxHQUFJPQprSyxHQUFjbkYsRUFBUW9GLG1CQUFvQm5LLEVB
QzlDK0osR0FBS0ssT0FBUUYsRUFBWWpKLE9BRzdCOEQsRUFBUTZFLHVCQUNSRCw9CkVBQU1sQyxR
QUFRMkMsT0FBUUwsRUFBS00sWUFDM0IvSSxFQUFFZ0osT0FBUXZGLEVBQVFhLGFBQWMsVUFFNUIr
RCxFQUFNWSxTQT0KQVdaLEVBQU1hLElBQUssY0FDNUJiLEVBQU1hLElBQUssZUFBZ0IsbUJBRTNC
YixFQUFNYSxJQUFLLGVBQWdCLFFBS25DTCxtQkFBPQpxQixTQUFVbkssR0FDM0IsR0FBSWtLLEdB
QWMsR0FBSXBKLE1BQUtzRCxrQkFHdkJwRSxRQUFVQSxFQUNWZSxTQUFVTyxFQUFFbUo9CixJQUFL
M0osS0FBS3lFLFlBQWF2RixFQUFRQyxLQUkvQyxPQUZBYSxNQUFLOEUsYUFBYVksS0FBTTBELEdB
Q3hCcEosS0FBSzRKLD0KcUJBQXNCUixHQUNwQkEsR0FJWFEscUJBQXVCLFNBQVUzSSxHQUM3QixH
QUFJZ0QsR0FBVWpFLElBQ2RpRSxHQUFRNEYsU0FBVTVJPQosR0FDZFAsT0FBUyxTQUFVb0osR0FD
ZixHQUFJNUssR0FBVTRLLEVBQUtoSixPQUFPNUIsT0FDdEI0SyxHQUFLN0osU0FDTGdFLEU9CkFB
UVEsWUFBYXZGLEVBQVFDLEtBQU8sUUFFN0I4RSxHQUFRUSxZQUFhdkYsRUFBUUMsSUFFeEM4RSxF
QUFRcEQsUUFBUyxrQkFBbT0KQmlKLElBRXhDOUksUUFBVSxTQUFVOEksR0FDaEI3RixFQUFRcEQs
UUFBUyxtQkFBb0JpSixPQU1qREMsZUFBaUIsYUFRakJaLGtCPQpBQW9CLFNBQVVsSSxTQUNuQmpC
LE1BQUt5RSxZQUFheEQsRUFBSy9CLFFBQVFDLElBQ3RDYSxLQUFLOEksdUJBRUw5SSxLQUFLOEU9
CixhQUFldEUsRUFBRXdKLFFBQVNoSyxLQUFLOEUsYUFBYzdELEdBQ2xEakIsS0FBS2lLLGNBQWVo
SixJQUl4QmlKLHNCQUF3QixXQT0KQ3BCbEssS0FBS3lJLHVCQUF1QixHQUM1QnpJLEtBQUtrSCxF
QUFHLHdCQUF5Qm9DLE9BQVF0SixLQUFLNEcsVUFBVXVELG1CQVc1PQpEQyxlQUFpQixTQUFVbEws
R0FFdkIsTUFBT0EsSUFNWG1MLFdBQWEsU0FBVXJMLEdBQ25CLElBQUtnQixLQUFLNkUsZ0JBQWdC
NEI9CixPQUFRLENBQzlCLEdBQUk2RCxHQUFVOUwsRUFBSSxvQ0FBdUMsSUFLekQsT0FKQThMLElB
QVcsdURBQXlEOUwsRUFBSSxVQUFhLD0KUUFDckY4TCxHQUFXOUwsRUFBSSxNQUNmOEwsR0FBVyxn
REFBa0Q5TCxFQUFJLGNBQWlCLFlBQ2xGd0IsTUFBS21JLFdBQVltQyxHPQpBSXJCLEdBQUlyRyxH
QUFVakUsS0FDVnJCLEVBQVdxQixLQUFLNkUsZ0JBQWdCNUYsSUFBSyxTQUFVQyxHQUMzQyxNQUFP
K0UsR0E9CkFRbUcsZUFBZ0JsTCxJQUl2QyxPQURBK0UsR0FBUVUsVUFBVyxFQUNaVixFQUFRbEYs
V0FBWUosRUFBVUssR0FDaEN1TCxPQUFRLD0KV0FDTHRHLEVBQVFVLFVBQVcsSUFFdEI2RixLQUFN
LFNBQVVDLEVBQUtDLEdBQ2xCekcsRUFBUXBELFFBQVMsU0FDYjRKLElBQVVBPQosRUFDVkMsT0FB
VUEsRUFDVkosUUFBVTlMLEVBQUksd0RBR3JCbU0sS0FBTSxTQUFVcEksRUFBVStILEVBQVNHLEdB
Q2hDeEcsRUE9CkFRcEQsUUFBUyxxQkFBc0IwQixFQUFVK0gsRUFBU0csR0FDMUR4RyxFQUFRRCxP
QUFRLHFCQUFzQnpCLEdBQ04sa0JBQXJCMEIsRz0KQUFRTCxVQUNmSyxFQUFRTCxTQUFTZ0gsS0FB
TTVLLEtBQU11QyxFQUFVK0gsRUFBU0csTUFPaEVqRyxnQkFBa0IsV0F3QmQsTUF2PQpCQXhFLE1B
QUs2SyxHQUFJLFFBQVM3SyxLQUFLOEssZUFFdkI5SyxLQUFLK0ssS0FBTSxXQUFZLFdBQ25CL0ss
S0FBS2EsUUFBUyw9Cm1CQUFvQmIsUUFHdENBLEtBQUs2SyxHQUFJLGtCQUFtQixXQUN4QjdLLEtB
QUs4SSx5QkFHVDlJLEtBQUs2SyxHQUFJLG1CQUFvQj0KLFNBQVVmLEdBQ25DLEdBQUk1SyxHQUFV
NEssRUFBS2hKLE9BQU81QixPQUMxQmMsTUFBS21KLGtCQUFtQlcsRUFBS2hKLFFBRTdCPQpkLEtB
QUs2RSxnQkFBa0JyRSxFQUFFd0osUUFBU2hLLEtBQUs2RSxnQkFBaUIzRixHQUNuRGMsS0FBSzZF
LGdCQUFnQjRCLFFBQ3Q9CkJ6RyxLQUFLa0ssMEJBT05sSyxNQUlYOEssY0FBZ0IsU0FBVWhCLEdB
Q3RCOUosS0FBS2dMLE1BQU9sQixFQUVaLElBQUk3RixHQT0KQVVqRSxJQUVkLElBRElpTCxRQUFV
bkIsRUFBS1EsU0FBVzlMLEVBQUkscUJBQzlCc0wsRUFBS1csSUFBSyxDQUNWLEdBQUlBLEdBPQpB
TVgsRUFBS1csSUFDWEgsRUFBVVIsRUFBS1EsT0FFZlcsVUFEbUIsSUFBbkJSLEVBQUlTLFlBQW1D
LElBQWZULEVBQUlDLE9BQ2o9CkIsS0FBT2xNLEVBQUksb0RBQ2xCQSxFQUFJLGdDQUNEaU0sRUFB
SVUsYUFDQSxlQUFpQnBJLEtBQUtDLFVBQVd5SCxFQUFJVSxjQT0KQWlCLFNBRXRELEtBQU9iLEVB
RzFCckcsRUFBUWtFLFdBQVk4QyxRQUFTLGlCQUdqQ3ZKLFFBRUkwSixtQkFBa0MsaUJBQ2xDQyxt
PQpCQUFrQyxpQkFDbENDLG1CQUFrQyxjQUNsQ0MsOEJBQWtDLGFBRWxDQyxlQUFrQyxRQUNsQ0Ms
d0JBQWtDLHdCQUdsQ0MsNkJBQWs9CkMsd0JBS2xDQyxnQ0FBa0Msb0JBQ2xDQyw0QkFBa0MsZ0JB
R2xDQyxvREFBc0Qsb0JBQ3REQyxvREFBc0Qsa0JBR3REQywwQkFBaz0KQyxjQUNsQ0MsMkJBQWtD
LHFCQUNsQ0MsdUJBQWtDLFdBQ0Qsa0JBQWxCak0sTUFBSzZELFVBQ1o3RCxLQUFLNkQsU0FBUytH
LEtBPQpBTTVLLE9BRzVCa00sMkJBQWtDLGdCQUt0Q0MsZUFBaUIsU0FBVWhLLEdBQ3ZCQSxFQUFH
QyxrQkFDSHBDLEtBQUtrSCxFQUFHLGM9CkFBZTNHLFNBQVUsWUFDakNQLEtBQUtrSCxFQUFHLGNB
QWU4QixRQUczQm9ELGVBQWlCLFNBQVVqSyxHQUN2QkEsRUFBR0Msa0JBQz0KSHBDLEtBQUtrSCxF
QUFHLGNBQWVoRSxZQUFhLFlBQ3BDbEQsS0FBS2tILEVBQUcsY0FBZUksUUFHM0IrRSxZQUFjLFNB
QVVsSyxHPQpBQ3BCQSxFQUFHQyxrQkFDSHBDLEtBQUtrSCxFQUFHLGNBQWV0RyxZQUFhLFlBQ3BD
WixLQUFLa0gsRUFBRyxjQUFldkcsVUFJM0I9CndILFdBQWEsU0FBVW1DLEVBQVNnQyxHQUM1QkEs
RUFBYUEsR0FBYyxlQUMzQnRNLEtBQUtrSCxFQUFHLGNBQWU4QixPQUN2QmhKLD0KS0FBS2tILEVB
QUcsa0JBQ0g5RyxLQUFNLFFBQVMsMkJBQTRCRyxTQUFVK0wsR0FBYWhGLE9BQ2xFRyxLQUFNLGtC
QUFtQnBILEtBPQpBTWlLLElBR3hDaUMsV0FBYSxXQUNUdk0sS0FBS2tILEVBQUcsY0FBZUksT0FD
dkJ0SCxLQUFLa0gsRUFBRyxrQkFBbUI4QixRQUs9Ci9Cd0QsTUFBUSxXQUNKeE0sS0FBS3NFLGlC
QUNMdEUsS0FBS3VFLGlCQUNMdkUsS0FBS0UsVUFJVHVNLHNCQUF3QixXQUNwQnpNLD0KS0FBS2tI
LEVBQUcsNENBQTZDaEUsWUFBYSxZQUNsRWxELEtBQUtrSCxFQUFHLG1EQUFvRDhCLFFBWWhFMEQs
a0JBQW9CLFNBQVV2PQpLLEdBRTFCQSxFQUFHRyxnQkFFSCxJQUFJdUcsR0FBUTdJLEtBQUs2SSxP
QUNqQjdJLE1BQUsyTSxvQkFBcUI5RCxFQUFPMUcsRUE9CkFHUSxjQUFjaUssUUFDbEQsSUFBSUMs
R0FBVzdNLEtBQUs4TSxtQkFBb0IzSyxFQUFHUSxjQUFjaUssUUFHekQ1TSxNQUFLa0gsRT0KQUFH
LDZCQUE4QnpGLFFBQ3RDLElBQUlzTCxHQUFlN0YsRUFBRywrQ0FDakIyRixHQUFTOUQsT0FHVjhE
LEVBQVNHLE9BQVFELEdBPQpGakJsRSxFQUFNUyxPQUFReUQsSUFPdEJKLG9CQUFzQixTQUFVTSxF
QUFVQyxHQUN0QyxHQUFJQyxHQUFtQixFQUNuQkMsRUFBU0g9CixFQUFTRyxTQUNsQkMsRUFBWUos
RUFBU0ksWUFDckJDLEVBQVlKLEVBQUlFLEVBQU9HLElBQ3ZCQyxFQUFjSixFQUFPRyxJQUFNTj0K
LEVBQVNRLGNBQWtCUCxDQUN0REksSUFBYSxHQUFLQSxFQUFZdE4sS0FBSzhELGVBQ25DbUosRUFB
U0ksVUFBV0EsRUFBWUYsR0FDPQp6QkssR0FBYSxHQUFLQSxFQUFZeE4sS0FBSzhELGdCQUMxQ21K
LEVBQVNJLFVBQVdBLEVBQVlGLElBT3hDTCxtQkFBcUIsU0FBVUk9CixHQUczQixJQUFLLEdBRkRR
LEdBQVMsRUFDVEMsRUFBTTNOLEtBQUtrSCxFQUFHLDhDQUErQzBHLFVBQ3hEQyxFQUFFLEVBQUdB
LD0KRUFBRUYsRUFBSWxILE9BQVFvSCxJQUFLLENBQzdCLEdBQUlDLEdBQU01RyxFQUFHeUcsRUFB
SUUsSUFDYk4sRUFBTU8sRUFBSVYsPQpTQUFTRyxJQUNuQlEsRUFBYUMsS0FBS0MsTUFBT0gsRUFB
SUwsY0FBZ0IsR0FBTUMsQ0FDdkQsSUFBSUgsRUFBTVEsRUFBYWIsR0E9CkF3QkEsRUFBbkJLLEVB
QU1RLEVBQzlCLE1BQU9ELEdBR2YsTUFBTzVHLE1BSVhnSCxjQUFnQixTQUFVL0wsR0FDbEJBLEVB
QUdRLD0KZ0JBQWlCUixFQUFLQSxFQUFHUSxlQUVoQ1IsRUFBR0csaUJBQ0hILEVBQUdTLGFBQWF1
TCxXQUFhLE1BRzdCLElBQUl0QixHQUFXPQo3TSxLQUFLOE0sbUJBQW9CM0ssRUFBR3lLLFFBUzND
LE9BUklDLEdBQVM5RCxPQUNUL0ksS0FBSzBFLFVBQVUwSixhQUFjdkIsR0E9Ckc3QjdNLEtBQUsw
RSxVQUFVMkosWUFBYXJPLEtBQUtrSCxFQUFHLDRDQUE2Q29ILFFBR3JGdE8sS0FBS3VPLG1CQUNF
LEdBSVhBLD0KZ0JBQWtCLFdBQ2QsR0FBSXRLLEdBQVVqRSxLQUNWd08sSUFFSnhPLE1BQUtrSCxF
QUFHLDRDQUE2Q2hELEtBQU0sV0FDdkQsR0FBPQpJL0UsR0FBSytILEVBQUdsSCxNQUFPSSxLQUFN
LG1CQUNyQmxCLEVBQVVzQixFQUFFaU8sVUFBV3hLLEVBQVFZLGlCQUFtQjFGLEc9CkFBSUEsR0FD
dERELEdBQ0FzUCxFQUFZOUksS0FBTXhHLEdBRWxCd1AsUUFBUTFELE1BQU8sb0JBQXFCN0wsS0FH
NUNhLEtBQUs2RT0KLGdCQUFrQjJKLEVBQ3ZCeE8sS0FBSytILGVBSVQ0RyxrQkFBb0IsU0FBVXhN
LEVBQUlqRCxHQUU5QkEsRUFBUXdCLFFBQVEsR0FDPQpoQlYsS0FBSzBFLFVBQVkxRSxLQUFLa0gs
RUFBRyxzREFJN0IwSCxnQkFBa0IsV0FDZDFILEVBQUcsNkJBQThCekYsU0FDakN6Qiw9CktBQUsw
RSxVQUFZLE1BS3JCbUssWUFBYyxXQUNWN08sS0FBS29JLG1CQUFvQixTQUFVcEksS0FBSzhPLGFB
STVDQyxtQkFBcUIsUz0KQUFVNU0sR0FDUixLQUFmQSxFQUFHNk0sU0FBbUJoUCxLQUFLMkUsVUFD
M0IzRSxLQUFLaVAsZ0JBS2JILFNBQVcsV0FDUCxNQUFPPQp0TyxHQUFFME8sT0FBUWxQLEtBQUtr
SCxFQUFHLG9CQUFxQmlJLFFBSWxERixhQUFlLFdBQ1gsR0FBSWpRLEdBQU9nQixLQUFLOE89CixV
QUNYOVAsR0FFT2dCLEtBQUsyRSxVQUNiM0UsS0FBS3FLLFdBQVlyTCxHQUZqQmdCLEtBQUtvSSxt
QkFBb0IsU0FXakN4QixXQT0KRUlDLEtBQU9yRyxFQUFFRixVQUNMLDhDQUNBLHlEQUNBLCtDQUNG
RyxLQUFLLEtBR1ArRyxPQUFTaEgsRUFBRUYsVUFDUCxxQ0FDPQpJLG1EQUFvRDlCLEVBQUksYUFB
ZSxPQUN2RSw2QkFDSSxtREFBb0RBLEVBQUksUUFBVSxPQUN0RSxTQUNKLFNBQ0Esd0NBQ0ksNEQ9
CkFDSSxVQUFXQSxFQUFJLDRCQUE4Qix3Q0FDakQsc0NBQ0osVUFDRmlDLEtBQUssS0FHUHFILE9B
QVN0SCxFQUFFRixVQUNQLDZDQT0KQ0ksK0NBQ0ksVUFBVzlCLEVBQUksb0NBQXNDLEtBQ3JEQSxF
QUFJLGNBQ1IsT0FDQSx3REFDSSxVQUFXQSxFQUFJLG1DQUFxQyxLPQpBQ3BEQSxFQUFJLGtCQUNS
LE9BQ0osU0FDQSw4REFDQSxVQUNGaUMsS0FBSyxLQUdQd0gsT0FBU3pILEVBQUVGLFVBQ1AsaUNB
Q0k9CixzQkFDSSwwREFDSSxnQkFBaUI5QixFQUFJLHdDQUEwQyxPQUNuRSxrREFBbURBLEVBQUks
UUFBVSxVQUNyRSxTQUNKLFNBRUEsZz0KREFDSSx3Q0FDSSxtREFBb0RBLEVBQUksVUFBWSxZQUNw
RSw4Q0FDSSwwRUFDTUEsRUFBSSx5Q0FDSiwrQkFDTixZQUNBLHlDQUNNPQosbUJBQW9CQSxFQUFJ
LCtCQUFpQyxZQUN6RCxtQkFBb0JBLEVBQUksNkNBQStDLFlBQzdFLFFBQ0osU0FDSixTQUVBLHdD
QUNJLHE9CkRBQXNEQSxFQUFJLGVBQWlCLFlBQy9FLFNBQ0osVUFDRmlDLEtBQUssS0FHUGtILFlB
QWNuSCxFQUFFRixVQUNaLE1BQU85QixHQT0KQ0gsb0dBQ0Esc0dBQ0EsaUVBQ0ZpQyxLQUFNLEtB
QU8sT0FDZixPQUNJLE9BQVFqQyxHQUNKLDhDQUNBLHFFQUNGaUMsS0FBTSxLPQpBQU8sUUFDZixP
QUFRakMsR0FDSixtRUFDQSx1RUFDRmlDLEtBQU0sS0FBTyxRQUNmLE9BQVFqQyxHQUNKLCtGQUNB
LHNHQUNBLHk9CkVBQ0EsbUVBQ0ZpQyxLQUFNLEtBQU8sUUFDZixPQUFRakMsR0FDSixvR0FDQSxr
QkFDRmlDLEtBQU0sS0FBTyxRQUNmLE9BQVFqQz0KLEdBQ0osd0ZBQ0ZpQyxLQUFNLEtBQU8sUUFD
bkIsY0FDQSxNQUFPakMsR0FDSCw0RkFDQSxnRUFDRmlDLEtBQU0sS0FBTyxRQUNqPQpCQSxLQUFL
LEtBR1BtRSxnQkFBa0JwRSxFQUFFRixVQUNoQjlCLEVBQUksbUVBQ0osbURBQ0ksbUVBQ0osa0JB
Q0ZpQyxLQUFLLEs9CkFHUDBKLGVBQWlCM0osRUFBRUYsVUFDZix3Q0FDSTlCLEVBQUksc0JBQ0pB
LEVBQUksc0JBQXdCLDhDQUErQ0EsRUFBSSxjQUFnQj0KLFFBQ25HLFNBQ0ZpQyxLQUFLLEtBR1Ay
RyxlQUFpQjVHLEVBQUVGLFVBQ2Ysd0NBQ0ksMkRBQ0ksK0JBQ0ksa0NBQ0k5QixFQUFJPQosa0VB
QW9FLElBQ3hFLG1EQUNJLG1FQUNKLGlCQUNKLDZDQUNJQSxFQUFJLDZCQUErQixJQUN2QyxVQUNB
LFNBQ0FBLEVBQUkscUQ9CkFBdUQsS0FDM0RBLEVBQUksb0JBQ0osc0RBQXVEQSxFQUFJLFVBQVks
UUFDdkVBLEVBQUksNkJBQStCLElBQ3ZDLFVBQ0osU0FDSj0KLFNBQ0Esd0NBQ0ksZ0RBQ0ksd0NB
Q0ksbURBQW9EQSxFQUFJLFVBQVksWUFFeEUsU0FDSixTQUNKLFVBQ0ZpQyxLQUFLLE1BS1gyPQpD
LFNBQVcsV0FBWSxNQUFPLDJCQVM5QmdNLEVBQXlCLFNBQWtDelEsRUFBVTBRLEVBQVNDLEdBRTlF
LEdBRUlyTCxHQUZBc0wsRUE9CkFXckcsT0FBT3NHLFdBQ2xCQyxFQUFRQyxPQUFPRCxPQUFTLEdB
QU1uUixHQUFTbUIsSUEyQjNDLE9BeEJBNFAsR0FBVTdPLEVBQT0KRW1QLFNBQVVOLE9BQ2xCMVEs
U0FBY0EsRUFDZGtGLFNBQWMsV0FDVjRMLEVBQU16RyxPQUNOdUcsRUFBU0ssT0FBUSxjQUVyQmhN
PQosU0FBYyxTQUFVSyxFQUFTMUIsR0FDN0JrTixFQUFNekcsT0FDTnVHLEVBQVNNLFFBQVN0TixN
QUkxQjBCLEVBQVUsR0FBSXFMLEc9CkFBY0QsR0FDNUJJLEVBQU1uSSxNQUNGd0ksTUFBVVQsRUFB
UVMsT0FBU3RSLEVBQUksdUJBQy9CdVIsS0FBVTlMLEVBQVE5RCxJQT0KQ2xCaUIsTUFBVSxNQUNW
cUksT0FBVSxPQUNWdUcsZ0JBQWdCLElBRXBCL0wsRUFBUS9ELFNBQ1IrUCxPQUFPQyxtQkFBcUJq
TSxFPQpBR3JCc0wsR0FJUHpRLEVBQTZCLFNBQXNDSCxFQUFVMFEsR0FHN0UsTUFGQUEsR0FBVUEs
TUFDVkEsRUFBUVMsTUFBUXRSLEVBQUk9CiwrQ0FDYjRRLEVBQXdCelEsRUFBVTBRLEVBQVNoTSxH
QTJCbEQsUUFDSTlELDZCQUE4QkEsRUFDOUI4RCxzQkFBOEJBLEVBRTlCKz0KTCx1QkFBOEJBLEVB
QzlCdFEsMkJBQThCQSxFQUM5QkwscUJBQThCQSJ9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQoKZGlmZiAtciBkNjJmM2U1MGI1NjdhMTU3YzA5NDQ0NzNhZGJiYzQxMGM1NTUyZDFhIC1yIDM2
YzA1MjYxMzQzNDEyMzcwZjllNDRmPQo0YmRkNGIxZTE5YTk3YWE1NSBzdGF0aWMvbWFwcy9tdmMv
bGlicmFyeS9saWJyYXJ5LWZvbGRlcnRvb2xiYXItdmlldy5qcy5tYXAKLS0tIGEvc3RhdGljL21h
cHMvbXZjL2xpYnJhcnkvbGlicmFyeS1mb2xkZXJ0b29sYmFyLXZpZXcuanMubWFwCisrKyBiL3N0
YXRpYy9tYXBzL212Yy9saWJyYXJ5L2xpYnJhcnktZm9sZGVydG9vbGJhci12aWV3LmpzLm1hcApA
QCAtMSwxICsxLDEgQEAKLXsidmVyc2lvbiI6MywiZmlsZSI6ImxpYnJhcnktZm9sZGVydG9vbGJh
ci12aWV3LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zPQpyYy9tdmMvbGlicmFyeS9saWJyYXJ5
LWZvbGRlcnRvb2xiYXItdmlldy5qcyJdLCJuYW1lcyI6WyJkZWZpbmUiLCJtb2RfbWFzdGg9CmVh
ZCIsIm1vZF91dGlscyIsIm1vZF90b2FzdHIiLCJtb2RfbGlicmFyeV9tb2RlbCIsIm1vZF9zZWxl
Y3QiLCJGb2xkZXJUb29sYj0KYXJWaWV3IiwiQmFja2JvbmUiLCJWaWV3IiwiZXh0ZW5kIiwiZWwi
LCJldmVudHMiLCJjbGljayAjdG9vbGJ0bl9jcmVhdGVfZm9sPQpkZXIiLCJjbGljayAjdG9vbGJ0
bl9idWxrX2ltcG9ydCIsImNsaWNrICNpbmNsdWRlX2RlbGV0ZWRfZGF0YXNldHNfY2hrIiwiY2w9
CmljayAjdG9vbGJ0bl9zaG93X2xpYmluZm8iLCJjbGljayAjdG9vbGJ0bl9idWxrX2RlbGV0ZSIs
ImNsaWNrICNwYWdlX3NpemVfcD0Kcm9tcHQiLCJkZWZhdWx0cyIsImNhbl9hZGRfbGlicmFyeV9p
dGVtIiwiY29udGFpbnNfZmlsZV9vcl9mb2xkZXIiLCJjaGFpbl9jPQphbGxfY29udHJvbCIsInRv
dGFsX251bWJlciIsImZhaWxlZF9udW1iZXIiLCJkaXNhYmxlZF9qc3RyZWVfZWxlbWVudCIsIm1v
ZGE9CmwiLCJqc3RyZWUiLCJoaXN0b3JpZXMiLCJzZWxlY3RfZ2Vub21lIiwic2VsZWN0X2V4dGVu
c2lvbiIsImxpc3RfZXh0ZW5zaW9ucz0KIiwiYXV0byIsImlkIiwidGV4dCIsImRlc2NyaXB0aW9u
IiwibGlzdF9nZW5vbWVzIiwiaW5pdGlhbGl6ZSIsIm9wdGlvbnMiLCJ0PQpoaXMiLCJfIiwiZmV0
Y2hFeHRBbmRHZW5vbWVzIiwicmVuZGVyIiwidG9vbGJhcl90ZW1wbGF0ZSIsInRlbXBsYXRlVG9v
bEJhciI9CiwidGVtcGxhdGVfZGVmYXVsdHMiLCJpc19hZG1pbiIsImlzX2Fub255bSIsIm11dGlw
bGVfYWRkX2RhdGFzZXRfb3B0aW9ucyIsIj0KR2FsYXh5IiwiY3VyclVzZXIiLCJpc0FkbWluIiwi
aXNBbm9ueW1vdXMiLCJjb25maWciLCJ1c2VyX2xpYnJhcnlfaW1wb3J0X2RpPQpyIiwiYWxsb3df
bGlicmFyeV9wYXRoX3Bhc3RlIiwibGlicmFyeV9pbXBvcnRfZGlyIiwiJGVsIiwiaHRtbCIsInJl
bmRlclBhZ2k9Cm5hdG9yIiwicGFnaW5hdG9yX3RlbXBsYXRlIiwidGVtcGxhdGVQYWdpbmF0b3Ii
LCJmaW5kIiwic2hvd19wYWdlIiwicGFyc2VJbj0KdCIsInBhZ2VfY291bnQiLCJ0b3RhbF9pdGVt
c19jb3VudCIsIml0ZW1zX3Nob3duIiwiY29uZmlndXJlRWxlbWVudHMiLCIkIiwiPQpzaG93Iiwi
aGlkZSIsInRvb2x0aXAiLCJjcmVhdGVGb2xkZXJGcm9tTW9kYWwiLCJldmVudCIsInByZXZlbnRE
ZWZhdWx0Iiwic3Q9Cm9wUHJvcGFnYXRpb24iLCJzZWxmIiwidGVtcGxhdGUiLCJ0ZW1wbGF0ZU5l
d0ZvbGRlckluTW9kYWwiLCJjbG9zaW5nX2V2ZW50cz0KIiwidGl0bGUiLCJib2R5IiwiYnV0dG9u
cyIsIkNyZWF0ZSIsImNyZWF0ZV9uZXdfZm9sZGVyX2V2ZW50IiwiQ2xvc2UiLCJmb2xkPQplckRl
dGFpbHMiLCJzZXJpYWxpemVfbmV3X2ZvbGRlciIsInZhbGlkYXRlX25ld19mb2xkZXIiLCJmb2xk
ZXIiLCJGb2xkZXJBc009Cm9kZWwiLCJ1cmxfaXRlbXMiLCJoaXN0b3J5IiwiZnJhZ21lbnQiLCJz
cGxpdCIsImN1cnJlbnRfZm9sZGVyX2lkIiwibGVuZ3RoIj0KLCJ1cmwiLCJ1cmxSb290Iiwic2F2
ZSIsInN1Y2Nlc3MiLCJzZXQiLCJ0eXBlIiwibGlicmFyaWVzIiwiZm9sZGVyTGlzdFZpZXciPQos
ImNvbGxlY3Rpb24iLCJhZGQiLCJlcnJvciIsIm1vZGVsIiwicmVzcG9uc2UiLCJyZXNwb25zZUpT
T04iLCJlcnJfbXNnIiwibmE9Cm1lIiwidmFsIiwibW9kYWxCdWxrSW1wb3J0IiwiY2hlY2tlZFZh
bHVlcyIsImluZm8iLCJyZWZyZXNoVXNlckhpc3Rvcmllc0xpcz0KdCIsInRoYXQiLCJ0ZW1wbGF0
ZUJ1bGtJbXBvcnRJbk1vZGFsIiwibW9kZWxzIiwiSW1wb3J0IiwiaW1wb3J0QWxsSW50b0hpc3Rv
PQpyeSIsImNhbGxiYWNrIiwiR2FsYXh5SGlzdG9yaWVzIiwiZmV0Y2giLCJkaXNhYmxlQnV0dG9u
IiwiaGlzdG9yeV9pZCIsImhpc3Q9Cm9yeV9uYW1lIiwibGFzdF91c2VkX2hpc3RvcnlfaWQiLCJk
YXRhc2V0X2lkcyIsImZvbGRlcl9pZHMiLCJlYWNoIiwicGFyZW50RT0KbGVtZW50IiwiY2xhc3NM
aXN0IiwiY29udGFpbnMiLCJwdXNoIiwiZGF0YXNldHNfdG9faW1wb3J0IiwiaSIsImxpYnJhcnlf
ZGF0PQphc2V0X2lkIiwiaGlzdG9yeUl0ZW0iLCJIaXN0b3J5SXRlbSIsImNvbnRlbnQiLCJzb3Vy
Y2UiLCJsaWJyYXJ5X2ZvbGRlcl9pZCI9CiwiaW5pdENoYWluQ2FsbENvbnRyb2wiLCJhY3Rpb24i
LCJqUXVlcnkiLCJnZXRKU09OIiwiZ2FsYXh5X2NvbmZpZyIsInJvb3QiLD0KImNoYWluQ2FsbElt
cG9ydGluZ0ludG9IaXN0b3J5IiwidXBkYXRlUHJvZ3Jlc3MiLCJwcm9ncmVzcyIsInByb2dyZXNz
U3RlcCIsPQoid2lkdGgiLCJNYXRoIiwicm91bmQiLCJ0eHRfcmVwcmVzZW50YXRpb24iLCJkb3du
bG9hZCIsImZvbGRlcl9pZCIsImZvcm1hdCI9Ciwid2luZG93IiwiZGF0YSIsImxkX2lkcyIsInBy
b2Nlc3NEb3dubG9hZCIsIm1ldGhvZCIsInBhcmFtIiwiaW5wdXRzIiwicGFpcj0KIiwiYXBwZW5k
VG8iLCJzdWJtaXQiLCJyZW1vdmUiLCJhZGRGaWxlc0Zyb21IaXN0b3J5TW9kYWwiLCJ0ZW1wbGF0
ZV9tb2RhbCIsPQoidGVtcGxhdGVBZGRGaWxlc0Zyb21IaXN0b3J5IiwiZm9sZGVyX25hbWUiLCJm
dWxsX3BhdGgiLCJBZGQiLCJhZGRBbGxEYXRhc2U9CnRzRnJvbUhpc3RvcnkiLCJjbG9zaW5nX2Nh
bGxiYWNrIiwibGlicmFyeV9yb3V0ZXIiLCJiYWNrIiwiZmV0Y2hBbmREaXNwbGF5SD0KaXN0b3J5
Q29udGVudHMiLCJjaGFuZ2UiLCJ0YXJnZXQiLCJ2YWx1ZSIsImltcG9ydEZpbGVzRnJvbVBhdGhN
b2RhbCIsInRlbXBsPQphdGVJbXBvcnRQYXRoTW9kYWwiLCJpbXBvcnRGcm9tUGF0aHNDbGlja2Vk
IiwibmF2aWdhdGUiLCJ0cmlnZ2VyIiwicmVuZGVyU2U9CmxlY3RCb3hlcyIsImdldCIsImRhdGF0
eXBlcyIsImtleSIsImV4dGVuc2lvbiIsImRlc2NyaXB0aW9uX3VybCIsInNvcnQiLCJhIj0KLCJi
IiwidW5zaGlmdCIsImdlbm9tZXMiLCJjc3MiLCJjb250YWluZXIiLCJpbXBvcnRGaWxlc0Zyb21H
YWxheHlGb2xkZXJNb2RhPQpsIiwidGVtcGxhdGVCcm93c2VyTW9kYWwiLCJpbXBvcnRGcm9tSnN0
cmVlUGF0aCIsInJlbmRlckpzdHJlZSIsIkpzdHJlZSIsInI9CmVxdWlyZSIsImNvcmUiLCJwbHVn
aW5zIiwidHlwZXMiLCJpY29uIiwiZmlsZSIsImNoZWNrYm94IiwidGhyZWVfc3RhdGUiLCJwcj0K
ZXNlcnZlX2RpcnMiLCJpcyIsImxpbmtfZGF0YSIsImZpbGVfdHlwZSIsImRia2V5IiwicGF0aHMi
LCJ2YWxpZF9wYXRocyIsInRyPQppbW1lZCIsInRyaW0iLCJjaGFpbkNhbGxJbXBvcnRpbmdGb2xk
ZXJzIiwidGVtcGxhdGVBZGRpbmdEYXRhc2V0c1Byb2dyZXNzQmE9CnIiLCJ0ZW1wbGF0ZURlbGV0
aW5nRGF0YXNldHNQcm9ncmVzc0JhciIsInRlbXBsYXRlSW1wb3J0SW50b0hpc3RvcnlQcm9ncmVz
cz0KQmFyIiwiY29uc29sZSIsInNlbGVjdGVkX25vZGVzIiwiZ2V0X3NlbGVjdGVkIiwic2VsZWN0
aW9uX3R5cGUiLCJ1bmRlZmluZWQiPQosImxpX2F0dHIiLCJmdWxsX3NvdXJjZSIsImNoYWluQ2Fs
bEltcG9ydGluZ1VzZXJkaXJGaWxlcyIsImhpc3RvcnlfY29udGVudHM9CiIsIkhpc3RvcnlDb250
ZW50cyIsImhpc3RvcnlfY29udGVudHNfdGVtcGxhdGUiLCJ0ZW1wbGF0ZUhpc3RvcnlDb250ZW50
cyIsIj0KY29udGVudHMiLCJyZXZlcnNlIiwiY2hlY2tlZF9oZGFzIiwiaGlzdG9yeV9kYXRhc2V0
X2lkcyIsImhkYXNfdG9fYWRkIiwiaGlkPQoiLCJoaXN0b3J5X2RhdGFzZXRfaWQiLCJmb2xkZXJf
aXRlbSIsIkl0ZW0iLCJmcm9tX2hkYV9pZCIsImNoYWluQ2FsbEFkZGluZ0g9CmRhcyIsImhpc3Rv
cnlfaXRlbV9zZXQiLCJwb3BwZWRfaXRlbSIsInBvcCIsIm9uY2xpY2siLCJsb2NhdGlvbiIsIndh
cm5pbmciLD0KInByb21pc2UiLCJ3aGVuIiwiZG9uZSIsImZhaWwiLCJwb3N0IiwiaGRhc19zZXQi
LCJhZGRlZF9oZGFzIiwiRm9sZGVyIiwiY2hhPQppbkNhbGxEZWxldGluZ0l0ZW1zIiwiaXRlbXNf
dG9fZGVsZXRlIiwiZGVsZXRlZF9pdGVtcyIsImRlc3Ryb3kiLCJpdGVtIiwiaW49CmNsdWRlX2Rl
bGV0ZWQiLCJ1cGRhdGVkX2l0ZW0iLCJtb2RlbF9jbGFzcyIsImNoZWNrSW5jbHVkZURlbGV0ZWQi
LCJmZXRjaEZvbD0KZGVyIiwiY2hlY2tlZCIsImRlbGV0ZVNlbGVjdGVkRGF0YXNldHMiLCJzdWJz
dHJpbmciLCJpdGVtc190b3RhbCIsImRhdGFzZXQiPQosInNob3dMaWJJbmZvIiwibGlicmFyeV9p
ZCIsImZvbGRlckNvbnRhaW5lciIsImF0dHJpYnV0ZXMiLCJtZXRhZGF0YSIsInBhcmU9Cm50X2xp
YnJhcnlfaWQiLCJsaWJyYXJ5IiwibGlicmFyeUxpc3RWaWV3Iiwic2hvd0xpYkluZm9Nb2RhbCIs
IkxpYnJhcnkiLCJ0ZT0KbXBsYXRlTGliSW5mb0luTW9kYWwiLCJzaG93SW1wb3J0TW9kYWwiLCJz
aG93UGFnZVNpemVQcm9tcHQiLCJmb2xkZXJfcGFnZV9zPQppemUiLCJwcm9tcHQiLCJwcmVmZXJl
bmNlcyIsInRtcGxfYXJyYXkiLCJqb2luIl0sIm1hcHBpbmdzIjoiQUFBQUEsUUFDSSxrQkE9CkNB
LGNBQ0EsY0FDQSw0QkFDQSxvQkFFSixTQUFVQyxFQUNBQyxFQUNBQyxFQUNBQyxFQUNBQyxHQUdW
LEdBQUlDLEdBQW9CQyxTQT0KQVNDLEtBQUtDLFFBQ3BDQyxHQUFJLFVBRUpDLFFBQ0VDLCtCQUF3
Qyx3QkFDeENDLDZCQUF3QyxrQkFDeENDLHNDQUF3QyxzQkFDPQp4Q0MsOEJBQXdDLGNBQ3hDQyw2
QkFBd0MseUJBQ3hDQywwQkFBd0Msc0JBSTFDQyxVQUNFQyxzQkFBNEIsRUFDNUJDLHlCQUE0Qiw9
CkVBQzVCQyxvQkFDNEJDLGFBQWtCLEVBQ2xCQyxjQUFrQixHQUU5Q0Msd0JBQTRCLFdBRzlCQyxN
QUFRLEtBR1JDLE9BQVEsS0FHUj0KQyxVQUFZLEtBR1pDLGNBQWdCLEtBR2hCQyxpQkFBbUIsS0FH
bkJDLG1CQUdBQyxNQUNJQyxHQUFjLE9BQ2RDLEtBQWMsY0FDZEMsPQpZQUFjLHNaQVNsQkMsZ0JB
RUFDLFdBQVksU0FBU0MsR0FDbkJDLEtBQUtELFFBQVVFLEVBQUVyQixTQUFVbUIsTUFBZUMsS0FB
S3A9CkIsVUFDL0NvQixLQUFLRSxxQkFDTEYsS0FBS0csVUFHUEEsT0FBUSxTQUFTSixHQUNmQyxL
QUFLRCxRQUFVRSxFQUFFOUIsT0FBUT0KNkIsS0FBS0QsUUFBU0EsRUFDdkMsSUFBSUssR0FBbUJK
LEtBQUtLLGtCQUN4QkMsR0FDQVosR0FBSU0sS0FBS0QsUUFBUUwsR0FDPQpqQmEsVUFBVSxFQUNW
QyxXQUFXLEVBQ1hDLDZCQUE2QixFQUU3QkMsUUFBT0MsV0FDVEwsRUFBa0JDLFNBQVdHLE9BQU9D
LFNBQVM9CkMsVUFDN0NOLEVBQWtCRSxVQUFZRSxPQUFPQyxTQUFTRSxlQUNDLE9BQTFDSCxPQUFP
SSxPQUFPQyx5QkFBb0NMLE9BQU9JLE9BQT0KT0UsNEJBQTZCLEdBQThDLE9BQXJDTixPQUFPSSxP
QUFPRyxzQkFDdkhYLEVBQWtCRyw2QkFBOEIsSUFHcERULEtBQUtrQixJQUFJPQpDLEtBQUtmLEVB
QWlCRSxLQU9qQ2MsZ0JBQWlCLFNBQVVyQixHQUN2QkMsS0FBS0QsUUFBVUUsRUFBRTlCLE9BQVE2
QixLQUFLRCw9ClFBQVNBLEVBQ3ZDLElBQUlzQixHQUFxQnJCLEtBQUtzQixtQkFDOUJ0QixNQUFL
a0IsSUFBSUssS0FBTSxxQkFBc0JKLEtBQU1FLD0KR0FDdkMzQixHQUFJTSxLQUFLRCxRQUFRTCxH
QUNqQjhCLFVBQVdDLFNBQVV6QixLQUFLRCxRQUFReUIsV0FDbENFLFdBQVlELFNBPQpBVXpCLEtB
QUtELFFBQVEyQixZQUNuQ0Msa0JBQW1CM0IsS0FBS0QsUUFBUTRCLGtCQUNoQ0MsWUFBYTVCLEtB
QUtELFFBQVE2Qiw9CmdCQUlsQ0Msa0JBQW1CLFNBQVM5QixHQUMxQkMsS0FBS0QsUUFBVUUsRUFB
RTlCLE9BQU82QixLQUFLRCxRQUFTQSxHQUVsQ0MsSz0KQUFLRCxRQUFRbEIsd0JBQXlCLEVBQ3hD
aUQsRUFBRSxzQkFBc0JDLE9BRXhCRCxFQUFFLHNCQUFzQkUsT0FFdEJoQyxLQUFLRCxRPQpBQVFq
QiwyQkFBNEIsR0FDdkM0QixPQUFPQyxTQUNKRCxPQUFPQyxTQUFTRSxlQUluQmlCLEVBQUUseUJB
QXlCQyxPQUMzQkQsRUE9CkFFLGdDQUFnQ0UsU0FKbENGLEVBQUUsZ0NBQWdDQyxPQUNsQ0QsRUFB
RSx5QkFBeUJDLFNBVS9CRCxFQUFFLGdDQUFnQ0UsT0FDbD0KQ0YsRUFBRSx5QkFBeUJFLFFBRTdC
aEMsS0FBS2tCLElBQUlLLEtBQUssaUJBQWlCVSxXQUlqQ0Msc0JBQXVCLFNBQVVDLEdBQy9CPQpB
LEVBQU1DLGlCQUNORCxFQUFNRSxpQkFHTixJQUFJQyxHQUFPdEMsS0FDUHVDLEVBQVd2QyxLQUFL
d0MsMEJBQ3BCeEMsTUFBS2I9CixNQUFRdUIsT0FBT3ZCLE1BQ3BCYSxLQUFLYixNQUFNNEMsTUFD
UFUsZ0JBQWtCLEVBQ2xCQyxNQUFrQixvQkFDbEJDLEtBQWtCSj0KLElBQ2xCSyxTQUNJQyxPQUFj
LFdBQVlQLEVBQUtRLDJCQUMvQkMsTUFBYyxXQUFZckMsT0FBT3ZCLE1BQU02QyxZQU1qRGMsd0JB
PQpBeUIsV0FDckIsR0FBSUUsR0FBZ0JoRCxLQUFLaUQsc0JBQ3pCLElBQUlqRCxLQUFLa0Qsb0JB
QW9CRixHQUFlLENBQ3hDLEdBQUk9CkcsR0FBUyxHQUFJckYsR0FBa0JzRixhQUNuQ0MsV0FBWXBG
LFNBQVNxRixRQUFRQyxTQUFTQyxNQUFNLEtBQzVDQyxrQkFBb0JKLD0KVUFBVUEsVUFBVUssT0FB
TyxHQUMvQ1AsRUFBT1EsSUFBTVIsRUFBT1MsUUFBVUgsa0JBRTlCTixFQUFPVSxLQUFLYixHQUNW
YyxRPQpBQVMsU0FBVVgsR0FDakJ6QyxPQUFPdkIsTUFBTTZDLE9BQ2JuRSxFQUFXaUcsUUFBUSxt
QkFDbkJYLEVBQU9ZLEtBQUtDLEtBQVM9CixXQUNyQnRELE9BQU91RCxVQUFVQyxlQUFlQyxXQUFX
QyxJQUFJakIsSUFFakRrQixNQUFPLFNBQVNDLEVBQU9DLEdBQ3JCN0QsTz0KQUFPdkIsTUFBTTZD
LE9BRVhuRSxFQUFXd0csTUFEd0IsbUJBQTFCRSxHQUFTQyxhQUNERCxFQUFTQyxhQUFhQyxRQUV0
Qiw0QkFLPQp2QjVHLEdBQVd3RyxNQUFNLDRCQUVyQixRQUFPLEdBSVhwQixxQkFBdUIsV0FDbkIs
T0FDSXlCLEtBQU01QyxFQUFFLHNCQUFzQjY9CkMsTUFDOUIvRSxZQUFha0MsRUFBRSw2QkFBNkI2
QyxRQUtwRHpCLG9CQUFxQixTQUFTRixHQUMxQixNQUE4QixLQUF2QkEsRUFBYz0KMEIsTUFLekJF
LGdCQUFrQixXQUNkLEdBQUlDLEdBQWdCL0MsRUFBRSxpQkFBaUJQLEtBQUssV0FDaEIsS0FBekJz
RCxFQUFjbkIsPQpPQUNiN0YsRUFBV2lILEtBQUssd0NBRWhCOUUsS0FBSytFLHlCQUF5QixTQUFT
QyxHQUNyQyxHQUFJekMsR0FBV3lDLEVBQUtDLDI9CkJBQ3BCRCxHQUFLN0YsTUFBUXVCLE9BQU92
QixNQUNwQjZGLEVBQUs3RixNQUFNNEMsTUFDUFUsZ0JBQWtCLEVBQ2xCQyxNQUFrQj0KLHNCQUNs
QkMsS0FBa0JKLEdBQVVsRCxVQUFZMkYsRUFBSzNGLFVBQVU2RixTQUN2RHRDLFNBQ0l1QyxPQUFj
LFdBQVlILEVBQUtJPQosd0JBQy9CckMsTUFBYyxXQUFZckMsT0FBT3ZCLE1BQU02QyxjQU96RCtD
LHlCQUEwQixTQUFTTSxHQUNqQyxHQUFJTCxHQUFPaEY9CixJQUNYQSxNQUFLWCxVQUFZLEdBQUl2
QixHQUFrQndILGdCQUN2Q3RGLEtBQUtYLFVBQVVrRyxPQUNiekIsUUFBUyxXQUNQdUIsRT0KQUFT
TCxJQUVYWCxNQUFPLFNBQVNDLEVBQU9DLEdBRW5CMUcsRUFBV3dHLE1BRHdCLG1CQUExQkUsR0FB
U0MsYUFDREQsRUFBU0MsPQphQUFhQyxRQUV0Qix5QkFTekJXLHFCQUF1QixXQUNyQnBGLEtBQUti
LE1BQU1xRyxjQUFjLFNBQ3pCLElBQUlDLEdBQWEzRCxFQUE9CkUsb0RBQW9ENkMsTUFDbkVlLEVB
QWU1RCxFQUFFLG9EQUFvRG5DLE1BRXpFSyxNQUFLRCxRQUFRNEYscUJBQXVCRixDQUNwQyxJQT0K
QUlHLE1BQ0FDLElBQ0ovRCxHQUFFLGlCQUFpQlAsS0FBSyxZQUFZdUUsS0FBSyxXQUNPLEtBQXhD
OUYsS0FBSytGLGNBQWNBLGNBPQpBY3JHLElBQWFNLEtBQUsrRixjQUFjQSxjQUFjQyxVQUFVQyxT
QUFTLGVBQ2xHTCxFQUFZTSxLQUFLbEcsS0FBSytGLGNBQWNBLGM9CkFBY3JHLElBQ0gsS0FBeENN
LEtBQUsrRixjQUFjQSxjQUFjckcsSUFBYU0sS0FBSytGLGNBQWNBLGNBQWNDLFVBQVVDLFNBQVMs
ZT0KQUN6R0osRUFBV0ssS0FBS2xHLEtBQUsrRixjQUFjQSxjQUFjckcsS0FLekQsS0FBSyxHQURE
eUcsTUFDS0MsRUFBSVIsRUFBWWxDPQosT0FBUyxFQUFHMEMsR0FBSyxFQUFHQSxJQUFLLENBQzlD
LEdBQUlDLEdBQXFCVCxFQUFZUSxHQUNqQ0UsRUFBYyxHQUFJeEksR0E9CkFrQnlJLFdBQ3hDRCxH
QUFZM0MsSUFBTTJDLEVBQVkxQyxRQUFVNkIsRUFBYSxZQUNyRGEsRUFBWUUsUUFBVUgsRUFDdEJD
LEVBQT0KWUcsT0FBUyxVQUNyQk4sRUFBbUJELEtBQUtJLEdBSzVCLElBQUssR0FBSUYsR0FBSVAs
RUFBV25DLE9BQVMsRUFBRzBDLEdBQUssPQpFQUFHQSxJQUFLLENBQzdDLEdBQUlNLEdBQW9CYixF
QUFXTyxHQUMvQkUsRUFBYyxHQUFJeEksR0FBa0J5SSxXQUN4Q0QsR0FBWTM9CkMsSUFBTTJDLEVB
QVkxQyxRQUFVNkIsRUFBYSxZQUNyRGEsRUFBWUUsUUFBVUUsRUFDdEJKLEVBQVlHLE9BQVMsaUJB
Q3JCTixFQT0KQW1CRCxLQUFLSSxHQUc1QnRHLEtBQUsyRyxzQkFBd0JqRCxPQUFReUMsRUFBbUJ6
QyxPQUFRa0QsT0FBUSxhQUFjbEIsYUFBY0EsPQpJQUdwR21CLE9BQU9DLFFBQVNDLGNBQWNDLEtB
QU8sNkJBQStCdkIsR0FDcEV6RixLQUFLaUgsOEJBQStCZCxFQUFvQlQsSUFNMUQ9CndCLGVBQWdC
LFdBQ1psSCxLQUFLbUgsVUFBWW5ILEtBQUtvSCxhQUN0QnRGLEVBQUcsd0JBQXlCdUYsTUFBT0Ms
S0FBS0MsTUFBTz0KdkgsS0FBS21ILFVBQWEsS0FDakVLLG1CQUFxQkYsS0FBS0MsTUFBT3ZILEtB
QUttSCxVQUFhLGFBQ25EckYsRUFBRyxvQkFBcUJuPQpDLEtBQU02SCxxQkFRbENDLFNBQVcsU0FB
VUMsRUFBV0MsR0FDOUIsR0FBSS9CLE1BQ0FDLElBQ0EvRCxHQUFHLGlCQUFrQlAsS0E9CkFNLFlB
QWF1RSxLQUFNLFdBQ0csS0FBeEM5RixLQUFLK0YsY0FBY0EsY0FBY3JHLElBQWFNLEtBQUsrRixj
QUFjQSxjQUFjQyxVQT0KQVVDLFNBQVMsZUFDbkdMLEVBQVlNLEtBQU1sRyxLQUFLK0YsY0FBY0Es
Y0FBY3JHLElBQ0gsS0FBeENNLEtBQUsrRixjQUFjQSxjPQpBQWNyRyxJQUFhTSxLQUFLK0YsY0FB
Y0EsY0FBY0MsVUFBVUMsU0FBUyxlQUMxR0osRUFBV0ssS0FBTWxHLEtBQUsrRixjQUFjQSw9CmNB
QWNyRyxLQUc5RCxJQUFJaUUsSUFBUWlFLE9BQU9iLGNBQWdCQSxjQUFjQyxLQUFPLEtBQVEsbUNB
QXFDVyxFQUNqR0UsR0FBUz0KQyxPQUFXbEMsRUFBYUMsV0FBZUEsRUFDcEQ3RixNQUFLK0gsZ0JB
QWlCcEUsRUFBS2tFLEVBQU0sUUFVbkNFLGdCQUFpQixTQUFVPQpwRSxFQUFLa0UsRUFBTUcsR0FD
cEMsR0FBS3JFLEdBQU9rRSxFQUFNLENBRWhCQSxFQUF1QixnQkFBVEEsR0FBb0JBLEVBQU8vRiw9
CkVBQUVtRyxNQUFPSixFQUVsRCxJQUFJSyxHQUFTLEVBQ2JwRyxHQUFFZ0UsS0FBTStCLEVBQUty
RSxNQUFPLEtBQU8sV0FDbkIsRz0KQUFJMkUsR0FBT25JLEtBQUt3RCxNQUFPLElBQ3ZCMEUsSUFB
USw4QkFBK0JDLEVBQUssR0FBSSxZQUFhQSxFQUFLLEdBQUksU0FHPQo5RXJHLEVBQUUsaUJBQWtC
NkIsRUFBSyxjQUFlcUUsR0FBUSxRQUFTLEtBQUtFLEVBQU8sV0FDcEVFLFNBQVUsUUFBU0MsU0FB
U0M9CixTQUM3QnpLLEVBQVdpSCxLQUFNLHNDQUVqQmpILEdBQVd3RyxNQUFPLHVCQUl0QmtFLHlC
QUEwQixXQUN4QnZJLEtBQUsrRSx5Qj0KQUEwQixTQUFVekMsR0FDdkNBLEVBQUtuRCxNQUFRdUIs
T0FBT3ZCLEtBQ3BCLElBQUlxSixHQUFpQmxHLEVBQUttRyw4QkFDdEJDPQosRUFBY3BHLEVBQUt2
QyxRQUFRNEksVUFBVXJHLEVBQUt2QyxRQUFRNEksVUFBVWpGLE9BQVMsR0FBRyxFQUM1RXBCLEdB
QUtuRCw9Ck1BQU00QyxNQUNQVSxnQkFBa0IsRUFDbEJDLE1BQWtCLCtDQUFpRGdHLEVBQ25FL0Ys
S0FBa0I2RixHQUFnQm5KLFVBQVdpRCxFQT0KQUtqRCxVQUFVNkYsU0FDNUR0QyxTQUNJZ0csSUFB
YyxXQUFZdEcsRUFBS3VHLDZCQUMvQjlGLE1BQWMsV0FBWXJDLE9BQU92QixNPQpBQU02QyxTQUUz
QzhHLGlCQUFrQixXQUNoQnBJLE9BQU91RCxVQUFVOEUsZUFBZUMsVUFLbEMxRyxFQUFLakQsVUFB
VTZGLE9BQU89CnhCLE9BQVMsR0FDakNwQixFQUFLMkcsK0JBQStCM0csRUFBS2pELFVBQVU2RixP
QUFPLEdBQUd4RixJQUM3RG9DLEVBQUcscUJBQT0Kc0JvSCxPQUFPLFNBQVMvRyxHQUN2Q0csRUFB
SzJHLCtCQUErQjlHLEVBQU1nSCxPQUFPQyxVQUduRHZMLEVBQVd3RyxNQUFPLHdCPQpBU3hCZ0Ys
eUJBQTBCLFdBQ3hCLEdBQUlyRSxHQUFPaEYsSUFDWEEsTUFBS2IsTUFBUXVCLE9BQU92QixLQUNw
QixJQUFJcUosR0E9CkFpQnhJLEtBQUtzSix5QkFDMUJ0SixNQUFLYixNQUFNNEMsTUFDUFUsZ0JB
QWtCLEVBQ2xCQyxNQUFrQiwrQkFDbEJDLEtBQWtCNj0KRixNQUNsQjVGLFNBQ0l1QyxPQUFjLFdB
QWFILEVBQUt1RSx1QkFBdUJ2RSxJQUN2RGpDLE1BQWMsV0FBYXJDLE9BQU92QixNQUFNPQo2QyxT
QUU1QzhHLGlCQUFrQixXQUVoQnBJLE9BQU91RCxVQUFVOEUsZUFBZVMsU0FBVSxXQUFheEUsRUFB
S3RGLElBQU0rSixTQUE9ClMsT0FHakZ6SixLQUFLMEoscUJBT1B4SixtQkFBb0IsV0FDbEIsR0FB
SThFLEdBQU9oRixJQUNYcEMsR0FBVStMLEtBQ05oRyxLQT0KQWNpRSxPQUFPYixjQUFnQkEsY0FB
Y0MsS0FBTyxLQUFRLHFDQUNsRWxELFFBQVksU0FBVThGLEdBQ04sSUFBS0MsTUFBT0QsR0FDPQpS
NUUsRUFBS3hGLGdCQUFnQjBHLE1BQ2pCeEcsR0FBa0JrSyxFQUFVQyxLQUFLQyxVQUNqQ25LLEtB
QWtCaUssRUFBVUMsS0FBS0M9CixVQUNqQ2xLLFlBQWtCZ0ssRUFBVUMsS0FBS2pLLFlBQ2pDbUss
Z0JBQWtCSCxFQUFVQyxLQUFLRSxpQkFHekMvRSxHQUFLeEYsZz0KQkFBZ0J3SyxLQUFLLFNBQVND
LEVBQUdDLEdBQ2xDLE1BQU9ELEdBQUV2SyxHQUFLd0ssRUFBRXhLLEdBQUssRUFBSXVLLEVBQUV2
PQpLLEdBQUt3SyxFQUFFeEssR0FBSyxHQUFLLElBRWhEc0YsRUFBS3hGLGdCQUFnQjJLLFFBQVFu
RixFQUFLdkYsU0FHdEQ3QixFQUE9ClUrTCxLQUNOaEcsS0FBVWlFLE9BQU9iLGNBQWdCQSxjQUFj
QyxLQUFPLEtBQVEsY0FDOURsRCxRQUFTLFNBQVVzRyxHQUNQLElBQT0KTVAsTUFBT08sR0FDVHBG
LEVBQUtuRixhQUFhcUcsTUFDZHhHLEdBQVUwSyxFQUFRUCxLQUFLLEdBQ3ZCbEssS0FBVXlLLEVB
QVFQPQosS0FBSyxJQUcvQjdFLEdBQUtuRixhQUFhbUssS0FBSyxTQUFTQyxFQUFHQyxHQUMvQixN
QUFPRCxHQUFFdkssR0FBS3dLLEVBQUU9CnhLLEdBQUssRUFBSXVLLEVBQUV2SyxHQUFLd0ssRUFB
RXhLLEdBQUssR0FBSyxRQU1sRWdLLGtCQUFtQixXQUtqQixHQUFJMUUsRz0KQUFPaEYsSUFDWEEs
TUFBS1YsY0FBZ0IsR0FBSXZCLEdBQVdHLE1BQ2hDbU0sSUFBSyx3QkFDTHhDLEtBQU03QyxFQUFL
bkYsYUFDPQpYeUssVUFBVzVKLE9BQU92QixNQUFNK0IsSUFBSUssS0FBTSwwQkFDbEM2SCxNQUFP
LE1BRVhwSixLQUFLVCxpQkFBbUIsR0FBSXg9CkIsR0FBV0csTUFDckNtTSxJQUFLLDJCQUNMeEMs
S0FBTTdDLEVBQUt4RixnQkFDWDhLLFVBQVc1SixPQUFPdkIsTUFBTStCLElBQT0KSUssS0FBTSw2
QkFDbEM2SCxNQUFPLFVBUVhtQixpQ0FBa0MsU0FBVXhLLEdBQzFDLEdBQUlpRixHQUFPaEYsS0FD
UHdJLEVBQWlCPQp4SSxLQUFLd0ssc0JBQzFCeEssTUFBS2IsTUFBUXVCLE9BQU92QixNQUNwQmEs
S0FBS2IsTUFBTTRDLE1BQ1RVLGdCQUFrQixFQUM9CmxCQyxNQUFrQixpQ0FDbEJDLEtBQWtCNkYs
TUFDbEI1RixTQUNJdUMsT0FBYyxXQUNaSCxFQUFLeUYscUJBQXNCekYsRUFBTWpGLD0KSUFFbkNn
RCxNQUFjLFdBQ1pyQyxPQUFPdkIsTUFBTTZDLFNBR25COEcsaUJBQWtCLFdBRWhCcEksT0FBT3VE
LFVBQVU4RSxlQUFlPQpTLFNBQVMsV0FBYXhFLEVBQUt0RixJQUFLK0osU0FBUyxPQUk3RXpKLEtB
QUswSixvQkFDTDNKLEVBQVFiLHdCQUEwQixVQUNsQ2M9CixLQUFLMEssYUFBYzNLLEdBRW5CK0Is
RUFBRyxxQkFBc0JvSCxPQUFRLFNBQVUvRyxHQUNiLDJCQUF0QkEsRUFBTWdILE9BQU9DLD0KT0FD
ZnJKLEVBQVFiLHdCQUEwQixVQUNsQzhGLEVBQUswRixhQUFjM0ssR0FDbkIrQixFQUFFLDJCQUEy
QkUsT0FDN0JGLEVBQUUsPQo4QkFBOEJFLE9BQ2hDRixFQUFFLHNCQUFzQkUsT0FDeEJGLEVBQUUs
eUJBQXlCQyxRQUNLLHlCQUF0QkksRUFBTWdILE9BQU9DLFE9CkFDdkJ0SCxFQUFFLHlCQUF5QkUs
T0FDM0JGLEVBQUUsMkJBQTJCQyxPQUM3QkQsRUFBRSxzQkFBc0JDLE9BQ3hCRCxFQUFFLDhCQT0K
QThCQyxPQUNoQ2hDLEVBQVFiLHdCQUEwQixRQUNsQzhGLEVBQUswRixhQUFjM0ssT0FZM0IySyxh
QUFjLFNBQVUzSyxHQUV0QkMsPQpLQUFLRCxRQUFVRSxFQUFFOUIsT0FBUTZCLEtBQUtELFFBQVNB
LEVBQ3ZDLElBQUlvSixHQUFTcEosRUFBUTBHLFFBQVUsVUFDM0I9CnZILEVBQTBCYyxLQUFLRCxR
QUFRYix1QkFDM0NjLE1BQUtaLE9BQVMsR0FBSXRCLEdBQWtCNk0sT0FDcEMzSyxLQUFLWixPQUFP
dT0KRSxJQUFNM0QsS0FBS1osT0FBT3dFLFFBQ1YsV0FBYXVGLEVBQ2IsMEJBQ2NqSyxFQUNsQ2Ms
S0FBS1osT0FBT21HLE9BQ1Z6QixRPQpBQVMsU0FBU1EsR0FFaEI1RyxPQUFRLFNBQVUsV0FBWSxN
QUFPbUosVUFFckMrRCxTQUFVLHNCQUF3QixXQUNoQzlJLEVBQUUsbUI9CkFBbUIxQyxPQUFPLFdB
QzVCMEMsRUFBRSxtQkFBbUIxQyxRQUNuQnlMLE1BQ0VoRCxLQUFRdkQsR0FFVndHLFNBQVksUUFB
UyxZQT0KQ3JCQyxPQUNFNUgsUUFDRTZILEtBQVEsaUJBRVZDLE1BQ0VELEtBQVEsZ0JBR1pFLFVB
Q0VDLGFBQWEsUUFLckI5RyxNQUFPLFNBPQpBU0MsRUFBT0MsR0FFbkIxRyxFQUFXd0csTUFEd0Is
bUJBQTFCRSxHQUFTQyxhQUNERCxFQUFTQyxhQUFhQyxRQUV0Qix5QkFXekI9CjhFLHVCQUF3QixX
QUN0QixHQUFJNkIsR0FBZ0JwTCxLQUFLYixNQUFNK0IsSUFBSUssS0FBSyxzQkFBc0I4SixHQUFH
LFlBQzdEQz0KLEVBQVl0TCxLQUFLYixNQUFNK0IsSUFBSUssS0FBSyxrQkFBa0I4SixHQUFHLFlB
Q3JERSxFQUFZdkwsS0FBS1QsaUJBQWlCNkosPQpRQUNsQ29DLEVBQVF4TCxLQUFLVixjQUFjOEos
UUFDM0JxQyxFQUFRM0osRUFBRSx5QkFBeUI2QyxNQUNuQytHLElBQ0osSUFBS0Q9CixFQUVFLENB
Q0x6TCxLQUFLYixNQUFNcUcsY0FBYyxVQUN6QmlHLEVBQVFBLEVBQU1qSSxNQUFNLEtBQ3BCLEtB
QUssR0FBSTRDLD0KR0FBSXFGLEVBQU0vSCxPQUFTLEVBQUcwQyxHQUFLLEVBQUdBLElBQ3JDdUYs
UUFBVUYsRUFBTXJGLEdBQUd3RixPQUNFLElBQWpCPQpELFFBQVFqSSxRQUNWZ0ksRUFBWXhGLEtB
QUt5RixRQUdyQjNMLE1BQUsyRyxzQkFBd0JqRCxPQUFRZ0ksRUFBWWhJLE9BQVFrRCw9Ck9BQVEs
b0JBQ2pFNUcsS0FBSzZMLDJCQUE2QkosTUFBT0MsRUFDUE4sY0FBZUEsRUFDZkUsVUFBV0EsRUFD
WDdFLE9BQVEsYUFDUj0KOEUsVUFBV0EsRUFDWEMsTUFBT0EsUUFoQnpDM04sR0FBV2lILEtBQUss
aURBeUJwQjZCLHFCQUFzQixTQUFVNUcsR0FDOUIsR0FBPQpJd0MsRUFDSixRQUFReEMsRUFBUTZH
LFFBQ2QsSUFBSyxrQkFDSHJFLEVBQVd2QyxLQUFLOEwsb0NBQ2hCOUwsS0FBS2IsTUFBTSs9CkIs
SUFBSUssS0FBTSxlQUFnQkosS0FBTW9CLEdBQVltRyxZQUFjMUksS0FBS0QsUUFBUTJJLGNBQ2xG
LE1BQ0YsS0FBSyxvQkFDSD0KbkcsRUFBV3ZDLEtBQUsrTCxzQ0FDaEIvTCxLQUFLYixNQUFNK0Is
SUFBSUssS0FBTSxlQUFnQkosS0FBTW9CLElBQzNDLE1BQ0YsPQpLQUFLLGFBQ0hBLEVBQVd2QyxL
QUFLZ00sdUNBQ2hCaE0sS0FBS2IsTUFBTStCLElBQUlLLEtBQU0sZUFBZ0JKLEtBQU1vQixHQUE9
ClltRCxhQUFlM0YsRUFBUTJGLGVBQzlFLE1BQ0YsU0FDRXVHLFFBQVE1SCxNQUFPLDJCQU1uQnJF
LEtBQUttSCxTQUFXLEVBQ2hCbj0KSCxLQUFLb0gsYUFBZSxJQUFNckgsRUFBUTJELE9BQ2xDMUQs
S0FBS0QsUUFBUWhCLG1CQUFtQkMsYUFBZWUsRUFBUTJELE9BQ3ZEPQoxRCxLQUFLRCxRQUFRaEIs
bUJBQW1CRSxjQUFnQixHQVdsRHdMLHFCQUFzQixTQUFXekYsRUFBTWpGLEdBQ3JDLEdBQUltTSxH
QUE9CmlCcEssRUFBRyxtQkFBb0IxQyxTQUFTK00sY0FBYyxHQUMvRGYsRUFBZ0JwTCxLQUFLYixN
QUFNK0IsSUFBSUssS0FBTSxzQkFBdT0KQjhKLEdBQUksWUFDaEVDLEVBQVl0TCxLQUFLYixNQUFN
K0IsSUFBSUssS0FBTSxrQkFBbUI4SixHQUFJLFlBQ3hERSxFQUFZdkwsPQpLQUFLVCxpQkFBaUI2
SixRQUNsQ29DLEVBQVF4TCxLQUFLVixjQUFjOEosUUFDM0JnRCxFQUFpQkYsRUFBZSxHQUFHbEks
S0FDbkM9CnlILElBQ0osSUFBS1MsRUFBZXhJLE9BQVMsRUFDM0I3RixFQUFXaUgsS0FBTSx1Q0FD
WixDQUNMOUUsS0FBS2IsTUFBTXFHLGNBQT0KZSxTQUMxQixLQUFNLEdBQUlZLEdBQUk4RixFQUFl
eEksT0FBUyxFQUFHMEMsR0FBSyxFQUFHQSxJQUNGaUcsU0FBeENILEVBQWU5PQpGLEdBQUdrRyxR
QUFRM0QsV0FDN0I4QyxFQUFNdkYsS0FBTWdHLEVBQWU5RixHQUFHa0csUUFBUTNELFVBSTFDLElB
REEzSSxLQUE9CksyRyxzQkFBd0JqRCxPQUFRK0gsRUFBTS9ILE9BQVFrRCxPQUFRLG9CQUNuQyxX
QUFuQndGLEVBQTZCLENBQ2hDLEdBQUlHLEdBQT0KY3hNLEVBQVEwRyxPQUFTLFNBQ25DekcsTUFB
SzZMLDJCQUE2QkosTUFBT0EsRUFDUEwsY0FBZUEsRUFDZkUsVUFBV0EsRUFDWDdFPQosT0FBUThG
LEVBQ1JoQixVQUFXQSxFQUNYQyxNQUFPQSxRQUNwQyxJQUF3QixTQUFuQlksRUFBMkIsQ0FDckMs
R0FBSUcsR0FBY3g9Ck0sRUFBUTBHLE9BQVMsT0FDbkN6RyxNQUFLd00sZ0NBQWtDZixNQUFRQSxF
QUNSRixVQUFXQSxFQUNYQyxNQUFPQSxFQUNQL0UsTz0KQUFROEYsT0FLckR0RCwrQkFBZ0MsU0FB
U3hELEdBQ3ZDLEdBQUlnSCxHQUFtQixHQUFJM08sR0FBa0I0TyxpQkFBaUJoTixHQUFHPQorRixJ
QUM3RG5ELEVBQU90QyxJQUNYeU0sR0FBaUJsSCxPQUNmekIsUUFBUyxTQUFTMkksR0FDaEIsR0FB
SUUsR0FBNEJySyxFQUE9CktzSyx5QkFDckN0SyxHQUFLakQsVUFBVXNLLElBQUlsRSxHQUFZMUIs
S0FBSzhJLFNBQWFKLElBQ2pEbkssRUFBS25ELE1BQU0rQj0KLElBQUlLLEtBQUssNkJBQTZCSixL
QUFLd0wsR0FBMkJGLGlCQUFrQkEsRUFBaUJ2SCxPQUFPNEgsY0FFN0h6SSxNQUFPLFNBQVNDPQos
RUFBT0MsR0FFbkIxRyxFQUFXd0csTUFEd0IsbUJBQTFCRSxHQUFTQyxhQUNERCxFQUFTQyxhQUFh
QyxRQUV0Qix5QkFTekJvRSw9CjBCQUE0QixXQUMxQixHQUFJa0UsR0FBZS9NLEtBQUtiLE1BQU0r
QixJQUFJSyxLQUFNLDZCQUE4QkEsS0FBTSxZQUN4RXlMLEtBQz0KQUMsSUFDSixJQUFLRixFQUFh
ckosT0FBUyxFQUN6QjdGLEVBQVdpSCxLQUFNLDRDQUNaLENBQ0w5RSxLQUFLYixNQUFNcUcsY0FB
PQplLE9BQzFCdUgsRUFBYWpILEtBQUssV0FDaEIsR0FBSW9ILEdBQU1wTCxFQUFHOUIsS0FBSytG
LGVBQWdCOEIsS0FBTSxLQUNqQ3E9CkYsSUFDSEYsRUFBb0I5RyxLQUFNZ0gsSUFHaEMsS0FBTSxH
QUFJOUcsR0FBSTRHLEVBQW9CdEosT0FBUyxFQUFHMEMsR0FBSyxFQT0KQUdBLElBQU0sQ0FDMUQr
RyxtQkFBcUJILEVBQW9CNUcsRUFDekMsSUFBSWdILEdBQWMsR0FBSXRQLEdBQWtCdVAsSUFDeENE
LEdBPQpBWXpKLEtBQVFpRSxPQUFPYixjQUFnQkEsY0FBY0MsS0FBTyxLQUFRLGVBQWlCaEgsS0FB
S0QsUUFBUUwsR0FBSyxZQUMzRzBOLEU9CkFBWXJKLEtBQU91SixZQUFjSCxxQkFDakNGLEVBQVkv
RyxLQUFNa0gsR0FFcEJwTixLQUFLMkcsc0JBQXdCakQsT0FBUXVKLEVBQT0KWXZKLE9BQVFrRCxP
QUFRLG9CQUNqRTVHLEtBQUt1TixvQkFBcUJOLEtBVTlCaEcsOEJBQStCLFNBQVV1RyxFQUFrQjlI
LEdBQ3pEPQosR0FBSXBELEdBQU90QyxLQUNQeU4sRUFBY0QsRUFBaUJFLEtBQ25DLElBQTJCLG1C
QUFmRCxHQVNWLE1BUnVELEtBQWxEek4sS0E9CkFLRCxRQUFRaEIsbUJBQW1CRSxjQUNuQ3BCLEVB
QVdpRyxRQUFTLDZFQUE4RSxJQUFNNkosUUFBUyxXQUFhL0YsT0FBT2dHLFNBQT0KUyxPQUNwSTVO
LEtBQUtELFFBQVFoQixtQkFBbUJFLGdCQUFrQmUsS0FBS0QsUUFBUWhCLG1CQUFtQkMsYUFDNUZu
QixFQUFXd0csPQpNQUFPLGtFQUNSckUsS0FBS0QsUUFBUWhCLG1CQUFtQkUsY0FBZ0JlLEtBQUtE
LFFBQVFoQixtQkFBbUJDLGNBQzFGbkIsRUFBV2c9ClEsUUFBUyxnR0FBaUcsSUFBTUYsUUFBUyxX
QUFhL0YsT0FBT2dHLFNBQVMsT0FFbktsTixPQUFPdkIsTUFBTTZDLFFBQ04sQ0FFVD0KLElBQUk4
TCxHQUFVaE0sRUFBRWlNLEtBQU1OLEVBQVk1SixNQUFRMkMsUUFBU2lILEVBQVlqSCxRQUFTQyxP
QUFRZ0gsRUFBWWhIPQosU0FFNUZxSCxHQUFRRSxLQUFNLFdBQ0oxTCxFQUFLNEUsaUJBQ0w1RSxF
QUFLMkUsOEJBQStCdUcsRUFBa0I5SCxLQUV2RHVJLEs9CkFBTSxXQUNMM0wsRUFBS3ZDLFFBQVFo
QixtQkFBbUJFLGVBQWlCLEVBQ2pEcUQsRUFBSzRFLGlCQUNMNUUsRUFBSzJFLDhCQUErQj0KdUcs
RUFBa0I5SCxNQVNsRThHLCtCQUFnQyxTQUFVek0sR0FFeEMsR0FBSWlGLEdBQU9oRixLQUNQeU4s
RUFBYzFOLEVBQVEwTCxNPQpBQU1pQyxLQUNoQyxJQUE0QixtQkFBaEJELEdBT1YsTUFOdUQsS0FB
bER6TixLQUFLRCxRQUFRaEIsbUJBQW1CRSxlQUNuQ3BCLEU9CkFBV2lHLFFBQVMsbURBQ3BCcEQs
T0FBT3ZCLE1BQU02QyxRQUVibkUsRUFBV3dHLE1BQU8sc0JBRWIsQ0FFVCxJQUFJeUosR0FBVT0K
aE0sRUFBRWlNLEtBQU1qTSxFQUFFb00sTUFBUXRHLE9BQU9iLGNBQWdCQSxjQUFjQyxLQUFPLEtB
QVEsNENBQThDaEMsRUFBS3RGPQosR0FDcEYsV0FBYUssRUFBUTBHLE9BQ3JCLFNBQVdnSCxFQUNY
LGNBQWdCMU4sRUFBUXdMLFVBQ3hCLFVBQVl4TCxFQUFReUwsT0E9CkN2RXNDLEdBQVFFLEtBQU0s
V0FDSmhKLEVBQUtrQyxpQkFDTGxDLEVBQUt3SCwrQkFBZ0N6TSxLQUV0Q2tPLEtBQU0sV0FDTGpK
LD0KRUFBS2pGLFFBQVFoQixtQkFBbUJFLGVBQWlCLEVBQ2pEK0YsRUFBS2tDLGlCQUNMbEMsRUFB
S3dILCtCQUFnQ3pNLE1BYWpEOEwsPQowQkFBMkIsU0FBVTlMLEdBRW5DLEdBQUlpRixHQUFPaEYs
S0FDUHlOLEVBQWMxTixFQUFRMEwsTUFBTWlDLEtBQ2hDLElBQTBCLG09CkJBQWZELEdBUVQsTUFQ
c0QsS0FBbER6TixLQUFLRCxRQUFRaEIsbUJBQW1CRSxlQUNsQ3BCLEVBQVdpRyxRQUFRLHlFQUNu
QnBELD0KT0FBT3ZCLE1BQU02QyxRQUdibkUsRUFBV3dHLE1BQU0sc0JBRVosQ0FFVCxJQUFJeUos
R0FBVWhNLEVBQUVpTSxLQUFNak0sRUFBPQpFb00sTUFBUXRHLE9BQU9iLGNBQWdCQSxjQUFjQyxL
QUFPLEtBQVEsNENBQThDaEMsRUFBS3RGLEdBQ2pGLFdBQWFLLEVBQVEwRyw9Ck9BQ3JCLFNBQVdn
SCxFQUNYLGtCQUFvQjFOLEVBQVFxTCxjQUM1QixjQUFnQnJMLEVBQVF1TCxVQUN4QixjQUFnQnZM
LEVBQVF3TD0KLFVBQ3hCLFVBQVl4TCxFQUFReUwsT0FDMUVzQyxHQUFRRSxLQUFLLFdBQ0hoSixF
QUFLa0MsaUJBQ0xsQyxFQUFLNkcsMEJBQTJCPQo5TCxLQUVqQ2tPLEtBQUssV0FDSmpKLEVBQUtq
RixRQUFRaEIsbUJBQW1CRSxlQUFpQixFQUNqRCtGLEVBQUtrQyxpQkFDTGxDLEU9CkFBSzZHLDBC
QUEyQjlMLE1BUzVDd04sb0JBQXFCLFNBQVVZLEdBQzdCLEdBQUk3TCxHQUFPdEMsSUFDWEEsTUFB
S29PLFdBQWEsRz0KQUFJdFEsR0FBa0J1USxNQUN4QyxJQUFJWixHQUFjVSxFQUFTVCxLQUMzQixJ
QUEyQixtQkFBZkQsR0FTVixNQVJ1RCxLQUFsRHpOPQosS0FBS0QsUUFBUWhCLG1CQUFtQkUsY0FD
bkNwQixFQUFXaUcsUUFBUyxzREFDVjlELEtBQUtELFFBQVFoQixtQkFBbUJFLGdCQUE9CmtCZSxL
QUFLRCxRQUFRaEIsbUJBQW1CQyxhQUM1Rm5CLEVBQVd3RyxNQUFPLGdFQUNSckUsS0FBS0QsUUFB
UWhCLG1CQUFtQkUsYz0KQUFnQmUsS0FBS0QsUUFBUWhCLG1CQUFtQkMsY0FDMUZuQixFQUFXZ1Es
UUFBUyx5REFFdEJuTixPQUFPdkIsTUFBTTZDLE9BQ05oPQpDLEtBQUtvTyxVQUVkLElBQUlOLEdB
QVVoTSxFQUFFaU0sS0FBTU4sRUFBWTVKLE1BQVF5SixZQUFhRyxFQUFZOUQsSUFBSyxpQkE9CkV4
RW1FLEdBQVFFLEtBQU0sU0FBVTFKLEdBQ2Q1RCxPQUFPdUQsVUFBVUMsZUFBZUMsV0FBV0MsSUFB
S0UsR0FDaERoQyxFQUFLND0KRSxpQkFDTDVFLEVBQUtpTCxvQkFBcUJZLEtBRTNCRixLQUFNLFdB
Q0wzTCxFQUFLdkMsUUFBUWhCLG1CQUFtQkUsZUFBaUIsRUFDPQpqRHFELEVBQUs0RSxpQkFDTDVF
LEVBQUtpTCxvQkFBcUJZLE1BU3RDRyx1QkFBd0IsU0FBVUMsR0FDbEMsR0FBSWpNLEdBQU90Qyw9
CklBQ1hBLE1BQUt3TyxjQUFnQixHQUFJMVEsR0FBa0J1USxNQUMzQyxJQUFJWixHQUFjYyxFQUFn
QmIsS0FDbEMsSUFBNEIsbUJBQT0KaEJELEdBU1YsTUFSdUQsS0FBbER6TixLQUFLRCxRQUFRaEIs
bUJBQW1CRSxjQUNuQ3BCLEVBQVdpRyxRQUFTLGdDQUNWOUQsS0FBPQpLRCxRQUFRaEIsbUJBQW1C
RSxnQkFBa0JlLEtBQUtELFFBQVFoQixtQkFBbUJDLGFBQzVGbkIsRUFBV3dHLE1BQU8sbUdBQ1Jy
RSw9CktBQUtELFFBQVFoQixtQkFBbUJFLGNBQWdCZSxLQUFLRCxRQUFRaEIsbUJBQW1CQyxjQUMx
Rm5CLEVBQVdnUSxRQUFTLDZGQUV0Qj0Kbk4sT0FBT3ZCLE1BQU02QyxPQUNOaEMsS0FBS3dPLGFB
RWQsSUFBSVYsR0FBVWhNLEVBQUVpTSxLQUFNTixFQUFZZ0IsVUFFbENYPQosR0FBUUUsS0FBTSxT
QUFVVSxHQUlkLEdBSEFoTyxPQUFPdUQsVUFBVUMsZUFBZUMsV0FBV21FLE9BQVFtRixFQUFZL04s
SUFDL0Q9CjRDLEVBQUs0RSxpQkFFQXhHLE9BQU91RCxVQUFVQyxlQUFlbkUsUUFBUTRPLGdCQUFp
QixDQUM1RCxHQUFJQyxHQUFlLElBQ0QsWT0KQUFkRixFQUFLMUssTUFBMEMsa0JBQXJCMEssRUFB
S0csWUFDakNELEVBQWUsR0FBSTlRLEdBQWtCc0YsY0FBZXNMLEdBQzdCLFNBPQpBZEEsRUFBSzFL
LE1BQXdDLG1CQUFyQjBLLEVBQUtHLFlBQ3RDRCxFQUFlLEdBQUk5USxHQUFrQnVQLEtBQU1xQixJ
QUUzQ3pDLFE9CkFBUTVILE1BQU0sb0NBQ2Q0SCxRQUFRNUgsTUFBTXFLLEVBQUsxSyxNQUFRMEss
RUFBS0csY0FFbENuTyxPQUFPdUQsVUFBVUMsZT0KQUFlQyxXQUFXQyxJQUFLd0ssR0FFbER0TSxF
QUFLZ00sdUJBQXdCQyxLQUU5Qk4sS0FBTSxXQUNMM0wsRUFBS3ZDLFFBQVFoQixtPQpCQUFtQkUs
ZUFBaUIsRUFDakRxRCxFQUFLNEUsaUJBQ0w1RSxFQUFLZ00sdUJBQXdCQyxNQU92Q08sb0JBQXFC
LFNBQVMzTSxHQUU9CjFCekIsT0FBT3VELFVBQVVDLGVBQWU2SyxZQUQ5QjVNLEVBQU1nSCxPQUFP
NkYsU0FDOEJMLGlCQUFpQixJQUVqQkEsaUJBQWlCLD0KS0FPbEVNLHVCQUF3QixXQUN0QixHQUFJ
cEssR0FBZ0IvQyxFQUFFLGlCQUFpQlAsS0FBSyxXQUM1QyxJQUE0QixJQUF6QnNELEVBPQpBY25C
LE9BQ2I3RixFQUFXaUgsS0FBSywwREFDYixDQUNMLEdBQUl2QyxHQUFXdkMsS0FBSytMLHFDQUNw
Qi9MLE1BQUtiLE1BQVE9CnVCLE9BQU92QixNQUNwQmEsS0FBS2IsTUFBTTRDLE1BQ1BVLGdCQUFr
QixFQUNsQkMsTUFBa0IsNkJBQ2xCQyxLQUFrQkosTUFDbD0KQkssU0FDSUcsTUFBYyxXQUFZckMs
T0FBT3ZCLE1BQU02QyxXQUkvQ2hDLEtBQUtELFFBQVFoQixtQkFBbUJDLGFBQWUsRUFDL0NnPQpC
LEtBQUtELFFBQVFoQixtQkFBbUJFLGNBQWdCLENBRWhELElBQUkyRyxNQUNBQyxJQUNKaEIsR0FB
Y2lCLEtBQUssV0FDNkIsS0E9CkF4QzlGLEtBQUsrRixjQUFjQSxjQUFjckcsS0FDeUIsS0FBdERN
LEtBQUsrRixjQUFjQSxjQUFjckcsR0FBR3dQLFVBQVUsRUFBRT0KLEdBQ2xEckosRUFBV0ssS0FB
S2xHLEtBQUsrRixjQUFjQSxjQUFjckcsSUFFakRrRyxFQUFZTSxLQUFLbEcsS0FBSytGLGNBQWNB
PQosY0FBY3JHLE1BSzVELElBQUl5UCxHQUFjdkosRUFBWWxDLE9BQVNtQyxFQUFXbkMsTUFDbEQx
RCxNQUFLb0gsYUFBZSxJQUFNK0g9CixFQUMxQm5QLEtBQUttSCxTQUFXLENBSWhCLEtBQUssR0FE
RG9ILE1BQ0tuSSxFQUFJUixFQUFZbEMsT0FBUyxFQUFHMEMsR0FBSz0KLEVBQUdBLElBQUssQ0FD
OUMsR0FBSWdKLEdBQVUsR0FBSXRSLEdBQWtCdVAsTUFBTTNOLEdBQUdrRyxFQUFZUSxJQUN6RG1J
LEdBPQpBZ0JySSxLQUFLa0osR0FFekIsSUFBSyxHQUFJaEosR0FBSVAsRUFBV25DLE9BQVMsRUFB
RzBDLEdBQUssRUFBR0EsSUFBSyxDQUM9CjdDLEdBQUlqRCxHQUFTLEdBQUlyRixHQUFrQnNGLGVB
QWUxRCxHQUFHbUcsRUFBV08sSUFDaEVtSSxHQUFnQnJJLEtBQUsvQyxHQT0KR3pCbkQsS0FBS0Qs
UUFBUWhCLG1CQUFtQkMsYUFBZW1RLEVBQVl6TCxPQUUzRDFELEtBQUtzTyx1QkFBdUJDLEtBS2hD
YyxZQUFhPQosV0FDWCxHQUFJQyxHQUFhNU8sT0FBT3VELFVBQVVDLGVBQWVxTCxnQkFBZ0JDLFdB
QVdDLFNBQVNDLGtCQUNqRkMsRUFBVSxLQUM9ClYzSyxFQUFPaEYsSUFDOEIsUUFBckNVLE9BQU91
RCxVQUFVMkwsaUJBQ25CRCxFQUFValAsT0FBT3VELFVBQVUyTCxnQkFBZ0J6TD0KLFdBQVd3RixJ
QUFJMkYsR0FDMUR0UCxLQUFLNlAsaUJBQWlCRixLQUV0QkEsRUFBVSxHQUFJN1IsR0FBa0JnUyxT
QUFTcFEsR0FBPQpJNFAsSUFDN0NLLEVBQVFwSyxPQUNOekIsUUFBUyxXQUNQa0IsRUFBSzZLLGlC
QUFpQkYsSUFFeEJ0TCxNQUFPLFNBQVNDLEVBQU89CkMsR0FFbkIxRyxFQUFXd0csTUFEd0IsbUJB
QTFCRSxHQUFTQyxhQUNERCxFQUFTQyxhQUFhQyxRQUV0QiwwQkFPM0JvTCxpQkFBaz0KQixTQUFT
RixHQUN6QixHQUFJcE4sR0FBV3ZDLEtBQUsrUCx3QkFDcEIvUCxNQUFLYixNQUFRdUIsT0FBT3ZC
LE1BQ3BCYSxLQUFLPQpiLE1BQU00QyxNQUNQVSxnQkFBa0IsRUFDbEJDLE1BQWtCLHNCQUNsQkMs
S0FBa0JKLEdBQVVvTixRQUFRQSxJQUNwQy9NLFNBQ0k9CkcsTUFBYyxXQUFZckMsT0FBT3ZCLE1B
QU02QyxZQUtqRGdPLGdCQUFpQixTQUFTalEsR0FDeEIsT0FBT0EsRUFBUTBHLFFBQ2IsST0KQUFL
LFVBQ0h6RyxLQUFLdUksMEJBQ0wsTUFDRixLQUFLLFlBQ0h2SSxLQUFLdUssa0NBQW9DOUQsT0FB
USxhQUNqRCxNQUNGLEtBPQpBSyxPQUNIekcsS0FBS3FKLDBCQUNMLE1BQ0YsS0FBSyxVQUNIckos
S0FBS3VLLGtDQUFvQzlELE9BQVEsV0FDakQsTUFDRixTQUM9CkUvRixPQUFPdUQsVUFBVThFLGVB
QWVDLE9BQ2hDbkwsRUFBV3dHLE1BQU0sNEJBUXZCNEwsbUJBQW9CLFdBQ2xCLEdBQUlDLEdBQT0K
bUJDLE9BQVEsOENBQStDelAsT0FBT3VELFVBQVVtTSxZQUFZekcsSUFBSyxvQkFDckYsT0FBcEJ1
RyxHQUFnQ0EsR0FBb0J6TyxTPQpBQVV5TyxLQUNqRXhQLE9BQU91RCxVQUFVbU0sWUFBWXJNLEtB
QU9tTSxpQkFBb0J6TyxTQUFVeU8sS0FDbEV4UCxPQUFPdUQsVUE9CkFVQyxlQUFlL0QsUUFBVVQs
R0FBSU0sS0FBS0QsUUFBUUwsR0FBSThCLFVBQVcsTUFJaEZuQixnQkFBaUIsV0F1RWYsTUF0RUFn
UT0KLGVBR0FBLFdBQVduSyxLQUFLLHlDQUVoQm1LLFdBQVduSyxLQUFLLCtCQUNoQm1LLFdBQVdu
SyxLQUFLLDBDQUNoQm1LLFdBQVduPQpLLEtBQUssbURBQ2hCbUssV0FBV25LLEtBQUssb0VBRWhC
bUssV0FBV25LLEtBQUsscUJBQ2hCbUssV0FBV25LLEtBQUssdUdBQ2g9CkJtSyxXQUFXbkssS0FB
SyxXQUNoQm1LLFdBQVduSyxLQUFLLHNGQUNoQm1LLFdBQVduSyxLQUFLLFlBQ2hCbUssV0FBV25L
LEtBQT0KSyxVQUNoQm1LLFdBQVduSyxLQUFLLHdSQUVoQm1LLFdBQVduSyxLQUFLLDJDQUNoQm1L
LFdBQVduSyxLQUFLLHNFQUNoQm1LLFdBPQpBV25LLEtBQUssMElBQ2hCbUssV0FBV25LLEtBQUss
c0dBQ2hCbUssV0FBV25LLEtBQUssa0JBQ2hCbUssV0FBV25LLEtBQUssK0M9CkFDaEJtSyxXQUFX
bkssS0FBSyxrRkFDaEJtSyxXQUFXbkssS0FBSyw4REFDaEJtSyxXQUFXbkssS0FBSyx5RkFDaEJt
SyxXQUFXbj0KSyxLQUFLLFdBQ2hCbUssV0FBV25LLEtBQUssc0RBRWhCbUssV0FBV25LLEtBQUss
Z0NBQ2hCbUssV0FBV25LLEtBQUssbURBRWhCPQptSyxXQUFXbkssS0FBSyx5REFDaEJtSyxXQUFX
bkssS0FBSyx1RkFDaEJtSyxXQUFXbkssS0FBSyxXQUVoQm1LLFdBQVduSyxLQUE9Ckssc0RBQ2hC
bUssV0FBV25LLEtBQUssMkVBQ2hCbUssV0FBV25LLEtBQUssV0FDaEJtSyxXQUFXbkssS0FBSyxX
QUNoQm1LLFdBQT0KV25LLEtBQUssY0FDaEJtSyxXQUFXbkssS0FBSyxhQUNoQm1LLFdBQVduSyxL
QUFLLGtCQUNoQm1LLFdBQVduSyxLQUFLLHdRQUNoPQpCbUssV0FBV25LLEtBQUssV0FFaEJtSyxX
QUFXbkssS0FBSyx3UkFDaEJtSyxXQUFXbkssS0FBSyw4R0FDaEJtSyxXQUFXbkssS0E9CkFLLDRK
QUNoQm1LLFdBQVduSyxLQUFLLGtGQUNoQm1LLFdBQVduSyxLQUFLLGtCQUNoQm1LLFdBQVduSyxL
QUFLLCtDQUNoQm1LLD0KV0FBV25LLEtBQUssMkVBQ2hCbUssV0FBV25LLEtBQUssMkVBQ2hCbUss
V0FBV25LLEtBQUssd0VBQ2hCbUssV0FBV25LLEtBQUssPQpjQUNoQm1LLFdBQVduSyxLQUFLLGFB
Q2hCbUssV0FBV25LLEtBQUssdVJBQ2hCbUssV0FBV25LLEtBQUssdVFBQ2hCbUssV0FBV249Ckss
S0FBSyx1VEFDaEJtSyxXQUFXbkssS0FBSyxXQUNoQm1LLFdBQVduSyxLQUFLLFdBR2hCbUssV0FB
V25LLEtBQUssb0NBQ2hCbT0KSyxXQUFXbkssS0FBSyxXQUNoQm1LLFdBQVduSyxLQUFLLFVBR1Rq
RyxFQUFFc0MsU0FBUzhOLFdBQVdDLEtBQUssTUFHcENQLHVCPQpBQXdCLFdBY3RCLE1BYkFNLGVB
RUFBLFdBQVduSyxLQUFLLDZCQUNoQm1LLFdBQVduSyxLQUFLLDBCQUNoQm1LLFdBQVduSyxLQUE9
CksscUNBQ2hCbUssV0FBV25LLEtBQUssaUNBQ2hCbUssV0FBV25LLEtBQUssNENBQ2hCbUssV0FB
V25LLEtBQUssOEJBQ2hCbUssVz0KQUFXbkssS0FBSyx5Q0FDaEJtSyxXQUFXbkssS0FBSyxnSkFF
aEJtSyxXQUFXbkssS0FBSyxVQUVUakcsRUFBRXNDLFNBQVM4TixXPQpBQVdDLEtBQUssTUFHcEM5
Tix5QkFBMEIsV0FVeEIsTUFUQTZOLGVBRUFBLFdBQVduSyxLQUFLLCtCQUNoQm1LLFdBQVduSyxL
QUE9CkssVUFDaEJtSyxXQUFXbkssS0FBSywrREFDaEJtSyxXQUFXbkssS0FBSyw2RUFDaEJtSyxX
QUFXbkssS0FBSyxXQUNoQm1LLFdBQT0KV25LLEtBQUssVUFFVGpHLEVBQUVzQyxTQUFTOE4sV0FB
V0MsS0FBSyxNQUlwQ3JMLDBCQUE0QixXQUMxQixHQUFJb0wsS0FXSixPPQpBVEFBLEdBQVduSyxL
QUFLLGlHQUNoQm1LLEVBQVduSyxLQUFLLG9CQUNoQm1LLEVBQVduSyxLQUFLLHlHQUNoQm1LLEVB
QVduSyw9CktBQUssa0RBQ2hCbUssRUFBV25LLEtBQUssMkdBQ2hCbUssRUFBV25LLEtBQUssZ0JB
Q2hCbUssRUFBV25LLEtBQUssYUFDaEJtSz0KLEVBQVduSyxLQUFLLFdBRVRqRyxFQUFFc0MsU0FB
UzhOLEVBQVdDLEtBQUssTUFHcEN0RSxxQ0FBdUMsV0FDckMsR0FBSXFFLEtBPQpZSixPQVZBQSxH
QUFXbkssS0FBSyw2QkFDaEJtSyxFQUFXbkssS0FBSywrRUFDaEJtSyxFQUFXbkssS0FBSyxVQUNo
Qm1LLEVBQVc9Cm5LLEtBQUssMEJBQ2hCbUssRUFBV25LLEtBQUssb0pBQ2hCbUssRUFBV25LLEtB
QUssMkRBQ2hCbUssRUFBV25LLEtBQUssYUFDaD0KQm1LLEVBQVduSyxLQUFLLFVBQ2hCbUssRUFB
V25LLEtBQUssSUFFVGpHLEVBQUVzQyxTQUFTOE4sRUFBV0MsS0FBSyxNQUdwQ3hFPQosa0NBQW1D
LFdBQ2pDLEdBQUl1RSxLQVlKLE9BVkFBLEdBQVduSyxLQUFLLDZCQUNoQm1LLEVBQVduSyxLQUFL
LGtGQUNoQm1LLEU9CkFBV25LLEtBQUssVUFDaEJtSyxFQUFXbkssS0FBSywwQkFDaEJtSyxFQUFX
bkssS0FBSyxvSkFDaEJtSyxFQUFXbkssS0FBSywyRD0KQUNoQm1LLEVBQVduSyxLQUFLLGFBQ2hC
bUssRUFBV25LLEtBQUssVUFDaEJtSyxFQUFXbkssS0FBSyxJQUVUakcsRUFBRXNDLFNBPQpBUzhO
LEVBQVdDLEtBQUssTUFHcEN2RSxvQ0FBcUMsV0FDbkMsR0FBSXNFLEtBV0osT0FUQUEsR0FBV25L
LEtBQUssNkJBQ2hCbUs9CixFQUFXbkssS0FBSyxVQUNoQm1LLEVBQVduSyxLQUFLLDBCQUNoQm1L
LEVBQVduSyxLQUFLLG9KQUNoQm1LLEVBQVduSyxLQUFLLD0KMkRBQ2hCbUssRUFBV25LLEtBQUss
YUFDaEJtSyxFQUFXbkssS0FBSyxVQUNoQm1LLEVBQVduSyxLQUFLLElBRVRqRyxFQUFFc0MsPQpT
QUFTOE4sRUFBV0MsS0FBSyxNQUdwQzlGLHFCQUFzQixXQUNwQixHQUFJNkYsS0FvQ0osT0FsQ0FB
LEdBQVduSyxLQUFLLGlDQUM9CmhCbUssRUFBV25LLEtBQUssMkhBQ2hCbUssRUFBV25LLEtBQUss
eUxBR2hCbUssRUFBV25LLEtBQUssb0NBQ2hCbUssRUFBV25LLD0KS0FBSyxnQ0FDaEJtSyxFQUFX
bkssS0FBSyx1SUFDaEJtSyxFQUFXbkssS0FBSyxZQUNoQm1LLEVBQVduSyxLQUFLLGdDQUNoQm1L
PQosRUFBV25LLEtBQUssdUhBQ2hCbUssRUFBV25LLEtBQUssWUFDaEJtSyxFQUFXbkssS0FBSyxV
QUNoQm1LLEVBQVduSyxLQUFLLG89CkNBQ2hCbUssRUFBV25LLEtBQUssbUZBQ2hCbUssRUFBV25L
LEtBQUssNkZBQ2hCbUssRUFBV25LLEtBQUssZ0NBQ2hCbUssRUFBVz0KbkssS0FBSyxhQUNoQm1L
LEVBQVduSyxLQUFLLDJFQUNoQm1LLEVBQVduSyxLQUFLLHVFQUNoQm1LLEVBQVduSyxLQUFLLGlD
QUNoPQpCbUssRUFBV25LLEtBQUssYUFDaEJtSyxFQUFXbkssS0FBSyxVQUNoQm1LLEVBQVduSyxL
QUFLLDZCQUNoQm1LLEVBQVduSyxLQUE9CkssVUFFaEJtSyxFQUFXbkssS0FBSyxVQUNoQm1LLEVB
QVduSyxLQUFLLG1GQUNoQm1LLEVBQVduSyxLQUFLLFNBQ2hCbUssRUFBVz0KbkssS0FBSyxpRkFD
aEJtSyxFQUFXbkssS0FBSywrRUFDaEJtSyxFQUFXbkssS0FBSyxVQUNoQm1LLEVBQVduSyxLQUFL
LFVBRVRqPQpHLEVBQUVzQyxTQUFTOE4sRUFBV0MsS0FBSyxNQUdwQ2hILHdCQUF5QixXQUN2QixH
QUFJK0csS0EyQkosT0F6QkFBLEdBQVduSyw9CktBQUssaUNBQ2hCbUssRUFBV25LLEtBQUssZ0tB
RWhCbUssRUFBV25LLEtBQUssdUNBQ2hCbUssRUFBV25LLEtBQUssNkRBQ2hCbT0KSyxFQUFXbkss
S0FBSyw2RkFDaEJtSyxFQUFXbkssS0FBSyxnQ0FDaEJtSyxFQUFXbkssS0FBSyxhQUNoQm1LLEVB
QVduSyxLQUFLPQoscURBQ2hCbUssRUFBV25LLEtBQUssdUVBQ2hCbUssRUFBV25LLEtBQUssaUNB
Q2hCbUssRUFBV25LLEtBQUssYUFDaEJtSyxFQUE9ClduSyxLQUFLLFVBRWhCbUssRUFBV25LLEtB
QUssOEpBRWhCbUssRUFBV25LLEtBQUssVUFDaEJtSyxFQUFXbkssS0FBSyxtRkFDaD0KQm1LLEVB
QVduSyxLQUFLLFNBQ2hCbUssRUFBV25LLEtBQUssaUZBQ2hCbUssRUFBV25LLEtBQUssK0VBQ2hC
bUssRUFBV25LLEtBPQpBSyxVQUVoQm1LLEVBQVduSyxLQUFLLFVBRVRqRyxFQUFFc0MsU0FBUzhO
LEVBQVdDLEtBQUssTUFHcEM3SCw0QkFBNkIsV0FDM0I9CixHQUFJNEgsS0FpQkosT0FmQUEsR0FB
V25LLEtBQUssOEJBQ2hCbUssRUFBV25LLEtBQUssdUNBQ2hCbUssRUFBV25LLEtBQUsscT0KQkFD
aEJtSyxFQUFXbkssS0FBSywrRUFDaEJtSyxFQUFXbkssS0FBSyxrREFDaEJtSyxFQUFXbkssS0FB
SztBQUNoQm1LLEVBQVduPQpLLEtBQUssZ0JBQ2hCbUssRUFBV25LLEtBQUssYUFDaEJtSyxFQUFX
bkssS0FBSyxVQUNoQm1LLEVBQVduSyxLQUFLLFNBQ2hCbUs9CixFQUFXbkssS0FBSyx1Q0FFaEJt
SyxFQUFXbkssS0FBSyxVQUNoQm1LLEVBQVduSyxLQUFLLFVBRVRqRyxFQUFFc0MsU0FBUzhOLD0K
RUFBV0MsS0FBSyxNQUdwQzFELHdCQUF5QixXQUN2QixHQUFJeUQsS0FXSixPQVRBQSxHQUFXbkss
S0FBSyxtREFDaEJtSyxFQUFXPQpuSyxLQUFLLFFBQ2hCbUssRUFBV25LLEtBQUssNERBQ2hCbUss
RUFBV25LLEtBQUssMkRBQ2hCbUssRUFBV25LLEtBQUsscUlBQ2g9CkJtSyxFQUFXbkssS0FBSyxV
QUNoQm1LLEVBQVduSyxLQUFLLGNBQ2hCbUssRUFBV25LLEtBQUssU0FFVGpHLEVBQUVzQyxTQUFT
OD0KTixFQUFXQyxLQUFLLE1BR3BDaFAsa0JBQW1CLFdBK0JqQixNQTlCQStPLGVBRUFBLFdBQVdu
SyxLQUFLLDRDQUNoQm1LLFdBQVduPQpLLEtBQUssK0NBQ2hCbUssV0FBV25LLEtBQUssNERBQ2hC
bUssV0FBV25LLEtBQUssaUhBQ2hCbUssV0FBV25LLEtBQUssd0lBQ2g9CkJtSyxXQUFXbkssS0FB
Syw2QkFDaEJtSyxXQUFXbkssS0FBSyxpSEFDaEJtSyxXQUFXbkssS0FBSywySEFDaEJtSyxXQUFX
bkssSz0KQUFLLHNCQUNoQm1LLFdBQVduSyxLQUFLLHlCQUNoQm1LLFdBQVduSyxLQUFLLDhIQUNo
Qm1LLFdBQVduSyxLQUFLLG9JQUNoQm1LPQosV0FBV25LLEtBQUssa0JBQ2hCbUssV0FBV25LLEtB
QUssOEJBQ2hCbUssV0FBV25LLEtBQUssa0dBQ2hCbUssV0FBV25LLEtBQUs9CixnQkFDaEJtSyxX
QUFXbkssS0FBSyxvREFDaEJtSyxXQUFXbkssS0FBSyx1SEFDaEJtSyxXQUFXbkssS0FBSyxzSUFD
aEJtSyxXQT0KQVduSyxLQUFLLHlCQUNoQm1LLFdBQVduSyxLQUFLLHFJQUNoQm1LLFdBQVduSyxL
QUFLLHVKQUNoQm1LLFdBQVduSyxLQUFLLGtCPQpBQ2hCbUssV0FBV25LLEtBQUssWUFDaEJtSyxX
QUFXbkssS0FBSyxhQUNoQm1LLFdBQVduSyxLQUFLLG1NQUNoQm1LLFdBQVduSyw9CktBQUssY0FF
VGpHLEVBQUVzQyxTQUFTOE4sV0FBV0MsS0FBSyxPQUt0QyxRQUNJdFMsa0JBQW1CQSJ9ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQoreyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicmFyeS1mb2xk
ZXJ0b29sYmFyLXZpZXcuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3M9CnJjL212Yy9saWJyYXJ5
L2xpYnJhcnktZm9sZGVydG9vbGJhci12aWV3LmpzIl0sIm5hbWVzIjpbImRlZmluZSIsIm1vZF9t
YXN0aD0KZWFkIiwibW9kX3V0aWxzIiwibW9kX3RvYXN0ciIsIm1vZF9saWJyYXJ5X21vZGVsIiwi
bW9kX3NlbGVjdCIsIkZvbGRlclRvb2xiPQphclZpZXciLCJCYWNrYm9uZSIsIlZpZXciLCJleHRl
bmQiLCJlbCIsImV2ZW50cyIsImNsaWNrICN0b29sYnRuX2NyZWF0ZV9mb2w9CmRlciIsImNsaWNr
ICN0b29sYnRuX2J1bGtfaW1wb3J0IiwiY2xpY2sgI2luY2x1ZGVfZGVsZXRlZF9kYXRhc2V0c19j
aGsiLCJjbD0KaWNrICN0b29sYnRuX3Nob3dfbGliaW5mbyIsImNsaWNrICN0b29sYnRuX2J1bGtf
ZGVsZXRlIiwiY2xpY2sgI3BhZ2Vfc2l6ZV9wPQpyb21wdCIsImRlZmF1bHRzIiwiY2FuX2FkZF9s
aWJyYXJ5X2l0ZW0iLCJjb250YWluc19maWxlX29yX2ZvbGRlciIsImNoYWluX2M9CmFsbF9jb250
cm9sIiwidG90YWxfbnVtYmVyIiwiZmFpbGVkX251bWJlciIsImRpc2FibGVkX2pzdHJlZV9lbGVt
ZW50IiwibW9kYT0KbCIsImpzdHJlZSIsImhpc3RvcmllcyIsInNlbGVjdF9nZW5vbWUiLCJzZWxl
Y3RfZXh0ZW5zaW9uIiwibGlzdF9leHRlbnNpb25zPQoiLCJhdXRvIiwiaWQiLCJ0ZXh0IiwiZGVz
Y3JpcHRpb24iLCJsaXN0X2dlbm9tZXMiLCJpbml0aWFsaXplIiwib3B0aW9ucyIsInQ9CmhpcyIs
Il8iLCJmZXRjaEV4dEFuZEdlbm9tZXMiLCJyZW5kZXIiLCJ0b29sYmFyX3RlbXBsYXRlIiwidGVt
cGxhdGVUb29sQmFyIj0KLCJ0ZW1wbGF0ZV9kZWZhdWx0cyIsImlzX2FkbWluIiwiaXNfYW5vbnlt
IiwibXV0aXBsZV9hZGRfZGF0YXNldF9vcHRpb25zIiwiPQpHYWxheHkiLCJjdXJyVXNlciIsImlz
QWRtaW4iLCJpc0Fub255bW91cyIsImNvbmZpZyIsInVzZXJfbGlicmFyeV9pbXBvcnRfZGk9CnIi
LCJhbGxvd19saWJyYXJ5X3BhdGhfcGFzdGUiLCJsaWJyYXJ5X2ltcG9ydF9kaXIiLCIkZWwiLCJo
dG1sIiwicmVuZGVyUGFnaT0KbmF0b3IiLCJwYWdpbmF0b3JfdGVtcGxhdGUiLCJ0ZW1wbGF0ZVBh
Z2luYXRvciIsImZpbmQiLCJzaG93X3BhZ2UiLCJwYXJzZUluPQp0IiwicGFnZV9jb3VudCIsInRv
dGFsX2l0ZW1zX2NvdW50IiwiaXRlbXNfc2hvd24iLCJjb25maWd1cmVFbGVtZW50cyIsIiQiLCI9
CnNob3ciLCJoaWRlIiwidG9vbHRpcCIsImNyZWF0ZUZvbGRlckZyb21Nb2RhbCIsImV2ZW50Iiwi
cHJldmVudERlZmF1bHQiLCJzdD0Kb3BQcm9wYWdhdGlvbiIsInNlbGYiLCJ0ZW1wbGF0ZSIsInRl
bXBsYXRlTmV3Rm9sZGVySW5Nb2RhbCIsImNsb3NpbmdfZXZlbnRzPQoiLCJ0aXRsZSIsImJvZHki
LCJidXR0b25zIiwiQ3JlYXRlIiwiY3JlYXRlX25ld19mb2xkZXJfZXZlbnQiLCJDbG9zZSIsImZv
bGQ9CmVyRGV0YWlscyIsInNlcmlhbGl6ZV9uZXdfZm9sZGVyIiwidmFsaWRhdGVfbmV3X2ZvbGRl
ciIsImZvbGRlciIsIkZvbGRlckFzTT0Kb2RlbCIsInVybF9pdGVtcyIsImhpc3RvcnkiLCJmcmFn
bWVudCIsInNwbGl0IiwiY3VycmVudF9mb2xkZXJfaWQiLCJsZW5ndGgiPQosInVybCIsInVybFJv
b3QiLCJzYXZlIiwic3VjY2VzcyIsInNldCIsInR5cGUiLCJsaWJyYXJpZXMiLCJmb2xkZXJMaXN0
VmlldyI9CiwiY29sbGVjdGlvbiIsImFkZCIsImVycm9yIiwibW9kZWwiLCJyZXNwb25zZSIsInJl
c3BvbnNlSlNPTiIsImVycl9tc2ciLCJuYT0KbWUiLCJ2YWwiLCJtb2RhbEJ1bGtJbXBvcnQiLCJj
aGVja2VkVmFsdWVzIiwiaW5mbyIsInJlZnJlc2hVc2VySGlzdG9yaWVzTGlzPQp0IiwidGhhdCIs
InRlbXBsYXRlQnVsa0ltcG9ydEluTW9kYWwiLCJtb2RlbHMiLCJJbXBvcnQiLCJpbXBvcnRBbGxJ
bnRvSGlzdG89CnJ5IiwiY2FsbGJhY2siLCJHYWxheHlIaXN0b3JpZXMiLCJmZXRjaCIsImRpc2Fi
bGVCdXR0b24iLCJoaXN0b3J5X2lkIiwiaGlzdD0Kb3J5X25hbWUiLCJsYXN0X3VzZWRfaGlzdG9y
eV9pZCIsImRhdGFzZXRfaWRzIiwiZm9sZGVyX2lkcyIsImVhY2giLCJwYXJlbnRFPQpsZW1lbnQi
LCJjbGFzc0xpc3QiLCJjb250YWlucyIsInB1c2giLCJkYXRhc2V0c190b19pbXBvcnQiLCJpIiwi
bGlicmFyeV9kYXQ9CmFzZXRfaWQiLCJoaXN0b3J5SXRlbSIsIkhpc3RvcnlJdGVtIiwiY29udGVu
dCIsInNvdXJjZSIsImxpYnJhcnlfZm9sZGVyX2lkIj0KLCJpbml0Q2hhaW5DYWxsQ29udHJvbCIs
ImFjdGlvbiIsImpRdWVyeSIsImdldEpTT04iLCJnYWxheHlfY29uZmlnIiwicm9vdCIsPQoiY2hh
aW5DYWxsSW1wb3J0aW5nSW50b0hpc3RvcnkiLCJ1cGRhdGVQcm9ncmVzcyIsInByb2dyZXNzIiwi
cHJvZ3Jlc3NTdGVwIiw9CiJ3aWR0aCIsIk1hdGgiLCJyb3VuZCIsInR4dF9yZXByZXNlbnRhdGlv
biIsImRvd25sb2FkIiwiZm9sZGVyX2lkIiwiZm9ybWF0Ij0KLCJ3aW5kb3ciLCJkYXRhIiwibGRf
aWRzIiwicHJvY2Vzc0Rvd25sb2FkIiwibWV0aG9kIiwicGFyYW0iLCJpbnB1dHMiLCJwYWlyPQoi
LCJhcHBlbmRUbyIsInN1Ym1pdCIsInJlbW92ZSIsImFkZEZpbGVzRnJvbUhpc3RvcnlNb2RhbCIs
InRlbXBsYXRlX21vZGFsIiw9CiJ0ZW1wbGF0ZUFkZEZpbGVzRnJvbUhpc3RvcnkiLCJmb2xkZXJf
bmFtZSIsImZ1bGxfcGF0aCIsIkFkZCIsImFkZEFsbERhdGFzZT0KdHNGcm9tSGlzdG9yeSIsImNs
b3NpbmdfY2FsbGJhY2siLCJsaWJyYXJ5X3JvdXRlciIsImJhY2siLCJmZXRjaEFuZERpc3BsYXlI
PQppc3RvcnlDb250ZW50cyIsImNoYW5nZSIsInRhcmdldCIsInZhbHVlIiwiaW1wb3J0RmlsZXNG
cm9tUGF0aE1vZGFsIiwidGVtcGw9CmF0ZUltcG9ydFBhdGhNb2RhbCIsImltcG9ydEZyb21QYXRo
c0NsaWNrZWQiLCJuYXZpZ2F0ZSIsInRyaWdnZXIiLCJyZW5kZXJTZT0KbGVjdEJveGVzIiwiZ2V0
IiwiZGF0YXR5cGVzIiwia2V5IiwiZXh0ZW5zaW9uIiwiZGVzY3JpcHRpb25fdXJsIiwic29ydCIs
ImEiPQosImIiLCJ1bnNoaWZ0IiwiZ2Vub21lcyIsImNzcyIsImNvbnRhaW5lciIsImltcG9ydEZp
bGVzRnJvbUdhbGF4eUZvbGRlck1vZGE9CmwiLCJ0ZW1wbGF0ZUJyb3dzZXJNb2RhbCIsImltcG9y
dEZyb21Kc3RyZWVQYXRoIiwicmVuZGVySnN0cmVlIiwiSnN0cmVlIiwicj0KZXF1aXJlIiwiY29y
ZSIsInBsdWdpbnMiLCJ0eXBlcyIsImljb24iLCJmaWxlIiwiY2hlY2tib3giLCJ0aHJlZV9zdGF0
ZSIsImVyPQpyX2NvZGUiLCJ3YXJuaW5nIiwicHJlc2VydmVfZGlycyIsImlzIiwibGlua19kYXRh
IiwiZmlsZV90eXBlIiwiZGJrZXkiLCJwYXQ9CmhzIiwidmFsaWRfcGF0aHMiLCJ0cmltbWVkIiwi
dHJpbSIsImNoYWluQ2FsbEltcG9ydGluZ0ZvbGRlcnMiLCJ0ZW1wbGF0ZUFkZD0KaW5nRGF0YXNl
dHNQcm9ncmVzc0JhciIsInRlbXBsYXRlRGVsZXRpbmdEYXRhc2V0c1Byb2dyZXNzQmFyIiwidGVt
cGxhdGVJbXBvPQpydEludG9IaXN0b3J5UHJvZ3Jlc3NCYXIiLCJjb25zb2xlIiwic2VsZWN0ZWRf
bm9kZXMiLCJnZXRfc2VsZWN0ZWQiLCJzZWxlY3Q9Cmlvbl90eXBlIiwidW5kZWZpbmVkIiwibGlf
YXR0ciIsImZ1bGxfc291cmNlIiwiY2hhaW5DYWxsSW1wb3J0aW5nVXNlcmRpckZpbD0KZXMiLCJo
aXN0b3J5X2NvbnRlbnRzIiwiSGlzdG9yeUNvbnRlbnRzIiwiaGlzdG9yeV9jb250ZW50c190ZW1w
bGF0ZSIsInRlbXBsPQphdGVIaXN0b3J5Q29udGVudHMiLCJjb250ZW50cyIsInJldmVyc2UiLCJj
aGVja2VkX2hkYXMiLCJoaXN0b3J5X2RhdGFzZXRfaWQ9CnMiLCJoZGFzX3RvX2FkZCIsImhpZCIs
Imhpc3RvcnlfZGF0YXNldF9pZCIsImZvbGRlcl9pdGVtIiwiSXRlbSIsImZyb21faGRhXz0KaWQi
LCJjaGFpbkNhbGxBZGRpbmdIZGFzIiwiaGlzdG9yeV9pdGVtX3NldCIsInBvcHBlZF9pdGVtIiwi
cG9wIiwib25jbGljayIsPQoibG9jYXRpb24iLCJwcm9taXNlIiwid2hlbiIsImRvbmUiLCJmYWls
IiwicG9zdCIsImhkYXNfc2V0IiwiYWRkZWRfaGRhcyIsIkY9Cm9sZGVyIiwiY2hhaW5DYWxsRGVs
ZXRpbmdJdGVtcyIsIml0ZW1zX3RvX2RlbGV0ZSIsImRlbGV0ZWRfaXRlbXMiLCJkZXN0cm95Ij0K
LCJpdGVtIiwiaW5jbHVkZV9kZWxldGVkIiwidXBkYXRlZF9pdGVtIiwibW9kZWxfY2xhc3MiLCJj
aGVja0luY2x1ZGVEZWxldGVkPQoiLCJmZXRjaEZvbGRlciIsImNoZWNrZWQiLCJkZWxldGVTZWxl
Y3RlZERhdGFzZXRzIiwic3Vic3RyaW5nIiwiaXRlbXNfdG90YWw9CiIsImRhdGFzZXQiLCJzaG93
TGliSW5mbyIsImxpYnJhcnlfaWQiLCJmb2xkZXJDb250YWluZXIiLCJhdHRyaWJ1dGVzIiwibWV0
YT0KZGF0YSIsInBhcmVudF9saWJyYXJ5X2lkIiwibGlicmFyeSIsImxpYnJhcnlMaXN0VmlldyIs
InNob3dMaWJJbmZvTW9kYWwiLCJMPQppYnJhcnkiLCJ0ZW1wbGF0ZUxpYkluZm9Jbk1vZGFsIiwi
c2hvd0ltcG9ydE1vZGFsIiwic2hvd1BhZ2VTaXplUHJvbXB0IiwiZm89CmxkZXJfcGFnZV9zaXpl
IiwicHJvbXB0IiwicHJlZmVyZW5jZXMiLCJ0bXBsX2FycmF5Iiwiam9pbiJdLCJtYXBwaW5ncyI6
IkFBQT0KQUEsUUFDSSxrQkFDQSxjQUNBLGNBQ0EsNEJBQ0Esb0JBRUosU0FBVUMsRUFDQUMsRUFD
QUMsRUFDQUMsRUFDQUMsR0FHVixHQUFJPQpDLEdBQW9CQyxTQUFTQyxLQUFLQyxRQUNwQ0MsR0FB
SSxVQUVKQyxRQUNFQywrQkFBd0Msd0JBQ3hDQyw2QkFBd0Msa0JBQ3hDQyw9CnNDQUF3QyxzQkFD
eENDLDhCQUF3QyxjQUN4Q0MsNkJBQXdDLHlCQUN4Q0MsMEJBQXdDLHNCQUkxQ0MsVUFDRUMsc0JB
QTRCLEVBQz0KNUJDLHlCQUE0QixFQUM1QkMsb0JBQzRCQyxhQUFrQixFQUNsQkMsY0FBa0IsR0FF
OUNDLHdCQUE0QixXQUc5QkMsTUFBUSxLQUdSPQpDLE9BQVEsS0FHUkMsVUFBWSxLQUdaQyxjQUFn
QixLQUdoQkMsaUJBQW1CLEtBR25CQyxtQkFHQUMsTUFDSUMsR0FBYyxPQUNkQyw9CktBQWMsY0FD
ZEMsWUFBYyxzWkFTbEJDLGdCQUVBQyxXQUFZLFNBQVNDLEdBQ25CQyxLQUFLRCxRQUFVRSxFQUFF
ckIsU0FBVW1CLD0KTUFBZUMsS0FBS3BCLFVBQy9Db0IsS0FBS0UscUJBQ0xGLEtBQUtHLFVBR1BB
LE9BQVEsU0FBU0osR0FDZkMsS0FBS0QsUUFBVUUsPQpFQUFFOUIsT0FBUTZCLEtBQUtELFFBQVNB
LEVBQ3ZDLElBQUlLLEdBQW1CSixLQUFLSyxrQkFDeEJDLEdBQ0FaLEdBQUlNLEtBQUs9CkQsUUFB
UUwsR0FDakJhLFVBQVUsRUFDVkMsV0FBVyxFQUNYQyw2QkFBNkIsRUFFN0JDLFFBQU9DLFdBQ1RM
LEVBQWtCQyxTQUFXRz0KLE9BQU9DLFNBQVNDLFVBQzdDTixFQUFrQkUsVUFBWUUsT0FBT0MsU0FB
U0UsZUFDQyxPQUExQ0gsT0FBT0ksT0FBT0MseUJBQW9DPQpMLE9BQU9JLE9BQU9FLDRCQUE2QixH
QUE4QyxPQUFyQ04sT0FBT0ksT0FBT0csc0JBQ3ZIWCxFQUFrQkcsNkJBQThCLElBR3BEVCw9CktB
QUtrQixJQUFJQyxLQUFLZixFQUFpQkUsS0FPakNjLGdCQUFpQixTQUFVckIsR0FDdkJDLEtBQUtE
LFFBQVVFLEVBQUU5QixPQT0KQVE2QixLQUFLRCxRQUFTQSxFQUN2QyxJQUFJc0IsR0FBcUJyQixL
QUFLc0IsbUJBQzlCdEIsTUFBS2tCLElBQUlLLEtBQU0scUJBPQpBc0JKLEtBQU1FLEdBQ3ZDM0Is
R0FBSU0sS0FBS0QsUUFBUUwsR0FDakI4QixVQUFXQyxTQUFVekIsS0FBS0QsUUFBUXlCLFdBQ2w9
CkNFLFdBQVlELFNBQVV6QixLQUFLRCxRQUFRMkIsWUFDbkNDLGtCQUFtQjNCLEtBQUtELFFBQVE0
QixrQkFDaENDLFlBQWE1QixLQT0KQUtELFFBQVE2QixnQkFJbENDLGtCQUFtQixTQUFTOUIsR0FD
MUJDLEtBQUtELFFBQVVFLEVBQUU5QixPQUFPNkIsS0FBS0QsUUFBPQpTQSxHQUVsQ0MsS0FBS0Qs
UUFBUWxCLHdCQUF5QixFQUN4Q2lELEVBQUUsc0JBQXNCQyxPQUV4QkQsRUFBRSxzQkFBc0JFLE9B
RXQ9CkJoQyxLQUFLRCxRQUFRakIsMkJBQTRCLEdBQ3ZDNEIsT0FBT0MsU0FDSkQsT0FBT0MsU0FB
U0UsZUFJbkJpQixFQUFFLHlCQUF5Qj0KQyxPQUMzQkQsRUFBRSxnQ0FBZ0NFLFNBSmxDRixFQUFF
LGdDQUFnQ0MsT0FDbENELEVBQUUseUJBQXlCQyxTQVUvQkQsRUFBRSxnPQpDQUFnQ0UsT0FDbENG
LEVBQUUseUJBQXlCRSxRQUU3QmhDLEtBQUtrQixJQUFJSyxLQUFLLGlCQUFpQlUsV0FJakNDLHNC
QUF1Qiw9ClNBQVVDLEdBQy9CQSxFQUFNQyxpQkFDTkQsRUFBTUUsaUJBR04sSUFBSUMsR0FBT3RD
LEtBQ1B1QyxFQUFXdkMsS0FBS3dDLDBCQT0KQ3BCeEMsTUFBS2IsTUFBUXVCLE9BQU92QixNQUNw
QmEsS0FBS2IsTUFBTTRDLE1BQ1BVLGdCQUFrQixFQUNsQkMsTUFBa0Isb0JBPQpDbEJDLEtBQWtC
SixJQUNsQkssU0FDSUMsT0FBYyxXQUFZUCxFQUFLUSwyQkFDL0JDLE1BQWMsV0FBWXJDLE9BQU92
QixNQUFNNkM9CixZQU1qRGMsd0JBQXlCLFdBQ3JCLEdBQUlFLEdBQWdCaEQsS0FBS2lELHNCQUN6
QixJQUFJakQsS0FBS2tELG9CQUFvQkYsR0FBZT0KLENBQ3hDLEdBQUlHLEdBQVMsR0FBSXJGLEdB
QWtCc0YsYUFDbkNDLFdBQVlwRixTQUFTcUYsUUFBUUMsU0FBU0MsTUFBTSxLQUM1PQpDQyxrQkFB
b0JKLFVBQVVBLFVBQVVLLE9BQU8sR0FDL0NQLEVBQU9RLElBQU1SLEVBQU9TLFFBQVVILGtCQUU5
Qk4sRUFBT1UsS0E9CkFLYixHQUNWYyxRQUFTLFNBQVVYLEdBQ2pCekMsT0FBT3ZCLE1BQU02QyxP
QUNibkUsRUFBV2lHLFFBQVEsbUJBQ25CWCxFQUFPWT0KLEtBQUtDLEtBQVMsV0FDckJ0RCxPQUFP
dUQsVUFBVUMsZUFBZUMsV0FBV0MsSUFBSWpCLElBRWpEa0IsTUFBTyxTQUFTQyxFQUFPPQpDLEdB
Q3JCN0QsT0FBT3ZCLE1BQU02QyxPQUVYbkUsRUFBV3dHLE1BRHdCLG1CQUExQkUsR0FBU0MsYUFD
REQsRUFBU0MsYUFBYUM9CixRQUV0Qiw0QkFLdkI1RyxHQUFXd0csTUFBTSw0QkFFckIsUUFBTyxH
QUlYcEIscUJBQXVCLFdBQ25CLE9BQ0l5QixLQUFNNUMsRT0KQUFFLHNCQUFzQjZDLE1BQzlCL0Us
WUFBYWtDLEVBQUUsNkJBQTZCNkMsUUFLcER6QixvQkFBcUIsU0FBU0YsR0FDMUIsTUFBOEIsPQpL
QUF2QkEsRUFBYzBCLE1BS3pCRSxnQkFBa0IsV0FDZCxHQUFJQyxHQUFnQi9DLEVBQUUsaUJBQWlC
UCxLQUFLLFdBQ2hCLEtBQXo9CkJzRCxFQUFjbkIsT0FDYjdGLEVBQVdpSCxLQUFLLHdDQUVoQjlF
LEtBQUsrRSx5QkFBeUIsU0FBU0MsR0FDckMsR0FBSXpDLEdBQT0KV3lDLEVBQUtDLDJCQUNwQkQs
R0FBSzdGLE1BQVF1QixPQUFPdkIsTUFDcEI2RixFQUFLN0YsTUFBTTRDLE1BQ1BVLGdCQUFrQixF
PQpBQ2xCQyxNQUFrQixzQkFDbEJDLEtBQWtCSixHQUFVbEQsVUFBWTJGLEVBQUszRixVQUFVNkYs
U0FDdkR0QyxTQUNJdUMsT0FBYyw9CldBQVlILEVBQUtJLHdCQUMvQnJDLE1BQWMsV0FBWXJDLE9B
QU92QixNQUFNNkMsY0FPekQrQyx5QkFBMEIsU0FBU00sR0FDakMsRz0KQUFJTCxHQUFPaEYsSUFD
WEEsTUFBS1gsVUFBWSxHQUFJdkIsR0FBa0J3SCxnQkFDdkN0RixLQUFLWCxVQUFVa0csT0FDYnpC
LFFBPQpBUyxXQUNQdUIsRUFBU0wsSUFFWFgsTUFBTyxTQUFTQyxFQUFPQyxHQUVuQjFHLEVBQVd3
RyxNQUR3QixtQkFBMUJFLEdBQVNDLGE9CkFDREQsRUFBU0MsYUFBYUMsUUFFdEIseUJBU3pCVyxx
QkFBdUIsV0FDckJwRixLQUFLYixNQUFNcUcsY0FBYyxTQUN6QixJQUFJQz0KLEdBQWEzRCxFQUFF
LG9EQUFvRDZDLE1BQ25FZSxFQUFlNUQsRUFBRSxvREFBb0RuQyxNQUV6RUssTUFBS0QsUUFBUTRG
LHFCQUF1PQpCRixDQUNwQyxJQUFJRyxNQUNBQyxJQUNKL0QsR0FBRSxpQkFBaUJQLEtBQUssWUFB
WXVFLEtBQUssV0FDTyxLQUF4QzlGLEtBQUs9CitGLGNBQWNBLGNBQWNyRyxJQUFhTSxLQUFLK0Ys
Y0FBY0EsY0FBY0MsVUFBVUMsU0FBUyxlQUNsR0wsRUFBWU0sS0FBS2xHLEtBQT0KSytGLGNBQWNB
LGNBQWNyRyxJQUNILEtBQXhDTSxLQUFLK0YsY0FBY0EsY0FBY3JHLElBQWFNLEtBQUsrRixjQUFj
QSxjQUFjQyxVPQpBQVVDLFNBQVMsZUFDekdKLEVBQVdLLEtBQUtsRyxLQUFLK0YsY0FBY0EsY0FB
Y3JHLEtBS3pELEtBQUssR0FERHlHLE1BQ0tDLEU9CkFBSVIsRUFBWWxDLE9BQVMsRUFBRzBDLEdB
QUssRUFBR0EsSUFBSyxDQUM5QyxHQUFJQyxHQUFxQlQsRUFBWVEsR0FDakNFLEVBQT0KYyxHQUFJ
eEksR0FBa0J5SSxXQUN4Q0QsR0FBWTNDLElBQU0yQyxFQUFZMUMsUUFBVTZCLEVBQWEsWUFDckRh
LEVBQVlFLFFBQVVIPQosRUFDdEJDLEVBQVlHLE9BQVMsVUFDckJOLEVBQW1CRCxLQUFLSSxHQUs1
QixJQUFLLEdBQUlGLEdBQUlQLEVBQVduQyxPQUFTLEU9CkFBRzBDLEdBQUssRUFBR0EsSUFBSyxD
QUM3QyxHQUFJTSxHQUFvQmIsRUFBV08sR0FDL0JFLEVBQWMsR0FBSXhJLEdBQWtCeUksVz0KQUN4
Q0QsR0FBWTNDLElBQU0yQyxFQUFZMUMsUUFBVTZCLEVBQWEsWUFDckRhLEVBQVlFLFFBQVVFLEVB
Q3RCSixFQUFZRyxPQUFTPQosaUJBQ3JCTixFQUFtQkQsS0FBS0ksR0FHNUJ0RyxLQUFLMkcsc0JB
QXdCakQsT0FBUXlDLEVBQW1CekMsT0FBUWtELE9BQVEsYUE9CkFjbEIsYUFBY0EsSUFHcEdtQixP
QUFPQyxRQUFTQyxjQUFjQyxLQUFPLDZCQUErQnZCLEdBQ3BFekYsS0FBS2lILDhCQUErQmQsRT0K
QUFvQlQsSUFNMUR3QixlQUFnQixXQUNabEgsS0FBS21ILFVBQVluSCxLQUFLb0gsYUFDdEJ0RixF
QUFHLHdCQUF5QnVGLE1BQU9DPQosS0FBS0MsTUFBT3ZILEtBQUttSCxVQUFhLEtBQ2pFSyxtQkFB
cUJGLEtBQUtDLE1BQU92SCxLQUFLbUgsVUFBYSxhQUNuRHJGLEU9CkFBRyxvQkFBcUJuQyxLQUFN
NkgscUJBUWxDQyxTQUFXLFNBQVVDLEVBQVdDLEdBQzlCLEdBQUkvQixNQUNBQyxJQUNBL0QsR0FB
Rz0KLGlCQUFrQlAsS0FBTSxZQUFhdUUsS0FBTSxXQUNHLEtBQXhDOUYsS0FBSytGLGNBQWNBLGNB
QWNyRyxJQUFhTSxLQUFLK0YsY0FBPQpjQSxjQUFjQyxVQUFVQyxTQUFTLGVBQ25HTCxFQUFZTSxL
QUFNbEcsS0FBSytGLGNBQWNBLGNBQWNyRyxJQUNILEtBQXhDTSxLQUE9CksrRixjQUFjQSxjQUFj
ckcsSUFBYU0sS0FBSytGLGNBQWNBLGNBQWNDLFVBQVVDLFNBQVMsZUFDMUdKLEVBQVdLLEtBQU1s
RyxLQT0KQUsrRixjQUFjQSxjQUFjckcsS0FHOUQsSUFBSWlFLElBQVFpRSxPQUFPYixjQUFnQkEs
Y0FBY0MsS0FBTyxLQUFRLG1DQUFxQ1csPQpFQUNqR0UsR0FBU0MsT0FBV2xDLEVBQWFDLFdBQWVB
LEVBQ3BEN0YsTUFBSytILGdCQUFpQnBFLEVBQUtrRSxFQUFNLFFBVW5DRSw9CmdCQUFpQixTQUFV
cEUsRUFBS2tFLEVBQU1HLEdBQ3BDLEdBQUtyRSxHQUFPa0UsRUFBTSxDQUVoQkEsRUFBdUIsZ0JB
QVRBLEdBQT0Kb0JBLEVBQU8vRixFQUFFbUcsTUFBT0osRUFFbEQsSUFBSUssR0FBUyxFQUNicEcs
R0FBRWdFLEtBQU0rQixFQUFLckUsTUFBTyxLPQpBQU8sV0FDbkIsR0FBSTJFLEdBQU9uSSxLQUFL
d0QsTUFBTyxJQUN2QjBFLElBQVEsOEJBQStCQyxFQUFLLEdBQUksWUFBYUEsRUE9CkFLLEdBQUks
U0FHOUVyRyxFQUFFLGlCQUFrQjZCLEVBQUssY0FBZXFFLEdBQVEsUUFBUyxLQUFLRSxFQUFPLFdB
Q3BFRSxTQUFVLD0KUUFBU0MsU0FBU0MsU0FDN0J6SyxFQUFXaUgsS0FBTSxzQ0FFakJqSCxHQUFX
d0csTUFBTyx1QkFJdEJrRSx5QkFBMEIsV0FDeEJ2PQpJLEtBQUsrRSx5QkFBMEIsU0FBVXpDLEdB
Q3ZDQSxFQUFLbkQsTUFBUXVCLE9BQU92QixLQUNwQixJQUFJcUosR0FBaUJsRyxFQUE9CkttRyw4
QkFDdEJDLEVBQWNwRyxFQUFLdkMsUUFBUTRJLFVBQVVyRyxFQUFLdkMsUUFBUTRJLFVBQVVqRixP
QUFTLEdBQUcsRUFDNT0KRXBCLEdBQUtuRCxNQUFNNEMsTUFDUFUsZ0JBQWtCLEVBQ2xCQyxNQUFr
QiwrQ0FBaURnRyxFQUNuRS9GLEtBQWtCNkYsR0FBZ0JuPQpKLFVBQVdpRCxFQUFLakQsVUFBVTZG
LFNBQzVEdEMsU0FDSWdHLElBQWMsV0FBWXRHLEVBQUt1Ryw2QkFDL0I5RixNQUFjLFdBQVk9CnJD
LE9BQU92QixNQUFNNkMsU0FFM0M4RyxpQkFBa0IsV0FDaEJwSSxPQUFPdUQsVUFBVThFLGVBQWVD
LFVBS2xDMUcsRUFBS2pELD0KVUFBVTZGLE9BQU94QixPQUFTLEdBQ2pDcEIsRUFBSzJHLCtCQUEr
QjNHLEVBQUtqRCxVQUFVNkYsT0FBTyxHQUFHeEYsSUFDN0RvPQpDLEVBQUcscUJBQXNCb0gsT0FB
TyxTQUFTL0csR0FDdkNHLEVBQUsyRywrQkFBK0I5RyxFQUFNZ0gsT0FBT0MsVUFHbkR2TCxFQUE9
Cld3RyxNQUFPLHdCQVN4QmdGLHlCQUEwQixXQUN4QixHQUFJckUsR0FBT2hGLElBQ1hBLE1BQUti
LE1BQVF1QixPQUFPdkIsS0FDcD0KQixJQUFJcUosR0FBaUJ4SSxLQUFLc0oseUJBQzFCdEosTUFB
S2IsTUFBTTRDLE1BQ1BVLGdCQUFrQixFQUNsQkMsTUFBa0IsK0JBPQpDbEJDLEtBQWtCNkYsTUFD
bEI1RixTQUNJdUMsT0FBYyxXQUFhSCxFQUFLdUUsdUJBQXVCdkUsSUFDdkRqQyxNQUFjLFdBQWFy
Qyw9Ck9BQU92QixNQUFNNkMsU0FFNUM4RyxpQkFBa0IsV0FFaEJwSSxPQUFPdUQsVUFBVThFLGVB
QWVTLFNBQVUsV0FBYXhFLEVBQUt0Rj0KLElBQU0rSixTQUFTLE9BR2pGekosS0FBSzBKLHFCQU9Q
eEosbUJBQW9CLFdBQ2xCLEdBQUk4RSxHQUFPaEYsSUFDWHBDLEdBQVUrPQpMLEtBQ05oRyxLQUFj
aUUsT0FBT2IsY0FBZ0JBLGNBQWNDLEtBQU8sS0FBUSxxQ0FDbEVsRCxRQUFZLFNBQVU4RixHQUNO
LElBQUs9CkMsTUFBT0QsR0FDUjVFLEVBQUt4RixnQkFBZ0IwRyxNQUNqQnhHLEdBQWtCa0ssRUFB
VUMsS0FBS0MsVUFDakNuSyxLQUFrQmlLLD0KRUFBVUMsS0FBS0MsVUFDakNsSyxZQUFrQmdLLEVB
QVVDLEtBQUtqSyxZQUNqQ21LLGdCQUFrQkgsRUFBVUMsS0FBS0UsaUJBR3pDPQovRSxHQUFLeEYs
Z0JBQWdCd0ssS0FBSyxTQUFTQyxFQUFHQyxHQUNsQyxNQUFPRCxHQUFFdkssR0FBS3dLLEVBQUV4
SyxHQUFLLEU9CkFBSXVLLEVBQUV2SyxHQUFLd0ssRUFBRXhLLEdBQUssR0FBSyxJQUVoRHNGLEVB
QUt4RixnQkFBZ0IySyxRQUFRbkYsRUFBS3ZGLD0KU0FHdEQ3QixFQUFVK0wsS0FDTmhHLEtBQVVp
RSxPQUFPYixjQUFnQkEsY0FBY0MsS0FBTyxLQUFRLGNBQzlEbEQsUUFBUyxTQUFVPQpzRyxHQUNQ
LElBQU1QLE1BQU9PLEdBQ1RwRixFQUFLbkYsYUFBYXFHLE1BQ2R4RyxHQUFVMEssRUFBUVAsS0FB
SyxHQUN2QmxLLEs9CkFBVXlLLEVBQVFQLEtBQUssSUFHL0I3RSxHQUFLbkYsYUFBYW1LLEtBQUss
U0FBU0MsRUFBR0MsR0FDL0IsTUFBT0QsR0FBRXZLLD0KR0FBS3dLLEVBQUV4SyxHQUFLLEVBQUl1
SyxFQUFFdkssR0FBS3dLLEVBQUV4SyxHQUFLLEdBQUssUUFNbEVnSyxrQkFBbUIsV0FLPQpqQixH
QUFJMUUsR0FBT2hGLElBQ1hBLE1BQUtWLGNBQWdCLEdBQUl2QixHQUFXRyxNQUNoQ21NLElBQUss
d0JBQ0x4QyxLQUFNN0M9CixFQUFLbkYsYUFDWHlLLFVBQVc1SixPQUFPdkIsTUFBTStCLElBQUlL
LEtBQU0sMEJBQ2xDNkgsTUFBTyxNQUVYcEosS0FBS1QsaT0KQkFBbUIsR0FBSXhCLEdBQVdHLE1B
Q3JDbU0sSUFBSywyQkFDTHhDLEtBQU03QyxFQUFLeEYsZ0JBQ1g4SyxVQUFXNUosT0FBT3ZCPQos
TUFBTStCLElBQUlLLEtBQU0sNkJBQ2xDNkgsTUFBTyxVQVFYbUIsaUNBQWtDLFNBQVV4SyxHQUMx
QyxHQUFJaUYsR0FBT2hGLEs9CkFDUHdJLEVBQWlCeEksS0FBS3dLLHNCQUMxQnhLLE1BQUtiLE1B
QVF1QixPQUFPdkIsTUFDcEJhLEtBQUtiLE1BQU00QyxNQUNUVT0KLGdCQUFrQixFQUNsQkMsTUFB
a0IsaUNBQ2xCQyxLQUFrQjZGLE1BQ2xCNUYsU0FDSXVDLE9BQWMsV0FDWkgsRUFBS3lGLHFCQUFz
PQpCekYsRUFBTWpGLElBRW5DZ0QsTUFBYyxXQUNackMsT0FBT3ZCLE1BQU02QyxTQUduQjhHLGlC
QUFrQixXQUVoQnBJLE9BQU91RCw9ClVBQVU4RSxlQUFlUyxTQUFTLFdBQWF4RSxFQUFLdEYsSUFB
SytKLFNBQVMsT0FJN0V6SixLQUFLMEosb0JBQ0wzSixFQUFRYix3Qj0KQUEwQixVQUNsQ2MsS0FB
SzBLLGFBQWMzSyxHQUVuQitCLEVBQUcscUJBQXNCb0gsT0FBUSxTQUFVL0csR0FDYiwyQkFBdEJB
LEVBPQpBTWdILE9BQU9DLE9BQ2ZySixFQUFRYix3QkFBMEIsVUFDbEM4RixFQUFLMEYsYUFBYzNL
LEdBQ25CK0IsRUFBRSwyQkFBMkJFLE89CkFDN0JGLEVBQUUsOEJBQThCRSxPQUNoQ0YsRUFBRSxz
QkFBc0JFLE9BQ3hCRixFQUFFLHlCQUF5QkMsUUFDSyx5QkFBdEJJLEVBQT0KTWdILE9BQU9DLFFB
Q3ZCdEgsRUFBRSx5QkFBeUJFLE9BQzNCRixFQUFFLDJCQUEyQkMsT0FDN0JELEVBQUUsc0JBQXNC
QyxPQUN4PQpCRCxFQUFFLDhCQUE4QkMsT0FDaENoQyxFQUFRYix3QkFBMEIsUUFDbEM4RixFQUFL
MEYsYUFBYzNLLE9BWTNCMkssYUFBYyxTQUE9ClUzSyxHQUV0QkMsS0FBS0QsUUFBVUUsRUFBRTlC
LE9BQVE2QixLQUFLRCxRQUFTQSxFQUN2QyxJQUFJb0osR0FBU3BKLEVBQVEwRz0KLFFBQVUsVUFD
M0J2SCxFQUEwQmMsS0FBS0QsUUFBUWIsdUJBQzNDYyxNQUFLWixPQUFTLEdBQUl0QixHQUFrQjZN
LE9BQ3BDM0ssPQpLQUFLWixPQUFPdUUsSUFBTTNELEtBQUtaLE9BQU93RSxRQUNWLFdBQWF1RixF
QUNiLDBCQUNjakssRUFDbENjLEtBQUtaLE9BQU89Cm1HLE9BQ1Z6QixRQUFTLFNBQVNRLEdBRWhC
NUcsT0FBUSxTQUFVLFdBQVksTUFBT21KLFVBRXJDK0QsU0FBVSxzQkFBd0IsV0FDaD0KQzlJLEVB
QUUsbUJBQW1CMUMsT0FBTyxXQUM1QjBDLEVBQUUsbUJBQW1CMUMsUUFDbkJ5TCxNQUNFaEQsS0FB
UXZELEdBRVZ3RyxTPQpBQVksUUFBUyxZQUNyQkMsT0FDRTVILFFBQ0U2SCxLQUFRLGlCQUVWQyxN
QUNFRCxLQUFRLGdCQUdaRSxVQUNFQyxhQUFhLFFBS3I9CkI5RyxNQUFPLFNBQVNDLEVBQU9DLEdB
Q2dCLG1CQUExQkEsR0FBU0MsYUFDcUIsU0FBbkNELEVBQVNDLGFBQWE0RyxTQUN4QnZOLD0KRUFB
V3dOLFFBQVE5RyxFQUFTQyxhQUFhQyxTQUV6QzVHLEVBQVd3RyxNQUFNRSxFQUFTQyxhQUFhQyxT
QUd6QzVHLEVBQVd3RyxNPQpBQU0seUJBV3pCa0YsdUJBQXdCLFdBQ3RCLEdBQUkrQixHQUFnQnRM
LEtBQUtiLE1BQU0rQixJQUFJSyxLQUFLLHNCQUFzQmdLLEc9CkFBRyxZQUM3REMsRUFBWXhMLEtB
QUtiLE1BQU0rQixJQUFJSyxLQUFLLGtCQUFrQmdLLEdBQUcsWUFDckRFLEVBQVl6TCxLQUFLVD0K
LGlCQUFpQjZKLFFBQ2xDc0MsRUFBUTFMLEtBQUtWLGNBQWM4SixRQUMzQnVDLEVBQVE3SixFQUFF
LHlCQUF5QjZDLE1BQ25DaUgsPQpJQUNKLElBQUtELEVBRUUsQ0FDTDNMLEtBQUtiLE1BQU1xRyxj
QUFjLFVBQ3pCbUcsRUFBUUEsRUFBTW5JLE1BQU0sS0FDcEIsS0E9CkFLLEdBQUk0QyxHQUFJdUYs
RUFBTWpJLE9BQVMsRUFBRzBDLEdBQUssRUFBR0EsSUFDckN5RixRQUFVRixFQUFNdkYsR0FBRzBG
LD0KT0FDRSxJQUFqQkQsUUFBUW5JLFFBQ1ZrSSxFQUFZMUYsS0FBSzJGLFFBR3JCN0wsTUFBSzJH
LHNCQUF3QmpELE9BQVFrSSxFQUFZPQpsSSxPQUFRa0QsT0FBUSxvQkFDakU1RyxLQUFLK0wsMkJB
QTZCSixNQUFPQyxFQUNQTixjQUFlQSxFQUNmRSxVQUFXQSxFQUNYL0U9CixPQUFRLGFBQ1JnRixV
QUFXQSxFQUNYQyxNQUFPQSxRQWhCekM3TixHQUFXaUgsS0FBSyxpREF5QnBCNkIscUJBQXNCLFNB
QVU1Rz0KLEdBQzlCLEdBQUl3QyxFQUNKLFFBQVF4QyxFQUFRNkcsUUFDZCxJQUFLLGtCQUNIckUs
RUFBV3ZDLEtBQUtnTSxvQ0FDaEJoTSxLPQpBQUtiLE1BQU0rQixJQUFJSyxLQUFNLGVBQWdCSixL
QUFNb0IsR0FBWW1HLFlBQWMxSSxLQUFLRCxRQUFRMkksY0FDbEYsTUFDRiw9CktBQUssb0JBQ0hu
RyxFQUFXdkMsS0FBS2lNLHNDQUNoQmpNLEtBQUtiLE1BQU0rQixJQUFJSyxLQUFNLGVBQWdCSixL
QUFNb0IsST0KQUMzQyxNQUNGLEtBQUssYUFDSEEsRUFBV3ZDLEtBQUtrTSx1Q0FDaEJsTSxLQUFL
YixNQUFNK0IsSUFBSUssS0FBTSxlQUFnQkosPQpLQUFNb0IsR0FBWW1ELGFBQWUzRixFQUFRMkYs
ZUFDOUUsTUFDRixTQUNFeUcsUUFBUTlILE1BQU8sMkJBTW5CckUsS0FBS21ILFM9CkFBVyxFQUNo
Qm5ILEtBQUtvSCxhQUFlLElBQU1ySCxFQUFRMkQsT0FDbEMxRCxLQUFLRCxRQUFRaEIsbUJBQW1C
QyxhQUFlZSxFQT0KQVEyRCxPQUN2RDFELEtBQUtELFFBQVFoQixtQkFBbUJFLGNBQWdCLEdBV2xE
d0wscUJBQXNCLFNBQVd6RixFQUFNakYsR0FDckMsPQpHQUFJcU0sR0FBaUJ0SyxFQUFHLG1CQUFv
QjFDLFNBQVNpTixjQUFjLEdBQy9EZixFQUFnQnRMLEtBQUtiLE1BQU0rQixJQUFJSyw9CktBQU0s
c0JBQXVCZ0ssR0FBSSxZQUNoRUMsRUFBWXhMLEtBQUtiLE1BQU0rQixJQUFJSyxLQUFNLGtCQUFt
QmdLLEdBQUksWUFDeD0KREUsRUFBWXpMLEtBQUtULGlCQUFpQjZKLFFBQ2xDc0MsRUFBUTFMLEtB
QUtWLGNBQWM4SixRQUMzQmtELEVBQWlCRixFQUFlLEdBPQpBR3BJLEtBQ25DMkgsSUFDSixJQUFL
UyxFQUFlMUksT0FBUyxFQUMzQjdGLEVBQVdpSCxLQUFNLHVDQUNaLENBQ0w5RSxLQUFLYiw9Ck1B
QU1xRyxjQUFlLFNBQzFCLEtBQU0sR0FBSVksR0FBSWdHLEVBQWUxSSxPQUFTLEVBQUcwQyxHQUFL
LEVBQUdBLElBQ0ZtRyxTQT0KQXhDSCxFQUFlaEcsR0FBR29HLFFBQVE3RCxXQUM3QmdELEVBQU16
RixLQUFNa0csRUFBZWhHLEdBQUdvRyxRQUFRN0QsVUFJMUMsPQpJQURBM0ksS0FBSzJHLHNCQUF3
QmpELE9BQVFpSSxFQUFNakksT0FBUWtELE9BQVEsb0JBQ25DLFdBQW5CMEYsRUFBNkIsQ0FDaEM9
CixHQUFJRyxHQUFjMU0sRUFBUTBHLE9BQVMsU0FDbkN6RyxNQUFLK0wsMkJBQTZCSixNQUFPQSxF
QUNQTCxjQUFlQSxFQUNmRSxVQT0KQVdBLEVBQ1gvRSxPQUFRZ0csRUFDUmhCLFVBQVdBLEVBQ1hD
LE1BQU9BLFFBQ3BDLElBQXdCLFNBQW5CWSxFQUEyQixDQUNyQyxHPQpBQUlHLEdBQWMxTSxFQUFR
MEcsT0FBUyxPQUNuQ3pHLE1BQUswTSxnQ0FBa0NmLE1BQVFBLEVBQ1JGLFVBQVdBLEVBQ1hDLE1B
QU89CkEsRUFDUGpGLE9BQVFnRyxPQUtyRHhELCtCQUFnQyxTQUFTeEQsR0FDdkMsR0FBSWtILEdB
QW1CLEdBQUk3TyxHQUFrQjhPLGlCQT0KQWlCbE4sR0FBRytGLElBQzdEbkQsRUFBT3RDLElBQ1gy
TSxHQUFpQnBILE9BQ2Z6QixRQUFTLFNBQVM2SSxHQUNoQixHQUFJRSxHPQpBQTRCdkssRUFBS3dL
LHlCQUNyQ3hLLEdBQUtqRCxVQUFVc0ssSUFBSWxFLEdBQVkxQixLQUFLZ0osU0FBYUosSUFDakRy
SyxFQUE9CktuRCxNQUFNK0IsSUFBSUssS0FBSyw2QkFBNkJKLEtBQUswTCxHQUEyQkYsaUJBQWtC
QSxFQUFpQnpILE9BQU84SCxjQUU3SDNJLD0KTUFBTyxTQUFTQyxFQUFPQyxHQUVuQjFHLEVBQVd3
RyxNQUR3QixtQkFBMUJFLEdBQVNDLGFBQ0RELEVBQVNDLGFBQWFDLFFBRXRCPQoseUJBU3pCb0Us
MEJBQTRCLFdBQzFCLEdBQUlvRSxHQUFlak4sS0FBS2IsTUFBTStCLElBQUlLLEtBQU0sNkJBQThC
QSxLQUFNLFk9CkFDeEUyTCxLQUNBQyxJQUNKLElBQUtGLEVBQWF2SixPQUFTLEVBQ3pCN0YsRUFB
V2lILEtBQU0sNENBQ1osQ0FDTDlFLEtBQUtiLD0KTUFBTXFHLGNBQWUsT0FDMUJ5SCxFQUFhbkgs
S0FBSyxXQUNoQixHQUFJc0gsR0FBTXRMLEVBQUc5QixLQUFLK0YsZUFBZ0I4QixLPQpBQU0sS0FD
akN1RixJQUNIRixFQUFvQmhILEtBQU1rSCxJQUdoQyxLQUFNLEdBQUloSCxHQUFJOEcsRUFBb0J4
SixPQUFTLEVBQUc9CjBDLEdBQUssRUFBR0EsSUFBTSxDQUMxRGlILG1CQUFxQkgsRUFBb0I5RyxF
QUN6QyxJQUFJa0gsR0FBYyxHQUFJeFAsR0FBa0J5UD0KLElBQ3hDRCxHQUFZM0osS0FBUWlFLE9B
QU9iLGNBQWdCQSxjQUFjQyxLQUFPLEtBQVEsZUFBaUJoSCxLQUFLRCxRQUFRTCxHQUFLPQosWUFD
M0c0TixFQUFZdkosS0FBT3lKLFlBQWNILHFCQUNqQ0YsRUFBWWpILEtBQU1vSCxHQUVwQnROLEtB
QUsyRyxzQkFBd0JqRCw9Ck9BQVF5SixFQUFZekosT0FBUWtELE9BQVEsb0JBQ2pFNUcsS0FBS3lO
LG9CQUFxQk4sS0FVOUJsRyw4QkFBK0IsU0FBVXlHLEVBQT0Ka0JoSSxHQUN6RCxHQUFJcEQsR0FB
T3RDLEtBQ1AyTixFQUFjRCxFQUFpQkUsS0FDbkMsSUFBMkIsbUJBQWZELEdBU1YsTUFSdUQsPQpL
QUFsRDNOLEtBQUtELFFBQVFoQixtQkFBbUJFLGNBQ25DcEIsRUFBV2lHLFFBQVMsNkVBQThFLElB
QU0rSixRQUFTLFdBQWFqRyw9Ck9BQU9rRyxTQUFTLE9BQ3BJOU4sS0FBS0QsUUFBUWhCLG1CQUFt
QkUsZ0JBQWtCZSxLQUFLRCxRQUFRaEIsbUJBQW1CQyxhQUM1Rj0KbkIsRUFBV3dHLE1BQU8sa0VB
Q1JyRSxLQUFLRCxRQUFRaEIsbUJBQW1CRSxjQUFnQmUsS0FBS0QsUUFBUWhCLG1CQUFtQkMsY0FD
PQoxRm5CLEVBQVd3TixRQUFTLGdHQUFpRyxJQUFNd0MsUUFBUyxXQUFhakcsT0FBT2tHLFNBQVMs
T0FFbktwTixPQUFPdkIsTUFBTTY9CkMsUUFDTixDQUVULElBQUkrTCxHQUFVak0sRUFBRWtNLEtB
QU1MLEVBQVk5SixNQUFRMkMsUUFBU21ILEVBQVluSCxRQUFTQyxPQT0KQVFrSCxFQUFZbEgsU0FF
NUZzSCxHQUFRRSxLQUFNLFdBQ0ozTCxFQUFLNEUsaUJBQ0w1RSxFQUFLMkUsOEJBQStCeUcsRUFB
a0JoPQpJLEtBRXZEd0ksS0FBTSxXQUNMNUwsRUFBS3ZDLFFBQVFoQixtQkFBbUJFLGVBQWlCLEVB
Q2pEcUQsRUFBSzRFLGlCQUNMNUUsRUE9CkFLMkUsOEJBQStCeUcsRUFBa0JoSSxNQVNsRWdILCtC
QUFnQyxTQUFVM00sR0FFeEMsR0FBSWlGLEdBQU9oRixLQUNQMk4sRUFBYz0KNU4sRUFBUTRMLE1B
QU1pQyxLQUNoQyxJQUE0QixtQkFBaEJELEdBT1YsTUFOdUQsS0FBbEQzTixLQUFLRCxRQUFRaEIs
bUJBQW1CPQpFLGVBQ25DcEIsRUFBV2lHLFFBQVMsbURBQ3BCcEQsT0FBT3ZCLE1BQU02QyxRQUVi
bkUsRUFBV3dHLE1BQU8sc0JBRWIsQ0FFVCw9CklBQUkwSixHQUFVak0sRUFBRWtNLEtBQU1sTSxF
QUFFcU0sTUFBUXZHLE9BQU9iLGNBQWdCQSxjQUFjQyxLQUFPLEtBQVEsNENBQT0KOENoQyxFQUFL
dEYsR0FDcEYsV0FBYUssRUFBUTBHLE9BQ3JCLFNBQVdrSCxFQUNYLGNBQWdCNU4sRUFBUTBMLFVB
Q3hCLFVBQVkxPQpMLEVBQVEyTCxPQUN2RXFDLEdBQVFFLEtBQU0sV0FDSmpKLEVBQUtrQyxpQkFD
TGxDLEVBQUswSCwrQkFBZ0MzTSxLQUV0Q21PLEs9CkFBTSxXQUNMbEosRUFBS2pGLFFBQVFoQixt
QkFBbUJFLGVBQWlCLEVBQ2pEK0YsRUFBS2tDLGlCQUNMbEMsRUFBSzBILCtCQUFnQz0KM00sTUFh
akRnTSwwQkFBMkIsU0FBVWhNLEdBRW5DLEdBQUlpRixHQUFPaEYsS0FDUDJOLEVBQWM1TixFQUFR
NEwsTUFBTWlDLEtBPQpDaEMsSUFBMEIsbUJBQWZELEdBUVQsTUFQc0QsS0FBbEQzTixLQUFLRCxR
QUFRaEIsbUJBQW1CRSxlQUNsQ3BCLEVBQVdpRyxRQUE9ClEseUVBQ25CcEQsT0FBT3ZCLE1BQU02
QyxRQUdibkUsRUFBV3dHLE1BQU0sc0JBRVosQ0FFVCxJQUFJMEosR0FBVWpNLEVBQUVrTT0KLEtB
QU1sTSxFQUFFcU0sTUFBUXZHLE9BQU9iLGNBQWdCQSxjQUFjQyxLQUFPLEtBQVEsNENBQThDaEMs
RUFBS3RGLEdBQ2pGLFdBPQpBYUssRUFBUTBHLE9BQ3JCLFNBQVdrSCxFQUNYLGtCQUFvQjVOLEVB
QVF1TCxjQUM1QixjQUFnQnZMLEVBQVF5TCxVQUN4QixjQUE9CmdCekwsRUFBUTBMLFVBQ3hCLFVB
QVkxTCxFQUFRMkwsT0FDMUVxQyxHQUFRRSxLQUFLLFdBQ0hqSixFQUFLa0MsaUJBQ0xsQyxFQT0K
QUsrRywwQkFBMkJoTSxLQUVqQ21PLEtBQUssV0FDSmxKLEVBQUtqRixRQUFRaEIsbUJBQW1CRSxl
QUFpQixFQUNqRCtGLEVBQUtrPQpDLGlCQUNMbEMsRUFBSytHLDBCQUEyQmhNLE1BUzVDME4sb0JB
QXFCLFNBQVVXLEdBQzdCLEdBQUk5TCxHQUFPdEMsSUFDWEEsTUE9CkFLcU8sV0FBYSxHQUFJdlEs
R0FBa0J3USxNQUN4QyxJQUFJWCxHQUFjUyxFQUFTUixLQUMzQixJQUEyQixtQkFBZkQsR0FTVixN
QT0KUnVELEtBQWxEM04sS0FBS0QsUUFBUWhCLG1CQUFtQkUsY0FDbkNwQixFQUFXaUcsUUFBUyxz
REFDVjlELEtBQUtELFFBQVFoQixtPQpCQUFtQkUsZ0JBQWtCZSxLQUFLRCxRQUFRaEIsbUJBQW1C
QyxhQUM1Rm5CLEVBQVd3RyxNQUFPLGdFQUNSckUsS0FBS0QsUUFBUWg9CkIsbUJBQW1CRSxjQUFn
QmUsS0FBS0QsUUFBUWhCLG1CQUFtQkMsY0FDMUZuQixFQUFXd04sUUFBUyx5REFFdEIzSyxPQUFP
dkIsTT0KQUFNNkMsT0FDTmhDLEtBQUtxTyxVQUVkLElBQUlOLEdBQVVqTSxFQUFFa00sS0FBTUws
RUFBWTlKLE1BQVEySixZQUFhRyxFQUFZPQpoRSxJQUFLLGlCQUV4RW9FLEdBQVFFLEtBQU0sU0FB
VTNKLEdBQ2Q1RCxPQUFPdUQsVUFBVUMsZUFBZUMsV0FBV0MsSUFBS0UsR0E9CkNoRGhDLEVBQUs0
RSxpQkFDTDVFLEVBQUttTCxvQkFBcUJXLEtBRTNCRixLQUFNLFdBQ0w1TCxFQUFLdkMsUUFBUWhC
LG1CQUFtQj0KRSxlQUFpQixFQUNqRHFELEVBQUs0RSxpQkFDTDVFLEVBQUttTCxvQkFBcUJXLE1B
U3RDRyx1QkFBd0IsU0FBVUMsR0FDbEMsR0FBPQpJbE0sR0FBT3RDLElBQ1hBLE1BQUt5TyxjQUFn
QixHQUFJM1EsR0FBa0J3USxNQUMzQyxJQUFJWCxHQUFjYSxFQUFnQlosS0FDbEM9CixJQUE0Qixt
QkFBaEJELEdBU1YsTUFSdUQsS0FBbEQzTixLQUFLRCxRQUFRaEIsbUJBQW1CRSxjQUNuQ3BCLEVB
QVdpRyxRQUFTLD0KZ0NBQ1Y5RCxLQUFLRCxRQUFRaEIsbUJBQW1CRSxnQkFBa0JlLEtBQUtELFFB
QVFoQixtQkFBbUJDLGFBQzVGbkIsRUFBV3dHLE1BPQpBTyxtR0FDUnJFLEtBQUtELFFBQVFoQixt
QkFBbUJFLGNBQWdCZSxLQUFLRCxRQUFRaEIsbUJBQW1CQyxjQUMxRm5CLEVBQVd3Tiw9ClFBQVMs
NkZBRXRCM0ssT0FBT3ZCLE1BQU02QyxPQUNOaEMsS0FBS3lPLGFBRWQsSUFBSVYsR0FBVWpNLEVB
QUVrTSxLQUFNTCxFQT0KQVllLFVBRWxDWCxHQUFRRSxLQUFNLFNBQVVVLEdBSWQsR0FIQWpPLE9B
QU91RCxVQUFVQyxlQUFlQyxXQUFXbUUsT0FBUXFGLEVBPQpBWWpPLElBQy9ENEMsRUFBSzRFLGlC
QUVBeEcsT0FBT3VELFVBQVVDLGVBQWVuRSxRQUFRNk8sZ0JBQWlCLENBQzVELEdBQUlDLEc9CkFB
ZSxJQUNELFlBQWRGLEVBQUszSyxNQUEwQyxrQkFBckIySyxFQUFLRyxZQUNqQ0QsRUFBZSxHQUFJ
L1EsR0FBa0JzRixjQUFldT0KTCxHQUM3QixTQUFkQSxFQUFLM0ssTUFBd0MsbUJBQXJCMkssRUFB
S0csWUFDdENELEVBQWUsR0FBSS9RLEdBQWtCeVAsS0FBTW9CPQosSUFFM0N4QyxRQUFROUgsTUFB
TSxvQ0FDZDhILFFBQVE5SCxNQUFNc0ssRUFBSzNLLE1BQVEySyxFQUFLRyxjQUVsQ3BPLE9BQU89
CnVELFVBQVVDLGVBQWVDLFdBQVdDLElBQUt5SyxHQUVsRHZNLEVBQUtpTSx1QkFBd0JDLEtBRTlC
TixLQUFNLFdBQ0w1TCxFQUFLdj0KQyxRQUFRaEIsbUJBQW1CRSxlQUFpQixFQUNqRHFELEVBQUs0
RSxpQkFDTDVFLEVBQUtpTSx1QkFBd0JDLE1BT3ZDTyxvQkFBcUIsPQpTQUFTNU0sR0FFMUJ6QixP
QUFPdUQsVUFBVUMsZUFBZThLLFlBRDlCN00sRUFBTWdILE9BQU84RixTQUM4QkwsaUJBQWlCLElB
RWo9CkJBLGlCQUFpQixLQU9sRU0sdUJBQXdCLFdBQ3RCLEdBQUlySyxHQUFnQi9DLEVBQUUsaUJB
QWlCUCxLQUFLLFdBQzVDLElBQTRCLD0KSUFBekJzRCxFQUFjbkIsT0FDYjdGLEVBQVdpSCxLQUFL
LDBEQUNiLENBQ0wsR0FBSXZDLEdBQVd2QyxLQUFLaU0scUNBQ3BCak0sPQpNQUFLYixNQUFRdUIs
T0FBT3ZCLE1BQ3BCYSxLQUFLYixNQUFNNEMsTUFDUFUsZ0JBQWtCLEVBQ2xCQyxNQUFrQiw2QkFD
bEJDLEs9CkFBa0JKLE1BQ2xCSyxTQUNJRyxNQUFjLFdBQVlyQyxPQUFPdkIsTUFBTTZDLFdBSS9D
aEMsS0FBS0QsUUFBUWhCLG1CQUFtQkMsYT0KQUFlLEVBQy9DZ0IsS0FBS0QsUUFBUWhCLG1CQUFt
QkUsY0FBZ0IsQ0FFaEQsSUFBSTJHLE1BQ0FDLElBQ0poQixHQUFjaUIsS0FBPQpLLFdBQzZCLEtB
QXhDOUYsS0FBSytGLGNBQWNBLGNBQWNyRyxLQUN5QixLQUF0RE0sS0FBSytGLGNBQWNBLGNBQWNy
RyxHQUFHeVA9CixVQUFVLEVBQUUsR0FDbER0SixFQUFXSyxLQUFLbEcsS0FBSytGLGNBQWNBLGNB
QWNyRyxJQUVqRGtHLEVBQVlNLEtBQUtsRyxLQT0KQUsrRixjQUFjQSxjQUFjckcsTUFLNUQsSUFB
STBQLEdBQWN4SixFQUFZbEMsT0FBU21DLEVBQVduQyxNQUNsRDFELE1BQUtvSCxhPQpBQWUsSUFB
TWdJLEVBQzFCcFAsS0FBS21ILFNBQVcsQ0FJaEIsS0FBSyxHQUREcUgsTUFDS3BJLEVBQUlSLEVB
QVlsQyxPQUFTLEU9CkFBRzBDLEdBQUssRUFBR0EsSUFBSyxDQUM5QyxHQUFJaUosR0FBVSxHQUFJ
dlIsR0FBa0J5UCxNQUFNN04sR0FBR2tHLEVBQVlRLD0KSUFDekRvSSxHQUFnQnRJLEtBQUttSixH
QUV6QixJQUFLLEdBQUlqSixHQUFJUCxFQUFXbkMsT0FBUyxFQUFHMEMsR0FBSyxFQUFHPQpBLElB
QUssQ0FDN0MsR0FBSWpELEdBQVMsR0FBSXJGLEdBQWtCc0YsZUFBZTFELEdBQUdtRyxFQUFXTyxJ
QUNoRW9JLEdBQWdCdEk9CixLQUFLL0MsR0FHekJuRCxLQUFLRCxRQUFRaEIsbUJBQW1CQyxhQUFl
b1EsRUFBWTFMLE9BRTNEMUQsS0FBS3VPLHVCQUF1QkMsSz0KQUtoQ2MsWUFBYSxXQUNYLEdBQUlD
LEdBQWE3TyxPQUFPdUQsVUFBVUMsZUFBZXNMLGdCQUFnQkMsV0FBV0MsU0FBU0Msa0JBQ2pGPQpD
LEVBQVUsS0FDVjVLLEVBQU9oRixJQUM4QixRQUFyQ1UsT0FBT3VELFVBQVU0TCxpQkFDbkJELEVB
QVVsUCxPQUFPdUQsVUFBVTQ9CkwsZ0JBQWdCMUwsV0FBV3dGLElBQUk0RixHQUMxRHZQLEtBQUs4
UCxpQkFBaUJGLEtBRXRCQSxFQUFVLEdBQUk5UixHQUFrQmlTLD0KU0FBU3JRLEdBQUk2UCxJQUM3
Q0ssRUFBUXJLLE9BQ056QixRQUFTLFdBQ1BrQixFQUFLOEssaUJBQWlCRixJQUV4QnZMLE1BQU8s
PQpTQUFTQyxFQUFPQyxHQUVuQjFHLEVBQVd3RyxNQUR3QixtQkFBMUJFLEdBQVNDLGFBQ0RELEVB
QVNDLGFBQWFDLFFBRXRCLDBCQU89CjNCcUwsaUJBQWtCLFNBQVNGLEdBQ3pCLEdBQUlyTixHQUFX
dkMsS0FBS2dRLHdCQUNwQmhRLE1BQUtiLE1BQVF1QixPQUFPdkIsTT0KQUNwQmEsS0FBS2IsTUFB
TTRDLE1BQ1BVLGdCQUFrQixFQUNsQkMsTUFBa0Isc0JBQ2xCQyxLQUFrQkosR0FBVXFOLFFBQVFB
LElBPQpDcENoTixTQUNJRyxNQUFjLFdBQVlyQyxPQUFPdkIsTUFBTTZDLFlBS2pEaU8sZ0JBQWlC
LFNBQVNsUSxHQUN4QixPQUFPQSxFQUE9ClEwRyxRQUNiLElBQUssVUFDSHpHLEtBQUt1SSwwQkFD
TCxNQUNGLEtBQUssWUFDSHZJLEtBQUt1SyxrQ0FBb0M5RCxPQUFRLGFBQz0KakQsTUFDRixLQUFL
LE9BQ0h6RyxLQUFLcUosMEJBQ0wsTUFDRixLQUFLLFVBQ0hySixLQUFLdUssa0NBQW9DOUQsT0FB
USxXQUNqPQpELE1BQ0YsU0FDRS9GLE9BQU91RCxVQUFVOEUsZUFBZUMsT0FDaENuTCxFQUFXd0cs
TUFBTSw0QkFRdkI2TCxtQkFBb0IsV0FDbEI9CixHQUFJQyxHQUFtQkMsT0FBUSw4Q0FBK0MxUCxP
QUFPdUQsVUFBVW9NLFlBQVkxRyxJQUFLLG9CQUNyRixPQUFwQndHLEdBQWdDQT0KLEdBQW9CMU8s
U0FBVTBPLEtBQ2pFelAsT0FBT3VELFVBQVVvTSxZQUFZdE0sS0FBT29NLGlCQUFvQjFPLFNBQVUw
TyxLQUNsRXpQPQosT0FBT3VELFVBQVVDLGVBQWUvRCxRQUFVVCxHQUFJTSxLQUFLRCxRQUFRTCxH
QUFJOEIsVUFBVyxNQUloRm5CLGdCQUFpQixXQXU9CkVmLE1BdEVBaVEsZUFHQUEsV0FBV3BLLEtB
QUsseUNBRWhCb0ssV0FBV3BLLEtBQUssK0JBQ2hCb0ssV0FBV3BLLEtBQUssMENBQz0KaEJvSyxX
QUFXcEssS0FBSyxtREFDaEJvSyxXQUFXcEssS0FBSyxvRUFFaEJvSyxXQUFXcEssS0FBSyxxQkFD
aEJvSyxXQUFXcEssPQpLQUFLLHVHQUNoQm9LLFdBQVdwSyxLQUFLLFdBQ2hCb0ssV0FBV3BLLEtB
QUssc0ZBQ2hCb0ssV0FBV3BLLEtBQUssWUFDaEJvSyw9CldBQVdwSyxLQUFLLFVBQ2hCb0ssV0FB
V3BLLEtBQUssd1JBRWhCb0ssV0FBV3BLLEtBQUssMkNBQ2hCb0ssV0FBV3BLLEtBQUsscz0KRUFD
aEJvSyxXQUFXcEssS0FBSywwSUFDaEJvSyxXQUFXcEssS0FBSyxzR0FDaEJvSyxXQUFXcEssS0FB
SyxrQkFDaEJvSyxXQUFXPQpwSyxLQUFLLCtDQUNoQm9LLFdBQVdwSyxLQUFLLGtGQUNoQm9LLFdB
QVdwSyxLQUFLLDhEQUNoQm9LLFdBQVdwSyxLQUFLLHlGQUM9CmhCb0ssV0FBV3BLLEtBQUssV0FD
aEJvSyxXQUFXcEssS0FBSyxzREFFaEJvSyxXQUFXcEssS0FBSyxnQ0FDaEJvSyxXQUFXcEssSz0K
QUFLLG1EQUVoQm9LLFdBQVdwSyxLQUFLLHlEQUNoQm9LLFdBQVdwSyxLQUFLLHVGQUNoQm9LLFdB
QVdwSyxLQUFLLFdBRWhCb0ssPQpXQUFXcEssS0FBSyxzREFDaEJvSyxXQUFXcEssS0FBSywyRUFD
aEJvSyxXQUFXcEssS0FBSyxXQUNoQm9LLFdBQVdwSyxLQUFLLFc9CkFDaEJvSyxXQUFXcEssS0FB
SyxjQUNoQm9LLFdBQVdwSyxLQUFLLGFBQ2hCb0ssV0FBV3BLLEtBQUssa0JBQ2hCb0ssV0FBV3BL
LD0KS0FBSyx3UUFDaEJvSyxXQUFXcEssS0FBSyxXQUVoQm9LLFdBQVdwSyxLQUFLLHdSQUNoQm9L
LFdBQVdwSyxLQUFLLDhHQUNoQm9LPQosV0FBV3BLLEtBQUssNEpBQ2hCb0ssV0FBV3BLLEtBQUss
a0ZBQ2hCb0ssV0FBV3BLLEtBQUssa0JBQ2hCb0ssV0FBV3BLLEtBQUs9CiwrQ0FDaEJvSyxXQUFX
cEssS0FBSywyRUFDaEJvSyxXQUFXcEssS0FBSywyRUFDaEJvSyxXQUFXcEssS0FBSyx3RUFDaEJv
SyxXQT0KQVdwSyxLQUFLLGNBQ2hCb0ssV0FBV3BLLEtBQUssYUFDaEJvSyxXQUFXcEssS0FBSyx1
UkFDaEJvSyxXQUFXcEssS0FBSyx1UUFDPQpoQm9LLFdBQVdwSyxLQUFLLHVUQUNoQm9LLFdBQVdw
SyxLQUFLLFdBQ2hCb0ssV0FBV3BLLEtBQUssV0FHaEJvSyxXQUFXcEssS0E9CkFLLG9DQUNoQm9L
LFdBQVdwSyxLQUFLLFdBQ2hCb0ssV0FBV3BLLEtBQUssVUFHVGpHLEVBQUVzQyxTQUFTK04sV0FB
V0MsS0FBSz0KLE1BR3BDUCx1QkFBd0IsV0FjdEIsTUFiQU0sZUFFQUEsV0FBV3BLLEtBQUssNkJB
Q2hCb0ssV0FBV3BLLEtBQUssMEJBQ2hCb0ssPQpXQUFXcEssS0FBSyxxQ0FDaEJvSyxXQUFXcEss
S0FBSyxpQ0FDaEJvSyxXQUFXcEssS0FBSyw0Q0FDaEJvSyxXQUFXcEssS0FBSyw9CjhCQUNoQm9L
LFdBQVdwSyxLQUFLLHlDQUNoQm9LLFdBQVdwSyxLQUFLLGdKQUVoQm9LLFdBQVdwSyxLQUFLLFVB
RVRqRyxFQUFFcz0KQyxTQUFTK04sV0FBV0MsS0FBSyxNQUdwQy9OLHlCQUEwQixXQVV4QixNQVRB
OE4sZUFFQUEsV0FBV3BLLEtBQUssK0JBQ2hCb0ssPQpXQUFXcEssS0FBSyxVQUNoQm9LLFdBQVdw
SyxLQUFLLCtEQUNoQm9LLFdBQVdwSyxLQUFLLDZFQUNoQm9LLFdBQVdwSyxLQUFLLFc9CkFDaEJv
SyxXQUFXcEssS0FBSyxVQUVUakcsRUFBRXNDLFNBQVMrTixXQUFXQyxLQUFLLE1BSXBDdEwsMEJB
QTRCLFdBQzFCLEdBQT0KSXFMLEtBV0osT0FUQUEsR0FBV3BLLEtBQUssaUdBQ2hCb0ssRUFBV3BL
LEtBQUssb0JBQ2hCb0ssRUFBV3BLLEtBQUsseUdBQ2hCPQpvSyxFQUFXcEssS0FBSyxrREFDaEJv
SyxFQUFXcEssS0FBSywyR0FDaEJvSyxFQUFXcEssS0FBSyxnQkFDaEJvSyxFQUFXcEssS0E9CkFL
LGFBQ2hCb0ssRUFBV3BLLEtBQUssV0FFVGpHLEVBQUVzQyxTQUFTK04sRUFBV0MsS0FBSyxNQUdw
Q3JFLHFDQUF1QyxXQUNyQz0KLEdBQUlvRSxLQVlKLE9BVkFBLEdBQVdwSyxLQUFLLDZCQUNoQm9L
LEVBQVdwSyxLQUFLLCtFQUNoQm9LLEVBQVdwSyxLQUFLLFVBPQpDaEJvSyxFQUFXcEssS0FBSyww
QkFDaEJvSyxFQUFXcEssS0FBSyxvSkFDaEJvSyxFQUFXcEssS0FBSywyREFDaEJvSyxFQUFXcEs9
CixLQUFLLGFBQ2hCb0ssRUFBV3BLLEtBQUssVUFDaEJvSyxFQUFXcEssS0FBSyxJQUVUakcsRUFB
RXNDLFNBQVMrTixFQUFXQyxLQT0KQUssTUFHcEN2RSxrQ0FBbUMsV0FDakMsR0FBSXNFLEtBWUos
T0FWQUEsR0FBV3BLLEtBQUssNkJBQ2hCb0ssRUFBV3BLLEtBQUssPQprRkFDaEJvSyxFQUFXcEss
S0FBSyxVQUNoQm9LLEVBQVdwSyxLQUFLLDBCQUNoQm9LLEVBQVdwSyxLQUFLLG9KQUNoQm9LLEVB
QVc9CnBLLEtBQUssMkRBQ2hCb0ssRUFBV3BLLEtBQUssYUFDaEJvSyxFQUFXcEssS0FBSyxVQUNo
Qm9LLEVBQVdwSyxLQUFLLElBRVRqRz0KLEVBQUVzQyxTQUFTK04sRUFBV0MsS0FBSyxNQUdwQ3RF
LG9DQUFxQyxXQUNuQyxHQUFJcUUsS0FXSixPQVRBQSxHQUFXcEssS0FBPQpLLDZCQUNoQm9LLEVB
QVdwSyxLQUFLLFVBQ2hCb0ssRUFBV3BLLEtBQUssMEJBQ2hCb0ssRUFBV3BLLEtBQUssb0pBQ2hC
b0ssRUE9CkFXcEssS0FBSywyREFDaEJvSyxFQUFXcEssS0FBSyxhQUNoQm9LLEVBQVdwSyxLQUFL
LFVBQ2hCb0ssRUFBV3BLLEtBQUssSUFFVD0KakcsRUFBRXNDLFNBQVMrTixFQUFXQyxLQUFLLE1B
R3BDL0YscUJBQXNCLFdBQ3BCLEdBQUk4RixLQW9DSixPQWxDQUEsR0FBV3BLPQosS0FBSyxpQ0FD
aEJvSyxFQUFXcEssS0FBSywySEFDaEJvSyxFQUFXcEssS0FBSyx5TEFHaEJvSyxFQUFXcEssS0FB
SyxvQ0FDaEI9Cm9LLEVBQVdwSyxLQUFLLGdDQUNoQm9LLEVBQVdwSyxLQUFLLHVJQUNoQm9LLEVB
QVdwSyxLQUFLLFlBQ2hCb0ssRUFBV3BLLEtBQT0KSyxnQ0FDaEJvSyxFQUFXcEssS0FBSyx1SEFD
aEJvSyxFQUFXcEssS0FBSyxZQUNoQm9LLEVBQVdwSyxLQUFLLFVBQ2hCb0ssRUFBPQpXcEssS0FB
SyxvQ0FDaEJvSyxFQUFXcEssS0FBSyxtRkFDaEJvSyxFQUFXcEssS0FBSyw2RkFDaEJvSyxFQUFX
cEssS0FBSyxnQ0E9CkNoQm9LLEVBQVdwSyxLQUFLLGFBQ2hCb0ssRUFBV3BLLEtBQUssMkVBQ2hC
b0ssRUFBV3BLLEtBQUssdUVBQ2hCb0ssRUFBV3BLLD0KS0FBSyxpQ0FDaEJvSyxFQUFXcEssS0FB
SyxhQUNoQm9LLEVBQVdwSyxLQUFLLFVBQ2hCb0ssRUFBV3BLLEtBQUssNkJBQ2hCb0ssPQpFQUFX
cEssS0FBSyxVQUVoQm9LLEVBQVdwSyxLQUFLLFVBQ2hCb0ssRUFBV3BLLEtBQUssbUZBQ2hCb0ss
RUFBV3BLLEtBQUssU0E9CkNoQm9LLEVBQVdwSyxLQUFLLGlGQUNoQm9LLEVBQVdwSyxLQUFLLCtF
QUNoQm9LLEVBQVdwSyxLQUFLLFVBQ2hCb0ssRUFBV3BLLD0KS0FBSyxVQUVUakcsRUFBRXNDLFNB
QVMrTixFQUFXQyxLQUFLLE1BR3BDakgsd0JBQXlCLFdBQ3ZCLEdBQUlnSCxLQTJCSixPQXpCPQpB
QSxHQUFXcEssS0FBSyxpQ0FDaEJvSyxFQUFXcEssS0FBSyxnS0FFaEJvSyxFQUFXcEssS0FBSyx1
Q0FDaEJvSyxFQUFXcEssS0E9CkFLLDZEQUNoQm9LLEVBQVdwSyxLQUFLLDZGQUNoQm9LLEVBQVdw
SyxLQUFLLGdDQUNoQm9LLEVBQVdwSyxLQUFLLGFBQ2hCb0ssRT0KQUFXcEssS0FBSyxxREFDaEJv
SyxFQUFXcEssS0FBSyx1RUFDaEJvSyxFQUFXcEssS0FBSyxpQ0FDaEJvSyxFQUFXcEssS0FBSyxh
PQpBQ2hCb0ssRUFBV3BLLEtBQUssVUFFaEJvSyxFQUFXcEssS0FBSyw4SkFFaEJvSyxFQUFXcEss
S0FBSyxVQUNoQm9LLEVBQVdwSyw9CktBQUssbUZBQ2hCb0ssRUFBV3BLLEtBQUssU0FDaEJvSyxF
QUFXcEssS0FBSyxpRkFDaEJvSyxFQUFXcEssS0FBSywrRUFDaEJvSz0KLEVBQVdwSyxLQUFLLFVB
RWhCb0ssRUFBV3BLLEtBQUssVUFFVGpHLEVBQUVzQyxTQUFTK04sRUFBV0MsS0FBSyxNQUdwQzlI
LDRCPQpBQTZCLFdBQzNCLEdBQUk2SCxLQWlCSixPQWZBQSxHQUFXcEssS0FBSyw4QkFDaEJvSyxF
QUFXcEssS0FBSyx1Q0FDaEJvSyxFQUE9CldwSyxLQUFLLHFCQUNoQm9LLEVBQVdwSyxLQUFLLCtF
QUNoQm9LLEVBQVdwSyxLQUFLLGtEQUNoQm9LLEVBQVdwSyxLQUFLO0FBQz0KaEJvSyxFQUFXcEss
S0FBSyxnQkFDaEJvSyxFQUFXcEssS0FBSyxhQUNoQm9LLEVBQVdwSyxLQUFLLFVBQ2hCb0ssRUFB
V3BLLEtBPQpBSyxTQUNoQm9LLEVBQVdwSyxLQUFLLHVDQUVoQm9LLEVBQVdwSyxLQUFLLFVBQ2hC
b0ssRUFBV3BLLEtBQUssVUFFVGpHLEVBQUU9CnNDLFNBQVMrTixFQUFXQyxLQUFLLE1BR3BDekQs
d0JBQXlCLFdBQ3ZCLEdBQUl3RCxLQVdKLE9BVEFBLEdBQVdwSyxLQUFLLG1EQT0KQ2hCb0ssRUFB
V3BLLEtBQUssUUFDaEJvSyxFQUFXcEssS0FBSyw0REFDaEJvSyxFQUFXcEssS0FBSywyREFDaEJv
SyxFQUFXcEssPQpLQUFLLHFJQUNoQm9LLEVBQVdwSyxLQUFLLFVBQ2hCb0ssRUFBV3BLLEtBQUss
Y0FDaEJvSyxFQUFXcEssS0FBSyxTQUVUakcsRUE9CkFFc0MsU0FBUytOLEVBQVdDLEtBQUssTUFH
cENqUCxrQkFBbUIsV0ErQmpCLE1BOUJBZ1AsZUFFQUEsV0FBV3BLLEtBQUssNENBQz0KaEJvSyxX
QUFXcEssS0FBSywrQ0FDaEJvSyxXQUFXcEssS0FBSyw0REFDaEJvSyxXQUFXcEssS0FBSyxpSEFD
aEJvSyxXQUFXcEssPQpLQUFLLHdJQUNoQm9LLFdBQVdwSyxLQUFLLDZCQUNoQm9LLFdBQVdwSyxL
QUFLLGlIQUNoQm9LLFdBQVdwSyxLQUFLLDJIQUNoQm89CkssV0FBV3BLLEtBQUssc0JBQ2hCb0ss
V0FBV3BLLEtBQUsseUJBQ2hCb0ssV0FBV3BLLEtBQUssOEhBQ2hCb0ssV0FBV3BLLEtBQT0KSyxv
SUFDaEJvSyxXQUFXcEssS0FBSyxrQkFDaEJvSyxXQUFXcEssS0FBSyw4QkFDaEJvSyxXQUFXcEss
S0FBSyxrR0FDaEJvSyxXPQpBQVdwSyxLQUFLLGdCQUNoQm9LLFdBQVdwSyxLQUFLLG9EQUNoQm9L
LFdBQVdwSyxLQUFLLHVIQUNoQm9LLFdBQVdwSyxLQUFLLHM9CklBQ2hCb0ssV0FBV3BLLEtBQUss
eUJBQ2hCb0ssV0FBV3BLLEtBQUsscUlBQ2hCb0ssV0FBV3BLLEtBQUssdUpBQ2hCb0ssV0FBVz0K
cEssS0FBSyxrQkFDaEJvSyxXQUFXcEssS0FBSyxZQUNoQm9LLFdBQVdwSyxLQUFLLGFBQ2hCb0ss
V0FBV3BLLEtBQUssbU1BQ2hCPQpvSyxXQUFXcEssS0FBSyxjQUVUakcsRUFBRXNDLFNBQVMrTixX
QUFXQyxLQUFLLE9BS3RDLFFBQ0l2UyxrQkFBbUJBIn0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCgpkaWZmIC1yIGQ2MmYzZTUwYjU2N2ExNTdjMDk0NDQ3M2FkYmJjNDEwYzU1NTJkMWEgLXIg
MzZjMDUyNjEzNDM0MTIzNzBmOWU0NGY9CjRiZGQ0YjFlMTlhOTdhYTU1IHN0YXRpYy9tYXBzL3V0
aWxzL3VwbG9hZGJveC5qcy5tYXAKLS0tIGEvc3RhdGljL21hcHMvdXRpbHMvdXBsb2FkYm94Lmpz
Lm1hcAorKysgYi9zdGF0aWMvbWFwcy91dGlscy91cGxvYWRib3guanMubWFwCkBAIC0xLDEgKzEs
MSBAQAoteyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkYm94LmpzIiwic291cmNlcyI6WyIuLi8u
Li9zcmMvdXRpbHMvdXBsb2FkYm94Lmo9CnMiXSwibmFtZXMiOlsiJCIsImpRdWVyeSIsImV2ZW50
IiwicHJvcHMiLCJwdXNoIiwidXBsb2FkcG9zdCIsImNvbmZpZyIsImNuZj0KIiwiZXh0ZW5kIiwi
ZGF0YSIsInN1Y2Nlc3MiLCJlcnJvciIsInByb2dyZXNzIiwidXJsIiwibWF4ZmlsZXNpemUiLCJl
cnJvcl9mPQppbGVzaXplIiwiZXJyb3JfZGVmYXVsdCIsImVycm9yX3NlcnZlciIsImVycm9yX2xv
Z2luIiwiZXJyb3JfbWVzc2FnZSIsImZvcm09CiIsIkZvcm1EYXRhIiwia2V5IiwicGF5bG9hZCIs
ImFwcGVuZCIsInNpemVzIiwiZmlsZXMiLCJkIiwibmFtZSIsImZpbGUiLCJzaT0KemUiLCJ4aHIi
LCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJzZXRSZXF1ZXN0SGVhZGVyIiwib25yZWFkeXN0YXRl
Y2hhbmdlIiwiPQpyZWFkeVN0YXRlIiwiRE9ORSIsInJlc3BvbnNlIiwicmVzcG9uc2VUZXh0Iiwi
cGFyc2VKU09OIiwiZSIsInN0YXR1cyIsInRleHQ9CiIsInN0YXR1c1RleHQiLCJ1cGxvYWQiLCJh
ZGRFdmVudExpc3RlbmVyIiwibGVuZ3RoQ29tcHV0YWJsZSIsIk1hdGgiLCJyb3VuZD0KIiwibG9h
ZGVkIiwidG90YWwiLCJjb25zb2xlIiwiZGVidWciLCJzZW5kIiwiZm4iLCJ1cGxvYWRpbnB1dCIs
Im9wdGlvbnMiLCJlPQpsIiwidGhpcyIsIm9wdHMiLCJvbmRyYWdvdmVyIiwib25kcmFnbGVhdmUi
LCJvbmNoYW5nZSIsIm11bHRpcGxlIiwiJGlucHV0Iiw9CiJjaGFuZ2UiLCJ0YXJnZXQiLCJ2YWwi
LCJvbiIsImRhdGFUcmFuc2ZlciIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aT0Kb24i
LCJkaWFsb2ciLCJ0cmlnZ2VyIiwidXBsb2FkYm94IiwiYWRkIiwibGVuZ3RoIiwicXVldWVfcnVu
bmluZyIsImN1cnJlbnRfPQppbmRleCIsInF1ZXVlX2luZGV4IiwiaSIsImluZGV4IiwiU3RyaW5n
IiwicXVldWUiLCJhbm5vdW5jZSIsInF1ZXVlX2xlbmd0aCI9CiwicmVtb3ZlIiwicHJvY2VzcyIs
InF1ZXVlX3N0b3AiLCJjb21wbGV0ZSIsImluaXRpYWxpemUiLCJtZXNzYWdlIiwicGVyY2VudD0K
YWdlIiwic2VsZWN0IiwicmVzZXQiLCJzdGFydCIsInN0b3AiLCJjb25maWd1cmUiLCJjb21wYXRp
YmxlIiwid2luZG93IiwiRmlsPQplIiwiRmlsZUxpc3QiLCJkcmFnb3ZlciIsImRyYWdsZWF2ZSIs
Im0iLCJhbGVydCJdLCJtYXBwaW5ncyI6IkNBR0MsU0FBVUEsR0E9CkVQQyxPQUFPQyxNQUFNQyxN
QUFNQyxLQUFLLGdCQUt4QkosRUFBRUssV0FBYSxTQUFVQyxHQUVyQixHQUFJQyxHQUFNUCxFQUFF
UT0KLFdBQ1JDLFFBQ0FDLFFBQWtCLGFBQ2xCQyxNQUFrQixhQUNsQkMsU0FBa0IsYUFDbEJDLElB
QWtCLEtBQ2xCQyxZQUFrQixLQUNsPQpCQyxlQUFrQiw4Q0FDbEJDLGNBQWtCLDBDQUNsQkMsYUFB
a0IseUJBQ2xCQyxZQUFrQixrQ0FDbkJaLEdBR0NHLEVBQU9GLEVBQUk9CkUsSUFHZixJQUFJQSxF
QUFLVSxjQUVMLFdBREFaLEdBQUlJLE1BQU1GLEVBQUtVLGNBS25CLElBQUlDLEdBQU8sR0FBSUMs
U0FDZj0KLEtBQUssR0FBSUMsS0FBT2IsR0FBS2MsUUFDakJILEVBQUtJLE9BQU9GLEVBQUtiLEVB
QUtjLFFBQVFELEdBSWxDLElBQUlHLEdBPQpBUSxDQUNaLEtBQUssR0FBSUgsS0FBT2IsR0FBS2lC
LE1BQU8sQ0FDeEIsR0FBSUMsR0FBSWxCLEVBQUtpQixNQUFNSixFQUNuQkY9CixHQUFLSSxPQUFP
RyxFQUFFQyxLQUFNRCxFQUFFRSxLQUFNRixFQUFFRSxLQUFLRCxNQUNuQ0gsR0FBU0UsRUFBRUUs
S0FBS0MsSz0KQUlwQixNQUFJTCxHQUFRLFFBQVVsQixFQUFJTyxnQkFDdEJQLEdBQUlJLE1BQU1K
LEVBQUlRLGlCQUtsQmdCLElBQU0sR0FBSUMsPQpnQkFDVkQsSUFBSUUsS0FBSyxPQUFRMUIsRUFB
SU0sS0FBSyxHQUMxQmtCLElBQUlHLGlCQUFpQixTQUFVLG9CQUMvQkgsSUFBSUc9CixpQkFBaUIs
Z0JBQWlCLFlBQ3RDSCxJQUFJRyxpQkFBaUIsbUJBQW9CLGtCQUd6Q0gsSUFBSUksbUJBQXFCLFdB
RXJCLEdBQUlKLD0KSUFBSUssWUFBY0wsSUFBSU0sS0FBTSxDQUU1QixHQUFJQyxHQUFXLElBQ2Ys
SUFBSVAsSUFBSVEsYUFDSixJQUNJRCxFQUFXckMsPQpPQUFPdUMsVUFBVVQsSUFBSVEsY0FDbEMs
TUFBT0UsR0FDTEgsRUFBV1AsSUFBSVEsYUFJdkIsR0FBSVIsSUFBSVcsT0FBUyxLQUE9Ck9YLElB
QUlXLE9BQVMsSUFBSyxDQUN0QyxHQUFJQyxHQUFPWixJQUFJYSxVQUNHLE1BQWRiLElBQUlXLE9B
Q0pDLEVBQU9wQyxFQT0KQUlXLFlBQ1UsR0FBZGEsSUFBSVcsT0FDWEMsRUFBT3BDLEVBQUlVLGFB
Q0gwQixJQUNSQSxFQUFPcEMsRUFBSVMsZUFFZlQsRUFBPQpJSSxNQUFNZ0MsRUFBTyxLQUFPWixJ
QUFJVyxPQUFTLFNBRXJDbkMsR0FBSUcsUUFBUTRCLEtBTXhCUCxJQUFJYyxPQUFPQyxpQkE9CkFp
QixXQUFZLFNBQVNMLEdBQ3pDQSxFQUFFTSxrQkFDRnhDLEVBQUlLLFNBQVNvQyxLQUFLQyxNQUFr
QixJQUFYUixFQUFFUyxPQT0KQWdCVCxFQUFFVSxVQUVsRCxHQUdIQyxRQUFRQyxNQUFNLHFEQUNk
RCxRQUFRQyxNQUFNOUMsT0FDZHdCLEtBQUl1QixLQUFLbEMsPQpLQU1icEIsRUFBRXVELEdBQUdD
LFlBQWMsU0FBU0MsR0FFeEIsR0FBSUMsR0FBS0MsS0FDTEMsRUFBTzVELEVBQUVRLFdBQ1RxRCw9
CldBQWMsYUFDZEMsWUFBYyxhQUNkQyxTQUFjLGFBQ2RDLFVBQWMsR0FDZlAsR0FHQ1EsRUFBU2pF
LEVBQUUsNkNBQStDNEQsRUFBSz0KSSxVQUFZLFlBQWMsSUFBTSxLQXdCbkcsT0F2QkFOLEdBQUds
QyxPQUFPeUMsR0FBUUMsT0FBTyxTQUFVekIsR0FDL0JtQixFQUFLPQpHLFNBQVN0QixFQUFFMEIs
T0FBT3pDLE9BQ3ZCMUIsRUFBRTJELE1BQU1TLElBQUksTUFJaEJWLEVBQUdXLEdBQUcsT0FBUSxT
QUE9ClU1QixHQUNwQm1CLEVBQUtFLFlBQVlyQixHQUNkQSxFQUFFNkIsZUFDRFYsRUFBS0csU0FB
U3RCLEVBQUU2QixhQUFhNUMsT0FDNz0KQmUsRUFBRThCLG9CQUdWYixFQUFHVyxHQUFHLFdBQWEs
U0FBVTVCLEdBQ3pCQSxFQUFFOEIsaUJBQ0ZYLEVBQUtDLFdBQVdwQixLPQpBRXBCaUIsRUFBR1cs
R0FBRyxZQUFhLFNBQVU1QixHQUN6QkEsRUFBRStCLGtCQUNGWixFQUFLRSxZQUFZckIsTUFLakJn
QyxPQUE9ClEsV0FDSlIsRUFBT1MsUUFBUSxZQVEzQjFFLEVBQUV1RCxHQUFHb0IsVUFBWSxTQUFT
bEIsR0FpQ3RCLFFBQVNtQixHQUFJbEQsRz0KQUNULEdBQUlBLEdBQVNBLEVBQU1tRCxTQUFXQyxF
QUFlLENBRXpDLElBQUssR0FEREMsR0FBZ0JDLEVBQ1hDLEVBQUksRUFBR0EsPQpFQUFJdkQsRUFB
TW1ELE9BQVFJLElBQUssQ0FDbkMsR0FBSUMsR0FBUUMsT0FBT0gsSUFDbkJJLEdBQU1GLEdBQVN4
RCxFQUFNdUQ9CixHQUNyQnJCLEVBQUt5QixTQUFTSCxFQUFPRSxFQUFNRixJQUMzQkksSUFFSixN
QUFPUCxJQUtmLFFBQVNRLEdBQU9MLEdBQ1JFLD0KRUFBTUYsV0FDQ0UsR0FBTUYsR0FDYkksS0FL
UixRQUFTRSxLQUVMLEdBQW9CLEdBQWhCRixHQUFxQkcsRUFJckIsTUFIQUEsSUFBPQphLEVBQ2JY
LEdBQWdCLE1BQ2hCbEIsR0FBSzhCLFVBR0xaLElBQWdCLENBSXBCLElBQUlJLEdBQVEsRUFDWixL
QUFLLEdBQUk1RCw9CktBQU84RCxHQUFPLENBQ25CRixFQUFRNUQsQ0FDUixPQUlPOEQsRUFBTUYs
RUFHakJLLEdBQU9MLEdBR1BsRixFQUFFSyxZQUNFUT0KLElBQVcrQyxFQUFLL0MsSUFDaEJKLEtB
QVdtRCxFQUFLK0IsV0FBV1QsR0FDM0J4RSxRQUFXLFNBQVNrRixHQUFXaEMsRUFBS2xEPQosUUFB
UXdFLEVBQU9VLEdBQVVKLEtBQzdEN0UsTUFBVyxTQUFTaUYsR0FBV2hDLEVBQUtqRCxNQUFNdUUs
RUFBT1UsR0FBVUosS0E9CkMzRDVFLFNBQVcsU0FBU2lGLEdBQWNqQyxFQUFLaEQsU0FBU3NFLEVB
QU9XLE1BUy9ELFFBQVNDLEtBQ0x0QyxFQUFZaUIsU0FJaD0KQixRQUFTc0IsR0FBTWIsR0FDWCxJ
QUFLQSxJQUFTRSxHQUNWRyxFQUFPTCxHQUtmLFFBQVNjLEtBQ0FsQixJQUNEQSxHQUFnQixFPQpB
Q2hCVSxLQUtSLFFBQVNTLEtBQ0xSLEdBQWEsRUFJakIsUUFBU1MsR0FBVXpDLEdBRWYsTUFEQUcs
R0FBTzVELEVBQUVRLFVBQVc9Cm9ELEVBQU1ILEdBSzlCLFFBQVMwQyxLQUNMLE1BQU9DLFFBQU9D
LE1BQVFELE9BQU8vRSxVQUFZK0UsT0FBT3BFLGdCQUFrQm9FLD0KT0FBT0UsU0E1SDdFLEdBQUkx
QyxHQUFPNUQsRUFBRVEsV0FDVCtGLFNBQWtCLGFBQ2xCQyxVQUFrQixhQUNsQm5CLFNBQWtCLGFB
PQpDbEJNLFdBQWtCLGFBQ2xCL0UsU0FBa0IsYUFDbEJGLFFBQWtCLGFBQ2xCQyxNQUFrQixTQUFT
Z0IsRUFBRzhFLEdBQUtDLE1BQU09CkQsSUFDekNmLFNBQWtCLGNBQ25CakMsR0FHQzJCLEtBR0FK
LEVBQWMsRUFDZE0sRUFBZSxFQUdmUixHQUFnQixFQUNoQlcsR0FBYT0KLEVBR2JqQyxFQUFjeEQs
RUFBRTJELE1BQU1ILGFBQ3RCUSxVQUFjLEVBQ2RELFNBQWMsU0FBU3JDLEdBQVNrRCxFQUFJbEQs
SUFDPQpwQ21DLFdBQWNKLEVBQVFJLFdBQ3RCQyxZQUFjTCxFQUFRSyxhQXFHMUIsUUFDSWdDLE9B
QWtCQSxFQUNsQmxCLElBQWtCQSxFQUM9CmxCVyxPQUFrQkEsRUFDbEJTLE1BQWtCQSxFQUNsQkMs
S0FBa0JBLEVBQ2xCRixNQUFrQkEsRUFDbEJHLFVBQWtCQSxFQUNsQkMsVz0KQUFrQkEsS0FHM0Js
RyJ9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoreyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBs
b2FkYm94LmpzIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdXBsb2FkYm94Lmo9CnMiXSwi
bmFtZXMiOlsiJCIsImpRdWVyeSIsImV2ZW50IiwicHJvcHMiLCJwdXNoIiwidXBsb2FkcG9zdCIs
ImNvbmZpZyIsImNuZj0KIiwiZXh0ZW5kIiwiZGF0YSIsInN1Y2Nlc3MiLCJlcnJvciIsInByb2dy
ZXNzIiwidXJsIiwibWF4ZmlsZXNpemUiLCJlcnJvcl9mPQppbGVzaXplIiwiZXJyb3JfZGVmYXVs
dCIsImVycm9yX3NlcnZlciIsImVycm9yX2xvZ2luIiwiZXJyb3JfbWVzc2FnZSIsImZvcm09CiIs
IkZvcm1EYXRhIiwia2V5IiwicGF5bG9hZCIsImFwcGVuZCIsInNpemVzIiwiZmlsZXMiLCJkIiwi
bmFtZSIsImZpbGUiLCJzaT0KemUiLCJ4aHIiLCJYTUxIdHRwUmVxdWVzdCIsIm9wZW4iLCJzZXRS
ZXF1ZXN0SGVhZGVyIiwib25yZWFkeXN0YXRlY2hhbmdlIiwiPQpyZWFkeVN0YXRlIiwiRE9ORSIs
InJlc3BvbnNlIiwicmVzcG9uc2VUZXh0IiwicGFyc2VKU09OIiwiZSIsInN0YXR1cyIsInRleHQ9
CiIsInN0YXR1c1RleHQiLCJ1cGxvYWQiLCJhZGRFdmVudExpc3RlbmVyIiwibGVuZ3RoQ29tcHV0
YWJsZSIsIk1hdGgiLCJyb3VuZD0KIiwibG9hZGVkIiwidG90YWwiLCJjb25zb2xlIiwiZGVidWci
LCJzZW5kIiwiZm4iLCJ1cGxvYWRpbnB1dCIsIm9wdGlvbnMiLCJlPQpsIiwidGhpcyIsIm9wdHMi
LCJvbmRyYWdvdmVyIiwib25kcmFnbGVhdmUiLCJvbmNoYW5nZSIsIm11bHRpcGxlIiwiJGlucHV0
Iiw9CiJjaGFuZ2UiLCJ0YXJnZXQiLCJ2YWwiLCJvbiIsImRhdGFUcmFuc2ZlciIsInByZXZlbnRE
ZWZhdWx0Iiwic3RvcFByb3BhZ2F0aT0Kb24iLCJkaWFsb2ciLCJ0cmlnZ2VyIiwidXBsb2FkYm94
IiwiYWRkIiwibGVuZ3RoIiwicXVldWVfcnVubmluZyIsImN1cnJlbnRfPQppbmRleCIsInF1ZXVl
X2luZGV4IiwiaSIsImluZGV4IiwiU3RyaW5nIiwicXVldWUiLCJhbm5vdW5jZSIsInF1ZXVlX2xl
bmd0aCI9CiwicmVtb3ZlIiwicHJvY2VzcyIsInF1ZXVlX3N0b3AiLCJjb21wbGV0ZSIsImluaXRp
YWxpemUiLCJtZXNzYWdlIiwicGVyY2VudD0KYWdlIiwic2VsZWN0IiwicmVzZXQiLCJzdGFydCIs
InN0b3AiLCJjb25maWd1cmUiLCJjb21wYXRpYmxlIiwid2luZG93IiwiRmlsPQplIiwiRmlsZUxp
c3QiLCJkcmFnb3ZlciIsImRyYWdsZWF2ZSIsIm0iLCJhbGVydCJdLCJtYXBwaW5ncyI6IkNBR0Ms
U0FBVUEsR0E9CkVQQyxPQUFPQyxNQUFNQyxNQUFNQyxLQUFLLGdCQUt4QkosRUFBRUssV0FBYSxT
QUFVQyxHQUVyQixHQUFJQyxHQUFNUCxFQUFFUT0KLFdBQ1JDLFFBQ0FDLFFBQWtCLGFBQ2xCQyxN
QUFrQixhQUNsQkMsU0FBa0IsYUFDbEJDLElBQWtCLEtBQ2xCQyxZQUFrQixLQUNsPQpCQyxlQUFr
Qiw4Q0FDbEJDLGNBQWtCLDBDQUNsQkMsYUFBa0IseUJBQ2xCQyxZQUFrQixrQ0FDbkJaLEdBR0NH
LEVBQU9GLEVBQUk9CkUsSUFHZixJQUFJQSxFQUFLVSxjQUVMLFdBREFaLEdBQUlJLE1BQU1GLEVB
QUtVLGNBS25CLElBQUlDLEdBQU8sR0FBSUMsU0FDZj0KLEtBQUssR0FBSUMsS0FBT2IsR0FBS2Ms
UUFDakJILEVBQUtJLE9BQU9GLEVBQUtiLEVBQUtjLFFBQVFELEdBSWxDLElBQUlHLEdBPQpBUSxD
QUNaLEtBQUssR0FBSUgsS0FBT2IsR0FBS2lCLE1BQU8sQ0FDeEIsR0FBSUMsR0FBSWxCLEVBQUtp
QixNQUFNSixFQUNuQkY9CixHQUFLSSxPQUFPRyxFQUFFQyxLQUFNRCxFQUFFRSxLQUFNRixFQUFF
RSxLQUFLRCxNQUNuQ0gsR0FBU0UsRUFBRUUsS0FBS0MsSz0KQUlwQixNQUFJTCxHQUFRLFFBQVVs
QixFQUFJTyxnQkFDdEJQLEdBQUlJLE1BQU1KLEVBQUlRLGlCQUtsQmdCLElBQU0sR0FBSUMsPQpn
QkFDVkQsSUFBSUUsS0FBSyxPQUFRMUIsRUFBSU0sS0FBSyxHQUMxQmtCLElBQUlHLGlCQUFpQixT
QUFVLG9CQUMvQkgsSUFBSUc9CixpQkFBaUIsZ0JBQWlCLFlBQ3RDSCxJQUFJRyxpQkFBaUIsbUJB
QW9CLGtCQUd6Q0gsSUFBSUksbUJBQXFCLFdBRXJCLEdBQUlKLD0KSUFBSUssWUFBY0wsSUFBSU0s
S0FBTSxDQUU1QixHQUFJQyxHQUFXLElBQ2YsSUFBSVAsSUFBSVEsYUFDSixJQUNJRCxFQUFXckMs
PQpPQUFPdUMsVUFBVVQsSUFBSVEsY0FDbEMsTUFBT0UsR0FDTEgsRUFBV1AsSUFBSVEsYUFJdkIs
R0FBSVIsSUFBSVcsT0FBUyxLQUE9Ck9YLElBQUlXLE9BQVMsSUFBSyxDQUN0QyxHQUFJQyxHQUFP
WixJQUFJYSxVQUNHLE1BQWRiLElBQUlXLE9BQ0pDLEVBQU9wQyxFQT0KQUlXLFlBQ1UsR0FBZGEs
SUFBSVcsT0FDWEMsRUFBT3BDLEVBQUlVLGFBQ0gwQixJQUNSQSxFQUFPcEMsRUFBSVMsZUFFZlQs
RUFBPQpJSSxNQUFNZ0MsRUFBTyxLQUFPWixJQUFJVyxPQUFTLFNBRXJDbkMsR0FBSUcsUUFBUTRC
LEtBTXhCUCxJQUFJYyxPQUFPQyxpQkE9CkFpQixXQUFZLFNBQVNMLEdBQ3pDQSxFQUFFTSxrQkFD
RnhDLEVBQUlLLFNBQVNvQyxLQUFLQyxNQUFrQixJQUFYUixFQUFFUyxPQT0KQWdCVCxFQUFFVSxV
QUVsRCxHQUdIQyxRQUFRQyxNQUFNLHFEQUNkRCxRQUFRQyxNQUFNOUMsT0FDZHdCLEtBQUl1QixL
QUFLbEMsPQpLQU1icEIsRUFBRXVELEdBQUdDLFlBQWMsU0FBU0MsR0FFeEIsR0FBSUMsR0FBS0Ms
S0FDTEMsRUFBTzVELEVBQUVRLFdBQ1RxRCw9CldBQWMsYUFDZEMsWUFBYyxhQUNkQyxTQUFjLGFB
Q2RDLFVBQWMsR0FDZlAsR0FHQ1EsRUFBU2pFLEVBQUUsNkNBQStDNEQsRUFBSz0KSSxVQUFZLFlB
QWMsSUFBTSxLQXdCbkcsT0F2QkFOLEdBQUdsQyxPQUFPeUMsRUFBT0MsT0FBTyxTQUFVekIsR0FD
OUJtQixFQUFLPQpHLFNBQVN0QixFQUFFMEIsT0FBT3pDLE9BQ3ZCMUIsRUFBRTJELE1BQU1TLElB
QUksT0FJaEJWLEVBQUdXLEdBQUcsT0FBUSxTQUE9ClU1QixHQUNwQm1CLEVBQUtFLFlBQVlyQixH
QUNkQSxFQUFFNkIsZUFDRFYsRUFBS0csU0FBU3RCLEVBQUU2QixhQUFhNUMsT0FDNz0KQmUsRUFB
RThCLG9CQUdWYixFQUFHVyxHQUFHLFdBQWEsU0FBVTVCLEdBQ3pCQSxFQUFFOEIsaUJBQ0ZYLEVB
QUtDLFdBQVdwQixLPQpBRXBCaUIsRUFBR1csR0FBRyxZQUFhLFNBQVU1QixHQUN6QkEsRUFBRStC
LGtCQUNGWixFQUFLRSxZQUFZckIsTUFLakJnQyxPQUE9ClEsV0FDSlIsRUFBT1MsUUFBUSxZQVEz
QjFFLEVBQUV1RCxHQUFHb0IsVUFBWSxTQUFTbEIsR0FpQ3RCLFFBQVNtQixHQUFJbEQsRz0KQUNU
LEdBQUlBLEdBQVNBLEVBQU1tRCxTQUFXQyxFQUFlLENBRXpDLElBQUssR0FEREMsR0FBZ0JDLEVB
Q1hDLEVBQUksRUFBR0EsPQpFQUFJdkQsRUFBTW1ELE9BQVFJLElBQUssQ0FDbkMsR0FBSUMsR0FB
UUMsT0FBT0gsSUFDbkJJLEdBQU1GLEdBQVN4RCxFQUFNdUQ9CixHQUNyQnJCLEVBQUt5QixTQUFT
SCxFQUFPRSxFQUFNRixJQUMzQkksSUFFSixNQUFPUCxJQUtmLFFBQVNRLEdBQU9MLEdBQ1JFLD0K
RUFBTUYsV0FDQ0UsR0FBTUYsR0FDYkksS0FLUixRQUFTRSxLQUVMLEdBQW9CLEdBQWhCRixHQUFx
QkcsRUFJckIsTUFIQUEsSUFBPQphLEVBQ2JYLEdBQWdCLE1BQ2hCbEIsR0FBSzhCLFVBR0xaLElB
QWdCLENBSXBCLElBQUlJLEdBQVEsRUFDWixLQUFLLEdBQUk1RCw9CktBQU84RCxHQUFPLENBQ25C
RixFQUFRNUQsQ0FDUixPQUlPOEQsRUFBTUYsRUFHakJLLEdBQU9MLEdBR1BsRixFQUFFSyxZQUNF
UT0KLElBQVcrQyxFQUFLL0MsSUFDaEJKLEtBQVdtRCxFQUFLK0IsV0FBV1QsR0FDM0J4RSxRQUFX
LFNBQVNrRixHQUFXaEMsRUFBS2xEPQosUUFBUXdFLEVBQU9VLEdBQVVKLEtBQzdEN0UsTUFBVyxT
QUFTaUYsR0FBV2hDLEVBQUtqRCxNQUFNdUUsRUFBT1UsR0FBVUosS0E9CkMzRDVFLFNBQVcsU0FB
U2lGLEdBQWNqQyxFQUFLaEQsU0FBU3NFLEVBQU9XLE1BUy9ELFFBQVNDLEtBQ0x0QyxFQUFZaUIs
U0FJaD0KQixRQUFTc0IsR0FBTWIsR0FDWCxJQUFLQSxJQUFTRSxHQUNWRyxFQUFPTCxHQUtmLFFB
QVNjLEtBQ0FsQixJQUNEQSxHQUFnQixFPQpBQ2hCVSxLQUtSLFFBQVNTLEtBQ0xSLEdBQWEsRUFJ
akIsUUFBU1MsR0FBVXpDLEdBRWYsTUFEQUcsR0FBTzVELEVBQUVRLFVBQVc9Cm9ELEVBQU1ILEdB
SzlCLFFBQVMwQyxLQUNMLE1BQU9DLFFBQU9DLE1BQVFELE9BQU8vRSxVQUFZK0UsT0FBT3BFLGdC
QUFrQm9FLD0KT0FBT0UsU0E1SDdFLEdBQUkxQyxHQUFPNUQsRUFBRVEsV0FDVCtGLFNBQWtCLGFB
Q2xCQyxVQUFrQixhQUNsQm5CLFNBQWtCLGFBPQpDbEJNLFdBQWtCLGFBQ2xCL0UsU0FBa0IsYUFD
bEJGLFFBQWtCLGFBQ2xCQyxNQUFrQixTQUFTZ0IsRUFBRzhFLEdBQUtDLE1BQU09CkQsSUFDekNm
LFNBQWtCLGNBQ25CakMsR0FHQzJCLEtBR0FKLEVBQWMsRUFDZE0sRUFBZSxFQUdmUixHQUFnQixF
QUNoQlcsR0FBYT0KLEVBR2JqQyxFQUFjeEQsRUFBRTJELE1BQU1ILGFBQ3RCUSxVQUFjLEVBQ2RE
LFNBQWMsU0FBU3JDLEdBQVNrRCxFQUFJbEQsSUFDPQpwQ21DLFdBQWNKLEVBQVFJLFdBQ3RCQyxZ
QUFjTCxFQUFRSyxhQXFHMUIsUUFDSWdDLE9BQWtCQSxFQUNsQmxCLElBQWtCQSxFQUM9CmxCVyxP
QUFrQkEsRUFDbEJTLE1BQWtCQSxFQUNsQkMsS0FBa0JBLEVBQ2xCRixNQUFrQkEsRUFDbEJHLFVB
QWtCQSxFQUNsQkMsVz0KQUFrQkEsS0FHM0JsRyJ9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQoKZGlmZiAtciBkNjJmM2U1MGI1NjdhMTU3YzA5NDQ0NzNhZGJiYzQxMGM1NTUyZDFhIC1yIDM2
YzA1MjYxMzQzNDEyMzcwZjllNDRmPQo0YmRkNGIxZTE5YTk3YWE1NSBzdGF0aWMvc2NyaXB0cy9t
dmMvY29sbGVjdGlvbi9saXN0LWNvbGxlY3Rpb24tY3JlYXRvci5qcwotLS0gYS9zdGF0aWMvc2Ny
aXB0cy9tdmMvY29sbGVjdGlvbi9saXN0LWNvbGxlY3Rpb24tY3JlYXRvci5qcworKysgYi9zdGF0
aWMvc2NyaXB0cy9tdmMvY29sbGVjdGlvbi9saXN0LWNvbGxlY3Rpb24tY3JlYXRvci5qcwpAQCAt
MSwyICsxLDIgQEAKLWRlZmluZShbIm12Yy9oaXN0b3J5L2hkY2EtbW9kZWwiLCJtdmMvZGF0YXNl
dC9zdGF0ZXMiLCJtdmMvYmFzZS1tdmMiLCJtdmMvPQp1aS91aS1tb2RhbCIsInV0aWxzL25hdHVy
YWwtc29ydCIsInV0aWxzL2xvY2FsaXphdGlvbiIsInVpL2hvdmVyaGlnaGxpZ2h0Il09CixmdW5j
dGlvbihhLGIsYyxkLGUsZil7ZnVuY3Rpb24gZyhhKXt2YXIgYj0zRGEudG9KU09OKCksYz0zRGso
Yix7Y3JlYXRpb25Gbj0KOmZ1bmN0aW9uKGIsYyl7cmV0dXJuIGI9M0RiLm1hcChmdW5jdGlvbihh
KXtyZXR1cm57aWQ6YS5pZCxuYW1lOmEubmFtZSxzcmM6PQoiZGF0YXNldCI9M0Q9M0Q9M0RhLmhp
c3RvcnlfY29udGVudF90eXBlPyJoZGEiOiJoZGNhIn19KSxhLmNyZWF0ZUhEQ0EoYiwibGk9CnN0
IixjKX19KTtyZXR1cm4gY312YXIgaD0zREJhY2tib25lLlZpZXcuZXh0ZW5kKGMuTG9nZ2FibGVN
aXhpbikuZXh0ZW5kKHt0YT0KZ05hbWU6ImxpIixjbGFzc05hbWU6ImNvbGxlY3Rpb24tZWxlbWVu
dCIsaW5pdGlhbGl6ZTpmdW5jdGlvbihhKXt0aGlzLmVsZW1lPQpudD0zRGEuZWxlbWVudHx8e30s
dGhpcy5zZWxlY3RlZD0zRGEuc2VsZWN0ZWR8fCExfSxyZW5kZXI6ZnVuY3Rpb24oKXtyZXR1cm49
CiB0aGlzLiRlbC5hdHRyKCJkYXRhLWVsZW1lbnQtaWQiLHRoaXMuZWxlbWVudC5pZCkuYXR0cigi
ZHJhZ2dhYmxlIiwhMCkuaHRtbD0KKHRoaXMudGVtcGxhdGUoe2VsZW1lbnQ6dGhpcy5lbGVtZW50
fSkpLHRoaXMuc2VsZWN0ZWQmJnRoaXMuJGVsLmFkZENsYXNzKCJzPQplbGVjdGVkIiksdGhpc30s
dGVtcGxhdGU6Xy50ZW1wbGF0ZShbJzxhIGNsYXNzPTNEIm5hbWUiIHRpdGxlPTNEIicsZigiQ2xp
Y2s9CiB0byByZW5hbWUiKSwnIiBocmVmPTNEImphdmFzY3JpcHQ6dm9pZCgwKSI+JywiPCUtIGVs
ZW1lbnQubmFtZSAlPiIsIjwvYT4iLD0KJzxidXR0b24gY2xhc3M9M0QiZGlzY2FyZCBidG4gYnRu
LXNtIiB0aXRsZT0zRCInLGYoIlJlbW92ZSB0aGlzIGRhdGFzZXQgZnJvPQptIHRoZSBsaXN0Iiks
JyI+JyxmKCJEaXNjYXJkIiksIjwvYnV0dG9uPiJdLmpvaW4oIiIpKSxzZWxlY3Q6ZnVuY3Rpb24o
YSl7dGg9CmlzLiRlbC50b2dnbGVDbGFzcygic2VsZWN0ZWQiLGEpLHRoaXMudHJpZ2dlcigic2Vs
ZWN0Iix7c291cmNlOnRoaXMsc2VsZWN0ZT0KZDp0aGlzLiRlbC5oYXNDbGFzcygic2VsZWN0ZWQi
KX0pfSxkaXNjYXJkOmZ1bmN0aW9uKCl7dmFyIGE9M0R0aGlzLGI9M0R0aGlzPQouJGVsLnBhcmVu
dCgpLndpZHRoKCk7dGhpcy4kZWwuYW5pbWF0ZSh7Im1hcmdpbi1yaWdodCI6Yn0sImZhc3QiLGZ1
bmN0aW9uKCk9CnthLnRyaWdnZXIoImRpc2NhcmQiLHtzb3VyY2U6YX0pLGEuZGVzdHJveSgpfSl9
LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLm9mZj0KKCksdGhpcy4kZWwucmVtb3ZlKCl9LGV2ZW50
czp7Y2xpY2s6Il9jbGljayIsImNsaWNrIC5uYW1lIjoiX2NsaWNrTmFtZSIsImNsPQppY2sgLmRp
c2NhcmQiOiJfY2xpY2tEaXNjYXJkIixkcmFnc3RhcnQ6Il9kcmFnc3RhcnQiLGRyYWdlbmQ6Il9k
cmFnZW5kIixkcmE9CmdvdmVyOiJfc2VuZFRvUGFyZW50Iixkcm9wOiJfc2VuZFRvUGFyZW50In0s
X2NsaWNrOmZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZz0KYXRpb24oKSx0aGlzLnNlbGVjdChhKX0s
X2NsaWNrTmFtZTpmdW5jdGlvbihhKXthLnN0b3BQcm9wYWdhdGlvbigpLGEucHJldmVuPQp0RGVm
YXVsdCgpO3ZhciBiPTNEKFtmKCJFbnRlciBhIG5ldyBuYW1lIGZvciB0aGUgZWxlbWVudCIpLCI6
XG4oIixmKCJOb3RlIHQ9CmhhdCBjaGFuZ2luZyB0aGUgbmFtZSBoZXJlIHdpbGwgbm90IHJlbmFt
ZSB0aGUgZGF0YXNldCIpLCIpIl0uam9pbigiIikscHJvbT0KcHQoZigiRW50ZXIgYSBuZXcgbmFt
ZSBmb3IgdGhlIGVsZW1lbnQiKSsiOiIsdGhpcy5lbGVtZW50Lm5hbWUpKTtiJiYodGhpcy5lPQps
ZW1lbnQubmFtZT0zRGIsdGhpcy5yZW5kZXIoKSl9LF9jbGlja0Rpc2NhcmQ6ZnVuY3Rpb24oYSl7
YS5zdG9wUHJvcGFnYXRpb249CigpLHRoaXMuZGlzY2FyZCgpfSxfZHJhZ3N0YXJ0OmZ1bmN0aW9u
KGEpe2Eub3JpZ2luYWxFdmVudCYmKGE9M0RhLm9yaWdpbmFsRT0KdmVudCksYS5kYXRhVHJhbnNm
ZXIuZWZmZWN0QWxsb3dlZD0zRCJtb3ZlIixhLmRhdGFUcmFuc2Zlci5zZXREYXRhKCJ0ZXh0L3Bs
PQphaW4iLEpTT04uc3RyaW5naWZ5KHRoaXMuZWxlbWVudCkpLHRoaXMuJGVsLmFkZENsYXNzKCJk
cmFnZ2luZyIpLHRoaXMuJGVsLnA9CmFyZW50KCkudHJpZ2dlcigiY29sbGVjdGlvbi1lbGVtZW50
LmRyYWdzdGFydCIsW3RoaXNdKX0sX2RyYWdlbmQ6ZnVuY3Rpb24oKT0Ke3RoaXMuJGVsLnJlbW92
ZUNsYXNzKCJkcmFnZ2luZyIpLHRoaXMuJGVsLnBhcmVudCgpLnRyaWdnZXIoImNvbGxlY3Rpb24t
ZWxlPQptZW50LmRyYWdlbmQiLFt0aGlzXSl9LF9zZW5kVG9QYXJlbnQ6ZnVuY3Rpb24oYSl7dGhp
cy4kZWwucGFyZW50KCkudHJpZ2dlcig9CmEpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJE
YXRhc2V0Q29sbGVjdGlvbkVsZW1lbnRWaWV3KCkifX0pLGk9M0RCYWNrYj0Kb25lLlZpZXcuZXh0
ZW5kKGMuTG9nZ2FibGVNaXhpbikuZXh0ZW5kKHtlbGVtZW50Vmlld0NsYXNzOmgsY29sbGVjdGlv
bkNsYXNzPQo6YS5IaXN0b3J5TGlzdERhdGFzZXRDb2xsZWN0aW9uLGNsYXNzTmFtZToibGlzdC1j
b2xsZWN0aW9uLWNyZWF0b3IgY29sbGVjdGk9Cm9uLWNyZWF0b3IgZmxleC1yb3ctY29udGFpbmVy
IixtaW5FbGVtZW50czoxLGRlZmF1bHRBdHRyaWJ1dGVzOntjcmVhdGlvbkZuOj0KZnVuY3Rpb24o
KXt0aHJvdyBuZXcgVHlwZUVycm9yKCJubyBjcmVhdGlvbiBmbiBmb3IgY3JlYXRvciIpfSxvbmNy
ZWF0ZTpmdW5jPQp0aW9uKCl7fSxvbmNhbmNlbDpmdW5jdGlvbigpe30sYXV0b3Njcm9sbERpc3Q6
MjQsaGlnaGxpZ2h0Q2xyOiJyZ2JhKCA2NCwgMjU9CjUsIDI1NSwgMS4wICkifSxpbml0aWFsaXpl
OmZ1bmN0aW9uKGEpe3RoaXMubWV0cmljKCJMaXN0Q29sbGVjdGlvbkNyZWF0b3IuaT0Kbml0aWFs
aXplIixhKTt2YXIgYj0zRHRoaXM7Xy5lYWNoKHRoaXMuZGVmYXVsdEF0dHJpYnV0ZXMsZnVuY3Rp
b24oYyxkKXtjPTNEPQphW2RdfHxjLGJbZF09M0RjfSksYi5pbml0aWFsRWxlbWVudHM9M0RhLmVs
ZW1lbnRzfHxbXSx0aGlzLl9pbnN0YW5jZVNldFVwKCk9Cix0aGlzLl9lbGVtZW50c1NldFVwKCks
dGhpcy5fc2V0VXBCZWhhdmlvcnMoKX0sX2luc3RhbmNlU2V0VXA6ZnVuY3Rpb24oKXt0aD0KaXMu
c2VsZWN0ZWRJZHM9M0R7fSx0aGlzLiRkcmFnZ2luZz0zRG51bGwsdGhpcy5ibG9ja2luZz0zRCEx
fSxfZWxlbWVudHNTZXRVPQpwOmZ1bmN0aW9uKCl7dGhpcy5pbnZhbGlkRWxlbWVudHM9M0RbXSx0
aGlzLndvcmtpbmdFbGVtZW50cz0zRFtdLHRoaXMuZWxlbWU9Cm50Vmlld3M9M0RbXSx0aGlzLndv
cmtpbmdFbGVtZW50cz0zRHRoaXMuaW5pdGlhbEVsZW1lbnRzLnNsaWNlKDApLHRoaXMuX2Vucz0K
dXJlRWxlbWVudElkcygpLHRoaXMuX3ZhbGlkYXRlRWxlbWVudHMoKSx0aGlzLl9tYW5nbGVEdXBs
aWNhdGVOYW1lcygpLHRoaXMuPQpfc29ydEVsZW1lbnRzKCl9LF9lbnN1cmVFbGVtZW50SWRzOmZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMud29ya2luZ0VsZW1lbnRzLmY9Cm9yRWFjaChmdW5jdGlvbihh
KXthLmhhc093blByb3BlcnR5KCJpZCIpfHwoYS5pZD0zRF8udW5pcXVlSWQoKSl9KSx0aGlzLndv
cj0Ka2luZ0VsZW1lbnRzfSxfdmFsaWRhdGVFbGVtZW50czpmdW5jdGlvbigpe3ZhciBhPTNEdGhp
cztyZXR1cm4gYS5pbnZhbGlkRWxlPQptZW50cz0zRFtdLHRoaXMud29ya2luZ0VsZW1lbnRzPTNE
dGhpcy53b3JraW5nRWxlbWVudHMuZmlsdGVyKGZ1bmN0aW9uKGIpe3Y9CmFyIGM9M0RhLl9pc0Vs
ZW1lbnRJbnZhbGlkKGIpO3JldHVybiBjJiZhLmludmFsaWRFbGVtZW50cy5wdXNoKHtlbGVtZW50
OmIsdD0KZXh0OmN9KSwhY30pLHRoaXMud29ya2luZ0VsZW1lbnRzfSxfaXNFbGVtZW50SW52YWxp
ZDpmdW5jdGlvbihhKXtyZXR1cm4iZGF0PQphc2V0IiE9M0Q9M0RhLmhpc3RvcnlfY29udGVudF90
eXBlP2YoImlzIG5vdCBhIGRhdGFzZXQiKTphLnN0YXRlIT0zRD0zRGIuT0s9Cj9mKF8uY29udGFp
bnMoYi5OT1RfUkVBRFlfU1RBVEVTLGEuc3RhdGUpPyJoYXNuJ3QgZmluaXNoZWQgcnVubmluZyB5
ZXQiOiJoYT0KcyBlcnJvcmVkLCBpcyBwYXVzZWQsIG9yIGlzIG5vdCBhY2Nlc3NpYmxlIik6YS5k
ZWxldGVkfHxhLnB1cmdlZD9mKCJoYXMgYmVlPQpuIGRlbGV0ZWQgb3IgcHVyZ2VkIik6bnVsbH0s
X21hbmdsZUR1cGxpY2F0ZU5hbWVzOmZ1bmN0aW9uKCl7dmFyIGE9M0Q5MDAsYj0KPTNEMSxjPTNE
e307dGhpcy53b3JraW5nRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbihkKXtmb3IodmFyIGU9M0Rk
Lm5hbWU7Yy5oPQphc093blByb3BlcnR5KGUpOylpZihlPTNEZC5uYW1lKyIgKCIrYisiKSIsYis9
M0QxLGI+PTNEYSl0aHJvdyBuZXcgRXJyb3IoIlM9CmFmZXR5IGhpdCBpbiB3aGlsZSBsb29wIC0g
dGhhdHMgaW1wcmVzc2l2ZSIpO2QubmFtZT0zRGUsY1tkLm5hbWVdPTNEITB9KX0sXz0Kc29ydEVs
ZW1lbnRzOmZ1bmN0aW9uKCl7fSxyZW5kZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy53b3Jr
aW5nRWxlbWVudHMuPQpsZW5ndGg8dGhpcy5taW5FbGVtZW50cz90aGlzLl9yZW5kZXJJbnZhbGlk
KGEsYik6KHRoaXMuJGVsLmVtcHR5KCkuaHRtbCh0aGk9CnMudGVtcGxhdGVzLm1haW4oKSksdGhp
cy5fcmVuZGVySGVhZGVyKGEpLHRoaXMuX3JlbmRlck1pZGRsZShhKSx0aGlzLl9yZW5kZT0KckZv
b3RlcihhKSx0aGlzLl9hZGRQbHVnaW5Db21wb25lbnRzKCksdGhpcy4kKCIuY29sbGVjdGlvbi1u
YW1lIikuZm9jdXMoKSx0PQpoaXMudHJpZ2dlcigicmVuZGVyZWQiLHRoaXMpLHRoaXMpfSxfcmVu
ZGVySW52YWxpZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiQ9CmVsLmVtcHR5KCkuaHRtbCh0aGlz
LnRlbXBsYXRlcy5pbnZhbGlkSW5pdGlhbCh7cHJvYmxlbXM6dGhpcy5pbnZhbGlkRWxlbWVudD0K
cyxlbGVtZW50czp0aGlzLndvcmtpbmdFbGVtZW50c30pKSwiZnVuY3Rpb24iPTNEPTNEdHlwZW9m
IHRoaXMub25jYW5jZWwmJnRoPQppcy4kKCIuY2FuY2VsLWNyZWF0ZS5idG4iKS5zaG93KCksdGhp
cy50cmlnZ2VyKCJyZW5kZXJlZCIsdGhpcyksdGhpc30sX3JlbmQ9CmVySGVhZGVyOmZ1bmN0aW9u
KCl7dmFyIGE9M0R0aGlzLiQoIi5oZWFkZXIiKS5lbXB0eSgpLmh0bWwodGhpcy50ZW1wbGF0ZXMu
aD0KZWFkZXIoKSkuZmluZCgiLmhlbHAtY29udGVudCIpLnByZXBlbmQoJCh0aGlzLnRlbXBsYXRl
cy5oZWxwQ29udGVudCgpKSk7cmV0PQp1cm4gdGhpcy5pbnZhbGlkRWxlbWVudHMubGVuZ3RoJiZ0
aGlzLl9pbnZhbGlkRWxlbWVudHNBbGVydCgpLGF9LF9yZW5kZXJNaWQ9CmRsZTpmdW5jdGlvbihh
KXt2YXIgYj0zRHRoaXMuJCgiLm1pZGRsZSIpLmVtcHR5KCkuaHRtbCh0aGlzLnRlbXBsYXRlcy5t
aWRkbD0KZSgpKTtyZXR1cm4gdGhpcy5fcmVuZGVyTGlzdChhKSxifSxfcmVuZGVyRm9vdGVyOmZ1
bmN0aW9uKCl7dmFyIGE9M0R0aGlzLiQoPQoiLmZvb3RlciIpLmVtcHR5KCkuaHRtbCh0aGlzLnRl
bXBsYXRlcy5mb290ZXIoKSk7cmV0dXJuImZ1bmN0aW9uIj0zRD0zRHR5cGU9Cm9mIHRoaXMub25j
YW5jZWwmJnRoaXMuJCgiLmNhbmNlbC1jcmVhdGUuYnRuIikuc2hvdygpLGF9LF9hZGRQbHVnaW5D
b21wb25lbj0KdHM6ZnVuY3Rpb24oKXt0aGlzLiQoIi5oZWxwLWNvbnRlbnQgaSIpLmhvdmVyaGln
aGxpZ2h0KCIuY29sbGVjdGlvbi1jcmVhdG9yPQoiLHRoaXMuaGlnaGxpZ2h0Q2xyKX0sX2ludmFs
aWRFbGVtZW50c0FsZXJ0OmZ1bmN0aW9uKCl7dGhpcy5fc2hvd0FsZXJ0KHRoaXM9Ci50ZW1wbGF0
ZXMuaW52YWxpZEVsZW1lbnRzKHtwcm9ibGVtczp0aGlzLmludmFsaWRFbGVtZW50c30pLCJhbGVy
dC13YXJuaW5nIj0KKX0sX3ZhbGlkYXRpb25XYXJuaW5nOmZ1bmN0aW9uKGEsYil7dmFyIGM9M0Qi
dmFsaWRhdGlvbi13YXJuaW5nIjsibmFtZSI9M0Q9Cj0zRD0zRGEmJihhPTNEdGhpcy4kKCIuY29s
bGVjdGlvbi1uYW1lIikuYWRkKHRoaXMuJCgiLmNvbGxlY3Rpb24tbmFtZS1wcm9tcD0KdCIpKSx0
aGlzLiQoIi5jb2xsZWN0aW9uLW5hbWUiKS5mb2N1cygpLnNlbGVjdCgpKSxiPyhhPTNEYXx8dGhp
cy4kKCIuIitjKSxhPQoucmVtb3ZlQ2xhc3MoYykpOmEuYWRkQ2xhc3MoYyl9LF9kaXNhYmxlTmFt
ZUFuZENyZWF0ZTpmdW5jdGlvbihhKXthPTNEXy5pc1U9Cm5kZWZpbmVkKGEpPyEwOmEsYSYmKHRo
aXMuJCgiLmNvbGxlY3Rpb24tbmFtZSIpLnByb3AoImRpc2FibGVkIiwhMCksdGhpcy4kKD0KIi5j
cmVhdGUtY29sbGVjdGlvbiIpLnRvZ2dsZUNsYXNzKCJkaXNhYmxlZCIsITApKX0sJGxpc3Q6ZnVu
Y3Rpb24oKXtyZXR1cm4gPQp0aGlzLiQoIi5jb2xsZWN0aW9uLWVsZW1lbnRzIil9LF9yZW5kZXJD
bGVhclNlbGVjdGVkOmZ1bmN0aW9uKCl7Xy5zaXplKHRoaXM9Ci5zZWxlY3RlZElkcyk/dGhpcy4k
KCIuY29sbGVjdGlvbi1lbGVtZW50cy1jb250cm9scyA+IC5jbGVhci1zZWxlY3RlZCIpLnNobz0K
dygpOnRoaXMuJCgiLmNvbGxlY3Rpb24tZWxlbWVudHMtY29udHJvbHMgPiAuY2xlYXItc2VsZWN0
ZWQiKS5oaWRlKCl9LF9yZW5kPQplckxpc3Q6ZnVuY3Rpb24oKXt2YXIgYT0zRHRoaXMsYj0zRGpR
dWVyeSgiPGRpdi8+IiksYz0zRGEuJGxpc3QoKTtfLmVhY2godGg9CmlzLmVsZW1lbnRWaWV3cyxm
dW5jdGlvbihiKXtiLmRlc3Ryb3koKSxhLnJlbW92ZUVsZW1lbnRWaWV3KGIpfSksYS53b3JraW5n
RT0KbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGMpe3ZhciBkPTNEYS5fY3JlYXRlRWxlbWVudFZp
ZXcoYyk7Yi5hcHBlbmQoZC4kZWwpPQp9KSxhLl9yZW5kZXJDbGVhclNlbGVjdGVkKCksYy5lbXB0
eSgpLmFwcGVuZChiLmNoaWxkcmVuKCkpLF8uaW52b2tlKGEuZWxlbWU9Cm50Vmlld3MsInJlbmRl
ciIpLGMuaGVpZ2h0KCk+Yy5jc3MoIm1heC1oZWlnaHQiKT9jLmNzcygiYm9yZGVyLXdpZHRoIiwi
MXB4ID0KMHB4IDFweCAwcHgiKTpjLmNzcygiYm9yZGVyLXdpZHRoIiwiMHB4Iil9LF9jcmVhdGVF
bGVtZW50VmlldzpmdW5jdGlvbihhKXt2PQphciBiPTNEbmV3IHRoaXMuZWxlbWVudFZpZXdDbGFz
cyh7ZWxlbWVudDphLHNlbGVjdGVkOl8uaGFzKHRoaXMuc2VsZWN0ZWRJZHM9CixhLmlkKX0pO3Jl
dHVybiB0aGlzLmVsZW1lbnRWaWV3cy5wdXNoKGIpLHRoaXMuX2xpc3RlblRvRWxlbWVudFZpZXco
YiksYn0sXz0KbGlzdGVuVG9FbGVtZW50VmlldzpmdW5jdGlvbihhKXt2YXIgYj0zRHRoaXM7Yi5s
aXN0ZW5UbyhhLHtzZWxlY3Q6ZnVuY3Rpb24oPQphKXt2YXIgYz0zRGEuc291cmNlLmVsZW1lbnQ7
YS5zZWxlY3RlZD9iLnNlbGVjdGVkSWRzW2MuaWRdPTNEITA6ZGVsZXRlIGIuc2U9CmxlY3RlZElk
c1tjLmlkXSxiLnRyaWdnZXIoImVsZW1lbnRzOnNlbGVjdCIsYSl9LGRpc2NhcmQ6ZnVuY3Rpb24o
YSl7Yi50cmlnZz0KZXIoImVsZW1lbnRzOmRpc2NhcmQiLGEpfX0pfSxhZGRFbGVtZW50Vmlldzpm
dW5jdGlvbigpe30scmVtb3ZlRWxlbWVudFZpZXc6PQpmdW5jdGlvbihhKXtkZWxldGUgdGhpcy5z
ZWxlY3RlZElkc1thLmVsZW1lbnQuaWRdLHRoaXMuX3JlbmRlckNsZWFyU2VsZWN0ZWQ9CigpLHRo
aXMuZWxlbWVudFZpZXdzPTNEXy53aXRob3V0KHRoaXMuZWxlbWVudFZpZXdzLGEpLHRoaXMuc3Rv
cExpc3RlbmluZyhhKT0KfSxfcmVuZGVyTm9FbGVtZW50c0xlZnQ6ZnVuY3Rpb24oKXt0aGlzLl9k
aXNhYmxlTmFtZUFuZENyZWF0ZSghMCksdGhpcy4kKCIuPQpjb2xsZWN0aW9uLWVsZW1lbnRzIiku
YXBwZW5kKHRoaXMudGVtcGxhdGVzLm5vRWxlbWVudHNMZWZ0KCkpfSxfZWxlbWVudFRvSlM9Ck9O
OmZ1bmN0aW9uKGEpe3JldHVybiBhfSxjcmVhdGVMaXN0OmZ1bmN0aW9uKGEpe2lmKCF0aGlzLndv
cmtpbmdFbGVtZW50cy5sZT0Kbmd0aCl7dmFyIGI9M0RmKCJObyB2YWxpZCBlbGVtZW50cyBmb3Ig
ZmluYWwgbGlzdCIpKyIuICI7cmV0dXJuIGIrPTNEJzxhIGNsPQphc3M9M0QiY2FuY2VsLWNyZWF0
ZSIgaHJlZj0zRCJqYXZhc2NyaXB0OnZvaWQoMCk7Ij4nK2YoIkNhbmNlbCIpKyI8L2E+ICIsYis9
Cj0zRGYoIm9yIiksYis9M0QnIDxhIGNsYXNzPTNEInJlc2V0IiBocmVmPTNEImphdmFzY3JpcHQ6
dm9pZCgwKTsiPicrZigic3Rhcj0KdCBvdmVyIikrIjwvYT4uIix2b2lkIHRoaXMuX3Nob3dBbGVy
dChiKX12YXIgYz0zRHRoaXMsZD0zRHRoaXMud29ya2luZ0VsZW1lPQpudHMubWFwKGZ1bmN0aW9u
KGEpe3JldHVybiBjLl9lbGVtZW50VG9KU09OKGEpfSk7cmV0dXJuIGMuYmxvY2tpbmc9M0QhMCxj
LmM9CnJlYXRpb25GbihkLGEpLmFsd2F5cyhmdW5jdGlvbigpe2MuYmxvY2tpbmc9M0QhMX0pLmZh
aWwoZnVuY3Rpb24oYSxiKXtjLnRyaT0KZ2dlcigiZXJyb3IiLHt4aHI6YSxzdGF0dXM6YixtZXNz
YWdlOmYoIkFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGNyZWF0aW5nIHRoPQppcyBjb2xsZWN0aW9u
Iil9KX0pLmRvbmUoZnVuY3Rpb24oYSxiLGQpe2MudHJpZ2dlcigiY29sbGVjdGlvbjpjcmVhdGVk
IixhLGI9CixkKSxjLm1ldHJpYygiY29sbGVjdGlvbjpjcmVhdGVkIixhKSwiZnVuY3Rpb24iPTNE
PTNEdHlwZW9mIGMub25jcmVhdGUmJmMubz0KbmNyZWF0ZS5jYWxsKHRoaXMsYSxiLGQpfSl9LF9z
ZXRVcEJlaGF2aW9yczpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9uKCJlcnJvPQpyIix0aGlzLl9l
cnJvckhhbmRsZXIpLHRoaXMub25jZSgicmVuZGVyZWQiLGZ1bmN0aW9uKCl7dGhpcy50cmlnZ2Vy
KCJyZW5kZXI9CmVkOmluaXRpYWwiLHRoaXMpfSksdGhpcy5vbigiZWxlbWVudHM6c2VsZWN0Iixm
dW5jdGlvbigpe3RoaXMuX3JlbmRlckNsZWFyUz0KZWxlY3RlZCgpfSksdGhpcy5vbigiZWxlbWVu
dHM6ZGlzY2FyZCIsZnVuY3Rpb24oYSl7dmFyIGI9M0RhLnNvdXJjZS5lbGVtZW50PQo7dGhpcy5y
ZW1vdmVFbGVtZW50VmlldyhhLnNvdXJjZSksdGhpcy53b3JraW5nRWxlbWVudHM9M0RfLndpdGhv
dXQodGhpcy53b3I9CmtpbmdFbGVtZW50cyxiKSx0aGlzLndvcmtpbmdFbGVtZW50cy5sZW5ndGh8
fHRoaXMuX3JlbmRlck5vRWxlbWVudHNMZWZ0KCl9KT0KLHRoaXN9LF9lcnJvckhhbmRsZXI6ZnVu
Y3Rpb24oYSl7dGhpcy5lcnJvcihhKTt2YXIgYj0zRHRoaXM7aWYoY29udGVudD0zRGEuPQptZXNz
YWdlfHxmKCJBbiBlcnJvciBvY2N1cnJlZCIpLGEueGhyKXt2YXIgYz0zRGEueGhyLGQ9M0RhLm1l
c3NhZ2U7Y29udGVudCs9Cj0zRDA9M0Q9M0Q9M0RjLnJlYWR5U3RhdGUmJjA9M0Q9M0Q9M0RjLnN0
YXR1cz8iOiAiK2YoIkdhbGF4eSBjb3VsZCBub3QgYmUgcj0KZWFjaGVkIGFuZCBtYXkgYmUgdXBk
YXRpbmcuIikrZigiIFRyeSBhZ2FpbiBpbiBhIGZldyBtaW51dGVzLiIpOmMucmVzcG9uc2VKPQpT
T04/Ijo8YnIgLz48cHJlPiIrSlNPTi5zdHJpbmdpZnkoYy5yZXNwb25zZUpTT04pKyI8L3ByZT4i
OiI6ICIrZH1iLl9zaG93QWw9CmVydChjb250ZW50LCJhbGVydC1kYW5nZXIiKX0sZXZlbnRzOnsi
Y2xpY2sgLm1vcmUtaGVscCI6Il9jbGlja01vcmVIZWxwIiwiYz0KbGljayAubGVzcy1oZWxwIjoi
X2NsaWNrTGVzc0hlbHAiLCJjbGljayAubWFpbi1oZWxwIjoiX3RvZ2dsZUhlbHAiLCJjbGljayAu
PQpoZWFkZXIgLmFsZXJ0IGJ1dHRvbiI6Il9oaWRlQWxlcnQiLCJjbGljayAucmVzZXQiOiJyZXNl
dCIsImNsaWNrIC5jbGVhci1zZWw9CmVjdGVkIjoiY2xlYXJTZWxlY3RlZEVsZW1lbnRzIiwiY2xp
Y2sgLmNvbGxlY3Rpb24tZWxlbWVudHMiOiJjbGVhclNlbGVjdGVkRT0KbGVtZW50cyIsImRyYWdv
dmVyIC5jb2xsZWN0aW9uLWVsZW1lbnRzIjoiX2RyYWdvdmVyRWxlbWVudHMiLCJkcm9wIC5jb2xs
ZWN0PQppb24tZWxlbWVudHMiOiJfZHJvcEVsZW1lbnRzIiwiY29sbGVjdGlvbi1lbGVtZW50LmRy
YWdzdGFydCAuY29sbGVjdGlvbi1lbGU9Cm1lbnRzIjoiX2VsZW1lbnREcmFnc3RhcnQiLCJjb2xs
ZWN0aW9uLWVsZW1lbnQuZHJhZ2VuZCAgIC5jb2xsZWN0aW9uLWVsZW1lbj0KdHMiOiJfZWxlbWVu
dERyYWdlbmQiLCJjaGFuZ2UgLmNvbGxlY3Rpb24tbmFtZSI6Il9jaGFuZ2VOYW1lIiwia2V5ZG93
biAuY29sPQpsZWN0aW9uLW5hbWUiOiJfbmFtZUNoZWNrRm9yRW50ZXIiLCJjbGljayAuY2FuY2Vs
LWNyZWF0ZSI6ZnVuY3Rpb24oKXsiZnVuY3Q9CmlvbiI9M0Q9M0R0eXBlb2YgdGhpcy5vbmNhbmNl
bCYmdGhpcy5vbmNhbmNlbC5jYWxsKHRoaXMpfSwiY2xpY2sgLmNyZWF0ZS1jbz0KbGxlY3Rpb24i
OiJfY2xpY2tDcmVhdGUifSxfY2xpY2tNb3JlSGVscDpmdW5jdGlvbihhKXthLnN0b3BQcm9wYWdh
dGlvbigpLHRoPQppcy4kKCIubWFpbi1oZWxwIikuYWRkQ2xhc3MoImV4cGFuZGVkIiksdGhpcy4k
KCIubW9yZS1oZWxwIikuaGlkZSgpfSxfY2xpY2s9Ckxlc3NIZWxwOmZ1bmN0aW9uKGEpe2Euc3Rv
cFByb3BhZ2F0aW9uKCksdGhpcy4kKCIubWFpbi1oZWxwIikucmVtb3ZlQ2xhc3MoIj0KZXhwYW5k
ZWQiKSx0aGlzLiQoIi5tb3JlLWhlbHAiKS5zaG93KCl9LF90b2dnbGVIZWxwOmZ1bmN0aW9uKGEp
e2Euc3RvcFByb3BhPQpnYXRpb24oKSx0aGlzLiQoIi5tYWluLWhlbHAiKS50b2dnbGVDbGFzcygi
ZXhwYW5kZWQiKSx0aGlzLiQoIi5tb3JlLWhlbHAiKS49CnRvZ2dsZSgpfSxfc2hvd0FsZXJ0OmZ1
bmN0aW9uKGEsYil7Yj0zRGJ8fCJhbGVydC1kYW5nZXIiLHRoaXMuJCgiLm1haW4taGVscD0KIiku
aGlkZSgpLHRoaXMuJCgiLmhlYWRlciAuYWxlcnQiKS5hdHRyKCJjbGFzcyIsImFsZXJ0IGFsZXJ0
LWRpc21pc3NhYmxlIikuPQphZGRDbGFzcyhiKS5zaG93KCkuZmluZCgiLmFsZXJ0LW1lc3NhZ2Ui
KS5odG1sKGEpfSxfaGlkZUFsZXJ0OmZ1bmN0aW9uKCl7dGg9CmlzLiQoIi5tYWluLWhlbHAiKS5z
aG93KCksdGhpcy4kKCIuaGVhZGVyIC5hbGVydCIpLmhpZGUoKX0scmVzZXQ6ZnVuY3Rpb24oKT0K
e3RoaXMuX2luc3RhbmNlU2V0VXAoKSx0aGlzLl9lbGVtZW50c1NldFVwKCksdGhpcy5yZW5kZXIo
KX0sY2xlYXJTZWxlY3RlZEVsPQplbWVudHM6ZnVuY3Rpb24oKXt0aGlzLiQoIi5jb2xsZWN0aW9u
LWVsZW1lbnRzIC5jb2xsZWN0aW9uLWVsZW1lbnQiKS5yZW1vdmU9CkNsYXNzKCJzZWxlY3RlZCIp
LHRoaXMuJCgiLmNvbGxlY3Rpb24tZWxlbWVudHMtY29udHJvbHMgPiAuY2xlYXItc2VsZWN0ZWQi
KT0KLmhpZGUoKX0sX2RyYWdvdmVyRWxlbWVudHM6ZnVuY3Rpb24oYSl7YS5wcmV2ZW50RGVmYXVs
dCgpO3ZhciBiPTNEdGhpcy4kbGlzPQp0KCk7dGhpcy5fY2hlY2tGb3JBdXRvc2Nyb2xsKGIsYS5v
cmlnaW5hbEV2ZW50LmNsaWVudFkpO3ZhciBjPTNEdGhpcy5fZ2V0TmU9CmFyZXN0RWxlbWVudChh
Lm9yaWdpbmFsRXZlbnQuY2xpZW50WSk7dGhpcy4kKCIuZWxlbWVudC1kcm9wLXBsYWNlaG9sZGVy
Iikucj0KZW1vdmUoKTt2YXIgZD0zRCQoJzxkaXYgY2xhc3M9M0QiZWxlbWVudC1kcm9wLXBsYWNl
aG9sZGVyIj48L2Rpdj4nKTtjLnNpemUoPQopP2MuYmVmb3JlKGQpOmIuYXBwZW5kKGQpfSxfY2hl
Y2tGb3JBdXRvc2Nyb2xsOmZ1bmN0aW9uKGEsYil7dmFyIGM9M0QyLGQ9M0Q9CmEub2Zmc2V0KCks
ZT0zRGEuc2Nyb2xsVG9wKCksZj0zRGItZC50b3AsZz0zRGQudG9wK2Eub3V0ZXJIZWlnaHQoKS1i
O2Y+PTNEMD0KJiZmPHRoaXMuYXV0b3Njcm9sbERpc3Q/YS5zY3JvbGxUb3AoZS1jKTpnPj0zRDAm
Jmc8dGhpcy5hdXRvc2Nyb2xsRGlzdCYmYS5zPQpjcm9sbFRvcChlK2MpfSxfZ2V0TmVhcmVzdEVs
ZW1lbnQ6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTNENCxjPTNEdGhpcy4kKCIuY289CmxsZWN0aW9u
LWVsZW1lbnRzIGxpLmNvbGxlY3Rpb24tZWxlbWVudCIpLnRvQXJyYXkoKSxkPTNEMDtkPGMubGVu
Z3RoO2QrKyl7dj0KYXIgZT0zRCQoY1tkXSksZj0zRGUub2Zmc2V0KCkudG9wLGc9M0RNYXRoLmZs
b29yKGUub3V0ZXJIZWlnaHQoKS8yKStiO2lmKGYrPQpnPmEmJmE+Zi1nKXJldHVybiBlfXJldHVy
biAkKCl9LF9kcm9wRWxlbWVudHM6ZnVuY3Rpb24oYSl7YS5vcmlnaW5hbEV2ZW50JiY9CihhPTNE
YS5vcmlnaW5hbEV2ZW50KSxhLnByZXZlbnREZWZhdWx0KCksYS5kYXRhVHJhbnNmZXIuZHJvcEVm
ZmVjdD0zRCJtb3ZlIj0KO3ZhciBiPTNEdGhpcy5fZ2V0TmVhcmVzdEVsZW1lbnQoYS5jbGllbnRZ
KTtyZXR1cm4gYi5zaXplKCk/dGhpcy4kZHJhZ2dpbmcuPQppbnNlcnRCZWZvcmUoYik6dGhpcy4k
ZHJhZ2dpbmcuaW5zZXJ0QWZ0ZXIodGhpcy4kKCIuY29sbGVjdGlvbi1lbGVtZW50cyAuY289Cmxs
ZWN0aW9uLWVsZW1lbnQiKS5sYXN0KCkpLHRoaXMuX3N5bmNPcmRlclRvRG9tKCksITF9LF9zeW5j
T3JkZXJUb0RvbTpmdW5jdD0KaW9uKCl7dmFyIGE9M0R0aGlzLGI9M0RbXTt0aGlzLiQoIi5jb2xs
ZWN0aW9uLWVsZW1lbnRzIC5jb2xsZWN0aW9uLWVsZW1lbnQiPQopLmVhY2goZnVuY3Rpb24oKXt2
YXIgYz0zRCQodGhpcykuYXR0cigiZGF0YS1lbGVtZW50LWlkIiksZD0zRF8uZmluZFdoZXJlKGE9
Ci53b3JraW5nRWxlbWVudHMse2lkOmN9KTtkP2IucHVzaChkKTpjb25zb2xlLmVycm9yKCJtaXNz
aW5nIGVsZW1lbnQ6ICIsYyl9KT0KLHRoaXMud29ya2luZ0VsZW1lbnRzPTNEYix0aGlzLl9yZW5k
ZXJMaXN0KCl9LF9lbGVtZW50RHJhZ3N0YXJ0OmZ1bmN0aW9uKGEsPQpiKXtiLnNlbGVjdCghMCks
dGhpcy4kZHJhZ2dpbmc9M0R0aGlzLiQoIi5jb2xsZWN0aW9uLWVsZW1lbnRzIC5jb2xsZWN0aW9u
LWU9CmxlbWVudC5zZWxlY3RlZCIpfSxfZWxlbWVudERyYWdlbmQ6ZnVuY3Rpb24oKXskKCIuZWxl
bWVudC1kcm9wLXBsYWNlaG9sZGVyIj0KKS5yZW1vdmUoKSx0aGlzLiRkcmFnZ2luZz0zRG51bGx9
LF9jaGFuZ2VOYW1lOmZ1bmN0aW9uKCl7dGhpcy5fdmFsaWRhdGlvbldhPQpybmluZygibmFtZSIs
ISF0aGlzLl9nZXROYW1lKCkpfSxfbmFtZUNoZWNrRm9yRW50ZXI6ZnVuY3Rpb24oYSl7MTMhPTNE
PTNEYS49CmtleUNvZGV8fHRoaXMuYmxvY2tpbmd8fHRoaXMuX2NsaWNrQ3JlYXRlKCl9LF9nZXRO
YW1lOmZ1bmN0aW9uKCl7cmV0dXJuIF8uZT0Kc2NhcGUodGhpcy4kKCIuY29sbGVjdGlvbi1uYW1l
IikudmFsKCkpfSxfY2xpY2tDcmVhdGU6ZnVuY3Rpb24oKXt2YXIgYT0zRHRoPQppcy5fZ2V0TmFt
ZSgpO2E/dGhpcy5ibG9ja2luZ3x8dGhpcy5jcmVhdGVMaXN0KGEpOnRoaXMuX3ZhbGlkYXRpb25X
YXJuaW5nKCI9Cm5hbWUiKX0sdGVtcGxhdGVzOnttYWluOl8udGVtcGxhdGUoWyc8ZGl2IGNsYXNz
PTNEImhlYWRlciBmbGV4LXJvdyBuby1mbGV4Ij0KPjwvZGl2PicsJzxkaXYgY2xhc3M9M0QibWlk
ZGxlIGZsZXgtcm93IGZsZXgtcm93LWNvbnRhaW5lciI+PC9kaXY+JywnPGRpdiBjPQpsYXNzPTNE
ImZvb3RlciBmbGV4LXJvdyBuby1mbGV4Ij48L2Rpdj4nXS5qb2luKCIiKSksaGVhZGVyOl8udGVt
cGxhdGUoWyc8ZGk9CnYgY2xhc3M9M0QibWFpbi1oZWxwIHdlbGwgY2xlYXIiPicsJzxhIGNsYXNz
PTNEIm1vcmUtaGVscCIgaHJlZj0zRCJqYXZhc2NyaT0KcHQ6dm9pZCgwKTsiPicsZigiTW9yZSBo
ZWxwIiksIjwvYT4iLCc8ZGl2IGNsYXNzPTNEImhlbHAtY29udGVudCI+JywnPGEgY2xhPQpzcz0z
RCJsZXNzLWhlbHAiIGhyZWY9M0QiamF2YXNjcmlwdDp2b2lkKDApOyI+JyxmKCJMZXNzIiksIjwv
YT4iLCI8L2Rpdj4iLCI9CjwvZGl2PiIsJzxkaXYgY2xhc3M9M0QiYWxlcnQgYWxlcnQtZGlzbWlz
c2FibGUiPicsJzxidXR0b24gdHlwZT0zRCJidXR0b24iID0KY2xhc3M9M0QiY2xvc2UiIGRhdGEt
ZGlzbWlzcz0zRCJhbGVydCIgJywndGl0bGU9M0QiJyxmKCJDbG9zZSBhbmQgc2hvdyBtb3JlPQog
aGVscCIpLCciIGFyaWEtaGlkZGVuPTNEInRydWUiPiZ0aW1lczs8L2J1dHRvbj4nLCc8c3BhbiBj
bGFzcz0zRCJhbGVydC1tZXM9CnNhZ2UiPjwvc3Bhbj4nLCI8L2Rpdj4iXS5qb2luKCIiKSksbWlk
ZGxlOl8udGVtcGxhdGUoWyc8ZGl2IGNsYXNzPTNEImNvbGxlYz0KdGlvbi1lbGVtZW50cy1jb250
cm9scyI+JywnPGEgY2xhc3M9M0QicmVzZXQiIGhyZWY9M0QiamF2YXNjcmlwdDp2b2lkKDApOyIg
PQonLCd0aXRsZT0zRCInLGYoIlVuZG8gYWxsIHJlb3JkZXJpbmcgYW5kIGRpc2NhcmRzIiksJyI+
JyxmKCJTdGFydCBvdmVyIiksIjw9Ci9hPiIsJzxhIGNsYXNzPTNEImNsZWFyLXNlbGVjdGVkIiBo
cmVmPTNEImphdmFzY3JpcHQ6dm9pZCgwKTsiICcsJ3RpdGxlPTNEIj0KJyxmKCJEZS1zZWxlY3Qg
YWxsIHNlbGVjdGVkIGRhdGFzZXRzIiksJyI+JyxmKCJDbGVhciBzZWxlY3RlZCIpLCI8L2E+Iiwi
PC9kPQppdj4iLCc8ZGl2IGNsYXNzPTNEImNvbGxlY3Rpb24tZWxlbWVudHMgc2Nyb2xsLWNvbnRh
aW5lciBmbGV4LXJvdyI+JywiPC9kaXY9Cj4iXS5qb2luKCIiKSksZm9vdGVyOl8udGVtcGxhdGUo
Wyc8ZGl2IGNsYXNzPTNEImF0dHJpYnV0ZXMgY2xlYXIiPicsJzxkaXYgYz0KbGFzcz0zRCJjbGVh
ciI+JywnPGlucHV0IGNsYXNzPTNEImNvbGxlY3Rpb24tbmFtZSBmb3JtLWNvbnRyb2wgcHVsbC1y
aWdodCIgPQonLCdwbGFjZWhvbGRlcj0zRCInLGYoIkVudGVyIGEgbmFtZSBmb3IgeW91ciBuZXcg
Y29sbGVjdGlvbiIpLCciIC8+JywnPGRpdiA9CmNsYXNzPTNEImNvbGxlY3Rpb24tbmFtZS1wcm9t
cHQgcHVsbC1yaWdodCI+JyxmKCJOYW1lIiksIjo8L2Rpdj4iLCI8L2Rpdj4iLD0KIjwvZGl2PiIs
JzxkaXYgY2xhc3M9M0QiYWN0aW9ucyBjbGVhciB2ZXJ0aWNhbGx5LXNwYWNlZCI+JywnPGRpdiBj
bGFzcz0zRCJvPQp0aGVyLW9wdGlvbnMgcHVsbC1sZWZ0Ij4nLCc8YnV0dG9uIGNsYXNzPTNEImNh
bmNlbC1jcmVhdGUgYnRuIiB0YWJpbmRleD0zRCI9Ci0xIj4nLGYoIkNhbmNlbCIpLCI8L2J1dHRv
bj4iLCc8ZGl2IGNsYXNzPTNEImNyZWF0ZS1vdGhlciBidG4tZ3JvdXAgZHJvcHVwIj0KPicsJzxi
dXR0b24gY2xhc3M9M0QiYnRuIGJ0bi1kZWZhdWx0IGRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dn
bGU9M0QiZHJvcGRvPQp3biI+JyxmKCJDcmVhdGUgYSBkaWZmZXJlbnQga2luZCBvZiBjb2xsZWN0
aW9uIiksJyA8c3BhbiBjbGFzcz0zRCJjYXJldCI+PC89CnNwYW4+JywiPC9idXR0b24+IiwnPHVs
IGNsYXNzPTNEImRyb3Bkb3duLW1lbnUiIHJvbGU9M0QibWVudSI+JywnPGxpPjxhIGhyZT0KZj0z
RCIjIj4nLGYoIkNyZWF0ZSBhIDxpPnNpbmdsZTwvaT4gcGFpciIpLCI8L2E+PC9saT4iLCc8bGk+
PGEgaHJlZj0zRCIjIj4nPQosZigiQ3JlYXRlIGEgbGlzdCBvZiA8aT51bnBhaXJlZDwvaT4gZGF0
YXNldHMiKSwiPC9hPjwvbGk+IiwiPC91bD4iLCI8L2Rpdj49CiIsIjwvZGl2PiIsJzxkaXYgY2xh
c3M9M0QibWFpbi1vcHRpb25zIHB1bGwtcmlnaHQiPicsJzxidXR0b24gY2xhc3M9M0QiY3JlYT0K
dGUtY29sbGVjdGlvbiBidG4gYnRuLXByaW1hcnkiPicsZigiQ3JlYXRlIGxpc3QiKSwiPC9idXR0
b24+IiwiPC9kaXY+IiwiPC9kPQppdj4iXS5qb2luKCIiKSksaGVscENvbnRlbnQ6Xy50ZW1wbGF0
ZShbIjxwPiIsZihbIkNvbGxlY3Rpb25zIG9mIGRhdGFzZXRzIGE9CnJlIHBlcm1hbmVudCwgb3Jk
ZXJlZCBsaXN0cyBvZiBkYXRhc2V0cyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gdG9vbHMgYW5kICIs
Ij0Kd29ya2Zsb3dzIGluIG9yZGVyIHRvIGhhdmUgYW5hbHlzZXMgZG9uZSBvbiBlYWNoIG1lbWJl
ciBvZiB0aGUgZW50aXJlIGdyb3VwPQouIFRoaXMgaW50ZXJmYWNlIGFsbG93cyAiLCJ5b3UgdG8g
Y3JlYXRlIGEgY29sbGVjdGlvbiBhbmQgcmUtb3JkZXIgdGhlIGZpbmE9CmwgY29sbGVjdGlvbi4i
XS5qb2luKCIiKSksIjwvcD4iLCI8dWw+IiwiPGxpPiIsZihbIlJlbmFtZSBlbGVtZW50cyBpbiB0
aGUgbD0KaXN0IGJ5IGNsaWNraW5nIG9uICIsJzxpIGRhdGEtdGFyZ2V0PTNEIi5jb2xsZWN0aW9u
LWVsZW1lbnQgLm5hbWUiPnRoZSBleGlzPQp0aW5nIG5hbWU8L2k+LiddLmpvaW4oIiIpKSwiPC9s
aT4iLCI8bGk+IixmKFsiRGlzY2FyZCBlbGVtZW50cyBmcm9tIHRoZSBmaW49CmFsIGNyZWF0ZWQg
bGlzdCBieSBjbGlja2luZyBvbiB0aGUgIiwnPGkgZGF0YS10YXJnZXQ9M0QiLmNvbGxlY3Rpb24t
ZWxlbWVudD0KIC5kaXNjYXJkIj4iRGlzY2FyZCI8L2k+IGJ1dHRvbi4nXS5qb2luKCIiKSksIjwv
bGk+IiwiPGxpPiIsZihbIlJlb3JkZXIgdGhlPQogbGlzdCBieSBjbGlja2luZyBhbmQgZHJhZ2dp
bmcgZWxlbWVudHMuIFNlbGVjdCBtdWx0aXBsZSBlbGVtZW50cyBieSBjbGlja2k9Cm5nIG9uICIs
JzxpIGRhdGEtdGFyZ2V0PTNEIi5jb2xsZWN0aW9uLWVsZW1lbnQiPnRoZW08L2k+IGFuZCB5b3Ug
Y2FuIHRoZW4gbT0Kb3ZlIHRob3NlIHNlbGVjdGVkIGJ5IGRyYWdnaW5nIHRoZSAnLCJlbnRpcmUg
Z3JvdXAuIERlc2VsZWN0IHRoZW0gYnkgY2xpY2tpPQpuZyB0aGVtIGFnYWluIG9yIGJ5IGNsaWNr
aW5nIHRoZSAiLCd0aGUgPGkgZGF0YS10YXJnZXQ9M0QiLmNsZWFyLXNlbGVjdGVkIj49CiJDbGVh
ciBzZWxlY3RlZCI8L2k+IGxpbmsuJ10uam9pbigiIikpLCI8L2xpPiIsIjxsaT4iLGYoWydDbGlj
ayB0aGUgPGkgZGF0YT0KLXRhcmdldD0zRCIucmVzZXQiPiJTdGFydCBvdmVyIjwvaT4gbGluayB0
byBiZWdpbiBhZ2FpbiBhcyBpZiB5b3UgaGFkIGp1c3QgPQpvcGVuZWQgJywidGhlIGludGVyZmFj
ZS4iXS5qb2luKCIiKSksIjwvbGk+IiwiPGxpPiIsZihbJ0NsaWNrIHRoZSA8aSBkYXRhLXQ9CmFy
Z2V0PTNEIi5jYW5jZWwtY3JlYXRlIj4iQ2FuY2VsIjwvaT4gYnV0dG9uIHRvIGV4aXQgdGhlIGlu
dGVyZmFjZS4nXS5qb2luKD0KIiIpKSwiPC9saT4iLCI8L3VsPjxiciAvPiIsIjxwPiIsZihbJ09u
Y2UgeW91ciBjb2xsZWN0aW9uIGlzIGNvbXBsZXRlLCBlbnRlPQpyIGEgPGkgZGF0YS10YXJnZXQ9
M0QiLmNvbGxlY3Rpb24tbmFtZSI+bmFtZTwvaT4gYW5kICcsJ2NsaWNrIDxpIGRhdGEtdGFyZ2U9
CnQ9M0QiLmNyZWF0ZS1jb2xsZWN0aW9uIj4iQ3JlYXRlIGxpc3QiPC9pPi4nXS5qb2luKCIiKSks
IjwvcD4iXS5qb2luKCIiKSksaT0KbnZhbGlkRWxlbWVudHM6Xy50ZW1wbGF0ZShbZigiVGhlIGZv
bGxvd2luZyBzZWxlY3Rpb25zIGNvdWxkIG5vdCBiZSBpbmNsdWRlPQpkIGR1ZSB0byBwcm9ibGVt
czoiKSwiPHVsPjwlIF8uZWFjaCggcHJvYmxlbXMsIGZ1bmN0aW9uKCBwcm9ibGVtICl7ICU+Iiwi
PGw9Cmk+PGI+PCUtIHByb2JsZW0uZWxlbWVudC5uYW1lICU+PC9iPjogPCUtIHByb2JsZW0udGV4
dCAlPjwvbGk+IiwiPCUgfSk7ICU+PD0KL3VsPiJdLmpvaW4oIiIpKSxub0VsZW1lbnRzTGVmdDpf
LnRlbXBsYXRlKFsnPGxpIGNsYXNzPTNEIm5vLWVsZW1lbnRzLWxlZnQtPQptZXNzYWdlIj4nLGYo
Ik5vIGVsZW1lbnRzIGxlZnQhICIpLGYoIldvdWxkIHlvdSBsaWtlIHRvICIpLCc8YSBjbGFzcz0z
RCJyZXM9CmV0IiBocmVmPTNEImphdmFzY3JpcHQ6dm9pZCgwKSI+JyxmKCJzdGFydCBvdmVyIiks
IjwvYT4/IiwiPC9saT4iXS5qb2luKCIiKT0KKSxpbnZhbGlkSW5pdGlhbDpfLnRlbXBsYXRlKFsn
PGRpdiBjbGFzcz0zRCJoZWFkZXIgZmxleC1yb3cgbm8tZmxleCI+JywnPGRpPQp2IGNsYXNzPTNE
ImFsZXJ0IGFsZXJ0LXdhcm5pbmciIHN0eWxlPTNEImRpc3BsYXk6IGJsb2NrIj4nLCc8c3BhbiBj
bGFzcz0zRCI9CmFsZXJ0LW1lc3NhZ2UiPicsIjwlIGlmKCBfLnNpemUoIHByb2JsZW1zICkgKXsg
JT4iLGYoIlRoZSBmb2xsb3dpbmcgc2VsZWN0aT0Kb25zIGNvdWxkIG5vdCBiZSBpbmNsdWRlZCBk
dWUgdG8gcHJvYmxlbXMiKSwiOiIsIjx1bD48JSBfLmVhY2goIHByb2JsZW1zLCBmPQp1bmN0aW9u
KCBwcm9ibGVtICl7ICU+IiwiPGxpPjxiPjwlLSBwcm9ibGVtLmVsZW1lbnQubmFtZSAlPjwvYj46
IDwlLSBwcm9ibGU9Cm0udGV4dCAlPjwvbGk+IiwiPCUgfSk7ICU+PC91bD4iLCI8JSB9IGVsc2Ug
aWYoIF8uc2l6ZSggZWxlbWVudHMgKSA8IDEgKXsgJT0KPiIsZigiTm8gZGF0YXNldHMgd2VyZSBz
ZWxlY3RlZCIpLCIuIiwiPCUgfSAlPiIsIjxiciAvPiIsZigiQXQgbGVhc3Qgb25lIGVsPQplbWVu
dCBpcyBuZWVkZWQgZm9yIHRoZSBjb2xsZWN0aW9uIiksIi4gIixmKCJZb3UgbWF5IG5lZWQgdG8g
IiksJzxhIGNsYXNzPQo9M0QiY2FuY2VsLWNyZWF0ZSIgaHJlZj0zRCJqYXZhc2NyaXB0OnZvaWQo
MCkiPicsZigiY2FuY2VsIiksIjwvYT4gIixmKCJhbmQ9CiByZXNlbGVjdCBuZXcgZWxlbWVudHMi
KSwiLiIsIjwvc3Bhbj4iLCI8L2Rpdj4iLCI8L2Rpdj4iLCc8ZGl2IGNsYXNzPTNEImZvbz0KdGVy
IGZsZXgtcm93IG5vLWZsZXgiPicsJzxkaXYgY2xhc3M9M0QiYWN0aW9ucyBjbGVhciB2ZXJ0aWNh
bGx5LXNwYWNlZCI+JywnPQo8ZGl2IGNsYXNzPTNEIm90aGVyLW9wdGlvbnMgcHVsbC1sZWZ0Ij4n
LCc8YnV0dG9uIGNsYXNzPTNEImNhbmNlbC1jcmVhdGUgYnQ9Cm4iIHRhYmluZGV4PTNEIi0xIj4n
LGYoIkNhbmNlbCIpLCI8L2J1dHRvbj4iLCI8L2Rpdj4iLCI8L2Rpdj4iLCI8L2Rpdj4iXS5qbz0K
aW4oIiIpKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4iTGlzdENvbGxlY3Rpb25DcmVhdG9y
In19KSxqPTNEZnVuY3Rpb24oPQphLGIsYyl7dmFyIGUsZz0zRGpRdWVyeS5EZWZlcnJlZCgpLGg9
M0RHYWxheHkubW9kYWx8fG5ldyBkLlZpZXc7cmV0dXJuIGI9M0Q9Cl8uZGVmYXVsdHMoYnx8e30s
e2VsZW1lbnRzOmEsb25jYW5jZWw6ZnVuY3Rpb24oKXtoLmhpZGUoKSxnLnJlamVjdCgiY2FuY2Vs
bD0KZWQiKX0sb25jcmVhdGU6ZnVuY3Rpb24oYSxiKXtoLmhpZGUoKSxnLnJlc29sdmUoYil9fSks
ZT0zRG5ldyBjKGIpLGguc2hvdyh7PQp0aXRsZTpiLnRpdGxlfHxmKCJDcmVhdGUgYSBjb2xsZWN0
aW9uIiksYm9keTplLiRlbCx3aWR0aDoiODAlIixoZWlnaHQ6Im1pbi09CmNvbnRlbnQiLGNsb3Np
bmdfZXZlbnRzOiEwfSksZS5yZW5kZXIoKSx3aW5kb3cuX2NvbGxlY3Rpb25DcmVhdG9yPTNEZSxn
fSxrPQo9M0RmdW5jdGlvbihhLGIpe3JldHVybiBiPTNEYnx8e30sYi50aXRsZT0zRGYoIkNyZWF0
ZSBhIGNvbGxlY3Rpb24gZnJvbSBhIGw9CmlzdCBvZiBkYXRhc2V0cyIpLGooYSxiLGkpfTtyZXR1
cm57RGF0YXNldENvbGxlY3Rpb25FbGVtZW50VmlldzpoLExpc3RDb2xsZT0KY3Rpb25DcmVhdG9y
OmksY29sbGVjdGlvbkNyZWF0b3JNb2RhbDpqLGxpc3RDb2xsZWN0aW9uQ3JlYXRvck1vZGFsOmss
Y3JlYXRlPQpMaXN0Q29sbGVjdGlvbjpnfX0pOworZGVmaW5lKFsibXZjL2hpc3RvcnkvaGRjYS1t
b2RlbCIsIm12Yy9kYXRhc2V0L3N0YXRlcyIsIm12Yy9iYXNlLW12YyIsIm12Yy89CnVpL3VpLW1v
ZGFsIiwidXRpbHMvbmF0dXJhbC1zb3J0IiwidXRpbHMvbG9jYWxpemF0aW9uIiwidWkvaG92ZXJo
aWdobGlnaHQiXT0KLGZ1bmN0aW9uKGEsYixjLGQsZSxmKXtmdW5jdGlvbiBnKGEpe3ZhciBiPTNE
YS50b0pTT04oKSxjPTNEayhiLHtjcmVhdGlvbkZuPQo6ZnVuY3Rpb24oYixjKXtyZXR1cm4gYj0z
RGIubWFwKGZ1bmN0aW9uKGEpe3JldHVybntpZDphLmlkLG5hbWU6YS5uYW1lLHNyYzo9CiJkYXRh
c2V0Ij0zRD0zRD0zRGEuaGlzdG9yeV9jb250ZW50X3R5cGU/ImhkYSI6ImhkY2EifX0pLGEuY3Jl
YXRlSERDQShiLCJsaT0Kc3QiLGMpfX0pO3JldHVybiBjfXZhciBoPTNEQmFja2JvbmUuVmlldy5l
eHRlbmQoYy5Mb2dnYWJsZU1peGluKS5leHRlbmQoe3RhPQpnTmFtZToibGkiLGNsYXNzTmFtZToi
Y29sbGVjdGlvbi1lbGVtZW50Iixpbml0aWFsaXplOmZ1bmN0aW9uKGEpe3RoaXMuZWxlbWU9Cm50
PTNEYS5lbGVtZW50fHx7fSx0aGlzLnNlbGVjdGVkPTNEYS5zZWxlY3RlZHx8ITF9LHJlbmRlcjpm
dW5jdGlvbigpe3JldHVybj0KIHRoaXMuJGVsLmF0dHIoImRhdGEtZWxlbWVudC1pZCIsdGhpcy5l
bGVtZW50LmlkKS5hdHRyKCJkcmFnZ2FibGUiLCEwKS5odG1sPQoodGhpcy50ZW1wbGF0ZSh7ZWxl
bWVudDp0aGlzLmVsZW1lbnR9KSksdGhpcy5zZWxlY3RlZCYmdGhpcy4kZWwuYWRkQ2xhc3MoInM9
CmVsZWN0ZWQiKSx0aGlzfSx0ZW1wbGF0ZTpfLnRlbXBsYXRlKFsnPGEgY2xhc3M9M0QibmFtZSIg
dGl0bGU9M0QiJyxmKCJDbGljaz0KIHRvIHJlbmFtZSIpLCciIGhyZWY9M0QiamF2YXNjcmlwdDp2
b2lkKDApIj4nLCI8JS0gZWxlbWVudC5uYW1lICU+IiwiPC9hPiIsPQonPGJ1dHRvbiBjbGFzcz0z
RCJkaXNjYXJkIGJ0biBidG4tc20iIHRpdGxlPTNEIicsZigiUmVtb3ZlIHRoaXMgZGF0YXNldCBm
cm89Cm0gdGhlIGxpc3QiKSwnIj4nLGYoIkRpc2NhcmQiKSwiPC9idXR0b24+Il0uam9pbigiIikp
LHNlbGVjdDpmdW5jdGlvbihhKXt0aD0KaXMuJGVsLnRvZ2dsZUNsYXNzKCJzZWxlY3RlZCIsYSks
dGhpcy50cmlnZ2VyKCJzZWxlY3QiLHtzb3VyY2U6dGhpcyxzZWxlY3RlPQpkOnRoaXMuJGVsLmhh
c0NsYXNzKCJzZWxlY3RlZCIpfSl9LGRpc2NhcmQ6ZnVuY3Rpb24oKXt2YXIgYT0zRHRoaXMsYj0z
RHRoaXM9Ci4kZWwucGFyZW50KCkud2lkdGgoKTt0aGlzLiRlbC5hbmltYXRlKHsibWFyZ2luLXJp
Z2h0IjpifSwiZmFzdCIsZnVuY3Rpb24oKT0Ke2EudHJpZ2dlcigiZGlzY2FyZCIse3NvdXJjZTph
fSksYS5kZXN0cm95KCl9KX0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMub2ZmPQooKSx0aGlzLiRl
bC5yZW1vdmUoKX0sZXZlbnRzOntjbGljazoiX2NsaWNrIiwiY2xpY2sgLm5hbWUiOiJfY2xpY2tO
YW1lIiwiY2w9CmljayAuZGlzY2FyZCI6Il9jbGlja0Rpc2NhcmQiLGRyYWdzdGFydDoiX2RyYWdz
dGFydCIsZHJhZ2VuZDoiX2RyYWdlbmQiLGRyYT0KZ292ZXI6Il9zZW5kVG9QYXJlbnQiLGRyb3A6
Il9zZW5kVG9QYXJlbnQifSxfY2xpY2s6ZnVuY3Rpb24oYSl7YS5zdG9wUHJvcGFnPQphdGlvbigp
LHRoaXMuc2VsZWN0KGEpfSxfY2xpY2tOYW1lOmZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9u
KCksYS5wcmV2ZW49CnREZWZhdWx0KCk7dmFyIGI9M0QoW2YoIkVudGVyIGEgbmV3IG5hbWUgZm9y
IHRoZSBlbGVtZW50IiksIjpcbigiLGYoIk5vdGUgdD0KaGF0IGNoYW5naW5nIHRoZSBuYW1lIGhl
cmUgd2lsbCBub3QgcmVuYW1lIHRoZSBkYXRhc2V0IiksIikiXS5qb2luKCIiKSxwcm9tPQpwdChm
KCJFbnRlciBhIG5ldyBuYW1lIGZvciB0aGUgZWxlbWVudCIpKyI6Iix0aGlzLmVsZW1lbnQubmFt
ZSkpO2ImJih0aGlzLmU9CmxlbWVudC5uYW1lPTNEYix0aGlzLnJlbmRlcigpKX0sX2NsaWNrRGlz
Y2FyZDpmdW5jdGlvbihhKXthLnN0b3BQcm9wYWdhdGlvbj0KKCksdGhpcy5kaXNjYXJkKCl9LF9k
cmFnc3RhcnQ6ZnVuY3Rpb24oYSl7YS5vcmlnaW5hbEV2ZW50JiYoYT0zRGEub3JpZ2luYWxFPQp2
ZW50KSxhLmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkPTNEIm1vdmUiLGEuZGF0YVRyYW5zZmVy
LnNldERhdGEoInRleHQvcGw9CmFpbiIsSlNPTi5zdHJpbmdpZnkodGhpcy5lbGVtZW50KSksdGhp
cy4kZWwuYWRkQ2xhc3MoImRyYWdnaW5nIiksdGhpcy4kZWwucD0KYXJlbnQoKS50cmlnZ2VyKCJj
b2xsZWN0aW9uLWVsZW1lbnQuZHJhZ3N0YXJ0IixbdGhpc10pfSxfZHJhZ2VuZDpmdW5jdGlvbigp
PQp7dGhpcy4kZWwucmVtb3ZlQ2xhc3MoImRyYWdnaW5nIiksdGhpcy4kZWwucGFyZW50KCkudHJp
Z2dlcigiY29sbGVjdGlvbi1lbGU9Cm1lbnQuZHJhZ2VuZCIsW3RoaXNdKX0sX3NlbmRUb1BhcmVu
dDpmdW5jdGlvbihhKXt0aGlzLiRlbC5wYXJlbnQoKS50cmlnZ2VyKD0KYSl9LHRvU3RyaW5nOmZ1
bmN0aW9uKCl7cmV0dXJuIkRhdGFzZXRDb2xsZWN0aW9uRWxlbWVudFZpZXcoKSJ9fSksaT0zREJh
Y2tiPQpvbmUuVmlldy5leHRlbmQoYy5Mb2dnYWJsZU1peGluKS5leHRlbmQoe2VsZW1lbnRWaWV3
Q2xhc3M6aCxjb2xsZWN0aW9uQ2xhc3M9CjphLkhpc3RvcnlMaXN0RGF0YXNldENvbGxlY3Rpb24s
Y2xhc3NOYW1lOiJsaXN0LWNvbGxlY3Rpb24tY3JlYXRvciBjb2xsZWN0aT0Kb24tY3JlYXRvciBm
bGV4LXJvdy1jb250YWluZXIiLG1pbkVsZW1lbnRzOjEsZGVmYXVsdEF0dHJpYnV0ZXM6e2NyZWF0
aW9uRm46PQpmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIm5vIGNyZWF0aW9uIGZuIGZv
ciBjcmVhdG9yIil9LG9uY3JlYXRlOmZ1bmM9CnRpb24oKXt9LG9uY2FuY2VsOmZ1bmN0aW9uKCl7
fSxhdXRvc2Nyb2xsRGlzdDoyNCxoaWdobGlnaHRDbHI6InJnYmEoIDY0LCAyNT0KNSwgMjU1LCAx
LjAgKSJ9LGluaXRpYWxpemU6ZnVuY3Rpb24oYSl7dGhpcy5tZXRyaWMoIkxpc3RDb2xsZWN0aW9u
Q3JlYXRvci5pPQpuaXRpYWxpemUiLGEpO3ZhciBiPTNEdGhpcztfLmVhY2godGhpcy5kZWZhdWx0
QXR0cmlidXRlcyxmdW5jdGlvbihjLGQpe2M9M0Q9CmFbZF18fGMsYltkXT0zRGN9KSxiLmluaXRp
YWxFbGVtZW50cz0zRGEuZWxlbWVudHN8fFtdLHRoaXMuX2luc3RhbmNlU2V0VXAoKT0KLHRoaXMu
X2VsZW1lbnRzU2V0VXAoKSx0aGlzLl9zZXRVcEJlaGF2aW9ycygpfSxfaW5zdGFuY2VTZXRVcDpm
dW5jdGlvbigpe3RoPQppcy5zZWxlY3RlZElkcz0zRHt9LHRoaXMuJGRyYWdnaW5nPTNEbnVsbCx0
aGlzLmJsb2NraW5nPTNEITF9LF9lbGVtZW50c1NldFU9CnA6ZnVuY3Rpb24oKXt0aGlzLmludmFs
aWRFbGVtZW50cz0zRFtdLHRoaXMud29ya2luZ0VsZW1lbnRzPTNEW10sdGhpcy5lbGVtZT0KbnRW
aWV3cz0zRFtdLHRoaXMud29ya2luZ0VsZW1lbnRzPTNEdGhpcy5pbml0aWFsRWxlbWVudHMuc2xp
Y2UoMCksdGhpcy5fZW5zPQp1cmVFbGVtZW50SWRzKCksdGhpcy5fdmFsaWRhdGVFbGVtZW50cygp
LHRoaXMuX21hbmdsZUR1cGxpY2F0ZU5hbWVzKCksdGhpcy49Cl9zb3J0RWxlbWVudHMoKX0sX2Vu
c3VyZUVsZW1lbnRJZHM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy53b3JraW5nRWxlbWVudHMuZj0K
b3JFYWNoKGZ1bmN0aW9uKGEpe2EuaGFzT3duUHJvcGVydHkoImlkIil8fChhLmlkPTNEXy51bmlx
dWVJZCgpKX0pLHRoaXMud29yPQpraW5nRWxlbWVudHN9LF92YWxpZGF0ZUVsZW1lbnRzOmZ1bmN0
aW9uKCl7dmFyIGE9M0R0aGlzO3JldHVybiBhLmludmFsaWRFbGU9Cm1lbnRzPTNEW10sdGhpcy53
b3JraW5nRWxlbWVudHM9M0R0aGlzLndvcmtpbmdFbGVtZW50cy5maWx0ZXIoZnVuY3Rpb24oYil7
dj0KYXIgYz0zRGEuX2lzRWxlbWVudEludmFsaWQoYik7cmV0dXJuIGMmJmEuaW52YWxpZEVsZW1l
bnRzLnB1c2goe2VsZW1lbnQ6Yix0PQpleHQ6Y30pLCFjfSksdGhpcy53b3JraW5nRWxlbWVudHN9
LF9pc0VsZW1lbnRJbnZhbGlkOmZ1bmN0aW9uKGEpe3JldHVybiJkYXQ9CmFzZXQiIT0zRD0zRGEu
aGlzdG9yeV9jb250ZW50X3R5cGU/ZigiaXMgbm90IGEgZGF0YXNldCIpOmEuc3RhdGUhPTNEPTNE
Yi5PSz0KP2YoXy5jb250YWlucyhiLk5PVF9SRUFEWV9TVEFURVMsYS5zdGF0ZSk/Imhhc24ndCBm
aW5pc2hlZCBydW5uaW5nIHlldCI6ImhhPQpzIGVycm9yZWQsIGlzIHBhdXNlZCwgb3IgaXMgbm90
IGFjY2Vzc2libGUiKTphLmRlbGV0ZWR8fGEucHVyZ2VkP2YoImhhcyBiZWU9Cm4gZGVsZXRlZCBv
ciBwdXJnZWQiKTpudWxsfSxfbWFuZ2xlRHVwbGljYXRlTmFtZXM6ZnVuY3Rpb24oKXt2YXIgYT0z
RDkwMCxiPQo9M0QxLGM9M0R7fTt0aGlzLndvcmtpbmdFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9u
KGQpe2Zvcih2YXIgZT0zRGQubmFtZTtjLmg9CmFzT3duUHJvcGVydHkoZSk7KWlmKGU9M0RkLm5h
bWUrIiAoIitiKyIpIixiKz0zRDEsYj49M0RhKXRocm93IG5ldyBFcnJvcigiUz0KYWZldHkgaGl0
IGluIHdoaWxlIGxvb3AgLSB0aGF0cyBpbXByZXNzaXZlIik7ZC5uYW1lPTNEZSxjW2QubmFtZV09
M0QhMH0pfSxfPQpzb3J0RWxlbWVudHM6ZnVuY3Rpb24oKXt9LHJlbmRlcjpmdW5jdGlvbihhLGIp
e3JldHVybiB0aGlzLndvcmtpbmdFbGVtZW50cy49Cmxlbmd0aDx0aGlzLm1pbkVsZW1lbnRzP3Ro
aXMuX3JlbmRlckludmFsaWQoYSxiKToodGhpcy4kZWwuZW1wdHkoKS5odG1sKHRoaT0Kcy50ZW1w
bGF0ZXMubWFpbigpKSx0aGlzLl9yZW5kZXJIZWFkZXIoYSksdGhpcy5fcmVuZGVyTWlkZGxlKGEp
LHRoaXMuX3JlbmRlPQpyRm9vdGVyKGEpLHRoaXMuX2FkZFBsdWdpbkNvbXBvbmVudHMoKSx0aGlz
LiQoIi5jb2xsZWN0aW9uLW5hbWUiKS5mb2N1cygpLHQ9Cmhpcy50cmlnZ2VyKCJyZW5kZXJlZCIs
dGhpcyksdGhpcyl9LF9yZW5kZXJJbnZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJD0KZWwu
ZW1wdHkoKS5odG1sKHRoaXMudGVtcGxhdGVzLmludmFsaWRJbml0aWFsKHtwcm9ibGVtczp0aGlz
LmludmFsaWRFbGVtZW50PQpzLGVsZW1lbnRzOnRoaXMud29ya2luZ0VsZW1lbnRzfSkpLCJmdW5j
dGlvbiI9M0Q9M0R0eXBlb2YgdGhpcy5vbmNhbmNlbCYmdGg9CmlzLiQoIi5jYW5jZWwtY3JlYXRl
LmJ0biIpLnNob3coKSx0aGlzLnRyaWdnZXIoInJlbmRlcmVkIix0aGlzKSx0aGlzfSxfcmVuZD0K
ZXJIZWFkZXI6ZnVuY3Rpb24oKXt2YXIgYT0zRHRoaXMuJCgiLmhlYWRlciIpLmVtcHR5KCkuaHRt
bCh0aGlzLnRlbXBsYXRlcy5oPQplYWRlcigpKS5maW5kKCIuaGVscC1jb250ZW50IikucHJlcGVu
ZCgkKHRoaXMudGVtcGxhdGVzLmhlbHBDb250ZW50KCkpKTtyZXQ9CnVybiB0aGlzLmludmFsaWRF
bGVtZW50cy5sZW5ndGgmJnRoaXMuX2ludmFsaWRFbGVtZW50c0FsZXJ0KCksYX0sX3JlbmRlck1p
ZD0KZGxlOmZ1bmN0aW9uKGEpe3ZhciBiPTNEdGhpcy4kKCIubWlkZGxlIikuZW1wdHkoKS5odG1s
KHRoaXMudGVtcGxhdGVzLm1pZGRsPQplKCkpO3JldHVybiB0aGlzLl9yZW5kZXJMaXN0KGEpLGJ9
LF9yZW5kZXJGb290ZXI6ZnVuY3Rpb24oKXt2YXIgYT0zRHRoaXMuJCg9CiIuZm9vdGVyIikuZW1w
dHkoKS5odG1sKHRoaXMudGVtcGxhdGVzLmZvb3RlcigpKTtyZXR1cm4iZnVuY3Rpb24iPTNEPTNE
dHlwZT0Kb2YgdGhpcy5vbmNhbmNlbCYmdGhpcy4kKCIuY2FuY2VsLWNyZWF0ZS5idG4iKS5zaG93
KCksYX0sX2FkZFBsdWdpbkNvbXBvbmVuPQp0czpmdW5jdGlvbigpe3RoaXMuJCgiLmhlbHAtY29u
dGVudCBpIikuaG92ZXJoaWdobGlnaHQoIi5jb2xsZWN0aW9uLWNyZWF0b3I9CiIsdGhpcy5oaWdo
bGlnaHRDbHIpfSxfaW52YWxpZEVsZW1lbnRzQWxlcnQ6ZnVuY3Rpb24oKXt0aGlzLl9zaG93QWxl
cnQodGhpcz0KLnRlbXBsYXRlcy5pbnZhbGlkRWxlbWVudHMoe3Byb2JsZW1zOnRoaXMuaW52YWxp
ZEVsZW1lbnRzfSksImFsZXJ0LXdhcm5pbmciPQopfSxfdmFsaWRhdGlvbldhcm5pbmc6ZnVuY3Rp
b24oYSxiKXt2YXIgYz0zRCJ2YWxpZGF0aW9uLXdhcm5pbmciOyJuYW1lIj0zRD0KPTNEPTNEYSYm
KGE9M0R0aGlzLiQoIi5jb2xsZWN0aW9uLW5hbWUiKS5hZGQodGhpcy4kKCIuY29sbGVjdGlvbi1u
YW1lLXByb21wPQp0IikpLHRoaXMuJCgiLmNvbGxlY3Rpb24tbmFtZSIpLmZvY3VzKCkuc2VsZWN0
KCkpLGI/KGE9M0RhfHx0aGlzLiQoIi4iK2MpLGE9Ci5yZW1vdmVDbGFzcyhjKSk6YS5hZGRDbGFz
cyhjKX0sX2Rpc2FibGVOYW1lQW5kQ3JlYXRlOmZ1bmN0aW9uKGEpe2E9M0RfLmlzVT0KbmRlZmlu
ZWQoYSk/ITA6YSxhJiYodGhpcy4kKCIuY29sbGVjdGlvbi1uYW1lIikucHJvcCgiZGlzYWJsZWQi
LCEwKSx0aGlzLiQoPQoiLmNyZWF0ZS1jb2xsZWN0aW9uIikudG9nZ2xlQ2xhc3MoImRpc2FibGVk
IiwhMCkpfSwkbGlzdDpmdW5jdGlvbigpe3JldHVybiA9CnRoaXMuJCgiLmNvbGxlY3Rpb24tZWxl
bWVudHMiKX0sX3JlbmRlckNsZWFyU2VsZWN0ZWQ6ZnVuY3Rpb24oKXtfLnNpemUodGhpcz0KLnNl
bGVjdGVkSWRzKT90aGlzLiQoIi5jb2xsZWN0aW9uLWVsZW1lbnRzLWNvbnRyb2xzID4gLmNsZWFy
LXNlbGVjdGVkIikuc2hvPQp3KCk6dGhpcy4kKCIuY29sbGVjdGlvbi1lbGVtZW50cy1jb250cm9s
cyA+IC5jbGVhci1zZWxlY3RlZCIpLmhpZGUoKX0sX3JlbmQ9CmVyTGlzdDpmdW5jdGlvbigpe3Zh
ciBhPTNEdGhpcyxiPTNEalF1ZXJ5KCI8ZGl2Lz4iKSxjPTNEYS4kbGlzdCgpO18uZWFjaCh0aD0K
aXMuZWxlbWVudFZpZXdzLGZ1bmN0aW9uKGIpe2IuZGVzdHJveSgpLGEucmVtb3ZlRWxlbWVudFZp
ZXcoYil9KSxhLndvcmtpbmdFPQpsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24oYyl7dmFyIGQ9M0Rh
Ll9jcmVhdGVFbGVtZW50VmlldyhjKTtiLmFwcGVuZChkLiRlbCk9Cn0pLGEuX3JlbmRlckNsZWFy
U2VsZWN0ZWQoKSxjLmVtcHR5KCkuYXBwZW5kKGIuY2hpbGRyZW4oKSksXy5pbnZva2UoYS5lbGVt
ZT0KbnRWaWV3cywicmVuZGVyIiksYy5oZWlnaHQoKT5jLmNzcygibWF4LWhlaWdodCIpP2MuY3Nz
KCJib3JkZXItd2lkdGgiLCIxcHggPQowcHggMXB4IDBweCIpOmMuY3NzKCJib3JkZXItd2lkdGgi
LCIwcHgiKX0sX2NyZWF0ZUVsZW1lbnRWaWV3OmZ1bmN0aW9uKGEpe3Y9CmFyIGI9M0RuZXcgdGhp
cy5lbGVtZW50Vmlld0NsYXNzKHtlbGVtZW50OmEsc2VsZWN0ZWQ6Xy5oYXModGhpcy5zZWxlY3Rl
ZElkcz0KLGEuaWQpfSk7cmV0dXJuIHRoaXMuZWxlbWVudFZpZXdzLnB1c2goYiksdGhpcy5fbGlz
dGVuVG9FbGVtZW50VmlldyhiKSxifSxfPQpsaXN0ZW5Ub0VsZW1lbnRWaWV3OmZ1bmN0aW9uKGEp
e3ZhciBiPTNEdGhpcztiLmxpc3RlblRvKGEse3NlbGVjdDpmdW5jdGlvbig9CmEpe3ZhciBjPTNE
YS5zb3VyY2UuZWxlbWVudDthLnNlbGVjdGVkP2Iuc2VsZWN0ZWRJZHNbYy5pZF09M0QhMDpkZWxl
dGUgYi5zZT0KbGVjdGVkSWRzW2MuaWRdLGIudHJpZ2dlcigiZWxlbWVudHM6c2VsZWN0IixhKX0s
ZGlzY2FyZDpmdW5jdGlvbihhKXtiLnRyaWdnPQplcigiZWxlbWVudHM6ZGlzY2FyZCIsYSl9fSl9
LGFkZEVsZW1lbnRWaWV3OmZ1bmN0aW9uKCl7fSxyZW1vdmVFbGVtZW50Vmlldzo9CmZ1bmN0aW9u
KGEpe2RlbGV0ZSB0aGlzLnNlbGVjdGVkSWRzW2EuZWxlbWVudC5pZF0sdGhpcy5fcmVuZGVyQ2xl
YXJTZWxlY3RlZD0KKCksdGhpcy5lbGVtZW50Vmlld3M9M0RfLndpdGhvdXQodGhpcy5lbGVtZW50
Vmlld3MsYSksdGhpcy5zdG9wTGlzdGVuaW5nKGEpPQp9LF9yZW5kZXJOb0VsZW1lbnRzTGVmdDpm
dW5jdGlvbigpe3RoaXMuX2Rpc2FibGVOYW1lQW5kQ3JlYXRlKCEwKSx0aGlzLiQoIi49CmNvbGxl
Y3Rpb24tZWxlbWVudHMiKS5hcHBlbmQodGhpcy50ZW1wbGF0ZXMubm9FbGVtZW50c0xlZnQoKSl9
LF9lbGVtZW50VG9KUz0KT046ZnVuY3Rpb24oYSl7cmV0dXJuIGF9LGNyZWF0ZUxpc3Q6ZnVuY3Rp
b24oYSl7aWYoIXRoaXMud29ya2luZ0VsZW1lbnRzLmxlPQpuZ3RoKXt2YXIgYj0zRGYoIk5vIHZh
bGlkIGVsZW1lbnRzIGZvciBmaW5hbCBsaXN0IikrIi4gIjtyZXR1cm4gYis9M0QnPGEgY2w9CmFz
cz0zRCJjYW5jZWwtY3JlYXRlIiBocmVmPTNEImphdmFzY3JpcHQ6dm9pZCgwKTsiPicrZigiQ2Fu
Y2VsIikrIjwvYT4gIixiKz0KPTNEZigib3IiKSxiKz0zRCcgPGEgY2xhc3M9M0QicmVzZXQiIGhy
ZWY9M0QiamF2YXNjcmlwdDp2b2lkKDApOyI+JytmKCJzdGFyPQp0IG92ZXIiKSsiPC9hPi4iLHZv
aWQgdGhpcy5fc2hvd0FsZXJ0KGIpfXZhciBjPTNEdGhpcyxkPTNEdGhpcy53b3JraW5nRWxlbWU9
Cm50cy5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGMuX2VsZW1lbnRUb0pTT04oYSl9KTtyZXR1cm4g
Yy5ibG9ja2luZz0zRCEwLGMuYz0KcmVhdGlvbkZuKGQsYSkuYWx3YXlzKGZ1bmN0aW9uKCl7Yy5i
bG9ja2luZz0zRCExfSkuZmFpbChmdW5jdGlvbihhLGIpe2MudHJpPQpnZ2VyKCJlcnJvciIse3ho
cjphLHN0YXR1czpiLG1lc3NhZ2U6ZigiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgY3JlYXRpbmcg
dGg9CmlzIGNvbGxlY3Rpb24iKX0pfSkuZG9uZShmdW5jdGlvbihhLGIsZCl7Yy50cmlnZ2VyKCJj
b2xsZWN0aW9uOmNyZWF0ZWQiLGEsYj0KLGQpLGMubWV0cmljKCJjb2xsZWN0aW9uOmNyZWF0ZWQi
LGEpLCJmdW5jdGlvbiI9M0Q9M0R0eXBlb2YgYy5vbmNyZWF0ZSYmYy5vPQpuY3JlYXRlLmNhbGwo
dGhpcyxhLGIsZCl9KX0sX3NldFVwQmVoYXZpb3JzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub24o
ImVycm89CnIiLHRoaXMuX2Vycm9ySGFuZGxlciksdGhpcy5vbmNlKCJyZW5kZXJlZCIsZnVuY3Rp
b24oKXt0aGlzLnRyaWdnZXIoInJlbmRlcj0KZWQ6aW5pdGlhbCIsdGhpcyl9KSx0aGlzLm9uKCJl
bGVtZW50czpzZWxlY3QiLGZ1bmN0aW9uKCl7dGhpcy5fcmVuZGVyQ2xlYXJTPQplbGVjdGVkKCl9
KSx0aGlzLm9uKCJlbGVtZW50czpkaXNjYXJkIixmdW5jdGlvbihhKXt2YXIgYj0zRGEuc291cmNl
LmVsZW1lbnQ9Cjt0aGlzLnJlbW92ZUVsZW1lbnRWaWV3KGEuc291cmNlKSx0aGlzLndvcmtpbmdF
bGVtZW50cz0zRF8ud2l0aG91dCh0aGlzLndvcj0Ka2luZ0VsZW1lbnRzLGIpLHRoaXMud29ya2lu
Z0VsZW1lbnRzLmxlbmd0aHx8dGhpcy5fcmVuZGVyTm9FbGVtZW50c0xlZnQoKX0pPQosdGhpc30s
X2Vycm9ySGFuZGxlcjpmdW5jdGlvbihhKXt0aGlzLmVycm9yKGEpO3ZhciBiPTNEdGhpcztpZihj
b250ZW50PTNEYS49Cm1lc3NhZ2V8fGYoIkFuIGVycm9yIG9jY3VycmVkIiksYS54aHIpe3ZhciBj
PTNEYS54aHIsZD0zRGEubWVzc2FnZTtjb250ZW50Kz0KPTNEMD0zRD0zRD0zRGMucmVhZHlTdGF0
ZSYmMD0zRD0zRD0zRGMuc3RhdHVzPyI6ICIrZigiR2FsYXh5IGNvdWxkIG5vdCBiZSByPQplYWNo
ZWQgYW5kIG1heSBiZSB1cGRhdGluZy4iKStmKCIgVHJ5IGFnYWluIGluIGEgZmV3IG1pbnV0ZXMu
Iik6Yy5yZXNwb25zZUo9ClNPTj8iOjxiciAvPjxwcmU+IitKU09OLnN0cmluZ2lmeShjLnJlc3Bv
bnNlSlNPTikrIjwvcHJlPiI6IjogIitkfWIuX3Nob3dBbD0KZXJ0KGNvbnRlbnQsImFsZXJ0LWRh
bmdlciIpfSxldmVudHM6eyJjbGljayAubW9yZS1oZWxwIjoiX2NsaWNrTW9yZUhlbHAiLCJjPQps
aWNrIC5sZXNzLWhlbHAiOiJfY2xpY2tMZXNzSGVscCIsImNsaWNrIC5tYWluLWhlbHAiOiJfdG9n
Z2xlSGVscCIsImNsaWNrIC49CmhlYWRlciAuYWxlcnQgYnV0dG9uIjoiX2hpZGVBbGVydCIsImNs
aWNrIC5yZXNldCI6InJlc2V0IiwiY2xpY2sgLmNsZWFyLXNlbD0KZWN0ZWQiOiJjbGVhclNlbGVj
dGVkRWxlbWVudHMiLCJjbGljayAuY29sbGVjdGlvbi1lbGVtZW50cyI6ImNsZWFyU2VsZWN0ZWRF
PQpsZW1lbnRzIiwiZHJhZ292ZXIgLmNvbGxlY3Rpb24tZWxlbWVudHMiOiJfZHJhZ292ZXJFbGVt
ZW50cyIsImRyb3AgLmNvbGxlY3Q9Cmlvbi1lbGVtZW50cyI6Il9kcm9wRWxlbWVudHMiLCJjb2xs
ZWN0aW9uLWVsZW1lbnQuZHJhZ3N0YXJ0IC5jb2xsZWN0aW9uLWVsZT0KbWVudHMiOiJfZWxlbWVu
dERyYWdzdGFydCIsImNvbGxlY3Rpb24tZWxlbWVudC5kcmFnZW5kICAgLmNvbGxlY3Rpb24tZWxl
bWVuPQp0cyI6Il9lbGVtZW50RHJhZ2VuZCIsImNoYW5nZSAuY29sbGVjdGlvbi1uYW1lIjoiX2No
YW5nZU5hbWUiLCJrZXlkb3duIC5jb2w9CmxlY3Rpb24tbmFtZSI6Il9uYW1lQ2hlY2tGb3JFbnRl
ciIsImNsaWNrIC5jYW5jZWwtY3JlYXRlIjpmdW5jdGlvbigpeyJmdW5jdD0KaW9uIj0zRD0zRHR5
cGVvZiB0aGlzLm9uY2FuY2VsJiZ0aGlzLm9uY2FuY2VsLmNhbGwodGhpcyl9LCJjbGljayAuY3Jl
YXRlLWNvPQpsbGVjdGlvbiI6Il9jbGlja0NyZWF0ZSJ9LF9jbGlja01vcmVIZWxwOmZ1bmN0aW9u
KGEpe2Euc3RvcFByb3BhZ2F0aW9uKCksdGg9CmlzLiQoIi5tYWluLWhlbHAiKS5hZGRDbGFzcygi
ZXhwYW5kZWQiKSx0aGlzLiQoIi5tb3JlLWhlbHAiKS5oaWRlKCl9LF9jbGljaz0KTGVzc0hlbHA6
ZnVuY3Rpb24oYSl7YS5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLiQoIi5tYWluLWhlbHAiKS5yZW1v
dmVDbGFzcygiPQpleHBhbmRlZCIpLHRoaXMuJCgiLm1vcmUtaGVscCIpLnNob3coKX0sX3RvZ2ds
ZUhlbHA6ZnVuY3Rpb24oYSl7YS5zdG9wUHJvcGE9CmdhdGlvbigpLHRoaXMuJCgiLm1haW4taGVs
cCIpLnRvZ2dsZUNsYXNzKCJleHBhbmRlZCIpLHRoaXMuJCgiLm1vcmUtaGVscCIpLj0KdG9nZ2xl
KCl9LF9zaG93QWxlcnQ6ZnVuY3Rpb24oYSxiKXtiPTNEYnx8ImFsZXJ0LWRhbmdlciIsdGhpcy4k
KCIubWFpbi1oZWxwPQoiKS5oaWRlKCksdGhpcy4kKCIuaGVhZGVyIC5hbGVydCIpLmF0dHIoImNs
YXNzIiwiYWxlcnQgYWxlcnQtZGlzbWlzc2FibGUiKS49CmFkZENsYXNzKGIpLnNob3coKS5maW5k
KCIuYWxlcnQtbWVzc2FnZSIpLmh0bWwoYSl9LF9oaWRlQWxlcnQ6ZnVuY3Rpb24oKXt0aD0KaXMu
JCgiLm1haW4taGVscCIpLnNob3coKSx0aGlzLiQoIi5oZWFkZXIgLmFsZXJ0IikuaGlkZSgpfSxy
ZXNldDpmdW5jdGlvbigpPQp7dGhpcy5faW5zdGFuY2VTZXRVcCgpLHRoaXMuX2VsZW1lbnRzU2V0
VXAoKSx0aGlzLnJlbmRlcigpfSxjbGVhclNlbGVjdGVkRWw9CmVtZW50czpmdW5jdGlvbigpe3Ro
aXMuJCgiLmNvbGxlY3Rpb24tZWxlbWVudHMgLmNvbGxlY3Rpb24tZWxlbWVudCIpLnJlbW92ZT0K
Q2xhc3MoInNlbGVjdGVkIiksdGhpcy4kKCIuY29sbGVjdGlvbi1lbGVtZW50cy1jb250cm9scyA+
IC5jbGVhci1zZWxlY3RlZCIpPQouaGlkZSgpfSxfZHJhZ292ZXJFbGVtZW50czpmdW5jdGlvbihh
KXthLnByZXZlbnREZWZhdWx0KCk7dmFyIGI9M0R0aGlzLiRsaXM9CnQoKTt0aGlzLl9jaGVja0Zv
ckF1dG9zY3JvbGwoYixhLm9yaWdpbmFsRXZlbnQuY2xpZW50WSk7dmFyIGM9M0R0aGlzLl9nZXRO
ZT0KYXJlc3RFbGVtZW50KGEub3JpZ2luYWxFdmVudC5jbGllbnRZKTt0aGlzLiQoIi5lbGVtZW50
LWRyb3AtcGxhY2Vob2xkZXIiKS5yPQplbW92ZSgpO3ZhciBkPTNEJCgnPGRpdiBjbGFzcz0zRCJl
bGVtZW50LWRyb3AtcGxhY2Vob2xkZXIiPjwvZGl2PicpO2Muc2l6ZSg9Cik/Yy5iZWZvcmUoZCk6
Yi5hcHBlbmQoZCl9LF9jaGVja0ZvckF1dG9zY3JvbGw6ZnVuY3Rpb24oYSxiKXt2YXIgYz0zRDIs
ZD0zRD0KYS5vZmZzZXQoKSxlPTNEYS5zY3JvbGxUb3AoKSxmPTNEYi1kLnRvcCxnPTNEZC50b3Ar
YS5vdXRlckhlaWdodCgpLWI7Zj49M0QwPQomJmY8dGhpcy5hdXRvc2Nyb2xsRGlzdD9hLnNjcm9s
bFRvcChlLWMpOmc+PTNEMCYmZzx0aGlzLmF1dG9zY3JvbGxEaXN0JiZhLnM9CmNyb2xsVG9wKGUr
Yyl9LF9nZXROZWFyZXN0RWxlbWVudDpmdW5jdGlvbihhKXtmb3IodmFyIGI9M0Q0LGM9M0R0aGlz
LiQoIi5jbz0KbGxlY3Rpb24tZWxlbWVudHMgbGkuY29sbGVjdGlvbi1lbGVtZW50IikudG9BcnJh
eSgpLGQ9M0QwO2Q8Yy5sZW5ndGg7ZCsrKXt2PQphciBlPTNEJChjW2RdKSxmPTNEZS5vZmZzZXQo
KS50b3AsZz0zRE1hdGguZmxvb3IoZS5vdXRlckhlaWdodCgpLzIpK2I7aWYoZis9Cmc+YSYmYT5m
LWcpcmV0dXJuIGV9cmV0dXJuICQoKX0sX2Ryb3BFbGVtZW50czpmdW5jdGlvbihhKXthLm9yaWdp
bmFsRXZlbnQmJj0KKGE9M0RhLm9yaWdpbmFsRXZlbnQpLGEucHJldmVudERlZmF1bHQoKSxhLmRh
dGFUcmFuc2Zlci5kcm9wRWZmZWN0PTNEIm1vdmUiPQo7dmFyIGI9M0R0aGlzLl9nZXROZWFyZXN0
RWxlbWVudChhLmNsaWVudFkpO3JldHVybiBiLnNpemUoKT90aGlzLiRkcmFnZ2luZy49Cmluc2Vy
dEJlZm9yZShiKTp0aGlzLiRkcmFnZ2luZy5pbnNlcnRBZnRlcih0aGlzLiQoIi5jb2xsZWN0aW9u
LWVsZW1lbnRzIC5jbz0KbGxlY3Rpb24tZWxlbWVudCIpLmxhc3QoKSksdGhpcy5fc3luY09yZGVy
VG9Eb20oKSwhMX0sX3N5bmNPcmRlclRvRG9tOmZ1bmN0PQppb24oKXt2YXIgYT0zRHRoaXMsYj0z
RFtdO3RoaXMuJCgiLmNvbGxlY3Rpb24tZWxlbWVudHMgLmNvbGxlY3Rpb24tZWxlbWVudCI9Ciku
ZWFjaChmdW5jdGlvbigpe3ZhciBjPTNEJCh0aGlzKS5hdHRyKCJkYXRhLWVsZW1lbnQtaWQiKSxk
PTNEXy5maW5kV2hlcmUoYT0KLndvcmtpbmdFbGVtZW50cyx7aWQ6Y30pO2Q/Yi5wdXNoKGQpOmNv
bnNvbGUuZXJyb3IoIm1pc3NpbmcgZWxlbWVudDogIixjKX0pPQosdGhpcy53b3JraW5nRWxlbWVu
dHM9M0RiLHRoaXMuX3JlbmRlckxpc3QoKX0sX2VsZW1lbnREcmFnc3RhcnQ6ZnVuY3Rpb24oYSw9
CmIpe2Iuc2VsZWN0KCEwKSx0aGlzLiRkcmFnZ2luZz0zRHRoaXMuJCgiLmNvbGxlY3Rpb24tZWxl
bWVudHMgLmNvbGxlY3Rpb24tZT0KbGVtZW50LnNlbGVjdGVkIil9LF9lbGVtZW50RHJhZ2VuZDpm
dW5jdGlvbigpeyQoIi5lbGVtZW50LWRyb3AtcGxhY2Vob2xkZXIiPQopLnJlbW92ZSgpLHRoaXMu
JGRyYWdnaW5nPTNEbnVsbH0sX2NoYW5nZU5hbWU6ZnVuY3Rpb24oKXt0aGlzLl92YWxpZGF0aW9u
V2E9CnJuaW5nKCJuYW1lIiwhIXRoaXMuX2dldE5hbWUoKSl9LF9uYW1lQ2hlY2tGb3JFbnRlcjpm
dW5jdGlvbihhKXsxMyE9M0Q9M0RhLj0Ka2V5Q29kZXx8dGhpcy5ibG9ja2luZ3x8dGhpcy5fY2xp
Y2tDcmVhdGUoKX0sX2dldE5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gXy5lPQpzY2FwZSh0aGlzLiQo
Ii5jb2xsZWN0aW9uLW5hbWUiKS52YWwoKSl9LF9jbGlja0NyZWF0ZTpmdW5jdGlvbigpe3ZhciBh
PTNEdGg9CmlzLl9nZXROYW1lKCk7YT90aGlzLmJsb2NraW5nfHx0aGlzLmNyZWF0ZUxpc3QoYSk6
dGhpcy5fdmFsaWRhdGlvbldhcm5pbmcoIj0KbmFtZSIpfSx0ZW1wbGF0ZXM6e21haW46Xy50ZW1w
bGF0ZShbJzxkaXYgY2xhc3M9M0QiaGVhZGVyIGZsZXgtcm93IG5vLWZsZXgiPQo+PC9kaXY+Jywn
PGRpdiBjbGFzcz0zRCJtaWRkbGUgZmxleC1yb3cgZmxleC1yb3ctY29udGFpbmVyIj48L2Rpdj4n
LCc8ZGl2IGM9Cmxhc3M9M0QiZm9vdGVyIGZsZXgtcm93IG5vLWZsZXgiPjwvZGl2PiddLmpvaW4o
IiIpKSxoZWFkZXI6Xy50ZW1wbGF0ZShbJzxkaT0KdiBjbGFzcz0zRCJtYWluLWhlbHAgd2VsbCBj
bGVhciI+JywnPGEgY2xhc3M9M0QibW9yZS1oZWxwIiBocmVmPTNEImphdmFzY3JpPQpwdDp2b2lk
KDApOyI+JyxmKCJNb3JlIGhlbHAiKSwiPC9hPiIsJzxkaXYgY2xhc3M9M0QiaGVscC1jb250ZW50
Ij4nLCc8YSBjbGE9CnNzPTNEImxlc3MtaGVscCIgaHJlZj0zRCJqYXZhc2NyaXB0OnZvaWQoMCk7
Ij4nLGYoIkxlc3MiKSwiPC9hPiIsIjwvZGl2PiIsIj0KPC9kaXY+IiwnPGRpdiBjbGFzcz0zRCJh
bGVydCBhbGVydC1kaXNtaXNzYWJsZSI+JywnPGJ1dHRvbiB0eXBlPTNEImJ1dHRvbiIgPQpjbGFz
cz0zRCJjbG9zZSIgZGF0YS1kaXNtaXNzPTNEImFsZXJ0IiAnLCd0aXRsZT0zRCInLGYoIkNsb3Nl
IGFuZCBzaG93IG1vcmU9CiBoZWxwIiksJyIgYXJpYS1oaWRkZW49M0QidHJ1ZSI+JnRpbWVzOzwv
YnV0dG9uPicsJzxzcGFuIGNsYXNzPTNEImFsZXJ0LW1lcz0Kc2FnZSI+PC9zcGFuPicsIjwvZGl2
PiJdLmpvaW4oIiIpKSxtaWRkbGU6Xy50ZW1wbGF0ZShbJzxkaXYgY2xhc3M9M0QiY29sbGVjPQp0
aW9uLWVsZW1lbnRzLWNvbnRyb2xzIj4nLCc8YSBjbGFzcz0zRCJyZXNldCIgaHJlZj0zRCJqYXZh
c2NyaXB0OnZvaWQoMCk7IiA9CicsJ3RpdGxlPTNEIicsZigiVW5kbyBhbGwgcmVvcmRlcmluZyBh
bmQgZGlzY2FyZHMiKSwnIj4nLGYoIlN0YXJ0IG92ZXIiKSwiPD0KL2E+IiwnPGEgY2xhc3M9M0Qi
Y2xlYXItc2VsZWN0ZWQiIGhyZWY9M0QiamF2YXNjcmlwdDp2b2lkKDApOyIgJywndGl0bGU9M0Qi
PQonLGYoIkRlLXNlbGVjdCBhbGwgc2VsZWN0ZWQgZGF0YXNldHMiKSwnIj4nLGYoIkNsZWFyIHNl
bGVjdGVkIiksIjwvYT4iLCI8L2Q9Cml2PiIsJzxkaXYgY2xhc3M9M0QiY29sbGVjdGlvbi1lbGVt
ZW50cyBzY3JvbGwtY29udGFpbmVyIGZsZXgtcm93Ij4nLCI8L2Rpdj0KPiJdLmpvaW4oIiIpKSxm
b290ZXI6Xy50ZW1wbGF0ZShbJzxkaXYgY2xhc3M9M0QiYXR0cmlidXRlcyBjbGVhciI+JywnPGRp
diBjPQpsYXNzPTNEImNsZWFyIj4nLCc8aW5wdXQgY2xhc3M9M0QiY29sbGVjdGlvbi1uYW1lIGZv
cm0tY29udHJvbCBwdWxsLXJpZ2h0IiA9CicsJ3BsYWNlaG9sZGVyPTNEIicsZigiRW50ZXIgYSBu
YW1lIGZvciB5b3VyIG5ldyBjb2xsZWN0aW9uIiksJyIgLz4nLCc8ZGl2ID0KY2xhc3M9M0QiY29s
bGVjdGlvbi1uYW1lLXByb21wdCBwdWxsLXJpZ2h0Ij4nLGYoIk5hbWUiKSwiOjwvZGl2PiIsIjwv
ZGl2PiIsPQoiPC9kaXY+IiwnPGRpdiBjbGFzcz0zRCJhY3Rpb25zIGNsZWFyIHZlcnRpY2FsbHkt
c3BhY2VkIj4nLCc8ZGl2IGNsYXNzPTNEIm89CnRoZXItb3B0aW9ucyBwdWxsLWxlZnQiPicsJzxi
dXR0b24gY2xhc3M9M0QiY2FuY2VsLWNyZWF0ZSBidG4iIHRhYmluZGV4PTNEIj0KLTEiPicsZigi
Q2FuY2VsIiksIjwvYnV0dG9uPiIsJzxkaXYgY2xhc3M9M0QiY3JlYXRlLW90aGVyIGJ0bi1ncm91
cCBkcm9wdXAiPQo+JywnPGJ1dHRvbiBjbGFzcz0zRCJidG4gYnRuLWRlZmF1bHQgZHJvcGRvd24t
dG9nZ2xlIiBkYXRhLXRvZ2dsZT0zRCJkcm9wZG89CnduIj4nLGYoIkNyZWF0ZSBhIGRpZmZlcmVu
dCBraW5kIG9mIGNvbGxlY3Rpb24iKSwnIDxzcGFuIGNsYXNzPTNEImNhcmV0Ij48Lz0Kc3Bhbj4n
LCI8L2J1dHRvbj4iLCc8dWwgY2xhc3M9M0QiZHJvcGRvd24tbWVudSIgcm9sZT0zRCJtZW51Ij4n
LCc8bGk+PGEgaHJlPQpmPTNEIiMiPicsZigiQ3JlYXRlIGEgPGk+c2luZ2xlPC9pPiBwYWlyIiks
IjwvYT48L2xpPiIsJzxsaT48YSBocmVmPTNEIiMiPic9CixmKCJDcmVhdGUgYSBsaXN0IG9mIDxp
PnVucGFpcmVkPC9pPiBkYXRhc2V0cyIpLCI8L2E+PC9saT4iLCI8L3VsPiIsIjwvZGl2Pj0KIiwi
PC9kaXY+IiwnPGRpdiBjbGFzcz0zRCJtYWluLW9wdGlvbnMgcHVsbC1yaWdodCI+JywnPGJ1dHRv
biBjbGFzcz0zRCJjcmVhPQp0ZS1jb2xsZWN0aW9uIGJ0biBidG4tcHJpbWFyeSI+JyxmKCJDcmVh
dGUgbGlzdCIpLCI8L2J1dHRvbj4iLCI8L2Rpdj4iLCI8L2Q9Cml2PiJdLmpvaW4oIiIpKSxoZWxw
Q29udGVudDpfLnRlbXBsYXRlKFsiPHA+IixmKFsiQ29sbGVjdGlvbnMgb2YgZGF0YXNldHMgYT0K
cmUgcGVybWFuZW50LCBvcmRlcmVkIGxpc3RzIG9mIGRhdGFzZXRzIHRoYXQgY2FuIGJlIHBhc3Nl
ZCB0byB0b29scyBhbmQgIiwiPQp3b3JrZmxvd3MgaW4gb3JkZXIgdG8gaGF2ZSBhbmFseXNlcyBk
b25lIG9uIGVhY2ggbWVtYmVyIG9mIHRoZSBlbnRpcmUgZ3JvdXA9Ci4gVGhpcyBpbnRlcmZhY2Ug
YWxsb3dzICIsInlvdSB0byBjcmVhdGUgYSBjb2xsZWN0aW9uIGFuZCByZS1vcmRlciB0aGUgZmlu
YT0KbCBjb2xsZWN0aW9uLiJdLmpvaW4oIiIpKSwiPC9wPiIsIjx1bD4iLCI8bGk+IixmKFsiUmVu
YW1lIGVsZW1lbnRzIGluIHRoZSBsPQppc3QgYnkgY2xpY2tpbmcgb24gIiwnPGkgZGF0YS10YXJn
ZXQ9M0QiLmNvbGxlY3Rpb24tZWxlbWVudCAubmFtZSI+dGhlIGV4aXM9CnRpbmcgbmFtZTwvaT4u
J10uam9pbigiIikpLCI8L2xpPiIsIjxsaT4iLGYoWyJEaXNjYXJkIGVsZW1lbnRzIGZyb20gdGhl
IGZpbj0KYWwgY3JlYXRlZCBsaXN0IGJ5IGNsaWNraW5nIG9uIHRoZSAiLCc8aSBkYXRhLXRhcmdl
dD0zRCIuY29sbGVjdGlvbi1lbGVtZW50PQogLmRpc2NhcmQiPiJEaXNjYXJkIjwvaT4gYnV0dG9u
LiddLmpvaW4oIiIpKSwiPC9saT4iLCI8bGk+IixmKFsiUmVvcmRlciB0aGU9CiBsaXN0IGJ5IGNs
aWNraW5nIGFuZCBkcmFnZ2luZyBlbGVtZW50cy4gU2VsZWN0IG11bHRpcGxlIGVsZW1lbnRzIGJ5
IGNsaWNraT0Kbmcgb24gIiwnPGkgZGF0YS10YXJnZXQ9M0QiLmNvbGxlY3Rpb24tZWxlbWVudCI+
dGhlbTwvaT4gYW5kIHlvdSBjYW4gdGhlbiBtPQpvdmUgdGhvc2Ugc2VsZWN0ZWQgYnkgZHJhZ2dp
bmcgdGhlICcsImVudGlyZSBncm91cC4gRGVzZWxlY3QgdGhlbSBieSBjbGlja2k9Cm5nIHRoZW0g
YWdhaW4gb3IgYnkgY2xpY2tpbmcgdGhlICIsJ3RoZSA8aSBkYXRhLXRhcmdldD0zRCIuY2xlYXIt
c2VsZWN0ZWQiPj0KIkNsZWFyIHNlbGVjdGVkIjwvaT4gbGluay4nXS5qb2luKCIiKSksIjwvbGk+
IiwiPGxpPiIsZihbJ0NsaWNrIHRoZSA8aSBkYXRhPQotdGFyZ2V0PTNEIi5yZXNldCI+IlN0YXJ0
IG92ZXIiPC9pPiBsaW5rIHRvIGJlZ2luIGFnYWluIGFzIGlmIHlvdSBoYWQganVzdCA9Cm9wZW5l
ZCAnLCJ0aGUgaW50ZXJmYWNlLiJdLmpvaW4oIiIpKSwiPC9saT4iLCI8bGk+IixmKFsnQ2xpY2sg
dGhlIDxpIGRhdGEtdD0KYXJnZXQ9M0QiLmNhbmNlbC1jcmVhdGUiPiJDYW5jZWwiPC9pPiBidXR0
b24gdG8gZXhpdCB0aGUgaW50ZXJmYWNlLiddLmpvaW4oPQoiIikpLCI8L2xpPiIsIjwvdWw+PGJy
IC8+IiwiPHA+IixmKFsnT25jZSB5b3VyIGNvbGxlY3Rpb24gaXMgY29tcGxldGUsIGVudGU9CnIg
YSA8aSBkYXRhLXRhcmdldD0zRCIuY29sbGVjdGlvbi1uYW1lIj5uYW1lPC9pPiBhbmQgJywnY2xp
Y2sgPGkgZGF0YS10YXJnZT0KdD0zRCIuY3JlYXRlLWNvbGxlY3Rpb24iPiJDcmVhdGUgbGlzdCI8
L2k+LiddLmpvaW4oIiIpKSwiPC9wPiJdLmpvaW4oIiIpKSxpPQpudmFsaWRFbGVtZW50czpfLnRl
bXBsYXRlKFtmKCJUaGUgZm9sbG93aW5nIHNlbGVjdGlvbnMgY291bGQgbm90IGJlIGluY2x1ZGU9
CmQgZHVlIHRvIHByb2JsZW1zOiIpLCI8dWw+PCUgXy5lYWNoKCBwcm9ibGVtcywgZnVuY3Rpb24o
IHByb2JsZW0gKXsgJT4iLCI8bD0KaT48Yj48JS0gcHJvYmxlbS5lbGVtZW50Lm5hbWUgJT48L2I+
OiA8JS0gcHJvYmxlbS50ZXh0ICU+PC9saT4iLCI8JSB9KTsgJT48PQovdWw+Il0uam9pbigiIikp
LG5vRWxlbWVudHNMZWZ0Ol8udGVtcGxhdGUoWyc8bGkgY2xhc3M9M0Qibm8tZWxlbWVudHMtbGVm
dC09Cm1lc3NhZ2UiPicsZigiTm8gZWxlbWVudHMgbGVmdCEgIiksZigiV291bGQgeW91IGxpa2Ug
dG8gIiksJzxhIGNsYXNzPTNEInJlcz0KZXQiIGhyZWY9M0QiamF2YXNjcmlwdDp2b2lkKDApIj4n
LGYoInN0YXJ0IG92ZXIiKSwiPC9hPj8iLCI8L2xpPiJdLmpvaW4oIiIpPQopLGludmFsaWRJbml0
aWFsOl8udGVtcGxhdGUoWyc8ZGl2IGNsYXNzPTNEImhlYWRlciBmbGV4LXJvdyBuby1mbGV4Ij4n
LCc8ZGk9CnYgY2xhc3M9M0QiYWxlcnQgYWxlcnQtd2FybmluZyIgc3R5bGU9M0QiZGlzcGxheTog
YmxvY2siPicsJzxzcGFuIGNsYXNzPTNEIj0KYWxlcnQtbWVzc2FnZSI+JywiPCUgaWYoIF8uc2l6
ZSggcHJvYmxlbXMgKSApeyAlPiIsZigiVGhlIGZvbGxvd2luZyBzZWxlY3RpPQpvbnMgY291bGQg
bm90IGJlIGluY2x1ZGVkIGR1ZSB0byBwcm9ibGVtcyIpLCI6IiwiPHVsPjwlIF8uZWFjaCggcHJv
YmxlbXMsIGY9CnVuY3Rpb24oIHByb2JsZW0gKXsgJT4iLCI8bGk+PGI+PCUtIHByb2JsZW0uZWxl
bWVudC5uYW1lICU+PC9iPjogPCUtIHByb2JsZT0KbS50ZXh0ICU+PC9saT4iLCI8JSB9KTsgJT48
L3VsPiIsIjwlIH0gZWxzZSBpZiggXy5zaXplKCBlbGVtZW50cyApIDwgMSApeyAlPQo+IixmKCJO
byBkYXRhc2V0cyB3ZXJlIHNlbGVjdGVkIiksIi4iLCI8JSB9ICU+IiwiPGJyIC8+IixmKCJBdCBs
ZWFzdCBvbmUgZWw9CmVtZW50IGlzIG5lZWRlZCBmb3IgdGhlIGNvbGxlY3Rpb24iKSwiLiAiLGYo
IllvdSBtYXkgbmVlZCB0byAiKSwnPGEgY2xhc3M9Cj0zRCJjYW5jZWwtY3JlYXRlIiBocmVmPTNE
ImphdmFzY3JpcHQ6dm9pZCgwKSI+JyxmKCJjYW5jZWwiKSwiPC9hPiAiLGYoImFuZD0KIHJlc2Vs
ZWN0IG5ldyBlbGVtZW50cyIpLCIuIiwiPC9zcGFuPiIsIjwvZGl2PiIsIjwvZGl2PiIsJzxkaXYg
Y2xhc3M9M0QiZm9vPQp0ZXIgZmxleC1yb3cgbm8tZmxleCI+JywnPGRpdiBjbGFzcz0zRCJhY3Rp
b25zIGNsZWFyIHZlcnRpY2FsbHktc3BhY2VkIj4nLCc9CjxkaXYgY2xhc3M9M0Qib3RoZXItb3B0
aW9ucyBwdWxsLWxlZnQiPicsJzxidXR0b24gY2xhc3M9M0QiY2FuY2VsLWNyZWF0ZSBidD0KbiIg
dGFiaW5kZXg9M0QiLTEiPicsZigiQ2FuY2VsIiksIjwvYnV0dG9uPiIsIjwvZGl2PiIsIjwvZGl2
PiIsIjwvZGl2PiJdLmpvPQppbigiIikpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJMaXN0
Q29sbGVjdGlvbkNyZWF0b3IifX0pLGo9M0RmdW5jdGlvbig9CmEsYixjKXt2YXIgZSxnPTNEalF1
ZXJ5LkRlZmVycmVkKCksaD0zREdhbGF4eS5tb2RhbHx8bmV3IGQuVmlldztyZXR1cm4gYj0zRD0K
Xy5kZWZhdWx0cyhifHx7fSx7ZWxlbWVudHM6YSxvbmNhbmNlbDpmdW5jdGlvbigpe2guaGlkZSgp
LGcucmVqZWN0KCJjYW5jZWxsPQplZCIpfSxvbmNyZWF0ZTpmdW5jdGlvbihhLGIpe2guaGlkZSgp
LGcucmVzb2x2ZShiKX19KSxlPTNEbmV3IGMoYiksaC5zaG93KHs9CnRpdGxlOmIudGl0bGV8fGYo
IkNyZWF0ZSBhIGNvbGxlY3Rpb24iKSxib2R5OmUuJGVsLHdpZHRoOiI4MCUiLGhlaWdodDoiMTAw
JT0KIixjbG9zaW5nX2V2ZW50czohMH0pLGUucmVuZGVyKCksd2luZG93Ll9jb2xsZWN0aW9uQ3Jl
YXRvcj0zRGUsZ30saz0zRGZ1bmN0PQppb24oYSxiKXtyZXR1cm4gYj0zRGJ8fHt9LGIudGl0bGU9
M0RmKCJDcmVhdGUgYSBjb2xsZWN0aW9uIGZyb20gYSBsaXN0IG9mIGQ9CmF0YXNldHMiKSxqKGEs
YixpKX07cmV0dXJue0RhdGFzZXRDb2xsZWN0aW9uRWxlbWVudFZpZXc6aCxMaXN0Q29sbGVjdGlv
bkNyZT0KYXRvcjppLGNvbGxlY3Rpb25DcmVhdG9yTW9kYWw6aixsaXN0Q29sbGVjdGlvbkNyZWF0
b3JNb2RhbDprLGNyZWF0ZUxpc3RDb2xsPQplY3Rpb246Z319KTsKIC8vIyBzb3VyY2VNYXBwaW5n
VVJMPTNELi4vLi4vLi4vbWFwcy9tdmMvY29sbGVjdGlvbi9saXN0LWNvbGxlY3Rpb24tY3JlYXRv
PQpyLmpzLm1hcApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKCmRpZmYgLXIgZDYyZjNlNTBi
NTY3YTE1N2MwOTQ0NDczYWRiYmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0
Zj0KNGJkZDRiMWUxOWE5N2FhNTUgc3RhdGljL3NjcmlwdHMvbXZjL2xpYnJhcnkvbGlicmFyeS1m
b2xkZXJ0b29sYmFyLXZpZXcuanMKLS0tIGEvc3RhdGljL3NjcmlwdHMvbXZjL2xpYnJhcnkvbGli
cmFyeS1mb2xkZXJ0b29sYmFyLXZpZXcuanMKKysrIGIvc3RhdGljL3NjcmlwdHMvbXZjL2xpYnJh
cnkvbGlicmFyeS1mb2xkZXJ0b29sYmFyLXZpZXcuanMKQEAgLTEsMyArMSwzIEBACi1kZWZpbmUo
WyJnYWxheHkubWFzdGhlYWQiLCJ1dGlscy91dGlscyIsImxpYnMvdG9hc3RyIiwibXZjL2xpYnJh
cnkvbGlicmFyeT0KLW1vZGVsIiwibXZjL3VpL3VpLXNlbGVjdCJdLGZ1bmN0aW9uKGEsYixjLGQs
ZSl7dmFyIGY9M0RCYWNrYm9uZS5WaWV3LmV4dGVuPQpkKHtlbDoiI2NlbnRlciIsZXZlbnRzOnsi
Y2xpY2sgI3Rvb2xidG5fY3JlYXRlX2ZvbGRlciI6ImNyZWF0ZUZvbGRlckZyb21Nb2Q9CmFsIiwi
Y2xpY2sgI3Rvb2xidG5fYnVsa19pbXBvcnQiOiJtb2RhbEJ1bGtJbXBvcnQiLCJjbGljayAjaW5j
bHVkZV9kZWxldGVkXz0KZGF0YXNldHNfY2hrIjoiY2hlY2tJbmNsdWRlRGVsZXRlZCIsImNsaWNr
ICN0b29sYnRuX3Nob3dfbGliaW5mbyI6InNob3dMaWJJPQpuZm8iLCJjbGljayAjdG9vbGJ0bl9i
dWxrX2RlbGV0ZSI6ImRlbGV0ZVNlbGVjdGVkRGF0YXNldHMiLCJjbGljayAjcGFnZV9zaXo9CmVf
cHJvbXB0Ijoic2hvd1BhZ2VTaXplUHJvbXB0In0sZGVmYXVsdHM6e2Nhbl9hZGRfbGlicmFyeV9p
dGVtOiExLGNvbnRhaW5zXz0KZmlsZV9vcl9mb2xkZXI6ITEsY2hhaW5fY2FsbF9jb250cm9sOnt0
b3RhbF9udW1iZXI6MCxmYWlsZWRfbnVtYmVyOjB9LGRpc2FiPQpsZWRfanN0cmVlX2VsZW1lbnQ6
ImZvbGRlcnMifSxtb2RhbDpudWxsLGpzdHJlZTpudWxsLGhpc3RvcmllczpudWxsLHNlbGVjdF89
Cmdlbm9tZTpudWxsLHNlbGVjdF9leHRlbnNpb246bnVsbCxsaXN0X2V4dGVuc2lvbnM6W10sYXV0
bzp7aWQ6ImF1dG8iLHRleHQ6Ij0KQXV0by1kZXRlY3QiLGRlc2NyaXB0aW9uOiJUaGlzIHN5c3Rl
bSB3aWxsIHRyeSB0byBkZXRlY3QgdGhlIGZpbGUgdHlwZSBhdXRvPQptYXRpY2FsbHkuIElmIHlv
dXIgZmlsZSBpcyBub3QgZGV0ZWN0ZWQgcHJvcGVybHkgYXMgb25lIG9mIHRoZSBrbm93biBmb3Jt
YXQ9CnMsIGl0IG1vc3QgbGlrZWx5IG1lYW5zIHRoYXQgaXQgaGFzIHNvbWUgZm9ybWF0IHByb2Js
ZW1zIChlLmcuLCBkaWZmZXJlbnQgbj0KdW1iZXIgb2YgY29sdW1ucyBvbiBkaWZmZXJlbnQgcm93
cykuIFlvdSBjYW4gc3RpbGwgY29lcmNlIHRoZSBzeXN0ZW0gdG8gc2V0PQogeW91ciBkYXRhIHRv
IHRoZSBmb3JtYXQgeW91IHRoaW5rIGl0IHNob3VsZCBiZS4gWW91IGNhbiBhbHNvIHVwbG9hZCBj
b21wcmU9CnNzZWQgZmlsZXMsIHdoaWNoIHdpbGwgYXV0b21hdGljYWxseSBiZSBkZWNvbXByZXNz
ZWQuIn0sbGlzdF9nZW5vbWVzOltdLGluaT0KdGlhbGl6ZTpmdW5jdGlvbihhKXt0aGlzLm9wdGlv
bnM9M0RfLmRlZmF1bHRzKGF8fHt9LHRoaXMuZGVmYXVsdHMpLHRoaXMuZmV0PQpjaEV4dEFuZEdl
bm9tZXMoKSx0aGlzLnJlbmRlcigpfSxyZW5kZXI6ZnVuY3Rpb24oYSl7dGhpcy5vcHRpb25zPTNE
Xy5leHRlbmQ9Cih0aGlzLm9wdGlvbnMsYSk7dmFyIGI9M0R0aGlzLnRlbXBsYXRlVG9vbEJhcigp
LGM9M0R7aWQ6dGhpcy5vcHRpb25zLmlkLGlzXz0KYWRtaW46ITEsaXNfYW5vbnltOiEwLG11dGlw
bGVfYWRkX2RhdGFzZXRfb3B0aW9uczohMX07R2FsYXh5LmN1cnJVc2VyJiYoYy5pPQpzX2FkbWlu
PTNER2FsYXh5LmN1cnJVc2VyLmlzQWRtaW4oKSxjLmlzX2Fub255bT0zREdhbGF4eS5jdXJyVXNl
ci5pc0Fub255bW89CnVzKCksKG51bGwhPTNEPTNER2FsYXh5LmNvbmZpZy51c2VyX2xpYnJhcnlf
aW1wb3J0X2Rpcnx8R2FsYXh5LmNvbmZpZy5hbGxvdz0KX2xpYnJhcnlfcGF0aF9wYXN0ZSE9M0Q9
M0QhMXx8bnVsbCE9M0Q9M0RHYWxheHkuY29uZmlnLmxpYnJhcnlfaW1wb3J0X2RpcikmPQomKGMu
bXV0aXBsZV9hZGRfZGF0YXNldF9vcHRpb25zPTNEITApKSx0aGlzLiRlbC5odG1sKGIoYykpfSxy
ZW5kZXJQYWdpbmF0b3I9CjpmdW5jdGlvbihhKXt0aGlzLm9wdGlvbnM9M0RfLmV4dGVuZCh0aGlz
Lm9wdGlvbnMsYSk7dmFyIGI9M0R0aGlzLnRlbXBsYXRlUD0KYWdpbmF0b3IoKTt0aGlzLiRlbC5m
aW5kKCIjZm9sZGVyX3BhZ2luYXRvciIpLmh0bWwoYih7aWQ6dGhpcy5vcHRpb25zLmlkLHNoPQpv
d19wYWdlOnBhcnNlSW50KHRoaXMub3B0aW9ucy5zaG93X3BhZ2UpLHBhZ2VfY291bnQ6cGFyc2VJ
bnQodGhpcy5vcHRpb25zLnA9CmFnZV9jb3VudCksdG90YWxfaXRlbXNfY291bnQ6dGhpcy5vcHRp
b25zLnRvdGFsX2l0ZW1zX2NvdW50LGl0ZW1zX3Nob3duOnRoaT0Kcy5vcHRpb25zLml0ZW1zX3No
b3dufSkpfSxjb25maWd1cmVFbGVtZW50czpmdW5jdGlvbihhKXt0aGlzLm9wdGlvbnM9M0RfLmV4
PQp0ZW5kKHRoaXMub3B0aW9ucyxhKSx0aGlzLm9wdGlvbnMuY2FuX2FkZF9saWJyYXJ5X2l0ZW09
M0Q9M0Q9M0QhMD8kKCIuYWRkLWw9CmlicmFyeS1pdGVtcyIpLnNob3coKTokKCIuYWRkLWxpYnJh
cnktaXRlbXMiKS5oaWRlKCksdGhpcy5vcHRpb25zLmNvbnRhaW5zXz0KZmlsZV9vcl9mb2xkZXI9
M0Q9M0Q9M0QhMCYmR2FsYXh5LmN1cnJVc2VyP0dhbGF4eS5jdXJyVXNlci5pc0Fub255bW91cygp
PygkPQooIi5kYXRhc2V0LW1hbmlwdWxhdGlvbiIpLnNob3coKSwkKCIubG9nZ2VkLWRhdGFzZXQt
bWFuaXB1bGF0aW9uIikuaGlkZSgpKTo9CigkKCIubG9nZ2VkLWRhdGFzZXQtbWFuaXB1bGF0aW9u
Iikuc2hvdygpLCQoIi5kYXRhc2V0LW1hbmlwdWxhdGlvbiIpLnNob3coKT0KKTooJCgiLmxvZ2dl
ZC1kYXRhc2V0LW1hbmlwdWxhdGlvbiIpLmhpZGUoKSwkKCIuZGF0YXNldC1tYW5pcHVsYXRpb24i
KS5oaWRlPQooKSksdGhpcy4kZWwuZmluZCgiW2RhdGEtdG9nZ2xlXSIpLnRvb2x0aXAoKX0sY3Jl
YXRlRm9sZGVyRnJvbU1vZGFsOmZ1bmN0aW89Cm4oYSl7YS5wcmV2ZW50RGVmYXVsdCgpLGEuc3Rv
cFByb3BhZ2F0aW9uKCk7dmFyIGI9M0R0aGlzLGM9M0R0aGlzLnRlbXBsYXRlTj0KZXdGb2xkZXJJ
bk1vZGFsKCk7dGhpcy5tb2RhbD0zREdhbGF4eS5tb2RhbCx0aGlzLm1vZGFsLnNob3coe2Nsb3Np
bmdfZXZlbnRzPQo6ITAsdGl0bGU6IkNyZWF0ZSBOZXcgRm9sZGVyIixib2R5OmMoKSxidXR0b25z
OntDcmVhdGU6ZnVuY3Rpb24oKXtiLmNyZWF0ZV89Cm5ld19mb2xkZXJfZXZlbnQoKX0sQ2xvc2U6
ZnVuY3Rpb24oKXtHYWxheHkubW9kYWwuaGlkZSgpfX19KX0sY3JlYXRlX25ld19mbz0KbGRlcl9l
dmVudDpmdW5jdGlvbigpe3ZhciBhPTNEdGhpcy5zZXJpYWxpemVfbmV3X2ZvbGRlcigpO2lmKHRo
aXMudmFsaWRhdGVfPQpuZXdfZm9sZGVyKGEpKXt2YXIgYj0zRG5ldyBkLkZvbGRlckFzTW9kZWw7
dXJsX2l0ZW1zPTNEQmFja2JvbmUuaGlzdG9yeS5mcmE9CmdtZW50LnNwbGl0KCIvIiksY3VycmVu
dF9mb2xkZXJfaWQ9M0R1cmxfaXRlbXNbdXJsX2l0ZW1zLmxlbmd0aC0xXSxiLnVybD0zRD0KYi51
cmxSb290K2N1cnJlbnRfZm9sZGVyX2lkLGIuc2F2ZShhLHtzdWNjZXNzOmZ1bmN0aW9uKGEpe0dh
bGF4eS5tb2RhbC5oaWRlPQooKSxjLnN1Y2Nlc3MoIkZvbGRlciBjcmVhdGVkLiIpLGEuc2V0KHt0
eXBlOiJmb2xkZXIifSksR2FsYXh5LmxpYnJhcmllcy5mb2w9CmRlckxpc3RWaWV3LmNvbGxlY3Rp
b24uYWRkKGEpfSxlcnJvcjpmdW5jdGlvbihhLGIpe0dhbGF4eS5tb2RhbC5oaWRlKCksYy5lcj0K
cm9yKCJ1bmRlZmluZWQiIT0zRHR5cGVvZiBiLnJlc3BvbnNlSlNPTj9iLnJlc3BvbnNlSlNPTi5l
cnJfbXNnOiJBbiBlcnJvciBvPQpjdXJyZWQuIil9fSl9ZWxzZSBjLmVycm9yKCJGb2xkZXIncyBu
YW1lIGlzIG1pc3NpbmcuIik7cmV0dXJuITF9LHNlcmlhbGl6ZV89Cm5ld19mb2xkZXI6ZnVuY3Rp
b24oKXtyZXR1cm57bmFtZTokKCJpbnB1dFtuYW1lPTNEJ05hbWUnXSIpLnZhbCgpLGRlc2NyaXB0
aT0Kb246JCgiaW5wdXRbbmFtZT0zRCdEZXNjcmlwdGlvbiddIikudmFsKCl9fSx2YWxpZGF0ZV9u
ZXdfZm9sZGVyOmZ1bmN0aW9uKGEpPQp7cmV0dXJuIiIhPTNEPTNEYS5uYW1lfSxtb2RhbEJ1bGtJ
bXBvcnQ6ZnVuY3Rpb24oKXt2YXIgYT0zRCQoIiNmb2xkZXJfdGFibGU9CiIpLmZpbmQoIjpjaGVj
a2VkIik7MD0zRD0zRD0zRGEubGVuZ3RoP2MuaW5mbygiWW91IG11c3Qgc2VsZWN0IHNvbWUgZGF0
YXNldD0KcyBmaXJzdC4iKTp0aGlzLnJlZnJlc2hVc2VySGlzdG9yaWVzTGlzdChmdW5jdGlvbihh
KXt2YXIgYj0zRGEudGVtcGxhdGVCdWxrPQpJbXBvcnRJbk1vZGFsKCk7YS5tb2RhbD0zREdhbGF4
eS5tb2RhbCxhLm1vZGFsLnNob3coe2Nsb3NpbmdfZXZlbnRzOiEwLHRpdGw9CmU6IkltcG9ydCBp
bnRvIEhpc3RvcnkiLGJvZHk6Yih7aGlzdG9yaWVzOmEuaGlzdG9yaWVzLm1vZGVsc30pLGJ1dHRv
bnM6e0ltcD0Kb3J0OmZ1bmN0aW9uKCl7YS5pbXBvcnRBbGxJbnRvSGlzdG9yeSgpfSxDbG9zZTpm
dW5jdGlvbigpe0dhbGF4eS5tb2RhbC5oaWRlPQooKX19fSl9KX0scmVmcmVzaFVzZXJIaXN0b3Jp
ZXNMaXN0OmZ1bmN0aW9uKGEpe3ZhciBiPTNEdGhpczt0aGlzLmhpc3Rvcmllcz0KPTNEbmV3IGQu
R2FsYXh5SGlzdG9yaWVzLHRoaXMuaGlzdG9yaWVzLmZldGNoKHtzdWNjZXNzOmZ1bmN0aW9uKCl7
YShiKX0sZXJyPQpvcjpmdW5jdGlvbihhLGIpe2MuZXJyb3IoInVuZGVmaW5lZCIhPTNEdHlwZW9m
IGIucmVzcG9uc2VKU09OP2IucmVzcG9uc2VKU089Ck4uZXJyX21zZzoiQW4gZXJyb3Igb2N1cnJl
ZC4iKX19KX0saW1wb3J0QWxsSW50b0hpc3Rvcnk6ZnVuY3Rpb24oKXt0aGlzLm1vZD0KYWwuZGlz
YWJsZUJ1dHRvbigiSW1wb3J0Iik7dmFyIGE9M0QkKCJzZWxlY3RbbmFtZT0zRGRhdGFzZXRfaW1w
b3J0X2J1bGtdIG9wPQp0aW9uOnNlbGVjdGVkIikudmFsKCksYj0zRCQoInNlbGVjdFtuYW1lPTNE
ZGF0YXNldF9pbXBvcnRfYnVsa10gb3B0aW9uOnNlbGU9CmN0ZWQiKS50ZXh0KCk7dGhpcy5vcHRp
b25zLmxhc3RfdXNlZF9oaXN0b3J5X2lkPTNEYTt2YXIgYz0zRFtdLGU9M0RbXTskKCIjZj0Kb2xk
ZXJfdGFibGUiKS5maW5kKCI6Y2hlY2tlZCIpLmVhY2goZnVuY3Rpb24oKXsiIiE9M0Q9M0R0aGlz
LnBhcmVudEVsZW1lbnQuPQpwYXJlbnRFbGVtZW50LmlkJiZ0aGlzLnBhcmVudEVsZW1lbnQucGFy
ZW50RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImRhdGE9CnNldF9yb3ciKT9jLnB1c2godGhp
cy5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuaWQpOiIiIT0zRD0zRHRoaXMucGFyZW50RT0K
bGVtZW50LnBhcmVudEVsZW1lbnQuaWQmJnRoaXMucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50
LmNsYXNzTGlzdC5jb250YWluPQpzKCJmb2xkZXJfcm93IikmJmUucHVzaCh0aGlzLnBhcmVudEVs
ZW1lbnQucGFyZW50RWxlbWVudC5pZCl9KTtmb3IodmFyIGY9M0Q9CltdLGc9M0RjLmxlbmd0aC0x
O2c+PTNEMDtnLS0pe3ZhciBoPTNEY1tnXSxpPTNEbmV3IGQuSGlzdG9yeUl0ZW07aS51cmw9M0Rp
Lj0KdXJsUm9vdCthKyIvY29udGVudHMiLGkuY29udGVudD0zRGgsaS5zb3VyY2U9M0QibGlicmFy
eSIsZi5wdXNoKGkpfWZvcih2YXIgPQpnPTNEZS5sZW5ndGgtMTtnPj0zRDA7Zy0tKXt2YXIgaj0z
RGVbZ10saT0zRG5ldyBkLkhpc3RvcnlJdGVtO2kudXJsPTNEaS51cmw9ClJvb3QrYSsiL2NvbnRl
bnRzIixpLmNvbnRlbnQ9M0RqLGkuc291cmNlPTNEImxpYnJhcnlfZm9sZGVyIixmLnB1c2goaSl9
dGhpcz0KLmluaXRDaGFpbkNhbGxDb250cm9sKHtsZW5ndGg6Zi5sZW5ndGgsYWN0aW9uOiJ0b19o
aXN0b3J5IixoaXN0b3J5X25hbWU6Yn0pPQosalF1ZXJ5LmdldEpTT04oZ2FsYXh5X2NvbmZpZy5y
b290KyJoaXN0b3J5L3NldF9hc19jdXJyZW50P2lkPTNEIithKSx0aGlzLmM9CmhhaW5DYWxsSW1w
b3J0aW5nSW50b0hpc3RvcnkoZixiKX0sdXBkYXRlUHJvZ3Jlc3M6ZnVuY3Rpb24oKXt0aGlzLnBy
b2dyZXNzKz0KPTNEdGhpcy5wcm9ncmVzc1N0ZXAsJCgiLnByb2dyZXNzLWJhci1pbXBvcnQiKS53
aWR0aChNYXRoLnJvdW5kKHRoaXMucHJvZ3JlPQpzcykrIiUiKSx0eHRfcmVwcmVzZW50YXRpb249
M0RNYXRoLnJvdW5kKHRoaXMucHJvZ3Jlc3MpKyIlIENvbXBsZXRlIiwkKCIuY289Cm1wbGV0aW9u
X3NwYW4iKS50ZXh0KHR4dF9yZXByZXNlbnRhdGlvbil9LGRvd25sb2FkOmZ1bmN0aW9uKGEsYil7
dmFyIGM9M0RbXT0KLGQ9M0RbXTskKCIjZm9sZGVyX3RhYmxlIikuZmluZCgiOmNoZWNrZWQiKS5l
YWNoKGZ1bmN0aW9uKCl7IiIhPTNEPTNEdGhpcy5wPQphcmVudEVsZW1lbnQucGFyZW50RWxlbWVu
dC5pZCYmdGhpcy5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuY2xhc3NMaXN0LmM9Cm9udGFp
bnMoImRhdGFzZXRfcm93Iik/Yy5wdXNoKHRoaXMucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50
LmlkKToiIiE9M0Q9Cj0zRHRoaXMucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LmlkJiZ0aGlz
LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5jbD0KYXNzTGlzdC5jb250YWlucygiZm9sZGVy
X3JvdyIpJiZkLnB1c2godGhpcy5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuaWQpPQp9KTt2
YXIgZT0zRCh3aW5kb3cuZ2FsYXh5X2NvbmZpZz9nYWxheHlfY29uZmlnLnJvb3Q6Ii8iKSsiYXBp
L2xpYnJhcmllcy9kYXQ9CmFzZXRzL2Rvd25sb2FkLyIrYixmPTNEe2xkX2lkczpjLGZvbGRlcl9p
ZHM6ZH07dGhpcy5wcm9jZXNzRG93bmxvYWQoZSxmLCJnZT0KdCIpfSxwcm9jZXNzRG93bmxvYWQ6
ZnVuY3Rpb24oYSxiLGQpe2lmKGEmJmIpe2I9M0Qic3RyaW5nIj0zRD0zRHR5cGVvZiBiP2I6PQok
LnBhcmFtKGIpO3ZhciBlPTNEIiI7JC5lYWNoKGIuc3BsaXQoIiYiKSxmdW5jdGlvbigpe3ZhciBh
PTNEdGhpcy5zcGxpdCgiPQo9M0QiKTtlKz0zRCc8aW5wdXQgdHlwZT0zRCJoaWRkZW4iIG5hbWU9
M0QiJythWzBdKyciIHZhbHVlPTNEIicrYVsxXSsnIiAvPic9Cn0pLCQoJzxmb3JtIGFjdGlvbj0z
RCInK2ErJyIgbWV0aG9kPTNEIicrKGR8fCJwb3N0IikrJyI+JytlKyI8L2Zvcm0+IikuYXBwZT0K
bmRUbygiYm9keSIpLnN1Ym1pdCgpLnJlbW92ZSgpLGMuaW5mbygiWW91ciBkb3dubG9hZCB3aWxs
IGJlZ2luIHNvb24uIil9ZWxzPQplIGMuZXJyb3IoIkFuIGVycm9yIG9jY3VycmVkLiIpfSxhZGRG
aWxlc0Zyb21IaXN0b3J5TW9kYWw6ZnVuY3Rpb24oKXt0aGlzLnI9CmVmcmVzaFVzZXJIaXN0b3Jp
ZXNMaXN0KGZ1bmN0aW9uKGEpe2EubW9kYWw9M0RHYWxheHkubW9kYWw7dmFyIGI9M0RhLnRlbXBs
YT0KdGVBZGRGaWxlc0Zyb21IaXN0b3J5KCksZD0zRGEub3B0aW9ucy5mdWxsX3BhdGhbYS5vcHRp
b25zLmZ1bGxfcGF0aC5sZW5ndGgtPQoxXVsxXTthLm1vZGFsLnNob3coe2Nsb3NpbmdfZXZlbnRz
OiEwLHRpdGxlOiJBZGRpbmcgZGF0YXNldHMgZnJvbSB5b3VyIGhpc3Q9Cm9yeSB0byBmb2xkZXIg
IitkLGJvZHk6Yih7aGlzdG9yaWVzOmEuaGlzdG9yaWVzLm1vZGVsc30pLGJ1dHRvbnM6e0FkZDpm
dW5jdD0KaW9uKCl7YS5hZGRBbGxEYXRhc2V0c0Zyb21IaXN0b3J5KCl9LENsb3NlOmZ1bmN0aW9u
KCl7R2FsYXh5Lm1vZGFsLmhpZGUoKX19PQosY2xvc2luZ19jYWxsYmFjazpmdW5jdGlvbigpe0dh
bGF4eS5saWJyYXJpZXMubGlicmFyeV9yb3V0ZXIuYmFjaygpfX0pLGEuaGk9CnN0b3JpZXMubW9k
ZWxzLmxlbmd0aD4wPyhhLmZldGNoQW5kRGlzcGxheUhpc3RvcnlDb250ZW50cyhhLmhpc3Rvcmll
cy5tb2RlbD0Kc1swXS5pZCksJCgiI2RhdGFzZXRfYWRkX2J1bGsiKS5jaGFuZ2UoZnVuY3Rpb24o
Yil7YS5mZXRjaEFuZERpc3BsYXlIaXN0b3J5PQpDb250ZW50cyhiLnRhcmdldC52YWx1ZSl9KSk6
Yy5lcnJvcigiQW4gZXJyb3Igb2N1cnJlZC4iKX0pfSxpbXBvcnRGaWxlc0Zyb209ClBhdGhNb2Rh
bDpmdW5jdGlvbigpe3ZhciBhPTNEdGhpczt0aGlzLm1vZGFsPTNER2FsYXh5Lm1vZGFsO3ZhciBi
PTNEdGhpcy50ZT0KbXBsYXRlSW1wb3J0UGF0aE1vZGFsKCk7dGhpcy5tb2RhbC5zaG93KHtjbG9z
aW5nX2V2ZW50czohMCx0aXRsZToiUGxlYXNlIGVuPQp0ZXIgcGF0aHMgdG8gaW1wb3J0Iixib2R5
OmIoe30pLGJ1dHRvbnM6e0ltcG9ydDpmdW5jdGlvbigpe2EuaW1wb3J0RnJvbVBhdGg9CnNDbGlj
a2VkKGEpfSxDbG9zZTpmdW5jdGlvbigpe0dhbGF4eS5tb2RhbC5oaWRlKCl9fSxjbG9zaW5nX2Nh
bGxiYWNrOmZ1bmN0aT0Kb24oKXtHYWxheHkubGlicmFyaWVzLmxpYnJhcnlfcm91dGVyLm5hdmln
YXRlKCJmb2xkZXJzLyIrYS5pZCx7dHJpZ2dlcjohMH0pPQp9fSksdGhpcy5yZW5kZXJTZWxlY3RC
b3hlcygpfSxmZXRjaEV4dEFuZEdlbm9tZXM6ZnVuY3Rpb24oKXt2YXIgYT0zRHRoaXM7Yi49Cmdl
dCh7dXJsOih3aW5kb3cuZ2FsYXh5X2NvbmZpZz9nYWxheHlfY29uZmlnLnJvb3Q6Ii8iKSsiYXBp
L2RhdGF0eXBlcz9leHRlbj0Kc2lvbl9vbmx5PTNERmFsc2UiLHN1Y2Nlc3M6ZnVuY3Rpb24oYil7
Zm9yKGtleSBpbiBiKWEubGlzdF9leHRlbnNpb25zLnB1c2goPQp7aWQ6YltrZXldLmV4dGVuc2lv
bix0ZXh0OmJba2V5XS5leHRlbnNpb24sZGVzY3JpcHRpb246YltrZXldLmRlc2NyaXB0aW9uLGQ9
CmVzY3JpcHRpb25fdXJsOmJba2V5XS5kZXNjcmlwdGlvbl91cmx9KTthLmxpc3RfZXh0ZW5zaW9u
cy5zb3J0KGZ1bmN0aW9uKGEsYj0KKXtyZXR1cm4gYS5pZD5iLmlkPzE6YS5pZDxiLmlkPy0xOjB9
KSxhLmxpc3RfZXh0ZW5zaW9ucy51bnNoaWZ0KGEuYXV0byl9fSksPQpiLmdldCh7dXJsOih3aW5k
b3cuZ2FsYXh5X2NvbmZpZz9nYWxheHlfY29uZmlnLnJvb3Q6Ii8iKSsiYXBpL2dlbm9tZXMiLHN1
Y2M9CmVzczpmdW5jdGlvbihiKXtmb3Ioa2V5IGluIGIpYS5saXN0X2dlbm9tZXMucHVzaCh7aWQ6
YltrZXldWzFdLHRleHQ6YltrZXldWz0KMF19KTthLmxpc3RfZ2Vub21lcy5zb3J0KGZ1bmN0aW9u
KGEsYil7cmV0dXJuIGEuaWQ+Yi5pZD8xOmEuaWQ8Yi5pZD8tMTowfSl9PQp9KX0scmVuZGVyU2Vs
ZWN0Qm94ZXM6ZnVuY3Rpb24oKXt2YXIgYT0zRHRoaXM7dGhpcy5zZWxlY3RfZ2Vub21lPTNEbmV3
IGUuVmk9CmV3KHtjc3M6ImxpYnJhcnktZ2Vub21lLXNlbGVjdCIsZGF0YTphLmxpc3RfZ2Vub21l
cyxjb250YWluZXI6R2FsYXh5Lm1vZGFsLj0KJGVsLmZpbmQoIiNsaWJyYXJ5X2dlbm9tZV9zZWxl
Y3QiKSx2YWx1ZToiPyJ9KSx0aGlzLnNlbGVjdF9leHRlbnNpb249M0RuZXcgPQplLlZpZXcoe2Nz
czoibGlicmFyeS1leHRlbnNpb24tc2VsZWN0IixkYXRhOmEubGlzdF9leHRlbnNpb25zLGNvbnRh
aW5lcjpHYWw9CmF4eS5tb2RhbC4kZWwuZmluZCgiI2xpYnJhcnlfZXh0ZW5zaW9uX3NlbGVjdCIp
LHZhbHVlOiJhdXRvIn0pfSxpbXBvcnRGaWxlcz0KRnJvbUdhbGF4eUZvbGRlck1vZGFsOmZ1bmN0
aW9uKGEpe3ZhciBiPTNEdGhpcyxjPTNEdGhpcy50ZW1wbGF0ZUJyb3dzZXJNb2RhPQpsKCk7dGhp
cy5tb2RhbD0zREdhbGF4eS5tb2RhbCx0aGlzLm1vZGFsLnNob3coe2Nsb3NpbmdfZXZlbnRzOiEw
LHRpdGxlOiJQbGU9CmFzZSBzZWxlY3QgZm9sZGVycyBvciBmaWxlcyIsYm9keTpjKHt9KSxidXR0
b25zOntJbXBvcnQ6ZnVuY3Rpb24oKXtiLmltcG9ydD0KRnJvbUpzdHJlZVBhdGgoYixhKX0sQ2xv
c2U6ZnVuY3Rpb24oKXtHYWxheHkubW9kYWwuaGlkZSgpfX0sY2xvc2luZ19jYWxsYmFjPQprOmZ1
bmN0aW9uKCl7R2FsYXh5LmxpYnJhcmllcy5saWJyYXJ5X3JvdXRlci5uYXZpZ2F0ZSgiZm9sZGVy
cy8iK2IuaWQse3RyaWc9CmdlcjohMH0pfX0pLHRoaXMucmVuZGVyU2VsZWN0Qm94ZXMoKSxhLmRp
c2FibGVkX2pzdHJlZV9lbGVtZW50PTNEImZvbGRlcnMiLD0KdGhpcy5yZW5kZXJKc3RyZWUoYSks
JCgiaW5wdXRbdHlwZT0zRHJhZGlvXSIpLmNoYW5nZShmdW5jdGlvbihjKXsianN0cmVlLWRpPQpz
YWJsZS1mb2xkZXJzIj0zRD0zRD0zRGMudGFyZ2V0LnZhbHVlPyhhLmRpc2FibGVkX2pzdHJlZV9l
bGVtZW50PTNEImZvbGRlcnM9CiIsYi5yZW5kZXJKc3RyZWUoYSksJCgiLmpzdHJlZS1mb2xkZXJz
LW1lc3NhZ2UiKS5oaWRlKCksJCgiLmpzdHJlZS1wcmVzZXJ2ZT0KLXN0cnVjdHVyZSIpLmhpZGUo
KSwkKCIuanN0cmVlLWxpbmstZmlsZXMiKS5oaWRlKCksJCgiLmpzdHJlZS1maWxlcy1tZXNzYWdl
PQoiKS5zaG93KCkpOiJqc3RyZWUtZGlzYWJsZS1maWxlcyI9M0Q9M0Q9M0RjLnRhcmdldC52YWx1
ZSYmKCQoIi5qc3RyZWUtZmlsZXM9Ci1tZXNzYWdlIikuaGlkZSgpLCQoIi5qc3RyZWUtZm9sZGVy
cy1tZXNzYWdlIikuc2hvdygpLCQoIi5qc3RyZWUtbGluay1maWxlcz0KIikuc2hvdygpLCQoIi5q
c3RyZWUtcHJlc2VydmUtc3RydWN0dXJlIikuc2hvdygpLGEuZGlzYWJsZWRfanN0cmVlX2VsZW1l
bnQ9Cj0zRCJmaWxlcyIsYi5yZW5kZXJKc3RyZWUoYSkpfSl9LHJlbmRlckpzdHJlZTpmdW5jdGlv
bihhKXt0aGlzLm9wdGlvbnM9M0RfLj0KZXh0ZW5kKHRoaXMub3B0aW9ucyxhKTt2YXIgYj0zRGEu
c291cmNlfHwidXNlcmRpciIsZT0zRHRoaXMub3B0aW9ucy5kaXNhYmxlPQpkX2pzdHJlZV9lbGVt
ZW50O3RoaXMuanN0cmVlPTNEbmV3IGQuSnN0cmVlLHRoaXMuanN0cmVlLnVybD0zRHRoaXMuanN0
cmVlLnU9CnJsUm9vdCsiP3RhcmdldD0zRCIrYisiJmZvcm1hdD0zRGpzdHJlZSZkaXNhYmxlPTNE
IitlLHRoaXMuanN0cmVlLmZldGNoKHtzdT0KY2Nlc3M6ZnVuY3Rpb24oYSl7ZGVmaW5lKCJqcXVl
cnkiLGZ1bmN0aW9uKCl7cmV0dXJuIGpRdWVyeX0pLHJlcXVpcmUoWyJsaWJzPQovanF1ZXJ5L2pz
dHJlZSJdLGZ1bmN0aW9uKCl7JCgiI2pzdHJlZV9icm93c2VyIikuanN0cmVlKCJkZXN0cm95Iiks
JCgiI2pzdHI9CmVlX2Jyb3dzZXIiKS5qc3RyZWUoe2NvcmU6e2RhdGE6YX0scGx1Z2luczpbInR5
cGVzIiwiY2hlY2tib3giXSx0eXBlczp7Zm9sZD0KZXI6e2ljb246ImpzdHJlZS1mb2xkZXIifSxm
aWxlOntpY29uOiJqc3RyZWUtZmlsZSJ9fSxjaGVja2JveDp7dGhyZWVfc3RhdGU6PQohMX19KX0p
fSxlcnJvcjpmdW5jdGlvbihhLGIpe2MuZXJyb3IoInVuZGVmaW5lZCIhPTNEdHlwZW9mIGIucmVz
cG9uc2VKU09OP2I9Ci5yZXNwb25zZUpTT04uZXJyX21zZzoiQW4gZXJyb3Igb2N1cnJlZC4iKX19
KX0saW1wb3J0RnJvbVBhdGhzQ2xpY2tlZDpmdW5jdD0KaW9uKCl7dmFyIGE9M0R0aGlzLm1vZGFs
LiRlbC5maW5kKCIucHJlc2VydmUtY2hlY2tib3giKS5pcygiOmNoZWNrZWQiKSxiPTNEPQp0aGlz
Lm1vZGFsLiRlbC5maW5kKCIubGluay1jaGVja2JveCIpLmlzKCI6Y2hlY2tlZCIpLGQ9M0R0aGlz
LnNlbGVjdF9leHRlbnM9Cmlvbi52YWx1ZSgpLGU9M0R0aGlzLnNlbGVjdF9nZW5vbWUudmFsdWUo
KSxmPTNEJCgidGV4dGFyZWEjaW1wb3J0X3BhdGhzIikudj0KYWwoKSxnPTNEW107aWYoZil7dGhp
cy5tb2RhbC5kaXNhYmxlQnV0dG9uKCJJbXBvcnQiKSxmPTNEZi5zcGxpdCgiXG4iKTtmb3IoPQp2
YXIgaD0zRGYubGVuZ3RoLTE7aD49M0QwO2gtLSl0cmltbWVkPTNEZltoXS50cmltKCksMCE9M0Q9
M0R0cmltbWVkLmxlbmd0aCY9CiZnLnB1c2godHJpbW1lZCk7dGhpcy5pbml0Q2hhaW5DYWxsQ29u
dHJvbCh7bGVuZ3RoOmcubGVuZ3RoLGFjdGlvbjoiYWRkaW5nXz0KZGF0YXNldHMifSksdGhpcy5j
aGFpbkNhbGxJbXBvcnRpbmdGb2xkZXJzKHtwYXRoczpnLHByZXNlcnZlX2RpcnM6YSxsaW5rX2Rh
PQp0YTpiLHNvdXJjZToiYWRtaW5fcGF0aCIsZmlsZV90eXBlOmQsZGJrZXk6ZX0pfWVsc2UgYy5p
bmZvKCJQbGVhc2UgZW50ZXIgYSA9CnBhdGggcmVsYXRpdmUgdG8gR2FsYXh5IHJvb3QuIil9LGlu
aXRDaGFpbkNhbGxDb250cm9sOmZ1bmN0aW9uKGEpe3ZhciBiO3N3aT0KdGNoKGEuYWN0aW9uKXtj
YXNlImFkZGluZ19kYXRhc2V0cyI6Yj0zRHRoaXMudGVtcGxhdGVBZGRpbmdEYXRhc2V0c1Byb2dy
ZXNzPQpCYXIoKSx0aGlzLm1vZGFsLiRlbC5maW5kKCIubW9kYWwtYm9keSIpLmh0bWwoYih7Zm9s
ZGVyX25hbWU6dGhpcy5vcHRpb25zLmY9Cm9sZGVyX25hbWV9KSk7YnJlYWs7Y2FzZSJkZWxldGlu
Z19kYXRhc2V0cyI6Yj0zRHRoaXMudGVtcGxhdGVEZWxldGluZ0RhdGFzZT0KdHNQcm9ncmVzc0Jh
cigpLHRoaXMubW9kYWwuJGVsLmZpbmQoIi5tb2RhbC1ib2R5IikuaHRtbChiKCkpO2JyZWFrO2Nh
c2UidG9fPQpoaXN0b3J5IjpiPTNEdGhpcy50ZW1wbGF0ZUltcG9ydEludG9IaXN0b3J5UHJvZ3Jl
c3NCYXIoKSx0aGlzLm1vZGFsLiRlbC5maW49CmQoIi5tb2RhbC1ib2R5IikuaHRtbChiKHtoaXN0
b3J5X25hbWU6YS5oaXN0b3J5X25hbWV9KSk7YnJlYWs7ZGVmYXVsdDpjb25zbz0KbGUuZXJyb3Io
Ildyb25nIGFjdGlvbiBzcGVjaWZpZWQuIil9dGhpcy5wcm9ncmVzcz0zRDAsdGhpcy5wcm9ncmVz
c1N0ZXA9M0QxPQowMC9hLmxlbmd0aCx0aGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLnRv
dGFsX251bWJlcj0zRGEubGVuZ3RoLHRoaXMub3A9CnRpb25zLmNoYWluX2NhbGxfY29udHJvbC5m
YWlsZWRfbnVtYmVyPTNEMH0saW1wb3J0RnJvbUpzdHJlZVBhdGg6ZnVuY3Rpb24oYT0KLGIpe3Zh
ciBkPTNEJCgiI2pzdHJlZV9icm93c2VyIikuanN0cmVlKCkuZ2V0X3NlbGVjdGVkKCEwKSxlPTNE
dGhpcy5tb2RhbC4kPQplbC5maW5kKCIucHJlc2VydmUtY2hlY2tib3giKS5pcygiOmNoZWNrZWQi
KSxmPTNEdGhpcy5tb2RhbC4kZWwuZmluZCgiLmxpbms9Ci1jaGVja2JveCIpLmlzKCI6Y2hlY2tl
ZCIpLGc9M0R0aGlzLnNlbGVjdF9leHRlbnNpb24udmFsdWUoKSxoPTNEdGhpcy5zZWxlYz0KdF9n
ZW5vbWUudmFsdWUoKSxpPTNEZFswXS50eXBlLGo9M0RbXTtpZihkLmxlbmd0aDwxKWMuaW5mbygi
UGxlYXNlIHNlbGVjdCBzPQpvbWUgaXRlbXMgZmlyc3QuIik7ZWxzZXt0aGlzLm1vZGFsLmRpc2Fi
bGVCdXR0b24oIkltcG9ydCIpO2Zvcih2YXIgaz0zRGQubGU9Cm5ndGgtMTtrPj0zRDA7ay0tKXZv
aWQgMCE9M0Q9M0RkW2tdLmxpX2F0dHIuZnVsbF9wYXRoJiZqLnB1c2goZFtrXS5saV9hdHRyLj0K
ZnVsbF9wYXRoKTtpZih0aGlzLmluaXRDaGFpbkNhbGxDb250cm9sKHtsZW5ndGg6ai5sZW5ndGgs
YWN0aW9uOiJhZGRpbmdfZGF0PQphc2V0cyJ9KSwiZm9sZGVyIj0zRD0zRD0zRGkpe3ZhciBsPTNE
Yi5zb3VyY2UrIl9mb2xkZXIiO3RoaXMuY2hhaW5DYWxsSW1wb3I9CnRpbmdGb2xkZXJzKHtwYXRo
czpqLHByZXNlcnZlX2RpcnM6ZSxsaW5rX2RhdGE6Zixzb3VyY2U6bCxmaWxlX3R5cGU6ZyxkYmtl
eT0KOmh9KX1lbHNlIGlmKCJmaWxlIj0zRD0zRD0zRGkpe3ZhciBsPTNEYi5zb3VyY2UrIl9maWxl
Ijt0aGlzLmNoYWluQ2FsbEltcG9yPQp0aW5nVXNlcmRpckZpbGVzKHtwYXRoczpqLGZpbGVfdHlw
ZTpnLGRia2V5Omgsc291cmNlOmx9KX19fSxmZXRjaEFuZERpc3BsYXk9Ckhpc3RvcnlDb250ZW50
czpmdW5jdGlvbihhKXt2YXIgYj0zRG5ldyBkLkhpc3RvcnlDb250ZW50cyh7aWQ6YX0pLGU9M0R0
aGlzOz0KYi5mZXRjaCh7c3VjY2VzczpmdW5jdGlvbihiKXt2YXIgYz0zRGUudGVtcGxhdGVIaXN0
b3J5Q29udGVudHMoKTtlLmhpc3RvcmllPQpzLmdldChhKS5zZXQoe2NvbnRlbnRzOmJ9KSxlLm1v
ZGFsLiRlbC5maW5kKCIjc2VsZWN0ZWRfaGlzdG9yeV9jb250ZW50IikuaHQ9Cm1sKGMoe2hpc3Rv
cnlfY29udGVudHM6Yi5tb2RlbHMucmV2ZXJzZSgpfSkpfSxlcnJvcjpmdW5jdGlvbihhLGIpe2Mu
ZXJyb3IoIj0KdW5kZWZpbmVkIiE9M0R0eXBlb2YgYi5yZXNwb25zZUpTT04/Yi5yZXNwb25zZUpT
T04uZXJyX21zZzoiQW4gZXJyb3Igb2N1cnJlPQpkLiIpfX0pfSxhZGRBbGxEYXRhc2V0c0Zyb21I
aXN0b3J5OmZ1bmN0aW9uKCl7dmFyIGE9M0R0aGlzLm1vZGFsLiRlbC5maW5kKCI9CiNzZWxlY3Rl
ZF9oaXN0b3J5X2NvbnRlbnQiKS5maW5kKCI6Y2hlY2tlZCIpLGI9M0RbXSxlPTNEW107aWYoYS5s
ZW5ndGg8MSljLj0KaW5mbygiWW91IG11c3Qgc2VsZWN0IHNvbWUgZGF0YXNldHMgZmlyc3QuIik7
ZWxzZXt0aGlzLm1vZGFsLmRpc2FibGVCdXR0b24oPQoiQWRkIiksYS5lYWNoKGZ1bmN0aW9uKCl7
dmFyIGE9M0QkKHRoaXMucGFyZW50RWxlbWVudCkuZGF0YSgiaWQiKTthJiZiLnB1c2g9CihhKX0p
O2Zvcih2YXIgZj0zRGIubGVuZ3RoLTE7Zj49M0QwO2YtLSl7aGlzdG9yeV9kYXRhc2V0X2lkPTNE
YltmXTt2YXIgZz0zRD0KbmV3IGQuSXRlbTtnLnVybD0zRCh3aW5kb3cuZ2FsYXh5X2NvbmZpZz9n
YWxheHlfY29uZmlnLnJvb3Q6Ii8iKSsiYXBpL2ZvbGRlPQpycy8iK3RoaXMub3B0aW9ucy5pZCsi
L2NvbnRlbnRzIixnLnNldCh7ZnJvbV9oZGFfaWQ6aGlzdG9yeV9kYXRhc2V0X2lkfSksZS49CnB1
c2goZyl9dGhpcy5pbml0Q2hhaW5DYWxsQ29udHJvbCh7bGVuZ3RoOmUubGVuZ3RoLGFjdGlvbjoi
YWRkaW5nX2RhdGFzZXRzIj0KfSksdGhpcy5jaGFpbkNhbGxBZGRpbmdIZGFzKGUpfX0sY2hhaW5D
YWxsSW1wb3J0aW5nSW50b0hpc3Rvcnk6ZnVuY3Rpb24oYSxiPQope3ZhciBkPTNEdGhpcyxlPTNE
YS5wb3AoKTtpZigidW5kZWZpbmVkIj0zRD0zRHR5cGVvZiBlKXJldHVybiAwPTNEPTNEPTNEdGg9
CmlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLmZhaWxlZF9udW1iZXI/Yy5zdWNjZXNzKCJT
ZWxlY3RlZCBkYXRhc2V0cyBpbT0KcG9ydGVkIGludG8gaGlzdG9yeS4gQ2xpY2sgdGhpcyB0byBz
dGFydCBhbmFseXNpbmcgaXQuIiwiIix7b25jbGljazpmdW5jdGlvPQpuKCl7d2luZG93LmxvY2F0
aW9uPTNEIi8ifX0pOnRoaXMub3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wuZmFpbGVkX251bWJl
cj0KPTNEPTNEPTNEdGhpcy5vcHRpb25zLmNoYWluX2NhbGxfY29udHJvbC50b3RhbF9udW1iZXI/
Yy5lcnJvcigiVGhlcmUgd2FzIGFuPQogZXJyb3IgYW5kIG5vIGRhdGFzZXRzIHdlcmUgaW1wb3J0
ZWQgaW50byBoaXN0b3J5LiIpOnRoaXMub3B0aW9ucy5jaGFpbl9jYWw9CmxfY29udHJvbC5mYWls
ZWRfbnVtYmVyPHRoaXMub3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wudG90YWxfbnVtYmVyJiZj
Lndhcj0KbmluZygiU29tZSBvZiB0aGUgZGF0YXNldHMgY291bGQgbm90IGJlIGltcG9ydGVkIGlu
dG8gaGlzdG9yeS4gQ2xpY2sgdGhpcyB0PQpvIHNlZSB3aGF0IHdhcyBpbXBvcnRlZC4iLCIiLHtv
bmNsaWNrOmZ1bmN0aW9uKCl7d2luZG93LmxvY2F0aW9uPTNEIi8ifX0pLEc9CmFsYXh5Lm1vZGFs
LmhpZGUoKSwhMDt2YXIgZj0zRCQud2hlbihlLnNhdmUoe2NvbnRlbnQ6ZS5jb250ZW50LHNvdXJj
ZTplLnNvdT0KcmNlfSkpO2YuZG9uZShmdW5jdGlvbigpe2QudXBkYXRlUHJvZ3Jlc3MoKSxkLmNo
YWluQ2FsbEltcG9ydGluZ0ludG9IaXN0b3J5PQooYSxiKX0pLmZhaWwoZnVuY3Rpb24oKXtkLm9w
dGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLmZhaWxlZF9udW1iZXIrPTNEMSxkLnU9CnBkYXRlUHJv
Z3Jlc3MoKSxkLmNoYWluQ2FsbEltcG9ydGluZ0ludG9IaXN0b3J5KGEsYil9KX0sY2hhaW5DYWxs
SW1wb3J0aW5nVT0Kc2VyZGlyRmlsZXM6ZnVuY3Rpb24oYSl7dmFyIGI9M0R0aGlzLGQ9M0RhLnBh
dGhzLnBvcCgpO2lmKCJ1bmRlZmluZWQiPTNEPTNEPQp0eXBlb2YgZClyZXR1cm4gMD0zRD0zRD0z
RHRoaXMub3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wuZmFpbGVkX251bWJlcj8oYy49CnN1Y2Nl
c3MoIlNlbGVjdGVkIGZpbGVzIGltcG9ydGVkIGludG8gdGhlIGN1cnJlbnQgZm9sZGVyIiksR2Fs
YXh5Lm1vZGFsLmhpZD0KZSgpKTpjLmVycm9yKCJBbiBlcnJvciBvY2N1cmVkLiIpLCEwO3ZhciBl
PTNEJC53aGVuKCQucG9zdCgod2luZG93LmdhbGF4eV9jPQpvbmZpZz9nYWxheHlfY29uZmlnLnJv
b3Q6Ii8iKSsiYXBpL2xpYnJhcmllcy9kYXRhc2V0cz9lbmNvZGVkX2ZvbGRlcl9pZD0zRCI9Citi
LmlkKyImc291cmNlPTNEIithLnNvdXJjZSsiJnBhdGg9M0QiK2QrIiZmaWxlX3R5cGU9M0QiK2Eu
ZmlsZV90eXBlKyImZGJrZT0KeT0zRCIrYS5kYmtleSkpO2UuZG9uZShmdW5jdGlvbigpe2IudXBk
YXRlUHJvZ3Jlc3MoKSxiLmNoYWluQ2FsbEltcG9ydGluZ1VzPQplcmRpckZpbGVzKGEpfSkuZmFp
bChmdW5jdGlvbigpe2Iub3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wuZmFpbGVkX251bWJlcis9
Cj0zRDEsYi51cGRhdGVQcm9ncmVzcygpLGIuY2hhaW5DYWxsSW1wb3J0aW5nVXNlcmRpckZpbGVz
KGEpfSl9LGNoYWluQ2FsbEltcD0Kb3J0aW5nRm9sZGVyczpmdW5jdGlvbihhKXt2YXIgYj0zRHRo
aXMsZD0zRGEucGF0aHMucG9wKCk7aWYoInVuZGVmaW5lZCI9M0Q9Cj0zRHR5cGVvZiBkKXJldHVy
biAwPTNEPTNEPTNEdGhpcy5vcHRpb25zLmNoYWluX2NhbGxfY29udHJvbC5mYWlsZWRfbnVtYmVy
Pz0KKGMuc3VjY2VzcygiU2VsZWN0ZWQgZm9sZGVycyBhbmQgdGhlaXIgY29udGVudHMgaW1wb3J0
ZWQgaW50byB0aGUgY3VycmVudCBmPQpvbGRlci4iKSxHYWxheHkubW9kYWwuaGlkZSgpKTpjLmVy
cm9yKCJBbiBlcnJvciBvY2N1cmVkLiIpLCEwO3ZhciBlPTNEJC53aGU9Cm4oJC5wb3N0KCh3aW5k
b3cuZ2FsYXh5X2NvbmZpZz9nYWxheHlfY29uZmlnLnJvb3Q6Ii8iKSsiYXBpL2xpYnJhcmllcy9k
YXRhcz0KZXRzP2VuY29kZWRfZm9sZGVyX2lkPTNEIitiLmlkKyImc291cmNlPTNEIithLnNvdXJj
ZSsiJnBhdGg9M0QiK2QrIiZwcmVzZXJ2PQplX2RpcnM9M0QiK2EucHJlc2VydmVfZGlycysiJmxp
bmtfZGF0YT0zRCIrYS5saW5rX2RhdGErIiZmaWxlX3R5cGU9M0QiK2EuZmk9CmxlX3R5cGUrIiZk
YmtleT0zRCIrYS5kYmtleSkpO2UuZG9uZShmdW5jdGlvbigpe2IudXBkYXRlUHJvZ3Jlc3MoKSxi
LmNoYWluQz0KYWxsSW1wb3J0aW5nRm9sZGVycyhhKX0pLmZhaWwoZnVuY3Rpb24oKXtiLm9wdGlv
bnMuY2hhaW5fY2FsbF9jb250cm9sLmZhaWxlPQpkX251bWJlcis9M0QxLGIudXBkYXRlUHJvZ3Jl
c3MoKSxiLmNoYWluQ2FsbEltcG9ydGluZ0ZvbGRlcnMoYSl9KX0sY2hhaW5DYWw9CmxBZGRpbmdI
ZGFzOmZ1bmN0aW9uKGEpe3ZhciBiPTNEdGhpczt0aGlzLmFkZGVkX2hkYXM9M0RuZXcgZC5Gb2xk
ZXI7dmFyIGU9Cj0zRGEucG9wKCk7aWYoInVuZGVmaW5lZCI9M0Q9M0R0eXBlb2YgZSlyZXR1cm4g
MD0zRD0zRD0zRHRoaXMub3B0aW9ucy5jaGFpbj0KX2NhbGxfY29udHJvbC5mYWlsZWRfbnVtYmVy
P2Muc3VjY2VzcygiU2VsZWN0ZWQgZGF0YXNldHMgZnJvbSBoaXN0b3J5IGFkZGVkPQogdG8gdGhl
IGZvbGRlciIpOnRoaXMub3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wuZmFpbGVkX251bWJlcj0z
RD0zRD0zRHRoaXM9Ci5vcHRpb25zLmNoYWluX2NhbGxfY29udHJvbC50b3RhbF9udW1iZXI/Yy5l
cnJvcigiVGhlcmUgd2FzIGFuIGVycm9yIGFuZCBubz0KIGRhdGFzZXRzIHdlcmUgYWRkZWQgdG8g
dGhlIGZvbGRlci4iKTp0aGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLmZhaWxlPQpkX251
bWJlcjx0aGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLnRvdGFsX251bWJlciYmYy53YXJu
aW5nKCJTb21lIG9mIHQ9CmhlIGRhdGFzZXRzIGNvdWxkIG5vdCBiZSBhZGRlZCB0byB0aGUgZm9s
ZGVyIiksR2FsYXh5Lm1vZGFsLmhpZGUoKSx0aGlzLmFkZD0KZWRfaGRhczt2YXIgZj0zRCQud2hl
bihlLnNhdmUoe2Zyb21faGRhX2lkOmUuZ2V0KCJmcm9tX2hkYV9pZCIpfSkpO2YuZG9uZShmPQp1
bmN0aW9uKGMpe0dhbGF4eS5saWJyYXJpZXMuZm9sZGVyTGlzdFZpZXcuY29sbGVjdGlvbi5hZGQo
YyksYi51cGRhdGVQcm9ncmU9CnNzKCksYi5jaGFpbkNhbGxBZGRpbmdIZGFzKGEpfSkuZmFpbChm
dW5jdGlvbigpe2Iub3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRybz0KbC5mYWlsZWRfbnVtYmVyKz0z
RDEsYi51cGRhdGVQcm9ncmVzcygpLGIuY2hhaW5DYWxsQWRkaW5nSGRhcyhhKX0pfSxjaGFpbkNh
PQpsbERlbGV0aW5nSXRlbXM6ZnVuY3Rpb24oYSl7dmFyIGI9M0R0aGlzO3RoaXMuZGVsZXRlZF9p
dGVtcz0zRG5ldyBkLkZvbGRlcjs9CnZhciBlPTNEYS5wb3AoKTtpZigidW5kZWZpbmVkIj0zRD0z
RHR5cGVvZiBlKXJldHVybiAwPTNEPTNEPTNEdGhpcy5vcHRpb25zLj0KY2hhaW5fY2FsbF9jb250
cm9sLmZhaWxlZF9udW1iZXI/Yy5zdWNjZXNzKCJTZWxlY3RlZCBpdGVtcyB3ZXJlIGRlbGV0ZWQu
Iik6PQp0aGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLmZhaWxlZF9udW1iZXI9M0Q9M0Q9
M0R0aGlzLm9wdGlvbnMuY2hhaW5fY2E9CmxsX2NvbnRyb2wudG90YWxfbnVtYmVyP2MuZXJyb3Io
IlRoZXJlIHdhcyBhbiBlcnJvciBhbmQgbm8gaXRlbXMgd2VyZSBkZWxldD0KZWQuIFBsZWFzZSBt
YWtlIHN1cmUgeW91IGhhdmUgc3VmZmljaWVudCBwZXJtaXNzaW9ucy4iKTp0aGlzLm9wdGlvbnMu
Y2hhaW5fPQpjYWxsX2NvbnRyb2wuZmFpbGVkX251bWJlcjx0aGlzLm9wdGlvbnMuY2hhaW5fY2Fs
bF9jb250cm9sLnRvdGFsX251bWJlciYmYy49Cndhcm5pbmcoIlNvbWUgb2YgdGhlIGl0ZW1zIGNv
dWxkIG5vdCBiZSBkZWxldGVkLiBQbGVhc2UgbWFrZSBzdXJlIHlvdSBoYXZlID0Kc3VmZmljaWVu
dCBwZXJtaXNzaW9ucy4iKSxHYWxheHkubW9kYWwuaGlkZSgpLHRoaXMuZGVsZXRlZF9pdGVtczt2
YXIgZj0zRCQuPQp3aGVuKGUuZGVzdHJveSgpKTtmLmRvbmUoZnVuY3Rpb24oYyl7aWYoR2FsYXh5
LmxpYnJhcmllcy5mb2xkZXJMaXN0Vmlldy5jb2w9CmxlY3Rpb24ucmVtb3ZlKGUuaWQpLGIudXBk
YXRlUHJvZ3Jlc3MoKSxHYWxheHkubGlicmFyaWVzLmZvbGRlckxpc3RWaWV3Lm9wdD0KaW9ucy5p
bmNsdWRlX2RlbGV0ZWQpe3ZhciBmPTNEbnVsbDsiZm9sZGVyIj0zRD0zRD0zRGMudHlwZXx8Ikxp
YnJhcnlGb2xkZXIiPQo9M0Q9M0Q9M0RjLm1vZGVsX2NsYXNzP2Y9M0RuZXcgZC5Gb2xkZXJBc01v
ZGVsKGMpOiJmaWxlIj0zRD0zRD0zRGMudHlwZXx8Ikw9CmlicmFyeURhdGFzZXQiPTNEPTNEPTNE
Yy5tb2RlbF9jbGFzcz9mPTNEbmV3IGQuSXRlbShjKTooY29uc29sZS5lcnJvcigiVW5rbj0Kb3du
IGxpYnJhcnkgaXRlbSB0eXBlIGZvdW5kLiIpLGNvbnNvbGUuZXJyb3IoYy50eXBlfHxjLm1vZGVs
X2NsYXNzKSksR2FsYXh5PQoubGlicmFyaWVzLmZvbGRlckxpc3RWaWV3LmNvbGxlY3Rpb24uYWRk
KGYpfWIuY2hhaW5DYWxsRGVsZXRpbmdJdGVtcyhhKX0pLmY9CmFpbChmdW5jdGlvbigpe2Iub3B0
aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wuZmFpbGVkX251bWJlcis9M0QxLGIudXBkYXRlUHJvZz0K
cmVzcygpLGIuY2hhaW5DYWxsRGVsZXRpbmdJdGVtcyhhKX0pfSxjaGVja0luY2x1ZGVEZWxldGVk
OmZ1bmN0aW9uKGEpe0dhbGF4PQp5LmxpYnJhcmllcy5mb2xkZXJMaXN0Vmlldy5mZXRjaEZvbGRl
cihhLnRhcmdldC5jaGVja2VkP3tpbmNsdWRlX2RlbGV0ZWQ6ITA9Cn06e2luY2x1ZGVfZGVsZXRl
ZDohMX0pfSxkZWxldGVTZWxlY3RlZERhdGFzZXRzOmZ1bmN0aW9uKCl7dmFyIGE9M0QkKCIjZm9s
ZD0KZXJfdGFibGUiKS5maW5kKCI6Y2hlY2tlZCIpO2lmKDA9M0Q9M0Q9M0RhLmxlbmd0aCljLmlu
Zm8oIllvdSBtdXN0IHNlbGVjdCBhPQp0IGxlYXN0IG9uZSBkYXRhc2V0IGZvciBkZWxldGlvbi4i
KTtlbHNle3ZhciBiPTNEdGhpcy50ZW1wbGF0ZURlbGV0aW5nRGF0YXM9CmV0c1Byb2dyZXNzQmFy
KCk7dGhpcy5tb2RhbD0zREdhbGF4eS5tb2RhbCx0aGlzLm1vZGFsLnNob3coe2Nsb3NpbmdfZXZl
bnRzOj0KITAsdGl0bGU6IkRlbGV0aW5nIHNlbGVjdGVkIGRhdGFzZXRzIixib2R5OmIoe30pLGJ1
dHRvbnM6e0Nsb3NlOmZ1bmN0aW9uKCl7PQpHYWxheHkubW9kYWwuaGlkZSgpfX19KSx0aGlzLm9w
dGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLnRvdGFsX251bWJlcj0zRDAsdGg9CmlzLm9wdGlvbnMu
Y2hhaW5fY2FsbF9jb250cm9sLmZhaWxlZF9udW1iZXI9M0QwO3ZhciBlPTNEW10sZj0zRFtdO2Eu
ZWFjaChmdT0KbmN0aW9uKCl7IiIhPTNEPTNEdGhpcy5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1l
bnQuaWQmJigiRiI9M0Q9M0R0aGlzLnBhcmVuPQp0RWxlbWVudC5wYXJlbnRFbGVtZW50LmlkLnN1
YnN0cmluZygwLDEpP2YucHVzaCh0aGlzLnBhcmVudEVsZW1lbnQucGFyZW50RWw9CmVtZW50Lmlk
KTplLnB1c2godGhpcy5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuaWQpKX0pO3ZhciBnPTNE
ZS5sZW5ndGgrZj0KLmxlbmd0aDt0aGlzLnByb2dyZXNzU3RlcD0zRDEwMC9nLHRoaXMucHJvZ3Jl
c3M9M0QwO2Zvcih2YXIgaD0zRFtdLGk9M0RlLmxlPQpuZ3RoLTE7aT49M0QwO2ktLSl7dmFyIGo9
M0RuZXcgZC5JdGVtKHtpZDplW2ldfSk7aC5wdXNoKGopfWZvcih2YXIgaT0zRGYubGU9Cm5ndGgt
MTtpPj0zRDA7aS0tKXt2YXIgaz0zRG5ldyBkLkZvbGRlckFzTW9kZWwoe2lkOmZbaV19KTtoLnB1
c2goayl9dGhpcy5vcD0KdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLnRvdGFsX251bWJlcj0zRGcu
bGVuZ3RoLHRoaXMuY2hhaW5DYWxsRGVsZXRpbmdJdGVtPQpzKGgpfX0sc2hvd0xpYkluZm86ZnVu
Y3Rpb24oKXt2YXIgYT0zREdhbGF4eS5saWJyYXJpZXMuZm9sZGVyTGlzdFZpZXcuZm9sZGU9CnJD
b250YWluZXIuYXR0cmlidXRlcy5tZXRhZGF0YS5wYXJlbnRfbGlicmFyeV9pZCxiPTNEbnVsbCxl
PTNEdGhpcztudWxsIT0zRD0KPTNER2FsYXh5LmxpYnJhcmllcy5saWJyYXJ5TGlzdFZpZXc/KGI9
M0RHYWxheHkubGlicmFyaWVzLmxpYnJhcnlMaXN0Vmlldy5jPQpvbGxlY3Rpb24uZ2V0KGEpLHRo
aXMuc2hvd0xpYkluZm9Nb2RhbChiKSk6KGI9M0RuZXcgZC5MaWJyYXJ5KHtpZDphfSksYi5mZXQ9
CmNoKHtzdWNjZXNzOmZ1bmN0aW9uKCl7ZS5zaG93TGliSW5mb01vZGFsKGIpfSxlcnJvcjpmdW5j
dGlvbihhLGIpe2MuZXJyb3IoIj0KdW5kZWZpbmVkIiE9M0R0eXBlb2YgYi5yZXNwb25zZUpTT04/
Yi5yZXNwb25zZUpTT04uZXJyX21zZzoiQW4gZXJyb3Igb2N1cnJlPQpkLiIpfX0pKX0sc2hvd0xp
YkluZm9Nb2RhbDpmdW5jdGlvbihhKXt2YXIgYj0zRHRoaXMudGVtcGxhdGVMaWJJbmZvSW5Nb2Rh
bCg9Cik7dGhpcy5tb2RhbD0zREdhbGF4eS5tb2RhbCx0aGlzLm1vZGFsLnNob3coe2Nsb3Npbmdf
ZXZlbnRzOiEwLHRpdGxlOiJMaWJyYT0KcnkgSW5mb3JtYXRpb24iLGJvZHk6Yih7bGlicmFyeTph
fSksYnV0dG9uczp7Q2xvc2U6ZnVuY3Rpb24oKXtHYWxheHkubW9kYWwuPQpoaWRlKCl9fX0pfSxz
aG93SW1wb3J0TW9kYWw6ZnVuY3Rpb24oYSl7c3dpdGNoKGEuc291cmNlKXtjYXNlImhpc3Rvcnki
OnRoaXM9Ci5hZGRGaWxlc0Zyb21IaXN0b3J5TW9kYWwoKTticmVhaztjYXNlImltcG9ydGRpciI6
dGhpcy5pbXBvcnRGaWxlc0Zyb21HYWxheD0KeUZvbGRlck1vZGFsKHtzb3VyY2U6ImltcG9ydGRp
ciJ9KTticmVhaztjYXNlInBhdGgiOnRoaXMuaW1wb3J0RmlsZXNGcm9tUGF0PQpoTW9kYWwoKTti
cmVhaztjYXNlInVzZXJkaXIiOnRoaXMuaW1wb3J0RmlsZXNGcm9tR2FsYXh5Rm9sZGVyTW9kYWwo
e3NvdXJjZTo9CiJ1c2VyZGlyIn0pO2JyZWFrO2RlZmF1bHQ6R2FsYXh5LmxpYnJhcmllcy5saWJy
YXJ5X3JvdXRlci5iYWNrKCksYy5lcnJvcigiST0KbnZhbGlkIGltcG9ydCBzb3VyY2UuIil9fSxz
aG93UGFnZVNpemVQcm9tcHQ6ZnVuY3Rpb24oKXt2YXIgYT0zRHByb21wdCgiSG93PQogbWFueSBp
dGVtcyBwZXIgcGFnZSBkbyB5b3Ugd2FudCB0byBzZWU/IixHYWxheHkubGlicmFyaWVzLnByZWZl
cmVuY2VzLmdldCg9CiJmb2xkZXJfcGFnZV9zaXplIikpO251bGwhPTNEYSYmYT0zRD0zRHBhcnNl
SW50KGEpJiYoR2FsYXh5LmxpYnJhcmllcy5wcmVmZT0KcmVuY2VzLnNldCh7Zm9sZGVyX3BhZ2Vf
c2l6ZTpwYXJzZUludChhKX0pLEdhbGF4eS5saWJyYXJpZXMuZm9sZGVyTGlzdFZpZXcuPQpyZW5k
ZXIoe2lkOnRoaXMub3B0aW9ucy5pZCxzaG93X3BhZ2U6MX0pKX0sdGVtcGxhdGVUb29sQmFyOmZ1
bmN0aW9uKCl7cmV0dXI9Cm4gdG1wbF9hcnJheT0zRFtdLHRtcGxfYXJyYXkucHVzaCgnPGRpdiBj
bGFzcz0zRCJsaWJyYXJ5X3N0eWxlX2NvbnRhaW5lciI+Jz0KKSx0bXBsX2FycmF5LnB1c2goJyA8
ZGl2IGlkPTNEImxpYnJhcnlfdG9vbGJhciI+JyksdG1wbF9hcnJheS5wdXNoKCc8Zm9ybSBjPQps
YXNzPTNEImZvcm0taW5saW5lIiByb2xlPTNEImZvcm0iPicpLHRtcGxfYXJyYXkucHVzaCgiICAg
PHNwYW4+PHN0cm9uZz5EQVQ9CkEgTElCUkFSSUVTPC9zdHJvbmc+PC9zcGFuPiIpLHRtcGxfYXJy
YXkucHVzaCgnICAgICAgICAgIDxzcGFuIGlkPTNEImZvbGRlcj0KX3BhZ2luYXRvciIgY2xhc3M9
M0QibGlicmFyeS1wYWdpbmF0b3IiPicpLHRtcGxfYXJyYXkucHVzaCgiICAgICAgICAgIDwvc3Bh
PQpuPiIpLHRtcGxfYXJyYXkucHVzaCgnPGRpdiBjbGFzcz0zRCJjaGVja2JveCB0b29sYmFyLWl0
ZW0gbG9nZ2VkLWRhdGFzZXQtbWE9Cm5pcHVsYXRpb24iIHN0eWxlPTNEImhlaWdodDogMjBweDsg
ZGlzcGxheTpub25lOyI+JyksdG1wbF9hcnJheS5wdXNoKCI8bGFiZT0KbD4iKSx0bXBsX2FycmF5
LnB1c2goJzxpbnB1dCBpZD0zRCJpbmNsdWRlX2RlbGV0ZWRfZGF0YXNldHNfY2hrIiB0eXBlPTNE
ImNoPQplY2tib3giPiBpbmNsdWRlIGRlbGV0ZWQgPC9pbnB1dD4nKSx0bXBsX2FycmF5LnB1c2go
IjwvbGFiZWw+IiksdG1wbF9hcnJheS49CnB1c2goIjwvZGl2PiIpLHRtcGxfYXJyYXkucHVzaCgn
ICAgPGJ1dHRvbiBzdHlsZT0zRCJkaXNwbGF5Om5vbmU7IiBkYXRhLXRvZz0KZ2xlPTNEInRvb2x0
aXAiIGRhdGEtcGxhY2VtZW50PTNEInRvcCIgdGl0bGU9M0QiQ3JlYXRlIE5ldyBGb2xkZXIiIGlk
PTNEInRvPQpvbGJ0bl9jcmVhdGVfZm9sZGVyIiBjbGFzcz0zRCJidG4gYnRuLWRlZmF1bHQgcHJp
bWFyeS1idXR0b24gYWRkLWxpYnJhcnktaXQ9CmVtcyIgdHlwZT0zRCJidXR0b24iPjxzcGFuIGNs
YXNzPTNEImZhIGZhLXBsdXMiPjwvc3Bhbj48c3BhbiBjbGFzcz0zRCJmYSBmYT0KLWZvbGRlciI+
PC9zcGFuPjwvYnV0dG9uPicpLHRtcGxfYXJyYXkucHVzaCgiPCUgaWYobXV0aXBsZV9hZGRfZGF0
YXNldF9vcHRpPQpvbnMpIHsgJT4iKSx0bXBsX2FycmF5LnB1c2goJyAgIDxkaXYgY2xhc3M9M0Qi
YnRuLWdyb3VwIGFkZC1saWJyYXJ5LWl0ZW1zIiA9CnN0eWxlPTNEImRpc3BsYXk6bm9uZTsiPicp
LHRtcGxfYXJyYXkucHVzaCgnICAgICA8YnV0dG9uIHRpdGxlPTNEIkFkZCBEYXRhcz0KZXRzIHRv
IEN1cnJlbnQgRm9sZGVyIiBpZD0zRCIiIHR5cGU9M0QiYnV0dG9uIiBjbGFzcz0zRCJwcmltYXJ5
LWJ1dHRvbiBkcm9wPQpkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9M0QiZHJvcGRvd24iPicpLHRt
cGxfYXJyYXkucHVzaCgnICAgICA8c3BhbiBjbGFzcz0KPTNEImZhIGZhLXBsdXMiPjwvc3Bhbj48
c3BhbiBjbGFzcz0zRCJmYSBmYS1maWxlIj48L3NwYW4+PHNwYW4gY2xhc3M9M0QiY2FyPQpldCI+
PC9zcGFuPicpLHRtcGxfYXJyYXkucHVzaCgiICAgICA8L2J1dHRvbj4iKSx0bXBsX2FycmF5LnB1
c2goJyAgICAgPHVsIGM9Cmxhc3M9M0QiZHJvcGRvd24tbWVudSIgcm9sZT0zRCJtZW51Ij4nKSx0
bXBsX2FycmF5LnB1c2goJyAgICAgICAgPGxpPjxhIGhyZT0KZj0zRCIjZm9sZGVycy88JT0zRCBp
ZCAlPi9pbXBvcnQvaGlzdG9yeSI+IGZyb20gSGlzdG9yeTwvYT48L2xpPicpLHRtcGxfYXJyPQph
eS5wdXNoKCI8JSBpZihHYWxheHkuY29uZmlnLnVzZXJfbGlicmFyeV9pbXBvcnRfZGlyICE9M0Q9
M0QgbnVsbCkgeyAlPiIpLHQ9Cm1wbF9hcnJheS5wdXNoKCcgICAgICAgIDxsaT48YSBocmVmPTNE
IiNmb2xkZXJzLzwlPTNEIGlkICU+L2ltcG9ydC91c2VyZGlyIj0KPiBmcm9tIFVzZXIgRGlyZWN0
b3J5PC9hPjwvbGk+JyksdG1wbF9hcnJheS5wdXNoKCI8JSB9ICU+IiksdG1wbF9hcnJheS5wdXNo
PQooIjwlIGlmKEdhbGF4eS5jb25maWcuYWxsb3dfbGlicmFyeV9wYXRoX3Bhc3RlKSB7ICU+Iiks
dG1wbF9hcnJheS5wdXNoKCcgICA9CjxsaSBjbGFzcz0zRCJkaXZpZGVyIj48L2xpPicpLHRtcGxf
YXJyYXkucHVzaCgnICAgPGxpIGNsYXNzPTNEImRyb3Bkb3duLWhlYT0KZGVyIj5BZG1pbnMgb25s
eTwvbGk+JyksdG1wbF9hcnJheS5wdXNoKCI8JSBpZihHYWxheHkuY29uZmlnLmxpYnJhcnlfaW1w
b3J0PQpfZGlyICE9M0Q9M0QgbnVsbCkgeyAlPiIpLHRtcGxfYXJyYXkucHVzaCgnICAgPGxpPjxh
IGhyZWY9M0QiI2ZvbGRlcnMvPCU9M0Q9CiBpZCAlPi9pbXBvcnQvaW1wb3J0ZGlyIj5mcm9tIElt
cG9ydCBEaXJlY3Rvcnk8L2E+PC9saT4nKSx0bXBsX2FycmF5LnB1c2goIj0KPCUgfSAlPiIpLHRt
cGxfYXJyYXkucHVzaCgiPCUgaWYoR2FsYXh5LmNvbmZpZy5hbGxvd19saWJyYXJ5X3BhdGhfcGFz
dGUpIHsgPQolPiIpLHRtcGxfYXJyYXkucHVzaCgnICAgICAgICA8bGk+PGEgaHJlZj0zRCIjZm9s
ZGVycy88JT0zRCBpZCAlPi9pbXBvcnQvcGE9CnRoIj5mcm9tIFBhdGg8L2E+PC9saT4nKSx0bXBs
X2FycmF5LnB1c2goIjwlIH0gJT4iKSx0bXBsX2FycmF5LnB1c2goIjwlIH0gJT0KPiIpLHRtcGxf
YXJyYXkucHVzaCgiICAgICA8L3VsPiIpLHRtcGxfYXJyYXkucHVzaCgiICAgPC9kaXY+IiksdG1w
bF9hcnJheS5wPQp1c2goIjwlIH0gZWxzZSB7ICU+IiksdG1wbF9hcnJheS5wdXNoKCcgPGEgIGRh
dGEtcGxhY2VtZW50PTNEInRvcCIgdGl0bGU9M0Q9CiJBZGQgRGF0YXNldHMgdG8gQ3VycmVudCBG
b2xkZXIiIHN0eWxlPTNEImRpc3BsYXk6bm9uZTsiIGNsYXNzPTNEImJ0biBidG4tZD0KZWZhdWx0
IGFkZC1saWJyYXJ5LWl0ZW1zIiBocmVmPTNEIiNmb2xkZXJzLzwlPTNEIGlkICU+L2ltcG9ydC9o
aXN0b3J5IiByb2xlPQo9M0QiYnV0dG9uIj48c3BhbiBjbGFzcz0zRCJmYSBmYS1wbHVzIj48L3Nw
YW4+PHNwYW4gY2xhc3M9M0QiZmEgZmEtZmlsZSI+PC89CnNwYW4+PC9zcGFuPjwvYT4nKSx0bXBs
X2FycmF5LnB1c2goIjwlIH0gJT4iKSx0bXBsX2FycmF5LnB1c2goJyAgPGJ1dHRvbiBkYT0KdGEt
dG9nZ2xlPTNEInRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PTNEInRvcCIgdGl0bGU9M0QiSW1wb3J0
IHNlbGVjdGVkIGRhdGFzPQpldHMgaW50byBoaXN0b3J5IiBpZD0zRCJ0b29sYnRuX2J1bGtfaW1w
b3J0IiBjbGFzcz0zRCJwcmltYXJ5LWJ1dHRvbiBkYXRhc2U9CnQtbWFuaXB1bGF0aW9uIiBzdHls
ZT0zRCJtYXJnaW4tbGVmdDogMC41ZW07IGRpc3BsYXk6bm9uZTsiIHR5cGU9M0QiYnV0dG9uIj0K
PjxzcGFuIGNsYXNzPTNEImZhIGZhLWJvb2siPjwvc3Bhbj4gdG8gSGlzdG9yeTwvYnV0dG9uPicp
LHRtcGxfYXJyYXkucHVzaCgnPQogICA8ZGl2IGlkPTNEInRvb2xidG5fZGwiIGNsYXNzPTNEImJ0
bi1ncm91cCBkYXRhc2V0LW1hbmlwdWxhdGlvbiIgc3R5bGU9M0Q9CiJtYXJnaW4tbGVmdDogMC41
ZW07IGRpc3BsYXk6bm9uZTsgIj4nKSx0bXBsX2FycmF5LnB1c2goJyAgICAgPGJ1dHRvbiB0aXRs
ZT0KPTNEIkRvd25sb2FkIHNlbGVjdGVkIGRhdGFzZXRzIGFzIGFyY2hpdmUiIGlkPTNEImRyb3Bf
dG9nZ2xlIiB0eXBlPTNEImJ1dHRvPQpuIiBjbGFzcz0zRCJwcmltYXJ5LWJ1dHRvbiBkcm9wZG93
bi10b2dnbGUiIGRhdGEtdG9nZ2xlPTNEImRyb3Bkb3duIj4nKSx0bXA9CmxfYXJyYXkucHVzaCgn
ICAgICA8c3BhbiBjbGFzcz0zRCJmYSBmYS1kb3dubG9hZCI+PC9zcGFuPiBEb3dubG9hZCA8c3Bh
biBjbD0KYXNzPTNEImNhcmV0Ij48L3NwYW4+JyksdG1wbF9hcnJheS5wdXNoKCIgICAgIDwvYnV0
dG9uPiIpLHRtcGxfYXJyYXkucHVzaCgnPQogICAgIDx1bCBjbGFzcz0zRCJkcm9wZG93bi1tZW51
IiByb2xlPTNEIm1lbnUiPicpLHRtcGxfYXJyYXkucHVzaCgnICAgICAgICA9CjxsaT48YSBocmVm
PTNEIiMvZm9sZGVycy88JT0zRCBpZCAlPi9kb3dubG9hZC90Z3oiPi50YXIuZ3o8L2E+PC9saT4n
KSx0bXBsXz0KYXJyYXkucHVzaCgnICAgICAgICA8bGk+PGEgaHJlZj0zRCIjL2ZvbGRlcnMvPCU9
M0QgaWQgJT4vZG93bmxvYWQvdGJ6Ij4udGFyPQouYno8L2E+PC9saT4nKSx0bXBsX2FycmF5LnB1
c2goJyAgICAgICAgPGxpPjxhIGhyZWY9M0QiIy9mb2xkZXJzLzwlPTNEIGlkICU9Cj4vZG93bmxv
YWQvemlwIj4uemlwPC9hPjwvbGk+JyksdG1wbF9hcnJheS5wdXNoKCIgICAgIDwvdWw+IiksdG1w
bF9hcnJheS5wdT0Kc2goIiAgIDwvZGl2PiIpLHRtcGxfYXJyYXkucHVzaCgnICAgPGJ1dHRvbiBk
YXRhLXRvZ2dsZT0zRCJ0b29sdGlwIiBkYXRhLXBsPQphY2VtZW50PTNEInRvcCIgdGl0bGU9M0Qi
TWFyayBzZWxlY3RlZCBkYXRhc2V0cyBkZWxldGVkIiBpZD0zRCJ0b29sYnRuX2J1bGs9Cl9kZWxl
dGUiIGNsYXNzPTNEInByaW1hcnktYnV0dG9uIGxvZ2dlZC1kYXRhc2V0LW1hbmlwdWxhdGlvbiIg
c3R5bGU9M0QibWFyZz0KaW4tbGVmdDogMC41ZW07IGRpc3BsYXk6bm9uZTsgIiB0eXBlPTNEImJ1
dHRvbiI+PHNwYW4gY2xhc3M9M0QiZmEgZmEtdGltZXMiPQo+PC9zcGFuPiBEZWxldGU8L2J1dHRv
bj4nKSx0bXBsX2FycmF5LnB1c2goJyAgIDxidXR0b24gZGF0YS1pZD0zRCI8JS0gaWQgJT49CiIg
ZGF0YS10b2dnbGU9M0QidG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9M0QidG9wIiB0aXRsZT0zRCJT
aG93IGxpYnJhcnkgaW5mbz0Kcm1hdGlvbiIgaWQ9M0QidG9vbGJ0bl9zaG93X2xpYmluZm8iIGNs
YXNzPTNEInByaW1hcnktYnV0dG9uIiBzdHlsZT0zRCJtYXJnPQppbi1sZWZ0OiAwLjVlbTsiIHR5
cGU9M0QiYnV0dG9uIj48c3BhbiBjbGFzcz0zRCJmYSBmYS1pbmZvLWNpcmNsZSI+PC9zcGFuPiA9
CkxpYnJhcnkgSW5mbzwvYnV0dG9uPicpLHRtcGxfYXJyYXkucHVzaCgnICAgPHNwYW4gY2xhc3M9
M0QiaGVscC1idXR0b24iIGRhdD0KYS10b2dnbGU9M0QidG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9
M0QidG9wIiB0aXRsZT0zRCJWaXNpdCBMaWJyYXJpZXMgV2lraSI+PQo8YSBocmVmPTNEImh0dHBz
Oi8vd2lraS5nYWxheHlwcm9qZWN0Lm9yZy9EYXRhTGlicmFyaWVzL3NjcmVlbi9Gb2xkZXJDb250
ZW49CnRzIiB0YXJnZXQ9M0QiX2JsYW5rIj48YnV0dG9uIGNsYXNzPTNEInByaW1hcnktYnV0dG9u
IiB0eXBlPTNEImJ1dHRvbiI+PHNwYT0KbiBjbGFzcz0zRCJmYSBmYS1xdWVzdGlvbi1jaXJjbGUi
Pjwvc3Bhbj4gSGVscDwvYnV0dG9uPjwvYT48L3NwYW4+JyksdG1wbF9hPQpycmF5LnB1c2goIiA8
L2Rpdj4iKSx0bXBsX2FycmF5LnB1c2goIjwvZm9ybT4iKSx0bXBsX2FycmF5LnB1c2goJyA8ZGl2
IGlkPQo9M0QiZm9sZGVyX2l0ZW1zX2VsZW1lbnQiPicpLHRtcGxfYXJyYXkucHVzaCgiIDwvZGl2
PiIpLHRtcGxfYXJyYXkucHVzaCgiPC89CmRpdj4iKSxfLnRlbXBsYXRlKHRtcGxfYXJyYXkuam9p
bigiIikpfSx0ZW1wbGF0ZUxpYkluZm9Jbk1vZGFsOmZ1bmN0aW9uKCl7cj0KZXR1cm4gdG1wbF9h
cnJheT0zRFtdLHRtcGxfYXJyYXkucHVzaCgnPGRpdiBpZD0zRCJsaWZfaW5mb19tb2RhbCI+Jyks
dG1wbF9hPQpycmF5LnB1c2goIjxoMj5MaWJyYXJ5IG5hbWU6PC9oMj4iKSx0bXBsX2FycmF5LnB1
c2goJzxwPjwlLSBsaWJyYXJ5LmdldCgibmE9Cm1lIikgJT48L3A+JyksdG1wbF9hcnJheS5wdXNo
KCI8aDM+TGlicmFyeSBkZXNjcmlwdGlvbjo8L2gzPiIpLHRtcGxfYXJyYXkucD0KdXNoKCc8cD48
JS0gbGlicmFyeS5nZXQoImRlc2NyaXB0aW9uIikgJT48L3A+JyksdG1wbF9hcnJheS5wdXNoKCI8
aDM+TGlicmFyPQp5IHN5bm9wc2lzOjwvaDM+IiksdG1wbF9hcnJheS5wdXNoKCc8cD48JS0gbGli
cmFyeS5nZXQoInN5bm9wc2lzIikgJT48L3A+Jyk9Cix0bXBsX2FycmF5LnB1c2goJzxwIGRhdGEt
dG9nZ2xlPTNEInRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PTNEInRvcCIgdGl0bGU9Cj0zRCI8JS0g
bGlicmFyeS5nZXQoImNyZWF0ZV90aW1lIikgJT4iPmNyZWF0ZWQgPCUtIGxpYnJhcnkuZ2V0KCJj
cmVhdGVfdGltZT0KX3ByZXR0eSIpICU+PC9wPicpLHRtcGxfYXJyYXkucHVzaCgiPC9kaXY+Iiks
Xy50ZW1wbGF0ZSh0bXBsX2FycmF5LmpvaW4oIiIpPQopfSx0ZW1wbGF0ZU5ld0ZvbGRlckluTW9k
YWw6ZnVuY3Rpb24oKXtyZXR1cm4gdG1wbF9hcnJheT0zRFtdLHRtcGxfYXJyYXkucHU9CnNoKCc8
ZGl2IGlkPTNEIm5ld19mb2xkZXJfbW9kYWwiPicpLHRtcGxfYXJyYXkucHVzaCgiPGZvcm0+Iiks
dG1wbF9hcnJheS5wdT0Kc2goJzxpbnB1dCB0eXBlPTNEInRleHQiIG5hbWU9M0QiTmFtZSIgdmFs
dWU9M0QiIiBwbGFjZWhvbGRlcj0zRCJOYW1lIj4nKSx0PQptcGxfYXJyYXkucHVzaCgnPGlucHV0
IHR5cGU9M0QidGV4dCIgbmFtZT0zRCJEZXNjcmlwdGlvbiIgdmFsdWU9M0QiIiBwbGFjZWg9Cm9s
ZGVyPTNEIkRlc2NyaXB0aW9uIj4nKSx0bXBsX2FycmF5LnB1c2goIjwvZm9ybT4iKSx0bXBsX2Fy
cmF5LnB1c2goIjwvZGl2Pj0KIiksXy50ZW1wbGF0ZSh0bXBsX2FycmF5LmpvaW4oIiIpKX0sdGVt
cGxhdGVCdWxrSW1wb3J0SW5Nb2RhbDpmdW5jdGlvbigpe3ZhPQpyIGE9M0RbXTtyZXR1cm4gYS5w
dXNoKCc8c3BhbiBpZD0zRCJoaXN0b3J5X21vZGFsX2NvbWJvX2J1bGsiIHN0eWxlPTNEIndpZHQ9
Cmg6OTAlOyBtYXJnaW4tbGVmdDogMWVtOyBtYXJnaW4tcmlnaHQ6IDFlbTsgIj4nKSxhLnB1c2go
IlNlbGVjdCBoaXN0b3J5OiAiKT0KLGEucHVzaCgnPHNlbGVjdCBpZD0zRCJkYXRhc2V0X2ltcG9y
dF9idWxrIiBuYW1lPTNEImRhdGFzZXRfaW1wb3J0X2J1bGsiIHN0PQp5bGU9M0Qid2lkdGg6NTAl
OyBtYXJnaW4tYm90dG9tOiAxZW07ICI+ICcpLGEucHVzaCgiICAgPCUgXy5lYWNoKGhpc3Rvcmll
cyw9CiBmdW5jdGlvbihoaXN0b3J5KSB7ICU+IiksYS5wdXNoKCcgICAgICAgPG9wdGlvbiB2YWx1
ZT0zRCI8JT0zRCBfLmVzY2FwZShoaT0Kc3RvcnkuZ2V0KCJpZCIpKSAlPiI+PCU9M0QgXy5lc2Nh
cGUoaGlzdG9yeS5nZXQoIm5hbWUiKSkgJT48L29wdGlvbj4nKSxhLnB1PQpzaCgiICAgPCUgfSk7
ICU+IiksYS5wdXNoKCI8L3NlbGVjdD4iKSxhLnB1c2goIjwvc3Bhbj4iKSxfLnRlbXBsYXRlKGEu
am9pbig9CiIiKSl9LHRlbXBsYXRlSW1wb3J0SW50b0hpc3RvcnlQcm9ncmVzc0JhcjpmdW5jdGlv
bigpe3ZhciBhPTNEW107cmV0dXJuIGEucD0KdXNoKCc8ZGl2IGNsYXNzPTNEImltcG9ydF90ZXh0
Ij4nKSxhLnB1c2goIkltcG9ydGluZyBzZWxlY3RlZCBkYXRhc2V0cyB0byBoPQppc3RvcnkgPGI+
PCU9M0QgXy5lc2NhcGUoaGlzdG9yeV9uYW1lKSAlPjwvYj4iKSxhLnB1c2goIjwvZGl2PiIpLGEu
cHVzaCgnPGQ9Cml2IGNsYXNzPTNEInByb2dyZXNzIj4nKSxhLnB1c2goJyAgIDxkaXYgY2xhc3M9
M0QicHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhcj0KLWltcG9ydCIgcm9sZT0zRCJwcm9ncmVzc2Jh
ciIgYXJpYS12YWx1ZW5vdz0zRCIwIiBhcmlhLXZhbHVlbWluPTNEIjAiIGFyaWEtPQp2YWx1ZW1h
eD0zRCIxMDAiIHN0eWxlPTNEIndpZHRoOiAwMCU7Ij4nKSxhLnB1c2goJyAgICAgICA8c3BhbiBj
bGFzcz0zRCJjb209CnBsZXRpb25fc3BhbiI+MCUgQ29tcGxldGU8L3NwYW4+JyksYS5wdXNoKCIg
ICA8L2Rpdj4iKSxhLnB1c2goIjwvZGl2PiIpLGEucD0KdXNoKCIiKSxfLnRlbXBsYXRlKGEuam9p
bigiIikpfSx0ZW1wbGF0ZUFkZGluZ0RhdGFzZXRzUHJvZ3Jlc3NCYXI6ZnVuY3Rpb24oPQope3Zh
ciBhPTNEW107cmV0dXJuIGEucHVzaCgnPGRpdiBjbGFzcz0zRCJpbXBvcnRfdGV4dCI+JyksYS5w
dXNoKCJBZGRpbmcgc2U9CmxlY3RlZCBkYXRhc2V0cyB0byBsaWJyYXJ5IGZvbGRlciA8Yj48JT0z
RCBfLmVzY2FwZShmb2xkZXJfbmFtZSkgJT48L2I+IiksYT0KLnB1c2goIjwvZGl2PiIpLGEucHVz
aCgnPGRpdiBjbGFzcz0zRCJwcm9ncmVzcyI+JyksYS5wdXNoKCcgICA8ZGl2IGNsYXNzPTNEPQoi
cHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci1pbXBvcnQiIHJvbGU9M0QicHJvZ3Jlc3NiYXIiIGFy
aWEtdmFsdWVub3c9M0QiMCI9CiBhcmlhLXZhbHVlbWluPTNEIjAiIGFyaWEtdmFsdWVtYXg9M0Qi
MTAwIiBzdHlsZT0zRCJ3aWR0aDogMDAlOyI+JyksYS5wdXNoKD0KJyAgICAgICA8c3BhbiBjbGFz
cz0zRCJjb21wbGV0aW9uX3NwYW4iPjAlIENvbXBsZXRlPC9zcGFuPicpLGEucHVzaCgiICAgPC9k
PQppdj4iKSxhLnB1c2goIjwvZGl2PiIpLGEucHVzaCgiIiksXy50ZW1wbGF0ZShhLmpvaW4oIiIp
KX0sdGVtcGxhdGVEZWxldGluZ0Q9CmF0YXNldHNQcm9ncmVzc0JhcjpmdW5jdGlvbigpe3ZhciBh
PTNEW107cmV0dXJuIGEucHVzaCgnPGRpdiBjbGFzcz0zRCJpbXBvcj0KdF90ZXh0Ij4nKSxhLnB1
c2goIjwvZGl2PiIpLGEucHVzaCgnPGRpdiBjbGFzcz0zRCJwcm9ncmVzcyI+JyksYS5wdXNoKCcg
ICA8PQpkaXYgY2xhc3M9M0QicHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci1pbXBvcnQiIHJvbGU9
M0QicHJvZ3Jlc3NiYXIiIGFyaWEtdmE9Cmx1ZW5vdz0zRCIwIiBhcmlhLXZhbHVlbWluPTNEIjAi
IGFyaWEtdmFsdWVtYXg9M0QiMTAwIiBzdHlsZT0zRCJ3aWR0aDogMDAlOz0KIj4nKSxhLnB1c2go
JyAgICAgICA8c3BhbiBjbGFzcz0zRCJjb21wbGV0aW9uX3NwYW4iPjAlIENvbXBsZXRlPC9zcGFu
PicpLGEuPQpwdXNoKCIgICA8L2Rpdj4iKSxhLnB1c2goIjwvZGl2PiIpLGEucHVzaCgiIiksXy50
ZW1wbGF0ZShhLmpvaW4oIiIpKX0sdGVtcGw9CmF0ZUJyb3dzZXJNb2RhbDpmdW5jdGlvbigpe3Zh
ciBhPTNEW107cmV0dXJuIGEucHVzaCgnPGRpdiBpZD0zRCJmaWxlX2Jyb3dzZT0Kcl9tb2RhbCI+
JyksYS5wdXNoKCc8ZGl2IGNsYXNzPTNEImFsZXJ0IGFsZXJ0LWluZm8ganN0cmVlLWZpbGVzLW1l
c3NhZ2UiPkFsPQpsIGZpbGVzIHlvdSBzZWxlY3Qgd2lsbCBiZSBpbXBvcnRlZCBpbnRvIHRoZSBj
dXJyZW50IGZvbGRlci48L2Rpdj4nKSxhLnB1c2g9CignPGRpdiBjbGFzcz0zRCJhbGVydCBhbGVy
dC1pbmZvIGpzdHJlZS1mb2xkZXJzLW1lc3NhZ2UiIHN0eWxlPTNEImRpc3BsYXk6bj0Kb25lOyI+
QWxsIGZpbGVzIHdpdGhpbiB0aGUgc2VsZWN0ZWQgZm9sZGVycyBhbmQgdGhlaXIgc3ViZm9sZGVy
cyB3aWxsIGJlIGltPQpwb3J0ZWQgaW50byB0aGUgY3VycmVudCBmb2xkZXIuPC9kaXY+JyksYS5w
dXNoKCc8ZGl2IHN0eWxlPTNEIm1hcmdpbi1ib3R0b209CjoxZW07Ij4nKSxhLnB1c2goJzxsYWJl
bCBjbGFzcz0zRCJyYWRpby1pbmxpbmUiPicpLGEucHVzaCgnICA8aW5wdXQgdGl0bGU9Cj0zRCJT
d2l0Y2ggdG8gc2VsZWN0aW5nIGZpbGVzIiB0eXBlPTNEInJhZGlvIiBuYW1lPTNEImpzdHJlZS1y
YWRpbyIgdmFsdWU9Cj0zRCJqc3RyZWUtZGlzYWJsZS1mb2xkZXJzIiBjaGVja2VkPTNEImNoZWNr
ZWQiPiBGaWxlcycpLGEucHVzaCgiPC9sYWJlbD4iKT0KLGEucHVzaCgnPGxhYmVsIGNsYXNzPTNE
InJhZGlvLWlubGluZSI+JyksYS5wdXNoKCcgIDxpbnB1dCB0aXRsZT0zRCJTd2l0Y2ggPQp0byBz
ZWxlY3RpbmcgZm9sZGVycyIgdHlwZT0zRCJyYWRpbyIgbmFtZT0zRCJqc3RyZWUtcmFkaW8iIHZh
bHVlPTNEImpzdHJlZS09CmRpc2FibGUtZmlsZXMiPiBGb2xkZXJzJyksYS5wdXNoKCI8L2xhYmVs
PiIpLGEucHVzaCgiPC9kaXY+IiksYS5wdXNoKCc8ZGl2ID0Kc3R5bGU9M0QibWFyZ2luLWJvdHRv
bToxZW07Ij4nKSxhLnB1c2goJzxsYWJlbCBjbGFzcz0zRCJjaGVja2JveC1pbmxpbmUganN0PQpy
ZWUtcHJlc2VydmUtc3RydWN0dXJlIiBzdHlsZT0zRCJkaXNwbGF5Om5vbmU7Ij4nKSxhLnB1c2go
JyAgIDxpbnB1dCBjbGFzcz0KPTNEInByZXNlcnZlLWNoZWNrYm94IiB0eXBlPTNEImNoZWNrYm94
IiB2YWx1ZT0zRCJwcmVzZXJ2ZV9kaXJlY3Rvcnlfc3RydWN0PQp1cmUiPicpLGEucHVzaCgiUHJl
c2VydmUgZGlyZWN0b3J5IHN0cnVjdHVyZSIpLGEucHVzaCgiIDwvbGFiZWw+IiksYS5wdXNoKCc9
CjxsYWJlbCBjbGFzcz0zRCJjaGVja2JveC1pbmxpbmUganN0cmVlLWxpbmstZmlsZXMiIHN0eWxl
PTNEImRpc3BsYXk6bm9uZTsiPj0KJyksYS5wdXNoKCcgICA8aW5wdXQgY2xhc3M9M0QibGluay1j
aGVja2JveCIgdHlwZT0zRCJjaGVja2JveCIgdmFsdWU9M0QibGluPQprX2ZpbGVzIj4nKSxhLnB1
c2goIkxpbmsgZmlsZXMgaW5zdGVhZCBvZiBjb3B5aW5nIiksYS5wdXNoKCIgPC9sYWJlbD4iKSxh
LnA9CnVzaCgiPC9kaXY+IiksYS5wdXNoKCc8ZGl2IGlkPTNEImpzdHJlZV9icm93c2VyIj4nKSxh
LnB1c2goIjwvZGl2PiIpLGEucHVzaD0KKCI8aHIgLz4iKSxhLnB1c2goIjxwPllvdSBjYW4gc2V0
IGV4dGVuc2lvbiB0eXBlIGFuZCBnZW5vbWUgZm9yIGFsbCBpbXBvcnRlPQpkIGRhdGFzZXRzIGF0
IG9uY2U6PC9wPiIpLGEucHVzaCgiPGRpdj4iKSxhLnB1c2goJ1R5cGU6IDxzcGFuIGlkPTNEImxp
YnJhcnk9Cl9leHRlbnNpb25fc2VsZWN0IiBjbGFzcz0zRCJsaWJyYXJ5LWV4dGVuc2lvbi1zZWxl
Y3QiIC8+JyksYS5wdXNoKCcgIEdlbm9tZT0KOiA8c3BhbiBpZD0zRCJsaWJyYXJ5X2dlbm9tZV9z
ZWxlY3QiIGNsYXNzPTNEImxpYnJhcnktZ2Vub21lLXNlbGVjdCIgLz4nKSxhPQoucHVzaCgiPC9k
aXY+IiksYS5wdXNoKCI8L2Rpdj4iKSxfLnRlbXBsYXRlKGEuam9pbigiIikpfSx0ZW1wbGF0ZUlt
cG9ydFBhdGg9Ck1vZGFsOmZ1bmN0aW9uKCl7dmFyIGE9M0RbXTtyZXR1cm4gYS5wdXNoKCc8ZGl2
IGlkPTNEImZpbGVfYnJvd3Nlcl9tb2RhbCI+Jz0KKSxhLnB1c2goJzxkaXYgY2xhc3M9M0QiYWxl
cnQgYWxlcnQtaW5mbyBqc3RyZWUtZm9sZGVycy1tZXNzYWdlIj5BbGwgZmlsZXMgPQp3aXRoaW4g
dGhlIGdpdmVuIGZvbGRlcnMgYW5kIHRoZWlyIHN1YmZvbGRlcnMgd2lsbCBiZSBpbXBvcnRlZCBp
bnRvIHRoZSBjdXI9CnJlbnQgZm9sZGVyLjwvZGl2PicpLGEucHVzaCgnPGRpdiBzdHlsZT0zRCJt
YXJnaW4tYm90dG9tOiAwLjVlbTsiPicpLGEucHVzaD0KKCc8bGFiZWwgY2xhc3M9M0QiY2hlY2ti
b3gtaW5saW5lIGpzdHJlZS1wcmVzZXJ2ZS1zdHJ1Y3R1cmUiPicpLGEucHVzaCgnICAgPQo8aW5w
dXQgY2xhc3M9M0QicHJlc2VydmUtY2hlY2tib3giIHR5cGU9M0QiY2hlY2tib3giIHZhbHVlPTNE
InByZXNlcnZlX2RpcmU9CmN0b3J5X3N0cnVjdHVyZSI+JyksYS5wdXNoKCJQcmVzZXJ2ZSBkaXJl
Y3Rvcnkgc3RydWN0dXJlIiksYS5wdXNoKCIgPC9sYWJlbD0KPiIpLGEucHVzaCgnPGxhYmVsIGNs
YXNzPTNEImNoZWNrYm94LWlubGluZSBqc3RyZWUtbGluay1maWxlcyI+JyksYS5wdXNoKCcgPQog
IDxpbnB1dCBjbGFzcz0zRCJsaW5rLWNoZWNrYm94IiB0eXBlPTNEImNoZWNrYm94IiB2YWx1ZT0z
RCJsaW5rX2ZpbGVzIj4nKSw9CmEucHVzaCgiTGluayBmaWxlcyBpbnN0ZWFkIG9mIGNvcHlpbmci
KSxhLnB1c2goIiA8L2xhYmVsPiIpLGEucHVzaCgiPC9kaXY+Ij0KKSxhLnB1c2goJzx0ZXh0YXJl
YSBpZD0zRCJpbXBvcnRfcGF0aHMiIGNsYXNzPTNEImZvcm0tY29udHJvbCIgcm93cz0zRCI1IiBw
PQpsYWNlaG9sZGVyPTNEIkFic29sdXRlIHBhdGhzIChvciBwYXRocyByZWxhdGl2ZSB0byBHYWxh
eHkgcm9vdCkgc2VwYXJhdGVkIGI9CnkgbmV3bGluZSI+PC90ZXh0YXJlYT4nKSxhLnB1c2goIjxo
ciAvPiIpLGEucHVzaCgiPHA+WW91IGNhbiBzZXQgZXh0ZW5zaW9uID0KdHlwZSBhbmQgZ2Vub21l
IGZvciBhbGwgaW1wb3J0ZWQgZGF0YXNldHMgYXQgb25jZTo8L3A+IiksYS5wdXNoKCI8ZGl2PiIp
LGEuPQpwdXNoKCdUeXBlOiA8c3BhbiBpZD0zRCJsaWJyYXJ5X2V4dGVuc2lvbl9zZWxlY3QiIGNs
YXNzPTNEImxpYnJhcnktZXh0ZW5zaW89Cm4tc2VsZWN0IiAvPicpLGEucHVzaCgnICBHZW5vbWU6
IDxzcGFuIGlkPTNEImxpYnJhcnlfZ2Vub21lX3NlbGVjdCIgY2xhc3M9Cj0zRCJsaWJyYXJ5LWdl
bm9tZS1zZWxlY3QiIC8+JyksYS5wdXNoKCI8L2Rpdj4iKSxhLnB1c2goIjwvZGl2PiIpLF8udGVt
cGxhdD0KZShhLmpvaW4oIiIpKX0sdGVtcGxhdGVBZGRGaWxlc0Zyb21IaXN0b3J5OmZ1bmN0aW9u
KCl7dmFyIGE9M0RbXTtyZXR1cm4gYS5wPQp1c2goJzxkaXYgaWQ9M0QiYWRkX2ZpbGVzX21vZGFs
Ij4nKSxhLnB1c2goJzxkaXYgaWQ9M0QiaGlzdG9yeV9tb2RhbF9jb21ib189CmJ1bGsiPicpLGEu
cHVzaCgiU2VsZWN0IGhpc3Rvcnk6ICAiKSxhLnB1c2goJzxzZWxlY3QgaWQ9M0QiZGF0YXNldF9h
ZGRfYnVsaz0KIiBuYW1lPTNEImRhdGFzZXRfYWRkX2J1bGsiIHN0eWxlPTNEIndpZHRoOjY2JTsg
Ij4gJyksYS5wdXNoKCIgICA8JSBfLmVhY2goPQpoaXN0b3JpZXMsIGZ1bmN0aW9uKGhpc3Rvcnkp
IHsgJT4iKSxhLnB1c2goJyAgICAgICA8b3B0aW9uIHZhbHVlPTNEIjwlPTNEIF89Ci5lc2NhcGUo
aGlzdG9yeS5nZXQoImlkIikpICU+Ij48JT0zRCBfLmVzY2FwZShoaXN0b3J5LmdldCgibmFtZSIp
KSAlPjwvb3B0aT0Kb24+JyksCitkZWZpbmUoWyJnYWxheHkubWFzdGhlYWQiLCJ1dGlscy91dGls
cyIsImxpYnMvdG9hc3RyIiwibXZjL2xpYnJhcnkvbGlicmFyeT0KLW1vZGVsIiwibXZjL3VpL3Vp
LXNlbGVjdCJdLGZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9M0RCYWNrYm9uZS5WaWV3LmV4dGVu
PQpkKHtlbDoiI2NlbnRlciIsZXZlbnRzOnsiY2xpY2sgI3Rvb2xidG5fY3JlYXRlX2ZvbGRlciI6
ImNyZWF0ZUZvbGRlckZyb21Nb2Q9CmFsIiwiY2xpY2sgI3Rvb2xidG5fYnVsa19pbXBvcnQiOiJt
b2RhbEJ1bGtJbXBvcnQiLCJjbGljayAjaW5jbHVkZV9kZWxldGVkXz0KZGF0YXNldHNfY2hrIjoi
Y2hlY2tJbmNsdWRlRGVsZXRlZCIsImNsaWNrICN0b29sYnRuX3Nob3dfbGliaW5mbyI6InNob3dM
aWJJPQpuZm8iLCJjbGljayAjdG9vbGJ0bl9idWxrX2RlbGV0ZSI6ImRlbGV0ZVNlbGVjdGVkRGF0
YXNldHMiLCJjbGljayAjcGFnZV9zaXo9CmVfcHJvbXB0Ijoic2hvd1BhZ2VTaXplUHJvbXB0In0s
ZGVmYXVsdHM6e2Nhbl9hZGRfbGlicmFyeV9pdGVtOiExLGNvbnRhaW5zXz0KZmlsZV9vcl9mb2xk
ZXI6ITEsY2hhaW5fY2FsbF9jb250cm9sOnt0b3RhbF9udW1iZXI6MCxmYWlsZWRfbnVtYmVyOjB9
LGRpc2FiPQpsZWRfanN0cmVlX2VsZW1lbnQ6ImZvbGRlcnMifSxtb2RhbDpudWxsLGpzdHJlZTpu
dWxsLGhpc3RvcmllczpudWxsLHNlbGVjdF89Cmdlbm9tZTpudWxsLHNlbGVjdF9leHRlbnNpb246
bnVsbCxsaXN0X2V4dGVuc2lvbnM6W10sYXV0bzp7aWQ6ImF1dG8iLHRleHQ6Ij0KQXV0by1kZXRl
Y3QiLGRlc2NyaXB0aW9uOiJUaGlzIHN5c3RlbSB3aWxsIHRyeSB0byBkZXRlY3QgdGhlIGZpbGUg
dHlwZSBhdXRvPQptYXRpY2FsbHkuIElmIHlvdXIgZmlsZSBpcyBub3QgZGV0ZWN0ZWQgcHJvcGVy
bHkgYXMgb25lIG9mIHRoZSBrbm93biBmb3JtYXQ9CnMsIGl0IG1vc3QgbGlrZWx5IG1lYW5zIHRo
YXQgaXQgaGFzIHNvbWUgZm9ybWF0IHByb2JsZW1zIChlLmcuLCBkaWZmZXJlbnQgbj0KdW1iZXIg
b2YgY29sdW1ucyBvbiBkaWZmZXJlbnQgcm93cykuIFlvdSBjYW4gc3RpbGwgY29lcmNlIHRoZSBz
eXN0ZW0gdG8gc2V0PQogeW91ciBkYXRhIHRvIHRoZSBmb3JtYXQgeW91IHRoaW5rIGl0IHNob3Vs
ZCBiZS4gWW91IGNhbiBhbHNvIHVwbG9hZCBjb21wcmU9CnNzZWQgZmlsZXMsIHdoaWNoIHdpbGwg
YXV0b21hdGljYWxseSBiZSBkZWNvbXByZXNzZWQuIn0sbGlzdF9nZW5vbWVzOltdLGluaT0KdGlh
bGl6ZTpmdW5jdGlvbihhKXt0aGlzLm9wdGlvbnM9M0RfLmRlZmF1bHRzKGF8fHt9LHRoaXMuZGVm
YXVsdHMpLHRoaXMuZmV0PQpjaEV4dEFuZEdlbm9tZXMoKSx0aGlzLnJlbmRlcigpfSxyZW5kZXI6
ZnVuY3Rpb24oYSl7dGhpcy5vcHRpb25zPTNEXy5leHRlbmQ9Cih0aGlzLm9wdGlvbnMsYSk7dmFy
IGI9M0R0aGlzLnRlbXBsYXRlVG9vbEJhcigpLGM9M0R7aWQ6dGhpcy5vcHRpb25zLmlkLGlzXz0K
YWRtaW46ITEsaXNfYW5vbnltOiEwLG11dGlwbGVfYWRkX2RhdGFzZXRfb3B0aW9uczohMX07R2Fs
YXh5LmN1cnJVc2VyJiYoYy5pPQpzX2FkbWluPTNER2FsYXh5LmN1cnJVc2VyLmlzQWRtaW4oKSxj
LmlzX2Fub255bT0zREdhbGF4eS5jdXJyVXNlci5pc0Fub255bW89CnVzKCksKG51bGwhPTNEPTNE
R2FsYXh5LmNvbmZpZy51c2VyX2xpYnJhcnlfaW1wb3J0X2Rpcnx8R2FsYXh5LmNvbmZpZy5hbGxv
dz0KX2xpYnJhcnlfcGF0aF9wYXN0ZSE9M0Q9M0QhMXx8bnVsbCE9M0Q9M0RHYWxheHkuY29uZmln
LmxpYnJhcnlfaW1wb3J0X2RpcikmPQomKGMubXV0aXBsZV9hZGRfZGF0YXNldF9vcHRpb25zPTNE
ITApKSx0aGlzLiRlbC5odG1sKGIoYykpfSxyZW5kZXJQYWdpbmF0b3I9CjpmdW5jdGlvbihhKXt0
aGlzLm9wdGlvbnM9M0RfLmV4dGVuZCh0aGlzLm9wdGlvbnMsYSk7dmFyIGI9M0R0aGlzLnRlbXBs
YXRlUD0KYWdpbmF0b3IoKTt0aGlzLiRlbC5maW5kKCIjZm9sZGVyX3BhZ2luYXRvciIpLmh0bWwo
Yih7aWQ6dGhpcy5vcHRpb25zLmlkLHNoPQpvd19wYWdlOnBhcnNlSW50KHRoaXMub3B0aW9ucy5z
aG93X3BhZ2UpLHBhZ2VfY291bnQ6cGFyc2VJbnQodGhpcy5vcHRpb25zLnA9CmFnZV9jb3VudCks
dG90YWxfaXRlbXNfY291bnQ6dGhpcy5vcHRpb25zLnRvdGFsX2l0ZW1zX2NvdW50LGl0ZW1zX3No
b3duOnRoaT0Kcy5vcHRpb25zLml0ZW1zX3Nob3dufSkpfSxjb25maWd1cmVFbGVtZW50czpmdW5j
dGlvbihhKXt0aGlzLm9wdGlvbnM9M0RfLmV4PQp0ZW5kKHRoaXMub3B0aW9ucyxhKSx0aGlzLm9w
dGlvbnMuY2FuX2FkZF9saWJyYXJ5X2l0ZW09M0Q9M0Q9M0QhMD8kKCIuYWRkLWw9CmlicmFyeS1p
dGVtcyIpLnNob3coKTokKCIuYWRkLWxpYnJhcnktaXRlbXMiKS5oaWRlKCksdGhpcy5vcHRpb25z
LmNvbnRhaW5zXz0KZmlsZV9vcl9mb2xkZXI9M0Q9M0Q9M0QhMCYmR2FsYXh5LmN1cnJVc2VyP0dh
bGF4eS5jdXJyVXNlci5pc0Fub255bW91cygpPygkPQooIi5kYXRhc2V0LW1hbmlwdWxhdGlvbiIp
LnNob3coKSwkKCIubG9nZ2VkLWRhdGFzZXQtbWFuaXB1bGF0aW9uIikuaGlkZSgpKTo9CigkKCIu
bG9nZ2VkLWRhdGFzZXQtbWFuaXB1bGF0aW9uIikuc2hvdygpLCQoIi5kYXRhc2V0LW1hbmlwdWxh
dGlvbiIpLnNob3coKT0KKTooJCgiLmxvZ2dlZC1kYXRhc2V0LW1hbmlwdWxhdGlvbiIpLmhpZGUo
KSwkKCIuZGF0YXNldC1tYW5pcHVsYXRpb24iKS5oaWRlPQooKSksdGhpcy4kZWwuZmluZCgiW2Rh
dGEtdG9nZ2xlXSIpLnRvb2x0aXAoKX0sY3JlYXRlRm9sZGVyRnJvbU1vZGFsOmZ1bmN0aW89Cm4o
YSl7YS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCk7dmFyIGI9M0R0aGlzLGM9
M0R0aGlzLnRlbXBsYXRlTj0KZXdGb2xkZXJJbk1vZGFsKCk7dGhpcy5tb2RhbD0zREdhbGF4eS5t
b2RhbCx0aGlzLm1vZGFsLnNob3coe2Nsb3NpbmdfZXZlbnRzPQo6ITAsdGl0bGU6IkNyZWF0ZSBO
ZXcgRm9sZGVyIixib2R5OmMoKSxidXR0b25zOntDcmVhdGU6ZnVuY3Rpb24oKXtiLmNyZWF0ZV89
Cm5ld19mb2xkZXJfZXZlbnQoKX0sQ2xvc2U6ZnVuY3Rpb24oKXtHYWxheHkubW9kYWwuaGlkZSgp
fX19KX0sY3JlYXRlX25ld19mbz0KbGRlcl9ldmVudDpmdW5jdGlvbigpe3ZhciBhPTNEdGhpcy5z
ZXJpYWxpemVfbmV3X2ZvbGRlcigpO2lmKHRoaXMudmFsaWRhdGVfPQpuZXdfZm9sZGVyKGEpKXt2
YXIgYj0zRG5ldyBkLkZvbGRlckFzTW9kZWw7dXJsX2l0ZW1zPTNEQmFja2JvbmUuaGlzdG9yeS5m
cmE9CmdtZW50LnNwbGl0KCIvIiksY3VycmVudF9mb2xkZXJfaWQ9M0R1cmxfaXRlbXNbdXJsX2l0
ZW1zLmxlbmd0aC0xXSxiLnVybD0zRD0KYi51cmxSb290K2N1cnJlbnRfZm9sZGVyX2lkLGIuc2F2
ZShhLHtzdWNjZXNzOmZ1bmN0aW9uKGEpe0dhbGF4eS5tb2RhbC5oaWRlPQooKSxjLnN1Y2Nlc3Mo
IkZvbGRlciBjcmVhdGVkLiIpLGEuc2V0KHt0eXBlOiJmb2xkZXIifSksR2FsYXh5LmxpYnJhcmll
cy5mb2w9CmRlckxpc3RWaWV3LmNvbGxlY3Rpb24uYWRkKGEpfSxlcnJvcjpmdW5jdGlvbihhLGIp
e0dhbGF4eS5tb2RhbC5oaWRlKCksYy5lcj0Kcm9yKCJ1bmRlZmluZWQiIT0zRHR5cGVvZiBiLnJl
c3BvbnNlSlNPTj9iLnJlc3BvbnNlSlNPTi5lcnJfbXNnOiJBbiBlcnJvciBvPQpjdXJyZWQuIil9
fSl9ZWxzZSBjLmVycm9yKCJGb2xkZXIncyBuYW1lIGlzIG1pc3NpbmcuIik7cmV0dXJuITF9LHNl
cmlhbGl6ZV89Cm5ld19mb2xkZXI6ZnVuY3Rpb24oKXtyZXR1cm57bmFtZTokKCJpbnB1dFtuYW1l
PTNEJ05hbWUnXSIpLnZhbCgpLGRlc2NyaXB0aT0Kb246JCgiaW5wdXRbbmFtZT0zRCdEZXNjcmlw
dGlvbiddIikudmFsKCl9fSx2YWxpZGF0ZV9uZXdfZm9sZGVyOmZ1bmN0aW9uKGEpPQp7cmV0dXJu
IiIhPTNEPTNEYS5uYW1lfSxtb2RhbEJ1bGtJbXBvcnQ6ZnVuY3Rpb24oKXt2YXIgYT0zRCQoIiNm
b2xkZXJfdGFibGU9CiIpLmZpbmQoIjpjaGVja2VkIik7MD0zRD0zRD0zRGEubGVuZ3RoP2MuaW5m
bygiWW91IG11c3Qgc2VsZWN0IHNvbWUgZGF0YXNldD0KcyBmaXJzdC4iKTp0aGlzLnJlZnJlc2hV
c2VySGlzdG9yaWVzTGlzdChmdW5jdGlvbihhKXt2YXIgYj0zRGEudGVtcGxhdGVCdWxrPQpJbXBv
cnRJbk1vZGFsKCk7YS5tb2RhbD0zREdhbGF4eS5tb2RhbCxhLm1vZGFsLnNob3coe2Nsb3Npbmdf
ZXZlbnRzOiEwLHRpdGw9CmU6IkltcG9ydCBpbnRvIEhpc3RvcnkiLGJvZHk6Yih7aGlzdG9yaWVz
OmEuaGlzdG9yaWVzLm1vZGVsc30pLGJ1dHRvbnM6e0ltcD0Kb3J0OmZ1bmN0aW9uKCl7YS5pbXBv
cnRBbGxJbnRvSGlzdG9yeSgpfSxDbG9zZTpmdW5jdGlvbigpe0dhbGF4eS5tb2RhbC5oaWRlPQoo
KX19fSl9KX0scmVmcmVzaFVzZXJIaXN0b3JpZXNMaXN0OmZ1bmN0aW9uKGEpe3ZhciBiPTNEdGhp
czt0aGlzLmhpc3Rvcmllcz0KPTNEbmV3IGQuR2FsYXh5SGlzdG9yaWVzLHRoaXMuaGlzdG9yaWVz
LmZldGNoKHtzdWNjZXNzOmZ1bmN0aW9uKCl7YShiKX0sZXJyPQpvcjpmdW5jdGlvbihhLGIpe2Mu
ZXJyb3IoInVuZGVmaW5lZCIhPTNEdHlwZW9mIGIucmVzcG9uc2VKU09OP2IucmVzcG9uc2VKU089
Ck4uZXJyX21zZzoiQW4gZXJyb3Igb2N1cnJlZC4iKX19KX0saW1wb3J0QWxsSW50b0hpc3Rvcnk6
ZnVuY3Rpb24oKXt0aGlzLm1vZD0KYWwuZGlzYWJsZUJ1dHRvbigiSW1wb3J0Iik7dmFyIGE9M0Qk
KCJzZWxlY3RbbmFtZT0zRGRhdGFzZXRfaW1wb3J0X2J1bGtdIG9wPQp0aW9uOnNlbGVjdGVkIiku
dmFsKCksYj0zRCQoInNlbGVjdFtuYW1lPTNEZGF0YXNldF9pbXBvcnRfYnVsa10gb3B0aW9uOnNl
bGU9CmN0ZWQiKS50ZXh0KCk7dGhpcy5vcHRpb25zLmxhc3RfdXNlZF9oaXN0b3J5X2lkPTNEYTt2
YXIgYz0zRFtdLGU9M0RbXTskKCIjZj0Kb2xkZXJfdGFibGUiKS5maW5kKCI6Y2hlY2tlZCIpLmVh
Y2goZnVuY3Rpb24oKXsiIiE9M0Q9M0R0aGlzLnBhcmVudEVsZW1lbnQuPQpwYXJlbnRFbGVtZW50
LmlkJiZ0aGlzLnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMo
ImRhdGE9CnNldF9yb3ciKT9jLnB1c2godGhpcy5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQu
aWQpOiIiIT0zRD0zRHRoaXMucGFyZW50RT0KbGVtZW50LnBhcmVudEVsZW1lbnQuaWQmJnRoaXMu
cGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LmNsYXNzTGlzdC5jb250YWluPQpzKCJmb2xkZXJf
cm93IikmJmUucHVzaCh0aGlzLnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5pZCl9KTtmb3Io
dmFyIGY9M0Q9CltdLGc9M0RjLmxlbmd0aC0xO2c+PTNEMDtnLS0pe3ZhciBoPTNEY1tnXSxpPTNE
bmV3IGQuSGlzdG9yeUl0ZW07aS51cmw9M0RpLj0KdXJsUm9vdCthKyIvY29udGVudHMiLGkuY29u
dGVudD0zRGgsaS5zb3VyY2U9M0QibGlicmFyeSIsZi5wdXNoKGkpfWZvcih2YXIgPQpnPTNEZS5s
ZW5ndGgtMTtnPj0zRDA7Zy0tKXt2YXIgaj0zRGVbZ10saT0zRG5ldyBkLkhpc3RvcnlJdGVtO2ku
dXJsPTNEaS51cmw9ClJvb3QrYSsiL2NvbnRlbnRzIixpLmNvbnRlbnQ9M0RqLGkuc291cmNlPTNE
ImxpYnJhcnlfZm9sZGVyIixmLnB1c2goaSl9dGhpcz0KLmluaXRDaGFpbkNhbGxDb250cm9sKHts
ZW5ndGg6Zi5sZW5ndGgsYWN0aW9uOiJ0b19oaXN0b3J5IixoaXN0b3J5X25hbWU6Yn0pPQosalF1
ZXJ5LmdldEpTT04oZ2FsYXh5X2NvbmZpZy5yb290KyJoaXN0b3J5L3NldF9hc19jdXJyZW50P2lk
PTNEIithKSx0aGlzLmM9CmhhaW5DYWxsSW1wb3J0aW5nSW50b0hpc3RvcnkoZixiKX0sdXBkYXRl
UHJvZ3Jlc3M6ZnVuY3Rpb24oKXt0aGlzLnByb2dyZXNzKz0KPTNEdGhpcy5wcm9ncmVzc1N0ZXAs
JCgiLnByb2dyZXNzLWJhci1pbXBvcnQiKS53aWR0aChNYXRoLnJvdW5kKHRoaXMucHJvZ3JlPQpz
cykrIiUiKSx0eHRfcmVwcmVzZW50YXRpb249M0RNYXRoLnJvdW5kKHRoaXMucHJvZ3Jlc3MpKyIl
IENvbXBsZXRlIiwkKCIuY289Cm1wbGV0aW9uX3NwYW4iKS50ZXh0KHR4dF9yZXByZXNlbnRhdGlv
bil9LGRvd25sb2FkOmZ1bmN0aW9uKGEsYil7dmFyIGM9M0RbXT0KLGQ9M0RbXTskKCIjZm9sZGVy
X3RhYmxlIikuZmluZCgiOmNoZWNrZWQiKS5lYWNoKGZ1bmN0aW9uKCl7IiIhPTNEPTNEdGhpcy5w
PQphcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5pZCYmdGhpcy5wYXJlbnRFbGVtZW50LnBhcmVu
dEVsZW1lbnQuY2xhc3NMaXN0LmM9Cm9udGFpbnMoImRhdGFzZXRfcm93Iik/Yy5wdXNoKHRoaXMu
cGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LmlkKToiIiE9M0Q9Cj0zRHRoaXMucGFyZW50RWxl
bWVudC5wYXJlbnRFbGVtZW50LmlkJiZ0aGlzLnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5j
bD0KYXNzTGlzdC5jb250YWlucygiZm9sZGVyX3JvdyIpJiZkLnB1c2godGhpcy5wYXJlbnRFbGVt
ZW50LnBhcmVudEVsZW1lbnQuaWQpPQp9KTt2YXIgZT0zRCh3aW5kb3cuZ2FsYXh5X2NvbmZpZz9n
YWxheHlfY29uZmlnLnJvb3Q6Ii8iKSsiYXBpL2xpYnJhcmllcy9kYXQ9CmFzZXRzL2Rvd25sb2Fk
LyIrYixmPTNEe2xkX2lkczpjLGZvbGRlcl9pZHM6ZH07dGhpcy5wcm9jZXNzRG93bmxvYWQoZSxm
LCJnZT0KdCIpfSxwcm9jZXNzRG93bmxvYWQ6ZnVuY3Rpb24oYSxiLGQpe2lmKGEmJmIpe2I9M0Qi
c3RyaW5nIj0zRD0zRHR5cGVvZiBiP2I6PQokLnBhcmFtKGIpO3ZhciBlPTNEIiI7JC5lYWNoKGIu
c3BsaXQoIiYiKSxmdW5jdGlvbigpe3ZhciBhPTNEdGhpcy5zcGxpdCgiPQo9M0QiKTtlKz0zRCc8
aW5wdXQgdHlwZT0zRCJoaWRkZW4iIG5hbWU9M0QiJythWzBdKyciIHZhbHVlPTNEIicrYVsxXSsn
IiAvPic9Cn0pLCQoJzxmb3JtIGFjdGlvbj0zRCInK2ErJyIgbWV0aG9kPTNEIicrKGR8fCJwb3N0
IikrJyI+JytlKyI8L2Zvcm0+IikuYXBwZT0KbmRUbygiYm9keSIpLnN1Ym1pdCgpLnJlbW92ZSgp
LGMuaW5mbygiWW91ciBkb3dubG9hZCB3aWxsIGJlZ2luIHNvb24uIil9ZWxzPQplIGMuZXJyb3Io
IkFuIGVycm9yIG9jY3VycmVkLiIpfSxhZGRGaWxlc0Zyb21IaXN0b3J5TW9kYWw6ZnVuY3Rpb24o
KXt0aGlzLnI9CmVmcmVzaFVzZXJIaXN0b3JpZXNMaXN0KGZ1bmN0aW9uKGEpe2EubW9kYWw9M0RH
YWxheHkubW9kYWw7dmFyIGI9M0RhLnRlbXBsYT0KdGVBZGRGaWxlc0Zyb21IaXN0b3J5KCksZD0z
RGEub3B0aW9ucy5mdWxsX3BhdGhbYS5vcHRpb25zLmZ1bGxfcGF0aC5sZW5ndGgtPQoxXVsxXTth
Lm1vZGFsLnNob3coe2Nsb3NpbmdfZXZlbnRzOiEwLHRpdGxlOiJBZGRpbmcgZGF0YXNldHMgZnJv
bSB5b3VyIGhpc3Q9Cm9yeSB0byBmb2xkZXIgIitkLGJvZHk6Yih7aGlzdG9yaWVzOmEuaGlzdG9y
aWVzLm1vZGVsc30pLGJ1dHRvbnM6e0FkZDpmdW5jdD0KaW9uKCl7YS5hZGRBbGxEYXRhc2V0c0Zy
b21IaXN0b3J5KCl9LENsb3NlOmZ1bmN0aW9uKCl7R2FsYXh5Lm1vZGFsLmhpZGUoKX19PQosY2xv
c2luZ19jYWxsYmFjazpmdW5jdGlvbigpe0dhbGF4eS5saWJyYXJpZXMubGlicmFyeV9yb3V0ZXIu
YmFjaygpfX0pLGEuaGk9CnN0b3JpZXMubW9kZWxzLmxlbmd0aD4wPyhhLmZldGNoQW5kRGlzcGxh
eUhpc3RvcnlDb250ZW50cyhhLmhpc3Rvcmllcy5tb2RlbD0Kc1swXS5pZCksJCgiI2RhdGFzZXRf
YWRkX2J1bGsiKS5jaGFuZ2UoZnVuY3Rpb24oYil7YS5mZXRjaEFuZERpc3BsYXlIaXN0b3J5PQpD
b250ZW50cyhiLnRhcmdldC52YWx1ZSl9KSk6Yy5lcnJvcigiQW4gZXJyb3Igb2N1cnJlZC4iKX0p
fSxpbXBvcnRGaWxlc0Zyb209ClBhdGhNb2RhbDpmdW5jdGlvbigpe3ZhciBhPTNEdGhpczt0aGlz
Lm1vZGFsPTNER2FsYXh5Lm1vZGFsO3ZhciBiPTNEdGhpcy50ZT0KbXBsYXRlSW1wb3J0UGF0aE1v
ZGFsKCk7dGhpcy5tb2RhbC5zaG93KHtjbG9zaW5nX2V2ZW50czohMCx0aXRsZToiUGxlYXNlIGVu
PQp0ZXIgcGF0aHMgdG8gaW1wb3J0Iixib2R5OmIoe30pLGJ1dHRvbnM6e0ltcG9ydDpmdW5jdGlv
bigpe2EuaW1wb3J0RnJvbVBhdGg9CnNDbGlja2VkKGEpfSxDbG9zZTpmdW5jdGlvbigpe0dhbGF4
eS5tb2RhbC5oaWRlKCl9fSxjbG9zaW5nX2NhbGxiYWNrOmZ1bmN0aT0Kb24oKXtHYWxheHkubGli
cmFyaWVzLmxpYnJhcnlfcm91dGVyLm5hdmlnYXRlKCJmb2xkZXJzLyIrYS5pZCx7dHJpZ2dlcjoh
MH0pPQp9fSksdGhpcy5yZW5kZXJTZWxlY3RCb3hlcygpfSxmZXRjaEV4dEFuZEdlbm9tZXM6ZnVu
Y3Rpb24oKXt2YXIgYT0zRHRoaXM7Yi49CmdldCh7dXJsOih3aW5kb3cuZ2FsYXh5X2NvbmZpZz9n
YWxheHlfY29uZmlnLnJvb3Q6Ii8iKSsiYXBpL2RhdGF0eXBlcz9leHRlbj0Kc2lvbl9vbmx5PTNE
RmFsc2UiLHN1Y2Nlc3M6ZnVuY3Rpb24oYil7Zm9yKGtleSBpbiBiKWEubGlzdF9leHRlbnNpb25z
LnB1c2goPQp7aWQ6YltrZXldLmV4dGVuc2lvbix0ZXh0OmJba2V5XS5leHRlbnNpb24sZGVzY3Jp
cHRpb246YltrZXldLmRlc2NyaXB0aW9uLGQ9CmVzY3JpcHRpb25fdXJsOmJba2V5XS5kZXNjcmlw
dGlvbl91cmx9KTthLmxpc3RfZXh0ZW5zaW9ucy5zb3J0KGZ1bmN0aW9uKGEsYj0KKXtyZXR1cm4g
YS5pZD5iLmlkPzE6YS5pZDxiLmlkPy0xOjB9KSxhLmxpc3RfZXh0ZW5zaW9ucy51bnNoaWZ0KGEu
YXV0byl9fSksPQpiLmdldCh7dXJsOih3aW5kb3cuZ2FsYXh5X2NvbmZpZz9nYWxheHlfY29uZmln
LnJvb3Q6Ii8iKSsiYXBpL2dlbm9tZXMiLHN1Y2M9CmVzczpmdW5jdGlvbihiKXtmb3Ioa2V5IGlu
IGIpYS5saXN0X2dlbm9tZXMucHVzaCh7aWQ6YltrZXldWzFdLHRleHQ6YltrZXldWz0KMF19KTth
Lmxpc3RfZ2Vub21lcy5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuaWQ+Yi5pZD8xOmEuaWQ8
Yi5pZD8tMTowfSl9PQp9KX0scmVuZGVyU2VsZWN0Qm94ZXM6ZnVuY3Rpb24oKXt2YXIgYT0zRHRo
aXM7dGhpcy5zZWxlY3RfZ2Vub21lPTNEbmV3IGUuVmk9CmV3KHtjc3M6ImxpYnJhcnktZ2Vub21l
LXNlbGVjdCIsZGF0YTphLmxpc3RfZ2Vub21lcyxjb250YWluZXI6R2FsYXh5Lm1vZGFsLj0KJGVs
LmZpbmQoIiNsaWJyYXJ5X2dlbm9tZV9zZWxlY3QiKSx2YWx1ZToiPyJ9KSx0aGlzLnNlbGVjdF9l
eHRlbnNpb249M0RuZXcgPQplLlZpZXcoe2NzczoibGlicmFyeS1leHRlbnNpb24tc2VsZWN0Iixk
YXRhOmEubGlzdF9leHRlbnNpb25zLGNvbnRhaW5lcjpHYWw9CmF4eS5tb2RhbC4kZWwuZmluZCgi
I2xpYnJhcnlfZXh0ZW5zaW9uX3NlbGVjdCIpLHZhbHVlOiJhdXRvIn0pfSxpbXBvcnRGaWxlcz0K
RnJvbUdhbGF4eUZvbGRlck1vZGFsOmZ1bmN0aW9uKGEpe3ZhciBiPTNEdGhpcyxjPTNEdGhpcy50
ZW1wbGF0ZUJyb3dzZXJNb2RhPQpsKCk7dGhpcy5tb2RhbD0zREdhbGF4eS5tb2RhbCx0aGlzLm1v
ZGFsLnNob3coe2Nsb3NpbmdfZXZlbnRzOiEwLHRpdGxlOiJQbGU9CmFzZSBzZWxlY3QgZm9sZGVy
cyBvciBmaWxlcyIsYm9keTpjKHt9KSxidXR0b25zOntJbXBvcnQ6ZnVuY3Rpb24oKXtiLmltcG9y
dD0KRnJvbUpzdHJlZVBhdGgoYixhKX0sQ2xvc2U6ZnVuY3Rpb24oKXtHYWxheHkubW9kYWwuaGlk
ZSgpfX0sY2xvc2luZ19jYWxsYmFjPQprOmZ1bmN0aW9uKCl7R2FsYXh5LmxpYnJhcmllcy5saWJy
YXJ5X3JvdXRlci5uYXZpZ2F0ZSgiZm9sZGVycy8iK2IuaWQse3RyaWc9CmdlcjohMH0pfX0pLHRo
aXMucmVuZGVyU2VsZWN0Qm94ZXMoKSxhLmRpc2FibGVkX2pzdHJlZV9lbGVtZW50PTNEImZvbGRl
cnMiLD0KdGhpcy5yZW5kZXJKc3RyZWUoYSksJCgiaW5wdXRbdHlwZT0zRHJhZGlvXSIpLmNoYW5n
ZShmdW5jdGlvbihjKXsianN0cmVlLWRpPQpzYWJsZS1mb2xkZXJzIj0zRD0zRD0zRGMudGFyZ2V0
LnZhbHVlPyhhLmRpc2FibGVkX2pzdHJlZV9lbGVtZW50PTNEImZvbGRlcnM9CiIsYi5yZW5kZXJK
c3RyZWUoYSksJCgiLmpzdHJlZS1mb2xkZXJzLW1lc3NhZ2UiKS5oaWRlKCksJCgiLmpzdHJlZS1w
cmVzZXJ2ZT0KLXN0cnVjdHVyZSIpLmhpZGUoKSwkKCIuanN0cmVlLWxpbmstZmlsZXMiKS5oaWRl
KCksJCgiLmpzdHJlZS1maWxlcy1tZXNzYWdlPQoiKS5zaG93KCkpOiJqc3RyZWUtZGlzYWJsZS1m
aWxlcyI9M0Q9M0Q9M0RjLnRhcmdldC52YWx1ZSYmKCQoIi5qc3RyZWUtZmlsZXM9Ci1tZXNzYWdl
IikuaGlkZSgpLCQoIi5qc3RyZWUtZm9sZGVycy1tZXNzYWdlIikuc2hvdygpLCQoIi5qc3RyZWUt
bGluay1maWxlcz0KIikuc2hvdygpLCQoIi5qc3RyZWUtcHJlc2VydmUtc3RydWN0dXJlIikuc2hv
dygpLGEuZGlzYWJsZWRfanN0cmVlX2VsZW1lbnQ9Cj0zRCJmaWxlcyIsYi5yZW5kZXJKc3RyZWUo
YSkpfSl9LHJlbmRlckpzdHJlZTpmdW5jdGlvbihhKXt0aGlzLm9wdGlvbnM9M0RfLj0KZXh0ZW5k
KHRoaXMub3B0aW9ucyxhKTt2YXIgYj0zRGEuc291cmNlfHwidXNlcmRpciIsZT0zRHRoaXMub3B0
aW9ucy5kaXNhYmxlPQpkX2pzdHJlZV9lbGVtZW50O3RoaXMuanN0cmVlPTNEbmV3IGQuSnN0cmVl
LHRoaXMuanN0cmVlLnVybD0zRHRoaXMuanN0cmVlLnU9CnJsUm9vdCsiP3RhcmdldD0zRCIrYisi
JmZvcm1hdD0zRGpzdHJlZSZkaXNhYmxlPTNEIitlLHRoaXMuanN0cmVlLmZldGNoKHtzdT0KY2Nl
c3M6ZnVuY3Rpb24oYSl7ZGVmaW5lKCJqcXVlcnkiLGZ1bmN0aW9uKCl7cmV0dXJuIGpRdWVyeX0p
LHJlcXVpcmUoWyJsaWJzPQovanF1ZXJ5L2pzdHJlZSJdLGZ1bmN0aW9uKCl7JCgiI2pzdHJlZV9i
cm93c2VyIikuanN0cmVlKCJkZXN0cm95IiksJCgiI2pzdHI9CmVlX2Jyb3dzZXIiKS5qc3RyZWUo
e2NvcmU6e2RhdGE6YX0scGx1Z2luczpbInR5cGVzIiwiY2hlY2tib3giXSx0eXBlczp7Zm9sZD0K
ZXI6e2ljb246ImpzdHJlZS1mb2xkZXIifSxmaWxlOntpY29uOiJqc3RyZWUtZmlsZSJ9fSxjaGVj
a2JveDp7dGhyZWVfc3RhdGU6PQohMX19KX0pfSxlcnJvcjpmdW5jdGlvbihhLGIpeyJ1bmRlZmlu
ZWQiIT0zRHR5cGVvZiBiLnJlc3BvbnNlSlNPTj80MDQwMDE9M0Q9Cj0zRD0zRGIucmVzcG9uc2VK
U09OLmVycl9jb2RlP2Mud2FybmluZyhiLnJlc3BvbnNlSlNPTi5lcnJfbXNnKTpjLmVycm9yKGIu
cj0KZXNwb25zZUpTT04uZXJyX21zZyk6Yy5lcnJvcigiQW4gZXJyb3Igb2N1cnJlZC4iKX19KX0s
aW1wb3J0RnJvbVBhdGhzQ2xpY2tlPQpkOmZ1bmN0aW9uKCl7dmFyIGE9M0R0aGlzLm1vZGFsLiRl
bC5maW5kKCIucHJlc2VydmUtY2hlY2tib3giKS5pcygiOmNoZWNrZWQ9CiIpLGI9M0R0aGlzLm1v
ZGFsLiRlbC5maW5kKCIubGluay1jaGVja2JveCIpLmlzKCI6Y2hlY2tlZCIpLGQ9M0R0aGlzLnNl
bGVjdD0KX2V4dGVuc2lvbi52YWx1ZSgpLGU9M0R0aGlzLnNlbGVjdF9nZW5vbWUudmFsdWUoKSxm
PTNEJCgidGV4dGFyZWEjaW1wb3J0X3BhPQp0aHMiKS52YWwoKSxnPTNEW107aWYoZil7dGhpcy5t
b2RhbC5kaXNhYmxlQnV0dG9uKCJJbXBvcnQiKSxmPTNEZi5zcGxpdCgiXG49CiIpO2Zvcih2YXIg
aD0zRGYubGVuZ3RoLTE7aD49M0QwO2gtLSl0cmltbWVkPTNEZltoXS50cmltKCksMCE9M0Q9M0R0
cmltbWVkLj0KbGVuZ3RoJiZnLnB1c2godHJpbW1lZCk7dGhpcy5pbml0Q2hhaW5DYWxsQ29udHJv
bCh7bGVuZ3RoOmcubGVuZ3RoLGFjdGlvbjoiPQphZGRpbmdfZGF0YXNldHMifSksdGhpcy5jaGFp
bkNhbGxJbXBvcnRpbmdGb2xkZXJzKHtwYXRoczpnLHByZXNlcnZlX2RpcnM6YSw9CmxpbmtfZGF0
YTpiLHNvdXJjZToiYWRtaW5fcGF0aCIsZmlsZV90eXBlOmQsZGJrZXk6ZX0pfWVsc2UgYy5pbmZv
KCJQbGVhc2UgZT0KbnRlciBhIHBhdGggcmVsYXRpdmUgdG8gR2FsYXh5IHJvb3QuIil9LGluaXRD
aGFpbkNhbGxDb250cm9sOmZ1bmN0aW9uKGEpe3ZhPQpyIGI7c3dpdGNoKGEuYWN0aW9uKXtjYXNl
ImFkZGluZ19kYXRhc2V0cyI6Yj0zRHRoaXMudGVtcGxhdGVBZGRpbmdEYXRhc2V0c1A9CnJvZ3Jl
c3NCYXIoKSx0aGlzLm1vZGFsLiRlbC5maW5kKCIubW9kYWwtYm9keSIpLmh0bWwoYih7Zm9sZGVy
X25hbWU6dGhpcy5vcD0KdGlvbnMuZm9sZGVyX25hbWV9KSk7YnJlYWs7Y2FzZSJkZWxldGluZ19k
YXRhc2V0cyI6Yj0zRHRoaXMudGVtcGxhdGVEZWxldGluPQpnRGF0YXNldHNQcm9ncmVzc0Jhcigp
LHRoaXMubW9kYWwuJGVsLmZpbmQoIi5tb2RhbC1ib2R5IikuaHRtbChiKCkpO2JyZWFrO2M9CmFz
ZSJ0b19oaXN0b3J5IjpiPTNEdGhpcy50ZW1wbGF0ZUltcG9ydEludG9IaXN0b3J5UHJvZ3Jlc3NC
YXIoKSx0aGlzLm1vZGFsLj0KJGVsLmZpbmQoIi5tb2RhbC1ib2R5IikuaHRtbChiKHtoaXN0b3J5
X25hbWU6YS5oaXN0b3J5X25hbWV9KSk7YnJlYWs7ZGVmYXVsPQp0OmNvbnNvbGUuZXJyb3IoIldy
b25nIGFjdGlvbiBzcGVjaWZpZWQuIil9dGhpcy5wcm9ncmVzcz0zRDAsdGhpcy5wcm9ncmVzc1M9
CnRlcD0zRDEwMC9hLmxlbmd0aCx0aGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLnRvdGFs
X251bWJlcj0zRGEubGVuZ3RoLD0KdGhpcy5vcHRpb25zLmNoYWluX2NhbGxfY29udHJvbC5mYWls
ZWRfbnVtYmVyPTNEMH0saW1wb3J0RnJvbUpzdHJlZVBhdGg6ZnVuPQpjdGlvbihhLGIpe3ZhciBk
PTNEJCgiI2pzdHJlZV9icm93c2VyIikuanN0cmVlKCkuZ2V0X3NlbGVjdGVkKCEwKSxlPTNEdGhp
cy49Cm1vZGFsLiRlbC5maW5kKCIucHJlc2VydmUtY2hlY2tib3giKS5pcygiOmNoZWNrZWQiKSxm
PTNEdGhpcy5tb2RhbC4kZWwuZmluZD0KKCIubGluay1jaGVja2JveCIpLmlzKCI6Y2hlY2tlZCIp
LGc9M0R0aGlzLnNlbGVjdF9leHRlbnNpb24udmFsdWUoKSxoPTNEdGhpPQpzLnNlbGVjdF9nZW5v
bWUudmFsdWUoKSxpPTNEZFswXS50eXBlLGo9M0RbXTtpZihkLmxlbmd0aDwxKWMuaW5mbygiUGxl
YXNlIHM9CmVsZWN0IHNvbWUgaXRlbXMgZmlyc3QuIik7ZWxzZXt0aGlzLm1vZGFsLmRpc2FibGVC
dXR0b24oIkltcG9ydCIpO2Zvcih2YXIgaz0KPTNEZC5sZW5ndGgtMTtrPj0zRDA7ay0tKXZvaWQg
MCE9M0Q9M0RkW2tdLmxpX2F0dHIuZnVsbF9wYXRoJiZqLnB1c2goZFtrXS5sPQppX2F0dHIuZnVs
bF9wYXRoKTtpZih0aGlzLmluaXRDaGFpbkNhbGxDb250cm9sKHtsZW5ndGg6ai5sZW5ndGgsYWN0
aW9uOiJhZGQ9CmluZ19kYXRhc2V0cyJ9KSwiZm9sZGVyIj0zRD0zRD0zRGkpe3ZhciBsPTNEYi5z
b3VyY2UrIl9mb2xkZXIiO3RoaXMuY2hhaW5DYT0KbGxJbXBvcnRpbmdGb2xkZXJzKHtwYXRoczpq
LHByZXNlcnZlX2RpcnM6ZSxsaW5rX2RhdGE6Zixzb3VyY2U6bCxmaWxlX3R5cGU6PQpnLGRia2V5
Omh9KX1lbHNlIGlmKCJmaWxlIj0zRD0zRD0zRGkpe3ZhciBsPTNEYi5zb3VyY2UrIl9maWxlIjt0
aGlzLmNoYWluQ2E9CmxsSW1wb3J0aW5nVXNlcmRpckZpbGVzKHtwYXRoczpqLGZpbGVfdHlwZTpn
LGRia2V5Omgsc291cmNlOmx9KX19fSxmZXRjaEFuZD0KRGlzcGxheUhpc3RvcnlDb250ZW50czpm
dW5jdGlvbihhKXt2YXIgYj0zRG5ldyBkLkhpc3RvcnlDb250ZW50cyh7aWQ6YX0pLGU9Cj0zRHRo
aXM7Yi5mZXRjaCh7c3VjY2VzczpmdW5jdGlvbihiKXt2YXIgYz0zRGUudGVtcGxhdGVIaXN0b3J5
Q29udGVudHMoKTtlLj0KaGlzdG9yaWVzLmdldChhKS5zZXQoe2NvbnRlbnRzOmJ9KSxlLm1vZGFs
LiRlbC5maW5kKCIjc2VsZWN0ZWRfaGlzdG9yeV9jb250PQplbnQiKS5odG1sKGMoe2hpc3Rvcnlf
Y29udGVudHM6Yi5tb2RlbHMucmV2ZXJzZSgpfSkpfSxlcnJvcjpmdW5jdGlvbihhLGIpe2M9Ci5l
cnJvcigidW5kZWZpbmVkIiE9M0R0eXBlb2YgYi5yZXNwb25zZUpTT04/Yi5yZXNwb25zZUpTT04u
ZXJyX21zZzoiQW4gZXJybz0KciBvY3VycmVkLiIpfX0pfSxhZGRBbGxEYXRhc2V0c0Zyb21IaXN0
b3J5OmZ1bmN0aW9uKCl7dmFyIGE9M0R0aGlzLm1vZGFsLiRlPQpsLmZpbmQoIiNzZWxlY3RlZF9o
aXN0b3J5X2NvbnRlbnQiKS5maW5kKCI6Y2hlY2tlZCIpLGI9M0RbXSxlPTNEW107aWYoYS5sZW49
Cmd0aDwxKWMuaW5mbygiWW91IG11c3Qgc2VsZWN0IHNvbWUgZGF0YXNldHMgZmlyc3QuIik7ZWxz
ZXt0aGlzLm1vZGFsLmRpc2FibD0KZUJ1dHRvbigiQWRkIiksYS5lYWNoKGZ1bmN0aW9uKCl7dmFy
IGE9M0QkKHRoaXMucGFyZW50RWxlbWVudCkuZGF0YSgiaWQiKTthPQomJmIucHVzaChhKX0pO2Zv
cih2YXIgZj0zRGIubGVuZ3RoLTE7Zj49M0QwO2YtLSl7aGlzdG9yeV9kYXRhc2V0X2lkPTNEYltm
XTs9CnZhciBnPTNEbmV3IGQuSXRlbTtnLnVybD0zRCh3aW5kb3cuZ2FsYXh5X2NvbmZpZz9nYWxh
eHlfY29uZmlnLnJvb3Q6Ii8iKSsiYT0KcGkvZm9sZGVycy8iK3RoaXMub3B0aW9ucy5pZCsiL2Nv
bnRlbnRzIixnLnNldCh7ZnJvbV9oZGFfaWQ6aGlzdG9yeV9kYXRhc2V0PQpfaWR9KSxlLnB1c2go
Zyl9dGhpcy5pbml0Q2hhaW5DYWxsQ29udHJvbCh7bGVuZ3RoOmUubGVuZ3RoLGFjdGlvbjoiYWRk
aW5nX2Q9CmF0YXNldHMifSksdGhpcy5jaGFpbkNhbGxBZGRpbmdIZGFzKGUpfX0sY2hhaW5DYWxs
SW1wb3J0aW5nSW50b0hpc3Rvcnk6ZnVuYz0KdGlvbihhLGIpe3ZhciBkPTNEdGhpcyxlPTNEYS5w
b3AoKTtpZigidW5kZWZpbmVkIj0zRD0zRHR5cGVvZiBlKXJldHVybiAwPTNEPQo9M0Q9M0R0aGlz
Lm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLmZhaWxlZF9udW1iZXI/Yy5zdWNjZXNzKCJTZWxl
Y3RlZCBkYXQ9CmFzZXRzIGltcG9ydGVkIGludG8gaGlzdG9yeS4gQ2xpY2sgdGhpcyB0byBzdGFy
dCBhbmFseXNpbmcgaXQuIiwiIix7b25jbGljaz0KOmZ1bmN0aW9uKCl7d2luZG93LmxvY2F0aW9u
PTNEIi8ifX0pOnRoaXMub3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wuZmFpbGVkPQpfbnVtYmVy
PTNEPTNEPTNEdGhpcy5vcHRpb25zLmNoYWluX2NhbGxfY29udHJvbC50b3RhbF9udW1iZXI/Yy5l
cnJvcigiVGhlcmU9CiB3YXMgYW4gZXJyb3IgYW5kIG5vIGRhdGFzZXRzIHdlcmUgaW1wb3J0ZWQg
aW50byBoaXN0b3J5LiIpOnRoaXMub3B0aW9ucy5jaD0KYWluX2NhbGxfY29udHJvbC5mYWlsZWRf
bnVtYmVyPHRoaXMub3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wudG90YWxfbnVtYmVyPQomJmMu
d2FybmluZygiU29tZSBvZiB0aGUgZGF0YXNldHMgY291bGQgbm90IGJlIGltcG9ydGVkIGludG8g
aGlzdG9yeS4gQ2xpY2s9CiB0aGlzIHRvIHNlZSB3aGF0IHdhcyBpbXBvcnRlZC4iLCIiLHtvbmNs
aWNrOmZ1bmN0aW9uKCl7d2luZG93LmxvY2F0aW9uPTNEIj0KLyJ9fSksR2FsYXh5Lm1vZGFsLmhp
ZGUoKSwhMDt2YXIgZj0zRCQud2hlbihlLnNhdmUoe2NvbnRlbnQ6ZS5jb250ZW50LHNvdXJjPQpl
OmUuc291cmNlfSkpO2YuZG9uZShmdW5jdGlvbigpe2QudXBkYXRlUHJvZ3Jlc3MoKSxkLmNoYWlu
Q2FsbEltcG9ydGluZ0ludG89Ckhpc3RvcnkoYSxiKX0pLmZhaWwoZnVuY3Rpb24oKXtkLm9wdGlv
bnMuY2hhaW5fY2FsbF9jb250cm9sLmZhaWxlZF9udW1iZXIrPQo9M0QxLGQudXBkYXRlUHJvZ3Jl
c3MoKSxkLmNoYWluQ2FsbEltcG9ydGluZ0ludG9IaXN0b3J5KGEsYil9KX0sY2hhaW5DYWxsSW09
CnBvcnRpbmdVc2VyZGlyRmlsZXM6ZnVuY3Rpb24oYSl7dmFyIGI9M0R0aGlzLGQ9M0RhLnBhdGhz
LnBvcCgpO2lmKCJ1bmRlZmluZT0KZCI9M0Q9M0R0eXBlb2YgZClyZXR1cm4gMD0zRD0zRD0zRHRo
aXMub3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wuZmFpbGVkX251PQptYmVyPyhjLnN1Y2Nlc3Mo
IlNlbGVjdGVkIGZpbGVzIGltcG9ydGVkIGludG8gdGhlIGN1cnJlbnQgZm9sZGVyIiksR2FsYXh5
Lm09Cm9kYWwuaGlkZSgpKTpjLmVycm9yKCJBbiBlcnJvciBvY2N1cmVkLiIpLCEwO3ZhciBlPTNE
JC53aGVuKCQucG9zdCgod2luZG93Lj0KZ2FsYXh5X2NvbmZpZz9nYWxheHlfY29uZmlnLnJvb3Q6
Ii8iKSsiYXBpL2xpYnJhcmllcy9kYXRhc2V0cz9lbmNvZGVkX2ZvbGRlPQpyX2lkPTNEIitiLmlk
KyImc291cmNlPTNEIithLnNvdXJjZSsiJnBhdGg9M0QiK2QrIiZmaWxlX3R5cGU9M0QiK2EuZmls
ZV90eXA9CmUrIiZkYmtleT0zRCIrYS5kYmtleSkpO2UuZG9uZShmdW5jdGlvbigpe2IudXBkYXRl
UHJvZ3Jlc3MoKSxiLmNoYWluQ2FsbEltcD0Kb3J0aW5nVXNlcmRpckZpbGVzKGEpfSkuZmFpbChm
dW5jdGlvbigpe2Iub3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wuZmFpbGVkPQpfbnVtYmVyKz0z
RDEsYi51cGRhdGVQcm9ncmVzcygpLGIuY2hhaW5DYWxsSW1wb3J0aW5nVXNlcmRpckZpbGVzKGEp
fSl9LGNoYWk9Cm5DYWxsSW1wb3J0aW5nRm9sZGVyczpmdW5jdGlvbihhKXt2YXIgYj0zRHRoaXMs
ZD0zRGEucGF0aHMucG9wKCk7aWYoInVuZGVmaT0KbmVkIj0zRD0zRHR5cGVvZiBkKXJldHVybiAw
PTNEPTNEPTNEdGhpcy5vcHRpb25zLmNoYWluX2NhbGxfY29udHJvbC5mYWlsZWRfPQpudW1iZXI/
KGMuc3VjY2VzcygiU2VsZWN0ZWQgZm9sZGVycyBhbmQgdGhlaXIgY29udGVudHMgaW1wb3J0ZWQg
aW50byB0aGUgY3U9CnJyZW50IGZvbGRlci4iKSxHYWxheHkubW9kYWwuaGlkZSgpKTpjLmVycm9y
KCJBbiBlcnJvciBvY2N1cmVkLiIpLCEwO3ZhciBlPQo9M0QkLndoZW4oJC5wb3N0KCh3aW5kb3cu
Z2FsYXh5X2NvbmZpZz9nYWxheHlfY29uZmlnLnJvb3Q6Ii8iKSsiYXBpL2xpYnJhcmk9CmVzL2Rh
dGFzZXRzP2VuY29kZWRfZm9sZGVyX2lkPTNEIitiLmlkKyImc291cmNlPTNEIithLnNvdXJjZSsi
JnBhdGg9M0QiK2QrIj0KJnByZXNlcnZlX2RpcnM9M0QiK2EucHJlc2VydmVfZGlycysiJmxpbmtf
ZGF0YT0zRCIrYS5saW5rX2RhdGErIiZmaWxlX3R5cGU9Cj0zRCIrYS5maWxlX3R5cGUrIiZkYmtl
eT0zRCIrYS5kYmtleSkpO2UuZG9uZShmdW5jdGlvbigpe2IudXBkYXRlUHJvZ3Jlc3MoKT0KLGIu
Y2hhaW5DYWxsSW1wb3J0aW5nRm9sZGVycyhhKX0pLmZhaWwoZnVuY3Rpb24oKXtiLm9wdGlvbnMu
Y2hhaW5fY2FsbF9jb250PQpyb2wuZmFpbGVkX251bWJlcis9M0QxLGIudXBkYXRlUHJvZ3Jlc3Mo
KSxiLmNoYWluQ2FsbEltcG9ydGluZ0ZvbGRlcnMoYSl9KX09CixjaGFpbkNhbGxBZGRpbmdIZGFz
OmZ1bmN0aW9uKGEpe3ZhciBiPTNEdGhpczt0aGlzLmFkZGVkX2hkYXM9M0RuZXcgZC5Gb2xkZT0K
cjt2YXIgZT0zRGEucG9wKCk7aWYoInVuZGVmaW5lZCI9M0Q9M0R0eXBlb2YgZSlyZXR1cm4gMD0z
RD0zRD0zRHRoaXMub3B0aW9uPQpzLmNoYWluX2NhbGxfY29udHJvbC5mYWlsZWRfbnVtYmVyP2Mu
c3VjY2VzcygiU2VsZWN0ZWQgZGF0YXNldHMgZnJvbSBoaXN0b3I9CnkgYWRkZWQgdG8gdGhlIGZv
bGRlciIpOnRoaXMub3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wuZmFpbGVkX251bWJlcj0zRD0z
RD0KPTNEdGhpcy5vcHRpb25zLmNoYWluX2NhbGxfY29udHJvbC50b3RhbF9udW1iZXI/Yy5lcnJv
cigiVGhlcmUgd2FzIGFuIGVycm9yPQogYW5kIG5vIGRhdGFzZXRzIHdlcmUgYWRkZWQgdG8gdGhl
IGZvbGRlci4iKTp0aGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm89CmwuZmFpbGVkX251bWJl
cjx0aGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLnRvdGFsX251bWJlciYmYy53YXJuaW5n
KCJTbz0KbWUgb2YgdGhlIGRhdGFzZXRzIGNvdWxkIG5vdCBiZSBhZGRlZCB0byB0aGUgZm9sZGVy
IiksR2FsYXh5Lm1vZGFsLmhpZGUoKSx0PQpoaXMuYWRkZWRfaGRhczt2YXIgZj0zRCQud2hlbihl
LnNhdmUoe2Zyb21faGRhX2lkOmUuZ2V0KCJmcm9tX2hkYV9pZCIpfSkpO2Y9Ci5kb25lKGZ1bmN0
aW9uKGMpe0dhbGF4eS5saWJyYXJpZXMuZm9sZGVyTGlzdFZpZXcuY29sbGVjdGlvbi5hZGQoYyks
Yi51cGRhdD0KZVByb2dyZXNzKCksYi5jaGFpbkNhbGxBZGRpbmdIZGFzKGEpfSkuZmFpbChmdW5j
dGlvbigpe2Iub3B0aW9ucy5jaGFpbl9jYWxsPQpfY29udHJvbC5mYWlsZWRfbnVtYmVyKz0zRDEs
Yi51cGRhdGVQcm9ncmVzcygpLGIuY2hhaW5DYWxsQWRkaW5nSGRhcyhhKX0pfSw9CmNoYWluQ2Fs
bERlbGV0aW5nSXRlbXM6ZnVuY3Rpb24oYSl7dmFyIGI9M0R0aGlzO3RoaXMuZGVsZXRlZF9pdGVt
cz0zRG5ldyBkLj0KRm9sZGVyO3ZhciBlPTNEYS5wb3AoKTtpZigidW5kZWZpbmVkIj0zRD0zRHR5
cGVvZiBlKXJldHVybiAwPTNEPTNEPTNEdGhpcy5vPQpwdGlvbnMuY2hhaW5fY2FsbF9jb250cm9s
LmZhaWxlZF9udW1iZXI/Yy5zdWNjZXNzKCJTZWxlY3RlZCBpdGVtcyB3ZXJlIGRlbGU9CnRlZC4i
KTp0aGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLmZhaWxlZF9udW1iZXI9M0Q9M0Q9M0R0
aGlzLm9wdGlvbnMuYz0KaGFpbl9jYWxsX2NvbnRyb2wudG90YWxfbnVtYmVyP2MuZXJyb3IoIlRo
ZXJlIHdhcyBhbiBlcnJvciBhbmQgbm8gaXRlbXMgd2VyPQplIGRlbGV0ZWQuIFBsZWFzZSBtYWtl
IHN1cmUgeW91IGhhdmUgc3VmZmljaWVudCBwZXJtaXNzaW9ucy4iKTp0aGlzLm9wdGlvbnM9Ci5j
aGFpbl9jYWxsX2NvbnRyb2wuZmFpbGVkX251bWJlcjx0aGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9j
b250cm9sLnRvdGFsX251bT0KYmVyJiZjLndhcm5pbmcoIlNvbWUgb2YgdGhlIGl0ZW1zIGNvdWxk
IG5vdCBiZSBkZWxldGVkLiBQbGVhc2UgbWFrZSBzdXJlIHlvPQp1IGhhdmUgc3VmZmljaWVudCBw
ZXJtaXNzaW9ucy4iKSxHYWxheHkubW9kYWwuaGlkZSgpLHRoaXMuZGVsZXRlZF9pdGVtczt2YXI9
CiBmPTNEJC53aGVuKGUuZGVzdHJveSgpKTtmLmRvbmUoZnVuY3Rpb24oYyl7aWYoR2FsYXh5Lmxp
YnJhcmllcy5mb2xkZXJMaXN0Vj0KaWV3LmNvbGxlY3Rpb24ucmVtb3ZlKGUuaWQpLGIudXBkYXRl
UHJvZ3Jlc3MoKSxHYWxheHkubGlicmFyaWVzLmZvbGRlckxpc3RWPQppZXcub3B0aW9ucy5pbmNs
dWRlX2RlbGV0ZWQpe3ZhciBmPTNEbnVsbDsiZm9sZGVyIj0zRD0zRD0zRGMudHlwZXx8IkxpYnJh
cnk9CkZvbGRlciI9M0Q9M0Q9M0RjLm1vZGVsX2NsYXNzP2Y9M0RuZXcgZC5Gb2xkZXJBc01vZGVs
KGMpOiJmaWxlIj0zRD0zRD0zRGMudD0KeXBlfHwiTGlicmFyeURhdGFzZXQiPTNEPTNEPTNEYy5t
b2RlbF9jbGFzcz9mPTNEbmV3IGQuSXRlbShjKTooY29uc29sZS5lcnJvPQpyKCJVbmtub3duIGxp
YnJhcnkgaXRlbSB0eXBlIGZvdW5kLiIpLGNvbnNvbGUuZXJyb3IoYy50eXBlfHxjLm1vZGVsX2Ns
YXNzKSk9CixHYWxheHkubGlicmFyaWVzLmZvbGRlckxpc3RWaWV3LmNvbGxlY3Rpb24uYWRkKGYp
fWIuY2hhaW5DYWxsRGVsZXRpbmdJdGVtcz0KKGEpfSkuZmFpbChmdW5jdGlvbigpe2Iub3B0aW9u
cy5jaGFpbl9jYWxsX2NvbnRyb2wuZmFpbGVkX251bWJlcis9M0QxLGIudXBkPQphdGVQcm9ncmVz
cygpLGIuY2hhaW5DYWxsRGVsZXRpbmdJdGVtcyhhKX0pfSxjaGVja0luY2x1ZGVEZWxldGVkOmZ1
bmN0aW9uKGE9Cil7R2FsYXh5LmxpYnJhcmllcy5mb2xkZXJMaXN0Vmlldy5mZXRjaEZvbGRlcihh
LnRhcmdldC5jaGVja2VkP3tpbmNsdWRlX2RlbD0KZXRlZDohMH06e2luY2x1ZGVfZGVsZXRlZDoh
MX0pfSxkZWxldGVTZWxlY3RlZERhdGFzZXRzOmZ1bmN0aW9uKCl7dmFyIGE9M0QkPQooIiNmb2xk
ZXJfdGFibGUiKS5maW5kKCI6Y2hlY2tlZCIpO2lmKDA9M0Q9M0Q9M0RhLmxlbmd0aCljLmluZm8o
IllvdSBtdXN0IHM9CmVsZWN0IGF0IGxlYXN0IG9uZSBkYXRhc2V0IGZvciBkZWxldGlvbi4iKTtl
bHNle3ZhciBiPTNEdGhpcy50ZW1wbGF0ZURlbGV0aT0KbmdEYXRhc2V0c1Byb2dyZXNzQmFyKCk7
dGhpcy5tb2RhbD0zREdhbGF4eS5tb2RhbCx0aGlzLm1vZGFsLnNob3coe2Nsb3NpbmdfPQpldmVu
dHM6ITAsdGl0bGU6IkRlbGV0aW5nIHNlbGVjdGVkIGRhdGFzZXRzIixib2R5OmIoe30pLGJ1dHRv
bnM6e0Nsb3NlOmZ1bmM9CnRpb24oKXtHYWxheHkubW9kYWwuaGlkZSgpfX19KSx0aGlzLm9wdGlv
bnMuY2hhaW5fY2FsbF9jb250cm9sLnRvdGFsX251bWJlcj0KPTNEMCx0aGlzLm9wdGlvbnMuY2hh
aW5fY2FsbF9jb250cm9sLmZhaWxlZF9udW1iZXI9M0QwO3ZhciBlPTNEW10sZj0zRFtdO2EuPQpl
YWNoKGZ1bmN0aW9uKCl7IiIhPTNEPTNEdGhpcy5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQu
aWQmJigiRiI9M0Q9M0R0aGk9CnMucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LmlkLnN1YnN0
cmluZygwLDEpP2YucHVzaCh0aGlzLnBhcmVudEVsZW1lbnQucD0KYXJlbnRFbGVtZW50LmlkKTpl
LnB1c2godGhpcy5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuaWQpKX0pO3ZhciBnPTNEZS5s
PQplbmd0aCtmLmxlbmd0aDt0aGlzLnByb2dyZXNzU3RlcD0zRDEwMC9nLHRoaXMucHJvZ3Jlc3M9
M0QwO2Zvcih2YXIgaD0zRFtdLGk9Cj0zRGUubGVuZ3RoLTE7aT49M0QwO2ktLSl7dmFyIGo9M0Ru
ZXcgZC5JdGVtKHtpZDplW2ldfSk7aC5wdXNoKGopfWZvcih2YXIgaT0KPTNEZi5sZW5ndGgtMTtp
Pj0zRDA7aS0tKXt2YXIgaz0zRG5ldyBkLkZvbGRlckFzTW9kZWwoe2lkOmZbaV19KTtoLnB1c2go
ayl9PQp0aGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLnRvdGFsX251bWJlcj0zRGcubGVu
Z3RoLHRoaXMuY2hhaW5DYWxsRGVsZXQ9CmluZ0l0ZW1zKGgpfX0sc2hvd0xpYkluZm86ZnVuY3Rp
b24oKXt2YXIgYT0zREdhbGF4eS5saWJyYXJpZXMuZm9sZGVyTGlzdFZpZT0Kdy5mb2xkZXJDb250
YWluZXIuYXR0cmlidXRlcy5tZXRhZGF0YS5wYXJlbnRfbGlicmFyeV9pZCxiPTNEbnVsbCxlPTNE
dGhpcztuPQp1bGwhPTNEPTNER2FsYXh5LmxpYnJhcmllcy5saWJyYXJ5TGlzdFZpZXc/KGI9M0RH
YWxheHkubGlicmFyaWVzLmxpYnJhcnlMaXM9CnRWaWV3LmNvbGxlY3Rpb24uZ2V0KGEpLHRoaXMu
c2hvd0xpYkluZm9Nb2RhbChiKSk6KGI9M0RuZXcgZC5MaWJyYXJ5KHtpZDphfT0KKSxiLmZldGNo
KHtzdWNjZXNzOmZ1bmN0aW9uKCl7ZS5zaG93TGliSW5mb01vZGFsKGIpfSxlcnJvcjpmdW5jdGlv
bihhLGIpe2MuPQplcnJvcigidW5kZWZpbmVkIiE9M0R0eXBlb2YgYi5yZXNwb25zZUpTT04/Yi5y
ZXNwb25zZUpTT04uZXJyX21zZzoiQW4gZXJyb3I9CiBvY3VycmVkLiIpfX0pKX0sc2hvd0xpYklu
Zm9Nb2RhbDpmdW5jdGlvbihhKXt2YXIgYj0zRHRoaXMudGVtcGxhdGVMaWJJbmZvST0Kbk1vZGFs
KCk7dGhpcy5tb2RhbD0zREdhbGF4eS5tb2RhbCx0aGlzLm1vZGFsLnNob3coe2Nsb3NpbmdfZXZl
bnRzOiEwLHRpdGxlPQo6IkxpYnJhcnkgSW5mb3JtYXRpb24iLGJvZHk6Yih7bGlicmFyeTphfSks
YnV0dG9uczp7Q2xvc2U6ZnVuY3Rpb24oKXtHYWxheHk9Ci5tb2RhbC5oaWRlKCl9fX0pfSxzaG93
SW1wb3J0TW9kYWw6ZnVuY3Rpb24oYSl7c3dpdGNoKGEuc291cmNlKXtjYXNlImhpc3Rvcj0KeSI6
dGhpcy5hZGRGaWxlc0Zyb21IaXN0b3J5TW9kYWwoKTticmVhaztjYXNlImltcG9ydGRpciI6dGhp
cy5pbXBvcnRGaWxlc0ZyPQpvbUdhbGF4eUZvbGRlck1vZGFsKHtzb3VyY2U6ImltcG9ydGRpciJ9
KTticmVhaztjYXNlInBhdGgiOnRoaXMuaW1wb3J0RmlsZXM9CkZyb21QYXRoTW9kYWwoKTticmVh
aztjYXNlInVzZXJkaXIiOnRoaXMuaW1wb3J0RmlsZXNGcm9tR2FsYXh5Rm9sZGVyTW9kYWwoez0K
c291cmNlOiJ1c2VyZGlyIn0pO2JyZWFrO2RlZmF1bHQ6R2FsYXh5LmxpYnJhcmllcy5saWJyYXJ5
X3JvdXRlci5iYWNrKCksYy5lPQpycm9yKCJJbnZhbGlkIGltcG9ydCBzb3VyY2UuIil9fSxzaG93
UGFnZVNpemVQcm9tcHQ6ZnVuY3Rpb24oKXt2YXIgYT0zRHByb209CnB0KCJIb3cgbWFueSBpdGVt
cyBwZXIgcGFnZSBkbyB5b3Ugd2FudCB0byBzZWU/IixHYWxheHkubGlicmFyaWVzLnByZWZlcmVu
Yz0KZXMuZ2V0KCJmb2xkZXJfcGFnZV9zaXplIikpO251bGwhPTNEYSYmYT0zRD0zRHBhcnNlSW50
KGEpJiYoR2FsYXh5LmxpYnJhcmllPQpzLnByZWZlcmVuY2VzLnNldCh7Zm9sZGVyX3BhZ2Vfc2l6
ZTpwYXJzZUludChhKX0pLEdhbGF4eS5saWJyYXJpZXMuZm9sZGVyTGk9CnN0Vmlldy5yZW5kZXIo
e2lkOnRoaXMub3B0aW9ucy5pZCxzaG93X3BhZ2U6MX0pKX0sdGVtcGxhdGVUb29sQmFyOmZ1bmN0
aW9uKD0KKXtyZXR1cm4gdG1wbF9hcnJheT0zRFtdLHRtcGxfYXJyYXkucHVzaCgnPGRpdiBjbGFz
cz0zRCJsaWJyYXJ5X3N0eWxlX2NvbnRhPQppbmVyIj4nKSx0bXBsX2FycmF5LnB1c2goJyA8ZGl2
IGlkPTNEImxpYnJhcnlfdG9vbGJhciI+JyksdG1wbF9hcnJheS5wdXNoKCc9Cjxmb3JtIGNsYXNz
PTNEImZvcm0taW5saW5lIiByb2xlPTNEImZvcm0iPicpLHRtcGxfYXJyYXkucHVzaCgiICAgPHNw
YW4+PHN0cj0Kb25nPkRBVEEgTElCUkFSSUVTPC9zdHJvbmc+PC9zcGFuPiIpLHRtcGxfYXJyYXku
cHVzaCgnICAgICAgICAgIDxzcGFuIGlkPTNEPQoiZm9sZGVyX3BhZ2luYXRvciIgY2xhc3M9M0Qi
bGlicmFyeS1wYWdpbmF0b3IiPicpLHRtcGxfYXJyYXkucHVzaCgiICAgICAgICA9CiAgPC9zcGFu
PiIpLHRtcGxfYXJyYXkucHVzaCgnPGRpdiBjbGFzcz0zRCJjaGVja2JveCB0b29sYmFyLWl0ZW0g
bG9nZ2VkLWRhdD0KYXNldC1tYW5pcHVsYXRpb24iIHN0eWxlPTNEImhlaWdodDogMjBweDsgZGlz
cGxheTpub25lOyI+JyksdG1wbF9hcnJheS5wdXNoPQooIjxsYWJlbD4iKSx0bXBsX2FycmF5LnB1
c2goJzxpbnB1dCBpZD0zRCJpbmNsdWRlX2RlbGV0ZWRfZGF0YXNldHNfY2hrIiB0eXA9CmU9M0Qi
Y2hlY2tib3giPiBpbmNsdWRlIGRlbGV0ZWQgPC9pbnB1dD4nKSx0bXBsX2FycmF5LnB1c2goIjwv
bGFiZWw+IiksdG1wbD0KX2FycmF5LnB1c2goIjwvZGl2PiIpLHRtcGxfYXJyYXkucHVzaCgnICAg
PGJ1dHRvbiBzdHlsZT0zRCJkaXNwbGF5Om5vbmU7IiBkPQphdGEtdG9nZ2xlPTNEInRvb2x0aXAi
IGRhdGEtcGxhY2VtZW50PTNEInRvcCIgdGl0bGU9M0QiQ3JlYXRlIE5ldyBGb2xkZXIiIGk9CmQ9
M0QidG9vbGJ0bl9jcmVhdGVfZm9sZGVyIiBjbGFzcz0zRCJidG4gYnRuLWRlZmF1bHQgcHJpbWFy
eS1idXR0b24gYWRkLWxpYj0KcmFyeS1pdGVtcyIgdHlwZT0zRCJidXR0b24iPjxzcGFuIGNsYXNz
PTNEImZhIGZhLXBsdXMiPjwvc3Bhbj48c3BhbiBjbGFzcz0KPTNEImZhIGZhLWZvbGRlciI+PC9z
cGFuPjwvYnV0dG9uPicpLHRtcGxfYXJyYXkucHVzaCgiPCUgaWYobXV0aXBsZV9hZGRfZGF0PQph
c2V0X29wdGlvbnMpIHsgJT4iKSx0bXBsX2FycmF5LnB1c2goJyAgIDxkaXYgY2xhc3M9M0QiYnRu
LWdyb3VwIGFkZC1saWJyYXI9CnktaXRlbXMiIHN0eWxlPTNEImRpc3BsYXk6bm9uZTsiPicpLHRt
cGxfYXJyYXkucHVzaCgnICAgICA8YnV0dG9uIHRpdGxlPTNEIj0KQWRkIERhdGFzZXRzIHRvIEN1
cnJlbnQgRm9sZGVyIiBpZD0zRCIiIHR5cGU9M0QiYnV0dG9uIiBjbGFzcz0zRCJwcmltYXJ5LWJ1
PQp0dG9uIGRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9M0QiZHJvcGRvd24iPicpLHRtcGxf
YXJyYXkucHVzaCgnICAgICA8c3A9CmFuIGNsYXNzPTNEImZhIGZhLXBsdXMiPjwvc3Bhbj48c3Bh
biBjbGFzcz0zRCJmYSBmYS1maWxlIj48L3NwYW4+PHNwYW4gY2xhcz0Kcz0zRCJjYXJldCI+PC9z
cGFuPicpLHRtcGxfYXJyYXkucHVzaCgiICAgICA8L2J1dHRvbj4iKSx0bXBsX2FycmF5LnB1c2go
JyAgPQogICA8dWwgY2xhc3M9M0QiZHJvcGRvd24tbWVudSIgcm9sZT0zRCJtZW51Ij4nKSx0bXBs
X2FycmF5LnB1c2goJyAgICAgICAgPGw9Cmk+PGEgaHJlZj0zRCIjZm9sZGVycy88JT0zRCBpZCAl
Pi9pbXBvcnQvaGlzdG9yeSI+IGZyb20gSGlzdG9yeTwvYT48L2xpPicpLD0KdG1wbF9hcnJheS5w
dXNoKCI8JSBpZihHYWxheHkuY29uZmlnLnVzZXJfbGlicmFyeV9pbXBvcnRfZGlyICE9M0Q9M0Qg
bnVsbCkgPQp7ICU+IiksdG1wbF9hcnJheS5wdXNoKCcgICAgICAgIDxsaT48YSBocmVmPTNEIiNm
b2xkZXJzLzwlPTNEIGlkICU+L2ltcG9ydC89CnVzZXJkaXIiPiBmcm9tIFVzZXIgRGlyZWN0b3J5
PC9hPjwvbGk+JyksdG1wbF9hcnJheS5wdXNoKCI8JSB9ICU+IiksdG1wbF9hcj0KcmF5LnB1c2go
IjwlIGlmKEdhbGF4eS5jb25maWcuYWxsb3dfbGlicmFyeV9wYXRoX3Bhc3RlKSB7ICU+IiksdG1w
bF9hcnJheS5wPQp1c2goJyAgIDxsaSBjbGFzcz0zRCJkaXZpZGVyIj48L2xpPicpLHRtcGxfYXJy
YXkucHVzaCgnICAgPGxpIGNsYXNzPTNEImRyb3A9CmRvd24taGVhZGVyIj5BZG1pbnMgb25seTwv
bGk+JyksdG1wbF9hcnJheS5wdXNoKCI8JSBpZihHYWxheHkuY29uZmlnLmxpYnJhcj0KeV9pbXBv
cnRfZGlyICE9M0Q9M0QgbnVsbCkgeyAlPiIpLHRtcGxfYXJyYXkucHVzaCgnICAgPGxpPjxhIGhy
ZWY9M0QiI2ZvbGRlPQpycy88JT0zRCBpZCAlPi9pbXBvcnQvaW1wb3J0ZGlyIj5mcm9tIEltcG9y
dCBEaXJlY3Rvcnk8L2E+PC9saT4nKSx0bXBsX2FycmE9CnkucHVzaCgiPCUgfSAlPiIpLHRtcGxf
YXJyYXkucHVzaCgiPCUgaWYoR2FsYXh5LmNvbmZpZy5hbGxvd19saWJyYXJ5X3BhdGhfcD0KYXN0
ZSkgeyAlPiIpLHRtcGxfYXJyYXkucHVzaCgnICAgICAgICA8bGk+PGEgaHJlZj0zRCIjZm9sZGVy
cy88JT0zRCBpZCAlPi9pPQptcG9ydC9wYXRoIj5mcm9tIFBhdGg8L2E+PC9saT4nKSx0bXBsX2Fy
cmF5LnB1c2goIjwlIH0gJT4iKSx0bXBsX2FycmF5LnB1c2g9CigiPCUgfSAlPiIpLHRtcGxfYXJy
YXkucHVzaCgiICAgICA8L3VsPiIpLHRtcGxfYXJyYXkucHVzaCgiICAgPC9kaXY+IiksdG1wbD0K
X2FycmF5LnB1c2goIjwlIH0gZWxzZSB7ICU+IiksdG1wbF9hcnJheS5wdXNoKCcgPGEgIGRhdGEt
cGxhY2VtZW50PTNEInRvcCIgPQp0aXRsZT0zRCJBZGQgRGF0YXNldHMgdG8gQ3VycmVudCBGb2xk
ZXIiIHN0eWxlPTNEImRpc3BsYXk6bm9uZTsiIGNsYXNzPTNEImI9CnRuIGJ0bi1kZWZhdWx0IGFk
ZC1saWJyYXJ5LWl0ZW1zIiBocmVmPTNEIiNmb2xkZXJzLzwlPTNEIGlkICU+L2ltcG9ydC9oaXN0
bz0KcnkiIHJvbGU9M0QiYnV0dG9uIj48c3BhbiBjbGFzcz0zRCJmYSBmYS1wbHVzIj48L3NwYW4+
PHNwYW4gY2xhc3M9M0QiZmEgZmEtPQpmaWxlIj48L3NwYW4+PC9zcGFuPjwvYT4nKSx0bXBsX2Fy
cmF5LnB1c2goIjwlIH0gJT4iKSx0bXBsX2FycmF5LnB1c2goJyAgPGI9CnV0dG9uIGRhdGEtdG9n
Z2xlPTNEInRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PTNEInRvcCIgdGl0bGU9M0QiSW1wb3J0IHNl
bGVjdD0KZWQgZGF0YXNldHMgaW50byBoaXN0b3J5IiBpZD0zRCJ0b29sYnRuX2J1bGtfaW1wb3J0
IiBjbGFzcz0zRCJwcmltYXJ5LWJ1dHRvPQpuIGRhdGFzZXQtbWFuaXB1bGF0aW9uIiBzdHlsZT0z
RCJtYXJnaW4tbGVmdDogMC41ZW07IGRpc3BsYXk6bm9uZTsiIHR5cGU9M0Q9CiJidXR0b24iPjxz
cGFuIGNsYXNzPTNEImZhIGZhLWJvb2siPjwvc3Bhbj4gdG8gSGlzdG9yeTwvYnV0dG9uPicpLHRt
cGxfYXJyYT0KeS5wdXNoKCcgICA8ZGl2IGlkPTNEInRvb2xidG5fZGwiIGNsYXNzPTNEImJ0bi1n
cm91cCBkYXRhc2V0LW1hbmlwdWxhdGlvbiIgPQpzdHlsZT0zRCJtYXJnaW4tbGVmdDogMC41ZW07
IGRpc3BsYXk6bm9uZTsgIj4nKSx0bXBsX2FycmF5LnB1c2goJyAgICAgPGJ1dHQ9Cm9uIHRpdGxl
PTNEIkRvd25sb2FkIHNlbGVjdGVkIGRhdGFzZXRzIGFzIGFyY2hpdmUiIGlkPTNEImRyb3BfdG9n
Z2xlIiB0eXBlPQo9M0QiYnV0dG9uIiBjbGFzcz0zRCJwcmltYXJ5LWJ1dHRvbiBkcm9wZG93bi10
b2dnbGUiIGRhdGEtdG9nZ2xlPTNEImRyb3Bkb3c9Cm4iPicpLHRtcGxfYXJyYXkucHVzaCgnICAg
ICA8c3BhbiBjbGFzcz0zRCJmYSBmYS1kb3dubG9hZCI+PC9zcGFuPiBEb3dubG9hZD0KIDxzcGFu
IGNsYXNzPTNEImNhcmV0Ij48L3NwYW4+JyksdG1wbF9hcnJheS5wdXNoKCIgICAgIDwvYnV0dG9u
PiIpLHRtcGxfYXJyPQpheS5wdXNoKCcgICAgIDx1bCBjbGFzcz0zRCJkcm9wZG93bi1tZW51IiBy
b2xlPTNEIm1lbnUiPicpLHRtcGxfYXJyYXkucHVzaCg9CicgICAgICAgIDxsaT48YSBocmVmPTNE
IiMvZm9sZGVycy88JT0zRCBpZCAlPi9kb3dubG9hZC90Z3oiPi50YXIuZ3o8L2E+PC9saT0KPicp
LHRtcGxfYXJyYXkucHVzaCgnICAgICAgICA8bGk+PGEgaHJlZj0zRCIjL2ZvbGRlcnMvPCU9M0Qg
aWQgJT4vZG93bmxvYWQvPQp0YnoiPi50YXIuYno8L2E+PC9saT4nKSx0bXBsX2FycmF5LnB1c2go
JyAgICAgICAgPGxpPjxhIGhyZWY9M0QiIy9mb2xkZXJzLzw9CiU9M0QgaWQgJT4vZG93bmxvYWQv
emlwIj4uemlwPC9hPjwvbGk+JyksdG1wbF9hcnJheS5wdXNoKCIgICAgIDwvdWw+IiksdG1wbD0K
X2FycmF5LnB1c2goIiAgIDwvZGl2PiIpLHRtcGxfYXJyYXkucHVzaCgnICAgPGJ1dHRvbiBkYXRh
LXRvZ2dsZT0zRCJ0b29sdGlwPQoiIGRhdGEtcGxhY2VtZW50PTNEInRvcCIgdGl0bGU9M0QiTWFy
ayBzZWxlY3RlZCBkYXRhc2V0cyBkZWxldGVkIiBpZD0zRCJ0b289CmxidG5fYnVsa19kZWxldGUi
IGNsYXNzPTNEInByaW1hcnktYnV0dG9uIGxvZ2dlZC1kYXRhc2V0LW1hbmlwdWxhdGlvbiIgc3R5
bD0KZT0zRCJtYXJnaW4tbGVmdDogMC41ZW07IGRpc3BsYXk6bm9uZTsgIiB0eXBlPTNEImJ1dHRv
biI+PHNwYW4gY2xhc3M9M0QiZmEgPQpmYS10aW1lcyI+PC9zcGFuPiBEZWxldGU8L2J1dHRvbj4n
KSx0bXBsX2FycmF5LnB1c2goJyAgIDxidXR0b24gZGF0YS1pZD0zRCI9CjwlLSBpZCAlPiIgZGF0
YS10b2dnbGU9M0QidG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9M0QidG9wIiB0aXRsZT0zRCJTaG93
IGxpYj0KcmFyeSBpbmZvcm1hdGlvbiIgaWQ9M0QidG9vbGJ0bl9zaG93X2xpYmluZm8iIGNsYXNz
PTNEInByaW1hcnktYnV0dG9uIiBzdHlsPQplPTNEIm1hcmdpbi1sZWZ0OiAwLjVlbTsiIHR5cGU9
M0QiYnV0dG9uIj48c3BhbiBjbGFzcz0zRCJmYSBmYS1pbmZvLWNpcmNsZSI9Cj48L3NwYW4+IExp
YnJhcnkgSW5mbzwvYnV0dG9uPicpLHRtcGxfYXJyYXkucHVzaCgnICAgPHNwYW4gY2xhc3M9M0Qi
aGVscC1idT0KdHRvbiIgZGF0YS10b2dnbGU9M0QidG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9M0Qi
dG9wIiB0aXRsZT0zRCJWaXNpdCBMaWJyYXJpPQplcyBXaWtpIj48YSBocmVmPTNEImh0dHBzOi8v
d2lraS5nYWxheHlwcm9qZWN0Lm9yZy9EYXRhTGlicmFyaWVzL3NjcmVlbi9Gb2w9CmRlckNvbnRl
bnRzIiB0YXJnZXQ9M0QiX2JsYW5rIj48YnV0dG9uIGNsYXNzPTNEInByaW1hcnktYnV0dG9uIiB0
eXBlPTNEImJ1dD0KdG9uIj48c3BhbiBjbGFzcz0zRCJmYSBmYS1xdWVzdGlvbi1jaXJjbGUiPjwv
c3Bhbj4gSGVscDwvYnV0dG9uPjwvYT48L3NwYW4+PQonKSx0bXBsX2FycmF5LnB1c2goIiA8L2Rp
dj4iKSx0bXBsX2FycmF5LnB1c2goIjwvZm9ybT4iKSx0bXBsX2FycmF5LnB1c2goJyA9CjxkaXYg
aWQ9M0QiZm9sZGVyX2l0ZW1zX2VsZW1lbnQiPicpLHRtcGxfYXJyYXkucHVzaCgiIDwvZGl2PiIp
LHRtcGxfYXJyYXkucD0KdXNoKCI8L2Rpdj4iKSxfLnRlbXBsYXRlKHRtcGxfYXJyYXkuam9pbigi
IikpfSx0ZW1wbGF0ZUxpYkluZm9Jbk1vZGFsOmZ1bmN0PQppb24oKXtyZXR1cm4gdG1wbF9hcnJh
eT0zRFtdLHRtcGxfYXJyYXkucHVzaCgnPGRpdiBpZD0zRCJsaWZfaW5mb19tb2RhbCI+Jyk9Cix0
bXBsX2FycmF5LnB1c2goIjxoMj5MaWJyYXJ5IG5hbWU6PC9oMj4iKSx0bXBsX2FycmF5LnB1c2go
JzxwPjwlLSBsaWJyYXJ5Lj0KZ2V0KCJuYW1lIikgJT48L3A+JyksdG1wbF9hcnJheS5wdXNoKCI8
aDM+TGlicmFyeSBkZXNjcmlwdGlvbjo8L2gzPiIpLHRtcGxfPQphcnJheS5wdXNoKCc8cD48JS0g
bGlicmFyeS5nZXQoImRlc2NyaXB0aW9uIikgJT48L3A+JyksdG1wbF9hcnJheS5wdXNoKCI8aDM9
Cj5MaWJyYXJ5IHN5bm9wc2lzOjwvaDM+IiksdG1wbF9hcnJheS5wdXNoKCc8cD48JS0gbGlicmFy
eS5nZXQoInN5bm9wc2lzIikgJT0KPjwvcD4nKSx0bXBsX2FycmF5LnB1c2goJzxwIGRhdGEtdG9n
Z2xlPTNEInRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PTNEInRvcCIgPQp0aXRsZT0zRCI8JS0gbGli
cmFyeS5nZXQoImNyZWF0ZV90aW1lIikgJT4iPmNyZWF0ZWQgPCUtIGxpYnJhcnkuZ2V0KCJjcmVh
dGU9Cl90aW1lX3ByZXR0eSIpICU+PC9wPicpLHRtcGxfYXJyYXkucHVzaCgiPC9kaXY+IiksXy50
ZW1wbGF0ZSh0bXBsX2FycmF5LmpvaT0KbigiIikpfSx0ZW1wbGF0ZU5ld0ZvbGRlckluTW9kYWw6
ZnVuY3Rpb24oKXtyZXR1cm4gdG1wbF9hcnJheT0zRFtdLHRtcGxfYXJyPQpheS5wdXNoKCc8ZGl2
IGlkPTNEIm5ld19mb2xkZXJfbW9kYWwiPicpLHRtcGxfYXJyYXkucHVzaCgiPGZvcm0+IiksdG1w
bF9hcnI9CmF5LnB1c2goJzxpbnB1dCB0eXBlPTNEInRleHQiIG5hbWU9M0QiTmFtZSIgdmFsdWU9
M0QiIiBwbGFjZWhvbGRlcj0zRCJOYW1lIj0KPicpLHRtcGxfYXJyYXkucHVzaCgnPGlucHV0IHR5
cGU9M0QidGV4dCIgbmFtZT0zRCJEZXNjcmlwdGlvbiIgdmFsdWU9M0QiIiBwPQpsYWNlaG9sZGVy
PTNEIkRlc2NyaXB0aW9uIj4nKSx0bXBsX2FycmF5LnB1c2goIjwvZm9ybT4iKSx0bXBsX2FycmF5
LnB1c2goIjw9Ci9kaXY+IiksXy50ZW1wbGF0ZSh0bXBsX2FycmF5LmpvaW4oIiIpKX0sdGVtcGxh
dGVCdWxrSW1wb3J0SW5Nb2RhbDpmdW5jdGlvbj0KKCl7dmFyIGE9M0RbXTtyZXR1cm4gYS5wdXNo
KCc8c3BhbiBpZD0zRCJoaXN0b3J5X21vZGFsX2NvbWJvX2J1bGsiIHN0eWxlPTNEPQoid2lkdGg6
OTAlOyBtYXJnaW4tbGVmdDogMWVtOyBtYXJnaW4tcmlnaHQ6IDFlbTsgIj4nKSxhLnB1c2goIlNl
bGVjdCBoaXN0b3I9Cnk6ICIpLGEucHVzaCgnPHNlbGVjdCBpZD0zRCJkYXRhc2V0X2ltcG9ydF9i
dWxrIiBuYW1lPTNEImRhdGFzZXRfaW1wb3J0X2J1bD0KayIgc3R5bGU9M0Qid2lkdGg6NTAlOyBt
YXJnaW4tYm90dG9tOiAxZW07ICI+ICcpLGEucHVzaCgiICAgPCUgXy5lYWNoKGhpc3RvPQpyaWVz
LCBmdW5jdGlvbihoaXN0b3J5KSB7ICU+IiksYS5wdXNoKCcgICAgICAgPG9wdGlvbiB2YWx1ZT0z
RCI8JT0zRCBfLmVzY2E9CnBlKGhpc3RvcnkuZ2V0KCJpZCIpKSAlPiI+PCU9M0QgXy5lc2NhcGUo
aGlzdG9yeS5nZXQoIm5hbWUiKSkgJT48L29wdGlvbj4nKT0KLGEucHVzaCgiICAgPCUgfSk7ICU+
IiksYS5wdXNoKCI8L3NlbGVjdD4iKSxhLnB1c2goIjwvc3Bhbj4iKSxfLnRlbXBsYXRlKGEuPQpq
b2luKCIiKSl9LHRlbXBsYXRlSW1wb3J0SW50b0hpc3RvcnlQcm9ncmVzc0JhcjpmdW5jdGlvbigp
e3ZhciBhPTNEW107cmV0dXI9Cm4gYS5wdXNoKCc8ZGl2IGNsYXNzPTNEImltcG9ydF90ZXh0Ij4n
KSxhLnB1c2goIkltcG9ydGluZyBzZWxlY3RlZCBkYXRhc2V0cz0KIHRvIGhpc3RvcnkgPGI+PCU9
M0QgXy5lc2NhcGUoaGlzdG9yeV9uYW1lKSAlPjwvYj4iKSxhLnB1c2goIjwvZGl2PiIpLGEucHVz
PQpoKCc8ZGl2IGNsYXNzPTNEInByb2dyZXNzIj4nKSxhLnB1c2goJyAgIDxkaXYgY2xhc3M9M0Qi
cHJvZ3Jlc3MtYmFyIHByb2dyZXM9CnMtYmFyLWltcG9ydCIgcm9sZT0zRCJwcm9ncmVzc2JhciIg
YXJpYS12YWx1ZW5vdz0zRCIwIiBhcmlhLXZhbHVlbWluPTNEIjAiID0KYXJpYS12YWx1ZW1heD0z
RCIxMDAiIHN0eWxlPTNEIndpZHRoOiAwMCU7Ij4nKSxhLnB1c2goJyAgICAgICA8c3BhbiBjbGFz
cz0KPTNEImNvbXBsZXRpb25fc3BhbiI+MCUgQ29tcGxldGU8L3NwYW4+JyksYS5wdXNoKCIgICA8
L2Rpdj4iKSxhLnB1c2goIjwvZGl2PQo+IiksYS5wdXNoKCIiKSxfLnRlbXBsYXRlKGEuam9pbigi
IikpfSx0ZW1wbGF0ZUFkZGluZ0RhdGFzZXRzUHJvZ3Jlc3NCYXI6ZnU9Cm5jdGlvbigpe3ZhciBh
PTNEW107cmV0dXJuIGEucHVzaCgnPGRpdiBjbGFzcz0zRCJpbXBvcnRfdGV4dCI+JyksYS5wdXNo
KCJBZD0KZGluZyBzZWxlY3RlZCBkYXRhc2V0cyB0byBsaWJyYXJ5IGZvbGRlciA8Yj48JT0zRCBf
LmVzY2FwZShmb2xkZXJfbmFtZSkgJT48PQovYj4iKSxhLnB1c2goIjwvZGl2PiIpLGEucHVzaCgn
PGRpdiBjbGFzcz0zRCJwcm9ncmVzcyI+JyksYS5wdXNoKCcgICA8ZGl2IGM9Cmxhc3M9M0QicHJv
Z3Jlc3MtYmFyIHByb2dyZXNzLWJhci1pbXBvcnQiIHJvbGU9M0QicHJvZ3Jlc3NiYXIiIGFyaWEt
dmFsdWVubz0Kdz0zRCIwIiBhcmlhLXZhbHVlbWluPTNEIjAiIGFyaWEtdmFsdWVtYXg9M0QiMTAw
IiBzdHlsZT0zRCJ3aWR0aDogMDAlOyI+JyksPQphLnB1c2goJyAgICAgICA8c3BhbiBjbGFzcz0z
RCJjb21wbGV0aW9uX3NwYW4iPjAlIENvbXBsZXRlPC9zcGFuPicpLGEucHVzaCg9CiIgICA8L2Rp
dj4iKSxhLnB1c2goIjwvZGl2PiIpLGEucHVzaCgiIiksXy50ZW1wbGF0ZShhLmpvaW4oIiIpKX0s
dGVtcGxhdGVEZT0KbGV0aW5nRGF0YXNldHNQcm9ncmVzc0JhcjpmdW5jdGlvbigpe3ZhciBhPTNE
W107cmV0dXJuIGEucHVzaCgnPGRpdiBjbGFzcz0KPTNEImltcG9ydF90ZXh0Ij4nKSxhLnB1c2go
IjwvZGl2PiIpLGEucHVzaCgnPGRpdiBjbGFzcz0zRCJwcm9ncmVzcyI+JyksYS5wPQp1c2goJyAg
IDxkaXYgY2xhc3M9M0QicHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci1pbXBvcnQiIHJvbGU9M0Qi
cHJvZ3Jlc3NiYXI9CiIgYXJpYS12YWx1ZW5vdz0zRCIwIiBhcmlhLXZhbHVlbWluPTNEIjAiIGFy
aWEtdmFsdWVtYXg9M0QiMTAwIiBzdHlsZT0zRCJ3aT0KZHRoOiAwMCU7Ij4nKSxhLnB1c2goJyAg
ICAgICA8c3BhbiBjbGFzcz0zRCJjb21wbGV0aW9uX3NwYW4iPjAlIENvbXBsZXRlPC9zPQpwYW4+
JyksYS5wdXNoKCIgICA8L2Rpdj4iKSxhLnB1c2goIjwvZGl2PiIpLGEucHVzaCgiIiksXy50ZW1w
bGF0ZShhLmpvaW4oIiI9CikpfSx0ZW1wbGF0ZUJyb3dzZXJNb2RhbDpmdW5jdGlvbigpe3ZhciBh
PTNEW107cmV0dXJuIGEucHVzaCgnPGRpdiBpZD0zRCJmaT0KbGVfYnJvd3Nlcl9tb2RhbCI+Jyks
YS5wdXNoKCc8ZGl2IGNsYXNzPTNEImFsZXJ0IGFsZXJ0LWluZm8ganN0cmVlLWZpbGVzLW1lPQpz
c2FnZSI+QWxsIGZpbGVzIHlvdSBzZWxlY3Qgd2lsbCBiZSBpbXBvcnRlZCBpbnRvIHRoZSBjdXJy
ZW50IGZvbGRlci48L2Rpdj49CicpLGEucHVzaCgnPGRpdiBjbGFzcz0zRCJhbGVydCBhbGVydC1p
bmZvIGpzdHJlZS1mb2xkZXJzLW1lc3NhZ2UiIHN0eWxlPTNEIj0KZGlzcGxheTpub25lOyI+QWxs
IGZpbGVzIHdpdGhpbiB0aGUgc2VsZWN0ZWQgZm9sZGVycyBhbmQgdGhlaXIgc3ViZm9sZGVycyB3
PQppbGwgYmUgaW1wb3J0ZWQgaW50byB0aGUgY3VycmVudCBmb2xkZXIuPC9kaXY+JyksYS5wdXNo
KCc8ZGl2IHN0eWxlPTNEIm1hcmc9CmluLWJvdHRvbToxZW07Ij4nKSxhLnB1c2goJzxsYWJlbCBj
bGFzcz0zRCJyYWRpby1pbmxpbmUiPicpLGEucHVzaCgnICA8aW5wdT0KdCB0aXRsZT0zRCJTd2l0
Y2ggdG8gc2VsZWN0aW5nIGZpbGVzIiB0eXBlPTNEInJhZGlvIiBuYW1lPTNEImpzdHJlZS1yYWRp
byIgPQp2YWx1ZT0zRCJqc3RyZWUtZGlzYWJsZS1mb2xkZXJzIiBjaGVja2VkPTNEImNoZWNrZWQi
PiBGaWxlcycpLGEucHVzaCgiPC9sYWI9CmVsPiIpLGEucHVzaCgnPGxhYmVsIGNsYXNzPTNEInJh
ZGlvLWlubGluZSI+JyksYS5wdXNoKCcgIDxpbnB1dCB0aXRsZT0zRCJTdz0KaXRjaCB0byBzZWxl
Y3RpbmcgZm9sZGVycyIgdHlwZT0zRCJyYWRpbyIgbmFtZT0zRCJqc3RyZWUtcmFkaW8iIHZhbHVl
PTNEImpzPQp0cmVlLWRpc2FibGUtZmlsZXMiPiBGb2xkZXJzJyksYS5wdXNoKCI8L2xhYmVsPiIp
LGEucHVzaCgiPC9kaXY+IiksYS5wdXNoKCc9CjxkaXYgc3R5bGU9M0QibWFyZ2luLWJvdHRvbTox
ZW07Ij4nKSxhLnB1c2goJzxsYWJlbCBjbGFzcz0zRCJjaGVja2JveC1pbmxpbj0KZSBqc3RyZWUt
cHJlc2VydmUtc3RydWN0dXJlIiBzdHlsZT0zRCJkaXNwbGF5Om5vbmU7Ij4nKSxhLnB1c2goJyAg
IDxpbnB1dCBjPQpsYXNzPTNEInByZXNlcnZlLWNoZWNrYm94IiB0eXBlPTNEImNoZWNrYm94IiB2
YWx1ZT0zRCJwcmVzZXJ2ZV9kaXJlY3Rvcnlfc3Q9CnJ1Y3R1cmUiPicpLGEucHVzaCgiUHJlc2Vy
dmUgZGlyZWN0b3J5IHN0cnVjdHVyZSIpLGEucHVzaCgiIDwvbGFiZWw+IiksYS5wdT0Kc2goJzxs
YWJlbCBjbGFzcz0zRCJjaGVja2JveC1pbmxpbmUganN0cmVlLWxpbmstZmlsZXMiIHN0eWxlPTNE
ImRpc3BsYXk6bm9uPQplOyI+JyksYS5wdXNoKCcgICA8aW5wdXQgY2xhc3M9M0QibGluay1jaGVj
a2JveCIgdHlwZT0zRCJjaGVja2JveCIgdmFsdWU9M0Q9CiJsaW5rX2ZpbGVzIj4nKSxhLnB1c2go
IkxpbmsgZmlsZXMgaW5zdGVhZCBvZiBjb3B5aW5nIiksYS5wdXNoKCIgPC9sYWJlbD4iKT0KLGEu
cHVzaCgiPC9kaXY+IiksYS5wdXNoKCc8ZGl2IGlkPTNEImpzdHJlZV9icm93c2VyIj4nKSxhLnB1
c2goIjwvZGl2PiIpLGEuPQpwdXNoKCI8aHIgLz4iKSxhLnB1c2goIjxwPllvdSBjYW4gc2V0IGV4
dGVuc2lvbiB0eXBlIGFuZCBnZW5vbWUgZm9yIGFsbCBpbXA9Cm9ydGVkIGRhdGFzZXRzIGF0IG9u
Y2U6PC9wPiIpLGEucHVzaCgiPGRpdj4iKSxhLnB1c2goJ1R5cGU6IDxzcGFuIGlkPTNEImxpYj0K
cmFyeV9leHRlbnNpb25fc2VsZWN0IiBjbGFzcz0zRCJsaWJyYXJ5LWV4dGVuc2lvbi1zZWxlY3Qi
IC8+JyksYS5wdXNoKCcgIEdlPQpub21lOiA8c3BhbiBpZD0zRCJsaWJyYXJ5X2dlbm9tZV9zZWxl
Y3QiIGNsYXNzPTNEImxpYnJhcnktZ2Vub21lLXNlbGVjdCIgLz49CicpLGEucHVzaCgiPC9kaXY+
IiksYS5wdXNoKCI8L2Rpdj4iKSxfLnRlbXBsYXRlKGEuam9pbigiIikpfSx0ZW1wbGF0ZUltcG9y
dD0KUGF0aE1vZGFsOmZ1bmN0aW9uKCl7dmFyIGE9M0RbXTtyZXR1cm4gYS5wdXNoKCc8ZGl2IGlk
PTNEImZpbGVfYnJvd3Nlcl9tb2RhPQpsIj4nKSxhLnB1c2goJzxkaXYgY2xhc3M9M0QiYWxlcnQg
YWxlcnQtaW5mbyBqc3RyZWUtZm9sZGVycy1tZXNzYWdlIj5BbGwgZmk9CmxlcyB3aXRoaW4gdGhl
IGdpdmVuIGZvbGRlcnMgYW5kIHRoZWlyIHN1YmZvbGRlcnMgd2lsbCBiZSBpbXBvcnRlZCBpbnRv
IHRoZT0KIGN1cnJlbnQgZm9sZGVyLjwvZGl2PicpLGEucHVzaCgnPGRpdiBzdHlsZT0zRCJtYXJn
aW4tYm90dG9tOiAwLjVlbTsiPicpLGEuPQpwdXNoKCc8bGFiZWwgY2xhc3M9M0QiY2hlY2tib3gt
aW5saW5lIGpzdHJlZS1wcmVzZXJ2ZS1zdHJ1Y3R1cmUiPicpLGEucHVzaCg9CicgICA8aW5wdXQg
Y2xhc3M9M0QicHJlc2VydmUtY2hlY2tib3giIHR5cGU9M0QiY2hlY2tib3giIHZhbHVlPTNEInBy
ZXNlcnZlXz0KZGlyZWN0b3J5X3N0cnVjdHVyZSI+JyksYS5wdXNoKCJQcmVzZXJ2ZSBkaXJlY3Rv
cnkgc3RydWN0dXJlIiksYS5wdXNoKCIgPC9sPQphYmVsPiIpLGEucHVzaCgnPGxhYmVsIGNsYXNz
PTNEImNoZWNrYm94LWlubGluZSBqc3RyZWUtbGluay1maWxlcyI+JyksYS5wdXM9CmgoJyAgIDxp
bnB1dCBjbGFzcz0zRCJsaW5rLWNoZWNrYm94IiB0eXBlPTNEImNoZWNrYm94IiB2YWx1ZT0zRCJs
aW5rX2ZpbGVzIj0KPicpLGEucHVzaCgiTGluayBmaWxlcyBpbnN0ZWFkIG9mIGNvcHlpbmciKSxh
LnB1c2goIiA8L2xhYmVsPiIpLGEucHVzaCgiPC9kPQppdj4iKSxhLnB1c2goJzx0ZXh0YXJlYSBp
ZD0zRCJpbXBvcnRfcGF0aHMiIGNsYXNzPTNEImZvcm0tY29udHJvbCIgcm93cz0zRCI9CjUiIHBs
YWNlaG9sZGVyPTNEIkFic29sdXRlIHBhdGhzIChvciBwYXRocyByZWxhdGl2ZSB0byBHYWxheHkg
cm9vdCkgc2VwYXJhdD0KZWQgYnkgbmV3bGluZSI+PC90ZXh0YXJlYT4nKSxhLnB1c2goIjxociAv
PiIpLGEucHVzaCgiPHA+WW91IGNhbiBzZXQgZXh0ZW5zPQppb24gdHlwZSBhbmQgZ2Vub21lIGZv
ciBhbGwgaW1wb3J0ZWQgZGF0YXNldHMgYXQgb25jZTo8L3A+IiksYS5wdXNoKCI8ZGl2PiI9Ciks
YS5wdXNoKCdUeXBlOiA8c3BhbiBpZD0zRCJsaWJyYXJ5X2V4dGVuc2lvbl9zZWxlY3QiIGNsYXNz
PTNEImxpYnJhcnktZXh0ZT0KbnNpb24tc2VsZWN0IiAvPicpLGEucHVzaCgnICBHZW5vbWU6IDxz
cGFuIGlkPTNEImxpYnJhcnlfZ2Vub21lX3NlbGVjdCIgY2xhPQpzcz0zRCJsaWJyYXJ5LWdlbm9t
ZS1zZWxlY3QiIC8+JyksYS5wdXNoKCI8L2Rpdj4iKSxhLnB1c2goIjwvZGl2PiIpLF8udGVtcGw9
CmF0ZShhLmpvaW4oIiIpKX0sdGVtcGxhdGVBZGRGaWxlc0Zyb21IaXN0b3J5OmZ1bmN0aW9uKCl7
dmFyIGE9M0RbXTtyZXR1cm4gYT0KLnB1c2goJzxkaXYgaWQ9M0QiYWRkX2ZpbGVzX21vZGFsIj4n
KSxhLnB1c2goJzxkaXYgaWQ9M0QiaGlzdG9yeV9tb2RhbF9jb21iPQpvX2J1bGsiPicpLGEucHVz
aCgiU2VsZWN0IGhpc3Rvcnk6ICAiKSxhLnB1c2goJzxzZWxlY3QgaWQ9M0QiZGF0YXNldF9hZGRf
YnU9CmxrIiBuYW1lPTNEImRhdGFzZXRfYWRkX2J1bGsiIHN0eWxlPTNEIndpZHRoOjY2JTsgIj4g
JyksYS5wdXNoKCIgICA8JSBfLmVhYz0KaChoaXN0b3JpZXMsIGZ1bmN0aW9uKGhpc3RvcnkpIHsg
JT4iKSxhLnB1c2goJyAgICAgICA8b3B0aW9uIHZhbHVlPTNEIjwlPTNEPQogXy5lc2NhcGUoaGlz
dG9yeS5nZXQoImlkIikpICU+Ij48JT0zRCBfLmVzY2FwZShoaXN0b3J5LmdldCgibmFtZSIpKSAl
Pjwvb3A9CnRpb24+JyksCiBhLnB1c2goIiAgIDwlIH0pOyAlPiIpLGEucHVzaCgiPC9zZWxlY3Q+
IiksYS5wdXNoKCI8L2Rpdj4iKSxhLnB1c2goIjxici8+Ij0KKSxhLnB1c2goJzxkaXYgaWQ9M0Qi
c2VsZWN0ZWRfaGlzdG9yeV9jb250ZW50Ij4nKSxhLnB1c2goIjwvZGl2PiIpLGEucHVzaCgiPQo8
L2Rpdj4iKSxfLnRlbXBsYXRlKGEuam9pbigiIikpfSx0ZW1wbGF0ZUhpc3RvcnlDb250ZW50czpm
dW5jdGlvbigpe3ZhciBhPQo9M0RbXTtyZXR1cm4gYS5wdXNoKCI8c3Ryb25nPkNob29zZSB0aGUg
ZGF0YXNldHMgdG8gaW1wb3J0Ojwvc3Ryb25nPiIpLGEucHU9CnNoKCI8dWw+IiksYS5wdXNoKCIg
PCUgXy5lYWNoKGhpc3RvcnlfY29udGVudHMsIGZ1bmN0aW9uKGhpc3RvcnlfaXRlbSkgeyAlPj0K
IiksYS5wdXNoKCcgPGxpIGRhdGEtaWQ9M0QiPCU9M0QgXy5lc2NhcGUoaGlzdG9yeV9pdGVtLmdl
dCgiaWQiKSkgJT4iPicpLGEuPQpwdXNoKCcgICA8aW5wdXQgc3R5bGU9M0QibWFyZ2luOiAwOyIg
dHlwZT0zRCJjaGVja2JveCI+PCU9M0QgXy5lc2NhcGUoaGlzdG89CnJ5X2l0ZW0uZ2V0KCJoaWQi
KSkgJT46IDwlPTNEIF8uZXNjYXBlKGhpc3RvcnlfaXRlbS5nZXQoIm5hbWUiKSkgJT4nKSxhLnB1
cz0KaCgiIDwvbGk+IiksYS5wdXNoKCIgPCUgfSk7ICU+IiksYS5wdXNoKCI8L3VsPiIpLF8udGVt
cGxhdGUoYS5qb2luKCIiKSl9LHRlPQptcGxhdGVQYWdpbmF0b3I6ZnVuY3Rpb24oKXtyZXR1cm4g
dG1wbF9hcnJheT0zRFtdLHRtcGxfYXJyYXkucHVzaCgnICAgPHVsIGM9Cmxhc3M9M0QicGFnaW5h
dGlvbiBwYWdpbmF0aW9uLXNtIj4nKSx0bXBsX2FycmF5LnB1c2goIiAgICAgICA8JSBpZiAoICgg
c2hvdz0KX3BhZ2UgLSAxICkgPiAwICkgeyAlPiIpLHRtcGxfYXJyYXkucHVzaCgiICAgICAgICAg
ICA8JSBpZiAoICggc2hvd19wYWdlIC0gPQoxICkgPiBwYWdlX2NvdW50ICkgeyAlPiIpLHRtcGxf
YXJyYXkucHVzaCgnICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9M0QiI2Y9Cm9sZGVycy88JT0z
RCBpZCAlPi9wYWdlLzEiPjxzcGFuIGNsYXNzPTNEImZhIGZhLWFuZ2xlLWRvdWJsZS1sZWZ0Ij48
L3NwYW4+PD0KL2E+PC9saT4nKSx0bXBsX2FycmF5LnB1c2goJyAgICAgICAgICAgICAgIDxsaSBj
bGFzcz0zRCJkaXNhYmxlZCI+PGEgaHJlZj0KPTNEIiNmb2xkZXJzLzwlPTNEIGlkICU+L3BhZ2Uv
PCUgcHJpbnQoIHNob3dfcGFnZSApICU+Ij48JSBwcmludCggc2hvd19wYWdlPQogLSAxICkgJT48
L2E+PC9saT4nKSx0bXBsX2FycmF5LnB1c2goIiAgICAgICAgICAgPCUgfSBlbHNlIHsgJT4iKSx0
bXBsX2FycmE9CnkucHVzaCgnICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9M0QiI2ZvbGRlcnMv
PCU9M0QgaWQgJT4vcGFnZS8xIj48c3BhbiBjbD0KYXNzPTNEImZhIGZhLWFuZ2xlLWRvdWJsZS1s
ZWZ0Ij48L3NwYW4+PC9hPjwvbGk+JyksdG1wbF9hcnJheS5wdXNoKCcgICAgICAgPQogICAgICAg
IDxsaT48YSBocmVmPTNEIiNmb2xkZXJzLzwlPTNEIGlkICU+L3BhZ2UvPCUgcHJpbnQoIHNob3df
cGFnZSAtIDEgKSA9CiU+Ij48JSBwcmludCggc2hvd19wYWdlIC0gMSApICU+PC9hPjwvbGk+Jyks
dG1wbF9hcnJheS5wdXNoKCIgICAgICAgICAgIDwlID0KfSAlPiIpLHRtcGxfYXJyYXkucHVzaCgi
ICAgICAgIDwlIH0gZWxzZSB7ICU+IiksdG1wbF9hcnJheS5wdXNoKCcgICAgICAgICAgPQogPGxp
IGNsYXNzPTNEImRpc2FibGVkIj48YSBocmVmPTNEIiNmb2xkZXJzLzwlPTNEIGlkICU+L3BhZ2Uv
MSI+PHNwYW4gY2xhc3M9Cj0zRCJmYSBmYS1hbmdsZS1kb3VibGUtbGVmdCI+PC9zcGFuPjwvYT48
L2xpPicpLHRtcGxfYXJyYXkucHVzaCgnICAgICAgICAgID0KIDxsaSBjbGFzcz0zRCJkaXNhYmxl
ZCI+PGEgaHJlZj0zRCIjZm9sZGVycy88JT0zRCBpZCAlPi9wYWdlLzwlIHByaW50KCBzaG93PQpf
cGFnZSApICU+Ij48JSBwcmludCggc2hvd19wYWdlIC0gMSApICU+PC9hPjwvbGk+JyksdG1wbF9h
cnJheS5wdXNoKCIgICAgICA9CiA8JSB9ICU+IiksdG1wbF9hcnJheS5wdXNoKCcgICAgICAgPGxp
IGNsYXNzPTNEImFjdGl2ZSI+JyksdG1wbF9hcnJheS5wdXNoKD0KJyAgICAgICA8YSBocmVmPTNE
IiNmb2xkZXJzLzwlPTNEIGlkICU+L3BhZ2UvPCUgcHJpbnQoIHNob3dfcGFnZSApICU+Ij48JSBw
PQpyaW50KCBzaG93X3BhZ2UgKSAlPjwvYT4nKSx0bXBsX2FycmF5LnB1c2goIiAgICAgICA8L2xp
PiIpLHRtcGxfYXJyYXkucHVzaCg9CiIgICAgICAgPCUgaWYgKCAoIHNob3dfcGFnZSApIDwgcGFn
ZV9jb3VudCApIHsgJT4iKSx0bXBsX2FycmF5LnB1c2goJyAgICAgID0KICAgICA8bGk+PGEgaHJl
Zj0zRCIjZm9sZGVycy88JT0zRCBpZCAlPi9wYWdlLzwlIHByaW50KCBzaG93X3BhZ2UgKyAxICkg
JT4iPQo+PCUgcHJpbnQoIHNob3dfcGFnZSArIDEgKSAlPjwvYT48L2xpPicpLHRtcGxfYXJyYXku
cHVzaCgnICAgICAgICAgICA8bGk+PGE9CiBocmVmPTNEIiNmb2xkZXJzLzwlPTNEIGlkICU+L3Bh
Z2UvPCUgcHJpbnQoIHBhZ2VfY291bnQgKSAlPiI+PHNwYW4gY2xhc3M9Cj0zRCJmYSBmYS1hbmds
ZS1kb3VibGUtcmlnaHQiPjwvc3Bhbj48L2E+PC9saT4nKSx0bXBsX2FycmF5LnB1c2goIiAgICAg
ICA8JT0KIH0gZWxzZSB7ICU+IiksdG1wbF9hcnJheS5wdXNoKCcgICAgICAgICAgIDxsaSBjbGFz
cz0zRCJkaXNhYmxlZCI+PGEgaHJlZj0KPTNEIiNmb2xkZXJzLzwlPTNEIGlkICU+L3BhZ2UvPCUg
cHJpbnQoIHNob3dfcGFnZSAgKSAlPiI+PCUgcHJpbnQoIHNob3dfcGFnPQplICsgMSApICU+PC9h
PjwvbGk+JyksdG1wbF9hcnJheS5wdXNoKCcgICAgICAgICAgIDxsaSBjbGFzcz0zRCJkaXNhYmxl
ZCI+PGE9CiBocmVmPTNEIiNmb2xkZXJzLzwlPTNEIGlkICU+L3BhZ2UvPCUgcHJpbnQoIHBhZ2Vf
Y291bnQgKSAlPiI+PHNwYW4gY2xhc3M9Cj0zRCJmYSBmYS1hbmdsZS1kb3VibGUtcmlnaHQiPjwv
c3Bhbj48L2E+PC9saT4nKSx0bXBsX2FycmF5LnB1c2goIiAgICAgICA8JT0KIH0gJT4iKSx0bXBs
X2FycmF5LnB1c2goIiAgIDwvdWw+IiksdG1wbF9hcnJheS5wdXNoKCIgICA8c3Bhbj4iKSx0bXBs
X2FycmF5PQoucHVzaCgnICAgICAgIHNob3dpbmcgPGEgZGF0YS10b2dnbGU9M0QidG9vbHRpcCIg
ZGF0YS1wbGFjZW1lbnQ9M0QidG9wIiB0aXQ9CmxlPTNEIkNsaWNrIHRvIGNoYW5nZSB0aGUgbnVt
YmVyIG9mIGl0ZW1zIG9uIHBhZ2UiIGlkPTNEInBhZ2Vfc2l6ZV9wcm9tcHQiPj0KPCUtIGl0ZW1z
X3Nob3duICU+PC9hPiBvZiA8JS0gdG90YWxfaXRlbXNfY291bnQgJT4gaXRlbXMnKSx0bXBsX2Fy
cmF5LnB1c2goPQoiICAgPC9zcGFuPiIpLF8udGVtcGxhdGUodG1wbF9hcnJheS5qb2luKCIiKSl9
fSk7cmV0dXJue0ZvbGRlclRvb2xiYXJWaWV3OmY9Cn19KTsKIC8vIyBzb3VyY2VNYXBwaW5nVVJM
PTNELi4vLi4vLi4vbWFwcy9tdmMvbGlicmFyeS9saWJyYXJ5LWZvbGRlcnRvb2xiYXItdmllPQp3
LmpzLm1hcApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKCmRpZmYgLXIgZDYyZjNlNTBiNTY3
YTE1N2MwOTQ0NDczYWRiYmM0MTBjNTU1MmQxYSAtciAzNmMwNTI2MTM0MzQxMjM3MGY5ZTQ0Zj0K
NGJkZDRiMWUxOWE5N2FhNTUgc3RhdGljL3NjcmlwdHMvdXRpbHMvdXBsb2FkYm94LmpzCi0tLSBh
L3N0YXRpYy9zY3JpcHRzL3V0aWxzL3VwbG9hZGJveC5qcworKysgYi9zdGF0aWMvc2NyaXB0cy91
dGlscy91cGxvYWRib3guanMKQEAgLTEsMiArMSwyIEBACi0hZnVuY3Rpb24oYSl7alF1ZXJ5LmV2
ZW50LnByb3BzLnB1c2goImRhdGFUcmFuc2ZlciIpLGEudXBsb2FkcG9zdD0zRGZ1bmN0aT0Kb24o
Yil7dmFyIGM9M0RhLmV4dGVuZCh7fSx7ZGF0YTp7fSxzdWNjZXNzOmZ1bmN0aW9uKCl7fSxlcnJv
cjpmdW5jdGlvbigpe30sPQpwcm9ncmVzczpmdW5jdGlvbigpe30sdXJsOm51bGwsbWF4ZmlsZXNp
emU6MjA0OCxlcnJvcl9maWxlc2l6ZToiRmlsZSBleGNlZWQ9CnMgMkdCLiBQbGVhc2UgdXNlIGFu
IEZUUCBjbGllbnQuIixlcnJvcl9kZWZhdWx0OiJQbGVhc2UgbWFrZSBzdXJlIHRoZSBmaWxlID0K
aXMgYXZhaWxhYmxlLiIsZXJyb3Jfc2VydmVyOiJVcGxvYWQgcmVxdWVzdCBmYWlsZWQuIixlcnJv
cl9sb2dpbjoiVXBsb2FkcyByPQplcXVpcmUgeW91IHRvIGxvZyBpbi4ifSxiKSxkPTNEYy5kYXRh
O2lmKGQuZXJyb3JfbWVzc2FnZSlyZXR1cm4gdm9pZCBjLmVycm89CnIoZC5lcnJvcl9tZXNzYWdl
KTt2YXIgZT0zRG5ldyBGb3JtRGF0YTtmb3IodmFyIGYgaW4gZC5wYXlsb2FkKWUuYXBwZW5kKGYs
ZD0KLnBheWxvYWRbZl0pO3ZhciBnPTNEMDtmb3IodmFyIGYgaW4gZC5maWxlcyl7dmFyIGg9M0Rk
LmZpbGVzW2ZdO2UuYXBwZW5kKGguPQpuYW1lLGguZmlsZSxoLmZpbGUubmFtZSksZys9M0RoLmZp
bGUuc2l6ZX1yZXR1cm4gZz4xMDQ4NTc2KmMubWF4ZmlsZXNpemU/dm89CmlkIGMuZXJyb3IoYy5l
cnJvcl9maWxlc2l6ZSk6KHhocj0zRG5ldyBYTUxIdHRwUmVxdWVzdCx4aHIub3BlbigiUE9TVCIs
Yy51cj0KbCwhMCkseGhyLnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsImFwcGxpY2F0aW9uL2pz
b24iKSx4aHIuc2V0UmVxdWVzdEhlYWRlPQpyKCJDYWNoZS1Db250cm9sIiwibm8tY2FjaGUiKSx4
aHIuc2V0UmVxdWVzdEhlYWRlcigiWC1SZXF1ZXN0ZWQtV2l0aCIsIlhNTEg9CnR0cFJlcXVlc3Qi
KSx4aHIub25yZWFkeXN0YXRlY2hhbmdlPTNEZnVuY3Rpb24oKXtpZih4aHIucmVhZHlTdGF0ZT0z
RD0zRHhocj0KLkRPTkUpe3ZhciBhPTNEbnVsbDtpZih4aHIucmVzcG9uc2VUZXh0KXRyeXthPTNE
alF1ZXJ5LnBhcnNlSlNPTih4aHIucmVzcG9uPQpzZVRleHQpfWNhdGNoKGIpe2E9M0R4aHIucmVz
cG9uc2VUZXh0fWlmKHhoci5zdGF0dXM8MjAwfHx4aHIuc3RhdHVzPjI5OSl7dmE9CnIgZD0zRHho
ci5zdGF0dXNUZXh0OzQwMz0zRD0zRHhoci5zdGF0dXM/ZD0zRGMuZXJyb3JfbG9naW46MD0zRD0z
RHhoci5zdGF0dT0Kcz9kPTNEYy5lcnJvcl9zZXJ2ZXI6ZHx8KGQ9M0RjLmVycm9yX2RlZmF1bHQp
LGMuZXJyb3IoZCsiICgiK3hoci5zdGF0dXMrIikiPQopfWVsc2UgYy5zdWNjZXNzKGEpfX0seGhy
LnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCJwcm9ncmVzcyIsZnVuY3Rpb24oYSl7YS49Cmxlbmd0
aENvbXB1dGFibGUmJmMucHJvZ3Jlc3MoTWF0aC5yb3VuZCgxMDAqYS5sb2FkZWQvYS50b3RhbCkp
fSwhMSksY29uc29sZT0KLmRlYnVnKCJ1cGxvYWRib3g6OnVwbG9hZHBvc3QoKSAtIFBvc3Rpbmcg
Zm9sbG93aW5nIGRhdGE6IiksY29uc29sZS5kZWJ1ZyhjPQopLHZvaWQgeGhyLnNlbmQoZSkpfSxh
LmZuLnVwbG9hZGlucHV0PTNEZnVuY3Rpb24oYil7dmFyIGM9M0R0aGlzLGQ9M0RhLmV4dGU9Cm5k
KHt9LHtvbmRyYWdvdmVyOmZ1bmN0aW9uKCl7fSxvbmRyYWdsZWF2ZTpmdW5jdGlvbigpe30sb25j
aGFuZ2U6ZnVuY3Rpb24oKT0Ke30sbXVsdGlwbGU6ITF9LGIpLGU9M0RhKCc8aW5wdXQgdHlwZT0z
RCJmaWxlIiBzdHlsZT0zRCJkaXNwbGF5OiBub25lIiAnKyhkPQoubXVsdGlwbGUmJiJtdWx0aXBs
ZSJ8fCIiKSsiLz4iKTtyZXR1cm4gYy5hcHBlbmQoZSkuY2hhbmdlKGZ1bmN0aW9uKGIpe2Qub249
CmNoYW5nZShiLnRhcmdldC5maWxlcyksYSh0aGlzKS52YWwoIiIpfSksYy5vbigiZHJvcCIsZnVu
Y3Rpb24oYSl7ZC5vbmRyYWdsZT0KYXZlKGEpLGEuZGF0YVRyYW5zZmVyJiYoZC5vbmNoYW5nZShh
LmRhdGFUcmFuc2Zlci5maWxlcyksYS5wcmV2ZW50RGVmYXVsdCgpPQopfSksYy5vbigiZHJhZ292
ZXIiLGZ1bmN0aW9uKGEpe2EucHJldmVudERlZmF1bHQoKSxkLm9uZHJhZ292ZXIoYSl9KSxjLm9u
KCI9CmRyYWdsZWF2ZSIsZnVuY3Rpb24oYSl7YS5zdG9wUHJvcGFnYXRpb24oKSxkLm9uZHJhZ2xl
YXZlKGEpfSkse2RpYWxvZzpmdW5jdD0KaW9uKCl7ZS50cmlnZ2VyKCJjbGljayIpfX19LGEuZm4u
dXBsb2FkYm94PTNEZnVuY3Rpb24oYil7ZnVuY3Rpb24gYyhhKXtpZihhPQomJmEubGVuZ3RoJiYh
cCl7Zm9yKHZhciBiPTNEbixjPTNEMDtjPGEubGVuZ3RoO2MrKyl7dmFyIGQ9M0RTdHJpbmcobisr
KTttW2Q9Cl09M0RhW2NdLGwuYW5ub3VuY2UoZCxtW2RdKSxvKyt9cmV0dXJuIGJ9fWZ1bmN0aW9u
IGQoYSl7bVthXSYmKGRlbGV0ZSBtW2FdLD0Kby0tKX1mdW5jdGlvbiBlKCl7aWYoMD0zRD0zRG98
fHEpcmV0dXJuIHE9M0QhMSxwPTNEITEsdm9pZCBsLmNvbXBsZXRlKCk7cD0KPTNEITA7dmFyIGI9
M0QtMTtmb3IodmFyIGMgaW4gbSl7Yj0zRGM7YnJlYWt9bVtiXTtkKGIpLGEudXBsb2FkcG9zdCh7
dXJsOmwuPQp1cmwsZGF0YTpsLmluaXRpYWxpemUoYiksc3VjY2VzczpmdW5jdGlvbihhKXtsLnN1
Y2Nlc3MoYixhKSxlKCl9LGVycm9yOmZ1bmM9CnRpb24oYSl7bC5lcnJvcihiLGEpLGUoKX0scHJv
Z3Jlc3M6ZnVuY3Rpb24oYSl7bC5wcm9ncmVzcyhiLGEpfX0pfWZ1bmN0aW9uID0KZigpe3IuZGlh
bG9nKCl9ZnVuY3Rpb24gZyhhKXtmb3IoYSBpbiBtKWQoYSl9ZnVuY3Rpb24gaCgpe3B8fChwPTNE
ITAsZSgpKX1mPQp1bmN0aW9uIGkoKXtxPTNEITB9ZnVuY3Rpb24gaihiKXtyZXR1cm4gbD0zRGEu
ZXh0ZW5kKHt9LGwsYil9ZnVuY3Rpb24gaygpe3I9CmV0dXJuIHdpbmRvdy5GaWxlJiZ3aW5kb3cu
Rm9ybURhdGEmJndpbmRvdy5YTUxIdHRwUmVxdWVzdCYmd2luZG93LkZpbGVMaXN0fT0KdmFyIGw9
M0RhLmV4dGVuZCh7fSx7ZHJhZ292ZXI6ZnVuY3Rpb24oKXt9LGRyYWdsZWF2ZTpmdW5jdGlvbigp
e30sYW5ub3VuY2U6PQpmdW5jdGlvbigpe30saW5pdGlhbGl6ZTpmdW5jdGlvbigpe30scHJvZ3Jl
c3M6ZnVuY3Rpb24oKXt9LHN1Y2Nlc3M6ZnVuY3Rpb249Cigpe30sZXJyb3I6ZnVuY3Rpb24oYSxi
KXthbGVydChiKX0sY29tcGxldGU6ZnVuY3Rpb24oKXt9fSxiKSxtPTNEe30sbj0zRDAsbz0KPTNE
MCxwPTNEITEscT0zRCExLHI9M0RhKHRoaXMpLnVwbG9hZGlucHV0KHttdWx0aXBsZTohMCxvbmNo
YW5nZTpmdW5jdGlvbihhPQope2MoYSl9LG9uZHJhZ292ZXI6Yi5vbmRyYWdvdmVyLG9uZHJhZ2xl
YXZlOmIub25kcmFnbGVhdmV9KTtyZXR1cm57c2VsZWN0OmY9CixhZGQ6YyxyZW1vdmU6ZCxzdGFy
dDpoLHN0b3A6aSxyZXNldDpnLGNvbmZpZ3VyZTpqLGNvbXBhdGlibGU6a319fShqUXVlcnkpOwor
IWZ1bmN0aW9uKGEpe2pRdWVyeS5ldmVudC5wcm9wcy5wdXNoKCJkYXRhVHJhbnNmZXIiKSxhLnVw
bG9hZHBvc3Q9M0RmdW5jdGk9Cm9uKGIpe3ZhciBjPTNEYS5leHRlbmQoe30se2RhdGE6e30sc3Vj
Y2VzczpmdW5jdGlvbigpe30sZXJyb3I6ZnVuY3Rpb24oKXt9LD0KcHJvZ3Jlc3M6ZnVuY3Rpb24o
KXt9LHVybDpudWxsLG1heGZpbGVzaXplOjIwNDgsZXJyb3JfZmlsZXNpemU6IkZpbGUgZXhjZWVk
PQpzIDJHQi4gUGxlYXNlIHVzZSBhbiBGVFAgY2xpZW50LiIsZXJyb3JfZGVmYXVsdDoiUGxlYXNl
IG1ha2Ugc3VyZSB0aGUgZmlsZSA9CmlzIGF2YWlsYWJsZS4iLGVycm9yX3NlcnZlcjoiVXBsb2Fk
IHJlcXVlc3QgZmFpbGVkLiIsZXJyb3JfbG9naW46IlVwbG9hZHMgcj0KZXF1aXJlIHlvdSB0byBs
b2cgaW4uIn0sYiksZD0zRGMuZGF0YTtpZihkLmVycm9yX21lc3NhZ2UpcmV0dXJuIHZvaWQgYy5l
cnJvPQpyKGQuZXJyb3JfbWVzc2FnZSk7dmFyIGU9M0RuZXcgRm9ybURhdGE7Zm9yKHZhciBmIGlu
IGQucGF5bG9hZCllLmFwcGVuZChmLGQ9Ci5wYXlsb2FkW2ZdKTt2YXIgZz0zRDA7Zm9yKHZhciBm
IGluIGQuZmlsZXMpe3ZhciBoPTNEZC5maWxlc1tmXTtlLmFwcGVuZChoLj0KbmFtZSxoLmZpbGUs
aC5maWxlLm5hbWUpLGcrPTNEaC5maWxlLnNpemV9cmV0dXJuIGc+MTA0ODU3NipjLm1heGZpbGVz
aXplP3ZvPQppZCBjLmVycm9yKGMuZXJyb3JfZmlsZXNpemUpOih4aHI9M0RuZXcgWE1MSHR0cFJl
cXVlc3QseGhyLm9wZW4oIlBPU1QiLGMudXI9CmwsITApLHhoci5zZXRSZXF1ZXN0SGVhZGVyKCJB
Y2NlcHQiLCJhcHBsaWNhdGlvbi9qc29uIikseGhyLnNldFJlcXVlc3RIZWFkZT0KcigiQ2FjaGUt
Q29udHJvbCIsIm5vLWNhY2hlIikseGhyLnNldFJlcXVlc3RIZWFkZXIoIlgtUmVxdWVzdGVkLVdp
dGgiLCJYTUxIPQp0dHBSZXF1ZXN0IikseGhyLm9ucmVhZHlzdGF0ZWNoYW5nZT0zRGZ1bmN0aW9u
KCl7aWYoeGhyLnJlYWR5U3RhdGU9M0Q9M0R4aHI9Ci5ET05FKXt2YXIgYT0zRG51bGw7aWYoeGhy
LnJlc3BvbnNlVGV4dCl0cnl7YT0zRGpRdWVyeS5wYXJzZUpTT04oeGhyLnJlc3Bvbj0Kc2VUZXh0
KX1jYXRjaChiKXthPTNEeGhyLnJlc3BvbnNlVGV4dH1pZih4aHIuc3RhdHVzPDIwMHx8eGhyLnN0
YXR1cz4yOTkpe3ZhPQpyIGQ9M0R4aHIuc3RhdHVzVGV4dDs0MDM9M0Q9M0R4aHIuc3RhdHVzP2Q9
M0RjLmVycm9yX2xvZ2luOjA9M0Q9M0R4aHIuc3RhdHU9CnM/ZD0zRGMuZXJyb3Jfc2VydmVyOmR8
fChkPTNEYy5lcnJvcl9kZWZhdWx0KSxjLmVycm9yKGQrIiAoIit4aHIuc3RhdHVzKyIpIj0KKX1l
bHNlIGMuc3VjY2VzcyhhKX19LHhoci51cGxvYWQuYWRkRXZlbnRMaXN0ZW5lcigicHJvZ3Jlc3Mi
LGZ1bmN0aW9uKGEpe2EuPQpsZW5ndGhDb21wdXRhYmxlJiZjLnByb2dyZXNzKE1hdGgucm91bmQo
MTAwKmEubG9hZGVkL2EudG90YWwpKX0sITEpLGNvbnNvbGU9Ci5kZWJ1ZygidXBsb2FkYm94Ojp1
cGxvYWRwb3N0KCkgLSBQb3N0aW5nIGZvbGxvd2luZyBkYXRhOiIpLGNvbnNvbGUuZGVidWcoYz0K
KSx2b2lkIHhoci5zZW5kKGUpKX0sYS5mbi51cGxvYWRpbnB1dD0zRGZ1bmN0aW9uKGIpe3ZhciBj
PTNEdGhpcyxkPTNEYS5leHRlPQpuZCh7fSx7b25kcmFnb3ZlcjpmdW5jdGlvbigpe30sb25kcmFn
bGVhdmU6ZnVuY3Rpb24oKXt9LG9uY2hhbmdlOmZ1bmN0aW9uKCk9Cnt9LG11bHRpcGxlOiExfSxi
KSxlPTNEYSgnPGlucHV0IHR5cGU9M0QiZmlsZSIgc3R5bGU9M0QiZGlzcGxheTogbm9uZSIgJyso
ZD0KLm11bHRpcGxlJiYibXVsdGlwbGUifHwiIikrIi8+Iik7cmV0dXJuIGMuYXBwZW5kKGUuY2hh
bmdlKGZ1bmN0aW9uKGIpe2Qub25jPQpoYW5nZShiLnRhcmdldC5maWxlcyksYSh0aGlzKS52YWwo
IiIpfSkpLGMub24oImRyb3AiLGZ1bmN0aW9uKGEpe2Qub25kcmFnbGU9CmF2ZShhKSxhLmRhdGFU
cmFuc2ZlciYmKGQub25jaGFuZ2UoYS5kYXRhVHJhbnNmZXIuZmlsZXMpLGEucHJldmVudERlZmF1
bHQoKT0KKX0pLGMub24oImRyYWdvdmVyIixmdW5jdGlvbihhKXthLnByZXZlbnREZWZhdWx0KCks
ZC5vbmRyYWdvdmVyKGEpfSksYy5vbigiPQpkcmFnbGVhdmUiLGZ1bmN0aW9uKGEpe2Euc3RvcFBy
b3BhZ2F0aW9uKCksZC5vbmRyYWdsZWF2ZShhKX0pLHtkaWFsb2c6ZnVuY3Q9Cmlvbigpe2UudHJp
Z2dlcigiY2xpY2siKX19fSxhLmZuLnVwbG9hZGJveD0zRGZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGMo
YSl7aWYoYT0KJiZhLmxlbmd0aCYmIXApe2Zvcih2YXIgYj0zRG4sYz0zRDA7YzxhLmxlbmd0aDtj
Kyspe3ZhciBkPTNEU3RyaW5nKG4rKyk7bVtkPQpdPTNEYVtjXSxsLmFubm91bmNlKGQsbVtkXSks
bysrfXJldHVybiBifX1mdW5jdGlvbiBkKGEpe21bYV0mJihkZWxldGUgbVthXSw9Cm8tLSl9ZnVu
Y3Rpb24gZSgpe2lmKDA9M0Q9M0RvfHxxKXJldHVybiBxPTNEITEscD0zRCExLHZvaWQgbC5jb21w
bGV0ZSgpO3A9Cj0zRCEwO3ZhciBiPTNELTE7Zm9yKHZhciBjIGluIG0pe2I9M0RjO2JyZWFrfW1b
Yl07ZChiKSxhLnVwbG9hZHBvc3Qoe3VybDpsLj0KdXJsLGRhdGE6bC5pbml0aWFsaXplKGIpLHN1
Y2Nlc3M6ZnVuY3Rpb24oYSl7bC5zdWNjZXNzKGIsYSksZSgpfSxlcnJvcjpmdW5jPQp0aW9uKGEp
e2wuZXJyb3IoYixhKSxlKCl9LHByb2dyZXNzOmZ1bmN0aW9uKGEpe2wucHJvZ3Jlc3MoYixhKX19
KX1mdW5jdGlvbiA9CmYoKXtyLmRpYWxvZygpfWZ1bmN0aW9uIGcoYSl7Zm9yKGEgaW4gbSlkKGEp
fWZ1bmN0aW9uIGgoKXtwfHwocD0zRCEwLGUoKSl9Zj0KdW5jdGlvbiBpKCl7cT0zRCEwfWZ1bmN0
aW9uIGooYil7cmV0dXJuIGw9M0RhLmV4dGVuZCh7fSxsLGIpfWZ1bmN0aW9uIGsoKXtyPQpldHVy
biB3aW5kb3cuRmlsZSYmd2luZG93LkZvcm1EYXRhJiZ3aW5kb3cuWE1MSHR0cFJlcXVlc3QmJndp
bmRvdy5GaWxlTGlzdH09CnZhciBsPTNEYS5leHRlbmQoe30se2RyYWdvdmVyOmZ1bmN0aW9uKCl7
fSxkcmFnbGVhdmU6ZnVuY3Rpb24oKXt9LGFubm91bmNlOj0KZnVuY3Rpb24oKXt9LGluaXRpYWxp
emU6ZnVuY3Rpb24oKXt9LHByb2dyZXNzOmZ1bmN0aW9uKCl7fSxzdWNjZXNzOmZ1bmN0aW9uPQoo
KXt9LGVycm9yOmZ1bmN0aW9uKGEsYil7YWxlcnQoYil9LGNvbXBsZXRlOmZ1bmN0aW9uKCl7fX0s
YiksbT0zRHt9LG49M0QwLG89Cj0zRDAscD0zRCExLHE9M0QhMSxyPTNEYSh0aGlzKS51cGxvYWRp
bnB1dCh7bXVsdGlwbGU6ITAsb25jaGFuZ2U6ZnVuY3Rpb24oYT0KKXtjKGEpfSxvbmRyYWdvdmVy
OmIub25kcmFnb3ZlcixvbmRyYWdsZWF2ZTpiLm9uZHJhZ2xlYXZlfSk7cmV0dXJue3NlbGVjdDpm
PQosYWRkOmMscmVtb3ZlOmQsc3RhcnQ6aCxzdG9wOmkscmVzZXQ6Zyxjb25maWd1cmU6aixjb21w
YXRpYmxlOmt9fX0oalF1ZXJ5KTsKIC8vIyBzb3VyY2VNYXBwaW5nVVJMPTNELi4vLi4vbWFwcy91
dGlscy91cGxvYWRib3guanMubWFwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKVGhpcyBk
aWZmIGlzIHNvIGJpZyB0aGF0IHdlIG5lZWRlZCB0byB0cnVuY2F0ZSB0aGUgcmVtYWluZGVyLgoK
UmVwb3NpdG9yeSBVUkw6IGh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRy
YWwvCgotLQoKVGhpcyBpcyBhIGNvbW1pdCBub3RpZmljYXRpb24gZnJvbSBiaXRidWNrZXQub3Jn
LiBZb3UgYXJlIHJlY2VpdmluZwp0aGlzIGJlY2F1c2UgeW91IGhhdmUgdGhlIHNlcnZpY2UgZW5h
YmxlZCwgYWRkcmVzc2luZyB0aGUgcmVjaXBpZW50IG9mCnRoaXMgZW1haWwuCg=
1
0
[galaxyproject/galaxy] ca123a: Add a safe_relpath util function for ensuring a pa...
by GitHub 24 Feb '16
by GitHub 24 Feb '16
24 Feb '16
Branch: refs/heads/dev
Home: https://github.com/galaxyproject/galaxy
Commit: ca123a4f2674351e01235bab545559b299b99ff9
https://github.com/galaxyproject/galaxy/commit/ca123a4f2674351e01235bab5455…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Add a safe_relpath util function for ensuring a path does not reference an absolute or parent directory
Commit: 3b963226a110b8de8aa11d3c4e053a220bbcba53
https://github.com/galaxyproject/galaxy/commit/3b963226a110b8de8aa11d3c4e05…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/exceptions/__init__.py
M lib/galaxy/exceptions/error_codes.json
M lib/galaxy/tools/imp_exp/__init__.py
M lib/galaxy/tools/imp_exp/unpack_tar_gz_archive.py
Log Message:
-----------
Security fixes for history imports
Commit: 5ab53c3fda3a43236b444a31aa408c9f5cb5c4c4
https://github.com/galaxyproject/galaxy/commit/5ab53c3fda3a43236b444a31aa40…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Add a safe_relpath util function for ensuring a path does not reference an absolute or parent directory
Commit: 88277c9723c558e2b2003f1b81c7f2d16143fcc6
https://github.com/galaxyproject/galaxy/commit/88277c9723c558e2b2003f1b81c7…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/exceptions/__init__.py
M lib/galaxy/exceptions/error_codes.json
M lib/galaxy/tools/imp_exp/__init__.py
M lib/galaxy/tools/imp_exp/unpack_tar_gz_archive.py
Log Message:
-----------
Security fixes for history imports
Commit: d650055ca824d5cf8ab1ede389e9b3060c1f4094
https://github.com/galaxyproject/galaxy/commit/d650055ca824d5cf8ab1ede389e9…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/objectstore/__init__.py
M lib/galaxy/objectstore/rods.py
M lib/galaxy/objectstore/s3.py
Log Message:
-----------
Security fixes for object store paths
Commit: 32c910ac4021b0e65112d557a7f12d24e158171d
https://github.com/galaxyproject/galaxy/commit/32c910ac4021b0e65112d557a7f1…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/objectstore/__init__.py
M lib/galaxy/objectstore/rods.py
M lib/galaxy/objectstore/s3.py
Log Message:
-----------
Security fixes for object store paths
Commit: 37548ef8edb95d59fddd73283561e8b1a6588c10
https://github.com/galaxyproject/galaxy/commit/37548ef8edb95d59fddd73283561…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
R templates/admin/requests/select_datasets_to_transfer.mako
M templates/webapps/galaxy/requests/common/common.mako
M templates/webapps/galaxy/requests/common/view_request_history.mako
M templates/webapps/galaxy/requests/common/view_sample_datasets.mako
Log Message:
-----------
Remove sample tracking manual external service transfer due to security concerns
Commit: 78f441b9c7bfd68f7b3ee030f4ffe4a95b5fdc58
https://github.com/galaxyproject/galaxy/commit/78f441b9c7bfd68f7b3ee030f4ff…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
R templates/admin/requests/select_datasets_to_transfer.mako
M templates/webapps/galaxy/requests/common/common.mako
M templates/webapps/galaxy/requests/common/view_request_history.mako
M templates/webapps/galaxy/requests/common/view_sample_datasets.mako
Log Message:
-----------
Remove sample tracking manual external service transfer due to security concerns
Commit: 4f3397fa0ab187a4b5c32e1268265925fc1a8753
https://github.com/galaxyproject/galaxy/commit/4f3397fa0ab187a4b5c32e126826…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/tool_shed/util/shed_util_common.py
M templates/admin/tool_shed_repository/common.mako
M templates/webapps/tool_shed/repository/common.mako
Log Message:
-----------
Security fixes for tool shed repository browsing
Commit: 8468871ee481598a84888b5329139590ec75e98d
https://github.com/galaxyproject/galaxy/commit/8468871ee481598a84888b532913…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Add a safe_relpath util function for ensuring a path does not reference an absolute or parent directory
Commit: cee85bae67377d3fad42bec5b4ebb022aaf7b2c7
https://github.com/galaxyproject/galaxy/commit/cee85bae67377d3fad42bec5b4eb…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/tool_shed/util/shed_util_common.py
M templates/admin/tool_shed_repository/common.mako
M templates/webapps/tool_shed/repository/common.mako
Log Message:
-----------
Security fixes for tool shed repository browsing
Commit: 4845a39071ab4e2652e564efdf7647a942563603
https://github.com/galaxyproject/galaxy/commit/4845a39071ab4e2652e564efdf76…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/tool_shed/framework/middleware/hg.py
M lib/tool_shed/capsule/capsule_manager.py
M lib/tool_shed/util/commit_util.py
M lib/tool_shed/util/repository_content_util.py
Log Message:
-----------
Security fixes for tool shed hg push and capsule/tarball uploads
Commit: ef4a9f6e2114e69f6ea3167e99a857f2ea4d28af
https://github.com/galaxyproject/galaxy/commit/ef4a9f6e2114e69f6ea3167e99a8…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/exceptions/__init__.py
M lib/galaxy/exceptions/error_codes.json
M lib/galaxy/tools/imp_exp/__init__.py
M lib/galaxy/tools/imp_exp/unpack_tar_gz_archive.py
Log Message:
-----------
Security fixes for history imports
Commit: 61cd045ffa947a69abacddea459f725ba569584a
https://github.com/galaxyproject/galaxy/commit/61cd045ffa947a69abacddea459f…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_14.10' into release_15.01
Commit: 2a8089749caab12c087064c840708fb05b0104cd
https://github.com/galaxyproject/galaxy/commit/2a8089749caab12c087064c84070…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Add a safe_relpath util function for ensuring a path does not reference an absolute or parent directory
Commit: 6e3b74869a54558fe48d6e1633c5af7197051447
https://github.com/galaxyproject/galaxy/commit/6e3b74869a54558fe48d6e1633c5…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/exceptions/__init__.py
M lib/galaxy/exceptions/error_codes.json
M lib/galaxy/tools/imp_exp/__init__.py
M lib/galaxy/tools/imp_exp/unpack_tar_gz_archive.py
Log Message:
-----------
Security fixes for history imports
Commit: c8963786d53efd2cf3b359b2f9a000e00688285f
https://github.com/galaxyproject/galaxy/commit/c8963786d53efd2cf3b359b2f9a0…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/objectstore/__init__.py
M lib/galaxy/objectstore/rods.py
M lib/galaxy/objectstore/s3.py
Log Message:
-----------
Security fixes for object store paths
Commit: ce88f2f81caff6af7dc730ef9c1fbc2a40922dab
https://github.com/galaxyproject/galaxy/commit/ce88f2f81caff6af7dc730ef9c1f…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/objectstore/__init__.py
M lib/galaxy/objectstore/rods.py
M lib/galaxy/objectstore/s3.py
Log Message:
-----------
Security fixes for object store paths
Commit: d4b94722f992c9309aa2ec5bfa5bce2dacd9b218
https://github.com/galaxyproject/galaxy/commit/d4b94722f992c9309aa2ec5bfa5b…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
R templates/admin/requests/select_datasets_to_transfer.mako
M templates/webapps/galaxy/requests/common/common.mako
M templates/webapps/galaxy/requests/common/view_request_history.mako
M templates/webapps/galaxy/requests/common/view_sample_datasets.mako
Log Message:
-----------
Remove sample tracking manual external service transfer due to security concerns
Commit: fcd8f50448cd1db7b50a58321c8fa391506bf997
https://github.com/galaxyproject/galaxy/commit/fcd8f50448cd1db7b50a58321c8f…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
R templates/admin/requests/select_datasets_to_transfer.mako
M templates/webapps/galaxy/requests/common/common.mako
M templates/webapps/galaxy/requests/common/view_request_history.mako
M templates/webapps/galaxy/requests/common/view_sample_datasets.mako
Log Message:
-----------
Remove sample tracking manual external service transfer due to security concerns
Commit: 626cade512894e54c5b3e5257543f267a1826a71
https://github.com/galaxyproject/galaxy/commit/626cade512894e54c5b3e5257543…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/tool_shed/util/shed_util_common.py
M templates/admin/tool_shed_repository/common.mako
M templates/webapps/tool_shed/repository/common.mako
Log Message:
-----------
Security fixes for tool shed repository browsing
Commit: 91f5fa81fe3c1c4d45b3987b27c187c4cb53f8e8
https://github.com/galaxyproject/galaxy/commit/91f5fa81fe3c1c4d45b3987b27c1…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/tool_shed/util/shed_util_common.py
M templates/admin/tool_shed_repository/common.mako
M templates/webapps/tool_shed/repository/common.mako
Log Message:
-----------
Security fixes for tool shed repository browsing
Commit: 581808aa98a6058a4bdbe13c21271ca4b0d3ef77
https://github.com/galaxyproject/galaxy/commit/581808aa98a6058a4bdbe13c2127…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/tool_shed/framework/middleware/hg.py
M lib/tool_shed/capsule/capsule_manager.py
M lib/tool_shed/util/commit_util.py
M lib/tool_shed/util/repository_content_util.py
Log Message:
-----------
Security fixes for tool shed hg push and capsule/tarball uploads
Commit: 2bda436473b116c7d98c36a8435056745bf832f2
https://github.com/galaxyproject/galaxy/commit/2bda436473b116c7d98c36a84350…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/tool_shed/framework/middleware/hg.py
M lib/tool_shed/capsule/capsule_manager.py
M lib/tool_shed/util/commit_util.py
M lib/tool_shed/util/repository_content_util.py
Log Message:
-----------
Security fixes for tool shed hg push and capsule/tarball uploads
Commit: f8a1aef76c022612a8a28938e1d57412348884ab
https://github.com/galaxyproject/galaxy/commit/f8a1aef76c022612a8a28938e1d5…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_15.01' into release_15.03
Commit: 47a8b6e86733472ad3c0dbe2d5774d69ecba44eb
https://github.com/galaxyproject/galaxy/commit/47a8b6e86733472ad3c0dbe2d577…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Add a safe_relpath util function for ensuring a path does not reference an absolute or parent directory
Commit: 6190f6fa6db26ada3380c9a54b5481d12b3ac9ae
https://github.com/galaxyproject/galaxy/commit/6190f6fa6db26ada3380c9a54b54…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/exceptions/__init__.py
M lib/galaxy/exceptions/error_codes.json
M lib/galaxy/tools/imp_exp/__init__.py
M lib/galaxy/tools/imp_exp/unpack_tar_gz_archive.py
Log Message:
-----------
Security fixes for history imports
Commit: 27d7298ec4788a2e59a5988007fde05e5fc004ce
https://github.com/galaxyproject/galaxy/commit/27d7298ec4788a2e59a5988007fd…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/objectstore/__init__.py
M lib/galaxy/objectstore/rods.py
M lib/galaxy/objectstore/s3.py
Log Message:
-----------
Security fixes for object store paths
Commit: c465489ea1676905ddb4cfb88605c1e869a7019c
https://github.com/galaxyproject/galaxy/commit/c465489ea1676905ddb4cfb88605…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
R templates/admin/requests/select_datasets_to_transfer.mako
M templates/webapps/galaxy/requests/common/common.mako
M templates/webapps/galaxy/requests/common/view_request_history.mako
M templates/webapps/galaxy/requests/common/view_sample_datasets.mako
Log Message:
-----------
Remove sample tracking manual external service transfer due to security concerns
Commit: 18b3126a15ec7fe3873253be0c1344e9f067f0ca
https://github.com/galaxyproject/galaxy/commit/18b3126a15ec7fe3873253be0c13…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/tool_shed/util/shed_util_common.py
M templates/admin/tool_shed_repository/common.mako
M templates/webapps/tool_shed/repository/common.mako
Log Message:
-----------
Security fixes for tool shed repository browsing
Commit: 40a90831ed28b762e90cf2b50abec7e8bef738d6
https://github.com/galaxyproject/galaxy/commit/40a90831ed28b762e90cf2b50abe…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/tool_shed/framework/middleware/hg.py
M lib/tool_shed/capsule/capsule_manager.py
M lib/tool_shed/util/commit_util.py
M lib/tool_shed/util/repository_content_util.py
Log Message:
-----------
Security fixes for tool shed hg push and capsule/tarball uploads
Commit: f65bcb3383ba142d514b38ab5ed03d5f9ecd5f1d
https://github.com/galaxyproject/galaxy/commit/f65bcb3383ba142d514b38ab5ed0…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_15.03' into release_15.05
Commit: ab1a135dd4a422897c74ea87e5210ec5baa27ff7
https://github.com/galaxyproject/galaxy/commit/ab1a135dd4a422897c74ea87e521…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_15.05' into release_15.07
Commit: b3e0315e1e40912366c8103412e64a645e0a93a9
https://github.com/galaxyproject/galaxy/commit/b3e0315e1e40912366c8103412e6…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Add a safe_relpath util function for ensuring a path does not reference an absolute or parent directory
Commit: 8736c7bd77bd3c5cd38225538085c0eb2a40e8f4
https://github.com/galaxyproject/galaxy/commit/8736c7bd77bd3c5cd38225538085…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/exceptions/__init__.py
M lib/galaxy/exceptions/error_codes.json
M lib/galaxy/tools/imp_exp/__init__.py
M lib/galaxy/tools/imp_exp/unpack_tar_gz_archive.py
Log Message:
-----------
Security fixes for history imports
Commit: 23e203c48180b6ab1e4886be81447e33afb853e5
https://github.com/galaxyproject/galaxy/commit/23e203c48180b6ab1e4886be8144…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/objectstore/__init__.py
M lib/galaxy/objectstore/rods.py
M lib/galaxy/objectstore/s3.py
Log Message:
-----------
Security fixes for object store paths
Commit: 64cd02ae385fb509378c78e6e4832768ff4f1e00
https://github.com/galaxyproject/galaxy/commit/64cd02ae385fb509378c78e6e483…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
R templates/admin/requests/select_datasets_to_transfer.mako
M templates/webapps/galaxy/requests/common/common.mako
M templates/webapps/galaxy/requests/common/view_request_history.mako
M templates/webapps/galaxy/requests/common/view_sample_datasets.mako
Log Message:
-----------
Remove sample tracking manual external service transfer due to security concerns
Commit: 2dcbda93b29e4dd975453af8eeb4f171f7db2918
https://github.com/galaxyproject/galaxy/commit/2dcbda93b29e4dd975453af8eeb4…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/tool_shed/util/shed_util_common.py
M templates/admin/tool_shed_repository/common.mako
M templates/webapps/tool_shed/repository/common.mako
Log Message:
-----------
Security fixes for tool shed repository browsing
Commit: b11b8e68500a3d074bf20b08958671d958d42eca
https://github.com/galaxyproject/galaxy/commit/b11b8e68500a3d074bf20b089586…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/tool_shed/framework/middleware/hg.py
M lib/tool_shed/capsule/capsule_manager.py
M lib/tool_shed/util/commit_util.py
M lib/tool_shed/util/repository_content_util.py
Log Message:
-----------
Security fixes for tool shed hg push and capsule/tarball uploads
Commit: f540a16768307995ea49c5d241948537ebbfa540
https://github.com/galaxyproject/galaxy/commit/f540a16768307995ea49c5d24194…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Add a safe_relpath util function for ensuring a path does not reference an absolute or parent directory
Commit: bf1c77d171f079f42d481ad465dbaef3bac8b4d4
https://github.com/galaxyproject/galaxy/commit/bf1c77d171f079f42d481ad465db…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/exceptions/__init__.py
M lib/galaxy/exceptions/error_codes.json
M lib/galaxy/tools/imp_exp/__init__.py
M lib/galaxy/tools/imp_exp/unpack_tar_gz_archive.py
Log Message:
-----------
Security fixes for history imports
Commit: 5da91bddcda3ad3a4942e752d9b4bb3e7872046c
https://github.com/galaxyproject/galaxy/commit/5da91bddcda3ad3a4942e752d9b4…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/objectstore/__init__.py
M lib/galaxy/objectstore/rods.py
M lib/galaxy/objectstore/s3.py
Log Message:
-----------
Security fixes for object store paths
Commit: cd8b96553f673145ee64a86d32960ba42643baed
https://github.com/galaxyproject/galaxy/commit/cd8b96553f673145ee64a86d3296…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
R templates/admin/requests/select_datasets_to_transfer.mako
M templates/webapps/galaxy/requests/common/common.mako
M templates/webapps/galaxy/requests/common/view_request_history.mako
M templates/webapps/galaxy/requests/common/view_sample_datasets.mako
Log Message:
-----------
Remove sample tracking manual external service transfer due to security concerns
Commit: e4a1d5727805168a9fd15aca1cdd21630ada2bbc
https://github.com/galaxyproject/galaxy/commit/e4a1d5727805168a9fd15aca1cdd…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/tool_shed/util/shed_util_common.py
M templates/admin/tool_shed_repository/common.mako
M templates/webapps/tool_shed/repository/common.mako
Log Message:
-----------
Security fixes for tool shed repository browsing
Commit: e845d649c672c51cc2336da0d880c9ff74ea6b5f
https://github.com/galaxyproject/galaxy/commit/e845d649c672c51cc2336da0d880…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/tool_shed/framework/middleware/hg.py
M lib/tool_shed/capsule/capsule_manager.py
M lib/tool_shed/util/commit_util.py
M lib/tool_shed/util/repository_content_util.py
Log Message:
-----------
Security fixes for tool shed hg push and capsule/tarball uploads
Commit: 8c4542b136ef1eab3231ba0df4aab53b91f504af
https://github.com/galaxyproject/galaxy/commit/8c4542b136ef1eab3231ba0df4aa…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_15.07' into release_15.10
Commit: 61b59b2082c021feec8ac0ffb17302bb8068633b
https://github.com/galaxyproject/galaxy/commit/61b59b2082c021feec8ac0ffb173…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/exceptions/__init__.py
M lib/galaxy/exceptions/error_codes.json
M lib/galaxy/tools/imp_exp/__init__.py
M lib/galaxy/tools/imp_exp/unpack_tar_gz_archive.py
Log Message:
-----------
Security fixes for history imports
Commit: 7c4b8ff7475735ee14231780545fd99fff5d2b12
https://github.com/galaxyproject/galaxy/commit/7c4b8ff7475735ee14231780545f…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/objectstore/__init__.py
M lib/galaxy/objectstore/rods.py
M lib/galaxy/objectstore/s3.py
Log Message:
-----------
Security fixes for object store paths
Commit: ffcd4fe1925368eae6cb3aac30eb6bbc5e7976e5
https://github.com/galaxyproject/galaxy/commit/ffcd4fe1925368eae6cb3aac30eb…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
R templates/admin/requests/select_datasets_to_transfer.mako
M templates/webapps/galaxy/requests/common/common.mako
M templates/webapps/galaxy/requests/common/view_request_history.mako
M templates/webapps/galaxy/requests/common/view_sample_datasets.mako
Log Message:
-----------
Remove sample tracking manual external service transfer due to security concerns
Commit: 9e6afea498831f1e4fb1b86a6ff7bf4833ef7be1
https://github.com/galaxyproject/galaxy/commit/9e6afea498831f1e4fb1b86a6ff7…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/tool_shed/util/shed_util_common.py
M templates/admin/tool_shed_repository/common.mako
M templates/webapps/tool_shed/repository/common.mako
Log Message:
-----------
Security fixes for tool shed repository browsing
Commit: 3a006766d3d8ff6f7d745e9f2d25798b6d030a8d
https://github.com/galaxyproject/galaxy/commit/3a006766d3d8ff6f7d745e9f2d25…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/tool_shed/framework/middleware/hg.py
M lib/tool_shed/capsule/capsule_manager.py
M lib/tool_shed/util/commit_util.py
M lib/tool_shed/util/repository_content_util.py
Log Message:
-----------
Security fixes for tool shed hg push and capsule/tarball uploads
Commit: 624e3837bd3d2dffdee7737f4e55d2e66316896a
https://github.com/galaxyproject/galaxy/commit/624e3837bd3d2dffdee7737f4e55…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_15.10' into release_16.01
Commit: ed82982f9b15652628f89a3f203fb5e725a491f9
https://github.com/galaxyproject/galaxy/commit/ed82982f9b15652628f89a3f203f…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_16.01' into dev
Commit: c6b010af346d0fed5bba7e5610ea59210be5ceb7
https://github.com/galaxyproject/galaxy/commit/c6b010af346d0fed5bba7e5610ea…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M doc/source/releases/16.01.rst
M doc/source/releases/16.01_announce.rst
Log Message:
-----------
Add security announcement to v16.01 release notes.
Commit: 63d7b7a212f7ac9890b00fd560e8b531a2eb1de0
https://github.com/galaxyproject/galaxy/commit/63d7b7a212f7ac9890b00fd560e8…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M doc/source/releases/16.01.rst
M doc/source/releases/16.01_announce.rst
Log Message:
-----------
Merge branch 'release_16.01' into dev
Commit: 0122040fad865487e2377cee35360af49e37d0e8
https://github.com/galaxyproject/galaxy/commit/0122040fad865487e2377cee3536…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/version.py
Log Message:
-----------
Update version to 15.03.4
Commit: 3516e94e5cb0e971d8e10de018b72cf22296766e
https://github.com/galaxyproject/galaxy/commit/3516e94e5cb0e971d8e10de018b7…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_15.03' into release_15.05
Commit: c8e9845c5c57714042a75053d954b1c7f0962672
https://github.com/galaxyproject/galaxy/commit/c8e9845c5c57714042a75053d954…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/version.py
Log Message:
-----------
Update version to 15.05.2
Commit: 3d832aff0abe5a4ca48bfc80c84032f388bf7024
https://github.com/galaxyproject/galaxy/commit/3d832aff0abe5a4ca48bfc80c840…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_15.05' into release_15.07
Commit: 30608c177c625f4ce66f1376a66621687fe7711e
https://github.com/galaxyproject/galaxy/commit/30608c177c625f4ce66f1376a666…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/version.py
Log Message:
-----------
Update version to 15.07.1
Commit: 21cc5b2da540eba18445603146407c1779257bba
https://github.com/galaxyproject/galaxy/commit/21cc5b2da540eba1844560314640…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_15.07' into release_15.10
Commit: b5949bcbbfbc613b0ec72ce23e4da448c9316c49
https://github.com/galaxyproject/galaxy/commit/b5949bcbbfbc613b0ec72ce23e4d…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/version.py
Log Message:
-----------
Update version to 15.10.2
Commit: 70329f64ab8b6dcf9e9a6b6762783543b49c36eb
https://github.com/galaxyproject/galaxy/commit/70329f64ab8b6dcf9e9a6b676278…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_15.10' into release_16.01
Commit: 0771e4731cfdfc352aeb0a682edd52753ea50fca
https://github.com/galaxyproject/galaxy/commit/0771e4731cfdfc352aeb0a682edd…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_16.01' into dev
Commit: 5677c2ee4fce70c9898ea5e6cae125b6147ae36a
https://github.com/galaxyproject/galaxy/commit/5677c2ee4fce70c9898ea5e6cae1…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/version.py
Log Message:
-----------
Update version to 16.01
Commit: 2656f11b513adf05a2bb76daf54dd5ecab4d2f9c
https://github.com/galaxyproject/galaxy/commit/2656f11b513adf05a2bb76daf54d…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'version-16.01' into version-16.04.dev
Compare: https://github.com/galaxyproject/galaxy/compare/1f530b45b3d6...2656f11b513a
1
0
[galaxyproject/galaxy] ca123a: Add a safe_relpath util function for ensuring a pa...
by GitHub 24 Feb '16
by GitHub 24 Feb '16
24 Feb '16
Branch: refs/heads/release_16.01
Home: https://github.com/galaxyproject/galaxy
Commit: ca123a4f2674351e01235bab545559b299b99ff9
https://github.com/galaxyproject/galaxy/commit/ca123a4f2674351e01235bab5455…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Add a safe_relpath util function for ensuring a path does not reference an absolute or parent directory
Commit: 3b963226a110b8de8aa11d3c4e053a220bbcba53
https://github.com/galaxyproject/galaxy/commit/3b963226a110b8de8aa11d3c4e05…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/exceptions/__init__.py
M lib/galaxy/exceptions/error_codes.json
M lib/galaxy/tools/imp_exp/__init__.py
M lib/galaxy/tools/imp_exp/unpack_tar_gz_archive.py
Log Message:
-----------
Security fixes for history imports
Commit: 5ab53c3fda3a43236b444a31aa408c9f5cb5c4c4
https://github.com/galaxyproject/galaxy/commit/5ab53c3fda3a43236b444a31aa40…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Add a safe_relpath util function for ensuring a path does not reference an absolute or parent directory
Commit: 88277c9723c558e2b2003f1b81c7f2d16143fcc6
https://github.com/galaxyproject/galaxy/commit/88277c9723c558e2b2003f1b81c7…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/exceptions/__init__.py
M lib/galaxy/exceptions/error_codes.json
M lib/galaxy/tools/imp_exp/__init__.py
M lib/galaxy/tools/imp_exp/unpack_tar_gz_archive.py
Log Message:
-----------
Security fixes for history imports
Commit: d650055ca824d5cf8ab1ede389e9b3060c1f4094
https://github.com/galaxyproject/galaxy/commit/d650055ca824d5cf8ab1ede389e9…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/objectstore/__init__.py
M lib/galaxy/objectstore/rods.py
M lib/galaxy/objectstore/s3.py
Log Message:
-----------
Security fixes for object store paths
Commit: 32c910ac4021b0e65112d557a7f12d24e158171d
https://github.com/galaxyproject/galaxy/commit/32c910ac4021b0e65112d557a7f1…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/objectstore/__init__.py
M lib/galaxy/objectstore/rods.py
M lib/galaxy/objectstore/s3.py
Log Message:
-----------
Security fixes for object store paths
Commit: 37548ef8edb95d59fddd73283561e8b1a6588c10
https://github.com/galaxyproject/galaxy/commit/37548ef8edb95d59fddd73283561…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
R templates/admin/requests/select_datasets_to_transfer.mako
M templates/webapps/galaxy/requests/common/common.mako
M templates/webapps/galaxy/requests/common/view_request_history.mako
M templates/webapps/galaxy/requests/common/view_sample_datasets.mako
Log Message:
-----------
Remove sample tracking manual external service transfer due to security concerns
Commit: 78f441b9c7bfd68f7b3ee030f4ffe4a95b5fdc58
https://github.com/galaxyproject/galaxy/commit/78f441b9c7bfd68f7b3ee030f4ff…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
R templates/admin/requests/select_datasets_to_transfer.mako
M templates/webapps/galaxy/requests/common/common.mako
M templates/webapps/galaxy/requests/common/view_request_history.mako
M templates/webapps/galaxy/requests/common/view_sample_datasets.mako
Log Message:
-----------
Remove sample tracking manual external service transfer due to security concerns
Commit: 4f3397fa0ab187a4b5c32e1268265925fc1a8753
https://github.com/galaxyproject/galaxy/commit/4f3397fa0ab187a4b5c32e126826…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/tool_shed/util/shed_util_common.py
M templates/admin/tool_shed_repository/common.mako
M templates/webapps/tool_shed/repository/common.mako
Log Message:
-----------
Security fixes for tool shed repository browsing
Commit: 8468871ee481598a84888b5329139590ec75e98d
https://github.com/galaxyproject/galaxy/commit/8468871ee481598a84888b532913…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Add a safe_relpath util function for ensuring a path does not reference an absolute or parent directory
Commit: cee85bae67377d3fad42bec5b4ebb022aaf7b2c7
https://github.com/galaxyproject/galaxy/commit/cee85bae67377d3fad42bec5b4eb…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/tool_shed/util/shed_util_common.py
M templates/admin/tool_shed_repository/common.mako
M templates/webapps/tool_shed/repository/common.mako
Log Message:
-----------
Security fixes for tool shed repository browsing
Commit: 4845a39071ab4e2652e564efdf7647a942563603
https://github.com/galaxyproject/galaxy/commit/4845a39071ab4e2652e564efdf76…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/tool_shed/framework/middleware/hg.py
M lib/tool_shed/capsule/capsule_manager.py
M lib/tool_shed/util/commit_util.py
M lib/tool_shed/util/repository_content_util.py
Log Message:
-----------
Security fixes for tool shed hg push and capsule/tarball uploads
Commit: ef4a9f6e2114e69f6ea3167e99a857f2ea4d28af
https://github.com/galaxyproject/galaxy/commit/ef4a9f6e2114e69f6ea3167e99a8…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/exceptions/__init__.py
M lib/galaxy/exceptions/error_codes.json
M lib/galaxy/tools/imp_exp/__init__.py
M lib/galaxy/tools/imp_exp/unpack_tar_gz_archive.py
Log Message:
-----------
Security fixes for history imports
Commit: 61cd045ffa947a69abacddea459f725ba569584a
https://github.com/galaxyproject/galaxy/commit/61cd045ffa947a69abacddea459f…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_14.10' into release_15.01
Commit: 2a8089749caab12c087064c840708fb05b0104cd
https://github.com/galaxyproject/galaxy/commit/2a8089749caab12c087064c84070…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Add a safe_relpath util function for ensuring a path does not reference an absolute or parent directory
Commit: 6e3b74869a54558fe48d6e1633c5af7197051447
https://github.com/galaxyproject/galaxy/commit/6e3b74869a54558fe48d6e1633c5…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/exceptions/__init__.py
M lib/galaxy/exceptions/error_codes.json
M lib/galaxy/tools/imp_exp/__init__.py
M lib/galaxy/tools/imp_exp/unpack_tar_gz_archive.py
Log Message:
-----------
Security fixes for history imports
Commit: c8963786d53efd2cf3b359b2f9a000e00688285f
https://github.com/galaxyproject/galaxy/commit/c8963786d53efd2cf3b359b2f9a0…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/objectstore/__init__.py
M lib/galaxy/objectstore/rods.py
M lib/galaxy/objectstore/s3.py
Log Message:
-----------
Security fixes for object store paths
Commit: ce88f2f81caff6af7dc730ef9c1fbc2a40922dab
https://github.com/galaxyproject/galaxy/commit/ce88f2f81caff6af7dc730ef9c1f…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/objectstore/__init__.py
M lib/galaxy/objectstore/rods.py
M lib/galaxy/objectstore/s3.py
Log Message:
-----------
Security fixes for object store paths
Commit: d4b94722f992c9309aa2ec5bfa5bce2dacd9b218
https://github.com/galaxyproject/galaxy/commit/d4b94722f992c9309aa2ec5bfa5b…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
R templates/admin/requests/select_datasets_to_transfer.mako
M templates/webapps/galaxy/requests/common/common.mako
M templates/webapps/galaxy/requests/common/view_request_history.mako
M templates/webapps/galaxy/requests/common/view_sample_datasets.mako
Log Message:
-----------
Remove sample tracking manual external service transfer due to security concerns
Commit: fcd8f50448cd1db7b50a58321c8fa391506bf997
https://github.com/galaxyproject/galaxy/commit/fcd8f50448cd1db7b50a58321c8f…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
R templates/admin/requests/select_datasets_to_transfer.mako
M templates/webapps/galaxy/requests/common/common.mako
M templates/webapps/galaxy/requests/common/view_request_history.mako
M templates/webapps/galaxy/requests/common/view_sample_datasets.mako
Log Message:
-----------
Remove sample tracking manual external service transfer due to security concerns
Commit: 626cade512894e54c5b3e5257543f267a1826a71
https://github.com/galaxyproject/galaxy/commit/626cade512894e54c5b3e5257543…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/tool_shed/util/shed_util_common.py
M templates/admin/tool_shed_repository/common.mako
M templates/webapps/tool_shed/repository/common.mako
Log Message:
-----------
Security fixes for tool shed repository browsing
Commit: 91f5fa81fe3c1c4d45b3987b27c187c4cb53f8e8
https://github.com/galaxyproject/galaxy/commit/91f5fa81fe3c1c4d45b3987b27c1…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/tool_shed/util/shed_util_common.py
M templates/admin/tool_shed_repository/common.mako
M templates/webapps/tool_shed/repository/common.mako
Log Message:
-----------
Security fixes for tool shed repository browsing
Commit: 581808aa98a6058a4bdbe13c21271ca4b0d3ef77
https://github.com/galaxyproject/galaxy/commit/581808aa98a6058a4bdbe13c2127…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/tool_shed/framework/middleware/hg.py
M lib/tool_shed/capsule/capsule_manager.py
M lib/tool_shed/util/commit_util.py
M lib/tool_shed/util/repository_content_util.py
Log Message:
-----------
Security fixes for tool shed hg push and capsule/tarball uploads
Commit: 2bda436473b116c7d98c36a8435056745bf832f2
https://github.com/galaxyproject/galaxy/commit/2bda436473b116c7d98c36a84350…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/tool_shed/framework/middleware/hg.py
M lib/tool_shed/capsule/capsule_manager.py
M lib/tool_shed/util/commit_util.py
M lib/tool_shed/util/repository_content_util.py
Log Message:
-----------
Security fixes for tool shed hg push and capsule/tarball uploads
Commit: f8a1aef76c022612a8a28938e1d57412348884ab
https://github.com/galaxyproject/galaxy/commit/f8a1aef76c022612a8a28938e1d5…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_15.01' into release_15.03
Commit: 47a8b6e86733472ad3c0dbe2d5774d69ecba44eb
https://github.com/galaxyproject/galaxy/commit/47a8b6e86733472ad3c0dbe2d577…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Add a safe_relpath util function for ensuring a path does not reference an absolute or parent directory
Commit: 6190f6fa6db26ada3380c9a54b5481d12b3ac9ae
https://github.com/galaxyproject/galaxy/commit/6190f6fa6db26ada3380c9a54b54…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/exceptions/__init__.py
M lib/galaxy/exceptions/error_codes.json
M lib/galaxy/tools/imp_exp/__init__.py
M lib/galaxy/tools/imp_exp/unpack_tar_gz_archive.py
Log Message:
-----------
Security fixes for history imports
Commit: 27d7298ec4788a2e59a5988007fde05e5fc004ce
https://github.com/galaxyproject/galaxy/commit/27d7298ec4788a2e59a5988007fd…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/objectstore/__init__.py
M lib/galaxy/objectstore/rods.py
M lib/galaxy/objectstore/s3.py
Log Message:
-----------
Security fixes for object store paths
Commit: c465489ea1676905ddb4cfb88605c1e869a7019c
https://github.com/galaxyproject/galaxy/commit/c465489ea1676905ddb4cfb88605…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
R templates/admin/requests/select_datasets_to_transfer.mako
M templates/webapps/galaxy/requests/common/common.mako
M templates/webapps/galaxy/requests/common/view_request_history.mako
M templates/webapps/galaxy/requests/common/view_sample_datasets.mako
Log Message:
-----------
Remove sample tracking manual external service transfer due to security concerns
Commit: 18b3126a15ec7fe3873253be0c1344e9f067f0ca
https://github.com/galaxyproject/galaxy/commit/18b3126a15ec7fe3873253be0c13…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/tool_shed/util/shed_util_common.py
M templates/admin/tool_shed_repository/common.mako
M templates/webapps/tool_shed/repository/common.mako
Log Message:
-----------
Security fixes for tool shed repository browsing
Commit: 40a90831ed28b762e90cf2b50abec7e8bef738d6
https://github.com/galaxyproject/galaxy/commit/40a90831ed28b762e90cf2b50abe…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/tool_shed/framework/middleware/hg.py
M lib/tool_shed/capsule/capsule_manager.py
M lib/tool_shed/util/commit_util.py
M lib/tool_shed/util/repository_content_util.py
Log Message:
-----------
Security fixes for tool shed hg push and capsule/tarball uploads
Commit: f65bcb3383ba142d514b38ab5ed03d5f9ecd5f1d
https://github.com/galaxyproject/galaxy/commit/f65bcb3383ba142d514b38ab5ed0…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_15.03' into release_15.05
Commit: ab1a135dd4a422897c74ea87e5210ec5baa27ff7
https://github.com/galaxyproject/galaxy/commit/ab1a135dd4a422897c74ea87e521…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_15.05' into release_15.07
Commit: b3e0315e1e40912366c8103412e64a645e0a93a9
https://github.com/galaxyproject/galaxy/commit/b3e0315e1e40912366c8103412e6…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Add a safe_relpath util function for ensuring a path does not reference an absolute or parent directory
Commit: 8736c7bd77bd3c5cd38225538085c0eb2a40e8f4
https://github.com/galaxyproject/galaxy/commit/8736c7bd77bd3c5cd38225538085…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/exceptions/__init__.py
M lib/galaxy/exceptions/error_codes.json
M lib/galaxy/tools/imp_exp/__init__.py
M lib/galaxy/tools/imp_exp/unpack_tar_gz_archive.py
Log Message:
-----------
Security fixes for history imports
Commit: 23e203c48180b6ab1e4886be81447e33afb853e5
https://github.com/galaxyproject/galaxy/commit/23e203c48180b6ab1e4886be8144…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/objectstore/__init__.py
M lib/galaxy/objectstore/rods.py
M lib/galaxy/objectstore/s3.py
Log Message:
-----------
Security fixes for object store paths
Commit: 64cd02ae385fb509378c78e6e4832768ff4f1e00
https://github.com/galaxyproject/galaxy/commit/64cd02ae385fb509378c78e6e483…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
R templates/admin/requests/select_datasets_to_transfer.mako
M templates/webapps/galaxy/requests/common/common.mako
M templates/webapps/galaxy/requests/common/view_request_history.mako
M templates/webapps/galaxy/requests/common/view_sample_datasets.mako
Log Message:
-----------
Remove sample tracking manual external service transfer due to security concerns
Commit: 2dcbda93b29e4dd975453af8eeb4f171f7db2918
https://github.com/galaxyproject/galaxy/commit/2dcbda93b29e4dd975453af8eeb4…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/tool_shed/util/shed_util_common.py
M templates/admin/tool_shed_repository/common.mako
M templates/webapps/tool_shed/repository/common.mako
Log Message:
-----------
Security fixes for tool shed repository browsing
Commit: b11b8e68500a3d074bf20b08958671d958d42eca
https://github.com/galaxyproject/galaxy/commit/b11b8e68500a3d074bf20b089586…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/tool_shed/framework/middleware/hg.py
M lib/tool_shed/capsule/capsule_manager.py
M lib/tool_shed/util/commit_util.py
M lib/tool_shed/util/repository_content_util.py
Log Message:
-----------
Security fixes for tool shed hg push and capsule/tarball uploads
Commit: f540a16768307995ea49c5d241948537ebbfa540
https://github.com/galaxyproject/galaxy/commit/f540a16768307995ea49c5d24194…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/util/__init__.py
Log Message:
-----------
Add a safe_relpath util function for ensuring a path does not reference an absolute or parent directory
Commit: bf1c77d171f079f42d481ad465dbaef3bac8b4d4
https://github.com/galaxyproject/galaxy/commit/bf1c77d171f079f42d481ad465db…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/exceptions/__init__.py
M lib/galaxy/exceptions/error_codes.json
M lib/galaxy/tools/imp_exp/__init__.py
M lib/galaxy/tools/imp_exp/unpack_tar_gz_archive.py
Log Message:
-----------
Security fixes for history imports
Commit: 5da91bddcda3ad3a4942e752d9b4bb3e7872046c
https://github.com/galaxyproject/galaxy/commit/5da91bddcda3ad3a4942e752d9b4…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/objectstore/__init__.py
M lib/galaxy/objectstore/rods.py
M lib/galaxy/objectstore/s3.py
Log Message:
-----------
Security fixes for object store paths
Commit: cd8b96553f673145ee64a86d32960ba42643baed
https://github.com/galaxyproject/galaxy/commit/cd8b96553f673145ee64a86d3296…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/model/__init__.py
M lib/galaxy/webapps/galaxy/controllers/requests_admin.py
R templates/admin/requests/select_datasets_to_transfer.mako
M templates/webapps/galaxy/requests/common/common.mako
M templates/webapps/galaxy/requests/common/view_request_history.mako
M templates/webapps/galaxy/requests/common/view_sample_datasets.mako
Log Message:
-----------
Remove sample tracking manual external service transfer due to security concerns
Commit: e4a1d5727805168a9fd15aca1cdd21630ada2bbc
https://github.com/galaxyproject/galaxy/commit/e4a1d5727805168a9fd15aca1cdd…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
M lib/galaxy/webapps/tool_shed/controllers/repository.py
M lib/tool_shed/util/shed_util_common.py
M templates/admin/tool_shed_repository/common.mako
M templates/webapps/tool_shed/repository/common.mako
Log Message:
-----------
Security fixes for tool shed repository browsing
Commit: e845d649c672c51cc2336da0d880c9ff74ea6b5f
https://github.com/galaxyproject/galaxy/commit/e845d649c672c51cc2336da0d880…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/webapps/tool_shed/framework/middleware/hg.py
M lib/tool_shed/capsule/capsule_manager.py
M lib/tool_shed/util/commit_util.py
M lib/tool_shed/util/repository_content_util.py
Log Message:
-----------
Security fixes for tool shed hg push and capsule/tarball uploads
Commit: 8c4542b136ef1eab3231ba0df4aab53b91f504af
https://github.com/galaxyproject/galaxy/commit/8c4542b136ef1eab3231ba0df4aa…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_15.07' into release_15.10
Commit: 624e3837bd3d2dffdee7737f4e55d2e66316896a
https://github.com/galaxyproject/galaxy/commit/624e3837bd3d2dffdee7737f4e55…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_15.10' into release_16.01
Commit: c6b010af346d0fed5bba7e5610ea59210be5ceb7
https://github.com/galaxyproject/galaxy/commit/c6b010af346d0fed5bba7e5610ea…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M doc/source/releases/16.01.rst
M doc/source/releases/16.01_announce.rst
Log Message:
-----------
Add security announcement to v16.01 release notes.
Commit: 0122040fad865487e2377cee35360af49e37d0e8
https://github.com/galaxyproject/galaxy/commit/0122040fad865487e2377cee3536…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/version.py
Log Message:
-----------
Update version to 15.03.4
Commit: 3516e94e5cb0e971d8e10de018b72cf22296766e
https://github.com/galaxyproject/galaxy/commit/3516e94e5cb0e971d8e10de018b7…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_15.03' into release_15.05
Commit: c8e9845c5c57714042a75053d954b1c7f0962672
https://github.com/galaxyproject/galaxy/commit/c8e9845c5c57714042a75053d954…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/version.py
Log Message:
-----------
Update version to 15.05.2
Commit: 3d832aff0abe5a4ca48bfc80c84032f388bf7024
https://github.com/galaxyproject/galaxy/commit/3d832aff0abe5a4ca48bfc80c840…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_15.05' into release_15.07
Commit: 30608c177c625f4ce66f1376a66621687fe7711e
https://github.com/galaxyproject/galaxy/commit/30608c177c625f4ce66f1376a666…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/version.py
Log Message:
-----------
Update version to 15.07.1
Commit: 21cc5b2da540eba18445603146407c1779257bba
https://github.com/galaxyproject/galaxy/commit/21cc5b2da540eba1844560314640…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_15.07' into release_15.10
Commit: b5949bcbbfbc613b0ec72ce23e4da448c9316c49
https://github.com/galaxyproject/galaxy/commit/b5949bcbbfbc613b0ec72ce23e4d…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/version.py
Log Message:
-----------
Update version to 15.10.2
Commit: 70329f64ab8b6dcf9e9a6b6762783543b49c36eb
https://github.com/galaxyproject/galaxy/commit/70329f64ab8b6dcf9e9a6b676278…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Log Message:
-----------
Merge branch 'release_15.10' into release_16.01
Commit: 5677c2ee4fce70c9898ea5e6cae125b6147ae36a
https://github.com/galaxyproject/galaxy/commit/5677c2ee4fce70c9898ea5e6cae1…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2016-02-24 (Wed, 24 Feb 2016)
Changed paths:
M lib/galaxy/version.py
Log Message:
-----------
Update version to 16.01
Compare: https://github.com/galaxyproject/galaxy/compare/6bb43aa4aff8...5677c2ee4fce
1
0