(function (_, kotlin_kotlin, kotlin_org_kodein_type_kaverit) {
  'use strict';
  //region block: imports
  var imul = Math.imul;
  var protoOf = kotlin_kotlin.$_$.wc;
  var classMeta = kotlin_kotlin.$_$.lb;
  var setMetadataFor = kotlin_kotlin.$_$.xc;
  var VOID = kotlin_kotlin.$_$.f;
  var LinkedHashMap_init_$Create$ = kotlin_kotlin.$_$.v;
  var first = kotlin_kotlin.$_$.p7;
  var ArrayList_init_$Create$ = kotlin_kotlin.$_$.m;
  var Unit_instance = kotlin_kotlin.$_$.m5;
  var filterNotNull = kotlin_kotlin.$_$.m7;
  var sorted = kotlin_kotlin.$_$.p9;
  var StringBuilder_init_$Create$ = kotlin_kotlin.$_$.f1;
  var repeat = kotlin_kotlin.$_$.tf;
  var ensureNotNull = kotlin_kotlin.$_$.zi;
  var KProperty1 = kotlin_kotlin.$_$.vd;
  var getPropertyCallableRef = kotlin_kotlin.$_$.ub;
  var objectMeta = kotlin_kotlin.$_$.vc;
  var toString = kotlin_kotlin.$_$.mj;
  var Companion_getInstance = kotlin_org_kodein_type_kaverit.$_$.a;
  var equals = kotlin_kotlin.$_$.ob;
  var objectCreate = kotlin_kotlin.$_$.uc;
  var RuntimeException = kotlin_kotlin.$_$.gi;
  var RuntimeException_init_$Init$ = kotlin_kotlin.$_$.m2;
  var captureStack = kotlin_kotlin.$_$.fb;
  var hashCode = kotlin_kotlin.$_$.wb;
  var THROW_CCE = kotlin_kotlin.$_$.hi;
  var interfaceMeta = kotlin_kotlin.$_$.xb;
  var IllegalStateException_init_$Create$ = kotlin_kotlin.$_$.a2;
  var getBooleanHashCode = kotlin_kotlin.$_$.rb;
  var getStringHashCode = kotlin_kotlin.$_$.vb;
  var TypeToken = kotlin_org_kodein_type_kaverit.$_$.b;
  var isInterface = kotlin_kotlin.$_$.gc;
  var joinToString = kotlin_kotlin.$_$.a8;
  var erasedOf = kotlin_org_kodein_type_kaverit.$_$.c;
  var ArrayList_init_$Create$_0 = kotlin_kotlin.$_$.l;
  var toString_0 = kotlin_kotlin.$_$.bd;
  var HashSet_init_$Create$ = kotlin_kotlin.$_$.s;
  var HashMap_init_$Create$ = kotlin_kotlin.$_$.p;
  var addAll = kotlin_kotlin.$_$.e6;
  var collectionSizeOrDefault = kotlin_kotlin.$_$.n6;
  var charSequenceLength = kotlin_kotlin.$_$.jb;
  var Enum = kotlin_kotlin.$_$.uh;
  var Map = kotlin_kotlin.$_$.y5;
  var listOf = kotlin_kotlin.$_$.k8;
  var plus = kotlin_kotlin.$_$.z8;
  var emptyList = kotlin_kotlin.$_$.i7;
  var plus_0 = kotlin_kotlin.$_$.a9;
  var checkIndexOverflow = kotlin_kotlin.$_$.l6;
  var _Char___init__impl__6a9atx = kotlin_kotlin.$_$.u2;
  var mapCapacity = kotlin_kotlin.$_$.m8;
  var coerceAtLeast = kotlin_kotlin.$_$.jd;
  var LinkedHashMap_init_$Create$_0 = kotlin_kotlin.$_$.u;
  var to = kotlin_kotlin.$_$.nj;
  var KProperty0 = kotlin_kotlin.$_$.ud;
  var lazy = kotlin_kotlin.$_$.fj;
  var asSequence = kotlin_kotlin.$_$.h6;
  var filter = kotlin_kotlin.$_$.be;
  var flatMap = kotlin_kotlin.$_$.de;
  var mapNotNull = kotlin_kotlin.$_$.ge;
  var map = kotlin_kotlin.$_$.he;
  var toList = kotlin_kotlin.$_$.ne;
  var Triple = kotlin_kotlin.$_$.ki;
  var ArrayList_init_$Create$_1 = kotlin_kotlin.$_$.n;
  var HashMap_init_$Create$_0 = kotlin_kotlin.$_$.q;
  var Collection = kotlin_kotlin.$_$.p5;
  var getOrNull = kotlin_kotlin.$_$.t7;
  //endregion
  //region block: pre-declaration
  setMetadataFor(DIDefining, 'DIDefining', classMeta);
  setMetadataFor(DIDefinition, 'DIDefinition', classMeta, DIDefining);
  setMetadataFor(NonCached, 'NonCached', objectMeta);
  setMetadataFor(ImplWithScope, 'ImplWithScope', classMeta);
  setMetadataFor(DependencyLoopException, 'DependencyLoopException', classMeta, RuntimeException);
  setMetadataFor(NotFoundException, 'NotFoundException', classMeta, RuntimeException);
  setMetadataFor(OverridingException, 'OverridingException', classMeta, RuntimeException);
  setMetadataFor(Key, 'Key', classMeta);
  function constant$default(tag, overrides, $super) {
    overrides = overrides === VOID ? null : overrides;
    return $super === VOID ? this.p56(tag, overrides) : $super.p56.call(this, tag, overrides);
  }
  function import$default(module_0, allowOverride, $super) {
    allowOverride = allowOverride === VOID ? false : allowOverride;
    var tmp;
    if ($super === VOID) {
      this.r56(module_0, allowOverride);
      tmp = Unit_instance;
    } else {
      tmp = $super.r56.call(this, module_0, allowOverride);
    }
    return tmp;
  }
  setMetadataFor(Builder, 'Builder', interfaceMeta);
  function extend$default(di, allowOverride, copy, $super) {
    allowOverride = allowOverride === VOID ? false : allowOverride;
    copy = copy === VOID ? NonCached_instance : copy;
    var tmp;
    if ($super === VOID) {
      this.u56(di, allowOverride, copy);
      tmp = Unit_instance;
    } else {
      tmp = $super.u56.call(this, di, allowOverride, copy);
    }
    return tmp;
  }
  setMetadataFor(MainBuilder, 'MainBuilder', interfaceMeta, VOID, [Builder]);
  setMetadataFor(Module, 'Module', classMeta);
  setMetadataFor(Companion, 'Companion', objectMeta);
  function get_diContext() {
    return get_AnyDIContext();
  }
  function get_diTrigger() {
    return null;
  }
  setMetadataFor(DIAware, 'DIAware', interfaceMeta);
  function get_di() {
    return this;
  }
  setMetadataFor(DI, 'DI', interfaceMeta, VOID, [DIAware]);
  setMetadataFor(DIContext, 'DIContext', interfaceMeta);
  setMetadataFor(Value, 'Value', classMeta, VOID, [DIContext]);
  setMetadataFor(Companion_0, 'Companion', objectMeta);
  setMetadataFor(DIWrapper, 'DIWrapper', classMeta, VOID, [DI]);
  setMetadataFor(Contexes, 'Contexes', objectMeta);
  function factory$default(key, context, overrideLevel, $super) {
    overrideLevel = overrideLevel === VOID ? 0 : overrideLevel;
    return $super === VOID ? this.p57(key, context, overrideLevel) : $super.p57.call(this, key, context, overrideLevel);
  }
  function factoryOrNull$default(key, context, overrideLevel, $super) {
    overrideLevel = overrideLevel === VOID ? 0 : overrideLevel;
    return $super === VOID ? this.r57(key, context, overrideLevel) : $super.r57.call(this, key, context, overrideLevel);
  }
  function provider(key, context, overrideLevel) {
    // Inline function 'org.kodein.di.toProvider' call
    var this_0 = this.q57(key, context);
    return DIContainer$provider$lambda(this_0);
  }
  function provider$default(key, context, overrideLevel, $super) {
    overrideLevel = overrideLevel === VOID ? 0 : overrideLevel;
    return $super === VOID ? this.t57(key, context, overrideLevel) : provider(key, context, overrideLevel);
  }
  function providerOrNull(key, context, overrideLevel) {
    var tmp0_safe_receiver = this.s57(key, context);
    var tmp;
    if (tmp0_safe_receiver == null) {
      tmp = null;
    } else {
      // Inline function 'org.kodein.di.toProvider' call
      tmp = DIContainer$providerOrNull$lambda(tmp0_safe_receiver);
    }
    return tmp;
  }
  function providerOrNull$default(key, context, overrideLevel, $super) {
    overrideLevel = overrideLevel === VOID ? 0 : overrideLevel;
    return $super === VOID ? this.u57(key, context, overrideLevel) : providerOrNull(key, context, overrideLevel);
  }
  setMetadataFor(DIContainer, 'DIContainer', interfaceMeta);
  function find$default(key, overrideLevel, all, $super) {
    overrideLevel = overrideLevel === VOID ? 0 : overrideLevel;
    all = all === VOID ? false : all;
    return $super === VOID ? this.x57(key, overrideLevel, all) : $super.x57.call(this, key, overrideLevel, all);
  }
  setMetadataFor(DITree, 'DITree', interfaceMeta);
  function get_di_0() {
    return this.b58();
  }
  setMetadataFor(DirectDIBase, 'DirectDIBase', interfaceMeta);
  setMetadataFor(NoDefinedTag, 'NoDefinedTag', objectMeta);
  setMetadataFor(SearchSpecs, 'SearchSpecs', classMeta, VOID, VOID, SearchSpecs);
  setMetadataFor(NoArgBindingDIWrap, 'NoArgBindingDIWrap', classMeta, VOID, [DirectDIBase]);
  setMetadataFor(ErasedContext, 'ErasedContext', objectMeta, VOID, [DIContext]);
  setMetadataFor(DIBinding$Copier$Companion$invoke$1, VOID, classMeta);
  setMetadataFor(Companion_1, 'Companion', objectMeta);
  function factoryFullName() {
    return this.o58();
  }
  function get_scope() {
    return null;
  }
  function get_description() {
    var arg = !equals(this.q58(), Companion_getInstance().q54_1) ? this.q58().s54() + ' -> ' : '';
    var tmp;
    var tmp_0 = this.c56();
    if (tmp_0 instanceof NoScope) {
      tmp = null;
    } else {
      tmp = this.c56();
    }
    var scope = tmp;
    var tmp_1;
    if (scope == null) {
      tmp_1 = null;
    } else {
      // Inline function 'kotlin.let' call
      // Inline function 'kotlin.contracts.contract' call
      // Inline function 'org.kodein.di.bindings.DIBinding.<get-description>.<anonymous>' call
      tmp_1 = 'scoped(' + erasedOf(scope).s54() + ').';
    }
    var tmp1_elvis_lhs = tmp_1;
    var context = tmp1_elvis_lhs == null ? !equals(this.b56(), Companion_getInstance().r54_1) ? 'contexted<' + this.b56().s54() + '>().' : '' : tmp1_elvis_lhs;
    return context + this.o58() + ' { ' + arg + this.r58().s54() + ' }';
  }
  function get_fullDescription() {
    var arg = !equals(this.q58(), Companion_getInstance().q54_1) ? this.q58().u54() + ' -> ' : '';
    var tmp;
    var tmp_0 = this.c56();
    if (tmp_0 instanceof NoScope) {
      tmp = null;
    } else {
      tmp = this.c56();
    }
    var scope = tmp;
    var tmp_1;
    if (scope == null) {
      tmp_1 = null;
    } else {
      // Inline function 'kotlin.let' call
      // Inline function 'kotlin.contracts.contract' call
      // Inline function 'org.kodein.di.bindings.DIBinding.<get-fullDescription>.<anonymous>' call
      tmp_1 = 'scoped(' + erasedOf(scope).u54() + ').';
    }
    var tmp1_elvis_lhs = tmp_1;
    var context = tmp1_elvis_lhs == null ? !equals(this.b56(), Companion_getInstance().r54_1) ? 'contexted<' + this.b56().u54() + '>().' : '' : tmp1_elvis_lhs;
    return context + this.p58() + ' { ' + arg + this.r58().u54() + ' }';
  }
  function get_copier() {
    return null;
  }
  function get_supportSubTypes() {
    return false;
  }
  setMetadataFor(DIBinding, 'DIBinding', interfaceMeta);
  function get_argType() {
    return Companion_getInstance().q54_1;
  }
  setMetadataFor(NoArgDIBinding, 'NoArgDIBinding', interfaceMeta, VOID, [DIBinding]);
  setMetadataFor(SingletonReference, 'SingletonReference', objectMeta);
  setMetadataFor(Reference, 'Reference', classMeta);
  setMetadataFor(ScopeRegistry, 'ScopeRegistry', classMeta);
  setMetadataFor(StandardScopeRegistry, 'StandardScopeRegistry', classMeta, ScopeRegistry, VOID, StandardScopeRegistry);
  setMetadataFor(ContextTranslator, 'ContextTranslator', interfaceMeta);
  setMetadataFor(SimpleContextTranslator, 'SimpleContextTranslator', classMeta, VOID, [ContextTranslator]);
  setMetadataFor(NoScope, 'NoScope', classMeta, VOID, VOID, NoScope);
  setMetadataFor(CompositeContextTranslator, 'CompositeContextTranslator', classMeta, VOID, [ContextTranslator]);
  setMetadataFor(Singleton, 'Singleton', classMeta, VOID, [NoArgDIBinding]);
  setMetadataFor(Provider, 'Provider', classMeta, VOID, [NoArgDIBinding]);
  setMetadataFor(ScopeKey, 'ScopeKey', classMeta);
  setMetadataFor(InstanceBinding, 'InstanceBinding', classMeta, VOID, [NoArgDIBinding]);
  setMetadataFor(DIBuilderImpl, 'DIBuilderImpl', classMeta, VOID, [Builder]);
  setMetadataFor(DIMainBuilderImpl, 'DIMainBuilderImpl', classMeta, DIBuilderImpl, [DIBuilderImpl, MainBuilder]);
  setMetadataFor(TypeBinder, 'TypeBinder', classMeta);
  setMetadataFor(ConstantBinder, 'ConstantBinder', classMeta);
  setMetadataFor(OverrideMode, 'OverrideMode', classMeta, Enum);
  setMetadataFor(DIContainerBuilderImpl$OverrideMode$ALLOW_SILENT, 'ALLOW_SILENT', classMeta, OverrideMode);
  setMetadataFor(DIContainerBuilderImpl$OverrideMode$ALLOW_EXPLICIT, 'ALLOW_EXPLICIT', classMeta, OverrideMode);
  setMetadataFor(DIContainerBuilderImpl$OverrideMode$FORBID, 'FORBID', classMeta, OverrideMode);
  setMetadataFor(Companion_2, 'Companion', objectMeta);
  setMetadataFor(DIContainerBuilderImpl, 'DIContainerBuilderImpl', classMeta);
  setMetadataFor(Node, 'Node', classMeta);
  setMetadataFor(DIContainerImpl, 'DIContainerImpl', classMeta, VOID, [DIContainer]);
  setMetadataFor(Companion_3, 'Companion', objectMeta);
  setMetadataFor(DIImpl, 'DIImpl', classMeta, VOID, [DI]);
  setMetadataFor(BindingDIImpl, 'BindingDIImpl', classMeta, VOID, [DirectDIBase]);
  setMetadataFor(DITreeImpl, 'DITreeImpl', classMeta, VOID, [DITree]);
  setMetadataFor(TypeChecker, 'TypeChecker', classMeta);
  setMetadataFor(Down, 'Down', classMeta, TypeChecker);
  setMetadataFor(Up, 'Up', classMeta, TypeChecker);
  setMetadataFor(DirectDIBaseImpl, 'DirectDIBaseImpl', classMeta, VOID, [DirectDIBase]);
  setMetadataFor(DIProperty, 'DIProperty', classMeta);
  setMetadataFor(DirectDIImpl, 'DirectDIImpl', classMeta, DirectDIBaseImpl, [DirectDIBaseImpl, DirectDIBase]);
  //endregion
  function DIDefinition(binding, fromModule, tree) {
    DIDefining.call(this, binding, fromModule);
    this.k55_1 = tree;
  }
  function description(_this__u8e3s4, withOverrides, ident) {
    withOverrides = withOverrides === VOID ? false : withOverrides;
    ident = ident === VOID ? 8 : ident;
    return descriptionImpl(_this__u8e3s4, withOverrides, ident, bindDescription$factory(), description$factory());
  }
  function DIDefining(binding, fromModule) {
    this.l55_1 = binding;
    this.m55_1 = fromModule;
  }
  function descriptionImpl(_this__u8e3s4, withOverrides, ident, keyBindDisp, bindingDisp) {
    // Inline function 'kotlin.collections.groupBy' call
    // Inline function 'kotlin.collections.groupByTo' call
    var this_0 = _this__u8e3s4.q2();
    var destination = LinkedHashMap_init_$Create$();
    var tmp0_iterator = this_0.w();
    while (tmp0_iterator.f()) {
      var element = tmp0_iterator.e();
      // Inline function 'org.kodein.di.descriptionImpl.<anonymous>' call
      var key = first(element.t2()).m55_1;
      // Inline function 'kotlin.collections.getOrPut' call
      var value = destination.q(key);
      var tmp;
      if (value == null) {
        // Inline function 'kotlin.collections.groupByTo.<anonymous>' call
        var answer = ArrayList_init_$Create$();
        destination.s(key, answer);
        tmp = answer;
      } else {
        tmp = value;
      }
      var list = tmp;
      list.i1(element);
    }
    var byModule = destination;
    var modules = sorted(filterNotNull(byModule.o2()));
    // Inline function 'kotlin.text.buildString' call
    // Inline function 'kotlin.contracts.contract' call
    // Inline function 'kotlin.apply' call
    var this_1 = StringBuilder_init_$Create$();
    // Inline function 'kotlin.contracts.contract' call
    // Inline function 'org.kodein.di.descriptionImpl.<anonymous>' call
    var tmp0_safe_receiver = byModule.q(null);
    if (tmp0_safe_receiver == null)
      null;
    else {
      // Inline function 'kotlin.let' call
      // Inline function 'kotlin.contracts.contract' call
      descriptionImpl$appendBindings(this_1, keyBindDisp, bindingDisp, withOverrides, ident, tmp0_safe_receiver);
    }
    // Inline function 'kotlin.collections.forEach' call
    var tmp0_iterator_0 = modules.w();
    while (tmp0_iterator_0.f()) {
      var element_0 = tmp0_iterator_0.e();
      // Inline function 'org.kodein.di.descriptionImpl.<anonymous>.<anonymous>' call
      this_1.y5(repeat(' ', ident) + 'module ' + element_0 + ' {\n');
      descriptionImpl$appendBindings(this_1, keyBindDisp, bindingDisp, withOverrides, ident + 4 | 0, ensureNotNull(byModule.q(element_0)));
      this_1.y5(repeat(' ', ident) + '}\n');
    }
    return this_1.toString();
  }
  function fullDescription(_this__u8e3s4, withOverrides, ident) {
    withOverrides = withOverrides === VOID ? false : withOverrides;
    ident = ident === VOID ? 8 : ident;
    return descriptionImpl(_this__u8e3s4, withOverrides, ident, bindFullDescription$factory(), fullDescription$factory());
  }
  function descriptionImpl$appendBindings(_this__u8e3s4, $keyBindDisp, $bindingDisp, $withOverrides, ident, entries) {
    var tmp0_iterator = entries.w();
    while (tmp0_iterator.f()) {
      var element = tmp0_iterator.e();
      // Inline function 'org.kodein.di.descriptionImpl.appendBindings.<anonymous>' call
      var keyDescription = $keyBindDisp(element.s2());
      _this__u8e3s4.y5(repeat(' ', ident) + keyDescription + ' { ' + $bindingDisp(first(element.t2()).l55_1) + ' }');
      if ($withOverrides) {
        var subIdent = keyDescription.length - 4 | 0;
        // Inline function 'kotlin.collections.forEach' call
        var tmp0_iterator_0 = element.t2().z(1, element.t2().u()).w();
        while (tmp0_iterator_0.f()) {
          var element_0 = tmp0_iterator_0.e();
          // Inline function 'org.kodein.di.descriptionImpl.appendBindings.<anonymous>.<anonymous>' call
          _this__u8e3s4.y5(repeat(' ', subIdent) + 'overrides ' + $bindingDisp(element_0.l55_1));
        }
      }
      _this__u8e3s4.y5('\n');
    }
    return Unit_instance;
  }
  function bindDescription$factory() {
    return getPropertyCallableRef('bindDescription', 1, KProperty1, function (receiver) {
      return receiver.s55();
    }, null);
  }
  function description$factory() {
    return getPropertyCallableRef('description', 1, KProperty1, function (receiver) {
      return receiver.t55();
    }, null);
  }
  function bindFullDescription$factory() {
    return getPropertyCallableRef('bindFullDescription', 1, KProperty1, function (receiver) {
      return receiver.u55();
    }, null);
  }
  function fullDescription$factory() {
    return getPropertyCallableRef('fullDescription', 1, KProperty1, function (receiver) {
      return receiver.v55();
    }, null);
  }
  function NonCached() {
  }
  protoOf(NonCached).w55 = function (tree) {
    // Inline function 'kotlin.collections.filter' call
    // Inline function 'kotlin.collections.filterTo' call
    var this_0 = tree.x55();
    var destination = LinkedHashMap_init_$Create$();
    // Inline function 'kotlin.collections.iterator' call
    var tmp0_iterator = this_0.q2().w();
    while (tmp0_iterator.f()) {
      var element = tmp0_iterator.e();
      // Inline function 'org.kodein.di.NonCached.keySet.<anonymous>' call
      if (first(element.t2()).l55_1.y55() == null) {
        destination.s(element.s2(), element.t2());
      }
    }
    return destination.o2();
  };
  var NonCached_instance;
  function NonCached_getInstance() {
    return NonCached_instance;
  }
  function appendDescription(_this__u8e3s4, $this, displayString) {
    if (!($this.q55_1 == null)) {
      _this__u8e3s4.y5(' tagged "' + toString($this.q55_1) + '"');
    }
    if (!equals($this.n55_1, Companion_getInstance().r54_1)) {
      _this__u8e3s4.y5(' on context ' + displayString($this.n55_1));
    }
    if (!equals($this.o55_1, Companion_getInstance().q54_1)) {
      _this__u8e3s4.y5(', with argument ' + displayString($this.o55_1));
    }
  }
  function TypeToken$simpleDispString$ref() {
    var l = function (p0) {
      return p0.s54();
    };
    l.callableName = 'simpleDispString';
    return l;
  }
  function TypeToken$qualifiedDispString$ref() {
    var l = function (p0) {
      return p0.u54();
    };
    l.callableName = 'qualifiedDispString';
    return l;
  }
  function ImplWithScope(contextType, scope) {
    this.z55_1 = contextType;
    this.a56_1 = scope;
  }
  protoOf(ImplWithScope).b56 = function () {
    return this.z55_1;
  };
  protoOf(ImplWithScope).c56 = function () {
    return this.a56_1;
  };
  protoOf(ImplWithScope).d56 = function () {
    return true;
  };
  function Module_init_$Init$(name, allowSilentOverride, prefix, init, $this) {
    allowSilentOverride = allowSilentOverride === VOID ? false : allowSilentOverride;
    prefix = prefix === VOID ? '' : prefix;
    Module.call($this, allowSilentOverride, prefix, init);
    $this.h56_1 = name;
    return $this;
  }
  function Module_init_$Create$(name, allowSilentOverride, prefix, init) {
    return Module_init_$Init$(name, allowSilentOverride, prefix, init, objectCreate(protoOf(Module)));
  }
  function DependencyLoopException(message) {
    RuntimeException_init_$Init$(message, this);
    captureStack(this, DependencyLoopException);
  }
  function NotFoundException(key, message) {
    RuntimeException_init_$Init$(message, this);
    captureStack(this, NotFoundException);
    this.i56_1 = key;
  }
  function OverridingException(message) {
    RuntimeException_init_$Init$(message, this);
    captureStack(this, OverridingException);
  }
  function Key(contextType, argType, type, tag) {
    this.n55_1 = contextType;
    this.o55_1 = argType;
    this.p55_1 = type;
    this.q55_1 = tag;
    this.r55_1 = 0;
  }
  protoOf(Key).hashCode = function () {
    if (this.r55_1 === 0) {
      this.r55_1 = hashCode(this.n55_1);
      this.r55_1 = imul(31, this.r55_1) + hashCode(this.o55_1) | 0;
      this.r55_1 = imul(29, hashCode(this.p55_1));
      var tmp = this;
      var tmp_0 = imul(23, this.r55_1);
      var tmp0_safe_receiver = this.q55_1;
      var tmp1_elvis_lhs = tmp0_safe_receiver == null ? null : hashCode(tmp0_safe_receiver);
      tmp.r55_1 = tmp_0 + (tmp1_elvis_lhs == null ? 0 : tmp1_elvis_lhs) | 0;
    }
    return this.r55_1;
  };
  protoOf(Key).toString = function () {
    return this.t55();
  };
  protoOf(Key).s55 = function () {
    // Inline function 'kotlin.text.buildString' call
    // Inline function 'kotlin.contracts.contract' call
    // Inline function 'kotlin.apply' call
    var this_0 = StringBuilder_init_$Create$();
    // Inline function 'kotlin.contracts.contract' call
    // Inline function 'org.kodein.di.Key.<get-bindDescription>.<anonymous>' call
    this_0.y5('bind<' + this.p55_1.s54() + '>');
    if (!(this.q55_1 == null)) {
      this_0.y5('(tag = "' + toString(this.q55_1) + '")');
    }
    return this_0.toString();
  };
  protoOf(Key).u55 = function () {
    // Inline function 'kotlin.text.buildString' call
    // Inline function 'kotlin.contracts.contract' call
    // Inline function 'kotlin.apply' call
    var this_0 = StringBuilder_init_$Create$();
    // Inline function 'kotlin.contracts.contract' call
    // Inline function 'org.kodein.di.Key.<get-bindFullDescription>.<anonymous>' call
    this_0.y5('bind<' + this.p55_1.u54() + '>');
    if (!(this.q55_1 == null)) {
      this_0.y5('(tag = "' + toString(this.q55_1) + '")');
    }
    return this_0.toString();
  };
  protoOf(Key).t55 = function () {
    // Inline function 'kotlin.text.buildString' call
    // Inline function 'kotlin.contracts.contract' call
    // Inline function 'kotlin.apply' call
    var this_0 = StringBuilder_init_$Create$();
    // Inline function 'kotlin.contracts.contract' call
    // Inline function 'org.kodein.di.Key.<get-description>.<anonymous>' call
    this_0.y5(this.p55_1.s54());
    appendDescription(this_0, this, TypeToken$simpleDispString$ref());
    return this_0.toString();
  };
  protoOf(Key).j56 = function () {
    return '(context: ' + this.n55_1.s54() + ', arg: ' + this.o55_1.s54() + ', type: ' + this.p55_1.s54() + ', tag: ' + toString(this.q55_1) + ')';
  };
  protoOf(Key).v55 = function () {
    // Inline function 'kotlin.text.buildString' call
    // Inline function 'kotlin.contracts.contract' call
    // Inline function 'kotlin.apply' call
    var this_0 = StringBuilder_init_$Create$();
    // Inline function 'kotlin.contracts.contract' call
    // Inline function 'org.kodein.di.Key.<get-fullDescription>.<anonymous>' call
    this_0.y5(this.p55_1.u54());
    appendDescription(this_0, this, TypeToken$qualifiedDispString$ref());
    return this_0.toString();
  };
  protoOf(Key).k56 = function (contextType, argType, type, tag) {
    return new Key(contextType, argType, type, tag);
  };
  protoOf(Key).l56 = function (contextType, argType, type, tag, $super) {
    contextType = contextType === VOID ? this.n55_1 : contextType;
    argType = argType === VOID ? this.o55_1 : argType;
    type = type === VOID ? this.p55_1 : type;
    tag = tag === VOID ? this.q55_1 : tag;
    return $super === VOID ? this.k56(contextType, argType, type, tag) : $super.k56.call(this, contextType, argType, type, tag);
  };
  protoOf(Key).equals = function (other) {
    if (this === other)
      return true;
    if (!(other instanceof Key))
      return false;
    var tmp0_other_with_cast = other instanceof Key ? other : THROW_CCE();
    if (!equals(this.n55_1, tmp0_other_with_cast.n55_1))
      return false;
    if (!equals(this.o55_1, tmp0_other_with_cast.o55_1))
      return false;
    if (!equals(this.p55_1, tmp0_other_with_cast.p55_1))
      return false;
    if (!equals(this.q55_1, tmp0_other_with_cast.q55_1))
      return false;
    return true;
  };
  function Builder() {
  }
  function MainBuilder() {
  }
  function Module(allowSilentOverride, prefix, init) {
    allowSilentOverride = allowSilentOverride === VOID ? false : allowSilentOverride;
    prefix = prefix === VOID ? '' : prefix;
    this.e56_1 = allowSilentOverride;
    this.f56_1 = prefix;
    this.g56_1 = init;
    this.h56_1 = null;
  }
  protoOf(Module).dc = function () {
    var tmp0_elvis_lhs = this.h56_1;
    var tmp;
    if (tmp0_elvis_lhs == null) {
      throw IllegalStateException_init_$Create$('module must have a name.');
    } else {
      tmp = tmp0_elvis_lhs;
    }
    return tmp;
  };
  protoOf(Module).toString = function () {
    return 'Module(allowSilentOverride=' + this.e56_1 + ', prefix=' + this.f56_1 + ', init=' + this.g56_1 + ')';
  };
  protoOf(Module).hashCode = function () {
    var result = getBooleanHashCode(this.e56_1);
    result = imul(result, 31) + getStringHashCode(this.f56_1) | 0;
    result = imul(result, 31) + hashCode(this.g56_1) | 0;
    return result;
  };
  protoOf(Module).equals = function (other) {
    if (this === other)
      return true;
    if (!(other instanceof Module))
      return false;
    var tmp0_other_with_cast = other instanceof Module ? other : THROW_CCE();
    if (!(this.e56_1 === tmp0_other_with_cast.e56_1))
      return false;
    if (!(this.f56_1 === tmp0_other_with_cast.f56_1))
      return false;
    if (!equals(this.g56_1, tmp0_other_with_cast.g56_1))
      return false;
    return true;
  };
  function Companion() {
    this.w56_1 = false;
    this.x56_1 = false;
  }
  protoOf(Companion).y56 = function (allowSilentOverride, init) {
    return DIImpl_init_$Create$(allowSilentOverride, init);
  };
  protoOf(Companion).z56 = function (allowSilentOverride, init, $super) {
    allowSilentOverride = allowSilentOverride === VOID ? false : allowSilentOverride;
    return $super === VOID ? this.y56(allowSilentOverride, init) : $super.y56.call(this, allowSilentOverride, init);
  };
  var Companion_instance;
  function Companion_getInstance_0() {
    return Companion_instance;
  }
  function DI() {
  }
  function get_direct(_this__u8e3s4) {
    return new DirectDIImpl(_this__u8e3s4.a57().b57(), _this__u8e3s4.c57());
  }
  function DIAware() {
  }
  function Instance(_this__u8e3s4, type, tag) {
    tag = tag === VOID ? null : tag;
    var tmp = _this__u8e3s4.d57();
    var tmp_0 = _this__u8e3s4.c57();
    return new DIProperty(tmp, tmp_0, Instance$lambda(_this__u8e3s4, type, tag));
  }
  function Value(type, value) {
    this.e57_1 = type;
    this.f57_1 = value;
  }
  protoOf(Value).g57 = function () {
    return this.e57_1;
  };
  protoOf(Value).t2 = function () {
    return this.f57_1;
  };
  protoOf(Value).toString = function () {
    return 'Value(type=' + this.e57_1 + ', value=' + this.f57_1 + ')';
  };
  protoOf(Value).hashCode = function () {
    var result = hashCode(this.e57_1);
    result = imul(result, 31) + hashCode(this.f57_1) | 0;
    return result;
  };
  protoOf(Value).equals = function (other) {
    if (this === other)
      return true;
    if (!(other instanceof Value))
      return false;
    var tmp0_other_with_cast = other instanceof Value ? other : THROW_CCE();
    if (!equals(this.e57_1, tmp0_other_with_cast.e57_1))
      return false;
    if (!equals(this.f57_1, tmp0_other_with_cast.f57_1))
      return false;
    return true;
  };
  function Companion_0() {
  }
  protoOf(Companion_0).h57 = function (type, value) {
    return new Value(type, value);
  };
  var Companion_instance_0;
  function Companion_getInstance_1() {
    return Companion_instance_0;
  }
  function DIContext() {
  }
  function On(_this__u8e3s4, context, trigger) {
    context = context === VOID ? _this__u8e3s4.c57() : context;
    trigger = trigger === VOID ? _this__u8e3s4.d57() : trigger;
    return DIWrapper_init_$Create$(_this__u8e3s4, context, trigger);
  }
  function InstanceOrNull(_this__u8e3s4, type, tag) {
    tag = tag === VOID ? null : tag;
    var tmp = _this__u8e3s4.d57();
    var tmp_0 = _this__u8e3s4.c57();
    return new DIProperty(tmp, tmp_0, InstanceOrNull$lambda(_this__u8e3s4, type, tag));
  }
  function get_AnyDIContext() {
    return Contexes_getInstance().i57_1;
  }
  function DIWrapper_init_$Init$(base, diContext, trigger, $this) {
    diContext = diContext === VOID ? base.c57() : diContext;
    trigger = trigger === VOID ? base.d57() : trigger;
    DIWrapper.call($this, base.a57(), diContext, trigger);
    return $this;
  }
  function DIWrapper_init_$Create$(base, diContext, trigger) {
    return DIWrapper_init_$Init$(base, diContext, trigger, objectCreate(protoOf(DIWrapper)));
  }
  function DIWrapper(_base, diContext, diTrigger) {
    diTrigger = diTrigger === VOID ? null : diTrigger;
    this.j57_1 = _base;
    this.k57_1 = diContext;
    this.l57_1 = diTrigger;
  }
  protoOf(DIWrapper).c57 = function () {
    return this.k57_1;
  };
  protoOf(DIWrapper).d57 = function () {
    return this.l57_1;
  };
  protoOf(DIWrapper).a57 = function () {
    return this;
  };
  protoOf(DIWrapper).b57 = function () {
    return this.j57_1.b57();
  };
  function Contexes() {
    Contexes_instance = this;
    this.i57_1 = Companion_instance_0.h57(Companion_getInstance().r54_1, new Object());
  }
  var Contexes_instance;
  function Contexes_getInstance() {
    if (Contexes_instance == null)
      new Contexes();
    return Contexes_instance;
  }
  function Instance$lambda($this_Instance, $type, $tag) {
    return function (ctx, _anonymous_parameter_1__qggqgd) {
      var tmp = $this_Instance.a57().b57();
      // Inline function 'org.kodein.di.anyType' call
      var tmp_0 = ctx.g57();
      var tmp$ret$0 = isInterface(tmp_0, TypeToken) ? tmp_0 : THROW_CCE();
      return tmp.m57(new Key(tmp$ret$0, Companion_getInstance().q54_1, $type, $tag), ctx.t2())();
    };
  }
  function InstanceOrNull$lambda($this_InstanceOrNull, $type, $tag) {
    return function (ctx, _anonymous_parameter_1__qggqgd) {
      var tmp = $this_InstanceOrNull.a57().b57();
      // Inline function 'org.kodein.di.anyType' call
      var tmp_0 = ctx.g57();
      var tmp$ret$0 = isInterface(tmp_0, TypeToken) ? tmp_0 : THROW_CCE();
      var tmp0_safe_receiver = tmp.n57(new Key(tmp$ret$0, Companion_getInstance().q54_1, $type, $tag), ctx.t2());
      return tmp0_safe_receiver == null ? null : tmp0_safe_receiver();
    };
  }
  function DIContainer$provider$lambda($this) {
    return function () {
      return $this(Unit_instance);
    };
  }
  function DIContainer$providerOrNull$lambda($this) {
    return function () {
      return $this(Unit_instance);
    };
  }
  function DIContainer() {
  }
  function DITree() {
  }
  function DirectDIBase() {
  }
  function NoDefinedTag() {
  }
  var NoDefinedTag_instance;
  function NoDefinedTag_getInstance() {
    return NoDefinedTag_instance;
  }
  function SearchSpecs(contextType, argType, type, tag) {
    contextType = contextType === VOID ? null : contextType;
    argType = argType === VOID ? null : argType;
    type = type === VOID ? null : type;
    tag = tag === VOID ? NoDefinedTag_instance : tag;
    this.g58_1 = contextType;
    this.h58_1 = argType;
    this.i58_1 = type;
    this.j58_1 = tag;
  }
  protoOf(SearchSpecs).toString = function () {
    var args = ArrayList_init_$Create$();
    if (!(this.g58_1 == null)) {
      // Inline function 'kotlin.collections.plusAssign' call
      var tmp0_safe_receiver = this.g58_1;
      var element = 'contextType=' + (tmp0_safe_receiver == null ? null : tmp0_safe_receiver.s54());
      args.i1(element);
    }
    if (!(this.h58_1 == null)) {
      // Inline function 'kotlin.collections.plusAssign' call
      var tmp1_safe_receiver = this.h58_1;
      var element_0 = 'argType=' + (tmp1_safe_receiver == null ? null : tmp1_safe_receiver.s54());
      args.i1(element_0);
    }
    if (!(this.i58_1 == null)) {
      // Inline function 'kotlin.collections.plusAssign' call
      var tmp2_safe_receiver = this.i58_1;
      var element_1 = 'type=' + (tmp2_safe_receiver == null ? null : tmp2_safe_receiver.s54());
      args.i1(element_1);
    }
    if (!equals(this.j58_1, NoDefinedTag_instance)) {
      // Inline function 'kotlin.collections.plusAssign' call
      var element_2 = 'tag=' + toString(this.j58_1);
      args.i1(element_2);
    }
    return '[' + joinToString(args, ', ') + ']';
  };
  function NoArgBindingDIWrap(_di) {
    this.k58_1 = _di;
  }
  protoOf(NoArgBindingDIWrap).a57 = function () {
    return this.k58_1.a57();
  };
  protoOf(NoArgBindingDIWrap).f58 = function () {
    return this.k58_1.f58();
  };
  protoOf(NoArgBindingDIWrap).b58 = function () {
    return this.k58_1.b58();
  };
  protoOf(NoArgBindingDIWrap).d58 = function (type, tag) {
    return this.k58_1.d58(type, tag);
  };
  protoOf(NoArgBindingDIWrap).e58 = function (type, tag) {
    return this.k58_1.e58(type, tag);
  };
  protoOf(NoArgBindingDIWrap).c58 = function (context) {
    return this.k58_1.c58(context);
  };
  protoOf(NoArgBindingDIWrap).od = function () {
    return this.k58_1.od();
  };
  function ErasedContext() {
  }
  protoOf(ErasedContext).g57 = function () {
    return Companion_getInstance().r54_1;
  };
  protoOf(ErasedContext).t2 = function () {
    return ErasedContext_instance;
  };
  var ErasedContext_instance;
  function ErasedContext_getInstance() {
    return ErasedContext_instance;
  }
  function DIBinding$Copier$Companion$invoke$1($f) {
    this.l58_1 = $f;
  }
  protoOf(DIBinding$Copier$Companion$invoke$1).m58 = function (builder) {
    return this.l58_1(builder);
  };
  function Companion_1() {
  }
  protoOf(Companion_1).n58 = function (f) {
    return new DIBinding$Copier$Companion$invoke$1(f);
  };
  var Companion_instance_1;
  function Companion_getInstance_2() {
    return Companion_instance_1;
  }
  function DIBinding() {
  }
  function NoArgDIBinding() {
  }
  function SingletonReference$make$lambda($value) {
    return function () {
      return $value;
    };
  }
  function SingletonReference() {
  }
  protoOf(SingletonReference).u58 = function (creator) {
    var value = creator();
    return new Reference(value, SingletonReference$make$lambda(value));
  };
  var SingletonReference_instance;
  function SingletonReference_getInstance() {
    return SingletonReference_instance;
  }
  function Reference(current, next) {
    this.v58_1 = current;
    this.w58_1 = next;
  }
  protoOf(Reference).y6 = function () {
    return this.v58_1;
  };
  protoOf(Reference).z6 = function () {
    return this.w58_1;
  };
  protoOf(Reference).toString = function () {
    return 'Reference(current=' + this.v58_1 + ', next=' + this.w58_1 + ')';
  };
  protoOf(Reference).hashCode = function () {
    var result = hashCode(this.v58_1);
    result = imul(result, 31) + hashCode(this.w58_1) | 0;
    return result;
  };
  protoOf(Reference).equals = function (other) {
    if (this === other)
      return true;
    if (!(other instanceof Reference))
      return false;
    var tmp0_other_with_cast = other instanceof Reference ? other : THROW_CCE();
    if (!equals(this.v58_1, tmp0_other_with_cast.v58_1))
      return false;
    if (!equals(this.w58_1, tmp0_other_with_cast.w58_1))
      return false;
    return true;
  };
  function ScopeRegistry() {
  }
  function StandardScopeRegistry() {
    ScopeRegistry.call(this);
    this.y58_1 = newConcurrentMap();
    this.z58_1 = new Object();
  }
  protoOf(StandardScopeRegistry).x58 = function (key, sync, creator) {
    var tmp$ret$2;
    $l$block_1: {
      // Inline function 'org.kodein.di.internal.synchronizedIfNull' call
      sync && this.z58_1;
      // Inline function 'org.kodein.di.bindings.StandardScopeRegistry.getOrCreate.<anonymous>' call
      var tmp0_safe_receiver = this.y58_1.q(key);
      var tmp0_safe_receiver_0 = tmp0_safe_receiver == null ? null : tmp0_safe_receiver();
      if (tmp0_safe_receiver_0 == null)
        null;
      else {
        // Inline function 'kotlin.let' call
        // Inline function 'kotlin.contracts.contract' call
        // Inline function 'org.kodein.di.bindings.StandardScopeRegistry.getOrCreate.<anonymous>' call
        tmp$ret$2 = tmp0_safe_receiver_0;
        break $l$block_1;
      }
      // Inline function 'org.kodein.di.internal.maySynchronized' call
      var tmp$ret$5;
      $l$block_0: {
        // Inline function 'org.kodein.di.internal.synchronizedIfNull.<anonymous>' call
        // Inline function 'org.kodein.di.bindings.StandardScopeRegistry.getOrCreate.<anonymous>' call
        var tmp0_safe_receiver_1 = this.y58_1.q(key);
        var tmp0_safe_receiver_2 = tmp0_safe_receiver_1 == null ? null : tmp0_safe_receiver_1();
        if (tmp0_safe_receiver_2 == null)
          null;
        else {
          // Inline function 'kotlin.let' call
          // Inline function 'kotlin.contracts.contract' call
          tmp$ret$5 = tmp0_safe_receiver_2;
          break $l$block_0;
        }
        // Inline function 'org.kodein.di.bindings.StandardScopeRegistry.getOrCreate.<anonymous>' call
        var tmp0_container = creator();
        var current = tmp0_container.y6();
        var next = tmp0_container.z6();
        // Inline function 'kotlin.collections.set' call
        this.y58_1.s(key, next);
        tmp$ret$2 = current;
        break $l$block_1;
      }
      var value = tmp$ret$5;
      // Inline function 'org.kodein.di.bindings.StandardScopeRegistry.getOrCreate.<anonymous>' call
      tmp$ret$2 = value;
    }
    return tmp$ret$2;
  };
  function ContextTranslator() {
  }
  function SimpleContextTranslator(contextType, scopeType, t) {
    this.c59_1 = contextType;
    this.d59_1 = scopeType;
    this.e59_1 = t;
  }
  protoOf(SimpleContextTranslator).b56 = function () {
    return this.c59_1;
  };
  protoOf(SimpleContextTranslator).a59 = function () {
    return this.d59_1;
  };
  protoOf(SimpleContextTranslator).b59 = function (di, ctx) {
    return this.e59_1(di, ctx);
  };
  protoOf(SimpleContextTranslator).toString = function () {
    return '()';
  };
  function NoScope() {
    this.f59_1 = new StandardScopeRegistry();
  }
  protoOf(NoScope).g59 = function (context) {
    return this.f59_1;
  };
  protoOf(NoScope).h59 = function (context) {
    return this.g59((context == null ? true : !(context == null)) ? context : THROW_CCE());
  };
  function toKContext(_this__u8e3s4, di, ctx) {
    var tmp0_safe_receiver = _this__u8e3s4.b59(di, ctx);
    var tmp;
    if (tmp0_safe_receiver == null) {
      tmp = null;
    } else {
      // Inline function 'kotlin.let' call
      // Inline function 'kotlin.contracts.contract' call
      // Inline function 'org.kodein.di.bindings.toKContext.<anonymous>' call
      tmp = Companion_instance_0.h57(_this__u8e3s4.a59(), tmp0_safe_receiver);
    }
    return tmp;
  }
  function CompositeContextTranslator(src, dst) {
    this.i59_1 = src;
    this.j59_1 = dst;
  }
  protoOf(CompositeContextTranslator).b56 = function () {
    return this.i59_1.b56();
  };
  protoOf(CompositeContextTranslator).a59 = function () {
    return this.j59_1.a59();
  };
  protoOf(CompositeContextTranslator).b59 = function (di, ctx) {
    var tmp0_safe_receiver = this.i59_1.b59(di, ctx);
    var tmp;
    if (tmp0_safe_receiver == null) {
      tmp = null;
    } else {
      // Inline function 'kotlin.let' call
      // Inline function 'kotlin.contracts.contract' call
      // Inline function 'org.kodein.di.bindings.CompositeContextTranslator.translate.<anonymous>' call
      tmp = this.j59_1.b59(di, tmp0_safe_receiver);
    }
    return tmp;
  };
  protoOf(CompositeContextTranslator).toString = function () {
    return '(' + this.i59_1 + ' -> ' + this.j59_1 + ')';
  };
  function factoryName($this, params) {
    // Inline function 'kotlin.text.buildString' call
    // Inline function 'kotlin.contracts.contract' call
    // Inline function 'kotlin.apply' call
    var this_0 = StringBuilder_init_$Create$();
    // Inline function 'kotlin.contracts.contract' call
    // Inline function 'org.kodein.di.bindings.Singleton.factoryName.<anonymous>' call
    this_0.y5('singleton');
    // Inline function 'kotlin.collections.isNotEmpty' call
    if (!params.c1()) {
      this_0.y5(joinToString(params, ', ', '(', ')'));
    }
    return this_0.toString();
  }
  function Singleton$getFactory$lambda$lambda$lambda(this$0, $bindingDi) {
    return function () {
      return this$0.p59_1(new NoArgBindingDIWrap($bindingDi));
    };
  }
  function Singleton$getFactory$lambda$lambda(this$0, $bindingDi) {
    return function () {
      return this$0.q59_1.u58(Singleton$getFactory$lambda$lambda$lambda(this$0, $bindingDi));
    };
  }
  function Singleton$getFactory$lambda($lateInitRegistry, this$0, $bindingDi) {
    return function (_anonymous_parameter_0__qggqh8) {
      var tmp0_elvis_lhs = $lateInitRegistry._v;
      var tmp;
      if (tmp0_elvis_lhs == null) {
        // Inline function 'kotlin.also' call
        var this_0 = this$0.k59_1.h59($bindingDi.od());
        // Inline function 'kotlin.contracts.contract' call
        // Inline function 'org.kodein.di.bindings.Singleton.getFactory.<anonymous>.<anonymous>' call
        $lateInitRegistry._v = this_0;
        tmp = this_0;
      } else {
        tmp = tmp0_elvis_lhs;
      }
      var registry = tmp;
      var tmp_0 = registry.x58(this$0.r59_1, this$0.o59_1, Singleton$getFactory$lambda$lambda(this$0, $bindingDi));
      return !(tmp_0 == null) ? tmp_0 : THROW_CCE();
    };
  }
  function Singleton$copier$lambda(this$0) {
    return function (it) {
      return new Singleton(this$0.k59_1, this$0.l59_1, this$0.m59_1, this$0.n59_1, this$0.q59_1, this$0.o59_1, this$0.p59_1);
    };
  }
  function Singleton(scope, contextType, explicitContext, createdType, refMaker, sync, creator) {
    refMaker = refMaker === VOID ? null : refMaker;
    sync = sync === VOID ? true : sync;
    this.k59_1 = scope;
    this.l59_1 = contextType;
    this.m59_1 = explicitContext;
    this.n59_1 = createdType;
    this.o59_1 = sync;
    this.p59_1 = creator;
    var tmp = this;
    tmp.q59_1 = refMaker == null ? SingletonReference_instance : refMaker;
    this.r59_1 = new ScopeKey(new Object(), Unit_instance);
    var tmp_0 = this;
    var tmp_1 = Companion_instance_1;
    tmp_0.s59_1 = tmp_1.n58(Singleton$copier$lambda(this));
  }
  protoOf(Singleton).c56 = function () {
    return this.k59_1;
  };
  protoOf(Singleton).b56 = function () {
    return this.l59_1;
  };
  protoOf(Singleton).r58 = function () {
    return this.n59_1;
  };
  protoOf(Singleton).o58 = function () {
    var params = ArrayList_init_$Create$_0(2);
    if (!equals(this.q59_1, SingletonReference_instance)) {
      params.i1('ref = ' + erasedOf(this.q59_1).s54());
    }
    return factoryName(this, params);
  };
  protoOf(Singleton).p58 = function () {
    var params = ArrayList_init_$Create$_0(2);
    if (!equals(this.q59_1, SingletonReference_instance)) {
      params.i1('ref = ' + erasedOf(this.q59_1).u54());
    }
    return factoryName(this, params);
  };
  protoOf(Singleton).t59 = function (key, di) {
    var lateInitRegistry = {_v: null};
    var bindingDi = this.m59_1 ? di : di.u59();
    return Singleton$getFactory$lambda(lateInitRegistry, this, bindingDi);
  };
  protoOf(Singleton).t58 = function (key, di) {
    return this.t59(key, di);
  };
  protoOf(Singleton).y55 = function () {
    return this.s59_1;
  };
  function Provider$getFactory$lambda(this$0, $di) {
    return function (_anonymous_parameter_0__qggqh8) {
      return this$0.x59_1(new NoArgBindingDIWrap($di));
    };
  }
  function Provider(contextType, createdType, creator) {
    this.v59_1 = contextType;
    this.w59_1 = createdType;
    this.x59_1 = creator;
  }
  protoOf(Provider).b56 = function () {
    return this.v59_1;
  };
  protoOf(Provider).r58 = function () {
    return this.w59_1;
  };
  protoOf(Provider).o58 = function () {
    return 'provider';
  };
  protoOf(Provider).t59 = function (key, di) {
    return Provider$getFactory$lambda(this, di);
  };
  protoOf(Provider).t58 = function (key, di) {
    return this.t59(key, di);
  };
  function ScopeKey(scopeId, arg) {
    this.y59_1 = scopeId;
    this.z59_1 = arg;
  }
  protoOf(ScopeKey).toString = function () {
    return 'ScopeKey(scopeId=' + toString_0(this.y59_1) + ', arg=' + this.z59_1 + ')';
  };
  protoOf(ScopeKey).hashCode = function () {
    var result = hashCode(this.y59_1);
    result = imul(result, 31) + (this.z59_1 == null ? 0 : hashCode(this.z59_1)) | 0;
    return result;
  };
  protoOf(ScopeKey).equals = function (other) {
    if (this === other)
      return true;
    if (!(other instanceof ScopeKey))
      return false;
    var tmp0_other_with_cast = other instanceof ScopeKey ? other : THROW_CCE();
    if (!equals(this.y59_1, tmp0_other_with_cast.y59_1))
      return false;
    if (!equals(this.z59_1, tmp0_other_with_cast.z59_1))
      return false;
    return true;
  };
  function InstanceBinding$getFactory$lambda(this$0) {
    return function (_anonymous_parameter_0__qggqh8) {
      return this$0.b5a_1;
    };
  }
  function InstanceBinding(createdType, instance) {
    this.a5a_1 = createdType;
    this.b5a_1 = instance;
    this.c5a_1 = Companion_getInstance().r54_1;
  }
  protoOf(InstanceBinding).r58 = function () {
    return this.a5a_1;
  };
  protoOf(InstanceBinding).o58 = function () {
    return 'instance';
  };
  protoOf(InstanceBinding).b56 = function () {
    return this.c5a_1;
  };
  protoOf(InstanceBinding).d5a = function (key, di) {
    return InstanceBinding$getFactory$lambda(this);
  };
  protoOf(InstanceBinding).t58 = function (key, di) {
    return this.d5a(key, di);
  };
  protoOf(InstanceBinding).t55 = function () {
    return this.o58() + ' ( ' + this.a5a_1.s54() + ' )';
  };
  protoOf(InstanceBinding).v55 = function () {
    return this.p58() + ' ( ' + this.a5a_1.u54() + ' )';
  };
  function DIMainBuilderImpl(allowSilentOverride) {
    DIBuilderImpl.call(this, null, '', HashSet_init_$Create$(), new DIContainerBuilderImpl(true, allowSilentOverride, HashMap_init_$Create$(), ArrayList_init_$Create$(), ArrayList_init_$Create$()));
    this.j5a_1 = ArrayList_init_$Create$();
    this.k5a_1 = Companion_instance.w56_1;
    this.l5a_1 = Companion_instance.x56_1;
  }
  protoOf(DIMainBuilderImpl).w57 = function () {
    return this.j5a_1;
  };
  protoOf(DIMainBuilderImpl).m5a = function () {
    return this.k5a_1;
  };
  protoOf(DIMainBuilderImpl).n5a = function () {
    return this.l5a_1;
  };
  protoOf(DIMainBuilderImpl).u56 = function (di, allowOverride, copy) {
    var keys = copy.w55(di.b57().o57());
    this.m56().x5a(di.b57(), allowOverride, keys);
    // Inline function 'kotlin.collections.plusAssign' call
    var this_0 = this.w57();
    var elements = di.b57().o57().w57();
    addAll(this_0, elements);
    // Inline function 'kotlin.collections.flatMap' call
    // Inline function 'kotlin.collections.flatMapTo' call
    var this_1 = this.m56().t5a_1;
    var destination = ArrayList_init_$Create$();
    // Inline function 'kotlin.collections.iterator' call
    var tmp0_iterator = this_1.q2().w();
    while (tmp0_iterator.f()) {
      var element = tmp0_iterator.e();
      // Inline function 'org.kodein.di.internal.DIMainBuilderImpl.extend.<anonymous>' call
      // Inline function 'kotlin.collections.map' call
      var this_2 = element.t2();
      // Inline function 'kotlin.collections.mapTo' call
      var destination_0 = ArrayList_init_$Create$_0(collectionSizeOrDefault(this_2, 10));
      var tmp0_iterator_0 = this_2.w();
      while (tmp0_iterator_0.f()) {
        var item = tmp0_iterator_0.e();
        // Inline function 'org.kodein.di.internal.DIMainBuilderImpl.extend.<anonymous>.<anonymous>' call
        var tmp$ret$1 = item.m55_1;
        destination_0.i1(tmp$ret$1);
      }
      var list = destination_0;
      addAll(destination, list);
    }
    this.q5a_1.m1(filterNotNull(destination));
  };
  function TypeBinder($outer, type, tag, overrides) {
    this.b5b_1 = $outer;
    this.y5a_1 = type;
    this.z5a_1 = tag;
    this.a5b_1 = overrides;
  }
  protoOf(TypeBinder).m56 = function () {
    return this.b5b_1.m56();
  };
  protoOf(TypeBinder).c5b = function (binding) {
    return this.m56().d5b(new Key(binding.b56(), binding.q58(), this.y5a_1, this.z5a_1), binding, this.b5b_1.o5a_1, this.a5b_1);
  };
  function ConstantBinder($outer, _tag, _overrides) {
    this.g5b_1 = $outer;
    this.e5b_1 = _tag;
    this.f5b_1 = _overrides;
  }
  protoOf(ConstantBinder).h5b = function (valueType, value) {
    return this.g5b_1.n56(this.e5b_1, this.f5b_1, new InstanceBinding(valueType, value));
  };
  function DIBuilderImpl(moduleName, prefix, importedModules, containerBuilder) {
    this.o5a_1 = moduleName;
    this.p5a_1 = prefix;
    this.q5a_1 = importedModules;
    this.r5a_1 = containerBuilder;
    this.s5a_1 = Companion_getInstance().r54_1;
  }
  protoOf(DIBuilderImpl).m56 = function () {
    return this.r5a_1;
  };
  protoOf(DIBuilderImpl).b56 = function () {
    return this.s5a_1;
  };
  protoOf(DIBuilderImpl).c56 = function () {
    return new NoScope();
  };
  protoOf(DIBuilderImpl).d56 = function () {
    return false;
  };
  protoOf(DIBuilderImpl).o56 = function (type, tag, overrides) {
    return new TypeBinder(this, type, tag, overrides);
  };
  protoOf(DIBuilderImpl).n56 = function (tag, overrides, binding) {
    this.m56().d5b(new Key(binding.b56(), binding.q58(), binding.r58(), tag), binding, this.o5a_1, overrides);
  };
  protoOf(DIBuilderImpl).p56 = function (tag, overrides) {
    return new ConstantBinder(this, tag, overrides);
  };
  protoOf(DIBuilderImpl).r56 = function (module_0, allowOverride) {
    var moduleName = this.p5a_1 + module_0.dc();
    var tmp;
    // Inline function 'kotlin.text.isNotEmpty' call
    if (charSequenceLength(moduleName) > 0) {
      tmp = this.q5a_1.a1(moduleName);
    } else {
      tmp = false;
    }
    if (tmp) {
      throw IllegalStateException_init_$Create$('Module "' + moduleName + '" has already been imported!');
    }
    // Inline function 'kotlin.collections.plusAssign' call
    this.q5a_1.i1(moduleName);
    // Inline function 'kotlin.apply' call
    var this_0 = new DIBuilderImpl(moduleName, this.p5a_1 + module_0.f56_1, this.q5a_1, this.m56().i5b(allowOverride, module_0.e56_1));
    // Inline function 'kotlin.contracts.contract' call
    module_0.g56_1(this_0);
  };
  protoOf(DIBuilderImpl).t56 = function (translator) {
    return this.m56().j5b(translator);
  };
  function DIContainerBuilderImpl$OverrideMode$ALLOW_SILENT() {
    OverrideMode.call(this, 'ALLOW_SILENT', 0);
    OverrideMode_ALLOW_SILENT_instance = this;
  }
  protoOf(DIContainerBuilderImpl$OverrideMode$ALLOW_SILENT).m5b = function () {
    return true;
  };
  protoOf(DIContainerBuilderImpl$OverrideMode$ALLOW_SILENT).n5b = function (overrides) {
    return overrides;
  };
  var OverrideMode_ALLOW_SILENT_instance;
  function DIContainerBuilderImpl$OverrideMode$ALLOW_EXPLICIT() {
    OverrideMode.call(this, 'ALLOW_EXPLICIT', 1);
    OverrideMode_ALLOW_EXPLICIT_instance = this;
  }
  protoOf(DIContainerBuilderImpl$OverrideMode$ALLOW_EXPLICIT).m5b = function () {
    return true;
  };
  protoOf(DIContainerBuilderImpl$OverrideMode$ALLOW_EXPLICIT).n5b = function (overrides) {
    return overrides == null ? false : overrides;
  };
  var OverrideMode_ALLOW_EXPLICIT_instance;
  function DIContainerBuilderImpl$OverrideMode$FORBID() {
    OverrideMode.call(this, 'FORBID', 2);
    OverrideMode_FORBID_instance = this;
  }
  protoOf(DIContainerBuilderImpl$OverrideMode$FORBID).m5b = function () {
    return false;
  };
  protoOf(DIContainerBuilderImpl$OverrideMode$FORBID).n5b = function (overrides) {
    var tmp;
    if (!(overrides == null) ? overrides : false) {
      throw new OverridingException('Overriding has been forbidden');
    } else {
      tmp = false;
    }
    return tmp;
  };
  var OverrideMode_FORBID_instance;
  function Companion_2() {
  }
  protoOf(Companion_2).s5b = function (allow, silent) {
    if (!allow)
      return OverrideMode_FORBID_getInstance();
    if (silent)
      return OverrideMode_ALLOW_SILENT_getInstance();
    return OverrideMode_ALLOW_EXPLICIT_getInstance();
  };
  var Companion_instance_2;
  function Companion_getInstance_3() {
    return Companion_instance_2;
  }
  var OverrideMode_entriesInitialized;
  function OverrideMode_initEntries() {
    if (OverrideMode_entriesInitialized)
      return Unit_instance;
    OverrideMode_entriesInitialized = true;
    OverrideMode_ALLOW_SILENT_instance = new DIContainerBuilderImpl$OverrideMode$ALLOW_SILENT();
    OverrideMode_ALLOW_EXPLICIT_instance = new DIContainerBuilderImpl$OverrideMode$ALLOW_EXPLICIT();
    OverrideMode_FORBID_instance = new DIContainerBuilderImpl$OverrideMode$FORBID();
  }
  function OverrideMode(name, ordinal) {
    Enum.call(this, name, ordinal);
  }
  function checkOverrides($this, key, overrides) {
    var mustOverride = $this.w5a_1.n5b(overrides);
    if (!(mustOverride == null)) {
      var tmp;
      if (mustOverride) {
        // Inline function 'kotlin.collections.contains' call
        // Inline function 'kotlin.collections.containsKey' call
        var this_0 = $this.t5a_1;
        tmp = !(isInterface(this_0, Map) ? this_0 : THROW_CCE()).r(key);
      } else {
        tmp = false;
      }
      if (tmp)
        throw new OverridingException('Binding ' + key + ' must override an existing binding.');
      var tmp_0;
      if (!mustOverride) {
        // Inline function 'kotlin.collections.contains' call
        // Inline function 'kotlin.collections.containsKey' call
        var this_1 = $this.t5a_1;
        tmp_0 = (isInterface(this_1, Map) ? this_1 : THROW_CCE()).r(key);
      } else {
        tmp_0 = false;
      }
      if (tmp_0)
        throw new OverridingException('Binding ' + key + ' must not override an existing binding.');
    }
  }
  function checkMatch($this, allowOverride) {
    if (!$this.w5a_1.m5b() ? allowOverride : false)
      throw new OverridingException('Overriding has been forbidden');
  }
  function OverrideMode_ALLOW_SILENT_getInstance() {
    OverrideMode_initEntries();
    return OverrideMode_ALLOW_SILENT_instance;
  }
  function OverrideMode_ALLOW_EXPLICIT_getInstance() {
    OverrideMode_initEntries();
    return OverrideMode_ALLOW_EXPLICIT_instance;
  }
  function OverrideMode_FORBID_getInstance() {
    OverrideMode_initEntries();
    return OverrideMode_FORBID_instance;
  }
  function DIContainerBuilderImpl(allowOverride, silentOverride, bindingsMap, callbacks, translators) {
    this.t5a_1 = bindingsMap;
    this.u5a_1 = callbacks;
    this.v5a_1 = translators;
    this.w5a_1 = Companion_instance_2.s5b(allowOverride, silentOverride);
  }
  protoOf(DIContainerBuilderImpl).d5b = function (key, binding, fromModule, overrides) {
    checkOverrides(this, key, overrides);
    // Inline function 'kotlin.collections.getOrPut' call
    var this_0 = this.t5a_1;
    var value = this_0.q(key);
    var tmp;
    if (value == null) {
      // Inline function 'org.kodein.di.internal.DIContainerBuilderImpl.bind.<anonymous>' call
      var answer = newLinkedList();
      this_0.s(key, answer);
      tmp = answer;
    } else {
      tmp = value;
    }
    var bindings = tmp;
    bindings.c2(0, new DIDefining(isInterface(binding, DIBinding) ? binding : THROW_CCE(), fromModule));
  };
  protoOf(DIContainerBuilderImpl).x5a = function (container, allowOverride, copy) {
    checkMatch(this, allowOverride);
    // Inline function 'kotlin.collections.forEach' call
    // Inline function 'kotlin.collections.iterator' call
    var tmp0_iterator = container.o57().x55().q2().w();
    while (tmp0_iterator.f()) {
      var element = tmp0_iterator.e();
      // Inline function 'org.kodein.di.internal.DIContainerBuilderImpl.extend.<anonymous>' call
      // Inline function 'kotlin.collections.component1' call
      var key = element.s2();
      // Inline function 'kotlin.collections.component2' call
      var bindings = element.t2();
      if (!allowOverride) {
        checkOverrides(this, key, null);
      }
      var tmp;
      if (copy.a1(key)) {
        // Inline function 'kotlin.also' call
        var this_0 = newLinkedList();
        // Inline function 'kotlin.contracts.contract' call
        // Inline function 'org.kodein.di.internal.DIContainerBuilderImpl.extend.<anonymous>.<anonymous>' call
        // Inline function 'kotlin.collections.mapTo' call
        var tmp0_iterator_0 = bindings.w();
        while (tmp0_iterator_0.f()) {
          var item = tmp0_iterator_0.e();
          // Inline function 'org.kodein.di.internal.DIContainerBuilderImpl.extend.<anonymous>.<anonymous>.<anonymous>' call
          var tmp0_safe_receiver = item.l55_1.y55();
          var tmp1_elvis_lhs = tmp0_safe_receiver == null ? null : tmp0_safe_receiver.m58(this);
          var tmp$ret$3 = new DIDefining(tmp1_elvis_lhs == null ? item.l55_1 : tmp1_elvis_lhs, item.m55_1);
          this_0.i1(tmp$ret$3);
        }
        tmp = this_0;
      } else {
        tmp = newLinkedList_0(bindings);
      }
      var newBindings = tmp;
      // Inline function 'kotlin.collections.set' call
      this.t5a_1.s(key, newBindings);
    }
    // Inline function 'kotlin.collections.plusAssign' call
    var this_1 = this.v5a_1;
    var elements = container.o57().v57();
    addAll(this_1, elements);
  };
  protoOf(DIContainerBuilderImpl).i5b = function (allowOverride, silentOverride) {
    checkMatch(this, allowOverride);
    return new DIContainerBuilderImpl(allowOverride, silentOverride, this.t5a_1, this.u5a_1, this.v5a_1);
  };
  protoOf(DIContainerBuilderImpl).j5b = function (translator) {
    // Inline function 'kotlin.collections.plusAssign' call
    this.v5a_1.i1(translator);
  };
  function displayString($this, key, overrideLevel) {
    var descProp = $this.y5b_1 ? bindFullDescription$factory_0(key) : bindDescription$factory_0(key);
    return !(overrideLevel === 0) ? 'overridden ' + descProp.get() : descProp.get();
  }
  function recursiveLoop($this, node, firstKey, firstOverrideLevel, tail) {
    var $this_0 = $this;
    var node_0 = node;
    var firstKey_0 = firstKey;
    var firstOverrideLevel_0 = firstOverrideLevel;
    var tail_0 = tail;
    $l$1: do {
      $l$0: do {
        var tmp;
        if (node_0.x5b_1 == null ? true : firstKey_0.equals(node_0.v5b_1) ? firstOverrideLevel_0 === node_0.w5b_1 : false) {
          tmp = plus(listOf(displayString($this_0, node_0.v5b_1, node_0.w5b_1)), tail_0);
        } else {
          var tmp0 = $this_0;
          var tmp4 = plus(listOf(displayString($this_0, node_0.v5b_1, node_0.w5b_1)), tail_0);
          $this_0 = tmp0;
          node_0 = node_0.x5b_1;
          firstKey_0 = firstKey_0;
          firstOverrideLevel_0 = firstOverrideLevel_0;
          tail_0 = tmp4;
          continue $l$0;
        }
        return tmp;
      }
       while (false);
    }
     while (true);
  }
  function recursiveCheck($this, node, searchedKey, searchedOverrideLevel) {
    var $this_0 = $this;
    var node_0 = node;
    var searchedKey_0 = searchedKey;
    var searchedOverrideLevel_0 = searchedOverrideLevel;
    $l$1: do {
      $l$0: do {
        var tmp;
        if (node_0.v5b_1.equals(searchedKey_0) ? node_0.w5b_1 === searchedOverrideLevel_0 : false) {
          tmp = false;
        } else if (node_0.x5b_1 == null) {
          tmp = true;
        } else {
          $this_0 = $this_0;
          node_0 = node_0.x5b_1;
          searchedKey_0 = searchedKey_0;
          searchedOverrideLevel_0 = searchedOverrideLevel_0;
          continue $l$0;
        }
        return tmp;
      }
       while (false);
    }
     while (true);
  }
  function DIContainerImpl_init_$Init$(builder, externalSources, fullDescriptionOnError, fullContainerTreeOnError, runCallbacks, $this) {
    DIContainerImpl.call($this, new DITreeImpl(builder.t5a_1, externalSources, builder.v5a_1), null, fullDescriptionOnError, fullContainerTreeOnError);
    var init = DIContainerImpl$_init_$lambda_r6ib3j($this, builder);
    if (runCallbacks)
      init();
    else {
      var lock = new Object();
      var tmp = $this;
      tmp.d5c_1 = DIContainerImpl$_init_$lambda_r6ib3j_0(lock, $this, init);
    }
    return $this;
  }
  function DIContainerImpl_init_$Create$(builder, externalSources, fullDescriptionOnError, fullContainerTreeOnError, runCallbacks) {
    return DIContainerImpl_init_$Init$(builder, externalSources, fullDescriptionOnError, fullContainerTreeOnError, runCallbacks, objectCreate(protoOf(DIContainerImpl)));
  }
  function Node(key, overrideLevel, parent, fullDescriptionOnError) {
    this.v5b_1 = key;
    this.w5b_1 = overrideLevel;
    this.x5b_1 = parent;
    this.y5b_1 = fullDescriptionOnError;
  }
  protoOf(Node).e5c = function (searchedKey, searchedOverrideLevel) {
    if (!recursiveCheck(this, this, searchedKey, searchedOverrideLevel)) {
      var list = plus_0(recursiveLoop(this, this, searchedKey, searchedOverrideLevel, emptyList()), displayString(this, searchedKey, this.w5b_1));
      var sb = StringBuilder_init_$Create$();
      // Inline function 'kotlin.collections.forEachIndexed' call
      var index = 0;
      var tmp0_iterator = list.w();
      while (tmp0_iterator.f()) {
        var item = tmp0_iterator.e();
        // Inline function 'org.kodein.di.internal.Node.check.<anonymous>' call
        var tmp1 = index;
        index = tmp1 + 1 | 0;
        var index_0 = checkIndexOverflow(tmp1);
        sb.y5('  ');
        switch (index_0) {
          case 0:
            sb.y5('   ');
            break;
          case 1:
            sb.y5('  \u2554\u2569>');
            break;
          default:
            sb.y5('  \u2551');
            sb.y5(repeat('  ', index_0 - 1 | 0));
            sb.y5('\u255A>');
            break;
        }
        sb.y5(item);
        sb.y5('\n');
      }
      sb.y5('    \u255A');
      sb.y5(repeat('\u2550\u2550', list.u() - 1 | 0));
      sb.y5('\u255D');
      throw new DependencyLoopException('Dependency recursion:\n' + sb);
    }
  };
  function bindingDI($this, key, context, tree, overrideLevel) {
    var container = new DIContainerImpl(tree, new Node(key, overrideLevel, $this.a5c_1, $this.b5c_1), $this.b5c_1, $this.c5c_1);
    return new BindingDIImpl(new DirectDIImpl(container, context), key, overrideLevel);
  }
  function DIContainerImpl$_init_$lambda_r6ib3j(this$0, $builder) {
    return function () {
      var direct = new DirectDIImpl(this$0, get_AnyDIContext());
      var tmp0_iterator = $builder.u5a_1.w();
      while (tmp0_iterator.f()) {
        var element = tmp0_iterator.e();
        // Inline function 'org.kodein.di.internal.DIContainerImpl.<init>.<anonymous>.<anonymous>' call
        element(direct);
      }
      return Unit_instance;
    };
  }
  function DIContainerImpl$_init_$lambda_r6ib3j_0($lock, this$0, $init) {
    return function () {
      $l$block_1: {
        // Inline function 'org.kodein.di.internal.synchronizedIfNotNull' call
        if (this$0.d5c_1 == null) {
          // Inline function 'org.kodein.di.internal.DIContainerImpl.<init>.<anonymous>.<anonymous>' call
          break $l$block_1;
        }
        // Inline function 'org.kodein.di.internal.maySynchronized' call
        $l$block_0: {
          // Inline function 'org.kodein.di.internal.synchronizedIfNotNull.<anonymous>' call
          var tmp0_elvis_lhs = this$0.d5c_1;
          var tmp;
          if (tmp0_elvis_lhs == null) {
            break $l$block_0;
          } else {
            tmp = tmp0_elvis_lhs;
          }
          var value = tmp;
          this$0.d5c_1 = null;
          $init();
          break $l$block_1;
        }
        // Inline function 'org.kodein.di.internal.DIContainerImpl.<init>.<anonymous>.<anonymous>' call
      }
      return Unit_instance;
    };
  }
  function DIContainerImpl$factory$lambda($this$null, it) {
    return fullDescription($this$null, it);
  }
  function DIContainerImpl$factory$lambda_0($this$null, it) {
    return description($this$null, it);
  }
  function DIContainerImpl(tree, node, fullDescriptionOnError, fullContainerTreeOnError) {
    this.z5b_1 = tree;
    this.a5c_1 = node;
    this.b5c_1 = fullDescriptionOnError;
    this.c5c_1 = fullContainerTreeOnError;
    this.d5c_1 = null;
  }
  protoOf(DIContainerImpl).o57 = function () {
    return this.z5b_1;
  };
  protoOf(DIContainerImpl).r57 = function (key, context, overrideLevel) {
    // Inline function 'kotlin.let' call
    // Inline function 'kotlin.contracts.contract' call
    var it = this.z5b_1.y57(key, 0);
    var tmp;
    if (it.u() === 1) {
      var tmp0_container = it.v(0);
      var definition = tmp0_container.z6();
      var translator = tmp0_container.dn();
      var tmp1_safe_receiver = this.a5c_1;
      if (tmp1_safe_receiver == null)
        null;
      else {
        tmp1_safe_receiver.e5c(key, 0);
      }
      var tmp_0 = Companion_instance_0.h57(key.n55_1, context);
      var originalContext = isInterface(tmp_0, DIContext) ? tmp_0 : THROW_CCE();
      var tmp3_elvis_lhs = translator == null ? null : toKContext(translator, new DirectDIImpl(this, originalContext), context);
      var kContext = tmp3_elvis_lhs == null ? originalContext : tmp3_elvis_lhs;
      if (!(key instanceof Key))
        THROW_CCE();
      var bindingDI_0 = bindingDI(this, key, kContext, definition.k55_1, overrideLevel);
      return definition.l55_1.t58(key, bindingDI_0);
    }
    var bindingDI_1 = bindingDI(this, key, Companion_instance_0.h57(key.n55_1, context), this.z5b_1, overrideLevel);
    // Inline function 'kotlin.collections.forEach' call
    var tmp0_iterator = this.z5b_1.w57().w();
    while (tmp0_iterator.f()) {
      var element = tmp0_iterator.e();
      // Inline function 'org.kodein.di.internal.DIContainerImpl.factoryOrNull.<anonymous>' call
      var tmp0_safe_receiver = element.f5c(bindingDI_1, key);
      if (tmp0_safe_receiver == null)
        null;
      else {
        // Inline function 'kotlin.let' call
        // Inline function 'kotlin.contracts.contract' call
        var tmp0_safe_receiver_0 = this.a5c_1;
        if (tmp0_safe_receiver_0 == null)
          null;
        else {
          tmp0_safe_receiver_0.e5c(key, 0);
        }
        return (!(tmp0_safe_receiver == null) ? typeof tmp0_safe_receiver === 'function' : false) ? tmp0_safe_receiver : THROW_CCE();
      }
    }
    return null;
  };
  protoOf(DIContainerImpl).p57 = function (key, context, overrideLevel) {
    var result = this.z5b_1.y57(key, overrideLevel);
    if (result.u() === 1) {
      var tmp0_container = result.v(0);
      var definition = tmp0_container.z6();
      var translator = tmp0_container.dn();
      var tmp1_safe_receiver = this.a5c_1;
      if (tmp1_safe_receiver == null)
        null;
      else {
        tmp1_safe_receiver.e5c(key, overrideLevel);
      }
      var tmp = Companion_instance_0.h57(key.n55_1, context);
      var originalContext = isInterface(tmp, DIContext) ? tmp : THROW_CCE();
      var tmp3_elvis_lhs = translator == null ? null : toKContext(translator, new DirectDIImpl(this, originalContext), context);
      var kContext = tmp3_elvis_lhs == null ? originalContext : tmp3_elvis_lhs;
      if (!(key instanceof Key))
        THROW_CCE();
      var bindingDI_0 = bindingDI(this, key, kContext, definition.k55_1, overrideLevel);
      return definition.l55_1.t58(key, bindingDI_0);
    }
    var bindingDI_1 = bindingDI(this, key, Companion_instance_0.h57(key.n55_1, context), this.z5b_1, overrideLevel);
    // Inline function 'kotlin.collections.forEach' call
    var tmp0_iterator = this.z5b_1.w57().w();
    while (tmp0_iterator.f()) {
      var element = tmp0_iterator.e();
      // Inline function 'org.kodein.di.internal.DIContainerImpl.factory.<anonymous>' call
      var tmp0_safe_receiver = element.f5c(bindingDI_1, key);
      if (tmp0_safe_receiver == null)
        null;
      else {
        // Inline function 'kotlin.let' call
        // Inline function 'kotlin.contracts.contract' call
        var tmp0_safe_receiver_0 = this.a5c_1;
        if (tmp0_safe_receiver_0 == null)
          null;
        else {
          tmp0_safe_receiver_0.e5c(key, overrideLevel);
        }
        return (!(tmp0_safe_receiver == null) ? typeof tmp0_safe_receiver === 'function' : false) ? tmp0_safe_receiver : THROW_CCE();
      }
    }
    var withOverrides = !(overrideLevel === 0);
    var descProp = this.b5c_1 ? fullDescription$factory_0(key) : description$factory_0(key);
    var tmp_0;
    if (this.b5c_1) {
      tmp_0 = DIContainerImpl$factory$lambda;
    } else {
      tmp_0 = DIContainerImpl$factory$lambda_0;
    }
    var descFun = tmp_0;
    if (result.c1()) {
      // Inline function 'kotlin.text.buildString' call
      // Inline function 'kotlin.contracts.contract' call
      // Inline function 'kotlin.apply' call
      var this_0 = StringBuilder_init_$Create$();
      // Inline function 'kotlin.contracts.contract' call
      // Inline function 'org.kodein.di.internal.DIContainerImpl.factory.<anonymous>' call
      this_0.y5('No binding found for ' + descProp.get());
      if (this.c5c_1) {
        // Inline function 'kotlin.text.appendLine' call
        this_0.z5(_Char___init__impl__6a9atx(10));
        var forType = this.z5b_1.z57(new SearchSpecs(VOID, VOID, key.p55_1));
        // Inline function 'kotlin.collections.isNotEmpty' call
        if (!forType.c1()) {
          // Inline function 'kotlin.collections.associate' call
          var capacity = coerceAtLeast(mapCapacity(collectionSizeOrDefault(forType, 10)), 16);
          // Inline function 'kotlin.collections.associateTo' call
          var destination = LinkedHashMap_init_$Create$_0(capacity);
          var tmp0_iterator_0 = forType.w();
          while (tmp0_iterator_0.f()) {
            var element_0 = tmp0_iterator_0.e();
            // Inline function 'kotlin.collections.plusAssign' call
            // Inline function 'org.kodein.di.internal.DIContainerImpl.factory.<anonymous>.<anonymous>' call
            var pair = to(element_0.an_1, element_0.bn_1);
            destination.s(pair.w6_1, pair.x6_1);
          }
          this_0.y5('Available bindings for this type:\n' + descFun(destination, withOverrides));
        }
        this_0.y5('Registered in this DI container:\n' + descFun(this.z5b_1.x55(), withOverrides));
      }
      var description = this_0.toString();
      throw new NotFoundException(key, description);
    }
    // Inline function 'kotlin.collections.associate' call
    var capacity_0 = coerceAtLeast(mapCapacity(collectionSizeOrDefault(result, 10)), 16);
    // Inline function 'kotlin.collections.associateTo' call
    var destination_0 = LinkedHashMap_init_$Create$_0(capacity_0);
    var tmp0_iterator_1 = result.w();
    while (tmp0_iterator_1.f()) {
      var element_1 = tmp0_iterator_1.e();
      // Inline function 'kotlin.collections.plusAssign' call
      // Inline function 'org.kodein.di.internal.DIContainerImpl.factory.<anonymous>' call
      var pair_0 = to(element_1.an_1, ensureNotNull(this.z5b_1.a58(element_1.an_1)).bn_1);
      destination_0.s(pair_0.w6_1, pair_0.x6_1);
    }
    var potentials = destination_0;
    // Inline function 'kotlin.collections.filter' call
    // Inline function 'kotlin.collections.filterTo' call
    var this_1 = this.z5b_1.x55();
    var destination_1 = LinkedHashMap_init_$Create$();
    // Inline function 'kotlin.collections.iterator' call
    var tmp0_iterator_2 = this_1.q2().w();
    while (tmp0_iterator_2.f()) {
      var element_2 = tmp0_iterator_2.e();
      // Inline function 'org.kodein.di.internal.DIContainerImpl.factory.<anonymous>' call
      // Inline function 'kotlin.collections.component1' call
      var key_0 = element_2.s2();
      if (!potentials.o2().a1(key_0)) {
        destination_1.s(element_2.s2(), element_2.t2());
      }
    }
    var others = destination_1;
    throw new NotFoundException(key, '' + potentials.u() + ' bindings found that match ' + key + ':\n' + descFun(potentials, withOverrides) + 'Other bindings registered in DI:\n' + descFun(others, withOverrides));
  };
  function bindFullDescription$factory_0($b0) {
    return getPropertyCallableRef('bindFullDescription', 0, KProperty0, function () {
      return $b0.u55();
    }, null);
  }
  function bindDescription$factory_0($b0) {
    return getPropertyCallableRef('bindDescription', 0, KProperty0, function () {
      return $b0.s55();
    }, null);
  }
  function fullDescription$factory_0($b0) {
    return getPropertyCallableRef('fullDescription', 0, KProperty0, function () {
      return $b0.v55();
    }, null);
  }
  function description$factory_0($b0) {
    return getPropertyCallableRef('description', 0, KProperty0, function () {
      return $b0.t55();
    }, null);
  }
  function newBuilder($this, allowSilentOverride, init) {
    // Inline function 'kotlin.apply' call
    var this_0 = new DIMainBuilderImpl(allowSilentOverride);
    // Inline function 'kotlin.contracts.contract' call
    init(this_0);
    return this_0;
  }
  function DIImpl_init_$Init$(builder, runCallbacks, $this) {
    DIImpl.call($this, DIContainerImpl_init_$Create$(builder.m56(), builder.w57(), builder.m5a(), builder.n5a(), runCallbacks));
    return $this;
  }
  function DIImpl_init_$Init$_0(allowSilentOverride, init, $this) {
    allowSilentOverride = allowSilentOverride === VOID ? false : allowSilentOverride;
    DIImpl_init_$Init$(newBuilder(Companion_instance_3, allowSilentOverride, init), true, $this);
    return $this;
  }
  function DIImpl_init_$Create$(allowSilentOverride, init) {
    return DIImpl_init_$Init$_0(allowSilentOverride, init, objectCreate(protoOf(DIImpl)));
  }
  function Companion_3() {
  }
  var Companion_instance_3;
  function Companion_getInstance_4() {
    return Companion_instance_3;
  }
  function DIImpl$container$delegate$lambda(this$0) {
    return function () {
      var tmp;
      if (!(this$0.g5c_1.d5c_1 == null)) {
        throw IllegalStateException_init_$Create$('DI has not been initialized');
      }
      return this$0.g5c_1;
    };
  }
  function DIImpl(_container) {
    this.g5c_1 = _container;
    var tmp = this;
    tmp.h5c_1 = lazy(DIImpl$container$delegate$lambda(this));
  }
  protoOf(DIImpl).b57 = function () {
    // Inline function 'kotlin.getValue' call
    var this_0 = this.h5c_1;
    container$factory();
    return this_0.t2();
  };
  function BindingDIImpl(directDI, key, overrideLevel) {
    this.i5c_1 = directDI;
    this.j5c_1 = key;
    this.k5c_1 = overrideLevel;
  }
  protoOf(BindingDIImpl).f58 = function () {
    return this.i5c_1;
  };
  protoOf(BindingDIImpl).a57 = function () {
    return this.i5c_1.a57();
  };
  protoOf(BindingDIImpl).b58 = function () {
    return this.i5c_1.b58();
  };
  protoOf(BindingDIImpl).d58 = function (type, tag) {
    return this.i5c_1.d58(type, tag);
  };
  protoOf(BindingDIImpl).e58 = function (type, tag) {
    return this.i5c_1.e58(type, tag);
  };
  protoOf(BindingDIImpl).c58 = function (context) {
    return this.i5c_1.c58(context);
  };
  protoOf(BindingDIImpl).od = function () {
    var tmp = this.f58().a57().c57().t2();
    return !(tmp == null) ? tmp : THROW_CCE();
  };
  protoOf(BindingDIImpl).u59 = function () {
    return new BindingDIImpl(this.f58().c58(ErasedContext_instance), this.j5c_1, this.k5c_1);
  };
  function container$factory() {
    return getPropertyCallableRef('container', 1, KProperty1, function (receiver) {
      return receiver.b57();
    }, null);
  }
  function findBySpecs($this, specs) {
    var bindSeq = asSequence($this.o5c_1);
    var specsBindType = specs.i58_1;
    if (!(specsBindType == null) ? !equals(specsBindType, Companion_getInstance().r54_1) : false) {
      var tmp = bindSeq;
      bindSeq = filter(tmp, DITreeImpl$findBySpecs$lambda(specsBindType));
    }
    var tmp_0 = bindSeq;
    var contextSeq = flatMap(tmp_0, DITreeImpl$findBySpecs$lambda_0);
    var specsContextType = specs.g58_1;
    if (!(specsContextType == null)) {
      var tmp_1 = contextSeq;
      contextSeq = mapNotNull(tmp_1, DITreeImpl$findBySpecs$lambda_1(specsContextType, $this));
    }
    var tmp_2 = contextSeq;
    var argSeq = flatMap(tmp_2, DITreeImpl$findBySpecs$lambda_2);
    var specsArgType = specs.h58_1;
    if (!(specsArgType == null)) {
      var tmp_3 = argSeq;
      argSeq = filter(tmp_3, DITreeImpl$findBySpecs$lambda_3(specsArgType));
    }
    var tmp_4 = argSeq;
    var tagSeq = flatMap(tmp_4, DITreeImpl$findBySpecs$lambda_4);
    var specsTag = specs.j58_1;
    if (!equals(specsTag, NoDefinedTag_instance)) {
      var tmp_5 = tagSeq;
      tagSeq = filter(tmp_5, DITreeImpl$findBySpecs$lambda_5(specsTag));
    }
    var tmp_6 = tagSeq;
    var resultSeq = map(tmp_6, DITreeImpl$findBySpecs$lambda_6);
    return toList(resultSeq);
  }
  function notInMap($this, result, request) {
    var tmp = result.j56();
    var tmp_0 = request.j56();
    var tmp_1 = $this.n5c_1.o2();
    return IllegalStateException_init_$Create$('Tree returned key ' + tmp + ' that is not in cache when searching for ' + tmp_0 + '.\nKeys in cache:\n' + joinToString(tmp_1, '\n', VOID, VOID, VOID, VOID, DITreeImpl$notInMap$lambda));
  }
  function DITreeImpl$findBySpecs$lambda($specsBindType) {
    return function (_name_for_destructuring_parameter_0__wldtmu) {
      // Inline function 'kotlin.collections.component1' call
      var bindType = _name_for_destructuring_parameter_0__wldtmu.s2();
      return bindType.r5c($specsBindType);
    };
  }
  function DITreeImpl$findBySpecs$lambda_0(_name_for_destructuring_parameter_0__wldtmu) {
    // Inline function 'kotlin.collections.component2' call
    var contextTree = _name_for_destructuring_parameter_0__wldtmu.t2();
    var tmp = asSequence(contextTree);
    return map(tmp, DITreeImpl$findBySpecs$lambda$lambda);
  }
  function DITreeImpl$findBySpecs$lambda$lambda(it) {
    return new Triple(it.s2(), it.t2(), null);
  }
  function DITreeImpl$findBySpecs$lambda_1($specsContextType, this$0) {
    return function (triple) {
      var contextType = triple.y6();
      var tmp;
      if (contextType.r5c($specsContextType)) {
        tmp = triple;
      } else {
        var tmp$ret$1;
        $l$block: {
          // Inline function 'kotlin.collections.firstOrNull' call
          var tmp0_iterator = this$0.q5c_1.w();
          while (tmp0_iterator.f()) {
            var element = tmp0_iterator.e();
            // Inline function 'org.kodein.di.internal.DITreeImpl.findBySpecs.<anonymous>.<anonymous>' call
            if (element.b56().a55($specsContextType) ? contextType.r5c(element.a59()) : false) {
              tmp$ret$1 = element;
              break $l$block;
            }
          }
          tmp$ret$1 = null;
        }
        var translator = tmp$ret$1;
        tmp = !(translator == null) ? triple.fn(VOID, VOID, translator) : null;
      }
      return tmp;
    };
  }
  function DITreeImpl$findBySpecs$lambda_2(_name_for_destructuring_parameter_0__wldtmu) {
    var argumentTree = _name_for_destructuring_parameter_0__wldtmu.z6();
    var translator = _name_for_destructuring_parameter_0__wldtmu.dn();
    var tmp = asSequence(argumentTree);
    return map(tmp, DITreeImpl$findBySpecs$lambda$lambda_0(translator));
  }
  function DITreeImpl$findBySpecs$lambda$lambda_0($translator) {
    return function (it) {
      return new Triple(it.s2(), it.t2(), $translator);
    };
  }
  function DITreeImpl$findBySpecs$lambda_3($specsArgType) {
    return function (_name_for_destructuring_parameter_0__wldtmu) {
      var argType = _name_for_destructuring_parameter_0__wldtmu.y6();
      return argType.r5c($specsArgType);
    };
  }
  function DITreeImpl$findBySpecs$lambda_4(_name_for_destructuring_parameter_0__wldtmu) {
    var tagTree = _name_for_destructuring_parameter_0__wldtmu.z6();
    var translator = _name_for_destructuring_parameter_0__wldtmu.dn();
    var tmp = asSequence(tagTree);
    return map(tmp, DITreeImpl$findBySpecs$lambda$lambda_1(translator));
  }
  function DITreeImpl$findBySpecs$lambda$lambda_1($translator) {
    return function (it) {
      return new Triple(it.s2(), it.t2(), $translator);
    };
  }
  function DITreeImpl$findBySpecs$lambda_5($specsTag) {
    return function (_name_for_destructuring_parameter_0__wldtmu) {
      var tag = _name_for_destructuring_parameter_0__wldtmu.y6();
      return equals(tag, $specsTag);
    };
  }
  function DITreeImpl$findBySpecs$lambda_6(_name_for_destructuring_parameter_0__wldtmu) {
    var key = _name_for_destructuring_parameter_0__wldtmu.z6();
    var translator = _name_for_destructuring_parameter_0__wldtmu.dn();
    return to(key, translator);
  }
  function DITreeImpl$notInMap$lambda(it) {
    return it.j56();
  }
  function DITreeImpl(map, externalSources, registeredTranslators) {
    this.l5c_1 = externalSources;
    this.m5c_1 = registeredTranslators;
    this.n5c_1 = newConcurrentMap();
    this.o5c_1 = HashMap_init_$Create$();
    this.q5c_1 = ArrayList_init_$Create$_1(this.m5c_1);
    // Inline function 'kotlin.collections.forEach' call
    // Inline function 'kotlin.collections.iterator' call
    var tmp0_iterator = map.q2().w();
    while (tmp0_iterator.f()) {
      var element = tmp0_iterator.e();
      // Inline function 'org.kodein.di.internal.DITreeImpl.<anonymous>' call
      // Inline function 'kotlin.collections.component1' call
      var key = element.s2();
      // Inline function 'kotlin.collections.component2' call
      var bindings = element.t2();
      // Inline function 'kotlin.collections.map' call
      // Inline function 'kotlin.collections.mapTo' call
      var destination = ArrayList_init_$Create$_0(collectionSizeOrDefault(bindings, 10));
      var tmp0_iterator_0 = bindings.w();
      while (tmp0_iterator_0.f()) {
        var item = tmp0_iterator_0.e();
        // Inline function 'org.kodein.di.internal.DITreeImpl.<anonymous>.<anonymous>' call
        var tmp;
        if (item instanceof DIDefinition) {
          tmp = item;
        } else {
          tmp = new DIDefinition(item.l55_1, item.m55_1, this);
        }
        var tmp$ret$3 = tmp;
        destination.i1(tmp$ret$3);
      }
      var definitions = destination;
      // Inline function 'kotlin.collections.set' call
      var this_0 = this.n5c_1;
      var value = new Triple(key, definitions, null);
      this_0.s(key, value);
      var typeChecker = first(bindings).l55_1.s58() ? new Down(key.p55_1) : new Up(key.p55_1);
      // Inline function 'kotlin.collections.getOrPut' call
      var this_1 = this.o5c_1;
      var value_0 = this_1.q(typeChecker);
      var tmp_0;
      if (value_0 == null) {
        // Inline function 'org.kodein.di.internal.DITreeImpl.<anonymous>.<anonymous>' call
        var answer = HashMap_init_$Create$();
        this_1.s(typeChecker, answer);
        tmp_0 = answer;
      } else {
        tmp_0 = value_0;
      }
      var contextTree = tmp_0;
      // Inline function 'kotlin.collections.getOrPut' call
      var key_0 = new Down(key.n55_1);
      var value_1 = contextTree.q(key_0);
      var tmp_1;
      if (value_1 == null) {
        // Inline function 'org.kodein.di.internal.DITreeImpl.<anonymous>.<anonymous>' call
        var answer_0 = HashMap_init_$Create$();
        contextTree.s(key_0, answer_0);
        tmp_1 = answer_0;
      } else {
        tmp_1 = value_1;
      }
      var argumentTree = tmp_1;
      // Inline function 'kotlin.collections.getOrPut' call
      var key_1 = new Down(key.o55_1);
      var value_2 = argumentTree.q(key_1);
      var tmp_2;
      if (value_2 == null) {
        // Inline function 'org.kodein.di.internal.DITreeImpl.<anonymous>.<anonymous>' call
        var answer_1 = HashMap_init_$Create$();
        argumentTree.s(key_1, answer_1);
        tmp_2 = answer_1;
      } else {
        tmp_2 = value_2;
      }
      var tagTree = tmp_2;
      // Inline function 'kotlin.collections.set' call
      var key_2 = key.q55_1;
      tagTree.s(key_2, key);
    }
    var tmp_3 = this;
    // Inline function 'kotlin.collections.mapValues' call
    var this_2 = this.n5c_1;
    // Inline function 'kotlin.collections.mapValuesTo' call
    var destination_0 = LinkedHashMap_init_$Create$_0(mapCapacity(this_2.u()));
    // Inline function 'kotlin.collections.associateByTo' call
    var tmp0_iterator_1 = this_2.q2().w();
    while (tmp0_iterator_1.f()) {
      var element_0 = tmp0_iterator_1.e();
      // Inline function 'kotlin.collections.mapValuesTo.<anonymous>' call
      var tmp_4 = element_0.s2();
      // Inline function 'org.kodein.di.internal.DITreeImpl.<anonymous>' call
      var tmp$ret$13 = element_0.t2().bn_1;
      destination_0.s(tmp_4, tmp$ret$13);
    }
    tmp_3.p5c_1 = HashMap_init_$Create$_0(destination_0);
    $l$loop: while (true) {
      var added = ArrayList_init_$Create$();
      var tmp0_iterator_2 = this.q5c_1.w();
      while (tmp0_iterator_2.f()) {
        var src = tmp0_iterator_2.e();
        var tmp1_iterator = this.q5c_1.w();
        while (tmp1_iterator.f()) {
          var dst = tmp1_iterator.e();
          if (dst.b56().a55(src.a59()) ? !equals(src.b56(), dst.a59()) : false) {
            var tmp$ret$17;
            $l$block_0: {
              // Inline function 'kotlin.collections.none' call
              var this_3 = this.q5c_1;
              var tmp_5;
              if (isInterface(this_3, Collection)) {
                tmp_5 = this_3.c1();
              } else {
                tmp_5 = false;
              }
              if (tmp_5) {
                tmp$ret$17 = true;
                break $l$block_0;
              }
              var tmp0_iterator_3 = this_3.w();
              while (tmp0_iterator_3.f()) {
                var element_1 = tmp0_iterator_3.e();
                // Inline function 'org.kodein.di.internal.DITreeImpl.<anonymous>' call
                if (equals(element_1.b56(), src.b56()) ? equals(element_1.a59(), dst.a59()) : false) {
                  tmp$ret$17 = false;
                  break $l$block_0;
                }
              }
              tmp$ret$17 = true;
            }
            if (tmp$ret$17) {
              // Inline function 'kotlin.collections.plusAssign' call
              var tmp_6 = isInterface(src, ContextTranslator) ? src : THROW_CCE();
              var element_2 = new CompositeContextTranslator(tmp_6, isInterface(dst, ContextTranslator) ? dst : THROW_CCE());
              added.i1(element_2);
            }
          }
        }
      }
      // Inline function 'kotlin.collections.plusAssign' call
      var this_4 = this.q5c_1;
      addAll(this_4, added);
      if (added.c1())
        break $l$loop;
    }
  }
  protoOf(DITreeImpl).w57 = function () {
    return this.l5c_1;
  };
  protoOf(DITreeImpl).v57 = function () {
    return this.m5c_1;
  };
  protoOf(DITreeImpl).x55 = function () {
    return this.p5c_1;
  };
  protoOf(DITreeImpl).x57 = function (key, overrideLevel, all) {
    if (!all) {
      var tmp0_safe_receiver = this.n5c_1.q(key);
      if (tmp0_safe_receiver == null)
        null;
      else {
        // Inline function 'kotlin.let' call
        // Inline function 'kotlin.contracts.contract' call
        var realKey = tmp0_safe_receiver.y6();
        var list = tmp0_safe_receiver.z6();
        var translator = tmp0_safe_receiver.dn();
        var tmp0_elvis_lhs = getOrNull(list, overrideLevel);
        var tmp;
        if (tmp0_elvis_lhs == null) {
          return emptyList();
        } else {
          tmp = tmp0_elvis_lhs;
        }
        var definition = tmp;
        var tmp_0 = realKey instanceof Key ? realKey : THROW_CCE();
        var tmp_1 = definition instanceof DIDefinition ? definition : THROW_CCE();
        return listOf(new Triple(tmp_0, tmp_1, (translator == null ? true : isInterface(translator, ContextTranslator)) ? translator : THROW_CCE()));
      }
      if (!equals(key.n55_1, Companion_getInstance().r54_1)) {
        var anyContextKey = key.l56(Companion_getInstance().r54_1);
        var tmp1_safe_receiver = this.n5c_1.q(anyContextKey);
        if (tmp1_safe_receiver == null)
          null;
        else {
          // Inline function 'kotlin.let' call
          // Inline function 'kotlin.contracts.contract' call
          $l$block: {
            // Inline function 'org.kodein.di.internal.DITreeImpl.find.<anonymous>' call
            var realKey_0 = tmp1_safe_receiver.y6();
            var list_0 = tmp1_safe_receiver.z6();
            var translator_0 = tmp1_safe_receiver.dn();
            if (!(translator_0 == null) ? !equals(translator_0.b56(), key.n55_1) : false) {
              break $l$block;
            }
            // Inline function 'kotlin.collections.set' call
            this.n5c_1.s(key, tmp1_safe_receiver);
            var tmp1_elvis_lhs = getOrNull(list_0, overrideLevel);
            var tmp_2;
            if (tmp1_elvis_lhs == null) {
              return emptyList();
            } else {
              tmp_2 = tmp1_elvis_lhs;
            }
            var definition_0 = tmp_2;
            var tmp_3 = realKey_0 instanceof Key ? realKey_0 : THROW_CCE();
            var tmp_4 = definition_0 instanceof DIDefinition ? definition_0 : THROW_CCE();
            return listOf(new Triple(tmp_3, tmp_4, (translator_0 == null ? true : isInterface(translator_0, ContextTranslator)) ? translator_0 : THROW_CCE()));
          }
        }
      }
      // Inline function 'kotlin.collections.filter' call
      // Inline function 'kotlin.collections.filterTo' call
      var this_0 = this.q5c_1;
      var destination = ArrayList_init_$Create$();
      var tmp0_iterator = this_0.w();
      while (tmp0_iterator.f()) {
        var element = tmp0_iterator.e();
        // Inline function 'org.kodein.di.internal.DITreeImpl.find.<anonymous>' call
        if (equals(element.b56(), key.n55_1)) {
          destination.i1(element);
        }
      }
      var tmp_5 = destination;
      // Inline function 'kotlin.collections.filter' call
      // Inline function 'kotlin.collections.filterTo' call
      var this_1 = this.q5c_1;
      var destination_0 = ArrayList_init_$Create$();
      var tmp0_iterator_0 = this_1.w();
      while (tmp0_iterator_0.f()) {
        var element_0 = tmp0_iterator_0.e();
        // Inline function 'org.kodein.di.internal.DITreeImpl.find.<anonymous>' call
        if (equals(element_0.b56(), Companion_getInstance().r54_1)) {
          destination_0.i1(element_0);
        }
      }
      var applicableTranslators = plus(tmp_5, destination_0);
      var tmp2_iterator = applicableTranslators.w();
      while (tmp2_iterator.f()) {
        var translator_1 = tmp2_iterator.e();
        var translatedKey = new Key(translator_1.a59(), key.o55_1, key.p55_1, key.q55_1);
        var tmp3_safe_receiver = this.n5c_1.q(translatedKey);
        var tmp_6;
        if (tmp3_safe_receiver == null) {
          tmp_6 = null;
        } else {
          // Inline function 'kotlin.takeIf' call
          // Inline function 'kotlin.contracts.contract' call
          var tmp_7;
          // Inline function 'org.kodein.di.internal.DITreeImpl.find.<anonymous>' call
          if (tmp3_safe_receiver.cn_1 == null) {
            tmp_7 = tmp3_safe_receiver;
          } else {
            tmp_7 = null;
          }
          tmp_6 = tmp_7;
        }
        var tmp4_safe_receiver = tmp_6;
        if (tmp4_safe_receiver == null)
          null;
        else {
          // Inline function 'kotlin.let' call
          // Inline function 'kotlin.contracts.contract' call
          $l$block_0: {
            // Inline function 'org.kodein.di.internal.DITreeImpl.find.<anonymous>' call
            if (!(tmp4_safe_receiver.cn_1 == null)) {
              break $l$block_0;
            }
            // Inline function 'kotlin.collections.set' call
            var this_2 = this.n5c_1;
            var value = tmp4_safe_receiver.fn(VOID, VOID, translator_1);
            this_2.s(key, value);
            var realKey_1 = tmp4_safe_receiver.y6();
            var list_1 = tmp4_safe_receiver.z6();
            var tmp1_elvis_lhs_0 = getOrNull(list_1, overrideLevel);
            var tmp_8;
            if (tmp1_elvis_lhs_0 == null) {
              return emptyList();
            } else {
              tmp_8 = tmp1_elvis_lhs_0;
            }
            var definition_1 = tmp_8;
            var tmp_9 = realKey_1 instanceof Key ? realKey_1 : THROW_CCE();
            var tmp_10 = definition_1 instanceof DIDefinition ? definition_1 : THROW_CCE();
            return listOf(new Triple(tmp_9, tmp_10, isInterface(translator_1, ContextTranslator) ? translator_1 : THROW_CCE()));
          }
        }
      }
    }
    var result = findBySpecs(this, new SearchSpecs(key.n55_1, key.o55_1, key.p55_1, key.q55_1));
    if (result.u() === 1) {
      var tmp5_container = first(result);
      var realKey_2 = tmp5_container.y6();
      var translator_2 = tmp5_container.z6();
      // Inline function 'kotlin.collections.set' call
      var this_3 = this.n5c_1;
      var tmp6_safe_receiver = this.n5c_1.q(realKey_2);
      var tmp7_elvis_lhs = tmp6_safe_receiver == null ? null : tmp6_safe_receiver.fn(VOID, VOID, translator_2);
      var tmp_11;
      if (tmp7_elvis_lhs == null) {
        throw notInMap(this, realKey_2, key);
      } else {
        tmp_11 = tmp7_elvis_lhs;
      }
      var value_0 = tmp_11;
      this_3.s(key, value_0);
    }
    // Inline function 'kotlin.collections.mapNotNull' call
    // Inline function 'kotlin.collections.mapNotNullTo' call
    var destination_1 = ArrayList_init_$Create$();
    // Inline function 'kotlin.collections.forEach' call
    var tmp0_iterator_1 = result.w();
    while (tmp0_iterator_1.f()) {
      var element_1 = tmp0_iterator_1.e();
      // Inline function 'kotlin.collections.mapNotNullTo.<anonymous>' call
      var tmp$ret$13;
      $l$block_1: {
        // Inline function 'org.kodein.di.internal.DITreeImpl.find.<anonymous>' call
        var realKey_3 = element_1.y6();
        var translator_3 = element_1.z6();
        var tmp0_elvis_lhs_0 = this.n5c_1.q(realKey_3);
        var tmp_12;
        if (tmp0_elvis_lhs_0 == null) {
          throw notInMap(this, realKey_3, key);
        } else {
          tmp_12 = tmp0_elvis_lhs_0;
        }
        var definitions = tmp_12.z6();
        var tmp2_elvis_lhs = getOrNull(definitions, overrideLevel);
        var tmp_13;
        if (tmp2_elvis_lhs == null) {
          tmp$ret$13 = null;
          break $l$block_1;
        } else {
          tmp_13 = tmp2_elvis_lhs;
        }
        var definition_2 = tmp_13;
        var tmp_14 = realKey_3 instanceof Key ? realKey_3 : THROW_CCE();
        var tmp_15 = definition_2 instanceof DIDefinition ? definition_2 : THROW_CCE();
        tmp$ret$13 = new Triple(tmp_14, tmp_15, (translator_3 == null ? true : isInterface(translator_3, ContextTranslator)) ? translator_3 : THROW_CCE());
      }
      var tmp0_safe_receiver_0 = tmp$ret$13;
      if (tmp0_safe_receiver_0 == null)
        null;
      else {
        // Inline function 'kotlin.let' call
        // Inline function 'kotlin.contracts.contract' call
        destination_1.i1(tmp0_safe_receiver_0);
      }
    }
    return destination_1;
  };
  protoOf(DITreeImpl).z57 = function (search) {
    var result = findBySpecs(this, search);
    // Inline function 'kotlin.collections.map' call
    // Inline function 'kotlin.collections.mapTo' call
    var destination = ArrayList_init_$Create$_0(collectionSizeOrDefault(result, 10));
    var tmp0_iterator = result.w();
    while (tmp0_iterator.f()) {
      var item = tmp0_iterator.e();
      // Inline function 'org.kodein.di.internal.DITreeImpl.find.<anonymous>' call
      var key = item.y6();
      var translator = item.z6();
      var tmp$ret$0 = new Triple(key, ensureNotNull(this.n5c_1.q(key)).bn_1, translator);
      destination.i1(tmp$ret$0);
    }
    return destination;
  };
  protoOf(DITreeImpl).a58 = function (key) {
    var tmp = this.n5c_1.q(key);
    return (tmp == null ? true : tmp instanceof Triple) ? tmp : THROW_CCE();
  };
  function Down(type) {
    TypeChecker.call(this);
    this.s5c_1 = type;
    this.t5c_1 = equals(this.s5c_1, Companion_getInstance().r54_1);
  }
  protoOf(Down).r5c = function (other) {
    return this.t5c_1 ? true : this.s5c_1.a55(other);
  };
  protoOf(Down).toString = function () {
    return 'Down(type=' + this.s5c_1 + ')';
  };
  protoOf(Down).hashCode = function () {
    return hashCode(this.s5c_1);
  };
  protoOf(Down).equals = function (other) {
    if (this === other)
      return true;
    if (!(other instanceof Down))
      return false;
    var tmp0_other_with_cast = other instanceof Down ? other : THROW_CCE();
    if (!equals(this.s5c_1, tmp0_other_with_cast.s5c_1))
      return false;
    return true;
  };
  function Up(type) {
    TypeChecker.call(this);
    this.u5c_1 = type;
  }
  protoOf(Up).r5c = function (other) {
    return equals(other, Companion_getInstance().r54_1) ? true : other.a55(this.u5c_1);
  };
  protoOf(Up).toString = function () {
    return 'Up(type=' + this.u5c_1 + ')';
  };
  protoOf(Up).hashCode = function () {
    return hashCode(this.u5c_1);
  };
  protoOf(Up).equals = function (other) {
    if (this === other)
      return true;
    if (!(other instanceof Up))
      return false;
    var tmp0_other_with_cast = other instanceof Up ? other : THROW_CCE();
    if (!equals(this.u5c_1, tmp0_other_with_cast.u5c_1))
      return false;
    return true;
  };
  function TypeChecker() {
  }
  function DirectDIBaseImpl(container, context) {
    this.v5c_1 = container;
    this.w5c_1 = context;
  }
  protoOf(DirectDIBaseImpl).b57 = function () {
    return this.v5c_1;
  };
  protoOf(DirectDIBaseImpl).f58 = function () {
    return this;
  };
  protoOf(DirectDIBaseImpl).b58 = function () {
    var tmp = this.b57();
    return On(new DIImpl(tmp instanceof DIContainerImpl ? tmp : THROW_CCE()), this.w5c_1);
  };
  protoOf(DirectDIBaseImpl).c58 = function (context) {
    return new DirectDIImpl(this.b57(), context);
  };
  protoOf(DirectDIBaseImpl).d58 = function (type, tag) {
    var tmp = this.b57();
    // Inline function 'org.kodein.di.internal.anyType' call
    var tmp_0 = this.w5c_1.g57();
    var tmp$ret$0 = isInterface(tmp_0, TypeToken) ? tmp_0 : THROW_CCE();
    return tmp.m57(new Key(tmp$ret$0, Companion_getInstance().q54_1, type, tag), this.w5c_1.t2())();
  };
  protoOf(DirectDIBaseImpl).e58 = function (type, tag) {
    var tmp = this.b57();
    // Inline function 'org.kodein.di.internal.anyType' call
    var tmp_0 = this.w5c_1.g57();
    var tmp$ret$0 = isInterface(tmp_0, TypeToken) ? tmp_0 : THROW_CCE();
    var tmp0_safe_receiver = tmp.n57(new Key(tmp$ret$0, Companion_getInstance().q54_1, type, tag), this.w5c_1.t2());
    return tmp0_safe_receiver == null ? null : tmp0_safe_receiver();
  };
  function DIProperty$provideDelegate$lambda($receiver, this$0, $prop) {
    return function () {
      var tmp;
      if (!($receiver == null) ? this$0.y5c_1 === get_AnyDIContext() : false) {
        var tmp_0 = Companion_instance_0;
        var tmp_1 = erasedOf($receiver);
        tmp = tmp_0.h57(isInterface(tmp_1, TypeToken) ? tmp_1 : THROW_CCE(), $receiver);
      } else {
        tmp = this$0.y5c_1;
      }
      var context = tmp;
      return this$0.z5c_1(context, $prop.callableName);
    };
  }
  function DIProperty(trigger, originalContext, get) {
    this.x5c_1 = trigger;
    this.y5c_1 = originalContext;
    this.z5c_1 = get;
  }
  protoOf(DIProperty).a5d = function (receiver, prop) {
    // Inline function 'kotlin.also' call
    var this_0 = lazy(DIProperty$provideDelegate$lambda(receiver, this, prop));
    // Inline function 'kotlin.contracts.contract' call
    // Inline function 'org.kodein.di.DIProperty.provideDelegate.<anonymous>' call
    var tmp0_safe_receiver = this.x5c_1;
    var tmp1_safe_receiver = tmp0_safe_receiver == null ? null : tmp0_safe_receiver.b5d_1;
    if (tmp1_safe_receiver == null)
      null;
    else
      tmp1_safe_receiver.i1(this_0);
    return this_0;
  };
  function DirectDIImpl(container, context) {
    DirectDIBaseImpl.call(this, container, context);
  }
  function newConcurrentMap() {
    return HashMap_init_$Create$();
  }
  function newLinkedList() {
    return ArrayList_init_$Create$();
  }
  function newLinkedList_0(c) {
    return ArrayList_init_$Create$_1(c);
  }
  //region block: post-declaration
  protoOf(Singleton).q58 = get_argType;
  protoOf(Singleton).t55 = get_description;
  protoOf(Singleton).v55 = get_fullDescription;
  protoOf(Singleton).s58 = get_supportSubTypes;
  protoOf(Provider).q58 = get_argType;
  protoOf(Provider).p58 = factoryFullName;
  protoOf(Provider).c56 = get_scope;
  protoOf(Provider).t55 = get_description;
  protoOf(Provider).v55 = get_fullDescription;
  protoOf(Provider).y55 = get_copier;
  protoOf(Provider).s58 = get_supportSubTypes;
  protoOf(InstanceBinding).q58 = get_argType;
  protoOf(InstanceBinding).p58 = factoryFullName;
  protoOf(InstanceBinding).c56 = get_scope;
  protoOf(InstanceBinding).y55 = get_copier;
  protoOf(InstanceBinding).s58 = get_supportSubTypes;
  protoOf(DIBuilderImpl).q56 = constant$default;
  protoOf(DIBuilderImpl).s56 = import$default;
  protoOf(DIMainBuilderImpl).v56 = extend$default;
  protoOf(DIContainerImpl).s57 = factoryOrNull$default;
  protoOf(DIContainerImpl).q57 = factory$default;
  protoOf(DIContainerImpl).t57 = provider;
  protoOf(DIContainerImpl).m57 = provider$default;
  protoOf(DIContainerImpl).u57 = providerOrNull;
  protoOf(DIContainerImpl).n57 = providerOrNull$default;
  protoOf(DIImpl).a57 = get_di;
  protoOf(DIImpl).c57 = get_diContext;
  protoOf(DIImpl).d57 = get_diTrigger;
  protoOf(DITreeImpl).y57 = find$default;
  protoOf(DirectDIBaseImpl).a57 = get_di_0;
  //endregion
  //region block: init
  NonCached_instance = new NonCached();
  Companion_instance = new Companion();
  Companion_instance_0 = new Companion_0();
  NoDefinedTag_instance = new NoDefinedTag();
  ErasedContext_instance = new ErasedContext();
  Companion_instance_1 = new Companion_1();
  SingletonReference_instance = new SingletonReference();
  Companion_instance_2 = new Companion_2();
  Companion_instance_3 = new Companion_3();
  //endregion
  //region block: exports
  _.$_$ = _.$_$ || {};
  _.$_$.a = Module_init_$Create$;
  _.$_$.b = Companion_instance;
  _.$_$.c = Companion_instance_0;
  _.$_$.d = Provider;
  _.$_$.e = SimpleContextTranslator;
  _.$_$.f = Singleton;
  _.$_$.g = StandardScopeRegistry;
  _.$_$.h = ImplWithScope;
  _.$_$.i = get_diContext;
  _.$_$.j = get_diTrigger;
  _.$_$.k = DIAware;
  _.$_$.l = InstanceOrNull;
  _.$_$.m = Instance;
  _.$_$.n = On;
  _.$_$.o = get_direct;
  //endregion
  return _;
}(module.exports, require('./kotlin-kotlin-stdlib.js'), require('./Kosi-Kaverit-kaverit.js')));

//# sourceMappingURL=Kosi-Kodein-kodein-di.js.map
