60806040526a52b7d2dcc80cd2e40000006006556a01a784379d99db420000006007556a01a784379d99db420000006008556a01a784379d99db420000006009556001600b60146101000a81548160ff0219169083151502179055503480156200006857600080fd5b50604051620043f5380380620043f583398181016040528101906200008e91906200069f565b6000620000a06200062d60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065460036000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600c600001819055506014600c600101819055506000600e600001819055506028600e600101819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e191906200069f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000349573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036f91906200069f565b6040518363ffffffff1660e01b81526004016200038e929190620006e2565b6020604051808303816000875af1158015620003ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d491906200069f565b905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016005600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040516200061c91906200072a565b60405180910390a350505062000747565b600033905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000667826200063a565b9050919050565b62000679816200065a565b81146200068557600080fd5b50565b60008151905062000699816200066e565b92915050565b600060208284031215620006b857620006b762000635565b5b6000620006c88482850162000688565b91505092915050565b620006dc816200065a565b82525050565b6000604082019050620006f96000830185620006d1565b620007086020830184620006d1565b9392505050565b6000819050919050565b62000724816200070f565b82525050565b600060208201905062000741600083018462000719565b92915050565b613c9e80620007576000396000f3fe6080604052600436106102135760003560e01c80636ac9a8701161011857806395d89b41116100a0578063dd62ed3e1161006f578063dd62ed3e1461079c578063df778d26146107d9578063f1e55257146107f0578063f2fde38b1461081b578063fb0ecfa4146108445761021a565b806395d89b41146106ce578063a457c2d7146106f9578063a9059cbb14610736578063c0246668146107735761021a565b8063751039fc116100e7578063751039fc1461060d57806375f0a874146106245780637d1db4a51461064f578063885a4cd01461067a5780638da5cb5b146106a35761021a565b80636ac9a870146105655780636c0a24eb1461058e57806370a08231146105b9578063715018a6146105f65761021a565b8063296f0a0c1161019b578063470624021161016a578063470624021461047f57806349bd5a5e146104ab5780635342acb4146104d65780635d098b38146105135780636402511e1461053c5761021a565b8063296f0a0c146103c25780632b14ca56146103eb578063313ce5671461041757806339509351146104425761021a565b806318160ddd116101e257806318160ddd146102dd5780631e293c101461030857806323b872dd14610331578063264d26dd1461036e57806327a14fc2146103995761021a565b806303e403b01461021f57806306fdde031461024a578063095ea7b3146102755780631694505e146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b5061023461086d565b6040516102419190612cba565b60405180910390f35b34801561025657600080fd5b5061025f610873565b60405161026c9190612d65565b60405180910390f35b34801561028157600080fd5b5061029c60048036038101906102979190612e16565b6108b0565b6040516102a99190612e71565b60405180910390f35b3480156102be57600080fd5b506102c76108ce565b6040516102d49190612eeb565b60405180910390f35b3480156102e957600080fd5b506102f26108f4565b6040516102ff9190612cba565b60405180910390f35b34801561031457600080fd5b5061032f600480360381019061032a9190612f06565b6108fe565b005b34801561033d57600080fd5b5061035860048036038101906103539190612f33565b6109b0565b6040516103659190612e71565b60405180910390f35b34801561037a57600080fd5b50610383610a68565b6040516103909190612f95565b60405180910390f35b3480156103a557600080fd5b506103c060048036038101906103bb9190612f06565b610a8e565b005b3480156103ce57600080fd5b506103e960048036038101906103e49190612fb0565b610b40565b005b3480156103f757600080fd5b50610400610c19565b60405161040e929190612fdd565b60405180910390f35b34801561042357600080fd5b5061042c610c2b565b6040516104399190613022565b60405180910390f35b34801561044e57600080fd5b5061046960048036038101906104649190612e16565b610c34565b6040516104769190612e71565b60405180910390f35b34801561048b57600080fd5b50610494610ce0565b6040516104a2929190612fdd565b60405180910390f35b3480156104b757600080fd5b506104c0610cf2565b6040516104cd9190612f95565b60405180910390f35b3480156104e257600080fd5b506104fd60048036038101906104f89190612fb0565b610d18565b60405161050a9190612e71565b60405180910390f35b34801561051f57600080fd5b5061053a60048036038101906105359190612fb0565b610d6e565b005b34801561054857600080fd5b50610563600480360381019061055e9190612f06565b610e47565b005b34801561057157600080fd5b5061058c6004803603810190610587919061303d565b610ef9565b005b34801561059a57600080fd5b506105a3610ff5565b6040516105b09190612cba565b60405180910390f35b3480156105c557600080fd5b506105e060048036038101906105db9190612fb0565b610ffb565b6040516105ed9190612cba565b60405180910390f35b34801561060257600080fd5b5061060b611044565b005b34801561061957600080fd5b50610622611197565b005b34801561063057600080fd5b50610639611215565b6040516106469190612f95565b60405180910390f35b34801561065b57600080fd5b5061066461123b565b6040516106719190612cba565b60405180910390f35b34801561068657600080fd5b506106a1600480360381019061069c9190612fb0565b611241565b005b3480156106af57600080fd5b506106b86113d1565b6040516106c59190612f95565b60405180910390f35b3480156106da57600080fd5b506106e36113fa565b6040516106f09190612d65565b60405180910390f35b34801561070557600080fd5b50610720600480360381019061071b9190612e16565b611437565b60405161072d9190612e71565b60405180910390f35b34801561074257600080fd5b5061075d60048036038101906107589190612e16565b6114e3565b60405161076a9190612e71565b60405180910390f35b34801561077f57600080fd5b5061079a600480360381019061079591906130a9565b611501565b005b3480156107a857600080fd5b506107c360048036038101906107be91906130e9565b6115f1565b6040516107d09190612cba565b60405180910390f35b3480156107e557600080fd5b506107ee611678565b005b3480156107fc57600080fd5b50610805611753565b6040516108129190612e71565b60405180910390f35b34801561082757600080fd5b50610842600480360381019061083d9190612fb0565b611766565b005b34801561085057600080fd5b5061086b6004803603810190610866919061303d565b611927565b005b60095481565b60606040518060400160405280600481526020017f4c4d414f00000000000000000000000000000000000000000000000000000000815250905090565b60006108c46108bd611a23565b8484611a2b565b6001905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600654905090565b610906611a23565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098a90613175565b60405180910390fd5b670de0b6b3a7640000816109a791906131c4565b60088190555050565b60006109bd848484611bf4565b610a5d846109c9611a23565b84600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a13611a23565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a589190613206565b611a2b565b600190509392505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a96611a23565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1a90613175565b60405180910390fd5b670de0b6b3a764000081610b3791906131c4565b60078190555050565b610b48611a23565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc90613175565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e8060000154908060010154905082565b60006012905090565b6000610cd6610c41611a23565b848460046000610c4f611a23565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610cd1919061323a565b611a2b565b6001905092915050565b600c8060000154908060010154905082565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610d76611a23565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfa90613175565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610e4f611a23565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed390613175565b60405180910390fd5b670de0b6b3a764000081610ef091906131c4565b60098190555050565b610f01611a23565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8590613175565b60405180910390fd5b60638183610f9c919061323a565b1115610fdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd4906132e0565b60405180910390fd5b81600e6000018190555080600e600101819055505050565b60075481565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61104c611a23565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d090613175565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111d8611a23565b73ffffffffffffffffffffffffffffffffffffffff16146111f857600080fd5b6000600b60146101000a81548160ff021916908315150217905550565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b611249611a23565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd90613175565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161132c9190612f95565b602060405180830381865afa158015611349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136d9190613315565b6040518363ffffffff1660e01b815260040161138a929190613342565b6020604051808303816000875af11580156113a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113cd9190613380565b5050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4c4d414f00000000000000000000000000000000000000000000000000000000815250905090565b60006114d9611444611a23565b848460046000611452611a23565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114d49190613206565b611a2b565b6001905092915050565b60006114f76114f0611a23565b8484611bf4565b6001905092915050565b611509611a23565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158d90613175565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116b9611a23565b73ffffffffffffffffffffffffffffffffffffffff16146116d957600080fd5b60006116e430610ffb565b905060008111156116f9576116f88161235c565b5b6000479050600081111561174f573373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561174d573d6000803e3d6000fd5b505b5050565b600b60149054906101000a900460ff1681565b61176e611a23565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f290613175565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361186a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118619061341f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61192f611a23565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b390613175565b60405180910390fd5b606381836119ca919061323a565b1115611a0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a02906134b1565b60405180910390fd5b81600c6000018190555080600c600101819055505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9190613543565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b00906135d5565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611be79190612cba565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5a90613667565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc9906136f9565b60405180910390fd5b60008111611d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0c9061378b565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d649190613206565b9250508190555060008190506000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611e165750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e2057600190505b801561229a57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ed15750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b15611f9657600b60149054906101000a900460ff1615611f8957600854831115611f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f279061381d565b60405180910390fd5b60075483611f3d86610ffb565b611f47919061323a565b1115611f88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7f906138af565b60405180910390fd5b5b611f93838561251f565b91505b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156120415750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b1561213457600b60149054906101000a900460ff16156120a1576008548311156120a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120979061381d565b60405180910390fd5b5b6120ab8386612654565b91506009546120b930610ffb565b101580156120d45750601060009054906101000a900460ff16155b15612133576001601060006101000a81548160ff021916908315150217905550600954821061210d5761210860095461235c565b612117565b6121168261235c565b5b6000601060006101000a81548160ff0219169083151502179055505b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156121e05750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b1561229957600b60149054906101000a900460ff16156122985760085483111561223f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122369061381d565b60405180910390fd5b6007548361224c86610ffb565b612256919061323a565b1115612297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228e906138af565b60405180910390fd5b5b5b5b81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122e9919061323a565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161234d9190612cba565b60405180910390a35050505050565b60008190506000600e60000154600e60010154600c60000154600c60010154612385919061323a565b61238f919061323a565b612399919061323a565b600e60000154600c600001546123af919061323a565b836123ba91906131c4565b6123c491906138fe565b90506000600e60000154600e60010154600c60000154600c600101546123ea919061323a565b6123f4919061323a565b6123fe919061323a565b600e60010154600c60010154612414919061323a565b8461241f91906131c4565b61242991906138fe565b905060008183612439919061323a565b9050600061245160028561278990919063ffffffff16565b9050600061246882876127d390919063ffffffff16565b90506124738161281d565b6000479050600061249f856124918985612a6090919063ffffffff16565b61278990919063ffffffff16565b90506124ab8482612ada565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015612513573d6000803e3d6000fd5b50505050505050505050565b6000806064600c600001548561253591906131c4565b61253f91906138fe565b905060006064600c600101548661255691906131c4565b61256091906138fe565b9050808261256e919061323a565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125bc919061323a565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef848461261e919061323a565b60405161262b9190612cba565b60405180910390a38082866126409190613206565b61264a9190613206565b9250505092915050565b6000806064600c600001548561266a91906131c4565b61267491906138fe565b905060006064600c600101548661268b91906131c4565b61269591906138fe565b905080826126a3919061323a565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126f1919061323a565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8484612753919061323a565b6040516127609190612cba565b60405180910390a38082866127759190613206565b61277f9190613206565b9250505092915050565b60006127cb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612bda565b905092915050565b600061281583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612c3d565b905092915050565b6000600267ffffffffffffffff81111561283a5761283961392f565b5b6040519080825280602002602001820160405280156128685781602001602082028036833780820191505090505b50905030816000815181106128805761287f61395e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612927573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061294b91906139a2565b8160018151811061295f5761295e61395e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506129c630600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a2b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612a2a959493929190613ac8565b600060405180830381600087803b158015612a4457600080fd5b505af1158015612a58573d6000803e3d6000fd5b505050505050565b6000808303612a725760009050612ad4565b60008284612a8091906131c4565b9050828482612a8f91906138fe565b14612acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac690613b94565b60405180910390fd5b809150505b92915050565b612b0730600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a2b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612b9096959493929190613bb4565b60606040518083038185885af1158015612bae573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612bd39190613c15565b5050505050565b60008083118290612c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c189190612d65565b60405180910390fd5b5060008385612c3091906138fe565b9050809150509392505050565b6000838311158290612c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7c9190612d65565b60405180910390fd5b5060008385612c949190613206565b9050809150509392505050565b6000819050919050565b612cb481612ca1565b82525050565b6000602082019050612ccf6000830184612cab565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d0f578082015181840152602081019050612cf4565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d3782612cd5565b612d418185612ce0565b9350612d51818560208601612cf1565b612d5a81612d1b565b840191505092915050565b60006020820190508181036000830152612d7f8184612d2c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612db782612d8c565b9050919050565b612dc781612dac565b8114612dd257600080fd5b50565b600081359050612de481612dbe565b92915050565b612df381612ca1565b8114612dfe57600080fd5b50565b600081359050612e1081612dea565b92915050565b60008060408385031215612e2d57612e2c612d87565b5b6000612e3b85828601612dd5565b9250506020612e4c85828601612e01565b9150509250929050565b60008115159050919050565b612e6b81612e56565b82525050565b6000602082019050612e866000830184612e62565b92915050565b6000819050919050565b6000612eb1612eac612ea784612d8c565b612e8c565b612d8c565b9050919050565b6000612ec382612e96565b9050919050565b6000612ed582612eb8565b9050919050565b612ee581612eca565b82525050565b6000602082019050612f006000830184612edc565b92915050565b600060208284031215612f1c57612f1b612d87565b5b6000612f2a84828501612e01565b91505092915050565b600080600060608486031215612f4c57612f4b612d87565b5b6000612f5a86828701612dd5565b9350506020612f6b86828701612dd5565b9250506040612f7c86828701612e01565b9150509250925092565b612f8f81612dac565b82525050565b6000602082019050612faa6000830184612f86565b92915050565b600060208284031215612fc657612fc5612d87565b5b6000612fd484828501612dd5565b91505092915050565b6000604082019050612ff26000830185612cab565b612fff6020830184612cab565b9392505050565b600060ff82169050919050565b61301c81613006565b82525050565b60006020820190506130376000830184613013565b92915050565b6000806040838503121561305457613053612d87565b5b600061306285828601612e01565b925050602061307385828601612e01565b9150509250929050565b61308681612e56565b811461309157600080fd5b50565b6000813590506130a38161307d565b92915050565b600080604083850312156130c0576130bf612d87565b5b60006130ce85828601612dd5565b92505060206130df85828601613094565b9150509250929050565b60008060408385031215613100576130ff612d87565b5b600061310e85828601612dd5565b925050602061311f85828601612dd5565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061315f602083612ce0565b915061316a82613129565b602082019050919050565b6000602082019050818103600083015261318e81613152565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006131cf82612ca1565b91506131da83612ca1565b92508282026131e881612ca1565b915082820484148315176131ff576131fe613195565b5b5092915050565b600061321182612ca1565b915061321c83612ca1565b925082820390508181111561323457613233613195565b5b92915050565b600061324582612ca1565b915061325083612ca1565b925082820190508082111561326857613267613195565b5b92915050565b7f546f74616c2073656c6c206665652063616e6e6f74206265207365742068696760008201527f686572207468616e203939252e00000000000000000000000000000000000000602082015250565b60006132ca602d83612ce0565b91506132d58261326e565b604082019050919050565b600060208201905081810360008301526132f9816132bd565b9050919050565b60008151905061330f81612dea565b92915050565b60006020828403121561332b5761332a612d87565b5b600061333984828501613300565b91505092915050565b60006040820190506133576000830185612f86565b6133646020830184612cab565b9392505050565b60008151905061337a8161307d565b92915050565b60006020828403121561339657613395612d87565b5b60006133a48482850161336b565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613409602683612ce0565b9150613414826133ad565b604082019050919050565b60006020820190508181036000830152613438816133fc565b9050919050565b7f546f74616c20627579206665652063616e6e6f7420626520736574206869676860008201527f6572207468616e203939252e0000000000000000000000000000000000000000602082015250565b600061349b602c83612ce0565b91506134a68261343f565b604082019050919050565b600060208201905081810360008301526134ca8161348e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061352d602483612ce0565b9150613538826134d1565b604082019050919050565b6000602082019050818103600083015261355c81613520565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006135bf602283612ce0565b91506135ca82613563565b604082019050919050565b600060208201905081810360008301526135ee816135b2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613651602583612ce0565b915061365c826135f5565b604082019050919050565b6000602082019050818103600083015261368081613644565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006136e3602383612ce0565b91506136ee82613687565b604082019050919050565b60006020820190508181036000830152613712816136d6565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613775602983612ce0565b915061378082613719565b604082019050919050565b600060208201905081810360008301526137a481613768565b9050919050565b7f5472616e7366657220416d6f756e74206578636565647320746865206d61785460008201527f786e73416d6f756e740000000000000000000000000000000000000000000000602082015250565b6000613807602983612ce0565b9150613812826137ab565b604082019050919050565b60006020820190508181036000830152613836816137fa565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785760008201527f616c6c6574416d6f756e742e0000000000000000000000000000000000000000602082015250565b6000613899602c83612ce0565b91506138a48261383d565b604082019050919050565b600060208201905081810360008301526138c88161388c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061390982612ca1565b915061391483612ca1565b925082613924576139236138cf565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061399c81612dbe565b92915050565b6000602082840312156139b8576139b7612d87565b5b60006139c68482850161398d565b91505092915050565b6000819050919050565b60006139f46139ef6139ea846139cf565b612e8c565b612ca1565b9050919050565b613a04816139d9565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a3f81612dac565b82525050565b6000613a518383613a36565b60208301905092915050565b6000602082019050919050565b6000613a7582613a0a565b613a7f8185613a15565b9350613a8a83613a26565b8060005b83811015613abb578151613aa28882613a45565b9750613aad83613a5d565b925050600181019050613a8e565b5085935050505092915050565b600060a082019050613add6000830188612cab565b613aea60208301876139fb565b8181036040830152613afc8186613a6a565b9050613b0b6060830185612f86565b613b186080830184612cab565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b7e602183612ce0565b9150613b8982613b22565b604082019050919050565b60006020820190508181036000830152613bad81613b71565b9050919050565b600060c082019050613bc96000830189612f86565b613bd66020830188612cab565b613be360408301876139fb565b613bf060608301866139fb565b613bfd6080830185612f86565b613c0a60a0830184612cab565b979650505050505050565b600080600060608486031215613c2e57613c2d612d87565b5b6000613c3c86828701613300565b9350506020613c4d86828701613300565b9250506040613c5e86828701613300565b915050925092509256fea2646970667358221220fc37235a345ede4e2d24d4bc8748d3c7d205293e9dec9fe6f702c9843be1661764736f6c6343000813003300000000000000000000000040dc45e1390f98b5650d223c97748873e1f9105b