60806040526040518060600160405280602281526020016200471b60229139600a90816200002e9190620006ce565b506040518060600160405280602281526020016200471b60229139600d9081620000599190620006ce565b506040518060600160405280602281526020016200471b60229139600e9081620000849190620006ce565b505f600f5f6101000a81548160ff02191690831515021790555061123a60105566016bcc41e90000601155601560125560326013556003601455348015620000ca575f80fd5b50733cc6cdda760b79bafa08df41ecfa224f810dceb660016040518060400160405280601181526020017f4e6967687420426174204c6567656e64730000000000000000000000000000008152506040518060400160405280600381526020017f4e424c00000000000000000000000000000000000000000000000000000000008152506200016e620001626200039e60201b60201c565b620003a560201b60201c565b81600390816200017f9190620006ce565b508060049081620001919190620006ce565b50620001a26200046660201b60201c565b600181905550505060016009819055505f6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b11156200039657801562000267576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16637d3e3dbe30846040518363ffffffff1660e01b815260040162000232929190620007f5565b5f604051808303815f87803b1580156200024a575f80fd5b505af11580156200025d573d5f803e3d5ffd5b5050505062000395565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146200031b576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663a0af290330846040518363ffffffff1660e01b8152600401620002e6929190620007f5565b5f604051808303815f87803b158015620002fe575f80fd5b505af115801562000311573d5f803e3d5ffd5b5050505062000394565b6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff16634420e486306040518263ffffffff1660e01b815260040162000364919062000820565b5f604051808303815f87803b1580156200037c575f80fd5b505af11580156200038f573d5f803e3d5ffd5b505050505b5b5b50506200083b565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f90565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620004e657607f821691505b602082108103620004fc57620004fb620004a1565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620005607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000523565b6200056c868362000523565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620005b6620005b0620005aa8462000584565b6200058d565b62000584565b9050919050565b5f819050919050565b620005d18362000596565b620005e9620005e082620005bd565b8484546200052f565b825550505050565b5f90565b620005ff620005f1565b6200060c818484620005c6565b505050565b5b818110156200063357620006275f82620005f5565b60018101905062000612565b5050565b601f82111562000682576200064c8162000502565b620006578462000514565b8101602085101562000667578190505b6200067f620006768562000514565b83018262000611565b50505b505050565b5f82821c905092915050565b5f620006a45f198460080262000687565b1980831691505092915050565b5f620006be838362000693565b9150826002028217905092915050565b620006d9826200046a565b67ffffffffffffffff811115620006f557620006f462000474565b5b620007018254620004ce565b6200070e82828562000637565b5f60209050601f83116001811462000744575f84156200072f578287015190505b6200073b8582620006b1565b865550620007aa565b601f198416620007548662000502565b5f5b828110156200077d5784890151825560018201915060208501945060208101905062000756565b868310156200079d578489015162000799601f89168262000693565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620007dd82620007b2565b9050919050565b620007ef81620007d1565b82525050565b5f6040820190506200080a5f830185620007e4565b620008196020830184620007e4565b9392505050565b5f602082019050620008355f830184620007e4565b92915050565b613ed280620008495f395ff3fe608060405260043610610250575f3560e01c80638da5cb5b11610138578063b88d4fde116100b5578063dbddb26a11610079578063dbddb26a14610814578063e113ad951461083e578063e757223014610866578063e8a3d485146108a2578063e985e9c5146108cc578063f2fde38b1461090857610250565b8063b88d4fde1461073e578063c002d23d1461075a578063c87b56dd14610784578063cfdbf254146107c0578063d8258d95146107ea57610250565b8063a0712d68116100fc578063a0712d6814610692578063a22cb465146106ae578063a4cdd719146106d6578063a76a9587146106ec578063a9527e821461071657610250565b80638da5cb5b146105c657806391b7f5ed146105f0578063938e3d7b1461061857806395d89b41146106405780639e1f39d61461066a57610250565b8063336f5ec3116101d15780635fe75587116101955780635fe75587146104be5780636352211e146104e857806363fa5bde1461052457806370a082311461054c578063715018a6146105885780637871e1541461059e57610250565b8063336f5ec3146103fe57806342842e0e1461042657806342966c6814610442578063507862d11461046a57806356b4f6731461049457610250565b80631422374f116102185780631422374f1461033c57806318160ddd146103665780631d9857781461039057806323b872dd146103cc57806324600fc3146103e857610250565b80630116bc2d1461025457806301ffc9a71461027e57806306fdde03146102ba578063081812fc146102e4578063095ea7b314610320575b5f80fd5b34801561025f575f80fd5b50610268610930565b6040516102759190612bab565b60405180910390f35b348015610289575f80fd5b506102a4600480360381019061029f9190612c2a565b610942565b6040516102b19190612bab565b60405180910390f35b3480156102c5575f80fd5b506102ce6109d3565b6040516102db9190612cdf565b60405180910390f35b3480156102ef575f80fd5b5061030a60048036038101906103059190612d32565b610a63565b6040516103179190612d9c565b60405180910390f35b61033a60048036038101906103359190612ddf565b610add565b005b348015610347575f80fd5b50610350610c1c565b60405161035d9190612e2c565b60405180910390f35b348015610371575f80fd5b5061037a610c22565b6040516103879190612e2c565b60405180910390f35b34801561039b575f80fd5b506103b660048036038101906103b19190612e45565b610c38565b6040516103c39190612e2c565b60405180910390f35b6103e660048036038101906103e19190612e70565b610c4d565b005b3480156103f3575f80fd5b506103fc610d55565b005b348015610409575f80fd5b50610424600480360381019061041f9190612d32565b610e5d565b005b610440600480360381019061043b9190612e70565b610e6f565b005b34801561044d575f80fd5b5061046860048036038101906104639190612d32565b610f77565b005b348015610475575f80fd5b5061047e610f85565b60405161048b9190612cdf565b60405180910390f35b34801561049f575f80fd5b506104a8611011565b6040516104b59190612cdf565b60405180910390f35b3480156104c9575f80fd5b506104d261109d565b6040516104df9190612e2c565b60405180910390f35b3480156104f3575f80fd5b5061050e60048036038101906105099190612d32565b6110a3565b60405161051b9190612d9c565b60405180910390f35b34801561052f575f80fd5b5061054a60048036038101906105459190612d32565b6110b4565b005b348015610557575f80fd5b50610572600480360381019061056d9190612e45565b6110c6565b60405161057f9190612e2c565b60405180910390f35b348015610593575f80fd5b5061059c61117b565b005b3480156105a9575f80fd5b506105c460048036038101906105bf9190612ec0565b61118e565b005b3480156105d1575f80fd5b506105da6111fb565b6040516105e79190612d9c565b60405180910390f35b3480156105fb575f80fd5b5061061660048036038101906106119190612d32565b611222565b005b348015610623575f80fd5b5061063e6004803603810190610639919061302a565b611234565b005b34801561064b575f80fd5b5061065461124f565b6040516106619190612cdf565b60405180910390f35b348015610675575f80fd5b50610690600480360381019061068b919061309b565b6112df565b005b6106ac60048036038101906106a79190612d32565b611314565b005b3480156106b9575f80fd5b506106d460048036038101906106cf91906130f5565b611751565b005b3480156106e1575f80fd5b506106ea611857565b005b3480156106f7575f80fd5b50610700611889565b60405161070d9190612bab565b60405180910390f35b348015610721575f80fd5b5061073c60048036038101906107379190612d32565b61189b565b005b610758600480360381019061075391906131d1565b6118ad565b005b348015610765575f80fd5b5061076e6119b7565b60405161077b9190612e2c565b60405180910390f35b34801561078f575f80fd5b506107aa60048036038101906107a59190612d32565b6119bd565b6040516107b79190612cdf565b60405180910390f35b3480156107cb575f80fd5b506107d4611a96565b6040516107e19190612e2c565b60405180910390f35b3480156107f5575f80fd5b506107fe611a9c565b60405161080b9190612e2c565b60405180910390f35b34801561081f575f80fd5b50610828611aa2565b6040516108359190612cdf565b60405180910390f35b348015610849575f80fd5b50610864600480360381019061085f9190612d32565b611b2e565b005b348015610871575f80fd5b5061088c60048036038101906108879190612d32565b611b40565b6040516108999190612e2c565b60405180910390f35b3480156108ad575f80fd5b506108b6611bc5565b6040516108c39190612cdf565b60405180910390f35b3480156108d7575f80fd5b506108f260048036038101906108ed9190613251565b611c55565b6040516108ff9190612bab565b60405180910390f35b348015610913575f80fd5b5061092e60048036038101906109299190612e45565b611ce3565b005b600f5f9054906101000a900460ff1681565b5f6301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061099c57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806109cc5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6060600380546109e2906132bc565b80601f0160208091040260200160405190810160405280929190818152602001828054610a0e906132bc565b8015610a595780601f10610a3057610100808354040283529160200191610a59565b820191905f5260205f20905b815481529060010190602001808311610a3c57829003601f168201915b5050505050905090565b5f610a6d82611d65565b610aa3576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60075f8381526020019081526020015f205f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f610ae7826110a3565b90508073ffffffffffffffffffffffffffffffffffffffff16610b08611dc0565b73ffffffffffffffffffffffffffffffffffffffff1614610b6b57610b3481610b2f611dc0565b611c55565b610b6a576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b8260075f8481526020019081526020015f205f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60145481565b5f610c2b611dc7565b6002546001540303905090565b600b602052805f5260405f205f915090505481565b5f6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115610d45576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430336040518363ffffffff1660e01b8152600401610cc39291906132ec565b6020604051808303815f875af1158015610cdf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d039190613327565b610d4457336040517fede71dcc000000000000000000000000000000000000000000000000000000008152600401610d3b9190612d9c565b60405180910390fd5b5b610d50838383611dcb565b505050565b610d5d6120da565b600260095403610da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d999061339c565b60405180910390fd5b60026009819055505f3373ffffffffffffffffffffffffffffffffffffffff1647604051610dcf906133e7565b5f6040518083038185875af1925050503d805f8114610e09576040519150601f19603f3d011682016040523d82523d5f602084013e610e0e565b606091505b5050905080610e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4990613445565b60405180910390fd5b506001600981905550565b610e656120da565b8060128190555050565b5f6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b1115610f67576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430336040518363ffffffff1660e01b8152600401610ee59291906132ec565b6020604051808303815f875af1158015610f01573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f259190613327565b610f6657336040517fede71dcc000000000000000000000000000000000000000000000000000000008152600401610f5d9190612d9c565b60405180910390fd5b5b610f72838383612158565b505050565b610f82816001612177565b50565b600d8054610f92906132bc565b80601f0160208091040260200160405190810160405280929190818152602001828054610fbe906132bc565b80156110095780601f10610fe057610100808354040283529160200191611009565b820191905f5260205f20905b815481529060010190602001808311610fec57829003601f168201915b505050505081565b600a805461101e906132bc565b80601f016020809104026020016040519081016040528092919081815260200182805461104a906132bc565b80156110955780601f1061106c57610100808354040283529160200191611095565b820191905f5260205f20905b81548152906001019060200180831161107857829003601f168201915b505050505081565b60135481565b5f6110ad826123b4565b9050919050565b6110bc6120da565b8060108190555050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361112c576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054169050919050565b6111836120da565b61118c5f612478565b565b6111966120da565b601054826111a2610c22565b6111ac9190613490565b11156111ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e49061350d565b60405180910390fd5b6111f78183612539565b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61122a6120da565b8060118190555050565b61123c6120da565b80600a908161124b91906136c8565b5050565b60606004805461125e906132bc565b80601f016020809104026020016040519081016040528092919081815260200182805461128a906132bc565b80156112d55780601f106112ac576101008083540402835291602001916112d5565b820191905f5260205f20905b8154815290600101906020018083116112b857829003601f168201915b5050505050905090565b6112e76120da565b80600e90816112f691906136c8565b5081600c5f6101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611382576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611379906137e1565b60405180910390fd5b6002600954036113c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113be9061339c565b60405180910390fd5b60026009819055505f80600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460145461141c91906137ff565b90508083106114cf57808361143191906137ff565b60115461143e9190613832565b915080600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114899190613490565b600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061155d565b5f915082600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461151b9190613490565b600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b600f5f9054906101000a900460ff166115ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a2906138bd565b60405180910390fd5b601054836115b7610c22565b6115c19190613490565b1115611602576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f990613925565b60405180910390fd5b6013548361160f336110c6565b6116199190613490565b111561165a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611651906139b3565b60405180910390fd5b60125483111561169f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169690613a41565b60405180910390fd5b813410156116e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d990613acf565b60405180910390fd5b6116ec3384612539565b81341115611744573373ffffffffffffffffffffffffffffffffffffffff166108fc833461171a91906137ff565b90811502906040515f60405180830381858888f19350505050158015611742573d5f803e3d5ffd5b505b5050600160098190555050565b8060085f61175d611dc0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611806611dc0565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161184b9190612bab565b60405180910390a35050565b61185f6120da565b600f5f9054906101000a900460ff1615600f5f6101000a81548160ff021916908315150217905550565b600c5f9054906101000a900460ff1681565b6118a36120da565b8060148190555050565b5f6daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff163b11156119a5576daaeb6d7670e522a718067333cd4e73ffffffffffffffffffffffffffffffffffffffff1663c617113430336040518363ffffffff1660e01b81526004016119239291906132ec565b6020604051808303815f875af115801561193f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119639190613327565b6119a457336040517fede71dcc00000000000000000000000000000000000000000000000000000000815260040161199b9190612d9c565b60405180910390fd5b5b6119b184848484612556565b50505050565b60115481565b6060600c5f9054906101000a900460ff1615611a0557600e6119de836125c8565b6040516020016119ef929190613ba7565b6040516020818303038152906040529050611a91565b600d8054611a12906132bc565b80601f0160208091040260200160405190810160405280929190818152602001828054611a3e906132bc565b8015611a895780601f10611a6057610100808354040283529160200191611a89565b820191905f5260205f20905b815481529060010190602001808311611a6c57829003601f168201915b505050505090505b919050565b60125481565b60105481565b600e8054611aaf906132bc565b80601f0160208091040260200160405190810160405280929190818152602001828054611adb906132bc565b8015611b265780601f10611afd57610100808354040283529160200191611b26565b820191905f5260205f20905b815481529060010190602001808311611b0957829003601f168201915b505050505081565b611b366120da565b8060138190555050565b5f805f600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054601454611b8e91906137ff565b9050808410611bb7578084611ba391906137ff565b601154611bb09190613832565b9150611bbb565b5f91505b8192505050919050565b6060600a8054611bd4906132bc565b80601f0160208091040260200160405190810160405280929190818152602001828054611c00906132bc565b8015611c4b5780601f10611c2257610100808354040283529160200191611c4b565b820191905f5260205f20905b815481529060010190602001808311611c2e57829003601f168201915b5050505050905090565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b611ceb6120da565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5090613c3a565b60405180910390fd5b611d6281612478565b50565b5f81611d6f611dc7565b11158015611d7e575060015482105b8015611db957505f7c010000000000000000000000000000000000000000000000000000000060055f8581526020019081526020015f205416145b9050919050565b5f33905090565b5f90565b5f611dd5826123b4565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611e3c576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80611e4784612721565b91509150611e5d8187611e58611dc0565b612744565b611ea957611e7286611e6d611dc0565b611c55565b611ea8576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611f0e576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611f1b8686866001612787565b8015611f25575f82555b60065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154600190039190508190555060065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815460010191905081905550611fed85611fc988888761278d565b7c0200000000000000000000000000000000000000000000000000000000176127b4565b60055f8681526020019081526020015f20819055505f7c020000000000000000000000000000000000000000000000000000000084160361206a575f6001850190505f60055f8381526020019081526020015f205403612068576001548114612067578360055f8381526020019081526020015f20819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46120d286868660016127de565b505050505050565b6120e26127e4565b73ffffffffffffffffffffffffffffffffffffffff166121006111fb565b73ffffffffffffffffffffffffffffffffffffffff1614612156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214d90613ca2565b60405180910390fd5b565b61217283838360405180602001604052805f8152506118ad565b505050565b5f612181836123b4565b90505f8190505f8061219286612721565b9150915084156121fb576121ae81846121a9611dc0565b612744565b6121fa576121c3836121be611dc0565b611c55565b6121f9576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b612208835f886001612787565b8015612212575f82555b600160806001901b0360065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055506122b683612273855f8861278d565b7c02000000000000000000000000000000000000000000000000000000007c010000000000000000000000000000000000000000000000000000000017176127b4565b60055f8881526020019081526020015f20819055505f7c0200000000000000000000000000000000000000000000000000000000851603612333575f6001870190505f60055f8381526020019081526020015f205403612331576001548114612330578460055f8381526020019081526020015f20819055505b5b505b855f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461239b835f8860016127de565b60025f8154809291906001019190505550505050505050565b5f80829050806123c2611dc7565b1161244157600154811015612440575f60055f8381526020019081526020015f205490505f7c010000000000000000000000000000000000000000000000000000000082160361243e575b5f81036124345760055f836001900393508381526020019081526020015f2054905061240d565b8092505050612473565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612552828260405180602001604052805f8152506127eb565b5050565b612561848484610c4d565b5f8373ffffffffffffffffffffffffffffffffffffffff163b146125c25761258b84848484612884565b6125c1576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b60605f820361260e576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061271c565b5f8290505f5b5f821461263d57808061262690613cc0565b915050600a826126369190613d34565b9150612614565b5f8167ffffffffffffffff81111561265857612657612f06565b5b6040519080825280601f01601f19166020018201604052801561268a5781602001600182028036833780820191505090505b5090505b5f8514612715576001826126a291906137ff565b9150600a856126b19190613d64565b60306126bd9190613490565b60f81b8183815181106126d3576126d2613d94565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600a8561270e9190613d34565b945061268e565b8093505050505b919050565b5f805f60075f8581526020019081526020015f2090508092508254915050915091565b5f73ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b5f8060e883901c905060e86127a38686846129cf565b62ffffff16901b9150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b5f33905090565b6127f583836129d7565b5f8373ffffffffffffffffffffffffffffffffffffffff163b1461287f575f60015490505f83820390505b6128325f868380600101945086612884565b612868576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81811061282057816001541461287c575f80fd5b50505b505050565b5f8373ffffffffffffffffffffffffffffffffffffffff1663150b7a026128a9611dc0565b8786866040518563ffffffff1660e01b81526004016128cb9493929190613e13565b6020604051808303815f875af192505050801561290657506040513d601f19601f820116820180604052508101906129039190613e71565b60015b61297c573d805f8114612934576040519150601f19603f3d011682016040523d82523d5f602084013e612939565b606091505b505f815103612974576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b5f9392505050565b5f60015490505f8203612a16576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612a225f848385612787565b600160406001901b17820260065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282540192505081905550612a9483612a855f865f61278d565b612a8e85612b82565b176127b4565b60055f8381526020019081526020015f20819055505f80838301905073ffffffffffffffffffffffffffffffffffffffff8516915082825f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4600183015b818114612b2e5780835f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4600181019050612af5565b505f8203612b68576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001819055505050612b7d5f8483856127de565b505050565b5f6001821460e11b9050919050565b5f8115159050919050565b612ba581612b91565b82525050565b5f602082019050612bbe5f830184612b9c565b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612c0981612bd5565b8114612c13575f80fd5b50565b5f81359050612c2481612c00565b92915050565b5f60208284031215612c3f57612c3e612bcd565b5b5f612c4c84828501612c16565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612c8c578082015181840152602081019050612c71565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612cb182612c55565b612cbb8185612c5f565b9350612ccb818560208601612c6f565b612cd481612c97565b840191505092915050565b5f6020820190508181035f830152612cf78184612ca7565b905092915050565b5f819050919050565b612d1181612cff565b8114612d1b575f80fd5b50565b5f81359050612d2c81612d08565b92915050565b5f60208284031215612d4757612d46612bcd565b5b5f612d5484828501612d1e565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d8682612d5d565b9050919050565b612d9681612d7c565b82525050565b5f602082019050612daf5f830184612d8d565b92915050565b612dbe81612d7c565b8114612dc8575f80fd5b50565b5f81359050612dd981612db5565b92915050565b5f8060408385031215612df557612df4612bcd565b5b5f612e0285828601612dcb565b9250506020612e1385828601612d1e565b9150509250929050565b612e2681612cff565b82525050565b5f602082019050612e3f5f830184612e1d565b92915050565b5f60208284031215612e5a57612e59612bcd565b5b5f612e6784828501612dcb565b91505092915050565b5f805f60608486031215612e8757612e86612bcd565b5b5f612e9486828701612dcb565b9350506020612ea586828701612dcb565b9250506040612eb686828701612d1e565b9150509250925092565b5f8060408385031215612ed657612ed5612bcd565b5b5f612ee385828601612d1e565b9250506020612ef485828601612dcb565b9150509250929050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612f3c82612c97565b810181811067ffffffffffffffff82111715612f5b57612f5a612f06565b5b80604052505050565b5f612f6d612bc4565b9050612f798282612f33565b919050565b5f67ffffffffffffffff821115612f9857612f97612f06565b5b612fa182612c97565b9050602081019050919050565b828183375f83830152505050565b5f612fce612fc984612f7e565b612f64565b905082815260208101848484011115612fea57612fe9612f02565b5b612ff5848285612fae565b509392505050565b5f82601f83011261301157613010612efe565b5b8135613021848260208601612fbc565b91505092915050565b5f6020828403121561303f5761303e612bcd565b5b5f82013567ffffffffffffffff81111561305c5761305b612bd1565b5b61306884828501612ffd565b91505092915050565b61307a81612b91565b8114613084575f80fd5b50565b5f8135905061309581613071565b92915050565b5f80604083850312156130b1576130b0612bcd565b5b5f6130be85828601613087565b925050602083013567ffffffffffffffff8111156130df576130de612bd1565b5b6130eb85828601612ffd565b9150509250929050565b5f806040838503121561310b5761310a612bcd565b5b5f61311885828601612dcb565b925050602061312985828601613087565b9150509250929050565b5f67ffffffffffffffff82111561314d5761314c612f06565b5b61315682612c97565b9050602081019050919050565b5f61317561317084613133565b612f64565b90508281526020810184848401111561319157613190612f02565b5b61319c848285612fae565b509392505050565b5f82601f8301126131b8576131b7612efe565b5b81356131c8848260208601613163565b91505092915050565b5f805f80608085870312156131e9576131e8612bcd565b5b5f6131f687828801612dcb565b945050602061320787828801612dcb565b935050604061321887828801612d1e565b925050606085013567ffffffffffffffff81111561323957613238612bd1565b5b613245878288016131a4565b91505092959194509250565b5f806040838503121561326757613266612bcd565b5b5f61327485828601612dcb565b925050602061328585828601612dcb565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806132d357607f821691505b6020821081036132e6576132e561328f565b5b50919050565b5f6040820190506132ff5f830185612d8d565b61330c6020830184612d8d565b9392505050565b5f8151905061332181613071565b92915050565b5f6020828403121561333c5761333b612bcd565b5b5f61334984828501613313565b91505092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f613386601f83612c5f565b915061339182613352565b602082019050919050565b5f6020820190508181035f8301526133b38161337a565b9050919050565b5f81905092915050565b50565b5f6133d25f836133ba565b91506133dd826133c4565b5f82019050919050565b5f6133f1826133c7565b9150819050919050565b7f5472616e73666572206661696c656400000000000000000000000000000000005f82015250565b5f61342f600f83612c5f565b915061343a826133fb565b602082019050919050565b5f6020820190508181035f83015261345c81613423565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61349a82612cff565b91506134a583612cff565b92508282019050808211156134bd576134bc613463565b5b92915050565b7f4e6f206d6f7265204e46547320696e2073746f636b21000000000000000000005f82015250565b5f6134f7601683612c5f565b9150613502826134c3565b602082019050919050565b5f6020820190508181035f830152613524816134eb565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026135877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261354c565b613591868361354c565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6135cc6135c76135c284612cff565b6135a9565b612cff565b9050919050565b5f819050919050565b6135e5836135b2565b6135f96135f1826135d3565b848454613558565b825550505050565b5f90565b61360d613601565b6136188184846135dc565b505050565b5b8181101561363b576136305f82613605565b60018101905061361e565b5050565b601f821115613680576136518161352b565b61365a8461353d565b81016020851015613669578190505b61367d6136758561353d565b83018261361d565b50505b505050565b5f82821c905092915050565b5f6136a05f1984600802613685565b1980831691505092915050565b5f6136b88383613691565b9150826002028217905092915050565b6136d182612c55565b67ffffffffffffffff8111156136ea576136e9612f06565b5b6136f482546132bc565b6136ff82828561363f565b5f60209050601f831160018114613730575f841561371e578287015190505b61372885826136ad565b86555061378f565b601f19841661373e8661352b565b5f5b8281101561376557848901518255600182019150602085019450602081019050613740565b86831015613782578489015161377e601f891682613691565b8355505b6001600288020188555050505b505050505050565b7f5468652063616c6c657220697320616e6f7468657220636f6e747261637400005f82015250565b5f6137cb601e83612c5f565b91506137d682613797565b602082019050919050565b5f6020820190508181035f8301526137f8816137bf565b9050919050565b5f61380982612cff565b915061381483612cff565b925082820390508181111561382c5761382b613463565b5b92915050565b5f61383c82612cff565b915061384783612cff565b925082820261385581612cff565b9150828204841483151761386c5761386b613463565b5b5092915050565b7f4e465473206e6f742072656164792079657421000000000000000000000000005f82015250565b5f6138a7601383612c5f565b91506138b282613873565b602082019050919050565b5f6020820190508181035f8301526138d48161389b565b9050919050565b7f4e6f206d6f7265204e46547321000000000000000000000000000000000000005f82015250565b5f61390f600d83612c5f565b915061391a826138db565b602082019050919050565b5f6020820190508181035f83015261393c81613903565b9050919050565b7f547269656420746f20746f74616c206d696e74207175616e69747920706572205f8201527f77616c6c6574206f766572206c696d6974000000000000000000000000000000602082015250565b5f61399d603183612c5f565b91506139a882613943565b604082019050919050565b5f6020820190508181035f8301526139ca81613991565b9050919050565b7f547269656420746f206d696e74207175616e697479206f766572206c696d69745f8201527f2c20726574727920776974682072656475636564207175616e74697479000000602082015250565b5f613a2b603d83612c5f565b9150613a36826139d1565b604082019050919050565b5f6020820190508181035f830152613a5881613a1f565b9050919050565b7f4d7573742073656e6420656e6f7567682065746820746f2061646f70742042615f8201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ab9602183612c5f565b9150613ac482613a5f565b604082019050919050565b5f6020820190508181035f830152613ae681613aad565b9050919050565b5f81905092915050565b5f8154613b03816132bc565b613b0d8186613aed565b9450600182165f8114613b275760018114613b3c57613b6e565b60ff1983168652811515820286019350613b6e565b613b458561352b565b5f5b83811015613b6657815481890152600182019150602081019050613b47565b838801955050505b50505092915050565b5f613b8182612c55565b613b8b8185613aed565b9350613b9b818560208601612c6f565b80840191505092915050565b5f613bb28285613af7565b9150613bbe8284613b77565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613c24602683612c5f565b9150613c2f82613bca565b604082019050919050565b5f6020820190508181035f830152613c5181613c18565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613c8c602083612c5f565b9150613c9782613c58565b602082019050919050565b5f6020820190508181035f830152613cb981613c80565b9050919050565b5f613cca82612cff565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613cfc57613cfb613463565b5b600182019050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613d3e82612cff565b9150613d4983612cff565b925082613d5957613d58613d07565b5b828204905092915050565b5f613d6e82612cff565b9150613d7983612cff565b925082613d8957613d88613d07565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f613de582613dc1565b613def8185613dcb565b9350613dff818560208601612c6f565b613e0881612c97565b840191505092915050565b5f608082019050613e265f830187612d8d565b613e336020830186612d8d565b613e406040830185612e1d565b8181036060830152613e528184613ddb565b905095945050505050565b5f81519050613e6b81612c00565b92915050565b5f60208284031215613e8657613e85612bcd565b5b5f613e9384828501613e5d565b9150509291505056fea2646970667358221220b6d0062482bb5e486b7676700b040093e2b02ceffaf8d53dc3a3e5a09c939c2464736f6c6343000814003368747470733a2f2f6f70656e7365612e7468656261746c6567656e64732e78797a2f