60806040526002805460ff19908116601217909155600b805490911660011790556715f155637eba0c00600e55670e27c49886e60000600f5566470de4df82000060105534801561004f57600080fd5b506140208061005f6000396000f3fe608060405234801561001057600080fd5b50600436106103155760003560e01c80637c6674b5116101a7578063bb6ff386116100ee578063d490e7e011610097578063dd62ed3e11610071578063dd62ed3e146109e5578063e22e013c14610a20578063fff6cae914610a5957610315565b8063d490e7e014610977578063d505accf1461097f578063daf88818146109dd57610315565b8063bd9a548b116100c8578063bd9a548b1461087d578063c45a015514610885578063c548e3c51461088d57610315565b8063bb6ff3861461082d578063bc25cf771461084a578063bc9bd12a146103e457610315565b8063a36a363011610150578063afc8276c1161012a578063afc8276c146107da578063b2a02ff1146107e2578063ba9a7a561461082557610315565b8063a36a363014610791578063a9059cbb14610799578063ad7a672f146107d257610315565b806395a2251f1161018157806395a2251f1461071357806395d89b41146107465780639aac2c531461074e57610315565b80637c6674b5146106d05780637ecebe00146106d85780638c765e941461070b57610315565b806333fabfd11161026b5780635a0f03c6116102145780636f13cb83116101ee5780636f13cb83146106565780636f307dc31461069557806370a082311461069d57610315565b80635a0f03c61461059e5780636a627842146105ea5780636e01be101461061d57610315565b80633ba0b9a9116102455780633ba0b9a9146105715780634a5d316c146105795780634fd42e171461058157610315565b806333fabfd114610559578063356c571f146105615780633644e5151461056957610315565b80631ef63a79116102cd5780632fa5ae1b116102a75780632fa5ae1b1461050257806330adf81f14610533578063313ce5671461053b57610315565b80631ef63a791461049a57806323b872dd146104b757806323f5589a146104fa57610315565b80630fb60fef116102fe5780630fb60fef146103e457806318160ddd146103fe57806319f3400d1461040657610315565b806306fdde031461031a578063095ea7b314610397575b600080fd5b610322610a61565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561035c578181015183820152602001610344565b50505050905090810190601f1680156103895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103d0600480360360408110156103ad57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610b0d565b604080519115158252519081900360200190f35b6103ec610b24565b60408051918252519081900360200190f35b6103ec610b30565b6104986004803603606081101561041c57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561045957600080fd5b82018360208201111561046b57600080fd5b8035906020019184600183028401116401000000008311171561048d57600080fd5b509092509050610b36565b005b610498600480360360208110156104b057600080fd5b5035610e5c565b6103d0600480360360608110156104cd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610f6f565b6103ec611083565b61050a61108e565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6103ec6110af565b6105436110d3565b6040805160ff9092168252519081900360200190f35b6103ec6110dc565b6103ec6110e8565b6103ec6110ee565b6103ec6110f4565b610498611143565b6104986004803603602081101561059757600080fd5b50356111f4565b6105d1600480360360208110156105b457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661130e565b6040805192835260208301919091528051918290030190f35b6103ec6004803603602081101561060057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611345565b6103d06004803603604081101561063357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356115f3565b6105d16004803603606081101561066c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602081013590604001356117e6565b61050a6119e9565b6103ec600480360360208110156106b357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611a05565b61050a611a17565b6103ec600480360360208110156106ee57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611a33565b6103ec611a45565b6103ec6004803603602081101561072957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611a4b565b610322611c6f565b6103d06004803603606081101561076457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135611ce7565b6103ec611e81565b6103d0600480360360408110156107af57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611e87565b6103ec611e94565b6103ec611e9a565b6103ec600480360360608110156107f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135611ea6565b6103ec612370565b6104986004803603602081101561084357600080fd5b5035612376565b6104986004803603602081101561086057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612490565b6105d1612613565b61050a6129ee565b610498600480360360a08110156108a357600080fd5b8101906020810181356401000000008111156108be57600080fd5b8201836020820111156108d057600080fd5b803590602001918460018302840111640100000000831117156108f257600080fd5b91939092909160208101903564010000000081111561091057600080fd5b82018360208201111561092257600080fd5b8035906020019184600183028401116401000000008311171561094457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160409091013516612a0a565b6103ec612c56565b610498600480360360e081101561099557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135612c62565b61050a612ca6565b6103ec600480360360408110156109fb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516612cc2565b610a28612cdf565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610498612d88565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f81018490048402820184019092528181529291830182828015610b055780601f10610ada57610100808354040283529160200191610b05565b820191906000526020600020905b815481529060010190602001808311610ae857829003601f168201915b505050505081565b6000610b1a338484612e56565b5060015b92915050565b670de0b6b3a764000081565b60035481565b600b5460ff16610ba757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600a54831115610c4057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496d7065726d61783a20494e53554646494349454e545f434153480000000000604482015290519081900360640190fd5b610c4a8484612ec5565b8015610d16576040517facb86cbb0000000000000000000000000000000000000000000000000000000081523360048201818152602483018690526060604484019081526064840185905273ffffffffffffffffffffffffffffffffffffffff88169363acb86cbb93928892889288929190608401848480828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015610cfd57600080fd5b505af1158015610d11573d6000803e3d6000fd5b505050505b3060009081526004602052604081205490610d676001610d5b610d376110f4565b610d4f89670de0b6b3a764000063ffffffff6130d116565b9063ffffffff61314b16565b9063ffffffff61318d16565b905080821015610dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180613f346024913960400191505060405180910390fd5b610dcc3083613201565b6040805186815260208101849052815173ffffffffffffffffffffffffffffffffffffffff89169233927f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc929081900390910190a35050610e2b6132c5565b5050600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555050565b600b5460ff16610ecd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055610f0981600067011c37937e08000061339b565b60108190556040805182815290517f21e5451a492a87031e8324e7e1e2ba821fdec0c40972393c9f74dd38bd88a6af9181900360200190a150600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461106e57604080518082018252601e81527f496d7065726d61783a205452414e534645525f4e4f545f414c4c4f574544000060208083019190915273ffffffffffffffffffffffffffffffffffffffff8716600090815260058252838120338252909152919091205461103c91849063ffffffff61348616565b73ffffffffffffffffffffffffffffffffffffffff851660009081526005602090815260408083203384529091529020555b611079848484613537565b5060019392505050565b601054600f54015b90565b600b54610100900473ffffffffffffffffffffffffffffffffffffffff1681565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60025460ff1681565b67011c37937e08000081565b600e5481565b60065481565b600354600a5460009190811580611109575080155b1561112057670de0b6b3a76400009250505061108b565b61113c82610d4f83670de0b6b3a764000063ffffffff6130d116565b9250505090565b60095473ffffffffffffffffffffffffffffffffffffffff16156111c857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f496d7065726d61783a20464143544f52595f414c52454144595f534554000000604482015290519081900360640190fd5b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055565b600b5460ff1661126557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556112a881670de0b6b3a7640000670e92596fd629000061339b565b600f8190556040805182815290517f8a9bb9067f9ecb13a322b548e6df3dd1bd10a54698834dac43ed8f0e765bf94d9181900360200190a150600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b60008061133c837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff806117e6565b91509150915091565b600b5460009060ff166113b957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b15801561145257600080fd5b505afa158015611466573d6000803e3d6000fd5b505050506040513d602081101561147c57600080fd5b5051600a5490915060009061149890839063ffffffff6135b716565b90506114bd6114a56110f4565b610d4f83670de0b6b3a764000063ffffffff6130d116565b9250600354600014156114eb576114dc836103e863ffffffff6135b716565b92506114eb60006103e86135f9565b6000831161155a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f496d7065726d61783a204d494e545f414d4f554e545f5a45524f000000000000604482015290519081900360640190fd5b61156484846135f9565b6040805182815260208101859052815173ffffffffffffffffffffffffffffffffffffffff87169233927f2f00e3cdd69a77be7ed215ec7b2a36784dd158f921fca79ac29deffa353fe6ee929081900390910190a350506115c36132c5565b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055919050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260408120548083111561162b576000915050610b1e565b8281036000611654670de0b6b3a7640000610d4f6116476110f4565b859063ffffffff6130d116565b90506000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634d73e9ba886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156116f757600080fd5b505afa15801561170b573d6000803e3d6000fd5b505050506040513d602081101561172157600080fd5b5051600c54604080517f4d73e9ba00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b8116600483015291519394506000939190921691634d73e9ba916024808301926020929190829003018186803b15801561179c57600080fd5b505afa1580156117b0573d6000803e3d6000fd5b505050506040513d60208110156117c657600080fd5b5051905060006117d78484846136aa565b159a9950505050505050505050565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8414156118b957600b54604080517f4d73e9ba00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152915161010090930490911691634d73e9ba91602480820192602092909190829003018186803b15801561188a57600080fd5b505afa15801561189e573d6000803e3d6000fd5b505050506040513d60208110156118b457600080fd5b505193505b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83141561198357600c54604080517f4d73e9ba00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015291519190921691634d73e9ba916024808301926020929190829003018186803b15801561195457600080fd5b505afa158015611968573d6000803e3d6000fd5b505050506040513d602081101561197e57600080fd5b505192505b60006119ce670de0b6b3a7640000610d4f61199c6110f4565b73ffffffffffffffffffffffffffffffffffffffff8a166000908152600460205260409020549063ffffffff6130d116565b90506119db8186866136aa565b92509250505b935093915050565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b60046020526000908152604090205481565b600d5473ffffffffffffffffffffffffffffffffffffffff1681565b60076020526000908152604090205481565b600f5481565b600b5460009060ff16611abf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905530600090815260046020526040902054611b1b670de0b6b3a7640000610d4f611b0e6110f4565b849063ffffffff6130d116565b915060008211611b8c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f496d7065726d61783a2052454445454d5f414d4f554e545f5a45524f00000000604482015290519081900360640190fd5b600a54821115611bfd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496d7065726d61783a20494e53554646494349454e545f434153480000000000604482015290519081900360640190fd5b611c073082613201565b611c118383612ec5565b6040805183815260208101839052815173ffffffffffffffffffffffffffffffffffffffff86169233927f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc929081900390910190a3506115c36132c5565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f81018490048402820184019092528181529291830182828015610b055780601f10610ada57610100808354040283529160200191610b05565b600b54600c5460009173ffffffffffffffffffffffffffffffffffffffff6101009091048116918116908516821480611d4b57508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b611db657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f496d7065726d61783a20494e56414c49445f424f52524f5741424c4500000000604482015290519081900360640190fd5b60008273ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614611e11577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611e13565b845b905060008273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614611e70577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611e72565b855b905060006117d78984846117e6565b60105481565b6000610b1a338484613537565b600a5481565b670e92596fd629000081565b600b54600090610100900473ffffffffffffffffffffffffffffffffffffffff16331480611eeb5750600c5473ffffffffffffffffffffffffffffffffffffffff1633145b611f5657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496d7065726d61783a20554e415554484f52495a454400000000000000000000604482015290519081900360640190fd5b6000611f618461130e565b91505060008111611fd357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f496d7065726d61783a20494e53554646494349454e545f53484f525446414c4c604482015290519081900360640190fd5b600b54600090610100900473ffffffffffffffffffffffffffffffffffffffff1633141561200b57612003612613565b509050612017565b612013612613565b9150505b60006120346120246110f4565b610d4f878563ffffffff6130d116565b9050612057670de0b6b3a7640000610d4f600f54846130d190919063ffffffff16565b93506120e2846040518060400160405280601e81526020017f496d7065726d61783a204c49515549444154494e475f544f4f5f4d5543480000815250600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134869092919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600460205260408082209390935590891681522054612124908563ffffffff61318d16565b73ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260409182902094909455805188815290519193928a16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3601054156123665760006121b3670de0b6b3a7640000610d4f601054856130d190919063ffffffff16565b90506000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663345ef9416040518163ffffffff1660e01b815260040160206040518083038186803b15801561221f57600080fd5b505afa158015612233573d6000803e3d6000fd5b505050506040513d602081101561224957600080fd5b5051604080518082018252601e81527f496d7065726d61783a204c49515549444154494e475f544f4f5f4d554348000060208281019190915273ffffffffffffffffffffffffffffffffffffffff8c166000908152600490915291909120549192506122bd9190849063ffffffff61348616565b73ffffffffffffffffffffffffffffffffffffffff808a1660009081526004602052604080822093909355908316815220546122ff908363ffffffff61318d16565b73ffffffffffffffffffffffffffffffffffffffff80831660008181526004602090815260409182902094909455805186815290519193928c16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a350505b5050509392505050565b6103e881565b600b5460ff166123e757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905561242a81670de0b6b3a76400006715f15565d2c5f00061339b565b600e8190556040805182815290517fdff9a61839be6f6ce5ea77311cc351786a39a9f337c507ff35e7b358fd39c0439181900360200190a150600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600b5460ff1661250157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600a54600854604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516125e59385936125e093919273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b1580156125a857600080fd5b505afa1580156125bc573d6000803e3d6000fd5b505050506040513d60208110156125d257600080fd5b50519063ffffffff6135b716565b612ec5565b50600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b600d54600854604080517f446a37e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015281516000948594859491169263446a37e0926024808301939282900301818787803b15801561268b57600080fd5b505af115801561269f573d6000803e3d6000fd5b505050506040513d60408110156126b557600080fd5b5051600854604080517f0902f1ac0000000000000000000000000000000000000000000000000000000081529051929350600092839273ffffffffffffffffffffffffffffffffffffffff1691630902f1ac916004808301926060929190829003018186803b15801561272757600080fd5b505afa15801561273b573d6000803e3d6000fd5b505050506040513d606081101561275157600080fd5b508051602091820151600854604080517f18160ddd000000000000000000000000000000000000000000000000000000008152905193965091945060009373ffffffffffffffffffffffffffffffffffffffff909116926318160ddd926004808201939291829003018186803b1580156127ca57600080fd5b505afa1580156127de573d6000803e3d6000fd5b505050506040513d60208110156127f457600080fd5b50519050600061283184612807856137ac565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169063ffffffff6137d016565b905060006128707bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80841690610d4f90891664010000000063ffffffff6130d116565b9050600061289161288c8364010000000063ffffffff6130d116565b613811565b905060006128c46dffffffffffffffffffffffffffff6002890216610d4f87670de0b6b3a764000063ffffffff6130d116565b905060006128f76dffffffffffffffffffffffffffff6002890216610d4f88670de0b6b3a764000063ffffffff6130d116565b9050612912640100000000610d4f848663ffffffff6130d116565b9a5061292d83610d4f8364010000000063ffffffff6130d116565b995060648b11612988576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613f586021913960400191505060405180910390fd5b60648a116129e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613f586021913960400191505060405180910390fd5b5050505050505050509091565b60095473ffffffffffffffffffffffffffffffffffffffff1681565b60095473ffffffffffffffffffffffffffffffffffffffff163314612a9057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496d7065726d61783a20554e415554484f52495a454400000000000000000000604482015290519081900360640190fd5b612b0387878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8b01819004810282018101909252898152925089915088908190840183828082843760009201919091525061386392505050565b600880547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff86811691909117909255600b80547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010086851602179055600c8054909116838316179055600954604080517f7c6674b500000000000000000000000000000000000000000000000000000000815290519190921691637c6674b5916004808301926020929190829003018186803b158015612bdd57600080fd5b505afa158015612bf1573d6000803e3d6000fd5b505050506040513d6020811015612c0757600080fd5b5051600d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691909117905550505050505050565b6715f15565d2c5f00081565b612c92878787878787877f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9613947565b612c9d878787612e56565b50505050505050565b600c5473ffffffffffffffffffffffffffffffffffffffff1681565b600560209081526000928352604080842090915290825290205481565b600d54600854604080517f446a37e000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201528151600094939093169263446a37e09260248084019391929182900301818787803b158015612d5757600080fd5b505af1158015612d6b573d6000803e3d6000fd5b505050506040513d6040811015612d8157600080fd5b5051919050565b600b5460ff16612df957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496d7065726d61783a205245454e544552454400000000000000000000000000604482015290519081900360640190fd5b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055612e296132c5565b600b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600854604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff86811660248301526044808301879052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009560609594169382918083835b60208310612fcb57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612f8e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461302d576040519150601f19603f3d011682016040523d82523d6000602084013e613032565b606091505b5091509150818015613060575080511580613060575080806020019051602081101561305d57600080fd5b50515b6130cb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f496d7065726d61783a205452414e534645525f4641494c454400000000000000604482015290519081900360640190fd5b50505050565b6000826130e057506000610b1e565b828202828482816130ed57fe5b0414613144576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613fcb6021913960400191505060405180910390fd5b9392505050565b600061314483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613bea565b60008282018381101561314457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040902054613237908263ffffffff6135b716565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260046020526040902055600354613270908263ffffffff6135b716565b60035560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561333657600080fd5b505afa15801561334a573d6000803e3d6000fd5b505050506040513d602081101561336057600080fd5b5051600a81905560408051918252517f8a0df8ef054fae2c3d2d19a7b322e864870cc9fd3cb07fb9526309c596244bf49181900360200190a1565b6133a3613c69565b8183101561341257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f496d7065726d61783a20494e56414c49445f53455454494e4700000000000000604482015290519081900360640190fd5b8083111561348157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f496d7065726d61783a20494e56414c49445f53455454494e4700000000000000604482015290519081900360640190fd5b505050565b6000818484111561352f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156134f45781810151838201526020016134dc565b50505050905090810190601f1680156135215780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b61354183826115f3565b6135ac57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f496d7065726d61783a20494e53554646494349454e545f4c4951554944495459604482015290519081900360640190fd5b613481838383613d82565b600061314483836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250613486565b60035461360c908263ffffffff61318d16565b60035573ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040902054613645908263ffffffff61318d16565b73ffffffffffffffffffffffffffffffffffffffff831660008181526004602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600e54600090819081806136bc612613565b909250905060006136df670de0b6b3a7640000610d4f8a8663ffffffff6130d116565b905060006136ff670de0b6b3a7640000610d4f8a8663ffffffff6130d116565b90508082101561370b57905b613727670de0b6b3a7640000610d4f848863ffffffff6130d116565b915061374585610d4f83670de0b6b3a764000063ffffffff6130d116565b9050600061377c670de0b6b3a7640000610d4f613760611083565b613770878763ffffffff61318d16565b9063ffffffff6130d116565b9050808b10613798578a039650600095506119e1945050505050565b600097508a900395506119e1945050505050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff84168161380957fe5b049392505050565b60006003821115613854575080600160028204015b8181101561384e5780915060028182858161383d57fe5b04018161384657fe5b049050613826565b5061385e565b811561385e575060015b919050565b8151613876906000906020850190613e9b565b50805161388a906001906020840190613e9b565b506040514690806052613f7982396040805191829003605201822086516020978801208383018352600184527f310000000000000000000000000000000000000000000000000000000000000093880193909352815180880191909152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c090910190925250805192019190912060065550565b428510156139b657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496d7065726d61783a2045585049524544000000000000000000000000000000604482015290519081900360640190fd5b60065473ffffffffffffffffffffffffffffffffffffffff808a1660008181526007602090815260408083208054600180820190925582518085018a905280840196909652958e166060860152608085018d905260a085019590955260c08085018c90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff8a166101828501526101a284018990526101c28401889052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015613af8573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590613b7357508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b613bde57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f496d7065726d61783a20494e56414c49445f5349474e41545552450000000000604482015290519081900360640190fd5b50505050505050505050565b60008183613c53576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156134f45781810151838201526020016134dc565b506000838581613c5f57fe5b0495945050505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f851a4406040518163ffffffff1660e01b815260040160206040518083038186803b158015613cd157600080fd5b505afa158015613ce5573d6000803e3d6000fd5b505050506040513d6020811015613cfb57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff163314613d8057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496d7065726d61783a20554e415554484f52495a454400000000000000000000604482015290519081900360640190fd5b565b604080518082018252601b81527f496d7065726d61783a205452414e534645525f544f4f5f48494748000000000060208083019190915273ffffffffffffffffffffffffffffffffffffffff8616600090815260049091529190912054613df091839063ffffffff61348616565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600460205260408082209390935590841681522054613e32908263ffffffff61318d16565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526004602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10613edc57805160ff1916838001178555613f09565b82800160010185558215613f09579182015b82811115613f09578251825591602001919060010190613eee565b50613f15929150613f19565b5090565b61108b91905b80821115613f155760008155600101613f1f56fe496d7065726d61783a20494e53554646494349454e545f52454445454d5f544f4b454e53496d7065726d61783a2050524943455f43414c43554c4154494f4e5f4552524f52454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a7231582029005eb6dca62e6d2964ccdaab3966de01041403db00613474404715174f404464736f6c63430005100032