{"version":3,"sources":["webpack:///./node_modules/aurelia-task-queue/dist/native-modules/aurelia-task-queue.js","webpack:///./node_modules/aurelia-templating-binding/dist/native-modules/aurelia-templating-binding.js","webpack:///./node_modules/aurelia-templating-resources/dist/native-modules/aurelia-templating-resources.js","webpack:///./node_modules/aurelia-templating-router/dist/native-modules/aurelia-templating-router.js"],"names":["_typeof","Symbol","iterator","obj","constructor","prototype","makeRequestFlushFromTimer","flush","timeoutHandle","setTimeout","handleFlushTimer","intervalHandle","setInterval","clearTimeout","clearInterval","TaskQueue","observer","val","node","values","_this","this","flushing","longStacks","microTaskQueue","microTaskQueueCapacity","taskQueue","mutationObserver","requestFlushMicroTaskQueue","flushMicroTaskQueue","createMutationObserver","createTextNode","Object","create","a","b","observe","characterData","data","requestFlushTaskQueue","flushTaskQueue","_flushQueue","queue","capacity","index","task","length","stack","undefined","call","scan","newLength","error","filterFlushStack","onError","queueMicroTask","prepareQueueStack","push","queueTask","Number","MAX_VALUE","separator","replace","filterQueueStack","Error","e","captureStack","lastIndexOf","substr","extendStatics","d","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__decorate","decorators","target","key","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","AttributeMap","svg","elements","allElements","registerUniversal","register","elementName","attributeName","propertyName","toLowerCase","map","isStandardSvgAttribute","element","test","inject","InterpolationBindingExpression","observerLocator","targetProperty","parts","mode","lookupFunctions","attribute","attrToRemove","discrete","createBinding","ChildInterpolationBinding","InterpolationBinding","validateTarget","info","parentElement","nodeName","targetAccessor","getAccessor","interpolate","isBound","value","ii","concat","setValue","updateOneTimeBindings","child","oneTime","bind","source","unbind","binding","sourceExpression","left","right","parent","updateTarget","toString","rawValue","evaluate","_version","connect","observeArray","unobserve","oneWay","LetExpression","toBindingContext","LetBinding","context","bindingContext","overrideContext","arg0","LetInterpolationBindingExpression","LetInterpolationBinding","interpolationBinding","createInterpolationBinding","toView","SyntaxInterpreter","parser","eventManager","attributeMap","interpret","resources","existingInstruction","command","handleUnknownCommand","warn","determineDefaultBindingMode","attrName","tagName","type","contentEditable","twoWay","attributes","defaultBindingMode","instruction","parse","attrValue","trigger","none","capture","capturing","delegate","bubbling","options","current","language","name","inString","inEscape","foundName","trim","_getPrimaryPropertyName","inspectAttribute","createAttributeInstruction","getAttribute","primaryProperty","keyValue","isDestructuring","match","split","local","items","fromView","TemplatingBindingLanguage","_super","syntaxInterpreter","emptyStringExpression","toBindingContextAttr","__","__extends","expression","interpolationParts","parseInterpolation","theInfo","createLetExpressions","letElement","attr","expressions","hasAttribute","nodeValue","inspectTextContent","char","interpolationStart","indexOf","pos","open","quote","partIndex","substring","configure","config","container","registerSingleton","registerAlias","ActivationStrategy","TypeError","String","Compose","compositionEngine","viewSlot","viewResources","activationStrategy","InvokeLifecycle","currentController","currentViewModel","changes","Element","created","owningView","view","viewModel","model","pendingTask","processChanges","removeAll","modelChanged","newValue","oldValue","requestUpdate","viewChanged","viewModelChanged","composer","vm","determineActivationStrategy","Replace","needsReInitialization","assign","host","swapOrder","createInstruction","compose","then","controller","activate","Promise","resolve","tryActivateViewModel","completeCompositionTask","reason","_","isEmpty","updateRequested","IfCore","viewFactory","showing","cache","isCaching","remove","returnToCache","_show","add","_hide","removed","_unbindView","If","apply","condition","conditionChanged","_update","show","promise","animating","elseVm","_swap","all","Else","_registerInIf","ifVm","previous","anchor","previousSibling","au","if","With","parentOverrideContext","valueChanged","updateOverrideContexts","views","startIndex","updateOverrideContext","createFullOverrideContext","repeat","scope","first","last","even","$index","$first","$last","$middle","$odd","$even","updateOneTimeBinding","array","item","matcher","ArrayRepeatStrategy","getCollectionObserver","getArrayObserver","instanceChanged","$repeat","itemsLength","children","viewsLength","viewsRequireLifecycle","childrenSnapshot","slice","itemNameInBindingContext","matcher_1","itemsPreviouslyInViews_1","viewsToRemove","oldItem","updateViews","removePromise","removeViews","indexOfView","insertView","splice","moveView","_inPlaceProcessItems","removeAllViews","_standardProcessInstanceChanged","addView","viewCount","removeView","middle","updateBindings","instanceMutated","splices","__queuedSplices","_a","addedCount","__array","maybePromise","_runSplices","queuedSplices_1","runQueuedSplices_1","nextPromise","removeDelta","rmPromises","j","jj","viewOrPromise","spliceIndexLow","_handleAddedSplices","spliceIndex","arrayLength","addIndex","end","MapRepeatStrategy","getMapObserver","_standardProcessItems","forEach","size","records","removeIndex","record","_getViewIndexByKey","get","NullRepeatStrategy","NumberRepeatStrategy","childrenLength","Math","floor","SetRepeatStrategy","getSetObserver","set","max","_getViewIndexByValue","RepeatStrategyLocator","matchers","strategies","addStrategy","Map","Set","strategy","getStrategy","lifecycleOptionalBehaviors","behaviorRequiresLifecycle","t","handlesAttached","handlesBind","handlesCreated","handlesDetached","handlesUnbind","targetRequiresLifecycle","behaviors","behaviorInstructions","_viewsRequireLifecycle","template","querySelector","id","instructions","AbstractRepeater","sourceIndex","targetIndex","skipAnimation","Repeat","strategyLocator","ignoreMutation","filter","bi","originalAttrName","getItemsSourceExpression","isOneTime","Repeat_1","_captureAndRemoveMatcherBinding","matcherBinding","itemsChanged","_unsubscribeCollection","collectionObserver","unsubscribe","callContext","_observeInnerCollection","_observeCollection","_getInnerCollection","unwrapped","unwrapExpression","handleCollectionMutated","collection","handleInnerCollectionMutated","newItems","subscribe","useInnerMatcher","extractMatcherBindingExpression","getChildrenCount","repeatedElement","getFirstElementChild","repeatedElementTargetId","insert","move","removeMany","removeAt","$view","bindings","controllers","k","boundProperties","targetedElementId","instructionIds","keys","instructionId","matcherBindingExpression","el","childNodes","count","nodeType","firstChild","nextSibling","aureliaHideClass","injectAureliaHideStyleAtBoundary","domBoundary","shadowDOM","hasAureliaHideStyle","injectStyles","Show","animator","of","boundary","removeClass","addClass","Hide","HTMLSanitizer","sanitize","input","SanitizeHTMLValueConverter","sanitizer","untrustedMarkup","Replaceable","Focus","isAttached","needsApply","_apply","focus","blur","attached","addEventListener","detached","removeEventListener","handleEvent","activeElement","cssUrlMatcher","CSSResource","address","_scoped","_global","_alreadyGloballyInjected","initialize","Target","registry","registerViewEngineHooks","load","loadText","catch","text","css","p1","charAt","fixupCSSUrls","CSSViewEngineHooks","owner","beforeCompile","content","targetShadowDOM","scopedCSS","setAttribute","AttrBindingBehavior","targetObserver","modeBindingBehavior","originalMode","OneTimeBindingBehavior","OneWayBindingBehavior","ToViewBindingBehavior","FromViewBindingBehavior","TwoWayBindingBehavior","throttle","state","throttleState","elapsed","Date","delay","timeoutId","throttledMethod","ThrottleBindingBehavior","methodToThrottle","callSource","updateSource","originalName","unset","debounceCallSource","event","debounceState","debouncedMethod","debounceCall","callContextToDebounce","_oldValue","DebounceBindingBehavior","isCallSource","methodToDebounce","debouncer","handleSelfEvent","path","deepPath","findOriginalEventTarget","selfEventCallSource","SelfBindingBehavior","targetEvent","BindingSignaler","signals","signal","SignalBindingBehavior","bindingSignaler","names","_i","name_1","signalName","name_2","isArray","eventNamesRequired","notApplicableMessage","UpdateTriggerBindingBehavior","events","getObserver","handler","originalHandler","dispose","configure$1","viewEngine","loader","aurelia","addResourcePlugin","viewUrl","loadTemplate","registryEntry","bindableNames","useShadowDOMmode","exec","x","removeAttribute","DynamicElement","$parent","_createDynamicElement","globalResources","styleResourcePlugin","fetch","ViewCSS","_createCSSResource","ext","EmptyLayoutViewModel","RouterView","router","viewLocator","compositionTransaction","registerViewPort","initialComposition","compositionTransactionNotifier","enlist","process","$viewPortInstruction","waitToSwap","viewPortInstruction","component","childContainer","viewModelResource","metadata","currentInstruction","viewPortConfig","viewPorts","RouterViewLocator","_notify","layoutInstruction","layoutViewModel","layoutView","layoutModel","viewStrategy","getViewStrategy","makeRelativeTo","moduleId","compositionTransactionOwnershipToken","tryCapture","viewPortComponentBehaviorInstruction","dynamic","swap","viewPortController","previousView","work","swapStrategy","after","ready","owningView_or_layoutView","automate","transactionOwnerShipToken","waitForCompositionComplete","createController","layoutController","distributeView","slots","newView","notifier","done","$resource","bindables","findNearest","routerView","EmptyClass","TemplatingRouteLoader","resolveViewModel","reject","DynamicClass","createDynamicClass","createChildContainer","createChild","getChildRouter","childRouter","registerHandler","loadRoute","navInstruction","ensureViewModel","logger","RouteHref","isActive","processChange","attributeChanged","ensureConfigured","href","generate","route","params","changeHandler","singleton"],"mappings":"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","file":"vendors~ecff2e3d.63d9738d4c12b19179db.chunk.js","sourcesContent":["var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\n\nimport { DOM, FEATURE } from 'aurelia-pal';\n\nvar stackSeparator = '\\nEnqueued in TaskQueue by:\\n';\nvar microStackSeparator = '\\nEnqueued in MicroTaskQueue by:\\n';\n\nfunction makeRequestFlushFromMutationObserver(flush) {\n  var observer = DOM.createMutationObserver(flush);\n  var val = 'a';\n  var node = DOM.createTextNode('a');\n  var values = Object.create(null);\n  values.a = 'b';\n  values.b = 'a';\n  observer.observe(node, { characterData: true });\n  return function requestFlush() {\n    node.data = val = values[val];\n  };\n}\n\nfunction makeRequestFlushFromTimer(flush) {\n  return function requestFlush() {\n    var timeoutHandle = setTimeout(handleFlushTimer, 0);\n\n    var intervalHandle = setInterval(handleFlushTimer, 50);\n    function handleFlushTimer() {\n      clearTimeout(timeoutHandle);\n      clearInterval(intervalHandle);\n      flush();\n    }\n  };\n}\n\nfunction onError(error, task, longStacks) {\n  if (longStacks && task.stack && (typeof error === 'undefined' ? 'undefined' : _typeof(error)) === 'object' && error !== null) {\n    error.stack = filterFlushStack(error.stack) + task.stack;\n  }\n\n  if ('onError' in task) {\n    task.onError(error);\n  } else {\n    setTimeout(function () {\n      throw error;\n    }, 0);\n  }\n}\n\nexport var TaskQueue = function () {\n  function TaskQueue() {\n    var _this = this;\n\n    \n\n    this.flushing = false;\n    this.longStacks = false;\n\n    this.microTaskQueue = [];\n    this.microTaskQueueCapacity = 1024;\n    this.taskQueue = [];\n\n    if (FEATURE.mutationObserver) {\n      this.requestFlushMicroTaskQueue = makeRequestFlushFromMutationObserver(function () {\n        return _this.flushMicroTaskQueue();\n      });\n    } else {\n      this.requestFlushMicroTaskQueue = makeRequestFlushFromTimer(function () {\n        return _this.flushMicroTaskQueue();\n      });\n    }\n\n    this.requestFlushTaskQueue = makeRequestFlushFromTimer(function () {\n      return _this.flushTaskQueue();\n    });\n  }\n\n  TaskQueue.prototype._flushQueue = function _flushQueue(queue, capacity) {\n    var index = 0;\n    var task = void 0;\n\n    try {\n      this.flushing = true;\n      while (index < queue.length) {\n        task = queue[index];\n        if (this.longStacks) {\n          this.stack = typeof task.stack === 'string' ? task.stack : undefined;\n        }\n        task.call();\n        index++;\n\n        if (index > capacity) {\n          for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n            queue[scan] = queue[scan + index];\n          }\n\n          queue.length -= index;\n          index = 0;\n        }\n      }\n    } catch (error) {\n      onError(error, task, this.longStacks);\n    } finally {\n      this.flushing = false;\n    }\n  };\n\n  TaskQueue.prototype.queueMicroTask = function queueMicroTask(task) {\n    if (this.microTaskQueue.length < 1) {\n      this.requestFlushMicroTaskQueue();\n    }\n\n    if (this.longStacks) {\n      task.stack = this.prepareQueueStack(microStackSeparator);\n    }\n\n    this.microTaskQueue.push(task);\n  };\n\n  TaskQueue.prototype.queueTask = function queueTask(task) {\n    if (this.taskQueue.length < 1) {\n      this.requestFlushTaskQueue();\n    }\n\n    if (this.longStacks) {\n      task.stack = this.prepareQueueStack(stackSeparator);\n    }\n\n    this.taskQueue.push(task);\n  };\n\n  TaskQueue.prototype.flushTaskQueue = function flushTaskQueue() {\n    var queue = this.taskQueue;\n    this.taskQueue = [];\n    this._flushQueue(queue, Number.MAX_VALUE);\n  };\n\n  TaskQueue.prototype.flushMicroTaskQueue = function flushMicroTaskQueue() {\n    var queue = this.microTaskQueue;\n    this._flushQueue(queue, this.microTaskQueueCapacity);\n    queue.length = 0;\n  };\n\n  TaskQueue.prototype.prepareQueueStack = function prepareQueueStack(separator) {\n    var stack = separator + filterQueueStack(captureStack());\n\n    if (typeof this.stack === 'string') {\n      stack = filterFlushStack(stack) + this.stack;\n    }\n\n    return stack;\n  };\n\n  return TaskQueue;\n}();\n\nfunction captureStack() {\n  var error = new Error();\n\n  if (error.stack) {\n    return error.stack;\n  }\n\n  try {\n    throw error;\n  } catch (e) {\n    return e.stack;\n  }\n}\n\nfunction filterQueueStack(stack) {\n  return stack.replace(/^[\\s\\S]*?\\bqueue(Micro)?Task\\b[^\\n]*\\n/, '');\n}\n\nfunction filterFlushStack(stack) {\n  var index = stack.lastIndexOf('flushMicroTaskQueue');\n\n  if (index < 0) {\n    index = stack.lastIndexOf('flushTaskQueue');\n    if (index < 0) {\n      return stack;\n    }\n  }\n\n  index = stack.lastIndexOf('\\n', index);\n\n  return index < 0 ? stack : stack.substr(0, index);\n}","import { BehaviorInstruction, BindingLanguage } from 'aurelia-templating';\nimport { camelCase, SVGAnalyzer, bindingMode, enqueueBindingConnect, connectable, sourceContext, BindingExpression, ListenerExpression, delegationStrategy, CallExpression, Parser, ObserverLocator, EventManager, NameExpression, LiteralString } from 'aurelia-binding';\nimport * as LogManager from 'aurelia-logging';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nfunction __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\n\nvar AttributeMap = (function () {\r\n    function AttributeMap(svg) {\r\n        this.elements = Object.create(null);\r\n        this.allElements = Object.create(null);\r\n        this.svg = svg;\r\n        this.registerUniversal('accesskey', 'accessKey');\r\n        this.registerUniversal('contenteditable', 'contentEditable');\r\n        this.registerUniversal('tabindex', 'tabIndex');\r\n        this.registerUniversal('textcontent', 'textContent');\r\n        this.registerUniversal('innerhtml', 'innerHTML');\r\n        this.registerUniversal('scrolltop', 'scrollTop');\r\n        this.registerUniversal('scrollleft', 'scrollLeft');\r\n        this.registerUniversal('readonly', 'readOnly');\r\n        this.register('label', 'for', 'htmlFor');\r\n        this.register('img', 'usemap', 'useMap');\r\n        this.register('input', 'maxlength', 'maxLength');\r\n        this.register('input', 'minlength', 'minLength');\r\n        this.register('input', 'formaction', 'formAction');\r\n        this.register('input', 'formenctype', 'formEncType');\r\n        this.register('input', 'formmethod', 'formMethod');\r\n        this.register('input', 'formnovalidate', 'formNoValidate');\r\n        this.register('input', 'formtarget', 'formTarget');\r\n        this.register('textarea', 'maxlength', 'maxLength');\r\n        this.register('td', 'rowspan', 'rowSpan');\r\n        this.register('td', 'colspan', 'colSpan');\r\n        this.register('th', 'rowspan', 'rowSpan');\r\n        this.register('th', 'colspan', 'colSpan');\r\n    }\r\n    AttributeMap.prototype.register = function (elementName, attributeName, propertyName) {\r\n        elementName = elementName.toLowerCase();\r\n        attributeName = attributeName.toLowerCase();\r\n        var element = this.elements[elementName] = (this.elements[elementName] || Object.create(null));\r\n        element[attributeName] = propertyName;\r\n    };\r\n    AttributeMap.prototype.registerUniversal = function (attributeName, propertyName) {\r\n        attributeName = attributeName.toLowerCase();\r\n        this.allElements[attributeName] = propertyName;\r\n    };\r\n    AttributeMap.prototype.map = function (elementName, attributeName) {\r\n        if (this.svg.isStandardSvgAttribute(elementName, attributeName)) {\r\n            return attributeName;\r\n        }\r\n        elementName = elementName.toLowerCase();\r\n        attributeName = attributeName.toLowerCase();\r\n        var element = this.elements[elementName];\r\n        if (element !== undefined && attributeName in element) {\r\n            return element[attributeName];\r\n        }\r\n        if (attributeName in this.allElements) {\r\n            return this.allElements[attributeName];\r\n        }\r\n        if (/(?:^data-)|(?:^aria-)|:/.test(attributeName)) {\r\n            return attributeName;\r\n        }\r\n        return camelCase(attributeName);\r\n    };\r\n    AttributeMap.inject = [SVGAnalyzer];\r\n    return AttributeMap;\r\n}());\n\nvar InterpolationBindingExpression = (function () {\r\n    function InterpolationBindingExpression(observerLocator, targetProperty, parts, mode, lookupFunctions, attribute) {\r\n        this.observerLocator = observerLocator;\r\n        this.targetProperty = targetProperty;\r\n        this.parts = parts;\r\n        this.mode = mode;\r\n        this.lookupFunctions = lookupFunctions;\r\n        this.attribute = this.attrToRemove = attribute;\r\n        this.discrete = false;\r\n    }\r\n    InterpolationBindingExpression.prototype.createBinding = function (target) {\r\n        if (this.parts.length === 3) {\r\n            return new ChildInterpolationBinding(target, this.observerLocator, this.parts[1], this.mode, this.lookupFunctions, this.targetProperty, this.parts[0], this.parts[2]);\r\n        }\r\n        return new InterpolationBinding(this.observerLocator, this.parts, target, this.targetProperty, this.mode, this.lookupFunctions);\r\n    };\r\n    return InterpolationBindingExpression;\r\n}());\r\nfunction validateTarget(target, propertyName) {\r\n    if (propertyName === 'style') {\r\n        LogManager.getLogger('templating-binding')\r\n            .info('Internet Explorer does not support interpolation in \"style\" attributes.  Use the style attribute\\'s alias, \"css\" instead.');\r\n    }\r\n    else if (target.parentElement && target.parentElement.nodeName === 'TEXTAREA' && propertyName === 'textContent') {\r\n        throw new Error('Interpolation binding cannot be used in the content of a textarea element.  Use <textarea value.bind=\"expression\"></textarea> instead.');\r\n    }\r\n}\r\nvar InterpolationBinding = (function () {\r\n    function InterpolationBinding(observerLocator, parts, target, targetProperty, mode, lookupFunctions) {\r\n        validateTarget(target, targetProperty);\r\n        this.observerLocator = observerLocator;\r\n        this.parts = parts;\r\n        this.target = target;\r\n        this.targetProperty = targetProperty;\r\n        this.targetAccessor = observerLocator.getAccessor(target, targetProperty);\r\n        this.mode = mode;\r\n        this.lookupFunctions = lookupFunctions;\r\n    }\r\n    InterpolationBinding.prototype.interpolate = function () {\r\n        if (this.isBound) {\r\n            var value = '';\r\n            var parts = this.parts;\r\n            for (var i = 0, ii = parts.length; i < ii; i++) {\r\n                value += (i % 2 === 0 ? parts[i] : this[\"childBinding\".concat(i)].value);\r\n            }\r\n            this.targetAccessor.setValue(value, this.target, this.targetProperty);\r\n        }\r\n    };\r\n    InterpolationBinding.prototype.updateOneTimeBindings = function () {\r\n        for (var i = 1, ii = this.parts.length; i < ii; i += 2) {\r\n            var child = this[\"childBinding\".concat(i)];\r\n            if (child.mode === bindingMode.oneTime) {\r\n                child.call();\r\n            }\r\n        }\r\n    };\r\n    InterpolationBinding.prototype.bind = function (source) {\r\n        if (this.isBound) {\r\n            if (this.source === source) {\r\n                return;\r\n            }\r\n            this.unbind();\r\n        }\r\n        this.source = source;\r\n        var parts = this.parts;\r\n        for (var i = 1, ii = parts.length; i < ii; i += 2) {\r\n            var binding = new ChildInterpolationBinding(this, this.observerLocator, parts[i], this.mode, this.lookupFunctions);\r\n            binding.bind(source);\r\n            this[\"childBinding\".concat(i)] = binding;\r\n        }\r\n        this.isBound = true;\r\n        this.interpolate();\r\n    };\r\n    InterpolationBinding.prototype.unbind = function () {\r\n        if (!this.isBound) {\r\n            return;\r\n        }\r\n        this.isBound = false;\r\n        this.source = null;\r\n        var parts = this.parts;\r\n        for (var i = 1, ii = parts.length; i < ii; i += 2) {\r\n            var name_1 = \"childBinding\".concat(i);\r\n            this[name_1].unbind();\r\n        }\r\n    };\r\n    return InterpolationBinding;\r\n}());\r\nvar ChildInterpolationBinding = (function () {\r\n    function ChildInterpolationBinding(target, observerLocator, sourceExpression, mode, lookupFunctions, targetProperty, left, right) {\r\n        if (target instanceof InterpolationBinding) {\r\n            this.parent = target;\r\n        }\r\n        else {\r\n            validateTarget(target, targetProperty);\r\n            this.target = target;\r\n            this.targetProperty = targetProperty;\r\n            this.targetAccessor = observerLocator.getAccessor(target, targetProperty);\r\n        }\r\n        this.observerLocator = observerLocator;\r\n        this.sourceExpression = sourceExpression;\r\n        this.mode = mode;\r\n        this.lookupFunctions = lookupFunctions;\r\n        this.left = left;\r\n        this.right = right;\r\n    }\r\n    ChildInterpolationBinding.prototype.updateTarget = function (value) {\r\n        value = value === null || value === undefined ? '' : value.toString();\r\n        if (value !== this.value) {\r\n            this.value = value;\r\n            if (this.parent) {\r\n                this.parent.interpolate();\r\n            }\r\n            else {\r\n                this.targetAccessor.setValue(this.left + value + this.right, this.target, this.targetProperty);\r\n            }\r\n        }\r\n    };\r\n    ChildInterpolationBinding.prototype.call = function () {\r\n        if (!this.isBound) {\r\n            return;\r\n        }\r\n        this.rawValue = this.sourceExpression.evaluate(this.source, this.lookupFunctions);\r\n        this.updateTarget(this.rawValue);\r\n        if (this.mode !== bindingMode.oneTime) {\r\n            this._version++;\r\n            this.sourceExpression.connect(this, this.source);\r\n            if (this.rawValue instanceof Array) {\r\n                this.observeArray(this.rawValue);\r\n            }\r\n            this.unobserve(false);\r\n        }\r\n    };\r\n    ChildInterpolationBinding.prototype.bind = function (source) {\r\n        if (this.isBound) {\r\n            if (this.source === source) {\r\n                return;\r\n            }\r\n            this.unbind();\r\n        }\r\n        this.isBound = true;\r\n        this.source = source;\r\n        var sourceExpression = this.sourceExpression;\r\n        if (sourceExpression.bind) {\r\n            sourceExpression.bind(this, source, this.lookupFunctions);\r\n        }\r\n        this.rawValue = sourceExpression.evaluate(source, this.lookupFunctions);\r\n        this.updateTarget(this.rawValue);\r\n        if (this.mode === bindingMode.oneWay) {\r\n            enqueueBindingConnect(this);\r\n        }\r\n    };\r\n    ChildInterpolationBinding.prototype.unbind = function () {\r\n        if (!this.isBound) {\r\n            return;\r\n        }\r\n        this.isBound = false;\r\n        var sourceExpression = this.sourceExpression;\r\n        if (sourceExpression.unbind) {\r\n            sourceExpression.unbind(this, this.source);\r\n        }\r\n        this.source = null;\r\n        this.value = null;\r\n        this.rawValue = null;\r\n        this.unobserve(true);\r\n    };\r\n    ChildInterpolationBinding.prototype.connect = function (evaluate) {\r\n        if (!this.isBound) {\r\n            return;\r\n        }\r\n        if (evaluate) {\r\n            this.rawValue = this.sourceExpression.evaluate(this.source, this.lookupFunctions);\r\n            this.updateTarget(this.rawValue);\r\n        }\r\n        this.sourceExpression.connect(this, this.source);\r\n        if (this.rawValue instanceof Array) {\r\n            this.observeArray(this.rawValue);\r\n        }\r\n    };\r\n    ChildInterpolationBinding = __decorate([\r\n        connectable()\r\n    ], ChildInterpolationBinding);\r\n    return ChildInterpolationBinding;\r\n}());\n\nvar LetExpression = (function () {\r\n    function LetExpression(observerLocator, targetProperty, sourceExpression, lookupFunctions, toBindingContext) {\r\n        this.observerLocator = observerLocator;\r\n        this.sourceExpression = sourceExpression;\r\n        this.targetProperty = targetProperty;\r\n        this.lookupFunctions = lookupFunctions;\r\n        this.toBindingContext = toBindingContext;\r\n    }\r\n    LetExpression.prototype.createBinding = function () {\r\n        return new LetBinding(this.observerLocator, this.sourceExpression, this.targetProperty, this.lookupFunctions, this.toBindingContext);\r\n    };\r\n    return LetExpression;\r\n}());\r\nvar LetBinding = (function () {\r\n    function LetBinding(observerLocator, sourceExpression, targetProperty, lookupFunctions, toBindingContext) {\r\n        this.observerLocator = observerLocator;\r\n        this.sourceExpression = sourceExpression;\r\n        this.targetProperty = targetProperty;\r\n        this.lookupFunctions = lookupFunctions;\r\n        this.source = null;\r\n        this.target = null;\r\n        this.toBindingContext = toBindingContext;\r\n    }\r\n    LetBinding.prototype.updateTarget = function () {\r\n        var value = this.sourceExpression.evaluate(this.source, this.lookupFunctions);\r\n        this.target[this.targetProperty] = value;\r\n    };\r\n    LetBinding.prototype.call = function (context) {\r\n        if (!this.isBound) {\r\n            return;\r\n        }\r\n        if (context === sourceContext) {\r\n            this.updateTarget();\r\n            return;\r\n        }\r\n        throw new Error(\"Unexpected call context \".concat(context));\r\n    };\r\n    LetBinding.prototype.bind = function (source) {\r\n        if (this.isBound) {\r\n            if (this.source === source) {\r\n                return;\r\n            }\r\n            this.unbind();\r\n        }\r\n        this.isBound = true;\r\n        this.source = source;\r\n        this.target = this.toBindingContext ? source.bindingContext : source.overrideContext;\r\n        if (this.sourceExpression.bind) {\r\n            this.sourceExpression.bind(this, source, this.lookupFunctions);\r\n        }\r\n        enqueueBindingConnect(this);\r\n    };\r\n    LetBinding.prototype.unbind = function () {\r\n        if (!this.isBound) {\r\n            return;\r\n        }\r\n        this.isBound = false;\r\n        if (this.sourceExpression.unbind) {\r\n            this.sourceExpression.unbind(this, this.source);\r\n        }\r\n        this.source = null;\r\n        this.target = null;\r\n        this.unobserve(true);\r\n    };\r\n    LetBinding.prototype.unobserve = function (arg0) {\r\n        throw new Error('Method not implemented.');\r\n    };\r\n    LetBinding.prototype.connect = function () {\r\n        if (!this.isBound) {\r\n            return;\r\n        }\r\n        this.updateTarget();\r\n        this.sourceExpression.connect(this, this.source);\r\n    };\r\n    LetBinding = __decorate([\r\n        connectable()\r\n    ], LetBinding);\r\n    return LetBinding;\r\n}());\n\nvar LetInterpolationBindingExpression = (function () {\r\n    function LetInterpolationBindingExpression(observerLocator, targetProperty, parts, lookupFunctions, toBindingContext) {\r\n        this.observerLocator = observerLocator;\r\n        this.targetProperty = targetProperty;\r\n        this.parts = parts;\r\n        this.lookupFunctions = lookupFunctions;\r\n        this.toBindingContext = toBindingContext;\r\n    }\r\n    LetInterpolationBindingExpression.prototype.createBinding = function () {\r\n        return new LetInterpolationBinding(this.observerLocator, this.targetProperty, this.parts, this.lookupFunctions, this.toBindingContext);\r\n    };\r\n    return LetInterpolationBindingExpression;\r\n}());\r\nvar LetInterpolationBinding = (function () {\r\n    function LetInterpolationBinding(observerLocator, targetProperty, parts, lookupFunctions, toBindingContext) {\r\n        this.observerLocator = observerLocator;\r\n        this.parts = parts;\r\n        this.targetProperty = targetProperty;\r\n        this.lookupFunctions = lookupFunctions;\r\n        this.toBindingContext = toBindingContext;\r\n        this.target = null;\r\n    }\r\n    LetInterpolationBinding.prototype.bind = function (source) {\r\n        if (this.isBound) {\r\n            if (this.source === source) {\r\n                return;\r\n            }\r\n            this.unbind();\r\n        }\r\n        this.isBound = true;\r\n        this.source = source;\r\n        this.target = this.toBindingContext ? source.bindingContext : source.overrideContext;\r\n        this.interpolationBinding = this.createInterpolationBinding();\r\n        this.interpolationBinding.bind(source);\r\n    };\r\n    LetInterpolationBinding.prototype.unbind = function () {\r\n        if (!this.isBound) {\r\n            return;\r\n        }\r\n        this.isBound = false;\r\n        this.source = null;\r\n        this.target = null;\r\n        this.interpolationBinding.unbind();\r\n        this.interpolationBinding = null;\r\n    };\r\n    LetInterpolationBinding.prototype.createInterpolationBinding = function () {\r\n        if (this.parts.length === 3) {\r\n            return new ChildInterpolationBinding(this.target, this.observerLocator, this.parts[1], bindingMode.toView, this.lookupFunctions, this.targetProperty, this.parts[0], this.parts[2]);\r\n        }\r\n        return new InterpolationBinding(this.observerLocator, this.parts, this.target, this.targetProperty, bindingMode.toView, this.lookupFunctions);\r\n    };\r\n    return LetInterpolationBinding;\r\n}());\n\nvar SyntaxInterpreter = (function () {\r\n    function SyntaxInterpreter(parser, observerLocator, eventManager, attributeMap) {\r\n        this.parser = parser;\r\n        this.observerLocator = observerLocator;\r\n        this.eventManager = eventManager;\r\n        this.attributeMap = attributeMap;\r\n    }\r\n    SyntaxInterpreter.prototype.interpret = function (resources, element, info, existingInstruction, context) {\r\n        if (info.command in this) {\r\n            return this[info.command](resources, element, info, existingInstruction, context);\r\n        }\r\n        return this.handleUnknownCommand(resources, element, info, existingInstruction, context);\r\n    };\r\n    SyntaxInterpreter.prototype.handleUnknownCommand = function (resources, element, info, existingInstruction, context) {\r\n        LogManager.getLogger('templating-binding').warn('Unknown binding command.', info);\r\n        return existingInstruction;\r\n    };\r\n    SyntaxInterpreter.prototype.determineDefaultBindingMode = function (element, attrName, context) {\r\n        var tagName = element.tagName.toLowerCase();\r\n        if (tagName === 'input' && (attrName === 'value' || attrName === 'files') && element.type !== 'checkbox' && element.type !== 'radio'\r\n            || tagName === 'input' && attrName === 'checked' && (element.type === 'checkbox' || element.type === 'radio')\r\n            || (tagName === 'textarea' || tagName === 'select') && attrName === 'value'\r\n            || (attrName === 'textcontent' || attrName === 'innerhtml') && element.contentEditable === 'true'\r\n            || attrName === 'scrolltop'\r\n            || attrName === 'scrollleft') {\r\n            return bindingMode.twoWay;\r\n        }\r\n        if (context\r\n            && attrName in context.attributes\r\n            && context.attributes[attrName]\r\n            && context.attributes[attrName].defaultBindingMode >= bindingMode.oneTime) {\r\n            return context.attributes[attrName].defaultBindingMode;\r\n        }\r\n        return bindingMode.toView;\r\n    };\r\n    SyntaxInterpreter.prototype.bind = function (resources, element, info, existingInstruction, context) {\r\n        var instruction = existingInstruction || BehaviorInstruction.attribute(info.attrName);\r\n        instruction.attributes[info.attrName] = new BindingExpression(this.observerLocator, this.attributeMap.map(element.tagName, info.attrName), this.parser.parse(info.attrValue), info.defaultBindingMode === undefined || info.defaultBindingMode === null\r\n            ? this.determineDefaultBindingMode(element, info.attrName, context)\r\n            : info.defaultBindingMode, resources.lookupFunctions);\r\n        return instruction;\r\n    };\r\n    SyntaxInterpreter.prototype.trigger = function (resources, element, info) {\r\n        return new ListenerExpression(this.eventManager, info.attrName, this.parser.parse(info.attrValue), delegationStrategy.none, true, resources.lookupFunctions);\r\n    };\r\n    SyntaxInterpreter.prototype.capture = function (resources, element, info) {\r\n        return new ListenerExpression(this.eventManager, info.attrName, this.parser.parse(info.attrValue), delegationStrategy.capturing, true, resources.lookupFunctions);\r\n    };\r\n    SyntaxInterpreter.prototype.delegate = function (resources, element, info) {\r\n        return new ListenerExpression(this.eventManager, info.attrName, this.parser.parse(info.attrValue), delegationStrategy.bubbling, true, resources.lookupFunctions);\r\n    };\r\n    SyntaxInterpreter.prototype.call = function (resources, element, info, existingInstruction) {\r\n        var instruction = existingInstruction || BehaviorInstruction.attribute(info.attrName);\r\n        instruction.attributes[info.attrName] = new CallExpression(this.observerLocator, info.attrName, this.parser.parse(info.attrValue), resources.lookupFunctions);\r\n        return instruction;\r\n    };\r\n    SyntaxInterpreter.prototype.options = function (resources, element, info, existingInstruction, context) {\r\n        var instruction = existingInstruction || BehaviorInstruction.attribute(info.attrName);\r\n        var attrValue = info.attrValue;\r\n        var language = this.language;\r\n        var name = null;\r\n        var target = '';\r\n        var current;\r\n        var i;\r\n        var ii;\r\n        var inString = false;\r\n        var inEscape = false;\r\n        var foundName = false;\r\n        for (i = 0, ii = attrValue.length; i < ii; ++i) {\r\n            current = attrValue[i];\r\n            if (current === ';' && !inString) {\r\n                if (!foundName) {\r\n                    name = this._getPrimaryPropertyName(resources, context);\r\n                }\r\n                info = language.inspectAttribute(resources, '?', name, target.trim());\r\n                language.createAttributeInstruction(resources, element, info, instruction, context);\r\n                if (!instruction.attributes[info.attrName]) {\r\n                    instruction.attributes[info.attrName] = info.attrValue;\r\n                }\r\n                target = '';\r\n                name = null;\r\n            }\r\n            else if (current === ':' && name === null) {\r\n                foundName = true;\r\n                name = target.trim();\r\n                target = '';\r\n            }\r\n            else if (current === '\\\\') {\r\n                target += current;\r\n                inEscape = true;\r\n                continue;\r\n            }\r\n            else {\r\n                target += current;\r\n                if (name !== null && inEscape === false && current === '\\'') {\r\n                    inString = !inString;\r\n                }\r\n            }\r\n            inEscape = false;\r\n        }\r\n        if (!foundName) {\r\n            name = this._getPrimaryPropertyName(resources, context);\r\n        }\r\n        if (name !== null) {\r\n            info = language.inspectAttribute(resources, '?', name, target.trim());\r\n            language.createAttributeInstruction(resources, element, info, instruction, context);\r\n            if (!instruction.attributes[info.attrName]) {\r\n                instruction.attributes[info.attrName] = info.attrValue;\r\n            }\r\n        }\r\n        return instruction;\r\n    };\r\n    SyntaxInterpreter.prototype._getPrimaryPropertyName = function (resources, context) {\r\n        var type = resources.getAttribute(context.attributeName);\r\n        if (type && type.primaryProperty) {\r\n            return type.primaryProperty.attribute;\r\n        }\r\n        return null;\r\n    };\r\n    SyntaxInterpreter.prototype['for'] = function (resources, element, info, existingInstruction) {\r\n        var parts;\r\n        var keyValue;\r\n        var instruction;\r\n        var attrValue;\r\n        var isDestructuring;\r\n        attrValue = info.attrValue;\r\n        isDestructuring = attrValue.match(/^ *[[].+[\\]]/);\r\n        parts = isDestructuring ? attrValue.split('of ') : attrValue.split(' of ');\r\n        if (parts.length !== 2) {\r\n            throw new Error('Incorrect syntax for \"for\". The form is: \"$local of $items\" or \"[$key, $value] of $items\".');\r\n        }\r\n        instruction = existingInstruction || BehaviorInstruction.attribute(info.attrName);\r\n        if (isDestructuring) {\r\n            keyValue = parts[0].replace(/[[\\]]/g, '').replace(/,/g, ' ').replace(/\\s+/g, ' ').trim().split(' ');\r\n            instruction.attributes.key = keyValue[0];\r\n            instruction.attributes.value = keyValue[1];\r\n        }\r\n        else {\r\n            instruction.attributes.local = parts[0];\r\n        }\r\n        instruction.attributes.items = new BindingExpression(this.observerLocator, 'items', this.parser.parse(parts[1]), bindingMode.toView, resources.lookupFunctions);\r\n        return instruction;\r\n    };\r\n    SyntaxInterpreter.prototype['two-way'] = function (resources, element, info, existingInstruction) {\r\n        var instruction = existingInstruction || BehaviorInstruction.attribute(info.attrName);\r\n        instruction.attributes[info.attrName] = new BindingExpression(this.observerLocator, this.attributeMap.map(element.tagName, info.attrName), this.parser.parse(info.attrValue), bindingMode.twoWay, resources.lookupFunctions);\r\n        return instruction;\r\n    };\r\n    SyntaxInterpreter.prototype['to-view'] = function (resources, element, info, existingInstruction) {\r\n        var instruction = existingInstruction || BehaviorInstruction.attribute(info.attrName);\r\n        instruction.attributes[info.attrName] = new BindingExpression(this.observerLocator, this.attributeMap.map(element.tagName, info.attrName), this.parser.parse(info.attrValue), bindingMode.toView, resources.lookupFunctions);\r\n        return instruction;\r\n    };\r\n    SyntaxInterpreter.prototype['from-view'] = function (resources, element, info, existingInstruction) {\r\n        var instruction = existingInstruction || BehaviorInstruction.attribute(info.attrName);\r\n        instruction.attributes[info.attrName] = new BindingExpression(this.observerLocator, this.attributeMap.map(element.tagName, info.attrName), this.parser.parse(info.attrValue), bindingMode.fromView, resources.lookupFunctions);\r\n        return instruction;\r\n    };\r\n    SyntaxInterpreter.prototype['one-time'] = function (resources, element, info, existingInstruction) {\r\n        var instruction = existingInstruction || BehaviorInstruction.attribute(info.attrName);\r\n        instruction.attributes[info.attrName] = new BindingExpression(this.observerLocator, this.attributeMap.map(element.tagName, info.attrName), this.parser.parse(info.attrValue), bindingMode.oneTime, resources.lookupFunctions);\r\n        return instruction;\r\n    };\r\n    SyntaxInterpreter.inject = [Parser, ObserverLocator, EventManager, AttributeMap];\r\n    return SyntaxInterpreter;\r\n}());\r\nObject.defineProperty(SyntaxInterpreter.prototype, 'one-way', Object.getOwnPropertyDescriptor(SyntaxInterpreter.prototype, 'to-view'));\n\nvar info = {};\r\nvar TemplatingBindingLanguage = (function (_super) {\r\n    __extends(TemplatingBindingLanguage, _super);\r\n    function TemplatingBindingLanguage(parser, observerLocator, syntaxInterpreter, attributeMap) {\r\n        var _this = _super.call(this) || this;\r\n        _this.parser = parser;\r\n        _this.observerLocator = observerLocator;\r\n        _this.syntaxInterpreter = syntaxInterpreter;\r\n        _this.emptyStringExpression = _this.parser.parse('\\'\\'');\r\n        syntaxInterpreter.language = _this;\r\n        _this.attributeMap = attributeMap;\r\n        _this.toBindingContextAttr = 'to-binding-context';\r\n        return _this;\r\n    }\r\n    TemplatingBindingLanguage.prototype.inspectAttribute = function (resources, elementName, attrName, attrValue) {\r\n        var parts = attrName.split('.');\r\n        info.defaultBindingMode = null;\r\n        if (parts.length === 2) {\r\n            info.attrName = parts[0].trim();\r\n            info.attrValue = attrValue;\r\n            info.command = parts[1].trim();\r\n            if (info.command === 'ref') {\r\n                info.expression = new NameExpression(this.parser.parse(attrValue), info.attrName, resources.lookupFunctions);\r\n                info.command = null;\r\n                info.attrName = 'ref';\r\n            }\r\n            else {\r\n                info.expression = null;\r\n            }\r\n        }\r\n        else if (attrName === 'ref') {\r\n            info.attrName = attrName;\r\n            info.attrValue = attrValue;\r\n            info.command = null;\r\n            info.expression = new NameExpression(this.parser.parse(attrValue), 'element', resources.lookupFunctions);\r\n        }\r\n        else {\r\n            info.attrName = attrName;\r\n            info.attrValue = attrValue;\r\n            info.command = null;\r\n            var interpolationParts = this.parseInterpolation(resources, attrValue);\r\n            if (interpolationParts === null) {\r\n                info.expression = null;\r\n            }\r\n            else {\r\n                info.expression = new InterpolationBindingExpression(this.observerLocator, this.attributeMap.map(elementName, attrName), interpolationParts, bindingMode.toView, resources.lookupFunctions, attrName);\r\n            }\r\n        }\r\n        return info;\r\n    };\r\n    TemplatingBindingLanguage.prototype.createAttributeInstruction = function (resources, element, theInfo, existingInstruction, context) {\r\n        var instruction;\r\n        if (theInfo.expression) {\r\n            if (theInfo.attrName === 'ref') {\r\n                return theInfo.expression;\r\n            }\r\n            instruction = existingInstruction || BehaviorInstruction.attribute(theInfo.attrName);\r\n            instruction.attributes[theInfo.attrName] = theInfo.expression;\r\n        }\r\n        else if (theInfo.command) {\r\n            instruction = this.syntaxInterpreter.interpret(resources, element, theInfo, existingInstruction, context);\r\n        }\r\n        return instruction;\r\n    };\r\n    TemplatingBindingLanguage.prototype.createLetExpressions = function (resources, letElement) {\r\n        var expressions = [];\r\n        var attributes = letElement.attributes;\r\n        var attr;\r\n        var parts;\r\n        var attrName;\r\n        var attrValue;\r\n        var command;\r\n        var toBindingContextAttr = this.toBindingContextAttr;\r\n        var toBindingContext = letElement.hasAttribute(toBindingContextAttr);\r\n        for (var i = 0, ii = attributes.length; ii > i; ++i) {\r\n            attr = attributes[i];\r\n            attrName = attr.name;\r\n            attrValue = attr.nodeValue;\r\n            parts = attrName.split('.');\r\n            if (attrName === toBindingContextAttr) {\r\n                continue;\r\n            }\r\n            if (parts.length === 2) {\r\n                command = parts[1];\r\n                if (command !== 'bind') {\r\n                    LogManager.getLogger('templating-binding-language')\r\n                        .warn(\"Detected invalid let command. Expected \\\"\".concat(parts[0], \".bind\\\", given \\\"\").concat(attrName, \"\\\"\"));\r\n                    continue;\r\n                }\r\n                expressions.push(new LetExpression(this.observerLocator, camelCase(parts[0]), this.parser.parse(attrValue), resources.lookupFunctions, toBindingContext));\r\n            }\r\n            else {\r\n                attrName = camelCase(attrName);\r\n                parts = this.parseInterpolation(resources, attrValue);\r\n                if (parts === null) {\r\n                    LogManager.getLogger('templating-binding-language')\r\n                        .warn(\"Detected string literal in let bindings. Did you mean \\\"\".concat(attrName, \".bind=\").concat(attrValue, \"\\\" or \\\"\").concat(attrName, \"=${\").concat(attrValue, \"}\\\" ?\"));\r\n                }\r\n                if (parts) {\r\n                    expressions.push(new LetInterpolationBindingExpression(this.observerLocator, attrName, parts, resources.lookupFunctions, toBindingContext));\r\n                }\r\n                else {\r\n                    expressions.push(new LetExpression(this.observerLocator, attrName, new LiteralString(attrValue), resources.lookupFunctions, toBindingContext));\r\n                }\r\n            }\r\n        }\r\n        return expressions;\r\n    };\r\n    TemplatingBindingLanguage.prototype.inspectTextContent = function (resources, value) {\r\n        var parts = this.parseInterpolation(resources, value);\r\n        if (parts === null) {\r\n            return null;\r\n        }\r\n        return new InterpolationBindingExpression(this.observerLocator, 'textContent', parts, bindingMode.toView, resources.lookupFunctions, 'textContent');\r\n    };\r\n    TemplatingBindingLanguage.prototype.parseInterpolation = function (resources, value) {\r\n        var i = value.indexOf('${', 0);\r\n        var ii = value.length;\r\n        var char;\r\n        var pos = 0;\r\n        var open = 0;\r\n        var quote = null;\r\n        var interpolationStart;\r\n        var parts;\r\n        var partIndex = 0;\r\n        while (i >= 0 && i < ii - 2) {\r\n            open = 1;\r\n            interpolationStart = i;\r\n            i += 2;\r\n            do {\r\n                char = value[i];\r\n                i++;\r\n                if (char === \"'\" || char === '\"') {\r\n                    if (quote === null) {\r\n                        quote = char;\r\n                    }\r\n                    else if (quote === char) {\r\n                        quote = null;\r\n                    }\r\n                    continue;\r\n                }\r\n                if (char === '\\\\') {\r\n                    i++;\r\n                    continue;\r\n                }\r\n                if (quote !== null) {\r\n                    continue;\r\n                }\r\n                if (char === '{') {\r\n                    open++;\r\n                }\r\n                else if (char === '}') {\r\n                    open--;\r\n                }\r\n            } while (open > 0 && i < ii);\r\n            if (open === 0) {\r\n                parts = parts || [];\r\n                if (value[interpolationStart - 1] === '\\\\' && value[interpolationStart - 2] !== '\\\\') {\r\n                    parts[partIndex] = value.substring(pos, interpolationStart - 1) + value.substring(interpolationStart, i);\r\n                    partIndex++;\r\n                    parts[partIndex] = this.emptyStringExpression;\r\n                    partIndex++;\r\n                }\r\n                else {\r\n                    parts[partIndex] = value.substring(pos, interpolationStart);\r\n                    partIndex++;\r\n                    parts[partIndex] = this.parser.parse(value.substring(interpolationStart + 2, i - 1));\r\n                    partIndex++;\r\n                }\r\n                pos = i;\r\n                i = value.indexOf('${', i);\r\n            }\r\n            else {\r\n                break;\r\n            }\r\n        }\r\n        if (partIndex === 0) {\r\n            return null;\r\n        }\r\n        parts[partIndex] = value.substr(pos);\r\n        return parts;\r\n    };\r\n    TemplatingBindingLanguage.inject = [Parser, ObserverLocator, SyntaxInterpreter, AttributeMap];\r\n    return TemplatingBindingLanguage;\r\n}(BindingLanguage));\n\nfunction configure(config) {\r\n    config.container.registerSingleton(BindingLanguage, TemplatingBindingLanguage);\r\n    config.container.registerAlias(BindingLanguage, TemplatingBindingLanguage);\r\n}\n\nexport { AttributeMap, ChildInterpolationBinding, InterpolationBinding, InterpolationBindingExpression, LetBinding, LetExpression, LetInterpolationBinding, LetInterpolationBindingExpression, SyntaxInterpreter, TemplatingBindingLanguage, configure };\n//# sourceMappingURL=aurelia-templating-binding.js.map\n","import { Container, inject, Optional } from 'aurelia-dependency-injection';\nimport { DOM, FEATURE } from 'aurelia-pal';\nimport { TaskQueue } from 'aurelia-task-queue';\nimport { bindable, noView, customElement, CompositionEngine, ViewSlot, ViewResources, customAttribute, templateController, BoundViewFactory, TargetInstruction, Animator, resource, useView, useShadowDOM, ViewEngine } from 'aurelia-templating';\nimport { createOverrideContext, bindingMode, BindingBehavior, ValueConverter, sourceContext, mergeSplice, ObserverLocator, valueConverter, DataAttributeObserver, bindingBehavior, targetContext, EventSubscriber } from 'aurelia-binding';\nimport { Loader } from 'aurelia-loader';\nimport { relativeToFile } from 'aurelia-path';\nimport { mixin } from 'aurelia-metadata';\nimport { getLogger } from 'aurelia-logging';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nfunction __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\n\nvar ActivationStrategy;\r\n(function (ActivationStrategy) {\r\n    ActivationStrategy[\"InvokeLifecycle\"] = \"invoke-lifecycle\";\r\n    ActivationStrategy[\"Replace\"] = \"replace\";\r\n})(ActivationStrategy || (ActivationStrategy = {}));\r\nvar Compose = (function () {\r\n    function Compose(element, container, compositionEngine, viewSlot, viewResources, taskQueue) {\r\n        this.activationStrategy = ActivationStrategy.InvokeLifecycle;\r\n        this.element = element;\r\n        this.container = container;\r\n        this.compositionEngine = compositionEngine;\r\n        this.viewSlot = viewSlot;\r\n        this.viewResources = viewResources;\r\n        this.taskQueue = taskQueue;\r\n        this.currentController = null;\r\n        this.currentViewModel = null;\r\n        this.changes = Object.create(null);\r\n    }\r\n    Compose.inject = function () {\r\n        return [DOM.Element, Container, CompositionEngine, ViewSlot, ViewResources, TaskQueue];\r\n    };\r\n    Compose.prototype.created = function (owningView) {\r\n        this.owningView = owningView;\r\n    };\r\n    Compose.prototype.bind = function (bindingContext, overrideContext) {\r\n        this.bindingContext = bindingContext;\r\n        this.overrideContext = overrideContext;\r\n        var changes = this.changes;\r\n        changes.view = this.view;\r\n        changes.viewModel = this.viewModel;\r\n        changes.model = this.model;\r\n        if (!this.pendingTask) {\r\n            processChanges(this);\r\n        }\r\n    };\r\n    Compose.prototype.unbind = function () {\r\n        this.changes = Object.create(null);\r\n        this.bindingContext = null;\r\n        this.overrideContext = null;\r\n        var returnToCache = true;\r\n        var skipAnimation = true;\r\n        this.viewSlot.removeAll(returnToCache, skipAnimation);\r\n    };\r\n    Compose.prototype.modelChanged = function (newValue, oldValue) {\r\n        this.changes.model = newValue;\r\n        requestUpdate(this);\r\n    };\r\n    Compose.prototype.viewChanged = function (newValue, oldValue) {\r\n        this.changes.view = newValue;\r\n        requestUpdate(this);\r\n    };\r\n    Compose.prototype.viewModelChanged = function (newValue, oldValue) {\r\n        this.changes.viewModel = newValue;\r\n        requestUpdate(this);\r\n    };\r\n    __decorate([\r\n        bindable\r\n    ], Compose.prototype, \"model\", void 0);\r\n    __decorate([\r\n        bindable\r\n    ], Compose.prototype, \"view\", void 0);\r\n    __decorate([\r\n        bindable\r\n    ], Compose.prototype, \"viewModel\", void 0);\r\n    __decorate([\r\n        bindable\r\n    ], Compose.prototype, \"activationStrategy\", void 0);\r\n    __decorate([\r\n        bindable\r\n    ], Compose.prototype, \"swapOrder\", void 0);\r\n    Compose = __decorate([\r\n        noView,\r\n        customElement('compose')\r\n    ], Compose);\r\n    return Compose;\r\n}());\r\nfunction isEmpty(obj) {\r\n    for (var _ in obj) {\r\n        return false;\r\n    }\r\n    return true;\r\n}\r\nfunction tryActivateViewModel(vm, model) {\r\n    if (vm && typeof vm.activate === 'function') {\r\n        return Promise.resolve(vm.activate(model));\r\n    }\r\n}\r\nfunction createInstruction(composer, instruction) {\r\n    return Object.assign(instruction, {\r\n        bindingContext: composer.bindingContext,\r\n        overrideContext: composer.overrideContext,\r\n        owningView: composer.owningView,\r\n        container: composer.container,\r\n        viewSlot: composer.viewSlot,\r\n        viewResources: composer.viewResources,\r\n        currentController: composer.currentController,\r\n        host: composer.element,\r\n        swapOrder: composer.swapOrder\r\n    });\r\n}\r\nfunction processChanges(composer) {\r\n    var changes = composer.changes;\r\n    composer.changes = Object.create(null);\r\n    var activationStrategy = determineActivationStrategy(composer);\r\n    if (needsReInitialization(activationStrategy, changes)) {\r\n        var currentViewModel = activationStrategy === ActivationStrategy.Replace ? null : composer.currentViewModel;\r\n        var instruction = {\r\n            view: composer.view,\r\n            viewModel: currentViewModel || composer.viewModel,\r\n            model: composer.model\r\n        };\r\n        instruction = Object.assign(instruction, changes);\r\n        instruction = createInstruction(composer, instruction);\r\n        composer.pendingTask = composer.compositionEngine.compose(instruction).then(function (controller) {\r\n            composer.currentController = controller;\r\n            composer.currentViewModel = controller ? controller.viewModel : null;\r\n        });\r\n    }\r\n    else {\r\n        composer.pendingTask = tryActivateViewModel(composer.currentViewModel, changes.model);\r\n        if (!composer.pendingTask) {\r\n            return;\r\n        }\r\n    }\r\n    composer.pendingTask = composer.pendingTask\r\n        .then(function () {\r\n        completeCompositionTask(composer);\r\n    }, function (reason) {\r\n        completeCompositionTask(composer);\r\n        throw reason;\r\n    });\r\n}\r\nfunction completeCompositionTask(composer) {\r\n    composer.pendingTask = null;\r\n    if (!isEmpty(composer.changes)) {\r\n        processChanges(composer);\r\n    }\r\n}\r\nfunction requestUpdate(composer) {\r\n    if (composer.pendingTask || composer.updateRequested) {\r\n        return;\r\n    }\r\n    composer.updateRequested = true;\r\n    composer.taskQueue.queueMicroTask(function () {\r\n        composer.updateRequested = false;\r\n        processChanges(composer);\r\n    });\r\n}\r\nfunction determineActivationStrategy(composer) {\r\n    var activationStrategy = composer.activationStrategy;\r\n    var vm = composer.currentViewModel;\r\n    if (vm && typeof vm.determineActivationStrategy === 'function') {\r\n        activationStrategy = vm.determineActivationStrategy();\r\n    }\r\n    return activationStrategy;\r\n}\r\nfunction needsReInitialization(activationStrategy, changes) {\r\n    return 'view' in changes\r\n        || 'viewModel' in changes\r\n        || activationStrategy === ActivationStrategy.Replace;\r\n}\n\nvar IfCore = (function () {\r\n    function IfCore(viewFactory, viewSlot) {\r\n        this.viewFactory = viewFactory;\r\n        this.viewSlot = viewSlot;\r\n        this.view = null;\r\n        this.bindingContext = null;\r\n        this.overrideContext = null;\r\n        this.showing = false;\r\n        this.cache = true;\r\n    }\r\n    IfCore.prototype.bind = function (bindingContext, overrideContext) {\r\n        this.bindingContext = bindingContext;\r\n        this.overrideContext = overrideContext;\r\n    };\r\n    IfCore.prototype.unbind = function () {\r\n        if (this.view === null) {\r\n            return;\r\n        }\r\n        this.view.unbind();\r\n        if (!this.viewFactory.isCaching) {\r\n            return;\r\n        }\r\n        if (this.showing) {\r\n            this.showing = false;\r\n            this.viewSlot.remove(this.view, true, true);\r\n        }\r\n        else {\r\n            this.view.returnToCache();\r\n        }\r\n        this.view = null;\r\n    };\r\n    IfCore.prototype._show = function () {\r\n        if (this.showing) {\r\n            if (!this.view.isBound) {\r\n                this.view.bind(this.bindingContext, this.overrideContext);\r\n            }\r\n            return;\r\n        }\r\n        if (this.view === null) {\r\n            this.view = this.viewFactory.create();\r\n        }\r\n        if (!this.view.isBound) {\r\n            this.view.bind(this.bindingContext, this.overrideContext);\r\n        }\r\n        this.showing = true;\r\n        return this.viewSlot.add(this.view);\r\n    };\r\n    IfCore.prototype._hide = function () {\r\n        var _this = this;\r\n        if (!this.showing) {\r\n            return;\r\n        }\r\n        this.showing = false;\r\n        var removed = this.viewSlot.remove(this.view);\r\n        if (removed instanceof Promise) {\r\n            return removed.then(function () {\r\n                _this._unbindView();\r\n            });\r\n        }\r\n        this._unbindView();\r\n    };\r\n    IfCore.prototype._unbindView = function () {\r\n        var cache = this.cache === 'false' ? false : !!this.cache;\r\n        this.view.unbind();\r\n        if (!cache) {\r\n            this.view = null;\r\n        }\r\n    };\r\n    return IfCore;\r\n}());\n\nvar If = (function (_super) {\r\n    __extends(If, _super);\r\n    function If() {\r\n        var _this = _super !== null && _super.apply(this, arguments) || this;\r\n        _this.cache = true;\r\n        return _this;\r\n    }\r\n    If.prototype.bind = function (bindingContext, overrideContext) {\r\n        _super.prototype.bind.call(this, bindingContext, overrideContext);\r\n        if (this.condition) {\r\n            this._show();\r\n        }\r\n        else {\r\n            this._hide();\r\n        }\r\n    };\r\n    If.prototype.conditionChanged = function (newValue) {\r\n        this._update(newValue);\r\n    };\r\n    If.prototype._update = function (show) {\r\n        var _this = this;\r\n        if (this.animating) {\r\n            return;\r\n        }\r\n        var promise;\r\n        if (this.elseVm) {\r\n            promise = show ? this._swap(this.elseVm, this) : this._swap(this, this.elseVm);\r\n        }\r\n        else {\r\n            promise = show ? this._show() : this._hide();\r\n        }\r\n        if (promise) {\r\n            this.animating = true;\r\n            promise.then(function () {\r\n                _this.animating = false;\r\n                if (_this.condition !== _this.showing) {\r\n                    _this._update(_this.condition);\r\n                }\r\n            });\r\n        }\r\n    };\r\n    If.prototype._swap = function (remove, add) {\r\n        switch (this.swapOrder) {\r\n            case 'before':\r\n                return Promise.resolve(add._show()).then(function () { return remove._hide(); });\r\n            case 'with':\r\n                return Promise.all([remove._hide(), add._show()]);\r\n            default:\r\n                var promise = remove._hide();\r\n                return promise ? promise.then(function () { return add._show(); }) : add._show();\r\n        }\r\n    };\r\n    __decorate([\r\n        bindable({ primaryProperty: true })\r\n    ], If.prototype, \"condition\", void 0);\r\n    __decorate([\r\n        bindable\r\n    ], If.prototype, \"swapOrder\", void 0);\r\n    __decorate([\r\n        bindable\r\n    ], If.prototype, \"cache\", void 0);\r\n    If = __decorate([\r\n        customAttribute('if'),\r\n        templateController,\r\n        inject(BoundViewFactory, ViewSlot)\r\n    ], If);\r\n    return If;\r\n}(IfCore));\n\nvar Else = (function (_super) {\r\n    __extends(Else, _super);\r\n    function Else(viewFactory, viewSlot) {\r\n        var _this = _super.call(this, viewFactory, viewSlot) || this;\r\n        _this._registerInIf();\r\n        return _this;\r\n    }\r\n    Else.prototype.bind = function (bindingContext, overrideContext) {\r\n        _super.prototype.bind.call(this, bindingContext, overrideContext);\r\n        if (this.ifVm.condition) {\r\n            this._hide();\r\n        }\r\n        else {\r\n            this._show();\r\n        }\r\n    };\r\n    Else.prototype._registerInIf = function () {\r\n        var previous = this.viewSlot.anchor.previousSibling;\r\n        while (previous && !previous.au) {\r\n            previous = previous.previousSibling;\r\n        }\r\n        if (!previous || !previous.au.if) {\r\n            throw new Error(\"Can't find matching If for Else custom attribute.\");\r\n        }\r\n        this.ifVm = previous.au.if.viewModel;\r\n        this.ifVm.elseVm = this;\r\n    };\r\n    Else = __decorate([\r\n        customAttribute('else'),\r\n        templateController,\r\n        inject(BoundViewFactory, ViewSlot)\r\n    ], Else);\r\n    return Else;\r\n}(IfCore));\n\nvar With = (function () {\r\n    function With(viewFactory, viewSlot) {\r\n        this.viewFactory = viewFactory;\r\n        this.viewSlot = viewSlot;\r\n        this.parentOverrideContext = null;\r\n        this.view = null;\r\n    }\r\n    With.prototype.bind = function (bindingContext, overrideContext) {\r\n        this.parentOverrideContext = overrideContext;\r\n        this.valueChanged(this.value);\r\n    };\r\n    With.prototype.valueChanged = function (newValue) {\r\n        var overrideContext = createOverrideContext(newValue, this.parentOverrideContext);\r\n        var view = this.view;\r\n        if (!view) {\r\n            view = this.view = this.viewFactory.create();\r\n            view.bind(newValue, overrideContext);\r\n            this.viewSlot.add(view);\r\n        }\r\n        else {\r\n            view.bind(newValue, overrideContext);\r\n        }\r\n    };\r\n    With.prototype.unbind = function () {\r\n        var view = this.view;\r\n        this.parentOverrideContext = null;\r\n        if (view) {\r\n            view.unbind();\r\n        }\r\n    };\r\n    With = __decorate([\r\n        customAttribute('with'),\r\n        templateController,\r\n        inject(BoundViewFactory, ViewSlot)\r\n    ], With);\r\n    return With;\r\n}());\n\nvar oneTime = bindingMode.oneTime;\r\nfunction updateOverrideContexts(views, startIndex) {\r\n    var length = views.length;\r\n    if (startIndex > 0) {\r\n        startIndex = startIndex - 1;\r\n    }\r\n    for (; startIndex < length; ++startIndex) {\r\n        updateOverrideContext(views[startIndex].overrideContext, startIndex, length);\r\n    }\r\n}\r\nfunction createFullOverrideContext(repeat, data, index, length, key) {\r\n    var bindingContext = {};\r\n    var overrideContext = createOverrideContext(bindingContext, repeat.scope.overrideContext);\r\n    if (typeof key !== 'undefined') {\r\n        bindingContext[repeat.key] = key;\r\n        bindingContext[repeat.value] = data;\r\n    }\r\n    else {\r\n        bindingContext[repeat.local] = data;\r\n    }\r\n    updateOverrideContext(overrideContext, index, length);\r\n    return overrideContext;\r\n}\r\nfunction updateOverrideContext(overrideContext, index, length) {\r\n    var first = (index === 0);\r\n    var last = (index === length - 1);\r\n    var even = index % 2 === 0;\r\n    overrideContext.$index = index;\r\n    overrideContext.$first = first;\r\n    overrideContext.$last = last;\r\n    overrideContext.$middle = !(first || last);\r\n    overrideContext.$odd = !even;\r\n    overrideContext.$even = even;\r\n}\r\nfunction getItemsSourceExpression(instruction, attrName) {\r\n    return instruction.behaviorInstructions\r\n        .filter(function (bi) { return bi.originalAttrName === attrName; })[0]\r\n        .attributes\r\n        .items\r\n        .sourceExpression;\r\n}\r\nfunction unwrapExpression(expression) {\r\n    var unwrapped = false;\r\n    while (expression instanceof BindingBehavior) {\r\n        expression = expression.expression;\r\n    }\r\n    while (expression instanceof ValueConverter) {\r\n        expression = expression.expression;\r\n        unwrapped = true;\r\n    }\r\n    return unwrapped ? expression : null;\r\n}\r\nfunction isOneTime(expression) {\r\n    while (expression instanceof BindingBehavior) {\r\n        if (expression.name === 'oneTime') {\r\n            return true;\r\n        }\r\n        expression = expression.expression;\r\n    }\r\n    return false;\r\n}\r\nfunction updateOneTimeBinding(binding) {\r\n    if (binding.call && binding.mode === oneTime) {\r\n        binding.call(sourceContext);\r\n    }\r\n    else if (binding.updateOneTimeBindings) {\r\n        binding.updateOneTimeBindings();\r\n    }\r\n}\r\nfunction indexOf(array, item, matcher, startIndex) {\r\n    if (!matcher) {\r\n        return array.indexOf(item);\r\n    }\r\n    var length = array.length;\r\n    for (var index = startIndex || 0; index < length; index++) {\r\n        if (matcher(array[index], item)) {\r\n            return index;\r\n        }\r\n    }\r\n    return -1;\r\n}\n\nvar ArrayRepeatStrategy = (function () {\r\n    function ArrayRepeatStrategy() {\r\n    }\r\n    ArrayRepeatStrategy.prototype.getCollectionObserver = function (observerLocator, items) {\r\n        return observerLocator.getArrayObserver(items);\r\n    };\r\n    ArrayRepeatStrategy.prototype.instanceChanged = function (repeat, items) {\r\n        var _this = this;\r\n        var $repeat = repeat;\r\n        var itemsLength = items.length;\r\n        if (!items || itemsLength === 0) {\r\n            $repeat.removeAllViews(true, !$repeat.viewsRequireLifecycle);\r\n            return;\r\n        }\r\n        var children = $repeat.views();\r\n        var viewsLength = children.length;\r\n        if (viewsLength === 0) {\r\n            this._standardProcessInstanceChanged($repeat, items);\r\n            return;\r\n        }\r\n        if ($repeat.viewsRequireLifecycle) {\r\n            var childrenSnapshot = children.slice(0);\r\n            var itemNameInBindingContext = $repeat.local;\r\n            var matcher_1 = $repeat.matcher();\r\n            var itemsPreviouslyInViews_1 = [];\r\n            var viewsToRemove = [];\r\n            for (var index = 0; index < viewsLength; index++) {\r\n                var view = childrenSnapshot[index];\r\n                var oldItem = view.bindingContext[itemNameInBindingContext];\r\n                if (indexOf(items, oldItem, matcher_1) === -1) {\r\n                    viewsToRemove.push(view);\r\n                }\r\n                else {\r\n                    itemsPreviouslyInViews_1.push(oldItem);\r\n                }\r\n            }\r\n            var updateViews = void 0;\r\n            var removePromise = void 0;\r\n            if (itemsPreviouslyInViews_1.length > 0) {\r\n                removePromise = $repeat.removeViews(viewsToRemove, true, !$repeat.viewsRequireLifecycle);\r\n                updateViews = function () {\r\n                    for (var index = 0; index < itemsLength; index++) {\r\n                        var item = items[index];\r\n                        var indexOfView = indexOf(itemsPreviouslyInViews_1, item, matcher_1, index);\r\n                        var view = void 0;\r\n                        if (indexOfView === -1) {\r\n                            var overrideContext = createFullOverrideContext($repeat, items[index], index, itemsLength);\r\n                            $repeat.insertView(index, overrideContext.bindingContext, overrideContext);\r\n                            itemsPreviouslyInViews_1.splice(index, 0, undefined);\r\n                        }\r\n                        else if (indexOfView === index) {\r\n                            view = children[indexOfView];\r\n                            itemsPreviouslyInViews_1[indexOfView] = undefined;\r\n                        }\r\n                        else {\r\n                            view = children[indexOfView];\r\n                            $repeat.moveView(indexOfView, index);\r\n                            itemsPreviouslyInViews_1.splice(indexOfView, 1);\r\n                            itemsPreviouslyInViews_1.splice(index, 0, undefined);\r\n                        }\r\n                        if (view) {\r\n                            updateOverrideContext(view.overrideContext, index, itemsLength);\r\n                        }\r\n                    }\r\n                    _this._inPlaceProcessItems($repeat, items);\r\n                };\r\n            }\r\n            else {\r\n                removePromise = $repeat.removeAllViews(true, !$repeat.viewsRequireLifecycle);\r\n                updateViews = function () { return _this._standardProcessInstanceChanged($repeat, items); };\r\n            }\r\n            if (removePromise instanceof Promise) {\r\n                removePromise.then(updateViews);\r\n            }\r\n            else {\r\n                updateViews();\r\n            }\r\n        }\r\n        else {\r\n            this._inPlaceProcessItems($repeat, items);\r\n        }\r\n    };\r\n    ArrayRepeatStrategy.prototype._standardProcessInstanceChanged = function (repeat, items) {\r\n        for (var i = 0, ii = items.length; i < ii; i++) {\r\n            var overrideContext = createFullOverrideContext(repeat, items[i], i, ii);\r\n            repeat.addView(overrideContext.bindingContext, overrideContext);\r\n        }\r\n    };\r\n    ArrayRepeatStrategy.prototype._inPlaceProcessItems = function (repeat, items) {\r\n        var itemsLength = items.length;\r\n        var viewsLength = repeat.viewCount();\r\n        while (viewsLength > itemsLength) {\r\n            viewsLength--;\r\n            repeat.removeView(viewsLength, true, !repeat.viewsRequireLifecycle);\r\n        }\r\n        var local = repeat.local;\r\n        for (var i = 0; i < viewsLength; i++) {\r\n            var view = repeat.view(i);\r\n            var last = i === itemsLength - 1;\r\n            var middle = i !== 0 && !last;\r\n            var bindingContext = view.bindingContext;\r\n            var overrideContext = view.overrideContext;\r\n            if (bindingContext[local] === items[i]\r\n                && overrideContext.$middle === middle\r\n                && overrideContext.$last === last) {\r\n                continue;\r\n            }\r\n            bindingContext[local] = items[i];\r\n            overrideContext.$middle = middle;\r\n            overrideContext.$last = last;\r\n            repeat.updateBindings(view);\r\n        }\r\n        for (var i = viewsLength; i < itemsLength; i++) {\r\n            var overrideContext = createFullOverrideContext(repeat, items[i], i, itemsLength);\r\n            repeat.addView(overrideContext.bindingContext, overrideContext);\r\n        }\r\n    };\r\n    ArrayRepeatStrategy.prototype.instanceMutated = function (repeat, array, splices) {\r\n        var _this = this;\r\n        if (repeat.__queuedSplices) {\r\n            for (var i = 0, ii = splices.length; i < ii; ++i) {\r\n                var _a = splices[i], index = _a.index, removed = _a.removed, addedCount = _a.addedCount;\r\n                mergeSplice(repeat.__queuedSplices, index, removed, addedCount);\r\n            }\r\n            repeat.__array = array.slice(0);\r\n            return;\r\n        }\r\n        var maybePromise = this._runSplices(repeat, array.slice(0), splices);\r\n        if (maybePromise instanceof Promise) {\r\n            var queuedSplices_1 = repeat.__queuedSplices = [];\r\n            var runQueuedSplices_1 = function () {\r\n                if (!queuedSplices_1.length) {\r\n                    repeat.__queuedSplices = undefined;\r\n                    repeat.__array = undefined;\r\n                    return;\r\n                }\r\n                var nextPromise = _this._runSplices(repeat, repeat.__array, queuedSplices_1) || Promise.resolve();\r\n                queuedSplices_1 = repeat.__queuedSplices = [];\r\n                nextPromise.then(runQueuedSplices_1);\r\n            };\r\n            maybePromise.then(runQueuedSplices_1);\r\n        }\r\n    };\r\n    ArrayRepeatStrategy.prototype._runSplices = function (repeat, array, splices) {\r\n        var _this = this;\r\n        var removeDelta = 0;\r\n        var rmPromises = [];\r\n        for (var i = 0, ii = splices.length; i < ii; ++i) {\r\n            var splice = splices[i];\r\n            var removed = splice.removed;\r\n            for (var j = 0, jj = removed.length; j < jj; ++j) {\r\n                var viewOrPromise = repeat.removeView(splice.index + removeDelta + rmPromises.length, true);\r\n                if (viewOrPromise instanceof Promise) {\r\n                    rmPromises.push(viewOrPromise);\r\n                }\r\n            }\r\n            removeDelta -= splice.addedCount;\r\n        }\r\n        if (rmPromises.length > 0) {\r\n            return Promise.all(rmPromises).then(function () {\r\n                var spliceIndexLow = _this._handleAddedSplices(repeat, array, splices);\r\n                updateOverrideContexts(repeat.views(), spliceIndexLow);\r\n            });\r\n        }\r\n        var spliceIndexLow = this._handleAddedSplices(repeat, array, splices);\r\n        updateOverrideContexts(repeat.views(), spliceIndexLow);\r\n        return undefined;\r\n    };\r\n    ArrayRepeatStrategy.prototype._handleAddedSplices = function (repeat, array, splices) {\r\n        var spliceIndex;\r\n        var spliceIndexLow;\r\n        var arrayLength = array.length;\r\n        for (var i = 0, ii = splices.length; i < ii; ++i) {\r\n            var splice = splices[i];\r\n            var addIndex = spliceIndex = splice.index;\r\n            var end = splice.index + splice.addedCount;\r\n            if (typeof spliceIndexLow === 'undefined' || spliceIndexLow === null || spliceIndexLow > splice.index) {\r\n                spliceIndexLow = spliceIndex;\r\n            }\r\n            for (; addIndex < end; ++addIndex) {\r\n                var overrideContext = createFullOverrideContext(repeat, array[addIndex], addIndex, arrayLength);\r\n                repeat.insertView(addIndex, overrideContext.bindingContext, overrideContext);\r\n            }\r\n        }\r\n        return spliceIndexLow;\r\n    };\r\n    return ArrayRepeatStrategy;\r\n}());\n\nvar MapRepeatStrategy = (function () {\r\n    function MapRepeatStrategy() {\r\n    }\r\n    MapRepeatStrategy.prototype.getCollectionObserver = function (observerLocator, items) {\r\n        return observerLocator.getMapObserver(items);\r\n    };\r\n    MapRepeatStrategy.prototype.instanceChanged = function (repeat, items) {\r\n        var _this = this;\r\n        var removePromise = repeat.removeAllViews(true, !repeat.viewsRequireLifecycle);\r\n        if (removePromise instanceof Promise) {\r\n            removePromise.then(function () { return _this._standardProcessItems(repeat, items); });\r\n            return;\r\n        }\r\n        this._standardProcessItems(repeat, items);\r\n    };\r\n    MapRepeatStrategy.prototype._standardProcessItems = function (repeat, items) {\r\n        var index = 0;\r\n        var overrideContext;\r\n        items.forEach(function (value, key) {\r\n            overrideContext = createFullOverrideContext(repeat, value, index, items.size, key);\r\n            repeat.addView(overrideContext.bindingContext, overrideContext);\r\n            ++index;\r\n        });\r\n    };\r\n    MapRepeatStrategy.prototype.instanceMutated = function (repeat, map, records) {\r\n        var key;\r\n        var i;\r\n        var ii;\r\n        var overrideContext;\r\n        var removeIndex;\r\n        var addIndex;\r\n        var record;\r\n        var rmPromises = [];\r\n        var viewOrPromise;\r\n        for (i = 0, ii = records.length; i < ii; ++i) {\r\n            record = records[i];\r\n            key = record.key;\r\n            switch (record.type) {\r\n                case 'update':\r\n                    removeIndex = this._getViewIndexByKey(repeat, key);\r\n                    viewOrPromise = repeat.removeView(removeIndex, true, !repeat.viewsRequireLifecycle);\r\n                    if (viewOrPromise instanceof Promise) {\r\n                        rmPromises.push(viewOrPromise);\r\n                    }\r\n                    overrideContext = createFullOverrideContext(repeat, map.get(key), removeIndex, map.size, key);\r\n                    repeat.insertView(removeIndex, overrideContext.bindingContext, overrideContext);\r\n                    break;\r\n                case 'add':\r\n                    addIndex = repeat.viewCount() <= map.size - 1 ? repeat.viewCount() : map.size - 1;\r\n                    overrideContext = createFullOverrideContext(repeat, map.get(key), addIndex, map.size, key);\r\n                    repeat.insertView(map.size - 1, overrideContext.bindingContext, overrideContext);\r\n                    break;\r\n                case 'delete':\r\n                    if (record.oldValue === undefined) {\r\n                        return;\r\n                    }\r\n                    removeIndex = this._getViewIndexByKey(repeat, key);\r\n                    viewOrPromise = repeat.removeView(removeIndex, true, !repeat.viewsRequireLifecycle);\r\n                    if (viewOrPromise instanceof Promise) {\r\n                        rmPromises.push(viewOrPromise);\r\n                    }\r\n                    break;\r\n                case 'clear':\r\n                    repeat.removeAllViews(true, !repeat.viewsRequireLifecycle);\r\n                    break;\r\n                default:\r\n                    continue;\r\n            }\r\n        }\r\n        if (rmPromises.length > 0) {\r\n            Promise.all(rmPromises).then(function () {\r\n                updateOverrideContexts(repeat.views(), 0);\r\n            });\r\n        }\r\n        else {\r\n            updateOverrideContexts(repeat.views(), 0);\r\n        }\r\n    };\r\n    MapRepeatStrategy.prototype._getViewIndexByKey = function (repeat, key) {\r\n        var i;\r\n        var ii;\r\n        var child;\r\n        for (i = 0, ii = repeat.viewCount(); i < ii; ++i) {\r\n            child = repeat.view(i);\r\n            if (child.bindingContext[repeat.key] === key) {\r\n                return i;\r\n            }\r\n        }\r\n        return undefined;\r\n    };\r\n    return MapRepeatStrategy;\r\n}());\n\nvar NullRepeatStrategy = (function () {\r\n    function NullRepeatStrategy() {\r\n    }\r\n    NullRepeatStrategy.prototype.instanceChanged = function (repeat, items) {\r\n        repeat.removeAllViews(true);\r\n    };\r\n    NullRepeatStrategy.prototype.getCollectionObserver = function (observerLocator, items) {\r\n    };\r\n    return NullRepeatStrategy;\r\n}());\n\nvar NumberRepeatStrategy = (function () {\r\n    function NumberRepeatStrategy() {\r\n    }\r\n    NumberRepeatStrategy.prototype.getCollectionObserver = function () {\r\n        return null;\r\n    };\r\n    NumberRepeatStrategy.prototype.instanceChanged = function (repeat, value) {\r\n        var _this = this;\r\n        var removePromise = repeat.removeAllViews(true, !repeat.viewsRequireLifecycle);\r\n        if (removePromise instanceof Promise) {\r\n            removePromise.then(function () { return _this._standardProcessItems(repeat, value); });\r\n            return;\r\n        }\r\n        this._standardProcessItems(repeat, value);\r\n    };\r\n    NumberRepeatStrategy.prototype._standardProcessItems = function (repeat, value) {\r\n        var childrenLength = repeat.viewCount();\r\n        var i;\r\n        var ii;\r\n        var overrideContext;\r\n        var viewsToRemove;\r\n        value = Math.floor(value);\r\n        viewsToRemove = childrenLength - value;\r\n        if (viewsToRemove > 0) {\r\n            if (viewsToRemove > childrenLength) {\r\n                viewsToRemove = childrenLength;\r\n            }\r\n            for (i = 0, ii = viewsToRemove; i < ii; ++i) {\r\n                repeat.removeView(childrenLength - (i + 1), true, !repeat.viewsRequireLifecycle);\r\n            }\r\n            return;\r\n        }\r\n        for (i = childrenLength, ii = value; i < ii; ++i) {\r\n            overrideContext = createFullOverrideContext(repeat, i, i, ii);\r\n            repeat.addView(overrideContext.bindingContext, overrideContext);\r\n        }\r\n        updateOverrideContexts(repeat.views(), 0);\r\n    };\r\n    return NumberRepeatStrategy;\r\n}());\n\nvar SetRepeatStrategy = (function () {\r\n    function SetRepeatStrategy() {\r\n    }\r\n    SetRepeatStrategy.prototype.getCollectionObserver = function (observerLocator, items) {\r\n        return observerLocator.getSetObserver(items);\r\n    };\r\n    SetRepeatStrategy.prototype.instanceChanged = function (repeat, items) {\r\n        var _this = this;\r\n        var removePromise = repeat.removeAllViews(true, !repeat.viewsRequireLifecycle);\r\n        if (removePromise instanceof Promise) {\r\n            removePromise.then(function () { return _this._standardProcessItems(repeat, items); });\r\n            return;\r\n        }\r\n        this._standardProcessItems(repeat, items);\r\n    };\r\n    SetRepeatStrategy.prototype._standardProcessItems = function (repeat, items) {\r\n        var index = 0;\r\n        var overrideContext;\r\n        items.forEach(function (value) {\r\n            overrideContext = createFullOverrideContext(repeat, value, index, items.size);\r\n            repeat.addView(overrideContext.bindingContext, overrideContext);\r\n            ++index;\r\n        });\r\n    };\r\n    SetRepeatStrategy.prototype.instanceMutated = function (repeat, set, records) {\r\n        var value;\r\n        var i;\r\n        var ii;\r\n        var overrideContext;\r\n        var removeIndex;\r\n        var record;\r\n        var rmPromises = [];\r\n        var viewOrPromise;\r\n        for (i = 0, ii = records.length; i < ii; ++i) {\r\n            record = records[i];\r\n            value = record.value;\r\n            switch (record.type) {\r\n                case 'add':\r\n                    var size = Math.max(set.size - 1, 0);\r\n                    overrideContext = createFullOverrideContext(repeat, value, size, set.size);\r\n                    repeat.insertView(size, overrideContext.bindingContext, overrideContext);\r\n                    break;\r\n                case 'delete':\r\n                    removeIndex = this._getViewIndexByValue(repeat, value);\r\n                    viewOrPromise = repeat.removeView(removeIndex, true, !repeat.viewsRequireLifecycle);\r\n                    if (viewOrPromise instanceof Promise) {\r\n                        rmPromises.push(viewOrPromise);\r\n                    }\r\n                    break;\r\n                case 'clear':\r\n                    repeat.removeAllViews(true, !repeat.viewsRequireLifecycle);\r\n                    break;\r\n                default:\r\n                    continue;\r\n            }\r\n        }\r\n        if (rmPromises.length > 0) {\r\n            Promise.all(rmPromises).then(function () {\r\n                updateOverrideContexts(repeat.views(), 0);\r\n            });\r\n        }\r\n        else {\r\n            updateOverrideContexts(repeat.views(), 0);\r\n        }\r\n    };\r\n    SetRepeatStrategy.prototype._getViewIndexByValue = function (repeat, value) {\r\n        var i;\r\n        var ii;\r\n        var child;\r\n        for (i = 0, ii = repeat.viewCount(); i < ii; ++i) {\r\n            child = repeat.view(i);\r\n            if (child.bindingContext[repeat.local] === value) {\r\n                return i;\r\n            }\r\n        }\r\n        return undefined;\r\n    };\r\n    return SetRepeatStrategy;\r\n}());\n\nvar RepeatStrategyLocator = (function () {\r\n    function RepeatStrategyLocator() {\r\n        this.matchers = [];\r\n        this.strategies = [];\r\n        this.addStrategy(function (items) { return items === null || items === undefined; }, new NullRepeatStrategy());\r\n        this.addStrategy(function (items) { return items instanceof Array; }, new ArrayRepeatStrategy());\r\n        this.addStrategy(function (items) { return items instanceof Map; }, new MapRepeatStrategy());\r\n        this.addStrategy(function (items) { return items instanceof Set; }, new SetRepeatStrategy());\r\n        this.addStrategy(function (items) { return typeof items === 'number'; }, new NumberRepeatStrategy());\r\n    }\r\n    RepeatStrategyLocator.prototype.addStrategy = function (matcher, strategy) {\r\n        this.matchers.push(matcher);\r\n        this.strategies.push(strategy);\r\n    };\r\n    RepeatStrategyLocator.prototype.getStrategy = function (items) {\r\n        var matchers = this.matchers;\r\n        for (var i = 0, ii = matchers.length; i < ii; ++i) {\r\n            if (matchers[i](items)) {\r\n                return this.strategies[i];\r\n            }\r\n        }\r\n        return null;\r\n    };\r\n    return RepeatStrategyLocator;\r\n}());\n\nvar lifecycleOptionalBehaviors = ['focus', 'if', 'else', 'repeat', 'show', 'hide', 'with'];\r\nfunction behaviorRequiresLifecycle(instruction) {\r\n    var t = instruction.type;\r\n    var name = t.elementName !== null ? t.elementName : t.attributeName;\r\n    return lifecycleOptionalBehaviors.indexOf(name) === -1 && (t.handlesAttached || t.handlesBind || t.handlesCreated || t.handlesDetached || t.handlesUnbind)\r\n        || t.viewFactory && viewsRequireLifecycle(t.viewFactory)\r\n        || instruction.viewFactory && viewsRequireLifecycle(instruction.viewFactory);\r\n}\r\nfunction targetRequiresLifecycle(instruction) {\r\n    var behaviors = instruction.behaviorInstructions;\r\n    if (behaviors) {\r\n        var i = behaviors.length;\r\n        while (i--) {\r\n            if (behaviorRequiresLifecycle(behaviors[i])) {\r\n                return true;\r\n            }\r\n        }\r\n    }\r\n    return instruction.viewFactory && viewsRequireLifecycle(instruction.viewFactory);\r\n}\r\nfunction viewsRequireLifecycle(viewFactory) {\r\n    if ('_viewsRequireLifecycle' in viewFactory) {\r\n        return viewFactory._viewsRequireLifecycle;\r\n    }\r\n    viewFactory._viewsRequireLifecycle = false;\r\n    if (viewFactory.viewFactory) {\r\n        viewFactory._viewsRequireLifecycle = viewsRequireLifecycle(viewFactory.viewFactory);\r\n        return viewFactory._viewsRequireLifecycle;\r\n    }\r\n    if (viewFactory.template.querySelector('.au-animate')) {\r\n        viewFactory._viewsRequireLifecycle = true;\r\n        return true;\r\n    }\r\n    for (var id in viewFactory.instructions) {\r\n        if (targetRequiresLifecycle(viewFactory.instructions[id])) {\r\n            viewFactory._viewsRequireLifecycle = true;\r\n            return true;\r\n        }\r\n    }\r\n    viewFactory._viewsRequireLifecycle = false;\r\n    return false;\r\n}\n\nvar AbstractRepeater = (function () {\r\n    function AbstractRepeater(options) {\r\n        Object.assign(this, {\r\n            local: 'items',\r\n            viewsRequireLifecycle: true\r\n        }, options);\r\n    }\r\n    AbstractRepeater.prototype.viewCount = function () {\r\n        throw new Error('subclass must implement `viewCount`');\r\n    };\r\n    AbstractRepeater.prototype.views = function () {\r\n        throw new Error('subclass must implement `views`');\r\n    };\r\n    AbstractRepeater.prototype.view = function (index) {\r\n        throw new Error('subclass must implement `view`');\r\n    };\r\n    AbstractRepeater.prototype.matcher = function () {\r\n        throw new Error('subclass must implement `matcher`');\r\n    };\r\n    AbstractRepeater.prototype.addView = function (bindingContext, overrideContext) {\r\n        throw new Error('subclass must implement `addView`');\r\n    };\r\n    AbstractRepeater.prototype.insertView = function (index, bindingContext, overrideContext) {\r\n        throw new Error('subclass must implement `insertView`');\r\n    };\r\n    AbstractRepeater.prototype.moveView = function (sourceIndex, targetIndex) {\r\n        throw new Error('subclass must implement `moveView`');\r\n    };\r\n    AbstractRepeater.prototype.removeAllViews = function (returnToCache, skipAnimation) {\r\n        throw new Error('subclass must implement `removeAllViews`');\r\n    };\r\n    AbstractRepeater.prototype.removeViews = function (viewsToRemove, returnToCache, skipAnimation) {\r\n        throw new Error('subclass must implement `removeView`');\r\n    };\r\n    AbstractRepeater.prototype.removeView = function (index, returnToCache, skipAnimation) {\r\n        throw new Error('subclass must implement `removeView`');\r\n    };\r\n    AbstractRepeater.prototype.updateBindings = function (view) {\r\n        throw new Error('subclass must implement `updateBindings`');\r\n    };\r\n    return AbstractRepeater;\r\n}());\n\nvar matcherExtractionMarker = '__marker_extracted__';\r\nvar Repeat = (function (_super) {\r\n    __extends(Repeat, _super);\r\n    function Repeat(viewFactory, instruction, viewSlot, viewResources, observerLocator, strategyLocator) {\r\n        var _this = _super.call(this, {\r\n            local: 'item',\r\n            viewsRequireLifecycle: viewsRequireLifecycle(viewFactory)\r\n        }) || this;\r\n        _this.viewFactory = viewFactory;\r\n        _this.instruction = instruction;\r\n        _this.viewSlot = viewSlot;\r\n        _this.lookupFunctions = viewResources.lookupFunctions;\r\n        _this.observerLocator = observerLocator;\r\n        _this.key = 'key';\r\n        _this.value = 'value';\r\n        _this.strategyLocator = strategyLocator;\r\n        _this.ignoreMutation = false;\r\n        _this.sourceExpression = getItemsSourceExpression(_this.instruction, 'repeat.for');\r\n        _this.isOneTime = isOneTime(_this.sourceExpression);\r\n        _this.viewsRequireLifecycle = viewsRequireLifecycle(viewFactory);\r\n        return _this;\r\n    }\r\n    Repeat_1 = Repeat;\r\n    Repeat.prototype.call = function (context, changes) {\r\n        this[context](this.items, changes);\r\n    };\r\n    Repeat.prototype.bind = function (bindingContext, overrideContext) {\r\n        this.scope = { bindingContext: bindingContext, overrideContext: overrideContext };\r\n        var instruction = this.instruction;\r\n        if (!(matcherExtractionMarker in instruction)) {\r\n            instruction[matcherExtractionMarker] = this._captureAndRemoveMatcherBinding();\r\n        }\r\n        this.matcherBinding = instruction[matcherExtractionMarker];\r\n        this.itemsChanged();\r\n    };\r\n    Repeat.prototype.unbind = function () {\r\n        this.scope = null;\r\n        this.items = null;\r\n        this.matcherBinding = null;\r\n        this.viewSlot.removeAll(true, true);\r\n        this._unsubscribeCollection();\r\n    };\r\n    Repeat.prototype._unsubscribeCollection = function () {\r\n        if (this.collectionObserver) {\r\n            this.collectionObserver.unsubscribe(this.callContext, this);\r\n            this.collectionObserver = null;\r\n            this.callContext = null;\r\n        }\r\n    };\r\n    Repeat.prototype.itemsChanged = function () {\r\n        var _this = this;\r\n        this._unsubscribeCollection();\r\n        if (!this.scope) {\r\n            return;\r\n        }\r\n        var items = this.items;\r\n        this.strategy = this.strategyLocator.getStrategy(items);\r\n        if (!this.strategy) {\r\n            throw new Error(\"Value for '\".concat(this.sourceExpression, \"' is non-repeatable\"));\r\n        }\r\n        if (!this.isOneTime && !this._observeInnerCollection()) {\r\n            this._observeCollection();\r\n        }\r\n        this.ignoreMutation = true;\r\n        this.strategy.instanceChanged(this, items);\r\n        this.observerLocator.taskQueue.queueMicroTask(function () {\r\n            _this.ignoreMutation = false;\r\n        });\r\n    };\r\n    Repeat.prototype._getInnerCollection = function () {\r\n        var expression = unwrapExpression(this.sourceExpression);\r\n        if (!expression) {\r\n            return null;\r\n        }\r\n        return expression.evaluate(this.scope, null);\r\n    };\r\n    Repeat.prototype.handleCollectionMutated = function (collection, changes) {\r\n        if (!this.collectionObserver) {\r\n            return;\r\n        }\r\n        if (this.ignoreMutation) {\r\n            return;\r\n        }\r\n        this.strategy.instanceMutated(this, collection, changes);\r\n    };\r\n    Repeat.prototype.handleInnerCollectionMutated = function (collection, changes) {\r\n        var _this = this;\r\n        if (!this.collectionObserver) {\r\n            return;\r\n        }\r\n        if (this.ignoreMutation) {\r\n            return;\r\n        }\r\n        this.ignoreMutation = true;\r\n        var newItems = this.sourceExpression.evaluate(this.scope, this.lookupFunctions);\r\n        this.observerLocator.taskQueue.queueMicroTask(function () { return _this.ignoreMutation = false; });\r\n        if (newItems === this.items) {\r\n            this.itemsChanged();\r\n        }\r\n        else {\r\n            this.items = newItems;\r\n        }\r\n    };\r\n    Repeat.prototype._observeInnerCollection = function () {\r\n        var items = this._getInnerCollection();\r\n        var strategy = this.strategyLocator.getStrategy(items);\r\n        if (!strategy) {\r\n            return false;\r\n        }\r\n        this.collectionObserver = strategy.getCollectionObserver(this.observerLocator, items);\r\n        if (!this.collectionObserver) {\r\n            return false;\r\n        }\r\n        this.callContext = 'handleInnerCollectionMutated';\r\n        this.collectionObserver.subscribe(this.callContext, this);\r\n        return true;\r\n    };\r\n    Repeat.prototype._observeCollection = function () {\r\n        var items = this.items;\r\n        this.collectionObserver = this.strategy.getCollectionObserver(this.observerLocator, items);\r\n        if (this.collectionObserver) {\r\n            this.callContext = 'handleCollectionMutated';\r\n            this.collectionObserver.subscribe(this.callContext, this);\r\n        }\r\n    };\r\n    Repeat.prototype._captureAndRemoveMatcherBinding = function () {\r\n        var viewFactory = this.viewFactory.viewFactory;\r\n        if (viewFactory) {\r\n            var template = viewFactory.template;\r\n            var instructions = viewFactory.instructions;\r\n            if (Repeat_1.useInnerMatcher) {\r\n                return extractMatcherBindingExpression(instructions);\r\n            }\r\n            if (getChildrenCount(template) > 1) {\r\n                return undefined;\r\n            }\r\n            var repeatedElement = getFirstElementChild(template);\r\n            if (!repeatedElement.hasAttribute('au-target-id')) {\r\n                return undefined;\r\n            }\r\n            var repeatedElementTargetId = repeatedElement.getAttribute('au-target-id');\r\n            return extractMatcherBindingExpression(instructions, repeatedElementTargetId);\r\n        }\r\n        return undefined;\r\n    };\r\n    Repeat.prototype.viewCount = function () { return this.viewSlot.children.length; };\r\n    Repeat.prototype.views = function () { return this.viewSlot.children; };\r\n    Repeat.prototype.view = function (index) { return this.viewSlot.children[index]; };\r\n    Repeat.prototype.matcher = function () {\r\n        var matcherBinding = this.matcherBinding;\r\n        return matcherBinding\r\n            ? matcherBinding.sourceExpression.evaluate(this.scope, matcherBinding.lookupFunctions)\r\n            : null;\r\n    };\r\n    Repeat.prototype.addView = function (bindingContext, overrideContext) {\r\n        var view = this.viewFactory.create();\r\n        view.bind(bindingContext, overrideContext);\r\n        this.viewSlot.add(view);\r\n    };\r\n    Repeat.prototype.insertView = function (index, bindingContext, overrideContext) {\r\n        var view = this.viewFactory.create();\r\n        view.bind(bindingContext, overrideContext);\r\n        this.viewSlot.insert(index, view);\r\n    };\r\n    Repeat.prototype.moveView = function (sourceIndex, targetIndex) {\r\n        this.viewSlot.move(sourceIndex, targetIndex);\r\n    };\r\n    Repeat.prototype.removeAllViews = function (returnToCache, skipAnimation) {\r\n        return this.viewSlot.removeAll(returnToCache, skipAnimation);\r\n    };\r\n    Repeat.prototype.removeViews = function (viewsToRemove, returnToCache, skipAnimation) {\r\n        return this.viewSlot.removeMany(viewsToRemove, returnToCache, skipAnimation);\r\n    };\r\n    Repeat.prototype.removeView = function (index, returnToCache, skipAnimation) {\r\n        return this.viewSlot.removeAt(index, returnToCache, skipAnimation);\r\n    };\r\n    Repeat.prototype.updateBindings = function (view) {\r\n        var $view = view;\r\n        var j = $view.bindings.length;\r\n        while (j--) {\r\n            updateOneTimeBinding($view.bindings[j]);\r\n        }\r\n        j = $view.controllers.length;\r\n        while (j--) {\r\n            var k = $view.controllers[j].boundProperties.length;\r\n            while (k--) {\r\n                var binding = $view.controllers[j].boundProperties[k].binding;\r\n                updateOneTimeBinding(binding);\r\n            }\r\n        }\r\n    };\r\n    var Repeat_1;\r\n    Repeat.useInnerMatcher = true;\r\n    __decorate([\r\n        bindable\r\n    ], Repeat.prototype, \"items\", void 0);\r\n    __decorate([\r\n        bindable\r\n    ], Repeat.prototype, \"local\", void 0);\r\n    __decorate([\r\n        bindable\r\n    ], Repeat.prototype, \"key\", void 0);\r\n    __decorate([\r\n        bindable\r\n    ], Repeat.prototype, \"value\", void 0);\r\n    Repeat = Repeat_1 = __decorate([\r\n        customAttribute('repeat'),\r\n        templateController,\r\n        inject(BoundViewFactory, TargetInstruction, ViewSlot, ViewResources, ObserverLocator, RepeatStrategyLocator)\r\n    ], Repeat);\r\n    return Repeat;\r\n}(AbstractRepeater));\r\nvar extractMatcherBindingExpression = function (instructions, targetedElementId) {\r\n    var instructionIds = Object.keys(instructions);\r\n    for (var i = 0; i < instructionIds.length; i++) {\r\n        var instructionId = instructionIds[i];\r\n        if (targetedElementId !== undefined && instructionId !== targetedElementId) {\r\n            continue;\r\n        }\r\n        var expressions = instructions[instructionId].expressions;\r\n        if (expressions) {\r\n            for (var ii = 0; ii < expressions.length; ii++) {\r\n                if (expressions[ii].targetProperty === 'matcher') {\r\n                    var matcherBindingExpression = expressions[ii];\r\n                    expressions.splice(ii, 1);\r\n                    return matcherBindingExpression;\r\n                }\r\n            }\r\n        }\r\n    }\r\n};\r\nvar getChildrenCount = function (el) {\r\n    var childNodes = el.childNodes;\r\n    var count = 0;\r\n    for (var i = 0, ii = childNodes.length; ii > i; ++i) {\r\n        if (childNodes[i].nodeType === 1) {\r\n            ++count;\r\n        }\r\n    }\r\n    return count;\r\n};\r\nvar getFirstElementChild = function (el) {\r\n    var firstChild = el.firstChild;\r\n    while (firstChild !== null) {\r\n        if (firstChild.nodeType === 1) {\r\n            return firstChild;\r\n        }\r\n        firstChild = firstChild.nextSibling;\r\n    }\r\n    return null;\r\n};\n\nvar aureliaHideClassName = 'aurelia-hide';\r\nvar aureliaHideClass = \".\".concat(aureliaHideClassName, \" { display:none !important; }\");\r\nfunction injectAureliaHideStyleAtHead() {\r\n    DOM.injectStyles(aureliaHideClass);\r\n}\r\nfunction injectAureliaHideStyleAtBoundary(domBoundary) {\r\n    if (FEATURE.shadowDOM && domBoundary && !domBoundary.hasAureliaHideStyle) {\r\n        domBoundary.hasAureliaHideStyle = true;\r\n        DOM.injectStyles(aureliaHideClass, domBoundary);\r\n    }\r\n}\n\nvar Show = (function () {\r\n    function Show(element, animator, domBoundary) {\r\n        this.element = element;\r\n        this.animator = animator;\r\n        this.domBoundary = domBoundary;\r\n    }\r\n    Show.inject = function () {\r\n        return [DOM.Element, Animator, Optional.of(DOM.boundary, true)];\r\n    };\r\n    Show.prototype.created = function () {\r\n        injectAureliaHideStyleAtBoundary(this.domBoundary);\r\n    };\r\n    Show.prototype.valueChanged = function (newValue) {\r\n        var element = this.element;\r\n        var animator = this.animator;\r\n        if (newValue) {\r\n            animator.removeClass(element, aureliaHideClassName);\r\n        }\r\n        else {\r\n            animator.addClass(element, aureliaHideClassName);\r\n        }\r\n    };\r\n    Show.prototype.bind = function (bindingContext) {\r\n        this.valueChanged(this.value);\r\n    };\r\n    Show = __decorate([\r\n        customAttribute('show')\r\n    ], Show);\r\n    return Show;\r\n}());\n\nvar Hide = (function () {\r\n    function Hide(element, animator, domBoundary) {\r\n        this.element = element;\r\n        this.animator = animator;\r\n        this.domBoundary = domBoundary;\r\n    }\r\n    Hide.inject = function () {\r\n        return [DOM.Element, Animator, Optional.of(DOM.boundary, true)];\r\n    };\r\n    Hide.prototype.created = function () {\r\n        injectAureliaHideStyleAtBoundary(this.domBoundary);\r\n    };\r\n    Hide.prototype.valueChanged = function (newValue) {\r\n        if (newValue) {\r\n            this.animator.addClass(this.element, aureliaHideClassName);\r\n        }\r\n        else {\r\n            this.animator.removeClass(this.element, aureliaHideClassName);\r\n        }\r\n    };\r\n    Hide.prototype.bind = function (bindingContext) {\r\n        this.valueChanged(this.value);\r\n    };\r\n    Hide.prototype.value = function (value) {\r\n        throw new Error('Method not implemented.');\r\n    };\r\n    Hide = __decorate([\r\n        customAttribute('hide')\r\n    ], Hide);\r\n    return Hide;\r\n}());\n\nvar HTMLSanitizer = (function () {\r\n    function HTMLSanitizer() {\r\n    }\r\n    HTMLSanitizer.prototype.sanitize = function (input) {\r\n        throw new Error(\"To protect the application against a wide variety of sophisticated XSS attacks.\\nPlease see https://aurelia.io/docs/binding/basics#element-content for instructions on how to use a secure solution like DOMPurify or sanitize-html.\");\r\n    };\r\n    return HTMLSanitizer;\r\n}());\n\nvar SanitizeHTMLValueConverter = (function () {\r\n    function SanitizeHTMLValueConverter(sanitizer) {\r\n        this.sanitizer = sanitizer;\r\n    }\r\n    SanitizeHTMLValueConverter.prototype.toView = function (untrustedMarkup) {\r\n        if (untrustedMarkup === null || untrustedMarkup === undefined) {\r\n            return null;\r\n        }\r\n        return this.sanitizer.sanitize(untrustedMarkup);\r\n    };\r\n    SanitizeHTMLValueConverter = __decorate([\r\n        valueConverter('sanitizeHTML'),\r\n        inject(HTMLSanitizer)\r\n    ], SanitizeHTMLValueConverter);\r\n    return SanitizeHTMLValueConverter;\r\n}());\n\nvar Replaceable = (function () {\r\n    function Replaceable(viewFactory, viewSlot) {\r\n        this.viewFactory = viewFactory;\r\n        this.viewSlot = viewSlot;\r\n        this.view = null;\r\n    }\r\n    Replaceable.prototype.bind = function (bindingContext, overrideContext) {\r\n        if (this.view === null) {\r\n            this.view = this.viewFactory.create();\r\n            this.viewSlot.add(this.view);\r\n        }\r\n        this.view.bind(bindingContext, overrideContext);\r\n    };\r\n    Replaceable.prototype.unbind = function () {\r\n        this.view.unbind();\r\n    };\r\n    Replaceable = __decorate([\r\n        customAttribute('replaceable'),\r\n        templateController,\r\n        inject(BoundViewFactory, ViewSlot)\r\n    ], Replaceable);\r\n    return Replaceable;\r\n}());\n\nvar Focus = (function () {\r\n    function Focus(element, taskQueue) {\r\n        this.element = element;\r\n        this.taskQueue = taskQueue;\r\n        this.isAttached = false;\r\n        this.needsApply = false;\r\n    }\r\n    Focus.inject = function () {\r\n        return [DOM.Element, TaskQueue];\r\n    };\r\n    Focus.prototype.valueChanged = function () {\r\n        if (this.isAttached) {\r\n            this._apply();\r\n        }\r\n        else {\r\n            this.needsApply = true;\r\n        }\r\n    };\r\n    Focus.prototype._apply = function () {\r\n        var _this = this;\r\n        if (this.value) {\r\n            this.taskQueue.queueMicroTask(function () {\r\n                if (_this.value) {\r\n                    _this.element.focus();\r\n                }\r\n            });\r\n        }\r\n        else {\r\n            this.element.blur();\r\n        }\r\n    };\r\n    Focus.prototype.attached = function () {\r\n        this.isAttached = true;\r\n        if (this.needsApply) {\r\n            this.needsApply = false;\r\n            this._apply();\r\n        }\r\n        this.element.addEventListener('focus', this);\r\n        this.element.addEventListener('blur', this);\r\n    };\r\n    Focus.prototype.detached = function () {\r\n        this.isAttached = false;\r\n        this.element.removeEventListener('focus', this);\r\n        this.element.removeEventListener('blur', this);\r\n    };\r\n    Focus.prototype.handleEvent = function (e) {\r\n        if (e.type === 'focus') {\r\n            this.value = true;\r\n        }\r\n        else if (DOM.activeElement !== this.element) {\r\n            this.value = false;\r\n        }\r\n    };\r\n    Focus = __decorate([\r\n        customAttribute('focus', bindingMode.twoWay)\r\n    ], Focus);\r\n    return Focus;\r\n}());\n\nvar cssUrlMatcher = /url\\((?!['\"]data)([^)]+)\\)/gi;\r\nfunction fixupCSSUrls(address, css) {\r\n    if (typeof css !== 'string') {\r\n        throw new Error(\"Failed loading required CSS file: \".concat(address));\r\n    }\r\n    return css.replace(cssUrlMatcher, function (match, p1) {\r\n        var quote = p1.charAt(0);\r\n        if (quote === '\\'' || quote === '\"') {\r\n            p1 = p1.substr(1, p1.length - 2);\r\n        }\r\n        return 'url(\\'' + relativeToFile(p1, address) + '\\')';\r\n    });\r\n}\r\nvar CSSResource = (function () {\r\n    function CSSResource(address) {\r\n        this.address = address;\r\n        this._scoped = null;\r\n        this._global = false;\r\n        this._alreadyGloballyInjected = false;\r\n    }\r\n    CSSResource.prototype.initialize = function (container, Target) {\r\n        this._scoped = new Target(this);\r\n    };\r\n    CSSResource.prototype.register = function (registry, name) {\r\n        if (name === 'scoped') {\r\n            registry.registerViewEngineHooks(this._scoped);\r\n        }\r\n        else {\r\n            this._global = true;\r\n        }\r\n    };\r\n    CSSResource.prototype.load = function (container) {\r\n        var _this = this;\r\n        return container.get(Loader)\r\n            .loadText(this.address)\r\n            .catch(function () { return null; })\r\n            .then(function (text) {\r\n            text = fixupCSSUrls(_this.address, text);\r\n            _this._scoped.css = text;\r\n            if (_this._global) {\r\n                _this._alreadyGloballyInjected = true;\r\n                DOM.injectStyles(text);\r\n            }\r\n            return _this;\r\n        });\r\n    };\r\n    return CSSResource;\r\n}());\r\nvar CSSViewEngineHooks = (function () {\r\n    function CSSViewEngineHooks(owner) {\r\n        this.owner = owner;\r\n        this.css = null;\r\n    }\r\n    CSSViewEngineHooks.prototype.beforeCompile = function (content, resources, instruction) {\r\n        if (instruction.targetShadowDOM) {\r\n            DOM.injectStyles(this.css, content, true);\r\n        }\r\n        else if (FEATURE.scopedCSS) {\r\n            var styleNode = DOM.injectStyles(this.css, content, true);\r\n            styleNode.setAttribute('scoped', 'scoped');\r\n        }\r\n        else if (this._global && !this.owner._alreadyGloballyInjected) {\r\n            DOM.injectStyles(this.css);\r\n            this.owner._alreadyGloballyInjected = true;\r\n        }\r\n    };\r\n    return CSSViewEngineHooks;\r\n}());\r\nfunction _createCSSResource(address) {\r\n    var ViewCSS = (function (_super) {\r\n        __extends(ViewCSS, _super);\r\n        function ViewCSS() {\r\n            return _super !== null && _super.apply(this, arguments) || this;\r\n        }\r\n        ViewCSS = __decorate([\r\n            resource(new CSSResource(address))\r\n        ], ViewCSS);\r\n        return ViewCSS;\r\n    }(CSSViewEngineHooks));\r\n    return ViewCSS;\r\n}\n\nvar AttrBindingBehavior = (function () {\r\n    function AttrBindingBehavior() {\r\n    }\r\n    AttrBindingBehavior.prototype.bind = function (binding, source) {\r\n        binding.targetObserver = new DataAttributeObserver(binding.target, binding.targetProperty);\r\n    };\r\n    AttrBindingBehavior.prototype.unbind = function (binding, source) {\r\n    };\r\n    AttrBindingBehavior = __decorate([\r\n        bindingBehavior('attr')\r\n    ], AttrBindingBehavior);\r\n    return AttrBindingBehavior;\r\n}());\n\nvar modeBindingBehavior = {\r\n    bind: function (binding, source, lookupFunctions) {\r\n        binding.originalMode = binding.mode;\r\n        binding.mode = this.mode;\r\n    },\r\n    unbind: function (binding, source) {\r\n        binding.mode = binding.originalMode;\r\n        binding.originalMode = null;\r\n    }\r\n};\r\nvar OneTimeBindingBehavior = (function () {\r\n    function OneTimeBindingBehavior() {\r\n        this.mode = bindingMode.oneTime;\r\n    }\r\n    OneTimeBindingBehavior = __decorate([\r\n        mixin(modeBindingBehavior),\r\n        bindingBehavior('oneTime')\r\n    ], OneTimeBindingBehavior);\r\n    return OneTimeBindingBehavior;\r\n}());\r\nvar OneWayBindingBehavior = (function () {\r\n    function OneWayBindingBehavior() {\r\n        this.mode = bindingMode.toView;\r\n    }\r\n    OneWayBindingBehavior = __decorate([\r\n        mixin(modeBindingBehavior),\r\n        bindingBehavior('oneWay')\r\n    ], OneWayBindingBehavior);\r\n    return OneWayBindingBehavior;\r\n}());\r\nvar ToViewBindingBehavior = (function () {\r\n    function ToViewBindingBehavior() {\r\n        this.mode = bindingMode.toView;\r\n    }\r\n    ToViewBindingBehavior = __decorate([\r\n        mixin(modeBindingBehavior),\r\n        bindingBehavior('toView')\r\n    ], ToViewBindingBehavior);\r\n    return ToViewBindingBehavior;\r\n}());\r\nvar FromViewBindingBehavior = (function () {\r\n    function FromViewBindingBehavior() {\r\n        this.mode = bindingMode.fromView;\r\n    }\r\n    FromViewBindingBehavior = __decorate([\r\n        mixin(modeBindingBehavior),\r\n        bindingBehavior('fromView')\r\n    ], FromViewBindingBehavior);\r\n    return FromViewBindingBehavior;\r\n}());\r\nvar TwoWayBindingBehavior = (function () {\r\n    function TwoWayBindingBehavior() {\r\n        this.mode = bindingMode.twoWay;\r\n    }\r\n    TwoWayBindingBehavior = __decorate([\r\n        mixin(modeBindingBehavior),\r\n        bindingBehavior('twoWay')\r\n    ], TwoWayBindingBehavior);\r\n    return TwoWayBindingBehavior;\r\n}());\n\nfunction throttle(newValue) {\r\n    var _this = this;\r\n    var state = this.throttleState;\r\n    var elapsed = +new Date() - state.last;\r\n    if (elapsed >= state.delay) {\r\n        clearTimeout(state.timeoutId);\r\n        state.timeoutId = null;\r\n        state.last = +new Date();\r\n        this.throttledMethod(newValue);\r\n        return;\r\n    }\r\n    state.newValue = newValue;\r\n    if (state.timeoutId === null) {\r\n        state.timeoutId = setTimeout(function () {\r\n            state.timeoutId = null;\r\n            state.last = +new Date();\r\n            _this.throttledMethod(state.newValue);\r\n        }, state.delay - elapsed);\r\n    }\r\n}\r\nvar ThrottleBindingBehavior = (function () {\r\n    function ThrottleBindingBehavior() {\r\n    }\r\n    ThrottleBindingBehavior.prototype.bind = function (binding, source, delay) {\r\n        if (delay === void 0) { delay = 200; }\r\n        var methodToThrottle = 'updateTarget';\r\n        if (binding.callSource) {\r\n            methodToThrottle = 'callSource';\r\n        }\r\n        else if (binding.updateSource && binding.mode === bindingMode.twoWay) {\r\n            methodToThrottle = 'updateSource';\r\n        }\r\n        binding.throttledMethod = binding[methodToThrottle];\r\n        binding.throttledMethod.originalName = methodToThrottle;\r\n        binding[methodToThrottle] = throttle;\r\n        binding.throttleState = {\r\n            delay: delay,\r\n            last: 0,\r\n            timeoutId: null\r\n        };\r\n    };\r\n    ThrottleBindingBehavior.prototype.unbind = function (binding, source) {\r\n        var methodToRestore = binding.throttledMethod.originalName;\r\n        binding[methodToRestore] = binding.throttledMethod;\r\n        binding.throttledMethod = null;\r\n        clearTimeout(binding.throttleState.timeoutId);\r\n        binding.throttleState = null;\r\n    };\r\n    ThrottleBindingBehavior = __decorate([\r\n        bindingBehavior('throttle')\r\n    ], ThrottleBindingBehavior);\r\n    return ThrottleBindingBehavior;\r\n}());\n\nvar unset = {};\r\nfunction debounceCallSource(event) {\r\n    var _this = this;\r\n    var state = this.debounceState;\r\n    clearTimeout(state.timeoutId);\r\n    state.timeoutId = setTimeout(function () { return _this.debouncedMethod(event); }, state.delay);\r\n}\r\nfunction debounceCall(context, newValue, oldValue) {\r\n    var _this = this;\r\n    var state = this.debounceState;\r\n    clearTimeout(state.timeoutId);\r\n    if (context !== state.callContextToDebounce) {\r\n        state.oldValue = unset;\r\n        this.debouncedMethod(context, newValue, oldValue);\r\n        return;\r\n    }\r\n    if (state.oldValue === unset) {\r\n        state.oldValue = oldValue;\r\n    }\r\n    state.timeoutId = setTimeout(function () {\r\n        var _oldValue = state.oldValue;\r\n        state.oldValue = unset;\r\n        _this.debouncedMethod(context, newValue, _oldValue);\r\n    }, state.delay);\r\n}\r\nvar DebounceBindingBehavior = (function () {\r\n    function DebounceBindingBehavior() {\r\n    }\r\n    DebounceBindingBehavior.prototype.bind = function (binding, source, delay) {\r\n        if (delay === void 0) { delay = 200; }\r\n        var isCallSource = binding.callSource !== undefined;\r\n        var methodToDebounce = isCallSource ? 'callSource' : 'call';\r\n        var debouncer = isCallSource ? debounceCallSource : debounceCall;\r\n        var mode = binding.mode;\r\n        var callContextToDebounce = mode === bindingMode.twoWay || mode === bindingMode.fromView ? targetContext : sourceContext;\r\n        binding.debouncedMethod = binding[methodToDebounce];\r\n        binding.debouncedMethod.originalName = methodToDebounce;\r\n        binding[methodToDebounce] = debouncer;\r\n        binding.debounceState = {\r\n            callContextToDebounce: callContextToDebounce,\r\n            delay: delay,\r\n            timeoutId: 0,\r\n            oldValue: unset\r\n        };\r\n    };\r\n    DebounceBindingBehavior.prototype.unbind = function (binding, source) {\r\n        var methodToRestore = binding.debouncedMethod.originalName;\r\n        binding[methodToRestore] = binding.debouncedMethod;\r\n        binding.debouncedMethod = null;\r\n        clearTimeout(binding.debounceState.timeoutId);\r\n        binding.debounceState = null;\r\n    };\r\n    DebounceBindingBehavior = __decorate([\r\n        bindingBehavior('debounce')\r\n    ], DebounceBindingBehavior);\r\n    return DebounceBindingBehavior;\r\n}());\n\nfunction findOriginalEventTarget(event) {\r\n    return (event.path && event.path[0]) || (event.deepPath && event.deepPath[0]) || event.target;\r\n}\r\nfunction handleSelfEvent(event) {\r\n    var target = findOriginalEventTarget(event);\r\n    if (this.target !== target) {\r\n        return;\r\n    }\r\n    this.selfEventCallSource(event);\r\n}\r\nvar SelfBindingBehavior = (function () {\r\n    function SelfBindingBehavior() {\r\n    }\r\n    SelfBindingBehavior.prototype.bind = function (binding, source) {\r\n        if (!binding.callSource || !binding.targetEvent) {\r\n            throw new Error('Self binding behavior only supports event.');\r\n        }\r\n        binding.selfEventCallSource = binding.callSource;\r\n        binding.callSource = handleSelfEvent;\r\n    };\r\n    SelfBindingBehavior.prototype.unbind = function (binding, source) {\r\n        binding.callSource = binding.selfEventCallSource;\r\n        binding.selfEventCallSource = null;\r\n    };\r\n    SelfBindingBehavior = __decorate([\r\n        bindingBehavior('self')\r\n    ], SelfBindingBehavior);\r\n    return SelfBindingBehavior;\r\n}());\n\nvar BindingSignaler = (function () {\r\n    function BindingSignaler() {\r\n        this.signals = {};\r\n    }\r\n    BindingSignaler.prototype.signal = function (name) {\r\n        var bindings = this.signals[name];\r\n        if (!bindings) {\r\n            return;\r\n        }\r\n        var i = bindings.length;\r\n        while (i--) {\r\n            bindings[i].call(sourceContext);\r\n        }\r\n    };\r\n    return BindingSignaler;\r\n}());\n\nvar SignalBindingBehavior = (function () {\r\n    function SignalBindingBehavior(bindingSignaler) {\r\n        this.signals = bindingSignaler.signals;\r\n    }\r\n    SignalBindingBehavior.inject = function () { return [BindingSignaler]; };\r\n    SignalBindingBehavior.prototype.bind = function (binding, source) {\r\n        var names = [];\r\n        for (var _i = 2; _i < arguments.length; _i++) {\r\n            names[_i - 2] = arguments[_i];\r\n        }\r\n        if (!binding.updateTarget) {\r\n            throw new Error('Only property bindings and string interpolation bindings can be signaled.  Trigger, delegate and call bindings cannot be signaled.');\r\n        }\r\n        var signals = this.signals;\r\n        if (names.length === 1) {\r\n            var name_1 = names[0];\r\n            var bindings = signals[name_1] || (signals[name_1] = []);\r\n            bindings.push(binding);\r\n            binding.signalName = name_1;\r\n        }\r\n        else if (names.length > 1) {\r\n            var i = names.length;\r\n            while (i--) {\r\n                var name_2 = names[i];\r\n                var bindings = signals[name_2] || (signals[name_2] = []);\r\n                bindings.push(binding);\r\n            }\r\n            binding.signalName = names;\r\n        }\r\n        else {\r\n            throw new Error('Signal name is required.');\r\n        }\r\n    };\r\n    SignalBindingBehavior.prototype.unbind = function (binding, source) {\r\n        var signals = this.signals;\r\n        var name = binding.signalName;\r\n        binding.signalName = null;\r\n        if (Array.isArray(name)) {\r\n            var names = name;\r\n            var i = names.length;\r\n            while (i--) {\r\n                var n = names[i];\r\n                var bindings = signals[n];\r\n                bindings.splice(bindings.indexOf(binding), 1);\r\n            }\r\n        }\r\n        else {\r\n            var bindings = signals[name];\r\n            bindings.splice(bindings.indexOf(binding), 1);\r\n        }\r\n    };\r\n    SignalBindingBehavior = __decorate([\r\n        bindingBehavior('signal')\r\n    ], SignalBindingBehavior);\r\n    return SignalBindingBehavior;\r\n}());\n\nvar eventNamesRequired = 'The updateTrigger binding behavior requires at least one event name argument: eg <input value.bind=\"firstName & updateTrigger:\\'blur\\'\">';\r\nvar notApplicableMessage = 'The updateTrigger binding behavior can only be applied to two-way/ from-view bindings on input/select elements.';\r\nvar UpdateTriggerBindingBehavior = (function () {\r\n    function UpdateTriggerBindingBehavior() {\r\n    }\r\n    UpdateTriggerBindingBehavior.prototype.bind = function (binding, source) {\r\n        var events = [];\r\n        for (var _i = 2; _i < arguments.length; _i++) {\r\n            events[_i - 2] = arguments[_i];\r\n        }\r\n        if (events.length === 0) {\r\n            throw new Error(eventNamesRequired);\r\n        }\r\n        if (binding.mode !== bindingMode.twoWay && binding.mode !== bindingMode.fromView) {\r\n            throw new Error(notApplicableMessage);\r\n        }\r\n        var targetObserver = binding.observerLocator.getObserver(binding.target, binding.targetProperty);\r\n        if (!targetObserver.handler) {\r\n            throw new Error(notApplicableMessage);\r\n        }\r\n        binding.targetObserver = targetObserver;\r\n        targetObserver.originalHandler = binding.targetObserver.handler;\r\n        var handler = new EventSubscriber(events);\r\n        targetObserver.handler = handler;\r\n    };\r\n    UpdateTriggerBindingBehavior.prototype.unbind = function (binding, source) {\r\n        var targetObserver = binding.targetObserver;\r\n        targetObserver.handler.dispose();\r\n        targetObserver.handler = targetObserver.originalHandler;\r\n        targetObserver.originalHandler = null;\r\n    };\r\n    UpdateTriggerBindingBehavior = __decorate([\r\n        bindingBehavior('updateTrigger')\r\n    ], UpdateTriggerBindingBehavior);\r\n    return UpdateTriggerBindingBehavior;\r\n}());\n\nfunction _createDynamicElement(_a) {\r\n    var name = _a.name, viewUrl = _a.viewUrl, bindableNames = _a.bindableNames, useShadowDOMmode = _a.useShadowDOMmode;\r\n    var DynamicElement = (function () {\r\n        function DynamicElement() {\r\n        }\r\n        DynamicElement.prototype.bind = function (bindingContext) {\r\n            this.$parent = bindingContext;\r\n        };\r\n        DynamicElement = __decorate([\r\n            customElement(name),\r\n            useView(viewUrl)\r\n        ], DynamicElement);\r\n        return DynamicElement;\r\n    }());\r\n    for (var i = 0, ii = bindableNames.length; i < ii; ++i) {\r\n        bindable(bindableNames[i])(DynamicElement);\r\n    }\r\n    switch (useShadowDOMmode) {\r\n        case 'open':\r\n            useShadowDOM({ mode: 'open' })(DynamicElement);\r\n            break;\r\n        case 'closed':\r\n            useShadowDOM({ mode: 'closed' })(DynamicElement);\r\n            break;\r\n        case '':\r\n            useShadowDOM(DynamicElement);\r\n            break;\r\n        case null:\r\n            break;\r\n        default:\r\n            getLogger('aurelia-html-only-element')\r\n                .warn(\"Expected 'use-shadow-dom' value to be \\\"close\\\", \\\"open\\\" or \\\"\\\", received \".concat(useShadowDOMmode));\r\n            break;\r\n    }\r\n    return DynamicElement;\r\n}\n\nfunction getElementName(address) {\r\n    return /([^\\/^\\?]+)\\.html/i.exec(address)[1].toLowerCase();\r\n}\r\nfunction configure$1(config) {\r\n    var viewEngine = config.container.get(ViewEngine);\r\n    var loader = config.aurelia.loader;\r\n    viewEngine.addResourcePlugin('.html', {\r\n        'fetch': function (viewUrl) {\r\n            return loader.loadTemplate(viewUrl).then(function (registryEntry) {\r\n                var _a;\r\n                var bindableNames = registryEntry.template.getAttribute('bindable');\r\n                var useShadowDOMmode = registryEntry.template.getAttribute('use-shadow-dom');\r\n                var name = getElementName(viewUrl);\r\n                if (bindableNames) {\r\n                    bindableNames = bindableNames.split(',').map(function (x) { return x.trim(); });\r\n                    registryEntry.template.removeAttribute('bindable');\r\n                }\r\n                else {\r\n                    bindableNames = [];\r\n                }\r\n                return _a = {}, _a[name] = _createDynamicElement({ name: name, viewUrl: viewUrl, bindableNames: bindableNames, useShadowDOMmode: useShadowDOMmode }), _a;\r\n            });\r\n        }\r\n    });\r\n}\n\nfunction configure(config) {\r\n    injectAureliaHideStyleAtHead();\r\n    config.globalResources(Compose, If, Else, With, Repeat, Show, Hide, Replaceable, Focus, SanitizeHTMLValueConverter, OneTimeBindingBehavior, OneWayBindingBehavior, ToViewBindingBehavior, FromViewBindingBehavior, TwoWayBindingBehavior, ThrottleBindingBehavior, DebounceBindingBehavior, SelfBindingBehavior, SignalBindingBehavior, UpdateTriggerBindingBehavior, AttrBindingBehavior);\r\n    configure$1(config);\r\n    var viewEngine = config.container.get(ViewEngine);\r\n    var styleResourcePlugin = {\r\n        fetch: function (address) {\r\n            var _a;\r\n            return _a = {}, _a[address] = _createCSSResource(address), _a;\r\n        }\r\n    };\r\n    ['.css', '.less', '.sass', '.scss', '.styl'].forEach(function (ext) { return viewEngine.addResourcePlugin(ext, styleResourcePlugin); });\r\n}\n\nexport { AbstractRepeater, ArrayRepeatStrategy, AttrBindingBehavior, BindingSignaler, Compose, ActivationStrategy as ComposeActivationStrategy, DebounceBindingBehavior, Else, Focus, FromViewBindingBehavior, HTMLSanitizer, Hide, If, MapRepeatStrategy, NullRepeatStrategy, NumberRepeatStrategy, OneTimeBindingBehavior, OneWayBindingBehavior, Repeat, RepeatStrategyLocator, Replaceable, SanitizeHTMLValueConverter, SelfBindingBehavior, SetRepeatStrategy, Show, SignalBindingBehavior, ThrottleBindingBehavior, ToViewBindingBehavior, TwoWayBindingBehavior, UpdateTriggerBindingBehavior, With, configure, createFullOverrideContext, getItemsSourceExpression, isOneTime, unwrapExpression, updateOneTimeBinding, updateOverrideContext, viewsRequireLifecycle };\n//# sourceMappingURL=aurelia-templating-resources.js.map\n","import { Router, RouteLoader, AppRouter } from 'aurelia-router';\nimport { Origin } from 'aurelia-metadata';\nimport { relativeToFile } from 'aurelia-path';\nimport { BehaviorInstruction, ShadowDOM, ViewSlot, ViewLocator, CompositionTransaction, CompositionEngine, SwapStrategies, inlineView, customElement, useView } from 'aurelia-templating';\nimport { Container } from 'aurelia-dependency-injection';\nimport { createOverrideContext } from 'aurelia-binding';\nimport { DOM } from 'aurelia-pal';\nimport * as LogManager from 'aurelia-logging';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n    if (typeof b !== \"function\" && b !== null)\r\n        throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\n\nvar EmptyLayoutViewModel = (function () {\r\n    function EmptyLayoutViewModel() {\r\n    }\r\n    return EmptyLayoutViewModel;\r\n}());\r\nvar RouterView = (function () {\r\n    function RouterView(element, container, viewSlot, router, viewLocator, compositionTransaction, compositionEngine) {\r\n        this.element = element;\r\n        this.container = container;\r\n        this.viewSlot = viewSlot;\r\n        this.router = router;\r\n        this.viewLocator = viewLocator;\r\n        this.compositionTransaction = compositionTransaction;\r\n        this.compositionEngine = compositionEngine;\r\n        this.router.registerViewPort(this, this.element.getAttribute('name'));\r\n        if (!('initialComposition' in compositionTransaction)) {\r\n            compositionTransaction.initialComposition = true;\r\n            this.compositionTransactionNotifier = compositionTransaction.enlist();\r\n        }\r\n    }\r\n    RouterView.inject = function () {\r\n        return [DOM.Element, Container, ViewSlot, Router, ViewLocator, CompositionTransaction, CompositionEngine];\r\n    };\r\n    RouterView.prototype.created = function (owningView) {\r\n        this.owningView = owningView;\r\n    };\r\n    RouterView.prototype.bind = function (bindingContext, overrideContext) {\r\n        this.container.viewModel = bindingContext;\r\n        this.overrideContext = overrideContext;\r\n    };\r\n    RouterView.prototype.process = function ($viewPortInstruction, waitToSwap) {\r\n        var _this = this;\r\n        var viewPortInstruction = $viewPortInstruction;\r\n        var component = viewPortInstruction.component;\r\n        var childContainer = component.childContainer;\r\n        var viewModel = component.viewModel;\r\n        var viewModelResource = component.viewModelResource;\r\n        var metadata = viewModelResource.metadata;\r\n        var config = component.router.currentInstruction.config;\r\n        var viewPortConfig = config.viewPorts ? (config.viewPorts[viewPortInstruction.name] || {}) : {};\r\n        childContainer.get(RouterViewLocator)._notify(this);\r\n        var layoutInstruction = {\r\n            viewModel: viewPortConfig.layoutViewModel || config.layoutViewModel || this.layoutViewModel,\r\n            view: viewPortConfig.layoutView || config.layoutView || this.layoutView,\r\n            model: viewPortConfig.layoutModel || config.layoutModel || this.layoutModel,\r\n            router: viewPortInstruction.component.router,\r\n            childContainer: childContainer,\r\n            viewSlot: this.viewSlot\r\n        };\r\n        var viewStrategy = this.viewLocator.getViewStrategy(component.view || viewModel);\r\n        if (viewStrategy && component.view) {\r\n            viewStrategy.makeRelativeTo(Origin.get(component.router.container.viewModel.constructor).moduleId);\r\n        }\r\n        return metadata\r\n            .load(childContainer, viewModelResource.value, null, viewStrategy, true)\r\n            .then(function (viewFactory) {\r\n            if (!_this.compositionTransactionNotifier) {\r\n                _this.compositionTransactionOwnershipToken = _this.compositionTransaction.tryCapture();\r\n            }\r\n            if (layoutInstruction.viewModel || layoutInstruction.view) {\r\n                viewPortInstruction.layoutInstruction = layoutInstruction;\r\n            }\r\n            var viewPortComponentBehaviorInstruction = BehaviorInstruction.dynamic(_this.element, viewModel, viewFactory);\r\n            viewPortInstruction.controller = metadata.create(childContainer, viewPortComponentBehaviorInstruction);\r\n            if (waitToSwap) {\r\n                return null;\r\n            }\r\n            _this.swap(viewPortInstruction);\r\n        });\r\n    };\r\n    RouterView.prototype.swap = function ($viewPortInstruction) {\r\n        var _this = this;\r\n        var viewPortInstruction = $viewPortInstruction;\r\n        var viewPortController = viewPortInstruction.controller;\r\n        var layoutInstruction = viewPortInstruction.layoutInstruction;\r\n        var previousView = this.view;\r\n        var work = function () {\r\n            var swapStrategy = SwapStrategies[_this.swapOrder] || SwapStrategies.after;\r\n            var viewSlot = _this.viewSlot;\r\n            swapStrategy(viewSlot, previousView, function () { return Promise.resolve(viewSlot.add(_this.view)); }).then(function () {\r\n                _this._notify();\r\n            });\r\n        };\r\n        var ready = function (owningView_or_layoutView) {\r\n            viewPortController.automate(_this.overrideContext, owningView_or_layoutView);\r\n            var transactionOwnerShipToken = _this.compositionTransactionOwnershipToken;\r\n            if (transactionOwnerShipToken) {\r\n                return transactionOwnerShipToken\r\n                    .waitForCompositionComplete()\r\n                    .then(function () {\r\n                    _this.compositionTransactionOwnershipToken = null;\r\n                    return work();\r\n                });\r\n            }\r\n            return work();\r\n        };\r\n        if (layoutInstruction) {\r\n            if (!layoutInstruction.viewModel) {\r\n                layoutInstruction.viewModel = new EmptyLayoutViewModel();\r\n            }\r\n            return this.compositionEngine\r\n                .createController(layoutInstruction)\r\n                .then(function (layoutController) {\r\n                var layoutView = layoutController.view;\r\n                ShadowDOM.distributeView(viewPortController.view, layoutController.slots || layoutView.slots);\r\n                layoutController.automate(createOverrideContext(layoutInstruction.viewModel), _this.owningView);\r\n                layoutView.children.push(viewPortController.view);\r\n                return layoutView || layoutController;\r\n            })\r\n                .then(function (newView) {\r\n                _this.view = newView;\r\n                return ready(newView);\r\n            });\r\n        }\r\n        this.view = viewPortController.view;\r\n        return ready(this.owningView);\r\n    };\r\n    RouterView.prototype._notify = function () {\r\n        var notifier = this.compositionTransactionNotifier;\r\n        if (notifier) {\r\n            notifier.done();\r\n            this.compositionTransactionNotifier = null;\r\n        }\r\n    };\r\n    RouterView.$view = null;\r\n    RouterView.$resource = {\r\n        name: 'router-view',\r\n        bindables: ['swapOrder', 'layoutView', 'layoutViewModel', 'layoutModel', 'inherit-binding-context']\r\n    };\r\n    return RouterView;\r\n}());\r\nvar RouterViewLocator = (function () {\r\n    function RouterViewLocator() {\r\n        var _this = this;\r\n        this.promise = new Promise(function (resolve) { return _this.resolve = resolve; });\r\n    }\r\n    RouterViewLocator.prototype.findNearest = function () {\r\n        return this.promise;\r\n    };\r\n    RouterViewLocator.prototype._notify = function (routerView) {\r\n        this.resolve(routerView);\r\n    };\r\n    return RouterViewLocator;\r\n}());\n\nvar EmptyClass = (function () {\r\n    function EmptyClass() {\r\n    }\r\n    return EmptyClass;\r\n}());\r\ninlineView('<template></template>')(EmptyClass);\r\nvar TemplatingRouteLoader = (function (_super) {\r\n    __extends(TemplatingRouteLoader, _super);\r\n    function TemplatingRouteLoader(compositionEngine) {\r\n        var _this = _super.call(this) || this;\r\n        _this.compositionEngine = compositionEngine;\r\n        return _this;\r\n    }\r\n    TemplatingRouteLoader.prototype.resolveViewModel = function (router, config) {\r\n        return new Promise(function (resolve, reject) {\r\n            var viewModel;\r\n            if ('moduleId' in config) {\r\n                var moduleId = config.moduleId;\r\n                if (moduleId === null) {\r\n                    viewModel = EmptyClass;\r\n                }\r\n                else {\r\n                    moduleId = relativeToFile(moduleId, Origin.get(router.container.viewModel.constructor).moduleId);\r\n                    if (/\\.html/i.test(moduleId)) {\r\n                        viewModel = createDynamicClass(moduleId);\r\n                    }\r\n                    else {\r\n                        viewModel = moduleId;\r\n                    }\r\n                }\r\n                return resolve(viewModel);\r\n            }\r\n            reject(new Error('Invalid route config. No \"moduleId\" found.'));\r\n        });\r\n    };\r\n    TemplatingRouteLoader.prototype.createChildContainer = function (router) {\r\n        var childContainer = router.container.createChild();\r\n        childContainer.registerSingleton(RouterViewLocator);\r\n        childContainer.getChildRouter = function () {\r\n            var childRouter;\r\n            childContainer.registerHandler(Router, function () { return childRouter || (childRouter = router.createChild(childContainer)); });\r\n            return childContainer.get(Router);\r\n        };\r\n        return childContainer;\r\n    };\r\n    TemplatingRouteLoader.prototype.loadRoute = function (router, config, navInstruction) {\r\n        var _this = this;\r\n        return this\r\n            .resolveViewModel(router, config)\r\n            .then(function (viewModel) { return _this.compositionEngine.ensureViewModel({\r\n            viewModel: viewModel,\r\n            childContainer: _this.createChildContainer(router),\r\n            view: config.view || config.viewStrategy,\r\n            router: router\r\n        }); });\r\n    };\r\n    TemplatingRouteLoader.inject = [CompositionEngine];\r\n    return TemplatingRouteLoader;\r\n}(RouteLoader));\r\nfunction createDynamicClass(moduleId) {\r\n    var name = /([^\\/^\\?]+)\\.html/i.exec(moduleId)[1];\r\n    var DynamicClass = (function () {\r\n        function DynamicClass() {\r\n        }\r\n        DynamicClass.prototype.bind = function (bindingContext) {\r\n            this.$parent = bindingContext;\r\n        };\r\n        return DynamicClass;\r\n    }());\r\n    customElement(name)(DynamicClass);\r\n    useView(moduleId)(DynamicClass);\r\n    return DynamicClass;\r\n}\n\nvar logger = LogManager.getLogger('route-href');\r\nvar RouteHref = (function () {\r\n    function RouteHref(router, element) {\r\n        this.router = router;\r\n        this.element = element;\r\n        this.attribute = 'href';\r\n    }\r\n    RouteHref.inject = function () {\r\n        return [Router, DOM.Element];\r\n    };\r\n    RouteHref.prototype.bind = function () {\r\n        this.isActive = true;\r\n        this.processChange();\r\n    };\r\n    RouteHref.prototype.unbind = function () {\r\n        this.isActive = false;\r\n    };\r\n    RouteHref.prototype.attributeChanged = function (value, previous) {\r\n        if (previous) {\r\n            this.element.removeAttribute(previous);\r\n        }\r\n        return this.processChange();\r\n    };\r\n    RouteHref.prototype.processChange = function () {\r\n        var _this = this;\r\n        return this.router\r\n            .ensureConfigured()\r\n            .then(function () {\r\n            if (!_this.isActive) {\r\n                return null;\r\n            }\r\n            var element = _this.element;\r\n            var href = _this.router.generate(_this.route, _this.params);\r\n            if (element.au.controller) {\r\n                element.au.controller.viewModel[_this.attribute] = href;\r\n            }\r\n            else {\r\n                element.setAttribute(_this.attribute, href);\r\n            }\r\n            return null;\r\n        })\r\n            .catch(function (reason) {\r\n            logger.error(reason);\r\n        });\r\n    };\r\n    RouteHref.$resource = {\r\n        type: 'attribute',\r\n        name: 'route-href',\r\n        bindables: [\r\n            { name: 'route', changeHandler: 'processChange', primaryProperty: true },\r\n            { name: 'params', changeHandler: 'processChange' },\r\n            'attribute'\r\n        ]\r\n    };\r\n    return RouteHref;\r\n}());\n\nfunction configure(config) {\r\n    config\r\n        .singleton(RouteLoader, TemplatingRouteLoader)\r\n        .singleton(Router, AppRouter)\r\n        .globalResources(RouterView, RouteHref);\r\n    config.container.registerAlias(Router, AppRouter);\r\n}\n\nexport { RouteHref, RouterView, RouterViewLocator, TemplatingRouteLoader, configure };\n//# sourceMappingURL=aurelia-templating-router.js.map\n"],"sourceRoot":""}