60806040526000600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff02191690831515021790555061270f600b553480156200004d57600080fd5b506040518060400160405280600a81526020017f506f6f72204475646573000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f44554445530000000000000000000000000000000000000000000000000000008152508160029080519060200190620000d2929190620006ec565b508060039080519060200190620000eb929190620006ec565b50620000fc6200014560201b60201c565b600081905550505062000124620001186200014e60201b60201c565b6200015660201b60201c565b60016009819055506200013f3360fa6200021c60201b60201c565b620009ed565b60006001905090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200023e8282604051806020016040528060008152506200024260201b60201c565b5050565b620002548383620002f360201b60201c565b60008373ffffffffffffffffffffffffffffffffffffffff163b14620002ee57600080549050600083820390505b6200029d6000868380600101945086620004f260201b60201c565b620002d4576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81811062000282578160005414620002eb57600080fd5b50505b505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000361576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156200039d576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b620003b260008483856200066460201b60201c565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555062000441836200042360008660006200066a60201b60201c565b62000434856200069a60201b60201c565b17620006aa60201b60201c565b60046000838152602001908152602001600020819055506000819050600083830190505b818060010192508573ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48082106200046557806000819055505050620004ed6000848385620006d560201b60201c565b505050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a0262000520620006db60201b60201c565b8786866040518563ffffffff1660e01b815260040162000544949392919062000848565b602060405180830381600087803b1580156200055f57600080fd5b505af19250505080156200059357506040513d601f19601f82011682018060405250810190620005909190620007b3565b60015b62000611573d8060008114620005c6576040519150601f19603f3d011682016040523d82523d6000602084013e620005cb565b606091505b5060008151141562000609576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b50505050565b60008060e883901c905060e862000689868684620006e360201b60201c565b62ffffff16901b9150509392505050565b60006001821460e11b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b600033905090565b60009392505050565b828054620006fa9062000958565b90600052602060002090601f0160209004810192826200071e57600085556200076a565b82601f106200073957805160ff19168380011785556200076a565b828001600101855582156200076a579182015b82811115620007695782518255916020019190600101906200074c565b5b5090506200077991906200077d565b5090565b5b80821115620007985760008160009055506001016200077e565b5090565b600081519050620007ad81620009d3565b92915050565b600060208284031215620007cc57620007cb620009bd565b5b6000620007dc848285016200079c565b91505092915050565b620007f081620008b8565b82525050565b600062000803826200089c565b6200080f8185620008a7565b93506200082181856020860162000922565b6200082c81620009c2565b840191505092915050565b620008428162000918565b82525050565b60006080820190506200085f6000830187620007e5565b6200086e6020830186620007e5565b6200087d604083018562000837565b8181036060830152620008918184620007f6565b905095945050505050565b600081519050919050565b600082825260208201905092915050565b6000620008c582620008f8565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b838110156200094257808201518184015260208101905062000925565b8381111562000952576000848401525b50505050565b600060028204905060018216806200097157607f821691505b602082108114156200098857620009876200098e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b620009de81620008cc565b8114620009ea57600080fd5b50565b61353280620009fd6000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c806370a082311161010f578063c87b56dd116100a2578063e6f6ef1e11610071578063e6f6ef1e14610542578063e985e9c514610560578063f2fde38b14610590578063fd5e8efe146105ac576101e5565b8063c87b56dd146104e2578063dfe5dd6814610512578063e222c7f91461051c578063e58306f914610526576101e5565b806395d89b41116100de57806395d89b411461046e57806395fd0d9a1461048c578063a22cb465146104aa578063b88d4fde146104c6576101e5565b806370a08231146103f8578063715018a6146104285780638da5cb5b146104325780639168e23e14610450576101e5565b806332cb6b0c116101875780635a23dd99116101565780635a23dd99146103605780636352211e146103905780636957637b146103c05780636afcb7b0146103dc576101e5565b806332cb6b0c146102da5780633d6dc6cf146102f857806342842e0e1461032857806342966c6814610344576101e5565b8063095ea7b3116101c3578063095ea7b31461026857806318160ddd146102845780631b004d25146102a257806323b872dd146102be576101e5565b806301ffc9a7146101ea57806306fdde031461021a578063081812fc14610238575b600080fd5b61020460048036038101906101ff91906128a6565b6105ca565b6040516102119190612c80565b60405180910390f35b61022261065c565b60405161022f9190612cb6565b60405180910390f35b610252600480360381019061024d9190612900565b6106ee565b60405161025f9190612c19565b60405180910390f35b610282600480360381019061027d91906127d9565b61076a565b005b61028c6108ab565b6040516102999190612df8565b60405180910390f35b6102bc60048036038101906102b79190612819565b6108c2565b005b6102d860048036038101906102d39190612663565b610aca565b005b6102e2610def565b6040516102ef9190612df8565b60405180910390f35b610312600480360381019061030d91906125f6565b610df5565b60405161031f9190612df8565b60405180910390f35b610342600480360381019061033d9190612663565b610e07565b005b61035e60048036038101906103599190612900565b610e27565b005b61037a60048036038101906103759190612739565b610e35565b6040516103879190612c80565b60405180910390f35b6103aa60048036038101906103a59190612900565b610eb9565b6040516103b79190612c19565b60405180910390f35b6103da60048036038101906103d59190612879565b610ecb565b005b6103f660048036038101906103f1919061292d565b610f51565b005b610412600480360381019061040d91906125f6565b61110d565b60405161041f9190612df8565b60405180910390f35b6104306111c6565b005b61043a61124e565b6040516104479190612c19565b60405180910390f35b610458611278565b6040516104659190612c80565b60405180910390f35b61047661128b565b6040516104839190612cb6565b60405180910390f35b61049461131d565b6040516104a19190612df8565b60405180910390f35b6104c460048036038101906104bf9190612799565b611323565b005b6104e060048036038101906104db91906126b6565b61149b565b005b6104fc60048036038101906104f79190612900565b61150e565b6040516105099190612cb6565b60405180910390f35b61051a61153f565b005b6105246115e7565b005b610540600480360381019061053b91906127d9565b61168f565b005b61054a611770565b6040516105579190612c80565b60405180910390f35b61057a60048036038101906105759190612623565b611783565b6040516105879190612c80565b60405180910390f35b6105aa60048036038101906105a591906125f6565b611817565b005b6105b461190f565b6040516105c19190612c9b565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061062557506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106555750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606002805461066b9061303b565b80601f01602080910402602001604051908101604052809291908181526020018280546106979061303b565b80156106e45780601f106106b9576101008083540402835291602001916106e4565b820191906000526020600020905b8154815290600101906020018083116106c757829003601f168201915b5050505050905090565b60006106f982611915565b61072f576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061077582610eb9565b90508073ffffffffffffffffffffffffffffffffffffffff16610796611974565b73ffffffffffffffffffffffffffffffffffffffff16146107f9576107c2816107bd611974565b611783565b6107f8576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006108b561197c565b6001546000540303905090565b60026009541415610908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ff90612dd8565b60405180910390fd5b60026009819055503373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161461094857600080fd5b600a60009054906101000a900460ff16610997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098e90612db8565b60405180910390fd5b600b548167ffffffffffffffff166109ad6108ab565b6109b79190612eac565b11156109f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ef90612d78565b60405180910390fd5b610a03338484610e35565b610a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3990612d18565b60405180910390fd5b6000610a4d33611985565b905060058267ffffffffffffffff1682610a679190612eac565b1115610aa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9f90612d38565b60405180910390fd5b610abc338367ffffffffffffffff166119dc565b506001600981905550505050565b6000610ad5826119fa565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b3c576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610b4884611ac8565b91509150610b5e8187610b59611974565b611aea565b610baa57610b7386610b6e611974565b611783565b610ba9576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610c11576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c1e8686866001611b2e565b8015610c2957600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815460010191905081905550610cf785610cd3888887611b34565b7c020000000000000000000000000000000000000000000000000000000017611b5c565b600460008681526020019081526020016000208190555060007c020000000000000000000000000000000000000000000000000000000084161415610d7f576000600185019050600060046000838152602001908152602001600020541415610d7d576000548114610d7c578360046000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610de78686866001611b87565b505050505050565b600b5481565b6000610e0082611985565b9050919050565b610e228383836040518060200160405280600081525061149b565b505050565b610e32816001611b8d565b50565b60008084604051602001610e499190612bd1565b604051602081830303815290604052805190602001209050610eaf848480806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600d5483611de1565b9150509392505050565b6000610ec4826119fa565b9050919050565b610ed3611df8565b73ffffffffffffffffffffffffffffffffffffffff16610ef161124e565b73ffffffffffffffffffffffffffffffffffffffff1614610f47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3e90612d58565b60405180910390fd5b80600d8190555050565b60026009541415610f97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8e90612dd8565b60405180910390fd5b60026009819055503373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614610fd757600080fd5b600a60019054906101000a900460ff16611026576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101d90612d98565b60405180910390fd5b600b548167ffffffffffffffff1661103c6108ab565b6110469190612eac565b1115611087576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107e90612d78565b60405180910390fd5b600061109233611985565b905060028267ffffffffffffffff16826110ac9190612eac565b11156110ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e490612cd8565b60405180910390fd5b611101338367ffffffffffffffff166119dc565b50600160098190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611175576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b6111ce611df8565b73ffffffffffffffffffffffffffffffffffffffff166111ec61124e565b73ffffffffffffffffffffffffffffffffffffffff1614611242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123990612d58565b60405180910390fd5b61124c6000611e00565b565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a60009054906101000a900460ff1681565b60606003805461129a9061303b565b80601f01602080910402602001604051908101604052809291908181526020018280546112c69061303b565b80156113135780601f106112e857610100808354040283529160200191611313565b820191906000526020600020905b8154815290600101906020018083116112f657829003601f168201915b5050505050905090565b600c5481565b61132b611974565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611390576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806007600061139d611974565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661144a611974565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161148f9190612c80565b60405180910390a35050565b6114a6848484610aca565b60008373ffffffffffffffffffffffffffffffffffffffff163b14611508576114d184848484611ec6565b611507576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b606061151982612026565b6040516020016115299190612bec565b6040516020818303038152906040529050919050565b611547611df8565b73ffffffffffffffffffffffffffffffffffffffff1661156561124e565b73ffffffffffffffffffffffffffffffffffffffff16146115bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b290612d58565b60405180910390fd5b600a60009054906101000a900460ff1615600a60006101000a81548160ff021916908315150217905550565b6115ef611df8565b73ffffffffffffffffffffffffffffffffffffffff1661160d61124e565b73ffffffffffffffffffffffffffffffffffffffff1614611663576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165a90612d58565b60405180910390fd5b600a60019054906101000a900460ff1615600a60016101000a81548160ff021916908315150217905550565b611697611df8565b73ffffffffffffffffffffffffffffffffffffffff166116b561124e565b73ffffffffffffffffffffffffffffffffffffffff161461170b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170290612d58565b60405180910390fd5b600b54816117176108ab565b6117219190612eac565b1115611762576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175990612d78565b60405180910390fd5b61176c82826119dc565b5050565b600a60019054906101000a900460ff1681565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61181f611df8565b73ffffffffffffffffffffffffffffffffffffffff1661183d61124e565b73ffffffffffffffffffffffffffffffffffffffff1614611893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188a90612d58565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fa90612cf8565b60405180910390fd5b61190c81611e00565b50565b600d5481565b60008161192061197c565b1115801561192f575060005482105b801561196d575060007c0100000000000000000000000000000000000000000000000000000000600460008581526020019081526020016000205416145b9050919050565b600033905090565b60006001905090565b600067ffffffffffffffff6040600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054901c169050919050565b6119f6828260405180602001604052806000815250612187565b5050565b60008082905080611a0961197c565b11611a9157600054811015611a905760006004600083815260200190815260200160002054905060007c010000000000000000000000000000000000000000000000000000000082161415611a8e575b6000811415611a84576004600083600190039350838152602001908152602001600020549050611a59565b8092505050611ac3565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000806000600690508360005280602052604060002092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e8611b4b868684612224565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b6000611b98836119fa565b90506000819050600080611bab86611ac8565b915091508415611c1457611bc78184611bc2611974565b611aea565b611c1357611bdc83611bd7611974565b611783565b611c12576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b611c22836000886001611b2e565b8015611c2d57600082555b600160806001901b03600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550611cd583611c9285600088611b34565b7c02000000000000000000000000000000000000000000000000000000007c01000000000000000000000000000000000000000000000000000000001717611b5c565b600460008881526020019081526020016000208190555060007c020000000000000000000000000000000000000000000000000000000085161415611d5d576000600187019050600060046000838152602001908152602001600020541415611d5b576000548114611d5a578460046000838152602001908152602001600020819055505b5b505b85600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611dc7836000886001611b87565b600160008154809291906001019190505550505050505050565b600082611dee858461222d565b1490509392505050565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611eec611974565b8786866040518563ffffffff1660e01b8152600401611f0e9493929190612c34565b602060405180830381600087803b158015611f2857600080fd5b505af1925050508015611f5957506040513d601f19601f82011682018060405250810190611f5691906128d3565b60015b611fd3573d8060008114611f89576040519150601f19603f3d011682016040523d82523d6000602084013e611f8e565b606091505b50600081511415611fcb576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b6060600082141561206e576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612182565b600082905060005b600082146120a05780806120899061309e565b915050600a826120999190612f02565b9150612076565b60008167ffffffffffffffff8111156120bc576120bb6131f8565b5b6040519080825280601f01601f1916602001820160405280156120ee5781602001600182028036833780820191505090505b5090505b6000851461217b576001826121079190612f33565b9150600a85612116919061310b565b60306121229190612eac565b60f81b818381518110612138576121376131c9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856121749190612f02565b94506120f2565b8093505050505b919050565b61219183836122a2565b60008373ffffffffffffffffffffffffffffffffffffffff163b1461221f57600080549050600083820390505b6121d16000868380600101945086611ec6565b612207576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181106121be57816000541461221c57600080fd5b50505b505050565b60009392505050565b60008082905060005b8451811015612297576000858281518110612254576122536131c9565b5b602002602001015190508083116122765761226f8382612476565b9250612283565b6122808184612476565b92505b50808061228f9061309e565b915050612236565b508091505092915050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561230f576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082141561234a576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123576000848385611b2e565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506123ce836123bf6000866000611b34565b6123c88561248d565b17611b5c565b60046000838152602001908152602001600020819055506000819050600083830190505b818060010192508573ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48082106123f2578060008190555050506124716000848385611b87565b505050565b600082600052816020526040600020905092915050565b60006001821460e11b9050919050565b60006124b06124ab84612e38565b612e13565b9050828152602081018484840111156124cc576124cb613236565b5b6124d7848285612ff9565b509392505050565b6000813590506124ee81613472565b92915050565b60008083601f84011261250a5761250961322c565b5b8235905067ffffffffffffffff81111561252757612526613227565b5b60208301915083602082028301111561254357612542613231565b5b9250929050565b60008135905061255981613489565b92915050565b60008135905061256e816134a0565b92915050565b600081359050612583816134b7565b92915050565b600081519050612598816134b7565b92915050565b600082601f8301126125b3576125b261322c565b5b81356125c384826020860161249d565b91505092915050565b6000813590506125db816134ce565b92915050565b6000813590506125f0816134e5565b92915050565b60006020828403121561260c5761260b613240565b5b600061261a848285016124df565b91505092915050565b6000806040838503121561263a57612639613240565b5b6000612648858286016124df565b9250506020612659858286016124df565b9150509250929050565b60008060006060848603121561267c5761267b613240565b5b600061268a868287016124df565b935050602061269b868287016124df565b92505060406126ac868287016125cc565b9150509250925092565b600080600080608085870312156126d0576126cf613240565b5b60006126de878288016124df565b94505060206126ef878288016124df565b9350506040612700878288016125cc565b925050606085013567ffffffffffffffff8111156127215761272061323b565b5b61272d8782880161259e565b91505092959194509250565b60008060006040848603121561275257612751613240565b5b6000612760868287016124df565b935050602084013567ffffffffffffffff8111156127815761278061323b565b5b61278d868287016124f4565b92509250509250925092565b600080604083850312156127b0576127af613240565b5b60006127be858286016124df565b92505060206127cf8582860161254a565b9150509250929050565b600080604083850312156127f0576127ef613240565b5b60006127fe858286016124df565b925050602061280f858286016125cc565b9150509250929050565b60008060006040848603121561283257612831613240565b5b600084013567ffffffffffffffff8111156128505761284f61323b565b5b61285c868287016124f4565b9350935050602061286f868287016125e1565b9150509250925092565b60006020828403121561288f5761288e613240565b5b600061289d8482850161255f565b91505092915050565b6000602082840312156128bc576128bb613240565b5b60006128ca84828501612574565b91505092915050565b6000602082840312156128e9576128e8613240565b5b60006128f784828501612589565b91505092915050565b60006020828403121561291657612915613240565b5b6000612924848285016125cc565b91505092915050565b60006020828403121561294357612942613240565b5b6000612951848285016125e1565b91505092915050565b61296381612f67565b82525050565b61297a61297582612f67565b6130e7565b82525050565b61298981612f79565b82525050565b61299881612f85565b82525050565b60006129a982612e69565b6129b38185612e7f565b93506129c3818560208601613008565b6129cc81613245565b840191505092915050565b60006129e282612e74565b6129ec8185612e90565b93506129fc818560208601613008565b612a0581613245565b840191505092915050565b6000612a1b82612e74565b612a258185612ea1565b9350612a35818560208601613008565b80840191505092915050565b6000612a4e602c83612e90565b9150612a5982613263565b604082019050919050565b6000612a71602683612e90565b9150612a7c826132b2565b604082019050919050565b6000612a94601783612e90565b9150612a9f82613301565b602082019050919050565b6000612ab7601d83612e90565b9150612ac28261332a565b602082019050919050565b6000612ada600583612ea1565b9150612ae582613353565b600582019050919050565b6000612afd602083612e90565b9150612b088261337c565b602082019050919050565b6000612b20602083612ea1565b9150612b2b826133a5565b602082019050919050565b6000612b43601e83612e90565b9150612b4e826133ce565b602082019050919050565b6000612b66601a83612e90565b9150612b71826133f7565b602082019050919050565b6000612b89601883612e90565b9150612b9482613420565b602082019050919050565b6000612bac601f83612e90565b9150612bb782613449565b602082019050919050565b612bcb81612fdb565b82525050565b6000612bdd8284612969565b60148201915081905092915050565b6000612bf782612b13565b9150612c038284612a10565b9150612c0e82612acd565b915081905092915050565b6000602082019050612c2e600083018461295a565b92915050565b6000608082019050612c49600083018761295a565b612c56602083018661295a565b612c636040830185612bc2565b8181036060830152612c75818461299e565b905095945050505050565b6000602082019050612c956000830184612980565b92915050565b6000602082019050612cb0600083018461298f565b92915050565b60006020820190508181036000830152612cd081846129d7565b905092915050565b60006020820190508181036000830152612cf181612a41565b9050919050565b60006020820190508181036000830152612d1181612a64565b9050919050565b60006020820190508181036000830152612d3181612a87565b9050919050565b60006020820190508181036000830152612d5181612aaa565b9050919050565b60006020820190508181036000830152612d7181612af0565b9050919050565b60006020820190508181036000830152612d9181612b36565b9050919050565b60006020820190508181036000830152612db181612b59565b9050919050565b60006020820190508181036000830152612dd181612b7c565b9050919050565b60006020820190508181036000830152612df181612b9f565b9050919050565b6000602082019050612e0d6000830184612bc2565b92915050565b6000612e1d612e2e565b9050612e29828261306d565b919050565b6000604051905090565b600067ffffffffffffffff821115612e5357612e526131f8565b5b612e5c82613245565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000612eb782612fdb565b9150612ec283612fdb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612ef757612ef661313c565b5b828201905092915050565b6000612f0d82612fdb565b9150612f1883612fdb565b925082612f2857612f2761316b565b5b828204905092915050565b6000612f3e82612fdb565b9150612f4983612fdb565b925082821015612f5c57612f5b61313c565b5b828203905092915050565b6000612f7282612fbb565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b82818337600083830152505050565b60005b8381101561302657808201518184015260208101905061300b565b83811115613035576000848401525b50505050565b6000600282049050600182168061305357607f821691505b602082108114156130675761306661319a565b5b50919050565b61307682613245565b810181811067ffffffffffffffff82111715613095576130946131f8565b5b80604052505050565b60006130a982612fdb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156130dc576130db61313c565b5b600182019050919050565b60006130f2826130f9565b9050919050565b600061310482613256565b9050919050565b600061311682612fdb565b915061312183612fdb565b9250826131315761313061316b565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f496e76616c6964206e756d626572206f6620746f6b656e73207175657269657360008201527f20666f72206d696e74696e670000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f55736572206973206e6f742077686974656c6973746564000000000000000000600082015250565b7f43616e277420636c61696d206d6f7265207468616e203520746f74616c000000600082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f68747470733a2f2f706f6f7264756465732e6c6966652f6d657461646174612f600082015250565b7f4e6f7420656e6f75676820746f6b656e73206c65667420746f206d696e740000600082015250565b7f5075626c69632073616c65206973206e6f742072756e6e696e67000000000000600082015250565b7f57686974656c697374206973206e6f742072756e6e696e670000000000000000600082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b61347b81612f67565b811461348657600080fd5b50565b61349281612f79565b811461349d57600080fd5b50565b6134a981612f85565b81146134b457600080fd5b50565b6134c081612f8f565b81146134cb57600080fd5b50565b6134d781612fdb565b81146134e257600080fd5b50565b6134ee81612fe5565b81146134f957600080fd5b5056fea2646970667358221220bfa46dcc3b8a036b98a48492807e7a4ef103998fcc3f307275717cfe0189dd0e64736f6c63430008070033