import{S as Ir,i as Tr,s as Lr,e as s,k as c,w as _r,t as a,M as xr,c as l,d as t,m as h,a as n,x as wr,h as r,b as i,G as e,g as f,y as gr,L as Mr,q as Er,o as kr,B as Ar,v as $r}from"../chunks/vendor-hf-doc-builder.js";import{I as Pr}from"../chunks/IconCopyLink-hf-doc-builder.js";function Or(ya){let A,Ve,P,x,Ee,S,kt,ke,At,Ze,Q,Pt,et,w,Ae,It,Tt,Pe,Lt,xt,Ie,Mt,tt,V,$t,ot,Z,Te,Ot,at,v,u,zt,ee,Ft,qt,te,St,Ht,oe,Nt,Ct,ae,Ut,jt,re,Dt,Kt,se,Rt,Wt,Gt,I,Yt,Le,Bt,Jt,H,Xt,Qt,Vt,b,Zt,le,eo,to,ne,oo,ao,xe,ro,so,lo,N,no,C,io,co,rt,U,Me,ho,st,M,$e,fo,uo,j,po,Oe,mo,vo,lt,ie,yo,nt,g,D,ze,bo,_o,K,Fe,wo,go,qe,Eo,ko,R,Se,Ao,Po,W,He,Io,To,Ne,Lo,xo,Ce,Ue,Mo,it,T,$,je,G,$o,De,Oo,dt,de,zo,ct,E,y,Ke,Fo,qo,Y,So,Ho,B,No,Co,J,Uo,jo,Do,ce,Re,Ko,Ro,Wo,p,We,Go,Yo,he,Bo,Jo,fe,Xo,Qo,ue,Vo,Zo,pe,ea,ta,ht,me,oa,ft,k,O,Ge,aa,ra,X,sa,la,na,z,Ye,ia,da,Be,ca,ha,fa,ve,Je,ua,pa,ut;return S=new Pr({}),G=new Pr({}),{c(){A=s("meta"),Ve=c(),P=s("h1"),x=s("a"),Ee=s("span"),_r(S.$$.fragment),kt=c(),ke=s("span"),At=a("Philosophy"),Ze=c(),Q=s("p"),Pt=a("\u{1F917} Transformers is an opinionated library built for:"),et=c(),w=s("ul"),Ae=s("li"),It=a("machine learning researchers and educators seeking to use, study or extend large-scale Transformers models."),Tt=c(),Pe=s("li"),Lt=a("hands-on practitioners who want to fine-tune those models or serve them in production, or both."),xt=c(),Ie=s("li"),Mt=a("engineers who just want to download a pretrained model and use it to solve a given machine learning task."),tt=c(),V=s("p"),$t=a("The library was designed with two strong goals in mind:"),ot=c(),Z=s("ol"),Te=s("li"),Ot=a("Be as easy and fast to use as possible:"),at=c(),v=s("ul"),u=s("li"),zt=a(`We strongly limited the number of user-facing abstractions to learn, in fact, there are almost no abstractions,
just three standard classes required to use each model: `),ee=s("a"),Ft=a("configuration"),qt=a(`,
`),te=s("a"),St=a("models"),Ht=a(", and a preprocessing class ("),oe=s("a"),Nt=a("tokenizer"),Ct=a(" for NLP, "),ae=s("a"),Ut=a("image processor"),jt=a(" for vision, "),re=s("a"),Dt=a("feature extractor"),Kt=a(" for audio, and "),se=s("a"),Rt=a("processor"),Wt=a(" for multimodal inputs)."),Gt=c(),I=s("li"),Yt=a(`All of these classes can be initialized in a simple and unified way from pretrained instances by using a common
`),Le=s("code"),Bt=a("from_pretrained()"),Jt=a(` method which downloads (if needed), caches and
loads the related class instance and associated data (configurations\u2019 hyperparameters, tokenizers\u2019 vocabulary,
and models\u2019 weights) from a pretrained checkpoint provided on `),H=s("a"),Xt=a("Hugging Face Hub"),Qt=a(" or your own saved checkpoint."),Vt=c(),b=s("li"),Zt=a("On top of those three base classes, the library provides two APIs: "),le=s("a"),eo=a("pipeline()"),to=a(` for quickly
using a model for inference on a given task and `),ne=s("a"),oo=a("Trainer"),ao=a(" to quickly train or fine-tune a PyTorch model (all TensorFlow models are compatible with "),xe=s("code"),ro=a("Keras.fit"),so=a(")."),lo=c(),N=s("li"),no=a(`As a consequence, this library is NOT a modular toolbox of building blocks for neural nets. If you want to
extend or build upon the library, just use regular Python, PyTorch, TensorFlow, Keras modules and inherit from the base
classes of the library to reuse functionalities like model loading and saving. If you\u2019d like to learn more about our coding philosophy for models, check out our `),C=s("a"),io=a("Repeat Yourself"),co=a(" blog post."),rt=c(),U=s("ol"),Me=s("li"),ho=a("Provide state-of-the-art models with performances as close as possible to the original models:"),st=c(),M=s("ul"),$e=s("li"),fo=a(`We provide at least one example for each architecture which reproduces a result provided by the official authors
of said architecture.`),uo=c(),j=s("li"),po=a(`The code is usually as close to the original code base as possible which means some PyTorch code may be not as
`),Oe=s("em"),mo=a("pytorchic"),vo=a(" as it could be as a result of being converted TensorFlow code and vice versa."),lt=c(),ie=s("p"),yo=a("A few other goals:"),nt=c(),g=s("ul"),D=s("li"),ze=s("p"),bo=a("Expose the models\u2019 internals as consistently as possible:"),_o=c(),K=s("ul"),Fe=s("li"),wo=a("We give access, using a single API, to the full hidden-states and attention weights."),go=c(),qe=s("li"),Eo=a("The preprocessing classes and base model APIs are standardized to easily switch between models."),ko=c(),R=s("li"),Se=s("p"),Ao=a("Incorporate a subjective selection of promising tools for fine-tuning and investigating these models:"),Po=c(),W=s("ul"),He=s("li"),Io=a("A simple and consistent way to add new tokens to the vocabulary and embeddings for fine-tuning."),To=c(),Ne=s("li"),Lo=a("Simple ways to mask and prune Transformer heads."),xo=c(),Ce=s("li"),Ue=s("p"),Mo=a("Easily switch between PyTorch, TensorFlow 2.0 and Flax, allowing training with one framework and inference with another."),it=c(),T=s("h2"),$=s("a"),je=s("span"),_r(G.$$.fragment),$o=c(),De=s("span"),Oo=a("Main concepts"),dt=c(),de=s("p"),zo=a("The library is built around three types of classes for each model:"),ct=c(),E=s("ul"),y=s("li"),Ke=s("strong"),Fo=a("Model classes"),qo=a(" can be PyTorch models ("),Y=s("a"),So=a("torch.nn.Module"),Ho=a("), Keras models ("),B=s("a"),No=a("tf.keras.Model"),Co=a(") or JAX/Flax models ("),J=s("a"),Uo=a("flax.linen.Module"),jo=a(") that work with the pretrained weights provided in the library."),Do=c(),ce=s("li"),Re=s("strong"),Ko=a("Configuration classes"),Ro=a(" store the hyperparameters required to build a model (such as the number of layers and hidden size). You don\u2019t always need to instantiate these yourself. In particular, if you are using a pretrained model without any modification, creating the model will automatically take care of instantiating the configuration (which is part of the model)."),Wo=c(),p=s("li"),We=s("strong"),Go=a("Preprocessing classes"),Yo=a(" convert the raw data into a format accepted by the model. A "),he=s("a"),Bo=a("tokenizer"),Jo=a(" stores the vocabulary for each model and provide methods for encoding and decoding strings in a list of token embedding indices to be fed to a model. "),fe=s("a"),Xo=a("Image processors"),Qo=a(" preprocess vision inputs, "),ue=s("a"),Vo=a("feature extractors"),Zo=a(" preprocess audio inputs, and a "),pe=s("a"),ea=a("processor"),ta=a(" handles multimodal inputs."),ht=c(),me=s("p"),oa=a("All these classes can be instantiated from pretrained instances, saved locally, and shared on the Hub with three methods:"),ft=c(),k=s("ul"),O=s("li"),Ge=s("code"),aa=a("from_pretrained()"),ra=a(` lets you instantiate a model, configuration, and preprocessing class from a pretrained version either
provided by the library itself (the supported models can be found on the `),X=s("a"),sa=a("Model Hub"),la=a(`) or
stored locally (or on a server) by the user.`),na=c(),z=s("li"),Ye=s("code"),ia=a("save_pretrained()"),da=a(` lets you save a model, configuration, and preprocessing class locally so that it can be reloaded using
`),Be=s("code"),ca=a("from_pretrained()"),ha=a("."),fa=c(),ve=s("li"),Je=s("code"),ua=a("push_to_hub()"),pa=a(" lets you share a model, configuration, and a preprocessing class to the Hub, so it is easily accessible to everyone."),this.h()},l(o){const d=xr('[data-svelte="svelte-1phssyn"]',document.head);A=l(d,"META",{name:!0,content:!0}),d.forEach(t),Ve=h(o),P=l(o,"H1",{class:!0});var pt=n(P);x=l(pt,"A",{id:!0,class:!0,href:!0});var ba=n(x);Ee=l(ba,"SPAN",{});var _a=n(Ee);wr(S.$$.fragment,_a),_a.forEach(t),ba.forEach(t),kt=h(pt),ke=l(pt,"SPAN",{});var wa=n(ke);At=r(wa,"Philosophy"),wa.forEach(t),pt.forEach(t),Ze=h(o),Q=l(o,"P",{});var ga=n(Q);Pt=r(ga,"\u{1F917} Transformers is an opinionated library built for:"),ga.forEach(t),et=h(o),w=l(o,"UL",{});var ye=n(w);Ae=l(ye,"LI",{});var Ea=n(Ae);It=r(Ea,"machine learning researchers and educators seeking to use, study or extend large-scale Transformers models."),Ea.forEach(t),Tt=h(ye),Pe=l(ye,"LI",{});var ka=n(Pe);Lt=r(ka,"hands-on practitioners who want to fine-tune those models or serve them in production, or both."),ka.forEach(t),xt=h(ye),Ie=l(ye,"LI",{});var Aa=n(Ie);Mt=r(Aa,"engineers who just want to download a pretrained model and use it to solve a given machine learning task."),Aa.forEach(t),ye.forEach(t),tt=h(o),V=l(o,"P",{});var Pa=n(V);$t=r(Pa,"The library was designed with two strong goals in mind:"),Pa.forEach(t),ot=h(o),Z=l(o,"OL",{});var Ia=n(Z);Te=l(Ia,"LI",{});var Ta=n(Te);Ot=r(Ta,"Be as easy and fast to use as possible:"),Ta.forEach(t),Ia.forEach(t),at=h(o),v=l(o,"UL",{});var F=n(v);u=l(F,"LI",{});var m=n(u);zt=r(m,`We strongly limited the number of user-facing abstractions to learn, in fact, there are almost no abstractions,
just three standard classes required to use each model: `),ee=l(m,"A",{href:!0});var La=n(ee);Ft=r(La,"configuration"),La.forEach(t),qt=r(m,`,
`),te=l(m,"A",{href:!0});var xa=n(te);St=r(xa,"models"),xa.forEach(t),Ht=r(m,", and a preprocessing class ("),oe=l(m,"A",{href:!0});var Ma=n(oe);Nt=r(Ma,"tokenizer"),Ma.forEach(t),Ct=r(m," for NLP, "),ae=l(m,"A",{href:!0});var $a=n(ae);Ut=r($a,"image processor"),$a.forEach(t),jt=r(m," for vision, "),re=l(m,"A",{href:!0});var Oa=n(re);Dt=r(Oa,"feature extractor"),Oa.forEach(t),Kt=r(m," for audio, and "),se=l(m,"A",{href:!0});var za=n(se);Rt=r(za,"processor"),za.forEach(t),Wt=r(m," for multimodal inputs)."),m.forEach(t),Gt=h(F),I=l(F,"LI",{});var be=n(I);Yt=r(be,`All of these classes can be initialized in a simple and unified way from pretrained instances by using a common
`),Le=l(be,"CODE",{});var Fa=n(Le);Bt=r(Fa,"from_pretrained()"),Fa.forEach(t),Jt=r(be,` method which downloads (if needed), caches and
loads the related class instance and associated data (configurations\u2019 hyperparameters, tokenizers\u2019 vocabulary,
and models\u2019 weights) from a pretrained checkpoint provided on `),H=l(be,"A",{href:!0,rel:!0});var qa=n(H);Xt=r(qa,"Hugging Face Hub"),qa.forEach(t),Qt=r(be," or your own saved checkpoint."),be.forEach(t),Vt=h(F),b=l(F,"LI",{});var q=n(b);Zt=r(q,"On top of those three base classes, the library provides two APIs: "),le=l(q,"A",{href:!0});var Sa=n(le);eo=r(Sa,"pipeline()"),Sa.forEach(t),to=r(q,` for quickly
using a model for inference on a given task and `),ne=l(q,"A",{href:!0});var Ha=n(ne);oo=r(Ha,"Trainer"),Ha.forEach(t),ao=r(q," to quickly train or fine-tune a PyTorch model (all TensorFlow models are compatible with "),xe=l(q,"CODE",{});var Na=n(xe);ro=r(Na,"Keras.fit"),Na.forEach(t),so=r(q,")."),q.forEach(t),lo=h(F),N=l(F,"LI",{});var mt=n(N);no=r(mt,`As a consequence, this library is NOT a modular toolbox of building blocks for neural nets. If you want to
extend or build upon the library, just use regular Python, PyTorch, TensorFlow, Keras modules and inherit from the base
classes of the library to reuse functionalities like model loading and saving. If you\u2019d like to learn more about our coding philosophy for models, check out our `),C=l(mt,"A",{href:!0,rel:!0});var Ca=n(C);io=r(Ca,"Repeat Yourself"),Ca.forEach(t),co=r(mt," blog post."),mt.forEach(t),F.forEach(t),rt=h(o),U=l(o,"OL",{start:!0});var Ua=n(U);Me=l(Ua,"LI",{});var ja=n(Me);ho=r(ja,"Provide state-of-the-art models with performances as close as possible to the original models:"),ja.forEach(t),Ua.forEach(t),st=h(o),M=l(o,"UL",{});var vt=n(M);$e=l(vt,"LI",{});var Da=n($e);fo=r(Da,`We provide at least one example for each architecture which reproduces a result provided by the official authors
of said architecture.`),Da.forEach(t),uo=h(vt),j=l(vt,"LI",{});var yt=n(j);po=r(yt,`The code is usually as close to the original code base as possible which means some PyTorch code may be not as
`),Oe=l(yt,"EM",{});var Ka=n(Oe);mo=r(Ka,"pytorchic"),Ka.forEach(t),vo=r(yt," as it could be as a result of being converted TensorFlow code and vice versa."),yt.forEach(t),vt.forEach(t),lt=h(o),ie=l(o,"P",{});var Ra=n(ie);yo=r(Ra,"A few other goals:"),Ra.forEach(t),nt=h(o),g=l(o,"UL",{});var _e=n(g);D=l(_e,"LI",{});var bt=n(D);ze=l(bt,"P",{});var Wa=n(ze);bo=r(Wa,"Expose the models\u2019 internals as consistently as possible:"),Wa.forEach(t),_o=h(bt),K=l(bt,"UL",{});var _t=n(K);Fe=l(_t,"LI",{});var Ga=n(Fe);wo=r(Ga,"We give access, using a single API, to the full hidden-states and attention weights."),Ga.forEach(t),go=h(_t),qe=l(_t,"LI",{});var Ya=n(qe);Eo=r(Ya,"The preprocessing classes and base model APIs are standardized to easily switch between models."),Ya.forEach(t),_t.forEach(t),bt.forEach(t),ko=h(_e),R=l(_e,"LI",{});var wt=n(R);Se=l(wt,"P",{});var Ba=n(Se);Ao=r(Ba,"Incorporate a subjective selection of promising tools for fine-tuning and investigating these models:"),Ba.forEach(t),Po=h(wt),W=l(wt,"UL",{});var gt=n(W);He=l(gt,"LI",{});var Ja=n(He);Io=r(Ja,"A simple and consistent way to add new tokens to the vocabulary and embeddings for fine-tuning."),Ja.forEach(t),To=h(gt),Ne=l(gt,"LI",{});var Xa=n(Ne);Lo=r(Xa,"Simple ways to mask and prune Transformer heads."),Xa.forEach(t),gt.forEach(t),wt.forEach(t),xo=h(_e),Ce=l(_e,"LI",{});var Qa=n(Ce);Ue=l(Qa,"P",{});var Va=n(Ue);Mo=r(Va,"Easily switch between PyTorch, TensorFlow 2.0 and Flax, allowing training with one framework and inference with another."),Va.forEach(t),Qa.forEach(t),_e.forEach(t),it=h(o),T=l(o,"H2",{class:!0});var Et=n(T);$=l(Et,"A",{id:!0,class:!0,href:!0});var Za=n($);je=l(Za,"SPAN",{});var er=n(je);wr(G.$$.fragment,er),er.forEach(t),Za.forEach(t),$o=h(Et),De=l(Et,"SPAN",{});var tr=n(De);Oo=r(tr,"Main concepts"),tr.forEach(t),Et.forEach(t),dt=h(o),de=l(o,"P",{});var or=n(de);zo=r(or,"The library is built around three types of classes for each model:"),or.forEach(t),ct=h(o),E=l(o,"UL",{});var we=n(E);y=l(we,"LI",{});var L=n(y);Ke=l(L,"STRONG",{});var ar=n(Ke);Fo=r(ar,"Model classes"),ar.forEach(t),qo=r(L," can be PyTorch models ("),Y=l(L,"A",{href:!0,rel:!0});var rr=n(Y);So=r(rr,"torch.nn.Module"),rr.forEach(t),Ho=r(L,"), Keras models ("),B=l(L,"A",{href:!0,rel:!0});var sr=n(B);No=r(sr,"tf.keras.Model"),sr.forEach(t),Co=r(L,") or JAX/Flax models ("),J=l(L,"A",{href:!0,rel:!0});var lr=n(J);Uo=r(lr,"flax.linen.Module"),lr.forEach(t),jo=r(L,") that work with the pretrained weights provided in the library."),L.forEach(t),Do=h(we),ce=l(we,"LI",{});var ma=n(ce);Re=l(ma,"STRONG",{});var nr=n(Re);Ko=r(nr,"Configuration classes"),nr.forEach(t),Ro=r(ma," store the hyperparameters required to build a model (such as the number of layers and hidden size). You don\u2019t always need to instantiate these yourself. In particular, if you are using a pretrained model without any modification, creating the model will automatically take care of instantiating the configuration (which is part of the model)."),ma.forEach(t),Wo=h(we),p=l(we,"LI",{});var _=n(p);We=l(_,"STRONG",{});var ir=n(We);Go=r(ir,"Preprocessing classes"),ir.forEach(t),Yo=r(_," convert the raw data into a format accepted by the model. A "),he=l(_,"A",{href:!0});var dr=n(he);Bo=r(dr,"tokenizer"),dr.forEach(t),Jo=r(_," stores the vocabulary for each model and provide methods for encoding and decoding strings in a list of token embedding indices to be fed to a model. "),fe=l(_,"A",{href:!0});var cr=n(fe);Xo=r(cr,"Image processors"),cr.forEach(t),Qo=r(_," preprocess vision inputs, "),ue=l(_,"A",{href:!0});var hr=n(ue);Vo=r(hr,"feature extractors"),hr.forEach(t),Zo=r(_," preprocess audio inputs, and a "),pe=l(_,"A",{href:!0});var fr=n(pe);ea=r(fr,"processor"),fr.forEach(t),ta=r(_," handles multimodal inputs."),_.forEach(t),we.forEach(t),ht=h(o),me=l(o,"P",{});var ur=n(me);oa=r(ur,"All these classes can be instantiated from pretrained instances, saved locally, and shared on the Hub with three methods:"),ur.forEach(t),ft=h(o),k=l(o,"UL",{});var ge=n(k);O=l(ge,"LI",{});var Xe=n(O);Ge=l(Xe,"CODE",{});var pr=n(Ge);aa=r(pr,"from_pretrained()"),pr.forEach(t),ra=r(Xe,` lets you instantiate a model, configuration, and preprocessing class from a pretrained version either
provided by the library itself (the supported models can be found on the `),X=l(Xe,"A",{href:!0,rel:!0});var mr=n(X);sa=r(mr,"Model Hub"),mr.forEach(t),la=r(Xe,`) or
stored locally (or on a server) by the user.`),Xe.forEach(t),na=h(ge),z=l(ge,"LI",{});var Qe=n(z);Ye=l(Qe,"CODE",{});var vr=n(Ye);ia=r(vr,"save_pretrained()"),vr.forEach(t),da=r(Qe,` lets you save a model, configuration, and preprocessing class locally so that it can be reloaded using
`),Be=l(Qe,"CODE",{});var yr=n(Be);ca=r(yr,"from_pretrained()"),yr.forEach(t),ha=r(Qe,"."),Qe.forEach(t),fa=h(ge),ve=l(ge,"LI",{});var va=n(ve);Je=l(va,"CODE",{});var br=n(Je);ua=r(br,"push_to_hub()"),br.forEach(t),pa=r(va," lets you share a model, configuration, and a preprocessing class to the Hub, so it is easily accessible to everyone."),va.forEach(t),ge.forEach(t),this.h()},h(){i(A,"name","hf:doc:metadata"),i(A,"content",JSON.stringify(zr)),i(x,"id","philosophy"),i(x,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),i(x,"href","#philosophy"),i(P,"class","relative group"),i(ee,"href","main_classes/configuration"),i(te,"href","main_classes/model"),i(oe,"href","main_classes/tokenizer"),i(ae,"href","main_classes/image_processor"),i(re,"href","main_classes/feature_extractor"),i(se,"href","main_classes/processors"),i(H,"href","https://huggingface.co/models"),i(H,"rel","nofollow"),i(le,"href","/docs/transformers/main/en/main_classes/pipelines#transformers.pipeline"),i(ne,"href","/docs/transformers/main/en/main_classes/trainer#transformers.Trainer"),i(C,"href","https://huggingface.co/blog/transformers-design-philosophy"),i(C,"rel","nofollow"),i(U,"start","2"),i($,"id","main-concepts"),i($,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),i($,"href","#main-concepts"),i(T,"class","relative group"),i(Y,"href","https://pytorch.org/docs/stable/nn.html#torch.nn.Module"),i(Y,"rel","nofollow"),i(B,"href","https://www.tensorflow.org/api_docs/python/tf/keras/Model"),i(B,"rel","nofollow"),i(J,"href","https://flax.readthedocs.io/en/latest/api_reference/flax.linen.html"),i(J,"rel","nofollow"),i(he,"href","main_classes/tokenizer"),i(fe,"href","main_classes/image_processor"),i(ue,"href","main_classes/feature_extractor"),i(pe,"href","main_classes/processors"),i(X,"href","https://huggingface.co/models"),i(X,"rel","nofollow")},m(o,d){e(document.head,A),f(o,Ve,d),f(o,P,d),e(P,x),e(x,Ee),gr(S,Ee,null),e(P,kt),e(P,ke),e(ke,At),f(o,Ze,d),f(o,Q,d),e(Q,Pt),f(o,et,d),f(o,w,d),e(w,Ae),e(Ae,It),e(w,Tt),e(w,Pe),e(Pe,Lt),e(w,xt),e(w,Ie),e(Ie,Mt),f(o,tt,d),f(o,V,d),e(V,$t),f(o,ot,d),f(o,Z,d),e(Z,Te),e(Te,Ot),f(o,at,d),f(o,v,d),e(v,u),e(u,zt),e(u,ee),e(ee,Ft),e(u,qt),e(u,te),e(te,St),e(u,Ht),e(u,oe),e(oe,Nt),e(u,Ct),e(u,ae),e(ae,Ut),e(u,jt),e(u,re),e(re,Dt),e(u,Kt),e(u,se),e(se,Rt),e(u,Wt),e(v,Gt),e(v,I),e(I,Yt),e(I,Le),e(Le,Bt),e(I,Jt),e(I,H),e(H,Xt),e(I,Qt),e(v,Vt),e(v,b),e(b,Zt),e(b,le),e(le,eo),e(b,to),e(b,ne),e(ne,oo),e(b,ao),e(b,xe),e(xe,ro),e(b,so),e(v,lo),e(v,N),e(N,no),e(N,C),e(C,io),e(N,co),f(o,rt,d),f(o,U,d),e(U,Me),e(Me,ho),f(o,st,d),f(o,M,d),e(M,$e),e($e,fo),e(M,uo),e(M,j),e(j,po),e(j,Oe),e(Oe,mo),e(j,vo),f(o,lt,d),f(o,ie,d),e(ie,yo),f(o,nt,d),f(o,g,d),e(g,D),e(D,ze),e(ze,bo),e(D,_o),e(D,K),e(K,Fe),e(Fe,wo),e(K,go),e(K,qe),e(qe,Eo),e(g,ko),e(g,R),e(R,Se),e(Se,Ao),e(R,Po),e(R,W),e(W,He),e(He,Io),e(W,To),e(W,Ne),e(Ne,Lo),e(g,xo),e(g,Ce),e(Ce,Ue),e(Ue,Mo),f(o,it,d),f(o,T,d),e(T,$),e($,je),gr(G,je,null),e(T,$o),e(T,De),e(De,Oo),f(o,dt,d),f(o,de,d),e(de,zo),f(o,ct,d),f(o,E,d),e(E,y),e(y,Ke),e(Ke,Fo),e(y,qo),e(y,Y),e(Y,So),e(y,Ho),e(y,B),e(B,No),e(y,Co),e(y,J),e(J,Uo),e(y,jo),e(E,Do),e(E,ce),e(ce,Re),e(Re,Ko),e(ce,Ro),e(E,Wo),e(E,p),e(p,We),e(We,Go),e(p,Yo),e(p,he),e(he,Bo),e(p,Jo),e(p,fe),e(fe,Xo),e(p,Qo),e(p,ue),e(ue,Vo),e(p,Zo),e(p,pe),e(pe,ea),e(p,ta),f(o,ht,d),f(o,me,d),e(me,oa),f(o,ft,d),f(o,k,d),e(k,O),e(O,Ge),e(Ge,aa),e(O,ra),e(O,X),e(X,sa),e(O,la),e(k,na),e(k,z),e(z,Ye),e(Ye,ia),e(z,da),e(z,Be),e(Be,ca),e(z,ha),e(k,fa),e(k,ve),e(ve,Je),e(Je,ua),e(ve,pa),ut=!0},p:Mr,i(o){ut||(Er(S.$$.fragment,o),Er(G.$$.fragment,o),ut=!0)},o(o){kr(S.$$.fragment,o),kr(G.$$.fragment,o),ut=!1},d(o){t(A),o&&t(Ve),o&&t(P),Ar(S),o&&t(Ze),o&&t(Q),o&&t(et),o&&t(w),o&&t(tt),o&&t(V),o&&t(ot),o&&t(Z),o&&t(at),o&&t(v),o&&t(rt),o&&t(U),o&&t(st),o&&t(M),o&&t(lt),o&&t(ie),o&&t(nt),o&&t(g),o&&t(it),o&&t(T),Ar(G),o&&t(dt),o&&t(de),o&&t(ct),o&&t(E),o&&t(ht),o&&t(me),o&&t(ft),o&&t(k)}}}const zr={local:"philosophy",sections:[{local:"main-concepts",title:"Main concepts"}],title:"Philosophy"};function Fr(ya){return $r(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Hr extends Ir{constructor(A){super();Tr(this,A,Fr,Or,Lr,{})}}export{Hr as default,zr as metadata};
