diff --git a/src/.output/xdp_filter.bpf.o b/src/.output/xdp_filter.bpf.o index f514521..074fd5b 100644 Binary files a/src/.output/xdp_filter.bpf.o and b/src/.output/xdp_filter.bpf.o differ diff --git a/src/.output/xdp_filter.o b/src/.output/xdp_filter.o deleted file mode 100644 index 99577e0..0000000 Binary files a/src/.output/xdp_filter.o and /dev/null differ diff --git a/src/.output/xdp_filter.skel.h b/src/.output/xdp_filter.skel.h deleted file mode 100644 index cc507ea..0000000 --- a/src/.output/xdp_filter.skel.h +++ /dev/null @@ -1,1268 +0,0 @@ -/* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */ - -/* THIS FILE IS AUTOGENERATED! */ -#ifndef __XDP_FILTER_BPF_SKEL_H__ -#define __XDP_FILTER_BPF_SKEL_H__ - -#include -#include - -struct xdp_filter_bpf { - struct bpf_object_skeleton *skeleton; - struct bpf_object *obj; - struct { - struct bpf_map *rb_comm; - struct bpf_map *fs_open; - struct bpf_map *rodata; - } maps; - struct { - struct bpf_program *handle_sched_process_exec; - struct bpf_program *kprobe__64_sys_read; - struct bpf_program *xdp_receive; - } progs; - struct { - struct bpf_link *handle_sched_process_exec; - struct bpf_link *kprobe__64_sys_read; - struct bpf_link *xdp_receive; - } links; - struct xdp_filter_bpf__rodata { - char xdp_receive_____fmt[19]; - char xdp_receive_____fmt_1[2]; - char xdp_receive_____fmt_2[2]; - char xdp_receive_____fmt_3[2]; - char xdp_receive_____fmt_4[6]; - char xdp_receive_____fmt_5[23]; - char xdp_receive_____fmt_6[2]; - char xdp_receive_____fmt_7[54]; - char xdp_receive_____fmt_8[2]; - char xdp_receive_____fmt_9[31]; - char xdp_receive_____fmt_10[71]; - char xdp_receive_____fmt_11[38]; - char xdp_receive_____fmt_12[38]; - char xdp_receive_____fmt_13[38]; - char xdp_receive_____fmt_14[31]; - char xdp_receive_____fmt_15[38]; - char xdp_receive_____fmt_16[38]; - char xdp_receive_____fmt_18[53]; - char xdp_receive_____fmt_19[38]; - char xdp_receive_____fmt_20[41]; - char xdp_receive_____fmt_21[31]; - char xdp_receive_____fmt_22[42]; - char handle_sys_read_____fmt[16]; - char expand_tcp_packet_payload_____fmt[52]; - char expand_tcp_packet_payload_____fmt_23[38]; - char expand_tcp_packet_payload_____fmt_24[38]; - char expand_tcp_packet_payload_____fmt_25[38]; - char expand_tcp_packet_payload_____fmt_26[25]; - char expand_tcp_packet_payload_____fmt_27[24]; - char ipv4_csum_____fmt[42]; - char modify_payload_____fmt[45]; - char modify_payload_____fmt_29[45]; - } *rodata; -}; - -static void -xdp_filter_bpf__destroy(struct xdp_filter_bpf *obj) -{ - if (!obj) - return; - if (obj->skeleton) - bpf_object__destroy_skeleton(obj->skeleton); - free(obj); -} - -static inline int -xdp_filter_bpf__create_skeleton(struct xdp_filter_bpf *obj); - -static inline struct xdp_filter_bpf * -xdp_filter_bpf__open_opts(const struct bpf_object_open_opts *opts) -{ - struct xdp_filter_bpf *obj; - - obj = (struct xdp_filter_bpf *)calloc(1, sizeof(*obj)); - if (!obj) - return NULL; - if (xdp_filter_bpf__create_skeleton(obj)) - goto err; - if (bpf_object__open_skeleton(obj->skeleton, opts)) - goto err; - - return obj; -err: - xdp_filter_bpf__destroy(obj); - return NULL; -} - -static inline struct xdp_filter_bpf * -xdp_filter_bpf__open(void) -{ - return xdp_filter_bpf__open_opts(NULL); -} - -static inline int -xdp_filter_bpf__load(struct xdp_filter_bpf *obj) -{ - return bpf_object__load_skeleton(obj->skeleton); -} - -static inline struct xdp_filter_bpf * -xdp_filter_bpf__open_and_load(void) -{ - struct xdp_filter_bpf *obj; - - obj = xdp_filter_bpf__open(); - if (!obj) - return NULL; - if (xdp_filter_bpf__load(obj)) { - xdp_filter_bpf__destroy(obj); - return NULL; - } - return obj; -} - -static inline int -xdp_filter_bpf__attach(struct xdp_filter_bpf *obj) -{ - return bpf_object__attach_skeleton(obj->skeleton); -} - -static inline void -xdp_filter_bpf__detach(struct xdp_filter_bpf *obj) -{ - return bpf_object__detach_skeleton(obj->skeleton); -} - -static inline int -xdp_filter_bpf__create_skeleton(struct xdp_filter_bpf *obj) -{ - struct bpf_object_skeleton *s; - - s = (struct bpf_object_skeleton *)calloc(1, sizeof(*s)); - if (!s) - return -1; - obj->skeleton = s; - - s->sz = sizeof(*s); - s->name = "xdp_filter_bpf"; - s->obj = &obj->obj; - - /* maps */ - s->map_cnt = 3; - s->map_skel_sz = sizeof(*s->maps); - s->maps = (struct bpf_map_skeleton *)calloc(s->map_cnt, s->map_skel_sz); - if (!s->maps) - goto err; - - s->maps[0].name = "rb_comm"; - s->maps[0].map = &obj->maps.rb_comm; - - s->maps[1].name = "fs_open"; - s->maps[1].map = &obj->maps.fs_open; - - s->maps[2].name = "xdp_filt.rodata"; - s->maps[2].map = &obj->maps.rodata; - s->maps[2].mmaped = (void **)&obj->rodata; - - /* programs */ - s->prog_cnt = 3; - s->prog_skel_sz = sizeof(*s->progs); - s->progs = (struct bpf_prog_skeleton *)calloc(s->prog_cnt, s->prog_skel_sz); - if (!s->progs) - goto err; - - s->progs[0].name = "handle_sched_process_exec"; - s->progs[0].prog = &obj->progs.handle_sched_process_exec; - s->progs[0].link = &obj->links.handle_sched_process_exec; - - s->progs[1].name = "kprobe__64_sys_read"; - s->progs[1].prog = &obj->progs.kprobe__64_sys_read; - s->progs[1].link = &obj->links.kprobe__64_sys_read; - - s->progs[2].name = "xdp_receive"; - s->progs[2].prog = &obj->progs.xdp_receive; - s->progs[2].link = &obj->links.xdp_receive; - - s->data_sz = 27032; - s->data = (void *)"\ -\x7f\x45\x4c\x46\x02\x01\x01\0\0\0\0\0\0\0\0\0\x01\0\xf7\0\x01\0\0\0\0\0\0\0\0\ -\0\0\0\0\0\0\0\0\0\0\0\x58\x65\0\0\0\0\0\0\0\0\0\0\x40\0\0\0\0\0\x40\0\x11\0\ -\x10\0\x85\0\0\0\x0e\0\0\0\xb7\0\0\0\0\0\0\0\x95\0\0\0\0\0\0\0\x15\x01\x17\0\0\ -\0\0\0\x79\x16\x70\0\0\0\0\0\x79\x18\x68\0\0\0\0\0\x85\0\0\0\x0e\0\0\0\xbf\x07\ -\0\0\0\0\0\0\x7b\x7a\xf8\xff\0\0\0\0\x7b\x8a\xe8\xff\0\0\0\0\x77\x07\0\0\x20\0\ -\0\0\x63\x7a\xf4\xff\0\0\0\0\x63\x6a\xf0\xff\0\0\0\0\xbf\xa2\0\0\0\0\0\0\x07\ -\x02\0\0\xf8\xff\xff\xff\xbf\xa3\0\0\0\0\0\0\x07\x03\0\0\xe8\xff\xff\xff\x18\ -\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xb7\x04\0\0\0\0\0\0\x85\0\0\0\x02\0\0\0\x18\ -\x01\0\0\x80\x02\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x10\0\0\0\xbf\x73\0\0\0\0\0\0\ -\xbf\x64\0\0\0\0\0\0\x85\0\0\0\x06\0\0\0\xb7\0\0\0\0\0\0\0\x95\0\0\0\0\0\0\0\ -\xbf\x16\0\0\0\0\0\0\x61\x65\x04\0\0\0\0\0\x61\x67\0\0\0\0\0\0\xbf\x79\0\0\0\0\ -\0\0\x07\x09\0\0\x0e\0\0\0\x3d\x95\x04\0\0\0\0\0\x18\x01\0\0\0\0\0\0\0\0\0\0\0\ -\0\0\0\xb7\x02\0\0\x13\0\0\0\x05\0\x11\0\0\0\0\0\xbf\x78\0\0\0\0\0\0\x07\x08\0\ -\0\x22\0\0\0\x3d\x85\x03\0\0\0\0\0\x18\x01\0\0\x13\0\0\0\0\0\0\0\0\0\0\0\x05\0\ -\x0a\0\0\0\0\0\x71\x91\x09\0\0\0\0\0\x15\x01\x03\0\x06\0\0\0\x18\x01\0\0\x15\0\ -\0\0\0\0\0\0\0\0\0\0\x05\0\x05\0\0\0\0\0\xbf\x71\0\0\0\0\0\0\x07\x01\0\0\x36\0\ -\0\0\x3d\x15\x06\0\0\0\0\0\x18\x01\0\0\x17\0\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\ -\x02\0\0\0\x85\0\0\0\x06\0\0\0\xb7\0\0\0\x02\0\0\0\x95\0\0\0\0\0\0\0\x69\x81\ -\x02\0\0\0\0\0\x15\x01\x07\0\x23\x28\0\0\x69\x83\x02\0\0\0\0\0\xdc\x03\0\0\x10\ -\0\0\0\x18\x01\0\0\x19\0\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x06\0\0\0\x85\0\0\0\ -\x06\0\0\0\x05\0\xf5\xff\0\0\0\0\x69\x93\x02\0\0\0\0\0\xdc\x03\0\0\x10\0\0\0\ -\x69\x81\x0c\0\0\0\0\0\x77\x01\0\0\x02\0\0\0\x57\x01\0\0\x3c\0\0\0\x1f\x13\0\0\ -\0\0\0\0\x71\x92\0\0\0\0\0\0\x67\x02\0\0\x02\0\0\0\x57\x02\0\0\x3c\0\0\0\x1f\ -\x23\0\0\0\0\0\0\xbf\x84\0\0\0\0\0\0\x0f\x14\0\0\0\0\0\0\x15\x03\x05\0\x09\0\0\ -\0\x18\x01\0\0\x1f\0\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x17\0\0\0\x85\0\0\0\x06\0\ -\0\0\x05\0\xe3\xff\0\0\0\0\xbf\x41\0\0\0\0\0\0\x07\x01\0\0\x09\0\0\0\x3d\x15\ -\x03\0\0\0\0\0\x18\x01\0\0\x36\0\0\0\0\0\0\0\0\0\0\0\x05\0\xdb\xff\0\0\0\0\x7b\ -\x5a\xb0\xff\0\0\0\0\x18\x01\0\0\x38\0\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x36\0\0\ -\0\xbf\x43\0\0\0\0\0\0\x7b\x4a\xb8\xff\0\0\0\0\xb7\x04\0\0\x09\0\0\0\x85\0\0\0\ -\x06\0\0\0\x79\xa4\xb8\xff\0\0\0\0\x71\x41\0\0\0\0\0\0\x15\x01\x03\0\x58\0\0\0\ -\x18\x01\0\0\x6e\0\0\0\0\0\0\0\0\0\0\0\x05\0\xcd\xff\0\0\0\0\x71\x41\x01\0\0\0\ -\0\0\x55\x01\xfb\xff\x44\0\0\0\x71\x41\x02\0\0\0\0\0\x55\x01\xf9\xff\x50\0\0\0\ -\x71\x41\x03\0\0\0\0\0\x55\x01\xf7\xff\x5f\0\0\0\x71\x41\x04\0\0\0\0\0\x55\x01\ -\xf5\xff\x50\0\0\0\x71\x41\x05\0\0\0\0\0\x55\x01\xf3\xff\x6f\0\0\0\x71\x41\x06\ -\0\0\0\0\0\x55\x01\xf1\xff\x43\0\0\0\x71\x41\x07\0\0\0\0\0\x55\x01\xef\xff\x5f\ -\0\0\0\x71\x41\x08\0\0\0\0\0\x55\x01\xed\xff\x30\0\0\0\x18\x01\0\0\x70\0\0\0\0\ -\0\0\0\0\0\0\0\xb7\x02\0\0\x1f\0\0\0\x79\xa3\xb0\xff\0\0\0\0\x85\0\0\0\x06\0\0\ -\0\x69\x71\x0a\0\0\0\0\0\x67\x01\0\0\x10\0\0\0\x69\x72\x08\0\0\0\0\0\x4f\x21\0\ -\0\0\0\0\0\x69\x72\x0c\0\0\0\0\0\x6b\x2a\xfc\xff\0\0\0\0\x63\x1a\xf8\xff\0\0\0\ -\0\x69\x71\x02\0\0\0\0\0\x67\x01\0\0\x10\0\0\0\x69\x72\0\0\0\0\0\0\x4f\x21\0\0\ -\0\0\0\0\x69\x72\x04\0\0\0\0\0\x69\x73\x06\0\0\0\0\0\x67\x03\0\0\x10\0\0\0\x4f\ -\x23\0\0\0\0\0\0\x67\x03\0\0\x20\0\0\0\x4f\x13\0\0\0\0\0\0\x7b\x3a\xf0\xff\0\0\ -\0\0\x61\x91\x0c\0\0\0\0\0\x67\x01\0\0\x20\0\0\0\x61\x92\x08\0\0\0\0\0\x4f\x21\ -\0\0\0\0\0\0\x61\x92\x10\0\0\0\0\0\x63\x2a\xe8\xff\0\0\0\0\x7b\x1a\xe0\xff\0\0\ -\0\0\x61\x91\0\0\0\0\0\0\x61\x92\x04\0\0\0\0\0\x67\x02\0\0\x20\0\0\0\x4f\x12\0\ -\0\0\0\0\0\x7b\x2a\xd8\xff\0\0\0\0\x61\x81\x04\0\0\0\0\0\x67\x01\0\0\x20\0\0\0\ -\x61\x82\0\0\0\0\0\0\x4f\x21\0\0\0\0\0\0\x61\x82\x10\0\0\0\0\0\x63\x2a\xd0\xff\ -\0\0\0\0\x7b\x1a\xc0\xff\0\0\0\0\x61\x81\x08\0\0\0\0\0\x61\x82\x0c\0\0\0\0\0\ -\x67\x02\0\0\x20\0\0\0\x4f\x12\0\0\0\0\0\0\x7b\x2a\xc8\xff\0\0\0\0\xbf\x61\0\0\ -\0\0\0\0\xb7\x02\0\0\x1e\0\0\0\x85\0\0\0\x41\0\0\0\x15\0\x0a\0\0\0\0\0\x18\x01\ -\0\0\x90\x02\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x34\0\0\0\xb7\x03\0\0\x1e\0\0\0\ -\x85\0\0\0\x06\0\0\0\x18\x01\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\x7b\x1a\xa8\ -\xff\0\0\0\0\xb7\x08\0\0\0\0\0\0\x05\0\x1a\0\0\0\0\0\x61\x62\0\0\0\0\0\0\xbf\ -\x29\0\0\0\0\0\0\x07\x09\0\0\x22\0\0\0\x61\x61\x04\0\0\0\0\0\x7b\x2a\xa0\xff\0\ -\0\0\0\x07\x02\0\0\x0e\0\0\0\x7b\x2a\x98\xff\0\0\0\0\x3d\x21\x03\0\0\0\0\0\x18\ -\x01\0\0\xc4\x02\0\0\0\0\0\0\0\0\0\0\x05\0\x09\0\0\0\0\0\x3d\x91\x03\0\0\0\0\0\ -\x18\x01\0\0\xea\x02\0\0\0\0\0\0\0\0\0\0\x05\0\x05\0\0\0\0\0\x79\xa2\xa0\xff\0\ -\0\0\0\x07\x02\0\0\x36\0\0\0\x3d\x21\x56\0\0\0\0\0\x18\x01\0\0\x10\x03\0\0\0\0\ -\0\0\0\0\0\0\xb7\x02\0\0\x26\0\0\0\x85\0\0\0\x06\0\0\0\x18\x01\0\0\xff\xff\xff\ -\xff\0\0\0\0\0\0\0\0\x7b\x1a\xa8\xff\0\0\0\0\xb7\x08\0\0\0\0\0\0\x18\x01\0\0\ -\x8f\0\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x47\0\0\0\x79\xa3\xa8\xff\0\0\0\0\xb7\ -\x04\0\0\x1e\0\0\0\x85\0\0\0\x06\0\0\0\x15\x08\x09\0\0\0\0\0\x61\x61\0\0\0\0\0\ -\0\x7b\x1a\xb8\xff\0\0\0\0\x61\x68\x04\0\0\0\0\0\x79\xa1\xa0\xff\0\0\0\0\x07\ -\x01\0\0\x0e\0\0\0\x3d\x18\x20\0\0\0\0\0\x18\x01\0\0\xd6\0\0\0\0\0\0\0\0\0\0\0\ -\x05\0\x1e\x01\0\0\0\0\x18\x01\0\0\xe8\x01\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x26\ -\0\0\0\x85\0\0\0\x06\0\0\0\x79\xa9\xb8\xff\0\0\0\0\x7b\x7a\xb8\xff\0\0\0\0\x79\ -\xa8\xb0\xff\0\0\0\0\x79\xa3\xb0\xff\0\0\0\0\x1f\x73\0\0\0\0\0\0\xbf\x84\0\0\0\ -\0\0\0\x79\xa1\xb8\xff\0\0\0\0\x1f\x14\0\0\0\0\0\0\x18\x01\0\0\x0e\x02\0\0\0\0\ -\0\0\0\0\0\0\xb7\x02\0\0\x29\0\0\0\x85\0\0\0\x06\0\0\0\x18\x01\0\0\x37\x02\0\0\ -\0\0\0\0\0\0\0\0\xb7\x02\0\0\x1f\0\0\0\xbf\x83\0\0\0\0\0\0\xbf\x94\0\0\0\0\0\0\ -\x85\0\0\0\x06\0\0\0\x61\x63\x04\0\0\0\0\0\x18\x01\0\0\x56\x02\0\0\0\0\0\0\0\0\ -\0\0\xb7\x02\0\0\x2a\0\0\0\xbf\x94\0\0\0\0\0\0\x85\0\0\0\x06\0\0\0\x05\0\x3b\ -\xff\0\0\0\0\x79\xa1\x98\xff\0\0\0\0\x07\x01\0\0\x14\0\0\0\x3d\x18\x03\0\0\0\0\ -\0\x18\x01\0\0\xfc\0\0\0\0\0\0\0\0\0\0\0\x05\0\xfb\0\0\0\0\0\xbf\x91\0\0\0\0\0\ -\0\x07\x01\0\0\x14\0\0\0\x3d\x18\x03\0\0\0\0\0\x18\x01\0\0\x22\x01\0\0\0\0\0\0\ -\0\0\0\0\x05\0\xf5\0\0\0\0\0\x79\xa2\x98\xff\0\0\0\0\x69\x23\x02\0\0\0\0\0\xdc\ -\x03\0\0\x10\0\0\0\x69\x91\x0c\0\0\0\0\0\x77\x01\0\0\x02\0\0\0\x57\x01\0\0\x3c\ -\0\0\0\x1f\x13\0\0\0\0\0\0\x71\x22\0\0\0\0\0\0\x67\x02\0\0\x02\0\0\0\x57\x02\0\ -\0\x3c\0\0\0\x1f\x23\0\0\0\0\0\0\x7b\x3a\xa0\xff\0\0\0\0\xbf\x32\0\0\0\0\0\0\ -\x67\x02\0\0\x20\0\0\0\x77\x02\0\0\x20\0\0\0\xb7\x03\0\0\x39\x5b\x01\0\x2d\x23\ -\x66\0\0\0\0\0\x18\x01\0\0\x48\x01\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x1f\0\0\0\ -\x05\0\x19\xff\0\0\0\0\x69\xa1\xfc\xff\0\0\0\0\x79\xa3\xa0\xff\0\0\0\0\x6b\x13\ -\x0c\0\0\0\0\0\x61\xa1\xf8\xff\0\0\0\0\x6b\x13\x08\0\0\0\0\0\x77\x01\0\0\x10\0\ -\0\0\x6b\x13\x0a\0\0\0\0\0\x79\xa1\xf0\xff\0\0\0\0\xbf\x12\0\0\0\0\0\0\x77\x02\ -\0\0\x30\0\0\0\x6b\x23\x06\0\0\0\0\0\xbf\x12\0\0\0\0\0\0\x77\x02\0\0\x20\0\0\0\ -\x6b\x23\x04\0\0\0\0\0\x6b\x13\0\0\0\0\0\0\x77\x01\0\0\x10\0\0\0\x6b\x13\x02\0\ -\0\0\0\0\x61\xa1\xe8\xff\0\0\0\0\x79\xa8\x98\xff\0\0\0\0\x63\x18\x10\0\0\0\0\0\ -\x79\xa1\xe0\xff\0\0\0\0\x63\x18\x08\0\0\0\0\0\x77\x01\0\0\x20\0\0\0\x63\x18\ -\x0c\0\0\0\0\0\x79\xa1\xd8\xff\0\0\0\0\x63\x18\0\0\0\0\0\0\x77\x01\0\0\x20\0\0\ -\0\x63\x18\x04\0\0\0\0\0\x61\xa1\xd0\xff\0\0\0\0\x63\x19\x10\0\0\0\0\0\x79\xa1\ -\xc8\xff\0\0\0\0\x63\x19\x08\0\0\0\0\0\x77\x01\0\0\x20\0\0\0\x63\x19\x0c\0\0\0\ -\0\0\x79\xa1\xc0\xff\0\0\0\0\x63\x19\0\0\0\0\0\0\x77\x01\0\0\x20\0\0\0\x63\x19\ -\x04\0\0\0\0\0\x69\x84\x0a\0\0\0\0\0\x69\x83\x02\0\0\0\0\0\x18\x01\0\0\x36\x03\ -\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x19\0\0\0\x85\0\0\0\x06\0\0\0\x69\x81\x02\0\0\ -\0\0\0\xdc\x01\0\0\x10\0\0\0\x07\x01\0\0\x1e\0\0\0\xdc\x01\0\0\x10\0\0\0\x6b\ -\x18\x02\0\0\0\0\0\xb7\x02\0\0\0\0\0\0\xb7\x01\0\0\0\0\0\0\x7b\x1a\xa8\xff\0\0\ -\0\0\x6b\x28\x0a\0\0\0\0\0\x18\x01\0\0\x67\x03\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\ -\x2a\0\0\0\xb7\x03\0\0\0\0\0\0\xbf\x84\0\0\0\0\0\0\xb7\x05\0\0\x14\0\0\0\x85\0\ -\0\0\x06\0\0\0\xb7\x01\0\0\0\0\0\0\xb7\x02\0\0\0\0\0\0\xbf\x83\0\0\0\0\0\0\xb7\ -\x04\0\0\x14\0\0\0\xb7\x05\0\0\0\0\0\0\x85\0\0\0\x1c\0\0\0\xbf\x01\0\0\0\0\0\0\ -\x77\x01\0\0\x10\0\0\0\x57\x01\0\0\xff\xff\0\0\x15\x01\x02\0\0\0\0\0\x57\0\0\0\ -\xff\xff\0\0\x0f\x10\0\0\0\0\0\0\xbf\x01\0\0\0\0\0\0\x77\x01\0\0\x10\0\0\0\x57\ -\x01\0\0\xff\xff\0\0\x15\x01\x02\0\0\0\0\0\x57\0\0\0\xff\xff\0\0\x0f\x10\0\0\0\ -\0\0\0\xbf\x01\0\0\0\0\0\0\x77\x01\0\0\x10\0\0\0\x57\x01\0\0\xff\xff\0\0\x15\ -\x01\x02\0\0\0\0\0\x57\0\0\0\xff\xff\0\0\x0f\x10\0\0\0\0\0\0\xbf\x01\0\0\0\0\0\ -\0\x77\x01\0\0\x10\0\0\0\x0f\x01\0\0\0\0\0\0\xa7\x01\0\0\xff\xff\xff\xff\x79\ -\xa2\x98\xff\0\0\0\0\x6b\x12\x0a\0\0\0\0\0\x69\x23\x02\0\0\0\0\0\x69\x24\x0a\0\ -\0\0\0\0\x18\x01\0\0\x4f\x03\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x18\0\0\0\x85\0\0\ -\0\x06\0\0\0\xb7\x08\0\0\x01\0\0\0\x05\0\x50\xff\0\0\0\0\x0f\x19\0\0\0\0\0\0\ -\xbf\x91\0\0\0\0\0\0\x07\x01\0\0\x27\0\0\0\x3d\x18\x03\0\0\0\0\0\x18\x01\0\0\ -\x67\x01\0\0\0\0\0\0\0\0\0\0\x05\0\x77\0\0\0\0\0\x79\xa1\xa0\xff\0\0\0\0\x67\ -\x01\0\0\x20\0\0\0\x77\x01\0\0\x20\0\0\0\xbf\x92\0\0\0\0\0\0\x0f\x12\0\0\0\0\0\ -\0\x2d\x82\x6f\0\0\0\0\0\xb7\x01\0\0\0\0\0\0\x73\x19\x26\0\0\0\0\0\x73\x19\x25\ -\0\0\0\0\0\x73\x19\x24\0\0\0\0\0\x73\x19\x23\0\0\0\0\0\x73\x19\x22\0\0\0\0\0\ -\x73\x19\x21\0\0\0\0\0\x73\x19\x20\0\0\0\0\0\x73\x19\x1f\0\0\0\0\0\x73\x19\x1e\ -\0\0\0\0\0\x73\x19\x1d\0\0\0\0\0\x73\x19\x1c\0\0\0\0\0\x73\x19\x1b\0\0\0\0\0\ -\x73\x19\x1a\0\0\0\0\0\x73\x19\x19\0\0\0\0\0\x73\x19\x18\0\0\0\0\0\x73\x19\x17\ -\0\0\0\0\0\x73\x19\x16\0\0\0\0\0\x73\x19\x15\0\0\0\0\0\x73\x19\x14\0\0\0\0\0\ -\x73\x19\x13\0\0\0\0\0\x73\x19\x12\0\0\0\0\0\x73\x19\x11\0\0\0\0\0\x73\x19\x10\ -\0\0\0\0\0\x73\x19\x0f\0\0\0\0\0\x73\x19\x0e\0\0\0\0\0\x73\x19\x0d\0\0\0\0\0\ -\x73\x19\x0c\0\0\0\0\0\x73\x19\x0b\0\0\0\0\0\x73\x19\x0a\0\0\0\0\0\x73\x19\x09\ -\0\0\0\0\0\x73\x19\x08\0\0\0\0\0\x73\x19\x07\0\0\0\0\0\x73\x19\x06\0\0\0\0\0\ -\x73\x19\x05\0\0\0\0\0\x73\x19\x04\0\0\0\0\0\x73\x19\x03\0\0\0\0\0\x73\x19\x02\ -\0\0\0\0\0\x73\x19\x01\0\0\0\0\0\x73\x19\0\0\0\0\0\0\xb7\x01\0\0\x27\0\0\0\x79\ -\xa2\xa0\xff\0\0\0\0\x6d\x21\x48\0\0\0\0\0\xbf\x91\0\0\0\0\0\0\x07\x01\0\0\x27\ -\0\0\0\x2d\x81\x45\0\0\0\0\0\x79\xa2\xa0\xff\0\0\0\0\x07\x02\0\0\xd9\xff\xff\ -\xff\x67\x02\0\0\x20\0\0\0\x77\x02\0\0\x20\0\0\0\x0f\x21\0\0\0\0\0\0\x2d\x81\ -\x42\0\0\0\0\0\xb7\x01\0\0\x29\0\0\0\x73\x19\x26\0\0\0\0\0\xb7\x01\0\0\x3b\0\0\ -\0\x73\x19\x25\0\0\0\0\0\xb7\x01\0\0\x64\0\0\0\x73\x19\x21\0\0\0\0\0\x73\x19\ -\x20\0\0\0\0\0\xb7\x01\0\0\x6e\0\0\0\x73\x19\x23\0\0\0\0\0\x73\x19\x1c\0\0\0\0\ -\0\xb7\x01\0\0\x62\0\0\0\x73\x19\x19\0\0\0\0\0\xb7\x01\0\0\x67\0\0\0\x73\x19\ -\x12\0\0\0\0\0\xb7\x01\0\0\x61\0\0\0\x73\x19\x16\0\0\0\0\0\x73\x19\x11\0\0\0\0\ -\0\xb7\x01\0\0\x6d\0\0\0\x73\x19\x0d\0\0\0\0\0\xb7\x01\0\0\x73\0\0\0\x73\x19\ -\x17\0\0\0\0\0\x73\x19\x10\0\0\0\0\0\x73\x19\x0f\0\0\0\0\0\x73\x19\x0b\0\0\0\0\ -\0\xb7\x01\0\0\x75\0\0\0\x73\x19\x0a\0\0\0\0\0\xb7\x01\0\0\x6f\0\0\0\x73\x19\ -\x09\0\0\0\0\0\xb7\x01\0\0\x69\0\0\0\x73\x19\x1f\0\0\0\0\0\x73\x19\x08\0\0\0\0\ -\0\xb7\x01\0\0\x76\0\0\0\x73\x19\x07\0\0\0\0\0\xb7\x01\0\0\x72\0\0\0\x73\x19\ -\x05\0\0\0\0\0\xb7\x01\0\0\x70\0\0\0\x73\x19\x04\0\0\0\0\0\xb7\x01\0\0\x20\0\0\ -\0\x73\x19\x24\0\0\0\0\0\x73\x19\x1d\0\0\0\0\0\x73\x19\x18\0\0\0\0\0\x73\x19\ -\x14\0\0\0\0\0\x73\x19\x0c\0\0\0\0\0\x73\x19\x03\0\0\0\0\0\xb7\x01\0\0\x65\0\0\ -\0\x73\x19\x22\0\0\0\0\0\x73\x19\x1b\0\0\0\0\0\x73\x19\x1a\0\0\0\0\0\x73\x19\ -\x13\0\0\0\0\0\x73\x19\x0e\0\0\0\0\0\x73\x19\x06\0\0\0\0\0\x73\x19\x02\0\0\0\0\ -\0\xb7\x01\0\0\x68\0\0\0\x73\x19\x1e\0\0\0\0\0\x73\x19\x15\0\0\0\0\0\x73\x19\ -\x01\0\0\0\0\0\xb7\x01\0\0\x54\0\0\0\x73\x19\0\0\0\0\0\0\x05\0\x0b\0\0\0\0\0\ -\x18\x01\0\0\x8d\x01\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x26\0\0\0\x05\0\x37\xfe\0\ -\0\0\0\x18\x01\0\0\x91\x03\0\0\0\0\0\0\0\0\0\0\x05\0\x02\0\0\0\0\0\x18\x01\0\0\ -\xbe\x03\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x2d\0\0\0\x85\0\0\0\x06\0\0\0\x18\x01\ -\0\0\xb3\x01\0\0\0\0\0\0\0\0\0\0\xb7\x02\0\0\x35\0\0\0\x79\xa3\xa8\xff\0\0\0\0\ -\xbf\x94\0\0\0\0\0\0\x79\xa5\xa0\xff\0\0\0\0\x85\0\0\0\x06\0\0\0\x05\0\xd8\xfe\ -\0\0\0\0\x44\x75\x61\x6c\x20\x42\x53\x44\x2f\x47\x50\x4c\0\x42\x6f\x75\x6e\x64\ -\x20\x63\x68\x65\x63\x6b\x20\x66\x61\x69\x6c\x20\x41\0\x42\0\x43\0\x44\0\x45\ -\x20\x25\x69\x0a\0\x46\x2c\x20\x50\x53\x3a\x25\x69\x2c\x20\x50\x3a\x25\x69\x2c\ -\x20\x44\x45\x3a\x25\x69\x0a\0\x47\0\x52\x65\x63\x65\x69\x76\x65\x64\x20\x76\ -\x61\x6c\x69\x64\x20\x54\x43\x50\x20\x70\x61\x63\x6b\x65\x74\x20\x77\x69\x74\ -\x68\x20\x70\x61\x79\x6c\x6f\x61\x64\x20\x25\x73\x20\x6f\x66\x20\x73\x69\x7a\ -\x65\x20\x25\x69\x0a\0\x48\0\x4f\x4c\x44\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\ -\x3a\x20\x25\x69\x2c\x20\x70\x61\x79\x6c\x6f\x61\x64\x3a\x20\x25\x69\x0a\0\x43\ -\x6f\x6e\x74\x72\x6f\x6c\x20\x62\x61\x63\x6b\x20\x74\x6f\x20\x6d\x61\x69\x6e\ -\x20\x70\x72\x6f\x67\x72\x61\x6d\x20\x77\x69\x74\x68\x20\x72\x65\x74\x63\x6f\ -\x64\x65\x20\x25\x69\x20\x61\x66\x74\x65\x72\x20\x65\x78\x70\x61\x6e\x64\x69\ -\x6e\x67\x20\x25\x69\x20\x62\x79\x74\x65\x73\x0a\0\x42\x6f\x75\x6e\x64\x20\x63\ -\x68\x65\x63\x6b\x20\x41\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\x65\ -\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x0a\0\x42\x6f\x75\x6e\x64\x20\x63\x68\ -\x65\x63\x6b\x20\x42\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\x65\x20\ -\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x0a\0\x42\x6f\x75\x6e\x64\x20\x63\x68\x65\ -\x63\x6b\x20\x44\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\x65\x20\x65\ -\x78\x70\x61\x6e\x64\x69\x6e\x67\x0a\0\x55\x6e\x6c\x69\x6b\x65\x6c\x79\x20\x79\ -\x6f\x75\x20\x61\x72\x65\x20\x68\x65\x72\x65\x2c\x20\x62\x75\x74\x20\x4f\x4b\ -\x0a\0\x42\x6f\x75\x6e\x64\x20\x63\x68\x65\x63\x6b\x20\x45\x20\x66\x61\x69\x6c\ -\x65\x64\x20\x77\x68\x69\x6c\x65\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x0a\0\ -\x42\x6f\x75\x6e\x64\x20\x63\x68\x65\x63\x6b\x20\x46\x20\x66\x61\x69\x6c\x65\ -\x64\x20\x77\x68\x69\x6c\x65\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x0a\0\x42\ -\x50\x46\x20\x66\x69\x6e\x69\x73\x68\x65\x64\x20\x77\x69\x74\x68\x20\x72\x65\ -\x74\x20\x25\x69\x20\x61\x6e\x64\x20\x70\x61\x79\x6c\x6f\x61\x64\x20\x25\x73\ -\x20\x6f\x66\x20\x73\x69\x7a\x65\x20\x25\x69\x0a\x20\0\x42\x50\x46\x20\x66\x69\ -\x6e\x69\x73\x68\x65\x64\x20\x77\x69\x74\x68\x20\x65\x72\x72\x6f\x72\x20\x6f\ -\x6e\x20\x65\x78\x70\x61\x6e\x73\x69\x6f\x6e\x0a\0\x50\x72\x65\x76\x69\x6f\x75\ -\x73\x20\x6c\x65\x6e\x67\x74\x68\x3a\x20\x25\x69\x2c\x20\x63\x75\x72\x72\x65\ -\x6e\x74\x20\x6c\x65\x6e\x67\x74\x68\x3a\x20\x25\x69\x0a\0\x4e\x45\x57\x20\x64\ -\x61\x74\x61\x5f\x65\x6e\x64\x3a\x20\x25\x69\x2c\x20\x70\x61\x79\x6c\x6f\x61\ -\x64\x3a\x20\x25\x69\x0a\0\x41\x6e\x64\x20\x6f\x6e\x20\x4e\x45\x57\x20\x43\x54\ -\x58\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x3a\x20\x25\x69\x2c\x20\x70\x61\x79\ -\x6c\x6f\x61\x64\x3a\x20\x25\x69\x0a\0\x50\x49\x44\x3a\x20\x25\x75\x2c\x20\x46\ -\x53\x3a\x25\x75\x0a\0\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x65\x78\x70\x61\ -\x6e\x64\x20\x61\x20\x74\x63\x70\x20\x70\x61\x63\x6b\x65\x74\x20\x72\x65\x73\ -\x65\x72\x76\x65\x64\x20\x62\x79\x74\x65\x73\x20\x62\x79\x20\x25\x69\x0a\0\x42\ -\x6f\x75\x6e\x64\x20\x63\x68\x65\x63\x6b\x20\x41\x20\x66\x61\x69\x6c\x65\x64\ -\x20\x77\x68\x69\x6c\x65\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x0a\0\x42\x6f\ -\x75\x6e\x64\x20\x63\x68\x65\x63\x6b\x20\x42\x20\x66\x61\x69\x6c\x65\x64\x20\ -\x77\x68\x69\x6c\x65\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x0a\0\x42\x6f\x75\ -\x6e\x64\x20\x63\x68\x65\x63\x6b\x20\x43\x20\x66\x61\x69\x6c\x65\x64\x20\x77\ -\x68\x69\x6c\x65\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x0a\0\x62\x65\x66\x6f\ -\x72\x65\x3a\x20\x25\x69\x2c\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x20\x25\x75\ -\x0a\0\x61\x66\x74\x65\x72\x3a\x20\x25\x69\x2c\x20\x63\x68\x65\x63\x6b\x73\x75\ -\x6d\x20\x25\x75\x0a\0\x63\x73\x75\x6d\x3a\x20\x25\x75\x20\x66\x6f\x72\x20\x64\ -\x61\x74\x61\x5f\x73\x74\x61\x72\x74\x20\x25\x75\x2c\x20\x64\x61\x74\x61\x5f\ -\x73\x69\x7a\x65\x20\x25\x69\x0a\0\x49\x6e\x76\x61\x6c\x69\x64\x20\x61\x74\x74\ -\x65\x6d\x70\x74\x20\x74\x6f\x20\x73\x75\x62\x73\x74\x69\x74\x75\x74\x65\x20\ -\x74\x68\x65\x20\x70\x61\x79\x6c\x6f\x61\x64\x20\x41\x0a\0\x49\x6e\x76\x61\x6c\ -\x69\x64\x20\x61\x74\x74\x65\x6d\x70\x74\x20\x74\x6f\x20\x73\x75\x62\x73\x74\ -\x69\x74\x75\x74\x65\x20\x74\x68\x65\x20\x70\x61\x79\x6c\x6f\x61\x64\x20\x43\ -\x0a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ -\0\0\0\0\0\0\0\0\0\0\0\0\x9f\xeb\x01\0\x18\0\0\0\0\0\0\0\xbc\x0b\0\0\xbc\x0b\0\ -\0\xd7\x1c\0\0\0\0\0\0\0\0\0\x02\x03\0\0\0\x01\0\0\0\0\0\0\x01\x04\0\0\0\x20\0\ -\0\x01\0\0\0\0\0\0\0\x03\0\0\0\0\x02\0\0\0\x04\0\0\0\x1b\0\0\0\x05\0\0\0\0\0\0\ -\x01\x04\0\0\0\x20\0\0\0\0\0\0\0\0\0\0\x02\x06\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\ -\x02\0\0\0\x04\0\0\0\0\0\x04\0\x19\0\0\0\x02\0\0\x04\x10\0\0\0\x25\0\0\0\x01\0\ -\0\0\0\0\0\0\x2a\0\0\0\x05\0\0\0\x40\0\0\0\x36\0\0\0\0\0\0\x0e\x07\0\0\0\x01\0\ -\0\0\0\0\0\0\0\0\0\x02\x0a\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x02\0\0\0\x04\0\0\0\ -\x01\0\0\0\0\0\0\0\0\0\0\x02\x0c\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x02\0\0\0\x04\ -\0\0\0\0\x40\0\0\0\0\0\0\0\0\0\x02\x0e\0\0\0\x3e\0\0\0\0\0\0\x08\x0f\0\0\0\x44\ -\0\0\0\0\0\0\x01\x08\0\0\0\x40\0\0\0\0\0\0\0\0\0\0\x02\x11\0\0\0\x5b\0\0\0\x03\ -\0\0\x04\x10\0\0\0\x68\0\0\0\x12\0\0\0\0\0\0\0\x6c\0\0\0\x02\0\0\0\x40\0\0\0\ -\x6f\0\0\0\x14\0\0\0\x60\0\0\0\0\0\0\0\0\0\0\x02\x13\0\0\0\x73\0\0\0\0\0\0\x01\ -\x01\0\0\0\x08\0\0\x01\x78\0\0\0\0\0\0\x08\x15\0\0\0\x7e\0\0\0\0\0\0\x01\x04\0\ -\0\0\x20\0\0\0\x8b\0\0\0\x04\0\0\x04\x20\0\0\0\x25\0\0\0\x09\0\0\0\0\0\0\0\x2a\ -\0\0\0\x0b\0\0\0\x40\0\0\0\x93\0\0\0\x0d\0\0\0\x80\0\0\0\x97\0\0\0\x10\0\0\0\ -\xc0\0\0\0\x8b\0\0\0\0\0\0\x0e\x16\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\x02\x19\0\0\0\ -\x9d\0\0\0\x05\0\0\x04\x14\0\0\0\xc0\0\0\0\x1a\0\0\0\0\0\0\0\xc4\0\0\0\x1d\0\0\ -\0\x40\0\0\0\x6f\0\0\0\x1e\0\0\0\x60\0\0\0\xd8\0\0\0\x1e\0\0\0\x80\0\0\0\xe0\0\ -\0\0\x20\0\0\0\xa0\0\0\0\xe7\0\0\0\x04\0\0\x04\x08\0\0\0\x25\0\0\0\x1b\0\0\0\0\ -\0\0\0\xf3\0\0\0\x1c\0\0\0\x10\0\0\0\xf9\0\0\0\x1c\0\0\0\x18\0\0\0\x6f\0\0\0\ -\x02\0\0\0\x20\0\0\0\x07\x01\0\0\0\0\0\x01\x02\0\0\0\x10\0\0\0\x16\x01\0\0\0\0\ -\0\x01\x01\0\0\0\x08\0\0\0\x24\x01\0\0\0\0\0\x08\x14\0\0\0\x28\x01\0\0\0\0\0\ -\x08\x1f\0\0\0\x2e\x01\0\0\0\0\0\x08\x02\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x13\0\ -\0\0\x04\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\x0d\x02\0\0\0\x3d\x01\0\0\x18\0\0\0\x41\ -\x01\0\0\x01\0\0\x0c\x21\0\0\0\0\0\0\0\0\0\0\x02\x24\0\0\0\xe0\x01\0\0\x15\0\0\ -\x04\xa8\0\0\0\xe8\x01\0\0\x25\0\0\0\0\0\0\0\xec\x01\0\0\x25\0\0\0\x40\0\0\0\ -\xf0\x01\0\0\x25\0\0\0\x80\0\0\0\xf4\x01\0\0\x25\0\0\0\xc0\0\0\0\xf8\x01\0\0\ -\x25\0\0\0\0\x01\0\0\xfb\x01\0\0\x25\0\0\0\x40\x01\0\0\xfe\x01\0\0\x25\0\0\0\ -\x80\x01\0\0\x02\x02\0\0\x25\0\0\0\xc0\x01\0\0\x06\x02\0\0\x25\0\0\0\0\x02\0\0\ -\x09\x02\0\0\x25\0\0\0\x40\x02\0\0\x0c\x02\0\0\x25\0\0\0\x80\x02\0\0\x0f\x02\0\ -\0\x25\0\0\0\xc0\x02\0\0\x12\x02\0\0\x25\0\0\0\0\x03\0\0\x15\x02\0\0\x25\0\0\0\ -\x40\x03\0\0\x18\x02\0\0\x25\0\0\0\x80\x03\0\0\x1b\x02\0\0\x25\0\0\0\xc0\x03\0\ -\0\x23\x02\0\0\x25\0\0\0\0\x04\0\0\x26\x02\0\0\x25\0\0\0\x40\x04\0\0\xf3\0\0\0\ -\x25\0\0\0\x80\x04\0\0\x29\x02\0\0\x25\0\0\0\xc0\x04\0\0\x2c\x02\0\0\x25\0\0\0\ -\0\x05\0\0\x2f\x02\0\0\0\0\0\x01\x08\0\0\0\x40\0\0\0\0\0\0\0\x01\0\0\x0d\x02\0\ -\0\0\x3d\x01\0\0\x23\0\0\0\x41\x02\0\0\x01\0\0\x0c\x26\0\0\0\0\0\0\0\0\0\0\x02\ -\x29\0\0\0\xec\x03\0\0\x06\0\0\x04\x18\0\0\0\xf3\x03\0\0\x14\0\0\0\0\0\0\0\xf8\ -\x03\0\0\x14\0\0\0\x20\0\0\0\x01\x04\0\0\x14\0\0\0\x40\0\0\0\x0b\x04\0\0\x14\0\ -\0\0\x60\0\0\0\x1b\x04\0\0\x14\0\0\0\x80\0\0\0\x2a\x04\0\0\x14\0\0\0\xa0\0\0\0\ -\0\0\0\0\x01\0\0\x0d\x02\0\0\0\x3d\x01\0\0\x28\0\0\0\x39\x04\0\0\x01\0\0\x0c\ -\x2a\0\0\0\x4e\x06\0\0\x0b\0\0\x84\x14\0\0\0\x54\x06\0\0\x2d\0\0\0\0\0\0\x04\ -\x58\x06\0\0\x2d\0\0\0\x04\0\0\x04\x60\x06\0\0\x2d\0\0\0\x08\0\0\0\x64\x06\0\0\ -\x2e\0\0\0\x10\0\0\0\x6c\x06\0\0\x2e\0\0\0\x20\0\0\0\x6f\x06\0\0\x2e\0\0\0\x30\ -\0\0\0\x78\x06\0\0\x2d\0\0\0\x40\0\0\0\x7c\x06\0\0\x2d\0\0\0\x48\0\0\0\x85\x06\ -\0\0\x30\0\0\0\x50\0\0\0\x8b\x06\0\0\x31\0\0\0\x60\0\0\0\x91\x06\0\0\x31\0\0\0\ -\x80\0\0\0\x97\x06\0\0\0\0\0\x08\x1c\0\0\0\x9c\x06\0\0\0\0\0\x08\x2f\0\0\0\xa3\ -\x06\0\0\0\0\0\x08\x1b\0\0\0\xa9\x06\0\0\0\0\0\x08\x2f\0\0\0\xb1\x06\0\0\0\0\0\ -\x08\x14\0\0\0\x96\x07\0\0\x11\0\0\x84\x14\0\0\0\x9d\x07\0\0\x2e\0\0\0\0\0\0\0\ -\xa4\x07\0\0\x2e\0\0\0\x10\0\0\0\xa9\x07\0\0\x31\0\0\0\x20\0\0\0\xad\x07\0\0\ -\x31\0\0\0\x40\0\0\0\xb5\x07\0\0\x2f\0\0\0\x60\0\0\x04\xba\x07\0\0\x2f\0\0\0\ -\x64\0\0\x04\xbf\x07\0\0\x2f\0\0\0\x68\0\0\x01\xc3\x07\0\0\x2f\0\0\0\x69\0\0\ -\x01\xc7\x07\0\0\x2f\0\0\0\x6a\0\0\x01\xcb\x07\0\0\x2f\0\0\0\x6b\0\0\x01\xcf\ -\x07\0\0\x2f\0\0\0\x6c\0\0\x01\xd3\x07\0\0\x2f\0\0\0\x6d\0\0\x01\xd7\x07\0\0\ -\x2f\0\0\0\x6e\0\0\x01\xdb\x07\0\0\x2f\0\0\0\x6f\0\0\x01\xdf\x07\0\0\x2e\0\0\0\ -\x70\0\0\0\x85\x06\0\0\x30\0\0\0\x80\0\0\0\xe6\x07\0\0\x2e\0\0\0\x90\0\0\0\0\0\ -\0\0\0\0\0\x03\0\0\0\0\x13\0\0\0\x04\0\0\0\x0d\0\0\0\x95\x19\0\0\0\0\0\x0e\x33\ -\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\x0a\x13\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x35\0\0\ -\0\x04\0\0\0\x13\0\0\0\x9d\x19\0\0\0\0\0\x0e\x36\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ -\x03\0\0\0\0\x35\0\0\0\x04\0\0\0\x02\0\0\0\xb1\x19\0\0\0\0\0\x0e\x38\0\0\0\0\0\ -\0\0\xc7\x19\0\0\0\0\0\x0e\x38\0\0\0\0\0\0\0\xdd\x19\0\0\0\0\0\x0e\x38\0\0\0\0\ -\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x35\0\0\0\x04\0\0\0\x06\0\0\0\xf3\x19\0\0\0\0\ -\0\x0e\x3c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x35\0\0\0\x04\0\0\0\x17\0\0\ -\0\x09\x1a\0\0\0\0\0\x0e\x3e\0\0\0\0\0\0\0\x1f\x1a\0\0\0\0\0\x0e\x38\0\0\0\0\0\ -\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x35\0\0\0\x04\0\0\0\x36\0\0\0\x35\x1a\0\0\0\0\0\ -\x0e\x41\0\0\0\0\0\0\0\x4b\x1a\0\0\0\0\0\x0e\x38\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ -\x03\0\0\0\0\x35\0\0\0\x04\0\0\0\x1f\0\0\0\x61\x1a\0\0\0\0\0\x0e\x44\0\0\0\0\0\ -\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x35\0\0\0\x04\0\0\0\x47\0\0\0\x77\x1a\0\0\0\0\0\ -\x0e\x46\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x35\0\0\0\x04\0\0\0\x26\0\0\0\ -\x8e\x1a\0\0\0\0\0\x0e\x48\0\0\0\0\0\0\0\xa5\x1a\0\0\0\0\0\x0e\x48\0\0\0\0\0\0\ -\0\xbc\x1a\0\0\0\0\0\x0e\x48\0\0\0\0\0\0\0\xd3\x1a\0\0\0\0\0\x0e\x44\0\0\0\0\0\ -\0\0\xea\x1a\0\0\0\0\0\x0e\x48\0\0\0\0\0\0\0\x01\x1b\0\0\0\0\0\x0e\x48\0\0\0\0\ -\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x35\0\0\0\x04\0\0\0\x35\0\0\0\x18\x1b\0\0\0\0\ -\0\x0e\x4f\0\0\0\0\0\0\0\x2f\x1b\0\0\0\0\0\x0e\x48\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ -\x03\0\0\0\0\x35\0\0\0\x04\0\0\0\x29\0\0\0\x46\x1b\0\0\0\0\0\x0e\x52\0\0\0\0\0\ -\0\0\x5d\x1b\0\0\0\0\0\x0e\x44\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x35\0\0\ -\0\x04\0\0\0\x2a\0\0\0\x74\x1b\0\0\0\0\0\x0e\x55\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ -\x03\0\0\0\0\x35\0\0\0\x04\0\0\0\x10\0\0\0\x8b\x1b\0\0\0\0\0\x0e\x57\0\0\0\0\0\ -\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x35\0\0\0\x04\0\0\0\x34\0\0\0\xa3\x1b\0\0\0\0\0\ -\x0e\x59\0\0\0\0\0\0\0\xc5\x1b\0\0\0\0\0\x0e\x48\0\0\0\0\0\0\0\xea\x1b\0\0\0\0\ -\0\x0e\x48\0\0\0\0\0\0\0\x0f\x1c\0\0\0\0\0\x0e\x48\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ -\x03\0\0\0\0\x35\0\0\0\x04\0\0\0\x19\0\0\0\x34\x1c\0\0\0\0\0\x0e\x5e\0\0\0\0\0\ -\0\0\0\0\0\0\0\0\0\x03\0\0\0\0\x35\0\0\0\x04\0\0\0\x18\0\0\0\x59\x1c\0\0\0\0\0\ -\x0e\x60\0\0\0\0\0\0\0\x7e\x1c\0\0\0\0\0\x0e\x55\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ -\x03\0\0\0\0\x35\0\0\0\x04\0\0\0\x2d\0\0\0\x90\x1c\0\0\0\0\0\x0e\x63\0\0\0\0\0\ -\0\0\xa7\x1c\0\0\0\0\0\x0e\x63\0\0\0\0\0\0\0\xc1\x1c\0\0\x02\0\0\x0f\0\0\0\0\ -\x08\0\0\0\0\0\0\0\x10\0\0\0\x17\0\0\0\0\0\0\0\x20\0\0\0\xc7\x1c\0\0\x20\0\0\ -\x0f\0\0\0\0\x37\0\0\0\0\0\0\0\x13\0\0\0\x39\0\0\0\x13\0\0\0\x02\0\0\0\x3a\0\0\ -\0\x15\0\0\0\x02\0\0\0\x3b\0\0\0\x17\0\0\0\x02\0\0\0\x3d\0\0\0\x19\0\0\0\x06\0\ -\0\0\x3f\0\0\0\x1f\0\0\0\x17\0\0\0\x40\0\0\0\x36\0\0\0\x02\0\0\0\x42\0\0\0\x38\ -\0\0\0\x36\0\0\0\x43\0\0\0\x6e\0\0\0\x02\0\0\0\x45\0\0\0\x70\0\0\0\x1f\0\0\0\ -\x47\0\0\0\x8f\0\0\0\x47\0\0\0\x49\0\0\0\xd6\0\0\0\x26\0\0\0\x4a\0\0\0\xfc\0\0\ -\0\x26\0\0\0\x4b\0\0\0\x22\x01\0\0\x26\0\0\0\x4c\0\0\0\x48\x01\0\0\x1f\0\0\0\ -\x4d\0\0\0\x67\x01\0\0\x26\0\0\0\x4e\0\0\0\x8d\x01\0\0\x26\0\0\0\x50\0\0\0\xb3\ -\x01\0\0\x35\0\0\0\x51\0\0\0\xe8\x01\0\0\x26\0\0\0\x53\0\0\0\x0e\x02\0\0\x29\0\ -\0\0\x54\0\0\0\x37\x02\0\0\x1f\0\0\0\x56\0\0\0\x56\x02\0\0\x2a\0\0\0\x58\0\0\0\ -\x80\x02\0\0\x10\0\0\0\x5a\0\0\0\x90\x02\0\0\x34\0\0\0\x5b\0\0\0\xc4\x02\0\0\ -\x26\0\0\0\x5c\0\0\0\xea\x02\0\0\x26\0\0\0\x5d\0\0\0\x10\x03\0\0\x26\0\0\0\x5f\ -\0\0\0\x36\x03\0\0\x19\0\0\0\x61\0\0\0\x4f\x03\0\0\x18\0\0\0\x62\0\0\0\x67\x03\ -\0\0\x2a\0\0\0\x64\0\0\0\x91\x03\0\0\x2d\0\0\0\x65\0\0\0\xbe\x03\0\0\x2d\0\0\0\ -\xcf\x1c\0\0\x01\0\0\x0f\0\0\0\0\x34\0\0\0\0\0\0\0\x0d\0\0\0\0\x69\x6e\x74\0\ -\x5f\x5f\x41\x52\x52\x41\x59\x5f\x53\x49\x5a\x45\x5f\x54\x59\x50\x45\x5f\x5f\0\ -\x72\x69\x6e\x67\x5f\x62\x75\x66\x66\x65\x72\0\x74\x79\x70\x65\0\x6d\x61\x78\ -\x5f\x65\x6e\x74\x72\x69\x65\x73\0\x72\x62\x5f\x63\x6f\x6d\x6d\0\x5f\x5f\x75\ -\x36\x34\0\x6c\x6f\x6e\x67\x20\x6c\x6f\x6e\x67\x20\x75\x6e\x73\x69\x67\x6e\x65\ -\x64\x20\x69\x6e\x74\0\x66\x73\x5f\x6f\x70\x65\x6e\x5f\x64\x61\x74\x61\0\x62\ -\x75\x66\0\x66\x64\0\x70\x69\x64\0\x63\x68\x61\x72\0\x5f\x5f\x75\x33\x32\0\x75\ -\x6e\x73\x69\x67\x6e\x65\x64\x20\x69\x6e\x74\0\x66\x73\x5f\x6f\x70\x65\x6e\0\ -\x6b\x65\x79\0\x76\x61\x6c\x75\x65\0\x74\x72\x61\x63\x65\x5f\x65\x76\x65\x6e\ -\x74\x5f\x72\x61\x77\x5f\x73\x63\x68\x65\x64\x5f\x70\x72\x6f\x63\x65\x73\x73\ -\x5f\x65\x78\x65\x63\0\x65\x6e\x74\0\x5f\x5f\x64\x61\x74\x61\x5f\x6c\x6f\x63\ -\x5f\x66\x69\x6c\x65\x6e\x61\x6d\x65\0\x6f\x6c\x64\x5f\x70\x69\x64\0\x5f\x5f\ -\x64\x61\x74\x61\0\x74\x72\x61\x63\x65\x5f\x65\x6e\x74\x72\x79\0\x66\x6c\x61\ -\x67\x73\0\x70\x72\x65\x65\x6d\x70\x74\x5f\x63\x6f\x75\x6e\x74\0\x75\x6e\x73\ -\x69\x67\x6e\x65\x64\x20\x73\x68\x6f\x72\x74\0\x75\x6e\x73\x69\x67\x6e\x65\x64\ -\x20\x63\x68\x61\x72\0\x75\x33\x32\0\x70\x69\x64\x5f\x74\0\x5f\x5f\x6b\x65\x72\ -\x6e\x65\x6c\x5f\x70\x69\x64\x5f\x74\0\x63\x74\x78\0\x68\x61\x6e\x64\x6c\x65\ -\x5f\x73\x63\x68\x65\x64\x5f\x70\x72\x6f\x63\x65\x73\x73\x5f\x65\x78\x65\x63\0\ -\x74\x70\x2f\x73\x63\x68\x65\x64\x2f\x73\x63\x68\x65\x64\x5f\x70\x72\x6f\x63\ -\x65\x73\x73\x5f\x65\x78\x65\x63\0\x2f\x68\x6f\x6d\x65\x2f\x6f\x73\x62\x6f\x78\ -\x65\x73\x2f\x54\x46\x47\x2f\x73\x72\x63\x2f\x65\x62\x70\x66\x2f\x69\x6e\x63\ -\x6c\x75\x64\x65\x2f\x62\x70\x66\x2f\x73\x63\x68\x65\x64\x2e\x68\0\x09\x70\x69\ -\x64\x5f\x74\x20\x70\x69\x64\x20\x3d\x20\x62\x70\x66\x5f\x67\x65\x74\x5f\x63\ -\x75\x72\x72\x65\x6e\x74\x5f\x70\x69\x64\x5f\x74\x67\x69\x64\x28\x29\x20\x3e\ -\x3e\x20\x33\x32\x3b\0\x09\x72\x65\x74\x75\x72\x6e\x20\x30\x3b\0\x70\x74\x5f\ -\x72\x65\x67\x73\0\x72\x31\x35\0\x72\x31\x34\0\x72\x31\x33\0\x72\x31\x32\0\x62\ -\x70\0\x62\x78\0\x72\x31\x31\0\x72\x31\x30\0\x72\x39\0\x72\x38\0\x61\x78\0\x63\ -\x78\0\x64\x78\0\x73\x69\0\x64\x69\0\x6f\x72\x69\x67\x5f\x61\x78\0\x69\x70\0\ -\x63\x73\0\x73\x70\0\x73\x73\0\x6c\x6f\x6e\x67\x20\x75\x6e\x73\x69\x67\x6e\x65\ -\x64\x20\x69\x6e\x74\0\x6b\x70\x72\x6f\x62\x65\x5f\x5f\x36\x34\x5f\x73\x79\x73\ -\x5f\x72\x65\x61\x64\0\x6b\x70\x72\x6f\x62\x65\x2f\x6b\x73\x79\x73\x5f\x72\x65\ -\x61\x64\0\x2f\x68\x6f\x6d\x65\x2f\x6f\x73\x62\x6f\x78\x65\x73\x2f\x54\x46\x47\ -\x2f\x73\x72\x63\x2f\x65\x62\x70\x66\x2f\x69\x6e\x63\x6c\x75\x64\x65\x2f\x62\ -\x70\x66\x2f\x66\x73\x2e\x68\0\x20\x20\x20\x20\x69\x66\x20\x28\x21\x72\x63\x74\ -\x78\x29\x20\x72\x65\x74\x75\x72\x6e\x20\x30\x3b\x20\0\x30\x3a\x31\x34\0\x20\ -\x20\x20\x20\x69\x6e\x74\x20\x66\x64\x20\x3d\x20\x28\x69\x6e\x74\x29\x20\x50\ -\x54\x5f\x52\x45\x47\x53\x5f\x50\x41\x52\x4d\x31\x28\x63\x74\x78\x29\x3b\x20\0\ -\x30\x3a\x31\x33\0\x20\x20\x20\x20\x63\x68\x61\x72\x20\x2a\x62\x75\x66\x20\x3d\ -\x20\x28\x63\x68\x61\x72\x20\x2a\x29\x20\x50\x54\x5f\x52\x45\x47\x53\x5f\x50\ -\x41\x52\x4d\x32\x28\x63\x74\x78\x29\x3b\x20\0\x20\x20\x20\x20\x5f\x5f\x75\x36\ -\x34\x20\x70\x69\x64\x5f\x74\x67\x69\x64\x20\x3d\x20\x62\x70\x66\x5f\x67\x65\ -\x74\x5f\x63\x75\x72\x72\x65\x6e\x74\x5f\x70\x69\x64\x5f\x74\x67\x69\x64\x28\ -\x29\x3b\0\x20\x20\x20\x20\x73\x74\x72\x75\x63\x74\x20\x66\x73\x5f\x6f\x70\x65\ -\x6e\x5f\x64\x61\x74\x61\x20\x64\x61\x74\x61\x20\x3d\x20\x7b\0\x20\x20\x20\x20\ -\x5f\x5f\x75\x33\x32\x20\x70\x69\x64\x20\x3d\x20\x70\x69\x64\x5f\x74\x67\x69\ -\x64\x20\x3e\x3e\x20\x33\x32\x3b\0\x20\x20\x20\x20\x62\x70\x66\x5f\x6d\x61\x70\ -\x5f\x75\x70\x64\x61\x74\x65\x5f\x65\x6c\x65\x6d\x28\x26\x66\x73\x5f\x6f\x70\ -\x65\x6e\x2c\x20\x26\x70\x69\x64\x5f\x74\x67\x69\x64\x2c\x20\x26\x64\x61\x74\ -\x61\x2c\x20\x42\x50\x46\x5f\x41\x4e\x59\x29\x3b\0\x20\x20\x20\x20\x62\x70\x66\ -\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x50\x49\x44\x3a\x20\x25\x75\x2c\x20\x46\ -\x53\x3a\x25\x75\x5c\x6e\x22\x2c\x20\x70\x69\x64\x2c\x20\x66\x64\x29\x3b\0\x7d\ -\x20\0\x78\x64\x70\x5f\x6d\x64\0\x64\x61\x74\x61\0\x64\x61\x74\x61\x5f\x65\x6e\ -\x64\0\x64\x61\x74\x61\x5f\x6d\x65\x74\x61\0\x69\x6e\x67\x72\x65\x73\x73\x5f\ -\x69\x66\x69\x6e\x64\x65\x78\0\x72\x78\x5f\x71\x75\x65\x75\x65\x5f\x69\x6e\x64\ -\x65\x78\0\x65\x67\x72\x65\x73\x73\x5f\x69\x66\x69\x6e\x64\x65\x78\0\x78\x64\ -\x70\x5f\x72\x65\x63\x65\x69\x76\x65\0\x78\x64\x70\x5f\x70\x72\x6f\x67\0\x2f\ -\x68\x6f\x6d\x65\x2f\x6f\x73\x62\x6f\x78\x65\x73\x2f\x54\x46\x47\x2f\x73\x72\ -\x63\x2f\x65\x62\x70\x66\x2f\x78\x64\x70\x5f\x66\x69\x6c\x74\x65\x72\x2e\x62\ -\x70\x66\x2e\x63\0\x69\x6e\x74\x20\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\ -\x28\x73\x74\x72\x75\x63\x74\x20\x78\x64\x70\x5f\x6d\x64\x20\x2a\x63\x74\x78\ -\x29\x7b\0\x30\x3a\x31\0\x20\x20\x20\x20\x76\x6f\x69\x64\x20\x2a\x64\x61\x74\ -\x61\x5f\x65\x6e\x64\x20\x3d\x20\x28\x76\x6f\x69\x64\x20\x2a\x29\x28\x6c\x6f\ -\x6e\x67\x29\x63\x74\x78\x2d\x3e\x64\x61\x74\x61\x5f\x65\x6e\x64\x3b\0\x30\x3a\ -\x30\0\x20\x20\x20\x20\x76\x6f\x69\x64\x20\x2a\x64\x61\x74\x61\x20\x3d\x20\x28\ -\x76\x6f\x69\x64\x20\x2a\x29\x28\x6c\x6f\x6e\x67\x29\x63\x74\x78\x2d\x3e\x64\ -\x61\x74\x61\x3b\0\x2f\x68\x6f\x6d\x65\x2f\x6f\x73\x62\x6f\x78\x65\x73\x2f\x54\ -\x46\x47\x2f\x73\x72\x63\x2f\x65\x62\x70\x66\x2f\x69\x6e\x63\x6c\x75\x64\x65\ -\x2f\x70\x61\x63\x6b\x65\x74\x2f\x70\x61\x63\x6b\x65\x74\x5f\x6d\x61\x6e\x61\ -\x67\x65\x72\x2e\x68\0\x20\x20\x20\x20\x69\x66\x20\x28\x28\x76\x6f\x69\x64\x20\ -\x2a\x29\x65\x74\x68\x20\x2b\x20\x73\x69\x7a\x65\x6f\x66\x28\x73\x74\x72\x75\ -\x63\x74\x20\x65\x74\x68\x68\x64\x72\x29\x20\x3e\x20\x64\x61\x74\x61\x5f\x65\ -\x6e\x64\x29\x7b\0\x20\x20\x20\x20\x69\x66\x28\x65\x74\x68\x65\x72\x6e\x65\x74\ -\x5f\x68\x65\x61\x64\x65\x72\x5f\x62\x6f\x75\x6e\x64\x5f\x63\x68\x65\x63\x6b\ -\x28\x65\x74\x68\x2c\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x3c\x30\x29\x7b\0\ -\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\ -\x22\x42\x6f\x75\x6e\x64\x20\x63\x68\x65\x63\x6b\x20\x66\x61\x69\x6c\x20\x41\ -\x22\x29\x3b\0\x20\x20\x20\x20\x69\x66\x20\x28\x28\x76\x6f\x69\x64\x20\x2a\x29\ -\x69\x70\x20\x2b\x20\x73\x69\x7a\x65\x6f\x66\x28\x2a\x69\x70\x29\x20\x3e\x20\ -\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x7b\0\x20\x20\x20\x20\x69\x66\x20\x28\x69\ -\x70\x5f\x68\x65\x61\x64\x65\x72\x5f\x62\x6f\x75\x6e\x64\x5f\x63\x68\x65\x63\ -\x6b\x28\x69\x70\x2c\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x3c\x30\x29\x7b\0\ -\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\ -\x22\x42\x22\x29\x3b\0\x69\x70\x68\x64\x72\0\x69\x68\x6c\0\x76\x65\x72\x73\x69\ -\x6f\x6e\0\x74\x6f\x73\0\x74\x6f\x74\x5f\x6c\x65\x6e\0\x69\x64\0\x66\x72\x61\ -\x67\x5f\x6f\x66\x66\0\x74\x74\x6c\0\x70\x72\x6f\x74\x6f\x63\x6f\x6c\0\x63\x68\ -\x65\x63\x6b\0\x73\x61\x64\x64\x72\0\x64\x61\x64\x64\x72\0\x5f\x5f\x75\x38\0\ -\x5f\x5f\x62\x65\x31\x36\0\x5f\x5f\x75\x31\x36\0\x5f\x5f\x73\x75\x6d\x31\x36\0\ -\x5f\x5f\x62\x65\x33\x32\0\x30\x3a\x37\0\x20\x20\x20\x20\x73\x77\x69\x74\x63\ -\x68\x28\x69\x70\x2d\x3e\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x29\x7b\0\x20\x20\x20\ -\x20\x69\x66\x20\x28\x67\x65\x74\x5f\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x28\x64\ -\x61\x74\x61\x29\x20\x21\x3d\x20\x49\x50\x50\x52\x4f\x54\x4f\x5f\x54\x43\x50\ -\x29\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\ -\x6b\x28\x22\x43\x22\x29\x3b\0\x20\x20\x20\x20\x69\x66\x20\x28\x28\x76\x6f\x69\ -\x64\x20\x2a\x29\x74\x63\x70\x20\x2b\x20\x73\x69\x7a\x65\x6f\x66\x28\x2a\x74\ -\x63\x70\x29\x20\x3e\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x7b\0\x20\x20\x20\ -\x20\x69\x66\x20\x28\x74\x63\x70\x5f\x68\x65\x61\x64\x65\x72\x5f\x62\x6f\x75\ -\x6e\x64\x5f\x63\x68\x65\x63\x6b\x28\x74\x63\x70\x2c\x20\x64\x61\x74\x61\x5f\ -\x65\x6e\x64\x29\x29\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\ -\x72\x69\x6e\x74\x6b\x28\x22\x44\x22\x29\x3b\0\x7d\0\x74\x63\x70\x68\x64\x72\0\ -\x73\x6f\x75\x72\x63\x65\0\x64\x65\x73\x74\0\x73\x65\x71\0\x61\x63\x6b\x5f\x73\ -\x65\x71\0\x72\x65\x73\x31\0\x64\x6f\x66\x66\0\x66\x69\x6e\0\x73\x79\x6e\0\x72\ -\x73\x74\0\x70\x73\x68\0\x61\x63\x6b\0\x75\x72\x67\0\x65\x63\x65\0\x63\x77\x72\ -\0\x77\x69\x6e\x64\x6f\x77\0\x75\x72\x67\x5f\x70\x74\x72\0\x2f\x68\x6f\x6d\x65\ -\x2f\x6f\x73\x62\x6f\x78\x65\x73\x2f\x54\x46\x47\x2f\x73\x72\x63\x2f\x65\x62\ -\x70\x66\x2f\x69\x6e\x63\x6c\x75\x64\x65\x2f\x70\x61\x63\x6b\x65\x74\x2f\x70\ -\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x74\x63\x70\x5f\x68\x65\x6c\x70\x65\x72\x2e\ -\x68\0\x20\x20\x20\x20\x72\x65\x74\x75\x72\x6e\x20\x62\x70\x66\x5f\x6e\x74\x6f\ -\x68\x73\x28\x74\x63\x70\x2d\x3e\x64\x65\x73\x74\x29\x3b\0\x20\x20\x20\x20\x69\ -\x66\x20\x28\x67\x65\x74\x5f\x74\x63\x70\x5f\x64\x65\x73\x74\x5f\x70\x6f\x72\ -\x74\x28\x74\x63\x70\x29\x20\x21\x3d\x20\x53\x45\x43\x52\x45\x54\x5f\x50\x41\ -\x43\x4b\x45\x54\x5f\x44\x45\x53\x54\x5f\x50\x4f\x52\x54\x29\x7b\0\x20\x20\x20\ -\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x45\x20\ -\x25\x69\x5c\x6e\x22\x2c\x20\x62\x70\x66\x5f\x6e\x74\x6f\x68\x73\x28\x74\x63\ -\x70\x2d\x3e\x64\x65\x73\x74\x29\x29\x3b\0\x30\x3a\x33\0\x20\x20\x20\x20\x70\ -\x61\x79\x6c\x6f\x61\x64\x5f\x73\x69\x7a\x65\x20\x3d\x20\x62\x70\x66\x5f\x6e\ -\x74\x6f\x68\x73\x28\x69\x70\x2d\x3e\x74\x6f\x74\x5f\x6c\x65\x6e\x29\x20\x2d\ -\x20\x28\x74\x63\x70\x2d\x3e\x64\x6f\x66\x66\x20\x2a\x20\x34\x29\x20\x2d\x20\ -\x28\x69\x70\x2d\x3e\x69\x68\x6c\x20\x2a\x20\x34\x29\x3b\0\x30\x3a\x35\0\x20\ -\x20\x20\x20\x70\x61\x79\x6c\x6f\x61\x64\x20\x3d\x20\x28\x76\x6f\x69\x64\x20\ -\x2a\x29\x74\x63\x70\x20\x2b\x20\x74\x63\x70\x2d\x3e\x64\x6f\x66\x66\x2a\x34\ -\x3b\0\x20\x20\x20\x20\x69\x66\x20\x28\x70\x61\x79\x6c\x6f\x61\x64\x5f\x73\x69\ -\x7a\x65\x20\x21\x3d\x20\x73\x69\x7a\x65\x6f\x66\x28\x53\x45\x43\x52\x45\x54\ -\x5f\x50\x41\x43\x4b\x45\x54\x5f\x50\x41\x59\x4c\x4f\x41\x44\x29\x2d\x31\x29\ -\x20\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\ -\x6b\x28\x22\x46\x2c\x20\x50\x53\x3a\x25\x69\x2c\x20\x50\x3a\x25\x69\x2c\x20\ -\x44\x45\x3a\x25\x69\x5c\x6e\x22\x2c\x20\x70\x61\x79\x6c\x6f\x61\x64\x5f\x73\ -\x69\x7a\x65\x2c\x20\x70\x61\x79\x6c\x6f\x61\x64\x2c\x20\x64\x61\x74\x61\x5f\ -\x65\x6e\x64\x29\x3b\0\x20\x20\x20\x20\x69\x66\x20\x28\x28\x76\x6f\x69\x64\x2a\ -\x29\x70\x61\x79\x6c\x6f\x61\x64\x20\x2b\x20\x70\x61\x79\x6c\x6f\x61\x64\x5f\ -\x73\x69\x7a\x65\x20\x3e\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x7b\0\x20\x20\ -\x20\x20\x69\x66\x20\x28\x74\x63\x70\x5f\x70\x61\x79\x6c\x6f\x61\x64\x5f\x62\ -\x6f\x75\x6e\x64\x5f\x63\x68\x65\x63\x6b\x28\x70\x61\x79\x6c\x6f\x61\x64\x2c\ -\x20\x70\x61\x79\x6c\x6f\x61\x64\x5f\x73\x69\x7a\x65\x2c\x20\x64\x61\x74\x61\ -\x5f\x65\x6e\x64\x29\x29\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\ -\x70\x72\x69\x6e\x74\x6b\x28\x22\x47\x22\x29\x3b\0\x20\x20\x20\x20\x62\x70\x66\ -\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x52\x65\x63\x65\x69\x76\x65\x64\x20\x76\ -\x61\x6c\x69\x64\x20\x54\x43\x50\x20\x70\x61\x63\x6b\x65\x74\x20\x77\x69\x74\ -\x68\x20\x70\x61\x79\x6c\x6f\x61\x64\x20\x25\x73\x20\x6f\x66\x20\x73\x69\x7a\ -\x65\x20\x25\x69\x5c\x6e\x22\x2c\x20\x70\x61\x79\x6c\x6f\x61\x64\x2c\x20\x70\ -\x61\x79\x6c\x6f\x61\x64\x5f\x73\x69\x7a\x65\x29\x3b\0\x2f\x68\x6f\x6d\x65\x2f\ -\x6f\x73\x62\x6f\x78\x65\x73\x2f\x54\x46\x47\x2f\x73\x72\x63\x2f\x65\x62\x70\ -\x66\x2f\x69\x6e\x63\x6c\x75\x64\x65\x2f\x62\x70\x66\x2f\x2e\x2e\x2f\x75\x74\ -\x69\x6c\x73\x2f\x73\x74\x72\x69\x6e\x67\x73\x2e\x68\0\x20\x20\x20\x20\x20\x20\ -\x20\x20\x69\x66\x20\x28\x73\x74\x72\x31\x5b\x69\x69\x5d\x20\x21\x3d\x20\x73\ -\x74\x72\x32\x5b\x69\x69\x5d\x29\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\ -\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x48\x22\x29\x3b\0\x20\x20\x20\x20\x62\ -\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x4f\x4c\x44\x20\x64\x61\x74\x61\ -\x5f\x65\x6e\x64\x3a\x20\x25\x69\x2c\x20\x70\x61\x79\x6c\x6f\x61\x64\x3a\x20\ -\x25\x69\x5c\x6e\x22\x2c\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x2c\x20\x70\x61\ -\x79\x6c\x6f\x61\x64\x29\x3b\0\x2f\x68\x6f\x6d\x65\x2f\x6f\x73\x62\x6f\x78\x65\ -\x73\x2f\x54\x46\x47\x2f\x73\x72\x63\x2f\x65\x62\x70\x66\x2f\x69\x6e\x63\x6c\ -\x75\x64\x65\x2f\x78\x64\x70\x2f\x78\x64\x70\x5f\x68\x65\x6c\x70\x65\x72\x2e\ -\x68\0\x20\x20\x20\x20\x5f\x5f\x62\x75\x69\x6c\x74\x69\x6e\x5f\x6d\x65\x6d\x63\ -\x70\x79\x28\x26\x65\x74\x68\x5f\x63\x6f\x70\x79\x2c\x20\x65\x74\x68\x2c\x20\ -\x73\x69\x7a\x65\x6f\x66\x28\x73\x74\x72\x75\x63\x74\x20\x65\x74\x68\x68\x64\ -\x72\x29\x29\x3b\0\x20\x20\x20\x20\x5f\x5f\x62\x75\x69\x6c\x74\x69\x6e\x5f\x6d\ -\x65\x6d\x63\x70\x79\x28\x26\x69\x70\x5f\x63\x6f\x70\x79\x2c\x20\x69\x70\x2c\ -\x20\x73\x69\x7a\x65\x6f\x66\x28\x73\x74\x72\x75\x63\x74\x20\x69\x70\x68\x64\ -\x72\x29\x29\x3b\0\x20\x20\x20\x20\x5f\x5f\x62\x75\x69\x6c\x74\x69\x6e\x5f\x6d\ -\x65\x6d\x63\x70\x79\x28\x26\x74\x63\x70\x5f\x63\x6f\x70\x79\x2c\x20\x74\x63\ -\x70\x2c\x20\x73\x69\x7a\x65\x6f\x66\x28\x73\x74\x72\x75\x63\x74\x20\x74\x63\ -\x70\x68\x64\x72\x29\x29\x3b\0\x20\x20\x20\x20\x69\x66\x20\x28\x62\x70\x66\x5f\ -\x78\x64\x70\x5f\x61\x64\x6a\x75\x73\x74\x5f\x74\x61\x69\x6c\x28\x63\x74\x78\ -\x2c\x20\x28\x69\x6e\x74\x29\x28\x73\x69\x7a\x65\x6f\x66\x28\x63\x68\x61\x72\ -\x29\x2a\x6d\x6f\x72\x65\x5f\x62\x79\x74\x65\x73\x29\x29\x20\x21\x3d\x20\x30\ -\x29\0\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\ -\x28\x22\x46\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x65\x78\x70\x61\x6e\x64\x20\ -\x61\x20\x74\x63\x70\x20\x70\x61\x63\x6b\x65\x74\x20\x72\x65\x73\x65\x72\x76\ -\x65\x64\x20\x62\x79\x74\x65\x73\x20\x62\x79\x20\x25\x69\x5c\x6e\x22\x2c\x20\ -\x6d\x6f\x72\x65\x5f\x62\x79\x74\x65\x73\x29\x3b\0\x20\x20\x20\x20\x72\x65\x74\ -\x2e\x65\x74\x68\x20\x3d\x20\x28\x76\x6f\x69\x64\x2a\x29\x28\x6c\x6f\x6e\x67\ -\x29\x63\x74\x78\x2d\x3e\x64\x61\x74\x61\x3b\0\x20\x20\x20\x20\x72\x65\x74\x2e\ -\x74\x63\x70\x20\x3d\x20\x28\x76\x6f\x69\x64\x20\x2a\x29\x72\x65\x74\x2e\x69\ -\x70\x20\x2b\x20\x73\x69\x7a\x65\x6f\x66\x28\x73\x74\x72\x75\x63\x74\x20\x69\ -\x70\x68\x64\x72\x29\x3b\0\x20\x20\x20\x20\x76\x6f\x69\x64\x2a\x20\x64\x61\x74\ -\x61\x5f\x65\x6e\x64\x20\x3d\x20\x28\x76\x6f\x69\x64\x2a\x29\x28\x6c\x6f\x6e\ -\x67\x29\x63\x74\x78\x2d\x3e\x64\x61\x74\x61\x5f\x65\x6e\x64\x3b\0\x20\x20\x20\ -\x20\x72\x65\x74\x2e\x69\x70\x20\x3d\x20\x28\x76\x6f\x69\x64\x20\x2a\x29\x72\ -\x65\x74\x2e\x65\x74\x68\x20\x2b\x20\x73\x69\x7a\x65\x6f\x66\x28\x73\x74\x72\ -\x75\x63\x74\x20\x65\x74\x68\x68\x64\x72\x29\x3b\0\x20\x20\x20\x20\x69\x66\x28\ -\x65\x74\x68\x65\x72\x6e\x65\x74\x5f\x68\x65\x61\x64\x65\x72\x5f\x62\x6f\x75\ -\x6e\x64\x5f\x63\x68\x65\x63\x6b\x28\x72\x65\x74\x2e\x65\x74\x68\x2c\x20\x64\ -\x61\x74\x61\x5f\x65\x6e\x64\x29\x3c\x30\x29\x7b\0\x20\x20\x20\x20\x20\x20\x20\ -\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x42\x6f\x75\x6e\x64\x20\ -\x63\x68\x65\x63\x6b\x20\x41\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\ -\x65\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x5c\x6e\x22\x29\x3b\0\x20\x20\x20\ -\x20\x69\x66\x20\x28\x69\x70\x5f\x68\x65\x61\x64\x65\x72\x5f\x62\x6f\x75\x6e\ -\x64\x5f\x63\x68\x65\x63\x6b\x28\x72\x65\x74\x2e\x69\x70\x2c\x20\x64\x61\x74\ -\x61\x5f\x65\x6e\x64\x29\x3c\x30\x29\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x62\ -\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x42\x6f\x75\x6e\x64\x20\x63\x68\ -\x65\x63\x6b\x20\x42\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\x65\x20\ -\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x5c\x6e\x22\x29\x3b\0\x20\x20\x20\x20\x69\ -\x66\x20\x28\x74\x63\x70\x5f\x68\x65\x61\x64\x65\x72\x5f\x62\x6f\x75\x6e\x64\ -\x5f\x63\x68\x65\x63\x6b\x28\x72\x65\x74\x2e\x74\x63\x70\x2c\x20\x64\x61\x74\ -\x61\x5f\x65\x6e\x64\x29\x29\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\ -\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x42\x6f\x75\x6e\x64\x20\x63\x68\x65\x63\ -\x6b\x20\x43\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\x65\x20\x65\x78\ -\x70\x61\x6e\x64\x69\x6e\x67\x5c\x6e\x22\x29\x3b\0\x20\x20\x20\x20\x62\x70\x66\ -\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x43\x6f\x6e\x74\x72\x6f\x6c\x20\x62\x61\ -\x63\x6b\x20\x74\x6f\x20\x6d\x61\x69\x6e\x20\x70\x72\x6f\x67\x72\x61\x6d\x20\ -\x77\x69\x74\x68\x20\x72\x65\x74\x63\x6f\x64\x65\x20\x25\x69\x20\x61\x66\x74\ -\x65\x72\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x20\x25\x69\x20\x62\x79\x74\ -\x65\x73\x5c\x6e\x22\x2c\x20\x72\x65\x74\x2e\x63\x6f\x64\x65\x2c\x20\x6d\x6f\ -\x72\x65\x5f\x62\x79\x74\x65\x73\x29\x3b\0\x20\x20\x20\x20\x69\x66\x28\x72\x65\ -\x74\x2e\x63\x6f\x64\x65\x20\x3d\x3d\x20\x30\x29\x7b\0\x20\x20\x20\x20\x20\x20\ -\x20\x20\x64\x61\x74\x61\x20\x3d\x20\x28\x76\x6f\x69\x64\x2a\x29\x28\x6c\x6f\ -\x6e\x67\x29\x72\x65\x74\x2e\x72\x65\x74\x5f\x6d\x64\x2d\x3e\x64\x61\x74\x61\ -\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x20\x3d\ -\x20\x28\x76\x6f\x69\x64\x2a\x29\x28\x6c\x6f\x6e\x67\x29\x72\x65\x74\x2e\x72\ -\x65\x74\x5f\x6d\x64\x2d\x3e\x64\x61\x74\x61\x5f\x65\x6e\x64\x3b\0\x20\x20\x20\ -\x20\x20\x20\x20\x20\x69\x66\x28\x65\x74\x68\x65\x72\x6e\x65\x74\x5f\x68\x65\ -\x61\x64\x65\x72\x5f\x62\x6f\x75\x6e\x64\x5f\x63\x68\x65\x63\x6b\x28\x65\x74\ -\x68\x2c\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x3c\x30\x29\x7b\0\x20\x20\x20\ -\x20\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\ -\x28\x22\x42\x6f\x75\x6e\x64\x20\x63\x68\x65\x63\x6b\x20\x41\x20\x66\x61\x69\ -\x6c\x65\x64\x20\x77\x68\x69\x6c\x65\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\ -\x5c\x6e\x22\x29\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\ -\x69\x6e\x74\x6b\x28\x22\x42\x50\x46\x20\x66\x69\x6e\x69\x73\x68\x65\x64\x20\ -\x77\x69\x74\x68\x20\x65\x72\x72\x6f\x72\x20\x6f\x6e\x20\x65\x78\x70\x61\x6e\ -\x73\x69\x6f\x6e\x5c\x6e\x22\x29\x3b\0\x20\x20\x20\x20\x64\x61\x74\x61\x5f\x6c\ -\x65\x6e\x5f\x6e\x65\x78\x74\x20\x3d\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x2d\ -\x64\x61\x74\x61\x3b\0\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\ -\x28\x22\x50\x72\x65\x76\x69\x6f\x75\x73\x20\x6c\x65\x6e\x67\x74\x68\x3a\x20\ -\x25\x69\x2c\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x6c\x65\x6e\x67\x74\x68\x3a\ -\x20\x25\x69\x5c\x6e\x22\x2c\x20\x64\x61\x74\x61\x5f\x6c\x65\x6e\x5f\x70\x72\ -\x65\x76\x2c\x20\x64\x61\x74\x61\x5f\x6c\x65\x6e\x5f\x6e\x65\x78\x74\x29\x3b\0\ -\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x4e\x45\x57\ -\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x3a\x20\x25\x69\x2c\x20\x70\x61\x79\x6c\ -\x6f\x61\x64\x3a\x20\x25\x69\x5c\x6e\x22\x2c\x20\x64\x61\x74\x61\x5f\x65\x6e\ -\x64\x2c\x20\x70\x61\x79\x6c\x6f\x61\x64\x29\x3b\0\x20\x20\x20\x20\x62\x70\x66\ -\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x41\x6e\x64\x20\x6f\x6e\x20\x4e\x45\x57\ -\x20\x43\x54\x58\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x3a\x20\x25\x69\x2c\x20\ -\x70\x61\x79\x6c\x6f\x61\x64\x3a\x20\x25\x69\x5c\x6e\x22\x2c\x20\x63\x74\x78\ -\x2d\x3e\x64\x61\x74\x61\x5f\x65\x6e\x64\x2c\x20\x70\x61\x79\x6c\x6f\x61\x64\ -\x29\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x69\x70\x5f\x68\x65\ -\x61\x64\x65\x72\x5f\x62\x6f\x75\x6e\x64\x5f\x63\x68\x65\x63\x6b\x28\x69\x70\ -\x2c\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x3c\x30\x29\x7b\0\x20\x20\x20\x20\ -\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\ -\x22\x42\x6f\x75\x6e\x64\x20\x63\x68\x65\x63\x6b\x20\x42\x20\x66\x61\x69\x6c\ -\x65\x64\x20\x77\x68\x69\x6c\x65\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x5c\ -\x6e\x22\x29\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x74\x63\x70\ -\x5f\x68\x65\x61\x64\x65\x72\x5f\x62\x6f\x75\x6e\x64\x5f\x63\x68\x65\x63\x6b\ -\x28\x74\x63\x70\x2c\x20\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x29\x7b\0\x20\x20\ -\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\ -\x6b\x28\x22\x42\x6f\x75\x6e\x64\x20\x63\x68\x65\x63\x6b\x20\x44\x20\x66\x61\ -\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\x65\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\ -\x67\x5c\x6e\x22\x29\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x70\x61\x79\x6c\x6f\ -\x61\x64\x5f\x73\x69\x7a\x65\x20\x3d\x20\x62\x70\x66\x5f\x6e\x74\x6f\x68\x73\ -\x28\x69\x70\x2d\x3e\x74\x6f\x74\x5f\x6c\x65\x6e\x29\x20\x2d\x20\x28\x74\x63\ -\x70\x2d\x3e\x64\x6f\x66\x66\x20\x2a\x20\x34\x29\x20\x2d\x20\x28\x69\x70\x2d\ -\x3e\x69\x68\x6c\x20\x2a\x20\x34\x29\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\ -\x66\x28\x70\x61\x79\x6c\x6f\x61\x64\x5f\x73\x69\x7a\x65\x20\x3c\x20\x30\x7c\ -\x7c\x20\x70\x61\x79\x6c\x6f\x61\x64\x5f\x73\x69\x7a\x65\x3e\x38\x38\x38\x38\ -\x38\x29\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\ -\x70\x72\x69\x6e\x74\x6b\x28\x22\x55\x6e\x6c\x69\x6b\x65\x6c\x79\x20\x79\x6f\ -\x75\x20\x61\x72\x65\x20\x68\x65\x72\x65\x2c\x20\x62\x75\x74\x20\x4f\x4b\x5c\ -\x6e\x22\x29\x3b\0\x20\x20\x20\x20\x5f\x5f\x62\x75\x69\x6c\x74\x69\x6e\x5f\x6d\ -\x65\x6d\x63\x70\x79\x28\x28\x72\x65\x74\x2e\x65\x74\x68\x29\x2c\x20\x26\x65\ -\x74\x68\x5f\x63\x6f\x70\x79\x2c\x20\x73\x69\x7a\x65\x6f\x66\x28\x73\x74\x72\ -\x75\x63\x74\x20\x65\x74\x68\x68\x64\x72\x29\x29\x3b\0\x20\x20\x20\x20\x5f\x5f\ -\x62\x75\x69\x6c\x74\x69\x6e\x5f\x6d\x65\x6d\x63\x70\x79\x28\x28\x72\x65\x74\ -\x2e\x69\x70\x29\x2c\x20\x26\x69\x70\x5f\x63\x6f\x70\x79\x2c\x20\x73\x69\x7a\ -\x65\x6f\x66\x28\x73\x74\x72\x75\x63\x74\x20\x69\x70\x68\x64\x72\x29\x29\x3b\0\ -\x20\x20\x20\x20\x5f\x5f\x62\x75\x69\x6c\x74\x69\x6e\x5f\x6d\x65\x6d\x63\x70\ -\x79\x28\x28\x72\x65\x74\x2e\x74\x63\x70\x29\x2c\x20\x26\x74\x63\x70\x5f\x63\ -\x6f\x70\x79\x2c\x20\x73\x69\x7a\x65\x6f\x66\x28\x73\x74\x72\x75\x63\x74\x20\ -\x74\x63\x70\x68\x64\x72\x29\x29\x3b\x20\x20\0\x30\x3a\x38\0\x20\x20\x20\x20\ -\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x62\x65\x66\x6f\x72\x65\x3a\ -\x20\x25\x69\x2c\x20\x63\x68\x65\x63\x6b\x73\x75\x6d\x20\x25\x75\x5c\x6e\x22\ -\x2c\x20\x72\x65\x74\x2e\x69\x70\x2d\x3e\x74\x6f\x74\x5f\x6c\x65\x6e\x2c\x20\ -\x72\x65\x74\x2e\x69\x70\x2d\x3e\x63\x68\x65\x63\x6b\x29\x3b\0\x20\x20\x20\x20\ -\x72\x65\x74\x2e\x69\x70\x2d\x3e\x74\x6f\x74\x5f\x6c\x65\x6e\x20\x3d\x20\x62\ -\x70\x66\x5f\x68\x74\x6f\x6e\x73\x28\x62\x70\x66\x5f\x6e\x74\x6f\x68\x73\x28\ -\x72\x65\x74\x2e\x69\x70\x2d\x3e\x74\x6f\x74\x5f\x6c\x65\x6e\x29\x20\x2b\x20\ -\x6d\x6f\x72\x65\x5f\x62\x79\x74\x65\x73\x29\x3b\0\x20\x20\x20\x20\x72\x65\x74\ -\x2e\x69\x70\x2d\x3e\x63\x68\x65\x63\x6b\x20\x3d\x20\x30\x3b\0\x2f\x68\x6f\x6d\ -\x65\x2f\x6f\x73\x62\x6f\x78\x65\x73\x2f\x54\x46\x47\x2f\x73\x72\x63\x2f\x65\ -\x62\x70\x66\x2f\x69\x6e\x63\x6c\x75\x64\x65\x2f\x70\x61\x63\x6b\x65\x74\x2f\ -\x70\x72\x6f\x74\x6f\x63\x6f\x6c\x2f\x69\x70\x5f\x68\x65\x6c\x70\x65\x72\x2e\ -\x68\0\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x63\x73\ -\x75\x6d\x3a\x20\x25\x75\x20\x66\x6f\x72\x20\x64\x61\x74\x61\x5f\x73\x74\x61\ -\x72\x74\x20\x25\x75\x2c\x20\x64\x61\x74\x61\x5f\x73\x69\x7a\x65\x20\x25\x69\ -\x5c\x6e\x22\x2c\x20\x2a\x63\x73\x75\x6d\x2c\x20\x64\x61\x74\x61\x5f\x73\x74\ -\x61\x72\x74\x2c\x20\x64\x61\x74\x61\x5f\x73\x69\x7a\x65\x29\x3b\0\x20\x20\x20\ -\x20\x2a\x63\x73\x75\x6d\x20\x3d\x20\x62\x70\x66\x5f\x63\x73\x75\x6d\x5f\x64\ -\x69\x66\x66\x28\x30\x2c\x20\x30\x2c\x20\x64\x61\x74\x61\x5f\x73\x74\x61\x72\ -\x74\x2c\x20\x64\x61\x74\x61\x5f\x73\x69\x7a\x65\x2c\x20\x2a\x63\x73\x75\x6d\ -\x29\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x63\x73\x75\x6d\x20\ -\x3e\x3e\x20\x31\x36\x29\x7b\0\x09\x72\x65\x74\x2e\x69\x70\x2d\x3e\x63\x68\x65\ -\x63\x6b\x20\x3d\x20\x63\x73\x75\x6d\x3b\0\x20\x20\x20\x20\x62\x70\x66\x5f\x70\ -\x72\x69\x6e\x74\x6b\x28\x22\x61\x66\x74\x65\x72\x3a\x20\x25\x69\x2c\x20\x63\ -\x68\x65\x63\x6b\x73\x75\x6d\x20\x25\x75\x5c\x6e\x22\x2c\x20\x72\x65\x74\x2e\ -\x69\x70\x2d\x3e\x74\x6f\x74\x5f\x6c\x65\x6e\x2c\x20\x72\x65\x74\x2e\x69\x70\ -\x2d\x3e\x63\x68\x65\x63\x6b\x29\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x69\x66\ -\x28\x28\x76\x6f\x69\x64\x2a\x29\x70\x61\x79\x6c\x6f\x61\x64\x20\x2b\x20\x73\ -\x69\x7a\x65\x6f\x66\x28\x53\x55\x42\x53\x54\x49\x54\x55\x54\x49\x4f\x4e\x5f\ -\x4e\x45\x57\x5f\x50\x41\x59\x4c\x4f\x41\x44\x29\x20\x2d\x31\x20\x3e\x20\x64\ -\x61\x74\x61\x5f\x65\x6e\x64\x29\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ -\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x42\x6f\x75\x6e\x64\ -\x20\x63\x68\x65\x63\x6b\x20\x45\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x68\x69\ -\x6c\x65\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x5c\x6e\x22\x29\x3b\0\x20\x20\ -\x20\x20\x20\x20\x20\x20\x69\x66\x20\x28\x74\x63\x70\x5f\x70\x61\x79\x6c\x6f\ -\x61\x64\x5f\x62\x6f\x75\x6e\x64\x5f\x63\x68\x65\x63\x6b\x28\x70\x61\x79\x6c\ -\x6f\x61\x64\x2c\x20\x70\x61\x79\x6c\x6f\x61\x64\x5f\x73\x69\x7a\x65\x2c\x20\ -\x64\x61\x74\x61\x5f\x65\x6e\x64\x29\x29\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\ -\x20\x20\x20\x20\x70\x61\x79\x6c\x6f\x61\x64\x5b\x69\x69\x5d\x20\x3d\x20\x27\ -\x5c\x30\x27\x3b\0\x20\x20\x20\x20\x69\x66\x28\x70\x61\x74\x74\x65\x72\x6e\x5f\ -\x73\x69\x7a\x65\x20\x3e\x20\x70\x61\x79\x6c\x6f\x61\x64\x5f\x73\x69\x7a\x65\ -\x20\x7c\x7c\x20\x70\x61\x74\x74\x65\x72\x6e\x5f\x73\x69\x7a\x65\x20\x2b\x20\ -\x28\x76\x6f\x69\x64\x2a\x29\x70\x61\x79\x6c\x6f\x61\x64\x5f\x6f\x72\x67\x3e\ -\x70\x61\x63\x6b\x65\x74\x5f\x6c\x69\x6d\x69\x74\x20\x7c\x7c\x20\x70\x61\x79\ -\x6c\x6f\x61\x64\x5f\x73\x69\x7a\x65\x20\x2b\x20\x28\x76\x6f\x69\x64\x2a\x29\ -\x70\x61\x79\x6c\x6f\x61\x64\x5f\x6f\x72\x67\x20\x3e\x20\x70\x61\x63\x6b\x65\ -\x74\x5f\x6c\x69\x6d\x69\x74\x29\x7b\0\x20\x20\x20\x20\x69\x66\x28\x28\x76\x6f\ -\x69\x64\x2a\x29\x70\x61\x79\x6c\x6f\x61\x64\x5f\x6f\x72\x67\x20\x2b\x20\x70\ -\x61\x74\x74\x65\x72\x6e\x5f\x73\x69\x7a\x65\x20\x2b\x20\x28\x70\x61\x79\x6c\ -\x6f\x61\x64\x5f\x73\x69\x7a\x65\x2d\x70\x61\x74\x74\x65\x72\x6e\x5f\x73\x69\ -\x7a\x65\x29\x20\x3e\x20\x28\x76\x6f\x69\x64\x2a\x29\x70\x61\x63\x6b\x65\x74\ -\x5f\x6c\x69\x6d\x69\x74\x29\x7b\0\x20\x20\x20\x20\x20\x20\x20\x20\x70\x61\x79\ -\x6c\x6f\x61\x64\x5f\x6f\x72\x67\x5b\x69\x69\x5d\x20\x3d\x20\x70\x61\x74\x74\ -\x65\x72\x6e\x5b\x69\x69\x5d\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ -\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x42\x6f\x75\x6e\x64\x20\ -\x63\x68\x65\x63\x6b\x20\x46\x20\x66\x61\x69\x6c\x65\x64\x20\x77\x68\x69\x6c\ -\x65\x20\x65\x78\x70\x61\x6e\x64\x69\x6e\x67\x5c\x6e\x22\x29\x3b\0\x20\x20\x20\ -\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x49\x6e\ -\x76\x61\x6c\x69\x64\x20\x61\x74\x74\x65\x6d\x70\x74\x20\x74\x6f\x20\x73\x75\ -\x62\x73\x74\x69\x74\x75\x74\x65\x20\x74\x68\x65\x20\x70\x61\x79\x6c\x6f\x61\ -\x64\x20\x41\x5c\x6e\x22\x29\x3b\0\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\ -\x5f\x70\x72\x69\x6e\x74\x6b\x28\x22\x49\x6e\x76\x61\x6c\x69\x64\x20\x61\x74\ -\x74\x65\x6d\x70\x74\x20\x74\x6f\x20\x73\x75\x62\x73\x74\x69\x74\x75\x74\x65\ -\x20\x74\x68\x65\x20\x70\x61\x79\x6c\x6f\x61\x64\x20\x43\x5c\x6e\x22\x29\x3b\0\ -\x20\x20\x20\x20\x20\x20\x20\x20\x62\x70\x66\x5f\x70\x72\x69\x6e\x74\x6b\x28\ -\x22\x42\x50\x46\x20\x66\x69\x6e\x69\x73\x68\x65\x64\x20\x77\x69\x74\x68\x20\ -\x72\x65\x74\x20\x25\x69\x20\x61\x6e\x64\x20\x70\x61\x79\x6c\x6f\x61\x64\x20\ -\x25\x73\x20\x6f\x66\x20\x73\x69\x7a\x65\x20\x25\x69\x5c\x6e\x20\x22\x2c\x20\ -\x72\x65\x74\x2e\x63\x6f\x64\x65\x2c\x20\x70\x61\x79\x6c\x6f\x61\x64\x2c\x20\ -\x70\x61\x79\x6c\x6f\x61\x64\x5f\x73\x69\x7a\x65\x29\x3b\0\x4c\x49\x43\x45\x4e\ -\x53\x45\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\ -\x6d\x74\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\ -\x6d\x74\x2e\x31\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\ -\x5f\x66\x6d\x74\x2e\x32\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\ -\x5f\x5f\x5f\x66\x6d\x74\x2e\x33\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\ -\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x34\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\ -\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x35\0\x78\x64\x70\x5f\x72\x65\x63\ -\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x36\0\x78\x64\x70\x5f\x72\ -\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x37\0\x78\x64\x70\ -\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x38\0\x78\ -\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\ -\x39\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\ -\x74\x2e\x31\x30\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\ -\x5f\x66\x6d\x74\x2e\x31\x31\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\ -\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x31\x32\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\ -\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x31\x33\0\x78\x64\x70\x5f\x72\x65\ -\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x31\x34\0\x78\x64\x70\ -\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x31\x35\0\ -\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\ -\x2e\x31\x36\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\ -\x66\x6d\x74\x2e\x31\x38\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\ -\x5f\x5f\x5f\x66\x6d\x74\x2e\x31\x39\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\ -\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x30\0\x78\x64\x70\x5f\x72\x65\x63\ -\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x31\0\x78\x64\x70\x5f\ -\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x32\0\x68\ -\x61\x6e\x64\x6c\x65\x5f\x73\x79\x73\x5f\x72\x65\x61\x64\x2e\x5f\x5f\x5f\x5f\ -\x66\x6d\x74\0\x65\x78\x70\x61\x6e\x64\x5f\x74\x63\x70\x5f\x70\x61\x63\x6b\x65\ -\x74\x5f\x70\x61\x79\x6c\x6f\x61\x64\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\0\x65\x78\ -\x70\x61\x6e\x64\x5f\x74\x63\x70\x5f\x70\x61\x63\x6b\x65\x74\x5f\x70\x61\x79\ -\x6c\x6f\x61\x64\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x33\0\x65\x78\x70\x61\ -\x6e\x64\x5f\x74\x63\x70\x5f\x70\x61\x63\x6b\x65\x74\x5f\x70\x61\x79\x6c\x6f\ -\x61\x64\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x34\0\x65\x78\x70\x61\x6e\x64\ -\x5f\x74\x63\x70\x5f\x70\x61\x63\x6b\x65\x74\x5f\x70\x61\x79\x6c\x6f\x61\x64\ -\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x35\0\x65\x78\x70\x61\x6e\x64\x5f\x74\ -\x63\x70\x5f\x70\x61\x63\x6b\x65\x74\x5f\x70\x61\x79\x6c\x6f\x61\x64\x2e\x5f\ -\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x36\0\x65\x78\x70\x61\x6e\x64\x5f\x74\x63\x70\ -\x5f\x70\x61\x63\x6b\x65\x74\x5f\x70\x61\x79\x6c\x6f\x61\x64\x2e\x5f\x5f\x5f\ -\x5f\x66\x6d\x74\x2e\x32\x37\0\x69\x70\x76\x34\x5f\x63\x73\x75\x6d\x2e\x5f\x5f\ -\x5f\x5f\x66\x6d\x74\0\x6d\x6f\x64\x69\x66\x79\x5f\x70\x61\x79\x6c\x6f\x61\x64\ -\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\0\x6d\x6f\x64\x69\x66\x79\x5f\x70\x61\x79\x6c\ -\x6f\x61\x64\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x39\0\x2e\x6d\x61\x70\x73\ -\0\x2e\x72\x6f\x64\x61\x74\x61\0\x6c\x69\x63\x65\x6e\x73\x65\0\x9f\xeb\x01\0\ -\x20\0\0\0\0\0\0\0\x34\0\0\0\x34\0\0\0\x9c\x09\0\0\xd0\x09\0\0\xb4\x01\0\0\x08\ -\0\0\0\x5b\x01\0\0\x01\0\0\0\0\0\0\0\x22\0\0\0\x55\x02\0\0\x01\0\0\0\0\0\0\0\ -\x27\0\0\0\x45\x04\0\0\x01\0\0\0\0\0\0\0\x2b\0\0\0\x10\0\0\0\x5b\x01\0\0\x02\0\ -\0\0\0\0\0\0\x77\x01\0\0\xa6\x01\0\0\x0e\x8c\0\0\x08\0\0\0\x77\x01\0\0\xd5\x01\ -\0\0\x02\xac\0\0\x55\x02\0\0\x0c\0\0\0\0\0\0\0\x66\x02\0\0\x92\x02\0\0\x09\x9c\ -\0\0\x08\0\0\0\x66\x02\0\0\xb1\x02\0\0\x14\xa0\0\0\x10\0\0\0\x66\x02\0\0\xde\ -\x02\0\0\x1a\xa4\0\0\x18\0\0\0\x66\x02\0\0\x0c\x03\0\0\x16\x60\0\0\x28\0\0\0\ -\x66\x02\0\0\x0c\x03\0\0\x0b\x60\0\0\x30\0\0\0\x66\x02\0\0\x3d\x03\0\0\x20\x68\ -\0\0\x38\0\0\0\x66\x02\0\0\x5e\x03\0\0\x1a\x64\0\0\x40\0\0\0\x66\x02\0\0\x3d\ -\x03\0\0\x20\x68\0\0\x58\0\0\0\x66\x02\0\0\0\0\0\0\0\0\0\0\x70\0\0\0\x66\x02\0\ -\0\x7e\x03\0\0\x05\x7c\0\0\x90\0\0\0\x66\x02\0\0\xbc\x03\0\0\x05\x80\0\0\xc0\0\ -\0\0\x66\x02\0\0\xe9\x03\0\0\x01\xac\0\0\x45\x04\0\0\x8a\0\0\0\0\0\0\0\x4e\x04\ -\0\0\x7a\x04\0\0\0\xd4\0\0\x08\0\0\0\x4e\x04\0\0\xa3\x04\0\0\x29\xe0\0\0\x10\0\ -\0\0\x4e\x04\0\0\xd9\x04\0\0\x25\xe4\0\0\x18\0\0\0\x03\x05\0\0\x3e\x05\0\0\x15\ -\x30\0\0\x28\0\0\0\x4e\x04\0\0\x77\x05\0\0\x08\x0c\x01\0\x30\0\0\0\x4e\x04\0\0\ -\xad\x05\0\0\x09\x10\x01\0\x50\0\0\0\x03\x05\0\0\xd7\x05\0\0\x14\x4c\0\0\x60\0\ -\0\0\x4e\x04\0\0\x05\x06\0\0\x09\x24\x01\0\x68\0\0\0\x4e\x04\0\0\x35\x06\0\0\ -\x09\x28\x01\0\x80\0\0\0\x03\x05\0\0\xbc\x06\0\0\x10\xb8\0\0\x88\0\0\0\x4e\x04\ -\0\0\xd6\x06\0\0\x09\x38\x01\0\x90\0\0\0\x4e\x04\0\0\x02\x07\0\0\x09\x3c\x01\0\ -\xa8\0\0\0\x03\x05\0\0\x1b\x07\0\0\x15\x68\0\0\xb8\0\0\0\x4e\x04\0\0\x4b\x07\0\ -\0\x09\x50\x01\0\xc0\0\0\0\x4e\x04\0\0\x7b\x07\0\0\x09\x54\x01\0\xd0\0\0\0\x4e\ -\x04\0\0\0\0\0\0\0\0\0\0\xe0\0\0\0\x4e\x04\0\0\x94\x07\0\0\x01\x60\x03\0\xf0\0\ -\0\0\xee\x07\0\0\x2e\x08\0\0\x0c\x34\0\0\xf8\0\0\0\x4e\x04\0\0\x4f\x08\0\0\x09\ -\x64\x01\0\0\x01\0\0\x4e\x04\0\0\x8b\x08\0\0\x09\x68\x01\0\x38\x01\0\0\x4e\x04\ -\0\0\xc3\x08\0\0\x14\x78\x01\0\x48\x01\0\0\x4e\x04\0\0\xc3\x08\0\0\x33\x78\x01\ -\0\x50\x01\0\0\x4e\x04\0\0\xc3\x08\0\0\x38\x78\x01\0\x60\x01\0\0\x4e\x04\0\0\ -\xc3\x08\0\0\x2b\x78\x01\0\x68\x01\0\0\x4e\x04\0\0\xc3\x08\0\0\x44\x78\x01\0\ -\x70\x01\0\0\x4e\x04\0\0\xc3\x08\0\0\x48\x78\x01\0\x80\x01\0\0\x4e\x04\0\0\xc3\ -\x08\0\0\x3d\x78\x01\0\x88\x01\0\0\x4e\x04\0\0\x14\x09\0\0\x1b\x7c\x01\0\x98\ -\x01\0\0\x4e\x04\0\0\x3d\x09\0\0\x09\x88\x01\0\xa0\x01\0\0\x4e\x04\0\0\x78\x09\ -\0\0\x09\x8c\x01\0\xc8\x01\0\0\x03\x05\0\0\xc8\x09\0\0\x18\x84\0\0\xd8\x01\0\0\ -\x4e\x04\0\0\xfb\x09\0\0\x09\x9c\x01\0\xe0\x01\0\0\x4e\x04\0\0\x3e\x0a\0\0\x09\ -\xa0\x01\0\0\x02\0\0\x4e\x04\0\0\x57\x0a\0\0\x05\xb0\x01\0\x40\x02\0\0\xb8\x0a\ -\0\0\xf2\x0a\0\0\x0d\x70\0\0\x48\x02\0\0\xb8\x0a\0\0\xf2\x0a\0\0\x0d\x70\0\0\ -\x50\x02\0\0\x4e\x04\0\0\x15\x0b\0\0\x09\xbc\x01\0\x68\x02\0\0\xb8\x0a\0\0\xf2\ -\x0a\0\0\x0d\x70\0\0\x70\x02\0\0\xb8\x0a\0\0\xf2\x0a\0\0\x0d\x70\0\0\x78\x02\0\ -\0\xb8\x0a\0\0\xf2\x0a\0\0\x0d\x70\0\0\x80\x02\0\0\xb8\x0a\0\0\xf2\x0a\0\0\x0d\ -\x70\0\0\x88\x02\0\0\xb8\x0a\0\0\xf2\x0a\0\0\x0d\x70\0\0\x90\x02\0\0\xb8\x0a\0\ -\0\xf2\x0a\0\0\x0d\x70\0\0\x98\x02\0\0\xb8\x0a\0\0\xf2\x0a\0\0\x0d\x70\0\0\xa0\ -\x02\0\0\xb8\x0a\0\0\xf2\x0a\0\0\x0d\x70\0\0\xa8\x02\0\0\xb8\x0a\0\0\xf2\x0a\0\ -\0\x0d\x70\0\0\xb0\x02\0\0\xb8\x0a\0\0\xf2\x0a\0\0\x0d\x70\0\0\xb8\x02\0\0\xb8\ -\x0a\0\0\xf2\x0a\0\0\x0d\x70\0\0\xc0\x02\0\0\xb8\x0a\0\0\xf2\x0a\0\0\x0d\x70\0\ -\0\xc8\x02\0\0\xb8\x0a\0\0\xf2\x0a\0\0\x0d\x70\0\0\xd0\x02\0\0\xb8\x0a\0\0\xf2\ -\x0a\0\0\x0d\x70\0\0\xd8\x02\0\0\xb8\x0a\0\0\xf2\x0a\0\0\x0d\x70\0\0\xe0\x02\0\ -\0\xb8\x0a\0\0\xf2\x0a\0\0\x0d\x70\0\0\xe8\x02\0\0\x4e\x04\0\0\x2e\x0b\0\0\x05\ -\xd4\x01\0\x10\x03\0\0\x74\x0b\0\0\xa8\x0b\0\0\x05\xa8\0\0\xa0\x03\0\0\x74\x0b\ -\0\0\xe5\x0b\0\0\x05\xac\0\0\0\x04\0\0\x74\x0b\0\0\x1f\x0c\0\0\x05\xb0\0\0\x60\ -\x04\0\0\x74\x0b\0\0\x5c\x0c\0\0\x09\xb8\0\0\x78\x04\0\0\x74\x0b\0\0\x5c\x0c\0\ -\0\x09\xb8\0\0\x80\x04\0\0\x74\x0b\0\0\xa3\x0c\0\0\x09\xc4\0\0\xd0\x04\0\0\x74\ -\x0b\0\0\xfb\x0c\0\0\x21\xdc\0\0\xd8\x04\0\0\x74\x0b\0\0\x21\x0d\0\0\x1e\xe4\0\ -\0\xe8\x04\0\0\x74\x0b\0\0\x56\x0d\0\0\x28\xec\0\0\xf8\x04\0\0\x74\x0b\0\0\x87\ -\x0d\0\0\x1e\xe0\0\0\x08\x05\0\0\x74\x0b\0\0\xbd\x0d\0\0\x08\xf0\0\0\x10\x05\0\ -\0\x74\x0b\0\0\xf7\x0d\0\0\x09\xf4\0\0\x28\x05\0\0\x74\x0b\0\0\x35\x0e\0\0\x09\ -\x08\x01\0\x30\x05\0\0\x74\x0b\0\0\x69\x0e\0\0\x09\x0c\x01\0\x48\x05\0\0\x03\ -\x05\0\0\x1b\x07\0\0\x15\x68\0\0\x58\x05\0\0\x74\x0b\0\0\xa7\x0e\0\0\x09\x20\ -\x01\0\x60\x05\0\0\x74\x0b\0\0\xdb\x0e\0\0\x09\x24\x01\0\x70\x05\0\0\x74\x0b\0\ -\0\0\0\0\0\0\0\0\0\xa0\x05\0\0\x4e\x04\0\0\x19\x0f\0\0\x05\xe0\x01\0\xd0\x05\0\ -\0\x4e\x04\0\0\x8a\x0f\0\0\x08\xe4\x01\0\xd8\x05\0\0\x4e\x04\0\0\xa1\x0f\0\0\ -\x29\xf0\x01\0\xe0\x05\0\0\x4e\x04\0\0\xcf\x0f\0\0\x2d\xf4\x01\0\xf8\x05\0\0\ -\x03\x05\0\0\x3e\x05\0\0\x15\x30\0\0\0\x06\0\0\x4e\x04\0\0\x05\x10\0\0\x0c\xfc\ -\x01\0\x08\x06\0\0\x4e\x04\0\0\x3f\x10\0\0\x0d\0\x02\0\x20\x06\0\0\x4e\x04\0\0\ -\x81\x10\0\0\x09\xf4\x02\0\x40\x06\0\0\x4e\x04\0\0\0\0\0\0\0\0\0\0\x68\x06\0\0\ -\x4e\x04\0\0\xbf\x10\0\0\x1d\xfc\x02\0\x80\x06\0\0\x4e\x04\0\0\xe2\x10\0\0\x05\ -\0\x03\0\xa0\x06\0\0\x4e\x04\0\0\x3d\x11\0\0\x05\x04\x03\0\xd0\x06\0\0\x4e\x04\ -\0\0\x83\x11\0\0\x05\x08\x03\0\x08\x07\0\0\x03\x05\0\0\xd7\x05\0\0\x14\x4c\0\0\ -\x18\x07\0\0\x4e\x04\0\0\xd9\x11\0\0\x0d\x14\x02\0\x20\x07\0\0\x4e\x04\0\0\x0d\ -\x12\0\0\x0d\x18\x02\0\x38\x07\0\0\x03\x05\0\0\x1b\x07\0\0\x15\x68\0\0\x48\x07\ -\0\0\x4e\x04\0\0\x4f\x12\0\0\x0d\x40\x02\0\x50\x07\0\0\x4e\x04\0\0\x83\x12\0\0\ -\x0d\x44\x02\0\x70\x07\0\0\x4e\x04\0\0\xc5\x12\0\0\x18\x54\x02\0\x80\x07\0\0\ -\x4e\x04\0\0\xc5\x12\0\0\x37\x54\x02\0\x88\x07\0\0\x4e\x04\0\0\xc5\x12\0\0\x3c\ -\x54\x02\0\x98\x07\0\0\x4e\x04\0\0\xc5\x12\0\0\x2f\x54\x02\0\xa0\x07\0\0\x4e\ -\x04\0\0\xc5\x12\0\0\x48\x54\x02\0\xa8\x07\0\0\x4e\x04\0\0\xc5\x12\0\0\x4c\x54\ -\x02\0\xb8\x07\0\0\x4e\x04\0\0\xc5\x12\0\0\x41\x54\x02\0\xe8\x07\0\0\x4e\x04\0\ -\0\x16\x13\0\0\x1c\x68\x02\0\xf0\x07\0\0\x4e\x04\0\0\x49\x13\0\0\x0d\x6c\x02\0\ -\x10\x08\0\0\x74\x0b\0\0\x84\x13\0\0\x05\x44\x01\0\x98\x08\0\0\x74\x0b\0\0\xc7\ -\x13\0\0\x05\x48\x01\0\xf0\x08\0\0\x74\x0b\0\0\x07\x14\0\0\x05\x4c\x01\0\x40\ -\x09\0\0\x74\x0b\0\0\x50\x14\0\0\x05\x5c\x01\0\x70\x09\0\0\x74\x0b\0\0\x9d\x14\ -\0\0\x17\x60\x01\0\x90\x09\0\0\x74\x0b\0\0\x9d\x14\0\0\x15\x60\x01\0\xa8\x09\0\ -\0\x74\x0b\0\0\xe7\x14\0\0\x13\x68\x01\0\xb8\x09\0\0\xfe\x14\0\0\x3d\x15\0\0\ -\x05\xe4\0\0\xf0\x09\0\0\xfe\x14\0\0\x99\x15\0\0\x0d\0\x01\0\x20\x0a\0\0\xfe\ -\x14\0\0\xd8\x15\0\0\x12\xb0\0\0\x38\x0a\0\0\xfe\x14\0\0\xd8\x15\0\0\x0d\xb0\0\ -\0\x50\x0a\0\0\xfe\x14\0\0\xd8\x15\0\0\x12\xb0\0\0\x68\x0a\0\0\xfe\x14\0\0\xd8\ -\x15\0\0\x0d\xb0\0\0\x80\x0a\0\0\xfe\x14\0\0\xd8\x15\0\0\x12\xb0\0\0\x98\x0a\0\ -\0\xfe\x14\0\0\xd8\x15\0\0\x0d\xb0\0\0\xb0\x0a\0\0\xfe\x14\0\0\xd8\x15\0\0\x12\ -\xb0\0\0\xc0\x0a\0\0\xfe\x14\0\0\xd8\x15\0\0\x0d\xb0\0\0\xc8\x0a\0\0\x74\x0b\0\ -\0\xf1\x15\0\0\x12\x70\x01\0\xd8\x0a\0\0\x74\x0b\0\0\xf1\x15\0\0\x10\x70\x01\0\ -\xe0\x0a\0\0\x74\x0b\0\0\x08\x16\0\0\x05\x74\x01\0\x20\x0b\0\0\x4e\x04\0\0\0\0\ -\0\0\0\0\0\0\x28\x0b\0\0\x4e\x04\0\0\x54\x16\0\0\x3e\x90\x02\0\x38\x0b\0\0\x4e\ -\x04\0\0\x54\x16\0\0\x0c\x90\x02\0\x40\x0b\0\0\x4e\x04\0\0\xa1\x16\0\0\x0d\x94\ -\x02\0\x58\x0b\0\0\x03\x05\0\0\xc8\x09\0\0\x18\x84\0\0\x80\x0b\0\0\x4e\x04\0\0\ -\xe3\x16\0\0\x0d\xa4\x02\0\x90\x0b\0\0\x4e\x04\0\0\x2a\x17\0\0\x19\xd8\x02\0\ -\xd0\x0c\0\0\x74\x0b\0\0\x4a\x17\0\0\x24\x98\x01\0\xf8\x0c\0\0\x74\x0b\0\0\xd5\ -\x17\0\0\x39\xc0\x01\0\x18\x0d\0\0\x74\x0b\0\0\xd5\x17\0\0\x2a\xc0\x01\0\x20\ -\x0d\0\0\x74\x0b\0\0\xd5\x17\0\0\x08\xc0\x01\0\x30\x0d\0\0\x74\x0b\0\0\x34\x18\ -\0\0\x19\xf0\x01\0\0\x0f\0\0\x4e\x04\0\0\x5b\x18\0\0\x0d\xa8\x02\0\x10\x0f\0\0\ -\x4e\x04\0\0\0\0\0\0\0\0\0\0\x20\x0f\0\0\x74\x0b\0\0\x9d\x18\0\0\x09\x9c\x01\0\ -\x38\x0f\0\0\x74\x0b\0\0\xe2\x18\0\0\x09\xc4\x01\0\x48\x0f\0\0\x74\x0b\0\0\0\0\ -\0\0\0\0\0\0\x58\x0f\0\0\x4e\x04\0\0\x27\x19\0\0\x09\xec\x02\0\x10\0\0\0\x55\ -\x02\0\0\x02\0\0\0\x08\0\0\0\x24\0\0\0\xac\x02\0\0\0\0\0\0\x10\0\0\0\x24\0\0\0\ -\xd9\x02\0\0\0\0\0\0\x45\x04\0\0\x18\0\0\0\x08\0\0\0\x29\0\0\0\x9f\x04\0\0\0\0\ -\0\0\x10\0\0\0\x29\0\0\0\xd5\x04\0\0\0\0\0\0\x80\0\0\0\x2c\0\0\0\xb8\x06\0\0\0\ -\0\0\0\xf0\0\0\0\x32\0\0\0\x9f\x04\0\0\0\0\0\0\0\x01\0\0\x32\0\0\0\x9f\x04\0\0\ -\0\0\0\0\x38\x01\0\0\x2c\0\0\0\xbf\x08\0\0\0\0\0\0\x48\x01\0\0\x32\0\0\0\x10\ -\x09\0\0\0\0\0\0\x68\x01\0\0\x2c\0\0\0\xd5\x04\0\0\0\0\0\0\xd0\x04\0\0\x29\0\0\ -\0\xd5\x04\0\0\0\0\0\0\xe8\x04\0\0\x29\0\0\0\x9f\x04\0\0\0\0\0\0\xd8\x05\0\0\ -\x29\0\0\0\xd5\x04\0\0\0\0\0\0\xe8\x05\0\0\x29\0\0\0\x9f\x04\0\0\0\0\0\0\xd0\ -\x06\0\0\x29\0\0\0\x9f\x04\0\0\0\0\0\0\x70\x07\0\0\x2c\0\0\0\xbf\x08\0\0\0\0\0\ -\0\x80\x07\0\0\x32\0\0\0\x10\x09\0\0\0\0\0\0\xa0\x07\0\0\x2c\0\0\0\xd5\x04\0\0\ -\0\0\0\0\x40\x09\0\0\x2c\0\0\0\x4c\x14\0\0\0\0\0\0\x48\x09\0\0\x2c\0\0\0\xbf\ -\x08\0\0\0\0\0\0\x70\x09\0\0\x2c\0\0\0\xbf\x08\0\0\0\0\0\0\x90\x09\0\0\x2c\0\0\ -\0\xbf\x08\0\0\0\0\0\0\xb0\x09\0\0\x2c\0\0\0\x4c\x14\0\0\0\0\0\0\xd8\x0a\0\0\ -\x2c\0\0\0\x4c\x14\0\0\0\0\0\0\xe0\x0a\0\0\x2c\0\0\0\xbf\x08\0\0\0\0\0\0\xe8\ -\x0a\0\0\x2c\0\0\0\x4c\x14\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ -\0\0\0\0\0\x1a\x04\0\0\0\0\x03\0\xc0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xf8\x04\0\0\ -\0\0\x04\0\xe0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xa4\x04\0\0\0\0\x04\0\xf0\0\0\0\0\ -\0\0\0\0\0\0\0\0\0\0\0\xde\x03\0\0\0\0\x04\0\x38\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\ -\0\xfb\x02\0\0\0\0\x04\0\xc8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x2f\x02\0\0\0\0\ -\x04\0\xf8\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcd\x01\0\0\0\0\x04\0\x50\x02\0\0\0\ -\0\0\0\0\0\0\0\0\0\0\0\x91\x01\0\0\0\0\x04\0\x68\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\ -\0\x13\x04\0\0\0\0\x04\0\x50\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x6f\x01\0\0\0\0\x04\ -\0\xd0\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x85\x04\0\0\0\0\x04\0\x28\x05\0\0\0\0\0\ -\0\0\0\0\0\0\0\0\0\xb1\x03\0\0\0\0\x04\0\x48\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ -\xce\x02\0\0\0\0\x04\0\x70\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x64\x02\0\0\0\0\x04\ -\0\xa0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x67\x01\0\0\0\0\x04\0\x20\x06\0\0\0\0\0\ -\0\0\0\0\0\0\0\0\0\x30\x03\0\0\0\0\x04\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xd9\ -\x04\0\0\0\0\x04\0\x58\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x7d\x04\0\0\0\0\x04\0\ -\x08\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xa9\x03\0\0\0\0\x04\0\x38\x07\0\0\0\0\0\0\ -\0\0\0\0\0\0\0\0\xc6\x02\0\0\0\0\x04\0\x68\x07\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x02\ -\x02\0\0\0\0\x04\0\x10\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x5f\x01\0\0\0\0\x04\0\ -\x50\x0a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x75\x04\0\0\0\0\x04\0\x80\x0a\0\0\0\0\0\0\ -\0\0\0\0\0\0\0\0\xa1\x03\0\0\0\0\x04\0\xb0\x0a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x3f\ -\x03\0\0\0\0\x04\0\x20\x0b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x5c\x02\0\0\0\0\x04\0\ -\x58\x0b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x4d\x02\0\0\0\0\x04\0\xa8\0\0\0\0\0\0\0\0\ -\0\0\0\0\0\0\0\x6d\x04\0\0\0\0\x04\0\0\x0f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x21\x04\ -\0\0\0\0\x04\0\x10\x0f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x99\x03\0\0\0\0\x04\0\x20\ -\x0f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x37\x03\0\0\0\0\x04\0\x38\x0f\0\0\0\0\0\0\0\0\ -\0\0\0\0\0\0\xbe\x02\0\0\0\0\x04\0\x48\x0f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x54\x02\ -\0\0\0\0\x04\0\x58\x0f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc6\x01\0\0\0\0\x04\0\xd0\0\ -\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x58\x01\0\0\0\0\x04\0\xd8\0\0\0\0\0\0\0\0\0\0\0\0\ -\0\0\0\x51\0\0\0\x01\0\x06\0\x90\x02\0\0\0\0\0\0\x34\0\0\0\0\0\0\0\xb9\x03\0\0\ -\x01\0\x06\0\xc4\x02\0\0\0\0\0\0\x26\0\0\0\0\0\0\0\x47\x03\0\0\x01\0\x06\0\xea\ -\x02\0\0\0\0\0\0\x26\0\0\0\0\0\0\0\xd6\x02\0\0\x01\0\x06\0\x10\x03\0\0\0\0\0\0\ -\x26\0\0\0\0\0\0\0\x6c\x02\0\0\x01\0\x06\0\x36\x03\0\0\0\0\0\0\x19\0\0\0\0\0\0\ -\0\x0a\x02\0\0\x01\0\x06\0\x4f\x03\0\0\0\0\0\0\x18\0\0\0\0\0\0\0\x73\0\0\0\x01\ -\0\x06\0\x80\x02\0\0\0\0\0\0\x10\0\0\0\0\0\0\0\x14\0\0\0\x01\0\x06\0\x67\x03\0\ -\0\0\0\0\0\x2a\0\0\0\0\0\0\0\x3a\0\0\0\x01\0\x06\0\x91\x03\0\0\0\0\0\0\x2d\0\0\ -\0\0\0\0\0\x77\x01\0\0\x01\0\x06\0\xbe\x03\0\0\0\0\0\0\x2d\0\0\0\0\0\0\0\x26\0\ -\0\0\x01\0\x06\0\0\0\0\0\0\0\0\0\x13\0\0\0\0\0\0\0\xc3\x04\0\0\x01\0\x06\0\x13\ -\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\0\x05\0\0\x01\0\x06\0\x8f\0\0\0\0\0\0\0\x47\0\ -\0\0\0\0\0\0\xac\x04\0\0\x01\0\x06\0\xd6\0\0\0\0\0\0\0\x26\0\0\0\0\0\0\0\x40\ -\x04\0\0\x01\0\x06\0\xfc\0\0\0\0\0\0\0\x26\0\0\0\0\0\0\0\xe6\x03\0\0\x01\0\x06\ -\0\x22\x01\0\0\0\0\0\0\x26\0\0\0\0\0\0\0\x6c\x03\0\0\x01\0\x06\0\x48\x01\0\0\0\ -\0\0\0\x1f\0\0\0\0\0\0\0\x03\x03\0\0\x01\0\x06\0\x67\x01\0\0\0\0\0\0\x26\0\0\0\ -\0\0\0\0\x91\x02\0\0\x01\0\x06\0\x8d\x01\0\0\0\0\0\0\x26\0\0\0\0\0\0\0\xd5\x01\ -\0\0\x01\0\x06\0\xb3\x01\0\0\0\0\0\0\x35\0\0\0\0\0\0\0\x99\x01\0\0\x01\0\x06\0\ -\xe8\x01\0\0\0\0\0\0\x26\0\0\0\0\0\0\0\x57\x04\0\0\x01\0\x06\0\x15\0\0\0\0\0\0\ -\0\x02\0\0\0\0\0\0\0\xe1\x04\0\0\x01\0\x06\0\x0e\x02\0\0\0\0\0\0\x29\0\0\0\0\0\ -\0\0\x8d\x04\0\0\x01\0\x06\0\x37\x02\0\0\0\0\0\0\x1f\0\0\0\0\0\0\0\x29\x04\0\0\ -\x01\0\x06\0\x56\x02\0\0\0\0\0\0\x2a\0\0\0\0\0\0\0\xfd\x03\0\0\x01\0\x06\0\x17\ -\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\x83\x03\0\0\x01\0\x06\0\x19\0\0\0\0\0\0\0\x06\ -\0\0\0\0\0\0\0\x1a\x03\0\0\x01\0\x06\0\x1f\0\0\0\0\0\0\0\x17\0\0\0\0\0\0\0\xa8\ -\x02\0\0\x01\0\x06\0\x36\0\0\0\0\0\0\0\x02\0\0\0\0\0\0\0\x37\x02\0\0\x01\0\x06\ -\0\x38\0\0\0\0\0\0\0\x36\0\0\0\0\0\0\0\xec\x01\0\0\x01\0\x06\0\x6e\0\0\0\0\0\0\ -\0\x02\0\0\0\0\0\0\0\xb0\x01\0\0\x01\0\x06\0\x70\0\0\0\0\0\0\0\x1f\0\0\0\0\0\0\ -\0\0\0\0\0\x03\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x03\0\0\0\ -\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x03\0\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ -\0\0\0\0\0\x03\0\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x50\x01\0\0\x11\0\x05\0\ -\0\0\0\0\0\0\0\0\x0d\0\0\0\0\0\0\0\x91\0\0\0\x11\0\x07\0\x10\0\0\0\0\0\0\0\x20\ -\0\0\0\0\0\0\0\xf9\0\0\0\x12\0\x02\0\0\0\0\0\0\0\0\0\x18\0\0\0\0\0\0\0\xe5\0\0\ -\0\x12\0\x03\0\0\0\0\0\0\0\0\0\xd0\0\0\0\0\0\0\0\x99\0\0\0\x11\0\x07\0\0\0\0\0\ -\0\0\0\0\x10\0\0\0\0\0\0\0\xbc\0\0\0\x12\0\x04\0\0\0\0\0\0\0\0\0\x98\x0f\0\0\0\ -\0\0\0\x70\0\0\0\0\0\0\0\x01\0\0\0\x49\0\0\0\x90\0\0\0\0\0\0\0\x01\0\0\0\x47\0\ -\0\0\x30\0\0\0\0\0\0\0\x01\0\0\0\x47\0\0\0\x68\0\0\0\0\0\0\0\x01\0\0\0\x47\0\0\ -\0\x90\0\0\0\0\0\0\0\x01\0\0\0\x47\0\0\0\xc0\0\0\0\0\0\0\0\x01\0\0\0\x47\0\0\0\ -\x10\x01\0\0\0\0\0\0\x01\0\0\0\x47\0\0\0\xa0\x01\0\0\0\0\0\0\x01\0\0\0\x47\0\0\ -\0\xe0\x01\0\0\0\0\0\0\x01\0\0\0\x47\0\0\0\0\x02\0\0\0\0\0\0\x01\0\0\0\x47\0\0\ -\0\x50\x02\0\0\0\0\0\0\x01\0\0\0\x47\0\0\0\xe8\x02\0\0\0\0\0\0\x01\0\0\0\x47\0\ -\0\0\x80\x04\0\0\0\0\0\0\x01\0\0\0\x47\0\0\0\x10\x05\0\0\0\0\0\0\x01\0\0\0\x47\ -\0\0\0\x30\x05\0\0\0\0\0\0\x01\0\0\0\x47\0\0\0\x60\x05\0\0\0\0\0\0\x01\0\0\0\ -\x47\0\0\0\xa0\x05\0\0\0\0\0\0\x01\0\0\0\x47\0\0\0\x08\x06\0\0\0\0\0\0\x01\0\0\ -\0\x47\0\0\0\x20\x06\0\0\0\0\0\0\x01\0\0\0\x47\0\0\0\x80\x06\0\0\0\0\0\0\x01\0\ -\0\0\x47\0\0\0\xa0\x06\0\0\0\0\0\0\x01\0\0\0\x47\0\0\0\xd8\x06\0\0\0\0\0\0\x01\ -\0\0\0\x47\0\0\0\x20\x07\0\0\0\0\0\0\x01\0\0\0\x47\0\0\0\x50\x07\0\0\0\0\0\0\ -\x01\0\0\0\x47\0\0\0\xf0\x07\0\0\0\0\0\0\x01\0\0\0\x47\0\0\0\x50\x09\0\0\0\0\0\ -\0\x01\0\0\0\x47\0\0\0\xb8\x09\0\0\0\0\0\0\x01\0\0\0\x47\0\0\0\xf0\x0a\0\0\0\0\ -\0\0\x01\0\0\0\x47\0\0\0\x40\x0b\0\0\0\0\0\0\x01\0\0\0\x47\0\0\0\0\x0f\0\0\0\0\ -\0\0\x01\0\0\0\x47\0\0\0\x20\x0f\0\0\0\0\0\0\x01\0\0\0\x47\0\0\0\x38\x0f\0\0\0\ -\0\0\0\x01\0\0\0\x47\0\0\0\x58\x0f\0\0\0\0\0\0\x01\0\0\0\x47\0\0\0\x1c\x0a\0\0\ -\0\0\0\0\0\0\0\0\x4c\0\0\0\x28\x0a\0\0\0\0\0\0\0\0\0\0\x49\0\0\0\x40\x0a\0\0\0\ -\0\0\0\x0a\0\0\0\x47\0\0\0\x4c\x0a\0\0\0\0\0\0\x0a\0\0\0\x47\0\0\0\x58\x0a\0\0\ -\0\0\0\0\x0a\0\0\0\x47\0\0\0\x64\x0a\0\0\0\0\0\0\x0a\0\0\0\x47\0\0\0\x70\x0a\0\ -\0\0\0\0\0\x0a\0\0\0\x47\0\0\0\x7c\x0a\0\0\0\0\0\0\x0a\0\0\0\x47\0\0\0\x88\x0a\ -\0\0\0\0\0\0\x0a\0\0\0\x47\0\0\0\x94\x0a\0\0\0\0\0\0\x0a\0\0\0\x47\0\0\0\xa0\ -\x0a\0\0\0\0\0\0\x0a\0\0\0\x47\0\0\0\xac\x0a\0\0\0\0\0\0\x0a\0\0\0\x47\0\0\0\ -\xb8\x0a\0\0\0\0\0\0\x0a\0\0\0\x47\0\0\0\xc4\x0a\0\0\0\0\0\0\x0a\0\0\0\x47\0\0\ -\0\xd0\x0a\0\0\0\0\0\0\x0a\0\0\0\x47\0\0\0\xdc\x0a\0\0\0\0\0\0\x0a\0\0\0\x47\0\ -\0\0\xe8\x0a\0\0\0\0\0\0\x0a\0\0\0\x47\0\0\0\xf4\x0a\0\0\0\0\0\0\x0a\0\0\0\x47\ -\0\0\0\0\x0b\0\0\0\0\0\0\x0a\0\0\0\x47\0\0\0\x0c\x0b\0\0\0\0\0\0\x0a\0\0\0\x47\ -\0\0\0\x18\x0b\0\0\0\0\0\0\x0a\0\0\0\x47\0\0\0\x24\x0b\0\0\0\0\0\0\x0a\0\0\0\ -\x47\0\0\0\x30\x0b\0\0\0\0\0\0\x0a\0\0\0\x47\0\0\0\x3c\x0b\0\0\0\0\0\0\x0a\0\0\ -\0\x47\0\0\0\x48\x0b\0\0\0\0\0\0\x0a\0\0\0\x47\0\0\0\x54\x0b\0\0\0\0\0\0\x0a\0\ -\0\0\x47\0\0\0\x60\x0b\0\0\0\0\0\0\x0a\0\0\0\x47\0\0\0\x6c\x0b\0\0\0\0\0\0\x0a\ -\0\0\0\x47\0\0\0\x78\x0b\0\0\0\0\0\0\x0a\0\0\0\x47\0\0\0\x84\x0b\0\0\0\0\0\0\ -\x0a\0\0\0\x47\0\0\0\x90\x0b\0\0\0\0\0\0\x0a\0\0\0\x47\0\0\0\x9c\x0b\0\0\0\0\0\ -\0\x0a\0\0\0\x47\0\0\0\xa8\x0b\0\0\0\0\0\0\x0a\0\0\0\x47\0\0\0\xb4\x0b\0\0\0\0\ -\0\0\x0a\0\0\0\x47\0\0\0\xcc\x0b\0\0\0\0\0\0\0\0\0\0\x48\0\0\0\x2c\0\0\0\0\0\0\ -\0\0\0\0\0\x44\0\0\0\x3c\0\0\0\0\0\0\0\0\0\0\0\x45\0\0\0\x4c\0\0\0\0\0\0\0\0\0\ -\0\0\x46\0\0\0\x60\0\0\0\0\0\0\0\0\0\0\0\x44\0\0\0\x70\0\0\0\0\0\0\0\0\0\0\0\ -\x44\0\0\0\x88\0\0\0\0\0\0\0\0\0\0\0\x45\0\0\0\x98\0\0\0\0\0\0\0\0\0\0\0\x45\0\ -\0\0\xa8\0\0\0\0\0\0\0\0\0\0\0\x45\0\0\0\xb8\0\0\0\0\0\0\0\0\0\0\0\x45\0\0\0\ -\xc8\0\0\0\0\0\0\0\0\0\0\0\x45\0\0\0\xd8\0\0\0\0\0\0\0\0\0\0\0\x45\0\0\0\xe8\0\ -\0\0\0\0\0\0\0\0\0\0\x45\0\0\0\xf8\0\0\0\0\0\0\0\0\0\0\0\x45\0\0\0\x08\x01\0\0\ -\0\0\0\0\0\0\0\0\x45\0\0\0\x18\x01\0\0\0\0\0\0\0\0\0\0\x45\0\0\0\x28\x01\0\0\0\ -\0\0\0\0\0\0\0\x45\0\0\0\x38\x01\0\0\0\0\0\0\0\0\0\0\x45\0\0\0\x50\x01\0\0\0\0\ -\0\0\0\0\0\0\x46\0\0\0\x60\x01\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x70\x01\0\0\0\0\0\ -\0\0\0\0\0\x46\0\0\0\x80\x01\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x90\x01\0\0\0\0\0\0\ -\0\0\0\0\x46\0\0\0\xa0\x01\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xb0\x01\0\0\0\0\0\0\0\ -\0\0\0\x46\0\0\0\xc0\x01\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xd0\x01\0\0\0\0\0\0\0\0\ -\0\0\x46\0\0\0\xe0\x01\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xf0\x01\0\0\0\0\0\0\0\0\0\ -\0\x46\0\0\0\0\x02\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x10\x02\0\0\0\0\0\0\0\0\0\0\ -\x46\0\0\0\x20\x02\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x30\x02\0\0\0\0\0\0\0\0\0\0\ -\x46\0\0\0\x40\x02\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x50\x02\0\0\0\0\0\0\0\0\0\0\ -\x46\0\0\0\x60\x02\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x70\x02\0\0\0\0\0\0\0\0\0\0\ -\x46\0\0\0\x80\x02\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x90\x02\0\0\0\0\0\0\0\0\0\0\ -\x46\0\0\0\xa0\x02\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xb0\x02\0\0\0\0\0\0\0\0\0\0\ -\x46\0\0\0\xc0\x02\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xd0\x02\0\0\0\0\0\0\0\0\0\0\ -\x46\0\0\0\xe0\x02\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xf0\x02\0\0\0\0\0\0\0\0\0\0\ -\x46\0\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x10\x03\0\0\0\0\0\0\0\0\0\0\x46\ -\0\0\0\x20\x03\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x30\x03\0\0\0\0\0\0\0\0\0\0\x46\0\ -\0\0\x40\x03\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x50\x03\0\0\0\0\0\0\0\0\0\0\x46\0\0\ -\0\x60\x03\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x70\x03\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\ -\x80\x03\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x90\x03\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\ -\xa0\x03\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xb0\x03\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\ -\xc0\x03\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xd0\x03\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\ -\xe0\x03\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xf0\x03\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\0\ -\x04\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x10\x04\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x20\ -\x04\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x30\x04\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x40\ -\x04\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x50\x04\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x60\ -\x04\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x70\x04\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x80\ -\x04\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x90\x04\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xa0\ -\x04\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xb0\x04\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xc0\ -\x04\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xd0\x04\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xe0\ -\x04\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xf0\x04\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\0\x05\ -\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x10\x05\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x20\x05\0\ -\0\0\0\0\0\0\0\0\0\x46\0\0\0\x30\x05\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x40\x05\0\0\ -\0\0\0\0\0\0\0\0\x46\0\0\0\x50\x05\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x60\x05\0\0\0\ -\0\0\0\0\0\0\0\x46\0\0\0\x70\x05\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x80\x05\0\0\0\0\ -\0\0\0\0\0\0\x46\0\0\0\x90\x05\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xa0\x05\0\0\0\0\0\ -\0\0\0\0\0\x46\0\0\0\xb0\x05\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xc0\x05\0\0\0\0\0\0\ -\0\0\0\0\x46\0\0\0\xd0\x05\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xe0\x05\0\0\0\0\0\0\0\ -\0\0\0\x46\0\0\0\xf0\x05\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\0\x06\0\0\0\0\0\0\0\0\0\ -\0\x46\0\0\0\x10\x06\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x20\x06\0\0\0\0\0\0\0\0\0\0\ -\x46\0\0\0\x30\x06\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x40\x06\0\0\0\0\0\0\0\0\0\0\ -\x46\0\0\0\x50\x06\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x60\x06\0\0\0\0\0\0\0\0\0\0\ -\x46\0\0\0\x70\x06\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x80\x06\0\0\0\0\0\0\0\0\0\0\ -\x46\0\0\0\x90\x06\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xa0\x06\0\0\0\0\0\0\0\0\0\0\ -\x46\0\0\0\xb0\x06\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xc0\x06\0\0\0\0\0\0\0\0\0\0\ -\x46\0\0\0\xd0\x06\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xe0\x06\0\0\0\0\0\0\0\0\0\0\ -\x46\0\0\0\xf0\x06\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\0\x07\0\0\0\0\0\0\0\0\0\0\x46\ -\0\0\0\x10\x07\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x20\x07\0\0\0\0\0\0\0\0\0\0\x46\0\ -\0\0\x30\x07\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x40\x07\0\0\0\0\0\0\0\0\0\0\x46\0\0\ -\0\x50\x07\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x60\x07\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\ -\x70\x07\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x80\x07\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\ -\x90\x07\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xa0\x07\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\ -\xb0\x07\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xc0\x07\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\ -\xd0\x07\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xe0\x07\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\ -\xf0\x07\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\0\x08\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x10\ -\x08\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x20\x08\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x30\ -\x08\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x40\x08\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x50\ -\x08\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x60\x08\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x70\ -\x08\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x80\x08\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x90\ -\x08\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xa0\x08\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xb0\ -\x08\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xc0\x08\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xd0\ -\x08\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xe0\x08\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xf0\ -\x08\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\0\x09\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x10\x09\ -\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x20\x09\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x30\x09\0\ -\0\0\0\0\0\0\0\0\0\x46\0\0\0\x40\x09\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x50\x09\0\0\ -\0\0\0\0\0\0\0\0\x46\0\0\0\x60\x09\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x70\x09\0\0\0\ -\0\0\0\0\0\0\0\x46\0\0\0\x80\x09\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x90\x09\0\0\0\0\ -\0\0\0\0\0\0\x46\0\0\0\xa0\x09\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xb0\x09\0\0\0\0\0\ -\0\0\0\0\0\x46\0\0\0\xc0\x09\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xd0\x09\0\0\0\0\0\0\ -\0\0\0\0\x46\0\0\0\xe0\x09\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xfc\x09\0\0\0\0\0\0\0\ -\0\0\0\x45\0\0\0\x0c\x0a\0\0\0\0\0\0\0\0\0\0\x45\0\0\0\x24\x0a\0\0\0\0\0\0\0\0\ -\0\0\x46\0\0\0\x34\x0a\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x44\x0a\0\0\0\0\0\0\0\0\0\ -\0\x46\0\0\0\x54\x0a\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x64\x0a\0\0\0\0\0\0\0\0\0\0\ -\x46\0\0\0\x74\x0a\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x84\x0a\0\0\0\0\0\0\0\0\0\0\ -\x46\0\0\0\x94\x0a\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xa4\x0a\0\0\0\0\0\0\0\0\0\0\ -\x46\0\0\0\xb4\x0a\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xc4\x0a\0\0\0\0\0\0\0\0\0\0\ -\x46\0\0\0\xd4\x0a\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\xe4\x0a\0\0\0\0\0\0\0\0\0\0\ -\x46\0\0\0\xf4\x0a\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x04\x0b\0\0\0\0\0\0\0\0\0\0\ -\x46\0\0\0\x14\x0b\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x24\x0b\0\0\0\0\0\0\0\0\0\0\ -\x46\0\0\0\x34\x0b\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x44\x0b\0\0\0\0\0\0\0\0\0\0\ -\x46\0\0\0\x54\x0b\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x64\x0b\0\0\0\0\0\0\0\0\0\0\ -\x46\0\0\0\x74\x0b\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x84\x0b\0\0\0\0\0\0\0\0\0\0\ -\x46\0\0\0\x94\x0b\0\0\0\0\0\0\0\0\0\0\x46\0\0\0\x51\x52\x54\x4f\x2f\x30\x3a\ -\x3e\x3f\x40\x41\x42\x43\x44\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3b\x3c\x3d\ -\x53\x50\x2b\x25\x26\x27\x28\x29\x2a\x2c\x2d\x2e\0\x2e\x74\x65\x78\x74\0\x2e\ -\x72\x65\x6c\x2e\x42\x54\x46\x2e\x65\x78\x74\0\x69\x70\x76\x34\x5f\x63\x73\x75\ -\x6d\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\ -\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\0\x6d\x6f\x64\x69\x66\x79\x5f\x70\x61\x79\ -\x6c\x6f\x61\x64\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\0\x65\x78\x70\x61\x6e\x64\x5f\ -\x74\x63\x70\x5f\x70\x61\x63\x6b\x65\x74\x5f\x70\x61\x79\x6c\x6f\x61\x64\x2e\ -\x5f\x5f\x5f\x5f\x66\x6d\x74\0\x68\x61\x6e\x64\x6c\x65\x5f\x73\x79\x73\x5f\x72\ -\x65\x61\x64\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\0\x2e\x6d\x61\x70\x73\0\x66\x73\ -\x5f\x6f\x70\x65\x6e\0\x72\x62\x5f\x63\x6f\x6d\x6d\0\x2e\x72\x65\x6c\x78\x64\ -\x70\x5f\x70\x72\x6f\x67\0\x2e\x6c\x6c\x76\x6d\x5f\x61\x64\x64\x72\x73\x69\x67\ -\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\0\x6c\x69\x63\x65\x6e\x73\x65\0\ -\x2e\x72\x65\x6c\x6b\x70\x72\x6f\x62\x65\x2f\x6b\x73\x79\x73\x5f\x72\x65\x61\ -\x64\0\x6b\x70\x72\x6f\x62\x65\x5f\x5f\x36\x34\x5f\x73\x79\x73\x5f\x72\x65\x61\ -\x64\0\x68\x61\x6e\x64\x6c\x65\x5f\x73\x63\x68\x65\x64\x5f\x70\x72\x6f\x63\x65\ -\x73\x73\x5f\x65\x78\x65\x63\0\x74\x70\x2f\x73\x63\x68\x65\x64\x2f\x73\x63\x68\ -\x65\x64\x5f\x70\x72\x6f\x63\x65\x73\x73\x5f\x65\x78\x65\x63\0\x2e\x73\x74\x72\ -\x74\x61\x62\0\x2e\x73\x79\x6d\x74\x61\x62\0\x2e\x72\x6f\x64\x61\x74\x61\0\x2e\ -\x72\x65\x6c\x2e\x42\x54\x46\0\x4c\x49\x43\x45\x4e\x53\x45\0\x4c\x42\x42\x32\ -\x5f\x39\0\x4c\x42\x42\x32\x5f\x34\x39\0\x4c\x42\x42\x32\x5f\x33\x39\0\x4c\x42\ -\x42\x32\x5f\x32\x39\0\x6d\x6f\x64\x69\x66\x79\x5f\x70\x61\x79\x6c\x6f\x61\x64\ -\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x39\0\x4c\x42\x42\x32\x5f\x31\x39\0\ -\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\ -\x2e\x31\x39\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\ -\x66\x6d\x74\x2e\x39\0\x4c\x42\x42\x32\x5f\x38\0\x4c\x42\x42\x32\x5f\x31\x38\0\ -\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\ -\x2e\x31\x38\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\ -\x66\x6d\x74\x2e\x38\0\x4c\x42\x42\x32\x5f\x34\x37\0\x65\x78\x70\x61\x6e\x64\ -\x5f\x74\x63\x70\x5f\x70\x61\x63\x6b\x65\x74\x5f\x70\x61\x79\x6c\x6f\x61\x64\ -\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x37\0\x4c\x42\x42\x32\x5f\x31\x37\0\ -\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\ -\x2e\x37\0\x4c\x42\x42\x32\x5f\x36\0\x4c\x42\x42\x32\x5f\x36\x36\0\x4c\x42\x42\ -\x32\x5f\x35\x36\0\x4c\x42\x42\x32\x5f\x33\x36\0\x65\x78\x70\x61\x6e\x64\x5f\ -\x74\x63\x70\x5f\x70\x61\x63\x6b\x65\x74\x5f\x70\x61\x79\x6c\x6f\x61\x64\x2e\ -\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x36\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\ -\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x31\x36\0\x78\x64\x70\x5f\x72\x65\ -\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x36\0\x4c\x42\x42\x32\ -\x5f\x36\x35\0\x4c\x42\x42\x32\x5f\x34\x35\0\x4c\x42\x42\x32\x5f\x33\x35\0\x65\ -\x78\x70\x61\x6e\x64\x5f\x74\x63\x70\x5f\x70\x61\x63\x6b\x65\x74\x5f\x70\x61\ -\x79\x6c\x6f\x61\x64\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x35\0\x4c\x42\x42\ -\x32\x5f\x31\x35\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\ -\x5f\x66\x6d\x74\x2e\x31\x35\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\ -\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x35\0\x4c\x42\x42\x32\x5f\x34\0\x4c\x42\x42\ -\x32\x5f\x36\x34\0\x4c\x42\x42\x32\x5f\x35\x34\0\x65\x78\x70\x61\x6e\x64\x5f\ -\x74\x63\x70\x5f\x70\x61\x63\x6b\x65\x74\x5f\x70\x61\x79\x6c\x6f\x61\x64\x2e\ -\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x32\x34\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\ -\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x31\x34\0\x78\x64\x70\x5f\x72\x65\ -\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x34\0\x4c\x42\x42\x32\ -\x5f\x36\x33\0\x4c\x42\x42\x32\x5f\x35\x33\0\x4c\x42\x42\x32\x5f\x34\x33\0\x4c\ -\x42\x42\x32\x5f\x33\x33\0\x65\x78\x70\x61\x6e\x64\x5f\x74\x63\x70\x5f\x70\x61\ -\x63\x6b\x65\x74\x5f\x70\x61\x79\x6c\x6f\x61\x64\x2e\x5f\x5f\x5f\x5f\x66\x6d\ -\x74\x2e\x32\x33\0\x4c\x42\x42\x32\x5f\x31\x33\0\x78\x64\x70\x5f\x72\x65\x63\ -\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x31\x33\0\x78\x64\x70\x5f\ -\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x33\0\x4c\x42\ -\x42\x32\x5f\x32\0\x4c\x42\x42\x31\x5f\x32\0\x4c\x42\x42\x32\x5f\x36\x32\0\x78\ -\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\ -\x32\x32\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\ -\x6d\x74\x2e\x31\x32\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\ -\x5f\x5f\x66\x6d\x74\x2e\x32\0\x4c\x42\x42\x32\x5f\x36\x31\0\x4c\x42\x42\x32\ -\x5f\x35\x31\0\x4c\x42\x42\x32\x5f\x34\x31\0\x4c\x42\x42\x32\x5f\x33\x31\0\x78\ -\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\ -\x32\x31\0\x4c\x42\x42\x32\x5f\x31\x31\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\ -\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x31\x31\0\x78\x64\x70\x5f\x72\x65\ -\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x31\0\x4c\x42\x42\x32\ -\x5f\x34\x30\0\x78\x64\x70\x5f\x72\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\ -\x66\x6d\x74\x2e\x32\x30\0\x4c\x42\x42\x32\x5f\x31\x30\0\x78\x64\x70\x5f\x72\ -\x65\x63\x65\x69\x76\x65\x2e\x5f\x5f\x5f\x5f\x66\x6d\x74\x2e\x31\x30\0\0\0\0\0\ -\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ -\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\x01\0\0\0\x06\0\0\0\ -\0\0\0\0\0\0\0\0\0\0\0\0\x40\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\ -\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x13\x01\0\0\x01\0\0\0\x06\0\0\0\0\0\0\0\0\0\0\0\ -\0\0\0\0\x40\0\0\0\0\0\0\0\x18\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x08\0\0\0\0\0\0\0\ -\0\0\0\0\0\0\0\0\xd4\0\0\0\x01\0\0\0\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x58\0\0\ -\0\0\0\0\0\xd0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ -\xa5\0\0\0\x01\0\0\0\x06\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x28\x01\0\0\0\0\0\0\x98\ -\x0f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\0\0\0\ -\x01\0\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc0\x10\0\0\0\0\0\0\x0d\0\0\0\0\0\ -\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x3f\x01\0\0\x01\0\0\0\ -\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xcd\x10\0\0\0\0\0\0\xeb\x03\0\0\0\0\0\0\0\0\ -\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x8b\0\0\0\x01\0\0\0\x03\0\0\0\0\ -\0\0\0\0\0\0\0\0\0\0\0\xb8\x14\0\0\0\0\0\0\x30\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ -\x08\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x4b\x01\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ -\0\0\0\0\0\xe8\x14\0\0\0\0\0\0\xab\x28\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\ -\0\0\0\0\0\0\0\0\0\0\0\x0b\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x93\ -\x3d\0\0\0\0\0\0\xa4\x0b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\ -\0\0\0\0\x37\x01\0\0\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x38\x49\0\0\0\0\ -\0\0\x50\x07\0\0\0\0\0\0\x10\0\0\0\x48\0\0\0\x08\0\0\0\0\0\0\0\x18\0\0\0\0\0\0\ -\0\xd0\0\0\0\x09\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x88\x50\0\0\0\0\0\0\x20\ -\0\0\0\0\0\0\0\x0a\0\0\0\x03\0\0\0\x08\0\0\0\0\0\0\0\x10\0\0\0\0\0\0\0\xa1\0\0\ -\0\x09\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xa8\x50\0\0\0\0\0\0\xf0\x01\0\0\0\ -\0\0\0\x0a\0\0\0\x04\0\0\0\x08\0\0\0\0\0\0\0\x10\0\0\0\0\0\0\0\x47\x01\0\0\x09\ -\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x98\x52\0\0\0\0\0\0\x30\x02\0\0\0\0\0\0\ -\x0a\0\0\0\x08\0\0\0\x08\0\0\0\0\0\0\0\x10\0\0\0\0\0\0\0\x07\0\0\0\x09\0\0\0\0\ -\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xc8\x54\0\0\0\0\0\0\x50\x0b\0\0\0\0\0\0\x0a\0\0\ -\0\x09\0\0\0\x08\0\0\0\0\0\0\0\x10\0\0\0\0\0\0\0\xae\0\0\0\x03\x4c\xff\x6f\0\0\ -\0\x80\0\0\0\0\0\0\0\0\0\0\0\0\x18\x60\0\0\0\0\0\0\x26\0\0\0\0\0\0\0\0\0\0\0\0\ -\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x2f\x01\0\0\x03\0\0\0\0\0\0\0\0\0\0\0\ -\0\0\0\0\0\0\0\0\x3e\x60\0\0\0\0\0\0\x17\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\ -\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; - - return 0; -err: - bpf_object__destroy_skeleton(s); - return -1; -} - -#endif /* __XDP_FILTER_BPF_SKEL_H__ */ diff --git a/src/bin/xdp_filter b/src/bin/xdp_filter deleted file mode 100755 index eb630a2..0000000 Binary files a/src/bin/xdp_filter and /dev/null differ diff --git a/src/ebpf/include/bpf/fs.h b/src/ebpf/include/bpf/fs.h index b2bab33..d8a46e2 100644 --- a/src/ebpf/include/bpf/fs.h +++ b/src/ebpf/include/bpf/fs.h @@ -29,12 +29,16 @@ static __always_inline int handle_sys_read(struct pt_regs *ctx, int fd, char* bu .pid = pid }; bpf_map_update_elem(&fs_open, &pid_tgid, &data, BPF_ANY); - bpf_printk("PID: %u, FS:%u\n", pid, fd); + //bpf_printk("PID: %u, FS:%u\n", pid, fd); return 0; } +/** + * @brief Receives read event and stores the parameters into internal map + * + */ SEC("kprobe/ksys_read") -int kprobe__64_sys_read(struct pt_regs *ctx) { +int kprobe_ksys_read(struct pt_regs *ctx) { struct pt_regs *rctx = ctx; if (!rctx) return 0; int fd = (int) PT_REGS_PARM1(ctx); @@ -42,4 +46,31 @@ int kprobe__64_sys_read(struct pt_regs *ctx) { return handle_sys_read(ctx, fd, buf); } +/** + * @brief Called AFTER the ksys_read call, checks the internal + * map for the tgid+pid used and extracts the parameters. + * Uses the user-space buffer reference for overwritting the returned + * values. + * + */ +SEC("kretprobe/vfs_read") +int kretprobe_vfs_read(struct pt_regs *ctx){ + __u64 pid_tgid = bpf_get_current_pid_tgid(); + + struct fs_open_data *data = (struct fs_open_data*) bpf_map_lookup_elem(&fs_open, &pid_tgid); + if (data!=NULL){ + //Not found + return -1; + } + + //Overwritting a byte of the buffer + char *buf = data->buf; + char *msg = "OOOOOOOOOOOOO"; + bpf_printk("Overwritting at pid %u\n", data->pid); + //int err = bpf_probe_write_user((void*)buf, (void*)msg, (__u32)1); + + + return 0; +} + #endif \ No newline at end of file diff --git a/src/user/include/modules/fs.h b/src/user/include/modules/fs.h index d401b30..441ab43 100644 --- a/src/user/include/modules/fs.h +++ b/src/user/include/modules/fs.h @@ -8,18 +8,30 @@ #include "xdp_filter.skel.h" //Connections -int attach_kprobe__64_sys_read(struct xdp_filter_bpf *skel){ - skel->links.kprobe__64_sys_read = bpf_program__attach(skel->progs.kprobe__64_sys_read); - return libbpf_get_error(skel->links.kprobe__64_sys_read); +int attach_kprobe_ksys_read(struct xdp_filter_bpf *skel){ + skel->links.kprobe_ksys_read = bpf_program__attach(skel->progs.kprobe_ksys_read); + return libbpf_get_error(skel->links.kprobe_ksys_read); +} +int attach_kretprobe_vfs_read(struct xdp_filter_bpf *skel){ + skel->links.kretprobe_vfs_read = bpf_program__attach(skel->progs.kretprobe_vfs_read); + return libbpf_get_error(skel->links.kretprobe_vfs_read); } int attach_fs_all(struct xdp_filter_bpf *skel){ - return attach_kprobe__64_sys_read(skel); + return attach_kprobe_ksys_read(skel) || attach_kretprobe_vfs_read(skel); } -int detach_kprobe__64_sys_read(struct xdp_filter_bpf *skel){ - int err = detach_link_generic(skel->links.kprobe__64_sys_read); +int detach_kprobe_ksys_read(struct xdp_filter_bpf *skel){ + int err = detach_link_generic(skel->links.kprobe_ksys_read); + if(err<0){ + fprintf(stderr, "Failed to detach fs link\n"); + return -1; + } + return 0; +} +int detach_kretprobe_vfs_read(struct xdp_filter_bpf *skel){ + int err = detach_link_generic(skel->links.kretprobe_vfs_read); if(err<0){ fprintf(stderr, "Failed to detach fs link\n"); return -1; @@ -28,7 +40,7 @@ int detach_kprobe__64_sys_read(struct xdp_filter_bpf *skel){ } int detach_fs_all(struct xdp_filter_bpf *skel){ - return detach_kprobe__64_sys_read(skel); + return detach_kprobe_ksys_read(skel) || detach_kretprobe_vfs_read(skel); } #endif \ No newline at end of file diff --git a/src/user/include/modules/module_manager.c b/src/user/include/modules/module_manager.c index 50daf7e..57ac519 100644 --- a/src/user/include/modules/module_manager.c +++ b/src/user/include/modules/module_manager.c @@ -14,8 +14,8 @@ module_config_t module_config = { }, .fs_module = { .all = ON, - .kprobe__64_compat_sys_read = OFF, - .kprobe__64_sys_read = OFF + .kprobe_ksys_read = OFF, + .kretprobe_vfs_read = OFF } }; @@ -26,7 +26,8 @@ module_config_attr_t module_config_attr = { .ifindex = -1, .flags = -1 }, - .sched_module = {} + .sched_module = {}, + .fs_module = {} }; @@ -56,7 +57,8 @@ int setup_all_modules(){ if(config.fs_module.all == ON){ ret = attach_fs_all(attr.skel); }else{ - if(config.fs_module.kprobe__64_sys_read == ON) ret = attach_kprobe__64_sys_read(attr.skel); + if(config.fs_module.kprobe_ksys_read == ON) ret = attach_kprobe_ksys_read(attr.skel); + if(config.fs_module.kretprobe_vfs_read == ON) ret = attach_kretprobe_vfs_read(attr.skel); } if(ret!=0) return -1; diff --git a/src/user/include/modules/module_manager.h b/src/user/include/modules/module_manager.h index e7a7073..ded4c86 100644 --- a/src/user/include/modules/module_manager.h +++ b/src/user/include/modules/module_manager.h @@ -25,8 +25,8 @@ typedef struct module_config_t{ struct fs_module { char all; - char kprobe__64_compat_sys_read; - char kprobe__64_sys_read; + char kprobe_ksys_read; + char kretprobe_vfs_read; }fs_module; } module_config_t;