@overlap.ai/react-video-subtitles 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -593,7 +593,7 @@ var SubtitleText = /*#__PURE__*/memo(function (_ref) {
593
593
  // Calculate adjusted font size based on text width
594
594
  var adjustedFontSize = useMemo(function () {
595
595
  var maxLineWidth = style.maxLineWidth || 1080; // Default max width
596
- var baseFontSize = style.fontSize * 2 || 64; // Default font size
596
+ var baseFontSize = style.fontSize || 64; // Default font size
597
597
  var fontFamily = style.fontFamily || 'Arial';
598
598
  var textWidth = estimateTextWidth(text, baseFontSize, fontFamily);
599
599
  if (textWidth > maxLineWidth) {
@@ -2506,4 +2506,4 @@ var subtitlePresets = {
2506
2506
  };
2507
2507
 
2508
2508
  export { SubtitleText, Subtitles, subtitlePresets, useAdjustedPhrases, useAdjustedPosition, useStyleConfig, useTextStyle };
2509
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXNtLmpzIiwic291cmNlcyI6WyIuLi9ub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2LmpzIiwiLi4vc3JjL2NvbXBvbmVudHMvU3VidGl0bGVUZXh0LmpzeCIsIi4uL3NyYy91dGlscy9maW5kUGhyYXNlc0luUmFuZ2UudHMiLCIuLi9zcmMvaG9va3MvdXNlVGV4dFN0eWxlLmpzIiwiLi4vc3JjL2hvb2tzL2ZvbnRMb2FkZXIuanMiLCIuLi9zcmMvY29tcG9uZW50cy9TdWJ0aXRsZXMudHN4IiwiLi4vc3JjL2hvb2tzL3VzZVN0eWxlQ29uZmlnLnRzIiwiLi4vc3JjL2hvb2tzL3VzZUFkanVzdGVkUG9zaXRpb24uanMiLCIuLi9zcmMvaG9va3MvdXNlQWRqdXN0ZWRQaHJhc2VzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSwgU3VwcHJlc3NlZEVycm9yLCBTeW1ib2wsIEl0ZXJhdG9yICovXHJcblxyXG52YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcclxuICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcclxuICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XHJcbiAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxyXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcclxuICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXHJcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcclxuICAgICAgICB9XHJcbiAgICByZXR1cm4gdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcclxuICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xyXG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcclxuICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3BhcmFtKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2VzRGVjb3JhdGUoY3RvciwgZGVzY3JpcHRvckluLCBkZWNvcmF0b3JzLCBjb250ZXh0SW4sIGluaXRpYWxpemVycywgZXh0cmFJbml0aWFsaXplcnMpIHtcclxuICAgIGZ1bmN0aW9uIGFjY2VwdChmKSB7IGlmIChmICE9PSB2b2lkIDAgJiYgdHlwZW9mIGYgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkZ1bmN0aW9uIGV4cGVjdGVkXCIpOyByZXR1cm4gZjsgfVxyXG4gICAgdmFyIGtpbmQgPSBjb250ZXh0SW4ua2luZCwga2V5ID0ga2luZCA9PT0gXCJnZXR0ZXJcIiA/IFwiZ2V0XCIgOiBraW5kID09PSBcInNldHRlclwiID8gXCJzZXRcIiA6IFwidmFsdWVcIjtcclxuICAgIHZhciB0YXJnZXQgPSAhZGVzY3JpcHRvckluICYmIGN0b3IgPyBjb250ZXh0SW5bXCJzdGF0aWNcIl0gPyBjdG9yIDogY3Rvci5wcm90b3R5cGUgOiBudWxsO1xyXG4gICAgdmFyIGRlc2NyaXB0b3IgPSBkZXNjcmlwdG9ySW4gfHwgKHRhcmdldCA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBjb250ZXh0SW4ubmFtZSkgOiB7fSk7XHJcbiAgICB2YXIgXywgZG9uZSA9IGZhbHNlO1xyXG4gICAgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICB2YXIgY29udGV4dCA9IHt9O1xyXG4gICAgICAgIGZvciAodmFyIHAgaW4gY29udGV4dEluKSBjb250ZXh0W3BdID0gcCA9PT0gXCJhY2Nlc3NcIiA/IHt9IDogY29udGV4dEluW3BdO1xyXG4gICAgICAgIGZvciAodmFyIHAgaW4gY29udGV4dEluLmFjY2VzcykgY29udGV4dC5hY2Nlc3NbcF0gPSBjb250ZXh0SW4uYWNjZXNzW3BdO1xyXG4gICAgICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIgPSBmdW5jdGlvbiAoZikgeyBpZiAoZG9uZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZFwiKTsgZXh0cmFJbml0aWFsaXplcnMucHVzaChhY2NlcHQoZiB8fCBudWxsKSk7IH07XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9ICgwLCBkZWNvcmF0b3JzW2ldKShraW5kID09PSBcImFjY2Vzc29yXCIgPyB7IGdldDogZGVzY3JpcHRvci5nZXQsIHNldDogZGVzY3JpcHRvci5zZXQgfSA6IGRlc2NyaXB0b3Jba2V5XSwgY29udGV4dCk7XHJcbiAgICAgICAgaWYgKGtpbmQgPT09IFwiYWNjZXNzb3JcIikge1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0ID09PSB2b2lkIDApIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsIHx8IHR5cGVvZiByZXN1bHQgIT09IFwib2JqZWN0XCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QgZXhwZWN0ZWRcIik7XHJcbiAgICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5nZXQpKSBkZXNjcmlwdG9yLmdldCA9IF87XHJcbiAgICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5zZXQpKSBkZXNjcmlwdG9yLnNldCA9IF87XHJcbiAgICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5pbml0KSkgaW5pdGlhbGl6ZXJzLnVuc2hpZnQoXyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKF8gPSBhY2NlcHQocmVzdWx0KSkge1xyXG4gICAgICAgICAgICBpZiAoa2luZCA9PT0gXCJmaWVsZFwiKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTtcclxuICAgICAgICAgICAgZWxzZSBkZXNjcmlwdG9yW2tleV0gPSBfO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0YXJnZXQpIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGNvbnRleHRJbi5uYW1lLCBkZXNjcmlwdG9yKTtcclxuICAgIGRvbmUgPSB0cnVlO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcnVuSW5pdGlhbGl6ZXJzKHRoaXNBcmcsIGluaXRpYWxpemVycywgdmFsdWUpIHtcclxuICAgIHZhciB1c2VWYWx1ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbml0aWFsaXplcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB2YWx1ZSA9IHVzZVZhbHVlID8gaW5pdGlhbGl6ZXJzW2ldLmNhbGwodGhpc0FyZywgdmFsdWUpIDogaW5pdGlhbGl6ZXJzW2ldLmNhbGwodGhpc0FyZyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdXNlVmFsdWUgPyB2YWx1ZSA6IHZvaWQgMDtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3Byb3BLZXkoeCkge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB4ID09PSBcInN5bWJvbFwiID8geCA6IFwiXCIuY29uY2F0KHgpO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc2V0RnVuY3Rpb25OYW1lKGYsIG5hbWUsIHByZWZpeCkge1xyXG4gICAgaWYgKHR5cGVvZiBuYW1lID09PSBcInN5bWJvbFwiKSBuYW1lID0gbmFtZS5kZXNjcmlwdGlvbiA/IFwiW1wiLmNvbmNhdChuYW1lLmRlc2NyaXB0aW9uLCBcIl1cIikgOiBcIlwiO1xyXG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmLCBcIm5hbWVcIiwgeyBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiBwcmVmaXggPyBcIlwiLmNvbmNhdChwcmVmaXgsIFwiIFwiLCBuYW1lKSA6IG5hbWUgfSk7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XHJcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnID0gT2JqZWN0LmNyZWF0ZSgodHlwZW9mIEl0ZXJhdG9yID09PSBcImZ1bmN0aW9uXCIgPyBJdGVyYXRvciA6IE9iamVjdCkucHJvdG90eXBlKTtcclxuICAgIHJldHVybiBnLm5leHQgPSB2ZXJiKDApLCBnW1widGhyb3dcIl0gPSB2ZXJiKDEpLCBnW1wicmV0dXJuXCJdID0gdmVyYigyKSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xyXG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcclxuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XHJcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cclxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2NyZWF0ZUJpbmRpbmcgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xyXG4gICAgaWYgKCFkZXNjIHx8IChcImdldFwiIGluIGRlc2MgPyAhbS5fX2VzTW9kdWxlIDogZGVzYy53cml0YWJsZSB8fCBkZXNjLmNvbmZpZ3VyYWJsZSkpIHtcclxuICAgICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xyXG4gICAgfVxyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCBkZXNjKTtcclxufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICBvW2syXSA9IG1ba107XHJcbn0pO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXhwb3J0U3RhcihtLCBvKSB7XHJcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIHApKSBfX2NyZWF0ZUJpbmRpbmcobywgbSwgcCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XHJcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xyXG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XHJcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XHJcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xyXG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XHJcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XHJcbiAgICBpZiAoIW0pIHJldHVybiBvO1xyXG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XHJcbiAgICBmaW5hbGx5IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbi8qKiBAZGVwcmVjYXRlZCAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWQoKSB7XHJcbiAgICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcclxuICAgICAgICBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbi8qKiBAZGVwcmVjYXRlZCAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheXMoKSB7XHJcbiAgICBmb3IgKHZhciBzID0gMCwgaSA9IDAsIGlsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGlsOyBpKyspIHMgKz0gYXJndW1lbnRzW2ldLmxlbmd0aDtcclxuICAgIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKylcclxuICAgICAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKylcclxuICAgICAgICAgICAgcltrXSA9IGFbal07XHJcbiAgICByZXR1cm4gcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXkodG8sIGZyb20sIHBhY2spIHtcclxuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xyXG4gICAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xyXG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0KHYpIHtcclxuICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0dlbmVyYXRvcih0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xyXG4gICAgcmV0dXJuIGkgPSBPYmplY3QuY3JlYXRlKCh0eXBlb2YgQXN5bmNJdGVyYXRvciA9PT0gXCJmdW5jdGlvblwiID8gQXN5bmNJdGVyYXRvciA6IE9iamVjdCkucHJvdG90eXBlKSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiLCBhd2FpdFJldHVybiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIGF3YWl0UmV0dXJuKGYpIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUodikudGhlbihmLCByZWplY3QpOyB9OyB9XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaWYgKGdbbl0pIHsgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgaWYgKGYpIGlbbl0gPSBmKGlbbl0pOyB9IH1cclxuICAgIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgfVxyXG4gICAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkgeyByZXN1bWUoXCJuZXh0XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7IHJlc3VtZShcInRocm93XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHsgaWYgKGYodiksIHEuc2hpZnQoKSwgcS5sZW5ndGgpIHJlc3VtZShxWzBdWzBdLCBxWzBdWzFdKTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0RlbGVnYXRvcihvKSB7XHJcbiAgICB2YXIgaSwgcDtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiwgZnVuY3Rpb24gKGUpIHsgdGhyb3cgZTsgfSksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBmYWxzZSB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIG0gPSBvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgaTtcclxuICAgIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIGQsIHYpIHsgUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZnVuY3Rpb24odikgeyByZXNvbHZlKHsgdmFsdWU6IHYsIGRvbmU6IGQgfSk7IH0sIHJlamVjdCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWFrZVRlbXBsYXRlT2JqZWN0KGNvb2tlZCwgcmF3KSB7XHJcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxyXG4gICAgcmV0dXJuIGNvb2tlZDtcclxufTtcclxuXHJcbnZhciBfX3NldE1vZHVsZURlZmF1bHQgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBcImRlZmF1bHRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdiB9KTtcclxufSkgOiBmdW5jdGlvbihvLCB2KSB7XHJcbiAgICBvW1wiZGVmYXVsdFwiXSA9IHY7XHJcbn07XHJcblxyXG52YXIgb3duS2V5cyA9IGZ1bmN0aW9uKG8pIHtcclxuICAgIG93bktleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiAobykge1xyXG4gICAgICAgIHZhciBhciA9IFtdO1xyXG4gICAgICAgIGZvciAodmFyIGsgaW4gbykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBrKSkgYXJbYXIubGVuZ3RoXSA9IGs7XHJcbiAgICAgICAgcmV0dXJuIGFyO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBvd25LZXlzKG8pO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0U3Rhcihtb2QpIHtcclxuICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XHJcbiAgICB2YXIgcmVzdWx0ID0ge307XHJcbiAgICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgPSBvd25LZXlzKG1vZCksIGkgPSAwOyBpIDwgay5sZW5ndGg7IGkrKykgaWYgKGtbaV0gIT09IFwiZGVmYXVsdFwiKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGtbaV0pO1xyXG4gICAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIGtpbmQgPT09IFwibVwiID8gZiA6IGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEluKHN0YXRlLCByZWNlaXZlcikge1xyXG4gICAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XHJcbiAgICByZXR1cm4gdHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciA9PT0gc3RhdGUgOiBzdGF0ZS5oYXMocmVjZWl2ZXIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hZGREaXNwb3NhYmxlUmVzb3VyY2UoZW52LCB2YWx1ZSwgYXN5bmMpIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdm9pZCAwKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZC5cIik7XHJcbiAgICAgICAgdmFyIGRpc3Bvc2UsIGlubmVyO1xyXG4gICAgICAgIGlmIChhc3luYykge1xyXG4gICAgICAgICAgICBpZiAoIVN5bWJvbC5hc3luY0Rpc3Bvc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNEaXNwb3NlIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgICAgICAgICAgZGlzcG9zZSA9IHZhbHVlW1N5bWJvbC5hc3luY0Rpc3Bvc2VdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGlzcG9zZSA9PT0gdm9pZCAwKSB7XHJcbiAgICAgICAgICAgIGlmICghU3ltYm9sLmRpc3Bvc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuZGlzcG9zZSBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICAgICAgICAgIGRpc3Bvc2UgPSB2YWx1ZVtTeW1ib2wuZGlzcG9zZV07XHJcbiAgICAgICAgICAgIGlmIChhc3luYykgaW5uZXIgPSBkaXNwb3NlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIGRpc3Bvc2UgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBub3QgZGlzcG9zYWJsZS5cIik7XHJcbiAgICAgICAgaWYgKGlubmVyKSBkaXNwb3NlID0gZnVuY3Rpb24oKSB7IHRyeSB7IGlubmVyLmNhbGwodGhpcyk7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIFByb21pc2UucmVqZWN0KGUpOyB9IH07XHJcbiAgICAgICAgZW52LnN0YWNrLnB1c2goeyB2YWx1ZTogdmFsdWUsIGRpc3Bvc2U6IGRpc3Bvc2UsIGFzeW5jOiBhc3luYyB9KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGFzeW5jKSB7XHJcbiAgICAgICAgZW52LnN0YWNrLnB1c2goeyBhc3luYzogdHJ1ZSB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZTtcclxuXHJcbn1cclxuXHJcbnZhciBfU3VwcHJlc3NlZEVycm9yID0gdHlwZW9mIFN1cHByZXNzZWRFcnJvciA9PT0gXCJmdW5jdGlvblwiID8gU3VwcHJlc3NlZEVycm9yIDogZnVuY3Rpb24gKGVycm9yLCBzdXBwcmVzc2VkLCBtZXNzYWdlKSB7XHJcbiAgICB2YXIgZSA9IG5ldyBFcnJvcihtZXNzYWdlKTtcclxuICAgIHJldHVybiBlLm5hbWUgPSBcIlN1cHByZXNzZWRFcnJvclwiLCBlLmVycm9yID0gZXJyb3IsIGUuc3VwcHJlc3NlZCA9IHN1cHByZXNzZWQsIGU7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kaXNwb3NlUmVzb3VyY2VzKGVudikge1xyXG4gICAgZnVuY3Rpb24gZmFpbChlKSB7XHJcbiAgICAgICAgZW52LmVycm9yID0gZW52Lmhhc0Vycm9yID8gbmV3IF9TdXBwcmVzc2VkRXJyb3IoZSwgZW52LmVycm9yLCBcIkFuIGVycm9yIHdhcyBzdXBwcmVzc2VkIGR1cmluZyBkaXNwb3NhbC5cIikgOiBlO1xyXG4gICAgICAgIGVudi5oYXNFcnJvciA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB2YXIgciwgcyA9IDA7XHJcbiAgICBmdW5jdGlvbiBuZXh0KCkge1xyXG4gICAgICAgIHdoaWxlIChyID0gZW52LnN0YWNrLnBvcCgpKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXIuYXN5bmMgJiYgcyA9PT0gMSkgcmV0dXJuIHMgPSAwLCBlbnYuc3RhY2sucHVzaChyKSwgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihuZXh0KTtcclxuICAgICAgICAgICAgICAgIGlmIChyLmRpc3Bvc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gci5kaXNwb3NlLmNhbGwoci52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHIuYXN5bmMpIHJldHVybiBzIHw9IDIsIFByb21pc2UucmVzb2x2ZShyZXN1bHQpLnRoZW4obmV4dCwgZnVuY3Rpb24oZSkgeyBmYWlsKGUpOyByZXR1cm4gbmV4dCgpOyB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgcyB8PSAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBmYWlsKGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzID09PSAxKSByZXR1cm4gZW52Lmhhc0Vycm9yID8gUHJvbWlzZS5yZWplY3QoZW52LmVycm9yKSA6IFByb21pc2UucmVzb2x2ZSgpO1xyXG4gICAgICAgIGlmIChlbnYuaGFzRXJyb3IpIHRocm93IGVudi5lcnJvcjtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXh0KCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3Jld3JpdGVSZWxhdGl2ZUltcG9ydEV4dGVuc2lvbihwYXRoLCBwcmVzZXJ2ZUpzeCkge1xyXG4gICAgaWYgKHR5cGVvZiBwYXRoID09PSBcInN0cmluZ1wiICYmIC9eXFwuXFwuP1xcLy8udGVzdChwYXRoKSkge1xyXG4gICAgICAgIHJldHVybiBwYXRoLnJlcGxhY2UoL1xcLih0c3gpJHwoKD86XFwuZCk/KSgoPzpcXC5bXi4vXSs/KT8pXFwuKFtjbV0/KXRzJC9pLCBmdW5jdGlvbiAobSwgdHN4LCBkLCBleHQsIGNtKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0c3ggPyBwcmVzZXJ2ZUpzeCA/IFwiLmpzeFwiIDogXCIuanNcIiA6IGQgJiYgKCFleHQgfHwgIWNtKSA/IG0gOiAoZCArIGV4dCArIFwiLlwiICsgY20udG9Mb3dlckNhc2UoKSArIFwianNcIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGF0aDtcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gICAgX19leHRlbmRzOiBfX2V4dGVuZHMsXHJcbiAgICBfX2Fzc2lnbjogX19hc3NpZ24sXHJcbiAgICBfX3Jlc3Q6IF9fcmVzdCxcclxuICAgIF9fZGVjb3JhdGU6IF9fZGVjb3JhdGUsXHJcbiAgICBfX3BhcmFtOiBfX3BhcmFtLFxyXG4gICAgX19lc0RlY29yYXRlOiBfX2VzRGVjb3JhdGUsXHJcbiAgICBfX3J1bkluaXRpYWxpemVyczogX19ydW5Jbml0aWFsaXplcnMsXHJcbiAgICBfX3Byb3BLZXk6IF9fcHJvcEtleSxcclxuICAgIF9fc2V0RnVuY3Rpb25OYW1lOiBfX3NldEZ1bmN0aW9uTmFtZSxcclxuICAgIF9fbWV0YWRhdGE6IF9fbWV0YWRhdGEsXHJcbiAgICBfX2F3YWl0ZXI6IF9fYXdhaXRlcixcclxuICAgIF9fZ2VuZXJhdG9yOiBfX2dlbmVyYXRvcixcclxuICAgIF9fY3JlYXRlQmluZGluZzogX19jcmVhdGVCaW5kaW5nLFxyXG4gICAgX19leHBvcnRTdGFyOiBfX2V4cG9ydFN0YXIsXHJcbiAgICBfX3ZhbHVlczogX192YWx1ZXMsXHJcbiAgICBfX3JlYWQ6IF9fcmVhZCxcclxuICAgIF9fc3ByZWFkOiBfX3NwcmVhZCxcclxuICAgIF9fc3ByZWFkQXJyYXlzOiBfX3NwcmVhZEFycmF5cyxcclxuICAgIF9fc3ByZWFkQXJyYXk6IF9fc3ByZWFkQXJyYXksXHJcbiAgICBfX2F3YWl0OiBfX2F3YWl0LFxyXG4gICAgX19hc3luY0dlbmVyYXRvcjogX19hc3luY0dlbmVyYXRvcixcclxuICAgIF9fYXN5bmNEZWxlZ2F0b3I6IF9fYXN5bmNEZWxlZ2F0b3IsXHJcbiAgICBfX2FzeW5jVmFsdWVzOiBfX2FzeW5jVmFsdWVzLFxyXG4gICAgX19tYWtlVGVtcGxhdGVPYmplY3Q6IF9fbWFrZVRlbXBsYXRlT2JqZWN0LFxyXG4gICAgX19pbXBvcnRTdGFyOiBfX2ltcG9ydFN0YXIsXHJcbiAgICBfX2ltcG9ydERlZmF1bHQ6IF9faW1wb3J0RGVmYXVsdCxcclxuICAgIF9fY2xhc3NQcml2YXRlRmllbGRHZXQ6IF9fY2xhc3NQcml2YXRlRmllbGRHZXQsXHJcbiAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0OiBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0LFxyXG4gICAgX19jbGFzc1ByaXZhdGVGaWVsZEluOiBfX2NsYXNzUHJpdmF0ZUZpZWxkSW4sXHJcbiAgICBfX2FkZERpc3Bvc2FibGVSZXNvdXJjZTogX19hZGREaXNwb3NhYmxlUmVzb3VyY2UsXHJcbiAgICBfX2Rpc3Bvc2VSZXNvdXJjZXM6IF9fZGlzcG9zZVJlc291cmNlcyxcclxuICAgIF9fcmV3cml0ZVJlbGF0aXZlSW1wb3J0RXh0ZW5zaW9uOiBfX3Jld3JpdGVSZWxhdGl2ZUltcG9ydEV4dGVuc2lvbixcclxufTtcclxuIiwiaW1wb3J0IFJlYWN0LHsgbWVtbywgdXNlTWVtbywgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBzcHJpbmcsIHJhbmRvbSwgdXNlQ3VycmVudEZyYW1lIH0gZnJvbSBcInJlbW90aW9uXCI7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byBlc3RpbWF0ZSB0ZXh0IHdpZHRoXG5jb25zdCBlc3RpbWF0ZVRleHRXaWR0aCA9ICh0ZXh0LCBmb250U2l6ZSwgZm9udEZhbWlseSkgPT4ge1xuICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICBjb250ZXh0LmZvbnQgPSBgJHtmb250U2l6ZX1weCAke2ZvbnRGYW1pbHl9YDtcbiAgcmV0dXJuIGNvbnRleHQubWVhc3VyZVRleHQodGV4dCkud2lkdGg7XG59O1xuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gZ2VuZXJhdGUgb3V0bGluZSBzaGFkb3dcbmNvbnN0IGdlbmVyYXRlT3V0bGluZVNoYWRvdyA9ICgoKSA9PiB7XG4gIGNvbnN0IGNhY2hlID0gbmV3IE1hcCgpO1xuICBcbiAgcmV0dXJuIChjb2xvciwgd2lkdGgsIG91dGxpbmVTdHlsZSA9IFwicm91bmRcIikgPT4ge1xuICAgIGNvbnN0IGtleSA9IGAke2NvbG9yfS0ke3dpZHRofS0ke291dGxpbmVTdHlsZX1gO1xuICAgIGlmIChjYWNoZS5oYXMoa2V5KSkge1xuICAgICAgcmV0dXJuIGNhY2hlLmdldChrZXkpO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBzaGFkb3dzID0gW107XG4gICAgY29uc3QgcGFyc2VkV2lkdGggPSBwYXJzZUludCh3aWR0aCwgMTApO1xuICAgIFxuICAgIGlmIChvdXRsaW5lU3R5bGUgPT09IFwiYW5ndWxhclwiKSB7XG4gICAgICAvLyBDcmVhdGUgc2hhcnAgY29ybmVycyBieSB1c2luZyBwZXJwZW5kaWN1bGFyIGxpbmVzXG4gICAgICAvLyBUb3AsIHJpZ2h0LCBib3R0b20sIGxlZnRcbiAgICAgIHNoYWRvd3MucHVzaChgMCAtJHtwYXJzZWRXaWR0aH1weCAwICR7Y29sb3J9YCk7ICAvLyBUb3BcbiAgICAgIHNoYWRvd3MucHVzaChgJHtwYXJzZWRXaWR0aH1weCAwIDAgJHtjb2xvcn1gKTsgICAvLyBSaWdodFxuICAgICAgc2hhZG93cy5wdXNoKGAwICR7cGFyc2VkV2lkdGh9cHggMCAke2NvbG9yfWApOyAgIC8vIEJvdHRvbVxuICAgICAgc2hhZG93cy5wdXNoKGAtJHtwYXJzZWRXaWR0aH1weCAwIDAgJHtjb2xvcn1gKTsgIC8vIExlZnRcbiAgICAgIFxuICAgICAgLy8gQWRkIGRpYWdvbmFsIHBvaW50cyBmb3IgY29ybmVyc1xuICAgICAgc2hhZG93cy5wdXNoKGAke3BhcnNlZFdpZHRofXB4IC0ke3BhcnNlZFdpZHRofXB4IDAgJHtjb2xvcn1gKTsgIC8vIFRvcC1yaWdodFxuICAgICAgc2hhZG93cy5wdXNoKGAke3BhcnNlZFdpZHRofXB4ICR7cGFyc2VkV2lkdGh9cHggMCAke2NvbG9yfWApOyAgIC8vIEJvdHRvbS1yaWdodFxuICAgICAgc2hhZG93cy5wdXNoKGAtJHtwYXJzZWRXaWR0aH1weCAke3BhcnNlZFdpZHRofXB4IDAgJHtjb2xvcn1gKTsgIC8vIEJvdHRvbS1sZWZ0XG4gICAgICBzaGFkb3dzLnB1c2goYC0ke3BhcnNlZFdpZHRofXB4IC0ke3BhcnNlZFdpZHRofXB4IDAgJHtjb2xvcn1gKTsgLy8gVG9wLWxlZnRcbiAgICAgIFxuICAgICAgLy8gQWRkIGludGVybWVkaWF0ZSBwb2ludHMgZm9yIGJldHRlciBjb3ZlcmFnZVxuICAgICAgY29uc3QgaGFsZldpZHRoID0gTWF0aC5yb3VuZChwYXJzZWRXaWR0aCAqIDAuNzA3MSk7IC8vIGNvcyg0NcKwKSDiiYggMC43MDcxXG4gICAgICBzaGFkb3dzLnB1c2goYCR7aGFsZldpZHRofXB4IC0ke3BhcnNlZFdpZHRofXB4IDAgJHtjb2xvcn1gKTsgICAgLy8gVG9wLXJpZ2h0IGludGVybWVkaWF0ZVxuICAgICAgc2hhZG93cy5wdXNoKGAke3BhcnNlZFdpZHRofXB4IC0ke2hhbGZXaWR0aH1weCAwICR7Y29sb3J9YCk7ICAgIC8vIFJpZ2h0LXRvcCBpbnRlcm1lZGlhdGVcbiAgICAgIHNoYWRvd3MucHVzaChgJHtwYXJzZWRXaWR0aH1weCAke2hhbGZXaWR0aH1weCAwICR7Y29sb3J9YCk7ICAgICAvLyBSaWdodC1ib3R0b20gaW50ZXJtZWRpYXRlXG4gICAgICBzaGFkb3dzLnB1c2goYCR7aGFsZldpZHRofXB4ICR7cGFyc2VkV2lkdGh9cHggMCAke2NvbG9yfWApOyAgICAgLy8gQm90dG9tLXJpZ2h0IGludGVybWVkaWF0ZVxuICAgICAgc2hhZG93cy5wdXNoKGAtJHtoYWxmV2lkdGh9cHggJHtwYXJzZWRXaWR0aH1weCAwICR7Y29sb3J9YCk7ICAgIC8vIEJvdHRvbS1sZWZ0IGludGVybWVkaWF0ZVxuICAgICAgc2hhZG93cy5wdXNoKGAtJHtwYXJzZWRXaWR0aH1weCAke2hhbGZXaWR0aH1weCAwICR7Y29sb3J9YCk7ICAgIC8vIExlZnQtYm90dG9tIGludGVybWVkaWF0ZVxuICAgICAgc2hhZG93cy5wdXNoKGAtJHtwYXJzZWRXaWR0aH1weCAtJHtoYWxmV2lkdGh9cHggMCAke2NvbG9yfWApOyAgIC8vIExlZnQtdG9wIGludGVybWVkaWF0ZVxuICAgICAgc2hhZG93cy5wdXNoKGAtJHtoYWxmV2lkdGh9cHggLSR7cGFyc2VkV2lkdGh9cHggMCAke2NvbG9yfWApOyAgIC8vIFRvcC1sZWZ0IGludGVybWVkaWF0ZVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPcmlnaW5hbCByb3VuZCBzdHlsZVxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzNjA7IGkgKz0gMjIuNSkge1xuICAgICAgICBjb25zdCBhbmdsZSA9IChpICogTWF0aC5QSSkgLyAxODA7XG4gICAgICAgIGNvbnN0IHggPSBNYXRoLnJvdW5kKE1hdGguY29zKGFuZ2xlKSAqIHBhcnNlZFdpZHRoKTtcbiAgICAgICAgY29uc3QgeSA9IE1hdGgucm91bmQoTWF0aC5zaW4oYW5nbGUpICogcGFyc2VkV2lkdGgpO1xuICAgICAgICBzaGFkb3dzLnB1c2goYCR7eH1weCAke3l9cHggMCAke2NvbG9yfWApO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBjb25zdCByZXN1bHQgPSBzaGFkb3dzLmpvaW4oJywnKTtcbiAgICBjYWNoZS5zZXQoa2V5LCByZXN1bHQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59KSgpO1xuXG5cbmV4cG9ydCBjb25zdCBTdWJ0aXRsZVRleHQgPSBtZW1vKCh7IFxuICB0ZXh0LCBcbiAgc3R5bGUsIFxuICBhbmltYXRpb25TdHlsZSwgXG4gIGZyYW1lLFxuICBzdGFydEZyYW1lLCBcbiAgcmFuZG9tQ29sb3JzLCBcbiAgd29yZHMsIFxuICBmcHMsXG4gIGhpZ2hsaWdodFdvcmRzQ29sb3IsXG59KSA9PiB7XG4gIGNvbnN0IHJlbGF0aXZlRnJhbWUgPSBmcmFtZSAtIHN0YXJ0RnJhbWU7XG4gIFxuICBjb25zdCBzY2FsZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChhbmltYXRpb25TdHlsZSA9PT0gXCJwbGVhc3VyZS1wb2QtYW5pbWF0aW9uXCIpIHtcbiAgICAgIHJldHVybiBzcHJpbmcoe1xuICAgICAgICBmcmFtZTogcmVsYXRpdmVGcmFtZSxcbiAgICAgICAgZnJvbTogMC45NSxcbiAgICAgICAgdG86IDEuMCwgIFxuICAgICAgICBmcHM6IDMwLFxuICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICBkYW1waW5nOiAyMCxcbiAgICAgICAgICBzdGlmZm5lc3M6IDQwMCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChhbmltYXRpb25TdHlsZSA9PT0gXCJzcHJpbmdcIikge1xuICAgICAgY29uc3Qgc3ByaW5nVmFsdWUgPSBzcHJpbmcoe1xuICAgICAgICBmcmFtZTogcmVsYXRpdmVGcmFtZSxcbiAgICAgICAgZnJvbTogMC45LFxuICAgICAgICB0bzogMSxcbiAgICAgICAgZnBzLFxuICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICBtYXNzOiAwLjUsXG4gICAgICAgICAgc3RpZmZuZXNzOiAxNTAsXG4gICAgICAgICAgZGFtcGluZzogMTUsXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHNwcmluZ1ZhbHVlO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gMTtcbiAgfSwgW2FuaW1hdGlvblN0eWxlLCByZWxhdGl2ZUZyYW1lLCBmcHNdKTtcblxuICBjb25zdCB0cmFuc2xhdGVZID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGFuaW1hdGlvblN0eWxlID09PSBcInNwcmluZ1wiKSB7XG4gICAgICBjb25zdCB0cmFuc2xhdGVWYWx1ZSA9IHNwcmluZyh7XG4gICAgICAgIGZyYW1lOiByZWxhdGl2ZUZyYW1lLFxuICAgICAgICBmcm9tOiAxMCxcbiAgICAgICAgdG86IDAsXG4gICAgICAgIGZwcyxcbiAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgbWFzczogMC41LFxuICAgICAgICAgIHN0aWZmbmVzczogMTUwLFxuICAgICAgICAgIGRhbXBpbmc6IDE1LFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0cmFuc2xhdGVWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH0sIFthbmltYXRpb25TdHlsZSwgcmVsYXRpdmVGcmFtZSwgZnBzXSk7XG5cblxuICAvLyBDYWxjdWxhdGUgYWRqdXN0ZWQgZm9udCBzaXplIGJhc2VkIG9uIHRleHQgd2lkdGhcbiAgY29uc3QgYWRqdXN0ZWRGb250U2l6ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IG1heExpbmVXaWR0aCA9IHN0eWxlLm1heExpbmVXaWR0aCB8fCAxMDgwOyAvLyBEZWZhdWx0IG1heCB3aWR0aFxuICAgIGNvbnN0IGJhc2VGb250U2l6ZSA9IHN0eWxlLmZvbnRTaXplICogMnx8IDY0OyAvLyBEZWZhdWx0IGZvbnQgc2l6ZVxuICAgIGNvbnN0IGZvbnRGYW1pbHkgPSBzdHlsZS5mb250RmFtaWx5IHx8ICdBcmlhbCc7XG4gICAgXG4gICAgY29uc3QgdGV4dFdpZHRoID0gZXN0aW1hdGVUZXh0V2lkdGgodGV4dCwgYmFzZUZvbnRTaXplLCBmb250RmFtaWx5KTtcbiAgICBpZiAodGV4dFdpZHRoID4gbWF4TGluZVdpZHRoKSB7XG4gICAgICBjb25zdCBzY2FsZUZhY3RvciA9IG1heExpbmVXaWR0aCAvIHRleHRXaWR0aDtcbiAgICAgIHJldHVybiBNYXRoLmZsb29yKGJhc2VGb250U2l6ZSAqIHNjYWxlRmFjdG9yKTtcbiAgICB9XG4gICAgcmV0dXJuIGJhc2VGb250U2l6ZTtcbiAgfSwgW3RleHQsIHN0eWxlLm1heExpbmVXaWR0aCwgc3R5bGUuZm9udFNpemUsIHN0eWxlLmZvbnRGYW1pbHldKTtcblxuICAvLyBDYWxjdWxhdGUgYWRqdXN0ZWQgZm9udCBzaXplIGJhc2VkIG9uIHRleHQgd2lkdGhcbiAgY29uc3QgYW5pbWF0ZWRTdHlsZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGJhc2VQYWRkaW5nID0gc3R5bGUuYmFja2dyb3VuZFBhZGRpbmcgfHwgJzE1JztcbiAgICBcbiAgICAvLyBDcmVhdGUgdGV4dCBzaGFkb3cgYmFzZWQgb24gaW50ZW5zaXR5XG4gICAgY29uc3Qgc2hhZG93SW50ZW5zaXR5ID0gc3R5bGUuc2hhZG93SW50ZW5zaXR5IHx8IDE7XG4gICAgY29uc3Qgc2hhZG93Q29sb3IgPSBzdHlsZS5zaGFkb3dDb2xvciB8fCAnIzAwMDAwMCc7XG4gICAgY29uc3Qgc2hhZG93Qmx1ciA9IHN0eWxlLnNoYWRvd0JsdXIgfHwgJzInO1xuICAgIGNvbnN0IHNoYWRvd09mZnNldFggPSBzdHlsZS5zaGFkb3dPZmZzZXRYIHx8ICcwJztcbiAgICBjb25zdCBzaGFkb3dPZmZzZXRZID0gc3R5bGUuc2hhZG93T2Zmc2V0WSB8fCAnMCc7XG4gICAgXG4gICAgLy8gU3RhY2sgbXVsdGlwbGUgc2hhZG93cyBiYXNlZCBvbiBpbnRlbnNpdHlcbiAgICBjb25zdCBzaGFkb3dzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaGFkb3dJbnRlbnNpdHk7IGkrKykge1xuICAgICAgc2hhZG93cy5wdXNoKGAke3NoYWRvd09mZnNldFh9cHggJHtzaGFkb3dPZmZzZXRZfXB4ICR7c2hhZG93Qmx1cn1weCAke3NoYWRvd0NvbG9yfWApO1xuICAgIH1cbiAgICBjb25zdCB0ZXh0U2hhZG93ID0gc2hhZG93cy5qb2luKCcsICcpO1xuXG4gICAgLy8gQ29udmVydCBoZXggdG8gcmdiYSBmb3IgYmFja2dyb3VuZCBjb2xvclxuICAgIGNvbnN0IGhleFRvUmdiYSA9IChoZXgsIG9wYWNpdHkpID0+IHtcbiAgICAgIGNvbnN0IHNob3J0aGFuZFJlZ2V4ID0gL14jPyhbYS1mXFxkXSkoW2EtZlxcZF0pKFthLWZcXGRdKSQvaTtcbiAgICAgIGhleCA9IGhleC5yZXBsYWNlKHNob3J0aGFuZFJlZ2V4LCAobSwgciwgZywgYikgPT4gciArIHIgKyBnICsgZyArIGIgKyBiKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IC9eIz8oW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkkL2kuZXhlYyhoZXgpO1xuICAgICAgaWYgKCFyZXN1bHQpIHJldHVybiBoZXg7XG4gICAgICBjb25zdCByID0gcGFyc2VJbnQocmVzdWx0WzFdLCAxNik7XG4gICAgICBjb25zdCBnID0gcGFyc2VJbnQocmVzdWx0WzJdLCAxNik7XG4gICAgICBjb25zdCBiID0gcGFyc2VJbnQocmVzdWx0WzNdLCAxNik7XG4gICAgICByZXR1cm4gYHJnYmEoJHtyfSwgJHtnfSwgJHtifSwgJHtvcGFjaXR5fSlgO1xuICAgIH07XG5cbiAgICBjb25zdCBiYWNrZ3JvdW5kQ29sb3IgPSBzdHlsZS5iYWNrZ3JvdW5kQ29sb3IgfHwgJyMwMDAwMDAnO1xuICAgIGNvbnN0IG9wYWNpdHkgPSB0eXBlb2Ygc3R5bGUuYmFja2dyb3VuZE9wYWNpdHkgPT09ICdzdHJpbmcnIFxuICAgICAgPyBwYXJzZUZsb2F0KHN0eWxlLmJhY2tncm91bmRPcGFjaXR5LnRyaW0oKSlcbiAgICAgIDogcGFyc2VGbG9hdChzdHlsZS5iYWNrZ3JvdW5kT3BhY2l0eSkgfHwgMDtcbiAgICAgIFxuICAgIGNvbnN0IGJhY2tncm91bmQgPSBoZXhUb1JnYmEoYmFja2dyb3VuZENvbG9yLCBvcGFjaXR5KTtcbiAgICBjb25zdCBoYXNCYWNrZ3JvdW5kID0gb3BhY2l0eSA+IDA7XG4gICAgY29uc3QgaGFzU2hhZG93ID0gc2hhZG93SW50ZW5zaXR5ID4gMCAmJiAoc2hhZG93Qmx1ciAhPT0gJzAnIHx8IHNoYWRvd09mZnNldFggIT09ICcwJyB8fCBzaGFkb3dPZmZzZXRZICE9PSAnMCcpO1xuXG4gICAgLy8gSGFuZGxlIGJvcmRlciByYWRpdXMgcHJvcGVybHlcbiAgICBjb25zdCBib3JkZXJSYWRpdXMgPSBzdHlsZS5iYWNrZ3JvdW5kQm9yZGVyUmFkaXVzIFxuICAgICAgPyBgJHtwYXJzZUludChzdHlsZS5iYWNrZ3JvdW5kQm9yZGVyUmFkaXVzLCAxMCl9cHhgXG4gICAgICA6ICcwcHgnO1xuICAgIFxuICAgIC8vIEhhbmRsZSBiYWNrZ3JvdW5kIHdyYXBwaW5nXG4gICAgY29uc3QgaXNXcmFwcGVkID0gc3R5bGUuYmFja2dyb3VuZEZpbGxTdHlsZSA9PT0gXCJ3cmFwXCI7XG4gICAgY29uc3QgcGFkZGluZ1ZhbHVlID0gcGFyc2VJbnQoYmFzZVBhZGRpbmcsIDEwKTtcbiAgICBcbiAgICAvLyBGb3Igd3JhcHBlZCBzdHlsZSwgdXNlIHVuaWZvcm0gcGFkZGluZ1xuICAgIGNvbnN0IHBhZGRpbmcgPSBpc1dyYXBwZWQgXG4gICAgICA/IGAke3BhZGRpbmdWYWx1ZX1weCAke01hdGgucm91bmQocGFkZGluZ1ZhbHVlICogMS4yKX1weGBcbiAgICAgIDogYCR7cGFkZGluZ1ZhbHVlfXB4ICR7cGFkZGluZ1ZhbHVlICogM31weGA7XG4gICAgXG4gICAgY29uc3Qgd2lkdGggPSBpc1dyYXBwZWQgPyBcImF1dG9cIiA6IHN0eWxlLndpZHRoO1xuICAgIGNvbnN0IGRpc3BsYXkgPSBpc1dyYXBwZWQgPyBcImlubGluZS1ibG9ja1wiIDogc3R5bGUuZGlzcGxheSB8fCBcImJsb2NrXCI7XG4gICAgXG4gICAgY29uc3QgYmFzZVN0eWxlID0ge1xuICAgICAgcGFkZGluZyxcbiAgICAgIGJhY2tncm91bmQsXG4gICAgICBib3JkZXJSYWRpdXMsXG4gICAgICB3aWR0aCxcbiAgICAgIGRpc3BsYXksXG4gICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAuLi5zdHlsZSxcbiAgICAgIC8vIEtlZXAgZm9udEZhbWlseSBpbiB0aGUgaW5saW5lIHN0eWxlcyBub3dcbiAgICAgIHRleHRTaGFkb3c6ICdub25lJyxcbiAgICAgIGJveFNoYWRvdzogaGFzQmFja2dyb3VuZCAmJiBoYXNTaGFkb3cgPyB0ZXh0U2hhZG93IDogJ25vbmUnLFxuICAgICAgdHJhbnNmb3JtOiBhbmltYXRpb25TdHlsZSA9PT0gXCJzcHJpbmdcIiBcbiAgICAgICAgPyBgJHtzdHlsZS50cmFuc2Zvcm0gPyBgJHtzdHlsZS50cmFuc2Zvcm19IGAgOiAnJ310cmFuc2xhdGUzZCgwLCAke3RyYW5zbGF0ZVl9cHgsIDApIHNjYWxlKCR7c2NhbGV9KWBcbiAgICAgICAgOiBzdHlsZS50cmFuc2Zvcm0gfHwgJ25vbmUnLFxuICAgICAgZm9udFNpemU6IHR5cGVvZiBzdHlsZS5mb250U2l6ZSA9PT0gJ3N0cmluZycgPyBhZGp1c3RlZEZvbnRTaXplIDogYWRqdXN0ZWRGb250U2l6ZSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGJhc2VTdHlsZTtcbiAgfSwgW3N0eWxlLCBzY2FsZSwgdHJhbnNsYXRlWSwgYWRqdXN0ZWRGb250U2l6ZSwgYW5pbWF0aW9uU3R5bGVdKTtcblxuICBjb25zdCB3cmFwcGVyU3R5bGUgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgdHJhbnNmb3JtOiBgc2NhbGVZKCR7c3R5bGUudmVydGljYWxTdHJldGNoIHx8IDF9KWAsXG4gICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIHdpZHRoOiAnZml0LWNvbnRlbnQnLFxuICAgIHdpbGxDaGFuZ2U6ICd0cmFuc2Zvcm0nXG4gIH0pLCBbc3R5bGUudmVydGljYWxTdHJldGNoXSk7XG5cbiAgY29uc3Qgb3V0bGluZVN0eWxlID0gdXNlTWVtbygoKSA9PiAoe1xuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIGxlZnQ6IDAsXG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBjb2xvcjogc3R5bGUub3V0bGluZUNvbG9yLFxuICAgIHRleHRTaGFkb3c6IGdlbmVyYXRlT3V0bGluZVNoYWRvdyhzdHlsZS5vdXRsaW5lQ29sb3IsIHN0eWxlLm91dGxpbmVXaWR0aCwgc3R5bGUub3V0bGluZVN0eWxlKSxcbiAgICBXZWJraXRUZXh0RmlsbENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgIHpJbmRleDogMCxcbiAgfSksIFtzdHlsZS5vdXRsaW5lQ29sb3IsIHN0eWxlLm91dGxpbmVXaWR0aCwgc3R5bGUub3V0bGluZVN0eWxlXSk7XG5cbiAgY29uc3QgbWFpblRleHRTdHlsZSA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICB6SW5kZXg6IDEsXG4gICAgV2Via2l0VGV4dFN0cm9rZTogJ3Vuc2V0JyxcbiAgICBjb2xvcjogc3R5bGUuY29sb3IsXG4gIH0pLCBbc3R5bGUuY29sb3JdKTtcblxuICAvLyBTcGxpdCB0ZXh0IGludG8gd29yZHMgYW5kIGNhbGN1bGF0ZSBjdXJyZW50IHRpbWVcbiAgY29uc3QgdGV4dFdvcmRzID0gdXNlTWVtbygoKSA9PiB0ZXh0LnNwbGl0KCcgJyksIFt0ZXh0XSk7XG4gIGNvbnN0IGN1cnJlbnRXb3JkVGltZSA9IGZyYW1lIC8gZnBzO1xuXG4gIC8vIEZpbmQgY3VycmVudGx5IHNwb2tlbiB3b3JkXG5cbiAgLy8gQ3JlYXRlIGFtcGxpZmllZCBncmFkaWVudCBzdHlsZSBpZiBhbXBsaWZpZWRDb2xvciBpcyBhIGdyYWRpZW50IGFycmF5XG4gIGNvbnN0IHBocmFzZUFtcGxpZmllZFN0eWxlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc3R5bGUuYW1wbGlmaWVkQ29sb3JzKSkge1xuICAgICAgY29uc3QgZmlyc3RXb3JkID0gd29yZHNbMF0ud29yZDtcbiAgICAgIGNvbnN0IGdyYWRpZW50SW5kZXggPSBNYXRoLmZsb29yKHJhbmRvbShgYW1wbGlmaWVkLXBocmFzZS0ke2ZpcnN0V29yZH1gKSAqIHN0eWxlLmFtcGxpZmllZENvbG9ycy5sZW5ndGgpO1xuICAgICAgY29uc3QgZ3JhZGllbnQgPSBzdHlsZS5hbXBsaWZpZWRDb2xvcnNbZ3JhZGllbnRJbmRleF07XG4gICAgICByZXR1cm4ge1xuICAgICAgICBiYWNrZ3JvdW5kOiBgbGluZWFyLWdyYWRpZW50KCR7Z3JhZGllbnQuYW5nbGV9ZGVnLCAke2dyYWRpZW50LmNvbG9ycy5qb2luKFwiLCBcIil9KWAsXG4gICAgICAgIGJhY2tncm91bmRDbGlwOiBcInRleHRcIixcbiAgICAgICAgV2Via2l0VGV4dEZpbGxDb2xvcjogXCJ0cmFuc3BhcmVudFwiLFxuICAgICAgICBXZWJraXRCYWNrZ3JvdW5kQ2xpcDogXCJ0ZXh0XCIsXG4gICAgICAgIGRpc3BsYXk6IFwiaW5saW5lLWJsb2NrXCIsXG4gICAgICAgIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gICAgICAgIHpJbmRleDogMSxcbiAgICAgIH07XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKFwiaGlnaGxpZ2h0IHdvcmRzIGNvbG9yOlwiLCBoaWdobGlnaHRXb3Jkc0NvbG9yKTtcbiAgICBpZiAodHlwZW9mIHN0eWxlLmFtcGxpZmllZENvbG9yID09PSAnb2JqZWN0JyAmJiBzdHlsZS5hbXBsaWZpZWRDb2xvci50eXBlID09PSAnZ3JhZGllbnQnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBiYWNrZ3JvdW5kOiBgbGluZWFyLWdyYWRpZW50KCR7c3R5bGUuYW1wbGlmaWVkQ29sb3IuY29sb3JzWzBdLmFuZ2xlfWRlZywgJHtzdHlsZS5hbXBsaWZpZWRDb2xvci5jb2xvcnNbMF0uY29sb3JzLmpvaW4oXCIsIFwiKX0pYCxcbiAgICAgICAgYmFja2dyb3VuZENsaXA6IFwidGV4dFwiLFxuICAgICAgICBXZWJraXRUZXh0RmlsbENvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gICAgICAgIFdlYmtpdEJhY2tncm91bmRDbGlwOiBcInRleHRcIixcbiAgICAgICAgZGlzcGxheTogXCJpbmxpbmUtYmxvY2tcIixcbiAgICAgICAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgICAgICAgekluZGV4OiAxLFxuICAgICAgfTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHsgXG4gICAgICBjb2xvcjogc3R5bGUuYW1wbGlmaWVkQ29sb3IsXG4gICAgICBXZWJraXRUZXh0RmlsbENvbG9yOiBzdHlsZS5hbXBsaWZpZWRDb2xvcixcbiAgICB9O1xuICB9LCBbc3R5bGUuYW1wbGlmaWVkQ29sb3JzLCBzdHlsZS5hbXBsaWZpZWRDb2xvciwgd29yZHNdKTtcblxuICAvLyBIYW5kbGUgcmFuZG9tIGNvbG9ycyBpZiBlbmFibGVkXG4gIGNvbnN0IHJhbmRvbUNvbG9yRGF0YSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghcmFuZG9tQ29sb3JzPy5lbmFibGVkIHx8ICF3b3JkcykgcmV0dXJuIG51bGw7XG4gICAgXG4gICAgY29uc3Qgc2hvdWxkQ29sb3IgPSByYW5kb20oYHNob3VsZC1jb2xvci0ke3dvcmRzWzBdLndvcmR9YCkgPCByYW5kb21Db2xvcnMucGN0QXBwbGllZDtcbiAgICBpZiAoIXNob3VsZENvbG9yKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IFttaW5Xb3JkcywgbWF4V29yZHNdID0gcmFuZG9tQ29sb3JzPy5yYW5kb21Xb3JkQ291bnRSYW5nZSB8fCBbMCwgMF07XG4gICAgY29uc3QgcmFuZ2UgPSBtYXhXb3JkcyAtIG1pbldvcmRzICsgMTtcbiAgICBjb25zdCByYW5kb21Xb3JkQ291bnQgPSBNYXRoLmZsb29yKHJhbmRvbShgd29yZC1jb3VudC0ke3dvcmRzWzBdLndvcmR9YCkgKiByYW5nZSkgKyBtaW5Xb3JkcztcbiAgICBjb25zdCBtYXhTdGFydEluZGV4ID0gTWF0aC5tYXgoMCwgdGV4dFdvcmRzLmxlbmd0aCAtIHJhbmRvbVdvcmRDb3VudCk7XG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IE1hdGguZmxvb3IocmFuZG9tKGBzdGFydC1pbmRleC0ke3dvcmRzWzBdLndvcmR9YCkgKiAobWF4U3RhcnRJbmRleCArIDEpKTtcbiAgICBjb25zdCByYW5kb21Db2xvck9iaiA9IHJhbmRvbUNvbG9ycy5jb2xvcnNbTWF0aC5mbG9vcihyYW5kb20oYGNvbG9yLSR7d29yZHNbMF0ud29yZH1gKSAqIHJhbmRvbUNvbG9ycy5jb2xvcnMubGVuZ3RoKV07XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2hvdWxkQ29sb3IsXG4gICAgICByYW5kb21Xb3JkQ291bnQsXG4gICAgICBzdGFydEluZGV4LFxuICAgICAgcmFuZG9tQ29sb3JPYmpcbiAgICB9O1xuICB9LCBbcmFuZG9tQ29sb3JzLCB3b3JkcywgdGV4dFdvcmRzLmxlbmd0aF0pO1xuXG4gIGNvbnN0IHBocmFzZVN0eWxlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFyYW5kb21Db2xvckRhdGEpIHtcbiAgICAgIHJldHVybiB7IFxuICAgICAgICBjb2xvcjogc3R5bGUuY29sb3IsXG4gICAgICAgIFdlYmtpdFRleHRGaWxsQ29sb3I6IHN0eWxlLmNvbG9yLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCB7IHJhbmRvbUNvbG9yT2JqIH0gPSByYW5kb21Db2xvckRhdGE7XG4gICAgcmV0dXJuIHJhbmRvbUNvbG9yT2JqLnR5cGUgPT09IFwiZ3JhZGllbnRcIiA/IFxuICAgICAge1xuICAgICAgICBiYWNrZ3JvdW5kOiBgbGluZWFyLWdyYWRpZW50KCR7cmFuZG9tQ29sb3JPYmouYW5nbGV9ZGVnLCAke3JhbmRvbUNvbG9yT2JqLmNvbG9ycy5qb2luKFwiLCBcIil9KWAsXG4gICAgICAgIGJhY2tncm91bmRDbGlwOiBcInRleHRcIixcbiAgICAgICAgV2Via2l0VGV4dEZpbGxDb2xvcjogXCJ0cmFuc3BhcmVudFwiLFxuICAgICAgICBXZWJraXRCYWNrZ3JvdW5kQ2xpcDogXCJ0ZXh0XCIsXG4gICAgICAgIGRpc3BsYXk6IFwiaW5saW5lLWJsb2NrXCIsXG4gICAgICAgIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gICAgICAgIHpJbmRleDogMSxcbiAgICAgIH0gOiBcbiAgICAgIHsgXG4gICAgICAgIGNvbG9yOiByYW5kb21Db2xvck9iai5jb2xvcixcbiAgICAgICAgV2Via2l0VGV4dEZpbGxDb2xvcjogcmFuZG9tQ29sb3JPYmouY29sb3IsXG4gICAgICB9O1xuICB9LCBbcmFuZG9tQ29sb3JEYXRhLCBzdHlsZS5jb2xvcl0pO1xuXG4gIGNvbnN0IHdvcmRDb250ZW50ID0gdXNlTWVtbygoKSA9PiB0ZXh0V29yZHMubWFwKCh3b3JkLCBpbmRleCkgPT4ge1xuICAgIC8vIENoZWNrIGlmIHRoZSB3b3JkIGlzIHN1cnJvdW5kZWQgYnkgPGg+IHRhZ3NcbiAgICBjb25zdCBoaWdobGlnaHRlZE1hdGNoID0gd29yZC5tYXRjaCgvXjxoPiguKj8pPFxcL2g+JC8pO1xuICAgIGNvbnN0IGlzSGlnaGxpZ2h0ZWQgPSBoaWdobGlnaHRlZE1hdGNoICE9PSBudWxsO1xuICAgIGNvbnN0IGRpc3BsYXlXb3JkID0gaXNIaWdobGlnaHRlZCA/IGhpZ2hsaWdodGVkTWF0Y2hbMV0gOiB3b3JkO1xuXG4gICAgY29uc3Qgc2hvdWxkQ29sb3JUaGlzV29yZCA9IHJhbmRvbUNvbG9yRGF0YSAmJiBcbiAgICAgIGluZGV4ID49IHJhbmRvbUNvbG9yRGF0YS5zdGFydEluZGV4ICYmIFxuICAgICAgaW5kZXggPCByYW5kb21Db2xvckRhdGEuc3RhcnRJbmRleCArIHJhbmRvbUNvbG9yRGF0YS5yYW5kb21Xb3JkQ291bnQgJiZcbiAgICAgIGluZGV4IDwgdGV4dFdvcmRzLmxlbmd0aDtcblxuICAgIGNvbnN0IHdvcmRUaW1pbmcgPSB3b3Jkcz8uW2luZGV4XTtcbiAgICBjb25zdCBoYXNCZWVuU3Bva2VuID0gd29yZFRpbWluZyAmJiBjdXJyZW50V29yZFRpbWUgPj0gd29yZFRpbWluZy5lbmQ7XG4gICAgY29uc3QgaXNDdXJyZW50bHlTcG9rZW4gPSB3b3JkVGltaW5nICYmIFxuICAgICAgY3VycmVudFdvcmRUaW1lID49IHdvcmRUaW1pbmcuc3RhcnQgJiYgXG4gICAgICBjdXJyZW50V29yZFRpbWUgPCB3b3JkVGltaW5nLmVuZDtcblxuICAgIGNvbnN0IHRleHRIaWdobGlnaHRQZXJzaXN0cyA9IHN0eWxlLnRleHRIaWdobGlnaHRQZXJzaXN0cyA/IHRydWUgOiBmYWxzZTtcbiAgICBcbiAgICBjb25zdCBzaG91bGRIaWdobGlnaHQgPSBzdHlsZS5hbXBsaWZ5U3Bva2VuV29yZHMgJiYgXG4gICAgICAoaXNDdXJyZW50bHlTcG9rZW4gfHwgKHRleHRIaWdobGlnaHRQZXJzaXN0cyAmJiBoYXNCZWVuU3Bva2VuKSk7XG4gICAgXG4gICAgLy8gTW9kaWZpZWQgbG9naWMgdG8gcHJpb3JpdGl6ZSA8aD4gdGFnIGhpZ2hsaWdodGluZ1xuICAgIGNvbnN0IHdvcmRTdHlsZSA9IGlzSGlnaGxpZ2h0ZWRcbiAgICAgID8geyBcbiAgICAgICAgICBjb2xvcjogaGlnaGxpZ2h0V29yZHNDb2xvcixcbiAgICAgICAgICBXZWJraXRUZXh0RmlsbENvbG9yOiBoaWdobGlnaHRXb3Jkc0NvbG9yLFxuICAgICAgICAgIG9wYWNpdHk6IHN0eWxlLm9wYWNpdHkgfHwgMSxcbiAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgfVxuICAgICAgOiBzaG91bGRIaWdobGlnaHRcbiAgICAgICAgPyB7XG4gICAgICAgICAgICAuLi5waHJhc2VBbXBsaWZpZWRTdHlsZSxcbiAgICAgICAgICAgIG9wYWNpdHk6IHN0eWxlLmFtcGxpZmllZE9wYWNpdHkgfHwgMSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgIH1cbiAgICAgICAgOiBzaG91bGRDb2xvclRoaXNXb3JkIFxuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAuLi5waHJhc2VTdHlsZSxcbiAgICAgICAgICAgICAgb3BhY2l0eTogc3R5bGUub3BhY2l0eSB8fCAxLFxuICAgICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHsgXG4gICAgICAgICAgICAgIGNvbG9yOiBzdHlsZS5jb2xvcixcbiAgICAgICAgICAgICAgV2Via2l0VGV4dEZpbGxDb2xvcjogc3R5bGUuY29sb3IsXG4gICAgICAgICAgICAgIG9wYWNpdHk6IHN0eWxlLnVuQW1wbGlmaWVkT3BhY2l0eSB8fCAxLFxuICAgICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICAgIH07XG5cbiAgICAvLyBBZGQgei1pbmRleCB0byBlbnN1cmUgcHJvcGVyIHN0YWNraW5nIG9mIHdvcmQgYmxvY2tzXG4gICAgY29uc3QgY29udGFpbmVyU3R5bGUgPSB7XG4gICAgICAuLi53b3JkU3R5bGUsXG4gICAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICAgIG1hcmdpblJpZ2h0OiBpbmRleCA8IHRleHRXb3Jkcy5sZW5ndGggLSAxID8gJzAuMjVlbScgOiAwLFxuICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICB6SW5kZXg6IGlzQ3VycmVudGx5U3Bva2VuID8gMiA6IDEsXG4gICAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJ1xuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPHNwYW4ga2V5PXtpbmRleH0gc3R5bGU9e2NvbnRhaW5lclN0eWxlfT5cbiAgICAgICAge3N0eWxlLmN1cnJlbnRXb3JkQmxvY2sgJiYgaXNDdXJyZW50bHlTcG9rZW4gJiYgKFxuICAgICAgICAgIDxzcGFuIHN0eWxlPXt7XG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIGNvbnRlbnQ6ICdcIlwiJyxcbiAgICAgICAgICAgIGxlZnQ6IGAtJHsoc3R5bGUuY3VycmVudFdvcmRCbG9ja1BhZGRpbmcgfHwgNSkgKiAyfXB4YCxcbiAgICAgICAgICAgIHJpZ2h0OiBgLSR7KHN0eWxlLmN1cnJlbnRXb3JkQmxvY2tQYWRkaW5nIHx8IDUpICogMn1weGAsXG4gICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICBoZWlnaHQ6ICc3MCUnLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBzdHlsZS5jdXJyZW50V29yZEJsb2NrQmFja2dyb3VuZENvbG9yIHx8ICcjMDAwMDAwJyxcbiAgICAgICAgICAgIG9wYWNpdHk6IHN0eWxlLmN1cnJlbnRXb3JkQmxvY2tPcGFjaXR5IHx8IDEsXG4gICAgICAgICAgICBib3JkZXJSYWRpdXM6IGAke3N0eWxlLmN1cnJlbnRXb3JkQmxvY2tCb3JkZXJSYWRpdXMgfHwgMTV9cHhgLFxuICAgICAgICAgICAgekluZGV4OiAtMSxcbiAgICAgICAgICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMnB4KScsXG4gICAgICAgICAgICBwYWRkaW5nOiBgJHtzdHlsZS5jdXJyZW50V29yZEJsb2NrUGFkZGluZyB8fCA1fXB4IDBgLFxuICAgICAgICAgICAgYm94U2l6aW5nOiAnY29udGVudC1ib3gnXG4gICAgICAgICAgfX0gLz5cbiAgICAgICAgKX1cbiAgICAgICAge2Rpc3BsYXlXb3JkfSB7LyogRGlzcGxheSB0aGUgd29yZCB3aXRob3V0IDxoPiB0YWdzICovfVxuICAgICAgPC9zcGFuPlxuICAgICk7XG4gIH0pLCBbdGV4dFdvcmRzLCByYW5kb21Db2xvckRhdGEsIHdvcmRzLCBjdXJyZW50V29yZFRpbWUsIHN0eWxlLmFtcGxpZnlTcG9rZW5Xb3Jkcywgc3R5bGUudGV4dEhpZ2hsaWdodFBlcnNpc3RzLCBwaHJhc2VBbXBsaWZpZWRTdHlsZSwgcGhyYXNlU3R5bGUsIHN0eWxlLmNvbG9yLCBzdHlsZS5jdXJyZW50V29yZEJsb2NrLCBzdHlsZS5jdXJyZW50V29yZEJsb2NrQmFja2dyb3VuZENvbG9yLCBzdHlsZS5jdXJyZW50V29yZEJsb2NrT3BhY2l0eSwgc3R5bGUuY3VycmVudFdvcmRCbG9ja1BhZGRpbmcsIHN0eWxlLmN1cnJlbnRXb3JkQmxvY2tCb3JkZXJSYWRpdXMsIGhpZ2hsaWdodFdvcmRzQ29sb3JdKTtcbiAgLy8gY29uc29sZS5sb2coJ1N1YnRpdGxlVGV4dCAtIHJlY2VpdmVkIHN0eWxlIGZvbnRGYW1pbHk6Jywgc3R5bGUuZm9udEZhbWlseSk7XG4gIHJldHVybiAoXG4gICAgPGRpdiBcbiAgICAgIHN0eWxlPXt7XG4gICAgICAgIC4uLmFuaW1hdGVkU3R5bGUsXG4gICAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuICAgICAgICB3aWR0aDogJ2ZpdC1jb250ZW50JyxcbiAgICAgICAgZGlzcGxheTogJ2Jsb2NrJ1xuICAgICAgfX1cbiAgICA+XG4gICAgICA8ZGl2IHN0eWxlPXt3cmFwcGVyU3R5bGV9PlxuICAgICAgICA8ZGl2IHN0eWxlPXt7Li4ub3V0bGluZVN0eWxlLCB3aGl0ZVNwYWNlOiAnbm93cmFwJ319Pnt3b3JkQ29udGVudH08L2Rpdj5cbiAgICAgICAgPGRpdiBzdHlsZT17ey4uLm1haW5UZXh0U3R5bGUsIHdoaXRlU3BhY2U6ICdub3dyYXAnfX0+e3dvcmRDb250ZW50fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59LCAocHJldlByb3BzLCBuZXh0UHJvcHMpID0+IHtcbiAgLy8gT25seSByZS1yZW5kZXIgaWYgdGhlc2UgZXNzZW50aWFsIHByb3BzIGhhdmUgY2hhbmdlZFxuICBjb25zdCBlc3NlbnRpYWxQcm9wcyA9IFsnZnJhbWUnLCAndGV4dCcsICdzdGFydEZyYW1lJ107XG4gIGNvbnN0IGhhc0Vzc2VudGlhbFByb3BzQ2hhbmdlZCA9IGVzc2VudGlhbFByb3BzLnNvbWUoXG4gICAgcHJvcCA9PiBwcmV2UHJvcHNbcHJvcF0gIT09IG5leHRQcm9wc1twcm9wXVxuICApO1xuICBcbiAgLy8gRGVlcCBjb21wYXJlIHN0eWxlIGFuZCByYW5kb21Db2xvcnMgb25seSBpZiBlc3NlbnRpYWwgcHJvcHMgaGF2ZW4ndCBjaGFuZ2VkXG4gIGlmICghaGFzRXNzZW50aWFsUHJvcHNDaGFuZ2VkKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHByZXZQcm9wcy5zdHlsZSkgPT09IEpTT04uc3RyaW5naWZ5KG5leHRQcm9wcy5zdHlsZSkgJiZcbiAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkocHJldlByb3BzLnJhbmRvbUNvbG9ycykgPT09IEpTT04uc3RyaW5naWZ5KG5leHRQcm9wcy5yYW5kb21Db2xvcnMpO1xuICB9XG4gIFxuICByZXR1cm4gZmFsc2U7XG59KTsgIixudWxsLCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcblxuLy8gSGVscGVyIHRvIGNvbnZlcnQgaGV4IHRvIHJnYlxuY29uc3QgaGV4VG9SZ2IgPSAoaGV4KSA9PiB7XG4gIC8vIFJlbW92ZSAjIGlmIHByZXNlbnRcbiAgaGV4ID0gaGV4LnJlcGxhY2UoJyMnLCAnJyk7XG4gIFxuICAvLyBIYW5kbGUgYm90aCAzLWRpZ2l0IGFuZCA2LWRpZ2l0IGhleFxuICBjb25zdCByID0gcGFyc2VJbnQoaGV4Lmxlbmd0aCA9PT0gMyA/IGhleFswXSArIGhleFswXSA6IGhleC5zbGljZSgwLCAyKSwgMTYpO1xuICBjb25zdCBnID0gcGFyc2VJbnQoaGV4Lmxlbmd0aCA9PT0gMyA/IGhleFsxXSArIGhleFsxXSA6IGhleC5zbGljZSgyLCA0KSwgMTYpO1xuICBjb25zdCBiID0gcGFyc2VJbnQoaGV4Lmxlbmd0aCA9PT0gMyA/IGhleFsyXSArIGhleFsyXSA6IGhleC5zbGljZSg0LCA2KSwgMTYpO1xuICBcbiAgcmV0dXJuIGAke3J9LCAke2d9LCAke2J9YDtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VUZXh0U3R5bGUgPSAocHJlc2V0LCB4LCBhZGp1c3RlZFksIHZpZGVvV2lkdGgpID0+IHsgIFxuICByZXR1cm4gdXNlTWVtbygoKSA9PiB7XG4gICAgLy8gQ3JlYXRlIHRleHQgc2hhZG93IGJhc2VkIG9uIGludGVuc2l0eVxuICAgIGNvbnN0IHNoYWRvd0ludGVuc2l0eSA9IHByZXNldC5zaGFkb3dJbnRlbnNpdHkgfHwgMTtcbiAgICBjb25zdCBzaGFkb3dDb2xvciA9IHByZXNldC5zaGFkb3dDb2xvciB8fCAnIzAwMDAwMCc7XG4gICAgY29uc3Qgc2hhZG93Qmx1ciA9IHByZXNldC5zaGFkb3dCbHVyIHx8ICcyJztcbiAgICBjb25zdCBzaGFkb3dPZmZzZXRYID0gcHJlc2V0LnNoYWRvd09mZnNldFggfHwgJzAnO1xuICAgIGNvbnN0IHNoYWRvd09mZnNldFkgPSBwcmVzZXQuc2hhZG93T2Zmc2V0WSB8fCAnMCc7XG4gICAgXG4gICAgLy8gU3RhY2sgbXVsdGlwbGUgc2hhZG93cyBiYXNlZCBvbiBpbnRlbnNpdHlcbiAgICBjb25zdCBzaGFkb3dzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaGFkb3dJbnRlbnNpdHk7IGkrKykge1xuICAgICAgc2hhZG93cy5wdXNoKGAke3NoYWRvd09mZnNldFh9cHggJHtzaGFkb3dPZmZzZXRZfXB4ICR7c2hhZG93Qmx1cn1weCAke3NoYWRvd0NvbG9yfWApO1xuICAgIH1cbiAgICBjb25zdCB0ZXh0U2hhZG93ID0gc2hhZG93cy5qb2luKCcsICcpO1xuXG4gICAgY29uc3QgZHJvcFNoYWRvdyA9IChwcmVzZXQuc2hhZG93RW5hYmxlZCAhPT0gZmFsc2UgJiYgKHByZXNldC5zaGFkb3dPZmZzZXRYIHx8IHByZXNldC5zaGFkb3dPZmZzZXRZIHx8IHByZXNldC5zaGFkb3dCbHVyKSlcbiAgICAgID8gYGRyb3Atc2hhZG93KCR7cHJlc2V0LnNoYWRvd09mZnNldFh9cHggJHtwcmVzZXQuc2hhZG93T2Zmc2V0WX1weCAke3ByZXNldC5zaGFkb3dCbHVyfXB4ICR7cHJlc2V0LnNoYWRvd0NvbG9yfSlgXG4gICAgICA6ICdub25lJztcblxuICAgIGNvbnN0IGJhY2tncm91bmRDb2xvciA9IHByZXNldC5iYWNrZ3JvdW5kQ29sb3IgPT09ICd0cmFuc3BhcmVudCcgXG4gICAgICA/ICd0cmFuc3BhcmVudCcgXG4gICAgICA6IHByZXNldC5iYWNrZ3JvdW5kQ29sb3IgJiYgcHJlc2V0LmJhY2tncm91bmRPcGFjaXR5XG4gICAgICAgID8gYHJnYmEoJHtoZXhUb1JnYihwcmVzZXQuYmFja2dyb3VuZENvbG9yKX0sICR7cHJlc2V0LmJhY2tncm91bmRPcGFjaXR5fSlgXG4gICAgICAgIDogcHJlc2V0LmJhY2tncm91bmRDb2xvciB8fCAnIzAwMDAwMCc7XG4gICAgXG4gICAgLy8gSGFuZGxlIGJvdGggZGlyZWN0aW9uYWwgYW5kIHVuaWZvcm0gcGFkZGluZ1xuICAgIGNvbnN0IHBhZGRpbmdYID0gcHJlc2V0LmJhY2tncm91bmRQYWRkaW5nWCB8fCBwcmVzZXQuYmFja2dyb3VuZFBhZGRpbmcgfHwgJzEwJztcbiAgICBjb25zdCBwYWRkaW5nWSA9IHByZXNldC5iYWNrZ3JvdW5kUGFkZGluZ1kgfHwgcHJlc2V0LmJhY2tncm91bmRQYWRkaW5nIHx8ICcxMCc7XG4gICAgY29uc3QgYmFzZVBhZGRpbmcgPSBgJHtwYWRkaW5nWX1weCAke3BhZGRpbmdYfXB4YDtcbiAgICBcbiAgICBjb25zdCBzdHlsZSA9IHtcbiAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICBsZWZ0OiBgJHt4fXB4YCxcbiAgICAgIHRvcDogYCR7YWRqdXN0ZWRZfXB4YCxcbiAgICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUoLTUwJSwgLTUwJSlcIixcbiAgICAgIGZvbnRGYW1pbHk6IHByZXNldC5mb250RmFtaWx5LFxuICAgICAgZm9udFNpemU6IGAke3ByZXNldC5mb250U2l6ZX1weGAsXG4gICAgICBmb250V2VpZ2h0OiBwcmVzZXQuZm9udFdlaWdodCxcbiAgICAgIGNvbG9yOiBwcmVzZXQuZm9udENvbG9yLFxuICAgICAgYW1wbGlmaWVkQ29sb3I6IHByZXNldC5hbXBsaWZpZWRDb2xvcixcbiAgICAgIGFtcGxpZmllZENvbG9yczogcHJlc2V0LmFtcGxpZmllZENvbG9ycyxcbiAgICAgIGFtcGxpZnlTcG9rZW5Xb3JkczogcHJlc2V0LmFtcGxpZnlTcG9rZW5Xb3JkcyxcbiAgICAgIHRleHRUcmFuc2Zvcm06IHByZXNldC50ZXh0Q2FzZSxcbiAgICAgIGZvbnRTdHlsZTogcHJlc2V0LmlzSXRhbGljID8gXCJpdGFsaWNcIiA6IFwibm9ybWFsXCIsXG4gICAgICB0ZXh0QWxpZ246IFwiY2VudGVyXCIsXG4gICAgICBsZXR0ZXJTcGFjaW5nOiBgJHtwcmVzZXQudGV4dFNwYWNpbmd9cHhgLFxuICAgICAgYmFja2dyb3VuZENvbG9yLFxuICAgICAgYmFja2dyb3VuZFBhZGRpbmc6IGJhc2VQYWRkaW5nLFxuICAgICAgYmFja2dyb3VuZEJvcmRlclJhZGl1czogcHJlc2V0LmJhY2tncm91bmRCb3JkZXJSYWRpdXMsXG4gICAgICB2ZXJ0aWNhbFN0cmV0Y2g6IHByZXNldC52ZXJ0aWNhbFN0cmV0Y2ggfHwgMSxcbiAgICAgIHRyYW5zZm9ybU9yaWdpbjogXCJjZW50ZXIgY2VudGVyXCIsXG4gICAgICB3aWR0aDogXCJhdXRvXCIsXG4gICAgICBtYXhXaWR0aDogYCR7dmlkZW9XaWR0aCAqIDAuOX1weGAsXG4gICAgICB3aGl0ZVNwYWNlOiBcInByZS13cmFwXCIsXG4gICAgICBvdmVyZmxvdzogXCJ2aXNpYmxlXCIsXG4gICAgICBvdXRsaW5lQ29sb3I6IHByZXNldC5vdXRsaW5lQ29sb3IsXG4gICAgICBvdXRsaW5lV2lkdGg6IHByZXNldC5vdXRsaW5lV2lkdGgsXG4gICAgICBmaWx0ZXI6IGRyb3BTaGFkb3csXG4gICAgICBkaXNwbGF5OiBcImlubGluZS1ibG9ja1wiLFxuICAgICAgdGV4dEhpZ2hsaWdodFBlcnNpc3RzOiBwcmVzZXQudGV4dEhpZ2hsaWdodFBlcnNpc3RzLFxuICAgICAgYW1wbGlmaWVkT3BhY2l0eTogcHJlc2V0LmFtcGxpZmllZE9wYWNpdHksXG4gICAgICB1bkFtcGxpZmllZE9wYWNpdHk6IHByZXNldC5vcGFjaXR5LFxuICAgICAgY3VycmVudFdvcmRCbG9jazogcHJlc2V0LmN1cnJlbnRXb3JkQmxvY2ssXG4gICAgICBjdXJyZW50V29yZEJsb2NrQmFja2dyb3VuZENvbG9yOiBwcmVzZXQuY3VycmVudFdvcmRCbG9ja0JhY2tncm91bmRDb2xvcixcbiAgICAgIGN1cnJlbnRXb3JkQmxvY2tPcGFjaXR5OiBwcmVzZXQuY3VycmVudFdvcmRCbG9ja09wYWNpdHksXG4gICAgICBjdXJyZW50V29yZEJsb2NrUGFkZGluZzogcHJlc2V0LmN1cnJlbnRXb3JkQmxvY2tQYWRkaW5nLFxuICAgICAgY3VycmVudFdvcmRCbG9ja0JvcmRlclJhZGl1czogcHJlc2V0LmN1cnJlbnRXb3JkQmxvY2tCb3JkZXJSYWRpdXMsXG4gICAgICBhbXBsaWZ5T3BhY2l0eVRyYW5zaXRpb25EdXJhdGlvbjogcHJlc2V0LmFtcGxpZnlPcGFjaXR5VHJhbnNpdGlvbkR1cmF0aW9uLFxuICAgICAgdGV4dFNoYWRvdyxcbiAgICAgIHNoYWRvd0ludGVuc2l0eTogcHJlc2V0LnNoYWRvd0ludGVuc2l0eSxcbiAgICB9O1xuICAgIFxuICAgIC8vIGNvbnNvbGUubG9nKCd1c2VUZXh0U3R5bGUgLSBvdXRwdXQgc3R5bGUgZm9udEZhbWlseTonLCBzdHlsZS5mb250RmFtaWx5KTtcbiAgICByZXR1cm4gc3R5bGU7XG4gIH0sIFtwcmVzZXQsIHgsIGFkanVzdGVkWSwgdmlkZW9XaWR0aF0pO1xufTsgIiwiLy8gRm9udCBtYXAgdGhhdCBtYXRjaGVzIENTUyBmb250LWZhbWlseSBuYW1lcyB0byB0aGVpciBmb250IGZpbGVzIGFuZCB3ZWlnaHRzXG5jb25zdCBGT05UX01BUCA9IHtcbiAgJ1Bvc3RlcmFtYS0xOTI3LVcwMS1VbHRyYUJsYWNrJzogW3sgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvUG9zdGVyYW1hLTE5MjctVzAxLVVsdHJhQmxhY2sudHRmP2FsdD1tZWRpYScsIHdlaWdodDogOTAwLCBzdHlsZTogJ25vcm1hbCcgfV0sXG4gICdTdGFwZWwtTmFycm93JzogW3sgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvTmV1ZUhhYXNEaXNwbGF5L05ldWVIYWFzRGlzcGxheVJvbWFuLnR0Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDQwMCwgc3R5bGU6ICdub3JtYWwnIH1dLFxuICAnU3RhcGVsLU5hcnJvd01lZGl1bSc6IFt7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL3N0YXBlbC9TdGFwZWwtTmFycm93TWVkaXVtLnR0Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDUwMCwgc3R5bGU6ICdub3JtYWwnIH1dLFxuICAnTmV1ZUhhYXNEaXNwbGF5Qm9sZCc6IFt7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL05ldWVIYWFzRGlzcGxheUJvbGQudHRmP2FsdD1tZWRpYScsIHdlaWdodDogNzAwLCBzdHlsZTogJ25vcm1hbCcgfV0sXG4gICdUaGVCb2xkRm9udCc6IFt7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL3RoZWJvbGRmb250LnR0Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDcwMCwgc3R5bGU6ICdub3JtYWwnIH1dLFxuICAnTWVyY2FkaWxsbyBCbGFjayc6IFt7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL21lcmNhZGlsbG8vTWVyY2FkaWxsby1CbGFjay50dGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA5MDAsIHN0eWxlOiAnbm9ybWFsJyB9XSxcbiAgJ01lcmNhZGlsbG8gQm9sZCc6IFt7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL21lcmNhZGlsbG8vTWVyY2FkaWxsby1Cb2xkLnR0Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDcwMCwgc3R5bGU6ICdub3JtYWwnIH1dLFxuICBcbiAgLy8gbmVlZCB0byBhZGQgaW50ZXIgZm9udCB2YXJpYXRpb25zXG4gIC8vIEludGVyIGZvbnQgdmFyaWF0aW9uc1xuICAnSW50ZXInOiBbXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9JbnRlci9JbnRlci1UaGluLndvZmYyP2FsdD1tZWRpYScsIHdlaWdodDogMTAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL0ludGVyL0ludGVyLUV4dHJhTGlnaHQud29mZjI/YWx0PW1lZGlhJywgd2VpZ2h0OiAyMDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvSW50ZXIvSW50ZXItTGlnaHQud29mZjI/YWx0PW1lZGlhJywgd2VpZ2h0OiAzMDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvSW50ZXIvSW50ZXItUmVndWxhci53b2ZmMj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDQwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9JbnRlci9JbnRlci1NZWRpdW0ud29mZjI/YWx0PW1lZGlhJywgd2VpZ2h0OiA1MDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvSW50ZXIvSW50ZXItU2VtaUJvbGQud29mZjI/YWx0PW1lZGlhJywgd2VpZ2h0OiA2MDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvSW50ZXIvSW50ZXItQm9sZC53b2ZmMj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDcwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9JbnRlci9JbnRlci1FeHRyYUJvbGQud29mZjI/YWx0PW1lZGlhJywgd2VpZ2h0OiA4MDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvSW50ZXIvSW50ZXItQmxhY2sud29mZjI/YWx0PW1lZGlhJywgd2VpZ2h0OiA5MDAsIHN0eWxlOiAnbm9ybWFsJyB9XG4gIF0sXG5cbiAgLy8gTWlsbGlhcmQgZm9udCB2YXJpYXRpb25zXG4gICdNaWxsaWFyZCc6IFtcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL21pbGxpYXJkL1JlbmUlMjBCaWVkZXIlMjAlMjBNaWxsaWFyZCUyMFRoaW4ub3RmP2FsdD1tZWRpYScsIHdlaWdodDogMTAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL21pbGxpYXJkL1JlbmUlMjBCaWVkZXIlMjAlMjBNaWxsaWFyZCUyMFRoaW4lMjBJdGFsaWMub3RmP2FsdD1tZWRpYScsIHdlaWdodDogMTAwLCBzdHlsZTogJ2l0YWxpYycgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL21pbGxpYXJkL1JlbmUlMjBCaWVkZXIlMjAlMjBNaWxsaWFyZCUyMEV4dHJhTGlnaHQub3RmP2FsdD1tZWRpYScsIHdlaWdodDogMjAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL21pbGxpYXJkL1JlbmUlMjBCaWVkZXIlMjAlMjBNaWxsaWFyZCUyMEV4dHJhTGlnaHQlMjBJdGFsaWMub3RmP2FsdD1tZWRpYScsIHdlaWdodDogMjAwLCBzdHlsZTogJ2l0YWxpYycgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL21pbGxpYXJkL1JlbmUlMjBCaWVkZXIlMjAlMjBNaWxsaWFyZCUyMExpZ2h0Lm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDMwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9taWxsaWFyZC9SZW5lJTIwQmllZGVyJTIwJTIwTWlsbGlhcmQlMjBMaWdodCUyMEl0YWxpYy5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiAzMDAsIHN0eWxlOiAnaXRhbGljJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWlsbGlhcmQvUmVuZSUyMEJpZWRlciUyMCUyME1pbGxpYXJkJTIwQm9vay5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA0MDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWlsbGlhcmQvUmVuZSUyMEJpZWRlciUyMCUyME1pbGxpYXJkJTIwQm9vayUyMEl0YWxpYy5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA0MDAsIHN0eWxlOiAnaXRhbGljJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWlsbGlhcmQvUmVuZSUyMEJpZWRlciUyMCUyME1pbGxpYXJkJTIwTWVkaXVtLm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDUwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9taWxsaWFyZC9SZW5lJTIwQmllZGVyJTIwJTIwTWlsbGlhcmQlMjBNZWRpdW0lMjBJdGFsaWMub3RmP2FsdD1tZWRpYScsIHdlaWdodDogNTAwLCBzdHlsZTogJ2l0YWxpYycgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL21pbGxpYXJkL1JlbmUlMjBCaWVkZXIlMjAlMjBNaWxsaWFyZCUyMFNlbWlCb2xkLm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDYwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9taWxsaWFyZC9SZW5lJTIwQmllZGVyJTIwJTIwTWlsbGlhcmQlMjBTZW1pQm9sZCUyMEl0YWxpYy5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA2MDAsIHN0eWxlOiAnaXRhbGljJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWlsbGlhcmQvUmVuZSUyMEJpZWRlciUyMCUyME1pbGxpYXJkJTIwQm9sZC5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA3MDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWlsbGlhcmQvUmVuZSUyMEJpZWRlciUyMCUyME1pbGxpYXJkJTIwQm9sZCUyMEl0YWxpYy5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA3MDAsIHN0eWxlOiAnaXRhbGljJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWlsbGlhcmQvUmVuZSUyMEJpZWRlciUyMCUyME1pbGxpYXJkJTIwRXh0cmFCb2xkLm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDgwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9taWxsaWFyZC9SZW5lJTIwQmllZGVyJTIwJTIwTWlsbGlhcmQlMjBFeHRyYUJvbGQlMjBJdGFsaWMub3RmP2FsdD1tZWRpYScsIHdlaWdodDogODAwLCBzdHlsZTogJ2l0YWxpYycgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL21pbGxpYXJkL1JlbmUlMjBCaWVkZXIlMjAlMjBNaWxsaWFyZCUyMEJsYWNrLm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDkwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9taWxsaWFyZC9SZW5lJTIwQmllZGVyJTIwJTIwTWlsbGlhcmQlMjBCbGFjayUyMEl0YWxpYy5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA5MDAsIHN0eWxlOiAnaXRhbGljJyB9XG4gIF0sXG5cbiAgJ0FyaWFsIEJsYWNrJzogW3sgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvQXJpYWwlMjBCbGFjay50dGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA5MDAsIHN0eWxlOiAnbm9ybWFsJyB9XSxcbiAgXG4gIC8vIFNvZmlhIFBybyBmb250IHZhcmlhdGlvbnNcbiAgJ1NvZmlhIFBybyc6IFtcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL3NvZmlhLXByby9Tb2ZpYSUyMFBybyUyMExpZ2h0JTIwQXoub3RmP2FsdD1tZWRpYScsIHdlaWdodDogMzAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL3NvZmlhLXByby9Tb2ZpYSUyMFBybyUyMExpZ2h0JTIwSXRhbGljJTIwQXoub3RmP2FsdD1tZWRpYScsIHdlaWdodDogMzAwLCBzdHlsZTogJ2l0YWxpYycgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL3NvZmlhLXByby9Tb2ZpYSUyMFBybyUyMFJlZ3VsYXIlMjBBei5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA0MDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvc29maWEtcHJvL1NvZmlhJTIwUHJvJTIwUmVndWxhciUyMEl0YWxpYyUyMEF6Lm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDQwMCwgc3R5bGU6ICdpdGFsaWMnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9zb2ZpYS1wcm8vU29maWElMjBQcm8lMjBNZWRpdW0lMjBBei5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA1MDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvc29maWEtcHJvL1NvZmlhJTIwUHJvJTIwTWVkaXVtJTIwSXRhbGljJTIwQXoub3RmP2FsdD1tZWRpYScsIHdlaWdodDogNTAwLCBzdHlsZTogJ2l0YWxpYycgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL3NvZmlhLXByby9Tb2ZpYSUyMFBybyUyMFNlbWklMjBCb2xkJTIwQXoub3RmP2FsdD1tZWRpYScsIHdlaWdodDogNjAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL3NvZmlhLXByby9Tb2ZpYSUyMFBybyUyMFNlbWklMjBCb2xkJTIwSXRhbGljJTIwQXoub3RmP2FsdD1tZWRpYScsIHdlaWdodDogNjAwLCBzdHlsZTogJ2l0YWxpYycgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL3NvZmlhLXByby9Tb2ZpYSUyMFBybyUyMEJvbGQlMjBBei5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA3MDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvc29maWEtcHJvL1NvZmlhJTIwUHJvJTIwQm9sZCUyMEl0YWxpYyUyMEF6Lm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDcwMCwgc3R5bGU6ICdpdGFsaWMnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9zb2ZpYS1wcm8vU29maWElMjBQcm8lMjBCbGFjayUyMEF6Lm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDkwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9zb2ZpYS1wcm8vU29maWElMjBQcm8lMjBCbGFjayUyMEl0YWxpYyUyMEF6Lm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDkwMCwgc3R5bGU6ICdpdGFsaWMnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9zb2ZpYS1wcm8vU29maWElMjBQcm8lMjBFeHRyYUxpZ2h0JTIwQXoub3RmP2FsdD1tZWRpYScsIHdlaWdodDogMjAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL3NvZmlhLXByby9Tb2ZpYSUyMFBybyUyMEV4dHJhTGlnaHQlMjBJdGFsaWMlMjBBei5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiAyMDAsIHN0eWxlOiAnaXRhbGljJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvc29maWEtcHJvL1NvZmlhJTIwUHJvJTIwVWx0cmFMaWdodCUyMEF6Lm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDEwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9zb2ZpYS1wcm8vU29maWElMjBQcm8lMjBVbHRyYUxpZ2h0JTIwSXRhbGljJTIwQXoub3RmP2FsdD1tZWRpYScsIHdlaWdodDogMTAwLCBzdHlsZTogJ2l0YWxpYycgfVxuICBdXG59O1xuXG5leHBvcnQgY29uc3QgbG9hZERvY3VtZW50Rm9udHMgPSBhc3luYyAoZm9udEZhbWlseSkgPT4geyAgXG4gIGlmIChmb250RmFtaWx5ID09PSAnQXJpYWwnKSB7IFxuICAgIHJldHVybjtcbiAgfVxuICBlbHNlIGlmICghZm9udEZhbWlseSB8fCB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgY29uc29sZS53YXJuKCdGb250IGZhbWlseSBpcyBub3QgcHJvdmlkZWQgb3IgZG9jdW1lbnQgaXMgdW5kZWZpbmVkLicpO1xuICAgIHJldHVybjtcbiAgfSBcblxuICAvLyBDbGVhbiB0aGUgZm9udCBmYW1pbHkgbmFtZSAocmVtb3ZlIHF1b3RlcyBhbmQgZmFsbGJhY2tzKVxuICBjb25zdCBjbGVhbkZvbnRGYW1pbHkgPSBmb250RmFtaWx5LnJlcGxhY2UoL1snXCJdL2csICcnKS5zcGxpdCgnLCcpWzBdLnRyaW0oKTtcbiAgLy8gY29uc29sZS5sb2coYENsZWFuZWQgZm9udCBmYW1pbHkgbmFtZTogJHtjbGVhbkZvbnRGYW1pbHl9YCk7XG4gIFxuICAvLyBHZXQgZm9udCB2YXJpYXRpb25zIGZvciB0aGlzIGZhbWlseVxuICBjb25zdCBmb250VmFyaWF0aW9ucyA9IEZPTlRfTUFQW2NsZWFuRm9udEZhbWlseV07XG4gIGlmICghZm9udFZhcmlhdGlvbnMpIHtcbiAgICBjb25zb2xlLndhcm4oYEZvbnQgZmFtaWx5IFwiJHtjbGVhbkZvbnRGYW1pbHl9XCIgbm90IGZvdW5kIGluIGZvbnQgbWFwYCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIFxuICAvLyBjb25zb2xlLmxvZyhgRm91bmQgZm9udCB2YXJpYXRpb25zIGZvciBcIiR7Y2xlYW5Gb250RmFtaWx5fVwiOmAsIGZvbnRWYXJpYXRpb25zKTtcblxuICB0cnkge1xuICAgIC8vIExvYWQgYWxsIHZhcmlhdGlvbnMgb2YgdGhlIGZvbnQgZmFtaWx5XG4gICAgY29uc3QgbG9hZFByb21pc2VzID0gZm9udFZhcmlhdGlvbnMubWFwKGFzeW5jICh7IHNyYywgd2VpZ2h0LCBzdHlsZSB9KSA9PiB7XG4gICAgICBjb25zdCBmb250ID0gbmV3IEZvbnRGYWNlKGNsZWFuRm9udEZhbWlseSwgYHVybCgke3NyY30pYCwgeyB3ZWlnaHQsIHN0eWxlIH0pO1xuICAgICAgY29uc3QgbG9hZGVkRm9udCA9IGF3YWl0IGZvbnQubG9hZCgpO1xuICAgICAgZG9jdW1lbnQuZm9udHMuYWRkKGxvYWRlZEZvbnQpO1xuICAgICAgcmV0dXJuIGxvYWRlZEZvbnQ7XG4gICAgfSk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChsb2FkUHJvbWlzZXMpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIGxvYWRpbmcgZm9udCBmYW1pbHkgXCIke2NsZWFuRm9udEZhbWlseX1cIjpgLCBlcnJvcik7XG4gIH1cbn07IixudWxsLG51bGwsImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VDdXJyZW50RnJhbWUgfSBmcm9tICdyZW1vdGlvbic7XG5cbmV4cG9ydCBjb25zdCB1c2VBZGp1c3RlZFBvc2l0aW9uID0gKHksIGZhY2VEYXRhKSA9PiB7XG4gIGNvbnN0IGN1cnJlbnRGcmFtZSA9IHVzZUN1cnJlbnRGcmFtZSgpO1xuXG4gIC8vIE1lbW9pemUgZmFjZSBldmVudCBsb29rdXBcbiAgY29uc3QgY3VycmVudEZhY2VFdmVudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghZmFjZURhdGE/LmV2ZW50cz8ubGVuZ3RoKSB7XG4gICAgICByZXR1cm4geyBudW1QZW9wbGU6IDIgfTtcbiAgICB9XG4gICAgcmV0dXJuIGZhY2VEYXRhLmV2ZW50cy5maW5kTGFzdChcbiAgICAgIChldmVudCkgPT4gZXZlbnQuZnJhbWUgPD0gY3VycmVudEZyYW1lXG4gICAgKSB8fCB7IG51bVBlb3BsZTogMiB9O1xuICB9LCBbY3VycmVudEZyYW1lLCBmYWNlRGF0YT8uZXZlbnRzXSk7XG4gIFxuICAvLyBBZGp1c3QgWSBwb3NpdGlvbiBvbmx5IGlmIGZhY2UgZGV0ZWN0aW9uIGRhdGEgaXMgYXZhaWxhYmxlXG4gIGNvbnN0IGFkanVzdGVkWSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChjdXJyZW50RmFjZUV2ZW50Lm51bVBlb3BsZSA9PT0gMikge1xuICAgICAgcmV0dXJuIHk7XG4gICAgfVxuICAgIGlmICh5ID09PSA5NjApIHtcbiAgICAgIHJldHVybiB5ICogMiAtIDMwMDtcbiAgICB9XG4gICAgcmV0dXJuIHk7XG4gIH0sIFt5LCBjdXJyZW50RmFjZUV2ZW50Lm51bVBlb3BsZV0pO1xuXG4gIHJldHVybiB7IGN1cnJlbnRGYWNlRXZlbnQsIGFkanVzdGVkWSB9O1xufTsgIiwiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGNvbnN0IHVzZUFkanVzdGVkUGhyYXNlcyA9IChzdWJ0aXRsZXNEYXRhLCBtYXhDaGFyc1BlckxpbmUsIGZwcywgc2VnbWVudERhdGEgPSBbXSkgPT4ge1xuICByZXR1cm4gdXNlTWVtbygoKSA9PiB7XG4gICAgLy8gSWYgbm8gc2VnbWVudCBkYXRhLCByZXR1cm4gZW1wdHkgYXJyYXlcbiAgICBpZiAoIXNlZ21lbnREYXRhIHx8IHNlZ21lbnREYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGdldE1pc3NpbmdXb3JkUGhyYXNlc0lmRXhpc3QgPSAoc3RhcnRUaW1lLCBlbmRUaW1lKSA9PiB7XG4gICAgICAvLyBGaW5kIHdvcmRzIHRoYXQgZmFsbCBpbiB0aGUgZ2FwXG4gICAgICBjb25zdCBnYXBXb3JkcyA9IHN1YnRpdGxlc0RhdGEuZmlsdGVyKHdvcmQgPT4gXG4gICAgICAgIHdvcmQuc3RhcnQgPj0gc3RhcnRUaW1lICYmIHdvcmQuZW5kIDw9IGVuZFRpbWVcbiAgICAgICk7XG5cbiAgICAgIGlmIChnYXBXb3Jkcy5sZW5ndGggPT09IDApIHJldHVybiBbXTtcblxuICAgICAgLy8gQ3JlYXRlIHBocmFzZXMgZnJvbSBnYXAgd29yZHMgdXNpbmcgc2FtZSBsb2dpYyBhcyBzZWdtZW50IHBocmFzZXNcbiAgICAgIGNvbnN0IGdhcFBocmFzZXMgPSBbXTtcbiAgICAgIGxldCBjdXJyZW50UGhyYXNlID0ge1xuICAgICAgICB0ZXh0OiBcIlwiLFxuICAgICAgICB3b3JkczogW10sXG4gICAgICAgIHN0YXJ0OiBudWxsLFxuICAgICAgICBlbmQ6IG51bGwsXG4gICAgICAgIHNlZ21lbnRJbmRleDogLTEsICAvLyBTcGVjaWFsIGluZGV4IGZvciBnYXAgcGhyYXNlc1xuICAgICAgICBkdXJhdGlvbkluRnJhbWVzOiAwXG4gICAgICB9O1xuXG4gICAgICBnYXBXb3Jkcy5mb3JFYWNoKCh3b3JkLCB3b3JkSW5kZXgpID0+IHtcbiAgICAgICAgY29uc3Qgd29yZFdpdGhTcGFjZSA9IHdvcmRJbmRleCA9PT0gMCA/IHdvcmQud29yZCA6IGAgJHt3b3JkLndvcmR9YDtcbiAgICAgICAgY29uc3QgbmV3TGVuZ3RoID0gY3VycmVudFBocmFzZS50ZXh0Lmxlbmd0aCArIHdvcmRXaXRoU3BhY2UubGVuZ3RoO1xuXG4gICAgICAgIGlmIChuZXdMZW5ndGggPD0gbWF4Q2hhcnNQZXJMaW5lKSB7XG4gICAgICAgICAgLy8gQWRkIHRvIGN1cnJlbnQgcGhyYXNlXG4gICAgICAgICAgY3VycmVudFBocmFzZS50ZXh0ICs9IHdvcmRXaXRoU3BhY2U7XG4gICAgICAgICAgY3VycmVudFBocmFzZS53b3Jkcy5wdXNoKHdvcmQpO1xuICAgICAgICAgIGN1cnJlbnRQaHJhc2Uuc3RhcnQgPSBjdXJyZW50UGhyYXNlLnN0YXJ0ID09PSBudWxsID8gd29yZC5zdGFydCA6IGN1cnJlbnRQaHJhc2Uuc3RhcnQ7XG4gICAgICAgICAgY3VycmVudFBocmFzZS5lbmQgPSB3b3JkLmVuZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBGaW5hbGl6ZSBjdXJyZW50IHBocmFzZVxuICAgICAgICAgIGlmIChjdXJyZW50UGhyYXNlLndvcmRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGdhcFBocmFzZXMucHVzaChjdXJyZW50UGhyYXNlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBTdGFydCBuZXcgcGhyYXNlIHdpdGggY3VycmVudCB3b3JkXG4gICAgICAgICAgY3VycmVudFBocmFzZSA9IHtcbiAgICAgICAgICAgIHRleHQ6IHdvcmQud29yZCxcbiAgICAgICAgICAgIHdvcmRzOiBbd29yZF0sXG4gICAgICAgICAgICBzdGFydDogd29yZC5zdGFydCxcbiAgICAgICAgICAgIGVuZDogd29yZC5lbmQsXG4gICAgICAgICAgICBzZWdtZW50SW5kZXg6IC0xXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIEFkZCB0aGUgbGFzdCBwaHJhc2UgaWYgaXQgaGFzIHdvcmRzXG4gICAgICBpZiAoY3VycmVudFBocmFzZS53b3Jkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGdhcFBocmFzZXMucHVzaChjdXJyZW50UGhyYXNlKTtcbiAgICAgIH1cblxuICAgICAgLy8gUHJvY2VzcyB0aW1pbmcgZm9yIGdhcCBwaHJhc2VzXG4gICAgICBjb25zdCBwcm9jZXNzZWRHYXBQaHJhc2VzID0gZ2FwUGhyYXNlcy5tYXAoKHBocmFzZSwgcGhyYXNlSW5kZXgpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhcnRGcmFtZSA9IE1hdGguZmxvb3IocGhyYXNlLnN0YXJ0ICogZnBzKTtcbiAgICAgICAgbGV0IGVuZEZyYW1lO1xuXG4gICAgICAgIGlmIChwaHJhc2VJbmRleCA8IGdhcFBocmFzZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIGNvbnN0IG5leHRQaHJhc2UgPSBnYXBQaHJhc2VzW3BocmFzZUluZGV4ICsgMV07XG4gICAgICAgICAgY29uc3QgdGltZURpZmYgPSBuZXh0UGhyYXNlLnN0YXJ0IC0gcGhyYXNlLmVuZDtcbiAgICAgICAgICBlbmRGcmFtZSA9IHRpbWVEaWZmID4gMC4zID8gXG4gICAgICAgICAgICBNYXRoLmZsb29yKHBocmFzZS5lbmQgKiBmcHMpIDogXG4gICAgICAgICAgICBNYXRoLmZsb29yKG5leHRQaHJhc2Uuc3RhcnQgKiBmcHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVuZEZyYW1lID0gTWF0aC5mbG9vcihwaHJhc2UuZW5kICogZnBzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ucGhyYXNlLFxuICAgICAgICAgIHN0YXJ0RnJhbWUsXG4gICAgICAgICAgZW5kRnJhbWUsXG4gICAgICAgICAgZHVyYXRpb25JbkZyYW1lczogZW5kRnJhbWUgLSBzdGFydEZyYW1lICsgMVxuICAgICAgICB9O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBwcm9jZXNzZWRHYXBQaHJhc2VzO1xuICAgIH07XG5cbiAgICBjb25zdCBtYXN0ZXJQaHJhc2VzID0gW107XG5cbiAgICAvLyBDaGVjayBmb3Igd29yZHMgYmVmb3JlIHRoZSBmaXJzdCBzZWdtZW50XG4gICAgaWYgKHNlZ21lbnREYXRhLmxlbmd0aCA+IDAgJiYgc3VidGl0bGVzRGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaXJzdFNlZ21lbnRTdGFydCA9IHNlZ21lbnREYXRhWzBdLnN0YXJ0O1xuICAgICAgY29uc3QgZmlyc3RXb3JkU3RhcnQgPSAwOyAvLyBTdGFydCBmcm9tIHRoZSBiZWdpbm5pbmdcbiAgICAgIGNvbnN0IHByZVNlZ21lbnRQaHJhc2VzID0gZ2V0TWlzc2luZ1dvcmRQaHJhc2VzSWZFeGlzdChmaXJzdFdvcmRTdGFydCwgZmlyc3RTZWdtZW50U3RhcnQpO1xuICAgICAgaWYgKHByZVNlZ21lbnRQaHJhc2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbWFzdGVyUGhyYXNlcy5wdXNoKC4uLnByZVNlZ21lbnRQaHJhc2VzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBQcm9jZXNzIGVhY2ggc2VnbWVudCBhbmQgZ2FwcyBiZXR3ZWVuIHNlZ21lbnRzXG4gICAgc2VnbWVudERhdGEuZm9yRWFjaCgoc2VnbWVudCwgc2VnbWVudEluZGV4KSA9PiB7XG4gICAgICAvLyAxLiBHZXQgd29yZHMgZm9yIHRoaXMgc2VnbWVudFxuICAgICAgY29uc3Qgc2VnbWVudFdvcmRzID0gc3VidGl0bGVzRGF0YS5maWx0ZXIod29yZCA9PiB3b3JkLnNlZ21lbnRJZCA9PT0gc2VnbWVudEluZGV4KTtcbiAgICAgIFxuICAgICAgLy8gUHJvY2VzcyBzZWdtZW50IHBocmFzZXNcbiAgICAgIGlmIChzZWdtZW50V29yZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAvLyAyLiBDcmVhdGUgcGhyYXNlcyBmb3IgdGhpcyBzZWdtZW50XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTZWdtZW50UGhyYXNlcyA9IFtdO1xuICAgICAgICBsZXQgY3VycmVudFBocmFzZSA9IHtcbiAgICAgICAgICB0ZXh0OiBcIlwiLFxuICAgICAgICAgIHdvcmRzOiBbXSxcbiAgICAgICAgICBzdGFydDogbnVsbCxcbiAgICAgICAgICBlbmQ6IG51bGwsXG4gICAgICAgICAgc2VnbWVudEluZGV4XG4gICAgICAgIH07XG5cbiAgICAgICAgc2VnbWVudFdvcmRzLmZvckVhY2goKHdvcmQsIHdvcmRJbmRleCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHdvcmRXaXRoU3BhY2UgPSB3b3JkSW5kZXggPT09IDAgPyB3b3JkLndvcmQgOiBgICR7d29yZC53b3JkfWA7XG4gICAgICAgICAgY29uc3QgbmV3TGVuZ3RoID0gY3VycmVudFBocmFzZS50ZXh0Lmxlbmd0aCArIHdvcmRXaXRoU3BhY2UubGVuZ3RoO1xuXG4gICAgICAgICAgaWYgKG5ld0xlbmd0aCA8PSBtYXhDaGFyc1BlckxpbmUpIHtcbiAgICAgICAgICAgIC8vIEFkZCB0byBjdXJyZW50IHBocmFzZVxuICAgICAgICAgICAgY3VycmVudFBocmFzZS50ZXh0ICs9IHdvcmRXaXRoU3BhY2U7XG4gICAgICAgICAgICBjdXJyZW50UGhyYXNlLndvcmRzLnB1c2god29yZCk7XG4gICAgICAgICAgICBjdXJyZW50UGhyYXNlLnN0YXJ0ID0gY3VycmVudFBocmFzZS5zdGFydCA9PT0gbnVsbCA/IHdvcmQuc3RhcnQgOiBjdXJyZW50UGhyYXNlLnN0YXJ0O1xuICAgICAgICAgICAgY3VycmVudFBocmFzZS5lbmQgPSB3b3JkLmVuZDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gRmluYWxpemUgY3VycmVudCBwaHJhc2VcbiAgICAgICAgICAgIGlmIChjdXJyZW50UGhyYXNlLndvcmRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgY3VycmVudFNlZ21lbnRQaHJhc2VzLnB1c2goY3VycmVudFBocmFzZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFN0YXJ0IG5ldyBwaHJhc2Ugd2l0aCBjdXJyZW50IHdvcmRcbiAgICAgICAgICAgIGN1cnJlbnRQaHJhc2UgPSB7XG4gICAgICAgICAgICAgIHRleHQ6IHdvcmQud29yZCxcbiAgICAgICAgICAgICAgd29yZHM6IFt3b3JkXSxcbiAgICAgICAgICAgICAgc3RhcnQ6IHdvcmQuc3RhcnQsXG4gICAgICAgICAgICAgIGVuZDogd29yZC5lbmQsXG4gICAgICAgICAgICAgIHNlZ21lbnRJbmRleFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIEFkZCB0aGUgbGFzdCBwaHJhc2UgaWYgaXQgaGFzIHdvcmRzXG4gICAgICAgIGlmIChjdXJyZW50UGhyYXNlLndvcmRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjdXJyZW50U2VnbWVudFBocmFzZXMucHVzaChjdXJyZW50UGhyYXNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDMuIFByb2Nlc3MgdGltaW5nIGZvciBwaHJhc2VzXG4gICAgICAgIGNvbnN0IHByb2Nlc3NlZFBocmFzZXMgPSBjdXJyZW50U2VnbWVudFBocmFzZXMubWFwKChwaHJhc2UsIHBocmFzZUluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RhcnRGcmFtZSA9IE1hdGguZmxvb3IocGhyYXNlLnN0YXJ0ICogZnBzKTtcbiAgICAgICAgICBsZXQgZW5kRnJhbWU7XG5cbiAgICAgICAgICAvLyBDYWxjdWxhdGUgZW5kIGZyYW1lIGJhc2VkIG9uIG5leHQgcGhyYXNlIG9yIHNlZ21lbnQgZW5kXG4gICAgICAgICAgaWYgKHBocmFzZUluZGV4IDwgY3VycmVudFNlZ21lbnRQaHJhc2VzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRQaHJhc2UgPSBjdXJyZW50U2VnbWVudFBocmFzZXNbcGhyYXNlSW5kZXggKyAxXTtcbiAgICAgICAgICAgIGNvbnN0IHRpbWVEaWZmID0gbmV4dFBocmFzZS5zdGFydCAtIHBocmFzZS5lbmQ7XG4gICAgICAgICAgICBlbmRGcmFtZSA9IHRpbWVEaWZmID4gMC4zID8gXG4gICAgICAgICAgICAgIE1hdGguZmxvb3IocGhyYXNlLmVuZCAqIGZwcykgOiBcbiAgICAgICAgICAgICAgTWF0aC5mbG9vcihuZXh0UGhyYXNlLnN0YXJ0ICogZnBzKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZW5kRnJhbWUgPSBNYXRoLmZsb29yKHBocmFzZS5lbmQgKiBmcHMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEVuc3VyZSBwaHJhc2UgZG9lc24ndCBleHRlbmQgYmV5b25kIHNlZ21lbnQgYm91bmRhcmllc1xuICAgICAgICAgIGVuZEZyYW1lID0gTWF0aC5taW4oZW5kRnJhbWUsIE1hdGguZmxvb3Ioc2VnbWVudC5lbmQgKiBmcHMpKTtcblxuICAgICAgICAgIGNvbnN0IHByb2Nlc3NlZFBocmFzZSA9IHtcbiAgICAgICAgICAgIC4uLnBocmFzZSxcbiAgICAgICAgICAgIHN0YXJ0RnJhbWUsXG4gICAgICAgICAgICBlbmRGcmFtZSxcbiAgICAgICAgICAgIGR1cmF0aW9uSW5GcmFtZXM6IGVuZEZyYW1lIC0gc3RhcnRGcmFtZSArIDFcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiBwcm9jZXNzZWRQaHJhc2U7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIDQuIEFkZCB0byBtYXN0ZXIgYXJyYXlcbiAgICAgICAgbWFzdGVyUGhyYXNlcy5wdXNoKC4uLnByb2Nlc3NlZFBocmFzZXMpO1xuICAgICAgfVxuXG4gICAgICAvLyBDaGVjayBmb3IgZ2FwIGFmdGVyIHRoaXMgc2VnbWVudFxuICAgICAgaWYgKHNlZ21lbnRJbmRleCA8IHNlZ21lbnREYXRhLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgY29uc3QgbmV4dFNlZ21lbnQgPSBzZWdtZW50RGF0YVtzZWdtZW50SW5kZXggKyAxXTtcbiAgICAgICAgY29uc3QgZ2FwUGhyYXNlcyA9IGdldE1pc3NpbmdXb3JkUGhyYXNlc0lmRXhpc3Qoc2VnbWVudC5lbmQsIG5leHRTZWdtZW50LnN0YXJ0KTtcbiAgICAgICAgaWYgKGdhcFBocmFzZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIG1hc3RlclBocmFzZXMucHVzaCguLi5nYXBQaHJhc2VzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gU29ydCBmaW5hbCBwaHJhc2VzIGJ5IHN0YXJ0IHRpbWVcbiAgICBtYXN0ZXJQaHJhc2VzLnNvcnQoKGEsIGIpID0+IGEuc3RhcnQgLSBiLnN0YXJ0KTtcbiAgICBcbiAgICByZXR1cm4gbWFzdGVyUGhyYXNlcztcbiAgfSwgW3N1YnRpdGxlc0RhdGEsIG1heENoYXJzUGVyTGluZSwgZnBzLCBzZWdtZW50RGF0YV0pO1xufTsgIl0sIm5hbWVzIjpbImVzdGltYXRlVGV4dFdpZHRoIiwidGV4dCIsImZvbnRTaXplIiwiZm9udEZhbWlseSIsImNhbnZhcyIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImNvbnRleHQiLCJnZXRDb250ZXh0IiwiZm9udCIsImNvbmNhdCIsIm1lYXN1cmVUZXh0Iiwid2lkdGgiLCJnZW5lcmF0ZU91dGxpbmVTaGFkb3ciLCJjYWNoZSIsIk1hcCIsImNvbG9yIiwib3V0bGluZVN0eWxlIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwia2V5IiwiaGFzIiwiZ2V0Iiwic2hhZG93cyIsInBhcnNlZFdpZHRoIiwicGFyc2VJbnQiLCJwdXNoIiwiaGFsZldpZHRoIiwiTWF0aCIsInJvdW5kIiwiaSIsImFuZ2xlIiwiUEkiLCJ4IiwiY29zIiwieSIsInNpbiIsInJlc3VsdCIsImpvaW4iLCJzZXQiLCJTdWJ0aXRsZVRleHQiLCJtZW1vIiwiX3JlZiIsInN0eWxlIiwiYW5pbWF0aW9uU3R5bGUiLCJmcmFtZSIsInN0YXJ0RnJhbWUiLCJyYW5kb21Db2xvcnMiLCJ3b3JkcyIsImZwcyIsImhpZ2hsaWdodFdvcmRzQ29sb3IiLCJyZWxhdGl2ZUZyYW1lIiwic2NhbGUiLCJ1c2VNZW1vIiwic3ByaW5nIiwiZnJvbSIsInRvIiwiY29uZmlnIiwiZGFtcGluZyIsInN0aWZmbmVzcyIsInNwcmluZ1ZhbHVlIiwibWFzcyIsInRyYW5zbGF0ZVkiLCJ0cmFuc2xhdGVWYWx1ZSIsImFkanVzdGVkRm9udFNpemUiLCJtYXhMaW5lV2lkdGgiLCJiYXNlRm9udFNpemUiLCJ0ZXh0V2lkdGgiLCJzY2FsZUZhY3RvciIsImZsb29yIiwiYW5pbWF0ZWRTdHlsZSIsImJhc2VQYWRkaW5nIiwiYmFja2dyb3VuZFBhZGRpbmciLCJzaGFkb3dJbnRlbnNpdHkiLCJzaGFkb3dDb2xvciIsInNoYWRvd0JsdXIiLCJzaGFkb3dPZmZzZXRYIiwic2hhZG93T2Zmc2V0WSIsInRleHRTaGFkb3ciLCJoZXhUb1JnYmEiLCJoZXgiLCJvcGFjaXR5Iiwic2hvcnRoYW5kUmVnZXgiLCJyZXBsYWNlIiwibSIsInIiLCJnIiwiYiIsImV4ZWMiLCJiYWNrZ3JvdW5kQ29sb3IiLCJiYWNrZ3JvdW5kT3BhY2l0eSIsInBhcnNlRmxvYXQiLCJ0cmltIiwiYmFja2dyb3VuZCIsImhhc0JhY2tncm91bmQiLCJoYXNTaGFkb3ciLCJib3JkZXJSYWRpdXMiLCJiYWNrZ3JvdW5kQm9yZGVyUmFkaXVzIiwiaXNXcmFwcGVkIiwiYmFja2dyb3VuZEZpbGxTdHlsZSIsInBhZGRpbmdWYWx1ZSIsInBhZGRpbmciLCJkaXNwbGF5IiwiYmFzZVN0eWxlIiwiX29iamVjdFNwcmVhZCIsIm92ZXJmbG93IiwiYm94U2hhZG93IiwidHJhbnNmb3JtIiwid3JhcHBlclN0eWxlIiwicG9zaXRpb24iLCJ2ZXJ0aWNhbFN0cmV0Y2giLCJ3aGl0ZVNwYWNlIiwiYWxpZ25JdGVtcyIsIndpbGxDaGFuZ2UiLCJsZWZ0IiwidG9wIiwicmlnaHQiLCJib3R0b20iLCJvdXRsaW5lQ29sb3IiLCJvdXRsaW5lV2lkdGgiLCJXZWJraXRUZXh0RmlsbENvbG9yIiwiekluZGV4IiwibWFpblRleHRTdHlsZSIsIldlYmtpdFRleHRTdHJva2UiLCJ0ZXh0V29yZHMiLCJzcGxpdCIsImN1cnJlbnRXb3JkVGltZSIsInBocmFzZUFtcGxpZmllZFN0eWxlIiwiQXJyYXkiLCJpc0FycmF5IiwiYW1wbGlmaWVkQ29sb3JzIiwiZmlyc3RXb3JkIiwid29yZCIsImdyYWRpZW50SW5kZXgiLCJyYW5kb20iLCJncmFkaWVudCIsImNvbG9ycyIsImJhY2tncm91bmRDbGlwIiwiV2Via2l0QmFja2dyb3VuZENsaXAiLCJjb25zb2xlIiwibG9nIiwiX3R5cGVvZiIsImFtcGxpZmllZENvbG9yIiwidHlwZSIsInJhbmRvbUNvbG9yRGF0YSIsImVuYWJsZWQiLCJzaG91bGRDb2xvciIsInBjdEFwcGxpZWQiLCJfcmVmMiIsInJhbmRvbVdvcmRDb3VudFJhbmdlIiwiX3JlZjMiLCJfc2xpY2VkVG9BcnJheSIsIm1pbldvcmRzIiwibWF4V29yZHMiLCJyYW5nZSIsInJhbmRvbVdvcmRDb3VudCIsIm1heFN0YXJ0SW5kZXgiLCJtYXgiLCJzdGFydEluZGV4IiwicmFuZG9tQ29sb3JPYmoiLCJwaHJhc2VTdHlsZSIsIndvcmRDb250ZW50IiwibWFwIiwiaW5kZXgiLCJoaWdobGlnaHRlZE1hdGNoIiwibWF0Y2giLCJpc0hpZ2hsaWdodGVkIiwiZGlzcGxheVdvcmQiLCJzaG91bGRDb2xvclRoaXNXb3JkIiwid29yZFRpbWluZyIsImhhc0JlZW5TcG9rZW4iLCJlbmQiLCJpc0N1cnJlbnRseVNwb2tlbiIsInN0YXJ0IiwidGV4dEhpZ2hsaWdodFBlcnNpc3RzIiwic2hvdWxkSGlnaGxpZ2h0IiwiYW1wbGlmeVNwb2tlbldvcmRzIiwid29yZFN0eWxlIiwiYW1wbGlmaWVkT3BhY2l0eSIsInVuQW1wbGlmaWVkT3BhY2l0eSIsImNvbnRhaW5lclN0eWxlIiwibWFyZ2luUmlnaHQiLCJSZWFjdCIsImN1cnJlbnRXb3JkQmxvY2siLCJjb250ZW50IiwiY3VycmVudFdvcmRCbG9ja1BhZGRpbmciLCJoZWlnaHQiLCJjdXJyZW50V29yZEJsb2NrQmFja2dyb3VuZENvbG9yIiwiY3VycmVudFdvcmRCbG9ja09wYWNpdHkiLCJjdXJyZW50V29yZEJsb2NrQm9yZGVyUmFkaXVzIiwicG9pbnRlckV2ZW50cyIsImJveFNpemluZyIsInByZXZQcm9wcyIsIm5leHRQcm9wcyIsImVzc2VudGlhbFByb3BzIiwiaGFzRXNzZW50aWFsUHJvcHNDaGFuZ2VkIiwic29tZSIsInByb3AiLCJKU09OIiwic3RyaW5naWZ5IiwiZmluZFBocmFzZXNJblJhbmdlIiwidGltZSIsInBocmFzZXMiLCJtaWQiLCJwaHJhc2UiLCJoZXhUb1JnYiIsInNsaWNlIiwidXNlVGV4dFN0eWxlIiwicHJlc2V0IiwiYWRqdXN0ZWRZIiwidmlkZW9XaWR0aCIsImRyb3BTaGFkb3ciLCJzaGFkb3dFbmFibGVkIiwicGFkZGluZ1giLCJiYWNrZ3JvdW5kUGFkZGluZ1giLCJwYWRkaW5nWSIsImJhY2tncm91bmRQYWRkaW5nWSIsImZvbnRXZWlnaHQiLCJmb250Q29sb3IiLCJ0ZXh0VHJhbnNmb3JtIiwidGV4dENhc2UiLCJmb250U3R5bGUiLCJpc0l0YWxpYyIsInRleHRBbGlnbiIsImxldHRlclNwYWNpbmciLCJ0ZXh0U3BhY2luZyIsInRyYW5zZm9ybU9yaWdpbiIsIm1heFdpZHRoIiwiZmlsdGVyIiwiYW1wbGlmeU9wYWNpdHlUcmFuc2l0aW9uRHVyYXRpb24iLCJGT05UX01BUCIsInNyYyIsIndlaWdodCIsImxvYWREb2N1bWVudEZvbnRzIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUyIiwiY2xlYW5Gb250RmFtaWx5IiwiZm9udFZhcmlhdGlvbnMiLCJsb2FkUHJvbWlzZXMiLCJ3cmFwIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwicHJldiIsIm5leHQiLCJhYnJ1cHQiLCJ3YXJuIiwiX2NhbGxlZSIsImxvYWRlZEZvbnQiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwiRm9udEZhY2UiLCJsb2FkIiwic2VudCIsImZvbnRzIiwiYWRkIiwic3RvcCIsIl94MiIsImFwcGx5IiwiUHJvbWlzZSIsImFsbCIsInQwIiwiZXJyb3IiLCJfeCIsImFkZFBpeGVsVW5pdCIsInZhbHVlIiwiZW5kc1dpdGgiLCJTdWJ0aXRsZXNDb21wb3NpdGlvbiIsIl9hIiwic3R5bGVDb25maWciLCJjdXJyZW50RnJhbWUiLCJjdXJyZW50VGltZSIsInVzZUVmZmVjdCIsImN1cnJlbnRQaHJhc2VzIiwiX2pzeCIsIl9fYXNzaWduIiwiY2hpbGRyZW4iLCJwcm9wcyIsIlN1YnRpdGxlcyIsImRldk1vZGUiLCJQbGF5ZXIiLCJjb21wb25lbnQiLCJpbnB1dFByb3BzIiwiZHVyYXRpb25JbkZyYW1lcyIsImNvbXBvc2l0aW9uV2lkdGgiLCJjb21wb3NpdGlvbkhlaWdodCIsImNvbnRyb2xzIiwiYXV0b1BsYXkiLCJsb29wIiwidXNlU3R5bGVDb25maWciLCJzdWJ0aXRsZVN0eWxlIiwidGV4dFN0eWxlIiwibmFtZSIsImNhcHRpb25Qb3NpdGlvbiIsInVzZUFkanVzdGVkUG9zaXRpb24iLCJmYWNlRGF0YSIsInVzZUN1cnJlbnRGcmFtZSIsImN1cnJlbnRGYWNlRXZlbnQiLCJfZmFjZURhdGEkZXZlbnRzIiwiZXZlbnRzIiwibnVtUGVvcGxlIiwiZmluZExhc3QiLCJldmVudCIsInVzZUFkanVzdGVkUGhyYXNlcyIsInN1YnRpdGxlc0RhdGEiLCJtYXhDaGFyc1BlckxpbmUiLCJzZWdtZW50RGF0YSIsImdldE1pc3NpbmdXb3JkUGhyYXNlc0lmRXhpc3QiLCJzdGFydFRpbWUiLCJlbmRUaW1lIiwiZ2FwV29yZHMiLCJnYXBQaHJhc2VzIiwiY3VycmVudFBocmFzZSIsInNlZ21lbnRJbmRleCIsImZvckVhY2giLCJ3b3JkSW5kZXgiLCJ3b3JkV2l0aFNwYWNlIiwibmV3TGVuZ3RoIiwicHJvY2Vzc2VkR2FwUGhyYXNlcyIsInBocmFzZUluZGV4IiwiZW5kRnJhbWUiLCJuZXh0UGhyYXNlIiwidGltZURpZmYiLCJtYXN0ZXJQaHJhc2VzIiwiZmlyc3RTZWdtZW50U3RhcnQiLCJmaXJzdFdvcmRTdGFydCIsInByZVNlZ21lbnRQaHJhc2VzIiwiX3RvQ29uc3VtYWJsZUFycmF5Iiwic2VnbWVudCIsInNlZ21lbnRXb3JkcyIsInNlZ21lbnRJZCIsImN1cnJlbnRTZWdtZW50UGhyYXNlcyIsInByb2Nlc3NlZFBocmFzZXMiLCJtaW4iLCJwcm9jZXNzZWRQaHJhc2UiLCJuZXh0U2VnbWVudCIsInNvcnQiLCJhIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBZUE7QUFDTyxJQUFJLFFBQVEsR0FBRyxXQUFXO0FBQ2pDLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksU0FBUyxRQUFRLENBQUMsQ0FBQyxFQUFFO0FBQ3JELFFBQVEsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDN0QsWUFBWSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FB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QUEsQ0FBQWpCLE1BQUEsQ0FBSWtCLFNBQVMsRUFBQWxCLEtBQUFBLENBQUFBLENBQUFBLE1BQUEsQ0FBTWUsV0FBVyxXQUFBZixNQUFBLENBQVFNLEtBQUssQ0FBRSxDQUFDLENBQUM7QUFDM0RRLE1BQUFBLE9BQU8sQ0FBQ0csSUFBSSxDQUFBLEdBQUEsQ0FBQWpCLE1BQUEsQ0FBS2tCLFNBQVMsRUFBQWxCLEtBQUFBLENBQUFBLENBQUFBLE1BQUEsQ0FBTWUsV0FBVyxXQUFBZixNQUFBLENBQVFNLEtBQUssQ0FBRSxDQUFDLENBQUM7QUFDNURRLE1BQUFBLE9BQU8sQ0FBQ0csSUFBSSxDQUFBLEdBQUEsQ0FBQWpCLE1BQUEsQ0FBS2UsV0FBVyxFQUFBZixLQUFBQSxDQUFBQSxDQUFBQSxNQUFBLENBQU1rQixTQUFTLFdBQUFsQixNQUFBLENBQVFNLEtBQUssQ0FBRSxDQUFDLENBQUM7QUFDNURRLE1BQUFBLE9BQU8sQ0FBQ0csSUFBSSxDQUFBLEdBQUEsQ0FBQWpCLE1BQUEsQ0FBS2UsV0FBVyxFQUFBZixNQUFBQSxDQUFBQSxDQUFBQSxNQUFBLENBQU9rQixTQUFTLFdBQUFsQixNQUFBLENBQVFNLEtBQUssQ0FBRSxDQUFDLENBQUM7QUFDN0RRLE1BQUFBLE9BQU8sQ0FBQ0csSUFBSSxDQUFBLEdBQUEsQ0FBQWpCLE1BQUEsQ0FBS2tCLFNBQVMsRUFBQWxCLE1BQUFBLENBQUFBLENBQUFBLE1BQUEsQ0FBT2UsV0FBVyxXQUFBZixNQUFBLENBQVFNLEtBQUssQ0FBRSxDQUFDLENBQUM7QUFDL0QsS0FBQyxNQUFNO0FBQ0w7QUFDQSxNQUFBLEtBQUssSUFBSWUsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHLEdBQUcsRUFBRUEsQ0FBQyxJQUFJLElBQUksRUFBRTtRQUNsQyxJQUFNQyxLQUFLLEdBQUlELENBQUMsR0FBR0YsSUFBSSxDQUFDSSxFQUFFLEdBQUksR0FBRyxDQUFBO0FBQ2pDLFFBQUEsSUFBTUMsQ0FBQyxHQUFHTCxJQUFJLENBQUNDLEtBQUssQ0FBQ0QsSUFBSSxDQUFDTSxH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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsiLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMF19
2509
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZXNtLmpzIiwic291cmNlcyI6WyIuLi9ub2RlX21vZHVsZXMvdHNsaWIvdHNsaWIuZXM2LmpzIiwiLi4vc3JjL2NvbXBvbmVudHMvU3VidGl0bGVUZXh0LmpzeCIsIi4uL3NyYy91dGlscy9maW5kUGhyYXNlc0luUmFuZ2UudHMiLCIuLi9zcmMvaG9va3MvdXNlVGV4dFN0eWxlLmpzIiwiLi4vc3JjL2hvb2tzL2ZvbnRMb2FkZXIuanMiLCIuLi9zcmMvY29tcG9uZW50cy9TdWJ0aXRsZXMudHN4IiwiLi4vc3JjL2hvb2tzL3VzZVN0eWxlQ29uZmlnLnRzIiwiLi4vc3JjL2hvb2tzL3VzZUFkanVzdGVkUG9zaXRpb24uanMiLCIuLi9zcmMvaG9va3MvdXNlQWRqdXN0ZWRQaHJhc2VzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSwgU3VwcHJlc3NlZEVycm9yLCBTeW1ib2wsIEl0ZXJhdG9yICovXHJcblxyXG52YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcclxuICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcclxuICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XHJcbiAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxyXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcclxuICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXHJcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcclxuICAgICAgICB9XHJcbiAgICByZXR1cm4gdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcclxuICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xyXG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcclxuICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3BhcmFtKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2VzRGVjb3JhdGUoY3RvciwgZGVzY3JpcHRvckluLCBkZWNvcmF0b3JzLCBjb250ZXh0SW4sIGluaXRpYWxpemVycywgZXh0cmFJbml0aWFsaXplcnMpIHtcclxuICAgIGZ1bmN0aW9uIGFjY2VwdChmKSB7IGlmIChmICE9PSB2b2lkIDAgJiYgdHlwZW9mIGYgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkZ1bmN0aW9uIGV4cGVjdGVkXCIpOyByZXR1cm4gZjsgfVxyXG4gICAgdmFyIGtpbmQgPSBjb250ZXh0SW4ua2luZCwga2V5ID0ga2luZCA9PT0gXCJnZXR0ZXJcIiA/IFwiZ2V0XCIgOiBraW5kID09PSBcInNldHRlclwiID8gXCJzZXRcIiA6IFwidmFsdWVcIjtcclxuICAgIHZhciB0YXJnZXQgPSAhZGVzY3JpcHRvckluICYmIGN0b3IgPyBjb250ZXh0SW5bXCJzdGF0aWNcIl0gPyBjdG9yIDogY3Rvci5wcm90b3R5cGUgOiBudWxsO1xyXG4gICAgdmFyIGRlc2NyaXB0b3IgPSBkZXNjcmlwdG9ySW4gfHwgKHRhcmdldCA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBjb250ZXh0SW4ubmFtZSkgOiB7fSk7XHJcbiAgICB2YXIgXywgZG9uZSA9IGZhbHNlO1xyXG4gICAgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICB2YXIgY29udGV4dCA9IHt9O1xyXG4gICAgICAgIGZvciAodmFyIHAgaW4gY29udGV4dEluKSBjb250ZXh0W3BdID0gcCA9PT0gXCJhY2Nlc3NcIiA/IHt9IDogY29udGV4dEluW3BdO1xyXG4gICAgICAgIGZvciAodmFyIHAgaW4gY29udGV4dEluLmFjY2VzcykgY29udGV4dC5hY2Nlc3NbcF0gPSBjb250ZXh0SW4uYWNjZXNzW3BdO1xyXG4gICAgICAgIGNvbnRleHQuYWRkSW5pdGlhbGl6ZXIgPSBmdW5jdGlvbiAoZikgeyBpZiAoZG9uZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBhZGQgaW5pdGlhbGl6ZXJzIGFmdGVyIGRlY29yYXRpb24gaGFzIGNvbXBsZXRlZFwiKTsgZXh0cmFJbml0aWFsaXplcnMucHVzaChhY2NlcHQoZiB8fCBudWxsKSk7IH07XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9ICgwLCBkZWNvcmF0b3JzW2ldKShraW5kID09PSBcImFjY2Vzc29yXCIgPyB7IGdldDogZGVzY3JpcHRvci5nZXQsIHNldDogZGVzY3JpcHRvci5zZXQgfSA6IGRlc2NyaXB0b3Jba2V5XSwgY29udGV4dCk7XHJcbiAgICAgICAgaWYgKGtpbmQgPT09IFwiYWNjZXNzb3JcIikge1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0ID09PSB2b2lkIDApIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0ID09PSBudWxsIHx8IHR5cGVvZiByZXN1bHQgIT09IFwib2JqZWN0XCIpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJPYmplY3QgZXhwZWN0ZWRcIik7XHJcbiAgICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5nZXQpKSBkZXNjcmlwdG9yLmdldCA9IF87XHJcbiAgICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5zZXQpKSBkZXNjcmlwdG9yLnNldCA9IF87XHJcbiAgICAgICAgICAgIGlmIChfID0gYWNjZXB0KHJlc3VsdC5pbml0KSkgaW5pdGlhbGl6ZXJzLnVuc2hpZnQoXyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKF8gPSBhY2NlcHQocmVzdWx0KSkge1xyXG4gICAgICAgICAgICBpZiAoa2luZCA9PT0gXCJmaWVsZFwiKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTtcclxuICAgICAgICAgICAgZWxzZSBkZXNjcmlwdG9yW2tleV0gPSBfO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0YXJnZXQpIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGNvbnRleHRJbi5uYW1lLCBkZXNjcmlwdG9yKTtcclxuICAgIGRvbmUgPSB0cnVlO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcnVuSW5pdGlhbGl6ZXJzKHRoaXNBcmcsIGluaXRpYWxpemVycywgdmFsdWUpIHtcclxuICAgIHZhciB1c2VWYWx1ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAyO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbml0aWFsaXplcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICB2YWx1ZSA9IHVzZVZhbHVlID8gaW5pdGlhbGl6ZXJzW2ldLmNhbGwodGhpc0FyZywgdmFsdWUpIDogaW5pdGlhbGl6ZXJzW2ldLmNhbGwodGhpc0FyZyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdXNlVmFsdWUgPyB2YWx1ZSA6IHZvaWQgMDtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3Byb3BLZXkoeCkge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB4ID09PSBcInN5bWJvbFwiID8geCA6IFwiXCIuY29uY2F0KHgpO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc2V0RnVuY3Rpb25OYW1lKGYsIG5hbWUsIHByZWZpeCkge1xyXG4gICAgaWYgKHR5cGVvZiBuYW1lID09PSBcInN5bWJvbFwiKSBuYW1lID0gbmFtZS5kZXNjcmlwdGlvbiA/IFwiW1wiLmNvbmNhdChuYW1lLmRlc2NyaXB0aW9uLCBcIl1cIikgOiBcIlwiO1xyXG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmLCBcIm5hbWVcIiwgeyBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiBwcmVmaXggPyBcIlwiLmNvbmNhdChwcmVmaXgsIFwiIFwiLCBuYW1lKSA6IG5hbWUgfSk7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XHJcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnID0gT2JqZWN0LmNyZWF0ZSgodHlwZW9mIEl0ZXJhdG9yID09PSBcImZ1bmN0aW9uXCIgPyBJdGVyYXRvciA6IE9iamVjdCkucHJvdG90eXBlKTtcclxuICAgIHJldHVybiBnLm5leHQgPSB2ZXJiKDApLCBnW1widGhyb3dcIl0gPSB2ZXJiKDEpLCBnW1wicmV0dXJuXCJdID0gdmVyYigyKSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xyXG4gICAgICAgIHdoaWxlIChnICYmIChnID0gMCwgb3BbMF0gJiYgKF8gPSAwKSksIF8pIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcclxuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XHJcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cclxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2NyZWF0ZUJpbmRpbmcgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xyXG4gICAgaWYgKCFkZXNjIHx8IChcImdldFwiIGluIGRlc2MgPyAhbS5fX2VzTW9kdWxlIDogZGVzYy53cml0YWJsZSB8fCBkZXNjLmNvbmZpZ3VyYWJsZSkpIHtcclxuICAgICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xyXG4gICAgfVxyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCBkZXNjKTtcclxufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICBvW2syXSA9IG1ba107XHJcbn0pO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXhwb3J0U3RhcihtLCBvKSB7XHJcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIHApKSBfX2NyZWF0ZUJpbmRpbmcobywgbSwgcCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XHJcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xyXG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XHJcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XHJcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xyXG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XHJcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XHJcbiAgICBpZiAoIW0pIHJldHVybiBvO1xyXG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XHJcbiAgICBmaW5hbGx5IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbi8qKiBAZGVwcmVjYXRlZCAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWQoKSB7XHJcbiAgICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcclxuICAgICAgICBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbi8qKiBAZGVwcmVjYXRlZCAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheXMoKSB7XHJcbiAgICBmb3IgKHZhciBzID0gMCwgaSA9IDAsIGlsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGlsOyBpKyspIHMgKz0gYXJndW1lbnRzW2ldLmxlbmd0aDtcclxuICAgIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKylcclxuICAgICAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKylcclxuICAgICAgICAgICAgcltrXSA9IGFbal07XHJcbiAgICByZXR1cm4gcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXkodG8sIGZyb20sIHBhY2spIHtcclxuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xyXG4gICAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xyXG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0KHYpIHtcclxuICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0dlbmVyYXRvcih0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xyXG4gICAgcmV0dXJuIGkgPSBPYmplY3QuY3JlYXRlKCh0eXBlb2YgQXN5bmNJdGVyYXRvciA9PT0gXCJmdW5jdGlvblwiID8gQXN5bmNJdGVyYXRvciA6IE9iamVjdCkucHJvdG90eXBlKSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiLCBhd2FpdFJldHVybiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIGF3YWl0UmV0dXJuKGYpIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUodikudGhlbihmLCByZWplY3QpOyB9OyB9XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaWYgKGdbbl0pIHsgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgaWYgKGYpIGlbbl0gPSBmKGlbbl0pOyB9IH1cclxuICAgIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgfVxyXG4gICAgZnVuY3Rpb24gZnVsZmlsbCh2YWx1ZSkgeyByZXN1bWUoXCJuZXh0XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gcmVqZWN0KHZhbHVlKSB7IHJlc3VtZShcInRocm93XCIsIHZhbHVlKTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKGYsIHYpIHsgaWYgKGYodiksIHEuc2hpZnQoKSwgcS5sZW5ndGgpIHJlc3VtZShxWzBdWzBdLCBxWzBdWzFdKTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0RlbGVnYXRvcihvKSB7XHJcbiAgICB2YXIgaSwgcDtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiwgZnVuY3Rpb24gKGUpIHsgdGhyb3cgZTsgfSksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4sIGYpIHsgaVtuXSA9IG9bbl0gPyBmdW5jdGlvbiAodikgeyByZXR1cm4gKHAgPSAhcCkgPyB7IHZhbHVlOiBfX2F3YWl0KG9bbl0odikpLCBkb25lOiBmYWxzZSB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIG0gPSBvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgaTtcclxuICAgIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIGQsIHYpIHsgUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZnVuY3Rpb24odikgeyByZXNvbHZlKHsgdmFsdWU6IHYsIGRvbmU6IGQgfSk7IH0sIHJlamVjdCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWFrZVRlbXBsYXRlT2JqZWN0KGNvb2tlZCwgcmF3KSB7XHJcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxyXG4gICAgcmV0dXJuIGNvb2tlZDtcclxufTtcclxuXHJcbnZhciBfX3NldE1vZHVsZURlZmF1bHQgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBcImRlZmF1bHRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdiB9KTtcclxufSkgOiBmdW5jdGlvbihvLCB2KSB7XHJcbiAgICBvW1wiZGVmYXVsdFwiXSA9IHY7XHJcbn07XHJcblxyXG52YXIgb3duS2V5cyA9IGZ1bmN0aW9uKG8pIHtcclxuICAgIG93bktleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiAobykge1xyXG4gICAgICAgIHZhciBhciA9IFtdO1xyXG4gICAgICAgIGZvciAodmFyIGsgaW4gbykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBrKSkgYXJbYXIubGVuZ3RoXSA9IGs7XHJcbiAgICAgICAgcmV0dXJuIGFyO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBvd25LZXlzKG8pO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0U3Rhcihtb2QpIHtcclxuICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XHJcbiAgICB2YXIgcmVzdWx0ID0ge307XHJcbiAgICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgPSBvd25LZXlzKG1vZCksIGkgPSAwOyBpIDwgay5sZW5ndGg7IGkrKykgaWYgKGtbaV0gIT09IFwiZGVmYXVsdFwiKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGtbaV0pO1xyXG4gICAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIGtpbmQgPT09IFwibVwiID8gZiA6IGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEluKHN0YXRlLCByZWNlaXZlcikge1xyXG4gICAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XHJcbiAgICByZXR1cm4gdHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciA9PT0gc3RhdGUgOiBzdGF0ZS5oYXMocmVjZWl2ZXIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hZGREaXNwb3NhYmxlUmVzb3VyY2UoZW52LCB2YWx1ZSwgYXN5bmMpIHtcclxuICAgIGlmICh2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdm9pZCAwKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZC5cIik7XHJcbiAgICAgICAgdmFyIGRpc3Bvc2UsIGlubmVyO1xyXG4gICAgICAgIGlmIChhc3luYykge1xyXG4gICAgICAgICAgICBpZiAoIVN5bWJvbC5hc3luY0Rpc3Bvc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNEaXNwb3NlIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgICAgICAgICAgZGlzcG9zZSA9IHZhbHVlW1N5bWJvbC5hc3luY0Rpc3Bvc2VdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZGlzcG9zZSA9PT0gdm9pZCAwKSB7XHJcbiAgICAgICAgICAgIGlmICghU3ltYm9sLmRpc3Bvc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuZGlzcG9zZSBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICAgICAgICAgIGRpc3Bvc2UgPSB2YWx1ZVtTeW1ib2wuZGlzcG9zZV07XHJcbiAgICAgICAgICAgIGlmIChhc3luYykgaW5uZXIgPSBkaXNwb3NlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIGRpc3Bvc2UgIT09IFwiZnVuY3Rpb25cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBub3QgZGlzcG9zYWJsZS5cIik7XHJcbiAgICAgICAgaWYgKGlubmVyKSBkaXNwb3NlID0gZnVuY3Rpb24oKSB7IHRyeSB7IGlubmVyLmNhbGwodGhpcyk7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuIFByb21pc2UucmVqZWN0KGUpOyB9IH07XHJcbiAgICAgICAgZW52LnN0YWNrLnB1c2goeyB2YWx1ZTogdmFsdWUsIGRpc3Bvc2U6IGRpc3Bvc2UsIGFzeW5jOiBhc3luYyB9KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKGFzeW5jKSB7XHJcbiAgICAgICAgZW52LnN0YWNrLnB1c2goeyBhc3luYzogdHJ1ZSB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWx1ZTtcclxuXHJcbn1cclxuXHJcbnZhciBfU3VwcHJlc3NlZEVycm9yID0gdHlwZW9mIFN1cHByZXNzZWRFcnJvciA9PT0gXCJmdW5jdGlvblwiID8gU3VwcHJlc3NlZEVycm9yIDogZnVuY3Rpb24gKGVycm9yLCBzdXBwcmVzc2VkLCBtZXNzYWdlKSB7XHJcbiAgICB2YXIgZSA9IG5ldyBFcnJvcihtZXNzYWdlKTtcclxuICAgIHJldHVybiBlLm5hbWUgPSBcIlN1cHByZXNzZWRFcnJvclwiLCBlLmVycm9yID0gZXJyb3IsIGUuc3VwcHJlc3NlZCA9IHN1cHByZXNzZWQsIGU7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kaXNwb3NlUmVzb3VyY2VzKGVudikge1xyXG4gICAgZnVuY3Rpb24gZmFpbChlKSB7XHJcbiAgICAgICAgZW52LmVycm9yID0gZW52Lmhhc0Vycm9yID8gbmV3IF9TdXBwcmVzc2VkRXJyb3IoZSwgZW52LmVycm9yLCBcIkFuIGVycm9yIHdhcyBzdXBwcmVzc2VkIGR1cmluZyBkaXNwb3NhbC5cIikgOiBlO1xyXG4gICAgICAgIGVudi5oYXNFcnJvciA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB2YXIgciwgcyA9IDA7XHJcbiAgICBmdW5jdGlvbiBuZXh0KCkge1xyXG4gICAgICAgIHdoaWxlIChyID0gZW52LnN0YWNrLnBvcCgpKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXIuYXN5bmMgJiYgcyA9PT0gMSkgcmV0dXJuIHMgPSAwLCBlbnYuc3RhY2sucHVzaChyKSwgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihuZXh0KTtcclxuICAgICAgICAgICAgICAgIGlmIChyLmRpc3Bvc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gci5kaXNwb3NlLmNhbGwoci52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHIuYXN5bmMpIHJldHVybiBzIHw9IDIsIFByb21pc2UucmVzb2x2ZShyZXN1bHQpLnRoZW4obmV4dCwgZnVuY3Rpb24oZSkgeyBmYWlsKGUpOyByZXR1cm4gbmV4dCgpOyB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgcyB8PSAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBmYWlsKGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzID09PSAxKSByZXR1cm4gZW52Lmhhc0Vycm9yID8gUHJvbWlzZS5yZWplY3QoZW52LmVycm9yKSA6IFByb21pc2UucmVzb2x2ZSgpO1xyXG4gICAgICAgIGlmIChlbnYuaGFzRXJyb3IpIHRocm93IGVudi5lcnJvcjtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXh0KCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3Jld3JpdGVSZWxhdGl2ZUltcG9ydEV4dGVuc2lvbihwYXRoLCBwcmVzZXJ2ZUpzeCkge1xyXG4gICAgaWYgKHR5cGVvZiBwYXRoID09PSBcInN0cmluZ1wiICYmIC9eXFwuXFwuP1xcLy8udGVzdChwYXRoKSkge1xyXG4gICAgICAgIHJldHVybiBwYXRoLnJlcGxhY2UoL1xcLih0c3gpJHwoKD86XFwuZCk/KSgoPzpcXC5bXi4vXSs/KT8pXFwuKFtjbV0/KXRzJC9pLCBmdW5jdGlvbiAobSwgdHN4LCBkLCBleHQsIGNtKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0c3ggPyBwcmVzZXJ2ZUpzeCA/IFwiLmpzeFwiIDogXCIuanNcIiA6IGQgJiYgKCFleHQgfHwgIWNtKSA/IG0gOiAoZCArIGV4dCArIFwiLlwiICsgY20udG9Mb3dlckNhc2UoKSArIFwianNcIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGF0aDtcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gICAgX19leHRlbmRzOiBfX2V4dGVuZHMsXHJcbiAgICBfX2Fzc2lnbjogX19hc3NpZ24sXHJcbiAgICBfX3Jlc3Q6IF9fcmVzdCxcclxuICAgIF9fZGVjb3JhdGU6IF9fZGVjb3JhdGUsXHJcbiAgICBfX3BhcmFtOiBfX3BhcmFtLFxyXG4gICAgX19lc0RlY29yYXRlOiBfX2VzRGVjb3JhdGUsXHJcbiAgICBfX3J1bkluaXRpYWxpemVyczogX19ydW5Jbml0aWFsaXplcnMsXHJcbiAgICBfX3Byb3BLZXk6IF9fcHJvcEtleSxcclxuICAgIF9fc2V0RnVuY3Rpb25OYW1lOiBfX3NldEZ1bmN0aW9uTmFtZSxcclxuICAgIF9fbWV0YWRhdGE6IF9fbWV0YWRhdGEsXHJcbiAgICBfX2F3YWl0ZXI6IF9fYXdhaXRlcixcclxuICAgIF9fZ2VuZXJhdG9yOiBfX2dlbmVyYXRvcixcclxuICAgIF9fY3JlYXRlQmluZGluZzogX19jcmVhdGVCaW5kaW5nLFxyXG4gICAgX19leHBvcnRTdGFyOiBfX2V4cG9ydFN0YXIsXHJcbiAgICBfX3ZhbHVlczogX192YWx1ZXMsXHJcbiAgICBfX3JlYWQ6IF9fcmVhZCxcclxuICAgIF9fc3ByZWFkOiBfX3NwcmVhZCxcclxuICAgIF9fc3ByZWFkQXJyYXlzOiBfX3NwcmVhZEFycmF5cyxcclxuICAgIF9fc3ByZWFkQXJyYXk6IF9fc3ByZWFkQXJyYXksXHJcbiAgICBfX2F3YWl0OiBfX2F3YWl0LFxyXG4gICAgX19hc3luY0dlbmVyYXRvcjogX19hc3luY0dlbmVyYXRvcixcclxuICAgIF9fYXN5bmNEZWxlZ2F0b3I6IF9fYXN5bmNEZWxlZ2F0b3IsXHJcbiAgICBfX2FzeW5jVmFsdWVzOiBfX2FzeW5jVmFsdWVzLFxyXG4gICAgX19tYWtlVGVtcGxhdGVPYmplY3Q6IF9fbWFrZVRlbXBsYXRlT2JqZWN0LFxyXG4gICAgX19pbXBvcnRTdGFyOiBfX2ltcG9ydFN0YXIsXHJcbiAgICBfX2ltcG9ydERlZmF1bHQ6IF9faW1wb3J0RGVmYXVsdCxcclxuICAgIF9fY2xhc3NQcml2YXRlRmllbGRHZXQ6IF9fY2xhc3NQcml2YXRlRmllbGRHZXQsXHJcbiAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0OiBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0LFxyXG4gICAgX19jbGFzc1ByaXZhdGVGaWVsZEluOiBfX2NsYXNzUHJpdmF0ZUZpZWxkSW4sXHJcbiAgICBfX2FkZERpc3Bvc2FibGVSZXNvdXJjZTogX19hZGREaXNwb3NhYmxlUmVzb3VyY2UsXHJcbiAgICBfX2Rpc3Bvc2VSZXNvdXJjZXM6IF9fZGlzcG9zZVJlc291cmNlcyxcclxuICAgIF9fcmV3cml0ZVJlbGF0aXZlSW1wb3J0RXh0ZW5zaW9uOiBfX3Jld3JpdGVSZWxhdGl2ZUltcG9ydEV4dGVuc2lvbixcclxufTtcclxuIiwiaW1wb3J0IFJlYWN0LHsgbWVtbywgdXNlTWVtbywgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBzcHJpbmcsIHJhbmRvbSwgdXNlQ3VycmVudEZyYW1lIH0gZnJvbSBcInJlbW90aW9uXCI7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byBlc3RpbWF0ZSB0ZXh0IHdpZHRoXG5jb25zdCBlc3RpbWF0ZVRleHRXaWR0aCA9ICh0ZXh0LCBmb250U2l6ZSwgZm9udEZhbWlseSkgPT4ge1xuICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICBjb250ZXh0LmZvbnQgPSBgJHtmb250U2l6ZX1weCAke2ZvbnRGYW1pbHl9YDtcbiAgcmV0dXJuIGNvbnRleHQubWVhc3VyZVRleHQodGV4dCkud2lkdGg7XG59O1xuXG4vLyBIZWxwZXIgZnVuY3Rpb24gdG8gZ2VuZXJhdGUgb3V0bGluZSBzaGFkb3dcbmNvbnN0IGdlbmVyYXRlT3V0bGluZVNoYWRvdyA9ICgoKSA9PiB7XG4gIGNvbnN0IGNhY2hlID0gbmV3IE1hcCgpO1xuICBcbiAgcmV0dXJuIChjb2xvciwgd2lkdGgsIG91dGxpbmVTdHlsZSA9IFwicm91bmRcIikgPT4ge1xuICAgIGNvbnN0IGtleSA9IGAke2NvbG9yfS0ke3dpZHRofS0ke291dGxpbmVTdHlsZX1gO1xuICAgIGlmIChjYWNoZS5oYXMoa2V5KSkge1xuICAgICAgcmV0dXJuIGNhY2hlLmdldChrZXkpO1xuICAgIH1cbiAgICBcbiAgICBjb25zdCBzaGFkb3dzID0gW107XG4gICAgY29uc3QgcGFyc2VkV2lkdGggPSBwYXJzZUludCh3aWR0aCwgMTApO1xuICAgIFxuICAgIGlmIChvdXRsaW5lU3R5bGUgPT09IFwiYW5ndWxhclwiKSB7XG4gICAgICAvLyBDcmVhdGUgc2hhcnAgY29ybmVycyBieSB1c2luZyBwZXJwZW5kaWN1bGFyIGxpbmVzXG4gICAgICAvLyBUb3AsIHJpZ2h0LCBib3R0b20sIGxlZnRcbiAgICAgIHNoYWRvd3MucHVzaChgMCAtJHtwYXJzZWRXaWR0aH1weCAwICR7Y29sb3J9YCk7ICAvLyBUb3BcbiAgICAgIHNoYWRvd3MucHVzaChgJHtwYXJzZWRXaWR0aH1weCAwIDAgJHtjb2xvcn1gKTsgICAvLyBSaWdodFxuICAgICAgc2hhZG93cy5wdXNoKGAwICR7cGFyc2VkV2lkdGh9cHggMCAke2NvbG9yfWApOyAgIC8vIEJvdHRvbVxuICAgICAgc2hhZG93cy5wdXNoKGAtJHtwYXJzZWRXaWR0aH1weCAwIDAgJHtjb2xvcn1gKTsgIC8vIExlZnRcbiAgICAgIFxuICAgICAgLy8gQWRkIGRpYWdvbmFsIHBvaW50cyBmb3IgY29ybmVyc1xuICAgICAgc2hhZG93cy5wdXNoKGAke3BhcnNlZFdpZHRofXB4IC0ke3BhcnNlZFdpZHRofXB4IDAgJHtjb2xvcn1gKTsgIC8vIFRvcC1yaWdodFxuICAgICAgc2hhZG93cy5wdXNoKGAke3BhcnNlZFdpZHRofXB4ICR7cGFyc2VkV2lkdGh9cHggMCAke2NvbG9yfWApOyAgIC8vIEJvdHRvbS1yaWdodFxuICAgICAgc2hhZG93cy5wdXNoKGAtJHtwYXJzZWRXaWR0aH1weCAke3BhcnNlZFdpZHRofXB4IDAgJHtjb2xvcn1gKTsgIC8vIEJvdHRvbS1sZWZ0XG4gICAgICBzaGFkb3dzLnB1c2goYC0ke3BhcnNlZFdpZHRofXB4IC0ke3BhcnNlZFdpZHRofXB4IDAgJHtjb2xvcn1gKTsgLy8gVG9wLWxlZnRcbiAgICAgIFxuICAgICAgLy8gQWRkIGludGVybWVkaWF0ZSBwb2ludHMgZm9yIGJldHRlciBjb3ZlcmFnZVxuICAgICAgY29uc3QgaGFsZldpZHRoID0gTWF0aC5yb3VuZChwYXJzZWRXaWR0aCAqIDAuNzA3MSk7IC8vIGNvcyg0NcKwKSDiiYggMC43MDcxXG4gICAgICBzaGFkb3dzLnB1c2goYCR7aGFsZldpZHRofXB4IC0ke3BhcnNlZFdpZHRofXB4IDAgJHtjb2xvcn1gKTsgICAgLy8gVG9wLXJpZ2h0IGludGVybWVkaWF0ZVxuICAgICAgc2hhZG93cy5wdXNoKGAke3BhcnNlZFdpZHRofXB4IC0ke2hhbGZXaWR0aH1weCAwICR7Y29sb3J9YCk7ICAgIC8vIFJpZ2h0LXRvcCBpbnRlcm1lZGlhdGVcbiAgICAgIHNoYWRvd3MucHVzaChgJHtwYXJzZWRXaWR0aH1weCAke2hhbGZXaWR0aH1weCAwICR7Y29sb3J9YCk7ICAgICAvLyBSaWdodC1ib3R0b20gaW50ZXJtZWRpYXRlXG4gICAgICBzaGFkb3dzLnB1c2goYCR7aGFsZldpZHRofXB4ICR7cGFyc2VkV2lkdGh9cHggMCAke2NvbG9yfWApOyAgICAgLy8gQm90dG9tLXJpZ2h0IGludGVybWVkaWF0ZVxuICAgICAgc2hhZG93cy5wdXNoKGAtJHtoYWxmV2lkdGh9cHggJHtwYXJzZWRXaWR0aH1weCAwICR7Y29sb3J9YCk7ICAgIC8vIEJvdHRvbS1sZWZ0IGludGVybWVkaWF0ZVxuICAgICAgc2hhZG93cy5wdXNoKGAtJHtwYXJzZWRXaWR0aH1weCAke2hhbGZXaWR0aH1weCAwICR7Y29sb3J9YCk7ICAgIC8vIExlZnQtYm90dG9tIGludGVybWVkaWF0ZVxuICAgICAgc2hhZG93cy5wdXNoKGAtJHtwYXJzZWRXaWR0aH1weCAtJHtoYWxmV2lkdGh9cHggMCAke2NvbG9yfWApOyAgIC8vIExlZnQtdG9wIGludGVybWVkaWF0ZVxuICAgICAgc2hhZG93cy5wdXNoKGAtJHtoYWxmV2lkdGh9cHggLSR7cGFyc2VkV2lkdGh9cHggMCAke2NvbG9yfWApOyAgIC8vIFRvcC1sZWZ0IGludGVybWVkaWF0ZVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPcmlnaW5hbCByb3VuZCBzdHlsZVxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzNjA7IGkgKz0gMjIuNSkge1xuICAgICAgICBjb25zdCBhbmdsZSA9IChpICogTWF0aC5QSSkgLyAxODA7XG4gICAgICAgIGNvbnN0IHggPSBNYXRoLnJvdW5kKE1hdGguY29zKGFuZ2xlKSAqIHBhcnNlZFdpZHRoKTtcbiAgICAgICAgY29uc3QgeSA9IE1hdGgucm91bmQoTWF0aC5zaW4oYW5nbGUpICogcGFyc2VkV2lkdGgpO1xuICAgICAgICBzaGFkb3dzLnB1c2goYCR7eH1weCAke3l9cHggMCAke2NvbG9yfWApO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBjb25zdCByZXN1bHQgPSBzaGFkb3dzLmpvaW4oJywnKTtcbiAgICBjYWNoZS5zZXQoa2V5LCByZXN1bHQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59KSgpO1xuXG5cbmV4cG9ydCBjb25zdCBTdWJ0aXRsZVRleHQgPSBtZW1vKCh7IFxuICB0ZXh0LCBcbiAgc3R5bGUsIFxuICBhbmltYXRpb25TdHlsZSwgXG4gIGZyYW1lLFxuICBzdGFydEZyYW1lLCBcbiAgcmFuZG9tQ29sb3JzLCBcbiAgd29yZHMsIFxuICBmcHMsXG4gIGhpZ2hsaWdodFdvcmRzQ29sb3IsXG59KSA9PiB7XG4gIGNvbnN0IHJlbGF0aXZlRnJhbWUgPSBmcmFtZSAtIHN0YXJ0RnJhbWU7XG4gIFxuICBjb25zdCBzY2FsZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChhbmltYXRpb25TdHlsZSA9PT0gXCJwbGVhc3VyZS1wb2QtYW5pbWF0aW9uXCIpIHtcbiAgICAgIHJldHVybiBzcHJpbmcoe1xuICAgICAgICBmcmFtZTogcmVsYXRpdmVGcmFtZSxcbiAgICAgICAgZnJvbTogMC45NSxcbiAgICAgICAgdG86IDEuMCwgIFxuICAgICAgICBmcHM6IDMwLFxuICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICBkYW1waW5nOiAyMCxcbiAgICAgICAgICBzdGlmZm5lc3M6IDQwMCxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChhbmltYXRpb25TdHlsZSA9PT0gXCJzcHJpbmdcIikge1xuICAgICAgY29uc3Qgc3ByaW5nVmFsdWUgPSBzcHJpbmcoe1xuICAgICAgICBmcmFtZTogcmVsYXRpdmVGcmFtZSxcbiAgICAgICAgZnJvbTogMC45LFxuICAgICAgICB0bzogMSxcbiAgICAgICAgZnBzLFxuICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICBtYXNzOiAwLjUsXG4gICAgICAgICAgc3RpZmZuZXNzOiAxNTAsXG4gICAgICAgICAgZGFtcGluZzogMTUsXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHNwcmluZ1ZhbHVlO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gMTtcbiAgfSwgW2FuaW1hdGlvblN0eWxlLCByZWxhdGl2ZUZyYW1lLCBmcHNdKTtcblxuICBjb25zdCB0cmFuc2xhdGVZID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGFuaW1hdGlvblN0eWxlID09PSBcInNwcmluZ1wiKSB7XG4gICAgICBjb25zdCB0cmFuc2xhdGVWYWx1ZSA9IHNwcmluZyh7XG4gICAgICAgIGZyYW1lOiByZWxhdGl2ZUZyYW1lLFxuICAgICAgICBmcm9tOiAxMCxcbiAgICAgICAgdG86IDAsXG4gICAgICAgIGZwcyxcbiAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgbWFzczogMC41LFxuICAgICAgICAgIHN0aWZmbmVzczogMTUwLFxuICAgICAgICAgIGRhbXBpbmc6IDE1LFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiB0cmFuc2xhdGVWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH0sIFthbmltYXRpb25TdHlsZSwgcmVsYXRpdmVGcmFtZSwgZnBzXSk7XG5cblxuICAvLyBDYWxjdWxhdGUgYWRqdXN0ZWQgZm9udCBzaXplIGJhc2VkIG9uIHRleHQgd2lkdGhcbiAgY29uc3QgYWRqdXN0ZWRGb250U2l6ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IG1heExpbmVXaWR0aCA9IHN0eWxlLm1heExpbmVXaWR0aCB8fCAxMDgwOyAvLyBEZWZhdWx0IG1heCB3aWR0aFxuICAgIGNvbnN0IGJhc2VGb250U2l6ZSA9IHN0eWxlLmZvbnRTaXplfHwgNjQ7IC8vIERlZmF1bHQgZm9udCBzaXplXG4gICAgY29uc3QgZm9udEZhbWlseSA9IHN0eWxlLmZvbnRGYW1pbHkgfHwgJ0FyaWFsJztcbiAgICBcbiAgICBjb25zdCB0ZXh0V2lkdGggPSBlc3RpbWF0ZVRleHRXaWR0aCh0ZXh0LCBiYXNlRm9udFNpemUsIGZvbnRGYW1pbHkpO1xuICAgIGlmICh0ZXh0V2lkdGggPiBtYXhMaW5lV2lkdGgpIHtcbiAgICAgIGNvbnN0IHNjYWxlRmFjdG9yID0gbWF4TGluZVdpZHRoIC8gdGV4dFdpZHRoO1xuICAgICAgcmV0dXJuIE1hdGguZmxvb3IoYmFzZUZvbnRTaXplICogc2NhbGVGYWN0b3IpO1xuICAgIH1cbiAgICByZXR1cm4gYmFzZUZvbnRTaXplO1xuICB9LCBbdGV4dCwgc3R5bGUubWF4TGluZVdpZHRoLCBzdHlsZS5mb250U2l6ZSwgc3R5bGUuZm9udEZhbWlseV0pO1xuXG4gIC8vIENhbGN1bGF0ZSBhZGp1c3RlZCBmb250IHNpemUgYmFzZWQgb24gdGV4dCB3aWR0aFxuICBjb25zdCBhbmltYXRlZFN0eWxlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgYmFzZVBhZGRpbmcgPSBzdHlsZS5iYWNrZ3JvdW5kUGFkZGluZyB8fCAnMTUnO1xuICAgIFxuICAgIC8vIENyZWF0ZSB0ZXh0IHNoYWRvdyBiYXNlZCBvbiBpbnRlbnNpdHlcbiAgICBjb25zdCBzaGFkb3dJbnRlbnNpdHkgPSBzdHlsZS5zaGFkb3dJbnRlbnNpdHkgfHwgMTtcbiAgICBjb25zdCBzaGFkb3dDb2xvciA9IHN0eWxlLnNoYWRvd0NvbG9yIHx8ICcjMDAwMDAwJztcbiAgICBjb25zdCBzaGFkb3dCbHVyID0gc3R5bGUuc2hhZG93Qmx1ciB8fCAnMic7XG4gICAgY29uc3Qgc2hhZG93T2Zmc2V0WCA9IHN0eWxlLnNoYWRvd09mZnNldFggfHwgJzAnO1xuICAgIGNvbnN0IHNoYWRvd09mZnNldFkgPSBzdHlsZS5zaGFkb3dPZmZzZXRZIHx8ICcwJztcbiAgICBcbiAgICAvLyBTdGFjayBtdWx0aXBsZSBzaGFkb3dzIGJhc2VkIG9uIGludGVuc2l0eVxuICAgIGNvbnN0IHNoYWRvd3MgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNoYWRvd0ludGVuc2l0eTsgaSsrKSB7XG4gICAgICBzaGFkb3dzLnB1c2goYCR7c2hhZG93T2Zmc2V0WH1weCAke3NoYWRvd09mZnNldFl9cHggJHtzaGFkb3dCbHVyfXB4ICR7c2hhZG93Q29sb3J9YCk7XG4gICAgfVxuICAgIGNvbnN0IHRleHRTaGFkb3cgPSBzaGFkb3dzLmpvaW4oJywgJyk7XG5cbiAgICAvLyBDb252ZXJ0IGhleCB0byByZ2JhIGZvciBiYWNrZ3JvdW5kIGNvbG9yXG4gICAgY29uc3QgaGV4VG9SZ2JhID0gKGhleCwgb3BhY2l0eSkgPT4ge1xuICAgICAgY29uc3Qgc2hvcnRoYW5kUmVnZXggPSAvXiM/KFthLWZcXGRdKShbYS1mXFxkXSkoW2EtZlxcZF0pJC9pO1xuICAgICAgaGV4ID0gaGV4LnJlcGxhY2Uoc2hvcnRoYW5kUmVnZXgsIChtLCByLCBnLCBiKSA9PiByICsgciArIGcgKyBnICsgYiArIGIpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gL14jPyhbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KSQvaS5leGVjKGhleCk7XG4gICAgICBpZiAoIXJlc3VsdCkgcmV0dXJuIGhleDtcbiAgICAgIGNvbnN0IHIgPSBwYXJzZUludChyZXN1bHRbMV0sIDE2KTtcbiAgICAgIGNvbnN0IGcgPSBwYXJzZUludChyZXN1bHRbMl0sIDE2KTtcbiAgICAgIGNvbnN0IGIgPSBwYXJzZUludChyZXN1bHRbM10sIDE2KTtcbiAgICAgIHJldHVybiBgcmdiYSgke3J9LCAke2d9LCAke2J9LCAke29wYWNpdHl9KWA7XG4gICAgfTtcblxuICAgIGNvbnN0IGJhY2tncm91bmRDb2xvciA9IHN0eWxlLmJhY2tncm91bmRDb2xvciB8fCAnIzAwMDAwMCc7XG4gICAgY29uc3Qgb3BhY2l0eSA9IHR5cGVvZiBzdHlsZS5iYWNrZ3JvdW5kT3BhY2l0eSA9PT0gJ3N0cmluZycgXG4gICAgICA/IHBhcnNlRmxvYXQoc3R5bGUuYmFja2dyb3VuZE9wYWNpdHkudHJpbSgpKVxuICAgICAgOiBwYXJzZUZsb2F0KHN0eWxlLmJhY2tncm91bmRPcGFjaXR5KSB8fCAwO1xuICAgICAgXG4gICAgY29uc3QgYmFja2dyb3VuZCA9IGhleFRvUmdiYShiYWNrZ3JvdW5kQ29sb3IsIG9wYWNpdHkpO1xuICAgIGNvbnN0IGhhc0JhY2tncm91bmQgPSBvcGFjaXR5ID4gMDtcbiAgICBjb25zdCBoYXNTaGFkb3cgPSBzaGFkb3dJbnRlbnNpdHkgPiAwICYmIChzaGFkb3dCbHVyICE9PSAnMCcgfHwgc2hhZG93T2Zmc2V0WCAhPT0gJzAnIHx8IHNoYWRvd09mZnNldFkgIT09ICcwJyk7XG5cbiAgICAvLyBIYW5kbGUgYm9yZGVyIHJhZGl1cyBwcm9wZXJseVxuICAgIGNvbnN0IGJvcmRlclJhZGl1cyA9IHN0eWxlLmJhY2tncm91bmRCb3JkZXJSYWRpdXMgXG4gICAgICA/IGAke3BhcnNlSW50KHN0eWxlLmJhY2tncm91bmRCb3JkZXJSYWRpdXMsIDEwKX1weGBcbiAgICAgIDogJzBweCc7XG4gICAgXG4gICAgLy8gSGFuZGxlIGJhY2tncm91bmQgd3JhcHBpbmdcbiAgICBjb25zdCBpc1dyYXBwZWQgPSBzdHlsZS5iYWNrZ3JvdW5kRmlsbFN0eWxlID09PSBcIndyYXBcIjtcbiAgICBjb25zdCBwYWRkaW5nVmFsdWUgPSBwYXJzZUludChiYXNlUGFkZGluZywgMTApO1xuICAgIFxuICAgIC8vIEZvciB3cmFwcGVkIHN0eWxlLCB1c2UgdW5pZm9ybSBwYWRkaW5nXG4gICAgY29uc3QgcGFkZGluZyA9IGlzV3JhcHBlZCBcbiAgICAgID8gYCR7cGFkZGluZ1ZhbHVlfXB4ICR7TWF0aC5yb3VuZChwYWRkaW5nVmFsdWUgKiAxLjIpfXB4YFxuICAgICAgOiBgJHtwYWRkaW5nVmFsdWV9cHggJHtwYWRkaW5nVmFsdWUgKiAzfXB4YDtcbiAgICBcbiAgICBjb25zdCB3aWR0aCA9IGlzV3JhcHBlZCA/IFwiYXV0b1wiIDogc3R5bGUud2lkdGg7XG4gICAgY29uc3QgZGlzcGxheSA9IGlzV3JhcHBlZCA/IFwiaW5saW5lLWJsb2NrXCIgOiBzdHlsZS5kaXNwbGF5IHx8IFwiYmxvY2tcIjtcbiAgICBcbiAgICBjb25zdCBiYXNlU3R5bGUgPSB7XG4gICAgICBwYWRkaW5nLFxuICAgICAgYmFja2dyb3VuZCxcbiAgICAgIGJvcmRlclJhZGl1cyxcbiAgICAgIHdpZHRoLFxuICAgICAgZGlzcGxheSxcbiAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgIC4uLnN0eWxlLFxuICAgICAgLy8gS2VlcCBmb250RmFtaWx5IGluIHRoZSBpbmxpbmUgc3R5bGVzIG5vd1xuICAgICAgdGV4dFNoYWRvdzogJ25vbmUnLFxuICAgICAgYm94U2hhZG93OiBoYXNCYWNrZ3JvdW5kICYmIGhhc1NoYWRvdyA/IHRleHRTaGFkb3cgOiAnbm9uZScsXG4gICAgICB0cmFuc2Zvcm06IGFuaW1hdGlvblN0eWxlID09PSBcInNwcmluZ1wiIFxuICAgICAgICA/IGAke3N0eWxlLnRyYW5zZm9ybSA/IGAke3N0eWxlLnRyYW5zZm9ybX0gYCA6ICcnfXRyYW5zbGF0ZTNkKDAsICR7dHJhbnNsYXRlWX1weCwgMCkgc2NhbGUoJHtzY2FsZX0pYFxuICAgICAgICA6IHN0eWxlLnRyYW5zZm9ybSB8fCAnbm9uZScsXG4gICAgICBmb250U2l6ZTogdHlwZW9mIHN0eWxlLmZvbnRTaXplID09PSAnc3RyaW5nJyA/IGFkanVzdGVkRm9udFNpemUgOiBhZGp1c3RlZEZvbnRTaXplLFxuICAgIH07XG5cbiAgICByZXR1cm4gYmFzZVN0eWxlO1xuICB9LCBbc3R5bGUsIHNjYWxlLCB0cmFuc2xhdGVZLCBhZGp1c3RlZEZvbnRTaXplLCBhbmltYXRpb25TdHlsZV0pO1xuXG4gIGNvbnN0IHdyYXBwZXJTdHlsZSA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICB0cmFuc2Zvcm06IGBzY2FsZVkoJHtzdHlsZS52ZXJ0aWNhbFN0cmV0Y2ggfHwgMX0pYCxcbiAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgd2lkdGg6ICdmaXQtY29udGVudCcsXG4gICAgd2lsbENoYW5nZTogJ3RyYW5zZm9ybSdcbiAgfSksIFtzdHlsZS52ZXJ0aWNhbFN0cmV0Y2hdKTtcblxuICBjb25zdCBvdXRsaW5lU3R5bGUgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgbGVmdDogMCxcbiAgICB0b3A6IDAsXG4gICAgcmlnaHQ6IDAsXG4gICAgYm90dG9tOiAwLFxuICAgIGNvbG9yOiBzdHlsZS5vdXRsaW5lQ29sb3IsXG4gICAgdGV4dFNoYWRvdzogZ2VuZXJhdGVPdXRsaW5lU2hhZG93KHN0eWxlLm91dGxpbmVDb2xvciwgc3R5bGUub3V0bGluZVdpZHRoLCBzdHlsZS5vdXRsaW5lU3R5bGUpLFxuICAgIFdlYmtpdFRleHRGaWxsQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgekluZGV4OiAwLFxuICB9KSwgW3N0eWxlLm91dGxpbmVDb2xvciwgc3R5bGUub3V0bGluZVdpZHRoLCBzdHlsZS5vdXRsaW5lU3R5bGVdKTtcblxuICBjb25zdCBtYWluVGV4dFN0eWxlID0gdXNlTWVtbygoKSA9PiAoe1xuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIHpJbmRleDogMSxcbiAgICBXZWJraXRUZXh0U3Ryb2tlOiAndW5zZXQnLFxuICAgIGNvbG9yOiBzdHlsZS5jb2xvcixcbiAgfSksIFtzdHlsZS5jb2xvcl0pO1xuXG4gIC8vIFNwbGl0IHRleHQgaW50byB3b3JkcyBhbmQgY2FsY3VsYXRlIGN1cnJlbnQgdGltZVxuICBjb25zdCB0ZXh0V29yZHMgPSB1c2VNZW1vKCgpID0+IHRleHQuc3BsaXQoJyAnKSwgW3RleHRdKTtcbiAgY29uc3QgY3VycmVudFdvcmRUaW1lID0gZnJhbWUgLyBmcHM7XG5cbiAgLy8gRmluZCBjdXJyZW50bHkgc3Bva2VuIHdvcmRcblxuICAvLyBDcmVhdGUgYW1wbGlmaWVkIGdyYWRpZW50IHN0eWxlIGlmIGFtcGxpZmllZENvbG9yIGlzIGEgZ3JhZGllbnQgYXJyYXlcbiAgY29uc3QgcGhyYXNlQW1wbGlmaWVkU3R5bGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShzdHlsZS5hbXBsaWZpZWRDb2xvcnMpKSB7XG4gICAgICBjb25zdCBmaXJzdFdvcmQgPSB3b3Jkc1swXS53b3JkO1xuICAgICAgY29uc3QgZ3JhZGllbnRJbmRleCA9IE1hdGguZmxvb3IocmFuZG9tKGBhbXBsaWZpZWQtcGhyYXNlLSR7Zmlyc3RXb3JkfWApICogc3R5bGUuYW1wbGlmaWVkQ29sb3JzLmxlbmd0aCk7XG4gICAgICBjb25zdCBncmFkaWVudCA9IHN0eWxlLmFtcGxpZmllZENvbG9yc1tncmFkaWVudEluZGV4XTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhY2tncm91bmQ6IGBsaW5lYXItZ3JhZGllbnQoJHtncmFkaWVudC5hbmdsZX1kZWcsICR7Z3JhZGllbnQuY29sb3JzLmpvaW4oXCIsIFwiKX0pYCxcbiAgICAgICAgYmFja2dyb3VuZENsaXA6IFwidGV4dFwiLFxuICAgICAgICBXZWJraXRUZXh0RmlsbENvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gICAgICAgIFdlYmtpdEJhY2tncm91bmRDbGlwOiBcInRleHRcIixcbiAgICAgICAgZGlzcGxheTogXCJpbmxpbmUtYmxvY2tcIixcbiAgICAgICAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgICAgICAgekluZGV4OiAxLFxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc29sZS5sb2coXCJoaWdobGlnaHQgd29yZHMgY29sb3I6XCIsIGhpZ2hsaWdodFdvcmRzQ29sb3IpO1xuICAgIGlmICh0eXBlb2Ygc3R5bGUuYW1wbGlmaWVkQ29sb3IgPT09ICdvYmplY3QnICYmIHN0eWxlLmFtcGxpZmllZENvbG9yLnR5cGUgPT09ICdncmFkaWVudCcpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhY2tncm91bmQ6IGBsaW5lYXItZ3JhZGllbnQoJHtzdHlsZS5hbXBsaWZpZWRDb2xvci5jb2xvcnNbMF0uYW5nbGV9ZGVnLCAke3N0eWxlLmFtcGxpZmllZENvbG9yLmNvbG9yc1swXS5jb2xvcnMuam9pbihcIiwgXCIpfSlgLFxuICAgICAgICBiYWNrZ3JvdW5kQ2xpcDogXCJ0ZXh0XCIsXG4gICAgICAgIFdlYmtpdFRleHRGaWxsQ29sb3I6IFwidHJhbnNwYXJlbnRcIixcbiAgICAgICAgV2Via2l0QmFja2dyb3VuZENsaXA6IFwidGV4dFwiLFxuICAgICAgICBkaXNwbGF5OiBcImlubGluZS1ibG9ja1wiLFxuICAgICAgICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICAgICAgICB6SW5kZXg6IDEsXG4gICAgICB9O1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4geyBcbiAgICAgIGNvbG9yOiBzdHlsZS5hbXBsaWZpZWRDb2xvcixcbiAgICAgIFdlYmtpdFRleHRGaWxsQ29sb3I6IHN0eWxlLmFtcGxpZmllZENvbG9yLFxuICAgIH07XG4gIH0sIFtzdHlsZS5hbXBsaWZpZWRDb2xvcnMsIHN0eWxlLmFtcGxpZmllZENvbG9yLCB3b3Jkc10pO1xuXG4gIC8vIEhhbmRsZSByYW5kb20gY29sb3JzIGlmIGVuYWJsZWRcbiAgY29uc3QgcmFuZG9tQ29sb3JEYXRhID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFyYW5kb21Db2xvcnM/LmVuYWJsZWQgfHwgIXdvcmRzKSByZXR1cm4gbnVsbDtcbiAgICBcbiAgICBjb25zdCBzaG91bGRDb2xvciA9IHJhbmRvbShgc2hvdWxkLWNvbG9yLSR7d29yZHNbMF0ud29yZH1gKSA8IHJhbmRvbUNvbG9ycy5wY3RBcHBsaWVkO1xuICAgIGlmICghc2hvdWxkQ29sb3IpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgW21pbldvcmRzLCBtYXhXb3Jkc10gPSByYW5kb21Db2xvcnM/LnJhbmRvbVdvcmRDb3VudFJhbmdlIHx8IFswLCAwXTtcbiAgICBjb25zdCByYW5nZSA9IG1heFdvcmRzIC0gbWluV29yZHMgKyAxO1xuICAgIGNvbnN0IHJhbmRvbVdvcmRDb3VudCA9IE1hdGguZmxvb3IocmFuZG9tKGB3b3JkLWNvdW50LSR7d29yZHNbMF0ud29yZH1gKSAqIHJhbmdlKSArIG1pbldvcmRzO1xuICAgIGNvbnN0IG1heFN0YXJ0SW5kZXggPSBNYXRoLm1heCgwLCB0ZXh0V29yZHMubGVuZ3RoIC0gcmFuZG9tV29yZENvdW50KTtcbiAgICBjb25zdCBzdGFydEluZGV4ID0gTWF0aC5mbG9vcihyYW5kb20oYHN0YXJ0LWluZGV4LSR7d29yZHNbMF0ud29yZH1gKSAqIChtYXhTdGFydEluZGV4ICsgMSkpO1xuICAgIGNvbnN0IHJhbmRvbUNvbG9yT2JqID0gcmFuZG9tQ29sb3JzLmNvbG9yc1tNYXRoLmZsb29yKHJhbmRvbShgY29sb3ItJHt3b3Jkc1swXS53b3JkfWApICogcmFuZG9tQ29sb3JzLmNvbG9ycy5sZW5ndGgpXTtcblxuICAgIHJldHVybiB7XG4gICAgICBzaG91bGRDb2xvcixcbiAgICAgIHJhbmRvbVdvcmRDb3VudCxcbiAgICAgIHN0YXJ0SW5kZXgsXG4gICAgICByYW5kb21Db2xvck9ialxuICAgIH07XG4gIH0sIFtyYW5kb21Db2xvcnMsIHdvcmRzLCB0ZXh0V29yZHMubGVuZ3RoXSk7XG5cbiAgY29uc3QgcGhyYXNlU3R5bGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIXJhbmRvbUNvbG9yRGF0YSkge1xuICAgICAgcmV0dXJuIHsgXG4gICAgICAgIGNvbG9yOiBzdHlsZS5jb2xvcixcbiAgICAgICAgV2Via2l0VGV4dEZpbGxDb2xvcjogc3R5bGUuY29sb3IsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHsgcmFuZG9tQ29sb3JPYmogfSA9IHJhbmRvbUNvbG9yRGF0YTtcbiAgICByZXR1cm4gcmFuZG9tQ29sb3JPYmoudHlwZSA9PT0gXCJncmFkaWVudFwiID8gXG4gICAgICB7XG4gICAgICAgIGJhY2tncm91bmQ6IGBsaW5lYXItZ3JhZGllbnQoJHtyYW5kb21Db2xvck9iai5hbmdsZX1kZWcsICR7cmFuZG9tQ29sb3JPYmouY29sb3JzLmpvaW4oXCIsIFwiKX0pYCxcbiAgICAgICAgYmFja2dyb3VuZENsaXA6IFwidGV4dFwiLFxuICAgICAgICBXZWJraXRUZXh0RmlsbENvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gICAgICAgIFdlYmtpdEJhY2tncm91bmRDbGlwOiBcInRleHRcIixcbiAgICAgICAgZGlzcGxheTogXCJpbmxpbmUtYmxvY2tcIixcbiAgICAgICAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgICAgICAgekluZGV4OiAxLFxuICAgICAgfSA6IFxuICAgICAgeyBcbiAgICAgICAgY29sb3I6IHJhbmRvbUNvbG9yT2JqLmNvbG9yLFxuICAgICAgICBXZWJraXRUZXh0RmlsbENvbG9yOiByYW5kb21Db2xvck9iai5jb2xvcixcbiAgICAgIH07XG4gIH0sIFtyYW5kb21Db2xvckRhdGEsIHN0eWxlLmNvbG9yXSk7XG5cbiAgY29uc3Qgd29yZENvbnRlbnQgPSB1c2VNZW1vKCgpID0+IHRleHRXb3Jkcy5tYXAoKHdvcmQsIGluZGV4KSA9PiB7XG4gICAgLy8gQ2hlY2sgaWYgdGhlIHdvcmQgaXMgc3Vycm91bmRlZCBieSA8aD4gdGFnc1xuICAgIGNvbnN0IGhpZ2hsaWdodGVkTWF0Y2ggPSB3b3JkLm1hdGNoKC9ePGg+KC4qPyk8XFwvaD4kLyk7XG4gICAgY29uc3QgaXNIaWdobGlnaHRlZCA9IGhpZ2hsaWdodGVkTWF0Y2ggIT09IG51bGw7XG4gICAgY29uc3QgZGlzcGxheVdvcmQgPSBpc0hpZ2hsaWdodGVkID8gaGlnaGxpZ2h0ZWRNYXRjaFsxXSA6IHdvcmQ7XG5cbiAgICBjb25zdCBzaG91bGRDb2xvclRoaXNXb3JkID0gcmFuZG9tQ29sb3JEYXRhICYmIFxuICAgICAgaW5kZXggPj0gcmFuZG9tQ29sb3JEYXRhLnN0YXJ0SW5kZXggJiYgXG4gICAgICBpbmRleCA8IHJhbmRvbUNvbG9yRGF0YS5zdGFydEluZGV4ICsgcmFuZG9tQ29sb3JEYXRhLnJhbmRvbVdvcmRDb3VudCAmJlxuICAgICAgaW5kZXggPCB0ZXh0V29yZHMubGVuZ3RoO1xuXG4gICAgY29uc3Qgd29yZFRpbWluZyA9IHdvcmRzPy5baW5kZXhdO1xuICAgIGNvbnN0IGhhc0JlZW5TcG9rZW4gPSB3b3JkVGltaW5nICYmIGN1cnJlbnRXb3JkVGltZSA+PSB3b3JkVGltaW5nLmVuZDtcbiAgICBjb25zdCBpc0N1cnJlbnRseVNwb2tlbiA9IHdvcmRUaW1pbmcgJiYgXG4gICAgICBjdXJyZW50V29yZFRpbWUgPj0gd29yZFRpbWluZy5zdGFydCAmJiBcbiAgICAgIGN1cnJlbnRXb3JkVGltZSA8IHdvcmRUaW1pbmcuZW5kO1xuXG4gICAgY29uc3QgdGV4dEhpZ2hsaWdodFBlcnNpc3RzID0gc3R5bGUudGV4dEhpZ2hsaWdodFBlcnNpc3RzID8gdHJ1ZSA6IGZhbHNlO1xuICAgIFxuICAgIGNvbnN0IHNob3VsZEhpZ2hsaWdodCA9IHN0eWxlLmFtcGxpZnlTcG9rZW5Xb3JkcyAmJiBcbiAgICAgIChpc0N1cnJlbnRseVNwb2tlbiB8fCAodGV4dEhpZ2hsaWdodFBlcnNpc3RzICYmIGhhc0JlZW5TcG9rZW4pKTtcbiAgICBcbiAgICAvLyBNb2RpZmllZCBsb2dpYyB0byBwcmlvcml0aXplIDxoPiB0YWcgaGlnaGxpZ2h0aW5nXG4gICAgY29uc3Qgd29yZFN0eWxlID0gaXNIaWdobGlnaHRlZFxuICAgICAgPyB7IFxuICAgICAgICAgIGNvbG9yOiBoaWdobGlnaHRXb3Jkc0NvbG9yLFxuICAgICAgICAgIFdlYmtpdFRleHRGaWxsQ29sb3I6IGhpZ2hsaWdodFdvcmRzQ29sb3IsXG4gICAgICAgICAgb3BhY2l0eTogc3R5bGUub3BhY2l0eSB8fCAxLFxuICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICB9XG4gICAgICA6IHNob3VsZEhpZ2hsaWdodFxuICAgICAgICA/IHtcbiAgICAgICAgICAgIC4uLnBocmFzZUFtcGxpZmllZFN0eWxlLFxuICAgICAgICAgICAgb3BhY2l0eTogc3R5bGUuYW1wbGlmaWVkT3BhY2l0eSB8fCAxLFxuICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgfVxuICAgICAgICA6IHNob3VsZENvbG9yVGhpc1dvcmQgXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIC4uLnBocmFzZVN0eWxlLFxuICAgICAgICAgICAgICBvcGFjaXR5OiBzdHlsZS5vcGFjaXR5IHx8IDEsXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDogeyBcbiAgICAgICAgICAgICAgY29sb3I6IHN0eWxlLmNvbG9yLFxuICAgICAgICAgICAgICBXZWJraXRUZXh0RmlsbENvbG9yOiBzdHlsZS5jb2xvcixcbiAgICAgICAgICAgICAgb3BhY2l0eTogc3R5bGUudW5BbXBsaWZpZWRPcGFjaXR5IHx8IDEsXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICAgfTtcblxuICAgIC8vIEFkZCB6LWluZGV4IHRvIGVuc3VyZSBwcm9wZXIgc3RhY2tpbmcgb2Ygd29yZCBibG9ja3NcbiAgICBjb25zdCBjb250YWluZXJTdHlsZSA9IHtcbiAgICAgIC4uLndvcmRTdHlsZSxcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgbWFyZ2luUmlnaHQ6IGluZGV4IDwgdGV4dFdvcmRzLmxlbmd0aCAtIDEgPyAnMC4yNWVtJyA6IDAsXG4gICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgIHpJbmRleDogaXNDdXJyZW50bHlTcG9rZW4gPyAyIDogMSxcbiAgICAgIHdoaXRlU3BhY2U6ICdub3dyYXAnXG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8c3BhbiBrZXk9e2luZGV4fSBzdHlsZT17Y29udGFpbmVyU3R5bGV9PlxuICAgICAgICB7c3R5bGUuY3VycmVudFdvcmRCbG9jayAmJiBpc0N1cnJlbnRseVNwb2tlbiAmJiAoXG4gICAgICAgICAgPHNwYW4gc3R5bGU9e3tcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICAgICAgbGVmdDogYC0keyhzdHlsZS5jdXJyZW50V29yZEJsb2NrUGFkZGluZyB8fCA1KSAqIDJ9cHhgLFxuICAgICAgICAgICAgcmlnaHQ6IGAtJHsoc3R5bGUuY3VycmVudFdvcmRCbG9ja1BhZGRpbmcgfHwgNSkgKiAyfXB4YCxcbiAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgIGhlaWdodDogJzcwJScsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHN0eWxlLmN1cnJlbnRXb3JkQmxvY2tCYWNrZ3JvdW5kQ29sb3IgfHwgJyMwMDAwMDAnLFxuICAgICAgICAgICAgb3BhY2l0eTogc3R5bGUuY3VycmVudFdvcmRCbG9ja09wYWNpdHkgfHwgMSxcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czogYCR7c3R5bGUuY3VycmVudFdvcmRCbG9ja0JvcmRlclJhZGl1cyB8fCAxNX1weGAsXG4gICAgICAgICAgICB6SW5kZXg6IC0xLFxuICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgycHgpJyxcbiAgICAgICAgICAgIHBhZGRpbmc6IGAke3N0eWxlLmN1cnJlbnRXb3JkQmxvY2tQYWRkaW5nIHx8IDV9cHggMGAsXG4gICAgICAgICAgICBib3hTaXppbmc6ICdjb250ZW50LWJveCdcbiAgICAgICAgICB9fSAvPlxuICAgICAgICApfVxuICAgICAgICB7ZGlzcGxheVdvcmR9IHsvKiBEaXNwbGF5IHRoZSB3b3JkIHdpdGhvdXQgPGg+IHRhZ3MgKi99XG4gICAgICA8L3NwYW4+XG4gICAgKTtcbiAgfSksIFt0ZXh0V29yZHMsIHJhbmRvbUNvbG9yRGF0YSwgd29yZHMsIGN1cnJlbnRXb3JkVGltZSwgc3R5bGUuYW1wbGlmeVNwb2tlbldvcmRzLCBzdHlsZS50ZXh0SGlnaGxpZ2h0UGVyc2lzdHMsIHBocmFzZUFtcGxpZmllZFN0eWxlLCBwaHJhc2VTdHlsZSwgc3R5bGUuY29sb3IsIHN0eWxlLmN1cnJlbnRXb3JkQmxvY2ssIHN0eWxlLmN1cnJlbnRXb3JkQmxvY2tCYWNrZ3JvdW5kQ29sb3IsIHN0eWxlLmN1cnJlbnRXb3JkQmxvY2tPcGFjaXR5LCBzdHlsZS5jdXJyZW50V29yZEJsb2NrUGFkZGluZywgc3R5bGUuY3VycmVudFdvcmRCbG9ja0JvcmRlclJhZGl1cywgaGlnaGxpZ2h0V29yZHNDb2xvcl0pO1xuICAvLyBjb25zb2xlLmxvZygnU3VidGl0bGVUZXh0IC0gcmVjZWl2ZWQgc3R5bGUgZm9udEZhbWlseTonLCBzdHlsZS5mb250RmFtaWx5KTtcbiAgcmV0dXJuIChcbiAgICA8ZGl2IFxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgLi4uYW5pbWF0ZWRTdHlsZSxcbiAgICAgICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgICAgIHdpZHRoOiAnZml0LWNvbnRlbnQnLFxuICAgICAgICBkaXNwbGF5OiAnYmxvY2snXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxkaXYgc3R5bGU9e3dyYXBwZXJTdHlsZX0+XG4gICAgICAgIDxkaXYgc3R5bGU9e3suLi5vdXRsaW5lU3R5bGUsIHdoaXRlU3BhY2U6ICdub3dyYXAnfX0+e3dvcmRDb250ZW50fTwvZGl2PlxuICAgICAgICA8ZGl2IHN0eWxlPXt7Li4ubWFpblRleHRTdHlsZSwgd2hpdGVTcGFjZTogJ25vd3JhcCd9fT57d29yZENvbnRlbnR9PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn0sIChwcmV2UHJvcHMsIG5leHRQcm9wcykgPT4ge1xuICAvLyBPbmx5IHJlLXJlbmRlciBpZiB0aGVzZSBlc3NlbnRpYWwgcHJvcHMgaGF2ZSBjaGFuZ2VkXG4gIGNvbnN0IGVzc2VudGlhbFByb3BzID0gWydmcmFtZScsICd0ZXh0JywgJ3N0YXJ0RnJhbWUnXTtcbiAgY29uc3QgaGFzRXNzZW50aWFsUHJvcHNDaGFuZ2VkID0gZXNzZW50aWFsUHJvcHMuc29tZShcbiAgICBwcm9wID0+IHByZXZQcm9wc1twcm9wXSAhPT0gbmV4dFByb3BzW3Byb3BdXG4gICk7XG4gIFxuICAvLyBEZWVwIGNvbXBhcmUgc3R5bGUgYW5kIHJhbmRvbUNvbG9ycyBvbmx5IGlmIGVzc2VudGlhbCBwcm9wcyBoYXZlbid0IGNoYW5nZWRcbiAgaWYgKCFoYXNFc3NlbnRpYWxQcm9wc0NoYW5nZWQpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkocHJldlByb3BzLnN0eWxlKSA9PT0gSlNPTi5zdHJpbmdpZnkobmV4dFByb3BzLnN0eWxlKSAmJlxuICAgICAgICAgICBKU09OLnN0cmluZ2lmeShwcmV2UHJvcHMucmFuZG9tQ29sb3JzKSA9PT0gSlNPTi5zdHJpbmdpZnkobmV4dFByb3BzLnJhbmRvbUNvbG9ycyk7XG4gIH1cbiAgXG4gIHJldHVybiBmYWxzZTtcbn0pOyAiLG51bGwsImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuXG4vLyBIZWxwZXIgdG8gY29udmVydCBoZXggdG8gcmdiXG5jb25zdCBoZXhUb1JnYiA9IChoZXgpID0+IHtcbiAgLy8gUmVtb3ZlICMgaWYgcHJlc2VudFxuICBoZXggPSBoZXgucmVwbGFjZSgnIycsICcnKTtcbiAgXG4gIC8vIEhhbmRsZSBib3RoIDMtZGlnaXQgYW5kIDYtZGlnaXQgaGV4XG4gIGNvbnN0IHIgPSBwYXJzZUludChoZXgubGVuZ3RoID09PSAzID8gaGV4WzBdICsgaGV4WzBdIDogaGV4LnNsaWNlKDAsIDIpLCAxNik7XG4gIGNvbnN0IGcgPSBwYXJzZUludChoZXgubGVuZ3RoID09PSAzID8gaGV4WzFdICsgaGV4WzFdIDogaGV4LnNsaWNlKDIsIDQpLCAxNik7XG4gIGNvbnN0IGIgPSBwYXJzZUludChoZXgubGVuZ3RoID09PSAzID8gaGV4WzJdICsgaGV4WzJdIDogaGV4LnNsaWNlKDQsIDYpLCAxNik7XG4gIFxuICByZXR1cm4gYCR7cn0sICR7Z30sICR7Yn1gO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVRleHRTdHlsZSA9IChwcmVzZXQsIHgsIGFkanVzdGVkWSwgdmlkZW9XaWR0aCkgPT4geyAgXG4gIHJldHVybiB1c2VNZW1vKCgpID0+IHtcbiAgICAvLyBDcmVhdGUgdGV4dCBzaGFkb3cgYmFzZWQgb24gaW50ZW5zaXR5XG4gICAgY29uc3Qgc2hhZG93SW50ZW5zaXR5ID0gcHJlc2V0LnNoYWRvd0ludGVuc2l0eSB8fCAxO1xuICAgIGNvbnN0IHNoYWRvd0NvbG9yID0gcHJlc2V0LnNoYWRvd0NvbG9yIHx8ICcjMDAwMDAwJztcbiAgICBjb25zdCBzaGFkb3dCbHVyID0gcHJlc2V0LnNoYWRvd0JsdXIgfHwgJzInO1xuICAgIGNvbnN0IHNoYWRvd09mZnNldFggPSBwcmVzZXQuc2hhZG93T2Zmc2V0WCB8fCAnMCc7XG4gICAgY29uc3Qgc2hhZG93T2Zmc2V0WSA9IHByZXNldC5zaGFkb3dPZmZzZXRZIHx8ICcwJztcbiAgICBcbiAgICAvLyBTdGFjayBtdWx0aXBsZSBzaGFkb3dzIGJhc2VkIG9uIGludGVuc2l0eVxuICAgIGNvbnN0IHNoYWRvd3MgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNoYWRvd0ludGVuc2l0eTsgaSsrKSB7XG4gICAgICBzaGFkb3dzLnB1c2goYCR7c2hhZG93T2Zmc2V0WH1weCAke3NoYWRvd09mZnNldFl9cHggJHtzaGFkb3dCbHVyfXB4ICR7c2hhZG93Q29sb3J9YCk7XG4gICAgfVxuICAgIGNvbnN0IHRleHRTaGFkb3cgPSBzaGFkb3dzLmpvaW4oJywgJyk7XG5cbiAgICBjb25zdCBkcm9wU2hhZG93ID0gKHByZXNldC5zaGFkb3dFbmFibGVkICE9PSBmYWxzZSAmJiAocHJlc2V0LnNoYWRvd09mZnNldFggfHwgcHJlc2V0LnNoYWRvd09mZnNldFkgfHwgcHJlc2V0LnNoYWRvd0JsdXIpKVxuICAgICAgPyBgZHJvcC1zaGFkb3coJHtwcmVzZXQuc2hhZG93T2Zmc2V0WH1weCAke3ByZXNldC5zaGFkb3dPZmZzZXRZfXB4ICR7cHJlc2V0LnNoYWRvd0JsdXJ9cHggJHtwcmVzZXQuc2hhZG93Q29sb3J9KWBcbiAgICAgIDogJ25vbmUnO1xuXG4gICAgY29uc3QgYmFja2dyb3VuZENvbG9yID0gcHJlc2V0LmJhY2tncm91bmRDb2xvciA9PT0gJ3RyYW5zcGFyZW50JyBcbiAgICAgID8gJ3RyYW5zcGFyZW50JyBcbiAgICAgIDogcHJlc2V0LmJhY2tncm91bmRDb2xvciAmJiBwcmVzZXQuYmFja2dyb3VuZE9wYWNpdHlcbiAgICAgICAgPyBgcmdiYSgke2hleFRvUmdiKHByZXNldC5iYWNrZ3JvdW5kQ29sb3IpfSwgJHtwcmVzZXQuYmFja2dyb3VuZE9wYWNpdHl9KWBcbiAgICAgICAgOiBwcmVzZXQuYmFja2dyb3VuZENvbG9yIHx8ICcjMDAwMDAwJztcbiAgICBcbiAgICAvLyBIYW5kbGUgYm90aCBkaXJlY3Rpb25hbCBhbmQgdW5pZm9ybSBwYWRkaW5nXG4gICAgY29uc3QgcGFkZGluZ1ggPSBwcmVzZXQuYmFja2dyb3VuZFBhZGRpbmdYIHx8IHByZXNldC5iYWNrZ3JvdW5kUGFkZGluZyB8fCAnMTAnO1xuICAgIGNvbnN0IHBhZGRpbmdZID0gcHJlc2V0LmJhY2tncm91bmRQYWRkaW5nWSB8fCBwcmVzZXQuYmFja2dyb3VuZFBhZGRpbmcgfHwgJzEwJztcbiAgICBjb25zdCBiYXNlUGFkZGluZyA9IGAke3BhZGRpbmdZfXB4ICR7cGFkZGluZ1h9cHhgO1xuICAgIFxuICAgIGNvbnN0IHN0eWxlID0ge1xuICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgIGxlZnQ6IGAke3h9cHhgLFxuICAgICAgdG9wOiBgJHthZGp1c3RlZFl9cHhgLFxuICAgICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZSgtNTAlLCAtNTAlKVwiLFxuICAgICAgZm9udEZhbWlseTogcHJlc2V0LmZvbnRGYW1pbHksXG4gICAgICBmb250U2l6ZTogYCR7cHJlc2V0LmZvbnRTaXplfXB4YCxcbiAgICAgIGZvbnRXZWlnaHQ6IHByZXNldC5mb250V2VpZ2h0LFxuICAgICAgY29sb3I6IHByZXNldC5mb250Q29sb3IsXG4gICAgICBhbXBsaWZpZWRDb2xvcjogcHJlc2V0LmFtcGxpZmllZENvbG9yLFxuICAgICAgYW1wbGlmaWVkQ29sb3JzOiBwcmVzZXQuYW1wbGlmaWVkQ29sb3JzLFxuICAgICAgYW1wbGlmeVNwb2tlbldvcmRzOiBwcmVzZXQuYW1wbGlmeVNwb2tlbldvcmRzLFxuICAgICAgdGV4dFRyYW5zZm9ybTogcHJlc2V0LnRleHRDYXNlLFxuICAgICAgZm9udFN0eWxlOiBwcmVzZXQuaXNJdGFsaWMgPyBcIml0YWxpY1wiIDogXCJub3JtYWxcIixcbiAgICAgIHRleHRBbGlnbjogXCJjZW50ZXJcIixcbiAgICAgIGxldHRlclNwYWNpbmc6IGAke3ByZXNldC50ZXh0U3BhY2luZ31weGAsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgICBiYWNrZ3JvdW5kUGFkZGluZzogYmFzZVBhZGRpbmcsXG4gICAgICBiYWNrZ3JvdW5kQm9yZGVyUmFkaXVzOiBwcmVzZXQuYmFja2dyb3VuZEJvcmRlclJhZGl1cyxcbiAgICAgIHZlcnRpY2FsU3RyZXRjaDogcHJlc2V0LnZlcnRpY2FsU3RyZXRjaCB8fCAxLFxuICAgICAgdHJhbnNmb3JtT3JpZ2luOiBcImNlbnRlciBjZW50ZXJcIixcbiAgICAgIHdpZHRoOiBcImF1dG9cIixcbiAgICAgIG1heFdpZHRoOiBgJHt2aWRlb1dpZHRoICogMC45fXB4YCxcbiAgICAgIHdoaXRlU3BhY2U6IFwicHJlLXdyYXBcIixcbiAgICAgIG92ZXJmbG93OiBcInZpc2libGVcIixcbiAgICAgIG91dGxpbmVDb2xvcjogcHJlc2V0Lm91dGxpbmVDb2xvcixcbiAgICAgIG91dGxpbmVXaWR0aDogcHJlc2V0Lm91dGxpbmVXaWR0aCxcbiAgICAgIGZpbHRlcjogZHJvcFNoYWRvdyxcbiAgICAgIGRpc3BsYXk6IFwiaW5saW5lLWJsb2NrXCIsXG4gICAgICB0ZXh0SGlnaGxpZ2h0UGVyc2lzdHM6IHByZXNldC50ZXh0SGlnaGxpZ2h0UGVyc2lzdHMsXG4gICAgICBhbXBsaWZpZWRPcGFjaXR5OiBwcmVzZXQuYW1wbGlmaWVkT3BhY2l0eSxcbiAgICAgIHVuQW1wbGlmaWVkT3BhY2l0eTogcHJlc2V0Lm9wYWNpdHksXG4gICAgICBjdXJyZW50V29yZEJsb2NrOiBwcmVzZXQuY3VycmVudFdvcmRCbG9jayxcbiAgICAgIGN1cnJlbnRXb3JkQmxvY2tCYWNrZ3JvdW5kQ29sb3I6IHByZXNldC5jdXJyZW50V29yZEJsb2NrQmFja2dyb3VuZENvbG9yLFxuICAgICAgY3VycmVudFdvcmRCbG9ja09wYWNpdHk6IHByZXNldC5jdXJyZW50V29yZEJsb2NrT3BhY2l0eSxcbiAgICAgIGN1cnJlbnRXb3JkQmxvY2tQYWRkaW5nOiBwcmVzZXQuY3VycmVudFdvcmRCbG9ja1BhZGRpbmcsXG4gICAgICBjdXJyZW50V29yZEJsb2NrQm9yZGVyUmFkaXVzOiBwcmVzZXQuY3VycmVudFdvcmRCbG9ja0JvcmRlclJhZGl1cyxcbiAgICAgIGFtcGxpZnlPcGFjaXR5VHJhbnNpdGlvbkR1cmF0aW9uOiBwcmVzZXQuYW1wbGlmeU9wYWNpdHlUcmFuc2l0aW9uRHVyYXRpb24sXG4gICAgICB0ZXh0U2hhZG93LFxuICAgICAgc2hhZG93SW50ZW5zaXR5OiBwcmVzZXQuc2hhZG93SW50ZW5zaXR5LFxuICAgIH07XG4gICAgXG4gICAgLy8gY29uc29sZS5sb2coJ3VzZVRleHRTdHlsZSAtIG91dHB1dCBzdHlsZSBmb250RmFtaWx5OicsIHN0eWxlLmZvbnRGYW1pbHkpO1xuICAgIHJldHVybiBzdHlsZTtcbiAgfSwgW3ByZXNldCwgeCwgYWRqdXN0ZWRZLCB2aWRlb1dpZHRoXSk7XG59OyAiLCIvLyBGb250IG1hcCB0aGF0IG1hdGNoZXMgQ1NTIGZvbnQtZmFtaWx5IG5hbWVzIHRvIHRoZWlyIGZvbnQgZmlsZXMgYW5kIHdlaWdodHNcbmNvbnN0IEZPTlRfTUFQID0ge1xuICAnUG9zdGVyYW1hLTE5MjctVzAxLVVsdHJhQmxhY2snOiBbeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9Qb3N0ZXJhbWEtMTkyNy1XMDEtVWx0cmFCbGFjay50dGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA5MDAsIHN0eWxlOiAnbm9ybWFsJyB9XSxcbiAgJ1N0YXBlbC1OYXJyb3cnOiBbeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9OZXVlSGFhc0Rpc3BsYXkvTmV1ZUhhYXNEaXNwbGF5Um9tYW4udHRmP2FsdD1tZWRpYScsIHdlaWdodDogNDAwLCBzdHlsZTogJ25vcm1hbCcgfV0sXG4gICdTdGFwZWwtTmFycm93TWVkaXVtJzogW3sgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvc3RhcGVsL1N0YXBlbC1OYXJyb3dNZWRpdW0udHRmP2FsdD1tZWRpYScsIHdlaWdodDogNTAwLCBzdHlsZTogJ25vcm1hbCcgfV0sXG4gICdOZXVlSGFhc0Rpc3BsYXlCb2xkJzogW3sgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvTmV1ZUhhYXNEaXNwbGF5Qm9sZC50dGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA3MDAsIHN0eWxlOiAnbm9ybWFsJyB9XSxcbiAgJ1RoZUJvbGRGb250JzogW3sgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvdGhlYm9sZGZvbnQudHRmP2FsdD1tZWRpYScsIHdlaWdodDogNzAwLCBzdHlsZTogJ25vcm1hbCcgfV0sXG4gICdNZXJjYWRpbGxvIEJsYWNrJzogW3sgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWVyY2FkaWxsby9NZXJjYWRpbGxvLUJsYWNrLnR0Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDkwMCwgc3R5bGU6ICdub3JtYWwnIH1dLFxuICAnTWVyY2FkaWxsbyBCb2xkJzogW3sgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWVyY2FkaWxsby9NZXJjYWRpbGxvLUJvbGQudHRmP2FsdD1tZWRpYScsIHdlaWdodDogNzAwLCBzdHlsZTogJ25vcm1hbCcgfV0sXG4gIFxuICAvLyBuZWVkIHRvIGFkZCBpbnRlciBmb250IHZhcmlhdGlvbnNcbiAgLy8gSW50ZXIgZm9udCB2YXJpYXRpb25zXG4gICdJbnRlcic6IFtcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL0ludGVyL0ludGVyLVRoaW4ud29mZjI/YWx0PW1lZGlhJywgd2VpZ2h0OiAxMDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvSW50ZXIvSW50ZXItRXh0cmFMaWdodC53b2ZmMj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDIwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9JbnRlci9JbnRlci1MaWdodC53b2ZmMj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDMwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9JbnRlci9JbnRlci1SZWd1bGFyLndvZmYyP2FsdD1tZWRpYScsIHdlaWdodDogNDAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL0ludGVyL0ludGVyLU1lZGl1bS53b2ZmMj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDUwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9JbnRlci9JbnRlci1TZW1pQm9sZC53b2ZmMj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDYwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9JbnRlci9JbnRlci1Cb2xkLndvZmYyP2FsdD1tZWRpYScsIHdlaWdodDogNzAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL0ludGVyL0ludGVyLUV4dHJhQm9sZC53b2ZmMj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDgwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9JbnRlci9JbnRlci1CbGFjay53b2ZmMj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDkwMCwgc3R5bGU6ICdub3JtYWwnIH1cbiAgXSxcblxuICAvLyBNaWxsaWFyZCBmb250IHZhcmlhdGlvbnNcbiAgJ01pbGxpYXJkJzogW1xuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWlsbGlhcmQvUmVuZSUyMEJpZWRlciUyMCUyME1pbGxpYXJkJTIwVGhpbi5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiAxMDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWlsbGlhcmQvUmVuZSUyMEJpZWRlciUyMCUyME1pbGxpYXJkJTIwVGhpbiUyMEl0YWxpYy5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiAxMDAsIHN0eWxlOiAnaXRhbGljJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWlsbGlhcmQvUmVuZSUyMEJpZWRlciUyMCUyME1pbGxpYXJkJTIwRXh0cmFMaWdodC5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiAyMDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWlsbGlhcmQvUmVuZSUyMEJpZWRlciUyMCUyME1pbGxpYXJkJTIwRXh0cmFMaWdodCUyMEl0YWxpYy5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiAyMDAsIHN0eWxlOiAnaXRhbGljJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWlsbGlhcmQvUmVuZSUyMEJpZWRlciUyMCUyME1pbGxpYXJkJTIwTGlnaHQub3RmP2FsdD1tZWRpYScsIHdlaWdodDogMzAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL21pbGxpYXJkL1JlbmUlMjBCaWVkZXIlMjAlMjBNaWxsaWFyZCUyMExpZ2h0JTIwSXRhbGljLm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDMwMCwgc3R5bGU6ICdpdGFsaWMnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9taWxsaWFyZC9SZW5lJTIwQmllZGVyJTIwJTIwTWlsbGlhcmQlMjBCb29rLm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDQwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9taWxsaWFyZC9SZW5lJTIwQmllZGVyJTIwJTIwTWlsbGlhcmQlMjBCb29rJTIwSXRhbGljLm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDQwMCwgc3R5bGU6ICdpdGFsaWMnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9taWxsaWFyZC9SZW5lJTIwQmllZGVyJTIwJTIwTWlsbGlhcmQlMjBNZWRpdW0ub3RmP2FsdD1tZWRpYScsIHdlaWdodDogNTAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL21pbGxpYXJkL1JlbmUlMjBCaWVkZXIlMjAlMjBNaWxsaWFyZCUyME1lZGl1bSUyMEl0YWxpYy5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA1MDAsIHN0eWxlOiAnaXRhbGljJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWlsbGlhcmQvUmVuZSUyMEJpZWRlciUyMCUyME1pbGxpYXJkJTIwU2VtaUJvbGQub3RmP2FsdD1tZWRpYScsIHdlaWdodDogNjAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL21pbGxpYXJkL1JlbmUlMjBCaWVkZXIlMjAlMjBNaWxsaWFyZCUyMFNlbWlCb2xkJTIwSXRhbGljLm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDYwMCwgc3R5bGU6ICdpdGFsaWMnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9taWxsaWFyZC9SZW5lJTIwQmllZGVyJTIwJTIwTWlsbGlhcmQlMjBCb2xkLm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDcwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9taWxsaWFyZC9SZW5lJTIwQmllZGVyJTIwJTIwTWlsbGlhcmQlMjBCb2xkJTIwSXRhbGljLm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDcwMCwgc3R5bGU6ICdpdGFsaWMnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9taWxsaWFyZC9SZW5lJTIwQmllZGVyJTIwJTIwTWlsbGlhcmQlMjBFeHRyYUJvbGQub3RmP2FsdD1tZWRpYScsIHdlaWdodDogODAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL21pbGxpYXJkL1JlbmUlMjBCaWVkZXIlMjAlMjBNaWxsaWFyZCUyMEV4dHJhQm9sZCUyMEl0YWxpYy5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA4MDAsIHN0eWxlOiAnaXRhbGljJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvbWlsbGlhcmQvUmVuZSUyMEJpZWRlciUyMCUyME1pbGxpYXJkJTIwQmxhY2sub3RmP2FsdD1tZWRpYScsIHdlaWdodDogOTAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL21pbGxpYXJkL1JlbmUlMjBCaWVkZXIlMjAlMjBNaWxsaWFyZCUyMEJsYWNrJTIwSXRhbGljLm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDkwMCwgc3R5bGU6ICdpdGFsaWMnIH1cbiAgXSxcblxuICAnQXJpYWwgQmxhY2snOiBbeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9BcmlhbCUyMEJsYWNrLnR0Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDkwMCwgc3R5bGU6ICdub3JtYWwnIH1dLFxuICBcbiAgLy8gU29maWEgUHJvIGZvbnQgdmFyaWF0aW9uc1xuICAnU29maWEgUHJvJzogW1xuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvc29maWEtcHJvL1NvZmlhJTIwUHJvJTIwTGlnaHQlMjBBei5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiAzMDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvc29maWEtcHJvL1NvZmlhJTIwUHJvJTIwTGlnaHQlMjBJdGFsaWMlMjBBei5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiAzMDAsIHN0eWxlOiAnaXRhbGljJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvc29maWEtcHJvL1NvZmlhJTIwUHJvJTIwUmVndWxhciUyMEF6Lm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDQwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9zb2ZpYS1wcm8vU29maWElMjBQcm8lMjBSZWd1bGFyJTIwSXRhbGljJTIwQXoub3RmP2FsdD1tZWRpYScsIHdlaWdodDogNDAwLCBzdHlsZTogJ2l0YWxpYycgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL3NvZmlhLXByby9Tb2ZpYSUyMFBybyUyME1lZGl1bSUyMEF6Lm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDUwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9zb2ZpYS1wcm8vU29maWElMjBQcm8lMjBNZWRpdW0lMjBJdGFsaWMlMjBBei5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA1MDAsIHN0eWxlOiAnaXRhbGljJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvc29maWEtcHJvL1NvZmlhJTIwUHJvJTIwU2VtaSUyMEJvbGQlMjBBei5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA2MDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvc29maWEtcHJvL1NvZmlhJTIwUHJvJTIwU2VtaSUyMEJvbGQlMjBJdGFsaWMlMjBBei5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiA2MDAsIHN0eWxlOiAnaXRhbGljJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvc29maWEtcHJvL1NvZmlhJTIwUHJvJTIwQm9sZCUyMEF6Lm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDcwMCwgc3R5bGU6ICdub3JtYWwnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9zb2ZpYS1wcm8vU29maWElMjBQcm8lMjBCb2xkJTIwSXRhbGljJTIwQXoub3RmP2FsdD1tZWRpYScsIHdlaWdodDogNzAwLCBzdHlsZTogJ2l0YWxpYycgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL3NvZmlhLXByby9Tb2ZpYSUyMFBybyUyMEJsYWNrJTIwQXoub3RmP2FsdD1tZWRpYScsIHdlaWdodDogOTAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL3NvZmlhLXByby9Tb2ZpYSUyMFBybyUyMEJsYWNrJTIwSXRhbGljJTIwQXoub3RmP2FsdD1tZWRpYScsIHdlaWdodDogOTAwLCBzdHlsZTogJ2l0YWxpYycgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL3NvZmlhLXByby9Tb2ZpYSUyMFBybyUyMEV4dHJhTGlnaHQlMjBBei5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiAyMDAsIHN0eWxlOiAnbm9ybWFsJyB9LFxuICAgIHsgc3JjOiAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL292ZXJsYXAtZm9udHMvZm9udHMvc29maWEtcHJvL1NvZmlhJTIwUHJvJTIwRXh0cmFMaWdodCUyMEl0YWxpYyUyMEF6Lm90Zj9hbHQ9bWVkaWEnLCB3ZWlnaHQ6IDIwMCwgc3R5bGU6ICdpdGFsaWMnIH0sXG4gICAgeyBzcmM6ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vb3ZlcmxhcC1mb250cy9mb250cy9zb2ZpYS1wcm8vU29maWElMjBQcm8lMjBVbHRyYUxpZ2h0JTIwQXoub3RmP2FsdD1tZWRpYScsIHdlaWdodDogMTAwLCBzdHlsZTogJ25vcm1hbCcgfSxcbiAgICB7IHNyYzogJ2h0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9vdmVybGFwLWZvbnRzL2ZvbnRzL3NvZmlhLXByby9Tb2ZpYSUyMFBybyUyMFVsdHJhTGlnaHQlMjBJdGFsaWMlMjBBei5vdGY/YWx0PW1lZGlhJywgd2VpZ2h0OiAxMDAsIHN0eWxlOiAnaXRhbGljJyB9XG4gIF1cbn07XG5cbmV4cG9ydCBjb25zdCBsb2FkRG9jdW1lbnRGb250cyA9IGFzeW5jIChmb250RmFtaWx5KSA9PiB7ICBcbiAgaWYgKGZvbnRGYW1pbHkgPT09ICdBcmlhbCcpIHsgXG4gICAgcmV0dXJuO1xuICB9XG4gIGVsc2UgaWYgKCFmb250RmFtaWx5IHx8IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjb25zb2xlLndhcm4oJ0ZvbnQgZmFtaWx5IGlzIG5vdCBwcm92aWRlZCBvciBkb2N1bWVudCBpcyB1bmRlZmluZWQuJyk7XG4gICAgcmV0dXJuO1xuICB9IFxuXG4gIC8vIENsZWFuIHRoZSBmb250IGZhbWlseSBuYW1lIChyZW1vdmUgcXVvdGVzIGFuZCBmYWxsYmFja3MpXG4gIGNvbnN0IGNsZWFuRm9udEZhbWlseSA9IGZvbnRGYW1pbHkucmVwbGFjZSgvWydcIl0vZywgJycpLnNwbGl0KCcsJylbMF0udHJpbSgpO1xuICAvLyBjb25zb2xlLmxvZyhgQ2xlYW5lZCBmb250IGZhbWlseSBuYW1lOiAke2NsZWFuRm9udEZhbWlseX1gKTtcbiAgXG4gIC8vIEdldCBmb250IHZhcmlhdGlvbnMgZm9yIHRoaXMgZmFtaWx5XG4gIGNvbnN0IGZvbnRWYXJpYXRpb25zID0gRk9OVF9NQVBbY2xlYW5Gb250RmFtaWx5XTtcbiAgaWYgKCFmb250VmFyaWF0aW9ucykge1xuICAgIGNvbnNvbGUud2FybihgRm9udCBmYW1pbHkgXCIke2NsZWFuRm9udEZhbWlseX1cIiBub3QgZm91bmQgaW4gZm9udCBtYXBgKTtcbiAgICByZXR1cm47XG4gIH1cbiAgXG4gIC8vIGNvbnNvbGUubG9nKGBGb3VuZCBmb250IHZhcmlhdGlvbnMgZm9yIFwiJHtjbGVhbkZvbnRGYW1pbHl9XCI6YCwgZm9udFZhcmlhdGlvbnMpO1xuXG4gIHRyeSB7XG4gICAgLy8gTG9hZCBhbGwgdmFyaWF0aW9ucyBvZiB0aGUgZm9udCBmYW1pbHlcbiAgICBjb25zdCBsb2FkUHJvbWlzZXMgPSBmb250VmFyaWF0aW9ucy5tYXAoYXN5bmMgKHsgc3JjLCB3ZWlnaHQsIHN0eWxlIH0pID0+IHtcbiAgICAgIGNvbnN0IGZvbnQgPSBuZXcgRm9udEZhY2UoY2xlYW5Gb250RmFtaWx5LCBgdXJsKCR7c3JjfSlgLCB7IHdlaWdodCwgc3R5bGUgfSk7XG4gICAgICBjb25zdCBsb2FkZWRGb250ID0gYXdhaXQgZm9udC5sb2FkKCk7XG4gICAgICBkb2N1bWVudC5mb250cy5hZGQobG9hZGVkRm9udCk7XG4gICAgICByZXR1cm4gbG9hZGVkRm9udDtcbiAgICB9KTtcblxuICAgIGF3YWl0IFByb21pc2UuYWxsKGxvYWRQcm9taXNlcyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcihgRXJyb3IgbG9hZGluZyBmb250IGZhbWlseSBcIiR7Y2xlYW5Gb250RmFtaWx5fVwiOmAsIGVycm9yKTtcbiAgfVxufTsiLG51bGwsbnVsbCwiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUN1cnJlbnRGcmFtZSB9IGZyb20gJ3JlbW90aW9uJztcblxuZXhwb3J0IGNvbnN0IHVzZUFkanVzdGVkUG9zaXRpb24gPSAoeSwgZmFjZURhdGEpID0+IHtcbiAgY29uc3QgY3VycmVudEZyYW1lID0gdXNlQ3VycmVudEZyYW1lKCk7XG5cbiAgLy8gTWVtb2l6ZSBmYWNlIGV2ZW50IGxvb2t1cFxuICBjb25zdCBjdXJyZW50RmFjZUV2ZW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFmYWNlRGF0YT8uZXZlbnRzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB7IG51bVBlb3BsZTogMiB9O1xuICAgIH1cbiAgICByZXR1cm4gZmFjZURhdGEuZXZlbnRzLmZpbmRMYXN0KFxuICAgICAgKGV2ZW50KSA9PiBldmVudC5mcmFtZSA8PSBjdXJyZW50RnJhbWVcbiAgICApIHx8IHsgbnVtUGVvcGxlOiAyIH07XG4gIH0sIFtjdXJyZW50RnJhbWUsIGZhY2VEYXRhPy5ldmVudHNdKTtcbiAgXG4gIC8vIEFkanVzdCBZIHBvc2l0aW9uIG9ubHkgaWYgZmFjZSBkZXRlY3Rpb24gZGF0YSBpcyBhdmFpbGFibGVcbiAgY29uc3QgYWRqdXN0ZWRZID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGN1cnJlbnRGYWNlRXZlbnQubnVtUGVvcGxlID09PSAyKSB7XG4gICAgICByZXR1cm4geTtcbiAgICB9XG4gICAgaWYgKHkgPT09IDk2MCkge1xuICAgICAgcmV0dXJuIHkgKiAyIC0gMzAwO1xuICAgIH1cbiAgICByZXR1cm4geTtcbiAgfSwgW3ksIGN1cnJlbnRGYWNlRXZlbnQubnVtUGVvcGxlXSk7XG5cbiAgcmV0dXJuIHsgY3VycmVudEZhY2VFdmVudCwgYWRqdXN0ZWRZIH07XG59OyAiLCJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuXG5leHBvcnQgY29uc3QgdXNlQWRqdXN0ZWRQaHJhc2VzID0gKHN1YnRpdGxlc0RhdGEsIG1heENoYXJzUGVyTGluZSwgZnBzLCBzZWdtZW50RGF0YSA9IFtdKSA9PiB7XG4gIHJldHVybiB1c2VNZW1vKCgpID0+IHtcbiAgICAvLyBJZiBubyBzZWdtZW50IGRhdGEsIHJldHVybiBlbXB0eSBhcnJheVxuICAgIGlmICghc2VnbWVudERhdGEgfHwgc2VnbWVudERhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgZ2V0TWlzc2luZ1dvcmRQaHJhc2VzSWZFeGlzdCA9IChzdGFydFRpbWUsIGVuZFRpbWUpID0+IHtcbiAgICAgIC8vIEZpbmQgd29yZHMgdGhhdCBmYWxsIGluIHRoZSBnYXBcbiAgICAgIGNvbnN0IGdhcFdvcmRzID0gc3VidGl0bGVzRGF0YS5maWx0ZXIod29yZCA9PiBcbiAgICAgICAgd29yZC5zdGFydCA+PSBzdGFydFRpbWUgJiYgd29yZC5lbmQgPD0gZW5kVGltZVxuICAgICAgKTtcblxuICAgICAgaWYgKGdhcFdvcmRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIFtdO1xuXG4gICAgICAvLyBDcmVhdGUgcGhyYXNlcyBmcm9tIGdhcCB3b3JkcyB1c2luZyBzYW1lIGxvZ2ljIGFzIHNlZ21lbnQgcGhyYXNlc1xuICAgICAgY29uc3QgZ2FwUGhyYXNlcyA9IFtdO1xuICAgICAgbGV0IGN1cnJlbnRQaHJhc2UgPSB7XG4gICAgICAgIHRleHQ6IFwiXCIsXG4gICAgICAgIHdvcmRzOiBbXSxcbiAgICAgICAgc3RhcnQ6IG51bGwsXG4gICAgICAgIGVuZDogbnVsbCxcbiAgICAgICAgc2VnbWVudEluZGV4OiAtMSwgIC8vIFNwZWNpYWwgaW5kZXggZm9yIGdhcCBwaHJhc2VzXG4gICAgICAgIGR1cmF0aW9uSW5GcmFtZXM6IDBcbiAgICAgIH07XG5cbiAgICAgIGdhcFdvcmRzLmZvckVhY2goKHdvcmQsIHdvcmRJbmRleCkgPT4ge1xuICAgICAgICBjb25zdCB3b3JkV2l0aFNwYWNlID0gd29yZEluZGV4ID09PSAwID8gd29yZC53b3JkIDogYCAke3dvcmQud29yZH1gO1xuICAgICAgICBjb25zdCBuZXdMZW5ndGggPSBjdXJyZW50UGhyYXNlLnRleHQubGVuZ3RoICsgd29yZFdpdGhTcGFjZS5sZW5ndGg7XG5cbiAgICAgICAgaWYgKG5ld0xlbmd0aCA8PSBtYXhDaGFyc1BlckxpbmUpIHtcbiAgICAgICAgICAvLyBBZGQgdG8gY3VycmVudCBwaHJhc2VcbiAgICAgICAgICBjdXJyZW50UGhyYXNlLnRleHQgKz0gd29yZFdpdGhTcGFjZTtcbiAgICAgICAgICBjdXJyZW50UGhyYXNlLndvcmRzLnB1c2god29yZCk7XG4gICAgICAgICAgY3VycmVudFBocmFzZS5zdGFydCA9IGN1cnJlbnRQaHJhc2Uuc3RhcnQgPT09IG51bGwgPyB3b3JkLnN0YXJ0IDogY3VycmVudFBocmFzZS5zdGFydDtcbiAgICAgICAgICBjdXJyZW50UGhyYXNlLmVuZCA9IHdvcmQuZW5kO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEZpbmFsaXplIGN1cnJlbnQgcGhyYXNlXG4gICAgICAgICAgaWYgKGN1cnJlbnRQaHJhc2Uud29yZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZ2FwUGhyYXNlcy5wdXNoKGN1cnJlbnRQaHJhc2UpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFN0YXJ0IG5ldyBwaHJhc2Ugd2l0aCBjdXJyZW50IHdvcmRcbiAgICAgICAgICBjdXJyZW50UGhyYXNlID0ge1xuICAgICAgICAgICAgdGV4dDogd29yZC53b3JkLFxuICAgICAgICAgICAgd29yZHM6IFt3b3JkXSxcbiAgICAgICAgICAgIHN0YXJ0OiB3b3JkLnN0YXJ0LFxuICAgICAgICAgICAgZW5kOiB3b3JkLmVuZCxcbiAgICAgICAgICAgIHNlZ21lbnRJbmRleDogLTFcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgLy8gQWRkIHRoZSBsYXN0IHBocmFzZSBpZiBpdCBoYXMgd29yZHNcbiAgICAgIGlmIChjdXJyZW50UGhyYXNlLndvcmRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZ2FwUGhyYXNlcy5wdXNoKGN1cnJlbnRQaHJhc2UpO1xuICAgICAgfVxuXG4gICAgICAvLyBQcm9jZXNzIHRpbWluZyBmb3IgZ2FwIHBocmFzZXNcbiAgICAgIGNvbnN0IHByb2Nlc3NlZEdhcFBocmFzZXMgPSBnYXBQaHJhc2VzLm1hcCgocGhyYXNlLCBwaHJhc2VJbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBzdGFydEZyYW1lID0gTWF0aC5mbG9vcihwaHJhc2Uuc3RhcnQgKiBmcHMpO1xuICAgICAgICBsZXQgZW5kRnJhbWU7XG5cbiAgICAgICAgaWYgKHBocmFzZUluZGV4IDwgZ2FwUGhyYXNlcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgY29uc3QgbmV4dFBocmFzZSA9IGdhcFBocmFzZXNbcGhyYXNlSW5kZXggKyAxXTtcbiAgICAgICAgICBjb25zdCB0aW1lRGlmZiA9IG5leHRQaHJhc2Uuc3RhcnQgLSBwaHJhc2UuZW5kO1xuICAgICAgICAgIGVuZEZyYW1lID0gdGltZURpZmYgPiAwLjMgPyBcbiAgICAgICAgICAgIE1hdGguZmxvb3IocGhyYXNlLmVuZCAqIGZwcykgOiBcbiAgICAgICAgICAgIE1hdGguZmxvb3IobmV4dFBocmFzZS5zdGFydCAqIGZwcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW5kRnJhbWUgPSBNYXRoLmZsb29yKHBocmFzZS5lbmQgKiBmcHMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5waHJhc2UsXG4gICAgICAgICAgc3RhcnRGcmFtZSxcbiAgICAgICAgICBlbmRGcmFtZSxcbiAgICAgICAgICBkdXJhdGlvbkluRnJhbWVzOiBlbmRGcmFtZSAtIHN0YXJ0RnJhbWUgKyAxXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHByb2Nlc3NlZEdhcFBocmFzZXM7XG4gICAgfTtcblxuICAgIGNvbnN0IG1hc3RlclBocmFzZXMgPSBbXTtcblxuICAgIC8vIENoZWNrIGZvciB3b3JkcyBiZWZvcmUgdGhlIGZpcnN0IHNlZ21lbnRcbiAgICBpZiAoc2VnbWVudERhdGEubGVuZ3RoID4gMCAmJiBzdWJ0aXRsZXNEYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpcnN0U2VnbWVudFN0YXJ0ID0gc2VnbWVudERhdGFbMF0uc3RhcnQ7XG4gICAgICBjb25zdCBmaXJzdFdvcmRTdGFydCA9IDA7IC8vIFN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZ1xuICAgICAgY29uc3QgcHJlU2VnbWVudFBocmFzZXMgPSBnZXRNaXNzaW5nV29yZFBocmFzZXNJZkV4aXN0KGZpcnN0V29yZFN0YXJ0LCBmaXJzdFNlZ21lbnRTdGFydCk7XG4gICAgICBpZiAocHJlU2VnbWVudFBocmFzZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBtYXN0ZXJQaHJhc2VzLnB1c2goLi4ucHJlU2VnbWVudFBocmFzZXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFByb2Nlc3MgZWFjaCBzZWdtZW50IGFuZCBnYXBzIGJldHdlZW4gc2VnbWVudHNcbiAgICBzZWdtZW50RGF0YS5mb3JFYWNoKChzZWdtZW50LCBzZWdtZW50SW5kZXgpID0+IHtcbiAgICAgIC8vIDEuIEdldCB3b3JkcyBmb3IgdGhpcyBzZWdtZW50XG4gICAgICBjb25zdCBzZWdtZW50V29yZHMgPSBzdWJ0aXRsZXNEYXRhLmZpbHRlcih3b3JkID0+IHdvcmQuc2VnbWVudElkID09PSBzZWdtZW50SW5kZXgpO1xuICAgICAgXG4gICAgICAvLyBQcm9jZXNzIHNlZ21lbnQgcGhyYXNlc1xuICAgICAgaWYgKHNlZ21lbnRXb3Jkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vIDIuIENyZWF0ZSBwaHJhc2VzIGZvciB0aGlzIHNlZ21lbnRcbiAgICAgICAgY29uc3QgY3VycmVudFNlZ21lbnRQaHJhc2VzID0gW107XG4gICAgICAgIGxldCBjdXJyZW50UGhyYXNlID0ge1xuICAgICAgICAgIHRleHQ6IFwiXCIsXG4gICAgICAgICAgd29yZHM6IFtdLFxuICAgICAgICAgIHN0YXJ0OiBudWxsLFxuICAgICAgICAgIGVuZDogbnVsbCxcbiAgICAgICAgICBzZWdtZW50SW5kZXhcbiAgICAgICAgfTtcblxuICAgICAgICBzZWdtZW50V29yZHMuZm9yRWFjaCgod29yZCwgd29yZEluZGV4KSA9PiB7XG4gICAgICAgICAgY29uc3Qgd29yZFdpdGhTcGFjZSA9IHdvcmRJbmRleCA9PT0gMCA/IHdvcmQud29yZCA6IGAgJHt3b3JkLndvcmR9YDtcbiAgICAgICAgICBjb25zdCBuZXdMZW5ndGggPSBjdXJyZW50UGhyYXNlLnRleHQubGVuZ3RoICsgd29yZFdpdGhTcGFjZS5sZW5ndGg7XG5cbiAgICAgICAgICBpZiAobmV3TGVuZ3RoIDw9IG1heENoYXJzUGVyTGluZSkge1xuICAgICAgICAgICAgLy8gQWRkIHRvIGN1cnJlbnQgcGhyYXNlXG4gICAgICAgICAgICBjdXJyZW50UGhyYXNlLnRleHQgKz0gd29yZFdpdGhTcGFjZTtcbiAgICAgICAgICAgIGN1cnJlbnRQaHJhc2Uud29yZHMucHVzaCh3b3JkKTtcbiAgICAgICAgICAgIGN1cnJlbnRQaHJhc2Uuc3RhcnQgPSBjdXJyZW50UGhyYXNlLnN0YXJ0ID09PSBudWxsID8gd29yZC5zdGFydCA6IGN1cnJlbnRQaHJhc2Uuc3RhcnQ7XG4gICAgICAgICAgICBjdXJyZW50UGhyYXNlLmVuZCA9IHdvcmQuZW5kO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBGaW5hbGl6ZSBjdXJyZW50IHBocmFzZVxuICAgICAgICAgICAgaWYgKGN1cnJlbnRQaHJhc2Uud29yZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBjdXJyZW50U2VnbWVudFBocmFzZXMucHVzaChjdXJyZW50UGhyYXNlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gU3RhcnQgbmV3IHBocmFzZSB3aXRoIGN1cnJlbnQgd29yZFxuICAgICAgICAgICAgY3VycmVudFBocmFzZSA9IHtcbiAgICAgICAgICAgICAgdGV4dDogd29yZC53b3JkLFxuICAgICAgICAgICAgICB3b3JkczogW3dvcmRdLFxuICAgICAgICAgICAgICBzdGFydDogd29yZC5zdGFydCxcbiAgICAgICAgICAgICAgZW5kOiB3b3JkLmVuZCxcbiAgICAgICAgICAgICAgc2VnbWVudEluZGV4XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQWRkIHRoZSBsYXN0IHBocmFzZSBpZiBpdCBoYXMgd29yZHNcbiAgICAgICAgaWYgKGN1cnJlbnRQaHJhc2Uud29yZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGN1cnJlbnRTZWdtZW50UGhyYXNlcy5wdXNoKGN1cnJlbnRQaHJhc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMy4gUHJvY2VzcyB0aW1pbmcgZm9yIHBocmFzZXNcbiAgICAgICAgY29uc3QgcHJvY2Vzc2VkUGhyYXNlcyA9IGN1cnJlbnRTZWdtZW50UGhyYXNlcy5tYXAoKHBocmFzZSwgcGhyYXNlSW5kZXgpID0+IHtcbiAgICAgICAgICBjb25zdCBzdGFydEZyYW1lID0gTWF0aC5mbG9vcihwaHJhc2Uuc3RhcnQgKiBmcHMpO1xuICAgICAgICAgIGxldCBlbmRGcmFtZTtcblxuICAgICAgICAgIC8vIENhbGN1bGF0ZSBlbmQgZnJhbWUgYmFzZWQgb24gbmV4dCBwaHJhc2Ugb3Igc2VnbWVudCBlbmRcbiAgICAgICAgICBpZiAocGhyYXNlSW5kZXggPCBjdXJyZW50U2VnbWVudFBocmFzZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgY29uc3QgbmV4dFBocmFzZSA9IGN1cnJlbnRTZWdtZW50UGhyYXNlc1twaHJhc2VJbmRleCArIDFdO1xuICAgICAgICAgICAgY29uc3QgdGltZURpZmYgPSBuZXh0UGhyYXNlLnN0YXJ0IC0gcGhyYXNlLmVuZDtcbiAgICAgICAgICAgIGVuZEZyYW1lID0gdGltZURpZmYgPiAwLjMgPyBcbiAgICAgICAgICAgICAgTWF0aC5mbG9vcihwaHJhc2UuZW5kICogZnBzKSA6IFxuICAgICAgICAgICAgICBNYXRoLmZsb29yKG5leHRQaHJhc2Uuc3RhcnQgKiBmcHMpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBlbmRGcmFtZSA9IE1hdGguZmxvb3IocGhyYXNlLmVuZCAqIGZwcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gRW5zdXJlIHBocmFzZSBkb2Vzbid0IGV4dGVuZCBiZXlvbmQgc2VnbWVudCBib3VuZGFyaWVzXG4gICAgICAgICAgZW5kRnJhbWUgPSBNYXRoLm1pbihlbmRGcmFtZSwgTWF0aC5mbG9vcihzZWdtZW50LmVuZCAqIGZwcykpO1xuXG4gICAgICAgICAgY29uc3QgcHJvY2Vzc2VkUGhyYXNlID0ge1xuICAgICAgICAgICAgLi4ucGhyYXNlLFxuICAgICAgICAgICAgc3RhcnRGcmFtZSxcbiAgICAgICAgICAgIGVuZEZyYW1lLFxuICAgICAgICAgICAgZHVyYXRpb25JbkZyYW1lczogZW5kRnJhbWUgLSBzdGFydEZyYW1lICsgMVxuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIHByb2Nlc3NlZFBocmFzZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gNC4gQWRkIHRvIG1hc3RlciBhcnJheVxuICAgICAgICBtYXN0ZXJQaHJhc2VzLnB1c2goLi4ucHJvY2Vzc2VkUGhyYXNlcyk7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGZvciBnYXAgYWZ0ZXIgdGhpcyBzZWdtZW50XG4gICAgICBpZiAoc2VnbWVudEluZGV4IDwgc2VnbWVudERhdGEubGVuZ3RoIC0gMSkge1xuICAgICAgICBjb25zdCBuZXh0U2VnbWVudCA9IHNlZ21lbnREYXRhW3NlZ21lbnRJbmRleCArIDFdO1xuICAgICAgICBjb25zdCBnYXBQaHJhc2VzID0gZ2V0TWlzc2luZ1dvcmRQaHJhc2VzSWZFeGlzdChzZWdtZW50LmVuZCwgbmV4dFNlZ21lbnQuc3RhcnQpO1xuICAgICAgICBpZiAoZ2FwUGhyYXNlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgbWFzdGVyUGhyYXNlcy5wdXNoKC4uLmdhcFBocmFzZXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBTb3J0IGZpbmFsIHBocmFzZXMgYnkgc3RhcnQgdGltZVxuICAgIG1hc3RlclBocmFzZXMuc29ydCgoYSwgYikgPT4gYS5zdGFydCAtIGIuc3RhcnQpO1xuICAgIFxuICAgIHJldHVybiBtYXN0ZXJQaHJhc2VzO1xuICB9LCBbc3VidGl0bGVzRGF0YSwgbWF4Q2hhcnNQZXJMaW5lLCBmcHMsIHNlZ21lbnREYXRhXSk7XG59OyAiXSwibmFtZXMiOlsiZXN0aW1hdGVUZXh0V2lkdGgiLCJ0ZXh0IiwiZm9udFNpemUiLCJmb250RmFtaWx5IiwiY2FudmFzIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY29udGV4dCIsImdldENvbnRleHQiLCJmb250IiwiY29uY2F0IiwibWVhc3VyZVRleHQiLCJ3aWR0aCIsImdlbmVyYXRlT3V0bGluZVNoYWRvdyIsImNhY2hlIiwiTWFwIiwiY29sb3IiLCJvdXRsaW5lU3R5bGUiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJrZXkiLCJoYXMiLCJnZXQiLCJzaGFkb3dzIiwicGFyc2VkV2lkdGgiLCJwYXJzZUludCIsInB1c2giLCJoYWxmV2lkdGgiLCJNYXRoIiwicm91bmQiLCJpIiwiYW5nbGUiLCJQSSIsIngiLCJjb3MiLCJ5Iiwic2luIiwicmVzdWx0Iiwiam9pbiIsInNldCIsIlN1YnRpdGxlVGV4dCIsIm1lbW8iLCJfcmVmIiwic3R5bGUiLCJhbmltYXRpb25TdHlsZSIsImZyYW1lIiwic3RhcnRGcmFtZSIsInJhbmRvbUNvbG9ycyIsIndvcmRzIiwiZnBzIiwiaGlnaGxpZ2h0V29yZHNDb2xvciIsInJlbGF0aXZlRnJhbWUiLCJzY2FsZSIsInVzZU1lbW8iLCJzcHJpbmciLCJmcm9tIiwidG8iLCJjb25maWciLCJkYW1waW5nIiwic3RpZmZuZXNzIiwic3ByaW5nVmFsdWUiLCJtYXNzIiwidHJhbnNsYXRlWSIsInRyYW5zbGF0ZVZhbHVlIiwiYWRqdXN0ZWRGb250U2l6ZSIsIm1heExpbmVXaWR0aCIsImJhc2VGb250U2l6ZSIsInRleHRXaWR0aCIsInNjYWxlRmFjdG9yIiwiZmxvb3IiLCJhbmltYXRlZFN0eWxlIiwiYmFzZVBhZGRpbmciLCJiYWNrZ3JvdW5kUGFkZGluZyIsInNoYWRvd0ludGVuc2l0eSIsInNoYWRvd0NvbG9yIiwic2hhZG93Qmx1ciIsInNoYWRvd09mZnNldFgiLCJzaGFkb3dPZmZzZXRZIiwidGV4dFNoYWRvdyIsImhleFRvUmdiYSIsImhleCIsIm9wYWNpdHkiLCJzaG9ydGhhbmRSZWdleCIsInJlcGxhY2UiLCJtIiwiciIsImciLCJiIiwiZXhlYyIsImJhY2tncm91bmRDb2xvciIsImJhY2tncm91bmRPcGFjaXR5IiwicGFyc2VGbG9hdCIsInRyaW0iLCJiYWNrZ3JvdW5kIiwiaGFzQmFja2dyb3VuZCIsImhhc1NoYWRvdyIsImJvcmRlclJhZGl1cyIsImJhY2tncm91bmRCb3JkZXJSYWRpdXMiLCJpc1dyYXBwZWQiLCJiYWNrZ3JvdW5kRmlsbFN0eWxlIiwicGFkZGluZ1ZhbHVlIiwicGFkZGluZyIsImRpc3BsYXkiLCJiYXNlU3R5bGUiLCJfb2JqZWN0U3ByZWFkIiwib3ZlcmZsb3ciLCJib3hTaGFkb3ciLCJ0cmFuc2Zvcm0iLCJ3cmFwcGVyU3R5bGUiLCJwb3NpdGlvbiIsInZlcnRpY2FsU3RyZXRjaCIsIndoaXRlU3BhY2UiLCJhbGlnbkl0ZW1zIiwid2lsbENoYW5nZSIsImxlZnQiLCJ0b3AiLCJyaWdodCIsImJvdHRvbSIsIm91dGxpbmVDb2xvciIsIm91dGxpbmVXaWR0aCIsIldlYmtpdFRleHRGaWxsQ29sb3IiLCJ6SW5kZXgiLCJtYWluVGV4dFN0eWxlIiwiV2Via2l0VGV4dFN0cm9rZSIsInRleHRXb3JkcyIsInNwbGl0IiwiY3VycmVudFdvcmRUaW1lIiwicGhyYXNlQW1wbGlmaWVkU3R5bGUiLCJBcnJheSIsImlzQXJyYXkiLCJhbXBsaWZpZWRDb2xvcnMiLCJmaXJzdFdvcmQiLCJ3b3JkIiwiZ3JhZGllbnRJbmRleCIsInJhbmRvbSIsImdyYWRpZW50IiwiY29sb3JzIiwiYmFja2dyb3VuZENsaXAiLCJXZWJraXRCYWNrZ3JvdW5kQ2xpcCIsImNvbnNvbGUiLCJsb2ciLCJfdHlwZW9mIiwiYW1wbGlmaWVkQ29sb3IiLCJ0eXBlIiwicmFuZG9tQ29sb3JEYXRhIiwiZW5hYmxlZCIsInNob3VsZENvbG9yIiwicGN0QXBwbGllZCIsIl9yZWYyIiwicmFuZG9tV29yZENvdW50UmFuZ2UiLCJfcmVmMyIsIl9zbGljZWRUb0FycmF5IiwibWluV29yZHMiLCJtYXhXb3JkcyIsInJhbmdlIiwicmFuZG9tV29yZENvdW50IiwibWF4U3RhcnRJbmRleCIsIm1heCIsInN0YXJ0SW5kZXgiLCJyYW5kb21Db2xvck9iaiIsInBocmFzZVN0eWxlIiwid29yZENvbnRlbnQiLCJtYXAiLCJpbmRleCIsImhpZ2hsaWdodGVkTWF0Y2giLCJtYXRjaCIsImlzSGlnaGxpZ2h0ZWQiLCJkaXNwbGF5V29yZCIsInNob3VsZENvbG9yVGhpc1dvcmQiLCJ3b3JkVGltaW5nIiwiaGFzQmVlblNwb2tlbiIsImVuZCIsImlzQ3VycmVudGx5U3Bva2VuIiwic3RhcnQiLCJ0ZXh0SGlnaGxpZ2h0UGVyc2lzdHMiLCJzaG91bGRIaWdobGlnaHQiLCJhbXBsaWZ5U3Bva2VuV29yZHMiLCJ3b3JkU3R5bGUiLCJhbXBsaWZpZWRPcGFjaXR5IiwidW5BbXBsaWZpZWRPcGFjaXR5IiwiY29udGFpbmVyU3R5bGUiLCJtYXJnaW5SaWdodCIsIlJlYWN0IiwiY3VycmVudFdvcmRCbG9jayIsImNvbnRlbnQiLCJjdXJyZW50V29yZEJsb2NrUGFkZGluZyIsImhlaWdodCIsImN1cnJlbnRXb3JkQmxvY2tCYWNrZ3JvdW5kQ29sb3IiLCJjdXJyZW50V29yZEJsb2NrT3BhY2l0eSIsImN1cnJlbnRXb3JkQmxvY2tCb3JkZXJSYWRpdXMiLCJwb2ludGVyRXZlbnRzIiwiYm94U2l6aW5nIiwicHJldlByb3BzIiwibmV4dFByb3BzIiwiZXNzZW50aWFsUHJvcHMiLCJoYXNFc3NlbnRpYWxQcm9wc0NoYW5nZWQiLCJzb21lIiwicHJvcCIsIkpTT04iLCJzdHJpbmdpZnkiLCJmaW5kUGhyYXNlc0luUmFuZ2UiLCJ0aW1lIiwicGhyYXNlcyIsIm1pZCIsInBocmFzZSIsImhleFRvUmdiIiwic2xpY2UiLCJ1c2VUZXh0U3R5bGUiLCJwcmVzZXQiLCJhZGp1c3RlZFkiLCJ2aWRlb1dpZHRoIiwiZHJvcFNoYWRvdyIsInNoYWRvd0VuYWJsZWQiLCJwYWRkaW5nWCIsImJhY2tncm91bmRQYWRkaW5nWCIsInBhZGRpbmdZIiwiYmFja2dyb3VuZFBhZGRpbmdZIiwiZm9udFdlaWdodCIsImZvbnRDb2xvciIsInRleHRUcmFuc2Zvcm0iLCJ0ZXh0Q2FzZSIsImZvbnRTdHlsZSIsImlzSXRhbGljIiwidGV4dEFsaWduIiwibGV0dGVyU3BhY2luZyIsInRleHRTcGFjaW5nIiwidHJhbnNmb3JtT3JpZ2luIiwibWF4V2lkdGgiLCJmaWx0ZXIiLCJhbXBsaWZ5T3BhY2l0eVRyYW5zaXRpb25EdXJhdGlvbiIsIkZPTlRfTUFQIiwic3JjIiwid2VpZ2h0IiwibG9hZERvY3VtZW50Rm9udHMiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZTIiLCJjbGVhbkZvbnRGYW1pbHkiLCJmb250VmFyaWF0aW9ucyIsImxvYWRQcm9taXNlcyIsIndyYXAiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJwcmV2IiwibmV4dCIsImFicnVwdCIsIndhcm4iLCJfY2FsbGVlIiwibG9hZGVkRm9udCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJGb250RmFjZSIsImxvYWQiLCJzZW50IiwiZm9udHMiLCJhZGQiLCJzdG9wIiwiX3gyIiwiYXBwbHkiLCJQcm9taXNlIiwiYWxsIiwidDAiLCJlcnJvciIsIl94IiwiYWRkUGl4ZWxVbml0IiwidmFsdWUiLCJlbmRzV2l0aCIsIlN1YnRpdGxlc0NvbXBvc2l0aW9uIiwiX2EiLCJzdHlsZUNvbmZpZyIsImN1cnJlbnRGcmFtZSIsImN1cnJlbnRUaW1lIiwidXNlRWZmZWN0IiwiY3VycmVudFBocmFzZXMiLCJfanN4IiwiX19hc3NpZ24iLCJjaGlsZHJlbiIsInByb3BzIiwiU3VidGl0bGVzIiwiZGV2TW9kZSIsIlBsYXllciIsImNvbXBvbmVudCIsImlucHV0UHJvcHMiLCJkdXJhdGlvbkluRnJhbWVzIiwiY29tcG9zaXRpb25XaWR0aCIsImNvbXBvc2l0aW9uSGVpZ2h0IiwiY29udHJvbHMiLCJhdXRvUGxheSIsImxvb3AiLCJ1c2VTdHlsZUNvbmZpZyIsInN1YnRpdGxlU3R5bGUiLCJ0ZXh0U3R5bGUiLCJuYW1lIiwiY2FwdGlvblBvc2l0aW9uIiwidXNlQWRqdXN0ZWRQb3NpdGlvbiIsImZhY2VEYXRhIiwidXNlQ3VycmVudEZyYW1lIiwiY3VycmVudEZhY2VFdmVudCIsIl9mYWNlRGF0YSRldmVudHMiLCJldmVudHMiLCJudW1QZW9wbGUiLCJmaW5kTGFzdCIsImV2ZW50IiwidXNlQWRqdXN0ZWRQaHJhc2VzIiwic3VidGl0bGVzRGF0YSIsIm1heENoYXJzUGVyTGluZSIsInNlZ21lbnREYXRhIiwiZ2V0TWlzc2luZ1dvcmRQaHJhc2VzSWZFeGlzdCIsInN0YXJ0VGltZSIsImVuZFRpbWUiLCJnYXBXb3JkcyIsImdhcFBocmFzZXMiLCJjdXJyZW50UGhyYXNlIiwic2VnbWVudEluZGV4IiwiZm9yRWFjaCIsIndvcmRJbmRleCIsIndvcmRXaXRoU3BhY2UiLCJuZXdMZW5ndGgiLCJwcm9jZXNzZWRHYXBQaHJhc2VzIiwicGhyYXNlSW5kZXgiLCJlbmRGcmFtZSIsIm5leHRQaHJhc2UiLCJ0aW1lRGlmZiIsIm1hc3RlclBocmFzZXMiLCJmaXJzdFNlZ21lbnRTdGFydCIsImZpcnN0V29yZFN0YXJ0IiwicHJlU2VnbWVudFBocmFzZXMiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJzZWdtZW50Iiwic2VnbWVudFdvcmRzIiwic2VnbWVudElkIiwiY3VycmVudFNlZ21lbnRQaHJhc2VzIiwicHJvY2Vzc2VkUGhyYXNlcyIsIm1pbiIsInByb2Nlc3NlZFBocmFzZSIsIm5leHRTZWdtZW50Iiwic29ydCIsImEiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFlQTtBQUNPLElBQUksUUFBUSxHQUFHLFdBQVc7QUFDakMsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxTQUFTLFFBQVEsQ0FBQyxDQUFDLEVBQUU7QUFDckQsUUFBUSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM3RCxZQUFZLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0IsWUFBWSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6RixTQUFTO0FBQ1QsUUFBUSxPQUFPLENBQUMsQ0FBQztBQUNqQixNQUFLO0FBQ0wsSUFBSSxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzNDLEVBQUM7QUErUkQ7QUFDdUIsT0FBTyxlQUFlLEtBQUssVUFBVSxHQUFHLGVBQWUsR0FBRyxVQUFVLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFO0FBQ3ZILElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDL0IsSUFBSSxPQUFPLENBQUMsQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFVBQVUsR0FBRyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0FBQ3JGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN4VUE7QUFDQSxJQUFNQSxpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQWlCQSxDQUFJQyxJQUFJLEVBQUVDLFFBQVEsRUFBRUMsVUFBVSxFQUFLO0FBQ3hELEVBQUEsSUFBTUMsTUFBTSxHQUFHQyxRQUFRLENBQUNDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtBQUMvQyxFQUFBLElBQU1DLE9BQU8sR0FBR0gsTUFBTSxDQUFDSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7RUFDdkNELE9BQU8sQ0FBQ0UsSUFBSSxHQUFBLEVBQUEsQ0FBQUMsTUFBQSxDQUFNUixRQUFRLEVBQUFRLEtBQUFBLENBQUFBLENBQUFBLE1BQUEsQ0FBTVAsVUFBVSxDQUFFLENBQUE7QUFDNUMsRUFBQSxPQUFPSSxPQUFPLENBQUNJLFdBQVcsQ0FBQ1YsSUFBSSxDQUFDLENBQUNXLEtBQUssQ0FBQTtBQUN4QyxDQUFDLENBQUE7O0FBRUQ7QUFDQSxJQUFNQyxxQkFBcUIsR0FBSSxZQUFNO0FBQ25DLEVBQUEsSUFBTUMsS0FBSyxHQUFHLElBQUlDLEdBQUcsRUFBRSxDQUFBO0FBRXZCLEVBQUEsT0FBTyxVQUFDQyxLQUFLLEVBQUVKLEtBQUssRUFBNkI7QUFBQSxJQUFBLElBQTNCSyxZQUFZLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxHQUFBLENBQUEsSUFBQUQsU0FBQSxDQUFBLENBQUEsQ0FBQSxLQUFBRSxTQUFBLEdBQUFGLFNBQUEsQ0FBQSxDQUFBLENBQUEsR0FBRyxPQUFPLENBQUE7QUFDMUMsSUFBQSxJQUFNRyxHQUFHLEdBQUEsRUFBQSxDQUFBWCxNQUFBLENBQU1NLEtBQUssRUFBQSxHQUFBLENBQUEsQ0FBQU4sTUFBQSxDQUFJRSxLQUFLLEVBQUEsR0FBQSxDQUFBLENBQUFGLE1BQUEsQ0FBSU8sWUFBWSxDQUFFLENBQUE7QUFDL0MsSUFBQSxJQUFJSCxLQUFLLENBQUNRLEdBQUcsQ0FBQ0QsR0FBRyxDQUFDLEVBQUU7QUFDbEIsTUFBQSxPQUFPUCxLQUFLLENBQUNTLEdBQUcsQ0FBQ0YsR0FBRyxDQUFDLENBQUE7QUFDdkIsS0FBQTtJQUVBLElBQU1HLE9BQU8sR0FBRyxFQUFFLENBQUE7QUFDbEIsSUFBQSxJQUFNQyxXQUFXLEdBQUdDLFFBQVEsQ0FBQ2QsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBRXZDLElBQUlLLFlBQVksS0FBSyxTQUFTLEVBQUU7QUFDOUI7QUFDQTtBQUNBTyxNQUFBQSxPQUFPLENBQUNHLElBQUksQ0FBQWpCLEtBQUFBLENBQUFBLE1BQUEsQ0FBT2UsV0FBVyxFQUFBZixPQUFBQSxDQUFBQSxDQUFBQSxNQUFBLENBQVFNLEtBQUssQ0FBRSxDQUFDLENBQUM7QUFDL0NRLE1BQUFBLE9BQU8sQ0FBQ0csSUFBSSxDQUFBakIsRUFBQUEsQ0FBQUEsTUFBQSxDQUFJZSxXQUFXLEVBQUFmLFNBQUFBLENBQUFBLENBQUFBLE1BQUEsQ0FBVU0sS0FBSyxDQUFFLENBQUMsQ0FBQztBQUM5Q1EsTUFBQUEsT0FBTyxDQUFDRyxJQUFJLENBQUFqQixJQUFBQSxDQUFBQSxNQUFBLENBQU1lLFdBQVcsRUFBQWYsT0FBQUEsQ0FBQUEsQ0FBQUEsTUFBQSxDQUFRTSxLQUFLLENBQUUsQ0FBQyxDQUFDO0FBQzlDUSxNQUFBQSxPQUFPLENBQUNHLElBQUksQ0FBQWpCLEdBQUFBLENBQUFBLE1BQUEsQ0FBS2UsV0FBVyxFQUFBZixTQUFBQSxDQUFBQSxDQUFBQSxNQUFBLENBQVVNLEtBQUssQ0FBRSxDQUFDLENBQUM7O0FBRS9DO0FBQ0FRLE1BQUFBLE9BQU8sQ0FBQ0csSUFBSSxDQUFBLEVBQUEsQ0FBQWpCLE1BQUEsQ0FBSWUsV0FBVyxFQUFBZixNQUFBQSxDQUFBQSxDQUFBQSxNQUFBLENBQU9lLFdBQVcsV0FBQWYsTUFBQSxDQUFRTSxLQUFLLENBQUUsQ0FBQyxDQUFDO0FBQzlEUSxNQUFBQSxPQUFPLENBQUNHLElBQUksQ0FBQSxFQUFBLENBQUFqQixNQUFBLENBQUllLFdBQVcsRUFBQWYsS0FBQUEsQ0FBQUEsQ0FBQUEsTUFBQSxDQUFNZSxXQUFXLFdBQUFmLE1BQUEsQ0FBUU0sS0FBSyxDQUFFLENBQUMsQ0FBQztBQUM3RFEsTUFBQUEsT0FBTyxDQUFDRyxJQUFJLENBQUEsR0FBQSxDQUFBakIsTUFBQSxDQUFLZSxXQUFXLEVBQUFmLEtBQUFBLENBQUFBLENBQUFBLE1BQUEsQ0FBTWUsV0FBVyxXQUFBZixNQUFBLENBQVFNLEtBQUssQ0FBRSxDQUFDLENBQUM7QUFDOURRLE1BQUFBLE9BQU8sQ0FBQ0csSUFBSSxDQUFBLEdBQUEsQ0FBQWpCLE1BQUEsQ0FBS2UsV0FBVyxFQUFBZixNQUFBQSxDQUFBQSxDQUFBQSxNQUFBLENBQU9lLFdBQVcsV0FBQWYsTUFBQSxDQUFRTSxLQUFLLENBQUUsQ0FBQyxDQUFDOztBQUUvRDtNQUNBLElBQU1ZLFNBQVMsR0FBR0MsSUFBSSxDQUFDQyxLQUFLLENBQUNMLFdBQVcsR0FBRyxNQUFNLENBQUMsQ0FBQztBQUNuREQsTUFBQUEsT0FBTyxDQUFDRyxJQUFJLENBQUEsRUFBQSxDQUFBakIsTUFBQSxDQUFJa0IsU0FBUyxFQUFBbEIsTUFBQUEsQ0FBQUEsQ0FBQUEsTUFBQSxDQUFPZSxXQUFXLFdBQUFmLE1BQUEsQ0FBUU0sS0FBSyxDQUFFLENBQUMsQ0FBQztBQUM1RFEsTUFBQUEsT0FBTyxDQUFDRyxJQUFJLENBQUEsRUFBQSxDQUFBakIsTUFBQSxDQUFJZSxXQUFXLEVBQUFmLE1BQUFBLENBQUFBLENBQUFBLE1BQUEsQ0FBT2tCLFNBQVMsV0FBQWxCLE1BQUEsQ0FBUU0sS0FBSyxDQUFFLENBQUMsQ0FBQztBQUM1RFEsTUFBQUEsT0FBTyxDQUFDRyxJQUFJLENBQUEsRUFBQSxDQUFBakIsTUFBQSxDQUFJZSxXQUFXLEVBQUFmLEtBQUFBLENBQUFBLENBQUFBLE1BQUEsQ0FBTWtCLFNBQVMsV0FBQWxCLE1BQUEsQ0FBUU0sS0FBSyxDQUFFLENBQUMsQ0FBQztBQUMzRFEsTUFBQUEsT0FBTyxDQUFDRyxJQUFJLENBQUEsRUFBQSxDQUFBakIsTUFBQSxDQUFJa0IsU0FBUyxFQUFBbEIsS0FBQUEsQ0FBQUEsQ0FBQUEsTUFBQSxDQUFNZSxXQUFXLFdBQUFmLE1BQUEsQ0FBUU0sS0FBSyxDQUFFLENBQUMsQ0FBQztBQUMzRFEsTUFBQUEsT0FBTyxDQUFDRyxJQUFJLENBQUEsR0FBQSxDQUFBakIsTUFBQSxDQUFLa0IsU0FBUyxFQUFBbEIsS0FBQUEsQ0FBQUEsQ0FBQUEsTUFBQSxDQUFNZSxXQUFXLFdBQUFmLE1BQUEsQ0FBUU0sS0FBSyxDQUFFLENBQUMsQ0FBQztBQUM1RFEsTUFBQUEsT0FBTyxDQUFDRyxJQUFJLENBQUEsR0FBQSxDQUFBakIsTUFBQSxDQUFLZSxXQUFXLEVBQUFmLEtBQUFBLENBQUFBLENBQUFBLE1BQUEsQ0FBTWtCLFNBQVMsV0FBQWxCLE1BQUEsQ0FBUU0sS0FBSyxDQUFFLENBQUMsQ0FBQztBQUM1RFEsTUFBQUEsT0FBTyxDQUFDRyxJQUFJLENBQUEsR0FBQSxDQUFBakIsTUFBQSxDQUFLZSxXQUFXLEVBQUFmLE1BQUFBLENBQUFBLENBQUFBLE1BQUEsQ0FBT2tCLFNBQVMsV0FBQWxCLE1BQUEsQ0FBUU0sS0FBSyxDQUFFLENBQUMsQ0FBQztBQUM3RFEsTUFBQUEsT0FBTyxDQUFDRyxJQUFJLENBQUEsR0FBQSxDQUFBakIsTUFBQSxDQUFLa0IsU0FBUyxFQUFBbEIsTUFBQUEsQ0FBQUEsQ0FBQUEsTUFBQSxDQUFPZSxXQUFXLFdBQUFmLE1BQUEsQ0FBUU0sS0FBSyxDQUFFLENBQUMsQ0FBQztBQUMvRCxLQUFDLE1BQU07QUFDTDtBQUNBLE1BQUEsS0FBSyxJQUFJZSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUcsR0FBRyxFQUFFQSxDQUFDLElBQUksSUFBSSxFQUFFO1FBQ2xDLElBQU1DLEtBQUssR0FBSUQsQ0FBQyxHQUFHRixJQUFJLENBQUNJLEVBQUUsR0FBSSxHQUFHLENBQUE7QUFDakMsUUFBQSxJQUFNQyxDQUFDLEdBQUdMLElBQUksQ0FBQ0MsS0FBSyxDQUFDRCxJQUFJLENBQUNNLEdBQUcsQ0FBQ0gsS0FBSyxDQUFDLEdBQUdQLFdBQVcsQ0FBQyxDQUFBO0FBQ25ELFFBQUEsSUFBTVcsQ0FBQyxHQUFHUCxJQUFJLENBQUNDLEtBQUssQ0FBQ0QsSUFBSSxDQUFDUSxHQUFHLENBQUNMLEtBQUssQ0FBQyxHQUFHUCxXQUFXLENBQUMsQ0FBQTtBQUNuREQsUUFBQUEsT0FBTyxDQUFDRyxJQUFJLENBQUFqQixFQUFBQSxDQUFBQSxNQUFBLENBQUl3QixDQUFDLEVBQUEsS0FBQSxDQUFBLENBQUF4QixNQUFBLENBQU0wQixDQUFDLEVBQUExQixPQUFBQSxDQUFBQSxDQUFBQSxNQUFBLENBQVFNLEtBQUssQ0FBRSxDQUFDLENBQUE7QUFDMUMsT0FBQTtBQUNGLEtBQUE7QUFFQSxJQUFBLElBQU1zQixNQUFNLEdBQUdkLE9BQU8sQ0FBQ2UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQ2hDekIsSUFBQUEsS0FBSyxDQUFDMEIsR0FBRyxDQUFDbkIsR0FBRyxFQUFFaUIsTUFBTSxDQUFDLENBQUE7QUFDdEIsSUFBQSxPQUFPQSxNQUFNLENBQUE7R0FDZCxDQUFBO0FBQ0gsQ0FBQyxFQUFHLENBQUE7SUFHU0csWUFBWSxnQkFBR0MsSUFBSSxDQUFDLFVBQUFDLElBQUEsRUFVM0I7QUFBQSxFQUFBLElBVEoxQyxJQUFJLEdBQUEwQyxJQUFBLENBQUoxQyxJQUFJO0lBQ0oyQyxLQUFLLEdBQUFELElBQUEsQ0FBTEMsS0FBSztJQUNMQyxjQUFjLEdBQUFGLElBQUEsQ0FBZEUsY0FBYztJQUNkQyxLQUFLLEdBQUFILElBQUEsQ0FBTEcsS0FBSztJQUNMQyxVQUFVLEdBQUFKLElBQUEsQ0FBVkksVUFBVTtJQUNWQyxZQUFZLEdBQUFMLElBQUEsQ0FBWkssWUFBWTtJQUNaQyxLQUFLLEdBQUFOLElBQUEsQ0FBTE0sS0FBSztJQUNMQyxHQUFHLEdBQUFQLElBQUEsQ0FBSE8sR0FBRztJQUNIQyxtQkFBbUIsR0FBQVIsSUFBQSxDQUFuQlEsbUJBQW1CLENBQUE7QUFFbkIsRUFBQSxJQUFNQyxhQUFhLEdBQUdOLEtBQUssR0FBR0MsVUFBVSxDQUFBO0FBRXhDLEVBQUEsSUFBTU0sS0FBSyxHQUFHQyxPQUFPLENBQUMsWUFBTTtJQUMxQixJQUFJVCxjQUFjLEtBQUssd0JBQXdCLEVBQUU7QUFDL0MsTUFBQSxPQUFPVSxNQUFNLENBQUM7QUFDWlQsUUFBQUEsS0FBSyxFQUFFTSxhQUFhO0FBQ3BCSSxRQUFBQSxJQUFJLEVBQUUsSUFBSTtBQUNWQyxRQUFBQSxFQUFFLEVBQUUsR0FBRztBQUNQUCxRQUFBQSxHQUFHLEVBQUUsRUFBRTtBQUNQUSxRQUFBQSxNQUFNLEVBQUU7QUFDTkMsVUFBQUEsT0FBTyxFQUFFLEVBQUU7QUFDWEMsVUFBQUEsU0FBUyxFQUFFLEdBQUE7QUFDYixTQUFBO0FBQ0YsT0FBQyxDQUFDLENBQUE7QUFDSixLQUFBO0lBRUEsSUFBSWYsY0FBYyxLQUFLLFFBQVEsRUFBRTtNQUMvQixJQUFNZ0IsV0FBVyxHQUFHTixNQUFNLENBQUM7QUFDekJULFFBQUFBLEtBQUssRUFBRU0sYUFBYTtBQUNwQkksUUFBQUEsSUFBSSxFQUFFLEdBQUc7QUFDVEMsUUFBQUEsRUFBRSxFQUFFLENBQUM7QUFDTFAsUUFBQUEsR0FBRyxFQUFIQSxHQUFHO0FBQ0hRLFFBQUFBLE1BQU0sRUFBRTtBQUNOSSxVQUFBQSxJQUFJLEVBQUUsR0FBRztBQUNURixVQUFBQSxTQUFTLEVBQUUsR0FBRztBQUNkRCxVQUFBQSxPQUFPLEVBQUUsRUFBQTtBQUNYLFNBQUE7QUFDRixPQUFDLENBQUMsQ0FBQTtBQUNGLE1BQUEsT0FBT0UsV0FBVyxDQUFBO0FBQ3BCLEtBQUE7QUFFQSxJQUFBLE9BQU8sQ0FBQyxDQUFBO0dBQ1QsRUFBRSxDQUFDaEIsY0FBYyxFQUFFTyxhQUFhLEVBQUVGLEdBQUcsQ0FBQyxDQUFDLENBQUE7QUFFeEMsRUFBQSxJQUFNYSxVQUFVLEdBQUdULE9BQU8sQ0FBQyxZQUFNO0lBQy9CLElBQUlULGNBQWMsS0FBSyxRQUFRLEVBQUU7TUFDL0IsSUFBTW1CLGNBQWMsR0FBR1QsTUFBTSxDQUFDO0FBQzVCVCxRQUFBQSxLQUFLLEVBQUVNLGFBQWE7QUFDcEJJLFFBQUFBLElBQUksRUFBRSxFQUFFO0FBQ1JDLFFBQUFBLEVBQUUsRUFBRSxDQUFDO0FBQ0xQLFFBQUFBLEdBQUcsRUFBSEEsR0FBRztBQUNIUSxRQUFBQSxNQUFNLEVBQUU7QUFDTkksVUFBQUEsSUFBSSxFQUFFLEdBQUc7QUFDVEYsVUFBQUEsU0FBUyxFQUFFLEdBQUc7QUFDZEQsVUFBQUEsT0FBTyxFQUFFLEVBQUE7QUFDWCxTQUFBO0FBQ0YsT0FBQyxDQUFDLENBQUE7QUFDRixNQUFBLE9BQU9LLGNBQWMsQ0FBQTtBQUN2QixLQUFBO0FBQ0EsSUFBQSxPQUFPLENBQUMsQ0FBQTtHQUNULEVBQUUsQ0FBQ25CLGNBQWMsRUFBRU8sYUFBYSxFQUFFRixHQUFHLENBQUMsQ0FBQyxDQUFBOztBQUd4QztBQUNBLEVBQUEsSUFBTWUsZ0JBQWdCLEdBQUdYLE9BQU8sQ0FBQyxZQUFNO0lBQ3JDLElBQU1ZLFlBQVksR0FBR3RCLEtBQUssQ0FBQ3NCLFlBQVksSUFBSSxJQUFJLENBQUM7SUFDaEQsSUFBTUMsWUFBWSxHQUFHdkIsS0FBSyxDQUFDMUMsUUFBUSxJQUFHLEVBQUUsQ0FBQztBQUN6QyxJQUFBLElBQU1DLFVBQVUsR0FBR3lDLEtBQUssQ0FBQ3pDLFVBQVUsSUFBSSxPQUFPLENBQUE7SUFFOUMsSUFBTWlFLFNBQVMsR0FBR3BFLGlCQUFpQixDQUFDQyxJQUFJLEVBQUVrRSxZQUFZLEVBQUVoRSxVQUFVLENBQUMsQ0FBQTtJQUNuRSxJQUFJaUUsU0FBUyxHQUFHRixZQUFZLEVBQUU7QUFDNUIsTUFBQSxJQUFNRyxXQUFXLEdBQUdILFlBQVksR0FBR0UsU0FBUyxDQUFBO0FBQzVDLE1BQUEsT0FBT3ZDLElBQUksQ0FBQ3lDLEtBQUssQ0FBQ0gsWUFBWSxHQUFHRSxXQUFXLENBQUMsQ0FBQTtBQUMvQyxLQUFBO0FBQ0EsSUFBQSxPQUFPRixZQUFZLENBQUE7QUFDckIsR0FBQyxFQUFFLENBQUNsRSxJQUFJLEVBQUUyQyxLQUFLLENBQUNzQixZQUFZLEVBQUV0QixLQUFLLENBQUMxQyxRQUFRLEVBQUUwQyxLQUFLLENBQUN6QyxVQUFVLENBQUMsQ0FBQyxDQUFBOztBQUVoRTtBQUNBLEVBQUEsSUFBTW9FLGFBQWEsR0FBR2pCLE9BQU8sQ0FBQyxZQUFNO0FBQ2xDLElBQUEsSUFBTWtCLFdBQVcsR0FBRzVCLEtBQUssQ0FBQzZCLGlCQUFpQixJQUFJLElBQUksQ0FBQTs7QUFFbkQ7QUFDQSxJQUFBLElBQU1DLGVBQWUsR0FBRzlCLEtBQUssQ0FBQzhCLGVBQWUsSUFBSSxDQUFDLENBQUE7QUFDbEQsSUFBQSxJQUFNQyxXQUFXLEdBQUcvQixLQUFLLENBQUMrQixXQUFXLElBQUksU0FBUyxDQUFBO0FBQ2xELElBQUEsSUFBTUMsVUFBVSxHQUFHaEMsS0FBSyxDQUFDZ0MsVUFBVSxJQUFJLEdBQUcsQ0FBQTtBQUMxQyxJQUFBLElBQU1DLGFBQWEsR0FBR2pDLEtBQUssQ0FBQ2lDLGFBQWEsSUFBSSxHQUFHLENBQUE7QUFDaEQsSUFBQSxJQUFNQyxhQUFhLEdBQUdsQyxLQUFLLENBQUNrQyxhQUFhLElBQUksR0FBRyxDQUFBOztBQUVoRDtJQUNBLElBQU10RCxPQUFPLEdBQUcsRUFBRSxDQUFBO0lBQ2xCLEtBQUssSUFBSU8sQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHMkMsZUFBZSxFQUFFM0MsQ0FBQyxFQUFFLEVBQUU7QUFDeENQLE1BQUFBLE9BQU8sQ0FBQ0csSUFBSSxDQUFBLEVBQUEsQ0FBQWpCLE1BQUEsQ0FBSW1FLGFBQWEsU0FBQW5FLE1BQUEsQ0FBTW9FLGFBQWEsRUFBQXBFLEtBQUFBLENBQUFBLENBQUFBLE1BQUEsQ0FBTWtFLFVBQVUsRUFBQSxLQUFBLENBQUEsQ0FBQWxFLE1BQUEsQ0FBTWlFLFdBQVcsQ0FBRSxDQUFDLENBQUE7QUFDdEYsS0FBQTtBQUNBLElBQUEsSUFBTUksVUFBVSxHQUFHdkQsT0FBTyxDQUFDZSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7O0FBRXJDO0lBQ0EsSUFBTXlDLFNBQVMsR0FBRyxTQUFaQSxTQUFTQSxDQUFJQyxHQUFHLEVBQUVDLE9BQU8sRUFBSztNQUNsQyxJQUFNQyxjQUFjLEdBQUcsa0NBQWtDLENBQUE7QUFDekRGLE1BQUFBLEdBQUcsR0FBR0EsR0FBRyxDQUFDRyxPQUFPLENBQUNELGNBQWMsRUFBRSxVQUFDRSxDQUFDLEVBQUVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUE7UUFBQSxPQUFLRixDQUFDLEdBQUdBLENBQUMsR0FBR0MsQ0FBQyxHQUFHQSxDQUFDLEdBQUdDLENBQUMsR0FBR0EsQ0FBQyxDQUFBO09BQUMsQ0FBQSxDQUFBO0FBQ3hFLE1BQUEsSUFBTWxELE1BQU0sR0FBRywyQ0FBMkMsQ0FBQ21ELElBQUksQ0FBQ1IsR0FBRyxDQUFDLENBQUE7QUFDcEUsTUFBQSxJQUFJLENBQUMzQyxNQUFNLEVBQUUsT0FBTzJDLEdBQUcsQ0FBQTtNQUN2QixJQUFNSyxDQUFDLEdBQUc1RCxRQUFRLENBQUNZLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtNQUNqQyxJQUFNaUQsQ0FBQyxHQUFHN0QsUUFBUSxDQUFDWSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7TUFDakMsSUFBTWtELENBQUMsR0FBRzlELFFBQVEsQ0FBQ1ksTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0FBQ2pDLE1BQUEsT0FBQSxPQUFBLENBQUE1QixNQUFBLENBQWU0RSxDQUFDLEVBQUEsSUFBQSxDQUFBLENBQUE1RSxNQUFBLENBQUs2RSxDQUFDLEVBQUE3RSxJQUFBQSxDQUFBQSxDQUFBQSxNQUFBLENBQUs4RSxDQUFDLEVBQUE5RSxJQUFBQSxDQUFBQSxDQUFBQSxNQUFBLENBQUt3RSxPQUFPLEVBQUEsR0FBQSxDQUFBLENBQUE7S0FDekMsQ0FBQTtBQUVELElBQUEsSUFBTVEsZUFBZSxHQUFHOUMsS0FBSyxDQUFDOEMsZUFBZSxJQUFJLFNBQVMsQ0FBQTtJQUMxRCxJQUFNUixPQUFPLEdBQUcsT0FBT3RDLEtBQUssQ0FBQytDLGlCQUFpQixLQUFLLFFBQVEsR0FDdkRDLFVBQVUsQ0FBQ2hELEtBQUssQ0FBQytDLGlCQUFpQixDQUFDRSxJQUFJLEVBQUUsQ0FBQyxHQUMxQ0QsVUFBVSxDQUFDaEQsS0FBSyxDQUFDK0MsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUE7QUFFNUMsSUFBQSxJQUFNRyxVQUFVLEdBQUdkLFNBQVMsQ0FBQ1UsZUFBZSxFQUFFUixPQUFPLENBQUMsQ0FBQTtBQUN0RCxJQUFBLElBQU1hLGFBQWEsR0FBR2IsT0FBTyxHQUFHLENBQUMsQ0FBQTtBQUNqQyxJQUFBLElBQU1jLFNBQVMsR0FBR3RCLGVBQWUsR0FBRyxDQUFDLEtBQUtFLFVBQVUsS0FBSyxHQUFHLElBQUlDLGFBQWEsS0FBSyxHQUFHLElBQUlDLGFBQWEsS0FBSyxHQUFHLENBQUMsQ0FBQTs7QUFFL0c7QUFDQSxJQUFBLElBQU1tQixZQUFZLEdBQUdyRCxLQUFLLENBQUNzRCxzQkFBc0IsTUFBQXhGLE1BQUEsQ0FDMUNnQixRQUFRLENBQUNrQixLQUFLLENBQUNzRCxzQkFBc0IsRUFBRSxFQUFFLENBQUMsVUFDN0MsS0FBSyxDQUFBOztBQUVUO0FBQ0EsSUFBQSxJQUFNQyxTQUFTLEdBQUd2RCxLQUFLLENBQUN3RCxtQkFBbUIsS0FBSyxNQUFNLENBQUE7QUFDdEQsSUFBQSxJQUFNQyxZQUFZLEdBQUczRSxRQUFRLENBQUM4QyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUE7O0FBRTlDO0FBQ0EsSUFBQSxJQUFNOEIsT0FBTyxHQUFHSCxTQUFTLEdBQUEsRUFBQSxDQUFBekYsTUFBQSxDQUNsQjJGLFlBQVksRUFBQSxLQUFBLENBQUEsQ0FBQTNGLE1BQUEsQ0FBTW1CLElBQUksQ0FBQ0MsS0FBSyxDQUFDdUUsWUFBWSxHQUFHLEdBQUcsQ0FBQyxFQUFBM0YsSUFBQUEsQ0FBQUEsR0FBQUEsRUFBQUEsQ0FBQUEsTUFBQSxDQUNoRDJGLFlBQVksRUFBQTNGLEtBQUFBLENBQUFBLENBQUFBLE1BQUEsQ0FBTTJGLFlBQVksR0FBRyxDQUFDLEVBQUksSUFBQSxDQUFBLENBQUE7SUFFN0MsSUFBTXpGLEtBQUssR0FBR3VGLFNBQVMsR0FBRyxNQUFNLEdBQUd2RCxLQUFLLENBQUNoQyxLQUFLLENBQUE7SUFDOUMsSUFBTTJGLE9BQU8sR0FBR0osU0FBUyxHQUFHLGNBQWMsR0FBR3ZELEtBQUssQ0FBQzJELE9BQU8sSUFBSSxPQUFPLENBQUE7QUFFckUsSUFBQSxJQUFNQyxTQUFTLEdBQUFDLGNBQUEsQ0FBQUEsY0FBQSxDQUFBO0FBQ2JILE1BQUFBLE9BQU8sRUFBUEEsT0FBTztBQUNQUixNQUFBQSxVQUFVLEVBQVZBLFVBQVU7QUFDVkcsTUFBQUEsWUFBWSxFQUFaQSxZQUFZO0FBQ1pyRixNQUFBQSxLQUFLLEVBQUxBLEtBQUs7QUFDTDJGLE1BQUFBLE9BQU8sRUFBUEEsT0FBTztBQUNQRyxNQUFBQSxRQUFRLEVBQUUsUUFBQTtBQUFRLEtBQUEsRUFDZjlELEtBQUssQ0FBQSxFQUFBLEVBQUEsRUFBQTtBQUNSO0FBQ0FtQyxNQUFBQSxVQUFVLEVBQUUsTUFBTTtBQUNsQjRCLE1BQUFBLFNBQVMsRUFBRVosYUFBYSxJQUFJQyxTQUFTLEdBQUdqQixVQUFVLEdBQUcsTUFBTTtBQUMzRDZCLE1BQUFBLFNBQVMsRUFBRS9ELGNBQWMsS0FBSyxRQUFRLEdBQUFuQyxFQUFBQSxDQUFBQSxNQUFBLENBQy9Ca0MsS0FBSyxDQUFDZ0UsU0FBUyxHQUFBbEcsRUFBQUEsQ0FBQUEsTUFBQSxDQUFNa0MsS0FBSyxDQUFDZ0UsU0FBUyxFQUFBLEdBQUEsQ0FBQSxHQUFNLEVBQUUsRUFBQSxpQkFBQSxDQUFBLENBQUFsRyxNQUFBLENBQWtCcUQsVUFBVSxFQUFBckQsZUFBQUEsQ0FBQUEsQ0FBQUEsTUFBQSxDQUFnQjJDLEtBQUssRUFDaEdULEdBQUFBLENBQUFBLEdBQUFBLEtBQUssQ0FBQ2dFLFNBQVMsSUFBSSxNQUFNO01BQzdCMUcsUUFBUSxFQUFFLE9BQU8wQyxLQUFLLENBQUMxQyxRQUFRLEtBQUssUUFBUSxHQUFHK0QsZ0JBQWdCLEdBQUdBLGdCQUFBQTtLQUNuRSxDQUFBLENBQUE7QUFFRCxJQUFBLE9BQU91QyxTQUFTLENBQUE7QUFDbEIsR0FBQyxFQUFFLENBQUM1RCxLQUFLLEVBQUVTLEtBQUssRUFBRVUsVUFBVSxFQUFFRSxnQkFBZ0IsRUFBRXBCLGNBQWMsQ0FBQyxDQUFDLENBQUE7RUFFaEUsSUFBTWdFLFlBQVksR0FBR3ZELE9BQU8sQ0FBQyxZQUFBO0lBQUEsT0FBTztBQUNsQ3dELE1BQUFBLFFBQVEsRUFBRSxVQUFVO01BQ3BCRixTQUFTLEVBQUEsU0FBQSxDQUFBbEcsTUFBQSxDQUFZa0MsS0FBSyxDQUFDbUUsZUFBZSxJQUFJLENBQUMsRUFBRyxHQUFBLENBQUE7QUFDbERDLE1BQUFBLFVBQVUsRUFBRSxRQUFRO0FBQ3BCVCxNQUFBQSxPQUFPLEVBQUUsTUFBTTtBQUNmVSxNQUFBQSxVQUFVLEVBQUUsUUFBUTtBQUNwQnJHLE1BQUFBLEtBQUssRUFBRSxhQUFhO0FBQ3BCc0csTUFBQUEsVUFBVSxFQUFFLFdBQUE7S0FDYixDQUFBO0FBQUEsR0FBQyxFQUFFLENBQUN0RSxLQUFLLENBQUNtRSxlQUFlLENBQUMsQ0FBQyxDQUFBO0VBRTVCLElBQU05RixZQUFZLEdBQUdxQyxPQUFPLENBQUMsWUFBQTtJQUFBLE9BQU87QUFDbEN3RCxNQUFBQSxRQUFRLEVBQUUsVUFBVTtBQUNwQkssTUFBQUEsSUFBSSxFQUFFLENBQUM7QUFDUEMsTUFBQUEsR0FBRyxFQUFFLENBQUM7QUFDTkMsTUFBQUEsS0FBSyxFQUFFLENBQUM7QUFDUkMsTUFBQUEsTUFBTSxFQUFFLENBQUM7TUFDVHRHLEtBQUssRUFBRTRCLEtBQUssQ0FBQzJFLFlBQVk7QUFDekJ4QyxNQUFBQSxVQUFVLEVBQUVsRSxxQkFBcUIsQ0FBQytCLEtBQUssQ0FBQzJFLFlBQVksRUFBRTNFLEtBQUssQ0FBQzRFLFlBQVksRUFBRTVFLEtBQUssQ0FBQzNCLFlBQVksQ0FBQztBQUM3RndHLE1BQUFBLG1CQUFtQixFQUFFLGFBQWE7QUFDbENDLE1BQUFBLE1BQU0sRUFBRSxDQUFBO0tBQ1QsQ0FBQTtBQUFBLEdBQUMsRUFBRSxDQUFDOUUsS0FBSyxDQUFDMkUsWUFBWSxFQUFFM0UsS0FBSyxDQUFDNEUsWUFBWSxFQUFFNUUsS0FBSyxDQUFDM0IsWUFBWSxDQUFDLENBQUMsQ0FBQTtFQUVqRSxJQUFNMEcsYUFBYSxHQUFHckUsT0FBTyxDQUFDLFlBQUE7SUFBQSxPQUFPO0FBQ25Dd0QsTUFBQUEsUUFBUSxFQUFFLFVBQVU7QUFDcEJZLE1BQUFBLE1BQU0sRUFBRSxDQUFDO0FBQ1RFLE1BQUFBLGdCQUFnQixFQUFFLE9BQU87TUFDekI1RyxLQUFLLEVBQUU0QixLQUFLLENBQUM1QixLQUFBQTtLQUNkLENBQUE7QUFBQSxHQUFDLEVBQUUsQ0FBQzRCLEtBQUssQ0FBQzVCLEtBQUssQ0FBQyxDQUFDLENBQUE7O0FBRWxCO0VBQ0EsSUFBTTZHLFNBQVMsR0FBR3ZFLE9BQU8sQ0FBQyxZQUFBO0FBQUEsSUFBQSxPQUFNckQsSUFBSSxDQUFDNkgsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0dBQUUsRUFBQSxDQUFDN0gsSUFBSSxDQUFDLENBQUMsQ0FBQTtBQUN4RCxFQUFBLElBQU04SCxlQUFlLEdBQUdqRixLQUFLLEdBQUdJLEdBQUcsQ0FBQTs7QUFFbkM7O0FBRUE7QUFDQSxFQUFBLElBQU04RSxvQkFBb0IsR0FBRzFFLE9BQU8sQ0FBQyxZQUFNO0lBQ3pDLElBQUkyRSxLQUFLLENBQUNDLE9BQU8sQ0FBQ3RGLEtBQUssQ0FBQ3VGLGVBQWUsQ0FBQyxFQUFFO0FBQ3hDLE1BQUEsSUFBTUMsU0FBUyxHQUFHbkYsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDb0YsSUFBSSxDQUFBO0FBQy9CLE1BQUEsSUFBTUMsYUFBYSxHQUFHekcsSUFBSSxDQUFDeUMsS0FBSyxDQUFDaUUsTUFBTSxDQUFBN0gsbUJBQUFBLENBQUFBLE1BQUEsQ0FBcUIwSCxTQUFTLENBQUUsQ0FBQyxHQUFHeEYsS0FBSyxDQUFDdUYsZUFBZSxDQUFDaEgsTUFBTSxDQUFDLENBQUE7QUFDeEcsTUFBQSxJQUFNcUgsUUFBUSxHQUFHNUYsS0FBSyxDQUFDdUYsZUFBZSxDQUFDRyxhQUFhLENBQUMsQ0FBQTtNQUNyRCxPQUFPO0FBQ0x4QyxRQUFBQSxVQUFVLHFCQUFBcEYsTUFBQSxDQUFxQjhILFFBQVEsQ0FBQ3hHLEtBQUssRUFBQXRCLE9BQUFBLENBQUFBLENBQUFBLE1BQUEsQ0FBUThILFFBQVEsQ0FBQ0MsTUFBTSxDQUFDbEcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFHLEdBQUEsQ0FBQTtBQUNsRm1HLFFBQUFBLGNBQWMsRUFBRSxNQUFNO0FBQ3RCakIsUUFBQUEsbUJBQW1CLEVBQUUsYUFBYTtBQUNsQ2tCLFFBQUFBLG9CQUFvQixFQUFFLE1BQU07QUFDNUJwQyxRQUFBQSxPQUFPLEVBQUUsY0FBYztBQUN2Qk8sUUFBQUEsUUFBUSxFQUFFLFVBQVU7QUFDcEJZLFFBQUFBLE1BQU0sRUFBRSxDQUFBO09BQ1QsQ0FBQTtBQUNILEtBQUE7QUFDQWtCLElBQUFBLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLHdCQUF3QixFQUFFMUYsbUJBQW1CLENBQUMsQ0FBQTtBQUMxRCxJQUFBLElBQUkyRixPQUFBLENBQU9sRyxLQUFLLENBQUNtRyxjQUFjLENBQUssS0FBQSxRQUFRLElBQUluRyxLQUFLLENBQUNtRyxjQUFjLENBQUNDLElBQUksS0FBSyxVQUFVLEVBQUU7TUFDeEYsT0FBTztBQUNMbEQsUUFBQUEsVUFBVSxFQUFBcEYsa0JBQUFBLENBQUFBLE1BQUEsQ0FBcUJrQyxLQUFLLENBQUNtRyxjQUFjLENBQUNOLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQ3pHLEtBQUssRUFBQXRCLE9BQUFBLENBQUFBLENBQUFBLE1BQUEsQ0FBUWtDLEtBQUssQ0FBQ21HLGNBQWMsQ0FBQ04sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDQSxNQUFNLENBQUNsRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUcsR0FBQSxDQUFBO0FBQzlIbUcsUUFBQUEsY0FBYyxFQUFFLE1BQU07QUFDdEJqQixRQUFBQSxtQkFBbUIsRUFBRSxhQUFhO0FBQ2xDa0IsUUFBQUEsb0JBQW9CLEVBQUUsTUFBTTtBQUM1QnBDLFFBQUFBLE9BQU8sRUFBRSxjQUFjO0FBQ3ZCTyxRQUFBQSxRQUFRLEVBQUUsVUFBVTtBQUNwQlksUUFBQUEsTUFBTSxFQUFFLENBQUE7T0FDVCxDQUFBO0FBQ0gsS0FBQTtJQUVBLE9BQU87TUFDTDFHLEtBQUssRUFBRTRCLEtBQUssQ0FBQ21HLGNBQWM7TUFDM0J0QixtQkFBbUIsRUFBRTdFLEtBQUssQ0FBQ21HLGNBQUFBO0tBQzVCLENBQUE7QUFDSCxHQUFDLEVBQUUsQ0FBQ25HLEtBQUssQ0FBQ3VGLGVBQWUsRUFBRXZGLEtBQUssQ0FBQ21HLGNBQWMsRUFBRTlGLEtBQUssQ0FBQyxDQUFDLENBQUE7O0FBRXhEO0FBQ0EsRUFBQSxJQUFNZ0csZUFBZSxHQUFHM0YsT0FBTyxDQUFDLFlBQU07QUFDcEMsSUFBQSxJQUFJLEVBQUNOLFlBQVksS0FBWkEsSUFBQUEsSUFBQUEsWUFBWSxLQUFaQSxLQUFBQSxDQUFBQSxJQUFBQSxZQUFZLENBQUVrRyxPQUFPLENBQUksSUFBQSxDQUFDakcsS0FBSyxFQUFFLE9BQU8sSUFBSSxDQUFBO0FBRWpELElBQUEsSUFBTWtHLFdBQVcsR0FBR1osTUFBTSxDQUFBN0gsZUFBQUEsQ0FBQUEsTUFBQSxDQUFpQnVDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQ29GLElBQUksQ0FBRSxDQUFDLEdBQUdyRixZQUFZLENBQUNvRyxVQUFVLENBQUE7QUFDckYsSUFBQSxJQUFJLENBQUNELFdBQVcsRUFBRSxPQUFPLElBQUksQ0FBQTtBQUU3QixJQUFBLElBQUFFLEtBQUEsR0FBNkIsQ0FBQXJHLFlBQVksYUFBWkEsWUFBWSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFaQSxZQUFZLENBQUVzRyxvQkFBb0IsS0FBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7TUFBQUMsS0FBQSxHQUFBQyxjQUFBLENBQUFILEtBQUEsRUFBQSxDQUFBLENBQUE7QUFBbEVJLE1BQUFBLFFBQVEsR0FBQUYsS0FBQSxDQUFBLENBQUEsQ0FBQTtBQUFFRyxNQUFBQSxRQUFRLEdBQUFILEtBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTtBQUN6QixJQUFBLElBQU1JLEtBQUssR0FBR0QsUUFBUSxHQUFHRCxRQUFRLEdBQUcsQ0FBQyxDQUFBO0lBQ3JDLElBQU1HLGVBQWUsR0FBRy9ILElBQUksQ0FBQ3lDLEtBQUssQ0FBQ2lFLE1BQU0sQ0FBQTdILGFBQUFBLENBQUFBLE1BQUEsQ0FBZXVDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQ29GLElBQUksQ0FBRSxDQUFDLEdBQUdzQixLQUFLLENBQUMsR0FBR0YsUUFBUSxDQUFBO0FBQzVGLElBQUEsSUFBTUksYUFBYSxHQUFHaEksSUFBSSxDQUFDaUksR0FBRyxDQUFDLENBQUMsRUFBRWpDLFNBQVMsQ0FBQzFHLE1BQU0sR0FBR3lJLGVBQWUsQ0FBQyxDQUFBO0lBQ3JFLElBQU1HLFVBQVUsR0FBR2xJLElBQUksQ0FBQ3lDLEtBQUssQ0FBQ2lFLE1BQU0sQ0FBQTdILGNBQUFBLENBQUFBLE1BQUEsQ0FBZ0J1QyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUNvRixJQUFJLENBQUUsQ0FBQyxJQUFJd0IsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDM0YsSUFBQSxJQUFNRyxjQUFjLEdBQUdoSCxZQUFZLENBQUN5RixNQUFNLENBQUM1RyxJQUFJLENBQUN5QyxLQUFLLENBQUNpRSxNQUFNLENBQUEsUUFBQSxDQUFBN0gsTUFBQSxDQUFVdUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDb0YsSUFBSSxDQUFFLENBQUMsR0FBR3JGLFlBQVksQ0FBQ3lGLE1BQU0sQ0FBQ3RILE1BQU0sQ0FBQyxDQUFDLENBQUE7SUFFckgsT0FBTztBQUNMZ0ksTUFBQUEsV0FBVyxFQUFYQSxXQUFXO0FBQ1hTLE1BQUFBLGVBQWUsRUFBZkEsZUFBZTtBQUNmRyxNQUFBQSxVQUFVLEVBQVZBLFVBQVU7QUFDVkMsTUFBQUEsY0FBYyxFQUFkQSxjQUFBQTtLQUNELENBQUE7R0FDRixFQUFFLENBQUNoSCxZQUFZLEVBQUVDLEtBQUssRUFBRTRFLFNBQVMsQ0FBQzFHLE1BQU0sQ0FBQyxDQUFDLENBQUE7QUFFM0MsRUFBQSxJQUFNOEksV0FBVyxHQUFHM0csT0FBTyxDQUFDLFlBQU07SUFDaEMsSUFBSSxDQUFDMkYsZUFBZSxFQUFFO01BQ3BCLE9BQU87UUFDTGpJLEtBQUssRUFBRTRCLEtBQUssQ0FBQzVCLEtBQUs7UUFDbEJ5RyxtQkFBbUIsRUFBRTdFLEtBQUssQ0FBQzVCLEtBQUFBO09BQzVCLENBQUE7QUFDSCxLQUFBO0FBRUEsSUFBQSxJQUFRZ0osY0FBYyxHQUFLZixlQUFlLENBQWxDZSxjQUFjLENBQUE7QUFDdEIsSUFBQSxPQUFPQSxjQUFjLENBQUNoQixJQUFJLEtBQUssVUFBVSxHQUN2QztBQUNFbEQsTUFBQUEsVUFBVSxxQkFBQXBGLE1BQUEsQ0FBcUJzSixjQUFjLENBQUNoSSxLQUFLLEVBQUF0QixPQUFBQSxDQUFBQSxDQUFBQSxNQUFBLENBQVFzSixjQUFjLENBQUN2QixNQUFNLENBQUNsRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUcsR0FBQSxDQUFBO0FBQzlGbUcsTUFBQUEsY0FBYyxFQUFFLE1BQU07QUFDdEJqQixNQUFBQSxtQkFBbUIsRUFBRSxhQUFhO0FBQ2xDa0IsTUFBQUEsb0JBQW9CLEVBQUUsTUFBTTtBQUM1QnBDLE1BQUFBLE9BQU8sRUFBRSxjQUFjO0FBQ3ZCTyxNQUFBQSxRQUFRLEVBQUUsVUFBVTtBQUNwQlksTUFBQUEsTUFBTSxFQUFFLENBQUE7QUFDVixLQUFDLEdBQ0Q7TUFDRTFHLEtBQUssRUFBRWdKLGNBQWMsQ0FBQ2hKLEtBQUs7TUFDM0J5RyxtQkFBbUIsRUFBRXVDLGNBQWMsQ0FBQ2hKLEtBQUFBO0tBQ3JDLENBQUE7R0FDSixFQUFFLENBQUNpSSxlQUFlLEVBQUVyRyxLQUFLLENBQUM1QixLQUFLLENBQUMsQ0FBQyxDQUFBO0VBRWxDLElBQU1rSixXQUFXLEdBQUc1RyxPQUFPLENBQUMsWUFBQTtJQUFBLE9BQU11RSxTQUFTLENBQUNzQyxHQUFHLENBQUMsVUFBQzlCLElBQUksRUFBRStCLEtBQUssRUFBSztBQUMvRDtBQUNBLE1BQUEsSUFBTUMsZ0JBQWdCLEdBQUdoQyxJQUFJLENBQUNpQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtBQUN0RCxNQUFBLElBQU1DLGFBQWEsR0FBR0YsZ0JBQWdCLEtBQUssSUFBSSxDQUFBO01BQy9DLElBQU1HLFdBQVcsR0FBR0QsYUFBYSxHQUFHRixnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBR2hDLElBQUksQ0FBQTtNQUU5RCxJQUFNb0MsbUJBQW1CLEdBQUd4QixlQUFlLElBQ3pDbUIsS0FBSyxJQUFJbkIsZUFBZSxDQUFDYyxVQUFVLElBQ25DSyxLQUFLLEdBQUduQixlQUFlLENBQUNjLFVBQVUsR0FBR2QsZUFBZSxDQUFDVyxlQUFlLElBQ3BFUSxLQUFLLEdBQUd2QyxTQUFTLENBQUMxRyxNQUFNLENBQUE7TUFFMUIsSUFBTXVKLFVBQVUsR0FBR3pILEtBQUssS0FBQSxJQUFBLElBQUxBLEtBQUssS0FBTEEsS0FBQUEsQ0FBQUEsR0FBQUEsS0FBQUEsQ0FBQUEsR0FBQUEsS0FBSyxDQUFHbUgsS0FBSyxDQUFDLENBQUE7TUFDakMsSUFBTU8sYUFBYSxHQUFHRCxVQUFVLElBQUkzQyxlQUFlLElBQUkyQyxVQUFVLENBQUNFLEdBQUcsQ0FBQTtBQUNyRSxNQUFBLElBQU1DLGlCQUFpQixHQUFHSCxVQUFVLElBQ2xDM0MsZUFBZSxJQUFJMkMsVUFBVSxDQUFDSSxLQUFLLElBQ25DL0MsZUFBZSxHQUFHMkMsVUFBVSxDQUFDRSxHQUFHLENBQUE7TUFFbEMsSUFBTUcscUJBQXFCLEdBQUduSSxLQUFLLENBQUNtSSxxQkFBcUIsR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFBO01BRXhFLElBQU1DLGVBQWUsR0FBR3BJLEtBQUssQ0FBQ3FJLGtCQUFrQixLQUM3Q0osaUJBQWlCLElBQUtFLHFCQUFxQixJQUFJSixhQUFjLENBQUMsQ0FBQTs7QUFFakU7TUFDQSxJQUFNTyxTQUFTLEdBQUdYLGFBQWEsR0FDM0I7QUFDRXZKLFFBQUFBLEtBQUssRUFBRW1DLG1CQUFtQjtBQUMxQnNFLFFBQUFBLG1CQUFtQixFQUFFdEUsbUJBQW1CO0FBQ3hDK0IsUUFBQUEsT0FBTyxFQUFFdEMsS0FBSyxDQUFDc0MsT0FBTyxJQUFJLENBQUM7QUFDM0I0QixRQUFBQSxRQUFRLEVBQUUsVUFBQTtBQUNaLE9BQUMsR0FDRGtFLGVBQWUsR0FBQXZFLGNBQUEsQ0FBQUEsY0FBQSxLQUVSdUIsb0JBQW9CLENBQUEsRUFBQSxFQUFBLEVBQUE7QUFDdkI5QyxRQUFBQSxPQUFPLEVBQUV0QyxLQUFLLENBQUN1SSxnQkFBZ0IsSUFBSSxDQUFDO0FBQ3BDckUsUUFBQUEsUUFBUSxFQUFFLFVBQUE7QUFBVSxPQUFBLENBQUEsR0FFdEIyRCxtQkFBbUIsR0FBQWhFLGNBQUEsQ0FBQUEsY0FBQSxLQUVad0QsV0FBVyxDQUFBLEVBQUEsRUFBQSxFQUFBO0FBQ2QvRSxRQUFBQSxPQUFPLEVBQUV0QyxLQUFLLENBQUNzQyxPQUFPLElBQUksQ0FBQztBQUMzQjRCLFFBQUFBLFFBQVEsRUFBRSxVQUFBO09BRVosQ0FBQSxHQUFBO1FBQ0U5RixLQUFLLEVBQUU0QixLQUFLLENBQUM1QixLQUFLO1FBQ2xCeUcsbUJBQW1CLEVBQUU3RSxLQUFLLENBQUM1QixLQUFLO0FBQ2hDa0UsUUFBQUEsT0FBTyxFQUFFdEMsS0FBSyxDQUFDd0ksa0JBQWtCLElBQUksQ0FBQztBQUN0Q3RFLFFBQUFBLFFBQVEsRUFBRSxVQUFBO09BQ1gsQ0FBQTs7QUFFVDtBQUNBLE1BQUEsSUFBTXVFLGNBQWMsR0FBQTVFLGNBQUEsQ0FBQUEsY0FBQSxLQUNmeUUsU0FBUyxDQUFBLEVBQUEsRUFBQSxFQUFBO0FBQ1ozRSxRQUFBQSxPQUFPLEVBQUUsY0FBYztRQUN2QitFLFdBQVcsRUFBRWxCLEtBQUssR0FBR3ZDLFNBQVMsQ0FBQzFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsUUFBUSxHQUFHLENBQUM7QUFDeEQyRixRQUFBQSxRQUFRLEVBQUUsVUFBVTtBQUNwQlksUUFBQUEsTUFBTSxFQUFFbUQsaUJBQWlCLEdBQUcsQ0FBQyxHQUFHLENBQUM7QUFDakM3RCxRQUFBQSxVQUFVLEVBQUUsUUFBQTtPQUNiLENBQUEsQ0FBQTtNQUVELG9CQUNFdUUsS0FBQSxDQUFBakwsYUFBQSxDQUFBLE1BQUEsRUFBQTtBQUFNZSxRQUFBQSxHQUFHLEVBQUUrSSxLQUFNO0FBQUN4SCxRQUFBQSxLQUFLLEVBQUV5SSxjQUFBQTtPQUN0QnpJLEVBQUFBLEtBQUssQ0FBQzRJLGdCQUFnQixJQUFJWCxpQkFBaUIsaUJBQzFDVSxLQUFBLENBQUFqTCxhQUFBLENBQUEsTUFBQSxFQUFBO0FBQU1zQyxRQUFBQSxLQUFLLEVBQUU7QUFDWGtFLFVBQUFBLFFBQVEsRUFBRSxVQUFVO0FBQ3BCMkUsVUFBQUEsT0FBTyxFQUFFLElBQUk7VUFDYnRFLElBQUksRUFBQSxHQUFBLENBQUF6RyxNQUFBLENBQU0sQ0FBQ2tDLEtBQUssQ0FBQzhJLHVCQUF1QixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUksSUFBQSxDQUFBO1VBQ3REckUsS0FBSyxFQUFBLEdBQUEsQ0FBQTNHLE1BQUEsQ0FBTSxDQUFDa0MsS0FBSyxDQUFDOEksdUJBQXVCLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBSSxJQUFBLENBQUE7QUFDdkR0RSxVQUFBQSxHQUFHLEVBQUUsQ0FBQztBQUNOdUUsVUFBQUEsTUFBTSxFQUFFLEtBQUs7QUFDYmpHLFVBQUFBLGVBQWUsRUFBRTlDLEtBQUssQ0FBQ2dKLCtCQUErQixJQUFJLFNBQVM7QUFDbkUxRyxVQUFBQSxPQUFPLEVBQUV0QyxLQUFLLENBQUNpSix1QkFBdUIsSUFBSSxDQUFDO1VBQzNDNUYsWUFBWSxFQUFBLEVBQUEsQ0FBQXZGLE1BQUEsQ0FBS2tDLEtBQUssQ0FBQ2tKLDRCQUE0QixJQUFJLEVBQUUsRUFBSSxJQUFBLENBQUE7VUFDN0RwRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ1ZxRSxVQUFBQSxhQUFhLEVBQUUsTUFBTTtBQUNyQm5GLFVBQUFBLFNBQVMsRUFBRSxpQkFBaUI7VUFDNUJOLE9BQU8sRUFBQSxFQUFBLENBQUE1RixNQUFBLENBQUtrQyxLQUFLLENBQUM4SSx1QkFBdUIsSUFBSSxDQUFDLEVBQU0sTUFBQSxDQUFBO0FBQ3BETSxVQUFBQSxTQUFTLEVBQUUsYUFBQTtBQUNiLFNBQUE7QUFBRSxPQUFFLENBQ0wsRUFDQXhCLFdBQVcsRUFBQyxHQUNULENBQUMsQ0FBQTtBQUVYLEtBQUMsQ0FBQyxDQUFBO0dBQUUsRUFBQSxDQUFDM0MsU0FBUyxFQUFFb0IsZUFBZSxFQUFFaEcsS0FBSyxFQUFFOEUsZUFBZSxFQUFFbkYsS0FBSyxDQUFDcUksa0JBQWtCLEVBQUVySSxLQUFLLENBQUNtSSxxQkFBcUIsRUFBRS9DLG9CQUFvQixFQUFFaUMsV0FBVyxFQUFFckgsS0FBSyxDQUFDNUIsS0FBSyxFQUFFNEIsS0FBSyxDQUFDNEksZ0JBQWdCLEVBQUU1SSxLQUFLLENBQUNnSiwrQkFBK0IsRUFBRWhKLEtBQUssQ0FBQ2lKLHVCQUF1QixFQUFFakosS0FBSyxDQUFDOEksdUJBQXVCLEVBQUU5SSxLQUFLLENBQUNrSiw0QkFBNEIsRUFBRTNJLG1CQUFtQixDQUFDLENBQUMsQ0FBQTtBQUN0VjtFQUNBLG9CQUNFb0ksS0FBQSxDQUFBakwsYUFBQSxDQUFBLEtBQUEsRUFBQTtBQUNFc0MsSUFBQUEsS0FBSyxFQUFBNkQsY0FBQSxDQUFBQSxjQUFBLEtBQ0FsQyxhQUFhLENBQUEsRUFBQSxFQUFBLEVBQUE7QUFDaEJ5QyxNQUFBQSxVQUFVLEVBQUUsUUFBUTtBQUNwQnBHLE1BQUFBLEtBQUssRUFBRSxhQUFhO0FBQ3BCMkYsTUFBQUEsT0FBTyxFQUFFLE9BQUE7QUFBTyxLQUFBLENBQUE7R0FHbEJnRixlQUFBQSxLQUFBLENBQUFqTCxhQUFBLENBQUEsS0FBQSxFQUFBO0FBQUtzQyxJQUFBQSxLQUFLLEVBQUVpRSxZQUFBQTtHQUNWMEUsZUFBQUEsS0FBQSxDQUFBakwsYUFBQSxDQUFBLEtBQUEsRUFBQTtBQUFLc0MsSUFBQUEsS0FBSyxFQUFBNkQsY0FBQSxDQUFBQSxjQUFBLEtBQU14RixZQUFZLENBQUEsRUFBQSxFQUFBLEVBQUE7QUFBRStGLE1BQUFBLFVBQVUsRUFBRSxRQUFBO0FBQVEsS0FBQSxDQUFBO0FBQUUsR0FBQSxFQUFFa0QsV0FBaUIsQ0FBQyxlQUN4RXFCLEtBQUEsQ0FBQWpMLGFBQUEsQ0FBQSxLQUFBLEVBQUE7QUFBS3NDLElBQUFBLEtBQUssRUFBQTZELGNBQUEsQ0FBQUEsY0FBQSxLQUFNa0IsYUFBYSxDQUFBLEVBQUEsRUFBQSxFQUFBO0FBQUVYLE1BQUFBLFVBQVUsRUFBRSxRQUFBO0FBQVEsS0FBQSxDQUFBO0dBQUlrRCxFQUFBQSxXQUFpQixDQUNyRSxDQUNGLENBQUMsQ0FBQTtBQUVWLENBQUMsRUFBRSxVQUFDK0IsU0FBUyxFQUFFQyxTQUFTLEVBQUs7QUFDM0I7RUFDQSxJQUFNQyxjQUFjLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFBO0FBQ3RELEVBQUEsSUFBTUMsd0JBQXdCLEdBQUdELGNBQWMsQ0FBQ0UsSUFBSSxDQUNsRCxVQUFBQyxJQUFJLEVBQUE7SUFBQSxPQUFJTCxTQUFTLENBQUNLLElBQUksQ0FBQyxLQUFLSixTQUFTLENBQUNJLElBQUksQ0FBQyxDQUFBO0FBQUEsR0FDN0MsQ0FBQyxDQUFBOztBQUVEO0VBQ0EsSUFBSSxDQUFDRix3QkFBd0IsRUFBRTtBQUM3QixJQUFBLE9BQU9HLElBQUksQ0FBQ0MsU0FBUyxDQUFDUCxTQUFTLENBQUNySixLQUFLLENBQUMsS0FBSzJKLElBQUksQ0FBQ0MsU0FBUyxDQUFDTixTQUFTLENBQUN0SixLQUFLLENBQUMsSUFDbkUySixJQUFJLENBQUNDLFNBQVMsQ0FBQ1AsU0FBUyxDQUFDakosWUFBWSxDQUFDLEtBQUt1SixJQUFJLENBQUNDLFNBQVMsQ0FBQ04sU0FBUyxDQUFDbEosWUFBWSxDQUFDLENBQUE7QUFDMUYsR0FBQTtBQUVBLEVBQUEsT0FBTyxLQUFLLENBQUE7QUFDZCxDQUFDOztBQy9iTSxJQUFNeUosa0JBQWtCLEdBQUcsU0FBckJBLGtCQUFrQkEsQ0FBSUMsSUFBWSxFQUFFQyxPQUFpQixFQUFBO0FBQ2hFO0VBQ0EsSUFBSTdCLEtBQUssR0FBRyxDQUFDLENBQUE7QUFDYixFQUFBLElBQUlGLEdBQUcsR0FBRytCLE9BQU8sQ0FBQ3hMLE1BQU0sR0FBRyxDQUFDLENBQUE7RUFFNUIsT0FBTzJKLEtBQUssSUFBSUYsR0FBRyxFQUFFO0FBQ25CLElBQUEsSUFBTWdDLEdBQUcsR0FBRy9LLElBQUksQ0FBQ3lDLEtBQUssQ0FBQyxDQUFDd0csS0FBSyxHQUFHRixHQUFHLElBQUksQ0FBQyxDQUFDLENBQUE7QUFDekMsSUFBQSxJQUFNaUMsTUFBTSxHQUFHRixPQUFPLENBQUNDLEdBQUcsQ0FBQyxDQUFBO0lBRTNCLElBQUlDLE1BQU0sQ0FBQy9CLEtBQUssSUFBSTRCLElBQUksSUFBSUEsSUFBSSxJQUFJRyxNQUFNLENBQUNqQyxHQUFHLEVBQUU7QUFDOUM7TUFDQSxPQUFPLENBQUNpQyxNQUFNLENBQUMsQ0FBQTtBQUNoQixLQUFBLE1BQU0sSUFBSUEsTUFBTSxDQUFDakMsR0FBRyxHQUFHOEIsSUFBSSxFQUFFO01BQzVCNUIsS0FBSyxHQUFHOEIsR0FBRyxHQUFHLENBQUMsQ0FBQTtBQUNoQixLQUFBLE1BQU07TUFDTGhDLEdBQUcsR0FBR2dDLEdBQUcsR0FBRyxDQUFDLENBQUE7QUFDZCxLQUFBO0FBQ0YsR0FBQTtBQUVELEVBQUEsT0FBTyxFQUFFLENBQUE7QUFDWCxDQUFDOztBQ3BCRDtBQUNBLElBQU1FLFFBQVEsR0FBRyxTQUFYQSxRQUFRQSxDQUFJN0gsR0FBRyxFQUFLO0FBQ3hCO0VBQ0FBLEdBQUcsR0FBR0EsR0FBRyxDQUFDRyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFBOztBQUUxQjtBQUNBLEVBQUEsSUFBTUUsQ0FBQyxHQUFHNUQsUUFBUSxDQUFDdUQsR0FBRyxDQUFDOUQsTUFBTSxLQUFLLENBQUMsR0FBRzhELEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBR0EsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxHQUFHLENBQUM4SCxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0FBQzVFLEVBQUEsSUFBTXhILENBQUMsR0FBRzdELFFBQVEsQ0FBQ3VELEdBQUcsQ0FBQzlELE1BQU0sS0FBSyxDQUFDLEdBQUc4RCxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUdBLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBR0EsR0FBRyxDQUFDOEgsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUM1RSxFQUFBLElBQU12SCxDQUFDLEdBQUc5RCxRQUFRLENBQUN1RCxHQUFHLENBQUM5RCxNQUFNLEtBQUssQ0FBQyxHQUFHOEQsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUdBLEdBQUcsQ0FBQzhILEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7RUFFNUUsT0FBQXJNLEVBQUFBLENBQUFBLE1BQUEsQ0FBVTRFLENBQUMsRUFBQTVFLElBQUFBLENBQUFBLENBQUFBLE1BQUEsQ0FBSzZFLENBQUMsRUFBQSxJQUFBLENBQUEsQ0FBQTdFLE1BQUEsQ0FBSzhFLENBQUMsQ0FBQSxDQUFBO0FBQ3pCLENBQUMsQ0FBQTtBQUVZd0gsSUFBQUEsWUFBWSxHQUFHLFNBQWZBLFlBQVlBLENBQUlDLE1BQU0sRUFBRS9LLENBQUMsRUFBRWdMLFNBQVMsRUFBRUMsVUFBVSxFQUFLO0VBQ2hFLE9BQU83SixPQUFPLENBQUMsWUFBTTtBQUNuQjtBQUNBLElBQUEsSUFBTW9CLGVBQWUsR0FBR3VJLE1BQU0sQ0FBQ3ZJLGVBQWUsSUFBSSxDQUFDLENBQUE7QUFDbkQsSUFBQSxJQUFNQyxXQUFXLEdBQUdzSSxNQUFNLENBQUN0SSxXQUFXLElBQUksU0FBUyxDQUFBO0FBQ25ELElBQUEsSUFBTUMsVUFBVSxHQUFHcUksTUFBTSxDQUFDckksVUFBVSxJQUFJLEdBQUcsQ0FBQTtBQUMzQyxJQUFBLElBQU1DLGFBQWEsR0FBR29JLE1BQU0sQ0FBQ3BJLGFBQWEsSUFBSSxHQUFHLENBQUE7QUFDakQsSUFBQSxJQUFNQyxhQUFhLEdBQUdtSSxNQUFNLENBQUNuSSxhQUFhLElBQUksR0FBRyxDQUFBOztBQUVqRDtJQUNBLElBQU10RCxPQUFPLEdBQUcsRUFBRSxDQUFBO0lBQ2xCLEtBQUssSUFBSU8sQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHMkMsZUFBZSxFQUFFM0MsQ0FBQyxFQUFFLEVBQUU7QUFDeENQLE1BQUFBLE9BQU8sQ0FBQ0csSUFBSSxDQUFBLEVBQUEsQ0FBQWpCLE1BQUEsQ0FBSW1FLGFBQWEsU0FBQW5FLE1BQUEsQ0FBTW9FLGFBQWEsRUFBQXBFLEtBQUFBLENBQUFBLENBQUFBLE1BQUEsQ0FBTWtFLFVBQVUsRUFBQSxLQUFBLENBQUEsQ0FBQWxFLE1BQUEsQ0FBTWlFLFdBQVcsQ0FBRSxDQUFDLENBQUE7QUFDdEYsS0FBQTtBQUNBLElBQUEsSUFBTUksVUFBVSxHQUFHdkQsT0FBTyxDQUFDZSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFFckMsSUFBTTZLLFVBQVUsR0FBSUgsTUFBTSxDQUFDSSxhQUFhLEtBQUssS0FBSyxLQUFLSixNQUFNLENBQUNwSSxhQUFhLElBQUlvSSxNQUFNLENBQUNuSSxhQUFhLElBQUltSSxNQUFNLENBQUNySSxVQUFVLENBQUMsR0FBQWxFLGNBQUFBLENBQUFBLE1BQUEsQ0FDdEd1TSxNQUFNLENBQUNwSSxhQUFhLEVBQUFuRSxLQUFBQSxDQUFBQSxDQUFBQSxNQUFBLENBQU11TSxNQUFNLENBQUNuSSxhQUFhLEVBQUFwRSxLQUFBQSxDQUFBQSxDQUFBQSxNQUFBLENBQU11TSxNQUFNLENBQUNySSxVQUFVLEVBQUFsRSxLQUFBQSxDQUFBQSxDQUFBQSxNQUFBLENBQU11TSxNQUFNLENBQUN0SSxXQUFXLEVBQUEsR0FBQSxDQUFBLEdBQzVHLE1BQU0sQ0FBQTtBQUVWLElBQUEsSUFBTWUsZUFBZSxHQUFHdUgsTUFBTSxDQUFDdkgsZUFBZSxLQUFLLGFBQWEsR0FDNUQsYUFBYSxHQUNidUgsTUFBTSxDQUFDdkgsZUFBZSxJQUFJdUgsTUFBTSxDQUFDdEgsaUJBQWlCLEdBQUEsT0FBQSxDQUFBakYsTUFBQSxDQUN4Q29NLFFBQVEsQ0FBQ0csTUFBTSxDQUFDdkgsZUFBZSxDQUFDLEVBQUFoRixJQUFBQSxDQUFBQSxDQUFBQSxNQUFBLENBQUt1TSxNQUFNLENBQUN0SCxpQkFBaUIsRUFBQSxHQUFBLENBQUEsR0FDckVzSCxNQUFNLENBQUN2SCxlQUFlLElBQUksU0FBUyxDQUFBOztBQUV6QztJQUNBLElBQU00SCxRQUFRLEdBQUdMLE1BQU0sQ0FBQ00sa0JBQWtCLElBQUlOLE1BQU0sQ0FBQ3hJLGlCQUFpQixJQUFJLElBQUksQ0FBQTtJQUM5RSxJQUFNK0ksUUFBUSxHQUFHUCxNQUFNLENBQUNRLGtCQUFrQixJQUFJUixNQUFNLENBQUN4SSxpQkFBaUIsSUFBSSxJQUFJLENBQUE7SUFDOUUsSUFBTUQsV0FBVyxNQUFBOUQsTUFBQSxDQUFNOE0sUUFBUSxFQUFBOU0sS0FBQUEsQ0FBQUEsQ0FBQUEsTUFBQSxDQUFNNE0sUUFBUSxFQUFJLElBQUEsQ0FBQSxDQUFBO0FBRWpELElBQUEsSUFBTTFLLEtBQUssR0FBRztBQUNaa0UsTUFBQUEsUUFBUSxFQUFFLFVBQVU7QUFDcEJLLE1BQUFBLElBQUksRUFBQXpHLEVBQUFBLENBQUFBLE1BQUEsQ0FBS3dCLENBQUMsRUFBSSxJQUFBLENBQUE7QUFDZGtGLE1BQUFBLEdBQUcsRUFBQTFHLEVBQUFBLENBQUFBLE1BQUEsQ0FBS3dNLFNBQVMsRUFBSSxJQUFBLENBQUE7QUFDckJ0RyxNQUFBQSxTQUFTLEVBQUUsdUJBQXVCO01BQ2xDekcsVUFBVSxFQUFFOE0sTUFBTSxDQUFDOU0sVUFBVTtBQUM3QkQsTUFBQUEsUUFBUSxLQUFBUSxNQUFBLENBQUt1TSxNQUFNLENBQUMvTSxRQUFRLEVBQUksSUFBQSxDQUFBO01BQ2hDd04sVUFBVSxFQUFFVCxNQUFNLENBQUNTLFVBQVU7TUFDN0IxTSxLQUFLLEVBQUVpTSxNQUFNLENBQUNVLFNBQVM7TUFDdkI1RSxjQUFjLEVBQUVrRSxNQUFNLENBQUNsRSxjQUFjO01BQ3JDWixlQUFlLEVBQUU4RSxNQUFNLENBQUM5RSxlQUFlO01BQ3ZDOEMsa0JBQWtCLEVBQUVnQyxNQUFNLENBQUNoQyxrQkFBa0I7TUFDN0MyQyxhQUFhLEVBQUVYLE1BQU0sQ0FBQ1ksUUFBUTtBQUM5QkMsTUFBQUEsU0FBUyxFQUFFYixNQUFNLENBQUNjLFFBQVEsR0FBRyxRQUFRLEdBQUcsUUFBUTtBQUNoREMsTUFBQUEsU0FBUyxFQUFFLFFBQVE7QUFDbkJDLE1BQUFBLGFBQWEsS0FBQXZOLE1BQUEsQ0FBS3VNLE1BQU0sQ0FBQ2lCLFdBQVcsRUFBSSxJQUFBLENBQUE7QUFDeEN4SSxNQUFBQSxlQUFlLEVBQWZBLGVBQWU7QUFDZmpCLE1BQUFBLGlCQUFpQixFQUFFRCxXQUFXO01BQzlCMEIsc0JBQXNCLEVBQUUrRyxNQUFNLENBQUMvRyxzQkFBc0I7QUFDckRhLE1BQUFBLGVBQWUsRUFBRWtHLE1BQU0sQ0FBQ2xHLGVBQWUsSUFBSSxDQUFDO0FBQzVDb0gsTUFBQUEsZUFBZSxFQUFFLGVBQWU7QUFDaEN2TixNQUFBQSxLQUFLLEVBQUUsTUFBTTtBQUNid04sTUFBQUEsUUFBUSxLQUFBMU4sTUFBQSxDQUFLeU0sVUFBVSxHQUFHLEdBQUcsRUFBSSxJQUFBLENBQUE7QUFDakNuRyxNQUFBQSxVQUFVLEVBQUUsVUFBVTtBQUN0Qk4sTUFBQUEsUUFBUSxFQUFFLFNBQVM7TUFDbkJhLFlBQVksRUFBRTBGLE1BQU0sQ0FBQzFGLFlBQVk7TUFDakNDLFlBQVksRUFBRXlGLE1BQU0sQ0FBQ3pGLFlBQVk7QUFDakM2RyxNQUFBQSxNQUFNLEVBQUVqQixVQUFVO0FBQ2xCN0csTUFBQUEsT0FBTyxFQUFFLGNBQWM7TUFDdkJ3RSxxQkFBcUIsRUFBRWtDLE1BQU0sQ0FBQ2xDLHFCQUFxQjtNQUNuREksZ0JBQWdCLEVBQUU4QixNQUFNLENBQUM5QixnQkFBZ0I7TUFDekNDLGtCQUFrQixFQUFFNkIsTUFBTSxDQUFDL0gsT0FBTztNQUNsQ3NHLGdCQUFnQixFQUFFeUIsTUFBTSxDQUFDekIsZ0JBQWdCO01BQ3pDSSwrQkFBK0IsRUFBRXFCLE1BQU0sQ0FBQ3JCLCtCQUErQjtNQUN2RUMsdUJBQXVCLEVBQUVvQixNQUFNLENBQUNwQix1QkFBdUI7TUFDdkRILHVCQUF1QixFQUFFdUIsTUFBTSxDQUFDdkIsdUJBQXVCO01BQ3ZESSw0QkFBNEIsRUFBRW1CLE1BQU0sQ0FBQ25CLDRCQUE0QjtNQUNqRXdDLGdDQUFnQyxFQUFFckIsTUFBTSxDQUFDcUIsZ0NBQWdDO0FBQ3pFdkosTUFBQUEsVUFBVSxFQUFWQSxVQUFVO01BQ1ZMLGVBQWUsRUFBRXVJLE1BQU0sQ0FBQ3ZJLGVBQUFBO0tBQ3pCLENBQUE7O0FBRUQ7QUFDQSxJQUFBLE9BQU85QixLQUFLLENBQUE7R0FDYixFQUFFLENBQUNxSyxNQUFNLEVBQUUvSyxDQUFDLEVBQUVnTCxTQUFTLEVBQUVDLFVBQVUsQ0FBQyxDQUFDLENBQUE7QUFDeEM7O0FDM0ZBO0FBQ0EsSUFBTW9CLFFBQVEsR0FBRztBQUNmLEVBQUEsK0JBQStCLEVBQUUsQ0FBQztBQUFFQyxJQUFBQSxHQUFHLEVBQUUsZ0dBQWdHO0FBQUVDLElBQUFBLE1BQU0sRUFBRSxHQUFHO0FBQUU3TCxJQUFBQSxLQUFLLEVBQUUsUUFBQTtBQUFTLEdBQUMsQ0FBQztBQUMxSyxFQUFBLGVBQWUsRUFBRSxDQUFDO0FBQUU0TCxJQUFBQSxHQUFHLEVBQUUsdUdBQXVHO0FBQUVDLElBQUFBLE1BQU0sRUFBRSxHQUFHO0FBQUU3TCxJQUFBQSxLQUFLLEVBQUUsUUFBQTtBQUFTLEdBQUMsQ0FBQztBQUNqSyxFQUFBLHFCQUFxQixFQUFFLENBQUM7QUFBRTRMLElBQUFBLEdBQUcsRUFBRSw2RkFBNkY7QUFBRUMsSUFBQUEsTUFBTSxFQUFFLEdBQUc7QUFBRTdMLElBQUFBLEtBQUssRUFBRSxRQUFBO0FBQVMsR0FBQyxDQUFDO0FBQzdKLEVBQUEscUJBQXFCLEVBQUUsQ0FBQztBQUFFNEwsSUFBQUEsR0FBRyxFQUFFLHNGQUFzRjtBQUFFQyxJQUFBQSxNQUFNLEVBQUUsR0FBRztBQUFFN0wsSUFBQUEsS0FBSyxFQUFFLFFBQUE7QUFBUyxHQUFDLENBQUM7QUFDdEosRUFBQSxhQUFhLEVBQUUsQ0FBQztBQUFFNEwsSUFBQUEsR0FBRyxFQUFFLDhFQUE4RTtBQUFFQyxJQUFBQSxNQUFNLEVBQUUsR0FBRztBQUFFN0wsSUFBQUEsS0FBSyxFQUFFLFFBQUE7QUFBUyxHQUFDLENBQUM7QUFDdEksRUFBQSxrQkFBa0IsRUFBRSxDQUFDO0FBQUU0TCxJQUFBQSxHQUFHLEVBQUUsOEZBQThGO0FBQUVDLElBQUFBLE1BQU0sRUFBRSxHQUFHO0FBQUU3TCxJQUFBQSxLQUFLLEVBQUUsUUFBQTtBQUFTLEdBQUMsQ0FBQztBQUMzSixFQUFBLGlCQUFpQixFQUFFLENBQUM7QUFBRTRMLElBQUFBLEdBQUcsRUFBRSw2RkFBNkY7QUFBRUMsSUFBQUEsTUFBTSxFQUFFLEdBQUc7QUFBRTdMLElBQUFBLEtBQUssRUFBRSxRQUFBO0FBQVMsR0FBQyxDQUFDO0FBRXpKO0FBQ0E7QUFDQSxFQUFBLE9BQU8sRUFBRSxDQUNQO0FBQUU0TCxJQUFBQSxHQUFHLEVBQUUscUZBQXFGO0FBQUVDLElBQUFBLE1BQU0sRUFBRSxHQUFHO0FBQUU3TCxJQUFBQSxLQUFLLEVBQUUsUUFBQTtBQUFTLEdBQUMsRUFDNUg7QUFBRTRMLElBQUFBLEdBQUcsRUFBRSwyRkFBMkY7QUFBRUMsSUFBQUEsTUFBTSxFQUFFLEdBQUc7QUFBRTdMLElBQUFBLEtBQUssRUFBRSxRQUFBO0FBQVMsR0FBQyxFQUNsSTtBQUFFNEwsSUFBQUEsR0FBRyxFQUFFLHNGQUFzRjtBQUFFQyxJQUFBQSxNQUFNLEVBQUUsR0FBRztBQUFFN0wsSUFBQUEsS0FBSyxFQUFFLFFBQUE7QUFBUyxHQUFDLEVBQzdIO0FBQUU0TCxJQUFBQSxHQUFHLEVBQUUsd0ZBQXdGO0FBQUVDLElBQUFBLE1BQU0sRUFBRSxHQUFHO0FBQUU3TCxJQUFBQSxLQUFLLEVBQUUsUUFBQTtBQUFTLEdBQUMsRUFDL0g7QUFBRTRMLElBQUFBLEdBQUcsRUFBRSx1RkFBdUY7QUFBRUMsSUFBQUEsTUFBTSxFQUFFLEdBQUc7QUFBRTdMLElBQUFBLEtBQUssRUFBRSxRQUFBO0FBQVMsR0FBQyxFQUM5SDtBQUFFNEwsSUFBQUEsR0FBRyxFQUFFLHlGQUF5RjtBQUFFQyxJQUFBQSxNQUFNLEVBQUUsR0FBRztBQUFFN0wsSUFBQUEsS0FBSyxFQUFFLFFBQUE7QUFBUyxHQUFDLEVBQ2hJO0FBQUU0TCxJQUFBQSxHQUFHLEVBQUUscUZBQXFGO0FBQUVDLElBQUFBLE1BQU0sRUFBRSxHQUFHO0FBQUU3TCxJQUFBQSxLQUFLLEVBQUUsUUFBQTtBQUFTLEdBQUMsRUFDNUg7QUFBRTRMLElBQUFBLEdBQUcsRUFBRSwwRkFBMEY7QUFBRUMsSUFBQUEsTUFBTSxFQUFFLEdBQUc7QUFBRTdMLElBQUFBLEtBQUssRUFBRSxRQUFBO0FBQVMsR0FBQyxFQUNqSTtBQUFFNEwsSUFBQUEsR0FBRyxFQUFFLHNGQUFzRjtBQUFFQyxJQUFBQSxNQUFNLEVBQUUsR0FBRztBQUFFN0wsSUFBQUEsS0FBSyxFQUFFLFFBQUE7QUFBUyxHQUFDLENBQzlIO0FBRUQ7QUFDQSxFQUFBLFVBQVUsRUFBRSxDQUNWO0FBQUU0TCxJQUFBQSxHQUFHLEVBQUUsOEdBQThHO0FBQUVDLElBQUFBLE1BQU0sRUFBRSxHQUFHO0FBQUU3TCxJQUFBQSxLQUFLLEVBQUUsUUFBQTtBQUFTLEdBQUMsRUFDcko7QUFBRTRMLElBQUFBLEdBQUcsRUFBRSx1SEFBdUg7QUFBRUMsSUFBQUEsTUFBTSxFQUFFLEdBQUc7QUFBRTdMLElBQUFBLEtBQUssRUFBRSxRQUFBO0FBQVMsR0FBQyxFQUM5SjtBQUFFNEwsSUFBQUEsR0FBRyxFQUFFLG9IQUFvSDtBQUFFQyxJQUFBQSxNQUFNLEVBQUUsR0FBRztBQUFFN0wsSUFBQUEsS0FBSyxFQUFFLFFBQUE7QUFBUyxHQUFDLEVBQzNKO0FBQUU0TCxJQUFBQSxHQUFHLEVBQUUsNkhBQTZIO0FBQUVDLElBQUFBLE1BQU0sRUFBRSxHQUFHO0FBQUU3TCxJQUFBQSxLQUFLLEVBQUUsUUFBQTtBQUFTLEdBQUMsRUFDcEs7QUFBRTRMLElBQUFBLEdBQUcsRUFBRSwrR0FBK0c7QUFBRUMsSUFBQUEsTUFBTSxFQUFFLEdBQUc7QUFBRTdMLElBQUFBLEtBQUssRUFBRSxRQUFBO0FBQVMsR0FBQyxFQUN0SjtBQUFFNEwsSUFBQUEsR0FBRyxFQUFFLHdIQUF3SDtBQUFFQyxJQUFBQSxNQUFNLEVBQUUsR0FBRztBQUFFN0wsSUFBQUEsS0FBSyxFQUFFLFFBQUE7QUFBUyxHQUFDLEVBQy9KO0FBQUU0TCxJQUFBQSxHQUFHLEVBQUUsOEdBQThHO0FBQUVDLElBQUFBLE1BQU0sRUFBRSxHQUFHO0FBQUU3TCxJQUFBQSxLQUFLLEVBQUUsUUFBQTtBQUFTLEdBQUMsRUFDcko7QUFBRTRMLElBQUFBLEdBQUcsRUFBRSx1SEFBdUg7QUFBRUMsSUFBQUEsTUFBTSxFQUFFLEdBQUc7QUFBRTdMLElBQUFBLEtBQUssRUFBRSxRQUFBO0FBQVMsR0FBQyxFQUM5SjtBQUFFNEwsSUFBQUEsR0FBRyxFQUFFLGdIQUFnSDtBQUFFQyxJQUFBQSxNQUFNLEVBQUUsR0FBRztBQUFFN0wsSUFBQUEsS0FBSyxFQUFFLFFBQUE7QUFBUyxHQUFDLEVBQ3ZKO0FBQUU0TCxJQUFBQSxHQUFHLEVBQUUseUhBQXlIO0FBQUVDLElBQUFBLE1BQU0sRUFBRSxHQUFHO0FBQUU3TCxJQUFBQSxLQUFLLEVBQUUsUUFBQTtBQUFTLEdBQUMsRUFDaEs7QUFBRTRMLElBQUFBLEdBQUcsRUFBRSxrSEFBa0g7QUFBRUMsSUFBQUEsTUFBTSxFQUFFLEdBQUc7QUFBRTdMLElBQUFBLEtBQUssRUFBRSxRQUFBO0FBQVMsR0FBQyxFQUN6SjtBQUFFNEwsSUFBQUEsR0FBRyxFQUFFLDJIQUEySDtBQUFFQyxJQUFBQSxNQUFNLEVBQUUsR0FBRztBQUFFN0wsSUFBQUEsS0FBSyxFQUFFLFFBQUE7QUFBUyxHQUFDLEVBQ2xLO0FBQUU0TCxJQUFBQSxHQUFHLEVBQUUsOEdBQThHO0FBQUVDLElBQUFBLE1BQU0sRUFBRSxHQUFHO0FBQUU3TCxJQUFBQSxLQUFLLEVBQUUsUUFBQTtBQUFTLEdBQUMsRUFDcko7QUFBRTRMLElBQUFBLEdBQUcsRUFBRSx1SEFBdUg7QUFBRUMsSUFBQUEsTUFBTSxFQUFFLEdBQUc7QUFBRTdMLElBQUFBLEtBQUssRUFBRSxRQUFBO0FBQVMsR0FBQyxFQUM5SjtBQUFFNEwsSUFBQUEsR0FBRyxFQUFFLG1IQUFtSDtBQUFFQyxJQUFBQSxNQUFNLEVBQUUsR0FBRztBQUFFN0wsSUFBQUEsS0FBSyxFQUFFLFFBQUE7QUFBUyxHQUFDLEVBQzFKO0FBQUU0TCxJQUFBQSxHQUFHLEVBQUUsNEhBQTRIO0FBQUVDLElBQUFBLE1BQU0sRUFBRSxHQUFHO0FBQUU3TCxJQUFBQSxLQUFLLEVBQUUsUUFBQTtBQUFTLEdBQUMsRUFDbks7QUFBRTRMLElBQUFBLEdBQUcsRUFBRSwrR0FBK0c7QUFBRUMsSUFBQUEsTUFBTSxFQUFFLEdBQUc7QUFBRTdMLElBQUFBLEtBQUssRUFBRSxRQUFBO0FBQVMsR0FBQyxFQUN0SjtBQUFFNEwsSUFBQUEsR0FBRyxFQUFFLHdIQUF3SDtBQUFFQyxJQUFBQSxNQUFNLEVBQUUsR0FBRztBQUFFN0wsSUFBQUEsS0FBSyxFQUFFLFFBQUE7QUFBUyxHQUFDLENBQ2hLO0FBRUQsRUFBQSxhQUFhLEVBQUUsQ0FBQztBQUFFNEwsSUFBQUEsR0FBRyxFQUFFLGdGQUFnRjtBQUFFQyxJQUFBQSxNQUFNLEVBQUUsR0FBRztBQUFFN0wsSUFBQUEsS0FBSyxFQUFFLFFBQUE7QUFBUyxHQUFDLENBQUM7QUFFeEk7QUFDQSxFQUFBLFdBQVcsRUFBRSxDQUNYO0FBQUU0TCxJQUFBQSxHQUFHLEVBQUUscUdBQXFHO0FBQUVDLElBQUFBLE1BQU0sRUFBRSxHQUFHO0FBQUU3TCxJQUFBQSxLQUFLLEVBQUUsUUFBQTtBQUFTLEdBQUMsRUFDNUk7QUFBRTRMLElBQUFBLEdBQUcsRUFBRSw4R0FBOEc7QUFBRUMsSUFBQUEsTUFBTSxFQUFFLEdBQUc7QUFBRTdMLElBQUFBLEtBQUssRUFBRSxRQUFBO0FBQVMsR0FBQyxFQUNySjtBQUFFNEwsSUFBQUEsR0FBRyxFQUFFLHVHQUF1RztBQUFFQyxJQUFBQSxNQUFNLEVBQUUsR0FBRztBQUFFN0wsSUFBQUEsS0FBSyxFQUFFLFFBQUE7QUFBUyxHQUFDLEVBQzlJO0FBQUU0TCxJQUFBQSxHQUFHLEVBQUUsZ0hBQWdIO0FBQUVDLElBQUFBLE1BQU0sRUFBRSxHQUFHO0FBQUU3TCxJQUFBQSxLQUFLLEVBQUUsUUFBQTtBQUFTLEdBQUMsRUFDdko7QUFBRTRMLElBQUFBLEdBQUcsRUFBRSxzR0FBc0c7QUFBRUMsSUFBQUEsTUFBTSxFQUFFLEdBQUc7QUFBRTdMLElBQUFBLEtBQUssRUFBRSxRQUFBO0FBQVMsR0FBQyxFQUM3STtBQUFFNEwsSUFBQUEsR0FBRyxFQUFFLCtHQUErRztBQUFFQyxJQUFBQSxNQUFNLEVBQUUsR0FBRztBQUFFN0wsSUFBQUEsS0FBSyxFQUFFLFFBQUE7QUFBUyxHQUFDLEVBQ3RKO0FBQUU0TCxJQUFBQSxHQUFHLEVBQUUsMkdBQTJHO0FBQUVDLElBQUFBLE1BQU0sRUFBRSxHQUFHO0FBQUU3TCxJQUFBQSxLQUFLLEVBQUUsUUFBQTtBQUFTLEdBQUMsRUFDbEo7QUFBRTRMLElBQUFBLEdBQUcsRUFBRSxvSEFBb0g7QUFBRUMsSUFBQUEsTUFBTSxFQUFFLEdBQUc7QUFBRTdMLElBQUFBLEtBQUssRUFBRSxRQUFBO0FBQVMsR0FBQyxFQUMzSjtBQUFFNEwsSUFBQUEsR0FBRyxFQUFFLG9HQUFvRztBQUFFQyxJQUFBQSxNQUFNLEVBQUUsR0FBRztBQUFFN0wsSUFBQUEsS0FBSyxFQUFFLFFBQUE7QUFBUyxHQUFDLEVBQzNJO0FBQUU0TCxJQUFBQSxHQUFHLEVBQUUsNkdBQTZHO0FBQUVDLElBQUFBLE1BQU0sRUFBRSxHQUFHO0FBQUU3TCxJQUFBQSxLQUFLLEVBQUUsUUFBQTtBQUFTLEdBQUMsRUFDcEo7QUFBRTRMLElBQUFBLEdBQUcsRUFBRSxxR0FBcUc7QUFBRUMsSUFBQUEsTUFBTSxFQUFFLEdBQUc7QUFBRTdMLElBQUFBLEtBQUssRUFBRSxRQUFBO0FBQVMsR0FBQyxFQUM1STtBQUFFNEwsSUFBQUEsR0FBRyxFQUFFLDhHQUE4RztBQUFFQyxJQUFBQSxNQUFNLEVBQUUsR0FBRztBQUFFN0wsSUFBQUEsS0FBSyxFQUFFLFFBQUE7QUFBUyxHQUFDLEVBQ3JKO0FBQUU0TCxJQUFBQSxHQUFHLEVBQUUsMEdBQTBHO0FBQUVDLElBQUFBLE1BQU0sRUFBRSxHQUFHO0FBQUU3TCxJQUFBQSxLQUFLLEVBQUUsUUFBQTtBQUFTLEdBQUMsRUFDako7QUFBRTRMLElBQUFBLEdBQUcsRUFBRSxtSEFBbUg7QUFBRUMsSUFBQUEsTUFBTSxFQUFFLEdBQUc7QUFBRTdMLElBQUFBLEtBQUssRUFBRSxRQUFBO0FBQVMsR0FBQyxFQUMxSjtBQUFFNEwsSUFBQUEsR0FBRyxFQUFFLDBHQUEwRztBQUFFQyxJQUFBQSxNQUFNLEVBQUUsR0FBRztBQUFFN0wsSUFBQUEsS0FBSyxFQUFFLFFBQUE7QUFBUyxHQUFDLEVBQ2pKO0FBQUU0TCxJQUFBQSxHQUFHLEVBQUUsbUhBQW1IO0FBQUVDLElBQUFBLE1BQU0sRUFBRSxHQUFHO0FBQUU3TCxJQUFBQSxLQUFLLEVBQUUsUUFBQTtHQUFVLENBQUE7QUFFOUosQ0FBQyxDQUFBO0FBRU0sSUFBTThMLGlCQUFpQixnQkFBQSxZQUFBO0VBQUEsSUFBQS9MLElBQUEsR0FBQWdNLGlCQUFBLGNBQUFDLG1CQUFBLEdBQUFDLElBQUEsQ0FBRyxTQUFBQyxRQUFBQSxDQUFPM08sVUFBVSxFQUFBO0FBQUEsSUFBQSxJQUFBNE8sZUFBQSxFQUFBQyxjQUFBLEVBQUFDLFlBQUEsQ0FBQTtBQUFBLElBQUEsT0FBQUwsbUJBQUEsRUFBQSxDQUFBTSxJQUFBLENBQUEsU0FBQUMsVUFBQUMsU0FBQSxFQUFBO0FBQUEsTUFBQSxPQUFBLENBQUEsRUFBQSxRQUFBQSxTQUFBLENBQUFDLElBQUEsR0FBQUQsU0FBQSxDQUFBRSxJQUFBO0FBQUEsUUFBQSxLQUFBLENBQUE7VUFBQSxJQUM1Q25QLEVBQUFBLFVBQVUsS0FBSyxPQUFPLENBQUEsRUFBQTtBQUFBaVAsWUFBQUEsU0FBQSxDQUFBRSxJQUFBLEdBQUEsQ0FBQSxDQUFBO0FBQUEsWUFBQSxNQUFBO0FBQUEsV0FBQTtVQUFBLE9BQUFGLFNBQUEsQ0FBQUcsTUFBQSxDQUFBLFFBQUEsQ0FBQSxDQUFBO0FBQUEsUUFBQSxLQUFBLENBQUE7QUFBQSxVQUFBLElBQUEsRUFHakIsQ0FBQ3BQLFVBQVUsSUFBSSxPQUFPRSxRQUFRLEtBQUssV0FBVyxDQUFBLEVBQUE7QUFBQStPLFlBQUFBLFNBQUEsQ0FBQUUsSUFBQSxHQUFBLENBQUEsQ0FBQTtBQUFBLFlBQUEsTUFBQTtBQUFBLFdBQUE7QUFDckQxRyxVQUFBQSxPQUFPLENBQUM0RyxJQUFJLENBQUMsdURBQXVELENBQUMsQ0FBQTtVQUFDLE9BQUFKLFNBQUEsQ0FBQUcsTUFBQSxDQUFBLFFBQUEsQ0FBQSxDQUFBO0FBQUEsUUFBQSxLQUFBLENBQUE7QUFJeEU7VUFDTVIsZUFBZSxHQUFHNU8sVUFBVSxDQUFDaUYsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQzBDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ2pDLElBQUksRUFBRSxDQUM1RTtBQUVBO0FBQ01tSixVQUFBQSxjQUFjLEdBQUdULFFBQVEsQ0FBQ1EsZUFBZSxDQUFDLENBQUE7QUFBQSxVQUFBLElBQzNDQyxjQUFjLEVBQUE7QUFBQUksWUFBQUEsU0FBQSxDQUFBRSxJQUFBLEdBQUEsRUFBQSxDQUFBO0FBQUEsWUFBQSxNQUFBO0FBQUEsV0FBQTtBQUNqQjFHLFVBQUFBLE9BQU8sQ0FBQzRHLElBQUksQ0FBQSxnQkFBQSxDQUFBOU8sTUFBQSxDQUFpQnFPLGVBQWUsNkJBQXlCLENBQUMsQ0FBQTtVQUFDLE9BQUFLLFNBQUEsQ0FBQUcsTUFBQSxDQUFBLFFBQUEsQ0FBQSxDQUFBO0FBQUEsUUFBQSxLQUFBLEVBQUE7QUFBQUgsVUFBQUEsU0FBQSxDQUFBQyxJQUFBLEdBQUEsRUFBQSxDQUFBO0FBT3ZFO1VBQ01KLFlBQVksR0FBR0QsY0FBYyxDQUFDN0UsR0FBRyxjQUFBLFlBQUE7WUFBQSxJQUFBWixLQUFBLEdBQUFvRixpQkFBQSxjQUFBQyxtQkFBQSxHQUFBQyxJQUFBLENBQUMsU0FBQVksT0FBQUEsQ0FBQXBHLEtBQUEsRUFBQTtjQUFBLElBQUFtRixHQUFBLEVBQUFDLE1BQUEsRUFBQTdMLEtBQUEsRUFBQW5DLElBQUEsRUFBQWlQLFVBQUEsQ0FBQTtBQUFBLGNBQUEsT0FBQWQsbUJBQUEsRUFBQSxDQUFBTSxJQUFBLENBQUEsU0FBQVMsU0FBQUMsUUFBQSxFQUFBO0FBQUEsZ0JBQUEsT0FBQSxDQUFBLEVBQUEsUUFBQUEsUUFBQSxDQUFBUCxJQUFBLEdBQUFPLFFBQUEsQ0FBQU4sSUFBQTtBQUFBLGtCQUFBLEtBQUEsQ0FBQTtBQUFTZCxvQkFBQUEsR0FBRyxHQUFBbkYsS0FBQSxDQUFIbUYsR0FBRyxFQUFFQyxNQUFNLEdBQUFwRixLQUFBLENBQU5vRixNQUFNLEVBQUU3TCxLQUFLLEdBQUF5RyxLQUFBLENBQUx6RyxLQUFLLENBQUE7b0JBQzNEbkMsSUFBSSxHQUFHLElBQUlvUCxRQUFRLENBQUNkLGVBQWUsRUFBQXJPLE1BQUFBLENBQUFBLE1BQUEsQ0FBUzhOLEdBQUcsRUFBSyxHQUFBLENBQUEsRUFBQTtBQUFFQyxzQkFBQUEsTUFBTSxFQUFOQSxNQUFNO0FBQUU3TCxzQkFBQUEsS0FBSyxFQUFMQSxLQUFBQTtBQUFNLHFCQUFDLENBQUMsQ0FBQTtBQUFBZ04sb0JBQUFBLFFBQUEsQ0FBQU4sSUFBQSxHQUFBLENBQUEsQ0FBQTtBQUFBLG9CQUFBLE9BQ25EN08sSUFBSSxDQUFDcVAsSUFBSSxFQUFFLENBQUE7QUFBQSxrQkFBQSxLQUFBLENBQUE7b0JBQTlCSixVQUFVLEdBQUFFLFFBQUEsQ0FBQUcsSUFBQSxDQUFBO0FBQ2hCMVAsb0JBQUFBLFFBQVEsQ0FBQzJQLEtBQUssQ0FBQ0MsR0FBRyxDQUFDUCxVQUFVLENBQUMsQ0FBQTtBQUFDLG9CQUFBLE9BQUFFLFFBQUEsQ0FBQUwsTUFBQSxDQUFBLFFBQUEsRUFDeEJHLFVBQVUsQ0FBQSxDQUFBO0FBQUEsa0JBQUEsS0FBQSxDQUFBLENBQUE7QUFBQSxrQkFBQSxLQUFBLEtBQUE7b0JBQUEsT0FBQUUsUUFBQSxDQUFBTSxJQUFBLEVBQUEsQ0FBQTtBQUFBLGlCQUFBO0FBQUEsZUFBQSxFQUFBVCxPQUFBLENBQUEsQ0FBQTthQUNsQixDQUFBLENBQUEsQ0FBQTtBQUFBLFlBQUEsT0FBQSxVQUFBVSxHQUFBLEVBQUE7QUFBQSxjQUFBLE9BQUE1RyxLQUFBLENBQUE2RyxLQUFBLENBQUEsSUFBQSxFQUFBbFAsU0FBQSxDQUFBLENBQUE7QUFBQSxhQUFBLENBQUE7V0FBQyxFQUFBLENBQUEsQ0FBQTtBQUFBa08sVUFBQUEsU0FBQSxDQUFBRSxJQUFBLEdBQUEsRUFBQSxDQUFBO0FBQUEsVUFBQSxPQUVJZSxPQUFPLENBQUNDLEdBQUcsQ0FBQ3JCLFlBQVksQ0FBQyxDQUFBO0FBQUEsUUFBQSxLQUFBLEVBQUE7QUFBQUcsVUFBQUEsU0FBQSxDQUFBRSxJQUFBLEdBQUEsRUFBQSxDQUFBO0FBQUEsVUFBQSxNQUFBO0FBQUEsUUFBQSxLQUFBLEVBQUE7QUFBQUYsVUFBQUEsU0FBQSxDQUFBQyxJQUFBLEdBQUEsRUFBQSxDQUFBO1VBQUFELFNBQUEsQ0FBQW1CLEVBQUEsR0FBQW5CLFNBQUEsQ0FBQSxPQUFBLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBQTtVQUUvQnhHLE9BQU8sQ0FBQzRILEtBQUssQ0FBQSw4QkFBQSxDQUFBOVAsTUFBQSxDQUErQnFPLGVBQWUsRUFBQUssS0FBQUEsQ0FBQUEsRUFBQUEsU0FBQSxDQUFBbUIsRUFBVyxDQUFDLENBQUE7QUFBQyxRQUFBLEtBQUEsRUFBQSxDQUFBO0FBQUEsUUFBQSxLQUFBLEtBQUE7VUFBQSxPQUFBbkIsU0FBQSxDQUFBYyxJQUFBLEVBQUEsQ0FBQTtBQUFBLE9BQUE7QUFBQSxLQUFBLEVBQUFwQixRQUFBLEVBQUEsSUFBQSxFQUFBLENBQUEsQ0FBQSxFQUFBLEVBQUEsRUFBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0dBRTNFLENBQUEsQ0FBQSxDQUFBO0VBQUEsT0FuQ1lKLFNBQUFBLGlCQUFpQkEsQ0FBQStCLEVBQUEsRUFBQTtBQUFBLElBQUEsT0FBQTlOLElBQUEsQ0FBQXlOLEtBQUEsQ0FBQSxJQUFBLEVBQUFsUCxTQUFBLENBQUEsQ0FBQTtBQUFBLEdBQUEsQ0FBQTtBQUFBLENBbUM3QixFQUFBOztBQ3ZGRCxJQUFNd1AsWUFBWSxHQUFHLFNBQWZBLFlBQVlBLENBQUlDLEtBQXNCLEVBQUE7RUFDMUMsSUFBSSxPQUFPQSxLQUFLLEtBQUssUUFBUSxJQUFJQSxLQUFLLENBQUNDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNyRCxJQUFBLE9BQU9ELEtBQUssQ0FBQTtBQUNiLEdBQUE7QUFDRCxFQUFBLE9BQU8sRUFBQSxDQUFBalEsTUFBQSxDQUFHaVEsS0FBSyxFQUFBLElBQUEsQ0FBSSxDQUFBO0FBQ3JCLENBQUMsQ0FBQTtBQUVELElBQU1FLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBb0JBLENBQUlDLEVBU2IsRUFBQTtNQVJmbkUsT0FBTyxHQUFBbUUsRUFBQSxDQUFBbkUsT0FBQTtJQUNQb0UsV0FBVyxHQUFBRCxFQUFBLENBQUFDLFdBQUE7SUFDWDdPLENBQUMsR0FBQTRPLEVBQUEsQ0FBQTVPLENBQUE7SUFDREUsQ0FBQyxHQUFBME8sRUFBQSxDQUFBMU8sQ0FBQTtJQUNENE8sWUFBWSxHQUFBRixFQUFBLENBQUFFLFlBQUE7SUFDWkMsV0FBVyxHQUFBSCxFQUFBLENBQUFHLFdBQUE7SUFDWC9OLEdBQUcsR0FBQTROLEVBQUEsQ0FBQTVOLEdBQUE7SUFDSEMsbUJBQW1CLEdBQUEyTixFQUFBLENBQUEzTixtQkFBQSxDQUFBO0FBR25CK04sRUFBQUEsU0FBUyxDQUFDLFlBQUE7SUFDUixJQUFJSCxXQUFXLENBQUM1USxVQUFVLEVBQUU7QUFDMUJ1TyxNQUFBQSxpQkFBaUIsQ0FBQ3FDLFdBQVcsQ0FBQzVRLFVBQVUsQ0FBQyxDQUFBO0FBQzFDLEtBQUE7QUFDSCxHQUFDLEVBQUUsQ0FBQzRRLFdBQVcsQ0FBQzVRLFVBQVUsQ0FBQyxDQUFDLENBQUE7QUFFNUIsRUFBQSxJQUFNeUMsS0FBSyxHQUFHb0ssWUFBWSxDQUFDK0QsV0FBVyxDQUFDLENBQUE7QUFFdkMsRUFBQSxJQUFNSSxjQUFjLEdBQUc3TixPQUFPLENBQUMsWUFBQTtBQUM3QixJQUFBLE9BQUFtSixrQkFBa0IsQ0FBQ3dFLFdBQVcsRUFBRXRFLE9BQU8sQ0FBQyxDQUFBO0FBQXhDLEdBQXdDLEVBQ3hDLENBQUNzRSxXQUFXLEVBQUV0RSxPQUFPLENBQUMsQ0FDdkIsQ0FBQTtBQUVELEVBQUEsT0FDRXlFLEdBQUssQ0FBQSxLQUFBLEVBQUFDLFFBQUEsQ0FBQTtBQUFBek8sSUFBQUEsS0FBSyxFQUFFO0FBQ1ZrRSxNQUFBQSxRQUFRLEVBQUUsVUFBVTtBQUNwQk0sTUFBQUEsR0FBRyxFQUFFLENBQUM7QUFDTkQsTUFBQUEsSUFBSSxFQUFFLENBQUM7QUFDUHZHLE1BQUFBLEtBQUssRUFBRSxNQUFNO0FBQ2IrSyxNQUFBQSxNQUFNLEVBQUUsTUFBTTtBQUNkSyxNQUFBQSxTQUFTLEVBQUUsWUFBQTs7QUFFWCxHQUFBLEVBQUE7QUFBQXNGLElBQUFBLFFBQUEsRUFBQUYsR0FBQSxDQUFBLEtBQUEsRUFBQUMsUUFBQSxDQUFBO0FBQUt6TyxNQUFBQSxLQUFLLEVBQUU7QUFDVmtFLFFBQUFBLFFBQVEsRUFBRSxVQUFVO0FBQ3BCTSxRQUFBQSxHQUFHLEVBQUUsQ0FBQztBQUNORCxRQUFBQSxJQUFJLEVBQUUsQ0FBQztBQUNQdkcsUUFBQUEsS0FBSyxFQUFFLE1BQU07QUFDYitLLFFBQUFBLE1BQU0sRUFBRSxNQUFBO0FBQ1QsT0FBQTtBQUFBLEtBQUEsRUFBQTtBQUFBMkYsTUFBQUEsUUFBQSxFQUNBSCxjQUFjLENBQUNoSCxHQUFHLENBQUMsVUFBQzBDLE1BQU0sRUFBQTtBQUN6QixRQUFBLElBQU0wRSxLQUFLLEdBQUc7VUFDWnRSLElBQUksRUFBRTRNLE1BQU0sQ0FBQzVNLElBQUk7QUFDakIyQyxVQUFBQSxLQUFLLEVBQUFBLEtBQUE7VUFDTEMsY0FBYyxFQUFFa08sV0FBVyxDQUFDbE8sY0FBYztBQUMxQ0MsVUFBQUEsS0FBSyxFQUFFa08sWUFBWTtVQUNuQmpPLFVBQVUsRUFBRWxCLElBQUksQ0FBQ3lDLEtBQUssQ0FBQ3VJLE1BQU0sQ0FBQy9CLEtBQUssR0FBRzVILEdBQUcsQ0FBQztVQUMxQ0YsWUFBWSxFQUFFK04sV0FBVyxDQUFDL04sWUFBWTtVQUN0Q0MsS0FBSyxFQUFFNEosTUFBTSxDQUFDNUosS0FBSztBQUNuQkMsVUFBQUEsR0FBRyxFQUFBQSxHQUFBO0FBQ0hDLFVBQUFBLG1CQUFtQixFQUFBQSxtQkFBQUE7U0FDcEIsQ0FBQTtBQUNELFFBQUEsSUFBTWlFLEdBQUcsR0FBR3NKLFlBQVksQ0FBQ3RPLENBQUMsQ0FBQyxDQUFBO0FBQzNCLFFBQUEsSUFBTStFLElBQUksR0FBR3VKLFlBQVksQ0FBQ3hPLENBQUMsQ0FBQyxDQUFBO0FBRTVCLFFBQUEsT0FDRWtQLEdBRUUsQ0FBQSxLQUFBLEVBQUFDLFFBQUEsQ0FBQTtBQUFBek8sVUFBQUEsS0FBSyxFQUFFO0FBQ0xrRSxZQUFBQSxRQUFRLEVBQUUsVUFBVTtBQUNwQk0sWUFBQUEsR0FBRyxFQUFBQSxHQUFBO0FBQ0hELFlBQUFBLElBQUksRUFBQUEsSUFBQUE7QUFDTCxXQUFBO0FBQUEsU0FBQSxFQUFBO1VBQUFtSyxRQUFBLEVBRURGLElBQUMzTyxZQUFZLEVBQUE0TyxRQUFBLENBQUEsRUFBQSxFQUFLRSxLQUFLLENBQUEsQ0FBQTtZQVBsQixFQUFHLENBQUE3USxNQUFBLENBQUFtTSxNQUFNLENBQUMvQixLQUFLLGNBQUkrQixNQUFNLENBQUNqQyxHQUFHLENBQUUsQ0FRaEMsQ0FBQTtPQUVULENBQUE7QUFBQyxLQUFBLENBQUEsQ0FBQTtBQUVFLEdBQUEsQ0FBQSxDQUFBLENBQUE7QUFFVixDQUFDLENBQUE7SUFDWTRHLFNBQVMsR0FBRyxTQUFaQSxTQUFTQSxDQUFJRCxLQUFxQixFQUFBO0FBQ3JDLEVBQUEsSUFBQTNRLEtBQUssR0FBMkIyUSxLQUFLLE1BQWhDO0lBQUU1RixNQUFNLEdBQW1CNEYsS0FBSyxDQUFBNUYsTUFBeEI7SUFBRXpJLEdBQUcsR0FBY3FPLEtBQUssQ0FBbkJyTyxHQUFBO0lBQUV1TyxPQUFPLEdBQUtGLEtBQUssUUFBVixDQUFBO0FBRW5DLEVBQUEsT0FDRUg7QUFBS3hPLElBQUFBLEtBQUssRUFBRTtBQUFFaEMsTUFBQUEsS0FBSyxFQUFFLE1BQU07QUFBRStLLE1BQUFBLE1BQU0sRUFBRSxNQUFBO0FBQVEsS0FBQTtBQUFBLEdBQUEsRUFBQTtBQUFBMkYsSUFBQUEsUUFBQSxFQUMzQ0YsR0FBQyxDQUFBTSxNQUFNLEVBQ0w7QUFBQUMsTUFBQUEsU0FBUyxFQUFFZCxvQkFBb0I7QUFDL0JlLE1BQUFBLFVBQVUsRUFBQVAsUUFBQSxDQUFBLEVBQUEsRUFDTEUsS0FBSyxDQUFBO0FBRVZNLE1BQUFBLGdCQUFnQixFQUFFLE9BQU87QUFDekJDLE1BQUFBLGdCQUFnQixFQUFFbFIsS0FBSztBQUN2Qm1SLE1BQUFBLGlCQUFpQixFQUFFcEcsTUFBTTtBQUN6QnpJLE1BQUFBLEdBQUcsRUFBRUEsR0FBRyxHQUFHQSxHQUFHLEdBQUcsRUFBRTtBQUNuQk4sTUFBQUEsS0FBSyxFQUFFO0FBQ0xoQyxRQUFBQSxLQUFLLEVBQUUsTUFBTTtBQUNiK0ssUUFBQUEsTUFBTSxFQUFFLE1BQUE7T0FDVDtBQUNEcUcsTUFBQUEsUUFBUSxFQUFFLEtBQUs7QUFDZkMsTUFBQUEsUUFBUSxFQUFFLEtBQUs7QUFDZkMsTUFBQUEsSUFBSSxFQUFFVCxPQUFBQTtLQUVOLENBQUE7QUFBQSxHQUFBLENBQUEsQ0FDRSxDQUFBO0FBRVY7O0FDdEhPLElBQU1VLGNBQWMsR0FBRyxTQUFqQkEsY0FBY0EsQ0FDekJDLGFBQXFCLEVBQ3JCNUwsU0FBc0IsRUFDdEI2TCxTQUFzQixFQUFBO0VBRXRCLE9BQU8vTyxPQUFPLENBQUMsWUFBQTtJQUNiLElBQUk4TyxhQUFhLEtBQUssWUFBWSxFQUFFO01BQ2xDLE9BQUFmLFFBQUEsQ0FBQUEsUUFBQSxDQUFBLEVBQUEsRUFDSzdLLFNBQVMsQ0FBQSxFQUFBO0FBQ1o4TCxRQUFBQSxJQUFJLEVBQUUsWUFBWTtBQUNsQkMsUUFBQUEsZUFBZSxFQUFFLFFBQVE7QUFDekJyUyxRQUFBQSxRQUFRLEVBQUUsSUFBSTtBQUNkQyxRQUFBQSxVQUFVLEVBQUUsT0FBTztBQUNuQnVOLFFBQUFBLFVBQVUsRUFBRSxLQUFLO0FBQ2pCQyxRQUFBQSxTQUFTLEVBQUUsU0FBUztBQUNwQkUsUUFBQUEsUUFBUSxFQUFFLFVBQVU7QUFDcEJ0RyxRQUFBQSxZQUFZLEVBQUUsU0FBUztBQUN2QkMsUUFBQUEsWUFBWSxFQUFFLEdBQUc7QUFDakJ2RyxRQUFBQSxZQUFZLEVBQUUsT0FBTztBQUNyQm9NLFFBQUFBLGFBQWEsRUFBRSxJQUFJO0FBQ25CMUksUUFBQUEsV0FBVyxFQUFFLFNBQVM7QUFDdEJDLFFBQUFBLFVBQVUsRUFBRSxHQUFHO0FBQ2ZDLFFBQUFBLGFBQWEsRUFBRSxHQUFHO0FBQ2xCQyxRQUFBQSxhQUFhLEVBQUUsR0FBRztBQUNsQmlDLFFBQUFBLGVBQWUsRUFBRSxLQUFLO0FBQ3RCa0UsUUFBQUEsa0JBQWtCLEVBQUUsSUFBSTtBQUN4QmxDLFFBQUFBLGNBQWMsRUFBRSxTQUFBO0FBQ2hCLE9BQUEsQ0FBQSxDQUFBO0FBQ0gsS0FBQTtBQUNELElBQUEsT0FBT3NKLFNBQVMsQ0FBQTtHQUNqQixFQUFFLENBQUNELGFBQWEsRUFBRTVMLFNBQVMsRUFBRTZMLFNBQVMsQ0FBQyxDQUFDLENBQUE7QUFDM0M7O0FDL0JPLElBQU1HLG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBbUJBLENBQUlwUSxDQUFDLEVBQUVxUSxRQUFRLEVBQUs7QUFDbEQsRUFBQSxJQUFNekIsWUFBWSxHQUFHMEIsZUFBZSxFQUFFLENBQUE7O0FBRXRDO0FBQ0EsRUFBQSxJQUFNQyxnQkFBZ0IsR0FBR3JQLE9BQU8sQ0FBQyxZQUFNO0FBQUEsSUFBQSxJQUFBc1AsZ0JBQUEsQ0FBQTtBQUNyQyxJQUFBLElBQUksRUFBQ0gsUUFBUSxLQUFBLElBQUEsSUFBUkEsUUFBUSxLQUFBLEtBQUEsQ0FBQSxJQUFBLENBQUFHLGdCQUFBLEdBQVJILFFBQVEsQ0FBRUksTUFBTSxjQUFBRCxnQkFBQSxLQUFBLEtBQUEsQ0FBQSxJQUFoQkEsZ0JBQUEsQ0FBa0J6UixNQUFNLENBQUUsRUFBQTtNQUM3QixPQUFPO0FBQUUyUixRQUFBQSxTQUFTLEVBQUUsQ0FBQTtPQUFHLENBQUE7QUFDekIsS0FBQTtBQUNBLElBQUEsT0FBT0wsUUFBUSxDQUFDSSxNQUFNLENBQUNFLFFBQVEsQ0FDN0IsVUFBQ0MsS0FBSyxFQUFBO0FBQUEsTUFBQSxPQUFLQSxLQUFLLENBQUNsUSxLQUFLLElBQUlrTyxZQUFZLENBQUE7QUFBQSxLQUN4QyxDQUFDLElBQUk7QUFBRThCLE1BQUFBLFNBQVMsRUFBRSxDQUFBO0tBQUcsQ0FBQTtBQUN2QixHQUFDLEVBQUUsQ0FBQzlCLFlBQVksRUFBRXlCLFFBQVEsS0FBQSxJQUFBLElBQVJBLFFBQVEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBUkEsUUFBUSxDQUFFSSxNQUFNLENBQUMsQ0FBQyxDQUFBOztBQUVwQztBQUNBLEVBQUEsSUFBTTNGLFNBQVMsR0FBRzVKLE9BQU8sQ0FBQyxZQUFNO0FBQzlCLElBQUEsSUFBSXFQLGdCQUFnQixDQUFDRyxTQUFTLEtBQUssQ0FBQyxFQUFFO0FBQ3BDLE1BQUEsT0FBTzFRLENBQUMsQ0FBQTtBQUNWLEtBQUE7SUFDQSxJQUFJQSxDQUFDLEtBQUssR0FBRyxFQUFFO0FBQ2IsTUFBQSxPQUFPQSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtBQUNwQixLQUFBO0FBQ0EsSUFBQSxPQUFPQSxDQUFDLENBQUE7R0FDVCxFQUFFLENBQUNBLENBQUMsRUFBRXVRLGdCQUFnQixDQUFDRyxTQUFTLENBQUMsQ0FBQyxDQUFBO0VBRW5DLE9BQU87QUFBRUgsSUFBQUEsZ0JBQWdCLEVBQWhCQSxnQkFBZ0I7QUFBRXpGLElBQUFBLFNBQVMsRUFBVEEsU0FBQUE7R0FBVyxDQUFBO0FBQ3hDOztBQzFCTyxJQUFNK0Ysa0JBQWtCLEdBQUcsU0FBckJBLGtCQUFrQkEsQ0FBSUMsYUFBYSxFQUFFQyxlQUFlLEVBQUVqUSxHQUFHLEVBQXVCO0FBQUEsRUFBQSxJQUFyQmtRLFdBQVcsR0FBQWxTLFNBQUEsQ0FBQUMsTUFBQSxHQUFBLENBQUEsSUFBQUQsU0FBQSxDQUFBLENBQUEsQ0FBQSxLQUFBRSxTQUFBLEdBQUFGLFNBQUEsQ0FBQSxDQUFBLENBQUEsR0FBRyxFQUFFLENBQUE7RUFDdEYsT0FBT29DLE9BQU8sQ0FBQyxZQUFNO0FBQ25CO0lBQ0EsSUFBSSxDQUFDOFAsV0FBVyxJQUFJQSxXQUFXLENBQUNqUyxNQUFNLEtBQUssQ0FBQyxFQUFFO0FBQzVDLE1BQUEsT0FBTyxFQUFFLENBQUE7QUFDWCxLQUFBO0lBRUEsSUFBTWtTLDRCQUE0QixHQUFHLFNBQS9CQSw0QkFBNEJBLENBQUlDLFNBQVMsRUFBRUMsT0FBTyxFQUFLO0FBQzNEO0FBQ0EsTUFBQSxJQUFNQyxRQUFRLEdBQUdOLGFBQWEsQ0FBQzdFLE1BQU0sQ0FBQyxVQUFBaEcsSUFBSSxFQUFBO1FBQUEsT0FDeENBLElBQUksQ0FBQ3lDLEtBQUssSUFBSXdJLFNBQVMsSUFBSWpMLElBQUksQ0FBQ3VDLEdBQUcsSUFBSTJJLE9BQU8sQ0FBQTtBQUFBLE9BQ2hELENBQUMsQ0FBQTtBQUVELE1BQUEsSUFBSUMsUUFBUSxDQUFDclMsTUFBTSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQTs7QUFFcEM7TUFDQSxJQUFNc1MsVUFBVSxHQUFHLEVBQUUsQ0FBQTtBQUNyQixNQUFBLElBQUlDLGFBQWEsR0FBRztBQUNsQnpULFFBQUFBLElBQUksRUFBRSxFQUFFO0FBQ1JnRCxRQUFBQSxLQUFLLEVBQUUsRUFBRTtBQUNUNkgsUUFBQUEsS0FBSyxFQUFFLElBQUk7QUFDWEYsUUFBQUEsR0FBRyxFQUFFLElBQUk7UUFDVCtJLFlBQVksRUFBRSxDQUFDLENBQUM7QUFBRztBQUNuQjlCLFFBQUFBLGdCQUFnQixFQUFFLENBQUE7T0FDbkIsQ0FBQTtBQUVEMkIsTUFBQUEsUUFBUSxDQUFDSSxPQUFPLENBQUMsVUFBQ3ZMLElBQUksRUFBRXdMLFNBQVMsRUFBSztBQUNwQyxRQUFBLElBQU1DLGFBQWEsR0FBR0QsU0FBUyxLQUFLLENBQUMsR0FBR3hMLElBQUksQ0FBQ0EsSUFBSSxPQUFBM0gsTUFBQSxDQUFPMkgsSUFBSSxDQUFDQSxJQUFJLENBQUUsQ0FBQTtRQUNuRSxJQUFNMEwsU0FBUyxHQUFHTCxhQUFhLENBQUN6VCxJQUFJLENBQUNrQixNQUFNLEdBQUcyUyxhQUFhLENBQUMzUyxNQUFNLENBQUE7UUFFbEUsSUFBSTRTLFNBQVMsSUFBSVosZUFBZSxFQUFFO0FBQ2hDO1VBQ0FPLGFBQWEsQ0FBQ3pULElBQUksSUFBSTZULGFBQWEsQ0FBQTtBQUNuQ0osVUFBQUEsYUFBYSxDQUFDelEsS0FBSyxDQUFDdEIsSUFBSSxDQUFDMEcsSUFBSSxDQUFDLENBQUE7QUFDOUJxTCxVQUFBQSxhQUFhLENBQUM1SSxLQUFLLEdBQUc0SSxhQUFhLENBQUM1SSxLQUFLLEtBQUssSUFBSSxHQUFHekMsSUFBSSxDQUFDeUMsS0FBSyxHQUFHNEksYUFBYSxDQUFDNUksS0FBSyxDQUFBO0FBQ3JGNEksVUFBQUEsYUFBYSxDQUFDOUksR0FBRyxHQUFHdkMsSUFBSSxDQUFDdUMsR0FBRyxDQUFBO0FBQzlCLFNBQUMsTUFBTTtBQUNMO0FBQ0EsVUFBQSxJQUFJOEksYUFBYSxDQUFDelEsS0FBSyxDQUFDOUIsTUFBTSxHQUFHLENBQUMsRUFBRTtBQUNsQ3NTLFlBQUFBLFVBQVUsQ0FBQzlSLElBQUksQ0FBQytSLGFBQWEsQ0FBQyxDQUFBO0FBQ2hDLFdBQUE7O0FBRUE7QUFDQUEsVUFBQUEsYUFBYSxHQUFHO1lBQ2R6VCxJQUFJLEVBQUVvSSxJQUFJLENBQUNBLElBQUk7WUFDZnBGLEtBQUssRUFBRSxDQUFDb0YsSUFBSSxDQUFDO1lBQ2J5QyxLQUFLLEVBQUV6QyxJQUFJLENBQUN5QyxLQUFLO1lBQ2pCRixHQUFHLEVBQUV2QyxJQUFJLENBQUN1QyxHQUFHO0FBQ2IrSSxZQUFBQSxZQUFZLEVBQUUsQ0FBQyxDQUFBO1dBQ2hCLENBQUE7QUFDSCxTQUFBO0FBQ0YsT0FBQyxDQUFDLENBQUE7O0FBRUY7QUFDQSxNQUFBLElBQUlELGFBQWEsQ0FBQ3pRLEtBQUssQ0FBQzlCLE1BQU0sR0FBRyxDQUFDLEVBQUU7QUFDbENzUyxRQUFBQSxVQUFVLENBQUM5UixJQUFJLENBQUMrUixhQUFhLENBQUMsQ0FBQTtBQUNoQyxPQUFBOztBQUVBO01BQ0EsSUFBTU0sbUJBQW1CLEdBQUdQLFVBQVUsQ0FBQ3RKLEdBQUcsQ0FBQyxVQUFDMEMsTUFBTSxFQUFFb0gsV0FBVyxFQUFLO1FBQ2xFLElBQU1sUixVQUFVLEdBQUdsQixJQUFJLENBQUN5QyxLQUFLLENBQUN1SSxNQUFNLENBQUMvQixLQUFLLEdBQUc1SCxHQUFHLENBQUMsQ0FBQTtBQUNqRCxRQUFBLElBQUlnUixRQUFRLENBQUE7QUFFWixRQUFBLElBQUlELFdBQVcsR0FBR1IsVUFBVSxDQUFDdFMsTUFBTSxHQUFHLENBQUMsRUFBRTtBQUN2QyxVQUFBLElBQU1nVCxVQUFVLEdBQUdWLFVBQVUsQ0FBQ1EsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFBO1VBQzlDLElBQU1HLFFBQVEsR0FBR0QsVUFBVSxDQUFDckosS0FBSyxHQUFHK0IsTUFBTSxDQUFDakMsR0FBRyxDQUFBO1VBQzlDc0osUUFBUSxHQUFHRSxRQUFRLEdBQUcsR0FBRyxHQUN2QnZTLElBQUksQ0FBQ3lDLEtBQUssQ0FBQ3VJLE1BQU0sQ0FBQ2pDLEdBQUcsR0FBRzFILEdBQUcsQ0FBQyxHQUM1QnJCLElBQUksQ0FBQ3lDLEtBQUssQ0FBQzZQLFVBQVUsQ0FBQ3JKLEtBQUssR0FBRzVILEdBQUcsQ0FBQyxDQUFBO0FBQ3RDLFNBQUMsTUFBTTtVQUNMZ1IsUUFBUSxHQUFHclMsSUFBSSxDQUFDeUMsS0FBSyxDQUFDdUksTUFBTSxDQUFDakMsR0FBRyxHQUFHMUgsR0FBRyxDQUFDLENBQUE7QUFDekMsU0FBQTtBQUVBLFFBQUEsT0FBQXVELGNBQUEsQ0FBQUEsY0FBQSxDQUFBLEVBQUEsRUFDS29HLE1BQU0sQ0FBQSxFQUFBLEVBQUEsRUFBQTtBQUNUOUosVUFBQUEsVUFBVSxFQUFWQSxVQUFVO0FBQ1ZtUixVQUFBQSxRQUFRLEVBQVJBLFFBQVE7QUFDUnJDLFVBQUFBLGdCQUFnQixFQUFFcUMsUUFBUSxHQUFHblIsVUFBVSxHQUFHLENBQUE7QUFBQyxTQUFBLENBQUEsQ0FBQTtBQUUvQyxPQUFDLENBQUMsQ0FBQTtBQUVGLE1BQUEsT0FBT2lSLG1CQUFtQixDQUFBO0tBQzNCLENBQUE7SUFFRCxJQUFNSyxhQUFhLEdBQUcsRUFBRSxDQUFBOztBQUV4QjtJQUNBLElBQUlqQixXQUFXLENBQUNqUyxNQUFNLEdBQUcsQ0FBQyxJQUFJK1IsYUFBYSxDQUFDL1IsTUFBTSxHQUFHLENBQUMsRUFBRTtBQUN0RCxNQUFBLElBQU1tVCxpQkFBaUIsR0FBR2xCLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQ3RJLEtBQUssQ0FBQTtBQUM5QyxNQUFBLElBQU15SixjQUFjLEdBQUcsQ0FBQyxDQUFDO0FBQ3pCLE1BQUEsSUFBTUMsaUJBQWlCLEdBQUduQiw0QkFBNEIsQ0FBQ2tCLGNBQWMsRUFBRUQsaUJBQWlCLENBQUMsQ0FBQTtBQUN6RixNQUFBLElBQUlFLGlCQUFpQixDQUFDclQsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUNoQ2tULGFBQWEsQ0FBQzFTLElBQUksQ0FBQXlPLEtBQUEsQ0FBbEJpRSxhQUFhLEVBQUFJLGtCQUFBLENBQVNELGlCQUFpQixDQUFDLENBQUEsQ0FBQTtBQUMxQyxPQUFBO0FBQ0YsS0FBQTs7QUFFQTtBQUNBcEIsSUFBQUEsV0FBVyxDQUFDUSxPQUFPLENBQUMsVUFBQ2MsT0FBTyxFQUFFZixZQUFZLEVBQUs7QUFDN0M7QUFDQSxNQUFBLElBQU1nQixZQUFZLEdBQUd6QixhQUFhLENBQUM3RSxNQUFNLENBQUMsVUFBQWhHLElBQUksRUFBQTtBQUFBLFFBQUEsT0FBSUEsSUFBSSxDQUFDdU0sU0FBUyxLQUFLakIsWUFBWSxDQUFBO09BQUMsQ0FBQSxDQUFBOztBQUVsRjtBQUNBLE1BQUEsSUFBSWdCLFlBQVksQ0FBQ3hULE1BQU0sR0FBRyxDQUFDLEVBQUU7QUFDM0I7UUFDQSxJQUFNMFQscUJBQXFCLEdBQUcsRUFBRSxDQUFBO0FBQ2hDLFFBQUEsSUFBSW5CLGFBQWEsR0FBRztBQUNsQnpULFVBQUFBLElBQUksRUFBRSxFQUFFO0FBQ1JnRCxVQUFBQSxLQUFLLEVBQUUsRUFBRTtBQUNUNkgsVUFBQUEsS0FBSyxFQUFFLElBQUk7QUFDWEYsVUFBQUEsR0FBRyxFQUFFLElBQUk7QUFDVCtJLFVBQUFBLFlBQVksRUFBWkEsWUFBQUE7U0FDRCxDQUFBO0FBRURnQixRQUFBQSxZQUFZLENBQUNmLE9BQU8sQ0FBQyxVQUFDdkwsSUFBSSxFQUFFd0wsU0FBUyxFQUFLO0FBQ3hDLFVBQUEsSUFBTUMsYUFBYSxHQUFHRCxTQUFTLEtBQUssQ0FBQyxHQUFHeEwsSUFBSSxDQUFDQSxJQUFJLE9BQUEzSCxNQUFBLENBQU8ySCxJQUFJLENBQUNBLElBQUksQ0FBRSxDQUFBO1VBQ25FLElBQU0wTCxTQUFTLEdBQUdMLGFBQWEsQ0FBQ3pULElBQUksQ0FBQ2tCLE1BQU0sR0FBRzJTLGFBQWEsQ0FBQzNTLE1BQU0sQ0FBQTtVQUVsRSxJQUFJNFMsU0FBUyxJQUFJWixlQUFlLEVBQUU7QUFDaEM7WUFDQU8sYUFBYSxDQUFDelQsSUFBSSxJQUFJNlQsYUFBYSxDQUFBO0FBQ25DSixZQUFBQSxhQUFhLENBQUN6USxLQUFLLENBQUN0QixJQUFJLENBQUMwRyxJQUFJLENBQUMsQ0FBQTtBQUM5QnFMLFlBQUFBLGFBQWEsQ0FBQzVJLEtBQUssR0FBRzRJLGFBQWEsQ0FBQzVJLEtBQUssS0FBSyxJQUFJLEdBQUd6QyxJQUFJLENBQUN5QyxLQUFLLEdBQUc0SSxhQUFhLENBQUM1SSxLQUFLLENBQUE7QUFDckY0SSxZQUFBQSxhQUFhLENBQUM5SSxHQUFHLEdBQUd2QyxJQUFJLENBQUN1QyxHQUFHLENBQUE7QUFDOUIsV0FBQyxNQUFNO0FBQ0w7QUFDQSxZQUFBLElBQUk4SSxhQUFhLENBQUN6USxLQUFLLENBQUM5QixNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ2xDMFQsY0FBQUEscUJBQXFCLENBQUNsVCxJQUFJLENBQUMrUixhQUFhLENBQUMsQ0FBQTtBQUMzQyxhQUFBOztBQUVBO0FBQ0FBLFlBQUFBLGFBQWEsR0FBRztjQUNkelQsSUFBSSxFQUFFb0ksSUFBSSxDQUFDQSxJQUFJO2NBQ2ZwRixLQUFLLEVBQUUsQ0FBQ29GLElBQUksQ0FBQztjQUNieUMsS0FBSyxFQUFFekMsSUFBSSxDQUFDeUMsS0FBSztjQUNqQkYsR0FBRyxFQUFFdkMsSUFBSSxDQUFDdUMsR0FBRztBQUNiK0ksY0FBQUEsWUFBWSxFQUFaQSxZQUFBQTthQUNELENBQUE7QUFDSCxXQUFBO0FBQ0YsU0FBQyxDQUFDLENBQUE7O0FBRUY7QUFDQSxRQUFBLElBQUlELGFBQWEsQ0FBQ3pRLEtBQUssQ0FBQzlCLE1BQU0sR0FBRyxDQUFDLEVBQUU7QUFDbEMwVCxVQUFBQSxxQkFBcUIsQ0FBQ2xULElBQUksQ0FBQytSLGFBQWEsQ0FBQyxDQUFBO0FBQzNDLFNBQUE7O0FBRUE7UUFDQSxJQUFNb0IsZ0JBQWdCLEdBQUdELHFCQUFxQixDQUFDMUssR0FBRyxDQUFDLFVBQUMwQyxNQUFNLEVBQUVvSCxXQUFXLEVBQUs7VUFDMUUsSUFBTWxSLFVBQVUsR0FBR2xCLElBQUksQ0FBQ3lDLEtBQUssQ0FBQ3VJLE1BQU0sQ0FBQy9CLEtBQUssR0FBRzVILEdBQUcsQ0FBQyxDQUFBO0FBQ2pELFVBQUEsSUFBSWdSLFFBQVEsQ0FBQTs7QUFFWjtBQUNBLFVBQUEsSUFBSUQsV0FBVyxHQUFHWSxxQkFBcUIsQ0FBQzFULE1BQU0sR0FBRyxDQUFDLEVBQUU7QUFDbEQsWUFBQSxJQUFNZ1QsVUFBVSxHQUFHVSxxQkFBcUIsQ0FBQ1osV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFBO1lBQ3pELElBQU1HLFFBQVEsR0FBR0QsVUFBVSxDQUFDckosS0FBSyxHQUFHK0IsTUFBTSxDQUFDakMsR0FBRyxDQUFBO1lBQzlDc0osUUFBUSxHQUFHRSxRQUFRLEdBQUcsR0FBRyxHQUN2QnZTLElBQUksQ0FBQ3lDLEtBQUssQ0FBQ3VJLE1BQU0sQ0FBQ2pDLEdBQUcsR0FBRzFILEdBQUcsQ0FBQyxHQUM1QnJCLElBQUksQ0FBQ3lDLEtBQUssQ0FBQzZQLFVBQVUsQ0FBQ3JKLEtBQUssR0FBRzVILEdBQUcsQ0FBQyxDQUFBO0FBQ3RDLFdBQUMsTUFBTTtZQUNMZ1IsUUFBUSxHQUFHclMsSUFBSSxDQUFDeUMsS0FBSyxDQUFDdUksTUFBTSxDQUFDakMsR0FBRyxHQUFHMUgsR0FBRyxDQUFDLENBQUE7QUFDekMsV0FBQTs7QUFFQTtBQUNBZ1IsVUFBQUEsUUFBUSxHQUFHclMsSUFBSSxDQUFDa1QsR0FBRyxDQUFDYixRQUFRLEVBQUVyUyxJQUFJLENBQUN5QyxLQUFLLENBQUNvUSxPQUFPLENBQUM5SixHQUFHLEdBQUcxSCxHQUFHLENBQUMsQ0FBQyxDQUFBO0FBRTVELFVBQUEsSUFBTThSLGVBQWUsR0FBQXZPLGNBQUEsQ0FBQUEsY0FBQSxLQUNoQm9HLE1BQU0sQ0FBQSxFQUFBLEVBQUEsRUFBQTtBQUNUOUosWUFBQUEsVUFBVSxFQUFWQSxVQUFVO0FBQ1ZtUixZQUFBQSxRQUFRLEVBQVJBLFFBQVE7QUFDUnJDLFlBQUFBLGdCQUFnQixFQUFFcUMsUUFBUSxHQUFHblIsVUFBVSxHQUFHLENBQUE7V0FDM0MsQ0FBQSxDQUFBO0FBQ0QsVUFBQSxPQUFPaVMsZUFBZSxDQUFBO0FBQ3hCLFNBQUMsQ0FBQyxDQUFBOztBQUVGO1FBQ0FYLGFBQWEsQ0FBQzFTLElBQUksQ0FBQXlPLEtBQUEsQ0FBbEJpRSxhQUFhLEVBQUFJLGtCQUFBLENBQVNLLGdCQUFnQixDQUFDLENBQUEsQ0FBQTtBQUN6QyxPQUFBOztBQUVBO0FBQ0EsTUFBQSxJQUFJbkIsWUFBWSxHQUFHUCxXQUFXLENBQUNqUyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3pDLFFBQUEsSUFBTThULFdBQVcsR0FBRzdCLFdBQVcsQ0FBQ08sWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQ2pELElBQU1GLFVBQVUsR0FBR0osNEJBQTRCLENBQUNxQixPQUFPLENBQUM5SixHQUFHLEVBQUVxSyxXQUFXLENBQUNuSyxLQUFLLENBQUMsQ0FBQTtBQUMvRSxRQUFBLElBQUkySSxVQUFVLENBQUN0UyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1VBQ3pCa1QsYUFBYSxDQUFDMVMsSUFBSSxDQUFBeU8sS0FBQSxDQUFsQmlFLGFBQWEsRUFBQUksa0JBQUEsQ0FBU2hCLFVBQVUsQ0FBQyxDQUFBLENBQUE7QUFDbkMsU0FBQTtBQUNGLE9BQUE7QUFDRixLQUFDLENBQUMsQ0FBQTs7QUFFRjtBQUNBWSxJQUFBQSxhQUFhLENBQUNhLElBQUksQ0FBQyxVQUFDQyxDQUFDLEVBQUUzUCxDQUFDLEVBQUE7QUFBQSxNQUFBLE9BQUsyUCxDQUFDLENBQUNySyxLQUFLLEdBQUd0RixDQUFDLENBQUNzRixLQUFLLENBQUE7S0FBQyxDQUFBLENBQUE7QUFFL0MsSUFBQSxPQUFPdUosYUFBYSxDQUFBO0dBQ3JCLEVBQUUsQ0FBQ25CLGFBQWEsRUFBRUMsZUFBZSxFQUFFalEsR0FBRyxFQUFFa1EsV0FBVyxDQUFDLENBQUMsQ0FBQTtBQUN4RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7IiwieF9nb29nbGVfaWdub3JlTGlzdCI6WzBdfQ==