1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272 |
- var LZMA = (function () {
- var action_compress = 1,
- action_decompress = 2,
- action_update = 3;
-
- function update_progress(percent, callback_num) {
- ///TODO: Calculate ETA.
- postMessage({
- action: 3,
- callback_num: callback_num,
- result: percent
- });
- }
-
- var $moduleName, $moduleBase;
-
- var _,
- N8000000000000000_longLit = [0, -9223372036854775808],
- N1_longLit = [4294967295, -4294967296],
- P0_longLit = [0, 0],
- P1_longLit = [1, 0],
- P4_longLit = [4, 0],
- P1000_longLit = [4096, 0],
- Pffffff_longLit = [16777215, 0],
- P1000000_longLit = [16777216, 0],
- Pff000000_longLit = [4278190080, 0],
- Pffffffff_longLit = [4294967295, 0],
- P7fffffffffffffff_longLit = [4294967295, 9223372032559808512];
- function getClass_18() {
- return Ljava_lang_Object_2_classLit;
- }
-
- function Object_0() {
- }
-
- _ = Object_0.prototype = {};
- _.getClass$ = getClass_18;
- _.typeMarker$ = nullMethod;
- _.typeId$ = 1;
- function getClass_22() {
- return Ljava_lang_Throwable_2_classLit;
- }
-
- function Throwable() {
- }
-
- _ = Throwable.prototype = new Object_0();
- _.getClass$ = getClass_22;
- _.typeId$ = 3;
- _.detailMessage = null;
- function getClass_13() {
- return Ljava_lang_Exception_2_classLit;
- }
-
- function Exception() {
- }
-
- _ = Exception.prototype = new Throwable();
- _.getClass$ = getClass_13;
- _.typeId$ = 4;
- function $RuntimeException(this$static, message) {
- this$static.detailMessage = message;
- return this$static;
- }
-
- function getClass_19() {
- return Ljava_lang_RuntimeException_2_classLit;
- }
-
- function RuntimeException() {
- }
-
- _ = RuntimeException.prototype = new Exception();
- _.getClass$ = getClass_19;
- _.typeId$ = 5;
- function $JavaScriptException(this$static, e) {
- return this$static;
- }
-
- function getClass_0() {
- return Lcom_google_gwt_core_client_JavaScriptException_2_classLit;
- }
-
- function JavaScriptException() {
- }
-
- _ = JavaScriptException.prototype = new RuntimeException();
- _.getClass$ = getClass_0;
- _.typeId$ = 6;
- function $append(a, x) {
- a[a.explicitLength++] = x;
- }
-
- function $appendNonNull(a, x) {
- a[a.explicitLength++] = x;
- }
-
- function $toString(a) {
- var s_0, s;
- s_0 = (s = a.join('') , a.length = a.explicitLength = 0 , s);
- a[a.explicitLength++] = s_0;
- return s_0;
- }
-
- function createFromSeed(seedType, length_0) {
- var array = new Array(length_0);
- if (seedType > 0) {
- var value = [null, 0, false, [0, 0]][seedType];
- for (var i = 0; i < length_0; ++i) {
- array[i] = value;
- }
- }
- return array;
- }
-
- function getClass_2() {
- return this.arrayClass$;
- }
-
- function initDim(arrayClass, typeId, queryId, length_0, seedType) {
- var result;
- result = createFromSeed(seedType, length_0);
- $clinit_4();
- wrapArray(result, expandoNames_0, expandoValues_0);
- result.arrayClass$ = arrayClass;
- result.typeId$ = typeId;
- result.queryId$ = queryId;
- return result;
- }
-
- function initValues(arrayClass, typeId, queryId, array) {
- $clinit_4();
- wrapArray(array, expandoNames_0, expandoValues_0);
- array.arrayClass$ = arrayClass;
- array.typeId$ = typeId;
- array.queryId$ = queryId;
- return array;
- }
-
- function setCheck(array, index, value) {
- if (value != null) {
- if (array.queryId$ > 0 && !canCastUnsafe(value.typeId$, array.queryId$)) {
- throw new ArrayStoreException();
- }
- if (array.queryId$ < 0 && (value.typeMarker$ == nullMethod || value.typeId$ == 2)) {
- throw new ArrayStoreException();
- }
- }
- return array[index] = value;
- }
-
- function Array_0() {
- }
-
- _ = Array_0.prototype = new Object_0();
- _.getClass$ = getClass_2;
- _.typeId$ = 0;
- _.arrayClass$ = null;
- _.length = 0;
- _.queryId$ = 0;
- function $clinit_4() {
- $clinit_4 = nullMethod;
- expandoNames_0 = [];
- expandoValues_0 = [];
- initExpandos(new Array_0(), expandoNames_0, expandoValues_0);
- }
-
- function initExpandos(protoType, expandoNames, expandoValues) {
- var i = 0, value;
- for (var name_0 in protoType) {
- if (value = protoType[name_0]) {
- expandoNames[i] = name_0;
- expandoValues[i] = value;
- ++i;
- }
- }
- }
-
- function wrapArray(array, expandoNames, expandoValues) {
- $clinit_4();
- for (var i = 0, c = expandoNames.length; i < c; ++i) {
- array[expandoNames[i]] = expandoValues[i];
- }
- }
-
- var expandoNames_0, expandoValues_0;
- function canCast(srcId, dstId) {
- return srcId && !!typeIdArray[srcId][dstId];
- }
-
- function canCastUnsafe(srcId, dstId) {
- return srcId && typeIdArray[srcId][dstId];
- }
-
- function dynamicCast(src, dstId) {
- if (src != null && !canCastUnsafe(src.typeId$, dstId)) {
- throw new ClassCastException();
- }
- return src;
- }
-
- function instanceOf(src, dstId) {
- return src != null && canCast(src.typeId$, dstId);
- }
-
- function round_int(x) {
- return ~~Math.max(Math.min(x, 2147483647), -2147483648);
- }
-
- var typeIdArray = [
- {},
- {},
- {1:1},
- {2:1},
- {2:1},
- {2:1},
- {2:1},
- {2:1, 10:1},
- {2:1},
- {2:1},
- {2:1},
- {2:1},
- {2:1},
- {2:1, 11:1},
- {2:1},
- {2:1},
- {2:1},
- {4:1},
- {5:1},
- {6:1},
- {7:1},
- {8:1},
- {9:1}
- ];
- function caught(e) {
- if (e != null && canCast(e.typeId$, 2)) {
- return e;
- }
- return $JavaScriptException(new JavaScriptException(), e);
- }
-
- function add(a, b) {
- var newHigh, newLow;
- newHigh = a[1] + b[1];
- newLow = a[0] + b[0];
- return create(newLow, newHigh);
- }
-
- function addTimes(accum, a, b) {
- if (a == 0) {
- return accum;
- }
- if (b == 0) {
- return accum;
- }
- return add(accum, create(a * b, 0));
- }
-
- function and(a, b) {
- return makeFromBits(~~Math.max(Math.min(a[1] / 4294967296, 2147483647), -2147483648) & ~~Math.max(Math.min(b[1] / 4294967296, 2147483647), -2147483648), lowBits_0(a) & lowBits_0(b));
- }
-
- function compare(a, b) {
- var nega, negb;
- if (a[0] == b[0] && a[1] == b[1]) {
- return 0;
- }
- nega = a[1] < 0;
- negb = b[1] < 0;
- if (nega && !negb) {
- return -1;
- }
- if (!nega && negb) {
- return 1;
- }
- if (sub(a, b)[1] < 0) {
- return -1;
- }
- else {
- return 1;
- }
- }
-
- function create(valueLow, valueHigh) {
- var diffHigh, diffLow;
- valueHigh %= 1.8446744073709552E19;
- valueLow %= 1.8446744073709552E19;
- diffHigh = valueHigh % 4294967296;
- diffLow = Math.floor(valueLow / 4294967296) * 4294967296;
- valueHigh = valueHigh - diffHigh + diffLow;
- valueLow = valueLow - diffLow + diffHigh;
- while (valueLow < 0) {
- valueLow += 4294967296;
- valueHigh -= 4294967296;
- }
- while (valueLow > 4294967295) {
- valueLow -= 4294967296;
- valueHigh += 4294967296;
- }
- valueHigh = valueHigh % 1.8446744073709552E19;
- while (valueHigh > 9223372032559808512) {
- valueHigh -= 1.8446744073709552E19;
- }
- while (valueHigh < -9223372036854775808) {
- valueHigh += 1.8446744073709552E19;
- }
- return [valueLow, valueHigh];
- }
-
- function div(a, b) {
- var approx, deltaRem, deltaResult, halfa, rem, result;
- if (b[0] == 0 && b[1] == 0) {
- throw $ArithmeticException(new ArithmeticException(), '/ by zero');
- }
- if (a[0] == 0 && a[1] == 0) {
- return $clinit_10() , ZERO;
- }
- if (eq(a, ($clinit_10() , MIN_VALUE))) {
- if (eq(b, ONE) || eq(b, NEG_ONE)) {
- return MIN_VALUE;
- }
- halfa = shr(a, 1);
- approx = shl(div(halfa, b), 1);
- rem = sub(a, mul(b, approx));
- return add(approx, div(rem, b));
- }
- if (eq(b, MIN_VALUE)) {
- return ZERO;
- }
- if (a[1] < 0) {
- if (b[1] < 0) {
- return div(neg(a), neg(b));
- } else {
- return neg(div(neg(a), b));
- }
- }
- if (b[1] < 0) {
- return neg(div(a, neg(b)));
- }
- result = ZERO;
- rem = a;
- while (compare(rem, b) >= 0) {
- deltaResult = fromDouble(Math.floor(toDoubleRoundDown(rem) / toDoubleRoundUp(b)));
- if (deltaResult[0] == 0 && deltaResult[1] == 0) {
- deltaResult = ONE;
- }
- deltaRem = mul(deltaResult, b);
- result = add(result, deltaResult);
- rem = sub(rem, deltaRem);
- }
- return result;
- }
-
- function eq(a, b) {
- return a[0] == b[0] && a[1] == b[1];
- }
-
- function fromDouble(value) {
- if (isNaN(value)) {
- return $clinit_10() , ZERO;
- }
- if (value < -9223372036854775808) {
- return $clinit_10() , MIN_VALUE;
- }
- if (value >= 9223372036854775807) {
- return $clinit_10() , MAX_VALUE;
- }
- if (value > 0) {
- return create(Math.floor(value), 0);
- } else {
- return create(Math.ceil(value), 0);
- }
- }
-
- function fromInt(value) {
- var rebase, result;
- if (value > -129 && value < 128) {
- rebase = value + 128;
- result = ($clinit_9() , boxedValues)[rebase];
- if (result == null) {
- result = boxedValues[rebase] = internalFromInt(value);
- }
- return result;
- }
- return internalFromInt(value);
- }
-
- function internalFromInt(value) {
- if (value >= 0) {
- return [value, 0];
- } else {
- return [value + 4294967296, -4294967296];
- }
- }
-
- function lowBits_0(a) {
- if (a[0] >= 2147483648) {
- return ~~Math.max(Math.min(a[0] - 4294967296, 2147483647), -2147483648);
- } else {
- return ~~Math.max(Math.min(a[0], 2147483647), -2147483648);
- }
- }
-
- function makeFromBits(highBits, lowBits) {
- var high, low;
- high = highBits * 4294967296;
- low = lowBits;
- if (lowBits < 0) {
- low += 4294967296;
- }
- return [low, high];
- }
-
- function mul(a, b) {
- var a1, a2, a3, a4, b1, b2, b3, b4, res;
- if (a[0] == 0 && a[1] == 0) {
- return $clinit_10() , ZERO;
- }
- if (b[0] == 0 && b[1] == 0) {
- return $clinit_10() , ZERO;
- }
- if (eq(a, ($clinit_10() , MIN_VALUE))) {
- return multByMinValue(b);
- }
- if (eq(b, MIN_VALUE)) {
- return multByMinValue(a);
- }
- if (a[1] < 0) {
- if (b[1] < 0) {
- return mul(neg(a), neg(b));
- } else {
- return neg(mul(neg(a), b));
- }
- }
- if (b[1] < 0) {
- return neg(mul(a, neg(b)));
- }
- if (compare(a, TWO_PWR_24) < 0 && compare(b, TWO_PWR_24) < 0) {
- return create((a[1] + a[0]) * (b[1] + b[0]), 0);
- }
- a3 = a[1] % 281474976710656;
- a4 = a[1] - a3;
- a1 = a[0] % 65536;
- a2 = a[0] - a1;
- b3 = b[1] % 281474976710656;
- b4 = b[1] - b3;
- b1 = b[0] % 65536;
- b2 = b[0] - b1;
- res = ZERO;
- res = addTimes(res, a4, b1);
- res = addTimes(res, a3, b2);
- res = addTimes(res, a3, b1);
- res = addTimes(res, a2, b3);
- res = addTimes(res, a2, b2);
- res = addTimes(res, a2, b1);
- res = addTimes(res, a1, b4);
- res = addTimes(res, a1, b3);
- res = addTimes(res, a1, b2);
- res = addTimes(res, a1, b1);
- return res;
- }
-
- function multByMinValue(a) {
- if ((lowBits_0(a) & 1) == 1) {
- return $clinit_10() , MIN_VALUE;
- } else {
- return $clinit_10() , ZERO;
- }
- }
-
- function neg(a) {
- var newHigh, newLow;
- if (eq(a, ($clinit_10() , MIN_VALUE))) {
- return MIN_VALUE;
- }
- newHigh = -a[1];
- newLow = -a[0];
- if (newLow > 4294967295) {
- newLow -= 4294967296;
- newHigh += 4294967296;
- }
- if (newLow < 0) {
- newLow += 4294967296;
- newHigh -= 4294967296;
- }
- return [newLow, newHigh];
- }
-
- function pwrAsDouble(n) {
- if (n <= 30) {
- return 1 << n;
- } else {
- return pwrAsDouble(30) * pwrAsDouble(n - 30);
- }
- }
-
- function shl(a, n) {
- var diff, newHigh, newLow, twoToN;
- n &= 63;
- if (eq(a, ($clinit_10() , MIN_VALUE))) {
- if (n == 0) {
- return a;
- } else {
- return ZERO;
- }
- }
- if (a[1] < 0) {
- return neg(shl(neg(a), n));
- }
- twoToN = pwrAsDouble(n);
- newHigh = a[1] * twoToN % 1.8446744073709552E19;
- newLow = a[0] * twoToN;
- diff = newLow - newLow % 4294967296;
- newHigh += diff;
- newLow -= diff;
- if (newHigh >= 9223372036854775807) {
- newHigh -= 1.8446744073709552E19;
- }
- return [newLow, newHigh];
- }
-
- function shr(a, n) {
- var newHigh, newLow, shiftFact;
- n &= 63;
- shiftFact = pwrAsDouble(n);
- newHigh = a[1] / shiftFact;
- newLow = Math.floor(a[0] / shiftFact);
- return create(newLow, newHigh);
- }
-
- function shru(a, n) {
- var sr;
- n &= 63;
- sr = shr(a, n);
- if (a[1] < 0) {
- sr = add(sr, shl(($clinit_10() , TWO), 63 - n));
- }
- return sr;
- }
-
- function sub(a, b) {
- var newHigh, newLow;
- newHigh = a[1] - b[1];
- newLow = a[0] - b[0];
- return create(newLow, newHigh);
- }
-
- function toDoubleRoundDown(a) {
- var diff, magnitute, toSubtract;
- magnitute = round_int(Math.log(a[1]) / ($clinit_10() , LN_2));
- if (magnitute <= 48) {
- return a[1] + a[0];
- } else {
- diff = magnitute - 48;
- toSubtract = (1 << diff) - 1;
- return a[1] + (a[0] - toSubtract);
- }
- }
-
- function toDoubleRoundUp(a) {
- var diff, magnitute, toAdd;
- magnitute = round_int(Math.log(a[1]) / ($clinit_10() , LN_2));
- if (magnitute <= 48) {
- return a[1] + a[0];
- } else {
- diff = magnitute - 48;
- toAdd = (1 << diff) - 1;
- return a[1] + (a[0] + toAdd);
- }
- }
-
- function toString_0(a) {
- var digits, rem, remDivTenPower, res, tenPowerLong, zeroesNeeded;
- if (a[0] == 0 && a[1] == 0) {
- return '0';
- }
- if (eq(a, ($clinit_10() , MIN_VALUE))) {
- return '-9223372036854775808';
- }
- if (a[1] < 0) {
- return '-' + toString_0(neg(a));
- }
- rem = a;
- res = '';
- while (!(rem[0] == 0 && rem[1] == 0)) {
- tenPowerLong = fromInt(1000000000);
- remDivTenPower = div(rem, tenPowerLong);
- digits = '' + lowBits_0(sub(rem, mul(remDivTenPower, tenPowerLong)));
- rem = remDivTenPower;
- if (!(rem[0] == 0 && rem[1] == 0)) {
- zeroesNeeded = 9 - digits.length;
- for (; zeroesNeeded > 0; --zeroesNeeded) {
- digits = '0' + digits;
- }
- }
- res = digits + res;
- }
- return res;
- }
-
- function $clinit_9() {
- $clinit_9 = nullMethod;
- boxedValues = initDim(_3_3D_classLit, 0, 9, 256, 0);
- }
-
- var boxedValues;
- function $clinit_10() {
- $clinit_10 = nullMethod;
- LN_2 = Math.log(2);
- MAX_VALUE = P7fffffffffffffff_longLit;
- MIN_VALUE = N8000000000000000_longLit;
- NEG_ONE = fromInt(-1);
- ONE = fromInt(1);
- TWO = fromInt(2);
- TWO_PWR_24 = P1000000_longLit;
- ZERO = fromInt(0);
- }
-
- var LN_2, MAX_VALUE, MIN_VALUE, NEG_ONE, ONE, TWO, TWO_PWR_24, ZERO;
- function getClass_6() {
- return Ljava_io_InputStream_2_classLit;
- }
-
- function InputStream() {
- }
-
- _ = InputStream.prototype = new Object_0();
- _.getClass$ = getClass_6;
- _.typeId$ = 0;
- function $ByteArrayInputStream(this$static, buf) {
- $ByteArrayInputStream_0(this$static, buf, 0, buf.length);
- return this$static;
- }
-
- function $ByteArrayInputStream_0(this$static, buf, off, len) {
- this$static.buf = buf;
- this$static.pos = off;
- this$static.count = off + len;
- if (this$static.count > buf.length)
- this$static.count = buf.length;
- return this$static;
- }
-
- function $read(this$static) {
- if (this$static.pos >= this$static.count)
- return -1;
- return this$static.buf[this$static.pos++] & 255;
- }
-
- function $read_0(this$static, buf, off, len) {
- if (this$static.pos >= this$static.count)
- return -1;
- len = min(len, this$static.count - this$static.pos);
- arraycopy(this$static.buf, this$static.pos, buf, off, len);
- this$static.pos += len;
- return len;
- }
-
- function getClass_3() {
- return Ljava_io_ByteArrayInputStream_2_classLit;
- }
-
- function ByteArrayInputStream() {
- }
-
- _ = ByteArrayInputStream.prototype = new InputStream();
- _.getClass$ = getClass_3;
- _.typeId$ = 0;
- _.buf = null;
- _.count = 0;
- _.pos = 0;
- function getClass_7() {
- return Ljava_io_OutputStream_2_classLit;
- }
-
- function OutputStream() {
- }
-
- _ = OutputStream.prototype = new Object_0();
- _.getClass$ = getClass_7;
- _.typeId$ = 0;
- function $ByteArrayOutputStream(this$static) {
- this$static.buf = initDim(_3B_classLit, 0, -1, 32, 1);
- return this$static;
- }
-
- function $ensureCapacity(this$static, len) {
- var newbuf;
- if (len <= this$static.buf.length)
- return;
- len = max(len, this$static.buf.length * 2);
- newbuf = initDim(_3B_classLit, 0, -1, len, 1);
- arraycopy(this$static.buf, 0, newbuf, 0, this$static.buf.length);
- this$static.buf = newbuf;
- }
-
- function $toByteArray(this$static) {
- var data;
- data = initDim(_3B_classLit, 0, -1, this$static.count, 1);
- arraycopy(this$static.buf, 0, data, 0, this$static.count);
- return data;
- }
-
- function $write(this$static, b) {
- $ensureCapacity(this$static, this$static.count + 1);
- this$static.buf[this$static.count++] = b << 24 >> 24;
- }
-
- function $write_0(this$static, buf, off, len) {
- $ensureCapacity(this$static, this$static.count + len);
- arraycopy(buf, off, this$static.buf, this$static.count, len);
- this$static.count += len;
- }
-
- function getClass_4() {
- return Ljava_io_ByteArrayOutputStream_2_classLit;
- }
-
- function ByteArrayOutputStream() {
- }
-
- _ = ByteArrayOutputStream.prototype = new OutputStream();
- _.getClass$ = getClass_4;
- _.typeId$ = 0;
- _.buf = null;
- _.count = 0;
- function $IOException(this$static, message) {
- this$static.detailMessage = message;
- return this$static;
- }
-
- function getClass_5() {
- return Ljava_io_IOException_2_classLit;
- }
-
- function IOException() {
- }
-
- _ = IOException.prototype = new Exception();
- _.getClass$ = getClass_5;
- _.typeId$ = 7;
- function $ArithmeticException(this$static, explanation) {
- this$static.detailMessage = explanation;
- return this$static;
- }
-
- function getClass_8() {
- return Ljava_lang_ArithmeticException_2_classLit;
- }
-
- function ArithmeticException() {
- }
-
- _ = ArithmeticException.prototype = new RuntimeException();
- _.getClass$ = getClass_8;
- _.typeId$ = 8;
- function $ArrayStoreException(this$static, message) {
- this$static.detailMessage = message;
- return this$static;
- }
-
- function getClass_9() {
- return Ljava_lang_ArrayStoreException_2_classLit;
- }
-
- function ArrayStoreException() {
- }
-
- _ = ArrayStoreException.prototype = new RuntimeException();
- _.getClass$ = getClass_9;
- _.typeId$ = 9;
- function createForArray(packageName, className) {
- var clazz;
- clazz = new Class();
- clazz.typeName = packageName + className;
- return clazz;
- }
-
- function createForClass(packageName, className) {
- var clazz;
- clazz = new Class();
- clazz.typeName = packageName + className;
- return clazz;
- }
-
- function createForEnum(packageName, className) {
- var clazz;
- clazz = new Class();
- clazz.typeName = packageName + className;
- return clazz;
- }
-
- function getClass_11() {
- return Ljava_lang_Class_2_classLit;
- }
-
- function Class() {
- }
-
- _ = Class.prototype = new Object_0();
- _.getClass$ = getClass_11;
- _.typeId$ = 0;
- _.typeName = null;
- function getClass_10() {
- return Ljava_lang_ClassCastException_2_classLit;
- }
-
- function ClassCastException() {
- }
-
- _ = ClassCastException.prototype = new RuntimeException();
- _.getClass$ = getClass_10;
- _.typeId$ = 12;
- function getClass_12() {
- return Ljava_lang_Enum_2_classLit;
- }
-
- function Enum() {
- }
-
- _ = Enum.prototype = new Object_0();
- _.getClass$ = getClass_12;
- _.typeId$ = 0;
- function $IllegalArgumentException(this$static, message) {
- this$static.detailMessage = message;
- return this$static;
- }
-
- function getClass_14() {
- return Ljava_lang_IllegalArgumentException_2_classLit;
- }
-
- function IllegalArgumentException() {
- }
-
- _ = IllegalArgumentException.prototype = new RuntimeException();
- _.getClass$ = getClass_14;
- _.typeId$ = 13;
- function getClass_15() {
- return Ljava_lang_IllegalStateException_2_classLit;
- }
-
- function IllegalStateException() {
- }
-
- _ = IllegalStateException.prototype = new RuntimeException();
- _.getClass$ = getClass_15;
- _.typeId$ = 14;
- function getClass_16() {
- return Ljava_lang_IndexOutOfBoundsException_2_classLit;
- }
-
- function IndexOutOfBoundsException() {
- }
-
- _ = IndexOutOfBoundsException.prototype = new RuntimeException();
- _.getClass$ = getClass_16;
- _.typeId$ = 15;
- function max(x, y) {
- return x > y?x:y;
- }
-
- function min(x, y) {
- return x < y?x:y;
- }
-
- function getClass_17() {
- return Ljava_lang_NullPointerException_2_classLit;
- }
-
- function NullPointerException() {
- }
-
- _ = NullPointerException.prototype = new RuntimeException();
- _.getClass$ = getClass_17;
- _.typeId$ = 16;
- function $equals(this$static, other) {
- if (other == null) {
- return false;
- }
- return String(this$static) == other;
- }
-
- function $getChars(this$static, srcBegin, srcEnd, dst, dstBegin) {
- var srcIdx;
- for (srcIdx = srcBegin; srcIdx < srcEnd; ++srcIdx) {
- dst[dstBegin++] = this$static.charCodeAt(srcIdx);
- }
- }
-
- function getClass_21() {
- return Ljava_lang_String_2_classLit;
- }
-
- _ = String.prototype;
- _.getClass$ = getClass_21;
- _.typeId$ = 2;
- function $StringBuilder(this$static) {
- var array;
- this$static.data = (array = [] , array.explicitLength = 0 , array);
- return this$static;
- }
-
- function getClass_20() {
- return Ljava_lang_StringBuilder_2_classLit;
- }
-
- function StringBuilder() {
- }
-
- _ = StringBuilder.prototype = new Object_0();
- _.getClass$ = getClass_20;
- _.typeId$ = 0;
- function arraycopy(src, srcOfs, dest, destOfs, len) {
- var destArray, destEnd, destTypeName, destlen, i, srcArray, srcTypeName, srclen;
-
- if (src == null || dest == null) {
- throw new NullPointerException();
- }
-
- srcTypeName = (src.typeMarker$ == nullMethod || src.typeId$ == 2 ? src.getClass$() : Lcom_google_gwt_core_client_JavaScriptObject_2_classLit).typeName;
- destTypeName = (dest.typeMarker$ == nullMethod || dest.typeId$ == 2 ? dest.getClass$() : Lcom_google_gwt_core_client_JavaScriptObject_2_classLit).typeName;
-
- if (srcTypeName.charCodeAt(0) != 91 || destTypeName.charCodeAt(0) != 91) {
- throw $ArrayStoreException(new ArrayStoreException(), 'Must be array types');
- }
- if (srcTypeName.charCodeAt(1) != destTypeName.charCodeAt(1)) {
- throw $ArrayStoreException(new ArrayStoreException(), 'Array types must match');
- }
-
- srclen = src.length;
- destlen = dest.length;
- if (srcOfs < 0 || destOfs < 0 || len < 0 || srcOfs + len > srclen || destOfs + len > destlen) {
- throw new IndexOutOfBoundsException();
- }
- if ((srcTypeName.charCodeAt(1) == 76 || srcTypeName.charCodeAt(1) == 91) && !$equals(srcTypeName, destTypeName)) {
- srcArray = dynamicCast(src, 3);
- destArray = dynamicCast(dest, 3);
- if ((src == null ? null : src) === (dest == null ? null : dest) && srcOfs < destOfs) {
- srcOfs += len;
- for (destEnd = destOfs + len; destEnd-- > destOfs;) {
- setCheck(destArray, destEnd, srcArray[--srcOfs]);
- }
- } else {
- for (destEnd = destOfs + len; destOfs < destEnd;) {
- setCheck(destArray, destOfs++, srcArray[srcOfs++]);
- }
- }
- } else {
- for (i = 0; i < len; ++i) {
- dest[destOfs + i] = src[srcOfs + i]
- }
- }
- }
-
-
- function $configure(this$static, encoder) {
- if (!$SetDictionarySize_0(encoder, 1 << this$static.dictionarySize))
- throw $RuntimeException(new RuntimeException(), 'unexpected failure');
- if (!$SetNumFastBytes(encoder, this$static.fb))
- throw $RuntimeException(new RuntimeException(), 'unexpected failure');
- if (!$SetMatchFinder(encoder, this$static.matchFinder))
- throw $RuntimeException(new RuntimeException(), 'unexpected failure');
- if (!$SetLcLpPb_0(encoder, this$static.lc, this$static.lp, this$static.pb))
- throw $RuntimeException(new RuntimeException(), 'unexpected failure');
- }
-
- function getClass_23() {
- return Lorg_dellroad_lzma_client_CompressionMode_2_classLit;
- }
-
- function CompressionMode() {
- }
-
- _ = CompressionMode.prototype = new Enum();
- _.getClass$ = getClass_23;
- _.typeId$ = 0;
- _.dictionarySize = 0;
- _.fb = 0;
- _.lc = 0;
- _.lp = 0;
- _.matchFinder = 0;
- _.pb = 0;
-
- function $execute(this$static) {
- var $e0;
- try {
- return $processChunk(this$static.chunker);
- }
- catch ($e0) {
- $e0 = caught($e0);
- if (instanceOf($e0, 10)) {
- return false;
- } else {
- throw $e0;
- }
- }
- }
-
- function $init(this$static, input, output, length_0, mode) {
- var encoder, i;
- if (!mode)
- throw $IllegalArgumentException(new IllegalArgumentException(), 'null mode');
- if (compare(length_0, N1_longLit) < 0)
- throw $IllegalArgumentException(new IllegalArgumentException(), 'invalid length ' + toString_0(length_0));
- this$static.length_0 = length_0;
- encoder = $Encoder(new Encoder());
- $configure(mode, encoder);
- encoder._writeEndMark = true;
- $WriteCoderProperties(encoder, output);
- for (i = 0; i < 64; i += 8)
- $write(output, lowBits_0(shr(length_0, i)) & 255);
- this$static.chunker = (encoder._needReleaseMFStream = false , (encoder._inStream = input , encoder._finished = false , $Create_2(encoder) , encoder._rangeEncoder.Stream = output , $Init_4(encoder) , $FillDistancesPrices(encoder) , $FillAlignPrices(encoder) , encoder._lenEncoder._tableSize = encoder._numFastBytes + 1 - 2 , $UpdateTables(encoder._lenEncoder, 1 << encoder._posStateBits) , encoder._repMatchLenEncoder._tableSize = encoder._numFastBytes + 1 - 2 , $UpdateTables(encoder._repMatchLenEncoder, 1 << encoder._posStateBits) , encoder.nowPos64 = P0_longLit , undefined) , $Chunker_0(new Chunker(), encoder));
- }
-
- function getClass_26() {
- return Lorg_dellroad_lzma_client_LZMACompressor_2_classLit;
- }
-
- function LZMACompressor() {
- }
-
- _ = LZMACompressor.prototype = new Object_0();
- _.getClass$ = getClass_26;
- _.typeId$ = 0;
- _.chunker = null;
-
- function $LZMAByteArrayCompressor(this$static, data, mode) {
- var $e0;
- this$static.output = $ByteArrayOutputStream(new ByteArrayOutputStream());
- try {
- $init(this$static, $ByteArrayInputStream(new ByteArrayInputStream(), data), this$static.output, fromInt(data.length), mode);
- } catch ($e0) {
- $e0 = caught($e0);
- if (instanceOf($e0, 10)) {
- throw $RuntimeException(new RuntimeException(), 'impossible exception');
- } else {
- throw $e0;
- }
- }
- return this$static;
- }
-
- function getClass_24() {
- return Lorg_dellroad_lzma_client_LZMAByteArrayCompressor_2_classLit;
- }
-
- function LZMAByteArrayCompressor() {
- }
-
- _ = LZMAByteArrayCompressor.prototype = new LZMACompressor();
- _.getClass$ = getClass_24;
- _.typeId$ = 0;
- _.output = null;
- function $execute_0(this$static) {
- var $e0, e;
- try {
- return $processChunk(this$static.chunker);
- }
- catch ($e0) {
- $e0 = caught($e0);
- if (instanceOf($e0, 10)) {
- e = $e0;
- this$static.exception = e;
- return false;
- } else {
- throw $e0;
- }
- }
- }
-
- function $init_0(this$static, input, output) {
- var decoder,
- hex_length = "",
- i,
- properties,
- r,
- tmp_length;
-
- properties = initDim(_3B_classLit, 0, -1, 5, 1);
- for (i = 0; i < properties.length; ++i) {
- r = $read(input);
- if (r == -1)
- throw $IOException(new IOException(), 'truncated input');
- properties[i] = r << 24 >> 24;
- }
- decoder = $Decoder(new Decoder());
- if (!$SetDecoderProperties(decoder, properties))
- throw $IOException(new IOException(), 'corrupted input');
-
- for (i = 0; i < 64; i += 8) {
- r = $read(input);
- if (r == -1)
- throw $IOException(new IOException(), 'truncated input');
- r = r.toString(16);
- if (r.length == 1) r = "0" + r;
- hex_length = r + "" + hex_length;
- }
-
- /// Was the length set in the header (if it was compressed from a stream, the length is all f's).
- if (hex_length.toLowerCase() == "ffffffffffffffffff" || hex_length == 0) {
- /// The length is unknown, so set to -1.
- this$static.length_0 = N1_longLit;
- } else {
- ///NOTE: If there is a problem with the decoder because of the length, you can always set the length to -1 (N1_longLit) which means unknown.
- tmp_length = parseInt(hex_length, 16);
- /// If the length is too long to handle, just set it to unknown.
- if (tmp_length > 4294967295) {
- this$static.length_0 = N1_longLit;
- } else {
- this$static.length_0 = fromDouble(tmp_length);
- }
- }
-
- this$static.chunker = $CodeInChunks(decoder, input, output, this$static.length_0);
- }
-
- function getClass_27() {
- return Lorg_dellroad_lzma_client_LZMADecompressor_2_classLit;
- }
-
- function LZMADecompressor() {
- }
-
- _ = LZMADecompressor.prototype = new Object_0();
- _.getClass$ = getClass_27;
- _.typeId$ = 0;
- _.chunker = null;
- _.exception = null;
- _.length_0 = P0_longLit;
- function $LZMAByteArrayDecompressor(this$static, data) {
- this$static.output = $ByteArrayOutputStream(new ByteArrayOutputStream());
- $init_0(this$static, $ByteArrayInputStream(new ByteArrayInputStream(), data), this$static.output);
- return this$static;
- }
-
- function getClass_25() {
- return Lorg_dellroad_lzma_client_LZMAByteArrayDecompressor_2_classLit;
- }
-
- function LZMAByteArrayDecompressor() {
- }
-
- _ = LZMAByteArrayDecompressor.prototype = new LZMADecompressor();
- _.getClass$ = getClass_25;
- _.typeId$ = 0;
- _.output = null;
- function $Create_4(this$static, keepSizeBefore, keepSizeAfter, keepSizeReserv) {
- var blockSize;
- this$static._keepSizeBefore = keepSizeBefore;
- this$static._keepSizeAfter = keepSizeAfter;
- blockSize = keepSizeBefore + keepSizeAfter + keepSizeReserv;
- if (this$static._bufferBase == null || this$static._blockSize != blockSize) {
- this$static._bufferBase = null;
- this$static._blockSize = blockSize;
- this$static._bufferBase = initDim(_3B_classLit, 0, -1, this$static._blockSize, 1);
- }
- this$static._pointerToLastSafePosition = this$static._blockSize - keepSizeAfter;
- }
-
- function $GetIndexByte(this$static, index) {
- return this$static._bufferBase[this$static._bufferOffset + this$static._pos + index];
- }
-
- function $GetMatchLen(this$static, index, distance, limit) {
- var i, pby;
- if (this$static._streamEndWasReached) {
- if (this$static._pos + index + limit > this$static._streamPos) {
- limit = this$static._streamPos - (this$static._pos + index);
- }
- }
- ++distance;
- pby = this$static._bufferOffset + this$static._pos + index;
- for (i = 0; i < limit && this$static._bufferBase[pby + i] == this$static._bufferBase[pby + i - distance]; ++i) {
- }
- return i;
- }
-
- function $GetNumAvailableBytes(this$static) {
- return this$static._streamPos - this$static._pos;
- }
-
- function $MoveBlock(this$static) {
- var i, numBytes, offset;
- offset = this$static._bufferOffset + this$static._pos - this$static._keepSizeBefore;
- if (offset > 0) {
- --offset;
- }
- numBytes = this$static._bufferOffset + this$static._streamPos - offset;
- for (i = 0; i < numBytes; ++i) {
- this$static._bufferBase[i] = this$static._bufferBase[offset + i];
- }
- this$static._bufferOffset -= offset;
- }
-
- function $MovePos_1(this$static) {
- var pointerToPostion;
- ++this$static._pos;
- if (this$static._pos > this$static._posLimit) {
- pointerToPostion = this$static._bufferOffset + this$static._pos;
- if (pointerToPostion > this$static._pointerToLastSafePosition) {
- $MoveBlock(this$static);
- }
- $ReadBlock(this$static);
- }
- }
-
- function $ReadBlock(this$static) {
- var numReadBytes, pointerToPostion, size;
- if (this$static._streamEndWasReached)
- return;
- while (true) {
- size = -this$static._bufferOffset + this$static._blockSize - this$static._streamPos;
- if (size == 0)
- return;
- numReadBytes = $read_0(this$static._stream, this$static._bufferBase, this$static._bufferOffset + this$static._streamPos, size);
- if (numReadBytes == -1) {
- this$static._posLimit = this$static._streamPos;
- pointerToPostion = this$static._bufferOffset + this$static._posLimit;
- if (pointerToPostion > this$static._pointerToLastSafePosition) {
- this$static._posLimit = this$static._pointerToLastSafePosition - this$static._bufferOffset;
- }
- this$static._streamEndWasReached = true;
- return;
- }
- this$static._streamPos += numReadBytes;
- if (this$static._streamPos >= this$static._pos + this$static._keepSizeAfter) {
- this$static._posLimit = this$static._streamPos - this$static._keepSizeAfter;
- }
- }
- }
-
- function $ReduceOffsets(this$static, subValue) {
- this$static._bufferOffset += subValue;
- this$static._posLimit -= subValue;
- this$static._pos -= subValue;
- this$static._streamPos -= subValue;
- }
-
- function getClass_40() {
- return Lorg_dellroad_lzma_client_SevenZip_Compression_LZ_InWindow_2_classLit;
- }
-
- function InWindow() {
- }
-
- _ = InWindow.prototype = new Object_0();
- _.getClass$ = getClass_40;
- _.typeId$ = 0;
- _._blockSize = 0;
- _._bufferBase = null;
- _._bufferOffset = 0;
- _._keepSizeAfter = 0;
- _._keepSizeBefore = 0;
- _._pointerToLastSafePosition = 0;
- _._pos = 0;
- _._posLimit = 0;
- _._stream = null;
- _._streamEndWasReached = false;
- _._streamPos = 0;
- function $clinit_60() {
- $clinit_60 = nullMethod;
- var i, j, r;
- CrcTable = initDim(_3I_classLit, 0, -1, 256, 1);
- for (i = 0; i < 256; ++i) {
- r = i;
- for (j = 0; j < 8; ++j)
- if ((r & 1) != 0) {
- r = r >>> 1 ^ -306674912;
- } else {
- r >>>= 1;
- }
- CrcTable[i] = r;
- }
- }
-
- function $Create_3(this$static, historySize, keepAddBufferBefore, matchMaxLen, keepAddBufferAfter) {
- var cyclicBufferSize, hs, windowReservSize;
- if (historySize > 1073741567) {
- return false;
- }
- this$static._cutValue = 16 + (matchMaxLen >> 1);
- windowReservSize = ~~((historySize + keepAddBufferBefore + matchMaxLen + keepAddBufferAfter) / 2) + 256;
- $Create_4(this$static, historySize + keepAddBufferBefore, matchMaxLen + keepAddBufferAfter, windowReservSize);
- this$static._matchMaxLen = matchMaxLen;
- cyclicBufferSize = historySize + 1;
- if (this$static._cyclicBufferSize != cyclicBufferSize) {
- this$static._son = initDim(_3I_classLit, 0, -1, (this$static._cyclicBufferSize = cyclicBufferSize) * 2, 1);
- }
- hs = 65536;
- if (this$static.HASH_ARRAY) {
- hs = historySize - 1;
- hs |= hs >> 1;
- hs |= hs >> 2;
- hs |= hs >> 4;
- hs |= hs >> 8;
- hs >>= 1;
- hs |= 65535;
- if (hs > 16777216)
- hs >>= 1;
- this$static._hashMask = hs;
- ++hs;
- hs += this$static.kFixHashSize;
- }
- if (hs != this$static._hashSizeSum) {
- this$static._hash = initDim(_3I_classLit, 0, -1, this$static._hashSizeSum = hs, 1);
- }
- return true;
- }
-
- function $GetMatches(this$static, distances) {
- var count, cur, curMatch, curMatch2, curMatch3, cyclicPos, delta, hash2Value, hash3Value, hashValue, len, len0, len1, lenLimit, matchMinPos, maxLen, offset, pby1, ptr0, ptr1, temp;
- if (this$static._pos + this$static._matchMaxLen <= this$static._streamPos) {
- lenLimit = this$static._matchMaxLen;
- } else {
- lenLimit = this$static._streamPos - this$static._pos;
- if (lenLimit < this$static.kMinMatchCheck) {
- $MovePos_0(this$static);
- return 0;
- }
- }
- offset = 0;
- matchMinPos = this$static._pos > this$static._cyclicBufferSize?this$static._pos - this$static._cyclicBufferSize:0;
- cur = this$static._bufferOffset + this$static._pos;
- maxLen = 1;
- hash2Value = 0;
- hash3Value = 0;
- if (this$static.HASH_ARRAY) {
- temp = CrcTable[this$static._bufferBase[cur] & 255] ^ this$static._bufferBase[cur + 1] & 255;
- hash2Value = temp & 1023;
- temp ^= (this$static._bufferBase[cur + 2] & 255) << 8;
- hash3Value = temp & 65535;
- hashValue = (temp ^ CrcTable[this$static._bufferBase[cur + 3] & 255] << 5) & this$static._hashMask;
- } else {
- hashValue = this$static._bufferBase[cur] & 255 ^ (this$static._bufferBase[cur + 1] & 255) << 8;
- }
- curMatch = this$static._hash[this$static.kFixHashSize + hashValue];
- if (this$static.HASH_ARRAY) {
- curMatch2 = this$static._hash[hash2Value];
- curMatch3 = this$static._hash[1024 + hash3Value];
- this$static._hash[hash2Value] = this$static._pos;
- this$static._hash[1024 + hash3Value] = this$static._pos;
- if (curMatch2 > matchMinPos) {
- if (this$static._bufferBase[this$static._bufferOffset + curMatch2] == this$static._bufferBase[cur]) {
- distances[offset++] = maxLen = 2;
- distances[offset++] = this$static._pos - curMatch2 - 1;
- }
- }
- if (curMatch3 > matchMinPos) {
- if (this$static._bufferBase[this$static._bufferOffset + curMatch3] == this$static._bufferBase[cur]) {
- if (curMatch3 == curMatch2) {
- offset -= 2;
- }
- distances[offset++] = maxLen = 3;
- distances[offset++] = this$static._pos - curMatch3 - 1;
- curMatch2 = curMatch3;
- }
- }
- if (offset != 0 && curMatch2 == curMatch) {
- offset -= 2;
- maxLen = 1;
- }
- }
- this$static._hash[this$static.kFixHashSize + hashValue] = this$static._pos;
- ptr0 = (this$static._cyclicBufferPos << 1) + 1;
- ptr1 = this$static._cyclicBufferPos << 1;
- len0 = len1 = this$static.kNumHashDirectBytes;
- if (this$static.kNumHashDirectBytes != 0) {
- if (curMatch > matchMinPos) {
- if (this$static._bufferBase[this$static._bufferOffset + curMatch + this$static.kNumHashDirectBytes] != this$static._bufferBase[cur + this$static.kNumHashDirectBytes]) {
- distances[offset++] = maxLen = this$static.kNumHashDirectBytes;
- distances[offset++] = this$static._pos - curMatch - 1;
- }
- }
- }
- count = this$static._cutValue;
- while (true) {
- if (curMatch <= matchMinPos || count-- == 0) {
- this$static._son[ptr0] = this$static._son[ptr1] = 0;
- break;
- }
- delta = this$static._pos - curMatch;
- cyclicPos = (delta <= this$static._cyclicBufferPos?this$static._cyclicBufferPos - delta:this$static._cyclicBufferPos - delta + this$static._cyclicBufferSize) << 1;
- pby1 = this$static._bufferOffset + curMatch;
- len = len0 < len1?len0:len1;
- if (this$static._bufferBase[pby1 + len] == this$static._bufferBase[cur + len]) {
- while (++len != lenLimit) {
- if (this$static._bufferBase[pby1 + len] != this$static._bufferBase[cur + len]) {
- break;
- }
- }
- if (maxLen < len) {
- distances[offset++] = maxLen = len;
- distances[offset++] = delta - 1;
- if (len == lenLimit) {
- this$static._son[ptr1] = this$static._son[cyclicPos];
- this$static._son[ptr0] = this$static._son[cyclicPos + 1];
- break;
- }
- }
- }
- if ((this$static._bufferBase[pby1 + len] & 255) < (this$static._bufferBase[cur + len] & 255)) {
- this$static._son[ptr1] = curMatch;
- ptr1 = cyclicPos + 1;
- curMatch = this$static._son[ptr1];
- len1 = len;
- } else {
- this$static._son[ptr0] = curMatch;
- ptr0 = cyclicPos;
- curMatch = this$static._son[ptr0];
- len0 = len;
- }
- }
- $MovePos_0(this$static);
- return offset;
- }
-
- function $Init_5(this$static) {
- var i;
- this$static._bufferOffset = 0;
- this$static._pos = 0;
- this$static._streamPos = 0;
- this$static._streamEndWasReached = false;
- $ReadBlock(this$static);
- for (i = 0; i < this$static._hashSizeSum; ++i) {
- this$static._hash[i] = 0;
- }
- this$static._cyclicBufferPos = 0;
- $ReduceOffsets(this$static, -1);
- }
-
- function $MovePos_0(this$static) {
- var subValue;
- if (++this$static._cyclicBufferPos >= this$static._cyclicBufferSize) {
- this$static._cyclicBufferPos = 0;
- }
- $MovePos_1(this$static);
- if (this$static._pos == 1073741823) {
- subValue = this$static._pos - this$static._cyclicBufferSize;
- $NormalizeLinks(this$static._son, this$static._cyclicBufferSize * 2, subValue);
- $NormalizeLinks(this$static._hash, this$static._hashSizeSum, subValue);
- $ReduceOffsets(this$static, subValue);
- }
- }
-
- function $NormalizeLinks(items, numItems, subValue) {
- var i, value;
- for (i = 0; i < numItems; ++i) {
- value = items[i];
- if (value <= subValue) {
- value = 0;
- } else {
- value -= subValue;
- }
- items[i] = value;
- }
- }
-
- function $SetType(this$static, numHashBytes) {
- this$static.HASH_ARRAY = numHashBytes > 2;
- if (this$static.HASH_ARRAY) {
- this$static.kNumHashDirectBytes = 0;
- this$static.kMinMatchCheck = 4;
- this$static.kFixHashSize = 66560;
- } else {
- this$static.kNumHashDirectBytes = 2;
- this$static.kMinMatchCheck = 3;
- this$static.kFixHashSize = 0;
- }
- }
-
- function $Skip(this$static, num) {
- var count, cur, curMatch, cyclicPos, delta, hash2Value, hash3Value, hashValue, len, len0, len1, lenLimit, matchMinPos, pby1, ptr0, ptr1, temp;
- do {
- if (this$static._pos + this$static._matchMaxLen <= this$static._streamPos) {
- lenLimit = this$static._matchMaxLen;
- } else {
- lenLimit = this$static._streamPos - this$static._pos;
- if (lenLimit < this$static.kMinMatchCheck) {
- $MovePos_0(this$static);
- continue;
- }
- }
- matchMinPos = this$static._pos > this$static._cyclicBufferSize?this$static._pos - this$static._cyclicBufferSize:0;
- cur = this$static._bufferOffset + this$static._pos;
- if (this$static.HASH_ARRAY) {
- temp = CrcTable[this$static._bufferBase[cur] & 255] ^ this$static._bufferBase[cur + 1] & 255;
- hash2Value = temp & 1023;
- this$static._hash[hash2Value] = this$static._pos;
- temp ^= (this$static._bufferBase[cur + 2] & 255) << 8;
- hash3Value = temp & 65535;
- this$static._hash[1024 + hash3Value] = this$static._pos;
- hashValue = (temp ^ CrcTable[this$static._bufferBase[cur + 3] & 255] << 5) & this$static._hashMask;
- } else {
- hashValue = this$static._bufferBase[cur] & 255 ^ (this$static._bufferBase[cur + 1] & 255) << 8;
- }
- curMatch = this$static._hash[this$static.kFixHashSize + hashValue];
- this$static._hash[this$static.kFixHashSize + hashValue] = this$static._pos;
- ptr0 = (this$static._cyclicBufferPos << 1) + 1;
- ptr1 = this$static._cyclicBufferPos << 1;
- len0 = len1 = this$static.kNumHashDirectBytes;
- count = this$static._cutValue;
- while (true) {
- if (curMatch <= matchMinPos || count-- == 0) {
- this$static._son[ptr0] = this$static._son[ptr1] = 0;
- break;
- }
- delta = this$static._pos - curMatch;
- cyclicPos = (delta <= this$static._cyclicBufferPos?this$static._cyclicBufferPos - delta:this$static._cyclicBufferPos - delta + this$static._cyclicBufferSize) << 1;
- pby1 = this$static._bufferOffset + curMatch;
- len = len0 < len1?len0:len1;
- if (this$static._bufferBase[pby1 + len] == this$static._bufferBase[cur + len]) {
- while (++len != lenLimit) {
- if (this$static._bufferBase[pby1 + len] != this$static._bufferBase[cur + len]) {
- break;
- }
- }
- if (len == lenLimit) {
- this$static._son[ptr1] = this$static._son[cyclicPos];
- this$static._son[ptr0] = this$static._son[cyclicPos + 1];
- break;
- }
- }
- if ((this$static._bufferBase[pby1 + len] & 255) < (this$static._bufferBase[cur + len] & 255)) {
- this$static._son[ptr1] = curMatch;
- ptr1 = cyclicPos + 1;
- curMatch = this$static._son[ptr1];
- len1 = len;
- } else {
- this$static._son[ptr0] = curMatch;
- ptr0 = cyclicPos;
- curMatch = this$static._son[ptr0];
- len0 = len;
- }
- }
- $MovePos_0(this$static);
- }
- while (--num != 0);
- }
-
- function getClass_39() {
- return Lorg_dellroad_lzma_client_SevenZip_Compression_LZ_BinTree_2_classLit;
- }
-
- function BinTree() {
- }
-
- _ = BinTree.prototype = new InWindow();
- _.getClass$ = getClass_39;
- _.typeId$ = 0;
- _.HASH_ARRAY = true;
- _._cutValue = 255;
- _._cyclicBufferPos = 0;
- _._cyclicBufferSize = 0;
- _._hash = null;
- _._hashMask = 0;
- _._hashSizeSum = 0;
- _._matchMaxLen = 0;
- _._son = null;
- _.kFixHashSize = 66560;
- _.kMinMatchCheck = 4;
- _.kNumHashDirectBytes = 0;
- var CrcTable;
- function $CopyBlock(this$static, distance, len) {
- var pos;
- pos = this$static._pos - distance - 1;
- if (pos < 0) {
- pos += this$static._windowSize;
- }
- for (; len != 0; --len) {
- if (pos >= this$static._windowSize) {
- pos = 0;
- }
- this$static._buffer[this$static._pos++] = this$static._buffer[pos++];
- if (this$static._pos >= this$static._windowSize) {
- $Flush_0(this$static);
- }
- }
- }
-
- function $Create_5(this$static, windowSize) {
- if (this$static._buffer == null || this$static._windowSize != windowSize) {
- this$static._buffer = initDim(_3B_classLit, 0, -1, windowSize, 1);
- }
- this$static._windowSize = windowSize;
- this$static._pos = 0;
- this$static._streamPos = 0;
- }
-
- function $Flush_0(this$static) {
- var size;
- size = this$static._pos - this$static._streamPos;
- if (size == 0) {
- return;
- }
- $write_0(this$static._stream, this$static._buffer, this$static._streamPos, size);
- if (this$static._pos >= this$static._windowSize) {
- this$static._pos = 0;
- }
- this$static._streamPos = this$static._pos;
- }
-
- function $GetByte(this$static, distance) {
- var pos;
- pos = this$static._pos - distance - 1;
- if (pos < 0) {
- pos += this$static._windowSize;
- }
- return this$static._buffer[pos];
- }
-
- function $Init_7(this$static, solid) {
- if (!solid) {
- this$static._streamPos = 0;
- this$static._pos = 0;
- }
- }
-
- function $PutByte(this$static, b) {
- this$static._buffer[this$static._pos++] = b;
- if (this$static._pos >= this$static._windowSize) {
- $Flush_0(this$static);
- }
- }
-
- function $ReleaseStream(this$static) {
- $Flush_0(this$static);
- this$static._stream = null;
- }
-
- function $SetStream_0(this$static, stream) {
- $Flush_0(this$static);
- this$static._stream = null;
- this$static._stream = stream;
- }
-
- function getClass_41() {
- return Lorg_dellroad_lzma_client_SevenZip_Compression_LZ_OutWindow_2_classLit;
- }
-
- function OutWindow() {
- }
-
- _ = OutWindow.prototype = new Object_0();
- _.getClass$ = getClass_41;
- _.typeId$ = 0;
- _._buffer = null;
- _._pos = 0;
- _._stream = null;
- _._streamPos = 0;
- _._windowSize = 0;
- function GetLenToPosState(len) {
- len -= 2;
- if (len < 4) {
- return len;
- }
- return 3;
- }
-
- function StateUpdateChar(index) {
- if (index < 4) {
- return 0;
- }
- if (index < 10) {
- return index - 3;
- }
- return index - 6;
- }
-
- function $Chunker_0(this$static, encoder) {
- this$static.encoder = encoder;
- this$static.decoder = null;
- this$static.alive = true;
- return this$static;
- }
-
- function $Chunker(this$static, decoder) {
- this$static.decoder = decoder;
- this$static.encoder = null;
- this$static.alive = true;
- return this$static;
- }
-
- function $processChunk(this$static) {
- var exception;
- if (!this$static.alive) {
- throw new IllegalStateException();
- }
- exception = true;
- try {
- if (this$static.encoder) {
- $processEncoderChunk(this$static);
- } else {
- $processDecoderChunk(this$static);
- }
- exception = false;
- return this$static.alive;
- } finally {
- if (exception) {
- this$static.alive = false;
- }
- }
- }
-
- function $processDecoderChunk(this$static) {
- var result;
- result = $CodeOneChunk(this$static.decoder);
- if (result == -1) {
- throw $IOException(new IOException(), 'corrupted input');
- }
- this$static.inBytesProcessed = N1_longLit;
- this$static.outBytesProcessed = this$static.decoder.nowPos64;
- if (result == 1 || compare(this$static.decoder.outSize, P0_longLit) >= 0 && compare(this$static.decoder.nowPos64, this$static.decoder.outSize) >= 0) {
- $CodeFinish(this$static.decoder);
- this$static.alive = false;
- }
- }
-
- function $processEncoderChunk(this$static) {
- $CodeOneBlock(this$static.encoder, this$static.encoder.processedInSize, this$static.encoder.processedOutSize, this$static.encoder.finished);
- this$static.inBytesProcessed = this$static.encoder.processedInSize[0];
- if (this$static.encoder.finished[0]) {
- $ReleaseStreams(this$static.encoder);
- this$static.alive = false;
- }
- }
-
- function getClass_28() {
- return Lorg_dellroad_lzma_client_SevenZip_Compression_LZMA_Chunker_2_classLit;
- }
-
- function Chunker() {
- }
-
- _ = Chunker.prototype = new Object_0();
- _.getClass$ = getClass_28;
- _.typeId$ = 0;
- _.alive = false;
- _.decoder = null;
- _.encoder = null;
- function $CodeFinish(this$static) {
- $Flush_0(this$static.m_OutWindow);
- $ReleaseStream(this$static.m_OutWindow);
- this$static.m_RangeDecoder.Stream = null;
- }
-
- function $CodeInChunks(this$static, inStream, outStream, outSize) {
- this$static.m_RangeDecoder.Stream = inStream;
- $SetStream_0(this$static.m_OutWindow, outStream);
- $Init_1(this$static);
- this$static.state = 0;
- this$static.rep0 = 0;
- this$static.rep1 = 0;
- this$static.rep2 = 0;
- this$static.rep3 = 0;
- this$static.outSize = outSize;
- this$static.nowPos64 = P0_longLit;
- this$static.prevByte = 0;
- return $Chunker(new Chunker(), this$static);
- }
-
- function $CodeOneChunk(this$static) {
- var decoder2, distance, len, numDirectBits, posSlot, posState;
- posState = lowBits_0(this$static.nowPos64) & this$static.m_PosStateMask;
- if ($DecodeBit(this$static.m_RangeDecoder, this$static.m_IsMatchDecoders, (this$static.state << 4) + posState) == 0) {
- decoder2 = $GetDecoder(this$static.m_LiteralDecoder, lowBits_0(this$static.nowPos64), this$static.prevByte);
- if (this$static.state < 7) {
- this$static.prevByte = $DecodeNormal(decoder2, this$static.m_RangeDecoder);
- }
- else {
- this$static.prevByte = $DecodeWithMatchByte(decoder2, this$static.m_RangeDecoder, $GetByte(this$static.m_OutWindow, this$static.rep0));
- }
- $PutByte(this$static.m_OutWindow, this$static.prevByte);
- this$static.state = StateUpdateChar(this$static.state);
- this$static.nowPos64 = add(this$static.nowPos64, P1_longLit);
- } else {
- if ($DecodeBit(this$static.m_RangeDecoder, this$static.m_IsRepDecoders, this$static.state) == 1) {
- len = 0;
- if ($DecodeBit(this$static.m_RangeDecoder, this$static.m_IsRepG0Decoders, this$static.state) == 0) {
- if ($DecodeBit(this$static.m_RangeDecoder, this$static.m_IsRep0LongDecoders, (this$static.state << 4) + posState) == 0) {
- this$static.state = this$static.state < 7?9:11;
- len = 1;
- }
- } else {
- if ($DecodeBit(this$static.m_RangeDecoder, this$static.m_IsRepG1Decoders, this$static.state) == 0) {
- distance = this$static.rep1;
- } else {
- if ($DecodeBit(this$static.m_RangeDecoder, this$static.m_IsRepG2Decoders, this$static.state) == 0) {
- distance = this$static.rep2;
- } else {
- distance = this$static.rep3;
- this$static.rep3 = this$static.rep2;
- }
- this$static.rep2 = this$static.rep1;
- }
- this$static.rep1 = this$static.rep0;
- this$static.rep0 = distance;
- }
- if (len == 0) {
- len = $Decode(this$static.m_RepLenDecoder, this$static.m_RangeDecoder, posState) + 2;
- this$static.state = this$static.state < 7?8:11;
- }
- } else {
- this$static.rep3 = this$static.rep2;
- this$static.rep2 = this$static.rep1;
- this$static.rep1 = this$static.rep0;
- len = 2 + $Decode(this$static.m_LenDecoder, this$static.m_RangeDecoder, posState);
- this$static.state = this$static.state < 7?7:10;
- posSlot = $Decode_0(this$static.m_PosSlotDecoder[GetLenToPosState(len)], this$static.m_RangeDecoder);
- if (posSlot >= 4) {
- numDirectBits = (posSlot >> 1) - 1;
- this$static.rep0 = (2 | posSlot & 1) << numDirectBits;
- if (posSlot < 14) {
- this$static.rep0 += ReverseDecode(this$static.m_PosDecoders, this$static.rep0 - posSlot - 1, this$static.m_RangeDecoder, numDirectBits);
- } else {
- this$static.rep0 += $DecodeDirectBits(this$static.m_RangeDecoder, numDirectBits - 4) << 4;
- this$static.rep0 += $ReverseDecode(this$static.m_PosAlignDecoder, this$static.m_RangeDecoder);
- if (this$static.rep0 < 0) {
- if (this$static.rep0 == -1) {
- return 1;
- }
- return -1;
- }
- }
- } else
- this$static.rep0 = posSlot;
- }
- if (compare(fromInt(this$static.rep0), this$static.nowPos64) >= 0 || this$static.rep0 >= this$static.m_DictionarySizeCheck) {
- return -1;
- }
- $CopyBlock(this$static.m_OutWindow, this$static.rep0, len);
- this$static.nowPos64 = add(this$static.nowPos64, fromInt(len));
- this$static.prevByte = $GetByte(this$static.m_OutWindow, 0);
- }
- return 0;
- }
-
- function $Decoder(this$static) {
- var i;
- this$static.m_OutWindow = new OutWindow();
- this$static.m_RangeDecoder = new Decoder_0();
- this$static.m_IsMatchDecoders = initDim(_3S_classLit, 0, -1, 192, 1);
- this$static.m_IsRepDecoders = initDim(_3S_classLit, 0, -1, 12, 1);
- this$static.m_IsRepG0Decoders = initDim(_3S_classLit, 0, -1, 12, 1);
- this$static.m_IsRepG1Decoders = initDim(_3S_classLit, 0, -1, 12, 1);
- this$static.m_IsRepG2Decoders = initDim(_3S_classLit, 0, -1, 12, 1);
- this$static.m_IsRep0LongDecoders = initDim(_3S_classLit, 0, -1, 192, 1);
- this$static.m_PosSlotDecoder = initDim(_3Lorg_dellroad_lzma_client_SevenZip_Compression_RangeCoder_BitTreeDecoder_2_classLit, 0, 7, 4, 0);
- this$static.m_PosDecoders = initDim(_3S_classLit, 0, -1, 114, 1);
- this$static.m_PosAlignDecoder = $BitTreeDecoder(new BitTreeDecoder(), 4);
- this$static.m_LenDecoder = $Decoder$LenDecoder(new Decoder$LenDecoder());
- this$static.m_RepLenDecoder = $Decoder$LenDecoder(new Decoder$LenDecoder());
- this$static.m_LiteralDecoder = new Decoder$LiteralDecoder();
- for (i = 0; i < 4; ++i) {
- this$static.m_PosSlotDecoder[i] = $BitTreeDecoder(new BitTreeDecoder(), 6);
- }
- return this$static;
- }
-
- function $Init_1(this$static) {
- var i;
- $Init_7(this$static.m_OutWindow, false);
- InitBitModels(this$static.m_IsMatchDecoders);
- InitBitModels(this$static.m_IsRep0LongDecoders);
- InitBitModels(this$static.m_IsRepDecoders);
- InitBitModels(this$static.m_IsRepG0Decoders);
- InitBitModels(this$static.m_IsRepG1Decoders);
- InitBitModels(this$static.m_IsRepG2Decoders);
- InitBitModels(this$static.m_PosDecoders);
- $Init_0(this$static.m_LiteralDecoder);
- for (i = 0; i < 4; ++i) {
- InitBitModels(this$static.m_PosSlotDecoder[i].Models);
- }
- $Init(this$static.m_LenDecoder);
- $Init(this$static.m_RepLenDecoder);
- InitBitModels(this$static.m_PosAlignDecoder.Models);
- $Init_8(this$static.m_RangeDecoder);
- }
-
- function $SetDecoderProperties(this$static, properties) {
- var dictionarySize, i, lc, lp, pb, remainder, val;
- if (properties.length < 5)
- return false;
- val = properties[0] & 255;
- lc = val % 9;
- remainder = ~~(val / 9);
- lp = remainder % 5;
- pb = ~~(remainder / 5);
- dictionarySize = 0;
- for (i = 0; i < 4; ++i) {
- dictionarySize += (properties[1 + i] & 255) << i * 8;
- }
- if (!$SetLcLpPb(this$static, lc, lp, pb)) {
- return false;
- }
- return $SetDictionarySize(this$static, dictionarySize);
- }
-
- function $SetDictionarySize(this$static, dictionarySize) {
- if (dictionarySize < 0) {
- return false;
- }
- if (this$static.m_DictionarySize != dictionarySize) {
- this$static.m_DictionarySize = dictionarySize;
- this$static.m_DictionarySizeCheck = max(this$static.m_DictionarySize, 1);
- $Create_5(this$static.m_OutWindow, max(this$static.m_DictionarySizeCheck, 4096));
- }
- return true;
- }
-
- function $SetLcLpPb(this$static, lc, lp, pb) {
- var numPosStates;
- if (lc > 8 || lp > 4 || pb > 4) {
- return false;
- }
- $Create_0(this$static.m_LiteralDecoder, lp, lc);
- numPosStates = 1 << pb;
- $Create(this$static.m_LenDecoder, numPosStates);
- $Create(this$static.m_RepLenDecoder, numPosStates);
- this$static.m_PosStateMask = numPosStates - 1;
- return true;
- }
-
- function getClass_32() {
- return Lorg_dellroad_lzma_client_SevenZip_Compression_LZMA_Decoder_2_classLit;
- }
-
- function Decoder() {
- }
-
- _ = Decoder.prototype = new Object_0();
- _.getClass$ = getClass_32;
- _.typeId$ = 0;
- _.m_DictionarySize = -1;
- _.m_DictionarySizeCheck = -1;
- _.m_PosStateMask = 0;
- _.nowPos64 = P0_longLit;
- _.outSize = P0_longLit;
- _.prevByte = 0;
- _.rep0 = 0;
- _.rep1 = 0;
- _.rep2 = 0;
- _.rep3 = 0;
- _.state = 0;
- function $Create(this$static, numPosStates) {
- for (; this$static.m_NumPosStates < numPosStates; ++this$static.m_NumPosStates) {
- this$static.m_LowCoder[this$static.m_NumPosStates] = $BitTreeDecoder(new BitTreeDecoder(), 3);
- this$static.m_MidCoder[this$static.m_NumPosStates] = $BitTreeDecoder(new BitTreeDecoder(), 3);
- }
- }
-
- function $Decode(this$static, rangeDecoder, posState) {
- var symbol;
- if ($DecodeBit(rangeDecoder, this$static.m_Choice, 0) == 0) {
- return $Decode_0(this$static.m_LowCoder[posState], rangeDecoder);
- }
- symbol = 8;
- if ($DecodeBit(rangeDecoder, this$static.m_Choice, 1) == 0) {
- symbol += $Decode_0(this$static.m_MidCoder[posState], rangeDecoder);
- } else {
- symbol += 8 + $Decode_0(this$static.m_HighCoder, rangeDecoder);
- }
- return symbol;
- }
-
- function $Decoder$LenDecoder(this$static) {
- this$static.m_Choice = initDim(_3S_classLit, 0, -1, 2, 1);
- this$static.m_LowCoder = initDim(_3Lorg_dellroad_lzma_client_SevenZip_Compression_RangeCoder_BitTreeDecoder_2_classLit, 0, 7, 16, 0);
- this$static.m_MidCoder = initDim(_3Lorg_dellroad_lzma_client_SevenZip_Compression_RangeCoder_BitTreeDecoder_2_classLit, 0, 7, 16, 0);
- this$static.m_HighCoder = $BitTreeDecoder(new BitTreeDecoder(), 8);
- return this$static;
- }
-
- function $Init(this$static) {
- var posState;
- InitBitModels(this$static.m_Choice);
- for (posState = 0; posState < this$static.m_NumPosStates; ++posState) {
- InitBitModels(this$static.m_LowCoder[posState].Models);
- InitBitModels(this$static.m_MidCoder[posState].Models);
- }
- InitBitModels(this$static.m_HighCoder.Models);
- }
-
- function getClass_29() {
- return Lorg_dellroad_lzma_client_SevenZip_Compression_LZMA_Decoder$LenDecoder_2_classLit;
- }
-
- function Decoder$LenDecoder() {
- }
-
- _ = Decoder$LenDecoder.prototype = new Object_0();
- _.getClass$ = getClass_29;
- _.typeId$ = 0;
- _.m_NumPosStates = 0;
- function $Create_0(this$static, numPosBits, numPrevBits) {
- var i, numStates;
- if (this$static.m_Coders != null && this$static.m_NumPrevBits == numPrevBits && this$static.m_NumPosBits == numPosBits)
- return;
- this$static.m_NumPosBits = numPosBits;
- this$static.m_PosMask = (1 << numPosBits) - 1;
- this$static.m_NumPrevBits = numPrevBits;
- numStates = 1 << this$static.m_NumPrevBits + this$static.m_NumPosBits;
- this$static.m_Coders = initDim(_3Lorg_dellroad_lzma_client_SevenZip_Compression_LZMA_Decoder$LiteralDecoder$Decoder2_2_classLit, 0, 4, numStates, 0);
- for (i = 0; i < numStates; ++i)
- this$static.m_Coders[i] = $Decoder$LiteralDecoder$Decoder2(new Decoder$LiteralDecoder$Decoder2());
- }
-
- function $GetDecoder(this$static, pos, prevByte) {
- return this$static.m_Coders[((pos & this$static.m_PosMask) << this$static.m_NumPrevBits) + ((prevByte & 255) >>> 8 - this$static.m_NumPrevBits)];
- }
-
- function $Init_0(this$static) {
- var i, numStates;
- numStates = 1 << this$static.m_NumPrevBits + this$static.m_NumPosBits;
- for (i = 0; i < numStates; ++i) {
- InitBitModels(this$static.m_Coders[i].m_Decoders);
- }
- }
-
- function getClass_31() {
- return Lorg_dellroad_lzma_client_SevenZip_Compression_LZMA_Decoder$LiteralDecoder_2_classLit;
- }
-
- function Decoder$LiteralDecoder() {
- }
-
- _ = Decoder$LiteralDecoder.prototype = new Object_0();
- _.getClass$ = getClass_31;
- _.typeId$ = 0;
- _.m_Coders = null;
- _.m_NumPosBits = 0;
- _.m_NumPrevBits = 0;
- _.m_PosMask = 0;
- function $DecodeNormal(this$static, rangeDecoder) {
- var symbol;
- symbol = 1;
- do {
- symbol = symbol << 1 | $DecodeBit(rangeDecoder, this$static.m_Decoders, symbol);
- } while (symbol < 256);
- return symbol << 24 >> 24;
- }
-
- function $DecodeWithMatchByte(this$static, rangeDecoder, matchByte) {
- var bit, matchBit, symbol;
- symbol = 1;
- do {
- matchBit = matchByte >> 7 & 1;
- matchByte <<= 1;
- bit = $DecodeBit(rangeDecoder, this$static.m_Decoders, (1 + matchBit << 8) + symbol);
- symbol = symbol << 1 | bit;
- if (matchBit != bit) {
- while (symbol < 256) {
- symbol = symbol << 1 | $DecodeBit(rangeDecoder, this$static.m_Decoders, symbol);
- }
- break;
- }
- } while (symbol < 256);
- return symbol << 24 >> 24;
- }
-
- function $Decoder$LiteralDecoder$Decoder2(this$static) {
- this$static.m_Decoders = initDim(_3S_classLit, 0, -1, 768, 1);
- return this$static;
- }
-
- function getClass_30() {
- return Lorg_dellroad_lzma_client_SevenZip_Compression_LZMA_Decoder$LiteralDecoder$Decoder2_2_classLit;
- }
-
- function Decoder$LiteralDecoder$Decoder2() {
- }
-
- _ = Decoder$LiteralDecoder$Decoder2.prototype = new Object_0();
- _.getClass$ = getClass_30;
- _.typeId$ = 17;
- function $clinit_59() {
- $clinit_59 = nullMethod;
- var c, j, k, slotFast;
- g_FastPos = initDim(_3B_classLit, 0, -1, 2048, 1);
- c = 2;
- g_FastPos[0] = 0;
- g_FastPos[1] = 1;
- for (slotFast = 2; slotFast < 22; ++slotFast) {
- k = 1 << (slotFast >> 1) - 1;
- for (j = 0; j < k; ++j , ++c)
- g_FastPos[c] = slotFast << 24 >> 24;
- }
- }
-
- function $Backward(this$static, cur) {
- var backCur, backMem, posMem, posPrev;
- this$static._optimumEndIndex = cur;
- posMem = this$static._optimum[cur].PosPrev;
- backMem = this$static._optimum[cur].BackPrev;
- do {
- if (this$static._optimum[cur].Prev1IsChar) {
- $MakeAsChar(this$static._optimum[posMem]);
- this$static._optimum[posMem].PosPrev = posMem - 1;
- if (this$static._optimum[cur].Prev2) {
- this$static._optimum[posMem - 1].Prev1IsChar = false;
- this$static._optimum[posMem - 1].PosPrev = this$static._optimum[cur].PosPrev2;
- this$static._optimum[posMem - 1].BackPrev = this$static._optimum[cur].BackPrev2;
- }
- }
- posPrev = posMem;
- backCur = backMem;
- backMem = this$static._optimum[posPrev].BackPrev;
- posMem = this$static._optimum[posPrev].PosPrev;
- this$static._optimum[posPrev].BackPrev = backCur;
- this$static._optimum[posPrev].PosPrev = cur;
- cur = posPrev;
- } while (cur > 0);
- this$static.backRes = this$static._optimum[0].BackPrev;
- this$static._optimumCurrentIndex = this$static._optimum[0].PosPrev;
- return this$static._optimumCurrentIndex;
- }
-
- function $BaseInit(this$static) {
- var i;
- this$static._state = 0;
- this$static._previousByte = 0;
- for (i = 0; i < 4; ++i) {
- this$static._repDistances[i] = 0;
- }
- }
-
- function $CodeOneBlock(this$static, inSize, outSize, finished) {
- var baseVal, complexState, curByte, distance, footerBits, i, len, lenToPosState, matchByte, pos, posReduced, posSlot, posState, progressPosValuePrev, subCoder;
- inSize[0] = P0_longLit;
- outSize[0] = P0_longLit;
- finished[0] = true;
- if (this$static._inStream) {
- this$static._matchFinder._stream = this$static._inStream;
- $Init_5(this$static._matchFinder);
- this$static._needReleaseMFStream = true;
- this$static._inStream = null;
- }
- if (this$static._finished) {
- return;
- }
- this$static._finished = true;
- progressPosValuePrev = this$static.nowPos64;
- if (eq(this$static.nowPos64, P0_longLit)) {
- if ($GetNumAvailableBytes(this$static._matchFinder) == 0) {
- $Flush(this$static, lowBits_0(this$static.nowPos64));
- return;
- }
- $ReadMatchDistances(this$static);
- posState = lowBits_0(this$static.nowPos64) & this$static._posStateMask;
- $Encode_3(this$static._rangeEncoder, this$static._isMatch, (this$static._state << 4) + posState, 0);
- this$static._state = StateUpdateChar(this$static._state);
- curByte = $GetIndexByte(this$static._matchFinder, -this$static._additionalOffset);
- $Encode_1($GetSubCoder(this$static._literalEncoder, lowBits_0(this$static.nowPos64), this$static._previousByte), this$static._rangeEncoder, curByte);
- this$static._previousByte = curByte;
- --this$static._additionalOffset;
- this$static.nowPos64 = add(this$static.nowPos64, P1_longLit);
- }
- if ($GetNumAvailableBytes(this$static._matchFinder) == 0) {
- $Flush(this$static, lowBits_0(this$static.nowPos64));
- return;
- }
- while (true) {
- len = $GetOptimum(this$static, lowBits_0(this$static.nowPos64));
- pos = this$static.backRes;
- posState = lowBits_0(this$static.nowPos64) & this$static._posStateMask;
- complexState = (this$static._state << 4) + posState;
- if (len == 1 && pos == -1) {
- $Encode_3(this$static._rangeEncoder, this$static._isMatch, complexState, 0);
- curByte = $GetIndexByte(this$static._matchFinder, -this$static._additionalOffset);
- subCoder = $GetSubCoder(this$static._literalEncoder, lowBits_0(this$static.nowPos64), this$static._previousByte);
- if (this$static._state < 7) {
- $Encode_1(subCoder, this$static._rangeEncoder, curByte);
- } else {
- matchByte = $GetIndexByte(this$static._matchFinder, -this$static._repDistances[0] - 1 - this$static._additionalOffset);
- $EncodeMatched(subCoder, this$static._rangeEncoder, matchByte, curByte);
- }
- this$static._previousByte = curByte;
- this$static._state = StateUpdateChar(this$static._state);
- } else {
- $Encode_3(this$static._rangeEncoder, this$static._isMatch, complexState, 1);
- if (pos < 4) {
- $Encode_3(this$static._rangeEncoder, this$static._isRep, this$static._state, 1);
- if (pos == 0) {
- $Encode_3(this$static._rangeEncoder, this$static._isRepG0, this$static._state, 0);
- if (len == 1) {
- $Encode_3(this$static._rangeEncoder, this$static._isRep0Long, complexState, 0);
- } else {
- $Encode_3(this$static._rangeEncoder, this$static._isRep0Long, complexState, 1);
- }
- } else {
- $Encode_3(this$static._rangeEncoder, this$static._isRepG0, this$static._state, 1);
- if (pos == 1) {
- $Encode_3(this$static._rangeEncoder, this$static._isRepG1, this$static._state, 0);
- } else {
- $Encode_3(this$static._rangeEncoder, this$static._isRepG1, this$static._state, 1);
- $Encode_3(this$static._rangeEncoder, this$static._isRepG2, this$static._state, pos - 2);
- }
- }
- if (len == 1) {
- this$static._state = this$static._state < 7?9:11;
- } else {
- $Encode_0(this$static._repMatchLenEncoder, this$static._rangeEncoder, len - 2, posState);
- this$static._state = this$static._state < 7?8:11;
- }
- distance = this$static._repDistances[pos];
- if (pos != 0) {
- for (i = pos; i >= 1; --i) {
- this$static._repDistances[i] = this$static._repDistances[i - 1];
- }
- this$static._repDistances[0] = distance;
- }
- } else {
- $Encode_3(this$static._rangeEncoder, this$static._isRep, this$static._state, 0);
- this$static._state = this$static._state < 7?7:10;
- $Encode_0(this$static._lenEncoder, this$static._rangeEncoder, len - 2, posState);
- pos -= 4;
- posSlot = GetPosSlot(pos);
- lenToPosState = GetLenToPosState(len);
- $Encode_2(this$static._posSlotEncoder[lenToPosState], this$static._rangeEncoder, posSlot);
- if (posSlot >= 4) {
- footerBits = (posSlot >> 1) - 1;
- baseVal = (2 | posSlot & 1) << footerBits;
- posReduced = pos - baseVal;
- if (posSlot < 14) {
- ReverseEncode(this$static._posEncoders, baseVal - posSlot - 1, this$static._rangeEncoder, footerBits, posReduced);
- } else {
- $EncodeDirectBits(this$static._rangeEncoder, posReduced >> 4, footerBits - 4);
- $ReverseEncode(this$static._posAlignEncoder, this$static._rangeEncoder, posReduced & 15);
- ++this$static._alignPriceCount;
- }
- }
- distance = pos;
- for (i = 3; i >= 1; --i) {
- this$static._repDistances[i] = this$static._repDistances[i - 1];
- }
- this$static._repDistances[0] = distance;
- ++this$static._matchPriceCount;
- }
- this$static._previousByte = $GetIndexByte(this$static._matchFinder, len - 1 - this$static._additionalOffset);
- }
- this$static._additionalOffset -= len;
- this$static.nowPos64 = add(this$static.nowPos64, fromInt(len));
- if (this$static._additionalOffset == 0) {
- if (this$static._matchPriceCount >= 128) {
- $FillDistancesPrices(this$static);
- }
- if (this$static._alignPriceCount >= 16) {
- $FillAlignPrices(this$static);
- }
- inSize[0] = this$static.nowPos64;
- outSize[0] = $GetProcessedSizeAdd(this$static._rangeEncoder);
- if ($GetNumAvailableBytes(this$static._matchFinder) == 0) {
- $Flush(this$static, lowBits_0(this$static.nowPos64));
- return;
- }
- if (compare(sub(this$static.nowPos64, progressPosValuePrev), P1000_longLit) >= 0) {
- this$static._finished = false;
- finished[0] = false;
- return;
- }
- }
- }
- }
-
- function $Create_2(this$static) {
- var bt, numHashBytes;
- if (!this$static._matchFinder) {
- bt = ($clinit_60() , new BinTree());
- numHashBytes = 4;
- if (this$static._matchFinderType == 0) {
- numHashBytes = 2;
- }
- $SetType(bt, numHashBytes);
- this$static._matchFinder = bt;
- }
- $Create_1(this$static._literalEncoder, this$static._numLiteralPosStateBits, this$static._numLiteralContextBits);
- if (this$static._dictionarySize == this$static._dictionarySizePrev && this$static._numFastBytesPrev == this$static._numFastBytes) {
- return;
- }
- $Create_3(this$static._matchFinder, this$static._dictionarySize, 4096, this$static._numFastBytes, 274);
- this$static._dictionarySizePrev = this$static._dictionarySize;
- this$static._numFastBytesPrev = this$static._numFastBytes;
- }
-
- function $Encoder(this$static) {
- var i;
- $clinit_59();
- this$static._repDistances = initDim(_3I_classLit, 0, -1, 4, 1);
- this$static._optimum = initDim(_3Lorg_dellroad_lzma_client_SevenZip_Compression_LZMA_Encoder$Optimal_2_classLit, 0, 6, 4096, 0);
- this$static._rangeEncoder = ($clinit_66() , new Encoder_0());
- this$static._isMatch = initDim(_3S_classLit, 0, -1, 192, 1);
- this$static._isRep = initDim(_3S_classLit, 0, -1, 12, 1);
- this$static._isRepG0 = initDim(_3S_classLit, 0, -1, 12, 1);
- this$static._isRepG1 = initDim(_3S_classLit, 0, -1, 12, 1);
- this$static._isRepG2 = initDim(_3S_classLit, 0, -1, 12, 1);
- this$static._isRep0Long = initDim(_3S_classLit, 0, -1, 192, 1);
- this$static._posSlotEncoder = initDim(_3Lorg_dellroad_lzma_client_SevenZip_Compression_RangeCoder_BitTreeEncoder_2_classLit, 0, 8, 4, 0);
- this$static._posEncoders = initDim(_3S_classLit, 0, -1, 114, 1);
- this$static._posAlignEncoder = $BitTreeEncoder(new BitTreeEncoder(), 4);
- this$static._lenEncoder = $Encoder$LenPriceTableEncoder(new Encoder$LenPriceTableEncoder());
- this$static._repMatchLenEncoder = $Encoder$LenPriceTableEncoder(new Encoder$LenPriceTableEncoder());
- this$static._literalEncoder = new Encoder$LiteralEncoder();
- this$static._matchDistances = initDim(_3I_classLit, 0, -1, 548, 1);
- this$static._posSlotPrices = initDim(_3I_classLit, 0, -1, 256, 1);
- this$static._distancesPrices = initDim(_3I_classLit, 0, -1, 512, 1);
- this$static._alignPrices = initDim(_3I_classLit, 0, -1, 16, 1);
- this$static.reps = initDim(_3I_classLit, 0, -1, 4, 1);
- this$static.repLens = initDim(_3I_classLit, 0, -1, 4, 1);
- this$static.processedInSize = initDim(_3J_classLit, 0, -1, 1, 3);
- this$static.processedOutSize = initDim(_3J_classLit, 0, -1, 1, 3);
- this$static.finished = initDim(_3Z_classLit, 0, -1, 1, 2);
- this$static.properties = initDim(_3B_classLit, 0, -1, 5, 1);
- this$static.tempPrices = initDim(_3I_classLit, 0, -1, 128, 1);
- for (i = 0; i < 4096; ++i) {
- this$static._optimum[i] = new Encoder$Optimal();
- }
- for (i = 0; i < 4; ++i) {
- this$static._posSlotEncoder[i] = $BitTreeEncoder(new BitTreeEncoder(), 6);
- }
- return this$static;
- }
-
- function $FillAlignPrices(this$static) {
- var i;
- for (i = 0; i < 16; ++i) {
- this$static._alignPrices[i] = $ReverseGetPrice(this$static._posAlignEncoder, i);
- }
- this$static._alignPriceCount = 0;
- }
-
- function $FillDistancesPrices(this$static) {
- var baseVal, encoder, footerBits, i, lenToPosState, posSlot, st, st2;
- for (i = 4; i < 128; ++i) {
- posSlot = GetPosSlot(i);
- footerBits = (posSlot >> 1) - 1;
- baseVal = (2 | posSlot & 1) << footerBits;
- this$static.tempPrices[i] = ReverseGetPrice(this$static._posEncoders, baseVal - posSlot - 1, footerBits, i - baseVal);
- }
- for (lenToPosState = 0; lenToPosState < 4; ++lenToPosState) {
- encoder = this$static._posSlotEncoder[lenToPosState];
- st = lenToPosState << 6;
- for (posSlot = 0; posSlot < this$static._distTableSize; ++posSlot) {
- this$static._posSlotPrices[st + posSlot] = $GetPrice_1(encoder, posSlot);
- }
- for (posSlot = 14; posSlot < this$static._distTableSize; ++posSlot) {
- this$static._posSlotPrices[st + posSlot] += (posSlot >> 1) - 1 - 4 << 6;
- }
- st2 = lenToPosState * 128;
- for (i = 0; i < 4; ++i) {
- this$static._distancesPrices[st2 + i] = this$static._posSlotPrices[st + i];
- }
- for (; i < 128; ++i) {
- this$static._distancesPrices[st2 + i] = this$static._posSlotPrices[st + GetPosSlot(i)] + this$static.tempPrices[i];
- }
- }
- this$static._matchPriceCount = 0;
- }
-
- function $Flush(this$static, nowPos) {
- $ReleaseMFStream(this$static);
- $WriteEndMarker(this$static, nowPos & this$static._posStateMask);
- $FlushData(this$static._rangeEncoder);
- }
-
- function $GetOptimum(this$static, position) {
- var cur, curAnd1Price, curAndLenCharPrice, curAndLenPrice, curBack, curPrice, currentByte, distance, i, len, lenEnd, lenMain, lenRes, lenTest, lenTest2, lenTestTemp, matchByte, matchPrice, newLen, nextIsChar, nextMatchPrice, nextOptimum, nextRepMatchPrice, normalMatchPrice, numAvailableBytes, numAvailableBytesFull, numDistancePairs, offs, offset, opt, optimum, pos, posPrev, posState, posStateNext, price_4, repIndex, repLen, repMatchPrice, repMaxIndex, shortRepPrice, startLen, state, state2, t, price, price_0, price_1, price_2, price_3;
- if (this$static._optimumEndIndex != this$static._optimumCurrentIndex) {
- lenRes = this$static._optimum[this$static._optimumCurrentIndex].PosPrev - this$static._optimumCurrentIndex;
- this$static.backRes = this$static._optimum[this$static._optimumCurrentIndex].BackPrev;
- this$static._optimumCurrentIndex = this$static._optimum[this$static._optimumCurrentIndex].PosPrev;
- return lenRes;
- }
- this$static._optimumCurrentIndex = this$static._optimumEndIndex = 0;
- if (this$static._longestMatchWasFound) {
- lenMain = this$static._longestMatchLength;
- this$static._longestMatchWasFound = false;
- } else {
- lenMain = $ReadMatchDistances(this$static);
- }
- numDistancePairs = this$static._numDistancePairs;
- numAvailableBytes = $GetNumAvailableBytes(this$static._matchFinder) + 1;
- if (numAvailableBytes < 2) {
- this$static.backRes = -1;
- return 1;
- }
- if (numAvailableBytes > 273) {
- numAvailableBytes = 273;
- }
- repMaxIndex = 0;
- for (i = 0; i < 4; ++i) {
- this$static.reps[i] = this$static._repDistances[i];
- this$static.repLens[i] = $GetMatchLen(this$static._matchFinder, -1, this$static.reps[i], 273);
- if (this$static.repLens[i] > this$static.repLens[repMaxIndex]) {
- repMaxIndex = i;
- }
- }
- if (this$static.repLens[repMaxIndex] >= this$static._numFastBytes) {
- this$static.backRes = repMaxIndex;
- lenRes = this$static.repLens[repMaxIndex];
- $MovePos(this$static, lenRes - 1);
- return lenRes;
- }
- if (lenMain >= this$static._numFastBytes) {
- this$static.backRes = this$static._matchDistances[numDistancePairs - 1] + 4;
- $MovePos(this$static, lenMain - 1);
- return lenMain;
- }
- currentByte = $GetIndexByte(this$static._matchFinder, -1);
- matchByte = $GetIndexByte(this$static._matchFinder, -this$static._repDistances[0] - 1 - 1);
- if (lenMain < 2 && currentByte != matchByte && this$static.repLens[repMaxIndex] < 2) {
- this$static.backRes = -1;
- return 1;
- }
- this$static._optimum[0].State = this$static._state;
- posState = position & this$static._posStateMask;
- this$static._optimum[1].Price = ($clinit_66() , ProbPrices[this$static._isMatch[(this$static._state << 4) + posState] >>> 2]) + $GetPrice_0($GetSubCoder(this$static._literalEncoder, position, this$static._previousByte), this$static._state >= 7, matchByte, currentByte);
- $MakeAsChar(this$static._optimum[1]);
- matchPrice = ProbPrices[2048 - this$static._isMatch[(this$static._state << 4) + posState] >>> 2];
- repMatchPrice = matchPrice + ProbPrices[2048 - this$static._isRep[this$static._state] >>> 2];
- if (matchByte == currentByte) {
- shortRepPrice = repMatchPrice + $GetRepLen1Price(this$static, this$static._state, posState);
- if (shortRepPrice < this$static._optimum[1].Price) {
- this$static._optimum[1].Price = shortRepPrice;
- $MakeAsShortRep(this$static._optimum[1]);
- }
- }
- lenEnd = lenMain >= this$static.repLens[repMaxIndex]?lenMain:this$static.repLens[repMaxIndex];
- if (lenEnd < 2) {
- this$static.backRes = this$static._optimum[1].BackPrev;
- return 1;
- }
- this$static._optimum[1].PosPrev = 0;
- this$static._optimum[0].Backs0 = this$static.reps[0];
- this$static._optimum[0].Backs1 = this$static.reps[1];
- this$static._optimum[0].Backs2 = this$static.reps[2];
- this$static._optimum[0].Backs3 = this$static.reps[3];
- len = lenEnd;
- do {
- this$static._optimum[len--].Price = 268435455;
- } while (len >= 2);
- for (i = 0; i < 4; ++i) {
- repLen = this$static.repLens[i];
- if (repLen < 2) {
- continue;
- }
- price_4 = repMatchPrice + $GetPureRepPrice(this$static, i, this$static._state, posState);
- do {
- curAndLenPrice = price_4 + $GetPrice(this$static._repMatchLenEncoder, repLen - 2, posState);
- optimum = this$static._optimum[repLen];
- if (curAndLenPrice < optimum.Price) {
- optimum.Price = curAndLenPrice;
- optimum.PosPrev = 0;
- optimum.BackPrev = i;
- optimum.Prev1IsChar = false;
- }
- } while (--repLen >= 2);
- }
- normalMatchPrice = matchPrice + ProbPrices[this$static._isRep[this$static._state] >>> 2];
- len = this$static.repLens[0] >= 2?this$static.repLens[0] + 1:2;
- if (len <= lenMain) {
- offs = 0;
- while (len > this$static._matchDistances[offs]) {
- offs += 2;
- }
- for (;; ++len) {
- distance = this$static._matchDistances[offs + 1];
- curAndLenPrice = normalMatchPrice + $GetPosLenPrice(this$static, distance, len, posState);
- optimum = this$static._optimum[len];
- if (curAndLenPrice < optimum.Price) {
- optimum.Price = curAndLenPrice;
- optimum.PosPrev = 0;
- optimum.BackPrev = distance + 4;
- optimum.Prev1IsChar = false;
- }
- if (len == this$static._matchDistances[offs]) {
- offs += 2;
- if (offs == numDistancePairs) {
- break;
- }
- }
- }
- }
- cur = 0;
- while (true) {
- ++cur;
- if (cur == lenEnd) {
- return $Backward(this$static, cur);
- }
- newLen = $ReadMatchDistances(this$static);
- numDistancePairs = this$static._numDistancePairs;
- if (newLen >= this$static._numFastBytes) {
- this$static._longestMatchLength = newLen;
- this$static._longestMatchWasFound = true;
- return $Backward(this$static, cur);
- }
- ++position;
- posPrev = this$static._optimum[cur].PosPrev;
- if (this$static._optimum[cur].Prev1IsChar) {
- --posPrev;
- if (this$static._optimum[cur].Prev2) {
- state = this$static._optimum[this$static._optimum[cur].PosPrev2].State;
- if (this$static._optimum[cur].BackPrev2 < 4) {
- state = (state < 7) ? 8 : 11;
- } else {
- state = (state < 7) ? 7 : 10;
- }
- } else {
- state = this$static._optimum[posPrev].State;
- }
- state = StateUpdateChar(state);
- } else {
- state = this$static._optimum[posPrev].State;
- }
- if (posPrev == cur - 1) {
- if (this$static._optimum[cur].BackPrev == 0) {
- state = state < 7?9:11;
- } else {
- state = StateUpdateChar(state);
- }
- } else {
- if (this$static._optimum[cur].Prev1IsChar && this$static._optimum[cur].Prev2) {
- posPrev = this$static._optimum[cur].PosPrev2;
- pos = this$static._optimum[cur].BackPrev2;
- state = state < 7?8:11;
- } else {
- pos = this$static._optimum[cur].BackPrev;
- if (pos < 4) {
- state = state < 7?8:11;
- } else {
- state = state < 7?7:10;
- }
- }
- opt = this$static._optimum[posPrev];
- if (pos < 4) {
- if (pos == 0) {
- this$static.reps[0] = opt.Backs0;
- this$static.reps[1] = opt.Backs1;
- this$static.reps[2] = opt.Backs2;
- this$static.reps[3] = opt.Backs3;
- } else if (pos == 1) {
- this$static.reps[0] = opt.Backs1;
- this$static.reps[1] = opt.Backs0;
- this$static.reps[2] = opt.Backs2;
- this$static.reps[3] = opt.Backs3;
- } else if (pos == 2) {
- this$static.reps[0] = opt.Backs2;
- this$static.reps[1] = opt.Backs0;
- this$static.reps[2] = opt.Backs1;
- this$static.reps[3] = opt.Backs3;
- } else {
- this$static.reps[0] = opt.Backs3;
- this$static.reps[1] = opt.Backs0;
- this$static.reps[2] = opt.Backs1;
- this$static.reps[3] = opt.Backs2;
- }
- } else {
- this$static.reps[0] = pos - 4;
- this$static.reps[1] = opt.Backs0;
- this$static.reps[2] = opt.Backs1;
- this$static.reps[3] = opt.Backs2;
- }
- }
- this$static._optimum[cur].State = state;
- this$static._optimum[cur].Backs0 = this$static.reps[0];
- this$static._optimum[cur].Backs1 = this$static.reps[1];
- this$static._optimum[cur].Backs2 = this$static.reps[2];
- this$static._optimum[cur].Backs3 = this$static.reps[3];
- curPrice = this$static._optimum[cur].Price;
- currentByte = $GetIndexByte(this$static._matchFinder, -1);
- matchByte = $GetIndexByte(this$static._matchFinder, -this$static.reps[0] - 1 - 1);
- posState = position & this$static._posStateMask;
- curAnd1Price = curPrice + ProbPrices[this$static._isMatch[(state << 4) + posState] >>> 2] + $GetPrice_0($GetSubCoder(this$static._literalEncoder, position, $GetIndexByte(this$static._matchFinder, -2)), state >= 7, matchByte, currentByte);
- nextOptimum = this$static._optimum[cur + 1];
- nextIsChar = false;
- if (curAnd1Price < nextOptimum.Price) {
- nextOptimum.Price = curAnd1Price;
- nextOptimum.PosPrev = cur;
- nextOptimum.BackPrev = -1;
- nextOptimum.Prev1IsChar = false;
- nextIsChar = true;
- }
- matchPrice = curPrice + ProbPrices[2048 - this$static._isMatch[(state << 4) + posState] >>> 2];
- repMatchPrice = matchPrice + ProbPrices[2048 - this$static._isRep[state] >>> 2];
- if (matchByte == currentByte && !(nextOptimum.PosPrev < cur && nextOptimum.BackPrev == 0)) {
- shortRepPrice = repMatchPrice + (ProbPrices[this$static._isRepG0[state] >>> 2] + ProbPrices[this$static._isRep0Long[(state << 4) + posState] >>> 2]);
- if (shortRepPrice <= nextOptimum.Price) {
- nextOptimum.Price = shortRepPrice;
- nextOptimum.PosPrev = cur;
- nextOptimum.BackPrev = 0;
- nextOptimum.Prev1IsChar = false;
- nextIsChar = true;
- }
- }
- numAvailableBytesFull = $GetNumAvailableBytes(this$static._matchFinder) + 1;
- numAvailableBytesFull = 4095 - cur < numAvailableBytesFull?4095 - cur:numAvailableBytesFull;
- numAvailableBytes = numAvailableBytesFull;
- if (numAvailableBytes < 2) {
- continue;
- }
- if (numAvailableBytes > this$static._numFastBytes) {
- numAvailableBytes = this$static._numFastBytes;
- }
- if (!nextIsChar && matchByte != currentByte) {
- t = min(numAvailableBytesFull - 1, this$static._numFastBytes);
- lenTest2 = $GetMatchLen(this$static._matchFinder, 0, this$static.reps[0], t);
- if (lenTest2 >= 2) {
- state2 = StateUpdateChar(state);
- posStateNext = position + 1 & this$static._posStateMask;
- nextRepMatchPrice = curAnd1Price + ProbPrices[2048 - this$static._isMatch[(state2 << 4) + posStateNext] >>> 2] + ProbPrices[2048 - this$static._isRep[state2] >>> 2];
- offset = cur + 1 + lenTest2;
- while (lenEnd < offset) {
- this$static._optimum[++lenEnd].Price = 268435455;
- }
- curAndLenPrice = nextRepMatchPrice + (price = $GetPrice(this$static._repMatchLenEncoder, lenTest2 - 2, posStateNext) , price + $GetPureRepPrice(this$static, 0, state2, posStateNext));
- optimum = this$static._optimum[offset];
- if (curAndLenPrice < optimum.Price) {
- optimum.Price = curAndLenPrice;
- optimum.PosPrev = cur + 1;
- optimum.BackPrev = 0;
- optimum.Prev1IsChar = true;
- optimum.Prev2 = false;
- }
- }
- }
- startLen = 2;
- for (repIndex = 0; repIndex < 4; ++repIndex) {
- lenTest = $GetMatchLen(this$static._matchFinder, -1, this$static.reps[repIndex], numAvailableBytes);
- if (lenTest < 2) {
- continue;
- }
- lenTestTemp = lenTest;
- do {
- while (lenEnd < cur + lenTest) {
- this$static._optimum[++lenEnd].Price = 268435455;
- }
- curAndLenPrice = repMatchPrice + (price_0 = $GetPrice(this$static._repMatchLenEncoder, lenTest - 2, posState) , price_0 + $GetPureRepPrice(this$static, repIndex, state, posState));
- optimum = this$static._optimum[cur + lenTest];
- if (curAndLenPrice < optimum.Price) {
- optimum.Price = curAndLenPrice;
- optimum.PosPrev = cur;
- optimum.BackPrev = repIndex;
- optimum.Prev1IsChar = false;
- }
- } while (--lenTest >= 2);
- lenTest = lenTestTemp;
- if (repIndex == 0) {
- startLen = lenTest + 1;
- }
- if (lenTest < numAvailableBytesFull) {
- t = min(numAvailableBytesFull - 1 - lenTest, this$static._numFastBytes);
- lenTest2 = $GetMatchLen(this$static._matchFinder, lenTest, this$static.reps[repIndex], t);
- if (lenTest2 >= 2) {
- state2 = state < 7?8:11;
- posStateNext = position + lenTest & this$static._posStateMask;
- curAndLenCharPrice = repMatchPrice + (price_1 = $GetPrice(this$static._repMatchLenEncoder, lenTest - 2, posState) , price_1 + $GetPureRepPrice(this$static, repIndex, state, posState)) + ProbPrices[this$static._isMatch[(state2 << 4) + posStateNext] >>> 2] + $GetPrice_0($GetSubCoder(this$static._literalEncoder, position + lenTest, $GetIndexByte(this$static._matchFinder, lenTest - 1 - 1)), true, $GetIndexByte(this$static._matchFinder, lenTest - 1 - (this$static.reps[repIndex] + 1)), $GetIndexByte(this$static._matchFinder, lenTest - 1));
- state2 = StateUpdateChar(state2);
- posStateNext = position + lenTest + 1 & this$static._posStateMask;
- nextMatchPrice = curAndLenCharPrice + ProbPrices[2048 - this$static._isMatch[(state2 << 4) + posStateNext] >>> 2];
- nextRepMatchPrice = nextMatchPrice + ProbPrices[2048 - this$static._isRep[state2] >>> 2];
- offset = lenTest + 1 + lenTest2;
- while (lenEnd < cur + offset) {
- this$static._optimum[++lenEnd].Price = 268435455;
- }
- curAndLenPrice = nextRepMatchPrice + (price_2 = $GetPrice(this$static._repMatchLenEncoder, lenTest2 - 2, posStateNext) , price_2 + $GetPureRepPrice(this$static, 0, state2, posStateNext));
- optimum = this$static._optimum[cur + offset];
- if (curAndLenPrice < optimum.Price) {
- optimum.Price = curAndLenPrice;
- optimum.PosPrev = cur + lenTest + 1;
- optimum.BackPrev = 0;
- optimum.Prev1IsChar = true;
- optimum.Prev2 = true;
- optimum.PosPrev2 = cur;
- optimum.BackPrev2 = repIndex;
- }
- }
- }
- }
- if (newLen > numAvailableBytes) {
- newLen = numAvailableBytes;
- for (numDistancePairs = 0; newLen > this$static._matchDistances[numDistancePairs]; numDistancePairs += 2) {
- }
- this$static._matchDistances[numDistancePairs] = newLen;
- numDistancePairs += 2;
- }
- if (newLen >= startLen) {
- normalMatchPrice = matchPrice + ProbPrices[this$static._isRep[state] >>> 2];
- while (lenEnd < cur + newLen) {
- this$static._optimum[++lenEnd].Price = 268435455;
- }
- offs = 0;
- while (startLen > this$static._matchDistances[offs]) {
- offs += 2;
- }
- for (lenTest = startLen;; ++lenTest) {
- curBack = this$static._matchDistances[offs + 1];
- curAndLenPrice = normalMatchPrice + $GetPosLenPrice(this$static, curBack, lenTest, posState);
- optimum = this$static._optimum[cur + lenTest];
- if (curAndLenPrice < optimum.Price) {
- optimum.Price = curAndLenPrice;
- optimum.PosPrev = cur;
- optimum.BackPrev = curBack + 4;
- optimum.Prev1IsChar = false;
- }
- if (lenTest == this$static._matchDistances[offs]) {
- if (lenTest < numAvailableBytesFull) {
- t = min(numAvailableBytesFull - 1 - lenTest, this$static._numFastBytes);
- lenTest2 = $GetMatchLen(this$static._matchFinder, lenTest, curBack, t);
- if (lenTest2 >= 2) {
- state2 = state < 7?7:10;
- posStateNext = position + lenTest & this$static._posStateMask;
- curAndLenCharPrice = curAndLenPrice + ProbPrices[this$static._isMatch[(state2 << 4) + posStateNext] >>> 2] + $GetPrice_0($GetSubCoder(this$static._literalEncoder, position + lenTest, $GetIndexByte(this$static._matchFinder, lenTest - 1 - 1)), true, $GetIndexByte(this$static._matchFinder, lenTest - (curBack + 1) - 1), $GetIndexByte(this$static._matchFinder, lenTest - 1));
- state2 = StateUpdateChar(state2);
- posStateNext = position + lenTest + 1 & this$static._posStateMask;
- nextMatchPrice = curAndLenCharPrice + ProbPrices[2048 - this$static._isMatch[(state2 << 4) + posStateNext] >>> 2];
- nextRepMatchPrice = nextMatchPrice + ProbPrices[2048 - this$static._isRep[state2] >>> 2];
- offset = lenTest + 1 + lenTest2;
- while (lenEnd < cur + offset) {
- this$static._optimum[++lenEnd].Price = 268435455;
- }
- curAndLenPrice = nextRepMatchPrice + (price_3 = $GetPrice(this$static._repMatchLenEncoder, lenTest2 - 2, posStateNext) , price_3 + $GetPureRepPrice(this$static, 0, state2, posStateNext));
- optimum = this$static._optimum[cur + offset];
- if (curAndLenPrice < optimum.Price) {
- optimum.Price = curAndLenPrice;
- optimum.PosPrev = cur + lenTest + 1;
- optimum.BackPrev = 0;
- optimum.Prev1IsChar = true;
- optimum.Prev2 = true;
- optimum.PosPrev2 = cur;
- optimum.BackPrev2 = curBack + 4;
- }
- }
- }
- offs += 2;
- if (offs == numDistancePairs)
- break;
- }
- }
- }
- }
- }
-
- function $GetPosLenPrice(this$static, pos, len, posState) {
- var lenToPosState, price;
- lenToPosState = GetLenToPosState(len);
- if (pos < 128) {
- price = this$static._distancesPrices[lenToPosState * 128 + pos];
- } else {
- price = this$static._posSlotPrices[(lenToPosState << 6) + GetPosSlot2(pos)] + this$static._alignPrices[pos & 15];
- }
- return price + $GetPrice(this$static._lenEncoder, len - 2, posState);
- }
-
- function $GetPureRepPrice(this$static, repIndex, state, posState) {
- var price;
- if (repIndex == 0) {
- price = ($clinit_66() , ProbPrices[this$static._isRepG0[state] >>> 2]);
- price += ProbPrices[2048 - this$static._isRep0Long[(state << 4) + posState] >>> 2];
- } else {
- price = ($clinit_66() , ProbPrices[2048 - this$static._isRepG0[state] >>> 2]);
- if (repIndex == 1) {
- price += ProbPrices[this$static._isRepG1[state] >>> 2];
- } else {
- price += ProbPrices[2048 - this$static._isRepG1[state] >>> 2];
- price += GetPrice(this$static._isRepG2[state], repIndex - 2);
- }
- }
- return price;
- }
-
- function $GetRepLen1Price(this$static, state, posState) {
- return ($clinit_66() , ProbPrices[this$static._isRepG0[state] >>> 2]) + ProbPrices[this$static._isRep0Long[(state << 4) + posState] >>> 2];
- }
-
- function $Init_4(this$static) {
- var i;
- $BaseInit(this$static);
- $Init_9(this$static._rangeEncoder);
- InitBitModels_0(this$static._isMatch);
- InitBitModels_0(this$static._isRep0Long);
- InitBitModels_0(this$static._isRep);
- InitBitModels_0(this$static._isRepG0);
- InitBitModels_0(this$static._isRepG1);
- InitBitModels_0(this$static._isRepG2);
- InitBitModels_0(this$static._posEncoders);
- $Init_3(this$static._literalEncoder);
- for (i = 0; i < 4; ++i) {
- InitBitModels(this$static._posSlotEncoder[i].Models);
- }
- $Init_2(this$static._lenEncoder, 1 << this$static._posStateBits);
- $Init_2(this$static._repMatchLenEncoder, 1 << this$static._posStateBits);
- InitBitModels(this$static._posAlignEncoder.Models);
- this$static._longestMatchWasFound = false;
- this$static._optimumEndIndex = 0;
- this$static._optimumCurrentIndex = 0;
- this$static._additionalOffset = 0;
- }
-
- function $MovePos(this$static, num) {
- if (num > 0) {
- $Skip(this$static._matchFinder, num);
- this$static._additionalOffset += num;
- }
- }
-
- function $ReadMatchDistances(this$static) {
- var lenRes;
- lenRes = 0;
- this$static._numDistancePairs = $GetMatches(this$static._matchFinder, this$static._matchDistances);
- if (this$static._numDistancePairs > 0) {
- lenRes = this$static._matchDistances[this$static._numDistancePairs - 2];
- if (lenRes == this$static._numFastBytes)
- lenRes += $GetMatchLen(this$static._matchFinder, lenRes - 1, this$static._matchDistances[this$static._numDistancePairs - 1], 273 - lenRes);
- }
- ++this$static._additionalOffset;
- return lenRes;
- }
-
- function $ReleaseMFStream(this$static) {
- if (!!this$static._matchFinder && this$static._needReleaseMFStream) {
- this$static._matchFinder._stream = null;
- this$static._needReleaseMFStream = false;
- }
- }
-
- function $ReleaseStreams(this$static) {
- $ReleaseMFStream(this$static);
- this$static._rangeEncoder.Stream = null;
- }
-
- function $SetDictionarySize_0(this$static, dictionarySize) {
- var dicLogSize;
- if (dictionarySize < 1 || dictionarySize > 536870912) {
- return false;
- }
- this$static._dictionarySize = dictionarySize;
- for (dicLogSize = 0; dictionarySize > 1 << dicLogSize; ++dicLogSize) {
- }
- this$static._distTableSize = dicLogSize * 2;
- return true;
- }
-
- function $SetLcLpPb_0(this$static, lc, lp, pb) {
- if (lp < 0 || lp > 4 || lc < 0 || lc > 8 || pb < 0 || pb > 4) {
- return false;
- }
- this$static._numLiteralPosStateBits = lp;
- this$static._numLiteralContextBits = lc;
- this$static._posStateBits = pb;
- this$static._posStateMask = (1 << this$static._posStateBits) - 1;
- return true;
- }
-
- function $SetMatchFinder(this$static, matchFinderIndex) {
- var matchFinderIndexPrev;
- if (matchFinderIndex < 0 || matchFinderIndex > 2) {
- return false;
- }
- matchFinderIndexPrev = this$static._matchFinderType;
- this$static._matchFinderType = matchFinderIndex;
- if (!!this$static._matchFinder && matchFinderIndexPrev != this$static._matchFinderType) {
- this$static._dictionarySizePrev = -1;
- this$static._matchFinder = null;
- }
- return true;
- }
-
- function $SetNumFastBytes(this$static, numFastBytes) {
- if (numFastBytes < 5 || numFastBytes > 273) {
- return false;
- }
- this$static._numFastBytes = numFastBytes;
- return true;
- }
-
- function $WriteCoderProperties(this$static, outStream) {
- var i;
- this$static.properties[0] = (this$static._posStateBits * 5 + this$static._numLiteralPosStateBits) * 9 + this$static._numLiteralContextBits << 24 >> 24;
- for (i = 0; i < 4; ++i) {
- this$static.properties[1 + i] = this$static._dictionarySize >> 8 * i << 24 >> 24;
- }
- $write_0(outStream, this$static.properties, 0, 5);
- }
-
- function $WriteEndMarker(this$static, posState) {
- var lenToPosState;
- if (!this$static._writeEndMark) {
- return;
- }
- $Encode_3(this$static._rangeEncoder, this$static._isMatch, (this$static._state << 4) + posState, 1);
- $Encode_3(this$static._rangeEncoder, this$static._isRep, this$static._state, 0);
- this$static._state = this$static._state < 7?7:10;
- $Encode_0(this$static._lenEncoder, this$static._rangeEncoder, 0, posState);
- lenToPosState = GetLenToPosState(2);
- $Encode_2(this$static._posSlotEncoder[lenToPosState], this$static._rangeEncoder, 63);
- $EncodeDirectBits(this$static._rangeEncoder, 67108863, 26);
- $ReverseEncode(this$static._posAlignEncoder, this$static._rangeEncoder, 15);
- }
-
- function GetPosSlot(pos) {
- if (pos < 2048) {
- return g_FastPos[pos];
- }
- if (pos < 2097152) {
- return g_FastPos[pos >> 10] + 20;
- }
- return g_FastPos[pos >> 20] + 40;
- }
-
- function GetPosSlot2(pos) {
- if (pos < 131072) {
- return g_FastPos[pos >> 6] + 12;
- }
- if (pos < 134217728) {
- return g_FastPos[pos >> 16] + 32;
- }
- return g_FastPos[pos >> 26] + 52;
- }
-
- function getClass_38() {
- return Lorg_dellroad_lzma_client_SevenZip_Compression_LZMA_Encoder_2_classLit;
- }
-
- function Encoder() {
- }
-
- _ = Encoder.prototype = new Object_0();
- _.getClass$ = getClass_38;
- _.typeId$ = 0;
- _._additionalOffset = 0;
- _._alignPriceCount = 0;
- _._dictionarySize = 4194304;
- _._dictionarySizePrev = -1;
- _._distTableSize = 44;
- _._finished = false;
- _._inStream = null;
- _._longestMatchLength = 0;
- _._longestMatchWasFound = false;
- _._matchFinder = null;
- _._matchFinderType = 1;
- _._matchPriceCount = 0;
- _._needReleaseMFStream = false;
- _._numDistancePairs = 0;
- _._numFastBytes = 32;
- _._numFastBytesPrev = -1;
- _._numLiteralContextBits = 3;
- _._numLiteralPosStateBits = 0;
- _._optimumCurrentIndex = 0;
- _._optimumEndIndex = 0;
- _._posStateBits = 2;
- _._posStateMask = 3;
- _._previousByte = 0;
- _._state = 0;
- _._writeEndMark = false;
- _.backRes = 0;
- _.nowPos64 = P0_longLit;
- var g_FastPos;
- function $Encode(this$static, rangeEncoder, symbol, posState) {
- if (symbol < 8) {
- $Encode_3(rangeEncoder, this$static._choice, 0, 0);
- $Encode_2(this$static._lowCoder[posState], rangeEncoder, symbol);
- } else {
- symbol -= 8;
- $Encode_3(rangeEncoder, this$static._choice, 0, 1);
- if (symbol < 8) {
- $Encode_3(rangeEncoder, this$static._choice, 1, 0);
- $Encode_2(this$static._midCoder[posState], rangeEncoder, symbol);
- } else {
- $Encode_3(rangeEncoder, this$static._choice, 1, 1);
- $Encode_2(this$static._highCoder, rangeEncoder, symbol - 8);
- }
- }
- }
-
- function $Encoder$LenEncoder(this$static) {
- var posState;
- this$static._choice = initDim(_3S_classLit, 0, -1, 2, 1);
- this$static._lowCoder = initDim(_3Lorg_dellroad_lzma_client_SevenZip_Compression_RangeCoder_BitTreeEncoder_2_classLit, 0, 8, 16, 0);
- this$static._midCoder = initDim(_3Lorg_dellroad_lzma_client_SevenZip_Compression_RangeCoder_BitTreeEncoder_2_classLit, 0, 8, 16, 0);
- this$static._highCoder = $BitTreeEncoder(new BitTreeEncoder(), 8);
- for (posState = 0; posState < 16; ++posState) {
- this$static._lowCoder[posState] = $BitTreeEncoder(new BitTreeEncoder(), 3);
- this$static._midCoder[posState] = $BitTreeEncoder(new BitTreeEncoder(), 3);
- }
- return this$static;
- }
-
- function $Init_2(this$static, numPosStates) {
- var posState;
- InitBitModels_0(this$static._choice);
- for (posState = 0; posState < numPosStates; ++posState) {
- InitBitModels(this$static._lowCoder[posState].Models);
- InitBitModels(this$static._midCoder[posState].Models);
- }
- InitBitModels(this$static._highCoder.Models);
- }
-
- function $SetPrices(this$static, posState, numSymbols, prices, st) {
- var a0, a1, b0, b1, i;
- a0 = ($clinit_66() , ProbPrices[this$static._choice[0] >>> 2]);
- a1 = ProbPrices[2048 - this$static._choice[0] >>> 2];
- b0 = a1 + ProbPrices[this$static._choice[1] >>> 2];
- b1 = a1 + ProbPrices[2048 - this$static._choice[1] >>> 2];
- i = 0;
- for (i = 0; i < 8; ++i) {
- if (i >= numSymbols)
- return;
- prices[st + i] = a0 + $GetPrice_1(this$static._lowCoder[posState], i);
- }
- for (; i < 16; ++i) {
- if (i >= numSymbols)
- return;
- prices[st + i] = b0 + $GetPrice_1(this$static._midCoder[posState], i - 8);
- }
- for (; i < numSymbols; ++i) {
- prices[st + i] = b1 + $GetPrice_1(this$static._highCoder, i - 8 - 8);
- }
- }
-
- function getClass_33() {
- return Lorg_dellroad_lzma_client_SevenZip_Compression_LZMA_Encoder$LenEncoder_2_classLit;
- }
-
- function Encoder$LenEncoder() {
- }
-
- _ = Encoder$LenEncoder.prototype = new Object_0();
- _.getClass$ = getClass_33;
- _.typeId$ = 0;
- function $Encode_0(this$static, rangeEncoder, symbol, posState) {
- $Encode(this$static, rangeEncoder, symbol, posState);
- if (--this$static._counters[posState] == 0) {
- $SetPrices(this$static, posState, this$static._tableSize, this$static._prices, posState * 272);
- this$static._counters[posState] = this$static._tableSize;
- }
- }
-
- function $Encoder$LenPriceTableEncoder(this$static) {
- $Encoder$LenEncoder(this$static);
- this$static._prices = initDim(_3I_classLit, 0, -1, 4352, 1);
- this$static._counters = initDim(_3I_classLit, 0, -1, 16, 1);
- return this$static;
- }
-
- function $GetPrice(this$static, symbol, posState) {
- return this$static._prices[posState * 272 + symbol];
- }
-
- function $UpdateTables(this$static, numPosStates) {
- var posState;
- for (posState = 0; posState < numPosStates; ++posState) {
- $SetPrices(this$static, posState, this$static._tableSize, this$static._prices, posState * 272);
- this$static._counters[posState] = this$static._tableSize;
- }
- }
-
- function getClass_34() {
- return Lorg_dellroad_lzma_client_SevenZip_Compression_LZMA_Encoder$LenPriceTableEncoder_2_classLit;
- }
-
- function Encoder$LenPriceTableEncoder() {
- }
-
- _ = Encoder$LenPriceTableEncoder.prototype = new Encoder$LenEncoder();
- _.getClass$ = getClass_34;
- _.typeId$ = 0;
- _._tableSize = 0;
- function $Create_1(this$static, numPosBits, numPrevBits) {
- var i, numStates;
- if (this$static.m_Coders != null && this$static.m_NumPrevBits == numPrevBits && this$static.m_NumPosBits == numPosBits) {
- return;
- }
- this$static.m_NumPosBits = numPosBits;
- this$static.m_PosMask = (1 << numPosBits) - 1;
- this$static.m_NumPrevBits = numPrevBits;
- numStates = 1 << this$static.m_NumPrevBits + this$static.m_NumPosBits;
- this$static.m_Coders = initDim(_3Lorg_dellroad_lzma_client_SevenZip_Compression_LZMA_Encoder$LiteralEncoder$Encoder2_2_classLit, 0, 5, numStates, 0);
- for (i = 0; i < numStates; ++i) {
- this$static.m_Coders[i] = $Encoder$LiteralEncoder$Encoder2(new Encoder$LiteralEncoder$Encoder2());
- }
- }
-
- function $GetSubCoder(this$static, pos, prevByte) {
- return this$static.m_Coders[((pos & this$static.m_PosMask) << this$static.m_NumPrevBits) + ((prevByte & 255) >>> 8 - this$static.m_NumPrevBits)];
- }
-
- function $Init_3(this$static) {
- var i, numStates;
- numStates = 1 << this$static.m_NumPrevBits + this$static.m_NumPosBits;
- for (i = 0; i < numStates; ++i) {
- InitBitModels_0(this$static.m_Coders[i].m_Encoders);
- }
- }
-
- function getClass_36() {
- return Lorg_dellroad_lzma_client_SevenZip_Compression_LZMA_Encoder$LiteralEncoder_2_classLit;
- }
-
- function Encoder$LiteralEncoder() {
- }
-
- _ = Encoder$LiteralEncoder.prototype = new Object_0();
- _.getClass$ = getClass_36;
- _.typeId$ = 0;
- _.m_Coders = null;
- _.m_NumPosBits = 0;
- _.m_NumPrevBits = 0;
- _.m_PosMask = 0;
- function $Encode_1(this$static, rangeEncoder, symbol) {
- var bit, context, i;
- context = 1;
- for (i = 7; i >= 0; --i) {
- bit = symbol >> i & 1;
- $Encode_3(rangeEncoder, this$static.m_Encoders, context, bit);
- context = context << 1 | bit;
- }
- }
-
- function $EncodeMatched(this$static, rangeEncoder, matchByte, symbol) {
- var bit, context, i, matchBit, same, state;
- context = 1;
- same = true;
- for (i = 7; i >= 0; --i) {
- bit = symbol >> i & 1;
- state = context;
- if (same) {
- matchBit = matchByte >> i & 1;
- state += 1 + matchBit << 8;
- same = matchBit == bit;
- }
- $Encode_3(rangeEncoder, this$static.m_Encoders, state, bit);
- context = context << 1 | bit;
- }
- }
-
- function $Encoder$LiteralEncoder$Encoder2(this$static) {
- this$static.m_Encoders = initDim(_3S_classLit, 0, -1, 768, 1);
- return this$static;
- }
-
- function $GetPrice_0(this$static, matchMode, matchByte, symbol) {
- var bit, context, i, matchBit, price;
- price = 0;
- context = 1;
- i = 7;
- if (matchMode) {
- for (; i >= 0; --i) {
- matchBit = matchByte >> i & 1;
- bit = symbol >> i & 1;
- price += GetPrice(this$static.m_Encoders[(1 + matchBit << 8) + context], bit);
- context = context << 1 | bit;
- if (matchBit != bit) {
- --i;
- break;
- }
- }
- }
- for (; i >= 0; --i) {
- bit = symbol >> i & 1;
- price += GetPrice(this$static.m_Encoders[context], bit);
- context = context << 1 | bit;
- }
- return price;
- }
-
- function getClass_35() {
- return Lorg_dellroad_lzma_client_SevenZip_Compression_LZMA_Encoder$LiteralEncoder$Encoder2_2_classLit;
- }
-
- function Encoder$LiteralEncoder$Encoder2() {
- }
-
- _ = Encoder$LiteralEncoder$Encoder2.prototype = new Object_0();
- _.getClass$ = getClass_35;
- _.typeId$ = 18;
- function $MakeAsChar(this$static) {
- this$static.BackPrev = -1;
- this$static.Prev1IsChar = false;
- }
-
- function $MakeAsShortRep(this$static) {
- this$static.BackPrev = 0;
- this$static.Prev1IsChar = false;
- }
-
- function getClass_37() {
- return Lorg_dellroad_lzma_client_SevenZip_Compression_LZMA_Encoder$Optimal_2_classLit;
- }
-
- function Encoder$Optimal() {
- }
-
- _ = Encoder$Optimal.prototype = new Object_0();
- _.getClass$ = getClass_37;
- _.typeId$ = 19;
- _.BackPrev = 0;
- _.BackPrev2 = 0;
- _.Backs0 = 0;
- _.Backs1 = 0;
- _.Backs2 = 0;
- _.Backs3 = 0;
- _.PosPrev = 0;
- _.PosPrev2 = 0;
- _.Prev1IsChar = false;
- _.Prev2 = false;
- _.Price = 0;
- _.State = 0;
- function $BitTreeDecoder(this$static, numBitLevels) {
- this$static.NumBitLevels = numBitLevels;
- this$static.Models = initDim(_3S_classLit, 0, -1, 1 << numBitLevels, 1);
- return this$static;
- }
-
- function $Decode_0(this$static, rangeDecoder) {
- var bitIndex, m;
- m = 1;
- for (bitIndex = this$static.NumBitLevels; bitIndex != 0; --bitIndex) {
- m = (m << 1) + $DecodeBit(rangeDecoder, this$static.Models, m);
- }
- return m - (1 << this$static.NumBitLevels);
- }
-
- function $ReverseDecode(this$static, rangeDecoder) {
- var bit, bitIndex, m, symbol;
- m = 1;
- symbol = 0;
- for (bitIndex = 0; bitIndex < this$static.NumBitLevels; ++bitIndex) {
- bit = $DecodeBit(rangeDecoder, this$static.Models, m);
- m <<= 1;
- m += bit;
- symbol |= bit << bitIndex;
- }
- return symbol;
- }
-
- function ReverseDecode(Models, startIndex, rangeDecoder, NumBitLevels) {
- var bit, bitIndex, m, symbol;
- m = 1;
- symbol = 0;
- for (bitIndex = 0; bitIndex < NumBitLevels; ++bitIndex) {
- bit = $DecodeBit(rangeDecoder, Models, startIndex + m);
- m <<= 1;
- m += bit;
- symbol |= bit << bitIndex;
- }
- return symbol;
- }
-
- function getClass_42() {
- return Lorg_dellroad_lzma_client_SevenZip_Compression_RangeCoder_BitTreeDecoder_2_classLit;
- }
-
- function BitTreeDecoder() {
- }
-
- _ = BitTreeDecoder.prototype = new Object_0();
- _.getClass$ = getClass_42;
- _.typeId$ = 20;
- _.Models = null;
- _.NumBitLevels = 0;
- function $BitTreeEncoder(this$static, numBitLevels) {
- this$static.NumBitLevels = numBitLevels;
- this$static.Models = initDim(_3S_classLit, 0, -1, 1 << numBitLevels, 1);
- return this$static;
- }
-
- function $Encode_2(this$static, rangeEncoder, symbol) {
- var bit, bitIndex, m;
- m = 1;
- for (bitIndex = this$static.NumBitLevels; bitIndex != 0;) {
- --bitIndex;
- bit = symbol >>> bitIndex & 1;
- $Encode_3(rangeEncoder, this$static.Models, m, bit);
- m = m << 1 | bit;
- }
- }
-
- function $GetPrice_1(this$static, symbol) {
- var bit, bitIndex, m, price;
- price = 0;
- m = 1;
- for (bitIndex = this$static.NumBitLevels; bitIndex != 0;) {
- --bitIndex;
- bit = symbol >>> bitIndex & 1;
- price += GetPrice(this$static.Models[m], bit);
- m = (m << 1) + bit;
- }
- return price;
- }
-
- function $ReverseEncode(this$static, rangeEncoder, symbol) {
- var bit, i, m;
- m = 1;
- for (i = 0; i < this$static.NumBitLevels; ++i) {
- bit = symbol & 1;
- $Encode_3(rangeEncoder, this$static.Models, m, bit);
- m = m << 1 | bit;
- symbol >>= 1;
- }
- }
-
- function $ReverseGetPrice(this$static, symbol) {
- var bit, i, m, price;
- price = 0;
- m = 1;
- for (i = this$static.NumBitLevels; i != 0; --i) {
- bit = symbol & 1;
- symbol >>>= 1;
- price += GetPrice(this$static.Models[m], bit);
- m = m << 1 | bit;
- }
- return price;
- }
-
- function ReverseEncode(Models, startIndex, rangeEncoder, NumBitLevels, symbol) {
- var bit, i, m;
- m = 1;
- for (i = 0; i < NumBitLevels; ++i) {
- bit = symbol & 1;
- $Encode_3(rangeEncoder, Models, startIndex + m, bit);
- m = m << 1 | bit;
- symbol >>= 1;
- }
- }
-
- function ReverseGetPrice(Models, startIndex, NumBitLevels, symbol) {
- var bit, i, m, price;
- price = 0;
- m = 1;
- for (i = NumBitLevels; i != 0; --i) {
- bit = symbol & 1;
- symbol >>>= 1;
- price += ($clinit_66() , ProbPrices[((Models[startIndex + m] - bit ^ -bit) & 2047) >>> 2]);
- m = m << 1 | bit;
- }
- return price;
- }
-
- function getClass_43() {
- return Lorg_dellroad_lzma_client_SevenZip_Compression_RangeCoder_BitTreeEncoder_2_classLit;
- }
-
- function BitTreeEncoder() {
- }
-
- _ = BitTreeEncoder.prototype = new Object_0();
- _.getClass$ = getClass_43;
- _.typeId$ = 21;
- _.Models = null;
- _.NumBitLevels = 0;
- function $DecodeBit(this$static, probs, index) {
- var newBound, prob;
- prob = probs[index];
- newBound = (this$static.Range >>> 11) * prob;
- if ((this$static.Code ^ -2147483648) < (newBound ^ -2147483648)) {
- this$static.Range = newBound;
- probs[index] = prob + (2048 - prob >>> 5) << 16 >> 16;
- if ((this$static.Range & -16777216) == 0) {
- this$static.Code = this$static.Code << 8 | $read(this$static.Stream);
- this$static.Range <<= 8;
- }
- return 0;
- } else {
- this$static.Range -= newBound;
- this$static.Code -= newBound;
- probs[index] = prob - (prob >>> 5) << 16 >> 16;
- if ((this$static.Range & -16777216) == 0) {
- this$static.Code = this$static.Code << 8 | $read(this$static.Stream);
- this$static.Range <<= 8;
- }
- return 1;
- }
- }
-
- function $DecodeDirectBits(this$static, numTotalBits) {
- var i, result, t;
- result = 0;
- for (i = numTotalBits; i != 0; --i) {
- this$static.Range >>>= 1;
- t = this$static.Code - this$static.Range >>> 31;
- this$static.Code -= this$static.Range & t - 1;
- result = result << 1 | 1 - t;
- if ((this$static.Range & -16777216) == 0) {
- this$static.Code = this$static.Code << 8 | $read(this$static.Stream);
- this$static.Range <<= 8;
- }
- }
- return result;
- }
-
- function $Init_8(this$static) {
- var i;
- this$static.Code = 0;
- this$static.Range = -1;
- for (i = 0; i < 5; ++i) {
- this$static.Code = this$static.Code << 8 | $read(this$static.Stream);
- }
- }
-
- function InitBitModels(probs) {
- var i;
- for (i = 0; i < probs.length; ++i) {
- probs[i] = 1024;
- }
- }
-
- function getClass_44() {
- return Lorg_dellroad_lzma_client_SevenZip_Compression_RangeCoder_Decoder_2_classLit;
- }
-
- function Decoder_0() {
- }
-
- _ = Decoder_0.prototype = new Object_0();
- _.getClass$ = getClass_44;
- _.typeId$ = 0;
- _.Code = 0;
- _.Range = 0;
- _.Stream = null;
- function $clinit_66() {
- $clinit_66 = nullMethod;
- var end, i, j, start;
- ProbPrices = initDim(_3I_classLit, 0, -1, 512, 1);
- for (i = 8; i >= 0; --i) {
- start = 1 << 9 - i - 1;
- end = 1 << 9 - i;
- for (j = start; j < end; ++j) {
- ProbPrices[j] = (i << 6) + (end - j << 6 >>> 9 - i - 1);
- }
- }
- }
-
- function $Encode_3(this$static, probs, index, symbol) {
- var newBound, prob;
- prob = probs[index];
- newBound = (this$static.Range >>> 11) * prob;
- if (symbol == 0) {
- this$static.Range = newBound;
- probs[index] = prob + (2048 - prob >>> 5) << 16 >> 16;
- } else {
- this$static.Low = add(this$static.Low, and(fromInt(newBound), Pffffffff_longLit));
- this$static.Range -= newBound;
- probs[index] = prob - (prob >>> 5) << 16 >> 16;
- }
- if ((this$static.Range & -16777216) == 0) {
- this$static.Range <<= 8;
- $ShiftLow(this$static);
- }
- }
-
- function $EncodeDirectBits(this$static, v, numTotalBits) {
- var i;
- for (i = numTotalBits - 1; i >= 0; --i) {
- this$static.Range >>>= 1;
- if ((v >>> i & 1) == 1) {
- this$static.Low = add(this$static.Low, fromInt(this$static.Range));
- }
- if ((this$static.Range & -16777216) == 0) {
- this$static.Range <<= 8;
- $ShiftLow(this$static);
- }
- }
- }
-
- function $FlushData(this$static) {
- var i;
- for (i = 0; i < 5; ++i) {
- $ShiftLow(this$static);
- }
- }
-
- function $GetProcessedSizeAdd(this$static) {
- return add(add(fromInt(this$static._cacheSize), this$static._position), P4_longLit);
- }
-
- function $Init_9(this$static) {
- this$static._position = P0_longLit;
- this$static.Low = P0_longLit;
- this$static.Range = -1;
- this$static._cacheSize = 1;
- this$static._cache = 0;
- }
-
- function $ShiftLow(this$static) {
- var LowHi, temp;
- LowHi = lowBits_0(shru(this$static.Low, 32));
- if (LowHi != 0 || compare(this$static.Low, Pff000000_longLit) < 0) {
- this$static._position = add(this$static._position, fromInt(this$static._cacheSize));
- temp = this$static._cache;
- do {
- $write(this$static.Stream, temp + LowHi);
- temp = 255;
- } while (--this$static._cacheSize != 0);
- this$static._cache = lowBits_0(this$static.Low) >>> 24;
- }
- ++this$static._cacheSize;
- this$static.Low = shl(and(this$static.Low, Pffffff_longLit), 8);
- }
-
- function GetPrice(Prob, symbol) {
- $clinit_66();
- return ProbPrices[((Prob - symbol ^ -symbol) & 2047) >>> 2];
- }
-
- function InitBitModels_0(probs) {
- $clinit_66();
- var i;
- for (i = 0; i < probs.length; ++i) {
- probs[i] = 1024;
- }
- }
-
- function getClass_45() {
- return Lorg_dellroad_lzma_client_SevenZip_Compression_RangeCoder_Encoder_2_classLit;
- }
-
- function Encoder_0() {
- }
-
- _ = Encoder_0.prototype = new Object_0();
- _.getClass$ = getClass_45;
- _.typeId$ = 0;
- _.Low = P0_longLit;
- _.Range = 0;
- _.Stream = null;
- _._cache = 0;
- _._cacheSize = 0;
- _._position = P0_longLit;
- var ProbPrices;
- function decode(utf) {
- var buf, i, x, y, z;
- buf = $StringBuilder(new StringBuilder());
- for (i = 0; i < utf.length; ++i) {
- x = utf[i] & 255;
- if ((x & 128) == 0) {
- if (x == 0) {
- throw $IllegalArgumentException(new IllegalArgumentException(), 'invalid UTF-8');
- }
- $appendNonNull(buf.data, String.fromCharCode(x & 65535));
- } else if ((x & 224) == 192) {
- if (i + 1 >= utf.length) {
- throw $IllegalArgumentException(new IllegalArgumentException(), 'invalid UTF-8');
- }
- y = utf[++i] & 255;
- if ((y & 192) != 128) {
- throw $IllegalArgumentException(new IllegalArgumentException(), 'invalid UTF-8');
- }
- $append(buf.data, String.fromCharCode((x & 31) << 6 & 65535 | y & 63));
- } else if ((x & 240) == 224) {
- if (i + 2 >= utf.length) {
- throw $IllegalArgumentException(new IllegalArgumentException(), 'invalid UTF-8');
- }
- y = utf[++i] & 255;
- if ((y & 192) != 128) {
- throw $IllegalArgumentException(new IllegalArgumentException(), 'invalid UTF-8');
- }
- z = utf[++i] & 255;
- if ((z & 192) != 128) {
- throw $IllegalArgumentException(new IllegalArgumentException(), 'invalid UTF-8');
- }
- $appendNonNull(buf.data, String.fromCharCode(((x & 15) << 12 | (y & 63) << 6 | z & 63) & 65535));
- } else {
- throw $IllegalArgumentException(new IllegalArgumentException(), 'invalid UTF-8');
- }
- }
- return $toString(buf.data);
- }
-
- function encode(s) {
- var ch, chars, data, elen, i, charArr, n;
- chars = (n = s.length , charArr = initDim(_3C_classLit, 0, -1, n, 1) , $getChars(s, 0, n, charArr, 0) , charArr);
- elen = 0;
- for (i = 0; i < s.length; ++i) {
- ch = chars[i];
- if (ch >= 1 && ch <= 127) {
- ++elen;
- } else if (ch == 0 || ch >= 128 && ch <= 2047) {
- elen += 2;
- } else {
- elen += 3;
- }
- }
- data = initDim(_3B_classLit, 0, -1, elen, 1);
- elen = 0;
- for (i = 0; i < s.length; ++i) {
- ch = chars[i];
- if (ch >= 1 && ch <= 127) {
- data[elen++] = ch << 24 >> 24;
- } else if (ch == 0 || ch >= 128 && ch <= 2047) {
- data[elen++] = (192 | ch >> 6 & 31) << 24 >> 24;
- data[elen++] = (128 | ch & 63) << 24 >> 24;
- } else {
- data[elen++] = (224 | ch >> 12 & 15) << 24 >> 24;
- data[elen++] = (128 | ch >> 6 & 63) << 24 >> 24;
- data[elen++] = (128 | ch & 63) << 24 >> 24;
- }
- }
- return data;
- }
-
- function $LZMADemo(this$static) {
- return this$static;
- }
- function toDouble(a) {
- return a[1] + a[0];
- }
-
- function compress() {
- var this$static = $LZMADemo(new LZMADemo()),
- percent,
- start,
- /// Arguments
- str = arguments[0],
- mode = arguments[1],
- callback_num,
- on_finish,
- on_progress;
-
- if (typeof arguments[2] === "function") {
- on_finish = arguments[2];
- if (typeof arguments[3] === "function") {
- on_progress = arguments[3];
- }
- } else {
- callback_num = arguments[2];
- }
-
- this$static.mode = get_mode_obj(mode);
-
- this$static.c = $LZMAByteArrayCompressor(new LZMAByteArrayCompressor(), encode(str), this$static.mode);
-
- if (on_progress) {
- on_progress(0);
- } else if (typeof callback_num !== "undefined") {
- update_progress(0, callback_num);
- }
-
- function do_action() {
- var res;
- start = (new Date).getTime();
- while ($execute(this$static.c)) {
- percent = toDouble(this$static.c.chunker.inBytesProcessed) / toDouble(this$static.c.length_0);
- /// If about 200 miliseconds have passed, update the progress.
- if ((new Date).getTime() - start > 200) {
- if (on_progress) {
- on_progress(percent);
- } else if (typeof callback_num !== "undefined") {
- update_progress(percent, callback_num);
- }
- setTimeout(do_action, 0);
- return false;
- }
- }
-
- if (on_progress) {
- on_progress(1);
- } else if (typeof callback_num !== "undefined") {
- update_progress(1, callback_num);
- }
-
- /// .slice(0) is required for Firefox 4.0 (because I think arrays are now passed by reference, which is not allowed when sending messages to or from web workers).
- /// .slice(0) simply returns the entire array by value.
- res = $toByteArray(this$static.c.output).slice(0);
-
- if (on_finish) {
- on_finish(res);
- } else if (typeof callback_num !== "undefined") {
- postMessage({
- action: action_compress,
- callback_num: callback_num,
- result: res
- });
- }
- }
-
- setTimeout(do_action, 1);
- }
-
- function decompress() {
- var this$static = $LZMADemo(new LZMADemo()),
- percent,
- data,
- start,
- text,
- /// Arguments
- byte_arr = arguments[0],
- callback_num,
- on_finish,
- on_progress;
-
- if (typeof arguments[1] === "function") {
- on_finish = arguments[1];
- if (typeof arguments[2] === "function") {
- on_progress = arguments[2];
- }
- } else {
- callback_num = arguments[1];
- }
-
- data = initValues(_3B_classLit, 0, -1, byte_arr);
-
- this$static.d = $LZMAByteArrayDecompressor(new LZMAByteArrayDecompressor(), data);
-
- if (on_progress) {
- on_progress(0);
- } else if (typeof callback_num !== "undefined") {
- update_progress(0, callback_num);
- }
-
- function do_action() {
- var res;
- start = (new Date).getTime();
- while ($execute_0(this$static.d)) {
- percent = toDouble(this$static.d.chunker.decoder.nowPos64) / toDouble(this$static.d.length_0);
- /// If about 200 miliseconds have passed, update the progress.
- if ((new Date).getTime() - start > 200) {
- if (on_progress) {
- on_progress(percent);
- } else if (typeof callback_num !== "undefined") {
- update_progress(percent, callback_num);
- }
- setTimeout(do_action, 0);
- return false;
- }
- }
-
- if (on_progress) {
- on_progress(1);
- } else if (typeof callback_num !== "undefined") {
- update_progress(1, callback_num);
- }
-
- res = decode($toByteArray(this$static.d.output));
-
- if (on_finish) {
- on_finish(res);
- } else if (typeof callback_num !== "undefined") {
- postMessage({
- action: action_decompress,
- callback_num: callback_num,
- result: res
- });
- }
- }
-
- setTimeout(do_action, 0);
- }
-
- function $onModuleLoad(this$static) {
- compress(this$static);
- decompress(this$static);
- }
-
- function getClass_46() {
- return Lorg_dellroad_lzma_demo_client_LZMADemo_2_classLit;
- }
-
- function LZMADemo () {}
-
- _ = LZMADemo.prototype = new Object_0();
- _.getClass$ = getClass_46;
- _.typeId$ = 0;
- _.c = null;
- _.d = null;
- var DEFAULT_COMPRESSION_MODE;
- function init() {
- !!$stats && $stats({moduleName:$moduleName, subSystem:'startup', evtGroup:'moduleStartup', millis:(new Date()).getTime(), type:'onModuleLoadStart', className:'org.dellroad.lzma.demo.client.LZMADemo'});
- }
-
- function gwtOnLoad(errFn, modName, modBase) {
- $moduleName = modName;
- $moduleBase = modBase;
- if (errFn) {
- try {
- init();
- }
- catch (e) {
- errFn(modName);
- }
- } else {
- init();
- }
- }
-
- function nullMethod() {
- }
-
- var Ljava_lang_Object_2_classLit = createForClass('java.lang.', 'Object'),
- Ljava_lang_Throwable_2_classLit = createForClass('java.lang.', 'Throwable'),
- Ljava_lang_Exception_2_classLit = createForClass('java.lang.', 'Exception'),
- Ljava_lang_RuntimeException_2_classLit = createForClass('java.lang.', 'RuntimeException'),
- Lcom_google_gwt_core_client_JavaScriptException_2_classLit = createForClass('com.google.gwt.core.client.', 'JavaScriptException'),
- Lcom_google_gwt_core_client_JavaScriptObject_2_classLit = createForClass('com.google.gwt.core.client.', 'JavaScriptObject$'), _3_3D_classLit = createForArray('', '[[D'),
- Ljava_io_InputStream_2_classLit = createForClass('java.io.', 'InputStream'),
- Ljava_io_ByteArrayInputStream_2_classLit = createForClass('java.io.', 'ByteArrayInputStream'), _3B_classLit = createForArray('', '[B'),
- Ljava_io_OutputStream_2_classLit = createForClass('java.io.', 'OutputStream'),
- Ljava_io_ByteArrayOutputStream_2_classLit = createForClass('java.io.', 'ByteArrayOutputStream'),
- Ljava_io_IOException_2_classLit = createForClass('java.io.', 'IOException'),
- Ljava_lang_Enum_2_classLit = createForClass('java.lang.', 'Enum'),
- Ljava_lang_ArithmeticException_2_classLit = createForClass('java.lang.', 'ArithmeticException'),
- Ljava_lang_ArrayStoreException_2_classLit = createForClass('java.lang.', 'ArrayStoreException'), _3C_classLit = createForArray('', '[C'),
- Ljava_lang_Class_2_classLit = createForClass('java.lang.', 'Class'),
- Ljava_lang_ClassCastException_2_classLit = createForClass('java.lang.', 'ClassCastException'),
- Ljava_lang_IllegalArgumentException_2_classLit = createForClass('java.lang.', 'IllegalArgumentException'),
- Ljava_lang_IllegalStateException_2_classLit = createForClass('java.lang.', 'IllegalStateException'),
- Ljava_lang_IndexOutOfBoundsException_2_classLit = createForClass('java.lang.', 'IndexOutOfBoundsException'), _3I_classLit = createForArray('', '[I'),
- Ljava_lang_NullPointerException_2_classLit = createForClass('java.lang.', 'NullPointerException'),
- Ljava_lang_String_2_classLit = createForClass('java.lang.', 'String'),
- Ljava_lang_StringBuilder_2_classLit = createForClass('java.lang.', 'StringBuilder'),
- Lorg_dellroad_lzma_client_SevenZip_Compression_LZ_InWindow_2_classLit = createForClass('org.dellroad.lzma.client.SevenZip.Compression.LZ.', 'InWindow'),
- Lorg_dellroad_lzma_client_SevenZip_Compression_LZ_BinTree_2_classLit = createForClass('org.dellroad.lzma.client.SevenZip.Compression.LZ.', 'BinTree'),
- Lorg_dellroad_lzma_client_SevenZip_Compression_LZ_OutWindow_2_classLit = createForClass('org.dellroad.lzma.client.SevenZip.Compression.LZ.', 'OutWindow'),
- Lorg_dellroad_lzma_client_SevenZip_Compression_LZMA_Chunker_2_classLit = createForClass('org.dellroad.lzma.client.SevenZip.Compression.LZMA.', 'Chunker'), _3S_classLit = createForArray('', '[S'), _3Lorg_dellroad_lzma_client_SevenZip_Compression_RangeCoder_BitTreeDecoder_2_classLit = createForArray('[Lorg.dellroad.lzma.client.SevenZip.Compression.RangeCoder.', 'BitTreeDecoder;'),
- Lorg_dellroad_lzma_client_SevenZip_Compression_LZMA_Decoder_2_classLit = createForClass('org.dellroad.lzma.client.SevenZip.Compression.LZMA.', 'Decoder'),
- Lorg_dellroad_lzma_client_SevenZip_Compression_LZMA_Decoder$LenDecoder_2_classLit = createForClass('org.dellroad.lzma.client.SevenZip.Compression.LZMA.', 'Decoder$LenDecoder'), _3Lorg_dellroad_lzma_client_SevenZip_Compression_LZMA_Decoder$LiteralDecoder$Decoder2_2_classLit = createForArray('[Lorg.dellroad.lzma.client.SevenZip.Compression.LZMA.', 'Decoder$LiteralDecoder$Decoder2;'),
- Lorg_dellroad_lzma_client_SevenZip_Compression_LZMA_Decoder$LiteralDecoder_2_classLit = createForClass('org.dellroad.lzma.client.SevenZip.Compression.LZMA.', 'Decoder$LiteralDecoder'),
- Lorg_dellroad_lzma_client_SevenZip_Compression_LZMA_Decoder$LiteralDecoder$Decoder2_2_classLit = createForClass('org.dellroad.lzma.client.SevenZip.Compression.LZMA.', 'Decoder$LiteralDecoder$Decoder2'), _3Lorg_dellroad_lzma_client_SevenZip_Compression_LZMA_Encoder$Optimal_2_classLit = createForArray('[Lorg.dellroad.lzma.client.SevenZip.Compression.LZMA.', 'Encoder$Optimal;'), _3Lorg_dellroad_lzma_client_SevenZip_Compression_RangeCoder_BitTreeEncoder_2_classLit = createForArray('[Lorg.dellroad.lzma.client.SevenZip.Compression.RangeCoder.', 'BitTreeEncoder;'), _3J_classLit = createForArray('', '[J'), _3Z_classLit = createForArray('', '[Z'),
- Lorg_dellroad_lzma_client_SevenZip_Compression_LZMA_Encoder_2_classLit = createForClass('org.dellroad.lzma.client.SevenZip.Compression.LZMA.', 'Encoder'), _3Lorg_dellroad_lzma_client_SevenZip_Compression_LZMA_Encoder$LiteralEncoder$Encoder2_2_classLit = createForArray('[Lorg.dellroad.lzma.client.SevenZip.Compression.LZMA.', 'Encoder$LiteralEncoder$Encoder2;'),
- Lorg_dellroad_lzma_client_SevenZip_Compression_LZMA_Encoder$LiteralEncoder_2_classLit = createForClass('org.dellroad.lzma.client.SevenZip.Compression.LZMA.', 'Encoder$LiteralEncoder'),
- Lorg_dellroad_lzma_client_SevenZip_Compression_LZMA_Encoder$LiteralEncoder$Encoder2_2_classLit = createForClass('org.dellroad.lzma.client.SevenZip.Compression.LZMA.', 'Encoder$LiteralEncoder$Encoder2'),
- Lorg_dellroad_lzma_client_SevenZip_Compression_LZMA_Encoder$LenEncoder_2_classLit = createForClass('org.dellroad.lzma.client.SevenZip.Compression.LZMA.', 'Encoder$LenEncoder'),
- Lorg_dellroad_lzma_client_SevenZip_Compression_LZMA_Encoder$LenPriceTableEncoder_2_classLit = createForClass('org.dellroad.lzma.client.SevenZip.Compression.LZMA.', 'Encoder$LenPriceTableEncoder'),
- Lorg_dellroad_lzma_client_SevenZip_Compression_LZMA_Encoder$Optimal_2_classLit = createForClass('org.dellroad.lzma.client.SevenZip.Compression.LZMA.', 'Encoder$Optimal'),
- Lorg_dellroad_lzma_client_SevenZip_Compression_RangeCoder_BitTreeDecoder_2_classLit = createForClass('org.dellroad.lzma.client.SevenZip.Compression.RangeCoder.', 'BitTreeDecoder'),
- Lorg_dellroad_lzma_client_SevenZip_Compression_RangeCoder_BitTreeEncoder_2_classLit = createForClass('org.dellroad.lzma.client.SevenZip.Compression.RangeCoder.', 'BitTreeEncoder'),
- Lorg_dellroad_lzma_client_SevenZip_Compression_RangeCoder_Decoder_2_classLit = createForClass('org.dellroad.lzma.client.SevenZip.Compression.RangeCoder.', 'Decoder'),
- Lorg_dellroad_lzma_client_SevenZip_Compression_RangeCoder_Encoder_2_classLit = createForClass('org.dellroad.lzma.client.SevenZip.Compression.RangeCoder.', 'Encoder'),
- Lorg_dellroad_lzma_client_CompressionMode_2_classLit = createForEnum('org.dellroad.lzma.client.', 'CompressionMode'),
- Lorg_dellroad_lzma_client_LZMACompressor_2_classLit = createForClass('org.dellroad.lzma.client.', 'LZMACompressor'),
- Lorg_dellroad_lzma_client_LZMAByteArrayCompressor_2_classLit = createForClass('org.dellroad.lzma.client.', 'LZMAByteArrayCompressor'),
- Lorg_dellroad_lzma_client_LZMADecompressor_2_classLit = createForClass('org.dellroad.lzma.client.', 'LZMADecompressor'),
- Lorg_dellroad_lzma_client_LZMAByteArrayDecompressor_2_classLit = createForClass('org.dellroad.lzma.client.', 'LZMAByteArrayDecompressor'),
- Lorg_dellroad_lzma_demo_client_LZMADemo_2_classLit = createForClass('org.dellroad.lzma.demo.client.', 'LZMADemo');
-
- gwtOnLoad(function() {},'lzma_demo','');
-
-
- var get_mode_obj = (function () {
- var modes = [
- {dictionarySize: 16, fb: 64, matchFinder: 0, lc: 3, lp: 0, pb: 2},
- {dictionarySize: 20, fb: 64, matchFinder: 0, lc: 3, lp: 0, pb: 2},
- {dictionarySize: 19, fb: 64, matchFinder: 1, lc: 3, lp: 0, pb: 2},
- {dictionarySize: 20, fb: 64, matchFinder: 1, lc: 3, lp: 0, pb: 2},
- {dictionarySize: 21, fb: 128, matchFinder: 1, lc: 3, lp: 0, pb: 2},
- {dictionarySize: 22, fb: 128, matchFinder: 1, lc: 3, lp: 0, pb: 2},
- {dictionarySize: 23, fb: 128, matchFinder: 1, lc: 3, lp: 0, pb: 2},
- {dictionarySize: 24, fb: 255, matchFinder: 1, lc: 3, lp: 0, pb: 2},
- {dictionarySize: 25, fb: 255, matchFinder: 1, lc: 3, lp: 0, pb: 2}
- ];
-
- function isNumber(n) {
- return !isNaN(parseFloat(n)) && isFinite(n);
- }
- return function (mode) {
- if (!isNumber(mode)) {
- mode = 1;
- } else {
- if (mode < 1) {
- mode = 1;
- } else if (mode > 9) {
- mode = 9;
- }
- }
-
- return modes[mode - 1];
- }
- }());
-
- return {
- compress: compress,
- decompress: decompress
- };
- }());
- /// Allow node.js to be able to access this directly if it is included directly.
- this.LZMA = LZMA;
- // CartoDB.js version: 3.15.10
- // sha: b0f743801efcdf67255637c955b8fcfc9e811f64
- ! function() {
- function MapProperties(a) { this.mapProperties = a }
- function MapBase(a) {
- var b = this;
- this.options = _.defaults(a, { ajax: window.$ ? window.$.ajax : reqwest.compat, pngParams: ["map_key", "api_key", "cache_policy", "updated_at"], gridParams: ["map_key", "api_key", "cache_policy", "updated_at"], cors: cdb.core.util.isCORSSupported(), MAX_GET_SIZE: 2033, force_cors: !1, instanciateCallback: function() {
- return "_cdbc_" + b._callbackName() } }), this.mapProperties = null, this.urls = null, this.silent = !1, this.interactionEnabled = [], this._timeout = -1, this._createMapCallsStack = [], this._createMapCallbacks = [], this._waiting = !1, this.lastTimeUpdated = null, this._refreshTimer = -1, this.options.maps_api_template || this._buildMapsApiTemplate(this.options) }
- function LayerDefinition(a, b) { MapBase.call(this, b), this.endPoint = MapBase.BASE_URL, this.setLayerDefinition(a, { silent: !0 }) }
- function NamedMap(a, b) { MapBase.call(this, b), this.options.pngParams.push("auth_token"), this.options.gridParams.push("auth_token"), this.setLayerDefinition(a, b), this.stat_tag = a.stat_tag }
- function SubLayerFactory() {}
- function SubLayerBase(a, b) { this._parent = a, this._position = b, this._added = !0 }
- function CartoDBSubLayer(a, b) { SubLayerBase.call(this, a, b), this._bindInteraction();
- var a = this._parent.getLayer(this._position);
- Backbone.Model && a && (this.infowindow = new Backbone.Model(a.infowindow), this.infowindow.bind("change", function() { a.infowindow = this.infowindow.toJSON(), this._parent.setLayer(this._position, a) }, this)) }
- function HttpSubLayer(a, b) { SubLayerBase.call(this, a, b) }
- this.cartodb = {};
- var Backbone = {};
- (function() {
- var a = this,
- b = a._,
- c = {},
- d = Array.prototype,
- e = Object.prototype,
- f = Function.prototype,
- g = d.push,
- h = d.slice,
- i = d.concat,
- j = e.toString,
- k = e.hasOwnProperty,
- l = d.forEach,
- m = d.map,
- n = d.reduce,
- o = d.reduceRight,
- p = d.filter,
- q = d.every,
- r = d.some,
- s = d.indexOf,
- t = d.lastIndexOf,
- u = Array.isArray,
- v = Object.keys,
- w = f.bind,
- x = function(a) {
- return a instanceof x ? a : this instanceof x ? void(this._wrapped = a) : new x(a) }; "undefined" != typeof exports ? ("undefined" != typeof module && module.exports && (exports = module.exports = x), exports._ = x) : a._ = x, x.VERSION = "1.4.4";
- var y = x.each = x.forEach = function(a, b, d) {
- if (null != a)
- if (l && a.forEach === l) a.forEach(b, d);
- else if (a.length === +a.length) {
- for (var e = 0, f = a.length; f > e; e++)
- if (b.call(d, a[e], e, a) === c) return } else
- for (var g in a)
- if (x.has(a, g) && b.call(d, a[g], g, a) === c) return };
- x.map = x.collect = function(a, b, c) {
- var d = [];
- return null == a ? d : m && a.map === m ? a.map(b, c) : (y(a, function(a, e, f) { d[d.length] = b.call(c, a, e, f) }), d) };
- var z = "Reduce of empty array with no initial value";
- x.reduce = x.foldl = x.inject = function(a, b, c, d) {
- var e = arguments.length > 2;
- if (null == a && (a = []), n && a.reduce === n) return d && (b = x.bind(b, d)), e ? a.reduce(b, c) : a.reduce(b);
- if (y(a, function(a, f, g) { e ? c = b.call(d, c, a, f, g) : (c = a, e = !0) }), !e) throw new TypeError(z);
- return c }, x.reduceRight = x.foldr = function(a, b, c, d) {
- var e = arguments.length > 2;
- if (null == a && (a = []), o && a.reduceRight === o) return d && (b = x.bind(b, d)), e ? a.reduceRight(b, c) : a.reduceRight(b);
- var f = a.length;
- if (f !== +f) {
- var g = x.keys(a);
- f = g.length }
- if (y(a, function(h, i, j) { i = g ? g[--f] : --f, e ? c = b.call(d, c, a[i], i, j) : (c = a[i], e = !0) }), !e) throw new TypeError(z);
- return c }, x.find = x.detect = function(a, b, c) {
- var d;
- return A(a, function(a, e, f) {
- return b.call(c, a, e, f) ? (d = a, !0) : void 0 }), d }, x.filter = x.select = function(a, b, c) {
- var d = [];
- return null == a ? d : p && a.filter === p ? a.filter(b, c) : (y(a, function(a, e, f) { b.call(c, a, e, f) && (d[d.length] = a) }), d) }, x.reject = function(a, b, c) {
- return x.filter(a, function(a, d, e) {
- return !b.call(c, a, d, e) }, c) }, x.every = x.all = function(a, b, d) { b || (b = x.identity);
- var e = !0;
- return null == a ? e : q && a.every === q ? a.every(b, d) : (y(a, function(a, f, g) {
- return (e = e && b.call(d, a, f, g)) ? void 0 : c }), !!e) };
- var A = x.some = x.any = function(a, b, d) { b || (b = x.identity);
- var e = !1;
- return null == a ? e : r && a.some === r ? a.some(b, d) : (y(a, function(a, f, g) {
- return e || (e = b.call(d, a, f, g)) ? c : void 0 }), !!e) };
- x.contains = x.include = function(a, b) {
- return null == a ? !1 : s && a.indexOf === s ? -1 != a.indexOf(b) : A(a, function(a) {
- return a === b }) }, x.invoke = function(a, b) {
- var c = h.call(arguments, 2),
- d = x.isFunction(b);
- return x.map(a, function(a) {
- return (d ? b : a[b]).apply(a, c) }) }, x.pluck = function(a, b) {
- return x.map(a, function(a) {
- return a[b] }) }, x.where = function(a, b, c) {
- return x.isEmpty(b) ? c ? null : [] : x[c ? "find" : "filter"](a, function(a) {
- for (var c in b)
- if (b[c] !== a[c]) return !1;
- return !0 }) }, x.findWhere = function(a, b) {
- return x.where(a, b, !0) }, x.max = function(a, b, c) {
- if (!b && x.isArray(a) && a[0] === +a[0] && 65535 > a.length) return Math.max.apply(Math, a);
- if (!b && x.isEmpty(a)) return -1 / 0;
- var d = { computed: -1 / 0, value: -1 / 0 };
- return y(a, function(a, e, f) {
- var g = b ? b.call(c, a, e, f) : a;
- g >= d.computed && (d = { value: a, computed: g }) }), d.value }, x.min = function(a, b, c) {
- if (!b && x.isArray(a) && a[0] === +a[0] && 65535 > a.length) return Math.min.apply(Math, a);
- if (!b && x.isEmpty(a)) return 1 / 0;
- var d = { computed: 1 / 0, value: 1 / 0 };
- return y(a, function(a, e, f) {
- var g = b ? b.call(c, a, e, f) : a;
- d.computed > g && (d = { value: a, computed: g }) }), d.value }, x.shuffle = function(a) {
- var b, c = 0,
- d = [];
- return y(a, function(a) { b = x.random(c++), d[c - 1] = d[b], d[b] = a }), d };
- var B = function(a) {
- return x.isFunction(a) ? a : function(b) {
- return b[a] } };
- x.sortBy = function(a, b, c) {
- var d = B(b);
- return x.pluck(x.map(a, function(a, b, e) {
- return { value: a, index: b, criteria: d.call(c, a, b, e) } }).sort(function(a, b) {
- var c = a.criteria,
- d = b.criteria;
- if (c !== d) {
- if (c > d || void 0 === c) return 1;
- if (d > c || void 0 === d) return -1 }
- return a.index < b.index ? -1 : 1 }), "value") };
- var C = function(a, b, c, d) {
- var e = {},
- f = B(b || x.identity);
- return y(a, function(b, g) {
- var h = f.call(c, b, g, a);
- d(e, h, b) }), e };
- x.groupBy = function(a, b, c) {
- return C(a, b, c, function(a, b, c) {
- (x.has(a, b) ? a[b] : a[b] = []).push(c) }) }, x.countBy = function(a, b, c) {
- return C(a, b, c, function(a, b) { x.has(a, b) || (a[b] = 0), a[b]++ }) }, x.sortedIndex = function(a, b, c, d) { c = null == c ? x.identity : B(c);
- for (var e = c.call(d, b), f = 0, g = a.length; g > f;) {
- var h = f + g >>> 1;
- e > c.call(d, a[h]) ? f = h + 1 : g = h }
- return f }, x.toArray = function(a) {
- return a ? x.isArray(a) ? h.call(a) : a.length === +a.length ? x.map(a, x.identity) : x.values(a) : [] }, x.size = function(a) {
- return null == a ? 0 : a.length === +a.length ? a.length : x.keys(a).length }, x.first = x.head = x.take = function(a, b, c) {
- return null == a ? void 0 : null == b || c ? a[0] : h.call(a, 0, b) }, x.initial = function(a, b, c) {
- return h.call(a, 0, a.length - (null == b || c ? 1 : b)) }, x.last = function(a, b, c) {
- return null == a ? void 0 : null == b || c ? a[a.length - 1] : h.call(a, Math.max(a.length - b, 0)) }, x.rest = x.tail = x.drop = function(a, b, c) {
- return h.call(a, null == b || c ? 1 : b) }, x.compact = function(a) {
- return x.filter(a, x.identity) };
- var D = function(a, b, c) {
- return y(a, function(a) { x.isArray(a) ? b ? g.apply(c, a) : D(a, b, c) : c.push(a) }), c };
- x.flatten = function(a, b) {
- return D(a, b, []) }, x.without = function(a) {
- return x.difference(a, h.call(arguments, 1)) }, x.uniq = x.unique = function(a, b, c, d) { x.isFunction(b) && (d = c, c = b, b = !1);
- var e = c ? x.map(a, c, d) : a,
- f = [],
- g = [];
- return y(e, function(c, d) {
- (b ? d && g[g.length - 1] === c : x.contains(g, c)) || (g.push(c), f.push(a[d])) }), f }, x.union = function() {
- return x.uniq(i.apply(d, arguments)) }, x.intersection = function(a) {
- var b = h.call(arguments, 1);
- return x.filter(x.uniq(a), function(a) {
- return x.every(b, function(b) {
- return x.indexOf(b, a) >= 0 }) }) }, x.difference = function(a) {
- var b = i.apply(d, h.call(arguments, 1));
- return x.filter(a, function(a) {
- return !x.contains(b, a) }) }, x.zip = function() {
- for (var a = h.call(arguments), b = x.max(x.pluck(a, "length")), c = Array(b), d = 0; b > d; d++) c[d] = x.pluck(a, "" + d);
- return c }, x.object = function(a, b) {
- if (null == a) return {};
- for (var c = {}, d = 0, e = a.length; e > d; d++) b ? c[a[d]] = b[d] : c[a[d][0]] = a[d][1];
- return c }, x.indexOf = function(a, b, c) {
- if (null == a) return -1;
- var d = 0,
- e = a.length;
- if (c) {
- if ("number" != typeof c) return d = x.sortedIndex(a, b), a[d] === b ? d : -1;
- d = 0 > c ? Math.max(0, e + c) : c }
- if (s && a.indexOf === s) return a.indexOf(b, c);
- for (; e > d; d++)
- if (a[d] === b) return d;
- return -1 }, x.lastIndexOf = function(a, b, c) {
- if (null == a) return -1;
- var d = null != c;
- if (t && a.lastIndexOf === t) return d ? a.lastIndexOf(b, c) : a.lastIndexOf(b);
- for (var e = d ? c : a.length; e--;)
- if (a[e] === b) return e;
- return -1 }, x.range = function(a, b, c) { 1 >= arguments.length && (b = a || 0, a = 0), c = arguments[2] || 1;
- for (var d = Math.max(Math.ceil((b - a) / c), 0), e = 0, f = Array(d); d > e;) f[e++] = a, a += c;
- return f }, x.bind = function(a, b) {
- if (a.bind === w && w) return w.apply(a, h.call(arguments, 1));
- var c = h.call(arguments, 2);
- return function() {
- return a.apply(b, c.concat(h.call(arguments))) } }, x.partial = function(a) {
- var b = h.call(arguments, 1);
- return function() {
- return a.apply(this, b.concat(h.call(arguments))) } }, x.bindAll = function(a) {
- var b = h.call(arguments, 1);
- return 0 === b.length && (b = x.functions(a)), y(b, function(b) { a[b] = x.bind(a[b], a) }), a }, x.memoize = function(a, b) {
- var c = {};
- return b || (b = x.identity),
- function() {
- var d = b.apply(this, arguments);
- return x.has(c, d) ? c[d] : c[d] = a.apply(this, arguments) } }, x.delay = function(a, b) {
- var c = h.call(arguments, 2);
- return setTimeout(function() {
- return a.apply(null, c) }, b) }, x.defer = function(a) {
- return x.delay.apply(x, [a, 1].concat(h.call(arguments, 1))) }, x.throttle = function(a, b) {
- var c, d, e, f, g = 0,
- h = function() { g = new Date, e = null, f = a.apply(c, d) };
- return function() {
- var i = new Date,
- j = b - (i - g);
- return c = this, d = arguments, 0 >= j ? (clearTimeout(e), e = null, g = i, f = a.apply(c, d)) : e || (e = setTimeout(h, j)), f } }, x.debounce = function(a, b, c) {
- var d, e;
- return function() {
- var f = this,
- g = arguments,
- h = function() { d = null, c || (e = a.apply(f, g)) },
- i = c && !d;
- return clearTimeout(d), d = setTimeout(h, b), i && (e = a.apply(f, g)), e } }, x.once = function(a) {
- var b, c = !1;
- return function() {
- return c ? b : (c = !0, b = a.apply(this, arguments), a = null, b) } }, x.wrap = function(a, b) {
- return function() {
- var c = [a];
- return g.apply(c, arguments), b.apply(this, c) } }, x.compose = function() {
- var a = arguments;
- return function() {
- for (var b = arguments, c = a.length - 1; c >= 0; c--) b = [a[c].apply(this, b)];
- return b[0] } }, x.after = function(a, b) {
- return 0 >= a ? b() : function() {
- return 1 > --a ? b.apply(this, arguments) : void 0 } }, x.keys = v || function(a) {
- if (a !== Object(a)) throw new TypeError("Invalid object");
- var b = [];
- for (var c in a) x.has(a, c) && (b[b.length] = c);
- return b }, x.values = function(a) {
- var b = [];
- for (var c in a) x.has(a, c) && b.push(a[c]);
- return b }, x.pairs = function(a) {
- var b = [];
- for (var c in a) x.has(a, c) && b.push([c, a[c]]);
- return b }, x.invert = function(a) {
- var b = {};
- for (var c in a) x.has(a, c) && (b[a[c]] = c);
- return b }, x.functions = x.methods = function(a) {
- var b = [];
- for (var c in a) x.isFunction(a[c]) && b.push(c);
- return b.sort() }, x.extend = function(a) {
- return y(h.call(arguments, 1), function(b) {
- if (b)
- for (var c in b) a[c] = b[c] }), a }, x.pick = function(a) {
- var b = {},
- c = i.apply(d, h.call(arguments, 1));
- return y(c, function(c) { c in a && (b[c] = a[c]) }), b }, x.omit = function(a) {
- var b = {},
- c = i.apply(d, h.call(arguments, 1));
- for (var e in a) x.contains(c, e) || (b[e] = a[e]);
- return b }, x.defaults = function(a) {
- return y(h.call(arguments, 1), function(b) {
- if (b)
- for (var c in b) null == a[c] && (a[c] = b[c]) }), a }, x.clone = function(a) {
- return x.isObject(a) ? x.isArray(a) ? a.slice() : x.extend({}, a) : a }, x.tap = function(a, b) {
- return b(a), a };
- var E = function(a, b, c, d) {
- if (a === b) return 0 !== a || 1 / a == 1 / b;
- if (null == a || null == b) return a === b;
- a instanceof x && (a = a._wrapped), b instanceof x && (b = b._wrapped);
- var e = j.call(a);
- if (e != j.call(b)) return !1;
- switch (e) {
- case "[object String]":
- return a == b + "";
- case "[object Number]":
- return a != +a ? b != +b : 0 == a ? 1 / a == 1 / b : a == +b;
- case "[object Date]":
- case "[object Boolean]":
- return +a == +b;
- case "[object RegExp]":
- return a.source == b.source && a.global == b.global && a.multiline == b.multiline && a.ignoreCase == b.ignoreCase }
- if ("object" != typeof a || "object" != typeof b) return !1;
- for (var f = c.length; f--;)
- if (c[f] == a) return d[f] == b;
- c.push(a), d.push(b);
- var g = 0,
- h = !0;
- if ("[object Array]" == e) {
- if (g = a.length, h = g == b.length)
- for (; g-- && (h = E(a[g], b[g], c, d));); } else {
- var i = a.constructor,
- k = b.constructor;
- if (i !== k && !(x.isFunction(i) && i instanceof i && x.isFunction(k) && k instanceof k)) return !1;
- for (var l in a)
- if (x.has(a, l) && (g++, !(h = x.has(b, l) && E(a[l], b[l], c, d)))) break;
- if (h) {
- for (l in b)
- if (x.has(b, l) && !g--) break;
- h = !g } }
- return c.pop(), d.pop(), h };
- x.isEqual = function(a, b) {
- return E(a, b, [], []) }, x.isEmpty = function(a) {
- if (null == a) return !0;
- if (x.isArray(a) || x.isString(a)) return 0 === a.length;
- for (var b in a)
- if (x.has(a, b)) return !1;
- return !0 }, x.isElement = function(a) {
- return !(!a || 1 !== a.nodeType) }, x.isArray = u || function(a) {
- return "[object Array]" == j.call(a) }, x.isObject = function(a) {
- return a === Object(a) }, y(["Arguments", "Function", "String", "Number", "Date", "RegExp"], function(a) { x["is" + a] = function(b) {
- return j.call(b) == "[object " + a + "]" } }), x.isArguments(arguments) || (x.isArguments = function(a) {
- return !(!a || !x.has(a, "callee")) }), "function" != typeof /./ && (x.isFunction = function(a) {
- return "function" == typeof a }), x.isFinite = function(a) {
- return isFinite(a) && !isNaN(parseFloat(a)) }, x.isNaN = function(a) {
- return x.isNumber(a) && a != +a }, x.isBoolean = function(a) {
- return a === !0 || a === !1 || "[object Boolean]" == j.call(a) }, x.isNull = function(a) {
- return null === a }, x.isUndefined = function(a) {
- return void 0 === a }, x.has = function(a, b) {
- return k.call(a, b) }, x.noConflict = function() {
- return a._ = b, this }, x.identity = function(a) {
- return a }, x.times = function(a, b, c) {
- for (var d = Array(a), e = 0; a > e; e++) d[e] = b.call(c, e);
- return d }, x.random = function(a, b) {
- return null == b && (b = a, a = 0), a + Math.floor(Math.random() * (b - a + 1)) };
- var F = { escape: { "&": "&", "<": "<", ">": ">", '"': """, "'": "'", "/": "/" } };
- F.unescape = x.invert(F.escape);
- var G = { escape: RegExp("[" + x.keys(F.escape).join("") + "]", "g"), unescape: RegExp("(" + x.keys(F.unescape).join("|") + ")", "g") };
- x.each(["escape", "unescape"], function(a) { x[a] = function(b) {
- return null == b ? "" : ("" + b).replace(G[a], function(b) {
- return F[a][b] }) } }), x.result = function(a, b) {
- if (null == a) return null;
- var c = a[b];
- return x.isFunction(c) ? c.call(a) : c }, x.mixin = function(a) { y(x.functions(a), function(b) {
- var c = x[b] = a[b];
- x.prototype[b] = function() {
- var a = [this._wrapped];
- return g.apply(a, arguments), L.call(this, c.apply(x, a)) } }) };
- var H = 0;
- x.uniqueId = function(a) {
- var b = ++H + "";
- return a ? a + b : b }, x.templateSettings = { evaluate: /<%([\s\S]+?)%>/g, interpolate: /<%=([\s\S]+?)%>/g, escape: /<%-([\s\S]+?)%>/g };
- var I = /(.)^/,
- J = { "'": "'", "\\": "\\", "\r": "r", "\n": "n", " ": "t", "\u2028": "u2028", "\u2029": "u2029" },
- K = /\\|'|\r|\n|\t|\u2028|\u2029/g;
- x.template = function(a, b, c) {
- var d;
- c = x.defaults({}, c, x.templateSettings);
- var e = RegExp([(c.escape || I).source, (c.interpolate || I).source, (c.evaluate || I).source].join("|") + "|$", "g"),
- f = 0,
- g = "__p+='";
- a.replace(e, function(b, c, d, e, h) {
- return g += a.slice(f, h).replace(K, function(a) {
- return "\\" + J[a] }), c && (g += "'+\n((__t=(" + c + "))==null?'':_.escape(__t))+\n'"), d && (g += "'+\n((__t=(" + d + "))==null?'':__t)+\n'"), e && (g += "';\n" + e + "\n__p+='"), f = h + b.length, b }), g += "';\n", c.variable || (g = "with(obj||{}){\n" + g + "}\n"), g = "var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n" + g + "return __p;\n";
- try { d = Function(c.variable || "obj", "_", g) } catch (h) {
- throw h.source = g, h }
- if (b) return d(b, x);
- var i = function(a) {
- return d.call(this, a, x) };
- return i.source = "function(" + (c.variable || "obj") + "){\n" + g + "}", i }, x.chain = function(a) {
- return x(a).chain() };
- var L = function(a) {
- return this._chain ? x(a).chain() : a };
- x.mixin(x), y(["pop", "push", "reverse", "shift", "sort", "splice", "unshift"], function(a) {
- var b = d[a];
- x.prototype[a] = function() {
- var c = this._wrapped;
- return b.apply(c, arguments), "shift" != a && "splice" != a || 0 !== c.length || delete c[0], L.call(this, c) } }), y(["concat", "join", "slice"], function(a) {
- var b = d[a];
- x.prototype[a] = function() {
- return L.call(this, b.apply(this._wrapped, arguments)) } }), x.extend(x.prototype, { chain: function() {
- return this._chain = !0, this }, value: function() {
- return this._wrapped } }) }).call(this);
- var _ = this._;
- _.noConflict(),
- function(a, b) { "object" == typeof exports && exports ? b(exports) : "function" == typeof define && define.amd ? define(["exports"], b) : b(a.Mustache = {}) }(this, function(a) {
- function b(a) {
- return "function" == typeof a }
- function c(a) {
- return a.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&") }
- function d(a, b) {
- return o.call(a, b) }
- function e(a) {
- return !d(p, a) }
- function f(a) {
- return String(a).replace(/[&<>"'\/]/g, function(a) {
- return q[a] }) }
- function g(b, d) {
- function f() {
- if (w && !x)
- for (; q.length;) delete p[q.pop()];
- else q = [];
- w = !1, x = !1 }
- function g(a) {
- if ("string" == typeof a && (a = a.split(s, 2)), !n(a) || 2 !== a.length) throw new Error("Invalid tags: " + a);
- k = new RegExp(c(a[0]) + "\\s*"), l = new RegExp("\\s*" + c(a[1])), m = new RegExp("\\s*" + c("}" + a[1])) }
- if (!b) return [];
- var k, l, m, o = [],
- p = [],
- q = [],
- w = !1,
- x = !1;
- g(d || a.tags);
- for (var y, z, A, B, C, D, E = new j(b); !E.eos();) {
- if (y = E.pos, A = E.scanUntil(k))
- for (var F = 0, G = A.length; G > F; ++F) B = A.charAt(F), e(B) ? q.push(p.length) : x = !0, p.push(["text", B, y, y + 1]), y += 1, "\n" === B && f();
- if (!E.scan(k)) break;
- if (w = !0, z = E.scan(v) || "name", E.scan(r), "=" === z ? (A = E.scanUntil(t), E.scan(t), E.scanUntil(l)) : "{" === z ? (A = E.scanUntil(m), E.scan(u), E.scanUntil(l), z = "&") : A = E.scanUntil(l), !E.scan(l)) throw new Error("Unclosed tag at " + E.pos);
- if (C = [z, A, y, E.pos], p.push(C), "#" === z || "^" === z) o.push(C);
- else if ("/" === z) {
- if (D = o.pop(), !D) throw new Error('Unopened section "' + A + '" at ' + y);
- if (D[1] !== A) throw new Error('Unclosed section "' + D[1] + '" at ' + y) } else "name" === z || "{" === z || "&" === z ? x = !0 : "=" === z && g(A) }
- if (D = o.pop()) throw new Error('Unclosed section "' + D[1] + '" at ' + E.pos);
- return i(h(p)) }
- function h(a) {
- for (var b, c, d = [], e = 0, f = a.length; f > e; ++e) b = a[e], b && ("text" === b[0] && c && "text" === c[0] ? (c[1] += b[1], c[3] = b[3]) : (d.push(b), c = b));
- return d }
- function i(a) {
- for (var b, c, d = [], e = d, f = [], g = 0, h = a.length; h > g; ++g) switch (b = a[g], b[0]) {
- case "#":
- case "^":
- e.push(b), f.push(b), e = b[4] = [];
- break;
- case "/":
- c = f.pop(), c[5] = b[2], e = f.length > 0 ? f[f.length - 1][4] : d;
- break;
- default:
- e.push(b) }
- return d }
- function j(a) { this.string = a, this.tail = a, this.pos = 0 }
- function k(a, b) { this.view = null == a ? {} : a, this.cache = { ".": this.view }, this.parent = b }
- function l() { this.cache = {} }
- var m = Object.prototype.toString,
- n = Array.isArray || function(a) {
- return "[object Array]" === m.call(a) },
- o = RegExp.prototype.test,
- p = /\S/,
- q = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'", "/": "/" },
- r = /\s*/,
- s = /\s+/,
- t = /\s*=/,
- u = /\s*\}/,
- v = /#|\^|\/|>|\{|&|=|!/;
- j.prototype.eos = function() {
- return "" === this.tail }, j.prototype.scan = function(a) {
- var b = this.tail.match(a);
- if (!b || 0 !== b.index) return "";
- var c = b[0];
- return this.tail = this.tail.substring(c.length), this.pos += c.length, c }, j.prototype.scanUntil = function(a) {
- var b, c = this.tail.search(a);
- switch (c) {
- case -1:
- b = this.tail, this.tail = "";
- break;
- case 0:
- b = "";
- break;
- default:
- b = this.tail.substring(0, c), this.tail = this.tail.substring(c) }
- return this.pos += b.length, b }, k.prototype.push = function(a) {
- return new k(a, this) }, k.prototype.lookup = function(a) {
- var c, d = this.cache;
- if (a in d) c = d[a];
- else {
- for (var e, f, g = this; g;) {
- if (a.indexOf(".") > 0)
- for (c = g.view, e = a.split("."), f = 0; null != c && f < e.length;) c = c[e[f++]];
- else "object" == typeof g.view && (c = g.view[a]);
- if (null != c) break;
- g = g.parent }
- d[a] = c }
- return b(c) && (c = c.call(this.view)), c }, l.prototype.clearCache = function() { this.cache = {} }, l.prototype.parse = function(a, b) {
- var c = this.cache,
- d = c[a];
- return null == d && (d = c[a] = g(a, b)), d }, l.prototype.render = function(a, b, c) {
- var d = this.parse(a),
- e = b instanceof k ? b : new k(b);
- return this.renderTokens(d, e, c, a) }, l.prototype.renderTokens = function(a, b, c, d) {
- for (var e, f, g, h = "", i = 0, j = a.length; j > i; ++i) g = void 0, e = a[i], f = e[0], "#" === f ? g = this._renderSection(e, b, c, d) : "^" === f ? g = this._renderInverted(e, b, c, d) : ">" === f ? g = this._renderPartial(e, b, c, d) : "&" === f ? g = this._unescapedValue(e, b) : "name" === f ? g = this._escapedValue(e, b) : "text" === f && (g = this._rawValue(e)), void 0 !== g && (h += g);
- return h }, l.prototype._renderSection = function(a, c, d, e) {
- function f(a) {
- return g.render(a, c, d) }
- var g = this,
- h = "",
- i = c.lookup(a[1]);
- if (i) {
- if (n(i))
- for (var j = 0, k = i.length; k > j; ++j) h += this.renderTokens(a[4], c.push(i[j]), d, e);
- else if ("object" == typeof i || "string" == typeof i) h += this.renderTokens(a[4], c.push(i), d, e);
- else if (b(i)) {
- if ("string" != typeof e) throw new Error("Cannot use higher-order sections without the original template");
- i = i.call(c.view, e.slice(a[3], a[5]), f), null != i && (h += i) } else h += this.renderTokens(a[4], c, d, e);
- return h } }, l.prototype._renderInverted = function(a, b, c, d) {
- var e = b.lookup(a[1]);
- return !e || n(e) && 0 === e.length ? this.renderTokens(a[4], b, c, d) : void 0 }, l.prototype._renderPartial = function(a, c, d) {
- if (d) {
- var e = b(d) ? d(a[1]) : d[a[1]];
- return null != e ? this.renderTokens(this.parse(e), c, d, e) : void 0 } }, l.prototype._unescapedValue = function(a, b) {
- var c = b.lookup(a[1]);
- return null != c ? c : void 0 }, l.prototype._escapedValue = function(b, c) {
- var d = c.lookup(b[1]);
- return null != d ? a.escape(d) : void 0 }, l.prototype._rawValue = function(a) {
- return a[1] }, a.name = "mustache.js", a.version = "1.1.0", a.tags = ["{{", "}}"];
- var w = new l;
- a.clearCache = function() {
- return w.clearCache() }, a.parse = function(a, b) {
- return w.parse(a, b) }, a.render = function(a, b, c) {
- return w.render(a, b, c) }, a.to_html = function(c, d, e, f) {
- var g = a.render(c, d, e);
- return b(f) ? void f(g) : g }, a.escape = f, a.Scanner = j, a.Context = k, a.Writer = l }),
- function(a, b, c) { "undefined" != typeof module && module.exports ? module.exports = c() : "function" == typeof define && define.amd ? define(c) : b[a] = c() }("reqwest", this, function() {
- function handleReadyState(a, b, c) {
- return function() {
- return a._aborted ? c(a.request) : void(a.request && 4 == a.request[readyState] && (a.request.onreadystatechange = noop, twoHundo.test(a.request.status) ? b(a.request) : c(a.request))) } }
- function setHeaders(a, b) {
- var c, d = b.headers || {};
- d.Accept = d.Accept || defaultHeaders.accept[b.type] || defaultHeaders.accept["*"], b.crossOrigin || d[requestedWith] || (d[requestedWith] = defaultHeaders.requestedWith), d[contentType] || (d[contentType] = b.contentType || defaultHeaders.contentType);
- for (c in d) d.hasOwnProperty(c) && a.setRequestHeader(c, d[c]) }
- function setCredentials(a, b) { "undefined" != typeof b.withCredentials && "undefined" != typeof a.withCredentials && (a.withCredentials = !!b.withCredentials) }
- function generalCallback(a) { lastValue = a }
- function urlappend(a, b) {
- return a + (/\?/.test(a) ? "&" : "?") + b }
- function handleJsonp(a, b, c, d) {
- var e = uniqid++,
- f = a.jsonpCallback || "callback",
- g = a.jsonpCallbackName || reqwest.getcallbackPrefix(e),
- h = new RegExp("((^|\\?|&)" + f + ")=([^&]+)"),
- i = d.match(h),
- j = doc.createElement("script"),
- k = 0,
- l = -1 !== navigator.userAgent.indexOf("MSIE 10.0"),
- m = -1 !== navigator.userAgent.indexOf("MSIE 9.0");
- return i ? "?" === i[3] ? d = d.replace(h, "$1=" + g) : g = i[3] : d = urlappend(d, f + "=" + g), win[g] = generalCallback, j.type = "text/javascript", j.src = d, j.async = !0, "undefined" == typeof j.onreadystatechange || l || m || (j.event = "onclick", j.htmlFor = j.id = "_reqwest_" + e), j.onload = j.onreadystatechange = function() {
- return j[readyState] && "complete" !== j[readyState] && "loaded" !== j[readyState] || k ? !1 : (j.onload = j.onreadystatechange = null, j.onclick && j.onclick(), a.success && a.success(lastValue), lastValue = void 0, head.removeChild(j), void(k = 1)) }, head.appendChild(j), { abort: function() { j.onload = j.onreadystatechange = null, a.error && a.error({}, "Request is aborted: timeout", {}), lastValue = void 0, head.removeChild(j), k = 1 } } }
- function getRequest(a, b) {
- var c, d = this.o,
- e = (d.method || "GET").toUpperCase(),
- f = "string" == typeof d ? d : d.url,
- g = d.processData !== !1 && d.data && "string" != typeof d.data ? reqwest.toQueryString(d.data) : d.data || null;
- return "jsonp" != d.type && "GET" != e || !g || (f = urlappend(f, g), g = null), "jsonp" == d.type ? handleJsonp(d, a, b, f) : (c = xhr(), c.open(e, f, !0), setHeaders(c, d), setCredentials(c, d), c.onreadystatechange = handleReadyState(this, a, b), d.before && d.before(c), c.send(g), c) }
- function Reqwest(a, b) { this.o = a, this.fn = b, init.apply(this, arguments) }
- function setType(a) {
- var b = a.match(/\.(json|jsonp|html|xml)(\?|$)/);
- return b ? b[1] : "js" }
- function init(o, fn) {
- function complete(a) {
- for (o.timeout && clearTimeout(self.timeout), self.timeout = null; self._completeHandlers.length > 0;) self._completeHandlers.shift()(a) }
- function success(resp) {
- var r = resp.responseText;
- if (r) switch (type) {
- case "json":
- try { resp = win.JSON ? win.JSON.parse(r) : eval("(" + r + ")") } catch (err) {
- return error(resp, "Could not parse JSON in response", err) }
- break;
- case "js":
- resp = eval(r);
- break;
- case "html":
- resp = r;
- break;
- case "xml":
- resp = resp.responseXML && resp.responseXML.parseError && resp.responseXML.parseError.errorCode && resp.responseXML.parseError.reason ? null : resp.responseXML }
- for (self._responseArgs.resp = resp, self._fulfilled = !0, fn(resp); self._fulfillmentHandlers.length > 0;) self._fulfillmentHandlers.shift()(resp);
- complete(resp) }
- function error(a, b, c) {
- for (self._responseArgs.resp = a, self._responseArgs.msg = b, self._responseArgs.t = c, self._erred = !0; self._errorHandlers.length > 0;) self._errorHandlers.shift()(a, b, c);
- complete(a) }
- this.url = "string" == typeof o ? o : o.url, this.timeout = null, this._fulfilled = !1, this._fulfillmentHandlers = [], this._errorHandlers = [], this._completeHandlers = [], this._erred = !1, this._responseArgs = {};
- var self = this,
- type = o.type || setType(this.url);
- fn = fn || function() {}, o.timeout && (this.timeout = setTimeout(function() { self.abort() }, o.timeout)), o.success && this._fulfillmentHandlers.push(function() { o.success.apply(o, arguments) }), o.error && this._errorHandlers.push(function() { o.error.apply(o, arguments) }), o.complete && this._completeHandlers.push(function() { o.complete.apply(o, arguments) }), this.request = getRequest.call(this, success, error) }
- function reqwest(a, b) {
- return new Reqwest(a, b) }
- function normalize(a) {
- return a ? a.replace(/\r?\n/g, "\r\n") : "" }
- function serial(a, b) {
- var c, d, e, f, g = a.name,
- h = a.tagName.toLowerCase(),
- i = function(a) { a && !a.disabled && b(g, normalize(a.attributes.value && a.attributes.value.specified ? a.value : a.text)) };
- if (!a.disabled && g) switch (h) {
- case "input":
- /reset|button|image|file/i.test(a.type) || (c = /checkbox/i.test(a.type), d = /radio/i.test(a.type), e = a.value, (!(c || d) || a.checked) && b(g, normalize(c && "" === e ? "on" : e)));
- break;
- case "textarea":
- b(g, normalize(a.value));
- break;
- case "select":
- if ("select-one" === a.type.toLowerCase()) i(a.selectedIndex >= 0 ? a.options[a.selectedIndex] : null);
- else
- for (f = 0; a.length && f < a.length; f++) a.options[f].selected && i(a.options[f]) } }
- function eachFormElement() {
- var a, b, c = this,
- d = function(a, b) {
- var d, e, f;
- for (d = 0; d < b.length; d++)
- for (f = a[byTag](b[d]), e = 0; e < f.length; e++) serial(f[e], c) };
- for (b = 0; b < arguments.length; b++) a = arguments[b], /input|select|textarea/i.test(a.tagName) && serial(a, c), d(a, ["input", "select", "textarea"]) }
- function serializeQueryString() {
- return reqwest.toQueryString(reqwest.serializeArray.apply(null, arguments)) }
- function serializeHash() {
- var a = {};
- return eachFormElement.apply(function(b, c) { b in a ? (a[b] && !isArray(a[b]) && (a[b] = [a[b]]), a[b].push(c)) : a[b] = c }, arguments), a }
- function getValue(a) {
- return "function" == typeof a ? a() : a }
- var win = window,
- doc = document,
- twoHundo = /^20\d$/,
- byTag = "getElementsByTagName",
- readyState = "readyState",
- contentType = "Content-Type",
- requestedWith = "X-Requested-With",
- head = doc[byTag]("head")[0],
- uniqid = 0,
- callbackPrefix = "reqwest_" + +new Date,
- lastValue, xmlHttpRequest = "XMLHttpRequest",
- noop = function() {},
- isArray = "function" == typeof Array.isArray ? Array.isArray : function(a) {
- return a instanceof Array },
- defaultHeaders = { contentType: "application/x-www-form-urlencoded", requestedWith: xmlHttpRequest, accept: { "*": "text/javascript, text/html, application/xml, text/xml, */*", xml: "application/xml, text/xml", html: "text/html", text: "text/plain", json: "application/json, text/javascript", js: "application/javascript, text/javascript" } },
- xhr = win[xmlHttpRequest] ? function() {
- return new XMLHttpRequest } : function() {
- return new ActiveXObject("Microsoft.XMLHTTP") };
- return Reqwest.prototype = { abort: function() { this._aborted = !0, this.request.abort() }, retry: function() { init.call(this, this.o, this.fn) }, then: function(a, b) {
- return this._fulfilled ? a(this._responseArgs.resp) : this._erred ? b(this._responseArgs.resp, this._responseArgs.msg, this._responseArgs.t) : (this._fulfillmentHandlers.push(a), this._errorHandlers.push(b)), this }, always: function(a) {
- return this._fulfilled || this._erred ? a(this._responseArgs.resp) : this._completeHandlers.push(a), this }, fail: function(a) {
- return this._erred ? a(this._responseArgs.resp, this._responseArgs.msg, this._responseArgs.t) : this._errorHandlers.push(a), this } }, reqwest.serializeArray = function() {
- var a = [];
- return eachFormElement.apply(function(b, c) { a.push({ name: b, value: c }) }, arguments), a }, reqwest.serialize = function() {
- if (0 === arguments.length) return "";
- var a, b, c = Array.prototype.slice.call(arguments, 0);
- return a = c.pop(), a && a.nodeType && c.push(a) && (a = null), a && (a = a.type), b = "map" == a ? serializeHash : "array" == a ? reqwest.serializeArray : serializeQueryString, b.apply(null, c) }, reqwest.toQueryString = function(a) {
- var b, c, d, e = "",
- f = encodeURIComponent,
- g = function(a, b) { e += f(a) + "=" + f(b) + "&" };
- if (isArray(a))
- for (b = 0; a && b < a.length; b++) g(a[b].name, a[b].value);
- else
- for (c in a)
- if (Object.hasOwnProperty.call(a, c))
- if (d = a[c], isArray(d))
- for (b = 0; b < d.length; b++) g(c, d[b]);
- else g(c, a[c]); return e.replace(/&$/, "").replace(/%20/g, "+") }, reqwest.getcallbackPrefix = function() {
- return callbackPrefix }, reqwest.compat = function(a, b) {
- return a && (a.type && (a.method = a.type) && delete a.type, a.dataType && (a.type = a.dataType), a.jsonpCallback && (a.jsonpCallbackName = getValue(a.jsonpCallback)) && delete a.jsonpCallback, a.jsonp && (a.jsonpCallback = a.jsonp)), new Reqwest(a, b) }, reqwest }),
- function() {
- var a = this,
- b = a.cdb = {};
- b.VERSION = "3.15.10", b.DEBUG = !1, b.CARTOCSS_VERSIONS = { "2.0.0": "", "2.1.0": "" }, b.CARTOCSS_DEFAULT_VERSION = "2.1.1", a.cdb.config = {}, a.cdb.core = {}, a.cdb.image = {}, a.cdb.geo = {}, a.cdb.geo.ui = {}, a.cdb.geo.geocoder = {}, a.cdb.ui = {}, a.cdb.ui.common = {}, a.cdb.vis = {}, a.cdb.decorators = {}, a.JST = a.JST || {}, a.cartodb = b, b.files = ["../vendor/jquery.min.js", "../vendor/underscore-min.js", "../vendor/json2.js", "../vendor/backbone.js", "../vendor/mustache.js", "../vendor/leaflet.js", "../vendor/wax.cartodb.js", "../vendor/GeoJSON.js", "../vendor/jscrollpane.js", "../vendor/mousewheel.js", "../vendor/mwheelIntent.js", "../vendor/spin.js", "../vendor/lzma.js", "../vendor/html-css-sanitizer-bundle.js", "core/sanitize.js", "core/decorator.js", "core/config.js", "core/log.js", "core/profiler.js", "core/template.js", "core/model.js", "core/view.js", "core/loader.js", "core/util.js", "geo/geocoder.js", "geo/geometry.js", "geo/map.js", "geo/ui/text.js", "geo/ui/annotation.js", "geo/ui/image.js", "geo/ui/share.js", "geo/ui/zoom.js", "geo/ui/zoom_info.js", "geo/ui/legend.js", "geo/ui/switcher.js", "geo/ui/infowindow.js", "geo/ui/header.js", "geo/ui/search.js", "geo/ui/layer_selector.js", "geo/ui/slides_controller.js", "geo/ui/mobile.js", "geo/ui/tiles_loader.js", "geo/ui/infobox.js", "geo/ui/tooltip.js", "geo/ui/fullscreen.js", "geo/sublayer.js", "geo/layer_definition.js", "geo/common.js", "geo/leaflet/leaflet_base.js", "geo/leaflet/leaflet_plainlayer.js", "geo/leaflet/leaflet_tiledlayer.js", "geo/leaflet/leaflet_gmaps_tiledlayer.js", "geo/leaflet/leaflet_wmslayer.js", "geo/leaflet/leaflet_cartodb_layergroup.js", "geo/leaflet/leaflet_cartodb_layer.js", "geo/leaflet/leaflet.geometry.js", "geo/leaflet/leaflet.js", "geo/gmaps/gmaps_base.js", "geo/gmaps/gmaps_baselayer.js", "geo/gmaps/gmaps_plainlayer.js", "geo/gmaps/gmaps_tiledlayer.js", "geo/gmaps/gmaps_cartodb_layergroup.js", "geo/gmaps/gmaps_cartodb_layer.js", "geo/gmaps/gmaps.geometry.js", "geo/gmaps/gmaps.js", "ui/common/dialog.js", "ui/common/share.js", "ui/common/notification.js", "ui/common/table.js", "ui/common/dropdown.js", "vis/vis.js", "vis/image.js", "vis/overlays.js", "vis/layers.js", "api/layers.js", "api/sql.js", "api/vis.js"], b.init = function(c) {
- var d = b.Class = function() {};
- _.extend(d.prototype, Backbone.Events), b._loadJST(), a.cdb.god = new Backbone.Model, c && c() }, b.load = function(a, c) {
- var d = 0,
- e = function() {
- var f = document.createElement("script");
- f.src = a + b.files[d], document.body.appendChild(f), ++d, d == b.files.length ? c && (f.onload = c) : f.onload = e };
- e() } }(),
- function() {
- function a() {}
- var b = Array.prototype.slice,
- c = (Array.prototype.splice, /\s+/),
- d = Backbone.Events = { on: function(a, b, d) {
- var e, f, g, h, i;
- if (!b) return this;
- for (a = a.split(c), e = this._callbacks || (this._callbacks = {}); f = a.shift();) i = e[f], g = i ? i.tail : {}, g.next = h = {}, g.context = d, g.callback = b, e[f] = { tail: h, next: i ? i.next : g };
- return this }, off: function(a, b, d) {
- var f, g, h, i, j, k;
- if (g = this._callbacks) {
- if (!(a || b || d)) return delete this._callbacks, this;
- for (a = a ? a.split(c) : e.keys(g); f = a.shift();)
- if (h = g[f], delete g[f], h && (b || d))
- for (i = h.tail;
- (h = h.next) !== i;) j = h.callback, k = h.context, (b && j !== b || d && k !== d) && this.on(f, j, k);
- return this } }, trigger: function(a) {
- var d, e, f, g, h, i, j;
- if (!(f = this._callbacks)) return this;
- for (i = f.all, a = a.split(c), j = b.call(arguments, 1); d = a.shift();) {
- if (e = f[d])
- for (g = e.tail;
- (e = e.next) !== g;) e.callback.apply(e.context || this, j);
- if (e = i)
- for (g = e.tail, h = [d].concat(j);
- (e = e.next) !== g;) e.callback.apply(e.context || this, h) }
- return this } };
- if (d.bind = d.on, d.unbind = d.off, void 0 === cartodb._Promise && (a.prototype = d, a.prototype.done = function(a) {
- return this.on("done", a) }, a.prototype.error = function(a) {
- return this.on("error", a) }, cartodb._Promise = a), "undefined" == typeof e) var e = { extend: function(a, b) {
- for (var c in b) a[c] = b[c];
- return a }, defaults: function(a, b) {
- for (var c in b) void 0 == a[c] && (a[c] = b[c]);
- return a }, isFunction: function(a) {
- return "function" == typeof a } } }(),
- function(a) {
- function b() {}
- function c(a) { this.t0 = null, this.name = a, this.count = 0 }
- var d = 1024;
- b.metrics = {}, b._backend = null, b.get = function(a) {
- return b.metrics[a] || {
- max: 0,
- min: Number.MAX_VALUE,
- avg: 0,
- total: 0,
- count: 0,
- last: 0,
- history: "undefined" != typeof Float32Array ? new Float32Array(d) : []
- }
- }, b.backend = function(a) { b._backend = a }, b.new_value = function(a, c, e, f) { e = e || "i";
- var g = b.metrics[a] = b.get(a);
- if (g.max = Math.max(g.max, c), g.min = Math.min(g.min, c), g.total += c, ++g.count, g.avg = g.total / g.count, g.history[g.count % d] = c, f) {
- var h = (new Date).getTime();
- h - g.last > 1e3 && (b._backend && b._backend([e, a, g.avg]), g.last = h) } else b._backend && b._backend([e, a, c]) }, b.print_stats = function() {
- for (k in b.metrics) {
- var a = b.metrics[k];
- console.log(" === " + k + " === "), console.log(" max: " + a.max), console.log(" min: " + a.min), console.log(" avg: " + a.avg), console.log(" count: " + a.count), console.log(" total: " + a.total) } }, c.prototype = { start: function() {
- return this.t0 = +new Date, this }, _elapsed: function() {
- return +new Date - this.t0 }, end: function(a) { null !== this.t0 && (b.new_value(this.name, this._elapsed(), "t", a), this.t0 = null) }, inc: function(a) { a = void 0 === a ? 1 : a, b.new_value(this.name, a, "i") }, dec: function(a) { a = void 0 === a ? 1 : a, b.new_value(this.name, a, "d") }, mark: function() {
- if (++this.count, null === this.t0) return void this.start();
- var a = this._elapsed();
- a > 1 && (b.new_value(this.name, this.count), this.count = 0, this.start()) } }, b.metric = function(a) {
- return new c(a) }, a.Profiler = b
- }(cdb.core), cdb.core.util = {}, cdb.core.util.isCORSSupported = function() {
- return "withCredentials" in new XMLHttpRequest }, cdb.core.util.array2hex = function(a) {
- for (var b = [], c = 0; c < a.length; ++c) b.push(String.fromCharCode(a[c] + 128));
- return cdb.core.util.btoa(b.join("")) }, cdb.core.util.btoa = function(a) {
- return "function" == typeof window.btoa ? cdb.core.util.encodeBase64Native(a) : cdb.core.util.encodeBase64(a) }, cdb.core.util.encodeBase64Native = function(a) {
- return btoa(a) }, cdb.core.util.encodeBase64 = function(a) {
- var b, c, d, e, f, g, h, i, j = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
- k = 0,
- l = 0,
- m = "",
- n = [];
- if (!a) return a;
- do b = a.charCodeAt(k++), c = a.charCodeAt(k++), d = a.charCodeAt(k++), i = b << 16 | c << 8 | d, e = i >> 18 & 63, f = i >> 12 & 63, g = i >> 6 & 63, h = 63 & i, n[l++] = j.charAt(e) + j.charAt(f) + j.charAt(g) + j.charAt(h); while (k < a.length);
- m = n.join("");
- var o = a.length % 3;
- return (o ? m.slice(0, o - 3) : m) + "===".slice(o || 3) }, cdb.core.util.uniqueCallbackName = function(a) {
- return cdb.core.util._callback_c = cdb.core.util._callback_c || 0, ++cdb.core.util._callback_c, cdb.core.util.crc32(a) + "_" + cdb.core.util._callback_c }, cdb.core.util.crc32 = function(a) {
- for (var b = cdb.core.util._crcTable || (cdb.core.util._crcTable = cdb.core.util._makeCRCTable()), c = -1, d = 0, e = a.length; e > d; ++d) c = c >>> 8 ^ b[255 & (c ^ a.charCodeAt(d))];
- return (-1 ^ c) >>> 0 }, cdb.core.util._makeCRCTable = function() {
- for (var a, b = [], c = 0; 256 > c; ++c) { a = c;
- for (var d = 0; 8 > d; ++d) a = 1 & a ? 3988292384 ^ a >>> 1 : a >>> 1;
- b[c] = a }
- return b }, cdb.core.util._inferBrowser = function(a) {
- function b() {
- var b = a.indexOf("MSIE "),
- c = a.indexOf("Trident/");
- return b > -1 || c > -1 ? !0 : !1 }
- function c() {
- return document.compatMode ? window.XMLHttpRequest ? document.querySelector ? document.addEventListener ? window.atob ? document.all ? 10 : 11 : 9 : 8 : 7 : 6 : 5 }
- var d = {};
- return a = a || window.navigator.userAgent, b() ? d.ie = { version: c() } : a.indexOf("Edge/") > -1 ? d.edge = a : a.indexOf("Chrome") > -1 ? d.chrome = a : a.indexOf("Firefox") > -1 ? d.firefox = a : a.indexOf("Opera") > -1 ? d.opera = a : a.indexOf("Safari") > -1 && (d.safari = a), d }, cdb.core.util.browser = cdb.core.util._inferBrowser(),
- function() {
- function a(b) {
- if (cartodb === this || window === this) return new a(b);
- if (!b.user) throw new Error("user should be provided");
- var c = new String(window.location.protocol);
- if (c = c.slice(0, c.length - 1), "file" == c && (c = "https"), this.ajax = b.ajax || ("undefined" != typeof jQuery ? jQuery.ajax : reqwest), !this.ajax) throw new Error("jQuery or reqwest should be loaded");
- if (this.options = _.defaults(b, { version: "v2", protocol: c, jsonp: "undefined" != typeof jQuery ? !jQuery.support.cors : !1 }), !this.options.sql_api_template) {
- var d = this.options,
- e = null;
- if (d && d.completeDomain) e = d.completeDomain;
- else {
- var f = d.host || "carto.com",
- g = d.protocol || "https";
- e = g + "://{user}." + f }
- this.options.sql_api_template = e } }
- function b(a) {
- return JSON.parse(a.replace(/^{/, "[").replace(/}$/, "]")) }
- var c = this;
- c.cartodb = c.cartodb || {}, a.prototype._host = function() {
- var a = this.options;
- return a.sql_api_template.replace("{user}", a.user) + "/api/" + a.version + "/sql" }, a.prototype.execute = function(a, b, c, d) {
- var e = 1024,
- f = new cartodb._Promise;
- if (!a) throw new TypeError("sql should not be null");
- var g = arguments,
- h = g[g.length - 1];
- _.isFunction(h) && (d = h), c = _.defaults(c || {}, this.options);
- var i = { type: "get", dataType: "json", crossDomain: !0 };
- void 0 !== c.cache && (i.cache = c.cache), c.jsonp && (delete i.crossDomain, c.jsonpCallback && (i.jsonpCallback = c.jsonpCallback), i.dataType = "jsonp");
- var j = "156543.03515625",
- k = "ST_MakeEnvelope(-20037508.5,-20037508.5,20037508.5,20037508.5,3857)";
- a = a.replace("!bbox!", k).replace("!pixel_width!", j).replace("!pixel_height!", j);
- var l = Mustache.render(a, b),
- m = l.length < e,
- n = ["format", "dp", "api_key"];
- if (c.extra_params && (n = n.concat(c.extra_params)), i.url = this._host(), m) {
- var o = "q=" + encodeURIComponent(l);
- for (var p in n) {
- var q = n[p],
- r = c[q];
- r && (o += "&" + q + "=" + r) }
- i.url += "?" + o } else {
- var s = { q: l };
- for (var p in n) {
- var q = n[p],
- r = c[q];
- r && (s[q] = r) }
- i.data = s, "undefined" != typeof jQuery ? i.type = "post" : i.method = "post" }
- var t = c.success,
- u = c.error;
- return t && delete c.success, u && delete u.success, i.error = function(a) {
- var b = a.responseText || a.response,
- c = b && JSON.parse(b);
- f.trigger("error", c && c.error, a), u && u(a) }, i.success = function(a, b, c) { void 0 == b && (b = a.status, c = a, a = JSON.parse(a.response)), setTimeout(function() { f.trigger("done", a, b, c), t && t(a, b, c), d && d(a) }, 0) }, delete c.jsonp, this.ajax(_.extend(i, c)), f }, a.prototype.getBounds = function(a, b, c, d) {
- var e = new cartodb._Promise,
- f = arguments,
- g = f[f.length - 1];
- _.isFunction(g) && (d = g);
- var h = "SELECT ST_XMin(ST_Extent(the_geom)) as minx, ST_YMin(ST_Extent(the_geom)) as miny, ST_XMax(ST_Extent(the_geom)) as maxx, ST_YMax(ST_Extent(the_geom)) as maxy from ({{{ sql }}}) as subq";
- return a = Mustache.render(a, b), this.execute(h, { sql: a }, c).done(function(a) {
- if (a.rows && a.rows.length > 0 && null != a.rows[0].maxx) {
- var b = a.rows[0],
- c = -85.0511,
- f = 85.0511,
- g = -179,
- h = 179,
- i = function(a, b, c) {
- return b > a ? b : a > c ? c : a },
- j = i(b.maxx, g, h),
- k = i(b.minx, g, h),
- l = i(b.maxy, c, f),
- m = i(b.miny, c, f),
- n = [
- [l, j],
- [m, k]
- ];
- e.trigger("done", n), d && d(n) } }).error(function(a) { e.trigger("error", a) }), e }, a.prototype.table = function(a) {
- function b() { b.fetch.apply(b, arguments) }
- var c, d, e, f, g = a,
- h = [],
- i = this;
- return b.fetch = function(a) { a = a || {};
- var c = arguments,
- d = c[c.length - 1];
- _.isFunction(d) && (callback = d, 1 === c.length && (a = {})), i.execute(b.sql(), a, callback) }, b.sql = function() {
- var a = "select";
- return a += h.length ? " " + h.join(",") + " " : " * ", a += "from " + g, c && (a += " where " + c), d && (a += " limit " + d), e && (a += " order by " + e), f && (a += " " + f), a }, b.filter = function(a) {
- return c = a, b }, b.order_by = function(a) {
- return e = a, b }, b.asc = function() {
- return f = "asc", b }, b.desc = function() {
- return f = "desc", b }, b.columns = function(a) {
- return h = a, b }, b.limit = function(a) {
- return d = a, b }, b }, a.prototype.describeString = function(a, c, d) {
- var e = ["WITH t as (", " SELECT count(*) as total,", " count(DISTINCT {{column}}) as ndist", " FROM ({{sql}}) _wrap", " ), a as (", " SELECT ", " count(*) cnt, ", " {{column}}", " FROM ", " ({{sql}}) _wrap ", " GROUP BY ", " {{column}} ", " ORDER BY ", " cnt DESC", " ), b As (", " SELECT", " row_number() OVER (ORDER BY cnt DESC) rn,", " cnt", " FROM a", " ), c As (", " SELECT ", " sum(cnt) OVER (ORDER BY rn ASC) / t.total cumperc,", " rn,", " cnt ", " FROM b, t", " LIMIT 10", " ),", "stats as (", "select count(distinct({{column}})) as uniq, ", " count(*) as cnt, ", " sum(case when COALESCE(NULLIF({{column}},'')) is null then 1 else 0 end)::numeric as null_count, ", " sum(case when COALESCE(NULLIF({{column}},'')) is null then 1 else 0 end)::numeric / count(*)::numeric as null_ratio, ", " (SELECT max(cumperc) weight FROM c) As skew ", "from ({{sql}}) __wrap", "),", "hist as (", "select array_agg(row(d, c)) array_agg from (select distinct({{column}}) d, count(*) as c from ({{sql}}) __wrap, stats group by 1 limit 100) _a", ")", "select * from stats, hist"],
- f = Mustache.render(e.join("\n"), { column: c, sql: a }),
- g = function(a) {
- var b = a.replace(/^"(.+(?="$))?"$/, "$1");
- return b.replace(/""/g, '"') };
- this.execute(f, function(a) {
- var c = a.rows[0],
- e = 0,
- f = [];
- try {
- var h = b(c.array_agg),
- f = _(h).map(function(a) {
- var b = a.match(/\((.*),(\d+)/),
- c = g(b[1]);
- return [c, +b[2]] });
- e = c.skew * (1 - c.null_ratio) * (1 - c.uniq / c.cnt) * (c.uniq > 1 ? 1 : 0) } catch (i) {}
- d({ type: "string", hist: f, distinct: c.uniq, count: c.cnt, null_count: c.null_count, null_ratio: c.null_ratio, skew: c.skew, weight: e }) }) }, a.prototype.describeDate = function(a, b, c) {
- var d = ["with minimum as (", "SELECT min({{column}}) as start_time FROM ({{sql}}) _wrap), ", "maximum as (SELECT max({{column}}) as end_time FROM ({{sql}}) _wrap), ", "null_ratio as (SELECT sum(case when {{column}} is null then 1 else 0 end)::numeric / count(*)::numeric as null_ratio FROM ({{sql}}) _wrap), ", "moments as (SELECT count(DISTINCT {{column}}) as moments FROM ({{sql}}) _wrap)", "SELECT * FROM minimum, maximum, moments, null_ratio"],
- e = Mustache.render(d.join("\n"), { column: b, sql: a });
- this.execute(e, function(a) {
- var b = a.rows[0],
- d = new Date(b.end_time),
- e = new Date(b.start_time),
- f = (b.moments, Math.min(b.moments, 1024));
- c({ type: "date", start_time: e, end_time: d, range: d - e, steps: f, null_ratio: b.null_ratio }) }) }, a.prototype.describeBoolean = function(a, b, c) {
- var d = ["with stats as (", "select count(distinct({{column}})) as uniq,", "count(*) as cnt", "from ({{sql}}) _wrap ", "),", "null_ratio as (", "SELECT sum(case when {{column}} is null then 1 else 0 end)::numeric / count(*)::numeric as null_ratio FROM ({{sql}}) _wrap), ", "true_ratio as (", "SELECT sum(case when {{column}} is true then 1 else 0 end)::numeric / count(*)::numeric as true_ratio FROM ({{sql}}) _wrap) ", "SELECT * FROM true_ratio, null_ratio, stats"],
- e = Mustache.render(d.join("\n"), { column: b, sql: a });
- this.execute(e, function(a) {
- var b = a.rows[0];
- c({ type: "boolean", null_ratio: b.null_ratio, true_ratio: b.true_ratio, distinct: b.uniq, count: b.cnt }) }) }, a.prototype.describeGeom = function(a, b, c) {
- function d(a) {
- return { st_multipolygon: "polygon", st_polygon: "polygon", st_multilinestring: "line", st_linestring: "line", st_multipoint: "point", st_point: "point" }[a.toLowerCase()] }
- var e = ["with stats as (", "select st_asgeojson(st_extent({{column}})) as bbox", "from ({{sql}}) _wrap", "),", "geotype as (", "select st_geometrytype({{column}}) as geometry_type from ({{sql}}) _w where {{column}} is not null limit 1", "),", "clusters as (", "with clus as (", "SELECT distinct(ST_snaptogrid(the_geom, 10)) as cluster, count(*) as clustercount FROM ({{sql}}) _wrap group by 1 order by 2 desc limit 3),", "total as (", "SELECT count(*) FROM ({{sql}}) _wrap)", "SELECT sum(clus.clustercount)/sum(total.count) AS clusterrate FROM clus, total", "),", "density as (", "SELECT count(*) / st_area(st_extent(the_geom)) as density FROM ({{sql}}) _wrap", ")", "select * from stats, geotype, clusters, density"],
- f = Mustache.render(e.join("\n"), { column: b, sql: a });
- this.execute(f, function(a) {
- var b = a.rows[0],
- e = JSON.parse(b.bbox).coordinates[0];
- c({ type: "geom", bbox: [
- [e[0][0], e[0][1]],
- [e[2][0], e[2][1]]
- ], geometry_type: b.geometry_type, simplified_geometry_type: d(b.geometry_type), cluster_rate: b.clusterrate, density: b.density }) }) }, a.prototype.columns = function(a, b, c) {
- var d = arguments,
- e = d[d.length - 1];
- _.isFunction(e) && (c = e);
- var f = "select * from (" + a + ") __wrap limit 0",
- g = ["cartodb_id", "latitude", "longitude", "created_at", "updated_at", "lat", "lon", "the_geom_webmercator"];
- this.execute(f, function(a) {
- var b = {};
- for (var d in a.fields) - 1 === g.indexOf(d) && (b[d] = a.fields[d].type);
- c(b) }) }, a.prototype.describeFloat = function(a, c, d) {
- var e = ["with stats as (", "select min({{column}}) as min,", "max({{column}}) as max,", "avg({{column}}) as avg,", "count(DISTINCT {{column}}) as cnt,", "count(distinct({{column}})) as uniq,", "count(*) as cnt,", "sum(case when {{column}} is null then 1 else 0 end)::numeric / count(*)::numeric as null_ratio,", "stddev_pop({{column}}) / count({{column}}) as stddev,", "CASE WHEN abs(avg({{column}})) > 1e-7 THEN stddev({{column}}) / abs(avg({{column}})) ELSE 1e12 END as stddevmean,", 'CDB_DistType(array_agg("{{column}}"::numeric)) as dist_type ', "from ({{sql}}) _wrap ", "),", "params as (select min(a) as min, (max(a) - min(a)) / 7 as diff from ( select {{column}} as a from ({{sql}}) _table_sql where {{column}} is not null ) as foo ),", "histogram as (", "select array_agg(row(bucket, range, freq)) as hist from (", "select CASE WHEN uniq > 1 then width_bucket({{column}}, min-0.01*abs(min), max+0.01*abs(max), 100) ELSE 1 END as bucket,", "numrange(min({{column}})::numeric, max({{column}})::numeric) as range,", "count(*) as freq", "from ({{sql}}) _w, stats", "group by 1", "order by 1", ") __wrap", "),", "hist as (", "select array_agg(row(d, c)) cat_hist from (select distinct({{column}}) d, count(*) as c from ({{sql}}) __wrap, stats group by 1 limit 100) _a", "),", "buckets as (", "select CDB_QuantileBins(array_agg(distinct({{column}}::numeric)), 7) as quantiles, ", " (select array_agg(x::numeric) FROM (SELECT (min + n * diff)::numeric as x FROM generate_series(1,7) n, params) p) as equalint,", " CDB_JenksBins(array_agg(distinct({{column}}::numeric)), 7) as jenks, ", " CDB_HeadsTailsBins(array_agg(distinct({{column}}::numeric)), 7) as headtails ", "from ({{sql}}) _table_sql where {{column}} is not null", ")", "select * from histogram, stats, buckets, hist"],
- f = Mustache.render(e.join("\n"), { column: c, sql: a });
- this.execute(f, function(a) {
- var c = a.rows[0],
- e = b(c.hist),
- f = b(c.cat_hist);
- d({ type: "number", cat_hist: _(f).map(function(a) {
- var b = a.match(/\((.*),(\d+)/);
- return [+b[1], +b[2]] }), hist: _(e).map(function(a) {
- if (!(a.indexOf("empty") > -1)) {
- var b = a.split('"');
- return { index: b[0].replace(/\D/g, ""), range: b[1].split(",").map(function(a) {
- return a.replace(/\D/g, "") }), freq: b[2].replace(/\D/g, "") } } }), stddev: c.stddev, null_ratio: c.null_ratio, count: c.cnt, distinct: c.uniq, avg: c.avg, max: c.max, min: c.min, stddevmean: c.stddevmean, weight: (c.uniq > 1 ? 1 : 0) * (1 - c.null_ratio) * (c.stddev < -1 ? 1 : c.stddev < 1 ? .5 : c.stddev < 3 ? .25 : .1), quantiles: c.quantiles, equalint: c.equalint, jenks: c.jenks, headtails: c.headtails, dist_type: c.dist_type }) }) }, a.prototype.describe = function(a, b, c) {
- var d = this,
- e = arguments,
- f = e[e.length - 1];
- if (_.isFunction(f)) var g = f;
- var h = function(a) { a.column = b, g(a) },
- i = "select * from (" + a + ") __wrap limit 0";
- this.execute(i, function(e) {
- var f = c && c.type ? c.type : e.fields[b].type;
- return f ? void("string" === f ? d.describeString(a, b, h) : "number" === f ? d.describeFloat(a, b, h) : "geometry" === f ? d.describeGeom(a, b, h) : "date" === f ? d.describeDate(a, b, h) : "boolean" === f ? d.describeBoolean(a, b, h) : h(new Error("column type is not supported"))) : void h(new Error("column does not exist")) }) }, c.cartodb.SQL = a }(), MapProperties.prototype.getMapId = function() {
- return this.mapProperties.layergroupid }, MapProperties.prototype.getLayerIndexByType = function(a, b) {
- var c = this.mapProperties.metadata && this.mapProperties.metadata.layers;
- if (!c) return a;
- for (var d = {}, e = 0, f = 0; f < c.length; f++) c[f].type == b && (d[e] = f, e++);
- return void 0 == d[a] ? -1 : d[a] }, MapProperties.prototype.getLayerIndexesByType = function(a) {
- var b = this.mapProperties.metadata && this.mapProperties.metadata.layers;
- if (b) {
- for (var c = [], d = 0; d < b.length; d++) {
- var e = b[d],
- f = "torque" !== e.type;
- a && a.length > 0 && (f = f && -1 != a.indexOf(e.type)), f && c.push(d) }
- return c } }, MapBase.BASE_URL = "/api/v1/map", MapBase.EMPTY_GIF = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7", MapBase.prototype = { _buildMapsApiTemplate: function(a) {
- var b = a.tiler_protocol,
- c = a.tiler_domain,
- d = "" != a.tiler_port ? ":" + a.tiler_port : "",
- e = a.user_name ? "{user}." : "";
- a.maps_api_template = [b, "://", e, c, d].join("") }, createMap: function(a) {
- function b(a, b) {
- for (var d; d = c._createMapCallbacks.pop();) d(a, b) }
- var c = this;
- clearTimeout(this._timeout), this._createMapCallsStack.push(b), this._createMapCallbacks.push(a), this._timeout = setTimeout(function() { c._createMap(b) }, 4) }, _createMap: function(a) {
- if (a = a || function() {}, this._waiting) return this;
- if (this._createMapCallsStack = [], !this.named_map && 0 === this.visibleLayers().length) return void a(null);
- this._waiting = !0;
- var b = null;
- b = this._usePOST() ? this._requestPOST : this._requestGET;
- var c = this._getParamsFromOptions(this.options);
- return b.call(this, c, a), this }, _getParamsFromOptions: function(a) {
- var b = [],
- c = a.extra_params || {},
- d = a.map_key || a.api_key || c.map_key || c.api_key;
- if (d && b.push("map_key=" + d), c.auth_token)
- if (_.isArray(c.auth_token))
- for (var e = 0, f = c.auth_token.length; f > e; e++) b.push("auth_token[]=" + c.auth_token[e]);
- else b.push("auth_token=" + c.auth_token);
- return this.stat_tag && b.push("stat_tag=" + this.stat_tag), b }, _usePOST: function() {
- if (this.options.cors) {
- if (this.options.force_cors) return !0;
- var a = JSON.stringify(this.toJSON());
- if (a.length > this.options.MAX_GET_SIZE) return !0 }
- return !1 }, _requestPOST: function(a, b) {
- var c = this,
- d = this.options.ajax,
- e = cartodb.core.Profiler.metric("cartodb-js.layergroup.post.time").start();
- d({ crossOrigin: !0, type: "POST", method: "POST", dataType: "json", contentType: "application/json", url: this._tilerHost() + this.endPoint + (a.length ? "?" + a.join("&") : ""), data: JSON.stringify(this.toJSON()), success: function(a) { e.end(), 0 === c._createMapCallsStack.length && (a.errors ? (cartodb.core.Profiler.metric("cartodb-js.layergroup.post.error").inc(), b(null, a)) : b(a)), c._requestFinished() }, error: function(a) { e.end(), cartodb.core.Profiler.metric("cartodb-js.layergroup.post.error").inc();
- var d = { errors: ["unknow error"] };
- 0 === a.status && (d = { errors: ["connection error"] });
- try { d = JSON.parse(a.responseText) } catch (f) {}
- 0 === c._createMapCallsStack.length && b(null, d), c._requestFinished() } }) }, _requestGET: function(a, b) {
- var c = this,
- d = this.options.ajax,
- e = JSON.stringify(this.toJSON()),
- f = this._getCompressor(e),
- g = c.JSONPendPoint || c.endPoint;
- f(e, 3, function(e) { a.push(e);
- var f = cartodb.core.Profiler.metric("cartodb-js.layergroup.get.time").start(),
- h = c.options.dynamic_cdn ? c._host() : c._tilerHost();
- d({ dataType: "jsonp", url: h + g + "?" + a.join("&"), jsonpCallback: c.options.instanciateCallback, cache: !!c.options.instanciateCallback, success: function(a) { f.end(), 0 === c._createMapCallsStack.length && (a.errors ? (cartodb.core.Profiler.metric("cartodb-js.layergroup.get.error").inc(), b(null, a)) : b(a)), c._requestFinished() }, error: function(a) { f.end(), cartodb.core.Profiler.metric("cartodb-js.layergroup.get.error").inc();
- var d = { errors: ["unknow error"] };
- try { d = JSON.parse(xhr.responseText) } catch (e) {}
- 0 === c._createMapCallsStack.length && b(null, d), c._requestFinished() } }) }) }, _getCompressor: function(a) {
- return this.options.compressor ? this.options.compressor : (a = a || JSON.stringify(this.toJSON()), !this.options.force_compress && a.length < this.options.MAX_GET_SIZE ? function(a, b, c) { c("config=" + encodeURIComponent(a)) } : function(a, b, c) { a = JSON.stringify({ config: a }), LZMA.compress(a, b, function(a) { c("lzma=" + encodeURIComponent(cdb.core.util.array2hex(a))) }) }) }, _requestFinished: function() {
- var a = this;
- if (this._waiting = !1, this.lastTimeUpdated = (new Date).getTime(), clearTimeout(this._refreshTimer), this._refreshTimer = setTimeout(function() { a.invalidate() }, this.options.refreshTime || 72e5), this._createMapCallsStack.length) {
- var b = this._createMapCallsStack.pop();
- this._createMap(b) } }, fetchAttributes: function(a, b, c, d) { this._attrCallbackName = this._attrCallbackName || this._callbackName();
- var e = this.options.ajax,
- f = cartodb.core.Profiler.metric("cartodb-js.named_map.attributes.time").start();
- e({ dataType: "jsonp", url: this._attributesUrl(a, b), jsonpCallback: "_cdbi_layer_attributes_" + this._attrCallbackName, cache: !0, success: function(a) { f.end(), d(a) }, error: function(a) { f.end(), cartodb.core.Profiler.metric("cartodb-js.named_map.attributes.error").inc(), d(null) } }) }, _callbackName: function() {
- return cdb.core.util.uniqueCallbackName(JSON.stringify(this.toJSON())) }, _attributesUrl: function(a, b) {
- var c = this._host(),
- d = [c, MapBase.BASE_URL.slice(1), this.mapProperties.getMapId(), this.mapProperties.getLayerIndexByType(this.getLayerIndexByNumber(a), "mapnik"), "attributes", b].join("/"),
- e = this.options.extra_params || {},
- f = e.auth_token;
- if (f)
- if (_.isArray(f)) {
- for (var g = [], h = 0, i = f.length; i > h; h++) g.push("auth_token[]=" + f[h]);
- d += "?" + g.join("&") } else d += "?auth_token=" + f;
- return d }, invalidate: function() { this.mapProperties = null, this.urls = null, this.onLayerDefinitionUpdated() }, getTiles: function(a) {
- var b = this;
- return b.mapProperties ? (a && a(b._layerGroupTiles(b.mapProperties, b.options.extra_params)), this) : (this.createMap(function(c, d) {
- if (c) b.mapProperties = new MapProperties(c), c.cdn_url && (b.options.cdn_url = b.options.cdn_url || {}, b.options.cdn_url = { http: c.cdn_url.http || b.options.cdn_url.http, https: c.cdn_url.https || b.options.cdn_url.https }), b.urls = b._layerGroupTiles(b.mapProperties, b.options.extra_params), a && a(b.urls);
- else if (null !== b.named_map && d) a && a(null, d);
- else if (0 === b.visibleLayers().length) return void(a && a({ tiles: [MapBase.EMPTY_GIF], grids: [] })) }), this) }, isHttps: function() {
- return 0 === this.options.maps_api_template.indexOf("https") }, _layerGroupTiles: function(a, b) {
- var c = [],
- d = [],
- e = this._encodeParams(b, this.options.pngParams),
- f = this._encodeParams(b, this.options.gridParams),
- g = this.options.subdomains || ["0", "1", "2", "3"];
- this.isHttps() && (g = [null]);
- var h = a.getLayerIndexesByType(this.options.filter);
- if (h.length)
- for (var i = "/" + h.join(",") + "/{z}/{x}/{y}", j = "/{z}/{x}/{y}", k = 0; k < g.length; ++k) {
- var l = g[k],
- m = this._host(l) + MapBase.BASE_URL + "/" + a.getMapId();
- d.push(m + i + ".png" + (e ? "?" + e : ""));
- for (var n = 0; n < this.layers.length; ++n) {
- var o = a.getLayerIndexByType(n, "mapnik");
- c[n] = c[n] || [], c[n].push(m + "/" + o + j + ".grid.json" + (f ? "?" + f : "")) } } else d = [MapBase.EMPTY_GIF];
- return { tiles: d, grids: c } }, _encodeParams: function(a, b) {
- if (!a) return "";
- var c = [];
- b = b || _.keys(a);
- for (var d in b) {
- var e = b[d],
- f = a[e];
- if (f)
- if (_.isArray(f))
- for (var g = 0, h = f.length; h > g; g++) c.push(e + "[]=" + encodeURIComponent(f[g]));
- else {
- var i = encodeURIComponent(f);
- i = i.replace(/%7Bx%7D/g, "{x}").replace(/%7By%7D/g, "{y}").replace(/%7Bz%7D/g, "{z}"), c.push(e + "=" + i) } }
- return c.join("&") }, onLayerDefinitionUpdated: function() {}, setSilent: function(a) { this.silent = a }, _definitionUpdated: function() { this.silent || this.invalidate() }, getTileJSON: function(a, b) { a = void 0 == a ? 0 : a;
- var c = this;
- this.getTiles(function(d) {
- return d ? void(b && b(c._tileJSONfromTiles(a, d))) : void b(null) }) }, _tileJSONfromTiles: function(a, b, c) {
- function d(a) {
- for (var b = [], c = 0; c < a.length; ++c) b.push(a[c].replace("{s}", e[c % e.length]));
- return b }
- c = c || {};
- var e = c.subdomains || ["0", "1", "2", "3"];
- return { tilejson: "2.0.0", scheme: "xyz", grids: d(b.grids[a]), tiles: d(b.tiles), formatter: function(a, b) {
- return b } } }, _tilerHost: function() {
- var a = this.options;
- return a.maps_api_template.replace("{user}", a.user_name) }, _host: function(a) {
- var b = this.options,
- c = b.cdn_url,
- d = !c || c && !c.http && !c.https;
- if (b.no_cdn || d) return this._tilerHost();
- var e = this.isHttps() ? "https" : "http",
- f = e + "://";
- a && (f += a + ".");
- var g = c[e];
- return this._isUserTemplateUrl(g) || (g += "/{user}"), f += g.replace("{user}", b.user_name) }, _isUserTemplateUrl: function(a) {
- return a && -1 !== a.indexOf("{user}") }, getLayer: function(a) {
- return _.clone(this.layers[a]) }, getLayerCount: function() {
- return this.layers ? this.layers.length : 0 }, getLayerIndexByNumber: function(a) {
- for (var b = {}, c = 0, d = 0; d < this.layers.length; ++d) {
- var e = this.layers[d];
- b[d] = c, e.options && !e.options.hidden && ++c }
- return b[a] }, getLayerNumberByIndex: function(a) {
- for (var b = [], c = 0; c < this.layers.length; ++c) {
- var d = this.layers[c];
- this._isLayerVisible(d) && b.push(c) }
- return a >= b.length ? -1 : +b[a] }, visibleLayers: function() {
- for (var a = [], b = 0; b < this.layers.length; ++b) {
- var c = this.layers[b];
- this._isLayerVisible(c) && a.push(c) }
- return a }, _isLayerVisible: function(a) {
- return a.options && "hidden" in a.options ? !a.options.hidden : a.visible !== !1 }, setLayer: function(a, b) {
- if (a < this.getLayerCount() && a >= 0) {
- if (b.options.hidden) {
- var c = this.interactionEnabled[a];
- c && (b.interaction = !0, this.setInteraction(a, !1)) } else this.layers[a].interaction && (this.setInteraction(a, !0), delete this.layers[a].interaction);
- this.layers[a] = _.clone(b) }
- return this.invalidate(), this }, getTooltipData: function(a) {
- var b = this.layers[a].tooltip;
- return b && b.fields && b.fields.length ? b : null }, getInfowindowData: function(a) {
- var b, c = this.layers[a].infowindow;
- return !c && this.options.layer_definition && (b = this.options.layer_definition.layers[a]) && (c = b.infowindow), c && c.fields && c.fields.length > 0 ? c : null }, containInfowindow: function() {
- for (var a = this.options.layer_definition.layers, b = 0; b < a.length; ++b) {
- var c = a[b].infowindow;
- if (c && c.fields && c.fields.length > 0) return !0 }
- return !1 }, containTooltip: function() {
- for (var a = this.options.layer_definition.layers, b = 0; b < a.length; ++b) {
- var c = a[b].tooltip;
- if (c && c.fields && c.fields.length) return !0 }
- return !1 }, getSubLayer: function(a) {
- var b = this.layers[a];
- return b.sub = b.sub || SubLayerFactory.createSublayer(b.type, this, a), b.sub }, getSubLayerCount: function() {
- return this.getLayerCount() }, getSubLayers: function() {
- for (var a = [], b = 0; b < this.getSubLayerCount(); ++b) a.push(this.getSubLayer(b));
- return a } }, LayerDefinition.layerDefFromSubLayers = function(a) {
- if (!a || void 0 === a.length) throw new Error("sublayers should be an array");
- a = _.map(a, function(a) {
- var b = a.type;
- return delete a.type, { type: b, options: a } });
- var b = { version: "1.3.0", stat_tag: "API", layers: a };
- return new LayerDefinition(b, {}).toJSON() }, LayerDefinition.prototype = _.extend({}, MapBase.prototype, { setLayerDefinition: function(a, b) { b = b || {}, this.version = a.version || "1.0.0", this.stat_tag = a.stat_tag, this.layers = _.clone(a.layers), b.silent || this._definitionUpdated() }, toJSON: function() {
- var a = {};
- a.version = this.version, this.stat_tag && (a.stat_tag = this.stat_tag), a.layers = [];
- for (var b = this.visibleLayers(), c = 0; c < b.length; ++c) {
- var d = this.getSubLayer(this.getLayerNumberByIndex(c));
- a.layers.push(d.toJSON()) }
- return a }, removeLayer: function(a) {
- return a < this.getLayerCount() && a >= 0 && (this.layers.splice(a, 1), this.interactionEnabled.splice(a, 1), this._reorderSubLayers(), this.invalidate()), this }, _reorderSubLayers: function() {
- for (var a = 0; a < this.layers.length; ++a) {
- var b = this.layers[a];
- b.sub && b.sub._setPosition(a) } }, addLayer: function(a, b) {
- if (b = void 0 === b ? this.getLayerCount() : b, b <= this.getLayerCount() && b >= 0) {
- var c = a.type || "cartodb";
- delete a.type, this.layers.splice(b, 0, { type: c, options: a });
- var d = this.getSubLayer(b);
- if (!d.isValid()) throw d.remove(), "Layer definition should contain all the required attributes";
- this._definitionUpdated() }
- return this }, setInteractivity: function(a, b) {
- if (void 0 === b && (b = a, a = 0), a >= this.getLayerCount() && 0 > a) throw new Error("layer does not exist"); "string" == typeof b && (b = b.split(","));
- for (var c = 0; c < b.length; ++c) b[c] = b[c].replace(/ /g, "");
- return this.layers[a].options.interactivity = b, this._definitionUpdated(), this }, setQuery: function(a, b) { void 0 === b && (b = a, a = 0), this.layers[a].options.sql = b, this._definitionUpdated() }, getQuery: function(a) {
- return a = a || 0, this.layers[a].options.sql }, setCartoCSS: function(a, b, c) { void 0 === c && (c = b, b = a, a = 0), c = c || cartodb.CARTOCSS_DEFAULT_VERSION, this.layers[a].options.cartocss = b, this.layers[a].options.cartocss_version = c, this._definitionUpdated() }, createSubLayer: function(a, b) {
- return this.addLayer(a), this.getSubLayer(this.getLayerCount() - 1) } }), NamedMap.prototype = _.extend({}, MapBase.prototype, { getSubLayer: function(a) {
- var b = this.layers[a];
- return b || (b = this.layers[a] = { options: {} }), b.sub = b.sub || SubLayerFactory.createSublayer(b.type, this, a), b.sub }, setLayerDefinition: function(a, b) { b = b || {}, this.endPoint = MapBase.BASE_URL + "/named/" + a.name, this.JSONPendPoint = MapBase.BASE_URL + "/named/" + a.name + "/jsonp", this.layers = _.clone(a.layers) || [];
- for (var c = 0; c < this.layers.length; ++c) {
- var d = this.layers[c];
- d.options = d.options || { hidden: d.visible === !1 }, d.options.layer_name = d.layer_name }
- this.named_map = a;
- var e = a.auth_token || b.auth_token;
- e && this.setAuthToken(e), b.silent || this.invalidate() }, setAuthToken: function(a) {
- if (!this.isHttps()) throw new Error("https must be used when map has token authentication");
- return this.options.extra_params = this.options.extra_params || {}, this.options.extra_params.auth_token = a, this.invalidate(), this }, setParams: function(a, b) {
- var c;
- 2 === arguments.length ? (c = {}, c[a] = b) : c = a, this.named_map.params || (this.named_map.params = {});
- for (var d in c) void 0 === c[d] || null === c[d] ? delete this.named_map.params[d] : this.named_map.params[d] = c[d];
- return this.invalidate(), this }, toJSON: function() {
- for (var a = this.named_map.params || {}, b = 0; b < this.layers.length; ++b) {
- var c = this.layers[b];
- a["layer" + b] = this._isLayerVisible(c) ? 1 : 0 }
- return a }, containInfowindow: function() {
- for (var a = this.layers || [], b = 0; b < a.length; ++b) {
- var c = a[b].infowindow;
- if (c && c.fields && c.fields.length > 0) return !0 }
- return !1 }, containTooltip: function() {
- for (var a = this.layers || [], b = 0; b < a.length; ++b) {
- var c = a[b].tooltip;
- if (c) return !0 }
- return !1 }, setSQL: function(a) {
- throw new Error("SQL is read-only in NamedMaps") }, setCartoCSS: function(a) {
- throw new Error("cartocss is read-only in NamedMaps") }, getCartoCSS: function() {
- throw new Error("cartocss can't be accessed in NamedMaps") }, getSQL: function() {
- throw new Error("SQL can't be accessed in NamedMaps") }, setLayer: function(a, b) {
- var c = { sql: 1, cartocss: 1, interactivity: 1 };
- for (var d in b.options)
- if (d in c) throw delete b.options[d], new Error(d + " is read-only in NamedMaps");
- return MapBase.prototype.setLayer.call(this, a, b) }, removeLayer: function(a) {
- throw new Error("sublayers are read-only in Named Maps") }, createSubLayer: function(a, b) {
- throw new Error("sublayers are read-only in Named Maps") }, addLayer: function(a, b) {
- throw new Error("sublayers are read-only in Named Maps") }, getLayerIndexByNumber: function(a) {
- return +a } }), SubLayerFactory.createSublayer = function(a, b, c) {
- if (a = a && a.toLowerCase(), a && "mapnik" !== a && "cartodb" !== a) {
- if ("http" === a) return new HttpSubLayer(b, c);
- throw "Sublayer type not supported" }
- return new CartoDBSubLayer(b, c) }, SubLayerBase.prototype = { toJSON: function() {
- throw "toJSON must be implemented" }, isValid: function() {
- throw "isValid must be implemented" }, remove: function() { this._check(), this._parent.removeLayer(this._position), this._added = !1, this.trigger("remove", this), this._onRemove() }, _onRemove: function() {}, toggle: function() {
- return this.get("hidden") ? this.show() : this.hide(), !this.get("hidden") }, show: function() { this.get("hidden") && this.set({ hidden: !1 }) }, hide: function() { this.get("hidden") || this.set({ hidden: !0 }) }, set: function(a) { this._check();
- var b = this._parent.getLayer(this._position),
- c = b.options;
- for (var d in a) c[d] = a[d];
- return this._parent.setLayer(this._position, b), void 0 !== a.hidden && this.trigger("change:visibility", this, a.hidden), this }, unset: function(a) {
- var b = this._parent.getLayer(this._position);
- delete b.options[a], this._parent.setLayer(this._position, b) }, get: function(a) { this._check();
- var b = this._parent.getLayer(this._position);
- return b.options[a] }, isVisible: function() {
- return !this.get("hidden") }, _check: function() {
- if (!this._added) throw "sublayer was removed" }, _unbindInteraction: function() { this._parent.off && this._parent.off(null, null, this) }, _bindInteraction: function() {
- if (this._parent.on) {
- var a = this,
- b = function(b, c) { c = c || b, a._parent.on(b, function() {
- var b = Array.prototype.slice.call(arguments);
- parseInt(b[b.length - 1], 10) == a._position && a.trigger.apply(a, [c].concat(b)) }, a) };
- b("featureOver"), b("featureOut"), b("featureClick"), b("layermouseover", "mouseover"), b("layermouseout", "mouseout") } }, _setPosition: function(a) { this._position = a } }, _.extend(SubLayerBase.prototype, Backbone.Events), CartoDBSubLayer.prototype = _.extend({}, SubLayerBase.prototype, {
- toJSON: function() {
- var a = { type: "cartodb", options: { sql: this.getSQL(), cartocss: this.getCartoCSS(), cartocss_version: this.get("cartocss_version") || "2.1.0" } },
- b = this.getInteractivity();
- if (b && b.length > 0) { a.options.interactivity = b;
- var c = this.getAttributes();
- c.length > 0 && (a.options.attributes = { id: "cartodb_id", columns: c }) }
- return this.get("raster") && (a.options.raster = !0, a.options.geom_column = "the_raster_webmercator", a.options.geom_type = "raster", a.options.raster_band = this.get("raster_band") || 0, a.options.cartocss_version = this.get("cartocss_version") || "2.3.0"), a },
- isValid: function() {
- return this.get("sql") && this.get("cartocss") },
- _onRemove: function() { this._unbindInteraction() },
- setSQL: function(a) {
- return this.set({ sql: a }) },
- setCartoCSS: function(a) {
- return this.set({ cartocss: a }) },
- setInteractivity: function(a) {
- return this.set({ interactivity: a }) },
- setInteraction: function(a) { this._parent.setInteraction(this._position, a) },
- getSQL: function() {
- return this.get("sql") },
- getCartoCSS: function() {
- return this.get("cartocss") },
- getInteractivity: function() {
- var a = this.get("interactivity");
- return a ? ("string" == typeof a && (a = a.split(",")), this._trimArrayItems(a)) : void 0
- },
- getAttributes: function() {
- var columns = [];
- if (this.get('attributes')) {
- columns = this.get('attributes');
- } else if(this.infowindow) {
- columns = _.map(this.infowindow.get('fields'), function(field){
- return field.name;
- });
- }
- return this._trimArrayItems(columns);
- // var a = [];
- // return a = this.get("attributes") ? this.get("attributes") : _.map(this.infowindow.get("fields"), function(a) {
- // return a.name }), this._trimArrayItems(a)
- },
- _trimArrayItems: function(a) {
- return _.map(a, function(a) {
- return a.trim() }) }
- }), HttpSubLayer.prototype = _.extend({}, SubLayerBase.prototype, { toJSON: function() {
- var a = { type: "http", options: { urlTemplate: this.getURLTemplate() } },
- b = this.get("subdomains");
- b && (a.options.subdomains = b);
- var c = this.get("tms");
- return void 0 !== c && (a.options.tms = c), a }, isValid: function() {
- return this.get("urlTemplate") }, setURLTemplate: function(a) {
- return this.set({ urlTemplate: a }) }, setSubdomains: function(a) {
- return this.set({ subdomains: a }) }, setTms: function(a) {
- return this.set({ tms: a }) }, getURLTemplate: function(a) {
- return this.get("urlTemplate") }, getSubdomains: function(a) {
- return this.get("subdomains") }, getTms: function(a) {
- return this.get("tms") } });
- var Loader = cdb.vis.Loader = cdb.core.Loader = { queue: [], current: void 0, _script: null, head: null, loadScript: function(a) {
- var b = document.createElement("script");
- return b.type = "text/javascript", b.src = a, b.async = !0, Loader.head || (Loader.head = document.getElementsByTagName("head")[0]), setTimeout(function() { Loader.head.appendChild(b) }, 0), b }, get: function(a, b) { Loader._script ? Loader.queue.push([a, b]) : (Loader.current = b, Loader._script = Loader.loadScript(a + (~a.indexOf("?") ? "&" : "?") + "callback=vizjson")) }, getPath: function(a) {
- var b = document.getElementsByTagName("script"),
- c = /\/?cartodb[\-\._]?([\w\-\._]*)\.js\??/;
- for (i = 0, len = b.length; i < len; i++)
- if (src = b[i].src, matches = src.match(c), matches) {
- var d = src.split("/");
- return delete d[d.length - 1], d.join("/") + a }
- return null }, loadModule: function(a) {
- var b = "cartodb.mod." + a + (cartodb.DEBUG ? ".uncompressed.js" : ".js"),
- c = this.getPath(b);
- c || cartodb.log.error("can't find cartodb.js file"), Loader.loadScript(c) } };
- window.vizjson = function(a) { Loader.current && Loader.current(a), Loader.head.removeChild(Loader._script), Loader._script = null;
- var b = Loader.queue.shift();
- b && Loader.get(b[0], b[1]) },
- function() { Queue = function() { this._methods = [], this._response = null, this._flushed = !1 }, Queue.prototype = { add: function(a) { this._flushed ? a(this._response) : this._methods.push(a) }, flush: function(a) {
- if (!this._flushed)
- for (this._response = a, this._flushed = !0; this._methods[0];) this._methods.shift()(a) } }, StaticImage = function() { MapBase.call(this, this), this.imageOptions = {}, this.error = null, this.supported_formats = ["png", "jpg"], this.defaults = { basemap_url_template: "http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png", basemap_subdomains: ["a", "b", "c"], format: "png", zoom: 10, center: [0, 0], size: [320, 240], tiler_port: 80, tiler_domain: "carto.com" } }, StaticImage.prototype = _.extend({}, MapBase.prototype, { load: function(a, b) {
- return _.bindAll(this, "_onVisLoaded"), this.queue = new Queue, this.no_cdn = b.no_cdn, this.userOptions = b, b = _.defaults({ vizjson: a, temp_id: "s" + this._getUUID() }, this.defaults), this.imageOptions = b, cdb.core.Loader.get(a, this._onVisLoaded), this }, loadLayerDefinition: function(a, b) {
- return this.queue = new Queue, a.user_name ? (this.userOptions = b, this.options.api_key = a.api_key, this.options.user_name = a.user_name, this.options.tiler_protocol = a.tiler_protocol, this.options.tiler_domain = a.tiler_domain, this.options.tiler_port = a.tiler_port, this.options.maps_api_template = a.maps_api_template, this.endPoint = "/api/v1/map", this.options.maps_api_template || this._buildMapsApiTemplate(this.options), this.options.layers = a, void this._requestLayerGroupID()) : void cartodb.log.error("Please, specify the username") }, _onVisLoaded: function(a) {
- if (a) {
- var b = a.layers[0],
- c = this._getDataLayer(a.layers);
- c.options && (this.options.user_name = c.options.user_name), c.options.maps_api_template ? this.options.maps_api_template = c.options.maps_api_template : this._setupTilerConfiguration(c.options.tiler_protocol, c.options.tiler_domain, c.options.tiler_port), this.auth_tokens = a.auth_tokens, this.endPoint = "/api/v1/map";
- var d = [],
- e = a.bounds;
- e && (d.push([e[0][1], e[0][0]]), d.push([e[1][1], e[1][0]])), this.imageOptions.zoom = a.zoom, this.imageOptions.center = JSON.parse(a.center), this.imageOptions.bbox = d, this.imageOptions.bounds = a.bounds, b && b.options && (this.imageOptions.basemap = b);
- var f = !1,
- g = this._getLayerByType(a.layers, "namedmap");
- if (g) {
- var h = this._getLayerByType(a.layers, "torque");
- h && h.options && h.options.named_map && h.options.named_map.name === g.options.named_map.name && (f = !0) }
- var i = [],
- j = this._getBasemapLayer();
- j && i.push(j);
- for (var k, l = 1; l < a.layers.length; l++) {
- var m = a.layers[l];
- if ("torque" !== m.type || f) {
- if ("namedmap" === m.type) i.push(this._getNamedmapLayerDefinition(m));
- else if ("tiled" === m.type) k = this._getHTTPLayer(m);
- else if ("torque" !== m.type && "namedmap" !== m.type)
- for (var n = this._getLayergroupLayerDefinition(m), o = 0; o < n.length; o++) i.push(n[o]) } else i.push(this._getTorqueLayerDefinition(m)) }
- k && i.push(k), this.options.layers = { layers: i }, this._requestLayerGroupID() } }, _getDataLayer: function(a) {
- return this._getLayerByType(a, "namedmap") || this._getLayerByType(a, "layergroup") || this._getLayerByType(a, "torque") }, visibleLayers: function() {
- return this.options.layers.layers }, _getLayerByType: function(a, b) {
- return _.find(a, function(a) {
- return a.type === b }) }, _setupTilerConfiguration: function(a, b, c) { this.options.tiler_domain = b, this.options.tiler_protocol = a, this.options.tiler_port = c, this._buildMapsApiTemplate(this.options) }, toJSON: function() {
- return this.options.layers }, _requestLayerGroupID: function() {
- var a = this;
- this.createMap(function(b, c) { c && (a.error = c), b && (a.imageOptions.layergroupid = b.layergroupid, a.cdn_url = b.cdn_url), a.queue.flush(this) }) }, _getDefaultBasemapLayer: function() {
- return { type: "http", options: { urlTemplate: this.defaults.basemap_url_template, subdomains: this.defaults.basemap_subdomains } } }, _getHTTPLayer: function(a) {
- var b = a.options.urlTemplate;
- return b ? { type: "http", options: { urlTemplate: b, subdomains: a.options.subdomains || this.defaults.basemap_subdomains } } : null }, _getPlainBasemapLayer: function(a) {
- return { type: "plain", options: { color: a } } }, _getBasemapLayer: function() {
- var a = this.userOptions.basemap || this.imageOptions.basemap;
- if (a) {
- var b = a.type.toLowerCase();
- return a.options && a.options.type && (b = a.options.type.toLowerCase()), "plain" === b ? this._getPlainBasemapLayer(a.options.color) : this._getHTTPLayer(a) }
- return this._getDefaultBasemapLayer() }, _getTorqueLayerDefinition: function(a) {
- if (a.options.named_map) return this._getNamedmapLayerDefinition(a);
- var b = new LayerDefinition(a, a.options),
- c = b.options.query || "SELECT * FROM " + b.options.table_name,
- d = a.options.tile_style;
- return { type: "torque", options: { step: this.userOptions.step || 0, sql: c, cartocss: d } } }, _getLayergroupLayerDefinition: function(a) {
- var b = a.options;
- b.layer_definition.layers = this._getVisibleLayers(b.layer_definition.layers);
- var c = new LayerDefinition(b.layer_definition, b);
- return c.toJSON().layers }, _getNamedmapLayerDefinition: function(a) {
- var b = a.options,
- c = new NamedMap(b.named_map, b),
- b = { name: c.named_map.name };
- return this.auth_tokens && this.auth_tokens.length > 0 && (b.auth_tokens = this.auth_tokens), { type: "named", options: b } }, _getVisibleLayers: function(a) {
- return _.filter(a, function(a) {
- return a.visible }) }, _getUrl: function() {
- var a = (this.options.user_name, this.imageOptions.bbox),
- b = this.imageOptions.layergroupid,
- c = this.imageOptions.zoom || this.defaults.zoom,
- d = this.imageOptions.center || this.defaults.center,
- e = this.imageOptions.size || this.defaults.size,
- f = this.imageOptions.format || this.defaults.format,
- g = d[0],
- h = d[1],
- i = e[0],
- j = e[1],
- k = this.isHttps() ? null : "a",
- l = this._host(k) + this.endPoint;
- return a && a.length && !this.userOptions.override_bbox ? [l, "static/bbox", b, a.join(","), i, j + "." + f].join("/") : [l, "static/center", b, c, g, h, i, j + "." + f].join("/") }, _getUUID: function() {
- var a = function() {
- return (65536 * (1 + Math.random()) | 0).toString(16).substring(1) };
- return a() + a() + "-" + a() + "-" + a() + "-" + a() + "-" + a() + a() + a() }, _set: function(a, b) {
- var c = this;
- return this.queue.add(function() { c.imageOptions[a] = b }), this }, zoom: function(a) {
- return this._set("zoom", a) }, bbox: function(a) {
- return this._set("bbox", a) }, center: function(a) {
- return this._set("bbox", null), this._set("center", a) }, format: function(a) {
- return this._set("format", _.include(this.supported_formats, a) ? a : this.defaults.format) }, size: function(a, b) {
- return this._set("size", [a, void 0 === b ? a : b]) }, into: function(a) {
- var b = this;
- return a instanceof HTMLImageElement ? (this.imageOptions.size = [a.width, a.height], void this.queue.add(function(c) { a.src = b._getUrl() })) : void cartodb.log.error("img should be an image") }, getUrl: function(a) {
- var b = this;
- this.queue.add(function() { a && a(b.error, b._getUrl()) }) }, write: function(a) {
- var b = this;
- return this.imageOptions.attributes = a, a && a.src ? document.write('<img id="' + this.imageOptions.temp_id + '" src="' + a.src + '" />') : document.write('<img id="' + this.imageOptions.temp_id + '" />'), this.queue.add(function() {
- var a = document.getElementById(b.imageOptions.temp_id);
- a.src = b._getUrl(), a.removeAttribute("temp_id");
- var c = b.imageOptions.attributes;
- c && c["class"] && a.setAttribute("class", c["class"]), c && c.id && a.setAttribute("id", c.id) }), this } }), cdb.Image = function(a, b) { b || (b = {});
- var c = new StaticImage;
- return "string" == typeof a ? c.load(a, b) : c.loadLayerDefinition(a, b), c } }(),
- function() {
- var a = this;
- a.cartodb = a.cartodb || {};
- var b = { tiler_domain: "carto.com", tiler_port: "80", tiler_protocol: "http", subdomains: ["{s}"], extra_params: { cache_policy: "persist" } },
- c = function(a) {
- if (_.defaults(a, b), !a.sublayers) throw new Error("sublayers should be passed");
- if (!a.user_name) throw new Error("username should be passed");
- a.layer_definition = LayerDefinition.layerDefFromSubLayers(a.sublayers), a.ajax = reqwest.compat, LayerDefinition.call(this, a.layer_definition, a) };
- _.extend(c.prototype, LayerDefinition.prototype), a.cartodb.Tiles = c, c.getTiles = function(a, b) {
- var d = new c(a);
- return d.getTiles(b), d } }()
- }();
|