0x6080806040523461001a57611473908161001f823930815050f35b5f80fdfe6080604081815260049182361015610015575f80fd5b5f92833560e01c918263054a7d8414610c2957508163055cedbd14610aa957816308a700d6146109bd578163107383fb146109725781631185b23c146108c857816322cebdee146108905781632b9f4796146107d95781633906001d1461073157816340d2f75a14610700578163433e3f291461064f5781635f396d4b146105d05781638b4979b81461058a578163a733bdaa14610476578163b3f07bbd146103eb578163b620e8721461025f578163c9bc77bb14610175575063eeca1f60146100dd575f80fd5b6060366003190112610171578051906100f582610d16565b6100fd610d88565b918281526024359361ffff8516850361016e5750838161016a95602085940152604435928391015282519363ffffffff60e01b16602085015261ffff60f01b9060f01b16602484015260268301526026825261015882610d16565b51918291602083526020830190610dc4565b0390f35b80fd5b5080fd5b9050602036600319011261025b5780356001600160401b038111610257576101a09036908301610e00565b918051926101ad84610ccc565b848452602084018581528285019186835260608601948786526080870197885263ffffffff60e01b91828282015160e01b1688526024810151845260ff60258201511685526045810151875260ff6046820151168952516046810361023a5760a08860ff8b8a8a838b8b8b8451985116885251602088015251169085015251606084015251166080820152f35b85516355c5b3e360e11b8152918201526046602482015260449150fd5b8380fd5b8280fd5b828461026a36610f0c565b6001808301519093928492909160ff9081169061028683610de9565b9861029389519a8b610d67565b838a52601f196102a285610de9565b01875b8181106103ce5750508693875b84811061032557505050505050906102c991611083565b825192602080850191818652865180935281818701918460051b880101970193905b8382106102f85786880387f35b90919293948380610314839a603f198b82030186528951610f3d565b9997019594939190910191016102eb565b9091929394966103419061033a9c9a9c6113a6565b50876113bf565b97908581511691831515806103c4575b6103a857508382101561038c579161037e828c989796959461037782610384969b611415565b528c611415565b506113f3565b9a989a6102b2565b60448585848f519263344fa80b60e11b84528301526024820152fd5b85836044928f5192630555a4b960e01b84528301526024820152fd5b5080831115610351565b6020906103dc9c9a9c6113a6565b82828d010152019a989a6102a5565b82848160031936011261016e5782359061ffff8216820361016e57602435906001600160401b03821161016e575061042b60209461043092369101610f5d565b610fa7565b61046c6022845180938782019561ffff60f01b9060f01b16865261045c815180928a8686019101610da3565b8101036002810184520182610d67565b5190209051908152f35b8284602036600319011261016e5782356001600160401b038111610171576104a19036908501610e00565b908251926104ae84610cfb565b8184526020840182815281850183815260608601938452848701519196909160e01b6001600160e01b0319166319ac6aeb60e21b81016105745750600585015168ffffffffffffffff0060ff600d88015192169160081b16178652602d8501518752604d850151825261ffff9485604f82015116855251604f810361055757505060809568ffffffffffffffffff83519651168652516020860152519084015251166060820152f35b83516355c5b3e360e11b815291820152604f602482015260449150fd5b83516356d2569d60e01b81529182015260249150fd5b8284602036600319011261016e578235906001600160401b03821161016e575061042b61016a936105bd92369101610f5d565b9051918291602083526020830190610dc4565b8284602036600319011261016e578235906001600160401b03821161016e575061016a9261060091369101610e00565b906106096113a6565b5061063d6106156113a6565b9260ff600182015116845261063160ff6002830151168261119a565b91906020860152611083565b51918291602083526020830190610f3d565b838360203660031901126101715782356001600160401b03811161025b5761067a9036908501610e00565b9181519261068784610d16565b8184526020840182815283850192835263ffffffff60e01b808784015160e01b16865261ffff92836006820151168352602681015185525196602688036106e257506060965084519551168552511660208401525190820152f35b85516355c5b3e360e11b815290810188905260266024820152604490fd5b8261071361070d36610f0c565b906113bf565b825183815292839261072791840190610f3d565b9060208301520390f35b9050600319828136011261025757610747610d88565b91602435916001600160401b03908184116107d55760809084360301126107d15784519561077487610cfb565b8383013587526024840135602088015260448401358281116101715761079f90843691870101610e00565b86880152606484013591821161016e575061016a95926105bd94926107c79236920101610e00565b6060830152611282565b8580fd5b8680fd5b83836080366003190112610171578051926107f384610cfb565b359168ffffffffffffffffff8316830361016e578284526024358060208601526044359081848701526064359261ffff8416840361016e575082606061016a970152835194632653951560e21b602087015260ff60f81b8160f81b1660248701526001600160401b0360c01b9060b81b166025860152602d850152604d84015261ffff60f01b9060f01b16606d830152604f825261015882610cfb565b8284602036600319011261016e578235906001600160401b03821161016e57506108c361016a936105bd92369101610e55565b611357565b828460a036600319011261016e576108de610d88565b926001600160401b03606435818111610257576108fe9036908401610e00565b9260843591821161016e57509161091e6109519261016a94369101610e00565b94610927611333565b50845195869261093684610cfb565b60243584526044356020850152868401526060830152611282565b6109648351948486958652850190610ea4565b908382036020850152610dc4565b8284602036600319011261016e578235906001600160401b03821161016e57506109a561016a936109aa92369101610e00565b611045565b9051918291602083526020830190610ee5565b90508160031936011261025b576109d2610d88565b92602435906001600160401b03821161016e57506109f39036908301610e00565b906109fc611333565b50610a05611026565b50610a0e611333565b9363ffffffff60e01b808385015160e01b1691168103610574575050610a8881602461016a930151855260448101516020860152610a8261ffff91610a766002610a5e85604685015116846110ae565b919095898b0196875281838601015116910183611210565b91906060890152611083565b51611045565b610a9b8351948486958652850190610ea4565b908382036020850152610ee5565b602092915036600319018313610257578035906001600160401b03908183116107d157366023840112156107d1578281013591610ae583610de9565b93610af286519586610d67565b838552868501906024809560051b82010192368411610c2557858201925b848410610bfb575050505050825160ff8111610be957505050805190606094905b828210610b8857505090610b79602161016a93835196879160ff60f81b9060f81b1687830152610b6981518092898686019101610da3565b8101036001810187520185610d67565b51928284938452830190610dc4565b9094610be390610bdd86610ba5610b9f8a87611415565b51611357565b9287519381610bbd8693518092868087019101610da3565b8201610bd182518093868085019101610da3565b01038084520182610d67565b956113f3565b90610b31565b845163a341969160e01b815291820152fd5b8335828111610c21578a91610c1683928a3691880101610e55565b815201930192610b10565b8b80fd5b8980fd5b848460a036600319011261017157610c4083610ccc565b610c48610d88565b91828452602435908160208601526044359160ff83168303610171578284870152606435908160608801526084359260ff8416840361016e575082608061016a98015284519563ffffffff60e01b166020870152602486015260ff60f81b809360f81b166044860152604585015260f81b1660658301526046825261015882610cfb565b60a081019081106001600160401b03821117610ce757604052565b634e487b7160e01b5f52604160045260245ffd5b608081019081106001600160401b03821117610ce757604052565b606081019081106001600160401b03821117610ce757604052565b604081019081106001600160401b03821117610ce757604052565b602081019081106001600160401b03821117610ce757604052565b90601f801991011681019081106001600160401b03821117610ce757604052565b600435906001600160e01b031982168203610d9f57565b5f80fd5b5f5b838110610db45750505f910152565b8181015183820152602001610da5565b90602091610ddd81518092818552858086019101610da3565b601f01601f1916010190565b6001600160401b038111610ce75760051b60200190565b81601f82011215610d9f578035906001600160401b038211610ce75760405192610e34601f8401601f191660200185610d67565b82845260208383010111610d9f57815f926020809301838601378301015290565b9190604083820312610d9f5760405190610e6e82610d31565b8193803560ff81168103610d9f5783526020810135916001600160401b038311610d9f57602092610e9f9201610e00565b910152565b610ee29181518152602082015160208201526060610ed16040840151608060408501526080840190610dc4565b920151906060818403910152610dc4565b90565b9060606040610ee29380518452602081015160208501520151918160408201520190610dc4565b6040600319820112610d9f57600435906001600160401b038211610d9f57610f3691600401610e00565b9060243590565b9060406020610ee29360ff81511684520151918160208201520190610dc4565b9190606083820312610d9f5760405190610f7682610d16565b819380358352602081013560208401526040810135916001600160401b038311610d9f57604092610e9f9201610e00565b6040810180515161ffff811161100e57506062610ee291519283519360208251920151946040519586936020850152604084015261ffff60f01b9060f01b166060830152610ffe8151809260208686019101610da3565b8101036042810184520182610d67565b6024906040519063a341969160e01b82526004820152fd5b6040519061103382610d16565b60606040835f81525f60208201520152565b90611081611051611026565b92602081015184526040810151602085015261107561ffff60428301511682611124565b91906040860152611083565b565b5190808203611090575050565b60449250604051916355c5b3e360e11b835260048301526024820152fd5b9091821561110857826046019160405193601f81169182156110ff575b6046838701938385019201015b8184106110ef5750508452601f01601f1916604052565b80518452602093840193016110d8565b602092506110cb565b91505060405161111781610d4c565b5f81525f36813790604690565b9091821561117e57826042019160405193601f8116918215611175575b6042838701938385019201015b8184106111655750508452601f01601f1916604052565b805184526020938401930161114e565b60209250611141565b91505060405161118d81610d4c565b5f81525f36813790604290565b909182156111f457826002019160405193601f81169182156111eb575b6002838701938385019201015b8184106111db5750508452601f01601f1916604052565b80518452602093840193016111c4565b602092506111b7565b91505060405161120381610d4c565b5f81525f36813790600290565b92908215611267578281019260405194601f821692831561125e575b838701938385019201015b81841061124e5750508452601f01601f1916604052565b8051845260209384019301611237565b6020935061122c565b9250905060405161127781610d4c565b5f81525f3681379190565b604082018051519061ffff9182811161100e575080515191606085019081515190811161100e575091610ee2939160689351918251916020885198015190519060405198899663ffffffff60e01b1660208801526024870152604486015261ffff60f01b809260f01b166064860152611305815180926020606689019101610da3565b84019160f01b1660668201526113248251809360208785019101610da3565b01036048810184520182610d67565b6040519061134082610cfb565b606080835f81525f60208201528160408201520152565b6020810180515160ff811161100e57506022610ee2915192835190519360405194859260ff60f81b809260f81b16602085015260f81b16602183015261045c8151809260208686019101610da3565b604051906113b382610d31565b60606020835f81520152565b91906113ea906113cd6113a6565b93600260ff81848401826001820151168952015116920190611210565b91906020840152565b5f1981146114015760010190565b634e487b7160e01b5f52601160045260245ffd5b80518210156114295760209160051b010190565b634e487b7160e01b5f52603260045260245ffdfea26469706673582212207b50a7cb5d02b0fbef514b381299098e431a37ad5ac39861110d35f99e96369864736f6c63430008140033