coloration-lib
Advanced tools
Comparing version 0.0.3 to 0.0.4
@@ -23,6 +23,20 @@ (function (global, factory) { | ||
this.hsv = { h: 0, s: 0, v: 0 }; | ||
this.intColor = this.parseColor(color); | ||
this.updateColor(); | ||
this.reset(); | ||
} | ||
/** | ||
* reinit to base color | ||
*/ | ||
/** | ||
* reinit to base color | ||
* @return {?} | ||
*/ | ||
Coloration.prototype.reset = /** | ||
* reinit to base color | ||
* @return {?} | ||
*/ | ||
function () { | ||
this.intColor = this.parseColor(this.color); | ||
this.updateColor(); | ||
}; | ||
/** | ||
* change the luminosity of a color | ||
@@ -29,0 +43,0 @@ * @param lum value between -1 and 1 |
@@ -1,2 +0,2 @@ | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define("coloration-lib",["exports"],t):t(e["coloration-lib"]={})}(this,function(e){"use strict";var n=/^^#?(([\da-f]{3})(([\da-f]{3})([\da-f]{2})?|[\da-f]{1})?)$/i,s=/^rgba?\(([\d]*(\.[\d]+)?)(,?\s*|\s+)([\d]*(\.[\d]+)?)(,?\s*|\s+)([\d]*(\.[\d]+)?)((,\s*)([\d]*(\.[\d]+)?))?\)$/i,h=/^hsla?\(([\d]*(\.[\d]+)?)(,?\s*|\s+)([\d]*(\.[\d]+)?)\%(,?\s*|\s+)([\d]*(\.[\d]+)?)\%((,\s*)([\d]*(\.[\d]+)?))?\)$/i,t=function(){function o(e){this.color=e,this.rgb={r:0,g:0,b:0},this.hsv={h:0,s:0,v:0},this.intColor=this.parseColor(e),this.updateColor()}return o.prototype.changeLuminosity=function(e){return e=this.minmax(e,-1,1),this.maskColor(e<0?"#000":"#FFF",Math.abs(e)),this},o.prototype.maskColor=function(e,t){void 0===t&&(t=1);var r=this.intColor,a=this.parseColor(e),i=this.minmax(t,0,1),f=r>>16,o=r>>8&255,n=255&r;return this.intColor=this.rgbToInt(Math.round(((a>>16)-f)*i)+f,Math.round(((a>>8&255)-o)*i)+o,Math.round(((255&a)-n)*i)+n),this.updateColor(),this},o.prototype.addColor=function(e){return e.luminosity&&this.changeLuminosity(e.luminosity),e.maskColor&&this.maskColor(e.maskColor,this.minmax(e.maskOpacity||0,0,1)),(e.r||e.g||e.b)&&(e.r&&(console.log(this.rgb.r,e.r,this.rgb.r+e.r),this.rgb.r=this.minmax(this.rgb.r+ +e.r,0,255),console.log(this.rgb.r)),e.g&&(this.rgb.g=this.minmax(this.rgb.g+ +e.g,0,255)),e.b&&(this.rgb.r=this.minmax(this.rgb.b+ +e.b,0,255)),this.intColor=this.rgbToInt(this.rgb.r,this.rgb.g,this.rgb.b),this.updateColor()),(e.h||e.s||e.v)&&(e.h&&(this.hsv.h=(this.hsv.h+ +e.h+360)%360),e.s&&(this.hsv.s=this.minmax(this.hsv.s+ +e.s,0,100)),e.v&&(this.hsv.v=this.minmax(this.hsv.v+ +e.v,0,100)),this.intColor=this.hsvToInt(this.hsv.h,this.hsv.s,this.hsv.v),this.updateColor()),this},o.prototype.getRGB=function(){var e=this;return this.value(function(){return Object.assign({},e.rgb)})},o.prototype.getHSV=function(){var e=this;return this.value(function(){return Object.assign({},e.hsv)})},o.prototype.toHEX=function(){var e=this;return this.value(function(){return"#"+(16777216+e.intColor).toString(16).slice(1)})},o.prototype.toHSL=function(){var e=this;return this.value(function(){return"hsl("+e.hsv.h+", "+e.hsv.s+"%, "+e.hsv.v+"%)"})},o.prototype.toRGB=function(){var e=this;return this.value(function(){return"rgb("+e.rgb.r+", "+e.rgb.g+", "+e.rgb.b+")"})},o.prototype.updateColor=function(){this.rgb.r=this.intColor>>16,this.rgb.g=this.intColor>>8&255,this.rgb.b=255&this.intColor,this.hsv=this.rgb2hsv(this.rgb.r,this.rgb.g,this.rgb.b)},o.prototype.parseColor=function(e){o.colorsName[e]&&(e=o.colorsName[e]);var t,r=String(e).match(n);if(r){var a=r[4]?r[2]+r[4]:r[2][0]+r[2][0]+r[2][1]+r[2][1]+r[2][2]+r[2][2];t=parseInt(a,16)}if(t===undefined){var i=String(e).match(s);i&&(t=this.rgbToInt(parseInt(i[1],10),parseInt(i[4],10),parseInt(i[7],10)))}if(t===undefined){var f=String(e).match(h);f&&(t=this.hsvToInt(parseInt(f[1],10),parseInt(f[4],10),parseInt(f[7],10)))}return t},o.prototype.hsvToInt=function(e,t,r){var a=(t=Math.max(0,t))/100,i=r/100,f=e/360;if(0===t)return this.rgbToInt(256*i,256*i,256*i);var o=i<.5?i*(1+a):i+a-i*a,n=2*i-o,s=this.hue2rgb(n,o,f+1/3),h=this.hue2rgb(n,o,f),d=this.hue2rgb(n,o,f-1/3);return this.rgbToInt(Math.round(255*s),Math.round(255*h),Math.round(255*d))},o.prototype.hue2rgb=function(e,t,r){return r<0?r+=1:1<r&&(r-=1),r<1/6?e+6*(t-e)*r:r<.5?t:r<2/3?e+(t-e)*(2/3-r)*6:e},o.prototype.rgb2hsv=function(e,t,r){e/=255,t/=255,r/=255;var a,i,f=Math.max(e,t,r),o=Math.min(e,t,r),n=(f+o)/2;if(f===o)i=a=0;else{var s=f-o;switch(i=s/(1-Math.abs(2*n-1)),f){case e:a=(t-r)/s+(t<r?6:0);break;case t:a=(r-e)/s+2;break;case r:a=(e-t)/s+4}}return{h:Math.round(60*a),s:Math.round(100*i),v:Math.round(100*n)}},o.prototype.rgbToInt=function(e,t,r){return 65536*e+256*t+r},o.prototype.minmax=function(e,t,r,a){return void 0===a&&(a=0),Math.min(Math.max(e||a,t),r)},o.prototype.value=function(e){return isNaN(this.intColor)?null:e()},o.colorsName={black:"#000000",silver:"#c0c0c0",gray:"#808080",white:"#ffffff",maroon:"#800000",red:"#ff0000",purple:"#800080",fuchsia:"#ff00ff",green:"#008000",lime:"#00ff00",olive:"#808000",yellow:"#ffff00",navy:"#000080",blue:"#0000ff",teal:"#008080",aqua:"#00ffff",orange:"#ffa500",aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",blanchedalmond:"#ffebcd",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",deaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",defuchsia:"#ff00ff",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",oldlace:"#fdf5e6",olivedrab:"#6b8e23",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",whitesmoke:"#f5f5f5",yellowgreen:"#9acd32",rebeccapurple:"#663399"},o}();e.Coloration=t,Object.defineProperty(e,"__esModule",{value:!0})}); | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define("coloration-lib",["exports"],t):t(e["coloration-lib"]={})}(this,function(e){"use strict";var n=/^^#?(([\da-f]{3})(([\da-f]{3})([\da-f]{2})?|[\da-f]{1})?)$/i,s=/^rgba?\(([\d]*(\.[\d]+)?)(,?\s*|\s+)([\d]*(\.[\d]+)?)(,?\s*|\s+)([\d]*(\.[\d]+)?)((,\s*)([\d]*(\.[\d]+)?))?\)$/i,h=/^hsla?\(([\d]*(\.[\d]+)?)(,?\s*|\s+)([\d]*(\.[\d]+)?)\%(,?\s*|\s+)([\d]*(\.[\d]+)?)\%((,\s*)([\d]*(\.[\d]+)?))?\)$/i,t=function(){function f(e){this.color=e,this.rgb={r:0,g:0,b:0},this.hsv={h:0,s:0,v:0},this.reset()}return f.prototype.reset=function(){this.intColor=this.parseColor(this.color),this.updateColor()},f.prototype.changeLuminosity=function(e){return e=this.minmax(e,-1,1),this.maskColor(e<0?"#000":"#FFF",Math.abs(e)),this},f.prototype.maskColor=function(e,t){void 0===t&&(t=1);var r=this.intColor,a=this.parseColor(e),i=this.minmax(t,0,1),o=r>>16,f=r>>8&255,n=255&r;return this.intColor=this.rgbToInt(Math.round(((a>>16)-o)*i)+o,Math.round(((a>>8&255)-f)*i)+f,Math.round(((255&a)-n)*i)+n),this.updateColor(),this},f.prototype.addColor=function(e){return e.luminosity&&this.changeLuminosity(e.luminosity),e.maskColor&&this.maskColor(e.maskColor,this.minmax(e.maskOpacity||0,0,1)),(e.r||e.g||e.b)&&(e.r&&(console.log(this.rgb.r,e.r,this.rgb.r+e.r),this.rgb.r=this.minmax(this.rgb.r+ +e.r,0,255),console.log(this.rgb.r)),e.g&&(this.rgb.g=this.minmax(this.rgb.g+ +e.g,0,255)),e.b&&(this.rgb.r=this.minmax(this.rgb.b+ +e.b,0,255)),this.intColor=this.rgbToInt(this.rgb.r,this.rgb.g,this.rgb.b),this.updateColor()),(e.h||e.s||e.v)&&(e.h&&(this.hsv.h=(this.hsv.h+ +e.h+360)%360),e.s&&(this.hsv.s=this.minmax(this.hsv.s+ +e.s,0,100)),e.v&&(this.hsv.v=this.minmax(this.hsv.v+ +e.v,0,100)),this.intColor=this.hsvToInt(this.hsv.h,this.hsv.s,this.hsv.v),this.updateColor()),this},f.prototype.getRGB=function(){var e=this;return this.value(function(){return Object.assign({},e.rgb)})},f.prototype.getHSV=function(){var e=this;return this.value(function(){return Object.assign({},e.hsv)})},f.prototype.toHEX=function(){var e=this;return this.value(function(){return"#"+(16777216+e.intColor).toString(16).slice(1)})},f.prototype.toHSL=function(){var e=this;return this.value(function(){return"hsl("+e.hsv.h+", "+e.hsv.s+"%, "+e.hsv.v+"%)"})},f.prototype.toRGB=function(){var e=this;return this.value(function(){return"rgb("+e.rgb.r+", "+e.rgb.g+", "+e.rgb.b+")"})},f.prototype.updateColor=function(){this.rgb.r=this.intColor>>16,this.rgb.g=this.intColor>>8&255,this.rgb.b=255&this.intColor,this.hsv=this.rgb2hsv(this.rgb.r,this.rgb.g,this.rgb.b)},f.prototype.parseColor=function(e){f.colorsName[e]&&(e=f.colorsName[e]);var t,r=String(e).match(n);if(r){var a=r[4]?r[2]+r[4]:r[2][0]+r[2][0]+r[2][1]+r[2][1]+r[2][2]+r[2][2];t=parseInt(a,16)}if(t===undefined){var i=String(e).match(s);i&&(t=this.rgbToInt(parseInt(i[1],10),parseInt(i[4],10),parseInt(i[7],10)))}if(t===undefined){var o=String(e).match(h);o&&(t=this.hsvToInt(parseInt(o[1],10),parseInt(o[4],10),parseInt(o[7],10)))}return t},f.prototype.hsvToInt=function(e,t,r){var a=(t=Math.max(0,t))/100,i=r/100,o=e/360;if(0===t)return this.rgbToInt(256*i,256*i,256*i);var f=i<.5?i*(1+a):i+a-i*a,n=2*i-f,s=this.hue2rgb(n,f,o+1/3),h=this.hue2rgb(n,f,o),d=this.hue2rgb(n,f,o-1/3);return this.rgbToInt(Math.round(255*s),Math.round(255*h),Math.round(255*d))},f.prototype.hue2rgb=function(e,t,r){return r<0?r+=1:1<r&&(r-=1),r<1/6?e+6*(t-e)*r:r<.5?t:r<2/3?e+(t-e)*(2/3-r)*6:e},f.prototype.rgb2hsv=function(e,t,r){e/=255,t/=255,r/=255;var a,i,o=Math.max(e,t,r),f=Math.min(e,t,r),n=(o+f)/2;if(o===f)i=a=0;else{var s=o-f;switch(i=s/(1-Math.abs(2*n-1)),o){case e:a=(t-r)/s+(t<r?6:0);break;case t:a=(r-e)/s+2;break;case r:a=(e-t)/s+4}}return{h:Math.round(60*a),s:Math.round(100*i),v:Math.round(100*n)}},f.prototype.rgbToInt=function(e,t,r){return 65536*e+256*t+r},f.prototype.minmax=function(e,t,r,a){return void 0===a&&(a=0),Math.min(Math.max(e||a,t),r)},f.prototype.value=function(e){return isNaN(this.intColor)?null:e()},f.colorsName={black:"#000000",silver:"#c0c0c0",gray:"#808080",white:"#ffffff",maroon:"#800000",red:"#ff0000",purple:"#800080",fuchsia:"#ff00ff",green:"#008000",lime:"#00ff00",olive:"#808000",yellow:"#ffff00",navy:"#000080",blue:"#0000ff",teal:"#008080",aqua:"#00ffff",orange:"#ffa500",aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",blanchedalmond:"#ffebcd",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",deaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",defuchsia:"#ff00ff",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",oldlace:"#fdf5e6",olivedrab:"#6b8e23",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",whitesmoke:"#f5f5f5",yellowgreen:"#9acd32",rebeccapurple:"#663399"},f}();e.Coloration=t,Object.defineProperty(e,"__esModule",{value:!0})}); | ||
//# sourceMappingURL=coloration-lib.umd.min.js.map |
# Changelog of coloration-lib | ||
## V0.0.4 (2019-01-23) | ||
### Feature | ||
- add `reset()` method | ||
## V0.0.3 (2019-01-22) | ||
@@ -4,0 +10,0 @@ |
@@ -1,1 +0,1 @@ | ||
{"__symbolic":"module","version":4,"metadata":{"RGB":{"__symbolic":"interface"},"HSV":{"__symbolic":"interface"},"ColorData":{"__symbolic":"interface"},"Coloration":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"changeLuminosity":[{"__symbolic":"method"}],"maskColor":[{"__symbolic":"method"}],"addColor":[{"__symbolic":"method"}],"getRGB":[{"__symbolic":"method"}],"getHSV":[{"__symbolic":"method"}],"toHEX":[{"__symbolic":"method"}],"toHSL":[{"__symbolic":"method"}],"toRGB":[{"__symbolic":"method"}],"updateColor":[{"__symbolic":"method"}],"parseColor":[{"__symbolic":"method"}],"hsvToInt":[{"__symbolic":"method"}],"hue2rgb":[{"__symbolic":"method"}],"rgb2hsv":[{"__symbolic":"method"}],"rgbToInt":[{"__symbolic":"method"}],"minmax":[{"__symbolic":"method"}],"value":[{"__symbolic":"method"}]},"statics":{"colorsName":{"black":"#000000","silver":"#c0c0c0","gray":"#808080","white":"#ffffff","maroon":"#800000","red":"#ff0000","purple":"#800080","fuchsia":"#ff00ff","green":"#008000","lime":"#00ff00","olive":"#808000","yellow":"#ffff00","navy":"#000080","blue":"#0000ff","teal":"#008080","aqua":"#00ffff","orange":"#ffa500","aliceblue":"#f0f8ff","antiquewhite":"#faebd7","aquamarine":"#7fffd4","azure":"#f0ffff","beige":"#f5f5dc","bisque":"#ffe4c4","blanchedalmond":"#ffebcd","blueviolet":"#8a2be2","brown":"#a52a2a","burlywood":"#deb887","cadetblue":"#5f9ea0","chartreuse":"#7fff00","chocolate":"#d2691e","coral":"#ff7f50","cornflowerblue":"#6495ed","cornsilk":"#fff8dc","crimson":"#dc143c","cyan":"#00ffff","deaqua":"#00ffff","darkblue":"#00008b","darkcyan":"#008b8b","darkgoldenrod":"#b8860b","darkgray":"#a9a9a9","darkgreen":"#006400","darkgrey":"#a9a9a9","darkkhaki":"#bdb76b","darkmagenta":"#8b008b","darkolivegreen":"#556b2f","darkorange":"#ff8c00","darkorchid":"#9932cc","darkred":"#8b0000","darksalmon":"#e9967a","darkseagreen":"#8fbc8f","darkslateblue":"#483d8b","darkslategray":"#2f4f4f","darkslategrey":"#2f4f4f","darkturquoise":"#00ced1","darkviolet":"#9400d3","deeppink":"#ff1493","deepskyblue":"#00bfff","dimgray":"#696969","dimgrey":"#696969","dodgerblue":"#1e90ff","firebrick":"#b22222","floralwhite":"#fffaf0","forestgreen":"#228b22","gainsboro":"#dcdcdc","ghostwhite":"#f8f8ff","gold":"#ffd700","goldenrod":"#daa520","greenyellow":"#adff2f","grey":"#808080","honeydew":"#f0fff0","hotpink":"#ff69b4","indianred":"#cd5c5c","indigo":"#4b0082","ivory":"#fffff0","khaki":"#f0e68c","lavender":"#e6e6fa","lavenderblush":"#fff0f5","lawngreen":"#7cfc00","lemonchiffon":"#fffacd","lightblue":"#add8e6","lightcoral":"#f08080","lightcyan":"#e0ffff","lightgoldenrodyellow":"#fafad2","lightgray":"#d3d3d3","lightgreen":"#90ee90","lightgrey":"#d3d3d3","lightpink":"#ffb6c1","lightsalmon":"#ffa07a","lightseagreen":"#20b2aa","lightskyblue":"#87cefa","lightslategray":"#778899","lightslategrey":"#778899","lightsteelblue":"#b0c4de","lightyellow":"#ffffe0","limegreen":"#32cd32","linen":"#faf0e6","magenta":"#ff00ff","defuchsia":"#ff00ff","mediumaquamarine":"#66cdaa","mediumblue":"#0000cd","mediumorchid":"#ba55d3","mediumpurple":"#9370db","mediumseagreen":"#3cb371","mediumslateblue":"#7b68ee","mediumspringgreen":"#00fa9a","mediumturquoise":"#48d1cc","mediumvioletred":"#c71585","midnightblue":"#191970","mintcream":"#f5fffa","mistyrose":"#ffe4e1","moccasin":"#ffe4b5","navajowhite":"#ffdead","oldlace":"#fdf5e6","olivedrab":"#6b8e23","orangered":"#ff4500","orchid":"#da70d6","palegoldenrod":"#eee8aa","palegreen":"#98fb98","paleturquoise":"#afeeee","palevioletred":"#db7093","papayawhip":"#ffefd5","peachpuff":"#ffdab9","peru":"#cd853f","pink":"#ffc0cb","plum":"#dda0dd","powderblue":"#b0e0e6","rosybrown":"#bc8f8f","royalblue":"#4169e1","saddlebrown":"#8b4513","salmon":"#fa8072","sandybrown":"#f4a460","seagreen":"#2e8b57","seashell":"#fff5ee","sienna":"#a0522d","skyblue":"#87ceeb","slateblue":"#6a5acd","slategray":"#708090","slategrey":"#708090","snow":"#fffafa","springgreen":"#00ff7f","steelblue":"#4682b4","tan":"#d2b48c","thistle":"#d8bfd8","tomato":"#ff6347","turquoise":"#40e0d0","violet":"#ee82ee","wheat":"#f5deb3","whitesmoke":"#f5f5f5","yellowgreen":"#9acd32","rebeccapurple":"#663399"}}}},"origins":{"RGB":"./lib/coloration","HSV":"./lib/coloration","ColorData":"./lib/coloration","Coloration":"./lib/coloration"},"importAs":"coloration-lib"} | ||
{"__symbolic":"module","version":4,"metadata":{"RGB":{"__symbolic":"interface"},"HSV":{"__symbolic":"interface"},"ColorData":{"__symbolic":"interface"},"Coloration":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"}]}],"reset":[{"__symbolic":"method"}],"changeLuminosity":[{"__symbolic":"method"}],"maskColor":[{"__symbolic":"method"}],"addColor":[{"__symbolic":"method"}],"getRGB":[{"__symbolic":"method"}],"getHSV":[{"__symbolic":"method"}],"toHEX":[{"__symbolic":"method"}],"toHSL":[{"__symbolic":"method"}],"toRGB":[{"__symbolic":"method"}],"updateColor":[{"__symbolic":"method"}],"parseColor":[{"__symbolic":"method"}],"hsvToInt":[{"__symbolic":"method"}],"hue2rgb":[{"__symbolic":"method"}],"rgb2hsv":[{"__symbolic":"method"}],"rgbToInt":[{"__symbolic":"method"}],"minmax":[{"__symbolic":"method"}],"value":[{"__symbolic":"method"}]},"statics":{"colorsName":{"black":"#000000","silver":"#c0c0c0","gray":"#808080","white":"#ffffff","maroon":"#800000","red":"#ff0000","purple":"#800080","fuchsia":"#ff00ff","green":"#008000","lime":"#00ff00","olive":"#808000","yellow":"#ffff00","navy":"#000080","blue":"#0000ff","teal":"#008080","aqua":"#00ffff","orange":"#ffa500","aliceblue":"#f0f8ff","antiquewhite":"#faebd7","aquamarine":"#7fffd4","azure":"#f0ffff","beige":"#f5f5dc","bisque":"#ffe4c4","blanchedalmond":"#ffebcd","blueviolet":"#8a2be2","brown":"#a52a2a","burlywood":"#deb887","cadetblue":"#5f9ea0","chartreuse":"#7fff00","chocolate":"#d2691e","coral":"#ff7f50","cornflowerblue":"#6495ed","cornsilk":"#fff8dc","crimson":"#dc143c","cyan":"#00ffff","deaqua":"#00ffff","darkblue":"#00008b","darkcyan":"#008b8b","darkgoldenrod":"#b8860b","darkgray":"#a9a9a9","darkgreen":"#006400","darkgrey":"#a9a9a9","darkkhaki":"#bdb76b","darkmagenta":"#8b008b","darkolivegreen":"#556b2f","darkorange":"#ff8c00","darkorchid":"#9932cc","darkred":"#8b0000","darksalmon":"#e9967a","darkseagreen":"#8fbc8f","darkslateblue":"#483d8b","darkslategray":"#2f4f4f","darkslategrey":"#2f4f4f","darkturquoise":"#00ced1","darkviolet":"#9400d3","deeppink":"#ff1493","deepskyblue":"#00bfff","dimgray":"#696969","dimgrey":"#696969","dodgerblue":"#1e90ff","firebrick":"#b22222","floralwhite":"#fffaf0","forestgreen":"#228b22","gainsboro":"#dcdcdc","ghostwhite":"#f8f8ff","gold":"#ffd700","goldenrod":"#daa520","greenyellow":"#adff2f","grey":"#808080","honeydew":"#f0fff0","hotpink":"#ff69b4","indianred":"#cd5c5c","indigo":"#4b0082","ivory":"#fffff0","khaki":"#f0e68c","lavender":"#e6e6fa","lavenderblush":"#fff0f5","lawngreen":"#7cfc00","lemonchiffon":"#fffacd","lightblue":"#add8e6","lightcoral":"#f08080","lightcyan":"#e0ffff","lightgoldenrodyellow":"#fafad2","lightgray":"#d3d3d3","lightgreen":"#90ee90","lightgrey":"#d3d3d3","lightpink":"#ffb6c1","lightsalmon":"#ffa07a","lightseagreen":"#20b2aa","lightskyblue":"#87cefa","lightslategray":"#778899","lightslategrey":"#778899","lightsteelblue":"#b0c4de","lightyellow":"#ffffe0","limegreen":"#32cd32","linen":"#faf0e6","magenta":"#ff00ff","defuchsia":"#ff00ff","mediumaquamarine":"#66cdaa","mediumblue":"#0000cd","mediumorchid":"#ba55d3","mediumpurple":"#9370db","mediumseagreen":"#3cb371","mediumslateblue":"#7b68ee","mediumspringgreen":"#00fa9a","mediumturquoise":"#48d1cc","mediumvioletred":"#c71585","midnightblue":"#191970","mintcream":"#f5fffa","mistyrose":"#ffe4e1","moccasin":"#ffe4b5","navajowhite":"#ffdead","oldlace":"#fdf5e6","olivedrab":"#6b8e23","orangered":"#ff4500","orchid":"#da70d6","palegoldenrod":"#eee8aa","palegreen":"#98fb98","paleturquoise":"#afeeee","palevioletred":"#db7093","papayawhip":"#ffefd5","peachpuff":"#ffdab9","peru":"#cd853f","pink":"#ffc0cb","plum":"#dda0dd","powderblue":"#b0e0e6","rosybrown":"#bc8f8f","royalblue":"#4169e1","saddlebrown":"#8b4513","salmon":"#fa8072","sandybrown":"#f4a460","seagreen":"#2e8b57","seashell":"#fff5ee","sienna":"#a0522d","skyblue":"#87ceeb","slateblue":"#6a5acd","slategray":"#708090","slategrey":"#708090","snow":"#fffafa","springgreen":"#00ff7f","steelblue":"#4682b4","tan":"#d2b48c","thistle":"#d8bfd8","tomato":"#ff6347","turquoise":"#40e0d0","violet":"#ee82ee","wheat":"#f5deb3","whitesmoke":"#f5f5f5","yellowgreen":"#9acd32","rebeccapurple":"#663399"}}}},"origins":{"RGB":"./lib/coloration","HSV":"./lib/coloration","ColorData":"./lib/coloration","Coloration":"./lib/coloration"},"importAs":"coloration-lib"} |
@@ -113,3 +113,10 @@ /** | ||
this.hsv = { h: 0, s: 0, v: 0 }; | ||
this.intColor = this.parseColor(color); | ||
this.reset(); | ||
} | ||
/** | ||
* reinit to base color | ||
* @return {?} | ||
*/ | ||
reset() { | ||
this.intColor = this.parseColor(this.color); | ||
this.updateColor(); | ||
@@ -498,2 +505,2 @@ } | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbG9yYXRpb24tbGliLyIsInNvdXJjZXMiOlsibGliL2NvbG9yYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O01BR00sT0FBTyxHQUFHO0lBQ1osSUFBSSxFQUFFLDZEQUE2RDtJQUNuRSxJQUFJLEVBQUUsaUhBQWlIO0lBQ3ZILElBQUksRUFBRSxxSEFBcUg7Q0FDOUg7Ozs7QUFFRCx5QkFJQzs7Ozs7O0lBSGtDLGdCQUFVOzs7OztJQUNSLGdCQUFVOzs7OztJQUNWLGdCQUFVOzs7OztBQUUvQyx5QkFJQzs7Ozs7O0lBSGtDLGdCQUFVOzs7OztJQUNILGdCQUFVOzs7OztJQUNKLGdCQUFVOzs7OztBQUUxRCwrQkFhQzs7Ozs7O0lBWHFDLHNCQUFXOzs7OztJQUNULHNCQUFXOzs7OztJQUNYLHNCQUFXOzs7OztJQUVuQixzQkFBVzs7Ozs7SUFDSixzQkFBVzs7Ozs7SUFDTCxzQkFBVzs7Ozs7SUFFckIsK0JBQW9COzs7OztJQUNqQyw4QkFBbUI7Ozs7O0lBQ0wsZ0NBQXFCOztBQUd6RCxNQUFNLE9BQU8sVUFBVTs7OztJQWtEbkIsWUFBbUIsS0FBYTtRQUFiLFVBQUssR0FBTCxLQUFLLENBQVE7UUFIeEIsUUFBRyxHQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNoQyxRQUFHLEdBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBR3BDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkIsQ0FBQzs7Ozs7O0lBT0QsZ0JBQWdCLENBQUMsR0FBVztRQUN4QixHQUFHLEdBQUcsSUFBSSxDQUFD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RSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTO0lBQ3JHLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVM7SUFDckcsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUztJQUNuRyxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTOztJQUV4RyxhQUFhLEVBQUUsU0FBUztDQUMzQixDQUFDOzs7Ozs7SUF2Q0Ysc0JBdUNFOzs7OztJQUVGLDhCQUF5Qjs7Ozs7SUFDekIseUJBQXdDOzs7OztJQUN4Qyx5QkFBd0M7O0lBRTVCLDJCQUFvQiIsInNvdXJjZXNDb250ZW50IjpbIlxuLy8gdHNsaW50OmRpc2FibGU6bm8tYml0d2lzZVxuXG5jb25zdCBwYXR0ZXJuID0ge1xuICAgIGhleGE6IC9eXiM/KChbXFxkYS1mXXszfSkoKFtcXGRhLWZdezN9KShbXFxkYS1mXXsyfSk/fFtcXGRhLWZdezF9KT8pJC9pLFxuICAgIHJnYmE6IC9ecmdiYT9cXCgoW1xcZF0qKFxcLltcXGRdKyk/KSgsP1xccyp8XFxzKykoW1xcZF0qKFxcLltcXGRdKyk/KSgsP1xccyp8XFxzKykoW1xcZF0qKFxcLltcXGRdKyk/KSgoLFxccyopKFtcXGRdKihcXC5bXFxkXSspPykpP1xcKSQvaSxcbiAgICBoc3ZhOiAvXmhzbGE/XFwoKFtcXGRdKihcXC5bXFxkXSspPykoLD9cXHMqfFxccyspKFtcXGRdKihcXC5bXFxkXSspPylcXCUoLD9cXHMqfFxccyspKFtcXGRdKihcXC5bXFxkXSspPylcXCUoKCxcXHMqKShbXFxkXSooXFwuW1xcZF0rKT8pKT9cXCkkL2lcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgUkdCIHtcbiAgICAvKiogUmVkIGNvbG9yIHZhbHVlIFswLDI1NV0gKi8gcjogbnVtYmVyO1xuICAgIC8qKiBHcmVlbiBjb2xvciB2YWx1ZSBbMCwyNTVdICovIGc6IG51bWJlcjtcbiAgICAvKiogQmx1ZSBjb2xvciB2YWx1ZSBbMCwyNTVdICovICBiOiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIEhTViB7XG4gICAgLyoqIEh1ZSBjb2xvciB2YWx1ZSBbMCwzNjBdICovIGg6IG51bWJlcjtcbiAgICAvKiogU2FsdXJhdGlvbiBjb2xvciB2YWx1ZSBbMCwxMDBdICovIHM6IG51bWJlcjtcbiAgICAvKiogVmFsdWUvbGlnaHRuZXNzIGNvbG9yIHZhbHVlIFswLDEwMF0gKi8gIHY6IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ29sb3JEYXRhIHtcbiAgICAvLyBSR0JcbiAgICAvKiogUmVkIGNvbG9yIHZhbHVlIFstMjU2LDI1NV0gKi8gcj86IG51bWJlcjtcbiAgICAvKiogR3JlZW4gY29sb3IgdmFsdWUgWy0yNTYsMjU1XSAqLyBnPzogbnVtYmVyO1xuICAgIC8qKiBCbHVlIGNvbG9yIHZhbHVlIFstMjU2LDI1NV0gKi8gIGI/OiBudW1iZXI7XG4gICAgLy8gSFNWL0hTTFxuICAgIC8qKiBIdWUgdmFsdWUgWy0zNjAsMzYwXSAqLyBoPzogbnVtYmVyO1xuICAgIC8qKiBTYWx1cmF0aW9uIHZhbHVlIFstMTAwLDEwMF0gKi8gcz86IG51bWJlcjtcbiAgICAvKiogVmFsdWUvbGlnaHRuZXNzIHZhbHVlIFstMTAwLDEwMF0gKi8gIHY/OiBudW1iZXI7XG4gICAgLy8gT3RoZXJcbiAgICAvKiogbHVtaW5vc2l0eSB2YWx1ZSBbLTEsMV0gKi8gbHVtaW5vc2l0eT86IG51bWJlcjtcbiAgICAvKiogY29sb3IgbWFzayAqLyBtYXNrQ29sb3I/OiBzdHJpbmc7XG4gICAgLyoqIGNvbG9yIG1hc2sgb3BhY2l0eSBbMCwxXSAqLyBtYXNrT3BhY2l0eT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIENvbG9yYXRpb24ge1xuXG4gICAgLyoqXG4gICAgICogQ1NTIGNvbG9yIGxpc3RcbiAgICAgKi9cbiAgICBzdGF0aWMgY29sb3JzTmFtZTogYW55ID0ge1xuICAgICAgICAvLyBDU1MgMVxuICAgICAgICBibGFjazogJyMwMDAwMDAnLCBzaWx2ZXI6ICcjYzBjMGMwJywgZ3JheTogJyM4MDgwODAnLCB3aGl0ZTogJyNmZmZmZmYnLCBtYXJvb246ICcjODAwMDAwJywgcmVkOiAnI2ZmMDAwMCcsXG4gICAgICAgIHB1cnBsZTogJyM4MDAwODAnLCBmdWNoc2lhOiAnI2ZmMDBmZicsIGdyZWVuOiAnIzAwODAwMCcsIGxpbWU6ICcjMDBmZjAwJywgb2xpdmU6ICcjODA4MDAwJywgeWVsbG93OiAnI2ZmZmYwMCcsXG4gICAgICAgIG5hdnk6ICcjMDAwMDgwJywgYmx1ZTogJyMwMDAwZmYnLCB0ZWFsOiAnIzAwODA4MCcsIGFxdWE6ICcjMDBmZmZmJyxcbiAgICAgICAgLy8gQ1NTIDIgKFJldmlzaW9uIDEpXG4gICAgICAgIG9yYW5nZTogJyNmZmE1MDAnLFxuICAgICAgICAvLyBDU1MgM1xuICAgICAgICBhbGljZWJsdWU6ICcjZjBmOGZmJywgYW50aXF1ZXdoaXRlOiAnI2ZhZWJkNycsIGFxdWFtYXJpbmU6ICcjN2ZmZmQ0JywgYXp1cmU6ICcjZjBmZmZmJywgYmVpZ2U6ICcjZjVmNWRjJyxcbiAgICAgICAgYmlzcXVlOiAnI2ZmZTRjNCcsIGJsYW5jaGVkYWxtb25kOiAnI2ZmZWJjZCcsIGJsdWV2aW9sZXQ6ICcjOGEyYmUyJywgYnJvd246ICcjYTUyYTJhJywgYnVybHl3b29kOiAnI2RlYjg4NycsXG4gICAgICAgIGNhZGV0Ymx1ZTogJyM1ZjllYTAnLCBjaGFydHJldXNlOiAnIzdmZmYwMCcsIGNob2NvbGF0ZTogJyNkMjY5MWUnLCBjb3JhbDogJyNmZjdmNTAnLCBjb3JuZmxvd2VyYmx1ZTogJyM2NDk1ZWQnLFxuICAgICAgICBjb3Juc2lsazogJyNmZmY4ZGMnLCBjcmltc29uOiAnI2RjMTQzYycsIGN5YW46ICcjMDBmZmZmJywgZGVhcXVhOiAnIzAwZmZmZicsIGRhcmtibHVlOiAnIzAwMDA4YicsXG4gICAgICAgIGRhcmtjeWFuOiAnIzAwOGI4YicsIGRhcmtnb2xkZW5yb2Q6ICcjYjg4NjBiJywgZGFya2dyYXk6ICcjYTlhOWE5JywgZGFya2dyZWVuOiAnIzAwNjQwMCcsIGRhcmtncmV5OiAnI2E5YTlhOScsXG4gICAgICAgIGRhcmtraGFraTogJyNiZGI3NmInLCBkYXJrbWFnZW50YTogJyM4YjAwOGInLCBkYXJrb2xpdmVncmVlbjogJyM1NTZiMmYnLCBkYXJrb3JhbmdlOiAnI2ZmOGMwMCcsXG4gICAgICAgIGRhcmtvcmNoaWQ6ICcjOTkzMmNjJywgZGFya3JlZDogJyM4YjAwMDAnLCBkYXJrc2FsbW9uOiAnI2U5OTY3YScsIGRhcmtzZWFncmVlbjogJyM4ZmJjOGYnLFxuICAgICAgICBkYXJrc2xhdGVibHVlOiAnIzQ4M2Q4YicsIGRhcmtzbGF0ZWdyYXk6ICcjMmY0ZjRmJywgZGFya3NsYXRlZ3JleTogJyMyZjRmNGYnLCBkYXJrdHVycXVvaXNlOiAnIzAwY2VkMScsXG4gICAgICAgIGRhcmt2aW9sZXQ6ICcjOTQwMGQzJywgZGVlcHBpbms6ICcjZmYxNDkzJywgZGVlcHNreWJsdWU6ICcjMDBiZmZmJywgZGltZ3JheTogJyM2OTY5NjknLCBkaW1ncmV5OiAnIzY5Njk2OScsXG4gICAgICAgIGRvZGdlcmJsdWU6ICcjMWU5MGZmJywgZmlyZWJyaWNrOiAnI2IyMjIyMicsIGZsb3JhbHdoaXRlOiAnI2ZmZmFmMCcsIGZvcmVzdGdyZWVuOiAnIzIyOGIyMicsXG4gICAgICAgIGdhaW5zYm9ybzogJyNkY2RjZGMnLCBnaG9zdHdoaXRlOiAnI2Y4ZjhmZicsIGdvbGQ6ICcjZmZkNzAwJywgZ29sZGVucm9kOiAnI2RhYTUyMCcsIGdyZWVueWVsbG93OiAnI2FkZmYyZicsXG4gICAgICAgIGdyZXk6ICcjODA4MDgwJywgaG9uZXlkZXc6ICcjZjBmZmYwJywgaG90cGluazogJyNmZjY5YjQnLCBpbmRpYW5yZWQ6ICcjY2Q1YzVjJywgaW5kaWdvOiAnIzRiMDA4MicsXG4gICAgICAgIGl2b3J5OiAnI2ZmZmZmMCcsIGtoYWtpOiAnI2YwZTY4YycsIGxhdmVuZGVyOiAnI2U2ZTZmYScsIGxhdmVuZGVyYmx1c2g6ICcjZmZmMGY1JywgbGF3bmdyZWVuOiAnIzdjZmMwMCcsXG4gICAgICAgIGxlbW9uY2hpZmZvbjogJyNmZmZhY2QnLCBsaWdodGJsdWU6ICcjYWRkOGU2JywgbGlnaHRjb3JhbDogJyNmMDgwODAnLCBsaWdodGN5YW46ICcjZTBmZmZmJyxcbiAgICAgICAgbGlnaHRnb2xkZW5yb2R5ZWxsb3c6ICcjZmFmYWQyJywgbGlnaHRncmF5OiAnI2QzZDNkMycsIGxpZ2h0Z3JlZW46ICcjOTBlZTkwJywgbGlnaHRncmV5OiAnI2QzZDNkMycsXG4gICAgICAgIGxpZ2h0cGluazogJyNmZmI2YzEnLCBsaWdodHNhbG1vbjogJyNmZmEwN2EnLCBsaWdodHNlYWdyZWVuOiAnIzIwYjJhYScsIGxpZ2h0c2t5Ymx1ZTogJyM4N2NlZmEnLFxuICAgICAgICBsaWdodHNsYXRlZ3JheTogJyM3Nzg4OTknLCBsaWdodHNsYXRlZ3JleTogJyM3Nzg4OTknLCBsaWdodHN0ZWVsYmx1ZTogJyNiMGM0ZGUnLCBsaWdodHllbGxvdzogJyNmZmZmZTAnLFxuICAgICAgICBsaW1lZ3JlZW46ICcjMzJjZDMyJywgbGluZW46ICcjZmFmMGU2JywgbWFnZW50YTogJyNmZjAwZmYnLCBkZWZ1Y2hzaWE6ICcjZmYwMGZmJywgbWVkaXVtYXF1YW1hcmluZTogJyM2NmNkYWEnLFxuICAgICAgICBtZWRpdW1ibHVlOiAnIzAwMDBjZCcsIG1lZGl1bW9yY2hpZDogJyNiYTU1ZDMnLCBtZWRpdW1wdXJwbGU6ICcjOTM3MGRiJywgbWVkaXVtc2VhZ3JlZW46ICcjM2NiMzcxJyxcbiAgICAgICAgbWVkaXVtc2xhdGVibHVlOiAnIzdiNjhlZScsIG1lZGl1bXNwcmluZ2dyZWVuOiAnIzAwZmE5YScsIG1lZGl1bXR1cnF1b2lzZTogJyM0OGQxY2MnLFxuICAgICAgICBtZWRpdW12aW9sZXRyZWQ6ICcjYzcxNTg1JywgbWlkbmlnaHRibHVlOiAnIzE5MTk3MCcsIG1pbnRjcmVhbTogJyNmNWZmZmEnLCBtaXN0eXJvc2U6ICcjZmZlNGUxJyxcbiAgICAgICAgbW9jY2FzaW46ICcjZmZlNGI1JywgbmF2YWpvd2hpdGU6ICcjZmZkZWFkJywgb2xkbGFjZTogJyNmZGY1ZTYnLCBvbGl2ZWRyYWI6ICcjNmI4ZTIzJywgb3JhbmdlcmVkOiAnI2ZmNDUwMCcsXG4gICAgICAgIG9yY2hpZDogJyNkYTcwZDYnLCBwYWxlZ29sZGVucm9kOiAnI2VlZThhYScsIHBhbGVncmVlbjogJyM5OGZiOTgnLCBwYWxldHVycXVvaXNlOiAnI2FmZWVlZScsXG4gICAgICAgIHBhbGV2aW9sZXRyZWQ6ICcjZGI3MDkzJywgcGFwYXlhd2hpcDogJyNmZmVmZDUnLCBwZWFjaHB1ZmY6ICcjZmZkYWI5JywgcGVydTogJyNjZDg1M2YnLCBwaW5rOiAnI2ZmYzBjYicsXG4gICAgICAgIHBsdW06ICcjZGRhMGRkJywgcG93ZGVyYmx1ZTogJyNiMGUwZTYnLCByb3N5YnJvd246ICcjYmM4ZjhmJywgcm95YWxibHVlOiAnIzQxNjllMScsIHNhZGRsZWJyb3duOiAnIzhiNDUxMycsXG4gICAgICAgIHNhbG1vbjogJyNmYTgwNzInLCBzYW5keWJyb3duOiAnI2Y0YTQ2MCcsIHNlYWdyZWVuOiAnIzJlOGI1NycsIHNlYXNoZWxsOiAnI2ZmZjVlZScsIHNpZW5uYTogJyNhMDUyMmQnLFxuICAgICAgICBza3libHVlOiAnIzg3Y2VlYicsIHNsYXRlYmx1ZTogJyM2YTVhY2QnLCBzbGF0ZWdyYXk6ICcjNzA4MDkwJywgc2xhdGVncmV5OiAnIzcwODA5MCcsIHNub3c6ICcjZmZmYWZhJyxcbiAgICAgICAgc3ByaW5nZ3JlZW46ICcjMDBmZjdmJywgc3RlZWxibHVlOiAnIzQ2ODJiNCcsIHRhbjogJyNkMmI0OGMnLCB0aGlzdGxlOiAnI2Q4YmZkOCcsIHRvbWF0bzogJyNmZjYzNDcnLFxuICAgICAgICB0dXJxdW9pc2U6ICcjNDBlMGQwJywgdmlvbGV0OiAnI2VlODJlZScsIHdoZWF0OiAnI2Y1ZGViMycsIHdoaXRlc21va2U6ICcjZjVmNWY1JywgeWVsbG93Z3JlZW46ICcjOWFjZDMyJyxcbiAgICAgICAgLy8gQ1NTIDRcbiAgICAgICAgcmViZWNjYXB1cnBsZTogJyM2NjMzOTknXG4gICAgfTtcblxuICAgIHByaXZhdGUgaW50Q29sb3I6IG51bWJlcjtcbiAgICBwcml2YXRlIHJnYjogUkdCID0geyByOiAwLCBnOiAwLCBiOiAwIH07XG4gICAgcHJpdmF0ZSBoc3Y6IEhTViA9IHsgaDogMCwgczogMCwgdjogMCB9O1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGNvbG9yOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5pbnRDb2xvciA9IHRoaXMucGFyc2VDb2xvcihjb2xvcik7XG4gICAgICAgIHRoaXMudXBkYXRlQ29sb3IoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjaGFuZ2UgdGhlIGx1bWlub3NpdHkgb2YgYSBjb2xvclxuICAgICAqIEBwYXJhbSBsdW0gdmFsdWUgYmV0d2VlbiAtMSBhbmQgMVxuICAgICAqIEByZXR1cm5zIENvbG9yYXRpb25cbiAgICAgKi9cbiAgICBjaGFuZ2VMdW1pbm9zaXR5KGx1bTogbnVtYmVyKTogQ29sb3JhdGlvbiB7XG4gICAgICAgIGx1bSA9IHRoaXMubWlubWF4KGx1bSwgLTEsIDEpO1xuICAgICAgICB0aGlzLm1hc2tDb2xvcihsdW0gPCAwID8gJyMwMDAnIDogJyNGRkYnLCBNYXRoLmFicyhsdW0pKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogYWRkIGNvbG9yIHdpdGggYSBtYXJrXG4gICAgICogQHBhcmFtIGNvbG9yIGFkZGl0aW9uYWwgY29sb3JcbiAgICAgKiBAcGFyYW0gb3BhY2l0eSB2YWx1ZSBvZiBvcGFjaXR5IGJldHdlZW4gMCBhbmQgMSBmb3IgdGhlIGFkZGl0aW9uYWwgY29sb3JcbiAgICAgKiBAcmV0dXJucyBDb2xvcmF0aW9uXG4gICAgICovXG4gICAgbWFza0NvbG9yKGNvbG9yOiBzdHJpbmcsIG9wYWNpdHk6IG51bWJlciA9IDEpOiBDb2xvcmF0aW9uIHtcblxuICAgICAgICBjb25zdCBiYXNlQ29sb3IgPSB0aGlzLmludENvbG9yO1xuICAgICAgICBjb25zdCBhZGRpdGlvbmFsQ29sb3IgPSB0aGlzLnBhcnNlQ29sb3IoY29sb3IpO1xuXG4gICAgICAgIGNvbnN0IGx1bSA9IHRoaXMubWlubWF4KG9wYWNpdHksIDAsIDEpO1xuXG4gICAgICAgIGNvbnN0IFIgPSBiYXNlQ29sb3IgPj4gMTY7XG4gICAgICAgIGNvbnN0IEcgPSBiYXNlQ29sb3IgPj4gOCAmIDB4MDBGRjtcbiAgICAgICAgY29uc3QgQiA9IGJhc2VDb2xvciAmIDB4MDAwMEZGO1xuXG4gICAgICAgIHRoaXMuaW50Q29sb3IgPSB0aGlzLnJnYlRvSW50KFxuICAgICAgICAgICAgTWF0aC5yb3VuZCgoKGFkZGl0aW9uYWxDb2xvciA+PiAxNikgLSBSKSAqIGx1bSkgKyBSLFxuICAgICAgICAgICAgTWF0aC5yb3VuZCgoKGFkZGl0aW9uYWxDb2xvciA+PiA4ICYgMHgwMEZGKSAtIEcpICogbHVtKSArIEcsXG4gICAgICAgICAgICBNYXRoLnJvdW5kKCgoYWRkaXRpb25hbENvbG9yICYgMHgwMDAwRkYpIC0gQikgKiBsdW0pICsgQlxuICAgICAgICApO1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbG9yKCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNoYW5nZSBjb2xvciB3aXRoIGNvbG9yIHBhcmFtZXRlcnNcbiAgICAgKiBAcGFyYW0gY29sb3JEYXRhIGFkZGl0aW9ubmFsIHBhcmFtZXRlcnNcbiAgICAgKiBAcmV0dXJucyBDb2xvcmF0aW9uXG4gICAgICovXG4gICAgYWRkQ29sb3IoY29sb3JEYXRhOiBDb2xvckRhdGEpIHtcbiAgICAgICAgaWYgKGNvbG9yRGF0YS5sdW1pbm9zaXR5KSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZUx1bWlub3NpdHkoY29sb3JEYXRhLmx1bWlub3NpdHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbG9yRGF0YS5tYXNrQ29sb3IpIHtcbiAgICAgICAgICAgIHRoaXMubWFza0NvbG9yKGNvbG9yRGF0YS5tYXNrQ29sb3IsIHRoaXMubWlubWF4KGNvbG9yRGF0YS5tYXNrT3BhY2l0eSB8fCAwLCAwLCAxKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29sb3JEYXRhLnIgfHwgY29sb3JEYXRhLmcgfHwgY29sb3JEYXRhLmIpIHtcbiAgICAgICAgICAgIGlmIChjb2xvckRhdGEucikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMucmdiLnIsIGNvbG9yRGF0YS5yLCB0aGlzLnJnYi5yICsgY29sb3JEYXRhLnIpO1xuICAgICAgICAgICAgICAgIHRoaXMucmdiLnIgPSB0aGlzLm1pbm1heCh0aGlzLnJnYi5yICsgKCtjb2xvckRhdGEuciksIDAsIDI1NSk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5yZ2Iucik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29sb3JEYXRhLmcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJnYi5nID0gdGhpcy5taW5tYXgodGhpcy5yZ2IuZyArICgrY29sb3JEYXRhLmcpLCAwLCAyNTUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvbG9yRGF0YS5iKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZ2IuciA9IHRoaXMubWlubWF4KHRoaXMucmdiLmIgKyAoK2NvbG9yRGF0YS5iKSwgMCwgMjU1KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaW50Q29sb3IgPSB0aGlzLnJnYlRvSW50KHRoaXMucmdiLnIsIHRoaXMucmdiLmcsIHRoaXMucmdiLmIpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVDb2xvcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbG9yRGF0YS5oIHx8IGNvbG9yRGF0YS5zIHx8IGNvbG9yRGF0YS52KSB7XG4gICAgICAgICAgICBpZiAoY29sb3JEYXRhLmgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhzdi5oID0gKHRoaXMuaHN2LmggKyAoK2NvbG9yRGF0YS5oKSArIDM2MCkgJSAzNjA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29sb3JEYXRhLnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhzdi5zID0gdGhpcy5taW5tYXgodGhpcy5oc3YucyArICgrY29sb3JEYXRhLnMpLCAwLCAxMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvbG9yRGF0YS52KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oc3YudiA9IHRoaXMubWlubWF4KHRoaXMuaHN2LnYgKyAoK2NvbG9yRGF0YS52KSwgMCwgMTAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaW50Q29sb3IgPSB0aGlzLmhzdlRvSW50KHRoaXMuaHN2LmgsIHRoaXMuaHN2LnMsIHRoaXMuaHN2LnYpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVDb2xvcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUkdCIGluZm9ybWF0aW9uc1xuICAgICAqIEByZXR1cm5zIFJHQlxuICAgICAqL1xuICAgIGdldFJHQigpOiBSR0Ige1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTxSR0I+KCgpID0+IE9iamVjdC5hc3NpZ24oe30sIHRoaXMucmdiKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSFNWIGluZm9ybWF0aW9uc1xuICAgICAqIEByZXR1cm5zIEhTVlxuICAgICAqL1xuICAgIGdldEhTVigpOiBIU1Yge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTxIU1Y+KCgpID0+IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuaHN2KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY29sb3IgaW4gI0hFWCBmb3JtYXRcbiAgICAgKiBAcmV0dXJucyBzdHJpbmcgb2YgI0hFWFxuICAgICAqL1xuICAgIHRvSEVYKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlPHN0cmluZz4oKCkgPT4gJyMnICsgKDB4MTAwMDAwMCArIHRoaXMuaW50Q29sb3IpLnRvU3RyaW5nKDE2KS5zbGljZSgxKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY29sb3IgaW4gSFZMKCkgZm9ybWF0XG4gICAgICogQHJldHVybnMgc3RyaW5nIG9mIEhWTChILCBTJSwgViUpXG4gICAgICovXG4gICAgdG9IU0woKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU8c3RyaW5nPigoKSA9PiBgaHNsKCR7dGhpcy5oc3YuaH0sICR7dGhpcy5oc3Yuc30lLCAke3RoaXMuaHN2LnZ9JSlgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjb2xvciBpbiBSR0IoKSBmb3JtYXRcbiAgICAgKiBAcmV0dXJucyBzdHJpbmcgb2YgUkdCKFIsIEcsIEIpXG4gICAgICovXG4gICAgdG9SR0IoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU8c3RyaW5nPigoKSA9PiBgcmdiKCR7dGhpcy5yZ2Iucn0sICR7dGhpcy5yZ2IuZ30sICR7dGhpcy5yZ2IuYn0pYCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogdXBkYXRlIGNvbG9ycyBkYXRhIDogUkdCIGFuZCBIU0xcbiAgICAgKi9cbiAgICBwcml2YXRlIHVwZGF0ZUNvbG9yKCkge1xuXG4gICAgICAgIC8vIHVwZGF0ZSBSR0JcbiAgICAgICAgdGhpcy5yZ2IuciA9IHRoaXMuaW50Q29sb3IgPj4gMTY7XG4gICAgICAgIHRoaXMucmdiLmcgPSB0aGlzLmludENvbG9yID4+IDggJiAweDAwRkY7XG4gICAgICAgIHRoaXMucmdiLmIgPSB0aGlzLmludENvbG9yICYgMHgwMDAwRkY7XG5cbiAgICAgICAgLy8gdXBkYXRlIEhTTFxuICAgICAgICB0aGlzLmhzdiA9IHRoaXMucmdiMmhzdih0aGlzLnJnYi5yLCB0aGlzLnJnYi5nLCB0aGlzLnJnYi5iKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjaGFuZ2UgY29sb3JcbiAgICAgKiBAcGFyYW0gY29sb3IgcGFyc2UgY29sb3IgOiBuYW1lLCAjSEVYQSwgcmdiYSgpXG4gICAgICogQHJldHVybnMgaW50IGNvbG9yXG4gICAgICovXG4gICAgcHJpdmF0ZSBwYXJzZUNvbG9yKGNvbG9yOiBzdHJpbmcpIHtcblxuICAgICAgICAvLyBzaSBuYW1lZCBjb2xvclxuICAgICAgICBpZiAoQ29sb3JhdGlvbi5jb2xvcnNOYW1lW2NvbG9yXSkge1xuICAgICAgICAgICAgY29sb3IgPSBDb2xvcmF0aW9uLmNvbG9yc05hbWVbY29sb3JdO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdmFsaWRhdGUgaGV4YSBzdHJpbmcgI1JHQiwgI1JHQkEsICNSUkdHQkIsICNSUkdHQkJBQSAoaWdub3JlIGFscGhhKVxuICAgICAgICBjb25zdCBtYXRjaEhleCA9IFN0cmluZyhjb2xvcikubWF0Y2gocGF0dGVybi5oZXhhKTtcbiAgICAgICAgbGV0IGludENvbG9yO1xuICAgICAgICBpZiAobWF0Y2hIZXgpIHtcbiAgICAgICAgICAgIGNvbnN0IGhleGEgPSBtYXRjaEhleFs0XVxuICAgICAgICAgICAgICAgID8gbWF0Y2hIZXhbMl0gKyBtYXRjaEhleFs0XVxuICAgICAgICAgICAgICAgIDogbWF0Y2hIZXhbMl1bMF0gKyBtYXRjaEhleFsyXVswXSArIG1hdGNoSGV4WzJdWzFdICsgbWF0Y2hIZXhbMl1bMV0gKyBtYXRjaEhleFsyXVsyXSArIG1hdGNoSGV4WzJdWzJdO1xuXG4gICAgICAgICAgICBpbnRDb2xvciA9IHBhcnNlSW50KGhleGEsIDE2KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbnRDb2xvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyB2YWxpZGF0ZSByZ2IoKSAvIHJnYmEoKVxuICAgICAgICAgICAgY29uc3QgbWF0Y2hSZ2IgPSBTdHJpbmcoY29sb3IpLm1hdGNoKHBhdHRlcm4ucmdiYSk7XG4gICAgICAgICAgICBpZiAobWF0Y2hSZ2IpIHtcbiAgICAgICAgICAgICAgICBpbnRDb2xvciA9IHRoaXMucmdiVG9JbnQocGFyc2VJbnQobWF0Y2hSZ2JbMV0sIDEwKSwgcGFyc2VJbnQobWF0Y2hSZ2JbNF0sIDEwKSwgcGFyc2VJbnQobWF0Y2hSZ2JbN10sIDEwKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW50Q29sb3IgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gdmFsaWRhdGUgaHN2KCkgLyBoc3ZhKClcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoSHN2ID0gU3RyaW5nKGNvbG9yKS5tYXRjaChwYXR0ZXJuLmhzdmEpO1xuICAgICAgICAgICAgaWYgKG1hdGNoSHN2KSB7XG4gICAgICAgICAgICAgICAgaW50Q29sb3IgPSB0aGlzLmhzdlRvSW50KHBhcnNlSW50KG1hdGNoSHN2WzFdLCAxMCksIHBhcnNlSW50KG1hdGNoSHN2WzRdLCAxMCksIHBhcnNlSW50KG1hdGNoSHN2WzddLCAxMCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGludENvbG9yO1xuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY29udmVydCBIU1YvSFNMIHRvIGludCBSR0JcbiAgICAgKiBAcGFyYW0gaHVlIEh1ZSBbMCwgMzYwXVxuICAgICAqIEBwYXJhbSBzYXR1cmF0aW9uIFNhdHVyYXRpb24gWzAsIDEwMF1cbiAgICAgKiBAcGFyYW0gdmFsdWUgVmFsdWUgWzAsIDEwMF1cbiAgICAgKiBAcmV0dXJucyBpbnQgUkdCXG4gICAgICogQHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMzUzMjExL2hzbC10by1yZ2ItY29sb3ItY29udmVyc2lvblxuICAgICAqL1xuICAgIHByaXZhdGUgaHN2VG9JbnQoaHVlOiBudW1iZXIsIHNhdHVyYXRpb246IG51bWJlciwgdmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHNhdHVyYXRpb24gPSBNYXRoLm1heCgwLCBzYXR1cmF0aW9uKTtcblxuICAgICAgICBjb25zdCBzID0gc2F0dXJhdGlvbiAvIDEwMDtcbiAgICAgICAgY29uc3QgdiA9IHZhbHVlIC8gMTAwO1xuICAgICAgICBjb25zdCBoID0gaHVlIC8gMzYwO1xuXG4gICAgICAgIGlmIChzYXR1cmF0aW9uID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZ2JUb0ludCh2ICogMjU2LCB2ICogMjU2LCB2ICogMjU2KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHEgPSB2IDwgMC41ID8gdiAqICgxICsgcykgOiB2ICsgcyAtIHYgKiBzO1xuICAgICAgICBjb25zdCBwID0gMiAqIHYgLSBxO1xuICAgICAgICBjb25zdCByID0gdGhpcy5odWUycmdiKHAsIHEsIGggKyAxIC8gMyk7XG4gICAgICAgIGNvbnN0IGcgPSB0aGlzLmh1ZTJyZ2IocCwgcSwgaCk7XG4gICAgICAgIGNvbnN0IGIgPSB0aGlzLmh1ZTJyZ2IocCwgcSwgaCAtIDEgLyAzKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5yZ2JUb0ludChNYXRoLnJvdW5kKHIgKiAyNTUpLCBNYXRoLnJvdW5kKGcgKiAyNTUpLCBNYXRoLnJvdW5kKGIgKiAyNTUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBodWUgY29sb3IgY2FsY3VsYXRpb25cbiAgICAgKiBAcGFyYW0gcCBudW1iZXJcbiAgICAgKiBAcGFyYW0gcSBudW1iZXJcbiAgICAgKiBAcGFyYW0gdCBudW1iZXJcbiAgICAgKiBAcmV0dXJucyBpbnQgY29sb3IgWzAsIDI1NV1cbiAgICAgKi9cbiAgICBwcml2YXRlIGh1ZTJyZ2IocDogbnVtYmVyLCBxOiBudW1iZXIsIHQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIGlmICh0IDwgMCkgeyB0ICs9IDE7IH0gZWxzZSBpZiAodCA+IDEpIHsgdCAtPSAxOyB9XG4gICAgICAgIGlmICh0IDwgMSAvIDYpIHsgcmV0dXJuIHAgKyAocSAtIHApICogNiAqIHQ7IH1cbiAgICAgICAgaWYgKHQgPCAxIC8gMikgeyByZXR1cm4gcTsgfVxuICAgICAgICBpZiAodCA8IDIgLyAzKSB7IHJldHVybiBwICsgKHEgLSBwKSAqICgyIC8gMyAtIHQpICogNjsgfVxuICAgICAgICByZXR1cm4gcDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0IFJHQiB0byBIU1ZcbiAgICAgKiBAcGFyYW0gciBbMCwgMjU1XVxuICAgICAqIEBwYXJhbSBnIFswLCAyNTVdXG4gICAgICogQHBhcmFtIGIgWzAsIDI1NV1cbiAgICAgKiBAcmV0dXJucyBIU1YgZGF0YVxuICAgICAqIEBzZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzkxMTg1MjgvcmdiLXRvLWhzbC1jb252ZXJzaW9uXG4gICAgICogQHNlZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IU0xfYW5kX0hTViNGb3JtYWxfZGVyaXZhdGlvblxuICAgICAqL1xuICAgIHByaXZhdGUgcmdiMmhzdihyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyKTogSFNWIHtcblxuICAgICAgICAvLyBjb252ZXJ0IHIsZyxiIFswLDI1NV0gcmFuZ2UgdG8gWzAsMV1cbiAgICAgICAgciA9IHIgLyAyNTU7XG4gICAgICAgIGcgPSBnIC8gMjU1O1xuICAgICAgICBiID0gYiAvIDI1NTtcblxuICAgICAgICAvLyBnZXQgdGhlIG1pbiBhbmQgbWF4IG9mIHIsZyxiXG4gICAgICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KHIsIGcsIGIpO1xuICAgICAgICBjb25zdCBtaW4gPSBNYXRoLm1pbihyLCBnLCBiKTtcblxuICAgICAgICAvLyBsaWdodG5lc3MgaXMgdGhlIGF2ZXJhZ2Ugb2YgdGhlIGxhcmdlc3QgYW5kIHNtYWxsZXN0IGNvbG9yIGNvbXBvbmVudHNcbiAgICAgICAgY29uc3QgdmFsID0gKG1heCArIG1pbikgLyAyO1xuICAgICAgICBsZXQgaHVlOiBudW1iZXI7XG4gICAgICAgIGxldCBzYXQ6IG51bWJlcjtcblxuICAgICAgICBpZiAobWF4ID09PSBtaW4pIHsgLy8gbm8gc2F0dXJhdGlvblxuICAgICAgICAgICAgaHVlID0gMDtcbiAgICAgICAgICAgIHNhdCA9IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBjID0gbWF4IC0gbWluOyAvLyBjaHJvbWFcbiAgICAgICAgICAgIC8vIHNhdHVyYXRpb24gaXMgc2ltcGx5IHRoZSBjaHJvbWEgc2NhbGVkIHRvIGZpbGxcbiAgICAgICAgICAgIC8vIHRoZSBpbnRlcnZhbCBbMCwgMV0gZm9yIGV2ZXJ5IGNvbWJpbmF0aW9uIG9mIGh1ZSBhbmQgbGlnaHRuZXNzXG4gICAgICAgICAgICBzYXQgPSBjIC8gKDEgLSBNYXRoLmFicygyICogdmFsIC0gMSkpO1xuICAgICAgICAgICAgc3dpdGNoIChtYXgpIHtcbiAgICAgICAgICAgICAgICBjYXNlIHI6XG4gICAgICAgICAgICAgICAgICAgIGh1ZSA9IChnIC0gYikgLyBjICsgKGcgPCBiID8gNiA6IDApO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIGc6XG4gICAgICAgICAgICAgICAgICAgIGh1ZSA9IChiIC0gcikgLyBjICsgMjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBiOlxuICAgICAgICAgICAgICAgICAgICBodWUgPSAociAtIGcpIC8gYyArIDQ7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGg6IE1hdGgucm91bmQoaHVlICogNjApLCAgLy8gwrBcbiAgICAgICAgICAgIHM6IE1hdGgucm91bmQoc2F0ICogMTAwKSwgLy8gJVxuICAgICAgICAgICAgdjogTWF0aC5yb3VuZCh2YWwgKiAxMDApICAvLyAlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY29udmVydCBSR0IgZGF0YSB0byBpbnQgdmFsdWVcbiAgICAgKiBAcGFyYW0gciByZWQgWzAsIDI1NV1cbiAgICAgKiBAcGFyYW0gZyBncmVlbiBbMCwgMjU1XVxuICAgICAqIEBwYXJhbSBiIGJsdWUgWzAsIDI1NV1cbiAgICAgKiBAcmV0dXJucyBpbnQgdmFsdWVcbiAgICAgKi9cbiAgICBwcml2YXRlIHJnYlRvSW50KHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gciAqIDB4MTAwMDAgKyBnICogMHgxMDAgKyBiO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGJvdW5kIGEgdmFsdWUgYmV0d2VlbiB0d28gdmFsdWVzXG4gICAgICogQHBhcmFtIHZhbHVlIHZhbHVlXG4gICAgICogQHBhcmFtIG1pbiBtaW4gdmFsdWVcbiAgICAgKiBAcGFyYW0gbWF4IG1heCB2YWx1ZVxuICAgICAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgcmVwbGFjZSBhbiBpbnZhbGlkIHZ2YWx1ZVxuICAgICAqIEByZXR1cm5zIHZhbHVlIGJldHdlZW4gbWluIGFuZCBtYXhcbiAgICAgKi9cbiAgICBwcml2YXRlIG1pbm1heCh2YWx1ZTogbnVtYmVyLCBtaW46IG51bWJlciwgbWF4OiBudW1iZXIsIGRlZmF1bHRWYWx1ZSA9IDApIHtcbiAgICAgICAgcmV0dXJuIE1hdGgubWluKE1hdGgubWF4KHZhbHVlIHx8IGRlZmF1bHRWYWx1ZSwgbWluKSwgbWF4KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB0ZXN0IGlzIGludENvbG9yIGlzIHZhbGlkIGZvciByZXR1cm4gYSB2bGF1ZVxuICAgICAqIEBwYXJhbSB2YWx1ZSBjYWxsYmFjayBvZiB2YWx1ZVxuICAgICAqIEByZXR1cm5zIHZhbHVlIG9yIG51bGxcbiAgICAgKi9cbiAgICBwcml2YXRlIHZhbHVlPEw+KHZhbHVlOiAoKSA9PiBMKTogTCB7XG4gICAgICAgIHJldHVybiAhaXNOYU4odGhpcy5pbnRDb2xvcikgPyB2YWx1ZSgpIDogbnVsbDtcbiAgICB9XG5cbn1cbiJdfQ== | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbG9yYXRpb24tbGliLyIsInNvdXJjZXMiOlsibGliL2NvbG9yYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O01BR00sT0FBTyxHQUFHO0lBQ1osSUFBSSxFQUFFLDZEQUE2RDtJQUNuRSxJQUFJLEVBQUUsaUhBQWlIO0lBQ3ZILElBQUksRUFBRSxxSEFBcUg7Q0FDOUg7Ozs7QUFFRCx5QkFJQzs7Ozs7O0lBSGtDLGdCQUFVOzs7OztJQUNSLGdCQUFVOzs7OztJQUNWLGdCQUFVOzs7OztBQUUvQyx5QkFJQzs7Ozs7O0lBSGtDLGdCQUFVOzs7OztJQUNILGdCQUFVOzs7OztJQUNKLGdCQUFVOzs7OztBQUUxRCwrQkFhQzs7Ozs7O0lBWHFDLHNCQUFXOzs7OztJQUNULHNCQUFXOzs7OztJQUNYLHNCQUFXOzs7OztJQUVuQixzQkFBVzs7Ozs7SUFDSixzQkFBVzs7Ozs7SUFDTCxzQkFBVzs7Ozs7SUFFckIsK0JBQW9COzs7OztJQUNqQyw4QkFBbUI7Ozs7O0lBQ0wsZ0NBQXFCOztBQUd6RCxNQUFNLE9BQU8sVUFBVTs7OztJQWtEbkIsWUFBbUIsS0FBYTtRQUFiLFVBQUssR0FBTCxLQUFLLENBQVE7UUFIeEIsUUFBRyxHQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNoQyxRQUFHLEdBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBR3BDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNqQixDQUFDOzs7OztJQUtELEtBQUs7UUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FB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LEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDbEQsQ0FBQzs7Ozs7QUE1V00scUJBQVUsR0FBUTs7SUFFckIsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxTQUFTO0lBQ3pHLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUztJQUM3RyxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUzs7SUFFbEUsTUFBTSxFQUFFLFNBQVM7O0lBRWpCLFNBQVMsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVM7SUFDeEcsTUFBTSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUztJQUMzRyxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxTQUFTO0lBQzlHLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVM7SUFDaEcsUUFBUSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUs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LEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTO0lBQzFHLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVM7SUFDckcsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUztJQUNyRyxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTO0lBQ25HLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVM7O0lBRXhHLGFBQWEsRUFBRSxTQUFTO0NBQzNCLENBQUM7Ozs7OztJQXZDRixzQkF1Q0U7Ozs7O0lBRUYsOEJBQXlCOzs7OztJQUN6Qix5QkFBd0M7Ozs7O0lBQ3hDLHlCQUF3Qzs7SUFFNUIsMkJBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyB0c2xpbnQ6ZGlzYWJsZTpuby1iaXR3aXNlXG5cbmNvbnN0IHBhdHRlcm4gPSB7XG4gICAgaGV4YTogL15eIz8oKFtcXGRhLWZdezN9KSgoW1xcZGEtZl17M30pKFtcXGRhLWZdezJ9KT98W1xcZGEtZl17MX0pPykkL2ksXG4gICAgcmdiYTogL15yZ2JhP1xcKChbXFxkXSooXFwuW1xcZF0rKT8pKCw/XFxzKnxcXHMrKShbXFxkXSooXFwuW1xcZF0rKT8pKCw/XFxzKnxcXHMrKShbXFxkXSooXFwuW1xcZF0rKT8pKCgsXFxzKikoW1xcZF0qKFxcLltcXGRdKyk/KSk/XFwpJC9pLFxuICAgIGhzdmE6IC9eaHNsYT9cXCgoW1xcZF0qKFxcLltcXGRdKyk/KSgsP1xccyp8XFxzKykoW1xcZF0qKFxcLltcXGRdKyk/KVxcJSgsP1xccyp8XFxzKykoW1xcZF0qKFxcLltcXGRdKyk/KVxcJSgoLFxccyopKFtcXGRdKihcXC5bXFxkXSspPykpP1xcKSQvaVxufTtcblxuZXhwb3J0IGludGVyZmFjZSBSR0Ige1xuICAgIC8qKiBSZWQgY29sb3IgdmFsdWUgWzAsMjU1XSAqLyByOiBudW1iZXI7XG4gICAgLyoqIEdyZWVuIGNvbG9yIHZhbHVlIFswLDI1NV0gKi8gZzogbnVtYmVyO1xuICAgIC8qKiBCbHVlIGNvbG9yIHZhbHVlIFswLDI1NV0gKi8gIGI6IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSFNWIHtcbiAgICAvKiogSHVlIGNvbG9yIHZhbHVlIFswLDM2MF0gKi8gaDogbnVtYmVyO1xuICAgIC8qKiBTYWx1cmF0aW9uIGNvbG9yIHZhbHVlIFswLDEwMF0gKi8gczogbnVtYmVyO1xuICAgIC8qKiBWYWx1ZS9saWdodG5lc3MgY29sb3IgdmFsdWUgWzAsMTAwXSAqLyAgdjogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBDb2xvckRhdGEge1xuICAgIC8vIFJHQlxuICAgIC8qKiBSZWQgY29sb3IgdmFsdWUgWy0yNTYsMjU1XSAqLyByPzogbnVtYmVyO1xuICAgIC8qKiBHcmVlbiBjb2xvciB2YWx1ZSBbLTI1NiwyNTVdICovIGc/OiBudW1iZXI7XG4gICAgLyoqIEJsdWUgY29sb3IgdmFsdWUgWy0yNTYsMjU1XSAqLyAgYj86IG51bWJlcjtcbiAgICAvLyBIU1YvSFNMXG4gICAgLyoqIEh1ZSB2YWx1ZSBbLTM2MCwzNjBdICovIGg/OiBudW1iZXI7XG4gICAgLyoqIFNhbHVyYXRpb24gdmFsdWUgWy0xMDAsMTAwXSAqLyBzPzogbnVtYmVyO1xuICAgIC8qKiBWYWx1ZS9saWdodG5lc3MgdmFsdWUgWy0xMDAsMTAwXSAqLyAgdj86IG51bWJlcjtcbiAgICAvLyBPdGhlclxuICAgIC8qKiBsdW1pbm9zaXR5IHZhbHVlIFstMSwxXSAqLyBsdW1pbm9zaXR5PzogbnVtYmVyO1xuICAgIC8qKiBjb2xvciBtYXNrICovIG1hc2tDb2xvcj86IHN0cmluZztcbiAgICAvKiogY29sb3IgbWFzayBvcGFjaXR5IFswLDFdICovIG1hc2tPcGFjaXR5PzogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgQ29sb3JhdGlvbiB7XG5cbiAgICAvKipcbiAgICAgKiBDU1MgY29sb3IgbGlzdFxuICAgICAqL1xuICAgIHN0YXRpYyBjb2xvcnNOYW1lOiBhbnkgPSB7XG4gICAgICAgIC8vIENTUyAxXG4gICAgICAgIGJsYWNrOiAnIzAwMDAwMCcsIHNpbHZlcjogJyNjMGMwYzAnLCBncmF5OiAnIzgwODA4MCcsIHdoaXRlOiAnI2ZmZmZmZicsIG1hcm9vbjogJyM4MDAwMDAnLCByZWQ6ICcjZmYwMDAwJyxcbiAgICAgICAgcHVycGxlOiAnIzgwMDA4MCcsIGZ1Y2hzaWE6ICcjZmYwMGZmJywgZ3JlZW46ICcjMDA4MDAwJywgbGltZTogJyMwMGZmMDAnLCBvbGl2ZTogJyM4MDgwMDAnLCB5ZWxsb3c6ICcjZmZmZjAwJyxcbiAgICAgICAgbmF2eTogJyMwMDAwODAnLCBibHVlOiAnIzAwMDBmZicsIHRlYWw6ICcjMDA4MDgwJywgYXF1YTogJyMwMGZmZmYnLFxuICAgICAgICAvLyBDU1MgMiAoUmV2aXNpb24gMSlcbiAgICAgICAgb3JhbmdlOiAnI2ZmYTUwMCcsXG4gICAgICAgIC8vIENTUyAzXG4gICAgICAgIGFsaWNlYmx1ZTogJyNmMGY4ZmYnLCBhbnRpcXVld2hpdGU6ICcjZmFlYmQ3JywgYXF1YW1hcmluZTogJyM3ZmZmZDQnLCBhenVyZTogJyNmMGZmZmYnLCBiZWlnZTogJyNmNWY1ZGMnLFxuICAgICAgICBiaXNxdWU6ICcjZmZlNGM0JywgYmxhbmNoZWRhbG1vbmQ6ICcjZmZlYmNkJywgYmx1ZXZpb2xldDogJyM4YTJiZTInLCBicm93bjogJyNhNTJhMmEnLCBidXJseXdvb2Q6ICcjZGViODg3JyxcbiAgICAgICAgY2FkZXRibHVlOiAnIzVmOWVhMCcsIGNoYXJ0cmV1c2U6ICcjN2ZmZjAwJywgY2hvY29sYXRlOiAnI2QyNjkxZScsIGNvcmFsOiAnI2ZmN2Y1MCcsIGNvcm5mbG93ZXJibHVlOiAnIzY0OTVlZCcsXG4gICAgICAgIGNvcm5zaWxrOiAnI2ZmZjhkYycsIGNyaW1zb246ICcjZGMxNDNjJywgY3lhbjogJyMwMGZmZmYnLCBkZWFxdWE6ICcjMDBmZmZmJywgZGFya2JsdWU6ICcjMDAwMDhiJyxcbiAgICAgICAgZGFya2N5YW46ICcjMDA4YjhiJywgZGFya2dvbGRlbnJvZDogJyNiODg2MGInLCBkYXJrZ3JheTogJyNhOWE5YTknLCBkYXJrZ3JlZW46ICcjMDA2NDAwJywgZGFya2dyZXk6ICcjYTlhOWE5JyxcbiAgICAgICAgZGFya2toYWtpOiAnI2JkYjc2YicsIGRhcmttYWdlbnRhOiAnIzhiMDA4YicsIGRhcmtvbGl2ZWdyZWVuOiAnIzU1NmIyZicsIGRhcmtvcmFuZ2U6ICcjZmY4YzAwJyxcbiAgICAgICAgZGFya29yY2hpZDogJyM5OTMyY2MnLCBkYXJrcmVkOiAnIzhiMDAwMCcsIGRhcmtzYWxtb246ICcjZTk5NjdhJywgZGFya3NlYWdyZWVuOiAnIzhmYmM4ZicsXG4gICAgICAgIGRhcmtzbGF0ZWJsdWU6ICcjNDgzZDhiJywgZGFya3NsYXRlZ3JheTogJyMyZjRmNGYnLCBkYXJrc2xhdGVncmV5OiAnIzJmNGY0ZicsIGRhcmt0dXJxdW9pc2U6ICcjMDBjZWQxJyxcbiAgICAgICAgZGFya3Zpb2xldDogJyM5NDAwZDMnLCBkZWVwcGluazogJyNmZjE0OTMnLCBkZWVwc2t5Ymx1ZTogJyMwMGJmZmYnLCBkaW1ncmF5OiAnIzY5Njk2OScsIGRpbWdyZXk6ICcjNjk2OTY5JyxcbiAgICAgICAgZG9kZ2VyYmx1ZTogJyMxZTkwZmYnLCBmaXJlYnJpY2s6ICcjYjIyMjIyJywgZmxvcmFsd2hpdGU6ICcjZmZmYWYwJywgZm9yZXN0Z3JlZW46ICcjMjI4YjIyJyxcbiAgICAgICAgZ2FpbnNib3JvOiAnI2RjZGNkYycsIGdob3N0d2hpdGU6ICcjZjhmOGZmJywgZ29sZDogJyNmZmQ3MDAnLCBnb2xkZW5yb2Q6ICcjZGFhNTIwJywgZ3JlZW55ZWxsb3c6ICcjYWRmZjJmJyxcbiAgICAgICAgZ3JleTogJyM4MDgwODAnLCBob25leWRldzogJyNmMGZmZjAnLCBob3RwaW5rOiAnI2ZmNjliNCcsIGluZGlhbnJlZDogJyNjZDVjNWMnLCBpbmRpZ286ICcjNGIwMDgyJyxcbiAgICAgICAgaXZvcnk6ICcjZmZmZmYwJywga2hha2k6ICcjZjBlNjhjJywgbGF2ZW5kZXI6ICcjZTZlNmZhJywgbGF2ZW5kZXJibHVzaDogJyNmZmYwZjUnLCBsYXduZ3JlZW46ICcjN2NmYzAwJyxcbiAgICAgICAgbGVtb25jaGlmZm9uOiAnI2ZmZmFjZCcsIGxpZ2h0Ymx1ZTogJyNhZGQ4ZTYnLCBsaWdodGNvcmFsOiAnI2YwODA4MCcsIGxpZ2h0Y3lhbjogJyNlMGZmZmYnLFxuICAgICAgICBsaWdodGdvbGRlbnJvZHllbGxvdzogJyNmYWZhZDInLCBsaWdodGdyYXk6ICcjZDNkM2QzJywgbGlnaHRncmVlbjogJyM5MGVlOTAnLCBsaWdodGdyZXk6ICcjZDNkM2QzJyxcbiAgICAgICAgbGlnaHRwaW5rOiAnI2ZmYjZjMScsIGxpZ2h0c2FsbW9uOiAnI2ZmYTA3YScsIGxpZ2h0c2VhZ3JlZW46ICcjMjBiMmFhJywgbGlnaHRza3libHVlOiAnIzg3Y2VmYScsXG4gICAgICAgIGxpZ2h0c2xhdGVncmF5OiAnIzc3ODg5OScsIGxpZ2h0c2xhdGVncmV5OiAnIzc3ODg5OScsIGxpZ2h0c3RlZWxibHVlOiAnI2IwYzRkZScsIGxpZ2h0eWVsbG93OiAnI2ZmZmZlMCcsXG4gICAgICAgIGxpbWVncmVlbjogJyMzMmNkMzInLCBsaW5lbjogJyNmYWYwZTYnLCBtYWdlbnRhOiAnI2ZmMDBmZicsIGRlZnVjaHNpYTogJyNmZjAwZmYnLCBtZWRpdW1hcXVhbWFyaW5lOiAnIzY2Y2RhYScsXG4gICAgICAgIG1lZGl1bWJsdWU6ICcjMDAwMGNkJywgbWVkaXVtb3JjaGlkOiAnI2JhNTVkMycsIG1lZGl1bXB1cnBsZTogJyM5MzcwZGInLCBtZWRpdW1zZWFncmVlbjogJyMzY2IzNzEnLFxuICAgICAgICBtZWRpdW1zbGF0ZWJsdWU6ICcjN2I2OGVlJywgbWVkaXVtc3ByaW5nZ3JlZW46ICcjMDBmYTlhJywgbWVkaXVtdHVycXVvaXNlOiAnIzQ4ZDFjYycsXG4gICAgICAgIG1lZGl1bXZpb2xldHJlZDogJyNjNzE1ODUnLCBtaWRuaWdodGJsdWU6ICcjMTkxOTcwJywgbWludGNyZWFtOiAnI2Y1ZmZmYScsIG1pc3R5cm9zZTogJyNmZmU0ZTEnLFxuICAgICAgICBtb2NjYXNpbjogJyNmZmU0YjUnLCBuYXZham93aGl0ZTogJyNmZmRlYWQnLCBvbGRsYWNlOiAnI2ZkZjVlNicsIG9saXZlZHJhYjogJyM2YjhlMjMnLCBvcmFuZ2VyZWQ6ICcjZmY0NTAwJyxcbiAgICAgICAgb3JjaGlkOiAnI2RhNzBkNicsIHBhbGVnb2xkZW5yb2Q6ICcjZWVlOGFhJywgcGFsZWdyZWVuOiAnIzk4ZmI5OCcsIHBhbGV0dXJxdW9pc2U6ICcjYWZlZWVlJyxcbiAgICAgICAgcGFsZXZpb2xldHJlZDogJyNkYjcwOTMnLCBwYXBheWF3aGlwOiAnI2ZmZWZkNScsIHBlYWNocHVmZjogJyNmZmRhYjknLCBwZXJ1OiAnI2NkODUzZicsIHBpbms6ICcjZmZjMGNiJyxcbiAgICAgICAgcGx1bTogJyNkZGEwZGQnLCBwb3dkZXJibHVlOiAnI2IwZTBlNicsIHJvc3licm93bjogJyNiYzhmOGYnLCByb3lhbGJsdWU6ICcjNDE2OWUxJywgc2FkZGxlYnJvd246ICcjOGI0NTEzJyxcbiAgICAgICAgc2FsbW9uOiAnI2ZhODA3MicsIHNhbmR5YnJvd246ICcjZjRhNDYwJywgc2VhZ3JlZW46ICcjMmU4YjU3Jywgc2Vhc2hlbGw6ICcjZmZmNWVlJywgc2llbm5hOiAnI2EwNTIyZCcsXG4gICAgICAgIHNreWJsdWU6ICcjODdjZWViJywgc2xhdGVibHVlOiAnIzZhNWFjZCcsIHNsYXRlZ3JheTogJyM3MDgwOTAnLCBzbGF0ZWdyZXk6ICcjNzA4MDkwJywgc25vdzogJyNmZmZhZmEnLFxuICAgICAgICBzcHJpbmdncmVlbjogJyMwMGZmN2YnLCBzdGVlbGJsdWU6ICcjNDY4MmI0JywgdGFuOiAnI2QyYjQ4YycsIHRoaXN0bGU6ICcjZDhiZmQ4JywgdG9tYXRvOiAnI2ZmNjM0NycsXG4gICAgICAgIHR1cnF1b2lzZTogJyM0MGUwZDAnLCB2aW9sZXQ6ICcjZWU4MmVlJywgd2hlYXQ6ICcjZjVkZWIzJywgd2hpdGVzbW9rZTogJyNmNWY1ZjUnLCB5ZWxsb3dncmVlbjogJyM5YWNkMzInLFxuICAgICAgICAvLyBDU1MgNFxuICAgICAgICByZWJlY2NhcHVycGxlOiAnIzY2MzM5OSdcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBpbnRDb2xvcjogbnVtYmVyO1xuICAgIHByaXZhdGUgcmdiOiBSR0IgPSB7IHI6IDAsIGc6IDAsIGI6IDAgfTtcbiAgICBwcml2YXRlIGhzdjogSFNWID0geyBoOiAwLCBzOiAwLCB2OiAwIH07XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgY29sb3I6IHN0cmluZykge1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmVpbml0IHRvIGJhc2UgY29sb3JcbiAgICAgKi9cbiAgICByZXNldCgpIHtcbiAgICAgICAgdGhpcy5pbnRDb2xvciA9IHRoaXMucGFyc2VDb2xvcih0aGlzLmNvbG9yKTtcbiAgICAgICAgdGhpcy51cGRhdGVDb2xvcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNoYW5nZSB0aGUgbHVtaW5vc2l0eSBvZiBhIGNvbG9yXG4gICAgICogQHBhcmFtIGx1bSB2YWx1ZSBiZXR3ZWVuIC0xIGFuZCAxXG4gICAgICogQHJldHVybnMgQ29sb3JhdGlvblxuICAgICAqL1xuICAgIGNoYW5nZUx1bWlub3NpdHkobHVtOiBudW1iZXIpOiBDb2xvcmF0aW9uIHtcbiAgICAgICAgbHVtID0gdGhpcy5taW5tYXgobHVtLCAtMSwgMSk7XG4gICAgICAgIHRoaXMubWFza0NvbG9yKGx1bSA8IDAgPyAnIzAwMCcgOiAnI0ZGRicsIE1hdGguYWJzKGx1bSkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBhZGQgY29sb3Igd2l0aCBhIG1hcmtcbiAgICAgKiBAcGFyYW0gY29sb3IgYWRkaXRpb25hbCBjb2xvclxuICAgICAqIEBwYXJhbSBvcGFjaXR5IHZhbHVlIG9mIG9wYWNpdHkgYmV0d2VlbiAwIGFuZCAxIGZvciB0aGUgYWRkaXRpb25hbCBjb2xvclxuICAgICAqIEByZXR1cm5zIENvbG9yYXRpb25cbiAgICAgKi9cbiAgICBtYXNrQ29sb3IoY29sb3I6IHN0cmluZywgb3BhY2l0eTogbnVtYmVyID0gMSk6IENvbG9yYXRpb24ge1xuXG4gICAgICAgIGNvbnN0IGJhc2VDb2xvciA9IHRoaXMuaW50Q29sb3I7XG4gICAgICAgIGNvbnN0IGFkZGl0aW9uYWxDb2xvciA9IHRoaXMucGFyc2VDb2xvcihjb2xvcik7XG5cbiAgICAgICAgY29uc3QgbHVtID0gdGhpcy5taW5tYXgob3BhY2l0eSwgMCwgMSk7XG5cbiAgICAgICAgY29uc3QgUiA9IGJhc2VDb2xvciA+PiAxNjtcbiAgICAgICAgY29uc3QgRyA9IGJhc2VDb2xvciA+PiA4ICYgMHgwMEZGO1xuICAgICAgICBjb25zdCBCID0gYmFzZUNvbG9yICYgMHgwMDAwRkY7XG5cbiAgICAgICAgdGhpcy5pbnRDb2xvciA9IHRoaXMucmdiVG9JbnQoXG4gICAgICAgICAgICBNYXRoLnJvdW5kKCgoYWRkaXRpb25hbENvbG9yID4+IDE2KSAtIFIpICogbHVtKSArIFIsXG4gICAgICAgICAgICBNYXRoLnJvdW5kKCgoYWRkaXRpb25hbENvbG9yID4+IDggJiAweDAwRkYpIC0gRykgKiBsdW0pICsgRyxcbiAgICAgICAgICAgIE1hdGgucm91bmQoKChhZGRpdGlvbmFsQ29sb3IgJiAweDAwMDBGRikgLSBCKSAqIGx1bSkgKyBCXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMudXBkYXRlQ29sb3IoKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY2hhbmdlIGNvbG9yIHdpdGggY29sb3IgcGFyYW1ldGVyc1xuICAgICAqIEBwYXJhbSBjb2xvckRhdGEgYWRkaXRpb25uYWwgcGFyYW1ldGVyc1xuICAgICAqIEByZXR1cm5zIENvbG9yYXRpb25cbiAgICAgKi9cbiAgICBhZGRDb2xvcihjb2xvckRhdGE6IENvbG9yRGF0YSkge1xuICAgICAgICBpZiAoY29sb3JEYXRhLmx1bWlub3NpdHkpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlTHVtaW5vc2l0eShjb2xvckRhdGEubHVtaW5vc2l0eSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29sb3JEYXRhLm1hc2tDb2xvcikge1xuICAgICAgICAgICAgdGhpcy5tYXNrQ29sb3IoY29sb3JEYXRhLm1hc2tDb2xvciwgdGhpcy5taW5tYXgoY29sb3JEYXRhLm1hc2tPcGFjaXR5IHx8IDAsIDAsIDEpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2xvckRhdGEuciB8fCBjb2xvckRhdGEuZyB8fCBjb2xvckRhdGEuYikge1xuICAgICAgICAgICAgaWYgKGNvbG9yRGF0YS5yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5yZ2IuciwgY29sb3JEYXRhLnIsIHRoaXMucmdiLnIgKyBjb2xvckRhdGEucik7XG4gICAgICAgICAgICAgICAgdGhpcy5yZ2IuciA9IHRoaXMubWlubWF4KHRoaXMucmdiLnIgKyAoK2NvbG9yRGF0YS5yKSwgMCwgMjU1KTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnJnYi5yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2xvckRhdGEuZykge1xuICAgICAgICAgICAgICAgIHRoaXMucmdiLmcgPSB0aGlzLm1pbm1heCh0aGlzLnJnYi5nICsgKCtjb2xvckRhdGEuZyksIDAsIDI1NSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29sb3JEYXRhLmIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJnYi5yID0gdGhpcy5taW5tYXgodGhpcy5yZ2IuYiArICgrY29sb3JEYXRhLmIpLCAwLCAyNTUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pbnRDb2xvciA9IHRoaXMucmdiVG9JbnQodGhpcy5yZ2IuciwgdGhpcy5yZ2IuZywgdGhpcy5yZ2IuYik7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbG9yKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29sb3JEYXRhLmggfHwgY29sb3JEYXRhLnMgfHwgY29sb3JEYXRhLnYpIHtcbiAgICAgICAgICAgIGlmIChjb2xvckRhdGEuaCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaHN2LmggPSAodGhpcy5oc3YuaCArICgrY29sb3JEYXRhLmgpICsgMzYwKSAlIDM2MDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2xvckRhdGEucykge1xuICAgICAgICAgICAgICAgIHRoaXMuaHN2LnMgPSB0aGlzLm1pbm1heCh0aGlzLmhzdi5zICsgKCtjb2xvckRhdGEucyksIDAsIDEwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29sb3JEYXRhLnYpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhzdi52ID0gdGhpcy5taW5tYXgodGhpcy5oc3YudiArICgrY29sb3JEYXRhLnYpLCAwLCAxMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pbnRDb2xvciA9IHRoaXMuaHN2VG9JbnQodGhpcy5oc3YuaCwgdGhpcy5oc3YucywgdGhpcy5oc3Yudik7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbG9yKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSR0IgaW5mb3JtYXRpb25zXG4gICAgICogQHJldHVybnMgUkdCXG4gICAgICovXG4gICAgZ2V0UkdCKCk6IFJHQiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlPFJHQj4oKCkgPT4gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5yZ2IpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIU1YgaW5mb3JtYXRpb25zXG4gICAgICogQHJldHVybnMgSFNWXG4gICAgICovXG4gICAgZ2V0SFNWKCk6IEhTViB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlPEhTVj4oKCkgPT4gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5oc3YpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjb2xvciBpbiAjSEVYIGZvcm1hdFxuICAgICAqIEByZXR1cm5zIHN0cmluZyBvZiAjSEVYXG4gICAgICovXG4gICAgdG9IRVgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU8c3RyaW5nPigoKSA9PiAnIycgKyAoMHgxMDAwMDAwICsgdGhpcy5pbnRDb2xvcikudG9TdHJpbmcoMTYpLnNsaWNlKDEpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjb2xvciBpbiBIVkwoKSBmb3JtYXRcbiAgICAgKiBAcmV0dXJucyBzdHJpbmcgb2YgSFZMKEgsIFMlLCBWJSlcbiAgICAgKi9cbiAgICB0b0hTTCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTxzdHJpbmc+KCgpID0+IGBoc2woJHt0aGlzLmhzdi5ofSwgJHt0aGlzLmhzdi5zfSUsICR7dGhpcy5oc3Yudn0lKWApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNvbG9yIGluIFJHQigpIGZvcm1hdFxuICAgICAqIEByZXR1cm5zIHN0cmluZyBvZiBSR0IoUiwgRywgQilcbiAgICAgKi9cbiAgICB0b1JHQigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTxzdHJpbmc+KCgpID0+IGByZ2IoJHt0aGlzLnJnYi5yfSwgJHt0aGlzLnJnYi5nfSwgJHt0aGlzLnJnYi5ifSlgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB1cGRhdGUgY29sb3JzIGRhdGEgOiBSR0IgYW5kIEhTTFxuICAgICAqL1xuICAgIHByaXZhdGUgdXBkYXRlQ29sb3IoKSB7XG5cbiAgICAgICAgLy8gdXBkYXRlIFJHQlxuICAgICAgICB0aGlzLnJnYi5yID0gdGhpcy5pbnRDb2xvciA+PiAxNjtcbiAgICAgICAgdGhpcy5yZ2IuZyA9IHRoaXMuaW50Q29sb3IgPj4gOCAmIDB4MDBGRjtcbiAgICAgICAgdGhpcy5yZ2IuYiA9IHRoaXMuaW50Q29sb3IgJiAweDAwMDBGRjtcblxuICAgICAgICAvLyB1cGRhdGUgSFNMXG4gICAgICAgIHRoaXMuaHN2ID0gdGhpcy5yZ2IyaHN2KHRoaXMucmdiLnIsIHRoaXMucmdiLmcsIHRoaXMucmdiLmIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNoYW5nZSBjb2xvclxuICAgICAqIEBwYXJhbSBjb2xvciBwYXJzZSBjb2xvciA6IG5hbWUsICNIRVhBLCByZ2JhKClcbiAgICAgKiBAcmV0dXJucyBpbnQgY29sb3JcbiAgICAgKi9cbiAgICBwcml2YXRlIHBhcnNlQ29sb3IoY29sb3I6IHN0cmluZykge1xuXG4gICAgICAgIC8vIHNpIG5hbWVkIGNvbG9yXG4gICAgICAgIGlmIChDb2xvcmF0aW9uLmNvbG9yc05hbWVbY29sb3JdKSB7XG4gICAgICAgICAgICBjb2xvciA9IENvbG9yYXRpb24uY29sb3JzTmFtZVtjb2xvcl07XG4gICAgICAgIH1cblxuICAgICAgICAvLyB2YWxpZGF0ZSBoZXhhIHN0cmluZyAjUkdCLCAjUkdCQSwgI1JSR0dCQiwgI1JSR0dCQkFBIChpZ25vcmUgYWxwaGEpXG4gICAgICAgIGNvbnN0IG1hdGNoSGV4ID0gU3RyaW5nKGNvbG9yKS5tYXRjaChwYXR0ZXJuLmhleGEpO1xuICAgICAgICBsZXQgaW50Q29sb3I7XG4gICAgICAgIGlmIChtYXRjaEhleCkge1xuICAgICAgICAgICAgY29uc3QgaGV4YSA9IG1hdGNoSGV4WzRdXG4gICAgICAgICAgICAgICAgPyBtYXRjaEhleFsyXSArIG1hdGNoSGV4WzRdXG4gICAgICAgICAgICAgICAgOiBtYXRjaEhleFsyXVswXSArIG1hdGNoSGV4WzJdWzBdICsgbWF0Y2hIZXhbMl1bMV0gKyBtYXRjaEhleFsyXVsxXSArIG1hdGNoSGV4WzJdWzJdICsgbWF0Y2hIZXhbMl1bMl07XG5cbiAgICAgICAgICAgIGludENvbG9yID0gcGFyc2VJbnQoaGV4YSwgMTYpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGludENvbG9yID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIHZhbGlkYXRlIHJnYigpIC8gcmdiYSgpXG4gICAgICAgICAgICBjb25zdCBtYXRjaFJnYiA9IFN0cmluZyhjb2xvcikubWF0Y2gocGF0dGVybi5yZ2JhKTtcbiAgICAgICAgICAgIGlmIChtYXRjaFJnYikge1xuICAgICAgICAgICAgICAgIGludENvbG9yID0gdGhpcy5yZ2JUb0ludChwYXJzZUludChtYXRjaFJnYlsxXSwgMTApLCBwYXJzZUludChtYXRjaFJnYls0XSwgMTApLCBwYXJzZUludChtYXRjaFJnYls3XSwgMTApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbnRDb2xvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyB2YWxpZGF0ZSBoc3YoKSAvIGhzdmEoKVxuICAgICAgICAgICAgY29uc3QgbWF0Y2hIc3YgPSBTdHJpbmcoY29sb3IpLm1hdGNoKHBhdHRlcm4uaHN2YSk7XG4gICAgICAgICAgICBpZiAobWF0Y2hIc3YpIHtcbiAgICAgICAgICAgICAgICBpbnRDb2xvciA9IHRoaXMuaHN2VG9JbnQocGFyc2VJbnQobWF0Y2hIc3ZbMV0sIDEwKSwgcGFyc2VJbnQobWF0Y2hIc3ZbNF0sIDEwKSwgcGFyc2VJbnQobWF0Y2hIc3ZbN10sIDEwKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW50Q29sb3I7XG5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjb252ZXJ0IEhTVi9IU0wgdG8gaW50IFJHQlxuICAgICAqIEBwYXJhbSBodWUgSHVlIFswLCAzNjBdXG4gICAgICogQHBhcmFtIHNhdHVyYXRpb24gU2F0dXJhdGlvbiBbMCwgMTAwXVxuICAgICAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSBbMCwgMTAwXVxuICAgICAqIEByZXR1cm5zIGludCBSR0JcbiAgICAgKiBAc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzIzNTMyMTEvaHNsLXRvLXJnYi1jb2xvci1jb252ZXJzaW9uXG4gICAgICovXG4gICAgcHJpdmF0ZSBoc3ZUb0ludChodWU6IG51bWJlciwgc2F0dXJhdGlvbjogbnVtYmVyLCB2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgc2F0dXJhdGlvbiA9IE1hdGgubWF4KDAsIHNhdHVyYXRpb24pO1xuXG4gICAgICAgIGNvbnN0IHMgPSBzYXR1cmF0aW9uIC8gMTAwO1xuICAgICAgICBjb25zdCB2ID0gdmFsdWUgLyAxMDA7XG4gICAgICAgIGNvbnN0IGggPSBodWUgLyAzNjA7XG5cbiAgICAgICAgaWYgKHNhdHVyYXRpb24gPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJnYlRvSW50KHYgKiAyNTYsIHYgKiAyNTYsIHYgKiAyNTYpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcSA9IHYgPCAwLjUgPyB2ICogKDEgKyBzKSA6IHYgKyBzIC0gdiAqIHM7XG4gICAgICAgIGNvbnN0IHAgPSAyICogdiAtIHE7XG4gICAgICAgIGNvbnN0IHIgPSB0aGlzLmh1ZTJyZ2IocCwgcSwgaCArIDEgLyAzKTtcbiAgICAgICAgY29uc3QgZyA9IHRoaXMuaHVlMnJnYihwLCBxLCBoKTtcbiAgICAgICAgY29uc3QgYiA9IHRoaXMuaHVlMnJnYihwLCBxLCBoIC0gMSAvIDMpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnJnYlRvSW50KE1hdGgucm91bmQociAqIDI1NSksIE1hdGgucm91bmQoZyAqIDI1NSksIE1hdGgucm91bmQoYiAqIDI1NSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGh1ZSBjb2xvciBjYWxjdWxhdGlvblxuICAgICAqIEBwYXJhbSBwIG51bWJlclxuICAgICAqIEBwYXJhbSBxIG51bWJlclxuICAgICAqIEBwYXJhbSB0IG51bWJlclxuICAgICAqIEByZXR1cm5zIGludCBjb2xvciBbMCwgMjU1XVxuICAgICAqL1xuICAgIHByaXZhdGUgaHVlMnJnYihwOiBudW1iZXIsIHE6IG51bWJlciwgdDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHQgPCAwKSB7IHQgKz0gMTsgfSBlbHNlIGlmICh0ID4gMSkgeyB0IC09IDE7IH1cbiAgICAgICAgaWYgKHQgPCAxIC8gNikgeyByZXR1cm4gcCArIChxIC0gcCkgKiA2ICogdDsgfVxuICAgICAgICBpZiAodCA8IDEgLyAyKSB7IHJldHVybiBxOyB9XG4gICAgICAgIGlmICh0IDwgMiAvIDMpIHsgcmV0dXJuIHAgKyAocSAtIHApICogKDIgLyAzIC0gdCkgKiA2OyB9XG4gICAgICAgIHJldHVybiBwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgUkdCIHRvIEhTVlxuICAgICAqIEBwYXJhbSByIFswLCAyNTVdXG4gICAgICogQHBhcmFtIGcgWzAsIDI1NV1cbiAgICAgKiBAcGFyYW0gYiBbMCwgMjU1XVxuICAgICAqIEByZXR1cm5zIEhTViBkYXRhXG4gICAgICogQHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zOTExODUyOC9yZ2ItdG8taHNsLWNvbnZlcnNpb25cbiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hTTF9hbmRfSFNWI0Zvcm1hbF9kZXJpdmF0aW9uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZ2IyaHN2KHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIpOiBIU1Yge1xuXG4gICAgICAgIC8vIGNvbnZlcnQgcixnLGIgWzAsMjU1XSByYW5nZSB0byBbMCwxXVxuICAgICAgICByID0gciAvIDI1NTtcbiAgICAgICAgZyA9IGcgLyAyNTU7XG4gICAgICAgIGIgPSBiIC8gMjU1O1xuXG4gICAgICAgIC8vIGdldCB0aGUgbWluIGFuZCBtYXggb2YgcixnLGJcbiAgICAgICAgY29uc3QgbWF4ID0gTWF0aC5tYXgociwgZywgYik7XG4gICAgICAgIGNvbnN0IG1pbiA9IE1hdGgubWluKHIsIGcsIGIpO1xuXG4gICAgICAgIC8vIGxpZ2h0bmVzcyBpcyB0aGUgYXZlcmFnZSBvZiB0aGUgbGFyZ2VzdCBhbmQgc21hbGxlc3QgY29sb3IgY29tcG9uZW50c1xuICAgICAgICBjb25zdCB2YWwgPSAobWF4ICsgbWluKSAvIDI7XG4gICAgICAgIGxldCBodWU6IG51bWJlcjtcbiAgICAgICAgbGV0IHNhdDogbnVtYmVyO1xuXG4gICAgICAgIGlmIChtYXggPT09IG1pbikgeyAvLyBubyBzYXR1cmF0aW9uXG4gICAgICAgICAgICBodWUgPSAwO1xuICAgICAgICAgICAgc2F0ID0gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGMgPSBtYXggLSBtaW47IC8vIGNocm9tYVxuICAgICAgICAgICAgLy8gc2F0dXJhdGlvbiBpcyBzaW1wbHkgdGhlIGNocm9tYSBzY2FsZWQgdG8gZmlsbFxuICAgICAgICAgICAgLy8gdGhlIGludGVydmFsIFswLCAxXSBmb3IgZXZlcnkgY29tYmluYXRpb24gb2YgaHVlIGFuZCBsaWdodG5lc3NcbiAgICAgICAgICAgIHNhdCA9IGMgLyAoMSAtIE1hdGguYWJzKDIgKiB2YWwgLSAxKSk7XG4gICAgICAgICAgICBzd2l0Y2ggKG1heCkge1xuICAgICAgICAgICAgICAgIGNhc2UgcjpcbiAgICAgICAgICAgICAgICAgICAgaHVlID0gKGcgLSBiKSAvIGMgKyAoZyA8IGIgPyA2IDogMCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgZzpcbiAgICAgICAgICAgICAgICAgICAgaHVlID0gKGIgLSByKSAvIGMgKyAyO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIGI6XG4gICAgICAgICAgICAgICAgICAgIGh1ZSA9IChyIC0gZykgLyBjICsgNDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaDogTWF0aC5yb3VuZChodWUgKiA2MCksICAvLyDCsFxuICAgICAgICAgICAgczogTWF0aC5yb3VuZChzYXQgKiAxMDApLCAvLyAlXG4gICAgICAgICAgICB2OiBNYXRoLnJvdW5kKHZhbCAqIDEwMCkgIC8vICVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjb252ZXJ0IFJHQiBkYXRhIHRvIGludCB2YWx1ZVxuICAgICAqIEBwYXJhbSByIHJlZCBbMCwgMjU1XVxuICAgICAqIEBwYXJhbSBnIGdyZWVuIFswLCAyNTVdXG4gICAgICogQHBhcmFtIGIgYmx1ZSBbMCwgMjU1XVxuICAgICAqIEByZXR1cm5zIGludCB2YWx1ZVxuICAgICAqL1xuICAgIHByaXZhdGUgcmdiVG9JbnQocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiByICogMHgxMDAwMCArIGcgKiAweDEwMCArIGI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogYm91bmQgYSB2YWx1ZSBiZXR3ZWVuIHR3byB2YWx1ZXNcbiAgICAgKiBAcGFyYW0gdmFsdWUgdmFsdWVcbiAgICAgKiBAcGFyYW0gbWluIG1pbiB2YWx1ZVxuICAgICAqIEBwYXJhbSBtYXggbWF4IHZhbHVlXG4gICAgICogQHBhcmFtIGRlZmF1bHRWYWx1ZSByZXBsYWNlIGFuIGludmFsaWQgdnZhbHVlXG4gICAgICogQHJldHVybnMgdmFsdWUgYmV0d2VlbiBtaW4gYW5kIG1heFxuICAgICAqL1xuICAgIHByaXZhdGUgbWlubWF4KHZhbHVlOiBudW1iZXIsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlciwgZGVmYXVsdFZhbHVlID0gMCkge1xuICAgICAgICByZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgodmFsdWUgfHwgZGVmYXVsdFZhbHVlLCBtaW4pLCBtYXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHRlc3QgaXMgaW50Q29sb3IgaXMgdmFsaWQgZm9yIHJldHVybiBhIHZsYXVlXG4gICAgICogQHBhcmFtIHZhbHVlIGNhbGxiYWNrIG9mIHZhbHVlXG4gICAgICogQHJldHVybnMgdmFsdWUgb3IgbnVsbFxuICAgICAqL1xuICAgIHByaXZhdGUgdmFsdWU8TD4odmFsdWU6ICgpID0+IEwpOiBMIHtcbiAgICAgICAgcmV0dXJuICFpc05hTih0aGlzLmludENvbG9yKSA/IHZhbHVlKCkgOiBudWxsO1xuICAgIH1cblxufVxuIl19 |
@@ -110,6 +110,20 @@ /** | ||
this.hsv = { h: 0, s: 0, v: 0 }; | ||
this.intColor = this.parseColor(color); | ||
this.updateColor(); | ||
this.reset(); | ||
} | ||
/** | ||
* reinit to base color | ||
*/ | ||
/** | ||
* reinit to base color | ||
* @return {?} | ||
*/ | ||
Coloration.prototype.reset = /** | ||
* reinit to base color | ||
* @return {?} | ||
*/ | ||
function () { | ||
this.intColor = this.parseColor(this.color); | ||
this.updateColor(); | ||
}; | ||
/** | ||
* change the luminosity of a color | ||
@@ -691,2 +705,2 @@ * @param lum value between -1 and 1 | ||
} | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbG9yYXRpb24tbGliLyIsInNvdXJjZXMiOlsibGliL2NvbG9yYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0lBR00sT0FBTyxHQUFHO0lBQ1osSUFBSSxFQUFFLDZEQUE2RDtJQUNuRSxJQUFJLEVBQUUsaUhBQWlIO0lBQ3ZILElBQUksRUFBRSxxSEFBcUg7Q0FDOUg7Ozs7QUFFRCx5QkFJQzs7Ozs7O0lBSGtDLGdCQUFVOzs7OztJQUNSLGdCQUFVOzs7OztJQUNWLGdCQUFVOzs7OztBQUUvQyx5QkFJQzs7Ozs7O0lBSGtDLGdCQUFVOzs7OztJQUNILGdCQUFVOzs7OztJQUNKLGdCQUFVOzs7OztBQUUxRCwrQkFhQzs7Ozs7O0lBWHFDLHNCQUFXOzs7OztJQUNULHNCQUFXOzs7OztJQUNYLHNCQUFXOzs7OztJQUVuQixzQkFBVzs7Ozs7SUFDSixzQkFBVzs7Ozs7SUFDTCxzQkFBVzs7Ozs7SUFFckIsK0JBQW9COzs7OztJQUNqQyw4QkFBbUI7Ozs7O0lBQ0wsZ0NBQXFCOztBQUd6RDtJQWtESSxvQkFBbUIsS0FBYTtRQUFiLFVBQUssR0FBTCxLQUFLLENBQVE7UUFIeEIsUUFBRyxHQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNoQyxRQUFHLEdBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBR3BDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7O09BSUc7Ozs7OztJQUNILHFDQUFnQjs7Ozs7SUFBaEIsVUFBaUIsR0FBVztRQUN4QixHQUFHLEdBQUcsSUFB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UztLQUMzQixDQUFDO0lBZ1VOLGlCQUFDO0NBQUEsQUE1V0QsSUE0V0M7U0E1V1ksVUFBVTs7Ozs7O0lBS25CLHNCQXVDRTs7Ozs7SUFFRiw4QkFBeUI7Ozs7O0lBQ3pCLHlCQUF3Qzs7Ozs7SUFDeEMseUJBQXdDOztJQUU1QiwyQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8vIHRzbGludDpkaXNhYmxlOm5vLWJpdHdpc2VcblxuY29uc3QgcGF0dGVybiA9IHtcbiAgICBoZXhhOiAvXl4jPygoW1xcZGEtZl17M30pKChbXFxkYS1mXXszfSkoW1xcZGEtZl17Mn0pP3xbXFxkYS1mXXsxfSk/KSQvaSxcbiAgICByZ2JhOiAvXnJnYmE/XFwoKFtcXGRdKihcXC5bXFxkXSspPykoLD9cXHMqfFxccyspKFtcXGRdKihcXC5bXFxkXSspPykoLD9cXHMqfFxccyspKFtcXGRdKihcXC5bXFxkXSspPykoKCxcXHMqKShbXFxkXSooXFwuW1xcZF0rKT8pKT9cXCkkL2ksXG4gICAgaHN2YTogL15oc2xhP1xcKChbXFxkXSooXFwuW1xcZF0rKT8pKCw/XFxzKnxcXHMrKShbXFxkXSooXFwuW1xcZF0rKT8pXFwlKCw/XFxzKnxcXHMrKShbXFxkXSooXFwuW1xcZF0rKT8pXFwlKCgsXFxzKikoW1xcZF0qKFxcLltcXGRdKyk/KSk/XFwpJC9pXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFJHQiB7XG4gICAgLyoqIFJlZCBjb2xvciB2YWx1ZSBbMCwyNTVdICovIHI6IG51bWJlcjtcbiAgICAvKiogR3JlZW4gY29sb3IgdmFsdWUgWzAsMjU1XSAqLyBnOiBudW1iZXI7XG4gICAgLyoqIEJsdWUgY29sb3IgdmFsdWUgWzAsMjU1XSAqLyAgYjogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBIU1Yge1xuICAgIC8qKiBIdWUgY29sb3IgdmFsdWUgWzAsMzYwXSAqLyBoOiBudW1iZXI7XG4gICAgLyoqIFNhbHVyYXRpb24gY29sb3IgdmFsdWUgWzAsMTAwXSAqLyBzOiBudW1iZXI7XG4gICAgLyoqIFZhbHVlL2xpZ2h0bmVzcyBjb2xvciB2YWx1ZSBbMCwxMDBdICovICB2OiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIENvbG9yRGF0YSB7XG4gICAgLy8gUkdCXG4gICAgLyoqIFJlZCBjb2xvciB2YWx1ZSBbLTI1NiwyNTVdICovIHI/OiBudW1iZXI7XG4gICAgLyoqIEdyZWVuIGNvbG9yIHZhbHVlIFstMjU2LDI1NV0gKi8gZz86IG51bWJlcjtcbiAgICAvKiogQmx1ZSBjb2xvciB2YWx1ZSBbLTI1NiwyNTVdICovICBiPzogbnVtYmVyO1xuICAgIC8vIEhTVi9IU0xcbiAgICAvKiogSHVlIHZhbHVlIFstMzYwLDM2MF0gKi8gaD86IG51bWJlcjtcbiAgICAvKiogU2FsdXJhdGlvbiB2YWx1ZSBbLTEwMCwxMDBdICovIHM/OiBudW1iZXI7XG4gICAgLyoqIFZhbHVlL2xpZ2h0bmVzcyB2YWx1ZSBbLTEwMCwxMDBdICovICB2PzogbnVtYmVyO1xuICAgIC8vIE90aGVyXG4gICAgLyoqIGx1bWlub3NpdHkgdmFsdWUgWy0xLDFdICovIGx1bWlub3NpdHk/OiBudW1iZXI7XG4gICAgLyoqIGNvbG9yIG1hc2sgKi8gbWFza0NvbG9yPzogc3RyaW5nO1xuICAgIC8qKiBjb2xvciBtYXNrIG9wYWNpdHkgWzAsMV0gKi8gbWFza09wYWNpdHk/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBDb2xvcmF0aW9uIHtcblxuICAgIC8qKlxuICAgICAqIENTUyBjb2xvciBsaXN0XG4gICAgICovXG4gICAgc3RhdGljIGNvbG9yc05hbWU6IGFueSA9IHtcbiAgICAgICAgLy8gQ1NTIDFcbiAgICAgICAgYmxhY2s6ICcjMDAwMDAwJywgc2lsdmVyOiAnI2MwYzBjMCcsIGdyYXk6ICcjODA4MDgwJywgd2hpdGU6ICcjZmZmZmZmJywgbWFyb29uOiAnIzgwMDAwMCcsIHJlZDogJyNmZjAwMDAnLFxuICAgICAgICBwdXJwbGU6ICcjODAwMDgwJywgZnVjaHNpYTogJyNmZjAwZmYnLCBncmVlbjogJyMwMDgwMDAnLCBsaW1lOiAnIzAwZmYwMCcsIG9saXZlOiAnIzgwODAwMCcsIHllbGxvdzogJyNmZmZmMDAnLFxuICAgICAgICBuYXZ5OiAnIzAwMDA4MCcsIGJsdWU6ICcjMDAwMGZmJywgdGVhbDogJyMwMDgwODAnLCBhcXVhOiAnIzAwZmZmZicsXG4gICAgICAgIC8vIENTUyAyIChSZXZpc2lvbiAxKVxuICAgICAgICBvcmFuZ2U6ICcjZmZhNTAwJyxcbiAgICAgICAgLy8gQ1NTIDNcbiAgICAgICAgYWxpY2VibHVlOiAnI2YwZjhmZicsIGFudGlxdWV3aGl0ZTogJyNmYWViZDcnLCBhcXVhbWFyaW5lOiAnIzdmZmZkNCcsIGF6dXJlOiAnI2YwZmZmZicsIGJlaWdlOiAnI2Y1ZjVkYycsXG4gICAgICAgIGJpc3F1ZTogJyNmZmU0YzQnLCBibGFuY2hlZGFsbW9uZDogJyNmZmViY2QnLCBibHVldmlvbGV0OiAnIzhhMmJlMicsIGJyb3duOiAnI2E1MmEyYScsIGJ1cmx5d29vZDogJyNkZWI4ODcnLFxuICAgICAgICBjYWRldGJsdWU6ICcjNWY5ZWEwJywgY2hhcnRyZXVzZTogJyM3ZmZmMDAnLCBjaG9jb2xhdGU6ICcjZDI2OTFlJywgY29yYWw6ICcjZmY3ZjUwJywgY29ybmZsb3dlcmJsdWU6ICcjNjQ5NWVkJyxcbiAgICAgICAgY29ybnNpbGs6ICcjZmZmOGRjJywgY3JpbXNvbjogJyNkYzE0M2MnLCBjeWFuOiAnIzAwZmZmZicsIGRlYXF1YTogJyMwMGZmZmYnLCBkYXJrYmx1ZTogJyMwMDAwOGInLFxuICAgICAgICBkYXJrY3lhbjogJyMwMDhiOGInLCBkYXJrZ29sZGVucm9kOiAnI2I4ODYwYicsIGRhcmtncmF5OiAnI2E5YTlhOScsIGRhcmtncmVlbjogJyMwMDY0MDAnLCBkYXJrZ3JleTogJyNhOWE5YTknLFxuICAgICAgICBkYXJra2hha2k6ICcjYmRiNzZiJywgZGFya21hZ2VudGE6ICcjOGIwMDhiJywgZGFya29saXZlZ3JlZW46ICcjNTU2YjJmJywgZGFya29yYW5nZTogJyNmZjhjMDAnLFxuICAgICAgICBkYXJrb3JjaGlkOiAnIzk5MzJjYycsIGRhcmtyZWQ6ICcjOGIwMDAwJywgZGFya3NhbG1vbjogJyNlOTk2N2EnLCBkYXJrc2VhZ3JlZW46ICcjOGZiYzhmJyxcbiAgICAgICAgZGFya3NsYXRlYmx1ZTogJyM0ODNkOGInLCBkYXJrc2xhdGVncmF5OiAnIzJmNGY0ZicsIGRhcmtzbGF0ZWdyZXk6ICcjMmY0ZjRmJywgZGFya3R1cnF1b2lzZTogJyMwMGNlZDEnLFxuICAgICAgICBkYXJrdmlvbGV0OiAnIzk0MDBkMycsIGRlZXBwaW5rOiAnI2ZmMTQ5MycsIGRlZXBza3libHVlOiAnIzAwYmZmZicsIGRpbWdyYXk6ICcjNjk2OTY5JywgZGltZ3JleTogJyM2OTY5NjknLFxuICAgICAgICBkb2RnZXJibHVlOiAnIzFlOTBmZicsIGZpcmVicmljazogJyNiMjIyMjInLCBmbG9yYWx3aGl0ZTogJyNmZmZhZjAnLCBmb3Jlc3RncmVlbjogJyMyMjhiMjInLFxuICAgICAgICBnYWluc2Jvcm86ICcjZGNkY2RjJywgZ2hvc3R3aGl0ZTogJyNmOGY4ZmYnLCBnb2xkOiAnI2ZmZDcwMCcsIGdvbGRlbnJvZDogJyNkYWE1MjAnLCBncmVlbnllbGxvdzogJyNhZGZmMmYnLFxuICAgICAgICBncmV5OiAnIzgwODA4MCcsIGhvbmV5ZGV3OiAnI2YwZmZmMCcsIGhvdHBpbms6ICcjZmY2OWI0JywgaW5kaWFucmVkOiAnI2NkNWM1YycsIGluZGlnbzogJyM0YjAwODInLFxuICAgICAgICBpdm9yeTogJyNmZmZmZjAnLCBraGFraTogJyNmMGU2OGMnLCBsYXZlbmRlcjogJyNlNmU2ZmEnLCBsYXZlbmRlcmJsdXNoOiAnI2ZmZjBmNScsIGxhd25ncmVlbjogJyM3Y2ZjMDAnLFxuICAgICAgICBsZW1vbmNoaWZmb246ICcjZmZmYWNkJywgbGlnaHRibHVlOiAnI2FkZDhlNicsIGxpZ2h0Y29yYWw6ICcjZjA4MDgwJywgbGlnaHRjeWFuOiAnI2UwZmZmZicsXG4gICAgICAgIGxpZ2h0Z29sZGVucm9keWVsbG93OiAnI2ZhZmFkMicsIGxpZ2h0Z3JheTogJyNkM2QzZDMnLCBsaWdodGdyZWVuOiAnIzkwZWU5MCcsIGxpZ2h0Z3JleTogJyNkM2QzZDMnLFxuICAgICAgICBsaWdodHBpbms6ICcjZmZiNmMxJywgbGlnaHRzYWxtb246ICcjZmZhMDdhJywgbGlnaHRzZWFncmVlbjogJyMyMGIyYWEnLCBsaWdodHNreWJsdWU6ICcjODdjZWZhJyxcbiAgICAgICAgbGlnaHRzbGF0ZWdyYXk6ICcjNzc4ODk5JywgbGlnaHRzbGF0ZWdyZXk6ICcjNzc4ODk5JywgbGlnaHRzdGVlbGJsdWU6ICcjYjBjNGRlJywgbGlnaHR5ZWxsb3c6ICcjZmZmZmUwJyxcbiAgICAgICAgbGltZWdyZWVuOiAnIzMyY2QzMicsIGxpbmVuOiAnI2ZhZjBlNicsIG1hZ2VudGE6ICcjZmYwMGZmJywgZGVmdWNoc2lhOiAnI2ZmMDBmZicsIG1lZGl1bWFxdWFtYXJpbmU6ICcjNjZjZGFhJyxcbiAgICAgICAgbWVkaXVtYmx1ZTogJyMwMDAwY2QnLCBtZWRpdW1vcmNoaWQ6ICcjYmE1NWQzJywgbWVkaXVtcHVycGxlOiAnIzkzNzBkYicsIG1lZGl1bXNlYWdyZWVuOiAnIzNjYjM3MScsXG4gICAgICAgIG1lZGl1bXNsYXRlYmx1ZTogJyM3YjY4ZWUnLCBtZWRpdW1zcHJpbmdncmVlbjogJyMwMGZhOWEnLCBtZWRpdW10dXJxdW9pc2U6ICcjNDhkMWNjJyxcbiAgICAgICAgbWVkaXVtdmlvbGV0cmVkOiAnI2M3MTU4NScsIG1pZG5pZ2h0Ymx1ZTogJyMxOTE5NzAnLCBtaW50Y3JlYW06ICcjZjVmZmZhJywgbWlzdHlyb3NlOiAnI2ZmZTRlMScsXG4gICAgICAgIG1vY2Nhc2luOiAnI2ZmZTRiNScsIG5hdmFqb3doaXRlOiAnI2ZmZGVhZCcsIG9sZGxhY2U6ICcjZmRmNWU2Jywgb2xpdmVkcmFiOiAnIzZiOGUyMycsIG9yYW5nZXJlZDogJyNmZjQ1MDAnLFxuICAgICAgICBvcmNoaWQ6ICcjZGE3MGQ2JywgcGFsZWdvbGRlbnJvZDogJyNlZWU4YWEnLCBwYWxlZ3JlZW46ICcjOThmYjk4JywgcGFsZXR1cnF1b2lzZTogJyNhZmVlZWUnLFxuICAgICAgICBwYWxldmlvbGV0cmVkOiAnI2RiNzA5MycsIHBhcGF5YXdoaXA6ICcjZmZlZmQ1JywgcGVhY2hwdWZmOiAnI2ZmZGFiOScsIHBlcnU6ICcjY2Q4NTNmJywgcGluazogJyNmZmMwY2InLFxuICAgICAgICBwbHVtOiAnI2RkYTBkZCcsIHBvd2RlcmJsdWU6ICcjYjBlMGU2Jywgcm9zeWJyb3duOiAnI2JjOGY4ZicsIHJveWFsYmx1ZTogJyM0MTY5ZTEnLCBzYWRkbGVicm93bjogJyM4YjQ1MTMnLFxuICAgICAgICBzYWxtb246ICcjZmE4MDcyJywgc2FuZHlicm93bjogJyNmNGE0NjAnLCBzZWFncmVlbjogJyMyZThiNTcnLCBzZWFzaGVsbDogJyNmZmY1ZWUnLCBzaWVubmE6ICcjYTA1MjJkJyxcbiAgICAgICAgc2t5Ymx1ZTogJyM4N2NlZWInLCBzbGF0ZWJsdWU6ICcjNmE1YWNkJywgc2xhdGVncmF5OiAnIzcwODA5MCcsIHNsYXRlZ3JleTogJyM3MDgwOTAnLCBzbm93OiAnI2ZmZmFmYScsXG4gICAgICAgIHNwcmluZ2dyZWVuOiAnIzAwZmY3ZicsIHN0ZWVsYmx1ZTogJyM0NjgyYjQnLCB0YW46ICcjZDJiNDhjJywgdGhpc3RsZTogJyNkOGJmZDgnLCB0b21hdG86ICcjZmY2MzQ3JyxcbiAgICAgICAgdHVycXVvaXNlOiAnIzQwZTBkMCcsIHZpb2xldDogJyNlZTgyZWUnLCB3aGVhdDogJyNmNWRlYjMnLCB3aGl0ZXNtb2tlOiAnI2Y1ZjVmNScsIHllbGxvd2dyZWVuOiAnIzlhY2QzMicsXG4gICAgICAgIC8vIENTUyA0XG4gICAgICAgIHJlYmVjY2FwdXJwbGU6ICcjNjYzMzk5J1xuICAgIH07XG5cbiAgICBwcml2YXRlIGludENvbG9yOiBudW1iZXI7XG4gICAgcHJpdmF0ZSByZ2I6IFJHQiA9IHsgcjogMCwgZzogMCwgYjogMCB9O1xuICAgIHByaXZhdGUgaHN2OiBIU1YgPSB7IGg6IDAsIHM6IDAsIHY6IDAgfTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBjb2xvcjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuaW50Q29sb3IgPSB0aGlzLnBhcnNlQ29sb3IoY29sb3IpO1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbG9yKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY2hhbmdlIHRoZSBsdW1pbm9zaXR5IG9mIGEgY29sb3JcbiAgICAgKiBAcGFyYW0gbHVtIHZhbHVlIGJldHdlZW4gLTEgYW5kIDFcbiAgICAgKiBAcmV0dXJucyBDb2xvcmF0aW9uXG4gICAgICovXG4gICAgY2hhbmdlTHVtaW5vc2l0eShsdW06IG51bWJlcik6IENvbG9yYXRpb24ge1xuICAgICAgICBsdW0gPSB0aGlzLm1pbm1heChsdW0sIC0xLCAxKTtcbiAgICAgICAgdGhpcy5tYXNrQ29sb3IobHVtIDwgMCA/ICcjMDAwJyA6ICcjRkZGJywgTWF0aC5hYnMobHVtKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGFkZCBjb2xvciB3aXRoIGEgbWFya1xuICAgICAqIEBwYXJhbSBjb2xvciBhZGRpdGlvbmFsIGNvbG9yXG4gICAgICogQHBhcmFtIG9wYWNpdHkgdmFsdWUgb2Ygb3BhY2l0eSBiZXR3ZWVuIDAgYW5kIDEgZm9yIHRoZSBhZGRpdGlvbmFsIGNvbG9yXG4gICAgICogQHJldHVybnMgQ29sb3JhdGlvblxuICAgICAqL1xuICAgIG1hc2tDb2xvcihjb2xvcjogc3RyaW5nLCBvcGFjaXR5OiBudW1iZXIgPSAxKTogQ29sb3JhdGlvbiB7XG5cbiAgICAgICAgY29uc3QgYmFzZUNvbG9yID0gdGhpcy5pbnRDb2xvcjtcbiAgICAgICAgY29uc3QgYWRkaXRpb25hbENvbG9yID0gdGhpcy5wYXJzZUNvbG9yKGNvbG9yKTtcblxuICAgICAgICBjb25zdCBsdW0gPSB0aGlzLm1pbm1heChvcGFjaXR5LCAwLCAxKTtcblxuICAgICAgICBjb25zdCBSID0gYmFzZUNvbG9yID4+IDE2O1xuICAgICAgICBjb25zdCBHID0gYmFzZUNvbG9yID4+IDggJiAweDAwRkY7XG4gICAgICAgIGNvbnN0IEIgPSBiYXNlQ29sb3IgJiAweDAwMDBGRjtcblxuICAgICAgICB0aGlzLmludENvbG9yID0gdGhpcy5yZ2JUb0ludChcbiAgICAgICAgICAgIE1hdGgucm91bmQoKChhZGRpdGlvbmFsQ29sb3IgPj4gMTYpIC0gUikgKiBsdW0pICsgUixcbiAgICAgICAgICAgIE1hdGgucm91bmQoKChhZGRpdGlvbmFsQ29sb3IgPj4gOCAmIDB4MDBGRikgLSBHKSAqIGx1bSkgKyBHLFxuICAgICAgICAgICAgTWF0aC5yb3VuZCgoKGFkZGl0aW9uYWxDb2xvciAmIDB4MDAwMEZGKSAtIEIpICogbHVtKSArIEJcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy51cGRhdGVDb2xvcigpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjaGFuZ2UgY29sb3Igd2l0aCBjb2xvciBwYXJhbWV0ZXJzXG4gICAgICogQHBhcmFtIGNvbG9yRGF0YSBhZGRpdGlvbm5hbCBwYXJhbWV0ZXJzXG4gICAgICogQHJldHVybnMgQ29sb3JhdGlvblxuICAgICAqL1xuICAgIGFkZENvbG9yKGNvbG9yRGF0YTogQ29sb3JEYXRhKSB7XG4gICAgICAgIGlmIChjb2xvckRhdGEubHVtaW5vc2l0eSkge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VMdW1pbm9zaXR5KGNvbG9yRGF0YS5sdW1pbm9zaXR5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2xvckRhdGEubWFza0NvbG9yKSB7XG4gICAgICAgICAgICB0aGlzLm1hc2tDb2xvcihjb2xvckRhdGEubWFza0NvbG9yLCB0aGlzLm1pbm1heChjb2xvckRhdGEubWFza09wYWNpdHkgfHwgMCwgMCwgMSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbG9yRGF0YS5yIHx8IGNvbG9yRGF0YS5nIHx8IGNvbG9yRGF0YS5iKSB7XG4gICAgICAgICAgICBpZiAoY29sb3JEYXRhLnIpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnJnYi5yLCBjb2xvckRhdGEuciwgdGhpcy5yZ2IuciArIGNvbG9yRGF0YS5yKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJnYi5yID0gdGhpcy5taW5tYXgodGhpcy5yZ2IuciArICgrY29sb3JEYXRhLnIpLCAwLCAyNTUpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMucmdiLnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvbG9yRGF0YS5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZ2IuZyA9IHRoaXMubWlubWF4KHRoaXMucmdiLmcgKyAoK2NvbG9yRGF0YS5nKSwgMCwgMjU1KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2xvckRhdGEuYikge1xuICAgICAgICAgICAgICAgIHRoaXMucmdiLnIgPSB0aGlzLm1pbm1heCh0aGlzLnJnYi5iICsgKCtjb2xvckRhdGEuYiksIDAsIDI1NSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmludENvbG9yID0gdGhpcy5yZ2JUb0ludCh0aGlzLnJnYi5yLCB0aGlzLnJnYi5nLCB0aGlzLnJnYi5iKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ29sb3IoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2xvckRhdGEuaCB8fCBjb2xvckRhdGEucyB8fCBjb2xvckRhdGEudikge1xuICAgICAgICAgICAgaWYgKGNvbG9yRGF0YS5oKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oc3YuaCA9ICh0aGlzLmhzdi5oICsgKCtjb2xvckRhdGEuaCkgKyAzNjApICUgMzYwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvbG9yRGF0YS5zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oc3YucyA9IHRoaXMubWlubWF4KHRoaXMuaHN2LnMgKyAoK2NvbG9yRGF0YS5zKSwgMCwgMTAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2xvckRhdGEudikge1xuICAgICAgICAgICAgICAgIHRoaXMuaHN2LnYgPSB0aGlzLm1pbm1heCh0aGlzLmhzdi52ICsgKCtjb2xvckRhdGEudiksIDAsIDEwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmludENvbG9yID0gdGhpcy5oc3ZUb0ludCh0aGlzLmhzdi5oLCB0aGlzLmhzdi5zLCB0aGlzLmhzdi52KTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ29sb3IoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJHQiBpbmZvcm1hdGlvbnNcbiAgICAgKiBAcmV0dXJucyBSR0JcbiAgICAgKi9cbiAgICBnZXRSR0IoKTogUkdCIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU8UkdCPigoKSA9PiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLnJnYikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhTViBpbmZvcm1hdGlvbnNcbiAgICAgKiBAcmV0dXJucyBIU1ZcbiAgICAgKi9cbiAgICBnZXRIU1YoKTogSFNWIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU8SFNWPigoKSA9PiBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmhzdikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNvbG9yIGluICNIRVggZm9ybWF0XG4gICAgICogQHJldHVybnMgc3RyaW5nIG9mICNIRVhcbiAgICAgKi9cbiAgICB0b0hFWCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTxzdHJpbmc+KCgpID0+ICcjJyArICgweDEwMDAwMDAgKyB0aGlzLmludENvbG9yKS50b1N0cmluZygxNikuc2xpY2UoMSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNvbG9yIGluIEhWTCgpIGZvcm1hdFxuICAgICAqIEByZXR1cm5zIHN0cmluZyBvZiBIVkwoSCwgUyUsIFYlKVxuICAgICAqL1xuICAgIHRvSFNMKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlPHN0cmluZz4oKCkgPT4gYGhzbCgke3RoaXMuaHN2Lmh9LCAke3RoaXMuaHN2LnN9JSwgJHt0aGlzLmhzdi52fSUpYCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY29sb3IgaW4gUkdCKCkgZm9ybWF0XG4gICAgICogQHJldHVybnMgc3RyaW5nIG9mIFJHQihSLCBHLCBCKVxuICAgICAqL1xuICAgIHRvUkdCKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlPHN0cmluZz4oKCkgPT4gYHJnYigke3RoaXMucmdiLnJ9LCAke3RoaXMucmdiLmd9LCAke3RoaXMucmdiLmJ9KWApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHVwZGF0ZSBjb2xvcnMgZGF0YSA6IFJHQiBhbmQgSFNMXG4gICAgICovXG4gICAgcHJpdmF0ZSB1cGRhdGVDb2xvcigpIHtcblxuICAgICAgICAvLyB1cGRhdGUgUkdCXG4gICAgICAgIHRoaXMucmdiLnIgPSB0aGlzLmludENvbG9yID4+IDE2O1xuICAgICAgICB0aGlzLnJnYi5nID0gdGhpcy5pbnRDb2xvciA+PiA4ICYgMHgwMEZGO1xuICAgICAgICB0aGlzLnJnYi5iID0gdGhpcy5pbnRDb2xvciAmIDB4MDAwMEZGO1xuXG4gICAgICAgIC8vIHVwZGF0ZSBIU0xcbiAgICAgICAgdGhpcy5oc3YgPSB0aGlzLnJnYjJoc3YodGhpcy5yZ2IuciwgdGhpcy5yZ2IuZywgdGhpcy5yZ2IuYik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY2hhbmdlIGNvbG9yXG4gICAgICogQHBhcmFtIGNvbG9yIHBhcnNlIGNvbG9yIDogbmFtZSwgI0hFWEEsIHJnYmEoKVxuICAgICAqIEByZXR1cm5zIGludCBjb2xvclxuICAgICAqL1xuICAgIHByaXZhdGUgcGFyc2VDb2xvcihjb2xvcjogc3RyaW5nKSB7XG5cbiAgICAgICAgLy8gc2kgbmFtZWQgY29sb3JcbiAgICAgICAgaWYgKENvbG9yYXRpb24uY29sb3JzTmFtZVtjb2xvcl0pIHtcbiAgICAgICAgICAgIGNvbG9yID0gQ29sb3JhdGlvbi5jb2xvcnNOYW1lW2NvbG9yXTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHZhbGlkYXRlIGhleGEgc3RyaW5nICNSR0IsICNSR0JBLCAjUlJHR0JCLCAjUlJHR0JCQUEgKGlnbm9yZSBhbHBoYSlcbiAgICAgICAgY29uc3QgbWF0Y2hIZXggPSBTdHJpbmcoY29sb3IpLm1hdGNoKHBhdHRlcm4uaGV4YSk7XG4gICAgICAgIGxldCBpbnRDb2xvcjtcbiAgICAgICAgaWYgKG1hdGNoSGV4KSB7XG4gICAgICAgICAgICBjb25zdCBoZXhhID0gbWF0Y2hIZXhbNF1cbiAgICAgICAgICAgICAgICA/IG1hdGNoSGV4WzJdICsgbWF0Y2hIZXhbNF1cbiAgICAgICAgICAgICAgICA6IG1hdGNoSGV4WzJdWzBdICsgbWF0Y2hIZXhbMl1bMF0gKyBtYXRjaEhleFsyXVsxXSArIG1hdGNoSGV4WzJdWzFdICsgbWF0Y2hIZXhbMl1bMl0gKyBtYXRjaEhleFsyXVsyXTtcblxuICAgICAgICAgICAgaW50Q29sb3IgPSBwYXJzZUludChoZXhhLCAxNik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW50Q29sb3IgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gdmFsaWRhdGUgcmdiKCkgLyByZ2JhKClcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoUmdiID0gU3RyaW5nKGNvbG9yKS5tYXRjaChwYXR0ZXJuLnJnYmEpO1xuICAgICAgICAgICAgaWYgKG1hdGNoUmdiKSB7XG4gICAgICAgICAgICAgICAgaW50Q29sb3IgPSB0aGlzLnJnYlRvSW50KHBhcnNlSW50KG1hdGNoUmdiWzFdLCAxMCksIHBhcnNlSW50KG1hdGNoUmdiWzRdLCAxMCksIHBhcnNlSW50KG1hdGNoUmdiWzddLCAxMCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGludENvbG9yID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIHZhbGlkYXRlIGhzdigpIC8gaHN2YSgpXG4gICAgICAgICAgICBjb25zdCBtYXRjaEhzdiA9IFN0cmluZyhjb2xvcikubWF0Y2gocGF0dGVybi5oc3ZhKTtcbiAgICAgICAgICAgIGlmIChtYXRjaEhzdikge1xuICAgICAgICAgICAgICAgIGludENvbG9yID0gdGhpcy5oc3ZUb0ludChwYXJzZUludChtYXRjaEhzdlsxXSwgMTApLCBwYXJzZUludChtYXRjaEhzdls0XSwgMTApLCBwYXJzZUludChtYXRjaEhzdls3XSwgMTApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbnRDb2xvcjtcblxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNvbnZlcnQgSFNWL0hTTCB0byBpbnQgUkdCXG4gICAgICogQHBhcmFtIGh1ZSBIdWUgWzAsIDM2MF1cbiAgICAgKiBAcGFyYW0gc2F0dXJhdGlvbiBTYXR1cmF0aW9uIFswLCAxMDBdXG4gICAgICogQHBhcmFtIHZhbHVlIFZhbHVlIFswLCAxMDBdXG4gICAgICogQHJldHVybnMgaW50IFJHQlxuICAgICAqIEBzZWUgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjM1MzIxMS9oc2wtdG8tcmdiLWNvbG9yLWNvbnZlcnNpb25cbiAgICAgKi9cbiAgICBwcml2YXRlIGhzdlRvSW50KGh1ZTogbnVtYmVyLCBzYXR1cmF0aW9uOiBudW1iZXIsIHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBzYXR1cmF0aW9uID0gTWF0aC5tYXgoMCwgc2F0dXJhdGlvbik7XG5cbiAgICAgICAgY29uc3QgcyA9IHNhdHVyYXRpb24gLyAxMDA7XG4gICAgICAgIGNvbnN0IHYgPSB2YWx1ZSAvIDEwMDtcbiAgICAgICAgY29uc3QgaCA9IGh1ZSAvIDM2MDtcblxuICAgICAgICBpZiAoc2F0dXJhdGlvbiA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmdiVG9JbnQodiAqIDI1NiwgdiAqIDI1NiwgdiAqIDI1Nik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBxID0gdiA8IDAuNSA/IHYgKiAoMSArIHMpIDogdiArIHMgLSB2ICogcztcbiAgICAgICAgY29uc3QgcCA9IDIgKiB2IC0gcTtcbiAgICAgICAgY29uc3QgciA9IHRoaXMuaHVlMnJnYihwLCBxLCBoICsgMSAvIDMpO1xuICAgICAgICBjb25zdCBnID0gdGhpcy5odWUycmdiKHAsIHEsIGgpO1xuICAgICAgICBjb25zdCBiID0gdGhpcy5odWUycmdiKHAsIHEsIGggLSAxIC8gMyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucmdiVG9JbnQoTWF0aC5yb3VuZChyICogMjU1KSwgTWF0aC5yb3VuZChnICogMjU1KSwgTWF0aC5yb3VuZChiICogMjU1KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaHVlIGNvbG9yIGNhbGN1bGF0aW9uXG4gICAgICogQHBhcmFtIHAgbnVtYmVyXG4gICAgICogQHBhcmFtIHEgbnVtYmVyXG4gICAgICogQHBhcmFtIHQgbnVtYmVyXG4gICAgICogQHJldHVybnMgaW50IGNvbG9yIFswLCAyNTVdXG4gICAgICovXG4gICAgcHJpdmF0ZSBodWUycmdiKHA6IG51bWJlciwgcTogbnVtYmVyLCB0OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBpZiAodCA8IDApIHsgdCArPSAxOyB9IGVsc2UgaWYgKHQgPiAxKSB7IHQgLT0gMTsgfVxuICAgICAgICBpZiAodCA8IDEgLyA2KSB7IHJldHVybiBwICsgKHEgLSBwKSAqIDYgKiB0OyB9XG4gICAgICAgIGlmICh0IDwgMSAvIDIpIHsgcmV0dXJuIHE7IH1cbiAgICAgICAgaWYgKHQgPCAyIC8gMykgeyByZXR1cm4gcCArIChxIC0gcCkgKiAoMiAvIDMgLSB0KSAqIDY7IH1cbiAgICAgICAgcmV0dXJuIHA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29udmVydCBSR0IgdG8gSFNWXG4gICAgICogQHBhcmFtIHIgWzAsIDI1NV1cbiAgICAgKiBAcGFyYW0gZyBbMCwgMjU1XVxuICAgICAqIEBwYXJhbSBiIFswLCAyNTVdXG4gICAgICogQHJldHVybnMgSFNWIGRhdGFcbiAgICAgKiBAc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzM5MTE4NTI4L3JnYi10by1oc2wtY29udmVyc2lvblxuICAgICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSFNMX2FuZF9IU1YjRm9ybWFsX2Rlcml2YXRpb25cbiAgICAgKi9cbiAgICBwcml2YXRlIHJnYjJoc3YocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcik6IEhTViB7XG5cbiAgICAgICAgLy8gY29udmVydCByLGcsYiBbMCwyNTVdIHJhbmdlIHRvIFswLDFdXG4gICAgICAgIHIgPSByIC8gMjU1O1xuICAgICAgICBnID0gZyAvIDI1NTtcbiAgICAgICAgYiA9IGIgLyAyNTU7XG5cbiAgICAgICAgLy8gZ2V0IHRoZSBtaW4gYW5kIG1heCBvZiByLGcsYlxuICAgICAgICBjb25zdCBtYXggPSBNYXRoLm1heChyLCBnLCBiKTtcbiAgICAgICAgY29uc3QgbWluID0gTWF0aC5taW4ociwgZywgYik7XG5cbiAgICAgICAgLy8gbGlnaHRuZXNzIGlzIHRoZSBhdmVyYWdlIG9mIHRoZSBsYXJnZXN0IGFuZCBzbWFsbGVzdCBjb2xvciBjb21wb25lbnRzXG4gICAgICAgIGNvbnN0IHZhbCA9IChtYXggKyBtaW4pIC8gMjtcbiAgICAgICAgbGV0IGh1ZTogbnVtYmVyO1xuICAgICAgICBsZXQgc2F0OiBudW1iZXI7XG5cbiAgICAgICAgaWYgKG1heCA9PT0gbWluKSB7IC8vIG5vIHNhdHVyYXRpb25cbiAgICAgICAgICAgIGh1ZSA9IDA7XG4gICAgICAgICAgICBzYXQgPSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYyA9IG1heCAtIG1pbjsgLy8gY2hyb21hXG4gICAgICAgICAgICAvLyBzYXR1cmF0aW9uIGlzIHNpbXBseSB0aGUgY2hyb21hIHNjYWxlZCB0byBmaWxsXG4gICAgICAgICAgICAvLyB0aGUgaW50ZXJ2YWwgWzAsIDFdIGZvciBldmVyeSBjb21iaW5hdGlvbiBvZiBodWUgYW5kIGxpZ2h0bmVzc1xuICAgICAgICAgICAgc2F0ID0gYyAvICgxIC0gTWF0aC5hYnMoMiAqIHZhbCAtIDEpKTtcbiAgICAgICAgICAgIHN3aXRjaCAobWF4KSB7XG4gICAgICAgICAgICAgICAgY2FzZSByOlxuICAgICAgICAgICAgICAgICAgICBodWUgPSAoZyAtIGIpIC8gYyArIChnIDwgYiA/IDYgOiAwKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBnOlxuICAgICAgICAgICAgICAgICAgICBodWUgPSAoYiAtIHIpIC8gYyArIDI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgYjpcbiAgICAgICAgICAgICAgICAgICAgaHVlID0gKHIgLSBnKSAvIGMgKyA0O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBoOiBNYXRoLnJvdW5kKGh1ZSAqIDYwKSwgIC8vIMKwXG4gICAgICAgICAgICBzOiBNYXRoLnJvdW5kKHNhdCAqIDEwMCksIC8vICVcbiAgICAgICAgICAgIHY6IE1hdGgucm91bmQodmFsICogMTAwKSAgLy8gJVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNvbnZlcnQgUkdCIGRhdGEgdG8gaW50IHZhbHVlXG4gICAgICogQHBhcmFtIHIgcmVkIFswLCAyNTVdXG4gICAgICogQHBhcmFtIGcgZ3JlZW4gWzAsIDI1NV1cbiAgICAgKiBAcGFyYW0gYiBibHVlIFswLCAyNTVdXG4gICAgICogQHJldHVybnMgaW50IHZhbHVlXG4gICAgICovXG4gICAgcHJpdmF0ZSByZ2JUb0ludChyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHIgKiAweDEwMDAwICsgZyAqIDB4MTAwICsgYjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBib3VuZCBhIHZhbHVlIGJldHdlZW4gdHdvIHZhbHVlc1xuICAgICAqIEBwYXJhbSB2YWx1ZSB2YWx1ZVxuICAgICAqIEBwYXJhbSBtaW4gbWluIHZhbHVlXG4gICAgICogQHBhcmFtIG1heCBtYXggdmFsdWVcbiAgICAgKiBAcGFyYW0gZGVmYXVsdFZhbHVlIHJlcGxhY2UgYW4gaW52YWxpZCB2dmFsdWVcbiAgICAgKiBAcmV0dXJucyB2YWx1ZSBiZXR3ZWVuIG1pbiBhbmQgbWF4XG4gICAgICovXG4gICAgcHJpdmF0ZSBtaW5tYXgodmFsdWU6IG51bWJlciwgbWluOiBudW1iZXIsIG1heDogbnVtYmVyLCBkZWZhdWx0VmFsdWUgPSAwKSB7XG4gICAgICAgIHJldHVybiBNYXRoLm1pbihNYXRoLm1heCh2YWx1ZSB8fCBkZWZhdWx0VmFsdWUsIG1pbiksIG1heCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogdGVzdCBpcyBpbnRDb2xvciBpcyB2YWxpZCBmb3IgcmV0dXJuIGEgdmxhdWVcbiAgICAgKiBAcGFyYW0gdmFsdWUgY2FsbGJhY2sgb2YgdmFsdWVcbiAgICAgKiBAcmV0dXJucyB2YWx1ZSBvciBudWxsXG4gICAgICovXG4gICAgcHJpdmF0ZSB2YWx1ZTxMPih2YWx1ZTogKCkgPT4gTCk6IEwge1xuICAgICAgICByZXR1cm4gIWlzTmFOKHRoaXMuaW50Q29sb3IpID8gdmFsdWUoKSA6IG51bGw7XG4gICAgfVxuXG59XG4iXX0= | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbG9yYXRpb24tbGliLyIsInNvdXJjZXMiOlsibGliL2NvbG9yYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0lBR00sT0FBTyxHQUFHO0lBQ1osSUFBSSxFQUFFLDZEQUE2RDtJQUNuRSxJQUFJLEVBQUUsaUhBQWlIO0lBQ3ZILElBQUksRUFBRSxxSEFBcUg7Q0FDOUg7Ozs7QUFFRCx5QkFJQzs7Ozs7O0lBSGtDLGdCQUFVOzs7OztJQUNSLGdCQUFVOzs7OztJQUNWLGdCQUFVOzs7OztBQUUvQyx5QkFJQzs7Ozs7O0lBSGtDLGdCQUFVOzs7OztJQUNILGdCQUFVOzs7OztJQUNKLGdCQUFVOzs7OztBQUUxRCwrQkFhQzs7Ozs7O0lBWHFDLHNCQUFXOzs7OztJQUNULHNCQUFXOzs7OztJQUNYLHNCQUFXOzs7OztJQUVuQixzQkFBVzs7Ozs7SUFDSixzQkFBVzs7Ozs7SUFDTCxzQkFBVzs7Ozs7SUFFckIsK0JBQW9COzs7OztJQUNqQyw4QkFBbUI7Ozs7O0lBQ0wsZ0NBQXFCOztBQUd6RDtJQWtESSxvQkFBbUIsS0FBYTtRQUFiLFVBQUssR0FBTCxLQUFLLENBQVE7UUFIeEIsUUFBRyxHQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNoQyxRQUFHLEdBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBR3BDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQ7O09BRUc7Ozs7O0lBQ0gsMEJBQUs7Ozs7SUFBTDtRQUNJLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxD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U0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUzs7UUFFeEcsYUFBYSxFQUFFLFNBQVM7S0FDM0IsQ0FBQztJQXVVTixpQkFBQztDQUFBLEFBblhELElBbVhDO1NBblhZLFVBQVU7Ozs7OztJQUtuQixzQkF1Q0U7Ozs7O0lBRUYsOEJBQXlCOzs7OztJQUN6Qix5QkFBd0M7Ozs7O0lBQ3hDLHlCQUF3Qzs7SUFFNUIsMkJBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyB0c2xpbnQ6ZGlzYWJsZTpuby1iaXR3aXNlXG5cbmNvbnN0IHBhdHRlcm4gPSB7XG4gICAgaGV4YTogL15eIz8oKFtcXGRhLWZdezN9KSgoW1xcZGEtZl17M30pKFtcXGRhLWZdezJ9KT98W1xcZGEtZl17MX0pPykkL2ksXG4gICAgcmdiYTogL15yZ2JhP1xcKChbXFxkXSooXFwuW1xcZF0rKT8pKCw/XFxzKnxcXHMrKShbXFxkXSooXFwuW1xcZF0rKT8pKCw/XFxzKnxcXHMrKShbXFxkXSooXFwuW1xcZF0rKT8pKCgsXFxzKikoW1xcZF0qKFxcLltcXGRdKyk/KSk/XFwpJC9pLFxuICAgIGhzdmE6IC9eaHNsYT9cXCgoW1xcZF0qKFxcLltcXGRdKyk/KSgsP1xccyp8XFxzKykoW1xcZF0qKFxcLltcXGRdKyk/KVxcJSgsP1xccyp8XFxzKykoW1xcZF0qKFxcLltcXGRdKyk/KVxcJSgoLFxccyopKFtcXGRdKihcXC5bXFxkXSspPykpP1xcKSQvaVxufTtcblxuZXhwb3J0IGludGVyZmFjZSBSR0Ige1xuICAgIC8qKiBSZWQgY29sb3IgdmFsdWUgWzAsMjU1XSAqLyByOiBudW1iZXI7XG4gICAgLyoqIEdyZWVuIGNvbG9yIHZhbHVlIFswLDI1NV0gKi8gZzogbnVtYmVyO1xuICAgIC8qKiBCbHVlIGNvbG9yIHZhbHVlIFswLDI1NV0gKi8gIGI6IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgSFNWIHtcbiAgICAvKiogSHVlIGNvbG9yIHZhbHVlIFswLDM2MF0gKi8gaDogbnVtYmVyO1xuICAgIC8qKiBTYWx1cmF0aW9uIGNvbG9yIHZhbHVlIFswLDEwMF0gKi8gczogbnVtYmVyO1xuICAgIC8qKiBWYWx1ZS9saWdodG5lc3MgY29sb3IgdmFsdWUgWzAsMTAwXSAqLyAgdjogbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBDb2xvckRhdGEge1xuICAgIC8vIFJHQlxuICAgIC8qKiBSZWQgY29sb3IgdmFsdWUgWy0yNTYsMjU1XSAqLyByPzogbnVtYmVyO1xuICAgIC8qKiBHcmVlbiBjb2xvciB2YWx1ZSBbLTI1NiwyNTVdICovIGc/OiBudW1iZXI7XG4gICAgLyoqIEJsdWUgY29sb3IgdmFsdWUgWy0yNTYsMjU1XSAqLyAgYj86IG51bWJlcjtcbiAgICAvLyBIU1YvSFNMXG4gICAgLyoqIEh1ZSB2YWx1ZSBbLTM2MCwzNjBdICovIGg/OiBudW1iZXI7XG4gICAgLyoqIFNhbHVyYXRpb24gdmFsdWUgWy0xMDAsMTAwXSAqLyBzPzogbnVtYmVyO1xuICAgIC8qKiBWYWx1ZS9saWdodG5lc3MgdmFsdWUgWy0xMDAsMTAwXSAqLyAgdj86IG51bWJlcjtcbiAgICAvLyBPdGhlclxuICAgIC8qKiBsdW1pbm9zaXR5IHZhbHVlIFstMSwxXSAqLyBsdW1pbm9zaXR5PzogbnVtYmVyO1xuICAgIC8qKiBjb2xvciBtYXNrICovIG1hc2tDb2xvcj86IHN0cmluZztcbiAgICAvKiogY29sb3IgbWFzayBvcGFjaXR5IFswLDFdICovIG1hc2tPcGFjaXR5PzogbnVtYmVyO1xufVxuXG5leHBvcnQgY2xhc3MgQ29sb3JhdGlvbiB7XG5cbiAgICAvKipcbiAgICAgKiBDU1MgY29sb3IgbGlzdFxuICAgICAqL1xuICAgIHN0YXRpYyBjb2xvcnNOYW1lOiBhbnkgPSB7XG4gICAgICAgIC8vIENTUyAxXG4gICAgICAgIGJsYWNrOiAnIzAwMDAwMCcsIHNpbHZlcjogJyNjMGMwYzAnLCBncmF5OiAnIzgwODA4MCcsIHdoaXRlOiAnI2ZmZmZmZicsIG1hcm9vbjogJyM4MDAwMDAnLCByZWQ6ICcjZmYwMDAwJyxcbiAgICAgICAgcHVycGxlOiAnIzgwMDA4MCcsIGZ1Y2hzaWE6ICcjZmYwMGZmJywgZ3JlZW46ICcjMDA4MDAwJywgbGltZTogJyMwMGZmMDAnLCBvbGl2ZTogJyM4MDgwMDAnLCB5ZWxsb3c6ICcjZmZmZjAwJyxcbiAgICAgICAgbmF2eTogJyMwMDAwODAnLCBibHVlOiAnIzAwMDBmZicsIHRlYWw6ICcjMDA4MDgwJywgYXF1YTogJyMwMGZmZmYnLFxuICAgICAgICAvLyBDU1MgMiAoUmV2aXNpb24gMSlcbiAgICAgICAgb3JhbmdlOiAnI2ZmYTUwMCcsXG4gICAgICAgIC8vIENTUyAzXG4gICAgICAgIGFsaWNlYmx1ZTogJyNmMGY4ZmYnLCBhbnRpcXVld2hpdGU6ICcjZmFlYmQ3JywgYXF1YW1hcmluZTogJyM3ZmZmZDQnLCBhenVyZTogJyNmMGZmZmYnLCBiZWlnZTogJyNmNWY1ZGMnLFxuICAgICAgICBiaXNxdWU6ICcjZmZlNGM0JywgYmxhbmNoZWRhbG1vbmQ6ICcjZmZlYmNkJywgYmx1ZXZpb2xldDogJyM4YTJiZTInLCBicm93bjogJyNhNTJhMmEnLCBidXJseXdvb2Q6ICcjZGViODg3JyxcbiAgICAgICAgY2FkZXRibHVlOiAnIzVmOWVhMCcsIGNoYXJ0cmV1c2U6ICcjN2ZmZjAwJywgY2hvY29sYXRlOiAnI2QyNjkxZScsIGNvcmFsOiAnI2ZmN2Y1MCcsIGNvcm5mbG93ZXJibHVlOiAnIzY0OTVlZCcsXG4gICAgICAgIGNvcm5zaWxrOiAnI2ZmZjhkYycsIGNyaW1zb246ICcjZGMxNDNjJywgY3lhbjogJyMwMGZmZmYnLCBkZWFxdWE6ICcjMDBmZmZmJywgZGFya2JsdWU6ICcjMDAwMDhiJyxcbiAgICAgICAgZGFya2N5YW46ICcjMDA4YjhiJywgZGFya2dvbGRlbnJvZDogJyNiODg2MGInLCBkYXJrZ3JheTogJyNhOWE5YTknLCBkYXJrZ3JlZW46ICcjMDA2NDAwJywgZGFya2dyZXk6ICcjYTlhOWE5JyxcbiAgICAgICAgZGFya2toYWtpOiAnI2JkYjc2YicsIGRhcmttYWdlbnRhOiAnIzhiMDA4YicsIGRhcmtvbGl2ZWdyZWVuOiAnIzU1NmIyZicsIGRhcmtvcmFuZ2U6ICcjZmY4YzAwJyxcbiAgICAgICAgZGFya29yY2hpZDogJyM5OTMyY2MnLCBkYXJrcmVkOiAnIzhiMDAwMCcsIGRhcmtzYWxtb246ICcjZTk5NjdhJywgZGFya3NlYWdyZWVuOiAnIzhmYmM4ZicsXG4gICAgICAgIGRhcmtzbGF0ZWJsdWU6ICcjNDgzZDhiJywgZGFya3NsYXRlZ3JheTogJyMyZjRmNGYnLCBkYXJrc2xhdGVncmV5OiAnIzJmNGY0ZicsIGRhcmt0dXJxdW9pc2U6ICcjMDBjZWQxJyxcbiAgICAgICAgZGFya3Zpb2xldDogJyM5NDAwZDMnLCBkZWVwcGluazogJyNmZjE0OTMnLCBkZWVwc2t5Ymx1ZTogJyMwMGJmZmYnLCBkaW1ncmF5OiAnIzY5Njk2OScsIGRpbWdyZXk6ICcjNjk2OTY5JyxcbiAgICAgICAgZG9kZ2VyYmx1ZTogJyMxZTkwZmYnLCBmaXJlYnJpY2s6ICcjYjIyMjIyJywgZmxvcmFsd2hpdGU6ICcjZmZmYWYwJywgZm9yZXN0Z3JlZW46ICcjMjI4YjIyJyxcbiAgICAgICAgZ2FpbnNib3JvOiAnI2RjZGNkYycsIGdob3N0d2hpdGU6ICcjZjhmOGZmJywgZ29sZDogJyNmZmQ3MDAnLCBnb2xkZW5yb2Q6ICcjZGFhNTIwJywgZ3JlZW55ZWxsb3c6ICcjYWRmZjJmJyxcbiAgICAgICAgZ3JleTogJyM4MDgwODAnLCBob25leWRldzogJyNmMGZmZjAnLCBob3RwaW5rOiAnI2ZmNjliNCcsIGluZGlhbnJlZDogJyNjZDVjNWMnLCBpbmRpZ286ICcjNGIwMDgyJyxcbiAgICAgICAgaXZvcnk6ICcjZmZmZmYwJywga2hha2k6ICcjZjBlNjhjJywgbGF2ZW5kZXI6ICcjZTZlNmZhJywgbGF2ZW5kZXJibHVzaDogJyNmZmYwZjUnLCBsYXduZ3JlZW46ICcjN2NmYzAwJyxcbiAgICAgICAgbGVtb25jaGlmZm9uOiAnI2ZmZmFjZCcsIGxpZ2h0Ymx1ZTogJyNhZGQ4ZTYnLCBsaWdodGNvcmFsOiAnI2YwODA4MCcsIGxpZ2h0Y3lhbjogJyNlMGZmZmYnLFxuICAgICAgICBsaWdodGdvbGRlbnJvZHllbGxvdzogJyNmYWZhZDInLCBsaWdodGdyYXk6ICcjZDNkM2QzJywgbGlnaHRncmVlbjogJyM5MGVlOTAnLCBsaWdodGdyZXk6ICcjZDNkM2QzJyxcbiAgICAgICAgbGlnaHRwaW5rOiAnI2ZmYjZjMScsIGxpZ2h0c2FsbW9uOiAnI2ZmYTA3YScsIGxpZ2h0c2VhZ3JlZW46ICcjMjBiMmFhJywgbGlnaHRza3libHVlOiAnIzg3Y2VmYScsXG4gICAgICAgIGxpZ2h0c2xhdGVncmF5OiAnIzc3ODg5OScsIGxpZ2h0c2xhdGVncmV5OiAnIzc3ODg5OScsIGxpZ2h0c3RlZWxibHVlOiAnI2IwYzRkZScsIGxpZ2h0eWVsbG93OiAnI2ZmZmZlMCcsXG4gICAgICAgIGxpbWVncmVlbjogJyMzMmNkMzInLCBsaW5lbjogJyNmYWYwZTYnLCBtYWdlbnRhOiAnI2ZmMDBmZicsIGRlZnVjaHNpYTogJyNmZjAwZmYnLCBtZWRpdW1hcXVhbWFyaW5lOiAnIzY2Y2RhYScsXG4gICAgICAgIG1lZGl1bWJsdWU6ICcjMDAwMGNkJywgbWVkaXVtb3JjaGlkOiAnI2JhNTVkMycsIG1lZGl1bXB1cnBsZTogJyM5MzcwZGInLCBtZWRpdW1zZWFncmVlbjogJyMzY2IzNzEnLFxuICAgICAgICBtZWRpdW1zbGF0ZWJsdWU6ICcjN2I2OGVlJywgbWVkaXVtc3ByaW5nZ3JlZW46ICcjMDBmYTlhJywgbWVkaXVtdHVycXVvaXNlOiAnIzQ4ZDFjYycsXG4gICAgICAgIG1lZGl1bXZpb2xldHJlZDogJyNjNzE1ODUnLCBtaWRuaWdodGJsdWU6ICcjMTkxOTcwJywgbWludGNyZWFtOiAnI2Y1ZmZmYScsIG1pc3R5cm9zZTogJyNmZmU0ZTEnLFxuICAgICAgICBtb2NjYXNpbjogJyNmZmU0YjUnLCBuYXZham93aGl0ZTogJyNmZmRlYWQnLCBvbGRsYWNlOiAnI2ZkZjVlNicsIG9saXZlZHJhYjogJyM2YjhlMjMnLCBvcmFuZ2VyZWQ6ICcjZmY0NTAwJyxcbiAgICAgICAgb3JjaGlkOiAnI2RhNzBkNicsIHBhbGVnb2xkZW5yb2Q6ICcjZWVlOGFhJywgcGFsZWdyZWVuOiAnIzk4ZmI5OCcsIHBhbGV0dXJxdW9pc2U6ICcjYWZlZWVlJyxcbiAgICAgICAgcGFsZXZpb2xldHJlZDogJyNkYjcwOTMnLCBwYXBheWF3aGlwOiAnI2ZmZWZkNScsIHBlYWNocHVmZjogJyNmZmRhYjknLCBwZXJ1OiAnI2NkODUzZicsIHBpbms6ICcjZmZjMGNiJyxcbiAgICAgICAgcGx1bTogJyNkZGEwZGQnLCBwb3dkZXJibHVlOiAnI2IwZTBlNicsIHJvc3licm93bjogJyNiYzhmOGYnLCByb3lhbGJsdWU6ICcjNDE2OWUxJywgc2FkZGxlYnJvd246ICcjOGI0NTEzJyxcbiAgICAgICAgc2FsbW9uOiAnI2ZhODA3MicsIHNhbmR5YnJvd246ICcjZjRhNDYwJywgc2VhZ3JlZW46ICcjMmU4YjU3Jywgc2Vhc2hlbGw6ICcjZmZmNWVlJywgc2llbm5hOiAnI2EwNTIyZCcsXG4gICAgICAgIHNreWJsdWU6ICcjODdjZWViJywgc2xhdGVibHVlOiAnIzZhNWFjZCcsIHNsYXRlZ3JheTogJyM3MDgwOTAnLCBzbGF0ZWdyZXk6ICcjNzA4MDkwJywgc25vdzogJyNmZmZhZmEnLFxuICAgICAgICBzcHJpbmdncmVlbjogJyMwMGZmN2YnLCBzdGVlbGJsdWU6ICcjNDY4MmI0JywgdGFuOiAnI2QyYjQ4YycsIHRoaXN0bGU6ICcjZDhiZmQ4JywgdG9tYXRvOiAnI2ZmNjM0NycsXG4gICAgICAgIHR1cnF1b2lzZTogJyM0MGUwZDAnLCB2aW9sZXQ6ICcjZWU4MmVlJywgd2hlYXQ6ICcjZjVkZWIzJywgd2hpdGVzbW9rZTogJyNmNWY1ZjUnLCB5ZWxsb3dncmVlbjogJyM5YWNkMzInLFxuICAgICAgICAvLyBDU1MgNFxuICAgICAgICByZWJlY2NhcHVycGxlOiAnIzY2MzM5OSdcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBpbnRDb2xvcjogbnVtYmVyO1xuICAgIHByaXZhdGUgcmdiOiBSR0IgPSB7IHI6IDAsIGc6IDAsIGI6IDAgfTtcbiAgICBwcml2YXRlIGhzdjogSFNWID0geyBoOiAwLCBzOiAwLCB2OiAwIH07XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgY29sb3I6IHN0cmluZykge1xuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmVpbml0IHRvIGJhc2UgY29sb3JcbiAgICAgKi9cbiAgICByZXNldCgpIHtcbiAgICAgICAgdGhpcy5pbnRDb2xvciA9IHRoaXMucGFyc2VDb2xvcih0aGlzLmNvbG9yKTtcbiAgICAgICAgdGhpcy51cGRhdGVDb2xvcigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNoYW5nZSB0aGUgbHVtaW5vc2l0eSBvZiBhIGNvbG9yXG4gICAgICogQHBhcmFtIGx1bSB2YWx1ZSBiZXR3ZWVuIC0xIGFuZCAxXG4gICAgICogQHJldHVybnMgQ29sb3JhdGlvblxuICAgICAqL1xuICAgIGNoYW5nZUx1bWlub3NpdHkobHVtOiBudW1iZXIpOiBDb2xvcmF0aW9uIHtcbiAgICAgICAgbHVtID0gdGhpcy5taW5tYXgobHVtLCAtMSwgMSk7XG4gICAgICAgIHRoaXMubWFza0NvbG9yKGx1bSA8IDAgPyAnIzAwMCcgOiAnI0ZGRicsIE1hdGguYWJzKGx1bSkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBhZGQgY29sb3Igd2l0aCBhIG1hcmtcbiAgICAgKiBAcGFyYW0gY29sb3IgYWRkaXRpb25hbCBjb2xvclxuICAgICAqIEBwYXJhbSBvcGFjaXR5IHZhbHVlIG9mIG9wYWNpdHkgYmV0d2VlbiAwIGFuZCAxIGZvciB0aGUgYWRkaXRpb25hbCBjb2xvclxuICAgICAqIEByZXR1cm5zIENvbG9yYXRpb25cbiAgICAgKi9cbiAgICBtYXNrQ29sb3IoY29sb3I6IHN0cmluZywgb3BhY2l0eTogbnVtYmVyID0gMSk6IENvbG9yYXRpb24ge1xuXG4gICAgICAgIGNvbnN0IGJhc2VDb2xvciA9IHRoaXMuaW50Q29sb3I7XG4gICAgICAgIGNvbnN0IGFkZGl0aW9uYWxDb2xvciA9IHRoaXMucGFyc2VDb2xvcihjb2xvcik7XG5cbiAgICAgICAgY29uc3QgbHVtID0gdGhpcy5taW5tYXgob3BhY2l0eSwgMCwgMSk7XG5cbiAgICAgICAgY29uc3QgUiA9IGJhc2VDb2xvciA+PiAxNjtcbiAgICAgICAgY29uc3QgRyA9IGJhc2VDb2xvciA+PiA4ICYgMHgwMEZGO1xuICAgICAgICBjb25zdCBCID0gYmFzZUNvbG9yICYgMHgwMDAwRkY7XG5cbiAgICAgICAgdGhpcy5pbnRDb2xvciA9IHRoaXMucmdiVG9JbnQoXG4gICAgICAgICAgICBNYXRoLnJvdW5kKCgoYWRkaXRpb25hbENvbG9yID4+IDE2KSAtIFIpICogbHVtKSArIFIsXG4gICAgICAgICAgICBNYXRoLnJvdW5kKCgoYWRkaXRpb25hbENvbG9yID4+IDggJiAweDAwRkYpIC0gRykgKiBsdW0pICsgRyxcbiAgICAgICAgICAgIE1hdGgucm91bmQoKChhZGRpdGlvbmFsQ29sb3IgJiAweDAwMDBGRikgLSBCKSAqIGx1bSkgKyBCXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMudXBkYXRlQ29sb3IoKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY2hhbmdlIGNvbG9yIHdpdGggY29sb3IgcGFyYW1ldGVyc1xuICAgICAqIEBwYXJhbSBjb2xvckRhdGEgYWRkaXRpb25uYWwgcGFyYW1ldGVyc1xuICAgICAqIEByZXR1cm5zIENvbG9yYXRpb25cbiAgICAgKi9cbiAgICBhZGRDb2xvcihjb2xvckRhdGE6IENvbG9yRGF0YSkge1xuICAgICAgICBpZiAoY29sb3JEYXRhLmx1bWlub3NpdHkpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlTHVtaW5vc2l0eShjb2xvckRhdGEubHVtaW5vc2l0eSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29sb3JEYXRhLm1hc2tDb2xvcikge1xuICAgICAgICAgICAgdGhpcy5tYXNrQ29sb3IoY29sb3JEYXRhLm1hc2tDb2xvciwgdGhpcy5taW5tYXgoY29sb3JEYXRhLm1hc2tPcGFjaXR5IHx8IDAsIDAsIDEpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2xvckRhdGEuciB8fCBjb2xvckRhdGEuZyB8fCBjb2xvckRhdGEuYikge1xuICAgICAgICAgICAgaWYgKGNvbG9yRGF0YS5yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2codGhpcy5yZ2IuciwgY29sb3JEYXRhLnIsIHRoaXMucmdiLnIgKyBjb2xvckRhdGEucik7XG4gICAgICAgICAgICAgICAgdGhpcy5yZ2IuciA9IHRoaXMubWlubWF4KHRoaXMucmdiLnIgKyAoK2NvbG9yRGF0YS5yKSwgMCwgMjU1KTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnJnYi5yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2xvckRhdGEuZykge1xuICAgICAgICAgICAgICAgIHRoaXMucmdiLmcgPSB0aGlzLm1pbm1heCh0aGlzLnJnYi5nICsgKCtjb2xvckRhdGEuZyksIDAsIDI1NSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29sb3JEYXRhLmIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJnYi5yID0gdGhpcy5taW5tYXgodGhpcy5yZ2IuYiArICgrY29sb3JEYXRhLmIpLCAwLCAyNTUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pbnRDb2xvciA9IHRoaXMucmdiVG9JbnQodGhpcy5yZ2IuciwgdGhpcy5yZ2IuZywgdGhpcy5yZ2IuYik7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbG9yKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29sb3JEYXRhLmggfHwgY29sb3JEYXRhLnMgfHwgY29sb3JEYXRhLnYpIHtcbiAgICAgICAgICAgIGlmIChjb2xvckRhdGEuaCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaHN2LmggPSAodGhpcy5oc3YuaCArICgrY29sb3JEYXRhLmgpICsgMzYwKSAlIDM2MDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjb2xvckRhdGEucykge1xuICAgICAgICAgICAgICAgIHRoaXMuaHN2LnMgPSB0aGlzLm1pbm1heCh0aGlzLmhzdi5zICsgKCtjb2xvckRhdGEucyksIDAsIDEwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29sb3JEYXRhLnYpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhzdi52ID0gdGhpcy5taW5tYXgodGhpcy5oc3YudiArICgrY29sb3JEYXRhLnYpLCAwLCAxMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pbnRDb2xvciA9IHRoaXMuaHN2VG9JbnQodGhpcy5oc3YuaCwgdGhpcy5oc3YucywgdGhpcy5oc3Yudik7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbG9yKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSR0IgaW5mb3JtYXRpb25zXG4gICAgICogQHJldHVybnMgUkdCXG4gICAgICovXG4gICAgZ2V0UkdCKCk6IFJHQiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlPFJHQj4oKCkgPT4gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5yZ2IpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIU1YgaW5mb3JtYXRpb25zXG4gICAgICogQHJldHVybnMgSFNWXG4gICAgICovXG4gICAgZ2V0SFNWKCk6IEhTViB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlPEhTVj4oKCkgPT4gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5oc3YpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjb2xvciBpbiAjSEVYIGZvcm1hdFxuICAgICAqIEByZXR1cm5zIHN0cmluZyBvZiAjSEVYXG4gICAgICovXG4gICAgdG9IRVgoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU8c3RyaW5nPigoKSA9PiAnIycgKyAoMHgxMDAwMDAwICsgdGhpcy5pbnRDb2xvcikudG9TdHJpbmcoMTYpLnNsaWNlKDEpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjb2xvciBpbiBIVkwoKSBmb3JtYXRcbiAgICAgKiBAcmV0dXJucyBzdHJpbmcgb2YgSFZMKEgsIFMlLCBWJSlcbiAgICAgKi9cbiAgICB0b0hTTCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTxzdHJpbmc+KCgpID0+IGBoc2woJHt0aGlzLmhzdi5ofSwgJHt0aGlzLmhzdi5zfSUsICR7dGhpcy5oc3Yudn0lKWApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNvbG9yIGluIFJHQigpIGZvcm1hdFxuICAgICAqIEByZXR1cm5zIHN0cmluZyBvZiBSR0IoUiwgRywgQilcbiAgICAgKi9cbiAgICB0b1JHQigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTxzdHJpbmc+KCgpID0+IGByZ2IoJHt0aGlzLnJnYi5yfSwgJHt0aGlzLnJnYi5nfSwgJHt0aGlzLnJnYi5ifSlgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiB1cGRhdGUgY29sb3JzIGRhdGEgOiBSR0IgYW5kIEhTTFxuICAgICAqL1xuICAgIHByaXZhdGUgdXBkYXRlQ29sb3IoKSB7XG5cbiAgICAgICAgLy8gdXBkYXRlIFJHQlxuICAgICAgICB0aGlzLnJnYi5yID0gdGhpcy5pbnRDb2xvciA+PiAxNjtcbiAgICAgICAgdGhpcy5yZ2IuZyA9IHRoaXMuaW50Q29sb3IgPj4gOCAmIDB4MDBGRjtcbiAgICAgICAgdGhpcy5yZ2IuYiA9IHRoaXMuaW50Q29sb3IgJiAweDAwMDBGRjtcblxuICAgICAgICAvLyB1cGRhdGUgSFNMXG4gICAgICAgIHRoaXMuaHN2ID0gdGhpcy5yZ2IyaHN2KHRoaXMucmdiLnIsIHRoaXMucmdiLmcsIHRoaXMucmdiLmIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNoYW5nZSBjb2xvclxuICAgICAqIEBwYXJhbSBjb2xvciBwYXJzZSBjb2xvciA6IG5hbWUsICNIRVhBLCByZ2JhKClcbiAgICAgKiBAcmV0dXJucyBpbnQgY29sb3JcbiAgICAgKi9cbiAgICBwcml2YXRlIHBhcnNlQ29sb3IoY29sb3I6IHN0cmluZykge1xuXG4gICAgICAgIC8vIHNpIG5hbWVkIGNvbG9yXG4gICAgICAgIGlmIChDb2xvcmF0aW9uLmNvbG9yc05hbWVbY29sb3JdKSB7XG4gICAgICAgICAgICBjb2xvciA9IENvbG9yYXRpb24uY29sb3JzTmFtZVtjb2xvcl07XG4gICAgICAgIH1cblxuICAgICAgICAvLyB2YWxpZGF0ZSBoZXhhIHN0cmluZyAjUkdCLCAjUkdCQSwgI1JSR0dCQiwgI1JSR0dCQkFBIChpZ25vcmUgYWxwaGEpXG4gICAgICAgIGNvbnN0IG1hdGNoSGV4ID0gU3RyaW5nKGNvbG9yKS5tYXRjaChwYXR0ZXJuLmhleGEpO1xuICAgICAgICBsZXQgaW50Q29sb3I7XG4gICAgICAgIGlmIChtYXRjaEhleCkge1xuICAgICAgICAgICAgY29uc3QgaGV4YSA9IG1hdGNoSGV4WzRdXG4gICAgICAgICAgICAgICAgPyBtYXRjaEhleFsyXSArIG1hdGNoSGV4WzRdXG4gICAgICAgICAgICAgICAgOiBtYXRjaEhleFsyXVswXSArIG1hdGNoSGV4WzJdWzBdICsgbWF0Y2hIZXhbMl1bMV0gKyBtYXRjaEhleFsyXVsxXSArIG1hdGNoSGV4WzJdWzJdICsgbWF0Y2hIZXhbMl1bMl07XG5cbiAgICAgICAgICAgIGludENvbG9yID0gcGFyc2VJbnQoaGV4YSwgMTYpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGludENvbG9yID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIHZhbGlkYXRlIHJnYigpIC8gcmdiYSgpXG4gICAgICAgICAgICBjb25zdCBtYXRjaFJnYiA9IFN0cmluZyhjb2xvcikubWF0Y2gocGF0dGVybi5yZ2JhKTtcbiAgICAgICAgICAgIGlmIChtYXRjaFJnYikge1xuICAgICAgICAgICAgICAgIGludENvbG9yID0gdGhpcy5yZ2JUb0ludChwYXJzZUludChtYXRjaFJnYlsxXSwgMTApLCBwYXJzZUludChtYXRjaFJnYls0XSwgMTApLCBwYXJzZUludChtYXRjaFJnYls3XSwgMTApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbnRDb2xvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyB2YWxpZGF0ZSBoc3YoKSAvIGhzdmEoKVxuICAgICAgICAgICAgY29uc3QgbWF0Y2hIc3YgPSBTdHJpbmcoY29sb3IpLm1hdGNoKHBhdHRlcm4uaHN2YSk7XG4gICAgICAgICAgICBpZiAobWF0Y2hIc3YpIHtcbiAgICAgICAgICAgICAgICBpbnRDb2xvciA9IHRoaXMuaHN2VG9JbnQocGFyc2VJbnQobWF0Y2hIc3ZbMV0sIDEwKSwgcGFyc2VJbnQobWF0Y2hIc3ZbNF0sIDEwKSwgcGFyc2VJbnQobWF0Y2hIc3ZbN10sIDEwKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW50Q29sb3I7XG5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjb252ZXJ0IEhTVi9IU0wgdG8gaW50IFJHQlxuICAgICAqIEBwYXJhbSBodWUgSHVlIFswLCAzNjBdXG4gICAgICogQHBhcmFtIHNhdHVyYXRpb24gU2F0dXJhdGlvbiBbMCwgMTAwXVxuICAgICAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSBbMCwgMTAwXVxuICAgICAqIEByZXR1cm5zIGludCBSR0JcbiAgICAgKiBAc2VlIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzIzNTMyMTEvaHNsLXRvLXJnYi1jb2xvci1jb252ZXJzaW9uXG4gICAgICovXG4gICAgcHJpdmF0ZSBoc3ZUb0ludChodWU6IG51bWJlciwgc2F0dXJhdGlvbjogbnVtYmVyLCB2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgc2F0dXJhdGlvbiA9IE1hdGgubWF4KDAsIHNhdHVyYXRpb24pO1xuXG4gICAgICAgIGNvbnN0IHMgPSBzYXR1cmF0aW9uIC8gMTAwO1xuICAgICAgICBjb25zdCB2ID0gdmFsdWUgLyAxMDA7XG4gICAgICAgIGNvbnN0IGggPSBodWUgLyAzNjA7XG5cbiAgICAgICAgaWYgKHNhdHVyYXRpb24gPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJnYlRvSW50KHYgKiAyNTYsIHYgKiAyNTYsIHYgKiAyNTYpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcSA9IHYgPCAwLjUgPyB2ICogKDEgKyBzKSA6IHYgKyBzIC0gdiAqIHM7XG4gICAgICAgIGNvbnN0IHAgPSAyICogdiAtIHE7XG4gICAgICAgIGNvbnN0IHIgPSB0aGlzLmh1ZTJyZ2IocCwgcSwgaCArIDEgLyAzKTtcbiAgICAgICAgY29uc3QgZyA9IHRoaXMuaHVlMnJnYihwLCBxLCBoKTtcbiAgICAgICAgY29uc3QgYiA9IHRoaXMuaHVlMnJnYihwLCBxLCBoIC0gMSAvIDMpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnJnYlRvSW50KE1hdGgucm91bmQociAqIDI1NSksIE1hdGgucm91bmQoZyAqIDI1NSksIE1hdGgucm91bmQoYiAqIDI1NSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGh1ZSBjb2xvciBjYWxjdWxhdGlvblxuICAgICAqIEBwYXJhbSBwIG51bWJlclxuICAgICAqIEBwYXJhbSBxIG51bWJlclxuICAgICAqIEBwYXJhbSB0IG51bWJlclxuICAgICAqIEByZXR1cm5zIGludCBjb2xvciBbMCwgMjU1XVxuICAgICAqL1xuICAgIHByaXZhdGUgaHVlMnJnYihwOiBudW1iZXIsIHE6IG51bWJlciwgdDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKHQgPCAwKSB7IHQgKz0gMTsgfSBlbHNlIGlmICh0ID4gMSkgeyB0IC09IDE7IH1cbiAgICAgICAgaWYgKHQgPCAxIC8gNikgeyByZXR1cm4gcCArIChxIC0gcCkgKiA2ICogdDsgfVxuICAgICAgICBpZiAodCA8IDEgLyAyKSB7IHJldHVybiBxOyB9XG4gICAgICAgIGlmICh0IDwgMiAvIDMpIHsgcmV0dXJuIHAgKyAocSAtIHApICogKDIgLyAzIC0gdCkgKiA2OyB9XG4gICAgICAgIHJldHVybiBwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnZlcnQgUkdCIHRvIEhTVlxuICAgICAqIEBwYXJhbSByIFswLCAyNTVdXG4gICAgICogQHBhcmFtIGcgWzAsIDI1NV1cbiAgICAgKiBAcGFyYW0gYiBbMCwgMjU1XVxuICAgICAqIEByZXR1cm5zIEhTViBkYXRhXG4gICAgICogQHNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zOTExODUyOC9yZ2ItdG8taHNsLWNvbnZlcnNpb25cbiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hTTF9hbmRfSFNWI0Zvcm1hbF9kZXJpdmF0aW9uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZ2IyaHN2KHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIpOiBIU1Yge1xuXG4gICAgICAgIC8vIGNvbnZlcnQgcixnLGIgWzAsMjU1XSByYW5nZSB0byBbMCwxXVxuICAgICAgICByID0gciAvIDI1NTtcbiAgICAgICAgZyA9IGcgLyAyNTU7XG4gICAgICAgIGIgPSBiIC8gMjU1O1xuXG4gICAgICAgIC8vIGdldCB0aGUgbWluIGFuZCBtYXggb2YgcixnLGJcbiAgICAgICAgY29uc3QgbWF4ID0gTWF0aC5tYXgociwgZywgYik7XG4gICAgICAgIGNvbnN0IG1pbiA9IE1hdGgubWluKHIsIGcsIGIpO1xuXG4gICAgICAgIC8vIGxpZ2h0bmVzcyBpcyB0aGUgYXZlcmFnZSBvZiB0aGUgbGFyZ2VzdCBhbmQgc21hbGxlc3QgY29sb3IgY29tcG9uZW50c1xuICAgICAgICBjb25zdCB2YWwgPSAobWF4ICsgbWluKSAvIDI7XG4gICAgICAgIGxldCBodWU6IG51bWJlcjtcbiAgICAgICAgbGV0IHNhdDogbnVtYmVyO1xuXG4gICAgICAgIGlmIChtYXggPT09IG1pbikgeyAvLyBubyBzYXR1cmF0aW9uXG4gICAgICAgICAgICBodWUgPSAwO1xuICAgICAgICAgICAgc2F0ID0gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGMgPSBtYXggLSBtaW47IC8vIGNocm9tYVxuICAgICAgICAgICAgLy8gc2F0dXJhdGlvbiBpcyBzaW1wbHkgdGhlIGNocm9tYSBzY2FsZWQgdG8gZmlsbFxuICAgICAgICAgICAgLy8gdGhlIGludGVydmFsIFswLCAxXSBmb3IgZXZlcnkgY29tYmluYXRpb24gb2YgaHVlIGFuZCBsaWdodG5lc3NcbiAgICAgICAgICAgIHNhdCA9IGMgLyAoMSAtIE1hdGguYWJzKDIgKiB2YWwgLSAxKSk7XG4gICAgICAgICAgICBzd2l0Y2ggKG1heCkge1xuICAgICAgICAgICAgICAgIGNhc2UgcjpcbiAgICAgICAgICAgICAgICAgICAgaHVlID0gKGcgLSBiKSAvIGMgKyAoZyA8IGIgPyA2IDogMCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgZzpcbiAgICAgICAgICAgICAgICAgICAgaHVlID0gKGIgLSByKSAvIGMgKyAyO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIGI6XG4gICAgICAgICAgICAgICAgICAgIGh1ZSA9IChyIC0gZykgLyBjICsgNDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaDogTWF0aC5yb3VuZChodWUgKiA2MCksICAvLyDCsFxuICAgICAgICAgICAgczogTWF0aC5yb3VuZChzYXQgKiAxMDApLCAvLyAlXG4gICAgICAgICAgICB2OiBNYXRoLnJvdW5kKHZhbCAqIDEwMCkgIC8vICVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjb252ZXJ0IFJHQiBkYXRhIHRvIGludCB2YWx1ZVxuICAgICAqIEBwYXJhbSByIHJlZCBbMCwgMjU1XVxuICAgICAqIEBwYXJhbSBnIGdyZWVuIFswLCAyNTVdXG4gICAgICogQHBhcmFtIGIgYmx1ZSBbMCwgMjU1XVxuICAgICAqIEByZXR1cm5zIGludCB2YWx1ZVxuICAgICAqL1xuICAgIHByaXZhdGUgcmdiVG9JbnQocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiByICogMHgxMDAwMCArIGcgKiAweDEwMCArIGI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogYm91bmQgYSB2YWx1ZSBiZXR3ZWVuIHR3byB2YWx1ZXNcbiAgICAgKiBAcGFyYW0gdmFsdWUgdmFsdWVcbiAgICAgKiBAcGFyYW0gbWluIG1pbiB2YWx1ZVxuICAgICAqIEBwYXJhbSBtYXggbWF4IHZhbHVlXG4gICAgICogQHBhcmFtIGRlZmF1bHRWYWx1ZSByZXBsYWNlIGFuIGludmFsaWQgdnZhbHVlXG4gICAgICogQHJldHVybnMgdmFsdWUgYmV0d2VlbiBtaW4gYW5kIG1heFxuICAgICAqL1xuICAgIHByaXZhdGUgbWlubWF4KHZhbHVlOiBudW1iZXIsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlciwgZGVmYXVsdFZhbHVlID0gMCkge1xuICAgICAgICByZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgodmFsdWUgfHwgZGVmYXVsdFZhbHVlLCBtaW4pLCBtYXgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHRlc3QgaXMgaW50Q29sb3IgaXMgdmFsaWQgZm9yIHJldHVybiBhIHZsYXVlXG4gICAgICogQHBhcmFtIHZhbHVlIGNhbGxiYWNrIG9mIHZhbHVlXG4gICAgICogQHJldHVybnMgdmFsdWUgb3IgbnVsbFxuICAgICAqL1xuICAgIHByaXZhdGUgdmFsdWU8TD4odmFsdWU6ICgpID0+IEwpOiBMIHtcbiAgICAgICAgcmV0dXJuICFpc05hTih0aGlzLmludENvbG9yKSA/IHZhbHVlKCkgOiBudWxsO1xuICAgIH1cblxufVxuIl19 |
@@ -20,3 +20,10 @@ /** | ||
this.hsv = { h: 0, s: 0, v: 0 }; | ||
this.intColor = this.parseColor(color); | ||
this.reset(); | ||
} | ||
/** | ||
* reinit to base color | ||
* @return {?} | ||
*/ | ||
reset() { | ||
this.intColor = this.parseColor(this.color); | ||
this.updateColor(); | ||
@@ -23,0 +30,0 @@ } |
@@ -17,6 +17,20 @@ /** | ||
this.hsv = { h: 0, s: 0, v: 0 }; | ||
this.intColor = this.parseColor(color); | ||
this.updateColor(); | ||
this.reset(); | ||
} | ||
/** | ||
* reinit to base color | ||
*/ | ||
/** | ||
* reinit to base color | ||
* @return {?} | ||
*/ | ||
Coloration.prototype.reset = /** | ||
* reinit to base color | ||
* @return {?} | ||
*/ | ||
function () { | ||
this.intColor = this.parseColor(this.color); | ||
this.updateColor(); | ||
}; | ||
/** | ||
* change the luminosity of a color | ||
@@ -23,0 +37,0 @@ * @param lum value between -1 and 1 |
@@ -33,2 +33,6 @@ export interface RGB { | ||
/** | ||
* reinit to base color | ||
*/ | ||
reset(): void; | ||
/** | ||
* change the luminosity of a color | ||
@@ -35,0 +39,0 @@ * @param lum value between -1 and 1 |
{ | ||
"name": "coloration-lib", | ||
"version": "0.0.3", | ||
"version": "0.0.4", | ||
"license": "MIT", | ||
@@ -5,0 +5,0 @@ "repository": { |
@@ -5,4 +5,2 @@ [![npm version](https://badge.fury.io/js/coloration-lib.svg)](https://badge.fury.io/js/coloration-lib) [![Downloads](https://img.shields.io/npm/dm/coloration-lib.svg)](https://www.npmjs.com/package/coloration-lib) [![MIT license](https://img.shields.io/badge/license-MIT-blue.svg)](https://git.ikilote.net/angular/coloration/raw/master/LICENSE) | ||
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.0.4. | ||
## Installation | ||
@@ -9,0 +7,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
306728
3005
65