@neysf/qiyu-web-sdk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,4 @@
1
+ # Browsers that we support
2
+ # https://github.com/browserslist/browserslist
3
+
4
+ last 2 versions
@@ -0,0 +1,5 @@
1
+ <component name="InspectionProjectProfileManager">
2
+ <settings>
3
+ <option name="PROJECT_PROFILE" />
4
+ </settings>
5
+ </component>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/qiyu-web-sdk.iml" filepath="$PROJECT_DIR$/.idea/qiyu-web-sdk.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="WEB_MODULE" version="4">
3
+ <component name="NewModuleRootManager">
4
+ <content url="file://$MODULE_DIR$">
5
+ <excludeFolder url="file://$MODULE_DIR$/temp" />
6
+ <excludeFolder url="file://$MODULE_DIR$/.tmp" />
7
+ <excludeFolder url="file://$MODULE_DIR$/tmp" />
8
+ </content>
9
+ <orderEntry type="inheritedJdk" />
10
+ <orderEntry type="sourceFolder" forTests="false" />
11
+ </component>
12
+ </module>
package/.idea/vcs.xml ADDED
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="$PROJECT_DIR$" vcs="Git" />
5
+ </component>
6
+ </project>
package/CHANGELOG.md ADDED
@@ -0,0 +1,6 @@
1
+ ## [1.0.0] (2022-08-04)
2
+ ### Features
3
+ * @neysf/qiyu-web-sdk init
4
+
5
+
6
+
package/README.md ADDED
@@ -0,0 +1,48 @@
1
+ # @neysf/qiyu-web-sdk
2
+
3
+ > qiyu-web-sdk
4
+
5
+ ## 一、功能简介
6
+
7
+ 七鱼访客端 sdk 支持 npm 包接入
8
+
9
+ > 注:sdk 依赖 Promise,如果浏览器不支持 Promise,需要接入方自行引入 Promise polyfill(import 'core-js/modules/es.promise';)
10
+
11
+
12
+ ## 二、使用示例
13
+
14
+ ### 2.1 安装
15
+
16
+ ```sh
17
+ $ npm install @neysf/qiyu-web-sdk --save
18
+ ```
19
+ ### 2.2 使用说明(示例)
20
+
21
+ ```js
22
+ import YSF from '@neysf/qiyu-web-sdk';
23
+
24
+ /**
25
+ * 第一个参数是 企业 appkey
26
+ * 第二个参数是 配置参数
27
+ */
28
+
29
+ YSF.init('f13509f5e8b8e1fbb388b3ddbee238c2', {
30
+ templateId: 123,
31
+ shuntId: 11,
32
+ // hidden: 1
33
+ }).then(ysf => {
34
+ ysf('open');
35
+ }).catch(error => {
36
+ console.log('sdk加载失败---', error);
37
+ });
38
+ ```
39
+
40
+ 参数说明请参考 [官网文档](https://qiyukf.com/docs/guide/web/2-接入说明.html#npm接入配置)
41
+
42
+ | 字段名 | 类型 | 说明 | 是否必须 | 默认值 |
43
+ |---|---|---| ---| ---|
44
+ | 第一个参数(appkey) | String | 企业 appkey | 是 | -- |
45
+ | 第二个参数(配置) | Object | sdk 入口配置 | 否 | -- |
46
+
47
+
48
+
@@ -0,0 +1,4 @@
1
+ export default YSF;
2
+ declare namespace YSF {
3
+ function init(appKey: any, objParams: any, env: any): Promise<any>;
4
+ }
package/dist/index.js ADDED
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var mapEnv = {
8
+ test: 'qytest.netease.com',
9
+ release: 'qiyukf.netease.com',
10
+ online: 'qiyukf.com'
11
+ };
12
+ var TIMEOUT = 30000;
13
+ var YSF = {};
14
+
15
+ YSF.init = function (appKey, objParams, env) {
16
+ // 日志上报
17
+ var img = new Image(); // ua信息在request headers中有带过去,不需要在链接重新传了~
18
+
19
+ img.src = "https://qiyukf.com/sdk/res/img/loading.gif?t=" + new Date().getTime() + "&k=" + appKey;
20
+ var promise = new Promise(function (resolve, reject) {
21
+ if (!appKey) {
22
+ reject(new Error('appKey必填'));
23
+ }
24
+
25
+ if (Object.prototype.toString.call(objParams) !== '[object Object]') {
26
+ reject(new Error('参数类型错误,第二个参数应该是object'));
27
+ }
28
+
29
+ var ret = [];
30
+
31
+ if (objParams) {
32
+ for (var item in objParams) {
33
+ console.log(item);
34
+ ret.push(item + "=" + objParams[item]);
35
+ }
36
+ }
37
+
38
+ var params = ret.length ? "?" + ret.join('&') : '';
39
+ var head = document.getElementsByTagName('head')[0];
40
+ var script = document.createElement('script');
41
+ script.type = 'text/javascript';
42
+ script.async = true;
43
+ script.timeout = TIMEOUT;
44
+ script.src = "https://" + mapEnv[env || 'online'] + "/script/" + appKey + ".js" + params;
45
+ var timeout;
46
+
47
+ function onScriptComplete(errType, event) {
48
+ script.onerror = null;
49
+ script.onload = null;
50
+ var errorMsg = '';
51
+ clearTimeout(timeout); // 加载成功
52
+
53
+ if (window.ysf) {
54
+ window.ysf('onready', function () {
55
+ // sdk执行完成
56
+ resolve(window.ysf);
57
+ });
58
+ } else {
59
+ // 处理加载失败报错
60
+ if (errType === 'loaderror' || errType === 'onload') {
61
+ // onerror的报错信息
62
+ console.log(event);
63
+ errorMsg = 'SDK_LOAD_ERROR';
64
+ } else {
65
+ // timeout error
66
+ errorMsg = 'SDK_LOADING_TIMEOUT';
67
+ } // 上报错误信息
68
+
69
+
70
+ var _img = new Image();
71
+
72
+ _img.src = "https://qiyukf.com/sdk/res/img/loading.gif?t=" + new Date().getTime() + "&k=" + appKey + "&error=" + errorMsg;
73
+ reject(new Error(errorMsg));
74
+ }
75
+ }
76
+
77
+ timeout = setTimeout(function () {
78
+ return onScriptComplete('timeout');
79
+ }, TIMEOUT);
80
+
81
+ script.onerror = function (event) {
82
+ return onScriptComplete('loaderror', event);
83
+ };
84
+
85
+ script.onload = function (event) {
86
+ return onScriptComplete('onload', event);
87
+ };
88
+
89
+ head.appendChild(script);
90
+ });
91
+ return promise;
92
+ };
93
+
94
+ var _default = YSF;
95
+ exports.default = _default;
package/es/index.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export default YSF;
2
+ declare namespace YSF {
3
+ function init(appKey: any, objParams: any, env: any): Promise<any>;
4
+ }
package/es/index.js ADDED
@@ -0,0 +1,88 @@
1
+ var mapEnv = {
2
+ test: 'qytest.netease.com',
3
+ release: 'qiyukf.netease.com',
4
+ online: 'qiyukf.com'
5
+ };
6
+ var TIMEOUT = 30000;
7
+ var YSF = {};
8
+
9
+ YSF.init = function (appKey, objParams, env) {
10
+ // 日志上报
11
+ var img = new Image(); // ua信息在request headers中有带过去,不需要在链接重新传了~
12
+
13
+ img.src = "https://qiyukf.com/sdk/res/img/loading.gif?t=" + new Date().getTime() + "&k=" + appKey;
14
+ var promise = new Promise(function (resolve, reject) {
15
+ if (!appKey) {
16
+ reject(new Error('appKey必填'));
17
+ }
18
+
19
+ if (Object.prototype.toString.call(objParams) !== '[object Object]') {
20
+ reject(new Error('参数类型错误,第二个参数应该是object'));
21
+ }
22
+
23
+ var ret = [];
24
+
25
+ if (objParams) {
26
+ for (var item in objParams) {
27
+ console.log(item);
28
+ ret.push(item + "=" + objParams[item]);
29
+ }
30
+ }
31
+
32
+ var params = ret.length ? "?" + ret.join('&') : '';
33
+ var head = document.getElementsByTagName('head')[0];
34
+ var script = document.createElement('script');
35
+ script.type = 'text/javascript';
36
+ script.async = true;
37
+ script.timeout = TIMEOUT;
38
+ script.src = "https://" + mapEnv[env || 'online'] + "/script/" + appKey + ".js" + params;
39
+ var timeout;
40
+
41
+ function onScriptComplete(errType, event) {
42
+ script.onerror = null;
43
+ script.onload = null;
44
+ var errorMsg = '';
45
+ clearTimeout(timeout); // 加载成功
46
+
47
+ if (window.ysf) {
48
+ window.ysf('onready', function () {
49
+ // sdk执行完成
50
+ resolve(window.ysf);
51
+ });
52
+ } else {
53
+ // 处理加载失败报错
54
+ if (errType === 'loaderror' || errType === 'onload') {
55
+ // onerror的报错信息
56
+ console.log(event);
57
+ errorMsg = 'SDK_LOAD_ERROR';
58
+ } else {
59
+ // timeout error
60
+ errorMsg = 'SDK_LOADING_TIMEOUT';
61
+ } // 上报错误信息
62
+
63
+
64
+ var _img = new Image();
65
+
66
+ _img.src = "https://qiyukf.com/sdk/res/img/loading.gif?t=" + new Date().getTime() + "&k=" + appKey + "&error=" + errorMsg;
67
+ reject(new Error(errorMsg));
68
+ }
69
+ }
70
+
71
+ timeout = setTimeout(function () {
72
+ return onScriptComplete('timeout');
73
+ }, TIMEOUT);
74
+
75
+ script.onerror = function (event) {
76
+ return onScriptComplete('loaderror', event);
77
+ };
78
+
79
+ script.onload = function (event) {
80
+ return onScriptComplete('onload', event);
81
+ };
82
+
83
+ head.appendChild(script);
84
+ });
85
+ return promise;
86
+ };
87
+
88
+ export default YSF;
package/package.json ADDED
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "@neysf/qiyu-web-sdk",
3
+ "version": "1.0.0",
4
+ "author": "ysfed",
5
+ "bugs": {
6
+ "url": "https://github.com/NSFI/qiyu-web-sdk/issues"
7
+ },
8
+ "description": "七鱼 Web SDK",
9
+ "engines": {
10
+ "node": ">= 6.2.0",
11
+ "npm": ">= 3.0.0"
12
+ },
13
+ "keywords": [
14
+ "qiyu-web-sdk",
15
+ "qiyu"
16
+ ],
17
+ "main": "dist/index.js",
18
+ "module": "es/index.js",
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "git+https://github.com/NSFI/qiyu-web-sdk.git"
22
+ },
23
+ "publishConfig": {
24
+ "registry": "https://registry.npmjs.org",
25
+ "access": "public"
26
+ },
27
+ "homepage": "https://github.com/NSFI/qiyu-web-sdk#readme",
28
+ "scripts": {
29
+ "test": "echo \"Error: no test specified\" && exit 1"
30
+ },
31
+ "license": "MIT"
32
+ }
@@ -0,0 +1,2 @@
1
+ !function(){var t={5318:function(t){t.exports=function(t){return t&&t.__esModule?t:{default:t}},t.exports.__esModule=!0,t.exports.default=t.exports},5671:function(t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var r={test:"qytest.netease.com",release:"qiyukf.netease.com",online:"qiyukf.com"},e={init:function(t,n,e){return(new Image).src="https://qiyukf.com/sdk/res/img/loading.gif?t="+(new Date).getTime()+"&k="+t,new Promise((function(o,i){t||i(new Error("appKey必填")),"[object Object]"!==Object.prototype.toString.call(n)&&i(new Error("参数类型错误,第二个参数应该是object"));var c=[];if(n)for(var u in n)console.log(u),c.push(u+"="+n[u]);var a,f=c.length?"?"+c.join("&"):"",s=document.getElementsByTagName("head")[0],p=document.createElement("script");function v(n,r){p.onerror=null,p.onload=null;var e="";clearTimeout(a),window.ysf?window.ysf("onready",(function(){o(window.ysf)})):("loaderror"===n||"onload"===n?(console.log(r),e="SDK_LOAD_ERROR"):e="SDK_LOADING_TIMEOUT",(new Image).src="https://qiyukf.com/sdk/res/img/loading.gif?t="+(new Date).getTime()+"&k="+t+"&error="+e,i(new Error(e)))}p.type="text/javascript",p.async=!0,p.timeout=3e4,p.src="https://"+r[e||"online"]+"/script/"+t+".js"+f,a=setTimeout((function(){return v("timeout")}),3e4),p.onerror=function(t){return v("loaderror",t)},p.onload=function(t){return v("onload",t)},s.appendChild(p)}))}};n.default=e},9662:function(t,n,r){var e=r(7854),o=r(614),i=r(6330),c=e.TypeError;t.exports=function(t){if(o(t))return t;throw c(i(t)+" is not a function")}},9483:function(t,n,r){var e=r(7854),o=r(4411),i=r(6330),c=e.TypeError;t.exports=function(t){if(o(t))return t;throw c(i(t)+" is not a constructor")}},6077:function(t,n,r){var e=r(7854),o=r(614),i=e.String,c=e.TypeError;t.exports=function(t){if("object"==typeof t||o(t))return t;throw c("Can't set "+i(t)+" as a prototype")}},5787:function(t,n,r){var e=r(7854),o=r(7976),i=e.TypeError;t.exports=function(t,n){if(o(n,t))return t;throw i("Incorrect invocation")}},9670:function(t,n,r){var e=r(7854),o=r(111),i=e.String,c=e.TypeError;t.exports=function(t){if(o(t))return t;throw c(i(t)+" is not an object")}},1318:function(t,n,r){var e=r(5656),o=r(1400),i=r(6244),c=function(t){return function(n,r,c){var u,a=e(n),f=i(a),s=o(c,f);if(t&&r!=r){for(;f>s;)if((u=a[s++])!=u)return!0}else for(;f>s;s++)if((t||s in a)&&a[s]===r)return t||s||0;return!t&&-1}};t.exports={includes:c(!0),indexOf:c(!1)}},206:function(t,n,r){var e=r(1702);t.exports=e([].slice)},7072:function(t,n,r){var e=r(5112)("iterator"),o=!1;try{var i=0,c={next:function(){return{done:!!i++}},return:function(){o=!0}};c[e]=function(){return this},Array.from(c,(function(){throw 2}))}catch(t){}t.exports=function(t,n){if(!n&&!o)return!1;var r=!1;try{var i={};i[e]=function(){return{next:function(){return{done:r=!0}}}},t(i)}catch(t){}return r}},4326:function(t,n,r){var e=r(1702),o=e({}.toString),i=e("".slice);t.exports=function(t){return i(o(t),8,-1)}},648:function(t,n,r){var e=r(7854),o=r(1694),i=r(614),c=r(4326),u=r(5112)("toStringTag"),a=e.Object,f="Arguments"==c(function(){return arguments}());t.exports=o?c:function(t){var n,r,e;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(r=function(t,n){try{return t[n]}catch(t){}}(n=a(t),u))?r:f?c(n):"Object"==(e=c(n))&&i(n.callee)?"Arguments":e}},9920:function(t,n,r){var e=r(2597),o=r(3887),i=r(1236),c=r(3070);t.exports=function(t,n,r){for(var u=o(n),a=c.f,f=i.f,s=0;s<u.length;s++){var p=u[s];e(t,p)||r&&e(r,p)||a(t,p,f(n,p))}}},8880:function(t,n,r){var e=r(9781),o=r(3070),i=r(9114);t.exports=e?function(t,n,r){return o.f(t,n,i(1,r))}:function(t,n,r){return t[n]=r,t}},9114:function(t){t.exports=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}}},9781:function(t,n,r){var e=r(7293);t.exports=!e((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},317:function(t,n,r){var e=r(7854),o=r(111),i=e.document,c=o(i)&&o(i.createElement);t.exports=function(t){return c?i.createElement(t):{}}},7871:function(t){t.exports="object"==typeof window},1528:function(t,n,r){var e=r(8113),o=r(7854);t.exports=/ipad|iphone|ipod/i.test(e)&&void 0!==o.Pebble},6833:function(t,n,r){var e=r(8113);t.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(e)},5268:function(t,n,r){var e=r(4326),o=r(7854);t.exports="process"==e(o.process)},1036:function(t,n,r){var e=r(8113);t.exports=/web0s(?!.*chrome)/i.test(e)},8113:function(t,n,r){var e=r(5005);t.exports=e("navigator","userAgent")||""},7392:function(t,n,r){var e,o,i=r(7854),c=r(8113),u=i.process,a=i.Deno,f=u&&u.versions||a&&a.version,s=f&&f.v8;s&&(o=(e=s.split("."))[0]>0&&e[0]<4?1:+(e[0]+e[1])),!o&&c&&(!(e=c.match(/Edge\/(\d+)/))||e[1]>=74)&&(e=c.match(/Chrome\/(\d+)/))&&(o=+e[1]),t.exports=o},748:function(t){t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:function(t,n,r){var e=r(7854),o=r(1236).f,i=r(8880),c=r(1320),u=r(3505),a=r(9920),f=r(4705);t.exports=function(t,n){var r,s,p,v,l,h=t.target,d=t.global,y=t.stat;if(r=d?e:y?e[h]||u(h,{}):(e[h]||{}).prototype)for(s in n){if(v=n[s],p=t.noTargetGet?(l=o(r,s))&&l.value:r[s],!f(d?s:h+(y?".":"#")+s,t.forced)&&void 0!==p){if(typeof v==typeof p)continue;a(v,p)}(t.sham||p&&p.sham)&&i(v,"sham",!0),c(r,s,v,t)}}},7293:function(t){t.exports=function(t){try{return!!t()}catch(t){return!0}}},2104:function(t){var n=Function.prototype,r=n.apply,e=n.bind,o=n.call;t.exports="object"==typeof Reflect&&Reflect.apply||(e?o.bind(r):function(){return o.apply(r,arguments)})},9974:function(t,n,r){var e=r(1702),o=r(9662),i=e(e.bind);t.exports=function(t,n){return o(t),void 0===n?t:i?i(t,n):function(){return t.apply(n,arguments)}}},6916:function(t){var n=Function.prototype.call;t.exports=n.bind?n.bind(n):function(){return n.apply(n,arguments)}},6530:function(t,n,r){var e=r(9781),o=r(2597),i=Function.prototype,c=e&&Object.getOwnPropertyDescriptor,u=o(i,"name"),a=u&&"something"===function(){}.name,f=u&&(!e||e&&c(i,"name").configurable);t.exports={EXISTS:u,PROPER:a,CONFIGURABLE:f}},1702:function(t){var n=Function.prototype,r=n.bind,e=n.call,o=r&&r.bind(e);t.exports=r?function(t){return t&&o(e,t)}:function(t){return t&&function(){return e.apply(t,arguments)}}},5005:function(t,n,r){var e=r(7854),o=r(614),i=function(t){return o(t)?t:void 0};t.exports=function(t,n){return arguments.length<2?i(e[t]):e[t]&&e[t][n]}},1246:function(t,n,r){var e=r(648),o=r(8173),i=r(7497),c=r(5112)("iterator");t.exports=function(t){if(null!=t)return o(t,c)||o(t,"@@iterator")||i[e(t)]}},8554:function(t,n,r){var e=r(7854),o=r(6916),i=r(9662),c=r(9670),u=r(6330),a=r(1246),f=e.TypeError;t.exports=function(t,n){var r=arguments.length<2?a(t):n;if(i(r))return c(o(r,t));throw f(u(t)+" is not iterable")}},8173:function(t,n,r){var e=r(9662);t.exports=function(t,n){var r=t[n];return null==r?void 0:e(r)}},7854:function(t,n,r){var e=function(t){return t&&t.Math==Math&&t};t.exports=e("object"==typeof globalThis&&globalThis)||e("object"==typeof window&&window)||e("object"==typeof self&&self)||e("object"==typeof r.g&&r.g)||function(){return this}()||Function("return this")()},2597:function(t,n,r){var e=r(1702),o=r(7908),i=e({}.hasOwnProperty);t.exports=Object.hasOwn||function(t,n){return i(o(t),n)}},3501:function(t){t.exports={}},842:function(t,n,r){var e=r(7854);t.exports=function(t,n){var r=e.console;r&&r.error&&(1==arguments.length?r.error(t):r.error(t,n))}},490:function(t,n,r){var e=r(5005);t.exports=e("document","documentElement")},4664:function(t,n,r){var e=r(9781),o=r(7293),i=r(317);t.exports=!e&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},8361:function(t,n,r){var e=r(7854),o=r(1702),i=r(7293),c=r(4326),u=e.Object,a=o("".split);t.exports=i((function(){return!u("z").propertyIsEnumerable(0)}))?function(t){return"String"==c(t)?a(t,""):u(t)}:u},2788:function(t,n,r){var e=r(1702),o=r(614),i=r(5465),c=e(Function.toString);o(i.inspectSource)||(i.inspectSource=function(t){return c(t)}),t.exports=i.inspectSource},9909:function(t,n,r){var e,o,i,c=r(8536),u=r(7854),a=r(1702),f=r(111),s=r(8880),p=r(2597),v=r(5465),l=r(6200),h=r(3501),d="Object already initialized",y=u.TypeError,m=u.WeakMap;if(c||v.state){var x=v.state||(v.state=new m),g=a(x.get),b=a(x.has),w=a(x.set);e=function(t,n){if(b(x,t))throw new y(d);return n.facade=t,w(x,t,n),n},o=function(t){return g(x,t)||{}},i=function(t){return b(x,t)}}else{var j=l("state");h[j]=!0,e=function(t,n){if(p(t,j))throw new y(d);return n.facade=t,s(t,j,n),n},o=function(t){return p(t,j)?t[j]:{}},i=function(t){return p(t,j)}}t.exports={set:e,get:o,has:i,enforce:function(t){return i(t)?o(t):e(t,{})},getterFor:function(t){return function(n){var r;if(!f(n)||(r=o(n)).type!==t)throw y("Incompatible receiver, "+t+" required");return r}}}},7659:function(t,n,r){var e=r(5112),o=r(7497),i=e("iterator"),c=Array.prototype;t.exports=function(t){return void 0!==t&&(o.Array===t||c[i]===t)}},614:function(t){t.exports=function(t){return"function"==typeof t}},4411:function(t,n,r){var e=r(1702),o=r(7293),i=r(614),c=r(648),u=r(5005),a=r(2788),f=function(){},s=[],p=u("Reflect","construct"),v=/^\s*(?:class|function)\b/,l=e(v.exec),h=!v.exec(f),d=function(t){if(!i(t))return!1;try{return p(f,s,t),!0}catch(t){return!1}},y=function(t){if(!i(t))return!1;switch(c(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return h||!!l(v,a(t))}catch(t){return!0}};y.sham=!0,t.exports=!p||o((function(){var t;return d(d.call)||!d(Object)||!d((function(){t=!0}))||t}))?y:d},4705:function(t,n,r){var e=r(7293),o=r(614),i=/#|\.prototype\./,c=function(t,n){var r=a[u(t)];return r==s||r!=f&&(o(n)?e(n):!!n)},u=c.normalize=function(t){return String(t).replace(i,".").toLowerCase()},a=c.data={},f=c.NATIVE="N",s=c.POLYFILL="P";t.exports=c},111:function(t,n,r){var e=r(614);t.exports=function(t){return"object"==typeof t?null!==t:e(t)}},1913:function(t){t.exports=!1},2190:function(t,n,r){var e=r(7854),o=r(5005),i=r(614),c=r(7976),u=r(3307),a=e.Object;t.exports=u?function(t){return"symbol"==typeof t}:function(t){var n=o("Symbol");return i(n)&&c(n.prototype,a(t))}},408:function(t,n,r){var e=r(7854),o=r(9974),i=r(6916),c=r(9670),u=r(6330),a=r(7659),f=r(6244),s=r(7976),p=r(8554),v=r(1246),l=r(9212),h=e.TypeError,d=function(t,n){this.stopped=t,this.result=n},y=d.prototype;t.exports=function(t,n,r){var e,m,x,g,b,w,j,O=r&&r.that,S=!(!r||!r.AS_ENTRIES),E=!(!r||!r.IS_ITERATOR),T=!(!r||!r.INTERRUPTED),P=o(n,O),_=function(t){return e&&l(e,"normal",t),new d(!0,t)},I=function(t){return S?(c(t),T?P(t[0],t[1],_):P(t[0],t[1])):T?P(t,_):P(t)};if(E)e=t;else{if(!(m=v(t)))throw h(u(t)+" is not iterable");if(a(m)){for(x=0,g=f(t);g>x;x++)if((b=I(t[x]))&&s(y,b))return b;return new d(!1)}e=p(t,m)}for(w=e.next;!(j=i(w,e)).done;){try{b=I(j.value)}catch(t){l(e,"throw",t)}if("object"==typeof b&&b&&s(y,b))return b}return new d(!1)}},9212:function(t,n,r){var e=r(6916),o=r(9670),i=r(8173);t.exports=function(t,n,r){var c,u;o(t);try{if(!(c=i(t,"return"))){if("throw"===n)throw r;return r}c=e(c,t)}catch(t){u=!0,c=t}if("throw"===n)throw r;if(u)throw c;return o(c),r}},7497:function(t){t.exports={}},6244:function(t,n,r){var e=r(7466);t.exports=function(t){return e(t.length)}},5948:function(t,n,r){var e,o,i,c,u,a,f,s,p=r(7854),v=r(9974),l=r(1236).f,h=r(261).set,d=r(6833),y=r(1528),m=r(1036),x=r(5268),g=p.MutationObserver||p.WebKitMutationObserver,b=p.document,w=p.process,j=p.Promise,O=l(p,"queueMicrotask"),S=O&&O.value;S||(e=function(){var t,n;for(x&&(t=w.domain)&&t.exit();o;){n=o.fn,o=o.next;try{n()}catch(t){throw o?c():i=void 0,t}}i=void 0,t&&t.enter()},d||x||m||!g||!b?!y&&j&&j.resolve?((f=j.resolve(void 0)).constructor=j,s=v(f.then,f),c=function(){s(e)}):x?c=function(){w.nextTick(e)}:(h=v(h,p),c=function(){h(e)}):(u=!0,a=b.createTextNode(""),new g(e).observe(a,{characterData:!0}),c=function(){a.data=u=!u})),t.exports=S||function(t){var n={fn:t,next:void 0};i&&(i.next=n),o||(o=n,c()),i=n}},3366:function(t,n,r){var e=r(7854);t.exports=e.Promise},133:function(t,n,r){var e=r(7392),o=r(7293);t.exports=!!Object.getOwnPropertySymbols&&!o((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&e&&e<41}))},8536:function(t,n,r){var e=r(7854),o=r(614),i=r(2788),c=e.WeakMap;t.exports=o(c)&&/native code/.test(i(c))},8523:function(t,n,r){"use strict";var e=r(9662),o=function(t){var n,r;this.promise=new t((function(t,e){if(void 0!==n||void 0!==r)throw TypeError("Bad Promise constructor");n=t,r=e})),this.resolve=e(n),this.reject=e(r)};t.exports.f=function(t){return new o(t)}},3070:function(t,n,r){var e=r(7854),o=r(9781),i=r(4664),c=r(9670),u=r(4948),a=e.TypeError,f=Object.defineProperty;n.f=o?f:function(t,n,r){if(c(t),n=u(n),c(r),i)try{return f(t,n,r)}catch(t){}if("get"in r||"set"in r)throw a("Accessors not supported");return"value"in r&&(t[n]=r.value),t}},1236:function(t,n,r){var e=r(9781),o=r(6916),i=r(5296),c=r(9114),u=r(5656),a=r(4948),f=r(2597),s=r(4664),p=Object.getOwnPropertyDescriptor;n.f=e?p:function(t,n){if(t=u(t),n=a(n),s)try{return p(t,n)}catch(t){}if(f(t,n))return c(!o(i.f,t,n),t[n])}},8006:function(t,n,r){var e=r(6324),o=r(748).concat("length","prototype");n.f=Object.getOwnPropertyNames||function(t){return e(t,o)}},5181:function(t,n){n.f=Object.getOwnPropertySymbols},7976:function(t,n,r){var e=r(1702);t.exports=e({}.isPrototypeOf)},6324:function(t,n,r){var e=r(1702),o=r(2597),i=r(5656),c=r(1318).indexOf,u=r(3501),a=e([].push);t.exports=function(t,n){var r,e=i(t),f=0,s=[];for(r in e)!o(u,r)&&o(e,r)&&a(s,r);for(;n.length>f;)o(e,r=n[f++])&&(~c(s,r)||a(s,r));return s}},5296:function(t,n){"use strict";var r={}.propertyIsEnumerable,e=Object.getOwnPropertyDescriptor,o=e&&!r.call({1:2},1);n.f=o?function(t){var n=e(this,t);return!!n&&n.enumerable}:r},7674:function(t,n,r){var e=r(1702),o=r(9670),i=r(6077);t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var t,n=!1,r={};try{(t=e(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(r,[]),n=r instanceof Array}catch(t){}return function(r,e){return o(r),i(e),n?t(r,e):r.__proto__=e,r}}():void 0)},2140:function(t,n,r){var e=r(7854),o=r(6916),i=r(614),c=r(111),u=e.TypeError;t.exports=function(t,n){var r,e;if("string"===n&&i(r=t.toString)&&!c(e=o(r,t)))return e;if(i(r=t.valueOf)&&!c(e=o(r,t)))return e;if("string"!==n&&i(r=t.toString)&&!c(e=o(r,t)))return e;throw u("Can't convert object to primitive value")}},3887:function(t,n,r){var e=r(5005),o=r(1702),i=r(8006),c=r(5181),u=r(9670),a=o([].concat);t.exports=e("Reflect","ownKeys")||function(t){var n=i.f(u(t)),r=c.f;return r?a(n,r(t)):n}},2534:function(t){t.exports=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}}},9478:function(t,n,r){var e=r(9670),o=r(111),i=r(8523);t.exports=function(t,n){if(e(t),o(n)&&n.constructor===t)return n;var r=i.f(t);return(0,r.resolve)(n),r.promise}},8572:function(t){var n=function(){this.head=null,this.tail=null};n.prototype={add:function(t){var n={item:t,next:null};this.head?this.tail.next=n:this.head=n,this.tail=n},get:function(){var t=this.head;if(t)return this.head=t.next,this.tail===t&&(this.tail=null),t.item}},t.exports=n},2248:function(t,n,r){var e=r(1320);t.exports=function(t,n,r){for(var o in n)e(t,o,n[o],r);return t}},1320:function(t,n,r){var e=r(7854),o=r(614),i=r(2597),c=r(8880),u=r(3505),a=r(2788),f=r(9909),s=r(6530).CONFIGURABLE,p=f.get,v=f.enforce,l=String(String).split("String");(t.exports=function(t,n,r,a){var f,p=!!a&&!!a.unsafe,h=!!a&&!!a.enumerable,d=!!a&&!!a.noTargetGet,y=a&&void 0!==a.name?a.name:n;o(r)&&("Symbol("===String(y).slice(0,7)&&(y="["+String(y).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),(!i(r,"name")||s&&r.name!==y)&&c(r,"name",y),(f=v(r)).source||(f.source=l.join("string"==typeof y?y:""))),t!==e?(p?!d&&t[n]&&(h=!0):delete t[n],h?t[n]=r:c(t,n,r)):h?t[n]=r:u(n,r)})(Function.prototype,"toString",(function(){return o(this)&&p(this).source||a(this)}))},4488:function(t,n,r){var e=r(7854).TypeError;t.exports=function(t){if(null==t)throw e("Can't call method on "+t);return t}},3505:function(t,n,r){var e=r(7854),o=Object.defineProperty;t.exports=function(t,n){try{o(e,t,{value:n,configurable:!0,writable:!0})}catch(r){e[t]=n}return n}},6340:function(t,n,r){"use strict";var e=r(5005),o=r(3070),i=r(5112),c=r(9781),u=i("species");t.exports=function(t){var n=e(t),r=o.f;c&&n&&!n[u]&&r(n,u,{configurable:!0,get:function(){return this}})}},8003:function(t,n,r){var e=r(3070).f,o=r(2597),i=r(5112)("toStringTag");t.exports=function(t,n,r){t&&!r&&(t=t.prototype),t&&!o(t,i)&&e(t,i,{configurable:!0,value:n})}},6200:function(t,n,r){var e=r(2309),o=r(9711),i=e("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},5465:function(t,n,r){var e=r(7854),o=r(3505),i="__core-js_shared__",c=e[i]||o(i,{});t.exports=c},2309:function(t,n,r){var e=r(1913),o=r(5465);(t.exports=function(t,n){return o[t]||(o[t]=void 0!==n?n:{})})("versions",[]).push({version:"3.20.1",mode:e?"pure":"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"})},6707:function(t,n,r){var e=r(9670),o=r(9483),i=r(5112)("species");t.exports=function(t,n){var r,c=e(t).constructor;return void 0===c||null==(r=e(c)[i])?n:o(r)}},261:function(t,n,r){var e,o,i,c,u=r(7854),a=r(2104),f=r(9974),s=r(614),p=r(2597),v=r(7293),l=r(490),h=r(206),d=r(317),y=r(6833),m=r(5268),x=u.setImmediate,g=u.clearImmediate,b=u.process,w=u.Dispatch,j=u.Function,O=u.MessageChannel,S=u.String,E=0,T={};try{e=u.location}catch(t){}var P=function(t){if(p(T,t)){var n=T[t];delete T[t],n()}},_=function(t){return function(){P(t)}},I=function(t){P(t.data)},k=function(t){u.postMessage(S(t),e.protocol+"//"+e.host)};x&&g||(x=function(t){var n=h(arguments,1);return T[++E]=function(){a(s(t)?t:j(t),void 0,n)},o(E),E},g=function(t){delete T[t]},m?o=function(t){b.nextTick(_(t))}:w&&w.now?o=function(t){w.now(_(t))}:O&&!y?(c=(i=new O).port2,i.port1.onmessage=I,o=f(c.postMessage,c)):u.addEventListener&&s(u.postMessage)&&!u.importScripts&&e&&"file:"!==e.protocol&&!v(k)?(o=k,u.addEventListener("message",I,!1)):o="onreadystatechange"in d("script")?function(t){l.appendChild(d("script")).onreadystatechange=function(){l.removeChild(this),P(t)}}:function(t){setTimeout(_(t),0)}),t.exports={set:x,clear:g}},1400:function(t,n,r){var e=r(9303),o=Math.max,i=Math.min;t.exports=function(t,n){var r=e(t);return r<0?o(r+n,0):i(r,n)}},5656:function(t,n,r){var e=r(8361),o=r(4488);t.exports=function(t){return e(o(t))}},9303:function(t){var n=Math.ceil,r=Math.floor;t.exports=function(t){var e=+t;return e!=e||0===e?0:(e>0?r:n)(e)}},7466:function(t,n,r){var e=r(9303),o=Math.min;t.exports=function(t){return t>0?o(e(t),9007199254740991):0}},7908:function(t,n,r){var e=r(7854),o=r(4488),i=e.Object;t.exports=function(t){return i(o(t))}},7593:function(t,n,r){var e=r(7854),o=r(6916),i=r(111),c=r(2190),u=r(8173),a=r(2140),f=r(5112),s=e.TypeError,p=f("toPrimitive");t.exports=function(t,n){if(!i(t)||c(t))return t;var r,e=u(t,p);if(e){if(void 0===n&&(n="default"),r=o(e,t,n),!i(r)||c(r))return r;throw s("Can't convert object to primitive value")}return void 0===n&&(n="number"),a(t,n)}},4948:function(t,n,r){var e=r(7593),o=r(2190);t.exports=function(t){var n=e(t,"string");return o(n)?n:n+""}},1694:function(t,n,r){var e={};e[r(5112)("toStringTag")]="z",t.exports="[object z]"===String(e)},6330:function(t,n,r){var e=r(7854).String;t.exports=function(t){try{return e(t)}catch(t){return"Object"}}},9711:function(t,n,r){var e=r(1702),o=0,i=Math.random(),c=e(1..toString);t.exports=function(t){return"Symbol("+(void 0===t?"":t)+")_"+c(++o+i,36)}},3307:function(t,n,r){var e=r(133);t.exports=e&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},5112:function(t,n,r){var e=r(7854),o=r(2309),i=r(2597),c=r(9711),u=r(133),a=r(3307),f=o("wks"),s=e.Symbol,p=s&&s.for,v=a?s:s&&s.withoutSetter||c;t.exports=function(t){if(!i(f,t)||!u&&"string"!=typeof f[t]){var n="Symbol."+t;u&&i(s,t)?f[t]=s[t]:f[t]=a&&p?p(n):v(n)}return f[t]}},8674:function(t,n,r){"use strict";var e,o,i,c,u=r(2109),a=r(1913),f=r(7854),s=r(5005),p=r(6916),v=r(3366),l=r(1320),h=r(2248),d=r(7674),y=r(8003),m=r(6340),x=r(9662),g=r(614),b=r(111),w=r(5787),j=r(2788),O=r(408),S=r(7072),E=r(6707),T=r(261).set,P=r(5948),_=r(9478),I=r(842),k=r(8523),M=r(2534),F=r(8572),R=r(9909),A=r(4705),D=r(5112),C=r(7871),L=r(5268),N=r(7392),q=D("species"),G="Promise",z=R.getterFor(G),U=R.set,K=R.getterFor(G),B=v&&v.prototype,W=v,H=B,V=f.TypeError,X=f.document,Y=f.process,$=k.f,J=$,Q=!!(X&&X.createEvent&&f.dispatchEvent),Z=g(f.PromiseRejectionEvent),tt="unhandledrejection",nt=!1,rt=A(G,(function(){var t=j(W),n=t!==String(W);if(!n&&66===N)return!0;if(a&&!H.finally)return!0;if(N>=51&&/native code/.test(t))return!1;var r=new W((function(t){t(1)})),e=function(t){t((function(){}),(function(){}))};return(r.constructor={})[q]=e,!(nt=r.then((function(){}))instanceof e)||!n&&C&&!Z})),et=rt||!S((function(t){W.all(t).catch((function(){}))})),ot=function(t){var n;return!(!b(t)||!g(n=t.then))&&n},it=function(t,n){var r,e,o,i=n.value,c=1==n.state,u=c?t.ok:t.fail,a=t.resolve,f=t.reject,s=t.domain;try{u?(c||(2===n.rejection&&st(n),n.rejection=1),!0===u?r=i:(s&&s.enter(),r=u(i),s&&(s.exit(),o=!0)),r===t.promise?f(V("Promise-chain cycle")):(e=ot(r))?p(e,r,a,f):a(r)):f(i)}catch(t){s&&!o&&s.exit(),f(t)}},ct=function(t,n){t.notified||(t.notified=!0,P((function(){for(var r,e=t.reactions;r=e.get();)it(r,t);t.notified=!1,n&&!t.rejection&&at(t)})))},ut=function(t,n,r){var e,o;Q?((e=X.createEvent("Event")).promise=n,e.reason=r,e.initEvent(t,!1,!0),f.dispatchEvent(e)):e={promise:n,reason:r},!Z&&(o=f["on"+t])?o(e):t===tt&&I("Unhandled promise rejection",r)},at=function(t){p(T,f,(function(){var n,r=t.facade,e=t.value;if(ft(t)&&(n=M((function(){L?Y.emit("unhandledRejection",e,r):ut(tt,r,e)})),t.rejection=L||ft(t)?2:1,n.error))throw n.value}))},ft=function(t){return 1!==t.rejection&&!t.parent},st=function(t){p(T,f,(function(){var n=t.facade;L?Y.emit("rejectionHandled",n):ut("rejectionhandled",n,t.value)}))},pt=function(t,n,r){return function(e){t(n,e,r)}},vt=function(t,n,r){t.done||(t.done=!0,r&&(t=r),t.value=n,t.state=2,ct(t,!0))},lt=function(t,n,r){if(!t.done){t.done=!0,r&&(t=r);try{if(t.facade===n)throw V("Promise can't be resolved itself");var e=ot(n);e?P((function(){var r={done:!1};try{p(e,n,pt(lt,r,t),pt(vt,r,t))}catch(n){vt(r,n,t)}})):(t.value=n,t.state=1,ct(t,!1))}catch(n){vt({done:!1},n,t)}}};if(rt&&(H=(W=function(t){w(this,H),x(t),p(e,this);var n=z(this);try{t(pt(lt,n),pt(vt,n))}catch(t){vt(n,t)}}).prototype,(e=function(t){U(this,{type:G,done:!1,notified:!1,parent:!1,reactions:new F,rejection:!1,state:0,value:void 0})}).prototype=h(H,{then:function(t,n){var r=K(this),e=$(E(this,W));return r.parent=!0,e.ok=!g(t)||t,e.fail=g(n)&&n,e.domain=L?Y.domain:void 0,0==r.state?r.reactions.add(e):P((function(){it(e,r)})),e.promise},catch:function(t){return this.then(void 0,t)}}),o=function(){var t=new e,n=z(t);this.promise=t,this.resolve=pt(lt,n),this.reject=pt(vt,n)},k.f=$=function(t){return t===W||t===i?new o(t):J(t)},!a&&g(v)&&B!==Object.prototype)){c=B.then,nt||(l(B,"then",(function(t,n){var r=this;return new W((function(t,n){p(c,r,t,n)})).then(t,n)}),{unsafe:!0}),l(B,"catch",H.catch,{unsafe:!0}));try{delete B.constructor}catch(t){}d&&d(B,H)}u({global:!0,wrap:!0,forced:rt},{Promise:W}),y(W,G,!1,!0),m(G),i=s(G),u({target:G,stat:!0,forced:rt},{reject:function(t){var n=$(this);return p(n.reject,void 0,t),n.promise}}),u({target:G,stat:!0,forced:a||rt},{resolve:function(t){return _(a&&this===i?W:this,t)}}),u({target:G,stat:!0,forced:et},{all:function(t){var n=this,r=$(n),e=r.resolve,o=r.reject,i=M((function(){var r=x(n.resolve),i=[],c=0,u=1;O(t,(function(t){var a=c++,f=!1;u++,p(r,n,t).then((function(t){f||(f=!0,i[a]=t,--u||e(i))}),o)})),--u||e(i)}));return i.error&&o(i.value),r.promise},race:function(t){var n=this,r=$(n),e=r.reject,o=M((function(){var o=x(n.resolve);O(t,(function(t){p(o,n,t).then(r.resolve,e)}))}));return o.error&&e(o.value),r.promise}})}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var i=n[e]={exports:{}};return t[e](i,i.exports,r),i.exports}r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),function(){"use strict";var t=r(5318)(r(5671));r(8674),t.default.init("f13509f5e8b8e1fbb388b3ddbee238c2",{templateId:123,shuntId:11},"test").then((function(t){t("open")})).catch((function(t){console.log("sdk加载失败---",t)}))}()}();
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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eXNmL3Nkay8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2ludGVyb3BSZXF1aXJlRGVmYXVsdC5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWNhbGxhYmxlLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2EtY29uc3RydWN0b3IuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYS1wb3NzaWJsZS1wcm90b3R5cGUuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4taW5zdGFuY2UuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4tb2JqZWN0LmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNsaWNlLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NoZWNrLWNvcnJlY3RuZXNzLW9mLWl0ZXJhdGlvbi5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLXJhdy5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcy5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLWlzLWJyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLWlzLWlvcy1wZWJibGUuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLWlzLWlvcy5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtaXMtbm9kZS5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbmdpbmUtaXMtd2Vib3Mtd2Via2l0LmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50LmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VudW0tYnVnLWtleXMuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWFwcGx5LmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dC5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1jYWxsLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1idWlsdC1pbi5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtbWV0aG9kLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5LmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hpZGRlbi1rZXlzLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hvc3QtcmVwb3J0LWVycm9ycy5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9odG1sLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0LmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWFycmF5LWl0ZXJhdG9yLW1ldGhvZC5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jYWxsYWJsZS5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1mb3JjZWQuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtb2JqZWN0LmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXB1cmUuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtc3ltYm9sLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdGUuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3ItY2xvc2UuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3JzLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL21pY3JvdGFzay5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uYXRpdmUtcHJvbWlzZS1jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uYXRpdmUtc3ltYm9sLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25hdGl2ZS13ZWFrLW1hcC5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5LmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1pcy1wcm90b3R5cGUtb2YuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb3JkaW5hcnktdG8tcHJpbWl0aXZlLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL293bi1rZXlzLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3BlcmZvcm0uanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcHJvbWlzZS1yZXNvbHZlLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3F1ZXVlLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZGVmaW5lLWFsbC5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWRlZmluZS5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWdsb2JhbC5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtc3BlY2llcy5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZy5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC1zdG9yZS5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3BlY2llcy1jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90YXNrLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4LmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0LmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWludGVnZXItb3ItaW5maW5pdHkuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tbGVuZ3RoLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLW9iamVjdC5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vQHlzZi9zZGsvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJvcGVydHkta2V5LmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLXN0cmluZy10YWctc3VwcG9ydC5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90cnktdG8tc3RyaW5nLmpzIiwid2VicGFjazovL0B5c2Yvc2RrLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VpZC5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZC5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZS5qcyIsIndlYnBhY2s6Ly9AeXNmL3Nkay93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9AeXNmL3Nkay93ZWJwYWNrL3J1bnRpbWUvZ2xvYmFsIiwid2VicGFjazovL0B5c2Yvc2RrLy4vZGVtby9hcHAuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHtcbiAgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHtcbiAgICBcImRlZmF1bHRcIjogb2JqXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImNvbnN0IG1hcEVudiA9IHtcbiAgICB0ZXN0OiAncXl0ZXN0Lm5ldGVhc2UuY29tJyxcbiAgICByZWxlYXNlOiAncWl5dWtmLm5ldGVhc2UuY29tJyxcbiAgICBvbmxpbmU6ICdxaXl1a2YuY29tJ1xufTtcbmNvbnN0IFRJTUVPVVQgPSAzMDAwMDtcbmNvbnN0IFlTRiA9IHt9O1xuWVNGLmluaXQgPSAoYXBwS2V5LCBvYmpQYXJhbXMsIGVudikgPT4ge1xuICAgIC8vIOaXpeW/l+S4iuaKpVxuICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xuICAgIC8vIHVh5L+h5oGv5ZyocmVxdWVzdCBoZWFkZXJz5Lit5pyJ5bim6L+H5Y6777yM5LiN6ZyA6KaB5Zyo6ZO+5o6l6YeN5paw5Lyg5LqG772eXG4gICAgaW1nLnNyYyA9IGBodHRwczovL3FpeXVrZi5jb20vc2RrL3Jlcy9pbWcvbG9hZGluZy5naWY/dD0ke25ldyBEYXRlKCkuZ2V0VGltZSgpfSZrPSR7YXBwS2V5fWA7XG4gICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgaWYgKCFhcHBLZXkpIHtcbiAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ2FwcEtleeW/heWhqycpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9ialBhcmFtcykgIT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XG4gICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCflj4LmlbDnsbvlnovplJnor68s56ys5LqM5Liq5Y+C5pWw5bqU6K+l5pivb2JqZWN0JykpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJldCA9IFtdO1xuICAgICAgICBpZiAob2JqUGFyYW1zKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gaW4gb2JqUGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coaXRlbSk7XG4gICAgICAgICAgICAgICAgcmV0LnB1c2goYCR7aXRlbX09JHtvYmpQYXJhbXNbaXRlbV19YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFyYW1zID0gcmV0Lmxlbmd0aCA/IGA/JHtyZXQuam9pbignJicpfWAgOiAnJztcbiAgICAgICAgY29uc3QgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF07XG4gICAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICBzY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnO1xuICAgICAgICBzY3JpcHQuYXN5bmMgPSB0cnVlO1xuICAgICAgICBzY3JpcHQudGltZW91dCA9IFRJTUVPVVQ7XG4gICAgICAgIHNjcmlwdC5zcmMgPSBgaHR0cHM6Ly8ke21hcEVudltlbnYgfHwgJ29ubGluZSddfS9zY3JpcHQvJHthcHBLZXl9LmpzJHtwYXJhbXN9YDtcbiAgICAgICAgbGV0IHRpbWVvdXQ7XG4gICAgICAgIGZ1bmN0aW9uIG9uU2NyaXB0Q29tcGxldGUoZXJyVHlwZSwgZXZlbnQpIHtcbiAgICAgICAgICAgIHNjcmlwdC5vbmVycm9yID0gbnVsbDtcbiAgICAgICAgICAgIHNjcmlwdC5vbmxvYWQgPSBudWxsO1xuICAgICAgICAgICAgbGV0IGVycm9yTXNnID0gJyc7XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgICAvLyDliqDovb3miJDlip9cbiAgICAgICAgICAgIGlmICh3aW5kb3cueXNmKSB7XG4gICAgICAgICAgICAgICAgd2luZG93LnlzZignb25yZWFkeScsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh3aW5kb3cueXNmKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgeyAvLyDlpITnkIbliqDovb3lpLHotKXmiqXplJlcbiAgICAgICAgICAgICAgICBpZiAoZXJyVHlwZSA9PT0gJ2xvYWRlcnJvcicgfHwgZXJyVHlwZSA9PT0gJ29ubG9hZCcpIHsgLy8gb25lcnJvcueahOaKpemUmeS/oeaBr1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhldmVudCk7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yTXNnID0gJ1NES19MT0FEX0VSUk9SJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7IC8vIHRpbWVvdXQgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JNc2cgPSAnU0RLX0xPQURJTkdfVElNRU9VVCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIOS4iuaKpemUmeivr+S/oeaBr1xuICAgICAgICAgICAgICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgICAgICAgICAgIGltZy5zcmMgPSBgaHR0cHM6Ly9xaXl1a2YuY29tL3Nkay9yZXMvaW1nL2xvYWRpbmcuZ2lmP3Q9JHtuZXcgRGF0ZSgpLmdldFRpbWUoKX0maz0ke2FwcEtleX0mZXJyb3I9JHtlcnJvck1zZ31gO1xuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoZXJyb3JNc2cpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiBvblNjcmlwdENvbXBsZXRlKCd0aW1lb3V0JyksIFRJTUVPVVQpO1xuICAgICAgICBzY3JpcHQub25lcnJvciA9IGV2ZW50ID0+IG9uU2NyaXB0Q29tcGxldGUoJ2xvYWRlcnJvcicsIGV2ZW50KTtcbiAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IGV2ZW50ID0+IG9uU2NyaXB0Q29tcGxldGUoJ29ubG9hZCcsIGV2ZW50KTtcbiAgICAgICAgaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgIH0pO1xuICAgIHJldHVybiBwcm9taXNlO1xufTtcbmV4cG9ydCBkZWZhdWx0IFlTRjtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIHRyeVRvU3RyaW5nID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RyeS10by1zdHJpbmcnKTtcblxudmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG5cbi8vIGBBc3NlcnQ6IElzQ2FsbGFibGUoYXJndW1lbnQpIGlzIHRydWVgXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICBpZiAoaXNDYWxsYWJsZShhcmd1bWVudCkpIHJldHVybiBhcmd1bWVudDtcbiAgdGhyb3cgVHlwZUVycm9yKHRyeVRvU3RyaW5nKGFyZ3VtZW50KSArICcgaXMgbm90IGEgZnVuY3Rpb24nKTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY29uc3RydWN0b3InKTtcbnZhciB0cnlUb1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90cnktdG8tc3RyaW5nJyk7XG5cbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xuXG4vLyBgQXNzZXJ0OiBJc0NvbnN0cnVjdG9yKGFyZ3VtZW50KSBpcyB0cnVlYFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKGlzQ29uc3RydWN0b3IoYXJndW1lbnQpKSByZXR1cm4gYXJndW1lbnQ7XG4gIHRocm93IFR5cGVFcnJvcih0cnlUb1N0cmluZyhhcmd1bWVudCkgKyAnIGlzIG5vdCBhIGNvbnN0cnVjdG9yJyk7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbnZhciBTdHJpbmcgPSBnbG9iYWwuU3RyaW5nO1xudmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIGlmICh0eXBlb2YgYXJndW1lbnQgPT0gJ29iamVjdCcgfHwgaXNDYWxsYWJsZShhcmd1bWVudCkpIHJldHVybiBhcmd1bWVudDtcbiAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3Qgc2V0IFwiICsgU3RyaW5nKGFyZ3VtZW50KSArICcgYXMgYSBwcm90b3R5cGUnKTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzUHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZicpO1xuXG52YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFByb3RvdHlwZSkge1xuICBpZiAoaXNQcm90b3R5cGVPZihQcm90b3R5cGUsIGl0KSkgcmV0dXJuIGl0O1xuICB0aHJvdyBUeXBlRXJyb3IoJ0luY29ycmVjdCBpbnZvY2F0aW9uJyk7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyIFN0cmluZyA9IGdsb2JhbC5TdHJpbmc7XG52YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcblxuLy8gYEFzc2VydDogVHlwZShhcmd1bWVudCkgaXMgT2JqZWN0YFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgaWYgKGlzT2JqZWN0KGFyZ3VtZW50KSkgcmV0dXJuIGFyZ3VtZW50O1xuICB0aHJvdyBUeXBlRXJyb3IoU3RyaW5nKGFyZ3VtZW50KSArICcgaXMgbm90IGFuIG9iamVjdCcpO1xufTtcbiIsInZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciBsZW5ndGhPZkFycmF5TGlrZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9sZW5ndGgtb2YtYXJyYXktbGlrZScpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnsgaW5kZXhPZiwgaW5jbHVkZXMgfWAgbWV0aG9kcyBpbXBsZW1lbnRhdGlvblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChJU19JTkNMVURFUykge1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBlbCwgZnJvbUluZGV4KSB7XG4gICAgdmFyIE8gPSB0b0luZGV4ZWRPYmplY3QoJHRoaXMpO1xuICAgIHZhciBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShPKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICBpZiAoSVNfSU5DTFVERVMgJiYgZWwgIT0gZWwpIHdoaWxlIChsZW5ndGggPiBpbmRleCkge1xuICAgICAgdmFsdWUgPSBPW2luZGV4KytdO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZSAtLSBOYU4gY2hlY2tcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgICAgaWYgKChJU19JTkNMVURFUyB8fCBpbmRleCBpbiBPKSAmJiBPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5jbHVkZXNcbiAgaW5jbHVkZXM6IGNyZWF0ZU1ldGhvZCh0cnVlKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5pbmRleE9mYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuaW5kZXhvZlxuICBpbmRleE9mOiBjcmVhdGVNZXRob2QoZmFsc2UpXG59O1xuIiwidmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHVuY3VycnlUaGlzKFtdLnNsaWNlKTtcbiIsInZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIFNBRkVfQ0xPU0lORyA9IGZhbHNlO1xuXG50cnkge1xuICB2YXIgY2FsbGVkID0gMDtcbiAgdmFyIGl0ZXJhdG9yV2l0aFJldHVybiA9IHtcbiAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4geyBkb25lOiAhIWNhbGxlZCsrIH07XG4gICAgfSxcbiAgICAncmV0dXJuJzogZnVuY3Rpb24gKCkge1xuICAgICAgU0FGRV9DTE9TSU5HID0gdHJ1ZTtcbiAgICB9XG4gIH07XG4gIGl0ZXJhdG9yV2l0aFJldHVybltJVEVSQVRPUl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1hcnJheS1mcm9tLCBuby10aHJvdy1saXRlcmFsIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIEFycmF5LmZyb20oaXRlcmF0b3JXaXRoUmV0dXJuLCBmdW5jdGlvbiAoKSB7IHRocm93IDI7IH0pO1xufSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjLCBTS0lQX0NMT1NJTkcpIHtcbiAgaWYgKCFTS0lQX0NMT1NJTkcgJiYgIVNBRkVfQ0xPU0lORykgcmV0dXJuIGZhbHNlO1xuICB2YXIgSVRFUkFUSU9OX1NVUFBPUlQgPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICB2YXIgb2JqZWN0ID0ge307XG4gICAgb2JqZWN0W0lURVJBVE9SXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4geyBkb25lOiBJVEVSQVRJT05fU1VQUE9SVCA9IHRydWUgfTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9O1xuICAgIGV4ZWMob2JqZWN0KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gSVRFUkFUSU9OX1NVUFBPUlQ7XG59O1xuIiwidmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xuXG52YXIgdG9TdHJpbmcgPSB1bmN1cnJ5VGhpcyh7fS50b1N0cmluZyk7XG52YXIgc3RyaW5nU2xpY2UgPSB1bmN1cnJ5VGhpcygnJy5zbGljZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBzdHJpbmdTbGljZSh0b1N0cmluZyhpdCksIDgsIC0xKTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIFRPX1NUUklOR19UQUdfU1VQUE9SVCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmctdGFnLXN1cHBvcnQnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgY2xhc3NvZlJhdyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcbnZhciBPYmplY3QgPSBnbG9iYWwuT2JqZWN0O1xuXG4vLyBFUzMgd3JvbmcgaGVyZVxudmFyIENPUlJFQ1RfQVJHVU1FTlRTID0gY2xhc3NvZlJhdyhmdW5jdGlvbiAoKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPT0gJ0FyZ3VtZW50cyc7XG5cbi8vIGZhbGxiYWNrIGZvciBJRTExIFNjcmlwdCBBY2Nlc3MgRGVuaWVkIGVycm9yXG52YXIgdHJ5R2V0ID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gaXRba2V5XTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxufTtcblxuLy8gZ2V0dGluZyB0YWcgZnJvbSBFUzYrIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYFxubW9kdWxlLmV4cG9ydHMgPSBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPyBjbGFzc29mUmF3IDogZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBPLCB0YWcsIHJlc3VsdDtcbiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgPyAnVW5kZWZpbmVkJyA6IGl0ID09PSBudWxsID8gJ051bGwnXG4gICAgLy8gQEB0b1N0cmluZ1RhZyBjYXNlXG4gICAgOiB0eXBlb2YgKHRhZyA9IHRyeUdldChPID0gT2JqZWN0KGl0KSwgVE9fU1RSSU5HX1RBRykpID09ICdzdHJpbmcnID8gdGFnXG4gICAgLy8gYnVpbHRpblRhZyBjYXNlXG4gICAgOiBDT1JSRUNUX0FSR1VNRU5UUyA/IGNsYXNzb2ZSYXcoTylcbiAgICAvLyBFUzMgYXJndW1lbnRzIGZhbGxiYWNrXG4gICAgOiAocmVzdWx0ID0gY2xhc3NvZlJhdyhPKSkgPT0gJ09iamVjdCcgJiYgaXNDYWxsYWJsZShPLmNhbGxlZSkgPyAnQXJndW1lbnRzJyA6IHJlc3VsdDtcbn07XG4iLCJ2YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBvd25LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL293bi1rZXlzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhcmdldCwgc291cmNlLCBleGNlcHRpb25zKSB7XG4gIHZhciBrZXlzID0gb3duS2V5cyhzb3VyY2UpO1xuICB2YXIgZGVmaW5lUHJvcGVydHkgPSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mO1xuICB2YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTW9kdWxlLmY7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgIGlmICghaGFzT3duKHRhcmdldCwga2V5KSAmJiAhKGV4Y2VwdGlvbnMgJiYgaGFzT3duKGV4Y2VwdGlvbnMsIGtleSkpKSB7XG4gICAgICBkZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7XG4gICAgfVxuICB9XG59O1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIGtleSwgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gRGV0ZWN0IElFOCdzIGluY29tcGxldGUgZGVmaW5lUHJvcGVydHkgaW1wbGVtZW50YXRpb25cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAxLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KVsxXSAhPSA3O1xufSk7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgZG9jdW1lbnQgPSBnbG9iYWwuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBFWElTVFMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBFWElTVFMgPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGl0KSA6IHt9O1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gdHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0JztcbiIsInZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gL2lwYWR8aXBob25lfGlwb2QvaS50ZXN0KHVzZXJBZ2VudCkgJiYgZ2xvYmFsLlBlYmJsZSAhPT0gdW5kZWZpbmVkO1xuIiwidmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IC8oPzppcGFkfGlwaG9uZXxpcG9kKS4qYXBwbGV3ZWJraXQvaS50ZXN0KHVzZXJBZ2VudCk7XG4iLCJ2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBjbGFzc29mKGdsb2JhbC5wcm9jZXNzKSA9PSAncHJvY2Vzcyc7XG4iLCJ2YXIgdXNlckFnZW50ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gL3dlYjBzKD8hLipjaHJvbWUpL2kudGVzdCh1c2VyQWdlbnQpO1xuIiwidmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QnVpbHRJbignbmF2aWdhdG9yJywgJ3VzZXJBZ2VudCcpIHx8ICcnO1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQnKTtcblxudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciBEZW5vID0gZ2xvYmFsLkRlbm87XG52YXIgdmVyc2lvbnMgPSBwcm9jZXNzICYmIHByb2Nlc3MudmVyc2lvbnMgfHwgRGVubyAmJiBEZW5vLnZlcnNpb247XG52YXIgdjggPSB2ZXJzaW9ucyAmJiB2ZXJzaW9ucy52ODtcbnZhciBtYXRjaCwgdmVyc2lvbjtcblxuaWYgKHY4KSB7XG4gIG1hdGNoID0gdjguc3BsaXQoJy4nKTtcbiAgLy8gaW4gb2xkIENocm9tZSwgdmVyc2lvbnMgb2YgVjggaXNuJ3QgVjggPSBDaHJvbWUgLyAxMFxuICAvLyBidXQgdGhlaXIgY29ycmVjdCB2ZXJzaW9ucyBhcmUgbm90IGludGVyZXN0aW5nIGZvciB1c1xuICB2ZXJzaW9uID0gbWF0Y2hbMF0gPiAwICYmIG1hdGNoWzBdIDwgNCA/IDEgOiArKG1hdGNoWzBdICsgbWF0Y2hbMV0pO1xufVxuXG4vLyBCcm93c2VyRlMgTm9kZUpTIGBwcm9jZXNzYCBwb2x5ZmlsbCBpbmNvcnJlY3RseSBzZXQgYC52OGAgdG8gYDAuMGBcbi8vIHNvIGNoZWNrIGB1c2VyQWdlbnRgIGV2ZW4gaWYgYC52OGAgZXhpc3RzLCBidXQgMFxuaWYgKCF2ZXJzaW9uICYmIHVzZXJBZ2VudCkge1xuICBtYXRjaCA9IHVzZXJBZ2VudC5tYXRjaCgvRWRnZVxcLyhcXGQrKS8pO1xuICBpZiAoIW1hdGNoIHx8IG1hdGNoWzFdID49IDc0KSB7XG4gICAgbWF0Y2ggPSB1c2VyQWdlbnQubWF0Y2goL0Nocm9tZVxcLyhcXGQrKS8pO1xuICAgIGlmIChtYXRjaCkgdmVyc2lvbiA9ICttYXRjaFsxXTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZlcnNpb247XG4iLCIvLyBJRTgtIGRvbid0IGVudW0gYnVnIGtleXNcbm1vZHVsZS5leHBvcnRzID0gW1xuICAnY29uc3RydWN0b3InLFxuICAnaGFzT3duUHJvcGVydHknLFxuICAnaXNQcm90b3R5cGVPZicsXG4gICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsXG4gICd0b0xvY2FsZVN0cmluZycsXG4gICd0b1N0cmluZycsXG4gICd2YWx1ZU9mJ1xuXTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKS5mO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIHNldEdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtZ2xvYmFsJyk7XG52YXIgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb3B5LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMnKTtcbnZhciBpc0ZvcmNlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1mb3JjZWQnKTtcblxuLypcbiAgb3B0aW9ucy50YXJnZXQgICAgICAtIG5hbWUgb2YgdGhlIHRhcmdldCBvYmplY3RcbiAgb3B0aW9ucy5nbG9iYWwgICAgICAtIHRhcmdldCBpcyB0aGUgZ2xvYmFsIG9iamVjdFxuICBvcHRpb25zLnN0YXQgICAgICAgIC0gZXhwb3J0IGFzIHN0YXRpYyBtZXRob2RzIG9mIHRhcmdldFxuICBvcHRpb25zLnByb3RvICAgICAgIC0gZXhwb3J0IGFzIHByb3RvdHlwZSBtZXRob2RzIG9mIHRhcmdldFxuICBvcHRpb25zLnJlYWwgICAgICAgIC0gcmVhbCBwcm90b3R5cGUgbWV0aG9kIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy5mb3JjZWQgICAgICAtIGV4cG9ydCBldmVuIGlmIHRoZSBuYXRpdmUgZmVhdHVyZSBpcyBhdmFpbGFibGVcbiAgb3B0aW9ucy5iaW5kICAgICAgICAtIGJpbmQgbWV0aG9kcyB0byB0aGUgdGFyZ2V0LCByZXF1aXJlZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMud3JhcCAgICAgICAgLSB3cmFwIGNvbnN0cnVjdG9ycyB0byBwcmV2ZW50aW5nIGdsb2JhbCBwb2xsdXRpb24sIHJlcXVpcmVkIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy51bnNhZmUgICAgICAtIHVzZSB0aGUgc2ltcGxlIGFzc2lnbm1lbnQgb2YgcHJvcGVydHkgaW5zdGVhZCBvZiBkZWxldGUgKyBkZWZpbmVQcm9wZXJ0eVxuICBvcHRpb25zLnNoYW0gICAgICAgIC0gYWRkIGEgZmxhZyB0byBub3QgY29tcGxldGVseSBmdWxsIHBvbHlmaWxsc1xuICBvcHRpb25zLmVudW1lcmFibGUgIC0gZXhwb3J0IGFzIGVudW1lcmFibGUgcHJvcGVydHlcbiAgb3B0aW9ucy5ub1RhcmdldEdldCAtIHByZXZlbnQgY2FsbGluZyBhIGdldHRlciBvbiB0YXJnZXRcbiAgb3B0aW9ucy5uYW1lICAgICAgICAtIHRoZSAubmFtZSBvZiB0aGUgZnVuY3Rpb24gaWYgaXQgZG9lcyBub3QgbWF0Y2ggdGhlIGtleVxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9wdGlvbnMsIHNvdXJjZSkge1xuICB2YXIgVEFSR0VUID0gb3B0aW9ucy50YXJnZXQ7XG4gIHZhciBHTE9CQUwgPSBvcHRpb25zLmdsb2JhbDtcbiAgdmFyIFNUQVRJQyA9IG9wdGlvbnMuc3RhdDtcbiAgdmFyIEZPUkNFRCwgdGFyZ2V0LCBrZXksIHRhcmdldFByb3BlcnR5LCBzb3VyY2VQcm9wZXJ0eSwgZGVzY3JpcHRvcjtcbiAgaWYgKEdMT0JBTCkge1xuICAgIHRhcmdldCA9IGdsb2JhbDtcbiAgfSBlbHNlIGlmIChTVEFUSUMpIHtcbiAgICB0YXJnZXQgPSBnbG9iYWxbVEFSR0VUXSB8fCBzZXRHbG9iYWwoVEFSR0VULCB7fSk7XG4gIH0gZWxzZSB7XG4gICAgdGFyZ2V0ID0gKGdsb2JhbFtUQVJHRVRdIHx8IHt9KS5wcm90b3R5cGU7XG4gIH1cbiAgaWYgKHRhcmdldCkgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgc291cmNlUHJvcGVydHkgPSBzb3VyY2Vba2V5XTtcbiAgICBpZiAob3B0aW9ucy5ub1RhcmdldEdldCkge1xuICAgICAgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSk7XG4gICAgICB0YXJnZXRQcm9wZXJ0eSA9IGRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci52YWx1ZTtcbiAgICB9IGVsc2UgdGFyZ2V0UHJvcGVydHkgPSB0YXJnZXRba2V5XTtcbiAgICBGT1JDRUQgPSBpc0ZvcmNlZChHTE9CQUwgPyBrZXkgOiBUQVJHRVQgKyAoU1RBVElDID8gJy4nIDogJyMnKSArIGtleSwgb3B0aW9ucy5mb3JjZWQpO1xuICAgIC8vIGNvbnRhaW5lZCBpbiB0YXJnZXRcbiAgICBpZiAoIUZPUkNFRCAmJiB0YXJnZXRQcm9wZXJ0eSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodHlwZW9mIHNvdXJjZVByb3BlcnR5ID09IHR5cGVvZiB0YXJnZXRQcm9wZXJ0eSkgY29udGludWU7XG4gICAgICBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzKHNvdXJjZVByb3BlcnR5LCB0YXJnZXRQcm9wZXJ0eSk7XG4gICAgfVxuICAgIC8vIGFkZCBhIGZsYWcgdG8gbm90IGNvbXBsZXRlbHkgZnVsbCBwb2x5ZmlsbHNcbiAgICBpZiAob3B0aW9ucy5zaGFtIHx8ICh0YXJnZXRQcm9wZXJ0eSAmJiB0YXJnZXRQcm9wZXJ0eS5zaGFtKSkge1xuICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KHNvdXJjZVByb3BlcnR5LCAnc2hhbScsIHRydWUpO1xuICAgIH1cbiAgICAvLyBleHRlbmQgZ2xvYmFsXG4gICAgcmVkZWZpbmUodGFyZ2V0LCBrZXksIHNvdXJjZVByb3BlcnR5LCBvcHRpb25zKTtcbiAgfVxufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG4iLCJ2YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG52YXIgYXBwbHkgPSBGdW5jdGlvblByb3RvdHlwZS5hcHBseTtcbnZhciBiaW5kID0gRnVuY3Rpb25Qcm90b3R5cGUuYmluZDtcbnZhciBjYWxsID0gRnVuY3Rpb25Qcm90b3R5cGUuY2FsbDtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLXJlZmxlY3QgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgUmVmbGVjdCA9PSAnb2JqZWN0JyAmJiBSZWZsZWN0LmFwcGx5IHx8IChiaW5kID8gY2FsbC5iaW5kKGFwcGx5KSA6IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGNhbGwuYXBwbHkoYXBwbHksIGFyZ3VtZW50cyk7XG59KTtcbiIsInZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBhQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jYWxsYWJsZScpO1xuXG52YXIgYmluZCA9IHVuY3VycnlUaGlzKHVuY3VycnlUaGlzLmJpbmQpO1xuXG4vLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0KSB7XG4gIGFDYWxsYWJsZShmbik7XG4gIHJldHVybiB0aGF0ID09PSB1bmRlZmluZWQgPyBmbiA6IGJpbmQgPyBiaW5kKGZuLCB0aGF0KSA6IGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwidmFyIGNhbGwgPSBGdW5jdGlvbi5wcm90b3R5cGUuY2FsbDtcblxubW9kdWxlLmV4cG9ydHMgPSBjYWxsLmJpbmQgPyBjYWxsLmJpbmQoY2FsbCkgOiBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBjYWxsLmFwcGx5KGNhbGwsIGFyZ3VtZW50cyk7XG59O1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcblxudmFyIEZ1bmN0aW9uUHJvdG90eXBlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyIGdldERlc2NyaXB0b3IgPSBERVNDUklQVE9SUyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG52YXIgRVhJU1RTID0gaGFzT3duKEZ1bmN0aW9uUHJvdG90eXBlLCAnbmFtZScpO1xuLy8gYWRkaXRpb25hbCBwcm90ZWN0aW9uIGZyb20gbWluaWZpZWQgLyBtYW5nbGVkIC8gZHJvcHBlZCBmdW5jdGlvbiBuYW1lc1xudmFyIFBST1BFUiA9IEVYSVNUUyAmJiAoZnVuY3Rpb24gc29tZXRoaW5nKCkgeyAvKiBlbXB0eSAqLyB9KS5uYW1lID09PSAnc29tZXRoaW5nJztcbnZhciBDT05GSUdVUkFCTEUgPSBFWElTVFMgJiYgKCFERVNDUklQVE9SUyB8fCAoREVTQ1JJUFRPUlMgJiYgZ2V0RGVzY3JpcHRvcihGdW5jdGlvblByb3RvdHlwZSwgJ25hbWUnKS5jb25maWd1cmFibGUpKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEVYSVNUUzogRVhJU1RTLFxuICBQUk9QRVI6IFBST1BFUixcbiAgQ09ORklHVVJBQkxFOiBDT05GSUdVUkFCTEVcbn07XG4iLCJ2YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG52YXIgYmluZCA9IEZ1bmN0aW9uUHJvdG90eXBlLmJpbmQ7XG52YXIgY2FsbCA9IEZ1bmN0aW9uUHJvdG90eXBlLmNhbGw7XG52YXIgY2FsbEJpbmQgPSBiaW5kICYmIGJpbmQuYmluZChjYWxsKTtcblxubW9kdWxlLmV4cG9ydHMgPSBiaW5kID8gZnVuY3Rpb24gKGZuKSB7XG4gIHJldHVybiBmbiAmJiBjYWxsQmluZChjYWxsLCBmbik7XG59IDogZnVuY3Rpb24gKGZuKSB7XG4gIHJldHVybiBmbiAmJiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGNhbGwuYXBwbHkoZm4sIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbnZhciBhRnVuY3Rpb24gPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGlzQ2FsbGFibGUoYXJndW1lbnQpID8gYXJndW1lbnQgOiB1bmRlZmluZWQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lc3BhY2UsIG1ldGhvZCkge1xuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyBhRnVuY3Rpb24oZ2xvYmFsW25hbWVzcGFjZV0pIDogZ2xvYmFsW25hbWVzcGFjZV0gJiYgZ2xvYmFsW25hbWVzcGFjZV1bbWV0aG9kXTtcbn07XG4iLCJ2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG52YXIgZ2V0TWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1tZXRob2QnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ICE9IHVuZGVmaW5lZCkgcmV0dXJuIGdldE1ldGhvZChpdCwgSVRFUkFUT1IpXG4gICAgfHwgZ2V0TWV0aG9kKGl0LCAnQEBpdGVyYXRvcicpXG4gICAgfHwgSXRlcmF0b3JzW2NsYXNzb2YoaXQpXTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdHJ5VG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdHJ5LXRvLXN0cmluZycpO1xudmFyIGdldEl0ZXJhdG9yTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QnKTtcblxudmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50LCB1c2luZ0l0ZXJhdG9yKSB7XG4gIHZhciBpdGVyYXRvck1ldGhvZCA9IGFyZ3VtZW50cy5sZW5ndGggPCAyID8gZ2V0SXRlcmF0b3JNZXRob2QoYXJndW1lbnQpIDogdXNpbmdJdGVyYXRvcjtcbiAgaWYgKGFDYWxsYWJsZShpdGVyYXRvck1ldGhvZCkpIHJldHVybiBhbk9iamVjdChjYWxsKGl0ZXJhdG9yTWV0aG9kLCBhcmd1bWVudCkpO1xuICB0aHJvdyBUeXBlRXJyb3IodHJ5VG9TdHJpbmcoYXJndW1lbnQpICsgJyBpcyBub3QgaXRlcmFibGUnKTtcbn07XG4iLCJ2YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcblxuLy8gYEdldE1ldGhvZGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldG1ldGhvZFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoViwgUCkge1xuICB2YXIgZnVuYyA9IFZbUF07XG4gIHJldHVybiBmdW5jID09IG51bGwgPyB1bmRlZmluZWQgOiBhQ2FsbGFibGUoZnVuYyk7XG59O1xuIiwidmFyIGNoZWNrID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCAmJiBpdC5NYXRoID09IE1hdGggJiYgaXQ7XG59O1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTExNTc1OTAyOFxubW9kdWxlLmV4cG9ydHMgPVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tZ2xvYmFsLXRoaXMgLS0gc2FmZVxuICBjaGVjayh0eXBlb2YgZ2xvYmFsVGhpcyA9PSAnb2JqZWN0JyAmJiBnbG9iYWxUaGlzKSB8fFxuICBjaGVjayh0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIHdpbmRvdykgfHxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtZ2xvYmFscyAtLSBzYWZlXG4gIGNoZWNrKHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYpIHx8XG4gIGNoZWNrKHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsKSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmMgLS0gZmFsbGJhY2tcbiAgKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pKCkgfHwgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbiIsInZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcblxudmFyIGhhc093blByb3BlcnR5ID0gdW5jdXJyeVRoaXMoe30uaGFzT3duUHJvcGVydHkpO1xuXG4vLyBgSGFzT3duUHJvcGVydHlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1oYXNvd25wcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuaGFzT3duIHx8IGZ1bmN0aW9uIGhhc093bihpdCwga2V5KSB7XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eSh0b09iamVjdChpdCksIGtleSk7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7fTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgdmFyIGNvbnNvbGUgPSBnbG9iYWwuY29uc29sZTtcbiAgaWYgKGNvbnNvbGUgJiYgY29uc29sZS5lcnJvcikge1xuICAgIGFyZ3VtZW50cy5sZW5ndGggPT0gMSA/IGNvbnNvbGUuZXJyb3IoYSkgOiBjb25zb2xlLmVycm9yKGEsIGIpO1xuICB9XG59O1xuIiwidmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QnVpbHRJbignZG9jdW1lbnQnLCAnZG9jdW1lbnRFbGVtZW50Jyk7XG4iLCJ2YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGNyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQnKTtcblxuLy8gVGhhbmsncyBJRTggZm9yIGhpcyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhREVTQ1JJUFRPUlMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGNyZWF0ZUVsZW1lbnQoJ2RpdicpLCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH1cbiAgfSkuYSAhPSA3O1xufSk7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xuXG52YXIgT2JqZWN0ID0gZ2xvYmFsLk9iamVjdDtcbnZhciBzcGxpdCA9IHVuY3VycnlUaGlzKCcnLnNwbGl0KTtcblxuLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3Ncbm1vZHVsZS5leHBvcnRzID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyB0aHJvd3MgYW4gZXJyb3IgaW4gcmhpbm8sIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9yaGluby9pc3N1ZXMvMzQ2XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgLS0gc2FmZVxuICByZXR1cm4gIU9iamVjdCgneicpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApO1xufSkgPyBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGNsYXNzb2YoaXQpID09ICdTdHJpbmcnID8gc3BsaXQoaXQsICcnKSA6IE9iamVjdChpdCk7XG59IDogT2JqZWN0O1xuIiwidmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBzdG9yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQtc3RvcmUnKTtcblxudmFyIGZ1bmN0aW9uVG9TdHJpbmcgPSB1bmN1cnJ5VGhpcyhGdW5jdGlvbi50b1N0cmluZyk7XG5cbi8vIHRoaXMgaGVscGVyIGJyb2tlbiBpbiBgY29yZS1qc0AzLjQuMS0zLjQuNGAsIHNvIHdlIGNhbid0IHVzZSBgc2hhcmVkYCBoZWxwZXJcbmlmICghaXNDYWxsYWJsZShzdG9yZS5pbnNwZWN0U291cmNlKSkge1xuICBzdG9yZS5pbnNwZWN0U291cmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uVG9TdHJpbmcoaXQpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0b3JlLmluc3BlY3RTb3VyY2U7XG4iLCJ2YXIgTkFUSVZFX1dFQUtfTUFQID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25hdGl2ZS13ZWFrLW1hcCcpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG52YXIgc2hhcmVkS2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXknKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbnZhciBPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCA9ICdPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZCc7XG52YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcbnZhciBXZWFrTWFwID0gZ2xvYmFsLldlYWtNYXA7XG52YXIgc2V0LCBnZXQsIGhhcztcblxudmFyIGVuZm9yY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGhhcyhpdCkgPyBnZXQoaXQpIDogc2V0KGl0LCB7fSk7XG59O1xuXG52YXIgZ2V0dGVyRm9yID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpdCkge1xuICAgIHZhciBzdGF0ZTtcbiAgICBpZiAoIWlzT2JqZWN0KGl0KSB8fCAoc3RhdGUgPSBnZXQoaXQpKS50eXBlICE9PSBUWVBFKSB7XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ0luY29tcGF0aWJsZSByZWNlaXZlciwgJyArIFRZUEUgKyAnIHJlcXVpcmVkJyk7XG4gICAgfSByZXR1cm4gc3RhdGU7XG4gIH07XG59O1xuXG5pZiAoTkFUSVZFX1dFQUtfTUFQIHx8IHNoYXJlZC5zdGF0ZSkge1xuICB2YXIgc3RvcmUgPSBzaGFyZWQuc3RhdGUgfHwgKHNoYXJlZC5zdGF0ZSA9IG5ldyBXZWFrTWFwKCkpO1xuICB2YXIgd21nZXQgPSB1bmN1cnJ5VGhpcyhzdG9yZS5nZXQpO1xuICB2YXIgd21oYXMgPSB1bmN1cnJ5VGhpcyhzdG9yZS5oYXMpO1xuICB2YXIgd21zZXQgPSB1bmN1cnJ5VGhpcyhzdG9yZS5zZXQpO1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgaWYgKHdtaGFzKHN0b3JlLCBpdCkpIHRocm93IG5ldyBUeXBlRXJyb3IoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIHdtc2V0KHN0b3JlLCBpdCwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHdtZ2V0KHN0b3JlLCBpdCkgfHwge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiB3bWhhcyhzdG9yZSwgaXQpO1xuICB9O1xufSBlbHNlIHtcbiAgdmFyIFNUQVRFID0gc2hhcmVkS2V5KCdzdGF0ZScpO1xuICBoaWRkZW5LZXlzW1NUQVRFXSA9IHRydWU7XG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBpZiAoaGFzT3duKGl0LCBTVEFURSkpIHRocm93IG5ldyBUeXBlRXJyb3IoT0JKRUNUX0FMUkVBRFlfSU5JVElBTElaRUQpO1xuICAgIG1ldGFkYXRhLmZhY2FkZSA9IGl0O1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShpdCwgU1RBVEUsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBoYXNPd24oaXQsIFNUQVRFKSA/IGl0W1NUQVRFXSA6IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gaGFzT3duKGl0LCBTVEFURSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldCxcbiAgZ2V0OiBnZXQsXG4gIGhhczogaGFzLFxuICBlbmZvcmNlOiBlbmZvcmNlLFxuICBnZXR0ZXJGb3I6IGdldHRlckZvclxufTtcbiIsInZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzJyk7XG5cbnZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcbnZhciBBcnJheVByb3RvdHlwZSA9IEFycmF5LnByb3RvdHlwZTtcblxuLy8gY2hlY2sgb24gZGVmYXVsdCBBcnJheSBpdGVyYXRvclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ICE9PSB1bmRlZmluZWQgJiYgKEl0ZXJhdG9ycy5BcnJheSA9PT0gaXQgfHwgQXJyYXlQcm90b3R5cGVbSVRFUkFUT1JdID09PSBpdCk7XG59O1xuIiwiLy8gYElzQ2FsbGFibGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1pc2NhbGxhYmxlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09ICdmdW5jdGlvbic7XG59O1xuIiwidmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZicpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgaW5zcGVjdFNvdXJjZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZScpO1xuXG52YXIgbm9vcCA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTtcbnZhciBlbXB0eSA9IFtdO1xudmFyIGNvbnN0cnVjdCA9IGdldEJ1aWx0SW4oJ1JlZmxlY3QnLCAnY29uc3RydWN0Jyk7XG52YXIgY29uc3RydWN0b3JSZWdFeHAgPSAvXlxccyooPzpjbGFzc3xmdW5jdGlvbilcXGIvO1xudmFyIGV4ZWMgPSB1bmN1cnJ5VGhpcyhjb25zdHJ1Y3RvclJlZ0V4cC5leGVjKTtcbnZhciBJTkNPUlJFQ1RfVE9fU1RSSU5HID0gIWNvbnN0cnVjdG9yUmVnRXhwLmV4ZWMobm9vcCk7XG5cbnZhciBpc0NvbnN0cnVjdG9yTW9kZXJuID0gZnVuY3Rpb24gaXNDb25zdHJ1Y3Rvcihhcmd1bWVudCkge1xuICBpZiAoIWlzQ2FsbGFibGUoYXJndW1lbnQpKSByZXR1cm4gZmFsc2U7XG4gIHRyeSB7XG4gICAgY29uc3RydWN0KG5vb3AsIGVtcHR5LCBhcmd1bWVudCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG52YXIgaXNDb25zdHJ1Y3RvckxlZ2FjeSA9IGZ1bmN0aW9uIGlzQ29uc3RydWN0b3IoYXJndW1lbnQpIHtcbiAgaWYgKCFpc0NhbGxhYmxlKGFyZ3VtZW50KSkgcmV0dXJuIGZhbHNlO1xuICBzd2l0Y2ggKGNsYXNzb2YoYXJndW1lbnQpKSB7XG4gICAgY2FzZSAnQXN5bmNGdW5jdGlvbic6XG4gICAgY2FzZSAnR2VuZXJhdG9yRnVuY3Rpb24nOlxuICAgIGNhc2UgJ0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24nOiByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdHJ5IHtcbiAgICAvLyB3ZSBjYW4ndCBjaGVjayAucHJvdG90eXBlIHNpbmNlIGNvbnN0cnVjdG9ycyBwcm9kdWNlZCBieSAuYmluZCBoYXZlbid0IGl0XG4gICAgLy8gYEZ1bmN0aW9uI3RvU3RyaW5nYCB0aHJvd3Mgb24gc29tZSBidWlsdC1pdCBmdW5jdGlvbiBpbiBzb21lIGxlZ2FjeSBlbmdpbmVzXG4gICAgLy8gKGZvciBleGFtcGxlLCBgRE9NUXVhZGAgYW5kIHNpbWlsYXIgaW4gRkY0MS0pXG4gICAgcmV0dXJuIElOQ09SUkVDVF9UT19TVFJJTkcgfHwgISFleGVjKGNvbnN0cnVjdG9yUmVnRXhwLCBpbnNwZWN0U291cmNlKGFyZ3VtZW50KSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG5cbmlzQ29uc3RydWN0b3JMZWdhY3kuc2hhbSA9IHRydWU7XG5cbi8vIGBJc0NvbnN0cnVjdG9yYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaXNjb25zdHJ1Y3RvclxubW9kdWxlLmV4cG9ydHMgPSAhY29uc3RydWN0IHx8IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIGNhbGxlZDtcbiAgcmV0dXJuIGlzQ29uc3RydWN0b3JNb2Rlcm4oaXNDb25zdHJ1Y3Rvck1vZGVybi5jYWxsKVxuICAgIHx8ICFpc0NvbnN0cnVjdG9yTW9kZXJuKE9iamVjdClcbiAgICB8fCAhaXNDb25zdHJ1Y3Rvck1vZGVybihmdW5jdGlvbiAoKSB7IGNhbGxlZCA9IHRydWU7IH0pXG4gICAgfHwgY2FsbGVkO1xufSkgPyBpc0NvbnN0cnVjdG9yTGVnYWN5IDogaXNDb25zdHJ1Y3Rvck1vZGVybjtcbiIsInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcblxudmFyIHJlcGxhY2VtZW50ID0gLyN8XFwucHJvdG90eXBlXFwuLztcblxudmFyIGlzRm9yY2VkID0gZnVuY3Rpb24gKGZlYXR1cmUsIGRldGVjdGlvbikge1xuICB2YXIgdmFsdWUgPSBkYXRhW25vcm1hbGl6ZShmZWF0dXJlKV07XG4gIHJldHVybiB2YWx1ZSA9PSBQT0xZRklMTCA/IHRydWVcbiAgICA6IHZhbHVlID09IE5BVElWRSA/IGZhbHNlXG4gICAgOiBpc0NhbGxhYmxlKGRldGVjdGlvbikgPyBmYWlscyhkZXRlY3Rpb24pXG4gICAgOiAhIWRldGVjdGlvbjtcbn07XG5cbnZhciBub3JtYWxpemUgPSBpc0ZvcmNlZC5ub3JtYWxpemUgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHJldHVybiBTdHJpbmcoc3RyaW5nKS5yZXBsYWNlKHJlcGxhY2VtZW50LCAnLicpLnRvTG93ZXJDYXNlKCk7XG59O1xuXG52YXIgZGF0YSA9IGlzRm9yY2VkLmRhdGEgPSB7fTtcbnZhciBOQVRJVkUgPSBpc0ZvcmNlZC5OQVRJVkUgPSAnTic7XG52YXIgUE9MWUZJTEwgPSBpc0ZvcmNlZC5QT0xZRklMTCA9ICdQJztcblxubW9kdWxlLmV4cG9ydHMgPSBpc0ZvcmNlZDtcbiIsInZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IGlzQ2FsbGFibGUoaXQpO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZmFsc2U7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzUHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWlzLXByb3RvdHlwZS1vZicpO1xudmFyIFVTRV9TWU1CT0xfQVNfVUlEID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkJyk7XG5cbnZhciBPYmplY3QgPSBnbG9iYWwuT2JqZWN0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFVTRV9TWU1CT0xfQVNfVUlEID8gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCc7XG59IDogZnVuY3Rpb24gKGl0KSB7XG4gIHZhciAkU3ltYm9sID0gZ2V0QnVpbHRJbignU3ltYm9sJyk7XG4gIHJldHVybiBpc0NhbGxhYmxlKCRTeW1ib2wpICYmIGlzUHJvdG90eXBlT2YoJFN5bWJvbC5wcm90b3R5cGUsIE9iamVjdChpdCkpO1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0cnlUb1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90cnktdG8tc3RyaW5nJyk7XG52YXIgaXNBcnJheUl0ZXJhdG9yTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWFycmF5LWl0ZXJhdG9yLW1ldGhvZCcpO1xudmFyIGxlbmd0aE9mQXJyYXlMaWtlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2xlbmd0aC1vZi1hcnJheS1saWtlJyk7XG52YXIgaXNQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtaXMtcHJvdG90eXBlLW9mJyk7XG52YXIgZ2V0SXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yJyk7XG52YXIgZ2V0SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpO1xudmFyIGl0ZXJhdG9yQ2xvc2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3ItY2xvc2UnKTtcblxudmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG5cbnZhciBSZXN1bHQgPSBmdW5jdGlvbiAoc3RvcHBlZCwgcmVzdWx0KSB7XG4gIHRoaXMuc3RvcHBlZCA9IHN0b3BwZWQ7XG4gIHRoaXMucmVzdWx0ID0gcmVzdWx0O1xufTtcblxudmFyIFJlc3VsdFByb3RvdHlwZSA9IFJlc3VsdC5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhYmxlLCB1bmJvdW5kRnVuY3Rpb24sIG9wdGlvbnMpIHtcbiAgdmFyIHRoYXQgPSBvcHRpb25zICYmIG9wdGlvbnMudGhhdDtcbiAgdmFyIEFTX0VOVFJJRVMgPSAhIShvcHRpb25zICYmIG9wdGlvbnMuQVNfRU5UUklFUyk7XG4gIHZhciBJU19JVEVSQVRPUiA9ICEhKG9wdGlvbnMgJiYgb3B0aW9ucy5JU19JVEVSQVRPUik7XG4gIHZhciBJTlRFUlJVUFRFRCA9ICEhKG9wdGlvbnMgJiYgb3B0aW9ucy5JTlRFUlJVUFRFRCk7XG4gIHZhciBmbiA9IGJpbmQodW5ib3VuZEZ1bmN0aW9uLCB0aGF0KTtcbiAgdmFyIGl0ZXJhdG9yLCBpdGVyRm4sIGluZGV4LCBsZW5ndGgsIHJlc3VsdCwgbmV4dCwgc3RlcDtcblxuICB2YXIgc3RvcCA9IGZ1bmN0aW9uIChjb25kaXRpb24pIHtcbiAgICBpZiAoaXRlcmF0b3IpIGl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsICdub3JtYWwnLCBjb25kaXRpb24pO1xuICAgIHJldHVybiBuZXcgUmVzdWx0KHRydWUsIGNvbmRpdGlvbik7XG4gIH07XG5cbiAgdmFyIGNhbGxGbiA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIGlmIChBU19FTlRSSUVTKSB7XG4gICAgICBhbk9iamVjdCh2YWx1ZSk7XG4gICAgICByZXR1cm4gSU5URVJSVVBURUQgPyBmbih2YWx1ZVswXSwgdmFsdWVbMV0sIHN0b3ApIDogZm4odmFsdWVbMF0sIHZhbHVlWzFdKTtcbiAgICB9IHJldHVybiBJTlRFUlJVUFRFRCA/IGZuKHZhbHVlLCBzdG9wKSA6IGZuKHZhbHVlKTtcbiAgfTtcblxuICBpZiAoSVNfSVRFUkFUT1IpIHtcbiAgICBpdGVyYXRvciA9IGl0ZXJhYmxlO1xuICB9IGVsc2Uge1xuICAgIGl0ZXJGbiA9IGdldEl0ZXJhdG9yTWV0aG9kKGl0ZXJhYmxlKTtcbiAgICBpZiAoIWl0ZXJGbikgdGhyb3cgVHlwZUVycm9yKHRyeVRvU3RyaW5nKGl0ZXJhYmxlKSArICcgaXMgbm90IGl0ZXJhYmxlJyk7XG4gICAgLy8gb3B0aW1pc2F0aW9uIGZvciBhcnJheSBpdGVyYXRvcnNcbiAgICBpZiAoaXNBcnJheUl0ZXJhdG9yTWV0aG9kKGl0ZXJGbikpIHtcbiAgICAgIGZvciAoaW5kZXggPSAwLCBsZW5ndGggPSBsZW5ndGhPZkFycmF5TGlrZShpdGVyYWJsZSk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICAgIHJlc3VsdCA9IGNhbGxGbihpdGVyYWJsZVtpbmRleF0pO1xuICAgICAgICBpZiAocmVzdWx0ICYmIGlzUHJvdG90eXBlT2YoUmVzdWx0UHJvdG90eXBlLCByZXN1bHQpKSByZXR1cm4gcmVzdWx0O1xuICAgICAgfSByZXR1cm4gbmV3IFJlc3VsdChmYWxzZSk7XG4gICAgfVxuICAgIGl0ZXJhdG9yID0gZ2V0SXRlcmF0b3IoaXRlcmFibGUsIGl0ZXJGbik7XG4gIH1cblxuICBuZXh0ID0gaXRlcmF0b3IubmV4dDtcbiAgd2hpbGUgKCEoc3RlcCA9IGNhbGwobmV4dCwgaXRlcmF0b3IpKS5kb25lKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJlc3VsdCA9IGNhbGxGbihzdGVwLnZhbHVlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaXRlcmF0b3JDbG9zZShpdGVyYXRvciwgJ3Rocm93JywgZXJyb3IpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHJlc3VsdCA9PSAnb2JqZWN0JyAmJiByZXN1bHQgJiYgaXNQcm90b3R5cGVPZihSZXN1bHRQcm90b3R5cGUsIHJlc3VsdCkpIHJldHVybiByZXN1bHQ7XG4gIH0gcmV0dXJuIG5ldyBSZXN1bHQoZmFsc2UpO1xufTtcbiIsInZhciBjYWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWNhbGwnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBnZXRNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LW1ldGhvZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYXRvciwga2luZCwgdmFsdWUpIHtcbiAgdmFyIGlubmVyUmVzdWx0LCBpbm5lckVycm9yO1xuICBhbk9iamVjdChpdGVyYXRvcik7XG4gIHRyeSB7XG4gICAgaW5uZXJSZXN1bHQgPSBnZXRNZXRob2QoaXRlcmF0b3IsICdyZXR1cm4nKTtcbiAgICBpZiAoIWlubmVyUmVzdWx0KSB7XG4gICAgICBpZiAoa2luZCA9PT0gJ3Rocm93JykgdGhyb3cgdmFsdWU7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIGlubmVyUmVzdWx0ID0gY2FsbChpbm5lclJlc3VsdCwgaXRlcmF0b3IpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlubmVyRXJyb3IgPSB0cnVlO1xuICAgIGlubmVyUmVzdWx0ID0gZXJyb3I7XG4gIH1cbiAgaWYgKGtpbmQgPT09ICd0aHJvdycpIHRocm93IHZhbHVlO1xuICBpZiAoaW5uZXJFcnJvcikgdGhyb3cgaW5uZXJSZXN1bHQ7XG4gIGFuT2JqZWN0KGlubmVyUmVzdWx0KTtcbiAgcmV0dXJuIHZhbHVlO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0ge307XG4iLCJ2YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG5cbi8vIGBMZW5ndGhPZkFycmF5TGlrZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWxlbmd0aG9mYXJyYXlsaWtlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmopIHtcbiAgcmV0dXJuIHRvTGVuZ3RoKG9iai5sZW5ndGgpO1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpLmY7XG52YXIgbWFjcm90YXNrID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Rhc2snKS5zZXQ7XG52YXIgSVNfSU9TID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1pb3MnKTtcbnZhciBJU19JT1NfUEVCQkxFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1pb3MtcGViYmxlJyk7XG52YXIgSVNfV0VCT1NfV0VCS0lUID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy13ZWJvcy13ZWJraXQnKTtcbnZhciBJU19OT0RFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1ub2RlJyk7XG5cbnZhciBNdXRhdGlvbk9ic2VydmVyID0gZ2xvYmFsLk11dGF0aW9uT2JzZXJ2ZXIgfHwgZ2xvYmFsLldlYktpdE11dGF0aW9uT2JzZXJ2ZXI7XG52YXIgZG9jdW1lbnQgPSBnbG9iYWwuZG9jdW1lbnQ7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIFByb21pc2UgPSBnbG9iYWwuUHJvbWlzZTtcbi8vIE5vZGUuanMgMTEgc2hvd3MgRXhwZXJpbWVudGFsV2FybmluZyBvbiBnZXR0aW5nIGBxdWV1ZU1pY3JvdGFza2BcbnZhciBxdWV1ZU1pY3JvdGFza0Rlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZ2xvYmFsLCAncXVldWVNaWNyb3Rhc2snKTtcbnZhciBxdWV1ZU1pY3JvdGFzayA9IHF1ZXVlTWljcm90YXNrRGVzY3JpcHRvciAmJiBxdWV1ZU1pY3JvdGFza0Rlc2NyaXB0b3IudmFsdWU7XG5cbnZhciBmbHVzaCwgaGVhZCwgbGFzdCwgbm90aWZ5LCB0b2dnbGUsIG5vZGUsIHByb21pc2UsIHRoZW47XG5cbi8vIG1vZGVybiBlbmdpbmVzIGhhdmUgcXVldWVNaWNyb3Rhc2sgbWV0aG9kXG5pZiAoIXF1ZXVlTWljcm90YXNrKSB7XG4gIGZsdXNoID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwYXJlbnQsIGZuO1xuICAgIGlmIChJU19OT0RFICYmIChwYXJlbnQgPSBwcm9jZXNzLmRvbWFpbikpIHBhcmVudC5leGl0KCk7XG4gICAgd2hpbGUgKGhlYWQpIHtcbiAgICAgIGZuID0gaGVhZC5mbjtcbiAgICAgIGhlYWQgPSBoZWFkLm5leHQ7XG4gICAgICB0cnkge1xuICAgICAgICBmbigpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKGhlYWQpIG5vdGlmeSgpO1xuICAgICAgICBlbHNlIGxhc3QgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgIH0gbGFzdCA9IHVuZGVmaW5lZDtcbiAgICBpZiAocGFyZW50KSBwYXJlbnQuZW50ZXIoKTtcbiAgfTtcblxuICAvLyBicm93c2VycyB3aXRoIE11dGF0aW9uT2JzZXJ2ZXIsIGV4Y2VwdCBpT1MgLSBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvMzM5XG4gIC8vIGFsc28gZXhjZXB0IFdlYk9TIFdlYmtpdCBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODk4XG4gIGlmICghSVNfSU9TICYmICFJU19OT0RFICYmICFJU19XRUJPU19XRUJLSVQgJiYgTXV0YXRpb25PYnNlcnZlciAmJiBkb2N1bWVudCkge1xuICAgIHRvZ2dsZSA9IHRydWU7XG4gICAgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKTtcbiAgICBuZXcgTXV0YXRpb25PYnNlcnZlcihmbHVzaCkub2JzZXJ2ZShub2RlLCB7IGNoYXJhY3RlckRhdGE6IHRydWUgfSk7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgbm9kZS5kYXRhID0gdG9nZ2xlID0gIXRvZ2dsZTtcbiAgICB9O1xuICAvLyBlbnZpcm9ubWVudHMgd2l0aCBtYXliZSBub24tY29tcGxldGVseSBjb3JyZWN0LCBidXQgZXhpc3RlbnQgUHJvbWlzZVxuICB9IGVsc2UgaWYgKCFJU19JT1NfUEVCQkxFICYmIFByb21pc2UgJiYgUHJvbWlzZS5yZXNvbHZlKSB7XG4gICAgLy8gUHJvbWlzZS5yZXNvbHZlIHdpdGhvdXQgYW4gYXJndW1lbnQgdGhyb3dzIGFuIGVycm9yIGluIExHIFdlYk9TIDJcbiAgICBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKHVuZGVmaW5lZCk7XG4gICAgLy8gd29ya2Fyb3VuZCBvZiBXZWJLaXQgfiBpT1MgU2FmYXJpIDEwLjEgYnVnXG4gICAgcHJvbWlzZS5jb25zdHJ1Y3RvciA9IFByb21pc2U7XG4gICAgdGhlbiA9IGJpbmQocHJvbWlzZS50aGVuLCBwcm9taXNlKTtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGVuKGZsdXNoKTtcbiAgICB9O1xuICAvLyBOb2RlLmpzIHdpdGhvdXQgcHJvbWlzZXNcbiAgfSBlbHNlIGlmIChJU19OT0RFKSB7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhmbHVzaCk7XG4gICAgfTtcbiAgLy8gZm9yIG90aGVyIGVudmlyb25tZW50cyAtIG1hY3JvdGFzayBiYXNlZCBvbjpcbiAgLy8gLSBzZXRJbW1lZGlhdGVcbiAgLy8gLSBNZXNzYWdlQ2hhbm5lbFxuICAvLyAtIHdpbmRvdy5wb3N0TWVzc2FnXG4gIC8vIC0gb25yZWFkeXN0YXRlY2hhbmdlXG4gIC8vIC0gc2V0VGltZW91dFxuICB9IGVsc2Uge1xuICAgIC8vIHN0cmFuZ2UgSUUgKyB3ZWJwYWNrIGRldiBzZXJ2ZXIgYnVnIC0gdXNlIC5iaW5kKGdsb2JhbClcbiAgICBtYWNyb3Rhc2sgPSBiaW5kKG1hY3JvdGFzaywgZ2xvYmFsKTtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBtYWNyb3Rhc2soZmx1c2gpO1xuICAgIH07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBxdWV1ZU1pY3JvdGFzayB8fCBmdW5jdGlvbiAoZm4pIHtcbiAgdmFyIHRhc2sgPSB7IGZuOiBmbiwgbmV4dDogdW5kZWZpbmVkIH07XG4gIGlmIChsYXN0KSBsYXN0Lm5leHQgPSB0YXNrO1xuICBpZiAoIWhlYWQpIHtcbiAgICBoZWFkID0gdGFzaztcbiAgICBub3RpZnkoKTtcbiAgfSBsYXN0ID0gdGFzaztcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgVjhfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbicpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlzeW1ib2xzIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG5tb2R1bGUuZXhwb3J0cyA9ICEhT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICB2YXIgc3ltYm9sID0gU3ltYm9sKCk7XG4gIC8vIENocm9tZSAzOCBTeW1ib2wgaGFzIGluY29ycmVjdCB0b1N0cmluZyBjb252ZXJzaW9uXG4gIC8vIGBnZXQtb3duLXByb3BlcnR5LXN5bWJvbHNgIHBvbHlmaWxsIHN5bWJvbHMgY29udmVydGVkIHRvIG9iamVjdCBhcmUgbm90IFN5bWJvbCBpbnN0YW5jZXNcbiAgcmV0dXJuICFTdHJpbmcoc3ltYm9sKSB8fCAhKE9iamVjdChzeW1ib2wpIGluc3RhbmNlb2YgU3ltYm9sKSB8fFxuICAgIC8vIENocm9tZSAzOC00MCBzeW1ib2xzIGFyZSBub3QgaW5oZXJpdGVkIGZyb20gRE9NIGNvbGxlY3Rpb25zIHByb3RvdHlwZXMgdG8gaW5zdGFuY2VzXG4gICAgIVN5bWJvbC5zaGFtICYmIFY4X1ZFUlNJT04gJiYgVjhfVkVSU0lPTiA8IDQxO1xufSk7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBpbnNwZWN0U291cmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlJyk7XG5cbnZhciBXZWFrTWFwID0gZ2xvYmFsLldlYWtNYXA7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNDYWxsYWJsZShXZWFrTWFwKSAmJiAvbmF0aXZlIGNvZGUvLnRlc3QoaW5zcGVjdFNvdXJjZShXZWFrTWFwKSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcblxudmFyIFByb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKEMpIHtcbiAgdmFyIHJlc29sdmUsIHJlamVjdDtcbiAgdGhpcy5wcm9taXNlID0gbmV3IEMoZnVuY3Rpb24gKCQkcmVzb2x2ZSwgJCRyZWplY3QpIHtcbiAgICBpZiAocmVzb2x2ZSAhPT0gdW5kZWZpbmVkIHx8IHJlamVjdCAhPT0gdW5kZWZpbmVkKSB0aHJvdyBUeXBlRXJyb3IoJ0JhZCBQcm9taXNlIGNvbnN0cnVjdG9yJyk7XG4gICAgcmVzb2x2ZSA9ICQkcmVzb2x2ZTtcbiAgICByZWplY3QgPSAkJHJlamVjdDtcbiAgfSk7XG4gIHRoaXMucmVzb2x2ZSA9IGFDYWxsYWJsZShyZXNvbHZlKTtcbiAgdGhpcy5yZWplY3QgPSBhQ2FsbGFibGUocmVqZWN0KTtcbn07XG5cbi8vIGBOZXdQcm9taXNlQ2FwYWJpbGl0eWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW5ld3Byb21pc2VjYXBhYmlsaXR5XG5tb2R1bGUuZXhwb3J0cy5mID0gZnVuY3Rpb24gKEMpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlQ2FwYWJpbGl0eShDKTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b1Byb3BlcnR5S2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByb3BlcnR5LWtleScpO1xuXG52YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZGVmaW5lcHJvcGVydHkgLS0gc2FmZVxudmFyICRkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxuLy8gYE9iamVjdC5kZWZpbmVQcm9wZXJ0eWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5kZWZpbmVwcm9wZXJ0eVxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgPyAkZGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gJGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1wcm9wZXJ0eS1pcy1lbnVtZXJhYmxlJyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcm9wZXJ0eS1rZXknKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2llOC1kb20tZGVmaW5lJyk7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuLy8gYE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yXG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyA/ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICBPID0gdG9JbmRleGVkT2JqZWN0KE8pO1xuICBQID0gdG9Qcm9wZXJ0eUtleShQKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmIChoYXNPd24oTywgUCkpIHJldHVybiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoIWNhbGwocHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUuZiwgTywgUCksIE9bUF0pO1xufTtcbiIsInZhciBpbnRlcm5hbE9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzJyk7XG5cbnZhciBoaWRkZW5LZXlzID0gZW51bUJ1Z0tleXMuY29uY2F0KCdsZW5ndGgnLCAncHJvdG90eXBlJyk7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eW5hbWVzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5bmFtZXMgLS0gc2FmZVxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhPKSB7XG4gIHJldHVybiBpbnRlcm5hbE9iamVjdEtleXMoTywgaGlkZGVuS2V5cyk7XG59O1xuIiwiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eXN5bWJvbHMgLS0gc2FmZVxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbiIsInZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSB1bmN1cnJ5VGhpcyh7fS5pc1Byb3RvdHlwZU9mKTtcbiIsInZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIGluZGV4T2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMnKS5pbmRleE9mO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcblxudmFyIHB1c2ggPSB1bmN1cnJ5VGhpcyhbXS5wdXNoKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgIWhhc093bihoaWRkZW5LZXlzLCBrZXkpICYmIGhhc093bihPLCBrZXkpICYmIHB1c2gocmVzdWx0LCBrZXkpO1xuICAvLyBEb24ndCBlbnVtIGJ1ZyAmIGhpZGRlbiBrZXlzXG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSBpZiAoaGFzT3duKE8sIGtleSA9IG5hbWVzW2krK10pKSB7XG4gICAgfmluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHB1c2gocmVzdWx0LCBrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICRwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIE5hc2hvcm4gfiBKREs4IGJ1Z1xudmFyIE5BU0hPUk5fQlVHID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yICYmICEkcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbCh7IDE6IDIgfSwgMSk7XG5cbi8vIGBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eWlzZW51bWVyYWJsZVxuZXhwb3J0cy5mID0gTkFTSE9STl9CVUcgPyBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShWKSB7XG4gIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMsIFYpO1xuICByZXR1cm4gISFkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZTtcbn0gOiAkcHJvcGVydHlJc0VudW1lcmFibGU7XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAtLSBzYWZlICovXG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgYVBvc3NpYmxlUHJvdG90eXBlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtcG9zc2libGUtcHJvdG90eXBlJyk7XG5cbi8vIGBPYmplY3Quc2V0UHJvdG90eXBlT2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3Quc2V0cHJvdG90eXBlb2Zcbi8vIFdvcmtzIHdpdGggX19wcm90b19fIG9ubHkuIE9sZCB2OCBjYW4ndCB3b3JrIHdpdGggbnVsbCBwcm90byBvYmplY3RzLlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1zZXRwcm90b3R5cGVvZiAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoJ19fcHJvdG9fXycgaW4ge30gPyBmdW5jdGlvbiAoKSB7XG4gIHZhciBDT1JSRUNUX1NFVFRFUiA9IGZhbHNlO1xuICB2YXIgdGVzdCA9IHt9O1xuICB2YXIgc2V0dGVyO1xuICB0cnkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbiAgICBzZXR0ZXIgPSB1bmN1cnJ5VGhpcyhPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdC5wcm90b3R5cGUsICdfX3Byb3RvX18nKS5zZXQpO1xuICAgIHNldHRlcih0ZXN0LCBbXSk7XG4gICAgQ09SUkVDVF9TRVRURVIgPSB0ZXN0IGluc3RhbmNlb2YgQXJyYXk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgcmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKE8sIHByb3RvKSB7XG4gICAgYW5PYmplY3QoTyk7XG4gICAgYVBvc3NpYmxlUHJvdG90eXBlKHByb3RvKTtcbiAgICBpZiAoQ09SUkVDVF9TRVRURVIpIHNldHRlcihPLCBwcm90byk7XG4gICAgZWxzZSBPLl9fcHJvdG9fXyA9IHByb3RvO1xuICAgIHJldHVybiBPO1xuICB9O1xufSgpIDogdW5kZWZpbmVkKTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgY2FsbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1jYWxsJyk7XG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1jYWxsYWJsZScpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG52YXIgVHlwZUVycm9yID0gZ2xvYmFsLlR5cGVFcnJvcjtcblxuLy8gYE9yZGluYXJ5VG9QcmltaXRpdmVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vcmRpbmFyeXRvcHJpbWl0aXZlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgcHJlZikge1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKHByZWYgPT09ICdzdHJpbmcnICYmIGlzQ2FsbGFibGUoZm4gPSBpbnB1dC50b1N0cmluZykgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmIChpc0NhbGxhYmxlKGZuID0gaW5wdXQudmFsdWVPZikgJiYgIWlzT2JqZWN0KHZhbCA9IGNhbGwoZm4sIGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmIChwcmVmICE9PSAnc3RyaW5nJyAmJiBpc0NhbGxhYmxlKGZuID0gaW5wdXQudG9TdHJpbmcpICYmICFpc09iamVjdCh2YWwgPSBjYWxsKGZuLCBpbnB1dCkpKSByZXR1cm4gdmFsO1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59O1xuIiwidmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcycpO1xudmFyIGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG5cbnZhciBjb25jYXQgPSB1bmN1cnJ5VGhpcyhbXS5jb25jYXQpO1xuXG4vLyBhbGwgb2JqZWN0IGtleXMsIGluY2x1ZGVzIG5vbi1lbnVtZXJhYmxlIGFuZCBzeW1ib2xzXG5tb2R1bGUuZXhwb3J0cyA9IGdldEJ1aWx0SW4oJ1JlZmxlY3QnLCAnb3duS2V5cycpIHx8IGZ1bmN0aW9uIG93bktleXMoaXQpIHtcbiAgdmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlLmYoYW5PYmplY3QoaXQpKTtcbiAgdmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZS5mO1xuICByZXR1cm4gZ2V0T3duUHJvcGVydHlTeW1ib2xzID8gY29uY2F0KGtleXMsIGdldE93blByb3BlcnR5U3ltYm9scyhpdCkpIDoga2V5cztcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHsgZXJyb3I6IGZhbHNlLCB2YWx1ZTogZXhlYygpIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHsgZXJyb3I6IHRydWUsIHZhbHVlOiBlcnJvciB9O1xuICB9XG59O1xuIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQywgeCkge1xuICBhbk9iamVjdChDKTtcbiAgaWYgKGlzT2JqZWN0KHgpICYmIHguY29uc3RydWN0b3IgPT09IEMpIHJldHVybiB4O1xuICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eS5mKEMpO1xuICB2YXIgcmVzb2x2ZSA9IHByb21pc2VDYXBhYmlsaXR5LnJlc29sdmU7XG4gIHJlc29sdmUoeCk7XG4gIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5wcm9taXNlO1xufTtcbiIsInZhciBRdWV1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5oZWFkID0gbnVsbDtcbiAgdGhpcy50YWlsID0gbnVsbDtcbn07XG5cblF1ZXVlLnByb3RvdHlwZSA9IHtcbiAgYWRkOiBmdW5jdGlvbiAoaXRlbSkge1xuICAgIHZhciBlbnRyeSA9IHsgaXRlbTogaXRlbSwgbmV4dDogbnVsbCB9O1xuICAgIGlmICh0aGlzLmhlYWQpIHRoaXMudGFpbC5uZXh0ID0gZW50cnk7XG4gICAgZWxzZSB0aGlzLmhlYWQgPSBlbnRyeTtcbiAgICB0aGlzLnRhaWwgPSBlbnRyeTtcbiAgfSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGVudHJ5ID0gdGhpcy5oZWFkO1xuICAgIGlmIChlbnRyeSkge1xuICAgICAgdGhpcy5oZWFkID0gZW50cnkubmV4dDtcbiAgICAgIGlmICh0aGlzLnRhaWwgPT09IGVudHJ5KSB0aGlzLnRhaWwgPSBudWxsO1xuICAgICAgcmV0dXJuIGVudHJ5Lml0ZW07XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFF1ZXVlO1xuIiwidmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhcmdldCwgc3JjLCBvcHRpb25zKSB7XG4gIGZvciAodmFyIGtleSBpbiBzcmMpIHJlZGVmaW5lKHRhcmdldCwga2V5LCBzcmNba2V5XSwgb3B0aW9ucyk7XG4gIHJldHVybiB0YXJnZXQ7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgc2V0R2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1nbG9iYWwnKTtcbnZhciBpbnNwZWN0U291cmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luc3BlY3Qtc291cmNlJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xudmFyIENPTkZJR1VSQUJMRV9GVU5DVElPTl9OQU1FID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLW5hbWUnKS5DT05GSUdVUkFCTEU7XG5cbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXQ7XG52YXIgZW5mb3JjZUludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmVuZm9yY2U7XG52YXIgVEVNUExBVEUgPSBTdHJpbmcoU3RyaW5nKS5zcGxpdCgnU3RyaW5nJyk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBrZXksIHZhbHVlLCBvcHRpb25zKSB7XG4gIHZhciB1bnNhZmUgPSBvcHRpb25zID8gISFvcHRpb25zLnVuc2FmZSA6IGZhbHNlO1xuICB2YXIgc2ltcGxlID0gb3B0aW9ucyA/ICEhb3B0aW9ucy5lbnVtZXJhYmxlIDogZmFsc2U7XG4gIHZhciBub1RhcmdldEdldCA9IG9wdGlvbnMgPyAhIW9wdGlvbnMubm9UYXJnZXRHZXQgOiBmYWxzZTtcbiAgdmFyIG5hbWUgPSBvcHRpb25zICYmIG9wdGlvbnMubmFtZSAhPT0gdW5kZWZpbmVkID8gb3B0aW9ucy5uYW1lIDoga2V5O1xuICB2YXIgc3RhdGU7XG4gIGlmIChpc0NhbGxhYmxlKHZhbHVlKSkge1xuICAgIGlmIChTdHJpbmcobmFtZSkuc2xpY2UoMCwgNykgPT09ICdTeW1ib2woJykge1xuICAgICAgbmFtZSA9ICdbJyArIFN0cmluZyhuYW1lKS5yZXBsYWNlKC9eU3ltYm9sXFwoKFteKV0qKVxcKS8sICckMScpICsgJ10nO1xuICAgIH1cbiAgICBpZiAoIWhhc093bih2YWx1ZSwgJ25hbWUnKSB8fCAoQ09ORklHVVJBQkxFX0ZVTkNUSU9OX05BTUUgJiYgdmFsdWUubmFtZSAhPT0gbmFtZSkpIHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSh2YWx1ZSwgJ25hbWUnLCBuYW1lKTtcbiAgICB9XG4gICAgc3RhdGUgPSBlbmZvcmNlSW50ZXJuYWxTdGF0ZSh2YWx1ZSk7XG4gICAgaWYgKCFzdGF0ZS5zb3VyY2UpIHtcbiAgICAgIHN0YXRlLnNvdXJjZSA9IFRFTVBMQVRFLmpvaW4odHlwZW9mIG5hbWUgPT0gJ3N0cmluZycgPyBuYW1lIDogJycpO1xuICAgIH1cbiAgfVxuICBpZiAoTyA9PT0gZ2xvYmFsKSB7XG4gICAgaWYgKHNpbXBsZSkgT1trZXldID0gdmFsdWU7XG4gICAgZWxzZSBzZXRHbG9iYWwoa2V5LCB2YWx1ZSk7XG4gICAgcmV0dXJuO1xuICB9IGVsc2UgaWYgKCF1bnNhZmUpIHtcbiAgICBkZWxldGUgT1trZXldO1xuICB9IGVsc2UgaWYgKCFub1RhcmdldEdldCAmJiBPW2tleV0pIHtcbiAgICBzaW1wbGUgPSB0cnVlO1xuICB9XG4gIGlmIChzaW1wbGUpIE9ba2V5XSA9IHZhbHVlO1xuICBlbHNlIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShPLCBrZXksIHZhbHVlKTtcbi8vIGFkZCBmYWtlIEZ1bmN0aW9uI3RvU3RyaW5nIGZvciBjb3JyZWN0IHdvcmsgd3JhcHBlZCBtZXRob2RzIC8gY29uc3RydWN0b3JzIHdpdGggbWV0aG9kcyBsaWtlIExvRGFzaCBpc05hdGl2ZVxufSkoRnVuY3Rpb24ucHJvdG90eXBlLCAndG9TdHJpbmcnLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuIGlzQ2FsbGFibGUodGhpcykgJiYgZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5zb3VyY2UgfHwgaW5zcGVjdFNvdXJjZSh0aGlzKTtcbn0pO1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcblxudmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG5cbi8vIGBSZXF1aXJlT2JqZWN0Q29lcmNpYmxlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVxdWlyZW9iamVjdGNvZXJjaWJsZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gXCIgKyBpdCk7XG4gIHJldHVybiBpdDtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICB0cnkge1xuICAgIGRlZmluZVByb3BlcnR5KGdsb2JhbCwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBnbG9iYWxba2V5XSA9IHZhbHVlO1xuICB9IHJldHVybiB2YWx1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2V0QnVpbHRJbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtYnVpbHQtaW4nKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcblxudmFyIFNQRUNJRVMgPSB3ZWxsS25vd25TeW1ib2woJ3NwZWNpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ09OU1RSVUNUT1JfTkFNRSkge1xuICB2YXIgQ29uc3RydWN0b3IgPSBnZXRCdWlsdEluKENPTlNUUlVDVE9SX05BTUUpO1xuICB2YXIgZGVmaW5lUHJvcGVydHkgPSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mO1xuXG4gIGlmIChERVNDUklQVE9SUyAmJiBDb25zdHJ1Y3RvciAmJiAhQ29uc3RydWN0b3JbU1BFQ0lFU10pIHtcbiAgICBkZWZpbmVQcm9wZXJ0eShDb25zdHJ1Y3RvciwgU1BFQ0lFUywge1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9XG4gICAgfSk7XG4gIH1cbn07XG4iLCJ2YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpLmY7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFRPX1NUUklOR19UQUcgPSB3ZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhcmdldCwgVEFHLCBTVEFUSUMpIHtcbiAgaWYgKHRhcmdldCAmJiAhU1RBVElDKSB0YXJnZXQgPSB0YXJnZXQucHJvdG90eXBlO1xuICBpZiAodGFyZ2V0ICYmICFoYXNPd24odGFyZ2V0LCBUT19TVFJJTkdfVEFHKSkge1xuICAgIGRlZmluZVByb3BlcnR5KHRhcmdldCwgVE9fU1RSSU5HX1RBRywgeyBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiBUQUcgfSk7XG4gIH1cbn07XG4iLCJ2YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcblxudmFyIGtleXMgPSBzaGFyZWQoJ2tleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBrZXlzW2tleV0gfHwgKGtleXNba2V5XSA9IHVpZChrZXkpKTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHNldEdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtZ2xvYmFsJyk7XG5cbnZhciBTSEFSRUQgPSAnX19jb3JlLWpzX3NoYXJlZF9fJztcbnZhciBzdG9yZSA9IGdsb2JhbFtTSEFSRURdIHx8IHNldEdsb2JhbChTSEFSRUQsIHt9KTtcblxubW9kdWxlLmV4cG9ydHMgPSBzdG9yZTtcbiIsInZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBzdG9yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQtc3RvcmUnKTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIHN0b3JlW2tleV0gfHwgKHN0b3JlW2tleV0gPSB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiB7fSk7XG59KSgndmVyc2lvbnMnLCBbXSkucHVzaCh7XG4gIHZlcnNpb246ICczLjIwLjEnLFxuICBtb2RlOiBJU19QVVJFID8gJ3B1cmUnIDogJ2dsb2JhbCcsXG4gIGNvcHlyaWdodDogJ8KpIDIwMjEgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknXG59KTtcbiIsInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBhQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1jb25zdHJ1Y3RvcicpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xuXG4vLyBgU3BlY2llc0NvbnN0cnVjdG9yYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3BlY2llc2NvbnN0cnVjdG9yXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBkZWZhdWx0Q29uc3RydWN0b3IpIHtcbiAgdmFyIEMgPSBhbk9iamVjdChPKS5jb25zdHJ1Y3RvcjtcbiAgdmFyIFM7XG4gIHJldHVybiBDID09PSB1bmRlZmluZWQgfHwgKFMgPSBhbk9iamVjdChDKVtTUEVDSUVTXSkgPT0gdW5kZWZpbmVkID8gZGVmYXVsdENvbnN0cnVjdG9yIDogYUNvbnN0cnVjdG9yKFMpO1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgYXBwbHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYXBwbHknKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtY2FsbGFibGUnKTtcbnZhciBoYXNPd24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzLW93bi1wcm9wZXJ0eScpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgaHRtbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9odG1sJyk7XG52YXIgYXJyYXlTbGljZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1zbGljZScpO1xudmFyIGNyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQnKTtcbnZhciBJU19JT1MgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLWlvcycpO1xudmFyIElTX05PREUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLW5vZGUnKTtcblxudmFyIHNldCA9IGdsb2JhbC5zZXRJbW1lZGlhdGU7XG52YXIgY2xlYXIgPSBnbG9iYWwuY2xlYXJJbW1lZGlhdGU7XG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIERpc3BhdGNoID0gZ2xvYmFsLkRpc3BhdGNoO1xudmFyIEZ1bmN0aW9uID0gZ2xvYmFsLkZ1bmN0aW9uO1xudmFyIE1lc3NhZ2VDaGFubmVsID0gZ2xvYmFsLk1lc3NhZ2VDaGFubmVsO1xudmFyIFN0cmluZyA9IGdsb2JhbC5TdHJpbmc7XG52YXIgY291bnRlciA9IDA7XG52YXIgcXVldWUgPSB7fTtcbnZhciBPTlJFQURZU1RBVEVDSEFOR0UgPSAnb25yZWFkeXN0YXRlY2hhbmdlJztcbnZhciBsb2NhdGlvbiwgZGVmZXIsIGNoYW5uZWwsIHBvcnQ7XG5cbnRyeSB7XG4gIC8vIERlbm8gdGhyb3dzIGEgUmVmZXJlbmNlRXJyb3Igb24gYGxvY2F0aW9uYCBhY2Nlc3Mgd2l0aG91dCBgLS1sb2NhdGlvbmAgZmxhZ1xuICBsb2NhdGlvbiA9IGdsb2JhbC5sb2NhdGlvbjtcbn0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cblxudmFyIHJ1biA9IGZ1bmN0aW9uIChpZCkge1xuICBpZiAoaGFzT3duKHF1ZXVlLCBpZCkpIHtcbiAgICB2YXIgZm4gPSBxdWV1ZVtpZF07XG4gICAgZGVsZXRlIHF1ZXVlW2lkXTtcbiAgICBmbigpO1xuICB9XG59O1xuXG52YXIgcnVubmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcnVuKGlkKTtcbiAgfTtcbn07XG5cbnZhciBsaXN0ZW5lciA9IGZ1bmN0aW9uIChldmVudCkge1xuICBydW4oZXZlbnQuZGF0YSk7XG59O1xuXG52YXIgcG9zdCA9IGZ1bmN0aW9uIChpZCkge1xuICAvLyBvbGQgZW5naW5lcyBoYXZlIG5vdCBsb2NhdGlvbi5vcmlnaW5cbiAgZ2xvYmFsLnBvc3RNZXNzYWdlKFN0cmluZyhpZCksIGxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIGxvY2F0aW9uLmhvc3QpO1xufTtcblxuLy8gTm9kZS5qcyAwLjkrICYgSUUxMCsgaGFzIHNldEltbWVkaWF0ZSwgb3RoZXJ3aXNlOlxuaWYgKCFzZXQgfHwgIWNsZWFyKSB7XG4gIHNldCA9IGZ1bmN0aW9uIHNldEltbWVkaWF0ZShmbikge1xuICAgIHZhciBhcmdzID0gYXJyYXlTbGljZShhcmd1bWVudHMsIDEpO1xuICAgIHF1ZXVlWysrY291bnRlcl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICBhcHBseShpc0NhbGxhYmxlKGZuKSA/IGZuIDogRnVuY3Rpb24oZm4pLCB1bmRlZmluZWQsIGFyZ3MpO1xuICAgIH07XG4gICAgZGVmZXIoY291bnRlcik7XG4gICAgcmV0dXJuIGNvdW50ZXI7XG4gIH07XG4gIGNsZWFyID0gZnVuY3Rpb24gY2xlYXJJbW1lZGlhdGUoaWQpIHtcbiAgICBkZWxldGUgcXVldWVbaWRdO1xuICB9O1xuICAvLyBOb2RlLmpzIDAuOC1cbiAgaWYgKElTX05PREUpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhydW5uZXIoaWQpKTtcbiAgICB9O1xuICAvLyBTcGhlcmUgKEpTIGdhbWUgZW5naW5lKSBEaXNwYXRjaCBBUElcbiAgfSBlbHNlIGlmIChEaXNwYXRjaCAmJiBEaXNwYXRjaC5ub3cpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgRGlzcGF0Y2gubm93KHJ1bm5lcihpZCkpO1xuICAgIH07XG4gIC8vIEJyb3dzZXJzIHdpdGggTWVzc2FnZUNoYW5uZWwsIGluY2x1ZGVzIFdlYldvcmtlcnNcbiAgLy8gZXhjZXB0IGlPUyAtIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy82MjRcbiAgfSBlbHNlIGlmIChNZXNzYWdlQ2hhbm5lbCAmJiAhSVNfSU9TKSB7XG4gICAgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpO1xuICAgIHBvcnQgPSBjaGFubmVsLnBvcnQyO1xuICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gbGlzdGVuZXI7XG4gICAgZGVmZXIgPSBiaW5kKHBvcnQucG9zdE1lc3NhZ2UsIHBvcnQpO1xuICAvLyBCcm93c2VycyB3aXRoIHBvc3RNZXNzYWdlLCBza2lwIFdlYldvcmtlcnNcbiAgLy8gSUU4IGhhcyBwb3N0TWVzc2FnZSwgYnV0IGl0J3Mgc3luYyAmIHR5cGVvZiBpdHMgcG9zdE1lc3NhZ2UgaXMgJ29iamVjdCdcbiAgfSBlbHNlIGlmIChcbiAgICBnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lciAmJlxuICAgIGlzQ2FsbGFibGUoZ2xvYmFsLnBvc3RNZXNzYWdlKSAmJlxuICAgICFnbG9iYWwuaW1wb3J0U2NyaXB0cyAmJlxuICAgIGxvY2F0aW9uICYmIGxvY2F0aW9uLnByb3RvY29sICE9PSAnZmlsZTonICYmXG4gICAgIWZhaWxzKHBvc3QpXG4gICkge1xuICAgIGRlZmVyID0gcG9zdDtcbiAgICBnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGxpc3RlbmVyLCBmYWxzZSk7XG4gIC8vIElFOC1cbiAgfSBlbHNlIGlmIChPTlJFQURZU1RBVEVDSEFOR0UgaW4gY3JlYXRlRWxlbWVudCgnc2NyaXB0JykpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgaHRtbC5hcHBlbmRDaGlsZChjcmVhdGVFbGVtZW50KCdzY3JpcHQnKSlbT05SRUFEWVNUQVRFQ0hBTkdFXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaHRtbC5yZW1vdmVDaGlsZCh0aGlzKTtcbiAgICAgICAgcnVuKGlkKTtcbiAgICAgIH07XG4gICAgfTtcbiAgLy8gUmVzdCBvbGQgYnJvd3NlcnNcbiAgfSBlbHNlIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgc2V0VGltZW91dChydW5uZXIoaWQpLCAwKTtcbiAgICB9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldCxcbiAgY2xlYXI6IGNsZWFyXG59O1xuIiwidmFyIHRvSW50ZWdlck9ySW5maW5pdHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlci1vci1pbmZpbml0eScpO1xuXG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIEhlbHBlciBmb3IgYSBwb3B1bGFyIHJlcGVhdGluZyBjYXNlIG9mIHRoZSBzcGVjOlxuLy8gTGV0IGludGVnZXIgYmUgPyBUb0ludGVnZXIoaW5kZXgpLlxuLy8gSWYgaW50ZWdlciA8IDAsIGxldCByZXN1bHQgYmUgbWF4KChsZW5ndGggKyBpbnRlZ2VyKSwgMCk7IGVsc2UgbGV0IHJlc3VsdCBiZSBtaW4oaW50ZWdlciwgbGVuZ3RoKS5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGluZGV4LCBsZW5ndGgpIHtcbiAgdmFyIGludGVnZXIgPSB0b0ludGVnZXJPckluZmluaXR5KGluZGV4KTtcbiAgcmV0dXJuIGludGVnZXIgPCAwID8gbWF4KGludGVnZXIgKyBsZW5ndGgsIDApIDogbWluKGludGVnZXIsIGxlbmd0aCk7XG59O1xuIiwiLy8gdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0Jyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIEluZGV4ZWRPYmplY3QocmVxdWlyZU9iamVjdENvZXJjaWJsZShpdCkpO1xufTtcbiIsInZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGZsb29yID0gTWF0aC5mbG9vcjtcblxuLy8gYFRvSW50ZWdlck9ySW5maW5pdHlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2ludGVnZXJvcmluZmluaXR5XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB2YXIgbnVtYmVyID0gK2FyZ3VtZW50O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlIC0tIHNhZmVcbiAgcmV0dXJuIG51bWJlciAhPT0gbnVtYmVyIHx8IG51bWJlciA9PT0gMCA/IDAgOiAobnVtYmVyID4gMCA/IGZsb29yIDogY2VpbCkobnVtYmVyKTtcbn07XG4iLCJ2YXIgdG9JbnRlZ2VyT3JJbmZpbml0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyLW9yLWluZmluaXR5Jyk7XG5cbnZhciBtaW4gPSBNYXRoLm1pbjtcblxuLy8gYFRvTGVuZ3RoYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9sZW5ndGhcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiBhcmd1bWVudCA+IDAgPyBtaW4odG9JbnRlZ2VyT3JJbmZpbml0eShhcmd1bWVudCksIDB4MUZGRkZGRkZGRkZGRkYpIDogMDsgLy8gMiAqKiA1MyAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcblxudmFyIE9iamVjdCA9IGdsb2JhbC5PYmplY3Q7XG5cbi8vIGBUb09iamVjdGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvb2JqZWN0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpKTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXN5bWJvbCcpO1xudmFyIGdldE1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtbWV0aG9kJyk7XG52YXIgb3JkaW5hcnlUb1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vcmRpbmFyeS10by1wcmltaXRpdmUnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFR5cGVFcnJvciA9IGdsb2JhbC5UeXBlRXJyb3I7XG52YXIgVE9fUFJJTUlUSVZFID0gd2VsbEtub3duU3ltYm9sKCd0b1ByaW1pdGl2ZScpO1xuXG4vLyBgVG9QcmltaXRpdmVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b3ByaW1pdGl2ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5wdXQsIHByZWYpIHtcbiAgaWYgKCFpc09iamVjdChpbnB1dCkgfHwgaXNTeW1ib2woaW5wdXQpKSByZXR1cm4gaW5wdXQ7XG4gIHZhciBleG90aWNUb1ByaW0gPSBnZXRNZXRob2QoaW5wdXQsIFRPX1BSSU1JVElWRSk7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChleG90aWNUb1ByaW0pIHtcbiAgICBpZiAocHJlZiA9PT0gdW5kZWZpbmVkKSBwcmVmID0gJ2RlZmF1bHQnO1xuICAgIHJlc3VsdCA9IGNhbGwoZXhvdGljVG9QcmltLCBpbnB1dCwgcHJlZik7XG4gICAgaWYgKCFpc09iamVjdChyZXN1bHQpIHx8IGlzU3ltYm9sKHJlc3VsdCkpIHJldHVybiByZXN1bHQ7XG4gICAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xuICB9XG4gIGlmIChwcmVmID09PSB1bmRlZmluZWQpIHByZWYgPSAnbnVtYmVyJztcbiAgcmV0dXJuIG9yZGluYXJ5VG9QcmltaXRpdmUoaW5wdXQsIHByZWYpO1xufTtcbiIsInZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcmltaXRpdmUnKTtcbnZhciBpc1N5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1zeW1ib2wnKTtcblxuLy8gYFRvUHJvcGVydHlLZXlgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b3Byb3BlcnR5a2V5XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB2YXIga2V5ID0gdG9QcmltaXRpdmUoYXJndW1lbnQsICdzdHJpbmcnKTtcbiAgcmV0dXJuIGlzU3ltYm9sKGtleSkgPyBrZXkgOiBrZXkgKyAnJztcbn07XG4iLCJ2YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xudmFyIHRlc3QgPSB7fTtcblxudGVzdFtUT19TVFJJTkdfVEFHXSA9ICd6JztcblxubW9kdWxlLmV4cG9ydHMgPSBTdHJpbmcodGVzdCkgPT09ICdbb2JqZWN0IHpdJztcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbnZhciBTdHJpbmcgPSBnbG9iYWwuU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICB0cnkge1xuICAgIHJldHVybiBTdHJpbmcoYXJndW1lbnQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiAnT2JqZWN0JztcbiAgfVxufTtcbiIsInZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcblxudmFyIGlkID0gMDtcbnZhciBwb3N0Zml4ID0gTWF0aC5yYW5kb20oKTtcbnZhciB0b1N0cmluZyA9IHVuY3VycnlUaGlzKDEuMC50b1N0cmluZyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnICsgKGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXkpICsgJylfJyArIHRvU3RyaW5nKCsraWQgKyBwb3N0Zml4LCAzNik7XG59O1xuIiwiLyogZXNsaW50LWRpc2FibGUgZXMvbm8tc3ltYm9sIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nICovXG52YXIgTkFUSVZFX1NZTUJPTCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uYXRpdmUtc3ltYm9sJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gTkFUSVZFX1NZTUJPTFxuICAmJiAhU3ltYm9sLnNoYW1cbiAgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJztcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgc2hhcmVkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZCcpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMtb3duLXByb3BlcnR5Jyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VpZCcpO1xudmFyIE5BVElWRV9TWU1CT0wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmF0aXZlLXN5bWJvbCcpO1xudmFyIFVTRV9TWU1CT0xfQVNfVUlEID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkJyk7XG5cbnZhciBXZWxsS25vd25TeW1ib2xzU3RvcmUgPSBzaGFyZWQoJ3drcycpO1xudmFyIFN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7XG52YXIgc3ltYm9sRm9yID0gU3ltYm9sICYmIFN5bWJvbFsnZm9yJ107XG52YXIgY3JlYXRlV2VsbEtub3duU3ltYm9sID0gVVNFX1NZTUJPTF9BU19VSUQgPyBTeW1ib2wgOiBTeW1ib2wgJiYgU3ltYm9sLndpdGhvdXRTZXR0ZXIgfHwgdWlkO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIGlmICghaGFzT3duKFdlbGxLbm93blN5bWJvbHNTdG9yZSwgbmFtZSkgfHwgIShOQVRJVkVfU1lNQk9MIHx8IHR5cGVvZiBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV0gPT0gJ3N0cmluZycpKSB7XG4gICAgdmFyIGRlc2NyaXB0aW9uID0gJ1N5bWJvbC4nICsgbmFtZTtcbiAgICBpZiAoTkFUSVZFX1NZTUJPTCAmJiBoYXNPd24oU3ltYm9sLCBuYW1lKSkge1xuICAgICAgV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdID0gU3ltYm9sW25hbWVdO1xuICAgIH0gZWxzZSBpZiAoVVNFX1NZTUJPTF9BU19VSUQgJiYgc3ltYm9sRm9yKSB7XG4gICAgICBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV0gPSBzeW1ib2xGb3IoZGVzY3JpcHRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV0gPSBjcmVhdGVXZWxsS25vd25TeW1ib2woZGVzY3JpcHRpb24pO1xuICAgIH1cbiAgfSByZXR1cm4gV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGNhbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tY2FsbCcpO1xudmFyIE5hdGl2ZVByb21pc2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmF0aXZlLXByb21pc2UtY29uc3RydWN0b3InKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIHJlZGVmaW5lQWxsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lLWFsbCcpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBzZXRTcGVjaWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1zcGVjaWVzJyk7XG52YXIgYUNhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtY2FsbGFibGUnKTtcbnZhciBpc0NhbGxhYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWNhbGxhYmxlJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgYW5JbnN0YW5jZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1pbnN0YW5jZScpO1xudmFyIGluc3BlY3RTb3VyY2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5zcGVjdC1zb3VyY2UnKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcbnZhciBjaGVja0NvcnJlY3RuZXNzT2ZJdGVyYXRpb24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2hlY2stY29ycmVjdG5lc3Mtb2YtaXRlcmF0aW9uJyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciB0YXNrID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Rhc2snKS5zZXQ7XG52YXIgbWljcm90YXNrID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL21pY3JvdGFzaycpO1xudmFyIHByb21pc2VSZXNvbHZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Byb21pc2UtcmVzb2x2ZScpO1xudmFyIGhvc3RSZXBvcnRFcnJvcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaG9zdC1yZXBvcnQtZXJyb3JzJyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcGVyZm9ybScpO1xudmFyIFF1ZXVlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3F1ZXVlJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xudmFyIGlzRm9yY2VkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWZvcmNlZCcpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIElTX0JST1dTRVIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLWJyb3dzZXInKTtcbnZhciBJU19OT0RFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1ub2RlJyk7XG52YXIgVjhfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbicpO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xudmFyIFBST01JU0UgPSAnUHJvbWlzZSc7XG5cbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXR0ZXJGb3IoUFJPTUlTRSk7XG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xudmFyIGdldEludGVybmFsUHJvbWlzZVN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXR0ZXJGb3IoUFJPTUlTRSk7XG52YXIgTmF0aXZlUHJvbWlzZVByb3RvdHlwZSA9IE5hdGl2ZVByb21pc2UgJiYgTmF0aXZlUHJvbWlzZS5wcm90b3R5cGU7XG52YXIgUHJvbWlzZUNvbnN0cnVjdG9yID0gTmF0aXZlUHJvbWlzZTtcbnZhciBQcm9taXNlUHJvdG90eXBlID0gTmF0aXZlUHJvbWlzZVByb3RvdHlwZTtcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xudmFyIGRvY3VtZW50ID0gZ2xvYmFsLmRvY3VtZW50O1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmY7XG52YXIgbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHk7XG5cbnZhciBESVNQQVRDSF9FVkVOVCA9ICEhKGRvY3VtZW50ICYmIGRvY3VtZW50LmNyZWF0ZUV2ZW50ICYmIGdsb2JhbC5kaXNwYXRjaEV2ZW50KTtcbnZhciBOQVRJVkVfUkVKRUNUSU9OX0VWRU5UID0gaXNDYWxsYWJsZShnbG9iYWwuUHJvbWlzZVJlamVjdGlvbkV2ZW50KTtcbnZhciBVTkhBTkRMRURfUkVKRUNUSU9OID0gJ3VuaGFuZGxlZHJlamVjdGlvbic7XG52YXIgUkVKRUNUSU9OX0hBTkRMRUQgPSAncmVqZWN0aW9uaGFuZGxlZCc7XG52YXIgUEVORElORyA9IDA7XG52YXIgRlVMRklMTEVEID0gMTtcbnZhciBSRUpFQ1RFRCA9IDI7XG52YXIgSEFORExFRCA9IDE7XG52YXIgVU5IQU5ETEVEID0gMjtcbnZhciBTVUJDTEFTU0lORyA9IGZhbHNlO1xuXG52YXIgSW50ZXJuYWwsIE93blByb21pc2VDYXBhYmlsaXR5LCBQcm9taXNlV3JhcHBlciwgbmF0aXZlVGhlbjtcblxudmFyIEZPUkNFRCA9IGlzRm9yY2VkKFBST01JU0UsIGZ1bmN0aW9uICgpIHtcbiAgdmFyIFBST01JU0VfQ09OU1RSVUNUT1JfU09VUkNFID0gaW5zcGVjdFNvdXJjZShQcm9taXNlQ29uc3RydWN0b3IpO1xuICB2YXIgR0xPQkFMX0NPUkVfSlNfUFJPTUlTRSA9IFBST01JU0VfQ09OU1RSVUNUT1JfU09VUkNFICE9PSBTdHJpbmcoUHJvbWlzZUNvbnN0cnVjdG9yKTtcbiAgLy8gVjggNi42IChOb2RlIDEwIGFuZCBDaHJvbWUgNjYpIGhhdmUgYSBidWcgd2l0aCByZXNvbHZpbmcgY3VzdG9tIHRoZW5hYmxlc1xuICAvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD04MzA1NjVcbiAgLy8gV2UgY2FuJ3QgZGV0ZWN0IGl0IHN5bmNocm9ub3VzbHksIHNvIGp1c3QgY2hlY2sgdmVyc2lvbnNcbiAgaWYgKCFHTE9CQUxfQ09SRV9KU19QUk9NSVNFICYmIFY4X1ZFUlNJT04gPT09IDY2KSByZXR1cm4gdHJ1ZTtcbiAgLy8gV2UgbmVlZCBQcm9taXNlI2ZpbmFsbHkgaW4gdGhlIHB1cmUgdmVyc2lvbiBmb3IgcHJldmVudGluZyBwcm90b3R5cGUgcG9sbHV0aW9uXG4gIGlmIChJU19QVVJFICYmICFQcm9taXNlUHJvdG90eXBlWydmaW5hbGx5J10pIHJldHVybiB0cnVlO1xuICAvLyBXZSBjYW4ndCB1c2UgQEBzcGVjaWVzIGZlYXR1cmUgZGV0ZWN0aW9uIGluIFY4IHNpbmNlIGl0IGNhdXNlc1xuICAvLyBkZW9wdGltaXphdGlvbiBhbmQgcGVyZm9ybWFuY2UgZGVncmFkYXRpb25cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzY3OVxuICBpZiAoVjhfVkVSU0lPTiA+PSA1MSAmJiAvbmF0aXZlIGNvZGUvLnRlc3QoUFJPTUlTRV9DT05TVFJVQ1RPUl9TT1VSQ0UpKSByZXR1cm4gZmFsc2U7XG4gIC8vIERldGVjdCBjb3JyZWN0bmVzcyBvZiBzdWJjbGFzc2luZyB3aXRoIEBAc3BlY2llcyBzdXBwb3J0XG4gIHZhciBwcm9taXNlID0gbmV3IFByb21pc2VDb25zdHJ1Y3RvcihmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKDEpOyB9KTtcbiAgdmFyIEZha2VQcm9taXNlID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgICBleGVjKGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSwgZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KTtcbiAgfTtcbiAgdmFyIGNvbnN0cnVjdG9yID0gcHJvbWlzZS5jb25zdHJ1Y3RvciA9IHt9O1xuICBjb25zdHJ1Y3RvcltTUEVDSUVTXSA9IEZha2VQcm9taXNlO1xuICBTVUJDTEFTU0lORyA9IHByb21pc2UudGhlbihmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0pIGluc3RhbmNlb2YgRmFrZVByb21pc2U7XG4gIGlmICghU1VCQ0xBU1NJTkcpIHJldHVybiB0cnVlO1xuICAvLyBVbmhhbmRsZWQgcmVqZWN0aW9ucyB0cmFja2luZyBzdXBwb3J0LCBOb2RlSlMgUHJvbWlzZSB3aXRob3V0IGl0IGZhaWxzIEBAc3BlY2llcyB0ZXN0XG4gIHJldHVybiAhR0xPQkFMX0NPUkVfSlNfUFJPTUlTRSAmJiBJU19CUk9XU0VSICYmICFOQVRJVkVfUkVKRUNUSU9OX0VWRU5UO1xufSk7XG5cbnZhciBJTkNPUlJFQ1RfSVRFUkFUSU9OID0gRk9SQ0VEIHx8ICFjaGVja0NvcnJlY3RuZXNzT2ZJdGVyYXRpb24oZnVuY3Rpb24gKGl0ZXJhYmxlKSB7XG4gIFByb21pc2VDb25zdHJ1Y3Rvci5hbGwoaXRlcmFibGUpWydjYXRjaCddKGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSk7XG59KTtcblxuLy8gaGVscGVyc1xudmFyIGlzVGhlbmFibGUgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIHRoZW47XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgaXNDYWxsYWJsZSh0aGVuID0gaXQudGhlbikgPyB0aGVuIDogZmFsc2U7XG59O1xuXG52YXIgY2FsbFJlYWN0aW9uID0gZnVuY3Rpb24gKHJlYWN0aW9uLCBzdGF0ZSkge1xuICB2YXIgdmFsdWUgPSBzdGF0ZS52YWx1ZTtcbiAgdmFyIG9rID0gc3RhdGUuc3RhdGUgPT0gRlVMRklMTEVEO1xuICB2YXIgaGFuZGxlciA9IG9rID8gcmVhY3Rpb24ub2sgOiByZWFjdGlvbi5mYWlsO1xuICB2YXIgcmVzb2x2ZSA9IHJlYWN0aW9uLnJlc29sdmU7XG4gIHZhciByZWplY3QgPSByZWFjdGlvbi5yZWplY3Q7XG4gIHZhciBkb21haW4gPSByZWFjdGlvbi5kb21haW47XG4gIHZhciByZXN1bHQsIHRoZW4sIGV4aXRlZDtcbiAgdHJ5IHtcbiAgICBpZiAoaGFuZGxlcikge1xuICAgICAgaWYgKCFvaykge1xuICAgICAgICBpZiAoc3RhdGUucmVqZWN0aW9uID09PSBVTkhBTkRMRUQpIG9uSGFuZGxlVW5oYW5kbGVkKHN0YXRlKTtcbiAgICAgICAgc3RhdGUucmVqZWN0aW9uID0gSEFORExFRDtcbiAgICAgIH1cbiAgICAgIGlmIChoYW5kbGVyID09PSB0cnVlKSByZXN1bHQgPSB2YWx1ZTtcbiAgICAgIGVsc2Uge1xuICAgICAgICBpZiAoZG9tYWluKSBkb21haW4uZW50ZXIoKTtcbiAgICAgICAgcmVzdWx0ID0gaGFuZGxlcih2YWx1ZSk7IC8vIGNhbiB0aHJvd1xuICAgICAgICBpZiAoZG9tYWluKSB7XG4gICAgICAgICAgZG9tYWluLmV4aXQoKTtcbiAgICAgICAgICBleGl0ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0ID09PSByZWFjdGlvbi5wcm9taXNlKSB7XG4gICAgICAgIHJlamVjdChUeXBlRXJyb3IoJ1Byb21pc2UtY2hhaW4gY3ljbGUnKSk7XG4gICAgICB9IGVsc2UgaWYgKHRoZW4gPSBpc1RoZW5hYmxlKHJlc3VsdCkpIHtcbiAgICAgICAgY2FsbCh0aGVuLCByZXN1bHQsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICB9IGVsc2UgcmVzb2x2ZShyZXN1bHQpO1xuICAgIH0gZWxzZSByZWplY3QodmFsdWUpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChkb21haW4gJiYgIWV4aXRlZCkgZG9tYWluLmV4aXQoKTtcbiAgICByZWplY3QoZXJyb3IpO1xuICB9XG59O1xuXG52YXIgbm90aWZ5ID0gZnVuY3Rpb24gKHN0YXRlLCBpc1JlamVjdCkge1xuICBpZiAoc3RhdGUubm90aWZpZWQpIHJldHVybjtcbiAgc3RhdGUubm90aWZpZWQgPSB0cnVlO1xuICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgIHZhciByZWFjdGlvbnMgPSBzdGF0ZS5yZWFjdGlvbnM7XG4gICAgdmFyIHJlYWN0aW9uO1xuICAgIHdoaWxlIChyZWFjdGlvbiA9IHJlYWN0aW9ucy5nZXQoKSkge1xuICAgICAgY2FsbFJlYWN0aW9uKHJlYWN0aW9uLCBzdGF0ZSk7XG4gICAgfVxuICAgIHN0YXRlLm5vdGlmaWVkID0gZmFsc2U7XG4gICAgaWYgKGlzUmVqZWN0ICYmICFzdGF0ZS5yZWplY3Rpb24pIG9uVW5oYW5kbGVkKHN0YXRlKTtcbiAgfSk7XG59O1xuXG52YXIgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChuYW1lLCBwcm9taXNlLCByZWFzb24pIHtcbiAgdmFyIGV2ZW50LCBoYW5kbGVyO1xuICBpZiAoRElTUEFUQ0hfRVZFTlQpIHtcbiAgICBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuICAgIGV2ZW50LnByb21pc2UgPSBwcm9taXNlO1xuICAgIGV2ZW50LnJlYXNvbiA9IHJlYXNvbjtcbiAgICBldmVudC5pbml0RXZlbnQobmFtZSwgZmFsc2UsIHRydWUpO1xuICAgIGdsb2JhbC5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgfSBlbHNlIGV2ZW50ID0geyBwcm9taXNlOiBwcm9taXNlLCByZWFzb246IHJlYXNvbiB9O1xuICBpZiAoIU5BVElWRV9SRUpFQ1RJT05fRVZFTlQgJiYgKGhhbmRsZXIgPSBnbG9iYWxbJ29uJyArIG5hbWVdKSkgaGFuZGxlcihldmVudCk7XG4gIGVsc2UgaWYgKG5hbWUgPT09IFVOSEFORExFRF9SRUpFQ1RJT04pIGhvc3RSZXBvcnRFcnJvcnMoJ1VuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbicsIHJlYXNvbik7XG59O1xuXG52YXIgb25VbmhhbmRsZWQgPSBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgY2FsbCh0YXNrLCBnbG9iYWwsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcHJvbWlzZSA9IHN0YXRlLmZhY2FkZTtcbiAgICB2YXIgdmFsdWUgPSBzdGF0ZS52YWx1ZTtcbiAgICB2YXIgSVNfVU5IQU5ETEVEID0gaXNVbmhhbmRsZWQoc3RhdGUpO1xuICAgIHZhciByZXN1bHQ7XG4gICAgaWYgKElTX1VOSEFORExFRCkge1xuICAgICAgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChJU19OT0RFKSB7XG4gICAgICAgICAgcHJvY2Vzcy5lbWl0KCd1bmhhbmRsZWRSZWplY3Rpb24nLCB2YWx1ZSwgcHJvbWlzZSk7XG4gICAgICAgIH0gZWxzZSBkaXNwYXRjaEV2ZW50KFVOSEFORExFRF9SRUpFQ1RJT04sIHByb21pc2UsIHZhbHVlKTtcbiAgICAgIH0pO1xuICAgICAgLy8gQnJvd3NlcnMgc2hvdWxkIG5vdCB0cmlnZ2VyIGByZWplY3Rpb25IYW5kbGVkYCBldmVudCBpZiBpdCB3YXMgaGFuZGxlZCBoZXJlLCBOb2RlSlMgLSBzaG91bGRcbiAgICAgIHN0YXRlLnJlamVjdGlvbiA9IElTX05PREUgfHwgaXNVbmhhbmRsZWQoc3RhdGUpID8gVU5IQU5ETEVEIDogSEFORExFRDtcbiAgICAgIGlmIChyZXN1bHQuZXJyb3IpIHRocm93IHJlc3VsdC52YWx1ZTtcbiAgICB9XG4gIH0pO1xufTtcblxudmFyIGlzVW5oYW5kbGVkID0gZnVuY3Rpb24gKHN0YXRlKSB7XG4gIHJldHVybiBzdGF0ZS5yZWplY3Rpb24gIT09IEhBTkRMRUQgJiYgIXN0YXRlLnBhcmVudDtcbn07XG5cbnZhciBvbkhhbmRsZVVuaGFuZGxlZCA9IGZ1bmN0aW9uIChzdGF0ZSkge1xuICBjYWxsKHRhc2ssIGdsb2JhbCwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBwcm9taXNlID0gc3RhdGUuZmFjYWRlO1xuICAgIGlmIChJU19OT0RFKSB7XG4gICAgICBwcm9jZXNzLmVtaXQoJ3JlamVjdGlvbkhhbmRsZWQnLCBwcm9taXNlKTtcbiAgICB9IGVsc2UgZGlzcGF0Y2hFdmVudChSRUpFQ1RJT05fSEFORExFRCwgcHJvbWlzZSwgc3RhdGUudmFsdWUpO1xuICB9KTtcbn07XG5cbnZhciBiaW5kID0gZnVuY3Rpb24gKGZuLCBzdGF0ZSwgdW53cmFwKSB7XG4gIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICBmbihzdGF0ZSwgdmFsdWUsIHVud3JhcCk7XG4gIH07XG59O1xuXG52YXIgaW50ZXJuYWxSZWplY3QgPSBmdW5jdGlvbiAoc3RhdGUsIHZhbHVlLCB1bndyYXApIHtcbiAgaWYgKHN0YXRlLmRvbmUpIHJldHVybjtcbiAgc3RhdGUuZG9uZSA9IHRydWU7XG4gIGlmICh1bndyYXApIHN0YXRlID0gdW53cmFwO1xuICBzdGF0ZS52YWx1ZSA9IHZhbHVlO1xuICBzdGF0ZS5zdGF0ZSA9IFJFSkVDVEVEO1xuICBub3RpZnkoc3RhdGUsIHRydWUpO1xufTtcblxudmFyIGludGVybmFsUmVzb2x2ZSA9IGZ1bmN0aW9uIChzdGF0ZSwgdmFsdWUsIHVud3JhcCkge1xuICBpZiAoc3RhdGUuZG9uZSkgcmV0dXJuO1xuICBzdGF0ZS5kb25lID0gdHJ1ZTtcbiAgaWYgKHVud3JhcCkgc3RhdGUgPSB1bndyYXA7XG4gIHRyeSB7XG4gICAgaWYgKHN0YXRlLmZhY2FkZSA9PT0gdmFsdWUpIHRocm93IFR5cGVFcnJvcihcIlByb21pc2UgY2FuJ3QgYmUgcmVzb2x2ZWQgaXRzZWxmXCIpO1xuICAgIHZhciB0aGVuID0gaXNUaGVuYWJsZSh2YWx1ZSk7XG4gICAgaWYgKHRoZW4pIHtcbiAgICAgIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciB3cmFwcGVyID0geyBkb25lOiBmYWxzZSB9O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNhbGwodGhlbiwgdmFsdWUsXG4gICAgICAgICAgICBiaW5kKGludGVybmFsUmVzb2x2ZSwgd3JhcHBlciwgc3RhdGUpLFxuICAgICAgICAgICAgYmluZChpbnRlcm5hbFJlamVjdCwgd3JhcHBlciwgc3RhdGUpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBpbnRlcm5hbFJlamVjdCh3cmFwcGVyLCBlcnJvciwgc3RhdGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUudmFsdWUgPSB2YWx1ZTtcbiAgICAgIHN0YXRlLnN0YXRlID0gRlVMRklMTEVEO1xuICAgICAgbm90aWZ5KHN0YXRlLCBmYWxzZSk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGludGVybmFsUmVqZWN0KHsgZG9uZTogZmFsc2UgfSwgZXJyb3IsIHN0YXRlKTtcbiAgfVxufTtcblxuLy8gY29uc3RydWN0b3IgcG9seWZpbGxcbmlmIChGT1JDRUQpIHtcbiAgLy8gMjUuNC4zLjEgUHJvbWlzZShleGVjdXRvcilcbiAgUHJvbWlzZUNvbnN0cnVjdG9yID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIGFuSW5zdGFuY2UodGhpcywgUHJvbWlzZVByb3RvdHlwZSk7XG4gICAgYUNhbGxhYmxlKGV4ZWN1dG9yKTtcbiAgICBjYWxsKEludGVybmFsLCB0aGlzKTtcbiAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpO1xuICAgIHRyeSB7XG4gICAgICBleGVjdXRvcihiaW5kKGludGVybmFsUmVzb2x2ZSwgc3RhdGUpLCBiaW5kKGludGVybmFsUmVqZWN0LCBzdGF0ZSkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpbnRlcm5hbFJlamVjdChzdGF0ZSwgZXJyb3IpO1xuICAgIH1cbiAgfTtcbiAgUHJvbWlzZVByb3RvdHlwZSA9IFByb21pc2VDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycyAtLSByZXF1aXJlZCBmb3IgYC5sZW5ndGhgXG4gIEludGVybmFsID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIHNldEludGVybmFsU3RhdGUodGhpcywge1xuICAgICAgdHlwZTogUFJPTUlTRSxcbiAgICAgIGRvbmU6IGZhbHNlLFxuICAgICAgbm90aWZpZWQ6IGZhbHNlLFxuICAgICAgcGFyZW50OiBmYWxzZSxcbiAgICAgIHJlYWN0aW9uczogbmV3IFF1ZXVlKCksXG4gICAgICByZWplY3Rpb246IGZhbHNlLFxuICAgICAgc3RhdGU6IFBFTkRJTkcsXG4gICAgICB2YWx1ZTogdW5kZWZpbmVkXG4gICAgfSk7XG4gIH07XG4gIEludGVybmFsLnByb3RvdHlwZSA9IHJlZGVmaW5lQWxsKFByb21pc2VQcm90b3R5cGUsIHtcbiAgICAvLyBgUHJvbWlzZS5wcm90b3R5cGUudGhlbmAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLnByb3RvdHlwZS50aGVuXG4gICAgdGhlbjogZnVuY3Rpb24gdGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICAgICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxQcm9taXNlU3RhdGUodGhpcyk7XG4gICAgICB2YXIgcmVhY3Rpb24gPSBuZXdQcm9taXNlQ2FwYWJpbGl0eShzcGVjaWVzQ29uc3RydWN0b3IodGhpcywgUHJvbWlzZUNvbnN0cnVjdG9yKSk7XG4gICAgICBzdGF0ZS5wYXJlbnQgPSB0cnVlO1xuICAgICAgcmVhY3Rpb24ub2sgPSBpc0NhbGxhYmxlKG9uRnVsZmlsbGVkKSA/IG9uRnVsZmlsbGVkIDogdHJ1ZTtcbiAgICAgIHJlYWN0aW9uLmZhaWwgPSBpc0NhbGxhYmxlKG9uUmVqZWN0ZWQpICYmIG9uUmVqZWN0ZWQ7XG4gICAgICByZWFjdGlvbi5kb21haW4gPSBJU19OT0RFID8gcHJvY2Vzcy5kb21haW4gOiB1bmRlZmluZWQ7XG4gICAgICBpZiAoc3RhdGUuc3RhdGUgPT0gUEVORElORykgc3RhdGUucmVhY3Rpb25zLmFkZChyZWFjdGlvbik7XG4gICAgICBlbHNlIG1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNhbGxSZWFjdGlvbihyZWFjdGlvbiwgc3RhdGUpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVhY3Rpb24ucHJvbWlzZTtcbiAgICB9LFxuICAgIC8vIGBQcm9taXNlLnByb3RvdHlwZS5jYXRjaGAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLnByb3RvdHlwZS5jYXRjaFxuICAgICdjYXRjaCc6IGZ1bmN0aW9uIChvblJlamVjdGVkKSB7XG4gICAgICByZXR1cm4gdGhpcy50aGVuKHVuZGVmaW5lZCwgb25SZWplY3RlZCk7XG4gICAgfVxuICB9KTtcbiAgT3duUHJvbWlzZUNhcGFiaWxpdHkgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHByb21pc2UgPSBuZXcgSW50ZXJuYWwoKTtcbiAgICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHByb21pc2UpO1xuICAgIHRoaXMucHJvbWlzZSA9IHByb21pc2U7XG4gICAgdGhpcy5yZXNvbHZlID0gYmluZChpbnRlcm5hbFJlc29sdmUsIHN0YXRlKTtcbiAgICB0aGlzLnJlamVjdCA9IGJpbmQoaW50ZXJuYWxSZWplY3QsIHN0YXRlKTtcbiAgfTtcbiAgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZiA9IG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKEMpIHtcbiAgICByZXR1cm4gQyA9PT0gUHJvbWlzZUNvbnN0cnVjdG9yIHx8IEMgPT09IFByb21pc2VXcmFwcGVyXG4gICAgICA/IG5ldyBPd25Qcm9taXNlQ2FwYWJpbGl0eShDKVxuICAgICAgOiBuZXdHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHkoQyk7XG4gIH07XG5cbiAgaWYgKCFJU19QVVJFICYmIGlzQ2FsbGFibGUoTmF0aXZlUHJvbWlzZSkgJiYgTmF0aXZlUHJvbWlzZVByb3RvdHlwZSAhPT0gT2JqZWN0LnByb3RvdHlwZSkge1xuICAgIG5hdGl2ZVRoZW4gPSBOYXRpdmVQcm9taXNlUHJvdG90eXBlLnRoZW47XG5cbiAgICBpZiAoIVNVQkNMQVNTSU5HKSB7XG4gICAgICAvLyBtYWtlIGBQcm9taXNlI3RoZW5gIHJldHVybiBhIHBvbHlmaWxsZWQgYFByb21pc2VgIGZvciBuYXRpdmUgcHJvbWlzZS1iYXNlZCBBUElzXG4gICAgICByZWRlZmluZShOYXRpdmVQcm9taXNlUHJvdG90eXBlLCAndGhlbicsIGZ1bmN0aW9uIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2VDb25zdHJ1Y3RvcihmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgY2FsbChuYXRpdmVUaGVuLCB0aGF0LCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9KS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKTtcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy82NDBcbiAgICAgIH0sIHsgdW5zYWZlOiB0cnVlIH0pO1xuXG4gICAgICAvLyBtYWtlcyBzdXJlIHRoYXQgbmF0aXZlIHByb21pc2UtYmFzZWQgQVBJcyBgUHJvbWlzZSNjYXRjaGAgcHJvcGVybHkgd29ya3Mgd2l0aCBwYXRjaGVkIGBQcm9taXNlI3RoZW5gXG4gICAgICByZWRlZmluZShOYXRpdmVQcm9taXNlUHJvdG90eXBlLCAnY2F0Y2gnLCBQcm9taXNlUHJvdG90eXBlWydjYXRjaCddLCB7IHVuc2FmZTogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICAvLyBtYWtlIGAuY29uc3RydWN0b3IgPT09IFByb21pc2VgIHdvcmsgZm9yIG5hdGl2ZSBwcm9taXNlLWJhc2VkIEFQSXNcbiAgICB0cnkge1xuICAgICAgZGVsZXRlIE5hdGl2ZVByb21pc2VQcm90b3R5cGUuY29uc3RydWN0b3I7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuXG4gICAgLy8gbWFrZSBgaW5zdGFuY2VvZiBQcm9taXNlYCB3b3JrIGZvciBuYXRpdmUgcHJvbWlzZS1iYXNlZCBBUElzXG4gICAgaWYgKHNldFByb3RvdHlwZU9mKSB7XG4gICAgICBzZXRQcm90b3R5cGVPZihOYXRpdmVQcm9taXNlUHJvdG90eXBlLCBQcm9taXNlUHJvdG90eXBlKTtcbiAgICB9XG4gIH1cbn1cblxuJCh7IGdsb2JhbDogdHJ1ZSwgd3JhcDogdHJ1ZSwgZm9yY2VkOiBGT1JDRUQgfSwge1xuICBQcm9taXNlOiBQcm9taXNlQ29uc3RydWN0b3Jcbn0pO1xuXG5zZXRUb1N0cmluZ1RhZyhQcm9taXNlQ29uc3RydWN0b3IsIFBST01JU0UsIGZhbHNlLCB0cnVlKTtcbnNldFNwZWNpZXMoUFJPTUlTRSk7XG5cblByb21pc2VXcmFwcGVyID0gZ2V0QnVpbHRJbihQUk9NSVNFKTtcblxuLy8gc3RhdGljc1xuJCh7IHRhcmdldDogUFJPTUlTRSwgc3RhdDogdHJ1ZSwgZm9yY2VkOiBGT1JDRUQgfSwge1xuICAvLyBgUHJvbWlzZS5yZWplY3RgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UucmVqZWN0XG4gIHJlamVjdDogZnVuY3Rpb24gcmVqZWN0KHIpIHtcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KHRoaXMpO1xuICAgIGNhbGwoY2FwYWJpbGl0eS5yZWplY3QsIHVuZGVmaW5lZCwgcik7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG5cbiQoeyB0YXJnZXQ6IFBST01JU0UsIHN0YXQ6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB8fCBGT1JDRUQgfSwge1xuICAvLyBgUHJvbWlzZS5yZXNvbHZlYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLnJlc29sdmVcbiAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZSh4KSB7XG4gICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKElTX1BVUkUgJiYgdGhpcyA9PT0gUHJvbWlzZVdyYXBwZXIgPyBQcm9taXNlQ29uc3RydWN0b3IgOiB0aGlzLCB4KTtcbiAgfVxufSk7XG5cbiQoeyB0YXJnZXQ6IFBST01JU0UsIHN0YXQ6IHRydWUsIGZvcmNlZDogSU5DT1JSRUNUX0lURVJBVElPTiB9LCB7XG4gIC8vIGBQcm9taXNlLmFsbGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5hbGxcbiAgYWxsOiBmdW5jdGlvbiBhbGwoaXRlcmFibGUpIHtcbiAgICB2YXIgQyA9IHRoaXM7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eShDKTtcbiAgICB2YXIgcmVzb2x2ZSA9IGNhcGFiaWxpdHkucmVzb2x2ZTtcbiAgICB2YXIgcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgdmFyICRwcm9taXNlUmVzb2x2ZSA9IGFDYWxsYWJsZShDLnJlc29sdmUpO1xuICAgICAgdmFyIHZhbHVlcyA9IFtdO1xuICAgICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgICAgdmFyIHJlbWFpbmluZyA9IDE7XG4gICAgICBpdGVyYXRlKGl0ZXJhYmxlLCBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICB2YXIgaW5kZXggPSBjb3VudGVyKys7XG4gICAgICAgIHZhciBhbHJlYWR5Q2FsbGVkID0gZmFsc2U7XG4gICAgICAgIHJlbWFpbmluZysrO1xuICAgICAgICBjYWxsKCRwcm9taXNlUmVzb2x2ZSwgQywgcHJvbWlzZSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICBpZiAoYWxyZWFkeUNhbGxlZCkgcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlDYWxsZWQgPSB0cnVlO1xuICAgICAgICAgIHZhbHVlc1tpbmRleF0gPSB2YWx1ZTtcbiAgICAgICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgICAgIH0sIHJlamVjdCk7XG4gICAgICB9KTtcbiAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICB9KTtcbiAgICBpZiAocmVzdWx0LmVycm9yKSByZWplY3QocmVzdWx0LnZhbHVlKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9LFxuICAvLyBgUHJvbWlzZS5yYWNlYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLnJhY2VcbiAgcmFjZTogZnVuY3Rpb24gcmFjZShpdGVyYWJsZSkge1xuICAgIHZhciBDID0gdGhpcztcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgJHByb21pc2VSZXNvbHZlID0gYUNhbGxhYmxlKEMucmVzb2x2ZSk7XG4gICAgICBpdGVyYXRlKGl0ZXJhYmxlLCBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICBjYWxsKCRwcm9taXNlUmVzb2x2ZSwgQywgcHJvbWlzZSkudGhlbihjYXBhYmlsaXR5LnJlc29sdmUsIHJlamVjdCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBpZiAocmVzdWx0LmVycm9yKSByZWplY3QocmVzdWx0LnZhbHVlKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC1leHByZXNzaW9ucyAqL1xuLy8gaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0Jztcbi8vIGltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IFlTRiBmcm9tICcuLi9zcmMvaW5kZXgnO1xuaW1wb3J0ICdjb3JlLWpzL21vZHVsZXMvZXMucHJvbWlzZSc7XG5mdW5jdGlvbiBEZW1vKCkge1xuICAgIC8vIGhkZGQx5LyB5LiaXG4gICAgWVNGLmluaXQoJ2YxMzUwOWY1ZThiOGUxZmJiMzg4YjNkZGJlZTIzOGMyJywge1xuICAgICAgICB0ZW1wbGF0ZUlkOiAxMjMsXG4gICAgICAgIHNodW50SWQ6IDExLFxuICAgICAgICAvLyBoaWRkZW46IDFcbiAgICB9LCAndGVzdCcpLnRoZW4oeXNmID0+IHtcbiAgICAgICAgeXNmKCdvcGVuJyk7XG4gICAgfSkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnc2Rr5Yqg6L295aSx6LSlLS0tJywgZXJyb3IpO1xuICAgIH0pO1xufVxuRGVtbygpO1xuLy8gUmVhY3RET00ucmVuZGVyKDxEZW1vIC8+LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnai1yb290JykpO1xuIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJvYmoiLCJfX2VzTW9kdWxlIiwibWFwRW52IiwidGVzdCIsInJlbGVhc2UiLCJvbmxpbmUiLCJZU0YiLCJhcHBLZXkiLCJvYmpQYXJhbXMiLCJlbnYiLCJJbWFnZSIsInNyYyIsIkRhdGUiLCJnZXRUaW1lIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJFcnJvciIsIk9iamVjdCIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwiY2FsbCIsInJldCIsIml0ZW0iLCJjb25zb2xlIiwibG9nIiwicHVzaCIsInRpbWVvdXQiLCJwYXJhbXMiLCJsZW5ndGgiLCJqb2luIiwiaGVhZCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJzY3JpcHQiLCJjcmVhdGVFbGVtZW50Iiwib25TY3JpcHRDb21wbGV0ZSIsImVyclR5cGUiLCJldmVudCIsIm9uZXJyb3IiLCJvbmxvYWQiLCJlcnJvck1zZyIsImNsZWFyVGltZW91dCIsIndpbmRvdyIsInlzZiIsInR5cGUiLCJhc3luYyIsInNldFRpbWVvdXQiLCJhcHBlbmRDaGlsZCIsImdsb2JhbCIsImlzQ2FsbGFibGUiLCJ0cnlUb1N0cmluZyIsIlR5cGVFcnJvciIsImFyZ3VtZW50IiwiaXNDb25zdHJ1Y3RvciIsIlN0cmluZyIsImlzUHJvdG90eXBlT2YiLCJpdCIsIlByb3RvdHlwZSIsImlzT2JqZWN0IiwidG9JbmRleGVkT2JqZWN0IiwidG9BYnNvbHV0ZUluZGV4IiwibGVuZ3RoT2ZBcnJheUxpa2UiLCJjcmVhdGVNZXRob2QiLCJJU19JTkNMVURFUyIsIiR0aGlzIiwiZWwiLCJmcm9tSW5kZXgiLCJ2YWx1ZSIsIk8iLCJpbmRleCIsImluY2x1ZGVzIiwiaW5kZXhPZiIsInVuY3VycnlUaGlzIiwic2xpY2UiLCJJVEVSQVRPUiIsIndlbGxLbm93blN5bWJvbCIsIlNBRkVfQ0xPU0lORyIsImNhbGxlZCIsIml0ZXJhdG9yV2l0aFJldHVybiIsIm5leHQiLCJkb25lIiwidGhpcyIsIkFycmF5IiwiZnJvbSIsImVycm9yIiwiZXhlYyIsIlNLSVBfQ0xPU0lORyIsIklURVJBVElPTl9TVVBQT1JUIiwib2JqZWN0Iiwic3RyaW5nU2xpY2UiLCJUT19TVFJJTkdfVEFHX1NVUFBPUlQiLCJjbGFzc29mUmF3IiwiVE9fU1RSSU5HX1RBRyIsIkNPUlJFQ1RfQVJHVU1FTlRTIiwiYXJndW1lbnRzIiwidGFnIiwicmVzdWx0IiwidW5kZWZpbmVkIiwia2V5IiwidHJ5R2V0IiwiY2FsbGVlIiwiaGFzT3duIiwib3duS2V5cyIsImdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSIsImRlZmluZVByb3BlcnR5TW9kdWxlIiwidGFyZ2V0Iiwic291cmNlIiwiZXhjZXB0aW9ucyIsImtleXMiLCJkZWZpbmVQcm9wZXJ0eSIsImYiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJpIiwiREVTQ1JJUFRPUlMiLCJjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IiLCJiaXRtYXAiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJmYWlscyIsImdldCIsIkVYSVNUUyIsInVzZXJBZ2VudCIsIlBlYmJsZSIsImNsYXNzb2YiLCJwcm9jZXNzIiwiZ2V0QnVpbHRJbiIsIm1hdGNoIiwidmVyc2lvbiIsIkRlbm8iLCJ2ZXJzaW9ucyIsInY4Iiwic3BsaXQiLCJjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkiLCJyZWRlZmluZSIsInNldEdsb2JhbCIsImNvcHlDb25zdHJ1Y3RvclByb3BlcnRpZXMiLCJpc0ZvcmNlZCIsIm9wdGlvbnMiLCJ0YXJnZXRQcm9wZXJ0eSIsInNvdXJjZVByb3BlcnR5IiwiZGVzY3JpcHRvciIsIlRBUkdFVCIsIkdMT0JBTCIsIlNUQVRJQyIsInN0YXQiLCJub1RhcmdldEdldCIsImZvcmNlZCIsInNoYW0iLCJGdW5jdGlvblByb3RvdHlwZSIsIkZ1bmN0aW9uIiwiYXBwbHkiLCJiaW5kIiwiUmVmbGVjdCIsImFDYWxsYWJsZSIsImZuIiwidGhhdCIsImdldERlc2NyaXB0b3IiLCJQUk9QRVIiLCJuYW1lIiwiQ09ORklHVVJBQkxFIiwiY2FsbEJpbmQiLCJhRnVuY3Rpb24iLCJuYW1lc3BhY2UiLCJtZXRob2QiLCJnZXRNZXRob2QiLCJJdGVyYXRvcnMiLCJhbk9iamVjdCIsImdldEl0ZXJhdG9yTWV0aG9kIiwidXNpbmdJdGVyYXRvciIsIml0ZXJhdG9yTWV0aG9kIiwiViIsIlAiLCJmdW5jIiwiY2hlY2siLCJNYXRoIiwiZ2xvYmFsVGhpcyIsInNlbGYiLCJnIiwidG9PYmplY3QiLCJoYXNPd25Qcm9wZXJ0eSIsImEiLCJiIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJzdG9yZSIsImZ1bmN0aW9uVG9TdHJpbmciLCJpbnNwZWN0U291cmNlIiwic2V0IiwiaGFzIiwiTkFUSVZFX1dFQUtfTUFQIiwic2hhcmVkIiwic2hhcmVkS2V5IiwiaGlkZGVuS2V5cyIsIk9CSkVDVF9BTFJFQURZX0lOSVRJQUxJWkVEIiwiV2Vha01hcCIsInN0YXRlIiwid21nZXQiLCJ3bWhhcyIsIndtc2V0IiwibWV0YWRhdGEiLCJmYWNhZGUiLCJTVEFURSIsImVuZm9yY2UiLCJnZXR0ZXJGb3IiLCJUWVBFIiwiQXJyYXlQcm90b3R5cGUiLCJub29wIiwiZW1wdHkiLCJjb25zdHJ1Y3QiLCJjb25zdHJ1Y3RvclJlZ0V4cCIsIklOQ09SUkVDVF9UT19TVFJJTkciLCJpc0NvbnN0cnVjdG9yTW9kZXJuIiwiaXNDb25zdHJ1Y3RvckxlZ2FjeSIsInJlcGxhY2VtZW50IiwiZmVhdHVyZSIsImRldGVjdGlvbiIsImRhdGEiLCJub3JtYWxpemUiLCJQT0xZRklMTCIsIk5BVElWRSIsInN0cmluZyIsInJlcGxhY2UiLCJ0b0xvd2VyQ2FzZSIsIlVTRV9TWU1CT0xfQVNfVUlEIiwiJFN5bWJvbCIsImlzQXJyYXlJdGVyYXRvck1ldGhvZCIsImdldEl0ZXJhdG9yIiwiaXRlcmF0b3JDbG9zZSIsIlJlc3VsdCIsInN0b3BwZWQiLCJSZXN1bHRQcm90b3R5cGUiLCJpdGVyYWJsZSIsInVuYm91bmRGdW5jdGlvbiIsIml0ZXJhdG9yIiwiaXRlckZuIiwic3RlcCIsIkFTX0VOVFJJRVMiLCJJU19JVEVSQVRPUiIsIklOVEVSUlVQVEVEIiwic3RvcCIsImNvbmRpdGlvbiIsImNhbGxGbiIsImtpbmQiLCJpbm5lclJlc3VsdCIsImlubmVyRXJyb3IiLCJ0b0xlbmd0aCIsImZsdXNoIiwibGFzdCIsIm5vdGlmeSIsInRvZ2dsZSIsIm5vZGUiLCJwcm9taXNlIiwidGhlbiIsIm1hY3JvdGFzayIsIklTX0lPUyIsIklTX0lPU19QRUJCTEUiLCJJU19XRUJPU19XRUJLSVQiLCJJU19OT0RFIiwiTXV0YXRpb25PYnNlcnZlciIsIldlYktpdE11dGF0aW9uT2JzZXJ2ZXIiLCJxdWV1ZU1pY3JvdGFza0Rlc2NyaXB0b3IiLCJxdWV1ZU1pY3JvdGFzayIsInBhcmVudCIsImRvbWFpbiIsImV4aXQiLCJlbnRlciIsImNvbnN0cnVjdG9yIiwibmV4dFRpY2siLCJjcmVhdGVUZXh0Tm9kZSIsIm9ic2VydmUiLCJjaGFyYWN0ZXJEYXRhIiwidGFzayIsIlY4X1ZFUlNJT04iLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzeW1ib2wiLCJTeW1ib2wiLCJQcm9taXNlQ2FwYWJpbGl0eSIsIkMiLCIkJHJlc29sdmUiLCIkJHJlamVjdCIsIklFOF9ET01fREVGSU5FIiwidG9Qcm9wZXJ0eUtleSIsIiRkZWZpbmVQcm9wZXJ0eSIsIkF0dHJpYnV0ZXMiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZSIsIiRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJpbnRlcm5hbE9iamVjdEtleXMiLCJjb25jYXQiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwibmFtZXMiLCIkcHJvcGVydHlJc0VudW1lcmFibGUiLCJOQVNIT1JOX0JVRyIsImFQb3NzaWJsZVByb3RvdHlwZSIsInNldFByb3RvdHlwZU9mIiwic2V0dGVyIiwiQ09SUkVDVF9TRVRURVIiLCJwcm90byIsIl9fcHJvdG9fXyIsImlucHV0IiwicHJlZiIsInZhbCIsInZhbHVlT2YiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlIiwibmV3UHJvbWlzZUNhcGFiaWxpdHkiLCJ4IiwicHJvbWlzZUNhcGFiaWxpdHkiLCJRdWV1ZSIsInRhaWwiLCJhZGQiLCJlbnRyeSIsIkludGVybmFsU3RhdGVNb2R1bGUiLCJDT05GSUdVUkFCTEVfRlVOQ1RJT05fTkFNRSIsImdldEludGVybmFsU3RhdGUiLCJlbmZvcmNlSW50ZXJuYWxTdGF0ZSIsIlRFTVBMQVRFIiwidW5zYWZlIiwic2ltcGxlIiwiU1BFQ0lFUyIsIkNPTlNUUlVDVE9SX05BTUUiLCJDb25zdHJ1Y3RvciIsIlRBRyIsInVpZCIsIlNIQVJFRCIsIklTX1BVUkUiLCJtb2RlIiwiY29weXJpZ2h0IiwiYUNvbnN0cnVjdG9yIiwiZGVmYXVsdENvbnN0cnVjdG9yIiwiUyIsImxvY2F0aW9uIiwiZGVmZXIiLCJjaGFubmVsIiwicG9ydCIsImh0bWwiLCJhcnJheVNsaWNlIiwic2V0SW1tZWRpYXRlIiwiY2xlYXIiLCJjbGVhckltbWVkaWF0ZSIsIkRpc3BhdGNoIiwiTWVzc2FnZUNoYW5uZWwiLCJjb3VudGVyIiwicXVldWUiLCJydW4iLCJpZCIsInJ1bm5lciIsImxpc3RlbmVyIiwicG9zdCIsInBvc3RNZXNzYWdlIiwicHJvdG9jb2wiLCJob3N0IiwiYXJncyIsIm5vdyIsInBvcnQyIiwicG9ydDEiLCJvbm1lc3NhZ2UiLCJhZGRFdmVudExpc3RlbmVyIiwiaW1wb3J0U2NyaXB0cyIsInJlbW92ZUNoaWxkIiwidG9JbnRlZ2VyT3JJbmZpbml0eSIsIm1heCIsIm1pbiIsImludGVnZXIiLCJJbmRleGVkT2JqZWN0IiwicmVxdWlyZU9iamVjdENvZXJjaWJsZSIsImNlaWwiLCJmbG9vciIsIm51bWJlciIsImlzU3ltYm9sIiwib3JkaW5hcnlUb1ByaW1pdGl2ZSIsIlRPX1BSSU1JVElWRSIsImV4b3RpY1RvUHJpbSIsInRvUHJpbWl0aXZlIiwicG9zdGZpeCIsInJhbmRvbSIsIk5BVElWRV9TWU1CT0wiLCJXZWxsS25vd25TeW1ib2xzU3RvcmUiLCJzeW1ib2xGb3IiLCJjcmVhdGVXZWxsS25vd25TeW1ib2wiLCJ3aXRob3V0U2V0dGVyIiwiZGVzY3JpcHRpb24iLCJJbnRlcm5hbCIsIk93blByb21pc2VDYXBhYmlsaXR5IiwiUHJvbWlzZVdyYXBwZXIiLCJuYXRpdmVUaGVuIiwiJCIsIk5hdGl2ZVByb21pc2UiLCJyZWRlZmluZUFsbCIsInNldFRvU3RyaW5nVGFnIiwic2V0U3BlY2llcyIsImFuSW5zdGFuY2UiLCJpdGVyYXRlIiwiY2hlY2tDb3JyZWN0bmVzc09mSXRlcmF0aW9uIiwic3BlY2llc0NvbnN0cnVjdG9yIiwibWljcm90YXNrIiwicHJvbWlzZVJlc29sdmUiLCJob3N0UmVwb3J0RXJyb3JzIiwibmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUiLCJwZXJmb3JtIiwiSVNfQlJPV1NFUiIsIlBST01JU0UiLCJzZXRJbnRlcm5hbFN0YXRlIiwiZ2V0SW50ZXJuYWxQcm9taXNlU3RhdGUiLCJOYXRpdmVQcm9taXNlUHJvdG90eXBlIiwiUHJvbWlzZUNvbnN0cnVjdG9yIiwiUHJvbWlzZVByb3RvdHlwZSIsIm5ld0dlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eSIsIkRJU1BBVENIX0VWRU5UIiwiY3JlYXRlRXZlbnQiLCJkaXNwYXRjaEV2ZW50IiwiTkFUSVZFX1JFSkVDVElPTl9FVkVOVCIsIlByb21pc2VSZWplY3Rpb25FdmVudCIsIlVOSEFORExFRF9SRUpFQ1RJT04iLCJTVUJDTEFTU0lORyIsIkZPUkNFRCIsIlBST01JU0VfQ09OU1RSVUNUT1JfU09VUkNFIiwiR0xPQkFMX0NPUkVfSlNfUFJPTUlTRSIsIkZha2VQcm9taXNlIiwiSU5DT1JSRUNUX0lURVJBVElPTiIsImFsbCIsImlzVGhlbmFibGUiLCJjYWxsUmVhY3Rpb24iLCJyZWFjdGlvbiIsImV4aXRlZCIsIm9rIiwiaGFuZGxlciIsImZhaWwiLCJyZWplY3Rpb24iLCJvbkhhbmRsZVVuaGFuZGxlZCIsImlzUmVqZWN0Iiwibm90aWZpZWQiLCJyZWFjdGlvbnMiLCJvblVuaGFuZGxlZCIsInJlYXNvbiIsImluaXRFdmVudCIsImlzVW5oYW5kbGVkIiwiZW1pdCIsInVud3JhcCIsImludGVybmFsUmVqZWN0IiwiaW50ZXJuYWxSZXNvbHZlIiwid3JhcHBlciIsImV4ZWN1dG9yIiwib25GdWxmaWxsZWQiLCJvblJlamVjdGVkIiwid3JhcCIsInIiLCJjYXBhYmlsaXR5IiwiJHByb21pc2VSZXNvbHZlIiwidmFsdWVzIiwicmVtYWluaW5nIiwiYWxyZWFkeUNhbGxlZCIsInJhY2UiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiZSIsImluaXQiLCJ0ZW1wbGF0ZUlkIiwic2h1bnRJZCIsImNhdGNoIl0sInNvdXJjZVJvb3QiOiIifQ==
@@ -0,0 +1 @@
1
+ <!doctype html><html><head><title>@ysf/sdk</title><meta charset="UTF-8"/><meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=0"><link rel="stylesheet" href="https://res.qiyukf.net/static/wisdemo/reset.css"><script defer="defer" src="https://res.qiyukf.net/static/wisdemo/sdk/demo.40afc4a1.js"></script></head><body><div id="j-root"></div></body></html>