{"version":3,"names":["Intersection","Layout","__SystemJSRewritingHack","_export","default","setters","_srcClientGraphicsJs","pt","rect","_srcComponentsWidgetsLivelyWindowJs","Windows","execute","_recorder_","_src_client_layout_js","Object","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable","rects","intersections","i","length","j","intersection","width","height","push","windows","bounds","Map","forEach","ea","lively","getClientBounds","a","b","withWindows","obj","objBounds","element","getCenter","nodes","reduce","sum","addPt","getClientPosition","scaleBy","expandUntilNoIntersectionsToBottomLeft","maxiterations","undefined","y","moveBy","x","allWindows","expandUntilNoIntersectionsExplosion","all","count","elementA","elementB","isNonEmpty","left","xdir","top","ydir","oldExpandUntilNoIntersectionsExplosion","center","showPoint","dista","dist","distb","direction","subPt","normalized","delta","showPath","makeLocalSpace","objCenter","getClientCenter","other","otherCenter","randomizeContentPosition","node","extent","getExtent","childNodes","setPosition","Math","random"],"sources":["layout.js"],"sourcesContent":["\n/* Little Window Layout Helper */\n\nimport {pt, rect} from \"src/client/graphics.js\"\nimport Windows from \"src/components/widgets/lively-window.js\"\n\nexport class Intersection {\n  \n  static rects(rects) {\n    var intersections = []\n    for(var i=0; i < rects.length; i++) {\n      for(var j=i; j < rects.length; j++) {\n        if (i !== j) {\n          var intersection = rects[i].intersection(rects[j])\n          if (intersection && intersection.width > 0 && intersection.height > 0)\n            intersections.push(intersection)\n        }\n      }  \n    }\n    return intersections\n  }\n  \n  static windows(windows) {\n    \n    var bounds = new Map()\n    windows.forEach( ea => bounds.set(ea, lively.getClientBounds(ea)))\n    var intersections = []\n    for(var i=0; i < windows.length; i++) {\n      for(var j=i; j < windows.length; j++) {\n        if (i !== j) {\n          \n          var intersection = bounds.get(windows[i]).intersection(bounds.get(windows[j]))\n          if (intersection && intersection.width > 0 && intersection.height > 0)\n            intersections.push({intersection: intersection, a:windows[i], b: windows[i] })\n        }\n      }  \n    }\n    return intersections\n  }\n\n  static withWindows(obj, windows) {\n    var intersections = []\n    var objBounds = lively.getClientBounds(obj)\n    for(var i=0; i < windows.length; i++) {\n      if (windows[i] !== obj) {\n        var intersection = lively.getClientBounds(windows[i]).intersection(objBounds)\n        if (intersection && intersection.width > 0 && intersection.height > 0)\n          intersections.push({intersection: intersection, element: windows[i], })\n      }\n    }\n    return intersections\n  }\n  \n  \n}\n\n\nexport default class Layout {\n  \n  static getCenter(nodes) {\n    return nodes.reduce((sum, ea) => sum.addPt(lively.getClientPosition(ea)), pt(0,0)).scaleBy(1/nodes.length)\n  }\n  \n  static expandUntilNoIntersectionsToBottomLeft(windows, maxiterations) {\n    if (maxiterations === undefined) maxiterations = 100;\n    var i=0\n    do {\n      i++\n      var intersections = Intersection.windows(windows)\n      intersections.forEach(ea => {\n        var obj\n        if (ea.intersection.width > ea.intersection.height) {\n          if (lively.getClientPosition(ea.a).y > lively.getClientPosition(ea.b).y)\n            obj = ea.a\n          else\n            obj = ea.b\n          lively.moveBy(obj, pt(0, ea.intersection.height + 10))\n        } else {\n          if (lively.getClientPosition(ea.a).x > lively.getClientPosition(ea.b).x)\n            obj = ea.a\n          else\n            obj = ea.b\n          lively.moveBy(obj, pt(ea.intersection.width + 10, 0))\n        }\n      })\n    } while(intersections.length > 0 && i < maxiterations)\n  }\n  \n  \n  static expandUntilNoIntersectionsToBottomLeft(windows, maxiterations) {\n    windows = windows || Windows.allWindows()\n\n    if (maxiterations === undefined) maxiterations = 100;\n    var i=0\n    do {\n      i++\n      var intersections = Intersection.windows(windows)\n      intersections.forEach(ea => {\n        var obj\n        if (ea.intersection.width > ea.intersection.height) {\n          if (lively.getClientPosition(ea.a).y > lively.getClientPosition(ea.b).y)\n            obj = ea.a\n          else\n            obj = ea.b\n          lively.moveBy(obj, pt(0, ea.intersection.height + 10))\n        } else {\n          if (lively.getClientPosition(ea.a).x > lively.getClientPosition(ea.b).x)\n            obj = ea.a\n          else\n            obj = ea.b\n          lively.moveBy(obj, pt(ea.intersection.width + 10, 0))\n        }\n      })\n    } while(intersections.length > 0 && i < maxiterations)\n  }\n  \n    static expandUntilNoIntersectionsExplosion(windows, maxiterations) {  \n      var all = windows || Windows.allWindows()\n\n      var count = 30\n      while(count > 0 /* or error is small enough */ ) {\n        count--\n        for(var elementA of all) {\n          for(var elementB of all) {\n\n            var a = lively.getClientBounds(elementA)\n            var b = lively.getClientBounds(elementB)\n\n\n            var intersection = a.intersection(b) \n\n\n            if (intersection.isNonEmpty()) {\n\n              // lively.showRect(intersection)\n\n              if (a.left() < intersection.left()) {\n                var xdir = -1\n              } else {\n                xdir = 1\n              }\n\n              if (a.top() < intersection.top()) {\n                var ydir = -1\n              } else {\n                ydir = 1\n              }\n\n              lively.moveBy(elementA, lively.pt(xdir *  0.1 * intersection.width, ydir *  0.1 * intersection.width))\n              lively.moveBy(elementB, lively.pt(-xdir *  0.1 * intersection.width, -ydir *  0.1 * intersection.width))\n\n            }\n          }\n        }        \n    }\n  }\n  \n  // this implementation moves the windows to far....\n  static oldExpandUntilNoIntersectionsExplosion(windows, maxiterations) {\n    windows = windows || Windows.allWindows()\n    if (maxiterations === undefined) maxiterations = 200;\n    var center = this.getCenter(windows)\n    lively.showPoint(center)\n    var i=0\n    do {\n      i++\n      var intersections = Intersection.windows(windows)\n      intersections.forEach(ea => {\n        var dista = center.dist(ea.a)\n        var distb = center.dist(ea.b)\n        var obj = dista > distb ? ea.a : ea.b; \n        var direction = lively.getClientPosition(obj).subPt(center).normalized()\n        var delta = direction.scaleBy(50) // #TODO I am to dumb to calculate the real length and keep the direction... so just go for it\n        lively.showPath([lively.getClientPosition(obj), lively.getClientPosition(obj).addPt(delta)])\n        lively.moveBy(obj, delta)\n      })\n    } while(intersections.length > 0 && i < maxiterations)\n  }\n  \n  /*\n   * Move overlapping windows away until it does not touch any more\n   */\n  static makeLocalSpace(obj) {\n    var intersections = Intersection.withWindows(obj, Windows.allWindows())\n    var objCenter =   lively.getClientCenter(obj)\n    var objBounds = lively.getClientBounds(obj)\n    intersections.forEach(ea => {\n      var other = ea.element\n      var intersection\n      while (\n        (intersection = lively.getClientBounds(other).intersection(objBounds)) &&\n        intersection.width > 0 && intersection.height > 0) {\n        var otherCenter = lively.getClientCenter(other);\n        var delta = otherCenter.subPt(objCenter).normalized().scaleBy(10)\n        lively.moveBy(other, delta)\n        lively.showPath([otherCenter, otherCenter.addPt(delta)])\n      } \n    })\n  }\n\n  \n  // just for development and testing\n  static randomizeContentPosition(node) {\n    var extent = lively.getExtent(node)\n    node.childNodes.forEach(ea => lively.setPosition(ea, pt(Math.random()* extent.y, Math.random() * extent.x)))\n  }\n  \n}\n\n\n// // Live Feedback\n// if (that) {\n//   Layout.randomizeContentPosition(that)\n//   setTimeout(() => {\n//     Layout.expandUntilNoIntersectionsToBottomLeft(Array.from(that.childNodes))\n//   }, 500)\n// }\n\n"],"mappings":";;;yBAMaA,YAAY,EAmDJC,MAAM,EAAAC,uBAAA;EAAAC,OAAA;IAAAH,YAAA;IAAAI,OAAA;EAAA;EAAA;IAAAC,OAAA,aAAAC,oBAAA;MAtDnBC,EAAE,GAAAD,oBAAA,CAAFC,EAAE;MAAEC,IAAI,GAAAF,oBAAA,CAAJE,IAAI;IAAA,aAAAC,mCAAA;MACTC,OAAO,GAAAD,mCAAA,CAAAL,OAAA;IAAA;IAAAO,OAAA,WAAAA,CAAA;MAAAT,uBAAA;MAAAU,UAAA,CAAAC,qBAAA,GAAAD,UAAA,CAAAC,qBAAA;MAHd;MAAAC,MAAA,CAAAC,cAAA,CAAAH,UAAA,CAAAC,qBAAA;QAAAG,IAAA;UAAA,OAAAR,IAAA;QAAA;QAAAS,IAAAC,8BAAA;UAEYV,IAAA,CAAAA,CAAA,CAAAA,8BAAI;UAAA;QAAA;QAAAW,UAAA;QAAAC,YAAA;MAAA;MAAAN,MAAA,CAAAC,cAAA,CAAAH,UAAA,CAAAC,qBAAA;QAAAG,IAAA;UAAA,OAAAT,EAAA;QAAA;QAAAU,IAAAC,8BAAA;UAARX,EAAA,CAAAA,CAAA,CAAAA,8BAAE;UAAA;QAAA;QAAAY,UAAA;QAAAC,YAAA;MAAA;MAAAN,MAAA,CAAAC,cAAA,CAAAH,UAAA,CAAAC,qBAAA;QAAAG,IAAA;UAAA,OAAAN,OAAA;QAAA;QAAAO,IAAAC,8BAAA;UACHR,OAAA,CAAAA,CAAA,CAAAA,8BAAO;UAAA;QAAA;QAAAS,UAAA;QAAAC,YAAA;MAAA;MAAAjB,OAAA,iBAEDH,YAAY,GAAlB,MAAMA,YAAY,CAAC;QAExB,OAAOqB,KAAKA,CAACA,KAAK,EAAE;UAClB,IAAIC,aAAa,GAAG,EAAE;UACtB,KAAI,IAAIC,CAAC,GAAC,CAAC,EAAEA,CAAC,GAAGF,KAAK,CAACG,MAAM,EAAED,CAAC,EAAE,EAAE;YAClC,KAAI,IAAIE,CAAC,GAACF,CAAC,EAAEE,CAAC,GAAGJ,KAAK,CAACG,MAAM,EAAEC,CAAC,EAAE,EAAE;cAClC,IAAIF,CAAC,KAAKE,CAAC,EAAE;gBACX,IAAIC,YAAY,GAAGL,KAAK,CAACE,CAAC,CAAC,CAACG,YAAY,CAACL,KAAK,CAACI,CAAC,CAAC,CAAC;gBAClD,IAAIC,YAAY,IAAIA,YAAY,CAACC,KAAK,GAAG,CAAC,IAAID,YAAY,CAACE,MAAM,GAAG,CAAC,EACnEN,aAAa,CAACO,IAAI,CAACH,YAAY,CAAC;cACpC;YACF;UACF;UACA,OAAOJ,aAAa;QACtB;QAEA,OAAOQ,OAAOA,CAACA,OAAO,EAAE;UAEtB,IAAIC,MAAM,GAAG,IAAIC,GAAG,CAAC,CAAC;UACtBF,OAAO,CAACG,OAAO,CAAEC,EAAE,IAAIH,MAAM,CAACd,GAAG,CAACiB,EAAE,EAAEC,MAAM,CAACC,eAAe,CAACF,EAAE,CAAC,CAAC,CAAC;UAClE,IAAIZ,aAAa,GAAG,EAAE;UACtB,KAAI,IAAIC,CAAC,GAAC,CAAC,EAAEA,CAAC,GAAGO,OAAO,CAACN,MAAM,EAAED,CAAC,EAAE,EAAE;YACpC,KAAI,IAAIE,CAAC,GAACF,CAAC,EAAEE,CAAC,GAAGK,OAAO,CAACN,MAAM,EAAEC,CAAC,EAAE,EAAE;cACpC,IAAIF,CAAC,KAAKE,CAAC,EAAE;gBAEX,IAAIC,YAAY,GAAGK,MAAM,CAACf,GAAG,CAACc,OAAO,CAACP,CAAC,CAAC,CAAC,CAACG,YAAY,CAACK,MAAM,CAACf,GAAG,CAACc,OAAO,CAACL,CAAC,CAAC,CAAC,CAAC;gBAC9E,IAAIC,YAAY,IAAIA,YAAY,CAACC,KAAK,GAAG,CAAC,IAAID,YAAY,CAACE,MAAM,GAAG,CAAC,EACnEN,aAAa,CAACO,IAAI,CAAC;kBAACH,YAAY,EAAEA,YAAY;kBAAEW,CAAC,EAACP,OAAO,CAACP,CAAC,CAAC;kBAAEe,CAAC,EAAER,OAAO,CAACP,CAAC;gBAAE,CAAC,CAAC;cAClF;YACF;UACF;UACA,OAAOD,aAAa;QACtB;QAEA,OAAOiB,WAAWA,CAACC,GAAG,EAAEV,OAAO,EAAE;UAC/B,IAAIR,aAAa,GAAG,EAAE;UACtB,IAAImB,SAAS,GAAGN,MAAM,CAACC,eAAe,CAACI,GAAG,CAAC;UAC3C,KAAI,IAAIjB,CAAC,GAAC,CAAC,EAAEA,CAAC,GAAGO,OAAO,CAACN,MAAM,EAAED,CAAC,EAAE,EAAE;YACpC,IAAIO,OAAO,CAACP,CAAC,CAAC,KAAKiB,GAAG,EAAE;cACtB,IAAId,YAAY,GAAGS,MAAM,CAACC,eAAe,CAACN,OAAO,CAACP,CAAC,CAAC,CAAC,CAACG,YAAY,CAACe,SAAS,CAAC;cAC7E,IAAIf,YAAY,IAAIA,YAAY,CAACC,KAAK,GAAG,CAAC,IAAID,YAAY,CAACE,MAAM,GAAG,CAAC,EACnEN,aAAa,CAACO,IAAI,CAAC;gBAACH,YAAY,EAAEA,YAAY;gBAAEgB,OAAO,EAAEZ,OAAO,CAACP,CAAC;cAAG,CAAC,CAAC;YAC3E;UACF;UACA,OAAOD,aAAa;QACtB;MAGF,CAAC;MAAAR,MAAA,CAAAC,cAAA,CAAAH,UAAA,CAAAC,qBAAA;QAAAG,IAAA;UAAA,OAAAhB,YAAA;QAAA;QAAAiB,IAAAC,8BAAA;UAAAf,OAAA,iBAhDYH,YAAA,CAAAA,CAAA,CAAAA,8BAAY;UAAA;QAAA;QAAAmB,UAAA;QAAAC,YAAA;MAAA;MAAAjB,OAAA,YAmDJF,MAAM,GAAZ,MAAMA,MAAM,CAAC;QAE1B,OAAO0C,SAASA,CAACC,KAAK,EAAE;UACtB,OAAOA,KAAK,CAACC,MAAM,CAAC,CAACC,GAAG,EAAEZ,EAAE,KAAKY,GAAG,CAACC,KAAK,CAACZ,MAAM,CAACa,iBAAiB,CAACd,EAAE,CAAC,CAAC,EAAE3B,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC0C,OAAO,CAAC,CAAC,GAACL,KAAK,CAACpB,MAAM,CAAC;QAC5G;QAEA,OAAO0B,sCAAsCA,CAACpB,OAAO,EAAEqB,aAAa,EAAE;UACpE,IAAIA,aAAa,KAAKC,SAAS,EAAED,aAAa,GAAG,GAAG;UACpD,IAAI5B,CAAC,GAAC,CAAC;UACP,GAAG;YACDA,CAAC,EAAE;YACH,IAAID,aAAa,GAAGtB,YAAY,CAAC8B,OAAO,CAACA,OAAO,CAAC;YACjDR,aAAa,CAACW,OAAO,CAACC,EAAE,IAAI;cAC1B,IAAIM,GAAG;cACP,IAAIN,EAAE,CAACR,YAAY,CAACC,KAAK,GAAGO,EAAE,CAACR,YAAY,CAACE,MAAM,EAAE;gBAClD,IAAIO,MAAM,CAACa,iBAAiB,CAACd,EAAE,CAACG,CAAC,CAAC,CAACgB,CAAC,GAAGlB,MAAM,CAACa,iBAAiB,CAACd,EAAE,CAACI,CAAC,CAAC,CAACe,CAAC,EACrEb,GAAG,GAAGN,EAAE,CAACG,CAAC,MAEVG,GAAG,GAAGN,EAAE,CAACI,CAAC;gBACZH,MAAM,CAACmB,MAAM,CAACd,GAAG,EAAEjC,EAAE,CAAC,CAAC,EAAE2B,EAAE,CAACR,YAAY,CAACE,MAAM,GAAG,EAAE,CAAC,CAAC;cACxD,CAAC,MAAM;gBACL,IAAIO,MAAM,CAACa,iBAAiB,CAACd,EAAE,CAACG,CAAC,CAAC,CAACkB,CAAC,GAAGpB,MAAM,CAACa,iBAAiB,CAACd,EAAE,CAACI,CAAC,CAAC,CAACiB,CAAC,EACrEf,GAAG,GAAGN,EAAE,CAACG,CAAC,MAEVG,GAAG,GAAGN,EAAE,CAACI,CAAC;gBACZH,MAAM,CAACmB,MAAM,CAACd,GAAG,EAAEjC,EAAE,CAAC2B,EAAE,CAACR,YAAY,CAACC,KAAK,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;cACvD;YACF,CAAC,CAAC;UACJ,CAAC,QAAOL,aAAa,CAACE,MAAM,GAAG,CAAC,IAAID,CAAC,GAAG4B,aAAa;QACvD;QAGA,OAAOD,sCAAsCA,CAACpB,OAAO,EAAEqB,aAAa,EAAE;UACpErB,OAAO,GAAGA,OAAO,IAAIpB,OAAO,CAAC8C,UAAU,CAAC,CAAC;UAEzC,IAAIL,aAAa,KAAKC,SAAS,EAAED,aAAa,GAAG,GAAG;UACpD,IAAI5B,CAAC,GAAC,CAAC;UACP,GAAG;YACDA,CAAC,EAAE;YACH,IAAID,aAAa,GAAGtB,YAAY,CAAC8B,OAAO,CAACA,OAAO,CAAC;YACjDR,aAAa,CAACW,OAAO,CAACC,EAAE,IAAI;cAC1B,IAAIM,GAAG;cACP,IAAIN,EAAE,CAACR,YAAY,CAACC,KAAK,GAAGO,EAAE,CAACR,YAAY,CAACE,MAAM,EAAE;gBAClD,IAAIO,MAAM,CAACa,iBAAiB,CAACd,EAAE,CAACG,CAAC,CAAC,CAACgB,CAAC,GAAGlB,MAAM,CAACa,iBAAiB,CAACd,EAAE,CAACI,CAAC,CAAC,CAACe,CAAC,EACrEb,GAAG,GAAGN,EAAE,CAACG,CAAC,MAEVG,GAAG,GAAGN,EAAE,CAACI,CAAC;gBACZH,MAAM,CAACmB,MAAM,CAACd,GAAG,EAAEjC,EAAE,CAAC,CAAC,EAAE2B,EAAE,CAACR,YAAY,CAACE,MAAM,GAAG,EAAE,CAAC,CAAC;cACxD,CAAC,MAAM;gBACL,IAAIO,MAAM,CAACa,iBAAiB,CAACd,EAAE,CAACG,CAAC,CAAC,CAACkB,CAAC,GAAGpB,MAAM,CAACa,iBAAiB,CAACd,EAAE,CAACI,CAAC,CAAC,CAACiB,CAAC,EACrEf,GAAG,GAAGN,EAAE,CAACG,CAAC,MAEVG,GAAG,GAAGN,EAAE,CAACI,CAAC;gBACZH,MAAM,CAACmB,MAAM,CAACd,GAAG,EAAEjC,EAAE,CAAC2B,EAAE,CAACR,YAAY,CAACC,KAAK,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;cACvD;YACF,CAAC,CAAC;UACJ,CAAC,QAAOL,aAAa,CAACE,MAAM,GAAG,CAAC,IAAID,CAAC,GAAG4B,aAAa;QACvD;QAEE,OAAOM,mCAAmCA,CAAC3B,OAAO,EAAEqB,aAAa,EAAE;UACjE,IAAIO,GAAG,GAAG5B,OAAO,IAAIpB,OAAO,CAAC8C,UAAU,CAAC,CAAC;UAEzC,IAAIG,KAAK,GAAG,EAAE;UACd,OAAMA,KAAK,GAAG,CAAC,CAAC,gCAAiC;YAC/CA,KAAK,EAAE;YACP,KAAI,IAAIC,QAAQ,IAAIF,GAAG,EAAE;cACvB,KAAI,IAAIG,QAAQ,IAAIH,GAAG,EAAE;gBAEvB,IAAIrB,CAAC,GAAGF,MAAM,CAACC,eAAe,CAACwB,QAAQ,CAAC;gBACxC,IAAItB,CAAC,GAAGH,MAAM,CAACC,eAAe,CAACyB,QAAQ,CAAC;gBAGxC,IAAInC,YAAY,GAAGW,CAAC,CAACX,YAAY,CAACY,CAAC,CAAC;gBAGpC,IAAIZ,YAAY,CAACoC,UAAU,CAAC,CAAC,EAAE;kBAE7B;;kBAEA,IAAIzB,CAAC,CAAC0B,IAAI,CAAC,CAAC,GAAGrC,YAAY,CAACqC,IAAI,CAAC,CAAC,EAAE;oBAClC,IAAIC,IAAI,GAAG,CAAC,CAAC;kBACf,CAAC,MAAM;oBACLA,IAAI,GAAG,CAAC;kBACV;kBAEA,IAAI3B,CAAC,CAAC4B,GAAG,CAAC,CAAC,GAAGvC,YAAY,CAACuC,GAAG,CAAC,CAAC,EAAE;oBAChC,IAAIC,IAAI,GAAG,CAAC,CAAC;kBACf,CAAC,MAAM;oBACLA,IAAI,GAAG,CAAC;kBACV;kBAEA/B,MAAM,CAACmB,MAAM,CAACM,QAAQ,EAAEzB,MAAM,CAAC5B,EAAE,CAACyD,IAAI,GAAI,GAAG,GAAGtC,YAAY,CAACC,KAAK,EAAEuC,IAAI,GAAI,GAAG,GAAGxC,YAAY,CAACC,KAAK,CAAC,CAAC;kBACtGQ,MAAM,CAACmB,MAAM,CAACO,QAAQ,EAAE1B,MAAM,CAAC5B,EAAE,CAAC,CAACyD,IAAI,GAAI,GAAG,GAAGtC,YAAY,CAACC,KAAK,EAAE,CAACuC,IAAI,GAAI,GAAG,GAAGxC,YAAY,CAACC,KAAK,CAAC,CAAC;gBAE1G;cACF;YACF;UACJ;QACF;;QAEA;QACA,OAAOwC,sCAAsCA,CAACrC,OAAO,EAAEqB,aAAa,EAAE;UACpErB,OAAO,GAAGA,OAAO,IAAIpB,OAAO,CAAC8C,UAAU,CAAC,CAAC;UACzC,IAAIL,aAAa,KAAKC,SAAS,EAAED,aAAa,GAAG,GAAG;UACpD,IAAIiB,MAAM,GAAG,IAAI,CAACzB,SAAS,CAACb,OAAO,CAAC;UACpCK,MAAM,CAACkC,SAAS,CAACD,MAAM,CAAC;UACxB,IAAI7C,CAAC,GAAC,CAAC;UACP,GAAG;YACDA,CAAC,EAAE;YACH,IAAID,aAAa,GAAGtB,YAAY,CAAC8B,OAAO,CAACA,OAAO,CAAC;YACjDR,aAAa,CAACW,OAAO,CAACC,EAAE,IAAI;cAC1B,IAAIoC,KAAK,GAAGF,MAAM,CAACG,IAAI,CAACrC,EAAE,CAACG,CAAC,CAAC;cAC7B,IAAImC,KAAK,GAAGJ,MAAM,CAACG,IAAI,CAACrC,EAAE,CAACI,CAAC,CAAC;cAC7B,IAAIE,GAAG,GAAG8B,KAAK,GAAGE,KAAK,GAAGtC,EAAE,CAACG,CAAC,GAAGH,EAAE,CAACI,CAAC;cACrC,IAAImC,SAAS,GAAGtC,MAAM,CAACa,iBAAiB,CAACR,GAAG,CAAC,CAACkC,KAAK,CAACN,MAAM,CAAC,CAACO,UAAU,CAAC,CAAC;cACxE,IAAIC,KAAK,GAAGH,SAAS,CAACxB,OAAO,CAAC,EAAE,CAAC,EAAC;cAClCd,MAAM,CAAC0C,QAAQ,CAAC,CAAC1C,MAAM,CAACa,iBAAiB,CAACR,GAAG,CAAC,EAAEL,MAAM,CAACa,iBAAiB,CAACR,GAAG,CAAC,CAACO,KAAK,CAAC6B,KAAK,CAAC,CAAC,CAAC;cAC5FzC,MAAM,CAACmB,MAAM,CAACd,GAAG,EAAEoC,KAAK,CAAC;YAC3B,CAAC,CAAC;UACJ,CAAC,QAAOtD,aAAa,CAACE,MAAM,GAAG,CAAC,IAAID,CAAC,GAAG4B,aAAa;QACvD;;QAEA;AACF;AACA;QACE,OAAO2B,cAAcA,CAACtC,GAAG,EAAE;UACzB,IAAIlB,aAAa,GAAGtB,YAAY,CAACuC,WAAW,CAACC,GAAG,EAAE9B,OAAO,CAAC8C,UAAU,CAAC,CAAC,CAAC;UACvE,IAAIuB,SAAS,GAAK5C,MAAM,CAAC6C,eAAe,CAACxC,GAAG,CAAC;UAC7C,IAAIC,SAAS,GAAGN,MAAM,CAACC,eAAe,CAACI,GAAG,CAAC;UAC3ClB,aAAa,CAACW,OAAO,CAACC,EAAE,IAAI;YAC1B,IAAI+C,KAAK,GAAG/C,EAAE,CAACQ,OAAO;YACtB,IAAIhB,YAAY;YAChB,OACE,CAACA,YAAY,GAAGS,MAAM,CAACC,eAAe,CAAC6C,KAAK,CAAC,CAACvD,YAAY,CAACe,SAAS,CAAC,KACrEf,YAAY,CAACC,KAAK,GAAG,CAAC,IAAID,YAAY,CAACE,MAAM,GAAG,CAAC,EAAE;cACnD,IAAIsD,WAAW,GAAG/C,MAAM,CAAC6C,eAAe,CAACC,KAAK,CAAC;cAC/C,IAAIL,KAAK,GAAGM,WAAW,CAACR,KAAK,CAACK,SAAS,CAAC,CAACJ,UAAU,CAAC,CAAC,CAAC1B,OAAO,CAAC,EAAE,CAAC;cACjEd,MAAM,CAACmB,MAAM,CAAC2B,KAAK,EAAEL,KAAK,CAAC;cAC3BzC,MAAM,CAAC0C,QAAQ,CAAC,CAACK,WAAW,EAAEA,WAAW,CAACnC,KAAK,CAAC6B,KAAK,CAAC,CAAC,CAAC;YAC1D;UACF,CAAC,CAAC;QACJ;;QAGA;QACA,OAAOO,wBAAwBA,CAACC,IAAI,EAAE;UACpC,IAAIC,MAAM,GAAGlD,MAAM,CAACmD,SAAS,CAACF,IAAI,CAAC;UACnCA,IAAI,CAACG,UAAU,CAACtD,OAAO,CAACC,EAAE,IAAIC,MAAM,CAACqD,WAAW,CAACtD,EAAE,EAAE3B,EAAE,CAACkF,IAAI,CAACC,MAAM,CAAC,CAAC,GAAEL,MAAM,CAAChC,CAAC,EAAEoC,IAAI,CAACC,MAAM,CAAC,CAAC,GAAGL,MAAM,CAAC9B,CAAC,CAAC,CAAC,CAAC;QAC9G;MAEF,CAAC,GAGD;MACA;MACA;MACA;MACA;MACA;MACA;MAAAzC,MAAA,CAAAC,cAAA,CAAAH,UAAA,CAAAC,qBAAA;QAAAG,IAAA;UAAA,OAAAf,MAAA;QAAA;QAAAgB,IAAAC,8BAAA;UAAAf,OAAA,YA/JqBF,MAAA,CAAAA,CAAA,CAAAA,8BAAM;UAAA;QAAA;QAAAkB,UAAA;QAAAC,YAAA;MAAA;IAAA;EAAA;AAAA"}