60806040526000600860146101000a81548160ff0219169083151502179055506000600860156101000a81548160ff0219169083151502179055506000600860166101000a81548160ff02191690831515021790555062000065620004b660201b60201c565b600a62000073919062000868565b6377359400620000849190620008b9565b600a5562000097620004b660201b60201c565b600a620000a5919062000868565b6404a817c800620000b79190620008b9565b600b556063600e5560405180604001604052806000815260200160008152506011600082015181600001556020820151816001015550506040518060400160405280605f815260200160008152506013600082015181600001556020820151816001015550503480156200012a57600080fd5b506040516200596a3803806200596a83398181016040528101906200015091906200099f565b816040518060400160405280600881526020017f41697220506570650000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f41697250455045000000000000000000000000000000000000000000000000008152508160039081620001ce919062000c56565b508060049081620001e0919062000c56565b50505080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200024462000238620004bf60201b60201c565b620004c760201b60201c565b5062000287336200025a620004b660201b60201c565b600a62000268919062000868565b655af3107a40006200027b9190620008b9565b6200058d60201b60201c565b81601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160156000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016015600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050505062000e14565b60006009905090565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620005ff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005f69062000dc4565b60405180910390fd5b6200061360008383620006c960201b60201c565b80600281905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620006bd919062000df7565b60405180910390a35050565b505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200075c57808604811115620007345762000733620006ce565b5b6001851615620007445780820291505b80810290506200075485620006fd565b945062000714565b94509492505050565b6000826200077757600190506200084a565b816200078757600090506200084a565b8160018114620007a05760028114620007ab57620007e1565b60019150506200084a565b60ff841115620007c057620007bf620006ce565b5b8360020a915084821115620007da57620007d9620006ce565b5b506200084a565b5060208310610133831016604e8410600b84101617156200081b5782820a905083811115620008155762000814620006ce565b5b6200084a565b6200082a84848460016200070a565b92509050818404811115620008445762000843620006ce565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620008758262000851565b915062000882836200085b565b9250620008b17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000765565b905092915050565b6000620008c68262000851565b9150620008d38362000851565b9250828202620008e38162000851565b91508282048414831517620008fd57620008fc620006ce565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009368262000909565b9050919050565b620009488162000929565b81146200095457600080fd5b50565b60008151905062000968816200093d565b92915050565b620009798162000851565b81146200098557600080fd5b50565b60008151905062000999816200096e565b92915050565b60008060408385031215620009b957620009b862000904565b5b6000620009c98582860162000957565b9250506020620009dc8582860162000988565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a6857607f821691505b60208210810362000a7e5762000a7d62000a20565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000ae87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000aa9565b62000af4868362000aa9565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000b3762000b3162000b2b8462000851565b62000b0c565b62000851565b9050919050565b6000819050919050565b62000b538362000b16565b62000b6b62000b628262000b3e565b84845462000ab6565b825550505050565b600090565b62000b8262000b73565b62000b8f81848462000b48565b505050565b5b8181101562000bb75762000bab60008262000b78565b60018101905062000b95565b5050565b601f82111562000c065762000bd08162000a84565b62000bdb8462000a99565b8101602085101562000beb578190505b62000c0362000bfa8562000a99565b83018262000b94565b50505b505050565b600082821c905092915050565b600062000c2b6000198460080262000c0b565b1980831691505092915050565b600062000c46838362000c18565b9150826002028217905092915050565b62000c6182620009e6565b67ffffffffffffffff81111562000c7d5762000c7c620009f1565b5b62000c89825462000a4f565b62000c9682828562000bbb565b600060209050601f83116001811462000cce576000841562000cb9578287015190505b62000cc5858262000c38565b86555062000d35565b601f19841662000cde8662000a84565b60005b8281101562000d085784890151825560018201915060208501945060208101905062000ce1565b8683101562000d28578489015162000d24601f89168262000c18565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a2067656e65726174696f6e20746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600062000dac60258362000d3d565b915062000db98262000d4e565b604082019050919050565b6000602082019050818103600083015262000ddf8162000d9d565b9050919050565b62000df18162000851565b82525050565b600060208201905062000e0e600083018462000de6565b92915050565b614b468062000e246000396000f3fe60806040526004361061023f5760003560e01c80638cd4426d1161012e578063c2b7bbb6116100ab578063f2fde38b1161006f578063f2fde38b1461088b578063f52be97c146108b4578063f570d4de146108dd578063f66895a314610906578063f887ea401461093257610246565b8063c2b7bbb614610796578063c5d32bb2146107bf578063d695609b146107fc578063dd62ed3e14610825578063edaa11681461086257610246565b8063a65091a6116100f2578063a65091a61461069f578063a8aa1b31146106dc578063a9059cbb14610707578063aacebbe314610744578063ad296d9d1461076d57610246565b80638cd4426d146105ba5780638da5cb5b146105e357806395d89b411461060e5780639e252f0014610639578063a457c2d71461066257610246565b80634ada218b116101bc578063728f8eea11610180578063728f8eea146104fa578063832c2bd2146105265780638514022d1461054f57806385141a77146105785780638a8c523c146105a357610246565b80634ada218b146104275780635dbdb7e31461045257806366a88d961461047b57806370a08231146104a6578063715018a6146104e357610246565b8063251ef09511610203578063251ef09514610344578063313ce5671461036d578063395093511461039857806342b6fa11146103d55780634324deae146103fe57610246565b806306fdde031461024b578063095ea7b3146102765780631340538f146102b357806318160ddd146102dc57806323b872dd1461030757610246565b3661024657005b600080fd5b34801561025757600080fd5b5061026061095d565b60405161026d919061355e565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190613628565b6109ef565b6040516102aa9190613683565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d591906136ca565b610a0d565b005b3480156102e857600080fd5b506102f1610aa6565b6040516102fe9190613706565b60405180910390f35b34801561031357600080fd5b5061032e60048036038101906103299190613721565b610ab0565b60405161033b9190613683565b60405180910390f35b34801561035057600080fd5b5061036b600480360381019061036691906138bc565b610bb1565b005b34801561037957600080fd5b50610382610cc2565b60405161038f9190613921565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba9190613628565b610ccb565b6040516103cc9190613683565b60405180910390f35b3480156103e157600080fd5b506103fc60048036038101906103f7919061393c565b610d77565b005b34801561040a57600080fd5b506104256004803603810190610420919061393c565b610e1b565b005b34801561043357600080fd5b5061043c610ebf565b6040516104499190613683565b60405180910390f35b34801561045e57600080fd5b5061047960048036038101906104749190613969565b610ed2565b005b34801561048757600080fd5b50610490610fa9565b60405161049d9190613706565b60405180910390f35b3480156104b257600080fd5b506104cd60048036038101906104c89190613969565b610faf565b6040516104da9190613706565b60405180910390f35b3480156104ef57600080fd5b506104f8610ff7565b005b34801561050657600080fd5b5061050f61113a565b60405161051d929190613996565b60405180910390f35b34801561053257600080fd5b5061054d60048036038101906105489190613969565b61114c565b005b34801561055b57600080fd5b50610576600480360381019061057191906139bf565b611223565b005b34801561058457600080fd5b5061058d6112fa565b60405161059a9190613a0e565b60405180910390f35b3480156105af57600080fd5b506105b8611300565b005b3480156105c657600080fd5b506105e160048036038101906105dc9190613628565b61140b565b005b3480156105ef57600080fd5b506105f8611511565b6040516106059190613a0e565b60405180910390f35b34801561061a57600080fd5b5061062361153b565b604051610630919061355e565b60405180910390f35b34801561064557600080fd5b50610660600480360381019061065b919061393c565b6115cd565b005b34801561066e57600080fd5b5061068960048036038101906106849190613628565b61169a565b6040516106969190613683565b60405180910390f35b3480156106ab57600080fd5b506106c660048036038101906106c19190613969565b61178e565b6040516106d39190613683565b60405180910390f35b3480156106e857600080fd5b506106f16117e4565b6040516106fe9190613a0e565b60405180910390f35b34801561071357600080fd5b5061072e60048036038101906107299190613628565b61180a565b60405161073b9190613683565b60405180910390f35b34801561075057600080fd5b5061076b60048036038101906107669190613969565b611821565b005b34801561077957600080fd5b50610794600480360381019061078f9190613a29565b6118e1565b005b3480156107a257600080fd5b506107bd60048036038101906107b89190613969565b6119f2565b005b3480156107cb57600080fd5b506107e660048036038101906107e19190613969565b611b2c565b6040516107f39190613683565b60405180910390f35b34801561080857600080fd5b50610823600480360381019061081e9190613a85565b611b4c565b005b34801561083157600080fd5b5061084c60048036038101906108479190613ac5565b611bfa565b6040516108599190613706565b60405180910390f35b34801561086e57600080fd5b506108896004803603810190610884919061393c565b611c81565b005b34801561089757600080fd5b506108b260048036038101906108ad9190613969565b611d57565b005b3480156108c057600080fd5b506108db60048036038101906108d69190613a85565b611e4e565b005b3480156108e957600080fd5b5061090460048036038101906108ff91906138bc565b611efc565b005b34801561091257600080fd5b5061091b61200d565b604051610929929190613996565b60405180910390f35b34801561093e57600080fd5b5061094761201f565b6040516109549190613b64565b60405180910390f35b60606003805461096c90613bae565b80601f016020809104026020016040519081016040528092919081815260200182805461099890613bae565b80156109e55780601f106109ba576101008083540402835291602001916109e5565b820191906000526020600020905b8154815290600101906020018083116109c857829003601f168201915b5050505050905090565b6000610a036109fc612045565b848461204d565b6001905092915050565b610a15612045565b73ffffffffffffffffffffffffffffffffffffffff16610a33612216565b73ffffffffffffffffffffffffffffffffffffffff1614610a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8090613c2b565b60405180910390fd5b80600860156101000a81548160ff02191690831515021790555050565b6000600254905090565b6000610abd84848461222a565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b08612045565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7f90613cbd565b60405180910390fd5b610ba585610b94612045565b8584610ba09190613d0c565b61204d565b60019150509392505050565b610bb9612045565b73ffffffffffffffffffffffffffffffffffffffff16610bd7612216565b73ffffffffffffffffffffffffffffffffffffffff1614610c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2490613c2b565b60405180910390fd5b60005b8151811015610cbe57600060156000848481518110610c5257610c51613d40565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610cb690613d6f565b915050610c30565b5050565b60006009905090565b6000610d6d610cd8612045565b848460016000610ce6612045565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d689190613db7565b61204d565b6001905092915050565b610d7f612045565b73ffffffffffffffffffffffffffffffffffffffff16610d9d612216565b73ffffffffffffffffffffffffffffffffffffffff1614610df3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dea90613c2b565b60405180910390fd5b610dfb610cc2565b600a610e079190613f1e565b81610e129190613f69565b600a8190555050565b610e23612045565b73ffffffffffffffffffffffffffffffffffffffff16610e41612216565b73ffffffffffffffffffffffffffffffffffffffff1614610e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8e90613c2b565b60405180910390fd5b610e9f610cc2565b600a610eab9190613f1e565b81610eb69190613f69565b600b8190555050565b600860169054906101000a900460ff1681565b610eda612045565b73ffffffffffffffffffffffffffffffffffffffff16610ef8612216565b73ffffffffffffffffffffffffffffffffffffffff1614610f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4590613c2b565b60405180910390fd5b6001601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600b5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610fff612045565b73ffffffffffffffffffffffffffffffffffffffff1661101d612216565b73ffffffffffffffffffffffffffffffffffffffff1614611073576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106a90613c2b565b60405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b60118060000154908060010154905082565b611154612045565b73ffffffffffffffffffffffffffffffffffffffff16611172612216565b73ffffffffffffffffffffffffffffffffffffffff16146111c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bf90613c2b565b60405180910390fd5b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61122b612045565b73ffffffffffffffffffffffffffffffffffffffff16611249612216565b73ffffffffffffffffffffffffffffffffffffffff161461129f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129690613c2b565b60405180910390fd5b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61dead81565b611308612045565b73ffffffffffffffffffffffffffffffffffffffff16611326612216565b73ffffffffffffffffffffffffffffffffffffffff161461137c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137390613c2b565b60405180910390fd5b600860169054906101000a900460ff16156113cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c390613ff7565b60405180910390fd5b6001600860166101000a81548160ff0219169083151502179055506001600860156101000a81548160ff02191690831515021790555043600c81905550565b611413612045565b73ffffffffffffffffffffffffffffffffffffffff16611431612216565b73ffffffffffffffffffffffffffffffffffffffff1614611487576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147e90613c2b565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6114ab611511565b836040518363ffffffff1660e01b81526004016114c9929190614017565b6020604051808303816000875af11580156114e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150c9190614055565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461154a90613bae565b80601f016020809104026020016040519081016040528092919081815260200182805461157690613bae565b80156115c35780601f10611598576101008083540402835291602001916115c3565b820191906000526020600020905b8154815290600101906020018083116115a657829003601f168201915b5050505050905090565b6115d5612045565b73ffffffffffffffffffffffffffffffffffffffff166115f3612216565b73ffffffffffffffffffffffffffffffffffffffff1614611649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164090613c2b565b60405180910390fd5b611651611511565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611696573d6000803e3d6000fd5b5050565b600080600160006116a9612045565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d906140f4565b60405180910390fd5b611783611771612045565b85858461177e9190613d0c565b61204d565b600191505092915050565b6000601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061181733848461222a565b6001905092915050565b611829612045565b73ffffffffffffffffffffffffffffffffffffffff16611847612216565b73ffffffffffffffffffffffffffffffffffffffff161461189d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189490613c2b565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118e9612045565b73ffffffffffffffffffffffffffffffffffffffff16611907612216565b73ffffffffffffffffffffffffffffffffffffffff161461195d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195490613c2b565b60405180910390fd5b60005b82518110156119ed57816016600085848151811061198157611980613d40565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806119e590613d6f565b915050611960565b505050565b6119fa612045565b73ffffffffffffffffffffffffffffffffffffffff16611a18612216565b73ffffffffffffffffffffffffffffffffffffffff1614611a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6590613c2b565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160156000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60156020528060005260406000206000915054906101000a900460ff1681565b611b54612045565b73ffffffffffffffffffffffffffffffffffffffff16611b72612216565b73ffffffffffffffffffffffffffffffffffffffff1614611bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbf90613c2b565b60405180910390fd5b604051806040016040528083815260200182815250601160008201518160000155602082015181600101559050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c89612045565b73ffffffffffffffffffffffffffffffffffffffff16611ca7612216565b73ffffffffffffffffffffffffffffffffffffffff1614611cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf490613c2b565b60405180910390fd5b600860169054906101000a900460ff1615611d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4490614186565b60405180910390fd5b80600d8190555050565b611d5f612045565b73ffffffffffffffffffffffffffffffffffffffff16611d7d612216565b73ffffffffffffffffffffffffffffffffffffffff1614611dd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dca90613c2b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3990614218565b60405180910390fd5b611e4b81612a73565b50565b611e56612045565b73ffffffffffffffffffffffffffffffffffffffff16611e74612216565b73ffffffffffffffffffffffffffffffffffffffff1614611eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec190613c2b565b60405180910390fd5b604051806040016040528083815260200182815250601360008201518160000155602082015181600101559050505050565b611f04612045565b73ffffffffffffffffffffffffffffffffffffffff16611f22612216565b73ffffffffffffffffffffffffffffffffffffffff1614611f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6f90613c2b565b60405180910390fd5b60005b815181101561200957600160156000848481518110611f9d57611f9c613d40565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061200190613d6f565b915050611f7b565b5050565b60138060000154908060010154905082565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b3906142aa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361212b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121229061433c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516122099190613706565b60405180910390a3505050565b600080612221612b39565b90508091505090565b6000811161226d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612264906143ce565b60405180910390fd5b43600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156123555750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123aa57600860169054906101000a900460ff166123a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a09061443a565b60405180910390fd5b5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156124515750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561246a5750600860149054906101000a900460ff16155b156124c857600b548161247c84610faf565b6124869190613db7565b11156124c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124be906144a6565b60405180910390fd5b5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156125705750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125c65750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125df5750600860149054906101000a900460ff16155b1561269357600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461269257600b548161264684610faf565b6126509190613db7565b1115612691576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612688906144a6565b60405180910390fd5b5b5b60008060006126a06134b4565b6000601560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156127465750601560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156127605750600d54600c5461275d9190613db7565b43105b9050601660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156127be576127bd88612be1565b5b600860149054906101000a900460ff16806128225750601560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806128765750601560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128845760009250612983565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161480156128df575080155b15612927576013600001546013600101546128fa9190613db7565b94508493506013604051806040016040529081600082015481526020016001820154815250509150612982565b8061296f576011600001546011600101546129429190613db7565b94508493506011604051806040016040529081600082015481526020016001820154815250509150612981565b801561298057600e549450600e5493505b5b5b5b606484876129919190613f69565b61299b91906144f5565b9250600860159054906101000a900460ff168015612a075750600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b15612a1757612a168583612c6b565b5b612a2d88888589612a289190613d0c565b612e0f565b6000831115612a69576000851115612a6857600060648688612a4f9190613f69565b612a5991906144f5565b9050612a66893083612e0f565b505b5b5050505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bb857600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612bdc565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b612c29600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461308c565b612c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5f90614598565b60405180910390fd5b50565b600860149054906101000a900460ff16612e0b576001600860146101000a81548160ff0219169083151502179055506000820315612def576000612cae30610faf565b9050600a548110612ded576001600a541115612cca57600a5490505b6000600284612cd99190613f69565b9050600081846020015184612cee9190613f69565b612cf891906144f5565b905060008184612d089190613d0c565b90506000479050612d1882613098565b60008147612d269190613d0c565b90506000876020015186612d3a9190613d0c565b82612d4591906144f5565b90506000886020015182612d599190613f69565b90506000811115612d6f57612d6e86826132db565b5b60008960000151600284612d839190613f69565b612d8d9190613f69565b90506000811115612de457612de381601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166133bb90919063ffffffff16565b5b50505050505050505b505b6000600860146101000a81548160ff0219169083151502179055505b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e759061462a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee4906146bc565b60405180910390fd5b612ef88383836134af565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f759061474e565b60405180910390fd5b8181612f8a9190613d0c565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461301a9190613db7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161307e9190613706565b60405180910390a350505050565b60004382119050919050565b6000600267ffffffffffffffff8111156130b5576130b4613779565b5b6040519080825280602002602001820160405280156130e35781602001602082028036833780820191505090505b50905030816000815181106130fb576130fa613d40565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131c69190614783565b816001815181106131da576131d9613d40565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061324130600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461204d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016132a59594939291906148a9565b600060405180830381600087803b1580156132bf57600080fd5b505af11580156132d3573d6000803e3d6000fd5b505050505050565b61330830600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461204d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161337196959493929190614903565b60606040518083038185885af115801561338f573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906133b49190614979565b5050505050565b804710156133fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133f590614a18565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405161342490614a69565b60006040518083038185875af1925050503d8060008114613461576040519150601f19603f3d011682016040523d82523d6000602084013e613466565b606091505b50509050806134aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134a190614af0565b60405180910390fd5b505050565b505050565b604051806040016040528060008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b838110156135085780820151818401526020810190506134ed565b60008484015250505050565b6000601f19601f8301169050919050565b6000613530826134ce565b61353a81856134d9565b935061354a8185602086016134ea565b61355381613514565b840191505092915050565b600060208201905081810360008301526135788184613525565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006135bf82613594565b9050919050565b6135cf816135b4565b81146135da57600080fd5b50565b6000813590506135ec816135c6565b92915050565b6000819050919050565b613605816135f2565b811461361057600080fd5b50565b600081359050613622816135fc565b92915050565b6000806040838503121561363f5761363e61358a565b5b600061364d858286016135dd565b925050602061365e85828601613613565b9150509250929050565b60008115159050919050565b61367d81613668565b82525050565b60006020820190506136986000830184613674565b92915050565b6136a781613668565b81146136b257600080fd5b50565b6000813590506136c48161369e565b92915050565b6000602082840312156136e0576136df61358a565b5b60006136ee848285016136b5565b91505092915050565b613700816135f2565b82525050565b600060208201905061371b60008301846136f7565b92915050565b60008060006060848603121561373a5761373961358a565b5b6000613748868287016135dd565b9350506020613759868287016135dd565b925050604061376a86828701613613565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6137b182613514565b810181811067ffffffffffffffff821117156137d0576137cf613779565b5b80604052505050565b60006137e3613580565b90506137ef82826137a8565b919050565b600067ffffffffffffffff82111561380f5761380e613779565b5b602082029050602081019050919050565b600080fd5b6000613838613833846137f4565b6137d9565b9050808382526020820190506020840283018581111561385b5761385a613820565b5b835b81811015613884578061387088826135dd565b84526020840193505060208101905061385d565b5050509392505050565b600082601f8301126138a3576138a2613774565b5b81356138b3848260208601613825565b91505092915050565b6000602082840312156138d2576138d161358a565b5b600082013567ffffffffffffffff8111156138f0576138ef61358f565b5b6138fc8482850161388e565b91505092915050565b600060ff82169050919050565b61391b81613905565b82525050565b60006020820190506139366000830184613912565b92915050565b6000602082840312156139525761395161358a565b5b600061396084828501613613565b91505092915050565b60006020828403121561397f5761397e61358a565b5b600061398d848285016135dd565b91505092915050565b60006040820190506139ab60008301856136f7565b6139b860208301846136f7565b9392505050565b600080604083850312156139d6576139d561358a565b5b60006139e4858286016135dd565b92505060206139f5858286016136b5565b9150509250929050565b613a08816135b4565b82525050565b6000602082019050613a2360008301846139ff565b92915050565b60008060408385031215613a4057613a3f61358a565b5b600083013567ffffffffffffffff811115613a5e57613a5d61358f565b5b613a6a8582860161388e565b9250506020613a7b858286016136b5565b9150509250929050565b60008060408385031215613a9c57613a9b61358a565b5b6000613aaa85828601613613565b9250506020613abb85828601613613565b9150509250929050565b60008060408385031215613adc57613adb61358a565b5b6000613aea858286016135dd565b9250506020613afb858286016135dd565b9150509250929050565b6000819050919050565b6000613b2a613b25613b2084613594565b613b05565b613594565b9050919050565b6000613b3c82613b0f565b9050919050565b6000613b4e82613b31565b9050919050565b613b5e81613b43565b82525050565b6000602082019050613b796000830184613b55565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613bc657607f821691505b602082108103613bd957613bd8613b7f565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613c156020836134d9565b9150613c2082613bdf565b602082019050919050565b60006020820190508181036000830152613c4481613c08565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613ca76028836134d9565b9150613cb282613c4b565b604082019050919050565b60006020820190508181036000830152613cd681613c9a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613d17826135f2565b9150613d22836135f2565b9250828203905081811115613d3a57613d39613cdd565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613d7a826135f2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613dac57613dab613cdd565b5b600182019050919050565b6000613dc2826135f2565b9150613dcd836135f2565b9250828201905080821115613de557613de4613cdd565b5b92915050565b60008160011c9050919050565b6000808291508390505b6001851115613e4257808604811115613e1e57613e1d613cdd565b5b6001851615613e2d5780820291505b8081029050613e3b85613deb565b9450613e02565b94509492505050565b600082613e5b5760019050613f17565b81613e695760009050613f17565b8160018114613e7f5760028114613e8957613eb8565b6001915050613f17565b60ff841115613e9b57613e9a613cdd565b5b8360020a915084821115613eb257613eb1613cdd565b5b50613f17565b5060208310610133831016604e8410600b8410161715613eed5782820a905083811115613ee857613ee7613cdd565b5b613f17565b613efa8484846001613df8565b92509050818404811115613f1157613f10613cdd565b5b81810290505b9392505050565b6000613f29826135f2565b9150613f3483613905565b9250613f617fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613e4b565b905092915050565b6000613f74826135f2565b9150613f7f836135f2565b9250828202613f8d816135f2565b91508282048414831517613fa457613fa3613cdd565b5b5092915050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b6000613fe1601a836134d9565b9150613fec82613fab565b602082019050919050565b6000602082019050818103600083015261401081613fd4565b9050919050565b600060408201905061402c60008301856139ff565b61403960208301846136f7565b9392505050565b60008151905061404f8161369e565b92915050565b60006020828403121561406b5761406a61358a565b5b600061407984828501614040565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006140de6025836134d9565b91506140e982614082565b604082019050919050565b6000602082019050818103600083015261410d816140d1565b9050919050565b7f43616e2774206368616e6765207768656e2074726164696e672068617320737460008201527f6172746564000000000000000000000000000000000000000000000000000000602082015250565b60006141706025836134d9565b915061417b82614114565b604082019050919050565b6000602082019050818103600083015261419f81614163565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006142026026836134d9565b915061420d826141a6565b604082019050919050565b60006020820190508181036000830152614231816141f5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006142946024836134d9565b915061429f82614238565b604082019050919050565b600060208201905081810360008301526142c381614287565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006143266022836134d9565b9150614331826142ca565b604082019050919050565b6000602082019050818103600083015261435581614319565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006143b86029836134d9565b91506143c38261435c565b604082019050919050565b600060208201905081810360008301526143e7816143ab565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b60006144246013836134d9565b915061442f826143ee565b602082019050919050565b6000602082019050818103600083015261445381614417565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d6974600082015250565b60006144906020836134d9565b915061449b8261445a565b602082019050919050565b600060208201905081810360008301526144bf81614483565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614500826135f2565b915061450b836135f2565b92508261451b5761451a6144c6565b5b828204905092915050565b7f5472616e736665722044656c617920656e61626c65642e20204f6e6c79206f6e60008201527f652070757263686173652070657220626c6f636b20616c6c6f7765642e000000602082015250565b6000614582603d836134d9565b915061458d82614526565b604082019050919050565b600060208201905081810360008301526145b181614575565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006146146025836134d9565b915061461f826145b8565b604082019050919050565b6000602082019050818103600083015261464381614607565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006146a66023836134d9565b91506146b18261464a565b604082019050919050565b600060208201905081810360008301526146d581614699565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006147386026836134d9565b9150614743826146dc565b604082019050919050565b600060208201905081810360008301526147678161472b565b9050919050565b60008151905061477d816135c6565b92915050565b6000602082840312156147995761479861358a565b5b60006147a78482850161476e565b91505092915050565b6000819050919050565b60006147d56147d06147cb846147b0565b613b05565b6135f2565b9050919050565b6147e5816147ba565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614820816135b4565b82525050565b60006148328383614817565b60208301905092915050565b6000602082019050919050565b6000614856826147eb565b61486081856147f6565b935061486b83614807565b8060005b8381101561489c5781516148838882614826565b975061488e8361483e565b92505060018101905061486f565b5085935050505092915050565b600060a0820190506148be60008301886136f7565b6148cb60208301876147dc565b81810360408301526148dd818661484b565b90506148ec60608301856139ff565b6148f960808301846136f7565b9695505050505050565b600060c08201905061491860008301896139ff565b61492560208301886136f7565b61493260408301876147dc565b61493f60608301866147dc565b61494c60808301856139ff565b61495960a08301846136f7565b979650505050505050565b600081519050614973816135fc565b92915050565b6000806000606084860312156149925761499161358a565b5b60006149a086828701614964565b93505060206149b186828701614964565b92505060406149c286828701614964565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614a02601d836134d9565b9150614a0d826149cc565b602082019050919050565b60006020820190508181036000830152614a31816149f5565b9050919050565b600081905092915050565b50565b6000614a53600083614a38565b9150614a5e82614a43565b600082019050919050565b6000614a7482614a46565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614ada603a836134d9565b9150614ae582614a7e565b604082019050919050565b60006020820190508181036000830152614b0981614acd565b905091905056fea264697066735822122006397855ac72554ebd19d59977b49edd4aff76143242e11334c2b2dbe27fe34764736f6c6343000813003300000000000000000000000091de1f4b2fe4a1672a44176ef22d7191026aacb10000000000000000000000000000000000000000000000000000000000000000