0x6080806040523461001657612650908161001c8239f35b600080fdfe608060408181526004918236101561001657600080fd5b600092833560e01c91826301ffc9a71461196d575081630bf762081461191f5781631aadd439146118de5781631dbabb6e146118bf5781631fe00dad14611858578163248a9ca31461182d578163297306be146117935781632da620a4146117645781632f2ff15d146116a957816336568abe146116095781633ace81f1146115b55781633f4ba83a146113fd5781633f6bb69d1461139557816346b013c0146113755781634b19becc146112085781635c395a79146110965781635c975abb146110725781637c6c1c5e1461104957816381406c22146110295781638456cb5914610eaa57816385f438c114610e6f578163875f000014610d865781639010d07c14610d4457816391d1485414610cfe578163973d9e0314610cb45781639a48eb5114610c5b578163a2011b3f14610c20578163a217fddf14610c05578163b7760c8f146108e8578163bd5dec981461048d578163c4d66de814610288578163ca15c87314610260578163d547741f1461021d57508063e63ab1e9146101e35763fb1bb9de146101a657600080fd5b346101df57816003193601126101df57602090517f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a8152f35b5080fd5b50346101df57816003193601126101df57602090517f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8152f35b9190503461025c578060031936011261025c57610259913561025460016102426119f5565b93838752609760205286200154611e16565b611f6f565b80f35b8280fd5b90503461025c57602036600319011261025c57602092829135815260c9845220549051908152f35b90503461025c5760209081600319360112610489576102a56119da565b9084549160ff8360081c16159283809461047c575b8015610465575b156103fc5760ff19808216600117885561033e9291856103eb575b5061030760ff895460081c166102f1816122d0565b6102fa816122d0565b82603354166033556122d0565b878052609786526001600160a01b03878920921691828952865260ff8789205416156103a3575b5086805260c98552858720612131565b5062278d00420190814211610390575060fb55610359578280f35b7f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989161ff001984541684555160018152a138808280f35b634e487b7160e01b865260119052602485fd5b8780526097865286882082895286526001878920918254161790553381887f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a43861032e565b61ffff1916610101178855386102dc565b855162461bcd60e51b8152808401869052602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608490fd5b50303b1580156102c15750600160ff8216146102c1565b50600160ff8216106102ba565b8380fd5b9190503461025c5761049e36611af1565b7f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e49182855260209260978452818620338752845260ff82872054161561071a5750845b825181101561071657836001600160a01b03806104fe84876123a2565b51169061050b84876123a2565b5116908451928380936370a0823160e01b8252308b83015260249485915afa92831561070c5789936106dd575b5084518781019163a9059cbb60e01b8352338483015260449485830152848252608082019267ffffffffffffffff92808510848611176106cb5760c08101858110858211176106b95789528a85527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460a0820152518c9182919082855af1903d156106aa573d92831161069857906105ef9392918851926105e28c601f19601f8401160185611ab7565b83523d8d8c85013e6125b2565b8681518061060b575b505050505061060690612393565b6104e1565b829081010312610694578601518015908115036106945761062e578086816105f8565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e608492602a89938988519562461bcd60e51b87528601528401528201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b8880fd5b634e487b7160e01b8c5260418b52848cfd5b906105ef9392506060916125b2565b634e487b7160e01b8e5260418d52868efd5b634e487b7160e01b8d5260418c52858dfd5b9092508681813d8311610705575b6106f58183611ab7565b8101031261069457519138610538565b503d6106eb565b85513d8b823e3d90fd5b8580f35b909491506107273361200a565b85519161073383611a9b565b604283528483019360603686378351156108d557603085538351906001918210156108c25790607860218601536041915b81831161085757505050610815576108119386936107fd936107ee6048946107b99a519a8576020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8d978801528251928391603789019101611f20565b8401917f206973206d697373696e6720726f6c6520000000000000000000000000000000603784015251809386840190611f20565b01036028810187520185611ab7565b5162461bcd60e51b81529283928301611f43565b0390fd5b50505080606493519262461bcd60e51b845283015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b909192600f811660108110156108af576f181899199a1a9b1b9c1cb0b131b232b360811b901a6108878588611ff9565b53881c92801561089c57600019019190610764565b634e487b7160e01b825260118952602482fd5b634e487b7160e01b835260328a52602483fd5b634e487b7160e01b815260328852602490fd5b634e487b7160e01b815260328752602490fd5b8383346101df57806003193601126101df578235906109056119f5565b9061090e612342565b33845260ff9260209380855261092883872054831061244f565b6001600160a01b0380941693338514610bc25733875281865261095661095084868a20611bee565b506123c2565b9060a082019283519060039182811015610baf576002610976911461249b565b878452878a5280895261098b84888c206124ff565b338a52808952868a2080546000199291838201918211610b9b57888a8e858f956109b8906109c496611bee565b50953383525220611bee565b919091610b88579081838f938303610b1e575b50505050338b528952868a209081548015610b0b5701906109f88282611bee565b610af9576005818d8f8180955581600184015581600284015581888401558201550155558583018051855183811015610ae657610a3490611a3a565b338c528a5289888c20950194848651168c528a52610a56888c209182546121bd565b905551935190811015610ad357610a6c90611a3a565b8689528752848820915116875285528286208054918201809211610ac057558151338152938401528201527f138dbc8474f748db86063dcef24cef1495bc73385a946f8d691128085e5ebec290606090a180f35b634e487b7160e01b875260118852602487fd5b634e487b7160e01b895260218a52602489fd5b634e487b7160e01b8c5260218d5260248cfd5b634e487b7160e01b8c528b8d5260248cfd5b634e487b7160e01b8c5260318d5260248cfd5b600582610b7f958a8395541673ffffffffffffffffffffffffffffffffffffffff19908188541617875560018701908c6001850154169082541617905560028201546002870155898201548a870155808201549086015501541691016124e7565b8b8d80836109d7565b50634e487b7160e01b8c528b8d5260248cfd5b50634e487b7160e01b8c5260118d5260248cfd5b634e487b7160e01b8b5260218c5260248bfd5b835162461bcd60e51b8152808901879052601160248201527f5472616e7366657220546f204f776e65720000000000000000000000000000006044820152606490fd5b5050346101df57816003193601126101df5751908152602090f35b5050346101df57816003193601126101df57602090517f61c92169ef077349011ff0b1383c894d86c5f0b41d986366b58a6cf31e93beda8152f35b9190503461025c578060031936011261025c577ff5df4035299cd4b5ca78fd7be5658dc1e719f43daf4efb818eb4560e6b5188349135602435610c9c611c2d565b8161010055806101015582519182526020820152a180f35b5050346101df57806003193601126101df5780602092610cd26119da565b610cda6119f5565b6001600160a01b039182168352610102865283832091168252845220549051908152f35b90503461025c578160031936011261025c578160209360ff92610d1f6119f5565b90358252609786526001600160a01b0383832091168252855220541690519015158152f35b90503461025c578160031936011261025c57610d776020936001600160a01b039235815260c98552836024359120612119565b92905490519260031b1c168152f35b5050346101df57610d9636611af1565b610da0815161241d565b91610dab825161241d565b93610db6835161241d565b92815b8151811015610e5957610e549083805260fd6020818152868620916001600160a01b039283610de886896123a2565b51168852825287872054610dfc858c6123a2565b526001875280825287872083610e1286896123a2565b51168852825287872054610e26858d6123a2565b5260028752815286862091610e3b84876123a2565b511686525284842054610e4e82886123a2565b52612393565b610db9565b50505090610e6b915193849384611bb4565b0390f35b5050346101df57816003193601126101df57602090517f10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e48152f35b839150346101df57816003193601126101df577f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a9081835260209160978352848420338552835260ff858520541615610f4657837f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2588487610f29612342565b610f31612342565b600160ff19603354161760335551338152a180f35b610f529391933361200a565b855191610f5e83611a9b565b604283528483019360603686378351156108d557603085538351906001918210156108c25790607860218601536041915b818311610fe457505050610815576108119386936107fd936107ee6048946107b99a519a8576020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8d978801528251928391603789019101611f20565b909192600f811660108110156108af576f181899199a1a9b1b9c1cb0b131b232b360811b901a6110148588611ff9565b53881c92801561089c57600019019190610f8f565b5050346101df57816003193601126101df57602090610101549051908152f35b5050346101df57816003193601126101df576020906001600160a01b0361010354169051908152f35b5050346101df57816003193601126101df5760209060ff6033541690519015158152f35b82843461120557602091826003193601126101df576001600160a01b0391826110bd6119da565b169384825260ff9081815283832054956110d687611ad9565b966110e386519889611ab7565b8088526110f2601f1991611ad9565b0182855b8281106111cd57505050835b87518110156111445761113f9082865284845261112461095082898920611bee565b61112e828b6123a2565b52611139818a6123a2565b50612393565b611102565b855183815288518185018190528190818901908b870190878a8d8d5b84831061116d5787870388f35b9193958597509260c0600192946111bb839851878151168352878582015116858401528681015187840152606080820151908401526080808201519084015260a08091015190830190611c20565b01970193019091879695939492611160565b87516111d881611a69565b878152878382015287898201528760608201528760808201528760a082015282828c0101520183906110f6565b80fd5b9190503461025c578060031936011261025c57602435908235611229612342565b33855260209360ff855261124183872054831061244f565b33865260ff855261125482848820611bee565b5060ff6005820154166003811015611362576112726002821461249b565b6002820180548781111561131f579261130a61130f937f5d95162205dc900555172b9649799b0334d5c456a8c9d875524229cd73416d4b9a9896936112bb8b60609c9a986121bd565b9055338c5260ff8952868c20926001600160a01b03600182015416946003820154910154908851956112ec87611a69565b3387528b87015289898701528b860152608085015260a084016123b6565b6124ff565b815193338552840152820152a180f35b865162461bcd60e51b81528086018a9052600f60248201527f416d6f756e7420546f6f204869676800000000000000000000000000000000006044820152606490fd5b634e487b7160e01b885260218352602488fd5b5050346101df57816003193601126101df57602090610100549051908152f35b90503461025c57606036600319011261025c5735600381101561025c576113ba6119f5565b604435916001600160a01b03908184168094036113f9579184939186936020975260fe8752848420911683528552828220908252845220549051908152f35b8580fd5b8383346101df57816003193601126101df577f427da25fe773164f88948d3e215c94b6554e2ed5e5f203a821c9f2f6131cf75a9081835260209160978352818420338552835260ff8285205416156114d157506033549360ff85161561149057507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa929360ff191660335551338152a180f35b82606492519162461bcd60e51b8352820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152fd5b6114de949391943361200a565b8551916114ea83611a9b565b604283528483019360603686378351156108d557603085538351906001918210156108c25790607860218601536041915b81831161157057505050610815576108119386936107fd936107ee6048946107b99a519a8576020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8d978801528251928391603789019101611f20565b909192600f811660108110156108af576f181899199a1a9b1b9c1cb0b131b232b360811b901a6115a08588611ff9565b53881c92801561089c5760001901919061151b565b828434611205576115c536611a0b565b9060038110156115f65782849283926020955260fc85526001600160a01b0383832091168252845220549051908152f35b634e487b7160e01b835260218552602483fd5b839150346101df57826003193601126101df576116246119f5565b90336001600160a01b0383160361164057906102599135611f6f565b608490602085519162461bcd60e51b8352820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152fd5b9190503461025c578060031936011261025c5761171791359060c96116cc6119f5565b92808652602090609782526116e660018589200154611e16565b808752609782526001600160a01b03848820951694858852825260ff84882054161561171b575b8652528320612131565b5080f35b808752609782528387208588528252838720805460ff191660011790553385827f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8a80a461170d565b5050346101df57816003193601126101df576020905173de5ed76e7c05ec5e4572cfc88d1acea165109e448152f35b839150346101df57826003193601126101df576117ae6119da565b91602435906001600160a01b03809416815260ff6020528481209081548310156112055750916117e460c0959261182b94611bee565b509084825416946001830154169260028301549060ff60056003860154948601549501541694815197885260208801528601526060850152608084015260a0830190611c20565bf35b90503461025c57602036600319011261025c5781602093600192358152609785522001549051908152f35b5050346101df5761186836611af1565b611872815161241d565b9161187d825161241d565b93611888835161241d565b92815b8151811015610e59576118ba9083805260fc6020818152868620916001600160a01b039283610de886896123a2565b61188b565b5050346101df57816003193601126101df5760209060fb549051908152f35b828434611205576118ee36611a0b565b9060038110156115f65782849283926020955260fd85526001600160a01b0383832091168252845220549051908152f35b8334611205576020366003190112611205576119396119da565b611941611c2d565b6001600160a01b03610103911673ffffffffffffffffffffffffffffffffffffffff1982541617905580f35b84913461025c57602036600319011261025c573563ffffffff60e01b811680910361025c5760209250635a05180f60e01b81149081156119af575b5015158152f35b637965db0b60e01b8114915081156119c9575b50836119a8565b6301ffc9a760e01b149050836119c2565b600435906001600160a01b03821682036119f057565b600080fd5b602435906001600160a01b03821682036119f057565b60409060031901126119f05760043560038110156119f057906024356001600160a01b03811681036119f05790565b6003811015611a535760005260fe602052604060002090565b634e487b7160e01b600052602160045260246000fd5b60c0810190811067ffffffffffffffff821117611a8557604052565b634e487b7160e01b600052604160045260246000fd5b6080810190811067ffffffffffffffff821117611a8557604052565b90601f8019910116810190811067ffffffffffffffff821117611a8557604052565b67ffffffffffffffff8111611a855760051b60200190565b6020806003198301126119f0576004359167ffffffffffffffff83116119f057806023840112156119f0578260040135611b2a81611ad9565b93611b386040519586611ab7565b81855260248486019260051b8201019283116119f057602401905b828210611b61575050505090565b81356001600160a01b03811681036119f0578152908301908301611b53565b90815180825260208080930193019160005b828110611ba0575050505090565b835185529381019392810192600101611b92565b91611bdd90611bcf611beb9593606086526060860190611b80565b908482036020860152611b80565b916040818403910152611b80565b90565b8054821015611c0a576000526006602060002091020190600090565b634e487b7160e01b600052603260045260246000fd5b906003821015611a535752565b3360009081527f0ba47cfd5e746a7a77d10576777b78a793709d8d5c4bbd732c557bc9a64bb31b60209081526040808320549092907f61c92169ef077349011ff0b1383c894d86c5f0b41d986366b58a6cf31e93beda9060ff1615611c925750505050565b611c9b3361200a565b845191611ca783611a9b565b60428352848301936060368637835115611e025760308553835190600191821015611e025790607860218601536041915b818311611d9457505050611d52576107b9938593611d3c93611d2d6048946108119951988576020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8b978801528251928391603789019101611f20565b01036028810185520183611ab7565b5162461bcd60e51b815291829160048301611f43565b60648486519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b909192600f81166010811015611dee576f181899199a1a9b1b9c1cb0b131b232b360811b901a611dc48588611ff9565b5360041c928015611dda57600019019190611cd8565b634e487b7160e01b82526011600452602482fd5b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b81526032600452602490fd5b600081815260209060978252604092838220338352835260ff848320541615611e3f5750505050565b611e483361200a565b845191611e5483611a9b565b60428352848301936060368637835115611e025760308553835190600191821015611e025790607860218601536041915b818311611eda57505050611d52576107b9938593611d3c93611d2d6048946108119951988576020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8b978801528251928391603789019101611f20565b909192600f81166010811015611dee576f181899199a1a9b1b9c1cb0b131b232b360811b901a611f0a8588611ff9565b5360041c928015611dda57600019019190611e85565b60005b838110611f335750506000910152565b8181015183820152602001611f23565b60409160208252611f638151809281602086015260208686019101611f20565b601f01601f1916010190565b906040611fae9260009080825260976020526001600160a01b0383832094169384835260205260ff8383205416611fb1575b815260c9602052206121e0565b50565b808252609760205282822084835260205282822060ff1981541690553384827ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b8580a4611fa1565b908151811015611c0a570160200190565b604051906060820182811067ffffffffffffffff821117611a8557604052602a8252602082016040368237825115611c0a57603090538151600190811015611c0a57607860218401536029905b8082116120ab5750506120675790565b606460405162461bcd60e51b815260206004820152602060248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f81166010811015612104576f181899199a1a9b1b9c1cb0b131b232b360811b901a6120da8486611ff9565b5360041c9180156120ef576000190190612057565b60246000634e487b7160e01b81526011600452fd5b60246000634e487b7160e01b81526032600452fd5b8054821015611c0a5760005260206000200190600090565b919060018301600090828252806020526040822054156000146121b757845494680100000000000000008610156121a3578361219361217a886001604098999a01855584612119565b819391549060031b600019811b9283911b169119161790565b9055549382526020522055600190565b634e487b7160e01b83526041600452602483fd5b50925050565b919082039182116121ca57565b634e487b7160e01b600052601160045260246000fd5b906001820190600092818452826020526040842054908115156000146122c957600019918083018181116122b5578254908482019182116122a15780820361226c575b505050805480156122585782019161223b8383612119565b909182549160031b1b191690555582526020526040812055600190565b634e487b7160e01b86526031600452602486fd5b61228c61227c61217a9386612119565b90549060031b1c92839286612119565b90558652846020526040862055388080612223565b634e487b7160e01b88526011600452602488fd5b634e487b7160e01b87526011600452602487fd5b5050505090565b156122d757565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608490fd5b60ff6033541661234e57565b60405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606490fd5b60001981146121ca5760010190565b8051821015611c0a5760209160051b010190565b6003821015611a535752565b9061241b6040516123d281611a69565b60a060ff600583966001600160a01b03808254168652600182015416602086015260028101546040860152600381015460608601526004810154608086015201541691016123b6565b565b9061242782611ad9565b6124346040519182611ab7565b8281528092612445601f1991611ad9565b0190602036910137565b1561245657565b60405162461bcd60e51b815260206004820152601260248201527f496e646578204f7574204f662052616e676500000000000000000000000000006044820152606490fd5b156124a257565b60405162461bcd60e51b815260206004820152601060248201527f4d6967726174696f6e204c6f636b6564000000000000000000000000000000006044820152606490fd5b906003811015611a535760ff80198354169116179055565b805468010000000000000000811015611a855761252191600182018155611bee565b91909161259c5760a0906001600160a01b038082511673ffffffffffffffffffffffffffffffffffffffff19908186541617855560018501916020840151169082541617905560408101516002840155606081015160038401556080810151600484015501516003811015611a5357600561241b92016124e7565b634e487b7160e01b600052600060045260246000fd5b9192901561261457508151156125c6575090565b3b156125cf5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156126275750805190602001fd5b60405162461bcd60e51b81529081906108119060048301611f4356fea164736f6c6343000811000a