@simpleangularcontrols/sac-common 16.0.0-rc.21 → 16.0.0-rc.22

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.
Files changed (115) hide show
  1. package/controls/grid/gridcolumnbase.d.ts +5 -1
  2. package/controls/grid/gridcolumnbase.d.ts.map +1 -1
  3. package/controls/treeview/treeview.d.ts +2 -2
  4. package/controls/treeview/treeview.d.ts.map +1 -1
  5. package/esm2022/common/basedatetimecontrol.mjs +1 -1
  6. package/esm2022/common/baseinputcontrol.mjs +1 -1
  7. package/esm2022/common/baselistcontrol.mjs +1 -1
  8. package/esm2022/common/basemodelcontrol.mjs +1 -1
  9. package/esm2022/common/baseselectcontrol.mjs +1 -1
  10. package/esm2022/common/baseuploadcontrol.mjs +1 -1
  11. package/esm2022/components/browser/browser.mjs +1 -1
  12. package/esm2022/components/browser/models/browserfiledeleterequest.mjs +1 -1
  13. package/esm2022/components/browser/models/browserfilerenamerequest.mjs +1 -1
  14. package/esm2022/components/browser/models/browserfilesaverequest.mjs +1 -1
  15. package/esm2022/components/browser/models/browsernodedeleterequest.mjs +1 -1
  16. package/esm2022/components/browser/models/browsernodenewrequest.mjs +1 -1
  17. package/esm2022/components/browser/models/browsernoderenamerequest.mjs +1 -1
  18. package/esm2022/components/browser/models/browsernoderequest.mjs +1 -1
  19. package/esm2022/controls/buttons/button.mjs +1 -1
  20. package/esm2022/controls/checkbox/checkbox.mjs +1 -1
  21. package/esm2022/controls/checkbox/radiobutton.mjs +1 -1
  22. package/esm2022/controls/checkbox/radiobuttons.mjs +1 -1
  23. package/esm2022/controls/confirm/confirm.button.mjs +1 -1
  24. package/esm2022/controls/confirm/confirm.mjs +1 -1
  25. package/esm2022/controls/confirm/confirm.service.mjs +1 -1
  26. package/esm2022/controls/contextmenu/contextmenu.mjs +1 -1
  27. package/esm2022/controls/contextmenu/contextmenuanchor.mjs +1 -1
  28. package/esm2022/controls/contextmenu/contextmenucontainer.mjs +1 -1
  29. package/esm2022/controls/contextmenu/contextmenuitem.mjs +1 -1
  30. package/esm2022/controls/contextmenu/contextmenuitembutton.mjs +1 -1
  31. package/esm2022/controls/datetime/date.mjs +1 -1
  32. package/esm2022/controls/datetime/dateselector.mjs +1 -1
  33. package/esm2022/controls/datetime/datetime.mjs +1 -1
  34. package/esm2022/controls/datetime/time.mjs +1 -1
  35. package/esm2022/controls/dialog/dialog.mjs +1 -1
  36. package/esm2022/controls/form/form.mjs +1 -1
  37. package/esm2022/controls/grid/grid.mjs +1 -1
  38. package/esm2022/controls/grid/gridbutton.mjs +1 -1
  39. package/esm2022/controls/grid/gridcolumn.mjs +1 -1
  40. package/esm2022/controls/grid/gridcolumnaction.mjs +1 -1
  41. package/esm2022/controls/grid/gridcolumnbase.mjs +16 -14
  42. package/esm2022/controls/grid/model.mjs +1 -1
  43. package/esm2022/controls/grid/paging.mjs +1 -1
  44. package/esm2022/controls/input/input.mjs +1 -1
  45. package/esm2022/controls/input/inputarea.mjs +1 -1
  46. package/esm2022/controls/input/inputcurrency.mjs +1 -1
  47. package/esm2022/controls/input/inputdecimal.mjs +1 -1
  48. package/esm2022/controls/input/inputemail.mjs +1 -1
  49. package/esm2022/controls/input/inputinteger.mjs +1 -1
  50. package/esm2022/controls/input/inputpassword.mjs +1 -1
  51. package/esm2022/controls/input/inputsearch.mjs +1 -1
  52. package/esm2022/controls/layout/formlayout.mjs +1 -1
  53. package/esm2022/controls/list/buildvaluestring.mjs +1 -1
  54. package/esm2022/controls/list/dropdown.mjs +1 -1
  55. package/esm2022/controls/list/dropdownoptions.mjs +1 -1
  56. package/esm2022/controls/list/listbox.mjs +1 -1
  57. package/esm2022/controls/multilanguage/multilanguageinput.mjs +1 -1
  58. package/esm2022/controls/multilanguage/multilanguageinputarea.mjs +1 -1
  59. package/esm2022/controls/static/formcontainer.mjs +1 -1
  60. package/esm2022/controls/static/staticlabel.mjs +1 -1
  61. package/esm2022/controls/tabs/tab.mjs +1 -1
  62. package/esm2022/controls/tabs/tabitem.mjs +1 -1
  63. package/esm2022/controls/tinymce/tinymce.mjs +1 -1
  64. package/esm2022/controls/tinymce/tinymcedialogsettings.mjs +1 -1
  65. package/esm2022/controls/tooltip/tooltip.mjs +1 -1
  66. package/esm2022/controls/treeview/treeview.mjs +6 -6
  67. package/esm2022/controls/upload/dropzonemultiple.mjs +1 -1
  68. package/esm2022/controls/upload/dropzonesingle.mjs +1 -1
  69. package/esm2022/controls/upload/uploadmultiple.mjs +1 -1
  70. package/esm2022/controls/upload/uploadsingle.mjs +1 -1
  71. package/esm2022/controls/validation/validationsummary.mjs +1 -1
  72. package/esm2022/controls/wizard/wizard.mjs +1 -1
  73. package/esm2022/controls/wizard/wizarditem.mjs +1 -1
  74. package/esm2022/enums/ControlHeight.mjs +1 -1
  75. package/esm2022/enums/IconType.mjs +1 -1
  76. package/esm2022/models/languagemodel.mjs +1 -1
  77. package/esm2022/services/sac-configuration.service.mjs +1 -1
  78. package/esm2022/services/sac-filebrowser.service.mjs +1 -1
  79. package/esm2022/services/sac-icon.service.mjs +1 -1
  80. package/esm2022/services/sac-language.service.mjs +1 -1
  81. package/esm2022/services/sac-localisation.service.mjs +1 -1
  82. package/esm2022/services/sac-validationkey.service.mjs +1 -1
  83. package/esm2022/utilities/convertion.mjs +1 -1
  84. package/esm2022/utilities/datatypes.mjs +1 -1
  85. package/esm2022/utilities/enums.mjs +1 -1
  86. package/esm2022/utilities/guid.mjs +1 -1
  87. package/esm2022/utilities/interpolation.mjs +1 -1
  88. package/esm2022/utilities/popuphelper.mjs +1 -1
  89. package/esm2022/utilities/positioning.mjs +1 -1
  90. package/esm2022/utilities/testingattribute.pipe.mjs +1 -1
  91. package/esm2022/validation/email.validator.mjs +1 -1
  92. package/esm2022/validation/equals.validator.mjs +1 -1
  93. package/esm2022/validation/invaliddate.validator.mjs +1 -1
  94. package/esm2022/validation/isDateValid.mjs +1 -1
  95. package/esm2022/validation/maxdate.validator.mjs +1 -1
  96. package/esm2022/validation/maxtime.validator.mjs +1 -1
  97. package/esm2022/validation/maxvalue.validator.mjs +1 -1
  98. package/esm2022/validation/mindate.validator.mjs +1 -1
  99. package/esm2022/validation/minfiles.validator.mjs +1 -1
  100. package/esm2022/validation/mintextlength.validator.mjs +1 -1
  101. package/esm2022/validation/mintime.validator.mjs +1 -1
  102. package/esm2022/validation/minvalue.validator.mjs +1 -1
  103. package/esm2022/validation/multilanguagerequired.validator.mjs +1 -1
  104. package/esm2022/validation/multilanguagerequiredany.validator.mjs +1 -1
  105. package/esm2022/validation/notequals.validator.mjs +1 -1
  106. package/esm2022/validation/pattern.validator.mjs +1 -1
  107. package/esm2022/validation/required.validator.mjs +1 -1
  108. package/esm2022/validation/validation.mjs +1 -1
  109. package/esm2022/validation/validationerrorcreator.mjs +1 -1
  110. package/esm2022/validation/validationerroritem.mjs +1 -1
  111. package/fesm2022/simpleangularcontrols-sac-common.mjs +668 -666
  112. package/fesm2022/simpleangularcontrols-sac-common.mjs.map +1 -1
  113. package/package.json +1 -1
  114. package/simpleangularcontrols-sac-common-16.0.0-rc.22.tgz +0 -0
  115. package/simpleangularcontrols-sac-common-16.0.0-rc.21.tgz +0 -0
@@ -83,4 +83,4 @@ window.addEventListener('scroll',this.onContentChange,true);cov_1cdwwf0oat().s[5
83
83
  */getLeftPosition(){cov_1cdwwf0oat().f[18]++;const value=(cov_1cdwwf0oat().s[54]++,this.popupHelper.getPositionLeft(this.content,this.tooltipcontainer,this.ref,this.getTooltipOffset(),this.getTooltipOffset(),this.position,true));cov_1cdwwf0oat().s[55]++;this.LeftPos=value;const requiredPosition=(cov_1cdwwf0oat().s[56]++,this.GetTooltipPosition());cov_1cdwwf0oat().s[57]++;if((cov_1cdwwf0oat().b[7][0]++,requiredPosition===TooltipPosition.left)||(cov_1cdwwf0oat().b[7][1]++,requiredPosition===TooltipPosition.right)){cov_1cdwwf0oat().b[6][0]++;cov_1cdwwf0oat().s[58]++;this.posArrowTop=this.getToolTipHeight()/2-6.5;}else{cov_1cdwwf0oat().b[6][1]++;cov_1cdwwf0oat().s[59]++;this.posArrowTop=null;}cov_1cdwwf0oat().s[60]++;return value;}/**
84
84
  * Calculates the position of the tooltip from the top
85
85
  */getTopPosition(){cov_1cdwwf0oat().f[19]++;const value=(cov_1cdwwf0oat().s[61]++,this.popupHelper.getPositionTop(this.content,this.tooltipcontainer,this.ref,this.getTooltipOffset(),this.getTooltipOffset(),this.position,true));cov_1cdwwf0oat().s[62]++;this.TopPos=value;const requiredPosition=(cov_1cdwwf0oat().s[63]++,this.GetTooltipPosition());cov_1cdwwf0oat().s[64]++;if((cov_1cdwwf0oat().b[9][0]++,requiredPosition===TooltipPosition.bottom)||(cov_1cdwwf0oat().b[9][1]++,requiredPosition===TooltipPosition.top)){cov_1cdwwf0oat().b[8][0]++;cov_1cdwwf0oat().s[65]++;this.posArrowLeft=this.getToolTipWidth()/2-6.5;}else{cov_1cdwwf0oat().b[8][1]++;cov_1cdwwf0oat().s[66]++;this.posArrowLeft=null;}cov_1cdwwf0oat().s[67]++;return value;}static{cov_1cdwwf0oat().s[68]++;this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"16.2.12",ngImport:i0,type:SacTooltipCommon,deps:[{token:i0.ChangeDetectorRef},{token:i0.ElementRef}],target:i0.ɵɵFactoryTarget.Directive});}static{cov_1cdwwf0oat().s[69]++;this.ɵdir=i0.ɵɵngDeclareDirective({minVersion:"14.0.0",version:"16.2.12",type:SacTooltipCommon,inputs:{e2eidentifier:"e2eidentifier",name:"name",position:"position",tooltiptext:"tooltiptext",inlinemode:"inlinemode"},viewQueries:[{propertyName:"content",first:true,predicate:["container"],descendants:true,static:true},{propertyName:"tooltip",first:true,predicate:["tooltip"],descendants:true}],ngImport:i0});}}export{SacTooltipCommon};cov_1cdwwf0oat().s[70]++;i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"16.2.12",ngImport:i0,type:SacTooltipCommon,decorators:[{type:Directive}],ctorParameters:function(){cov_1cdwwf0oat().f[20]++;cov_1cdwwf0oat().s[71]++;return[{type:i0.ChangeDetectorRef},{type:i0.ElementRef}];},propDecorators:{content:[{type:ViewChild,args:['container',{static:true}]}],e2eidentifier:[{type:Input}],name:[{type:Input}],position:[{type:Input}],tooltiptext:[{type:Input}],inlinemode:[{type:Input}],tooltip:[{type:ViewChild,args:['tooltip',{static:false}]}]}});//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NhYy1jb21tb24vc3JjL2NvbnRyb2xzL3Rvb2x0aXAvdG9vbHRpcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMxRCxPQUFPLEVBQXVDLFNBQVMsRUFBdUIsS0FBSyxFQUFxQixTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRXpJOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUNzQixnQkFBZ0I7SUFxRmxDLHdCQUF3QjtJQUV4Qix1QkFBdUI7SUFFdkI7OztPQUdHO0lBQ0gsWUFBNkIsS0FBd0IsRUFBbUIsR0FBZTtRQUExRCxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUFtQixRQUFHLEdBQUgsR0FBRyxDQUFZO1FBNUZ2RixxQkFBcUI7UUFFckI7O1dBRUc7UUFDYyxnQkFBVyxHQUFnQixJQUFJLFdBQVcsRUFBRSxDQUFDO1FBTzlEOztXQUVHO1FBQ0ssc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBTzNDOztXQUVHO1FBQ0ksNEJBQXVCLEdBQVksS0FBSyxDQUFDO1FBRWhEOztXQUVHO1FBQ0ksWUFBTyxHQUFXLENBQUMsQ0FBQztRQUUzQjs7V0FFRztRQUNJLG9CQUFlLEdBQUcsZUFBZSxDQUFDO1FBRXpDOztXQUVHO1FBQ0ksV0FBTSxHQUFXLENBQUMsQ0FBQztRQVExQjs7V0FFRztRQUVJLGtCQUFhLEdBQWtCLElBQUksQ0FBQztRQUUzQzs7V0FFRztRQUVJLFNBQUksR0FBVyxVQUFVLEVBQUUsQ0FBQztRQUVuQzs7V0FFRztRQUNJ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Q3pGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7U0FDeEQ7YUFBTTtZQUNILElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1NBQzVCO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQzsrR0FqVGlCLGdCQUFnQjttR0FBaEIsZ0JBQWdCOztTQUFoQixnQkFBZ0I7NEZBQWhCLGdCQUFnQjtrQkFEckMsU0FBUztpSUFnREMsT0FBTztzQkFEYixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBT2pDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBT0MsSUFBSTtzQkFEVixLQUFLO2dCQW1CQyxRQUFRO3NCQURkLEtBQUs7Z0JBT0MsV0FBVztzQkFEakIsS0FBSztnQkE0QkssVUFBVTtzQkFEcEIsS0FBSztnQkFTSyxPQUFPO3NCQURqQixTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2NvbnZlcnRpb24nO1xuaW1wb3J0IHsgVG9vbHRpcFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2VudW1zJztcbmltcG9ydCB7IGNyZWF0ZUd1aWQgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvZ3VpZCc7XG5pbXBvcnQgeyBQb3BVcEhlbHBlciB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9wb3B1cGhlbHBlcic7XG5pbXBvcnQgeyBBZnRlclZpZXdDaGVja2VkLCBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBEb0NoZWNrLCBFbGVtZW50UmVmLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIFRvb2x0aXAgQ29tcG9uZW50XG4gKlxuICogUmVxdWlyZXMgdGhlIGZvbGxvd2luZyBpZGVudGlmaWVycyBpbiB0aGUgSFRNTCBtYXJrdXBcbiAqIC0gY29udGFpbmVyOiBDb250YWluZXIgZm9yIG5nLWNvbnRlbnQgaW4gd2hpY2ggdGhlIGVsZW1lbnQgaXMgZGlzcGxheWVkIHdoZXJlIHRoZSB0b29sdGlwIGlzIGF0dGFjaGVkLlxuICogLSB0b29sdGlwOiBDb250YWluZXIgZm9yIHRvb2x0aXBcbiAqXG4gKiBUb29sdGlwIG11c3QgYmUgZGlzcGxheWVkIGluIDIgc3RlcHMuIEluIGEgZmlyc3Qgc3RlcCB0aGUgdG9vbHRpcCBtYXJrdXAgaXMgY3JlYXRlZCB3aXRoIChuZ0lmKS4gSW4gYSAybmQgc3RlcFxuICogdGhlIHRvb2x0aXAgY2FuIHRoZW4gYmUgZGlzcGxheWVkIHZpYSB0aGUgQ1NTIHZpc2liaWxpdHkuIElmIHRoaXMgaXMgbm90IGRvbmUsIGl0IGNhbiBsZWFkIHRvIGEgZmxpY2tlcmluZyBlZmZlY3QgaW4gY2VydGFpbiBicm93c2Vycy5cbiAqXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNhY1Rvb2x0aXBDb21tb24gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3Q2hlY2tlZCwgRG9DaGVjayB7XG4gICAgLy8gI3JlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvKipcbiAgICAgKiBIZWxwZXIgY2xhc3MgdG8gZGlzcGxheSB0b29sdGlwIG9uIGNvcnJlY3QgcG9zaXRpb25cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHBvcHVwSGVscGVyOiBQb3BVcEhlbHBlciA9IG5ldyBQb3BVcEhlbHBlcigpO1xuXG4gICAgLyoqXG4gICAgICogSW5saW5lIG1vZGUgZm9yIHRvb2x0aXBcbiAgICAgKi9cbiAgICBwcml2YXRlIF9pbmxpbmVtb2RlOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB3aGV0aGVyIHRoZSB0b29sdGlwIGlzIHZpc2libGVcbiAgICAgKi9cbiAgICBwcml2YXRlIF9pc1Rvb2x0aXBWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBDb250YWluZXJzIGZvciB0aGUgdG9vbHRpcFxuICAgICAqL1xuICAgIHByaXZhdGUgdG9vbHRpcGNvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgdG9vbHRpcCBvbiB0aGUgbGVmdFxuICAgICAqL1xuICAgIHB1YmxpYyBJc1Rvb2x0aXBDb250ZW50VmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gZGVzIFRvb2x0aXBzIGxpbmtzXG4gICAgICovXG4gICAgcHVibGljIExlZnRQb3M6IG51bWJlciA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBmb3IgZW51bSBpbiBBbmd1bGFyIEhUTUwgdGVtcGxhdGVcbiAgICAgKi9cbiAgICBwdWJsaWMgVG9vbHRpcFBvc2l0aW9uID0gVG9vbHRpcFBvc2l0aW9uO1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgYXQgdGhlIHRvcFxuICAgICAqL1xuICAgIHB1YmxpYyBUb3BQb3M6IG51bWJlciA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBOYW1lIG9mIHRoZSBjb250YWluZXIgZm9yIGNvbnRlbnQgKGUuZy4gaWNvbikgb24gd2hpY2ggdGhlIHRvb2x0aXAgaXMgZGlzcGxheWVkLlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHVibGljIGNvbnRlbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogSWRlbnRpZmllciB1c2VkIGZvciB0aGUgRTJFIGRhdGEgYXR0cmlidXRlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGUyZWlkZW50aWZpZXI6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogbmFtZSBvZiBjb250cm9sXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nID0gY3JlYXRlR3VpZCgpO1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHBpY2tlciBhcnJvdyBhdCB0aGUgbGVmdFxuICAgICAqL1xuICAgIHB1YmxpYyBwb3NBcnJvd0xlZnQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHBpY2tlciBhcnJvdyBhdCB0aGUgdG9wXG4gICAgICovXG4gICAgcHVibGljIHBvc0Fycm93VG9wOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSB0b29sdGlwLiBWYWx1ZXM6IGxlZnR8dG9wfHJpZ2h0fGJvdHRvbXxhdXRvXG4gICAgICpcbiAgICAgKiBWYWx1ZSAnYXV0bycgY2FuIGJlIGNvbWJpbmVkIHdpdGggYW5vdGhlciB2YWx1ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwb3NpdGlvbjogc3RyaW5nID0gJ3JpZ2h0fGF1dG8nO1xuXG4gICAgLyoqXG4gICAgICogVGV4dCBmb3IgVG9vbFRpcFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHRvb2x0aXB0ZXh0OiBzdHJpbmc7XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByb3BlcnRpZXNcblxuICAgIC8vICNyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvKipcbiAgICAgKiBLb25zdHJ1a3RvclxuICAgICAqIEBwYXJhbSByZWYgRWxlbWVudCBSZWZlcmVuelxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHJlYWRvbmx5IHJlZjogRWxlbWVudFJlZikge31cblxuICAgIC8vICNlbmRyZWdpb24gQ29uc3RydWN0b3JzXG5cbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBmb3IgaW5saW5lIG1vZGUgZm9yIHRvb2x0aXAuIFNldHMgdGhlIGRpc3BsYXkgbW9kZSBvbiB0aGUgd3JhcHBlciBlbGVtZW50IHRvIGBpbmxpbmVgXG4gICAgICovXG4gICAgcHVibGljIGdldCBpbmxpbmVtb2RlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5saW5lbW9kZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXR0ZXIgZm9yIGlubGluZSBtb2RlIGZvciB0b29sdGlwXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGlubGluZW1vZGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5faW5saW5lbW9kZSA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHRlciBmb3IgdGhlIG5hbWUgb2YgdGhlIGNvbnRhaW5lciBmb3IgdGhlIHRvb2x0aXAuIElzIHJlcXVpcmVkIGFzIHRoZSB0b29sdGlwIGNhbiBiZSBoaWRkZW4gdmlhIG5nSWYuXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgndG9vbHRpcCcsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIHB1YmxpYyBzZXQgdG9vbHRpcChjb250ZW50OiBFbGVtZW50UmVmKSB7XG4gICAgICAgIGlmIChjb250ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29udGVudC5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudG9vbHRpcGNvbnRhaW5lciA9IGNvbnRlbnQ7XG4gICAgICAgIHRoaXMub25Db250ZW50Q2hhbmdlKCk7XG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdG9vbHRvcCgpOiBFbGVtZW50UmVmIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9vbHRpcGNvbnRhaW5lcjtcbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBHZXR0ZXJzIEFuZCBTZXR0ZXJzXG5cbiAgICAvLyAjcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcFxuICAgICAqL1xuICAgIHB1YmxpYyBHZXRUb29sdGlwUG9zaXRpb24oKTogVG9vbHRpcFBvc2l0aW9uIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9wdXBIZWxwZXIuZ2V0RGlzcGxheVBvc2l0aW9uKFxuICAgICAgICAgICAgdGhpcy5jb250ZW50LFxuICAgICAgICAgICAgdGhpcy50b29sdGlwY29udGFpbmVyLFxuICAgICAgICAgICAgdGhpcy5nZXRUb29sdGlwT2Zmc2V0KCksXG4gICAgICAgICAgICB0aGlzLmdldFRvb2x0aXBPZmZzZXQoKSxcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24sXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGlkZSB0b29sdGlwXG4gICAgICovXG4gICAgcHVibGljIEhpZGVUb29sdGlwKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuSXNUb29sdGlwQ29udGVudFZpc2libGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHdoZXRoZXIgdGhlIHRvb2x0aXAgaXMgcHJlc2VudCBpbiB0aGUgbWFya3VwXG4gICAgICovXG4gICAgcHVibGljIElzVG9vbHRpcFZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNob3cgdG9vbHRpcFxuICAgICAqL1xuICAgIHB1YmxpYyBTaG93VG9vbHRpcCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNUb29sdGlwVmlzaWJsZSA9IHRydWU7XG4gICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZXRMZWZ0UG9zaXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9wUG9zaXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMuSXNUb29sdGlwQ29udGVudFZpc2libGUgPSB0cnVlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBoZWlnaHQgb2YgdGhlIHRvb2x0aXBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0VG9vbFRpcEhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3B1cEhlbHBlci5nZXRQb3B1cEhlaWdodCh0aGlzLnRvb2x0aXBjb250YWluZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHdpZHRoIG9mIHRoZSB0b29sdGlwc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRUb29sVGlwV2lkdGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9wdXBXaWR0aCh0aGlzLnRvb2x0aXBjb250YWluZXIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVjdCBDaGFuZ2VzIGFmdGVyIHZpZXcgY2hlY2tlZC4gUHJldmVudCBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yIGVycm9yXG4gICAgICovXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAgICAgLy8gRG8gbm90aGluZyBpZiBpcyBub3QgdmlzaWJpbGVcbiAgICAgICAgaWYgKCF0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlY3QgVUkgQ2hhbmdlcyB0byBDYWxjdWxhdGUgVG9vbHRpcCBjb3JyZWN0XG4gICAgICovXG4gICAgcHVibGljIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICAgICAgLy8gRG8gbm90aGluZyBpZiBpcyBub3QgdmlzaWJpbGVcbiAgICAgICAgaWYgKCF0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmdldExlZnRQb3NpdGlvbigpO1xuICAgICAgICB0aGlzLmdldFRvcFBvc2l0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXZlbnQgd2hlbiB0aGUgY29udHJvbCBpcyBkZXN0cm95ZWQuXG4gICAgICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICAvLyBVbnJlZ2lzdGVyIEV2ZW50IExpc3RlbmVyXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRoaXMudG9vbHRpcGNvbnRhaW5lci5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV2ZW50IHdoZW4gdGhlIGNvbnRyb2wgaXMgaW5pdGlhbGl6ZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIC8vIFJlZ2lzdGVyIEV2ZW50IExpc3RlbmVyXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLm9uQ29udGVudENoYW5nZSwgdHJ1ZSk7XG5cbiAgICAgICAgaWYgKHRoaXMudG9vbHRpcGNvbnRhaW5lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMudG9vbHRpcGNvbnRhaW5lci5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vICNlbmRyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICAgIC8vICNyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcblxuICAgIC8qKlxuICAgICAqIE9mZnNldCBmb3IgVG9vbHRpcC4gUmVxdWlyZWQgZm9yIEJTNC9CUzUgdG8gY3JlYXRlIHBhZGRpbmdcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0VG9vbHRpcE9mZnNldCgpOiBudW1iZXI7XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXG5cbiAgICAvLyAjcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgZnJvbSBsaW5rc1xuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0TGVmdFBvc2l0aW9uKCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5wb3B1cEhlbHBlci5nZXRQb3NpdGlvbkxlZnQoXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQsXG4gICAgICAgICAgICB0aGlzLnRvb2x0aXBjb250YWluZXIsXG4gICAgICAgICAgICB0aGlzLnJlZixcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpLFxuICAgICAgICAgICAgdGhpcy5nZXRUb29sdGlwT2Zmc2V0KCksXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uLFxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLkxlZnRQb3MgPSB2YWx1ZTtcblxuICAgICAgICBjb25zdCByZXF1aXJlZFBvc2l0aW9uID0gdGhpcy5HZXRUb29sdGlwUG9zaXRpb24oKTtcbiAgICAgICAgaWYgKHJlcXVpcmVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi5sZWZ0IHx8IHJlcXVpcmVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi5yaWdodCkge1xuICAgICAgICAgICAgdGhpcy5wb3NBcnJvd1RvcCA9IHRoaXMuZ2V0VG9vbFRpcEhlaWdodCgpIC8gMiAtIDYuNTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucG9zQXJyb3dUb3AgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGZyb20gdGhlIHRvcFxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0VG9wUG9zaXRpb24oKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnBvcHVwSGVscGVyLmdldFBvc2l0aW9uVG9wKFxuICAgICAgICAgICAgdGhpcy5jb250ZW50LFxuICAgICAgICAgICAgdGhpcy50b29sdGlwY29udGFpbmVyLFxuICAgICAgICAgICAgdGhpcy5yZWYsXG4gICAgICAgICAgICB0aGlzLmdldFRvb2x0aXBPZmZzZXQoKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpLFxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbixcbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5Ub3BQb3MgPSB2YWx1ZTtcblxuICAgICAgICBjb25zdCByZXF1aXJlZFBvc2l0aW9uID0gdGhpcy5HZXRUb29sdGlwUG9zaXRpb24oKTtcbiAgICAgICAgaWYgKHJlcXVpcmVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi5ib3R0b20gfHwgcmVxdWlyZWRQb3NpdGlvbiA9PT0gVG9vbHRpcFBvc2l0aW9uLnRvcCkge1xuICAgICAgICAgICAgdGhpcy5wb3NBcnJvd0xlZnQgPSB0aGlzLmdldFRvb2xUaXBXaWR0aCgpIC8gMiAtIDYuNTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucG9zQXJyb3dMZWZ0ID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBtZXRob2QgaWYgY29udGVudCBoYXMgY2hhbmdlZCBhbmQgcHJvcG9ydGlvbnMgbmVlZCB0byBiZSByZXNldCBpbiB0aGUgVUkuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBvbkNvbnRlbnRDaGFuZ2UgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIC8vIERvIG5vdGhpbmcgaWYgaXMgbm90IHZpc2libGVcbiAgICAgICAgaWYgKCF0aGlzLl9pc1Rvb2x0aXBWaXNpYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ2V0TGVmdFBvc2l0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLmdldFRvcFBvc2l0aW9uKCk7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvLyAjZW5kcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xufVxuIl19
86
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb252ZXJ0VG9Cb29sZWFuIiwiVG9vbHRpcFBvc2l0aW9uIiwiY3JlYXRlR3VpZCIsIlBvcFVwSGVscGVyIiwiRGlyZWN0aXZlIiwiSW5wdXQiLCJWaWV3Q2hpbGQiLCJTYWNUb29sdGlwQ29tbW9uIiwiY29uc3RydWN0b3IiLCJjZFJlZiIsInJlZiIsImNvdl8xY2R3d2Ywb2F0IiwiZiIsInMiLCJwb3B1cEhlbHBlciIsIl9pc1Rvb2x0aXBWaXNpYmxlIiwiSXNUb29sdGlwQ29udGVudFZpc2libGUiLCJMZWZ0UG9zIiwiVG9wUG9zIiwiZTJlaWRlbnRpZmllciIsIm5hbWUiLCJwb3NBcnJvd0xlZnQiLCJwb3NBcnJvd1RvcCIsInBvc2l0aW9uIiwib25Db250ZW50Q2hhbmdlIiwiYiIsInNldFRpbWVvdXQiLCJnZXRMZWZ0UG9zaXRpb24iLCJnZXRUb3BQb3NpdGlvbiIsImlubGluZW1vZGUiLCJfaW5saW5lbW9kZSIsInZhbHVlIiwidG9vbHRpcCIsImNvbnRlbnQiLCJ1bmRlZmluZWQiLCJkb2N1bWVudCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsIm5hdGl2ZUVsZW1lbnQiLCJ0b29sdGlwY29udGFpbmVyIiwiZGV0ZWN0Q2hhbmdlcyIsInRvb2x0b3AiLCJHZXRUb29sdGlwUG9zaXRpb24iLCJnZXREaXNwbGF5UG9zaXRpb24iLCJnZXRUb29sdGlwT2Zmc2V0IiwiSGlkZVRvb2x0aXAiLCJJc1Rvb2x0aXBWaXNpYmxlIiwiU2hvd1Rvb2x0aXAiLCJnZXRUb29sVGlwSGVpZ2h0IiwiZ2V0UG9wdXBIZWlnaHQiLCJnZXRUb29sVGlwV2lkdGgiLCJnZXRQb3B1cFdpZHRoIiwibmdBZnRlclZpZXdDaGVja2VkIiwibmdEb0NoZWNrIiwibmdPbkRlc3Ryb3kiLCJ3aW5kb3ciLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicmVtb3ZlQ2hpbGQiLCJuZ09uSW5pdCIsImFkZEV2ZW50TGlzdGVuZXIiLCJnZXRQb3NpdGlvbkxlZnQiLCJyZXF1aXJlZFBvc2l0aW9uIiwibGVmdCIsInJpZ2h0IiwiZ2V0UG9zaXRpb25Ub3AiLCJib3R0b20iLCJ0b3AiLCJkZXBzIiwidG9rZW4iLCJpMCIsIkNoYW5nZURldGVjdG9yUmVmIiwiRWxlbWVudFJlZiIsInRhcmdldCIsIsm1ybVGYWN0b3J5VGFyZ2V0IiwiaW5wdXRzIiwidG9vbHRpcHRleHQiLCJ2aWV3UXVlcmllcyIsInByb3BlcnR5TmFtZSIsImZpcnN0IiwicHJlZGljYXRlIiwiZGVzY2VuZGFudHMiLCJzdGF0aWMiLCJuZ0ltcG9ydCIsImRlY29yYXRvcnMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy9jb250cm9scy90b29sdGlwL3Rvb2x0aXAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29udmVydFRvQm9vbGVhbiB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9jb252ZXJ0aW9uJztcbmltcG9ydCB7IFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9lbnVtcyc7XG5pbXBvcnQgeyBjcmVhdGVHdWlkIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2d1aWQnO1xuaW1wb3J0IHsgUG9wVXBIZWxwZXIgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvcG9wdXBoZWxwZXInO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3Q2hlY2tlZCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgRG9DaGVjaywgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBUb29sdGlwIENvbXBvbmVudFxuICpcbiAqIFJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgaWRlbnRpZmllcnMgaW4gdGhlIEhUTUwgbWFya3VwXG4gKiAtIGNvbnRhaW5lcjogQ29udGFpbmVyIGZvciBuZy1jb250ZW50IGluIHdoaWNoIHRoZSBlbGVtZW50IGlzIGRpc3BsYXllZCB3aGVyZSB0aGUgdG9vbHRpcCBpcyBhdHRhY2hlZC5cbiAqIC0gdG9vbHRpcDogQ29udGFpbmVyIGZvciB0b29sdGlwXG4gKlxuICogVG9vbHRpcCBtdXN0IGJlIGRpc3BsYXllZCBpbiAyIHN0ZXBzLiBJbiBhIGZpcnN0IHN0ZXAgdGhlIHRvb2x0aXAgbWFya3VwIGlzIGNyZWF0ZWQgd2l0aCAobmdJZikuIEluIGEgMm5kIHN0ZXBcbiAqIHRoZSB0b29sdGlwIGNhbiB0aGVuIGJlIGRpc3BsYXllZCB2aWEgdGhlIENTUyB2aXNpYmlsaXR5LiBJZiB0aGlzIGlzIG5vdCBkb25lLCBpdCBjYW4gbGVhZCB0byBhIGZsaWNrZXJpbmcgZWZmZWN0IGluIGNlcnRhaW4gYnJvd3NlcnMuXG4gKlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYWNUb29sdGlwQ29tbW9uIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWQsIERvQ2hlY2sge1xuICAgIC8vICNyZWdpb24gUHJvcGVydGllc1xuXG4gICAgLyoqXG4gICAgICogSGVscGVyIGNsYXNzIHRvIGRpc3BsYXkgdG9vbHRpcCBvbiBjb3JyZWN0IHBvc2l0aW9uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBwb3B1cEhlbHBlcjogUG9wVXBIZWxwZXIgPSBuZXcgUG9wVXBIZWxwZXIoKTtcblxuICAgIC8qKlxuICAgICAqIElubGluZSBtb2RlIGZvciB0b29sdGlwXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaW5saW5lbW9kZTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgd2hldGhlciB0aGUgdG9vbHRpcCBpcyB2aXNpYmxlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaXNUb29sdGlwVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQ29udGFpbmVycyBmb3IgdGhlIHRvb2x0aXBcbiAgICAgKi9cbiAgICBwcml2YXRlIHRvb2x0aXBjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgb24gdGhlIGxlZnRcbiAgICAgKi9cbiAgICBwdWJsaWMgSXNUb29sdGlwQ29udGVudFZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIGRlcyBUb29sdGlwcyBsaW5rc1xuICAgICAqL1xuICAgIHB1YmxpYyBMZWZ0UG9zOiBudW1iZXIgPSAwO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgZm9yIGVudW0gaW4gQW5ndWxhciBIVE1MIHRlbXBsYXRlXG4gICAgICovXG4gICAgcHVibGljIFRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbjtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGF0IHRoZSB0b3BcbiAgICAgKi9cbiAgICBwdWJsaWMgVG9wUG9zOiBudW1iZXIgPSAwO1xuXG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgY29udGFpbmVyIGZvciBjb250ZW50IChlLmcuIGljb24pIG9uIHdoaWNoIHRoZSB0b29sdGlwIGlzIGRpc3BsYXllZC5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyBjb250ZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKlxuICAgICAqIElkZW50aWZpZXIgdXNlZCBmb3IgdGhlIEUyRSBkYXRhIGF0dHJpYnV0ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlMmVpZGVudGlmaWVyOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIG5hbWUgb2YgY29udHJvbFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG5hbWU6IHN0cmluZyA9IGNyZWF0ZUd1aWQoKTtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSBwaWNrZXIgYXJyb3cgYXQgdGhlIGxlZnRcbiAgICAgKi9cbiAgICBwdWJsaWMgcG9zQXJyb3dMZWZ0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSBwaWNrZXIgYXJyb3cgYXQgdGhlIHRvcFxuICAgICAqL1xuICAgIHB1YmxpYyBwb3NBcnJvd1RvcDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgdG9vbHRpcC4gVmFsdWVzOiBsZWZ0fHRvcHxyaWdodHxib3R0b218YXV0b1xuICAgICAqXG4gICAgICogVmFsdWUgJ2F1dG8nIGNhbiBiZSBjb21iaW5lZCB3aXRoIGFub3RoZXIgdmFsdWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcG9zaXRpb246IHN0cmluZyA9ICdyaWdodHxhdXRvJztcblxuICAgIC8qKlxuICAgICAqIFRleHQgZm9yIFRvb2xUaXBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0b29sdGlwdGV4dDogc3RyaW5nO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLyoqXG4gICAgICogS29uc3RydWt0b3JcbiAgICAgKiBAcGFyYW0gcmVmIEVsZW1lbnQgUmVmZXJlbnpcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSByZWFkb25seSByZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgZm9yIGlubGluZSBtb2RlIGZvciB0b29sdGlwLiBTZXRzIHRoZSBkaXNwbGF5IG1vZGUgb24gdGhlIHdyYXBwZXIgZWxlbWVudCB0byBgaW5saW5lYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaW5saW5lbW9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lubGluZW1vZGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0dGVyIGZvciBpbmxpbmUgbW9kZSBmb3IgdG9vbHRpcFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBpbmxpbmVtb2RlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2lubGluZW1vZGUgPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXR0ZXIgZm9yIHRoZSBuYW1lIG9mIHRoZSBjb250YWluZXIgZm9yIHRoZSB0b29sdGlwLiBJcyByZXF1aXJlZCBhcyB0aGUgdG9vbHRpcCBjYW4gYmUgaGlkZGVuIHZpYSBuZ0lmLlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ3Rvb2x0aXAnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBwdWJsaWMgc2V0IHRvb2x0aXAoY29udGVudDogRWxlbWVudFJlZikge1xuICAgICAgICBpZiAoY29udGVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRlbnQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRvb2x0aXBjb250YWluZXIgPSBjb250ZW50O1xuICAgICAgICB0aGlzLm9uQ29udGVudENoYW5nZSgpO1xuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRvb2x0b3AoKTogRWxlbWVudFJlZiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvb2x0aXBjb250YWluZXI7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xuXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgTWV0aG9kc1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXBcbiAgICAgKi9cbiAgICBwdWJsaWMgR2V0VG9vbHRpcFBvc2l0aW9uKCk6IFRvb2x0aXBQb3NpdGlvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvcHVwSGVscGVyLmdldERpc3BsYXlQb3NpdGlvbihcbiAgICAgICAgICAgIHRoaXMuY29udGVudCxcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcGNvbnRhaW5lcixcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpLFxuICAgICAgICAgICAgdGhpcy5nZXRUb29sdGlwT2Zmc2V0KCksXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uLFxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhpZGUgdG9vbHRpcFxuICAgICAqL1xuICAgIHB1YmxpYyBIaWRlVG9vbHRpcCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNUb29sdGlwVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLklzVG9vbHRpcENvbnRlbnRWaXNpYmxlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB3aGV0aGVyIHRoZSB0b29sdGlwIGlzIHByZXNlbnQgaW4gdGhlIG1hcmt1cFxuICAgICAqL1xuICAgIHB1YmxpYyBJc1Rvb2x0aXBWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNUb29sdGlwVmlzaWJsZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG93IHRvb2x0aXBcbiAgICAgKi9cbiAgICBwdWJsaWMgU2hvd1Rvb2x0aXAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2lzVG9vbHRpcFZpc2libGUgPSB0cnVlO1xuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ2V0TGVmdFBvc2l0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLmdldFRvcFBvc2l0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLklzVG9vbHRpcENvbnRlbnRWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgaGVpZ2h0IG9mIHRoZSB0b29sdGlwXG4gICAgICovXG4gICAgcHVibGljIGdldFRvb2xUaXBIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9wdXBIZWlnaHQodGhpcy50b29sdGlwY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSB3aWR0aCBvZiB0aGUgdG9vbHRpcHNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0VG9vbFRpcFdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvcHVwSGVscGVyLmdldFBvcHVwV2lkdGgodGhpcy50b29sdGlwY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlY3QgQ2hhbmdlcyBhZnRlciB2aWV3IGNoZWNrZWQuIFByZXZlbnQgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvciBlcnJvclxuICAgICAqL1xuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgICAgIC8vIERvIG5vdGhpbmcgaWYgaXMgbm90IHZpc2liaWxlXG4gICAgICAgIGlmICghdGhpcy5faXNUb29sdGlwVmlzaWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZWN0IFVJIENoYW5nZXMgdG8gQ2FsY3VsYXRlIFRvb2x0aXAgY29ycmVjdFxuICAgICAqL1xuICAgIHB1YmxpYyBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgICAgIC8vIERvIG5vdGhpbmcgaWYgaXMgbm90IHZpc2liaWxlXG4gICAgICAgIGlmICghdGhpcy5faXNUb29sdGlwVmlzaWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5nZXRMZWZ0UG9zaXRpb24oKTtcbiAgICAgICAgdGhpcy5nZXRUb3BQb3NpdGlvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV2ZW50IHdoZW4gdGhlIGNvbnRyb2wgaXMgZGVzdHJveWVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgLy8gVW5yZWdpc3RlciBFdmVudCBMaXN0ZW5lclxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xuXG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBjb250YWluZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0aGlzLnRvb2x0aXBjb250YWluZXIubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCB3aGVuIHRoZSBjb250cm9sIGlzIGluaXRpYWxpemVkXG4gICAgICovXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICAvLyBSZWdpc3RlciBFdmVudCBMaXN0ZW5lclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xuXG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBjb250YWluZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLnRvb2x0aXBjb250YWluZXIubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICAvLyAjcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBPZmZzZXQgZm9yIFRvb2x0aXAuIFJlcXVpcmVkIGZvciBCUzQvQlM1IHRvIGNyZWF0ZSBwYWRkaW5nXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldFRvb2x0aXBPZmZzZXQoKTogbnVtYmVyO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm90ZWN0ZWQgTWV0aG9kc1xuXG4gICAgLy8gI3JlZ2lvbiBQcml2YXRlIE1ldGhvZHNcblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGZyb20gbGlua3NcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldExlZnRQb3NpdGlvbigpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9zaXRpb25MZWZ0KFxuICAgICAgICAgICAgdGhpcy5jb250ZW50LFxuICAgICAgICAgICAgdGhpcy50b29sdGlwY29udGFpbmVyLFxuICAgICAgICAgICAgdGhpcy5yZWYsXG4gICAgICAgICAgICB0aGlzLmdldFRvb2x0aXBPZmZzZXQoKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpLFxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbixcbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5MZWZ0UG9zID0gdmFsdWU7XG5cbiAgICAgICAgY29uc3QgcmVxdWlyZWRQb3NpdGlvbiA9IHRoaXMuR2V0VG9vbHRpcFBvc2l0aW9uKCk7XG4gICAgICAgIGlmIChyZXF1aXJlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24ubGVmdCB8fCByZXF1aXJlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24ucmlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMucG9zQXJyb3dUb3AgPSB0aGlzLmdldFRvb2xUaXBIZWlnaHQoKSAvIDIgLSA2LjU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBvc0Fycm93VG9wID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcCBmcm9tIHRoZSB0b3BcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFRvcFBvc2l0aW9uKCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5wb3B1cEhlbHBlci5nZXRQb3NpdGlvblRvcChcbiAgICAgICAgICAgIHRoaXMuY29udGVudCxcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcGNvbnRhaW5lcixcbiAgICAgICAgICAgIHRoaXMucmVmLFxuICAgICAgICAgICAgdGhpcy5nZXRUb29sdGlwT2Zmc2V0KCksXG4gICAgICAgICAgICB0aGlzLmdldFRvb2x0aXBPZmZzZXQoKSxcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24sXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuVG9wUG9zID0gdmFsdWU7XG5cbiAgICAgICAgY29uc3QgcmVxdWlyZWRQb3NpdGlvbiA9IHRoaXMuR2V0VG9vbHRpcFBvc2l0aW9uKCk7XG4gICAgICAgIGlmIChyZXF1aXJlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24uYm90dG9tIHx8IHJlcXVpcmVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi50b3ApIHtcbiAgICAgICAgICAgIHRoaXMucG9zQXJyb3dMZWZ0ID0gdGhpcy5nZXRUb29sVGlwV2lkdGgoKSAvIDIgLSA2LjU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBvc0Fycm93TGVmdCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbWV0aG9kIGlmIGNvbnRlbnQgaGFzIGNoYW5nZWQgYW5kIHByb3BvcnRpb25zIG5lZWQgdG8gYmUgcmVzZXQgaW4gdGhlIFVJLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb25Db250ZW50Q2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAvLyBEbyBub3RoaW5nIGlmIGlzIG5vdCB2aXNpYmxlXG4gICAgICAgIGlmICghdGhpcy5faXNUb29sdGlwVmlzaWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdldExlZnRQb3NpdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5nZXRUb3BQb3NpdGlvbigpO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcml2YXRlIE1ldGhvZHNcbn1cbiJdLCJtYXBwaW5ncyI6IjsyRkFBQSxPQUFTQSxnQkFBZ0IsS0FBUSw0QkFBNEIsQ0FDN0QsT0FBU0MsZUFBZSxLQUFRLHVCQUF1QixDQUN2RCxPQUFTQyxVQUFVLEtBQVEsc0JBQXNCLENBQ2pELE9BQVNDLFdBQVcsS0FBUSw2QkFBNkIsQ0FDekQsT0FBOENDLFNBQVMsQ0FBdUJDLEtBQUssQ0FBcUJDLFNBQVMsS0FBUSxlQUFlLEMsaUNBRXhJOzs7Ozs7Ozs7O0dBV0EsS0FDc0IsQ0FBQUMsZ0JBQWdCLENBcUZsQztBQUVBO0FBRUE7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
86
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb252ZXJ0VG9Cb29sZWFuIiwiVG9vbHRpcFBvc2l0aW9uIiwiY3JlYXRlR3VpZCIsIlBvcFVwSGVscGVyIiwiRGlyZWN0aXZlIiwiSW5wdXQiLCJWaWV3Q2hpbGQiLCJTYWNUb29sdGlwQ29tbW9uIiwiY29uc3RydWN0b3IiLCJjZFJlZiIsInJlZiIsImNvdl8xY2R3d2Ywb2F0IiwiZiIsInMiLCJwb3B1cEhlbHBlciIsIl9pc1Rvb2x0aXBWaXNpYmxlIiwiSXNUb29sdGlwQ29udGVudFZpc2libGUiLCJMZWZ0UG9zIiwiVG9wUG9zIiwiZTJlaWRlbnRpZmllciIsIm5hbWUiLCJwb3NBcnJvd0xlZnQiLCJwb3NBcnJvd1RvcCIsInBvc2l0aW9uIiwib25Db250ZW50Q2hhbmdlIiwiYiIsInNldFRpbWVvdXQiLCJnZXRMZWZ0UG9zaXRpb24iLCJnZXRUb3BQb3NpdGlvbiIsImlubGluZW1vZGUiLCJfaW5saW5lbW9kZSIsInZhbHVlIiwidG9vbHRpcCIsImNvbnRlbnQiLCJ1bmRlZmluZWQiLCJkb2N1bWVudCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsIm5hdGl2ZUVsZW1lbnQiLCJ0b29sdGlwY29udGFpbmVyIiwiZGV0ZWN0Q2hhbmdlcyIsInRvb2x0b3AiLCJHZXRUb29sdGlwUG9zaXRpb24iLCJnZXREaXNwbGF5UG9zaXRpb24iLCJnZXRUb29sdGlwT2Zmc2V0IiwiSGlkZVRvb2x0aXAiLCJJc1Rvb2x0aXBWaXNpYmxlIiwiU2hvd1Rvb2x0aXAiLCJnZXRUb29sVGlwSGVpZ2h0IiwiZ2V0UG9wdXBIZWlnaHQiLCJnZXRUb29sVGlwV2lkdGgiLCJnZXRQb3B1cFdpZHRoIiwibmdBZnRlclZpZXdDaGVja2VkIiwibmdEb0NoZWNrIiwibmdPbkRlc3Ryb3kiLCJ3aW5kb3ciLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicmVtb3ZlQ2hpbGQiLCJuZ09uSW5pdCIsImFkZEV2ZW50TGlzdGVuZXIiLCJnZXRQb3NpdGlvbkxlZnQiLCJyZXF1aXJlZFBvc2l0aW9uIiwibGVmdCIsInJpZ2h0IiwiZ2V0UG9zaXRpb25Ub3AiLCJib3R0b20iLCJ0b3AiLCJkZXBzIiwidG9rZW4iLCJpMCIsIkNoYW5nZURldGVjdG9yUmVmIiwiRWxlbWVudFJlZiIsInRhcmdldCIsIsm1ybVGYWN0b3J5VGFyZ2V0IiwiaW5wdXRzIiwidG9vbHRpcHRleHQiLCJ2aWV3UXVlcmllcyIsInByb3BlcnR5TmFtZSIsImZpcnN0IiwicHJlZGljYXRlIiwiZGVzY2VuZGFudHMiLCJzdGF0aWMiLCJuZ0ltcG9ydCIsImRlY29yYXRvcnMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zYWMtY29tbW9uL3NyYy9jb250cm9scy90b29sdGlwL3Rvb2x0aXAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29udmVydFRvQm9vbGVhbiB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9jb252ZXJ0aW9uJztcbmltcG9ydCB7IFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9lbnVtcyc7XG5pbXBvcnQgeyBjcmVhdGVHdWlkIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2d1aWQnO1xuaW1wb3J0IHsgUG9wVXBIZWxwZXIgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvcG9wdXBoZWxwZXInO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3Q2hlY2tlZCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgRG9DaGVjaywgRWxlbWVudFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBUb29sdGlwIENvbXBvbmVudFxuICpcbiAqIFJlcXVpcmVzIHRoZSBmb2xsb3dpbmcgaWRlbnRpZmllcnMgaW4gdGhlIEhUTUwgbWFya3VwXG4gKiAtIGNvbnRhaW5lcjogQ29udGFpbmVyIGZvciBuZy1jb250ZW50IGluIHdoaWNoIHRoZSBlbGVtZW50IGlzIGRpc3BsYXllZCB3aGVyZSB0aGUgdG9vbHRpcCBpcyBhdHRhY2hlZC5cbiAqIC0gdG9vbHRpcDogQ29udGFpbmVyIGZvciB0b29sdGlwXG4gKlxuICogVG9vbHRpcCBtdXN0IGJlIGRpc3BsYXllZCBpbiAyIHN0ZXBzLiBJbiBhIGZpcnN0IHN0ZXAgdGhlIHRvb2x0aXAgbWFya3VwIGlzIGNyZWF0ZWQgd2l0aCAobmdJZikuIEluIGEgMm5kIHN0ZXBcbiAqIHRoZSB0b29sdGlwIGNhbiB0aGVuIGJlIGRpc3BsYXllZCB2aWEgdGhlIENTUyB2aXNpYmlsaXR5LiBJZiB0aGlzIGlzIG5vdCBkb25lLCBpdCBjYW4gbGVhZCB0byBhIGZsaWNrZXJpbmcgZWZmZWN0IGluIGNlcnRhaW4gYnJvd3NlcnMuXG4gKlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTYWNUb29sdGlwQ29tbW9uIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWQsIERvQ2hlY2sge1xuICAgIC8vICNyZWdpb24gUHJvcGVydGllc1xuXG4gICAgLyoqXG4gICAgICogSGVscGVyIGNsYXNzIHRvIGRpc3BsYXkgdG9vbHRpcCBvbiBjb3JyZWN0IHBvc2l0aW9uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBwb3B1cEhlbHBlcjogUG9wVXBIZWxwZXIgPSBuZXcgUG9wVXBIZWxwZXIoKTtcblxuICAgIC8qKlxuICAgICAqIElubGluZSBtb2RlIGZvciB0b29sdGlwXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaW5saW5lbW9kZTogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgd2hldGhlciB0aGUgdG9vbHRpcCBpcyB2aXNpYmxlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaXNUb29sdGlwVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQ29udGFpbmVycyBmb3IgdGhlIHRvb2x0aXBcbiAgICAgKi9cbiAgICBwcml2YXRlIHRvb2x0aXBjb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGhlIHRvb2x0aXAgb24gdGhlIGxlZnRcbiAgICAgKi9cbiAgICBwdWJsaWMgSXNUb29sdGlwQ29udGVudFZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIGRlcyBUb29sdGlwcyBsaW5rc1xuICAgICAqL1xuICAgIHB1YmxpYyBMZWZ0UG9zOiBudW1iZXIgPSAwO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgZm9yIGVudW0gaW4gQW5ndWxhciBIVE1MIHRlbXBsYXRlXG4gICAgICovXG4gICAgcHVibGljIFRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbjtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGF0IHRoZSB0b3BcbiAgICAgKi9cbiAgICBwdWJsaWMgVG9wUG9zOiBudW1iZXIgPSAwO1xuXG4gICAgLyoqXG4gICAgICogTmFtZSBvZiB0aGUgY29udGFpbmVyIGZvciBjb250ZW50IChlLmcuIGljb24pIG9uIHdoaWNoIHRoZSB0b29sdGlwIGlzIGRpc3BsYXllZC5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyBjb250ZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKlxuICAgICAqIElkZW50aWZpZXIgdXNlZCBmb3IgdGhlIEUyRSBkYXRhIGF0dHJpYnV0ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBlMmVpZGVudGlmaWVyOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIG5hbWUgb2YgY29udHJvbFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG5hbWU6IHN0cmluZyA9IGNyZWF0ZUd1aWQoKTtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSBwaWNrZXIgYXJyb3cgYXQgdGhlIGxlZnRcbiAgICAgKi9cbiAgICBwdWJsaWMgcG9zQXJyb3dMZWZ0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIHRoZSBwaWNrZXIgYXJyb3cgYXQgdGhlIHRvcFxuICAgICAqL1xuICAgIHB1YmxpYyBwb3NBcnJvd1RvcDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBQb3NpdGlvbiBvZiB0aGUgdG9vbHRpcC4gVmFsdWVzOiBsZWZ0fHRvcHxyaWdodHxib3R0b218YXV0b1xuICAgICAqXG4gICAgICogVmFsdWUgJ2F1dG8nIGNhbiBiZSBjb21iaW5lZCB3aXRoIGFub3RoZXIgdmFsdWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcG9zaXRpb246IHN0cmluZyA9ICdyaWdodHxhdXRvJztcblxuICAgIC8qKlxuICAgICAqIFRleHQgZm9yIFRvb2xUaXBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB0b29sdGlwdGV4dDogc3RyaW5nO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgICAvLyAjcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLyoqXG4gICAgICogS29uc3RydWt0b3JcbiAgICAgKiBAcGFyYW0gcmVmIEVsZW1lbnQgUmVmZXJlbnpcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSByZWFkb25seSByZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICAvLyAjZW5kcmVnaW9uIENvbnN0cnVjdG9yc1xuXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgZm9yIGlubGluZSBtb2RlIGZvciB0b29sdGlwLiBTZXRzIHRoZSBkaXNwbGF5IG1vZGUgb24gdGhlIHdyYXBwZXIgZWxlbWVudCB0byBgaW5saW5lYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaW5saW5lbW9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lubGluZW1vZGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0dGVyIGZvciBpbmxpbmUgbW9kZSBmb3IgdG9vbHRpcFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBpbmxpbmVtb2RlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2lubGluZW1vZGUgPSBjb252ZXJ0VG9Cb29sZWFuKHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXR0ZXIgZm9yIHRoZSBuYW1lIG9mIHRoZSBjb250YWluZXIgZm9yIHRoZSB0b29sdGlwLiBJcyByZXF1aXJlZCBhcyB0aGUgdG9vbHRpcCBjYW4gYmUgaGlkZGVuIHZpYSBuZ0lmLlxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ3Rvb2x0aXAnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgICBwdWJsaWMgc2V0IHRvb2x0aXAoY29udGVudDogRWxlbWVudFJlZikge1xuICAgICAgICBpZiAoY29udGVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRlbnQubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRvb2x0aXBjb250YWluZXIgPSBjb250ZW50O1xuICAgICAgICB0aGlzLm9uQ29udGVudENoYW5nZSgpO1xuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRvb2x0b3AoKTogRWxlbWVudFJlZiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvb2x0aXBjb250YWluZXI7XG4gICAgfVxuXG4gICAgLy8gI2VuZHJlZ2lvbiBQdWJsaWMgR2V0dGVycyBBbmQgU2V0dGVyc1xuXG4gICAgLy8gI3JlZ2lvbiBQdWJsaWMgTWV0aG9kc1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgdGhlIHRvb2x0aXBcbiAgICAgKi9cbiAgICBwdWJsaWMgR2V0VG9vbHRpcFBvc2l0aW9uKCk6IFRvb2x0aXBQb3NpdGlvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvcHVwSGVscGVyLmdldERpc3BsYXlQb3NpdGlvbihcbiAgICAgICAgICAgIHRoaXMuY29udGVudCxcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcGNvbnRhaW5lcixcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpLFxuICAgICAgICAgICAgdGhpcy5nZXRUb29sdGlwT2Zmc2V0KCksXG4gICAgICAgICAgICB0aGlzLnBvc2l0aW9uLFxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhpZGUgdG9vbHRpcFxuICAgICAqL1xuICAgIHB1YmxpYyBIaWRlVG9vbHRpcCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faXNUb29sdGlwVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLklzVG9vbHRpcENvbnRlbnRWaXNpYmxlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB3aGV0aGVyIHRoZSB0b29sdGlwIGlzIHByZXNlbnQgaW4gdGhlIG1hcmt1cFxuICAgICAqL1xuICAgIHB1YmxpYyBJc1Rvb2x0aXBWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNUb29sdGlwVmlzaWJsZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG93IHRvb2x0aXBcbiAgICAgKi9cbiAgICBwdWJsaWMgU2hvd1Rvb2x0aXAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2lzVG9vbHRpcFZpc2libGUgPSB0cnVlO1xuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ2V0TGVmdFBvc2l0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLmdldFRvcFBvc2l0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLklzVG9vbHRpcENvbnRlbnRWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyB0aGUgaGVpZ2h0IG9mIHRoZSB0b29sdGlwXG4gICAgICovXG4gICAgcHVibGljIGdldFRvb2xUaXBIZWlnaHQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9wdXBIZWlnaHQodGhpcy50b29sdGlwY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSB3aWR0aCBvZiB0aGUgdG9vbHRpcHNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0VG9vbFRpcFdpZHRoKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvcHVwSGVscGVyLmdldFBvcHVwV2lkdGgodGhpcy50b29sdGlwY29udGFpbmVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlY3QgQ2hhbmdlcyBhZnRlciB2aWV3IGNoZWNrZWQuIFByZXZlbnQgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvciBlcnJvclxuICAgICAqL1xuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgICAgIC8vIERvIG5vdGhpbmcgaWYgaXMgbm90IHZpc2liaWxlXG4gICAgICAgIGlmICghdGhpcy5faXNUb29sdGlwVmlzaWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZWN0IFVJIENoYW5nZXMgdG8gQ2FsY3VsYXRlIFRvb2x0aXAgY29ycmVjdFxuICAgICAqL1xuICAgIHB1YmxpYyBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgICAgIC8vIERvIG5vdGhpbmcgaWYgaXMgbm90IHZpc2liaWxlXG4gICAgICAgIGlmICghdGhpcy5faXNUb29sdGlwVmlzaWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5nZXRMZWZ0UG9zaXRpb24oKTtcbiAgICAgICAgdGhpcy5nZXRUb3BQb3NpdGlvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV2ZW50IHdoZW4gdGhlIGNvbnRyb2wgaXMgZGVzdHJveWVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgLy8gVW5yZWdpc3RlciBFdmVudCBMaXN0ZW5lclxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xuXG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBjb250YWluZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0aGlzLnRvb2x0aXBjb250YWluZXIubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCB3aGVuIHRoZSBjb250cm9sIGlzIGluaXRpYWxpemVkXG4gICAgICovXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICAvLyBSZWdpc3RlciBFdmVudCBMaXN0ZW5lclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5vbkNvbnRlbnRDaGFuZ2UsIHRydWUpO1xuXG4gICAgICAgIGlmICh0aGlzLnRvb2x0aXBjb250YWluZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLnRvb2x0aXBjb250YWluZXIubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAjZW5kcmVnaW9uIFB1YmxpYyBNZXRob2RzXG5cbiAgICAvLyAjcmVnaW9uIFByb3RlY3RlZCBNZXRob2RzXG5cbiAgICAvKipcbiAgICAgKiBPZmZzZXQgZm9yIFRvb2x0aXAuIFJlcXVpcmVkIGZvciBCUzQvQlM1IHRvIGNyZWF0ZSBwYWRkaW5nXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldFRvb2x0aXBPZmZzZXQoKTogbnVtYmVyO1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcm90ZWN0ZWQgTWV0aG9kc1xuXG4gICAgLy8gI3JlZ2lvbiBQcml2YXRlIE1ldGhvZHNcblxuICAgIC8qKlxuICAgICAqIENhbGN1bGF0ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSB0b29sdGlwIGZyb20gbGlua3NcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldExlZnRQb3NpdGlvbigpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucG9wdXBIZWxwZXIuZ2V0UG9zaXRpb25MZWZ0KFxuICAgICAgICAgICAgdGhpcy5jb250ZW50LFxuICAgICAgICAgICAgdGhpcy50b29sdGlwY29udGFpbmVyLFxuICAgICAgICAgICAgdGhpcy5yZWYsXG4gICAgICAgICAgICB0aGlzLmdldFRvb2x0aXBPZmZzZXQoKSxcbiAgICAgICAgICAgIHRoaXMuZ2V0VG9vbHRpcE9mZnNldCgpLFxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbixcbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5MZWZ0UG9zID0gdmFsdWU7XG5cbiAgICAgICAgY29uc3QgcmVxdWlyZWRQb3NpdGlvbiA9IHRoaXMuR2V0VG9vbHRpcFBvc2l0aW9uKCk7XG4gICAgICAgIGlmIChyZXF1aXJlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24ubGVmdCB8fCByZXF1aXJlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24ucmlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMucG9zQXJyb3dUb3AgPSB0aGlzLmdldFRvb2xUaXBIZWlnaHQoKSAvIDIgLSA2LjU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBvc0Fycm93VG9wID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9vbHRpcCBmcm9tIHRoZSB0b3BcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFRvcFBvc2l0aW9uKCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5wb3B1cEhlbHBlci5nZXRQb3NpdGlvblRvcChcbiAgICAgICAgICAgIHRoaXMuY29udGVudCxcbiAgICAgICAgICAgIHRoaXMudG9vbHRpcGNvbnRhaW5lcixcbiAgICAgICAgICAgIHRoaXMucmVmLFxuICAgICAgICAgICAgdGhpcy5nZXRUb29sdGlwT2Zmc2V0KCksXG4gICAgICAgICAgICB0aGlzLmdldFRvb2x0aXBPZmZzZXQoKSxcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24sXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuVG9wUG9zID0gdmFsdWU7XG5cbiAgICAgICAgY29uc3QgcmVxdWlyZWRQb3NpdGlvbiA9IHRoaXMuR2V0VG9vbHRpcFBvc2l0aW9uKCk7XG4gICAgICAgIGlmIChyZXF1aXJlZFBvc2l0aW9uID09PSBUb29sdGlwUG9zaXRpb24uYm90dG9tIHx8IHJlcXVpcmVkUG9zaXRpb24gPT09IFRvb2x0aXBQb3NpdGlvbi50b3ApIHtcbiAgICAgICAgICAgIHRoaXMucG9zQXJyb3dMZWZ0ID0gdGhpcy5nZXRUb29sVGlwV2lkdGgoKSAvIDIgLSA2LjU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBvc0Fycm93TGVmdCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbWV0aG9kIGlmIGNvbnRlbnQgaGFzIGNoYW5nZWQgYW5kIHByb3BvcnRpb25zIG5lZWQgdG8gYmUgcmVzZXQgaW4gdGhlIFVJLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb25Db250ZW50Q2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAvLyBEbyBub3RoaW5nIGlmIGlzIG5vdCB2aXNpYmxlXG4gICAgICAgIGlmICghdGhpcy5faXNUb29sdGlwVmlzaWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdldExlZnRQb3NpdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5nZXRUb3BQb3NpdGlvbigpO1xuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgLy8gI2VuZHJlZ2lvbiBQcml2YXRlIE1ldGhvZHNcbn1cbiJdLCJtYXBwaW5ncyI6IjsyRkFBQSxPQUFTQSxnQkFBZ0IsS0FBUSw0QkFBNEIsQ0FDN0QsT0FBU0MsZUFBZSxLQUFRLHVCQUF1QixDQUN2RCxPQUFTQyxVQUFVLEtBQVEsc0JBQXNCLENBQ2pELE9BQVNDLFdBQVcsS0FBUSw2QkFBNkIsQ0FDekQsT0FBOENDLFNBQVMsQ0FBdUJDLEtBQUssQ0FBcUJDLFNBQVMsS0FBUSxlQUFlLEMsaUNBRXhJOzs7Ozs7Ozs7O0dBV0EsS0FDc0IsQ0FBQUMsZ0JBQWdCLENBcUZsQztBQUVBO0FBRUE7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