€cdocutils.nodes document q)q}q(U nametypesq}q(Xuse case 03 - register mnqNXuc03qˆXhistoryqˆuUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceq NU decorationqNUautofootnote_startqKUnameidsq}q(hUuse-case-03-register-mnqhUuc03qhUhistoryquUchildrenq]q(cdocutils.nodes target q)q}q(U rawsourceqX .. _UC03:UparentqhUsourceqXj/var/lib/jenkins/jobs/API_Documentation_trunk/workspace/api-documentation/source/design/UseCases/03_uc.txtqUtagnameqUtargetqU attributesq }q!(Uidsq"]Ubackrefsq#]Udupnamesq$]Uclassesq%]Unamesq&]Urefidq'huUlineq(KUdocumentq)hh]ubcdocutils.nodes section q*)q+}q,(hUhhhhUexpect_referenced_by_nameq-}q.hhshUsectionq/h }q0(h$]h%]h#]h"]q1(hheh&]q2(hheuh(Kh)hUexpect_referenced_by_idq3}q4hhsh]q5(cdocutils.nodes title q6)q7}q8(hXUse Case 03 - Register MNq9hh+hhhUtitleq:h }q;(h$]h%]h#]h"]h&]uh(Kh)hh]q…q?}q@(hh9hh7ubaubcsphinx.addnodes index qA)qB}qC(hUhh+hhhUindexqDh }qE(h"]h#]h$]h%]h&]UentriesqF]qG((UsingleqHX Use Case 03Uindex-0qIUNtqJ(hHXUC03hIUNtqK(hHX Register NodehIUNtqL(hHXRegisterhIUNtqMeUinlineqN‰uh(Kh)hh]ubh)qO}qP(hUhh+hhhhh }qQ(h"]h#]h$]h%]h&]h'hIuh(Kh)hh]ubcdocutils.nodes definition_list qR)qS}qT(hUhh+hhh-}hUdefinition_listqUh }qV(h$]h%]h#]h"]qWhIah&]uh(Nh)hh3}qXhIhOsh]qY(cdocutils.nodes definition_list_item qZ)q[}q\(hX+Revisions View document revision history_. hhShhhUdefinition_list_itemq]h }q^(h$]h%]h#]h"]h&]uh(K h]q_(cdocutils.nodes term q`)qa}qb(hX Revisionsqchh[hhhUtermqdh }qe(h$]h%]h#]h"]h&]uh(K h]qfh=X Revisionsqg…qh}qi(hhchhaubaubcdocutils.nodes definition qj)qk}ql(hUh }qm(h$]h%]h#]h"]h&]uhh[h]qncdocutils.nodes paragraph qo)qp}qq(hX View document revision history_.hhkhhhU paragraphqrh }qs(h$]h%]h#]h"]h&]uh(K h]qt(h=XView document revision qu…qv}qw(hXView document revision hhpubcdocutils.nodes reference qx)qy}qz(hXhistory_Uresolvedq{KhhphU referenceq|h }q}(UnameXhistoryq~UrefuriqX”https://redmine.dataone.org/projects/d1/repository/changes/documents/Projects/cicore/architecture/api-documentation/source/design/UseCases/03_uc.txtq€h"]h#]h$]h%]h&]uh]qh=Xhistoryq‚…qƒ}q„(hUhhyubaubh=X.…q…}q†(hX.hhpubeubahU definitionq‡ubeubhZ)qˆ}q‰(hX!Goal Register a new Member Node. hhShhhh]h }qŠ(h$]h%]h#]h"]h&]uh(K h)hh]q‹(h`)qŒ}q(hXGoalqŽhhˆhhhhdh }q(h$]h%]h#]h"]h&]uh(K h]qh=XGoalq‘…q’}q“(hhŽhhŒubaubhj)q”}q•(hUh }q–(h$]h%]h#]h"]h&]uhhˆh]q—ho)q˜}q™(hXRegister a new Member Node.qšhh”hhhhrh }q›(h$]h%]h#]h"]h&]uh(K h]qœh=XRegister a new Member Node.q…qž}qŸ(hhšhh˜ubaubahh‡ubeubhZ)q }q¡(hXÊSummary This use case describes the technical process for addition of a new member node (MN) to to the DataONE infrastructure. It is assumed that the appropriate social contracts have been formed and the MN is operational, ready to be connected. The MN is identified by a URL which is the service endpoint. A DataONE administrator adds the MN URL to the MN registry. A CN retrieves the registration request from the message queue and queries the MN for capabilities, then verifies those capabilities match what was advertised. If everything is OK, the MN is made a live member of DataONE and replication of content on the MN is scheduled. The new MN also becomes a receiver for content replicated from other MNs. hhShhhh]h }q¢(h$]h%]h#]h"]h&]uh(Kh)hh]q£(h`)q¤}q¥(hXSummaryq¦hh hhhhdh }q§(h$]h%]h#]h"]h&]uh(Kh]q¨h=XSummaryq©…qª}q«(hh¦hh¤ubaubhj)q¬}q­(hUh }q®(h$]h%]h#]h"]h&]uhh h]q¯(ho)q°}q±(hXíThis use case describes the technical process for addition of a new member node (MN) to to the DataONE infrastructure. It is assumed that the appropriate social contracts have been formed and the MN is operational, ready to be connected.q²hh¬hhhhrh }q³(h$]h%]h#]h"]h&]uh(Kh]q´h=XíThis use case describes the technical process for addition of a new member node (MN) to to the DataONE infrastructure. It is assumed that the appropriate social contracts have been formed and the MN is operational, ready to be connected.qµ…q¶}q·(hh²hh°ubaubho)q¸}q¹(hXÒThe MN is identified by a URL which is the service endpoint. A DataONE administrator adds the MN URL to the MN registry. A CN retrieves the registration request from the message queue and queries the MN for capabilities, then verifies those capabilities match what was advertised. If everything is OK, the MN is made a live member of DataONE and replication of content on the MN is scheduled. The new MN also becomes a receiver for content replicated from other MNs.qºhh¬hhhhrh }q»(h$]h%]h#]h"]h&]uh(Kh]q¼h=XÒThe MN is identified by a URL which is the service endpoint. A DataONE administrator adds the MN URL to the MN registry. A CN retrieves the registration request from the message queue and queries the MN for capabilities, then verifies those capabilities match what was advertised. If everything is OK, the MN is made a live member of DataONE and replication of content on the MN is scheduled. The new MN also becomes a receiver for content replicated from other MNs.q½…q¾}q¿(hhºhh¸ubaubehh‡ubeubhZ)qÀ}qÁ(hXActors MN, CN, Administrator hhShhhh]h }qÂ(h$]h%]h#]h"]h&]uh(Kh)hh]qÃ(h`)qÄ}qÅ(hXActorsqÆhhÀhhhhdh }qÇ(h$]h%]h#]h"]h&]uh(Kh]qÈh=XActorsqÉ…qÊ}qË(hhÆhhÄubaubhj)qÌ}qÍ(hUh }qÎ(h$]h%]h#]h"]h&]uhhÀh]qÏho)qÐ}qÑ(hXMN, CN, AdministratorqÒhhÌhhhhrh }qÓ(h$]h%]h#]h"]h&]uh(Kh]qÔh=XMN, CN, AdministratorqÕ…qÖ}q×(hhÒhhÐubaubahh‡ubeubhZ)qØ}qÙ(hXÍPreconditions - The MN is operational - There is an agreement between the DataONE operators and the MN operator that the MN is to be added to DataONE - The CNs are ready for receiving MN registrations hhShhhh]h }qÚ(h$]h%]h#]h"]h&]uh(K%h)hh]qÛ(h`)qÜ}qÝ(hX PreconditionsqÞhhØhhhhdh }qß(h$]h%]h#]h"]h&]uh(K%h]qàh=X Preconditionsqá…qâ}qã(hhÞhhÜubaubhj)qä}qå(hUh }qæ(h$]h%]h#]h"]h&]uhhØh]qçcdocutils.nodes bullet_list qè)qé}qê(hUh }që(UbulletqìX-h"]h#]h$]h%]h&]uhhäh]qí(cdocutils.nodes list_item qî)qï}qð(hXThe MN is operational h }qñ(h$]h%]h#]h"]h&]uhhéh]qòho)qó}qô(hXThe MN is operationalqõhhïhhhhrh }qö(h$]h%]h#]h"]h&]uh(K h]q÷h=XThe MN is operationalqø…qù}qú(hhõhhóubaubahU list_itemqûubhî)qü}qý(hXnThere is an agreement between the DataONE operators and the MN operator that the MN is to be added to DataONE h }qþ(h$]h%]h#]h"]h&]uhhéh]qÿho)r}r(hXmThere is an agreement between the DataONE operators and the MN operator that the MN is to be added to DataONErhhühhhhrh }r(h$]h%]h#]h"]h&]uh(K"h]rh=XmThere is an agreement between the DataONE operators and the MN operator that the MN is to be added to DataONEr…r}r(hjhjubaubahhûubhî)r}r (hX1The CNs are ready for receiving MN registrations h }r (h$]h%]h#]h"]h&]uhhéh]r ho)r }r (hX0The CNs are ready for receiving MN registrationsrhjhhhhrh }r(h$]h%]h#]h"]h&]uh(K%h]rh=X0The CNs are ready for receiving MN registrationsr…r}r(hjhj ubaubahhûubehU bullet_listrubahh‡ubeubhZ)r}r(hXpTriggers - A new Member Node is ready to be brought online and a DataONE administrator initiates the process. hhShhhh]h }r(h$]h%]h#]h"]h&]uh(K)h)hh]r(h`)r}r(hXTriggersrhjhhhhdh }r(h$]h%]h#]h"]h&]uh(K)h]rh=XTriggersr…r}r (hjhjubaubhj)r!}r"(hUh }r#(h$]h%]h#]h"]h&]uhjh]r$hè)r%}r&(hUh }r'(hìX-h"]h#]h$]h%]h&]uhj!h]r(hî)r)}r*(hXcA new Member Node is ready to be brought online and a DataONE administrator initiates the process. h }r+(h$]h%]h#]h"]h&]uhj%h]r,ho)r-}r.(hXbA new Member Node is ready to be brought online and a DataONE administrator initiates the process.r/hj)hhhhrh }r0(h$]h%]h#]h"]h&]uh(K(h]r1h=XbA new Member Node is ready to be brought online and a DataONE administrator initiates the process.r2…r3}r4(hj/hj-ubaubahhûubahjubahh‡ubeubhZ)r5}r6(hXµPost Conditions - The new MN operates as part of the DataONE infrastructure - DataONE infrastructure resources are incremented by the amount available at the new MN - The operation outcomes are logged - Synchronization of the MN commences as per scheduled operation - Synchronize capabilities metadata across CNs - Notify MN administrators of operation status (email?) - The new MN is added to CN list of targets for replication hhShhhh]h }r7(h$]h%]h#]h"]h&]uh(K9h)hh]r8(h`)r9}r:(hXPost Conditionsr;hj5hhhhdh }r<(h$]h%]h#]h"]h&]uh(K9h]r=h=XPost Conditionsr>…r?}r@(hj;hj9ubaubhj)rA}rB(hUh }rC(h$]h%]h#]h"]h&]uhj5h]rDhè)rE}rF(hUh }rG(hìX-h"]h#]h$]h%]h&]uhjAh]rH(hî)rI}rJ(hX:The new MN operates as part of the DataONE infrastructure h }rK(h$]h%]h#]h"]h&]uhjEh]rLho)rM}rN(hX9The new MN operates as part of the DataONE infrastructurerOhjIhhhhrh }rP(h$]h%]h#]h"]h&]uh(K,h]rQh=X9The new MN operates as part of the DataONE infrastructurerR…rS}rT(hjOhjMubaubahhûubhî)rU}rV(hXWDataONE infrastructure resources are incremented by the amount available at the new MN h }rW(h$]h%]h#]h"]h&]uhjEh]rXho)rY}rZ(hXVDataONE infrastructure resources are incremented by the amount available at the new MNr[hjUhhhhrh }r\(h$]h%]h#]h"]h&]uh(K.h]r]h=XVDataONE infrastructure resources are incremented by the amount available at the new MNr^…r_}r`(hj[hjYubaubahhûubhî)ra}rb(hX"The operation outcomes are logged h }rc(h$]h%]h#]h"]h&]uhjEh]rdho)re}rf(hX!The operation outcomes are loggedrghjahhhhrh }rh(h$]h%]h#]h"]h&]uh(K1h]rih=X!The operation outcomes are loggedrj…rk}rl(hjghjeubaubahhûubhî)rm}rn(hX?Synchronization of the MN commences as per scheduled operation h }ro(h$]h%]h#]h"]h&]uhjEh]rpho)rq}rr(hX>Synchronization of the MN commences as per scheduled operationrshjmhhhhrh }rt(h$]h%]h#]h"]h&]uh(K3h]ruh=X>Synchronization of the MN commences as per scheduled operationrv…rw}rx(hjshjqubaubahhûubhî)ry}rz(hX-Synchronize capabilities metadata across CNs h }r{(h$]h%]h#]h"]h&]uhjEh]r|ho)r}}r~(hX,Synchronize capabilities metadata across CNsrhjyhhhhrh }r€(h$]h%]h#]h"]h&]uh(K5h]rh=X,Synchronize capabilities metadata across CNsr‚…rƒ}r„(hjhj}ubaubahhûubhî)r…}r†(hX6Notify MN administrators of operation status (email?) h }r‡(h$]h%]h#]h"]h&]uhjEh]rˆho)r‰}rŠ(hX5Notify MN administrators of operation status (email?)r‹hj…hhhhrh }rŒ(h$]h%]h#]h"]h&]uh(K7h]rh=X5Notify MN administrators of operation status (email?)rŽ…r}r(hj‹hj‰ubaubahhûubhî)r‘}r’(hX:The new MN is added to CN list of targets for replication h }r“(h$]h%]h#]h"]h&]uhjEh]r”ho)r•}r–(hX9The new MN is added to CN list of targets for replicationr—hj‘hhhhrh }r˜(h$]h%]h#]h"]h&]uh(K9h]r™h=X9The new MN is added to CN list of targets for replicationrš…r›}rœ(hj—hj•ubaubahhûubehjubahh‡ubeubeubho)r}rž(hX **Notes**rŸhh+hhhhrh }r (h$]h%]h#]h"]h&]uh(K;h)hh]r¡cdocutils.nodes strong r¢)r£}r¤(hjŸh }r¥(h$]h%]h#]h"]h&]uhjh]r¦h=XNotesr§…r¨}r©(hUhj£ubahUstrongrªubaubhè)r«}r¬(hUhh+hhhjh }r­(hìX-h"]h#]h$]h%]h&]uh(K=h)hh]r®(hî)r¯}r°(hX%Specify default replication policies hj«hhhhûh }r±(h$]h%]h#]h"]h&]uh(Nh)hh]r²ho)r³}r´(hX$Specify default replication policiesrµhj¯hhhhrh }r¶(h$]h%]h#]h"]h&]uh(K=h]r·h=X$Specify default replication policiesr¸…r¹}rº(hjµhj³ubaubaubhî)r»}r¼(hXAlso check for version updates hj«hhhhûh }r½(h$]h%]h#]h"]h&]uh(Nh)hh]r¾ho)r¿}rÀ(hXAlso check for version updatesrÁhj»hhhhrh }rÂ(h$]h%]h#]h"]h&]uh(K?h]rÃh=XAlso check for version updatesrÄ…rÅ}rÆ(hjÁhj¿ubaubaubhî)rÇ}rÈ(hX<Should new nodes be registered with specified trust levels? hj«hhhhûh }rÉ(h$]h%]h#]h"]h&]uh(Nh)hh]rÊho)rË}rÌ(hX;Should new nodes be registered with specified trust levels?rÍhjÇhhhhrh }rÎ(h$]h%]h#]h"]h&]uh(KAh]rÏh=X;Should new nodes be registered with specified trust levels?rÐ…rÑ}rÒ(hjÍhjËubaubaubhî)rÓ}rÔ(hX6Are there different levels of trust for member nodes? hj«hhhhûh }rÕ(h$]h%]h#]h"]h&]uh(Nh)hh]rÖho)r×}rØ(hX5Are there different levels of trust for member nodes?rÙhjÓhhhhrh }rÚ(h$]h%]h#]h"]h&]uh(KCh]rÛh=X5Are there different levels of trust for member nodes?rÜ…rÝ}rÞ(hjÙhj×ubaubaubhî)rß}rà(hXcData providers that use acceptable services can still be discovered and accessed without registering in the DataONE registry (Conflicting, as someone has to register it). However, a MN that has not registered but does expose DataONE services is not part of the DataONE infrastructure and so does not participate in replication or other DataONE services. hj«hhhhûh }rá(h$]h%]h#]h"]h&]uh(Nh)hh]râ(ho)rã}rä(hXªData providers that use acceptable services can still be discovered and accessed without registering in the DataONE registry (Conflicting, as someone has to register it).råhjßhhhhrh }ræ(h$]h%]h#]h"]h&]uh(KEh]rçh=XªData providers that use acceptable services can still be discovered and accessed without registering in the DataONE registry (Conflicting, as someone has to register it).rè…ré}rê(hjåhjãubaubho)rë}rì(hX¶However, a MN that has not registered but does expose DataONE services is not part of the DataONE infrastructure and so does not participate in replication or other DataONE services.ríhjßhhhhrh }rî(h$]h%]h#]h"]h&]uh(KIh]rïh=X¶However, a MN that has not registered but does expose DataONE services is not part of the DataONE infrastructure and so does not participate in replication or other DataONE services.rð…rñ}rò(hjíhjëubaubeubhî)ró}rô(hX‘Allow service providers to register their services, (such as data extraction services) (ala GEOSS), but include mapping to higher semantic model hj«hhhhûh }rõ(h$]h%]h#]h"]h&]uh(Nh)hh]röho)r÷}rø(hXAllow service providers to register their services, (such as data extraction services) (ala GEOSS), but include mapping to higher semantic modelrùhjóhhhhrh }rú(h$]h%]h#]h"]h&]uh(KMh]rûh=XAllow service providers to register their services, (such as data extraction services) (ala GEOSS), but include mapping to higher semantic modelrü…rý}rþ(hjùhj÷ubaubaubhî)rÿ}r(hX–For well known services, registration system must be able to describe constraints (e.g., allowable inputs, outputs, algorithms that can be specified) hj«hhhhûh }r(h$]h%]h#]h"]h&]uh(Nh)hh]rho)r}r(hX•For well known services, registration system must be able to describe constraints (e.g., allowable inputs, outputs, algorithms that can be specified)rhjÿhhhhrh }r(h$]h%]h#]h"]h&]uh(KPh]rh=X•For well known services, registration system must be able to describe constraints (e.g., allowable inputs, outputs, algorithms that can be specified)r…r }r (hjhjubaubaubhî)r }r (hXServices can be parameterized hj«hhhhûh }r (h$]h%]h#]h"]h&]uh(Nh)hh]rho)r}r(hXServices can be parameterizedrhj hhhhrh }r(h$]h%]h#]h"]h&]uh(KTh]rh=XServices can be parameterizedr…r}r(hjhjubaubaubhî)r}r(hXbMember node should be able to request the coordinating node to re-validate its capabilities list. hj«hhhhûh }r(h$]h%]h#]h"]h&]uh(Nh)hh]rho)r}r(hXaMember node should be able to request the coordinating node to re-validate its capabilities list.rhjhhhhrh }r(h$]h%]h#]h"]h&]uh(KVh]rh=XaMember node should be able to request the coordinating node to re-validate its capabilities list.r …r!}r"(hjhjubaubaubeubcdocutils.nodes image r#)r$}r%(hX.. image:: images/03_uc.png hh+hhhUimager&h }r'(UuriX design/UseCases/images/03_uc.pngr(h"]h#]h$]h%]U candidatesr)}r*U*j(sh&]uh(KZh)hh]ubho)r+}r,(hX*Figure 1.* Use Case 03.r-hh+hhhhrh }r.(h$]h%]h#]h"]h&]uh(K[h)hh]r/(cdocutils.nodes emphasis r0)r1}r2(hX *Figure 1.*h }r3(h$]h%]h#]h"]h&]uhj+h]r4h=X Figure 1.r5…r6}r7(hUhj1ubahUemphasisr8ubh=X Use Case 03.r9…r:}r;(hX Use Case 03.hj+ubeubj#)r<}r=(hX.. image:: images/03_seq.png hh+hhhj&h }r>(UuriX!design/UseCases/images/03_seq.pngr?h"]h#]h$]h%]j)}r@U*j?sh&]uh(K_h)hh]ubho)rA}rB(hX)*Figure 2.* Interactions for use case 03.rChh+hhhhrh }rD(h$]h%]h#]h"]h&]uh(K`h)hh]rE(j0)rF}rG(hX *Figure 2.*h }rH(h$]h%]h#]h"]h&]uhjAh]rIh=X Figure 2.rJ…rK}rL(hUhjFubahj8ubh=X Interactions for use case 03.rM…rN}rO(hX Interactions for use case 03.hjAubeubcdocutils.nodes comment rP)rQ}rR(hXµ@startuml images/03_uc.png actor "User" as client usecase "12. Authentication" as authen package "DataONE" actor "Administrator" as admin admin ..|> client actor "Coordinating Node" as CN actor "Member Node" as MN usecase "13. Authorization" as author usecase "03. Register MN" as register admin -- register CN -- register MN -- register register ..> author: <> register ..> authen: <> @endumlhh+hhhUcommentrSh }rT(U xml:spacerUUpreserverVh"]h#]h$]h%]h&]uh(Kwh)hh]rWh=Xµ@startuml images/03_uc.png actor "User" as client usecase "12. Authentication" as authen package "DataONE" actor "Administrator" as admin admin ..|> client actor "Coordinating Node" as CN actor "Member Node" as MN usecase "13. Authorization" as author usecase "03. Register MN" as register admin -- register CN -- register MN -- register register ..> author: <> register ..> authen: <> @endumlrX…rY}rZ(hUhjQubaubjP)r[}r\(hX6@startuml images/03_seq.png actor Admin participant "Admin" as app_admin << Application >> Admin -> app_admin note right Assume admin authority for node registration. end note participant "Register API" as c_reg << Coordinating Node >> participant "Synchronization API" as c_sync << Coordinating Node >> activate c_reg app_admin -> c_reg: register (auth_token, capabilitiesURL) participant "Capabilities API" as m_cap << Member Node >> c_reg -> m_cap: getCapabilities () c_reg <-- m_cap: capabilities c_reg -> c_reg: verifyCapabilities () note right Assume capabilities stored as any other metadata. end note c_reg -> c_reg: addNodeCapabilities () c_reg -> c_sync: scheduleSynch () note right Harvest process occurs asynchronously. Separate use case. end note app_admin <-- c_reg: ack or fail deactivate c_reg @endumlhh+hhhjSh }r](jUjVh"]h#]h$]h%]h&]uh(K•h)hh]r^h=X6@startuml images/03_seq.png actor Admin participant "Admin" as app_admin << Application >> Admin -> app_admin note right Assume admin authority for node registration. end note participant "Register API" as c_reg << Coordinating Node >> participant "Synchronization API" as c_sync << Coordinating Node >> activate c_reg app_admin -> c_reg: register (auth_token, capabilitiesURL) participant "Capabilities API" as m_cap << Member Node >> c_reg -> m_cap: getCapabilities () c_reg <-- m_cap: capabilities c_reg -> c_reg: verifyCapabilities () note right Assume capabilities stored as any other metadata. end note c_reg -> c_reg: addNodeCapabilities () c_reg -> c_sync: scheduleSynch () note right Harvest process occurs asynchronously. Separate use case. end note app_admin <-- c_reg: ack or fail deactivate c_reg @endumlr_…r`}ra(hUhj[ubaubh)rb}rc(hX¡.. _history: https://redmine.dataone.org/projects/d1/repository/changes/documents/Projects/cicore/architecture/api-documentation/source/design/UseCases/03_uc.txtU referencedrdKhh+hhhhh }re(hh€h"]rfhah#]h$]h%]h&]rghauh(K–h)hh]ubeubehUU transformerrhNU footnote_refsri}rjUrefnamesrk}rlh~]rmhyasUsymbol_footnotesrn]roUautofootnote_refsrp]rqUsymbol_footnote_refsrr]rsU citationsrt]ruh)hU current_linervNUtransform_messagesrw]rx(cdocutils.nodes system_message ry)rz}r{(hUh }r|(h$]UlevelKh"]h#]Usourcehh%]h&]UlineKUtypeUINFOr}uh]r~ho)r}r€(hUh }r(h$]h%]h#]h"]h&]uhjzh]r‚h=X*Hyperlink target "uc03" is not referenced.rƒ…r„}r…(hUhjubahhrubahUsystem_messager†ubjy)r‡}rˆ(hUh }r‰(h$]UlevelKh"]h#]Usourcehh%]h&]UlineKUtypej}uh]rŠho)r‹}rŒ(hUh }r(h$]h%]h#]h"]h&]uhj‡h]rŽh=X-Hyperlink target "index-0" is not referenced.r…r}r‘(hUhj‹ubahhrubahj†ubeUreporterr’NUid_startr“KU autofootnotesr”]r•U citation_refsr–}r—Uindirect_targetsr˜]r™Usettingsrš(cdocutils.frontend Values r›orœ}r(Ufootnote_backlinksržKUrecord_dependenciesrŸNU rfc_base_urlr Uhttps://tools.ietf.org/html/r¡U tracebackr¢ˆUpep_referencesr£NUstrip_commentsr¤NU toc_backlinksr¥Uentryr¦U language_coder§Uenr¨U datestampr©NU report_levelrªKU _destinationr«NU halt_levelr¬KU strip_classesr­Nh:NUerror_encoding_error_handlerr®Ubackslashreplacer¯Udebugr°NUembed_stylesheetr±‰Uoutput_encoding_error_handlerr²Ustrictr³U sectnum_xformr´KUdump_transformsrµNU docinfo_xformr¶KUwarning_streamr·NUpep_file_url_templater¸Upep-%04dr¹Uexit_status_levelrºKUconfigr»NUstrict_visitorr¼NUcloak_email_addressesr½ˆUtrim_footnote_reference_spacer¾‰Uenvr¿NUdump_pseudo_xmlrÀNUexpose_internalsrÁNUsectsubtitle_xformr‰U source_linkrÃNUrfc_referencesrÄNUoutput_encodingrÅUutf-8rÆU source_urlrÇNUinput_encodingrÈU utf-8-sigrÉU_disable_configrÊNU id_prefixrËUU tab_widthrÌKUerror_encodingrÍUUTF-8rÎU_sourcerÏhUgettext_compactrЈU generatorrÑNUdump_internalsrÒNU smart_quotesrÓ‰U pep_base_urlrÔU https://www.python.org/dev/peps/rÕUsyntax_highlightrÖUlongr×Uinput_encoding_error_handlerrØj³Uauto_id_prefixrÙUidrÚUdoctitle_xformrÛ‰Ustrip_elements_with_classesrÜNU _config_filesrÝ]Ufile_insertion_enabledrÞˆU raw_enabledrßKU dump_settingsràNubUsymbol_footnote_startráKUidsrâ}rã(hh+hh+hIhShjbuUsubstitution_namesrä}råhh)h }ræ(h$]h"]h#]Usourcehh%]h&]uU footnotesrç]rèUrefidsré}rê(h]rëhahI]rìhOauub.