60a06040526000600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600f5560006010553480156200005157600080fd5b50604051620051d9380380620051d9833981810160405281019062000077919062000867565b6040518060400160405280600881526020017f70756e64752e696f0000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f50554e44550000000000000000000000000000000000000000000000000000008152508160039080519060200190620000fb92919062000712565b5080600490805190602001906200011492919062000712565b505050620001376200012b6200039d60201b60201c565b620003a560201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001d06200039d60201b60201c565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002206200046b60201b60201c565b600a6200022e919062000a3e565b6305f5e1006200023f919062000a8f565b600a81905550806002600a5462000257919062000a8f565b62000263919062000b1f565b600c81905550600c54600d81905550806002600a5462000284919062000a8f565b62000290919062000b1f565b600b81905550620002b8620002aa6200039d60201b60201c565b60016200047460201b60201c565b620002ed600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200047460201b60201c565b62000322600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200047460201b60201c565b6200033760805160016200047460201b60201c565b6200034a3060016200047460201b60201c565b6200035f61dead60016200047460201b60201c565b62000395600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a54620004df60201b60201c565b505062000d3c565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006009905090565b620004846200064d60201b60201c565b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000552576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005499062000bb8565b60405180910390fd5b6200056660008383620006de60201b60201c565b80600260008282546200057a919062000bda565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200062d919062000c48565b60405180910390a36200064960008383620006e360201b60201c565b5050565b6200065d6200039d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000683620006e860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620006dc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006d39062000cb5565b60405180910390fd5b565b505050565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620007209062000d06565b90600052602060002090601f01602090048101928262000744576000855562000790565b82601f106200075f57805160ff191683800117855562000790565b8280016001018555821562000790579182015b828111156200078f57825182559160200191906001019062000772565b5b5090506200079f9190620007a3565b5090565b5b80821115620007be576000816000905550600101620007a4565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007f482620007c7565b9050919050565b6200080681620007e7565b81146200081257600080fd5b50565b6000815190506200082681620007fb565b92915050565b6000819050919050565b62000841816200082c565b81146200084d57600080fd5b50565b600081519050620008618162000836565b92915050565b60008060408385031215620008815762000880620007c2565b5b6000620008918582860162000815565b9250506020620008a48582860162000850565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200093c57808604811115620009145762000913620008ae565b5b6001851615620009245780820291505b80810290506200093485620008dd565b9450620008f4565b94509492505050565b60008262000957576001905062000a2a565b8162000967576000905062000a2a565b81600181146200098057600281146200098b57620009c1565b600191505062000a2a565b60ff841115620009a0576200099f620008ae565b5b8360020a915084821115620009ba57620009b9620008ae565b5b5062000a2a565b5060208310610133831016604e8410600b8410161715620009fb5782820a905083811115620009f557620009f4620008ae565b5b62000a2a565b62000a0a8484846001620008ea565b9250905081840481111562000a245762000a23620008ae565b5b81810290505b9392505050565b600060ff82169050919050565b600062000a4b826200082c565b915062000a588362000a31565b925062000a877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000945565b905092915050565b600062000a9c826200082c565b915062000aa9836200082c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000ae55762000ae4620008ae565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000b2c826200082c565b915062000b39836200082c565b92508262000b4c5762000b4b62000af0565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ba0601f8362000b57565b915062000bad8262000b68565b602082019050919050565b6000602082019050818103600083015262000bd38162000b91565b9050919050565b600062000be7826200082c565b915062000bf4836200082c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000c2c5762000c2b620008ae565b5b828201905092915050565b62000c42816200082c565b82525050565b600060208201905062000c5f600083018462000c37565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000c9d60208362000b57565b915062000caa8262000c65565b602082019050919050565b6000602082019050818103600083015262000cd08162000c8e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000d1f57607f821691505b6020821081141562000d365762000d3562000cd7565b5b50919050565b60805161446c62000d6d60003960008181610c720152818161281f015281816129000152612927015261446c6000f3fe6080604052600436106102295760003560e01c80638da5cb5b11610123578063c2b7bbb6116100ab578063e083e9221161006f578063e083e92214610800578063e2f4560514610829578063f2fde38b14610854578063f8b45b051461087d578063ffb54a99146108a857610230565b8063c2b7bbb61461072f578063c4590d3f14610758578063c8c8ebe414610781578063c9567bf9146107ac578063dd62ed3e146107c357610230565b8063a457c2d7116100f2578063a457c2d71461063a578063a9059cbb14610677578063a9ddeaa2146106b4578063afa4f3b2146106dd578063b70143c91461070657610230565b80638da5cb5b1461057e57806395d89b41146105a95780639a7a23d6146105d45780639f53c5bf146105fd57610230565b806342966c68116101b15780635d098b38116101755780635d098b38146104ad5780636ddd1713146104d657806370a0823114610501578063715018a61461053e5780637571336a1461055557610230565b806342966c68146103ec578063470624021461041557806349bd5a5e146104405780634d54557f1461046b578063583e05681461048257610230565b806326ededb8116101f857806326ededb8146103055780632b14ca561461032e578063311028af14610359578063313ce5671461038457806339509351146103af57610230565b806306fdde0314610235578063095ea7b31461026057806318160ddd1461029d57806323b872dd146102c857610230565b3661023057005b600080fd5b34801561024157600080fd5b5061024a6108d3565b6040516102579190612dfb565b60405180910390f35b34801561026c57600080fd5b5061028760048036038101906102829190612ec5565b610965565b6040516102949190612f20565b60405180910390f35b3480156102a957600080fd5b506102b2610988565b6040516102bf9190612f4a565b60405180910390f35b3480156102d457600080fd5b506102ef60048036038101906102ea9190612f65565b610992565b6040516102fc9190612f20565b60405180910390f35b34801561031157600080fd5b5061032c6004803603810190610327919061301d565b6109c1565b005b34801561033a57600080fd5b50610343610af7565b6040516103509190612f4a565b60405180910390f35b34801561036557600080fd5b5061036e610afd565b60405161037b9190612f4a565b60405180910390f35b34801561039057600080fd5b50610399610b03565b6040516103a69190613099565b60405180910390f35b3480156103bb57600080fd5b506103d660048036038101906103d19190612ec5565b610b0c565b6040516103e39190612f20565b60405180910390f35b3480156103f857600080fd5b50610413600480360381019061040e91906130b4565b610b43565b005b34801561042157600080fd5b5061042a610b57565b6040516104379190612f4a565b60405180910390f35b34801561044c57600080fd5b50610455610b5d565b60405161046291906130f0565b60405180910390f35b34801561047757600080fd5b50610480610b83565b005b34801561048e57600080fd5b50610497610c70565b6040516104a4919061316a565b60405180910390f35b3480156104b957600080fd5b506104d460048036038101906104cf9190613185565b610c94565b005b3480156104e257600080fd5b506104eb610d39565b6040516104f89190612f20565b60405180910390f35b34801561050d57600080fd5b5061052860048036038101906105239190613185565b610d4c565b6040516105359190612f4a565b60405180910390f35b34801561054a57600080fd5b50610553610d94565b005b34801561056157600080fd5b5061057c600480360381019061057791906131de565b610da8565b005b34801561058a57600080fd5b50610593610e0b565b6040516105a091906130f0565b60405180910390f35b3480156105b557600080fd5b506105be610e35565b6040516105cb9190612dfb565b60405180910390f35b3480156105e057600080fd5b506105fb60048036038101906105f691906131de565b610ec7565b005b34801561060957600080fd5b50610624600480360381019061061f9190613185565b610f6e565b6040516106319190612f20565b60405180910390f35b34801561064657600080fd5b50610661600480360381019061065c9190612ec5565b610fc4565b60405161066e9190612f20565b60405180910390f35b34801561068357600080fd5b5061069e60048036038101906106999190612ec5565b61103b565b6040516106ab9190612f20565b60405180910390f35b3480156106c057600080fd5b506106db60048036038101906106d6919061335c565b61105e565b005b3480156106e957600080fd5b5061070460048036038101906106ff91906130b4565b6111bc565b005b34801561071257600080fd5b5061072d600480360381019061072891906130b4565b611245565b005b34801561073b57600080fd5b5061075660048036038101906107519190613185565b6112dd565b005b34801561076457600080fd5b5061077f600480360381019061077a91906133b8565b611383565b005b34801561078d57600080fd5b506107966113d9565b6040516107a39190612f4a565b60405180910390f35b3480156107b857600080fd5b506107c16113df565b005b3480156107cf57600080fd5b506107ea60048036038101906107e591906133f8565b61141f565b6040516107f79190612f4a565b60405180910390f35b34801561080c57600080fd5b5061082760048036038101906108229190613185565b6114a6565b005b34801561083557600080fd5b5061083e6116be565b60405161084b9190612f4a565b60405180910390f35b34801561086057600080fd5b5061087b60048036038101906108769190613185565b6116c4565b005b34801561088957600080fd5b50610892611748565b60405161089f9190612f4a565b60405180910390f35b3480156108b457600080fd5b506108bd61174e565b6040516108ca9190612f20565b60405180910390f35b6060600380546108e290613467565b80601f016020809104026020016040519081016040528092919081815260200182805461090e90613467565b801561095b5780601f106109305761010080835404028352916020019161095b565b820191906000526020600020905b81548152906001019060200180831161093e57829003601f168201915b5050505050905090565b600080610970611761565b905061097d818585611769565b600191505092915050565b6000600254905090565b60008061099d611761565b90506109aa858285611934565b6109b58585856119c0565b60019150509392505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a02611761565b73ffffffffffffffffffffffffffffffffffffffff1614610a2257600080fd5b60005b83839050811015610af157838382818110610a4357610a42613499565b5b9050602002016020810190610a589190613185565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ad69190612f4a565b60405180910390a38080610ae9906134f7565b915050610a25565b50505050565b600f5481565b600a5481565b60006009905090565b600080610b17611761565b9050610b38818585610b29858961141f565b610b339190613540565b611769565b600191505092915050565b610b54610b4e611761565b826123cd565b50565b60105481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60004711610bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbd906135e2565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c07611761565b73ffffffffffffffffffffffffffffffffffffffff1614610c2757600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610c6d573d6000803e3d6000fd5b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610cd5611761565b73ffffffffffffffffffffffffffffffffffffffff1614610cf557600080fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60009054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d9c61259b565b610da66000612619565b565b610db061259b565b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610e4490613467565b80601f0160208091040260200160405190810160405280929190818152602001828054610e7090613467565b8015610ebd5780601f10610e9257610100808354040283529160200191610ebd565b820191906000526020600020905b815481529060010190602001808311610ea057829003601f168201915b5050505050905090565b610ecf61259b565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5790613674565b60405180910390fd5b610f6a82826126df565b5050565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080610fcf611761565b90506000610fdd828661141f565b905083811015611022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101990613706565b60405180910390fd5b61102f8286868403611769565b60019250505092915050565b600080611046611761565b90506110538185856119c0565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661109f611761565b73ffffffffffffffffffffffffffffffffffffffff16146110bf57600080fd5b60005b82518110156111b75781601460008584815181106110e3576110e2613499565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555082818151811061114f5761114e613499565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78360405161119c9190612f20565b60405180910390a280806111af906134f7565b9150506110c2565b505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111fd611761565b73ffffffffffffffffffffffffffffffffffffffff161461121d57600080fd5b611225610b03565b600a6112319190613859565b8161123c91906138a4565b600b8190555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611286611761565b73ffffffffffffffffffffffffffffffffffffffff16146112a657600080fd5b60006112b130610d4c565b90506000606483836112c391906138a4565b6112cd919061392d565b90506112d881612780565b505050565b6112e561259b565b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611353600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001610da8565b611380600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016126df565b50565b61138b61259b565b611393610b03565b600a61139f9190613859565b826113aa91906138a4565b600d819055506113b8610b03565b600a6113c49190613859565b816113cf91906138a4565b600c819055505050565b600d5481565b6113e761259b565b6001600e60006101000a81548160ff0219169083151502179055506001600e60016101000a81548160ff021916908315150217905550565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114e7611761565b73ffffffffffffffffffffffffffffffffffffffff161461150757600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161154291906130f0565b602060405180830381865afa15801561155f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115839190613973565b116115c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ba906139ec565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161161991906130f0565b602060405180830381865afa158015611636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165a9190613973565b6040518363ffffffff1660e01b8152600401611677929190613a0c565b6020604051808303816000875af1158015611696573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ba9190613a4a565b5050565b600b5481565b6116cc61259b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561173c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173390613ae9565b60405180910390fd5b61174581612619565b50565b600c5481565b600e60019054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d090613b7b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611849576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184090613c0d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119279190612f4a565b60405180910390a3505050565b6000611940848461141f565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146119ba57818110156119ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a390613c79565b60405180910390fd5b6119b98484848403611769565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2790613d0b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9790613d9d565b60405180910390fd5b6000811415611aba57611ab5838360006129df565b6123c8565b611ac2610e0b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b305750611b00610e0b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b695750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611ba3575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bbc5750600860149054906101000a900460ff16155b15611fe357600e60019054906101000a900460ff16611cb657601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c765750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac90613e09565b60405180910390fd5b5b43601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d9d5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e4457600d54811115611de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dde90613e9b565b60405180910390fd5b600c54611df383610d4c565b82611dfe9190613540565b1115611e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3690613f07565b60405180910390fd5b611fe2565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611ee75750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f3657600d54811115611f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2890613f99565b60405180910390fd5b611fe1565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611fe057600c54611f9383610d4c565b82611f9e9190613540565b1115611fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd690613f07565b60405180910390fd5b5b5b5b5b6000611fee30610d4c565b90506000600b54821190508080156120125750600e60009054906101000a900460ff165b801561202b5750600860149054906101000a900460ff16155b80156120815750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120d75750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561212d5750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612171576001600860146101000a81548160ff021916908315150217905550612155612c57565b6000600860146101000a81548160ff0219169083151502179055505b6000600860149054906101000a900460ff161580156121d95750601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b801561222f5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b90506000811561235c57601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156122ba576122b360646122a5600f5488612c9690919063ffffffff16565b612cac90919063ffffffff16565b9050612338565b601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561233757612334606461232660105488612c9690919063ffffffff16565b612cac90919063ffffffff16565b90505b5b600081111561234d5761234c8730836129df565b5b80856123599190613fb9565b94505b601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156123b8576123b787612cc2565b5b6123c38787876129df565b505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561243d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124349061405f565b60405180910390fd5b61244982600083612d4c565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156124cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c6906140f1565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125829190612f4a565b60405180910390a361259683600084612d51565b505050565b6125a3611761565b73ffffffffffffffffffffffffffffffffffffffff166125c1610e0b565b73ffffffffffffffffffffffffffffffffffffffff1614612617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260e9061415d565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600267ffffffffffffffff81111561279d5761279c61321e565b5b6040519080825280602002602001820160405280156127cb5781602001602082028036833780820191505090505b50905030816000815181106127e3576127e2613499565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612888573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ac9190614192565b816001815181106128c0576128bf613499565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612925307f000000000000000000000000000000000000000000000000000000000000000084611769565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016129a99594939291906142b8565b600060405180830381600087803b1580156129c357600080fd5b505af11580156129d7573d6000803e3d6000fd5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4690613d0b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab690613d9d565b60405180910390fd5b612aca838383612d4c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4790614384565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612c3e9190612f4a565b60405180910390a3612c51848484612d51565b50505050565b6000612c6230610d4c565b90506000811415612c735750612c94565b6000819050600b54811115612c8857600b5490505b612c9181612780565b50505b565b60008183612ca491906138a4565b905092915050565b60008183612cba919061392d565b905092915050565b612d0a601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d56565b612d49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4090614416565b60405180910390fd5b50565b505050565b505050565b60004382119050919050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d9c578082015181840152602081019050612d81565b83811115612dab576000848401525b50505050565b6000601f19601f8301169050919050565b6000612dcd82612d62565b612dd78185612d6d565b9350612de7818560208601612d7e565b612df081612db1565b840191505092915050565b60006020820190508181036000830152612e158184612dc2565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e5c82612e31565b9050919050565b612e6c81612e51565b8114612e7757600080fd5b50565b600081359050612e8981612e63565b92915050565b6000819050919050565b612ea281612e8f565b8114612ead57600080fd5b50565b600081359050612ebf81612e99565b92915050565b60008060408385031215612edc57612edb612e27565b5b6000612eea85828601612e7a565b9250506020612efb85828601612eb0565b9150509250929050565b60008115159050919050565b612f1a81612f05565b82525050565b6000602082019050612f356000830184612f11565b92915050565b612f4481612e8f565b82525050565b6000602082019050612f5f6000830184612f3b565b92915050565b600080600060608486031215612f7e57612f7d612e27565b5b6000612f8c86828701612e7a565b9350506020612f9d86828701612e7a565b9250506040612fae86828701612eb0565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112612fdd57612fdc612fb8565b5b8235905067ffffffffffffffff811115612ffa57612ff9612fbd565b5b60208301915083602082028301111561301657613015612fc2565b5b9250929050565b60008060006040848603121561303657613035612e27565b5b600084013567ffffffffffffffff81111561305457613053612e2c565b5b61306086828701612fc7565b9350935050602061307386828701612eb0565b9150509250925092565b600060ff82169050919050565b6130938161307d565b82525050565b60006020820190506130ae600083018461308a565b92915050565b6000602082840312156130ca576130c9612e27565b5b60006130d884828501612eb0565b91505092915050565b6130ea81612e51565b82525050565b600060208201905061310560008301846130e1565b92915050565b6000819050919050565b600061313061312b61312684612e31565b61310b565b612e31565b9050919050565b600061314282613115565b9050919050565b600061315482613137565b9050919050565b61316481613149565b82525050565b600060208201905061317f600083018461315b565b92915050565b60006020828403121561319b5761319a612e27565b5b60006131a984828501612e7a565b91505092915050565b6131bb81612f05565b81146131c657600080fd5b50565b6000813590506131d8816131b2565b92915050565b600080604083850312156131f5576131f4612e27565b5b600061320385828601612e7a565b9250506020613214858286016131c9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61325682612db1565b810181811067ffffffffffffffff821117156132755761327461321e565b5b80604052505050565b6000613288612e1d565b9050613294828261324d565b919050565b600067ffffffffffffffff8211156132b4576132b361321e565b5b602082029050602081019050919050565b60006132d86132d384613299565b61327e565b905080838252602082019050602084028301858111156132fb576132fa612fc2565b5b835b8181101561332457806133108882612e7a565b8452602084019350506020810190506132fd565b5050509392505050565b600082601f83011261334357613342612fb8565b5b81356133538482602086016132c5565b91505092915050565b6000806040838503121561337357613372612e27565b5b600083013567ffffffffffffffff81111561339157613390612e2c565b5b61339d8582860161332e565b92505060206133ae858286016131c9565b9150509250929050565b600080604083850312156133cf576133ce612e27565b5b60006133dd85828601612eb0565b92505060206133ee85828601612eb0565b9150509250929050565b6000806040838503121561340f5761340e612e27565b5b600061341d85828601612e7a565b925050602061342e85828601612e7a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061347f57607f821691505b6020821081141561349357613492613438565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061350282612e8f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613535576135346134c8565b5b600182019050919050565b600061354b82612e8f565b915061355683612e8f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561358b5761358a6134c8565b5b828201905092915050565b7f546f6b656e3a206e6f2045544820746f20636c65617200000000000000000000600082015250565b60006135cc601683612d6d565b91506135d782613596565b602082019050919050565b600060208201905081810360008301526135fb816135bf565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061365e603983612d6d565b915061366982613602565b604082019050919050565b6000602082019050818103600083015261368d81613651565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006136f0602583612d6d565b91506136fb82613694565b604082019050919050565b6000602082019050818103600083015261371f816136e3565b9050919050565b60008160011c9050919050565b6000808291508390505b600185111561377d57808604811115613759576137586134c8565b5b60018516156137685780820291505b808102905061377685613726565b945061373d565b94509492505050565b6000826137965760019050613852565b816137a45760009050613852565b81600181146137ba57600281146137c4576137f3565b6001915050613852565b60ff8411156137d6576137d56134c8565b5b8360020a9150848211156137ed576137ec6134c8565b5b50613852565b5060208310610133831016604e8410600b84101617156138285782820a905083811115613823576138226134c8565b5b613852565b6138358484846001613733565b9250905081840481111561384c5761384b6134c8565b5b81810290505b9392505050565b600061386482612e8f565b915061386f8361307d565b925061389c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613786565b905092915050565b60006138af82612e8f565b91506138ba83612e8f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156138f3576138f26134c8565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061393882612e8f565b915061394383612e8f565b925082613953576139526138fe565b5b828204905092915050565b60008151905061396d81612e99565b92915050565b60006020828403121561398957613988612e27565b5b60006139978482850161395e565b91505092915050565b7f43616e2774207769746864726177203000000000000000000000000000000000600082015250565b60006139d6601083612d6d565b91506139e1826139a0565b602082019050919050565b60006020820190508181036000830152613a05816139c9565b9050919050565b6000604082019050613a2160008301856130e1565b613a2e6020830184612f3b565b9392505050565b600081519050613a44816131b2565b92915050565b600060208284031215613a6057613a5f612e27565b5b6000613a6e84828501613a35565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ad3602683612d6d565b9150613ade82613a77565b604082019050919050565b60006020820190508181036000830152613b0281613ac6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613b65602483612d6d565b9150613b7082613b09565b604082019050919050565b60006020820190508181036000830152613b9481613b58565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613bf7602283612d6d565b9150613c0282613b9b565b604082019050919050565b60006020820190508181036000830152613c2681613bea565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613c63601d83612d6d565b9150613c6e82613c2d565b602082019050919050565b60006020820190508181036000830152613c9281613c56565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613cf5602583612d6d565b9150613d0082613c99565b604082019050919050565b60006020820190508181036000830152613d2481613ce8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613d87602383612d6d565b9150613d9282613d2b565b604082019050919050565b60006020820190508181036000830152613db681613d7a565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613df3601683612d6d565b9150613dfe82613dbd565b602082019050919050565b60006020820190508181036000830152613e2281613de6565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000613e85603583612d6d565b9150613e9082613e29565b604082019050919050565b60006020820190508181036000830152613eb481613e78565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613ef1601383612d6d565b9150613efc82613ebb565b602082019050919050565b60006020820190508181036000830152613f2081613ee4565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613f83603683612d6d565b9150613f8e82613f27565b604082019050919050565b60006020820190508181036000830152613fb281613f76565b9050919050565b6000613fc482612e8f565b9150613fcf83612e8f565b925082821015613fe257613fe16134c8565b5b828203905092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000614049602183612d6d565b915061405482613fed565b604082019050919050565b600060208201905081810360008301526140788161403c565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006140db602283612d6d565b91506140e68261407f565b604082019050919050565b6000602082019050818103600083015261410a816140ce565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614147602083612d6d565b915061415282614111565b602082019050919050565b600060208201905081810360008301526141768161413a565b9050919050565b60008151905061418c81612e63565b92915050565b6000602082840312156141a8576141a7612e27565b5b60006141b68482850161417d565b91505092915050565b6000819050919050565b60006141e46141df6141da846141bf565b61310b565b612e8f565b9050919050565b6141f4816141c9565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61422f81612e51565b82525050565b60006142418383614226565b60208301905092915050565b6000602082019050919050565b6000614265826141fa565b61426f8185614205565b935061427a83614216565b8060005b838110156142ab5781516142928882614235565b975061429d8361424d565b92505060018101905061427e565b5085935050505092915050565b600060a0820190506142cd6000830188612f3b565b6142da60208301876141eb565b81810360408301526142ec818661425a565b90506142fb60608301856130e1565b6143086080830184612f3b565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061436e602683612d6d565b915061437982614312565b604082019050919050565b6000602082019050818103600083015261439d81614361565b9050919050565b7f4f6e6c79206f6e652070757263686173652070657220626c6f636b20616c6c6f60008201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b6000614400602483612d6d565b915061440b826143a4565b604082019050919050565b6000602082019050818103600083015261442f816143f3565b905091905056fea264697066735822122069e757c54f34cdebfdd749ea19157cfc45270c24a7c5838cc7986cbd67cfa32664736f6c634300080a00330000000000000000000000003a40672ae10e02fa4762fc7edf5f762ffbfab7ec0000000000000000000000000000000000000000000000000000000000000002