1!function(e,t,r){function n(){var e=firebase.auth().currentUser;return null!==e&&e.uid}function i(){var e=n();return!!e&&{userEnv:(c=e.split("/"))[0],userID:c[1]}}function o(){var e=i();return!e&&!isLoggedIn()||e.userID==t.user_id}function a(e){return String(e)}if(t.firebase){var s,c,l=e(r),d=0;s=firebase.firestore.FieldValue,t.FS_FV={del:s["delete"],arrRemove:s.arrayRemove,arrConcat:s.arrayUnion,incr:s.increment,ts:s.serverTimestamp},Object.freeze(t.FS_FV),t.VizFirebase=function(){function t(){firebase.auth().onAuthStateChanged(function(e){var t,r=isUndef(firebase.auth().previousUserID);e?(t=firebase.auth().previousUserID===e.uid,r?F("FirebaseUser: "+e.uid):t?w("FirebaseUser: "+e.uid+" reauthorized"):F("FirebaseUser: "+e.uid+" has logged in"),firebase.auth().previousUserID=e.uid):(t=null===firebase.auth().previousUserID,r?F("FirebaseUser: None"):t?w("FirebaseUser: None"):F("FirebaseUser: "+firebase.auth().previousUserID+" has logged out"),firebase.auth().previousUserID=null),W.resolve()})}function i(){F("trigger: firebase_login_ready"),l.trigger("firebase_login_ready")}function o(){F("VizFirebase.afterAccountLinks"),W.done(function(){var e=n();!e&&isLoggedIn()&&firebaseAuthJWT?m(firebaseAuthJWT,i):e&&!isLoggedIn()?v():isLoggedIn()&&i()})}function a(){return U||(U=!0,s()),k}function s(){F("setupVersionWrappers"),D||(D=new FirestoreWrap({global:!0,colPath:"dataModelVersions"})),S||(S=new FirestoreWrap({docId:"_user_",createIfDNE:!0})),e.when(D.ready,S.ready).done(function(){l.on(S.evtName,f),u()})}function u(){if(F("checkUserModelVersion..."),!S.exists())throw"User Root Document should exist, but does not";var t=D.get("current").minWebVersion,r=S.get().dataModelVersion;if(!r)return F(" ... initialize data model version (done)"),void S.update({dataModelVersion:t});if(S.get().upgradeInProgress)f();else{if(r>=t)return F(" ... userVersion >= minVersion (done)"),void g(r);F("userModelVersion("+r+") < minWebVersion("+t+")"),F(" ... processing upgrade via AJAX (pending)");var n=e.ajax({type:"POST",url:"/account/upgrade_model",data:{target_version:t},dataType:"json"});n.done(function(){}),n.fail(function(e,r){C=!0;var n="There was a problem updating your data to version "+t+'. Please contact <a class="color-mid-gray hover-red" data-modal-btn href="javascript:void(\'feedback\')" onclick="Modals.toggle(\'#modal-feedback\'); return false;">Customer Service</a> with this information.';showErr(r,n),I(n+"\n"+e.responseText)})}}function f(){if(F("isUpgradeInProgress?"),!C)if(S.get().upgradeInProgress){if(k)return void p(M);k=!1,p(R)}else{var e=S.get().dataModelVersion;if(k&&j!=e)return void p(M);p(V),g(e)}}function p(e){var t=D.get("defaultMessages");if(e==R)c=t.migration||"Hang on a second, we have some housekeeping to do.",showWait("Please wait...",c);else if(e==M)l.off(S.evtName),c=t.refresh||"A new version of viz.com is needed.",showInfo("Upgrading...",c,"Refresh",function(){r.location.reload()});else if(e==V){var n=Modals.getOnModal();n.length&&"modal-wait"==n.attr("id")&&Modals.close()}}function g(e){var t="firebase_version_checked";k=!0,j=e,F("trigger event: "+t),l.trigger(t)}function m(e,t){isFn(t)||(t=function(){});var r="firebaseLogin";firebase.auth().signInWithCustomToken(e).then(function(){F(r+" success"),t()})["catch"](function(e){I(e.message,r)})}function h(e){if(!e)return!!x;e>0&&x++,e<0&&h()&&x--}function v(e){if(!h()){h(1),isFn(e)||(e=function(){});var t="firebaseLogout";firebase.auth().signOut().then(function(){F(t+" success"),h(-1),e()})["catch"](function(e){I(e,t),h(-1)})}}function _(t,r){var n="firebase_login_ready";l.one(n,r),e("#modal-login .modal-close").one("click",function(){l.off(n,r)}),showExpiredSessionLinks(t)}function b(){e.post("/account/extend_session")}function y(){var e={logEvent:c=function(){w("Firebase.analytics() is unsupported in this browser")},setAnalyticsCollectionEnabled:c,setCurrentScreen:c,setUserId:c,setUserProperties:c};return firebase.analytics?firebase.analytics():e}function F(e){cl(z+")",e)}function w(e){console.warn(z+")","WARNING:",e)}function I(e,t){console.error(z+")","VizFirebase-Error ("+t+"): ",e)}var D,S,W=e.Deferred(),U=!1,k=!1,C=!1,j=0,V=0,M=1,R=2,x=0;y();var z=++d;t(),l.on("post_account_links",o),l.on("viz_session_expired",function(){setTimeout(v,500)});var P={initFirestore:a,extend:b,onfail:_,fsUserDoc:function(){return S},analytics:y,initDeferred:W.promise()};return Object.freeze(P),P}(),t.FirestoreWrap=function(r){function s(e){cl(z+")",e)}function u(e){console.warn(z+")","WARNING:",e)}function f(e,t){console.error(z+")","FirestoreWrap-Error ("+t+"): ",e)}function p(t){if(!isObj(t))throw["Firestore update argument must be an object. GOT:",t];e.each(t,function(e,t){if(isUndef(t))throw["Firestore cannot take Undefined values (NULL ok). GOT:",e,t]})}function g(){Z={},e.each(ee,function(e,t){Z[t.id]=e})}function m(e){var t=!0;return K||n()?t=!1:e||u("FireStore read denied - no user auth"),t}function h(e){var t,r=!0;return K?t="- global read only":n()?r=!1:t="- no user auth",!e&&t&&u("FireStore write denied "+t),r}function v(){return!!J}function _(e){return(e=a(e))in Z}function b(e){if(m(!0))return!1;if(e)return Z;for(var t in c={},Z)c[t]=ee[Z[t]].data();return c}function y(){return!m(!0)&&e.map(ee,function(e){return(c=e.data()).docID=e.id,c})}function F(){return!m(!0)&&(J?J.data():null)}function w(e){return!m(!0)&&((e=a(e))in Z?ee[Z[e]].data():null)}function I(){$&&setTimeout(function(){E.unsubscribe("noRealtime")},2e3)}function D(e){var t;e.exists?(t="updated",J?JSON.stringify(J.data())===JSON.stringify(e.data())&&(t="noop"):t="found",t+=e.metadata.fromCache?" (from-cache)":" (server)",J=e):isUndef(J)?(J=null,te?(W({}),t="added"):t="missing"):(t="deleted",J=null),"noop"!=t&&(s((K?"global ":"")+"Document '"+(c=B?"userDocument":X+"/"+q)+"' "+t),"added"!=t&&("pending"===Y.state()?Y.resolve():"resolved"===Y.state()&&(s("trigger event: "+A),l.trigger(A)),I()))}function S(t){var r,n={};
1if(t.docChanges().forEach(function(e){r=e.type,n[r]=n[r]||[],n[r].push(e.doc.id),["added","modified","removed"].includes(r)||u("Col-Watcher Unknown modification type Found: "+r)}),!e.isEmptyObject(n)){for(r in c=K?"global ":"",c+="_Collection '"+X+"' document changes: ",c+=t.metadata.fromCache?"(from-cache)":"(server)",n)c+="\n "+r+" > "+n[r].join(",");s(c)}clearTimeout(H),H=setTimeout(function(){ee=t.docs,Z={},g(),"pending"===Y.state()?Y.resolve():"resolved"===Y.state()&&(s("trigger event: "+A),l.trigger(A)),I()},500)}function W(e){if(h())return!1;try{k(q,N.doc(q),e)}catch(t){return f(t,"set"),!1}return!0}function U(e,t){if(h())return!1;e=a(e);try{k(e,N.doc(e),t)}catch(r){return f(r,"set"),!1}return!0}function k(e,t,r){p(r);var n=Object.assign({},r,{_id:e,_updatedAt:FS_FV.ts()});t.set(n,{merge:!0}).then(function(){c="Document ("+e+") Modified",$&&(c+=" on fs-server only"),s(c),Q.extend()})["catch"](function(e){f(e,"set")})}function C(){return!h()&&(J&&(V(J),J=null),!0)}function j(e){return!h()&&((e=a(e))in Z&&(c=Z[e],V(ee[c]),$&&(ee.splice(c,1),g())),!0)}function V(e){e.ref["delete"]().then(function(){s("Document Deleted")})["catch"](function(e){f(e,"del")}),Q.extend()}function M(){s("Init baseCollectionRef");var e="environments/"+fsDataEnv;if(K)e+="/nouser/global/"+X;else{var t=i().userID;e+="/users",B?q=t:e+="/"+t+"/"+X}N=firebase.firestore().collection(e)}function R(){N||M(),c=N,q?c=N.doc(q):G&&(e.each(G,function(e,t){isArray(t)&&3==t.length?("documentId"==t[0]&&(t[0]=firebase.firestore.FieldPath.documentId()),c=c.where(t[0],t[1],t[2])):u(["Invalid where conditional. GOT:",t])}),s("+++Added Filters")),T=c.onSnapshot(O,function(e){f(e,"watcher")}),s("syncing for updates"),$||K||l.one("viz_session_expired",function(){E.unsubscribe("session expired")})}function x(e){var t,r,n=e.hasOwnProperty("docId");if(e.hasOwnProperty("docID")){if(n)throw"FirestoreWrap error: ambiguious doc id. Check your code!";console.warn('FirestoreWrap "docID" corrected to "docId"'),e.docId=e.docID,delete e.docID,n=!0}if(n){if((r=a(t=e.docId).trim()).indexOf("/")>=0)throw'FirestoreWrap error: docId cannot contain "/"';if(!t&&0!==t||0==r.length)throw"FirestoreWrap error: docId when given should be a non-empty string or positive integer"}return t}var z=++d;r=r||{};var P,O,T,N,A,E,L,H,G,J,q,B,Q=t.VizFirebase,X=r.colPath,$=!!r.noRealtime,K=!!r.global,Y=e.Deferred(),Z={},ee=[],te=!!r.createIfDNE;try{if(L=x(r),B="_user_"===L,!(this instanceof FirestoreWrap))throw'FirestoreWrap error: must be called as a constructor (use "new" keyword)';if(K&&B)throw'FirestoreWrap init Failed: Unsupported "global" "_user_"';if(B)A="userDoc";else{if(!isStr(X))throw"FirestoreWrap error: colPath must be a string";if(!(c=K?firestoreCollections.nouser:firestoreCollections.users).includes(X))throw"FirestoreWrap init Failed: Unrecognized colPath: "+X;A=X}}catch(re){return f(re,"new FirestoreWrap()"),Y.reject("Wrapper initialization error"),{ready:Y.promise()}}return s("FirestoreWrap Initializing: "+(c=[X,L].filter(function(e){return!!e})).join("/")),A="fsw_changed_"+A+"_"+createUUID().slice(0,15),K||(P=Q.initFirestore()),L?(B||(q=a(L)),E={get:F,del:C,update:W,exists:v},O=D):(c=r.filters,isArray(c)&&c.length&&(G=c),E={hash:b,list:y,get:w,del:j,update:U,exists:_},O=S),E.evtName=A,E.ready=Y.promise(),E.unsubscribe=function(e){return isFn(T)?(s("Unsubscribed from updates"+(e=e?[" (",e,")"].join(""):"")),T(),T=null,!0):null},Q.initDeferred.done(function(){if(!K)return B?(o()&&n()?R():l.one("firebase_login_ready",R),void l.one("firebase_version_checked",function(){l.on("firebase_login_ready",R)})):void(P?(o()&&n()&&R(),l.on("firebase_login_ready",R)):l.one("firebase_version_checked",function(){R(),l.on("firebase_login_ready",R)}));R()}),s("Wrapper created for "+(B?"userDocument":X)),s(" Ready to use when '.ready' deferred is complete"),$||s(" ...listen for updates upon each '.evtName' ("+A+")"),Object.freeze(E),E}}}(jQuery,window,document),function(e,t,r){t.FirestoreWrap&&t.VizFirebase?t.Following=function(){function n(e){return"on"==e.attr("data-follow-state")}function i(e,t){e.attr("data-follow-state",t?"on":"off")}function o(){t.followPage&&(isLoggedIn()?_||(c(y),FSW[y].ready.done(function(){_++;var e=FSW[y].get();e&&e.isFavorited&&i(m,!0),d(m),s()})):s())}function a(e,t){var r;isFn(e)?r=e():(c(b),r=FSW[b].ready.then(function(){return Object.keys(FSW[b].hash())})),r.done(u),isFn(t)&&r.done(t)}function s(){m.removeClass("disp-n"),h.trigger("post_follow_links")}function c(e){if(!FSW[e]){var t={noRealtime:!0,colPath:"series"};e==y?t.docId=m.data("follow").fsId:t.filters=[["isFavorited","==",!0]],FSW[e]=new FirestoreWrap(t)}}function l(r){var o=e(r),a=o.data("follow"),s=!n(o),u=a.type,f="property"==u,p="chapter_series"==u,g={favoriteSource:"web",isFavorited:s};if(f)g.favoriteEntity="property",g.pbPropertyId=a.id;else{if(!p)return;g.favoriteEntity="series",g.mangaSeriesCommonId=a.id}c(y),FSW[y].ready.then(function(){return FSW[y].update(g)}).done(function(e){if(e){var r=VizFirebase.fsUserDoc();if(r.get().syncNeeded||r.update({syncNeeded:!0}),i(o,s),d(o),Tracking.sendEvent({category:(f?"Property":"Chapter Series")+" Follow",action:s?"Follow":"Unfollow",label:t.followLabel||"__undefined__"}),s){var n={action:"follow",dataFields:{type:f?"property":"chapterSeries",typeName:a.eventId,source:"web"}};Tracking.sendIterableEvent(n)}s&&h.trigger(u+"_followed")}else VizFirebase.onfail(" to modify your favorite",function(){l(o)})})}function d(e){e.find("span").addClass("disp-n"),n(e)?e.find(".follow_stop").removeClass("disp-n"):e.find(".follow_start").removeClass("disp-n")}function u(r){var n=[],i=[];t.latest_chapter_meta&&t.vanity_to_ids?(e.each(r,function(t,r){var o;if(!(o=vanity_to_ids[r]))return console.warn("vanity_to_ids does not exist for vanity: "+r),!0;n.push(o.pb_property_id),latest_chapter_meta[o.msc_id]&&("sj"==latest_chapter_meta[o.msc_id].subscription_type?e("#sj_chapter_followings").html(""):"vm"==latest_chapter_meta[o.msc_id].subscription_type&&e("#vm_chapter_followings").html(""),i.push(o.msc_id))}
1),n=n.filter(Boolean),i=i.filter(Boolean),n.length&&(e("#series_followings").html(""),e.each(n,p),gridClassUpdate(e("#series_followings .p-cs-tile"),{2:"g-omega",4:"g-omega--md"})),i.length&&(i.sort(function(e,t){var r=latest_chapter_meta[e].ts,n=latest_chapter_meta[t].ts;return r<n?1:r>n?-1:0}),e.each(i,g),gridClassUpdate(e("#sj_chapter_followings .p-cs-tile"),{2:"g-omega",4:"g-omega--md"}),gridClassUpdate(e("#vm_chapter_followings .p-cs-tile"),{2:"g-omega",4:"g-omega--md"}),initProductSort({2:"g-omega",4:"g-omega--md"})),lazyLoadImages()):console.error(v+"(tiles | latest_chapter)")}function f(t,r){var n,i,o;return(o=tile_meta[t][r])?(n=e("#template_"+t)[0].content.cloneNode(!0),(i=e(n).find(".p-cs-tile")).find("a:first-child").attr("href",o.href).attr("rel",o.name.replace(/ /g," ")),i.find("img").attr("data-original",o.img_url).attr("alt",""),i.find("div:last-child").html(o.name),i.meta_data=o,i):null}function p(t,r){var n=f("property",r);e("#series_followings").append(n)}function g(t,r){var n,i,o;if(n=latest_chapter_meta[r],i=f("series",r),!n||!i)return!0;(o=i.find(".o_inner-link")).attr("href",n.url+"?action=read"),o.find("span:first-child").html(n.text),o.find("span:last-child").html(n.date),i.attr("data-sort-recent",t+1),i.attr("data-sort-alpha-label",i.meta_data.label),"sj"==n.subscription_type?e("#sj_chapter_followings").append(i):"vm"==n.subscription_type&&e("#vm_chapter_followings").append(i)}var m,h=e(r),v="Required MetaData is missing: meta/",_=0,b="all_fav_series",y="one_series";h.ready(function(){m=e(".o_follow-link").first()}),h.on("post_account_links",o),h.on("property_followed chapter_series_followed",function(){if(Modals.context.confirmationMsg){var t="#modal-thanks",r=e(t);if(Modals.isThanksOn()){var n=e("h2",r).html(),i=Modals.context.confirmationMsg;/[.!?]$/.test(i)||(i+="."),e("h2",r).html(n+"<br>"+i)}else Modals.toggle(t),e("h2",r).html(Modals.context.confirmationMsg);Modals.resizeModal()}});var F={init_multi:a,state:n,change:l};return Object.freeze(F),F}():console.warn("ABORT: (following) Firebase is missing/broken on this page")}(jQuery,window,document),function(e,t,r){t.FirestoreWrap&&t.VizFirebase?t.VizReadHistory=function(){function n(e){return e.replace(/\s/g," ")}function i(e){return FSW[e]&&"resolved"===FSW[e].ready.state()}function o(t,r){if(!FSW[t]){var n={noRealtime:!0};isArray(r)||(r=[r]);try{switch(t){case z:if(!r[0])throw"series requires vanity_slug";n.docId=r[0];case M:n.colPath="series",n.filters=[[C,">",b]];break;case x:n.colPath="series",n.filters=[["documentId","in",r.slice(0,10)]];break;case P:if(!r[0])throw"manga requires mc_id";n.docId=r[0];case R:n.colPath="manga",n.filters=[[j,"!=",""]]}}catch(i){return console.error(i),e.Deferred().reject()}FSW[t]=new FirestoreWrap(n)}return FSW[t].ready}function a(e,t){var r,n,i,o;return r={vanity:e,mscID:(n=vanity_to_ids[e]||{}).msc_id||t[k],propID:n.pb_property_id,mcID:t[U],label:t[W],volnum:t[D],chnum:t[I],ts:t[j].seconds,sort:t[C].toDate(),isComplete:t[S]},i=tile_meta.series[r.mscID]||{},o=tile_meta.property[r.propID]||{},[i.name,o.name].includes(r.label)&&(r.label=""),r.propID=r.propID||i.propID,r}function s(){return t.vanity_to_ids&&t.last_chapter_meta?o(M).then(function(){var t=[],r=e.Deferred(),i=FSW[M].list();return i?(e.each(i,function(e,r){var i=a(r.docID,r),o=!1;if(i.isComplete&&(y=last_chapter_meta[i.mscID],(i.volnum||y&&!n(y.text).endsWith(n(i.label)))&&(o=!0)),o){var s={};s[S]=!1,FSW[M].update(r.docID,s),i.isComplete=!1}t.push(i)}),t.reverse(),r.resolve(t)):r.reject(),r}):(console.error(w+"(tiles and/or manga).js"),e.Deferred().reject())}function c(r,n){return t.vanity_to_ids?(n=n||!1,o(x,r).then(function(){var t=[],r=e.Deferred(),i=FSW[x].list();return i?(e.each(i,function(e,r){r[C]&&(n||r[C].toDate()>b)&&t.push(a(r.docID,r))}),t.sort(function(e,t){var r=0;return e.sort<t.sort?r=1:e.sort>t.sort&&(r=-1),r}),r.resolve(t)):r.reject(),r})):(console.error(w+"tiles.js"),e.Deferred().reject())}function l(t){return o(P,t).then(function(){var t=FSW[P].get(),r=e.Deferred();return!1===t?r.reject():null!==t&&t[j]?r.resolve(t[V]):r.resolve(null),r})}function d(e){var t={},r={};t[U]=e.mcID,t[k]=e.mscID,t[j]=FS_FV.ts(),t[C]=FS_FV.ts(),t[W]=e.label,r[V]=e.pg,r[j]=FS_FV.ts(),e.ch&&(t[I]=e.ch,t[D]=FS_FV.del()),e.vol&&(t[D]=e.vol,t[I]=FS_FV.del()),e.DMcomplete&&e.isLastChpt&&(t[S]=!0),o(z,e.vanity).done(function(){FSW[z].update(t)}),o(P,e.mcID).done(function(){FSW[P].update(r)})}function u(e){if(!i(M))return null;var t={};return t[C]=b,(y=FSW[M].update(e,t))||cl("Delete failed: Session expired."),y}function f(t){t.preventDefault();var r=e(t.target).closest(".p-cs-tile"),n=r.data("vanity");(y=u(n))?(r.remove(),F.trigger("after_cr_tiles_rendered")):showRefresh()}function p(t){return _=t||!1,s().then(function(t){var r=e.Deferred();return v.empty(),t.length&&(e.each(t,g),v.on("click",".hide-hist-btn",f)),v.attr("data-total",t.length).attr("data-shown",v.children().length),F.trigger("after_cr_tiles_rendered"),r.resolve(),lazyLoadImages(),r})}function g(t,r){var n,i,o,a;(o=tile_meta.series[r.mscID]||tile_meta.property[r.propID])?(r.isComplete&&!_?i=e("<!-- skipped series: "+r.vanity+" -->"):(n=e("#template_continue_reading")[0].content.cloneNode(!0),i=e(n).find(".p-cs-tile"),a=o.href+"?scrollto=%23ch-"+Math.round(100*r.chnum),r.volnum&&(r.propID||console.warn("Missing propID for: "+r.vanity),a=["account/library/gn",r.vanity,r.propID].join("/")+"?crv",r.mcID&&(a+="&scrollto=%23mcid_"+r.mcID),(y=special_manga_meta[r.mcID])&&y.free&&(
1a=y.sp_link+"?action=read")),i.find("a:first-child").attr("href",a).attr("rel",o.name.replace(/ /g," ")),i.find("img").attr("data-original",o.img_url).attr("alt",o.name),i.find("div.tile-main-text").html(o.name),y=i.find("div.tile-sub-text"),r.label?y.html(r.label):y.remove(),i.attr("data-vanity",r.vanity),r.isComplete&&_&&i.addClass("cr-complete"),i.data("sort",r.sort)),v.append(i)):console.warn("could not find meta data for continue_reading for vanity: "+r.vanity)}function m(e,t,r){return r||(t*=1e3),new Date(e.getTime()+t)}function h(e,t,r){return i(M)?(n=e?r?m(r,y=(e-r)/2,1):m(e,-10):m(r,10),(y={})[C]=n,!!FSW[M].update(t,y)&&n):null;var n}var v,_,b,y,F=e(r),w="Required MetaData is missing: meta/",I="lastReadChapter",D="lastReadVolume",S="lastReadComplete",W="lastReadLabel",U="lastReadMCId",k="mangaSeriesCommonId",C="lastReadSort",j="lastReadTS",V="lastReadPage",M="all_cr_series",R="all_manga",x="few_cr_series",z="one_series",P="one_manga";(b=new Date).setTime(0),F.ready(function(){v=e("#continue_reading")});var O={getAllSeriesHistory:s,getSeriesHistory:c,getMangaPage:l,markRead:d,deleteSeriesHistory:u,renderReadHistory:p,updateSort:h};return Object.freeze(O),O}():console.warn("ABORT: (continue_reading) Firebase is missing/broken on this page")}(jQuery,window,document);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.