Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@aws-sdk/middleware-stack

Package Overview
Dependencies
Maintainers
4
Versions
120
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@aws-sdk/middleware-stack - npm Package Compare versions

Comparing version 1.0.0-alpha.2 to 1.0.0-alpha.3

2

build/MiddlewareStack.js

@@ -325,2 +325,2 @@ "use strict";

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlkZGxld2FyZVN0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL01pZGRsZXdhcmVTdGFjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFvQ0E7SUFBQTtRQUNtQixvQkFBZSxHQUEwQyxFQUFFLENBQUM7UUFDNUQsb0JBQWUsR0FFNUIsRUFBRSxDQUFDO1FBQ0MsbUJBQWMsR0FJbEIsRUFBRSxDQUFDO0lBNllULENBQUM7SUFsWEMsNkJBQUcsR0FBSCxVQUNFLFVBQXlDLEVBQ3pDLE9BQStDO1FBQS9DLHdCQUFBLEVBQUEsWUFBK0M7UUFFdkMsSUFBQSxtQkFBSSxFQUFFLGlCQUFtQixFQUFuQix3Q0FBbUIsRUFBRSxtQkFBSSxFQUFFLHFCQUFtQixFQUFuQix3Q0FBbUIsQ0FBYTtRQUN6RSxJQUFNLEtBQUssR0FBbUM7WUFDNUMsSUFBSSxNQUFBO1lBQ0osSUFBSSxNQUFBO1lBQ0osSUFBSSxNQUFBO1lBQ0osUUFBUSxVQUFBO1lBQ1IsVUFBVSxZQUFBO1NBQ1gsQ0FBQztRQUNGLElBQUksSUFBSSxFQUFFO1lBQ1IsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDbkUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBK0IsSUFBSSxNQUFHLENBQUMsQ0FBQzthQUN6RDtZQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO1NBQ25DO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQTJCRCx1Q0FBYSxHQUFiLFVBQ0UsVUFBeUMsRUFDekMsT0FBeUQ7UUFFakQsSUFBQSxpQkFBbUIsRUFBbkIsd0NBQW1CLEVBQUUsbUJBQUksRUFBRSxtQkFBSSxFQUFFLDJCQUFRLEVBQUUsbUNBQVksQ0FBYTtRQUM1RSxJQUFNLEtBQUss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dkIsY0FBdUIsRUFBdkIsSUFBdUIsRUFBRTtZQUE3QyxJQUFNLFVBQVUsU0FBQTtZQUNuQixPQUFPLEdBQUcsVUFBVSxDQUNsQixPQUFxQyxFQUNyQyxPQUFPLENBQ0QsQ0FBQztTQUNWO1FBRUQsT0FBTyxPQUF5QyxDQUFDO0lBQ25ELENBQUM7SUFDSCxzQkFBQztBQUFELENBQUMsQUF0WkQsSUFzWkM7QUF0WlksMENBQWU7QUF3WjVCLElBQU0sV0FBVyxHQUE4QjtJQUM3QyxVQUFVLEVBQUUsQ0FBQztJQUNiLFNBQVMsRUFBRSxDQUFDO0lBQ1osS0FBSyxFQUFFLENBQUM7SUFDUixlQUFlLEVBQUUsQ0FBQztJQUNsQixXQUFXLEVBQUUsQ0FBQztDQUNmLENBQUM7QUFFRixJQUFNLGVBQWUsR0FBa0M7SUFDckQsSUFBSSxFQUFFLENBQUM7SUFDUCxNQUFNLEVBQUUsQ0FBQztJQUNULEdBQUcsRUFBRSxDQUFDO0NBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEluaXRpYWxpemVIYW5kbGVyT3B0aW9ucyxcbiAgQnVpbGRIYW5kbGVyT3B0aW9ucyxcbiAgRmluYWxpemVSZXF1ZXN0SGFuZGxlck9wdGlvbnMsXG4gIE1pZGRsZXdhcmVUeXBlLFxuICBTZXJpYWxpemVNaWRkbGV3YXJlLFxuICBGaW5hbGl6ZVJlcXVlc3RNaWRkbGV3YXJlLFxuICBIYW5kbGVyRXhlY3V0aW9uQ29udGV4dCxcbiAgSGFuZGxlck9wdGlvbnMsXG4gIEluaXRpYWxpemVNaWRkbGV3YXJlLFxuICBNaWRkbGV3YXJlU3RhY2sgYXMgSU1pZGRsZXdhcmVTdGFjayxcbiAgU2VyaWFsaXplSGFuZGxlck9wdGlvbnMsXG4gIFN0ZXAsXG4gIERlc2VyaWFsaXplTWlkZGxld2FyZSxcbiAgRGVzZXJpYWxpemVIYW5kbGVyT3B0aW9ucyxcbiAgRGVzZXJpYWxpemVIYW5kbGVyLFxuICBQbHVnZ2FibGUsXG4gIEJ1aWxkTWlkZGxld2FyZSxcbiAgSGFuZGxlcixcbiAgUHJpb3JpdHksXG4gIEFic29sdXRlTG9jYXRpb24sXG4gIFJlbGF0aXZlTG9jYXRpb25cbn0gZnJvbSBcIkBhd3Mtc2RrL3R5cGVzXCI7XG5pbXBvcnQge1xuICBNaWRkbGV3YXJlRW50cnksXG4gIFJlbGF0aXZlTWlkZGxld2FyZUVudHJ5LFxuICBOb3JtYWxpemVkUmVsYXRpdmVFbnRyeSxcbiAgTmFtZWRNaWRkbGV3YXJlRW50cmllc01hcCxcbiAgTmFtZWRSZWxhdGl2ZUVudHJpZXNNYXAsXG4gIFJlbGF0aXZlTWlkZGxld2FyZUFuY2hvcixcbiAgTm9ybWFsaXppbmdFbnRyeVJlc3VsdFxufSBmcm9tIFwiLi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1pZGRsZXdhcmVTdGFjazxJbnB1dCBleHRlbmRzIG9iamVjdCwgT3V0cHV0IGV4dGVuZHMgb2JqZWN0PlxuICBleHRlbmRzIElNaWRkbGV3YXJlU3RhY2s8SW5wdXQsIE91dHB1dD4ge31cblxuZXhwb3J0IGNsYXNzIE1pZGRsZXdhcmVTdGFjazxJbnB1dCBleHRlbmRzIG9iamVjdCwgT3V0cHV0IGV4dGVuZHMgb2JqZWN0PiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWJzb2x1dGVFbnRyaWVzOiBBcnJheTxNaWRkbGV3YXJlRW50cnk8SW5wdXQsIE91dHB1dD4+ID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVsYXRpdmVFbnRyaWVzOiBBcnJheTxcbiAgICBSZWxhdGl2ZU1pZGRsZXdhcmVFbnRyeTxJbnB1dCwgT3V0cHV0PlxuICA+ID0gW107XG4gIHByaXZhdGUgZW50cmllc05hbWVNYXA6IHtcbiAgICBbbWlkZGxld2FyZU5hbWU6IHN0cmluZ106XG4gICAgICB8IE1pZGRsZXdhcmVFbnRyeTxJbnB1dCwgT3V0cHV0PlxuICAgICAgfCBSZWxhdGl2ZU1pZGRsZXdhcmVFbnRyeTxJbnB1dCwgT3V0cHV0PjtcbiAgfSA9IHt9O1xuXG4gIGFkZChcbiAgICBtaWRkbGV3YXJlOiBJbml0aWFsaXplTWlkZGxld2FyZTxJbnB1dCwgT3V0cHV0PixcbiAgICBvcHRpb25zPzogSW5pdGlhbGl6ZUhhbmRsZXJPcHRpb25zICYgQWJzb2x1dGVMb2NhdGlvblxuICApOiB2b2lkO1xuXG4gIGFkZChcbiAgICBtaWRkbGV3YXJlOiBTZXJpYWxpemVNaWRkbGV3YXJlPElucHV0LCBPdXRwdXQ+LFxuICAgIG9wdGlvbnM6IFNlcmlhbGl6ZUhhbmRsZXJPcHRpb25zICYgQWJzb2x1dGVMb2NhdGlvblxuICApOiB2b2lkO1xuXG4gIGFkZChcbiAgICBtaWRkbGV3YXJlOiBCdWlsZE1pZGRsZXdhcmU8SW5wdXQsIE91dHB1dD4sXG4gICAgb3B0aW9uczogQnVpbGRIYW5kbGVyT3B0aW9ucyAmIEFic29sdXRlTG9jYXRpb25cbiAgKTogdm9pZDtcblxuICBhZGQoXG4gICAgbWlkZGxld2FyZTogRmluYWxpemVSZXF1ZXN0TWlkZGxld2FyZTxJbnB1dCwgT3V0cHV0PixcbiAgICBvcHRpb25zOiBGaW5hbGl6ZVJlcXVlc3RIYW5kbGVyT3B0aW9ucyAmIEFic29sdXRlTG9jYXRpb25cbiAgKTogdm9pZDtcblxuICBhZGQoXG4gICAgbWlkZGxld2FyZTogRGVzZXJpYWxpemVNaWRkbGV3YXJlPElucHV0LCBPdXRwdXQ+LFxuICAgIG9wdGlvbnM6IERlc2VyaWFsaXplSGFuZGxlck9wdGlvbnMgJiBBYnNvbHV0ZUxvY2F0aW9uXG4gICk6IHZvaWQ7XG5cbiAgYWRkKFxuICAgIG1pZGRsZXdhcmU6IE1pZGRsZXdhcmVUeXBlPElucHV0LCBPdXRwdXQ+LFxuICAgIG9wdGlvbnM6IEhhbmRsZXJPcHRpb25zICYgQWJzb2x1dGVMb2NhdGlvbiA9IHt9XG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHsgbmFtZSwgc3RlcCA9IFwiaW5pdGlhbGl6ZVwiLCB0YWdzLCBwcmlvcml0eSA9IFwibm9ybWFsXCIgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgZW50cnk6IE1pZGRsZXdhcmVFbnRyeTxJbnB1dCwgT3V0cHV0PiA9IHtcbiAgICAgIG5hbWUsXG4gICAgICBzdGVwLFxuICAgICAgdGFncyxcbiAgICAgIHByaW9yaXR5LFxuICAgICAgbWlkZGxld2FyZVxuICAgIH07XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5lbnRyaWVzTmFtZU1hcCwgbmFtZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEdXBsaWNhdGVkIG1pZGRsZXdhcmUgbmFtZSAnJHtuYW1lfSdgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZW50cmllc05hbWVNYXBbbmFtZV0gPSBlbnRyeTtcbiAgICB9XG4gICAgdGhpcy5hYnNvbHV0ZUVudHJpZXMucHVzaChlbnRyeSk7XG4gIH1cblxuICBhZGRSZWxhdGl2ZVRvKFxuICAgIG1pZGRsZXdhcmU6IEluaXRpYWxpemVNaWRkbGV3YXJlPElucHV0LCBPdXRwdXQ+LFxuICAgIG9wdGlvbnM6IEluaXRpYWxpemVIYW5kbGVyT3B0aW9ucyAmIFJlbGF0aXZlTG9jYXRpb248SW5wdXQsIE91dHB1dD5cbiAgKTogdm9pZDtcblxuICBhZGRSZWxhdGl2ZVRvKFxuICAgIG1pZGRsZXdhcmU6IFNlcmlhbGl6ZU1pZGRsZXdhcmU8SW5wdXQsIE91dHB1dD4sXG4gICAgb3B0aW9uczogU2VyaWFsaXplSGFuZGxlck9wdGlvbnMgJiBSZWxhdGl2ZUxvY2F0aW9uPElucHV0LCBPdXRwdXQ+XG4gICk6IHZvaWQ7XG5cbiAgYWRkUmVsYXRpdmVUbyhcbiAgICBtaWRkbGV3YXJlOiBCdWlsZE1pZGRsZXdhcmU8SW5wdXQsIE91dHB1dD4sXG4gICAgb3B0aW9uczogQnVpbGRIYW5kbGVyT3B0aW9ucyAmIFJlbGF0aXZlTG9jYXRpb248SW5wdXQsIE91dHB1dD5cbiAgKTogdm9pZDtcblxuICBhZGRSZWxhdGl2ZVRvKFxuICAgIG1pZGRsZXdhcmU6IEZpbmFsaXplUmVxdWVzdE1pZGRsZXdhcmU8SW5wdXQsIE91dHB1dD4sXG4gICAgb3B0aW9uczogRmluYWxpemVSZXF1ZXN0SGFuZGxlck9wdGlvbnMgJiBSZWxhdGl2ZUxvY2F0aW9uPElucHV0LCBPdXRwdXQ+XG4gICk6IHZvaWQ7XG5cbiAgYWRkUmVsYXRpdmVUbyhcbiAgICBtaWRkbGV3YXJlOiBEZXNlcmlhbGl6ZU1pZGRsZXdhcmU8SW5wdXQsIE91dHB1dD4sXG4gICAgb3B0aW9uczogRGVzZXJpYWxpemVIYW5kbGVyT3B0aW9ucyAmIFJlbGF0aXZlTG9jYXRpb248SW5wdXQsIE91dHB1dD5cbiAgKTogdm9pZDtcblxuICBhZGRSZWxhdGl2ZVRvKFxuICAgIG1pZGRsZXdhcmU6IE1pZGRsZXdhcmVUeXBlPElucHV0LCBPdXRwdXQ+LFxuICAgIG9wdGlvbnM6IEhhbmRsZXJPcHRpb25zICYgUmVsYXRpdmVMb2NhdGlvbjxJbnB1dCwgT3V0cHV0PlxuICApOiB2b2lkIHtcbiAgICBjb25zdCB7IHN0ZXAgPSBcImluaXRpYWxpemVcIiwgbmFtZSwgdGFncywgcmVsYXRpb24sIHRvTWlkZGxld2FyZSB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBlbnRyeTogUmVsYXRpdmVNaWRkbGV3YXJlRW50cnk8SW5wdXQsIE91dHB1dD4gPSB7XG4gICAgICBtaWRkbGV3YXJlLFxuICAgICAgc3RlcCxcbiAgICAgIG5hbWUsXG4gICAgICB0YWdzLFxuICAgICAgbmV4dDogcmVsYXRpb24gPT09IFwiYmVmb3JlXCIgPyB0b01pZGRsZXdhcmUgOiB1bmRlZmluZWQsXG4gICAgICBwcmV2OiByZWxhdGlvbiA9PT0gXCJhZnRlclwiID8gdG9NaWRkbGV3YXJlIDogdW5kZWZpbmVkXG4gICAgfTtcbiAgICBpZiAobmFtZSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmVudHJpZXNOYW1lTWFwLCBuYW1lKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZWQgbWlkZGxld2FyZSBuYW1lICcke25hbWV9J2ApO1xuICAgICAgfVxuICAgICAgdGhpcy5lbnRyaWVzTmFtZU1hcFtuYW1lXSA9IGVudHJ5O1xuICAgIH1cbiAgICB0aGlzLnJlbGF0aXZlRW50cmllcy5wdXNoKGVudHJ5KTtcbiAgfVxuXG4gIHByaXZhdGUgc29ydChcbiAgICBlbnRyaWVzOiBBcnJheTxcbiAgICAgIE1pZGRsZXdhcmVFbnRyeTxJbnB1dCwgT3V0cHV0PiB8IE5vcm1hbGl6ZWRSZWxhdGl2ZUVudHJ5PElucHV0LCBPdXRwdXQ+XG4gICAgPlxuICApOiBBcnJheTxcbiAgICBNaWRkbGV3YXJlRW50cnk8SW5wdXQsIE91dHB1dD4gfCBOb3JtYWxpemVkUmVsYXRpdmVFbnRyeTxJbnB1dCwgT3V0cHV0PlxuICA+IHtcbiAgICAvL3JldmVyc2UgYmVmb3JlIHNvcnRpbmcgc28gdGhhdCBtaWRkbGV3YXJlIG9mIHNhbWUgc3RlcCB3aWxsIGV4ZWN1dGUgaW5cbiAgICAvL3RoZSBvcmRlciBvZiBiZWluZyBhZGRlZFxuICAgIHJldHVybiBlbnRyaWVzLnNvcnQoXG4gICAgICAoYSwgYikgPT5cbiAgICAgICAgc3RlcFdlaWdodHNbYi5zdGVwXSAtIHN0ZXBXZWlnaHRzW2Euc3RlcF0gfHxcbiAgICAgICAgcHJpb3JpdHlXZWlnaHRzW2IucHJpb3JpdHkgfHwgXCJub3JtYWxcIl0gLVxuICAgICAgICAgIHByaW9yaXR5V2VpZ2h0c1thLnByaW9yaXR5IHx8IFwibm9ybWFsXCJdXG4gICAgKTtcbiAgfVxuXG4gIGNsb25lKCk6IElNaWRkbGV3YXJlU3RhY2s8SW5wdXQsIE91dHB1dD4ge1xuICAgIGNvbnN0IGNsb25lID0gbmV3IE1pZGRsZXdhcmVTdGFjazxJbnB1dCwgT3V0cHV0PigpO1xuICAgIGNsb25lLmFic29sdXRlRW50cmllcy5wdXNoKC4uLnRoaXMuYWJzb2x1dGVFbnRyaWVzKTtcbiAgICBjbG9uZS5yZWxhdGl2ZUVudHJpZXMucHVzaCguLi50aGlzLnJlbGF0aXZlRW50cmllcyk7XG4gICAgY2xvbmUuZW50cmllc05hbWVNYXAgPSB7IC4uLnRoaXMuZW50cmllc05hbWVNYXAgfTtcbiAgICByZXR1cm4gY2xvbmU7XG4gIH1cblxuICBjb25jYXQ8SW5wdXRUeXBlIGV4dGVuZHMgSW5wdXQsIE91dHB1dFR5cGUgZXh0ZW5kcyBPdXRwdXQ+KFxuICAgIGZyb206IElNaWRkbGV3YXJlU3RhY2s8SW5wdXRUeXBlLCBPdXRwdXRUeXBlPlxuICApOiBNaWRkbGV3YXJlU3RhY2s8SW5wdXRUeXBlLCBPdXRwdXRUeXBlPiB7XG4gICAgY29uc3QgY2xvbmUgPSBuZXcgTWlkZGxld2FyZVN0YWNrPElucHV0VHlwZSwgT3V0cHV0VHlwZT4oKTtcbiAgICBjbG9uZS5lbnRyaWVzTmFtZU1hcCA9IHsgLi4uKHRoaXMuZW50cmllc05hbWVNYXAgYXMgYW55KSB9O1xuICAgIC8vIElNaWRkbGV3YXJlU3RhY2sgaW50ZXJmYWNlIGRvZXNuJ3QgY29udGFpbiBwcml2YXRlIG1lbWJlcnMgdmFyaWFibGVzXG4gICAgLy8gbGlrZSBgZW50cmllc05hbWVNYXBgLCBidXQgaW4gZmFjdCB0aGUgZnVuY3Rpb24gZXhwZWN0cyBgTWlkZGxld2FyZVN0YWNrYFxuICAgIC8vIGNsYXNzIGluc3RhbmNlLiBTbyBoZXJlIHdlIGNhc3QgaXQuXG4gICAgY29uc3QgX2Zyb20gPSBmcm9tIGFzIE1pZGRsZXdhcmVTdGFjazxJbnB1dFR5cGUsIE91dHB1dFR5cGU+O1xuICAgIGZvciAoY29uc3QgbmFtZSBpbiBfZnJvbS5lbnRyaWVzTmFtZU1hcCkge1xuICAgICAgaWYgKGNsb25lLmVudHJpZXNOYW1lTWFwW25hbWVdKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRHVwbGljYXRlZCBtaWRkbGV3YXJlIG5hbWUgJyR7bmFtZX0nYCk7XG4gICAgICB9XG4gICAgICBjbG9uZS5lbnRyaWVzTmFtZU1hcFtuYW1lXSA9IF9mcm9tLmVudHJpZXNOYW1lTWFwW25hbWVdO1xuICAgIH1cbiAgICBjbG9uZS5hYnNvbHV0ZUVudHJpZXMucHVzaChcbiAgICAgIC4uLih0aGlzLmFic29sdXRlRW50cmllcyBhcyBhbnkpLFxuICAgICAgLi4uX2Zyb20uYWJzb2x1dGVFbnRyaWVzXG4gICAgKTtcbiAgICBjbG9uZS5yZWxhdGl2ZUVudHJpZXMucHVzaChcbiAgICAgIC4uLih0aGlzLnJlbGF0aXZlRW50cmllcyBhcyBhbnkpLFxuICAgICAgLi4uX2Zyb20ucmVsYXRpdmVFbnRyaWVzXG4gICAgKTtcbiAgICByZXR1cm4gY2xvbmU7XG4gIH1cblxuICByZW1vdmUodG9SZW1vdmU6IE1pZGRsZXdhcmVUeXBlPElucHV0LCBPdXRwdXQ+IHwgc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGVvZiB0b1JlbW92ZSA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIHRoaXMucmVtb3ZlQnlOYW1lKHRvUmVtb3ZlKTtcbiAgICBlbHNlIHJldHVybiB0aGlzLnJlbW92ZUJ5UmVmZXJlbmNlKHRvUmVtb3ZlKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlQnlOYW1lKHRvUmVtb3ZlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBmb3IgKGxldCBpID0gdGhpcy5hYnNvbHV0ZUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5hYnNvbHV0ZUVudHJpZXNbaV0ubmFtZSAmJlxuICAgICAgICB0aGlzLmFic29sdXRlRW50cmllc1tpXS5uYW1lID09PSB0b1JlbW92ZVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuYWJzb2x1dGVFbnRyaWVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgZGVsZXRlIHRoaXMuZW50cmllc05hbWVNYXBbdG9SZW1vdmVdO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IHRoaXMucmVsYXRpdmVFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMucmVsYXRpdmVFbnRyaWVzW2ldLm5hbWUgJiZcbiAgICAgICAgdGhpcy5yZWxhdGl2ZUVudHJpZXNbaV0ubmFtZSA9PT0gdG9SZW1vdmVcbiAgICAgICkge1xuICAgICAgICB0aGlzLnJlbGF0aXZlRW50cmllcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmVudHJpZXNOYW1lTWFwW3RvUmVtb3ZlXTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlQnlSZWZlcmVuY2UodG9SZW1vdmU6IE1pZGRsZXdhcmVUeXBlPElucHV0LCBPdXRwdXQ+KTogYm9vbGVhbiB7XG4gICAgZm9yIChsZXQgaSA9IHRoaXMuYWJzb2x1dGVFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAodGhpcy5hYnNvbHV0ZUVudHJpZXNbaV0ubWlkZGxld2FyZSA9PT0gdG9SZW1vdmUpIHtcbiAgICAgICAgY29uc3QgeyBuYW1lIH0gPSB0aGlzLmFic29sdXRlRW50cmllc1tpXTtcbiAgICAgICAgaWYgKG5hbWUpIGRlbGV0ZSB0aGlzLmVudHJpZXNOYW1lTWFwW25hbWVdO1xuICAgICAgICB0aGlzLmFic29sdXRlRW50cmllcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGxldCBpID0gdGhpcy5yZWxhdGl2ZUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGlmICh0aGlzLnJlbGF0aXZlRW50cmllc1tpXS5taWRkbGV3YXJlID09PSB0b1JlbW92ZSkge1xuICAgICAgICBjb25zdCB7IG5hbWUgfSA9IHRoaXMucmVsYXRpdmVFbnRyaWVzW2ldO1xuICAgICAgICBpZiAobmFtZSkgZGVsZXRlIHRoaXMuZW50cmllc05hbWVNYXBbbmFtZV07XG4gICAgICAgIHRoaXMucmVsYXRpdmVFbnRyaWVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJlbW92ZUJ5VGFnKHRvUmVtb3ZlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsZXQgcmVtb3ZlZCA9IGZhbHNlO1xuICAgIGZvciAobGV0IGkgPSB0aGlzLmFic29sdXRlRW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgY29uc3QgeyB0YWdzLCBuYW1lIH0gPSB0aGlzLmFic29sdXRlRW50cmllc1tpXTtcbiAgICAgIGlmICh0YWdzICYmIHRhZ3MuaW5kZXhPZih0b1JlbW92ZSkgPiAtMSkge1xuICAgICAgICB0aGlzLmFic29sdXRlRW50cmllcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGlmIChuYW1lKSBkZWxldGUgdGhpcy5lbnRyaWVzTmFtZU1hcFtuYW1lXTtcbiAgICAgICAgcmVtb3ZlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSB0aGlzLnJlbGF0aXZlRW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgY29uc3QgeyB0YWdzLCBuYW1lIH0gPSB0aGlzLnJlbGF0aXZlRW50cmllc1tpXTtcbiAgICAgIGlmICh0YWdzICYmIHRhZ3MuaW5kZXhPZih0b1JlbW92ZSkgPiAtMSkge1xuICAgICAgICB0aGlzLnJlbGF0aXZlRW50cmllcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGlmIChuYW1lKSBkZWxldGUgdGhpcy5lbnRyaWVzTmFtZU1hcFtuYW1lXTtcbiAgICAgICAgcmVtb3ZlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZW1vdmVkO1xuICB9XG5cbiAgdXNlKHBsdWdpbjogUGx1Z2dhYmxlPElucHV0LCBPdXRwdXQ+KSB7XG4gICAgcGx1Z2luLmFwcGx5VG9TdGFjayh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlIHJlbGF0aXZlIG1pZGRsZXdhcmUgZW50cmllcyB0byBtdWx0aXBsZSBkb3VibGUgbGlua2VkIGxpc3RzXG4gICAqIGRlcGljdGluZyB0aGUgcmVsYXRpdmUgbG9jYXRpb24gb2YgbWlkZGxld2FyZS4gT25seSBtaWRkbGV3YXJlIHRoYXQgaGF2ZVxuICAgKiBkaXJlY3Qgb3IgdHJhbnNpdGl2ZSByZWxhdGlvbiB3aWxsIGZvcm0gYSBsaW5rZWQgbGlzdC5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBub3JtYWxpemVzIHJlbGF0aXZlIG1pZGRsZXdhcmUgaW50byAyIGNhdGVnb3JpZXMgb2YgbGlua2VkXG4gICAqIGxpc3RzLiAoMSkgbGlua2VkIGxpc3QgdGhhdCBoYXZlIGFic29sdXRlLWxvY2F0ZWQgbWlkZGxld2FyZSBvbiBvbmUgZW5kLlxuICAgKiBUaGVzZSBtaWRkbGV3YXJlIHdpbGwgYmUgcmVzb2x2ZWQgYWNjb3JkaW5nbHkgYmVmb3JlIG9yIGFmdGVyIHRoZSBhYnNvbHV0ZS1cbiAgICogbG9jYXRlZCBtaWRkbGV3YXJlLiAoMikgTGlua2VkIGxpc3QgdGhhdCBoYXZlIG5vIGFic29sdXRlLWxvY2F0ZWQgbWlkZGxld2FyZVxuICAgKiBvbiBhbnkgZW5kLiBUaGV5IHdpbGwgYmUgcmVzb2x2ZWQgdG8gY29ycmVzcG9uZGluZyBzdGVwIHdpdGggbm9ybWFsIHByaW9yaXR5XG4gICAqXG4gICAqIFRoZSAyIHR5cGVzIG9mIGxpbmtlZCBsaXN0IHdpbGwgcmV0dXJuIGFzIGEgdHVwbGVcbiAgICovXG4gIHByaXZhdGUgbm9ybWFsaXplUmVsYXRpdmVFbnRyaWVzKCk6IE5vcm1hbGl6aW5nRW50cnlSZXN1bHQ8SW5wdXQsIE91dHB1dD4ge1xuICAgIGNvbnN0IGFic29sdXRlTWlkZGxld2FyZU5hbWVzTWFwID0gdGhpcy5hYnNvbHV0ZUVudHJpZXNcbiAgICAgIC5maWx0ZXIoZW50cnkgPT4gZW50cnkubmFtZSlcbiAgICAgIC5yZWR1Y2UoXG4gICAgICAgIChhY2N1bXVsYXRvciwgZW50cnkpID0+IHtcbiAgICAgICAgICBhY2N1bXVsYXRvcltlbnRyeS5uYW1lIV0gPSBlbnRyeTtcbiAgICAgICAgICByZXR1cm4gYWNjdW11bGF0b3I7XG4gICAgICAgIH0sXG4gICAgICAgIHt9IGFzIE5hbWVkTWlkZGxld2FyZUVudHJpZXNNYXA8SW5wdXQsIE91dHB1dD5cbiAgICAgICk7XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHRoaXMucmVsYXRpdmVFbnRyaWVzLm1hcChcbiAgICAgIGVudHJ5ID0+XG4gICAgICAgICh7XG4gICAgICAgICAgLi4uZW50cnksXG4gICAgICAgICAgcHJpb3JpdHk6IG51bGwsXG4gICAgICAgICAgbmV4dDogdW5kZWZpbmVkLFxuICAgICAgICAgIHByZXY6IHVuZGVmaW5lZFxuICAgICAgICB9IGFzIE5vcm1hbGl6ZWRSZWxhdGl2ZUVudHJ5PElucHV0LCBPdXRwdXQ+KVxuICAgICk7XG4gICAgY29uc3QgcmVsYXRpdmVNaWRkbGV3YXJlTmFtZXNNYXAgPSBub3JtYWxpemVkXG4gICAgICAuZmlsdGVyKGVudHJ5ID0+IGVudHJ5Lm5hbWUpXG4gICAgICAucmVkdWNlKFxuICAgICAgICAoYWNjdW11bGF0b3IsIGVudHJ5KSA9PiB7XG4gICAgICAgICAgYWNjdW11bGF0b3JbZW50cnkubmFtZSFdID0gZW50cnk7XG4gICAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgICAgICB9LFxuICAgICAgICB7fSBhcyBOYW1lZFJlbGF0aXZlRW50cmllc01hcDxJbnB1dCwgT3V0cHV0PlxuICAgICAgKTtcblxuICAgIGNvbnN0IGFuY2hvcnM6IFJlbGF0aXZlTWlkZGxld2FyZUFuY2hvcjxJbnB1dCwgT3V0cHV0PiA9IHt9O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yZWxhdGl2ZUVudHJpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHsgcHJldiwgbmV4dCB9ID0gdGhpcy5yZWxhdGl2ZUVudHJpZXNbaV07XG4gICAgICBjb25zdCByZXNvbHZlZEN1cnIgPSBub3JtYWxpemVkW2ldO1xuICAgICAgLy9laXRoZXIgcHJldiBvciBuZXh0IGlzIHNldFxuICAgICAgaWYgKHByZXYpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGFic29sdXRlTWlkZGxld2FyZU5hbWVzTWFwW3ByZXZdICYmXG4gICAgICAgICAgYWJzb2x1dGVNaWRkbGV3YXJlTmFtZXNNYXBbcHJldl0uc3RlcCA9PT0gcmVzb2x2ZWRDdXJyLnN0ZXBcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKCFhbmNob3JzW3ByZXZdKSBhbmNob3JzW3ByZXZdID0ge307XG4gICAgICAgICAgcmVzb2x2ZWRDdXJyLm5leHQgPSBhbmNob3JzW3ByZXZdLm5leHQ7XG4gICAgICAgICAgaWYgKGFuY2hvcnNbcHJldl0ubmV4dCkgYW5jaG9yc1twcmV2XS5uZXh0IS5wcmV2ID0gcmVzb2x2ZWRDdXJyO1xuICAgICAgICAgIGFuY2hvcnNbcHJldl0ubmV4dCA9IHJlc29sdmVkQ3VycjtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICByZWxhdGl2ZU1pZGRsZXdhcmVOYW1lc01hcFtwcmV2XSAmJlxuICAgICAgICAgIHJlbGF0aXZlTWlkZGxld2FyZU5hbWVzTWFwW3ByZXZdLnN0ZXAgPT09IHJlc29sdmVkQ3Vyci5zdGVwXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IHJlc29sdmVkUHJldiA9IHJlbGF0aXZlTWlkZGxld2FyZU5hbWVzTWFwW3ByZXZdO1xuICAgICAgICAgIGlmIChyZXNvbHZlZFByZXYubmV4dCA9PT0gcmVzb2x2ZWRDdXJyKSBjb250aW51ZTtcbiAgICAgICAgICByZXNvbHZlZEN1cnIubmV4dCA9IHJlc29sdmVkUHJldi5uZXh0O1xuICAgICAgICAgIHJlc29sdmVkUHJldi5uZXh0ID0gcmVzb2x2ZWRDdXJyO1xuICAgICAgICAgIGlmIChyZXNvbHZlZEN1cnIubmV4dCkgcmVzb2x2ZWRDdXJyLm5leHQucHJldiA9IHJlc29sdmVkQ3VycjtcbiAgICAgICAgICByZXNvbHZlZEN1cnIucHJldiA9IHJlc29sdmVkUHJldjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChuZXh0KSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBhYnNvbHV0ZU1pZGRsZXdhcmVOYW1lc01hcFtuZXh0XSAmJlxuICAgICAgICAgIGFic29sdXRlTWlkZGxld2FyZU5hbWVzTWFwW25leHRdLnN0ZXAgPT09IHJlc29sdmVkQ3Vyci5zdGVwXG4gICAgICAgICkge1xuICAgICAgICAgIGlmICghYW5jaG9yc1tuZXh0XSkgYW5jaG9yc1tuZXh0XSA9IHt9O1xuICAgICAgICAgIHJlc29sdmVkQ3Vyci5wcmV2ID0gYW5jaG9yc1tuZXh0XS5wcmV2O1xuICAgICAgICAgIGlmIChhbmNob3JzW25leHRdLnByZXYpIGFuY2hvcnNbbmV4dF0ucHJldiEubmV4dCA9IHJlc29sdmVkQ3VycjtcbiAgICAgICAgICBhbmNob3JzW25leHRdLnByZXYgPSByZXNvbHZlZEN1cnI7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgcmVsYXRpdmVNaWRkbGV3YXJlTmFtZXNNYXBbbmV4dF0gJiZcbiAgICAgICAgICByZWxhdGl2ZU1pZGRsZXdhcmVOYW1lc01hcFtuZXh0XS5zdGVwID09PSByZXNvbHZlZEN1cnIuc3RlcFxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCByZXNvbHZlZE5leHQgPSByZWxhdGl2ZU1pZGRsZXdhcmVOYW1lc01hcFtuZXh0XTtcbiAgICAgICAgICBpZiAocmVzb2x2ZWROZXh0LnByZXYgPT09IHJlc29sdmVkQ3VycikgY29udGludWU7XG4gICAgICAgICAgcmVzb2x2ZWRDdXJyLnByZXYgPSByZXNvbHZlZE5leHQucHJldjtcbiAgICAgICAgICByZXNvbHZlZE5leHQucHJldiA9IHJlc29sdmVkQ3VycjtcbiAgICAgICAgICBpZiAocmVzb2x2ZWRDdXJyLnByZXYpIHJlc29sdmVkQ3Vyci5wcmV2Lm5leHQgPSByZXNvbHZlZEN1cnI7XG4gICAgICAgICAgcmVzb2x2ZWRDdXJyLm5leHQgPSByZXNvbHZlZE5leHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gZ2V0IHRoZSBoZWFkIG9mIHRoZSByZWxhdGl2ZSBtaWRkbGV3YXJlIGxpbmtlZCBsaXN0IHRoYXQgaGF2ZVxuICAgIC8vIG5vIHRyYW5zaXRpdmUgcmVsYXRpb24gdG8gYWJzb2x1dGUgbWlkZGxld2FyZS5cbiAgICBjb25zdCBvcnBoYW5lZFJlbGF0aXZlRW50cmllczogQXJyYXk8XG4gICAgICBOb3JtYWxpemVkUmVsYXRpdmVFbnRyeTxJbnB1dCwgT3V0cHV0PlxuICAgID4gPSBbXTtcbiAgICBjb25zdCB2aXNpdGVkOiBXZWFrU2V0PFxuICAgICAgTm9ybWFsaXplZFJlbGF0aXZlRW50cnk8SW5wdXQsIE91dHB1dD5cbiAgICA+ID0gbmV3IFdlYWtTZXQoKTtcbiAgICBmb3IgKGNvbnN0IGFuY2hvck5hbWUgb2YgT2JqZWN0LmtleXMoYW5jaG9ycykpIHtcbiAgICAgIGxldCB7IHByZXYsIG5leHQgfSA9IGFuY2hvcnNbYW5jaG9yTmFtZV07XG4gICAgICB3aGlsZSAocHJldikge1xuICAgICAgICB2aXNpdGVkLmFkZChwcmV2KTtcbiAgICAgICAgcHJldiA9IHByZXYucHJldjtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChuZXh0KSB7XG4gICAgICAgIHZpc2l0ZWQuYWRkKG5leHQpO1xuICAgICAgICBuZXh0ID0gbmV4dC5uZXh0O1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vcm1hbGl6ZWQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBlbnRyeTogTm9ybWFsaXplZFJlbGF0aXZlRW50cnk8SW5wdXQsIE91dHB1dD4gfCB1bmRlZmluZWQgPVxuICAgICAgICBub3JtYWxpemVkW2ldO1xuICAgICAgaWYgKHZpc2l0ZWQuaGFzKGVudHJ5KSkgY29udGludWU7XG4gICAgICBpZiAoIWVudHJ5LnByZXYpIG9ycGhhbmVkUmVsYXRpdmVFbnRyaWVzLnB1c2goZW50cnkpO1xuICAgICAgd2hpbGUgKGVudHJ5ICYmICF2aXNpdGVkLmhhcyhlbnRyeSkpIHtcbiAgICAgICAgdmlzaXRlZC5hZGQoZW50cnkpO1xuICAgICAgICBlbnRyeSA9IGVudHJ5Lm5leHQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbb3JwaGFuZWRSZWxhdGl2ZUVudHJpZXMsIGFuY2hvcnNdO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIGZpbmFsIGxpc3Qgb2YgbWlkZGxld2FyZSBpbiB0aGUgb3JkZXIgb2YgYmVpbmcgZXhlY3V0ZWQgaW4gdGhlIHJlc29sdmVkIGhhbmRsZXIuXG4gICAqIElmIHJlbGF0aXZlIGVudHJpZXMgbGlzdCBpcyBub3QgZW1wdHksIHRob3NlIGVudHJpZXMgd2lsbCBiZSBhZGRlZCB0byBmaW5hbCBtaWRkbGV3YXJlXG4gICAqIGxpc3Qgd2l0aCBydWxlcyBiZWxvdzpcbiAgICogMS4gaWYgYHRvTWlkZGxld2FyZWAgZXhpc3RzIGluIHRoZSBzcGVjaWZpYyBgc3RlcGAsIHRoZSBtaWRkbGV3YXJlIHdpbGwgYmUgaW5zZXJ0ZWQgYmVmb3JlXG4gICAqICAgICBvciBhZnRlciB0aGUgc3BlY2lmaWVkIGB0b01pZGRsZXdhcmVgXG4gICAqIDIuIGlmIGB0b01pZGRsZXdhcmVgIGRvZXNuJ3QgZXhpc3QgaW4gdGhlIHNwZWNpZmljIGBzdGVwYCwgdGhlIG1pZGRsZXdhcmUgd2lsbCBiZSBhcHBlbmRlZFxuICAgKiAgICAgdG8gc3BlY2lmaWMgYHN0ZXBgIHdpdGggcHJpb3JpdHkgb2YgYG5vcm1hbGBcbiAgICovXG4gIHByaXZhdGUgZ2VNaWRkbGV3YXJlTGlzdCgpOiBBcnJheTxNaWRkbGV3YXJlVHlwZTxJbnB1dCwgT3V0cHV0Pj4ge1xuICAgIGxldCBtaWRkbGV3YXJlTGlzdDogQXJyYXk8TWlkZGxld2FyZVR5cGU8SW5wdXQsIE91dHB1dD4+ID0gW107XG4gICAgY29uc3QgW29ycGhhbmVkUmVsYXRpdmVFbnRyaWVzLCBhbmNob3JzXSA9IHRoaXMubm9ybWFsaXplUmVsYXRpdmVFbnRyaWVzKCk7XG4gICAgbGV0IGVudHJ5TGlzdCA9IFsuLi50aGlzLmFic29sdXRlRW50cmllcywgLi4ub3JwaGFuZWRSZWxhdGl2ZUVudHJpZXNdO1xuICAgIGVudHJ5TGlzdCA9IHRoaXMuc29ydChlbnRyeUxpc3QpO1xuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cnlMaXN0KSB7XG4gICAgICBjb25zdCBkZWZhdWx0QW5jaG9yVmFsdWUgPSB7IHByZXY6IHVuZGVmaW5lZCwgbmV4dDogdW5kZWZpbmVkIH07XG4gICAgICBjb25zdCB7IHByZXYsIG5leHQgfSA9IGVudHJ5Lm5hbWVcbiAgICAgICAgPyBhbmNob3JzW2VudHJ5Lm5hbWVdIHx8IGRlZmF1bHRBbmNob3JWYWx1ZVxuICAgICAgICA6IGRlZmF1bHRBbmNob3JWYWx1ZTtcbiAgICAgIGxldCByZWxhdGl2ZUVudHJ5ID0gcHJldjtcbiAgICAgIC8vcmV2ZXJzZSByZWxhdGl2ZSBlbnRyeSBsaW5rZWQgbGlzdCBhbmQgYWRkIHRvIG9yZGVyZWQgaGFuZGxlciBsaXN0XG4gICAgICB3aGlsZSAocmVsYXRpdmVFbnRyeSAmJiByZWxhdGl2ZUVudHJ5LnByZXYpIHtcbiAgICAgICAgcmVsYXRpdmVFbnRyeSA9IHJlbGF0aXZlRW50cnkucHJldjtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChyZWxhdGl2ZUVudHJ5KSB7XG4gICAgICAgIG1pZGRsZXdhcmVMaXN0LnB1c2gocmVsYXRpdmVFbnRyeS5taWRkbGV3YXJlKTtcbiAgICAgICAgcmVsYXRpdmVFbnRyeSA9IHJlbGF0aXZlRW50cnkubmV4dDtcbiAgICAgIH1cbiAgICAgIG1pZGRsZXdhcmVMaXN0LnB1c2goZW50cnkubWlkZGxld2FyZSk7XG4gICAgICBsZXQgb3JwaGFuZWRFbnRyeSA9IGVudHJ5IGFzIGFueTtcbiAgICAgIHdoaWxlICgob3JwaGFuZWRFbnRyeSBhcyBhbnkpLm5leHQpIHtcbiAgICAgICAgbWlkZGxld2FyZUxpc3QucHVzaCgob3JwaGFuZWRFbnRyeSBhcyBhbnkpLm5leHQubWlkZGxld2FyZSk7XG4gICAgICAgIG9ycGhhbmVkRW50cnkgPSAob3JwaGFuZWRFbnRyeSBhcyBhbnkpLm5leHQ7XG4gICAgICB9XG4gICAgICByZWxhdGl2ZUVudHJ5ID0gbmV4dDtcbiAgICAgIHdoaWxlIChyZWxhdGl2ZUVudHJ5KSB7XG4gICAgICAgIG1pZGRsZXdhcmVMaXN0LnB1c2gocmVsYXRpdmVFbnRyeS5taWRkbGV3YXJlKTtcbiAgICAgICAgcmVsYXRpdmVFbnRyeSA9IHJlbGF0aXZlRW50cnkubmV4dDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1pZGRsZXdhcmVMaXN0LnJldmVyc2UoKTtcbiAgfVxuXG4gIHJlc29sdmU8SW5wdXRUeXBlIGV4dGVuZHMgSW5wdXQsIE91dHB1dFR5cGUgZXh0ZW5kcyBPdXRwdXQ+KFxuICAgIGhhbmRsZXI6IERlc2VyaWFsaXplSGFuZGxlcjxJbnB1dFR5cGUsIE91dHB1dFR5cGU+LFxuICAgIGNvbnRleHQ6IEhhbmRsZXJFeGVjdXRpb25Db250ZXh0XG4gICk6IEhhbmRsZXI8SW5wdXRUeXBlLCBPdXRwdXRUeXBlPiB7XG4gICAgZm9yIChjb25zdCBtaWRkbGV3YXJlIG9mIHRoaXMuZ2VNaWRkbGV3YXJlTGlzdCgpKSB7XG4gICAgICBoYW5kbGVyID0gbWlkZGxld2FyZShcbiAgICAgICAgaGFuZGxlciBhcyBIYW5kbGVyPElucHV0LCBPdXRwdXRUeXBlPixcbiAgICAgICAgY29udGV4dFxuICAgICAgKSBhcyBhbnk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhbmRsZXIgYXMgSGFuZGxlcjxJbnB1dFR5cGUsIE91dHB1dFR5cGU+O1xuICB9XG59XG5cbmNvbnN0IHN0ZXBXZWlnaHRzOiB7IFtrZXkgaW4gU3RlcF06IG51bWJlciB9ID0ge1xuICBpbml0aWFsaXplOiA1LFxuICBzZXJpYWxpemU6IDQsXG4gIGJ1aWxkOiAzLFxuICBmaW5hbGl6ZVJlcXVlc3Q6IDIsXG4gIGRlc2VyaWFsaXplOiAxXG59O1xuXG5jb25zdCBwcmlvcml0eVdlaWdodHM6IHsgW2tleSBpbiBQcmlvcml0eV06IG51bWJlciB9ID0ge1xuICBoaWdoOiAzLFxuICBub3JtYWw6IDIsXG4gIGxvdzogMVxufTtcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlkZGxld2FyZVN0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL01pZGRsZXdhcmVTdGFjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFvQ0E7SUFBQTtRQUNtQixvQkFBZSxHQUEwQyxFQUFFLENBQUM7UUFDNUQsb0JBQWUsR0FFNUIsRUFBRSxDQUFDO1FBQ0MsbUJBQWMsR0FJbEIsRUFBRSxDQUFDO0lBeVlULENBQUM7SUE5V0MsNkJBQUcsR0FBSCxVQUNFLFVBQXlDLEVBQ3pDLE9BQStDO1FBQS9DLHdCQUFBLEVBQUEsWUFBK0M7UUFFdkMsSUFBQSxtQkFBSSxFQUFFLGlCQUFtQixFQUFuQix3Q0FBbUIsRUFBRSxtQkFBSSxFQUFFLHFCQUFtQixFQUFuQix3Q0FBbUIsQ0FBYTtRQUN6RSxJQUFNLEtBQUssR0FBbUM7WUFDNUMsSUFBSSxNQUFBO1lBQ0osSUFBSSxNQUFBO1lBQ0osSUFBSSxNQUFBO1lBQ0osUUFBUSxVQUFBO1lBQ1IsVUFBVSxZQUFBO1NBQ1gsQ0FBQztRQUNGLElBQUksSUFBSSxFQUFFO1lBQ1IsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDbkUsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBK0IsSUFBSSxNQUFHLENBQUMsQ0FBQzthQUN6RDtZQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO1NBQ25DO1FBQ0QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQTJCRCx1Q0FBYSxHQUFiLFVBQ0UsVUFBeUMsRUFDekMsT0FBeUQ7UUFFakQsSUFBQSxpQkFBbUIsRUFBbkIsd0NBQW1CLEVBQUUsbUJBQUksRUFBRSxtQkFBSSxFQUFFLDJCQUFRLEVBQUUsbUNBQVksQ0FBYTtRQUM1RSxJQUFNLEtBQUss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dkIsY0FBdUIsRUFBdkIsSUFBdUIsRUFBRTtZQUE3QyxJQUFNLFVBQVUsU0FBQTtZQUNuQixPQUFPLEdBQUcsVUFBVSxDQUNsQixPQUFxQyxFQUNyQyxPQUFPLENBQ0QsQ0FBQztTQUNWO1FBRUQsT0FBTyxPQUF5QyxDQUFDO0lBQ25ELENBQUM7SUFDSCxzQkFBQztBQUFELENBQUMsQUFsWkQsSUFrWkM7QUFsWlksMENBQWU7QUFvWjVCLElBQU0sV0FBVyxHQUE4QjtJQUM3QyxVQUFVLEVBQUUsQ0FBQztJQUNiLFNBQVMsRUFBRSxDQUFDO0lBQ1osS0FBSyxFQUFFLENBQUM7SUFDUixlQUFlLEVBQUUsQ0FBQztJQUNsQixXQUFXLEVBQUUsQ0FBQztDQUNmLENBQUM7QUFFRixJQUFNLGVBQWUsR0FBa0M7SUFDckQsSUFBSSxFQUFFLENBQUM7SUFDUCxNQUFNLEVBQUUsQ0FBQztJQUNULEdBQUcsRUFBRSxDQUFDO0NBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEluaXRpYWxpemVIYW5kbGVyT3B0aW9ucyxcbiAgQnVpbGRIYW5kbGVyT3B0aW9ucyxcbiAgRmluYWxpemVSZXF1ZXN0SGFuZGxlck9wdGlvbnMsXG4gIE1pZGRsZXdhcmVUeXBlLFxuICBTZXJpYWxpemVNaWRkbGV3YXJlLFxuICBGaW5hbGl6ZVJlcXVlc3RNaWRkbGV3YXJlLFxuICBIYW5kbGVyRXhlY3V0aW9uQ29udGV4dCxcbiAgSGFuZGxlck9wdGlvbnMsXG4gIEluaXRpYWxpemVNaWRkbGV3YXJlLFxuICBNaWRkbGV3YXJlU3RhY2sgYXMgSU1pZGRsZXdhcmVTdGFjayxcbiAgU2VyaWFsaXplSGFuZGxlck9wdGlvbnMsXG4gIFN0ZXAsXG4gIERlc2VyaWFsaXplTWlkZGxld2FyZSxcbiAgRGVzZXJpYWxpemVIYW5kbGVyT3B0aW9ucyxcbiAgRGVzZXJpYWxpemVIYW5kbGVyLFxuICBQbHVnZ2FibGUsXG4gIEJ1aWxkTWlkZGxld2FyZSxcbiAgSGFuZGxlcixcbiAgUHJpb3JpdHksXG4gIEFic29sdXRlTG9jYXRpb24sXG4gIFJlbGF0aXZlTG9jYXRpb25cbn0gZnJvbSBcIkBhd3Mtc2RrL3R5cGVzXCI7XG5pbXBvcnQge1xuICBNaWRkbGV3YXJlRW50cnksXG4gIFJlbGF0aXZlTWlkZGxld2FyZUVudHJ5LFxuICBOb3JtYWxpemVkUmVsYXRpdmVFbnRyeSxcbiAgTmFtZWRNaWRkbGV3YXJlRW50cmllc01hcCxcbiAgTmFtZWRSZWxhdGl2ZUVudHJpZXNNYXAsXG4gIFJlbGF0aXZlTWlkZGxld2FyZUFuY2hvcixcbiAgTm9ybWFsaXppbmdFbnRyeVJlc3VsdFxufSBmcm9tIFwiLi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1pZGRsZXdhcmVTdGFjazxJbnB1dCBleHRlbmRzIG9iamVjdCwgT3V0cHV0IGV4dGVuZHMgb2JqZWN0PlxuICBleHRlbmRzIElNaWRkbGV3YXJlU3RhY2s8SW5wdXQsIE91dHB1dD4ge31cblxuZXhwb3J0IGNsYXNzIE1pZGRsZXdhcmVTdGFjazxJbnB1dCBleHRlbmRzIG9iamVjdCwgT3V0cHV0IGV4dGVuZHMgb2JqZWN0PiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWJzb2x1dGVFbnRyaWVzOiBBcnJheTxNaWRkbGV3YXJlRW50cnk8SW5wdXQsIE91dHB1dD4+ID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVsYXRpdmVFbnRyaWVzOiBBcnJheTxcbiAgICBSZWxhdGl2ZU1pZGRsZXdhcmVFbnRyeTxJbnB1dCwgT3V0cHV0PlxuICA+ID0gW107XG4gIHByaXZhdGUgZW50cmllc05hbWVNYXA6IHtcbiAgICBbbWlkZGxld2FyZU5hbWU6IHN0cmluZ106XG4gICAgICB8IE1pZGRsZXdhcmVFbnRyeTxJbnB1dCwgT3V0cHV0PlxuICAgICAgfCBSZWxhdGl2ZU1pZGRsZXdhcmVFbnRyeTxJbnB1dCwgT3V0cHV0PjtcbiAgfSA9IHt9O1xuXG4gIGFkZChcbiAgICBtaWRkbGV3YXJlOiBJbml0aWFsaXplTWlkZGxld2FyZTxJbnB1dCwgT3V0cHV0PixcbiAgICBvcHRpb25zPzogSW5pdGlhbGl6ZUhhbmRsZXJPcHRpb25zICYgQWJzb2x1dGVMb2NhdGlvblxuICApOiB2b2lkO1xuXG4gIGFkZChcbiAgICBtaWRkbGV3YXJlOiBTZXJpYWxpemVNaWRkbGV3YXJlPElucHV0LCBPdXRwdXQ+LFxuICAgIG9wdGlvbnM6IFNlcmlhbGl6ZUhhbmRsZXJPcHRpb25zICYgQWJzb2x1dGVMb2NhdGlvblxuICApOiB2b2lkO1xuXG4gIGFkZChcbiAgICBtaWRkbGV3YXJlOiBCdWlsZE1pZGRsZXdhcmU8SW5wdXQsIE91dHB1dD4sXG4gICAgb3B0aW9uczogQnVpbGRIYW5kbGVyT3B0aW9ucyAmIEFic29sdXRlTG9jYXRpb25cbiAgKTogdm9pZDtcblxuICBhZGQoXG4gICAgbWlkZGxld2FyZTogRmluYWxpemVSZXF1ZXN0TWlkZGxld2FyZTxJbnB1dCwgT3V0cHV0PixcbiAgICBvcHRpb25zOiBGaW5hbGl6ZVJlcXVlc3RIYW5kbGVyT3B0aW9ucyAmIEFic29sdXRlTG9jYXRpb25cbiAgKTogdm9pZDtcblxuICBhZGQoXG4gICAgbWlkZGxld2FyZTogRGVzZXJpYWxpemVNaWRkbGV3YXJlPElucHV0LCBPdXRwdXQ+LFxuICAgIG9wdGlvbnM6IERlc2VyaWFsaXplSGFuZGxlck9wdGlvbnMgJiBBYnNvbHV0ZUxvY2F0aW9uXG4gICk6IHZvaWQ7XG5cbiAgYWRkKFxuICAgIG1pZGRsZXdhcmU6IE1pZGRsZXdhcmVUeXBlPElucHV0LCBPdXRwdXQ+LFxuICAgIG9wdGlvbnM6IEhhbmRsZXJPcHRpb25zICYgQWJzb2x1dGVMb2NhdGlvbiA9IHt9XG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHsgbmFtZSwgc3RlcCA9IFwiaW5pdGlhbGl6ZVwiLCB0YWdzLCBwcmlvcml0eSA9IFwibm9ybWFsXCIgfSA9IG9wdGlvbnM7XG4gICAgY29uc3QgZW50cnk6IE1pZGRsZXdhcmVFbnRyeTxJbnB1dCwgT3V0cHV0PiA9IHtcbiAgICAgIG5hbWUsXG4gICAgICBzdGVwLFxuICAgICAgdGFncyxcbiAgICAgIHByaW9yaXR5LFxuICAgICAgbWlkZGxld2FyZVxuICAgIH07XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5lbnRyaWVzTmFtZU1hcCwgbmFtZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEdXBsaWNhdGVkIG1pZGRsZXdhcmUgbmFtZSAnJHtuYW1lfSdgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZW50cmllc05hbWVNYXBbbmFtZV0gPSBlbnRyeTtcbiAgICB9XG4gICAgdGhpcy5hYnNvbHV0ZUVudHJpZXMucHVzaChlbnRyeSk7XG4gIH1cblxuICBhZGRSZWxhdGl2ZVRvKFxuICAgIG1pZGRsZXdhcmU6IEluaXRpYWxpemVNaWRkbGV3YXJlPElucHV0LCBPdXRwdXQ+LFxuICAgIG9wdGlvbnM6IEluaXRpYWxpemVIYW5kbGVyT3B0aW9ucyAmIFJlbGF0aXZlTG9jYXRpb248SW5wdXQsIE91dHB1dD5cbiAgKTogdm9pZDtcblxuICBhZGRSZWxhdGl2ZVRvKFxuICAgIG1pZGRsZXdhcmU6IFNlcmlhbGl6ZU1pZGRsZXdhcmU8SW5wdXQsIE91dHB1dD4sXG4gICAgb3B0aW9uczogU2VyaWFsaXplSGFuZGxlck9wdGlvbnMgJiBSZWxhdGl2ZUxvY2F0aW9uPElucHV0LCBPdXRwdXQ+XG4gICk6IHZvaWQ7XG5cbiAgYWRkUmVsYXRpdmVUbyhcbiAgICBtaWRkbGV3YXJlOiBCdWlsZE1pZGRsZXdhcmU8SW5wdXQsIE91dHB1dD4sXG4gICAgb3B0aW9uczogQnVpbGRIYW5kbGVyT3B0aW9ucyAmIFJlbGF0aXZlTG9jYXRpb248SW5wdXQsIE91dHB1dD5cbiAgKTogdm9pZDtcblxuICBhZGRSZWxhdGl2ZVRvKFxuICAgIG1pZGRsZXdhcmU6IEZpbmFsaXplUmVxdWVzdE1pZGRsZXdhcmU8SW5wdXQsIE91dHB1dD4sXG4gICAgb3B0aW9uczogRmluYWxpemVSZXF1ZXN0SGFuZGxlck9wdGlvbnMgJiBSZWxhdGl2ZUxvY2F0aW9uPElucHV0LCBPdXRwdXQ+XG4gICk6IHZvaWQ7XG5cbiAgYWRkUmVsYXRpdmVUbyhcbiAgICBtaWRkbGV3YXJlOiBEZXNlcmlhbGl6ZU1pZGRsZXdhcmU8SW5wdXQsIE91dHB1dD4sXG4gICAgb3B0aW9uczogRGVzZXJpYWxpemVIYW5kbGVyT3B0aW9ucyAmIFJlbGF0aXZlTG9jYXRpb248SW5wdXQsIE91dHB1dD5cbiAgKTogdm9pZDtcblxuICBhZGRSZWxhdGl2ZVRvKFxuICAgIG1pZGRsZXdhcmU6IE1pZGRsZXdhcmVUeXBlPElucHV0LCBPdXRwdXQ+LFxuICAgIG9wdGlvbnM6IEhhbmRsZXJPcHRpb25zICYgUmVsYXRpdmVMb2NhdGlvbjxJbnB1dCwgT3V0cHV0PlxuICApOiB2b2lkIHtcbiAgICBjb25zdCB7IHN0ZXAgPSBcImluaXRpYWxpemVcIiwgbmFtZSwgdGFncywgcmVsYXRpb24sIHRvTWlkZGxld2FyZSB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBlbnRyeTogUmVsYXRpdmVNaWRkbGV3YXJlRW50cnk8SW5wdXQsIE91dHB1dD4gPSB7XG4gICAgICBtaWRkbGV3YXJlLFxuICAgICAgc3RlcCxcbiAgICAgIG5hbWUsXG4gICAgICB0YWdzLFxuICAgICAgbmV4dDogcmVsYXRpb24gPT09IFwiYmVmb3JlXCIgPyB0b01pZGRsZXdhcmUgOiB1bmRlZmluZWQsXG4gICAgICBwcmV2OiByZWxhdGlvbiA9PT0gXCJhZnRlclwiID8gdG9NaWRkbGV3YXJlIDogdW5kZWZpbmVkXG4gICAgfTtcbiAgICBpZiAobmFtZSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLmVudHJpZXNOYW1lTWFwLCBuYW1lKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYER1cGxpY2F0ZWQgbWlkZGxld2FyZSBuYW1lICcke25hbWV9J2ApO1xuICAgICAgfVxuICAgICAgdGhpcy5lbnRyaWVzTmFtZU1hcFtuYW1lXSA9IGVudHJ5O1xuICAgIH1cbiAgICB0aGlzLnJlbGF0aXZlRW50cmllcy5wdXNoKGVudHJ5KTtcbiAgfVxuXG4gIHByaXZhdGUgc29ydChcbiAgICBlbnRyaWVzOiBBcnJheTxcbiAgICAgIE1pZGRsZXdhcmVFbnRyeTxJbnB1dCwgT3V0cHV0PiB8IE5vcm1hbGl6ZWRSZWxhdGl2ZUVudHJ5PElucHV0LCBPdXRwdXQ+XG4gICAgPlxuICApOiBBcnJheTxcbiAgICBNaWRkbGV3YXJlRW50cnk8SW5wdXQsIE91dHB1dD4gfCBOb3JtYWxpemVkUmVsYXRpdmVFbnRyeTxJbnB1dCwgT3V0cHV0PlxuICA+IHtcbiAgICAvL3JldmVyc2UgYmVmb3JlIHNvcnRpbmcgc28gdGhhdCBtaWRkbGV3YXJlIG9mIHNhbWUgc3RlcCB3aWxsIGV4ZWN1dGUgaW5cbiAgICAvL3RoZSBvcmRlciBvZiBiZWluZyBhZGRlZFxuICAgIHJldHVybiBlbnRyaWVzLnNvcnQoXG4gICAgICAoYSwgYikgPT5cbiAgICAgICAgc3RlcFdlaWdodHNbYi5zdGVwXSAtIHN0ZXBXZWlnaHRzW2Euc3RlcF0gfHxcbiAgICAgICAgcHJpb3JpdHlXZWlnaHRzW2IucHJpb3JpdHkgfHwgXCJub3JtYWxcIl0gLVxuICAgICAgICAgIHByaW9yaXR5V2VpZ2h0c1thLnByaW9yaXR5IHx8IFwibm9ybWFsXCJdXG4gICAgKTtcbiAgfVxuXG4gIGNsb25lKCk6IElNaWRkbGV3YXJlU3RhY2s8SW5wdXQsIE91dHB1dD4ge1xuICAgIGNvbnN0IGNsb25lID0gbmV3IE1pZGRsZXdhcmVTdGFjazxJbnB1dCwgT3V0cHV0PigpO1xuICAgIGNsb25lLmFic29sdXRlRW50cmllcy5wdXNoKC4uLnRoaXMuYWJzb2x1dGVFbnRyaWVzKTtcbiAgICBjbG9uZS5yZWxhdGl2ZUVudHJpZXMucHVzaCguLi50aGlzLnJlbGF0aXZlRW50cmllcyk7XG4gICAgY2xvbmUuZW50cmllc05hbWVNYXAgPSB7IC4uLnRoaXMuZW50cmllc05hbWVNYXAgfTtcbiAgICByZXR1cm4gY2xvbmU7XG4gIH1cblxuICBjb25jYXQ8SW5wdXRUeXBlIGV4dGVuZHMgSW5wdXQsIE91dHB1dFR5cGUgZXh0ZW5kcyBPdXRwdXQ+KFxuICAgIGZyb206IElNaWRkbGV3YXJlU3RhY2s8SW5wdXRUeXBlLCBPdXRwdXRUeXBlPlxuICApOiBNaWRkbGV3YXJlU3RhY2s8SW5wdXRUeXBlLCBPdXRwdXRUeXBlPiB7XG4gICAgY29uc3QgY2xvbmUgPSBuZXcgTWlkZGxld2FyZVN0YWNrPElucHV0VHlwZSwgT3V0cHV0VHlwZT4oKTtcbiAgICBjbG9uZS5lbnRyaWVzTmFtZU1hcCA9IHsgLi4uKHRoaXMuZW50cmllc05hbWVNYXAgYXMgYW55KSB9O1xuICAgIC8vIElNaWRkbGV3YXJlU3RhY2sgaW50ZXJmYWNlIGRvZXNuJ3QgY29udGFpbiBwcml2YXRlIG1lbWJlcnMgdmFyaWFibGVzXG4gICAgLy8gbGlrZSBgZW50cmllc05hbWVNYXBgLCBidXQgaW4gZmFjdCB0aGUgZnVuY3Rpb24gZXhwZWN0cyBgTWlkZGxld2FyZVN0YWNrYFxuICAgIC8vIGNsYXNzIGluc3RhbmNlLiBTbyBoZXJlIHdlIGNhc3QgaXQuXG4gICAgY29uc3QgX2Zyb20gPSBmcm9tIGFzIE1pZGRsZXdhcmVTdGFjazxJbnB1dFR5cGUsIE91dHB1dFR5cGU+O1xuICAgIGZvciAoY29uc3QgbmFtZSBpbiBfZnJvbS5lbnRyaWVzTmFtZU1hcCkge1xuICAgICAgaWYgKGNsb25lLmVudHJpZXNOYW1lTWFwW25hbWVdKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRHVwbGljYXRlZCBtaWRkbGV3YXJlIG5hbWUgJyR7bmFtZX0nYCk7XG4gICAgICB9XG4gICAgICBjbG9uZS5lbnRyaWVzTmFtZU1hcFtuYW1lXSA9IF9mcm9tLmVudHJpZXNOYW1lTWFwW25hbWVdO1xuICAgIH1cbiAgICBjbG9uZS5hYnNvbHV0ZUVudHJpZXMucHVzaChcbiAgICAgIC4uLih0aGlzLmFic29sdXRlRW50cmllcyBhcyBhbnkpLFxuICAgICAgLi4uX2Zyb20uYWJzb2x1dGVFbnRyaWVzXG4gICAgKTtcbiAgICBjbG9uZS5yZWxhdGl2ZUVudHJpZXMucHVzaChcbiAgICAgIC4uLih0aGlzLnJlbGF0aXZlRW50cmllcyBhcyBhbnkpLFxuICAgICAgLi4uX2Zyb20ucmVsYXRpdmVFbnRyaWVzXG4gICAgKTtcbiAgICByZXR1cm4gY2xvbmU7XG4gIH1cblxuICByZW1vdmUodG9SZW1vdmU6IE1pZGRsZXdhcmVUeXBlPElucHV0LCBPdXRwdXQ+IHwgc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGVvZiB0b1JlbW92ZSA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIHRoaXMucmVtb3ZlQnlOYW1lKHRvUmVtb3ZlKTtcbiAgICBlbHNlIHJldHVybiB0aGlzLnJlbW92ZUJ5UmVmZXJlbmNlKHRvUmVtb3ZlKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlQnlOYW1lKHRvUmVtb3ZlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBmb3IgKGxldCBpID0gdGhpcy5hYnNvbHV0ZUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5hYnNvbHV0ZUVudHJpZXNbaV0ubmFtZSAmJlxuICAgICAgICB0aGlzLmFic29sdXRlRW50cmllc1tpXS5uYW1lID09PSB0b1JlbW92ZVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuYWJzb2x1dGVFbnRyaWVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgZGVsZXRlIHRoaXMuZW50cmllc05hbWVNYXBbdG9SZW1vdmVdO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IHRoaXMucmVsYXRpdmVFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMucmVsYXRpdmVFbnRyaWVzW2ldLm5hbWUgJiZcbiAgICAgICAgdGhpcy5yZWxhdGl2ZUVudHJpZXNbaV0ubmFtZSA9PT0gdG9SZW1vdmVcbiAgICAgICkge1xuICAgICAgICB0aGlzLnJlbGF0aXZlRW50cmllcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmVudHJpZXNOYW1lTWFwW3RvUmVtb3ZlXTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlQnlSZWZlcmVuY2UodG9SZW1vdmU6IE1pZGRsZXdhcmVUeXBlPElucHV0LCBPdXRwdXQ+KTogYm9vbGVhbiB7XG4gICAgZm9yIChsZXQgaSA9IHRoaXMuYWJzb2x1dGVFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAodGhpcy5hYnNvbHV0ZUVudHJpZXNbaV0ubWlkZGxld2FyZSA9PT0gdG9SZW1vdmUpIHtcbiAgICAgICAgY29uc3QgeyBuYW1lIH0gPSB0aGlzLmFic29sdXRlRW50cmllc1tpXTtcbiAgICAgICAgaWYgKG5hbWUpIGRlbGV0ZSB0aGlzLmVudHJpZXNOYW1lTWFwW25hbWVdO1xuICAgICAgICB0aGlzLmFic29sdXRlRW50cmllcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKGxldCBpID0gdGhpcy5yZWxhdGl2ZUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGlmICh0aGlzLnJlbGF0aXZlRW50cmllc1tpXS5taWRkbGV3YXJlID09PSB0b1JlbW92ZSkge1xuICAgICAgICBjb25zdCB7IG5hbWUgfSA9IHRoaXMucmVsYXRpdmVFbnRyaWVzW2ldO1xuICAgICAgICBpZiAobmFtZSkgZGVsZXRlIHRoaXMuZW50cmllc05hbWVNYXBbbmFtZV07XG4gICAgICAgIHRoaXMucmVsYXRpdmVFbnRyaWVzLnNwbGljZShpLCAxKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJlbW92ZUJ5VGFnKHRvUmVtb3ZlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsZXQgcmVtb3ZlZCA9IGZhbHNlO1xuICAgIGZvciAobGV0IGkgPSB0aGlzLmFic29sdXRlRW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgY29uc3QgeyB0YWdzLCBuYW1lIH0gPSB0aGlzLmFic29sdXRlRW50cmllc1tpXTtcbiAgICAgIGlmICh0YWdzICYmIHRhZ3MuaW5kZXhPZih0b1JlbW92ZSkgPiAtMSkge1xuICAgICAgICB0aGlzLmFic29sdXRlRW50cmllcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGlmIChuYW1lKSBkZWxldGUgdGhpcy5lbnRyaWVzTmFtZU1hcFtuYW1lXTtcbiAgICAgICAgcmVtb3ZlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSB0aGlzLnJlbGF0aXZlRW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgY29uc3QgeyB0YWdzLCBuYW1lIH0gPSB0aGlzLnJlbGF0aXZlRW50cmllc1tpXTtcbiAgICAgIGlmICh0YWdzICYmIHRhZ3MuaW5kZXhPZih0b1JlbW92ZSkgPiAtMSkge1xuICAgICAgICB0aGlzLnJlbGF0aXZlRW50cmllcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIGlmIChuYW1lKSBkZWxldGUgdGhpcy5lbnRyaWVzTmFtZU1hcFtuYW1lXTtcbiAgICAgICAgcmVtb3ZlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZW1vdmVkO1xuICB9XG5cbiAgdXNlKHBsdWdpbjogUGx1Z2dhYmxlPElucHV0LCBPdXRwdXQ+KSB7XG4gICAgcGx1Z2luLmFwcGx5VG9TdGFjayh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlIHJlbGF0aXZlIG1pZGRsZXdhcmUgZW50cmllcyB0byBtdWx0aXBsZSBkb3VibGUgbGlua2VkIGxpc3RzXG4gICAqIGRlcGljdGluZyB0aGUgcmVsYXRpdmUgbG9jYXRpb24gb2YgbWlkZGxld2FyZS4gT25seSBtaWRkbGV3YXJlIHRoYXQgaGF2ZVxuICAgKiBkaXJlY3Qgb3IgdHJhbnNpdGl2ZSByZWxhdGlvbiB3aWxsIGZvcm0gYSBsaW5rZWQgbGlzdC5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBub3JtYWxpemVzIHJlbGF0aXZlIG1pZGRsZXdhcmUgaW50byAyIGNhdGVnb3JpZXMgb2YgbGlua2VkXG4gICAqIGxpc3RzLiAoMSkgbGlua2VkIGxpc3QgdGhhdCBoYXZlIGFic29sdXRlLWxvY2F0ZWQgbWlkZGxld2FyZSBvbiBvbmUgZW5kLlxuICAgKiBUaGVzZSBtaWRkbGV3YXJlIHdpbGwgYmUgcmVzb2x2ZWQgYWNjb3JkaW5nbHkgYmVmb3JlIG9yIGFmdGVyIHRoZSBhYnNvbHV0ZS1cbiAgICogbG9jYXRlZCBtaWRkbGV3YXJlLiAoMikgTGlua2VkIGxpc3QgdGhhdCBoYXZlIG5vIGFic29sdXRlLWxvY2F0ZWQgbWlkZGxld2FyZVxuICAgKiBvbiBhbnkgZW5kLiBUaGV5IHdpbGwgYmUgcmVzb2x2ZWQgdG8gY29ycmVzcG9uZGluZyBzdGVwIHdpdGggbm9ybWFsIHByaW9yaXR5XG4gICAqXG4gICAqIFRoZSAyIHR5cGVzIG9mIGxpbmtlZCBsaXN0IHdpbGwgcmV0dXJuIGFzIGEgdHVwbGVcbiAgICovXG4gIHByaXZhdGUgbm9ybWFsaXplUmVsYXRpdmVFbnRyaWVzKCk6IE5vcm1hbGl6aW5nRW50cnlSZXN1bHQ8SW5wdXQsIE91dHB1dD4ge1xuICAgIGNvbnN0IGFic29sdXRlTWlkZGxld2FyZU5hbWVzTWFwID0gdGhpcy5hYnNvbHV0ZUVudHJpZXNcbiAgICAgIC5maWx0ZXIoZW50cnkgPT4gZW50cnkubmFtZSlcbiAgICAgIC5yZWR1Y2UoKGFjY3VtdWxhdG9yLCBlbnRyeSkgPT4ge1xuICAgICAgICBhY2N1bXVsYXRvcltlbnRyeS5uYW1lIV0gPSBlbnRyeTtcbiAgICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgICAgfSwge30gYXMgTmFtZWRNaWRkbGV3YXJlRW50cmllc01hcDxJbnB1dCwgT3V0cHV0Pik7XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IHRoaXMucmVsYXRpdmVFbnRyaWVzLm1hcChcbiAgICAgIGVudHJ5ID0+XG4gICAgICAgICh7XG4gICAgICAgICAgLi4uZW50cnksXG4gICAgICAgICAgcHJpb3JpdHk6IG51bGwsXG4gICAgICAgICAgbmV4dDogdW5kZWZpbmVkLFxuICAgICAgICAgIHByZXY6IHVuZGVmaW5lZFxuICAgICAgICB9IGFzIE5vcm1hbGl6ZWRSZWxhdGl2ZUVudHJ5PElucHV0LCBPdXRwdXQ+KVxuICAgICk7XG4gICAgY29uc3QgcmVsYXRpdmVNaWRkbGV3YXJlTmFtZXNNYXAgPSBub3JtYWxpemVkXG4gICAgICAuZmlsdGVyKGVudHJ5ID0+IGVudHJ5Lm5hbWUpXG4gICAgICAucmVkdWNlKChhY2N1bXVsYXRvciwgZW50cnkpID0+IHtcbiAgICAgICAgYWNjdW11bGF0b3JbZW50cnkubmFtZSFdID0gZW50cnk7XG4gICAgICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgICAgIH0sIHt9IGFzIE5hbWVkUmVsYXRpdmVFbnRyaWVzTWFwPElucHV0LCBPdXRwdXQ+KTtcblxuICAgIGNvbnN0IGFuY2hvcnM6IFJlbGF0aXZlTWlkZGxld2FyZUFuY2hvcjxJbnB1dCwgT3V0cHV0PiA9IHt9O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yZWxhdGl2ZUVudHJpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHsgcHJldiwgbmV4dCB9ID0gdGhpcy5yZWxhdGl2ZUVudHJpZXNbaV07XG4gICAgICBjb25zdCByZXNvbHZlZEN1cnIgPSBub3JtYWxpemVkW2ldO1xuICAgICAgLy9laXRoZXIgcHJldiBvciBuZXh0IGlzIHNldFxuICAgICAgaWYgKHByZXYpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGFic29sdXRlTWlkZGxld2FyZU5hbWVzTWFwW3ByZXZdICYmXG4gICAgICAgICAgYWJzb2x1dGVNaWRkbGV3YXJlTmFtZXNNYXBbcHJldl0uc3RlcCA9PT0gcmVzb2x2ZWRDdXJyLnN0ZXBcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKCFhbmNob3JzW3ByZXZdKSBhbmNob3JzW3ByZXZdID0ge307XG4gICAgICAgICAgcmVzb2x2ZWRDdXJyLm5leHQgPSBhbmNob3JzW3ByZXZdLm5leHQ7XG4gICAgICAgICAgaWYgKGFuY2hvcnNbcHJldl0ubmV4dCkgYW5jaG9yc1twcmV2XS5uZXh0IS5wcmV2ID0gcmVzb2x2ZWRDdXJyO1xuICAgICAgICAgIGFuY2hvcnNbcHJldl0ubmV4dCA9IHJlc29sdmVkQ3VycjtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICByZWxhdGl2ZU1pZGRsZXdhcmVOYW1lc01hcFtwcmV2XSAmJlxuICAgICAgICAgIHJlbGF0aXZlTWlkZGxld2FyZU5hbWVzTWFwW3ByZXZdLnN0ZXAgPT09IHJlc29sdmVkQ3Vyci5zdGVwXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IHJlc29sdmVkUHJldiA9IHJlbGF0aXZlTWlkZGxld2FyZU5hbWVzTWFwW3ByZXZdO1xuICAgICAgICAgIGlmIChyZXNvbHZlZFByZXYubmV4dCA9PT0gcmVzb2x2ZWRDdXJyKSBjb250aW51ZTtcbiAgICAgICAgICByZXNvbHZlZEN1cnIubmV4dCA9IHJlc29sdmVkUHJldi5uZXh0O1xuICAgICAgICAgIHJlc29sdmVkUHJldi5uZXh0ID0gcmVzb2x2ZWRDdXJyO1xuICAgICAgICAgIGlmIChyZXNvbHZlZEN1cnIubmV4dCkgcmVzb2x2ZWRDdXJyLm5leHQucHJldiA9IHJlc29sdmVkQ3VycjtcbiAgICAgICAgICByZXNvbHZlZEN1cnIucHJldiA9IHJlc29sdmVkUHJldjtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChuZXh0KSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBhYnNvbHV0ZU1pZGRsZXdhcmVOYW1lc01hcFtuZXh0XSAmJlxuICAgICAgICAgIGFic29sdXRlTWlkZGxld2FyZU5hbWVzTWFwW25leHRdLnN0ZXAgPT09IHJlc29sdmVkQ3Vyci5zdGVwXG4gICAgICAgICkge1xuICAgICAgICAgIGlmICghYW5jaG9yc1tuZXh0XSkgYW5jaG9yc1tuZXh0XSA9IHt9O1xuICAgICAgICAgIHJlc29sdmVkQ3Vyci5wcmV2ID0gYW5jaG9yc1tuZXh0XS5wcmV2O1xuICAgICAgICAgIGlmIChhbmNob3JzW25leHRdLnByZXYpIGFuY2hvcnNbbmV4dF0ucHJldiEubmV4dCA9IHJlc29sdmVkQ3VycjtcbiAgICAgICAgICBhbmNob3JzW25leHRdLnByZXYgPSByZXNvbHZlZEN1cnI7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgcmVsYXRpdmVNaWRkbGV3YXJlTmFtZXNNYXBbbmV4dF0gJiZcbiAgICAgICAgICByZWxhdGl2ZU1pZGRsZXdhcmVOYW1lc01hcFtuZXh0XS5zdGVwID09PSByZXNvbHZlZEN1cnIuc3RlcFxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCByZXNvbHZlZE5leHQgPSByZWxhdGl2ZU1pZGRsZXdhcmVOYW1lc01hcFtuZXh0XTtcbiAgICAgICAgICBpZiAocmVzb2x2ZWROZXh0LnByZXYgPT09IHJlc29sdmVkQ3VycikgY29udGludWU7XG4gICAgICAgICAgcmVzb2x2ZWRDdXJyLnByZXYgPSByZXNvbHZlZE5leHQucHJldjtcbiAgICAgICAgICByZXNvbHZlZE5leHQucHJldiA9IHJlc29sdmVkQ3VycjtcbiAgICAgICAgICBpZiAocmVzb2x2ZWRDdXJyLnByZXYpIHJlc29sdmVkQ3Vyci5wcmV2Lm5leHQgPSByZXNvbHZlZEN1cnI7XG4gICAgICAgICAgcmVzb2x2ZWRDdXJyLm5leHQgPSByZXNvbHZlZE5leHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLy8gZ2V0IHRoZSBoZWFkIG9mIHRoZSByZWxhdGl2ZSBtaWRkbGV3YXJlIGxpbmtlZCBsaXN0IHRoYXQgaGF2ZVxuICAgIC8vIG5vIHRyYW5zaXRpdmUgcmVsYXRpb24gdG8gYWJzb2x1dGUgbWlkZGxld2FyZS5cbiAgICBjb25zdCBvcnBoYW5lZFJlbGF0aXZlRW50cmllczogQXJyYXk8Tm9ybWFsaXplZFJlbGF0aXZlRW50cnk8XG4gICAgICBJbnB1dCxcbiAgICAgIE91dHB1dFxuICAgID4+ID0gW107XG4gICAgY29uc3QgdmlzaXRlZDogV2Vha1NldDxOb3JtYWxpemVkUmVsYXRpdmVFbnRyeTxcbiAgICAgIElucHV0LFxuICAgICAgT3V0cHV0XG4gICAgPj4gPSBuZXcgV2Vha1NldCgpO1xuICAgIGZvciAoY29uc3QgYW5jaG9yTmFtZSBvZiBPYmplY3Qua2V5cyhhbmNob3JzKSkge1xuICAgICAgbGV0IHsgcHJldiwgbmV4dCB9ID0gYW5jaG9yc1thbmNob3JOYW1lXTtcbiAgICAgIHdoaWxlIChwcmV2KSB7XG4gICAgICAgIHZpc2l0ZWQuYWRkKHByZXYpO1xuICAgICAgICBwcmV2ID0gcHJldi5wcmV2O1xuICAgICAgfVxuICAgICAgd2hpbGUgKG5leHQpIHtcbiAgICAgICAgdmlzaXRlZC5hZGQobmV4dCk7XG4gICAgICAgIG5leHQgPSBuZXh0Lm5leHQ7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9ybWFsaXplZC5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGVudHJ5OiBOb3JtYWxpemVkUmVsYXRpdmVFbnRyeTxJbnB1dCwgT3V0cHV0PiB8IHVuZGVmaW5lZCA9XG4gICAgICAgIG5vcm1hbGl6ZWRbaV07XG4gICAgICBpZiAodmlzaXRlZC5oYXMoZW50cnkpKSBjb250aW51ZTtcbiAgICAgIGlmICghZW50cnkucHJldikgb3JwaGFuZWRSZWxhdGl2ZUVudHJpZXMucHVzaChlbnRyeSk7XG4gICAgICB3aGlsZSAoZW50cnkgJiYgIXZpc2l0ZWQuaGFzKGVudHJ5KSkge1xuICAgICAgICB2aXNpdGVkLmFkZChlbnRyeSk7XG4gICAgICAgIGVudHJ5ID0gZW50cnkubmV4dDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFtvcnBoYW5lZFJlbGF0aXZlRW50cmllcywgYW5jaG9yc107XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgZmluYWwgbGlzdCBvZiBtaWRkbGV3YXJlIGluIHRoZSBvcmRlciBvZiBiZWluZyBleGVjdXRlZCBpbiB0aGUgcmVzb2x2ZWQgaGFuZGxlci5cbiAgICogSWYgcmVsYXRpdmUgZW50cmllcyBsaXN0IGlzIG5vdCBlbXB0eSwgdGhvc2UgZW50cmllcyB3aWxsIGJlIGFkZGVkIHRvIGZpbmFsIG1pZGRsZXdhcmVcbiAgICogbGlzdCB3aXRoIHJ1bGVzIGJlbG93OlxuICAgKiAxLiBpZiBgdG9NaWRkbGV3YXJlYCBleGlzdHMgaW4gdGhlIHNwZWNpZmljIGBzdGVwYCwgdGhlIG1pZGRsZXdhcmUgd2lsbCBiZSBpbnNlcnRlZCBiZWZvcmVcbiAgICogICAgIG9yIGFmdGVyIHRoZSBzcGVjaWZpZWQgYHRvTWlkZGxld2FyZWBcbiAgICogMi4gaWYgYHRvTWlkZGxld2FyZWAgZG9lc24ndCBleGlzdCBpbiB0aGUgc3BlY2lmaWMgYHN0ZXBgLCB0aGUgbWlkZGxld2FyZSB3aWxsIGJlIGFwcGVuZGVkXG4gICAqICAgICB0byBzcGVjaWZpYyBgc3RlcGAgd2l0aCBwcmlvcml0eSBvZiBgbm9ybWFsYFxuICAgKi9cbiAgcHJpdmF0ZSBnZU1pZGRsZXdhcmVMaXN0KCk6IEFycmF5PE1pZGRsZXdhcmVUeXBlPElucHV0LCBPdXRwdXQ+PiB7XG4gICAgbGV0IG1pZGRsZXdhcmVMaXN0OiBBcnJheTxNaWRkbGV3YXJlVHlwZTxJbnB1dCwgT3V0cHV0Pj4gPSBbXTtcbiAgICBjb25zdCBbb3JwaGFuZWRSZWxhdGl2ZUVudHJpZXMsIGFuY2hvcnNdID0gdGhpcy5ub3JtYWxpemVSZWxhdGl2ZUVudHJpZXMoKTtcbiAgICBsZXQgZW50cnlMaXN0ID0gWy4uLnRoaXMuYWJzb2x1dGVFbnRyaWVzLCAuLi5vcnBoYW5lZFJlbGF0aXZlRW50cmllc107XG4gICAgZW50cnlMaXN0ID0gdGhpcy5zb3J0KGVudHJ5TGlzdCk7XG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyeUxpc3QpIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRBbmNob3JWYWx1ZSA9IHsgcHJldjogdW5kZWZpbmVkLCBuZXh0OiB1bmRlZmluZWQgfTtcbiAgICAgIGNvbnN0IHsgcHJldiwgbmV4dCB9ID0gZW50cnkubmFtZVxuICAgICAgICA/IGFuY2hvcnNbZW50cnkubmFtZV0gfHwgZGVmYXVsdEFuY2hvclZhbHVlXG4gICAgICAgIDogZGVmYXVsdEFuY2hvclZhbHVlO1xuICAgICAgbGV0IHJlbGF0aXZlRW50cnkgPSBwcmV2O1xuICAgICAgLy9yZXZlcnNlIHJlbGF0aXZlIGVudHJ5IGxpbmtlZCBsaXN0IGFuZCBhZGQgdG8gb3JkZXJlZCBoYW5kbGVyIGxpc3RcbiAgICAgIHdoaWxlIChyZWxhdGl2ZUVudHJ5ICYmIHJlbGF0aXZlRW50cnkucHJldikge1xuICAgICAgICByZWxhdGl2ZUVudHJ5ID0gcmVsYXRpdmVFbnRyeS5wcmV2O1xuICAgICAgfVxuICAgICAgd2hpbGUgKHJlbGF0aXZlRW50cnkpIHtcbiAgICAgICAgbWlkZGxld2FyZUxpc3QucHVzaChyZWxhdGl2ZUVudHJ5Lm1pZGRsZXdhcmUpO1xuICAgICAgICByZWxhdGl2ZUVudHJ5ID0gcmVsYXRpdmVFbnRyeS5uZXh0O1xuICAgICAgfVxuICAgICAgbWlkZGxld2FyZUxpc3QucHVzaChlbnRyeS5taWRkbGV3YXJlKTtcbiAgICAgIGxldCBvcnBoYW5lZEVudHJ5ID0gZW50cnkgYXMgYW55O1xuICAgICAgd2hpbGUgKChvcnBoYW5lZEVudHJ5IGFzIGFueSkubmV4dCkge1xuICAgICAgICBtaWRkbGV3YXJlTGlzdC5wdXNoKChvcnBoYW5lZEVudHJ5IGFzIGFueSkubmV4dC5taWRkbGV3YXJlKTtcbiAgICAgICAgb3JwaGFuZWRFbnRyeSA9IChvcnBoYW5lZEVudHJ5IGFzIGFueSkubmV4dDtcbiAgICAgIH1cbiAgICAgIHJlbGF0aXZlRW50cnkgPSBuZXh0O1xuICAgICAgd2hpbGUgKHJlbGF0aXZlRW50cnkpIHtcbiAgICAgICAgbWlkZGxld2FyZUxpc3QucHVzaChyZWxhdGl2ZUVudHJ5Lm1pZGRsZXdhcmUpO1xuICAgICAgICByZWxhdGl2ZUVudHJ5ID0gcmVsYXRpdmVFbnRyeS5uZXh0O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWlkZGxld2FyZUxpc3QucmV2ZXJzZSgpO1xuICB9XG5cbiAgcmVzb2x2ZTxJbnB1dFR5cGUgZXh0ZW5kcyBJbnB1dCwgT3V0cHV0VHlwZSBleHRlbmRzIE91dHB1dD4oXG4gICAgaGFuZGxlcjogRGVzZXJpYWxpemVIYW5kbGVyPElucHV0VHlwZSwgT3V0cHV0VHlwZT4sXG4gICAgY29udGV4dDogSGFuZGxlckV4ZWN1dGlvbkNvbnRleHRcbiAgKTogSGFuZGxlcjxJbnB1dFR5cGUsIE91dHB1dFR5cGU+IHtcbiAgICBmb3IgKGNvbnN0IG1pZGRsZXdhcmUgb2YgdGhpcy5nZU1pZGRsZXdhcmVMaXN0KCkpIHtcbiAgICAgIGhhbmRsZXIgPSBtaWRkbGV3YXJlKFxuICAgICAgICBoYW5kbGVyIGFzIEhhbmRsZXI8SW5wdXQsIE91dHB1dFR5cGU+LFxuICAgICAgICBjb250ZXh0XG4gICAgICApIGFzIGFueTtcbiAgICB9XG5cbiAgICByZXR1cm4gaGFuZGxlciBhcyBIYW5kbGVyPElucHV0VHlwZSwgT3V0cHV0VHlwZT47XG4gIH1cbn1cblxuY29uc3Qgc3RlcFdlaWdodHM6IHsgW2tleSBpbiBTdGVwXTogbnVtYmVyIH0gPSB7XG4gIGluaXRpYWxpemU6IDUsXG4gIHNlcmlhbGl6ZTogNCxcbiAgYnVpbGQ6IDMsXG4gIGZpbmFsaXplUmVxdWVzdDogMixcbiAgZGVzZXJpYWxpemU6IDFcbn07XG5cbmNvbnN0IHByaW9yaXR5V2VpZ2h0czogeyBba2V5IGluIFByaW9yaXR5XTogbnVtYmVyIH0gPSB7XG4gIGhpZ2g6IDMsXG4gIG5vcm1hbDogMixcbiAgbG93OiAxXG59O1xuIl19

@@ -6,2 +6,55 @@ # Change Log

# [1.0.0-alpha.3](https://github.com/aws/aws-sdk-js-v3/compare/@aws-sdk/middleware-stack@0.1.0-preview.3...@aws-sdk/middleware-stack@1.0.0-alpha.3) (2020-01-22)
# 0.9.0 (2020-01-09)
### Bug Fixes
* fix bugs when recursively appending middleware ([#476](https://github.com/aws/aws-sdk-js-v3/issues/476)) ([5afc0d6](https://github.com/aws/aws-sdk-js-v3/commit/5afc0d6))
### Features
* apply protocol and middleware update ([0de0a22](https://github.com/aws/aws-sdk-js-v3/commit/0de0a22))
* remove absolute priority numbers from middleware stack ([#434](https://github.com/aws/aws-sdk-js-v3/issues/434)) ([2ad5796](https://github.com/aws/aws-sdk-js-v3/commit/2ad5796))
* standardize plugins ([#422](https://github.com/aws/aws-sdk-js-v3/issues/422)) ([09112e5](https://github.com/aws/aws-sdk-js-v3/commit/09112e5))
# 0.7.0 (2019-11-19)
# 0.6.0 (2019-10-30)
# 0.3.0 (2019-09-09)
### Features
* commit all clients ([#324](https://github.com/aws/aws-sdk-js-v3/issues/324)) ([cb268ed](https://github.com/aws/aws-sdk-js-v3/commit/cb268ed))
# 0.2.0 (2019-07-12)
### Features
* add npm badges for individual packages ([#251](https://github.com/aws/aws-sdk-js-v3/issues/251)) ([8adc10c](https://github.com/aws/aws-sdk-js-v3/commit/8adc10c))
* update jest v20 to v24 ([#243](https://github.com/aws/aws-sdk-js-v3/issues/243)) ([1e156ab](https://github.com/aws/aws-sdk-js-v3/commit/1e156ab))
# 0.1.0 (2019-04-19)
# [1.0.0-alpha.2](https://github.com/aws/aws-sdk-js-v3/compare/@aws-sdk/middleware-stack@0.1.0-preview.3...@aws-sdk/middleware-stack@1.0.0-alpha.2) (2020-01-09)

@@ -8,0 +61,0 @@

{
"name": "@aws-sdk/middleware-stack",
"version": "1.0.0-alpha.2",
"version": "1.0.0-alpha.3",
"description": "Provides a means for composing multiple middleware functions into a single handler",

@@ -19,3 +19,3 @@ "scripts": {

"dependencies": {
"@aws-sdk/types": "^1.0.0-alpha.2",
"@aws-sdk/types": "^1.0.0-alpha.3",
"tslib": "^1.8.0"

@@ -22,0 +22,0 @@ },

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc