ember-source 2.10.0.beta.1 → 2.10.0.beta.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 25504c54bc6110cae11b691cf66af8e42e1db573
4
- data.tar.gz: 0d676f940668d4f487f368f1b0f64774260e04e2
3
+ metadata.gz: 4c39e83bf3a6ae19b5ba5736c3a63403f9b9cbbd
4
+ data.tar.gz: 1c0ce129c7b52b77be49d173d4bca141a332fc32
5
5
  SHA512:
6
- metadata.gz: ebc78ac6269ae2e0139710c4fa537b008d7d4f10903f7abbcd28760521fb14aaf216151ccb04767198cc86d66478a3d51b34070a62d6129e7896c81c28e0bd1d
7
- data.tar.gz: 1fa5f0a5e96de35596d95615a4a84f8f524dc61caf040bf5311bbc653a994a1a72864fca1bfbef90c19bf3dd408b7ca3f1c8cb93f79ef30e7b394ca9ac3eeae7
6
+ metadata.gz: 2ba538f3c204892a0e94fe7664786ffc5be8e370d7d6920951a9937aa8c8f8dee045efc3060c4695412d30186e07d6d13cf6c9a72735fb68ac2aeb9eee5e6e3f
7
+ data.tar.gz: 2e2bb8dd0bb84d4d5608bdb86696d596ac29479a5b2c839cb164a331449dff8d4c0b92d421d835bb421243096c6c58c270d9045e517ce9f0d6afaa85c7b2a747
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.10.0-beta.1
1
+ 2.10.0-beta.2
@@ -6,7 +6,7 @@
6
6
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
7
7
  * @license Licensed under MIT license
8
8
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
9
- * @version 2.10.0-beta.1
9
+ * @version 2.10.0-beta.2
10
10
  */
11
11
 
12
12
  var enifed, requireModule, require, Ember;
@@ -3525,10 +3525,6 @@ enifed('ember-metal/chains', ['exports', 'ember-utils', 'ember-metal/property_ge
3525
3525
  }
3526
3526
 
3527
3527
  function addChainWatcher(obj, keyName, node) {
3528
- if (!isObject(obj)) {
3529
- return;
3530
- }
3531
-
3532
3528
  var m = _emberMetalMeta.meta(obj);
3533
3529
  m.writableChainWatchers(makeChainWatcher).add(keyName, node);
3534
3530
  _emberMetalWatch_key.watchKey(obj, keyName, m);
@@ -3575,10 +3571,15 @@ enifed('ember-metal/chains', ['exports', 'ember-utils', 'ember-metal/property_ge
3575
3571
  this._value = value;
3576
3572
  this._paths = {};
3577
3573
  if (this._watching) {
3578
- this._object = parent.value();
3579
- if (this._object) {
3580
- addChainWatcher(this._object, this._key, this);
3574
+ var obj = parent.value();
3575
+
3576
+ if (!isObject(obj)) {
3577
+ return;
3581
3578
  }
3579
+
3580
+ this._object = obj;
3581
+
3582
+ addChainWatcher(this._object, this._key, this);
3582
3583
  }
3583
3584
  }
3584
3585
 
@@ -3711,11 +3712,19 @@ enifed('ember-metal/chains', ['exports', 'ember-utils', 'ember-metal/property_ge
3711
3712
 
3712
3713
  notify: function (revalidate, affected) {
3713
3714
  if (revalidate && this._watching) {
3714
- var obj = this._parent.value();
3715
- if (obj !== this._object) {
3716
- removeChainWatcher(this._object, this._key, this);
3717
- this._object = obj;
3718
- addChainWatcher(obj, this._key, this);
3715
+ var parentValue = this._parent.value();
3716
+
3717
+ if (parentValue !== this._object) {
3718
+ if (this._object) {
3719
+ removeChainWatcher(this._object, this._key, this);
3720
+ }
3721
+
3722
+ if (isObject(parentValue)) {
3723
+ this._object = parentValue;
3724
+ addChainWatcher(parentValue, this._key, this);
3725
+ } else {
3726
+ this._object = undefined;
3727
+ }
3719
3728
  }
3720
3729
  this._value = undefined;
3721
3730
  }
@@ -5336,7 +5345,6 @@ enifed('ember-metal/index', ['exports', 'require', 'ember-metal/core', 'ember-me
5336
5345
  exports.runInTransaction = _emberMetalTransaction.default;
5337
5346
  exports.didRender = _emberMetalTransaction.didRender;
5338
5347
  exports.assertNotRendered = _emberMetalTransaction.assertNotRendered;
5339
- exports.IS_PROXY = _emberMetalIs_proxy.IS_PROXY;
5340
5348
  exports.isProxy = _emberMetalIs_proxy.isProxy;
5341
5349
  exports.descriptor = _emberMetalDescriptor.default;
5342
5350
 
@@ -5837,16 +5845,18 @@ enifed('ember-metal/is_present', ['exports', 'ember-metal/is_blank'], function (
5837
5845
  return !_emberMetalIs_blank.default(obj);
5838
5846
  }
5839
5847
  });
5840
- enifed('ember-metal/is_proxy', ['exports', 'ember-utils'], function (exports, _emberUtils) {
5848
+ enifed('ember-metal/is_proxy', ['exports', 'ember-metal/meta'], function (exports, _emberMetalMeta) {
5841
5849
  'use strict';
5842
5850
 
5843
5851
  exports.isProxy = isProxy;
5844
- var IS_PROXY = _emberUtils.symbol('IS_PROXY');
5845
-
5846
- exports.IS_PROXY = IS_PROXY;
5847
5852
 
5848
5853
  function isProxy(value) {
5849
- return typeof value === 'object' && value && value[IS_PROXY];
5854
+ if (typeof value === 'object' && value) {
5855
+ var meta = _emberMetalMeta.peekMeta(value);
5856
+ return meta && meta.isProxy();
5857
+ }
5858
+
5859
+ return false;
5850
5860
  }
5851
5861
  });
5852
5862
  enifed('ember-metal/libraries', ['exports', 'ember-metal/debug', 'ember-metal/features'], function (exports, _emberMetalDebug, _emberMetalFeatures) {
@@ -6506,9 +6516,11 @@ enifed('ember-metal/meta', ['exports', 'ember-utils', 'ember-metal/features', 'e
6506
6516
  tags: ownMap
6507
6517
  };
6508
6518
 
6519
+ // FLAGS
6509
6520
  var SOURCE_DESTROYING = 1 << 1;
6510
6521
  var SOURCE_DESTROYED = 1 << 2;
6511
6522
  var META_DESTROYED = 1 << 3;
6523
+ var IS_PROXY = 1 << 4;
6512
6524
 
6513
6525
  if (_emberMetalFeatures.default('ember-glimmer-detect-backtracking-rerender') || _emberMetalFeatures.default('ember-glimmer-allow-backtracking-rerender')) {
6514
6526
  members.lastRendered = ownMap;
@@ -6644,6 +6656,14 @@ enifed('ember-metal/meta', ['exports', 'ember-utils', 'ember-metal/features', 'e
6644
6656
  this._flags |= META_DESTROYED;
6645
6657
  };
6646
6658
 
6659
+ Meta.prototype.isProxy = function isProxy() {
6660
+ return (this._flags & IS_PROXY) !== 0;
6661
+ };
6662
+
6663
+ Meta.prototype.setProxy = function setProxy() {
6664
+ this._flags |= IS_PROXY;
6665
+ };
6666
+
6647
6667
  // Implements a member that is a lazily created, non-inheritable
6648
6668
  // POJO.
6649
6669
  function ownMap(name, Meta) {
@@ -12864,8 +12884,6 @@ enifed('ember-runtime/mixins/-proxy', ['exports', 'glimmer-reference', 'ember-me
12864
12884
 
12865
12885
  'use strict';
12866
12886
 
12867
- var _Mixin$create;
12868
-
12869
12887
  function contentPropertyWillChange(content, contentKey) {
12870
12888
  var key = contentKey.slice(8); // remove "content."
12871
12889
  if (key in this) {
@@ -12920,49 +12938,71 @@ enifed('ember-runtime/mixins/-proxy', ['exports', 'glimmer-reference', 'ember-me
12920
12938
  return ProxyTag;
12921
12939
  })(_glimmerReference.CachedTag);
12922
12940
 
12923
- exports.default = _emberMetal.Mixin.create((_Mixin$create = {}, _Mixin$create[_emberMetal.IS_PROXY] = true, _Mixin$create.content = null, _Mixin$create._initializeTag = _emberMetal.on('init', function () {
12924
- _emberMetal.meta(this)._tag = new ProxyTag(this);
12925
- }), _Mixin$create._contentDidChange = _emberMetal.observer('content', function () {
12926
- _emberMetal.assert('Can\'t set Proxy\'s content to itself', _emberMetal.get(this, 'content') !== this);
12927
- _emberMetal.tagFor(this).contentDidChange();
12928
- }), _Mixin$create.isTruthy = _emberRuntimeComputedComputed_macros.bool('content'), _Mixin$create._debugContainerKey = null, _Mixin$create.willWatchProperty = function (key) {
12929
- var contentKey = 'content.' + key;
12930
- _emberMetal._addBeforeObserver(this, contentKey, null, contentPropertyWillChange);
12931
- _emberMetal.addObserver(this, contentKey, null, contentPropertyDidChange);
12932
- }, _Mixin$create.didUnwatchProperty = function (key) {
12933
- var contentKey = 'content.' + key;
12934
- _emberMetal._removeBeforeObserver(this, contentKey, null, contentPropertyWillChange);
12935
- _emberMetal.removeObserver(this, contentKey, null, contentPropertyDidChange);
12936
- }, _Mixin$create.unknownProperty = function (key) {
12937
- var content = _emberMetal.get(this, 'content');
12938
- if (content) {
12939
- _emberMetal.deprecate('You attempted to access `' + key + '` from `' + this + '`, but object proxying is deprecated. Please use `model.' + key + '` instead.', !this.isController, { id: 'ember-runtime.controller-proxy', until: '3.0.0' });
12940
- return _emberMetal.get(content, key);
12941
- }
12942
- }, _Mixin$create.setUnknownProperty = function (key, value) {
12943
- var m = _emberMetal.meta(this);
12944
- if (m.proto === this) {
12945
- // if marked as prototype then just defineProperty
12946
- // rather than delegate
12947
- _emberMetal.defineProperty(this, key, null, value);
12948
- return value;
12949
- }
12941
+ exports.default = _emberMetal.Mixin.create({
12942
+ /**
12943
+ The object whose properties will be forwarded.
12944
+ @property content
12945
+ @type Ember.Object
12946
+ @default null
12947
+ @private
12948
+ */
12949
+ content: null,
12950
+
12951
+ init: function () {
12952
+ this._super.apply(this, arguments);
12953
+ _emberMetal.meta(this).setProxy();
12954
+ },
12950
12955
 
12951
- var content = _emberMetal.get(this, 'content');
12952
- _emberMetal.assert('Cannot delegate set(\'' + key + '\', ' + value + ') to the \'content\' property of object proxy ' + this + ': its \'content\' is undefined.', content);
12956
+ _initializeTag: _emberMetal.on('init', function () {
12957
+ _emberMetal.meta(this)._tag = new ProxyTag(this);
12958
+ }),
12953
12959
 
12954
- _emberMetal.deprecate('You attempted to set `' + key + '` from `' + this + '`, but object proxying is deprecated. Please use `model.' + key + '` instead.', !this.isController, { id: 'ember-runtime.controller-proxy', until: '3.0.0' });
12955
- return _emberMetal.set(content, key, value);
12956
- }, _Mixin$create));
12957
- });
12960
+ _contentDidChange: _emberMetal.observer('content', function () {
12961
+ _emberMetal.assert('Can\'t set Proxy\'s content to itself', _emberMetal.get(this, 'content') !== this);
12962
+ _emberMetal.tagFor(this).contentDidChange();
12963
+ }),
12958
12964
 
12959
- /**
12960
- The object whose properties will be forwarded.
12961
- @property content
12962
- @type Ember.Object
12963
- @default null
12964
- @private
12965
- */
12965
+ isTruthy: _emberRuntimeComputedComputed_macros.bool('content'),
12966
+
12967
+ _debugContainerKey: null,
12968
+
12969
+ willWatchProperty: function (key) {
12970
+ var contentKey = 'content.' + key;
12971
+ _emberMetal._addBeforeObserver(this, contentKey, null, contentPropertyWillChange);
12972
+ _emberMetal.addObserver(this, contentKey, null, contentPropertyDidChange);
12973
+ },
12974
+
12975
+ didUnwatchProperty: function (key) {
12976
+ var contentKey = 'content.' + key;
12977
+ _emberMetal._removeBeforeObserver(this, contentKey, null, contentPropertyWillChange);
12978
+ _emberMetal.removeObserver(this, contentKey, null, contentPropertyDidChange);
12979
+ },
12980
+
12981
+ unknownProperty: function (key) {
12982
+ var content = _emberMetal.get(this, 'content');
12983
+ if (content) {
12984
+ _emberMetal.deprecate('You attempted to access `' + key + '` from `' + this + '`, but object proxying is deprecated. Please use `model.' + key + '` instead.', !this.isController, { id: 'ember-runtime.controller-proxy', until: '3.0.0' });
12985
+ return _emberMetal.get(content, key);
12986
+ }
12987
+ },
12988
+
12989
+ setUnknownProperty: function (key, value) {
12990
+ var m = _emberMetal.meta(this);
12991
+ if (m.proto === this) {
12992
+ // if marked as prototype then just defineProperty
12993
+ // rather than delegate
12994
+ _emberMetal.defineProperty(this, key, null, value);
12995
+ return value;
12996
+ }
12997
+
12998
+ var content = _emberMetal.get(this, 'content');
12999
+ _emberMetal.assert('Cannot delegate set(\'' + key + '\', ' + value + ') to the \'content\' property of object proxy ' + this + ': its \'content\' is undefined.', content);
13000
+
13001
+ _emberMetal.deprecate('You attempted to set `' + key + '` from `' + this + '`, but object proxying is deprecated. Please use `model.' + key + '` instead.', !this.isController, { id: 'ember-runtime.controller-proxy', until: '3.0.0' });
13002
+ return _emberMetal.set(content, key, value);
13003
+ }
13004
+ });
13005
+ });
12966
13006
  enifed('ember-runtime/mixins/action_handler', ['exports', 'ember-metal'], function (exports, _emberMetal) {
12967
13007
  /**
12968
13008
  @module ember
@@ -13294,20 +13334,19 @@ enifed('ember-runtime/mixins/array', ['exports', 'ember-utils', 'ember-metal', '
13294
13334
 
13295
13335
  _emberMetal.sendEvent(array, '@array:change', [array, startIdx, removeAmt, addAmt]);
13296
13336
 
13297
- var length = _emberMetal.get(array, 'length');
13298
- var cachedFirst = _emberMetal.cacheFor(array, 'firstObject');
13299
- var cachedLast = _emberMetal.cacheFor(array, 'lastObject');
13337
+ var meta = _emberMetal.peekMeta(array);
13338
+ var cache = meta && meta.readableCache();
13300
13339
 
13301
- if (objectAt(array, 0) !== cachedFirst) {
13302
- _emberMetal.propertyWillChange(array, 'firstObject');
13303
- _emberMetal.propertyDidChange(array, 'firstObject');
13304
- }
13305
-
13306
- if (objectAt(array, length - 1) !== cachedLast) {
13307
- _emberMetal.propertyWillChange(array, 'lastObject');
13308
- _emberMetal.propertyDidChange(array, 'lastObject');
13340
+ if (cache) {
13341
+ if (cache.firstObject !== undefined && objectAt(array, 0) !== _emberMetal.cacheFor.get(cache, 'firstObject')) {
13342
+ _emberMetal.propertyWillChange(array, 'firstObject');
13343
+ _emberMetal.propertyDidChange(array, 'firstObject');
13344
+ }
13345
+ if (cache.lastObject !== undefined && objectAt(array, _emberMetal.get(array, 'length') - 1) !== _emberMetal.cacheFor.get(cache, 'lastObject')) {
13346
+ _emberMetal.propertyWillChange(array, 'lastObject');
13347
+ _emberMetal.propertyDidChange(array, 'lastObject');
13348
+ }
13309
13349
  }
13310
-
13311
13350
  return array;
13312
13351
  }
13313
13352
 
@@ -19327,7 +19366,7 @@ enifed("ember/features", ["exports"], function (exports) {
19327
19366
  enifed("ember/version", ["exports"], function (exports) {
19328
19367
  "use strict";
19329
19368
 
19330
- exports.default = "2.10.0-beta.1";
19369
+ exports.default = "2.10.0-beta.2";
19331
19370
  });
19332
19371
  /*!
19333
19372
  * @overview RSVP - a tiny implementation of Promises/A+.
@@ -6,7 +6,7 @@
6
6
  * Portions Copyright 2008-2011 Apple Inc. All rights reserved.
7
7
  * @license Licensed under MIT license
8
8
  * See https://raw.github.com/emberjs/ember.js/master/LICENSE
9
- * @version 2.10.0-beta.1
9
+ * @version 2.10.0-beta.2
10
10
  */
11
11
 
12
12
  var enifed, requireModule, require, Ember;
@@ -2819,10 +2819,6 @@ enifed('ember-metal/chains', ['exports', 'ember-utils', 'ember-metal/property_ge
2819
2819
  }
2820
2820
 
2821
2821
  function addChainWatcher(obj, keyName, node) {
2822
- if (!isObject(obj)) {
2823
- return;
2824
- }
2825
-
2826
2822
  var m = _emberMetalMeta.meta(obj);
2827
2823
  m.writableChainWatchers(makeChainWatcher).add(keyName, node);
2828
2824
  _emberMetalWatch_key.watchKey(obj, keyName, m);
@@ -2869,10 +2865,15 @@ enifed('ember-metal/chains', ['exports', 'ember-utils', 'ember-metal/property_ge
2869
2865
  this._value = value;
2870
2866
  this._paths = {};
2871
2867
  if (this._watching) {
2872
- this._object = parent.value();
2873
- if (this._object) {
2874
- addChainWatcher(this._object, this._key, this);
2868
+ var obj = parent.value();
2869
+
2870
+ if (!isObject(obj)) {
2871
+ return;
2875
2872
  }
2873
+
2874
+ this._object = obj;
2875
+
2876
+ addChainWatcher(this._object, this._key, this);
2876
2877
  }
2877
2878
  }
2878
2879
 
@@ -3005,11 +3006,19 @@ enifed('ember-metal/chains', ['exports', 'ember-utils', 'ember-metal/property_ge
3005
3006
 
3006
3007
  notify: function (revalidate, affected) {
3007
3008
  if (revalidate && this._watching) {
3008
- var obj = this._parent.value();
3009
- if (obj !== this._object) {
3010
- removeChainWatcher(this._object, this._key, this);
3011
- this._object = obj;
3012
- addChainWatcher(obj, this._key, this);
3009
+ var parentValue = this._parent.value();
3010
+
3011
+ if (parentValue !== this._object) {
3012
+ if (this._object) {
3013
+ removeChainWatcher(this._object, this._key, this);
3014
+ }
3015
+
3016
+ if (isObject(parentValue)) {
3017
+ this._object = parentValue;
3018
+ addChainWatcher(parentValue, this._key, this);
3019
+ } else {
3020
+ this._object = undefined;
3021
+ }
3013
3022
  }
3014
3023
  this._value = undefined;
3015
3024
  }
@@ -4632,7 +4641,6 @@ enifed('ember-metal/index', ['exports', 'require', 'ember-metal/core', 'ember-me
4632
4641
  exports.runInTransaction = _emberMetalTransaction.default;
4633
4642
  exports.didRender = _emberMetalTransaction.didRender;
4634
4643
  exports.assertNotRendered = _emberMetalTransaction.assertNotRendered;
4635
- exports.IS_PROXY = _emberMetalIs_proxy.IS_PROXY;
4636
4644
  exports.isProxy = _emberMetalIs_proxy.isProxy;
4637
4645
  exports.descriptor = _emberMetalDescriptor.default;
4638
4646
 
@@ -5133,16 +5141,18 @@ enifed('ember-metal/is_present', ['exports', 'ember-metal/is_blank'], function (
5133
5141
  return !_emberMetalIs_blank.default(obj);
5134
5142
  }
5135
5143
  });
5136
- enifed('ember-metal/is_proxy', ['exports', 'ember-utils'], function (exports, _emberUtils) {
5144
+ enifed('ember-metal/is_proxy', ['exports', 'ember-metal/meta'], function (exports, _emberMetalMeta) {
5137
5145
  'use strict';
5138
5146
 
5139
5147
  exports.isProxy = isProxy;
5140
- var IS_PROXY = _emberUtils.symbol('IS_PROXY');
5141
-
5142
- exports.IS_PROXY = IS_PROXY;
5143
5148
 
5144
5149
  function isProxy(value) {
5145
- return typeof value === 'object' && value && value[IS_PROXY];
5150
+ if (typeof value === 'object' && value) {
5151
+ var meta = _emberMetalMeta.peekMeta(value);
5152
+ return meta && meta.isProxy();
5153
+ }
5154
+
5155
+ return false;
5146
5156
  }
5147
5157
  });
5148
5158
  enifed('ember-metal/libraries', ['exports', 'ember-metal/debug', 'ember-metal/features'], function (exports, _emberMetalDebug, _emberMetalFeatures) {
@@ -5802,9 +5812,11 @@ enifed('ember-metal/meta', ['exports', 'ember-utils', 'ember-metal/features', 'e
5802
5812
  tags: ownMap
5803
5813
  };
5804
5814
 
5815
+ // FLAGS
5805
5816
  var SOURCE_DESTROYING = 1 << 1;
5806
5817
  var SOURCE_DESTROYED = 1 << 2;
5807
5818
  var META_DESTROYED = 1 << 3;
5819
+ var IS_PROXY = 1 << 4;
5808
5820
 
5809
5821
  if (true || false) {
5810
5822
  members.lastRendered = ownMap;
@@ -5940,6 +5952,14 @@ enifed('ember-metal/meta', ['exports', 'ember-utils', 'ember-metal/features', 'e
5940
5952
  this._flags |= META_DESTROYED;
5941
5953
  };
5942
5954
 
5955
+ Meta.prototype.isProxy = function isProxy() {
5956
+ return (this._flags & IS_PROXY) !== 0;
5957
+ };
5958
+
5959
+ Meta.prototype.setProxy = function setProxy() {
5960
+ this._flags |= IS_PROXY;
5961
+ };
5962
+
5943
5963
  // Implements a member that is a lazily created, non-inheritable
5944
5964
  // POJO.
5945
5965
  function ownMap(name, Meta) {
@@ -11789,7 +11809,7 @@ enifed("ember/features", ["exports"], function (exports) {
11789
11809
  enifed("ember/version", ["exports"], function (exports) {
11790
11810
  "use strict";
11791
11811
 
11792
- exports.default = "2.10.0-beta.1";
11812
+ exports.default = "2.10.0-beta.2";
11793
11813
  });
11794
11814
  enifed("glimmer-compiler/index", ["exports", "glimmer-compiler/lib/compiler", "glimmer-compiler/lib/template-visitor"], function (exports, _glimmerCompilerLibCompiler, _glimmerCompilerLibTemplateVisitor) {
11795
11815
  "use strict";
@@ -12149,7 +12169,7 @@ enifed("glimmer-compiler/lib/javascript-compiler", ["exports", "glimmer-util"],
12149
12169
  exports.default = JavaScriptCompiler;
12150
12170
  });
12151
12171
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItY29tcGlsZXIvbGliL2phdmFzY3JpcHQtY29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBb0JBLEtBQUE7QUFBQSxpQkFBQSxLQUFBLEdBQUE7QUFDRSxnQkFBQSxDQUFBLFVBQVUsR0FBZ0IsRUFBRSxDQUFDO0FBQzdCLGdCQUFBLENBQUEsV0FBVyxHQUFhLEVBQUUsQ0FBQztTQVk1Qjs7QUFkRCxhQUFBLFdBSUUsTUFBTSxHQUFBLGtCQUFBO0FBQ0osbUJBQU87QUFDTCwwQkFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO0FBQzNCLHNCQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVc7YUFDekIsQ0FBQztTQUNIOztBQVRILGFBQUEsV0FXRSxJQUFJLEdBQUEsY0FBQyxTQUFvQixFQUFBO0FBQ3ZCLGdCQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNqQzs7ZUFiSCxLQUFBOzs7OztRQWdCQSxhQUFBOzhCQUFBLGFBQUE7O0FBQUEsaUJBQUEsYUFBQSxHQUFBO0FBQW1DLCtCQUFBLFNBQUEsQ0FBQSxDQUFLO0FBQy9CLGdCQUFBLENBQUEsTUFBTSxHQUFHLGlCQXBDRixPQUFPLEVBb0NnQixDQUFDO0FBQy9CLGdCQUFBLENBQUEsS0FBSyxHQUFHLGlCQXJDRCxPQUFPLEVBcUNlLENBQUM7QUFDOUIsZ0JBQUEsQ0FBQSxNQUFNLEdBQVksRUFBRSxDQUFDO0FBQ3JCLGdCQUFBLENBQUEsV0FBVyxHQUFHLEtBQUssQ0FBQztTQVk1Qjs7QUFoQkQscUJBQUEsV0FNRSxNQUFNLEdBQUEsa0JBQUE7QUFDSixtQkFBTztBQUNMLDBCQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7QUFDM0Isc0JBQU0sRUFBRSxJQUFJLENBQUMsV0FBVztBQUN4QixxQkFBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFO0FBQzNCLHNCQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7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LENBQUMsUUFBUSxFQUFPLENBQUM7QUFDL0Isc0JBQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFjLENBQUM7YUFDekM7QUFFRCxnQkFBSSxDQUFDLFNBQVMsQ0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1NBQ3RDOzs7O0FBL0xILDBCQUFBLFdBbU1FLElBQUksR0FBQSxjQUFDLElBQWUsRUFBQTtBQUNsQixtQkFBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7QUFDckMsb0JBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUNaO0FBRUQsZ0JBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoQzs7QUF6TUgsMEJBQUEsV0EyTUUsU0FBUyxHQUFBLG1CQUF1QyxHQUFNLEVBQUE7QUFDcEQsZ0JBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3ZCOztBQTdNSCwwQkFBQSxXQStNRSxRQUFRLEdBQUEsb0JBQUE7QUFDTix5QkFuUkssTUFBTSxDQW1SSixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSw4QkFBOEIsQ0FBQyxDQUFDO0FBQzNELG1CQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFPLENBQUM7U0FDL0I7O2VBbE5ILGtCQUFBOzs7c0JBQUEsa0JBQUEiLCJmaWxlIjoiamF2YXNjcmlwdC1jb21waWxlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydCB9IGZyb20gXCJnbGltbWVyLXV0aWxcIjtcbmltcG9ydCB7IFN0YWNrLCBEaWN0U2V0IH0gZnJvbSBcImdsaW1tZXItdXRpbFwiO1xuXG5pbXBvcnQge1xuICBUZW1wbGF0ZU1ldGEsXG4gIFNlcmlhbGl6ZWRCbG9jayxcbiAgU2VyaWFsaXplZFRlbXBsYXRlQmxvY2ssXG4gIFNlcmlhbGl6ZWRUZW1wbGF0ZSxcbiAgQ29yZSxcbiAgU3RhdGVtZW50LFxuICBFeHByZXNzaW9uLFxuICBFeHByZXNzaW9uc1xufSBmcm9tICdnbGltbWVyLXdpcmUtZm9ybWF0JztcblxuZXhwb3J0IHR5cGUgc3RyID0gc3RyaW5nO1xuZXhwb3J0IHR5cGUgUGFyYW1zID0gQ29yZS5QYXJhbXM7XG5leHBvcnQgdHlwZSBIYXNoID0gQ29yZS5IYXNoO1xuZXhwb3J0IHR5cGUgUGF0aCA9IENvcmUuUGF0aDtcbmV4cG9ydCB0eXBlIFN0YWNrVmFsdWUgPSBFeHByZXNzaW9uIHwgUGFyYW1zIHwgSGFzaCB8IHN0cjtcblxuZXhwb3J0IGNsYXNzIEJsb2NrIHtcbiAgc3RhdGVtZW50czogU3RhdGVtZW50W10gPSBbXTtcbiAgcG9zaXRpb25hbHM6IHN0cmluZ1tdID0gW107XG5cbiAgdG9KU09OKCk6IFNlcmlhbGl6ZWRCbG9jayB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXRlbWVudHM6IHRoaXMuc3RhdGVtZW50cyxcbiAgICAgIGxvY2FsczogdGhpcy5wb3NpdGlvbmFsc1xuICAgIH07XG4gIH1cblxuICBwdXNoKHN0YXRlbWVudDogU3RhdGVtZW50KSB7XG4gICAgdGhpcy5zdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVCbG9jayBleHRlbmRzIEJsb2NrIHtcbiAgcHVibGljIHlpZWxkcyA9IG5ldyBEaWN0U2V0PHN0cmluZz4oKTtcbiAgcHVibGljIG5hbWVkID0gbmV3IERpY3RTZXQ8c3RyaW5nPigpO1xuICBwdWJsaWMgYmxvY2tzOiBCbG9ja1tdID0gW107XG4gIHB1YmxpYyBoYXNQYXJ0aWFscyA9IGZhbHNlO1xuXG4gIHRvSlNPTigpOiBTZXJpYWxpemVkVGVtcGxhdGVCbG9jayB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXRlbWVudHM6IHRoaXMuc3RhdGVtZW50cyxcbiAgICAgIGxvY2FsczogdGhpcy5wb3NpdGlvbmFscyxcbiAgICAgIG5hbWVkOiB0aGlzLm5hbWVkLnRvQXJyYXkoKSxcbiAgICAgIHlpZWxkczogdGhpcy55aWVsZHMudG9BcnJheSgpLFxuICAgICAgYmxvY2tzOiB0aGlzLmJsb2Nrcy5tYXAoYiA9PiBiLnRvSlNPTigpKSxcbiAgICAgIGhhc1BhcnRpYWxzOiB0aGlzLmhhc1BhcnRpYWxzXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGU8VCBleHRlbmRzIFRlbXBsYXRlTWV0YT4ge1xuICBwdWJsaWMgYmxvY2sgPSBuZXcgVGVtcGxhdGVCbG9jaygpO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBtZXRhOiBUKSB7fVxuXG4gIHRvSlNPTigpOiBTZXJpYWxpemVkVGVtcGxhdGU8VD4ge1xuICAgIHJldHVybiB7XG4gICAgICBibG9jazogdGhpcy5ibG9jay50b0pTT04oKSxcbiAgICAgIG1ldGE6IHRoaXMubWV0YVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSmF2YVNjcmlwdENvbXBpbGVyPFQgZXh0ZW5kcyBUZW1wbGF0ZU1ldGE+IHtcbiAgc3RhdGljIHByb2Nlc3M8VCBleHRlbmRzIFRlbXBsYXRlTWV0YT4ob3Bjb2RlcywgbWV0YSk6IFRlbXBsYXRlPFQ+IHtcbiAgICBsZXQgY29tcGlsZXIgPSBuZXcgSmF2YVNjcmlwdENvbXBpbGVyPFQ+KG9wY29kZXMsIG1ldGEpO1xuICAgIHJldHVybiBjb21waWxlci5wcm9jZXNzKCk7XG4gIH1cblxuICBwcml2YXRlIHRlbXBsYXRlOiBUZW1wbGF0ZTxUPjtcbiAgcHJpdmF0ZSBibG9ja3MgPSBuZXcgU3RhY2s8QmxvY2s+KCk7XG4gIHByaXZhdGUgb3Bjb2RlczogYW55W107XG4gIHByaXZhdGUgdmFsdWVzOiBTdGFja1ZhbHVlW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihvcGNvZGVzLCBtZXRhOiBUKSB7XG4gICAgdGhpcy5vcGNvZGVzID0gb3Bjb2RlcztcbiAgICB0aGlzLnRlbXBsYXRlID0gbmV3IFRlbXBsYXRlKG1ldGEpO1xuICB9XG5cbiAgcHJvY2VzcygpOiBUZW1wbGF0ZTxUPiB7XG4gICAgdGhpcy5vcGNvZGVzLmZvckVhY2goKFtvcGNvZGUsIC4uLmFyZ3NdKSA9PiB7XG4gICAgICBpZiAoIXRoaXNbb3Bjb2RlXSkgeyB0aHJvdyBuZXcgRXJyb3IoYHVuaW1wbGVtZW50ZWQgJHtvcGNvZGV9IG9uIEphdmFTY3JpcHRDb21waWxlcmApOyB9XG4gICAgICB0aGlzW29wY29kZV0oLi4uYXJncyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZTtcbiAgfVxuXG4gIC8vLyBOZXN0aW5nXG5cbiAgc3RhcnRCbG9jayhbcHJvZ3JhbV0pIHtcbiAgICBsZXQgYmxvY2s6IEJsb2NrID0gbmV3IEJsb2NrKCk7XG4gICAgYmxvY2sucG9zaXRpb25hbHMgPSBwcm9ncmFtLmJsb2NrUGFyYW1zO1xuICAgIHRoaXMuYmxvY2tzLnB1c2goYmxvY2spO1xuICB9XG5cbiAgZW5kQmxvY2soKSB7XG4gICAgbGV0IHsgdGVtcGxhdGUsIGJsb2NrcyB9ID0gdGhpcztcbiAgICB0ZW1wbGF0ZS5ibG9jay5ibG9ja3MucHVzaChibG9ja3MucG9wKCkpO1xuICB9XG5cbiAgc3RhcnRQcm9ncmFtKCkge1xuICAgIHRoaXMuYmxvY2tzLnB1c2godGhpcy50ZW1wbGF0ZS5ibG9jayk7XG4gIH1cblxuICBlbmRQcm9ncmFtKCkge1xuXG4gIH1cblxuICAvLy8gU3RhdGVtZW50c1xuXG4gIHRleHQoY29udGVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoKFsndGV4dCcsIGNvbnRlbnRdKTtcbiAgfVxuXG4gIGFwcGVuZCh0cnVzdGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5wdXNoKFsnYXBwZW5kJywgdGhpcy5wb3BWYWx1ZTxFeHByZXNzaW9uPigpLCB0cnVzdGVkXSk7XG4gIH1cblxuICBjb21tZW50KHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnB1c2goWydjb21tZW50JywgdmFsdWVdKTtcbiAgfVxuXG4gIG1vZGlmaWVyKHBhdGg6IFBhdGgpIHtcbiAgICBsZXQgcGFyYW1zID0gdGhpcy5wb3BWYWx1ZTxQYXJhbXM+KCk7XG4gICAgbGV0IGhhc2ggPSB0aGlzLnBvcFZhbHVlPEhhc2g+KCk7XG5cbiAgICB0aGlzLnB1c2goWydtb2RpZmllcicsIHBhdGgsIHBhcmFtcywgaGFzaF0pO1xuICB9XG5cbiAgYmxvY2socGF0aDogUGF0aCwgdGVtcGxhdGU6IG51bWJlciwgaW52ZXJzZTogbnVtYmVyKSB7XG4gICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWU8UGFyYW1zPigpO1xuICAgIGxldCBoYXNoID0gdGhpcy5wb3BWYWx1ZTxIYXNoPigpO1xuXG4gICAgdGhpcy5wdXNoKFsnYmxvY2snLCBwYXRoLCBwYXJhbXMsIGhhc2gsIHRlbXBsYXRlLCBpbnZlcnNlXSk7XG4gIH1cblxuICBvcGVuRWxlbWVudCh0YWc6IHN0ciwgYmxvY2tQYXJhbXM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5wdXNoKFsnb3Blbi1lbGVtZW50JywgdGFnLCBibG9ja1BhcmFtc10pO1xuICB9XG5cbiAgZmx1c2hFbGVtZW50KCkge1xuICAgIHRoaXMucHVzaChbJ2ZsdXNoLWVsZW1lbnQnXSk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5wdXNoKFsnY2xvc2UtZWxlbWVudCddKTtcbiAgfVxuXG4gIHN0YXRpY0F0dHIobmFtZTogc3RyLCBuYW1lc3BhY2U6IHN0cikge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWU8RXhwcmVzc2lvbj4oKTtcbiAgICB0aGlzLnB1c2goWydzdGF0aWMtYXR0cicsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2VdKTtcbiAgfVxuXG4gIGR5bmFtaWNBdHRyKG5hbWU6IHN0ciwgbmFtZXNwYWNlOiBzdHIpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCk7XG4gICAgdGhpcy5wdXNoKFsnZHluYW1pYy1hdHRyJywgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZV0pO1xuICB9XG5cbiAgdHJ1c3RpbmdBdHRyKG5hbWU6IHN0ciwgbmFtZXNwYWNlOiBzdHIpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCk7XG4gICAgdGhpcy5wdXNoKFsndHJ1c3RpbmctYXR0cicsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2VdKTtcbiAgfVxuXG4gIHN0YXRpY0FyZyhuYW1lOiBzdHIpIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCk7XG4gICAgdGhpcy5wdXNoKFsnc3RhdGljLWFyZycsIG5hbWUuc2xpY2UoMSksIHZhbHVlXSk7XG4gIH1cblxuICBkeW5hbWljQXJnKG5hbWU6IHN0cikge1xuICAgIGxldCB2YWx1ZSA9IHRoaXMucG9wVmFsdWU8RXhwcmVzc2lvbj4oKTtcbiAgICB0aGlzLnB1c2goWydkeW5hbWljLWFyZycsIG5hbWUuc2xpY2UoMSksIHZhbHVlXSk7XG4gIH1cblxuICB5aWVsZCh0bzogc3RyaW5nKSB7XG4gICAgbGV0IHBhcmFtcyA9IHRoaXMucG9wVmFsdWU8UGFyYW1zPigpO1xuICAgIHRoaXMucHVzaChbJ3lpZWxkJywgdG8sIHBhcmFtc10pO1xuICAgIHRoaXMudGVtcGxhdGUuYmxvY2sueWllbGRzLmFkZCh0byk7XG4gIH1cblxuICBoYXNCbG9jayhuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5IYXNCbG9jaz4oWydoYXMtYmxvY2snLCBuYW1lXSk7XG4gICAgdGhpcy50ZW1wbGF0ZS5ibG9jay55aWVsZHMuYWRkKG5hbWUpO1xuICB9XG5cbiAgaGFzQmxvY2tQYXJhbXMobmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuSGFzQmxvY2tQYXJhbXM+KFsnaGFzLWJsb2NrLXBhcmFtcycsIG5hbWVdKTtcbiAgICB0aGlzLnRlbXBsYXRlLmJsb2NrLnlpZWxkcy5hZGQobmFtZSk7XG4gIH1cblxuICBwYXJ0aWFsKCkge1xuICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlPFBhcmFtcz4oKTtcbiAgICB0aGlzLnB1c2goWydwYXJ0aWFsJywgcGFyYW1zWzBdXSk7XG4gICAgdGhpcy50ZW1wbGF0ZS5ibG9jay5oYXNQYXJ0aWFscyA9IHRydWU7XG4gIH1cblxuICAvLy8gRXhwcmVzc2lvbnNcblxuICBsaXRlcmFsKHZhbHVlOiBFeHByZXNzaW9ucy5WYWx1ZSB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5VbmRlZmluZWQ+KFsndW5kZWZpbmVkJ10pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5WYWx1ZT4odmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHVua25vd24ocGF0aDogc3RyaW5nW10pIHtcbiAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5Vbmtub3duPihbJ3Vua25vd24nLCBwYXRoXSk7XG4gIH1cblxuICBhcmcocGF0aDogc3RyaW5nW10pIHtcbiAgICB0aGlzLnRlbXBsYXRlLmJsb2NrLm5hbWVkLmFkZChwYXRoWzBdKTtcbiAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5Bcmc+KFsnYXJnJywgcGF0aF0pO1xuICB9XG5cbiAgZ2V0KHBhdGg6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5wdXNoVmFsdWU8RXhwcmVzc2lvbnMuR2V0PihbJ2dldCcsIHBhdGhdKTtcbiAgfVxuXG4gIGNvbmNhdCgpIHtcbiAgICB0aGlzLnB1c2hWYWx1ZTxFeHByZXNzaW9ucy5Db25jYXQ+KFsnY29uY2F0JywgdGhpcy5wb3BWYWx1ZTxQYXJhbXM+KCldKTtcbiAgfVxuXG4gIGhlbHBlcihwYXRoOiBzdHJpbmdbXSkge1xuICAgIGxldCBwYXJhbXMgPSB0aGlzLnBvcFZhbHVlPFBhcmFtcz4oKTtcbiAgICBsZXQgaGFzaCA9IHRoaXMucG9wVmFsdWU8SGFzaD4oKTtcblxuICAgIHRoaXMucHVzaFZhbHVlPEV4cHJlc3Npb25zLkhlbHBlcj4oWydoZWxwZXInLCBwYXRoLCBwYXJhbXMsIGhhc2hdKTtcbiAgfVxuXG4gIC8vLyBTdGFjayBNYW5hZ2VtZW50IE9wY29kZXNcblxuICBwcmVwYXJlQXJyYXkoc2l6ZTogbnVtYmVyKSB7XG4gICAgbGV0IHZhbHVlcyA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgIHZhbHVlcy5wdXNoKHRoaXMucG9wVmFsdWUoKSk7XG4gICAgfVxuXG4gICAgdGhpcy5wdXNoVmFsdWU8UGFyYW1zPih2YWx1ZXMpO1xuICB9XG5cbiAgcHJlcGFyZU9iamVjdChzaXplOiBudW1iZXIpIHtcbiAgICBhc3NlcnQodGhpcy52YWx1ZXMubGVuZ3RoID49IHNpemUsIGBFeHBlY3RlZCAke3NpemV9IHZhbHVlcyBvbiB0aGUgc3RhY2ssIGZvdW5kICR7dGhpcy52YWx1ZXMubGVuZ3RofWApO1xuXG4gICAgbGV0IGtleXM6IHN0cmluZ1tdID0gbmV3IEFycmF5KHNpemUpO1xuICAgIGxldCB2YWx1ZXM6IEV4cHJlc3Npb25bXSA9IG5ldyBBcnJheShzaXplKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICBrZXlzW2ldID0gdGhpcy5wb3BWYWx1ZTxzdHI+KCk7XG4gICAgICB2YWx1ZXNbaV0gPSB0aGlzLnBvcFZhbHVlPEV4cHJlc3Npb24+KCk7XG4gICAgfVxuXG4gICAgdGhpcy5wdXNoVmFsdWU8SGFzaD4oW2tleXMsIHZhbHVlc10pO1xuICB9XG5cbiAgLy8vIFV0aWxpdGllc1xuXG4gIHB1c2goYXJnczogU3RhdGVtZW50KSB7XG4gICAgd2hpbGUgKGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9PT0gbnVsbCkge1xuICAgICAgYXJncy5wb3AoKTtcbiAgICB9XG5cbiAgICB0aGlzLmJsb2Nrcy5jdXJyZW50LnB1c2goYXJncyk7XG4gIH1cblxuICBwdXNoVmFsdWU8UyBleHRlbmRzIEV4cHJlc3Npb24gfCBQYXJhbXMgfCBIYXNoPih2YWw6IFMpIHtcbiAgICB0aGlzLnZhbHVlcy5wdXNoKHZhbCk7XG4gIH1cblxuICBwb3BWYWx1ZTxUIGV4dGVuZHMgU3RhY2tWYWx1ZT4oKTogVCB7XG4gICAgYXNzZXJ0KHRoaXMudmFsdWVzLmxlbmd0aCwgXCJObyBleHByZXNzaW9uIGZvdW5kIG9uIHN0YWNrXCIpO1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5wb3AoKSBhcyBUO1xuICB9XG59XG4iXX0=
12152
- enifed("glimmer-compiler/lib/template-compiler", ["exports", "glimmer-compiler/lib/template-visitor", "glimmer-compiler/lib/javascript-compiler", "glimmer-util", "glimmer-syntax"], function (exports, _glimmerCompilerLibTemplateVisitor, _glimmerCompilerLibJavascriptCompiler, _glimmerUtil, _glimmerSyntax) {
12172
+ enifed("glimmer-compiler/lib/template-compiler", ["exports", "glimmer-compiler/lib/template-visitor", "glimmer-compiler/lib/javascript-compiler", "glimmer-util"], function (exports, _glimmerCompilerLibTemplateVisitor, _glimmerCompilerLibJavascriptCompiler, _glimmerUtil) {
12153
12173
  "use strict";
12154
12174
 
12155
12175
  function isTrustedValue(value) {
@@ -12160,6 +12180,7 @@ enifed("glimmer-compiler/lib/template-compiler", ["exports", "glimmer-compiler/l
12160
12180
  function TemplateCompiler(options) {
12161
12181
  this.templateId = 0;
12162
12182
  this.templateIds = [];
12183
+ this.symbols = null;
12163
12184
  this.opcodes = [];
12164
12185
  this.includeMeta = false;
12165
12186
  this.options = options || {};
@@ -12198,11 +12219,13 @@ enifed("glimmer-compiler/lib/template-compiler", ["exports", "glimmer-compiler/l
12198
12219
  };
12199
12220
 
12200
12221
  TemplateCompiler.prototype.startBlock = function startBlock(program) {
12222
+ this.symbols = program[0].symbols;
12201
12223
  this.templateId++;
12202
12224
  this.opcode('startBlock', program, program);
12203
12225
  };
12204
12226
 
12205
12227
  TemplateCompiler.prototype.endBlock = function endBlock() {
12228
+ this.symbols = null;
12206
12229
  this.templateIds.push(this.templateId - 1);
12207
12230
  this.opcode('endBlock', null);
12208
12231
  };
@@ -12314,9 +12337,11 @@ enifed("glimmer-compiler/lib/template-compiler", ["exports", "glimmer-compiler/l
12314
12337
  this.opcode('literal', expr, expr.path.value);
12315
12338
  } else if (isArg(expr)) {
12316
12339
  this.arg([expr.path]);
12317
- } else if (_glimmerSyntax.isHelper(expr)) {
12340
+ } else if (isHelperInvocation(expr)) {
12318
12341
  this.prepareHelper(expr);
12319
12342
  this.opcode('helper', expr, expr.path.parts);
12343
+ } else if (isLocalVariable(expr, this.symbols)) {
12344
+ this.opcode('get', expr, expr.path.parts);
12320
12345
  } else {
12321
12346
  this.opcode('unknown', expr, expr.path.parts);
12322
12347
  }
@@ -12499,6 +12524,14 @@ enifed("glimmer-compiler/lib/template-compiler", ["exports", "glimmer-compiler/l
12499
12524
 
12500
12525
  exports.default = TemplateCompiler;
12501
12526
 
12527
+ function isHelperInvocation(mustache) {
12528
+ return mustache.params && mustache.params.length > 0 || mustache.hash && mustache.hash.pairs.length > 0;
12529
+ }
12530
+ function isLocalVariable(mustache, symbols) {
12531
+ var parts = mustache.path.parts;
12532
+
12533
+ return parts.length === 1 && symbols && symbols.hasLocalVariable(parts[0]);
12534
+ }
12502
12535
  function isYield(_ref12) {
12503
12536
  var path = _ref12.path;
12504
12537
 
@@ -12582,7 +12615,7 @@ enifed("glimmer-compiler/lib/template-compiler", ["exports", "glimmer-compiler/l
12582
12615
  }
12583
12616
  }
12584
12617
  });
12585
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItY29tcGlsZXIvbGliL3RlbXBsYXRlLWNvbXBpbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVdBLGFBQUEsY0FBQSxDQUF3QixLQUFLLEVBQUE7QUFDM0IsZUFBTyxLQUFLLENBQUMsT0FBTyxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7S0FDdEQ7O1FBRUQsZ0JBQUE7QUFnQkUsaUJBaEJGLGdCQUFBLENBZ0JjLE9BQTBCLEVBQUE7QUFMOUIsZ0JBQUEsQ0FBQSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBQ2YsZ0JBQUEsQ0FBQSxXQUFXLEdBQWEsRUFBRSxDQUFDO0FBQzNCLGdCQUFBLENBQUEsT0FBTyxHQUFVLEVBQUUsQ0FBQztBQUNwQixnQkFBQSxDQUFBLFdBQVcsR0FBRyxLQUFLLENBQUM7QUFHMUIsZ0JBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztTQUM5Qjs7QUFsQkgsd0JBQUEsQ0FDUyxPQUFPLEdBQUEsaUJBQUksT0FBMEIsRUFBRSxHQUFHLEVBQUE7QUFDL0MsZ0JBQUksZUFBZSxHQUFHLGdEQUFxQixDQUFDO0FBQzVDLDJCQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRTNCLGdCQUFJLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdDLGdCQUFJLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN4RCxtQkFBTyw4Q0FBbUIsT0FBTyxDQUFJLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDN0Q7O0FBUkgsd0JBQUEsV0FvQkUsT0FBTyxHQUFBLGlCQUFDLE9BQU8sRUFBQTs7O0FBQ2IsbUJBQU8sQ0FBQyxPQUFPLENBQUMsVUFBQyxJQUFlLEVBQUE7b0JBQWQsSUFBSSxHQUFMLElBQWU7O29CQUFMLElBQUksR0FBZCxJQUFlOztB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OlsiaW1wb3J0IFRlbXBsYXRlVmlzaXRvciBmcm9tIFwiLi90ZW1wbGF0ZS12aXNpdG9yXCI7XG5pbXBvcnQgSmF2YVNjcmlwdENvbXBpbGVyLCB7IFRlbXBsYXRlIH0gZnJvbSBcIi4vamF2YXNjcmlwdC1jb21waWxlclwiO1xuaW1wb3J0IHsgZ2V0QXR0ck5hbWVzcGFjZSB9IGZyb20gXCJnbGltbWVyLXV0aWxcIjtcbmltcG9ydCB7IGlzSGVscGVyIH0gZnJvbSBcImdsaW1tZXItc3ludGF4XCI7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tIFwiZ2xpbW1lci11dGlsXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZU1ldGEgfSBmcm9tIFwiZ2xpbW1lci13aXJlLWZvcm1hdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGVPcHRpb25zPFQgZXh0ZW5kcyBUZW1wbGF0ZU1ldGE+IHtcbiAgbWV0YT86IFQ7XG59XG5cbmZ1bmN0aW9uIGlzVHJ1c3RlZFZhbHVlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZS5lc2NhcGVkICE9PSB1bmRlZmluZWQgJiYgIXZhbHVlLmVzY2FwZWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbXBsYXRlQ29tcGlsZXI8VCBleHRlbmRzIFRlbXBsYXRlTWV0YT4ge1xuICBzdGF0aWMgY29tcGlsZTxUPihvcHRpb25zOiBDb21waWxlT3B0aW9uczxUPiwgYXN0KTogVGVtcGxhdGU8VD4ge1xuICAgIGxldCB0ZW1wbGF0ZVZpc2l0b3IgPSBuZXcgVGVtcGxhdGVWaXNpdG9yKCk7XG4gICAgdGVtcGxhdGVWaXNpdG9yLnZpc2l0KGFzdCk7XG5cbiAgICBsZXQgY29tcGlsZXIgPSBuZXcgVGVtcGxhdGVDb21waWxlcihvcHRpb25zKTtcbiAgICBsZXQgb3Bjb2RlcyA9IGNvbXBpbGVyLnByb2Nlc3ModGVtcGxhdGVWaXNpdG9yLmFjdGlvbnMpO1xuICAgIHJldHVybiBKYXZhU2NyaXB0Q29tcGlsZXIucHJvY2VzczxUPihvcGNvZGVzLCBvcHRpb25zLm1ldGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcHRpb25zOiBDb21waWxlT3B0aW9uczxUPjtcbiAgcHJpdmF0ZSB0ZW1wbGF0ZUlkID0gMDtcbiAgcHJpdmF0ZSB0ZW1wbGF0ZUlkczogbnVtYmVyW10gPSBbXTtcbiAgcHJpdmF0ZSBvcGNvZGVzOiBhbnlbXSA9IFtdO1xuICBwcml2YXRlIGluY2x1ZGVNZXRhID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogQ29tcGlsZU9wdGlvbnM8VD4pIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICB9XG5cbiAgcHJvY2VzcyhhY3Rpb25zKTogYW55W10ge1xuICAgIGFjdGlvbnMuZm9yRWFjaCgoW25hbWUsIC4uLmFyZ3NdKSA9PiB7XG4gICAgICBpZiAoIXRoaXNbbmFtZV0pIHsgdGhyb3cgbmV3IEVycm9yKGBVbmltcGxlbWVudGVkICR7bmFtZX0gb24gVGVtcGxhdGVDb21waWxlcmApOyB9XG4gICAgICB0aGlzW25hbWVdKC4uLmFyZ3MpO1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLm9wY29kZXM7XG4gIH1cblxuICBzdGFydFByb2dyYW0ocHJvZ3JhbSkge1xuICAgIHRoaXMub3Bjb2RlKCdzdGFydFByb2dyYW0nLCBwcm9ncmFtLCBwcm9ncmFtKTtcbiAgfVxuXG4gIGVuZFByb2dyYW0oKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2VuZFByb2dyYW0nLCBudWxsKTtcbiAgfVxuXG4gIHN0YXJ0QmxvY2socHJvZ3JhbSkge1xuICAgIHRoaXMudGVtcGxhdGVJZCsrO1xuICAgIHRoaXMub3Bjb2RlKCdzdGFydEJsb2NrJywgcHJvZ3JhbSwgcHJvZ3JhbSk7XG4gIH1cblxuICBlbmRCbG9jaygpIHtcbiAgICB0aGlzLnRlbXBsYXRlSWRzLnB1c2godGhpcy50ZW1wbGF0ZUlkIC0gMSk7XG4gICAgdGhpcy5vcGNvZGUoJ2VuZEJsb2NrJywgbnVsbCk7XG4gIH1cblxuICB0ZXh0KFthY3Rpb25dKSB7XG4gICAgdGhpcy5vcGNvZGUoJ3RleHQnLCBhY3Rpb24sIGFjdGlvbi5jaGFycyk7XG4gIH1cblxuICBjb21tZW50KFthY3Rpb25dKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2NvbW1lbnQnLCBhY3Rpb24sIGFjdGlvbi52YWx1ZSk7XG4gIH1cblxuICBvcGVuRWxlbWVudChbYWN0aW9uXSkge1xuICAgIHRoaXMub3Bjb2RlKCdvcGVuRWxlbWVudCcsIGFjdGlvbiwgYWN0aW9uLnRhZywgYWN0aW9uLmJsb2NrUGFyYW1zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdGlvbi5hdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLmF0dHJpYnV0ZShbYWN0aW9uLmF0dHJpYnV0ZXNbaV1dKTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdGlvbi5tb2RpZmllcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMubW9kaWZpZXIoW2FjdGlvbi5tb2RpZmllcnNbaV1dKTtcbiAgICB9XG4gICAgdGhpcy5vcGNvZGUoJ2ZsdXNoRWxlbWVudCcsIG51bGwpO1xuICB9XG5cbiAgY2xvc2VFbGVtZW50KCkge1xuICAgIHRoaXMub3Bjb2RlKCdjbG9zZUVsZW1lbnQnLCBudWxsKTtcbiAgfVxuXG4gIGF0dHJpYnV0ZShbYWN0aW9uXSkge1xuICAgIGxldCB7IG5hbWUsIHZhbHVlIH0gPSBhY3Rpb247XG5cbiAgICBsZXQgbmFtZXNwYWNlID0gZ2V0QXR0ck5hbWVzcGFjZShuYW1lKTtcblxuICAgIGxldCBpc1N0YXRpYyA9IHRoaXMucHJlcGFyZUF0dHJpYnV0ZVZhbHVlKHZhbHVlKTtcblxuICAgIGlmIChuYW1lLmNoYXJBdCgwKSA9PT0gJ0AnKSB7XG4gICAgICAvLyBBcmd1bWVudHNcbiAgICAgIGlmIChpc1N0YXRpYykge1xuICAgICAgICB0aGlzLm9wY29kZSgnc3RhdGljQXJnJywgYWN0aW9uLCBuYW1lKTtcbiAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnZhbHVlLnR5cGUgPT09ICdNdXN0YWNoZVN0YXRlbWVudCcpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2R5bmFtaWNBcmcnLCBhY3Rpb24sIG5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2R5bmFtaWNBcmcnLCBhY3Rpb24sIG5hbWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgaXNUcnVzdGluZyA9IGlzVHJ1c3RlZFZhbHVlKHZhbHVlKTtcblxuICAgICAgaWYgKGlzU3RhdGljKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdzdGF0aWNBdHRyJywgYWN0aW9uLCBuYW1lLCBuYW1lc3BhY2UpO1xuICAgICAgfSBlbHNlIGlmIChpc1RydXN0aW5nKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCd0cnVzdGluZ0F0dHInLCBhY3Rpb24sIG5hbWUsIG5hbWVzcGFjZSk7XG4gICAgICB9IGVsc2UgaWYgKGFjdGlvbi52YWx1ZS50eXBlID09PSAnTXVzdGFjaGVTdGF0ZW1lbnQnKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdkeW5hbWljQXR0cicsIGFjdGlvbiwgbmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wY29kZSgnZHluYW1pY0F0dHInLCBhY3Rpb24sIG5hbWUsIG5hbWVzcGFjZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbW9kaWZpZXIoW2FjdGlvbl0pIHtcbiAgICBsZXQgeyBwYXRoOiB7IHBhcnRzIH0gfSA9IGFjdGlvbjtcblxuICAgIHRoaXMucHJlcGFyZUhlbHBlcihhY3Rpb24pO1xuICAgIHRoaXMub3Bjb2RlKCdtb2RpZmllcicsIGFjdGlvbiwgcGFydHMpO1xuICB9XG5cbiAgbXVzdGFjaGUoW2FjdGlvbl0pIHtcbiAgICBpZiAoaXNZaWVsZChhY3Rpb24pKSB7XG4gICAgICBsZXQgdG8gPSBhc3NlcnRWYWxpZFlpZWxkKGFjdGlvbik7XG4gICAgICB0aGlzLnlpZWxkKHRvLCBhY3Rpb24pO1xuICAgIH0gZWxzZSBpZiAoaXNQYXJ0aWFsKGFjdGlvbikpIHtcbiAgICAgIGxldCBwYXJhbXMgPSBhc3NlcnRWYWxpZFBhcnRpYWwoYWN0aW9uKTtcbiAgICAgIHRoaXMucGFydGlhbChwYXJhbXMsIGFjdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubXVzdGFjaGVFeHByZXNzaW9uKGFjdGlvbik7XG4gICAgICB0aGlzLm9wY29kZSgnYXBwZW5kJywgYWN0aW9uLCAhYWN0aW9uLmVzY2FwZWQpO1xuICAgIH1cbiAgfVxuXG4gIGJsb2NrKFthY3Rpb24vKiwgaW5kZXgsIGNvdW50Ki9dKSB7XG4gICAgdGhpcy5wcmVwYXJlSGVscGVyKGFjdGlvbik7XG4gICAgbGV0IHRlbXBsYXRlSWQgPSB0aGlzLnRlbXBsYXRlSWRzLnBvcCgpO1xuICAgIGxldCBpbnZlcnNlSWQgPSBhY3Rpb24uaW52ZXJzZSA9PT0gbnVsbCA/IG51bGwgOiB0aGlzLnRlbXBsYXRlSWRzLnBvcCgpO1xuICAgIHRoaXMub3Bjb2RlKCdibG9jaycsIGFjdGlvbiwgYWN0aW9uLnBhdGgucGFydHMsIHRlbXBsYXRlSWQsIGludmVyc2VJZCk7XG4gIH1cblxuICAvLy8gSW50ZXJuYWwgYWN0aW9ucywgbm90IGZvdW5kIGluIHRoZSBvcmlnaW5hbCBwcm9jZXNzZWQgYWN0aW9uc1xuXG4gIGFyZyhbcGF0aF0pIHtcbiAgICBsZXQgeyBwYXJ0cyB9ID0gcGF0aDtcbiAgICB0aGlzLm9wY29kZSgnYXJnJywgcGF0aCwgcGFydHMpO1xuICB9XG5cbiAgbXVzdGFjaGVFeHByZXNzaW9uKGV4cHIpIHtcbiAgICBpZiAoaXNCdWlsdEluSGVscGVyKGV4cHIpKSB7XG4gICAgICB0aGlzLmJ1aWx0SW5IZWxwZXIoZXhwcik7XG4gICAgfSBlbHNlIGlmIChpc0xpdGVyYWwoZXhwcikpIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgZXhwciwgZXhwci5wYXRoLnZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKGlzQXJnKGV4cHIpKSB7XG4gICAgICB0aGlzLmFyZyhbZXhwci5wYXRoXSk7XG4gICAgfSBlbHNlIGlmIChpc0hlbHBlcihleHByKSkge1xuICAgICAgdGhpcy5wcmVwYXJlSGVscGVyKGV4cHIpO1xuICAgICAgdGhpcy5vcGNvZGUoJ2hlbHBlcicsIGV4cHIsIGV4cHIucGF0aC5wYXJ0cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3Bjb2RlKCd1bmtub3duJywgZXhwciwgZXhwci5wYXRoLnBhcnRzKTtcbiAgICB9XG4gIH1cblxuICAvLy8gSW50ZXJuYWwgU3ludGF4XG5cbiAgeWllbGQodG86IHN0cmluZywgYWN0aW9uKSB7XG4gICAgdGhpcy5wcmVwYXJlUGFyYW1zKGFjdGlvbi5wYXJhbXMpO1xuICAgIHRoaXMub3Bjb2RlKCd5aWVsZCcsIGFjdGlvbiwgdG8pO1xuICB9XG5cbiAgaGFzQmxvY2sobmFtZTogc3RyaW5nLCBhY3Rpb24pIHtcbiAgICB0aGlzLm9wY29kZSgnaGFzQmxvY2snLCBhY3Rpb24sIG5hbWUpO1xuICB9XG5cbiAgaGFzQmxvY2tQYXJhbXMobmFtZTogc3RyaW5nLCBhY3Rpb24pIHtcbiAgICB0aGlzLm9wY29kZSgnaGFzQmxvY2tQYXJhbXMnLCBhY3Rpb24sIG5hbWUpO1xuICB9XG5cbiAgcGFydGlhbChwYXJhbXMsIGFjdGlvbikge1xuICAgIHRoaXMucHJlcGFyZVBhcmFtcyhhY3Rpb24ucGFyYW1zKTtcbiAgICB0aGlzLm9wY29kZSgncGFydGlhbCcsIGFjdGlvbik7XG4gIH1cblxuICBidWlsdEluSGVscGVyKGV4cHIpIHtcbiAgICBpZiAoaXNIYXNCbG9jayhleHByKSkge1xuICAgICAgbGV0IG5hbWUgPSBhc3NlcnRWYWxpZEhhc0Jsb2NrVXNhZ2UoZXhwci5wYXRoLm9yaWdpbmFsLCBleHByKTtcbiAgICAgIHRoaXMuaGFzQmxvY2sobmFtZSwgZXhwcik7XG4gICAgfSBlbHNlIGlmIChpc0hhc0Jsb2NrUGFyYW1zKGV4cHIpKSB7XG4gICAgICBsZXQgbmFtZSA9IGFzc2VydFZhbGlkSGFzQmxvY2tVc2FnZShleHByLnBhdGgub3JpZ2luYWwsIGV4cHIpO1xuICAgICAgdGhpcy5oYXNCbG9ja1BhcmFtcyhuYW1lLCBleHByKTtcbiAgICB9XG4gIH1cblxuICAvLy8gRXhwcmVzc2lvbnMsIGludm9rZWQgcmVjdXJzaXZlbHkgZnJvbSBwcmVwYXJlUGFyYW1zIGFuZCBwcmVwYXJlSGFzaFxuXG4gIFN1YkV4cHJlc3Npb24oZXhwcikge1xuICAgIGlmIChpc0J1aWx0SW5IZWxwZXIoZXhwcikpIHtcbiAgICAgIHRoaXMuYnVpbHRJbkhlbHBlcihleHByKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcmVwYXJlSGVscGVyKGV4cHIpO1xuICAgICAgdGhpcy5vcGNvZGUoJ2hlbHBlcicsIGV4cHIsIGV4cHIucGF0aC5wYXJ0cyk7XG4gICAgfVxuICB9XG5cbiAgUGF0aEV4cHJlc3Npb24oZXhwcikge1xuICAgIGlmIChleHByLmRhdGEpIHtcbiAgICAgIHRoaXMuYXJnKFtleHByXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdnZXQnLCBleHByLCBleHByLnBhcnRzKTtcbiAgICB9XG4gIH1cblxuICBTdHJpbmdMaXRlcmFsKGFjdGlvbikge1xuICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIEJvb2xlYW5MaXRlcmFsKGFjdGlvbikge1xuICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIE51bWJlckxpdGVyYWwoYWN0aW9uKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBhY3Rpb24udmFsdWUpO1xuICB9XG5cbiAgTnVsbExpdGVyYWwoYWN0aW9uKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBhY3Rpb24udmFsdWUpO1xuICB9XG5cbiAgVW5kZWZpbmVkTGl0ZXJhbChhY3Rpb24pIHtcbiAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIGFjdGlvbi52YWx1ZSk7XG4gIH1cblxuICAvLy8gVXRpbGl0aWVzXG5cbiAgb3Bjb2RlKG5hbWUsIGFjdGlvbiwgLi4uYXJncykge1xuICAgIGxldCBvcGNvZGUgPSBbbmFtZSwgLi4uYXJnc107XG4gICAgaWYgKHRoaXMuaW5jbHVkZU1ldGEgJiYgYWN0aW9uKSB7XG4gICAgICBvcGNvZGUucHVzaCh0aGlzLm1ldGEoYWN0aW9uKSk7XG4gICAgfVxuXG4gICAgdGhpcy5vcGNvZGVzLnB1c2gob3Bjb2RlKTtcbiAgfVxuXG4gIHByZXBhcmVIZWxwZXIoeyBwYXJhbXMsIGhhc2ggfSkge1xuICAgIHRoaXMucHJlcGFyZUhhc2goaGFzaCk7XG4gICAgdGhpcy5wcmVwYXJlUGFyYW1zKHBhcmFtcyk7XG4gIH1cblxuICBwcmVwYXJlUGF0aChwYXRoKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBwYXRoLCBwYXRoLnBhcnRzKTtcbiAgfVxuXG4gIHByZXBhcmVQYXJhbXMocGFyYW1zKSB7XG4gICAgaWYgKCFwYXJhbXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSBwYXJhbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGxldCBwYXJhbSA9IHBhcmFtc1tpXTtcblxuICAgICAgYXNzZXJ0KHRoaXNbcGFyYW0udHlwZV0sIGBVbmltcGxlbWVudGVkICR7cGFyYW0udHlwZX0gb24gVGVtcGxhdGVDb21waWxlcmApO1xuICAgICAgdGhpc1twYXJhbS50eXBlXShwYXJhbSk7XG4gICAgfVxuXG4gICAgdGhpcy5vcGNvZGUoJ3ByZXBhcmVBcnJheScsIG51bGwsIHBhcmFtcy5sZW5ndGgpO1xuICB9XG5cbiAgcHJlcGFyZUhhc2goaGFzaCkge1xuICAgIGxldCBwYWlycyA9IGhhc2gucGFpcnM7XG5cbiAgICBpZiAoIXBhaXJzLmxlbmd0aCkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gcGFpcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGxldCB7IGtleSwgdmFsdWUgfSA9IHBhaXJzW2ldO1xuXG4gICAgICBhc3NlcnQodGhpc1t2YWx1ZS50eXBlXSwgYFVuaW1wbGVtZW50ZWQgJHt2YWx1ZS50eXBlfSBvbiBUZW1wbGF0ZUNvbXBpbGVyYCk7XG4gICAgICB0aGlzW3ZhbHVlLnR5cGVdKHZhbHVlKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwga2V5KTtcbiAgICB9XG5cbiAgICB0aGlzLm9wY29kZSgncHJlcGFyZU9iamVjdCcsIG51bGwsIHBhaXJzLmxlbmd0aCk7XG4gIH1cblxuICBwcmVwYXJlQXR0cmlidXRlVmFsdWUodmFsdWUpIHtcbiAgICAvLyByZXR1cm5zIHRoZSBzdGF0aWMgdmFsdWUgaWYgdGhlIHZhbHVlIGlzIHN0YXRpY1xuXG4gICAgc3dpdGNoICh2YWx1ZS50eXBlKSB7XG4gICAgICBjYXNlICdUZXh0Tm9kZSc6XG4gICAgICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgdmFsdWUsIHZhbHVlLmNoYXJzKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlICdNdXN0YWNoZVN0YXRlbWVudCc6XG4gICAgICAgIHRoaXMuYXR0cmlidXRlTXVzdGFjaGUoW3ZhbHVlXSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGNhc2UgJ0NvbmNhdFN0YXRlbWVudCc6XG4gICAgICAgIHRoaXMucHJlcGFyZUNvbmNhdFBhcnRzKHZhbHVlLnBhcnRzKTtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2NvbmNhdCcsIHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByZXBhcmVDb25jYXRQYXJ0cyhwYXJ0cykge1xuICAgIGZvciAobGV0IGkgPSBwYXJ0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgbGV0IHBhcnQgPSBwYXJ0c1tpXTtcblxuICAgICAgaWYgKHBhcnQudHlwZSA9PT0gJ011c3RhY2hlU3RhdGVtZW50Jykge1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZU11c3RhY2hlKFtwYXJ0XSk7XG4gICAgICB9IGVsc2UgaWYgKHBhcnQudHlwZSA9PT0gJ1RleHROb2RlJykge1xuICAgICAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIHBhcnQuY2hhcnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMub3Bjb2RlKCdwcmVwYXJlQXJyYXknLCBudWxsLCBwYXJ0cy5sZW5ndGgpO1xuICB9XG5cbiAgYXR0cmlidXRlTXVzdGFjaGUoW2FjdGlvbl0pIHtcbiAgICB0aGlzLm11c3RhY2hlRXhwcmVzc2lvbihhY3Rpb24pO1xuICB9XG5cbiAgbWV0YShub2RlKSB7XG4gICAgbGV0IGxvYyA9IG5vZGUubG9jO1xuICAgIGlmICghbG9jKSB7IHJldHVybiBbXTsgfVxuXG4gICAgbGV0IHsgc291cmNlLCBzdGFydCwgZW5kIH0gPSBsb2M7XG4gICAgcmV0dXJuIFsgJ2xvYycsIFtzb3VyY2UgfHwgbnVsbCwgW3N0YXJ0LmxpbmUsIHN0YXJ0LmNvbHVtbl0sIFtlbmQubGluZSwgZW5kLmNvbHVtbl1dIF07XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNZaWVsZCh7IHBhdGggfSkge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ3lpZWxkJztcbn1cblxuZnVuY3Rpb24gaXNQYXJ0aWFsKHsgcGF0aCB9KSB7XG4gIHJldHVybiBwYXRoLm9yaWdpbmFsID09PSAncGFydGlhbCc7XG59XG5cbmZ1bmN0aW9uIGlzQXJnKHsgcGF0aCB9KSB7XG4gIHJldHVybiBwYXRoLmRhdGE7XG59XG5cbmZ1bmN0aW9uIGlzTGl0ZXJhbCh7IHBhdGggfSkge1xuICByZXR1cm4gcGF0aC50eXBlID09PSAnU3RyaW5nTGl0ZXJhbCdcbiAgICAgIHx8IHBhdGgudHlwZSA9PT0gJ0Jvb2xlYW5MaXRlcmFsJ1xuICAgICAgfHwgcGF0aC50eXBlID09PSAnTnVtYmVyTGl0ZXJhbCdcbiAgICAgIHx8IHBhdGgudHlwZSA9PT0gJ051bGxMaXRlcmFsJ1xuICAgICAgfHwgcGF0aC50eXBlID09PSAnVW5kZWZpbmVkTGl0ZXJhbCc7XG59XG5cbmZ1bmN0aW9uIGlzSGFzQmxvY2soeyBwYXRoIH0pIHtcbiAgcmV0dXJuIHBhdGgub3JpZ2luYWwgPT09ICdoYXMtYmxvY2snO1xufVxuXG5mdW5jdGlvbiBpc0hhc0Jsb2NrUGFyYW1zKHsgcGF0aCB9KSB7XG4gIHJldHVybiBwYXRoLm9yaWdpbmFsID09PSAnaGFzLWJsb2NrLXBhcmFtcyc7XG59XG5cbmZ1bmN0aW9uIGlzQnVpbHRJbkhlbHBlcihleHByKSB7XG4gIHJldHVybiBpc0hhc0Jsb2NrKGV4cHIpXG4gICAgICB8fCBpc0hhc0Jsb2NrUGFyYW1zKGV4cHIpO1xufVxuXG5mdW5jdGlvbiBhc3NlcnRWYWxpZFlpZWxkKHsgaGFzaCB9KTogc3RyaW5nIHtcbiAgbGV0IHBhaXJzID0gaGFzaC5wYWlycztcblxuICBpZiAoKHBhaXJzLmxlbmd0aCA9PT0gMSAmJiBwYWlyc1swXS5rZXkgIT09ICd0bycpIHx8IHBhaXJzLmxlbmd0aCA+IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHlpZWxkIG9ubHkgdGFrZXMgYSBzaW5nbGUgbmFtZWQgYXJndW1lbnQ6ICd0bydgKTtcbiAgfSBlbHNlIGlmIChwYWlycy5sZW5ndGggPT09IDEgJiYgcGFpcnNbMF0udmFsdWUudHlwZSAhPT0gJ1N0cmluZ0xpdGVyYWwnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB5b3UgY2FuIG9ubHkgeWllbGQgdG8gYSBsaXRlcmFsIHZhbHVlYCk7XG4gIH0gZWxzZSBpZiAocGFpcnMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICdkZWZhdWx0JztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcGFpcnNbMF0udmFsdWUudmFsdWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0VmFsaWRQYXJ0aWFsKHsgcGFyYW1zLCBoYXNoLCBlc2NhcGVkLCBsb2MgfSkgLyogOiBleHByICovIHtcbiAgaWYgKHBhcmFtcyAmJiBwYXJhbXMubGVuZ3RoICE9PSAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBQYXJ0aWFsIGZvdW5kIHdpdGggbm8gYXJndW1lbnRzLiBZb3UgbXVzdCBzcGVjaWZ5IGEgdGVtcGxhdGUgbmFtZS4gKG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX0pYCk7XG4gIH0gZWxzZSBpZiAoaGFzaCAmJiBoYXNoLnBhaXJzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYHBhcnRpYWwgZG9lcyBub3QgdGFrZSBhbnkgbmFtZWQgYXJndW1lbnRzIChvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9KWApO1xuICB9IGVsc2UgaWYgKCFlc2NhcGVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB7e3twYXJ0aWFsIC4uLn19fSBpcyBub3Qgc3VwcG9ydGVkLCBwbGVhc2UgdXNlIHt7cGFydGlhbCAuLi59fSBpbnN0ZWFkIChvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9KWApO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtcztcbn1cblxuZnVuY3Rpb24gYXNzZXJ0VmFsaWRIYXNCbG9ja1VzYWdlKHR5cGUsIHsgcGFyYW1zLCBoYXNoLCBsb2MgfSk6IHN0cmluZyB7XG4gIGlmIChoYXNoICYmIGhhc2gucGFpcnMubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgJHt0eXBlfSBkb2VzIG5vdCB0YWtlIGFueSBuYW1lZCBhcmd1bWVudHNgKTtcbiAgfVxuXG4gIGlmIChwYXJhbXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuICdkZWZhdWx0JztcbiAgfSBlbHNlIGlmIChwYXJhbXMubGVuZ3RoID09PSAxKSB7XG4gICAgaWYgKHBhcmFtc1swXS50eXBlID09PSAnU3RyaW5nTGl0ZXJhbCcpIHtcbiAgICAgIHJldHVybiBwYXJhbXNbMF0udmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgeW91IGNhbiBvbmx5IHlpZWxkIHRvIGEgbGl0ZXJhbCB2YWx1ZSAob24gbGluZSAke2xvYy5zdGFydC5saW5lfSlgKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke3R5cGV9IG9ubHkgdGFrZXMgYSBzaW5nbGUgcG9zaXRpb25hbCBhcmd1bWVudCAob24gbGluZSAke2xvYy5zdGFydC5saW5lfSlgKTtcbiAgfVxufVxuIl19
12618
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItY29tcGlsZXIvbGliL3RlbXBsYXRlLWNvbXBpbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVVBLGFBQUEsY0FBQSxDQUF3QixLQUFLLEVBQUE7QUFDM0IsZUFBTyxLQUFLLENBQUMsT0FBTyxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7S0FDdEQ7O1FBRUQsZ0JBQUE7QUFpQkUsaUJBakJGLGdCQUFBLENBaUJjLE9BQTBCLEVBQUE7QUFOOUIsZ0JBQUEsQ0FBQSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBQ2YsZ0JBQUEsQ0FBQSxXQUFXLEdBQWEsRUFBRSxDQUFDO0FBQzNCLGdCQUFBLENBQUEsT0FBTyxHQUFnQixJQUFJLENBQUM7QUFDNUIsZ0JBQUEsQ0FBQSxPQUFPLEdBQVUsRUFBRSxDQUFDO0FBQ3BCLGdCQUFBLENBQUEsV0FBVyxHQUFHLEtBQUssQ0FBQztBQUcxQixnQkFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO1NBQzlCOztBQW5CSCx3QkFBQSxDQUNTLE9BQU8sR0FBQSxpQkFBSSxPQUEwQixFQUFFLEdBQUcsRUFBQTtBQUMvQyxnQkFBSSxlQUFlLEdBQUcsZ0RBQXFCLENBQUM7QUFDNUMsMkJBQWUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFM0IsZ0JBQUksUUFBUSxHQUFHLElBQUksZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDN0MsZ0JBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3hELG1CQUFPLDhDQUFtQixPQUFPLENBQUksT0FBTyxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM3RDs7QUFSSCx3QkFBQSxXQXFCRSxPQUFPLEdBQUEsaUJBQUMsT0FBTyxFQUFBOzs7QUFDYixtQkFBTyxDQUFDLE9BQU8sQ0FBQyxVQUFDLElBQWUsRUFBQTtvQkFBZCxJ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RUFBRSxNQUFxQixFQUFBO1lBQW5CLE1BQU0sR0FBUixNQUFxQixDQUFuQixNQUFNO1lBQUUsSUFBSSxHQUFkLE1BQXFCLENBQVgsSUFBSTtZQUFFLEdBQUcsR0FBbkIsTUFBcUIsQ0FBTCxHQUFHOztBQUN6RCxZQUFJLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7QUFDakMsa0JBQU0sSUFBSSxLQUFLLENBQUksSUFBSSx3Q0FBcUMsQ0FBQztTQUM5RDtBQUVELFlBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFDdkIsbUJBQU8sU0FBUyxDQUFDO1NBQ2xCLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUM5QixnQkFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLGVBQWUsRUFBRTtBQUN0Qyx1QkFBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO2FBQ3hCLE1BQU07QUFDTCxzQkFBTSxJQUFJLEtBQUsscURBQW1ELEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxPQUFJLENBQUM7YUFDdEY7U0FDRixNQUFNO0FBQ0wsa0JBQU0sSUFBSSxLQUFLLENBQUksSUFBSSwwREFBcUQsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLE9BQUksQ0FBQztTQUNoRztLQUNGIiwiZmlsZSI6InRlbXBsYXRlLWNvbXBpbGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFRlbXBsYXRlVmlzaXRvciwgeyBTeW1ib2xUYWJsZSB9IGZyb20gXCIuL3RlbXBsYXRlLXZpc2l0b3JcIjtcbmltcG9ydCBKYXZhU2NyaXB0Q29tcGlsZXIsIHsgVGVtcGxhdGUgfSBmcm9tIFwiLi9qYXZhc2NyaXB0LWNvbXBpbGVyXCI7XG5pbXBvcnQgeyBnZXRBdHRyTmFtZXNwYWNlIH0gZnJvbSBcImdsaW1tZXItdXRpbFwiO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcImdsaW1tZXItdXRpbFwiO1xuaW1wb3J0IHsgVGVtcGxhdGVNZXRhIH0gZnJvbSBcImdsaW1tZXItd2lyZS1mb3JtYXRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDb21waWxlT3B0aW9uczxUIGV4dGVuZHMgVGVtcGxhdGVNZXRhPiB7XG4gIG1ldGE/OiBUO1xufVxuXG5mdW5jdGlvbiBpc1RydXN0ZWRWYWx1ZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuZXNjYXBlZCAhPT0gdW5kZWZpbmVkICYmICF2YWx1ZS5lc2NhcGVkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZW1wbGF0ZUNvbXBpbGVyPFQgZXh0ZW5kcyBUZW1wbGF0ZU1ldGE+IHtcbiAgc3RhdGljIGNvbXBpbGU8VD4ob3B0aW9uczogQ29tcGlsZU9wdGlvbnM8VD4sIGFzdCk6IFRlbXBsYXRlPFQ+IHtcbiAgICBsZXQgdGVtcGxhdGVWaXNpdG9yID0gbmV3IFRlbXBsYXRlVmlzaXRvcigpO1xuICAgIHRlbXBsYXRlVmlzaXRvci52aXNpdChhc3QpO1xuXG4gICAgbGV0IGNvbXBpbGVyID0gbmV3IFRlbXBsYXRlQ29tcGlsZXIob3B0aW9ucyk7XG4gICAgbGV0IG9wY29kZXMgPSBjb21waWxlci5wcm9jZXNzKHRlbXBsYXRlVmlzaXRvci5hY3Rpb25zKTtcbiAgICByZXR1cm4gSmF2YVNjcmlwdENvbXBpbGVyLnByb2Nlc3M8VD4ob3Bjb2Rlcywgb3B0aW9ucy5tZXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgb3B0aW9uczogQ29tcGlsZU9wdGlvbnM8VD47XG4gIHByaXZhdGUgdGVtcGxhdGVJZCA9IDA7XG4gIHByaXZhdGUgdGVtcGxhdGVJZHM6IG51bWJlcltdID0gW107XG4gIHByaXZhdGUgc3ltYm9sczogU3ltYm9sVGFibGUgPSBudWxsO1xuICBwcml2YXRlIG9wY29kZXM6IGFueVtdID0gW107XG4gIHByaXZhdGUgaW5jbHVkZU1ldGEgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBDb21waWxlT3B0aW9uczxUPikge1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIH1cblxuICBwcm9jZXNzKGFjdGlvbnMpOiBhbnlbXSB7XG4gICAgYWN0aW9ucy5mb3JFYWNoKChbbmFtZSwgLi4uYXJnc10pID0+IHtcbiAgICAgIGlmICghdGhpc1tuYW1lXSkgeyB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQgJHtuYW1lfSBvbiBUZW1wbGF0ZUNvbXBpbGVyYCk7IH1cbiAgICAgIHRoaXNbbmFtZV0oLi4uYXJncyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMub3Bjb2RlcztcbiAgfVxuXG4gIHN0YXJ0UHJvZ3JhbShwcm9ncmFtKSB7XG4gICAgdGhpcy5vcGNvZGUoJ3N0YXJ0UHJvZ3JhbScsIHByb2dyYW0sIHByb2dyYW0pO1xuICB9XG5cbiAgZW5kUHJvZ3JhbSgpIHtcbiAgICB0aGlzLm9wY29kZSgnZW5kUHJvZ3JhbScsIG51bGwpO1xuICB9XG5cbiAgc3RhcnRCbG9jayhwcm9ncmFtKSB7XG4gICAgdGhpcy5zeW1ib2xzID0gcHJvZ3JhbVswXS5zeW1ib2xzO1xuICAgIHRoaXMudGVtcGxhdGVJZCsrO1xuICAgIHRoaXMub3Bjb2RlKCdzdGFydEJsb2NrJywgcHJvZ3JhbSwgcHJvZ3JhbSk7XG4gIH1cblxuICBlbmRCbG9jaygpIHtcbiAgICB0aGlzLnN5bWJvbHMgPSBudWxsO1xuICAgIHRoaXMudGVtcGxhdGVJZHMucHVzaCh0aGlzLnRlbXBsYXRlSWQgLSAxKTtcbiAgICB0aGlzLm9wY29kZSgnZW5kQmxvY2snLCBudWxsKTtcbiAgfVxuXG4gIHRleHQoW2FjdGlvbl0pIHtcbiAgICB0aGlzLm9wY29kZSgndGV4dCcsIGFjdGlvbiwgYWN0aW9uLmNoYXJzKTtcbiAgfVxuXG4gIGNvbW1lbnQoW2FjdGlvbl0pIHtcbiAgICB0aGlzLm9wY29kZSgnY29tbWVudCcsIGFjdGlvbiwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIG9wZW5FbGVtZW50KFthY3Rpb25dKSB7XG4gICAgdGhpcy5vcGNvZGUoJ29wZW5FbGVtZW50JywgYWN0aW9uLCBhY3Rpb24udGFnLCBhY3Rpb24uYmxvY2tQYXJhbXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWN0aW9uLmF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuYXR0cmlidXRlKFthY3Rpb24uYXR0cmlidXRlc1tpXV0pO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWN0aW9uLm1vZGlmaWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5tb2RpZmllcihbYWN0aW9uLm1vZGlmaWVyc1tpXV0pO1xuICAgIH1cbiAgICB0aGlzLm9wY29kZSgnZmx1c2hFbGVtZW50JywgbnVsbCk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2Nsb3NlRWxlbWVudCcsIG51bGwpO1xuICB9XG5cbiAgYXR0cmlidXRlKFthY3Rpb25dKSB7XG4gICAgbGV0IHsgbmFtZSwgdmFsdWUgfSA9IGFjdGlvbjtcblxuICAgIGxldCBuYW1lc3BhY2UgPSBnZXRBdHRyTmFtZXNwYWNlKG5hbWUpO1xuXG4gICAgbGV0IGlzU3RhdGljID0gdGhpcy5wcmVwYXJlQXR0cmlidXRlVmFsdWUodmFsdWUpO1xuXG4gICAgaWYgKG5hbWUuY2hhckF0KDApID09PSAnQCcpIHtcbiAgICAgIC8vIEFyZ3VtZW50c1xuICAgICAgaWYgKGlzU3RhdGljKSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdzdGF0aWNBcmcnLCBhY3Rpb24sIG5hbWUpO1xuICAgICAgfSBlbHNlIGlmIChhY3Rpb24udmFsdWUudHlwZSA9PT0gJ011c3RhY2hlU3RhdGVtZW50Jykge1xuICAgICAgICB0aGlzLm9wY29kZSgnZHluYW1pY0FyZycsIGFjdGlvbiwgbmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wY29kZSgnZHluYW1pY0FyZycsIGFjdGlvbiwgbmFtZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBpc1RydXN0aW5nID0gaXNUcnVzdGVkVmFsdWUodmFsdWUpO1xuXG4gICAgICBpZiAoaXNTdGF0aWMpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ3N0YXRpY0F0dHInLCBhY3Rpb24sIG5hbWUsIG5hbWVzcGFjZSk7XG4gICAgICB9IGVsc2UgaWYgKGlzVHJ1c3RpbmcpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ3RydXN0aW5nQXR0cicsIGFjdGlvbiwgbmFtZSwgbmFtZXNwYWNlKTtcbiAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLnZhbHVlLnR5cGUgPT09ICdNdXN0YWNoZVN0YXRlbWVudCcpIHtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2R5bmFtaWNBdHRyJywgYWN0aW9uLCBuYW1lKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3Bjb2RlKCdkeW5hbWljQXR0cicsIGFjdGlvbiwgbmFtZSwgbmFtZXNwYWNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBtb2RpZmllcihbYWN0aW9uXSkge1xuICAgIGxldCB7IHBhdGg6IHsgcGFydHMgfSB9ID0gYWN0aW9uO1xuXG4gICAgdGhpcy5wcmVwYXJlSGVscGVyKGFjdGlvbik7XG4gICAgdGhpcy5vcGNvZGUoJ21vZGlmaWVyJywgYWN0aW9uLCBwYXJ0cyk7XG4gIH1cblxuICBtdXN0YWNoZShbYWN0aW9uXSkge1xuICAgIGlmIChpc1lpZWxkKGFjdGlvbikpIHtcbiAgICAgIGxldCB0byA9IGFzc2VydFZhbGlkWWllbGQoYWN0aW9uKTtcbiAgICAgIHRoaXMueWllbGQodG8sIGFjdGlvbik7XG4gICAgfSBlbHNlIGlmIChpc1BhcnRpYWwoYWN0aW9uKSkge1xuICAgICAgbGV0IHBhcmFtcyA9IGFzc2VydFZhbGlkUGFydGlhbChhY3Rpb24pO1xuICAgICAgdGhpcy5wYXJ0aWFsKHBhcmFtcywgYWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tdXN0YWNoZUV4cHJlc3Npb24oYWN0aW9uKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdhcHBlbmQnLCBhY3Rpb24sICFhY3Rpb24uZXNjYXBlZCk7XG4gICAgfVxuICB9XG5cbiAgYmxvY2soW2FjdGlvbi8qLCBpbmRleCwgY291bnQqL10pIHtcbiAgICB0aGlzLnByZXBhcmVIZWxwZXIoYWN0aW9uKTtcbiAgICBsZXQgdGVtcGxhdGVJZCA9IHRoaXMudGVtcGxhdGVJZHMucG9wKCk7XG4gICAgbGV0IGludmVyc2VJZCA9IGFjdGlvbi5pbnZlcnNlID09PSBudWxsID8gbnVsbCA6IHRoaXMudGVtcGxhdGVJZHMucG9wKCk7XG4gICAgdGhpcy5vcGNvZGUoJ2Jsb2NrJywgYWN0aW9uLCBhY3Rpb24ucGF0aC5wYXJ0cywgdGVtcGxhdGVJZCwgaW52ZXJzZUlkKTtcbiAgfVxuXG4gIC8vLyBJbnRlcm5hbCBhY3Rpb25zLCBub3QgZm91bmQgaW4gdGhlIG9yaWdpbmFsIHByb2Nlc3NlZCBhY3Rpb25zXG5cbiAgYXJnKFtwYXRoXSkge1xuICAgIGxldCB7IHBhcnRzIH0gPSBwYXRoO1xuICAgIHRoaXMub3Bjb2RlKCdhcmcnLCBwYXRoLCBwYXJ0cyk7XG4gIH1cblxuICBtdXN0YWNoZUV4cHJlc3Npb24oZXhwcikge1xuICAgIGlmIChpc0J1aWx0SW5IZWxwZXIoZXhwcikpIHtcbiAgICAgIHRoaXMuYnVpbHRJbkhlbHBlcihleHByKTtcbiAgICB9IGVsc2UgaWYgKGlzTGl0ZXJhbChleHByKSkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBleHByLCBleHByLnBhdGgudmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoaXNBcmcoZXhwcikpIHtcbiAgICAgIHRoaXMuYXJnKFtleHByLnBhdGhdKTtcbiAgICB9IGVsc2UgaWYgKGlzSGVscGVySW52b2NhdGlvbihleHByKSkge1xuICAgICAgdGhpcy5wcmVwYXJlSGVscGVyKGV4cHIpO1xuICAgICAgdGhpcy5vcGNvZGUoJ2hlbHBlcicsIGV4cHIsIGV4cHIucGF0aC5wYXJ0cyk7XG4gICAgfSBlbHNlIGlmIChpc0xvY2FsVmFyaWFibGUoZXhwciwgdGhpcy5zeW1ib2xzKSkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2dldCcsIGV4cHIsIGV4cHIucGF0aC5wYXJ0cyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3Bjb2RlKCd1bmtub3duJywgZXhwciwgZXhwci5wYXRoLnBhcnRzKTtcbiAgICB9XG4gIH1cblxuICAvLy8gSW50ZXJuYWwgU3ludGF4XG5cbiAgeWllbGQodG86IHN0cmluZywgYWN0aW9uKSB7XG4gICAgdGhpcy5wcmVwYXJlUGFyYW1zKGFjdGlvbi5wYXJhbXMpO1xuICAgIHRoaXMub3Bjb2RlKCd5aWVsZCcsIGFjdGlvbiwgdG8pO1xuICB9XG5cbiAgaGFzQmxvY2sobmFtZTogc3RyaW5nLCBhY3Rpb24pIHtcbiAgICB0aGlzLm9wY29kZSgnaGFzQmxvY2snLCBhY3Rpb24sIG5hbWUpO1xuICB9XG5cbiAgaGFzQmxvY2tQYXJhbXMobmFtZTogc3RyaW5nLCBhY3Rpb24pIHtcbiAgICB0aGlzLm9wY29kZSgnaGFzQmxvY2tQYXJhbXMnLCBhY3Rpb24sIG5hbWUpO1xuICB9XG5cbiAgcGFydGlhbChwYXJhbXMsIGFjdGlvbikge1xuICAgIHRoaXMucHJlcGFyZVBhcmFtcyhhY3Rpb24ucGFyYW1zKTtcbiAgICB0aGlzLm9wY29kZSgncGFydGlhbCcsIGFjdGlvbik7XG4gIH1cblxuICBidWlsdEluSGVscGVyKGV4cHIpIHtcbiAgICBpZiAoaXNIYXNCbG9jayhleHByKSkge1xuICAgICAgbGV0IG5hbWUgPSBhc3NlcnRWYWxpZEhhc0Jsb2NrVXNhZ2UoZXhwci5wYXRoLm9yaWdpbmFsLCBleHByKTtcbiAgICAgIHRoaXMuaGFzQmxvY2sobmFtZSwgZXhwcik7XG4gICAgfSBlbHNlIGlmIChpc0hhc0Jsb2NrUGFyYW1zKGV4cHIpKSB7XG4gICAgICBsZXQgbmFtZSA9IGFzc2VydFZhbGlkSGFzQmxvY2tVc2FnZShleHByLnBhdGgub3JpZ2luYWwsIGV4cHIpO1xuICAgICAgdGhpcy5oYXNCbG9ja1BhcmFtcyhuYW1lLCBleHByKTtcbiAgICB9XG4gIH1cblxuICAvLy8gRXhwcmVzc2lvbnMsIGludm9rZWQgcmVjdXJzaXZlbHkgZnJvbSBwcmVwYXJlUGFyYW1zIGFuZCBwcmVwYXJlSGFzaFxuXG4gIFN1YkV4cHJlc3Npb24oZXhwcikge1xuICAgIGlmIChpc0J1aWx0SW5IZWxwZXIoZXhwcikpIHtcbiAgICAgIHRoaXMuYnVpbHRJbkhlbHBlcihleHByKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcmVwYXJlSGVscGVyKGV4cHIpO1xuICAgICAgdGhpcy5vcGNvZGUoJ2hlbHBlcicsIGV4cHIsIGV4cHIucGF0aC5wYXJ0cyk7XG4gICAgfVxuICB9XG5cbiAgUGF0aEV4cHJlc3Npb24oZXhwcikge1xuICAgIGlmIChleHByLmRhdGEpIHtcbiAgICAgIHRoaXMuYXJnKFtleHByXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3Bjb2RlKCdnZXQnLCBleHByLCBleHByLnBhcnRzKTtcbiAgICB9XG4gIH1cblxuICBTdHJpbmdMaXRlcmFsKGFjdGlvbikge1xuICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIEJvb2xlYW5MaXRlcmFsKGFjdGlvbikge1xuICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwgYWN0aW9uLnZhbHVlKTtcbiAgfVxuXG4gIE51bWJlckxpdGVyYWwoYWN0aW9uKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBhY3Rpb24udmFsdWUpO1xuICB9XG5cbiAgTnVsbExpdGVyYWwoYWN0aW9uKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBhY3Rpb24udmFsdWUpO1xuICB9XG5cbiAgVW5kZWZpbmVkTGl0ZXJhbChhY3Rpb24pIHtcbiAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIGFjdGlvbi52YWx1ZSk7XG4gIH1cblxuICAvLy8gVXRpbGl0aWVzXG5cbiAgb3Bjb2RlKG5hbWUsIGFjdGlvbiwgLi4uYXJncykge1xuICAgIGxldCBvcGNvZGUgPSBbbmFtZSwgLi4uYXJnc107XG4gICAgaWYgKHRoaXMuaW5jbHVkZU1ldGEgJiYgYWN0aW9uKSB7XG4gICAgICBvcGNvZGUucHVzaCh0aGlzLm1ldGEoYWN0aW9uKSk7XG4gICAgfVxuXG4gICAgdGhpcy5vcGNvZGVzLnB1c2gob3Bjb2RlKTtcbiAgfVxuXG4gIHByZXBhcmVIZWxwZXIoeyBwYXJhbXMsIGhhc2ggfSkge1xuICAgIHRoaXMucHJlcGFyZUhhc2goaGFzaCk7XG4gICAgdGhpcy5wcmVwYXJlUGFyYW1zKHBhcmFtcyk7XG4gIH1cblxuICBwcmVwYXJlUGF0aChwYXRoKSB7XG4gICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBwYXRoLCBwYXRoLnBhcnRzKTtcbiAgfVxuXG4gIHByZXBhcmVQYXJhbXMocGFyYW1zKSB7XG4gICAgaWYgKCFwYXJhbXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSBwYXJhbXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGxldCBwYXJhbSA9IHBhcmFtc1tpXTtcblxuICAgICAgYXNzZXJ0KHRoaXNbcGFyYW0udHlwZV0sIGBVbmltcGxlbWVudGVkICR7cGFyYW0udHlwZX0gb24gVGVtcGxhdGVDb21waWxlcmApO1xuICAgICAgdGhpc1twYXJhbS50eXBlXShwYXJhbSk7XG4gICAgfVxuXG4gICAgdGhpcy5vcGNvZGUoJ3ByZXBhcmVBcnJheScsIG51bGwsIHBhcmFtcy5sZW5ndGgpO1xuICB9XG5cbiAgcHJlcGFyZUhhc2goaGFzaCkge1xuICAgIGxldCBwYWlycyA9IGhhc2gucGFpcnM7XG5cbiAgICBpZiAoIXBhaXJzLmxlbmd0aCkge1xuICAgICAgdGhpcy5vcGNvZGUoJ2xpdGVyYWwnLCBudWxsLCBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gcGFpcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGxldCB7IGtleSwgdmFsdWUgfSA9IHBhaXJzW2ldO1xuXG4gICAgICBhc3NlcnQodGhpc1t2YWx1ZS50eXBlXSwgYFVuaW1wbGVtZW50ZWQgJHt2YWx1ZS50eXBlfSBvbiBUZW1wbGF0ZUNvbXBpbGVyYCk7XG4gICAgICB0aGlzW3ZhbHVlLnR5cGVdKHZhbHVlKTtcbiAgICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgbnVsbCwga2V5KTtcbiAgICB9XG5cbiAgICB0aGlzLm9wY29kZSgncHJlcGFyZU9iamVjdCcsIG51bGwsIHBhaXJzLmxlbmd0aCk7XG4gIH1cblxuICBwcmVwYXJlQXR0cmlidXRlVmFsdWUodmFsdWUpIHtcbiAgICAvLyByZXR1cm5zIHRoZSBzdGF0aWMgdmFsdWUgaWYgdGhlIHZhbHVlIGlzIHN0YXRpY1xuXG4gICAgc3dpdGNoICh2YWx1ZS50eXBlKSB7XG4gICAgICBjYXNlICdUZXh0Tm9kZSc6XG4gICAgICAgIHRoaXMub3Bjb2RlKCdsaXRlcmFsJywgdmFsdWUsIHZhbHVlLmNoYXJzKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlICdNdXN0YWNoZVN0YXRlbWVudCc6XG4gICAgICAgIHRoaXMuYXR0cmlidXRlTXVzdGFjaGUoW3ZhbHVlXSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGNhc2UgJ0NvbmNhdFN0YXRlbWVudCc6XG4gICAgICAgIHRoaXMucHJlcGFyZUNvbmNhdFBhcnRzKHZhbHVlLnBhcnRzKTtcbiAgICAgICAgdGhpcy5vcGNvZGUoJ2NvbmNhdCcsIHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHByZXBhcmVDb25jYXRQYXJ0cyhwYXJ0cykge1xuICAgIGZvciAobGV0IGkgPSBwYXJ0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgbGV0IHBhcnQgPSBwYXJ0c1tpXTtcblxuICAgICAgaWYgKHBhcnQudHlwZSA9PT0gJ011c3RhY2hlU3RhdGVtZW50Jykge1xuICAgICAgICB0aGlzLmF0dHJpYnV0ZU11c3RhY2hlKFtwYXJ0XSk7XG4gICAgICB9IGVsc2UgaWYgKHBhcnQudHlwZSA9PT0gJ1RleHROb2RlJykge1xuICAgICAgICB0aGlzLm9wY29kZSgnbGl0ZXJhbCcsIG51bGwsIHBhcnQuY2hhcnMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMub3Bjb2RlKCdwcmVwYXJlQXJyYXknLCBudWxsLCBwYXJ0cy5sZW5ndGgpO1xuICB9XG5cbiAgYXR0cmlidXRlTXVzdGFjaGUoW2FjdGlvbl0pIHtcbiAgICB0aGlzLm11c3RhY2hlRXhwcmVzc2lvbihhY3Rpb24pO1xuICB9XG5cbiAgbWV0YShub2RlKSB7XG4gICAgbGV0IGxvYyA9IG5vZGUubG9jO1xuICAgIGlmICghbG9jKSB7IHJldHVybiBbXTsgfVxuXG4gICAgbGV0IHsgc291cmNlLCBzdGFydCwgZW5kIH0gPSBsb2M7XG4gICAgcmV0dXJuIFsgJ2xvYycsIFtzb3VyY2UgfHwgbnVsbCwgW3N0YXJ0LmxpbmUsIHN0YXJ0LmNvbHVtbl0sIFtlbmQubGluZSwgZW5kLmNvbHVtbl1dIF07XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNIZWxwZXJJbnZvY2F0aW9uKG11c3RhY2hlKSB7XG4gIHJldHVybiAobXVzdGFjaGUucGFyYW1zICYmIG11c3RhY2hlLnBhcmFtcy5sZW5ndGggPiAwKSB8fFxuICAgIChtdXN0YWNoZS5oYXNoICYmIG11c3RhY2hlLmhhc2gucGFpcnMubGVuZ3RoID4gMCk7XG59XG5cbmZ1bmN0aW9uIGlzTG9jYWxWYXJpYWJsZShtdXN0YWNoZSwgc3ltYm9scykge1xuICBsZXQgeyBwYXJ0cyB9ID0gbXVzdGFjaGUucGF0aDtcbiAgcmV0dXJuIHBhcnRzLmxlbmd0aCA9PT0gMSAmJiBzeW1ib2xzICYmIHN5bWJvbHMuaGFzTG9jYWxWYXJpYWJsZShwYXJ0c1swXSk7XG59XG5cbmZ1bmN0aW9uIGlzWWllbGQoeyBwYXRoIH0pIHtcbiAgcmV0dXJuIHBhdGgub3JpZ2luYWwgPT09ICd5aWVsZCc7XG59XG5cbmZ1bmN0aW9uIGlzUGFydGlhbCh7IHBhdGggfSkge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ3BhcnRpYWwnO1xufVxuXG5mdW5jdGlvbiBpc0FyZyh7IHBhdGggfSkge1xuICByZXR1cm4gcGF0aC5kYXRhO1xufVxuXG5mdW5jdGlvbiBpc0xpdGVyYWwoeyBwYXRoIH0pIHtcbiAgcmV0dXJuIHBhdGgudHlwZSA9PT0gJ1N0cmluZ0xpdGVyYWwnXG4gICAgICB8fCBwYXRoLnR5cGUgPT09ICdCb29sZWFuTGl0ZXJhbCdcbiAgICAgIHx8IHBhdGgudHlwZSA9PT0gJ051bWJlckxpdGVyYWwnXG4gICAgICB8fCBwYXRoLnR5cGUgPT09ICdOdWxsTGl0ZXJhbCdcbiAgICAgIHx8IHBhdGgudHlwZSA9PT0gJ1VuZGVmaW5lZExpdGVyYWwnO1xufVxuXG5mdW5jdGlvbiBpc0hhc0Jsb2NrKHsgcGF0aCB9KSB7XG4gIHJldHVybiBwYXRoLm9yaWdpbmFsID09PSAnaGFzLWJsb2NrJztcbn1cblxuZnVuY3Rpb24gaXNIYXNCbG9ja1BhcmFtcyh7IHBhdGggfSkge1xuICByZXR1cm4gcGF0aC5vcmlnaW5hbCA9PT0gJ2hhcy1ibG9jay1wYXJhbXMnO1xufVxuXG5mdW5jdGlvbiBpc0J1aWx0SW5IZWxwZXIoZXhwcikge1xuICByZXR1cm4gaXNIYXNCbG9jayhleHByKVxuICAgICAgfHwgaXNIYXNCbG9ja1BhcmFtcyhleHByKTtcbn1cblxuZnVuY3Rpb24gYXNzZXJ0VmFsaWRZaWVsZCh7IGhhc2ggfSk6IHN0cmluZyB7XG4gIGxldCBwYWlycyA9IGhhc2gucGFpcnM7XG5cbiAgaWYgKChwYWlycy5sZW5ndGggPT09IDEgJiYgcGFpcnNbMF0ua2V5ICE9PSAndG8nKSB8fCBwYWlycy5sZW5ndGggPiAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGB5aWVsZCBvbmx5IHRha2VzIGEgc2luZ2xlIG5hbWVkIGFyZ3VtZW50OiAndG8nYCk7XG4gIH0gZWxzZSBpZiAocGFpcnMubGVuZ3RoID09PSAxICYmIHBhaXJzWzBdLnZhbHVlLnR5cGUgIT09ICdTdHJpbmdMaXRlcmFsJykge1xuICAgIHRocm93IG5ldyBFcnJvcihgeW91IGNhbiBvbmx5IHlpZWxkIHRvIGEgbGl0ZXJhbCB2YWx1ZWApO1xuICB9IGVsc2UgaWYgKHBhaXJzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnZGVmYXVsdCc7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHBhaXJzWzBdLnZhbHVlLnZhbHVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VydFZhbGlkUGFydGlhbCh7IHBhcmFtcywgaGFzaCwgZXNjYXBlZCwgbG9jIH0pIC8qIDogZXhwciAqLyB7XG4gIGlmIChwYXJhbXMgJiYgcGFyYW1zLmxlbmd0aCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgUGFydGlhbCBmb3VuZCB3aXRoIG5vIGFyZ3VtZW50cy4gWW91IG11c3Qgc3BlY2lmeSBhIHRlbXBsYXRlIG5hbWUuIChvbiBsaW5lICR7bG9jLnN0YXJ0LmxpbmV9KWApO1xuICB9IGVsc2UgaWYgKGhhc2ggJiYgaGFzaC5wYWlycy5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBwYXJ0aWFsIGRvZXMgbm90IHRha2UgYW55IG5hbWVkIGFyZ3VtZW50cyAob24gbGluZSAke2xvYy5zdGFydC5saW5lfSlgKTtcbiAgfSBlbHNlIGlmICghZXNjYXBlZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihge3t7cGFydGlhbCAuLi59fX0gaXMgbm90IHN1cHBvcnRlZCwgcGxlYXNlIHVzZSB7e3BhcnRpYWwgLi4ufX0gaW5zdGVhZCAob24gbGluZSAke2xvYy5zdGFydC5saW5lfSlgKTtcbiAgfVxuXG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmZ1bmN0aW9uIGFzc2VydFZhbGlkSGFzQmxvY2tVc2FnZSh0eXBlLCB7IHBhcmFtcywgaGFzaCwgbG9jIH0pOiBzdHJpbmcge1xuICBpZiAoaGFzaCAmJiBoYXNoLnBhaXJzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dHlwZX0gZG9lcyBub3QgdGFrZSBhbnkgbmFtZWQgYXJndW1lbnRzYCk7XG4gIH1cblxuICBpZiAocGFyYW1zLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnZGVmYXVsdCc7XG4gIH0gZWxzZSBpZiAocGFyYW1zLmxlbmd0aCA9PT0gMSkge1xuICAgIGlmIChwYXJhbXNbMF0udHlwZSA9PT0gJ1N0cmluZ0xpdGVyYWwnKSB7XG4gICAgICByZXR1cm4gcGFyYW1zWzBdLnZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHlvdSBjYW4gb25seSB5aWVsZCB0byBhIGxpdGVyYWwgdmFsdWUgKG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX0pYCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihgJHt0eXBlfSBvbmx5IHRha2VzIGEgc2luZ2xlIHBvc2l0aW9uYWwgYXJndW1lbnQgKG9uIGxpbmUgJHtsb2Muc3RhcnQubGluZX0pYCk7XG4gIH1cbn1cbiJdfQ==
12586
12619
  enifed('glimmer-compiler/lib/template-visitor', ['exports'], function (exports) {
12587
12620
  'use strict';
12588
12621
 
@@ -12597,58 +12630,78 @@ enifed('glimmer-compiler/lib/template-visitor', ['exports'], function (exports)
12597
12630
  this.mustacheCount = 0;
12598
12631
  this.actions = [];
12599
12632
  this.blankChildTextNodes = null;
12600
- }
12601
- /**
12602
- * Takes in an AST and outputs a list of actions to be consumed
12603
- * by a compiler. For example, the template
12604
- *
12605
- * foo{{bar}}<div>baz</div>
12606
- *
12607
- * produces the actions
12608
- *
12609
- * [['startProgram', [programNode, 0]],
12610
- * ['text', [textNode, 0, 3]],
12611
- * ['mustache', [mustacheNode, 1, 3]],
12612
- * ['openElement', [elementNode, 2, 3, 0]],
12613
- * ['text', [textNode, 0, 1]],
12614
- * ['closeElement', [elementNode, 2, 3],
12615
- * ['endProgram', [programNode]]]
12616
- *
12617
- * This visitor walks the AST depth first and backwards. As
12618
- * a result the bottom-most child template will appear at the
12619
- * top of the actions list whereas the root template will appear
12620
- * at the bottom of the list. For example,
12621
- *
12622
- * <div>{{#if}}foo{{else}}bar<b></b>{{/if}}</div>
12623
- *
12624
- * produces the actions
12625
- *
12626
- * [['startProgram', [programNode, 0]],
12627
- * ['text', [textNode, 0, 2, 0]],
12628
- * ['openElement', [elementNode, 1, 2, 0]],
12629
- * ['closeElement', [elementNode, 1, 2]],
12630
- * ['endProgram', [programNode]],
12631
- * ['startProgram', [programNode, 0]],
12632
- * ['text', [textNode, 0, 1]],
12633
- * ['endProgram', [programNode]],
12634
- * ['startProgram', [programNode, 2]],
12635
- * ['openElement', [elementNode, 0, 1, 1]],
12636
- * ['block', [blockNode, 0, 1]],
12637
- * ['closeElement', [elementNode, 0, 1]],
12638
- * ['endProgram', [programNode]]]
12639
- *
12640
- * The state of the traversal is maintained by a stack of frames.
12641
- * Whenever a node with children is entered (either a ProgramNode
12642
- * or an ElementNode) a frame is pushed onto the stack. The frame
12643
- * contains information about the state of the traversal of that
12644
- * node. For example,
12645
- *
12646
- * - index of the current child node being visited
12647
- * - the number of mustaches contained within its child nodes
12648
- * - the list of actions generated by its child nodes
12649
- */
12650
- ;
12633
+ this.symbols = null;
12634
+ };
12635
+
12636
+ var SymbolTable = (function () {
12637
+ function SymbolTable(symbols) {
12638
+ var parent = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];
12651
12639
 
12640
+ this.symbols = symbols;
12641
+ this.parent = parent;
12642
+ }
12643
+
12644
+ /**
12645
+ * Takes in an AST and outputs a list of actions to be consumed
12646
+ * by a compiler. For example, the template
12647
+ *
12648
+ * foo{{bar}}<div>baz</div>
12649
+ *
12650
+ * produces the actions
12651
+ *
12652
+ * [['startProgram', [programNode, 0]],
12653
+ * ['text', [textNode, 0, 3]],
12654
+ * ['mustache', [mustacheNode, 1, 3]],
12655
+ * ['openElement', [elementNode, 2, 3, 0]],
12656
+ * ['text', [textNode, 0, 1]],
12657
+ * ['closeElement', [elementNode, 2, 3],
12658
+ * ['endProgram', [programNode]]]
12659
+ *
12660
+ * This visitor walks the AST depth first and backwards. As
12661
+ * a result the bottom-most child template will appear at the
12662
+ * top of the actions list whereas the root template will appear
12663
+ * at the bottom of the list. For example,
12664
+ *
12665
+ * <div>{{#if}}foo{{else}}bar<b></b>{{/if}}</div>
12666
+ *
12667
+ * produces the actions
12668
+ *
12669
+ * [['startProgram', [programNode, 0]],
12670
+ * ['text', [textNode, 0, 2, 0]],
12671
+ * ['openElement', [elementNode, 1, 2, 0]],
12672
+ * ['closeElement', [elementNode, 1, 2]],
12673
+ * ['endProgram', [programNode]],
12674
+ * ['startProgram', [programNode, 0]],
12675
+ * ['text', [textNode, 0, 1]],
12676
+ * ['endProgram', [programNode]],
12677
+ * ['startProgram', [programNode, 2]],
12678
+ * ['openElement', [elementNode, 0, 1, 1]],
12679
+ * ['block', [blockNode, 0, 1]],
12680
+ * ['closeElement', [elementNode, 0, 1]],
12681
+ * ['endProgram', [programNode]]]
12682
+ *
12683
+ * The state of the traversal is maintained by a stack of frames.
12684
+ * Whenever a node with children is entered (either a ProgramNode
12685
+ * or an ElementNode) a frame is pushed onto the stack. The frame
12686
+ * contains information about the state of the traversal of that
12687
+ * node. For example,
12688
+ *
12689
+ * - index of the current child node being visited
12690
+ * - the number of mustaches contained within its child nodes
12691
+ * - the list of actions generated by its child nodes
12692
+ */
12693
+
12694
+ SymbolTable.prototype.hasLocalVariable = function hasLocalVariable(name) {
12695
+ var symbols = this.symbols;
12696
+ var parent = this.parent;
12697
+
12698
+ return symbols.indexOf(name) >= 0 || parent && parent.hasLocalVariable(name);
12699
+ };
12700
+
12701
+ return SymbolTable;
12702
+ })();
12703
+
12704
+ exports.SymbolTable = SymbolTable;
12652
12705
  function TemplateVisitor() {
12653
12706
  this.frameStack = [];
12654
12707
  this.actions = [];
@@ -12662,6 +12715,11 @@ enifed('glimmer-compiler/lib/template-visitor', ['exports'], function (exports)
12662
12715
  this.programDepth++;
12663
12716
  var parentFrame = this.getCurrentFrame();
12664
12717
  var programFrame = this.pushFrame();
12718
+ if (parentFrame) {
12719
+ program.symbols = new SymbolTable(program.blockParams, parentFrame.symbols);
12720
+ } else {
12721
+ program.symbols = new SymbolTable(program.blockParams);
12722
+ }
12665
12723
  var startType = undefined,
12666
12724
  endType = undefined;
12667
12725
  if (this.programDepth === 0) {
@@ -12676,6 +12734,7 @@ enifed('glimmer-compiler/lib/template-visitor', ['exports'], function (exports)
12676
12734
  programFrame.childCount = program.body.length;
12677
12735
  programFrame.blankChildTextNodes = [];
12678
12736
  programFrame.actions.push([endType, [program, this.programDepth]]);
12737
+ programFrame.symbols = program.symbols;
12679
12738
  for (var i = program.body.length - 1; i >= 0; i--) {
12680
12739
  programFrame.childIndex = i;
12681
12740
  this.visit(program.body[i]);
@@ -12697,6 +12756,7 @@ enifed('glimmer-compiler/lib/template-visitor', ['exports'], function (exports)
12697
12756
  elementFrame.childCount = element.children.length;
12698
12757
  elementFrame.mustacheCount += element.modifiers.length;
12699
12758
  elementFrame.blankChildTextNodes = [];
12759
+ elementFrame.symbols = parentFrame.symbols;
12700
12760
  var actionArgs = [element, parentFrame.childIndex, parentFrame.childCount];
12701
12761
  elementFrame.actions.push(['closeElement', actionArgs]);
12702
12762
  for (var i = element.attributes.length - 1; i >= 0; i--) {
@@ -12784,7 +12844,7 @@ enifed('glimmer-compiler/lib/template-visitor', ['exports'], function (exports)
12784
12844
  return -1;
12785
12845
  }
12786
12846
  });
12787
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItY29tcGlsZXIvbGliL3RlbXBsYXRlLXZpc2l0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsUUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7O1FBRWhDLEtBQUEsR0FBQSxTQUFBLEtBQUEsR0FBQTtBQUNTLFlBQUEsQ0FBQSxVQUFVLEdBQVcsSUFBSSxDQUFDO0FBQzFCLFlBQUEsQ0FBQSxRQUFRLEdBQVcsSUFBSSxDQUFDO0FBQ3hCLFlBQUEsQ0FBQSxVQUFVLEdBQVcsSUFBSSxDQUFDO0FBQzFCLFlBQUEsQ0FBQSxVQUFVLEdBQVcsSUFBSSxDQUFDO0FBQzFCLFlBQUEsQ0FBQSxrQkFBa0IsR0FBVyxDQUFDLENBQUM7QUFDL0IsWUFBQSxDQUFBLGFBQWEsR0FBVyxDQUFDLENBQUM7QUFDMUIsWUFBQSxDQUFBLE9BQU8sR0FBVSxFQUFFLENBQUM7QUFDcEIsWUFBQSxDQUFBLG1CQUFtQixHQUFhLElBQUksQ0FBQztLQUM3Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9ERCxhQUFBLGVBQUEsR0FBQTtBQUNFLFlBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBQ3JCLFlBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0FBQ2xCLFlBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUM7S0FDeEI7O0FBSUQsbUJBQWUsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFVBQVMsSUFBSSxFQUFBO0FBQzdDLFlBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDdkIsQ0FBQztBQUVGLG1CQUFlLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxVQUFTLE9BQU8sRUFBQTtBQUNsRCxZQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7QUFFcEIsWUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUs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QyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDOUIsQ0FBQztzQkFFYSxlQUFlOzs7O0FBSTlCLGFBQUEsVUFBQSxDQUFvQixLQUFLLEVBQUUsT0FBTyxFQUFBO0FBQ2hDLFlBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBRWYsYUFBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDckMsZ0JBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUVwQixnQkFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGFBQWEsRUFBRTtBQUMzRCx5QkFBUzthQUNWLE1BQU07QUFDTCxxQkFBSyxFQUFFLENBQUM7YUFDVDtBQUVELGdCQUFJLElBQUksS0FBSyxPQUFPLEVBQUU7QUFDcEIsdUJBQU8sS0FBSyxDQUFDO2FBQ2Q7U0FDRjtBQUVELGVBQU8sQ0FBQyxDQUFDLENBQUM7S0FDWCIsImZpbGUiOiJ0ZW1wbGF0ZS12aXNpdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsibGV0IHB1c2ggPSBBcnJheS5wcm90b3R5cGUucHVzaDtcblxuY2xhc3MgRnJhbWUge1xuICBwdWJsaWMgcGFyZW50Tm9kZTogT2JqZWN0ID0gbnVsbDtcbiAgcHVibGljIGNoaWxkcmVuOiBPYmplY3QgPSBudWxsO1xuICBwdWJsaWMgY2hpbGRJbmRleDogbnVtYmVyID0gbnVsbDtcbiAgcHVibGljIGNoaWxkQ291bnQ6IG51bWJlciA9IG51bGw7XG4gIHB1YmxpYyBjaGlsZFRlbXBsYXRlQ291bnQ6IG51bWJlciA9IDA7XG4gIHB1YmxpYyBtdXN0YWNoZUNvdW50OiBudW1iZXIgPSAwO1xuICBwdWJsaWMgYWN0aW9uczogYW55W10gPSBbXTtcbiAgcHVibGljIGJsYW5rQ2hpbGRUZXh0Tm9kZXM6IG51bWJlcltdID0gbnVsbDtcbn1cblxuLyoqXG4gKiBUYWtlcyBpbiBhbiBBU1QgYW5kIG91dHB1dHMgYSBsaXN0IG9mIGFjdGlvbnMgdG8gYmUgY29uc3VtZWRcbiAqIGJ5IGEgY29tcGlsZXIuIEZvciBleGFtcGxlLCB0aGUgdGVtcGxhdGVcbiAqXG4gKiAgICAgZm9ve3tiYXJ9fTxkaXY+YmF6PC9kaXY+XG4gKlxuICogcHJvZHVjZXMgdGhlIGFjdGlvbnNcbiAqXG4gKiAgICAgW1snc3RhcnRQcm9ncmFtJywgW3Byb2dyYW1Ob2RlLCAwXV0sXG4gKiAgICAgIFsndGV4dCcsIFt0ZXh0Tm9kZSwgMCwgM11dLFxuICogICAgICBbJ211c3RhY2hlJywgW211c3RhY2hlTm9kZSwgMSwgM11dLFxuICogICAgICBbJ29wZW5FbGVtZW50JywgW2VsZW1lbnROb2RlLCAyLCAzLCAwXV0sXG4gKiAgICAgIFsndGV4dCcsIFt0ZXh0Tm9kZSwgMCwgMV1dLFxuICogICAgICBbJ2Nsb3NlRWxlbWVudCcsIFtlbGVtZW50Tm9kZSwgMiwgM10sXG4gKiAgICAgIFsnZW5kUHJvZ3JhbScsIFtwcm9ncmFtTm9kZV1dXVxuICpcbiAqIFRoaXMgdmlzaXRvciB3YWxrcyB0aGUgQVNUIGRlcHRoIGZpcnN0IGFuZCBiYWNrd2FyZHMuIEFzXG4gKiBhIHJlc3VsdCB0aGUgYm90dG9tLW1vc3QgY2hpbGQgdGVtcGxhdGUgd2lsbCBhcHBlYXIgYXQgdGhlXG4gKiB0b3Agb2YgdGhlIGFjdGlvbnMgbGlzdCB3aGVyZWFzIHRoZSByb290IHRlbXBsYXRlIHdpbGwgYXBwZWFyXG4gKiBhdCB0aGUgYm90dG9tIG9mIHRoZSBsaXN0LiBGb3IgZXhhbXBsZSxcbiAqXG4gKiAgICAgPGRpdj57eyNpZn19Zm9ve3tlbHNlfX1iYXI8Yj48L2I+e3svaWZ9fTwvZGl2PlxuICpcbiAqIHByb2R1Y2VzIHRoZSBhY3Rpb25zXG4gKlxuICogICAgIFtbJ3N0YXJ0UHJvZ3JhbScsIFtwcm9ncmFtTm9kZSwgMF1dLFxuICogICAgICBbJ3RleHQnLCBbdGV4dE5vZGUsIDAsIDIsIDBdXSxcbiAqICAgICAgWydvcGVuRWxlbWVudCcsIFtlbGVtZW50Tm9kZSwgMSwgMiwgMF1dLFxuICogICAgICBbJ2Nsb3NlRWxlbWVudCcsIFtlbGVtZW50Tm9kZSwgMSwgMl1dLFxuICogICAgICBbJ2VuZFByb2dyYW0nLCBbcHJvZ3JhbU5vZGVdXSxcbiAqICAgICAgWydzdGFydFByb2dyYW0nLCBbcHJvZ3JhbU5vZGUsIDBdXSxcbiAqICAgICAgWyd0ZXh0JywgW3RleHROb2RlLCAwLCAxXV0sXG4gKiAgICAgIFsnZW5kUHJvZ3JhbScsIFtwcm9ncmFtTm9kZV1dLFxuICogICAgICBbJ3N0YXJ0UHJvZ3JhbScsIFtwcm9ncmFtTm9kZSwgMl1dLFxuICogICAgICBbJ29wZW5FbGVtZW50JywgW2VsZW1lbnROb2RlLCAwLCAxLCAxXV0sXG4gKiAgICAgIFsnYmxvY2snLCBbYmxvY2tOb2RlLCAwLCAxXV0sXG4gKiAgICAgIFsnY2xvc2VFbGVtZW50JywgW2VsZW1lbnROb2RlLCAwLCAxXV0sXG4gKiAgICAgIFsnZW5kUHJvZ3JhbScsIFtwcm9ncmFtTm9kZV1dXVxuICpcbiAqIFRoZSBzdGF0ZSBvZiB0aGUgdHJhdmVyc2FsIGlzIG1haW50YWluZWQgYnkgYSBzdGFjayBvZiBmcmFtZXMuXG4gKiBXaGVuZXZlciBhIG5vZGUgd2l0aCBjaGlsZHJlbiBpcyBlbnRlcmVkIChlaXRoZXIgYSBQcm9ncmFtTm9kZVxuICogb3IgYW4gRWxlbWVudE5vZGUpIGEgZnJhbWUgaXMgcHVzaGVkIG9udG8gdGhlIHN0YWNrLiBUaGUgZnJhbWVcbiAqIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzdGF0ZSBvZiB0aGUgdHJhdmVyc2FsIG9mIHRoYXRcbiAqIG5vZGUuIEZvciBleGFtcGxlLFxuICpcbiAqICAgLSBpbmRleCBvZiB0aGUgY3VycmVudCBjaGlsZCBub2RlIGJlaW5nIHZpc2l0ZWRcbiAqICAgLSB0aGUgbnVtYmVyIG9mIG11c3RhY2hlcyBjb250YWluZWQgd2l0aGluIGl0cyBjaGlsZCBub2Rlc1xuICogICAtIHRoZSBsaXN0IG9mIGFjdGlvbnMgZ2VuZXJhdGVkIGJ5IGl0cyBjaGlsZCBub2Rlc1xuICovXG5cbmZ1bmN0aW9uIFRlbXBsYXRlVmlzaXRvcigpIHtcbiAgdGhpcy5mcmFtZVN0YWNrID0gW107XG4gIHRoaXMuYWN0aW9ucyA9IFtdO1xuICB0aGlzLnByb2dyYW1EZXB0aCA9IC0xO1xufVxuXG4vLyBUcmF2ZXJzYWwgbWV0aG9kc1xuXG5UZW1wbGF0ZVZpc2l0b3IucHJvdG90eXBlLnZpc2l0ID0gZnVuY3Rpb24obm9kZSkge1xuICB0aGlzW25vZGUudHlwZV0obm9kZSk7XG59O1xuXG5UZW1wbGF0ZVZpc2l0b3IucHJvdG90eXBlLlByb2dyYW0gPSBmdW5jdGlvbihwcm9ncmFtKSB7XG4gIHRoaXMucHJvZ3JhbURlcHRoKys7XG5cbiAgbGV0IHBhcmVudEZyYW1lID0gdGhpcy5nZXRDdXJyZW50RnJhbWUoKTtcbiAgbGV0IHByb2dyYW1GcmFtZSA9IHRoaXMucHVzaEZyYW1lKCk7XG5cbiAgbGV0IHN0YXJ0VHlwZSwgZW5kVHlwZTtcblxuICBpZiAodGhpcy5wcm9ncmFtRGVwdGggPT09IDApIHtcbiAgICBzdGFydFR5cGUgPSAnc3RhcnRQcm9ncmFtJztcbiAgICBlbmRUeXBlID0gJ2VuZFByb2dyYW0nO1xuICB9IGVsc2Uge1xuICAgIHN0YXJ0VHlwZSA9ICdzdGFydEJsb2NrJztcbiAgICBlbmRUeXBlID0gJ2VuZEJsb2NrJztcbiAgfVxuXG4gIHByb2dyYW1GcmFtZS5wYXJlbnROb2RlID0gcHJvZ3JhbTtcbiAgcHJvZ3JhbUZyYW1lLmNoaWxkcmVuID0gcHJvZ3JhbS5ib2R5O1xuICBwcm9ncmFtRnJhbWUuY2hpbGRDb3VudCA9IHByb2dyYW0uYm9keS5sZW5ndGg7XG4gIHByb2dyYW1GcmFtZS5ibGFua0NoaWxkVGV4dE5vZGVzID0gW107XG4gIHByb2dyYW1GcmFtZS5hY3Rpb25zLnB1c2goW2VuZFR5cGUsIFtwcm9ncmFtLCB0aGlzLnByb2dyYW1EZXB0aF1dKTtcblxuICBmb3IgKGxldCBpID0gcHJvZ3JhbS5ib2R5Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgcHJvZ3JhbUZyYW1lLmNoaWxkSW5kZXggPSBpO1xuICAgIHRoaXMudmlzaXQocHJvZ3JhbS5ib2R5W2ldKTtcbiAgfVxuXG4gIHByb2dyYW1GcmFtZS5hY3Rpb25zLnB1c2goW3N0YXJ0VHlwZSwgW1xuICAgIHByb2dyYW0sIHByb2dyYW1GcmFtZS5jaGlsZFRlbXBsYXRlQ291bnQsXG4gICAgcHJvZ3JhbUZyYW1lLmJsYW5rQ2hpbGRUZXh0Tm9kZXMucmV2ZXJzZSgpXG4gIF1dKTtcbiAgdGhpcy5wb3BGcmFtZSgpO1xuXG4gIHRoaXMucHJvZ3JhbURlcHRoLS07XG5cbiAgLy8gUHVzaCB0aGUgY29tcGxldGVkIHRlbXBsYXRlIGludG8gdGhlIGdsb2JhbCBhY3Rpb25zIGxpc3RcbiAgaWYgKHBhcmVudEZyYW1lKSB7IHBhcmVudEZyYW1lLmNoaWxkVGVtcGxhdGVDb3VudCsrOyB9XG4gIHB1c2guYXBwbHkodGhpcy5hY3Rpb25zLCBwcm9ncmFtRnJhbWUuYWN0aW9ucy5yZXZlcnNlKCkpO1xufTtcblxuVGVtcGxhdGVWaXNpdG9yLnByb3RvdHlwZS5FbGVtZW50Tm9kZSA9IGZ1bmN0aW9uKGVsZW1lbnQpIHtcbiAgbGV0IHBhcmVudEZyYW1lID0gdGhpcy5nZXRDdXJyZW50RnJhbWUoKTtcbiAgbGV0IGVsZW1lbnRGcmFtZSA9IHRoaXMucHVzaEZyYW1lKCk7XG5cbiAgZWxlbWVudEZyYW1lLnBhcmVudE5vZGUgPSBlbGVtZW50O1xuICBlbGVtZW50RnJhbWUuY2hpbGRyZW4gPSBlbGVtZW50LmNoaWxkcmVuO1xuICBlbGVtZW50RnJhbWUuY2hpbGRDb3VudCA9IGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoO1xuICBlbGVtZW50RnJhbWUubXVzdGFjaGVDb3VudCArPSBlbGVtZW50Lm1vZGlmaWVycy5sZW5ndGg7XG4gIGVsZW1lbnRGcmFtZS5ibGFua0NoaWxkVGV4dE5vZGVzID0gW107XG5cbiAgbGV0IGFjdGlvbkFyZ3MgPSBbXG4gICAgZWxlbWVudCxcbiAgICBwYXJlbnRGcmFtZS5jaGlsZEluZGV4LFxuICAgIHBhcmVudEZyYW1lLmNoaWxkQ291bnRcbiAgXTtcblxuICBlbGVtZW50RnJhbWUuYWN0aW9ucy5wdXNoKFsnY2xvc2VFbGVtZW50JywgYWN0aW9uQXJnc10pO1xuXG4gIGZvciAobGV0IGkgPSBlbGVtZW50LmF0dHJpYnV0ZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB0aGlzLnZpc2l0KGVsZW1lbnQuYXR0cmlidXRlc1tpXSk7XG4gIH1cblxuICBmb3IgKGxldCBpID0gZWxlbWVudC5jaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGVsZW1lbnRGcmFtZS5jaGlsZEluZGV4ID0gaTtcbiAgICB0aGlzLnZpc2l0KGVsZW1lbnQuY2hpbGRyZW5baV0pO1xuICB9XG5cbiAgZWxlbWVudEZyYW1lLmFjdGlvbnMucHVzaChbJ29wZW5FbGVtZW50JywgYWN0aW9uQXJncy5jb25jYXQoW1xuICAgIGVsZW1lbnRGcmFtZS5tdXN0YWNoZUNvdW50LCBlbGVtZW50RnJhbWUuYmxhbmtDaGlsZFRleHROb2Rlcy5yZXZlcnNlKCkgXSldKTtcbiAgdGhpcy5wb3BGcmFtZSgpO1xuXG4gIC8vIFByb3BhZ2F0ZSB0aGUgZWxlbWVudCdzIGZyYW1lIHN0YXRlIHRvIHRoZSBwYXJlbnQgZnJhbWVcbiAgaWYgKGVsZW1lbnRGcmFtZS5tdXN0YWNoZUNvdW50ID4gMCkgeyBwYXJlbnRGcmFtZS5tdXN0YWNoZUNvdW50Kys7IH1cbiAgcGFyZW50RnJhbWUuY2hpbGRUZW1wbGF0ZUNvdW50ICs9IGVsZW1lbnRGcmFtZS5jaGlsZFRlbXBsYXRlQ291bnQ7XG4gIHB1c2guYXBwbHkocGFyZW50RnJhbWUuYWN0aW9ucywgZWxlbWVudEZyYW1lLmFjdGlvbnMpO1xufTtcblxuVGVtcGxhdGVWaXNpdG9yLnByb3RvdHlwZS5BdHRyTm9kZSA9IGZ1bmN0aW9uKGF0dHIpIHtcbiAgaWYgKGF0dHIudmFsdWUudHlwZSAhPT0gJ1RleHROb2RlJykge1xuICAgIHRoaXMuZ2V0Q3VycmVudEZyYW1lKCkubXVzdGFjaGVDb3VudCsrO1xuICB9XG59O1xuXG5UZW1wbGF0ZVZpc2l0b3IucHJvdG90eXBlLlRleHROb2RlID0gZnVuY3Rpb24odGV4dCkge1xuICBsZXQgZnJhbWUgPSB0aGlzLmdldEN1cnJlbnRGcmFtZSgpO1xuICBpZiAodGV4dC5jaGFycyA9PT0gJycpIHtcbiAgICBmcmFtZS5ibGFua0NoaWxkVGV4dE5vZGVzLnB1c2goZG9tSW5kZXhPZihmcmFtZS5jaGlsZHJlbiwgdGV4dCkpO1xuICB9XG4gIGZyYW1lLmFjdGlvbnMucHVzaChbJ3RleHQnLCBbdGV4dCwgZnJhbWUuY2hpbGRJbmRleCwgZnJhbWUuY2hpbGRDb3VudF1dKTtcbn07XG5cblRlbXBsYXRlVmlzaXRvci5wcm90b3R5cGUuQmxvY2tTdGF0ZW1lbnQgPSBmdW5jdGlvbihub2RlKSB7XG4gIGxldCBmcmFtZSA9IHRoaXMuZ2V0Q3VycmVudEZyYW1lKCk7XG5cbiAgZnJhbWUubXVzdGFjaGVDb3VudCsrO1xuICBmcmFtZS5hY3Rpb25zLnB1c2goWydibG9jaycsIFtub2RlLCBmcmFtZS5jaGlsZEluZGV4LCBmcmFtZS5jaGlsZENvdW50XV0pO1xuXG4gIGlmIChub2RlLmludmVyc2UpIHsgdGhpcy52aXNpdChub2RlLmludmVyc2UpOyB9XG4gIGlmIChub2RlLnByb2dyYW0pIHsgdGhpcy52aXNpdChub2RlLnByb2dyYW0pOyB9XG59O1xuXG5UZW1wbGF0ZVZpc2l0b3IucHJvdG90eXBlLlBhcnRpYWxTdGF0ZW1lbnQgPSBmdW5jdGlvbihub2RlKSB7XG4gIGxldCBmcmFtZSA9IHRoaXMuZ2V0Q3VycmVudEZyYW1lKCk7XG4gIGZyYW1lLm11c3RhY2hlQ291bnQrKztcbiAgZnJhbWUuYWN0aW9ucy5wdXNoKFsnbXVzdGFjaGUnLCBbbm9kZSwgZnJhbWUuY2hpbGRJbmRleCwgZnJhbWUuY2hpbGRDb3VudF1dKTtcbn07XG5cblRlbXBsYXRlVmlzaXRvci5wcm90b3R5cGUuQ29tbWVudFN0YXRlbWVudCA9IGZ1bmN0aW9uKHRleHQpIHtcbiAgbGV0IGZyYW1lID0gdGhpcy5nZXRDdXJyZW50RnJhbWUoKTtcbiAgZnJhbWUuYWN0aW9ucy5wdXNoKFsnY29tbWVudCcsIFt0ZXh0LCBmcmFtZS5jaGlsZEluZGV4LCBmcmFtZS5jaGlsZENvdW50XV0pO1xufTtcblxuVGVtcGxhdGVWaXNpdG9yLnByb3RvdHlwZS5NdXN0YWNoZVN0YXRlbWVudCA9IGZ1bmN0aW9uKG11c3RhY2hlKSB7XG4gIGxldCBmcmFtZSA9IHRoaXMuZ2V0Q3VycmVudEZyYW1lKCk7XG4gIGZyYW1lLm11c3RhY2hlQ291bnQrKztcbiAgZnJhbWUuYWN0aW9ucy5wdXNoKFsnbXVzdGFjaGUnLCBbbXVzdGFjaGUsIGZyYW1lLmNoaWxkSW5kZXgsIGZyYW1lLmNoaWxkQ291bnRdXSk7XG59O1xuXG4vLyBGcmFtZSBoZWxwZXJzXG5cblRlbXBsYXRlVmlzaXRvci5wcm90b3R5cGUuZ2V0Q3VycmVudEZyYW1lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmZyYW1lU3RhY2tbdGhpcy5mcmFtZVN0YWNrLmxlbmd0aCAtIDFdO1xufTtcblxuVGVtcGxhdGVWaXNpdG9yLnByb3RvdHlwZS5wdXNoRnJhbWUgPSBmdW5jdGlvbigpIHtcbiAgbGV0IGZyYW1lID0gbmV3IEZyYW1lKCk7XG4gIHRoaXMuZnJhbWVTdGFjay5wdXNoKGZyYW1lKTtcbiAgcmV0dXJuIGZyYW1lO1xufTtcblxuVGVtcGxhdGVWaXNpdG9yLnByb3RvdHlwZS5wb3BGcmFtZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5mcmFtZVN0YWNrLnBvcCgpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGVtcGxhdGVWaXNpdG9yO1xuXG4vLyBSZXR1cm5zIHRoZSBpbmRleCBvZiBgZG9tTm9kZWAgaW4gdGhlIGBub2Rlc2AgYXJyYXksIHNraXBwaW5nXG4vLyBvdmVyIGFueSBub2RlcyB3aGljaCBkbyBub3QgcmVwcmVzZW50IERPTSBub2Rlcy5cbmZ1bmN0aW9uIGRvbUluZGV4T2Yobm9kZXMsIGRvbU5vZGUpIHtcbiAgbGV0IGluZGV4ID0gLTE7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBub2RlID0gbm9kZXNbaV07XG5cbiAgICBpZiAobm9kZS50eXBlICE9PSAnVGV4dE5vZGUnICYmIG5vZGUudHlwZSAhPT0gJ0VsZW1lbnROb2RlJykge1xuICAgICAgY29udGludWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluZGV4Kys7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUgPT09IGRvbU5vZGUpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gLTE7XG59XG4iXX0=
12847
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItY29tcGlsZXIvbGliL3RlbXBsYXRlLXZpc2l0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsUUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7O1FBRWhDLEtBQUEsR0FBQSxTQUFBLEtBQUEsR0FBQTtBQUNTLFlBQUEsQ0FBQSxVQUFVLEdBQVcsSUFBSSxDQUFDO0FBQzFCLFlBQUEsQ0FBQSxRQUFRLEdBQVcsSUFBSSxDQUFDO0FBQ3hCLFlBQUEsQ0FBQSxVQUFVLEdBQVcsSUFBSSxDQUFDO0FBQzFCLFlBQUEsQ0FBQSxVQUFVLEdBQVcsSUFBSSxDQUFDO0FBQzFCLFlBQUEsQ0FBQSxrQkFBa0IsR0FBVyxDQUFDLENBQUM7QUFDL0IsWUFBQSxDQUFBLGFBQWEsR0FBVyxDQUFDLENBQUM7QUFDMUIsWUFBQSxDQUFBLE9BQU8sR0FBVSxFQUFFLENBQUM7QUFDcEIsWUFBQSxDQUFBLG1CQUFtQixHQUFhLElBQUksQ0FBQztBQUNyQyxZQUFBLENBQUEsT0FBTyxHQUFnQixJQUFJLENBQUM7S0FDcEM7O1FBRUQsV0FBQTtBQUNFLGlCQURGLFdBQUEsQ0FFWSxPQUFpQixFQUNTO2dCQUExQixNQUFNLHlEQUFnQixJQUFJOztBQUQxQixnQkFBQSxDQUFBLE9BQU8sR0FBUCxPQUFPLENBQVU7QUFDakIsZ0JBQUEsQ0FBQSxNQUFNLEdBQU4sTUFBTSxDQUFvQjtTQUNoQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUpOLG1CQUFBLFdBTUUsZ0JBQWdCLEdBQUEsMEJBQUMsSUFBWSxFQUFBO2dCQUNyQixPQUFPLEdBQWEsSUFBSSxDQUF4QixPQUFPO2dCQUFFLE1BQU0sR0FBSyxJQUFJLENBQWYsTUFBTTs7QUFDckIsbUJBQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUssTUFBTSxJQUFJLE1BQU0sQ0FBQyxnQkFB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RSxDQUFDLEVBQUUsRUFBRTtBQUNyQyxnQkFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRXBCLGdCQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssYUFBYSxFQUFFO0FBQzNELHlCQUFTO2FBQ1YsTUFBTTtBQUNMLHFCQUFLLEVBQUUsQ0FBQzthQUNUO0FBRUQsZ0JBQUksSUFBSSxLQUFLLE9BQU8sRUFBRTtBQUNwQix1QkFBTyxLQUFLLENBQUM7YUFDZDtTQUNGO0FBRUQsZUFBTyxDQUFDLENBQUMsQ0FBQztLQUNYIiwiZmlsZSI6InRlbXBsYXRlLXZpc2l0b3IuanMiLCJzb3VyY2VzQ29udGVudCI6WyJsZXQgcHVzaCA9IEFycmF5LnByb3RvdHlwZS5wdXNoO1xuXG5jbGFzcyBGcmFtZSB7XG4gIHB1YmxpYyBwYXJlbnROb2RlOiBPYmplY3QgPSBudWxsO1xuICBwdWJsaWMgY2hpbGRyZW46IE9iamVjdCA9IG51bGw7XG4gIHB1YmxpYyBjaGlsZEluZGV4OiBudW1iZXIgPSBudWxsO1xuICBwdWJsaWMgY2hpbGRDb3VudDogbnVtYmVyID0gbnVsbDtcbiAgcHVibGljIGNoaWxkVGVtcGxhdGVDb3VudDogbnVtYmVyID0gMDtcbiAgcHVibGljIG11c3RhY2hlQ291bnQ6IG51bWJlciA9IDA7XG4gIHB1YmxpYyBhY3Rpb25zOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgYmxhbmtDaGlsZFRleHROb2RlczogbnVtYmVyW10gPSBudWxsO1xuICBwdWJsaWMgc3ltYm9sczogU3ltYm9sVGFibGUgPSBudWxsO1xufVxuXG5leHBvcnQgY2xhc3MgU3ltYm9sVGFibGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN5bWJvbHM6IHN0cmluZ1tdLFxuICAgIHByaXZhdGUgcGFyZW50OiBTeW1ib2xUYWJsZSA9IG51bGxcbiAgKSB7fVxuXG4gIGhhc0xvY2FsVmFyaWFibGUobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgbGV0IHsgc3ltYm9scywgcGFyZW50IH0gPSB0aGlzO1xuICAgIHJldHVybiBzeW1ib2xzLmluZGV4T2YobmFtZSkgPj0gMCB8fCAocGFyZW50ICYmIHBhcmVudC5oYXNMb2NhbFZhcmlhYmxlKG5hbWUpKTtcbiAgfVxufVxuXG4vKipcbiAqIFRha2VzIGluIGFuIEFTVCBhbmQgb3V0cHV0cyBhIGxpc3Qgb2YgYWN0aW9ucyB0byBiZSBjb25zdW1lZFxuICogYnkgYSBjb21waWxlci4gRm9yIGV4YW1wbGUsIHRoZSB0ZW1wbGF0ZVxuICpcbiAqICAgICBmb297e2Jhcn19PGRpdj5iYXo8L2Rpdj5cbiAqXG4gKiBwcm9kdWNlcyB0aGUgYWN0aW9uc1xuICpcbiAqICAgICBbWydzdGFydFByb2dyYW0nLCBbcHJvZ3JhbU5vZGUsIDBdXSxcbiAqICAgICAgWyd0ZXh0JywgW3RleHROb2RlLCAwLCAzXV0sXG4gKiAgICAgIFsnbXVzdGFjaGUnLCBbbXVzdGFjaGVOb2RlLCAxLCAzXV0sXG4gKiAgICAgIFsnb3BlbkVsZW1lbnQnLCBbZWxlbWVudE5vZGUsIDIsIDMsIDBdXSxcbiAqICAgICAgWyd0ZXh0JywgW3RleHROb2RlLCAwLCAxXV0sXG4gKiAgICAgIFsnY2xvc2VFbGVtZW50JywgW2VsZW1lbnROb2RlLCAyLCAzXSxcbiAqICAgICAgWydlbmRQcm9ncmFtJywgW3Byb2dyYW1Ob2RlXV1dXG4gKlxuICogVGhpcyB2aXNpdG9yIHdhbGtzIHRoZSBBU1QgZGVwdGggZmlyc3QgYW5kIGJhY2t3YXJkcy4gQXNcbiAqIGEgcmVzdWx0IHRoZSBib3R0b20tbW9zdCBjaGlsZCB0ZW1wbGF0ZSB3aWxsIGFwcGVhciBhdCB0aGVcbiAqIHRvcCBvZiB0aGUgYWN0aW9ucyBsaXN0IHdoZXJlYXMgdGhlIHJvb3QgdGVtcGxhdGUgd2lsbCBhcHBlYXJcbiAqIGF0IHRoZSBib3R0b20gb2YgdGhlIGxpc3QuIEZvciBleGFtcGxlLFxuICpcbiAqICAgICA8ZGl2Pnt7I2lmfX1mb297e2Vsc2V9fWJhcjxiPjwvYj57ey9pZn19PC9kaXY+XG4gKlxuICogcHJvZHVjZXMgdGhlIGFjdGlvbnNcbiAqXG4gKiAgICAgW1snc3RhcnRQcm9ncmFtJywgW3Byb2dyYW1Ob2RlLCAwXV0sXG4gKiAgICAgIFsndGV4dCcsIFt0ZXh0Tm9kZSwgMCwgMiwgMF1dLFxuICogICAgICBbJ29wZW5FbGVtZW50JywgW2VsZW1lbnROb2RlLCAxLCAyLCAwXV0sXG4gKiAgICAgIFsnY2xvc2VFbGVtZW50JywgW2VsZW1lbnROb2RlLCAxLCAyXV0sXG4gKiAgICAgIFsnZW5kUHJvZ3JhbScsIFtwcm9ncmFtTm9kZV1dLFxuICogICAgICBbJ3N0YXJ0UHJvZ3JhbScsIFtwcm9ncmFtTm9kZSwgMF1dLFxuICogICAgICBbJ3RleHQnLCBbdGV4dE5vZGUsIDAsIDFdXSxcbiAqICAgICAgWydlbmRQcm9ncmFtJywgW3Byb2dyYW1Ob2RlXV0sXG4gKiAgICAgIFsnc3RhcnRQcm9ncmFtJywgW3Byb2dyYW1Ob2RlLCAyXV0sXG4gKiAgICAgIFsnb3BlbkVsZW1lbnQnLCBbZWxlbWVudE5vZGUsIDAsIDEsIDFdXSxcbiAqICAgICAgWydibG9jaycsIFtibG9ja05vZGUsIDAsIDFdXSxcbiAqICAgICAgWydjbG9zZUVsZW1lbnQnLCBbZWxlbWVudE5vZGUsIDAsIDFdXSxcbiAqICAgICAgWydlbmRQcm9ncmFtJywgW3Byb2dyYW1Ob2RlXV1dXG4gKlxuICogVGhlIHN0YXRlIG9mIHRoZSB0cmF2ZXJzYWwgaXMgbWFpbnRhaW5lZCBieSBhIHN0YWNrIG9mIGZyYW1lcy5cbiAqIFdoZW5ldmVyIGEgbm9kZSB3aXRoIGNoaWxkcmVuIGlzIGVudGVyZWQgKGVpdGhlciBhIFByb2dyYW1Ob2RlXG4gKiBvciBhbiBFbGVtZW50Tm9kZSkgYSBmcmFtZSBpcyBwdXNoZWQgb250byB0aGUgc3RhY2suIFRoZSBmcmFtZVxuICogY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN0YXRlIG9mIHRoZSB0cmF2ZXJzYWwgb2YgdGhhdFxuICogbm9kZS4gRm9yIGV4YW1wbGUsXG4gKlxuICogICAtIGluZGV4IG9mIHRoZSBjdXJyZW50IGNoaWxkIG5vZGUgYmVpbmcgdmlzaXRlZFxuICogICAtIHRoZSBudW1iZXIgb2YgbXVzdGFjaGVzIGNvbnRhaW5lZCB3aXRoaW4gaXRzIGNoaWxkIG5vZGVzXG4gKiAgIC0gdGhlIGxpc3Qgb2YgYWN0aW9ucyBnZW5lcmF0ZWQgYnkgaXRzIGNoaWxkIG5vZGVzXG4gKi9cblxuZnVuY3Rpb24gVGVtcGxhdGVWaXNpdG9yKCkge1xuICB0aGlzLmZyYW1lU3RhY2sgPSBbXTtcbiAgdGhpcy5hY3Rpb25zID0gW107XG4gIHRoaXMucHJvZ3JhbURlcHRoID0gLTE7XG59XG5cbi8vIFRyYXZlcnNhbCBtZXRob2RzXG5cblRlbXBsYXRlVmlzaXRvci5wcm90b3R5cGUudmlzaXQgPSBmdW5jdGlvbihub2RlKSB7XG4gIHRoaXNbbm9kZS50eXBlXShub2RlKTtcbn07XG5cblRlbXBsYXRlVmlzaXRvci5wcm90b3R5cGUuUHJvZ3JhbSA9IGZ1bmN0aW9uKHByb2dyYW0pIHtcbiAgdGhpcy5wcm9ncmFtRGVwdGgrKztcblxuICBsZXQgcGFyZW50RnJhbWUgPSB0aGlzLmdldEN1cnJlbnRGcmFtZSgpO1xuICBsZXQgcHJvZ3JhbUZyYW1lID0gdGhpcy5wdXNoRnJhbWUoKTtcblxuICBpZiAocGFyZW50RnJhbWUpIHtcbiAgICBwcm9ncmFtLnN5bWJvbHMgPSBuZXcgU3ltYm9sVGFibGUocHJvZ3JhbS5ibG9ja1BhcmFtcywgcGFyZW50RnJhbWUuc3ltYm9scyk7XG4gIH0gZWxzZSB7XG4gICAgcHJvZ3JhbS5zeW1ib2xzID0gbmV3IFN5bWJvbFRhYmxlKHByb2dyYW0uYmxvY2tQYXJhbXMpO1xuICB9XG5cbiAgbGV0IHN0YXJ0VHlwZSwgZW5kVHlwZTtcblxuICBpZiAodGhpcy5wcm9ncmFtRGVwdGggPT09IDApIHtcbiAgICBzdGFydFR5cGUgPSAnc3RhcnRQcm9ncmFtJztcbiAgICBlbmRUeXBlID0gJ2VuZFByb2dyYW0nO1xuICB9IGVsc2Uge1xuICAgIHN0YXJ0VHlwZSA9ICdzdGFydEJsb2NrJztcbiAgICBlbmRUeXBlID0gJ2VuZEJsb2NrJztcbiAgfVxuXG4gIHByb2dyYW1GcmFtZS5wYXJlbnROb2RlID0gcHJvZ3JhbTtcbiAgcHJvZ3JhbUZyYW1lLmNoaWxkcmVuID0gcHJvZ3JhbS5ib2R5O1xuICBwcm9ncmFtRnJhbWUuY2hpbGRDb3VudCA9IHByb2dyYW0uYm9keS5sZW5ndGg7XG4gIHByb2dyYW1GcmFtZS5ibGFua0NoaWxkVGV4dE5vZGVzID0gW107XG4gIHByb2dyYW1GcmFtZS5hY3Rpb25zLnB1c2goW2VuZFR5cGUsIFtwcm9ncmFtLCB0aGlzLnByb2dyYW1EZXB0aF1dKTtcbiAgcHJvZ3JhbUZyYW1lLnN5bWJvbHMgPSBwcm9ncmFtLnN5bWJvbHM7XG5cbiAgZm9yIChsZXQgaSA9IHByb2dyYW0uYm9keS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIHByb2dyYW1GcmFtZS5jaGlsZEluZGV4ID0gaTtcbiAgICB0aGlzLnZpc2l0KHByb2dyYW0uYm9keVtpXSk7XG4gIH1cblxuICBwcm9ncmFtRnJhbWUuYWN0aW9ucy5wdXNoKFtzdGFydFR5cGUsIFtcbiAgICBwcm9ncmFtLCBwcm9ncmFtRnJhbWUuY2hpbGRUZW1wbGF0ZUNvdW50LFxuICAgIHByb2dyYW1GcmFtZS5ibGFua0NoaWxkVGV4dE5vZGVzLnJldmVyc2UoKVxuICBdXSk7XG4gIHRoaXMucG9wRnJhbWUoKTtcblxuICB0aGlzLnByb2dyYW1EZXB0aC0tO1xuXG4gIC8vIFB1c2ggdGhlIGNvbXBsZXRlZCB0ZW1wbGF0ZSBpbnRvIHRoZSBnbG9iYWwgYWN0aW9ucyBsaXN0XG4gIGlmIChwYXJlbnRGcmFtZSkgeyBwYXJlbnRGcmFtZS5jaGlsZFRlbXBsYXRlQ291bnQrKzsgfVxuICBwdXNoLmFwcGx5KHRoaXMuYWN0aW9ucywgcHJvZ3JhbUZyYW1lLmFjdGlvbnMucmV2ZXJzZSgpKTtcbn07XG5cblRlbXBsYXRlVmlzaXRvci5wcm90b3R5cGUuRWxlbWVudE5vZGUgPSBmdW5jdGlvbihlbGVtZW50KSB7XG4gIGxldCBwYXJlbnRGcmFtZSA9IHRoaXMuZ2V0Q3VycmVudEZyYW1lKCk7XG4gIGxldCBlbGVtZW50RnJhbWUgPSB0aGlzLnB1c2hGcmFtZSgpO1xuXG4gIGVsZW1lbnRGcmFtZS5wYXJlbnROb2RlID0gZWxlbWVudDtcbiAgZWxlbWVudEZyYW1lLmNoaWxkcmVuID0gZWxlbWVudC5jaGlsZHJlbjtcbiAgZWxlbWVudEZyYW1lLmNoaWxkQ291bnQgPSBlbGVtZW50LmNoaWxkcmVuLmxlbmd0aDtcbiAgZWxlbWVudEZyYW1lLm11c3RhY2hlQ291bnQgKz0gZWxlbWVudC5tb2RpZmllcnMubGVuZ3RoO1xuICBlbGVtZW50RnJhbWUuYmxhbmtDaGlsZFRleHROb2RlcyA9IFtdO1xuICBlbGVtZW50RnJhbWUuc3ltYm9scyA9IHBhcmVudEZyYW1lLnN5bWJvbHM7XG5cbiAgbGV0IGFjdGlvbkFyZ3MgPSBbXG4gICAgZWxlbWVudCxcbiAgICBwYXJlbnRGcmFtZS5jaGlsZEluZGV4LFxuICAgIHBhcmVudEZyYW1lLmNoaWxkQ291bnRcbiAgXTtcblxuICBlbGVtZW50RnJhbWUuYWN0aW9ucy5wdXNoKFsnY2xvc2VFbGVtZW50JywgYWN0aW9uQXJnc10pO1xuXG4gIGZvciAobGV0IGkgPSBlbGVtZW50LmF0dHJpYnV0ZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB0aGlzLnZpc2l0KGVsZW1lbnQuYXR0cmlidXRlc1tpXSk7XG4gIH1cblxuICBmb3IgKGxldCBpID0gZWxlbWVudC5jaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGVsZW1lbnRGcmFtZS5jaGlsZEluZGV4ID0gaTtcbiAgICB0aGlzLnZpc2l0KGVsZW1lbnQuY2hpbGRyZW5baV0pO1xuICB9XG5cbiAgZWxlbWVudEZyYW1lLmFjdGlvbnMucHVzaChbJ29wZW5FbGVtZW50JywgYWN0aW9uQXJncy5jb25jYXQoW1xuICAgIGVsZW1lbnRGcmFtZS5tdXN0YWNoZUNvdW50LCBlbGVtZW50RnJhbWUuYmxhbmtDaGlsZFRleHROb2Rlcy5yZXZlcnNlKCkgXSldKTtcbiAgdGhpcy5wb3BGcmFtZSgpO1xuXG4gIC8vIFByb3BhZ2F0ZSB0aGUgZWxlbWVudCdzIGZyYW1lIHN0YXRlIHRvIHRoZSBwYXJlbnQgZnJhbWVcbiAgaWYgKGVsZW1lbnRGcmFtZS5tdXN0YWNoZUNvdW50ID4gMCkgeyBwYXJlbnRGcmFtZS5tdXN0YWNoZUNvdW50Kys7IH1cbiAgcGFyZW50RnJhbWUuY2hpbGRUZW1wbGF0ZUNvdW50ICs9IGVsZW1lbnRGcmFtZS5jaGlsZFRlbXBsYXRlQ291bnQ7XG4gIHB1c2guYXBwbHkocGFyZW50RnJhbWUuYWN0aW9ucywgZWxlbWVudEZyYW1lLmFjdGlvbnMpO1xufTtcblxuVGVtcGxhdGVWaXNpdG9yLnByb3RvdHlwZS5BdHRyTm9kZSA9IGZ1bmN0aW9uKGF0dHIpIHtcbiAgaWYgKGF0dHIudmFsdWUudHlwZSAhPT0gJ1RleHROb2RlJykge1xuICAgIHRoaXMuZ2V0Q3VycmVudEZyYW1lKCkubXVzdGFjaGVDb3VudCsrO1xuICB9XG59O1xuXG5UZW1wbGF0ZVZpc2l0b3IucHJvdG90eXBlLlRleHROb2RlID0gZnVuY3Rpb24odGV4dCkge1xuICBsZXQgZnJhbWUgPSB0aGlzLmdldEN1cnJlbnRGcmFtZSgpO1xuICBpZiAodGV4dC5jaGFycyA9PT0gJycpIHtcbiAgICBmcmFtZS5ibGFua0NoaWxkVGV4dE5vZGVzLnB1c2goZG9tSW5kZXhPZihmcmFtZS5jaGlsZHJlbiwgdGV4dCkpO1xuICB9XG4gIGZyYW1lLmFjdGlvbnMucHVzaChbJ3RleHQnLCBbdGV4dCwgZnJhbWUuY2hpbGRJbmRleCwgZnJhbWUuY2hpbGRDb3VudF1dKTtcbn07XG5cblRlbXBsYXRlVmlzaXRvci5wcm90b3R5cGUuQmxvY2tTdGF0ZW1lbnQgPSBmdW5jdGlvbihub2RlKSB7XG4gIGxldCBmcmFtZSA9IHRoaXMuZ2V0Q3VycmVudEZyYW1lKCk7XG5cbiAgZnJhbWUubXVzdGFjaGVDb3VudCsrO1xuICBmcmFtZS5hY3Rpb25zLnB1c2goWydibG9jaycsIFtub2RlLCBmcmFtZS5jaGlsZEluZGV4LCBmcmFtZS5jaGlsZENvdW50XV0pO1xuXG4gIGlmIChub2RlLmludmVyc2UpIHsgdGhpcy52aXNpdChub2RlLmludmVyc2UpOyB9XG4gIGlmIChub2RlLnByb2dyYW0pIHsgdGhpcy52aXNpdChub2RlLnByb2dyYW0pOyB9XG59O1xuXG5UZW1wbGF0ZVZpc2l0b3IucHJvdG90eXBlLlBhcnRpYWxTdGF0ZW1lbnQgPSBmdW5jdGlvbihub2RlKSB7XG4gIGxldCBmcmFtZSA9IHRoaXMuZ2V0Q3VycmVudEZyYW1lKCk7XG4gIGZyYW1lLm11c3RhY2hlQ291bnQrKztcbiAgZnJhbWUuYWN0aW9ucy5wdXNoKFsnbXVzdGFjaGUnLCBbbm9kZSwgZnJhbWUuY2hpbGRJbmRleCwgZnJhbWUuY2hpbGRDb3VudF1dKTtcbn07XG5cblRlbXBsYXRlVmlzaXRvci5wcm90b3R5cGUuQ29tbWVudFN0YXRlbWVudCA9IGZ1bmN0aW9uKHRleHQpIHtcbiAgbGV0IGZyYW1lID0gdGhpcy5nZXRDdXJyZW50RnJhbWUoKTtcbiAgZnJhbWUuYWN0aW9ucy5wdXNoKFsnY29tbWVudCcsIFt0ZXh0LCBmcmFtZS5jaGlsZEluZGV4LCBmcmFtZS5jaGlsZENvdW50XV0pO1xufTtcblxuVGVtcGxhdGVWaXNpdG9yLnByb3RvdHlwZS5NdXN0YWNoZVN0YXRlbWVudCA9IGZ1bmN0aW9uKG11c3RhY2hlKSB7XG4gIGxldCBmcmFtZSA9IHRoaXMuZ2V0Q3VycmVudEZyYW1lKCk7XG4gIGZyYW1lLm11c3RhY2hlQ291bnQrKztcbiAgZnJhbWUuYWN0aW9ucy5wdXNoKFsnbXVzdGFjaGUnLCBbbXVzdGFjaGUsIGZyYW1lLmNoaWxkSW5kZXgsIGZyYW1lLmNoaWxkQ291bnRdXSk7XG59O1xuXG4vLyBGcmFtZSBoZWxwZXJzXG5cblRlbXBsYXRlVmlzaXRvci5wcm90b3R5cGUuZ2V0Q3VycmVudEZyYW1lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmZyYW1lU3RhY2tbdGhpcy5mcmFtZVN0YWNrLmxlbmd0aCAtIDFdO1xufTtcblxuVGVtcGxhdGVWaXNpdG9yLnByb3RvdHlwZS5wdXNoRnJhbWUgPSBmdW5jdGlvbigpIHtcbiAgbGV0IGZyYW1lID0gbmV3IEZyYW1lKCk7XG4gIHRoaXMuZnJhbWVTdGFjay5wdXNoKGZyYW1lKTtcbiAgcmV0dXJuIGZyYW1lO1xufTtcblxuVGVtcGxhdGVWaXNpdG9yLnByb3RvdHlwZS5wb3BGcmFtZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5mcmFtZVN0YWNrLnBvcCgpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGVtcGxhdGVWaXNpdG9yO1xuXG4vLyBSZXR1cm5zIHRoZSBpbmRleCBvZiBgZG9tTm9kZWAgaW4gdGhlIGBub2Rlc2AgYXJyYXksIHNraXBwaW5nXG4vLyBvdmVyIGFueSBub2RlcyB3aGljaCBkbyBub3QgcmVwcmVzZW50IERPTSBub2Rlcy5cbmZ1bmN0aW9uIGRvbUluZGV4T2Yobm9kZXMsIGRvbU5vZGUpIHtcbiAgbGV0IGluZGV4ID0gLTE7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBub2RlID0gbm9kZXNbaV07XG5cbiAgICBpZiAobm9kZS50eXBlICE9PSAnVGV4dE5vZGUnICYmIG5vZGUudHlwZSAhPT0gJ0VsZW1lbnROb2RlJykge1xuICAgICAgY29udGludWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluZGV4Kys7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUgPT09IGRvbU5vZGUpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gLTE7XG59XG4iXX0=
12788
12848
  enifed("glimmer-compiler/lib/utils", ["exports"], function (exports) {
12789
12849
  "use strict";
12790
12850
 
@@ -15228,7 +15288,7 @@ enifed('glimmer-runtime/lib/compiled/expressions/value', ['exports', 'glimmer-ru
15228
15288
  exports.ValueReference = ValueReference;
15229
15289
  });
15230
15290
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvZXhwcmVzc2lvbnMvdmFsdWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBS0EsYUFBQTs4QkFBQSxhQUFBOztBQUlFLGlCQUpGLGFBQUEsQ0FJYyxLQUFVLEVBQUE7QUFDcEIsMENBQU8sQ0FBQztBQUpILGdCQUFBLENBQUEsSUFBSSxHQUFHLE9BQU8sQ0FBQztBQUtwQixnQkFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1Qzs7QUFQSCxxQkFBQSxXQVNFLFFBQVEsR0FBQSxrQkFBQyxFQUFNLEVBQUE7QUFDYixtQkFBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQ3ZCOztBQVhILHFCQUFBLFdBYUUsTUFBTSxHQUFBLGtCQUFBO0FBQ0osbUJBQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDL0M7O2VBZkgsYUFBQTs2Q0FKUyxrQkFBa0I7O3NCQUkzQixhQUFBOztRQWtCQSxjQUFBOzhCQUFBLGNBQUE7O0FBQUEsaUJBQUEsY0FBQSxHQUFBO0FBQXVDLHdDQUFBLFNBQUEsQ0FBQSxDQUFpQjtBQUU1QyxnQkFBQSxDQUFBLFFBQVEsR0FBOEIsYUF0Qm5DLElBQUksRUFzQjBELENBQUM7U0FjN0U7O0FBaEJELHNCQUFBLFdBSUUsR0FBRyxHQUFBLGFBQUMsR0FBVyxFQUFBO2dCQUNQLFFBQVEsR0FBSyxJQUFJLENBQWpCLFFBQVE7O0FBQ2QsZ0JBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUUxQixnQkFBSSxDQUFDLEtBQUssRUFBRTtBQUNWLHFCQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUM3RDtBQUVELG1CQUFPLEtBQUssQ0FBQztTQUNkOztBQWJILHNCQUFBLFdBZUUsS0FBSyxHQUFBLGlCQUFBO0FBQVUsbUJBQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztTQUFFOztlQWZyQyxjQUFBO3lCQXJCUyxjQUFjIiwiZmlsZSI6InZhbHVlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVk0gfSBmcm9tICcuLi8uLi92bSc7XG5pbXBvcnQgeyBDb21waWxlZEV4cHJlc3Npb24gfSBmcm9tICcuLi9leHByZXNzaW9ucyc7XG5pbXBvcnQgeyBDb25zdFJlZmVyZW5jZSwgUGF0aFJlZmVyZW5jZSB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcbmltcG9ydCB7IERpY3QsIGRpY3QgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb21waWxlZFZhbHVlPFQ+IGV4dGVuZHMgQ29tcGlsZWRFeHByZXNzaW9uPFQ+IHtcbiAgcHVibGljIHR5cGUgPSBcInZhbHVlXCI7XG4gIHByaXZhdGUgcmVmZXJlbmNlOiBWYWx1ZVJlZmVyZW5jZTxUPjtcblxuICBjb25zdHJ1Y3Rvcih2YWx1ZTogYW55KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnJlZmVyZW5jZSA9IG5ldyBWYWx1ZVJlZmVyZW5jZSh2YWx1ZSk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVk0pOiBQYXRoUmVmZXJlbmNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2U7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5yZWZlcmVuY2UudmFsdWUoKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFZhbHVlUmVmZXJlbmNlPFQ+IGV4dGVuZHMgQ29uc3RSZWZlcmVuY2U8VD4gaW1wbGVtZW50cyBQYXRoUmVmZXJlbmNlPFQ+IHtcbiAgcHJvdGVjdGVkIGlubmVyOiBUO1xuICBwcm90ZWN0ZWQgY2hpbGRyZW46IERpY3Q8VmFsdWVSZWZlcmVuY2U8YW55Pj4gPSBkaWN0PFZhbHVlUmVmZXJlbmNlPGFueT4+KCk7XG5cbiAgZ2V0KGtleTogc3RyaW5nKSB7XG4gICAgbGV0IHsgY2hpbGRyZW4gfSA9IHRoaXM7XG4gICAgbGV0IGNoaWxkID0gY2hpbGRyZW5ba2V5XTtcblxuICAgIGlmICghY2hpbGQpIHtcbiAgICAgIGNoaWxkID0gY2hpbGRyZW5ba2V5XSA9IG5ldyBWYWx1ZVJlZmVyZW5jZSh0aGlzLmlubmVyW2tleV0pO1xuICAgIH1cblxuICAgIHJldHVybiBjaGlsZDtcbiAgfVxuXG4gIHZhbHVlKCk6IGFueSB7IHJldHVybiB0aGlzLmlubmVyOyB9XG59XG4iXX0=
15231
- enifed('glimmer-runtime/lib/compiled/opcodes/builder', ['exports', 'glimmer-runtime/lib/compiled/opcodes/component', 'glimmer-runtime/lib/compiled/opcodes/content', 'glimmer-runtime/lib/compiled/opcodes/dom', 'glimmer-runtime/lib/compiled/opcodes/lists', 'glimmer-runtime/lib/compiled/opcodes/vm', 'glimmer-util', 'glimmer-runtime/lib/utils'], function (exports, _glimmerRuntimeLibCompiledOpcodesComponent, _glimmerRuntimeLibCompiledOpcodesContent, _glimmerRuntimeLibCompiledOpcodesDom, _glimmerRuntimeLibCompiledOpcodesLists, _glimmerRuntimeLibCompiledOpcodesVm, _glimmerUtil, _glimmerRuntimeLibUtils) {
15291
+ enifed('glimmer-runtime/lib/compiled/opcodes/builder', ['exports', 'glimmer-runtime/lib/compiled/opcodes/component', 'glimmer-runtime/lib/compiled/opcodes/partial', 'glimmer-runtime/lib/compiled/opcodes/content', 'glimmer-runtime/lib/compiled/opcodes/dom', 'glimmer-runtime/lib/compiled/opcodes/lists', 'glimmer-runtime/lib/compiled/opcodes/vm', 'glimmer-util', 'glimmer-runtime/lib/utils'], function (exports, _glimmerRuntimeLibCompiledOpcodesComponent, _glimmerRuntimeLibCompiledOpcodesPartial, _glimmerRuntimeLibCompiledOpcodesContent, _glimmerRuntimeLibCompiledOpcodesDom, _glimmerRuntimeLibCompiledOpcodesLists, _glimmerRuntimeLibCompiledOpcodesVm, _glimmerUtil, _glimmerRuntimeLibUtils) {
15232
15292
  'use strict';
15233
15293
 
15234
15294
  var StatementCompilationBufferProxy = (function () {
@@ -15325,6 +15385,20 @@ enifed('glimmer-runtime/lib/compiled/opcodes/builder', ['exports', 'glimmer-runt
15325
15385
  return label;
15326
15386
  };
15327
15387
 
15388
+ // partials
15389
+
15390
+ BasicOpcodeBuilder.prototype.putPartialDefinition = function putPartialDefinition(definition) {
15391
+ this.append(new _glimmerRuntimeLibCompiledOpcodesPartial.PutPartialDefinitionOpcode(definition));
15392
+ };
15393
+
15394
+ BasicOpcodeBuilder.prototype.putDynamicPartialDefinition = function putDynamicPartialDefinition() {
15395
+ this.append(new _glimmerRuntimeLibCompiledOpcodesPartial.PutDynamicPartialDefinitionOpcode(this.symbolTable));
15396
+ };
15397
+
15398
+ BasicOpcodeBuilder.prototype.evaluatePartial = function evaluatePartial() {
15399
+ this.append(new _glimmerRuntimeLibCompiledOpcodesPartial.EvaluatePartialOpcode(this.symbolTable));
15400
+ };
15401
+
15328
15402
  // components
15329
15403
 
15330
15404
  BasicOpcodeBuilder.prototype.putComponentDefinition = function putComponentDefinition(definition) {
@@ -15597,11 +15671,11 @@ enifed('glimmer-runtime/lib/compiled/opcodes/builder', ['exports', 'glimmer-runt
15597
15671
  var templates = _ref.templates;
15598
15672
  var args = _ref.args;
15599
15673
 
15674
+ if (args) this.putArgs(args);
15600
15675
  this.startLabels();
15601
15676
  this.startBlock(templates);
15602
15677
  this.enter('BEGIN', 'END');
15603
15678
  this.label('BEGIN');
15604
- if (args) this.putArgs(args);
15605
15679
  callback(this, 'BEGIN', 'END');
15606
15680
  this.label('END');
15607
15681
  this.exit();
@@ -15650,7 +15724,7 @@ enifed('glimmer-runtime/lib/compiled/opcodes/builder', ['exports', 'glimmer-runt
15650
15724
 
15651
15725
  exports.default = OpcodeBuilder;
15652
15726
  });
15653
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvb3Bjb2Rlcy9idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQXVCQSwrQkFBQTtBQUVFLGlCQUZGLCtCQUFBLENBRXdCLEtBQWlDLEVBQUE7QUFBakMsZ0JBQUEsQ0FBQSxLQUFLLEdBQUwsS0FBSyxDQUE0QjtTQUFJOztBQUY3RCx1Q0FBQSxXQVFFLE9BQU8sR0FBQSxtQkFBQTtBQUNMLG1CQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDN0I7O0FBVkgsdUNBQUEsV0FZRSxNQUFNLEdBQUEsZ0JBQW1CLE1BQVMsRUFBQTtBQUNoQyxnQkFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDM0I7O0FBZEgsdUNBQUEsV0FnQkUsY0FBYyxHQUFBLHdCQUFDLElBQVksRUFBQTtBQUN6QixtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4Qzs7QUFsQkgsdUNBQUEsV0FvQkUsY0FBYyxHQUFBLHdCQUFDLElBQVksRUFBQTtBQUN6QixtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4Qzs7QUF0QkgsdUNBQUEsV0F3QkUsY0FBYyxHQUFBLHdCQUFDLElBQVksRUFBQTtBQUN6QixtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4Qzs7QUExQkgsdUNBQUEsV0E0QkUsY0FBYyxHQUFBLHdCQUFDLElBQVksRUFBQTtBQUN6QixtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4Qzs7QUE5QkgsdUNBQUEsV0FnQ0UsY0FBYyxHQUFBLHdCQUFDLElBQVksRUFBQTtBQUN6QixtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJ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UUFBUSxFQUFFLENBQUM7QUFDaEIsZ0JBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUNoQixnQkFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25COzs7OztBQW5FSCxxQkFBQSxXQXVFRSxJQUFJLEdBQUEsY0FBQyxLQUE4QyxFQUFFLFFBQTBDLEVBQUE7Z0JBQXhGLFNBQVMsR0FBWCxLQUE4QyxDQUE1QyxTQUFTOztBQUNkLGdCQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDbkIsZ0JBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDM0Isb0JBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNmLGdCQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDaEIsZ0JBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNuQjs7ZUE3RUgsYUFBQTtPQUEyQyxrQkFBa0I7O3NCQUE3RCxhQUFBIiwiZmlsZSI6ImJ1aWxkZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb21wb25lbnQgZnJvbSAnLi9jb21wb25lbnQnO1xuaW1wb3J0ICogYXMgY29udGVudCBmcm9tICcuL2NvbnRlbnQnO1xuaW1wb3J0ICogYXMgZG9tIGZyb20gJy4vZG9tJztcbmltcG9ydCAqIGFzIGxpc3RzIGZyb20gJy4vbGlzdHMnO1xuaW1wb3J0ICogYXMgdm0gZnJvbSAnLi92bSc7XG5pbXBvcnQgKiBhcyBTeW50YXggZnJvbSAnLi4vLi4vc3ludGF4L2NvcmUnO1xuXG5pbXBvcnQgeyBTdGFjaywgRGljdCwgT3BhcXVlLCBkaWN0IH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7IFN0YXRlbWVudENvbXBpbGF0aW9uQnVmZmVyLCBDb21waWxlc0ludG8gfSBmcm9tICcuLi8uLi9zeW50YXgnO1xuaW1wb3J0IHsgT3Bjb2RlLCBPcFNlcSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgQ29tcGlsZWRBcmdzIH0gZnJvbSAnLi4vZXhwcmVzc2lvbnMvYXJncyc7XG5pbXBvcnQgeyBDb21waWxlZEV4cHJlc3Npb24gfSBmcm9tICcuLi9leHByZXNzaW9ucyc7XG5pbXBvcnQgeyBDb21wb25lbnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IElubGluZUJsb2NrLCBMYXlvdXQgfSBmcm9tICcuLi9ibG9ja3MnO1xuaW1wb3J0IHsgRU1QVFlfQVJSQVkgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgU3ltYm9sVGFibGUgZnJvbSAnLi4vLi4vc3ltYm9sLXRhYmxlJztcbmltcG9ydCB7IENvbXBvbmVudEJ1aWxkZXIgfSBmcm9tICcuLi8uLi9vcGNvZGUtYnVpbGRlcic7XG5cbmV4cG9ydCB0eXBlIFJlcHJlc2VudHM8RT4gPSBDb21waWxlc0ludG88RT4gfCBFO1xuXG5leHBvcnQgdHlwZSBMYWJlbCA9IHN0cmluZztcblxuZXhwb3J0IGNsYXNzIFN0YXRlbWVudENvbXBpbGF0aW9uQnVmZmVyUHJveHkgaW1wbGVtZW50cyBTdGF0ZW1lbnRDb21waWxhdGlvbkJ1ZmZlciB7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGlubmVyOiBTdGF0ZW1lbnRDb21waWxhdGlvbkJ1ZmZlcikge31cblxuICBnZXQgY29tcG9uZW50KCk6IENvbXBvbmVudEJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmlubmVyLmNvbXBvbmVudDtcbiAgfVxuXG4gIHRvT3BTZXEoKTogT3BTZXEge1xuICAgIHJldHVybiB0aGlzLmlubmVyLnRvT3BTZXEoKTtcbiAgfVxuXG4gIGFwcGVuZDxUIGV4dGVuZHMgT3Bjb2RlPihvcGNvZGU6IFQpIHtcbiAgICB0aGlzLmlubmVyLmFwcGVuZChvcGNvZGUpO1xuICB9XG5cbiAgZ2V0TG9jYWxTeW1ib2wobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lci5nZXRMb2NhbFN5bWJvbChuYW1lKTtcbiAgfVxuXG4gIGhhc0xvY2FsU3ltYm9sKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlubmVyLmhhc0xvY2FsU3ltYm9sKG5hbWUpO1xuICB9XG5cbiAgZ2V0TmFtZWRTeW1ib2wobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lci5nZXROYW1lZFN5bWJvbChuYW1lKTtcbiAgfVxuXG4gIGhhc05hbWVkU3ltYm9sKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlubmVyLmhhc05hbWVkU3ltYm9sKG5hbWUpO1xuICB9XG5cbiAgZ2V0QmxvY2tTeW1ib2wobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lci5nZXRCbG9ja1N5bWJvbChuYW1lKTtcbiAgfVxuXG4gIGhhc0Jsb2NrU3ltYm9sKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlubmVyLmhhc0Jsb2NrU3ltYm9sKG5hbWUpO1xuICB9XG5cbiAgZ2V0UGFydGlhbEFyZ3NTeW1ib2woKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lci5nZXRQYXJ0aWFsQXJnc1N5bWJvbCgpO1xuICB9XG5cbiAgaGFzUGFydGlhbEFyZ3NTeW1ib2woKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIuaGFzUGFydGlhbEFyZ3NTeW1ib2woKTtcbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzaWNPcGNvZGVCdWlsZGVyIGV4dGVuZHMgU3RhdGVtZW50Q29tcGlsYXRpb25CdWZmZXJQcm94eSB7XG4gIHByaXZhdGUgbGFiZWxzU3RhY2sgPSBuZXcgU3RhY2s8RGljdDx2bS5MYWJlbE9wY29kZT4+KCk7XG4gIHByaXZhdGUgdGVtcGxhdGVzU3RhY2sgPSBuZXcgU3RhY2s8U3ludGF4LlRlbXBsYXRlcz4oKTtcblxuICBjb25zdHJ1Y3Rvcihpbm5lcjogU3RhdGVtZW50Q29tcGlsYXRpb25CdWZmZXIsIHByb3RlY3RlZCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUsIHB1YmxpYyBlbnY6IEVudmlyb25tZW50KSB7XG4gICAgc3VwZXIoaW5uZXIpO1xuICB9XG5cbiAgYWJzdHJhY3QgY29tcGlsZTxFPihleHByOiBSZXByZXNlbnRzPEU+KTogRTtcblxuICAvLyBoZWxwZXJzXG5cbiAgZ2V0IGxhYmVscygpIHtcbiAgICByZXR1cm4gdGhpcy5sYWJlbHNTdGFjay5jdXJyZW50O1xuICB9XG5cbiAgZ2V0IHRlbXBsYXRlcygpIHtcbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZXNTdGFjay5jdXJyZW50O1xuICB9XG5cbiAgc3RhcnRCbG9jayh0ZW1wbGF0ZXM6IFN5bnRheC5UZW1wbGF0ZXMpIHtcbiAgICB0aGlzLnRlbXBsYXRlc1N0YWNrLnB1c2godGVtcGxhdGVzKTtcbiAgfVxuXG4gIGVuZEJsb2NrKCkge1xuICAgIHRoaXMudGVtcGxhdGVzU3RhY2sucG9wKCk7XG4gIH1cblxuICBzdGFydExhYmVscygpIHtcbiAgICB0aGlzLmxhYmVsc1N0YWNrLnB1c2goZGljdDx2bS5MYWJlbE9wY29kZT4oKSk7XG4gIH1cblxuICBzdG9wTGFiZWxzKCkge1xuICAgIHRoaXMubGFiZWxzU3RhY2sucG9wKCk7XG4gIH1cblxuICBsYWJlbEZvcihuYW1lOiBzdHJpbmcpOiB2bS5MYWJlbE9wY29kZSB7XG4gICAgbGV0IGxhYmVscyA9IHRoaXMubGFiZWxzO1xuICAgIGxldCBsYWJlbCA9IGxhYmVsc1tuYW1lXTtcblxuICAgIGlmICghbGFiZWwpIHtcbiAgICAgIGxhYmVsID0gbGFiZWxzW25hbWVdID0gbmV3IHZtLkxhYmVsT3Bjb2RlKG5hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiBsYWJlbDtcbiAgfVxuXG4gIC8vIGNvbXBvbmVudHNcblxuICBwdXRDb21wb25lbnREZWZpbml0aW9uKGRlZmluaXRpb246IENvbXBvbmVudERlZmluaXRpb248T3BhcXVlPikge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBjb21wb25lbnQuUHV0Q29tcG9uZW50RGVmaW5pdGlvbk9wY29kZShkZWZpbml0aW9uKSk7XG4gIH1cblxuICBwdXREeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbigpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgY29tcG9uZW50LlB1dER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uT3Bjb2RlKCkpO1xuICB9XG5cbiAgb3BlbkNvbXBvbmVudChhcmdzOiBSZXByZXNlbnRzPENvbXBpbGVkQXJncz4sIHNoYWRvdzogc3RyaW5nW10gPSBFTVBUWV9BUlJBWSkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBjb21wb25lbnQuT3BlbkNvbXBvbmVudE9wY29kZSh0aGlzLmNvbXBpbGUoYXJncyksIHNoYWRvdywgdGhpcy50ZW1wbGF0ZXMpKTtcbiAgfVxuXG4gIGRpZENyZWF0ZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGNvbXBvbmVudC5EaWRDcmVhdGVFbGVtZW50T3Bjb2RlKCkpO1xuICB9XG5cbiAgc2hhZG93QXR0cmlidXRlcygpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgY29tcG9uZW50LlNoYWRvd0F0dHJpYnV0ZXNPcGNvZGUoKSk7XG4gIH1cblxuICBkaWRSZW5kZXJMYXlvdXQoKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGNvbXBvbmVudC5EaWRSZW5kZXJMYXlvdXRPcGNvZGUoKSk7XG4gIH1cblxuICBjbG9zZUNvbXBvbmVudCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgY29tcG9uZW50LkNsb3NlQ29tcG9uZW50T3Bjb2RlKCkpO1xuICB9XG5cbiAgLy8gY29udGVudFxuXG4gIGNhdXRpb3VzQXBwZW5kKCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBjb250ZW50Lk9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlKCkpO1xuICB9XG5cbiAgdHJ1c3RpbmdBcHBlbmQoKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGNvbnRlbnQuT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUoKSk7XG4gIH1cblxuICAvLyBkb21cblxuICB0ZXh0KHRleHQ6IHN0cmluZykge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBkb20uVGV4dE9wY29kZSh0ZXh0KSk7XG4gIH1cblxuICBvcGVuUHJpbWl0aXZlRWxlbWVudCh0YWc6IHN0cmluZykge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBkb20uT3BlblByaW1pdGl2ZUVsZW1lbnRPcGNvZGUodGFnKSk7XG4gIH1cblxuICBvcGVuQ29tcG9uZW50RWxlbWVudCh0YWc6IHN0cmluZykge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBkb20uT3BlbkNvbXBvbmVudEVsZW1lbnRPcGNvZGUodGFnKSk7XG4gIH1cblxuICBvcGVuRHluYW1pY1ByaW1pdGl2ZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGRvbS5PcGVuRHluYW1pY1ByaW1pdGl2ZUVsZW1lbnRPcGNvZGUoKSk7XG4gIH1cblxuICBmbHVzaEVsZW1lbnQoKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGRvbS5GbHVzaEVsZW1lbnRPcGNvZGUoKSk7XG4gIH1cblxuICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGRvbS5DbG9zZUVsZW1lbnRPcGNvZGUoKSk7XG4gIH1cblxuICBzdGF0aWNBdHRyKG5hbWU6IHN0cmluZywgbmFtZXNwYWNlOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgZG9tLlN0YXRpY0F0dHJPcGNvZGUobmFtZSwgbmFtZXNwYWNlLCB2YWx1ZSkpO1xuICB9XG5cbiAgZHluYW1pY0F0dHJOUyhuYW1lOiBzdHJpbmcsIG5hbWVzcGFjZTogc3RyaW5nLCBpc1RydXN0aW5nOiBib29sZWFuKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGRvbS5EeW5hbWljQXR0ck5TT3Bjb2RlKG5hbWUsIG5hbWVzcGFjZSwgaXNUcnVzdGluZykpO1xuICB9XG5cbiAgZHluYW1pY0F0dHIobmFtZTogc3RyaW5nLCBpc1RydXN0aW5nOiBib29sZWFuKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGRvbS5EeW5hbWljQXR0ck9wY29kZShuYW1lLCBpc1RydXN0aW5nKSk7XG4gIH1cblxuICBjb21tZW50KGNvbW1lbnQ6IHN0cmluZykge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBkb20uQ29tbWVudE9wY29kZShjb21tZW50KSk7XG4gIH1cblxuICAvLyBsaXN0c1xuXG4gIHB1dEl0ZXJhdG9yKCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBsaXN0cy5QdXRJdGVyYXRvck9wY29kZSgpKTtcbiAgfVxuXG4gIGVudGVyTGlzdChzdGFydDogc3RyaW5nLCBlbmQ6IHN0cmluZykge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBsaXN0cy5FbnRlckxpc3RPcGNvZGUodGhpcy5sYWJlbEZvcihzdGFydCksIHRoaXMubGFiZWxGb3IoZW5kKSkpO1xuICB9XG5cbiAgZXhpdExpc3QoKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGxpc3RzLkV4aXRMaXN0T3Bjb2RlKCkpO1xuICB9XG5cbiAgZW50ZXJXaXRoS2V5KHN0YXJ0OiBzdHJpbmcsIGVuZDogc3RyaW5nKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGxpc3RzLkVudGVyV2l0aEtleU9wY29kZSh0aGlzLmxhYmVsRm9yKHN0YXJ0KSwgdGhpcy5sYWJlbEZvcihlbmQpKSk7XG4gIH1cblxuICBuZXh0SXRlcihlbmQ6IHN0cmluZykge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBsaXN0cy5OZXh0SXRlck9wY29kZSh0aGlzLmxhYmVsRm9yKGVuZCkpKTtcbiAgfVxuXG4gIC8vIHZtXG5cbiAgcHVzaFJlbW90ZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGRvbS5QdXNoUmVtb3RlRWxlbWVudE9wY29kZSgpKTtcbiAgfVxuXG4gIHBvcFJlbW90ZUVsZW1lbnQoKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGRvbS5Qb3BSZW1vdGVFbGVtZW50T3Bjb2RlKCkpO1xuICB9XG5cbiAgcG9wRWxlbWVudCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgZG9tLlBvcEVsZW1lbnRPcGNvZGUoKSk7XG4gIH1cblxuICBsYWJlbChuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLmFwcGVuZCh0aGlzLmxhYmVsRm9yKG5hbWUpKTtcbiAgfVxuXG4gIHB1c2hDaGlsZFNjb3BlKCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5QdXNoQ2hpbGRTY29wZU9wY29kZSgpKTtcbiAgfVxuXG4gIHBvcFNjb3BlKCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5Qb3BTY29wZU9wY29kZSgpKTtcbiAgfVxuXG4gIHB1c2hEeW5hbWljU2NvcGUoKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLlB1c2hEeW5hbWljU2NvcGVPcGNvZGUoKSk7XG4gIH1cblxuICBwb3BEeW5hbWljU2NvcGUoKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLlBvcER5bmFtaWNTY29wZU9wY29kZSgpKTtcbiAgfVxuXG4gIHB1dE51bGwoKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLlB1dE51bGxPcGNvZGUoKSk7XG4gIH1cblxuICBwdXRWYWx1ZShleHByZXNzaW9uOiBSZXByZXNlbnRzPENvbXBpbGVkRXhwcmVzc2lvbjxPcGFxdWU+Pikge1xuICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5QdXRWYWx1ZU9wY29kZSh0aGlzLmNvbXBpbGUoZXhwcmVzc2lvbikpKTtcbiAgfVxuXG4gIHB1dEFyZ3MoYXJnczogUmVwcmVzZW50czxDb21waWxlZEFyZ3M+KSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLlB1dEFyZ3NPcGNvZGUodGhpcy5jb21waWxlKGFyZ3MpKSk7XG4gIH1cblxuICBiaW5kRHluYW1pY1Njb3BlKG5hbWVzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5CaW5kRHluYW1pY1Njb3BlT3Bjb2RlKG5hbWVzKSk7XG4gIH1cblxuICBiaW5kUG9zaXRpb25hbEFyZ3MobmFtZXM6IHN0cmluZ1tdLCBzeW1ib2xzOiBudW1iZXJbXSkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5CaW5kUG9zaXRpb25hbEFyZ3NPcGNvZGUobmFtZXMsIHN5bWJvbHMpKTtcbiAgfVxuXG4gIGJpbmROYW1lZEFyZ3MobmFtZXM6IHN0cmluZ1tdLCBzeW1ib2xzOiBudW1iZXJbXSkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5CaW5kTmFtZWRBcmdzT3Bjb2RlKG5hbWVzLCBzeW1ib2xzKSk7XG4gIH1cblxuICBiaW5kQmxvY2tzKG5hbWVzOiBzdHJpbmdbXSwgc3ltYm9sczogbnVtYmVyW10pIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgdm0uQmluZEJsb2Nrc09wY29kZShuYW1lcywgc3ltYm9scykpO1xuICB9XG5cbiAgZW50ZXIoZW50ZXI6IExhYmVsLCBleGl0OiBMYWJlbCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5FbnRlck9wY29kZSh0aGlzLmxhYmVsRm9yKGVudGVyKSwgdGhpcy5sYWJlbEZvcihleGl0KSkpO1xuICB9XG5cbiAgZXhpdCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgdm0uRXhpdE9wY29kZSgpKTtcbiAgfVxuXG4gIGV2YWx1YXRlKG5hbWU6IHN0cmluZywgYmxvY2sgPSB0aGlzLnRlbXBsYXRlc1tuYW1lXSkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5FdmFsdWF0ZU9wY29kZShuYW1lLCBibG9jaykpO1xuICB9XG5cbiAgdGVzdCh0ZXN0RnVuYzogJ2NvbnN0JyB8ICdzaW1wbGUnIHwgJ2Vudmlyb25tZW50JyB8IHZtLlRlc3RGdW5jdGlvbikge1xuICAgIGlmICh0ZXN0RnVuYyA9PT0gJ2NvbnN0Jykge1xuICAgICAgdGhpcy5hcHBlbmQobmV3IHZtLlRlc3RPcGNvZGUodm0uQ29uc3RUZXN0KSk7XG4gICAgfSBlbHNlIGlmICh0ZXN0RnVuYyA9PT0gJ3NpbXBsZScpIHtcbiAgICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5UZXN0T3Bjb2RlKHZtLlNpbXBsZVRlc3QpKTtcbiAgICB9IGVsc2UgaWYgKHRlc3RGdW5jID09PSAnZW52aXJvbm1lbnQnKSB7XG4gICAgICB0aGlzLmFwcGVuZChuZXcgdm0uVGVzdE9wY29kZSh2bS5FbnZpcm9ubWVudFRlc3QpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0ZXN0RnVuYyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpcy5hcHBlbmQobmV3IHZtLlRlc3RPcGNvZGUodGVzdEZ1bmMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bnJlYWNoYWJsZScpO1xuICAgIH1cbiAgfVxuXG4gIGp1bXAodGFyZ2V0OiBzdHJpbmcpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgdm0uSnVtcE9wY29kZSh0aGlzLmxhYmVsRm9yKHRhcmdldCkpKTtcbiAgfVxuXG4gIGp1bXBJZih0YXJnZXQ6IHN0cmluZykge1xuICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5KdW1wSWZPcGNvZGUodGhpcy5sYWJlbEZvcih0YXJnZXQpKSk7XG4gIH1cblxuICBqdW1wVW5sZXNzKHRhcmdldDogc3RyaW5nKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLkp1bXBVbmxlc3NPcGNvZGUodGhpcy5sYWJlbEZvcih0YXJnZXQpKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNDb21waWxhYmxlRXhwcmVzc2lvbjxFPihleHByOiBSZXByZXNlbnRzPEU+KTogZXhwciBpcyBDb21waWxlc0ludG88RT4ge1xuICByZXR1cm4gZXhwciAmJiB0eXBlb2YgZXhwclsnY29tcGlsZSddID09PSAnZnVuY3Rpb24nO1xufVxuXG5leHBvcnQgdHlwZSBCbG9ja0FyZ3MgPSB7IHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcywgYXJncz86IFN5bnRheC5BcmdzIH07XG5cbmNvbnN0IFNJTVBMRV9CTE9DSzogQmxvY2tBcmdzID0geyB0ZW1wbGF0ZXM6IG51bGwgfTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgT3Bjb2RlQnVpbGRlciBleHRlbmRzIEJhc2ljT3Bjb2RlQnVpbGRlciB7XG4gIGNvbXBpbGU8RT4oZXhwcjogUmVwcmVzZW50czxFPik6IEUge1xuICAgIGlmIChpc0NvbXBpbGFibGVFeHByZXNzaW9uKGV4cHIpKSB7XG4gICAgICByZXR1cm4gZXhwci5jb21waWxlKHRoaXMsIHRoaXMuZW52LCB0aGlzLnN5bWJvbFRhYmxlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGV4cHI7XG4gICAgfVxuICB9XG5cbiAgYmluZFBvc2l0aW9uYWxBcmdzRm9yQmxvY2soYmxvY2s6IElubGluZUJsb2NrKSB7XG4gICAgdGhpcy5hcHBlbmQodm0uQmluZFBvc2l0aW9uYWxBcmdzT3Bjb2RlLmNyZWF0ZShibG9jaykpO1xuICB9XG5cbiAgYmluZE5hbWVkQXJnc0ZvckxheW91dChsYXlvdXQ6IExheW91dCkge1xuICAgIHRoaXMuYXBwZW5kKHZtLkJpbmROYW1lZEFyZ3NPcGNvZGUuY3JlYXRlKGxheW91dCkpO1xuICB9XG5cbiAgYmluZEJsb2Nrc0ZvckxheW91dChsYXlvdXQ6IExheW91dCkge1xuICAgIHRoaXMuYXBwZW5kKHZtLkJpbmRCbG9ja3NPcGNvZGUuY3JlYXRlKGxheW91dCkpO1xuICB9XG5cbiAgYmluZFBhcnRpYWxBcmdzRm9yTGF5b3V0KGxheW91dDogTGF5b3V0KSB7XG4gICAgdGhpcy5hcHBlbmQodm0uQmluZFBhcnRpYWxBcmdzT3Bjb2RlLmNyZWF0ZShsYXlvdXQpKTtcbiAgfVxuXG4gIHNpbXBsZUJsb2NrKGNhbGxiYWNrOiBCbG9ja0NhbGxiYWNrKSB7XG4gICAgdGhpcy5ibG9jayhTSU1QTEVfQkxPQ0ssIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8vIFRPRE9cbiAgLy8gY29tZSBiYWNrIHRvIHRoaXNcbiAgYmxvY2soeyB0ZW1wbGF0ZXMsIGFyZ3MgfTogQmxvY2tBcmdzLCBjYWxsYmFjazogQmxvY2tDYWxsYmFjaykge1xuICAgIHRoaXMuc3RhcnRMYWJlbHMoKTtcbiAgICB0aGlzLnN0YXJ0QmxvY2sodGVtcGxhdGVzKTtcbiAgICB0aGlzLmVudGVyKCdCRUdJTicsICdFTkQnKTtcbiAgICB0aGlzLmxhYmVsKCdCRUdJTicpO1xuXG4gICAgaWYgKGFyZ3MpIHRoaXMucHV0QXJncyhhcmdzKTtcblxuICAgIGNhbGxiYWNrKHRoaXMsICdCRUdJTicsICdFTkQnKTtcblxuICAgIHRoaXMubGFiZWwoJ0VORCcpO1xuICAgIHRoaXMuZXhpdCgpO1xuICAgIHRoaXMuZW5kQmxvY2soKTtcbiAgICB0aGlzLnN0b3BMYWJlbHMoKTtcbiAgfVxuXG4gICAgLy8gVE9ET1xuICAvLyBjb21lIGJhY2sgdG8gdGhpc1xuICBpdGVyKHsgdGVtcGxhdGVzIH06IHsgdGVtcGxhdGVzOiBTeW50YXguVGVtcGxhdGVzIH0sIGNhbGxiYWNrOiBCbG9ja0NhbGxiYWNrKSB7XG4gICAgdGhpcy5zdGFydExhYmVscygpO1xuICAgIHRoaXMuc3RhcnRCbG9jayh0ZW1wbGF0ZXMpO1xuICAgIHRoaXMuZW50ZXJMaXN0KCdCRUdJTicsICdFTkQnKTtcbiAgICB0aGlzLmxhYmVsKCdJVEVSJyk7XG4gICAgdGhpcy5uZXh0SXRlcignQlJFQUsnKTtcbiAgICB0aGlzLmVudGVyV2l0aEtleSgnQkVHSU4nLCAnRU5EJyk7XG4gICAgdGhpcy5sYWJlbCgnQkVHSU4nKTtcblxuICAgIGNhbGxiYWNrKHRoaXMsICdCRUdJTicsICdFTkQnKTtcblxuICAgIHRoaXMubGFiZWwoJ0VORCcpO1xuICAgIHRoaXMuZXhpdCgpO1xuICAgIHRoaXMuanVtcCgnSVRFUicpO1xuICAgIHRoaXMubGFiZWwoJ0JSRUFLJyk7XG4gICAgdGhpcy5leGl0TGlzdCgpO1xuICAgIHRoaXMuZW5kQmxvY2soKTtcbiAgICB0aGlzLnN0b3BMYWJlbHMoKTtcbiAgfVxuXG4gICAgLy8gVE9ET1xuICAvLyBjb21lIGJhY2sgdG8gdGhpc1xuICB1bml0KHsgdGVtcGxhdGVzIH06IHsgdGVtcGxhdGVzOiBTeW50YXguVGVtcGxhdGVzIH0sIGNhbGxiYWNrOiAoYnVpbGRlcjogT3Bjb2RlQnVpbGRlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuc3RhcnRMYWJlbHMoKTtcbiAgICB0aGlzLnN0YXJ0QmxvY2sodGVtcGxhdGVzKTtcbiAgICBjYWxsYmFjayh0aGlzKTtcbiAgICB0aGlzLmVuZEJsb2NrKCk7XG4gICAgdGhpcy5zdG9wTGFiZWxzKCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBVbml0T3B0aW9ucyB7XG4gIHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCbG9ja09wdGlvbnMgZXh0ZW5kcyBVbml0T3B0aW9ucyB7XG4gIGFyZ3M6IFN5bnRheC5BcmdzO1xufVxuZXhwb3J0IHR5cGUgQmxvY2tDYWxsYmFjayA9IChkc2w6IE9wY29kZUJ1aWxkZXIsIEJFR0lOOiBMYWJlbCwgRU5EOiBMYWJlbCkgPT4gdm9pZDtcbiJdfQ==
15727
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvb3Bjb2Rlcy9idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQXlCQSwrQkFBQTtBQUVFLGlCQUZGLCtCQUFBLENBRXdCLEtBQWlDLEVBQUE7QUFBakMsZ0JBQUEsQ0FBQSxLQUFLLEdBQUwsS0FBSyxDQUE0QjtTQUFJOztBQUY3RCx1Q0FBQSxXQVFFLE9BQU8sR0FBQSxtQkFBQTtBQUNMLG1CQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDN0I7O0FBVkgsdUNBQUEsV0FZRSxNQUFNLEdBQUEsZ0JBQW1CLE1BQVMsRUFBQTtBQUNoQyxnQkFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDM0I7O0FBZEgsdUNBQUEsV0FnQkUsY0FBYyxHQUFBLHdCQUFDLElBQVksRUFBQTtBQUN6QixtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4Qzs7QUFsQkgsdUNBQUEsV0FvQkUsY0FBYyxHQUFBLHdCQUFDLElBQVksRUFBQTtBQUN6QixtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4Qzs7QUF0QkgsdUNBQUEsV0F3QkUsY0FBYyxHQUFBLHdCQUFDLElBQVksRUFBQTtBQUN6QixtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4Qzs7QUExQkgsdUNBQUEsV0E0QkUsY0FBYyxHQUFBLHdCQUFDLElBQVksRUFBQTtBQUN6QixtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4Qzs7QUE5QkgsdUNBQUEsV0FnQ0UsY0FBYyxHQUFBLHdCQUFDLElBQVksRUFBQTtBQUN6QixtQkFBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJ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QyxDQUFDO0FBQ25CLGdCQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZCLGdCQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNsQyxnQkFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUVwQixvQkFBUSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFL0IsZ0JBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEIsZ0JBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNaLGdCQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2xCLGdCQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3BCLGdCQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDaEIsZ0JBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUNoQixnQkFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25COzs7OztBQW5FSCxxQkFBQSxXQXVFRSxJQUFJLEdBQUEsY0FBQyxLQUE4QyxFQUFFLFFBQTBDLEVBQUE7Z0JBQXhGLFNBQVMsR0FBWCxLQUE4QyxDQUE1QyxTQUFTOztBQUNkLGdCQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDbkIsZ0JBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDM0Isb0JBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNmLGdCQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDaEIsZ0JBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNuQjs7ZUE3RUgsYUFBQTtPQUEyQyxrQkFBa0I7O3NCQUE3RCxhQUFBIiwiZmlsZSI6ImJ1aWxkZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb21wb25lbnQgZnJvbSAnLi9jb21wb25lbnQnO1xuaW1wb3J0ICogYXMgcGFydGlhbCBmcm9tICcuLi8uLi9jb21waWxlZC9vcGNvZGVzL3BhcnRpYWwnO1xuaW1wb3J0ICogYXMgY29udGVudCBmcm9tICcuL2NvbnRlbnQnO1xuaW1wb3J0ICogYXMgZG9tIGZyb20gJy4vZG9tJztcbmltcG9ydCAqIGFzIGxpc3RzIGZyb20gJy4vbGlzdHMnO1xuaW1wb3J0ICogYXMgdm0gZnJvbSAnLi92bSc7XG5pbXBvcnQgKiBhcyBTeW50YXggZnJvbSAnLi4vLi4vc3ludGF4L2NvcmUnO1xuXG5pbXBvcnQgeyBTdGFjaywgRGljdCwgT3BhcXVlLCBkaWN0IH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7IFN0YXRlbWVudENvbXBpbGF0aW9uQnVmZmVyLCBDb21waWxlc0ludG8gfSBmcm9tICcuLi8uLi9zeW50YXgnO1xuaW1wb3J0IHsgT3Bjb2RlLCBPcFNlcSB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgQ29tcGlsZWRBcmdzIH0gZnJvbSAnLi4vZXhwcmVzc2lvbnMvYXJncyc7XG5pbXBvcnQgeyBDb21waWxlZEV4cHJlc3Npb24gfSBmcm9tICcuLi9leHByZXNzaW9ucyc7XG5pbXBvcnQgeyBDb21wb25lbnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUGFydGlhbERlZmluaXRpb24gfSBmcm9tICcuLi8uLi9wYXJ0aWFsJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBJbmxpbmVCbG9jaywgTGF5b3V0IH0gZnJvbSAnLi4vYmxvY2tzJztcbmltcG9ydCB7IEVNUFRZX0FSUkFZIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IFN5bWJvbFRhYmxlIGZyb20gJy4uLy4uL3N5bWJvbC10YWJsZSc7XG5pbXBvcnQgeyBDb21wb25lbnRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vb3Bjb2RlLWJ1aWxkZXInO1xuXG5leHBvcnQgdHlwZSBSZXByZXNlbnRzPEU+ID0gQ29tcGlsZXNJbnRvPEU+IHwgRTtcblxuZXhwb3J0IHR5cGUgTGFiZWwgPSBzdHJpbmc7XG5cbmV4cG9ydCBjbGFzcyBTdGF0ZW1lbnRDb21waWxhdGlvbkJ1ZmZlclByb3h5IGltcGxlbWVudHMgU3RhdGVtZW50Q29tcGlsYXRpb25CdWZmZXIge1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBpbm5lcjogU3RhdGVtZW50Q29tcGlsYXRpb25CdWZmZXIpIHt9XG5cbiAgZ2V0IGNvbXBvbmVudCgpOiBDb21wb25lbnRCdWlsZGVyIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lci5jb21wb25lbnQ7XG4gIH1cblxuICB0b09wU2VxKCk6IE9wU2VxIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lci50b09wU2VxKCk7XG4gIH1cblxuICBhcHBlbmQ8VCBleHRlbmRzIE9wY29kZT4ob3Bjb2RlOiBUKSB7XG4gICAgdGhpcy5pbm5lci5hcHBlbmQob3Bjb2RlKTtcbiAgfVxuXG4gIGdldExvY2FsU3ltYm9sKG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIuZ2V0TG9jYWxTeW1ib2wobmFtZSk7XG4gIH1cblxuICBoYXNMb2NhbFN5bWJvbChuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lci5oYXNMb2NhbFN5bWJvbChuYW1lKTtcbiAgfVxuXG4gIGdldE5hbWVkU3ltYm9sKG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIuZ2V0TmFtZWRTeW1ib2wobmFtZSk7XG4gIH1cblxuICBoYXNOYW1lZFN5bWJvbChuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lci5oYXNOYW1lZFN5bWJvbChuYW1lKTtcbiAgfVxuXG4gIGdldEJsb2NrU3ltYm9sKG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIuZ2V0QmxvY2tTeW1ib2wobmFtZSk7XG4gIH1cblxuICBoYXNCbG9ja1N5bWJvbChuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lci5oYXNCbG9ja1N5bWJvbChuYW1lKTtcbiAgfVxuXG4gIGdldFBhcnRpYWxBcmdzU3ltYm9sKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIuZ2V0UGFydGlhbEFyZ3NTeW1ib2woKTtcbiAgfVxuXG4gIGhhc1BhcnRpYWxBcmdzU3ltYm9sKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlubmVyLmhhc1BhcnRpYWxBcmdzU3ltYm9sKCk7XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2ljT3Bjb2RlQnVpbGRlciBleHRlbmRzIFN0YXRlbWVudENvbXBpbGF0aW9uQnVmZmVyUHJveHkge1xuICBwcml2YXRlIGxhYmVsc1N0YWNrID0gbmV3IFN0YWNrPERpY3Q8dm0uTGFiZWxPcGNvZGU+PigpO1xuICBwcml2YXRlIHRlbXBsYXRlc1N0YWNrID0gbmV3IFN0YWNrPFN5bnRheC5UZW1wbGF0ZXM+KCk7XG5cbiAgY29uc3RydWN0b3IoaW5uZXI6IFN0YXRlbWVudENvbXBpbGF0aW9uQnVmZmVyLCBwcm90ZWN0ZWQgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlLCBwdWJsaWMgZW52OiBFbnZpcm9ubWVudCkge1xuICAgIHN1cGVyKGlubmVyKTtcbiAgfVxuXG4gIGFic3RyYWN0IGNvbXBpbGU8RT4oZXhwcjogUmVwcmVzZW50czxFPik6IEU7XG5cbiAgLy8gaGVscGVyc1xuXG4gIGdldCBsYWJlbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFiZWxzU3RhY2suY3VycmVudDtcbiAgfVxuXG4gIGdldCB0ZW1wbGF0ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVzU3RhY2suY3VycmVudDtcbiAgfVxuXG4gIHN0YXJ0QmxvY2sodGVtcGxhdGVzOiBTeW50YXguVGVtcGxhdGVzKSB7XG4gICAgdGhpcy50ZW1wbGF0ZXNTdGFjay5wdXNoKHRlbXBsYXRlcyk7XG4gIH1cblxuICBlbmRCbG9jaygpIHtcbiAgICB0aGlzLnRlbXBsYXRlc1N0YWNrLnBvcCgpO1xuICB9XG5cbiAgc3RhcnRMYWJlbHMoKSB7XG4gICAgdGhpcy5sYWJlbHNTdGFjay5wdXNoKGRpY3Q8dm0uTGFiZWxPcGNvZGU+KCkpO1xuICB9XG5cbiAgc3RvcExhYmVscygpIHtcbiAgICB0aGlzLmxhYmVsc1N0YWNrLnBvcCgpO1xuICB9XG5cbiAgbGFiZWxGb3IobmFtZTogc3RyaW5nKTogdm0uTGFiZWxPcGNvZGUge1xuICAgIGxldCBsYWJlbHMgPSB0aGlzLmxhYmVscztcbiAgICBsZXQgbGFiZWwgPSBsYWJlbHNbbmFtZV07XG5cbiAgICBpZiAoIWxhYmVsKSB7XG4gICAgICBsYWJlbCA9IGxhYmVsc1tuYW1lXSA9IG5ldyB2bS5MYWJlbE9wY29kZShuYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGFiZWw7XG4gIH1cblxuICAvLyBwYXJ0aWFsc1xuXG4gIHB1dFBhcnRpYWxEZWZpbml0aW9uKGRlZmluaXRpb246IFBhcnRpYWxEZWZpbml0aW9uPE9wYXF1ZT4pIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgcGFydGlhbC5QdXRQYXJ0aWFsRGVmaW5pdGlvbk9wY29kZShkZWZpbml0aW9uKSk7XG4gIH1cblxuICBwdXREeW5hbWljUGFydGlhbERlZmluaXRpb24oKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHBhcnRpYWwuUHV0RHluYW1pY1BhcnRpYWxEZWZpbml0aW9uT3Bjb2RlKHRoaXMuc3ltYm9sVGFibGUpKTtcbiAgfVxuXG4gIGV2YWx1YXRlUGFydGlhbCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgcGFydGlhbC5FdmFsdWF0ZVBhcnRpYWxPcGNvZGUodGhpcy5zeW1ib2xUYWJsZSkpO1xuICB9XG5cbiAgLy8gY29tcG9uZW50c1xuXG4gIHB1dENvbXBvbmVudERlZmluaXRpb24oZGVmaW5pdGlvbjogQ29tcG9uZW50RGVmaW5pdGlvbjxPcGFxdWU+KSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGNvbXBvbmVudC5QdXRDb21wb25lbnREZWZpbml0aW9uT3Bjb2RlKGRlZmluaXRpb24pKTtcbiAgfVxuXG4gIHB1dER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uKCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBjb21wb25lbnQuUHV0RHluYW1pY0NvbXBvbmVudERlZmluaXRpb25PcGNvZGUoKSk7XG4gIH1cblxuICBvcGVuQ29tcG9uZW50KGFyZ3M6IFJlcHJlc2VudHM8Q29tcGlsZWRBcmdzPiwgc2hhZG93OiBzdHJpbmdbXSA9IEVNUFRZX0FSUkFZKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGNvbXBvbmVudC5PcGVuQ29tcG9uZW50T3Bjb2RlKHRoaXMuY29tcGlsZShhcmdzKSwgc2hhZG93LCB0aGlzLnRlbXBsYXRlcykpO1xuICB9XG5cbiAgZGlkQ3JlYXRlRWxlbWVudCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgY29tcG9uZW50LkRpZENyZWF0ZUVsZW1lbnRPcGNvZGUoKSk7XG4gIH1cblxuICBzaGFkb3dBdHRyaWJ1dGVzKCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBjb21wb25lbnQuU2hhZG93QXR0cmlidXRlc09wY29kZSgpKTtcbiAgfVxuXG4gIGRpZFJlbmRlckxheW91dCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgY29tcG9uZW50LkRpZFJlbmRlckxheW91dE9wY29kZSgpKTtcbiAgfVxuXG4gIGNsb3NlQ29tcG9uZW50KCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBjb21wb25lbnQuQ2xvc2VDb21wb25lbnRPcGNvZGUoKSk7XG4gIH1cblxuICAvLyBjb250ZW50XG5cbiAgY2F1dGlvdXNBcHBlbmQoKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGNvbnRlbnQuT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUoKSk7XG4gIH1cblxuICB0cnVzdGluZ0FwcGVuZCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgY29udGVudC5PcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZSgpKTtcbiAgfVxuXG4gIC8vIGRvbVxuXG4gIHRleHQodGV4dDogc3RyaW5nKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGRvbS5UZXh0T3Bjb2RlKHRleHQpKTtcbiAgfVxuXG4gIG9wZW5QcmltaXRpdmVFbGVtZW50KHRhZzogc3RyaW5nKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGRvbS5PcGVuUHJpbWl0aXZlRWxlbWVudE9wY29kZSh0YWcpKTtcbiAgfVxuXG4gIG9wZW5Db21wb25lbnRFbGVtZW50KHRhZzogc3RyaW5nKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGRvbS5PcGVuQ29tcG9uZW50RWxlbWVudE9wY29kZSh0YWcpKTtcbiAgfVxuXG4gIG9wZW5EeW5hbWljUHJpbWl0aXZlRWxlbWVudCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgZG9tLk9wZW5EeW5hbWljUHJpbWl0aXZlRWxlbWVudE9wY29kZSgpKTtcbiAgfVxuXG4gIGZsdXNoRWxlbWVudCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgZG9tLkZsdXNoRWxlbWVudE9wY29kZSgpKTtcbiAgfVxuXG4gIGNsb3NlRWxlbWVudCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgZG9tLkNsb3NlRWxlbWVudE9wY29kZSgpKTtcbiAgfVxuXG4gIHN0YXRpY0F0dHIobmFtZTogc3RyaW5nLCBuYW1lc3BhY2U6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBkb20uU3RhdGljQXR0ck9wY29kZShuYW1lLCBuYW1lc3BhY2UsIHZhbHVlKSk7XG4gIH1cblxuICBkeW5hbWljQXR0ck5TKG5hbWU6IHN0cmluZywgbmFtZXNwYWNlOiBzdHJpbmcsIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgZG9tLkR5bmFtaWNBdHRyTlNPcGNvZGUobmFtZSwgbmFtZXNwYWNlLCBpc1RydXN0aW5nKSk7XG4gIH1cblxuICBkeW5hbWljQXR0cihuYW1lOiBzdHJpbmcsIGlzVHJ1c3Rpbmc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgZG9tLkR5bmFtaWNBdHRyT3Bjb2RlKG5hbWUsIGlzVHJ1c3RpbmcpKTtcbiAgfVxuXG4gIGNvbW1lbnQoY29tbWVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGRvbS5Db21tZW50T3Bjb2RlKGNvbW1lbnQpKTtcbiAgfVxuXG4gIC8vIGxpc3RzXG5cbiAgcHV0SXRlcmF0b3IoKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGxpc3RzLlB1dEl0ZXJhdG9yT3Bjb2RlKCkpO1xuICB9XG5cbiAgZW50ZXJMaXN0KHN0YXJ0OiBzdHJpbmcsIGVuZDogc3RyaW5nKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGxpc3RzLkVudGVyTGlzdE9wY29kZSh0aGlzLmxhYmVsRm9yKHN0YXJ0KSwgdGhpcy5sYWJlbEZvcihlbmQpKSk7XG4gIH1cblxuICBleGl0TGlzdCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgbGlzdHMuRXhpdExpc3RPcGNvZGUoKSk7XG4gIH1cblxuICBlbnRlcldpdGhLZXkoc3RhcnQ6IHN0cmluZywgZW5kOiBzdHJpbmcpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgbGlzdHMuRW50ZXJXaXRoS2V5T3Bjb2RlKHRoaXMubGFiZWxGb3Ioc3RhcnQpLCB0aGlzLmxhYmVsRm9yKGVuZCkpKTtcbiAgfVxuXG4gIG5leHRJdGVyKGVuZDogc3RyaW5nKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IGxpc3RzLk5leHRJdGVyT3Bjb2RlKHRoaXMubGFiZWxGb3IoZW5kKSkpO1xuICB9XG5cbiAgLy8gdm1cblxuICBwdXNoUmVtb3RlRWxlbWVudCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgZG9tLlB1c2hSZW1vdGVFbGVtZW50T3Bjb2RlKCkpO1xuICB9XG5cbiAgcG9wUmVtb3RlRWxlbWVudCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgZG9tLlBvcFJlbW90ZUVsZW1lbnRPcGNvZGUoKSk7XG4gIH1cblxuICBwb3BFbGVtZW50KCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyBkb20uUG9wRWxlbWVudE9wY29kZSgpKTtcbiAgfVxuXG4gIGxhYmVsKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuYXBwZW5kKHRoaXMubGFiZWxGb3IobmFtZSkpO1xuICB9XG5cbiAgcHVzaENoaWxkU2NvcGUoKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLlB1c2hDaGlsZFNjb3BlT3Bjb2RlKCkpO1xuICB9XG5cbiAgcG9wU2NvcGUoKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLlBvcFNjb3BlT3Bjb2RlKCkpO1xuICB9XG5cbiAgcHVzaER5bmFtaWNTY29wZSgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgdm0uUHVzaER5bmFtaWNTY29wZU9wY29kZSgpKTtcbiAgfVxuXG4gIHBvcER5bmFtaWNTY29wZSgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgdm0uUG9wRHluYW1pY1Njb3BlT3Bjb2RlKCkpO1xuICB9XG5cbiAgcHV0TnVsbCgpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgdm0uUHV0TnVsbE9wY29kZSgpKTtcbiAgfVxuXG4gIHB1dFZhbHVlKGV4cHJlc3Npb246IFJlcHJlc2VudHM8Q29tcGlsZWRFeHByZXNzaW9uPE9wYXF1ZT4+KSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLlB1dFZhbHVlT3Bjb2RlKHRoaXMuY29tcGlsZShleHByZXNzaW9uKSkpO1xuICB9XG5cbiAgcHV0QXJncyhhcmdzOiBSZXByZXNlbnRzPENvbXBpbGVkQXJncz4pIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgdm0uUHV0QXJnc09wY29kZSh0aGlzLmNvbXBpbGUoYXJncykpKTtcbiAgfVxuXG4gIGJpbmREeW5hbWljU2NvcGUobmFtZXM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLkJpbmREeW5hbWljU2NvcGVPcGNvZGUobmFtZXMpKTtcbiAgfVxuXG4gIGJpbmRQb3NpdGlvbmFsQXJncyhuYW1lczogc3RyaW5nW10sIHN5bWJvbHM6IG51bWJlcltdKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLkJpbmRQb3NpdGlvbmFsQXJnc09wY29kZShuYW1lcywgc3ltYm9scykpO1xuICB9XG5cbiAgYmluZE5hbWVkQXJncyhuYW1lczogc3RyaW5nW10sIHN5bWJvbHM6IG51bWJlcltdKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLkJpbmROYW1lZEFyZ3NPcGNvZGUobmFtZXMsIHN5bWJvbHMpKTtcbiAgfVxuXG4gIGJpbmRCbG9ja3MobmFtZXM6IHN0cmluZ1tdLCBzeW1ib2xzOiBudW1iZXJbXSkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5CaW5kQmxvY2tzT3Bjb2RlKG5hbWVzLCBzeW1ib2xzKSk7XG4gIH1cblxuICBlbnRlcihlbnRlcjogTGFiZWwsIGV4aXQ6IExhYmVsKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLkVudGVyT3Bjb2RlKHRoaXMubGFiZWxGb3IoZW50ZXIpLCB0aGlzLmxhYmVsRm9yKGV4aXQpKSk7XG4gIH1cblxuICBleGl0KCkge1xuICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5FeGl0T3Bjb2RlKCkpO1xuICB9XG5cbiAgZXZhbHVhdGUobmFtZTogc3RyaW5nLCBibG9jayA9IHRoaXMudGVtcGxhdGVzW25hbWVdKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLkV2YWx1YXRlT3Bjb2RlKG5hbWUsIGJsb2NrKSk7XG4gIH1cblxuICB0ZXN0KHRlc3RGdW5jOiAnY29uc3QnIHwgJ3NpbXBsZScgfCAnZW52aXJvbm1lbnQnIHwgdm0uVGVzdEZ1bmN0aW9uKSB7XG4gICAgaWYgKHRlc3RGdW5jID09PSAnY29uc3QnKSB7XG4gICAgICB0aGlzLmFwcGVuZChuZXcgdm0uVGVzdE9wY29kZSh2bS5Db25zdFRlc3QpKTtcbiAgICB9IGVsc2UgaWYgKHRlc3RGdW5jID09PSAnc2ltcGxlJykge1xuICAgICAgdGhpcy5hcHBlbmQobmV3IHZtLlRlc3RPcGNvZGUodm0uU2ltcGxlVGVzdCkpO1xuICAgIH0gZWxzZSBpZiAodGVzdEZ1bmMgPT09ICdlbnZpcm9ubWVudCcpIHtcbiAgICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5UZXN0T3Bjb2RlKHZtLkVudmlyb25tZW50VGVzdCkpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRlc3RGdW5jID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLmFwcGVuZChuZXcgdm0uVGVzdE9wY29kZSh0ZXN0RnVuYykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VucmVhY2hhYmxlJyk7XG4gICAgfVxuICB9XG5cbiAganVtcCh0YXJnZXQ6IHN0cmluZykge1xuICAgIHRoaXMuYXBwZW5kKG5ldyB2bS5KdW1wT3Bjb2RlKHRoaXMubGFiZWxGb3IodGFyZ2V0KSkpO1xuICB9XG5cbiAganVtcElmKHRhcmdldDogc3RyaW5nKSB7XG4gICAgdGhpcy5hcHBlbmQobmV3IHZtLkp1bXBJZk9wY29kZSh0aGlzLmxhYmVsRm9yKHRhcmdldCkpKTtcbiAgfVxuXG4gIGp1bXBVbmxlc3ModGFyZ2V0OiBzdHJpbmcpIHtcbiAgICB0aGlzLmFwcGVuZChuZXcgdm0uSnVtcFVubGVzc09wY29kZSh0aGlzLmxhYmVsRm9yKHRhcmdldCkpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0NvbXBpbGFibGVFeHByZXNzaW9uPEU+KGV4cHI6IFJlcHJlc2VudHM8RT4pOiBleHByIGlzIENvbXBpbGVzSW50bzxFPiB7XG4gIHJldHVybiBleHByICYmIHR5cGVvZiBleHByWydjb21waWxlJ10gPT09ICdmdW5jdGlvbic7XG59XG5cbmV4cG9ydCB0eXBlIEJsb2NrQXJncyA9IHsgdGVtcGxhdGVzOiBTeW50YXguVGVtcGxhdGVzLCBhcmdzPzogU3ludGF4LkFyZ3MgfTtcblxuY29uc3QgU0lNUExFX0JMT0NLOiBCbG9ja0FyZ3MgPSB7IHRlbXBsYXRlczogbnVsbCB9O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBPcGNvZGVCdWlsZGVyIGV4dGVuZHMgQmFzaWNPcGNvZGVCdWlsZGVyIHtcbiAgY29tcGlsZTxFPihleHByOiBSZXByZXNlbnRzPEU+KTogRSB7XG4gICAgaWYgKGlzQ29tcGlsYWJsZUV4cHJlc3Npb24oZXhwcikpIHtcbiAgICAgIHJldHVybiBleHByLmNvbXBpbGUodGhpcywgdGhpcy5lbnYsIHRoaXMuc3ltYm9sVGFibGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZXhwcjtcbiAgICB9XG4gIH1cblxuICBiaW5kUG9zaXRpb25hbEFyZ3NGb3JCbG9jayhibG9jazogSW5saW5lQmxvY2spIHtcbiAgICB0aGlzLmFwcGVuZCh2bS5CaW5kUG9zaXRpb25hbEFyZ3NPcGNvZGUuY3JlYXRlKGJsb2NrKSk7XG4gIH1cblxuICBiaW5kTmFtZWRBcmdzRm9yTGF5b3V0KGxheW91dDogTGF5b3V0KSB7XG4gICAgdGhpcy5hcHBlbmQodm0uQmluZE5hbWVkQXJnc09wY29kZS5jcmVhdGUobGF5b3V0KSk7XG4gIH1cblxuICBiaW5kQmxvY2tzRm9yTGF5b3V0KGxheW91dDogTGF5b3V0KSB7XG4gICAgdGhpcy5hcHBlbmQodm0uQmluZEJsb2Nrc09wY29kZS5jcmVhdGUobGF5b3V0KSk7XG4gIH1cblxuICBiaW5kUGFydGlhbEFyZ3NGb3JMYXlvdXQobGF5b3V0OiBMYXlvdXQpIHtcbiAgICB0aGlzLmFwcGVuZCh2bS5CaW5kUGFydGlhbEFyZ3NPcGNvZGUuY3JlYXRlKGxheW91dCkpO1xuICB9XG5cbiAgc2ltcGxlQmxvY2soY2FsbGJhY2s6IEJsb2NrQ2FsbGJhY2spIHtcbiAgICB0aGlzLmJsb2NrKFNJTVBMRV9CTE9DSywgY2FsbGJhY2spO1xuICB9XG5cbiAgLy8gVE9ET1xuICAvLyBjb21lIGJhY2sgdG8gdGhpc1xuICBibG9jayh7IHRlbXBsYXRlcywgYXJncyB9OiBCbG9ja0FyZ3MsIGNhbGxiYWNrOiBCbG9ja0NhbGxiYWNrKSB7XG4gICAgaWYgKGFyZ3MpIHRoaXMucHV0QXJncyhhcmdzKTtcblxuICAgIHRoaXMuc3RhcnRMYWJlbHMoKTtcbiAgICB0aGlzLnN0YXJ0QmxvY2sodGVtcGxhdGVzKTtcbiAgICB0aGlzLmVudGVyKCdCRUdJTicsICdFTkQnKTtcbiAgICB0aGlzLmxhYmVsKCdCRUdJTicpO1xuXG4gICAgY2FsbGJhY2sodGhpcywgJ0JFR0lOJywgJ0VORCcpO1xuXG4gICAgdGhpcy5sYWJlbCgnRU5EJyk7XG4gICAgdGhpcy5leGl0KCk7XG4gICAgdGhpcy5lbmRCbG9jaygpO1xuICAgIHRoaXMuc3RvcExhYmVscygpO1xuICB9XG5cbiAgICAvLyBUT0RPXG4gIC8vIGNvbWUgYmFjayB0byB0aGlzXG4gIGl0ZXIoeyB0ZW1wbGF0ZXMgfTogeyB0ZW1wbGF0ZXM6IFN5bnRheC5UZW1wbGF0ZXMgfSwgY2FsbGJhY2s6IEJsb2NrQ2FsbGJhY2spIHtcbiAgICB0aGlzLnN0YXJ0TGFiZWxzKCk7XG4gICAgdGhpcy5zdGFydEJsb2NrKHRlbXBsYXRlcyk7XG4gICAgdGhpcy5lbnRlckxpc3QoJ0JFR0lOJywgJ0VORCcpO1xuICAgIHRoaXMubGFiZWwoJ0lURVInKTtcbiAgICB0aGlzLm5leHRJdGVyKCdCUkVBSycpO1xuICAgIHRoaXMuZW50ZXJXaXRoS2V5KCdCRUdJTicsICdFTkQnKTtcbiAgICB0aGlzLmxhYmVsKCdCRUdJTicpO1xuXG4gICAgY2FsbGJhY2sodGhpcywgJ0JFR0lOJywgJ0VORCcpO1xuXG4gICAgdGhpcy5sYWJlbCgnRU5EJyk7XG4gICAgdGhpcy5leGl0KCk7XG4gICAgdGhpcy5qdW1wKCdJVEVSJyk7XG4gICAgdGhpcy5sYWJlbCgnQlJFQUsnKTtcbiAgICB0aGlzLmV4aXRMaXN0KCk7XG4gICAgdGhpcy5lbmRCbG9jaygpO1xuICAgIHRoaXMuc3RvcExhYmVscygpO1xuICB9XG5cbiAgICAvLyBUT0RPXG4gIC8vIGNvbWUgYmFjayB0byB0aGlzXG4gIHVuaXQoeyB0ZW1wbGF0ZXMgfTogeyB0ZW1wbGF0ZXM6IFN5bnRheC5UZW1wbGF0ZXMgfSwgY2FsbGJhY2s6IChidWlsZGVyOiBPcGNvZGVCdWlsZGVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5zdGFydExhYmVscygpO1xuICAgIHRoaXMuc3RhcnRCbG9jayh0ZW1wbGF0ZXMpO1xuICAgIGNhbGxiYWNrKHRoaXMpO1xuICAgIHRoaXMuZW5kQmxvY2soKTtcbiAgICB0aGlzLnN0b3BMYWJlbHMoKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVuaXRPcHRpb25zIHtcbiAgdGVtcGxhdGVzOiBTeW50YXguVGVtcGxhdGVzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJsb2NrT3B0aW9ucyBleHRlbmRzIFVuaXRPcHRpb25zIHtcbiAgYXJnczogU3ludGF4LkFyZ3M7XG59XG5leHBvcnQgdHlwZSBCbG9ja0NhbGxiYWNrID0gKGRzbDogT3Bjb2RlQnVpbGRlciwgQkVHSU46IExhYmVsLCBFTkQ6IExhYmVsKSA9PiB2b2lkO1xuIl19
15654
15728
  enifed('glimmer-runtime/lib/compiled/opcodes/component', ['exports', 'glimmer-runtime/lib/opcodes', 'glimmer-runtime/lib/compiled/opcodes/vm', 'glimmer-reference'], function (exports, _glimmerRuntimeLibOpcodes, _glimmerRuntimeLibCompiledOpcodesVm, _glimmerReference) {
15655
15729
  'use strict';
15656
15730
 
@@ -16066,11 +16140,11 @@ enifed('glimmer-runtime/lib/compiled/opcodes/content', ['exports', 'glimmer-runt
16066
16140
  // expanded version that handles both cases. The compilation would look
16067
16141
  // like this:
16068
16142
  //
16143
+ // PutValue(expression)
16144
+ // Test(is-component-definition)
16069
16145
  // Enter(BEGIN, END)
16070
16146
  // BEGIN: Noop
16071
- // Test(is-component-definition)
16072
16147
  // JumpUnless(VALUE)
16073
- // COMPONENT: Noop
16074
16148
  // PutDynamicComponentDefinitionOpcode
16075
16149
  // OpenComponent
16076
16150
  // CloseComponent
@@ -16087,11 +16161,10 @@ enifed('glimmer-runtime/lib/compiled/opcodes/content', ['exports', 'glimmer-runt
16087
16161
  // code on the update side (scroll down for the next big block of comment).
16088
16162
  var buffer = new _glimmerRuntimeLibCompiler.CompileIntoList(env, null);
16089
16163
  var dsl = new _glimmerRuntimeLibCompiledOpcodesBuilder.default(buffer, this.symbolTable, env);
16090
- dsl.block({ templates: null }, function (dsl, BEGIN, END) {
16091
- dsl.putValue(_this.expression);
16092
- dsl.test(IsComponentDefinitionReference.create);
16164
+ dsl.putValue(this.expression);
16165
+ dsl.test(IsComponentDefinitionReference.create);
16166
+ dsl.simpleBlock(function (dsl, BEGIN, END) {
16093
16167
  dsl.jumpUnless('VALUE');
16094
- dsl.label('COMPONENT');
16095
16168
  dsl.putDynamicComponentDefinition();
16096
16169
  dsl.openComponent(_glimmerRuntimeLibSyntaxCore.Args.empty());
16097
16170
  dsl.closeComponent();
@@ -16254,11 +16327,12 @@ enifed('glimmer-runtime/lib/compiled/opcodes/content', ['exports', 'glimmer-runt
16254
16327
  var state = this.state;
16255
16328
 
16256
16329
  var appendOps = appendOpcode.deopt(vm.env);
16257
- var enter = appendOps.head();
16330
+ var enter = appendOps.head().next.next;
16258
16331
  var ops = enter.slice;
16259
16332
  var tracker = new _glimmerRuntimeLibBuilder.UpdatableBlockTracker(bounds.parentElement());
16260
16333
  tracker.newBounds(this.bounds);
16261
16334
  var children = new _glimmerUtil.LinkedList();
16335
+ state.frame['condition'] = IsComponentDefinitionReference.create(state.frame['operand']);
16262
16336
  var deopted = this.deopted = new _glimmerRuntimeLibVmUpdate.TryOpcode(ops, state, tracker, children);
16263
16337
  this._tag.update(deopted.tag);
16264
16338
  vm.evaluateOpcode(deopted);
@@ -16458,7 +16532,7 @@ enifed('glimmer-runtime/lib/compiled/opcodes/content', ['exports', 'glimmer-runt
16458
16532
  return GuardedTrustingUpdateOpcode;
16459
16533
  })(GuardedUpdateOpcode);
16460
16534
  });
16461
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvb3Bjb2Rlcy9jb250ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBK0JBLGFBQUEsT0FBQSxDQUFpQixLQUFhLEVBQUE7QUFDNUIsZUFBTyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssVUFBVSxDQUFDO0tBQ3pGOztBQUVELGFBQUEsa0JBQUEsQ0FBbUMsS0FBYSxFQUFBO0FBQzlDLFlBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ2xCLG1CQUFPLEVBQUUsQ0FBQztTQUNYO0FBQ0QsZUFBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDdEI7O0FBRUQsYUFBQSxxQkFBQSxDQUErQixLQUFhLEVBQUE7QUFDMUMsWUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDbEIsbUJBQU8sRUFBRSxDQUFDO1NBQ1g7QUFDRCxZQUFJLHlCQXZDSixRQUFRLENBdUNLLEtBQUssQ0FBQyxFQUFFO0FBQ25CLG1CQUFPLEtBQUssQ0FBQztTQUNkO0FBQ0QsWUFBSSx5QkE1Q0osWUFBWSxDQTRDSyxLQUFLLENBQUMsRUFBRTtBQUN2QixtQkFBTyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDdkI7QUFDRCxZQUFJLHlCQTlDSixNQUFNLENBOENLLEtBQUssQ0FBQyxFQUFFO0FBQ2pCLG1CQUFPLEtBQUssQ0FBQztTQUNkO0FBQ0QsZUFBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDdEI7QUFFRCxhQUFBLGNBQUEsQ0FBd0IsS0FBYSxFQUFBO0FBQ25DLFlBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ2xCLG1CQUFPLEVBQUUsQ0FBQztTQUNYO0FBQ0QsWUFBSSx5QkF2REosUUFBUSxDQXVESyxLQUFLLENBQUMsRUFBRTtBQUNuQixtQkFBTyxLQUFLLENBQUM7U0FDZDtBQUNE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RUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUM5Rjs7ZUFmSCwyQkFBQTtPQUFpRCxtQkFBbUI7Ozs7UUFrQnBFLDJCQUFBOzhCQUFBLDJCQUFBOztBQUFBLGlCQUFBLDJCQUFBLEdBQUE7QUFBMEMsOENBQUEsU0FBQSxDQUFBLENBQXNDO0FBQzlFLGdCQUFBLENBQUEsSUFBSSxHQUFHLGlCQUFpQixDQUFDO1NBSzFCOztBQU5ELG1DQUFBLFdBR1ksTUFBTSxHQUFBLGdCQUFDLEdBQXdCLEVBQUUsTUFBYyxFQUFFLEtBQXdCLEVBQUE7QUFDakYsbUJBQU8seUJBcGRULGNBQWMsQ0FvZFUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztTQUMzQzs7ZUFMSCwyQkFBQTtPQUEwQyxtQkFBbUIiLCJmaWxlIjoiY29udGVudC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBVcHNlcnQsIHtcbiAgSW5zZXJ0aW9uLFxuICBDYXV0aW91c0luc2VydGlvbixcbiAgVHJ1c3RpbmdJbnNlcnRpb24sXG5cbiAgaXNTYWZlU3RyaW5nLFxuICBpc05vZGUsXG4gIGlzU3RyaW5nLFxuXG4gIGNhdXRpb3VzSW5zZXJ0LFxuICB0cnVzdGluZ0luc2VydFxufSBmcm9tICcuLi8uLi91cHNlcnQnO1xuaW1wb3J0IHsgaXNDb21wb25lbnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRE9NVHJlZUNvbnN0cnVjdGlvbiB9IGZyb20gJy4uLy4uL2RvbS9oZWxwZXInO1xuaW1wb3J0IHsgT3BTZXEsIE9wY29kZSwgT3Bjb2RlSlNPTiwgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IENvbXBpbGVkRXhwcmVzc2lvbiB9IGZyb20gJy4uL2V4cHJlc3Npb25zJztcbmltcG9ydCB7IFZNLCBVcGRhdGluZ1ZNIH0gZnJvbSAnLi4vLi4vdm0nO1xuaW1wb3J0IHsgVHJ5T3Bjb2RlLCBWTVN0YXRlIH0gZnJvbSAnLi4vLi4vdm0vdXBkYXRlJztcbmltcG9ydCB7IEVudGVyT3Bjb2RlIH0gZnJvbSAnLi92bSc7XG5pbXBvcnQgeyBSZWZlcmVuY2UsIFJlZmVyZW5jZUNhY2hlLCBVcGRhdGFibGVUYWcsIGlzTW9kaWZpZWQsIGlzQ29uc3QsIG1hcCB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcbmltcG9ydCB7IE9wYXF1ZSwgTGlua2VkTGlzdCB9IGZyb20gJ2dsaW1tZXItdXRpbCc7XG5pbXBvcnQgeyBDdXJzb3IsIGNsZWFyIH0gZnJvbSAnLi4vLi4vYm91bmRzJztcbmltcG9ydCB7IEZyYWdtZW50IH0gZnJvbSAnLi4vLi4vYnVpbGRlcic7XG5pbXBvcnQgeyBDb21waWxlSW50b0xpc3QgfSBmcm9tICcuLi8uLi9jb21waWxlcic7XG5pbXBvcnQgT3Bjb2RlQnVpbGRlckRTTCBmcm9tICcuL2J1aWxkZXInO1xuaW1wb3J0IHsgQ29uZGl0aW9uYWxSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi9yZWZlcmVuY2VzJztcbmltcG9ydCB7IEFyZ3MgfSBmcm9tICcuLi8uLi9zeW50YXgvY29yZSc7XG5pbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IFVwZGF0YWJsZUJsb2NrVHJhY2tlciB9IGZyb20gJy4uLy4uL2J1aWxkZXInO1xuaW1wb3J0IFN5bWJvbFRhYmxlIGZyb20gJy4uLy4uL3N5bWJvbC10YWJsZSc7XG5cbmZ1bmN0aW9uIGlzRW1wdHkodmFsdWU6IE9wYXF1ZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdmFsdWVbJ3RvU3RyaW5nJ10gIT09ICdmdW5jdGlvbic7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVUZXh0VmFsdWUodmFsdWU6IE9wYXF1ZSk6IHN0cmluZyB7XG4gIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplVHJ1c3RlZFZhbHVlKHZhbHVlOiBPcGFxdWUpOiBUcnVzdGluZ0luc2VydGlvbiB7XG4gIGlmIChpc0VtcHR5KHZhbHVlKSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlLnRvSFRNTCgpO1xuICB9XG4gIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWx1ZTogT3BhcXVlKTogQ2F1dGlvdXNJbnNlcnRpb24ge1xuICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSB8fCBpc05vZGUodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBTdHJpbmcodmFsdWUpO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXBwZW5kT3Bjb2RlPFQgZXh0ZW5kcyBJbnNlcnRpb24+IGV4dGVuZHMgT3Bjb2RlIHtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IG5vcm1hbGl6ZShyZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+KTogUmVmZXJlbmNlPFQ+O1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBUKTogVXBzZXJ0O1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgdXBkYXRlV2l0aCh2bTogVk0sIHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxUPiwgYm91bmRzOiBGcmFnbWVudCwgdXBzZXJ0OiBVcHNlcnQpOiBVcGRhdGluZ09wY29kZTtcblxuICBldmFsdWF0ZSh2bTogVk0pIHtcbiAgICBsZXQgcmVmZXJlbmNlID0gdm0uZnJhbWUuZ2V0T3BlcmFuZCgpO1xuICAgIGxldCBub3JtYWxpemVkID0gdGhpcy5ub3JtYWxpemUocmVmZXJlbmNlKTtcblxuICAgIGxldCB2YWx1ZSwgY2FjaGU7XG5cbiAgICBpZiAoaXNDb25zdChyZWZlcmVuY2UpKSB7XG4gICAgICB2YWx1ZSA9IG5vcm1hbGl6ZWQudmFsdWUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FjaGUgPSBuZXcgUmVmZXJlbmNlQ2FjaGUobm9ybWFsaXplZCk7XG4gICAgICB2YWx1ZSA9IGNhY2hlLnBlZWsoKTtcbiAgICB9XG5cbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaygpO1xuICAgIGxldCB1cHNlcnQgPSB0aGlzLmluc2VydCh2bS5lbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpLCBzdGFjaywgdmFsdWUpO1xuICAgIGxldCBib3VuZHMgPSBuZXcgRnJhZ21lbnQodXBzZXJ0LmJvdW5kcyk7XG5cbiAgICBzdGFjay5uZXdCb3VuZHMoYm91bmRzKTtcblxuICAgIGlmIChjYWNoZSAvKiBpLmUuICFpc0NvbnN0KHJlZmVyZW5jZSkgKi8pIHtcbiAgICAgIHZtLnVwZGF0ZVdpdGgodGhpcy51cGRhdGVXaXRoKHZtLCByZWZlcmVuY2UsIGNhY2hlLCBib3VuZHMsIHVwc2VydCkpO1xuICAgIH1cbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGFyZ3M6IFtcIiRPUEVSQU5EXCJdXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgR3VhcmRlZEFwcGVuZE9wY29kZTxUIGV4dGVuZHMgSW5zZXJ0aW9uPiBleHRlbmRzIEFwcGVuZE9wY29kZTxUPiB7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBBcHBlbmRPcGNvZGU6IHR5cGVvZiBPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSB8IHR5cGVvZiBPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZTtcbiAgcHJpdmF0ZSBkZW9wdGVkOiBPcFNlcSA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBleHByZXNzaW9uOiBDb21waWxlZEV4cHJlc3Npb248YW55PiwgcHJpdmF0ZSBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgaWYgKHRoaXMuZGVvcHRlZCkge1xuICAgICAgdm0ucHVzaEV2YWxGcmFtZSh0aGlzLmRlb3B0ZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2bS5ldmFsdWF0ZU9wZXJhbmQodGhpcy5leHByZXNzaW9uKTtcblxuICAgICAgbGV0IHZhbHVlID0gdm0uZnJhbWUuZ2V0T3BlcmFuZCgpLnZhbHVlKCk7XG5cbiAgICAgIGlmKGlzQ29tcG9uZW50RGVmaW5pdGlvbih2YWx1ZSkpIHtcbiAgICAgICAgdm0ucHVzaEV2YWxGcmFtZSh0aGlzLmRlb3B0KHZtLmVudikpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3VwZXIuZXZhbHVhdGUodm0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkZW9wdChlbnY6IEVudmlyb25tZW50KTogT3BTZXEgeyAvLyBQdWJsaWMgYmVjYXVzZSBpdCdzIHVzZWQgaW4gdGhlIGxhenkgZGVvcHRcbiAgICAvLyBBdCBjb21waWxlIHRpbWUsIHdlIGRldGVybWluZWQgdGhhdCB0aGlzIGFwcGVuZCBjYWxsc2l0ZSBtaWdodCByZWZlclxuICAgIC8vIHRvIGEgbG9jYWwgdmFyaWFibGUvcHJvcGVydHkgbG9va3VwIHRoYXQgcmVzb2x2ZXMgdG8gYSBjb21wb25lbnRcbiAgICAvLyBkZWZpbml0aW9uIGF0IHJ1bnRpbWUuXG4gICAgLy9cbiAgICAvLyBXZSBjb3VsZCBoYXZlIGVhZ2VybHkgY29tcGlsZWQgdGhpcyBjYWxsc2l0ZSBpbnRvIHNvbWV0aGluZyBsaWtlIHRoaXM6XG4gICAgLy9cbiAgICAvLyAgIHt7I2lmIChpcy1jb21wb25lbnQtZGVmaW5pdGlvbiBmb28pfX1cbiAgICAvLyAgICAge3tjb21wb25lbnQgZm9vfX1cbiAgICAvLyAgIHt7ZWxzZX19XG4gICAgLy8gICAgIHt7Zm9vfX1cbiAgICAvLyAgIHt7L2lmfX1cbiAgICAvL1xuICAgIC8vIEhvd2V2ZXIsIGluIHByYWN0aWNlLCB0aGVyZSBtaWdodCBiZSBhIGxhcmdlIGFtb3V0IG9mIHRoZXNlIGNhbGxzaXRlc1xuICAgIC8vIGFuZCBtb3N0IG9mIHRoZW0gd291bGQgcmVzb2x2ZSB0byBhIHNpbXBsZSB2YWx1ZSBsb29rdXAuIFRoZXJlZm9yZSwgd2VcbiAgICAvLyB0cmllZCB0byBiZSBvcHRpbWlzdGljIGFuZCBhc3N1bWVkIHRoYXQgdGhlIGNhbGxzaXRlIHdpbGwgcmVzb2x2ZSB0b1xuICAgIC8vIGFwcGVuZGluZyBhIHNpbXBsZSB2YWx1ZS5cbiAgICAvL1xuICAgIC8vIEhvd2V2ZXIsIHdlIGhhdmUgcmVhY2hlZCBoZXJlIGJlY2F1c2UgYXQgcnVudGltZSwgdGhlIGd1YXJkIGNvbmRpdGlvbmFsXG4gICAgLy8gaGF2ZSBkZXRlY3RlZCB0aGF0IHRoaXMgY2FsbHNpdGUgaXMgaW5kZWVkIHJlZmVycmluZyB0byBhIGNvbXBvbmVudFxuICAgIC8vIGRlZmluaXRpb24gb2JqZWN0LiBTaW5jZSB0aGlzIGlzIGxpa2VseSBnb2luZyB0byBiZSB0cnVlIGZvciBvdGhlclxuICAgIC8vIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBjYWxsc2l0ZSwgaXQgaXMgbm93IGFwcHJvcGlhdGUgdG8gZGVvcHQgaW50byB0aGVcbiAgICAvLyBleHBhbmRlZCB2ZXJzaW9uIHRoYXQgaGFuZGxlcyBib3RoIGNhc2VzLiBUaGUgY29tcGlsYXRpb24gd291bGQgbG9va1xuICAgIC8vIGxpa2UgdGhpczpcbiAgICAvL1xuICAgIC8vICAgICAgICAgICAgICAgRW50ZXIoQkVHSU4sIEVORClcbiAgICAvLyAgIEJFR0lOOiAgICAgIE5vb3BcbiAgICAvLyAgICAgICAgICAgICAgIFRlc3QoaXMtY29tcG9uZW50LWRlZmluaXRpb24pXG4gICAgLy8gICAgICAgICAgICAgICBKdW1wVW5sZXNzKFZBTFVFKVxuICAgIC8vICAgQ09NUE9ORU5UOiAgTm9vcFxuICAgIC8vICAgICAgICAgICAgICAgUHV0RHluYW1pY0NvbXBvbmVudERlZmluaXRpb25PcGNvZGVcbiAgICAvLyAgICAgICAgICAgICAgIE9wZW5Db21wb25lbnRcbiAgICAvLyAgICAgICAgICAgICAgIENsb3NlQ29tcG9uZW50XG4gICAgLy8gICAgICAgICAgICAgICBKdW1wKEVORClcbiAgICAvLyAgIFZBTFVFOiAgICAgIE5vb3BcbiAgICAvLyAgICAgICAgICAgICAgIE9wdGltaXplZEFwcGVuZFxuICAgIC8vICAgRU5EOiAgICAgICAgTm9vcFxuICAgIC8vICAgICAgICAgICAgICAgRXhpdFxuICAgIC8vXG4gICAgLy8gS2VlcCBpbiBtaW5kIHRoYXQgZXZlbiBpZiB3ZSAqZG9uJ3QqIHJlYWNoIGhlcmUgYXQgaW5pdGlhbCByZW5kZXIgdGltZSxcbiAgICAvLyBpdCBpcyBzdGlsbCBwb3NzaWJsZSAoYWx0aG91Z2ggcXVpdGUgcmFyZSkgdGhhdCB0aGUgc2ltcGxlIHZhbHVlIHdlXG4gICAgLy8gZW5jb3VudGVyIGR1cmluZyBpbml0aWFsIHJlbmRlciBjb3VsZCBsYXRlciBjaGFuZ2UgaW50byBhIGNvbXBvbmVudFxuICAgIC8vIGRlZmluaXRpb24gb2JqZWN0IGF0IHVwZGF0ZSB0aW1lLiBUaGF0IGlzIGhhbmRsZWQgYnkgdGhlIFwibGF6eSBkZW9wdFwiXG4gICAgLy8gY29kZSBvbiB0aGUgdXBkYXRlIHNpZGUgKHNjcm9sbCBkb3duIGZvciB0aGUgbmV4dCBiaWcgYmxvY2sgb2YgY29tbWVudCkuXG5cbiAgICBsZXQgYnVmZmVyID0gbmV3IENvbXBpbGVJbnRvTGlzdChlbnYsIG51bGwpO1xuICAgIGxldCBkc2wgPSBuZXcgT3Bjb2RlQnVpbGRlckRTTChidWZmZXIsIHRoaXMuc3ltYm9sVGFibGUsIGVudik7XG5cbiAgICBkc2wuYmxvY2soeyB0ZW1wbGF0ZXM6IG51bGwgfSwgKGRzbCwgQkVHSU4sIEVORCkgPT4ge1xuICAgICAgZHNsLnB1dFZhbHVlKHRoaXMuZXhwcmVzc2lvbik7XG4gICAgICBkc2wudGVzdChJc0NvbXBvbmVudERlZmluaXRpb25SZWZlcmVuY2UuY3JlYXRlKTtcbiAgICAgIGRzbC5qdW1wVW5sZXNzKCdWQUxVRScpO1xuICAgICAgZHNsLmxhYmVsKCdDT01QT05FTlQnKTtcbiAgICAgIGRzbC5wdXREeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbigpO1xuICAgICAgZHNsLm9wZW5Db21wb25lbnQoQXJncy5lbXB0eSgpKTtcbiAgICAgIGRzbC5jbG9zZUNvbXBvbmVudCgpO1xuICAgICAgZHNsLmp1bXAoRU5EKTtcbiAgICAgIGRzbC5sYWJlbCgnVkFMVUUnKTtcbiAgICAgIGRzbC5hcHBlbmQobmV3IHRoaXMuQXBwZW5kT3Bjb2RlKCkpO1xuICAgIH0pO1xuXG4gICAgbGV0IGRlb3B0ZWQgPSB0aGlzLmRlb3B0ZWQgPSBkc2wudG9PcFNlcSgpO1xuXG4gICAgLy8gRnJvbSB0aGlzIHBvaW50IG9uLCB3ZSBoYXZlIGVzc2VudGlhbGx5IHJlcGxhY2VkIG91cnNlbHZlIHdpdGggYSBuZXcgc2V0XG4gICAgLy8gb2Ygb3Bjb2Rlcy4gU2luY2Ugd2Ugd2lsbCBhbHdheXMgYmUgZXhlY3V0aW5nIHRoZSBuZXcvZGVvcHRlZCBjb2RlLCBpdCdzXG4gICAgLy8gYSBnb29kIGlkZWEgKGFzIGEgcGF0dGVybikgdG8gbnVsbCBvdXQgYW55IHVubmVlZGVkIGZpZWxkcyBoZXJlIHRvIGF2b2lkXG4gICAgLy8gaG9sZGluZyBvbiB0byB1bm5lZWRlZC9zdGFsZSBvYmplY3RzOlxuXG4gICAgdGhpcy5leHByZXNzaW9uID0gbnVsbDtcblxuICAgIHJldHVybiBkZW9wdGVkO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIGxldCB7IF9ndWlkOiBndWlkLCB0eXBlLCBkZW9wdGVkIH0gPSB0aGlzO1xuXG4gICAgaWYgKGRlb3B0ZWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGd1aWQsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIGRlb3B0ZWQ6IHRydWUsXG4gICAgICAgIGNoaWxkcmVuOiBkZW9wdGVkLnRvQXJyYXkoKS5tYXAob3AgPT4gb3AudG9KU09OKCkpXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBndWlkLFxuICAgICAgICB0eXBlLFxuICAgICAgICBhcmdzOiBbdGhpcy5leHByZXNzaW9uLnRvSlNPTigpXVxuICAgICAgfTtcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlIGV4dGVuZHMgQ29uZGl0aW9uYWxSZWZlcmVuY2Uge1xuICBzdGF0aWMgY3JlYXRlKGlubmVyOiBSZWZlcmVuY2U8T3BhcXVlPik6IElzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZSB7XG4gICAgcmV0dXJuIG5ldyBJc0NvbXBvbmVudERlZmluaXRpb25SZWZlcmVuY2UoaW5uZXIpO1xuICB9XG5cbiAgdG9Cb29sKHZhbHVlOiBPcGFxdWUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNDb21wb25lbnREZWZpbml0aW9uKHZhbHVlKTtcbiAgfVxufVxuXG5hYnN0cmFjdCBjbGFzcyBVcGRhdGVPcGNvZGU8VCBleHRlbmRzIEluc2VydGlvbj4gZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8VD4sXG4gICAgcHJvdGVjdGVkIGJvdW5kczogRnJhZ21lbnQsXG4gICAgcHJvdGVjdGVkIHVwc2VydDogVXBzZXJ0XG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy50YWcgPSBjYWNoZS50YWc7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBUKTogVXBzZXJ0O1xuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5jYWNoZS5yZXZhbGlkYXRlKCk7XG5cbiAgICBpZiAoaXNNb2RpZmllZCh2YWx1ZSkpIHtcbiAgICAgIGxldCB7IGJvdW5kcywgdXBzZXJ0IH0gPSB0aGlzO1xuICAgICAgbGV0IHsgZG9tIH0gPSB2bTtcblxuICAgICAgaWYoIXRoaXMudXBzZXJ0LnVwZGF0ZShkb20sIHZhbHVlKSkge1xuICAgICAgICBsZXQgY3Vyc29yID0gbmV3IEN1cnNvcihib3VuZHMucGFyZW50RWxlbWVudCgpLCBjbGVhcihib3VuZHMpKTtcbiAgICAgICAgdXBzZXJ0ID0gdGhpcy51cHNlcnQgPSB0aGlzLmluc2VydCh2bS5lbnYuZ2V0QXBwZW5kT3BlcmF0aW9ucygpLCBjdXJzb3IsIHZhbHVlIGFzIFQpO1xuICAgICAgfVxuXG4gICAgICBib3VuZHMudXBkYXRlKHVwc2VydC5ib3VuZHMpO1xuICAgIH1cbiAgfVxuXG4gIHRvSlNPTigpOiBPcGNvZGVKU09OIHtcbiAgICBsZXQgeyBfZ3VpZDogZ3VpZCwgdHlwZSwgY2FjaGUgfSA9IHRoaXM7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ3VpZCxcbiAgICAgIHR5cGUsXG4gICAgICBkZXRhaWxzOiB7IGxhc3RWYWx1ZTogSlNPTi5zdHJpbmdpZnkoY2FjaGUucGVlaygpKSB9XG4gICAgfTtcbiAgfVxufVxuXG5hYnN0cmFjdCBjbGFzcyBHdWFyZGVkVXBkYXRlT3Bjb2RlPFQgZXh0ZW5kcyBJbnNlcnRpb24+IGV4dGVuZHMgVXBkYXRlT3Bjb2RlPFQ+IHtcbiAgcHJpdmF0ZSBfdGFnOiBVcGRhdGFibGVUYWc7XG4gIHByaXZhdGUgZGVvcHRlZDogVHJ5T3Bjb2RlID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sXG4gICAgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPFQ+LFxuICAgIGJvdW5kczogRnJhZ21lbnQsXG4gICAgdXBzZXJ0OiBVcHNlcnQsXG4gICAgcHJpdmF0ZSBhcHBlbmRPcGNvZGU6IEd1YXJkZWRBcHBlbmRPcGNvZGU8VD4sXG4gICAgcHJpdmF0ZSBzdGF0ZTogVk1TdGF0ZVxuICApIHtcbiAgICBzdXBlcihjYWNoZSwgYm91bmRzLCB1cHNlcnQpO1xuICAgIHRoaXMudGFnID0gdGhpcy5fdGFnID0gbmV3IFVwZGF0YWJsZVRhZyh0aGlzLnRhZyk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIGlmICh0aGlzLmRlb3B0ZWQpIHtcbiAgICAgIHZtLmV2YWx1YXRlT3Bjb2RlKHRoaXMuZGVvcHRlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpc0NvbXBvbmVudERlZmluaXRpb24odGhpcy5yZWZlcmVuY2UudmFsdWUoKSkpIHtcbiAgICAgICAgdGhpcy5sYXp5RGVvcHQodm0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3VwZXIuZXZhbHVhdGUodm0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbGF6eURlb3B0KHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgLy8gRHVyaWduIGluaXRpYWwgcmVuZGVyLCB3ZSBrbm93IHRoYXQgdGhlIHJlZmVyZW5jZSBkb2VzIG5vdCBjb250YWluIGFcbiAgICAvLyBjb21wb25lbnQgZGVmaW5pdGlvbiwgc28gd2Ugb3B0aW1pc3RpY2FsbHkgYXNzdW1lZCB0aGF0IHRoaXMgYXBwZW5kXG4gICAgLy8gaXMganVzdCBhIG5vcm1hbCBhcHBlbmQuIEhvd2V2ZXIsIGF0IHVwZGF0ZSB0aW1lLCB3ZSBkaXNjb3ZlcmVkIHRoYXRcbiAgICAvLyB0aGUgcmVmZXJlbmNlIGhhcyBzd2l0Y2hlZCBpbnRvIGNvbnRhaW5pbmcgYSBjb21wb25lbnQgZGVmaW5pdGlvbiwgc29cbiAgICAvLyB3ZSBuZWVkIHRvIGRvIGEgXCJsYXp5IGRlb3B0XCIsIHNpbXVsYXRpbmcgd2hhdCB3b3VsZCBoYXZlIGhhcHBlbmVkIGlmXG4gICAgLy8gd2UgaGFkIGRlY2lkZWQgdG8gcGVyZm9ybSB0aGUgZGVvcHQgaW4gdGhlIGZpcnN0IHBsYWNlIGR1cmluZyBpbml0aWFsXG4gICAgLy8gcmVuZGVyLlxuICAgIC8vXG4gICAgLy8gTW9yZSBjb25jcmV0ZWx5LCB3ZSB3b3VsZCBoYXZlIGV4cGFuZGVkIHRoZSBjdXJseSBpbnRvIGEgaWYvZWxzZSwgYW5kXG4gICAgLy8gYmFzZWQgb24gd2hldGhlciB0aGUgdmFsdWUgaXMgYSBjb21wb25lbnQgZGVmaW5pdGlvbiBvciBub3QsIHdlIHdvdWxkXG4gICAgLy8gaGF2ZSBlbnRlcmVkIGVpdGhlciB0aGUgZHluYW1pYyBjb21wb25lbnQgYnJhbmNoIG9yIHRoZSBzaW1wbGUgdmFsdWVcbiAgICAvLyBicmFuY2guXG4gICAgLy9cbiAgICAvLyBTaW5jZSB3ZSByZW5kZXJlZCBhIHNpbXBsZSB2YWx1ZSBkdXJpbmcgaW5pdGlhbCByZW5kZXIgKGFuZCBhbGwgdGhlXG4gICAgLy8gdXBkYXRlcyB1cCB1bnRpbCB0aGlzIHBvaW50KSwgd2UgbmVlZCB0byBwcmV0ZW5kIHRoYXQgdGhlIHJlc3VsdCBpc1xuICAgIC8vIHByb2R1Y2VkIGJ5IHRoZSBcIlZBTFVFXCIgYnJhbmNoIG9mIHRoZSBkZW9wdGVkIGFwcGVuZCBvcGNvZGU6XG4gICAgLy9cbiAgICAvLyAgIFRyeShCRUdJTiwgRU5EKVxuICAgIC8vICAgICBBc3NlcnQoSXNDb21wb25lbnREZWZpbml0aW9uLCBleHBlY3RlZD1mYWxzZSlcbiAgICAvLyAgICAgT3B0aW1pemVkVXBkYXRlXG4gICAgLy9cbiAgICAvLyBJbiB0aGlzIGNhc2UsIGJlY2F1c2UgdGhlIHJlZmVyZW5jZSBoYXMgc3dpdGNoZWQgZnJvbSBiZWluZyBhIHNpbXBsZVxuICAgIC8vIHZhbHVlIGludG8gYSBjb21wb25lbnQgZGVmaW5pdGlvbiwgd2hhdCB3b3VsZCBoYXZlIGhhcHBlbmVkIGlzIHRoYXRcbiAgICAvLyB0aGUgYXNzZXJ0IHdvdWxkIHRocm93LCBjYXVzaW5nIHRoZSBUcnkgb3Bjb2RlIHRvIHRlYXJkb3duIHRoZSBib3VuZHNcbiAgICAvLyBhbmQgcmVydW4gdGhlIG9yaWdpbmFsIGFwcGVuZCBvcGNvZGUuXG4gICAgLy9cbiAgICAvLyBTaW5jZSB0aGUgVHJ5IG9wY29kZSB3b3VsZCBoYXZlIG51a2VkIHRoZSB1cGRhdGluZyBvcGNvZGVzIGFueXdheSwgd2VcbiAgICAvLyB3b3VsZG4ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHNpbXVsYXRpbmcgdGhvc2UuIEFsbCB3ZSBoYXZlIHRvIGRvIGlzIHRvXG4gICAgLy8gZXhlY3V0ZSB0aGUgVHJ5IG9wY29kZSBhbmQgaW1tZWRpYXRlbHkgdGhyb3cuXG5cbiAgICBsZXQgeyBib3VuZHMsIGFwcGVuZE9wY29kZSwgc3RhdGUgfSA9IHRoaXM7XG5cbiAgICBsZXQgYXBwZW5kT3BzID0gYXBwZW5kT3Bjb2RlLmRlb3B0KHZtLmVudik7XG4gICAgbGV0IGVudGVyICAgICA9IGFwcGVuZE9wcy5oZWFkKCkgYXMgRW50ZXJPcGNvZGU7XG4gICAgbGV0IG9wcyAgICAgICA9IGVudGVyLnNsaWNlO1xuXG4gICAgbGV0IHRyYWNrZXIgPSBuZXcgVXBkYXRhYmxlQmxvY2tUcmFja2VyKGJvdW5kcy5wYXJlbnRFbGVtZW50KCkpO1xuICAgIHRyYWNrZXIubmV3Qm91bmRzKHRoaXMuYm91bmRzKTtcblxuICAgIGxldCBjaGlsZHJlbiA9IG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpO1xuXG4gICAgbGV0IGRlb3B0ZWQgPSB0aGlzLmRlb3B0ZWQgPSBuZXcgVHJ5T3Bjb2RlKG9wcywgc3RhdGUsIHRyYWNrZXIsIGNoaWxkcmVuKTtcblxuICAgIHRoaXMuX3RhZy51cGRhdGUoZGVvcHRlZC50YWcpO1xuXG4gICAgdm0uZXZhbHVhdGVPcGNvZGUoZGVvcHRlZCk7XG4gICAgdm0udGhyb3coKTtcblxuICAgIC8vIEZyb20gdGhpcyBwb2ludCBvbiwgd2UgaGF2ZSBlc3NlbnRpYWxseSByZXBsYWNlZCBvdXJzZWx2ZSB3aXRoIGEgbmV3XG4gICAgLy8gb3Bjb2RlLiBTaW5jZSB3ZSB3aWxsIGFsd2F5cyBiZSBleGVjdXRpbmcgdGhlIG5ldy9kZW9wdGVkIGNvZGUsIGl0J3MgYVxuICAgIC8vIGdvb2QgaWRlYSAoYXMgYSBwYXR0ZXJuKSB0byBudWxsIG91dCBhbnkgdW5uZWVkZWQgZmllbGRzIGhlcmUgdG8gYXZvaWRcbiAgICAvLyBob2xkaW5nIG9uIHRvIHVubmVlZGVkL3N0YWxlIG9iamVjdHM6XG5cbiAgICB0aGlzLl90YWcgICAgICAgICA9IG51bGw7XG4gICAgdGhpcy5yZWZlcmVuY2UgICAgPSBudWxsO1xuICAgIHRoaXMuY2FjaGUgICAgICAgID0gbnVsbDtcbiAgICB0aGlzLmJvdW5kcyAgICAgICA9IG51bGw7XG4gICAgdGhpcy51cHNlcnQgICAgICAgPSBudWxsO1xuICAgIHRoaXMuYXBwZW5kT3Bjb2RlID0gbnVsbDtcbiAgICB0aGlzLnN0YXRlICAgICAgICA9IG51bGw7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IHsgX2d1aWQ6IGd1aWQsIHR5cGUsIGRlb3B0ZWQgfSA9IHRoaXM7XG5cbiAgICBpZiAoZGVvcHRlZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZ3VpZCxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgZGVvcHRlZDogdHJ1ZSxcbiAgICAgICAgY2hpbGRyZW46IFtkZW9wdGVkLnRvSlNPTigpXVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHN1cGVyLnRvSlNPTigpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUgZXh0ZW5kcyBBcHBlbmRPcGNvZGU8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdvcHRpbWl6ZWQtY2F1dGlvdXMtYXBwZW5kJztcblxuICBwcm90ZWN0ZWQgbm9ybWFsaXplKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogQ2F1dGlvdXNJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVdpdGgodm06IFZNLCByZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LCBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8Q2F1dGlvdXNJbnNlcnRpb24+LCBib3VuZHM6IEZyYWdtZW50LCB1cHNlcnQ6IFVwc2VydCk6IFVwZGF0aW5nT3Bjb2RlIHtcbiAgICByZXR1cm4gbmV3IE9wdGltaXplZENhdXRpb3VzVXBkYXRlT3Bjb2RlKGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gIH1cbn1cblxuY2xhc3MgT3B0aW1pemVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUgZXh0ZW5kcyBVcGRhdGVPcGNvZGU8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdvcHRpbWl6ZWQtY2F1dGlvdXMtdXBkYXRlJztcblxuICBwcm90ZWN0ZWQgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBDYXV0aW91c0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIGNhdXRpb3VzSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEd1YXJkZWRDYXV0aW91c0FwcGVuZE9wY29kZSBleHRlbmRzIEd1YXJkZWRBcHBlbmRPcGNvZGU8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdndWFyZGVkLWNhdXRpb3VzLWFwcGVuZCc7XG5cbiAgcHJvdGVjdGVkIEFwcGVuZE9wY29kZSA9IE9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlO1xuXG4gIHByb3RlY3RlZCBub3JtYWxpemUocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPik6IFJlZmVyZW5jZTxDYXV0aW91c0luc2VydGlvbj4ge1xuICAgIHJldHVybiBtYXAocmVmZXJlbmNlLCBub3JtYWxpemVWYWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBDYXV0aW91c0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIGNhdXRpb3VzSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgdXBkYXRlV2l0aCh2bTogVk0sIHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4sIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxDYXV0aW91c0luc2VydGlvbj4sIGJvdW5kczogRnJhZ21lbnQsIHVwc2VydDogVXBzZXJ0KTogVXBkYXRpbmdPcGNvZGUge1xuICAgIHJldHVybiBuZXcgR3VhcmRlZENhdXRpb3VzVXBkYXRlT3Bjb2RlKHJlZmVyZW5jZSwgY2FjaGUsIGJvdW5kcywgdXBzZXJ0LCB0aGlzLCB2bS5jYXB0dXJlKCkpO1xuICB9XG59XG5cbmNsYXNzIEd1YXJkZWRDYXV0aW91c1VwZGF0ZU9wY29kZSBleHRlbmRzIEd1YXJkZWRVcGRhdGVPcGNvZGU8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdndWFyZGVkLWNhdXRpb3VzLXVwZGF0ZSc7XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogQ2F1dGlvdXNJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZSBleHRlbmRzIEFwcGVuZE9wY29kZTxUcnVzdGluZ0luc2VydGlvbj4ge1xuICB0eXBlID0gJ29wdGltaXplZC10cnVzdGluZy1hcHBlbmQnO1xuXG4gIHByb3RlY3RlZCBub3JtYWxpemUocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPik6IFJlZmVyZW5jZTxUcnVzdGluZ0luc2VydGlvbj4ge1xuICAgIHJldHVybiBtYXAocmVmZXJlbmNlLCBub3JtYWxpemVUcnVzdGVkVmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVHJ1c3RpbmdJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiB0cnVzdGluZ0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVdpdGgodm06IFZNLCByZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LCBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8VHJ1c3RpbmdJbnNlcnRpb24+LCBib3VuZHM6IEZyYWdtZW50LCB1cHNlcnQ6IFVwc2VydCk6IFVwZGF0aW5nT3Bjb2RlIHtcbiAgICByZXR1cm4gbmV3IE9wdGltaXplZFRydXN0aW5nVXBkYXRlT3Bjb2RlKGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gIH1cbn1cblxuY2xhc3MgT3B0aW1pemVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUgZXh0ZW5kcyBVcGRhdGVPcGNvZGU8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdvcHRpbWl6ZWQtdHJ1c3RpbmctdXBkYXRlJztcblxuICBwcm90ZWN0ZWQgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBUcnVzdGluZ0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIHRydXN0aW5nSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEd1YXJkZWRUcnVzdGluZ0FwcGVuZE9wY29kZSBleHRlbmRzIEd1YXJkZWRBcHBlbmRPcGNvZGU8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdndWFyZGVkLXRydXN0aW5nLWFwcGVuZCc7XG5cbiAgcHJvdGVjdGVkIEFwcGVuZE9wY29kZSA9IE9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlO1xuXG4gIHByb3RlY3RlZCBub3JtYWxpemUocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPik6IFJlZmVyZW5jZTxUcnVzdGluZ0luc2VydGlvbj4ge1xuICAgIHJldHVybiBtYXAocmVmZXJlbmNlLCBub3JtYWxpemVUcnVzdGVkVmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVHJ1c3RpbmdJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiB0cnVzdGluZ0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVdpdGgodm06IFZNLCByZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LCBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8VHJ1c3RpbmdJbnNlcnRpb24+LCBib3VuZHM6IEZyYWdtZW50LCB1cHNlcnQ6IFVwc2VydCk6IFVwZGF0aW5nT3Bjb2RlIHtcbiAgICByZXR1cm4gbmV3IEd1YXJkZWRUcnVzdGluZ1VwZGF0ZU9wY29kZShyZWZlcmVuY2UsIGNhY2hlLCBib3VuZHMsIHVwc2VydCwgdGhpcywgdm0uY2FwdHVyZSgpKTtcbiAgfVxufVxuXG5jbGFzcyBHdWFyZGVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUgZXh0ZW5kcyBHdWFyZGVkVXBkYXRlT3Bjb2RlPFRydXN0aW5nSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAndHJ1c3RpbmctdXBkYXRlJztcblxuICBwcm90ZWN0ZWQgaW5zZXJ0KGRvbTogRE9NVHJlZUNvbnN0cnVjdGlvbiwgY3Vyc29yOiBDdXJzb3IsIHZhbHVlOiBUcnVzdGluZ0luc2VydGlvbik6IFVwc2VydCB7XG4gICAgcmV0dXJuIHRydXN0aW5nSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gIH1cbn1cbiJdfQ==
16535
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZWQvb3Bjb2Rlcy9jb250ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBK0JBLGFBQUEsT0FBQSxDQUFpQixLQUFhLEVBQUE7QUFDNUIsZUFBTyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssVUFBVSxDQUFDO0tBQ3pGOztBQUVELGFBQUEsa0JBQUEsQ0FBbUMsS0FBYSxFQUFBO0FBQzlDLFlBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ2xCLG1CQUFPLEVBQUUsQ0FBQztTQUNYO0FBQ0QsZUFBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDdEI7O0FBRUQsYUFBQSxxQkFBQSxDQUErQixLQUFhLEVBQUE7QUFDMUMsWUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDbEIsbUJBQU8sRUFBRSxDQUFDO1NBQ1g7QUFDRCxZQUFJLHlCQXZDSixRQUFRLENBdUNLLEtBQUssQ0FBQyxFQUFFO0FBQ25CLG1CQUFPLEtBQUssQ0FBQztTQUNkO0FBQ0QsWUFBSSx5QkE1Q0osWUFBWSxDQTRDSyxLQUFLLENBQUMsRUFBRTtBQUN2QixtQkFBTyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDdkI7QUFDRCxZQUFJLHlCQTlDSixNQUFNLENBOENLLEtBQUssQ0FBQyxFQUFFO0FBQ2pCLG1CQUFPLEtBQUssQ0FBQztTQUNkO0FBQ0QsZUFBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDdEI7QUFFRCxhQUFBLGNBQUEsQ0FBd0IsS0FBYSxFQUFBO0FBQ25DLFlBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ2xCLG1CQUFPLEVBQUUsQ0FBQztTQUNYO0FBQ0QsWUFBSSx5QkF2REosUUFBUSxDQXVESyxLQUFLLENBQUMsRUFBRTtBQUNuQixtQkFBTyxLQUFLLENBQUM7U0FDZDtBQUNELFlBQUkseUJBNURKLFlBQVksQ0E0REssS0FBSyxDQUFDLElBQUkseUJBM0QzQixNQUFNLENBMkQ0QixLQUFLLENBQUMsRUFBRTtBQUN4QyxtQkFBTyxLQUFLLENBQUM7U0FDZDtBQUNELGVBQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQ3RCOztRQUVELFlBQUE7OEJBQUEsWUFBQTs7aUJBQUEsWUFBQTs7OztBQUFBLG9CQUFBLFdBS0UsUUFBUSxHQUFBLGtCQUFDLEVBQU0sRUFBQTtBQUNiLGdCQUFJLFNBQVMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ3RDLGdCQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRTNDLGdCQUFJLEtBQUssWUFBQTtnQkFBRSxLQUFLLFlBQUEsQ0FBQztBQUVqQixnQkFBSSxrQkEvRHNELE9BQU8sQ0ErRHJELFNBQVMsQ0FBQyxFQUFFO0FBQ3RCLHFCQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQzVCLE1BQU07QUFDTCxxQkFBSyxHQUFHLHNCQWxFTSxjQUFjLENBa0VELFVBQVUsQ0FBQyxDQUFDO0FBQ3ZDLHFCQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ3RCO0FBRUQsZ0JBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUN2QixnQkFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3JFLGdCQUFJLE1BQU0sR0FBRyw4QkFyRVIsUUFBUSxDQXFFYSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFekMsaUJBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7QUFFeEIsZ0JBQUksS0FBSyxpQ0FBaUM7QUFDeEMsc0JBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztpQkFDdEU7U0FDRjs7QUEzQkgsb0JBQUEsV0E2QkUsTUFBTSxHQUFBLGtCQUFBO0FBQ0osbUJBQU87QUFDTCxvQkFBSSxFQUFFLElBQUksQ0FBQyxLQUFLO0FBQ2hCLG9CQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7QUFDZixvQkFBSSxFQUFFLENBQUMsVUFBVSxDQUFDO2FBQ25CLENBQUM7U0FDSDs7ZUFuQ0gsWUFBQTtpQ0F6RGdCLE1BQU07Ozs7UUErRnRCLG1CQUFBOzhCQUFBLG1CQUFBOztBQUlFLGlCQUpGLG1CQUFBLENBSXNCLFVBQW1DLEVBQVUsV0FBd0IsRUFBQTtBQUN2RixvQ0FBTyxDQUFDO0FBRFUsZ0JBQUEsQ0FBQSxVQUFVLEdBQVYsVUFBVSxDQUF5QjtBQUFVLGdCQUFBLENBQUEsV0FBVyxHQUFYLFdBQVcsQ0FBYTtBQUZqRixnQkFBQSxDQUFBLE9BQU8sR0FBVSxJQUFJLENBQUM7U0FJN0I7O0FBTkgsMkJBQUEsV0FRRSxRQUFRLEdBQUEsa0JBQUMsRUFBTSxFQUFBO0FBQ2IsZ0JBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtBQUNoQixrQkFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDaEMsTUFBTTtBQUNMLGtCQUFFLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUVwQyxvQkFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUUxQyxvQkFBRyxzQ0FqSEEscUJBQXFCLENBaUhDLEtBQUssQ0FBQyxFQUFFO0FBQy9CLHNCQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQ3RDLE1BQU07QUFDTCw0Q0FBTSxRQUFRLEtBQUEsT0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDcEI7YUFDRjtTQUNGOztBQXRCSCwyQkFBQSxXQXdCUyxLQUFLLEdBQUEsZUFBQyxHQUFnQixFQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNkMzQixnQkFBSSxNQUFNLEdBQUcsK0JBM0pSLGVBQWUsQ0EySmEsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzVDLGdCQUFJLEdBQUcsR0FBRyxxREFBcUIsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFFOUQsZUFBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDOUIsZUFBRyxDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUVoRCxlQUFHLENBQUMsV0FBVyxDQUFDLFVBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUE7QUFDOUIsbUJBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDeEIsbUJBQUcsQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO0FBQ3BDLG1CQUFHLENBQUMsYUFBYSxDQUFDLDZCQWpLZixJQUFJLENBaUtnQixLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ2hDLG1CQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckIsbUJBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZCxtQkFBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNuQixtQkFBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQUssWUFBWSxFQUFFLENBQUMsQ0FBQzthQUNyQyxDQUFDLENBQUM7QUFFSCxnQkFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7Ozs7O0FBTzNDLGdCQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztBQUV2QixtQkFBTyxPQUFPLENBQUM7U0FDaEI7O0FBL0ZILDJCQUFBLFdBaUdFLE1BQU0sR0FBQSxrQkFBQTtnQkFDUyxJQUFJLEdBQW9CLElBQUksQ0FBbkMsS0FBSztnQkFBUSxJQUFJLEdBQWMsSUFBSSxDQUF0QixJQUFJO2dCQUFFLE9BQU8sR0FBSyxJQUFJLENBQWhCLE9BQU87O0FBRWhDLGdCQUFJLE9BQU8sRUFBRTtBQUNYLHVCQUFPO0FBQ0wsd0JBQUksRUFBSixJQUFJO0FBQ0osd0JBQUksRUFBSixJQUFJO0FBQ0osMkJBQU8sRUFBRSxJQUFJO0FBQ2IsNEJBQVEsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQUEsRUFBRTsrQkFBSSxFQUFFLENBQUMsTUFBTSxFQUFFO3FCQUFBLENBQUM7aUJBQ25ELENBQUM7YUFDSCxNQUFNO0FBQ0wsdUJBQU87QUFDTCx3QkFBSSxFQUFKLElBQUk7QUFDSix3QkFBSSxFQUFKLElBQUk7QUFDSix3QkFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztpQkFDakMsQ0FBQzthQUNIO1NBQ0Y7O2VBbEhILG1CQUFBO09BQXVFLFlBQVk7Ozs7UUFxSG5GLDhCQUFBOzhCQUFBLDhCQUFBOztpQkFBQSw4QkFBQTs7OztBQUFBLHNDQUFBLENBQ1MsTUFBTSxHQUFBLGdCQUFDLEtBQXdCLEVBQUE7QUFDcEMsbUJBQU8sSUFBSSw4QkFBOEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNsRDs7QUFISCxzQ0FBQSxXQUtFLE1BQU0sR0FBQSxnQkFBQyxLQUFhLEVBQUE7QUFDbEIsbUJBQU8sc0NBNU5GLHFCQUFxQixDQTRORyxLQUFLLENBQUMsQ0FBQztTQUNyQzs7ZUFQSCw4QkFBQTtvQ0F6TVMsb0JBQW9COztRQW1ON0IsWUFBQTs4QkFBQSxZQUFBOztBQUNFLGlCQURGLFlBQUEsQ0FFYyxLQUF3QixFQUN4QixNQUFnQixFQUNoQixNQUFjLEVBQUE7QUFFeEIsc0NBQU8sQ0FBQztBQUpFLGdCQUFBLENBQUEsS0FBSyxHQUFMLEtBQUssQ0FBbUI7QUFDeEIsZ0JBQUEsQ0FBQSxNQUFNLEdBQU4sTUFBTSxDQUFVO0FBQ2hCLGdCQUFBLENBQUEsTUFBTSxHQUFOLE1BQU0sQ0FBUTtBQUd4QixnQkFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO1NBQ3RCOztBQVJILG9CQUFBLFdBWUUsUUFBUSxHQUFBLGtCQUFDLEVBQWMsRUFBQTtBQUNyQixnQkFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUVwQyxnQkFBSSxrQkF4TzBDLFVBQVUsQ0F3T3pDLEtBQUssQ0FBQyxFQUFFO29CQUNmLE1BQU0sR0FBYSxJQUFJLENBQXZCLE1BQU07b0JBQUUsTUFBTSxHQUFLLElBQUksQ0FBZixNQUFNO29CQUNkLEdBQUcsR0FBSyxFQUFFLENBQVYsR0FBRzs7QUFFVCxvQkFBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRTtBQUNsQyx3QkFBSSxNQUFNLEdBQUcsNkJBM09aLE1BQU0sQ0EyT2lCLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBRSx5QkEzT3ZDLEtBQUssQ0EyT3dDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDL0QsMEJBQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFVLENBQUMsQ0FBQztpQkFDdEY7QUFFRCxzQkFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDOUI7U0FDRjs7QUExQkgsb0JBQUEsV0E0QkUsTUFBTSxHQUFBLGtCQUFBO2dCQUNTLElBQUksR0FBa0IsSUFBSSxDQUFqQyxLQUFLO2dCQUFRLElBQUksR0FBWSxJQUFJLENBQXBCLElBQUk7Z0JBQUUsS0FBSyxHQUFLLElBQUksQ0FBZCxLQUFLOztBQUU5QixtQkFBTztBQUNMLG9CQUFJLEVBQUosSUFBSTtBQUNKLG9CQUFJLEVBQUosSUFBSTtBQUNKLHVCQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRTthQUNyRCxDQUFDO1NBQ0g7O2VBcENILFlBQUE7aUNBOU5vQyxjQUFjOztRQXFRbEQsbUJBQUE7OEJBQUEsbUJBQUE7O0FBSUUsaUJBSkYsbUJBQUEsQ0FLWSxTQUE0QixFQUNwQyxLQUF3QixFQUN4QixNQUFnQixFQUNoQixNQUFjLEVBQ04sWUFBb0MsRUFDcEMsS0FBYyxFQUFBO0FBRXRCLHFDQUFNLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFQckIsZ0JBQUEsQ0FBQSxTQUFTLEdBQVQsU0FBUyxDQUFtQjtBQUk1QixnQkFBQSxDQUFBLFlBQVksR0FBWixZQUFZLENBQXdCO0FBQ3BDLGdCQUFBLENBQUEsS0FBSyxHQUFMLEtBQUssQ0FBUztBQVJoQixnQkFBQSxDQUFBLE9BQU8sR0FBYyxJQUFJLENBQUM7QUFXaEMsZ0JBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxzQkE3UVMsWUFBWSxDQTZRSixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDbkQ7O0FBZEgsMkJBQUEsV0FnQkUsUUFBUSxHQUFBLGtCQUFDLEVBQWMsRUFBQTtBQUNyQixnQkFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO0FBQ2hCLGtCQUFFLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNqQyxNQUFNO0FBQ0wsb0JBQUksc0NBM1JELHFCQUFxQixDQTJSRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUU7QUFDakQsd0JBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ3BCLE1BQU07QUFDTCw0Q0FBTSxRQUFRLEtBQUEsT0FBQyxFQUFFLENBQUMsQ0FBQztpQkFDcEI7YUFDRjtTQUNGOztBQTFCSCwyQkFBQSxXQTRCVSxTQUFTLEdBQUEsbUJBQUMsRUFBYyxFQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Z0JBK0J4QixNQUFNLEdBQTBCLElBQUksQ0FBcEMsTUFBTTtnQkFBRSxZQUFZLEdBQVksSUFBSSxDQUE1QixZQUFZO2dCQUFFLEtBQUssR0FBSyxJQUFJLENBQWQsS0FBSzs7QUFFakMsZ0JBQUksU0FBUyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNDLGdCQUFJLEtBQUssR0FBTyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQW1CLENBQUM7QUFDMUQsZ0JBQUksR0FBRyxHQUFTLEtBQUssQ0FBQyxLQUFLLENBQUM7QUFFNUIsZ0JBQUksT0FBTyxHQUFHLDhCQXhUVCxxQkFBcUIsQ0F3VGMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7QUFDaEUsbUJBQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRS9CLGdCQUFJLFFBQVEsR0FBRyxpQkFuVUYsVUFBVSxFQW1Vd0IsQ0FBQztBQUVoRCxpQkFBSyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyw4QkFBOEIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBRXpGLGdCQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLCtCQTFVeEIsU0FBUyxDQTBVNkIsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFFMUUsZ0JBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUU5QixjQUFFLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzNCLGNBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQzs7Ozs7QUFPWCxnQkFBSSxDQUFDLElBQUksR0FBVyxJQUFJLENBQUM7QUFDekIsZ0JBQUksQ0FBQyxTQUFTLEdBQU0sSUFBSSxDQUFDO0FBQ3pCLGdCQUFJLENBQUMsS0FBSyxHQUFVLElBQUksQ0FBQztBQUN6QixnQkFBSSxDQUFDLE1BQU0sR0FBUyxJQUFJLENBQUM7QUFDekIsZ0JBQUksQ0FBQyxNQUFNLEdBQVMsSUFBSSxDQUFDO0FBQ3pCLGdCQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztBQUN6QixnQkFBSSxDQUFDLEtBQUssR0FBVSxJQUFJLENBQUM7U0FDMUI7O0FBM0ZILDJCQUFBLFdBNkZFLE1BQU0sR0FBQSxrQkFBQTtnQkFDUyxJQUFJLEdBQW9CLElBQUksQ0FBbkMsS0FBSztnQkFBUSxJQUFJLEdBQWMsSUFBSSxDQUF0QixJQUFJO2dCQUFFLE9BQU8sR0FBSyxJQUFJLENBQWhCLE9BQU87O0FBRWhDLGdCQUFJLE9BQU8sRUFBRTtBQUNYLHVCQUFPO0FBQ0wsd0JBQUksRUFBSixJQUFJO0FBQ0osd0JBQUksRUFBSixJQUFJO0FBQ0osMkJBQU8sRUFBRSxJQUFJO0FBQ2IsNEJBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztpQkFDN0IsQ0FBQzthQUNILE1BQU07QUFDTCx1QkFBTyx3QkFBTSxNQUFNLEtBQUEsTUFBRSxDQUFDO2FBQ3ZCO1NBQ0Y7O2VBMUdILG1CQUFBO09BQWdFLFlBQVk7O1FBNkc1RSw2QkFBQTs4QkFBQSw2QkFBQTs7QUFBQSxpQkFBQSw2QkFBQSxHQUFBO0FBQW1ELHVDQUFBLFNBQUEsQ0FBQSxDQUErQjtBQUNoRixnQkFBQSxDQUFBLElBQUksR0FBRywyQkFBMkIsQ0FBQztTQWFwQzs7QUFkRCxxQ0FBQSxXQUdZLFNBQVMsR0FBQSxtQkFBQyxTQUE0QixFQUFBO0FBQzlDLG1CQUFPLGtCQWpYNEQsR0FBRyxDQWlYM0QsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1NBQ3ZDOztBQUxILHFDQUFBLFdBT1ksTUFBTSxHQUFBLGdCQUFDLEdBQXdCLEVBQUUsTUFBYyxFQUFFLEtBQXdCLEVBQUE7QUFDakYsbUJBQU8seUJBL1hULGNBQWMsQ0ErWFUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztTQUMzQzs7QUFUSCxxQ0FBQSxXQVdZLFVBQVUsR0FBQSxvQkFBQyxFQUFNLEVBQUUsU0FBNEIsRUFBRSxLQUF3QyxFQUFFLE1BQWdCLEVBQUUsTUFBYyxFQUFBO0FBQ25JLG1CQUFPLElBQUksNkJBQTZCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztTQUNqRTs7ZUFiSCw2QkFBQTtPQUFtRCxZQUFZOzs7O1FBZ0IvRCw2QkFBQTs4QkFBQSw2QkFBQTs7QUFBQSxpQkFBQSw2QkFBQSxHQUFBO0FBQTRDLHVDQUFBLFNBQUEsQ0FBQSxDQUErQjtBQUN6RSxnQkFBQSxDQUFBLElBQUksR0FBRywyQkFBMkIsQ0FBQztTQUtwQzs7QUFORCxxQ0FBQSxXQUdZLE1BQU0sR0FBQSxnQkFBQyxHQUF3QixFQUFFLE1BQWMsRUFBRSxLQUF3QixFQUFBO0FBQ2pGLG1CQUFPLHlCQTNZVCxjQUFjLENBMllVLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDM0M7O2VBTEgsNkJBQUE7T0FBNEMsWUFBWTs7UUFReEQsMkJBQUE7OEJBQUEsMkJBQUE7O0FBQUEsaUJBQUEsMkJBQUEsR0FBQTtBQUFpRCw2Q0FBQSxTQUFBLENBQUEsQ0FBc0M7QUFDckYsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcseUJBQXlCLENBQUM7QUFFdkIsZ0JBQUEsQ0FBQSxZQUFZLEdBQUcsNkJBQTZCLENBQUM7U0FheEQ7O0FBaEJELG1DQUFBLFdBS1ksU0FBUyxHQUFBLG1CQUFDLFNBQTRCLEVBQUE7QUFDOUMsbUJBQU8sa0JBM1k0RCxHQUFHLENBMlkzRCxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7U0FDdkM7O0FBUEgsbUNBQUEsV0FTWSxNQUFNLEdBQUEsZ0JBQUMsR0FBd0IsRUFBRSxNQUFjLEVBQUUsS0FBd0IsRUFBQTtBQUNqRixtQkFBTyx5QkF6WlQsY0FBYyxDQXlaVSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzNDOztBQVhILG1DQUFBLFdBYVksVUFBVSxHQUFBLG9CQUFDLEVBQU0sRUFBRSxTQUE0QixFQUFFLEtBQXdDLEVBQUUsTUFBZ0IsRUFBRSxNQUFjLEVBQUE7QUFDbkksbUJBQU8sSUFBSSwyQkFBMkIsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQzlGOztlQWZILDJCQUFBO09BQWlELG1CQUFtQjs7OztRQWtCcEUsMkJBQUE7OEJBQUEsMkJBQUE7O0FBQUEsaUJBQUEsMkJBQUEsR0FBQTtBQUEwQyw2Q0FBQSxTQUFBLENBQUEsQ0FBc0M7QUFDOUUsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcseUJBQXlCLENBQUM7U0FLbEM7O0FBTkQsbUNBQUEsV0FHWSxNQUFNLEdBQUEsZ0JBQUMsR0FBd0IsRUFBRSxNQUFjLEVBQUUsS0FBd0IsRUFBQTtBQUNqRixtQkFBTyx5QkFyYVQsY0FBYyxDQXFhVSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzNDOztlQUxILDJCQUFBO09BQTBDLG1CQUFtQjs7UUFRN0QsNkJBQUE7OEJBQUEsNkJBQUE7O0FBQUEsaUJBQUEsNkJBQUEsR0FBQTtBQUFtRCx1Q0FBQSxTQUFBLENBQUEsQ0FBK0I7QUFDaEYsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsMkJBQTJCLENBQUM7U0FhcEM7O0FBZEQscUNBQUEsV0FHWSxTQUFTLEdBQUEsbUJBQUMsU0FBNEIsRUFBQTtBQUM5QyxtQkFBTyxrQkFuYTRELEdBQUcsQ0FtYTNELFNBQVMsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1NBQzlDOztBQUxILHFDQUFBLFdBT1ksTUFBTSxHQUFBLGdCQUFDLEdBQXdCLEVBQUUsTUFBYyxFQUFFLEtBQXdCLEVBQUE7QUFDakYsbUJBQU8seUJBaGJULGNBQWMsQ0FnYlUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztTQUMzQzs7QUFUSCxxQ0FBQSxXQVdZLFVBQVUsR0FBQSxvQkFBQyxFQUFNLEVBQUUsU0FBNEIsRUFBRSxLQUF3QyxFQUFFLE1BQWdCLEVBQUUsTUFBYyxFQUFBO0FBQ25JLG1CQUFPLElBQUksNkJBQTZCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztTQUNqRTs7ZUFiSCw2QkFBQTtPQUFtRCxZQUFZOzs7O1FBZ0IvRCw2QkFBQTs4QkFBQSw2QkFBQTs7QUFBQSxpQkFBQSw2QkFBQSxHQUFBO0FBQTRDLHVDQUFBLFNBQUEsQ0FBQSxDQUErQjtBQUN6RSxnQkFBQSxDQUFBLElBQUksR0FBRywyQkFBMkIsQ0FBQztTQUtwQzs7QUFORCxxQ0FBQSxXQUdZLE1BQU0sR0FBQSxnQkFBQyxHQUF3QixFQUFFLE1BQWMsRUFBRSxLQUF3QixFQUFBO0FBQ2pGLG1CQUFPLHlCQTViVCxjQUFjLENBNGJVLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDM0M7O2VBTEgsNkJBQUE7T0FBNEMsWUFBWTs7UUFReEQsMkJBQUE7OEJBQUEsMkJBQUE7O0FBQUEsaUJBQUEsMkJBQUEsR0FBQTtBQUFpRCw4Q0FBQSxTQUFBLENBQUEsQ0FBc0M7QUFDckYsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcseUJBQXlCLENBQUM7QUFFdkIsZ0JBQUEsQ0FBQSxZQUFZLEdBQUcsNkJBQTZCLENBQUM7U0FheEQ7O0FBaEJELG1DQUFBLFdBS1ksU0FBUyxHQUFBLG1CQUFDLFNBQTRCLEVBQUE7QUFDOUMsbUJBQU8sa0JBN2I0RCxHQUFHLENBNmIzRCxTQUFTLEVBQUUscUJBQXFCLENBQUMsQ0FBQztTQUM5Qzs7QUFQSCxtQ0FBQSxXQVNZLE1BQU0sR0FBQSxnQkFBQyxHQUF3QixFQUFFLE1BQWMsRUFBRSxLQUF3QixFQUFBO0FBQ2pGLG1CQUFPLHlCQTFjVCxjQUFjLENBMGNVLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDM0M7O0FBWEgsbUNBQUEsV0FhWSxVQUFVLEdBQUEsb0JBQUMsRUFBTSxFQUFFLFNBQTRCLEVBQUUsS0FBd0MsRUFBRSxNQUFnQixFQUFFLE1BQWMsRUFBQTtBQUNuSSxtQkFBTyxJQUFJLDJCQUEyQixDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7U0FDOUY7O2VBZkgsMkJBQUE7T0FBaUQsbUJBQW1COzs7O1FBa0JwRSwyQkFBQTs4QkFBQSwyQkFBQTs7QUFBQSxpQkFBQSwyQkFBQSxHQUFBO0FBQTBDLDhDQUFBLFNBQUEsQ0FBQSxDQUFzQztBQUM5RSxnQkFBQSxDQUFBLElBQUksR0FBRyxpQkFBaUIsQ0FBQztTQUsxQjs7QUFORCxtQ0FBQSxXQUdZLE1BQU0sR0FBQSxnQkFBQyxHQUF3QixFQUFFLE1BQWMsRUFBRSxLQUF3QixFQUFBO0FBQ2pGLG1CQUFPLHlCQXRkVCxjQUFjLENBc2RVLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDM0M7O2VBTEgsMkJBQUE7T0FBMEMsbUJBQW1CIiwiZmlsZSI6ImNvbnRlbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVXBzZXJ0LCB7XG4gIEluc2VydGlvbixcbiAgQ2F1dGlvdXNJbnNlcnRpb24sXG4gIFRydXN0aW5nSW5zZXJ0aW9uLFxuXG4gIGlzU2FmZVN0cmluZyxcbiAgaXNOb2RlLFxuICBpc1N0cmluZyxcblxuICBjYXV0aW91c0luc2VydCxcbiAgdHJ1c3RpbmdJbnNlcnRcbn0gZnJvbSAnLi4vLi4vdXBzZXJ0JztcbmltcG9ydCB7IGlzQ29tcG9uZW50RGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcbmltcG9ydCB7IERPTVRyZWVDb25zdHJ1Y3Rpb24gfSBmcm9tICcuLi8uLi9kb20vaGVscGVyJztcbmltcG9ydCB7IE9wU2VxLCBPcGNvZGUsIE9wY29kZUpTT04sIFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBDb21waWxlZEV4cHJlc3Npb24gfSBmcm9tICcuLi9leHByZXNzaW9ucyc7XG5pbXBvcnQgeyBWTSwgVXBkYXRpbmdWTSB9IGZyb20gJy4uLy4uL3ZtJztcbmltcG9ydCB7IFRyeU9wY29kZSwgVk1TdGF0ZSB9IGZyb20gJy4uLy4uL3ZtL3VwZGF0ZSc7XG5pbXBvcnQgeyBFbnRlck9wY29kZSB9IGZyb20gJy4vdm0nO1xuaW1wb3J0IHsgUmVmZXJlbmNlLCBSZWZlcmVuY2VDYWNoZSwgVXBkYXRhYmxlVGFnLCBpc01vZGlmaWVkLCBpc0NvbnN0LCBtYXAgfSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBPcGFxdWUsIExpbmtlZExpc3QgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuaW1wb3J0IHsgQ3Vyc29yLCBjbGVhciB9IGZyb20gJy4uLy4uL2JvdW5kcyc7XG5pbXBvcnQgeyBGcmFnbWVudCB9IGZyb20gJy4uLy4uL2J1aWxkZXInO1xuaW1wb3J0IHsgQ29tcGlsZUludG9MaXN0IH0gZnJvbSAnLi4vLi4vY29tcGlsZXInO1xuaW1wb3J0IE9wY29kZUJ1aWxkZXJEU0wgZnJvbSAnLi9idWlsZGVyJztcbmltcG9ydCB7IENvbmRpdGlvbmFsUmVmZXJlbmNlIH0gZnJvbSAnLi4vLi4vcmVmZXJlbmNlcyc7XG5pbXBvcnQgeyBBcmdzIH0gZnJvbSAnLi4vLi4vc3ludGF4L2NvcmUnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBVcGRhdGFibGVCbG9ja1RyYWNrZXIgfSBmcm9tICcuLi8uLi9idWlsZGVyJztcbmltcG9ydCBTeW1ib2xUYWJsZSBmcm9tICcuLi8uLi9zeW1ib2wtdGFibGUnO1xuXG5mdW5jdGlvbiBpc0VtcHR5KHZhbHVlOiBPcGFxdWUpOiBib29sZWFuIHtcbiAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHZhbHVlWyd0b1N0cmluZyddICE9PSAnZnVuY3Rpb24nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplVGV4dFZhbHVlKHZhbHVlOiBPcGFxdWUpOiBzdHJpbmcge1xuICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgcmV0dXJuIFN0cmluZyh2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVRydXN0ZWRWYWx1ZSh2YWx1ZTogT3BhcXVlKTogVHJ1c3RpbmdJbnNlcnRpb24ge1xuICBpZiAoaXNFbXB0eSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZS50b0hUTUwoKTtcbiAgfVxuICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUodmFsdWU6IE9wYXF1ZSk6IENhdXRpb3VzSW5zZXJ0aW9uIHtcbiAgaWYgKGlzRW1wdHkodmFsdWUpKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkgfHwgaXNOb2RlKHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFwcGVuZE9wY29kZTxUIGV4dGVuZHMgSW5zZXJ0aW9uPiBleHRlbmRzIE9wY29kZSB7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBub3JtYWxpemUocmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPik6IFJlZmVyZW5jZTxUPjtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVCk6IFVwc2VydDtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IHVwZGF0ZVdpdGgodm06IFZNLCByZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LCBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8VD4sIGJvdW5kczogRnJhZ21lbnQsIHVwc2VydDogVXBzZXJ0KTogVXBkYXRpbmdPcGNvZGU7XG5cbiAgZXZhbHVhdGUodm06IFZNKSB7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHZtLmZyYW1lLmdldE9wZXJhbmQoKTtcbiAgICBsZXQgbm9ybWFsaXplZCA9IHRoaXMubm9ybWFsaXplKHJlZmVyZW5jZSk7XG5cbiAgICBsZXQgdmFsdWUsIGNhY2hlO1xuXG4gICAgaWYgKGlzQ29uc3QocmVmZXJlbmNlKSkge1xuICAgICAgdmFsdWUgPSBub3JtYWxpemVkLnZhbHVlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhY2hlID0gbmV3IFJlZmVyZW5jZUNhY2hlKG5vcm1hbGl6ZWQpO1xuICAgICAgdmFsdWUgPSBjYWNoZS5wZWVrKCk7XG4gICAgfVxuXG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2soKTtcbiAgICBsZXQgdXBzZXJ0ID0gdGhpcy5pbnNlcnQodm0uZW52LmdldEFwcGVuZE9wZXJhdGlvbnMoKSwgc3RhY2ssIHZhbHVlKTtcbiAgICBsZXQgYm91bmRzID0gbmV3IEZyYWdtZW50KHVwc2VydC5ib3VuZHMpO1xuXG4gICAgc3RhY2submV3Qm91bmRzKGJvdW5kcyk7XG5cbiAgICBpZiAoY2FjaGUgLyogaS5lLiAhaXNDb25zdChyZWZlcmVuY2UpICovKSB7XG4gICAgICB2bS51cGRhdGVXaXRoKHRoaXMudXBkYXRlV2l0aCh2bSwgcmVmZXJlbmNlLCBjYWNoZSwgYm91bmRzLCB1cHNlcnQpKTtcbiAgICB9XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBhcmdzOiBbXCIkT1BFUkFORFwiXVxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEd1YXJkZWRBcHBlbmRPcGNvZGU8VCBleHRlbmRzIEluc2VydGlvbj4gZXh0ZW5kcyBBcHBlbmRPcGNvZGU8VD4ge1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgQXBwZW5kT3Bjb2RlOiB0eXBlb2YgT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUgfCB0eXBlb2YgT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGU7XG4gIHByaXZhdGUgZGVvcHRlZDogT3BTZXEgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZXhwcmVzc2lvbjogQ29tcGlsZWRFeHByZXNzaW9uPGFueT4sIHByaXZhdGUgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBWTSkge1xuICAgIGlmICh0aGlzLmRlb3B0ZWQpIHtcbiAgICAgIHZtLnB1c2hFdmFsRnJhbWUodGhpcy5kZW9wdGVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdm0uZXZhbHVhdGVPcGVyYW5kKHRoaXMuZXhwcmVzc2lvbik7XG5cbiAgICAgIGxldCB2YWx1ZSA9IHZtLmZyYW1lLmdldE9wZXJhbmQoKS52YWx1ZSgpO1xuXG4gICAgICBpZihpc0NvbXBvbmVudERlZmluaXRpb24odmFsdWUpKSB7XG4gICAgICAgIHZtLnB1c2hFdmFsRnJhbWUodGhpcy5kZW9wdCh2bS5lbnYpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1cGVyLmV2YWx1YXRlKHZtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGVvcHQoZW52OiBFbnZpcm9ubWVudCk6IE9wU2VxIHsgLy8gUHVibGljIGJlY2F1c2UgaXQncyB1c2VkIGluIHRoZSBsYXp5IGRlb3B0XG4gICAgLy8gQXQgY29tcGlsZSB0aW1lLCB3ZSBkZXRlcm1pbmVkIHRoYXQgdGhpcyBhcHBlbmQgY2FsbHNpdGUgbWlnaHQgcmVmZXJcbiAgICAvLyB0byBhIGxvY2FsIHZhcmlhYmxlL3Byb3BlcnR5IGxvb2t1cCB0aGF0IHJlc29sdmVzIHRvIGEgY29tcG9uZW50XG4gICAgLy8gZGVmaW5pdGlvbiBhdCBydW50aW1lLlxuICAgIC8vXG4gICAgLy8gV2UgY291bGQgaGF2ZSBlYWdlcmx5IGNvbXBpbGVkIHRoaXMgY2FsbHNpdGUgaW50byBzb21ldGhpbmcgbGlrZSB0aGlzOlxuICAgIC8vXG4gICAgLy8gICB7eyNpZiAoaXMtY29tcG9uZW50LWRlZmluaXRpb24gZm9vKX19XG4gICAgLy8gICAgIHt7Y29tcG9uZW50IGZvb319XG4gICAgLy8gICB7e2Vsc2V9fVxuICAgIC8vICAgICB7e2Zvb319XG4gICAgLy8gICB7ey9pZn19XG4gICAgLy9cbiAgICAvLyBIb3dldmVyLCBpbiBwcmFjdGljZSwgdGhlcmUgbWlnaHQgYmUgYSBsYXJnZSBhbW91dCBvZiB0aGVzZSBjYWxsc2l0ZXNcbiAgICAvLyBhbmQgbW9zdCBvZiB0aGVtIHdvdWxkIHJlc29sdmUgdG8gYSBzaW1wbGUgdmFsdWUgbG9va3VwLiBUaGVyZWZvcmUsIHdlXG4gICAgLy8gdHJpZWQgdG8gYmUgb3B0aW1pc3RpYyBhbmQgYXNzdW1lZCB0aGF0IHRoZSBjYWxsc2l0ZSB3aWxsIHJlc29sdmUgdG9cbiAgICAvLyBhcHBlbmRpbmcgYSBzaW1wbGUgdmFsdWUuXG4gICAgLy9cbiAgICAvLyBIb3dldmVyLCB3ZSBoYXZlIHJlYWNoZWQgaGVyZSBiZWNhdXNlIGF0IHJ1bnRpbWUsIHRoZSBndWFyZCBjb25kaXRpb25hbFxuICAgIC8vIGhhdmUgZGV0ZWN0ZWQgdGhhdCB0aGlzIGNhbGxzaXRlIGlzIGluZGVlZCByZWZlcnJpbmcgdG8gYSBjb21wb25lbnRcbiAgICAvLyBkZWZpbml0aW9uIG9iamVjdC4gU2luY2UgdGhpcyBpcyBsaWtlbHkgZ29pbmcgdG8gYmUgdHJ1ZSBmb3Igb3RoZXJcbiAgICAvLyBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgY2FsbHNpdGUsIGl0IGlzIG5vdyBhcHByb3BpYXRlIHRvIGRlb3B0IGludG8gdGhlXG4gICAgLy8gZXhwYW5kZWQgdmVyc2lvbiB0aGF0IGhhbmRsZXMgYm90aCBjYXNlcy4gVGhlIGNvbXBpbGF0aW9uIHdvdWxkIGxvb2tcbiAgICAvLyBsaWtlIHRoaXM6XG4gICAgLy9cbiAgICAvLyAgICAgICAgICAgICAgIFB1dFZhbHVlKGV4cHJlc3Npb24pXG4gICAgLy8gICAgICAgICAgICAgICBUZXN0KGlzLWNvbXBvbmVudC1kZWZpbml0aW9uKVxuICAgIC8vICAgICAgICAgICAgICAgRW50ZXIoQkVHSU4sIEVORClcbiAgICAvLyAgIEJFR0lOOiAgICAgIE5vb3BcbiAgICAvLyAgICAgICAgICAgICAgIEp1bXBVbmxlc3MoVkFMVUUpXG4gICAgLy8gICAgICAgICAgICAgICBQdXREeW5hbWljQ29tcG9uZW50RGVmaW5pdGlvbk9wY29kZVxuICAgIC8vICAgICAgICAgICAgICAgT3BlbkNvbXBvbmVudFxuICAgIC8vICAgICAgICAgICAgICAgQ2xvc2VDb21wb25lbnRcbiAgICAvLyAgICAgICAgICAgICAgIEp1bXAoRU5EKVxuICAgIC8vICAgVkFMVUU6ICAgICAgTm9vcFxuICAgIC8vICAgICAgICAgICAgICAgT3B0aW1pemVkQXBwZW5kXG4gICAgLy8gICBFTkQ6ICAgICAgICBOb29wXG4gICAgLy8gICAgICAgICAgICAgICBFeGl0XG4gICAgLy9cbiAgICAvLyBLZWVwIGluIG1pbmQgdGhhdCBldmVuIGlmIHdlICpkb24ndCogcmVhY2ggaGVyZSBhdCBpbml0aWFsIHJlbmRlciB0aW1lLFxuICAgIC8vIGl0IGlzIHN0aWxsIHBvc3NpYmxlIChhbHRob3VnaCBxdWl0ZSByYXJlKSB0aGF0IHRoZSBzaW1wbGUgdmFsdWUgd2VcbiAgICAvLyBlbmNvdW50ZXIgZHVyaW5nIGluaXRpYWwgcmVuZGVyIGNvdWxkIGxhdGVyIGNoYW5nZSBpbnRvIGEgY29tcG9uZW50XG4gICAgLy8gZGVmaW5pdGlvbiBvYmplY3QgYXQgdXBkYXRlIHRpbWUuIFRoYXQgaXMgaGFuZGxlZCBieSB0aGUgXCJsYXp5IGRlb3B0XCJcbiAgICAvLyBjb2RlIG9uIHRoZSB1cGRhdGUgc2lkZSAoc2Nyb2xsIGRvd24gZm9yIHRoZSBuZXh0IGJpZyBibG9jayBvZiBjb21tZW50KS5cblxuICAgIGxldCBidWZmZXIgPSBuZXcgQ29tcGlsZUludG9MaXN0KGVudiwgbnVsbCk7XG4gICAgbGV0IGRzbCA9IG5ldyBPcGNvZGVCdWlsZGVyRFNMKGJ1ZmZlciwgdGhpcy5zeW1ib2xUYWJsZSwgZW52KTtcblxuICAgIGRzbC5wdXRWYWx1ZSh0aGlzLmV4cHJlc3Npb24pO1xuICAgIGRzbC50ZXN0KElzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZS5jcmVhdGUpO1xuXG4gICAgZHNsLnNpbXBsZUJsb2NrKChkc2wsIEJFR0lOLCBFTkQpID0+IHtcbiAgICAgIGRzbC5qdW1wVW5sZXNzKCdWQUxVRScpO1xuICAgICAgZHNsLnB1dER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uKCk7XG4gICAgICBkc2wub3BlbkNvbXBvbmVudChBcmdzLmVtcHR5KCkpO1xuICAgICAgZHNsLmNsb3NlQ29tcG9uZW50KCk7XG4gICAgICBkc2wuanVtcChFTkQpO1xuICAgICAgZHNsLmxhYmVsKCdWQUxVRScpO1xuICAgICAgZHNsLmFwcGVuZChuZXcgdGhpcy5BcHBlbmRPcGNvZGUoKSk7XG4gICAgfSk7XG5cbiAgICBsZXQgZGVvcHRlZCA9IHRoaXMuZGVvcHRlZCA9IGRzbC50b09wU2VxKCk7XG5cbiAgICAvLyBGcm9tIHRoaXMgcG9pbnQgb24sIHdlIGhhdmUgZXNzZW50aWFsbHkgcmVwbGFjZWQgb3Vyc2VsdmUgd2l0aCBhIG5ldyBzZXRcbiAgICAvLyBvZiBvcGNvZGVzLiBTaW5jZSB3ZSB3aWxsIGFsd2F5cyBiZSBleGVjdXRpbmcgdGhlIG5ldy9kZW9wdGVkIGNvZGUsIGl0J3NcbiAgICAvLyBhIGdvb2QgaWRlYSAoYXMgYSBwYXR0ZXJuKSB0byBudWxsIG91dCBhbnkgdW5uZWVkZWQgZmllbGRzIGhlcmUgdG8gYXZvaWRcbiAgICAvLyBob2xkaW5nIG9uIHRvIHVubmVlZGVkL3N0YWxlIG9iamVjdHM6XG5cbiAgICB0aGlzLmV4cHJlc3Npb24gPSBudWxsO1xuXG4gICAgcmV0dXJuIGRlb3B0ZWQ7XG4gIH1cblxuICB0b0pTT04oKTogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IHsgX2d1aWQ6IGd1aWQsIHR5cGUsIGRlb3B0ZWQgfSA9IHRoaXM7XG5cbiAgICBpZiAoZGVvcHRlZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZ3VpZCxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgZGVvcHRlZDogdHJ1ZSxcbiAgICAgICAgY2hpbGRyZW46IGRlb3B0ZWQudG9BcnJheSgpLm1hcChvcCA9PiBvcC50b0pTT04oKSlcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGd1aWQsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIGFyZ3M6IFt0aGlzLmV4cHJlc3Npb24udG9KU09OKCldXG4gICAgICB9O1xuICAgIH1cbiAgfVxufVxuXG5jbGFzcyBJc0NvbXBvbmVudERlZmluaXRpb25SZWZlcmVuY2UgZXh0ZW5kcyBDb25kaXRpb25hbFJlZmVyZW5jZSB7XG4gIHN0YXRpYyBjcmVhdGUoaW5uZXI6IFJlZmVyZW5jZTxPcGFxdWU+KTogSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlIHtcbiAgICByZXR1cm4gbmV3IElzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZShpbm5lcik7XG4gIH1cblxuICB0b0Jvb2wodmFsdWU6IE9wYXF1ZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc0NvbXBvbmVudERlZmluaXRpb24odmFsdWUpO1xuICB9XG59XG5cbmFic3RyYWN0IGNsYXNzIFVwZGF0ZU9wY29kZTxUIGV4dGVuZHMgSW5zZXJ0aW9uPiBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGNhY2hlOiBSZWZlcmVuY2VDYWNoZTxUPixcbiAgICBwcm90ZWN0ZWQgYm91bmRzOiBGcmFnbWVudCxcbiAgICBwcm90ZWN0ZWQgdXBzZXJ0OiBVcHNlcnRcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnRhZyA9IGNhY2hlLnRhZztcbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFQpOiBVcHNlcnQ7XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmNhY2hlLnJldmFsaWRhdGUoKTtcblxuICAgIGlmIChpc01vZGlmaWVkKHZhbHVlKSkge1xuICAgICAgbGV0IHsgYm91bmRzLCB1cHNlcnQgfSA9IHRoaXM7XG4gICAgICBsZXQgeyBkb20gfSA9IHZtO1xuXG4gICAgICBpZighdGhpcy51cHNlcnQudXBkYXRlKGRvbSwgdmFsdWUpKSB7XG4gICAgICAgIGxldCBjdXJzb3IgPSBuZXcgQ3Vyc29yKGJvdW5kcy5wYXJlbnRFbGVtZW50KCksIGNsZWFyKGJvdW5kcykpO1xuICAgICAgICB1cHNlcnQgPSB0aGlzLnVwc2VydCA9IHRoaXMuaW5zZXJ0KHZtLmVudi5nZXRBcHBlbmRPcGVyYXRpb25zKCksIGN1cnNvciwgdmFsdWUgYXMgVCk7XG4gICAgICB9XG5cbiAgICAgIGJvdW5kcy51cGRhdGUodXBzZXJ0LmJvdW5kcyk7XG4gICAgfVxuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIGxldCB7IF9ndWlkOiBndWlkLCB0eXBlLCBjYWNoZSB9ID0gdGhpcztcblxuICAgIHJldHVybiB7XG4gICAgICBndWlkLFxuICAgICAgdHlwZSxcbiAgICAgIGRldGFpbHM6IHsgbGFzdFZhbHVlOiBKU09OLnN0cmluZ2lmeShjYWNoZS5wZWVrKCkpIH1cbiAgICB9O1xuICB9XG59XG5cbmFic3RyYWN0IGNsYXNzIEd1YXJkZWRVcGRhdGVPcGNvZGU8VCBleHRlbmRzIEluc2VydGlvbj4gZXh0ZW5kcyBVcGRhdGVPcGNvZGU8VD4ge1xuICBwcml2YXRlIF90YWc6IFVwZGF0YWJsZVRhZztcbiAgcHJpdmF0ZSBkZW9wdGVkOiBUcnlPcGNvZGUgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPixcbiAgICBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8VD4sXG4gICAgYm91bmRzOiBGcmFnbWVudCxcbiAgICB1cHNlcnQ6IFVwc2VydCxcbiAgICBwcml2YXRlIGFwcGVuZE9wY29kZTogR3VhcmRlZEFwcGVuZE9wY29kZTxUPixcbiAgICBwcml2YXRlIHN0YXRlOiBWTVN0YXRlXG4gICkge1xuICAgIHN1cGVyKGNhY2hlLCBib3VuZHMsIHVwc2VydCk7XG4gICAgdGhpcy50YWcgPSB0aGlzLl90YWcgPSBuZXcgVXBkYXRhYmxlVGFnKHRoaXMudGFnKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgaWYgKHRoaXMuZGVvcHRlZCkge1xuICAgICAgdm0uZXZhbHVhdGVPcGNvZGUodGhpcy5kZW9wdGVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlzQ29tcG9uZW50RGVmaW5pdGlvbih0aGlzLnJlZmVyZW5jZS52YWx1ZSgpKSkge1xuICAgICAgICB0aGlzLmxhenlEZW9wdCh2bSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdXBlci5ldmFsdWF0ZSh2bSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsYXp5RGVvcHQodm06IFVwZGF0aW5nVk0pIHtcbiAgICAvLyBEdXJpZ24gaW5pdGlhbCByZW5kZXIsIHdlIGtub3cgdGhhdCB0aGUgcmVmZXJlbmNlIGRvZXMgbm90IGNvbnRhaW4gYVxuICAgIC8vIGNvbXBvbmVudCBkZWZpbml0aW9uLCBzbyB3ZSBvcHRpbWlzdGljYWxseSBhc3N1bWVkIHRoYXQgdGhpcyBhcHBlbmRcbiAgICAvLyBpcyBqdXN0IGEgbm9ybWFsIGFwcGVuZC4gSG93ZXZlciwgYXQgdXBkYXRlIHRpbWUsIHdlIGRpc2NvdmVyZWQgdGhhdFxuICAgIC8vIHRoZSByZWZlcmVuY2UgaGFzIHN3aXRjaGVkIGludG8gY29udGFpbmluZyBhIGNvbXBvbmVudCBkZWZpbml0aW9uLCBzb1xuICAgIC8vIHdlIG5lZWQgdG8gZG8gYSBcImxhenkgZGVvcHRcIiwgc2ltdWxhdGluZyB3aGF0IHdvdWxkIGhhdmUgaGFwcGVuZWQgaWZcbiAgICAvLyB3ZSBoYWQgZGVjaWRlZCB0byBwZXJmb3JtIHRoZSBkZW9wdCBpbiB0aGUgZmlyc3QgcGxhY2UgZHVyaW5nIGluaXRpYWxcbiAgICAvLyByZW5kZXIuXG4gICAgLy9cbiAgICAvLyBNb3JlIGNvbmNyZXRlbHksIHdlIHdvdWxkIGhhdmUgZXhwYW5kZWQgdGhlIGN1cmx5IGludG8gYSBpZi9lbHNlLCBhbmRcbiAgICAvLyBiYXNlZCBvbiB3aGV0aGVyIHRoZSB2YWx1ZSBpcyBhIGNvbXBvbmVudCBkZWZpbml0aW9uIG9yIG5vdCwgd2Ugd291bGRcbiAgICAvLyBoYXZlIGVudGVyZWQgZWl0aGVyIHRoZSBkeW5hbWljIGNvbXBvbmVudCBicmFuY2ggb3IgdGhlIHNpbXBsZSB2YWx1ZVxuICAgIC8vIGJyYW5jaC5cbiAgICAvL1xuICAgIC8vIFNpbmNlIHdlIHJlbmRlcmVkIGEgc2ltcGxlIHZhbHVlIGR1cmluZyBpbml0aWFsIHJlbmRlciAoYW5kIGFsbCB0aGVcbiAgICAvLyB1cGRhdGVzIHVwIHVudGlsIHRoaXMgcG9pbnQpLCB3ZSBuZWVkIHRvIHByZXRlbmQgdGhhdCB0aGUgcmVzdWx0IGlzXG4gICAgLy8gcHJvZHVjZWQgYnkgdGhlIFwiVkFMVUVcIiBicmFuY2ggb2YgdGhlIGRlb3B0ZWQgYXBwZW5kIG9wY29kZTpcbiAgICAvL1xuICAgIC8vICAgVHJ5KEJFR0lOLCBFTkQpXG4gICAgLy8gICAgIEFzc2VydChJc0NvbXBvbmVudERlZmluaXRpb24sIGV4cGVjdGVkPWZhbHNlKVxuICAgIC8vICAgICBPcHRpbWl6ZWRVcGRhdGVcbiAgICAvL1xuICAgIC8vIEluIHRoaXMgY2FzZSwgYmVjYXVzZSB0aGUgcmVmZXJlbmNlIGhhcyBzd2l0Y2hlZCBmcm9tIGJlaW5nIGEgc2ltcGxlXG4gICAgLy8gdmFsdWUgaW50byBhIGNvbXBvbmVudCBkZWZpbml0aW9uLCB3aGF0IHdvdWxkIGhhdmUgaGFwcGVuZWQgaXMgdGhhdFxuICAgIC8vIHRoZSBhc3NlcnQgd291bGQgdGhyb3csIGNhdXNpbmcgdGhlIFRyeSBvcGNvZGUgdG8gdGVhcmRvd24gdGhlIGJvdW5kc1xuICAgIC8vIGFuZCByZXJ1biB0aGUgb3JpZ2luYWwgYXBwZW5kIG9wY29kZS5cbiAgICAvL1xuICAgIC8vIFNpbmNlIHRoZSBUcnkgb3Bjb2RlIHdvdWxkIGhhdmUgbnVrZWQgdGhlIHVwZGF0aW5nIG9wY29kZXMgYW55d2F5LCB3ZVxuICAgIC8vIHdvdWxkbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgc2ltdWxhdGluZyB0aG9zZS4gQWxsIHdlIGhhdmUgdG8gZG8gaXMgdG9cbiAgICAvLyBleGVjdXRlIHRoZSBUcnkgb3Bjb2RlIGFuZCBpbW1lZGlhdGVseSB0aHJvdy5cblxuICAgIGxldCB7IGJvdW5kcywgYXBwZW5kT3Bjb2RlLCBzdGF0ZSB9ID0gdGhpcztcblxuICAgIGxldCBhcHBlbmRPcHMgPSBhcHBlbmRPcGNvZGUuZGVvcHQodm0uZW52KTtcbiAgICBsZXQgZW50ZXIgICAgID0gYXBwZW5kT3BzLmhlYWQoKS5uZXh0Lm5leHQgYXMgRW50ZXJPcGNvZGU7XG4gICAgbGV0IG9wcyAgICAgICA9IGVudGVyLnNsaWNlO1xuXG4gICAgbGV0IHRyYWNrZXIgPSBuZXcgVXBkYXRhYmxlQmxvY2tUcmFja2VyKGJvdW5kcy5wYXJlbnRFbGVtZW50KCkpO1xuICAgIHRyYWNrZXIubmV3Qm91bmRzKHRoaXMuYm91bmRzKTtcblxuICAgIGxldCBjaGlsZHJlbiA9IG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpO1xuXG4gICAgc3RhdGUuZnJhbWVbJ2NvbmRpdGlvbiddID0gSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlLmNyZWF0ZShzdGF0ZS5mcmFtZVsnb3BlcmFuZCddKTtcblxuICAgIGxldCBkZW9wdGVkID0gdGhpcy5kZW9wdGVkID0gbmV3IFRyeU9wY29kZShvcHMsIHN0YXRlLCB0cmFja2VyLCBjaGlsZHJlbik7XG5cbiAgICB0aGlzLl90YWcudXBkYXRlKGRlb3B0ZWQudGFnKTtcblxuICAgIHZtLmV2YWx1YXRlT3Bjb2RlKGRlb3B0ZWQpO1xuICAgIHZtLnRocm93KCk7XG5cbiAgICAvLyBGcm9tIHRoaXMgcG9pbnQgb24sIHdlIGhhdmUgZXNzZW50aWFsbHkgcmVwbGFjZWQgb3Vyc2VsdmUgd2l0aCBhIG5ld1xuICAgIC8vIG9wY29kZS4gU2luY2Ugd2Ugd2lsbCBhbHdheXMgYmUgZXhlY3V0aW5nIHRoZSBuZXcvZGVvcHRlZCBjb2RlLCBpdCdzIGFcbiAgICAvLyBnb29kIGlkZWEgKGFzIGEgcGF0dGVybikgdG8gbnVsbCBvdXQgYW55IHVubmVlZGVkIGZpZWxkcyBoZXJlIHRvIGF2b2lkXG4gICAgLy8gaG9sZGluZyBvbiB0byB1bm5lZWRlZC9zdGFsZSBvYmplY3RzOlxuXG4gICAgdGhpcy5fdGFnICAgICAgICAgPSBudWxsO1xuICAgIHRoaXMucmVmZXJlbmNlICAgID0gbnVsbDtcbiAgICB0aGlzLmNhY2hlICAgICAgICA9IG51bGw7XG4gICAgdGhpcy5ib3VuZHMgICAgICAgPSBudWxsO1xuICAgIHRoaXMudXBzZXJ0ICAgICAgID0gbnVsbDtcbiAgICB0aGlzLmFwcGVuZE9wY29kZSA9IG51bGw7XG4gICAgdGhpcy5zdGF0ZSAgICAgICAgPSBudWxsO1xuICB9XG5cbiAgdG9KU09OKCk6IE9wY29kZUpTT04ge1xuICAgIGxldCB7IF9ndWlkOiBndWlkLCB0eXBlLCBkZW9wdGVkIH0gPSB0aGlzO1xuXG4gICAgaWYgKGRlb3B0ZWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGd1aWQsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIGRlb3B0ZWQ6IHRydWUsXG4gICAgICAgIGNoaWxkcmVuOiBbZGVvcHRlZC50b0pTT04oKV1cbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBzdXBlci50b0pTT04oKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9wdGltaXplZENhdXRpb3VzQXBwZW5kT3Bjb2RlIGV4dGVuZHMgQXBwZW5kT3Bjb2RlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnb3B0aW1pemVkLWNhdXRpb3VzLWFwcGVuZCc7XG5cbiAgcHJvdGVjdGVkIG5vcm1hbGl6ZShyZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+KTogUmVmZXJlbmNlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gICAgcmV0dXJuIG1hcChyZWZlcmVuY2UsIG5vcm1hbGl6ZVZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IENhdXRpb3VzSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gY2F1dGlvdXNJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVXaXRoKHZtOiBWTSwgcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPENhdXRpb3VzSW5zZXJ0aW9uPiwgYm91bmRzOiBGcmFnbWVudCwgdXBzZXJ0OiBVcHNlcnQpOiBVcGRhdGluZ09wY29kZSB7XG4gICAgcmV0dXJuIG5ldyBPcHRpbWl6ZWRDYXV0aW91c1VwZGF0ZU9wY29kZShjYWNoZSwgYm91bmRzLCB1cHNlcnQpO1xuICB9XG59XG5cbmNsYXNzIE9wdGltaXplZENhdXRpb3VzVXBkYXRlT3Bjb2RlIGV4dGVuZHMgVXBkYXRlT3Bjb2RlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnb3B0aW1pemVkLWNhdXRpb3VzLXVwZGF0ZSc7XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogQ2F1dGlvdXNJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHdWFyZGVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUgZXh0ZW5kcyBHdWFyZGVkQXBwZW5kT3Bjb2RlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnZ3VhcmRlZC1jYXV0aW91cy1hcHBlbmQnO1xuXG4gIHByb3RlY3RlZCBBcHBlbmRPcGNvZGUgPSBPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZTtcblxuICBwcm90ZWN0ZWQgbm9ybWFsaXplKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8Q2F1dGlvdXNJbnNlcnRpb24+IHtcbiAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogQ2F1dGlvdXNJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZVdpdGgodm06IFZNLCByZWZlcmVuY2U6IFJlZmVyZW5jZTxPcGFxdWU+LCBjYWNoZTogUmVmZXJlbmNlQ2FjaGU8Q2F1dGlvdXNJbnNlcnRpb24+LCBib3VuZHM6IEZyYWdtZW50LCB1cHNlcnQ6IFVwc2VydCk6IFVwZGF0aW5nT3Bjb2RlIHtcbiAgICByZXR1cm4gbmV3IEd1YXJkZWRDYXV0aW91c1VwZGF0ZU9wY29kZShyZWZlcmVuY2UsIGNhY2hlLCBib3VuZHMsIHVwc2VydCwgdGhpcywgdm0uY2FwdHVyZSgpKTtcbiAgfVxufVxuXG5jbGFzcyBHdWFyZGVkQ2F1dGlvdXNVcGRhdGVPcGNvZGUgZXh0ZW5kcyBHdWFyZGVkVXBkYXRlT3Bjb2RlPENhdXRpb3VzSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnZ3VhcmRlZC1jYXV0aW91cy11cGRhdGUnO1xuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IENhdXRpb3VzSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gY2F1dGlvdXNJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUgZXh0ZW5kcyBBcHBlbmRPcGNvZGU8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgdHlwZSA9ICdvcHRpbWl6ZWQtdHJ1c3RpbmctYXBwZW5kJztcblxuICBwcm90ZWN0ZWQgbm9ybWFsaXplKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVHJ1c3RlZFZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFRydXN0aW5nSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVXaXRoKHZtOiBWTSwgcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPFRydXN0aW5nSW5zZXJ0aW9uPiwgYm91bmRzOiBGcmFnbWVudCwgdXBzZXJ0OiBVcHNlcnQpOiBVcGRhdGluZ09wY29kZSB7XG4gICAgcmV0dXJuIG5ldyBPcHRpbWl6ZWRUcnVzdGluZ1VwZGF0ZU9wY29kZShjYWNoZSwgYm91bmRzLCB1cHNlcnQpO1xuICB9XG59XG5cbmNsYXNzIE9wdGltaXplZFRydXN0aW5nVXBkYXRlT3Bjb2RlIGV4dGVuZHMgVXBkYXRlT3Bjb2RlPFRydXN0aW5nSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnb3B0aW1pemVkLXRydXN0aW5nLXVwZGF0ZSc7XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVHJ1c3RpbmdJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiB0cnVzdGluZ0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHdWFyZGVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUgZXh0ZW5kcyBHdWFyZGVkQXBwZW5kT3Bjb2RlPFRydXN0aW5nSW5zZXJ0aW9uPiB7XG4gIHR5cGUgPSAnZ3VhcmRlZC10cnVzdGluZy1hcHBlbmQnO1xuXG4gIHByb3RlY3RlZCBBcHBlbmRPcGNvZGUgPSBPcHRpbWl6ZWRUcnVzdGluZ0FwcGVuZE9wY29kZTtcblxuICBwcm90ZWN0ZWQgbm9ybWFsaXplKHJlZmVyZW5jZTogUmVmZXJlbmNlPE9wYXF1ZT4pOiBSZWZlcmVuY2U8VHJ1c3RpbmdJbnNlcnRpb24+IHtcbiAgICByZXR1cm4gbWFwKHJlZmVyZW5jZSwgbm9ybWFsaXplVHJ1c3RlZFZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnNlcnQoZG9tOiBET01UcmVlQ29uc3RydWN0aW9uLCBjdXJzb3I6IEN1cnNvciwgdmFsdWU6IFRydXN0aW5nSW5zZXJ0aW9uKTogVXBzZXJ0IHtcbiAgICByZXR1cm4gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB1cGRhdGVXaXRoKHZtOiBWTSwgcmVmZXJlbmNlOiBSZWZlcmVuY2U8T3BhcXVlPiwgY2FjaGU6IFJlZmVyZW5jZUNhY2hlPFRydXN0aW5nSW5zZXJ0aW9uPiwgYm91bmRzOiBGcmFnbWVudCwgdXBzZXJ0OiBVcHNlcnQpOiBVcGRhdGluZ09wY29kZSB7XG4gICAgcmV0dXJuIG5ldyBHdWFyZGVkVHJ1c3RpbmdVcGRhdGVPcGNvZGUocmVmZXJlbmNlLCBjYWNoZSwgYm91bmRzLCB1cHNlcnQsIHRoaXMsIHZtLmNhcHR1cmUoKSk7XG4gIH1cbn1cblxuY2xhc3MgR3VhcmRlZFRydXN0aW5nVXBkYXRlT3Bjb2RlIGV4dGVuZHMgR3VhcmRlZFVwZGF0ZU9wY29kZTxUcnVzdGluZ0luc2VydGlvbj4ge1xuICB0eXBlID0gJ3RydXN0aW5nLXVwZGF0ZSc7XG5cbiAgcHJvdGVjdGVkIGluc2VydChkb206IERPTVRyZWVDb25zdHJ1Y3Rpb24sIGN1cnNvcjogQ3Vyc29yLCB2YWx1ZTogVHJ1c3RpbmdJbnNlcnRpb24pOiBVcHNlcnQge1xuICAgIHJldHVybiB0cnVzdGluZ0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICB9XG59XG4iXX0=
16462
16536
  enifed('glimmer-runtime/lib/compiled/opcodes/dom', ['exports', 'glimmer-runtime/lib/opcodes', 'glimmer-util', 'glimmer-reference', 'glimmer-runtime/lib/references', 'glimmer-runtime/lib/compiled/expressions/value', 'glimmer-runtime/lib/compiled/opcodes/vm'], function (exports, _glimmerRuntimeLibOpcodes, _glimmerUtil, _glimmerReference, _glimmerRuntimeLibReferences, _glimmerRuntimeLibCompiledExpressionsValue, _glimmerRuntimeLibCompiledOpcodesVm) {
16463
16537
  'use strict';
16464
16538
 
@@ -18523,11 +18597,11 @@ enifed('glimmer-runtime/lib/compiler', ['exports', 'glimmer-util', 'glimmer-runt
18523
18597
  var shadow = arguments.length <= 5 || arguments[5] === undefined ? _glimmerRuntimeLibUtils.EMPTY_ARRAY : arguments[5];
18524
18598
 
18525
18599
  this.dsl.unit({ templates: templates }, function (dsl) {
18526
- dsl.enter('BEGIN', 'END');
18527
- dsl.label('BEGIN');
18528
18600
  dsl.putArgs(definitionArgs);
18529
18601
  dsl.putValue(_glimmerRuntimeLibCompiledExpressionsFunction.default(definition));
18530
18602
  dsl.test('simple');
18603
+ dsl.enter('BEGIN', 'END');
18604
+ dsl.label('BEGIN');
18531
18605
  dsl.jumpUnless('END');
18532
18606
  dsl.putDynamicComponentDefinition();
18533
18607
  dsl.openComponent(args, shadow);
@@ -18592,7 +18666,7 @@ enifed('glimmer-runtime/lib/compiler', ['exports', 'glimmer-util', 'glimmer-runt
18592
18666
 
18593
18667
  exports.CompileIntoList = CompileIntoList;
18594
18668
  });
18595
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7UUFrQ0EsUUFBQTtBQUlFLGlCQUpGLFFBQUEsQ0FJd0IsS0FBWSxFQUFTLEdBQWdCLEVBQUE7QUFBckMsZ0JBQUEsQ0FBQSxLQUFLLEdBQUwsS0FBSyxDQUFPO0FBQVMsZ0JBQUEsQ0FBQSxHQUFHLEdBQUgsR0FBRyxDQUFhO0FBQ3pELGdCQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDcEMsZ0JBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztTQUN0Qzs7QUFQSCxnQkFBQSxXQVNZLGdCQUFnQixHQUFBLDBCQUFDLFNBQTBCLEVBQUUsR0FBcUIsRUFBQTtBQUMxRSxnQkFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQzFGOztlQVhILFFBQUE7OztBQWNBLGFBQUEsZ0JBQUEsQ0FBMEIsR0FBZ0IsRUFBRSxTQUEwQixFQUFFLEdBQXFCLEVBQUUsTUFBYyxFQUFBO0FBQzNHLFdBQUcsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDcEY7c0JBRWMsUUFBUTs7UUFFdkIsa0JBQUE7OEJBQUEsa0JBQUE7O0FBSUUsaUJBSkYsa0JBQUEsQ0FJYyxRQUFvQixFQUFFLEdBQWdCLEVBQUE7QUFDaEQsaUNBQU0sUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCLGdCQUFJLElBQUksR0FBRyxJQUFJLGVBQWUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxD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LENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3hDOztBQTVCSCx1QkFBQSxXQThCRSxjQUFjLEdBQUEsd0JBQUMsSUFBWSxFQUFBO0FBQ3pCLG1CQUFPLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssUUFBUSxDQUFDO1NBQzVEOztBQWhDSCx1QkFBQSxXQWtDRSxvQkFBb0IsR0FBQSxnQ0FBQTtBQUNsQixtQkFBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQzFDOztBQXBDSCx1QkFBQSxXQXNDRSxvQkFBb0IsR0FBQSxnQ0FBQTtBQUNsQixtQkFBTyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLEtBQUssUUFBUSxDQUFDO1NBQzlEOztBQXhDSCx1QkFBQSxXQTBDRSxPQUFPLEdBQUEsbUJBQUE7QUFDTCxtQkFBTyxJQUFJLENBQUM7U0FDYjs7ZUE1Q0gsZUFBQTtvQkFoYXdCLFVBQVUiLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGFxdWUsIFNsaWNlLCBMaW5rZWRMaXN0IH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7IE9wU2VxLCBPcGNvZGUgfSBmcm9tICcuL29wY29kZXMnO1xuXG5pbXBvcnQgeyBFTVBUWV9BUlJBWSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0ICogYXMgU3ludGF4IGZyb20gJy4vc3ludGF4L2NvcmUnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuL2Vudmlyb25tZW50JztcbmltcG9ydCBTeW1ib2xUYWJsZSBmcm9tICcuL3N5bWJvbC10YWJsZSc7XG5pbXBvcnQgeyBCbG9jaywgQ29tcGlsZWRCbG9jaywgRW50cnlQb2ludCwgSW5saW5lQmxvY2ssIExheW91dCB9IGZyb20gJy4vY29tcGlsZWQvYmxvY2tzJztcblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50QnVpbGRlciBhcyBJQ29tcG9uZW50QnVpbGRlcixcbiAgRHluYW1pY0RlZmluaXRpb24sXG4gIFN0YXRpY0RlZmluaXRpb25cbn0gZnJvbSAnLi9vcGNvZGUtYnVpbGRlcic7XG5cbmltcG9ydCB7XG4gIFN0YXRlbWVudCBhcyBTdGF0ZW1lbnRTeW50YXgsXG4gIEF0dHJpYnV0ZSBhcyBBdHRyaWJ1dGVTeW50YXgsXG4gIFN0YXRlbWVudENvbXBpbGF0aW9uQnVmZmVyLFxufSBmcm9tICcuL3N5bnRheCc7XG5cbmltcG9ydCB7XG4gIEV4cHJlc3Npb25cbn0gZnJvbSAnLi9zeW50YXgnO1xuXG5pbXBvcnQge1xuICBGdW5jdGlvbkV4cHJlc3Npb24sXG4gIGRlZmF1bHQgYXMgbWFrZUZ1bmN0aW9uRXhwcmVzc2lvblxufSBmcm9tICcuL2NvbXBpbGVkL2V4cHJlc3Npb25zL2Z1bmN0aW9uJztcblxuaW1wb3J0IE9wY29kZUJ1aWxkZXJEU0wgZnJvbSAnLi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXInO1xuXG5pbXBvcnQgKiBhcyBDb21wb25lbnQgZnJvbSAnLi9jb21wb25lbnQvaW50ZXJmYWNlcyc7XG5cbmFic3RyYWN0IGNsYXNzIENvbXBpbGVyIHtcbiAgcHJvdGVjdGVkIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZTtcbiAgcHJvdGVjdGVkIGN1cnJlbnQ6IFN0YXRlbWVudFN5bnRheDtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgYmxvY2s6IEJsb2NrLCBwdWJsaWMgZW52OiBFbnZpcm9ubWVudCkge1xuICAgIHRoaXMuY3VycmVudCA9IGJsb2NrLnByb2dyYW0uaGVhZCgpO1xuICAgIHRoaXMuc3ltYm9sVGFibGUgPSBibG9jay5zeW1ib2xUYWJsZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb21waWxlU3RhdGVtZW50KHN0YXRlbWVudDogU3RhdGVtZW50U3ludGF4LCBvcHM6IE9wY29kZUJ1aWxkZXJEU0wpIHtcbiAgICB0aGlzLmVudi5zdGF0ZW1lbnQoc3RhdGVtZW50LCB0aGlzLnN5bWJvbFRhYmxlKS5jb21waWxlKG9wcywgdGhpcy5lbnYsIHRoaXMuc3ltYm9sVGFibGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbXBpbGVTdGF0ZW1lbnQoZW52OiBFbnZpcm9ubWVudCwgc3RhdGVtZW50OiBTdGF0ZW1lbnRTeW50YXgsIG9wczogT3Bjb2RlQnVpbGRlckRTTCwgbGF5b3V0OiBMYXlvdXQpIHtcbiAgZW52LnN0YXRlbWVudChzdGF0ZW1lbnQsIGxheW91dC5zeW1ib2xUYWJsZSkuY29tcGlsZShvcHMsIGVudiwgbGF5b3V0LnN5bWJvbFRhYmxlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29tcGlsZXI7XG5cbmV4cG9ydCBjbGFzcyBFbnRyeVBvaW50Q29tcGlsZXIgZXh0ZW5kcyBDb21waWxlciB7XG4gIHByaXZhdGUgb3BzOiBPcGNvZGVCdWlsZGVyRFNMO1xuICBwcm90ZWN0ZWQgYmxvY2s6IEVudHJ5UG9pbnQ7XG5cbiAgY29uc3RydWN0b3IodGVtcGxhdGU6IEVudHJ5UG9pbnQsIGVudjogRW52aXJvbm1lbnQpIHtcbiAgICBzdXBlcih0ZW1wbGF0ZSwgZW52KTtcbiAgICBsZXQgbGlzdCA9IG5ldyBDb21waWxlSW50b0xpc3QoZW52LCB0ZW1wbGF0ZS5zeW1ib2xUYWJsZSk7XG4gICAgdGhpcy5vcHMgPSBuZXcgT3Bjb2RlQnVpbGRlckRTTChsaXN0LCB0ZW1wbGF0ZS5zeW1ib2xUYWJsZSwgZW52KTtcbiAgfVxuXG4gIGNvbXBpbGUoKTogT3BTZXEge1xuICAgIGxldCB7IGJsb2NrLCBvcHMgfSA9IHRoaXM7XG4gICAgbGV0IHsgcHJvZ3JhbSB9ID0gYmxvY2s7XG5cbiAgICBsZXQgY3VycmVudCA9IHByb2dyYW0uaGVhZCgpO1xuXG4gICAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAgIGxldCBuZXh0ID0gcHJvZ3JhbS5uZXh0Tm9kZShjdXJyZW50KTtcbiAgICAgIHRoaXMuY29tcGlsZVN0YXRlbWVudChjdXJyZW50LCBvcHMpO1xuICAgICAgY3VycmVudCA9IG5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wcy50b09wU2VxKCk7XG4gIH1cblxuICBhcHBlbmQob3A6IE9wY29kZSkge1xuICAgIHRoaXMub3BzLmFwcGVuZChvcCk7XG4gIH1cblxuICBnZXRMb2NhbFN5bWJvbChuYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN5bWJvbFRhYmxlLmdldExvY2FsKG5hbWUpO1xuICB9XG5cbiAgZ2V0TmFtZWRTeW1ib2wobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zeW1ib2xUYWJsZS5nZXROYW1lZChuYW1lKTtcbiAgfVxuXG4gIGdldFlpZWxkU3ltYm9sKG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3ltYm9sVGFibGUuZ2V0WWllbGQobmFtZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIElubGluZUJsb2NrQ29tcGlsZXIgZXh0ZW5kcyBDb21waWxlciB7XG4gIHByaXZhdGUgb3BzOiBPcGNvZGVCdWlsZGVyRFNMO1xuICBwcm90ZWN0ZWQgY3VycmVudDogU3RhdGVtZW50U3ludGF4O1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBibG9jazogSW5saW5lQmxvY2ssIGVudjogRW52aXJvbm1lbnQpIHtcbiAgICBzdXBlcihibG9jaywgZW52KTtcbiAgICBsZXQgbGlzdCA9IG5ldyBDb21waWxlSW50b0xpc3QoZW52LCBibG9jay5zeW1ib2xUYWJsZSk7XG4gICAgdGhpcy5vcHMgPSBuZXcgT3Bjb2RlQnVpbGRlckRTTChsaXN0LCBibG9jay5zeW1ib2xUYWJsZSwgZW52KTtcbiAgfVxuXG4gIGNvbXBpbGUoKTogT3BTZXEge1xuICAgIGxldCB7IGJsb2NrLCBvcHMgfSA9IHRoaXM7XG4gICAgbGV0IHsgcHJvZ3JhbSB9ID0gYmxvY2s7XG5cbiAgICBsZXQgaGFzUG9zaXRpb25hbFBhcmFtZXRlcnMgPSBibG9jay5oYXNQb3NpdGlvbmFsUGFyYW1ldGVycygpO1xuXG4gICAgaWYgKGhhc1Bvc2l0aW9uYWxQYXJhbWV0ZXJzKSB7XG4gICAgICBvcHMucHVzaENoaWxkU2NvcGUoKTtcbiAgICAgIG9wcy5iaW5kUG9zaXRpb25hbEFyZ3NGb3JCbG9jayhibG9jayk7XG4gICAgfVxuXG4gICAgbGV0IGN1cnJlbnQgPSBwcm9ncmFtLmhlYWQoKTtcblxuICAgIHdoaWxlIChjdXJyZW50KSB7XG4gICAgICBsZXQgbmV4dCA9IHByb2dyYW0ubmV4dE5vZGUoY3VycmVudCk7XG4gICAgICB0aGlzLmNvbXBpbGVTdGF0ZW1lbnQoY3VycmVudCwgb3BzKTtcbiAgICAgIGN1cnJlbnQgPSBuZXh0O1xuICAgIH1cblxuICAgIGlmIChoYXNQb3NpdGlvbmFsUGFyYW1ldGVycykge1xuICAgICAgb3BzLnBvcFNjb3BlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wcy50b09wU2VxKCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRQYXJ0cyB7XG4gIHRhZzogc3RyaW5nO1xuICBhdHRyczogU2xpY2U8QXR0cmlidXRlU3ludGF4PE9wYXF1ZT4+O1xuICBib2R5OiBTbGljZTxTdGF0ZW1lbnRTeW50YXg+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGVkQ29tcG9uZW50UGFydHMge1xuICB0YWc6IHN0cmluZztcbiAgcHJlYW1ibGU6IENvbXBpbGVJbnRvTGlzdDtcbiAgbWFpbjogQ29tcGlsZUludG9MaXN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGFibGUge1xuICBjb21waWxlKGJ1aWxkZXI6IENvbXBvbmVudC5Db21wb25lbnRMYXlvdXRCdWlsZGVyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGVMYXlvdXQoY29tcGlsYWJsZTogQ29tcGlsYWJsZSwgZW52OiBFbnZpcm9ubWVudCk6IENvbXBpbGVkQmxvY2sge1xuICBsZXQgYnVpbGRlciA9IG5ldyBDb21wb25lbnRMYXlvdXRCdWlsZGVyKGVudik7XG5cbiAgY29tcGlsYWJsZS5jb21waWxlKGJ1aWxkZXIpO1xuXG4gIHJldHVybiBidWlsZGVyLmNvbXBpbGUoKTtcbn1cblxuY2xhc3MgQ29tcG9uZW50TGF5b3V0QnVpbGRlciBpbXBsZW1lbnRzIENvbXBvbmVudC5Db21wb25lbnRMYXlvdXRCdWlsZGVyIHtcbiAgcHJpdmF0ZSBpbm5lcjogRW1wdHlCdWlsZGVyIHwgV3JhcHBlZEJ1aWxkZXIgfCBVbndyYXBwZWRCdWlsZGVyO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbnY6IEVudmlyb25tZW50KSB7fVxuXG4gIGVtcHR5KCkge1xuICAgIHRoaXMuaW5uZXIgPSBuZXcgRW1wdHlCdWlsZGVyKHRoaXMuZW52KTtcbiAgfVxuXG4gIHdyYXBMYXlvdXQobGF5b3V0OiBMYXlvdXQpIHtcbiAgICB0aGlzLmlubmVyID0gbmV3IFdyYXBwZWRCdWlsZGVyKHRoaXMuZW52LCBsYXlvdXQpO1xuICB9XG5cbiAgZnJvbUxheW91dChsYXlvdXQ6IExheW91dCkge1xuICAgIHRoaXMuaW5uZXIgPSBuZXcgVW53cmFwcGVkQnVpbGRlcih0aGlzLmVudiwgbGF5b3V0KTtcbiAgfVxuXG4gIGNvbXBpbGUoKTogQ29tcGlsZWRCbG9jayB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIuY29tcGlsZSgpO1xuICB9XG5cbiAgZ2V0IHRhZygpOiBDb21wb25lbnQuQ29tcG9uZW50VGFnQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIudGFnO1xuICB9XG5cbiAgZ2V0IGF0dHJzKCk6IENvbXBvbmVudC5Db21wb25lbnRBdHRyc0J1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmlubmVyLmF0dHJzO1xuICB9XG59XG5cbmNsYXNzIEVtcHR5QnVpbGRlciB7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGVudjogRW52aXJvbm1lbnQpIHt9XG5cbiAgZ2V0IHRhZygpOiBDb21wb25lbnQuQ29tcG9uZW50VGFnQnVpbGRlciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3BlJyk7XG4gIH1cblxuICBnZXQgYXR0cnMoKTogQ29tcG9uZW50LkNvbXBvbmVudEF0dHJzQnVpbGRlciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3BlJyk7XG4gIH1cblxuICBjb21waWxlKCk6IENvbXBpbGVkQmxvY2sge1xuICAgIGxldCB7IGVudiB9ID0gdGhpcztcblxuICAgIGxldCBsaXN0ID0gbmV3IENvbXBpbGVJbnRvTGlzdChlbnYsIG51bGwpO1xuICAgIHJldHVybiBuZXcgQ29tcGlsZWRCbG9jayhsaXN0LCAwKTtcbiAgfVxufVxuXG5jbGFzcyBXcmFwcGVkQnVpbGRlciB7XG4gIHB1YmxpYyB0YWcgPSBuZXcgQ29tcG9uZW50VGFnQnVpbGRlcigpO1xuICBwdWJsaWMgYXR0cnMgPSBuZXcgQ29tcG9uZW50QXR0cnNCdWlsZGVyKCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGVudjogRW52aXJvbm1lbnQsIHByaXZhdGUgbGF5b3V0OiBMYXlvdXQpIHt9XG5cbiAgY29tcGlsZSgpOiBDb21waWxlZEJsb2NrIHtcbiAgICAvLz09PT09PT09RFlOQU1JQ1xuICAgIC8vICAgICAgICBQdXRWYWx1ZShUYWdFeHByKVxuICAgIC8vICAgICAgICBUZXN0XG4gICAgLy8gICAgICAgIEp1bXBVbmxlc3MoQk9EWSlcbiAgICAvLyAgICAgICAgT3BlbkR5bmFtaWNQcmltaXRpdmVFbGVtZW50XG4gICAgLy8gICAgICAgIERpZENyZWF0ZUVsZW1lbnRcbiAgICAvLyAgICAgICAgLi4uYXR0ciBzdGF0ZW1lbnRzLi4uXG4gICAgLy8gICAgICAgIEZsdXNoRWxlbWVudFxuICAgIC8vIEJPRFk6ICBOb29wXG4gICAgLy8gICAgICAgIC4uLmJvZHkgc3RhdGVtZW50cy4uLlxuICAgIC8vICAgICAgICBQdXRWYWx1ZShUYWdFeHByKVxuICAgIC8vICAgICAgICBUZXN0XG4gICAgLy8gICAgICAgIEp1bXBVbmxlc3MoRU5EKVxuICAgIC8vICAgICAgICBDbG9zZUVsZW1lbnRcbiAgICAvLyBFTkQ6ICAgTm9vcFxuICAgIC8vICAgICAgICBEaWRSZW5kZXJMYXlvdXRcbiAgICAvLyAgICAgICAgRXhpdFxuICAgIC8vXG4gICAgLy89PT09PT09PVNUQVRJQ1xuICAgIC8vICAgICAgICBPcGVuUHJpbWl0aXZlRWxlbWVudE9wY29kZVxuICAgIC8vICAgICAgICBEaWRDcmVhdGVFbGVtZW50XG4gICAgLy8gICAgICAgIC4uLmF0dHIgc3RhdGVtZW50cy4uLlxuICAgIC8vICAgICAgICBGbHVzaEVsZW1lbnRcbiAgICAvLyAgICAgICAgLi4uYm9keSBzdGF0ZW1lbnRzLi4uXG4gICAgLy8gICAgICAgIENsb3NlRWxlbWVudFxuICAgIC8vICAgICAgICBEaWRSZW5kZXJMYXlvdXRcbiAgICAvLyAgICAgICAgRXhpdFxuXG4gICAgbGV0IHsgZW52LCBsYXlvdXQgfSA9IHRoaXM7XG5cbiAgICBsZXQgc3ltYm9sVGFibGUgPSBsYXlvdXQuc3ltYm9sVGFibGU7XG4gICAgbGV0IGJ1ZmZlciA9IG5ldyBDb21waWxlSW50b0xpc3QoZW52LCBsYXlvdXQuc3ltYm9sVGFibGUpO1xuICAgIGxldCBkc2wgPSBuZXcgT3Bjb2RlQnVpbGRlckRTTChidWZmZXIsIGxheW91dC5zeW1ib2xUYWJsZSwgZW52KTtcblxuICAgIGRzbC5zdGFydExhYmVscygpO1xuXG4gICAgaWYgKHRoaXMudGFnLmlzRHluYW1pYykge1xuICAgICAgZHNsLnB1dFZhbHVlKHRoaXMudGFnLmR5bmFtaWNUYWdOYW1lKTtcbiAgICAgIGRzbC50ZXN0KCdzaW1wbGUnKTtcbiAgICAgIGRzbC5qdW1wVW5sZXNzKCdCT0RZJyk7XG4gICAgICBkc2wub3BlbkR5bmFtaWNQcmltaXRpdmVFbGVtZW50KCk7XG4gICAgICBkc2wuZGlkQ3JlYXRlRWxlbWVudCgpO1xuICAgICAgdGhpcy5hdHRyc1snYnVmZmVyJ10uZm9yRWFjaChzdGF0ZW1lbnQgPT4gY29tcGlsZVN0YXRlbWVudChlbnYsIHN0YXRlbWVudCwgZHNsLCBsYXlvdXQpKTtcbiAgICAgIGRzbC5mbHVzaEVsZW1lbnQoKTtcbiAgICAgIGRzbC5sYWJlbCgnQk9EWScpO1xuICAgIH0gZWxzZSBpZiAodGhpcy50YWcuaXNTdGF0aWMpIHtcbiAgICAgIGxldCB0YWcgPSB0aGlzLnRhZy5zdGF0aWNUYWdOYW1lO1xuICAgICAgZHNsLm9wZW5QcmltaXRpdmVFbGVtZW50KHRhZyk7XG4gICAgICBkc2wuZGlkQ3JlYXRlRWxlbWVudCgpO1xuICAgICAgdGhpcy5hdHRyc1snYnVmZmVyJ10uZm9yRWFjaChzdGF0ZW1lbnQgPT4gY29tcGlsZVN0YXRlbWVudChlbnYsIHN0YXRlbWVudCwgZHNsLCBsYXlvdXQpKTtcbiAgICAgIGRzbC5mbHVzaEVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBpZiAobGF5b3V0Lmhhc05hbWVkUGFyYW1ldGVycykge1xuICAgICAgZHNsLmJpbmROYW1lZEFyZ3NGb3JMYXlvdXQobGF5b3V0KTtcbiAgICB9XG5cbiAgICBpZiAobGF5b3V0Lmhhc1lpZWxkcykge1xuICAgICAgZHNsLmJpbmRCbG9ja3NGb3JMYXlvdXQobGF5b3V0KTtcbiAgICB9XG5cbiAgICBpZiAobGF5b3V0Lmhhc1BhcnRpYWxzKSB7XG4gICAgICBkc2wuYmluZFBhcnRpYWxBcmdzRm9yTGF5b3V0KGxheW91dCk7XG4gICAgfVxuXG4gICAgbGF5b3V0LnByb2dyYW0uZm9yRWFjaE5vZGUoc3RhdGVtZW50ID0+IGNvbXBpbGVTdGF0ZW1lbnQoZW52LCBzdGF0ZW1lbnQsIGRzbCwgbGF5b3V0KSk7XG5cbiAgICBpZiAodGhpcy50YWcuaXNEeW5hbWljKSB7XG4gICAgICBkc2wucHV0VmFsdWUodGhpcy50YWcuZHluYW1pY1RhZ05hbWUpO1xuICAgICAgZHNsLnRlc3QoJ3NpbXBsZScpO1xuICAgICAgZHNsLmp1bXBVbmxlc3MoJ0VORCcpO1xuICAgICAgZHNsLmNsb3NlRWxlbWVudCgpO1xuICAgICAgZHNsLmxhYmVsKCdFTkQnKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudGFnLmlzU3RhdGljKSB7XG4gICAgICBkc2wuY2xvc2VFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgZHNsLmRpZFJlbmRlckxheW91dCgpO1xuICAgIGRzbC5zdG9wTGFiZWxzKCk7XG5cbiAgICByZXR1cm4gbmV3IENvbXBpbGVkQmxvY2soZHNsLnRvT3BTZXEoKSwgc3ltYm9sVGFibGUuc2l6ZSk7XG4gIH1cbn1cblxuY2xhc3MgVW53cmFwcGVkQnVpbGRlciB7XG4gIHB1YmxpYyBhdHRycyA9IG5ldyBDb21wb25lbnRBdHRyc0J1aWxkZXIoKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZW52OiBFbnZpcm9ubWVudCwgcHJpdmF0ZSBsYXlvdXQ6IExheW91dCkge31cblxuICBnZXQgdGFnKCk6IENvbXBvbmVudC5Db21wb25lbnRUYWdCdWlsZGVyIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0JVRzogQ2Fubm90IGNhbGwgYHRhZ2Agb24gYW4gVW53cmFwcGVkQnVpbGRlcicpO1xuICB9XG5cbiAgY29tcGlsZSgpOiBDb21waWxlZEJsb2NrIHtcbiAgICBsZXQgeyBlbnYsIGxheW91dCB9ID0gdGhpcztcblxuICAgIGxldCBidWZmZXIgPSBuZXcgQ29tcGlsZUludG9MaXN0KGVudiwgbGF5b3V0LnN5bWJvbFRhYmxlKTtcbiAgICBsZXQgZHNsID0gbmV3IE9wY29kZUJ1aWxkZXJEU0woYnVmZmVyLCBsYXlvdXQuc3ltYm9sVGFibGUsIGVudik7XG5cbiAgICBkc2wuc3RhcnRMYWJlbHMoKTtcblxuICAgIGlmIChsYXlvdXQuaGFzTmFtZWRQYXJhbWV0ZXJzKSB7XG4gICAgICBkc2wuYmluZE5hbWVkQXJnc0ZvckxheW91dChsYXlvdXQpO1xuICAgIH1cblxuICAgIGlmIChsYXlvdXQuaGFzWWllbGRzKSB7XG4gICAgICBkc2wuYmluZEJsb2Nrc0ZvckxheW91dChsYXlvdXQpO1xuICAgIH1cblxuICAgIGlmIChsYXlvdXQuaGFzUGFydGlhbHMpIHtcbiAgICAgIGRzbC5iaW5kUGFydGlhbEFyZ3NGb3JMYXlvdXQobGF5b3V0KTtcbiAgICB9XG5cbiAgICBsZXQgYXR0cnMgPSB0aGlzLmF0dHJzWydidWZmZXInXTtcbiAgICBsZXQgYXR0cnNJbnNlcnRlZCA9IGZhbHNlO1xuXG4gICAgdGhpcy5sYXlvdXQucHJvZ3JhbS5mb3JFYWNoTm9kZShzdGF0ZW1lbnQgPT4ge1xuICAgICAgaWYgKCFhdHRyc0luc2VydGVkICYmIGlzT3BlbkVsZW1lbnQoc3RhdGVtZW50KSkge1xuICAgICAgICBkc2wub3BlbkNvbXBvbmVudEVsZW1lbnQoc3RhdGVtZW50LnRhZyk7XG4gICAgICAgIGRzbC5kaWRDcmVhdGVFbGVtZW50KCk7XG4gICAgICAgIGRzbC5zaGFkb3dBdHRyaWJ1dGVzKCk7XG4gICAgICAgIGF0dHJzLmZvckVhY2goc3RhdGVtZW50ID0+IGNvbXBpbGVTdGF0ZW1lbnQoZW52LCBzdGF0ZW1lbnQsIGRzbCwgbGF5b3V0KSk7XG4gICAgICAgIGF0dHJzSW5zZXJ0ZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29tcGlsZVN0YXRlbWVudChlbnYsIHN0YXRlbWVudCwgZHNsLCBsYXlvdXQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZHNsLmRpZFJlbmRlckxheW91dCgpO1xuICAgIGRzbC5zdG9wTGFiZWxzKCk7XG5cbiAgICByZXR1cm4gbmV3IENvbXBpbGVkQmxvY2soZHNsLnRvT3BTZXEoKSwgbGF5b3V0LnN5bWJvbFRhYmxlLnNpemUpO1xuICB9XG59XG5cbnR5cGUgT3BlbkVsZW1lbnQgPSBTeW50YXguT3BlbkVsZW1lbnQgfCBTeW50YXguT3BlblByaW1pdGl2ZUVsZW1lbnQ7XG5cbmZ1bmN0aW9uIGlzT3BlbkVsZW1lbnQoc3ludGF4OiBTdGF0ZW1lbnRTeW50YXgpOiBzeW50YXggaXMgT3BlbkVsZW1lbnQge1xuICByZXR1cm4gc3ludGF4IGluc3RhbmNlb2YgU3ludGF4Lk9wZW5FbGVtZW50IHx8IHN5bnRheCBpbnN0YW5jZW9mIFN5bnRheC5PcGVuUHJpbWl0aXZlRWxlbWVudDtcbn1cblxuY2xhc3MgQ29tcG9uZW50VGFnQnVpbGRlciBpbXBsZW1lbnRzIENvbXBvbmVudC5Db21wb25lbnRUYWdCdWlsZGVyIHtcbiAgcHVibGljIGlzRHluYW1pYyA9IG51bGw7XG4gIHB1YmxpYyBpc1N0YXRpYyA9IG51bGw7XG4gIHB1YmxpYyBzdGF0aWNUYWdOYW1lOiBzdHJpbmcgPSBudWxsO1xuICBwdWJsaWMgZHluYW1pY1RhZ05hbWU6IEV4cHJlc3Npb248c3RyaW5nPiA9IG51bGw7XG5cbiAgc3RhdGljKHRhZ05hbWU6IHN0cmluZykge1xuICAgIHRoaXMuaXNTdGF0aWMgPSB0cnVlO1xuICAgIHRoaXMuc3RhdGljVGFnTmFtZSA9IHRhZ05hbWU7XG4gIH1cblxuICBkeW5hbWljKHRhZ05hbWU6IEZ1bmN0aW9uRXhwcmVzc2lvbjxzdHJpbmc+KSB7XG4gICAgdGhpcy5pc0R5bmFtaWMgPSB0cnVlO1xuICAgIHRoaXMuZHluYW1pY1RhZ05hbWUgPSBtYWtlRnVuY3Rpb25FeHByZXNzaW9uKHRhZ05hbWUpO1xuICB9XG59XG5cbmNsYXNzIENvbXBvbmVudEF0dHJzQnVpbGRlciBpbXBsZW1lbnRzIENvbXBvbmVudC5Db21wb25lbnRBdHRyc0J1aWxkZXIge1xuICBwcml2YXRlIGJ1ZmZlcjogQXR0cmlidXRlU3ludGF4PHN0cmluZz5bXSA9IFtdO1xuXG4gIHN0YXRpYyhuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJ1ZmZlci5wdXNoKG5ldyBTeW50YXguU3RhdGljQXR0cihuYW1lLCB2YWx1ZSwgbnVsbCkpO1xuICB9XG5cbiAgZHluYW1pYyhuYW1lOiBzdHJpbmcsIHZhbHVlOiBGdW5jdGlvbkV4cHJlc3Npb248c3RyaW5nPikge1xuICAgIHRoaXMuYnVmZmVyLnB1c2gobmV3IFN5bnRheC5EeW5hbWljQXR0cihuYW1lLCBtYWtlRnVuY3Rpb25FeHByZXNzaW9uKHZhbHVlKSwgbnVsbCwgZmFsc2UpKTtcbiAgfVxufVxuXG5jbGFzcyBDb21wb25lbnRCdWlsZGVyIGltcGxlbWVudHMgSUNvbXBvbmVudEJ1aWxkZXIge1xuICBwcml2YXRlIGVudjogRW52aXJvbm1lbnQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkc2w6IE9wY29kZUJ1aWxkZXJEU0wpIHtcbiAgICB0aGlzLmVudiA9IGRzbC5lbnY7XG4gIH1cblxuICBzdGF0aWMoZGVmaW5pdGlvbjogU3RhdGljRGVmaW5pdGlvbiwgYXJnczogU3ludGF4LkFyZ3MsIHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcywgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlLCBzaGFkb3c6IHN0cmluZ1tdID0gRU1QVFlfQVJSQVkpIHtcbiAgICB0aGlzLmRzbC51bml0KHsgdGVtcGxhdGVzIH0sIGRzbCA9PiB7XG4gICAgICBkc2wucHV0Q29tcG9uZW50RGVmaW5pdGlvbihkZWZpbml0aW9uKTtcbiAgICAgIGRzbC5vcGVuQ29tcG9uZW50KGFyZ3MsIHNoYWRvdyk7XG4gICAgICBkc2wuY2xvc2VDb21wb25lbnQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGR5bmFtaWMoZGVmaW5pdGlvbkFyZ3M6IFN5bnRheC5BcmdzLCBkZWZpbml0aW9uOiBEeW5hbWljRGVmaW5pdGlvbiwgYXJnczogU3ludGF4LkFyZ3MsIHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcywgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlLCBzaGFkb3c6IHN0cmluZ1tdID0gRU1QVFlfQVJSQVkpIHtcbiAgICB0aGlzLmRzbC51bml0KHsgdGVtcGxhdGVzIH0sIGRzbCA9PiB7XG4gICAgICBkc2wuZW50ZXIoJ0JFR0lOJywgJ0VORCcpO1xuICAgICAgZHNsLmxhYmVsKCdCRUdJTicpO1xuICAgICAgZHNsLnB1dEFyZ3MoZGVmaW5pdGlvbkFyZ3MpO1xuICAgICAgZHNsLnB1dFZhbHVlKG1ha2VGdW5jdGlvbkV4cHJlc3Npb24oZGVmaW5pdGlvbikpO1xuICAgICAgZHNsLnRlc3QoJ3NpbXBsZScpO1xuICAgICAgZHNsLmp1bXBVbmxlc3MoJ0VORCcpO1xuICAgICAgZHNsLnB1dER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uKCk7XG4gICAgICBkc2wub3BlbkNvbXBvbmVudChhcmdzLCBzaGFkb3cpO1xuICAgICAgZHNsLmNsb3NlQ29tcG9uZW50KCk7XG4gICAgICBkc2wubGFiZWwoJ0VORCcpO1xuICAgICAgZHNsLmV4aXQoKTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcGlsZUludG9MaXN0IGV4dGVuZHMgTGlua2VkTGlzdDxPcGNvZGU+IGltcGxlbWVudHMgU3RhdGVtZW50Q29tcGlsYXRpb25CdWZmZXIge1xuICBwdWJsaWMgY29tcG9uZW50OiBJQ29tcG9uZW50QnVpbGRlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVudjogRW52aXJvbm1lbnQsIHByaXZhdGUgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGxldCBkc2wgPSBuZXcgT3Bjb2RlQnVpbGRlckRTTCh0aGlzLCBzeW1ib2xUYWJsZSwgZW52KTtcbiAgICB0aGlzLmNvbXBvbmVudCA9IG5ldyBDb21wb25lbnRCdWlsZGVyKGRzbCk7XG4gIH1cblxuICBnZXRMb2NhbFN5bWJvbChuYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN5bWJvbFRhYmxlLmdldExvY2FsKG5hbWUpO1xuICB9XG5cbiAgaGFzTG9jYWxTeW1ib2wobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLnN5bWJvbFRhYmxlLmdldExvY2FsKG5hbWUpID09PSAnbnVtYmVyJztcbiAgfVxuXG4gIGdldE5hbWVkU3ltYm9sKG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3ltYm9sVGFibGUuZ2V0TmFtZWQobmFtZSk7XG4gIH1cblxuICBoYXNOYW1lZFN5bWJvbChuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuc3ltYm9sVGFibGUuZ2V0TmFtZWQobmFtZSkgPT09ICdudW1iZXInO1xuICB9XG5cbiAgZ2V0QmxvY2tTeW1ib2wobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zeW1ib2xUYWJsZS5nZXRZaWVsZChuYW1lKTtcbiAgfVxuXG4gIGhhc0Jsb2NrU3ltYm9sKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5zeW1ib2xUYWJsZS5nZXRZaWVsZChuYW1lKSA9PT0gJ251bWJlcic7XG4gIH1cblxuICBnZXRQYXJ0aWFsQXJnc1N5bWJvbCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN5bWJvbFRhYmxlLmdldFBhcnRpYWxBcmdzKCk7XG4gIH1cblxuICBoYXNQYXJ0aWFsQXJnc1N5bWJvbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuc3ltYm9sVGFibGUuZ2V0UGFydGlhbEFyZ3MoKSA9PT0gJ251bWJlcic7XG4gIH1cblxuICB0b09wU2VxKCk6IE9wU2VxIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuIl19
18669
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvY29tcGlsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7UUFrQ0EsUUFBQTtBQUlFLGlCQUpGLFFBQUEsQ0FJd0IsS0FBWSxFQUFTLEdBQWdCLEVBQUE7QUFBckMsZ0JBQUEsQ0FBQSxLQUFLLEdBQUwsS0FBSyxDQUFPO0FBQVMsZ0JBQUEsQ0FBQSxHQUFHLEdBQUgsR0FBRyxDQUFhO0FBQ3pELGdCQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDcEMsZ0JBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztTQUN0Qzs7QUFQSCxnQkFBQSxXQVNZLGdCQUFnQixHQUFBLDBCQUFDLFNBQTBCLEVBQUUsR0FBcUIsRUFBQTtBQUMxRSxnQkFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQzFGOztlQVhILFFBQUE7OztBQWNBLGFBQUEsZ0JBQUEsQ0FBMEIsR0FBZ0IsRUFBRSxTQUEwQixFQUFFLEdBQXFCLEVBQUUsTUFBYyxFQUFBO0FBQzNHLFdBQUcsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDcEY7c0JBRWMsUUFBUTs7UUFFdkIsa0JBQUE7OEJBQUEsa0JBQUE7O0FBSUUsaUJBSkYsa0JBQUEsQ0FJYyxRQUFvQixFQUFFLEdBQWdCLEVBQUE7QUFDaEQsaUNBQU0sUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCLGdCQUFJLElBQUksR0FBRyxJQUFJLGVBQWUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxD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LENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3hDOztBQTVCSCx1QkFBQSxXQThCRSxjQUFjLEdBQUEsd0JBQUMsSUFBWSxFQUFBO0FBQ3pCLG1CQUFPLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssUUFBUSxDQUFDO1NBQzVEOztBQWhDSCx1QkFBQSxXQWtDRSxvQkFBb0IsR0FBQSxnQ0FBQTtBQUNsQixtQkFBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQzFDOztBQXBDSCx1QkFBQSxXQXNDRSxvQkFBb0IsR0FBQSxnQ0FBQTtBQUNsQixtQkFBTyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLEtBQUssUUFBUSxDQUFDO1NBQzlEOztBQXhDSCx1QkFBQSxXQTBDRSxPQUFPLEdBQUEsbUJBQUE7QUFDTCxtQkFBTyxJQUFJLENBQUM7U0FDYjs7ZUE1Q0gsZUFBQTtvQkFoYXdCLFVBQVUiLCJmaWxlIjoiY29tcGlsZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcGFxdWUsIFNsaWNlLCBMaW5rZWRMaXN0IH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7IE9wU2VxLCBPcGNvZGUgfSBmcm9tICcuL29wY29kZXMnO1xuXG5pbXBvcnQgeyBFTVBUWV9BUlJBWSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0ICogYXMgU3ludGF4IGZyb20gJy4vc3ludGF4L2NvcmUnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuL2Vudmlyb25tZW50JztcbmltcG9ydCBTeW1ib2xUYWJsZSBmcm9tICcuL3N5bWJvbC10YWJsZSc7XG5pbXBvcnQgeyBCbG9jaywgQ29tcGlsZWRCbG9jaywgRW50cnlQb2ludCwgSW5saW5lQmxvY2ssIExheW91dCB9IGZyb20gJy4vY29tcGlsZWQvYmxvY2tzJztcblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50QnVpbGRlciBhcyBJQ29tcG9uZW50QnVpbGRlcixcbiAgRHluYW1pY0RlZmluaXRpb24sXG4gIFN0YXRpY0RlZmluaXRpb25cbn0gZnJvbSAnLi9vcGNvZGUtYnVpbGRlcic7XG5cbmltcG9ydCB7XG4gIFN0YXRlbWVudCBhcyBTdGF0ZW1lbnRTeW50YXgsXG4gIEF0dHJpYnV0ZSBhcyBBdHRyaWJ1dGVTeW50YXgsXG4gIFN0YXRlbWVudENvbXBpbGF0aW9uQnVmZmVyLFxufSBmcm9tICcuL3N5bnRheCc7XG5cbmltcG9ydCB7XG4gIEV4cHJlc3Npb25cbn0gZnJvbSAnLi9zeW50YXgnO1xuXG5pbXBvcnQge1xuICBGdW5jdGlvbkV4cHJlc3Npb24sXG4gIGRlZmF1bHQgYXMgbWFrZUZ1bmN0aW9uRXhwcmVzc2lvblxufSBmcm9tICcuL2NvbXBpbGVkL2V4cHJlc3Npb25zL2Z1bmN0aW9uJztcblxuaW1wb3J0IE9wY29kZUJ1aWxkZXJEU0wgZnJvbSAnLi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXInO1xuXG5pbXBvcnQgKiBhcyBDb21wb25lbnQgZnJvbSAnLi9jb21wb25lbnQvaW50ZXJmYWNlcyc7XG5cbmFic3RyYWN0IGNsYXNzIENvbXBpbGVyIHtcbiAgcHJvdGVjdGVkIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZTtcbiAgcHJvdGVjdGVkIGN1cnJlbnQ6IFN0YXRlbWVudFN5bnRheDtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgYmxvY2s6IEJsb2NrLCBwdWJsaWMgZW52OiBFbnZpcm9ubWVudCkge1xuICAgIHRoaXMuY3VycmVudCA9IGJsb2NrLnByb2dyYW0uaGVhZCgpO1xuICAgIHRoaXMuc3ltYm9sVGFibGUgPSBibG9jay5zeW1ib2xUYWJsZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb21waWxlU3RhdGVtZW50KHN0YXRlbWVudDogU3RhdGVtZW50U3ludGF4LCBvcHM6IE9wY29kZUJ1aWxkZXJEU0wpIHtcbiAgICB0aGlzLmVudi5zdGF0ZW1lbnQoc3RhdGVtZW50LCB0aGlzLnN5bWJvbFRhYmxlKS5jb21waWxlKG9wcywgdGhpcy5lbnYsIHRoaXMuc3ltYm9sVGFibGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbXBpbGVTdGF0ZW1lbnQoZW52OiBFbnZpcm9ubWVudCwgc3RhdGVtZW50OiBTdGF0ZW1lbnRTeW50YXgsIG9wczogT3Bjb2RlQnVpbGRlckRTTCwgbGF5b3V0OiBMYXlvdXQpIHtcbiAgZW52LnN0YXRlbWVudChzdGF0ZW1lbnQsIGxheW91dC5zeW1ib2xUYWJsZSkuY29tcGlsZShvcHMsIGVudiwgbGF5b3V0LnN5bWJvbFRhYmxlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29tcGlsZXI7XG5cbmV4cG9ydCBjbGFzcyBFbnRyeVBvaW50Q29tcGlsZXIgZXh0ZW5kcyBDb21waWxlciB7XG4gIHByaXZhdGUgb3BzOiBPcGNvZGVCdWlsZGVyRFNMO1xuICBwcm90ZWN0ZWQgYmxvY2s6IEVudHJ5UG9pbnQ7XG5cbiAgY29uc3RydWN0b3IodGVtcGxhdGU6IEVudHJ5UG9pbnQsIGVudjogRW52aXJvbm1lbnQpIHtcbiAgICBzdXBlcih0ZW1wbGF0ZSwgZW52KTtcbiAgICBsZXQgbGlzdCA9IG5ldyBDb21waWxlSW50b0xpc3QoZW52LCB0ZW1wbGF0ZS5zeW1ib2xUYWJsZSk7XG4gICAgdGhpcy5vcHMgPSBuZXcgT3Bjb2RlQnVpbGRlckRTTChsaXN0LCB0ZW1wbGF0ZS5zeW1ib2xUYWJsZSwgZW52KTtcbiAgfVxuXG4gIGNvbXBpbGUoKTogT3BTZXEge1xuICAgIGxldCB7IGJsb2NrLCBvcHMgfSA9IHRoaXM7XG4gICAgbGV0IHsgcHJvZ3JhbSB9ID0gYmxvY2s7XG5cbiAgICBsZXQgY3VycmVudCA9IHByb2dyYW0uaGVhZCgpO1xuXG4gICAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAgIGxldCBuZXh0ID0gcHJvZ3JhbS5uZXh0Tm9kZShjdXJyZW50KTtcbiAgICAgIHRoaXMuY29tcGlsZVN0YXRlbWVudChjdXJyZW50LCBvcHMpO1xuICAgICAgY3VycmVudCA9IG5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wcy50b09wU2VxKCk7XG4gIH1cblxuICBhcHBlbmQob3A6IE9wY29kZSkge1xuICAgIHRoaXMub3BzLmFwcGVuZChvcCk7XG4gIH1cblxuICBnZXRMb2NhbFN5bWJvbChuYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN5bWJvbFRhYmxlLmdldExvY2FsKG5hbWUpO1xuICB9XG5cbiAgZ2V0TmFtZWRTeW1ib2wobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zeW1ib2xUYWJsZS5nZXROYW1lZChuYW1lKTtcbiAgfVxuXG4gIGdldFlpZWxkU3ltYm9sKG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3ltYm9sVGFibGUuZ2V0WWllbGQobmFtZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIElubGluZUJsb2NrQ29tcGlsZXIgZXh0ZW5kcyBDb21waWxlciB7XG4gIHByaXZhdGUgb3BzOiBPcGNvZGVCdWlsZGVyRFNMO1xuICBwcm90ZWN0ZWQgY3VycmVudDogU3RhdGVtZW50U3ludGF4O1xuXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBibG9jazogSW5saW5lQmxvY2ssIGVudjogRW52aXJvbm1lbnQpIHtcbiAgICBzdXBlcihibG9jaywgZW52KTtcbiAgICBsZXQgbGlzdCA9IG5ldyBDb21waWxlSW50b0xpc3QoZW52LCBibG9jay5zeW1ib2xUYWJsZSk7XG4gICAgdGhpcy5vcHMgPSBuZXcgT3Bjb2RlQnVpbGRlckRTTChsaXN0LCBibG9jay5zeW1ib2xUYWJsZSwgZW52KTtcbiAgfVxuXG4gIGNvbXBpbGUoKTogT3BTZXEge1xuICAgIGxldCB7IGJsb2NrLCBvcHMgfSA9IHRoaXM7XG4gICAgbGV0IHsgcHJvZ3JhbSB9ID0gYmxvY2s7XG5cbiAgICBsZXQgaGFzUG9zaXRpb25hbFBhcmFtZXRlcnMgPSBibG9jay5oYXNQb3NpdGlvbmFsUGFyYW1ldGVycygpO1xuXG4gICAgaWYgKGhhc1Bvc2l0aW9uYWxQYXJhbWV0ZXJzKSB7XG4gICAgICBvcHMucHVzaENoaWxkU2NvcGUoKTtcbiAgICAgIG9wcy5iaW5kUG9zaXRpb25hbEFyZ3NGb3JCbG9jayhibG9jayk7XG4gICAgfVxuXG4gICAgbGV0IGN1cnJlbnQgPSBwcm9ncmFtLmhlYWQoKTtcblxuICAgIHdoaWxlIChjdXJyZW50KSB7XG4gICAgICBsZXQgbmV4dCA9IHByb2dyYW0ubmV4dE5vZGUoY3VycmVudCk7XG4gICAgICB0aGlzLmNvbXBpbGVTdGF0ZW1lbnQoY3VycmVudCwgb3BzKTtcbiAgICAgIGN1cnJlbnQgPSBuZXh0O1xuICAgIH1cblxuICAgIGlmIChoYXNQb3NpdGlvbmFsUGFyYW1ldGVycykge1xuICAgICAgb3BzLnBvcFNjb3BlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wcy50b09wU2VxKCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRQYXJ0cyB7XG4gIHRhZzogc3RyaW5nO1xuICBhdHRyczogU2xpY2U8QXR0cmlidXRlU3ludGF4PE9wYXF1ZT4+O1xuICBib2R5OiBTbGljZTxTdGF0ZW1lbnRTeW50YXg+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGVkQ29tcG9uZW50UGFydHMge1xuICB0YWc6IHN0cmluZztcbiAgcHJlYW1ibGU6IENvbXBpbGVJbnRvTGlzdDtcbiAgbWFpbjogQ29tcGlsZUludG9MaXN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBpbGFibGUge1xuICBjb21waWxlKGJ1aWxkZXI6IENvbXBvbmVudC5Db21wb25lbnRMYXlvdXRCdWlsZGVyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXBpbGVMYXlvdXQoY29tcGlsYWJsZTogQ29tcGlsYWJsZSwgZW52OiBFbnZpcm9ubWVudCk6IENvbXBpbGVkQmxvY2sge1xuICBsZXQgYnVpbGRlciA9IG5ldyBDb21wb25lbnRMYXlvdXRCdWlsZGVyKGVudik7XG5cbiAgY29tcGlsYWJsZS5jb21waWxlKGJ1aWxkZXIpO1xuXG4gIHJldHVybiBidWlsZGVyLmNvbXBpbGUoKTtcbn1cblxuY2xhc3MgQ29tcG9uZW50TGF5b3V0QnVpbGRlciBpbXBsZW1lbnRzIENvbXBvbmVudC5Db21wb25lbnRMYXlvdXRCdWlsZGVyIHtcbiAgcHJpdmF0ZSBpbm5lcjogRW1wdHlCdWlsZGVyIHwgV3JhcHBlZEJ1aWxkZXIgfCBVbndyYXBwZWRCdWlsZGVyO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbnY6IEVudmlyb25tZW50KSB7fVxuXG4gIGVtcHR5KCkge1xuICAgIHRoaXMuaW5uZXIgPSBuZXcgRW1wdHlCdWlsZGVyKHRoaXMuZW52KTtcbiAgfVxuXG4gIHdyYXBMYXlvdXQobGF5b3V0OiBMYXlvdXQpIHtcbiAgICB0aGlzLmlubmVyID0gbmV3IFdyYXBwZWRCdWlsZGVyKHRoaXMuZW52LCBsYXlvdXQpO1xuICB9XG5cbiAgZnJvbUxheW91dChsYXlvdXQ6IExheW91dCkge1xuICAgIHRoaXMuaW5uZXIgPSBuZXcgVW53cmFwcGVkQnVpbGRlcih0aGlzLmVudiwgbGF5b3V0KTtcbiAgfVxuXG4gIGNvbXBpbGUoKTogQ29tcGlsZWRCbG9jayB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIuY29tcGlsZSgpO1xuICB9XG5cbiAgZ2V0IHRhZygpOiBDb21wb25lbnQuQ29tcG9uZW50VGFnQnVpbGRlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXIudGFnO1xuICB9XG5cbiAgZ2V0IGF0dHJzKCk6IENvbXBvbmVudC5Db21wb25lbnRBdHRyc0J1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLmlubmVyLmF0dHJzO1xuICB9XG59XG5cbmNsYXNzIEVtcHR5QnVpbGRlciB7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGVudjogRW52aXJvbm1lbnQpIHt9XG5cbiAgZ2V0IHRhZygpOiBDb21wb25lbnQuQ29tcG9uZW50VGFnQnVpbGRlciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3BlJyk7XG4gIH1cblxuICBnZXQgYXR0cnMoKTogQ29tcG9uZW50LkNvbXBvbmVudEF0dHJzQnVpbGRlciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3BlJyk7XG4gIH1cblxuICBjb21waWxlKCk6IENvbXBpbGVkQmxvY2sge1xuICAgIGxldCB7IGVudiB9ID0gdGhpcztcblxuICAgIGxldCBsaXN0ID0gbmV3IENvbXBpbGVJbnRvTGlzdChlbnYsIG51bGwpO1xuICAgIHJldHVybiBuZXcgQ29tcGlsZWRCbG9jayhsaXN0LCAwKTtcbiAgfVxufVxuXG5jbGFzcyBXcmFwcGVkQnVpbGRlciB7XG4gIHB1YmxpYyB0YWcgPSBuZXcgQ29tcG9uZW50VGFnQnVpbGRlcigpO1xuICBwdWJsaWMgYXR0cnMgPSBuZXcgQ29tcG9uZW50QXR0cnNCdWlsZGVyKCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGVudjogRW52aXJvbm1lbnQsIHByaXZhdGUgbGF5b3V0OiBMYXlvdXQpIHt9XG5cbiAgY29tcGlsZSgpOiBDb21waWxlZEJsb2NrIHtcbiAgICAvLz09PT09PT09RFlOQU1JQ1xuICAgIC8vICAgICAgICBQdXRWYWx1ZShUYWdFeHByKVxuICAgIC8vICAgICAgICBUZXN0XG4gICAgLy8gICAgICAgIEp1bXBVbmxlc3MoQk9EWSlcbiAgICAvLyAgICAgICAgT3BlbkR5bmFtaWNQcmltaXRpdmVFbGVtZW50XG4gICAgLy8gICAgICAgIERpZENyZWF0ZUVsZW1lbnRcbiAgICAvLyAgICAgICAgLi4uYXR0ciBzdGF0ZW1lbnRzLi4uXG4gICAgLy8gICAgICAgIEZsdXNoRWxlbWVudFxuICAgIC8vIEJPRFk6ICBOb29wXG4gICAgLy8gICAgICAgIC4uLmJvZHkgc3RhdGVtZW50cy4uLlxuICAgIC8vICAgICAgICBQdXRWYWx1ZShUYWdFeHByKVxuICAgIC8vICAgICAgICBUZXN0XG4gICAgLy8gICAgICAgIEp1bXBVbmxlc3MoRU5EKVxuICAgIC8vICAgICAgICBDbG9zZUVsZW1lbnRcbiAgICAvLyBFTkQ6ICAgTm9vcFxuICAgIC8vICAgICAgICBEaWRSZW5kZXJMYXlvdXRcbiAgICAvLyAgICAgICAgRXhpdFxuICAgIC8vXG4gICAgLy89PT09PT09PVNUQVRJQ1xuICAgIC8vICAgICAgICBPcGVuUHJpbWl0aXZlRWxlbWVudE9wY29kZVxuICAgIC8vICAgICAgICBEaWRDcmVhdGVFbGVtZW50XG4gICAgLy8gICAgICAgIC4uLmF0dHIgc3RhdGVtZW50cy4uLlxuICAgIC8vICAgICAgICBGbHVzaEVsZW1lbnRcbiAgICAvLyAgICAgICAgLi4uYm9keSBzdGF0ZW1lbnRzLi4uXG4gICAgLy8gICAgICAgIENsb3NlRWxlbWVudFxuICAgIC8vICAgICAgICBEaWRSZW5kZXJMYXlvdXRcbiAgICAvLyAgICAgICAgRXhpdFxuXG4gICAgbGV0IHsgZW52LCBsYXlvdXQgfSA9IHRoaXM7XG5cbiAgICBsZXQgc3ltYm9sVGFibGUgPSBsYXlvdXQuc3ltYm9sVGFibGU7XG4gICAgbGV0IGJ1ZmZlciA9IG5ldyBDb21waWxlSW50b0xpc3QoZW52LCBsYXlvdXQuc3ltYm9sVGFibGUpO1xuICAgIGxldCBkc2wgPSBuZXcgT3Bjb2RlQnVpbGRlckRTTChidWZmZXIsIGxheW91dC5zeW1ib2xUYWJsZSwgZW52KTtcblxuICAgIGRzbC5zdGFydExhYmVscygpO1xuXG4gICAgaWYgKHRoaXMudGFnLmlzRHluYW1pYykge1xuICAgICAgZHNsLnB1dFZhbHVlKHRoaXMudGFnLmR5bmFtaWNUYWdOYW1lKTtcbiAgICAgIGRzbC50ZXN0KCdzaW1wbGUnKTtcbiAgICAgIGRzbC5qdW1wVW5sZXNzKCdCT0RZJyk7XG4gICAgICBkc2wub3BlbkR5bmFtaWNQcmltaXRpdmVFbGVtZW50KCk7XG4gICAgICBkc2wuZGlkQ3JlYXRlRWxlbWVudCgpO1xuICAgICAgdGhpcy5hdHRyc1snYnVmZmVyJ10uZm9yRWFjaChzdGF0ZW1lbnQgPT4gY29tcGlsZVN0YXRlbWVudChlbnYsIHN0YXRlbWVudCwgZHNsLCBsYXlvdXQpKTtcbiAgICAgIGRzbC5mbHVzaEVsZW1lbnQoKTtcbiAgICAgIGRzbC5sYWJlbCgnQk9EWScpO1xuICAgIH0gZWxzZSBpZiAodGhpcy50YWcuaXNTdGF0aWMpIHtcbiAgICAgIGxldCB0YWcgPSB0aGlzLnRhZy5zdGF0aWNUYWdOYW1lO1xuICAgICAgZHNsLm9wZW5QcmltaXRpdmVFbGVtZW50KHRhZyk7XG4gICAgICBkc2wuZGlkQ3JlYXRlRWxlbWVudCgpO1xuICAgICAgdGhpcy5hdHRyc1snYnVmZmVyJ10uZm9yRWFjaChzdGF0ZW1lbnQgPT4gY29tcGlsZVN0YXRlbWVudChlbnYsIHN0YXRlbWVudCwgZHNsLCBsYXlvdXQpKTtcbiAgICAgIGRzbC5mbHVzaEVsZW1lbnQoKTtcbiAgICB9XG5cbiAgICBpZiAobGF5b3V0Lmhhc05hbWVkUGFyYW1ldGVycykge1xuICAgICAgZHNsLmJpbmROYW1lZEFyZ3NGb3JMYXlvdXQobGF5b3V0KTtcbiAgICB9XG5cbiAgICBpZiAobGF5b3V0Lmhhc1lpZWxkcykge1xuICAgICAgZHNsLmJpbmRCbG9ja3NGb3JMYXlvdXQobGF5b3V0KTtcbiAgICB9XG5cbiAgICBpZiAobGF5b3V0Lmhhc1BhcnRpYWxzKSB7XG4gICAgICBkc2wuYmluZFBhcnRpYWxBcmdzRm9yTGF5b3V0KGxheW91dCk7XG4gICAgfVxuXG4gICAgbGF5b3V0LnByb2dyYW0uZm9yRWFjaE5vZGUoc3RhdGVtZW50ID0+IGNvbXBpbGVTdGF0ZW1lbnQoZW52LCBzdGF0ZW1lbnQsIGRzbCwgbGF5b3V0KSk7XG5cbiAgICBpZiAodGhpcy50YWcuaXNEeW5hbWljKSB7XG4gICAgICBkc2wucHV0VmFsdWUodGhpcy50YWcuZHluYW1pY1RhZ05hbWUpO1xuICAgICAgZHNsLnRlc3QoJ3NpbXBsZScpO1xuICAgICAgZHNsLmp1bXBVbmxlc3MoJ0VORCcpO1xuICAgICAgZHNsLmNsb3NlRWxlbWVudCgpO1xuICAgICAgZHNsLmxhYmVsKCdFTkQnKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMudGFnLmlzU3RhdGljKSB7XG4gICAgICBkc2wuY2xvc2VFbGVtZW50KCk7XG4gICAgfVxuXG4gICAgZHNsLmRpZFJlbmRlckxheW91dCgpO1xuICAgIGRzbC5zdG9wTGFiZWxzKCk7XG5cbiAgICByZXR1cm4gbmV3IENvbXBpbGVkQmxvY2soZHNsLnRvT3BTZXEoKSwgc3ltYm9sVGFibGUuc2l6ZSk7XG4gIH1cbn1cblxuY2xhc3MgVW53cmFwcGVkQnVpbGRlciB7XG4gIHB1YmxpYyBhdHRycyA9IG5ldyBDb21wb25lbnRBdHRyc0J1aWxkZXIoKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZW52OiBFbnZpcm9ubWVudCwgcHJpdmF0ZSBsYXlvdXQ6IExheW91dCkge31cblxuICBnZXQgdGFnKCk6IENvbXBvbmVudC5Db21wb25lbnRUYWdCdWlsZGVyIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0JVRzogQ2Fubm90IGNhbGwgYHRhZ2Agb24gYW4gVW53cmFwcGVkQnVpbGRlcicpO1xuICB9XG5cbiAgY29tcGlsZSgpOiBDb21waWxlZEJsb2NrIHtcbiAgICBsZXQgeyBlbnYsIGxheW91dCB9ID0gdGhpcztcblxuICAgIGxldCBidWZmZXIgPSBuZXcgQ29tcGlsZUludG9MaXN0KGVudiwgbGF5b3V0LnN5bWJvbFRhYmxlKTtcbiAgICBsZXQgZHNsID0gbmV3IE9wY29kZUJ1aWxkZXJEU0woYnVmZmVyLCBsYXlvdXQuc3ltYm9sVGFibGUsIGVudik7XG5cbiAgICBkc2wuc3RhcnRMYWJlbHMoKTtcblxuICAgIGlmIChsYXlvdXQuaGFzTmFtZWRQYXJhbWV0ZXJzKSB7XG4gICAgICBkc2wuYmluZE5hbWVkQXJnc0ZvckxheW91dChsYXlvdXQpO1xuICAgIH1cblxuICAgIGlmIChsYXlvdXQuaGFzWWllbGRzKSB7XG4gICAgICBkc2wuYmluZEJsb2Nrc0ZvckxheW91dChsYXlvdXQpO1xuICAgIH1cblxuICAgIGlmIChsYXlvdXQuaGFzUGFydGlhbHMpIHtcbiAgICAgIGRzbC5iaW5kUGFydGlhbEFyZ3NGb3JMYXlvdXQobGF5b3V0KTtcbiAgICB9XG5cbiAgICBsZXQgYXR0cnMgPSB0aGlzLmF0dHJzWydidWZmZXInXTtcbiAgICBsZXQgYXR0cnNJbnNlcnRlZCA9IGZhbHNlO1xuXG4gICAgdGhpcy5sYXlvdXQucHJvZ3JhbS5mb3JFYWNoTm9kZShzdGF0ZW1lbnQgPT4ge1xuICAgICAgaWYgKCFhdHRyc0luc2VydGVkICYmIGlzT3BlbkVsZW1lbnQoc3RhdGVtZW50KSkge1xuICAgICAgICBkc2wub3BlbkNvbXBvbmVudEVsZW1lbnQoc3RhdGVtZW50LnRhZyk7XG4gICAgICAgIGRzbC5kaWRDcmVhdGVFbGVtZW50KCk7XG4gICAgICAgIGRzbC5zaGFkb3dBdHRyaWJ1dGVzKCk7XG4gICAgICAgIGF0dHJzLmZvckVhY2goc3RhdGVtZW50ID0+IGNvbXBpbGVTdGF0ZW1lbnQoZW52LCBzdGF0ZW1lbnQsIGRzbCwgbGF5b3V0KSk7XG4gICAgICAgIGF0dHJzSW5zZXJ0ZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29tcGlsZVN0YXRlbWVudChlbnYsIHN0YXRlbWVudCwgZHNsLCBsYXlvdXQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZHNsLmRpZFJlbmRlckxheW91dCgpO1xuICAgIGRzbC5zdG9wTGFiZWxzKCk7XG5cbiAgICByZXR1cm4gbmV3IENvbXBpbGVkQmxvY2soZHNsLnRvT3BTZXEoKSwgbGF5b3V0LnN5bWJvbFRhYmxlLnNpemUpO1xuICB9XG59XG5cbnR5cGUgT3BlbkVsZW1lbnQgPSBTeW50YXguT3BlbkVsZW1lbnQgfCBTeW50YXguT3BlblByaW1pdGl2ZUVsZW1lbnQ7XG5cbmZ1bmN0aW9uIGlzT3BlbkVsZW1lbnQoc3ludGF4OiBTdGF0ZW1lbnRTeW50YXgpOiBzeW50YXggaXMgT3BlbkVsZW1lbnQge1xuICByZXR1cm4gc3ludGF4IGluc3RhbmNlb2YgU3ludGF4Lk9wZW5FbGVtZW50IHx8IHN5bnRheCBpbnN0YW5jZW9mIFN5bnRheC5PcGVuUHJpbWl0aXZlRWxlbWVudDtcbn1cblxuY2xhc3MgQ29tcG9uZW50VGFnQnVpbGRlciBpbXBsZW1lbnRzIENvbXBvbmVudC5Db21wb25lbnRUYWdCdWlsZGVyIHtcbiAgcHVibGljIGlzRHluYW1pYyA9IG51bGw7XG4gIHB1YmxpYyBpc1N0YXRpYyA9IG51bGw7XG4gIHB1YmxpYyBzdGF0aWNUYWdOYW1lOiBzdHJpbmcgPSBudWxsO1xuICBwdWJsaWMgZHluYW1pY1RhZ05hbWU6IEV4cHJlc3Npb248c3RyaW5nPiA9IG51bGw7XG5cbiAgc3RhdGljKHRhZ05hbWU6IHN0cmluZykge1xuICAgIHRoaXMuaXNTdGF0aWMgPSB0cnVlO1xuICAgIHRoaXMuc3RhdGljVGFnTmFtZSA9IHRhZ05hbWU7XG4gIH1cblxuICBkeW5hbWljKHRhZ05hbWU6IEZ1bmN0aW9uRXhwcmVzc2lvbjxzdHJpbmc+KSB7XG4gICAgdGhpcy5pc0R5bmFtaWMgPSB0cnVlO1xuICAgIHRoaXMuZHluYW1pY1RhZ05hbWUgPSBtYWtlRnVuY3Rpb25FeHByZXNzaW9uKHRhZ05hbWUpO1xuICB9XG59XG5cbmNsYXNzIENvbXBvbmVudEF0dHJzQnVpbGRlciBpbXBsZW1lbnRzIENvbXBvbmVudC5Db21wb25lbnRBdHRyc0J1aWxkZXIge1xuICBwcml2YXRlIGJ1ZmZlcjogQXR0cmlidXRlU3ludGF4PHN0cmluZz5bXSA9IFtdO1xuXG4gIHN0YXRpYyhuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJ1ZmZlci5wdXNoKG5ldyBTeW50YXguU3RhdGljQXR0cihuYW1lLCB2YWx1ZSwgbnVsbCkpO1xuICB9XG5cbiAgZHluYW1pYyhuYW1lOiBzdHJpbmcsIHZhbHVlOiBGdW5jdGlvbkV4cHJlc3Npb248c3RyaW5nPikge1xuICAgIHRoaXMuYnVmZmVyLnB1c2gobmV3IFN5bnRheC5EeW5hbWljQXR0cihuYW1lLCBtYWtlRnVuY3Rpb25FeHByZXNzaW9uKHZhbHVlKSwgbnVsbCwgZmFsc2UpKTtcbiAgfVxufVxuXG5jbGFzcyBDb21wb25lbnRCdWlsZGVyIGltcGxlbWVudHMgSUNvbXBvbmVudEJ1aWxkZXIge1xuICBwcml2YXRlIGVudjogRW52aXJvbm1lbnQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkc2w6IE9wY29kZUJ1aWxkZXJEU0wpIHtcbiAgICB0aGlzLmVudiA9IGRzbC5lbnY7XG4gIH1cblxuICBzdGF0aWMoZGVmaW5pdGlvbjogU3RhdGljRGVmaW5pdGlvbiwgYXJnczogU3ludGF4LkFyZ3MsIHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcywgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlLCBzaGFkb3c6IHN0cmluZ1tdID0gRU1QVFlfQVJSQVkpIHtcbiAgICB0aGlzLmRzbC51bml0KHsgdGVtcGxhdGVzIH0sIGRzbCA9PiB7XG4gICAgICBkc2wucHV0Q29tcG9uZW50RGVmaW5pdGlvbihkZWZpbml0aW9uKTtcbiAgICAgIGRzbC5vcGVuQ29tcG9uZW50KGFyZ3MsIHNoYWRvdyk7XG4gICAgICBkc2wuY2xvc2VDb21wb25lbnQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGR5bmFtaWMoZGVmaW5pdGlvbkFyZ3M6IFN5bnRheC5BcmdzLCBkZWZpbml0aW9uOiBEeW5hbWljRGVmaW5pdGlvbiwgYXJnczogU3ludGF4LkFyZ3MsIHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcywgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlLCBzaGFkb3c6IHN0cmluZ1tdID0gRU1QVFlfQVJSQVkpIHtcbiAgICB0aGlzLmRzbC51bml0KHsgdGVtcGxhdGVzIH0sIGRzbCA9PiB7XG4gICAgICBkc2wucHV0QXJncyhkZWZpbml0aW9uQXJncyk7XG4gICAgICBkc2wucHV0VmFsdWUobWFrZUZ1bmN0aW9uRXhwcmVzc2lvbihkZWZpbml0aW9uKSk7XG4gICAgICBkc2wudGVzdCgnc2ltcGxlJyk7XG4gICAgICBkc2wuZW50ZXIoJ0JFR0lOJywgJ0VORCcpO1xuICAgICAgZHNsLmxhYmVsKCdCRUdJTicpO1xuICAgICAgZHNsLmp1bXBVbmxlc3MoJ0VORCcpO1xuICAgICAgZHNsLnB1dER5bmFtaWNDb21wb25lbnREZWZpbml0aW9uKCk7XG4gICAgICBkc2wub3BlbkNvbXBvbmVudChhcmdzLCBzaGFkb3cpO1xuICAgICAgZHNsLmNsb3NlQ29tcG9uZW50KCk7XG4gICAgICBkc2wubGFiZWwoJ0VORCcpO1xuICAgICAgZHNsLmV4aXQoKTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcGlsZUludG9MaXN0IGV4dGVuZHMgTGlua2VkTGlzdDxPcGNvZGU+IGltcGxlbWVudHMgU3RhdGVtZW50Q29tcGlsYXRpb25CdWZmZXIge1xuICBwdWJsaWMgY29tcG9uZW50OiBJQ29tcG9uZW50QnVpbGRlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVudjogRW52aXJvbm1lbnQsIHByaXZhdGUgc3ltYm9sVGFibGU6IFN5bWJvbFRhYmxlKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGxldCBkc2wgPSBuZXcgT3Bjb2RlQnVpbGRlckRTTCh0aGlzLCBzeW1ib2xUYWJsZSwgZW52KTtcbiAgICB0aGlzLmNvbXBvbmVudCA9IG5ldyBDb21wb25lbnRCdWlsZGVyKGRzbCk7XG4gIH1cblxuICBnZXRMb2NhbFN5bWJvbChuYW1lOiBzdHJpbmcpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN5bWJvbFRhYmxlLmdldExvY2FsKG5hbWUpO1xuICB9XG5cbiAgaGFzTG9jYWxTeW1ib2wobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLnN5bWJvbFRhYmxlLmdldExvY2FsKG5hbWUpID09PSAnbnVtYmVyJztcbiAgfVxuXG4gIGdldE5hbWVkU3ltYm9sKG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3ltYm9sVGFibGUuZ2V0TmFtZWQobmFtZSk7XG4gIH1cblxuICBoYXNOYW1lZFN5bWJvbChuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuc3ltYm9sVGFibGUuZ2V0TmFtZWQobmFtZSkgPT09ICdudW1iZXInO1xuICB9XG5cbiAgZ2V0QmxvY2tTeW1ib2wobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zeW1ib2xUYWJsZS5nZXRZaWVsZChuYW1lKTtcbiAgfVxuXG4gIGhhc0Jsb2NrU3ltYm9sKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5zeW1ib2xUYWJsZS5nZXRZaWVsZChuYW1lKSA9PT0gJ251bWJlcic7XG4gIH1cblxuICBnZXRQYXJ0aWFsQXJnc1N5bWJvbCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnN5bWJvbFRhYmxlLmdldFBhcnRpYWxBcmdzKCk7XG4gIH1cblxuICBoYXNQYXJ0aWFsQXJnc1N5bWJvbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuc3ltYm9sVGFibGUuZ2V0UGFydGlhbEFyZ3MoKSA9PT0gJ251bWJlcic7XG4gIH1cblxuICB0b09wU2VxKCk6IE9wU2VxIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuIl19
18596
18670
  enifed('glimmer-runtime/lib/component/interfaces', ['exports'], function (exports) {
18597
18671
  'use strict';
18598
18672
 
@@ -20159,10 +20233,10 @@ enifed('glimmer-runtime/lib/syntax/builtins/if', ['exports', 'glimmer-runtime/li
20159
20233
  }
20160
20234
 
20161
20235
  IfSyntax.prototype.compile = function compile(dsl) {
20162
- // Enter(BEGIN, END)
20163
- // BEGIN: Noop
20164
20236
  // PutArgs
20165
20237
  // Test(Environment)
20238
+ // Enter(BEGIN, END)
20239
+ // BEGIN: Noop
20166
20240
  // JumpUnless(ELSE)
20167
20241
  // Evaluate(default)
20168
20242
  // Jump(END)
@@ -20173,8 +20247,9 @@ enifed('glimmer-runtime/lib/syntax/builtins/if', ['exports', 'glimmer-runtime/li
20173
20247
  var args = this.args;
20174
20248
  var templates = this.templates;
20175
20249
 
20176
- dsl.block({ templates: templates, args: args }, function (dsl, BEGIN, END) {
20177
- dsl.test('environment');
20250
+ dsl.putArgs(args);
20251
+ dsl.test('environment');
20252
+ dsl.block({ templates: templates }, function (dsl, BEGIN, END) {
20178
20253
  if (templates.inverse) {
20179
20254
  dsl.jumpUnless('ELSE');
20180
20255
  dsl.evaluate('default');
@@ -20193,7 +20268,7 @@ enifed('glimmer-runtime/lib/syntax/builtins/if', ['exports', 'glimmer-runtime/li
20193
20268
 
20194
20269
  exports.default = IfSyntax;
20195
20270
  });
20196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2J1aWx0aW5zL2lmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQVFBLFFBQUE7OEJBQUEsUUFBQTs7QUFPRSxpQkFQRixRQUFBLENBT2MsSUFBdUUsRUFBQTtnQkFBckUsSUFBSSxHQUFOLElBQXVFLENBQXJFLElBQUk7Z0JBQUUsU0FBUyxHQUFqQixJQUF1RSxDQUEvRCxTQUFTOztBQUMzQix1Q0FBTyxDQUFDO0FBUFYsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsY0FBYyxDQUFDO0FBSWYsZ0JBQUEsQ0FBQSxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBSXRCLGdCQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNqQixnQkFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7U0FDNUI7O0FBWEgsZ0JBQUEsV0FhRSxPQUFPLEdBQUEsaUJBQUMsR0FBcUIsRUFBQTs7Ozs7Ozs7Ozs7O2dCQWFyQixJQUFJLEdBQWdCLElBQUksQ0FBeEIsSUFBSTtnQkFBRSxTQUFTLEdBQUssSUFBSSxDQUFsQixTQUFTOztBQUVyQixlQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFULFNBQVMsRUFBRSxJQUFJLEVBQUosSUFBSSxFQUFFLEVBQUUsVUFBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBQTtBQUM3QyxtQkFBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUV4QixvQkFBSSxTQUFTLENBQUMsT0FBTyxFQUFFO0FBQ3JCLHVCQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZCLHVCQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3hCLHVCQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2QsdUJBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbEIsdUJBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ3pCLE1BQU07QUFDTCx1QkFBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQix1QkFBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDekI7YUFDRixDQUFDLENBQUM7U0FDSjs7ZUExQ0gsUUFBQTtnQ0FQRSxTQUFTOztzQkFPWCxRQUFBIiwiZmlsZSI6ImlmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU3RhdGVtZW50IGFzIFN0YXRlbWVudFN5bnRheFxufSBmcm9tICcuLi8uLi9zeW50YXgnO1xuXG5pbXBvcnQgKiBhcyBTeW50YXggZnJvbSAnLi4vY29yZSc7XG5cbmltcG9ydCBPcGNvZGVCdWlsZGVyRFNMIGZyb20gJy4uLy4uL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIElmU3ludGF4IGV4dGVuZHMgU3RhdGVtZW50U3ludGF4IHtcbiAgdHlwZSA9IFwiaWYtc3RhdGVtZW50XCI7XG5cbiAgcHVibGljIGFyZ3M6IFN5bnRheC5BcmdzO1xuICBwdWJsaWMgdGVtcGxhdGVzOiBTeW50YXguVGVtcGxhdGVzO1xuICBwdWJsaWMgaXNTdGF0aWMgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcih7IGFyZ3MsIHRlbXBsYXRlcyB9OiB7IGFyZ3M6IFN5bnRheC5BcmdzLCB0ZW1wbGF0ZXM6IFN5bnRheC5UZW1wbGF0ZXMgfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hcmdzID0gYXJncztcbiAgICB0aGlzLnRlbXBsYXRlcyA9IHRlbXBsYXRlcztcbiAgfVxuXG4gIGNvbXBpbGUoZHNsOiBPcGNvZGVCdWlsZGVyRFNMKSB7XG4gICAgLy8gICAgICAgIEVudGVyKEJFR0lOLCBFTkQpXG4gICAgLy8gQkVHSU46IE5vb3BcbiAgICAvLyAgICAgICAgUHV0QXJnc1xuICAgIC8vICAgICAgICBUZXN0KEVudmlyb25tZW50KVxuICAgIC8vICAgICAgICBKdW1wVW5sZXNzKEVMU0UpXG4gICAgLy8gICAgICAgIEV2YWx1YXRlKGRlZmF1bHQpXG4gICAgLy8gICAgICAgIEp1bXAoRU5EKVxuICAgIC8vIEVMU0U6ICBOb29wXG4gICAgLy8gICAgICAgIEV2YWx1bGF0ZShpbnZlcnNlKVxuICAgIC8vIEVORDogICBOb29wXG4gICAgLy8gICAgICAgIEV4aXRcblxuICAgIGxldCB7IGFyZ3MsIHRlbXBsYXRlcyB9ID0gdGhpcztcblxuICAgIGRzbC5ibG9jayh7IHRlbXBsYXRlcywgYXJncyB9LCAoZHNsLCBCRUdJTiwgRU5EKSA9PiB7XG4gICAgICBkc2wudGVzdCgnZW52aXJvbm1lbnQnKTtcblxuICAgICAgaWYgKHRlbXBsYXRlcy5pbnZlcnNlKSB7XG4gICAgICAgIGRzbC5qdW1wVW5sZXNzKCdFTFNFJyk7XG4gICAgICAgIGRzbC5ldmFsdWF0ZSgnZGVmYXVsdCcpO1xuICAgICAgICBkc2wuanVtcChFTkQpO1xuICAgICAgICBkc2wubGFiZWwoJ0VMU0UnKTtcbiAgICAgICAgZHNsLmV2YWx1YXRlKCdpbnZlcnNlJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkc2wuanVtcFVubGVzcyhFTkQpO1xuICAgICAgICBkc2wuZXZhbHVhdGUoJ2RlZmF1bHQnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19
20271
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2J1aWx0aW5zL2lmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQVFBLFFBQUE7OEJBQUEsUUFBQTs7QUFPRSxpQkFQRixRQUFBLENBT2MsSUFBdUUsRUFBQTtnQkFBckUsSUFBSSxHQUFOLElBQXVFLENBQXJFLElBQUk7Z0JBQUUsU0FBUyxHQUFqQixJQUF1RSxDQUEvRCxTQUFTOztBQUMzQix1Q0FBTyxDQUFDO0FBUFYsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsY0FBYyxDQUFDO0FBSWYsZ0JBQUEsQ0FBQSxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBSXRCLGdCQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNqQixnQkFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7U0FDNUI7O0FBWEgsZ0JBQUEsV0FhRSxPQUFPLEdBQUEsaUJBQUMsR0FBcUIsRUFBQTs7Ozs7Ozs7Ozs7O2dCQWFyQixJQUFJLEdBQWdCLElBQUksQ0FBeEIsSUFBSTtnQkFBRSxTQUFTLEdBQUssSUFBSSxDQUFsQixTQUFTOztBQUVyQixlQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xCLGVBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7QUFFeEIsZUFBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBVCxTQUFTLEVBQUUsRUFBRSxVQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFBO0FBQ3ZDLG9CQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUU7QUFDckIsdUJBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDdkIsdUJBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDeEIsdUJBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZCx1QkFBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsQix1QkFBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDekIsTUFBTTtBQUNMLHVCQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLHVCQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUN6QjthQUNGLENBQUMsQ0FBQztTQUNKOztlQTNDSCxRQUFBO2dDQVBFLFNBQVM7O3NCQU9YLFFBQUEiLCJmaWxlIjoiaWYuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTdGF0ZW1lbnQgYXMgU3RhdGVtZW50U3ludGF4XG59IGZyb20gJy4uLy4uL3N5bnRheCc7XG5cbmltcG9ydCAqIGFzIFN5bnRheCBmcm9tICcuLi9jb3JlJztcblxuaW1wb3J0IE9wY29kZUJ1aWxkZXJEU0wgZnJvbSAnLi4vLi4vY29tcGlsZWQvb3Bjb2Rlcy9idWlsZGVyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSWZTeW50YXggZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICB0eXBlID0gXCJpZi1zdGF0ZW1lbnRcIjtcblxuICBwdWJsaWMgYXJnczogU3ludGF4LkFyZ3M7XG4gIHB1YmxpYyB0ZW1wbGF0ZXM6IFN5bnRheC5UZW1wbGF0ZXM7XG4gIHB1YmxpYyBpc1N0YXRpYyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHsgYXJncywgdGVtcGxhdGVzIH06IHsgYXJnczogU3ludGF4LkFyZ3MsIHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcyB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICAgIHRoaXMudGVtcGxhdGVzID0gdGVtcGxhdGVzO1xuICB9XG5cbiAgY29tcGlsZShkc2w6IE9wY29kZUJ1aWxkZXJEU0wpIHtcbiAgICAvLyAgICAgICAgUHV0QXJnc1xuICAgIC8vICAgICAgICBUZXN0KEVudmlyb25tZW50KVxuICAgIC8vICAgICAgICBFbnRlcihCRUdJTiwgRU5EKVxuICAgIC8vIEJFR0lOOiBOb29wXG4gICAgLy8gICAgICAgIEp1bXBVbmxlc3MoRUxTRSlcbiAgICAvLyAgICAgICAgRXZhbHVhdGUoZGVmYXVsdClcbiAgICAvLyAgICAgICAgSnVtcChFTkQpXG4gICAgLy8gRUxTRTogIE5vb3BcbiAgICAvLyAgICAgICAgRXZhbHVsYXRlKGludmVyc2UpXG4gICAgLy8gRU5EOiAgIE5vb3BcbiAgICAvLyAgICAgICAgRXhpdFxuXG4gICAgbGV0IHsgYXJncywgdGVtcGxhdGVzIH0gPSB0aGlzO1xuXG4gICAgZHNsLnB1dEFyZ3MoYXJncyk7XG4gICAgZHNsLnRlc3QoJ2Vudmlyb25tZW50Jyk7XG5cbiAgICBkc2wuYmxvY2soeyB0ZW1wbGF0ZXMgfSwgKGRzbCwgQkVHSU4sIEVORCkgPT4ge1xuICAgICAgaWYgKHRlbXBsYXRlcy5pbnZlcnNlKSB7XG4gICAgICAgIGRzbC5qdW1wVW5sZXNzKCdFTFNFJyk7XG4gICAgICAgIGRzbC5ldmFsdWF0ZSgnZGVmYXVsdCcpO1xuICAgICAgICBkc2wuanVtcChFTkQpO1xuICAgICAgICBkc2wubGFiZWwoJ0VMU0UnKTtcbiAgICAgICAgZHNsLmV2YWx1YXRlKCdpbnZlcnNlJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkc2wuanVtcFVubGVzcyhFTkQpO1xuICAgICAgICBkc2wuZXZhbHVhdGUoJ2RlZmF1bHQnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIl19
20197
20272
  enifed('glimmer-runtime/lib/syntax/builtins/in-element', ['exports', 'glimmer-runtime/lib/syntax'], function (exports, _glimmerRuntimeLibSyntax) {
20198
20273
  'use strict';
20199
20274
 
@@ -20215,9 +20290,9 @@ enifed('glimmer-runtime/lib/syntax/builtins/in-element', ['exports', 'glimmer-ru
20215
20290
  var args = this.args;
20216
20291
  var templates = this.templates;
20217
20292
 
20218
- dsl.block({ templates: templates, args: args }, function (dsl, BEGIN, END) {
20219
- dsl.putArgs(args);
20220
- dsl.test('simple');
20293
+ dsl.putArgs(args);
20294
+ dsl.test('simple');
20295
+ dsl.block({ templates: templates }, function (dsl, BEGIN, END) {
20221
20296
  dsl.jumpUnless(END);
20222
20297
  dsl.pushRemoteElement();
20223
20298
  dsl.evaluate('default');
@@ -20230,9 +20305,9 @@ enifed('glimmer-runtime/lib/syntax/builtins/in-element', ['exports', 'glimmer-ru
20230
20305
 
20231
20306
  exports.default = InElementSyntax;
20232
20307
  });
20233
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2J1aWx0aW5zL2luLWVsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBUUEsZUFBQTs4QkFBQSxlQUFBOztBQU9FLGlCQVBGLGVBQUEsQ0FPYyxJQUF1RSxFQUFBO2dCQUFyRSxJQUFJLEdBQU4sSUFBdUUsQ0FBckUsSUFBSTtnQkFBRSxTQUFTLEdBQWpCLElBQXVFLENBQS9ELFNBQVM7O0FBQzNCLHVDQUFPLENBQUM7QUFQVixnQkFBQSxDQUFBLElBQUksR0FBRyxzQkFBc0IsQ0FBQztBQUl2QixnQkFBQSxDQUFBLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFJdEIsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2pCLGdCQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztTQUM1Qjs7QUFYSCx1QkFBQSxXQWFFLE9BQU8sR0FBQSxpQkFBQyxHQUFxQixFQUFFLEdBQWdCLEVBQUE7Z0JBQ3ZDLElBQUksR0FBZ0IsSUFBSSxDQUF4QixJQUFJO2dCQUFFLFNBQVMsR0FBSyxJQUFJLENBQWxCLFNBQVM7O0FBRXJCLGVBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQVQsU0FBUyxFQUFFLElBQUksRUFBSixJQUFJLEVBQUUsRUFBRSxVQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFBO0FBQzdDLG1CQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xCLG1CQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ25CLG1CQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLG1CQUFHLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztBQUN4QixtQkFBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN4QixtQkFBRyxDQUFDLGdCQUFnQixFQUFFLENBQUM7YUFDeEIsQ0FBQyxDQUFDO1NBQ0o7O2VBeEJILGVBQUE7Z0NBUEUsU0FBUzs7c0JBT1gsZUFBQSIsImZpbGUiOiJpbi1lbGVtZW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU3RhdGVtZW50IGFzIFN0YXRlbWVudFN5bnRheFxufSBmcm9tICcuLi8uLi9zeW50YXgnO1xuXG5pbXBvcnQgT3Bjb2RlQnVpbGRlckRTTCBmcm9tICcuLi8uLi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXInO1xuaW1wb3J0ICogYXMgU3ludGF4IGZyb20gJy4uL2NvcmUnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSW5FbGVtZW50U3ludGF4IGV4dGVuZHMgU3RhdGVtZW50U3ludGF4IHtcbiAgdHlwZSA9IFwiaW4tZWxlbWVudC1zdGF0ZW1lbnRcIjtcblxuICBwdWJsaWMgYXJnczogU3ludGF4LkFyZ3M7XG4gIHB1YmxpYyB0ZW1wbGF0ZXM6IFN5bnRheC5UZW1wbGF0ZXM7XG4gIHB1YmxpYyBpc1N0YXRpYyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHsgYXJncywgdGVtcGxhdGVzIH06IHsgYXJnczogU3ludGF4LkFyZ3MsIHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcyB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICAgIHRoaXMudGVtcGxhdGVzID0gdGVtcGxhdGVzO1xuICB9XG5cbiAgY29tcGlsZShkc2w6IE9wY29kZUJ1aWxkZXJEU0wsIGVudjogRW52aXJvbm1lbnQpIHtcbiAgICBsZXQgeyBhcmdzLCB0ZW1wbGF0ZXMgfSA9IHRoaXM7XG5cbiAgICBkc2wuYmxvY2soeyB0ZW1wbGF0ZXMsIGFyZ3MgfSwgKGRzbCwgQkVHSU4sIEVORCkgPT4ge1xuICAgICAgZHNsLnB1dEFyZ3MoYXJncyk7XG4gICAgICBkc2wudGVzdCgnc2ltcGxlJyk7XG4gICAgICBkc2wuanVtcFVubGVzcyhFTkQpO1xuICAgICAgZHNsLnB1c2hSZW1vdGVFbGVtZW50KCk7XG4gICAgICBkc2wuZXZhbHVhdGUoJ2RlZmF1bHQnKTtcbiAgICAgIGRzbC5wb3BSZW1vdGVFbGVtZW50KCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
20234
- enifed('glimmer-runtime/lib/syntax/builtins/partial', ['exports', 'glimmer-runtime/lib/syntax', 'glimmer-runtime/lib/compiled/opcodes/vm', 'glimmer-runtime/lib/compiled/opcodes/partial'], function (exports, _glimmerRuntimeLibSyntax, _glimmerRuntimeLibCompiledOpcodesVm, _glimmerRuntimeLibCompiledOpcodesPartial) {
20235
- 'use strict';
20308
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2J1aWx0aW5zL2luLWVsZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBUUEsZUFBQTs4QkFBQSxlQUFBOztBQU9FLGlCQVBGLGVBQUEsQ0FPYyxJQUF1RSxFQUFBO2dCQUFyRSxJQUFJLEdBQU4sSUFBdUUsQ0FBckUsSUFBSTtnQkFBRSxTQUFTLEdBQWpCLElBQXVFLENBQS9ELFNBQVM7O0FBQzNCLHVDQUFPLENBQUM7QUFQVixnQkFBQSxDQUFBLElBQUksR0FBRyxzQkFBc0IsQ0FBQztBQUl2QixnQkFBQSxDQUFBLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFJdEIsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2pCLGdCQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztTQUM1Qjs7QUFYSCx1QkFBQSxXQWFFLE9BQU8sR0FBQSxpQkFBQyxHQUFxQixFQUFFLEdBQWdCLEVBQUE7Z0JBQ3ZDLElBQUksR0FBZ0IsSUFBSSxDQUF4QixJQUFJO2dCQUFFLFNBQVMsR0FBSyxJQUFJLENBQWxCLFNBQVM7O0FBRXJCLGVBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEIsZUFBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUVuQixlQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFULFNBQVMsRUFBRSxFQUFFLFVBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUE7QUFDdkMsbUJBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEIsbUJBQUcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0FBQ3hCLG1CQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3hCLG1CQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQzthQUN4QixDQUFDLENBQUM7U0FDSjs7ZUF6QkgsZUFBQTtnQ0FQRSxTQUFTOztzQkFPWCxlQUFBIiwiZmlsZSI6ImluLWVsZW1lbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTdGF0ZW1lbnQgYXMgU3RhdGVtZW50U3ludGF4XG59IGZyb20gJy4uLy4uL3N5bnRheCc7XG5cbmltcG9ydCBPcGNvZGVCdWlsZGVyRFNMIGZyb20gJy4uLy4uL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlcic7XG5pbXBvcnQgKiBhcyBTeW50YXggZnJvbSAnLi4vY29yZSc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJbkVsZW1lbnRTeW50YXggZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICB0eXBlID0gXCJpbi1lbGVtZW50LXN0YXRlbWVudFwiO1xuXG4gIHB1YmxpYyBhcmdzOiBTeW50YXguQXJncztcbiAgcHVibGljIHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcztcbiAgcHVibGljIGlzU3RhdGljID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoeyBhcmdzLCB0ZW1wbGF0ZXMgfTogeyBhcmdzOiBTeW50YXguQXJncywgdGVtcGxhdGVzOiBTeW50YXguVGVtcGxhdGVzIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYXJncyA9IGFyZ3M7XG4gICAgdGhpcy50ZW1wbGF0ZXMgPSB0ZW1wbGF0ZXM7XG4gIH1cblxuICBjb21waWxlKGRzbDogT3Bjb2RlQnVpbGRlckRTTCwgZW52OiBFbnZpcm9ubWVudCkge1xuICAgIGxldCB7IGFyZ3MsIHRlbXBsYXRlcyB9ID0gdGhpcztcblxuICAgIGRzbC5wdXRBcmdzKGFyZ3MpO1xuICAgIGRzbC50ZXN0KCdzaW1wbGUnKTtcblxuICAgIGRzbC5ibG9jayh7IHRlbXBsYXRlcyB9LCAoZHNsLCBCRUdJTiwgRU5EKSA9PiB7XG4gICAgICBkc2wuanVtcFVubGVzcyhFTkQpO1xuICAgICAgZHNsLnB1c2hSZW1vdGVFbGVtZW50KCk7XG4gICAgICBkc2wuZXZhbHVhdGUoJ2RlZmF1bHQnKTtcbiAgICAgIGRzbC5wb3BSZW1vdGVFbGVtZW50KCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
20309
+ enifed("glimmer-runtime/lib/syntax/builtins/partial", ["exports", "glimmer-runtime/lib/syntax"], function (exports, _glimmerRuntimeLibSyntax) {
20310
+ "use strict";
20236
20311
 
20237
20312
  var StaticPartialSyntax = (function (_StatementSyntax) {
20238
20313
  babelHelpers.inherits(StaticPartialSyntax, _StatementSyntax);
@@ -20243,14 +20318,14 @@ enifed('glimmer-runtime/lib/syntax/builtins/partial', ['exports', 'glimmer-runti
20243
20318
  this.type = "static-partial";
20244
20319
  }
20245
20320
 
20246
- StaticPartialSyntax.prototype.compile = function compile(compiler, env, symbolTable) {
20321
+ StaticPartialSyntax.prototype.compile = function compile(dsl, env, symbolTable) {
20247
20322
  var name = String(this.name.inner());
20248
20323
  if (!env.hasPartial(name, symbolTable)) {
20249
- throw new Error('Compile Error: ' + name + ' is not a partial');
20324
+ throw new Error("Compile Error: " + name + " is not a partial");
20250
20325
  }
20251
20326
  var definition = env.lookupPartial(name, symbolTable);
20252
- compiler.append(new _glimmerRuntimeLibCompiledOpcodesPartial.PutPartialDefinitionOpcode(definition));
20253
- compiler.append(new _glimmerRuntimeLibCompiledOpcodesPartial.EvaluatePartialOpcode(symbolTable));
20327
+ dsl.putPartialDefinition(definition);
20328
+ dsl.evaluatePartial();
20254
20329
  };
20255
20330
 
20256
20331
  return StaticPartialSyntax;
@@ -20267,30 +20342,20 @@ enifed('glimmer-runtime/lib/syntax/builtins/partial', ['exports', 'glimmer-runti
20267
20342
  this.type = "dynamic-partial";
20268
20343
  }
20269
20344
 
20270
- DynamicPartialSyntax.prototype.compile = function compile(compiler, env, symbolTable) {
20271
- var name = this.name.compile(compiler, env, symbolTable);
20272
- /*
20273
- // Enter(BEGIN, END)
20274
- // BEGIN: Noop
20275
- // PutArgs
20276
- // NameToPartial
20277
- // Test
20278
- // JumpUnless(END)
20279
- // EvaluatePartial
20280
- // END: Noop
20281
- // Exit
20282
- */
20283
- var BEGIN = new _glimmerRuntimeLibCompiledOpcodesVm.LabelOpcode("BEGIN");
20284
- var END = new _glimmerRuntimeLibCompiledOpcodesVm.LabelOpcode("END");
20285
- compiler.append(new _glimmerRuntimeLibCompiledOpcodesVm.EnterOpcode(BEGIN, END));
20286
- compiler.append(BEGIN);
20287
- compiler.append(new _glimmerRuntimeLibCompiledOpcodesVm.PutValueOpcode(name));
20288
- compiler.append(new _glimmerRuntimeLibCompiledOpcodesVm.TestOpcode(_glimmerRuntimeLibCompiledOpcodesVm.SimpleTest));
20289
- compiler.append(new _glimmerRuntimeLibCompiledOpcodesVm.JumpUnlessOpcode(END));
20290
- compiler.append(new _glimmerRuntimeLibCompiledOpcodesPartial.PutDynamicPartialDefinitionOpcode(symbolTable));
20291
- compiler.append(new _glimmerRuntimeLibCompiledOpcodesPartial.EvaluatePartialOpcode(symbolTable));
20292
- compiler.append(END);
20293
- compiler.append(new _glimmerRuntimeLibCompiledOpcodesVm.ExitOpcode());
20345
+ DynamicPartialSyntax.prototype.compile = function compile(dsl) {
20346
+ var name = this.name;
20347
+
20348
+ dsl.startLabels();
20349
+ dsl.putValue(name);
20350
+ dsl.test('simple');
20351
+ dsl.enter('BEGIN', 'END');
20352
+ dsl.label('BEGIN');
20353
+ dsl.jumpUnless('END');
20354
+ dsl.putDynamicPartialDefinition();
20355
+ dsl.evaluatePartial();
20356
+ dsl.label('END');
20357
+ dsl.exit();
20358
+ dsl.stopLabels();
20294
20359
  };
20295
20360
 
20296
20361
  return DynamicPartialSyntax;
@@ -20298,7 +20363,7 @@ enifed('glimmer-runtime/lib/syntax/builtins/partial', ['exports', 'glimmer-runti
20298
20363
 
20299
20364
  exports.DynamicPartialSyntax = DynamicPartialSyntax;
20300
20365
  });
20301
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2J1aWx0aW5zL3BhcnRpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBOEJBLG1CQUFBOzhCQUFBLG1CQUFBOztBQUdFLGlCQUhGLG1CQUFBLENBR3NCLElBQXVCLEVBQUE7QUFDekMsdUNBQU8sQ0FBQztBQURVLGdCQUFBLENBQUEsSUFBSSxHQUFKLElBQUksQ0FBbUI7QUFGcEMsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsZ0JBQWdCLENBQUM7U0FJOUI7O0FBTEgsMkJBQUEsV0FPRSxPQUFPLEdBQUEsaUJBQUMsUUFBb0MsRUFBRSxHQUFnQixFQUFFLFdBQXdCLEVBQUE7QUFDdEYsZ0JBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7QUFFckMsZ0JBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsRUFBRTtBQUN0QyxzQkFBTSxJQUFJLEtBQUsscUJBQW1CLElBQUksdUJBQW9CLENBQUM7YUFDNUQ7QUFFRCxnQkFBSSxVQUFVLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFFdEQsb0JBQVEsQ0FBQyxNQUFNLENBQUMsNkNBeEJsQiwwQkFBMEIsQ0F3QnVCLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDNUQsb0JBQVEsQ0FBQyxNQUFNLENBQUMsNkNBdkJsQixxQkFBcUIsQ0F1QnVCLFdBQVcsQ0FBQyxDQUFDLENBQUM7U0FDekQ7O2VBbEJILG1CQUFBO2dDQXpCRSxTQUFTOzs7O1FBOENYLG9CQUFBOzhCQUFBLG9CQUFBOztBQUdFLGlCQUhGLG9CQUFBLENBR3NCLElBQThCLEVBQUE7QUFDaEQsd0NBQU8sQ0FBQztBQURVLGdCQUFBLENBQUEsSUFBSSxHQUFKLElBQUksQ0FBMEI7QUFGM0MsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsaUJBQWlCLENBQUM7U0FJL0I7O0FBTEgsNEJBQUEsV0FPRSxPQUFPLEdBQUEsaUJBQUMsUUFBb0MsRUFBRSxHQUFnQixFQUFFLFdBQXdCLEVBQUE7QUFDdEYsZ0JBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7Ozs7Ozs7Ozs7OztBQWN6RCxnQkFBSSxLQUFLLEdBQUcsd0NBN0RkLFdBQVcsQ0E2RG1CLE9BQU8sQ0FBQyxDQUFDO0FBQ3JDLGdCQUFJLEdBQUcsR0FBRyx3Q0E5RFosV0FBVyxDQThEaUIsS0FBSyxDQUFDLENBQUM7QUFFakMsb0JBQVEsQ0FBQyxNQUFNLENBQUMsd0NBL0RsQixXQUFXLENBK0R1QixLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM3QyxvQkFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN2QixvQkFBUSxDQUFDLE1BQU0sQ0FBQyx3Q0FoRWxCLGNBQWMsQ0FnRXVCLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDMUMsb0JBQVEsQ0FBQyxNQUFNLENBQUMsd0NBL0RsQixVQUFVLHFDQURWLFVBQVUsQ0FnRWtDLENBQUMsQ0FBQztBQUM1QyxvQkFBUSxDQUFDLE1BQU0sQ0FBQyx3Q0EvRGxCLGdCQUFnQixDQStEdUIsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUMzQyxvQkFBUSxDQUFDLE1BQU0sQ0FBQyw2Q0ExRGxCLGlDQUFpQyxDQTBEdUIsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUNwRSxvQkFBUSxDQUFDLE1BQU0sQ0FBQyw2Q0ExRGxCLHFCQUFxQixDQTBEdUIsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUN4RCxvQkFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyQixvQkFBUSxDQUFDLE1BQU0sQ0FBQyx3Q0FsRWxCLFVBQVUsRUFrRXdCLENBQUMsQ0FBQztTQUNuQzs7ZUFsQ0gsb0JBQUE7Z0NBOUNFLFNBQVMiLCJmaWxlIjoicGFydGlhbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wYXF1ZSB9IGZyb20gXCJnbGltbWVyLXV0aWxcIjtcblxuaW1wb3J0IHtcbiAgQ29tcGlsZUludG8sXG4gIFN5bWJvbExvb2t1cCxcbiAgU3RhdGVtZW50IGFzIFN0YXRlbWVudFN5bnRheCxcbiAgRXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uU3ludGF4XG59IGZyb20gJy4uLy4uL3N5bnRheCc7XG5cbmltcG9ydCBTeW1ib2xUYWJsZSBmcm9tICcuLi8uLi9zeW1ib2wtdGFibGUnO1xuXG5pbXBvcnQge1xuICBMYWJlbE9wY29kZSxcbiAgRW50ZXJPcGNvZGUsXG4gIFB1dFZhbHVlT3Bjb2RlLFxuICBTaW1wbGVUZXN0LFxuICBUZXN0T3Bjb2RlLFxuICBKdW1wVW5sZXNzT3Bjb2RlLFxuICBFeGl0T3Bjb2RlXG59IGZyb20gJy4uLy4uL2NvbXBpbGVkL29wY29kZXMvdm0nO1xuXG5pbXBvcnQge1xuICBQdXRQYXJ0aWFsRGVmaW5pdGlvbk9wY29kZSxcbiAgUHV0RHluYW1pY1BhcnRpYWxEZWZpbml0aW9uT3Bjb2RlLFxuICBFdmFsdWF0ZVBhcnRpYWxPcGNvZGVcbn0gZnJvbSAnLi4vLi4vY29tcGlsZWQvb3Bjb2Rlcy9wYXJ0aWFsJztcblxuaW1wb3J0ICogYXMgU3ludGF4IGZyb20gJy4uL2NvcmUnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcblxuZXhwb3J0IGNsYXNzIFN0YXRpY1BhcnRpYWxTeW50YXggZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICBwdWJsaWMgdHlwZSA9IFwic3RhdGljLXBhcnRpYWxcIjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5hbWU6IFN5bnRheC5WYWx1ZTxhbnk+KSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGNvbXBpbGUoY29tcGlsZXI6IENvbXBpbGVJbnRvICYgU3ltYm9sTG9va3VwLCBlbnY6IEVudmlyb25tZW50LCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpIHtcbiAgICBsZXQgbmFtZSA9IFN0cmluZyh0aGlzLm5hbWUuaW5uZXIoKSk7XG5cbiAgICBpZiAoIWVudi5oYXNQYXJ0aWFsKG5hbWUsIHN5bWJvbFRhYmxlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21waWxlIEVycm9yOiAke25hbWV9IGlzIG5vdCBhIHBhcnRpYWxgKTtcbiAgICB9XG5cbiAgICBsZXQgZGVmaW5pdGlvbiA9IGVudi5sb29rdXBQYXJ0aWFsKG5hbWUsIHN5bWJvbFRhYmxlKTtcblxuICAgIGNvbXBpbGVyLmFwcGVuZChuZXcgUHV0UGFydGlhbERlZmluaXRpb25PcGNvZGUoZGVmaW5pdGlvbikpO1xuICAgIGNvbXBpbGVyLmFwcGVuZChuZXcgRXZhbHVhdGVQYXJ0aWFsT3Bjb2RlKHN5bWJvbFRhYmxlKSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIER5bmFtaWNQYXJ0aWFsU3ludGF4IGV4dGVuZHMgU3RhdGVtZW50U3ludGF4IHtcbiAgcHVibGljIHR5cGUgPSBcImR5bmFtaWMtcGFydGlhbFwiO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmFtZTogRXhwcmVzc2lvblN5bnRheDxPcGFxdWU+KSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGNvbXBpbGUoY29tcGlsZXI6IENvbXBpbGVJbnRvICYgU3ltYm9sTG9va3VwLCBlbnY6IEVudmlyb25tZW50LCBzeW1ib2xUYWJsZTogU3ltYm9sVGFibGUpIHtcbiAgICBsZXQgbmFtZSA9IHRoaXMubmFtZS5jb21waWxlKGNvbXBpbGVyLCBlbnYsIHN5bWJvbFRhYmxlKTtcblxuICAgIC8qXG4gICAgLy8gICAgICAgIEVudGVyKEJFR0lOLCBFTkQpXG4gICAgLy8gQkVHSU46IE5vb3BcbiAgICAvLyAgICAgICAgUHV0QXJnc1xuICAgIC8vICAgICAgICBOYW1lVG9QYXJ0aWFsXG4gICAgLy8gICAgICAgIFRlc3RcbiAgICAvLyAgICAgICAgSnVtcFVubGVzcyhFTkQpXG4gICAgLy8gICAgICAgIEV2YWx1YXRlUGFydGlhbFxuICAgIC8vIEVORDogICBOb29wXG4gICAgLy8gICAgICAgIEV4aXRcbiAgICAqL1xuXG4gICAgbGV0IEJFR0lOID0gbmV3IExhYmVsT3Bjb2RlKFwiQkVHSU5cIik7XG4gICAgbGV0IEVORCA9IG5ldyBMYWJlbE9wY29kZShcIkVORFwiKTtcblxuICAgIGNvbXBpbGVyLmFwcGVuZChuZXcgRW50ZXJPcGNvZGUoQkVHSU4sIEVORCkpO1xuICAgIGNvbXBpbGVyLmFwcGVuZChCRUdJTik7XG4gICAgY29tcGlsZXIuYXBwZW5kKG5ldyBQdXRWYWx1ZU9wY29kZShuYW1lKSk7XG4gICAgY29tcGlsZXIuYXBwZW5kKG5ldyBUZXN0T3Bjb2RlKFNpbXBsZVRlc3QpKTtcbiAgICBjb21waWxlci5hcHBlbmQobmV3IEp1bXBVbmxlc3NPcGNvZGUoRU5EKSk7XG4gICAgY29tcGlsZXIuYXBwZW5kKG5ldyBQdXREeW5hbWljUGFydGlhbERlZmluaXRpb25PcGNvZGUoc3ltYm9sVGFibGUpKTtcbiAgICBjb21waWxlci5hcHBlbmQobmV3IEV2YWx1YXRlUGFydGlhbE9wY29kZShzeW1ib2xUYWJsZSkpO1xuICAgIGNvbXBpbGVyLmFwcGVuZChFTkQpO1xuICAgIGNvbXBpbGVyLmFwcGVuZChuZXcgRXhpdE9wY29kZSgpKTtcbiAgfVxufVxuIl19
20366
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2J1aWx0aW5zL3BhcnRpYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBY0EsbUJBQUE7OEJBQUEsbUJBQUE7O0FBR0UsaUJBSEYsbUJBQUEsQ0FHc0IsSUFBdUIsRUFBQTtBQUN6Qyx1Q0FBTyxDQUFDO0FBRFUsZ0JBQUEsQ0FBQSxJQUFJLEdBQUosSUFBSSxDQUFtQjtBQUZwQyxnQkFBQSxDQUFBLElBQUksR0FBRyxnQkFBZ0IsQ0FBQztTQUk5Qjs7QUFMSCwyQkFBQSxXQU9FLE9BQU8sR0FBQSxpQkFBQyxHQUFxQixFQUFFLEdBQWdCLEVBQUUsV0FBd0IsRUFBQTtBQUN2RSxnQkFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUVyQyxnQkFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxFQUFFO0FBQ3RDLHNCQUFNLElBQUksS0FBSyxxQkFBbUIsSUFBSSx1QkFBb0IsQ0FBQzthQUM1RDtBQUVELGdCQUFJLFVBQVUsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztBQUV0RCxlQUFHLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDckMsZUFBRyxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3ZCOztlQWxCSCxtQkFBQTtnQ0FYRSxTQUFTOzs7O1FBZ0NYLG9CQUFBOzhCQUFBLG9CQUFBOztBQUdFLGlCQUhGLG9CQUFBLENBR3NCLElBQThCLEVBQUE7QUFDaEQsd0NBQU8sQ0FBQztBQURVLGdCQUFBLENBQUEsSUFBSSxHQUFKLElBQUksQ0FBMEI7QUFGM0MsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsaUJBQWlCLENBQUM7U0FJL0I7O0FBTEgsNEJBQUEsV0FPRSxPQUFPLEdBQUEsaUJBQUMsR0FBcUIsRUFBQTtnQkFDckIsSUFBSSxHQUFLLElBQUksQ0FBYixJQUFJOztBQUVWLGVBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztBQUVsQixlQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25CLGVBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbkIsZUFBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDMUIsZUFBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNuQixlQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RCLGVBQUcsQ0FBQywyQkFBMkIsRUFBRSxDQUFDO0FBQ2xDLGVBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztBQUN0QixlQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pCLGVBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUVYLGVBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNsQjs7ZUF2Qkgsb0JBQUE7Z0NBaENFLFNBQVMiLCJmaWxlIjoicGFydGlhbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wYXF1ZSB9IGZyb20gXCJnbGltbWVyLXV0aWxcIjtcblxuaW1wb3J0IHtcbiAgU3RhdGVtZW50IGFzIFN0YXRlbWVudFN5bnRheCxcbiAgRXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uU3ludGF4XG59IGZyb20gJy4uLy4uL3N5bnRheCc7XG5cbmltcG9ydCBTeW1ib2xUYWJsZSBmcm9tICcuLi8uLi9zeW1ib2wtdGFibGUnO1xuXG5pbXBvcnQgT3Bjb2RlQnVpbGRlckRTTCBmcm9tICcuLi8uLi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXInO1xuXG5pbXBvcnQgKiBhcyBTeW50YXggZnJvbSAnLi4vY29yZSc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQnO1xuXG5leHBvcnQgY2xhc3MgU3RhdGljUGFydGlhbFN5bnRheCBleHRlbmRzIFN0YXRlbWVudFN5bnRheCB7XG4gIHB1YmxpYyB0eXBlID0gXCJzdGF0aWMtcGFydGlhbFwiO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmFtZTogU3ludGF4LlZhbHVlPGFueT4pIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgY29tcGlsZShkc2w6IE9wY29kZUJ1aWxkZXJEU0wsIGVudjogRW52aXJvbm1lbnQsIHN5bWJvbFRhYmxlOiBTeW1ib2xUYWJsZSkge1xuICAgIGxldCBuYW1lID0gU3RyaW5nKHRoaXMubmFtZS5pbm5lcigpKTtcblxuICAgIGlmICghZW52Lmhhc1BhcnRpYWwobmFtZSwgc3ltYm9sVGFibGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBpbGUgRXJyb3I6ICR7bmFtZX0gaXMgbm90IGEgcGFydGlhbGApO1xuICAgIH1cblxuICAgIGxldCBkZWZpbml0aW9uID0gZW52Lmxvb2t1cFBhcnRpYWwobmFtZSwgc3ltYm9sVGFibGUpO1xuXG4gICAgZHNsLnB1dFBhcnRpYWxEZWZpbml0aW9uKGRlZmluaXRpb24pO1xuICAgIGRzbC5ldmFsdWF0ZVBhcnRpYWwoKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRHluYW1pY1BhcnRpYWxTeW50YXggZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICBwdWJsaWMgdHlwZSA9IFwiZHluYW1pYy1wYXJ0aWFsXCI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuYW1lOiBFeHByZXNzaW9uU3ludGF4PE9wYXF1ZT4pIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgY29tcGlsZShkc2w6IE9wY29kZUJ1aWxkZXJEU0wpIHtcbiAgICBsZXQgeyBuYW1lIH0gPSB0aGlzO1xuXG4gICAgZHNsLnN0YXJ0TGFiZWxzKCk7XG5cbiAgICBkc2wucHV0VmFsdWUobmFtZSk7XG4gICAgZHNsLnRlc3QoJ3NpbXBsZScpO1xuICAgIGRzbC5lbnRlcignQkVHSU4nLCAnRU5EJyk7XG4gICAgZHNsLmxhYmVsKCdCRUdJTicpO1xuICAgIGRzbC5qdW1wVW5sZXNzKCdFTkQnKTtcbiAgICBkc2wucHV0RHluYW1pY1BhcnRpYWxEZWZpbml0aW9uKCk7XG4gICAgZHNsLmV2YWx1YXRlUGFydGlhbCgpO1xuICAgIGRzbC5sYWJlbCgnRU5EJyk7XG4gICAgZHNsLmV4aXQoKTtcblxuICAgIGRzbC5zdG9wTGFiZWxzKCk7XG4gIH1cbn1cbiJdfQ==
20302
20367
  enifed('glimmer-runtime/lib/syntax/builtins/unless', ['exports', 'glimmer-runtime/lib/syntax'], function (exports, _glimmerRuntimeLibSyntax) {
20303
20368
  'use strict';
20304
20369
 
@@ -20317,9 +20382,9 @@ enifed('glimmer-runtime/lib/syntax/builtins/unless', ['exports', 'glimmer-runtim
20317
20382
  }
20318
20383
 
20319
20384
  UnlessSyntax.prototype.compile = function compile(dsl, env) {
20385
+ // PutArgs
20320
20386
  // Enter(BEGIN, END)
20321
20387
  // BEGIN: Noop
20322
- // PutArgs
20323
20388
  // Test(Environment)
20324
20389
  // JumpIf(ELSE)
20325
20390
  // Evaluate(default)
@@ -20331,8 +20396,9 @@ enifed('glimmer-runtime/lib/syntax/builtins/unless', ['exports', 'glimmer-runtim
20331
20396
  var args = this.args;
20332
20397
  var templates = this.templates;
20333
20398
 
20334
- dsl.block({ templates: templates, args: args }, function (dsl) {
20335
- dsl.test('environment');
20399
+ dsl.putArgs(args);
20400
+ dsl.test('environment');
20401
+ dsl.block({ templates: templates }, function (dsl) {
20336
20402
  if (templates.inverse) {
20337
20403
  dsl.jumpIf('ELSE');
20338
20404
  dsl.evaluate('default');
@@ -20351,7 +20417,7 @@ enifed('glimmer-runtime/lib/syntax/builtins/unless', ['exports', 'glimmer-runtim
20351
20417
 
20352
20418
  exports.default = UnlessSyntax;
20353
20419
  });
20354
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2J1aWx0aW5zL3VubGVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUFVQSxZQUFBOzhCQUFBLFlBQUE7O0FBT0UsaUJBUEYsWUFBQSxDQU9jLElBQXVFLEVBQUE7Z0JBQXJFLElBQUksR0FBTixJQUF1RSxDQUFyRSxJQUFJO2dCQUFFLFNBQVMsR0FBakIsSUFBdUUsQ0FBL0QsU0FBUzs7QUFDM0IsdUNBQU8sQ0FBQztBQVBWLGdCQUFBLENBQUEsSUFBSSxHQUFHLGtCQUFrQixDQUFDO0FBSW5CLGdCQUFBLENBQUEsUUFBUSxHQUFHLEtBQUssQ0FBQztBQUl0QixnQkFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDakIsZ0JBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1NBQzVCOztBQVhILG9CQUFBLFdBYUUsT0FBTyxHQUFBLGlCQUFDLEdBQXFCLEVBQUUsR0FBZ0IsRUFBQTs7Ozs7Ozs7Ozs7O2dCQWF2QyxJQUFJLEdBQWdCLElBQUksQ0FBeEIsSUFBSTtnQkFBRSxTQUFTLEdBQUssSUFBSSxDQUFsQixTQUFTOztBQUVyQixlQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFULFNBQVMsRUFBRSxJQUFJLEVBQUosSUFBSSxFQUFFLEVBQUUsVUFBQSxHQUFHLEVBQUE7QUFDaEMsbUJBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7QUFFeEIsb0JBQUksU0FBUyxDQUFDLE9BQU8sRUFBRTtBQUNyQix1QkFBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNuQix1QkFBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN4Qix1QkFBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNoQix1QkFBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsQix1QkFBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDekIsTUFBTTtBQUNMLHVCQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xCLHVCQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUN6QjthQUNGLENBQUMsQ0FBQztTQUNKOztlQTFDSCxZQUFBO2dDQVRFLFNBQVM7O3NCQVNYLFlBQUEiLCJmaWxlIjoidW5sZXNzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU3RhdGVtZW50IGFzIFN0YXRlbWVudFN5bnRheFxufSBmcm9tICcuLi8uLi9zeW50YXgnO1xuXG5pbXBvcnQgKiBhcyBTeW50YXggZnJvbSAnLi4vY29yZSc7XG5cbmltcG9ydCBPcGNvZGVCdWlsZGVyRFNMIGZyb20gJy4uLy4uL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlcic7XG5cbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFVubGVzc1N5bnRheCBleHRlbmRzIFN0YXRlbWVudFN5bnRheCB7XG4gIHR5cGUgPSBcInVubGVzcy1zdGF0ZW1lbnRcIjtcblxuICBwdWJsaWMgYXJnczogU3ludGF4LkFyZ3M7XG4gIHB1YmxpYyB0ZW1wbGF0ZXM6IFN5bnRheC5UZW1wbGF0ZXM7XG4gIHB1YmxpYyBpc1N0YXRpYyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHsgYXJncywgdGVtcGxhdGVzIH06IHsgYXJnczogU3ludGF4LkFyZ3MsIHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcyB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICAgIHRoaXMudGVtcGxhdGVzID0gdGVtcGxhdGVzO1xuICB9XG5cbiAgY29tcGlsZShkc2w6IE9wY29kZUJ1aWxkZXJEU0wsIGVudjogRW52aXJvbm1lbnQpIHtcbiAgICAvLyAgICAgICAgRW50ZXIoQkVHSU4sIEVORClcbiAgICAvLyBCRUdJTjogTm9vcFxuICAgIC8vICAgICAgICBQdXRBcmdzXG4gICAgLy8gICAgICAgIFRlc3QoRW52aXJvbm1lbnQpXG4gICAgLy8gICAgICAgIEp1bXBJZihFTFNFKVxuICAgIC8vICAgICAgICBFdmFsdWF0ZShkZWZhdWx0KVxuICAgIC8vICAgICAgICBKdW1wKEVORClcbiAgICAvLyBFTFNFOiAgTm9vcFxuICAgIC8vICAgICAgICBFdmFsdWxhdGUoaW52ZXJzZSlcbiAgICAvLyBFTkQ6ICAgTm9vcFxuICAgIC8vICAgICAgICBFeGl0XG5cbiAgICBsZXQgeyBhcmdzLCB0ZW1wbGF0ZXMgfSA9IHRoaXM7XG5cbiAgICBkc2wuYmxvY2soeyB0ZW1wbGF0ZXMsIGFyZ3MgfSwgZHNsID0+IHtcbiAgICAgIGRzbC50ZXN0KCdlbnZpcm9ubWVudCcpO1xuXG4gICAgICBpZiAodGVtcGxhdGVzLmludmVyc2UpIHtcbiAgICAgICAgZHNsLmp1bXBJZignRUxTRScpO1xuICAgICAgICBkc2wuZXZhbHVhdGUoJ2RlZmF1bHQnKTtcbiAgICAgICAgZHNsLmp1bXAoJ0VORCcpO1xuICAgICAgICBkc2wubGFiZWwoJ0VMU0UnKTtcbiAgICAgICAgZHNsLmV2YWx1YXRlKCdpbnZlcnNlJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkc2wuanVtcElmKCdFTkQnKTtcbiAgICAgICAgZHNsLmV2YWx1YXRlKCdkZWZhdWx0Jyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
20420
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2J1aWx0aW5zL3VubGVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7UUFVQSxZQUFBOzhCQUFBLFlBQUE7O0FBT0UsaUJBUEYsWUFBQSxDQU9jLElBQXVFLEVBQUE7Z0JBQXJFLElBQUksR0FBTixJQUF1RSxDQUFyRSxJQUFJO2dCQUFFLFNBQVMsR0FBakIsSUFBdUUsQ0FBL0QsU0FBUzs7QUFDM0IsdUNBQU8sQ0FBQztBQVBWLGdCQUFBLENBQUEsSUFBSSxHQUFHLGtCQUFrQixDQUFDO0FBSW5CLGdCQUFBLENBQUEsUUFBUSxHQUFHLEtBQUssQ0FBQztBQUl0QixnQkFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDakIsZ0JBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1NBQzVCOztBQVhILG9CQUFBLFdBYUUsT0FBTyxHQUFBLGlCQUFDLEdBQXFCLEVBQUUsR0FBZ0IsRUFBQTs7Ozs7Ozs7Ozs7O2dCQWF2QyxJQUFJLEdBQWdCLElBQUksQ0FBeEIsSUFBSTtnQkFBRSxTQUFTLEdBQUssSUFBSSxDQUFsQixTQUFTOztBQUVyQixlQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xCLGVBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7QUFFeEIsZUFBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBVCxTQUFTLEVBQUUsRUFBRSxVQUFBLEdBQUcsRUFBQTtBQUMxQixvQkFBSSxTQUFTLENBQUMsT0FBTyxFQUFFO0FBQ3JCLHVCQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25CLHVCQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3hCLHVCQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hCLHVCQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2xCLHVCQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUN6QixNQUFNO0FBQ0wsdUJBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbEIsdUJBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ3pCO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7O2VBM0NILFlBQUE7Z0NBVEUsU0FBUzs7c0JBU1gsWUFBQSIsImZpbGUiOiJ1bmxlc3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTdGF0ZW1lbnQgYXMgU3RhdGVtZW50U3ludGF4XG59IGZyb20gJy4uLy4uL3N5bnRheCc7XG5cbmltcG9ydCAqIGFzIFN5bnRheCBmcm9tICcuLi9jb3JlJztcblxuaW1wb3J0IE9wY29kZUJ1aWxkZXJEU0wgZnJvbSAnLi4vLi4vY29tcGlsZWQvb3Bjb2Rlcy9idWlsZGVyJztcblxuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVW5sZXNzU3ludGF4IGV4dGVuZHMgU3RhdGVtZW50U3ludGF4IHtcbiAgdHlwZSA9IFwidW5sZXNzLXN0YXRlbWVudFwiO1xuXG4gIHB1YmxpYyBhcmdzOiBTeW50YXguQXJncztcbiAgcHVibGljIHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcztcbiAgcHVibGljIGlzU3RhdGljID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoeyBhcmdzLCB0ZW1wbGF0ZXMgfTogeyBhcmdzOiBTeW50YXguQXJncywgdGVtcGxhdGVzOiBTeW50YXguVGVtcGxhdGVzIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYXJncyA9IGFyZ3M7XG4gICAgdGhpcy50ZW1wbGF0ZXMgPSB0ZW1wbGF0ZXM7XG4gIH1cblxuICBjb21waWxlKGRzbDogT3Bjb2RlQnVpbGRlckRTTCwgZW52OiBFbnZpcm9ubWVudCkge1xuICAgIC8vICAgICAgICBQdXRBcmdzXG4gICAgLy8gICAgICAgIEVudGVyKEJFR0lOLCBFTkQpXG4gICAgLy8gQkVHSU46IE5vb3BcbiAgICAvLyAgICAgICAgVGVzdChFbnZpcm9ubWVudClcbiAgICAvLyAgICAgICAgSnVtcElmKEVMU0UpXG4gICAgLy8gICAgICAgIEV2YWx1YXRlKGRlZmF1bHQpXG4gICAgLy8gICAgICAgIEp1bXAoRU5EKVxuICAgIC8vIEVMU0U6ICBOb29wXG4gICAgLy8gICAgICAgIEV2YWx1bGF0ZShpbnZlcnNlKVxuICAgIC8vIEVORDogICBOb29wXG4gICAgLy8gICAgICAgIEV4aXRcblxuICAgIGxldCB7IGFyZ3MsIHRlbXBsYXRlcyB9ID0gdGhpcztcblxuICAgIGRzbC5wdXRBcmdzKGFyZ3MpO1xuICAgIGRzbC50ZXN0KCdlbnZpcm9ubWVudCcpO1xuXG4gICAgZHNsLmJsb2NrKHsgdGVtcGxhdGVzIH0sIGRzbCA9PiB7XG4gICAgICBpZiAodGVtcGxhdGVzLmludmVyc2UpIHtcbiAgICAgICAgZHNsLmp1bXBJZignRUxTRScpO1xuICAgICAgICBkc2wuZXZhbHVhdGUoJ2RlZmF1bHQnKTtcbiAgICAgICAgZHNsLmp1bXAoJ0VORCcpO1xuICAgICAgICBkc2wubGFiZWwoJ0VMU0UnKTtcbiAgICAgICAgZHNsLmV2YWx1YXRlKCdpbnZlcnNlJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkc2wuanVtcElmKCdFTkQnKTtcbiAgICAgICAgZHNsLmV2YWx1YXRlKCdkZWZhdWx0Jyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
20355
20421
  enifed('glimmer-runtime/lib/syntax/builtins/with-dynamic-vars', ['exports', 'glimmer-runtime/lib/syntax'], function (exports, _glimmerRuntimeLibSyntax) {
20356
20422
  'use strict';
20357
20423
 
@@ -20406,10 +20472,10 @@ enifed('glimmer-runtime/lib/syntax/builtins/with', ['exports', 'glimmer-runtime/
20406
20472
  }
20407
20473
 
20408
20474
  WithSyntax.prototype.compile = function compile(dsl, env) {
20409
- // Enter(BEGIN, END)
20410
- // BEGIN: Noop
20411
20475
  // PutArgs
20412
20476
  // Test(Environment)
20477
+ // Enter(BEGIN, END)
20478
+ // BEGIN: Noop
20413
20479
  // JumpUnless(ELSE)
20414
20480
  // Evaluate(default)
20415
20481
  // Jump(END)
@@ -20420,8 +20486,9 @@ enifed('glimmer-runtime/lib/syntax/builtins/with', ['exports', 'glimmer-runtime/
20420
20486
  var args = this.args;
20421
20487
  var templates = this.templates;
20422
20488
 
20423
- dsl.block({ templates: templates, args: args }, function (dsl, BEGIN, END) {
20424
- dsl.test('environment');
20489
+ dsl.putArgs(args);
20490
+ dsl.test('environment');
20491
+ dsl.block({ templates: templates }, function (dsl, BEGIN, END) {
20425
20492
  if (templates.inverse) {
20426
20493
  dsl.jumpUnless('ELSE');
20427
20494
  dsl.evaluate('default');
@@ -20440,7 +20507,7 @@ enifed('glimmer-runtime/lib/syntax/builtins/with', ['exports', 'glimmer-runtime/
20440
20507
 
20441
20508
  exports.default = WithSyntax;
20442
20509
  });
20443
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2J1aWx0aW5zL3dpdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBU0EsVUFBQTs4QkFBQSxVQUFBOztBQU9FLGlCQVBGLFVBQUEsQ0FPYyxJQUF1RSxFQUFBO2dCQUFyRSxJQUFJLEdBQU4sSUFBdUUsQ0FBckUsSUFBSTtnQkFBRSxTQUFTLEdBQWpCLElBQXVFLENBQS9ELFNBQVM7O0FBQzNCLHVDQUFPLENBQUM7QUFQVixnQkFBQSxDQUFBLElBQUksR0FBRyxnQkFBZ0IsQ0FBQztBQUlqQixnQkFBQSxDQUFBLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFJdEIsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2pCLGdCQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztTQUM1Qjs7QUFYSCxrQkFBQSxXQWFFLE9BQU8sR0FBQSxpQkFBQyxHQUFxQixFQUFFLEdBQWdCLEVBQUE7Ozs7Ozs7Ozs7OztnQkFhdkMsSUFBSSxHQUFnQixJQUFJLENBQXhCLElBQUk7Z0JBQUUsU0FBUyxHQUFLLElBQUksQ0FBbEIsU0FBUzs7QUFFckIsZUFBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLFNBQVMsRUFBVCxTQUFTLEVBQUUsSUFBSSxFQUFKLElBQUksRUFBRSxFQUFFLFVBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUE7QUFDN0MsbUJBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7QUFFeEIsb0JBQUksU0FBUyxDQUFDLE9BQU8sRUFBRTtBQUNyQix1QkFBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN2Qix1QkFBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN4Qix1QkFBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNkLHVCQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2xCLHVCQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUN6QixNQUFNO0FBQ0wsdUJBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEIsdUJBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ3pCO2FBQ0YsQ0FBQyxDQUFDO1NBQ0o7O2VBMUNILFVBQUE7Z0NBUkUsU0FBUzs7c0JBUVgsVUFBQSIsImZpbGUiOiJ3aXRoLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU3RhdGVtZW50IGFzIFN0YXRlbWVudFN5bnRheFxufSBmcm9tICcuLi8uLi9zeW50YXgnO1xuXG5pbXBvcnQgT3Bjb2RlQnVpbGRlckRTTCBmcm9tICcuLi8uLi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXInO1xuXG5pbXBvcnQgKiBhcyBTeW50YXggZnJvbSAnLi4vY29yZSc7XG5pbXBvcnQgRW52aXJvbm1lbnQgZnJvbSAnLi4vLi4vZW52aXJvbm1lbnQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXaXRoU3ludGF4IGV4dGVuZHMgU3RhdGVtZW50U3ludGF4IHtcbiAgdHlwZSA9IFwid2l0aC1zdGF0ZW1lbnRcIjtcblxuICBwdWJsaWMgYXJnczogU3ludGF4LkFyZ3M7XG4gIHB1YmxpYyB0ZW1wbGF0ZXM6IFN5bnRheC5UZW1wbGF0ZXM7XG4gIHB1YmxpYyBpc1N0YXRpYyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHsgYXJncywgdGVtcGxhdGVzIH06IHsgYXJnczogU3ludGF4LkFyZ3MsIHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcyB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFyZ3MgPSBhcmdzO1xuICAgIHRoaXMudGVtcGxhdGVzID0gdGVtcGxhdGVzO1xuICB9XG5cbiAgY29tcGlsZShkc2w6IE9wY29kZUJ1aWxkZXJEU0wsIGVudjogRW52aXJvbm1lbnQpIHtcbiAgICAvLyAgICAgICAgRW50ZXIoQkVHSU4sIEVORClcbiAgICAvLyBCRUdJTjogTm9vcFxuICAgIC8vICAgICAgICBQdXRBcmdzXG4gICAgLy8gICAgICAgIFRlc3QoRW52aXJvbm1lbnQpXG4gICAgLy8gICAgICAgIEp1bXBVbmxlc3MoRUxTRSlcbiAgICAvLyAgICAgICAgRXZhbHVhdGUoZGVmYXVsdClcbiAgICAvLyAgICAgICAgSnVtcChFTkQpXG4gICAgLy8gRUxTRTogIE5vb3BcbiAgICAvLyAgICAgICAgRXZhbHVhdGUoaW52ZXJzZSlcbiAgICAvLyBFTkQ6ICAgTm9vcFxuICAgIC8vICAgICAgICBFeGl0XG5cbiAgICBsZXQgeyBhcmdzLCB0ZW1wbGF0ZXMgfSA9IHRoaXM7XG5cbiAgICBkc2wuYmxvY2soeyB0ZW1wbGF0ZXMsIGFyZ3MgfSwgKGRzbCwgQkVHSU4sIEVORCkgPT4ge1xuICAgICAgZHNsLnRlc3QoJ2Vudmlyb25tZW50Jyk7XG5cbiAgICAgIGlmICh0ZW1wbGF0ZXMuaW52ZXJzZSkge1xuICAgICAgICBkc2wuanVtcFVubGVzcygnRUxTRScpO1xuICAgICAgICBkc2wuZXZhbHVhdGUoJ2RlZmF1bHQnKTtcbiAgICAgICAgZHNsLmp1bXAoRU5EKTtcbiAgICAgICAgZHNsLmxhYmVsKCdFTFNFJyk7XG4gICAgICAgIGRzbC5ldmFsdWF0ZSgnaW52ZXJzZScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZHNsLmp1bXBVbmxlc3MoRU5EKTtcbiAgICAgICAgZHNsLmV2YWx1YXRlKCdkZWZhdWx0Jyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
20510
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvc3ludGF4L2J1aWx0aW5zL3dpdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBU0EsVUFBQTs4QkFBQSxVQUFBOztBQU9FLGlCQVBGLFVBQUEsQ0FPYyxJQUF1RSxFQUFBO2dCQUFyRSxJQUFJLEdBQU4sSUFBdUUsQ0FBckUsSUFBSTtnQkFBRSxTQUFTLEdBQWpCLElBQXVFLENBQS9ELFNBQVM7O0FBQzNCLHVDQUFPLENBQUM7QUFQVixnQkFBQSxDQUFBLElBQUksR0FBRyxnQkFBZ0IsQ0FBQztBQUlqQixnQkFBQSxDQUFBLFFBQVEsR0FBRyxLQUFLLENBQUM7QUFJdEIsZ0JBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ2pCLGdCQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztTQUM1Qjs7QUFYSCxrQkFBQSxXQWFFLE9BQU8sR0FBQSxpQkFBQyxHQUFxQixFQUFFLEdBQWdCLEVBQUE7Ozs7Ozs7Ozs7OztnQkFhdkMsSUFBSSxHQUFnQixJQUFJLENBQXhCLElBQUk7Z0JBQUUsU0FBUyxHQUFLLElBQUksQ0FBbEIsU0FBUzs7QUFFckIsZUFBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsQixlQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBRXhCLGVBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQVQsU0FBUyxFQUFFLEVBQUUsVUFBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBQTtBQUN2QyxvQkFBSSxTQUFTLENBQUMsT0FBTyxFQUFFO0FBQ3JCLHVCQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZCLHVCQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3hCLHVCQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2QsdUJBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbEIsdUJBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ3pCLE1BQU07QUFDTCx1QkFBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQix1QkFBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDekI7YUFDRixDQUFDLENBQUM7U0FDSjs7ZUEzQ0gsVUFBQTtnQ0FSRSxTQUFTOztzQkFRWCxVQUFBIiwiZmlsZSI6IndpdGguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTdGF0ZW1lbnQgYXMgU3RhdGVtZW50U3ludGF4XG59IGZyb20gJy4uLy4uL3N5bnRheCc7XG5cbmltcG9ydCBPcGNvZGVCdWlsZGVyRFNMIGZyb20gJy4uLy4uL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlcic7XG5cbmltcG9ydCAqIGFzIFN5bnRheCBmcm9tICcuLi9jb3JlJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdpdGhTeW50YXggZXh0ZW5kcyBTdGF0ZW1lbnRTeW50YXgge1xuICB0eXBlID0gXCJ3aXRoLXN0YXRlbWVudFwiO1xuXG4gIHB1YmxpYyBhcmdzOiBTeW50YXguQXJncztcbiAgcHVibGljIHRlbXBsYXRlczogU3ludGF4LlRlbXBsYXRlcztcbiAgcHVibGljIGlzU3RhdGljID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoeyBhcmdzLCB0ZW1wbGF0ZXMgfTogeyBhcmdzOiBTeW50YXguQXJncywgdGVtcGxhdGVzOiBTeW50YXguVGVtcGxhdGVzIH0pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYXJncyA9IGFyZ3M7XG4gICAgdGhpcy50ZW1wbGF0ZXMgPSB0ZW1wbGF0ZXM7XG4gIH1cblxuICBjb21waWxlKGRzbDogT3Bjb2RlQnVpbGRlckRTTCwgZW52OiBFbnZpcm9ubWVudCkge1xuICAgIC8vICAgICAgICBQdXRBcmdzXG4gICAgLy8gICAgICAgIFRlc3QoRW52aXJvbm1lbnQpXG4gICAgLy8gICAgICAgIEVudGVyKEJFR0lOLCBFTkQpXG4gICAgLy8gQkVHSU46IE5vb3BcbiAgICAvLyAgICAgICAgSnVtcFVubGVzcyhFTFNFKVxuICAgIC8vICAgICAgICBFdmFsdWF0ZShkZWZhdWx0KVxuICAgIC8vICAgICAgICBKdW1wKEVORClcbiAgICAvLyBFTFNFOiAgTm9vcFxuICAgIC8vICAgICAgICBFdmFsdWF0ZShpbnZlcnNlKVxuICAgIC8vIEVORDogICBOb29wXG4gICAgLy8gICAgICAgIEV4aXRcblxuICAgIGxldCB7IGFyZ3MsIHRlbXBsYXRlcyB9ID0gdGhpcztcblxuICAgIGRzbC5wdXRBcmdzKGFyZ3MpO1xuICAgIGRzbC50ZXN0KCdlbnZpcm9ubWVudCcpO1xuXG4gICAgZHNsLmJsb2NrKHsgdGVtcGxhdGVzIH0sIChkc2wsIEJFR0lOLCBFTkQpID0+IHtcbiAgICAgIGlmICh0ZW1wbGF0ZXMuaW52ZXJzZSkge1xuICAgICAgICBkc2wuanVtcFVubGVzcygnRUxTRScpO1xuICAgICAgICBkc2wuZXZhbHVhdGUoJ2RlZmF1bHQnKTtcbiAgICAgICAgZHNsLmp1bXAoRU5EKTtcbiAgICAgICAgZHNsLmxhYmVsKCdFTFNFJyk7XG4gICAgICAgIGRzbC5ldmFsdWF0ZSgnaW52ZXJzZScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZHNsLmp1bXBVbmxlc3MoRU5EKTtcbiAgICAgICAgZHNsLmV2YWx1YXRlKCdkZWZhdWx0Jyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
20444
20511
  enifed('glimmer-runtime/lib/syntax/core', ['exports', 'glimmer-runtime/lib/syntax', 'glimmer-runtime/lib/syntax/builtins/partial', 'glimmer-runtime/lib/opcodes', 'glimmer-runtime/lib/compiled/opcodes/vm', 'glimmer-runtime/lib/compiled/opcodes/component', 'glimmer-runtime/lib/compiled/opcodes/dom', 'glimmer-runtime/lib/syntax/expressions', 'glimmer-runtime/lib/compiled/expressions/args', 'glimmer-runtime/lib/compiled/expressions/value', 'glimmer-runtime/lib/compiled/expressions/lookups', 'glimmer-runtime/lib/compiled/expressions/has-block', 'glimmer-runtime/lib/compiled/expressions/has-block-params', 'glimmer-runtime/lib/compiled/expressions/helper', 'glimmer-runtime/lib/compiled/expressions/concat', 'glimmer-runtime/lib/utils', 'glimmer-runtime/lib/compiled/opcodes/content'], function (exports, _glimmerRuntimeLibSyntax, _glimmerRuntimeLibSyntaxBuiltinsPartial, _glimmerRuntimeLibOpcodes, _glimmerRuntimeLibCompiledOpcodesVm, _glimmerRuntimeLibCompiledOpcodesComponent, _glimmerRuntimeLibCompiledOpcodesDom, _glimmerRuntimeLibSyntaxExpressions, _glimmerRuntimeLibCompiledExpressionsArgs, _glimmerRuntimeLibCompiledExpressionsValue, _glimmerRuntimeLibCompiledExpressionsLookups, _glimmerRuntimeLibCompiledExpressionsHasBlock, _glimmerRuntimeLibCompiledExpressionsHasBlockParams, _glimmerRuntimeLibCompiledExpressionsHelper, _glimmerRuntimeLibCompiledExpressionsConcat, _glimmerRuntimeLibUtils, _glimmerRuntimeLibCompiledOpcodesContent) {
20445
20512
  'use strict';
20446
20513
 
@@ -22035,7 +22102,8 @@ enifed('glimmer-runtime/lib/vm/append', ['exports', 'glimmer-runtime/lib/environ
22035
22102
  return {
22036
22103
  env: this.env,
22037
22104
  scope: this.scope(),
22038
- dynamicScope: this.dynamicScope()
22105
+ dynamicScope: this.dynamicScope(),
22106
+ frame: this.frame.capture()
22039
22107
  };
22040
22108
  };
22041
22109
 
@@ -22193,6 +22261,12 @@ enifed('glimmer-runtime/lib/vm/append', ['exports', 'glimmer-runtime/lib/environ
22193
22261
 
22194
22262
  /// EXECUTION
22195
22263
 
22264
+ VM.prototype.resume = function resume(opcodes, frame) {
22265
+ return this.execute(opcodes, function (vm) {
22266
+ return vm.frame.restore(frame);
22267
+ });
22268
+ };
22269
+
22196
22270
  VM.prototype.execute = function execute(opcodes, initialize) {
22197
22271
  _glimmerUtil.LOGGER.debug("[VM] Begin program execution");
22198
22272
  var elementStack = this.elementStack;
@@ -22298,30 +22372,52 @@ enifed('glimmer-runtime/lib/vm/append', ['exports', 'glimmer-runtime/lib/environ
22298
22372
 
22299
22373
  exports.default = VM;
22300
22374
  });
22301
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdm0vYXBwZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQXdDQSxFQUFBO0FBbUJFLGlCQW5CRixFQUFBLENBb0JXLEdBQWdCLEVBQ3ZCLEtBQVksRUFDWixZQUEwQixFQUNsQixZQUEwQixFQUFBO0FBSDNCLGdCQUFBLENBQUEsR0FBRyxHQUFILEdBQUcsQ0FBYTtBQUdmLGdCQUFBLENBQUEsWUFBWSxHQUFaLFlBQVksQ0FBYztBQXRCNUIsZ0JBQUEsQ0FBQSxpQkFBaUIsR0FBRyxpQkF2Q1IsS0FBSyxFQXVDNEIsQ0FBQztBQUM5QyxnQkFBQSxDQUFBLFVBQVUsR0FBRyxpQkF4Q0QsS0FBSyxFQXdDYyxDQUFDO0FBQ2pDLGdCQUFBLENBQUEsbUJBQW1CLEdBQUcsaUJBekNULEtBQUssRUF5QzJDLENBQUM7QUFDOUQsZ0JBQUEsQ0FBQSxXQUFXLEdBQUcsaUJBMUNELEtBQUssRUEwQ3VCLENBQUM7QUFDMUMsZ0JBQUEsQ0FBQSxjQUFjLEdBQUcsaUJBM0NKLEtBQUssRUEyQzJCLENBQUM7QUFDOUMsZ0JBQUEsQ0FBQSxLQUFLLEdBQUcsOEJBaENSLFVBQVUsRUFnQ2MsQ0FBQztBQW1COUIsZ0JBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ2YsZ0JBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0FBQ2pDLGdCQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1QixnQkFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUMzQzs7QUE3QkgsVUFBQSxDQVFTLE9BQU8sR0FBQSxpQkFDWixHQUFnQixFQUNoQixJQUEyQixFQUMzQixZQUEwQixFQUMxQixZQUEwQixFQUMxQixJQUFZLEVBQUE7QUFFWixnQkFBSSxLQUFLLEdBQUcsOEJBdkRQLEtBQUssQ0F1RFEsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztB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QUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDbEMscUJBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDL0M7U0FDRjs7ZUFoV0gsRUFBQTs7O3NCQUFBLEVBQUEiLCJmaWxlIjoiYXBwZW5kLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2NvcGUsIER5bmFtaWNTY29wZSwgRW52aXJvbm1lbnQgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBFbGVtZW50U3RhY2sgfSBmcm9tICcuLi9idWlsZGVyJztcbmltcG9ydCB7IERlc3Ryb3lhYmxlLCBTdGFjaywgTGlua2VkTGlzdCwgTGlzdFNsaWNlLCBMT0dHRVIsIE9wYXF1ZSwgYXNzZXJ0IH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7IFBhdGhSZWZlcmVuY2UsIGNvbWJpbmVTbGljZSB9IGZyb20gJ2dsaW1tZXItcmVmZXJlbmNlJztcbmltcG9ydCB7IFRlbXBsYXRlcyB9IGZyb20gJy4uL3N5bnRheC9jb3JlJztcbmltcG9ydCB7IElubGluZUJsb2NrLCBQYXJ0aWFsQmxvY2ssIENvbXBpbGVkQmxvY2sgfSBmcm9tICcuLi9jb21waWxlZC9ibG9ja3MnO1xuaW1wb3J0IHsgQ29tcGlsZWRFeHByZXNzaW9uIH0gZnJvbSAnLi4vY29tcGlsZWQvZXhwcmVzc2lvbnMnO1xuaW1wb3J0IHsgQ29tcGlsZWRBcmdzLCBFdmFsdWF0ZWRBcmdzIH0gZnJvbSAnLi4vY29tcGlsZWQvZXhwcmVzc2lvbnMvYXJncyc7XG5pbXBvcnQgeyBPcGNvZGUsIE9wU2VxLCBVcGRhdGluZ09wY29kZSB9IGZyb20gJy4uL29wY29kZXMnO1xuaW1wb3J0IHsgTGFiZWxPcGNvZGUsIEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlLCBEaWRNb2RpZnlPcGNvZGUgfSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL3ZtJztcbmltcG9ydCB7IFJhbmdlIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBDb21wb25lbnRNYW5hZ2VyIH0gZnJvbSAnLi4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVk1TdGF0ZSwgTGlzdEJsb2NrT3Bjb2RlLCBUcnlPcGNvZGUsIEJsb2NrT3Bjb2RlIH0gZnJvbSAnLi91cGRhdGUnO1xuaW1wb3J0IFJlbmRlclJlc3VsdCBmcm9tICcuL3JlbmRlci1yZXN1bHQnO1xuaW1wb3J0IHsgRnJhbWVTdGFjaywgQmxvY2tzIH0gZnJvbSAnLi9mcmFtZSc7XG5cbmludGVyZmFjZSBWTUluaXRpYWxPcHRpb25zIHtcbiAgc2VsZjogUGF0aFJlZmVyZW5jZTxPcGFxdWU+O1xuICBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZTtcbiAgZWxlbWVudFN0YWNrOiBFbGVtZW50U3RhY2s7XG4gIHNpemU6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFB1c2hGcmFtZU9wdGlvbnMge1xuICBibG9jazogQ29tcGlsZWRCbG9jaztcbiAgYXJncz86IEV2YWx1YXRlZEFyZ3M7XG4gIGJsb2Nrcz86IEJsb2NrcztcbiAgY2FsbGVyU2NvcGU/OiBTY29wZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaWNWTSB7XG4gIGVudjogRW52aXJvbm1lbnQ7XG4gIGdldEFyZ3MoKTogRXZhbHVhdGVkQXJncztcbiAgZHluYW1pY1Njb3BlKCk6IER5bmFtaWNTY29wZTtcbiAgZ2V0U2VsZigpOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT47XG4gIG5ld0Rlc3Ryb3lhYmxlKGQ6IERlc3Ryb3lhYmxlKTtcbn1cblxudHlwZSBPcExpc3QgPSBSYW5nZTxPcGNvZGU+O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWTSBpbXBsZW1lbnRzIFB1YmxpY1ZNIHtcbiAgcHJpdmF0ZSBkeW5hbWljU2NvcGVTdGFjayA9IG5ldyBTdGFjazxEeW5hbWljU2NvcGU+KCk7XG4gIHByaXZhdGUgc2NvcGVTdGFjayA9IG5ldyBTdGFjazxTY29wZT4oKTtcbiAgcHVibGljIHVwZGF0aW5nT3Bjb2RlU3RhY2sgPSBuZXcgU3RhY2s8TGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4+KCk7XG4gIHB1YmxpYyBjYWNoZUdyb3VwcyA9IG5ldyBTdGFjazxVcGRhdGluZ09wY29kZT4oKTtcbiAgcHVibGljIGxpc3RCbG9ja1N0YWNrID0gbmV3IFN0YWNrPExpc3RCbG9ja09wY29kZT4oKTtcbiAgcHVibGljIGZyYW1lID0gbmV3IEZyYW1lU3RhY2soKTtcblxuICBzdGF0aWMgaW5pdGlhbChcbiAgICBlbnY6IEVudmlyb25tZW50LFxuICAgIHNlbGY6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPixcbiAgICBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZSxcbiAgICBlbGVtZW50U3RhY2s6IEVsZW1lbnRTdGFjayxcbiAgICBzaXplOiBudW1iZXJcbiAgKSB7XG4gICAgbGV0IHNjb3BlID0gU2NvcGUucm9vdChzZWxmLCBzaXplKTtcbiAgICByZXR1cm4gbmV3IFZNKGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSwgZWxlbWVudFN0YWNrKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbnY6IEVudmlyb25tZW50LFxuICAgIHNjb3BlOiBTY29wZSxcbiAgICBkeW5hbWljU2NvcGU6IER5bmFtaWNTY29wZSxcbiAgICBwcml2YXRlIGVsZW1lbnRTdGFjazogRWxlbWVudFN0YWNrLFxuICApIHtcbiAgICB0aGlzLmVudiA9IGVudjtcbiAgICB0aGlzLmVsZW1lbnRTdGFjayA9IGVsZW1lbnRTdGFjaztcbiAgICB0aGlzLnNjb3BlU3RhY2sucHVzaChzY29wZSk7XG4gICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wdXNoKGR5bmFtaWNTY29wZSk7XG4gIH1cblxuICBjYXB0dXJlKCk6IFZNU3RhdGUge1xuICAgIHJldHVybiB7XG4gICAgICBlbnY6IHRoaXMuZW52LFxuICAgICAgc2NvcGU6IHRoaXMuc2NvcGUoKSxcbiAgICAgIGR5bmFtaWNTY29wZTogdGhpcy5keW5hbWljU2NvcGUoKVxuICAgIH07XG4gIH1cblxuICBnb3RvKG9wOiBMYWJlbE9wY29kZSkge1xuICAgIC8vIGFzc2VydCh0aGlzLmZyYW1lLmdldE9wcygpLmNvbnRhaW5zKG9wKSwgYElsbGVnYWwganVtcCB0byAke29wLmxhYmVsfWApO1xuICAgIHRoaXMuZnJhbWUuZ290byhvcCk7XG4gIH1cblxuICBiZWdpbkNhY2hlR3JvdXAoKSB7XG4gICAgdGhpcy5jYWNoZUdyb3Vwcy5wdXNoKHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5jdXJyZW50LnRhaWwoKSk7XG4gIH1cblxuICBjb21taXRDYWNoZUdyb3VwKCkge1xuICAgIC8vICAgICAgICBKdW1wSWZOb3RNb2RpZmllZChFTkQpXG4gICAgLy8gICAgICAgIChoZWFkKVxuICAgIC8vICAgICAgICAoLi4uLilcbiAgICAvLyAgICAgICAgKHRhaWwpXG4gICAgLy8gICAgICAgIERpZE1vZGlmeVxuICAgIC8vIEVORDogICBOb29wXG5cbiAgICBsZXQgRU5EID0gbmV3IExhYmVsT3Bjb2RlKFwiRU5EXCIpO1xuXG4gICAgbGV0IG9wY29kZXMgPSB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2suY3VycmVudDtcbiAgICBsZXQgbWFya2VyID0gdGhpcy5jYWNoZUdyb3Vwcy5wb3AoKTtcbiAgICBsZXQgaGVhZCA9IG1hcmtlciA/IG9wY29kZXMubmV4dE5vZGUobWFya2VyKSA6IG9wY29kZXMuaGVhZCgpO1xuICAgIGxldCB0YWlsID0gb3Bjb2Rlcy50YWlsKCk7XG4gICAgbGV0IHRhZyA9IGNvbWJpbmVTbGljZShuZXcgTGlzdFNsaWNlKGhlYWQsIHRhaWwpKTtcblxuICAgIGxldCBndWFyZCA9IG5ldyBKdW1wSWZOb3RNb2RpZmllZE9wY29kZSh0YWcsIEVORCk7XG5cbiAgICBvcGNvZGVzLmluc2VydEJlZm9yZShndWFyZCwgaGVhZCk7XG4gICAgb3Bjb2Rlcy5hcHBlbmQobmV3IERpZE1vZGlmeU9wY29kZShndWFyZCkpO1xuICAgIG9wY29kZXMuYXBwZW5kKEVORCk7XG4gIH1cblxuICBlbnRlcihvcHM6IE9wU2VxKSB7XG4gICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCk7XG5cbiAgICBsZXQgdHJhY2tlciA9IHRoaXMuc3RhY2soKS5wdXNoVXBkYXRhYmxlQmxvY2soKTtcbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoKTtcblxuICAgIGxldCB0cnlPcGNvZGUgPSBuZXcgVHJ5T3Bjb2RlKG9wcywgc3RhdGUsIHRyYWNrZXIsIHVwZGF0aW5nKTtcblxuICAgIHRoaXMuZGlkRW50ZXIodHJ5T3Bjb2RlLCB1cGRhdGluZyk7XG4gIH1cblxuICBlbnRlcldpdGhLZXkoa2V5OiBzdHJpbmcsIG9wczogT3BTZXEpIHtcbiAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKTtcblxuICAgIGxldCB0cmFja2VyID0gdGhpcy5zdGFjaygpLnB1c2hVcGRhdGFibGVCbG9jaygpO1xuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgpO1xuXG4gICAgbGV0IHRyeU9wY29kZSA9IG5ldyBUcnlPcGNvZGUob3BzLCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcpO1xuXG4gICAgdGhpcy5saXN0QmxvY2tTdGFjay5jdXJyZW50Lm1hcFtrZXldID0gdHJ5T3Bjb2RlO1xuXG4gICAgdGhpcy5kaWRFbnRlcih0cnlPcGNvZGUsIHVwZGF0aW5nKTtcbiAgfVxuXG4gIGVudGVyTGlzdChvcHM6IE9wU2VxKSB7XG4gICAgbGV0IHVwZGF0aW5nID0gbmV3IExpbmtlZExpc3Q8QmxvY2tPcGNvZGU+KCk7XG5cbiAgICBsZXQgdHJhY2tlciA9IHRoaXMuc3RhY2soKS5wdXNoQmxvY2tMaXN0KHVwZGF0aW5nKTtcbiAgICBsZXQgc3RhdGUgPSB0aGlzLmNhcHR1cmUoKTtcbiAgICBsZXQgYXJ0aWZhY3RzID0gdGhpcy5mcmFtZS5nZXRJdGVyYXRvcigpLmFydGlmYWN0cztcblxuICAgIGxldCBvcGNvZGUgPSBuZXcgTGlzdEJsb2NrT3Bjb2RlKG9wcywgc3RhdGUsIHRyYWNrZXIsIHVwZGF0aW5nLCBhcnRpZmFjdHMpO1xuXG4gICAgdGhpcy5saXN0QmxvY2tTdGFjay5wdXNoKG9wY29kZSk7XG5cbiAgICB0aGlzLmRpZEVudGVyKG9wY29kZSwgdXBkYXRpbmcpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaWRFbnRlcihvcGNvZGU6IEJsb2NrT3Bjb2RlLCB1cGRhdGluZzogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4pIHtcbiAgICB0aGlzLnVwZGF0ZVdpdGgob3Bjb2RlKTtcbiAgICB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaCh1cGRhdGluZyk7XG4gIH1cblxuICBleGl0KCkge1xuICAgIHRoaXMuc3RhY2soKS5wb3BCbG9jaygpO1xuICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5wb3AoKTtcblxuICAgIGxldCBwYXJlbnQgPSB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2suY3VycmVudC50YWlsKCkgYXMgQmxvY2tPcGNvZGU7XG5cbiAgICBwYXJlbnQuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCk7XG4gIH1cblxuICBleGl0TGlzdCgpIHtcbiAgICB0aGlzLmV4aXQoKTtcbiAgICB0aGlzLmxpc3RCbG9ja1N0YWNrLnBvcCgpO1xuICB9XG5cbiAgdXBkYXRlV2l0aChvcGNvZGU6IFVwZGF0aW5nT3Bjb2RlKSB7XG4gICAgdGhpcy51cGRhdGluZ09wY29kZVN0YWNrLmN1cnJlbnQuYXBwZW5kKG9wY29kZSk7XG4gIH1cblxuICBzdGFjaygpOiBFbGVtZW50U3RhY2sge1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRTdGFjaztcbiAgfVxuXG4gIHNjb3BlKCk6IFNjb3BlIHtcbiAgICByZXR1cm4gdGhpcy5zY29wZVN0YWNrLmN1cnJlbnQ7XG4gIH1cblxuICBkeW5hbWljU2NvcGUoKTogRHluYW1pY1Njb3BlIHtcbiAgICByZXR1cm4gdGhpcy5keW5hbWljU2NvcGVTdGFjay5jdXJyZW50O1xuICB9XG5cbiAgcHVzaEZyYW1lKFxuICAgIGJsb2NrOiBDb21waWxlZEJsb2NrLFxuICAgIGFyZ3M/OiBFdmFsdWF0ZWRBcmdzLFxuICAgIGJsb2Nrcz86IEJsb2NrcyxcbiAgICBjYWxsZXJTY29wZT86IFNjb3BlXG4gICkge1xuICAgIHRoaXMuZnJhbWUucHVzaChibG9jay5vcHMpO1xuXG4gICAgaWYgKGFyZ3MpIHRoaXMuZnJhbWUuc2V0QXJncyhhcmdzKTtcbiAgICBpZiAoYmxvY2tzKSB0aGlzLmZyYW1lLnNldEJsb2NrcyhibG9ja3MpO1xuICAgIGlmIChjYWxsZXJTY29wZSkgdGhpcy5mcmFtZS5zZXRDYWxsZXJTY29wZShjYWxsZXJTY29wZSk7XG4gIH1cblxuICBwdXNoQ29tcG9uZW50RnJhbWUoXG4gICAgbGF5b3V0OiBDb21waWxlZEJsb2NrLFxuICAgIGFyZ3M6IEV2YWx1YXRlZEFyZ3MsXG4gICAgYmxvY2tzOiBCbG9ja3MsXG4gICAgY2FsbGVyU2NvcGU6IFNjb3BlLFxuICAgIGNvbXBvbmVudDogQ29tcG9uZW50LFxuICAgIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8Q29tcG9uZW50PixcbiAgICBzaGFkb3c6IHN0cmluZ1tdXG4gICkge1xuICAgIHRoaXMuZnJhbWUucHVzaChsYXlvdXQub3BzLCBjb21wb25lbnQsIG1hbmFnZXIsIHNoYWRvdyk7XG5cbiAgICBpZiAoYXJncykgdGhpcy5mcmFtZS5zZXRBcmdzKGFyZ3MpO1xuICAgIGlmIChibG9ja3MpIHRoaXMuZnJhbWUuc2V0QmxvY2tzKGJsb2Nrcyk7XG4gICAgaWYgKGNhbGxlclNjb3BlKSB0aGlzLmZyYW1lLnNldENhbGxlclNjb3BlKGNhbGxlclNjb3BlKTtcbiAgfVxuXG4gIHB1c2hFdmFsRnJhbWUob3BzOiBPcFNlcSkge1xuICAgIHRoaXMuZnJhbWUucHVzaChvcHMpO1xuICB9XG5cbiAgcHVzaENoaWxkU2NvcGUoKSB7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2godGhpcy5zY29wZVN0YWNrLmN1cnJlbnQuY2hpbGQoKSk7XG4gIH1cblxuICBwdXNoQ2FsbGVyU2NvcGUoKSB7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2godGhpcy5zY29wZSgpLmdldENhbGxlclNjb3BlKCkpO1xuICB9XG5cbiAgcHVzaER5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGUge1xuICAgIGxldCBjaGlsZCA9IHRoaXMuZHluYW1pY1Njb3BlU3RhY2suY3VycmVudC5jaGlsZCgpO1xuICAgIHRoaXMuZHluYW1pY1Njb3BlU3RhY2sucHVzaChjaGlsZCk7XG4gICAgcmV0dXJuIGNoaWxkO1xuICB9XG5cbiAgcHVzaFJvb3RTY29wZShzZWxmOiBQYXRoUmVmZXJlbmNlPGFueT4sIHNpemU6IG51bWJlcik6IFNjb3BlIHtcbiAgICBsZXQgc2NvcGUgPSBTY29wZS5yb290KHNlbGYsIHNpemUpO1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHNjb3BlKTtcbiAgICByZXR1cm4gc2NvcGU7XG4gIH1cblxuICBwb3BTY29wZSgpIHtcbiAgICB0aGlzLnNjb3BlU3RhY2sucG9wKCk7XG4gIH1cblxuICBwb3BEeW5hbWljU2NvcGUoKSB7XG4gICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wb3AoKTtcbiAgfVxuXG4gIG5ld0Rlc3Ryb3lhYmxlKGQ6IERlc3Ryb3lhYmxlKSB7XG4gICAgdGhpcy5zdGFjaygpLm5ld0Rlc3Ryb3lhYmxlKGQpO1xuICB9XG5cbiAgLy8vIFNDT1BFIEhFTFBFUlNcblxuICBnZXRTZWxmKCk6IFBhdGhSZWZlcmVuY2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuc2NvcGUoKS5nZXRTZWxmKCk7XG4gIH1cblxuICByZWZlcmVuY2VGb3JTeW1ib2woc3ltYm9sOiBudW1iZXIpOiBQYXRoUmVmZXJlbmNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnNjb3BlKCkuZ2V0U3ltYm9sKHN5bWJvbCk7XG4gIH1cblxuICBnZXRBcmdzKCk6IEV2YWx1YXRlZEFyZ3Mge1xuICAgIHJldHVybiB0aGlzLmZyYW1lLmdldEFyZ3MoKTtcbiAgfVxuXG4gIC8vLyBFWEVDVVRJT05cblxuICBleGVjdXRlKG9wY29kZXM6IE9wU2VxLCBpbml0aWFsaXplPzogKHZtOiBWTSkgPT4gdm9pZCk6IFJlbmRlclJlc3VsdCB7XG4gICAgTE9HR0VSLmRlYnVnKFwiW1ZNXSBCZWdpbiBwcm9ncmFtIGV4ZWN1dGlvblwiKTtcblxuICAgIGxldCB7IGVsZW1lbnRTdGFjaywgZnJhbWUsIHVwZGF0aW5nT3Bjb2RlU3RhY2ssIGVudiB9ID0gdGhpcztcblxuICAgIGVsZW1lbnRTdGFjay5wdXNoU2ltcGxlQmxvY2soKTtcblxuICAgIHVwZGF0aW5nT3Bjb2RlU3RhY2sucHVzaChuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKSk7XG4gICAgZnJhbWUucHVzaChvcGNvZGVzKTtcblxuICAgIGlmIChpbml0aWFsaXplKSBpbml0aWFsaXplKHRoaXMpO1xuXG4gICAgbGV0IG9wY29kZTogT3Bjb2RlO1xuXG4gICAgd2hpbGUgKGZyYW1lLmhhc09wY29kZXMoKSkge1xuICAgICAgaWYgKG9wY29kZSA9IGZyYW1lLm5leHRTdGF0ZW1lbnQoKSkge1xuICAgICAgICBMT0dHRVIuZGVidWcoYFtWTV0gT1AgJHtvcGNvZGUudHlwZX1gKTtcbiAgICAgICAgTE9HR0VSLnRyYWNlKG9wY29kZSk7XG4gICAgICAgIG9wY29kZS5ldmFsdWF0ZSh0aGlzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBMT0dHRVIuZGVidWcoXCJbVk1dIENvbXBsZXRlZCBwcm9ncmFtIGV4ZWN1dGlvblwiKTtcblxuICAgIHJldHVybiBuZXcgUmVuZGVyUmVzdWx0KFxuICAgICAgZW52LFxuICAgICAgdXBkYXRpbmdPcGNvZGVTdGFjay5wb3AoKSxcbiAgICAgIGVsZW1lbnRTdGFjay5wb3BCbG9jaygpXG4gICAgKTtcbiAgfVxuXG4gIGV2YWx1YXRlT3Bjb2RlKG9wY29kZTogT3Bjb2RlKSB7XG4gICAgb3Bjb2RlLmV2YWx1YXRlKHRoaXMpO1xuICB9XG5cbiAgLy8gTWFrZSBzdXJlIHlvdSBoYXZlIG9wY29kZXMgdGhhdCBwdXNoIGFuZCBwb3AgYSBzY29wZSBhcm91bmQgdGhpcyBvcGNvZGVcbiAgLy8gaWYgeW91IG5lZWQgdG8gY2hhbmdlIHRoZSBzY29wZS5cbiAgaW52b2tlQmxvY2soYmxvY2s6IElubGluZUJsb2NrLCBhcmdzOiBFdmFsdWF0ZWRBcmdzKSB7XG4gICAgbGV0IGNvbXBpbGVkID0gYmxvY2suY29tcGlsZSh0aGlzLmVudik7XG4gICAgdGhpcy5wdXNoRnJhbWUoY29tcGlsZWQsIGFyZ3MpO1xuICB9XG5cbiAgaW52b2tlUGFydGlhbChibG9jazogUGFydGlhbEJsb2NrKSB7XG4gICAgbGV0IGNvbXBpbGVkID0gYmxvY2suY29tcGlsZSh0aGlzLmVudik7XG4gICAgdGhpcy5wdXNoRnJhbWUoY29tcGlsZWQpO1xuICB9XG5cbiAgaW52b2tlTGF5b3V0KFxuICAgIGFyZ3M6IEV2YWx1YXRlZEFyZ3MsXG4gICAgbGF5b3V0OiBDb21waWxlZEJsb2NrLFxuICAgIHRlbXBsYXRlczogVGVtcGxhdGVzLFxuICAgIGNhbGxlclNjb3BlOiBTY29wZSxcbiAgICBjb21wb25lbnQ6IENvbXBvbmVudCxcbiAgICBtYW5hZ2VyOiBDb21wb25lbnRNYW5hZ2VyPENvbXBvbmVudD4sXG4gICAgc2hhZG93OiBzdHJpbmdbXVxuICApIHtcbiAgICB0aGlzLnB1c2hDb21wb25lbnRGcmFtZShsYXlvdXQsIGFyZ3MsIHRlbXBsYXRlcywgY2FsbGVyU2NvcGUsIGNvbXBvbmVudCwgbWFuYWdlciwgc2hhZG93KTtcbiAgfVxuXG4gIGV2YWx1YXRlT3BlcmFuZChleHByOiBDb21waWxlZEV4cHJlc3Npb248YW55Pikge1xuICAgIHRoaXMuZnJhbWUuc2V0T3BlcmFuZChleHByLmV2YWx1YXRlKHRoaXMpKTtcbiAgfVxuXG4gIGV2YWx1YXRlQXJncyhhcmdzOiBDb21waWxlZEFyZ3MpIHtcbiAgICBsZXQgZXZhbGVkQXJncyA9IHRoaXMuZnJhbWUuc2V0QXJncyhhcmdzLmV2YWx1YXRlKHRoaXMpKTtcbiAgICB0aGlzLmZyYW1lLnNldE9wZXJhbmQoZXZhbGVkQXJncy5wb3NpdGlvbmFsLmF0KDApKTtcbiAgfVxuXG4gIGJpbmRQb3NpdGlvbmFsQXJncyhzeW1ib2xzOiBudW1iZXJbXSkge1xuICAgIGxldCBhcmdzID0gdGhpcy5mcmFtZS5nZXRBcmdzKCk7XG5cbiAgICBhc3NlcnQoYXJncywgXCJDYW5ub3QgYmluZCBwb3NpdGlvbmFsIGFyZ3NcIik7XG5cbiAgICBsZXQgeyBwb3NpdGlvbmFsIH0gPSBhcmdzO1xuXG4gICAgbGV0IHNjb3BlID0gdGhpcy5zY29wZSgpO1xuXG4gICAgZm9yKGxldCBpPTA7IGkgPCBzeW1ib2xzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBzY29wZS5iaW5kU3ltYm9sKHN5bWJvbHNbaV0sIHBvc2l0aW9uYWwuYXQoaSkpO1xuICAgIH1cbiAgfVxuXG4gIGJpbmROYW1lZEFyZ3MobmFtZXM6IHN0cmluZ1tdLCBzeW1ib2xzOiBudW1iZXJbXSkge1xuICAgIGxldCBhcmdzID0gdGhpcy5mcmFtZS5nZXRBcmdzKCk7XG5cbiAgICBhc3NlcnQoYXJncywgXCJDYW5ub3QgYmluZCBuYW1lZCBhcmdzXCIpO1xuXG4gICAgbGV0IHsgbmFtZWQgfSA9IGFyZ3M7XG5cbiAgICBsZXQgc2NvcGUgPSB0aGlzLnNjb3BlKCk7XG5cbiAgICBmb3IobGV0IGk9MDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBzY29wZS5iaW5kU3ltYm9sKHN5bWJvbHNbaV0sIG5hbWVkLmdldChuYW1lc1tpXSkpO1xuICAgIH1cbiAgfVxuXG4gIGJpbmRCbG9ja3MobmFtZXM6IHN0cmluZ1tdLCBzeW1ib2xzOiBudW1iZXJbXSkge1xuICAgIGxldCBibG9ja3MgPSB0aGlzLmZyYW1lLmdldEJsb2NrcygpO1xuICAgIGxldCBjYWxsZXJTY29wZSA9IHRoaXMuZnJhbWUuZ2V0Q2FsbGVyU2NvcGUoKTtcblxuICAgIGxldCBzY29wZSA9IHRoaXMuc2NvcGUoKTtcblxuICAgIHNjb3BlLmJpbmRDYWxsZXJTY29wZShjYWxsZXJTY29wZSk7XG5cbiAgICBmb3IobGV0IGk9MDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBzY29wZS5iaW5kQmxvY2soc3ltYm9sc1tpXSwgKGJsb2NrcyAmJiBibG9ja3NbbmFtZXNbaV1dKSB8fCBudWxsKTtcbiAgICB9XG4gIH1cblxuICBiaW5kUGFydGlhbEFyZ3Moc3ltYm9sOiBudW1iZXIpIHtcbiAgICBsZXQgYXJncyA9IHRoaXMuZnJhbWUuZ2V0QXJncygpO1xuXG4gICAgYXNzZXJ0KGFyZ3MsIFwiQ2Fubm90IGJpbmQgbmFtZWQgYXJnc1wiKTtcblxuICAgIHRoaXMuc2NvcGUoKS5iaW5kU3ltYm9sKHN5bWJvbCwgYXJncy5uYW1lZCk7XG4gIH1cblxuICBiaW5kRHluYW1pY1Njb3BlKG5hbWVzOiBzdHJpbmdbXSkge1xuICAgIGxldCBhcmdzID0gdGhpcy5mcmFtZS5nZXRBcmdzKCk7XG5cbiAgICBhc3NlcnQoYXJncywgXCJDYW5ub3QgYmluZCBkeW5hbWljIHNjb3BlXCIpO1xuXG4gICAgbGV0IHNjb3BlID0gdGhpcy5keW5hbWljU2NvcGUoKTtcblxuICAgIGZvcihsZXQgaT0wOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHNjb3BlLnNldChuYW1lc1tpXSwgYXJncy5uYW1lZC5nZXQobmFtZXNbaV0pKTtcbiAgICB9XG4gIH1cbn1cblxuaW50ZXJmYWNlIEV4Y2VwdGlvbkhhbmRsZXIge1xuICBoYW5kbGVFeGNlcHRpb24oaW5pdGlhbGl6ZT86ICh2bTogVk0pID0+IHZvaWQpO1xufVxuXG5pbnRlcmZhY2UgUmV0dXJuSGFuZGxlciB7XG4gIHNldFJlbmRlclJlc3VsdChyZW5kZXJSZXN1bHQ6IFJlbmRlclJlc3VsdCk7XG59XG4iXX0=
22302
- enifed("glimmer-runtime/lib/vm/frame", ["exports"], function (exports) {
22303
- "use strict";
22304
-
22305
- var Frame = function Frame(ops) {
22306
- var component = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];
22307
- var manager = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2];
22308
- var shadow = arguments.length <= 3 || arguments[3] === undefined ? null : arguments[3];
22375
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdm0vYXBwZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQXdDQSxFQUFBO0FBbUJFLGlCQW5CRixFQUFBLENBb0JXLEdBQWdCLEVBQ3ZCLEtBQVksRUFDWixZQUEwQixFQUNsQixZQUEwQixFQUFBO0FBSDNCLGdCQUFBLENBQUEsR0FBRyxHQUFILEdBQUcsQ0FBYTtBQUdmLGdCQUFBLENBQUEsWUFBWSxHQUFaLFlBQVksQ0FBYztBQXRCNUIsZ0JBQUEsQ0FBQSxpQkFBaUIsR0FBRyxpQkF2Q1IsS0FBSyxFQXVDNEIsQ0FBQztBQUM5QyxnQkFBQSxDQUFBLFVBQVUsR0FBRyxpQkF4Q0QsS0FBSyxFQXdDYyxDQUFDO0FBQ2pDLGdCQUFBLENBQUEsbUJBQW1CLEdBQUcsaUJBekNULEtBQUssRUF5QzJDLENBQUM7QUFDOUQsZ0JBQUEsQ0FBQSxXQUFXLEdBQUcsaUJBMUNELEtBQUssRUEwQ3VCLENBQUM7QUFDMUMsZ0JBQUEsQ0FBQSxjQUFjLEdBQUcsaUJBM0NKLEtBQUssRUEyQzJCLENBQUM7QUFDOUMsZ0JBQUEsQ0FBQSxLQUFLLEdBQUcsOEJBaENPLFVBQVUsRUFnQ0QsQ0FBQztBQW1COUIsZ0JBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ2YsZ0JBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0FBQ2pDLGdCQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1QixnQkFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUMzQzs7QUE3QkgsVUFBQSxDQVFTLE9BQU8sR0FBQSxpQkFDWixHQUFnQixFQUNoQixJQUEyQixFQUMzQixZQUEwQixFQUMxQixZQUEwQixFQUMxQixJQUFZLEVBQUE7QUFFWixnQkFBSSxLQUFLLEdBQUcsOEJBdkRQLEtBQUssQ0F1RFEsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztB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R0FBQSwwQkFBQyxLQUFlLEVBQUE7QUFDOUIsZ0JBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7QUFFaEMseUJBcFlnRSxNQUFNLENBb1kvRCxJQUFJLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztBQUUxQyxnQkFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0FBRWhDLGlCQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNsQyxxQkFBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMvQztTQUNGOztlQXJXSCxFQUFBOzs7c0JBQUEsRUFBQSIsImZpbGUiOiJhcHBlbmQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY29wZSwgRHluYW1pY1Njb3BlLCBFbnZpcm9ubWVudCB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEVsZW1lbnRTdGFjayB9IGZyb20gJy4uL2J1aWxkZXInO1xuaW1wb3J0IHsgRGVzdHJveWFibGUsIFN0YWNrLCBMaW5rZWRMaXN0LCBMaXN0U2xpY2UsIExPR0dFUiwgT3BhcXVlLCBhc3NlcnQgfSBmcm9tICdnbGltbWVyLXV0aWwnO1xuaW1wb3J0IHsgUGF0aFJlZmVyZW5jZSwgY29tYmluZVNsaWNlIH0gZnJvbSAnZ2xpbW1lci1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgVGVtcGxhdGVzIH0gZnJvbSAnLi4vc3ludGF4L2NvcmUnO1xuaW1wb3J0IHsgSW5saW5lQmxvY2ssIFBhcnRpYWxCbG9jaywgQ29tcGlsZWRCbG9jayB9IGZyb20gJy4uL2NvbXBpbGVkL2Jsb2Nrcyc7XG5pbXBvcnQgeyBDb21waWxlZEV4cHJlc3Npb24gfSBmcm9tICcuLi9jb21waWxlZC9leHByZXNzaW9ucyc7XG5pbXBvcnQgeyBDb21waWxlZEFyZ3MsIEV2YWx1YXRlZEFyZ3MgfSBmcm9tICcuLi9jb21waWxlZC9leHByZXNzaW9ucy9hcmdzJztcbmltcG9ydCB7IE9wY29kZSwgT3BTZXEsIFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBMYWJlbE9wY29kZSwgSnVtcElmTm90TW9kaWZpZWRPcGNvZGUsIERpZE1vZGlmeU9wY29kZSB9IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvdm0nO1xuaW1wb3J0IHsgUmFuZ2UgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIENvbXBvbmVudE1hbmFnZXIgfSBmcm9tICcuLi9jb21wb25lbnQvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBWTVN0YXRlLCBMaXN0QmxvY2tPcGNvZGUsIFRyeU9wY29kZSwgQmxvY2tPcGNvZGUgfSBmcm9tICcuL3VwZGF0ZSc7XG5pbXBvcnQgUmVuZGVyUmVzdWx0IGZyb20gJy4vcmVuZGVyLXJlc3VsdCc7XG5pbXBvcnQgeyBDYXB0dXJlZEZyYW1lLCBGcmFtZVN0YWNrLCBCbG9ja3MgfSBmcm9tICcuL2ZyYW1lJztcblxuaW50ZXJmYWNlIFZNSW5pdGlhbE9wdGlvbnMge1xuICBzZWxmOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT47XG4gIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlO1xuICBlbGVtZW50U3RhY2s6IEVsZW1lbnRTdGFjaztcbiAgc2l6ZTogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgUHVzaEZyYW1lT3B0aW9ucyB7XG4gIGJsb2NrOiBDb21waWxlZEJsb2NrO1xuICBhcmdzPzogRXZhbHVhdGVkQXJncztcbiAgYmxvY2tzPzogQmxvY2tzO1xuICBjYWxsZXJTY29wZT86IFNjb3BlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1YmxpY1ZNIHtcbiAgZW52OiBFbnZpcm9ubWVudDtcbiAgZ2V0QXJncygpOiBFdmFsdWF0ZWRBcmdzO1xuICBkeW5hbWljU2NvcGUoKTogRHluYW1pY1Njb3BlO1xuICBnZXRTZWxmKCk6IFBhdGhSZWZlcmVuY2U8T3BhcXVlPjtcbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpO1xufVxuXG50eXBlIE9wTGlzdCA9IFJhbmdlPE9wY29kZT47XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZNIGltcGxlbWVudHMgUHVibGljVk0ge1xuICBwcml2YXRlIGR5bmFtaWNTY29wZVN0YWNrID0gbmV3IFN0YWNrPER5bmFtaWNTY29wZT4oKTtcbiAgcHJpdmF0ZSBzY29wZVN0YWNrID0gbmV3IFN0YWNrPFNjb3BlPigpO1xuICBwdWJsaWMgdXBkYXRpbmdPcGNvZGVTdGFjayA9IG5ldyBTdGFjazxMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPj4oKTtcbiAgcHVibGljIGNhY2hlR3JvdXBzID0gbmV3IFN0YWNrPFVwZGF0aW5nT3Bjb2RlPigpO1xuICBwdWJsaWMgbGlzdEJsb2NrU3RhY2sgPSBuZXcgU3RhY2s8TGlzdEJsb2NrT3Bjb2RlPigpO1xuICBwdWJsaWMgZnJhbWUgPSBuZXcgRnJhbWVTdGFjaygpO1xuXG4gIHN0YXRpYyBpbml0aWFsKFxuICAgIGVudjogRW52aXJvbm1lbnQsXG4gICAgc2VsZjogUGF0aFJlZmVyZW5jZTxPcGFxdWU+LFxuICAgIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlLFxuICAgIGVsZW1lbnRTdGFjazogRWxlbWVudFN0YWNrLFxuICAgIHNpemU6IG51bWJlclxuICApIHtcbiAgICBsZXQgc2NvcGUgPSBTY29wZS5yb290KHNlbGYsIHNpemUpO1xuICAgIHJldHVybiBuZXcgVk0oZW52LCBzY29wZSwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2spO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGVudjogRW52aXJvbm1lbnQsXG4gICAgc2NvcGU6IFNjb3BlLFxuICAgIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlLFxuICAgIHByaXZhdGUgZWxlbWVudFN0YWNrOiBFbGVtZW50U3RhY2ssXG4gICkge1xuICAgIHRoaXMuZW52ID0gZW52O1xuICAgIHRoaXMuZWxlbWVudFN0YWNrID0gZWxlbWVudFN0YWNrO1xuICAgIHRoaXMuc2NvcGVTdGFjay5wdXNoKHNjb3BlKTtcbiAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnB1c2goZHluYW1pY1Njb3BlKTtcbiAgfVxuXG4gIGNhcHR1cmUoKTogVk1TdGF0ZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVudjogdGhpcy5lbnYsXG4gICAgICBzY29wZTogdGhpcy5zY29wZSgpLFxuICAgICAgZHluYW1pY1Njb3BlOiB0aGlzLmR5bmFtaWNTY29wZSgpLFxuICAgICAgZnJhbWU6IHRoaXMuZnJhbWUuY2FwdHVyZSgpXG4gICAgfTtcbiAgfVxuXG4gIGdvdG8ob3A6IExhYmVsT3Bjb2RlKSB7XG4gICAgLy8gYXNzZXJ0KHRoaXMuZnJhbWUuZ2V0T3BzKCkuY29udGFpbnMob3ApLCBgSWxsZWdhbCBqdW1wIHRvICR7b3AubGFiZWx9YCk7XG4gICAgdGhpcy5mcmFtZS5nb3RvKG9wKTtcbiAgfVxuXG4gIGJlZ2luQ2FjaGVHcm91cCgpIHtcbiAgICB0aGlzLmNhY2hlR3JvdXBzLnB1c2godGhpcy51cGRhdGluZ09wY29kZVN0YWNrLmN1cnJlbnQudGFpbCgpKTtcbiAgfVxuXG4gIGNvbW1pdENhY2hlR3JvdXAoKSB7XG4gICAgLy8gICAgICAgIEp1bXBJZk5vdE1vZGlmaWVkKEVORClcbiAgICAvLyAgICAgICAgKGhlYWQpXG4gICAgLy8gICAgICAgICguLi4uKVxuICAgIC8vICAgICAgICAodGFpbClcbiAgICAvLyAgICAgICAgRGlkTW9kaWZ5XG4gICAgLy8gRU5EOiAgIE5vb3BcblxuICAgIGxldCBFTkQgPSBuZXcgTGFiZWxPcGNvZGUoXCJFTkRcIik7XG5cbiAgICBsZXQgb3Bjb2RlcyA9IHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5jdXJyZW50O1xuICAgIGxldCBtYXJrZXIgPSB0aGlzLmNhY2hlR3JvdXBzLnBvcCgpO1xuICAgIGxldCBoZWFkID0gbWFya2VyID8gb3Bjb2Rlcy5uZXh0Tm9kZShtYXJrZXIpIDogb3Bjb2Rlcy5oZWFkKCk7XG4gICAgbGV0IHRhaWwgPSBvcGNvZGVzLnRhaWwoKTtcbiAgICBsZXQgdGFnID0gY29tYmluZVNsaWNlKG5ldyBMaXN0U2xpY2UoaGVhZCwgdGFpbCkpO1xuXG4gICAgbGV0IGd1YXJkID0gbmV3IEp1bXBJZk5vdE1vZGlmaWVkT3Bjb2RlKHRhZywgRU5EKTtcblxuICAgIG9wY29kZXMuaW5zZXJ0QmVmb3JlKGd1YXJkLCBoZWFkKTtcbiAgICBvcGNvZGVzLmFwcGVuZChuZXcgRGlkTW9kaWZ5T3Bjb2RlKGd1YXJkKSk7XG4gICAgb3Bjb2Rlcy5hcHBlbmQoRU5EKTtcbiAgfVxuXG4gIGVudGVyKG9wczogT3BTZXEpIHtcbiAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4oKTtcblxuICAgIGxldCB0cmFja2VyID0gdGhpcy5zdGFjaygpLnB1c2hVcGRhdGFibGVCbG9jaygpO1xuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgpO1xuXG4gICAgbGV0IHRyeU9wY29kZSA9IG5ldyBUcnlPcGNvZGUob3BzLCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcpO1xuXG4gICAgdGhpcy5kaWRFbnRlcih0cnlPcGNvZGUsIHVwZGF0aW5nKTtcbiAgfVxuXG4gIGVudGVyV2l0aEtleShrZXk6IHN0cmluZywgb3BzOiBPcFNlcSkge1xuICAgIGxldCB1cGRhdGluZyA9IG5ldyBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPigpO1xuXG4gICAgbGV0IHRyYWNrZXIgPSB0aGlzLnN0YWNrKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG4gICAgbGV0IHN0YXRlID0gdGhpcy5jYXB0dXJlKCk7XG5cbiAgICBsZXQgdHJ5T3Bjb2RlID0gbmV3IFRyeU9wY29kZShvcHMsIHN0YXRlLCB0cmFja2VyLCB1cGRhdGluZyk7XG5cbiAgICB0aGlzLmxpc3RCbG9ja1N0YWNrLmN1cnJlbnQubWFwW2tleV0gPSB0cnlPcGNvZGU7XG5cbiAgICB0aGlzLmRpZEVudGVyKHRyeU9wY29kZSwgdXBkYXRpbmcpO1xuICB9XG5cbiAgZW50ZXJMaXN0KG9wczogT3BTZXEpIHtcbiAgICBsZXQgdXBkYXRpbmcgPSBuZXcgTGlua2VkTGlzdDxCbG9ja09wY29kZT4oKTtcblxuICAgIGxldCB0cmFja2VyID0gdGhpcy5zdGFjaygpLnB1c2hCbG9ja0xpc3QodXBkYXRpbmcpO1xuICAgIGxldCBzdGF0ZSA9IHRoaXMuY2FwdHVyZSgpO1xuICAgIGxldCBhcnRpZmFjdHMgPSB0aGlzLmZyYW1lLmdldEl0ZXJhdG9yKCkuYXJ0aWZhY3RzO1xuXG4gICAgbGV0IG9wY29kZSA9IG5ldyBMaXN0QmxvY2tPcGNvZGUob3BzLCBzdGF0ZSwgdHJhY2tlciwgdXBkYXRpbmcsIGFydGlmYWN0cyk7XG5cbiAgICB0aGlzLmxpc3RCbG9ja1N0YWNrLnB1c2gob3Bjb2RlKTtcblxuICAgIHRoaXMuZGlkRW50ZXIob3Bjb2RlLCB1cGRhdGluZyk7XG4gIH1cblxuICBwcml2YXRlIGRpZEVudGVyKG9wY29kZTogQmxvY2tPcGNvZGUsIHVwZGF0aW5nOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPikge1xuICAgIHRoaXMudXBkYXRlV2l0aChvcGNvZGUpO1xuICAgIHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5wdXNoKHVwZGF0aW5nKTtcbiAgfVxuXG4gIGV4aXQoKSB7XG4gICAgdGhpcy5zdGFjaygpLnBvcEJsb2NrKCk7XG4gICAgdGhpcy51cGRhdGluZ09wY29kZVN0YWNrLnBvcCgpO1xuXG4gICAgbGV0IHBhcmVudCA9IHRoaXMudXBkYXRpbmdPcGNvZGVTdGFjay5jdXJyZW50LnRhaWwoKSBhcyBCbG9ja09wY29kZTtcblxuICAgIHBhcmVudC5kaWRJbml0aWFsaXplQ2hpbGRyZW4oKTtcbiAgfVxuXG4gIGV4aXRMaXN0KCkge1xuICAgIHRoaXMuZXhpdCgpO1xuICAgIHRoaXMubGlzdEJsb2NrU3RhY2sucG9wKCk7XG4gIH1cblxuICB1cGRhdGVXaXRoKG9wY29kZTogVXBkYXRpbmdPcGNvZGUpIHtcbiAgICB0aGlzLnVwZGF0aW5nT3Bjb2RlU3RhY2suY3VycmVudC5hcHBlbmQob3Bjb2RlKTtcbiAgfVxuXG4gIHN0YWNrKCk6IEVsZW1lbnRTdGFjayB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFN0YWNrO1xuICB9XG5cbiAgc2NvcGUoKTogU2NvcGUge1xuICAgIHJldHVybiB0aGlzLnNjb3BlU3RhY2suY3VycmVudDtcbiAgfVxuXG4gIGR5bmFtaWNTY29wZSgpOiBEeW5hbWljU2NvcGUge1xuICAgIHJldHVybiB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLmN1cnJlbnQ7XG4gIH1cblxuICBwdXNoRnJhbWUoXG4gICAgYmxvY2s6IENvbXBpbGVkQmxvY2ssXG4gICAgYXJncz86IEV2YWx1YXRlZEFyZ3MsXG4gICAgYmxvY2tzPzogQmxvY2tzLFxuICAgIGNhbGxlclNjb3BlPzogU2NvcGVcbiAgKSB7XG4gICAgdGhpcy5mcmFtZS5wdXNoKGJsb2NrLm9wcyk7XG5cbiAgICBpZiAoYXJncykgdGhpcy5mcmFtZS5zZXRBcmdzKGFyZ3MpO1xuICAgIGlmIChibG9ja3MpIHRoaXMuZnJhbWUuc2V0QmxvY2tzKGJsb2Nrcyk7XG4gICAgaWYgKGNhbGxlclNjb3BlKSB0aGlzLmZyYW1lLnNldENhbGxlclNjb3BlKGNhbGxlclNjb3BlKTtcbiAgfVxuXG4gIHB1c2hDb21wb25lbnRGcmFtZShcbiAgICBsYXlvdXQ6IENvbXBpbGVkQmxvY2ssXG4gICAgYXJnczogRXZhbHVhdGVkQXJncyxcbiAgICBibG9ja3M6IEJsb2NrcyxcbiAgICBjYWxsZXJTY29wZTogU2NvcGUsXG4gICAgY29tcG9uZW50OiBDb21wb25lbnQsXG4gICAgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxDb21wb25lbnQ+LFxuICAgIHNoYWRvdzogc3RyaW5nW11cbiAgKSB7XG4gICAgdGhpcy5mcmFtZS5wdXNoKGxheW91dC5vcHMsIGNvbXBvbmVudCwgbWFuYWdlciwgc2hhZG93KTtcblxuICAgIGlmIChhcmdzKSB0aGlzLmZyYW1lLnNldEFyZ3MoYXJncyk7XG4gICAgaWYgKGJsb2NrcykgdGhpcy5mcmFtZS5zZXRCbG9ja3MoYmxvY2tzKTtcbiAgICBpZiAoY2FsbGVyU2NvcGUpIHRoaXMuZnJhbWUuc2V0Q2FsbGVyU2NvcGUoY2FsbGVyU2NvcGUpO1xuICB9XG5cbiAgcHVzaEV2YWxGcmFtZShvcHM6IE9wU2VxKSB7XG4gICAgdGhpcy5mcmFtZS5wdXNoKG9wcyk7XG4gIH1cblxuICBwdXNoQ2hpbGRTY29wZSgpIHtcbiAgICB0aGlzLnNjb3BlU3RhY2sucHVzaCh0aGlzLnNjb3BlU3RhY2suY3VycmVudC5jaGlsZCgpKTtcbiAgfVxuXG4gIHB1c2hDYWxsZXJTY29wZSgpIHtcbiAgICB0aGlzLnNjb3BlU3RhY2sucHVzaCh0aGlzLnNjb3BlKCkuZ2V0Q2FsbGVyU2NvcGUoKSk7XG4gIH1cblxuICBwdXNoRHluYW1pY1Njb3BlKCk6IER5bmFtaWNTY29wZSB7XG4gICAgbGV0IGNoaWxkID0gdGhpcy5keW5hbWljU2NvcGVTdGFjay5jdXJyZW50LmNoaWxkKCk7XG4gICAgdGhpcy5keW5hbWljU2NvcGVTdGFjay5wdXNoKGNoaWxkKTtcbiAgICByZXR1cm4gY2hpbGQ7XG4gIH1cblxuICBwdXNoUm9vdFNjb3BlKHNlbGY6IFBhdGhSZWZlcmVuY2U8YW55Piwgc2l6ZTogbnVtYmVyKTogU2NvcGUge1xuICAgIGxldCBzY29wZSA9IFNjb3BlLnJvb3Qoc2VsZiwgc2l6ZSk7XG4gICAgdGhpcy5zY29wZVN0YWNrLnB1c2goc2NvcGUpO1xuICAgIHJldHVybiBzY29wZTtcbiAgfVxuXG4gIHBvcFNjb3BlKCkge1xuICAgIHRoaXMuc2NvcGVTdGFjay5wb3AoKTtcbiAgfVxuXG4gIHBvcER5bmFtaWNTY29wZSgpIHtcbiAgICB0aGlzLmR5bmFtaWNTY29wZVN0YWNrLnBvcCgpO1xuICB9XG5cbiAgbmV3RGVzdHJveWFibGUoZDogRGVzdHJveWFibGUpIHtcbiAgICB0aGlzLnN0YWNrKCkubmV3RGVzdHJveWFibGUoZCk7XG4gIH1cblxuICAvLy8gU0NPUEUgSEVMUEVSU1xuXG4gIGdldFNlbGYoKTogUGF0aFJlZmVyZW5jZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5zY29wZSgpLmdldFNlbGYoKTtcbiAgfVxuXG4gIHJlZmVyZW5jZUZvclN5bWJvbChzeW1ib2w6IG51bWJlcik6IFBhdGhSZWZlcmVuY2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuc2NvcGUoKS5nZXRTeW1ib2woc3ltYm9sKTtcbiAgfVxuXG4gIGdldEFyZ3MoKTogRXZhbHVhdGVkQXJncyB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWUuZ2V0QXJncygpO1xuICB9XG5cbiAgLy8vIEVYRUNVVElPTlxuXG4gIHJlc3VtZShvcGNvZGVzOiBPcFNlcSwgZnJhbWU6IENhcHR1cmVkRnJhbWUpOiBSZW5kZXJSZXN1bHQge1xuICAgIHJldHVybiB0aGlzLmV4ZWN1dGUob3Bjb2Rlcywgdm0gPT4gdm0uZnJhbWUucmVzdG9yZShmcmFtZSkpO1xuICB9XG5cbiAgZXhlY3V0ZShvcGNvZGVzOiBPcFNlcSwgaW5pdGlhbGl6ZT86ICh2bTogVk0pID0+IHZvaWQpOiBSZW5kZXJSZXN1bHQge1xuICAgIExPR0dFUi5kZWJ1ZyhcIltWTV0gQmVnaW4gcHJvZ3JhbSBleGVjdXRpb25cIik7XG5cbiAgICBsZXQgeyBlbGVtZW50U3RhY2ssIGZyYW1lLCB1cGRhdGluZ09wY29kZVN0YWNrLCBlbnYgfSA9IHRoaXM7XG5cbiAgICBlbGVtZW50U3RhY2sucHVzaFNpbXBsZUJsb2NrKCk7XG5cbiAgICB1cGRhdGluZ09wY29kZVN0YWNrLnB1c2gobmV3IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KCkpO1xuICAgIGZyYW1lLnB1c2gob3Bjb2Rlcyk7XG5cbiAgICBpZiAoaW5pdGlhbGl6ZSkgaW5pdGlhbGl6ZSh0aGlzKTtcblxuICAgIGxldCBvcGNvZGU6IE9wY29kZTtcblxuICAgIHdoaWxlIChmcmFtZS5oYXNPcGNvZGVzKCkpIHtcbiAgICAgIGlmIChvcGNvZGUgPSBmcmFtZS5uZXh0U3RhdGVtZW50KCkpIHtcbiAgICAgICAgTE9HR0VSLmRlYnVnKGBbVk1dIE9QICR7b3Bjb2RlLnR5cGV9YCk7XG4gICAgICAgIExPR0dFUi50cmFjZShvcGNvZGUpO1xuICAgICAgICBvcGNvZGUuZXZhbHVhdGUodGhpcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgTE9HR0VSLmRlYnVnKFwiW1ZNXSBDb21wbGV0ZWQgcHJvZ3JhbSBleGVjdXRpb25cIik7XG5cbiAgICByZXR1cm4gbmV3IFJlbmRlclJlc3VsdChcbiAgICAgIGVudixcbiAgICAgIHVwZGF0aW5nT3Bjb2RlU3RhY2sucG9wKCksXG4gICAgICBlbGVtZW50U3RhY2sucG9wQmxvY2soKVxuICAgICk7XG4gIH1cblxuICBldmFsdWF0ZU9wY29kZShvcGNvZGU6IE9wY29kZSkge1xuICAgIG9wY29kZS5ldmFsdWF0ZSh0aGlzKTtcbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSB5b3UgaGF2ZSBvcGNvZGVzIHRoYXQgcHVzaCBhbmQgcG9wIGEgc2NvcGUgYXJvdW5kIHRoaXMgb3Bjb2RlXG4gIC8vIGlmIHlvdSBuZWVkIHRvIGNoYW5nZSB0aGUgc2NvcGUuXG4gIGludm9rZUJsb2NrKGJsb2NrOiBJbmxpbmVCbG9jaywgYXJnczogRXZhbHVhdGVkQXJncykge1xuICAgIGxldCBjb21waWxlZCA9IGJsb2NrLmNvbXBpbGUodGhpcy5lbnYpO1xuICAgIHRoaXMucHVzaEZyYW1lKGNvbXBpbGVkLCBhcmdzKTtcbiAgfVxuXG4gIGludm9rZVBhcnRpYWwoYmxvY2s6IFBhcnRpYWxCbG9jaykge1xuICAgIGxldCBjb21waWxlZCA9IGJsb2NrLmNvbXBpbGUodGhpcy5lbnYpO1xuICAgIHRoaXMucHVzaEZyYW1lKGNvbXBpbGVkKTtcbiAgfVxuXG4gIGludm9rZUxheW91dChcbiAgICBhcmdzOiBFdmFsdWF0ZWRBcmdzLFxuICAgIGxheW91dDogQ29tcGlsZWRCbG9jayxcbiAgICB0ZW1wbGF0ZXM6IFRlbXBsYXRlcyxcbiAgICBjYWxsZXJTY29wZTogU2NvcGUsXG4gICAgY29tcG9uZW50OiBDb21wb25lbnQsXG4gICAgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxDb21wb25lbnQ+LFxuICAgIHNoYWRvdzogc3RyaW5nW11cbiAgKSB7XG4gICAgdGhpcy5wdXNoQ29tcG9uZW50RnJhbWUobGF5b3V0LCBhcmdzLCB0ZW1wbGF0ZXMsIGNhbGxlclNjb3BlLCBjb21wb25lbnQsIG1hbmFnZXIsIHNoYWRvdyk7XG4gIH1cblxuICBldmFsdWF0ZU9wZXJhbmQoZXhwcjogQ29tcGlsZWRFeHByZXNzaW9uPGFueT4pIHtcbiAgICB0aGlzLmZyYW1lLnNldE9wZXJhbmQoZXhwci5ldmFsdWF0ZSh0aGlzKSk7XG4gIH1cblxuICBldmFsdWF0ZUFyZ3MoYXJnczogQ29tcGlsZWRBcmdzKSB7XG4gICAgbGV0IGV2YWxlZEFyZ3MgPSB0aGlzLmZyYW1lLnNldEFyZ3MoYXJncy5ldmFsdWF0ZSh0aGlzKSk7XG4gICAgdGhpcy5mcmFtZS5zZXRPcGVyYW5kKGV2YWxlZEFyZ3MucG9zaXRpb25hbC5hdCgwKSk7XG4gIH1cblxuICBiaW5kUG9zaXRpb25hbEFyZ3Moc3ltYm9sczogbnVtYmVyW10pIHtcbiAgICBsZXQgYXJncyA9IHRoaXMuZnJhbWUuZ2V0QXJncygpO1xuXG4gICAgYXNzZXJ0KGFyZ3MsIFwiQ2Fubm90IGJpbmQgcG9zaXRpb25hbCBhcmdzXCIpO1xuXG4gICAgbGV0IHsgcG9zaXRpb25hbCB9ID0gYXJncztcblxuICAgIGxldCBzY29wZSA9IHRoaXMuc2NvcGUoKTtcblxuICAgIGZvcihsZXQgaT0wOyBpIDwgc3ltYm9scy5sZW5ndGg7IGkrKykge1xuICAgICAgc2NvcGUuYmluZFN5bWJvbChzeW1ib2xzW2ldLCBwb3NpdGlvbmFsLmF0KGkpKTtcbiAgICB9XG4gIH1cblxuICBiaW5kTmFtZWRBcmdzKG5hbWVzOiBzdHJpbmdbXSwgc3ltYm9sczogbnVtYmVyW10pIHtcbiAgICBsZXQgYXJncyA9IHRoaXMuZnJhbWUuZ2V0QXJncygpO1xuXG4gICAgYXNzZXJ0KGFyZ3MsIFwiQ2Fubm90IGJpbmQgbmFtZWQgYXJnc1wiKTtcblxuICAgIGxldCB7IG5hbWVkIH0gPSBhcmdzO1xuXG4gICAgbGV0IHNjb3BlID0gdGhpcy5zY29wZSgpO1xuXG4gICAgZm9yKGxldCBpPTA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgc2NvcGUuYmluZFN5bWJvbChzeW1ib2xzW2ldLCBuYW1lZC5nZXQobmFtZXNbaV0pKTtcbiAgICB9XG4gIH1cblxuICBiaW5kQmxvY2tzKG5hbWVzOiBzdHJpbmdbXSwgc3ltYm9sczogbnVtYmVyW10pIHtcbiAgICBsZXQgYmxvY2tzID0gdGhpcy5mcmFtZS5nZXRCbG9ja3MoKTtcbiAgICBsZXQgY2FsbGVyU2NvcGUgPSB0aGlzLmZyYW1lLmdldENhbGxlclNjb3BlKCk7XG5cbiAgICBsZXQgc2NvcGUgPSB0aGlzLnNjb3BlKCk7XG5cbiAgICBzY29wZS5iaW5kQ2FsbGVyU2NvcGUoY2FsbGVyU2NvcGUpO1xuXG4gICAgZm9yKGxldCBpPTA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgc2NvcGUuYmluZEJsb2NrKHN5bWJvbHNbaV0sIChibG9ja3MgJiYgYmxvY2tzW25hbWVzW2ldXSkgfHwgbnVsbCk7XG4gICAgfVxuICB9XG5cbiAgYmluZFBhcnRpYWxBcmdzKHN5bWJvbDogbnVtYmVyKSB7XG4gICAgbGV0IGFyZ3MgPSB0aGlzLmZyYW1lLmdldEFyZ3MoKTtcblxuICAgIGFzc2VydChhcmdzLCBcIkNhbm5vdCBiaW5kIG5hbWVkIGFyZ3NcIik7XG5cbiAgICB0aGlzLnNjb3BlKCkuYmluZFN5bWJvbChzeW1ib2wsIGFyZ3MubmFtZWQpO1xuICB9XG5cbiAgYmluZER5bmFtaWNTY29wZShuYW1lczogc3RyaW5nW10pIHtcbiAgICBsZXQgYXJncyA9IHRoaXMuZnJhbWUuZ2V0QXJncygpO1xuXG4gICAgYXNzZXJ0KGFyZ3MsIFwiQ2Fubm90IGJpbmQgZHluYW1pYyBzY29wZVwiKTtcblxuICAgIGxldCBzY29wZSA9IHRoaXMuZHluYW1pY1Njb3BlKCk7XG5cbiAgICBmb3IobGV0IGk9MDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBzY29wZS5zZXQobmFtZXNbaV0sIGFyZ3MubmFtZWQuZ2V0KG5hbWVzW2ldKSk7XG4gICAgfVxuICB9XG59XG5cbmludGVyZmFjZSBFeGNlcHRpb25IYW5kbGVyIHtcbiAgaGFuZGxlRXhjZXB0aW9uKGluaXRpYWxpemU/OiAodm06IFZNKSA9PiB2b2lkKTtcbn1cblxuaW50ZXJmYWNlIFJldHVybkhhbmRsZXIge1xuICBzZXRSZW5kZXJSZXN1bHQocmVuZGVyUmVzdWx0OiBSZW5kZXJSZXN1bHQpO1xufVxuIl19
22376
+ enifed('glimmer-runtime/lib/vm/frame', ['exports'], function (exports) {
22377
+ 'use strict';
22309
22378
 
22310
- this.component = component;
22311
- this.manager = manager;
22312
- this.shadow = shadow;
22313
- this.operand = null;
22314
- this.immediate = null;
22315
- this.args = null;
22316
- this.callerScope = null;
22317
- this.blocks = null;
22318
- this.condition = null;
22319
- this.iterator = null;
22320
- this.key = null;
22321
- this.ops = ops;
22322
- this.op = ops.head();
22379
+ var CapturedFrame = function CapturedFrame(operand, args, condition) {
22380
+ this.operand = operand;
22381
+ this.args = args;
22382
+ this.condition = condition;
22323
22383
  };
22324
22384
 
22385
+ exports.CapturedFrame = CapturedFrame;
22386
+
22387
+ var Frame = (function () {
22388
+ function Frame(ops) {
22389
+ var component = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];
22390
+ var manager = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2];
22391
+ var shadow = arguments.length <= 3 || arguments[3] === undefined ? null : arguments[3];
22392
+
22393
+ this.component = component;
22394
+ this.manager = manager;
22395
+ this.shadow = shadow;
22396
+ this.operand = null;
22397
+ this.immediate = null;
22398
+ this.args = null;
22399
+ this.callerScope = null;
22400
+ this.blocks = null;
22401
+ this.condition = null;
22402
+ this.iterator = null;
22403
+ this.key = null;
22404
+ this.ops = ops;
22405
+ this.op = ops.head();
22406
+ }
22407
+
22408
+ Frame.prototype.capture = function capture() {
22409
+ return new CapturedFrame(this.operand, this.args, this.condition);
22410
+ };
22411
+
22412
+ Frame.prototype.restore = function restore(frame) {
22413
+ this.operand = frame['operand'];
22414
+ this.args = frame['args'];
22415
+ this.condition = frame['condition'];
22416
+ };
22417
+
22418
+ return Frame;
22419
+ })();
22420
+
22325
22421
  var FrameStack = (function () {
22326
22422
  function FrameStack() {
22327
22423
  this.frames = [];
@@ -22348,6 +22444,14 @@ enifed("glimmer-runtime/lib/vm/frame", ["exports"], function (exports) {
22348
22444
  this.frame = frame === 0 ? undefined : frame - 1;
22349
22445
  };
22350
22446
 
22447
+ FrameStack.prototype.capture = function capture() {
22448
+ return this.frames[this.frame].capture();
22449
+ };
22450
+
22451
+ FrameStack.prototype.restore = function restore(frame) {
22452
+ this.frames[this.frame].restore(frame);
22453
+ };
22454
+
22351
22455
  FrameStack.prototype.getOps = function getOps() {
22352
22456
  return this.frames[this.frame].ops;
22353
22457
  };
@@ -22462,7 +22566,7 @@ enifed("glimmer-runtime/lib/vm/frame", ["exports"], function (exports) {
22462
22566
 
22463
22567
  exports.FrameStack = FrameStack;
22464
22568
  });
22465
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdm0vZnJhbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBUUEsS0FBQSxHQVlFLFNBWkYsS0FBQSxDQWFJLEdBQVUsRUFHb0I7WUFGdkIsU0FBUyx5REFBYyxJQUFJO1lBQzNCLE9BQU8seURBQWdDLElBQUk7WUFDM0MsTUFBTSx5REFBYSxJQUFJOztBQUZ2QixZQUFBLENBQUEsU0FBUyxHQUFULFNBQVMsQ0FBa0I7QUFDM0IsWUFBQSxDQUFBLE9BQU8sR0FBUCxPQUFPLENBQW9DO0FBQzNDLFlBQUEsQ0FBQSxNQUFNLEdBQU4sTUFBTSxDQUFpQjtBQWJoQyxZQUFBLENBQUEsT0FBTyxHQUF1QixJQUFJLENBQUM7QUFDbkMsWUFBQSxDQUFBLFNBQVMsR0FBUSxJQUFJLENBQUM7QUFDdEIsWUFBQSxDQUFBLElBQUksR0FBa0IsSUFBSSxDQUFDO0FBQzNCLFlBQUEsQ0FBQSxXQUFXLEdBQVUsSUFBSSxDQUFDO0FBQzFCLFlBQUEsQ0FBQSxNQUFNLEdBQVcsSUFBSSxDQUFDO0FBQ3RCLFlBQUEsQ0FBQSxTQUFTLEdBQXVCLElBQUksQ0FBQztBQUNyQyxZQUFBLENBQUEsUUFBUSxHQUFzQixJQUFJLENBQUM7QUFDbkMsWUFBQSxDQUFBLEdBQUcsR0FBVyxJQUFJLENBQUM7QUFRakIsWUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDZixZQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztLQUN0Qjs7UUFRSCxVQUFBO0FBQUEsaUJBQUEsVUFBQSxHQUFBO0FBQ1UsZ0JBQUEsQ0FBQSxNQUFNLEdBQVksRUFBRSxDQUFDO0FBQ3JCLGdCQUFBLENBQUEsS0FBSyxHQUFXLFNBQVMsQ0FBQztTQStIbkM7O0FBaklELGtCQUFBLFdBSUUsSUFBSSxHQUFBLGNBQUMsR0FBVSxFQUFtRztnQkFBakcsU0FBUyx5REFBYyxJQUFJO2dCQUFFLE9BQU8seURBQWdDLElBQUk7Z0JBQUUsTUFB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LG9CQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDWCx1QkFBTyxJQUFJLENBQUM7YUFDYjtTQUNGOztlQWhJSCxVQUFBIiwiZmlsZSI6ImZyYW1lLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2NvcGUgfSBmcm9tICcuLi9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBSZWZlcmVuY2UsIFBhdGhSZWZlcmVuY2UsIFJlZmVyZW5jZUl0ZXJhdG9yIH0gZnJvbSAnZ2xpbW1lci1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgSW5saW5lQmxvY2sgfSBmcm9tICcuLi9jb21waWxlZC9ibG9ja3MnO1xuaW1wb3J0IHsgRXZhbHVhdGVkQXJncyB9IGZyb20gJy4uL2NvbXBpbGVkL2V4cHJlc3Npb25zL2FyZ3MnO1xuaW1wb3J0IHsgT3Bjb2RlLCBPcFNlcSB9IGZyb20gJy4uL29wY29kZXMnO1xuaW1wb3J0IHsgTGFiZWxPcGNvZGUgfSBmcm9tICcuLi9jb21waWxlZC9vcGNvZGVzL3ZtJztcbmltcG9ydCB7IENvbXBvbmVudCwgQ29tcG9uZW50TWFuYWdlciB9IGZyb20gJy4uL2NvbXBvbmVudC9pbnRlcmZhY2VzJztcblxuY2xhc3MgRnJhbWUge1xuICBvcHM6IE9wU2VxO1xuICBvcDogT3Bjb2RlO1xuICBvcGVyYW5kOiBQYXRoUmVmZXJlbmNlPGFueT4gPSBudWxsO1xuICBpbW1lZGlhdGU6IGFueSA9IG51bGw7XG4gIGFyZ3M6IEV2YWx1YXRlZEFyZ3MgPSBudWxsO1xuICBjYWxsZXJTY29wZTogU2NvcGUgPSBudWxsO1xuICBibG9ja3M6IEJsb2NrcyA9IG51bGw7XG4gIGNvbmRpdGlvbjogUmVmZXJlbmNlPGJvb2xlYW4+ID0gbnVsbDtcbiAgaXRlcmF0b3I6IFJlZmVyZW5jZUl0ZXJhdG9yID0gbnVsbDtcbiAga2V5OiBzdHJpbmcgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG9wczogT3BTZXEsXG4gICAgcHVibGljIGNvbXBvbmVudDogQ29tcG9uZW50ID0gbnVsbCxcbiAgICBwdWJsaWMgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxDb21wb25lbnQ+ID0gbnVsbCxcbiAgICBwdWJsaWMgc2hhZG93OiBzdHJpbmdbXSA9IG51bGxcbiAgKSB7XG4gICAgdGhpcy5vcHMgPSBvcHM7XG4gICAgdGhpcy5vcCA9IG9wcy5oZWFkKCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBCbG9ja3Mge1xuICBkZWZhdWx0OiBJbmxpbmVCbG9jaztcbiAgaW52ZXJzZTogSW5saW5lQmxvY2s7XG59XG5cbmV4cG9ydCBjbGFzcyBGcmFtZVN0YWNrIHtcbiAgcHJpdmF0ZSBmcmFtZXM6IEZyYW1lW10gPSBbXTtcbiAgcHJpdmF0ZSBmcmFtZTogbnVtYmVyID0gdW5kZWZpbmVkO1xuXG4gIHB1c2gob3BzOiBPcFNlcSwgY29tcG9uZW50OiBDb21wb25lbnQgPSBudWxsLCBtYW5hZ2VyOiBDb21wb25lbnRNYW5hZ2VyPENvbXBvbmVudD4gPSBudWxsLCBzaGFkb3c6IHN0cmluZ1tdID0gbnVsbCkge1xuICAgIGxldCBmcmFtZSA9ICh0aGlzLmZyYW1lID09PSB1bmRlZmluZWQpID8gKHRoaXMuZnJhbWUgPSAwKSA6ICsrdGhpcy5mcmFtZTtcblxuICAgIGlmICh0aGlzLmZyYW1lcy5sZW5ndGggPD0gZnJhbWUpIHtcbiAgICAgIHRoaXMuZnJhbWVzLnB1c2gobnVsbCk7XG4gICAgfVxuXG4gICAgdGhpcy5mcmFtZXNbZnJhbWVdID0gbmV3IEZyYW1lKG9wcywgY29tcG9uZW50LCBtYW5hZ2VyLCBzaGFkb3cpO1xuICB9XG5cbiAgcG9wKCkge1xuICAgIGxldCB7IGZyYW1lcywgZnJhbWUgfSA9IHRoaXM7XG4gICAgZnJhbWVzW2ZyYW1lXSA9IG51bGw7XG4gICAgdGhpcy5mcmFtZSA9IGZyYW1lID09PSAwID8gdW5kZWZpbmVkIDogZnJhbWUgLSAxO1xuICB9XG5cbiAgZ2V0T3BzKCk6IE9wU2VxIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0ub3BzO1xuICB9XG5cbiAgZ2V0Q3VycmVudCgpOiBPcGNvZGUge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5vcDtcbiAgfVxuXG4gIHNldEN1cnJlbnQob3A6IE9wY29kZSk6IE9wY29kZSB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdLm9wID0gb3A7XG4gIH1cblxuICBnZXRPcGVyYW5kPFQ+KCk6IFBhdGhSZWZlcmVuY2U8VD4ge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5vcGVyYW5kO1xuICB9XG5cbiAgc2V0T3BlcmFuZDxUPihvcGVyYW5kOiBQYXRoUmVmZXJlbmNlPFQ+KTogUGF0aFJlZmVyZW5jZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdLm9wZXJhbmQgPSBvcGVyYW5kO1xuICB9XG5cbiAgZ2V0SW1tZWRpYXRlPFQ+KCk6IFQge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5pbW1lZGlhdGU7XG4gIH1cblxuICBzZXRJbW1lZGlhdGU8VD4odmFsdWU6IFQpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uaW1tZWRpYXRlID0gdmFsdWU7XG4gIH1cblxuICBnZXRBcmdzKCk6IEV2YWx1YXRlZEFyZ3Mge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5hcmdzO1xuICB9XG5cbiAgc2V0QXJncyhhcmdzOiBFdmFsdWF0ZWRBcmdzKTogRXZhbHVhdGVkQXJncyB7XG4gICAgbGV0IGZyYW1lID0gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV07XG4gICAgcmV0dXJuIGZyYW1lLmFyZ3MgPSBhcmdzO1xuICB9XG5cbiAgZ2V0Q29uZGl0aW9uKCk6IFJlZmVyZW5jZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdLmNvbmRpdGlvbjtcbiAgfVxuXG4gIHNldENvbmRpdGlvbihjb25kaXRpb246IFJlZmVyZW5jZTxib29sZWFuPik6IFJlZmVyZW5jZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdLmNvbmRpdGlvbiA9IGNvbmRpdGlvbjtcbiAgfVxuXG4gIGdldEl0ZXJhdG9yKCk6IFJlZmVyZW5jZUl0ZXJhdG9yIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uaXRlcmF0b3I7XG4gIH1cblxuICBzZXRJdGVyYXRvcihpdGVyYXRvcjogUmVmZXJlbmNlSXRlcmF0b3IpOiBSZWZlcmVuY2VJdGVyYXRvciB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdLml0ZXJhdG9yID0gaXRlcmF0b3I7XG4gIH1cblxuICBnZXRLZXkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0ua2V5O1xuICB9XG5cbiAgc2V0S2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0ua2V5ID0ga2V5O1xuICB9XG5cbiAgZ2V0QmxvY2tzKCk6IEJsb2NrcyB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdLmJsb2NrcztcbiAgfVxuXG4gIHNldEJsb2NrcyhibG9ja3M6IEJsb2Nrcyk6IEJsb2NrcyB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdLmJsb2NrcyA9IGJsb2NrcztcbiAgfVxuXG4gIGdldENhbGxlclNjb3BlKCk6IFNjb3BlIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uY2FsbGVyU2NvcGU7XG4gIH1cblxuICBzZXRDYWxsZXJTY29wZShjYWxsZXJTY29wZTogU2NvcGUpOiBTY29wZSB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdLmNhbGxlclNjb3BlID0gY2FsbGVyU2NvcGU7XG4gIH1cblxuICBnZXRDb21wb25lbnQoKTogQ29tcG9uZW50IHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uY29tcG9uZW50O1xuICB9XG5cbiAgZ2V0TWFuYWdlcigpOiBDb21wb25lbnRNYW5hZ2VyPENvbXBvbmVudD4ge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5tYW5hZ2VyO1xuICB9XG5cbiAgZ2V0U2hhZG93KCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uc2hhZG93O1xuICB9XG5cbiAgZ290byhvcDogTGFiZWxPcGNvZGUpIHtcbiAgICB0aGlzLnNldEN1cnJlbnQob3ApO1xuICB9XG5cbiAgaGFzT3Bjb2RlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgbmV4dFN0YXRlbWVudCgpOiBPcGNvZGUge1xuICAgIGxldCBvcCA9IHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdLm9wO1xuICAgIGxldCBvcHMgPSB0aGlzLmdldE9wcygpO1xuXG4gICAgaWYgKG9wKSB7XG4gICAgICB0aGlzLnNldEN1cnJlbnQob3BzLm5leHROb2RlKG9wKSk7XG4gICAgICByZXR1cm4gb3A7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucG9wKCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
22569
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdm0vZnJhbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O1FBUUEsYUFBQSxHQUNFLFNBREYsYUFBQSxDQUVZLE9BQTJCLEVBQzNCLElBQW1CLEVBQ25CLFNBQTZCLEVBQUE7QUFGN0IsWUFBQSxDQUFBLE9BQU8sR0FBUCxPQUFPLENBQW9CO0FBQzNCLFlBQUEsQ0FBQSxJQUFJLEdBQUosSUFBSSxDQUFlO0FBQ25CLFlBQUEsQ0FBQSxTQUFTLEdBQVQsU0FBUyxDQUFvQjtLQUNuQzs7OztRQUdOLEtBQUE7QUFZRSxpQkFaRixLQUFBLENBYUksR0FBVSxFQUdvQjtnQkFGdkIsU0FBUyx5REFBYyxJQUFJO2dCQUMzQixPQUFPLHlEQUFnQyxJQUFJO2dCQUMzQyxNQUFNLHlEQUFhLElBQUk7O0FBRnZCLGdCQUFBLENBQUEsU0FBUyxHQUFULFNBQVMsQ0FBa0I7QUFDM0IsZ0JBQUEsQ0FBQSxPQUFPLEdBQVAsT0FBTyxDQUFvQztBQUMzQyxnQkFBQSxDQUFBLE1BQU0sR0FBTixNQUFNLENBQWlCO0FBYmhDLGdCQUFBLENBQUEsT0FBTyxHQUF1QixJQUFJLENBQUM7QUFDbkMsZ0JBQUEsQ0FBQSxTQUFTLEdBQVEsSUFBSSxDQUFDO0FBQ3RCLGdCQUFBLENBQUEsSUFBSSxHQUFrQixJQUFJLENBQUM7QUFDM0IsZ0JBQUEsQ0FBQSxXQUFXLEdBQVUsSUFBSSxDQUFDO0FBQzFCLGdCQUFBLENBQUEsTUFBTSxHQUFXLElBQUksQ0FBQztBQUN0QixnQkFBQSxDQUFBLFNBQVMsR0FBdUIsSUFBSSxDQUFDO0FBQ3JDLGdCQUFBLENBQUEsUUFBUSxHQUFzQixJQUFJLENBQUM7QUFDbkMsZ0JBQUEsQ0FBQSxHQUFHLEdBQVcsSUFBSSxDQUFDO0FBUWpCLGdCQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUNmLGdCQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUN0Qjs7QUFwQkgsYUFB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WyJpbXBvcnQgeyBTY29wZSB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IFJlZmVyZW5jZSwgUGF0aFJlZmVyZW5jZSwgUmVmZXJlbmNlSXRlcmF0b3IgfSBmcm9tICdnbGltbWVyLXJlZmVyZW5jZSc7XG5pbXBvcnQgeyBJbmxpbmVCbG9jayB9IGZyb20gJy4uL2NvbXBpbGVkL2Jsb2Nrcyc7XG5pbXBvcnQgeyBFdmFsdWF0ZWRBcmdzIH0gZnJvbSAnLi4vY29tcGlsZWQvZXhwcmVzc2lvbnMvYXJncyc7XG5pbXBvcnQgeyBPcGNvZGUsIE9wU2VxIH0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBMYWJlbE9wY29kZSB9IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvdm0nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBDb21wb25lbnRNYW5hZ2VyIH0gZnJvbSAnLi4vY29tcG9uZW50L2ludGVyZmFjZXMnO1xuXG5leHBvcnQgY2xhc3MgQ2FwdHVyZWRGcmFtZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgb3BlcmFuZDogUGF0aFJlZmVyZW5jZTxhbnk+LFxuICAgIHByaXZhdGUgYXJnczogRXZhbHVhdGVkQXJncyxcbiAgICBwcml2YXRlIGNvbmRpdGlvbjogUmVmZXJlbmNlPGJvb2xlYW4+XG4gICkge31cbn1cblxuY2xhc3MgRnJhbWUge1xuICBvcHM6IE9wU2VxO1xuICBvcDogT3Bjb2RlO1xuICBvcGVyYW5kOiBQYXRoUmVmZXJlbmNlPGFueT4gPSBudWxsO1xuICBpbW1lZGlhdGU6IGFueSA9IG51bGw7XG4gIGFyZ3M6IEV2YWx1YXRlZEFyZ3MgPSBudWxsO1xuICBjYWxsZXJTY29wZTogU2NvcGUgPSBudWxsO1xuICBibG9ja3M6IEJsb2NrcyA9IG51bGw7XG4gIGNvbmRpdGlvbjogUmVmZXJlbmNlPGJvb2xlYW4+ID0gbnVsbDtcbiAgaXRlcmF0b3I6IFJlZmVyZW5jZUl0ZXJhdG9yID0gbnVsbDtcbiAga2V5OiBzdHJpbmcgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIG9wczogT3BTZXEsXG4gICAgcHVibGljIGNvbXBvbmVudDogQ29tcG9uZW50ID0gbnVsbCxcbiAgICBwdWJsaWMgbWFuYWdlcjogQ29tcG9uZW50TWFuYWdlcjxDb21wb25lbnQ+ID0gbnVsbCxcbiAgICBwdWJsaWMgc2hhZG93OiBzdHJpbmdbXSA9IG51bGxcbiAgKSB7XG4gICAgdGhpcy5vcHMgPSBvcHM7XG4gICAgdGhpcy5vcCA9IG9wcy5oZWFkKCk7XG4gIH1cblxuICBjYXB0dXJlKCk6IENhcHR1cmVkRnJhbWUge1xuICAgIHJldHVybiBuZXcgQ2FwdHVyZWRGcmFtZSh0aGlzLm9wZXJhbmQsIHRoaXMuYXJncywgdGhpcy5jb25kaXRpb24pO1xuICB9XG5cbiAgcmVzdG9yZShmcmFtZTogQ2FwdHVyZWRGcmFtZSkge1xuICAgIHRoaXMub3BlcmFuZCA9IGZyYW1lWydvcGVyYW5kJ107XG4gICAgdGhpcy5hcmdzID0gZnJhbWVbJ2FyZ3MnXTtcbiAgICB0aGlzLmNvbmRpdGlvbiA9IGZyYW1lWydjb25kaXRpb24nXTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJsb2NrcyB7XG4gIGRlZmF1bHQ6IElubGluZUJsb2NrO1xuICBpbnZlcnNlOiBJbmxpbmVCbG9jaztcbn1cblxuZXhwb3J0IGNsYXNzIEZyYW1lU3RhY2sge1xuICBwcml2YXRlIGZyYW1lczogRnJhbWVbXSA9IFtdO1xuICBwcml2YXRlIGZyYW1lOiBudW1iZXIgPSB1bmRlZmluZWQ7XG5cbiAgcHVzaChvcHM6IE9wU2VxLCBjb21wb25lbnQ6IENvbXBvbmVudCA9IG51bGwsIG1hbmFnZXI6IENvbXBvbmVudE1hbmFnZXI8Q29tcG9uZW50PiA9IG51bGwsIHNoYWRvdzogc3RyaW5nW10gPSBudWxsKSB7XG4gICAgbGV0IGZyYW1lID0gKHRoaXMuZnJhbWUgPT09IHVuZGVmaW5lZCkgPyAodGhpcy5mcmFtZSA9IDApIDogKyt0aGlzLmZyYW1lO1xuXG4gICAgaWYgKHRoaXMuZnJhbWVzLmxlbmd0aCA8PSBmcmFtZSkge1xuICAgICAgdGhpcy5mcmFtZXMucHVzaChudWxsKTtcbiAgICB9XG5cbiAgICB0aGlzLmZyYW1lc1tmcmFtZV0gPSBuZXcgRnJhbWUob3BzLCBjb21wb25lbnQsIG1hbmFnZXIsIHNoYWRvdyk7XG4gIH1cblxuICBwb3AoKSB7XG4gICAgbGV0IHsgZnJhbWVzLCBmcmFtZSB9ID0gdGhpcztcbiAgICBmcmFtZXNbZnJhbWVdID0gbnVsbDtcbiAgICB0aGlzLmZyYW1lID0gZnJhbWUgPT09IDAgPyB1bmRlZmluZWQgOiBmcmFtZSAtIDE7XG4gIH1cblxuICBjYXB0dXJlKCk6IENhcHR1cmVkRnJhbWUge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5jYXB0dXJlKCk7XG4gIH1cblxuICByZXN0b3JlKGZyYW1lOiBDYXB0dXJlZEZyYW1lKSB7XG4gICAgdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0ucmVzdG9yZShmcmFtZSk7XG4gIH1cblxuICBnZXRPcHMoKTogT3BTZXEge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5vcHM7XG4gIH1cblxuICBnZXRDdXJyZW50KCk6IE9wY29kZSB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdLm9wO1xuICB9XG5cbiAgc2V0Q3VycmVudChvcDogT3Bjb2RlKTogT3Bjb2RlIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0ub3AgPSBvcDtcbiAgfVxuXG4gIGdldE9wZXJhbmQ8VD4oKTogUGF0aFJlZmVyZW5jZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdLm9wZXJhbmQ7XG4gIH1cblxuICBzZXRPcGVyYW5kPFQ+KG9wZXJhbmQ6IFBhdGhSZWZlcmVuY2U8VD4pOiBQYXRoUmVmZXJlbmNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0ub3BlcmFuZCA9IG9wZXJhbmQ7XG4gIH1cblxuICBnZXRJbW1lZGlhdGU8VD4oKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdLmltbWVkaWF0ZTtcbiAgfVxuXG4gIHNldEltbWVkaWF0ZTxUPih2YWx1ZTogVCk6IFQge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5pbW1lZGlhdGUgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldEFyZ3MoKTogRXZhbHVhdGVkQXJncyB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdLmFyZ3M7XG4gIH1cblxuICBzZXRBcmdzKGFyZ3M6IEV2YWx1YXRlZEFyZ3MpOiBFdmFsdWF0ZWRBcmdzIHtcbiAgICBsZXQgZnJhbWUgPSB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXTtcbiAgICByZXR1cm4gZnJhbWUuYXJncyA9IGFyZ3M7XG4gIH1cblxuICBnZXRDb25kaXRpb24oKTogUmVmZXJlbmNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uY29uZGl0aW9uO1xuICB9XG5cbiAgc2V0Q29uZGl0aW9uKGNvbmRpdGlvbjogUmVmZXJlbmNlPGJvb2xlYW4+KTogUmVmZXJlbmNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uY29uZGl0aW9uID0gY29uZGl0aW9uO1xuICB9XG5cbiAgZ2V0SXRlcmF0b3IoKTogUmVmZXJlbmNlSXRlcmF0b3Ige1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5pdGVyYXRvcjtcbiAgfVxuXG4gIHNldEl0ZXJhdG9yKGl0ZXJhdG9yOiBSZWZlcmVuY2VJdGVyYXRvcik6IFJlZmVyZW5jZUl0ZXJhdG9yIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uaXRlcmF0b3IgPSBpdGVyYXRvcjtcbiAgfVxuXG4gIGdldEtleSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5rZXk7XG4gIH1cblxuICBzZXRLZXkoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5rZXkgPSBrZXk7XG4gIH1cblxuICBnZXRCbG9ja3MoKTogQmxvY2tzIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uYmxvY2tzO1xuICB9XG5cbiAgc2V0QmxvY2tzKGJsb2NrczogQmxvY2tzKTogQmxvY2tzIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uYmxvY2tzID0gYmxvY2tzO1xuICB9XG5cbiAgZ2V0Q2FsbGVyU2NvcGUoKTogU2NvcGUge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5jYWxsZXJTY29wZTtcbiAgfVxuXG4gIHNldENhbGxlclNjb3BlKGNhbGxlclNjb3BlOiBTY29wZSk6IFNjb3BlIHtcbiAgICByZXR1cm4gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0uY2FsbGVyU2NvcGUgPSBjYWxsZXJTY29wZTtcbiAgfVxuXG4gIGdldENvbXBvbmVudCgpOiBDb21wb25lbnQge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5jb21wb25lbnQ7XG4gIH1cblxuICBnZXRNYW5hZ2VyKCk6IENvbXBvbmVudE1hbmFnZXI8Q29tcG9uZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWVzW3RoaXMuZnJhbWVdLm1hbmFnZXI7XG4gIH1cblxuICBnZXRTaGFkb3coKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmZyYW1lc1t0aGlzLmZyYW1lXS5zaGFkb3c7XG4gIH1cblxuICBnb3RvKG9wOiBMYWJlbE9wY29kZSkge1xuICAgIHRoaXMuc2V0Q3VycmVudChvcCk7XG4gIH1cblxuICBoYXNPcGNvZGVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZyYW1lICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICBuZXh0U3RhdGVtZW50KCk6IE9wY29kZSB7XG4gICAgbGV0IG9wID0gdGhpcy5mcmFtZXNbdGhpcy5mcmFtZV0ub3A7XG4gICAgbGV0IG9wcyA9IHRoaXMuZ2V0T3BzKCk7XG5cbiAgICBpZiAob3ApIHtcbiAgICAgIHRoaXMuc2V0Q3VycmVudChvcHMubmV4dE5vZGUob3ApKTtcbiAgICAgIHJldHVybiBvcDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wb3AoKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxufVxuIl19
22466
22570
  enifed('glimmer-runtime/lib/vm/render-result', ['exports', 'glimmer-runtime/lib/bounds', 'glimmer-runtime/lib/vm/update'], function (exports, _glimmerRuntimeLibBounds, _glimmerRuntimeLibVmUpdate) {
22467
22571
  'use strict';
22468
22572
 
@@ -22580,12 +22684,14 @@ enifed('glimmer-runtime/lib/vm/update', ['exports', 'glimmer-runtime/lib/bounds'
22580
22684
  var env = state.env;
22581
22685
  var scope = state.scope;
22582
22686
  var dynamicScope = state.dynamicScope;
22687
+ var frame = state.frame;
22583
22688
 
22584
22689
  this.ops = ops;
22585
22690
  this.children = children;
22586
22691
  this.env = env;
22587
22692
  this.scope = scope;
22588
22693
  this.dynamicScope = dynamicScope;
22694
+ this.frame = frame;
22589
22695
  this.bounds = bounds;
22590
22696
  }
22591
22697
 
@@ -22655,11 +22761,13 @@ enifed('glimmer-runtime/lib/vm/update', ['exports', 'glimmer-runtime/lib/bounds'
22655
22761
  TryOpcode.prototype.handleException = function handleException() {
22656
22762
  var env = this.env;
22657
22763
  var scope = this.scope;
22764
+ var ops = this.ops;
22658
22765
  var dynamicScope = this.dynamicScope;
22766
+ var frame = this.frame;
22659
22767
 
22660
22768
  var elementStack = _glimmerRuntimeLibBuilder.ElementStack.resume(this.env, this.bounds, this.bounds.reset(env));
22661
22769
  var vm = new _glimmerRuntimeLibVmAppend.default(env, scope, dynamicScope, elementStack);
22662
- var result = vm.execute(this.ops);
22770
+ var result = vm.resume(ops, frame);
22663
22771
  this.children = result.opcodes();
22664
22772
  this.didInitializeChildren();
22665
22773
  };
@@ -22845,12 +22953,11 @@ enifed('glimmer-runtime/lib/vm/update', ['exports', 'glimmer-runtime/lib/bounds'
22845
22953
  return UpdatingVMFrame;
22846
22954
  })();
22847
22955
  });
22848
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdm0vdXBkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQTJCQSxVQUFBO0FBTUUsaUJBTkYsVUFBQSxDQU1jLEdBQWdCLEVBQUUsSUFBNEIsRUFBQTt3Q0FBNUIsSUFBNEIsQ0FBMUIsZ0JBQWdCO2dCQUFoQixnQkFBZ0IseUNBQUcsS0FBSzs7QUFGaEQsZ0JBQUEsQ0FBQSxVQUFVLEdBQTJCLGlCQTVCdEIsS0FBSyxFQTRCNkMsQ0FBQztBQUd4RSxnQkFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDZixnQkFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDeEIsZ0JBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztTQUMxQzs7QUFWSCxrQkFBQSxXQVlFLE9BQU8sR0FBQSxpQkFBQyxPQUFzQixFQUFFLE9BQXlCLEVBQUE7Z0JBQ2pELFVBQVUsR0FBSyxJQUFJLENBQW5CLFVBQVU7O0FBRWhCLGdCQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUUzQixtQkFBTyxJQUFJLEVBQUU7QUFDWCxvQkFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTTtBQUVoQyxvQkFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7QUFFckQsb0JBQUksTUFBTSxLQUFLLElBQUksRUFBRTtBQUNuQix3QkFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUN0Qiw2QkFBUztpQkFDVjtBQUVELDZCQW5ERyxNQUFNLENBbURGLEtBQUssY0FBWSxNQUFNLENBQUMsSUFBSSxDQUFHLENBQUM7QUFDdkMsNkJBcERHLE1BQU0sQ0FvREYsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRXJCLHNCQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3ZCO1NBQ0Y7O0FBaENILGtCQUFBLFdBa0NFLElBQUksR0FBQSxjQUFDLEVBQWtCLEVBQUE7QUFDckIsZ0JBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNsQzs7QUFwQ0gsa0JBQUEsV0FzQ0UsR0FBRyxHQUFBLGNBQUMsR0FBa0IsRUFBRSxPQUF5QixFQUFBO0FBQy9DLGdCQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLGVBQWUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDL0Q7O0FBeENILGtCQUFBLFdBMENFLEtBQUssR0FBQSxrQkFBQTtBQUNILGdCQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztBQUMxQyxnQkFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUN2Qjs7QUE3Q0gsa0JBQUEsV0ErQ0UsY0FBYyxHQUFBLHdCQUFDLE1BQXNCLEVBQUE7QUFDbkMsa0JBQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdkI7O2VBakRILFVBQUE7OztzQkFBQSxVQUFBOztRQThEQSxXQUFBOzhCQUFBLFdBQUE7O0FBWUUsaUJBWkYsV0FBQSxDQVljLEdBQVUsRUFBRSxLQUFjLEVBQUUsTUFBeUIsRUFBRSxRQUFvQyxFQUFBO0FBQ3JHLHNDQUFPLENBQUM7QUFaSCxnQkFBQSxDQUFBLElBQUksR0FBRyxPQUFPLENBQUM7QUFDZixnQkFBQSxDQUFBLElBQUksR0FBRyxJQUFJLENBQUM7QUFDWixnQkFBQSxDQUFBLElBQUksR0FBRyxJQUFJLENBQUM7Z0JBV1gsR0FBRyxHQUEwQixLQUFLLENBQWxDLEdBQUc7Z0JBQUUsS0FBSyxHQUFtQixLQUFLLENBQTdCLEtBQUs7Z0JBQUUsWUFBWSxHQUFLLEtBQUssQ0FBdEIsWUFBWTs7QUFDOUIsZ0JBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ2YsZ0JBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQ3pCLGdCQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUNmLGdCQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNuQixnQkFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7QUFDakMsZ0JBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1NBQ3RCOztBQXJCSCxtQkFBQSxXQXlCRSxhQUFhLEdBQUEseUJBQUE7QUFDWCxtQkFBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ3BDOztBQTNCSCxtQkFBQSxXQTZCRSxTQUFTLEdBQUEscUJBQUE7QUFDUCxtQkFBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ2hDOztBQS9CSCxtQkFBQSxXQWlDRSxRQUFRLEdBQUEsb0JBQUE7QUFDTixtQkFBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQy9COztBQW5DSCxtQkFBQSxXQXFDRSxRQUFRLEdBQUEsa0JBQUMsRUFBYyxFQUFBO0FBQ3JCLGNBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUM3Qjs7QUF2Q0gsbUJBQUEsV0F5Q0UsT0FBTyxHQUFBLG1CQUFBO0FBQ0wsZ0JBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDdkI7O0FBM0NILG1CQUFBLFdBNkNFLFVBQVUsR0FBQSxzQkFBQTtBQUNSLGdCQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDbEM7O0FBL0NILG1CQUFBLFdBaURFLE1BQU0sR0FBQSxrQkFBQTtBQUNKLGdCQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBaUIsQ0FBQztBQUMzQyxnQkFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQWlCLENBQUM7QUFDekMsZ0JBQUksT0FBTyxHQUFHLGFBMUlnQyxJQUFJLEVBMEl0QixDQUFDO0FBRTdCLG1CQUFPLENBQUMsTUFBTSxDQUFDLFFBQU0sSUFBSSxDQUFDLEtBQUssQUFBRSxDQUFDO0FBQ2xDLG1CQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ25DLG1CQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBRS9CLG1CQUFPO0FBQ0wsb0JBQUksRUFBRSxJQUFJLENBQUMsS0FBSztBQUNoQixvQkFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO0FBQ2YsdUJBQU8sRUFBUCxPQUFPO0FBQ1Asd0JBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFBLEVBQUU7MkJBQUksRUFBRSxDQUFDLE1BQU0sRUFBRTtpQkFBQSxDQUFDO2FBQ3pELENBQUM7U0FDSDs7ZUFoRUgsV0FBQTtpQ0FyRTRCLGNBQWM7Ozs7UUF3STFDLFNBQUE7OEJBQUEsU0FBQTs7QUFPRSxpQkFQRixTQUFBLENBT2MsR0FBVSxFQUFFLEtBQWMsRUFBRSxNQUF3QixFQUFFLFFBQW9DLEVBQUE7QUFDcEcsb0NBQU0sR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFQL0IsZ0JBQUEsQ0FBQSxJQUFJLEdBQUcsS0FBSyxDQUFDO0FBUWxCLGdCQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsc0JBdkp6QixZQUFZLG1CQUVaLFlBQVksQ0FxSjJDLENBQUM7U0FDdkQ7O0FBVkgsaUJBQUEsV0FZRSxxQkFBcUIsR0FBQSxpQ0FBQTtBQUNuQixnQkFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBMUpuQixZQUFZLENBMEpvQixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztTQUMvQzs7QUFkSCxpQkFBQSxXQWdCRSxRQUFRLEdBQUEsa0JBQUMsRUFBYyxFQUFBO0FBQ3JCLGNBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUM3Qjs7QUFsQkgsaUJBQUEsV0FvQkUsZUFBZSxHQUFBLDJCQUFBO2dCQUNQLEdBQUcsR0FBMEIsSUFBSSxDQUFqQyxHQUFHO2dCQUFFLEtBQUssR0FBbUIsSUFBSSxDQUE1QixLQUFLO2dCQUFFLFlBQVksR0FBSyxJQUFJLENBQXJCLFlBQVk7O0FBRTlCLGdCQUFJLFlBQVksR0FBRywwQkFqTGQsWUFBWSxDQWlMZSxNQUFNLENBQ3BDLElBQUksQ0FBQyxHQUFHLEVBQ1IsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FDdkIsQ0FBQztBQUVGLGdCQUFJLEVBQUUsR0FBRyx1Q0FBTyxHQUFHLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztBQUN4RCxnQkFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFbEMsZ0JBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ2pDLGdCQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztTQUM5Qjs7QUFsQ0gsaUJBQUEsV0FvQ0UsTUFBTSxHQUFBLGtCQUFBO0FBQ0osZ0JBQUksSUFBSSxHQUFHLHVCQUFNLE1BQU0sS0FBQSxNQUFFLENBQUM7QUFDMUIsZ0JBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFpQixDQUFDO0FBQzNDLGdCQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBaUIsQ0FBQztBQUV6QyxnQkFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDM0QsZ0JBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBRXZELG1CQUFPLHVCQUFNLE1BQU0sS0FBQSxNQUFFLENBQUM7U0FDdkI7O2VBN0NILFNBQUE7T0FBK0IsV0FBVzs7OztRQWdEMUMsd0JBQUE7QUFPRSxpQkFQRix3QkFBQSxDQU9zQixNQUF1QixFQUFVLE1BQXNCLEVBQUE7QUFBdkQsZ0JBQUEsQ0FBQSxNQUFNLEdBQU4sTUFBTSxDQUFpQjtBQUFVLGdCQUFBLENBQUEsTUFBTSxHQUFOLE1BQU0sQ0FBZ0I7QUFIbkUsZ0JBQUEsQ0FBQSxTQUFTLEdBQUcsS0FBSyxDQUFDO0FBQ2xCLGdCQUFBLENBQUEsU0FBUyxHQUFHLEtBQUssQ0FBQztBQUd4QixnQkFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQ3RCLGdCQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUNwQzs7QUFWSCxnQ0FBQSxXQVlFLE1BQU0sR0FBQSxnQkFBQyxHQUFXLEVBQUUsSUFBMkIsRUFBRSxJQUEyQixFQUFFLE1BQWMsRUFBQTtnQkFDcEYsR0FBRyxHQUF1QixJQUFJLENBQTlCLEdBQUc7Z0JBQUUsTUFBTSxHQUFlLElBQUksQ0FBekIsTUFBTTtnQkFBRSxRQUFRLEdBQUssSUFBSSxDQUFqQixRQUFROztBQUMzQixnQkFBSSxXQUFXLEdBQWdCLElBQUksQ0FBQztBQUNwQyxnQkFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO0FBRXJCLGdCQUFJLE1BQU0sRUFBRTtBQUNWLHlCQUFTLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3hCLDJCQUFXLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQzthQUM1QyxNQUFNO0FBQ0wsMkJBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO2FBQzNCO0FBRUQsZ0JBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDNUMsZ0JBQUksU0FBb0IsWUFBQSxDQUFDO0FBRXpCLGNBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxVQUFBLEVBQUUsRUFBQTtBQUN2QixrQkFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsMENBck5kLGFBQWEsQ0FxTmUsVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6RCxrQkFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsa0JBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLHNCQXJPMUIsY0FBYyxDQXFPK0IsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNoRCxrQkFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFckIsb0JBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUN6QixvQkFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLGtCQUFrQixFQUFFLENBQUM7QUFFOUMseUJBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3ZGLENBQUMsQ0FBQztBQUVILHFCQUFTLENBQUMscUJBQXFCLEVBQUUsQ0FBQztBQUVsQyxvQkFBUSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFFNUMsZUFBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUVyQixnQkFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDdkI7O0FBOUNILGdDQUFBLFdBZ0RFLE1BQU0sR0FBQSxnQkFBQyxHQUFXLEVBQUUsSUFBMkIsRUFBRSxJQUEyQixFQUFBLEVBQzNFOztBQWpESCxnQ0FBQSxXQW1ERSxJQUFJLEdBQUEsY0FBQyxHQUFXLEVBQUUsSUFBMkIsRUFBRSxJQUEyQixFQUFFLE1BQWMsRUFBQTtnQkFDbEYsR0FBRyxHQUFlLElBQUksQ0FBdEIsR0FBRztnQkFBRSxRQUFRLEdBQUssSUFBSSxDQUFqQixRQUFROztBQUVuQixnQkFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCLGdCQUFJLFNBQVMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDO0FBRXBDLGdCQUFJLE1BQU0sRUFBRTtBQUNWLHlDQXJRNkIsSUFBSSxDQXFRdEIsS0FBSyxFQUFFLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO2FBQzFDLE1BQU07QUFDTCx5Q0F2UTZCLElBQUksQ0F1UXRCLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDaEM7QUFFRCxvQkFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN2QixvQkFBUSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDekM7O0FBakVILGdDQUFBLFdBbUVFLE1BQU0sR0FBQSxpQkFBQyxHQUFXLEVBQUE7Z0JBQ1YsR0FBRyxHQUFLLElBQUksQ0FBWixHQUFHOztBQUNULGdCQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEIsa0JBQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUNwQixxQ0FsUndCLEtBQUssQ0FrUnZCLE1BQU0sQ0FBQyxDQUFDO0FBQ2QsZ0JBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzdCLG1CQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUVoQixnQkFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDdkI7O0FBNUVILGdDQUFBLFdBOEVFLElBQUksR0FBQSxnQkFBQTtBQUNGLGdCQUFJLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3JFOztlQWhGSCx3QkFBQTs7O1FBbUZBLGVBQUE7OEJBQUEsZUFBQTs7QUFRRSxpQkFSRixlQUFBLENBUWMsR0FBVSxFQUFFLEtBQWMsRUFBRSxNQUFlLEVBQUUsUUFBb0MsRUFBRSxTQUE2QixFQUFBO0FBQzFILHFDQUFNLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBUi9CLGdCQUFBLENBQUEsSUFBSSxHQUFHLFlBQVksQ0FBQztBQUNwQixnQkFBQSxDQUFBLEdBQUcsR0FBRyxhQTlSbUMsSUFBSSxFQThScEIsQ0FBQztBQUd6QixnQkFBQSxDQUFBLFlBQVkscUJBblJwQixPQUFPLEFBbVJpQyxDQUFDO0FBS3ZDLGdCQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztBQUMzQixnQkFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxzQkE1UnpCLFlBQVksbUJBRVosWUFBWSxDQTBSMkMsQ0FBQztBQUN0RCxnQkFBSSxDQUFDLEdBQUcsR0FBRyxrQkEvUmIsT0FBTyxDQStSYyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUMzQzs7QUFiSCx1QkFBQSxXQWVFLHFCQUFxQixHQUFBLGlDQUFxQjtnQkFBcEIsYUFBYSx5REFBRyxJQUFJOztBQUN4QyxnQkFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUUvQyxnQkFBSSxhQUFhLEVBQUU7QUFDakIsb0JBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQW5TckIsWUFBWSxDQW1Tc0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7YUFDL0M7U0FDRjs7QUFyQkgsdUJBQUEsV0F1QkUsUUFBUSxHQUFBLGtCQUFDLEVBQWMsRUFBQTtnQkFDZixTQUFTLEdBQW1CLElBQUksQ0FBaEMsU0FBUztnQkFBRSxZQUFZLEdBQUssSUFBSSxDQUFyQixZQUFZOztBQUU3QixnQkFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFO29CQUNuQyxNQUFNLEdBQUssSUFBSSxDQUFmLE1BQU07b0JBQ04sR0FBRyxHQUFLLEVBQUUsQ0FBVixHQUFHOztBQUVULG9CQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ25DLG1CQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7QUFFbkUsb0JBQUksTUFBTSxHQUFHLElBQUksd0JBQXdCLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3hELG9CQUFJLFlBQVksR0FBRyxzQkF6VHZCLG9CQUFvQixDQXlUNEIsRUFBRSxNQUFNLEVBQU4sTUFBTSxFQUFFLFNBQVMsRUFBVCxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBRW5FLDRCQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7QUFFcEIsb0JBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDMUM7O0FBR0Qsb0NBQU0sUUFBUSxLQUFBLE9BQUMsRUFBRSxDQUFDLENBQUM7U0FDcEI7O0FBM0NILHVCQUFBLFdBNkNFLGNBQWMsR0FBQSx3QkFBQyxXQUF3QixFQUFBO2dCQUMvQixHQUFHLEdBQTBCLElBQUksQ0FBakMsR0FBRztnQkFBRSxLQUFLLEdBQW1CLElBQUksQ0FBNUIsS0FBSztnQkFBRSxZQUFZLEdBQUssSUFBSSxDQUFyQixZQUFZOztBQUU5QixnQkFBSSxZQUFZLEdBQUcsMEJBN1VkLFlBQVksQ0E2VWUsZ0JBQWdCLENBQzlDLElBQUksQ0FBQyxHQUFHLEVBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsRUFDM0IsV0FBVyxDQUNaLENBQUM7QUFFRixtQkFBTyx1Q0FBTyxHQUFHLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztTQUN2RDs7QUF2REgsdUJBQUEsV0F5REUsTUFBTSxHQUFBLGtCQUFBO0FBQ0osZ0JBQUksSUFBSSxHQUFHLHdCQUFNLE1BQU0sS0FBQSxNQUFFLENBQUM7QUFDMUIsZ0JBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7QUFFbkIsZ0JBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQUEsR0FBRyxFQUFBO0FBQ2xDLHVCQUFVLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBRzthQUNwRCxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRWQsZ0JBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBTyxLQUFLLE1BQUcsQ0FBQztBQUV0QyxtQkFBTyxJQUFJLENBQUM7U0FDYjs7ZUFwRUgsZUFBQTtPQUFxQyxXQUFXOzs7O1FBdUVoRCxlQUFBO0FBTUUsaUJBTkYsZUFBQSxDQU1jLEVBQWMsRUFBRSxHQUFrQixFQUFFLE9BQXlCLEVBQUE7QUFDdkUsZ0JBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ2IsZ0JBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBQ2YsZ0JBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQzFCLGdCQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDO1NBQ2pDOztBQVhILHVCQUFBLFdBYUUsSUFBSSxHQUFBLGNBQUMsRUFBa0IsRUFBQTtBQUNyQixnQkFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7U0FDbkI7O0FBZkgsdUJBQUEsV0FpQkUsYUFBYSxHQUFBLHlCQUFBO2dCQUNMLE9BQU8sR0FBVSxJQUFJLENBQXJCLE9BQU87Z0JBQUUsR0FBRyxHQUFLLElBQUksQ0FBWixHQUFHOztBQUNsQixnQkFBSSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2xELG1CQUFPLE9BQU8sQ0FBQztTQUNoQjs7QUFyQkgsdUJBQUEsV0F1QkUsZUFBZSxHQUFBLDJCQUFBO0FBQ2IsZ0JBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN6Qzs7ZUF6QkgsZUFBQSIsImZpbGUiOiJ1cGRhdGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY29wZSwgRHluYW1pY1Njb3BlLCBFbnZpcm9ubWVudCB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IERlc3Ryb3lhYmxlQm91bmRzLCBjbGVhciwgbW92ZSBhcyBtb3ZlQm91bmRzIH0gZnJvbSAnLi4vYm91bmRzJztcbmltcG9ydCB7IEVsZW1lbnRTdGFjaywgVHJhY2tlciwgVXBkYXRhYmxlVHJhY2tlciB9IGZyb20gJy4uL2J1aWxkZXInO1xuaW1wb3J0IHsgTE9HR0VSLCBPcGFxdWUsIFN0YWNrLCBMaW5rZWRMaXN0LCBEaWN0LCBkaWN0IH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7XG4gIENvbnN0UmVmZXJlbmNlLFxuICBQYXRoUmVmZXJlbmNlLFxuICBJdGVyYXRpb25BcnRpZmFjdHMsXG4gIEl0ZXJhdG9yU3luY2hyb25pemVyLFxuICBJdGVyYXRvclN5bmNocm9uaXplckRlbGVnYXRlLFxuXG4gIC8vIFRhZ3NcbiAgY29tYmluZSxcbiAgUmV2aXNpb24sXG4gIFVwZGF0YWJsZVRhZyxcbiAgY29tYmluZVNsaWNlLFxuICBDT05TVEFOVF9UQUcsXG4gIElOSVRJQUxcbn0gZnJvbSAnZ2xpbW1lci1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgRXZhbHVhdGVkQXJncyB9IGZyb20gJy4uL2NvbXBpbGVkL2V4cHJlc3Npb25zL2FyZ3MnO1xuaW1wb3J0IHsgT3Bjb2RlSlNPTiwgT3BTZXEsIFVwZGF0aW5nT3Bjb2RlLCBVcGRhdGluZ09wU2VxIH0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBMYWJlbE9wY29kZSB9IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvdm0nO1xuaW1wb3J0IHsgRE9NQ2hhbmdlcyB9IGZyb20gJy4uL2RvbS9oZWxwZXInO1xuaW1wb3J0ICogYXMgU2ltcGxlIGZyb20gJy4uL2RvbS9pbnRlcmZhY2VzJztcblxuaW1wb3J0IFZNIGZyb20gJy4vYXBwZW5kJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVXBkYXRpbmdWTSB7XG4gIHB1YmxpYyBlbnY6IEVudmlyb25tZW50O1xuICBwdWJsaWMgZG9tOiBET01DaGFuZ2VzO1xuICBwdWJsaWMgYWx3YXlzUmV2YWxpZGF0ZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBmcmFtZVN0YWNrOiBTdGFjazxVcGRhdGluZ1ZNRnJhbWU+ID0gbmV3IFN0YWNrPFVwZGF0aW5nVk1GcmFtZT4oKTtcblxuICBjb25zdHJ1Y3RvcihlbnY6IEVudmlyb25tZW50LCB7IGFsd2F5c1JldmFsaWRhdGUgPSBmYWxzZSB9KSB7XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5kb20gPSBlbnYuZ2V0RE9NKCk7XG4gICAgdGhpcy5hbHdheXNSZXZhbGlkYXRlID0gYWx3YXlzUmV2YWxpZGF0ZTtcbiAgfVxuXG4gIGV4ZWN1dGUob3Bjb2RlczogVXBkYXRpbmdPcFNlcSwgaGFuZGxlcjogRXhjZXB0aW9uSGFuZGxlcikge1xuICAgIGxldCB7IGZyYW1lU3RhY2sgfSA9IHRoaXM7XG5cbiAgICB0aGlzLnRyeShvcGNvZGVzLCBoYW5kbGVyKTtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBpZiAoZnJhbWVTdGFjay5pc0VtcHR5KCkpIGJyZWFrO1xuXG4gICAgICBsZXQgb3Bjb2RlID0gdGhpcy5mcmFtZVN0YWNrLmN1cnJlbnQubmV4dFN0YXRlbWVudCgpO1xuXG4gICAgICBpZiAob3Bjb2RlID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMuZnJhbWVTdGFjay5wb3AoKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIExPR0dFUi5kZWJ1ZyhgW1ZNXSBPUCAke29wY29kZS50eXBlfWApO1xuICAgICAgTE9HR0VSLnRyYWNlKG9wY29kZSk7XG5cbiAgICAgIG9wY29kZS5ldmFsdWF0ZSh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBnb3RvKG9wOiBVcGRhdGluZ09wY29kZSkge1xuICAgIHRoaXMuZnJhbWVTdGFjay5jdXJyZW50LmdvdG8ob3ApO1xuICB9XG5cbiAgdHJ5KG9wczogVXBkYXRpbmdPcFNlcSwgaGFuZGxlcjogRXhjZXB0aW9uSGFuZGxlcikge1xuICAgIHRoaXMuZnJhbWVTdGFjay5wdXNoKG5ldyBVcGRhdGluZ1ZNRnJhbWUodGhpcywgb3BzLCBoYW5kbGVyKSk7XG4gIH1cblxuICB0aHJvdygpIHtcbiAgICB0aGlzLmZyYW1lU3RhY2suY3VycmVudC5oYW5kbGVFeGNlcHRpb24oKTtcbiAgICB0aGlzLmZyYW1lU3RhY2sucG9wKCk7XG4gIH1cblxuICBldmFsdWF0ZU9wY29kZShvcGNvZGU6IFVwZGF0aW5nT3Bjb2RlKSB7XG4gICAgb3Bjb2RlLmV2YWx1YXRlKHRoaXMpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhjZXB0aW9uSGFuZGxlciB7XG4gIGhhbmRsZUV4Y2VwdGlvbigpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZNU3RhdGUge1xuICBlbnY6IEVudmlyb25tZW50O1xuICBzY29wZTogU2NvcGU7XG4gIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmxvY2tPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSBpbXBsZW1lbnRzIERlc3Ryb3lhYmxlQm91bmRzIHtcbiAgcHVibGljIHR5cGUgPSBcImJsb2NrXCI7XG4gIHB1YmxpYyBuZXh0ID0gbnVsbDtcbiAgcHVibGljIHByZXYgPSBudWxsO1xuXG4gIHByb3RlY3RlZCBlbnY6IEVudmlyb25tZW50O1xuICBwcm90ZWN0ZWQgc2NvcGU6IFNjb3BlO1xuICBwcm90ZWN0ZWQgZHluYW1pY1Njb3BlOiBEeW5hbWljU2NvcGU7XG4gIHByb3RlY3RlZCBjaGlsZHJlbjogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT47XG4gIHByb3RlY3RlZCBib3VuZHM6IERlc3Ryb3lhYmxlQm91bmRzO1xuICBwdWJsaWMgb3BzOiBPcFNlcTtcblxuICBjb25zdHJ1Y3RvcihvcHM6IE9wU2VxLCBzdGF0ZTogVk1TdGF0ZSwgYm91bmRzOiBEZXN0cm95YWJsZUJvdW5kcywgY2hpbGRyZW46IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KSB7XG4gICAgc3VwZXIoKTtcbiAgICBsZXQgeyBlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUgfSA9IHN0YXRlO1xuICAgIHRoaXMub3BzID0gb3BzO1xuICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICB0aGlzLmVudiA9IGVudjtcbiAgICB0aGlzLnNjb3BlID0gc2NvcGU7XG4gICAgdGhpcy5keW5hbWljU2NvcGUgPSBkeW5hbWljU2NvcGU7XG4gICAgdGhpcy5ib3VuZHMgPSBib3VuZHM7XG4gIH1cblxuICBhYnN0cmFjdCBkaWRJbml0aWFsaXplQ2hpbGRyZW4oKTtcblxuICBwYXJlbnRFbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLmJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gIH1cblxuICBmaXJzdE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRzLmZpcnN0Tm9kZSgpO1xuICB9XG5cbiAgbGFzdE5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRzLmxhc3ROb2RlKCk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIHZtLnRyeSh0aGlzLmNoaWxkcmVuLCBudWxsKTtcbiAgfVxuXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5ib3VuZHMuZGVzdHJveSgpO1xuICB9XG5cbiAgZGlkRGVzdHJveSgpIHtcbiAgICB0aGlzLmVudi5kaWREZXN0cm95KHRoaXMuYm91bmRzKTtcbiAgfVxuXG4gIHRvSlNPTigpIDogT3Bjb2RlSlNPTiB7XG4gICAgbGV0IGJlZ2luID0gdGhpcy5vcHMuaGVhZCgpIGFzIExhYmVsT3Bjb2RlO1xuICAgIGxldCBlbmQgPSB0aGlzLm9wcy50YWlsKCkgYXMgTGFiZWxPcGNvZGU7XG4gICAgbGV0IGRldGFpbHMgPSBkaWN0PHN0cmluZz4oKTtcblxuICAgIGRldGFpbHNbXCJndWlkXCJdID0gYCR7dGhpcy5fZ3VpZH1gO1xuICAgIGRldGFpbHNbXCJiZWdpblwiXSA9IGJlZ2luLmluc3BlY3QoKTtcbiAgICBkZXRhaWxzW1wiZW5kXCJdID0gZW5kLmluc3BlY3QoKTtcblxuICAgIHJldHVybiB7XG4gICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgZGV0YWlscyxcbiAgICAgIGNoaWxkcmVuOiB0aGlzLmNoaWxkcmVuLnRvQXJyYXkoKS5tYXAob3AgPT4gb3AudG9KU09OKCkpXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVHJ5T3Bjb2RlIGV4dGVuZHMgQmxvY2tPcGNvZGUgaW1wbGVtZW50cyBFeGNlcHRpb25IYW5kbGVyIHtcbiAgcHVibGljIHR5cGUgPSBcInRyeVwiO1xuXG4gIHByaXZhdGUgX3RhZzogVXBkYXRhYmxlVGFnO1xuXG4gIHByb3RlY3RlZCBib3VuZHM6IFVwZGF0YWJsZVRyYWNrZXI7XG5cbiAgY29uc3RydWN0b3Iob3BzOiBPcFNlcSwgc3RhdGU6IFZNU3RhdGUsIGJvdW5kczogVXBkYXRhYmxlVHJhY2tlciwgY2hpbGRyZW46IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KSB7XG4gICAgc3VwZXIob3BzLCBzdGF0ZSwgYm91bmRzLCBjaGlsZHJlbik7XG4gICAgdGhpcy50YWcgPSB0aGlzLl90YWcgPSBuZXcgVXBkYXRhYmxlVGFnKENPTlNUQU5UX1RBRyk7XG4gIH1cblxuICBkaWRJbml0aWFsaXplQ2hpbGRyZW4oKSB7XG4gICAgdGhpcy5fdGFnLnVwZGF0ZShjb21iaW5lU2xpY2UodGhpcy5jaGlsZHJlbikpO1xuICB9XG5cbiAgZXZhbHVhdGUodm06IFVwZGF0aW5nVk0pIHtcbiAgICB2bS50cnkodGhpcy5jaGlsZHJlbiwgdGhpcyk7XG4gIH1cblxuICBoYW5kbGVFeGNlcHRpb24oKSB7XG4gICAgbGV0IHsgZW52LCBzY29wZSwgZHluYW1pY1Njb3BlIH0gPSB0aGlzO1xuXG4gICAgbGV0IGVsZW1lbnRTdGFjayA9IEVsZW1lbnRTdGFjay5yZXN1bWUoXG4gICAgICB0aGlzLmVudixcbiAgICAgIHRoaXMuYm91bmRzLFxuICAgICAgdGhpcy5ib3VuZHMucmVzZXQoZW52KVxuICAgICk7XG5cbiAgICBsZXQgdm0gPSBuZXcgVk0oZW52LCBzY29wZSwgZHluYW1pY1Njb3BlLCBlbGVtZW50U3RhY2spO1xuICAgIGxldCByZXN1bHQgPSB2bS5leGVjdXRlKHRoaXMub3BzKTtcblxuICAgIHRoaXMuY2hpbGRyZW4gPSByZXN1bHQub3Bjb2RlcygpO1xuICAgIHRoaXMuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCk7XG4gIH1cblxuICB0b0pTT04oKSA6IE9wY29kZUpTT04ge1xuICAgIGxldCBqc29uID0gc3VwZXIudG9KU09OKCk7XG4gICAgbGV0IGJlZ2luID0gdGhpcy5vcHMuaGVhZCgpIGFzIExhYmVsT3Bjb2RlO1xuICAgIGxldCBlbmQgPSB0aGlzLm9wcy50YWlsKCkgYXMgTGFiZWxPcGNvZGU7XG5cbiAgICBqc29uW1wiZGV0YWlsc1wiXVtcImJlZ2luXCJdID0gSlNPTi5zdHJpbmdpZnkoYmVnaW4uaW5zcGVjdCgpKTtcbiAgICBqc29uW1wiZGV0YWlsc1wiXVtcImVuZFwiXSA9IEpTT04uc3RyaW5naWZ5KGVuZC5pbnNwZWN0KCkpO1xuXG4gICAgcmV0dXJuIHN1cGVyLnRvSlNPTigpO1xuICB9XG59XG5cbmNsYXNzIExpc3RSZXZhbGlkYXRpb25EZWxlZ2F0ZSBpbXBsZW1lbnRzIEl0ZXJhdG9yU3luY2hyb25pemVyRGVsZWdhdGUge1xuICBwcml2YXRlIG1hcDogRGljdDxCbG9ja09wY29kZT47XG4gIHByaXZhdGUgdXBkYXRpbmc6IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+O1xuXG4gIHByaXZhdGUgZGlkSW5zZXJ0ID0gZmFsc2U7XG4gIHByaXZhdGUgZGlkRGVsZXRlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBvcGNvZGU6IExpc3RCbG9ja09wY29kZSwgcHJpdmF0ZSBtYXJrZXI6IFNpbXBsZS5Db21tZW50KSB7XG4gICAgdGhpcy5tYXAgPSBvcGNvZGUubWFwO1xuICAgIHRoaXMudXBkYXRpbmcgPSBvcGNvZGVbJ2NoaWxkcmVuJ107XG4gIH1cblxuICBpbnNlcnQoa2V5OiBzdHJpbmcsIGl0ZW06IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgbWVtbzogUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBiZWZvcmU6IHN0cmluZykge1xuICAgIGxldCB7IG1hcCwgb3Bjb2RlLCB1cGRhdGluZyB9ID0gdGhpcztcbiAgICBsZXQgbmV4dFNpYmxpbmc6IFNpbXBsZS5Ob2RlID0gbnVsbDtcbiAgICBsZXQgcmVmZXJlbmNlID0gbnVsbDtcblxuICAgIGlmIChiZWZvcmUpIHtcbiAgICAgIHJlZmVyZW5jZSA9IG1hcFtiZWZvcmVdO1xuICAgICAgbmV4dFNpYmxpbmcgPSByZWZlcmVuY2UuYm91bmRzLmZpcnN0Tm9kZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0U2libGluZyA9IHRoaXMubWFya2VyO1xuICAgIH1cblxuICAgIGxldCB2bSA9IG9wY29kZS52bUZvckluc2VydGlvbihuZXh0U2libGluZyk7XG4gICAgbGV0IHRyeU9wY29kZTogVHJ5T3Bjb2RlO1xuXG4gICAgdm0uZXhlY3V0ZShvcGNvZGUub3BzLCB2bSA9PiB7XG4gICAgICB2bS5mcmFtZS5zZXRBcmdzKEV2YWx1YXRlZEFyZ3MucG9zaXRpb25hbChbaXRlbSwgbWVtb10pKTtcbiAgICAgIHZtLmZyYW1lLnNldE9wZXJhbmQoaXRlbSk7XG4gICAgICB2bS5mcmFtZS5zZXRDb25kaXRpb24obmV3IENvbnN0UmVmZXJlbmNlKHRydWUpKTtcbiAgICAgIHZtLmZyYW1lLnNldEtleShrZXkpO1xuXG4gICAgICBsZXQgc3RhdGUgPSB2bS5jYXB0dXJlKCk7XG4gICAgICBsZXQgdHJhY2tlciA9IHZtLnN0YWNrKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG5cbiAgICAgIHRyeU9wY29kZSA9IG5ldyBUcnlPcGNvZGUob3Bjb2RlLm9wcywgc3RhdGUsIHRyYWNrZXIsIHZtLnVwZGF0aW5nT3Bjb2RlU3RhY2suY3VycmVudCk7XG4gICAgfSk7XG5cbiAgICB0cnlPcGNvZGUuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCk7XG5cbiAgICB1cGRhdGluZy5pbnNlcnRCZWZvcmUodHJ5T3Bjb2RlLCByZWZlcmVuY2UpO1xuXG4gICAgbWFwW2tleV0gPSB0cnlPcGNvZGU7XG5cbiAgICB0aGlzLmRpZEluc2VydCA9IHRydWU7XG4gIH1cblxuICByZXRhaW4oa2V5OiBzdHJpbmcsIGl0ZW06IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgbWVtbzogUGF0aFJlZmVyZW5jZTxPcGFxdWU+KSB7XG4gIH1cblxuICBtb3ZlKGtleTogc3RyaW5nLCBpdGVtOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIG1lbW86IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgYmVmb3JlOiBzdHJpbmcpIHtcbiAgICBsZXQgeyBtYXAsIHVwZGF0aW5nIH0gPSB0aGlzO1xuXG4gICAgbGV0IGVudHJ5ID0gbWFwW2tleV07XG4gICAgbGV0IHJlZmVyZW5jZSA9IG1hcFtiZWZvcmVdIHx8IG51bGw7XG5cbiAgICBpZiAoYmVmb3JlKSB7XG4gICAgICBtb3ZlQm91bmRzKGVudHJ5LCByZWZlcmVuY2UuZmlyc3ROb2RlKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtb3ZlQm91bmRzKGVudHJ5LCB0aGlzLm1hcmtlcik7XG4gICAgfVxuXG4gICAgdXBkYXRpbmcucmVtb3ZlKGVudHJ5KTtcbiAgICB1cGRhdGluZy5pbnNlcnRCZWZvcmUoZW50cnksIHJlZmVyZW5jZSk7XG4gIH1cblxuICBkZWxldGUoa2V5OiBzdHJpbmcpIHtcbiAgICBsZXQgeyBtYXAgfSA9IHRoaXM7XG4gICAgbGV0IG9wY29kZSA9IG1hcFtrZXldO1xuICAgIG9wY29kZS5kaWREZXN0cm95KCk7XG4gICAgY2xlYXIob3Bjb2RlKTtcbiAgICB0aGlzLnVwZGF0aW5nLnJlbW92ZShvcGNvZGUpO1xuICAgIGRlbGV0ZSBtYXBba2V5XTtcblxuICAgIHRoaXMuZGlkRGVsZXRlID0gdHJ1ZTtcbiAgfVxuXG4gIGRvbmUoKSB7XG4gICAgdGhpcy5vcGNvZGUuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKHRoaXMuZGlkSW5zZXJ0IHx8IHRoaXMuZGlkRGVsZXRlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdEJsb2NrT3Bjb2RlIGV4dGVuZHMgQmxvY2tPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwibGlzdC1ibG9ja1wiO1xuICBwdWJsaWMgbWFwID0gZGljdDxCbG9ja09wY29kZT4oKTtcbiAgcHVibGljIGFydGlmYWN0czogSXRlcmF0aW9uQXJ0aWZhY3RzO1xuXG4gIHByaXZhdGUgbGFzdEl0ZXJhdGVkOiBSZXZpc2lvbiA9IElOSVRJQUw7XG4gIHByaXZhdGUgX3RhZzogVXBkYXRhYmxlVGFnO1xuXG4gIGNvbnN0cnVjdG9yKG9wczogT3BTZXEsIHN0YXRlOiBWTVN0YXRlLCBib3VuZHM6IFRyYWNrZXIsIGNoaWxkcmVuOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPiwgYXJ0aWZhY3RzOiBJdGVyYXRpb25BcnRpZmFjdHMpIHtcbiAgICBzdXBlcihvcHMsIHN0YXRlLCBib3VuZHMsIGNoaWxkcmVuKTtcbiAgICB0aGlzLmFydGlmYWN0cyA9IGFydGlmYWN0cztcbiAgICBsZXQgX3RhZyA9IHRoaXMuX3RhZyA9IG5ldyBVcGRhdGFibGVUYWcoQ09OU1RBTlRfVEFHKTtcbiAgICB0aGlzLnRhZyA9IGNvbWJpbmUoW2FydGlmYWN0cy50YWcsIF90YWddKTtcbiAgfVxuXG4gIGRpZEluaXRpYWxpemVDaGlsZHJlbihsaXN0RGlkQ2hhbmdlID0gdHJ1ZSkge1xuICAgIHRoaXMubGFzdEl0ZXJhdGVkID0gdGhpcy5hcnRpZmFjdHMudGFnLnZhbHVlKCk7XG5cbiAgICBpZiAobGlzdERpZENoYW5nZSkge1xuICAgICAgdGhpcy5fdGFnLnVwZGF0ZShjb21iaW5lU2xpY2UodGhpcy5jaGlsZHJlbikpO1xuICAgIH1cbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgbGV0IHsgYXJ0aWZhY3RzLCBsYXN0SXRlcmF0ZWQgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWFydGlmYWN0cy50YWcudmFsaWRhdGUobGFzdEl0ZXJhdGVkKSkge1xuICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgbGV0IHsgZG9tIH0gPSB2bTtcblxuICAgICAgbGV0IG1hcmtlciA9IGRvbS5jcmVhdGVDb21tZW50KCcnKTtcbiAgICAgIGRvbS5pbnNlcnRBZnRlcihib3VuZHMucGFyZW50RWxlbWVudCgpLCBtYXJrZXIsIGJvdW5kcy5sYXN0Tm9kZSgpKTtcblxuICAgICAgbGV0IHRhcmdldCA9IG5ldyBMaXN0UmV2YWxpZGF0aW9uRGVsZWdhdGUodGhpcywgbWFya2VyKTtcbiAgICAgIGxldCBzeW5jaHJvbml6ZXIgPSBuZXcgSXRlcmF0b3JTeW5jaHJvbml6ZXIoeyB0YXJnZXQsIGFydGlmYWN0cyB9KTtcblxuICAgICAgc3luY2hyb25pemVyLnN5bmMoKTtcblxuICAgICAgdGhpcy5wYXJlbnRFbGVtZW50KCkucmVtb3ZlQ2hpbGQobWFya2VyKTtcbiAgICB9XG5cbiAgICAvLyBSdW4gbm93LXVwZGF0ZWQgdXBkYXRpbmcgb3Bjb2Rlc1xuICAgIHN1cGVyLmV2YWx1YXRlKHZtKTtcbiAgfVxuXG4gIHZtRm9ySW5zZXJ0aW9uKG5leHRTaWJsaW5nOiBTaW1wbGUuTm9kZSkge1xuICAgIGxldCB7IGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSB9ID0gdGhpcztcblxuICAgIGxldCBlbGVtZW50U3RhY2sgPSBFbGVtZW50U3RhY2suZm9ySW5pdGlhbFJlbmRlcihcbiAgICAgIHRoaXMuZW52LFxuICAgICAgdGhpcy5ib3VuZHMucGFyZW50RWxlbWVudCgpLFxuICAgICAgbmV4dFNpYmxpbmdcbiAgICApO1xuXG4gICAgcmV0dXJuIG5ldyBWTShlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjayk7XG4gIH1cblxuICB0b0pTT04oKSA6IE9wY29kZUpTT04ge1xuICAgIGxldCBqc29uID0gc3VwZXIudG9KU09OKCk7XG4gICAgbGV0IG1hcCA9IHRoaXMubWFwO1xuXG4gICAgbGV0IGlubmVyID0gT2JqZWN0LmtleXMobWFwKS5tYXAoa2V5ID0+IHtcbiAgICAgIHJldHVybiBgJHtKU09OLnN0cmluZ2lmeShrZXkpfTogJHttYXBba2V5XS5fZ3VpZH1gO1xuICAgIH0pLmpvaW4oXCIsIFwiKTtcblxuICAgIGpzb25bXCJkZXRhaWxzXCJdW1wibWFwXCJdID0gYHske2lubmVyfX1gO1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cbn1cblxuY2xhc3MgVXBkYXRpbmdWTUZyYW1lIHtcbiAgcHJpdmF0ZSB2bTogVXBkYXRpbmdWTTtcbiAgcHJpdmF0ZSBvcHM6IFVwZGF0aW5nT3BTZXE7XG4gIHByaXZhdGUgY3VycmVudDogVXBkYXRpbmdPcGNvZGU7XG4gIHByaXZhdGUgZXhjZXB0aW9uSGFuZGxlcjogRXhjZXB0aW9uSGFuZGxlcjtcblxuICBjb25zdHJ1Y3Rvcih2bTogVXBkYXRpbmdWTSwgb3BzOiBVcGRhdGluZ09wU2VxLCBoYW5kbGVyOiBFeGNlcHRpb25IYW5kbGVyKSB7XG4gICAgdGhpcy52bSA9IHZtO1xuICAgIHRoaXMub3BzID0gb3BzO1xuICAgIHRoaXMuY3VycmVudCA9IG9wcy5oZWFkKCk7XG4gICAgdGhpcy5leGNlcHRpb25IYW5kbGVyID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdvdG8ob3A6IFVwZGF0aW5nT3Bjb2RlKSB7XG4gICAgdGhpcy5jdXJyZW50ID0gb3A7XG4gIH1cblxuICBuZXh0U3RhdGVtZW50KCk6IFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBsZXQgeyBjdXJyZW50LCBvcHMgfSA9IHRoaXM7XG4gICAgaWYgKGN1cnJlbnQpIHRoaXMuY3VycmVudCA9IG9wcy5uZXh0Tm9kZShjdXJyZW50KTtcbiAgICByZXR1cm4gY3VycmVudDtcbiAgfVxuXG4gIGhhbmRsZUV4Y2VwdGlvbigpIHtcbiAgICB0aGlzLmV4Y2VwdGlvbkhhbmRsZXIuaGFuZGxlRXhjZXB0aW9uKCk7XG4gIH1cbn1cbiJdfQ==
22849
- enifed('glimmer-syntax/index', ['exports', 'glimmer-syntax/lib/utils', 'glimmer-syntax/lib/parser', 'glimmer-syntax/lib/builders', 'glimmer-syntax/lib/traversal/traverse', 'glimmer-syntax/lib/traversal/walker', 'glimmer-syntax/lib/generation/print'], function (exports, _glimmerSyntaxLibUtils, _glimmerSyntaxLibParser, _glimmerSyntaxLibBuilders, _glimmerSyntaxLibTraversalTraverse, _glimmerSyntaxLibTraversalWalker, _glimmerSyntaxLibGenerationPrint) {
22956
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItcnVudGltZS9saWIvdm0vdXBkYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztRQTRCQSxVQUFBO0FBTUUsaUJBTkYsVUFBQSxDQU1jLEdBQWdCLEVBQUUsSUFBNEIsRUFBQTt3Q0FBNUIsSUFBNEIsQ0FBMUIsZ0JBQWdCO2dCQUFoQixnQkFBZ0IseUNBQUcsS0FBSzs7QUFGaEQsZ0JBQUEsQ0FBQSxVQUFVLEdBQTJCLGlCQTdCdEIsS0FBSyxFQTZCNkMsQ0FBQztBQUd4RSxnQkFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFDZixnQkFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDeEIsZ0JBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztTQUMxQzs7QUFWSCxrQkFBQSxXQVlFLE9BQU8sR0FBQSxpQkFBQyxPQUFzQixFQUFFLE9BQXlCLEVBQUE7Z0JBQ2pELFVBQVUsR0FBSyxJQUFJLENBQW5CLFVBQVU7O0FBRWhCLGdCQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUUzQixtQkFBTyxJQUFJLEVBQUU7QUFDWCxvQkFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTTtBQUVoQyxvQkFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7QUFFckQsb0JBQUksTUFBTSxLQUFLLElBQUksRUFBRTtBQUNuQix3QkFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUN0Qiw2QkFBUztpQkFDVjtBQUVELDZCQXBERyxNQUFNLENBb0RGLEtBQUssY0FBWSxNQUFNLENBQUMsSUFBSSxDQUFHLENBQUM7QUFDdkMsNkJBckRHLE1BQU0sQ0FxREYsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRXJCLHNCQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3ZCO1NB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V0FpQkUsYUFBYSxHQUFBLHlCQUFBO2dCQUNMLE9BQU8sR0FBVSxJQUFJLENBQXJCLE9BQU87Z0JBQUUsR0FBRyxHQUFLLElBQUksQ0FBWixHQUFHOztBQUNsQixnQkFBSSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2xELG1CQUFPLE9BQU8sQ0FBQztTQUNoQjs7QUFyQkgsdUJBQUEsV0F1QkUsZUFBZSxHQUFBLDJCQUFBO0FBQ2IsZ0JBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN6Qzs7ZUF6QkgsZUFBQSIsImZpbGUiOiJ1cGRhdGUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTY29wZSwgRHluYW1pY1Njb3BlLCBFbnZpcm9ubWVudCB9IGZyb20gJy4uL2Vudmlyb25tZW50JztcbmltcG9ydCB7IERlc3Ryb3lhYmxlQm91bmRzLCBjbGVhciwgbW92ZSBhcyBtb3ZlQm91bmRzIH0gZnJvbSAnLi4vYm91bmRzJztcbmltcG9ydCB7IEVsZW1lbnRTdGFjaywgVHJhY2tlciwgVXBkYXRhYmxlVHJhY2tlciB9IGZyb20gJy4uL2J1aWxkZXInO1xuaW1wb3J0IHsgTE9HR0VSLCBPcGFxdWUsIFN0YWNrLCBMaW5rZWRMaXN0LCBEaWN0LCBkaWN0IH0gZnJvbSAnZ2xpbW1lci11dGlsJztcbmltcG9ydCB7XG4gIENvbnN0UmVmZXJlbmNlLFxuICBQYXRoUmVmZXJlbmNlLFxuICBJdGVyYXRpb25BcnRpZmFjdHMsXG4gIEl0ZXJhdG9yU3luY2hyb25pemVyLFxuICBJdGVyYXRvclN5bmNocm9uaXplckRlbGVnYXRlLFxuXG4gIC8vIFRhZ3NcbiAgY29tYmluZSxcbiAgUmV2aXNpb24sXG4gIFVwZGF0YWJsZVRhZyxcbiAgY29tYmluZVNsaWNlLFxuICBDT05TVEFOVF9UQUcsXG4gIElOSVRJQUxcbn0gZnJvbSAnZ2xpbW1lci1yZWZlcmVuY2UnO1xuaW1wb3J0IHsgRXZhbHVhdGVkQXJncyB9IGZyb20gJy4uL2NvbXBpbGVkL2V4cHJlc3Npb25zL2FyZ3MnO1xuaW1wb3J0IHsgT3Bjb2RlSlNPTiwgT3BTZXEsIFVwZGF0aW5nT3Bjb2RlLCBVcGRhdGluZ09wU2VxIH0gZnJvbSAnLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgeyBMYWJlbE9wY29kZSB9IGZyb20gJy4uL2NvbXBpbGVkL29wY29kZXMvdm0nO1xuaW1wb3J0IHsgRE9NQ2hhbmdlcyB9IGZyb20gJy4uL2RvbS9oZWxwZXInO1xuaW1wb3J0ICogYXMgU2ltcGxlIGZyb20gJy4uL2RvbS9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENhcHR1cmVkRnJhbWUgfSBmcm9tICcuL2ZyYW1lJztcblxuaW1wb3J0IFZNIGZyb20gJy4vYXBwZW5kJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVXBkYXRpbmdWTSB7XG4gIHB1YmxpYyBlbnY6IEVudmlyb25tZW50O1xuICBwdWJsaWMgZG9tOiBET01DaGFuZ2VzO1xuICBwdWJsaWMgYWx3YXlzUmV2YWxpZGF0ZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBmcmFtZVN0YWNrOiBTdGFjazxVcGRhdGluZ1ZNRnJhbWU+ID0gbmV3IFN0YWNrPFVwZGF0aW5nVk1GcmFtZT4oKTtcblxuICBjb25zdHJ1Y3RvcihlbnY6IEVudmlyb25tZW50LCB7IGFsd2F5c1JldmFsaWRhdGUgPSBmYWxzZSB9KSB7XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5kb20gPSBlbnYuZ2V0RE9NKCk7XG4gICAgdGhpcy5hbHdheXNSZXZhbGlkYXRlID0gYWx3YXlzUmV2YWxpZGF0ZTtcbiAgfVxuXG4gIGV4ZWN1dGUob3Bjb2RlczogVXBkYXRpbmdPcFNlcSwgaGFuZGxlcjogRXhjZXB0aW9uSGFuZGxlcikge1xuICAgIGxldCB7IGZyYW1lU3RhY2sgfSA9IHRoaXM7XG5cbiAgICB0aGlzLnRyeShvcGNvZGVzLCBoYW5kbGVyKTtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBpZiAoZnJhbWVTdGFjay5pc0VtcHR5KCkpIGJyZWFrO1xuXG4gICAgICBsZXQgb3Bjb2RlID0gdGhpcy5mcmFtZVN0YWNrLmN1cnJlbnQubmV4dFN0YXRlbWVudCgpO1xuXG4gICAgICBpZiAob3Bjb2RlID09PSBudWxsKSB7XG4gICAgICAgIHRoaXMuZnJhbWVTdGFjay5wb3AoKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIExPR0dFUi5kZWJ1ZyhgW1ZNXSBPUCAke29wY29kZS50eXBlfWApO1xuICAgICAgTE9HR0VSLnRyYWNlKG9wY29kZSk7XG5cbiAgICAgIG9wY29kZS5ldmFsdWF0ZSh0aGlzKTtcbiAgICB9XG4gIH1cblxuICBnb3RvKG9wOiBVcGRhdGluZ09wY29kZSkge1xuICAgIHRoaXMuZnJhbWVTdGFjay5jdXJyZW50LmdvdG8ob3ApO1xuICB9XG5cbiAgdHJ5KG9wczogVXBkYXRpbmdPcFNlcSwgaGFuZGxlcjogRXhjZXB0aW9uSGFuZGxlcikge1xuICAgIHRoaXMuZnJhbWVTdGFjay5wdXNoKG5ldyBVcGRhdGluZ1ZNRnJhbWUodGhpcywgb3BzLCBoYW5kbGVyKSk7XG4gIH1cblxuICB0aHJvdygpIHtcbiAgICB0aGlzLmZyYW1lU3RhY2suY3VycmVudC5oYW5kbGVFeGNlcHRpb24oKTtcbiAgICB0aGlzLmZyYW1lU3RhY2sucG9wKCk7XG4gIH1cblxuICBldmFsdWF0ZU9wY29kZShvcGNvZGU6IFVwZGF0aW5nT3Bjb2RlKSB7XG4gICAgb3Bjb2RlLmV2YWx1YXRlKHRoaXMpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhjZXB0aW9uSGFuZGxlciB7XG4gIGhhbmRsZUV4Y2VwdGlvbigpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZNU3RhdGUge1xuICBlbnY6IEVudmlyb25tZW50O1xuICBzY29wZTogU2NvcGU7XG4gIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlO1xuICBmcmFtZTogQ2FwdHVyZWRGcmFtZTtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJsb2NrT3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUgaW1wbGVtZW50cyBEZXN0cm95YWJsZUJvdW5kcyB7XG4gIHB1YmxpYyB0eXBlID0gXCJibG9ja1wiO1xuICBwdWJsaWMgbmV4dCA9IG51bGw7XG4gIHB1YmxpYyBwcmV2ID0gbnVsbDtcblxuICBwcm90ZWN0ZWQgZW52OiBFbnZpcm9ubWVudDtcbiAgcHJvdGVjdGVkIHNjb3BlOiBTY29wZTtcbiAgcHJvdGVjdGVkIGR5bmFtaWNTY29wZTogRHluYW1pY1Njb3BlO1xuICBwcm90ZWN0ZWQgZnJhbWU6IENhcHR1cmVkRnJhbWU7XG4gIHByb3RlY3RlZCBjaGlsZHJlbjogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT47XG4gIHByb3RlY3RlZCBib3VuZHM6IERlc3Ryb3lhYmxlQm91bmRzO1xuICBwdWJsaWMgb3BzOiBPcFNlcTtcblxuICBjb25zdHJ1Y3RvcihvcHM6IE9wU2VxLCBzdGF0ZTogVk1TdGF0ZSwgYm91bmRzOiBEZXN0cm95YWJsZUJvdW5kcywgY2hpbGRyZW46IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+KSB7XG4gICAgc3VwZXIoKTtcbiAgICBsZXQgeyBlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIGZyYW1lIH0gPSBzdGF0ZTtcbiAgICB0aGlzLm9wcyA9IG9wcztcbiAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgdGhpcy5zY29wZSA9IHNjb3BlO1xuICAgIHRoaXMuZHluYW1pY1Njb3BlID0gZHluYW1pY1Njb3BlO1xuICAgIHRoaXMuZnJhbWUgPSBmcmFtZTtcbiAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgfVxuXG4gIGFic3RyYWN0IGRpZEluaXRpYWxpemVDaGlsZHJlbigpO1xuXG4gIHBhcmVudEVsZW1lbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgfVxuXG4gIGZpcnN0Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMuZmlyc3ROb2RlKCk7XG4gIH1cblxuICBsYXN0Tm9kZSgpIHtcbiAgICByZXR1cm4gdGhpcy5ib3VuZHMubGFzdE5vZGUoKTtcbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgdm0udHJ5KHRoaXMuY2hpbGRyZW4sIG51bGwpO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLmJvdW5kcy5kZXN0cm95KCk7XG4gIH1cblxuICBkaWREZXN0cm95KCkge1xuICAgIHRoaXMuZW52LmRpZERlc3Ryb3kodGhpcy5ib3VuZHMpO1xuICB9XG5cbiAgdG9KU09OKCkgOiBPcGNvZGVKU09OIHtcbiAgICBsZXQgYmVnaW4gPSB0aGlzLm9wcy5oZWFkKCkgYXMgTGFiZWxPcGNvZGU7XG4gICAgbGV0IGVuZCA9IHRoaXMub3BzLnRhaWwoKSBhcyBMYWJlbE9wY29kZTtcbiAgICBsZXQgZGV0YWlscyA9IGRpY3Q8c3RyaW5nPigpO1xuXG4gICAgZGV0YWlsc1tcImd1aWRcIl0gPSBgJHt0aGlzLl9ndWlkfWA7XG4gICAgZGV0YWlsc1tcImJlZ2luXCJdID0gYmVnaW4uaW5zcGVjdCgpO1xuICAgIGRldGFpbHNbXCJlbmRcIl0gPSBlbmQuaW5zcGVjdCgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBkZXRhaWxzLFxuICAgICAgY2hpbGRyZW46IHRoaXMuY2hpbGRyZW4udG9BcnJheSgpLm1hcChvcCA9PiBvcC50b0pTT04oKSlcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUcnlPcGNvZGUgZXh0ZW5kcyBCbG9ja09wY29kZSBpbXBsZW1lbnRzIEV4Y2VwdGlvbkhhbmRsZXIge1xuICBwdWJsaWMgdHlwZSA9IFwidHJ5XCI7XG5cbiAgcHJpdmF0ZSBfdGFnOiBVcGRhdGFibGVUYWc7XG5cbiAgcHJvdGVjdGVkIGJvdW5kczogVXBkYXRhYmxlVHJhY2tlcjtcblxuICBjb25zdHJ1Y3RvcihvcHM6IE9wU2VxLCBzdGF0ZTogVk1TdGF0ZSwgYm91bmRzOiBVcGRhdGFibGVUcmFja2VyLCBjaGlsZHJlbjogTGlua2VkTGlzdDxVcGRhdGluZ09wY29kZT4pIHtcbiAgICBzdXBlcihvcHMsIHN0YXRlLCBib3VuZHMsIGNoaWxkcmVuKTtcbiAgICB0aGlzLnRhZyA9IHRoaXMuX3RhZyA9IG5ldyBVcGRhdGFibGVUYWcoQ09OU1RBTlRfVEFHKTtcbiAgfVxuXG4gIGRpZEluaXRpYWxpemVDaGlsZHJlbigpIHtcbiAgICB0aGlzLl90YWcudXBkYXRlKGNvbWJpbmVTbGljZSh0aGlzLmNoaWxkcmVuKSk7XG4gIH1cblxuICBldmFsdWF0ZSh2bTogVXBkYXRpbmdWTSkge1xuICAgIHZtLnRyeSh0aGlzLmNoaWxkcmVuLCB0aGlzKTtcbiAgfVxuXG4gIGhhbmRsZUV4Y2VwdGlvbigpIHtcbiAgICBsZXQgeyBlbnYsIHNjb3BlLCBvcHMsIGR5bmFtaWNTY29wZSwgZnJhbWUgfSA9IHRoaXM7XG5cbiAgICBsZXQgZWxlbWVudFN0YWNrID0gRWxlbWVudFN0YWNrLnJlc3VtZShcbiAgICAgIHRoaXMuZW52LFxuICAgICAgdGhpcy5ib3VuZHMsXG4gICAgICB0aGlzLmJvdW5kcy5yZXNldChlbnYpXG4gICAgKTtcblxuICAgIGxldCB2bSA9IG5ldyBWTShlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjayk7XG4gICAgbGV0IHJlc3VsdCA9IHZtLnJlc3VtZShvcHMsIGZyYW1lKTtcblxuICAgIHRoaXMuY2hpbGRyZW4gPSByZXN1bHQub3Bjb2RlcygpO1xuICAgIHRoaXMuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCk7XG4gIH1cblxuICB0b0pTT04oKSA6IE9wY29kZUpTT04ge1xuICAgIGxldCBqc29uID0gc3VwZXIudG9KU09OKCk7XG4gICAgbGV0IGJlZ2luID0gdGhpcy5vcHMuaGVhZCgpIGFzIExhYmVsT3Bjb2RlO1xuICAgIGxldCBlbmQgPSB0aGlzLm9wcy50YWlsKCkgYXMgTGFiZWxPcGNvZGU7XG5cbiAgICBqc29uW1wiZGV0YWlsc1wiXVtcImJlZ2luXCJdID0gSlNPTi5zdHJpbmdpZnkoYmVnaW4uaW5zcGVjdCgpKTtcbiAgICBqc29uW1wiZGV0YWlsc1wiXVtcImVuZFwiXSA9IEpTT04uc3RyaW5naWZ5KGVuZC5pbnNwZWN0KCkpO1xuXG4gICAgcmV0dXJuIHN1cGVyLnRvSlNPTigpO1xuICB9XG59XG5cbmNsYXNzIExpc3RSZXZhbGlkYXRpb25EZWxlZ2F0ZSBpbXBsZW1lbnRzIEl0ZXJhdG9yU3luY2hyb25pemVyRGVsZWdhdGUge1xuICBwcml2YXRlIG1hcDogRGljdDxCbG9ja09wY29kZT47XG4gIHByaXZhdGUgdXBkYXRpbmc6IExpbmtlZExpc3Q8VXBkYXRpbmdPcGNvZGU+O1xuXG4gIHByaXZhdGUgZGlkSW5zZXJ0ID0gZmFsc2U7XG4gIHByaXZhdGUgZGlkRGVsZXRlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBvcGNvZGU6IExpc3RCbG9ja09wY29kZSwgcHJpdmF0ZSBtYXJrZXI6IFNpbXBsZS5Db21tZW50KSB7XG4gICAgdGhpcy5tYXAgPSBvcGNvZGUubWFwO1xuICAgIHRoaXMudXBkYXRpbmcgPSBvcGNvZGVbJ2NoaWxkcmVuJ107XG4gIH1cblxuICBpbnNlcnQoa2V5OiBzdHJpbmcsIGl0ZW06IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgbWVtbzogUGF0aFJlZmVyZW5jZTxPcGFxdWU+LCBiZWZvcmU6IHN0cmluZykge1xuICAgIGxldCB7IG1hcCwgb3Bjb2RlLCB1cGRhdGluZyB9ID0gdGhpcztcbiAgICBsZXQgbmV4dFNpYmxpbmc6IFNpbXBsZS5Ob2RlID0gbnVsbDtcbiAgICBsZXQgcmVmZXJlbmNlID0gbnVsbDtcblxuICAgIGlmIChiZWZvcmUpIHtcbiAgICAgIHJlZmVyZW5jZSA9IG1hcFtiZWZvcmVdO1xuICAgICAgbmV4dFNpYmxpbmcgPSByZWZlcmVuY2UuYm91bmRzLmZpcnN0Tm9kZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0U2libGluZyA9IHRoaXMubWFya2VyO1xuICAgIH1cblxuICAgIGxldCB2bSA9IG9wY29kZS52bUZvckluc2VydGlvbihuZXh0U2libGluZyk7XG4gICAgbGV0IHRyeU9wY29kZTogVHJ5T3Bjb2RlO1xuXG4gICAgdm0uZXhlY3V0ZShvcGNvZGUub3BzLCB2bSA9PiB7XG4gICAgICB2bS5mcmFtZS5zZXRBcmdzKEV2YWx1YXRlZEFyZ3MucG9zaXRpb25hbChbaXRlbSwgbWVtb10pKTtcbiAgICAgIHZtLmZyYW1lLnNldE9wZXJhbmQoaXRlbSk7XG4gICAgICB2bS5mcmFtZS5zZXRDb25kaXRpb24obmV3IENvbnN0UmVmZXJlbmNlKHRydWUpKTtcbiAgICAgIHZtLmZyYW1lLnNldEtleShrZXkpO1xuXG4gICAgICBsZXQgc3RhdGUgPSB2bS5jYXB0dXJlKCk7XG4gICAgICBsZXQgdHJhY2tlciA9IHZtLnN0YWNrKCkucHVzaFVwZGF0YWJsZUJsb2NrKCk7XG5cbiAgICAgIHRyeU9wY29kZSA9IG5ldyBUcnlPcGNvZGUob3Bjb2RlLm9wcywgc3RhdGUsIHRyYWNrZXIsIHZtLnVwZGF0aW5nT3Bjb2RlU3RhY2suY3VycmVudCk7XG4gICAgfSk7XG5cbiAgICB0cnlPcGNvZGUuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKCk7XG5cbiAgICB1cGRhdGluZy5pbnNlcnRCZWZvcmUodHJ5T3Bjb2RlLCByZWZlcmVuY2UpO1xuXG4gICAgbWFwW2tleV0gPSB0cnlPcGNvZGU7XG5cbiAgICB0aGlzLmRpZEluc2VydCA9IHRydWU7XG4gIH1cblxuICByZXRhaW4oa2V5OiBzdHJpbmcsIGl0ZW06IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgbWVtbzogUGF0aFJlZmVyZW5jZTxPcGFxdWU+KSB7XG4gIH1cblxuICBtb3ZlKGtleTogc3RyaW5nLCBpdGVtOiBQYXRoUmVmZXJlbmNlPE9wYXF1ZT4sIG1lbW86IFBhdGhSZWZlcmVuY2U8T3BhcXVlPiwgYmVmb3JlOiBzdHJpbmcpIHtcbiAgICBsZXQgeyBtYXAsIHVwZGF0aW5nIH0gPSB0aGlzO1xuXG4gICAgbGV0IGVudHJ5ID0gbWFwW2tleV07XG4gICAgbGV0IHJlZmVyZW5jZSA9IG1hcFtiZWZvcmVdIHx8IG51bGw7XG5cbiAgICBpZiAoYmVmb3JlKSB7XG4gICAgICBtb3ZlQm91bmRzKGVudHJ5LCByZWZlcmVuY2UuZmlyc3ROb2RlKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtb3ZlQm91bmRzKGVudHJ5LCB0aGlzLm1hcmtlcik7XG4gICAgfVxuXG4gICAgdXBkYXRpbmcucmVtb3ZlKGVudHJ5KTtcbiAgICB1cGRhdGluZy5pbnNlcnRCZWZvcmUoZW50cnksIHJlZmVyZW5jZSk7XG4gIH1cblxuICBkZWxldGUoa2V5OiBzdHJpbmcpIHtcbiAgICBsZXQgeyBtYXAgfSA9IHRoaXM7XG4gICAgbGV0IG9wY29kZSA9IG1hcFtrZXldO1xuICAgIG9wY29kZS5kaWREZXN0cm95KCk7XG4gICAgY2xlYXIob3Bjb2RlKTtcbiAgICB0aGlzLnVwZGF0aW5nLnJlbW92ZShvcGNvZGUpO1xuICAgIGRlbGV0ZSBtYXBba2V5XTtcblxuICAgIHRoaXMuZGlkRGVsZXRlID0gdHJ1ZTtcbiAgfVxuXG4gIGRvbmUoKSB7XG4gICAgdGhpcy5vcGNvZGUuZGlkSW5pdGlhbGl6ZUNoaWxkcmVuKHRoaXMuZGlkSW5zZXJ0IHx8IHRoaXMuZGlkRGVsZXRlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdEJsb2NrT3Bjb2RlIGV4dGVuZHMgQmxvY2tPcGNvZGUge1xuICBwdWJsaWMgdHlwZSA9IFwibGlzdC1ibG9ja1wiO1xuICBwdWJsaWMgbWFwID0gZGljdDxCbG9ja09wY29kZT4oKTtcbiAgcHVibGljIGFydGlmYWN0czogSXRlcmF0aW9uQXJ0aWZhY3RzO1xuXG4gIHByaXZhdGUgbGFzdEl0ZXJhdGVkOiBSZXZpc2lvbiA9IElOSVRJQUw7XG4gIHByaXZhdGUgX3RhZzogVXBkYXRhYmxlVGFnO1xuXG4gIGNvbnN0cnVjdG9yKG9wczogT3BTZXEsIHN0YXRlOiBWTVN0YXRlLCBib3VuZHM6IFRyYWNrZXIsIGNoaWxkcmVuOiBMaW5rZWRMaXN0PFVwZGF0aW5nT3Bjb2RlPiwgYXJ0aWZhY3RzOiBJdGVyYXRpb25BcnRpZmFjdHMpIHtcbiAgICBzdXBlcihvcHMsIHN0YXRlLCBib3VuZHMsIGNoaWxkcmVuKTtcbiAgICB0aGlzLmFydGlmYWN0cyA9IGFydGlmYWN0cztcbiAgICBsZXQgX3RhZyA9IHRoaXMuX3RhZyA9IG5ldyBVcGRhdGFibGVUYWcoQ09OU1RBTlRfVEFHKTtcbiAgICB0aGlzLnRhZyA9IGNvbWJpbmUoW2FydGlmYWN0cy50YWcsIF90YWddKTtcbiAgfVxuXG4gIGRpZEluaXRpYWxpemVDaGlsZHJlbihsaXN0RGlkQ2hhbmdlID0gdHJ1ZSkge1xuICAgIHRoaXMubGFzdEl0ZXJhdGVkID0gdGhpcy5hcnRpZmFjdHMudGFnLnZhbHVlKCk7XG5cbiAgICBpZiAobGlzdERpZENoYW5nZSkge1xuICAgICAgdGhpcy5fdGFnLnVwZGF0ZShjb21iaW5lU2xpY2UodGhpcy5jaGlsZHJlbikpO1xuICAgIH1cbiAgfVxuXG4gIGV2YWx1YXRlKHZtOiBVcGRhdGluZ1ZNKSB7XG4gICAgbGV0IHsgYXJ0aWZhY3RzLCBsYXN0SXRlcmF0ZWQgfSA9IHRoaXM7XG5cbiAgICBpZiAoIWFydGlmYWN0cy50YWcudmFsaWRhdGUobGFzdEl0ZXJhdGVkKSkge1xuICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgbGV0IHsgZG9tIH0gPSB2bTtcblxuICAgICAgbGV0IG1hcmtlciA9IGRvbS5jcmVhdGVDb21tZW50KCcnKTtcbiAgICAgIGRvbS5pbnNlcnRBZnRlcihib3VuZHMucGFyZW50RWxlbWVudCgpLCBtYXJrZXIsIGJvdW5kcy5sYXN0Tm9kZSgpKTtcblxuICAgICAgbGV0IHRhcmdldCA9IG5ldyBMaXN0UmV2YWxpZGF0aW9uRGVsZWdhdGUodGhpcywgbWFya2VyKTtcbiAgICAgIGxldCBzeW5jaHJvbml6ZXIgPSBuZXcgSXRlcmF0b3JTeW5jaHJvbml6ZXIoeyB0YXJnZXQsIGFydGlmYWN0cyB9KTtcblxuICAgICAgc3luY2hyb25pemVyLnN5bmMoKTtcblxuICAgICAgdGhpcy5wYXJlbnRFbGVtZW50KCkucmVtb3ZlQ2hpbGQobWFya2VyKTtcbiAgICB9XG5cbiAgICAvLyBSdW4gbm93LXVwZGF0ZWQgdXBkYXRpbmcgb3Bjb2Rlc1xuICAgIHN1cGVyLmV2YWx1YXRlKHZtKTtcbiAgfVxuXG4gIHZtRm9ySW5zZXJ0aW9uKG5leHRTaWJsaW5nOiBTaW1wbGUuTm9kZSkge1xuICAgIGxldCB7IGVudiwgc2NvcGUsIGR5bmFtaWNTY29wZSB9ID0gdGhpcztcblxuICAgIGxldCBlbGVtZW50U3RhY2sgPSBFbGVtZW50U3RhY2suZm9ySW5pdGlhbFJlbmRlcihcbiAgICAgIHRoaXMuZW52LFxuICAgICAgdGhpcy5ib3VuZHMucGFyZW50RWxlbWVudCgpLFxuICAgICAgbmV4dFNpYmxpbmdcbiAgICApO1xuXG4gICAgcmV0dXJuIG5ldyBWTShlbnYsIHNjb3BlLCBkeW5hbWljU2NvcGUsIGVsZW1lbnRTdGFjayk7XG4gIH1cblxuICB0b0pTT04oKSA6IE9wY29kZUpTT04ge1xuICAgIGxldCBqc29uID0gc3VwZXIudG9KU09OKCk7XG4gICAgbGV0IG1hcCA9IHRoaXMubWFwO1xuXG4gICAgbGV0IGlubmVyID0gT2JqZWN0LmtleXMobWFwKS5tYXAoa2V5ID0+IHtcbiAgICAgIHJldHVybiBgJHtKU09OLnN0cmluZ2lmeShrZXkpfTogJHttYXBba2V5XS5fZ3VpZH1gO1xuICAgIH0pLmpvaW4oXCIsIFwiKTtcblxuICAgIGpzb25bXCJkZXRhaWxzXCJdW1wibWFwXCJdID0gYHske2lubmVyfX1gO1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cbn1cblxuY2xhc3MgVXBkYXRpbmdWTUZyYW1lIHtcbiAgcHJpdmF0ZSB2bTogVXBkYXRpbmdWTTtcbiAgcHJpdmF0ZSBvcHM6IFVwZGF0aW5nT3BTZXE7XG4gIHByaXZhdGUgY3VycmVudDogVXBkYXRpbmdPcGNvZGU7XG4gIHByaXZhdGUgZXhjZXB0aW9uSGFuZGxlcjogRXhjZXB0aW9uSGFuZGxlcjtcblxuICBjb25zdHJ1Y3Rvcih2bTogVXBkYXRpbmdWTSwgb3BzOiBVcGRhdGluZ09wU2VxLCBoYW5kbGVyOiBFeGNlcHRpb25IYW5kbGVyKSB7XG4gICAgdGhpcy52bSA9IHZtO1xuICAgIHRoaXMub3BzID0gb3BzO1xuICAgIHRoaXMuY3VycmVudCA9IG9wcy5oZWFkKCk7XG4gICAgdGhpcy5leGNlcHRpb25IYW5kbGVyID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdvdG8ob3A6IFVwZGF0aW5nT3Bjb2RlKSB7XG4gICAgdGhpcy5jdXJyZW50ID0gb3A7XG4gIH1cblxuICBuZXh0U3RhdGVtZW50KCk6IFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBsZXQgeyBjdXJyZW50LCBvcHMgfSA9IHRoaXM7XG4gICAgaWYgKGN1cnJlbnQpIHRoaXMuY3VycmVudCA9IG9wcy5uZXh0Tm9kZShjdXJyZW50KTtcbiAgICByZXR1cm4gY3VycmVudDtcbiAgfVxuXG4gIGhhbmRsZUV4Y2VwdGlvbigpIHtcbiAgICB0aGlzLmV4Y2VwdGlvbkhhbmRsZXIuaGFuZGxlRXhjZXB0aW9uKCk7XG4gIH1cbn1cbiJdfQ==
22957
+ enifed('glimmer-syntax/index', ['exports', 'glimmer-syntax/lib/parser', 'glimmer-syntax/lib/builders', 'glimmer-syntax/lib/traversal/traverse', 'glimmer-syntax/lib/traversal/walker', 'glimmer-syntax/lib/generation/print'], function (exports, _glimmerSyntaxLibParser, _glimmerSyntaxLibBuilders, _glimmerSyntaxLibTraversalTraverse, _glimmerSyntaxLibTraversalWalker, _glimmerSyntaxLibGenerationPrint) {
22850
22958
  // used by ember-compiler
22851
22959
  'use strict';
22852
22960
 
22853
- exports.isHelper = _glimmerSyntaxLibUtils.isHelper;
22854
22961
  exports.preprocess = _glimmerSyntaxLibParser.preprocess;
22855
22962
 
22856
22963
  // needed for tests only
@@ -22859,7 +22966,7 @@ enifed('glimmer-syntax/index', ['exports', 'glimmer-syntax/lib/utils', 'glimmer-
22859
22966
  exports.Walker = _glimmerSyntaxLibTraversalWalker.default;
22860
22967
  exports.print = _glimmerSyntaxLibGenerationPrint.default;
22861
22968
  });
22862
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7VUFDUyxRQUFRLDBCQUFSLFFBQVE7VUFDUixVQUFVLDJCQUFWLFVBQVU7OztVQUdDLFFBQVEsNkJBQW5CLE9BQU87VUFDSSxRQUFRLHNDQUFuQixPQUFPO1VBQ0ksTUFBTSxvQ0FBakIsT0FBTztVQUNJLEtBQUssb0NBQWhCLE9BQU8iLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB1c2VkIGJ5IGVtYmVyLWNvbXBpbGVyXG5leHBvcnQgeyBpc0hlbHBlciB9IGZyb20gJy4vbGliL3V0aWxzJztcbmV4cG9ydCB7IHByZXByb2Nlc3MgfSBmcm9tICcuL2xpYi9wYXJzZXInO1xuXG4vLyBuZWVkZWQgZm9yIHRlc3RzIG9ubHlcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYnVpbGRlcnMgfSBmcm9tICcuL2xpYi9idWlsZGVycyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHRyYXZlcnNlIH0gZnJvbSAnLi9saWIvdHJhdmVyc2FsL3RyYXZlcnNlJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgV2Fsa2VyIH0gZnJvbSAnLi9saWIvdHJhdmVyc2FsL3dhbGtlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHByaW50IH0gZnJvbSAnLi9saWIvZ2VuZXJhdGlvbi9wcmludCc7XG4iXX0=
22969
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7VUFDUyxVQUFVLDJCQUFWLFVBQVU7OztVQUdDLFFBQVEsNkJBQW5CLE9BQU87VUFDSSxRQUFRLHNDQUFuQixPQUFPO1VBQ0ksTUFBTSxvQ0FBakIsT0FBTztVQUNJLEtBQUssb0NBQWhCLE9BQU8iLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB1c2VkIGJ5IGVtYmVyLWNvbXBpbGVyXG5leHBvcnQgeyBwcmVwcm9jZXNzIH0gZnJvbSAnLi9saWIvcGFyc2VyJztcblxuLy8gbmVlZGVkIGZvciB0ZXN0cyBvbmx5XG5leHBvcnQgeyBkZWZhdWx0IGFzIGJ1aWxkZXJzIH0gZnJvbSAnLi9saWIvYnVpbGRlcnMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB0cmF2ZXJzZSB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC90cmF2ZXJzZSc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFdhbGtlciB9IGZyb20gJy4vbGliL3RyYXZlcnNhbC93YWxrZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwcmludCB9IGZyb20gJy4vbGliL2dlbmVyYXRpb24vcHJpbnQnO1xuIl19
22863
22970
  enifed("glimmer-syntax/lib/builders", ["exports"], function (exports) {
22864
22971
  // Statements
22865
22972
  "use strict";
@@ -24036,8 +24143,6 @@ enifed('glimmer-syntax/lib/utils', ['exports'], function (exports) {
24036
24143
  exports.parseElementBlockParams = parseElementBlockParams;
24037
24144
  exports.childrenFor = childrenFor;
24038
24145
  exports.appendChild = appendChild;
24039
- exports.isHelper = isHelper;
24040
- exports.unwrapMustache = unwrapMustache;
24041
24146
  var ID_INVERSE_PATTERN = /[!"#%-,\.\/;->@\[-\^`\{-~]/;
24042
24147
  // Checks the element's attributes to see if it uses block params.
24043
24148
  // If it does, registers the block params with the program and
@@ -24091,20 +24196,8 @@ enifed('glimmer-syntax/lib/utils', ['exports'], function (exports) {
24091
24196
  function appendChild(parent, node) {
24092
24197
  childrenFor(parent).push(node);
24093
24198
  }
24094
-
24095
- function isHelper(mustache) {
24096
- return mustache.params && mustache.params.length > 0 || mustache.hash && mustache.hash.pairs.length > 0;
24097
- }
24098
-
24099
- function unwrapMustache(mustache) {
24100
- if (isHelper(mustache)) {
24101
- return mustache;
24102
- } else {
24103
- return mustache.path;
24104
- }
24105
- }
24106
24199
  });
24107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2xpYi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBR0EsUUFBSSxrQkFBa0IsR0FBRyw0QkFBNEIsQ0FBQzs7Ozs7QUFNdEQsYUFBQSx1QkFBQSxDQUF3QyxPQUFPLEVBQUE7QUFDN0MsWUFBSSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkMsWUFBSSxNQUFNLEVBQUUsT0FBTyxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7S0FDMUM7O0FBRUQsYUFBQSxnQkFBQSxDQUEwQixPQUFPLEVBQUE7QUFDL0IsWUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7QUFDbEMsWUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO0FBRW5CLGFBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDMUIscUJBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM1QztBQUVELFlBQUksT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFdEMsWUFBSSxPQUFPLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sSUFBSSxTQUFTLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7O0FBRTdFLGdCQUFJLFlBQVksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0RCxnQkFBSSxZQUFZLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUNsRyxzQkFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUM7YUFDOUU7QUFFRCxnQkFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ2hCLGlCQUFLLElBQUksQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNwQyxvQkFBSSxLQUFLLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDNUMsb0JBQUksS0FBSyxLQUFLLEVBQUUsRUFBRTtBQUNoQix3QkFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDbEMsOEJBQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLEdBQUcsS0FBSyxHQUFHLFVBQVUsR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUM7cUJBQzNHO0FBQ0QsMEJBQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3BCO2FBQ0Y7QUFFRCxnQkFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUN2QixzQkFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUM7YUFDL0U7QUFFRCxtQkFBTyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDMUQsbUJBQU8sTUFBTSxDQUFDO1NBQ2Y7S0FDRjs7QUFFRCxhQUFBLFdBQUEsQ0FBNEIsSUFBSSxFQUFBO0FBQzlCLFlBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7QUFDM0IsbUJBQU8sSUFBSSxDQUFDLElBQUksQ0FBQztTQUNsQjtBQUNELFlBQUksSUFBSSxDQUFDLElBQUksS0FBSyxhQUFhLEVBQUU7QUFDL0IsbUJBQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUN0QjtLQUNGOztBQUVELGFBQUEsV0FBQSxDQUE0QixNQUFNLEVBQUUsSUFBSSxFQUFBO0FBQ3RDLG1CQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2hDOztBQUVELGFBQUEsUUFBQSxDQUF5QixRQUFRLEVBQUE7QUFDL0IsZUFBTyxBQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUNsRCxRQUFRLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEFBQUMsQ0FBQztLQUNyRDs7QUFFRCxhQUFBLGNBQUEsQ0FBK0IsUUFBUSxFQUFBO0FBQ3JDLFlBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO0FBQ3RCLG1CQUFPLFFBQVEsQ0FBQztTQUNqQixNQUFNO0FBQ0wsbUJBQU8sUUFBUSxDQUFDLElBQUksQ0FBQztTQUN0QjtLQUNGIiwiZmlsZSI6InV0aWxzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gUmVnZXggdG8gdmFsaWRhdGUgdGhlIGlkZW50aWZpZXIgZm9yIGJsb2NrIHBhcmFtZXRlcnMuXG4vLyBCYXNlZCBvbiB0aGUgSUQgdmFsaWRhdGlvbiByZWdleCBpbiBIYW5kbGViYXJzLlxuXG5sZXQgSURfSU5WRVJTRV9QQVRURVJOID0gL1shXCIjJS0sXFwuXFwvOy0+QFxcWy1cXF5gXFx7LX5dLztcblxuLy8gQ2hlY2tzIHRoZSBlbGVtZW50J3MgYXR0cmlidXRlcyB0byBzZWUgaWYgaXQgdXNlcyBibG9jayBwYXJhbXMuXG4vLyBJZiBpdCBkb2VzLCByZWdpc3RlcnMgdGhlIGJsb2NrIHBhcmFtcyB3aXRoIHRoZSBwcm9ncmFtIGFuZFxuLy8gcmVtb3ZlcyB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGVzIGZyb20gdGhlIGVsZW1lbnQuXG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUVsZW1lbnRCbG9ja1BhcmFtcyhlbGVtZW50KSB7XG4gIGxldCBwYXJhbXMgPSBwYXJzZUJsb2NrUGFyYW1zKGVsZW1lbnQpO1xuICBpZiAocGFyYW1zKSBlbGVtZW50LmJsb2NrUGFyYW1zID0gcGFyYW1zO1xufVxuXG5mdW5jdGlvbiBwYXJzZUJsb2NrUGFyYW1zKGVsZW1lbnQpIHtcbiAgbGV0IGwgPSBlbGVtZW50LmF0dHJpYnV0ZXMubGVuZ3RoO1xuICBsZXQgYXR0ck5hbWVzID0gW107XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICBhdHRyTmFtZXMucHVzaChlbGVtZW50LmF0dHJpYnV0ZXNbaV0ubmFtZSk7XG4gIH1cblxuICBsZXQgYXNJbmRleCA9IGF0dHJOYW1lcy5pbmRleE9mKCdhcycpO1xuXG4gIGlmIChhc0luZGV4ICE9PSAtMSAmJiBsID4gYXNJbmRleCAmJiBhdHRyTmFtZXNbYXNJbmRleCArIDFdLmNoYXJBdCgwKSA9PT0gJ3wnKSB7XG4gICAgLy8gU29tZSBiYXNpYyB2YWxpZGF0aW9uLCBzaW5jZSB3ZSdyZSBkb2luZyB0aGUgcGFyc2luZyBvdXJzZWx2ZXNcbiAgICBsZXQgcGFyYW1zU3RyaW5nID0gYXR0ck5hbWVzLnNsaWNlKGFzSW5kZXgpLmpvaW4oJyAnKTtcbiAgICBpZiAocGFyYW1zU3RyaW5nLmNoYXJBdChwYXJhbXNTdHJpbmcubGVuZ3RoIC0gMSkgIT09ICd8JyB8fCBwYXJhbXNTdHJpbmcubWF0Y2goL1xcfC9nKS5sZW5ndGggIT09IDIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBibG9jayBwYXJhbWV0ZXJzIHN5bnRheDogXFwnJyArIHBhcmFtc1N0cmluZyArICdcXCcnKTtcbiAgICB9XG5cbiAgICBsZXQgcGFyYW1zID0gW107XG4gICAgZm9yIChsZXQgaSA9IGFzSW5kZXggKyAxOyBpIDwgbDsgaSsrKSB7XG4gICAgICBsZXQgcGFyYW0gPSBhdHRyTmFtZXNbaV0ucmVwbGFjZSgvXFx8L2csICcnKTtcbiAgICAgIGlmIChwYXJhbSAhPT0gJycpIHtcbiAgICAgICAgaWYgKElEX0lOVkVSU0VfUEFUVEVSTi50ZXN0KHBhcmFtKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBpZGVudGlmaWVyIGZvciBibG9jayBwYXJhbWV0ZXJzOiBcXCcnICsgcGFyYW0gKyAnXFwnIGluIFxcJycgKyBwYXJhbXNTdHJpbmcgKyAnXFwnJyk7XG4gICAgICAgIH1cbiAgICAgICAgcGFyYW1zLnB1c2gocGFyYW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwYXJhbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCB1c2UgemVybyBibG9jayBwYXJhbWV0ZXJzOiBcXCcnICsgcGFyYW1zU3RyaW5nICsgJ1xcJycpO1xuICAgIH1cblxuICAgIGVsZW1lbnQuYXR0cmlidXRlcyA9IGVsZW1lbnQuYXR0cmlidXRlcy5zbGljZSgwLCBhc0luZGV4KTtcbiAgICByZXR1cm4gcGFyYW1zO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGlsZHJlbkZvcihub2RlKSB7XG4gIGlmIChub2RlLnR5cGUgPT09ICdQcm9ncmFtJykge1xuICAgIHJldHVybiBub2RlLmJvZHk7XG4gIH1cbiAgaWYgKG5vZGUudHlwZSA9PT0gJ0VsZW1lbnROb2RlJykge1xuICAgIHJldHVybiBub2RlLmNoaWxkcmVuO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRDaGlsZChwYXJlbnQsIG5vZGUpIHtcbiAgY2hpbGRyZW5Gb3IocGFyZW50KS5wdXNoKG5vZGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNIZWxwZXIobXVzdGFjaGUpIHtcbiAgcmV0dXJuIChtdXN0YWNoZS5wYXJhbXMgJiYgbXVzdGFjaGUucGFyYW1zLmxlbmd0aCA+IDApIHx8XG4gICAgKG11c3RhY2hlLmhhc2ggJiYgbXVzdGFjaGUuaGFzaC5wYWlycy5sZW5ndGggPiAwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVud3JhcE11c3RhY2hlKG11c3RhY2hlKSB7XG4gIGlmIChpc0hlbHBlcihtdXN0YWNoZSkpIHtcbiAgICByZXR1cm4gbXVzdGFjaGU7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG11c3RhY2hlLnBhdGg7XG4gIH1cbn1cbiJdfQ==
24200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdsaW1tZXItc3ludGF4L2xpYi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUdBLFFBQUksa0JBQWtCLEdBQUcsNEJBQTRCLENBQUM7Ozs7O0FBTXRELGFBQUEsdUJBQUEsQ0FBd0MsT0FBTyxFQUFBO0FBQzdDLFlBQUksTUFBTSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZDLFlBQUksTUFBTSxFQUFFLE9BQU8sQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO0tBQzFDOztBQUVELGFBQUEsZ0JBQUEsQ0FBMEIsT0FBTyxFQUFBO0FBQy9CLFlBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO0FBQ2xDLFlBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztBQUVuQixhQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQzFCLHFCQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDNUM7QUFFRCxZQUFJLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRXRDLFlBQUksT0FBTyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLElBQUksU0FBUyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFOztBQUU3RSxnQkFBSSxZQUFZLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEQsZ0JBQUksWUFBWSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFDbEcsc0JBQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLEdBQUcsWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDO2FBQzlFO0FBRUQsZ0JBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNoQixpQkFBSyxJQUFJLENBQUMsR0FBRyxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDcEMsb0JBQUksS0FBSyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzVDLG9CQUFJLEtBQUssS0FBSyxFQUFFLEVBQUU7QUFDaEIsd0JBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQ2xDLDhCQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxHQUFHLEtBQUssR0FBRyxVQUFVLEdBQUcsWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDO3FCQUMzRztBQUNELDBCQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNwQjthQUNGO0FBRUQsZ0JBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFDdkIsc0JBQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLEdBQUcsWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDO2FBQy9FO0FBRUQsbUJBQU8sQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzFELG1CQUFPLE1BQU0sQ0FBQztTQUNmO0tBQ0Y7O0FBRUQsYUFBQSxXQUFBLENBQTRCLElBQUksRUFBQTtBQUM5QixZQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO0FBQzNCLG1CQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDbEI7QUFDRCxZQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssYUFBYSxFQUFFO0FBQy9CLG1CQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDdEI7S0FDRjs7QUFFRCxhQUFBLFdBQUEsQ0FBNEIsTUFBTSxFQUFFLElBQUksRUFBQTtBQUN0QyxtQkFBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUNoQyIsImZpbGUiOiJ1dGlscy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFJlZ2V4IHRvIHZhbGlkYXRlIHRoZSBpZGVudGlmaWVyIGZvciBibG9jayBwYXJhbWV0ZXJzLlxuLy8gQmFzZWQgb24gdGhlIElEIHZhbGlkYXRpb24gcmVnZXggaW4gSGFuZGxlYmFycy5cblxubGV0IElEX0lOVkVSU0VfUEFUVEVSTiA9IC9bIVwiIyUtLFxcLlxcLzstPkBcXFstXFxeYFxcey1+XS87XG5cbi8vIENoZWNrcyB0aGUgZWxlbWVudCdzIGF0dHJpYnV0ZXMgdG8gc2VlIGlmIGl0IHVzZXMgYmxvY2sgcGFyYW1zLlxuLy8gSWYgaXQgZG9lcywgcmVnaXN0ZXJzIHRoZSBibG9jayBwYXJhbXMgd2l0aCB0aGUgcHJvZ3JhbSBhbmRcbi8vIHJlbW92ZXMgdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlcyBmcm9tIHRoZSBlbGVtZW50LlxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VFbGVtZW50QmxvY2tQYXJhbXMoZWxlbWVudCkge1xuICBsZXQgcGFyYW1zID0gcGFyc2VCbG9ja1BhcmFtcyhlbGVtZW50KTtcbiAgaWYgKHBhcmFtcykgZWxlbWVudC5ibG9ja1BhcmFtcyA9IHBhcmFtcztcbn1cblxuZnVuY3Rpb24gcGFyc2VCbG9ja1BhcmFtcyhlbGVtZW50KSB7XG4gIGxldCBsID0gZWxlbWVudC5hdHRyaWJ1dGVzLmxlbmd0aDtcbiAgbGV0IGF0dHJOYW1lcyA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgYXR0ck5hbWVzLnB1c2goZWxlbWVudC5hdHRyaWJ1dGVzW2ldLm5hbWUpO1xuICB9XG5cbiAgbGV0IGFzSW5kZXggPSBhdHRyTmFtZXMuaW5kZXhPZignYXMnKTtcblxuICBpZiAoYXNJbmRleCAhPT0gLTEgJiYgbCA+IGFzSW5kZXggJiYgYXR0ck5hbWVzW2FzSW5kZXggKyAxXS5jaGFyQXQoMCkgPT09ICd8Jykge1xuICAgIC8vIFNvbWUgYmFzaWMgdmFsaWRhdGlvbiwgc2luY2Ugd2UncmUgZG9pbmcgdGhlIHBhcnNpbmcgb3Vyc2VsdmVzXG4gICAgbGV0IHBhcmFtc1N0cmluZyA9IGF0dHJOYW1lcy5zbGljZShhc0luZGV4KS5qb2luKCcgJyk7XG4gICAgaWYgKHBhcmFtc1N0cmluZy5jaGFyQXQocGFyYW1zU3RyaW5nLmxlbmd0aCAtIDEpICE9PSAnfCcgfHwgcGFyYW1zU3RyaW5nLm1hdGNoKC9cXHwvZykubGVuZ3RoICE9PSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgYmxvY2sgcGFyYW1ldGVycyBzeW50YXg6IFxcJycgKyBwYXJhbXNTdHJpbmcgKyAnXFwnJyk7XG4gICAgfVxuXG4gICAgbGV0IHBhcmFtcyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSBhc0luZGV4ICsgMTsgaSA8IGw7IGkrKykge1xuICAgICAgbGV0IHBhcmFtID0gYXR0ck5hbWVzW2ldLnJlcGxhY2UoL1xcfC9nLCAnJyk7XG4gICAgICBpZiAocGFyYW0gIT09ICcnKSB7XG4gICAgICAgIGlmIChJRF9JTlZFUlNFX1BBVFRFUk4udGVzdChwYXJhbSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgaWRlbnRpZmllciBmb3IgYmxvY2sgcGFyYW1ldGVyczogXFwnJyArIHBhcmFtICsgJ1xcJyBpbiBcXCcnICsgcGFyYW1zU3RyaW5nICsgJ1xcJycpO1xuICAgICAgICB9XG4gICAgICAgIHBhcmFtcy5wdXNoKHBhcmFtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGFyYW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgdXNlIHplcm8gYmxvY2sgcGFyYW1ldGVyczogXFwnJyArIHBhcmFtc1N0cmluZyArICdcXCcnKTtcbiAgICB9XG5cbiAgICBlbGVtZW50LmF0dHJpYnV0ZXMgPSBlbGVtZW50LmF0dHJpYnV0ZXMuc2xpY2UoMCwgYXNJbmRleCk7XG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hpbGRyZW5Gb3Iobm9kZSkge1xuICBpZiAobm9kZS50eXBlID09PSAnUHJvZ3JhbScpIHtcbiAgICByZXR1cm4gbm9kZS5ib2R5O1xuICB9XG4gIGlmIChub2RlLnR5cGUgPT09ICdFbGVtZW50Tm9kZScpIHtcbiAgICByZXR1cm4gbm9kZS5jaGlsZHJlbjtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kQ2hpbGQocGFyZW50LCBub2RlKSB7XG4gIGNoaWxkcmVuRm9yKHBhcmVudCkucHVzaChub2RlKTtcbn1cbiJdfQ==
24108
24201
  enifed('glimmer-util/index', ['exports', 'glimmer-util/lib/namespaces', 'glimmer-util/lib/platform-utils', 'glimmer-util/lib/assert', 'glimmer-util/lib/logger', 'glimmer-util/lib/object-utils', 'glimmer-util/lib/guid', 'glimmer-util/lib/collections', 'glimmer-util/lib/list-utils'], function (exports, _glimmerUtilLibNamespaces, _glimmerUtilLibPlatformUtils, _glimmerUtilLibAssert, _glimmerUtilLibLogger, _glimmerUtilLibObjectUtils, _glimmerUtilLibGuid, _glimmerUtilLibCollections, _glimmerUtilLibListUtils) {
24109
24202
  'use strict';
24110
24203