@skyux/lookup 8.3.0 → 8.4.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.
- package/documentation.json +24 -110
- package/esm2020/lib/modules/country-field/country-field.component.mjs +2 -1
- package/esm2020/lib/modules/lookup/lookup-show-more-modal.component.mjs +15 -4
- package/esm2020/lib/modules/lookup/lookup.component.mjs +5 -1
- package/fesm2015/skyux-lookup.mjs +19 -3
- package/fesm2015/skyux-lookup.mjs.map +1 -1
- package/fesm2020/skyux-lookup.mjs +19 -3
- package/fesm2020/skyux-lookup.mjs.map +1 -1
- package/lib/modules/country-field/country-field.component.d.ts +2 -1
- package/lib/modules/lookup/lookup-show-more-modal.component.d.ts +1 -0
- package/package.json +10 -10
package/documentation.json
CHANGED
|
@@ -5005,7 +5005,7 @@
|
|
|
5005
5005
|
"sources": [
|
|
5006
5006
|
{
|
|
5007
5007
|
"fileName": "projects/lookup/src/modules/country-field/country-field.component.ts",
|
|
5008
|
-
"line":
|
|
5008
|
+
"line": 304,
|
|
5009
5009
|
"character": 2
|
|
5010
5010
|
}
|
|
5011
5011
|
],
|
|
@@ -5141,7 +5141,7 @@
|
|
|
5141
5141
|
"isPublic": true
|
|
5142
5142
|
},
|
|
5143
5143
|
"comment": {
|
|
5144
|
-
"shortText": "The value for the `autocomplete` attribute on the form input."
|
|
5144
|
+
"shortText": "The value for the HTML `autocomplete` attribute on the form input."
|
|
5145
5145
|
},
|
|
5146
5146
|
"decorators": [
|
|
5147
5147
|
{
|
|
@@ -5178,7 +5178,7 @@
|
|
|
5178
5178
|
"sources": [
|
|
5179
5179
|
{
|
|
5180
5180
|
"fileName": "projects/lookup/src/modules/country-field/country-field.component.ts",
|
|
5181
|
-
"line":
|
|
5181
|
+
"line": 247,
|
|
5182
5182
|
"character": 9
|
|
5183
5183
|
}
|
|
5184
5184
|
],
|
|
@@ -5199,7 +5199,7 @@
|
|
|
5199
5199
|
"sources": [
|
|
5200
5200
|
{
|
|
5201
5201
|
"fileName": "projects/lookup/src/modules/country-field/country-field.component.ts",
|
|
5202
|
-
"line":
|
|
5202
|
+
"line": 181,
|
|
5203
5203
|
"character": 9
|
|
5204
5204
|
}
|
|
5205
5205
|
],
|
|
@@ -5238,7 +5238,7 @@
|
|
|
5238
5238
|
"sources": [
|
|
5239
5239
|
{
|
|
5240
5240
|
"fileName": "projects/lookup/src/modules/country-field/country-field.component.ts",
|
|
5241
|
-
"line":
|
|
5241
|
+
"line": 190,
|
|
5242
5242
|
"character": 9
|
|
5243
5243
|
}
|
|
5244
5244
|
],
|
|
@@ -5259,7 +5259,7 @@
|
|
|
5259
5259
|
"sources": [
|
|
5260
5260
|
{
|
|
5261
5261
|
"fileName": "projects/lookup/src/modules/country-field/country-field.component.ts",
|
|
5262
|
-
"line":
|
|
5262
|
+
"line": 183,
|
|
5263
5263
|
"character": 9
|
|
5264
5264
|
}
|
|
5265
5265
|
],
|
|
@@ -5281,7 +5281,7 @@
|
|
|
5281
5281
|
"sources": [
|
|
5282
5282
|
{
|
|
5283
5283
|
"fileName": "projects/lookup/src/modules/country-field/country-field.component.ts",
|
|
5284
|
-
"line":
|
|
5284
|
+
"line": 254,
|
|
5285
5285
|
"character": 9
|
|
5286
5286
|
}
|
|
5287
5287
|
],
|
|
@@ -5302,7 +5302,7 @@
|
|
|
5302
5302
|
"sources": [
|
|
5303
5303
|
{
|
|
5304
5304
|
"fileName": "projects/lookup/src/modules/country-field/country-field.component.ts",
|
|
5305
|
-
"line":
|
|
5305
|
+
"line": 256,
|
|
5306
5306
|
"character": 9
|
|
5307
5307
|
}
|
|
5308
5308
|
],
|
|
@@ -5337,7 +5337,7 @@
|
|
|
5337
5337
|
"sources": [
|
|
5338
5338
|
{
|
|
5339
5339
|
"fileName": "projects/lookup/src/modules/country-field/country-field.component.ts",
|
|
5340
|
-
"line":
|
|
5340
|
+
"line": 262,
|
|
5341
5341
|
"character": 9
|
|
5342
5342
|
}
|
|
5343
5343
|
],
|
|
@@ -5365,7 +5365,7 @@
|
|
|
5365
5365
|
"sources": [
|
|
5366
5366
|
{
|
|
5367
5367
|
"fileName": "projects/lookup/src/modules/country-field/country-field.component.ts",
|
|
5368
|
-
"line":
|
|
5368
|
+
"line": 185,
|
|
5369
5369
|
"character": 9
|
|
5370
5370
|
}
|
|
5371
5371
|
],
|
|
@@ -5401,7 +5401,7 @@
|
|
|
5401
5401
|
"sources": [
|
|
5402
5402
|
{
|
|
5403
5403
|
"fileName": "projects/lookup/src/modules/country-field/country-field.component.ts",
|
|
5404
|
-
"line":
|
|
5404
|
+
"line": 268,
|
|
5405
5405
|
"character": 9
|
|
5406
5406
|
}
|
|
5407
5407
|
],
|
|
@@ -5429,7 +5429,7 @@
|
|
|
5429
5429
|
"sources": [
|
|
5430
5430
|
{
|
|
5431
5431
|
"fileName": "projects/lookup/src/modules/country-field/country-field.component.ts",
|
|
5432
|
-
"line":
|
|
5432
|
+
"line": 187,
|
|
5433
5433
|
"character": 9
|
|
5434
5434
|
}
|
|
5435
5435
|
],
|
|
@@ -5465,7 +5465,7 @@
|
|
|
5465
5465
|
"sources": [
|
|
5466
5466
|
{
|
|
5467
5467
|
"fileName": "projects/lookup/src/modules/country-field/country-field.component.ts",
|
|
5468
|
-
"line":
|
|
5468
|
+
"line": 178,
|
|
5469
5469
|
"character": 9
|
|
5470
5470
|
}
|
|
5471
5471
|
],
|
|
@@ -5739,91 +5739,6 @@
|
|
|
5739
5739
|
}
|
|
5740
5740
|
]
|
|
5741
5741
|
},
|
|
5742
|
-
{
|
|
5743
|
-
"id": 298,
|
|
5744
|
-
"name": "includePhoneInfo",
|
|
5745
|
-
"kind": 262144,
|
|
5746
|
-
"kindString": "Accessor",
|
|
5747
|
-
"flags": {
|
|
5748
|
-
"isPublic": true
|
|
5749
|
-
},
|
|
5750
|
-
"decorators": [
|
|
5751
|
-
{
|
|
5752
|
-
"name": "Input",
|
|
5753
|
-
"type": {
|
|
5754
|
-
"type": "reference",
|
|
5755
|
-
"qualifiedName": "InputDecorator",
|
|
5756
|
-
"package": "@angular/core",
|
|
5757
|
-
"name": "Input"
|
|
5758
|
-
},
|
|
5759
|
-
"arguments": {}
|
|
5760
|
-
}
|
|
5761
|
-
],
|
|
5762
|
-
"sources": [
|
|
5763
|
-
{
|
|
5764
|
-
"fileName": "projects/lookup/src/modules/country-field/country-field.component.ts",
|
|
5765
|
-
"line": 144,
|
|
5766
|
-
"character": 13
|
|
5767
|
-
}
|
|
5768
|
-
],
|
|
5769
|
-
"getSignature": [
|
|
5770
|
-
{
|
|
5771
|
-
"id": 299,
|
|
5772
|
-
"name": "includePhoneInfo",
|
|
5773
|
-
"kind": 524288,
|
|
5774
|
-
"kindString": "Get signature",
|
|
5775
|
-
"flags": {},
|
|
5776
|
-
"comment": {
|
|
5777
|
-
"shortText": "Whether to include phone information in the selected country and country dropdown.",
|
|
5778
|
-
"tags": [
|
|
5779
|
-
{
|
|
5780
|
-
"tag": "default",
|
|
5781
|
-
"text": "false\n"
|
|
5782
|
-
}
|
|
5783
|
-
]
|
|
5784
|
-
},
|
|
5785
|
-
"type": {
|
|
5786
|
-
"type": "intrinsic",
|
|
5787
|
-
"name": "boolean"
|
|
5788
|
-
}
|
|
5789
|
-
}
|
|
5790
|
-
],
|
|
5791
|
-
"setSignature": [
|
|
5792
|
-
{
|
|
5793
|
-
"id": 300,
|
|
5794
|
-
"name": "includePhoneInfo",
|
|
5795
|
-
"kind": 1048576,
|
|
5796
|
-
"kindString": "Set signature",
|
|
5797
|
-
"flags": {},
|
|
5798
|
-
"comment": {
|
|
5799
|
-
"shortText": "Whether to include phone information in the selected country and country dropdown.",
|
|
5800
|
-
"tags": [
|
|
5801
|
-
{
|
|
5802
|
-
"tag": "default",
|
|
5803
|
-
"text": "false\n"
|
|
5804
|
-
}
|
|
5805
|
-
]
|
|
5806
|
-
},
|
|
5807
|
-
"parameters": [
|
|
5808
|
-
{
|
|
5809
|
-
"id": 301,
|
|
5810
|
-
"name": "value",
|
|
5811
|
-
"kind": 32768,
|
|
5812
|
-
"kindString": "Parameter",
|
|
5813
|
-
"flags": {},
|
|
5814
|
-
"type": {
|
|
5815
|
-
"type": "intrinsic",
|
|
5816
|
-
"name": "boolean"
|
|
5817
|
-
}
|
|
5818
|
-
}
|
|
5819
|
-
],
|
|
5820
|
-
"type": {
|
|
5821
|
-
"type": "intrinsic",
|
|
5822
|
-
"name": "void"
|
|
5823
|
-
}
|
|
5824
|
-
}
|
|
5825
|
-
]
|
|
5826
|
-
},
|
|
5827
5742
|
{
|
|
5828
5743
|
"id": 312,
|
|
5829
5744
|
"name": "selectedCountry",
|
|
@@ -5835,7 +5750,7 @@
|
|
|
5835
5750
|
"sources": [
|
|
5836
5751
|
{
|
|
5837
5752
|
"fileName": "projects/lookup/src/modules/country-field/country-field.component.ts",
|
|
5838
|
-
"line":
|
|
5753
|
+
"line": 194,
|
|
5839
5754
|
"character": 13
|
|
5840
5755
|
}
|
|
5841
5756
|
],
|
|
@@ -5904,7 +5819,7 @@
|
|
|
5904
5819
|
"sources": [
|
|
5905
5820
|
{
|
|
5906
5821
|
"fileName": "projects/lookup/src/modules/country-field/country-field.component.ts",
|
|
5907
|
-
"line":
|
|
5822
|
+
"line": 160,
|
|
5908
5823
|
"character": 13
|
|
5909
5824
|
}
|
|
5910
5825
|
],
|
|
@@ -5971,7 +5886,7 @@
|
|
|
5971
5886
|
"sources": [
|
|
5972
5887
|
{
|
|
5973
5888
|
"fileName": "projects/lookup/src/modules/country-field/country-field.component.ts",
|
|
5974
|
-
"line":
|
|
5889
|
+
"line": 364,
|
|
5975
5890
|
"character": 9
|
|
5976
5891
|
}
|
|
5977
5892
|
],
|
|
@@ -6008,7 +5923,7 @@
|
|
|
6008
5923
|
"sources": [
|
|
6009
5924
|
{
|
|
6010
5925
|
"fileName": "projects/lookup/src/modules/country-field/country-field.component.ts",
|
|
6011
|
-
"line":
|
|
5926
|
+
"line": 414,
|
|
6012
5927
|
"character": 9
|
|
6013
5928
|
}
|
|
6014
5929
|
],
|
|
@@ -6051,7 +5966,7 @@
|
|
|
6051
5966
|
"sources": [
|
|
6052
5967
|
{
|
|
6053
5968
|
"fileName": "projects/lookup/src/modules/country-field/country-field.component.ts",
|
|
6054
|
-
"line":
|
|
5969
|
+
"line": 417,
|
|
6055
5970
|
"character": 9
|
|
6056
5971
|
}
|
|
6057
5972
|
],
|
|
@@ -6080,7 +5995,7 @@
|
|
|
6080
5995
|
"sources": [
|
|
6081
5996
|
{
|
|
6082
5997
|
"fileName": "projects/lookup/src/modules/country-field/country-field.component.ts",
|
|
6083
|
-
"line":
|
|
5998
|
+
"line": 419,
|
|
6084
5999
|
"character": 9
|
|
6085
6000
|
}
|
|
6086
6001
|
],
|
|
@@ -6163,7 +6078,7 @@
|
|
|
6163
6078
|
"sources": [
|
|
6164
6079
|
{
|
|
6165
6080
|
"fileName": "projects/lookup/src/modules/country-field/country-field.component.ts",
|
|
6166
|
-
"line":
|
|
6081
|
+
"line": 425,
|
|
6167
6082
|
"character": 9
|
|
6168
6083
|
}
|
|
6169
6084
|
],
|
|
@@ -6232,7 +6147,7 @@
|
|
|
6232
6147
|
"sources": [
|
|
6233
6148
|
{
|
|
6234
6149
|
"fileName": "projects/lookup/src/modules/country-field/country-field.component.ts",
|
|
6235
|
-
"line":
|
|
6150
|
+
"line": 430,
|
|
6236
6151
|
"character": 9
|
|
6237
6152
|
}
|
|
6238
6153
|
],
|
|
@@ -6282,7 +6197,7 @@
|
|
|
6282
6197
|
"sources": [
|
|
6283
6198
|
{
|
|
6284
6199
|
"fileName": "projects/lookup/src/modules/country-field/country-field.component.ts",
|
|
6285
|
-
"line":
|
|
6200
|
+
"line": 434,
|
|
6286
6201
|
"character": 9
|
|
6287
6202
|
}
|
|
6288
6203
|
],
|
|
@@ -6346,7 +6261,7 @@
|
|
|
6346
6261
|
"sources": [
|
|
6347
6262
|
{
|
|
6348
6263
|
"fileName": "projects/lookup/src/modules/country-field/country-field.component.ts",
|
|
6349
|
-
"line":
|
|
6264
|
+
"line": 449,
|
|
6350
6265
|
"character": 9
|
|
6351
6266
|
}
|
|
6352
6267
|
],
|
|
@@ -6421,7 +6336,6 @@
|
|
|
6421
6336
|
286,
|
|
6422
6337
|
290,
|
|
6423
6338
|
294,
|
|
6424
|
-
298,
|
|
6425
6339
|
312,
|
|
6426
6340
|
302
|
|
6427
6341
|
]
|
|
@@ -8908,7 +8822,7 @@
|
|
|
8908
8822
|
"sources": [
|
|
8909
8823
|
{
|
|
8910
8824
|
"fileName": "projects/lookup/src/modules/lookup/lookup.component.ts",
|
|
8911
|
-
"line":
|
|
8825
|
+
"line": 735,
|
|
8912
8826
|
"character": 9
|
|
8913
8827
|
}
|
|
8914
8828
|
],
|
|
@@ -79,6 +79,7 @@ export class SkyCountryFieldComponent {
|
|
|
79
79
|
/**
|
|
80
80
|
* Whether to include phone information in the selected country and country dropdown.
|
|
81
81
|
* @default false
|
|
82
|
+
* @internal
|
|
82
83
|
*/
|
|
83
84
|
set includePhoneInfo(value) {
|
|
84
85
|
__classPrivateFieldSet(this, _SkyCountryFieldComponent__includePhoneInfo, value ?? false, "f");
|
|
@@ -428,4 +429,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
428
429
|
static: true,
|
|
429
430
|
}]
|
|
430
431
|
}] } });
|
|
431
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3NyYy9saWIvbW9kdWxlcy9jb3VudHJ5LWZpZWxkL2NvdW50cnktZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvY291bnRyeS1maWVsZC9jb3VudHJ5LWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUVaLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFdBQVcsRUFFWCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsYUFBYSxFQUNiLFNBQVMsRUFDVCxPQUFPLEVBQ1Asa0JBQWtCLEdBR25CLE1BQU0sZ0JBQWdCLENBQUM7QUFLeEIsT0FBTyxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFLN0YsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7Ozs7O0FBRWhGLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDO0FBRWxDLE1BQU0sMkJBQTJCLEdBQUc7SUFDbEMsT0FBTyxFQUFFLGFBQWE7SUFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztJQUN2RCxLQUFLLEVBQUUsSUFBSTtDQUNaLENB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OEZBaUk3Qiw2QkFBNkIsa0lBc0VoQyxXQUFXLHVJQU1YLFdBQVcsMkNDdlFyQixvL0VBNkVBOzJGRGhCYSx3QkFBd0I7a0JBUHBDLFNBQVM7K0JBQ0UsbUJBQW1CLGFBR2xCLENBQUMsMkJBQTJCLENBQUMsbUJBQ3ZCLHVCQUF1QixDQUFDLE1BQU07OzBCQXdQNUMsUUFBUTs7MEJBQ1IsUUFBUTs0Q0FoUEoscUJBQXFCO3NCQUQzQixLQUFLO2dCQVVLLGNBQWM7c0JBRHhCLEtBQUs7Z0JBMkJLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBNEJLLHVCQUF1QjtzQkFEakMsS0FBSztnQkFjSyxnQkFBZ0I7c0JBRDFCLEtBQUs7Z0JBZ0JLLG9CQUFvQjtzQkFEOUIsS0FBSztnQkFtQkMscUJBQXFCO3NCQUQzQixNQUFNO2dCQWFBLGtDQUFrQztzQkFEeEMsU0FBUzt1QkFBQyw2QkFBNkI7Z0JBeUVqQyxnQkFBZ0I7c0JBSnRCLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUU7d0JBQzdCLElBQUksRUFBRSxXQUFXO3dCQUNqQixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkFPTSxxQkFBcUI7c0JBSjNCLFNBQVM7dUJBQUMsdUJBQXVCLEVBQUU7d0JBQ2xDLElBQUksRUFBRSxXQUFXO3dCQUNqQixNQUFNLEVBQUUsSUFBSTtxQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdG9yLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBUeXBlLFxuICBWaWV3Q2hpbGQsXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBOR19WQUxJREFUT1JTLFxuICBOZ0NvbnRyb2wsXG4gIE5nTW9kZWwsXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lBcHBXaW5kb3dSZWYgfSBmcm9tICdAc2t5dXgvY29yZSc7XG5pbXBvcnQgeyBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2Zvcm1zJztcbmltcG9ydCB7IFNreVRoZW1lU2VydmljZSB9IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCAnaW50bC10ZWwtaW5wdXQnO1xuaW1wb3J0IHsgU3ViamVjdCwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlIH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS1pbnB1dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdlIH0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL3R5cGVzL2F1dG9jb21wbGV0ZS1zZWxlY3Rpb24tY2hhbmdlJztcblxuaW1wb3J0IHsgU2t5Q291bnRyeUZpZWxkQ291bnRyeSB9IGZyb20gJy4vdHlwZXMvY291bnRyeSc7XG5pbXBvcnQgeyBTa3lDb3VudHJ5RmllbGRDb250ZXh0IH0gZnJvbSAnLi90eXBlcy9jb3VudHJ5LWZpZWxkLWNvbnRleHQnO1xuaW1wb3J0IHsgU0tZX0NPVU5UUllfRklFTERfQ09OVEVYVCB9IGZyb20gJy4vdHlwZXMvY291bnRyeS1maWVsZC1jb250ZXh0LXRva2VuJztcblxuY29uc3QgREVGQVVMVF9DT1VOVFJZX0NPREUgPSAndXMnO1xuXG5jb25zdCBTS1lfQ09VTlRSWV9GSUVMRF9WQUxJREFUT1IgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNreUNvdW50cnlGaWVsZENvbXBvbmVudCksXG4gIG11bHRpOiB0cnVlLFxufTtcblxubGV0IHVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWNvdW50cnktZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJy4vY291bnRyeS1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvdW50cnktZmllbGQuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbU0tZX0NPVU5UUllfRklFTERfVkFMSURBVE9SXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNreUNvdW50cnlGaWVsZENvbXBvbmVudFxuICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmFsaWRhdG9yXG57XG4gIC8qKlxuICAgKiBUaGUgdmFsdWUgZm9yIHRoZSBgYXV0b2NvbXBsZXRlYCBhdHRyaWJ1dGUgb24gdGhlIGZvcm0gaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXV0b2NvbXBsZXRlQXR0cmlidXRlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBbSW50ZXJuYXRpb25hbCBPcmdhbml6YXRpb24gZm9yIFN0YW5kYXJkaXphdGlvbiBBbHBoYSAyXShodHRwczovL3d3dy5uYXRpb25zb25saW5lLm9yZy9vbmV3b3JsZC9jb3VudHJ5X2NvZGVfbGlzdC5odG0pXG4gICAqIGNvdW50cnkgY29kZSBmb3IgdGhlIGRlZmF1bHQgY291bnRyeS5cbiAgICogV2hlbiBzZWFyY2ggcmVzdWx0cyBpbmNsdWRlIHRoZSBkZWZhdWx0IGNvdW50cnksIGl0IGFwcGVhcnMgYXQgdGhlIHRvcCBvZiB0aGUgbGlzdC5cbiAgICogQGRlZmF1bHQgXCJ1c1wiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRlZmF1bHRDb3VudHJ5KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IERFRkFVTFRfQ09VTlRSWV9DT0RFO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy4jX2RlZmF1bHRDb3VudHJ5KSB7XG4gICAgICB0aGlzLiNfZGVmYXVsdENvdW50cnkgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICB0aGlzLiNkZWZhdWx0Q291bnRyeURhdGEgPSB0aGlzLmNvdW50cmllcy5maW5kKFxuICAgICAgICAoY291bnRyeSkgPT4gY291bnRyeS5pc28yID09PSB0aGlzLiNfZGVmYXVsdENvdW50cnlcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuI3NvcnRDb3VudHJpZXNXaXRoU2VsZWN0ZWRBbmREZWZhdWx0KHRoaXMuc2VsZWN0ZWRDb3VudHJ5KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRlZmF1bHRDb3VudHJ5KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19kZWZhdWx0Q291bnRyeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIGNvdW50cnkgZmllbGQgb24gdGVtcGxhdGUtZHJpdmVuIGZvcm1zLiBEb24ndCB1c2UgdGhpcyBpbnB1dCBvbiByZWFjdGl2ZSBmb3JtcyBiZWNhdXNlIHRoZXkgbWF5IG92ZXJ3cml0ZSB0aGUgaW5wdXQgb3IgbGVhdmUgdGhlIGNvbnRyb2wgb3V0IG9mIHN5bmMuXG4gICAqIFRvIHNldCB0aGUgZGlzYWJsZWQgc3RhdGUgb24gcmVhY3RpdmUgZm9ybXMsIHVzZSB0aGUgYEZvcm1Db250cm9sYCBpbnN0ZWFkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNhYmxlZChpc0Rpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTtcblxuICAgIGlmICghaXNEaXNhYmxlZCkge1xuICAgICAgdGhpcy4jYWRkRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICB0aGlzLiNfZGlzYWJsZWQgPSBpc0Rpc2FibGVkID8/IGZhbHNlO1xuXG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuY291bnRyeVNlYXJjaEZvcm1Db250cm9sLmRpc2FibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb3VudHJ5U2VhcmNoRm9ybUNvbnRyb2wuZW5hYmxlKCk7XG4gICAgfVxuXG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byBoaWRlIHRoZSBmbGFnIGluIHRoZSBpbnB1dCBlbGVtZW50LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBoaWRlU2VsZWN0ZWRDb3VudHJ5RmxhZyh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19oaWRlU2VsZWN0ZWRDb3VudHJ5RmxhZyA9IHZhbHVlID8/IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGdldCBoaWRlU2VsZWN0ZWRDb3VudHJ5RmxhZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2hpZGVTZWxlY3RlZENvdW50cnlGbGFnO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSBwaG9uZSBpbmZvcm1hdGlvbiBpbiB0aGUgc2VsZWN0ZWQgY291bnRyeSBhbmQgY291bnRyeSBkcm9wZG93bi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaW5jbHVkZVBob25lSW5mbyh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19pbmNsdWRlUGhvbmVJbmZvID0gdmFsdWUgPz8gZmFsc2U7XG5cbiAgICB0aGlzLiNzZXR1cENvdW50cmllcygpO1xuICB9XG5cbiAgcHVibGljIGdldCBpbmNsdWRlUGhvbmVJbmZvKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfaW5jbHVkZVBob25lSW5mbztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgW0ludGVybmF0aW9uYWwgT3JnYW5pemF0aW9uIGZvciBTdGFuZGFyZGl6YXRpb24gQWxwaGEgMl0oaHR0cHM6Ly93d3cubmF0aW9uc29ubGluZS5vcmcvb25ld29ybGQvY291bnRyeV9jb2RlX2xpc3QuaHRtKVxuICAgKiBjb3VudHJ5IGNvZGVzIGZvciB0aGUgY291bnRyaWVzIHRoYXQgdXNlcnMgY2FuIHNlbGVjdC4gQnkgZGVmYXVsdCwgYWxsIGNvdW50cmllcyBhcmUgYXZhaWxhYmxlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzdXBwb3J0ZWRDb3VudHJ5SVNPcyh2YWx1ZTogc3RyaW5nW10gfCB1bmRlZmluZWQpIHtcbiAgICAvLyBFbnN1cmUgYWxsIHZhbHVlcyBhcmUgdGhlIHNhbWUgY2FzZS5cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUubWFwKCh2KSA9PiB2LnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cblxuICAgIHRoaXMuI19zdXBwb3J0ZWRDb3VudHJ5SVNPcyA9IHZhbHVlO1xuICAgIHRoaXMuI3NldHVwQ291bnRyaWVzKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHN1cHBvcnRlZENvdW50cnlJU09zKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy4jX3N1cHBvcnRlZENvdW50cnlJU09zIHx8IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdGhlIHNlbGVjdGVkIGNvdW50cnkgY2hhbmdlcy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWRDb3VudHJ5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8U2t5Q291bnRyeUZpZWxkQ291bnRyeT4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8U2t5Q291bnRyeUZpZWxkQ291bnRyeT4oKTtcblxuICBwdWJsaWMgY291bnRyaWVzOiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5W10gPSBbXTtcblxuICBwdWJsaWMgY291bnRyeVNlYXJjaEZvcm1Db250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2w7XG5cbiAgcHVibGljIGlzSW5wdXRGb2N1c2VkID0gZmFsc2U7XG5cbiAgcHVibGljIHNlYXJjaFRleHRNaW5pbXVtQ2hhcmFjdGVycyA9IDI7XG5cbiAgQFZpZXdDaGlsZChTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSlcbiAgcHVibGljIGNvdW50cnlTZWFyY2hBdXRvY29tcGxldGVEaXJlY3RpdmU6XG4gICAgfCBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZVxuICAgIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWRDb3VudHJ5KG5ld0NvdW50cnk6IFNreUNvdW50cnlGaWVsZENvdW50cnkgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoIXRoaXMuI2NvdW50cmllc0FyZUVxdWFsKHRoaXMuc2VsZWN0ZWRDb3VudHJ5LCBuZXdDb3VudHJ5KSkge1xuICAgICAgY29uc3QgbmV3Q291bnRyeUlzbyA9IG5ld0NvdW50cnkgJiYgbmV3Q291bnRyeS5pc28yO1xuICAgICAgaWYgKG5ld0NvdW50cnlJc28pIHtcbiAgICAgICAgY29uc3QgaXNvQ291bnRyeSA9IHRoaXMuY291bnRyaWVzLmZpbmQoXG4gICAgICAgICAgKGNvdW50cnkpID0+IGNvdW50cnkuaXNvMiA9PT0gbmV3Q291bnRyeUlzb1xuICAgICAgICApO1xuXG4gICAgICAgIGlmIChpc29Db3VudHJ5KSB7XG4gICAgICAgICAgbmV3Q291bnRyeSA9IGlzb0NvdW50cnk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy4jX3NlbGVjdGVkQ291bnRyeSA9IG5ld0NvdW50cnk7XG5cbiAgICAgIHRoaXMuI3NvcnRDb3VudHJpZXNXaXRoU2VsZWN0ZWRBbmREZWZhdWx0KG5ld0NvdW50cnkpO1xuXG4gICAgICB0aGlzLiNpbnRlcm5hbEZvcm1DaGFuZ2UgPSB0cnVlO1xuICAgICAgdGhpcy5jb3VudHJ5U2VhcmNoRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5zZWxlY3RlZENvdW50cnkpO1xuXG4gICAgICBpZiAoIXRoaXMuI2lzSW5pdGlhbENoYW5nZSkge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKG5ld0NvdW50cnkpO1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5Q2hhbmdlLmVtaXQobmV3Q291bnRyeSk7XG4gICAgICB9XG5cbiAgICAgIC8vIERvIG5vdCBtYXJrIHRoZSBmaWVsZCBhcyBcImRpcnR5XCJcbiAgICAgIC8vIGlmIHRoZSBmaWVsZCBoYXMgYmVlbiBpbml0aWFsaXplZCB3aXRoIGEgdmFsdWUuXG4gICAgICBpZiAodGhpcy4jaXNJbml0aWFsQ2hhbmdlICYmIHRoaXMuI25nQ29udHJvbCAmJiB0aGlzLiNuZ0NvbnRyb2wuY29udHJvbCkge1xuICAgICAgICB0aGlzLiNuZ0NvbnRyb2wuY29udHJvbC5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLiNpc0luaXRpYWxDaGFuZ2UgPSBmYWxzZTtcblxuICAgICAgLyoqXG4gICAgICAgKiBUaGUgc2Vjb25kIHBvcnRpb24gb2YgdGhpcyBpZiBzdGF0ZW1lbnQgaXMgY29tcGxleC4gVGhlIGNvbnRyb2wgdHlwZSBjaGVjayBlbnN1cmVzIHRoYXRcbiAgICAgICAqIHdlIG9ubHkgd2F0Y2ggZm9yIHRoZSBpbml0aWFsIHRpbWUgdGhyb3VnaCB0aGlzIGZ1bmN0aW9uIG9uIHJlYWN0aXZlIGZvcm1zLiBIb3dldmVyLFxuICAgICAgICogdGVtcGxhdGUgZm9ybXMgd2lsbCBzZW5kIHRocm91Z2ggYG51bGxgIGFuZCB0aGVuIGB1bmRlZmluZWRgIG9uIGVtcHR5IGluaXRpYWxpemF0aW9uXG4gICAgICAgKiBzbyB3ZSBoYXZlIHRvIGNoZWNrIGZvciB3aGVuIHRoZSBub24tbnVsbCBwYXNzIHRocm91Z2ggaGFwcGVucy5cbiAgICAgICAqL1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0aGlzLiNpc0luaXRpYWxDaGFuZ2UgJiZcbiAgICAgICghKHRoaXMuI25nQ29udHJvbCBpbnN0YW5jZW9mIE5nTW9kZWwpIHx8IG5ld0NvdW50cnkgIT09IG51bGwpXG4gICAgKSB7XG4gICAgICB0aGlzLiNpc0luaXRpYWxDaGFuZ2UgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkQ291bnRyeSgpOiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy4jX3NlbGVjdGVkQ291bnRyeTtcbiAgfVxuXG4gIHB1YmxpYyBjb250ZXh0OiBTa3lDb3VudHJ5RmllbGRDb250ZXh0IHwgbnVsbCA9IGluamVjdChcbiAgICBTS1lfQ09VTlRSWV9GSUVMRF9DT05URVhULFxuICAgIHtcbiAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIH1cbiAgKTtcblxuICBwdWJsaWMgY3VycmVudFRoZW1lID0gJ2RlZmF1bHQnO1xuXG4gIHB1YmxpYyBpbnB1dElkOiBzdHJpbmc7XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXRUZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIHB1YmxpYyBpbnB1dFRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICBAVmlld0NoaWxkKCdzZWFyY2hJY29uVGVtcGxhdGVSZWYnLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwdWJsaWMgc2VhcmNoSWNvblRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjx1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICAjY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmO1xuXG4gICNkZWZhdWx0Q291bnRyeURhdGE6IFNreUNvdW50cnlGaWVsZENvdW50cnkgfCB1bmRlZmluZWQ7XG5cbiAgI2VsUmVmOiBFbGVtZW50UmVmO1xuXG4gICNpZGxlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAjaW5qZWN0b3I6IEluamVjdG9yO1xuXG4gICNpbnRlcm5hbEZvcm1DaGFuZ2UgPSBmYWxzZTtcblxuICAjaXNJbml0aWFsQ2hhbmdlID0gdHJ1ZTtcblxuICAjbmdDb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsID0gbnVsbDtcblxuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI3RoZW1lU3ZjOiBTa3lUaGVtZVNlcnZpY2UgfCB1bmRlZmluZWQ7XG5cbiAgI3dpbmRvd1JlZjogU2t5QXBwV2luZG93UmVmO1xuXG4gICNfZGVmYXVsdENvdW50cnk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAjX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgI19oaWRlU2VsZWN0ZWRDb3VudHJ5RmxhZyA9IGZhbHNlO1xuXG4gICNfaW5jbHVkZVBob25lSW5mbyA9IGZhbHNlO1xuXG4gICNfc2VsZWN0ZWRDb3VudHJ5OiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5IHwgdW5kZWZpbmVkO1xuXG4gICNfc3VwcG9ydGVkQ291bnRyeUlTT3M6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBlbFJlZjogRWxlbWVudFJlZixcbiAgICB3aW5kb3dSZWY6IFNreUFwcFdpbmRvd1JlZixcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIGlucHV0Qm94SG9zdFN2Yz86IFNreUlucHV0Qm94SG9zdFNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgdGhlbWVTdmM/OiBTa3lUaGVtZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IgPSBjaGFuZ2VEZXRlY3RvcjtcbiAgICB0aGlzLiNlbFJlZiA9IGVsUmVmO1xuICAgIHRoaXMuI3dpbmRvd1JlZiA9IHdpbmRvd1JlZjtcbiAgICB0aGlzLiNpbmplY3RvciA9IGluamVjdG9yO1xuICAgIHRoaXMuI3RoZW1lU3ZjID0gdGhlbWVTdmM7XG5cbiAgICB0aGlzLmlucHV0SWQgPSBgc2t5LWNvdW50cnktZmllbGQtaW5wdXQtJHt1bmlxdWVJZCsrfWA7XG5cbiAgICB0aGlzLiNzZXR1cENvdW50cmllcygpO1xuXG4gICAgdGhpcy5jb3VudHJ5U2VhcmNoRm9ybUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XG4gIH1cblxuICAvKipcbiAgICogQW5ndWxhciBsaWZlY3ljbGUgaG9vayBmb3Igd2hlbiB0aGUgY29tcG9uZW50IGlzIGluaXRpYWxpemVkXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuI3VwZGF0ZUlucHV0Qm94KCk7XG5cbiAgICB0aGlzLiNuZ0NvbnRyb2wgPSB0aGlzLiNpbmplY3Rvci5nZXQ8TmdDb250cm9sIHwgbnVsbD4oXG4gICAgICBOZ0NvbnRyb2wgYXMgdW5rbm93biBhcyBUeXBlPE5nQ29udHJvbD4sXG4gICAgICBudWxsXG4gICAgKTtcblxuICAgIGlmICh0aGlzLiNuZ0NvbnRyb2wpIHtcbiAgICAgIHRoaXMuI25nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9IGVsc2Uge1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgaW5pdGlhbCBjaGFuZ2UgYm9vbGVhbiBpcyB0byBkZXRlcm1pbmUgaWYgdGhlIGZvcm0gaXMgc2V0dGluZyB0aGUgdmFsdWUuIFdoZW4gbm8gZm9ybVxuICAgICAgICogaXMgcHJlc2VudCB3ZSBkb24ndCB3YW50IHRvIGlnbm9yZSB0aGUgZmlyc3QgY2hhbmdlLlxuICAgICAgICovXG4gICAgICB0aGlzLiNpc0luaXRpYWxDaGFuZ2UgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZGVmYXVsdENvdW50cnkpIHtcbiAgICAgIHRoaXMuZGVmYXVsdENvdW50cnkgPSBERUZBVUxUX0NPVU5UUllfQ09ERTtcbiAgICB9XG5cbiAgICB0aGlzLmNvdW50cnlTZWFyY2hGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgIGlmIChuZXdWYWx1ZSAmJiAhdGhpcy4jaW50ZXJuYWxGb3JtQ2hhbmdlKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvdW50cnkgPSBuZXdWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuI2FkZEV2ZW50TGlzdGVuZXJzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLiN0aGVtZVN2Yykge1xuICAgICAgdGhpcy4jdGhlbWVTdmMuc2V0dGluZ3NDaGFuZ2Uuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50VGhlbWUgPSBjaGFuZ2UuY3VycmVudFNldHRpbmdzLnRoZW1lLm5hbWU7XG4gICAgICAgIHRoaXMuI3VwZGF0ZUlucHV0Qm94KCk7XG4gICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFuZ3VsYXIgbGlmZWN5Y2xlIGhvb2sgZm9yIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBkZXN0cnVjdGVkLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkQ291bnRyeUNoYW5nZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuI3JlbW92ZUV2ZW50TGlzdGVuZXJzKCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGNvbXBvbmVudCdzIHRvdWNoZWQgdmFsdWUgd2hlbiB0aGUgYXV0b2NvbXBsZXRlIGlzIGJsdXJyZWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgb25BdXRvY29tcGxldGVCbHVyKCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgY291bnRyeSB0byB2YWxpZGF0ZSBhZ2FpbnN0IGJhc2VkIG9uIHRoZSBjb3VudHkncyBpc28yIGNvZGUuXG4gICAqIEBwYXJhbSBuZXdDb3VudHJ5IFRoZSBJbnRlcm5hdGlvbmFsIE9yZ2FuaXphdGlvbiBmb3IgU3RhbmRhcmRpemF0aW9uJ3MgdHdvLWxldHRlciBjb2RlXG4gICAqIGZvciB0aGUgZGVmYXVsdCBjb3VudHJ5LlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBvbkNvdW50cnlTZWxlY3RlZChuZXdDb3VudHJ5OiBTa3lBdXRvY29tcGxldGVTZWxlY3Rpb25DaGFuZ2UpOiB2b2lkIHtcbiAgICBpZiAobmV3Q291bnRyeS5zZWxlY3RlZEl0ZW0pIHtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZShcbiAgICAgICAgdGhpcy5jb3VudHJpZXMuZmluZChcbiAgICAgICAgICAoY291bnRyeUluZm8pID0+IGNvdW50cnlJbmZvLmlzbzIgPT09IG5ld0NvdW50cnkuc2VsZWN0ZWRJdGVtLmlzbzJcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53cml0ZVZhbHVlKHVuZGVmaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQW5ndWxhciBhdXRvbWF0aWNhbGx5IGNvbnN0cnVjdHMgdGhlc2UgbWV0aG9kcy5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBwdWJsaWMgb25DaGFuZ2UgPSAodmFsdWU6IFNreUNvdW50cnlGaWVsZENvdW50cnkgfCB1bmRlZmluZWQpID0+IHt9O1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgcHVibGljIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKFxuICAgIGZuOiAodmFsdWU6IFNreUNvdW50cnlGaWVsZENvdW50cnkgfCB1bmRlZmluZWQpID0+IHZvaWRcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8vIEFsbG93cyBBbmd1bGFyIHRvIGRpc2FibGUgdGhlIGlucHV0LlxuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgfVxuXG4gIHB1YmxpYyB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgaWYgKGNvbnRyb2wudmFsdWUpIHtcbiAgICAgIGlmIChcbiAgICAgICAgKHRoaXMuc3VwcG9ydGVkQ291bnRyeUlTT3MgJiZcbiAgICAgICAgICB0aGlzLnN1cHBvcnRlZENvdW50cnlJU09zLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICB0aGlzLnN1cHBvcnRlZENvdW50cnlJU09zLmluZGV4T2YoY29udHJvbC52YWx1ZS5pc28yKSA8IDApIHx8XG4gICAgICAgICF0aGlzLmNvdW50cmllcy5maW5kKChjb3VudHJ5KSA9PiBjb3VudHJ5LmlzbzIgPT09IGNvbnRyb2wudmFsdWUuaXNvMilcbiAgICAgICkge1xuICAgICAgICByZXR1cm4geyB1bnN1cHBvcnRlZENvdW50cnk6IHRydWUgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5IHwgdW5kZWZpbmVkKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZENvdW50cnkgPSB2YWx1ZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gICNhZGRFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICB0aGlzLiNyZW1vdmVFdmVudExpc3RlbmVycygpO1xuXG4gICAgdGhpcy4jaWRsZSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBjb25zdCBkb2N1bWVudE9iaiA9IHRoaXMuI3dpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZG9jdW1lbnQ7XG5cbiAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnRPYmosICdtb3VzZWRvd24nKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI2lkbGUpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5pc0lucHV0Rm9jdXNlZCA9IHRoaXMuI2VsUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIGZyb21FdmVudDxLZXlib2FyZEV2ZW50Pihkb2N1bWVudE9iaiwgJ2ZvY3VzaW4nKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI2lkbGUpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5pc0lucHV0Rm9jdXNlZCA9IHRoaXMuI2VsUmVmLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcbiAgICAgICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gICNjb3VudHJpZXNBcmVFcXVhbChcbiAgICBjb3VudHJ5MTogU2t5Q291bnRyeUZpZWxkQ291bnRyeSB8IHVuZGVmaW5lZCxcbiAgICBjb3VudHJ5MjogU2t5Q291bnRyeUZpZWxkQ291bnRyeSB8IHVuZGVmaW5lZFxuICApOiBib29sZWFuIHtcbiAgICBpZiAoY291bnRyeTEgJiYgY291bnRyeTIpIHtcbiAgICAgIHJldHVybiBjb3VudHJ5MS5pc28yID09PSBjb3VudHJ5Mi5pc28yO1xuICAgIH1cblxuICAgIC8vIE5PVEU6IFdlIGFyZSBkb2luZyB0aGlzIGluICB0aGlzIHdheSBiZWNhdXNlIHRlbXBsYXRlIGZvcm1zIHdpbGwgc2VuZCB0aHJvdWdoIGBudWxsYFxuICAgIC8vIGFuZCB0aGVuIGB1bmRlZmluZWRgIG9uIGVtcHR5IGluaXRpYWxpemF0aW9uLiBUaGVzZSBhcmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgYnV0IHdpbGxcbiAgICAvLyBub3QgcGFzcyBhIHN0YW5kYXJkIHRyaXBsZSBlcXVhbHMgY2hlY2suXG4gICAgcmV0dXJuICFjb3VudHJ5MSAmJiAhY291bnRyeTI7XG4gIH1cblxuICAjY291bnRyaWVzRXF1YWwoXG4gICAgYTogU2t5Q291bnRyeUZpZWxkQ291bnRyeSxcbiAgICBiOiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5XG4gICk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBhLmlzbzIgPT09IGIuaXNvMiAmJiBhLm5hbWUgPT09IGIubmFtZTtcbiAgfVxuXG4gICNyZW1vdmVFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICB0aGlzLiNpZGxlLm5leHQoKTtcbiAgICB0aGlzLiNpZGxlLmNvbXBsZXRlKCk7XG4gIH1cblxuICAjc2V0dXBDb3VudHJpZXMoKTogdm9pZCB7XG4gICAgLyoqXG4gICAgICogVGhlIGpzb24gZnVuY3Rpb25zIGhlcmUgZW5zdXJlcyB0aGF0IHdlIGdldCBhIGNvcHkgb2YgdGhlIGFycmF5IGFuZCBub3QgdGhlIGdsb2JhbCBvcmlnaW5hbC5cbiAgICAgKiBUaGlzIGVuc3VyZXMgdGhhdCBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgdGhlIGNvbXBvbmVudCBkb24ndCBvdmVyd3JpdGUgdGhlIG9yaWdpbmFsIGRhdGEuXG4gICAgICpcbiAgICAgKiBXZSBtdXN0IHR5cGUgdGhlIHdpbmRvdyBvYmplY3QgYXMgYW55IGhlcmUgYXMgdGhlIGludGwtdGVsLWlucHV0IGxpYnJhcnkgYWRkcyBpdHMgb2JqZWN0XG4gICAgICogdG8gdGhlIG1haW4gd2luZG93IG9iamVjdC5cbiAgICAgKi9cbiAgICB0aGlzLmNvdW50cmllcyA9IEpTT04ucGFyc2UoXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgSlNPTi5zdHJpbmdpZnkoKHdpbmRvdyBhcyBhbnkpLmludGxUZWxJbnB1dEdsb2JhbHMuZ2V0Q291bnRyeURhdGEoKSlcbiAgICApO1xuXG4gICAgLy8gSWdub3JpbmcgY292ZXJhZ2UgaGVyZSBhcyB0aGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCByZWxlYXNlLlxuICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgaWYgKCF0aGlzLmluY2x1ZGVQaG9uZUluZm8gJiYgIXRoaXMuaGlkZVNlbGVjdGVkQ291bnRyeUZsYWcpIHtcbiAgICAgIGlmIChcbiAgICAgICAgKFxuICAgICAgICAgIHRoaXMuI2VsUmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudCBhcyBIVE1MRWxlbWVudFxuICAgICAgICApPy5jbGFzc0xpc3Q/LmNvbnRhaW5zKCdza3ktcGhvbmUtZmllbGQtY291bnRyeS1zZWFyY2gnKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuaW5jbHVkZVBob25lSW5mbyA9IHRydWU7XG4gICAgICAgIHRoaXMuaGlkZVNlbGVjdGVkQ291bnRyeUZsYWcgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKCF0aGlzLmluY2x1ZGVQaG9uZUluZm8pIHtcbiAgICAgIC8qKlxuICAgICAgICogVGhlIGxpYnJhcnkgd2UgZ2V0IHRoZSBjb3VudHJ5IGRhdGEgZnJvbSBpbmNsdWRlcyBleHRyYSBwaG9uZSBwcm9wZXJ0aWVzLlxuICAgICAgICogV2Ugd2FudCB0byByZW1vdmUgdGhlc2UgdW5sZXNzIHdlIGFyZSBpbiBhIHBob25lIGZpZWxkXG4gICAgICAgKi9cbiAgICAgIHRoaXMuY291bnRyaWVzLmZvckVhY2goKGNvdW50cnkpID0+IHtcbiAgICAgICAgZGVsZXRlIGNvdW50cnkuZGlhbENvZGU7XG4gICAgICAgIGRlbGV0ZSBjb3VudHJ5LmFyZWFDb2RlcztcbiAgICAgICAgZGVsZXRlIGNvdW50cnkucHJpb3JpdHk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLiNzb3J0Q291bnRyaWVzV2l0aFNlbGVjdGVkQW5kRGVmYXVsdCh0aGlzLnNlbGVjdGVkQ291bnRyeSk7XG5cbiAgICBpZiAodGhpcy5zdXBwb3J0ZWRDb3VudHJ5SVNPcyAmJiB0aGlzLnN1cHBvcnRlZENvdW50cnlJU09zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuY291bnRyaWVzID0gdGhpcy5jb3VudHJpZXMuZmlsdGVyKFxuICAgICAgICAoY291bnRyeTogU2t5Q291bnRyeUZpZWxkQ291bnRyeSkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLnN1cHBvcnRlZENvdW50cnlJU09zLmluZGV4T2YoY291bnRyeS5pc28yKSA+PSAwO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gICNzb3J0Q291bnRyaWVzV2l0aFNlbGVjdGVkQW5kRGVmYXVsdChcbiAgICBzZWxlY3RlZENvdW50cnk6IFNreUNvdW50cnlGaWVsZENvdW50cnkgfCB1bmRlZmluZWRcbiAgKTogdm9pZCB7XG4gICAgbGV0IHNlbGVjdGVkQ291bnRyeUluZGV4OiBudW1iZXI7XG4gICAgbGV0IHNlbGVjdGVkQ291bnRyeURhdGE6IFNreUNvdW50cnlGaWVsZENvdW50cnk7XG5cbiAgICBjb25zdCBzb3J0ZWROZXdDb3VudHJpZXMgPSB0aGlzLmNvdW50cmllcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICgodGhpcy4jZGVmYXVsdENvdW50cnlEYXRhICYmXG4gICAgICAgICAgdGhpcy4jY291bnRyaWVzRXF1YWwoYSwgdGhpcy4jZGVmYXVsdENvdW50cnlEYXRhKSkgfHxcbiAgICAgICAgICAoYS5uYW1lICYmIGIubmFtZSAmJiBhLm5hbWUgPCBiLm5hbWUpKSAmJlxuICAgICAgICAoIXRoaXMuI2RlZmF1bHRDb3VudHJ5RGF0YSB8fFxuICAgICAgICAgICF0aGlzLiNjb3VudHJpZXNFcXVhbCh0aGlzLiNkZWZhdWx0Q291bnRyeURhdGEsIGIpKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHNlbGVjdGVkQ291bnRyeSkge1xuICAgICAgLy8gTm90ZTogV2UgYXJlIGxvb2tpbmcgdXAgdGhpcyBkYXRhIGhlcmUgdG8gZW5zdXJlIHdlIGFyZSB1c2luZyB0aGUgb2ZmaWNpYWwgZGF0YSBmcm9tIHRoZVxuICAgICAgLy8gbGlicmFyeSBhbmQgbm90IHRoZSBkYXRhIHByb3ZpZGVkIGJ5IHRoZSB1c2VyIG9uIGluaXRpYWxpemF0aW9uIG9mIHRoZSBjb21wb25lbnRcbiAgICAgIGNvbnN0IGZvdW5kQ291bnRyeSA9IHRoaXMuY291bnRyaWVzLmZpbmQoXG4gICAgICAgIChjb3VudHJ5KSA9PiBjb3VudHJ5LmlzbzIgPT09IHNlbGVjdGVkQ291bnRyeS5pc28yLnRvTG9jYWxlTG93ZXJDYXNlKClcbiAgICAgICk7XG5cbiAgICAgIGlmIChmb3VuZENvdW50cnkpIHtcbiAgICAgICAgc2VsZWN0ZWRDb3VudHJ5RGF0YSA9IGZvdW5kQ291bnRyeTtcbiAgICAgICAgc2VsZWN0ZWRDb3VudHJ5SW5kZXggPSB0aGlzLmNvdW50cmllcy5pbmRleE9mKHNlbGVjdGVkQ291bnRyeURhdGEpO1xuXG4gICAgICAgIGlmIChzZWxlY3RlZENvdW50cnlJbmRleCA+PSAwKSB7XG4gICAgICAgICAgdGhpcy5jb3VudHJpZXMuc3BsaWNlKHNlbGVjdGVkQ291bnRyeUluZGV4LCAxKTtcbiAgICAgICAgICBzb3J0ZWROZXdDb3VudHJpZXMuc3BsaWNlKDAsIDAsIHNlbGVjdGVkQ291bnRyeURhdGEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5jb3VudHJpZXMgPSBzb3J0ZWROZXdDb3VudHJpZXM7XG4gIH1cblxuICAjdXBkYXRlSW5wdXRCb3goKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5wdXRCb3hIb3N0U3ZjICYmIHRoaXMuaW5wdXRUZW1wbGF0ZVJlZikge1xuICAgICAgdGhpcy5pbnB1dEJveEhvc3RTdmMucG9wdWxhdGUoe1xuICAgICAgICBpbnB1dFRlbXBsYXRlOiB0aGlzLmlucHV0VGVtcGxhdGVSZWYsXG4gICAgICAgIGljb25zSW5zZXRUZW1wbGF0ZTpcbiAgICAgICAgICB0aGlzLmN1cnJlbnRUaGVtZSA9PT0gJ21vZGVybidcbiAgICAgICAgICAgID8gdGhpcy5zZWFyY2hJY29uVGVtcGxhdGVSZWZcbiAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIWlucHV0Qm94SG9zdFN2Y1wiPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRUZW1wbGF0ZVJlZlwiPjwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjaW5wdXRUZW1wbGF0ZVJlZj5cbiAgPHNwYW5cbiAgICBjbGFzcz1cInNreS1jb3VudHJ5LWZpZWxkLWNvbnRhaW5lclwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS1jb3VudHJ5LWZpZWxkLWRpc2FibGVkJzogZGlzYWJsZWRcbiAgICB9XCJcbiAgPlxuICAgIDxza3ktYXV0b2NvbXBsZXRlXG4gICAgICBbYXJpYUxhYmVsbGVkQnldPVwiaW5wdXRJZFwiXG4gICAgICBbZGF0YV09XCJjb3VudHJpZXNcIlxuICAgICAgW3Byb3BlcnRpZXNUb1NlYXJjaF09XCJbJ25hbWUnLCAnaXNvMiddXCJcbiAgICAgIFtzZWFyY2hSZXN1bHRUZW1wbGF0ZV09XCJjb3VudHJ5U2VhcmNoUmVzdWx0VGVtcGxhdGVcIlxuICAgICAgW3NlYXJjaFRleHRNaW5pbXVtQ2hhcmFjdGVyc109XCJzZWFyY2hUZXh0TWluaW11bUNoYXJhY3RlcnNcIlxuICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvbkNvdW50cnlTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwic2t5LWNvdW50cnktZmllbGQtaW5wdXRcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ3NreS1jb3VudHJ5LWZpZWxkLWlucHV0LXdpdGgtZmxhZyc6XG4gICAgICAgICAgICBzZWxlY3RlZENvdW50cnkgJiYgc2VsZWN0ZWRDb3VudHJ5LmlzbzIgJiYgIWhpZGVTZWxlY3RlZENvdW50cnlGbGFnXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIHNlbGVjdGVkQ291bnRyeSAmJiBzZWxlY3RlZENvdW50cnkuaXNvMiAmJiAhaGlkZVNlbGVjdGVkQ291bnRyeUZsYWdcbiAgICAgICAgICBcIlxuICAgICAgICAgIGNsYXNzPVwic2t5LWNvdW50cnktZmllbGQtZmxhZ1wiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIml0aV9fZmxhZ1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCInaXRpX18nICsgc2VsZWN0ZWRDb3VudHJ5LmlzbzIudG9Mb3dlckNhc2UoKVwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgY2xhc3M9XCJza3ktZm9ybS1jb250cm9sXCJcbiAgICAgICAgICBuYW1lPVwic2VsZWN0ZWRDb3VudHJ5XCJcbiAgICAgICAgICByb3dzPVwiMVwiXG4gICAgICAgICAgc2t5QXV0b2NvbXBsZXRlXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgICdza3l1eF9jb3VudHJ5X2ZpZWxkX3NlYXJjaF9wbGFjZWhvbGRlcicgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICBcIlxuICAgICAgICAgIFthdHRyLmlkXT1cImlucHV0SWRcIlxuICAgICAgICAgIFthdXRvY29tcGxldGVBdHRyaWJ1dGVdPVwiYXV0b2NvbXBsZXRlQXR0cmlidXRlXCJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY291bnRyeVNlYXJjaEZvcm1Db250cm9sXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgICAgICBjb250ZXh0Py5zaG93UGxhY2Vob2xkZXJUZXh0IHx8IGN1cnJlbnRUaGVtZSA9PT0gJ2RlZmF1bHQnXG4gICAgICAgICAgICAgID8gKCdza3l1eF9jb3VudHJ5X2ZpZWxkX3NlYXJjaF9wbGFjZWhvbGRlcicgfCBza3lMaWJSZXNvdXJjZXMpXG4gICAgICAgICAgICAgIDogJydcbiAgICAgICAgICBcIlxuICAgICAgICAgIChibHVyKT1cIm9uQXV0b2NvbXBsZXRlQmx1cigpXCJcbiAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICA8L2Rpdj5cbiAgICA8L3NreS1hdXRvY29tcGxldGU+XG4gIDwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIiAjY291bnRyeVNlYXJjaFJlc3VsdFRlbXBsYXRlPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktY291bnRyeS1maWVsZC1zZWFyY2gtcmVzdWx0LWZsYWdcIlxuICAgIFtuZ0NsYXNzXT1cIidpdGlfX2ZsYWcgaXRpX18nICsgaXRlbS5pc28yLnRvTG93ZXJDYXNlKClcIlxuICA+PC9kaXY+XG4gIHt7IGl0ZW0ubmFtZSB9fVxuICA8c3BhbiAqbmdJZj1cImluY2x1ZGVQaG9uZUluZm9cIiBjbGFzcz1cInNreS1kZWVtcGhhc2l6ZWRcIj5cbiAgICB7eyBpdGVtLmRpYWxDb2RlIH19XG4gIDwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gVGhpcyB0ZW1wbGF0ZSBzaG91bGQgb25seSBiZSB1c2VkIGluIG1vZGVybiB0aGVtZSBpbnB1dCBib3hlcy4gLS0+XG48bmctdGVtcGxhdGUgI3NlYXJjaEljb25UZW1wbGF0ZVJlZj5cbiAgPGRpdiBjbGFzcz1cInNreS1pbnB1dC1ncm91cC1pY29uIHNreS1pbnB1dC1ib3gtaWNvbi1pbnNldFwiPlxuICAgIDxza3ktaWNvbiBpY29uVHlwZT1cInNreXV4XCIgaWNvbj1cInNlYXJjaFwiPjwvc2t5LWljb24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
432
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyeS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3NyYy9saWIvbW9kdWxlcy9jb3VudHJ5LWZpZWxkL2NvdW50cnktZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC9zcmMvbGliL21vZHVsZXMvY291bnRyeS1maWVsZC9jb3VudHJ5LWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUVaLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFdBQVcsRUFFWCxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsYUFBYSxFQUNiLFNBQVMsRUFDVCxPQUFPLEVBQ1Asa0JBQWtCLEdBR25CLE1BQU0sZ0JBQWdCLENBQUM7QUFLeEIsT0FBTyxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFLN0YsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7Ozs7O0FBRWhGLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxDQUFDO0FBRWxDLE1BQU0sMkJBQTJCLEdBQUc7SUFDbEMsT0FBTyxFQUFFLGFBQWE7SUFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztJQUN2RCxLQUFLLEVBQUUsSUFBSTtDQUNaLENB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LDhGQWtJN0IsNkJBQTZCLGtJQXNFaEMsV0FBVyx1SUFNWCxXQUFXLDJDQ3hRckIsby9FQTZFQTsyRkRoQmEsd0JBQXdCO2tCQVBwQyxTQUFTOytCQUNFLG1CQUFtQixhQUdsQixDQUFDLDJCQUEyQixDQUFDLG1CQUN2Qix1QkFBdUIsQ0FBQyxNQUFNOzswQkF5UDVDLFFBQVE7OzBCQUNSLFFBQVE7NENBalBKLHFCQUFxQjtzQkFEM0IsS0FBSztnQkFVSyxjQUFjO3NCQUR4QixLQUFLO2dCQTJCSyxRQUFRO3NCQURsQixLQUFLO2dCQTRCSyx1QkFBdUI7c0JBRGpDLEtBQUs7Z0JBZUssZ0JBQWdCO3NCQUQxQixLQUFLO2dCQWdCSyxvQkFBb0I7c0JBRDlCLEtBQUs7Z0JBbUJDLHFCQUFxQjtzQkFEM0IsTUFBTTtnQkFhQSxrQ0FBa0M7c0JBRHhDLFNBQVM7dUJBQUMsNkJBQTZCO2dCQXlFakMsZ0JBQWdCO3NCQUp0QixTQUFTO3VCQUFDLGtCQUFrQixFQUFFO3dCQUM3QixJQUFJLEVBQUUsV0FBVzt3QkFDakIsTUFBTSxFQUFFLElBQUk7cUJBQ2I7Z0JBT00scUJBQXFCO3NCQUozQixTQUFTO3VCQUFDLHVCQUF1QixFQUFFO3dCQUNsQyxJQUFJLEVBQUUsV0FBVzt3QkFDakIsTUFBTSxFQUFFLElBQUk7cUJBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVHlwZSxcbiAgVmlld0NoaWxkLFxuICBmb3J3YXJkUmVmLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMSURBVE9SUyxcbiAgTmdDb250cm9sLFxuICBOZ01vZGVsLFxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvcixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU2t5QXBwV2luZG93UmVmIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHsgU2t5SW5wdXRCb3hIb3N0U2VydmljZSB9IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lUaGVtZVNlcnZpY2UgfSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQgJ2ludGwtdGVsLWlucHV0JztcbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUtaW5wdXQuZGlyZWN0aXZlJztcbmltcG9ydCB7IFNreUF1dG9jb21wbGV0ZVNlbGVjdGlvbkNoYW5nZSB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS90eXBlcy9hdXRvY29tcGxldGUtc2VsZWN0aW9uLWNoYW5nZSc7XG5cbmltcG9ydCB7IFNreUNvdW50cnlGaWVsZENvdW50cnkgfSBmcm9tICcuL3R5cGVzL2NvdW50cnknO1xuaW1wb3J0IHsgU2t5Q291bnRyeUZpZWxkQ29udGV4dCB9IGZyb20gJy4vdHlwZXMvY291bnRyeS1maWVsZC1jb250ZXh0JztcbmltcG9ydCB7IFNLWV9DT1VOVFJZX0ZJRUxEX0NPTlRFWFQgfSBmcm9tICcuL3R5cGVzL2NvdW50cnktZmllbGQtY29udGV4dC10b2tlbic7XG5cbmNvbnN0IERFRkFVTFRfQ09VTlRSWV9DT0RFID0gJ3VzJztcblxuY29uc3QgU0tZX0NPVU5UUllfRklFTERfVkFMSURBVE9SID0ge1xuICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTa3lDb3VudHJ5RmllbGRDb21wb25lbnQpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbmxldCB1bmlxdWVJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1jb3VudHJ5LWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvdW50cnktZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb3VudHJ5LWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1NLWV9DT1VOVFJZX0ZJRUxEX1ZBTElEQVRPUl0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lDb3VudHJ5RmllbGRDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95LCBPbkluaXQsIFZhbGlkYXRvclxue1xuICAvKipcbiAgICogVGhlIHZhbHVlIGZvciB0aGUgSFRNTCBgYXV0b2NvbXBsZXRlYCBhdHRyaWJ1dGUgb24gdGhlIGZvcm0gaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXV0b2NvbXBsZXRlQXR0cmlidXRlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBbSW50ZXJuYXRpb25hbCBPcmdhbml6YXRpb24gZm9yIFN0YW5kYXJkaXphdGlvbiBBbHBoYSAyXShodHRwczovL3d3dy5uYXRpb25zb25saW5lLm9yZy9vbmV3b3JsZC9jb3VudHJ5X2NvZGVfbGlzdC5odG0pXG4gICAqIGNvdW50cnkgY29kZSBmb3IgdGhlIGRlZmF1bHQgY291bnRyeS5cbiAgICogV2hlbiBzZWFyY2ggcmVzdWx0cyBpbmNsdWRlIHRoZSBkZWZhdWx0IGNvdW50cnksIGl0IGFwcGVhcnMgYXQgdGhlIHRvcCBvZiB0aGUgbGlzdC5cbiAgICogQGRlZmF1bHQgXCJ1c1wiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRlZmF1bHRDb3VudHJ5KHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICB2YWx1ZSA9IERFRkFVTFRfQ09VTlRSWV9DT0RFO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy4jX2RlZmF1bHRDb3VudHJ5KSB7XG4gICAgICB0aGlzLiNfZGVmYXVsdENvdW50cnkgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICB0aGlzLiNkZWZhdWx0Q291bnRyeURhdGEgPSB0aGlzLmNvdW50cmllcy5maW5kKFxuICAgICAgICAoY291bnRyeSkgPT4gY291bnRyeS5pc28yID09PSB0aGlzLiNfZGVmYXVsdENvdW50cnlcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuI3NvcnRDb3VudHJpZXNXaXRoU2VsZWN0ZWRBbmREZWZhdWx0KHRoaXMuc2VsZWN0ZWRDb3VudHJ5KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRlZmF1bHRDb3VudHJ5KCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19kZWZhdWx0Q291bnRyeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRpc2FibGUgdGhlIGNvdW50cnkgZmllbGQgb24gdGVtcGxhdGUtZHJpdmVuIGZvcm1zLiBEb24ndCB1c2UgdGhpcyBpbnB1dCBvbiByZWFjdGl2ZSBmb3JtcyBiZWNhdXNlIHRoZXkgbWF5IG92ZXJ3cml0ZSB0aGUgaW5wdXQgb3IgbGVhdmUgdGhlIGNvbnRyb2wgb3V0IG9mIHN5bmMuXG4gICAqIFRvIHNldCB0aGUgZGlzYWJsZWQgc3RhdGUgb24gcmVhY3RpdmUgZm9ybXMsIHVzZSB0aGUgYEZvcm1Db250cm9sYCBpbnN0ZWFkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkaXNhYmxlZChpc0Rpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy4jcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTtcblxuICAgIGlmICghaXNEaXNhYmxlZCkge1xuICAgICAgdGhpcy4jYWRkRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB9XG5cbiAgICB0aGlzLiNfZGlzYWJsZWQgPSBpc0Rpc2FibGVkID8/IGZhbHNlO1xuXG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuY291bnRyeVNlYXJjaEZvcm1Db250cm9sLmRpc2FibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb3VudHJ5U2VhcmNoRm9ybUNvbnRyb2wuZW5hYmxlKCk7XG4gICAgfVxuXG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byBoaWRlIHRoZSBmbGFnIGluIHRoZSBpbnB1dCBlbGVtZW50LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBoaWRlU2VsZWN0ZWRDb3VudHJ5RmxhZyh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuI19oaWRlU2VsZWN0ZWRDb3VudHJ5RmxhZyA9IHZhbHVlID8/IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGdldCBoaWRlU2VsZWN0ZWRDb3VudHJ5RmxhZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2hpZGVTZWxlY3RlZENvdW50cnlGbGFnO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gaW5jbHVkZSBwaG9uZSBpbmZvcm1hdGlvbiBpbiB0aGUgc2VsZWN0ZWQgY291bnRyeSBhbmQgY291bnRyeSBkcm9wZG93bi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICogQGludGVybmFsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGluY2x1ZGVQaG9uZUluZm8odmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfaW5jbHVkZVBob25lSW5mbyA9IHZhbHVlID8/IGZhbHNlO1xuXG4gICAgdGhpcy4jc2V0dXBDb3VudHJpZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW5jbHVkZVBob25lSW5mbygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy4jX2luY2x1ZGVQaG9uZUluZm87XG4gIH1cblxuICAvKipcbiAgICogVGhlIFtJbnRlcm5hdGlvbmFsIE9yZ2FuaXphdGlvbiBmb3IgU3RhbmRhcmRpemF0aW9uIEFscGhhIDJdKGh0dHBzOi8vd3d3Lm5hdGlvbnNvbmxpbmUub3JnL29uZXdvcmxkL2NvdW50cnlfY29kZV9saXN0Lmh0bSlcbiAgICogY291bnRyeSBjb2RlcyBmb3IgdGhlIGNvdW50cmllcyB0aGF0IHVzZXJzIGNhbiBzZWxlY3QuIEJ5IGRlZmF1bHQsIGFsbCBjb3VudHJpZXMgYXJlIGF2YWlsYWJsZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc3VwcG9ydGVkQ291bnRyeUlTT3ModmFsdWU6IHN0cmluZ1tdIHwgdW5kZWZpbmVkKSB7XG4gICAgLy8gRW5zdXJlIGFsbCB2YWx1ZXMgYXJlIHRoZSBzYW1lIGNhc2UuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLm1hcCgodikgPT4gdi50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG5cbiAgICB0aGlzLiNfc3VwcG9ydGVkQ291bnRyeUlTT3MgPSB2YWx1ZTtcbiAgICB0aGlzLiNzZXR1cENvdW50cmllcygpO1xuICB9XG5cbiAgcHVibGljIGdldCBzdXBwb3J0ZWRDb3VudHJ5SVNPcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuI19zdXBwb3J0ZWRDb3VudHJ5SVNPcyB8fCBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHRoZSBzZWxlY3RlZCBjb3VudHJ5IGNoYW5nZXMuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHNlbGVjdGVkQ291bnRyeUNoYW5nZTogRXZlbnRFbWl0dGVyPFNreUNvdW50cnlGaWVsZENvdW50cnk+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPFNreUNvdW50cnlGaWVsZENvdW50cnk+KCk7XG5cbiAgcHVibGljIGNvdW50cmllczogU2t5Q291bnRyeUZpZWxkQ291bnRyeVtdID0gW107XG5cbiAgcHVibGljIGNvdW50cnlTZWFyY2hGb3JtQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sO1xuXG4gIHB1YmxpYyBpc0lucHV0Rm9jdXNlZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBzZWFyY2hUZXh0TWluaW11bUNoYXJhY3RlcnMgPSAyO1xuXG4gIEBWaWV3Q2hpbGQoU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUpXG4gIHB1YmxpYyBjb3VudHJ5U2VhcmNoQXV0b2NvbXBsZXRlRGlyZWN0aXZlOlxuICAgIHwgU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmVcbiAgICB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgc2V0IHNlbGVjdGVkQ291bnRyeShuZXdDb3VudHJ5OiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5IHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCF0aGlzLiNjb3VudHJpZXNBcmVFcXVhbCh0aGlzLnNlbGVjdGVkQ291bnRyeSwgbmV3Q291bnRyeSkpIHtcbiAgICAgIGNvbnN0IG5ld0NvdW50cnlJc28gPSBuZXdDb3VudHJ5ICYmIG5ld0NvdW50cnkuaXNvMjtcbiAgICAgIGlmIChuZXdDb3VudHJ5SXNvKSB7XG4gICAgICAgIGNvbnN0IGlzb0NvdW50cnkgPSB0aGlzLmNvdW50cmllcy5maW5kKFxuICAgICAgICAgIChjb3VudHJ5KSA9PiBjb3VudHJ5LmlzbzIgPT09IG5ld0NvdW50cnlJc29cbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoaXNvQ291bnRyeSkge1xuICAgICAgICAgIG5ld0NvdW50cnkgPSBpc29Db3VudHJ5O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuI19zZWxlY3RlZENvdW50cnkgPSBuZXdDb3VudHJ5O1xuXG4gICAgICB0aGlzLiNzb3J0Q291bnRyaWVzV2l0aFNlbGVjdGVkQW5kRGVmYXVsdChuZXdDb3VudHJ5KTtcblxuICAgICAgdGhpcy4jaW50ZXJuYWxGb3JtQ2hhbmdlID0gdHJ1ZTtcbiAgICAgIHRoaXMuY291bnRyeVNlYXJjaEZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRDb3VudHJ5KTtcblxuICAgICAgaWYgKCF0aGlzLiNpc0luaXRpYWxDaGFuZ2UpIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZShuZXdDb3VudHJ5KTtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcblxuICAgICAgICB0aGlzLnNlbGVjdGVkQ291bnRyeUNoYW5nZS5lbWl0KG5ld0NvdW50cnkpO1xuICAgICAgfVxuXG4gICAgICAvLyBEbyBub3QgbWFyayB0aGUgZmllbGQgYXMgXCJkaXJ0eVwiXG4gICAgICAvLyBpZiB0aGUgZmllbGQgaGFzIGJlZW4gaW5pdGlhbGl6ZWQgd2l0aCBhIHZhbHVlLlxuICAgICAgaWYgKHRoaXMuI2lzSW5pdGlhbENoYW5nZSAmJiB0aGlzLiNuZ0NvbnRyb2wgJiYgdGhpcy4jbmdDb250cm9sLmNvbnRyb2wpIHtcbiAgICAgICAgdGhpcy4jbmdDb250cm9sLmNvbnRyb2wubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy4jaXNJbml0aWFsQ2hhbmdlID0gZmFsc2U7XG5cbiAgICAgIC8qKlxuICAgICAgICogVGhlIHNlY29uZCBwb3J0aW9uIG9mIHRoaXMgaWYgc3RhdGVtZW50IGlzIGNvbXBsZXguIFRoZSBjb250cm9sIHR5cGUgY2hlY2sgZW5zdXJlcyB0aGF0XG4gICAgICAgKiB3ZSBvbmx5IHdhdGNoIGZvciB0aGUgaW5pdGlhbCB0aW1lIHRocm91Z2ggdGhpcyBmdW5jdGlvbiBvbiByZWFjdGl2ZSBmb3Jtcy4gSG93ZXZlcixcbiAgICAgICAqIHRlbXBsYXRlIGZvcm1zIHdpbGwgc2VuZCB0aHJvdWdoIGBudWxsYCBhbmQgdGhlbiBgdW5kZWZpbmVkYCBvbiBlbXB0eSBpbml0aWFsaXphdGlvblxuICAgICAgICogc28gd2UgaGF2ZSB0byBjaGVjayBmb3Igd2hlbiB0aGUgbm9uLW51bGwgcGFzcyB0aHJvdWdoIGhhcHBlbnMuXG4gICAgICAgKi9cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGhpcy4jaXNJbml0aWFsQ2hhbmdlICYmXG4gICAgICAoISh0aGlzLiNuZ0NvbnRyb2wgaW5zdGFuY2VvZiBOZ01vZGVsKSB8fCBuZXdDb3VudHJ5ICE9PSBudWxsKVxuICAgICkge1xuICAgICAgdGhpcy4jaXNJbml0aWFsQ2hhbmdlID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3RlZENvdW50cnkoKTogU2t5Q291bnRyeUZpZWxkQ291bnRyeSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19zZWxlY3RlZENvdW50cnk7XG4gIH1cblxuICBwdWJsaWMgY29udGV4dDogU2t5Q291bnRyeUZpZWxkQ29udGV4dCB8IG51bGwgPSBpbmplY3QoXG4gICAgU0tZX0NPVU5UUllfRklFTERfQ09OVEVYVCxcbiAgICB7XG4gICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICB9XG4gICk7XG5cbiAgcHVibGljIGN1cnJlbnRUaGVtZSA9ICdkZWZhdWx0JztcblxuICBwdWJsaWMgaW5wdXRJZDogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0VGVtcGxhdGVSZWYnLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlLFxuICB9KVxuICBwdWJsaWMgaW5wdXRUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgnc2VhcmNoSWNvblRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgcHVibGljIHNlYXJjaEljb25UZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgI2NoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZjtcblxuICAjZGVmYXVsdENvdW50cnlEYXRhOiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5IHwgdW5kZWZpbmVkO1xuXG4gICNlbFJlZjogRWxlbWVudFJlZjtcblxuICAjaWRsZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgI2luamVjdG9yOiBJbmplY3RvcjtcblxuICAjaW50ZXJuYWxGb3JtQ2hhbmdlID0gZmFsc2U7XG5cbiAgI2lzSW5pdGlhbENoYW5nZSA9IHRydWU7XG5cbiAgI25nQ29udHJvbDogTmdDb250cm9sIHwgbnVsbCA9IG51bGw7XG5cbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICN0aGVtZVN2YzogU2t5VGhlbWVTZXJ2aWNlIHwgdW5kZWZpbmVkO1xuXG4gICN3aW5kb3dSZWY6IFNreUFwcFdpbmRvd1JlZjtcblxuICAjX2RlZmF1bHRDb3VudHJ5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgI19kaXNhYmxlZCA9IGZhbHNlO1xuXG4gICNfaGlkZVNlbGVjdGVkQ291bnRyeUZsYWcgPSBmYWxzZTtcblxuICAjX2luY2x1ZGVQaG9uZUluZm8gPSBmYWxzZTtcblxuICAjX3NlbGVjdGVkQ291bnRyeTogU2t5Q291bnRyeUZpZWxkQ291bnRyeSB8IHVuZGVmaW5lZDtcblxuICAjX3N1cHBvcnRlZENvdW50cnlJU09zOiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgd2luZG93UmVmOiBTa3lBcHBXaW5kb3dSZWYsXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBpbnB1dEJveEhvc3RTdmM/OiBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHRoZW1lU3ZjPzogU2t5VGhlbWVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yID0gY2hhbmdlRGV0ZWN0b3I7XG4gICAgdGhpcy4jZWxSZWYgPSBlbFJlZjtcbiAgICB0aGlzLiN3aW5kb3dSZWYgPSB3aW5kb3dSZWY7XG4gICAgdGhpcy4jaW5qZWN0b3IgPSBpbmplY3RvcjtcbiAgICB0aGlzLiN0aGVtZVN2YyA9IHRoZW1lU3ZjO1xuXG4gICAgdGhpcy5pbnB1dElkID0gYHNreS1jb3VudHJ5LWZpZWxkLWlucHV0LSR7dW5pcXVlSWQrK31gO1xuXG4gICAgdGhpcy4jc2V0dXBDb3VudHJpZXMoKTtcblxuICAgIHRoaXMuY291bnRyeVNlYXJjaEZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFuZ3VsYXIgbGlmZWN5Y2xlIGhvb2sgZm9yIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBpbml0aWFsaXplZFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLiN1cGRhdGVJbnB1dEJveCgpO1xuXG4gICAgdGhpcy4jbmdDb250cm9sID0gdGhpcy4jaW5qZWN0b3IuZ2V0PE5nQ29udHJvbCB8IG51bGw+KFxuICAgICAgTmdDb250cm9sIGFzIHVua25vd24gYXMgVHlwZTxOZ0NvbnRyb2w+LFxuICAgICAgbnVsbFxuICAgICk7XG5cbiAgICBpZiAodGhpcy4jbmdDb250cm9sKSB7XG4gICAgICB0aGlzLiNuZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8qKlxuICAgICAgICogVGhlIGluaXRpYWwgY2hhbmdlIGJvb2xlYW4gaXMgdG8gZGV0ZXJtaW5lIGlmIHRoZSBmb3JtIGlzIHNldHRpbmcgdGhlIHZhbHVlLiBXaGVuIG5vIGZvcm1cbiAgICAgICAqIGlzIHByZXNlbnQgd2UgZG9uJ3Qgd2FudCB0byBpZ25vcmUgdGhlIGZpcnN0IGNoYW5nZS5cbiAgICAgICAqL1xuICAgICAgdGhpcy4jaXNJbml0aWFsQ2hhbmdlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmRlZmF1bHRDb3VudHJ5KSB7XG4gICAgICB0aGlzLmRlZmF1bHRDb3VudHJ5ID0gREVGQVVMVF9DT1VOVFJZX0NPREU7XG4gICAgfVxuXG4gICAgdGhpcy5jb3VudHJ5U2VhcmNoRm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChuZXdWYWx1ZSkgPT4ge1xuICAgICAgICBpZiAobmV3VmFsdWUgJiYgIXRoaXMuI2ludGVybmFsRm9ybUNoYW5nZSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gbmV3VmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLiNhZGRFdmVudExpc3RlbmVycygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy4jdGhlbWVTdmMpIHtcbiAgICAgIHRoaXMuI3RoZW1lU3ZjLnNldHRpbmdzQ2hhbmdlLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudFRoZW1lID0gY2hhbmdlLmN1cnJlbnRTZXR0aW5ncy50aGVtZS5uYW1lO1xuICAgICAgICB0aGlzLiN1cGRhdGVJbnB1dEJveCgpO1xuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBbmd1bGFyIGxpZmVjeWNsZSBob29rIGZvciB3aGVuIHRoZSBjb21wb25lbnQgaXMgZGVzdHJ1Y3RlZC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZENvdW50cnlDaGFuZ2UuY29tcGxldGUoKTtcbiAgICB0aGlzLiNyZW1vdmVFdmVudExpc3RlbmVycygpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjb21wb25lbnQncyB0b3VjaGVkIHZhbHVlIHdoZW4gdGhlIGF1dG9jb21wbGV0ZSBpcyBibHVycmVkXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIG9uQXV0b2NvbXBsZXRlQmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGNvdW50cnkgdG8gdmFsaWRhdGUgYWdhaW5zdCBiYXNlZCBvbiB0aGUgY291bnR5J3MgaXNvMiBjb2RlLlxuICAgKiBAcGFyYW0gbmV3Q291bnRyeSBUaGUgSW50ZXJuYXRpb25hbCBPcmdhbml6YXRpb24gZm9yIFN0YW5kYXJkaXphdGlvbidzIHR3by1sZXR0ZXIgY29kZVxuICAgKiBmb3IgdGhlIGRlZmF1bHQgY291bnRyeS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgb25Db3VudHJ5U2VsZWN0ZWQobmV3Q291bnRyeTogU2t5QXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdlKTogdm9pZCB7XG4gICAgaWYgKG5ld0NvdW50cnkuc2VsZWN0ZWRJdGVtKSB7XG4gICAgICB0aGlzLndyaXRlVmFsdWUoXG4gICAgICAgIHRoaXMuY291bnRyaWVzLmZpbmQoXG4gICAgICAgICAgKGNvdW50cnlJbmZvKSA9PiBjb3VudHJ5SW5mby5pc28yID09PSBuZXdDb3VudHJ5LnNlbGVjdGVkSXRlbS5pc28yXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZSh1bmRlZmluZWQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEFuZ3VsYXIgYXV0b21hdGljYWxseSBjb25zdHJ1Y3RzIHRoZXNlIG1ldGhvZHMuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgcHVibGljIG9uQ2hhbmdlID0gKHZhbHVlOiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5IHwgdW5kZWZpbmVkKSA9PiB7fTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIHB1YmxpYyBvblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShcbiAgICBmbjogKHZhbHVlOiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5IHwgdW5kZWZpbmVkKSA9PiB2b2lkXG4gICk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICAvLyBBbGxvd3MgQW5ndWxhciB0byBkaXNhYmxlIHRoZSBpbnB1dC5cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gZGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIGlmIChjb250cm9sLnZhbHVlKSB7XG4gICAgICBpZiAoXG4gICAgICAgICh0aGlzLnN1cHBvcnRlZENvdW50cnlJU09zICYmXG4gICAgICAgICAgdGhpcy5zdXBwb3J0ZWRDb3VudHJ5SVNPcy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgdGhpcy5zdXBwb3J0ZWRDb3VudHJ5SVNPcy5pbmRleE9mKGNvbnRyb2wudmFsdWUuaXNvMikgPCAwKSB8fFxuICAgICAgICAhdGhpcy5jb3VudHJpZXMuZmluZCgoY291bnRyeSkgPT4gY291bnRyeS5pc28yID09PSBjb250cm9sLnZhbHVlLmlzbzIpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHsgdW5zdXBwb3J0ZWRDb3VudHJ5OiB0cnVlIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogU2t5Q291bnRyeUZpZWxkQ291bnRyeSB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gdmFsdWU7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAjYWRkRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgdGhpcy4jcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTtcblxuICAgIHRoaXMuI2lkbGUgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgY29uc3QgZG9jdW1lbnRPYmogPSB0aGlzLiN3aW5kb3dSZWYubmF0aXZlV2luZG93LmRvY3VtZW50O1xuXG4gICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50T2JqLCAnbW91c2Vkb3duJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNpZGxlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuaXNJbnB1dEZvY3VzZWQgPSB0aGlzLiNlbFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7XG4gICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4oZG9jdW1lbnRPYmosICdmb2N1c2luJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNpZGxlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuaXNJbnB1dEZvY3VzZWQgPSB0aGlzLiNlbFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7XG4gICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICAjY291bnRyaWVzQXJlRXF1YWwoXG4gICAgY291bnRyeTE6IFNreUNvdW50cnlGaWVsZENvdW50cnkgfCB1bmRlZmluZWQsXG4gICAgY291bnRyeTI6IFNreUNvdW50cnlGaWVsZENvdW50cnkgfCB1bmRlZmluZWRcbiAgKTogYm9vbGVhbiB7XG4gICAgaWYgKGNvdW50cnkxICYmIGNvdW50cnkyKSB7XG4gICAgICByZXR1cm4gY291bnRyeTEuaXNvMiA9PT0gY291bnRyeTIuaXNvMjtcbiAgICB9XG5cbiAgICAvLyBOT1RFOiBXZSBhcmUgZG9pbmcgdGhpcyBpbiAgdGhpcyB3YXkgYmVjYXVzZSB0ZW1wbGF0ZSBmb3JtcyB3aWxsIHNlbmQgdGhyb3VnaCBgbnVsbGBcbiAgICAvLyBhbmQgdGhlbiBgdW5kZWZpbmVkYCBvbiBlbXB0eSBpbml0aWFsaXphdGlvbi4gVGhlc2UgYXJlIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IGJ1dCB3aWxsXG4gICAgLy8gbm90IHBhc3MgYSBzdGFuZGFyZCB0cmlwbGUgZXF1YWxzIGNoZWNrLlxuICAgIHJldHVybiAhY291bnRyeTEgJiYgIWNvdW50cnkyO1xuICB9XG5cbiAgI2NvdW50cmllc0VxdWFsKFxuICAgIGE6IFNreUNvdW50cnlGaWVsZENvdW50cnksXG4gICAgYjogU2t5Q291bnRyeUZpZWxkQ291bnRyeVxuICApOiBib29sZWFuIHtcbiAgICByZXR1cm4gYS5pc28yID09PSBiLmlzbzIgJiYgYS5uYW1lID09PSBiLm5hbWU7XG4gIH1cblxuICAjcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgdGhpcy4jaWRsZS5uZXh0KCk7XG4gICAgdGhpcy4jaWRsZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgI3NldHVwQ291bnRyaWVzKCk6IHZvaWQge1xuICAgIC8qKlxuICAgICAqIFRoZSBqc29uIGZ1bmN0aW9ucyBoZXJlIGVuc3VyZXMgdGhhdCB3ZSBnZXQgYSBjb3B5IG9mIHRoZSBhcnJheSBhbmQgbm90IHRoZSBnbG9iYWwgb3JpZ2luYWwuXG4gICAgICogVGhpcyBlbnN1cmVzIHRoYXQgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoZSBjb21wb25lbnQgZG9uJ3Qgb3ZlcndyaXRlIHRoZSBvcmlnaW5hbCBkYXRhLlxuICAgICAqXG4gICAgICogV2UgbXVzdCB0eXBlIHRoZSB3aW5kb3cgb2JqZWN0IGFzIGFueSBoZXJlIGFzIHRoZSBpbnRsLXRlbC1pbnB1dCBsaWJyYXJ5IGFkZHMgaXRzIG9iamVjdFxuICAgICAqIHRvIHRoZSBtYWluIHdpbmRvdyBvYmplY3QuXG4gICAgICovXG4gICAgdGhpcy5jb3VudHJpZXMgPSBKU09OLnBhcnNlKFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgIEpTT04uc3RyaW5naWZ5KCh3aW5kb3cgYXMgYW55KS5pbnRsVGVsSW5wdXRHbG9iYWxzLmdldENvdW50cnlEYXRhKCkpXG4gICAgKTtcblxuICAgIC8vIElnbm9yaW5nIGNvdmVyYWdlIGhlcmUgYXMgdGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgcmVsZWFzZS5cbiAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgIGlmICghdGhpcy5pbmNsdWRlUGhvbmVJbmZvICYmICF0aGlzLmhpZGVTZWxlY3RlZENvdW50cnlGbGFnKSB7XG4gICAgICBpZiAoXG4gICAgICAgIChcbiAgICAgICAgICB0aGlzLiNlbFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQgYXMgSFRNTEVsZW1lbnRcbiAgICAgICAgKT8uY2xhc3NMaXN0Py5jb250YWlucygnc2t5LXBob25lLWZpZWxkLWNvdW50cnktc2VhcmNoJylcbiAgICAgICkge1xuICAgICAgICB0aGlzLmluY2x1ZGVQaG9uZUluZm8gPSB0cnVlO1xuICAgICAgICB0aGlzLmhpZGVTZWxlY3RlZENvdW50cnlGbGFnID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICghdGhpcy5pbmNsdWRlUGhvbmVJbmZvKSB7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBsaWJyYXJ5IHdlIGdldCB0aGUgY291bnRyeSBkYXRhIGZyb20gaW5jbHVkZXMgZXh0cmEgcGhvbmUgcHJvcGVydGllcy5cbiAgICAgICAqIFdlIHdhbnQgdG8gcmVtb3ZlIHRoZXNlIHVubGVzcyB3ZSBhcmUgaW4gYSBwaG9uZSBmaWVsZFxuICAgICAgICovXG4gICAgICB0aGlzLmNvdW50cmllcy5mb3JFYWNoKChjb3VudHJ5KSA9PiB7XG4gICAgICAgIGRlbGV0ZSBjb3VudHJ5LmRpYWxDb2RlO1xuICAgICAgICBkZWxldGUgY291bnRyeS5hcmVhQ29kZXM7XG4gICAgICAgIGRlbGV0ZSBjb3VudHJ5LnByaW9yaXR5O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy4jc29ydENvdW50cmllc1dpdGhTZWxlY3RlZEFuZERlZmF1bHQodGhpcy5zZWxlY3RlZENvdW50cnkpO1xuXG4gICAgaWYgKHRoaXMuc3VwcG9ydGVkQ291bnRyeUlTT3MgJiYgdGhpcy5zdXBwb3J0ZWRDb3VudHJ5SVNPcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmNvdW50cmllcyA9IHRoaXMuY291bnRyaWVzLmZpbHRlcihcbiAgICAgICAgKGNvdW50cnk6IFNreUNvdW50cnlGaWVsZENvdW50cnkpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5zdXBwb3J0ZWRDb3VudHJ5SVNPcy5pbmRleE9mKGNvdW50cnkuaXNvMikgPj0gMDtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAjc29ydENvdW50cmllc1dpdGhTZWxlY3RlZEFuZERlZmF1bHQoXG4gICAgc2VsZWN0ZWRDb3VudHJ5OiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5IHwgdW5kZWZpbmVkXG4gICk6IHZvaWQge1xuICAgIGxldCBzZWxlY3RlZENvdW50cnlJbmRleDogbnVtYmVyO1xuICAgIGxldCBzZWxlY3RlZENvdW50cnlEYXRhOiBTa3lDb3VudHJ5RmllbGRDb3VudHJ5O1xuXG4gICAgY29uc3Qgc29ydGVkTmV3Q291bnRyaWVzID0gdGhpcy5jb3VudHJpZXMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICAoKHRoaXMuI2RlZmF1bHRDb3VudHJ5RGF0YSAmJlxuICAgICAgICAgIHRoaXMuI2NvdW50cmllc0VxdWFsKGEsIHRoaXMuI2RlZmF1bHRDb3VudHJ5RGF0YSkpIHx8XG4gICAgICAgICAgKGEubmFtZSAmJiBiLm5hbWUgJiYgYS5uYW1lIDwgYi5uYW1lKSkgJiZcbiAgICAgICAgKCF0aGlzLiNkZWZhdWx0Q291bnRyeURhdGEgfHxcbiAgICAgICAgICAhdGhpcy4jY291bnRyaWVzRXF1YWwodGhpcy4jZGVmYXVsdENvdW50cnlEYXRhLCBiKSlcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChzZWxlY3RlZENvdW50cnkpIHtcbiAgICAgIC8vIE5vdGU6IFdlIGFyZSBsb29raW5nIHVwIHRoaXMgZGF0YSBoZXJlIHRvIGVuc3VyZSB3ZSBhcmUgdXNpbmcgdGhlIG9mZmljaWFsIGRhdGEgZnJvbSB0aGVcbiAgICAgIC8vIGxpYnJhcnkgYW5kIG5vdCB0aGUgZGF0YSBwcm92aWRlZCBieSB0aGUgdXNlciBvbiBpbml0aWFsaXphdGlvbiBvZiB0aGUgY29tcG9uZW50XG4gICAgICBjb25zdCBmb3VuZENvdW50cnkgPSB0aGlzLmNvdW50cmllcy5maW5kKFxuICAgICAgICAoY291bnRyeSkgPT4gY291bnRyeS5pc28yID09PSBzZWxlY3RlZENvdW50cnkuaXNvMi50b0xvY2FsZUxvd2VyQ2FzZSgpXG4gICAgICApO1xuXG4gICAgICBpZiAoZm91bmRDb3VudHJ5KSB7XG4gICAgICAgIHNlbGVjdGVkQ291bnRyeURhdGEgPSBmb3VuZENvdW50cnk7XG4gICAgICAgIHNlbGVjdGVkQ291bnRyeUluZGV4ID0gdGhpcy5jb3VudHJpZXMuaW5kZXhPZihzZWxlY3RlZENvdW50cnlEYXRhKTtcblxuICAgICAgICBpZiAoc2VsZWN0ZWRDb3VudHJ5SW5kZXggPj0gMCkge1xuICAgICAgICAgIHRoaXMuY291bnRyaWVzLnNwbGljZShzZWxlY3RlZENvdW50cnlJbmRleCwgMSk7XG4gICAgICAgICAgc29ydGVkTmV3Q291bnRyaWVzLnNwbGljZSgwLCAwLCBzZWxlY3RlZENvdW50cnlEYXRhKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY291bnRyaWVzID0gc29ydGVkTmV3Q291bnRyaWVzO1xuICB9XG5cbiAgI3VwZGF0ZUlucHV0Qm94KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlucHV0Qm94SG9zdFN2YyAmJiB0aGlzLmlucHV0VGVtcGxhdGVSZWYpIHtcbiAgICAgIHRoaXMuaW5wdXRCb3hIb3N0U3ZjLnBvcHVsYXRlKHtcbiAgICAgICAgaW5wdXRUZW1wbGF0ZTogdGhpcy5pbnB1dFRlbXBsYXRlUmVmLFxuICAgICAgICBpY29uc0luc2V0VGVtcGxhdGU6XG4gICAgICAgICAgdGhpcy5jdXJyZW50VGhlbWUgPT09ICdtb2Rlcm4nXG4gICAgICAgICAgICA/IHRoaXMuc2VhcmNoSWNvblRlbXBsYXRlUmVmXG4gICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbnB1dEJveEhvc3RTdmNcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0VGVtcGxhdGVSZWZcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2lucHV0VGVtcGxhdGVSZWY+XG4gIDxzcGFuXG4gICAgY2xhc3M9XCJza3ktY291bnRyeS1maWVsZC1jb250YWluZXJcIlxuICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICdza3ktY291bnRyeS1maWVsZC1kaXNhYmxlZCc6IGRpc2FibGVkXG4gICAgfVwiXG4gID5cbiAgICA8c2t5LWF1dG9jb21wbGV0ZVxuICAgICAgW2FyaWFMYWJlbGxlZEJ5XT1cImlucHV0SWRcIlxuICAgICAgW2RhdGFdPVwiY291bnRyaWVzXCJcbiAgICAgIFtwcm9wZXJ0aWVzVG9TZWFyY2hdPVwiWyduYW1lJywgJ2lzbzInXVwiXG4gICAgICBbc2VhcmNoUmVzdWx0VGVtcGxhdGVdPVwiY291bnRyeVNlYXJjaFJlc3VsdFRlbXBsYXRlXCJcbiAgICAgIFtzZWFyY2hUZXh0TWluaW11bUNoYXJhY3RlcnNdPVwic2VhcmNoVGV4dE1pbmltdW1DaGFyYWN0ZXJzXCJcbiAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25Db3VudHJ5U2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNreS1jb3VudHJ5LWZpZWxkLWlucHV0XCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICdza3ktY291bnRyeS1maWVsZC1pbnB1dC13aXRoLWZsYWcnOlxuICAgICAgICAgICAgc2VsZWN0ZWRDb3VudHJ5ICYmIHNlbGVjdGVkQ291bnRyeS5pc28yICYmICFoaWRlU2VsZWN0ZWRDb3VudHJ5RmxhZ1xuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBzZWxlY3RlZENvdW50cnkgJiYgc2VsZWN0ZWRDb3VudHJ5LmlzbzIgJiYgIWhpZGVTZWxlY3RlZENvdW50cnlGbGFnXG4gICAgICAgICAgXCJcbiAgICAgICAgICBjbGFzcz1cInNreS1jb3VudHJ5LWZpZWxkLWZsYWdcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJpdGlfX2ZsYWdcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwiJ2l0aV9fJyArIHNlbGVjdGVkQ291bnRyeS5pc28yLnRvTG93ZXJDYXNlKClcIlxuICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgIGNsYXNzPVwic2t5LWZvcm0tY29udHJvbFwiXG4gICAgICAgICAgbmFtZT1cInNlbGVjdGVkQ291bnRyeVwiXG4gICAgICAgICAgcm93cz1cIjFcIlxuICAgICAgICAgIHNreUF1dG9jb21wbGV0ZVxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAnc2t5dXhfY291bnRyeV9maWVsZF9zZWFyY2hfcGxhY2Vob2xkZXInIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbYXR0ci5pZF09XCJpbnB1dElkXCJcbiAgICAgICAgICBbYXV0b2NvbXBsZXRlQXR0cmlidXRlXT1cImF1dG9jb21wbGV0ZUF0dHJpYnV0ZVwiXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvdW50cnlTZWFyY2hGb3JtQ29udHJvbFwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICAgY29udGV4dD8uc2hvd1BsYWNlaG9sZGVyVGV4dCB8fCBjdXJyZW50VGhlbWUgPT09ICdkZWZhdWx0J1xuICAgICAgICAgICAgICA/ICgnc2t5dXhfY291bnRyeV9maWVsZF9zZWFyY2hfcGxhY2Vob2xkZXInIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgXCJcbiAgICAgICAgICAoYmx1cik9XCJvbkF1dG9jb21wbGV0ZUJsdXIoKVwiXG4gICAgICAgID48L3RleHRhcmVhPlxuICAgICAgPC9kaXY+XG4gICAgPC9za3ktYXV0b2NvbXBsZXRlPlxuICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgbGV0LWl0ZW09XCJpdGVtXCIgI2NvdW50cnlTZWFyY2hSZXN1bHRUZW1wbGF0ZT5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LWNvdW50cnktZmllbGQtc2VhcmNoLXJlc3VsdC1mbGFnXCJcbiAgICBbbmdDbGFzc109XCInaXRpX19mbGFnIGl0aV9fJyArIGl0ZW0uaXNvMi50b0xvd2VyQ2FzZSgpXCJcbiAgPjwvZGl2PlxuICB7eyBpdGVtLm5hbWUgfX1cbiAgPHNwYW4gKm5nSWY9XCJpbmNsdWRlUGhvbmVJbmZvXCIgY2xhc3M9XCJza3ktZGVlbXBoYXNpemVkXCI+XG4gICAge3sgaXRlbS5kaWFsQ29kZSB9fVxuICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIFRoaXMgdGVtcGxhdGUgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbiBtb2Rlcm4gdGhlbWUgaW5wdXQgYm94ZXMuIC0tPlxuPG5nLXRlbXBsYXRlICNzZWFyY2hJY29uVGVtcGxhdGVSZWY+XG4gIDxkaXYgY2xhc3M9XCJza3ktaW5wdXQtZ3JvdXAtaWNvbiBza3ktaW5wdXQtYm94LWljb24taW5zZXRcIj5cbiAgICA8c2t5LWljb24gaWNvblR5cGU9XCJza3l1eFwiIGljb249XCJzZWFyY2hcIj48L3NreS1pY29uPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|