Coverage Report

Created: 2023-06-07 06:47

/src/janet/build/c/janet.c
Line
Count
Source (jump to first uncovered line)
1
/* Amalgamated build - DO NOT EDIT */
2
/* Generated from janet version 1.28.0-dev-8c819b1f */
3
#define JANET_BUILD "8c819b1f"
4
#define JANET_AMALG
5
6
/* src/core/features.h */
7
#line 0 "src/core/features.h"
8
9
/*
10
* Copyright (c) 2023 Calvin Rose
11
*
12
* Permission is hereby granted, free of charge, to any person obtaining a copy
13
* of this software and associated documentation files (the "Software"), to
14
* deal in the Software without restriction, including without limitation the
15
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
16
* sell copies of the Software, and to permit persons to whom the Software is
17
* furnished to do so, subject to the following conditions:
18
*
19
* The above copyright notice and this permission notice shall be included in
20
* all copies or substantial portions of the Software.
21
*
22
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
27
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
28
* IN THE SOFTWARE.
29
*/
30
31
/* Feature test macros */
32
33
#ifndef JANET_FEATURES_H_defined
34
#define JANET_FEATURES_H_defined
35
36
#if defined(__NetBSD__) || defined(__APPLE__) || defined(__OpenBSD__) \
37
    || defined(__bsdi__) || defined(__DragonFly__) || defined(__FreeBSD__)
38
/* Use BSD source on any BSD systems, include OSX */
39
# define _BSD_SOURCE
40
# define _POSIX_C_SOURCE 200809L
41
#else
42
/* Use POSIX feature flags */
43
# ifndef _POSIX_C_SOURCE
44
# define _POSIX_C_SOURCE 200809L
45
# endif
46
#endif
47
48
#if defined(__APPLE__)
49
#define _DARWIN_C_SOURCE
50
#endif
51
52
/* Needed for sched.h for cpu count */
53
#ifdef __linux__
54
#define _GNU_SOURCE
55
#endif
56
57
#if defined(WIN32) || defined(_WIN32)
58
#define WIN32_LEAN_AND_MEAN
59
#endif
60
61
/* needed for inet_pton and InitializeSRWLock */
62
#ifdef __MINGW32__
63
#define _WIN32_WINNT _WIN32_WINNT_VISTA
64
#endif
65
66
/* Needed for realpath on linux, as well as pthread rwlocks. */
67
#ifndef _XOPEN_SOURCE
68
#define _XOPEN_SOURCE 600
69
#endif
70
#if _XOPEN_SOURCE < 600
71
#undef _XOPEN_SOURCE
72
#define _XOPEN_SOURCE 600
73
#endif
74
75
/* Needed for timegm and other extensions when building with -std=c99.
76
 * It also defines realpath, etc, which would normally require
77
 * _XOPEN_SOURCE >= 500. */
78
#if !defined(_NETBSD_SOURCE) && defined(__NetBSD__)
79
#define _NETBSD_SOURCE
80
#endif
81
82
/* Needed for several things when building with -std=c99. */
83
#if !__BSD_VISIBLE && (defined(__DragonFly__) || defined(__FreeBSD__))
84
#define __BSD_VISIBLE 1
85
#endif
86
87
#endif
88
89
#include "janet.h"
90
91
/* src/core/state.h */
92
#line 0 "src/core/state.h"
93
94
/*
95
* Copyright (c) 2023 Calvin Rose
96
*
97
* Permission is hereby granted, free of charge, to any person obtaining a copy
98
* of this software and associated documentation files (the "Software"), to
99
* deal in the Software without restriction, including without limitation the
100
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
101
* sell copies of the Software, and to permit persons to whom the Software is
102
* furnished to do so, subject to the following conditions:
103
*
104
* The above copyright notice and this permission notice shall be included in
105
* all copies or substantial portions of the Software.
106
*
107
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
108
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
109
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
110
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
111
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
112
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
113
* IN THE SOFTWARE.
114
*/
115
116
#ifndef JANET_STATE_H_defined
117
#define JANET_STATE_H_defined
118
119
#include <janet.h>
120
#include <stdint.h>
121
122
#ifdef JANET_EV
123
#ifndef JANET_WINDOWS
124
#include <pthread.h>
125
#endif
126
#endif
127
128
typedef int64_t JanetTimestamp;
129
130
typedef struct JanetScratch {
131
    JanetScratchFinalizer finalize;
132
    long long mem[]; /* for proper alignment */
133
} JanetScratch;
134
135
typedef struct {
136
    JanetGCObject *self;
137
    JanetGCObject *other;
138
    int32_t index;
139
    int32_t index2;
140
} JanetTraversalNode;
141
142
typedef struct {
143
    int32_t capacity;
144
    int32_t head;
145
    int32_t tail;
146
    void *data;
147
} JanetQueue;
148
149
typedef struct {
150
    JanetTimestamp when;
151
    JanetFiber *fiber;
152
    JanetFiber *curr_fiber;
153
    uint32_t sched_id;
154
    int is_error;
155
} JanetTimeout;
156
157
/* Registry table for C functions - contains metadata that can
158
 * be looked up by cfunction pointer. All strings here are pointing to
159
 * static memory not managed by Janet. */
160
typedef struct {
161
    JanetCFunction cfun;
162
    const char *name;
163
    const char *name_prefix;
164
    const char *source_file;
165
    int32_t source_line;
166
    /* int32_t min_arity; */
167
    /* int32_t max_arity; */
168
} JanetCFunRegistry;
169
170
struct JanetVM {
171
    /* Place for user data */
172
    void *user;
173
174
    /* Top level dynamic bindings */
175
    JanetTable *top_dyns;
176
177
    /* Cache the core environment */
178
    JanetTable *core_env;
179
180
    /* How many VM stacks have been entered */
181
    int stackn;
182
183
    /* If this flag is true, suspend on function calls and backwards jumps.
184
     * When this occurs, this flag will be reset to 0. */
185
    int auto_suspend;
186
187
    /* The current running fiber on the current thread.
188
     * Set and unset by functions in vm.c */
189
    JanetFiber *fiber;
190
    JanetFiber *root_fiber;
191
192
    /* The current pointer to the inner most jmp_buf. The current
193
     * return point for panics. */
194
    jmp_buf *signal_buf;
195
    Janet *return_reg;
196
197
    /* The global registry for c functions. Used to store meta-data
198
     * along with otherwise bare c function pointers. */
199
    JanetCFunRegistry *registry;
200
    size_t registry_cap;
201
    size_t registry_count;
202
    int registry_dirty;
203
204
    /* Registry for abstract types that can be marshalled.
205
     * We need this to look up the constructors when unmarshalling. */
206
    JanetTable *abstract_registry;
207
208
    /* Immutable value cache */
209
    const uint8_t **cache;
210
    uint32_t cache_capacity;
211
    uint32_t cache_count;
212
    uint32_t cache_deleted;
213
    uint8_t gensym_counter[8];
214
215
    /* Garbage collection */
216
    void *blocks;
217
    size_t gc_interval;
218
    size_t next_collection;
219
    size_t block_count;
220
    int gc_suspend;
221
222
    /* GC roots */
223
    Janet *roots;
224
    size_t root_count;
225
    size_t root_capacity;
226
227
    /* Scratch memory */
228
    JanetScratch **scratch_mem;
229
    size_t scratch_cap;
230
    size_t scratch_len;
231
232
    /* Sandbox flags */
233
    uint32_t sandbox_flags;
234
235
    /* Random number generator */
236
    JanetRNG rng;
237
238
    /* Traversal pointers */
239
    JanetTraversalNode *traversal;
240
    JanetTraversalNode *traversal_top;
241
    JanetTraversalNode *traversal_base;
242
243
    /* Event loop and scheduler globals */
244
#ifdef JANET_EV
245
    size_t tq_count;
246
    size_t tq_capacity;
247
    JanetQueue spawn;
248
    JanetTimeout *tq;
249
    JanetRNG ev_rng;
250
    JanetListenerState **listeners;
251
    size_t listener_count;
252
    size_t listener_cap;
253
    size_t extra_listeners;
254
    JanetTable threaded_abstracts; /* All abstract types that can be shared between threads (used in this thread) */
255
    JanetTable active_tasks; /* All possibly live task fibers - used just for tracking */
256
#ifdef JANET_WINDOWS
257
    void **iocp;
258
#elif defined(JANET_EV_EPOLL)
259
    pthread_attr_t new_thread_attr;
260
    JanetHandle selfpipe[2];
261
    int epoll;
262
    int timerfd;
263
    int timer_enabled;
264
#elif defined(JANET_EV_KQUEUE)
265
    pthread_attr_t new_thread_attr;
266
    JanetHandle selfpipe[2];
267
    int kq;
268
    int timer;
269
    int timer_enabled;
270
#else
271
    pthread_attr_t new_thread_attr;
272
    JanetHandle selfpipe[2];
273
    struct pollfd *fds;
274
#endif
275
#endif
276
277
};
278
279
extern JANET_THREAD_LOCAL JanetVM janet_vm;
280
281
#ifdef JANET_NET
282
void janet_net_init(void);
283
void janet_net_deinit(void);
284
#endif
285
286
#ifdef JANET_EV
287
void janet_ev_init(void);
288
void janet_ev_deinit(void);
289
#endif
290
291
#endif /* JANET_STATE_H_defined */
292
293
294
/* src/core/util.h */
295
#line 0 "src/core/util.h"
296
297
/*
298
* Copyright (c) 2023 Calvin Rose
299
*
300
* Permission is hereby granted, free of charge, to any person obtaining a copy
301
* of this software and associated documentation files (the "Software"), to
302
* deal in the Software without restriction, including without limitation the
303
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
304
* sell copies of the Software, and to permit persons to whom the Software is
305
* furnished to do so, subject to the following conditions:
306
*
307
* The above copyright notice and this permission notice shall be included in
308
* all copies or substantial portions of the Software.
309
*
310
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
311
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
312
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
313
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
314
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
315
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
316
* IN THE SOFTWARE.
317
*/
318
319
#ifndef JANET_UTIL_H_defined
320
#define JANET_UTIL_H_defined
321
322
#ifndef JANET_AMALG
323
#include "features.h"
324
#include <janet.h>
325
#include "state.h"
326
#endif
327
328
#include <stdio.h>
329
#include <errno.h>
330
#include <stddef.h>
331
#include <stdbool.h>
332
333
#ifdef JANET_EV
334
#ifndef JANET_WINDOWS
335
#include <pthread.h>
336
#endif
337
#endif
338
339
#if !defined(JANET_REDUCED_OS) || !defined(JANET_SINGLE_THREADED)
340
#include <time.h>
341
#define JANET_GETTIME
342
#endif
343
344
/* Handle runtime errors */
345
#ifndef JANET_EXIT
346
#include <stdio.h>
347
0
#define JANET_EXIT(m) do { \
348
0
    fprintf(stderr, "C runtime error at line %d in file %s: %s\n",\
349
0
        __LINE__,\
350
0
        __FILE__,\
351
0
        (m));\
352
0
    exit(1);\
353
0
} while (0)
354
#endif
355
356
0
#define JANET_MARSHAL_DECREF 0x40000
357
358
6.31M
#define janet_assert(c, m) do { \
359
6.31M
    if (!(c)) JANET_EXIT((m)); \
360
6.31M
} while (0)
361
362
/* Utils */
363
uint32_t janet_hash_mix(uint32_t input, uint32_t more);
364
6.49M
#define janet_maphash(cap, hash) ((uint32_t)(hash) & (cap - 1))
365
int janet_valid_utf8(const uint8_t *str, int32_t len);
366
int janet_is_symbol_char(uint8_t c);
367
extern const char janet_base64[65];
368
int32_t janet_array_calchash(const Janet *array, int32_t len);
369
int32_t janet_kv_calchash(const JanetKV *kvs, int32_t len);
370
int32_t janet_string_calchash(const uint8_t *str, int32_t len);
371
int32_t janet_tablen(int32_t n);
372
void safe_memcpy(void *dest, const void *src, size_t len);
373
void janet_buffer_push_types(JanetBuffer *buffer, int types);
374
const JanetKV *janet_dict_find(const JanetKV *buckets, int32_t cap, Janet key);
375
void janet_memempty(JanetKV *mem, int32_t count);
376
void *janet_memalloc_empty(int32_t count);
377
JanetTable *janet_get_core_table(const char *name);
378
void janet_def_addflags(JanetFuncDef *def);
379
const void *janet_strbinsearch(
380
    const void *tab,
381
    size_t tabcount,
382
    size_t itemsize,
383
    const uint8_t *key);
384
void janet_buffer_format(
385
    JanetBuffer *b,
386
    const char *strfrmt,
387
    int32_t argstart,
388
    int32_t argc,
389
    Janet *argv);
390
Janet janet_next_impl(Janet ds, Janet key, int is_interpreter);
391
JanetBinding janet_binding_from_entry(Janet entry);
392
JanetByteView janet_text_substitution(
393
    Janet *subst,
394
    const uint8_t *bytes,
395
    uint32_t len,
396
    JanetArray *extra_args);
397
398
/* Registry functions */
399
void janet_registry_put(
400
    JanetCFunction key,
401
    const char *name,
402
    const char *name_prefix,
403
    const char *source_file,
404
    int32_t source_line);
405
JanetCFunRegistry *janet_registry_get(JanetCFunction key);
406
407
/* Inside the janet core, defining globals is different
408
 * at bootstrap time and normal runtime */
409
#ifdef JANET_BOOTSTRAP
410
#define JANET_CORE_REG JANET_REG
411
#define JANET_CORE_FN JANET_FN
412
#define JANET_CORE_DEF JANET_DEF
413
#define janet_core_def_sm janet_def_sm
414
#define janet_core_cfuns_ext janet_cfuns_ext
415
#else
416
0
#define JANET_CORE_REG JANET_REG_S
417
#define JANET_CORE_FN JANET_FN_S
418
0
#define JANET_CORE_DEF(ENV, NAME, X, DOC) janet_core_def_sm(ENV, NAME, X, DOC, NULL, 0)
419
void janet_core_def_sm(JanetTable *env, const char *name, Janet x, const void *p, const void *sf, int32_t sl);
420
void janet_core_cfuns_ext(JanetTable *env, const char *regprefix, const JanetRegExt *cfuns);
421
#endif
422
423
/* Clock gettime */
424
#ifdef JANET_GETTIME
425
enum JanetTimeSource {
426
    JANET_TIME_REALTIME,
427
    JANET_TIME_MONOTONIC,
428
    JANET_TIME_CPUTIME
429
};
430
int janet_gettime(struct timespec *spec, enum JanetTimeSource source);
431
#endif
432
433
/* strdup */
434
#ifdef JANET_WINDOWS
435
#define strdup(x) _strdup(x)
436
#endif
437
438
/* Use LoadLibrary on windows or dlopen on posix to load dynamic libaries
439
 * with native code. */
440
#if defined(JANET_NO_DYNAMIC_MODULES)
441
typedef int Clib;
442
#define load_clib(name) ((void) name, 0)
443
#define symbol_clib(lib, sym) ((void) lib, (void) sym, NULL)
444
const char *error_clib(void);
445
#define free_clib(c) ((void) (c), 0)
446
#elif defined(JANET_WINDOWS)
447
#include <windows.h>
448
typedef HINSTANCE Clib;
449
void *symbol_clib(Clib clib, const char *sym);
450
void free_clib(Clib clib);
451
Clib load_clib(const char *name);
452
char *error_clib(void);
453
#else
454
#include <dlfcn.h>
455
typedef void *Clib;
456
0
#define load_clib(name) dlopen((name), RTLD_NOW)
457
0
#define free_clib(lib) dlclose((lib))
458
0
#define symbol_clib(lib, sym) dlsym((lib), (sym))
459
0
#define error_clib dlerror
460
#endif
461
char *get_processed_name(const char *name);
462
463
0
#define RETRY_EINTR(RC, CALL) do { (RC) = CALL; } while((RC) < 0 && errno == EINTR)
464
465
/* Initialize builtin libraries */
466
void janet_lib_io(JanetTable *env);
467
void janet_lib_math(JanetTable *env);
468
void janet_lib_array(JanetTable *env);
469
void janet_lib_tuple(JanetTable *env);
470
void janet_lib_buffer(JanetTable *env);
471
void janet_lib_table(JanetTable *env);
472
void janet_lib_struct(JanetTable *env);
473
void janet_lib_fiber(JanetTable *env);
474
void janet_lib_os(JanetTable *env);
475
void janet_lib_string(JanetTable *env);
476
void janet_lib_marsh(JanetTable *env);
477
void janet_lib_parse(JanetTable *env);
478
#ifdef JANET_ASSEMBLER
479
void janet_lib_asm(JanetTable *env);
480
#endif
481
void janet_lib_compile(JanetTable *env);
482
void janet_lib_debug(JanetTable *env);
483
#ifdef JANET_PEG
484
void janet_lib_peg(JanetTable *env);
485
#endif
486
#ifdef JANET_TYPED_ARRAY
487
void janet_lib_typed_array(JanetTable *env);
488
#endif
489
#ifdef JANET_INT_TYPES
490
void janet_lib_inttypes(JanetTable *env);
491
#endif
492
#ifdef JANET_NET
493
void janet_lib_net(JanetTable *env);
494
extern const JanetAbstractType janet_address_type;
495
#endif
496
#ifdef JANET_EV
497
void janet_lib_ev(JanetTable *env);
498
void janet_ev_mark(void);
499
int janet_make_pipe(JanetHandle handles[2], int mode);
500
#endif
501
#ifdef JANET_FFI
502
void janet_lib_ffi(JanetTable *env);
503
#endif
504
505
#endif
506
507
508
/* src/core/gc.h */
509
#line 0 "src/core/gc.h"
510
511
/*
512
* Copyright (c) 2023 Calvin Rose
513
*
514
* Permission is hereby granted, free of charge, to any person obtaining a copy
515
* of this software and associated documentation files (the "Software"), to
516
* deal in the Software without restriction, including without limitation the
517
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
518
* sell copies of the Software, and to permit persons to whom the Software is
519
* furnished to do so, subject to the following conditions:
520
*
521
* The above copyright notice and this permission notice shall be included in
522
* all copies or substantial portions of the Software.
523
*
524
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
525
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
526
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
527
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
528
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
529
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
530
* IN THE SOFTWARE.
531
*/
532
533
#ifndef JANET_GC_H
534
#define JANET_GC_H
535
536
#ifndef JANET_AMALG
537
#include "features.h"
538
#include <janet.h>
539
#endif
540
541
/* The metadata header associated with an allocated block of memory */
542
0
#define janet_gc_header(mem) ((JanetGCObject *)(mem))
543
544
9.10M
#define JANET_MEM_TYPEBITS 0xFF
545
0
#define JANET_MEM_REACHABLE 0x100
546
0
#define JANET_MEM_DISABLED 0x200
547
548
0
#define janet_gc_settype(m, t) ((janet_gc_header(m)->flags |= (0xFF & (t))))
549
#define janet_gc_type(m) (janet_gc_header(m)->flags & 0xFF)
550
551
0
#define janet_gc_mark(m) (janet_gc_header(m)->flags |= JANET_MEM_REACHABLE)
552
0
#define janet_gc_reachable(m) (janet_gc_header(m)->flags & JANET_MEM_REACHABLE)
553
554
/* Memory types for the GC. Different from JanetType to include funcenv and funcdef. */
555
enum JanetMemoryType {
556
    JANET_MEMORY_NONE,
557
    JANET_MEMORY_STRING,
558
    JANET_MEMORY_SYMBOL,
559
    JANET_MEMORY_ARRAY,
560
    JANET_MEMORY_TUPLE,
561
    JANET_MEMORY_TABLE,
562
    JANET_MEMORY_STRUCT,
563
    JANET_MEMORY_FIBER,
564
    JANET_MEMORY_BUFFER,
565
    JANET_MEMORY_FUNCTION,
566
    JANET_MEMORY_ABSTRACT,
567
    JANET_MEMORY_FUNCENV,
568
    JANET_MEMORY_FUNCDEF,
569
    JANET_MEMORY_THREADED_ABSTRACT,
570
};
571
572
/* To allocate collectable memory, one must call janet_alloc, initialize the memory,
573
 * and then call when janet_enablegc when it is initailize and reachable by the gc (on the JANET stack) */
574
void *janet_gcalloc(enum JanetMemoryType type, size_t size);
575
576
#endif
577
578
579
/* src/core/vector.h */
580
#line 0 "src/core/vector.h"
581
582
/*
583
* Copyright (c) 2023 Calvin Rose
584
*
585
* Permission is hereby granted, free of charge, to any person obtaining a copy
586
* of this software and associated documentation files (the "Software"), to
587
* deal in the Software without restriction, including without limitation the
588
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
589
* sell copies of the Software, and to permit persons to whom the Software is
590
* furnished to do so, subject to the following conditions:
591
*
592
* The above copyright notice and this permission notice shall be included in
593
* all copies or substantial portions of the Software.
594
*
595
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
596
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
597
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
598
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
599
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
600
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
601
* IN THE SOFTWARE.
602
*/
603
604
#ifndef JANET_VECTOR_H_defined
605
#define JANET_VECTOR_H_defined
606
607
#ifndef JANET_AMALG
608
#include "features.h"
609
#include <janet.h>
610
#endif
611
612
/*
613
 * vector code modified from
614
 * https://github.com/nothings/stb/blob/master/stretchy_buffer.h
615
*/
616
617
/* This is mainly used code such as the assembler or compiler, which
618
 * need vector like data structures that are only garbage collected in case
619
 * of an error, and normally rely on malloc/free. */
620
621
0
#define janet_v_free(v)         (((v) != NULL) ? (janet_sfree(janet_v__raw(v)), 0) : 0)
622
0
#define janet_v_push(v, x)      (janet_v__maybegrow(v, 1), (v)[janet_v__cnt(v)++] = (x))
623
#define janet_v_pop(v)          (janet_v_count(v) ? janet_v__cnt(v)-- : 0)
624
0
#define janet_v_count(v)        (((v) != NULL) ? janet_v__cnt(v) : 0)
625
0
#define janet_v_last(v)         ((v)[janet_v__cnt(v) - 1])
626
#define janet_v_empty(v)        (((v) != NULL) ? (janet_v__cnt(v) = 0) : 0)
627
0
#define janet_v_flatten(v)      (janet_v_flattenmem((v), sizeof(*(v))))
628
629
0
#define janet_v__raw(v) ((int32_t *)(v) - 2)
630
0
#define janet_v__cap(v) janet_v__raw(v)[0]
631
0
#define janet_v__cnt(v) janet_v__raw(v)[1]
632
633
0
#define janet_v__needgrow(v, n)  ((v) == NULL || janet_v__cnt(v) + (n) >= janet_v__cap(v))
634
0
#define janet_v__maybegrow(v, n) (janet_v__needgrow((v), (n)) ? janet_v__grow((v), (n)) : 0)
635
0
#define janet_v__grow(v, n)      ((v) = janet_v_grow((v), (n), sizeof(*(v))))
636
637
/* Actual functions defined in vector.c */
638
void *janet_v_grow(void *v, int32_t increment, int32_t itemsize);
639
void *janet_v_flattenmem(void *v, int32_t itemsize);
640
641
#endif
642
643
644
/* src/core/fiber.h */
645
#line 0 "src/core/fiber.h"
646
647
/*
648
* Copyright (c) 2023 Calvin Rose
649
*
650
* Permission is hereby granted, free of charge, to any person obtaining a copy
651
* of this software and associated documentation files (the "Software"), to
652
* deal in the Software without restriction, including without limitation the
653
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
654
* sell copies of the Software, and to permit persons to whom the Software is
655
* furnished to do so, subject to the following conditions:
656
*
657
* The above copyright notice and this permission notice shall be included in
658
* all copies or substantial portions of the Software.
659
*
660
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
661
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
662
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
663
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
664
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
665
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
666
* IN THE SOFTWARE.
667
*/
668
669
#ifndef JANET_FIBER_H_defined
670
#define JANET_FIBER_H_defined
671
672
#ifndef JANET_AMALG
673
#include <janet.h>
674
#endif
675
676
/* Fiber signal masks. */
677
0
#define JANET_FIBER_MASK_ERROR 2
678
0
#define JANET_FIBER_MASK_DEBUG 4
679
0
#define JANET_FIBER_MASK_YIELD 8
680
681
0
#define JANET_FIBER_MASK_USER0 (16 << 0)
682
0
#define JANET_FIBER_MASK_USER1 (16 << 1)
683
0
#define JANET_FIBER_MASK_USER2 (16 << 2)
684
0
#define JANET_FIBER_MASK_USER3 (16 << 3)
685
0
#define JANET_FIBER_MASK_USER4 (16 << 4)
686
#define JANET_FIBER_MASK_USER5 (16 << 5)
687
#define JANET_FIBER_MASK_USER6 (16 << 6)
688
#define JANET_FIBER_MASK_USER7 (16 << 7)
689
0
#define JANET_FIBER_MASK_USER8 (16 << 8)
690
0
#define JANET_FIBER_MASK_USER9 (16 << 9)
691
692
0
#define JANET_FIBER_MASK_USERN(N) (16 << (N))
693
0
#define JANET_FIBER_MASK_USER 0x3FF0
694
695
0
#define JANET_FIBER_STATUS_MASK 0x3F0000
696
0
#define JANET_FIBER_RESUME_SIGNAL 0x400000
697
0
#define JANET_FIBER_STATUS_OFFSET 16
698
699
0
#define JANET_FIBER_BREAKPOINT       0x1000000
700
0
#define JANET_FIBER_RESUME_NO_USEVAL 0x2000000
701
0
#define JANET_FIBER_RESUME_NO_SKIP   0x4000000
702
0
#define JANET_FIBER_DID_LONGJUMP     0x8000000
703
0
#define JANET_FIBER_FLAG_MASK        0xF000000
704
705
0
#define JANET_FIBER_EV_FLAG_CANCELED 0x10000
706
0
#define JANET_FIBER_EV_FLAG_SUSPENDED 0x20000
707
0
#define JANET_FIBER_FLAG_ROOT 0x40000
708
709
0
#define janet_fiber_set_status(f, s) do {\
710
0
    (f)->flags &= ~JANET_FIBER_STATUS_MASK;\
711
0
    (f)->flags |= (s) << JANET_FIBER_STATUS_OFFSET;\
712
0
} while (0)
713
714
0
#define janet_stack_frame(s) ((JanetStackFrame *)((s) - JANET_FRAME_SIZE))
715
0
#define janet_fiber_frame(f) janet_stack_frame((f)->data + (f)->frame)
716
void janet_fiber_setcapacity(JanetFiber *fiber, int32_t n);
717
void janet_fiber_push(JanetFiber *fiber, Janet x);
718
void janet_fiber_push2(JanetFiber *fiber, Janet x, Janet y);
719
void janet_fiber_push3(JanetFiber *fiber, Janet x, Janet y, Janet z);
720
void janet_fiber_pushn(JanetFiber *fiber, const Janet *arr, int32_t n);
721
int janet_fiber_funcframe(JanetFiber *fiber, JanetFunction *func);
722
int janet_fiber_funcframe_tail(JanetFiber *fiber, JanetFunction *func);
723
void janet_fiber_cframe(JanetFiber *fiber, JanetCFunction cfun);
724
void janet_fiber_popframe(JanetFiber *fiber);
725
void janet_env_maybe_detach(JanetFuncEnv *env);
726
int janet_env_valid(JanetFuncEnv *env);
727
728
#ifdef JANET_EV
729
void janet_fiber_did_resume(JanetFiber *fiber);
730
#endif
731
732
#endif
733
734
735
/* src/core/regalloc.h */
736
#line 0 "src/core/regalloc.h"
737
738
/*
739
* Copyright (c) 2023 Calvin Rose
740
*
741
* Permission is hereby granted, free of charge, to any person obtaining a copy
742
* of this software and associated documentation files (the "Software"), to
743
* deal in the Software without restriction, including without limitation the
744
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
745
* sell copies of the Software, and to permit persons to whom the Software is
746
* furnished to do so, subject to the following conditions:
747
*
748
* The above copyright notice and this permission notice shall be included in
749
* all copies or substantial portions of the Software.
750
*
751
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
752
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
753
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
754
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
755
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
756
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
757
* IN THE SOFTWARE.
758
*/
759
760
/* Implements a simple first fit register allocator for the compiler. */
761
762
#ifndef JANET_REGALLOC_H
763
#define JANET_REGALLOC_H
764
765
#include <stdint.h>
766
767
/* Placeholder for allocating temporary registers */
768
typedef enum {
769
    JANETC_REGTEMP_0,
770
    JANETC_REGTEMP_1,
771
    JANETC_REGTEMP_2,
772
    JANETC_REGTEMP_3,
773
    JANETC_REGTEMP_4,
774
    JANETC_REGTEMP_5,
775
    JANETC_REGTEMP_6,
776
    JANETC_REGTEMP_7
777
} JanetcRegisterTemp;
778
779
typedef struct {
780
    uint32_t *chunks;
781
    int32_t count; /* number of chunks in chunks */
782
    int32_t capacity; /* amount allocated for chunks */
783
    int32_t max; /* The maximum allocated register so far */
784
    int32_t regtemps; /* Hold which temp. registers are allocated. */
785
} JanetcRegisterAllocator;
786
787
void janetc_regalloc_init(JanetcRegisterAllocator *ra);
788
void janetc_regalloc_deinit(JanetcRegisterAllocator *ra);
789
790
int32_t janetc_regalloc_1(JanetcRegisterAllocator *ra);
791
void janetc_regalloc_free(JanetcRegisterAllocator *ra, int32_t reg);
792
int32_t janetc_regalloc_temp(JanetcRegisterAllocator *ra, JanetcRegisterTemp nth);
793
void janetc_regalloc_freetemp(JanetcRegisterAllocator *ra, int32_t reg, JanetcRegisterTemp nth);
794
void janetc_regalloc_clone(JanetcRegisterAllocator *dest, JanetcRegisterAllocator *src);
795
void janetc_regalloc_touch(JanetcRegisterAllocator *ra, int32_t reg);
796
int janetc_regalloc_check(JanetcRegisterAllocator *ra, int32_t reg);
797
798
#endif
799
800
801
/* src/core/compile.h */
802
#line 0 "src/core/compile.h"
803
804
/*
805
* Copyright (c) 2023 Calvin Rose
806
*
807
* Permission is hereby granted, free of charge, to any person obtaining a copy
808
* of this software and associated documentation files (the "Software"), to
809
* deal in the Software without restriction, including without limitation the
810
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
811
* sell copies of the Software, and to permit persons to whom the Software is
812
* furnished to do so, subject to the following conditions:
813
*
814
* The above copyright notice and this permission notice shall be included in
815
* all copies or substantial portions of the Software.
816
*
817
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
818
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
819
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
820
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
821
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
822
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
823
* IN THE SOFTWARE.
824
*/
825
826
#ifndef JANET_COMPILE_H
827
#define JANET_COMPILE_H
828
829
#ifndef JANET_AMALG
830
#include "features.h"
831
#include <janet.h>
832
#include "regalloc.h"
833
#endif
834
835
/* Levels for compiler warnings */
836
typedef enum {
837
    JANET_C_LINT_RELAXED,
838
    JANET_C_LINT_NORMAL,
839
    JANET_C_LINT_STRICT
840
} JanetCompileLintLevel;
841
842
/* Tags for some functions for the prepared inliner */
843
#define JANET_FUN_DEBUG 1
844
#define JANET_FUN_ERROR 2
845
#define JANET_FUN_APPLY 3
846
#define JANET_FUN_YIELD 4
847
#define JANET_FUN_RESUME 5
848
#define JANET_FUN_IN 6
849
#define JANET_FUN_PUT 7
850
#define JANET_FUN_LENGTH 8
851
#define JANET_FUN_ADD 9
852
#define JANET_FUN_SUBTRACT 10
853
#define JANET_FUN_MULTIPLY 11
854
#define JANET_FUN_DIVIDE 12
855
#define JANET_FUN_BAND 13
856
#define JANET_FUN_BOR 14
857
#define JANET_FUN_BXOR 15
858
#define JANET_FUN_LSHIFT 16
859
#define JANET_FUN_RSHIFT 17
860
#define JANET_FUN_RSHIFTU 18
861
#define JANET_FUN_BNOT 19
862
#define JANET_FUN_GT 20
863
#define JANET_FUN_LT 21
864
#define JANET_FUN_GTE 22
865
#define JANET_FUN_LTE 23
866
#define JANET_FUN_EQ 24
867
0
#define JANET_FUN_NEQ 25
868
#define JANET_FUN_PROP 26
869
#define JANET_FUN_GET 27
870
#define JANET_FUN_NEXT 28
871
#define JANET_FUN_MODULO 29
872
#define JANET_FUN_REMAINDER 30
873
#define JANET_FUN_CMP 31
874
#define JANET_FUN_CANCEL 32
875
876
/* Compiler typedefs */
877
typedef struct JanetCompiler JanetCompiler;
878
typedef struct FormOptions FormOptions;
879
typedef struct SlotTracker SlotTracker;
880
typedef struct JanetScope JanetScope;
881
typedef struct JanetSlot JanetSlot;
882
typedef struct JanetFopts JanetFopts;
883
typedef struct JanetFunOptimizer JanetFunOptimizer;
884
typedef struct JanetSpecial JanetSpecial;
885
886
0
#define JANET_SLOT_CONSTANT 0x10000
887
0
#define JANET_SLOT_NAMED 0x20000
888
0
#define JANET_SLOT_MUTABLE 0x40000
889
0
#define JANET_SLOT_REF 0x80000
890
0
#define JANET_SLOT_RETURNED 0x100000
891
#define JANET_SLOT_DEP_NOTE 0x200000
892
#define JANET_SLOT_DEP_WARN 0x400000
893
#define JANET_SLOT_DEP_ERROR 0x800000
894
0
#define JANET_SLOT_SPLICED 0x1000000
895
896
0
#define JANET_SLOTTYPE_ANY 0xFFFF
897
898
/* A stack slot */
899
struct JanetSlot {
900
    Janet constant; /* If the slot has a constant value */
901
    int32_t index;
902
    int32_t envindex; /* 0 is local, positive number is an upvalue */
903
    uint32_t flags;
904
};
905
906
0
#define JANET_SCOPE_FUNCTION 1
907
0
#define JANET_SCOPE_ENV 2
908
0
#define JANET_SCOPE_TOP 4
909
0
#define JANET_SCOPE_UNUSED 8
910
0
#define JANET_SCOPE_CLOSURE 16
911
0
#define JANET_SCOPE_WHILE 32
912
913
/* A symbol and slot pair */
914
typedef struct SymPair {
915
    JanetSlot slot;
916
    const uint8_t *sym;
917
    const uint8_t *sym2;
918
    int keep;
919
    uint32_t birth_pc;
920
    uint32_t death_pc;
921
} SymPair;
922
923
typedef struct JanetEnvRef {
924
    int32_t envindex;
925
    JanetScope *scope;
926
} JanetEnvRef;
927
928
/* A lexical scope during compilation */
929
struct JanetScope {
930
931
    /* For debugging the compiler */
932
    const char *name;
933
934
    /* Scopes are doubly linked list */
935
    JanetScope *parent;
936
    JanetScope *child;
937
938
    /* Constants for this funcdef */
939
    Janet *consts;
940
941
    /* Map of symbols to slots. Use a simple linear scan for symbols. */
942
    SymPair *syms;
943
944
    /* FuncDefs */
945
    JanetFuncDef **defs;
946
947
    /* Register allocator */
948
    JanetcRegisterAllocator ra;
949
950
    /* Upvalue allocator */
951
    JanetcRegisterAllocator ua;
952
953
    /* Referenced closure environments. The values at each index correspond
954
     * to which index to get the environment from in the parent. The environment
955
     * that corresponds to the direct parent's stack will always have value 0. */
956
    JanetEnvRef *envs;
957
958
    int32_t bytecode_start;
959
    int flags;
960
};
961
962
/* Compilation state */
963
struct JanetCompiler {
964
965
    /* Pointer to current scope */
966
    JanetScope *scope;
967
968
    uint32_t *buffer;
969
    JanetSourceMapping *mapbuffer;
970
971
    /* Hold the environment */
972
    JanetTable *env;
973
974
    /* Name of source to attach to generated functions */
975
    const uint8_t *source;
976
977
    /* The result of compilation */
978
    JanetCompileResult result;
979
980
    /* Keep track of where we are in the source */
981
    JanetSourceMapping current_mapping;
982
983
    /* Prevent unbounded recursion */
984
    int recursion_guard;
985
986
    /* Collect linting results */
987
    JanetArray *lints;
988
};
989
990
0
#define JANET_FOPTS_TAIL 0x10000
991
0
#define JANET_FOPTS_HINT 0x20000
992
0
#define JANET_FOPTS_DROP 0x40000
993
0
#define JANET_FOPTS_ACCEPT_SPLICE 0x80000
994
995
/* Options for compiling a single form */
996
struct JanetFopts {
997
    JanetCompiler *compiler;
998
    JanetSlot hint;
999
    uint32_t flags; /* bit set of accepted primitive types */
1000
};
1001
1002
/* Get the default form options */
1003
JanetFopts janetc_fopts_default(JanetCompiler *c);
1004
1005
/* For optimizing builtin normal functions. */
1006
struct JanetFunOptimizer {
1007
    int (*can_optimize)(JanetFopts opts, JanetSlot *args);
1008
    JanetSlot(*optimize)(JanetFopts opts, JanetSlot *args);
1009
};
1010
1011
/* A grouping of a named special and the corresponding compiler fragment */
1012
struct JanetSpecial {
1013
    const char *name;
1014
    JanetSlot(*compile)(JanetFopts opts, int32_t argn, const Janet *argv);
1015
};
1016
1017
/****************************************************/
1018
1019
/* Get an optimizer if it exists, otherwise NULL */
1020
const JanetFunOptimizer *janetc_funopt(uint32_t flags);
1021
1022
/* Get a special. Return NULL if none exists */
1023
const JanetSpecial *janetc_special(const uint8_t *name);
1024
1025
void janetc_freeslot(JanetCompiler *c, JanetSlot s);
1026
void janetc_nameslot(JanetCompiler *c, const uint8_t *sym, JanetSlot s);
1027
JanetSlot janetc_farslot(JanetCompiler *c);
1028
1029
/* Throw away some code after checking that it is well formed. */
1030
void janetc_throwaway(JanetFopts opts, Janet x);
1031
1032
/* Get a target slot for emitting an instruction. Will always return
1033
 * a local slot. */
1034
JanetSlot janetc_gettarget(JanetFopts opts);
1035
1036
/* Get a bunch of slots for function arguments */
1037
JanetSlot *janetc_toslots(JanetCompiler *c, const Janet *vals, int32_t len);
1038
1039
/* Get a bunch of slots for function arguments */
1040
JanetSlot *janetc_toslotskv(JanetCompiler *c, Janet ds);
1041
1042
/* Push slots loaded via janetc_toslots. */
1043
int32_t janetc_pushslots(JanetCompiler *c, JanetSlot *slots);
1044
1045
/* Free slots loaded via janetc_toslots */
1046
void janetc_freeslots(JanetCompiler *c, JanetSlot *slots);
1047
1048
/* Generate the return instruction for a slot. */
1049
JanetSlot janetc_return(JanetCompiler *c, JanetSlot s);
1050
1051
/* Store an error */
1052
void janetc_error(JanetCompiler *c, const uint8_t *m);
1053
void janetc_cerror(JanetCompiler *c, const char *m);
1054
1055
/* Linting */
1056
void janetc_lintf(JanetCompiler *C, JanetCompileLintLevel level, const char *format, ...);
1057
1058
/* Dispatch to correct form compiler */
1059
JanetSlot janetc_value(JanetFopts opts, Janet x);
1060
1061
/* Push and pop from the scope stack */
1062
void janetc_scope(JanetScope *s, JanetCompiler *c, int flags, const char *name);
1063
void janetc_popscope(JanetCompiler *c);
1064
void janetc_popscope_keepslot(JanetCompiler *c, JanetSlot retslot);
1065
JanetFuncDef *janetc_pop_funcdef(JanetCompiler *c);
1066
1067
/* Create a destory slots */
1068
JanetSlot janetc_cslot(Janet x);
1069
1070
/* Search for a symbol */
1071
JanetSlot janetc_resolve(JanetCompiler *c, const uint8_t *sym);
1072
1073
/* Bytecode optimization */
1074
void janet_bytecode_movopt(JanetFuncDef *def);
1075
void janet_bytecode_remove_noops(JanetFuncDef *def);
1076
1077
#endif
1078
1079
1080
/* src/core/emit.h */
1081
#line 0 "src/core/emit.h"
1082
1083
/*
1084
* Copyright (c) 2023 Calvin Rose
1085
*
1086
* Permission is hereby granted, free of charge, to any person obtaining a copy
1087
* of this software and associated documentation files (the "Software"), to
1088
* deal in the Software without restriction, including without limitation the
1089
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
1090
* sell copies of the Software, and to permit persons to whom the Software is
1091
* furnished to do so, subject to the following conditions:
1092
*
1093
* The above copyright notice and this permission notice shall be included in
1094
* all copies or substantial portions of the Software.
1095
*
1096
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1097
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1098
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1099
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1100
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1101
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
1102
* IN THE SOFTWARE.
1103
*/
1104
1105
#ifndef JANET_EMIT_H
1106
#define JANET_EMIT_H
1107
1108
#ifndef JANET_AMALG
1109
#include "compile.h"
1110
#endif
1111
1112
void janetc_emit(JanetCompiler *c, uint32_t instr);
1113
1114
int32_t janetc_allocfar(JanetCompiler *c);
1115
int32_t janetc_allocnear(JanetCompiler *c, JanetcRegisterTemp);
1116
1117
int32_t janetc_emit_s(JanetCompiler *c, uint8_t op, JanetSlot s, int wr);
1118
int32_t janetc_emit_sl(JanetCompiler *c, uint8_t op, JanetSlot s, int32_t label);
1119
int32_t janetc_emit_st(JanetCompiler *c, uint8_t op, JanetSlot s, int32_t tflags);
1120
int32_t janetc_emit_si(JanetCompiler *c, uint8_t op, JanetSlot s, int16_t immediate, int wr);
1121
int32_t janetc_emit_su(JanetCompiler *c, uint8_t op, JanetSlot s, uint16_t immediate, int wr);
1122
int32_t janetc_emit_ss(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2, int wr);
1123
int32_t janetc_emit_ssi(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2, int8_t immediate, int wr);
1124
int32_t janetc_emit_ssu(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2, uint8_t immediate, int wr);
1125
int32_t janetc_emit_sss(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2, JanetSlot s3, int wr);
1126
1127
/* Check if two slots are equivalent */
1128
int janetc_sequal(JanetSlot x, JanetSlot y);
1129
1130
/* Move value from one slot to another. Cannot copy to constant slots. */
1131
void janetc_copy(JanetCompiler *c, JanetSlot dest, JanetSlot src);
1132
1133
#endif
1134
1135
1136
/* src/core/symcache.h */
1137
#line 0 "src/core/symcache.h"
1138
1139
/*
1140
* Copyright (c) 2023 Calvin Rose
1141
*
1142
* Permission is hereby granted, free of charge, to any person obtaining a copy
1143
* of this software and associated documentation files (the "Software"), to
1144
* deal in the Software without restriction, including without limitation the
1145
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
1146
* sell copies of the Software, and to permit persons to whom the Software is
1147
* furnished to do so, subject to the following conditions:
1148
*
1149
* The above copyright notice and this permission notice shall be included in
1150
* all copies or substantial portions of the Software.
1151
*
1152
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1153
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1154
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1155
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1156
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1157
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
1158
* IN THE SOFTWARE.
1159
*/
1160
1161
#ifndef JANET_SYMCACHE_H_defined
1162
#define JANET_SYMCACHE_H_defined
1163
1164
#ifndef JANET_AMALG
1165
#include "features.h"
1166
#include <janet.h>
1167
#endif
1168
1169
/* Initialize the cache (allocate cache memory) */
1170
void janet_symcache_init(void);
1171
void janet_symcache_deinit(void);
1172
void janet_symbol_deinit(const uint8_t *sym);
1173
1174
#endif
1175
1176
1177
/* Windows work around - winsock2 must be included before windows.h, especially in amalgamated build */
1178
#if defined(JANET_WINDOWS) && defined(JANET_NET)
1179
#include <winsock2.h>
1180
#endif
1181
1182
1183
/* src/core/abstract.c */
1184
#line 0 "src/core/abstract.c"
1185
1186
/*
1187
* Copyright (c) 2023 Calvin Rose
1188
*
1189
* Permission is hereby granted, free of charge, to any person obtaining a copy
1190
* of this software and associated documentation files (the "Software"), to
1191
* deal in the Software without restriction, including without limitation the
1192
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
1193
* sell copies of the Software, and to permit persons to whom the Software is
1194
* furnished to do so, subject to the following conditions:
1195
*
1196
* The above copyright notice and this permission notice shall be included in
1197
* all copies or substantial portions of the Software.
1198
*
1199
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1200
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1201
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1202
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1203
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1204
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
1205
* IN THE SOFTWARE.
1206
*/
1207
1208
#ifndef JANET_AMALG
1209
#include "features.h"
1210
#include <janet.h>
1211
#include "util.h"
1212
#include "gc.h"
1213
#include "state.h"
1214
#endif
1215
1216
#ifdef JANET_EV
1217
#ifdef JANET_WINDOWS
1218
#include <windows.h>
1219
#else
1220
#include <stdatomic.h>
1221
#endif
1222
#endif
1223
1224
/* Create new userdata */
1225
0
void *janet_abstract_begin(const JanetAbstractType *atype, size_t size) {
1226
0
    JanetAbstractHead *header = janet_gcalloc(JANET_MEMORY_NONE,
1227
0
                                sizeof(JanetAbstractHead) + size);
1228
0
    header->size = size;
1229
0
    header->type = atype;
1230
0
    return (void *) & (header->data);
1231
0
}
1232
1233
0
void *janet_abstract_end(void *x) {
1234
0
    janet_gc_settype((void *)(janet_abstract_head(x)), JANET_MEMORY_ABSTRACT);
1235
0
    return x;
1236
0
}
1237
1238
0
void *janet_abstract(const JanetAbstractType *atype, size_t size) {
1239
0
    return janet_abstract_end(janet_abstract_begin(atype, size));
1240
0
}
1241
1242
#ifdef JANET_EV
1243
1244
/*
1245
 * Threaded abstracts
1246
 */
1247
1248
0
void *janet_abstract_begin_threaded(const JanetAbstractType *atype, size_t size) {
1249
0
    JanetAbstractHead *header = janet_malloc(sizeof(JanetAbstractHead) + size);
1250
0
    if (NULL == header) {
1251
0
        JANET_OUT_OF_MEMORY;
1252
0
    }
1253
0
    janet_vm.next_collection += size + sizeof(JanetAbstractHead);
1254
0
    header->gc.flags = JANET_MEMORY_THREADED_ABSTRACT;
1255
0
    header->gc.data.next = NULL; /* Clear memory for address sanitizers */
1256
0
    header->gc.data.refcount = 1;
1257
0
    header->size = size;
1258
0
    header->type = atype;
1259
0
    void *abstract = (void *) & (header->data);
1260
0
    janet_table_put(&janet_vm.threaded_abstracts, janet_wrap_abstract(abstract), janet_wrap_false());
1261
0
    return abstract;
1262
0
}
1263
1264
0
void *janet_abstract_end_threaded(void *x) {
1265
0
    janet_gc_settype((void *)(janet_abstract_head(x)), JANET_MEMORY_THREADED_ABSTRACT);
1266
0
    return x;
1267
0
}
1268
1269
0
void *janet_abstract_threaded(const JanetAbstractType *atype, size_t size) {
1270
0
    return janet_abstract_end_threaded(janet_abstract_begin_threaded(atype, size));
1271
0
}
1272
1273
/* Refcounting primitives and sync primitives */
1274
1275
#ifdef JANET_WINDOWS
1276
1277
size_t janet_os_mutex_size(void) {
1278
    return sizeof(CRITICAL_SECTION);
1279
}
1280
1281
size_t janet_os_rwlock_size(void) {
1282
    return sizeof(void *);
1283
}
1284
1285
static int32_t janet_incref(JanetAbstractHead *ab) {
1286
    return InterlockedIncrement((LONG volatile *) &ab->gc.data.refcount);
1287
}
1288
1289
static int32_t janet_decref(JanetAbstractHead *ab) {
1290
    return InterlockedDecrement((LONG volatile *) &ab->gc.data.refcount);
1291
}
1292
1293
void janet_os_mutex_init(JanetOSMutex *mutex) {
1294
    InitializeCriticalSection((CRITICAL_SECTION *) mutex);
1295
}
1296
1297
void janet_os_mutex_deinit(JanetOSMutex *mutex) {
1298
    DeleteCriticalSection((CRITICAL_SECTION *) mutex);
1299
}
1300
1301
void janet_os_mutex_lock(JanetOSMutex *mutex) {
1302
    EnterCriticalSection((CRITICAL_SECTION *) mutex);
1303
}
1304
1305
void janet_os_mutex_unlock(JanetOSMutex *mutex) {
1306
    /* error handling? May want to keep counter */
1307
    LeaveCriticalSection((CRITICAL_SECTION *) mutex);
1308
}
1309
1310
void janet_os_rwlock_init(JanetOSRWLock *rwlock) {
1311
    InitializeSRWLock((PSRWLOCK) rwlock);
1312
}
1313
1314
void janet_os_rwlock_deinit(JanetOSRWLock *rwlock) {
1315
    /* no op? */
1316
    (void) rwlock;
1317
}
1318
1319
void janet_os_rwlock_rlock(JanetOSRWLock *rwlock) {
1320
    AcquireSRWLockShared((PSRWLOCK) rwlock);
1321
}
1322
1323
void janet_os_rwlock_wlock(JanetOSRWLock *rwlock) {
1324
    AcquireSRWLockExclusive((PSRWLOCK) rwlock);
1325
}
1326
1327
void janet_os_rwlock_runlock(JanetOSRWLock *rwlock) {
1328
    ReleaseSRWLockShared((PSRWLOCK) rwlock);
1329
}
1330
1331
void janet_os_rwlock_wunlock(JanetOSRWLock *rwlock) {
1332
    ReleaseSRWLockExclusive((PSRWLOCK) rwlock);
1333
}
1334
1335
#else
1336
1337
0
size_t janet_os_mutex_size(void) {
1338
0
    return sizeof(pthread_mutex_t);
1339
0
}
1340
1341
0
size_t janet_os_rwlock_size(void) {
1342
0
    return sizeof(pthread_rwlock_t);
1343
0
}
1344
1345
0
static int32_t janet_incref(JanetAbstractHead *ab) {
1346
0
    return __atomic_add_fetch(&ab->gc.data.refcount, 1, __ATOMIC_RELAXED);
1347
0
}
1348
1349
0
static int32_t janet_decref(JanetAbstractHead *ab) {
1350
0
    return __atomic_add_fetch(&ab->gc.data.refcount, -1, __ATOMIC_RELAXED);
1351
0
}
1352
1353
0
void janet_os_mutex_init(JanetOSMutex *mutex) {
1354
0
    pthread_mutexattr_t attr;
1355
0
    pthread_mutexattr_init(&attr);
1356
0
    pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
1357
0
    pthread_mutex_init((pthread_mutex_t *) mutex, &attr);
1358
0
}
1359
1360
0
void janet_os_mutex_deinit(JanetOSMutex *mutex) {
1361
0
    pthread_mutex_destroy((pthread_mutex_t *) mutex);
1362
0
}
1363
1364
0
void janet_os_mutex_lock(JanetOSMutex *mutex) {
1365
0
    pthread_mutex_lock((pthread_mutex_t *) mutex);
1366
0
}
1367
1368
0
void janet_os_mutex_unlock(JanetOSMutex *mutex) {
1369
0
    int ret = pthread_mutex_unlock((pthread_mutex_t *) mutex);
1370
0
    if (ret) janet_panic("cannot release lock");
1371
0
}
1372
1373
0
void janet_os_rwlock_init(JanetOSRWLock *rwlock) {
1374
0
    pthread_rwlock_init((pthread_rwlock_t *) rwlock, NULL);
1375
0
}
1376
1377
0
void janet_os_rwlock_deinit(JanetOSRWLock *rwlock) {
1378
0
    pthread_rwlock_destroy((pthread_rwlock_t *) rwlock);
1379
0
}
1380
1381
0
void janet_os_rwlock_rlock(JanetOSRWLock *rwlock) {
1382
0
    pthread_rwlock_rdlock((pthread_rwlock_t *) rwlock);
1383
0
}
1384
1385
0
void janet_os_rwlock_wlock(JanetOSRWLock *rwlock) {
1386
0
    pthread_rwlock_wrlock((pthread_rwlock_t *) rwlock);
1387
0
}
1388
1389
0
void janet_os_rwlock_runlock(JanetOSRWLock *rwlock) {
1390
0
    pthread_rwlock_unlock((pthread_rwlock_t *) rwlock);
1391
0
}
1392
1393
0
void janet_os_rwlock_wunlock(JanetOSRWLock *rwlock) {
1394
0
    pthread_rwlock_unlock((pthread_rwlock_t *) rwlock);
1395
0
}
1396
1397
#endif
1398
1399
0
int32_t janet_abstract_incref(void *abst) {
1400
0
    return janet_incref(janet_abstract_head(abst));
1401
0
}
1402
1403
0
int32_t janet_abstract_decref(void *abst) {
1404
0
    return janet_decref(janet_abstract_head(abst));
1405
0
}
1406
1407
#endif
1408
1409
1410
/* src/core/array.c */
1411
#line 0 "src/core/array.c"
1412
1413
/*
1414
* Copyright (c) 2023 Calvin Rose
1415
*
1416
* Permission is hereby granted, free of charge, to any person obtaining a copy
1417
* of this software and associated documentation files (the "Software"), to
1418
* deal in the Software without restriction, including without limitation the
1419
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
1420
* sell copies of the Software, and to permit persons to whom the Software is
1421
* furnished to do so, subject to the following conditions:
1422
*
1423
* The above copyright notice and this permission notice shall be included in
1424
* all copies or substantial portions of the Software.
1425
*
1426
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1427
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1428
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1429
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1430
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1431
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
1432
* IN THE SOFTWARE.
1433
*/
1434
1435
#ifndef JANET_AMALG
1436
#include "features.h"
1437
#include <janet.h>
1438
#include "gc.h"
1439
#include "util.h"
1440
#include "state.h"
1441
#endif
1442
1443
#include <string.h>
1444
1445
/* Creates a new array */
1446
1.06k
JanetArray *janet_array(int32_t capacity) {
1447
1.06k
    JanetArray *array = janet_gcalloc(JANET_MEMORY_ARRAY, sizeof(JanetArray));
1448
1.06k
    Janet *data = NULL;
1449
1.06k
    if (capacity > 0) {
1450
861
        janet_vm.next_collection += capacity * sizeof(Janet);
1451
861
        data = (Janet *) janet_malloc(sizeof(Janet) * (size_t) capacity);
1452
861
        if (NULL == data) {
1453
0
            JANET_OUT_OF_MEMORY;
1454
0
        }
1455
861
    }
1456
1.06k
    array->count = 0;
1457
1.06k
    array->capacity = capacity;
1458
1.06k
    array->data = data;
1459
1.06k
    return array;
1460
1.06k
}
1461
1462
/* Creates a new array from n elements. */
1463
0
JanetArray *janet_array_n(const Janet *elements, int32_t n) {
1464
0
    JanetArray *array = janet_gcalloc(JANET_MEMORY_ARRAY, sizeof(JanetArray));
1465
0
    array->capacity = n;
1466
0
    array->count = n;
1467
0
    array->data = janet_malloc(sizeof(Janet) * (size_t) n);
1468
0
    if (!array->data) {
1469
0
        JANET_OUT_OF_MEMORY;
1470
0
    }
1471
0
    safe_memcpy(array->data, elements, sizeof(Janet) * n);
1472
0
    return array;
1473
0
}
1474
1475
/* Ensure the array has enough capacity for elements */
1476
0
void janet_array_ensure(JanetArray *array, int32_t capacity, int32_t growth) {
1477
0
    Janet *newData;
1478
0
    Janet *old = array->data;
1479
0
    if (capacity <= array->capacity) return;
1480
0
    int64_t new_capacity = ((int64_t) capacity) * growth;
1481
0
    if (new_capacity > INT32_MAX) new_capacity = INT32_MAX;
1482
0
    capacity = (int32_t) new_capacity;
1483
0
    newData = janet_realloc(old, capacity * sizeof(Janet));
1484
0
    if (NULL == newData) {
1485
0
        JANET_OUT_OF_MEMORY;
1486
0
    }
1487
0
    janet_vm.next_collection += (capacity - array->capacity) * sizeof(Janet);
1488
0
    array->data = newData;
1489
0
    array->capacity = capacity;
1490
0
}
1491
1492
/* Set the count of an array. Extend with nil if needed. */
1493
0
void janet_array_setcount(JanetArray *array, int32_t count) {
1494
0
    if (count < 0)
1495
0
        return;
1496
0
    if (count > array->count) {
1497
0
        int32_t i;
1498
0
        janet_array_ensure(array, count, 1);
1499
0
        for (i = array->count; i < count; i++) {
1500
0
            array->data[i] = janet_wrap_nil();
1501
0
        }
1502
0
    }
1503
0
    array->count = count;
1504
0
}
1505
1506
/* Push a value to the top of the array */
1507
0
void janet_array_push(JanetArray *array, Janet x) {
1508
0
    if (array->count == INT32_MAX) {
1509
0
        janet_panic("array overflow");
1510
0
    }
1511
0
    int32_t newcount = array->count + 1;
1512
0
    janet_array_ensure(array, newcount, 2);
1513
0
    array->data[array->count] = x;
1514
0
    array->count = newcount;
1515
0
}
1516
1517
/* Pop a value from the top of the array */
1518
0
Janet janet_array_pop(JanetArray *array) {
1519
0
    if (array->count) {
1520
0
        return array->data[--array->count];
1521
0
    } else {
1522
0
        return janet_wrap_nil();
1523
0
    }
1524
0
}
1525
1526
/* Look at the last value in the array */
1527
0
Janet janet_array_peek(JanetArray *array) {
1528
0
    if (array->count) {
1529
0
        return array->data[array->count - 1];
1530
0
    } else {
1531
0
        return janet_wrap_nil();
1532
0
    }
1533
0
}
1534
1535
/* C Functions */
1536
1537
JANET_CORE_FN(cfun_array_new,
1538
              "(array/new capacity)",
1539
              "Creates a new empty array with a pre-allocated capacity. The same as "
1540
0
              "`(array)` but can be more efficient if the maximum size of an array is known.") {
1541
0
    janet_fixarity(argc, 1);
1542
0
    int32_t cap = janet_getinteger(argv, 0);
1543
0
    JanetArray *array = janet_array(cap);
1544
0
    return janet_wrap_array(array);
1545
0
}
1546
1547
JANET_CORE_FN(cfun_array_new_filled,
1548
              "(array/new-filled count &opt value)",
1549
0
              "Creates a new array of `count` elements, all set to `value`, which defaults to nil. Returns the new array.") {
1550
0
    janet_arity(argc, 1, 2);
1551
0
    int32_t count = janet_getnat(argv, 0);
1552
0
    Janet x = (argc == 2) ? argv[1] : janet_wrap_nil();
1553
0
    JanetArray *array = janet_array(count);
1554
0
    for (int32_t i = 0; i < count; i++) {
1555
0
        array->data[i] = x;
1556
0
    }
1557
0
    array->count = count;
1558
0
    return janet_wrap_array(array);
1559
0
}
1560
1561
JANET_CORE_FN(cfun_array_fill,
1562
              "(array/fill arr &opt value)",
1563
              "Replace all elements of an array with `value` (defaulting to nil) without changing the length of the array. "
1564
0
              "Returns the modified array.") {
1565
0
    janet_arity(argc, 1, 2);
1566
0
    JanetArray *array = janet_getarray(argv, 0);
1567
0
    Janet x = (argc == 2) ? argv[1] : janet_wrap_nil();
1568
0
    for (int32_t i = 0; i < array->count; i++) {
1569
0
        array->data[i] = x;
1570
0
    }
1571
0
    return argv[0];
1572
0
}
1573
1574
JANET_CORE_FN(cfun_array_pop,
1575
              "(array/pop arr)",
1576
              "Remove the last element of the array and return it. If the array is empty, will return nil. Modifies "
1577
0
              "the input array.") {
1578
0
    janet_fixarity(argc, 1);
1579
0
    JanetArray *array = janet_getarray(argv, 0);
1580
0
    return janet_array_pop(array);
1581
0
}
1582
1583
JANET_CORE_FN(cfun_array_peek,
1584
              "(array/peek arr)",
1585
0
              "Returns the last element of the array. Does not modify the array.") {
1586
0
    janet_fixarity(argc, 1);
1587
0
    JanetArray *array = janet_getarray(argv, 0);
1588
0
    return janet_array_peek(array);
1589
0
}
1590
1591
JANET_CORE_FN(cfun_array_push,
1592
              "(array/push arr x)",
1593
0
              "Insert an element in the end of an array. Modifies the input array and returns it.") {
1594
0
    janet_arity(argc, 1, -1);
1595
0
    JanetArray *array = janet_getarray(argv, 0);
1596
0
    if (INT32_MAX - argc + 1 <= array->count) {
1597
0
        janet_panic("array overflow");
1598
0
    }
1599
0
    int32_t newcount = array->count - 1 + argc;
1600
0
    janet_array_ensure(array, newcount, 2);
1601
0
    if (argc > 1) memcpy(array->data + array->count, argv + 1, (size_t)(argc - 1) * sizeof(Janet));
1602
0
    array->count = newcount;
1603
0
    return argv[0];
1604
0
}
1605
1606
JANET_CORE_FN(cfun_array_ensure,
1607
              "(array/ensure arr capacity growth)",
1608
              "Ensures that the memory backing the array is large enough for `capacity` "
1609
              "items at the given rate of growth. `capacity` and `growth` must be integers. "
1610
              "If the backing capacity is already enough, then this function does nothing. "
1611
0
              "Otherwise, the backing memory will be reallocated so that there is enough space.") {
1612
0
    janet_fixarity(argc, 3);
1613
0
    JanetArray *array = janet_getarray(argv, 0);
1614
0
    int32_t newcount = janet_getinteger(argv, 1);
1615
0
    int32_t growth = janet_getinteger(argv, 2);
1616
0
    if (newcount < 1) janet_panic("expected positive integer");
1617
0
    janet_array_ensure(array, newcount, growth);
1618
0
    return argv[0];
1619
0
}
1620
1621
JANET_CORE_FN(cfun_array_slice,
1622
              "(array/slice arrtup &opt start end)",
1623
              "Takes a slice of array or tuple from `start` to `end`. The range is half open, "
1624
              "[start, end). Indexes can also be negative, indicating indexing from the "
1625
              "end of the array. By default, `start` is 0 and `end` is the length of the array. "
1626
              "Note that index -1 is synonymous with index `(length arrtup)` to allow a full "
1627
0
              "negative slice range. Returns a new array.") {
1628
0
    JanetView view = janet_getindexed(argv, 0);
1629
0
    JanetRange range = janet_getslice(argc, argv);
1630
0
    JanetArray *array = janet_array(range.end - range.start);
1631
0
    if (array->data)
1632
0
        memcpy(array->data, view.items + range.start, sizeof(Janet) * (range.end - range.start));
1633
0
    array->count = range.end - range.start;
1634
0
    return janet_wrap_array(array);
1635
0
}
1636
1637
JANET_CORE_FN(cfun_array_concat,
1638
              "(array/concat arr & parts)",
1639
              "Concatenates a variable number of arrays (and tuples) into the first argument, "
1640
              "which must be an array. If any of the parts are arrays or tuples, their elements will "
1641
              "be inserted into the array. Otherwise, each part in `parts` will be appended to `arr` in order. "
1642
0
              "Return the modified array `arr`.") {
1643
0
    int32_t i;
1644
0
    janet_arity(argc, 1, -1);
1645
0
    JanetArray *array = janet_getarray(argv, 0);
1646
0
    for (i = 1; i < argc; i++) {
1647
0
        switch (janet_type(argv[i])) {
1648
0
            default:
1649
0
                janet_array_push(array, argv[i]);
1650
0
                break;
1651
0
            case JANET_ARRAY:
1652
0
            case JANET_TUPLE: {
1653
0
                int32_t j, len = 0;
1654
0
                const Janet *vals = NULL;
1655
0
                janet_indexed_view(argv[i], &vals, &len);
1656
0
                if (array->data == vals) {
1657
0
                    int32_t newcount = array->count + len;
1658
0
                    janet_array_ensure(array, newcount, 2);
1659
0
                    janet_indexed_view(argv[i], &vals, &len);
1660
0
                }
1661
0
                for (j = 0; j < len; j++)
1662
0
                    janet_array_push(array, vals[j]);
1663
0
            }
1664
0
            break;
1665
0
        }
1666
0
    }
1667
0
    return janet_wrap_array(array);
1668
0
}
1669
1670
JANET_CORE_FN(cfun_array_insert,
1671
              "(array/insert arr at & xs)",
1672
              "Insert all `xs` into array `arr` at index `at`. `at` should be an integer between "
1673
              "0 and the length of the array. A negative value for `at` will index backwards from "
1674
              "the end of the array, such that inserting at -1 appends to the array. "
1675
0
              "Returns the array.") {
1676
0
    size_t chunksize, restsize;
1677
0
    janet_arity(argc, 2, -1);
1678
0
    JanetArray *array = janet_getarray(argv, 0);
1679
0
    int32_t at = janet_getinteger(argv, 1);
1680
0
    if (at < 0) {
1681
0
        at = array->count + at + 1;
1682
0
    }
1683
0
    if (at < 0 || at > array->count)
1684
0
        janet_panicf("insertion index %d out of range [0,%d]", at, array->count);
1685
0
    chunksize = (argc - 2) * sizeof(Janet);
1686
0
    restsize = (array->count - at) * sizeof(Janet);
1687
0
    if (INT32_MAX - (argc - 2) < array->count) {
1688
0
        janet_panic("array overflow");
1689
0
    }
1690
0
    janet_array_ensure(array, array->count + argc - 2, 2);
1691
0
    if (restsize) {
1692
0
        memmove(array->data + at + argc - 2,
1693
0
                array->data + at,
1694
0
                restsize);
1695
0
    }
1696
0
    safe_memcpy(array->data + at, argv + 2, chunksize);
1697
0
    array->count += (argc - 2);
1698
0
    return argv[0];
1699
0
}
1700
1701
JANET_CORE_FN(cfun_array_remove,
1702
              "(array/remove arr at &opt n)",
1703
              "Remove up to `n` elements starting at index `at` in array `arr`. `at` can index from "
1704
              "the end of the array with a negative index, and `n` must be a non-negative integer. "
1705
              "By default, `n` is 1. "
1706
0
              "Returns the array.") {
1707
0
    janet_arity(argc, 2, 3);
1708
0
    JanetArray *array = janet_getarray(argv, 0);
1709
0
    int32_t at = janet_getinteger(argv, 1);
1710
0
    int32_t n = 1;
1711
0
    if (at < 0) {
1712
0
        at = array->count + at + 1;
1713
0
    }
1714
0
    if (at < 0 || at > array->count)
1715
0
        janet_panicf("removal index %d out of range [0,%d]", at, array->count);
1716
0
    if (argc == 3) {
1717
0
        n = janet_getinteger(argv, 2);
1718
0
        if (n < 0)
1719
0
            janet_panicf("expected non-negative integer for argument n, got %v", argv[2]);
1720
0
    }
1721
0
    if (at + n > array->count) {
1722
0
        n = array->count - at;
1723
0
    }
1724
0
    memmove(array->data + at,
1725
0
            array->data + at + n,
1726
0
            (array->count - at - n) * sizeof(Janet));
1727
0
    array->count -= n;
1728
0
    return argv[0];
1729
0
}
1730
1731
JANET_CORE_FN(cfun_array_trim,
1732
              "(array/trim arr)",
1733
0
              "Set the backing capacity of an array to its current length. Returns the modified array.") {
1734
0
    janet_fixarity(argc, 1);
1735
0
    JanetArray *array = janet_getarray(argv, 0);
1736
0
    if (array->count) {
1737
0
        if (array->count < array->capacity) {
1738
0
            Janet *newData = janet_realloc(array->data, array->count * sizeof(Janet));
1739
0
            if (NULL == newData) {
1740
0
                JANET_OUT_OF_MEMORY;
1741
0
            }
1742
0
            array->data = newData;
1743
0
            array->capacity = array->count;
1744
0
        }
1745
0
    } else {
1746
0
        array->capacity = 0;
1747
0
        janet_free(array->data);
1748
0
        array->data = NULL;
1749
0
    }
1750
0
    return argv[0];
1751
0
}
1752
1753
JANET_CORE_FN(cfun_array_clear,
1754
              "(array/clear arr)",
1755
              "Empties an array, setting it's count to 0 but does not free the backing capacity. "
1756
0
              "Returns the modified array.") {
1757
0
    janet_fixarity(argc, 1);
1758
0
    JanetArray *array = janet_getarray(argv, 0);
1759
0
    array->count = 0;
1760
0
    return argv[0];
1761
0
}
1762
1763
/* Load the array module */
1764
0
void janet_lib_array(JanetTable *env) {
1765
0
    JanetRegExt array_cfuns[] = {
1766
0
        JANET_CORE_REG("array/new", cfun_array_new),
1767
0
        JANET_CORE_REG("array/new-filled", cfun_array_new_filled),
1768
0
        JANET_CORE_REG("array/fill", cfun_array_fill),
1769
0
        JANET_CORE_REG("array/pop", cfun_array_pop),
1770
0
        JANET_CORE_REG("array/peek", cfun_array_peek),
1771
0
        JANET_CORE_REG("array/push", cfun_array_push),
1772
0
        JANET_CORE_REG("array/ensure", cfun_array_ensure),
1773
0
        JANET_CORE_REG("array/slice", cfun_array_slice),
1774
0
        JANET_CORE_REG("array/concat", cfun_array_concat),
1775
0
        JANET_CORE_REG("array/insert", cfun_array_insert),
1776
0
        JANET_CORE_REG("array/remove", cfun_array_remove),
1777
0
        JANET_CORE_REG("array/trim", cfun_array_trim),
1778
0
        JANET_CORE_REG("array/clear", cfun_array_clear),
1779
0
        JANET_REG_END
1780
0
    };
1781
0
    janet_core_cfuns_ext(env, NULL, array_cfuns);
1782
0
}
1783
1784
1785
/* src/core/asm.c */
1786
#line 0 "src/core/asm.c"
1787
1788
/*
1789
* Copyright (c) 2023 Calvin Rose
1790
*
1791
* Permission is hereby granted, free of charge, to any person obtaining a copy
1792
* of this software and associated documentation files (the "Software"), to
1793
* deal in the Software without restriction, including without limitation the
1794
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
1795
* sell copies of the Software, and to permit persons to whom the Software is
1796
* furnished to do so, subject to the following conditions:
1797
*
1798
* The above copyright notice and this permission notice shall be included in
1799
* all copies or substantial portions of the Software.
1800
*
1801
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1802
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1803
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1804
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1805
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1806
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
1807
* IN THE SOFTWARE.
1808
*/
1809
1810
#ifndef JANET_AMALG
1811
#include "features.h"
1812
#include <janet.h>
1813
#include "util.h"
1814
#endif
1815
1816
#include <setjmp.h>
1817
1818
/* Conditionally compile this file */
1819
#ifdef JANET_ASSEMBLER
1820
1821
/* Definition for an instruction in the assembler */
1822
typedef struct JanetInstructionDef JanetInstructionDef;
1823
struct JanetInstructionDef {
1824
    const char *name;
1825
    enum JanetOpCode opcode;
1826
};
1827
1828
/* Hold all state needed during assembly */
1829
typedef struct JanetAssembler JanetAssembler;
1830
struct JanetAssembler {
1831
    JanetAssembler *parent;
1832
    JanetFuncDef *def;
1833
    jmp_buf on_error;
1834
    const uint8_t *errmessage;
1835
    int32_t errindex;
1836
1837
    int32_t environments_capacity;
1838
    int32_t defs_capacity;
1839
    int32_t bytecode_count; /* Used for calculating labels */
1840
1841
    Janet name;
1842
    JanetTable labels; /* keyword -> bytecode index */
1843
    JanetTable slots; /* symbol -> slot index */
1844
    JanetTable envs; /* symbol -> environment index */
1845
    JanetTable defs; /* symbol -> funcdefs index */
1846
};
1847
1848
/* Janet opcode descriptions in lexicographic order. This
1849
 * allows a binary search over the elements to find the
1850
 * correct opcode given a name. This works in reasonable
1851
 * time and is easier to setup statically than a hash table or
1852
 * prefix tree. */
1853
static const JanetInstructionDef janet_ops[] = {
1854
    {"add", JOP_ADD},
1855
    {"addim", JOP_ADD_IMMEDIATE},
1856
    {"band", JOP_BAND},
1857
    {"bnot", JOP_BNOT},
1858
    {"bor", JOP_BOR},
1859
    {"bxor", JOP_BXOR},
1860
    {"call", JOP_CALL},
1861
    {"clo", JOP_CLOSURE},
1862
    {"cmp", JOP_COMPARE},
1863
    {"cncl", JOP_CANCEL},
1864
    {"div", JOP_DIVIDE},
1865
    {"divim", JOP_DIVIDE_IMMEDIATE},
1866
    {"eq", JOP_EQUALS},
1867
    {"eqim", JOP_EQUALS_IMMEDIATE},
1868
    {"err", JOP_ERROR},
1869
    {"get", JOP_GET},
1870
    {"geti", JOP_GET_INDEX},
1871
    {"gt", JOP_GREATER_THAN},
1872
    {"gte", JOP_GREATER_THAN_EQUAL},
1873
    {"gtim", JOP_GREATER_THAN_IMMEDIATE},
1874
    {"in", JOP_IN},
1875
    {"jmp", JOP_JUMP},
1876
    {"jmpif", JOP_JUMP_IF},
1877
    {"jmpni", JOP_JUMP_IF_NIL},
1878
    {"jmpnn", JOP_JUMP_IF_NOT_NIL},
1879
    {"jmpno", JOP_JUMP_IF_NOT},
1880
    {"ldc", JOP_LOAD_CONSTANT},
1881
    {"ldf", JOP_LOAD_FALSE},
1882
    {"ldi", JOP_LOAD_INTEGER},
1883
    {"ldn", JOP_LOAD_NIL},
1884
    {"lds", JOP_LOAD_SELF},
1885
    {"ldt", JOP_LOAD_TRUE},
1886
    {"ldu", JOP_LOAD_UPVALUE},
1887
    {"len", JOP_LENGTH},
1888
    {"lt", JOP_LESS_THAN},
1889
    {"lte", JOP_LESS_THAN_EQUAL},
1890
    {"ltim", JOP_LESS_THAN_IMMEDIATE},
1891
    {"mkarr", JOP_MAKE_ARRAY},
1892
    {"mkbtp", JOP_MAKE_BRACKET_TUPLE},
1893
    {"mkbuf", JOP_MAKE_BUFFER},
1894
    {"mkstr", JOP_MAKE_STRING},
1895
    {"mkstu", JOP_MAKE_STRUCT},
1896
    {"mktab", JOP_MAKE_TABLE},
1897
    {"mktup", JOP_MAKE_TUPLE},
1898
    {"mod", JOP_MODULO},
1899
    {"movf", JOP_MOVE_FAR},
1900
    {"movn", JOP_MOVE_NEAR},
1901
    {"mul", JOP_MULTIPLY},
1902
    {"mulim", JOP_MULTIPLY_IMMEDIATE},
1903
    {"neq", JOP_NOT_EQUALS},
1904
    {"neqim", JOP_NOT_EQUALS_IMMEDIATE},
1905
    {"next", JOP_NEXT},
1906
    {"noop", JOP_NOOP},
1907
    {"prop", JOP_PROPAGATE},
1908
    {"push", JOP_PUSH},
1909
    {"push2", JOP_PUSH_2},
1910
    {"push3", JOP_PUSH_3},
1911
    {"pusha", JOP_PUSH_ARRAY},
1912
    {"put", JOP_PUT},
1913
    {"puti", JOP_PUT_INDEX},
1914
    {"rem", JOP_REMAINDER},
1915
    {"res", JOP_RESUME},
1916
    {"ret", JOP_RETURN},
1917
    {"retn", JOP_RETURN_NIL},
1918
    {"setu", JOP_SET_UPVALUE},
1919
    {"sig", JOP_SIGNAL},
1920
    {"sl", JOP_SHIFT_LEFT},
1921
    {"slim", JOP_SHIFT_LEFT_IMMEDIATE},
1922
    {"sr", JOP_SHIFT_RIGHT},
1923
    {"srim", JOP_SHIFT_RIGHT_IMMEDIATE},
1924
    {"sru", JOP_SHIFT_RIGHT_UNSIGNED},
1925
    {"sruim", JOP_SHIFT_RIGHT_UNSIGNED_IMMEDIATE},
1926
    {"sub", JOP_SUBTRACT},
1927
    {"tcall", JOP_TAILCALL},
1928
    {"tchck", JOP_TYPECHECK}
1929
};
1930
1931
/* Typename aliases for tchck instruction */
1932
typedef struct TypeAlias {
1933
    const char *name;
1934
    int32_t mask;
1935
} TypeAlias;
1936
1937
static const TypeAlias type_aliases[] = {
1938
    {"abstract", JANET_TFLAG_ABSTRACT},
1939
    {"array", JANET_TFLAG_ARRAY},
1940
    {"boolean", JANET_TFLAG_BOOLEAN},
1941
    {"buffer", JANET_TFLAG_BUFFER},
1942
    {"callable", JANET_TFLAG_CALLABLE},
1943
    {"cfunction", JANET_TFLAG_CFUNCTION},
1944
    {"dictionary", JANET_TFLAG_DICTIONARY},
1945
    {"fiber", JANET_TFLAG_FIBER},
1946
    {"function", JANET_TFLAG_FUNCTION},
1947
    {"indexed", JANET_TFLAG_INDEXED},
1948
    {"keyword", JANET_TFLAG_KEYWORD},
1949
    {"nil", JANET_TFLAG_NIL},
1950
    {"number", JANET_TFLAG_NUMBER},
1951
    {"pointer", JANET_TFLAG_POINTER},
1952
    {"string", JANET_TFLAG_STRING},
1953
    {"struct", JANET_TFLAG_STRUCT},
1954
    {"symbol", JANET_TFLAG_SYMBOL},
1955
    {"table", JANET_TFLAG_TABLE},
1956
    {"tuple", JANET_TFLAG_TUPLE}
1957
};
1958
1959
/* Deinitialize an Assembler. Does not deinitialize the parents. */
1960
0
static void janet_asm_deinit(JanetAssembler *a) {
1961
0
    janet_table_deinit(&a->slots);
1962
0
    janet_table_deinit(&a->labels);
1963
0
    janet_table_deinit(&a->envs);
1964
0
    janet_table_deinit(&a->defs);
1965
0
}
1966
1967
0
static void janet_asm_longjmp(JanetAssembler *a) {
1968
#if defined(JANET_BSD) || defined(JANET_APPLE)
1969
    _longjmp(a->on_error, 1);
1970
#else
1971
0
    longjmp(a->on_error, 1);
1972
0
#endif
1973
0
}
1974
1975
/* Throw some kind of assembly error */
1976
0
static void janet_asm_error(JanetAssembler *a, const char *message) {
1977
0
    if (a->errindex < 0) {
1978
0
        a->errmessage = janet_formatc("%s", message);
1979
0
    } else {
1980
0
        a->errmessage = janet_formatc("%s, instruction %d", message, a->errindex);
1981
0
    }
1982
0
    janet_asm_longjmp(a);
1983
0
}
1984
0
#define janet_asm_assert(a, c, m) do { if (!(c)) janet_asm_error((a), (m)); } while (0)
1985
1986
/* Throw some kind of assembly error */
1987
0
static void janet_asm_errorv(JanetAssembler *a, const uint8_t *m) {
1988
0
    a->errmessage = m;
1989
0
    janet_asm_longjmp(a);
1990
0
}
1991
1992
/* Add a closure environment to the assembler. Sub funcdefs may need
1993
 * to reference outer function environments, and may change the outer environment.
1994
 * Returns the index of the environment in the assembler's environments, or -1
1995
 * if not found. */
1996
0
static int32_t janet_asm_addenv(JanetAssembler *a, Janet envname) {
1997
0
    Janet check;
1998
0
    JanetFuncDef *def = a->def;
1999
0
    int32_t envindex;
2000
0
    int32_t res;
2001
0
    if (janet_equals(a->name, envname)) {
2002
0
        return -1;
2003
0
    }
2004
    /* Check for memoized value */
2005
0
    check = janet_table_get(&a->envs, envname);
2006
0
    if (janet_checktype(check, JANET_NUMBER)) {
2007
0
        return (int32_t) janet_unwrap_number(check);
2008
0
    }
2009
0
    if (NULL == a->parent) return -2;
2010
0
    res = janet_asm_addenv(a->parent, envname);
2011
0
    if (res < -1) {
2012
0
        return res;
2013
0
    }
2014
0
    envindex = def->environments_length;
2015
0
    janet_table_put(&a->envs, envname, janet_wrap_number(envindex));
2016
0
    if (envindex >= a->environments_capacity) {
2017
0
        int32_t newcap = 2 * envindex;
2018
0
        def->environments = janet_realloc(def->environments, newcap * sizeof(int32_t));
2019
0
        if (NULL == def->environments) {
2020
0
            JANET_OUT_OF_MEMORY;
2021
0
        }
2022
0
        a->environments_capacity = newcap;
2023
0
    }
2024
0
    def->environments[envindex] = (int32_t) res;
2025
0
    def->environments_length = envindex + 1;
2026
0
    return envindex;
2027
0
}
2028
2029
/* Parse an argument to an assembly instruction, and return the result as an
2030
 * integer. This integer will need to be bounds checked. */
2031
static int32_t doarg_1(
2032
    JanetAssembler *a,
2033
    enum JanetOpArgType argtype,
2034
0
    Janet x) {
2035
0
    int32_t ret = -1;
2036
0
    JanetTable *c;
2037
0
    switch (argtype) {
2038
0
        default:
2039
0
            c = NULL;
2040
0
            break;
2041
0
        case JANET_OAT_SLOT:
2042
0
            c = &a->slots;
2043
0
            break;
2044
0
        case JANET_OAT_ENVIRONMENT:
2045
0
            c = &a->envs;
2046
0
            break;
2047
0
        case JANET_OAT_LABEL:
2048
0
            c = &a->labels;
2049
0
            break;
2050
0
        case JANET_OAT_FUNCDEF:
2051
0
            c = &a->defs;
2052
0
            break;
2053
0
    }
2054
0
    switch (janet_type(x)) {
2055
0
        default:
2056
0
            goto error;
2057
0
            break;
2058
0
        case JANET_NUMBER: {
2059
0
            double y = janet_unwrap_number(x);
2060
0
            if (janet_checkintrange(y)) {
2061
0
                ret = (int32_t) y;
2062
0
            } else {
2063
0
                goto error;
2064
0
            }
2065
0
            break;
2066
0
        }
2067
0
        case JANET_TUPLE: {
2068
0
            const Janet *t = janet_unwrap_tuple(x);
2069
0
            if (argtype == JANET_OAT_TYPE) {
2070
0
                int32_t i = 0;
2071
0
                ret = 0;
2072
0
                for (i = 0; i < janet_tuple_length(t); i++) {
2073
0
                    ret |= doarg_1(a, JANET_OAT_SIMPLETYPE, t[i]);
2074
0
                }
2075
0
            } else {
2076
0
                goto error;
2077
0
            }
2078
0
            break;
2079
0
        }
2080
0
        case JANET_KEYWORD: {
2081
0
            if (NULL != c && argtype == JANET_OAT_LABEL) {
2082
0
                Janet result = janet_table_get(c, x);
2083
0
                if (janet_checktype(result, JANET_NUMBER)) {
2084
0
                    ret = janet_unwrap_integer(result) - a->bytecode_count;
2085
0
                } else {
2086
0
                    goto error;
2087
0
                }
2088
0
            } else if (argtype == JANET_OAT_TYPE || argtype == JANET_OAT_SIMPLETYPE) {
2089
0
                const TypeAlias *alias = janet_strbinsearch(
2090
0
                                             &type_aliases,
2091
0
                                             sizeof(type_aliases) / sizeof(TypeAlias),
2092
0
                                             sizeof(TypeAlias),
2093
0
                                             janet_unwrap_keyword(x));
2094
0
                if (alias) {
2095
0
                    ret = alias->mask;
2096
0
                } else {
2097
0
                    janet_asm_errorv(a, janet_formatc("unknown type %v", x));
2098
0
                }
2099
0
            } else {
2100
0
                goto error;
2101
0
            }
2102
0
            break;
2103
0
        }
2104
0
        case JANET_SYMBOL: {
2105
0
            if (NULL != c) {
2106
0
                Janet result = janet_table_get(c, x);
2107
0
                if (janet_checktype(result, JANET_NUMBER)) {
2108
0
                    ret = (int32_t) janet_unwrap_number(result);
2109
0
                } else {
2110
0
                    janet_asm_errorv(a, janet_formatc("unknown name %v", x));
2111
0
                }
2112
0
            } else {
2113
0
                goto error;
2114
0
            }
2115
0
            if (argtype == JANET_OAT_ENVIRONMENT && ret == -1) {
2116
                /* Add a new env */
2117
0
                ret = janet_asm_addenv(a, x);
2118
0
                if (ret < -1) {
2119
0
                    janet_asm_errorv(a, janet_formatc("unknown environment %v", x));
2120
0
                }
2121
0
            }
2122
0
            break;
2123
0
        }
2124
0
    }
2125
0
    if (argtype == JANET_OAT_SLOT && ret >= a->def->slotcount)
2126
0
        a->def->slotcount = (int32_t) ret + 1;
2127
0
    return ret;
2128
2129
0
error:
2130
0
    janet_asm_errorv(a, janet_formatc("error parsing instruction argument %v", x));
2131
0
    return 0;
2132
0
}
2133
2134
/* Parse a single argument to an instruction. Trims it as well as
2135
 * try to convert arguments to bit patterns */
2136
static uint32_t doarg(
2137
    JanetAssembler *a,
2138
    enum JanetOpArgType argtype,
2139
    int nth,
2140
    int nbytes,
2141
    int hassign,
2142
0
    Janet x) {
2143
0
    int32_t arg = doarg_1(a, argtype, x);
2144
    /* Calculate the min and max values that can be stored given
2145
     * nbytes, and whether or not the storage is signed */
2146
0
    int32_t max = (1 << ((nbytes << 3) - hassign)) - 1;
2147
0
    int32_t min = hassign ? -max - 1 : 0;
2148
0
    if (arg < min)
2149
0
        janet_asm_errorv(a, janet_formatc("instruction argument %v is too small, must be %d byte%s",
2150
0
                                          x, nbytes, nbytes > 1 ? "s" : ""));
2151
0
    if (arg > max)
2152
0
        janet_asm_errorv(a, janet_formatc("instruction argument %v is too large, must be %d byte%s",
2153
0
                                          x, nbytes, nbytes > 1 ? "s" : ""));
2154
0
    return ((uint32_t) arg) << (nth << 3);
2155
0
}
2156
2157
/* Provide parsing methods for the different kinds of arguments */
2158
static uint32_t read_instruction(
2159
    JanetAssembler *a,
2160
    const JanetInstructionDef *idef,
2161
0
    const Janet *argt) {
2162
0
    uint32_t instr = idef->opcode;
2163
0
    enum JanetInstructionType type = janet_instructions[idef->opcode];
2164
0
    switch (type) {
2165
0
        case JINT_0: {
2166
0
            if (janet_tuple_length(argt) != 1)
2167
0
                janet_asm_error(a, "expected 0 arguments: (op)");
2168
0
            break;
2169
0
        }
2170
0
        case JINT_S: {
2171
0
            if (janet_tuple_length(argt) != 2)
2172
0
                janet_asm_error(a, "expected 1 argument: (op, slot)");
2173
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 2, 0, argt[1]);
2174
0
            break;
2175
0
        }
2176
0
        case JINT_L: {
2177
0
            if (janet_tuple_length(argt) != 2)
2178
0
                janet_asm_error(a, "expected 1 argument: (op, label)");
2179
0
            instr |= doarg(a, JANET_OAT_LABEL, 1, 3, 1, argt[1]);
2180
0
            break;
2181
0
        }
2182
0
        case JINT_SS: {
2183
0
            if (janet_tuple_length(argt) != 3)
2184
0
                janet_asm_error(a, "expected 2 arguments: (op, slot, slot)");
2185
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 1, 0, argt[1]);
2186
0
            instr |= doarg(a, JANET_OAT_SLOT, 2, 2, 0, argt[2]);
2187
0
            break;
2188
0
        }
2189
0
        case JINT_SL: {
2190
0
            if (janet_tuple_length(argt) != 3)
2191
0
                janet_asm_error(a, "expected 2 arguments: (op, slot, label)");
2192
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 1, 0, argt[1]);
2193
0
            instr |= doarg(a, JANET_OAT_LABEL, 2, 2, 1, argt[2]);
2194
0
            break;
2195
0
        }
2196
0
        case JINT_ST: {
2197
0
            if (janet_tuple_length(argt) != 3)
2198
0
                janet_asm_error(a, "expected 2 arguments: (op, slot, type)");
2199
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 1, 0, argt[1]);
2200
0
            instr |= doarg(a, JANET_OAT_TYPE, 2, 2, 0, argt[2]);
2201
0
            break;
2202
0
        }
2203
0
        case JINT_SI:
2204
0
        case JINT_SU: {
2205
0
            if (janet_tuple_length(argt) != 3)
2206
0
                janet_asm_error(a, "expected 2 arguments: (op, slot, integer)");
2207
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 1, 0, argt[1]);
2208
0
            instr |= doarg(a, JANET_OAT_INTEGER, 2, 2, type == JINT_SI, argt[2]);
2209
0
            break;
2210
0
        }
2211
0
        case JINT_SD: {
2212
0
            if (janet_tuple_length(argt) != 3)
2213
0
                janet_asm_error(a, "expected 2 arguments: (op, slot, funcdef)");
2214
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 1, 0, argt[1]);
2215
0
            instr |= doarg(a, JANET_OAT_FUNCDEF, 2, 2, 0, argt[2]);
2216
0
            break;
2217
0
        }
2218
0
        case JINT_SSS: {
2219
0
            if (janet_tuple_length(argt) != 4)
2220
0
                janet_asm_error(a, "expected 3 arguments: (op, slot, slot, slot)");
2221
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 1, 0, argt[1]);
2222
0
            instr |= doarg(a, JANET_OAT_SLOT, 2, 1, 0, argt[2]);
2223
0
            instr |= doarg(a, JANET_OAT_SLOT, 3, 1, 0, argt[3]);
2224
0
            break;
2225
0
        }
2226
0
        case JINT_SSI:
2227
0
        case JINT_SSU: {
2228
0
            if (janet_tuple_length(argt) != 4)
2229
0
                janet_asm_error(a, "expected 3 arguments: (op, slot, slot, integer)");
2230
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 1, 0, argt[1]);
2231
0
            instr |= doarg(a, JANET_OAT_SLOT, 2, 1, 0, argt[2]);
2232
0
            instr |= doarg(a, JANET_OAT_INTEGER, 3, 1, type == JINT_SSI, argt[3]);
2233
0
            break;
2234
0
        }
2235
0
        case JINT_SES: {
2236
0
            JanetAssembler *b = a;
2237
0
            uint32_t env;
2238
0
            if (janet_tuple_length(argt) != 4)
2239
0
                janet_asm_error(a, "expected 3 arguments: (op, slot, environment, envslot)");
2240
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 1, 0, argt[1]);
2241
0
            env = doarg(a, JANET_OAT_ENVIRONMENT, 0, 1, 0, argt[2]);
2242
0
            instr |= env << 16;
2243
0
            for (env += 1; env > 0; env--) {
2244
0
                b = b->parent;
2245
0
                if (NULL == b)
2246
0
                    janet_asm_error(a, "invalid environment index");
2247
0
            }
2248
0
            instr |= doarg(b, JANET_OAT_SLOT, 3, 1, 0, argt[3]);
2249
0
            break;
2250
0
        }
2251
0
        case JINT_SC: {
2252
0
            if (janet_tuple_length(argt) != 3)
2253
0
                janet_asm_error(a, "expected 2 arguments: (op, slot, constant)");
2254
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 1, 0, argt[1]);
2255
0
            instr |= doarg(a, JANET_OAT_CONSTANT, 2, 2, 0, argt[2]);
2256
0
            break;
2257
0
        }
2258
0
    }
2259
0
    return instr;
2260
0
}
2261
2262
/* Helper to get from a structure */
2263
0
static Janet janet_get1(Janet ds, Janet key) {
2264
0
    switch (janet_type(ds)) {
2265
0
        default:
2266
0
            return janet_wrap_nil();
2267
0
        case JANET_TABLE:
2268
0
            return janet_table_get(janet_unwrap_table(ds), key);
2269
0
        case JANET_STRUCT:
2270
0
            return janet_struct_get(janet_unwrap_struct(ds), key);
2271
0
    }
2272
0
}
2273
2274
/* Helper to assembly. Return the assembly result */
2275
0
static JanetAssembleResult janet_asm1(JanetAssembler *parent, Janet source, int flags) {
2276
0
    JanetAssembleResult result;
2277
0
    JanetAssembler a;
2278
0
    Janet s = source;
2279
0
    JanetFuncDef *def;
2280
0
    int32_t count, i;
2281
0
    const Janet *arr;
2282
0
    Janet x;
2283
0
    (void) flags;
2284
2285
    /* Initialize funcdef */
2286
0
    def = janet_funcdef_alloc();
2287
2288
    /* Initialize Assembler */
2289
0
    a.def = def;
2290
0
    a.parent = parent;
2291
0
    a.errmessage = NULL;
2292
0
    a.errindex = 0;
2293
0
    a.environments_capacity = 0;
2294
0
    a.bytecode_count = 0;
2295
0
    a.defs_capacity = 0;
2296
0
    a.name = janet_wrap_nil();
2297
0
    janet_table_init(&a.labels, 0);
2298
0
    janet_table_init(&a.slots, 0);
2299
0
    janet_table_init(&a.envs, 0);
2300
0
    janet_table_init(&a.defs, 0);
2301
2302
    /* Set error jump */
2303
#if defined(JANET_BSD) || defined(JANET_APPLE)
2304
    if (_setjmp(a.on_error)) {
2305
#else
2306
0
    if (setjmp(a.on_error)) {
2307
0
#endif
2308
0
        if (NULL != a.parent) {
2309
0
            janet_asm_deinit(&a);
2310
0
            a.parent->errmessage = a.errmessage;
2311
0
            janet_asm_longjmp(a.parent);
2312
0
        }
2313
0
        result.funcdef = NULL;
2314
0
        result.error = a.errmessage;
2315
0
        result.status = JANET_ASSEMBLE_ERROR;
2316
0
        janet_asm_deinit(&a);
2317
0
        return result;
2318
0
    }
2319
2320
0
    janet_asm_assert(&a,
2321
0
                     janet_checktype(s, JANET_STRUCT) ||
2322
0
                     janet_checktype(s, JANET_TABLE),
2323
0
                     "expected struct or table for assembly source");
2324
2325
    /* Check for function name */
2326
0
    a.name = janet_get1(s, janet_ckeywordv("name"));
2327
0
    if (!janet_checktype(a.name, JANET_NIL)) {
2328
0
        def->name = janet_to_string(a.name);
2329
0
    }
2330
2331
    /* Set function arity */
2332
0
    x = janet_get1(s, janet_ckeywordv("arity"));
2333
0
    def->arity = janet_checkint(x) ? janet_unwrap_integer(x) : 0;
2334
0
    janet_asm_assert(&a, def->arity >= 0, "arity must be non-negative");
2335
2336
0
    x = janet_get1(s, janet_ckeywordv("max-arity"));
2337
0
    def->max_arity = janet_checkint(x) ? janet_unwrap_integer(x) : def->arity;
2338
0
    janet_asm_assert(&a, def->max_arity >= def->arity, "max-arity must be greater than or equal to arity");
2339
2340
0
    x = janet_get1(s, janet_ckeywordv("min-arity"));
2341
0
    def->min_arity = janet_checkint(x) ? janet_unwrap_integer(x) : def->arity;
2342
0
    janet_asm_assert(&a, def->min_arity <= def->arity, "min-arity must be less than or equal to arity");
2343
2344
    /* Check vararg */
2345
0
    x = janet_get1(s, janet_ckeywordv("vararg"));
2346
0
    if (janet_truthy(x)) def->flags |= JANET_FUNCDEF_FLAG_VARARG;
2347
2348
    /* Check structarg */
2349
0
    x = janet_get1(s, janet_ckeywordv("structarg"));
2350
0
    if (janet_truthy(x)) def->flags |= JANET_FUNCDEF_FLAG_STRUCTARG;
2351
2352
    /* Check source */
2353
0
    x = janet_get1(s, janet_ckeywordv("source"));
2354
0
    if (janet_checktype(x, JANET_STRING)) def->source = janet_unwrap_string(x);
2355
2356
    /* Create slot aliases */
2357
0
    x = janet_get1(s, janet_ckeywordv("slots"));
2358
0
    if (janet_indexed_view(x, &arr, &count)) {
2359
0
        for (i = 0; i < count; i++) {
2360
0
            Janet v = arr[i];
2361
0
            if (janet_checktype(v, JANET_TUPLE)) {
2362
0
                const Janet *t = janet_unwrap_tuple(v);
2363
0
                int32_t j;
2364
0
                for (j = 0; j < janet_tuple_length(t); j++) {
2365
0
                    if (!janet_checktype(t[j], JANET_SYMBOL))
2366
0
                        janet_asm_error(&a, "slot names must be symbols");
2367
0
                    janet_table_put(&a.slots, t[j], janet_wrap_integer(i));
2368
0
                }
2369
0
            } else if (janet_checktype(v, JANET_SYMBOL)) {
2370
0
                janet_table_put(&a.slots, v, janet_wrap_integer(i));
2371
0
            } else {
2372
0
                janet_asm_error(&a, "slot names must be symbols or tuple of symbols");
2373
0
            }
2374
0
        }
2375
0
    }
2376
2377
    /* Parse constants */
2378
0
    x = janet_get1(s, janet_ckeywordv("constants"));
2379
0
    if (janet_indexed_view(x, &arr, &count)) {
2380
0
        def->constants_length = count;
2381
0
        def->constants = janet_malloc(sizeof(Janet) * (size_t) count);
2382
0
        if (NULL == def->constants) {
2383
0
            JANET_OUT_OF_MEMORY;
2384
0
        }
2385
0
        for (i = 0; i < count; i++) {
2386
0
            Janet ct = arr[i];
2387
0
            def->constants[i] = ct;
2388
0
        }
2389
0
    } else {
2390
0
        def->constants = NULL;
2391
0
        def->constants_length = 0;
2392
0
    }
2393
2394
    /* Parse sub funcdefs */
2395
0
    x = janet_get1(s, janet_ckeywordv("closures"));
2396
0
    if (janet_checktype(x, JANET_NIL)) {
2397
0
        x = janet_get1(s, janet_ckeywordv("defs"));
2398
0
    }
2399
0
    if (janet_indexed_view(x, &arr, &count)) {
2400
0
        int32_t i;
2401
0
        for (i = 0; i < count; i++) {
2402
0
            JanetAssembleResult subres;
2403
0
            Janet subname;
2404
0
            int32_t newlen;
2405
0
            subres = janet_asm1(&a, arr[i], flags);
2406
0
            if (subres.status != JANET_ASSEMBLE_OK) {
2407
0
                janet_asm_errorv(&a, subres.error);
2408
0
            }
2409
0
            subname = janet_get1(arr[i], janet_ckeywordv("name"));
2410
0
            if (!janet_checktype(subname, JANET_NIL)) {
2411
0
                janet_table_put(&a.defs, subname, janet_wrap_integer(def->defs_length));
2412
0
            }
2413
0
            newlen = def->defs_length + 1;
2414
0
            if (a.defs_capacity < newlen) {
2415
0
                int32_t newcap = newlen;
2416
0
                def->defs = janet_realloc(def->defs, newcap * sizeof(JanetFuncDef *));
2417
0
                if (NULL == def->defs) {
2418
0
                    JANET_OUT_OF_MEMORY;
2419
0
                }
2420
0
                a.defs_capacity = newcap;
2421
0
            }
2422
0
            def->defs[def->defs_length] = subres.funcdef;
2423
0
            def->defs_length = newlen;
2424
0
        }
2425
0
    }
2426
2427
    /* Parse bytecode and labels */
2428
0
    x = janet_get1(s, janet_ckeywordv("bytecode"));
2429
0
    if (janet_indexed_view(x, &arr, &count)) {
2430
        /* Do labels and find length */
2431
0
        int32_t blength = 0;
2432
0
        for (i = 0; i < count; ++i) {
2433
0
            Janet instr = arr[i];
2434
0
            if (janet_checktype(instr, JANET_KEYWORD)) {
2435
0
                janet_table_put(&a.labels, instr, janet_wrap_integer(blength));
2436
0
            } else if (janet_checktype(instr, JANET_TUPLE)) {
2437
0
                blength++;
2438
0
            } else {
2439
0
                a.errindex = i;
2440
0
                janet_asm_error(&a, "expected assembly instruction");
2441
0
            }
2442
0
        }
2443
        /* Allocate bytecode array */
2444
0
        def->bytecode_length = blength;
2445
0
        def->bytecode = janet_malloc(sizeof(uint32_t) * (size_t) blength);
2446
0
        if (NULL == def->bytecode) {
2447
0
            JANET_OUT_OF_MEMORY;
2448
0
        }
2449
        /* Do bytecode */
2450
0
        for (i = 0; i < count; ++i) {
2451
0
            Janet instr = arr[i];
2452
0
            if (janet_checktype(instr, JANET_KEYWORD)) {
2453
0
                continue;
2454
0
            } else {
2455
0
                uint32_t op;
2456
0
                const JanetInstructionDef *idef;
2457
0
                const Janet *t;
2458
0
                a.errindex = i;
2459
0
                janet_asm_assert(&a, janet_checktype(instr, JANET_TUPLE), "expected tuple");
2460
0
                t = janet_unwrap_tuple(instr);
2461
0
                if (janet_tuple_length(t) == 0) {
2462
0
                    op = 0;
2463
0
                } else {
2464
0
                    janet_asm_assert(&a, janet_checktype(t[0], JANET_SYMBOL),
2465
0
                                     "expected symbol in assembly instruction");
2466
0
                    idef = janet_strbinsearch(
2467
0
                               &janet_ops,
2468
0
                               sizeof(janet_ops) / sizeof(JanetInstructionDef),
2469
0
                               sizeof(JanetInstructionDef),
2470
0
                               janet_unwrap_symbol(t[0]));
2471
0
                    if (NULL == idef)
2472
0
                        janet_asm_errorv(&a, janet_formatc("unknown instruction %v", t[0]));
2473
0
                    op = read_instruction(&a, idef, t);
2474
0
                }
2475
0
                def->bytecode[a.bytecode_count++] = op;
2476
0
            }
2477
0
        }
2478
0
    } else {
2479
0
        janet_asm_error(&a, "bytecode expected");
2480
0
    }
2481
0
    a.errindex = -1;
2482
2483
    /* Check for source mapping */
2484
0
    x = janet_get1(s, janet_ckeywordv("sourcemap"));
2485
0
    if (janet_indexed_view(x, &arr, &count)) {
2486
0
        janet_asm_assert(&a, count == def->bytecode_length, "sourcemap must have the same length as the bytecode");
2487
0
        def->sourcemap = janet_malloc(sizeof(JanetSourceMapping) * (size_t) count);
2488
0
        if (NULL == def->sourcemap) {
2489
0
            JANET_OUT_OF_MEMORY;
2490
0
        }
2491
0
        for (i = 0; i < count; i++) {
2492
0
            const Janet *tup;
2493
0
            Janet entry = arr[i];
2494
0
            JanetSourceMapping mapping;
2495
0
            if (!janet_checktype(entry, JANET_TUPLE)) {
2496
0
                janet_asm_error(&a, "expected tuple");
2497
0
            }
2498
0
            tup = janet_unwrap_tuple(entry);
2499
0
            if (!janet_checkint(tup[0])) {
2500
0
                janet_asm_error(&a, "expected integer");
2501
0
            }
2502
0
            if (!janet_checkint(tup[1])) {
2503
0
                janet_asm_error(&a, "expected integer");
2504
0
            }
2505
0
            mapping.line = janet_unwrap_integer(tup[0]);
2506
0
            mapping.column = janet_unwrap_integer(tup[1]);
2507
0
            def->sourcemap[i] = mapping;
2508
0
        }
2509
0
    }
2510
2511
    /* Set symbolmap */
2512
0
    def->symbolmap = NULL;
2513
0
    def->symbolmap_length = 0;
2514
0
    x = janet_get1(s, janet_ckeywordv("symbolmap"));
2515
0
    if (janet_indexed_view(x, &arr, &count)) {
2516
0
        def->symbolmap_length = count;
2517
0
        def->symbolmap = janet_malloc(sizeof(JanetSymbolMap) * (size_t)count);
2518
0
        if (NULL == def->symbolmap) {
2519
0
            JANET_OUT_OF_MEMORY;
2520
0
        }
2521
0
        for (i = 0; i < count; i++) {
2522
0
            const Janet *tup;
2523
0
            Janet entry = arr[i];
2524
0
            JanetSymbolMap ss;
2525
0
            if (!janet_checktype(entry, JANET_TUPLE)) {
2526
0
                janet_asm_error(&a, "expected tuple");
2527
0
            }
2528
0
            tup = janet_unwrap_tuple(entry);
2529
0
            if (janet_keyeq(tup[0], "upvalue")) {
2530
0
                ss.birth_pc = UINT32_MAX;
2531
0
            } else if (!janet_checkint(tup[0])) {
2532
0
                janet_asm_error(&a, "expected integer");
2533
0
            } else {
2534
0
                ss.birth_pc = janet_unwrap_integer(tup[0]);
2535
0
            }
2536
0
            if (!janet_checkint(tup[1])) {
2537
0
                janet_asm_error(&a, "expected integer");
2538
0
            }
2539
0
            if (!janet_checkint(tup[2])) {
2540
0
                janet_asm_error(&a, "expected integer");
2541
0
            }
2542
0
            if (!janet_checktype(tup[3], JANET_SYMBOL)) {
2543
0
                janet_asm_error(&a, "expected symbol");
2544
0
            }
2545
0
            ss.death_pc = janet_unwrap_integer(tup[1]);
2546
0
            ss.slot_index = janet_unwrap_integer(tup[2]);
2547
0
            ss.symbol = janet_unwrap_symbol(tup[3]);
2548
0
            def->symbolmap[i] = ss;
2549
0
        }
2550
0
    }
2551
0
    if (def->symbolmap_length) def->flags |= JANET_FUNCDEF_FLAG_HASSYMBOLMAP;
2552
2553
    /* Set environments */
2554
0
    x = janet_get1(s, janet_ckeywordv("environments"));
2555
0
    if (janet_indexed_view(x, &arr, &count)) {
2556
0
        def->environments_length = count;
2557
0
        if (def->environments_length) {
2558
0
            def->environments = janet_realloc(def->environments, def->environments_length * sizeof(int32_t));
2559
0
        }
2560
0
        for (int32_t i = 0; i < count; i++) {
2561
0
            if (!janet_checkint(arr[i])) {
2562
0
                janet_asm_error(&a, "expected integer");
2563
0
            }
2564
0
            def->environments[i] = janet_unwrap_integer(arr[i]);
2565
0
        }
2566
0
    }
2567
0
    if (def->environments_length && NULL == def->environments) {
2568
0
        JANET_OUT_OF_MEMORY;
2569
0
    }
2570
2571
    /* Verify the func def */
2572
0
    if (janet_verify(def)) {
2573
0
        janet_asm_error(&a, "invalid assembly");
2574
0
    }
2575
2576
    /* Add final flags */
2577
0
    janet_def_addflags(def);
2578
2579
    /* Finish everything and return funcdef */
2580
0
    janet_asm_deinit(&a);
2581
0
    result.error = NULL;
2582
0
    result.funcdef = def;
2583
0
    result.status = JANET_ASSEMBLE_OK;
2584
0
    return result;
2585
0
}
2586
2587
/* Assemble a function */
2588
0
JanetAssembleResult janet_asm(Janet source, int flags) {
2589
0
    return janet_asm1(NULL, source, flags);
2590
0
}
2591
2592
/* Disassembly */
2593
2594
/* Find the definition of an instruction given the instruction word. Return
2595
 * NULL if not found. */
2596
0
static const JanetInstructionDef *janet_asm_reverse_lookup(uint32_t instr) {
2597
0
    size_t i;
2598
0
    uint32_t opcode = instr & 0x7F;
2599
0
    for (i = 0; i < sizeof(janet_ops) / sizeof(JanetInstructionDef); i++) {
2600
0
        const JanetInstructionDef *def = janet_ops + i;
2601
0
        if (def->opcode == opcode)
2602
0
            return def;
2603
0
    }
2604
0
    return NULL;
2605
0
}
2606
2607
/* Create some constant sized tuples */
2608
0
static const Janet *tup1(Janet x) {
2609
0
    Janet *tup = janet_tuple_begin(1);
2610
0
    tup[0] = x;
2611
0
    return janet_tuple_end(tup);
2612
0
}
2613
0
static const Janet *tup2(Janet x, Janet y) {
2614
0
    Janet *tup = janet_tuple_begin(2);
2615
0
    tup[0] = x;
2616
0
    tup[1] = y;
2617
0
    return janet_tuple_end(tup);
2618
0
}
2619
0
static const Janet *tup3(Janet x, Janet y, Janet z) {
2620
0
    Janet *tup = janet_tuple_begin(3);
2621
0
    tup[0] = x;
2622
0
    tup[1] = y;
2623
0
    tup[2] = z;
2624
0
    return janet_tuple_end(tup);
2625
0
}
2626
0
static const Janet *tup4(Janet w, Janet x, Janet y, Janet z) {
2627
0
    Janet *tup = janet_tuple_begin(4);
2628
0
    tup[0] = w;
2629
0
    tup[1] = x;
2630
0
    tup[2] = y;
2631
0
    tup[3] = z;
2632
0
    return janet_tuple_end(tup);
2633
0
}
2634
2635
/* Given an argument, convert it to the appropriate integer or symbol */
2636
0
Janet janet_asm_decode_instruction(uint32_t instr) {
2637
0
    const JanetInstructionDef *def = janet_asm_reverse_lookup(instr);
2638
0
    Janet name;
2639
0
    if (NULL == def) {
2640
0
        return janet_wrap_integer((int32_t)instr);
2641
0
    }
2642
0
    name = janet_csymbolv(def->name);
2643
0
    const Janet *ret = NULL;
2644
0
#define oparg(shift, mask) ((instr >> ((shift) << 3)) & (mask))
2645
0
    switch (janet_instructions[def->opcode]) {
2646
0
        case JINT_0:
2647
0
            ret = tup1(name);
2648
0
            break;
2649
0
        case JINT_S:
2650
0
            ret = tup2(name, janet_wrap_integer(oparg(1, 0xFFFFFF)));
2651
0
            break;
2652
0
        case JINT_L:
2653
0
            ret = tup2(name, janet_wrap_integer((int32_t)instr >> 8));
2654
0
            break;
2655
0
        case JINT_SS:
2656
0
        case JINT_ST:
2657
0
        case JINT_SC:
2658
0
        case JINT_SU:
2659
0
        case JINT_SD:
2660
0
            ret = tup3(name,
2661
0
                       janet_wrap_integer(oparg(1, 0xFF)),
2662
0
                       janet_wrap_integer(oparg(2, 0xFFFF)));
2663
0
            break;
2664
0
        case JINT_SI:
2665
0
        case JINT_SL:
2666
0
            ret =  tup3(name,
2667
0
                        janet_wrap_integer(oparg(1, 0xFF)),
2668
0
                        janet_wrap_integer((int32_t)instr >> 16));
2669
0
            break;
2670
0
        case JINT_SSS:
2671
0
        case JINT_SES:
2672
0
        case JINT_SSU:
2673
0
            ret = tup4(name,
2674
0
                       janet_wrap_integer(oparg(1, 0xFF)),
2675
0
                       janet_wrap_integer(oparg(2, 0xFF)),
2676
0
                       janet_wrap_integer(oparg(3, 0xFF)));
2677
0
            break;
2678
0
        case JINT_SSI:
2679
0
            ret = tup4(name,
2680
0
                       janet_wrap_integer(oparg(1, 0xFF)),
2681
0
                       janet_wrap_integer(oparg(2, 0xFF)),
2682
0
                       janet_wrap_integer((int32_t)instr >> 24));
2683
0
            break;
2684
0
    }
2685
0
#undef oparg
2686
0
    if (ret) {
2687
        /* Check if break point set */
2688
0
        if (instr & 0x80) {
2689
0
            janet_tuple_flag(ret) |= JANET_TUPLE_FLAG_BRACKETCTOR;
2690
0
        }
2691
0
        return janet_wrap_tuple(ret);
2692
0
    }
2693
0
    return janet_wrap_nil();
2694
0
}
2695
2696
/*
2697
 * Disasm sections
2698
 */
2699
2700
0
static Janet janet_disasm_arity(JanetFuncDef *def) {
2701
0
    return janet_wrap_integer(def->arity);
2702
0
}
2703
2704
0
static Janet janet_disasm_min_arity(JanetFuncDef *def) {
2705
0
    return janet_wrap_integer(def->min_arity);
2706
0
}
2707
2708
0
static Janet janet_disasm_max_arity(JanetFuncDef *def) {
2709
0
    return janet_wrap_integer(def->max_arity);
2710
0
}
2711
2712
0
static Janet janet_disasm_slotcount(JanetFuncDef *def) {
2713
0
    return janet_wrap_integer(def->slotcount);
2714
0
}
2715
2716
0
static Janet janet_disasm_symbolslots(JanetFuncDef *def) {
2717
0
    if (def->symbolmap == NULL) {
2718
0
        return janet_wrap_nil();
2719
0
    }
2720
0
    JanetArray *symbolslots = janet_array(def->symbolmap_length);
2721
0
    Janet upvaluekw = janet_ckeywordv("upvalue");
2722
0
    for (int32_t i = 0; i < def->symbolmap_length; i++) {
2723
0
        JanetSymbolMap ss = def->symbolmap[i];
2724
0
        Janet *t = janet_tuple_begin(4);
2725
0
        if (ss.birth_pc == UINT32_MAX) {
2726
0
            t[0] = upvaluekw;
2727
0
        } else {
2728
0
            t[0] = janet_wrap_integer(ss.birth_pc);
2729
0
        }
2730
0
        t[1] = janet_wrap_integer(ss.death_pc);
2731
0
        t[2] = janet_wrap_integer(ss.slot_index);
2732
0
        t[3] = janet_wrap_symbol(ss.symbol);
2733
0
        symbolslots->data[i] = janet_wrap_tuple(janet_tuple_end(t));
2734
0
    }
2735
0
    symbolslots->count = def->symbolmap_length;
2736
0
    return janet_wrap_array(symbolslots);
2737
0
}
2738
2739
2740
0
static Janet janet_disasm_bytecode(JanetFuncDef *def) {
2741
0
    JanetArray *bcode = janet_array(def->bytecode_length);
2742
0
    for (int32_t i = 0; i < def->bytecode_length; i++) {
2743
0
        bcode->data[i] = janet_asm_decode_instruction(def->bytecode[i]);
2744
0
    }
2745
0
    bcode->count = def->bytecode_length;
2746
0
    return janet_wrap_array(bcode);
2747
0
}
2748
2749
0
static Janet janet_disasm_source(JanetFuncDef *def) {
2750
0
    if (def->source != NULL) return janet_wrap_string(def->source);
2751
0
    return janet_wrap_nil();
2752
0
}
2753
2754
0
static Janet janet_disasm_name(JanetFuncDef *def) {
2755
0
    if (def->name != NULL) return janet_wrap_string(def->name);
2756
0
    return janet_wrap_nil();
2757
0
}
2758
2759
0
static Janet janet_disasm_vararg(JanetFuncDef *def) {
2760
0
    return janet_wrap_boolean(def->flags & JANET_FUNCDEF_FLAG_VARARG);
2761
0
}
2762
2763
0
static Janet janet_disasm_structarg(JanetFuncDef *def) {
2764
0
    return janet_wrap_boolean(def->flags & JANET_FUNCDEF_FLAG_STRUCTARG);
2765
0
}
2766
2767
0
static Janet janet_disasm_constants(JanetFuncDef *def) {
2768
0
    JanetArray *constants = janet_array(def->constants_length);
2769
0
    for (int32_t i = 0; i < def->constants_length; i++) {
2770
0
        constants->data[i] = def->constants[i];
2771
0
    }
2772
0
    constants->count = def->constants_length;
2773
0
    return janet_wrap_array(constants);
2774
0
}
2775
2776
0
static Janet janet_disasm_sourcemap(JanetFuncDef *def) {
2777
0
    if (NULL == def->sourcemap) return janet_wrap_nil();
2778
0
    JanetArray *sourcemap = janet_array(def->bytecode_length);
2779
0
    for (int32_t i = 0; i < def->bytecode_length; i++) {
2780
0
        Janet *t = janet_tuple_begin(2);
2781
0
        JanetSourceMapping mapping = def->sourcemap[i];
2782
0
        t[0] = janet_wrap_integer(mapping.line);
2783
0
        t[1] = janet_wrap_integer(mapping.column);
2784
0
        sourcemap->data[i] = janet_wrap_tuple(janet_tuple_end(t));
2785
0
    }
2786
0
    sourcemap->count = def->bytecode_length;
2787
0
    return janet_wrap_array(sourcemap);
2788
0
}
2789
2790
0
static Janet janet_disasm_environments(JanetFuncDef *def) {
2791
0
    JanetArray *envs = janet_array(def->environments_length);
2792
0
    for (int32_t i = 0; i < def->environments_length; i++) {
2793
0
        envs->data[i] = janet_wrap_integer(def->environments[i]);
2794
0
    }
2795
0
    envs->count = def->environments_length;
2796
0
    return janet_wrap_array(envs);
2797
0
}
2798
2799
0
static Janet janet_disasm_defs(JanetFuncDef *def) {
2800
0
    JanetArray *defs = janet_array(def->defs_length);
2801
0
    for (int32_t i = 0; i < def->defs_length; i++) {
2802
0
        defs->data[i] = janet_disasm(def->defs[i]);
2803
0
    }
2804
0
    defs->count = def->defs_length;
2805
0
    return janet_wrap_array(defs);
2806
0
}
2807
2808
0
Janet janet_disasm(JanetFuncDef *def) {
2809
0
    JanetTable *ret = janet_table(10);
2810
0
    janet_table_put(ret, janet_ckeywordv("arity"), janet_disasm_arity(def));
2811
0
    janet_table_put(ret, janet_ckeywordv("min-arity"), janet_disasm_min_arity(def));
2812
0
    janet_table_put(ret, janet_ckeywordv("max-arity"), janet_disasm_max_arity(def));
2813
0
    janet_table_put(ret, janet_ckeywordv("bytecode"), janet_disasm_bytecode(def));
2814
0
    janet_table_put(ret, janet_ckeywordv("source"), janet_disasm_source(def));
2815
0
    janet_table_put(ret, janet_ckeywordv("vararg"), janet_disasm_vararg(def));
2816
0
    janet_table_put(ret, janet_ckeywordv("structarg"), janet_disasm_structarg(def));
2817
0
    janet_table_put(ret, janet_ckeywordv("name"), janet_disasm_name(def));
2818
0
    janet_table_put(ret, janet_ckeywordv("slotcount"), janet_disasm_slotcount(def));
2819
0
    janet_table_put(ret, janet_ckeywordv("symbolmap"), janet_disasm_symbolslots(def));
2820
0
    janet_table_put(ret, janet_ckeywordv("constants"), janet_disasm_constants(def));
2821
0
    janet_table_put(ret, janet_ckeywordv("sourcemap"), janet_disasm_sourcemap(def));
2822
0
    janet_table_put(ret, janet_ckeywordv("environments"), janet_disasm_environments(def));
2823
0
    janet_table_put(ret, janet_ckeywordv("defs"), janet_disasm_defs(def));
2824
0
    return janet_wrap_struct(janet_table_to_struct(ret));
2825
0
}
2826
2827
JANET_CORE_FN(cfun_asm,
2828
              "(asm assembly)",
2829
              "Returns a new function that is the compiled result of the assembly.\n"
2830
              "The syntax for the assembly can be found on the Janet website, and should correspond\n"
2831
              "to the return value of disasm. Will throw an\n"
2832
0
              "error on invalid assembly.") {
2833
0
    janet_fixarity(argc, 1);
2834
0
    JanetAssembleResult res;
2835
0
    res = janet_asm(argv[0], 0);
2836
0
    if (res.status != JANET_ASSEMBLE_OK) {
2837
0
        janet_panics(res.error ? res.error : janet_cstring("invalid assembly"));
2838
0
    }
2839
0
    return janet_wrap_function(janet_thunk(res.funcdef));
2840
0
}
2841
2842
JANET_CORE_FN(cfun_disasm,
2843
              "(disasm func &opt field)",
2844
              "Returns assembly that could be used to compile the given function. "
2845
              "func must be a function, not a c function. Will throw on error on a badly "
2846
              "typed argument. If given a field name, will only return that part of the function assembly. "
2847
              "Possible fields are:\n\n"
2848
              "* :arity - number of required and optional arguments.\n"
2849
              "* :min-arity - minimum number of arguments function can be called with.\n"
2850
              "* :max-arity - maximum number of arguments function can be called with.\n"
2851
              "* :vararg - true if function can take a variable number of arguments.\n"
2852
              "* :bytecode - array of parsed bytecode instructions. Each instruction is a tuple.\n"
2853
              "* :source - name of source file that this function was compiled from.\n"
2854
              "* :name - name of function.\n"
2855
              "* :slotcount - how many virtual registers, or slots, this function uses. Corresponds to stack space used by function.\n"
2856
              "* :symbolmap - all symbols and their slots.\n"
2857
              "* :constants - an array of constants referenced by this function.\n"
2858
              "* :sourcemap - a mapping of each bytecode instruction to a line and column in the source file.\n"
2859
              "* :environments - an internal mapping of which enclosing functions are referenced for bindings.\n"
2860
0
              "* :defs - other function definitions that this function may instantiate.\n") {
2861
0
    janet_arity(argc, 1, 2);
2862
0
    JanetFunction *f = janet_getfunction(argv, 0);
2863
0
    if (argc == 2) {
2864
0
        JanetKeyword kw = janet_getkeyword(argv, 1);
2865
0
        if (!janet_cstrcmp(kw, "arity")) return janet_disasm_arity(f->def);
2866
0
        if (!janet_cstrcmp(kw, "min-arity")) return janet_disasm_min_arity(f->def);
2867
0
        if (!janet_cstrcmp(kw, "max-arity")) return janet_disasm_max_arity(f->def);
2868
0
        if (!janet_cstrcmp(kw, "bytecode")) return janet_disasm_bytecode(f->def);
2869
0
        if (!janet_cstrcmp(kw, "source")) return janet_disasm_source(f->def);
2870
0
        if (!janet_cstrcmp(kw, "name")) return janet_disasm_name(f->def);
2871
0
        if (!janet_cstrcmp(kw, "vararg")) return janet_disasm_vararg(f->def);
2872
0
        if (!janet_cstrcmp(kw, "structarg")) return janet_disasm_structarg(f->def);
2873
0
        if (!janet_cstrcmp(kw, "slotcount")) return janet_disasm_slotcount(f->def);
2874
0
        if (!janet_cstrcmp(kw, "constants")) return janet_disasm_constants(f->def);
2875
0
        if (!janet_cstrcmp(kw, "sourcemap")) return janet_disasm_sourcemap(f->def);
2876
0
        if (!janet_cstrcmp(kw, "environments")) return janet_disasm_environments(f->def);
2877
0
        if (!janet_cstrcmp(kw, "defs")) return janet_disasm_defs(f->def);
2878
0
        janet_panicf("unknown disasm key %v", argv[1]);
2879
0
    } else {
2880
0
        return janet_disasm(f->def);
2881
0
    }
2882
0
}
2883
2884
/* Load the library */
2885
0
void janet_lib_asm(JanetTable *env) {
2886
0
    JanetRegExt asm_cfuns[] = {
2887
0
        JANET_CORE_REG("asm", cfun_asm),
2888
0
        JANET_CORE_REG("disasm", cfun_disasm),
2889
0
        JANET_REG_END
2890
0
    };
2891
0
    janet_core_cfuns_ext(env, NULL, asm_cfuns);
2892
0
}
2893
2894
#endif
2895
2896
2897
/* src/core/buffer.c */
2898
#line 0 "src/core/buffer.c"
2899
2900
/*
2901
* Copyright (c) 2023 Calvin Rose
2902
*
2903
* Permission is hereby granted, free of charge, to any person obtaining a copy
2904
* of this software and associated documentation files (the "Software"), to
2905
* deal in the Software without restriction, including without limitation the
2906
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
2907
* sell copies of the Software, and to permit persons to whom the Software is
2908
* furnished to do so, subject to the following conditions:
2909
*
2910
* The above copyright notice and this permission notice shall be included in
2911
* all copies or substantial portions of the Software.
2912
*
2913
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
2914
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
2915
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
2916
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
2917
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
2918
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
2919
* IN THE SOFTWARE.
2920
*/
2921
2922
#ifndef JANET_AMALG
2923
#include "features.h"
2924
#include <janet.h>
2925
#include "gc.h"
2926
#include "util.h"
2927
#include "state.h"
2928
#endif
2929
2930
/* Allow for managed buffers that cannot realloc/free their backing memory */
2931
58
static void janet_buffer_can_realloc(JanetBuffer *buffer) {
2932
58
    if (buffer->gc.flags & JANET_BUFFER_FLAG_NO_REALLOC) {
2933
0
        janet_panic("buffer cannot reallocate foreign memory");
2934
0
    }
2935
58
}
2936
2937
/* Initialize a buffer */
2938
1.12M
static JanetBuffer *janet_buffer_init_impl(JanetBuffer *buffer, int32_t capacity) {
2939
1.12M
    uint8_t *data = NULL;
2940
1.12M
    if (capacity < 4) capacity = 4;
2941
1.12M
    janet_gcpressure(capacity);
2942
1.12M
    data = janet_malloc(sizeof(uint8_t) * (size_t) capacity);
2943
1.12M
    if (NULL == data) {
2944
0
        JANET_OUT_OF_MEMORY;
2945
0
    }
2946
1.12M
    buffer->count = 0;
2947
1.12M
    buffer->capacity = capacity;
2948
1.12M
    buffer->data = data;
2949
1.12M
    return buffer;
2950
1.12M
}
2951
2952
/* Initialize a buffer */
2953
0
JanetBuffer *janet_buffer_init(JanetBuffer *buffer, int32_t capacity) {
2954
0
    janet_buffer_init_impl(buffer, capacity);
2955
0
    buffer->gc.data.next = NULL;
2956
0
    buffer->gc.flags = JANET_MEM_DISABLED;
2957
0
    return buffer;
2958
0
}
2959
2960
/* Initialize an unmanaged buffer */
2961
0
JanetBuffer *janet_pointer_buffer_unsafe(void *memory, int32_t capacity, int32_t count) {
2962
0
    if (count < 0) janet_panic("count < 0");
2963
0
    if (capacity < count) janet_panic("capacity < count");
2964
0
    JanetBuffer *buffer = janet_gcalloc(JANET_MEMORY_BUFFER, sizeof(JanetBuffer));
2965
0
    buffer->gc.flags |= JANET_BUFFER_FLAG_NO_REALLOC;
2966
0
    buffer->capacity = capacity;
2967
0
    buffer->count = count;
2968
0
    buffer->data = (uint8_t *) memory;
2969
0
    return buffer;
2970
0
}
2971
2972
/* Deinitialize a buffer (free data memory) */
2973
1.12M
void janet_buffer_deinit(JanetBuffer *buffer) {
2974
1.12M
    if (!(buffer->gc.flags & JANET_BUFFER_FLAG_NO_REALLOC)) {
2975
1.12M
        janet_free(buffer->data);
2976
1.12M
    }
2977
1.12M
}
2978
2979
/* Initialize a buffer */
2980
1.12M
JanetBuffer *janet_buffer(int32_t capacity) {
2981
1.12M
    JanetBuffer *buffer = janet_gcalloc(JANET_MEMORY_BUFFER, sizeof(JanetBuffer));
2982
1.12M
    return janet_buffer_init_impl(buffer, capacity);
2983
1.12M
}
2984
2985
/* Ensure that the buffer has enough internal capacity */
2986
0
void janet_buffer_ensure(JanetBuffer *buffer, int32_t capacity, int32_t growth) {
2987
0
    uint8_t *new_data;
2988
0
    uint8_t *old = buffer->data;
2989
0
    if (capacity <= buffer->capacity) return;
2990
0
    janet_buffer_can_realloc(buffer);
2991
0
    int64_t big_capacity = ((int64_t) capacity) * growth;
2992
0
    capacity = big_capacity > INT32_MAX ? INT32_MAX : (int32_t) big_capacity;
2993
0
    janet_gcpressure(capacity - buffer->capacity);
2994
0
    new_data = janet_realloc(old, (size_t) capacity * sizeof(uint8_t));
2995
0
    if (NULL == new_data) {
2996
0
        JANET_OUT_OF_MEMORY;
2997
0
    }
2998
0
    buffer->data = new_data;
2999
0
    buffer->capacity = capacity;
3000
0
}
3001
3002
/* Ensure that the buffer has enough internal capacity */
3003
0
void janet_buffer_setcount(JanetBuffer *buffer, int32_t count) {
3004
0
    if (count < 0)
3005
0
        return;
3006
0
    if (count > buffer->count) {
3007
0
        int32_t oldcount = buffer->count;
3008
0
        janet_buffer_ensure(buffer, count, 1);
3009
0
        memset(buffer->data + oldcount, 0, count - oldcount);
3010
0
    }
3011
0
    buffer->count = count;
3012
0
}
3013
3014
/* Adds capacity for enough extra bytes to the buffer. Ensures that the
3015
 * next n bytes pushed to the buffer will not cause a reallocation */
3016
22.0k
void janet_buffer_extra(JanetBuffer *buffer, int32_t n) {
3017
    /* Check for buffer overflow */
3018
22.0k
    if ((int64_t)n + buffer->count > INT32_MAX) {
3019
0
        janet_panic("buffer overflow");
3020
0
    }
3021
22.0k
    int32_t new_size = buffer->count + n;
3022
22.0k
    if (new_size > buffer->capacity) {
3023
58
        janet_buffer_can_realloc(buffer);
3024
58
        int32_t new_capacity = (new_size > (INT32_MAX / 2)) ? INT32_MAX : (new_size * 2);
3025
58
        uint8_t *new_data = janet_realloc(buffer->data, new_capacity * sizeof(uint8_t));
3026
58
        janet_gcpressure(new_capacity - buffer->capacity);
3027
58
        if (NULL == new_data) {
3028
0
            JANET_OUT_OF_MEMORY;
3029
0
        }
3030
58
        buffer->data = new_data;
3031
58
        buffer->capacity = new_capacity;
3032
58
    }
3033
22.0k
}
3034
3035
/* Push a cstring to buffer */
3036
284
void janet_buffer_push_cstring(JanetBuffer *buffer, const char *cstring) {
3037
284
    int32_t len = 0;
3038
6.49k
    while (cstring[len]) ++len;
3039
284
    janet_buffer_push_bytes(buffer, (const uint8_t *) cstring, len);
3040
284
}
3041
3042
/* Push multiple bytes into the buffer */
3043
1.12M
void janet_buffer_push_bytes(JanetBuffer *buffer, const uint8_t *string, int32_t length) {
3044
1.12M
    if (0 == length) return;
3045
20.3k
    janet_buffer_extra(buffer, length);
3046
20.3k
    memcpy(buffer->data + buffer->count, string, length);
3047
20.3k
    buffer->count += length;
3048
20.3k
}
3049
3050
0
void janet_buffer_push_string(JanetBuffer *buffer, const uint8_t *string) {
3051
0
    janet_buffer_push_bytes(buffer, string, janet_string_length(string));
3052
0
}
3053
3054
/* Push a single byte to the buffer */
3055
1.72k
void janet_buffer_push_u8(JanetBuffer *buffer, uint8_t byte) {
3056
1.72k
    janet_buffer_extra(buffer, 1);
3057
1.72k
    buffer->data[buffer->count] = byte;
3058
1.72k
    buffer->count++;
3059
1.72k
}
3060
3061
/* Push a 16 bit unsigned integer to the buffer */
3062
0
void janet_buffer_push_u16(JanetBuffer *buffer, uint16_t x) {
3063
0
    janet_buffer_extra(buffer, 2);
3064
0
    buffer->data[buffer->count] = x & 0xFF;
3065
0
    buffer->data[buffer->count + 1] = (x >> 8) & 0xFF;
3066
0
    buffer->count += 2;
3067
0
}
3068
3069
/* Push a 32 bit unsigned integer to the buffer */
3070
0
void janet_buffer_push_u32(JanetBuffer *buffer, uint32_t x) {
3071
0
    janet_buffer_extra(buffer, 4);
3072
0
    buffer->data[buffer->count] = x & 0xFF;
3073
0
    buffer->data[buffer->count + 1] = (x >> 8) & 0xFF;
3074
0
    buffer->data[buffer->count + 2] = (x >> 16) & 0xFF;
3075
0
    buffer->data[buffer->count + 3] = (x >> 24) & 0xFF;
3076
0
    buffer->count += 4;
3077
0
}
3078
3079
/* Push a 64 bit unsigned integer to the buffer */
3080
0
void janet_buffer_push_u64(JanetBuffer *buffer, uint64_t x) {
3081
0
    janet_buffer_extra(buffer, 8);
3082
0
    buffer->data[buffer->count] = x & 0xFF;
3083
0
    buffer->data[buffer->count + 1] = (x >> 8) & 0xFF;
3084
0
    buffer->data[buffer->count + 2] = (x >> 16) & 0xFF;
3085
0
    buffer->data[buffer->count + 3] = (x >> 24) & 0xFF;
3086
0
    buffer->data[buffer->count + 4] = (x >> 32) & 0xFF;
3087
0
    buffer->data[buffer->count + 5] = (x >> 40) & 0xFF;
3088
0
    buffer->data[buffer->count + 6] = (x >> 48) & 0xFF;
3089
0
    buffer->data[buffer->count + 7] = (x >> 56) & 0xFF;
3090
0
    buffer->count += 8;
3091
0
}
3092
3093
/* C functions */
3094
3095
JANET_CORE_FN(cfun_buffer_new,
3096
              "(buffer/new capacity)",
3097
              "Creates a new, empty buffer with enough backing memory for `capacity` bytes. "
3098
0
              "Returns a new buffer of length 0.") {
3099
0
    janet_fixarity(argc, 1);
3100
0
    int32_t cap = janet_getinteger(argv, 0);
3101
0
    JanetBuffer *buffer = janet_buffer(cap);
3102
0
    return janet_wrap_buffer(buffer);
3103
0
}
3104
3105
JANET_CORE_FN(cfun_buffer_new_filled,
3106
              "(buffer/new-filled count &opt byte)",
3107
              "Creates a new buffer of length `count` filled with `byte`. By default, `byte` is 0. "
3108
0
              "Returns the new buffer.") {
3109
0
    janet_arity(argc, 1, 2);
3110
0
    int32_t count = janet_getinteger(argv, 0);
3111
0
    if (count < 0) count = 0;
3112
0
    int32_t byte = 0;
3113
0
    if (argc == 2) {
3114
0
        byte = janet_getinteger(argv, 1) & 0xFF;
3115
0
    }
3116
0
    JanetBuffer *buffer = janet_buffer(count);
3117
0
    if (buffer->data && count > 0)
3118
0
        memset(buffer->data, byte, count);
3119
0
    buffer->count = count;
3120
0
    return janet_wrap_buffer(buffer);
3121
0
}
3122
3123
JANET_CORE_FN(cfun_buffer_fill,
3124
              "(buffer/fill buffer &opt byte)",
3125
              "Fill up a buffer with bytes, defaulting to 0s. Does not change the buffer's length. "
3126
0
              "Returns the modified buffer.") {
3127
0
    janet_arity(argc, 1, 2);
3128
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3129
0
    int32_t byte = 0;
3130
0
    if (argc == 2) {
3131
0
        byte = janet_getinteger(argv, 1) & 0xFF;
3132
0
    }
3133
0
    if (buffer->count) {
3134
0
        memset(buffer->data, byte, buffer->count);
3135
0
    }
3136
0
    return argv[0];
3137
0
}
3138
3139
JANET_CORE_FN(cfun_buffer_trim,
3140
              "(buffer/trim buffer)",
3141
              "Set the backing capacity of the buffer to the current length of the buffer. Returns the "
3142
0
              "modified buffer.") {
3143
0
    janet_fixarity(argc, 1);
3144
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3145
0
    janet_buffer_can_realloc(buffer);
3146
0
    if (buffer->count < buffer->capacity) {
3147
0
        int32_t newcap = buffer->count > 4 ? buffer->count : 4;
3148
0
        uint8_t *newData = janet_realloc(buffer->data, newcap);
3149
0
        if (NULL == newData) {
3150
0
            JANET_OUT_OF_MEMORY;
3151
0
        }
3152
0
        buffer->data = newData;
3153
0
        buffer->capacity = newcap;
3154
0
    }
3155
0
    return argv[0];
3156
0
}
3157
3158
JANET_CORE_FN(cfun_buffer_u8,
3159
              "(buffer/push-byte buffer & xs)",
3160
              "Append bytes to a buffer. Will expand the buffer as necessary. "
3161
0
              "Returns the modified buffer. Will throw an error if the buffer overflows.") {
3162
0
    int32_t i;
3163
0
    janet_arity(argc, 1, -1);
3164
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3165
0
    for (i = 1; i < argc; i++) {
3166
0
        janet_buffer_push_u8(buffer, (uint8_t)(janet_getinteger(argv, i) & 0xFF));
3167
0
    }
3168
0
    return argv[0];
3169
0
}
3170
3171
JANET_CORE_FN(cfun_buffer_word,
3172
              "(buffer/push-word buffer & xs)",
3173
              "Append machine words to a buffer. The 4 bytes of the integer are appended "
3174
              "in twos complement, little endian order, unsigned for all x. Returns the modified buffer. Will "
3175
0
              "throw an error if the buffer overflows.") {
3176
0
    int32_t i;
3177
0
    janet_arity(argc, 1, -1);
3178
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3179
0
    for (i = 1; i < argc; i++) {
3180
0
        double number = janet_getnumber(argv, i);
3181
0
        uint32_t word = (uint32_t) number;
3182
0
        if (word != number)
3183
0
            janet_panicf("cannot convert %v to machine word", argv[i]);
3184
0
        janet_buffer_push_u32(buffer, word);
3185
0
    }
3186
0
    return argv[0];
3187
0
}
3188
3189
JANET_CORE_FN(cfun_buffer_chars,
3190
              "(buffer/push-string buffer & xs)",
3191
              "Push byte sequences onto the end of a buffer. "
3192
              "Will accept any of strings, keywords, symbols, and buffers. "
3193
              "Returns the modified buffer. "
3194
0
              "Will throw an error if the buffer overflows.") {
3195
0
    int32_t i;
3196
0
    janet_arity(argc, 1, -1);
3197
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3198
0
    for (i = 1; i < argc; i++) {
3199
0
        JanetByteView view = janet_getbytes(argv, i);
3200
0
        if (view.bytes == buffer->data) {
3201
0
            janet_buffer_ensure(buffer, buffer->count + view.len, 2);
3202
0
            view.bytes = buffer->data;
3203
0
        }
3204
0
        janet_buffer_push_bytes(buffer, view.bytes, view.len);
3205
0
    }
3206
0
    return argv[0];
3207
0
}
3208
3209
0
static void buffer_push_impl(JanetBuffer *buffer, Janet *argv, int32_t argc_offset, int32_t argc) {
3210
0
    for (int32_t i = argc_offset; i < argc; i++) {
3211
0
        if (janet_checktype(argv[i], JANET_NUMBER)) {
3212
0
            janet_buffer_push_u8(buffer, (uint8_t)(janet_getinteger(argv, i) & 0xFF));
3213
0
        } else {
3214
0
            JanetByteView view = janet_getbytes(argv, i);
3215
0
            if (view.bytes == buffer->data) {
3216
0
                janet_buffer_ensure(buffer, buffer->count + view.len, 2);
3217
0
                view.bytes = buffer->data;
3218
0
            }
3219
0
            janet_buffer_push_bytes(buffer, view.bytes, view.len);
3220
0
        }
3221
0
    }
3222
0
}
3223
3224
JANET_CORE_FN(cfun_buffer_push_at,
3225
              "(buffer/push-at buffer index & xs)",
3226
              "Same as buffer/push, but copies the new data into the buffer "
3227
0
              " at index `index`.") {
3228
0
    janet_arity(argc, 2, -1);
3229
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3230
0
    int32_t index = janet_getinteger(argv, 1);
3231
0
    int32_t old_count = buffer->count;
3232
0
    if (index < 0 || index > old_count) {
3233
0
        janet_panicf("index out of range [0, %d)", old_count);
3234
0
    }
3235
0
    buffer->count = index;
3236
0
    buffer_push_impl(buffer, argv, 2, argc);
3237
0
    if (buffer->count < old_count) {
3238
0
        buffer->count = old_count;
3239
0
    }
3240
0
    return argv[0];
3241
0
}
3242
3243
JANET_CORE_FN(cfun_buffer_push,
3244
              "(buffer/push buffer & xs)",
3245
              "Push both individual bytes and byte sequences to a buffer. For each x in xs, "
3246
              "push the byte if x is an integer, otherwise push the bytesequence to the buffer. "
3247
              "Thus, this function behaves like both `buffer/push-string` and `buffer/push-byte`. "
3248
              "Returns the modified buffer. "
3249
0
              "Will throw an error if the buffer overflows.") {
3250
0
    janet_arity(argc, 1, -1);
3251
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3252
0
    buffer_push_impl(buffer, argv, 1, argc);
3253
0
    return argv[0];
3254
0
}
3255
3256
3257
JANET_CORE_FN(cfun_buffer_clear,
3258
              "(buffer/clear buffer)",
3259
              "Sets the size of a buffer to 0 and empties it. The buffer retains "
3260
0
              "its memory so it can be efficiently refilled. Returns the modified buffer.") {
3261
0
    janet_fixarity(argc, 1);
3262
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3263
0
    buffer->count = 0;
3264
0
    return argv[0];
3265
0
}
3266
3267
JANET_CORE_FN(cfun_buffer_popn,
3268
              "(buffer/popn buffer n)",
3269
0
              "Removes the last `n` bytes from the buffer. Returns the modified buffer.") {
3270
0
    janet_fixarity(argc, 2);
3271
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3272
0
    int32_t n = janet_getinteger(argv, 1);
3273
0
    if (n < 0) janet_panic("n must be non-negative");
3274
0
    if (buffer->count < n) {
3275
0
        buffer->count = 0;
3276
0
    } else {
3277
0
        buffer->count -= n;
3278
0
    }
3279
0
    return argv[0];
3280
0
}
3281
3282
JANET_CORE_FN(cfun_buffer_slice,
3283
              "(buffer/slice bytes &opt start end)",
3284
              "Takes a slice of a byte sequence from `start` to `end`. The range is half open, "
3285
              "[start, end). Indexes can also be negative, indicating indexing from the end of the "
3286
              "end of the array. By default, `start` is 0 and `end` is the length of the buffer. "
3287
0
              "Returns a new buffer.") {
3288
0
    JanetByteView view = janet_getbytes(argv, 0);
3289
0
    JanetRange range = janet_getslice(argc, argv);
3290
0
    JanetBuffer *buffer = janet_buffer(range.end - range.start);
3291
0
    if (buffer->data)
3292
0
        memcpy(buffer->data, view.bytes + range.start, range.end - range.start);
3293
0
    buffer->count = range.end - range.start;
3294
0
    return janet_wrap_buffer(buffer);
3295
0
}
3296
3297
0
static void bitloc(int32_t argc, Janet *argv, JanetBuffer **b, int32_t *index, int *bit) {
3298
0
    janet_fixarity(argc, 2);
3299
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3300
0
    double x = janet_getnumber(argv, 1);
3301
0
    int64_t bitindex = (int64_t) x;
3302
0
    int64_t byteindex = bitindex >> 3;
3303
0
    int which_bit = bitindex & 7;
3304
0
    if (bitindex != x || bitindex < 0 || byteindex >= buffer->count)
3305
0
        janet_panicf("invalid bit index %v", argv[1]);
3306
0
    *b = buffer;
3307
0
    *index = (int32_t) byteindex;
3308
0
    *bit = which_bit;
3309
0
}
3310
3311
JANET_CORE_FN(cfun_buffer_bitset,
3312
              "(buffer/bit-set buffer index)",
3313
0
              "Sets the bit at the given bit-index. Returns the buffer.") {
3314
0
    int bit;
3315
0
    int32_t index;
3316
0
    JanetBuffer *buffer;
3317
0
    bitloc(argc, argv, &buffer, &index, &bit);
3318
0
    buffer->data[index] |= 1 << bit;
3319
0
    return argv[0];
3320
0
}
3321
3322
JANET_CORE_FN(cfun_buffer_bitclear,
3323
              "(buffer/bit-clear buffer index)",
3324
0
              "Clears the bit at the given bit-index. Returns the buffer.") {
3325
0
    int bit;
3326
0
    int32_t index;
3327
0
    JanetBuffer *buffer;
3328
0
    bitloc(argc, argv, &buffer, &index, &bit);
3329
0
    buffer->data[index] &= ~(1 << bit);
3330
0
    return argv[0];
3331
0
}
3332
3333
JANET_CORE_FN(cfun_buffer_bitget,
3334
              "(buffer/bit buffer index)",
3335
0
              "Gets the bit at the given bit-index. Returns true if the bit is set, false if not.") {
3336
0
    int bit;
3337
0
    int32_t index;
3338
0
    JanetBuffer *buffer;
3339
0
    bitloc(argc, argv, &buffer, &index, &bit);
3340
0
    return janet_wrap_boolean(buffer->data[index] & (1 << bit));
3341
0
}
3342
3343
JANET_CORE_FN(cfun_buffer_bittoggle,
3344
              "(buffer/bit-toggle buffer index)",
3345
0
              "Toggles the bit at the given bit index in buffer. Returns the buffer.") {
3346
0
    int bit;
3347
0
    int32_t index;
3348
0
    JanetBuffer *buffer;
3349
0
    bitloc(argc, argv, &buffer, &index, &bit);
3350
0
    buffer->data[index] ^= (1 << bit);
3351
0
    return argv[0];
3352
0
}
3353
3354
JANET_CORE_FN(cfun_buffer_blit,
3355
              "(buffer/blit dest src &opt dest-start src-start src-end)",
3356
              "Insert the contents of `src` into `dest`. Can optionally take indices that "
3357
              "indicate which part of `src` to copy into which part of `dest`. Indices can be "
3358
0
              "negative in order to index from the end of `src` or `dest`. Returns `dest`.") {
3359
0
    janet_arity(argc, 2, 5);
3360
0
    JanetBuffer *dest = janet_getbuffer(argv, 0);
3361
0
    JanetByteView src = janet_getbytes(argv, 1);
3362
0
    int same_buf = src.bytes == dest->data;
3363
0
    int32_t offset_dest = 0;
3364
0
    int32_t offset_src = 0;
3365
0
    if (argc > 2)
3366
0
        offset_dest = janet_gethalfrange(argv, 2, dest->count, "dest-start");
3367
0
    if (argc > 3)
3368
0
        offset_src = janet_gethalfrange(argv, 3, src.len, "src-start");
3369
0
    int32_t length_src;
3370
0
    if (argc > 4) {
3371
0
        int32_t src_end = janet_gethalfrange(argv, 4, src.len, "src-end");
3372
0
        length_src = src_end - offset_src;
3373
0
        if (length_src < 0) length_src = 0;
3374
0
    } else {
3375
0
        length_src = src.len - offset_src;
3376
0
    }
3377
0
    int64_t last = (int64_t) offset_dest + length_src;
3378
0
    if (last > INT32_MAX)
3379
0
        janet_panic("buffer blit out of range");
3380
0
    int32_t last32 = (int32_t) last;
3381
0
    janet_buffer_ensure(dest, last32, 2);
3382
0
    if (last32 > dest->count) dest->count = last32;
3383
0
    if (length_src) {
3384
0
        if (same_buf) {
3385
            /* janet_buffer_ensure may have invalidated src */
3386
0
            src.bytes = dest->data;
3387
0
            memmove(dest->data + offset_dest, src.bytes + offset_src, length_src);
3388
0
        } else {
3389
0
            memcpy(dest->data + offset_dest, src.bytes + offset_src, length_src);
3390
0
        }
3391
0
    }
3392
0
    return argv[0];
3393
0
}
3394
3395
JANET_CORE_FN(cfun_buffer_format,
3396
              "(buffer/format buffer format & args)",
3397
              "Snprintf like functionality for printing values into a buffer. Returns "
3398
0
              "the modified buffer.") {
3399
0
    janet_arity(argc, 2, -1);
3400
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3401
0
    const char *strfrmt = (const char *) janet_getstring(argv, 1);
3402
0
    janet_buffer_format(buffer, strfrmt, 1, argc, argv);
3403
0
    return argv[0];
3404
0
}
3405
3406
0
void janet_lib_buffer(JanetTable *env) {
3407
0
    JanetRegExt buffer_cfuns[] = {
3408
0
        JANET_CORE_REG("buffer/new", cfun_buffer_new),
3409
0
        JANET_CORE_REG("buffer/new-filled", cfun_buffer_new_filled),
3410
0
        JANET_CORE_REG("buffer/fill", cfun_buffer_fill),
3411
0
        JANET_CORE_REG("buffer/trim", cfun_buffer_trim),
3412
0
        JANET_CORE_REG("buffer/push-byte", cfun_buffer_u8),
3413
0
        JANET_CORE_REG("buffer/push-word", cfun_buffer_word),
3414
0
        JANET_CORE_REG("buffer/push-string", cfun_buffer_chars),
3415
0
        JANET_CORE_REG("buffer/push", cfun_buffer_push),
3416
0
        JANET_CORE_REG("buffer/push-at", cfun_buffer_push_at),
3417
0
        JANET_CORE_REG("buffer/popn", cfun_buffer_popn),
3418
0
        JANET_CORE_REG("buffer/clear", cfun_buffer_clear),
3419
0
        JANET_CORE_REG("buffer/slice", cfun_buffer_slice),
3420
0
        JANET_CORE_REG("buffer/bit-set", cfun_buffer_bitset),
3421
0
        JANET_CORE_REG("buffer/bit-clear", cfun_buffer_bitclear),
3422
0
        JANET_CORE_REG("buffer/bit", cfun_buffer_bitget),
3423
0
        JANET_CORE_REG("buffer/bit-toggle", cfun_buffer_bittoggle),
3424
0
        JANET_CORE_REG("buffer/blit", cfun_buffer_blit),
3425
0
        JANET_CORE_REG("buffer/format", cfun_buffer_format),
3426
0
        JANET_REG_END
3427
0
    };
3428
0
    janet_core_cfuns_ext(env, NULL, buffer_cfuns);
3429
0
}
3430
3431
3432
/* src/core/bytecode.c */
3433
#line 0 "src/core/bytecode.c"
3434
3435
/*
3436
* Copyright (c) 2023 Calvin Rose
3437
*
3438
* Permission is hereby granted, free of charge, to any person obtaining a copy
3439
* of this software and associated documentation files (the "Software"), to
3440
* deal in the Software without restriction, including without limitation the
3441
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
3442
* sell copies of the Software, and to permit persons to whom the Software is
3443
* furnished to do so, subject to the following conditions:
3444
*
3445
* The above copyright notice and this permission notice shall be included in
3446
* all copies or substantial portions of the Software.
3447
*
3448
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
3449
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
3450
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
3451
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
3452
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
3453
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
3454
* IN THE SOFTWARE.
3455
*/
3456
3457
#ifndef JANET_AMALG
3458
#include "features.h"
3459
#include <janet.h>
3460
#include "gc.h"
3461
#include "util.h"
3462
#include "regalloc.h"
3463
#endif
3464
3465
/* Look up table for instructions */
3466
enum JanetInstructionType janet_instructions[JOP_INSTRUCTION_COUNT] = {
3467
    JINT_0, /* JOP_NOOP, */
3468
    JINT_S, /* JOP_ERROR, */
3469
    JINT_ST, /* JOP_TYPECHECK, */
3470
    JINT_S, /* JOP_RETURN, */
3471
    JINT_0, /* JOP_RETURN_NIL, */
3472
    JINT_SSI, /* JOP_ADD_IMMEDIATE, */
3473
    JINT_SSS, /* JOP_ADD, */
3474
    JINT_SSS, /* JOP_SUBTRACT, */
3475
    JINT_SSI, /* JOP_MULTIPLY_IMMEDIATE, */
3476
    JINT_SSS, /* JOP_MULTIPLY, */
3477
    JINT_SSI, /* JOP_DIVIDE_IMMEDIATE, */
3478
    JINT_SSS, /* JOP_DIVIDE, */
3479
    JINT_SSS, /* JOP_MODULO, */
3480
    JINT_SSS, /* JOP_REMAINDER, */
3481
    JINT_SSS, /* JOP_BAND, */
3482
    JINT_SSS, /* JOP_BOR, */
3483
    JINT_SSS, /* JOP_BXOR, */
3484
    JINT_SS, /* JOP_BNOT, */
3485
    JINT_SSS, /* JOP_SHIFT_LEFT, */
3486
    JINT_SSI, /* JOP_SHIFT_LEFT_IMMEDIATE, */
3487
    JINT_SSS, /* JOP_SHIFT_RIGHT, */
3488
    JINT_SSI, /* JOP_SHIFT_RIGHT_IMMEDIATE, */
3489
    JINT_SSS, /* JOP_SHIFT_RIGHT_UNSIGNED, */
3490
    JINT_SSU, /* JOP_SHIFT_RIGHT_UNSIGNED_IMMEDIATE, */
3491
    JINT_SS, /* JOP_MOVE_FAR, */
3492
    JINT_SS, /* JOP_MOVE_NEAR, */
3493
    JINT_L, /* JOP_JUMP, */
3494
    JINT_SL, /* JOP_JUMP_IF, */
3495
    JINT_SL, /* JOP_JUMP_IF_NOT, */
3496
    JINT_SL, /* JOP_JUMP_IF_NIL, */
3497
    JINT_SL, /* JOP_JUMP_IF_NOT_NIL, */
3498
    JINT_SSS, /* JOP_GREATER_THAN, */
3499
    JINT_SSI, /* JOP_GREATER_THAN_IMMEDIATE, */
3500
    JINT_SSS, /* JOP_LESS_THAN, */
3501
    JINT_SSI, /* JOP_LESS_THAN_IMMEDIATE, */
3502
    JINT_SSS, /* JOP_EQUALS, */
3503
    JINT_SSI, /* JOP_EQUALS_IMMEDIATE, */
3504
    JINT_SSS, /* JOP_COMPARE, */
3505
    JINT_S, /* JOP_LOAD_NIL, */
3506
    JINT_S, /* JOP_LOAD_TRUE, */
3507
    JINT_S, /* JOP_LOAD_FALSE, */
3508
    JINT_SI, /* JOP_LOAD_INTEGER, */
3509
    JINT_SC, /* JOP_LOAD_CONSTANT, */
3510
    JINT_SES, /* JOP_LOAD_UPVALUE, */
3511
    JINT_S, /* JOP_LOAD_SELF, */
3512
    JINT_SES, /* JOP_SET_UPVALUE, */
3513
    JINT_SD, /* JOP_CLOSURE, */
3514
    JINT_S, /* JOP_PUSH, */
3515
    JINT_SS, /* JOP_PUSH_2, */
3516
    JINT_SSS, /* JOP_PUSH_3, */
3517
    JINT_S, /* JOP_PUSH_ARRAY, */
3518
    JINT_SS, /* JOP_CALL, */
3519
    JINT_S, /* JOP_TAILCALL, */
3520
    JINT_SSS, /* JOP_RESUME, */
3521
    JINT_SSU, /* JOP_SIGNAL, */
3522
    JINT_SSS, /* JOP_PROPAGATE */
3523
    JINT_SSS, /* JOP_IN, */
3524
    JINT_SSS, /* JOP_GET, */
3525
    JINT_SSS, /* JOP_PUT, */
3526
    JINT_SSU, /* JOP_GET_INDEX, */
3527
    JINT_SSU, /* JOP_PUT_INDEX, */
3528
    JINT_SS, /* JOP_LENGTH */
3529
    JINT_S, /* JOP_MAKE_ARRAY */
3530
    JINT_S, /* JOP_MAKE_BUFFER */
3531
    JINT_S, /* JOP_MAKE_STRING */
3532
    JINT_S, /* JOP_MAKE_STRUCT */
3533
    JINT_S, /* JOP_MAKE_TABLE */
3534
    JINT_S, /* JOP_MAKE_TUPLE */
3535
    JINT_S, /* JOP_MAKE_BRACKET_TUPLE */
3536
    JINT_SSS, /* JOP_GREATER_THAN_EQUAL */
3537
    JINT_SSS, /* JOP_LESS_THAN_EQUAL */
3538
    JINT_SSS, /* JOP_NEXT */
3539
    JINT_SSS, /* JOP_NOT_EQUALS, */
3540
    JINT_SSI, /* JOP_NOT_EQUALS_IMMEDIATE, */
3541
    JINT_SSS /* JOP_CANCEL, */
3542
};
3543
3544
/* Remove all noops while preserving jumps and debugging information.
3545
 * Useful as part of a filtering compiler pass. */
3546
0
void janet_bytecode_remove_noops(JanetFuncDef *def) {
3547
3548
    /* Get an instruction rewrite map so we can rewrite jumps */
3549
0
    uint32_t *pc_map = janet_smalloc(sizeof(uint32_t) * (1 + def->bytecode_length));
3550
0
    uint32_t new_bytecode_length = 0;
3551
0
    for (int32_t i = 0; i < def->bytecode_length; i++) {
3552
0
        uint32_t instr = def->bytecode[i];
3553
0
        uint32_t opcode = instr & 0x7F;
3554
0
        pc_map[i] = new_bytecode_length;
3555
0
        if (opcode != JOP_NOOP) {
3556
0
            new_bytecode_length++;
3557
0
        }
3558
0
    }
3559
0
    pc_map[def->bytecode_length] = new_bytecode_length;
3560
3561
    /* Linear scan rewrite bytecode and sourcemap. Also fix jumps. */
3562
0
    int32_t j = 0;
3563
0
    for (int32_t i = 0; i < def->bytecode_length; i++) {
3564
0
        uint32_t instr = def->bytecode[i];
3565
0
        uint32_t opcode = instr & 0x7F;
3566
0
        int32_t old_jump_target = 0;
3567
0
        int32_t new_jump_target = 0;
3568
0
        switch (opcode) {
3569
0
            case JOP_NOOP:
3570
0
                continue;
3571
0
            case JOP_JUMP:
3572
                /* relative pc is in DS field of instruction */
3573
0
                old_jump_target = i + (((int32_t)instr) >> 8);
3574
0
                new_jump_target = pc_map[old_jump_target];
3575
0
                instr += (new_jump_target - old_jump_target + (i - j)) << 8;
3576
0
                break;
3577
0
            case JOP_JUMP_IF:
3578
0
            case JOP_JUMP_IF_NIL:
3579
0
            case JOP_JUMP_IF_NOT:
3580
0
            case JOP_JUMP_IF_NOT_NIL:
3581
                /* relative pc is in ES field of instruction */
3582
0
                old_jump_target = i + (((int32_t)instr) >> 16);
3583
0
                new_jump_target = pc_map[old_jump_target];
3584
0
                instr += (new_jump_target - old_jump_target + (i - j)) << 16;
3585
0
                break;
3586
0
            default:
3587
0
                break;
3588
0
        }
3589
0
        def->bytecode[j] = instr;
3590
0
        if (def->sourcemap != NULL) {
3591
0
            def->sourcemap[j] = def->sourcemap[i];
3592
0
        }
3593
0
        j++;
3594
0
    }
3595
3596
    /* Rewrite symbolmap */
3597
0
    for (int32_t i = 0; i < def->symbolmap_length; i++) {
3598
0
        JanetSymbolMap *sm = def->symbolmap + i;
3599
        /* Don't rewrite upvalue mappings */
3600
0
        if (sm->birth_pc < UINT32_MAX) {
3601
0
            sm->birth_pc = pc_map[sm->birth_pc];
3602
0
            sm->death_pc = pc_map[sm->death_pc];
3603
0
        }
3604
0
    }
3605
3606
0
    def->bytecode_length = new_bytecode_length;
3607
0
    def->bytecode = janet_realloc(def->bytecode, def->bytecode_length * sizeof(uint32_t));
3608
0
    janet_sfree(pc_map);
3609
0
}
3610
3611
/* Remove redundant loads, moves and other instructions if possible and convert them to
3612
 * noops. Input is assumed valid bytecode. */
3613
0
void janet_bytecode_movopt(JanetFuncDef *def) {
3614
0
    JanetcRegisterAllocator ra;
3615
0
    int recur = 1;
3616
3617
    /* Iterate this until no more instructions can be removed. */
3618
0
    while (recur) {
3619
0
        janetc_regalloc_init(&ra);
3620
3621
        /* Look for slots that have writes but no reads (and aren't in the closure bitset). */
3622
0
        if (def->closure_bitset != NULL) {
3623
0
            for (int32_t i = 0; i < def->slotcount; i++) {
3624
0
                int32_t index = i >> 5;
3625
0
                uint32_t mask = 1U << (((uint32_t) i) & 31);
3626
0
                if (def->closure_bitset[index] & mask) {
3627
0
                    janetc_regalloc_touch(&ra, i);
3628
0
                }
3629
0
            }
3630
0
        }
3631
3632
0
#define AA ((instr >> 8)  & 0xFF)
3633
0
#define BB ((instr >> 16) & 0xFF)
3634
0
#define CC (instr >> 24)
3635
0
#define DD (instr >> 8)
3636
0
#define EE (instr >> 16)
3637
3638
        /* Check reads and writes */
3639
0
        for (int32_t i = 0; i < def->bytecode_length; i++) {
3640
0
            uint32_t instr = def->bytecode[i];
3641
0
            switch (instr & 0x7F) {
3642
3643
                /* Group instructions my how they read from slots */
3644
3645
                /* No reads or writes */
3646
0
                default:
3647
0
                    janet_assert(0, "unhandled instruction");
3648
0
                case JOP_JUMP:
3649
0
                case JOP_NOOP:
3650
0
                case JOP_RETURN_NIL:
3651
                /* Write A */
3652
0
                case JOP_LOAD_INTEGER:
3653
0
                case JOP_LOAD_CONSTANT:
3654
0
                case JOP_LOAD_UPVALUE:
3655
0
                case JOP_CLOSURE:
3656
                /* Write D */
3657
0
                case JOP_LOAD_NIL:
3658
0
                case JOP_LOAD_TRUE:
3659
0
                case JOP_LOAD_FALSE:
3660
0
                case JOP_LOAD_SELF:
3661
0
                case JOP_MAKE_ARRAY:
3662
0
                case JOP_MAKE_BUFFER:
3663
0
                case JOP_MAKE_STRING:
3664
0
                case JOP_MAKE_STRUCT:
3665
0
                case JOP_MAKE_TABLE:
3666
0
                case JOP_MAKE_TUPLE:
3667
0
                case JOP_MAKE_BRACKET_TUPLE:
3668
0
                    break;
3669
3670
                /* Read A */
3671
0
                case JOP_ERROR:
3672
0
                case JOP_TYPECHECK:
3673
0
                case JOP_JUMP_IF:
3674
0
                case JOP_JUMP_IF_NOT:
3675
0
                case JOP_JUMP_IF_NIL:
3676
0
                case JOP_JUMP_IF_NOT_NIL:
3677
0
                case JOP_SET_UPVALUE:
3678
                /* Write E, Read A */
3679
0
                case JOP_MOVE_FAR:
3680
0
                    janetc_regalloc_touch(&ra, AA);
3681
0
                    break;
3682
3683
                /* Read B */
3684
0
                case JOP_SIGNAL:
3685
                /* Write A, Read B */
3686
0
                case JOP_ADD_IMMEDIATE:
3687
0
                case JOP_MULTIPLY_IMMEDIATE:
3688
0
                case JOP_DIVIDE_IMMEDIATE:
3689
0
                case JOP_SHIFT_LEFT_IMMEDIATE:
3690
0
                case JOP_SHIFT_RIGHT_IMMEDIATE:
3691
0
                case JOP_SHIFT_RIGHT_UNSIGNED_IMMEDIATE:
3692
0
                case JOP_GREATER_THAN_IMMEDIATE:
3693
0
                case JOP_LESS_THAN_IMMEDIATE:
3694
0
                case JOP_EQUALS_IMMEDIATE:
3695
0
                case JOP_NOT_EQUALS_IMMEDIATE:
3696
0
                case JOP_GET_INDEX:
3697
0
                    janetc_regalloc_touch(&ra, BB);
3698
0
                    break;
3699
3700
                /* Read D */
3701
0
                case JOP_RETURN:
3702
0
                case JOP_PUSH:
3703
0
                case JOP_PUSH_ARRAY:
3704
0
                case JOP_TAILCALL:
3705
0
                    janetc_regalloc_touch(&ra, DD);
3706
0
                    break;
3707
3708
                /* Write A, Read E */
3709
0
                case JOP_MOVE_NEAR:
3710
0
                case JOP_LENGTH:
3711
0
                case JOP_BNOT:
3712
0
                case JOP_CALL:
3713
0
                    janetc_regalloc_touch(&ra, EE);
3714
0
                    break;
3715
3716
                /* Read A, B */
3717
0
                case JOP_PUT_INDEX:
3718
0
                    janetc_regalloc_touch(&ra, AA);
3719
0
                    janetc_regalloc_touch(&ra, BB);
3720
0
                    break;
3721
3722
                /* Read A, E */
3723
0
                case JOP_PUSH_2:
3724
0
                    janetc_regalloc_touch(&ra, AA);
3725
0
                    janetc_regalloc_touch(&ra, EE);
3726
0
                    break;
3727
3728
                /* Read B, C */
3729
0
                case JOP_PROPAGATE:
3730
                /* Write A, Read B and C */
3731
0
                case JOP_BAND:
3732
0
                case JOP_BOR:
3733
0
                case JOP_BXOR:
3734
0
                case JOP_ADD:
3735
0
                case JOP_SUBTRACT:
3736
0
                case JOP_MULTIPLY:
3737
0
                case JOP_DIVIDE:
3738
0
                case JOP_MODULO:
3739
0
                case JOP_REMAINDER:
3740
0
                case JOP_SHIFT_LEFT:
3741
0
                case JOP_SHIFT_RIGHT:
3742
0
                case JOP_SHIFT_RIGHT_UNSIGNED:
3743
0
                case JOP_GREATER_THAN:
3744
0
                case JOP_LESS_THAN:
3745
0
                case JOP_EQUALS:
3746
0
                case JOP_COMPARE:
3747
0
                case JOP_IN:
3748
0
                case JOP_GET:
3749
0
                case JOP_GREATER_THAN_EQUAL:
3750
0
                case JOP_LESS_THAN_EQUAL:
3751
0
                case JOP_NOT_EQUALS:
3752
0
                case JOP_CANCEL:
3753
0
                case JOP_RESUME:
3754
0
                case JOP_NEXT:
3755
0
                    janetc_regalloc_touch(&ra, BB);
3756
0
                    janetc_regalloc_touch(&ra, CC);
3757
0
                    break;
3758
3759
                /* Read A, B, C */
3760
0
                case JOP_PUT:
3761
0
                case JOP_PUSH_3:
3762
0
                    janetc_regalloc_touch(&ra, AA);
3763
0
                    janetc_regalloc_touch(&ra, BB);
3764
0
                    janetc_regalloc_touch(&ra, CC);
3765
0
                    break;
3766
0
            }
3767
0
        }
3768
3769
        /* Iterate and set noops on instructions that make writes that no one ever reads.
3770
         * Only set noops for instructions with no side effects - moves, loads, etc. that can't
3771
         * raise errors (outside of systemic errors like oom or stack overflow). */
3772
0
        recur = 0;
3773
0
        for (int32_t i = 0; i < def->bytecode_length; i++) {
3774
0
            uint32_t instr = def->bytecode[i];
3775
0
            switch (instr & 0x7F) {
3776
0
                default:
3777
0
                    break;
3778
                /* Write D */
3779
0
                case JOP_LOAD_NIL:
3780
0
                case JOP_LOAD_TRUE:
3781
0
                case JOP_LOAD_FALSE:
3782
0
                case JOP_LOAD_SELF:
3783
0
                case JOP_MAKE_ARRAY:
3784
0
                case JOP_MAKE_TUPLE:
3785
0
                case JOP_MAKE_BRACKET_TUPLE: {
3786
0
                    if (!janetc_regalloc_check(&ra, DD)) {
3787
0
                        def->bytecode[i] = JOP_NOOP;
3788
0
                        recur = 1;
3789
0
                    }
3790
0
                }
3791
0
                break;
3792
                /* Write E, Read A */
3793
0
                case JOP_MOVE_FAR: {
3794
0
                    if (!janetc_regalloc_check(&ra, EE)) {
3795
0
                        def->bytecode[i] = JOP_NOOP;
3796
0
                        recur = 1;
3797
0
                    }
3798
0
                }
3799
0
                break;
3800
                /* Write A, Read E */
3801
0
                case JOP_MOVE_NEAR:
3802
                /* Write A, Read B */
3803
0
                case JOP_GET_INDEX:
3804
                /* Write A */
3805
0
                case JOP_LOAD_INTEGER:
3806
0
                case JOP_LOAD_CONSTANT:
3807
0
                case JOP_LOAD_UPVALUE:
3808
0
                case JOP_CLOSURE: {
3809
0
                    if (!janetc_regalloc_check(&ra, AA)) {
3810
0
                        def->bytecode[i] = JOP_NOOP;
3811
0
                        recur = 1;
3812
0
                    }
3813
0
                }
3814
0
                break;
3815
0
            }
3816
0
        }
3817
3818
0
        janetc_regalloc_deinit(&ra);
3819
0
#undef AA
3820
0
#undef BB
3821
0
#undef CC
3822
0
#undef DD
3823
0
#undef EE
3824
0
    }
3825
0
}
3826
3827
/* Verify some bytecode */
3828
0
int janet_verify(JanetFuncDef *def) {
3829
0
    int vargs = !!(def->flags & JANET_FUNCDEF_FLAG_VARARG);
3830
0
    int32_t i;
3831
0
    int32_t maxslot = def->arity + vargs;
3832
0
    int32_t sc = def->slotcount;
3833
3834
0
    if (def->bytecode_length == 0) return 1;
3835
3836
0
    if (maxslot > sc) return 2;
3837
3838
    /* Verify each instruction */
3839
0
    for (i = 0; i < def->bytecode_length; i++) {
3840
0
        uint32_t instr = def->bytecode[i];
3841
        /* Check for invalid instructions */
3842
0
        if ((instr & 0x7F) >= JOP_INSTRUCTION_COUNT) {
3843
0
            return 3;
3844
0
        }
3845
0
        enum JanetInstructionType type = janet_instructions[instr & 0x7F];
3846
0
        switch (type) {
3847
0
            case JINT_0:
3848
0
                continue;
3849
0
            case JINT_S: {
3850
0
                if ((int32_t)(instr >> 8) >= sc) return 4;
3851
0
                continue;
3852
0
            }
3853
0
            case JINT_SI:
3854
0
            case JINT_SU:
3855
0
            case JINT_ST: {
3856
0
                if ((int32_t)((instr >> 8) & 0xFF) >= sc) return 4;
3857
0
                continue;
3858
0
            }
3859
0
            case JINT_L: {
3860
0
                int32_t jumpdest = i + (((int32_t)instr) >> 8);
3861
0
                if (jumpdest < 0 || jumpdest >= def->bytecode_length) return 5;
3862
0
                continue;
3863
0
            }
3864
0
            case JINT_SS: {
3865
0
                if ((int32_t)((instr >> 8) & 0xFF) >= sc ||
3866
0
                        (int32_t)(instr >> 16) >= sc) return 4;
3867
0
                continue;
3868
0
            }
3869
0
            case JINT_SSI:
3870
0
            case JINT_SSU: {
3871
0
                if ((int32_t)((instr >> 8) & 0xFF) >= sc ||
3872
0
                        (int32_t)((instr >> 16) & 0xFF) >= sc) return 4;
3873
0
                continue;
3874
0
            }
3875
0
            case JINT_SL: {
3876
0
                int32_t jumpdest = i + (((int32_t)instr) >> 16);
3877
0
                if ((int32_t)((instr >> 8) & 0xFF) >= sc) return 4;
3878
0
                if (jumpdest < 0 || jumpdest >= def->bytecode_length) return 5;
3879
0
                continue;
3880
0
            }
3881
0
            case JINT_SSS: {
3882
0
                if (((int32_t)(instr >> 8) & 0xFF) >= sc ||
3883
0
                        ((int32_t)(instr >> 16) & 0xFF) >= sc ||
3884
0
                        ((int32_t)(instr >> 24) & 0xFF) >= sc) return 4;
3885
0
                continue;
3886
0
            }
3887
0
            case JINT_SD: {
3888
0
                if ((int32_t)((instr >> 8) & 0xFF) >= sc) return 4;
3889
0
                if ((int32_t)(instr >> 16) >= def->defs_length) return 6;
3890
0
                continue;
3891
0
            }
3892
0
            case JINT_SC: {
3893
0
                if ((int32_t)((instr >> 8) & 0xFF) >= sc) return 4;
3894
0
                if ((int32_t)(instr >> 16) >= def->constants_length) return 7;
3895
0
                continue;
3896
0
            }
3897
0
            case JINT_SES: {
3898
                /* How can we check the last slot index? We need info parent funcdefs. Resort
3899
                 * to runtime checks for now. Maybe invalid upvalue references could be defaulted
3900
                 * to nil? (don't commit to this in the long term, though) */
3901
0
                if ((int32_t)((instr >> 8) & 0xFF) >= sc) return 4;
3902
0
                if ((int32_t)((instr >> 16) & 0xFF) >= def->environments_length) return 8;
3903
0
                continue;
3904
0
            }
3905
0
        }
3906
0
    }
3907
3908
    /* Verify last instruction is either a jump, return, return-nil, or tailcall. Eventually,
3909
     * some real flow analysis would be ideal, but this should be very effective. Will completely
3910
     * prevent running over the end of bytecode. However, valid functions with dead code will
3911
     * be rejected. */
3912
0
    {
3913
0
        uint32_t lastop = def->bytecode[def->bytecode_length - 1] & 0xFF;
3914
0
        switch (lastop) {
3915
0
            default:
3916
0
                return 9;
3917
0
            case JOP_RETURN:
3918
0
            case JOP_RETURN_NIL:
3919
0
            case JOP_JUMP:
3920
0
            case JOP_ERROR:
3921
0
            case JOP_TAILCALL:
3922
0
                break;
3923
0
        }
3924
0
    }
3925
3926
0
    return 0;
3927
0
}
3928
3929
/* Allocate an empty funcdef. This function may have added functionality
3930
 * as commonalities between asm and compile arise. */
3931
0
JanetFuncDef *janet_funcdef_alloc(void) {
3932
0
    JanetFuncDef *def = janet_gcalloc(JANET_MEMORY_FUNCDEF, sizeof(JanetFuncDef));
3933
0
    def->environments = NULL;
3934
0
    def->constants = NULL;
3935
0
    def->bytecode = NULL;
3936
0
    def->closure_bitset = NULL;
3937
0
    def->flags = 0;
3938
0
    def->slotcount = 0;
3939
0
    def->symbolmap = NULL;
3940
0
    def->arity = 0;
3941
0
    def->min_arity = 0;
3942
0
    def->max_arity = INT32_MAX;
3943
0
    def->source = NULL;
3944
0
    def->sourcemap = NULL;
3945
0
    def->name = NULL;
3946
0
    def->defs = NULL;
3947
0
    def->defs_length = 0;
3948
0
    def->constants_length = 0;
3949
0
    def->bytecode_length = 0;
3950
0
    def->environments_length = 0;
3951
0
    def->symbolmap_length = 0;
3952
0
    return def;
3953
0
}
3954
3955
/* Create a simple closure from a funcdef */
3956
0
JanetFunction *janet_thunk(JanetFuncDef *def) {
3957
0
    JanetFunction *func = janet_gcalloc(JANET_MEMORY_FUNCTION, sizeof(JanetFunction));
3958
0
    func->def = def;
3959
0
    janet_assert(def->environments_length == 0, "tried to create thunk that needs upvalues");
3960
0
    return func;
3961
0
}
3962
3963
3964
/* src/core/capi.c */
3965
#line 0 "src/core/capi.c"
3966
3967
/*
3968
* Copyright (c) 2023 Calvin Rose
3969
*
3970
* Permission is hereby granted, free of charge, to any person obtaining a copy
3971
* of this software and associated documentation files (the "Software"), to
3972
* deal in the Software without restriction, including without limitation the
3973
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
3974
* sell copies of the Software, and to permit persons to whom the Software is
3975
* furnished to do so, subject to the following conditions:
3976
*
3977
* The above copyright notice and this permission notice shall be included in
3978
* all copies or substantial portions of the Software.
3979
*
3980
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
3981
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
3982
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
3983
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
3984
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
3985
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
3986
* IN THE SOFTWARE.
3987
*/
3988
3989
#ifndef JANET_AMALG
3990
#include "features.h"
3991
#include <janet.h>
3992
#include "state.h"
3993
#include "fiber.h"
3994
#endif
3995
3996
#ifndef JANET_SINGLE_THREADED
3997
#ifndef JANET_WINDOWS
3998
#include <pthread.h>
3999
#else
4000
#include <windows.h>
4001
#endif
4002
#endif
4003
4004
0
JANET_NO_RETURN static void janet_top_level_signal(const char *msg) {
4005
#ifdef JANET_TOP_LEVEL_SIGNAL
4006
    JANET_TOP_LEVEL_SIGNAL(msg);
4007
#else
4008
0
    fputs(msg, stdout);
4009
# ifdef JANET_SINGLE_THREADED
4010
    exit(-1);
4011
# elif defined(JANET_WINDOWS)
4012
    ExitThread(-1);
4013
# else
4014
0
    pthread_exit(NULL);
4015
0
# endif
4016
0
#endif
4017
0
}
4018
4019
0
void janet_signalv(JanetSignal sig, Janet message) {
4020
0
    if (janet_vm.return_reg != NULL) {
4021
0
        *janet_vm.return_reg = message;
4022
0
        if (NULL != janet_vm.fiber) {
4023
0
            janet_vm.fiber->flags |= JANET_FIBER_DID_LONGJUMP;
4024
0
        }
4025
#if defined(JANET_BSD) || defined(JANET_APPLE)
4026
        _longjmp(*janet_vm.signal_buf, sig);
4027
#else
4028
0
        longjmp(*janet_vm.signal_buf, sig);
4029
0
#endif
4030
0
    } else {
4031
0
        const char *str = (const char *)janet_formatc("janet top level signal - %v\n", message);
4032
0
        janet_top_level_signal(str);
4033
0
    }
4034
0
}
4035
4036
0
void janet_panicv(Janet message) {
4037
0
    janet_signalv(JANET_SIGNAL_ERROR, message);
4038
0
}
4039
4040
0
void janet_panicf(const char *format, ...) {
4041
0
    va_list args;
4042
0
    const uint8_t *ret;
4043
0
    JanetBuffer buffer;
4044
0
    int32_t len = 0;
4045
0
    while (format[len]) len++;
4046
0
    janet_buffer_init(&buffer, len);
4047
0
    va_start(args, format);
4048
0
    janet_formatbv(&buffer, format, args);
4049
0
    va_end(args);
4050
0
    ret = janet_string(buffer.data, buffer.count);
4051
0
    janet_buffer_deinit(&buffer);
4052
0
    janet_panics(ret);
4053
0
}
4054
4055
0
void janet_panic(const char *message) {
4056
0
    janet_panicv(janet_cstringv(message));
4057
0
}
4058
4059
0
void janet_panics(const uint8_t *message) {
4060
0
    janet_panicv(janet_wrap_string(message));
4061
0
}
4062
4063
0
void janet_panic_type(Janet x, int32_t n, int expected) {
4064
0
    janet_panicf("bad slot #%d, expected %T, got %v", n, expected, x);
4065
0
}
4066
4067
0
void janet_panic_abstract(Janet x, int32_t n, const JanetAbstractType *at) {
4068
0
    janet_panicf("bad slot #%d, expected %s, got %v", n, at->name, x);
4069
0
}
4070
4071
0
void janet_fixarity(int32_t arity, int32_t fix) {
4072
0
    if (arity != fix)
4073
0
        janet_panicf("arity mismatch, expected %d, got %d", fix, arity);
4074
0
}
4075
4076
0
void janet_arity(int32_t arity, int32_t min, int32_t max) {
4077
0
    if (min >= 0 && arity < min)
4078
0
        janet_panicf("arity mismatch, expected at least %d, got %d", min, arity);
4079
0
    if (max >= 0 && arity > max)
4080
0
        janet_panicf("arity mismatch, expected at most %d, got %d", max, arity);
4081
0
}
4082
4083
#define DEFINE_GETTER(name, NAME, type) \
4084
0
type janet_get##name(const Janet *argv, int32_t n) { \
4085
0
    Janet x = argv[n]; \
4086
0
    if (!janet_checktype(x, JANET_##NAME)) { \
4087
0
        janet_panic_type(x, n, JANET_TFLAG_##NAME); \
4088
0
    } \
4089
0
    return janet_unwrap_##name(x); \
4090
0
}
Unexecuted instantiation: janet_getnumber
Unexecuted instantiation: janet_getarray
Unexecuted instantiation: janet_gettuple
Unexecuted instantiation: janet_gettable
Unexecuted instantiation: janet_getstruct
Unexecuted instantiation: janet_getstring
Unexecuted instantiation: janet_getkeyword
Unexecuted instantiation: janet_getsymbol
Unexecuted instantiation: janet_getbuffer
Unexecuted instantiation: janet_getfiber
Unexecuted instantiation: janet_getfunction
Unexecuted instantiation: janet_getcfunction
Unexecuted instantiation: janet_getboolean
Unexecuted instantiation: janet_getpointer
4091
4092
#define DEFINE_OPT(name, NAME, type) \
4093
0
type janet_opt##name(const Janet *argv, int32_t argc, int32_t n, type dflt) { \
4094
0
    if (n >= argc) return dflt; \
4095
0
    if (janet_checktype(argv[n], JANET_NIL)) return dflt; \
4096
0
    return janet_get##name(argv, n); \
4097
0
}
Unexecuted instantiation: janet_optnumber
Unexecuted instantiation: janet_opttuple
Unexecuted instantiation: janet_optstruct
Unexecuted instantiation: janet_optstring
Unexecuted instantiation: janet_optkeyword
Unexecuted instantiation: janet_optsymbol
Unexecuted instantiation: janet_optfiber
Unexecuted instantiation: janet_optfunction
Unexecuted instantiation: janet_optcfunction
Unexecuted instantiation: janet_optboolean
Unexecuted instantiation: janet_optpointer
4098
4099
#define DEFINE_OPTLEN(name, NAME, type) \
4100
0
type janet_opt##name(const Janet *argv, int32_t argc, int32_t n, int32_t dflt_len) { \
4101
0
    if (n >= argc || janet_checktype(argv[n], JANET_NIL)) {\
4102
0
        return janet_##name(dflt_len); \
4103
0
    }\
4104
0
    return janet_get##name(argv, n); \
4105
0
}
Unexecuted instantiation: janet_optbuffer
Unexecuted instantiation: janet_opttable
Unexecuted instantiation: janet_optarray
4106
4107
0
int janet_getmethod(const uint8_t *method, const JanetMethod *methods, Janet *out) {
4108
0
    while (methods->name) {
4109
0
        if (!janet_cstrcmp(method, methods->name)) {
4110
0
            *out = janet_wrap_cfunction(methods->cfun);
4111
0
            return 1;
4112
0
        }
4113
0
        methods++;
4114
0
    }
4115
0
    return 0;
4116
0
}
4117
4118
0
Janet janet_nextmethod(const JanetMethod *methods, Janet key) {
4119
0
    if (!janet_checktype(key, JANET_NIL)) {
4120
0
        while (methods->name) {
4121
0
            if (janet_keyeq(key, methods->name)) {
4122
0
                methods++;
4123
0
                break;
4124
0
            }
4125
0
            methods++;
4126
0
        }
4127
0
    }
4128
0
    if (methods->name) {
4129
0
        return janet_ckeywordv(methods->name);
4130
0
    } else {
4131
0
        return janet_wrap_nil();
4132
0
    }
4133
0
}
4134
4135
DEFINE_GETTER(number, NUMBER, double)
4136
DEFINE_GETTER(array, ARRAY, JanetArray *)
4137
DEFINE_GETTER(tuple, TUPLE, const Janet *)
4138
DEFINE_GETTER(table, TABLE, JanetTable *)
4139
DEFINE_GETTER(struct, STRUCT, const JanetKV *)
4140
DEFINE_GETTER(string, STRING, const uint8_t *)
4141
DEFINE_GETTER(keyword, KEYWORD, const uint8_t *)
4142
DEFINE_GETTER(symbol, SYMBOL, const uint8_t *)
4143
DEFINE_GETTER(buffer, BUFFER, JanetBuffer *)
4144
DEFINE_GETTER(fiber, FIBER, JanetFiber *)
4145
DEFINE_GETTER(function, FUNCTION, JanetFunction *)
4146
DEFINE_GETTER(cfunction, CFUNCTION, JanetCFunction)
4147
DEFINE_GETTER(boolean, BOOLEAN, int)
4148
DEFINE_GETTER(pointer, POINTER, void *)
4149
4150
DEFINE_OPT(number, NUMBER, double)
4151
DEFINE_OPT(tuple, TUPLE, const Janet *)
4152
DEFINE_OPT(struct, STRUCT, const JanetKV *)
4153
DEFINE_OPT(string, STRING, const uint8_t *)
4154
DEFINE_OPT(keyword, KEYWORD, const uint8_t *)
4155
DEFINE_OPT(symbol, SYMBOL, const uint8_t *)
4156
DEFINE_OPT(fiber, FIBER, JanetFiber *)
4157
DEFINE_OPT(function, FUNCTION, JanetFunction *)
4158
DEFINE_OPT(cfunction, CFUNCTION, JanetCFunction)
4159
DEFINE_OPT(boolean, BOOLEAN, int)
4160
DEFINE_OPT(pointer, POINTER, void *)
4161
4162
DEFINE_OPTLEN(buffer, BUFFER, JanetBuffer *)
4163
DEFINE_OPTLEN(table, TABLE, JanetTable *)
4164
DEFINE_OPTLEN(array, ARRAY, JanetArray *)
4165
4166
0
const char *janet_optcstring(const Janet *argv, int32_t argc, int32_t n, const char *dflt) {
4167
0
    if (n >= argc || janet_checktype(argv[n], JANET_NIL)) {
4168
0
        return dflt;
4169
0
    }
4170
0
    return janet_getcstring(argv, n);
4171
0
}
4172
4173
#undef DEFINE_GETTER
4174
#undef DEFINE_OPT
4175
#undef DEFINE_OPTLEN
4176
4177
0
const char *janet_getcstring(const Janet *argv, int32_t n) {
4178
0
    if (!janet_checktype(argv[n], JANET_STRING)) {
4179
0
        janet_panic_type(argv[n], n, JANET_TFLAG_STRING);
4180
0
    }
4181
0
    return janet_getcbytes(argv, n);
4182
0
}
4183
4184
0
const char *janet_getcbytes(const Janet *argv, int32_t n) {
4185
0
    JanetByteView view = janet_getbytes(argv, n);
4186
0
    const char *cstr = (const char *)view.bytes;
4187
0
    if (strlen(cstr) != (size_t) view.len) {
4188
0
        janet_panic("bytes contain embedded 0s");
4189
0
    }
4190
0
    return cstr;
4191
0
}
4192
4193
0
const char *janet_optcbytes(const Janet *argv, int32_t argc, int32_t n, const char *dflt) {
4194
0
    if (n >= argc || janet_checktype(argv[n], JANET_NIL)) {
4195
0
        return dflt;
4196
0
    }
4197
0
    return janet_getcbytes(argv, n);
4198
0
}
4199
4200
0
int32_t janet_getnat(const Janet *argv, int32_t n) {
4201
0
    Janet x = argv[n];
4202
0
    if (!janet_checkint(x)) goto bad;
4203
0
    int32_t ret = janet_unwrap_integer(x);
4204
0
    if (ret < 0) goto bad;
4205
0
    return ret;
4206
0
bad:
4207
0
    janet_panicf("bad slot #%d, expected non-negative 32 bit signed integer, got %v", n, x);
4208
0
}
4209
4210
0
JanetAbstract janet_checkabstract(Janet x, const JanetAbstractType *at) {
4211
0
    if (!janet_checktype(x, JANET_ABSTRACT)) return NULL;
4212
0
    JanetAbstract a = janet_unwrap_abstract(x);
4213
0
    if (janet_abstract_type(a) != at) return NULL;
4214
0
    return a;
4215
0
}
4216
4217
0
static int janet_strlike_cmp(JanetType type, Janet x, const char *cstring) {
4218
0
    if (janet_type(x) != type) return 0;
4219
0
    return !janet_cstrcmp(janet_unwrap_string(x), cstring);
4220
0
}
4221
4222
0
int janet_keyeq(Janet x, const char *cstring) {
4223
0
    return janet_strlike_cmp(JANET_KEYWORD, x, cstring);
4224
0
}
4225
4226
0
int janet_streq(Janet x, const char *cstring) {
4227
0
    return janet_strlike_cmp(JANET_STRING, x, cstring);
4228
0
}
4229
4230
0
int janet_symeq(Janet x, const char *cstring) {
4231
0
    return janet_strlike_cmp(JANET_SYMBOL, x, cstring);
4232
0
}
4233
4234
0
int32_t janet_getinteger(const Janet *argv, int32_t n) {
4235
0
    Janet x = argv[n];
4236
0
    if (!janet_checkint(x)) {
4237
0
        janet_panicf("bad slot #%d, expected 32 bit signed integer, got %v", n, x);
4238
0
    }
4239
0
    return janet_unwrap_integer(x);
4240
0
}
4241
4242
0
int64_t janet_getinteger64(const Janet *argv, int32_t n) {
4243
0
#ifdef JANET_INT_TYPES
4244
0
    return janet_unwrap_s64(argv[n]);
4245
#else
4246
    Janet x = argv[n];
4247
    if (!janet_checkint64(x)) {
4248
        janet_panicf("bad slot #%d, expected 64 bit signed integer, got %v", n, x);
4249
    }
4250
    return (int64_t) janet_unwrap_number(x);
4251
#endif
4252
0
}
4253
4254
0
uint64_t janet_getuinteger64(const Janet *argv, int32_t n) {
4255
0
#ifdef JANET_INT_TYPES
4256
0
    return janet_unwrap_u64(argv[n]);
4257
#else
4258
    Janet x = argv[n];
4259
    if (!janet_checkint64(x)) {
4260
        janet_panicf("bad slot #%d, expected 64 bit unsigned integer, got %v", n, x);
4261
    }
4262
    return (uint64_t) janet_unwrap_number(x);
4263
#endif
4264
0
}
4265
4266
0
size_t janet_getsize(const Janet *argv, int32_t n) {
4267
0
    Janet x = argv[n];
4268
0
    if (!janet_checksize(x)) {
4269
0
        janet_panicf("bad slot #%d, expected size, got %v", n, x);
4270
0
    }
4271
0
    return (size_t) janet_unwrap_number(x);
4272
0
}
4273
4274
0
int32_t janet_gethalfrange(const Janet *argv, int32_t n, int32_t length, const char *which) {
4275
0
    int32_t raw = janet_getinteger(argv, n);
4276
0
    int32_t not_raw = raw;
4277
0
    if (not_raw < 0) not_raw += length + 1;
4278
0
    if (not_raw < 0 || not_raw > length)
4279
0
        janet_panicf("%s index %d out of range [%d,%d]", which, raw, -length - 1, length);
4280
0
    return not_raw;
4281
0
}
4282
4283
0
int32_t janet_getargindex(const Janet *argv, int32_t n, int32_t length, const char *which) {
4284
0
    int32_t raw = janet_getinteger(argv, n);
4285
0
    int32_t not_raw = raw;
4286
0
    if (not_raw < 0) not_raw += length;
4287
0
    if (not_raw < 0 || not_raw > length)
4288
0
        janet_panicf("%s index %d out of range [%d,%d)", which, raw, -length, length);
4289
0
    return not_raw;
4290
0
}
4291
4292
0
JanetView janet_getindexed(const Janet *argv, int32_t n) {
4293
0
    Janet x = argv[n];
4294
0
    JanetView view;
4295
0
    if (!janet_indexed_view(x, &view.items, &view.len)) {
4296
0
        janet_panic_type(x, n, JANET_TFLAG_INDEXED);
4297
0
    }
4298
0
    return view;
4299
0
}
4300
4301
0
JanetByteView janet_getbytes(const Janet *argv, int32_t n) {
4302
0
    Janet x = argv[n];
4303
0
    JanetByteView view;
4304
0
    if (!janet_bytes_view(x, &view.bytes, &view.len)) {
4305
0
        janet_panic_type(x, n, JANET_TFLAG_BYTES);
4306
0
    }
4307
0
    return view;
4308
0
}
4309
4310
0
JanetDictView janet_getdictionary(const Janet *argv, int32_t n) {
4311
0
    Janet x = argv[n];
4312
0
    JanetDictView view;
4313
0
    if (!janet_dictionary_view(x, &view.kvs, &view.len, &view.cap)) {
4314
0
        janet_panic_type(x, n, JANET_TFLAG_DICTIONARY);
4315
0
    }
4316
0
    return view;
4317
0
}
4318
4319
0
void *janet_getabstract(const Janet *argv, int32_t n, const JanetAbstractType *at) {
4320
0
    Janet x = argv[n];
4321
0
    if (!janet_checktype(x, JANET_ABSTRACT)) {
4322
0
        janet_panic_abstract(x, n, at);
4323
0
    }
4324
0
    void *abstractx = janet_unwrap_abstract(x);
4325
0
    if (janet_abstract_type(abstractx) != at) {
4326
0
        janet_panic_abstract(x, n, at);
4327
0
    }
4328
0
    return abstractx;
4329
0
}
4330
4331
0
JanetRange janet_getslice(int32_t argc, const Janet *argv) {
4332
0
    janet_arity(argc, 1, 3);
4333
0
    JanetRange range;
4334
0
    int32_t length = janet_length(argv[0]);
4335
0
    if (argc == 1) {
4336
0
        range.start = 0;
4337
0
        range.end = length;
4338
0
    } else if (argc == 2) {
4339
0
        range.start = janet_checktype(argv[1], JANET_NIL)
4340
0
                      ? 0
4341
0
                      : janet_gethalfrange(argv, 1, length, "start");
4342
0
        range.end = length;
4343
0
    } else {
4344
0
        range.start = janet_checktype(argv[1], JANET_NIL)
4345
0
                      ? 0
4346
0
                      : janet_gethalfrange(argv, 1, length, "start");
4347
0
        range.end = janet_checktype(argv[2], JANET_NIL)
4348
0
                    ? length
4349
0
                    : janet_gethalfrange(argv, 2, length, "end");
4350
0
        if (range.end < range.start)
4351
0
            range.end = range.start;
4352
0
    }
4353
0
    return range;
4354
0
}
4355
4356
0
Janet janet_dyn(const char *name) {
4357
0
    if (!janet_vm.fiber) {
4358
0
        if (!janet_vm.top_dyns) return janet_wrap_nil();
4359
0
        return janet_table_get(janet_vm.top_dyns, janet_ckeywordv(name));
4360
0
    }
4361
0
    if (janet_vm.fiber->env) {
4362
0
        return janet_table_get(janet_vm.fiber->env, janet_ckeywordv(name));
4363
0
    } else {
4364
0
        return janet_wrap_nil();
4365
0
    }
4366
0
}
4367
4368
0
void janet_setdyn(const char *name, Janet value) {
4369
0
    if (!janet_vm.fiber) {
4370
0
        if (!janet_vm.top_dyns) janet_vm.top_dyns = janet_table(10);
4371
0
        janet_table_put(janet_vm.top_dyns, janet_ckeywordv(name), value);
4372
0
    } else {
4373
0
        if (!janet_vm.fiber->env) {
4374
0
            janet_vm.fiber->env = janet_table(1);
4375
0
        }
4376
0
        janet_table_put(janet_vm.fiber->env, janet_ckeywordv(name), value);
4377
0
    }
4378
0
}
4379
4380
0
uint64_t janet_getflags(const Janet *argv, int32_t n, const char *flags) {
4381
0
    uint64_t ret = 0;
4382
0
    const uint8_t *keyw = janet_getkeyword(argv, n);
4383
0
    int32_t klen = janet_string_length(keyw);
4384
0
    int32_t flen = (int32_t) strlen(flags);
4385
0
    if (flen > 64) {
4386
0
        flen = 64;
4387
0
    }
4388
0
    for (int32_t j = 0; j < klen; j++) {
4389
0
        for (int32_t i = 0; i < flen; i++) {
4390
0
            if (((uint8_t) flags[i]) == keyw[j]) {
4391
0
                ret |= 1ULL << i;
4392
0
                goto found;
4393
0
            }
4394
0
        }
4395
0
        janet_panicf("unexpected flag %c, expected one of \"%s\"", (char) keyw[j], flags);
4396
0
    found:
4397
0
        ;
4398
0
    }
4399
0
    return ret;
4400
0
}
4401
4402
0
int32_t janet_optnat(const Janet *argv, int32_t argc, int32_t n, int32_t dflt) {
4403
0
    if (argc <= n) return dflt;
4404
0
    if (janet_checktype(argv[n], JANET_NIL)) return dflt;
4405
0
    return janet_getnat(argv, n);
4406
0
}
4407
4408
0
int32_t janet_optinteger(const Janet *argv, int32_t argc, int32_t n, int32_t dflt) {
4409
0
    if (argc <= n) return dflt;
4410
0
    if (janet_checktype(argv[n], JANET_NIL)) return dflt;
4411
0
    return janet_getinteger(argv, n);
4412
0
}
4413
4414
0
int64_t janet_optinteger64(const Janet *argv, int32_t argc, int32_t n, int64_t dflt) {
4415
0
    if (argc <= n) return dflt;
4416
0
    if (janet_checktype(argv[n], JANET_NIL)) return dflt;
4417
0
    return janet_getinteger64(argv, n);
4418
0
}
4419
4420
0
size_t janet_optsize(const Janet *argv, int32_t argc, int32_t n, size_t dflt) {
4421
0
    if (argc <= n) return dflt;
4422
0
    if (janet_checktype(argv[n], JANET_NIL)) return dflt;
4423
0
    return janet_getsize(argv, n);
4424
0
}
4425
4426
0
void *janet_optabstract(const Janet *argv, int32_t argc, int32_t n, const JanetAbstractType *at, void *dflt) {
4427
0
    if (argc <= n) return dflt;
4428
0
    if (janet_checktype(argv[n], JANET_NIL)) return dflt;
4429
0
    return janet_getabstract(argv, n, at);
4430
0
}
4431
4432
/* Some definitions for function-like macros */
4433
4434
0
JANET_API JanetStructHead *(janet_struct_head)(const JanetKV *st) {
4435
0
    return janet_struct_head(st);
4436
0
}
4437
4438
0
JANET_API JanetAbstractHead *(janet_abstract_head)(const void *abstract) {
4439
0
    return janet_abstract_head(abstract);
4440
0
}
4441
4442
0
JANET_API JanetStringHead *(janet_string_head)(const uint8_t *s) {
4443
0
    return janet_string_head(s);
4444
0
}
4445
4446
0
JANET_API JanetTupleHead *(janet_tuple_head)(const Janet *tuple) {
4447
0
    return janet_tuple_head(tuple);
4448
0
}
4449
4450
4451
/* src/core/cfuns.c */
4452
#line 0 "src/core/cfuns.c"
4453
4454
/*
4455
* Copyright (c) 2023 Calvin Rose
4456
*
4457
* Permission is hereby granted, free of charge, to any person obtaining a copy
4458
* of this software and associated documentation files (the "Software"), to
4459
* deal in the Software without restriction, including without limitation the
4460
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
4461
* sell copies of the Software, and to permit persons to whom the Software is
4462
* furnished to do so, subject to the following conditions:
4463
*
4464
* The above copyright notice and this permission notice shall be included in
4465
* all copies or substantial portions of the Software.
4466
*
4467
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
4468
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
4469
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
4470
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
4471
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
4472
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
4473
* IN THE SOFTWARE.
4474
*/
4475
4476
#ifndef JANET_AMALG
4477
#include "features.h"
4478
#include <janet.h>
4479
#include "compile.h"
4480
#include "emit.h"
4481
#include "vector.h"
4482
#endif
4483
4484
0
static int arity1or2(JanetFopts opts, JanetSlot *args) {
4485
0
    (void) opts;
4486
0
    int32_t arity = janet_v_count(args);
4487
0
    return arity == 1 || arity == 2;
4488
0
}
4489
0
static int arity2or3(JanetFopts opts, JanetSlot *args) {
4490
0
    (void) opts;
4491
0
    int32_t arity = janet_v_count(args);
4492
0
    return arity == 2 || arity == 3;
4493
0
}
4494
0
static int fixarity1(JanetFopts opts, JanetSlot *args) {
4495
0
    (void) opts;
4496
0
    return janet_v_count(args) == 1;
4497
0
}
4498
0
static int maxarity1(JanetFopts opts, JanetSlot *args) {
4499
0
    (void) opts;
4500
0
    return janet_v_count(args) <= 1;
4501
0
}
4502
0
static int minarity2(JanetFopts opts, JanetSlot *args) {
4503
0
    (void) opts;
4504
0
    return janet_v_count(args) >= 2;
4505
0
}
4506
0
static int fixarity2(JanetFopts opts, JanetSlot *args) {
4507
0
    (void) opts;
4508
0
    return janet_v_count(args) == 2;
4509
0
}
4510
0
static int fixarity3(JanetFopts opts, JanetSlot *args) {
4511
0
    (void) opts;
4512
0
    return janet_v_count(args) == 3;
4513
0
}
4514
4515
/* Generic handling for $A = op $B */
4516
0
static JanetSlot genericSS(JanetFopts opts, int op, JanetSlot s) {
4517
0
    JanetSlot target = janetc_gettarget(opts);
4518
0
    janetc_emit_ss(opts.compiler, op, target, s, 1);
4519
0
    return target;
4520
0
}
4521
4522
/* Generic handling for $A = $B op I */
4523
0
static JanetSlot genericSSI(JanetFopts opts, int op, JanetSlot s, int32_t imm) {
4524
0
    JanetSlot target = janetc_gettarget(opts);
4525
0
    janetc_emit_ssi(opts.compiler, op, target, s, imm, 1);
4526
0
    return target;
4527
0
}
4528
4529
/* Emit an insruction that implements a form by itself. */
4530
static JanetSlot opfunction(
4531
    JanetFopts opts,
4532
    JanetSlot *args,
4533
    int op,
4534
0
    Janet defaultArg2) {
4535
0
    JanetCompiler *c = opts.compiler;
4536
0
    int32_t len;
4537
0
    len = janet_v_count(args);
4538
0
    JanetSlot t;
4539
0
    if (len == 1) {
4540
0
        t = janetc_gettarget(opts);
4541
0
        janetc_emit_sss(c, op, t, args[0], janetc_cslot(defaultArg2), 1);
4542
0
        return t;
4543
0
    } else {
4544
        /* len == 2 */
4545
0
        t = janetc_gettarget(opts);
4546
0
        janetc_emit_sss(c, op, t, args[0], args[1], 1);
4547
0
    }
4548
0
    return t;
4549
0
}
4550
4551
/* Check if a value can be coerced to an immediate value */
4552
0
static int can_be_imm(Janet x, int8_t *out) {
4553
0
    if (!janet_checkint(x)) return 0;
4554
0
    int32_t integer = janet_unwrap_integer(x);
4555
0
    if (integer > 127 || integer < -127) return 0;
4556
0
    *out = (int8_t) integer;
4557
0
    return 1;
4558
0
}
4559
4560
/* Check if a slot can be coerced to an immediate value */
4561
0
static int can_slot_be_imm(JanetSlot s, int8_t *out) {
4562
0
    if (!(s.flags & JANET_SLOT_CONSTANT)) return 0;
4563
0
    return can_be_imm(s.constant, out);
4564
0
}
4565
4566
/* Emit a series of instructions instead of a function call to a math op */
4567
static JanetSlot opreduce(
4568
    JanetFopts opts,
4569
    JanetSlot *args,
4570
    int op,
4571
    int opim,
4572
0
    Janet nullary) {
4573
0
    JanetCompiler *c = opts.compiler;
4574
0
    int32_t i, len;
4575
0
    int8_t imm = 0;
4576
0
    int neg = opim < 0;
4577
0
    if (opim < 0) opim = -opim;
4578
0
    len = janet_v_count(args);
4579
0
    JanetSlot t;
4580
0
    if (len == 0) {
4581
0
        return janetc_cslot(nullary);
4582
0
    } else if (len == 1) {
4583
0
        t = janetc_gettarget(opts);
4584
        /* Special case subtract to be times -1 */
4585
0
        if (op == JOP_SUBTRACT) {
4586
0
            janetc_emit_ssi(c, JOP_MULTIPLY_IMMEDIATE, t, args[0], -1, 1);
4587
0
        } else {
4588
0
            janetc_emit_sss(c, op, t, janetc_cslot(nullary), args[0], 1);
4589
0
        }
4590
0
        return t;
4591
0
    }
4592
0
    t = janetc_gettarget(opts);
4593
0
    if (opim && can_slot_be_imm(args[1], &imm)) {
4594
0
        janetc_emit_ssi(c, opim, t, args[0], neg ? -imm : imm, 1);
4595
0
    } else {
4596
0
        janetc_emit_sss(c, op, t, args[0], args[1], 1);
4597
0
    }
4598
0
    for (i = 2; i < len; i++) {
4599
0
        if (opim && can_slot_be_imm(args[i], &imm)) {
4600
0
            janetc_emit_ssi(c, opim, t, t, neg ? -imm : imm, 1);
4601
0
        } else {
4602
0
            janetc_emit_sss(c, op, t, t, args[i], 1);
4603
0
        }
4604
0
    }
4605
0
    return t;
4606
0
}
4607
4608
/* Function optimizers */
4609
4610
0
static JanetSlot do_propagate(JanetFopts opts, JanetSlot *args) {
4611
0
    return opreduce(opts, args, JOP_PROPAGATE, 0, janet_wrap_nil());
4612
0
}
4613
0
static JanetSlot do_error(JanetFopts opts, JanetSlot *args) {
4614
0
    janetc_emit_s(opts.compiler, JOP_ERROR, args[0], 0);
4615
0
    return janetc_cslot(janet_wrap_nil());
4616
0
}
4617
0
static JanetSlot do_debug(JanetFopts opts, JanetSlot *args) {
4618
0
    (void)args;
4619
0
    int32_t len = janet_v_count(args);
4620
0
    JanetSlot t = janetc_gettarget(opts);
4621
0
    janetc_emit_ssu(opts.compiler, JOP_SIGNAL, t,
4622
0
                    (len == 1) ? args[0] : janetc_cslot(janet_wrap_nil()),
4623
0
                    JANET_SIGNAL_DEBUG,
4624
0
                    1);
4625
0
    return t;
4626
0
}
4627
0
static JanetSlot do_in(JanetFopts opts, JanetSlot *args) {
4628
0
    return opreduce(opts, args, JOP_IN, 0, janet_wrap_nil());
4629
0
}
4630
0
static JanetSlot do_get(JanetFopts opts, JanetSlot *args) {
4631
0
    if (janet_v_count(args) == 3) {
4632
0
        JanetCompiler *c = opts.compiler;
4633
0
        JanetSlot t = janetc_gettarget(opts);
4634
0
        int target_is_default = janetc_sequal(t, args[2]);
4635
0
        JanetSlot dflt_slot = args[2];
4636
0
        if (target_is_default) {
4637
0
            dflt_slot = janetc_farslot(c);
4638
0
            janetc_copy(c, dflt_slot, t);
4639
0
        }
4640
0
        janetc_emit_sss(c, JOP_GET, t, args[0], args[1], 1);
4641
0
        int32_t label = janetc_emit_si(c, JOP_JUMP_IF_NOT_NIL, t, 0, 0);
4642
0
        janetc_copy(c, t, dflt_slot);
4643
0
        if (target_is_default) janetc_freeslot(c, dflt_slot);
4644
0
        int32_t current = janet_v_count(c->buffer);
4645
0
        c->buffer[label] |= (current - label) << 16;
4646
0
        return t;
4647
0
    } else {
4648
0
        return opreduce(opts, args, JOP_GET, 0, janet_wrap_nil());
4649
0
    }
4650
0
}
4651
0
static JanetSlot do_next(JanetFopts opts, JanetSlot *args) {
4652
0
    return opfunction(opts, args, JOP_NEXT, janet_wrap_nil());
4653
0
}
4654
0
static JanetSlot do_modulo(JanetFopts opts, JanetSlot *args) {
4655
0
    return opreduce(opts, args, JOP_MODULO, 0, janet_wrap_nil());
4656
0
}
4657
0
static JanetSlot do_remainder(JanetFopts opts, JanetSlot *args) {
4658
0
    return opreduce(opts, args, JOP_REMAINDER, 0, janet_wrap_nil());
4659
0
}
4660
0
static JanetSlot do_cmp(JanetFopts opts, JanetSlot *args) {
4661
0
    return opreduce(opts, args, JOP_COMPARE, 0, janet_wrap_nil());
4662
0
}
4663
0
static JanetSlot do_put(JanetFopts opts, JanetSlot *args) {
4664
0
    if (opts.flags & JANET_FOPTS_DROP) {
4665
0
        janetc_emit_sss(opts.compiler, JOP_PUT, args[0], args[1], args[2], 0);
4666
0
        return janetc_cslot(janet_wrap_nil());
4667
0
    } else {
4668
0
        JanetSlot t = janetc_gettarget(opts);
4669
0
        janetc_copy(opts.compiler, t, args[0]);
4670
0
        janetc_emit_sss(opts.compiler, JOP_PUT, t, args[1], args[2], 0);
4671
0
        return t;
4672
0
    }
4673
0
}
4674
0
static JanetSlot do_length(JanetFopts opts, JanetSlot *args) {
4675
0
    return genericSS(opts, JOP_LENGTH, args[0]);
4676
0
}
4677
0
static JanetSlot do_yield(JanetFopts opts, JanetSlot *args) {
4678
0
    if (janet_v_count(args) == 0) {
4679
0
        return genericSSI(opts, JOP_SIGNAL, janetc_cslot(janet_wrap_nil()), 3);
4680
0
    } else {
4681
0
        return genericSSI(opts, JOP_SIGNAL, args[0], 3);
4682
0
    }
4683
0
}
4684
0
static JanetSlot do_resume(JanetFopts opts, JanetSlot *args) {
4685
0
    return opfunction(opts, args, JOP_RESUME, janet_wrap_nil());
4686
0
}
4687
0
static JanetSlot do_cancel(JanetFopts opts, JanetSlot *args) {
4688
0
    return opfunction(opts, args, JOP_CANCEL, janet_wrap_nil());
4689
0
}
4690
0
static JanetSlot do_apply(JanetFopts opts, JanetSlot *args) {
4691
    /* Push phase */
4692
0
    JanetCompiler *c = opts.compiler;
4693
0
    int32_t i;
4694
0
    for (i = 1; i < janet_v_count(args) - 3; i += 3)
4695
0
        janetc_emit_sss(c, JOP_PUSH_3, args[i], args[i + 1], args[i + 2], 0);
4696
0
    if (i == janet_v_count(args) - 3)
4697
0
        janetc_emit_ss(c, JOP_PUSH_2, args[i], args[i + 1], 0);
4698
0
    else if (i == janet_v_count(args) - 2)
4699
0
        janetc_emit_s(c, JOP_PUSH, args[i], 0);
4700
    /* Push array phase */
4701
0
    janetc_emit_s(c, JOP_PUSH_ARRAY, janet_v_last(args), 0);
4702
    /* Call phase */
4703
0
    JanetSlot target;
4704
0
    if (opts.flags & JANET_FOPTS_TAIL) {
4705
0
        janetc_emit_s(c, JOP_TAILCALL, args[0], 0);
4706
0
        target = janetc_cslot(janet_wrap_nil());
4707
0
        target.flags |= JANET_SLOT_RETURNED;
4708
0
    } else {
4709
0
        target = janetc_gettarget(opts);
4710
0
        janetc_emit_ss(c, JOP_CALL, target, args[0], 1);
4711
0
    }
4712
0
    return target;
4713
0
}
4714
4715
/* Variadic operators specialization */
4716
4717
0
static JanetSlot do_add(JanetFopts opts, JanetSlot *args) {
4718
0
    return opreduce(opts, args, JOP_ADD, JOP_ADD_IMMEDIATE, janet_wrap_integer(0));
4719
0
}
4720
0
static JanetSlot do_sub(JanetFopts opts, JanetSlot *args) {
4721
0
    return opreduce(opts, args, JOP_SUBTRACT, -JOP_ADD_IMMEDIATE, janet_wrap_integer(0));
4722
0
}
4723
0
static JanetSlot do_mul(JanetFopts opts, JanetSlot *args) {
4724
0
    return opreduce(opts, args, JOP_MULTIPLY, JOP_MULTIPLY_IMMEDIATE, janet_wrap_integer(1));
4725
0
}
4726
0
static JanetSlot do_div(JanetFopts opts, JanetSlot *args) {
4727
0
    return opreduce(opts, args, JOP_DIVIDE, JOP_DIVIDE_IMMEDIATE, janet_wrap_integer(1));
4728
0
}
4729
0
static JanetSlot do_band(JanetFopts opts, JanetSlot *args) {
4730
0
    return opreduce(opts, args, JOP_BAND, 0, janet_wrap_integer(-1));
4731
0
}
4732
0
static JanetSlot do_bor(JanetFopts opts, JanetSlot *args) {
4733
0
    return opreduce(opts, args, JOP_BOR, 0, janet_wrap_integer(0));
4734
0
}
4735
0
static JanetSlot do_bxor(JanetFopts opts, JanetSlot *args) {
4736
0
    return opreduce(opts, args, JOP_BXOR, 0, janet_wrap_integer(0));
4737
0
}
4738
0
static JanetSlot do_lshift(JanetFopts opts, JanetSlot *args) {
4739
0
    return opreduce(opts, args, JOP_SHIFT_LEFT, JOP_SHIFT_LEFT_IMMEDIATE, janet_wrap_integer(1));
4740
0
}
4741
0
static JanetSlot do_rshift(JanetFopts opts, JanetSlot *args) {
4742
0
    return opreduce(opts, args, JOP_SHIFT_RIGHT, JOP_SHIFT_RIGHT_IMMEDIATE, janet_wrap_integer(1));
4743
0
}
4744
0
static JanetSlot do_rshiftu(JanetFopts opts, JanetSlot *args) {
4745
0
    return opreduce(opts, args, JOP_SHIFT_RIGHT_UNSIGNED, JOP_SHIFT_RIGHT_UNSIGNED_IMMEDIATE, janet_wrap_integer(1));
4746
0
}
4747
0
static JanetSlot do_bnot(JanetFopts opts, JanetSlot *args) {
4748
0
    return genericSS(opts, JOP_BNOT, args[0]);
4749
0
}
4750
4751
/* Specialization for comparators */
4752
static JanetSlot compreduce(
4753
    JanetFopts opts,
4754
    JanetSlot *args,
4755
    int op,
4756
    int opim,
4757
0
    int invert) {
4758
0
    JanetCompiler *c = opts.compiler;
4759
0
    int32_t i, len;
4760
0
    int8_t imm = 0;
4761
0
    len = janet_v_count(args);
4762
0
    int32_t *labels = NULL;
4763
0
    JanetSlot t;
4764
0
    if (len < 2) {
4765
0
        return invert
4766
0
               ? janetc_cslot(janet_wrap_false())
4767
0
               : janetc_cslot(janet_wrap_true());
4768
0
    }
4769
0
    t = janetc_gettarget(opts);
4770
0
    for (i = 1; i < len; i++) {
4771
0
        if (opim && can_slot_be_imm(args[i], &imm)) {
4772
0
            janetc_emit_ssi(c, opim, t, args[i - 1], imm, 1);
4773
0
        } else {
4774
0
            janetc_emit_sss(c, op, t, args[i - 1], args[i], 1);
4775
0
        }
4776
0
        if (i != (len - 1)) {
4777
0
            int32_t label = janetc_emit_si(c, invert ? JOP_JUMP_IF : JOP_JUMP_IF_NOT, t, 0, 1);
4778
0
            janet_v_push(labels, label);
4779
0
        }
4780
0
    }
4781
0
    int32_t end = janet_v_count(c->buffer);
4782
0
    for (i = 0; i < janet_v_count(labels); i++) {
4783
0
        int32_t label = labels[i];
4784
0
        c->buffer[label] |= ((end - label) << 16);
4785
0
    }
4786
0
    janet_v_free(labels);
4787
0
    return t;
4788
0
}
4789
4790
0
static JanetSlot do_gt(JanetFopts opts, JanetSlot *args) {
4791
0
    return compreduce(opts, args, JOP_GREATER_THAN, JOP_GREATER_THAN_IMMEDIATE, 0);
4792
0
}
4793
0
static JanetSlot do_lt(JanetFopts opts, JanetSlot *args) {
4794
0
    return compreduce(opts, args, JOP_LESS_THAN, JOP_LESS_THAN_IMMEDIATE, 0);
4795
0
}
4796
0
static JanetSlot do_gte(JanetFopts opts, JanetSlot *args) {
4797
0
    return compreduce(opts, args, JOP_GREATER_THAN_EQUAL, 0, 0);
4798
0
}
4799
0
static JanetSlot do_lte(JanetFopts opts, JanetSlot *args) {
4800
0
    return compreduce(opts, args, JOP_LESS_THAN_EQUAL, 0, 0);
4801
0
}
4802
0
static JanetSlot do_eq(JanetFopts opts, JanetSlot *args) {
4803
0
    return compreduce(opts, args, JOP_EQUALS, JOP_EQUALS_IMMEDIATE, 0);
4804
0
}
4805
0
static JanetSlot do_neq(JanetFopts opts, JanetSlot *args) {
4806
0
    return compreduce(opts, args, JOP_NOT_EQUALS, JOP_NOT_EQUALS_IMMEDIATE, 1);
4807
0
}
4808
4809
/* Arranged by tag */
4810
static const JanetFunOptimizer optimizers[] = {
4811
    {maxarity1, do_debug},
4812
    {fixarity1, do_error},
4813
    {minarity2, do_apply},
4814
    {maxarity1, do_yield},
4815
    {arity1or2, do_resume},
4816
    {fixarity2, do_in},
4817
    {fixarity3, do_put},
4818
    {fixarity1, do_length},
4819
    {NULL, do_add},
4820
    {NULL, do_sub},
4821
    {NULL, do_mul},
4822
    {NULL, do_div},
4823
    {NULL, do_band},
4824
    {NULL, do_bor},
4825
    {NULL, do_bxor},
4826
    {NULL, do_lshift},
4827
    {NULL, do_rshift},
4828
    {NULL, do_rshiftu},
4829
    {fixarity1, do_bnot},
4830
    {NULL, do_gt},
4831
    {NULL, do_lt},
4832
    {NULL, do_gte},
4833
    {NULL, do_lte},
4834
    {NULL, do_eq},
4835
    {NULL, do_neq},
4836
    {fixarity2, do_propagate},
4837
    {arity2or3, do_get},
4838
    {arity1or2, do_next},
4839
    {fixarity2, do_modulo},
4840
    {fixarity2, do_remainder},
4841
    {fixarity2, do_cmp},
4842
    {fixarity2, do_cancel},
4843
};
4844
4845
0
const JanetFunOptimizer *janetc_funopt(uint32_t flags) {
4846
0
    uint32_t tag = flags & JANET_FUNCDEF_FLAG_TAG;
4847
0
    if (tag == 0)
4848
0
        return NULL;
4849
0
    uint32_t index = tag - 1;
4850
0
    if (index >= (sizeof(optimizers) / sizeof(optimizers[0])))
4851
0
        return NULL;
4852
0
    return optimizers + index;
4853
0
}
4854
4855
4856
4857
/* src/core/compile.c */
4858
#line 0 "src/core/compile.c"
4859
4860
/*
4861
* Copyright (c) 2023 Calvin Rose
4862
*
4863
* Permission is hereby granted, free of charge, to any person obtaining a copy
4864
* of this software and associated documentation files (the "Software"), to
4865
* deal in the Software without restriction, including without limitation the
4866
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
4867
* sell copies of the Software, and to permit persons to whom the Software is
4868
* furnished to do so, subject to the following conditions:
4869
*
4870
* The above copyright notice and this permission notice shall be included in
4871
* all copies or substantial portions of the Software.
4872
*
4873
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
4874
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
4875
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
4876
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
4877
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
4878
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
4879
* IN THE SOFTWARE.
4880
*/
4881
4882
#ifndef JANET_AMALG
4883
#include "features.h"
4884
#include <janet.h>
4885
#include "compile.h"
4886
#include "emit.h"
4887
#include "vector.h"
4888
#include "util.h"
4889
#include "state.h"
4890
#endif
4891
4892
0
JanetFopts janetc_fopts_default(JanetCompiler *c) {
4893
0
    JanetFopts ret;
4894
0
    ret.compiler = c;
4895
0
    ret.flags = 0;
4896
0
    ret.hint = janetc_cslot(janet_wrap_nil());
4897
0
    return ret;
4898
0
}
4899
4900
/* Throw an error with a janet string. */
4901
0
void janetc_error(JanetCompiler *c, const uint8_t *m) {
4902
    /* Don't override first error */
4903
0
    if (c->result.status == JANET_COMPILE_ERROR) {
4904
0
        return;
4905
0
    }
4906
0
    c->result.status = JANET_COMPILE_ERROR;
4907
0
    c->result.error = m;
4908
0
}
4909
4910
/* Throw an error with a message in a cstring */
4911
0
void janetc_cerror(JanetCompiler *c, const char *m) {
4912
0
    janetc_error(c, janet_cstring(m));
4913
0
}
4914
4915
static const char *janet_lint_level_names[] = {
4916
    "relaxed",
4917
    "normal",
4918
    "strict"
4919
};
4920
4921
/* Emit compiler linter messages */
4922
0
void janetc_lintf(JanetCompiler *c, JanetCompileLintLevel level, const char *format, ...) {
4923
0
    if (NULL != c->lints) {
4924
        /* format message */
4925
0
        va_list args;
4926
0
        JanetBuffer buffer;
4927
0
        int32_t len = 0;
4928
0
        while (format[len]) len++;
4929
0
        janet_buffer_init(&buffer, len);
4930
0
        va_start(args, format);
4931
0
        janet_formatbv(&buffer, format, args);
4932
0
        va_end(args);
4933
0
        const uint8_t *str = janet_string(buffer.data, buffer.count);
4934
0
        janet_buffer_deinit(&buffer);
4935
        /* construct linting payload */
4936
0
        Janet *payload = janet_tuple_begin(4);
4937
0
        payload[0] = janet_ckeywordv(janet_lint_level_names[level]);
4938
0
        payload[1] = c->current_mapping.line == -1 ? janet_wrap_nil() : janet_wrap_integer(c->current_mapping.line);
4939
0
        payload[2] = c->current_mapping.column == -1 ? janet_wrap_nil() : janet_wrap_integer(c->current_mapping.column);
4940
0
        payload[3] = janet_wrap_string(str);
4941
0
        janet_array_push(c->lints, janet_wrap_tuple(janet_tuple_end(payload)));
4942
0
    }
4943
0
}
4944
4945
/* Free a slot */
4946
0
void janetc_freeslot(JanetCompiler *c, JanetSlot s) {
4947
0
    if (s.flags & (JANET_SLOT_CONSTANT | JANET_SLOT_REF | JANET_SLOT_NAMED)) return;
4948
0
    if (s.envindex >= 0) return;
4949
0
    janetc_regalloc_free(&c->scope->ra, s.index);
4950
0
}
4951
4952
/* Add a slot to a scope with a symbol associated with it (def or var). */
4953
0
void janetc_nameslot(JanetCompiler *c, const uint8_t *sym, JanetSlot s) {
4954
0
    SymPair sp;
4955
0
    int32_t cnt = janet_v_count(c->buffer);
4956
0
    sp.sym = sym;
4957
0
    sp.sym2 = sym;
4958
0
    sp.slot = s;
4959
0
    sp.keep = 0;
4960
0
    sp.slot.flags |= JANET_SLOT_NAMED;
4961
0
    sp.birth_pc = cnt ? cnt - 1 : 0;
4962
0
    sp.death_pc = UINT32_MAX;
4963
0
    janet_v_push(c->scope->syms, sp);
4964
0
}
4965
4966
/* Create a slot with a constant */
4967
0
JanetSlot janetc_cslot(Janet x) {
4968
0
    JanetSlot ret;
4969
0
    ret.flags = (1 << janet_type(x)) | JANET_SLOT_CONSTANT;
4970
0
    ret.index = -1;
4971
0
    ret.constant = x;
4972
0
    ret.envindex = -1;
4973
0
    return ret;
4974
0
}
4975
4976
/* Get a local slot */
4977
0
JanetSlot janetc_farslot(JanetCompiler *c) {
4978
0
    JanetSlot ret;
4979
0
    ret.flags = JANET_SLOTTYPE_ANY;
4980
0
    ret.index = janetc_allocfar(c);
4981
0
    ret.constant = janet_wrap_nil();
4982
0
    ret.envindex = -1;
4983
0
    return ret;
4984
0
}
4985
4986
/* Enter a new scope */
4987
0
void janetc_scope(JanetScope *s, JanetCompiler *c, int flags, const char *name) {
4988
0
    JanetScope scope;
4989
0
    scope.name = name;
4990
0
    scope.child = NULL;
4991
0
    scope.consts = NULL;
4992
0
    scope.syms = NULL;
4993
0
    scope.envs = NULL;
4994
0
    scope.defs = NULL;
4995
0
    scope.bytecode_start = janet_v_count(c->buffer);
4996
0
    scope.flags = flags;
4997
0
    scope.parent = c->scope;
4998
0
    janetc_regalloc_init(&scope.ua);
4999
    /* Inherit slots */
5000
0
    if ((!(flags & JANET_SCOPE_FUNCTION)) && c->scope) {
5001
0
        janetc_regalloc_clone(&scope.ra, &(c->scope->ra));
5002
0
    } else {
5003
0
        janetc_regalloc_init(&scope.ra);
5004
0
    }
5005
    /* Link parent and child and update pointer */
5006
0
    if (c->scope)
5007
0
        c->scope->child = s;
5008
0
    c->scope = s;
5009
0
    *s = scope;
5010
0
}
5011
5012
/* Leave a scope. */
5013
0
void janetc_popscope(JanetCompiler *c) {
5014
0
    JanetScope *oldscope = c->scope;
5015
0
    JanetScope *newscope = oldscope->parent;
5016
    /* Move free slots to parent scope if not a new function.
5017
     * We need to know the total number of slots used when compiling the function. */
5018
0
    if (!(oldscope->flags & (JANET_SCOPE_FUNCTION | JANET_SCOPE_UNUSED)) && newscope) {
5019
        /* Parent scopes inherit child's closure flag. Needed
5020
         * for while loops. (if a while loop creates a closure, it
5021
         * is compiled to a tail recursive iife) */
5022
0
        if (oldscope->flags & JANET_SCOPE_CLOSURE) {
5023
0
            newscope->flags |= JANET_SCOPE_CLOSURE;
5024
0
        }
5025
0
        if (newscope->ra.max < oldscope->ra.max) {
5026
0
            newscope->ra.max = oldscope->ra.max;
5027
0
        }
5028
5029
        /* Keep upvalue slots and symbols for debugging. */
5030
0
        for (int32_t i = 0; i < janet_v_count(oldscope->syms); i++) {
5031
0
            SymPair pair = oldscope->syms[i];
5032
            /* The variable should not be lexically accessible */
5033
0
            pair.sym = NULL;
5034
0
            if (pair.death_pc == UINT32_MAX) {
5035
0
                pair.death_pc = (uint32_t) janet_v_count(c->buffer);
5036
0
            }
5037
0
            if (pair.keep) {
5038
                /* The variable should also not be included in the locals */
5039
0
                pair.sym2 = NULL;
5040
0
                janetc_regalloc_touch(&newscope->ra, pair.slot.index);
5041
0
            }
5042
0
            janet_v_push(newscope->syms, pair);
5043
0
        }
5044
0
    }
5045
5046
    /* Free the old scope */
5047
0
    janet_v_free(oldscope->consts);
5048
0
    janet_v_free(oldscope->syms);
5049
0
    janet_v_free(oldscope->envs);
5050
0
    janet_v_free(oldscope->defs);
5051
0
    janetc_regalloc_deinit(&oldscope->ra);
5052
0
    janetc_regalloc_deinit(&oldscope->ua);
5053
    /* Update pointer */
5054
0
    if (newscope)
5055
0
        newscope->child = NULL;
5056
0
    c->scope = newscope;
5057
0
}
5058
5059
/* Leave a scope but keep a slot allocated. */
5060
0
void janetc_popscope_keepslot(JanetCompiler *c, JanetSlot retslot) {
5061
0
    JanetScope *scope;
5062
0
    janetc_popscope(c);
5063
0
    scope = c->scope;
5064
0
    if (scope && retslot.envindex < 0 && retslot.index >= 0) {
5065
0
        janetc_regalloc_touch(&scope->ra, retslot.index);
5066
0
    }
5067
0
}
5068
5069
static int lookup_missing(
5070
    JanetCompiler *c,
5071
    const uint8_t *sym,
5072
    JanetFunction *handler,
5073
0
    JanetBinding *out) {
5074
0
    int32_t minar = handler->def->min_arity;
5075
0
    int32_t maxar = handler->def->max_arity;
5076
0
    if (minar > 1 || maxar < 1) {
5077
0
        janetc_error(c, janet_cstring("missing symbol lookup handler must take 1 argument"));
5078
0
        return 0;
5079
0
    }
5080
0
    Janet args[1] = { janet_wrap_symbol(sym) };
5081
0
    JanetFiber *fiberp = janet_fiber(handler, 64, 1, args);
5082
0
    if (NULL == fiberp) {
5083
0
        janetc_error(c, janet_cstring("failed to call missing symbol lookup handler"));
5084
0
        return 0;
5085
0
    }
5086
0
    fiberp->env = c->env;
5087
0
    int lock = janet_gclock();
5088
0
    Janet tempOut;
5089
0
    JanetSignal status = janet_continue(fiberp, janet_wrap_nil(), &tempOut);
5090
0
    janet_gcunlock(lock);
5091
0
    if (status != JANET_SIGNAL_OK) {
5092
0
        janetc_error(c, janet_formatc("(lookup) %V", tempOut));
5093
0
        return 0;
5094
0
    }
5095
5096
    /* Convert return value as entry. */
5097
    /* Alternative could use janet_resolve_ext(c->env, sym) to read result from environment. */
5098
0
    *out = janet_binding_from_entry(tempOut);
5099
0
    return 1;
5100
0
}
5101
5102
/* Allow searching for symbols. Return information about the symbol */
5103
JanetSlot janetc_resolve(
5104
    JanetCompiler *c,
5105
0
    const uint8_t *sym) {
5106
5107
0
    JanetSlot ret = janetc_cslot(janet_wrap_nil());
5108
0
    JanetScope *scope = c->scope;
5109
0
    SymPair *pair;
5110
0
    int foundlocal = 1;
5111
0
    int unused = 0;
5112
5113
    /* Search scopes for symbol, starting from top */
5114
0
    while (scope) {
5115
0
        int32_t i, len;
5116
0
        if (scope->flags & JANET_SCOPE_UNUSED)
5117
0
            unused = 1;
5118
0
        len = janet_v_count(scope->syms);
5119
        /* Search in reverse order */
5120
0
        for (i = len - 1; i >= 0; i--) {
5121
0
            pair = scope->syms + i;
5122
0
            if (pair->sym == sym) {
5123
0
                ret = pair->slot;
5124
0
                goto found;
5125
0
            }
5126
0
        }
5127
0
        if (scope->flags & JANET_SCOPE_FUNCTION)
5128
0
            foundlocal = 0;
5129
0
        scope = scope->parent;
5130
0
    }
5131
5132
    /* Symbol not found - check for global */
5133
0
    {
5134
0
        JanetBinding binding = janet_resolve_ext(c->env, sym);
5135
0
        if (binding.type == JANET_BINDING_NONE) {
5136
0
            Janet handler = janet_table_get(c->env, janet_ckeywordv("missing-symbol"));
5137
0
            switch (janet_type(handler)) {
5138
0
                case JANET_NIL:
5139
0
                    break;
5140
0
                case JANET_FUNCTION:
5141
0
                    if (!lookup_missing(c, sym, janet_unwrap_function(handler), &binding))
5142
0
                        return janetc_cslot(janet_wrap_nil());
5143
0
                    break;
5144
0
                default:
5145
0
                    janetc_error(c, janet_formatc("invalid lookup handler %V", handler));
5146
0
                    return janetc_cslot(janet_wrap_nil());
5147
0
            }
5148
0
        }
5149
5150
0
        switch (binding.type) {
5151
0
            default:
5152
0
            case JANET_BINDING_NONE:
5153
0
                janetc_error(c, janet_formatc("unknown symbol %q", janet_wrap_symbol(sym)));
5154
0
                return janetc_cslot(janet_wrap_nil());
5155
0
            case JANET_BINDING_DEF:
5156
0
            case JANET_BINDING_MACRO: /* Macro should function like defs when not in calling pos */
5157
0
                ret = janetc_cslot(binding.value);
5158
0
                break;
5159
0
            case JANET_BINDING_DYNAMIC_DEF:
5160
0
            case JANET_BINDING_DYNAMIC_MACRO:
5161
0
                ret = janetc_cslot(binding.value);
5162
0
                ret.flags |= JANET_SLOT_REF | JANET_SLOT_NAMED | JANET_SLOTTYPE_ANY;
5163
0
                ret.flags &= ~JANET_SLOT_CONSTANT;
5164
0
                break;
5165
0
            case JANET_BINDING_VAR: {
5166
0
                ret = janetc_cslot(binding.value);
5167
0
                ret.flags |= JANET_SLOT_REF | JANET_SLOT_NAMED | JANET_SLOT_MUTABLE | JANET_SLOTTYPE_ANY;
5168
0
                ret.flags &= ~JANET_SLOT_CONSTANT;
5169
0
                break;
5170
0
            }
5171
0
        }
5172
0
        JanetCompileLintLevel depLevel = JANET_C_LINT_RELAXED;
5173
0
        switch (binding.deprecation) {
5174
0
            case JANET_BINDING_DEP_NONE:
5175
0
                break;
5176
0
            case JANET_BINDING_DEP_RELAXED:
5177
0
                depLevel = JANET_C_LINT_RELAXED;
5178
0
                break;
5179
0
            case JANET_BINDING_DEP_NORMAL:
5180
0
                depLevel = JANET_C_LINT_NORMAL;
5181
0
                break;
5182
0
            case JANET_BINDING_DEP_STRICT:
5183
0
                depLevel = JANET_C_LINT_STRICT;
5184
0
                break;
5185
0
        }
5186
0
        if (binding.deprecation != JANET_BINDING_DEP_NONE) {
5187
0
            janetc_lintf(c, depLevel, "%q is deprecated", janet_wrap_symbol(sym));
5188
0
        }
5189
0
        return ret;
5190
0
    }
5191
5192
    /* Symbol was found */
5193
0
found:
5194
5195
    /* Constants can be returned immediately (they are stateless) */
5196
0
    if (ret.flags & (JANET_SLOT_CONSTANT | JANET_SLOT_REF))
5197
0
        return ret;
5198
5199
    /* Unused references and locals shouldn't add captured envs. */
5200
0
    if (unused || foundlocal) {
5201
0
        ret.envindex = -1;
5202
0
        return ret;
5203
0
    }
5204
5205
    /* non-local scope needs to expose its environment */
5206
0
    JanetScope *original_scope = scope;
5207
0
    pair->keep = 1;
5208
0
    while (scope && !(scope->flags & JANET_SCOPE_FUNCTION))
5209
0
        scope = scope->parent;
5210
0
    janet_assert(scope, "invalid scopes");
5211
0
    scope->flags |= JANET_SCOPE_ENV;
5212
5213
    /* In the function scope, allocate the slot as an upvalue */
5214
0
    janetc_regalloc_touch(&scope->ua, ret.index);
5215
5216
    /* Iterate through child scopes and make sure environment is propagated */
5217
0
    scope = scope->child;
5218
5219
    /* Propagate env up to current scope */
5220
0
    int32_t envindex = -1;
5221
0
    while (scope) {
5222
0
        if (scope->flags & JANET_SCOPE_FUNCTION) {
5223
0
            int32_t j, len;
5224
0
            int scopefound = 0;
5225
            /* Check if scope already has env. If so, break */
5226
0
            len = janet_v_count(scope->envs);
5227
0
            for (j = 0; j < len; j++) {
5228
0
                if (scope->envs[j].envindex == envindex) {
5229
0
                    scopefound = 1;
5230
0
                    envindex = j;
5231
0
                    break;
5232
0
                }
5233
0
            }
5234
            /* Add the environment if it is not already referenced */
5235
0
            if (!scopefound) {
5236
0
                len = janet_v_count(scope->envs);
5237
0
                JanetEnvRef ref;
5238
0
                ref.envindex = envindex;
5239
0
                ref.scope = original_scope;
5240
0
                janet_v_push(scope->envs, ref);
5241
0
                envindex = len;
5242
0
            }
5243
0
        }
5244
0
        scope = scope->child;
5245
0
    }
5246
5247
0
    ret.envindex = envindex;
5248
0
    return ret;
5249
0
}
5250
5251
/* Generate the return instruction for a slot. */
5252
0
JanetSlot janetc_return(JanetCompiler *c, JanetSlot s) {
5253
0
    if (!(s.flags & JANET_SLOT_RETURNED)) {
5254
0
        if (s.flags & JANET_SLOT_CONSTANT && janet_checktype(s.constant, JANET_NIL))
5255
0
            janetc_emit(c, JOP_RETURN_NIL);
5256
0
        else
5257
0
            janetc_emit_s(c, JOP_RETURN, s, 0);
5258
0
        s.flags |= JANET_SLOT_RETURNED;
5259
0
    }
5260
0
    return s;
5261
0
}
5262
5263
/* Get a target slot for emitting an instruction. */
5264
0
JanetSlot janetc_gettarget(JanetFopts opts) {
5265
0
    JanetSlot slot;
5266
0
    if ((opts.flags & JANET_FOPTS_HINT) &&
5267
0
            (opts.hint.envindex < 0) &&
5268
0
            (opts.hint.index >= 0 && opts.hint.index <= 0xFF)) {
5269
0
        slot = opts.hint;
5270
0
    } else {
5271
0
        slot.envindex = -1;
5272
0
        slot.constant = janet_wrap_nil();
5273
0
        slot.flags = 0;
5274
0
        slot.index = janetc_allocfar(opts.compiler);
5275
0
    }
5276
0
    return slot;
5277
0
}
5278
5279
/* Get a bunch of slots for function arguments */
5280
0
JanetSlot *janetc_toslots(JanetCompiler *c, const Janet *vals, int32_t len) {
5281
0
    int32_t i;
5282
0
    JanetSlot *ret = NULL;
5283
0
    JanetFopts subopts = janetc_fopts_default(c);
5284
0
    subopts.flags |= JANET_FOPTS_ACCEPT_SPLICE;
5285
0
    for (i = 0; i < len; i++) {
5286
0
        janet_v_push(ret, janetc_value(subopts, vals[i]));
5287
0
    }
5288
0
    return ret;
5289
0
}
5290
5291
/* Get a bunch of slots for function arguments */
5292
0
JanetSlot *janetc_toslotskv(JanetCompiler *c, Janet ds) {
5293
0
    JanetSlot *ret = NULL;
5294
0
    JanetFopts subopts = janetc_fopts_default(c);
5295
0
    subopts.flags |= JANET_FOPTS_ACCEPT_SPLICE;
5296
0
    const JanetKV *kvs = NULL;
5297
0
    int32_t cap = 0, len = 0;
5298
0
    janet_dictionary_view(ds, &kvs, &len, &cap);
5299
0
    for (int32_t i = 0; i < cap; i++) {
5300
0
        if (janet_checktype(kvs[i].key, JANET_NIL)) continue;
5301
0
        janet_v_push(ret, janetc_value(subopts, kvs[i].key));
5302
0
        janet_v_push(ret, janetc_value(subopts, kvs[i].value));
5303
0
    }
5304
0
    return ret;
5305
0
}
5306
5307
/* Push slots loaded via janetc_toslots. Return the minimum number of slots pushed,
5308
 * or -1 - min_arity if there is a splice. (if there is no splice, min_arity is also
5309
 * the maximum possible arity). */
5310
0
int32_t janetc_pushslots(JanetCompiler *c, JanetSlot *slots) {
5311
0
    int32_t i;
5312
0
    int32_t count = janet_v_count(slots);
5313
0
    int32_t min_arity = 0;
5314
0
    int has_splice = 0;
5315
0
    for (i = 0; i < count;) {
5316
0
        if (slots[i].flags & JANET_SLOT_SPLICED) {
5317
0
            janetc_emit_s(c, JOP_PUSH_ARRAY, slots[i], 0);
5318
0
            i++;
5319
0
            has_splice = 1;
5320
0
        } else if (i + 1 == count) {
5321
0
            janetc_emit_s(c, JOP_PUSH, slots[i], 0);
5322
0
            i++;
5323
0
            min_arity++;
5324
0
        } else if (slots[i + 1].flags & JANET_SLOT_SPLICED) {
5325
0
            janetc_emit_s(c, JOP_PUSH, slots[i], 0);
5326
0
            janetc_emit_s(c, JOP_PUSH_ARRAY, slots[i + 1], 0);
5327
0
            i += 2;
5328
0
            min_arity++;
5329
0
            has_splice = 1;
5330
0
        } else if (i + 2 == count) {
5331
0
            janetc_emit_ss(c, JOP_PUSH_2, slots[i], slots[i + 1], 0);
5332
0
            i += 2;
5333
0
            min_arity += 2;
5334
0
        } else if (slots[i + 2].flags & JANET_SLOT_SPLICED) {
5335
0
            janetc_emit_ss(c, JOP_PUSH_2, slots[i], slots[i + 1], 0);
5336
0
            janetc_emit_s(c, JOP_PUSH_ARRAY, slots[i + 2], 0);
5337
0
            i += 3;
5338
0
            min_arity += 2;
5339
0
            has_splice = 1;
5340
0
        } else {
5341
0
            janetc_emit_sss(c, JOP_PUSH_3, slots[i], slots[i + 1], slots[i + 2], 0);
5342
0
            i += 3;
5343
0
            min_arity += 3;
5344
0
        }
5345
0
    }
5346
0
    return has_splice ? (-1 - min_arity) : min_arity;
5347
0
}
5348
5349
/* Check if a list of slots has any spliced slots */
5350
0
static int has_spliced(JanetSlot *slots) {
5351
0
    int32_t i;
5352
0
    for (i = 0; i < janet_v_count(slots); i++) {
5353
0
        if (slots[i].flags & JANET_SLOT_SPLICED)
5354
0
            return 1;
5355
0
    }
5356
0
    return 0;
5357
0
}
5358
5359
/* Free slots loaded via janetc_toslots */
5360
0
void janetc_freeslots(JanetCompiler *c, JanetSlot *slots) {
5361
0
    int32_t i;
5362
0
    for (i = 0; i < janet_v_count(slots); i++) {
5363
0
        janetc_freeslot(c, slots[i]);
5364
0
    }
5365
0
    janet_v_free(slots);
5366
0
}
5367
5368
/* Compile some code that will be thrown away. Used to ensure
5369
 * that dead code is well formed without including it in the final
5370
 * bytecode. */
5371
0
void janetc_throwaway(JanetFopts opts, Janet x) {
5372
0
    JanetCompiler *c = opts.compiler;
5373
0
    JanetScope unusedScope;
5374
0
    int32_t bufstart = janet_v_count(c->buffer);
5375
0
    int32_t mapbufstart = janet_v_count(c->mapbuffer);
5376
0
    janetc_scope(&unusedScope, c, JANET_SCOPE_UNUSED, "unusued");
5377
0
    janetc_value(opts, x);
5378
0
    janetc_lintf(c, JANET_C_LINT_STRICT, "dead code, consider removing %.2q", x);
5379
0
    janetc_popscope(c);
5380
0
    if (c->buffer) {
5381
0
        janet_v__cnt(c->buffer) = bufstart;
5382
0
        if (c->mapbuffer)
5383
0
            janet_v__cnt(c->mapbuffer) = mapbufstart;
5384
0
    }
5385
0
}
5386
5387
/* Compile a call or tailcall instruction */
5388
0
static JanetSlot janetc_call(JanetFopts opts, JanetSlot *slots, JanetSlot fun) {
5389
0
    JanetSlot retslot;
5390
0
    JanetCompiler *c = opts.compiler;
5391
0
    int specialized = 0;
5392
0
    if (fun.flags & JANET_SLOT_CONSTANT && !has_spliced(slots)) {
5393
0
        if (janet_checktype(fun.constant, JANET_FUNCTION)) {
5394
0
            JanetFunction *f = janet_unwrap_function(fun.constant);
5395
0
            const JanetFunOptimizer *o = janetc_funopt(f->def->flags);
5396
0
            if (o && (!o->can_optimize || o->can_optimize(opts, slots))) {
5397
0
                specialized = 1;
5398
0
                retslot = o->optimize(opts, slots);
5399
0
            }
5400
0
        }
5401
        /* TODO janet function inlining (no c functions)*/
5402
0
    }
5403
0
    if (!specialized) {
5404
0
        int32_t min_arity = janetc_pushslots(c, slots);
5405
        /* Check for provably incorrect function calls */
5406
0
        if (fun.flags & JANET_SLOT_CONSTANT) {
5407
5408
            /* Check for bad arity type if fun is a constant */
5409
0
            switch (janet_type(fun.constant)) {
5410
0
                case JANET_FUNCTION: {
5411
0
                    JanetFunction *f = janet_unwrap_function(fun.constant);
5412
0
                    int32_t min = f->def->min_arity;
5413
0
                    int32_t max = f->def->max_arity;
5414
0
                    if (min_arity < 0) {
5415
                        /* Call has splices */
5416
0
                        min_arity = -1 - min_arity;
5417
0
                        if (min_arity > max && max >= 0) {
5418
0
                            const uint8_t *es = janet_formatc(
5419
0
                                                    "%v expects at most %d argument%s, got at least %d",
5420
0
                                                    fun.constant, max, max == 1 ? "" : "s", min_arity);
5421
0
                            janetc_error(c, es);
5422
0
                        }
5423
0
                    } else {
5424
                        /* Call has no splices */
5425
0
                        if (min_arity > max && max >= 0) {
5426
0
                            const uint8_t *es = janet_formatc(
5427
0
                                                    "%v expects at most %d argument%s, got %d",
5428
0
                                                    fun.constant, max, max == 1 ? "" : "s", min_arity);
5429
0
                            janetc_error(c, es);
5430
0
                        }
5431
0
                        if (min_arity < min) {
5432
0
                            const uint8_t *es = janet_formatc(
5433
0
                                                    "%v expects at least %d argument%s, got %d",
5434
0
                                                    fun.constant, min, min == 1 ? "" : "s", min_arity);
5435
0
                            janetc_error(c, es);
5436
0
                        }
5437
0
                    }
5438
0
                }
5439
0
                break;
5440
0
                case JANET_CFUNCTION:
5441
0
                case JANET_ABSTRACT:
5442
0
                case JANET_NIL:
5443
0
                    break;
5444
0
                case JANET_KEYWORD:
5445
0
                    if (min_arity == 0) {
5446
0
                        const uint8_t *es = janet_formatc("%v expects at least 1 argument, got 0",
5447
0
                                                          fun.constant);
5448
0
                        janetc_error(c, es);
5449
0
                    }
5450
0
                    break;
5451
0
                default:
5452
0
                    if (min_arity > 1 || min_arity == 0) {
5453
0
                        const uint8_t *es = janet_formatc("%v expects 1 argument, got %d",
5454
0
                                                          fun.constant, min_arity);
5455
0
                        janetc_error(c, es);
5456
0
                    }
5457
0
                    if (min_arity < -2) {
5458
0
                        const uint8_t *es = janet_formatc("%v expects 1 argument, got at least %d",
5459
0
                                                          fun.constant, -1 - min_arity);
5460
0
                        janetc_error(c, es);
5461
0
                    }
5462
0
                    break;
5463
0
            }
5464
0
        }
5465
5466
0
        if ((opts.flags & JANET_FOPTS_TAIL) &&
5467
                /* Prevent top level tail calls for better errors */
5468
0
                !(c->scope->flags & JANET_SCOPE_TOP)) {
5469
0
            janetc_emit_s(c, JOP_TAILCALL, fun, 0);
5470
0
            retslot = janetc_cslot(janet_wrap_nil());
5471
0
            retslot.flags = JANET_SLOT_RETURNED;
5472
0
        } else {
5473
0
            retslot = janetc_gettarget(opts);
5474
0
            janetc_emit_ss(c, JOP_CALL, retslot, fun, 1);
5475
0
        }
5476
0
    }
5477
0
    janetc_freeslots(c, slots);
5478
0
    return retslot;
5479
0
}
5480
5481
0
static JanetSlot janetc_maker(JanetFopts opts, JanetSlot *slots, int op) {
5482
0
    JanetCompiler *c = opts.compiler;
5483
0
    JanetSlot retslot;
5484
5485
    /* Check if this structure is composed entirely of constants */
5486
0
    int can_inline = 1;
5487
0
    for (int32_t i = 0; i < janet_v_count(slots); i++) {
5488
0
        if (!(slots[i].flags & JANET_SLOT_CONSTANT) ||
5489
0
                (slots[i].flags & JANET_SLOT_SPLICED)) {
5490
0
            can_inline = 0;
5491
0
            break;
5492
0
        }
5493
0
    }
5494
5495
0
    if (can_inline && (op == JOP_MAKE_STRUCT)) {
5496
0
        JanetKV *st = janet_struct_begin(janet_v_count(slots) / 2);
5497
0
        for (int32_t i = 0; i < janet_v_count(slots); i += 2) {
5498
0
            Janet k = slots[i].constant;
5499
0
            Janet v = slots[i + 1].constant;
5500
0
            janet_struct_put(st, k, v);
5501
0
        }
5502
0
        retslot = janetc_cslot(janet_wrap_struct(janet_struct_end(st)));
5503
0
        janetc_freeslots(c, slots);
5504
0
    } else if (can_inline && (op == JOP_MAKE_TUPLE)) {
5505
0
        Janet *tup = janet_tuple_begin(janet_v_count(slots));
5506
0
        for (int32_t i = 0; i < janet_v_count(slots); i++) {
5507
0
            tup[i] = slots[i].constant;
5508
0
        }
5509
0
        retslot = janetc_cslot(janet_wrap_tuple(janet_tuple_end(tup)));
5510
0
        janetc_freeslots(c, slots);
5511
0
    } else {
5512
0
        janetc_pushslots(c, slots);
5513
0
        janetc_freeslots(c, slots);
5514
0
        retslot = janetc_gettarget(opts);
5515
0
        janetc_emit_s(c, op, retslot, 1);
5516
0
    }
5517
5518
0
    return retslot;
5519
0
}
5520
5521
0
static JanetSlot janetc_array(JanetFopts opts, Janet x) {
5522
0
    JanetCompiler *c = opts.compiler;
5523
0
    JanetArray *a = janet_unwrap_array(x);
5524
0
    return janetc_maker(opts,
5525
0
                        janetc_toslots(c, a->data, a->count),
5526
0
                        JOP_MAKE_ARRAY);
5527
0
}
5528
5529
0
static JanetSlot janetc_tuple(JanetFopts opts, Janet x) {
5530
0
    JanetCompiler *c = opts.compiler;
5531
0
    const Janet *t = janet_unwrap_tuple(x);
5532
0
    return janetc_maker(opts,
5533
0
                        janetc_toslots(c, t, janet_tuple_length(t)),
5534
0
                        JOP_MAKE_TUPLE);
5535
0
}
5536
5537
0
static JanetSlot janetc_tablector(JanetFopts opts, Janet x, int op) {
5538
0
    JanetCompiler *c = opts.compiler;
5539
0
    return janetc_maker(opts,
5540
0
                        janetc_toslotskv(c, x),
5541
0
                        op);
5542
0
}
5543
5544
0
static JanetSlot janetc_bufferctor(JanetFopts opts, Janet x) {
5545
0
    JanetCompiler *c = opts.compiler;
5546
0
    JanetBuffer *b = janet_unwrap_buffer(x);
5547
0
    Janet onearg = janet_stringv(b->data, b->count);
5548
0
    return janetc_maker(opts,
5549
0
                        janetc_toslots(c, &onearg, 1),
5550
0
                        JOP_MAKE_BUFFER);
5551
0
}
5552
5553
/* Expand a macro one time. Also get the special form compiler if we
5554
 * find that instead. */
5555
static int macroexpand1(
5556
    JanetCompiler *c,
5557
    Janet x,
5558
    Janet *out,
5559
0
    const JanetSpecial **spec) {
5560
0
    if (!janet_checktype(x, JANET_TUPLE))
5561
0
        return 0;
5562
0
    const Janet *form = janet_unwrap_tuple(x);
5563
0
    if (janet_tuple_length(form) == 0)
5564
0
        return 0;
5565
    /* Source map - only set when we get a tuple */
5566
0
    if (janet_tuple_sm_line(form) >= 0) {
5567
0
        c->current_mapping.line = janet_tuple_sm_line(form);
5568
0
        c->current_mapping.column = janet_tuple_sm_column(form);
5569
0
    }
5570
    /* Bracketed tuples are not specials or macros! */
5571
0
    if (janet_tuple_flag(form) & JANET_TUPLE_FLAG_BRACKETCTOR)
5572
0
        return 0;
5573
0
    if (!janet_checktype(form[0], JANET_SYMBOL))
5574
0
        return 0;
5575
0
    const uint8_t *name = janet_unwrap_symbol(form[0]);
5576
0
    const JanetSpecial *s = janetc_special(name);
5577
0
    if (s) {
5578
0
        *spec = s;
5579
0
        return 0;
5580
0
    }
5581
0
    Janet macroval;
5582
0
    JanetBindingType btype = janet_resolve(c->env, name, &macroval);
5583
0
    if (!(btype == JANET_BINDING_MACRO || btype == JANET_BINDING_DYNAMIC_MACRO) ||
5584
0
            !janet_checktype(macroval, JANET_FUNCTION))
5585
0
        return 0;
5586
5587
    /* Evaluate macro */
5588
0
    JanetFunction *macro = janet_unwrap_function(macroval);
5589
0
    int32_t arity = janet_tuple_length(form) - 1;
5590
0
    JanetFiber *fiberp = janet_fiber(macro, 64, arity, form + 1);
5591
0
    if (NULL == fiberp) {
5592
0
        int32_t minar = macro->def->min_arity;
5593
0
        int32_t maxar = macro->def->max_arity;
5594
0
        const uint8_t *es = NULL;
5595
0
        if (minar >= 0 && arity < minar)
5596
0
            es = janet_formatc("macro arity mismatch, expected at least %d, got %d", minar, arity);
5597
0
        if (maxar >= 0 && arity > maxar)
5598
0
            es = janet_formatc("macro arity mismatch, expected at most %d, got %d", maxar, arity);
5599
0
        c->result.macrofiber = NULL;
5600
0
        janetc_error(c, es);
5601
0
        return 0;
5602
0
    }
5603
    /* Set env */
5604
0
    fiberp->env = c->env;
5605
0
    int lock = janet_gclock();
5606
0
    Janet mf_kw = janet_ckeywordv("macro-form");
5607
0
    janet_table_put(c->env, mf_kw, x);
5608
0
    Janet tempOut;
5609
0
    JanetSignal status = janet_continue(fiberp, janet_wrap_nil(), &tempOut);
5610
0
    janet_table_put(c->env, mf_kw, janet_wrap_nil());
5611
0
    if (c->lints) {
5612
0
        janet_table_put(c->env, janet_ckeywordv("macro-lints"), janet_wrap_array(c->lints));
5613
0
    }
5614
0
    janet_gcunlock(lock);
5615
0
    if (status != JANET_SIGNAL_OK) {
5616
0
        const uint8_t *es = janet_formatc("(macro) %V", tempOut);
5617
0
        c->result.macrofiber = fiberp;
5618
0
        janetc_error(c, es);
5619
0
        return 0;
5620
0
    } else {
5621
0
        *out = tempOut;
5622
0
    }
5623
5624
0
    return 1;
5625
0
}
5626
5627
/* Compile a single value */
5628
0
JanetSlot janetc_value(JanetFopts opts, Janet x) {
5629
0
    JanetSlot ret;
5630
0
    JanetCompiler *c = opts.compiler;
5631
0
    JanetSourceMapping last_mapping = c->current_mapping;
5632
0
    c->recursion_guard--;
5633
5634
    /* Guard against previous errors and unbounded recursion */
5635
0
    if (c->result.status == JANET_COMPILE_ERROR) return janetc_cslot(janet_wrap_nil());
5636
0
    if (c->recursion_guard <= 0) {
5637
0
        janetc_cerror(c, "recursed too deeply");
5638
0
        return janetc_cslot(janet_wrap_nil());
5639
0
    }
5640
5641
    /* Macro expand. Also gets possible special form and
5642
     * refines source mapping cursor if possible. */
5643
0
    const JanetSpecial *spec = NULL;
5644
0
    int macroi = JANET_MAX_MACRO_EXPAND;
5645
0
    while (macroi &&
5646
0
            c->result.status != JANET_COMPILE_ERROR &&
5647
0
            macroexpand1(c, x, &x, &spec))
5648
0
        macroi--;
5649
0
    if (macroi == 0) {
5650
0
        janetc_cerror(c, "recursed too deeply in macro expansion");
5651
0
        return janetc_cslot(janet_wrap_nil());
5652
0
    }
5653
5654
    /* Special forms */
5655
0
    if (spec) {
5656
0
        const Janet *tup = janet_unwrap_tuple(x);
5657
0
        ret = spec->compile(opts, janet_tuple_length(tup) - 1, tup + 1);
5658
0
    } else {
5659
0
        switch (janet_type(x)) {
5660
0
            case JANET_TUPLE: {
5661
0
                JanetFopts subopts = janetc_fopts_default(c);
5662
0
                const Janet *tup = janet_unwrap_tuple(x);
5663
                /* Empty tuple is tuple literal */
5664
0
                if (janet_tuple_length(tup) == 0) {
5665
0
                    ret = janetc_cslot(janet_wrap_tuple(janet_tuple_n(NULL, 0)));
5666
0
                } else if (janet_tuple_flag(tup) & JANET_TUPLE_FLAG_BRACKETCTOR) { /* [] tuples are not function call */
5667
0
                    ret = janetc_tuple(opts, x);
5668
0
                } else {
5669
0
                    JanetSlot head = janetc_value(subopts, tup[0]);
5670
0
                    subopts.flags = JANET_FUNCTION | JANET_CFUNCTION;
5671
0
                    ret = janetc_call(opts, janetc_toslots(c, tup + 1, janet_tuple_length(tup) - 1), head);
5672
0
                    janetc_freeslot(c, head);
5673
0
                }
5674
0
                ret.flags &= ~JANET_SLOT_SPLICED;
5675
0
            }
5676
0
            break;
5677
0
            case JANET_SYMBOL:
5678
0
                ret = janetc_resolve(c, janet_unwrap_symbol(x));
5679
0
                break;
5680
0
            case JANET_ARRAY:
5681
0
                ret = janetc_array(opts, x);
5682
0
                break;
5683
0
            case JANET_STRUCT:
5684
0
                ret = janetc_tablector(opts, x, JOP_MAKE_STRUCT);
5685
0
                break;
5686
0
            case JANET_TABLE:
5687
0
                ret = janetc_tablector(opts, x, JOP_MAKE_TABLE);
5688
0
                break;
5689
0
            case JANET_BUFFER:
5690
0
                ret = janetc_bufferctor(opts, x);
5691
0
                break;
5692
0
            default:
5693
0
                ret = janetc_cslot(x);
5694
0
                break;
5695
0
        }
5696
0
    }
5697
5698
0
    if (c->result.status == JANET_COMPILE_ERROR)
5699
0
        return janetc_cslot(janet_wrap_nil());
5700
0
    if (opts.flags & JANET_FOPTS_TAIL)
5701
0
        ret = janetc_return(c, ret);
5702
0
    if (opts.flags & JANET_FOPTS_HINT) {
5703
0
        janetc_copy(c, opts.hint, ret);
5704
0
        ret = opts.hint;
5705
0
    }
5706
0
    c->current_mapping = last_mapping;
5707
0
    c->recursion_guard++;
5708
0
    return ret;
5709
0
}
5710
5711
/* Add function flags to janet functions */
5712
0
void janet_def_addflags(JanetFuncDef *def) {
5713
0
    int32_t set_flags = 0;
5714
0
    int32_t unset_flags = 0;
5715
    /* pos checks */
5716
0
    if (def->name)            set_flags |= JANET_FUNCDEF_FLAG_HASNAME;
5717
0
    if (def->source)          set_flags |= JANET_FUNCDEF_FLAG_HASSOURCE;
5718
0
    if (def->defs)            set_flags |= JANET_FUNCDEF_FLAG_HASDEFS;
5719
0
    if (def->environments)    set_flags |= JANET_FUNCDEF_FLAG_HASENVS;
5720
0
    if (def->sourcemap)       set_flags |= JANET_FUNCDEF_FLAG_HASSOURCEMAP;
5721
0
    if (def->closure_bitset)  set_flags |= JANET_FUNCDEF_FLAG_HASCLOBITSET;
5722
    /* negative checks */
5723
0
    if (!def->name)           unset_flags |= JANET_FUNCDEF_FLAG_HASNAME;
5724
0
    if (!def->source)         unset_flags |= JANET_FUNCDEF_FLAG_HASSOURCE;
5725
0
    if (!def->defs)           unset_flags |= JANET_FUNCDEF_FLAG_HASDEFS;
5726
0
    if (!def->environments)   unset_flags |= JANET_FUNCDEF_FLAG_HASENVS;
5727
0
    if (!def->sourcemap)      unset_flags |= JANET_FUNCDEF_FLAG_HASSOURCEMAP;
5728
0
    if (!def->closure_bitset) unset_flags |= JANET_FUNCDEF_FLAG_HASCLOBITSET;
5729
    /* Update flags */
5730
0
    def->flags |= set_flags;
5731
0
    def->flags &= ~unset_flags;
5732
0
}
5733
5734
/* Compile a funcdef */
5735
/* Once the various other settings of the FuncDef have been tweaked,
5736
 * call janet_def_addflags to set the proper flags for the funcdef */
5737
0
JanetFuncDef *janetc_pop_funcdef(JanetCompiler *c) {
5738
0
    JanetScope *scope = c->scope;
5739
0
    JanetFuncDef *def = janet_funcdef_alloc();
5740
0
    def->slotcount = scope->ra.max + 1;
5741
5742
0
    janet_assert(scope->flags & JANET_SCOPE_FUNCTION, "expected function scope");
5743
5744
    /* Copy envs */
5745
0
    def->environments_length = janet_v_count(scope->envs);
5746
0
    def->environments = janet_malloc(sizeof(int32_t) * def->environments_length);
5747
0
    for (int32_t i = 0; i < def->environments_length; i++) {
5748
0
        def->environments[i] = scope->envs[i].envindex;
5749
0
    }
5750
5751
0
    def->constants_length = janet_v_count(scope->consts);
5752
0
    def->constants = janet_v_flatten(scope->consts);
5753
5754
0
    def->defs_length = janet_v_count(scope->defs);
5755
0
    def->defs = janet_v_flatten(scope->defs);
5756
5757
    /* Copy bytecode (only last chunk) */
5758
0
    def->bytecode_length = janet_v_count(c->buffer) - scope->bytecode_start;
5759
0
    if (def->bytecode_length) {
5760
0
        size_t s = sizeof(int32_t) * (size_t) def->bytecode_length;
5761
0
        def->bytecode = janet_malloc(s);
5762
0
        if (NULL == def->bytecode) {
5763
0
            JANET_OUT_OF_MEMORY;
5764
0
        }
5765
0
        safe_memcpy(def->bytecode, c->buffer + scope->bytecode_start, s);
5766
0
        janet_v__cnt(c->buffer) = scope->bytecode_start;
5767
0
        if (NULL != c->mapbuffer && c->source) {
5768
0
            size_t s = sizeof(JanetSourceMapping) * (size_t) def->bytecode_length;
5769
0
            def->sourcemap = janet_malloc(s);
5770
0
            if (NULL == def->sourcemap) {
5771
0
                JANET_OUT_OF_MEMORY;
5772
0
            }
5773
0
            safe_memcpy(def->sourcemap, c->mapbuffer + scope->bytecode_start, s);
5774
0
            janet_v__cnt(c->mapbuffer) = scope->bytecode_start;
5775
0
        }
5776
0
    }
5777
5778
    /* Get source from parser */
5779
0
    def->source = c->source;
5780
5781
0
    def->arity = 0;
5782
0
    def->min_arity = 0;
5783
0
    def->flags = 0;
5784
0
    if (scope->flags & JANET_SCOPE_ENV) {
5785
0
        def->flags |= JANET_FUNCDEF_FLAG_NEEDSENV;
5786
0
    }
5787
5788
    /* Copy upvalue bitset */
5789
0
    if (scope->ua.count) {
5790
        /* Number of u32s we need to create a bitmask for all slots */
5791
0
        int32_t slotchunks = (def->slotcount + 31) >> 5;
5792
        /* numchunks is min of slotchunks and scope->ua.count */
5793
0
        int32_t numchunks = slotchunks > scope->ua.count ? scope->ua.count : slotchunks;
5794
0
        uint32_t *chunks = janet_calloc(sizeof(uint32_t), slotchunks);
5795
0
        if (NULL == chunks) {
5796
0
            JANET_OUT_OF_MEMORY;
5797
0
        }
5798
0
        memcpy(chunks, scope->ua.chunks, sizeof(uint32_t) * numchunks);
5799
        /* Register allocator preallocates some registers [240-255, high 16 bits of chunk index 7], we can ignore those. */
5800
0
        if (scope->ua.count > 7) chunks[7] &= 0xFFFFU;
5801
0
        def->closure_bitset = chunks;
5802
0
    }
5803
5804
    /* Capture symbol to local mapping */
5805
0
    JanetSymbolMap *locals = NULL;
5806
5807
    /* Symbol -> upvalue mapping */
5808
0
    JanetScope *top = c->scope;
5809
0
    while (top->parent) top = top->parent;
5810
0
    for (JanetScope *s = top; s != NULL; s = s->child) {
5811
0
        for (int32_t j = 0; j < janet_v_count(scope->envs); j++) {
5812
0
            JanetEnvRef ref = scope->envs[j];
5813
0
            JanetScope *upscope = ref.scope;
5814
0
            if (upscope != s) continue;
5815
0
            for (int32_t i = 0; i < janet_v_count(upscope->syms); i++) {
5816
0
                SymPair pair = upscope->syms[i];
5817
0
                if (pair.sym2) {
5818
0
                    JanetSymbolMap jsm;
5819
0
                    jsm.birth_pc = UINT32_MAX;
5820
0
                    jsm.death_pc = j;
5821
0
                    jsm.slot_index = pair.slot.index;
5822
0
                    jsm.symbol = pair.sym2;
5823
0
                    janet_v_push(locals, jsm);
5824
0
                }
5825
0
            }
5826
0
        }
5827
0
    }
5828
5829
    /* Symbol -> slot mapping */
5830
0
    for (int32_t i = 0; i < janet_v_count(scope->syms); i++) {
5831
0
        SymPair pair = scope->syms[i];
5832
0
        if (pair.sym2) {
5833
0
            JanetSymbolMap jsm;
5834
0
            if (pair.death_pc == UINT32_MAX) {
5835
0
                jsm.death_pc = def->bytecode_length;
5836
0
            } else {
5837
0
                jsm.death_pc = pair.death_pc - scope->bytecode_start;
5838
0
            }
5839
            /* Handle birth_pc == 0 correctly */
5840
0
            if ((uint32_t) scope->bytecode_start > pair.birth_pc) {
5841
0
                jsm.birth_pc = 0;
5842
0
            } else {
5843
0
                jsm.birth_pc = pair.birth_pc - scope->bytecode_start;
5844
0
            }
5845
0
            janet_assert(jsm.birth_pc <= jsm.death_pc, "birth pc after death pc");
5846
0
            janet_assert(jsm.birth_pc < (uint32_t) def->bytecode_length, "bad birth pc");
5847
0
            janet_assert(jsm.death_pc <= (uint32_t) def->bytecode_length, "bad death pc");
5848
0
            jsm.slot_index = pair.slot.index;
5849
0
            jsm.symbol = pair.sym2;
5850
0
            janet_v_push(locals, jsm);
5851
0
        }
5852
0
    }
5853
0
    def->symbolmap_length = janet_v_count(locals);
5854
0
    def->symbolmap = janet_v_flatten(locals);
5855
0
    if (def->symbolmap_length) def->flags |= JANET_FUNCDEF_FLAG_HASSYMBOLMAP;
5856
5857
    /* Pop the scope */
5858
0
    janetc_popscope(c);
5859
5860
    /* Do basic optimization */
5861
0
    janet_bytecode_movopt(def);
5862
0
    janet_bytecode_remove_noops(def);
5863
5864
0
    return def;
5865
0
}
5866
5867
/* Initialize a compiler */
5868
0
static void janetc_init(JanetCompiler *c, JanetTable *env, const uint8_t *where, JanetArray *lints) {
5869
0
    c->scope = NULL;
5870
0
    c->buffer = NULL;
5871
0
    c->mapbuffer = NULL;
5872
0
    c->recursion_guard = JANET_RECURSION_GUARD;
5873
0
    c->env = env;
5874
0
    c->source = where;
5875
0
    c->current_mapping.line = -1;
5876
0
    c->current_mapping.column = -1;
5877
0
    c->lints = lints;
5878
    /* Init result */
5879
0
    c->result.error = NULL;
5880
0
    c->result.status = JANET_COMPILE_OK;
5881
0
    c->result.funcdef = NULL;
5882
0
    c->result.macrofiber = NULL;
5883
0
    c->result.error_mapping.line = -1;
5884
0
    c->result.error_mapping.column = -1;
5885
0
}
5886
5887
/* Deinitialize a compiler struct */
5888
0
static void janetc_deinit(JanetCompiler *c) {
5889
0
    janet_v_free(c->buffer);
5890
0
    janet_v_free(c->mapbuffer);
5891
0
    c->env = NULL;
5892
0
}
5893
5894
/* Compile a form. */
5895
JanetCompileResult janet_compile_lint(Janet source,
5896
0
                                      JanetTable *env, const uint8_t *where, JanetArray *lints) {
5897
0
    JanetCompiler c;
5898
0
    JanetScope rootscope;
5899
0
    JanetFopts fopts;
5900
5901
0
    janetc_init(&c, env, where, lints);
5902
5903
    /* Push a function scope */
5904
0
    janetc_scope(&rootscope, &c, JANET_SCOPE_FUNCTION | JANET_SCOPE_TOP, "root");
5905
5906
    /* Set initial form options */
5907
0
    fopts.compiler = &c;
5908
0
    fopts.flags = JANET_FOPTS_TAIL | JANET_SLOTTYPE_ANY;
5909
0
    fopts.hint = janetc_cslot(janet_wrap_nil());
5910
5911
    /* Compile the value */
5912
0
    janetc_value(fopts, source);
5913
5914
0
    if (c.result.status == JANET_COMPILE_OK) {
5915
0
        JanetFuncDef *def = janetc_pop_funcdef(&c);
5916
0
        def->name = janet_cstring("_thunk");
5917
0
        janet_def_addflags(def);
5918
0
        c.result.funcdef = def;
5919
0
    } else {
5920
0
        c.result.error_mapping = c.current_mapping;
5921
0
        janetc_popscope(&c);
5922
0
    }
5923
5924
0
    janetc_deinit(&c);
5925
5926
0
    return c.result;
5927
0
}
5928
5929
0
JanetCompileResult janet_compile(Janet source, JanetTable *env, const uint8_t *where) {
5930
0
    return janet_compile_lint(source, env, where, NULL);
5931
0
}
5932
5933
/* C Function for compiling */
5934
JANET_CORE_FN(cfun_compile,
5935
              "(compile ast &opt env source lints)",
5936
              "Compiles an Abstract Syntax Tree (ast) into a function. "
5937
              "Pair the compile function with parsing functionality to implement "
5938
              "eval. Returns a new function and does not modify ast. Returns an error "
5939
              "struct with keys :line, :column, and :error if compilation fails. "
5940
              "If a `lints` array is given, linting messages will be appended to the array. "
5941
0
              "Each message will be a tuple of the form `(level line col message)`.") {
5942
0
    janet_arity(argc, 1, 4);
5943
0
    JanetTable *env = (argc > 1 && !janet_checktype(argv[1], JANET_NIL))
5944
0
                      ? janet_gettable(argv, 1) : janet_vm.fiber->env;
5945
0
    if (NULL == env) {
5946
0
        env = janet_table(0);
5947
0
        janet_vm.fiber->env = env;
5948
0
    }
5949
0
    const uint8_t *source = NULL;
5950
0
    if (argc >= 3) {
5951
0
        Janet x = argv[2];
5952
0
        if (janet_checktype(x, JANET_STRING)) {
5953
0
            source = janet_unwrap_string(x);
5954
0
        } else if (janet_checktype(x, JANET_KEYWORD)) {
5955
0
            source = janet_unwrap_keyword(x);
5956
0
        } else if (!janet_checktype(x, JANET_NIL)) {
5957
0
            janet_panic_type(x, 2, JANET_TFLAG_STRING | JANET_TFLAG_KEYWORD);
5958
0
        }
5959
0
    }
5960
0
    JanetArray *lints = (argc >= 4 && !janet_checktype(argv[3], JANET_NIL))
5961
0
                        ? janet_getarray(argv, 3) : NULL;
5962
0
    JanetCompileResult res = janet_compile_lint(argv[0], env, source, lints);
5963
0
    if (res.status == JANET_COMPILE_OK) {
5964
0
        return janet_wrap_function(janet_thunk(res.funcdef));
5965
0
    } else {
5966
0
        JanetTable *t = janet_table(4);
5967
0
        janet_table_put(t, janet_ckeywordv("error"), janet_wrap_string(res.error));
5968
0
        if (res.error_mapping.line > 0) {
5969
0
            janet_table_put(t, janet_ckeywordv("line"), janet_wrap_integer(res.error_mapping.line));
5970
0
        }
5971
0
        if (res.error_mapping.column > 0) {
5972
0
            janet_table_put(t, janet_ckeywordv("column"), janet_wrap_integer(res.error_mapping.column));
5973
0
        }
5974
0
        if (res.macrofiber) {
5975
0
            janet_table_put(t, janet_ckeywordv("fiber"), janet_wrap_fiber(res.macrofiber));
5976
0
        }
5977
0
        return janet_wrap_table(t);
5978
0
    }
5979
0
}
5980
5981
0
void janet_lib_compile(JanetTable *env) {
5982
0
    JanetRegExt cfuns[] = {
5983
0
        JANET_CORE_REG("compile", cfun_compile),
5984
0
        JANET_REG_END
5985
0
    };
5986
0
    janet_core_cfuns_ext(env, NULL, cfuns);
5987
0
}
5988
5989
5990
/* src/core/corelib.c */
5991
#line 0 "src/core/corelib.c"
5992
5993
/*
5994
* Copyright (c) 2023 Calvin Rose
5995
*
5996
* Permission is hereby granted, free of charge, to any person obtaining a copy
5997
* of this software and associated documentation files (the "Software"), to
5998
* deal in the Software without restriction, including without limitation the
5999
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
6000
* sell copies of the Software, and to permit persons to whom the Software is
6001
* furnished to do so, subject to the following conditions:
6002
*
6003
* The above copyright notice and this permission notice shall be included in
6004
* all copies or substantial portions of the Software.
6005
*
6006
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
6007
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
6008
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
6009
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
6010
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
6011
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
6012
* IN THE SOFTWARE.
6013
*/
6014
6015
#ifndef JANET_AMALG
6016
#include "features.h"
6017
#include <janet.h>
6018
#include <math.h>
6019
#include "compile.h"
6020
#include "state.h"
6021
#include "util.h"
6022
#endif
6023
6024
/* Generated bytes */
6025
#ifndef JANET_BOOTSTRAP
6026
extern const unsigned char *janet_core_image;
6027
extern size_t janet_core_image_size;
6028
#endif
6029
6030
/* Docstrings should only exist during bootstrap */
6031
#ifdef JANET_BOOTSTRAP
6032
#define JDOC(x) (x)
6033
#else
6034
#define JDOC(x) NULL
6035
#endif
6036
6037
0
JanetModule janet_native(const char *name, const uint8_t **error) {
6038
0
    janet_sandbox_assert(JANET_SANDBOX_DYNAMIC_MODULES);
6039
0
    char *processed_name = get_processed_name(name);
6040
0
    Clib lib = load_clib(processed_name);
6041
0
    JanetModule init;
6042
0
    JanetModconf getter;
6043
0
    if (name != processed_name) janet_free(processed_name);
6044
0
    if (!lib) {
6045
0
        *error = janet_cstring(error_clib());
6046
0
        return NULL;
6047
0
    }
6048
0
    init = (JanetModule) symbol_clib(lib, "_janet_init");
6049
0
    if (!init) {
6050
0
        *error = janet_cstring("could not find the _janet_init symbol");
6051
0
        return NULL;
6052
0
    }
6053
0
    getter = (JanetModconf) symbol_clib(lib, "_janet_mod_config");
6054
0
    if (!getter) {
6055
0
        *error = janet_cstring("could not find the _janet_mod_config symbol");
6056
0
        return NULL;
6057
0
    }
6058
0
    JanetBuildConfig modconf = getter();
6059
0
    JanetBuildConfig host = janet_config_current();
6060
0
    if (host.major != modconf.major ||
6061
0
            host.minor < modconf.minor ||
6062
0
            host.bits != modconf.bits) {
6063
0
        char errbuf[128];
6064
0
        sprintf(errbuf, "config mismatch - host %d.%.d.%d(%.4x) vs. module %d.%d.%d(%.4x)",
6065
0
                host.major,
6066
0
                host.minor,
6067
0
                host.patch,
6068
0
                host.bits,
6069
0
                modconf.major,
6070
0
                modconf.minor,
6071
0
                modconf.patch,
6072
0
                modconf.bits);
6073
0
        *error = janet_cstring(errbuf);
6074
0
        return NULL;
6075
0
    }
6076
0
    return init;
6077
0
}
6078
6079
0
static const char *janet_dyncstring(const char *name, const char *dflt) {
6080
0
    Janet x = janet_dyn(name);
6081
0
    if (janet_checktype(x, JANET_NIL)) return dflt;
6082
0
    if (!janet_checktype(x, JANET_STRING)) {
6083
0
        janet_panicf("expected string, got %v", x);
6084
0
    }
6085
0
    const uint8_t *jstr = janet_unwrap_string(x);
6086
0
    const char *cstr = (const char *)jstr;
6087
0
    if (strlen(cstr) != (size_t) janet_string_length(jstr)) {
6088
0
        janet_panicf("string %v contains embedded 0s", x);
6089
0
    }
6090
0
    return cstr;
6091
0
}
6092
6093
0
static int is_path_sep(char c) {
6094
#ifdef JANET_WINDOWS
6095
    if (c == '\\') return 1;
6096
#endif
6097
0
    return c == '/';
6098
0
}
6099
6100
/* Used for module system. */
6101
JANET_CORE_FN(janet_core_expand_path,
6102
              "(module/expand-path path template)",
6103
              "Expands a path template as found in `module/paths` for `module/find`. "
6104
              "This takes in a path (the argument to require) and a template string, "
6105
              "to expand the path to a path that can be "
6106
              "used for importing files. The replacements are as follows:\n\n"
6107
              "* :all: -- the value of path verbatim.\n\n"
6108
              "* :@all: -- Same as :all:, but if `path` starts with the @ character,\n"
6109
              "           the first path segment is replaced with a dynamic binding\n"
6110
              "           `(dyn <first path segment as keyword>)`.\n\n"
6111
              "* :cur: -- the current file, or (dyn :current-file)\n\n"
6112
              "* :dir: -- the directory containing the current file\n\n"
6113
              "* :name: -- the name component of path, with extension if given\n\n"
6114
              "* :native: -- the extension used to load natives, .so or .dll\n\n"
6115
0
              "* :sys: -- the system path, or (dyn :syspath)") {
6116
0
    janet_fixarity(argc, 2);
6117
0
    const char *input = janet_getcstring(argv, 0);
6118
0
    const char *template = janet_getcstring(argv, 1);
6119
0
    const char *curfile = janet_dyncstring("current-file", "");
6120
0
    const char *syspath = janet_dyncstring("syspath", "");
6121
0
    JanetBuffer *out = janet_buffer(0);
6122
0
    size_t tlen = strlen(template);
6123
6124
    /* Calculate name */
6125
0
    const char *name = input + strlen(input);
6126
0
    while (name > input) {
6127
0
        if (is_path_sep(*(name - 1))) break;
6128
0
        name--;
6129
0
    }
6130
6131
    /* Calculate dirpath from current file */
6132
0
    const char *curname = curfile + strlen(curfile);
6133
0
    while (curname > curfile) {
6134
0
        if (is_path_sep(*curname)) break;
6135
0
        curname--;
6136
0
    }
6137
0
    const char *curdir;
6138
0
    int32_t curlen;
6139
0
    if (curname == curfile) {
6140
        /* Current file has one or zero path segments, so
6141
         * we are in the . directory. */
6142
0
        curdir = ".";
6143
0
        curlen = 1;
6144
0
    } else {
6145
        /* Current file has 2 or more segments, so we
6146
         * can cut off the last segment. */
6147
0
        curdir = curfile;
6148
0
        curlen = (int32_t)(curname - curfile);
6149
0
    }
6150
6151
0
    for (size_t i = 0; i < tlen; i++) {
6152
0
        if (template[i] == ':') {
6153
0
            if (strncmp(template + i, ":all:", 5) == 0) {
6154
0
                janet_buffer_push_cstring(out, input);
6155
0
                i += 4;
6156
0
            } else if (strncmp(template + i, ":@all:", 6) == 0) {
6157
0
                if (input[0] == '@') {
6158
0
                    const char *p = input;
6159
0
                    while (*p && !is_path_sep(*p)) p++;
6160
0
                    size_t len = p - input - 1;
6161
0
                    char *str = janet_smalloc(len + 1);
6162
0
                    memcpy(str, input + 1, len);
6163
0
                    str[len] = '\0';
6164
0
                    janet_formatb(out, "%V", janet_dyn(str));
6165
0
                    janet_sfree(str);
6166
0
                    janet_buffer_push_cstring(out, p);
6167
0
                } else {
6168
0
                    janet_buffer_push_cstring(out, input);
6169
0
                }
6170
0
                i += 5;
6171
0
            } else if (strncmp(template + i, ":cur:", 5) == 0) {
6172
0
                janet_buffer_push_bytes(out, (const uint8_t *)curdir, curlen);
6173
0
                i += 4;
6174
0
            } else if (strncmp(template + i, ":dir:", 5) == 0) {
6175
0
                janet_buffer_push_bytes(out, (const uint8_t *)input,
6176
0
                                        (int32_t)(name - input));
6177
0
                i += 4;
6178
0
            } else if (strncmp(template + i, ":sys:", 5) == 0) {
6179
0
                janet_buffer_push_cstring(out, syspath);
6180
0
                i += 4;
6181
0
            } else if (strncmp(template + i, ":name:", 6) == 0) {
6182
0
                janet_buffer_push_cstring(out, name);
6183
0
                i += 5;
6184
0
            } else if (strncmp(template + i, ":native:", 8) == 0) {
6185
#ifdef JANET_WINDOWS
6186
                janet_buffer_push_cstring(out, ".dll");
6187
#else
6188
0
                janet_buffer_push_cstring(out, ".so");
6189
0
#endif
6190
0
                i += 7;
6191
0
            } else {
6192
0
                janet_buffer_push_u8(out, (uint8_t) template[i]);
6193
0
            }
6194
0
        } else {
6195
0
            janet_buffer_push_u8(out, (uint8_t) template[i]);
6196
0
        }
6197
0
    }
6198
6199
    /* Normalize */
6200
0
    uint8_t *scan = out->data;
6201
0
    uint8_t *print = scan;
6202
0
    uint8_t *scanend = scan + out->count;
6203
0
    int normal_section_count = 0;
6204
0
    int dot_count = 0;
6205
0
    while (scan < scanend) {
6206
0
        if (*scan == '.') {
6207
0
            if (dot_count >= 0) {
6208
0
                dot_count++;
6209
0
            } else {
6210
0
                *print++ = '.';
6211
0
            }
6212
0
        } else if (is_path_sep(*scan)) {
6213
0
            if (dot_count == 1) {
6214
0
                ;
6215
0
            } else if (dot_count == 2) {
6216
0
                if (normal_section_count > 0) {
6217
                    /* unprint last separator */
6218
0
                    print--;
6219
                    /* unprint last section */
6220
0
                    while (print > out->data && !is_path_sep(*(print - 1)))
6221
0
                        print--;
6222
0
                    normal_section_count--;
6223
0
                } else {
6224
0
                    *print++ = '.';
6225
0
                    *print++ = '.';
6226
0
                    *print++ = '/';
6227
0
                }
6228
0
            } else if (scan == out->data || dot_count != 0) {
6229
0
                while (dot_count > 0) {
6230
0
                    --dot_count;
6231
0
                    *print++ = '.';
6232
0
                }
6233
0
                if (scan > out->data) {
6234
0
                    normal_section_count++;
6235
0
                }
6236
0
                *print++ = '/';
6237
0
            }
6238
0
            dot_count = 0;
6239
0
        } else {
6240
0
            while (dot_count > 0) {
6241
0
                --dot_count;
6242
0
                *print++ = '.';
6243
0
            }
6244
0
            dot_count = -1;
6245
0
            *print++ = *scan;
6246
0
        }
6247
0
        scan++;
6248
0
    }
6249
0
    out->count = (int32_t)(print - out->data);
6250
0
    return janet_wrap_buffer(out);
6251
0
}
6252
6253
JANET_CORE_FN(janet_core_dyn,
6254
              "(dyn key &opt default)",
6255
0
              "Get a dynamic binding. Returns the default value (or nil) if no binding found.") {
6256
0
    janet_arity(argc, 1, 2);
6257
0
    Janet value;
6258
0
    if (janet_vm.fiber->env) {
6259
0
        value = janet_table_get(janet_vm.fiber->env, argv[0]);
6260
0
    } else {
6261
0
        value = janet_wrap_nil();
6262
0
    }
6263
0
    if (argc == 2 && janet_checktype(value, JANET_NIL)) {
6264
0
        return argv[1];
6265
0
    }
6266
0
    return value;
6267
0
}
6268
6269
JANET_CORE_FN(janet_core_setdyn,
6270
              "(setdyn key value)",
6271
0
              "Set a dynamic binding. Returns value.") {
6272
0
    janet_fixarity(argc, 2);
6273
0
    if (!janet_vm.fiber->env) {
6274
0
        janet_vm.fiber->env = janet_table(2);
6275
0
    }
6276
0
    janet_table_put(janet_vm.fiber->env, argv[0], argv[1]);
6277
0
    return argv[1];
6278
0
}
6279
6280
JANET_CORE_FN(janet_core_native,
6281
              "(native path &opt env)",
6282
              "Load a native module from the given path. The path "
6283
              "must be an absolute or relative path on the file system, and is "
6284
              "usually a .so file on Unix systems, and a .dll file on Windows. "
6285
              "Returns an environment table that contains functions and other values "
6286
0
              "from the native module.") {
6287
0
    JanetModule init;
6288
0
    janet_arity(argc, 1, 2);
6289
0
    const uint8_t *path = janet_getstring(argv, 0);
6290
0
    const uint8_t *error = NULL;
6291
0
    JanetTable *env;
6292
0
    if (argc == 2) {
6293
0
        env = janet_gettable(argv, 1);
6294
0
    } else {
6295
0
        env = janet_table(0);
6296
0
    }
6297
0
    init = janet_native((const char *)path, &error);
6298
0
    if (!init) {
6299
0
        janet_panicf("could not load native %S: %S", path, error);
6300
0
    }
6301
0
    init(env);
6302
0
    janet_table_put(env, janet_ckeywordv("native"), argv[0]);
6303
0
    return janet_wrap_table(env);
6304
0
}
6305
6306
JANET_CORE_FN(janet_core_describe,
6307
              "(describe x)",
6308
              "Returns a string that is a human-readable description of `x`. "
6309
              "For recursive data structures, the string returned contains a "
6310
              "pointer value from which the identity of `x` "
6311
0
              "can be determined.") {
6312
0
    JanetBuffer *b = janet_buffer(0);
6313
0
    for (int32_t i = 0; i < argc; ++i)
6314
0
        janet_description_b(b, argv[i]);
6315
0
    return janet_stringv(b->data, b->count);
6316
0
}
6317
6318
JANET_CORE_FN(janet_core_string,
6319
              "(string & xs)",
6320
              "Creates a string by concatenating the elements of `xs` together. If an "
6321
              "element is not a byte sequence, it is converted to bytes via `describe`. "
6322
0
              "Returns the new string.") {
6323
0
    JanetBuffer *b = janet_buffer(0);
6324
0
    for (int32_t i = 0; i < argc; ++i)
6325
0
        janet_to_string_b(b, argv[i]);
6326
0
    return janet_stringv(b->data, b->count);
6327
0
}
6328
6329
JANET_CORE_FN(janet_core_symbol,
6330
              "(symbol & xs)",
6331
              "Creates a symbol by concatenating the elements of `xs` together. If an "
6332
              "element is not a byte sequence, it is converted to bytes via `describe`. "
6333
0
              "Returns the new symbol.") {
6334
0
    JanetBuffer *b = janet_buffer(0);
6335
0
    for (int32_t i = 0; i < argc; ++i)
6336
0
        janet_to_string_b(b, argv[i]);
6337
0
    return janet_symbolv(b->data, b->count);
6338
0
}
6339
6340
JANET_CORE_FN(janet_core_keyword,
6341
              "(keyword & xs)",
6342
              "Creates a keyword by concatenating the elements of `xs` together. If an "
6343
              "element is not a byte sequence, it is converted to bytes via `describe`. "
6344
0
              "Returns the new keyword.") {
6345
0
    JanetBuffer *b = janet_buffer(0);
6346
0
    for (int32_t i = 0; i < argc; ++i)
6347
0
        janet_to_string_b(b, argv[i]);
6348
0
    return janet_keywordv(b->data, b->count);
6349
0
}
6350
6351
JANET_CORE_FN(janet_core_buffer,
6352
              "(buffer & xs)",
6353
              "Creates a buffer by concatenating the elements of `xs` together. If an "
6354
              "element is not a byte sequence, it is converted to bytes via `describe`. "
6355
0
              "Returns the new buffer.") {
6356
0
    JanetBuffer *b = janet_buffer(0);
6357
0
    for (int32_t i = 0; i < argc; ++i)
6358
0
        janet_to_string_b(b, argv[i]);
6359
0
    return janet_wrap_buffer(b);
6360
0
}
6361
6362
JANET_CORE_FN(janet_core_is_abstract,
6363
              "(abstract? x)",
6364
0
              "Check if x is an abstract type.") {
6365
0
    janet_fixarity(argc, 1);
6366
0
    return janet_wrap_boolean(janet_checktype(argv[0], JANET_ABSTRACT));
6367
0
}
6368
6369
JANET_CORE_FN(janet_core_scannumber,
6370
              "(scan-number str &opt base)",
6371
              "Parse a number from a byte sequence and return that number, either an integer "
6372
              "or a real. The number "
6373
              "must be in the same format as numbers in janet source code. Will return nil "
6374
              "on an invalid number. Optionally provide a base - if a base is provided, no "
6375
0
              "radix specifier is expected at the beginning of the number.") {
6376
0
    double number;
6377
0
    janet_arity(argc, 1, 2);
6378
0
    JanetByteView view = janet_getbytes(argv, 0);
6379
0
    int32_t base = janet_optinteger(argv, argc, 1, 0);
6380
0
    int valid = base == 0 || (base >= 2 && base <= 36);
6381
0
    if (!valid) {
6382
0
        janet_panicf("expected base between 2 and 36, got %d", base);
6383
0
    }
6384
0
    if (janet_scan_number_base(view.bytes, view.len, base, &number))
6385
0
        return janet_wrap_nil();
6386
0
    return janet_wrap_number(number);
6387
0
}
6388
6389
JANET_CORE_FN(janet_core_tuple,
6390
              "(tuple & items)",
6391
0
              "Creates a new tuple that contains items. Returns the new tuple.") {
6392
0
    return janet_wrap_tuple(janet_tuple_n(argv, argc));
6393
0
}
6394
6395
JANET_CORE_FN(janet_core_array,
6396
              "(array & items)",
6397
0
              "Create a new array that contains items. Returns the new array.") {
6398
0
    JanetArray *array = janet_array(argc);
6399
0
    array->count = argc;
6400
0
    safe_memcpy(array->data, argv, argc * sizeof(Janet));
6401
0
    return janet_wrap_array(array);
6402
0
}
6403
6404
JANET_CORE_FN(janet_core_slice,
6405
              "(slice x &opt start end)",
6406
0
              "Extract a sub-range of an indexed data structure or byte sequence.") {
6407
0
    JanetRange range;
6408
0
    JanetByteView bview;
6409
0
    JanetView iview;
6410
0
    if (janet_bytes_view(argv[0], &bview.bytes, &bview.len)) {
6411
0
        range = janet_getslice(argc, argv);
6412
0
        return janet_stringv(bview.bytes + range.start, range.end - range.start);
6413
0
    } else if (janet_indexed_view(argv[0], &iview.items, &iview.len)) {
6414
0
        range = janet_getslice(argc, argv);
6415
0
        return janet_wrap_tuple(janet_tuple_n(iview.items + range.start, range.end - range.start));
6416
0
    } else {
6417
0
        janet_panic_type(argv[0], 0, JANET_TFLAG_BYTES | JANET_TFLAG_INDEXED);
6418
0
    }
6419
0
}
6420
6421
JANET_CORE_FN(janet_core_table,
6422
              "(table & kvs)",
6423
              "Creates a new table from a variadic number of keys and values. "
6424
              "kvs is a sequence k1, v1, k2, v2, k3, v3, ... If kvs has "
6425
              "an odd number of elements, an error will be thrown. Returns the "
6426
0
              "new table.") {
6427
0
    int32_t i;
6428
0
    if (argc & 1)
6429
0
        janet_panic("expected even number of arguments");
6430
0
    JanetTable *table = janet_table(argc >> 1);
6431
0
    for (i = 0; i < argc; i += 2) {
6432
0
        janet_table_put(table, argv[i], argv[i + 1]);
6433
0
    }
6434
0
    return janet_wrap_table(table);
6435
0
}
6436
6437
JANET_CORE_FN(janet_core_getproto,
6438
              "(getproto x)",
6439
0
              "Get the prototype of a table or struct. Will return nil if `x` has no prototype.") {
6440
0
    janet_fixarity(argc, 1);
6441
0
    if (janet_checktype(argv[0], JANET_TABLE)) {
6442
0
        JanetTable *t = janet_unwrap_table(argv[0]);
6443
0
        return t->proto
6444
0
               ? janet_wrap_table(t->proto)
6445
0
               : janet_wrap_nil();
6446
0
    }
6447
0
    if (janet_checktype(argv[0], JANET_STRUCT)) {
6448
0
        JanetStruct st = janet_unwrap_struct(argv[0]);
6449
0
        return janet_struct_proto(st)
6450
0
               ? janet_wrap_struct(janet_struct_proto(st))
6451
0
               : janet_wrap_nil();
6452
0
    }
6453
0
    janet_panicf("expected struct or table, got %v", argv[0]);
6454
0
}
6455
6456
JANET_CORE_FN(janet_core_struct,
6457
              "(struct & kvs)",
6458
              "Create a new struct from a sequence of key value pairs. "
6459
              "kvs is a sequence k1, v1, k2, v2, k3, v3, ... If kvs has "
6460
              "an odd number of elements, an error will be thrown. Returns the "
6461
0
              "new struct.") {
6462
0
    int32_t i;
6463
0
    if (argc & 1) {
6464
0
        janet_panic("expected even number of arguments");
6465
0
    }
6466
0
    JanetKV *st = janet_struct_begin(argc >> 1);
6467
0
    for (i = 0; i < argc; i += 2) {
6468
0
        janet_struct_put(st, argv[i], argv[i + 1]);
6469
0
    }
6470
0
    return janet_wrap_struct(janet_struct_end(st));
6471
0
}
6472
6473
JANET_CORE_FN(janet_core_gensym,
6474
              "(gensym)",
6475
              "Returns a new symbol that is unique across the runtime. This means it "
6476
              "will not collide with any already created symbols during compilation, so "
6477
0
              "it can be used in macros to generate automatic bindings.") {
6478
0
    (void) argv;
6479
0
    janet_fixarity(argc, 0);
6480
0
    return janet_wrap_symbol(janet_symbol_gen());
6481
0
}
6482
6483
JANET_CORE_FN(janet_core_gccollect,
6484
              "(gccollect)",
6485
0
              "Run garbage collection. You should probably not call this manually.") {
6486
0
    (void) argv;
6487
0
    (void) argc;
6488
0
    janet_collect();
6489
0
    return janet_wrap_nil();
6490
0
}
6491
6492
JANET_CORE_FN(janet_core_gcsetinterval,
6493
              "(gcsetinterval interval)",
6494
              "Set an integer number of bytes to allocate before running garbage collection. "
6495
              "Low values for interval will be slower but use less memory. "
6496
0
              "High values will be faster but use more memory.") {
6497
0
    janet_fixarity(argc, 1);
6498
0
    size_t s = janet_getsize(argv, 0);
6499
    /* limit interval to 48 bits */
6500
0
#ifdef JANET_64
6501
0
    if (s >> 48) {
6502
0
        janet_panic("interval too large");
6503
0
    }
6504
0
#endif
6505
0
    janet_vm.gc_interval = s;
6506
0
    return janet_wrap_nil();
6507
0
}
6508
6509
JANET_CORE_FN(janet_core_gcinterval,
6510
              "(gcinterval)",
6511
              "Returns the integer number of bytes to allocate before running an iteration "
6512
0
              "of garbage collection.") {
6513
0
    (void) argv;
6514
0
    janet_fixarity(argc, 0);
6515
0
    return janet_wrap_number((double) janet_vm.gc_interval);
6516
0
}
6517
6518
JANET_CORE_FN(janet_core_type,
6519
              "(type x)",
6520
              "Returns the type of `x` as a keyword. `x` is one of:\n\n"
6521
              "* :nil\n\n"
6522
              "* :boolean\n\n"
6523
              "* :number\n\n"
6524
              "* :array\n\n"
6525
              "* :tuple\n\n"
6526
              "* :table\n\n"
6527
              "* :struct\n\n"
6528
              "* :string\n\n"
6529
              "* :buffer\n\n"
6530
              "* :symbol\n\n"
6531
              "* :keyword\n\n"
6532
              "* :function\n\n"
6533
              "* :cfunction\n\n"
6534
              "* :fiber\n\n"
6535
0
              "or another keyword for an abstract type.") {
6536
0
    janet_fixarity(argc, 1);
6537
0
    JanetType t = janet_type(argv[0]);
6538
0
    if (t == JANET_ABSTRACT) {
6539
0
        return janet_ckeywordv(janet_abstract_type(janet_unwrap_abstract(argv[0]))->name);
6540
0
    } else {
6541
0
        return janet_ckeywordv(janet_type_names[t]);
6542
0
    }
6543
0
}
6544
6545
JANET_CORE_FN(janet_core_hash,
6546
              "(hash value)",
6547
              "Gets a hash for any value. The hash is an integer can be used "
6548
              "as a cheap hash function for all values. If two values are strictly equal, "
6549
0
              "then they will have the same hash value.") {
6550
0
    janet_fixarity(argc, 1);
6551
0
    return janet_wrap_number(janet_hash(argv[0]));
6552
0
}
6553
6554
JANET_CORE_FN(janet_core_getline,
6555
              "(getline &opt prompt buf env)",
6556
              "Reads a line of input into a buffer, including the newline character, using a prompt. "
6557
              "An optional environment table can be provided for auto-complete. "
6558
              "Returns the modified buffer. "
6559
0
              "Use this function to implement a simple interface for a terminal program.") {
6560
0
    FILE *in = janet_dynfile("in", stdin);
6561
0
    FILE *out = janet_dynfile("out", stdout);
6562
0
    janet_arity(argc, 0, 3);
6563
0
    JanetBuffer *buf = (argc >= 2) ? janet_getbuffer(argv, 1) : janet_buffer(10);
6564
0
    if (argc >= 1) {
6565
0
        const char *prompt = (const char *) janet_getstring(argv, 0);
6566
0
        fprintf(out, "%s", prompt);
6567
0
        fflush(out);
6568
0
    }
6569
0
    {
6570
0
        buf->count = 0;
6571
0
        int c;
6572
0
        for (;;) {
6573
0
            c = fgetc(in);
6574
0
            if (feof(in) || c < 0) {
6575
0
                break;
6576
0
            }
6577
0
            janet_buffer_push_u8(buf, (uint8_t) c);
6578
0
            if (c == '\n') break;
6579
0
        }
6580
0
    }
6581
0
    return janet_wrap_buffer(buf);
6582
0
}
6583
6584
JANET_CORE_FN(janet_core_trace,
6585
              "(trace func)",
6586
0
              "Enable tracing on a function. Returns the function.") {
6587
0
    janet_fixarity(argc, 1);
6588
0
    JanetFunction *func = janet_getfunction(argv, 0);
6589
0
    func->gc.flags |= JANET_FUNCFLAG_TRACE;
6590
0
    return argv[0];
6591
0
}
6592
6593
JANET_CORE_FN(janet_core_untrace,
6594
              "(untrace func)",
6595
0
              "Disables tracing on a function. Returns the function.") {
6596
0
    janet_fixarity(argc, 1);
6597
0
    JanetFunction *func = janet_getfunction(argv, 0);
6598
0
    func->gc.flags &= ~JANET_FUNCFLAG_TRACE;
6599
0
    return argv[0];
6600
0
}
6601
6602
JANET_CORE_FN(janet_core_check_int,
6603
              "(int? x)",
6604
0
              "Check if x can be exactly represented as a 32 bit signed two's complement integer.") {
6605
0
    janet_fixarity(argc, 1);
6606
0
    if (!janet_checktype(argv[0], JANET_NUMBER)) goto ret_false;
6607
0
    double num = janet_unwrap_number(argv[0]);
6608
0
    return janet_wrap_boolean(num == (double)((int32_t)num));
6609
0
ret_false:
6610
0
    return janet_wrap_false();
6611
0
}
6612
6613
JANET_CORE_FN(janet_core_check_nat,
6614
              "(nat? x)",
6615
0
              "Check if x can be exactly represented as a non-negative 32 bit signed two's complement integer.") {
6616
0
    janet_fixarity(argc, 1);
6617
0
    if (!janet_checktype(argv[0], JANET_NUMBER)) goto ret_false;
6618
0
    double num = janet_unwrap_number(argv[0]);
6619
0
    return janet_wrap_boolean(num >= 0 && (num == (double)((int32_t)num)));
6620
0
ret_false:
6621
0
    return janet_wrap_false();
6622
0
}
6623
6624
JANET_CORE_FN(janet_core_signal,
6625
              "(signal what x)",
6626
0
              "Raise a signal with payload x. ") {
6627
0
    janet_arity(argc, 1, 2);
6628
0
    Janet payload = argc == 2 ? argv[1] : janet_wrap_nil();
6629
0
    if (janet_checkint(argv[0])) {
6630
0
        int32_t s = janet_unwrap_integer(argv[0]);
6631
0
        if (s < 0 || s > 9) {
6632
0
            janet_panicf("expected user signal between 0 and 9, got %d", s);
6633
0
        }
6634
0
        janet_signalv(JANET_SIGNAL_USER0 + s, payload);
6635
0
    } else {
6636
0
        JanetKeyword kw = janet_getkeyword(argv, 0);
6637
0
        for (unsigned i = 0; i < sizeof(janet_signal_names) / sizeof(char *); i++) {
6638
0
            if (!janet_cstrcmp(kw, janet_signal_names[i])) {
6639
0
                janet_signalv((JanetSignal) i, payload);
6640
0
            }
6641
0
        }
6642
0
    }
6643
0
    janet_panicf("unknown signal %v", argv[0]);
6644
0
}
6645
6646
JANET_CORE_FN(janet_core_memcmp,
6647
              "(memcmp a b &opt len offset-a offset-b)",
6648
              "Compare memory. Takes two byte sequences `a` and `b`, and "
6649
              "return 0 if they have identical contents, a negative integer if a is less than b, "
6650
              "and a positive integer if a is greater than b. Optionally take a length and offsets "
6651
0
              "to compare slices of the bytes sequences.") {
6652
0
    janet_arity(argc, 2, 5);
6653
0
    JanetByteView a = janet_getbytes(argv, 0);
6654
0
    JanetByteView b = janet_getbytes(argv, 1);
6655
0
    int32_t len = janet_optnat(argv, argc, 2, a.len < b.len ? a.len : b.len);
6656
0
    int32_t offset_a = janet_optnat(argv, argc, 3, 0);
6657
0
    int32_t offset_b = janet_optnat(argv, argc, 4, 0);
6658
0
    if (offset_a + len > a.len) janet_panicf("invalid offset-a: %d", offset_a);
6659
0
    if (offset_b + len > b.len) janet_panicf("invalid offset-b: %d", offset_b);
6660
0
    return janet_wrap_integer(memcmp(a.bytes + offset_a, b.bytes + offset_b, (size_t) len));
6661
0
}
6662
6663
typedef struct SandboxOption {
6664
    const char *name;
6665
    uint32_t flag;
6666
} SandboxOption;
6667
6668
static const SandboxOption sandbox_options[] = {
6669
    {"all", JANET_SANDBOX_ALL},
6670
    {"env", JANET_SANDBOX_ENV},
6671
    {"ffi", JANET_SANDBOX_FFI},
6672
    {"ffi-define", JANET_SANDBOX_FFI_DEFINE},
6673
    {"ffi-jit", JANET_SANDBOX_FFI_JIT},
6674
    {"ffi-use", JANET_SANDBOX_FFI_USE},
6675
    {"fs", JANET_SANDBOX_FS},
6676
    {"fs-read", JANET_SANDBOX_FS_READ},
6677
    {"fs-temp", JANET_SANDBOX_FS_TEMP},
6678
    {"fs-write", JANET_SANDBOX_FS_WRITE},
6679
    {"hrtime", JANET_SANDBOX_HRTIME},
6680
    {"modules", JANET_SANDBOX_DYNAMIC_MODULES},
6681
    {"net", JANET_SANDBOX_NET},
6682
    {"net-connect", JANET_SANDBOX_NET_CONNECT},
6683
    {"net-listen", JANET_SANDBOX_NET_LISTEN},
6684
    {"sandbox", JANET_SANDBOX_SANDBOX},
6685
    {"subprocess", JANET_SANDBOX_SUBPROCESS},
6686
    {NULL, 0}
6687
};
6688
6689
JANET_CORE_FN(janet_core_sandbox,
6690
              "(sandbox & forbidden-capabilities)",
6691
              "Disable feature sets to prevent the interpreter from using certain system resources. "
6692
              "Once a feature is disabled, there is no way to re-enable it. Capabilities can be:\n\n"
6693
              "* :all - disallow all (except IO to stdout, stderr, and stdin)\n"
6694
              "* :env - disallow reading and write env variables\n"
6695
              "* :ffi - disallow FFI (recommended if disabling anything else)\n"
6696
              "* :ffi-define - disallow loading new FFI modules and binding new functions\n"
6697
              "* :ffi-jit - disallow calling `ffi/jitfn`\n"
6698
              "* :ffi-use - disallow using any previously bound FFI functions and memory-unsafe functions.\n"
6699
              "* :fs - disallow access to the file system\n"
6700
              "* :fs-read - disallow read access to the file system\n"
6701
              "* :fs-temp - disallow creating temporary files\n"
6702
              "* :fs-write - disallow write access to the file system\n"
6703
              "* :hrtime - disallow high-resolution timers\n"
6704
              "* :modules - disallow load dynamic modules (natives)\n"
6705
              "* :net - disallow network access\n"
6706
              "* :net-connect - disallow making outbound network connections\n"
6707
              "* :net-listen - disallow accepting inbound network connections\n"
6708
              "* :sandbox - disallow calling this function\n"
6709
0
              "* :subprocess - disallow running subprocesses") {
6710
0
    uint32_t flags = 0;
6711
0
    for (int32_t i = 0; i < argc; i++) {
6712
0
        JanetKeyword kw = janet_getkeyword(argv, i);
6713
0
        const SandboxOption *opt = sandbox_options;
6714
0
        while (opt->name != NULL) {
6715
0
            if (janet_cstrcmp(kw, opt->name) == 0) {
6716
0
                flags |= opt->flag;
6717
0
                break;
6718
0
            }
6719
0
            opt++;
6720
0
        }
6721
0
        if (opt->name == NULL) janet_panicf("unknown capability %v", argv[i]);
6722
0
    }
6723
0
    janet_sandbox(flags);
6724
0
    return janet_wrap_nil();
6725
0
}
6726
6727
#ifdef JANET_BOOTSTRAP
6728
6729
/* Utility for inline assembly */
6730
static void janet_quick_asm(
6731
    JanetTable *env,
6732
    int32_t flags,
6733
    const char *name,
6734
    int32_t arity,
6735
    int32_t min_arity,
6736
    int32_t max_arity,
6737
    int32_t slots,
6738
    const uint32_t *bytecode,
6739
    size_t bytecode_size,
6740
    const char *doc) {
6741
    JanetFuncDef *def = janet_funcdef_alloc();
6742
    def->arity = arity;
6743
    def->min_arity = min_arity;
6744
    def->max_arity = max_arity;
6745
    def->flags = flags;
6746
    def->slotcount = slots;
6747
    def->bytecode = janet_malloc(bytecode_size);
6748
    def->bytecode_length = (int32_t)(bytecode_size / sizeof(uint32_t));
6749
    def->name = janet_cstring(name);
6750
    if (!def->bytecode) {
6751
        JANET_OUT_OF_MEMORY;
6752
    }
6753
    memcpy(def->bytecode, bytecode, bytecode_size);
6754
    janet_def_addflags(def);
6755
    janet_def(env, name, janet_wrap_function(janet_thunk(def)), doc);
6756
}
6757
6758
/* Macros for easier inline assembly */
6759
#define SSS(op, a, b, c) ((op) | ((a) << 8) | ((b) << 16) | ((c) << 24))
6760
#define SS(op, a, b) ((op) | ((a) << 8) | ((b) << 16))
6761
#define SSI(op, a, b, I) ((op) | ((a) << 8) | ((b) << 16) | ((uint32_t)(I) << 24))
6762
#define S(op, a) ((op) | ((a) << 8))
6763
#define SI(op, a, I) ((op) | ((a) << 8) | ((uint32_t)(I) << 16))
6764
6765
/* Templatize a varop */
6766
static void templatize_varop(
6767
    JanetTable *env,
6768
    int32_t flags,
6769
    const char *name,
6770
    int32_t nullary,
6771
    int32_t unary,
6772
    uint32_t op,
6773
    const char *doc) {
6774
6775
    /* Variadic operator assembly. Must be templatized for each different opcode. */
6776
    /* Reg 0: Argument tuple (args) */
6777
    /* Reg 1: Argument count (argn) */
6778
    /* Reg 2: Jump flag (jump?) */
6779
    /* Reg 3: Accumulator (accum) */
6780
    /* Reg 4: Next operand (operand) */
6781
    /* Reg 5: Loop iterator (i) */
6782
    uint32_t varop_asm[] = {
6783
        SS(JOP_LENGTH, 1, 0), /* Put number of arguments in register 1 -> argn = count(args) */
6784
6785
        /* Check nullary */
6786
        SSS(JOP_EQUALS_IMMEDIATE, 2, 1, 0), /* Check if numargs equal to 0 */
6787
        SI(JOP_JUMP_IF_NOT, 2, 3), /* If not 0, jump to next check */
6788
        /* Nullary */
6789
        SI(JOP_LOAD_INTEGER, 3, nullary),  /* accum = nullary value */
6790
        S(JOP_RETURN, 3), /* return accum */
6791
6792
        /* Check unary */
6793
        SSI(JOP_EQUALS_IMMEDIATE, 2, 1, 1), /* Check if numargs equal to 1 */
6794
        SI(JOP_JUMP_IF_NOT, 2, 5), /* If not 1, jump to next check */
6795
        /* Unary */
6796
        SI(JOP_LOAD_INTEGER, 3, unary), /* accum = unary value */
6797
        SSI(JOP_GET_INDEX, 4, 0, 0), /* operand = args[0] */
6798
        SSS(op, 3, 3, 4), /* accum = accum op operand */
6799
        S(JOP_RETURN, 3), /* return accum */
6800
6801
        /* Mutli (2 or more) arity */
6802
        /* Prime loop */
6803
        SSI(JOP_GET_INDEX, 3, 0, 0), /* accum = args[0] */
6804
        SI(JOP_LOAD_INTEGER, 5, 1), /* i = 1 */
6805
        /* Main loop */
6806
        SSS(JOP_IN, 4, 0, 5), /* operand = args[i] */
6807
        SSS(op, 3, 3, 4), /* accum = accum op operand */
6808
        SSI(JOP_ADD_IMMEDIATE, 5, 5, 1), /* i++ */
6809
        SSI(JOP_EQUALS, 2, 5, 1), /* jump? = (i == argn) */
6810
        SI(JOP_JUMP_IF_NOT, 2, -4), /* if not jump? go back 4 */
6811
6812
        /* Done, do last and return accumulator */
6813
        S(JOP_RETURN, 3) /* return accum */
6814
    };
6815
6816
    janet_quick_asm(
6817
        env,
6818
        flags | JANET_FUNCDEF_FLAG_VARARG,
6819
        name,
6820
        0,
6821
        0,
6822
        INT32_MAX,
6823
        6,
6824
        varop_asm,
6825
        sizeof(varop_asm),
6826
        doc);
6827
}
6828
6829
/* Templatize variadic comparators */
6830
static void templatize_comparator(
6831
    JanetTable *env,
6832
    int32_t flags,
6833
    const char *name,
6834
    int invert,
6835
    uint32_t op,
6836
    const char *doc) {
6837
6838
    /* Reg 0: Argument tuple (args) */
6839
    /* Reg 1: Argument count (argn) */
6840
    /* Reg 2: Jump flag (jump?) */
6841
    /* Reg 3: Last value (last) */
6842
    /* Reg 4: Next operand (next) */
6843
    /* Reg 5: Loop iterator (i) */
6844
    uint32_t comparator_asm[] = {
6845
        SS(JOP_LENGTH, 1, 0), /* Put number of arguments in register 1 -> argn = count(args) */
6846
        SSS(JOP_LESS_THAN_IMMEDIATE, 2, 1, 2), /* Check if numargs less than 2 */
6847
        SI(JOP_JUMP_IF, 2, 10), /* If numargs < 2, jump to done */
6848
6849
        /* Prime loop */
6850
        SSI(JOP_GET_INDEX, 3, 0, 0), /* last = args[0] */
6851
        SI(JOP_LOAD_INTEGER, 5, 1), /* i = 1 */
6852
6853
        /* Main loop */
6854
        SSS(JOP_IN, 4, 0, 5), /* next = args[i] */
6855
        SSS(op, 2, 3, 4), /* jump? = last compare next */
6856
        SI(JOP_JUMP_IF_NOT, 2, 7), /* if not jump? goto fail (return false) */
6857
        SSI(JOP_ADD_IMMEDIATE, 5, 5, 1), /* i++ */
6858
        SS(JOP_MOVE_NEAR, 3, 4), /* last = next */
6859
        SSI(JOP_EQUALS, 2, 5, 1), /* jump? = (i == argn) */
6860
        SI(JOP_JUMP_IF_NOT, 2, -6), /* if not jump? go back 6 */
6861
6862
        /* Done, return true */
6863
        S(invert ? JOP_LOAD_FALSE : JOP_LOAD_TRUE, 3),
6864
        S(JOP_RETURN, 3),
6865
6866
        /* Failed, return false */
6867
        S(invert ? JOP_LOAD_TRUE : JOP_LOAD_FALSE, 3),
6868
        S(JOP_RETURN, 3)
6869
    };
6870
6871
    janet_quick_asm(
6872
        env,
6873
        flags | JANET_FUNCDEF_FLAG_VARARG,
6874
        name,
6875
        0,
6876
        0,
6877
        INT32_MAX,
6878
        6,
6879
        comparator_asm,
6880
        sizeof(comparator_asm),
6881
        doc);
6882
}
6883
6884
/* Make the apply function */
6885
static void make_apply(JanetTable *env) {
6886
    /* Reg 0: Function (fun) */
6887
    /* Reg 1: Argument tuple (args) */
6888
    /* Reg 2: Argument count (argn) */
6889
    /* Reg 3: Jump flag (jump?) */
6890
    /* Reg 4: Loop iterator (i) */
6891
    /* Reg 5: Loop values (x) */
6892
    uint32_t apply_asm[] = {
6893
        SS(JOP_LENGTH, 2, 1),
6894
        SSS(JOP_EQUALS_IMMEDIATE, 3, 2, 0), /* Immediate tail call if no args */
6895
        SI(JOP_JUMP_IF, 3, 9),
6896
6897
        /* Prime loop */
6898
        SI(JOP_LOAD_INTEGER, 4, 0), /* i = 0 */
6899
6900
        /* Main loop */
6901
        SSS(JOP_IN, 5, 1, 4), /* x = args[i] */
6902
        SSI(JOP_ADD_IMMEDIATE, 4, 4, 1), /* i++ */
6903
        SSI(JOP_EQUALS, 3, 4, 2), /* jump? = (i == argn) */
6904
        SI(JOP_JUMP_IF, 3, 3), /* if jump? go forward 3 */
6905
        S(JOP_PUSH, 5),
6906
        (JOP_JUMP | ((uint32_t)(-5) << 8)),
6907
6908
        /* Push the array */
6909
        S(JOP_PUSH_ARRAY, 5),
6910
6911
        /* Call the funciton */
6912
        S(JOP_TAILCALL, 0)
6913
    };
6914
    janet_quick_asm(env, JANET_FUN_APPLY | JANET_FUNCDEF_FLAG_VARARG,
6915
                    "apply", 1, 1, INT32_MAX, 6, apply_asm, sizeof(apply_asm),
6916
                    JDOC("(apply f & args)\n\n"
6917
                         "Applies a function to a variable number of arguments. Each element in args "
6918
                         "is used as an argument to f, except the last element in args, which is expected to "
6919
                         "be an array-like. Each element in this last argument is then also pushed as an argument to "
6920
                         "f. For example:\n\n"
6921
                         "\t(apply + 1000 (range 10))\n\n"
6922
                         "sums the first 10 integers and 1000."));
6923
}
6924
6925
static const uint32_t error_asm[] = {
6926
    JOP_ERROR
6927
};
6928
static const uint32_t debug_asm[] = {
6929
    JOP_SIGNAL | (2 << 24),
6930
    JOP_RETURN
6931
};
6932
static const uint32_t yield_asm[] = {
6933
    JOP_SIGNAL | (3 << 24),
6934
    JOP_RETURN
6935
};
6936
static const uint32_t resume_asm[] = {
6937
    JOP_RESUME | (1 << 24),
6938
    JOP_RETURN
6939
};
6940
static const uint32_t cancel_asm[] = {
6941
    JOP_CANCEL | (1 << 24),
6942
    JOP_RETURN
6943
};
6944
static const uint32_t in_asm[] = {
6945
    JOP_IN | (1 << 24),
6946
    JOP_LOAD_NIL | (3 << 8),
6947
    JOP_EQUALS | (3 << 8) | (3 << 24),
6948
    JOP_JUMP_IF | (3 << 8) | (2 << 16),
6949
    JOP_RETURN,
6950
    JOP_RETURN | (2 << 8)
6951
};
6952
static const uint32_t get_asm[] = {
6953
    JOP_GET | (1 << 24),
6954
    JOP_LOAD_NIL | (3 << 8),
6955
    JOP_EQUALS | (3 << 8) | (3 << 24),
6956
    JOP_JUMP_IF | (3 << 8) | (2 << 16),
6957
    JOP_RETURN,
6958
    JOP_RETURN | (2 << 8)
6959
};
6960
static const uint32_t put_asm[] = {
6961
    JOP_PUT | (1 << 16) | (2 << 24),
6962
    JOP_RETURN
6963
};
6964
static const uint32_t length_asm[] = {
6965
    JOP_LENGTH,
6966
    JOP_RETURN
6967
};
6968
static const uint32_t bnot_asm[] = {
6969
    JOP_BNOT,
6970
    JOP_RETURN
6971
};
6972
static const uint32_t propagate_asm[] = {
6973
    JOP_PROPAGATE | (1 << 24),
6974
    JOP_RETURN
6975
};
6976
static const uint32_t next_asm[] = {
6977
    JOP_NEXT | (1 << 24),
6978
    JOP_RETURN
6979
};
6980
static const uint32_t modulo_asm[] = {
6981
    JOP_MODULO | (1 << 24),
6982
    JOP_RETURN
6983
};
6984
static const uint32_t remainder_asm[] = {
6985
    JOP_REMAINDER | (1 << 24),
6986
    JOP_RETURN
6987
};
6988
static const uint32_t cmp_asm[] = {
6989
    JOP_COMPARE | (1 << 24),
6990
    JOP_RETURN
6991
};
6992
#endif /* ifdef JANET_BOOTSTRAP */
6993
6994
/*
6995
 * Setup Environment
6996
 */
6997
6998
0
static void janet_load_libs(JanetTable *env) {
6999
0
    JanetRegExt corelib_cfuns[] = {
7000
0
        JANET_CORE_REG("native", janet_core_native),
7001
0
        JANET_CORE_REG("describe", janet_core_describe),
7002
0
        JANET_CORE_REG("string", janet_core_string),
7003
0
        JANET_CORE_REG("symbol", janet_core_symbol),
7004
0
        JANET_CORE_REG("keyword", janet_core_keyword),
7005
0
        JANET_CORE_REG("buffer", janet_core_buffer),
7006
0
        JANET_CORE_REG("abstract?", janet_core_is_abstract),
7007
0
        JANET_CORE_REG("table", janet_core_table),
7008
0
        JANET_CORE_REG("array", janet_core_array),
7009
0
        JANET_CORE_REG("scan-number", janet_core_scannumber),
7010
0
        JANET_CORE_REG("tuple", janet_core_tuple),
7011
0
        JANET_CORE_REG("struct", janet_core_struct),
7012
0
        JANET_CORE_REG("gensym", janet_core_gensym),
7013
0
        JANET_CORE_REG("gccollect", janet_core_gccollect),
7014
0
        JANET_CORE_REG("gcsetinterval", janet_core_gcsetinterval),
7015
0
        JANET_CORE_REG("gcinterval", janet_core_gcinterval),
7016
0
        JANET_CORE_REG("type", janet_core_type),
7017
0
        JANET_CORE_REG("hash", janet_core_hash),
7018
0
        JANET_CORE_REG("getline", janet_core_getline),
7019
0
        JANET_CORE_REG("dyn", janet_core_dyn),
7020
0
        JANET_CORE_REG("setdyn", janet_core_setdyn),
7021
0
        JANET_CORE_REG("trace", janet_core_trace),
7022
0
        JANET_CORE_REG("untrace", janet_core_untrace),
7023
0
        JANET_CORE_REG("module/expand-path", janet_core_expand_path),
7024
0
        JANET_CORE_REG("int?", janet_core_check_int),
7025
0
        JANET_CORE_REG("nat?", janet_core_check_nat),
7026
0
        JANET_CORE_REG("slice", janet_core_slice),
7027
0
        JANET_CORE_REG("signal", janet_core_signal),
7028
0
        JANET_CORE_REG("memcmp", janet_core_memcmp),
7029
0
        JANET_CORE_REG("getproto", janet_core_getproto),
7030
0
        JANET_CORE_REG("sandbox", janet_core_sandbox),
7031
0
        JANET_REG_END
7032
0
    };
7033
0
    janet_core_cfuns_ext(env, NULL, corelib_cfuns);
7034
0
    janet_lib_io(env);
7035
0
    janet_lib_math(env);
7036
0
    janet_lib_array(env);
7037
0
    janet_lib_tuple(env);
7038
0
    janet_lib_buffer(env);
7039
0
    janet_lib_table(env);
7040
0
    janet_lib_struct(env);
7041
0
    janet_lib_fiber(env);
7042
0
    janet_lib_os(env);
7043
0
    janet_lib_parse(env);
7044
0
    janet_lib_compile(env);
7045
0
    janet_lib_debug(env);
7046
0
    janet_lib_string(env);
7047
0
    janet_lib_marsh(env);
7048
0
#ifdef JANET_PEG
7049
0
    janet_lib_peg(env);
7050
0
#endif
7051
0
#ifdef JANET_ASSEMBLER
7052
0
    janet_lib_asm(env);
7053
0
#endif
7054
0
#ifdef JANET_INT_TYPES
7055
0
    janet_lib_inttypes(env);
7056
0
#endif
7057
0
#ifdef JANET_EV
7058
0
    janet_lib_ev(env);
7059
0
#endif
7060
0
#ifdef JANET_NET
7061
0
    janet_lib_net(env);
7062
0
#endif
7063
0
#ifdef JANET_FFI
7064
0
    janet_lib_ffi(env);
7065
0
#endif
7066
0
}
7067
7068
#ifdef JANET_BOOTSTRAP
7069
7070
JanetTable *janet_core_env(JanetTable *replacements) {
7071
    JanetTable *env = (NULL != replacements) ? replacements : janet_table(0);
7072
    janet_quick_asm(env, JANET_FUN_MODULO,
7073
                    "mod", 2, 2, 2, 2, modulo_asm, sizeof(modulo_asm),
7074
                    JDOC("(mod dividend divisor)\n\n"
7075
                         "Returns the modulo of dividend / divisor."));
7076
    janet_quick_asm(env, JANET_FUN_REMAINDER,
7077
                    "%", 2, 2, 2, 2, remainder_asm, sizeof(remainder_asm),
7078
                    JDOC("(% dividend divisor)\n\n"
7079
                         "Returns the remainder of dividend / divisor."));
7080
    janet_quick_asm(env, JANET_FUN_CMP,
7081
                    "cmp", 2, 2, 2, 2, cmp_asm, sizeof(cmp_asm),
7082
                    JDOC("(cmp x y)\n\n"
7083
                         "Returns -1 if x is strictly less than y, 1 if y is strictly greater "
7084
                         "than x, and 0 otherwise. To return 0, x and y must be the exact same type."));
7085
    janet_quick_asm(env, JANET_FUN_NEXT,
7086
                    "next", 2, 1, 2, 2, next_asm, sizeof(next_asm),
7087
                    JDOC("(next ds &opt key)\n\n"
7088
                         "Gets the next key in a data structure. Can be used to iterate through "
7089
                         "the keys of a data structure in an unspecified order. Keys are guaranteed "
7090
                         "to be seen only once per iteration if they data structure is not mutated "
7091
                         "during iteration. If key is nil, next returns the first key. If next "
7092
                         "returns nil, there are no more keys to iterate through."));
7093
    janet_quick_asm(env, JANET_FUN_PROP,
7094
                    "propagate", 2, 2, 2, 2, propagate_asm, sizeof(propagate_asm),
7095
                    JDOC("(propagate x fiber)\n\n"
7096
                         "Propagate a signal from a fiber to the current fiber. The resulting "
7097
                         "stack trace from the current fiber will include frames from fiber. If "
7098
                         "fiber is in a state that can be resumed, resuming the current fiber will "
7099
                         "first resume fiber. This function can be used to re-raise an error without "
7100
                         "losing the original stack trace."));
7101
    janet_quick_asm(env, JANET_FUN_DEBUG,
7102
                    "debug", 1, 0, 1, 1, debug_asm, sizeof(debug_asm),
7103
                    JDOC("(debug &opt x)\n\n"
7104
                         "Throws a debug signal that can be caught by a parent fiber and used to inspect "
7105
                         "the running state of the current fiber. Returns the value passed in by resume."));
7106
    janet_quick_asm(env, JANET_FUN_ERROR,
7107
                    "error", 1, 1, 1, 1, error_asm, sizeof(error_asm),
7108
                    JDOC("(error e)\n\n"
7109
                         "Throws an error e that can be caught and handled by a parent fiber."));
7110
    janet_quick_asm(env, JANET_FUN_YIELD,
7111
                    "yield", 1, 0, 1, 2, yield_asm, sizeof(yield_asm),
7112
                    JDOC("(yield &opt x)\n\n"
7113
                         "Yield a value to a parent fiber. When a fiber yields, its execution is paused until "
7114
                         "another thread resumes it. The fiber will then resume, and the last yield call will "
7115
                         "return the value that was passed to resume."));
7116
    janet_quick_asm(env, JANET_FUN_CANCEL,
7117
                    "cancel", 2, 2, 2, 2, cancel_asm, sizeof(cancel_asm),
7118
                    JDOC("(cancel fiber err)\n\n"
7119
                         "Resume a fiber but have it immediately raise an error. This lets a programmer unwind a pending fiber. "
7120
                         "Returns the same result as resume."));
7121
    janet_quick_asm(env, JANET_FUN_RESUME,
7122
                    "resume", 2, 1, 2, 2, resume_asm, sizeof(resume_asm),
7123
                    JDOC("(resume fiber &opt x)\n\n"
7124
                         "Resume a new or suspended fiber and optionally pass in a value to the fiber that "
7125
                         "will be returned to the last yield in the case of a pending fiber, or the argument to "
7126
                         "the dispatch function in the case of a new fiber. Returns either the return result of "
7127
                         "the fiber's dispatch function, or the value from the next yield call in fiber."));
7128
    janet_quick_asm(env, JANET_FUN_IN,
7129
                    "in", 3, 2, 3, 4, in_asm, sizeof(in_asm),
7130
                    JDOC("(in ds key &opt dflt)\n\n"
7131
                         "Get value in ds at key, works on associative data structures. Arrays, tuples, tables, structs, "
7132
                         "strings, symbols, and buffers are all associative and can be used. Arrays, tuples, strings, buffers, "
7133
                         "and symbols must use integer keys that are in bounds or an error is raised. Structs and tables can "
7134
                         "take any value as a key except nil and will return nil or dflt if not found."));
7135
    janet_quick_asm(env, JANET_FUN_GET,
7136
                    "get", 3, 2, 3, 4, get_asm, sizeof(in_asm),
7137
                    JDOC("(get ds key &opt dflt)\n\n"
7138
                         "Get the value mapped to key in data structure ds, and return dflt or nil if not found. "
7139
                         "Similar to in, but will not throw an error if the key is invalid for the data structure "
7140
                         "unless the data structure is an abstract type. In that case, the abstract type getter may throw "
7141
                         "an error."));
7142
    janet_quick_asm(env, JANET_FUN_PUT,
7143
                    "put", 3, 3, 3, 3, put_asm, sizeof(put_asm),
7144
                    JDOC("(put ds key value)\n\n"
7145
                         "Associate a key with a value in any mutable associative data structure. Indexed data structures "
7146
                         "(arrays and buffers) only accept non-negative integer keys, and will expand if an out of bounds "
7147
                         "value is provided. In an array, extra space will be filled with nils, and in a buffer, extra "
7148
                         "space will be filled with 0 bytes. In a table, putting a key that is contained in the table prototype "
7149
                         "will hide the association defined by the prototype, but will not mutate the prototype table. Putting "
7150
                         "a value nil into a table will remove the key from the table. Returns the data structure ds."));
7151
    janet_quick_asm(env, JANET_FUN_LENGTH,
7152
                    "length", 1, 1, 1, 1, length_asm, sizeof(length_asm),
7153
                    JDOC("(length ds)\n\n"
7154
                         "Returns the length or count of a data structure in constant time as an integer. For "
7155
                         "structs and tables, returns the number of key-value pairs in the data structure."));
7156
    janet_quick_asm(env, JANET_FUN_BNOT,
7157
                    "bnot", 1, 1, 1, 1, bnot_asm, sizeof(bnot_asm),
7158
                    JDOC("(bnot x)\n\nReturns the bit-wise inverse of integer x."));
7159
    make_apply(env);
7160
7161
    /* Variadic ops */
7162
    templatize_varop(env, JANET_FUN_ADD, "+", 0, 0, JOP_ADD,
7163
                     JDOC("(+ & xs)\n\n"
7164
                          "Returns the sum of all xs. xs must be integers or real numbers only. If xs is empty, return 0."));
7165
    templatize_varop(env, JANET_FUN_SUBTRACT, "-", 0, 0, JOP_SUBTRACT,
7166
                     JDOC("(- & xs)\n\n"
7167
                          "Returns the difference of xs. If xs is empty, returns 0. If xs has one element, returns the "
7168
                          "negative value of that element. Otherwise, returns the first element in xs minus the sum of "
7169
                          "the rest of the elements."));
7170
    templatize_varop(env, JANET_FUN_MULTIPLY, "*", 1, 1, JOP_MULTIPLY,
7171
                     JDOC("(* & xs)\n\n"
7172
                          "Returns the product of all elements in xs. If xs is empty, returns 1."));
7173
    templatize_varop(env, JANET_FUN_DIVIDE, "/", 1, 1, JOP_DIVIDE,
7174
                     JDOC("(/ & xs)\n\n"
7175
                          "Returns the quotient of xs. If xs is empty, returns 1. If xs has one value x, returns "
7176
                          "the reciprocal of x. Otherwise return the first value of xs repeatedly divided by the remaining "
7177
                          "values."));
7178
    templatize_varop(env, JANET_FUN_BAND, "band", -1, -1, JOP_BAND,
7179
                     JDOC("(band & xs)\n\n"
7180
                          "Returns the bit-wise and of all values in xs. Each x in xs must be an integer."));
7181
    templatize_varop(env, JANET_FUN_BOR, "bor", 0, 0, JOP_BOR,
7182
                     JDOC("(bor & xs)\n\n"
7183
                          "Returns the bit-wise or of all values in xs. Each x in xs must be an integer."));
7184
    templatize_varop(env, JANET_FUN_BXOR, "bxor", 0, 0, JOP_BXOR,
7185
                     JDOC("(bxor & xs)\n\n"
7186
                          "Returns the bit-wise xor of all values in xs. Each in xs must be an integer."));
7187
    templatize_varop(env, JANET_FUN_LSHIFT, "blshift", 1, 1, JOP_SHIFT_LEFT,
7188
                     JDOC("(blshift x & shifts)\n\n"
7189
                          "Returns the value of x bit shifted left by the sum of all values in shifts. x "
7190
                          "and each element in shift must be an integer."));
7191
    templatize_varop(env, JANET_FUN_RSHIFT, "brshift", 1, 1, JOP_SHIFT_RIGHT,
7192
                     JDOC("(brshift x & shifts)\n\n"
7193
                          "Returns the value of x bit shifted right by the sum of all values in shifts. x "
7194
                          "and each element in shift must be an integer."));
7195
    templatize_varop(env, JANET_FUN_RSHIFTU, "brushift", 1, 1, JOP_SHIFT_RIGHT_UNSIGNED,
7196
                     JDOC("(brushift x & shifts)\n\n"
7197
                          "Returns the value of x bit shifted right by the sum of all values in shifts. x "
7198
                          "and each element in shift must be an integer. The sign of x is not preserved, so "
7199
                          "for positive shifts the return value will always be positive."));
7200
7201
    /* Variadic comparators */
7202
    templatize_comparator(env, JANET_FUN_GT, ">", 0, JOP_GREATER_THAN,
7203
                          JDOC("(> & xs)\n\n"
7204
                               "Check if xs is in descending order. Returns a boolean."));
7205
    templatize_comparator(env, JANET_FUN_LT, "<", 0, JOP_LESS_THAN,
7206
                          JDOC("(< & xs)\n\n"
7207
                               "Check if xs is in ascending order. Returns a boolean."));
7208
    templatize_comparator(env, JANET_FUN_GTE, ">=", 0, JOP_GREATER_THAN_EQUAL,
7209
                          JDOC("(>= & xs)\n\n"
7210
                               "Check if xs is in non-ascending order. Returns a boolean."));
7211
    templatize_comparator(env, JANET_FUN_LTE, "<=", 0, JOP_LESS_THAN_EQUAL,
7212
                          JDOC("(<= & xs)\n\n"
7213
                               "Check if xs is in non-descending order. Returns a boolean."));
7214
    templatize_comparator(env, JANET_FUN_EQ, "=", 0, JOP_EQUALS,
7215
                          JDOC("(= & xs)\n\n"
7216
                               "Check if all values in xs are equal. Returns a boolean."));
7217
    templatize_comparator(env, JANET_FUN_NEQ, "not=", 1, JOP_EQUALS,
7218
                          JDOC("(not= & xs)\n\n"
7219
                               "Check if any values in xs are not equal. Returns a boolean."));
7220
7221
    /* Platform detection */
7222
    janet_def(env, "janet/version", janet_cstringv(JANET_VERSION),
7223
              JDOC("The version number of the running janet program."));
7224
    janet_def(env, "janet/build", janet_cstringv(JANET_BUILD),
7225
              JDOC("The build identifier of the running janet program."));
7226
    janet_def(env, "janet/config-bits", janet_wrap_integer(JANET_CURRENT_CONFIG_BITS),
7227
              JDOC("The flag set of config options from janetconf.h which is used to check "
7228
                   "if native modules are compatible with the host program."));
7229
7230
    /* Allow references to the environment */
7231
    janet_def(env, "root-env", janet_wrap_table(env),
7232
              JDOC("The root environment used to create environments with (make-env)."));
7233
7234
    janet_load_libs(env);
7235
    janet_gcroot(janet_wrap_table(env));
7236
    return env;
7237
}
7238
7239
#else
7240
7241
0
JanetTable *janet_core_env(JanetTable *replacements) {
7242
    /* Memoize core env, ignoring replacements the second time around. */
7243
0
    if (NULL != janet_vm.core_env) {
7244
0
        return janet_vm.core_env;
7245
0
    }
7246
7247
0
    JanetTable *dict = janet_core_lookup_table(replacements);
7248
7249
    /* Unmarshal bytecode */
7250
0
    Janet marsh_out = janet_unmarshal(
7251
0
                          janet_core_image,
7252
0
                          janet_core_image_size,
7253
0
                          0,
7254
0
                          dict,
7255
0
                          NULL);
7256
7257
    /* Memoize */
7258
0
    janet_gcroot(marsh_out);
7259
0
    JanetTable *env = janet_unwrap_table(marsh_out);
7260
0
    janet_vm.core_env = env;
7261
7262
    /* Invert image dict manually here. We can't do this in boot.janet as it
7263
     * breaks deterministic builds */
7264
0
    Janet lidv, midv;
7265
0
    lidv = midv = janet_wrap_nil();
7266
0
    janet_resolve(env, janet_csymbol("load-image-dict"), &lidv);
7267
0
    janet_resolve(env, janet_csymbol("make-image-dict"), &midv);
7268
0
    JanetTable *lid = janet_unwrap_table(lidv);
7269
0
    JanetTable *mid = janet_unwrap_table(midv);
7270
0
    for (int32_t i = 0; i < lid->capacity; i++) {
7271
0
        const JanetKV *kv = lid->data + i;
7272
0
        if (!janet_checktype(kv->key, JANET_NIL)) {
7273
0
            janet_table_put(mid, kv->value, kv->key);
7274
0
        }
7275
0
    }
7276
7277
0
    return env;
7278
0
}
7279
7280
#endif
7281
7282
0
JanetTable *janet_core_lookup_table(JanetTable *replacements) {
7283
0
    JanetTable *dict = janet_table(512);
7284
0
    janet_load_libs(dict);
7285
7286
    /* Add replacements */
7287
0
    if (replacements != NULL) {
7288
0
        for (int32_t i = 0; i < replacements->capacity; i++) {
7289
0
            JanetKV kv = replacements->data[i];
7290
0
            if (!janet_checktype(kv.key, JANET_NIL)) {
7291
0
                janet_table_put(dict, kv.key, kv.value);
7292
                /* Add replacement functions to registry? */
7293
0
            }
7294
0
        }
7295
0
    }
7296
7297
0
    return dict;
7298
0
}
7299
7300
7301
/* src/core/debug.c */
7302
#line 0 "src/core/debug.c"
7303
7304
/*
7305
* Copyright (c) 2023 Calvin Rose
7306
*
7307
* Permission is hereby granted, free of charge, to any person obtaining a copy
7308
* of this software and associated documentation files (the "Software"), to
7309
* deal in the Software without restriction, including without limitation the
7310
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7311
* sell copies of the Software, and to permit persons to whom the Software is
7312
* furnished to do so, subject to the following conditions:
7313
*
7314
* The above copyright notice and this permission notice shall be included in
7315
* all copies or substantial portions of the Software.
7316
*
7317
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
7318
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
7319
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
7320
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
7321
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
7322
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
7323
* IN THE SOFTWARE.
7324
*/
7325
7326
#ifndef JANET_AMALG
7327
#include "features.h"
7328
#include <janet.h>
7329
#include "gc.h"
7330
#include "state.h"
7331
#include "util.h"
7332
#include "vector.h"
7333
#endif
7334
7335
/* Implements functionality to build a debugger from within janet.
7336
 * The repl should also be able to serve as pretty featured debugger
7337
 * out of the box. */
7338
7339
/* Add a break point to a function */
7340
0
void janet_debug_break(JanetFuncDef *def, int32_t pc) {
7341
0
    if (pc >= def->bytecode_length || pc < 0)
7342
0
        janet_panic("invalid bytecode offset");
7343
0
    def->bytecode[pc] |= 0x80;
7344
0
}
7345
7346
/* Remove a break point from a function */
7347
0
void janet_debug_unbreak(JanetFuncDef *def, int32_t pc) {
7348
0
    if (pc >= def->bytecode_length || pc < 0)
7349
0
        janet_panic("invalid bytecode offset");
7350
0
    def->bytecode[pc] &= ~((uint32_t)0x80);
7351
0
}
7352
7353
/*
7354
 * Find a location for a breakpoint given a source file an
7355
 * location.
7356
 */
7357
void janet_debug_find(
7358
    JanetFuncDef **def_out, int32_t *pc_out,
7359
0
    const uint8_t *source, int32_t sourceLine, int32_t sourceColumn) {
7360
    /* Scan the heap for right func def */
7361
0
    JanetGCObject *current = janet_vm.blocks;
7362
    /* Keep track of the best source mapping we have seen so far */
7363
0
    int32_t besti = -1;
7364
0
    int32_t best_line = -1;
7365
0
    int32_t best_column = -1;
7366
0
    JanetFuncDef *best_def = NULL;
7367
0
    while (NULL != current) {
7368
0
        if ((current->flags & JANET_MEM_TYPEBITS) == JANET_MEMORY_FUNCDEF) {
7369
0
            JanetFuncDef *def = (JanetFuncDef *)(current);
7370
0
            if (def->sourcemap &&
7371
0
                    def->source &&
7372
0
                    !janet_string_compare(source, def->source)) {
7373
                /* Correct source file, check mappings. The chosen
7374
                 * pc index is the instruction closest to the given line column, but
7375
                 * not after. */
7376
0
                int32_t i;
7377
0
                for (i = 0; i < def->bytecode_length; i++) {
7378
0
                    int32_t line = def->sourcemap[i].line;
7379
0
                    int32_t column = def->sourcemap[i].column;
7380
0
                    if (line <= sourceLine && line >= best_line) {
7381
0
                        if (column <= sourceColumn &&
7382
0
                                (line > best_line || column > best_column)) {
7383
0
                            best_line = line;
7384
0
                            best_column = column;
7385
0
                            besti = i;
7386
0
                            best_def = def;
7387
0
                        }
7388
0
                    }
7389
0
                }
7390
0
            }
7391
0
        }
7392
0
        current = current->data.next;
7393
0
    }
7394
0
    if (best_def) {
7395
0
        *def_out = best_def;
7396
0
        *pc_out = besti;
7397
0
    } else {
7398
0
        janet_panic("could not find breakpoint");
7399
0
    }
7400
0
}
7401
7402
0
void janet_stacktrace(JanetFiber *fiber, Janet err) {
7403
0
    const char *prefix = janet_checktype(err, JANET_NIL) ? NULL : "";
7404
0
    janet_stacktrace_ext(fiber, err, prefix);
7405
0
}
7406
7407
/* Error reporting. This can be emulated from within Janet, but for
7408
 * consitency with the top level code it is defined once. */
7409
0
void janet_stacktrace_ext(JanetFiber *fiber, Janet err, const char *prefix) {
7410
7411
0
    int32_t fi;
7412
0
    const char *errstr = (const char *)janet_to_string(err);
7413
0
    JanetFiber **fibers = NULL;
7414
0
    int wrote_error = !prefix;
7415
7416
0
    int print_color = janet_truthy(janet_dyn("err-color"));
7417
0
    if (print_color) janet_eprintf("\x1b[31m");
7418
7419
0
    while (fiber) {
7420
0
        janet_v_push(fibers, fiber);
7421
0
        fiber = fiber->child;
7422
0
    }
7423
7424
0
    for (fi = janet_v_count(fibers) - 1; fi >= 0; fi--) {
7425
0
        fiber = fibers[fi];
7426
0
        int32_t i = fiber->frame;
7427
0
        while (i > 0) {
7428
0
            JanetCFunRegistry *reg = NULL;
7429
0
            JanetStackFrame *frame = (JanetStackFrame *)(fiber->data + i - JANET_FRAME_SIZE);
7430
0
            JanetFuncDef *def = NULL;
7431
0
            i = frame->prevframe;
7432
7433
            /* Print prelude to stack frame */
7434
0
            if (!wrote_error) {
7435
0
                JanetFiberStatus status = janet_fiber_status(fiber);
7436
0
                janet_eprintf("%s%s: %s\n",
7437
0
                              prefix ? prefix : "",
7438
0
                              janet_status_names[status],
7439
0
                              errstr ? errstr : janet_status_names[status]);
7440
0
                wrote_error = 1;
7441
0
            }
7442
7443
0
            janet_eprintf("  in");
7444
7445
0
            if (frame->func) {
7446
0
                def = frame->func->def;
7447
0
                janet_eprintf(" %s", def->name ? (const char *)def->name : "<anonymous>");
7448
0
                if (def->source) {
7449
0
                    janet_eprintf(" [%s]", (const char *)def->source);
7450
0
                }
7451
0
            } else {
7452
0
                JanetCFunction cfun = (JanetCFunction)(frame->pc);
7453
0
                if (cfun) {
7454
0
                    reg = janet_registry_get(cfun);
7455
0
                    if (NULL != reg && NULL != reg->name) {
7456
0
                        if (reg->name_prefix) {
7457
0
                            janet_eprintf(" %s/%s", reg->name_prefix, reg->name);
7458
0
                        } else {
7459
0
                            janet_eprintf(" %s", reg->name);
7460
0
                        }
7461
0
                        if (NULL != reg->source_file) {
7462
0
                            janet_eprintf(" [%s]", reg->source_file);
7463
0
                        }
7464
0
                    } else {
7465
0
                        janet_eprintf(" <cfunction>");
7466
0
                    }
7467
0
                }
7468
0
            }
7469
0
            if (frame->flags & JANET_STACKFRAME_TAILCALL)
7470
0
                janet_eprintf(" (tailcall)");
7471
0
            if (frame->func && frame->pc) {
7472
0
                int32_t off = (int32_t)(frame->pc - def->bytecode);
7473
0
                if (def->sourcemap) {
7474
0
                    JanetSourceMapping mapping = def->sourcemap[off];
7475
0
                    janet_eprintf(" on line %d, column %d", mapping.line, mapping.column);
7476
0
                } else {
7477
0
                    janet_eprintf(" pc=%d", off);
7478
0
                }
7479
0
            } else if (NULL != reg) {
7480
                /* C Function */
7481
0
                if (reg->source_line > 0) {
7482
0
                    janet_eprintf(" on line %d", (long) reg->source_line);
7483
0
                }
7484
0
            }
7485
0
            janet_eprintf("\n");
7486
0
        }
7487
0
    }
7488
7489
0
    if (print_color) janet_eprintf("\x1b[0m");
7490
7491
0
    janet_v_free(fibers);
7492
0
}
7493
7494
/*
7495
 * CFuns
7496
 */
7497
7498
/* Helper to find funcdef and bytecode offset to insert or remove breakpoints.
7499
 * Takes a source file name and byte offset. */
7500
0
static void helper_find(int32_t argc, Janet *argv, JanetFuncDef **def, int32_t *bytecode_offset) {
7501
0
    janet_fixarity(argc, 3);
7502
0
    const uint8_t *source = janet_getstring(argv, 0);
7503
0
    int32_t line = janet_getinteger(argv, 1);
7504
0
    int32_t col = janet_getinteger(argv, 2);
7505
0
    janet_debug_find(def, bytecode_offset, source, line, col);
7506
0
}
7507
7508
/* Helper to find funcdef and bytecode offset to insert or remove breakpoints.
7509
 * Takes a function and byte offset*/
7510
0
static void helper_find_fun(int32_t argc, Janet *argv, JanetFuncDef **def, int32_t *bytecode_offset) {
7511
0
    janet_arity(argc, 1, 2);
7512
0
    JanetFunction *func = janet_getfunction(argv, 0);
7513
0
    int32_t offset = (argc == 2) ? janet_getinteger(argv, 1) : 0;
7514
0
    *def = func->def;
7515
0
    *bytecode_offset = offset;
7516
0
}
7517
7518
JANET_CORE_FN(cfun_debug_break,
7519
              "(debug/break source line col)",
7520
              "Sets a breakpoint in `source` at a given line and column. "
7521
              "Will throw an error if the breakpoint location "
7522
              "cannot be found. For example\n\n"
7523
              "\t(debug/break \"core.janet\" 10 4)\n\n"
7524
0
              "will set a breakpoint at line 10, 4th column of the file core.janet.") {
7525
0
    JanetFuncDef *def;
7526
0
    int32_t offset;
7527
0
    helper_find(argc, argv, &def, &offset);
7528
0
    janet_debug_break(def, offset);
7529
0
    return janet_wrap_nil();
7530
0
}
7531
7532
JANET_CORE_FN(cfun_debug_unbreak,
7533
              "(debug/unbreak source line column)",
7534
              "Remove a breakpoint with a source key at a given line and column. "
7535
              "Will throw an error if the breakpoint "
7536
0
              "cannot be found.") {
7537
0
    JanetFuncDef *def;
7538
0
    int32_t offset = 0;
7539
0
    helper_find(argc, argv, &def, &offset);
7540
0
    janet_debug_unbreak(def, offset);
7541
0
    return janet_wrap_nil();
7542
0
}
7543
7544
JANET_CORE_FN(cfun_debug_fbreak,
7545
              "(debug/fbreak fun &opt pc)",
7546
              "Set a breakpoint in a given function. pc is an optional offset, which "
7547
              "is in bytecode instructions. fun is a function value. Will throw an error "
7548
0
              "if the offset is too large or negative.") {
7549
0
    JanetFuncDef *def;
7550
0
    int32_t offset = 0;
7551
0
    helper_find_fun(argc, argv, &def, &offset);
7552
0
    janet_debug_break(def, offset);
7553
0
    return janet_wrap_nil();
7554
0
}
7555
7556
JANET_CORE_FN(cfun_debug_unfbreak,
7557
              "(debug/unfbreak fun &opt pc)",
7558
0
              "Unset a breakpoint set with debug/fbreak.") {
7559
0
    JanetFuncDef *def;
7560
0
    int32_t offset;
7561
0
    helper_find_fun(argc, argv, &def, &offset);
7562
0
    janet_debug_unbreak(def, offset);
7563
0
    return janet_wrap_nil();
7564
0
}
7565
7566
JANET_CORE_FN(cfun_debug_lineage,
7567
              "(debug/lineage fib)",
7568
              "Returns an array of all child fibers from a root fiber. This function "
7569
              "is useful when a fiber signals or errors to an ancestor fiber. Using this function, "
7570
              "the fiber handling the error can see which fiber raised the signal. This function should "
7571
0
              "be used mostly for debugging purposes.") {
7572
0
    janet_fixarity(argc, 1);
7573
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
7574
0
    JanetArray *array = janet_array(0);
7575
0
    while (fiber) {
7576
0
        janet_array_push(array, janet_wrap_fiber(fiber));
7577
0
        fiber = fiber->child;
7578
0
    }
7579
0
    return janet_wrap_array(array);
7580
0
}
7581
7582
/* Extract info from one stack frame */
7583
0
static Janet doframe(JanetStackFrame *frame) {
7584
0
    int32_t off;
7585
0
    JanetTable *t = janet_table(3);
7586
0
    JanetFuncDef *def = NULL;
7587
0
    if (frame->func) {
7588
0
        janet_table_put(t, janet_ckeywordv("function"), janet_wrap_function(frame->func));
7589
0
        def = frame->func->def;
7590
0
        if (def->name) {
7591
0
            janet_table_put(t, janet_ckeywordv("name"), janet_wrap_string(def->name));
7592
0
        }
7593
0
    } else {
7594
0
        JanetCFunction cfun = (JanetCFunction)(frame->pc);
7595
0
        if (cfun) {
7596
0
            JanetCFunRegistry *reg = janet_registry_get(cfun);
7597
0
            if (NULL != reg->name) {
7598
0
                if (NULL != reg->name_prefix) {
7599
0
                    janet_table_put(t, janet_ckeywordv("name"), janet_wrap_string(janet_formatc("%s/%s", reg->name_prefix, reg->name)));
7600
0
                } else {
7601
0
                    janet_table_put(t, janet_ckeywordv("name"), janet_cstringv(reg->name));
7602
0
                }
7603
0
                if (NULL != reg->source_file) {
7604
0
                    janet_table_put(t, janet_ckeywordv("source"), janet_cstringv(reg->source_file));
7605
0
                }
7606
0
                if (reg->source_line > 0) {
7607
0
                    janet_table_put(t, janet_ckeywordv("source-line"), janet_wrap_integer(reg->source_line));
7608
0
                    janet_table_put(t, janet_ckeywordv("source-column"), janet_wrap_integer(1));
7609
0
                }
7610
0
            }
7611
0
        }
7612
0
        janet_table_put(t, janet_ckeywordv("c"), janet_wrap_true());
7613
0
    }
7614
0
    if (frame->flags & JANET_STACKFRAME_TAILCALL) {
7615
0
        janet_table_put(t, janet_ckeywordv("tail"), janet_wrap_true());
7616
0
    }
7617
0
    if (frame->func && frame->pc) {
7618
0
        Janet *stack = (Janet *)frame + JANET_FRAME_SIZE;
7619
0
        JanetArray *slots;
7620
0
        janet_assert(def != NULL, "def != NULL");
7621
0
        off = (int32_t)(frame->pc - def->bytecode);
7622
0
        janet_table_put(t, janet_ckeywordv("pc"), janet_wrap_integer(off));
7623
0
        if (def->sourcemap) {
7624
0
            JanetSourceMapping mapping = def->sourcemap[off];
7625
0
            janet_table_put(t, janet_ckeywordv("source-line"), janet_wrap_integer(mapping.line));
7626
0
            janet_table_put(t, janet_ckeywordv("source-column"), janet_wrap_integer(mapping.column));
7627
0
        }
7628
0
        if (def->source) {
7629
0
            janet_table_put(t, janet_ckeywordv("source"), janet_wrap_string(def->source));
7630
0
        }
7631
        /* Add stack arguments */
7632
0
        slots = janet_array(def->slotcount);
7633
0
        safe_memcpy(slots->data, stack, sizeof(Janet) * def->slotcount);
7634
0
        slots->count = def->slotcount;
7635
0
        janet_table_put(t, janet_ckeywordv("slots"), janet_wrap_array(slots));
7636
        /* Add local bindings */
7637
0
        if (def->symbolmap) {
7638
0
            JanetTable *local_bindings = janet_table(0);
7639
0
            for (int32_t i = def->symbolmap_length - 1; i >= 0; i--) {
7640
0
                JanetSymbolMap jsm = def->symbolmap[i];
7641
0
                Janet value = janet_wrap_nil();
7642
0
                uint32_t pc = (uint32_t)(frame->pc - def->bytecode);
7643
0
                if (jsm.birth_pc == UINT32_MAX) {
7644
0
                    JanetFuncEnv *env = frame->func->envs[jsm.death_pc];
7645
0
                    if (env->offset > 0) {
7646
0
                        value = env->as.fiber->data[env->offset + jsm.slot_index];
7647
0
                    } else {
7648
0
                        value = env->as.values[jsm.slot_index];
7649
0
                    }
7650
0
                } else if (pc >= jsm.birth_pc && pc < jsm.death_pc) {
7651
0
                    value = stack[jsm.slot_index];
7652
0
                }
7653
0
                janet_table_put(local_bindings, janet_wrap_symbol(jsm.symbol), value);
7654
0
            }
7655
0
            janet_table_put(t, janet_ckeywordv("locals"), janet_wrap_table(local_bindings));
7656
0
        }
7657
0
    }
7658
0
    return janet_wrap_table(t);
7659
0
}
7660
7661
JANET_CORE_FN(cfun_debug_stack,
7662
              "(debug/stack fib)",
7663
              "Gets information about the stack as an array of tables. Each table "
7664
              "in the array contains information about a stack frame. The top-most, current "
7665
              "stack frame is the first table in the array, and the bottom-most stack frame "
7666
              "is the last value. Each stack frame contains some of the following attributes:\n\n"
7667
              "* :c - true if the stack frame is a c function invocation\n\n"
7668
              "* :source-column - the current source column of the stack frame\n\n"
7669
              "* :function - the function that the stack frame represents\n\n"
7670
              "* :source-line - the current source line of the stack frame\n\n"
7671
              "* :name - the human-friendly name of the function\n\n"
7672
              "* :pc - integer indicating the location of the program counter\n\n"
7673
              "* :source - string with the file path or other identifier for the source code\n\n"
7674
              "* :slots - array of all values in each slot\n\n"
7675
0
              "* :tail - boolean indicating a tail call") {
7676
0
    janet_fixarity(argc, 1);
7677
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
7678
0
    JanetArray *array = janet_array(0);
7679
0
    {
7680
0
        int32_t i = fiber->frame;
7681
0
        JanetStackFrame *frame;
7682
0
        while (i > 0) {
7683
0
            frame = (JanetStackFrame *)(fiber->data + i - JANET_FRAME_SIZE);
7684
0
            janet_array_push(array, doframe(frame));
7685
0
            i = frame->prevframe;
7686
0
        }
7687
0
    }
7688
0
    return janet_wrap_array(array);
7689
0
}
7690
7691
JANET_CORE_FN(cfun_debug_stacktrace,
7692
              "(debug/stacktrace fiber &opt err prefix)",
7693
              "Prints a nice looking stacktrace for a fiber. Can optionally provide "
7694
              "an error value to print the stack trace with. If `err` is nil or not "
7695
0
              "provided, and no prefix is given, will skip the error line. Returns the fiber.") {
7696
0
    janet_arity(argc, 1, 3);
7697
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
7698
0
    Janet x = argc == 1 ? janet_wrap_nil() : argv[1];
7699
0
    const char *prefix = janet_optcstring(argv, argc, 2, NULL);
7700
0
    janet_stacktrace_ext(fiber, x, prefix);
7701
0
    return argv[0];
7702
0
}
7703
7704
JANET_CORE_FN(cfun_debug_argstack,
7705
              "(debug/arg-stack fiber)",
7706
              "Gets all values currently on the fiber's argument stack. Normally, "
7707
              "this should be empty unless the fiber signals while pushing arguments "
7708
0
              "to make a function call. Returns a new array.") {
7709
0
    janet_fixarity(argc, 1);
7710
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
7711
0
    JanetArray *array = janet_array(fiber->stacktop - fiber->stackstart);
7712
0
    memcpy(array->data, fiber->data + fiber->stackstart, array->capacity * sizeof(Janet));
7713
0
    array->count = array->capacity;
7714
0
    return janet_wrap_array(array);
7715
0
}
7716
7717
JANET_CORE_FN(cfun_debug_step,
7718
              "(debug/step fiber &opt x)",
7719
              "Run a fiber for one virtual instruction of the Janet machine. Can optionally "
7720
              "pass in a value that will be passed as the resuming value. Returns the signal value, "
7721
0
              "which will usually be nil, as breakpoints raise nil signals.") {
7722
0
    janet_arity(argc, 1, 2);
7723
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
7724
0
    Janet out = janet_wrap_nil();
7725
0
    janet_step(fiber, argc == 1 ? janet_wrap_nil() : argv[1], &out);
7726
0
    return out;
7727
0
}
7728
7729
/* Module entry point */
7730
0
void janet_lib_debug(JanetTable *env) {
7731
0
    JanetRegExt debug_cfuns[] = {
7732
0
        JANET_CORE_REG("debug/break", cfun_debug_break),
7733
0
        JANET_CORE_REG("debug/unbreak", cfun_debug_unbreak),
7734
0
        JANET_CORE_REG("debug/fbreak", cfun_debug_fbreak),
7735
0
        JANET_CORE_REG("debug/unfbreak", cfun_debug_unfbreak),
7736
0
        JANET_CORE_REG("debug/arg-stack", cfun_debug_argstack),
7737
0
        JANET_CORE_REG("debug/stack", cfun_debug_stack),
7738
0
        JANET_CORE_REG("debug/stacktrace", cfun_debug_stacktrace),
7739
0
        JANET_CORE_REG("debug/lineage", cfun_debug_lineage),
7740
0
        JANET_CORE_REG("debug/step", cfun_debug_step),
7741
0
        JANET_REG_END
7742
0
    };
7743
0
    janet_core_cfuns_ext(env, NULL, debug_cfuns);
7744
0
}
7745
7746
7747
/* src/core/emit.c */
7748
#line 0 "src/core/emit.c"
7749
7750
/*
7751
* Copyright (c) 2023 Calvin Rose
7752
*
7753
* Permission is hereby granted, free of charge, to any person obtaining a copy
7754
* of this software and associated documentation files (the "Software"), to
7755
* deal in the Software without restriction, including without limitation the
7756
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7757
* sell copies of the Software, and to permit persons to whom the Software is
7758
* furnished to do so, subject to the following conditions:
7759
*
7760
* The above copyright notice and this permission notice shall be included in
7761
* all copies or substantial portions of the Software.
7762
*
7763
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
7764
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
7765
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
7766
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
7767
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
7768
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
7769
* IN THE SOFTWARE.
7770
*/
7771
7772
#ifndef JANET_AMALG
7773
#include "features.h"
7774
#include <janet.h>
7775
#include "emit.h"
7776
#include "vector.h"
7777
#include "regalloc.h"
7778
#endif
7779
7780
/* Get a register */
7781
0
int32_t janetc_allocfar(JanetCompiler *c) {
7782
0
    int32_t reg = janetc_regalloc_1(&c->scope->ra);
7783
0
    if (reg > 0xFFFF) {
7784
0
        janetc_cerror(c, "ran out of internal registers");
7785
0
    }
7786
0
    return reg;
7787
0
}
7788
7789
/* Get a register less than 256 for temporary use. */
7790
0
int32_t janetc_allocnear(JanetCompiler *c, JanetcRegisterTemp tag) {
7791
0
    return janetc_regalloc_temp(&c->scope->ra, tag);
7792
0
}
7793
7794
/* Emit a raw instruction with source mapping. */
7795
0
void janetc_emit(JanetCompiler *c, uint32_t instr) {
7796
0
    janet_v_push(c->buffer, instr);
7797
0
    janet_v_push(c->mapbuffer, c->current_mapping);
7798
0
}
7799
7800
/* Add a constant to the current scope. Return the index of the constant. */
7801
0
static int32_t janetc_const(JanetCompiler *c, Janet x) {
7802
0
    JanetScope *scope = c->scope;
7803
0
    int32_t i, len;
7804
    /* Get the topmost function scope */
7805
0
    while (scope) {
7806
0
        if (scope->flags & JANET_SCOPE_FUNCTION)
7807
0
            break;
7808
0
        scope = scope->parent;
7809
0
    }
7810
    /* Check if already added */
7811
0
    len = janet_v_count(scope->consts);
7812
0
    for (i = 0; i < len; i++) {
7813
0
        if (janet_equals(x, scope->consts[i]))
7814
0
            return i;
7815
0
    }
7816
    /* Ensure not too many constants. */
7817
0
    if (len >= 0xFFFF) {
7818
0
        janetc_cerror(c, "too many constants");
7819
0
        return 0;
7820
0
    }
7821
0
    janet_v_push(scope->consts, x);
7822
0
    return len;
7823
0
}
7824
7825
/* Load a constant into a local register */
7826
0
static void janetc_loadconst(JanetCompiler *c, Janet k, int32_t reg) {
7827
0
    switch (janet_type(k)) {
7828
0
        case JANET_NIL:
7829
0
            janetc_emit(c, (reg << 8) | JOP_LOAD_NIL);
7830
0
            break;
7831
0
        case JANET_BOOLEAN:
7832
0
            janetc_emit(c, (reg << 8) |
7833
0
                        (janet_unwrap_boolean(k) ? JOP_LOAD_TRUE : JOP_LOAD_FALSE));
7834
0
            break;
7835
0
        case JANET_NUMBER: {
7836
0
            double dval = janet_unwrap_number(k);
7837
0
            if (dval < INT16_MIN || dval > INT16_MAX)
7838
0
                goto do_constant;
7839
0
            int32_t i = (int32_t) dval;
7840
0
            if (dval != i)
7841
0
                goto do_constant;
7842
0
            uint32_t iu = (uint32_t)i;
7843
0
            janetc_emit(c,
7844
0
                        (iu << 16) |
7845
0
                        (reg << 8) |
7846
0
                        JOP_LOAD_INTEGER);
7847
0
            break;
7848
0
        }
7849
0
        default:
7850
0
        do_constant: {
7851
0
                int32_t cindex = janetc_const(c, k);
7852
0
                janetc_emit(c,
7853
0
                            (cindex << 16) |
7854
0
                            (reg << 8) |
7855
0
                            JOP_LOAD_CONSTANT);
7856
0
                break;
7857
0
            }
7858
0
    }
7859
0
}
7860
7861
/* Move a slot to a near register */
7862
static void janetc_movenear(JanetCompiler *c,
7863
                            int32_t dest,
7864
0
                            JanetSlot src) {
7865
0
    if (src.flags & (JANET_SLOT_CONSTANT | JANET_SLOT_REF)) {
7866
0
        janetc_loadconst(c, src.constant, dest);
7867
        /* If we also are a reference, deref the one element array */
7868
0
        if (src.flags & JANET_SLOT_REF) {
7869
0
            janetc_emit(c,
7870
0
                        (dest << 16) |
7871
0
                        (dest << 8) |
7872
0
                        JOP_GET_INDEX);
7873
0
        }
7874
0
    } else if (src.envindex >= 0) {
7875
0
        janetc_emit(c,
7876
0
                    ((uint32_t)(src.index) << 24) |
7877
0
                    ((uint32_t)(src.envindex) << 16) |
7878
0
                    ((uint32_t)(dest) << 8) |
7879
0
                    JOP_LOAD_UPVALUE);
7880
0
    } else if (src.index > 0xFF || src.index != dest) {
7881
0
        janetc_emit(c,
7882
0
                    ((uint32_t)(src.index) << 16) |
7883
0
                    ((uint32_t)(dest) << 8) |
7884
0
                    JOP_MOVE_NEAR);
7885
0
    }
7886
0
}
7887
7888
/* Move a near register to a Slot. */
7889
static void janetc_moveback(JanetCompiler *c,
7890
                            JanetSlot dest,
7891
0
                            int32_t src) {
7892
0
    if (dest.flags & JANET_SLOT_REF) {
7893
0
        int32_t refreg = janetc_regalloc_temp(&c->scope->ra, JANETC_REGTEMP_5);
7894
0
        janetc_loadconst(c, dest.constant, refreg);
7895
0
        janetc_emit(c,
7896
0
                    (src << 16) |
7897
0
                    (refreg << 8) |
7898
0
                    JOP_PUT_INDEX);
7899
0
        janetc_regalloc_freetemp(&c->scope->ra, refreg, JANETC_REGTEMP_5);
7900
0
    } else if (dest.envindex >= 0) {
7901
0
        janetc_emit(c,
7902
0
                    ((uint32_t)(dest.index) << 24) |
7903
0
                    ((uint32_t)(dest.envindex) << 16) |
7904
0
                    ((uint32_t)(src) << 8) |
7905
0
                    JOP_SET_UPVALUE);
7906
0
    } else if (dest.index != src) {
7907
0
        janetc_emit(c,
7908
0
                    ((uint32_t)(dest.index) << 16) |
7909
0
                    ((uint32_t)(src) << 8) |
7910
0
                    JOP_MOVE_FAR);
7911
0
    }
7912
0
}
7913
7914
/* Call this to release a register after emitting the instruction. */
7915
0
static void janetc_free_regnear(JanetCompiler *c, JanetSlot s, int32_t reg, JanetcRegisterTemp tag) {
7916
0
    if (reg != s.index ||
7917
0
            s.envindex >= 0 ||
7918
0
            s.flags & (JANET_SLOT_CONSTANT | JANET_SLOT_REF)) {
7919
        /* We need to free the temporary slot */
7920
0
        janetc_regalloc_freetemp(&c->scope->ra, reg, tag);
7921
0
    }
7922
0
}
7923
7924
/* Convert a slot to a two byte register */
7925
0
static int32_t janetc_regfar(JanetCompiler *c, JanetSlot s, JanetcRegisterTemp tag) {
7926
    /* check if already near register */
7927
0
    if (s.envindex < 0 && s.index >= 0) {
7928
0
        return s.index;
7929
0
    }
7930
0
    int32_t reg;
7931
0
    int32_t nearreg = janetc_regalloc_temp(&c->scope->ra, tag);
7932
0
    janetc_movenear(c, nearreg, s);
7933
0
    if (nearreg >= 0xF0) {
7934
0
        reg = janetc_allocfar(c);
7935
0
        janetc_emit(c, JOP_MOVE_FAR | (nearreg << 8) | (reg << 16));
7936
0
        janetc_regalloc_freetemp(&c->scope->ra, nearreg, tag);
7937
0
    } else {
7938
0
        reg = nearreg;
7939
0
        janetc_regalloc_freetemp(&c->scope->ra, nearreg, tag);
7940
0
        janetc_regalloc_touch(&c->scope->ra, reg);
7941
0
    }
7942
0
    return reg;
7943
0
}
7944
7945
/* Convert a slot to a temporary 1 byte register */
7946
0
static int32_t janetc_regnear(JanetCompiler *c, JanetSlot s, JanetcRegisterTemp tag) {
7947
    /* check if already near register */
7948
0
    if (s.envindex < 0 && s.index >= 0 && s.index <= 0xFF) {
7949
0
        return s.index;
7950
0
    }
7951
0
    int32_t reg = janetc_regalloc_temp(&c->scope->ra, tag);
7952
0
    janetc_movenear(c, reg, s);
7953
0
    return reg;
7954
0
}
7955
7956
/* Check if two slots are equal */
7957
0
int janetc_sequal(JanetSlot lhs, JanetSlot rhs) {
7958
0
    if ((lhs.flags & ~JANET_SLOTTYPE_ANY) == (rhs.flags & ~JANET_SLOTTYPE_ANY) &&
7959
0
            lhs.index == rhs.index &&
7960
0
            lhs.envindex == rhs.envindex) {
7961
0
        if (lhs.flags & (JANET_SLOT_REF | JANET_SLOT_CONSTANT)) {
7962
0
            return janet_equals(lhs.constant, rhs.constant);
7963
0
        } else {
7964
0
            return 1;
7965
0
        }
7966
0
    }
7967
0
    return 0;
7968
0
}
7969
7970
/* Move values from one slot to another. The destination must
7971
 * be writeable (not a literal). */
7972
void janetc_copy(
7973
    JanetCompiler *c,
7974
    JanetSlot dest,
7975
0
    JanetSlot src) {
7976
0
    if (dest.flags & JANET_SLOT_CONSTANT) {
7977
0
        janetc_cerror(c, "cannot write to constant");
7978
0
        return;
7979
0
    }
7980
0
    if (janetc_sequal(dest, src)) return;
7981
    /* If dest is a near register */
7982
0
    if (dest.envindex < 0 && dest.index >= 0 && dest.index <= 0xFF) {
7983
0
        janetc_movenear(c, dest.index, src);
7984
0
        return;
7985
0
    }
7986
    /* If src is a near register */
7987
0
    if (src.envindex < 0 && src.index >= 0 && src.index <= 0xFF) {
7988
0
        janetc_moveback(c, dest, src.index);
7989
0
        return;
7990
0
    }
7991
    /* Process: src -> near -> dest */
7992
0
    int32_t nearreg = janetc_allocnear(c, JANETC_REGTEMP_3);
7993
0
    janetc_movenear(c, nearreg, src);
7994
0
    janetc_moveback(c, dest, nearreg);
7995
    /* Cleanup */
7996
0
    janetc_regalloc_freetemp(&c->scope->ra, nearreg, JANETC_REGTEMP_3);
7997
0
}
7998
7999
/* Instruction templated emitters */
8000
8001
0
static int32_t emit1s(JanetCompiler *c, uint8_t op, JanetSlot s, int32_t rest, int wr) {
8002
0
    int32_t reg = janetc_regnear(c, s, JANETC_REGTEMP_0);
8003
0
    int32_t label = janet_v_count(c->buffer);
8004
0
    janetc_emit(c, op | (reg << 8) | ((uint32_t)rest << 16));
8005
0
    if (wr)
8006
0
        janetc_moveback(c, s, reg);
8007
0
    janetc_free_regnear(c, s, reg, JANETC_REGTEMP_0);
8008
0
    return label;
8009
0
}
8010
8011
0
int32_t janetc_emit_s(JanetCompiler *c, uint8_t op, JanetSlot s, int wr) {
8012
0
    int32_t reg = janetc_regfar(c, s, JANETC_REGTEMP_0);
8013
0
    int32_t label = janet_v_count(c->buffer);
8014
0
    janetc_emit(c, op | (reg << 8));
8015
0
    if (wr)
8016
0
        janetc_moveback(c, s, reg);
8017
0
    janetc_free_regnear(c, s, reg, JANETC_REGTEMP_0);
8018
0
    return label;
8019
0
}
8020
8021
0
int32_t janetc_emit_sl(JanetCompiler *c, uint8_t op, JanetSlot s, int32_t label) {
8022
0
    int32_t current = janet_v_count(c->buffer) - 1;
8023
0
    int32_t jump = label - current;
8024
0
    if (jump < INT16_MIN || jump > INT16_MAX) {
8025
0
        janetc_cerror(c, "jump is too far");
8026
0
    }
8027
0
    return emit1s(c, op, s, jump, 0);
8028
0
}
8029
8030
0
int32_t janetc_emit_st(JanetCompiler *c, uint8_t op, JanetSlot s, int32_t tflags) {
8031
0
    return emit1s(c, op, s, tflags, 0);
8032
0
}
8033
8034
0
int32_t janetc_emit_si(JanetCompiler *c, uint8_t op, JanetSlot s, int16_t immediate, int wr) {
8035
0
    return emit1s(c, op, s, immediate, wr);
8036
0
}
8037
8038
0
int32_t janetc_emit_su(JanetCompiler *c, uint8_t op, JanetSlot s, uint16_t immediate, int wr) {
8039
0
    return emit1s(c, op, s, (int32_t) immediate, wr);
8040
0
}
8041
8042
0
static int32_t emit2s(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2, int32_t rest, int wr) {
8043
0
    int32_t reg1 = janetc_regnear(c, s1, JANETC_REGTEMP_0);
8044
0
    int32_t reg2 = janetc_regnear(c, s2, JANETC_REGTEMP_1);
8045
0
    int32_t label = janet_v_count(c->buffer);
8046
0
    janetc_emit(c, op | (reg1 << 8) | (reg2 << 16) | ((uint32_t)rest << 24));
8047
0
    janetc_free_regnear(c, s2, reg2, JANETC_REGTEMP_1);
8048
0
    if (wr)
8049
0
        janetc_moveback(c, s1, reg1);
8050
0
    janetc_free_regnear(c, s1, reg1, JANETC_REGTEMP_0);
8051
0
    return label;
8052
0
}
8053
8054
0
int32_t janetc_emit_ss(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2, int wr) {
8055
0
    int32_t reg1 = janetc_regnear(c, s1, JANETC_REGTEMP_0);
8056
0
    int32_t reg2 = janetc_regfar(c, s2, JANETC_REGTEMP_1);
8057
0
    int32_t label = janet_v_count(c->buffer);
8058
0
    janetc_emit(c, op | (reg1 << 8) | (reg2 << 16));
8059
0
    janetc_free_regnear(c, s2, reg2, JANETC_REGTEMP_1);
8060
0
    if (wr)
8061
0
        janetc_moveback(c, s1, reg1);
8062
0
    janetc_free_regnear(c, s1, reg1, JANETC_REGTEMP_0);
8063
0
    return label;
8064
0
}
8065
8066
0
int32_t janetc_emit_ssi(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2, int8_t immediate, int wr) {
8067
0
    return emit2s(c, op, s1, s2, immediate, wr);
8068
0
}
8069
8070
0
int32_t janetc_emit_ssu(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2, uint8_t immediate, int wr) {
8071
0
    return emit2s(c, op, s1, s2, (int32_t) immediate, wr);
8072
0
}
8073
8074
0
int32_t janetc_emit_sss(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2, JanetSlot s3, int wr) {
8075
0
    int32_t reg1 = janetc_regnear(c, s1, JANETC_REGTEMP_0);
8076
0
    int32_t reg2 = janetc_regnear(c, s2, JANETC_REGTEMP_1);
8077
0
    int32_t reg3 = janetc_regnear(c, s3, JANETC_REGTEMP_2);
8078
0
    int32_t label = janet_v_count(c->buffer);
8079
0
    janetc_emit(c, op | (reg1 << 8) | (reg2 << 16) | ((uint32_t)reg3 << 24));
8080
0
    janetc_free_regnear(c, s2, reg2, JANETC_REGTEMP_1);
8081
0
    janetc_free_regnear(c, s3, reg3, JANETC_REGTEMP_2);
8082
0
    if (wr)
8083
0
        janetc_moveback(c, s1, reg1);
8084
0
    janetc_free_regnear(c, s1, reg1, JANETC_REGTEMP_0);
8085
0
    return label;
8086
0
}
8087
8088
8089
/* src/core/ev.c */
8090
#line 0 "src/core/ev.c"
8091
8092
/*
8093
* Copyright (c) 2023 Calvin Rose
8094
*
8095
* Permission is hereby granted, free of charge, to any person obtaining a copy
8096
* of this software and associated documentation files (the "Software"), to
8097
* deal in the Software without restriction, including without limitation the
8098
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
8099
* sell copies of the Software, and to permit persons to whom the Software is
8100
* furnished to do so, subject to the following conditions:
8101
*
8102
* The above copyright notice and this permission notice shall be included in
8103
* all copies or substantial portions of the Software.
8104
*
8105
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
8106
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
8107
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
8108
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
8109
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
8110
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
8111
* IN THE SOFTWARE.
8112
*/
8113
8114
8115
#ifndef JANET_AMALG
8116
#include "features.h"
8117
#include <janet.h>
8118
#include "util.h"
8119
#include "gc.h"
8120
#include "state.h"
8121
#include "fiber.h"
8122
#endif
8123
8124
#ifdef JANET_EV
8125
8126
#include <math.h>
8127
#ifdef JANET_WINDOWS
8128
#include <winsock2.h>
8129
#include <windows.h>
8130
#else
8131
#include <pthread.h>
8132
#include <limits.h>
8133
#include <errno.h>
8134
#include <unistd.h>
8135
#include <signal.h>
8136
#include <sys/ioctl.h>
8137
#include <sys/types.h>
8138
#include <fcntl.h>
8139
#include <netinet/in.h>
8140
#include <netinet/tcp.h>
8141
#include <netdb.h>
8142
#include <sys/socket.h>
8143
#include <sys/wait.h>
8144
#ifdef JANET_EV_EPOLL
8145
#include <sys/epoll.h>
8146
#include <sys/timerfd.h>
8147
#endif
8148
#ifdef JANET_EV_KQUEUE
8149
#include <sys/event.h>
8150
#endif
8151
#endif
8152
8153
typedef struct {
8154
    JanetVM *thread;
8155
    JanetFiber *fiber;
8156
    uint32_t sched_id;
8157
    enum {
8158
        JANET_CP_MODE_READ,
8159
        JANET_CP_MODE_WRITE,
8160
        JANET_CP_MODE_CHOICE_READ,
8161
        JANET_CP_MODE_CHOICE_WRITE,
8162
        JANET_CP_MODE_CLOSE
8163
    } mode;
8164
} JanetChannelPending;
8165
8166
typedef struct {
8167
    JanetQueue items;
8168
    JanetQueue read_pending;
8169
    JanetQueue write_pending;
8170
    int32_t limit;
8171
    int closed;
8172
    int is_threaded;
8173
#ifdef JANET_WINDOWS
8174
    CRITICAL_SECTION lock;
8175
#else
8176
    pthread_mutex_t lock;
8177
#endif
8178
} JanetChannel;
8179
8180
typedef struct {
8181
    JanetFiber *fiber;
8182
    Janet value;
8183
    JanetSignal sig;
8184
    uint32_t expected_sched_id; /* If the fiber has been rescheduled this loop, don't run first scheduling. */
8185
} JanetTask;
8186
8187
/* Wrap return value by pairing it with the callback used to handle it
8188
 * in the main thread */
8189
typedef struct {
8190
    JanetEVGenericMessage msg;
8191
    JanetThreadedCallback cb;
8192
} JanetSelfPipeEvent;
8193
8194
/* Structure used to initialize threads in the thread pool
8195
 * (same head structure as self pipe event)*/
8196
typedef struct {
8197
    JanetEVGenericMessage msg;
8198
    JanetThreadedCallback cb;
8199
    JanetThreadedSubroutine subr;
8200
    JanetHandle write_pipe;
8201
} JanetEVThreadInit;
8202
8203
0
#define JANET_MAX_Q_CAPACITY 0x7FFFFFF
8204
8205
5.24k
static void janet_q_init(JanetQueue *q) {
8206
5.24k
    q->data = NULL;
8207
5.24k
    q->head = 0;
8208
5.24k
    q->tail = 0;
8209
5.24k
    q->capacity = 0;
8210
5.24k
}
8211
8212
5.24k
static void janet_q_deinit(JanetQueue *q) {
8213
5.24k
    janet_free(q->data);
8214
5.24k
}
8215
8216
0
static int32_t janet_q_count(JanetQueue *q) {
8217
0
    return (q->head > q->tail)
8218
0
           ? (q->tail + q->capacity - q->head)
8219
0
           : (q->tail - q->head);
8220
0
}
8221
8222
0
static int janet_q_push(JanetQueue *q, void *item, size_t itemsize) {
8223
0
    int32_t count = janet_q_count(q);
8224
    /* Resize if needed */
8225
0
    if (count + 1 >= q->capacity) {
8226
0
        if (count + 1 >= JANET_MAX_Q_CAPACITY) return 1;
8227
0
        int32_t newcap = (count + 2) * 2;
8228
0
        if (newcap > JANET_MAX_Q_CAPACITY) newcap = JANET_MAX_Q_CAPACITY;
8229
0
        q->data = janet_realloc(q->data, itemsize * newcap);
8230
0
        if (NULL == q->data) {
8231
0
            JANET_OUT_OF_MEMORY;
8232
0
        }
8233
0
        if (q->head > q->tail) {
8234
            /* Two segments, fix 2nd seg. */
8235
0
            int32_t newhead = q->head + (newcap - q->capacity);
8236
0
            size_t seg1 = (size_t)(q->capacity - q->head);
8237
0
            if (seg1 > 0) {
8238
0
                memmove((char *) q->data + (newhead * itemsize),
8239
0
                        (char *) q->data + (q->head * itemsize),
8240
0
                        seg1 * itemsize);
8241
0
            }
8242
0
            q->head = newhead;
8243
0
        }
8244
0
        q->capacity = newcap;
8245
0
    }
8246
0
    memcpy((char *) q->data + itemsize * q->tail, item, itemsize);
8247
0
    q->tail = q->tail + 1 < q->capacity ? q->tail + 1 : 0;
8248
0
    return 0;
8249
0
}
8250
8251
0
static int janet_q_pop(JanetQueue *q, void *out, size_t itemsize) {
8252
0
    if (q->head == q->tail) return 1;
8253
0
    memcpy(out, (char *) q->data + itemsize * q->head, itemsize);
8254
0
    q->head = q->head + 1 < q->capacity ? q->head + 1 : 0;
8255
0
    return 0;
8256
0
}
8257
8258
/* Forward declaration */
8259
static void janet_unlisten(JanetListenerState *state, int is_gc);
8260
8261
/* Get current timestamp (millisecond precision) */
8262
static JanetTimestamp ts_now(void);
8263
8264
/* Get current timestamp + an interval (millisecond precision) */
8265
0
static JanetTimestamp ts_delta(JanetTimestamp ts, double delta) {
8266
0
    if (isinf(delta)) {
8267
0
        return delta < 0 ? ts : INT64_MAX;
8268
0
    }
8269
0
    ts += (int64_t)round(delta * 1000);
8270
0
    return ts;
8271
0
}
8272
8273
/* Look at the next timeout value without
8274
 * removing it. */
8275
0
static int peek_timeout(JanetTimeout *out) {
8276
0
    if (janet_vm.tq_count == 0) return 0;
8277
0
    *out = janet_vm.tq[0];
8278
0
    return 1;
8279
0
}
8280
8281
/* Remove the next timeout from the priority queue */
8282
0
static void pop_timeout(size_t index) {
8283
0
    if (janet_vm.tq_count <= index) return;
8284
0
    janet_vm.tq[index] = janet_vm.tq[--janet_vm.tq_count];
8285
0
    for (;;) {
8286
0
        size_t left = (index << 1) + 1;
8287
0
        size_t right = left + 1;
8288
0
        size_t smallest = index;
8289
0
        if (left < janet_vm.tq_count &&
8290
0
                (janet_vm.tq[left].when < janet_vm.tq[smallest].when))
8291
0
            smallest = left;
8292
0
        if (right < janet_vm.tq_count &&
8293
0
                (janet_vm.tq[right].when < janet_vm.tq[smallest].when))
8294
0
            smallest = right;
8295
0
        if (smallest == index) return;
8296
0
        JanetTimeout temp = janet_vm.tq[index];
8297
0
        janet_vm.tq[index] = janet_vm.tq[smallest];
8298
0
        janet_vm.tq[smallest] = temp;
8299
0
        index = smallest;
8300
0
    }
8301
0
}
8302
8303
/* Add a timeout to the timeout min heap */
8304
0
static void add_timeout(JanetTimeout to) {
8305
0
    size_t oldcount = janet_vm.tq_count;
8306
0
    size_t newcount = oldcount + 1;
8307
0
    if (newcount > janet_vm.tq_capacity) {
8308
0
        size_t newcap = 2 * newcount;
8309
0
        JanetTimeout *tq = janet_realloc(janet_vm.tq, newcap * sizeof(JanetTimeout));
8310
0
        if (NULL == tq) {
8311
0
            JANET_OUT_OF_MEMORY;
8312
0
        }
8313
0
        janet_vm.tq = tq;
8314
0
        janet_vm.tq_capacity = newcap;
8315
0
    }
8316
    /* Append */
8317
0
    janet_vm.tq_count = (int32_t) newcount;
8318
0
    janet_vm.tq[oldcount] = to;
8319
    /* Heapify */
8320
0
    size_t index = oldcount;
8321
0
    while (index > 0) {
8322
0
        size_t parent = (index - 1) >> 1;
8323
0
        if (janet_vm.tq[parent].when <= janet_vm.tq[index].when) break;
8324
        /* Swap */
8325
0
        JanetTimeout tmp = janet_vm.tq[index];
8326
0
        janet_vm.tq[index] = janet_vm.tq[parent];
8327
0
        janet_vm.tq[parent] = tmp;
8328
        /* Next */
8329
0
        index = parent;
8330
0
    }
8331
0
}
8332
8333
/* Create a new event listener */
8334
0
static JanetListenerState *janet_listen_impl(JanetStream *stream, JanetListener behavior, int mask, size_t size, void *user) {
8335
0
    if (stream->flags & JANET_STREAM_CLOSED) {
8336
0
        janet_panic("cannot listen on closed stream");
8337
0
    }
8338
0
    if (stream->_mask & mask) {
8339
0
        janet_panic("cannot listen for duplicate event on stream");
8340
0
    }
8341
0
    if (janet_vm.root_fiber->waiting != NULL) {
8342
0
        janet_panic("current fiber is already waiting for event");
8343
0
    }
8344
0
    if (size < sizeof(JanetListenerState))
8345
0
        size = sizeof(JanetListenerState);
8346
0
    JanetListenerState *state = janet_malloc(size);
8347
0
    if (NULL == state) {
8348
0
        JANET_OUT_OF_MEMORY;
8349
0
    }
8350
0
    state->machine = behavior;
8351
0
    state->fiber = janet_vm.root_fiber;
8352
0
    janet_vm.root_fiber->waiting = state;
8353
0
    state->stream = stream;
8354
0
    state->_mask = mask;
8355
0
    stream->_mask |= mask;
8356
0
    state->_next = stream->state;
8357
0
    stream->state = state;
8358
8359
    /* Keep track of a listener for GC purposes */
8360
0
    int resize = janet_vm.listener_cap == janet_vm.listener_count;
8361
0
    if (resize) {
8362
0
        size_t newcap = janet_vm.listener_count ? janet_vm.listener_cap * 2 : 16;
8363
0
        janet_vm.listeners = janet_realloc(janet_vm.listeners, newcap * sizeof(JanetListenerState *));
8364
0
        if (NULL == janet_vm.listeners) {
8365
0
            JANET_OUT_OF_MEMORY;
8366
0
        }
8367
0
        janet_vm.listener_cap = newcap;
8368
0
    }
8369
0
    size_t index = janet_vm.listener_count++;
8370
0
    janet_vm.listeners[index] = state;
8371
0
    state->_index = index;
8372
8373
    /* Emit INIT event for convenience */
8374
0
    state->event = user;
8375
0
    state->machine(state, JANET_ASYNC_EVENT_INIT);
8376
0
    return state;
8377
0
}
8378
8379
/* Indicate we are no longer listening for an event. This
8380
 * frees the memory of the state machine as well. */
8381
0
static void janet_unlisten_impl(JanetListenerState *state, int is_gc) {
8382
0
    state->machine(state, JANET_ASYNC_EVENT_DEINIT);
8383
    /* Remove state machine from poll list */
8384
0
    JanetListenerState **iter = &(state->stream->state);
8385
0
    while (*iter && *iter != state)
8386
0
        iter = &((*iter)->_next);
8387
0
    janet_assert(*iter, "failed to remove listener");
8388
0
    *iter = state->_next;
8389
    /* Remove mask */
8390
0
    state->stream->_mask &= ~(state->_mask);
8391
    /* Ensure fiber does not reference this state */
8392
0
    if (!is_gc) {
8393
0
        JanetFiber *fiber = state->fiber;
8394
0
        if (NULL != fiber && fiber->waiting == state) {
8395
0
            fiber->waiting = NULL;
8396
0
        }
8397
0
    }
8398
    /* Untrack a listener for gc purposes */
8399
0
    size_t index = state->_index;
8400
0
    janet_vm.listeners[index] = janet_vm.listeners[--janet_vm.listener_count];
8401
0
    janet_vm.listeners[index]->_index = index;
8402
0
    janet_free(state);
8403
0
}
8404
8405
static const JanetMethod ev_default_stream_methods[] = {
8406
    {"close", janet_cfun_stream_close},
8407
    {"read", janet_cfun_stream_read},
8408
    {"chunk", janet_cfun_stream_chunk},
8409
    {"write", janet_cfun_stream_write},
8410
    {NULL, NULL}
8411
};
8412
8413
/* Create a stream*/
8414
0
JanetStream *janet_stream(JanetHandle handle, uint32_t flags, const JanetMethod *methods) {
8415
0
    JanetStream *stream = janet_abstract(&janet_stream_type, sizeof(JanetStream));
8416
0
    stream->handle = handle;
8417
0
    stream->flags = flags;
8418
0
    stream->state = NULL;
8419
0
    stream->_mask = 0;
8420
0
    if (methods == NULL) methods = ev_default_stream_methods;
8421
0
    stream->methods = methods;
8422
0
    return stream;
8423
0
}
8424
8425
/* Close a stream */
8426
0
static void janet_stream_close_impl(JanetStream *stream, int is_gc) {
8427
0
    if (stream->flags & JANET_STREAM_CLOSED) return;
8428
0
    JanetListenerState *state = stream->state;
8429
0
    while (NULL != state) {
8430
0
        if (!is_gc) {
8431
0
            state->machine(state, JANET_ASYNC_EVENT_CLOSE);
8432
0
        }
8433
0
        JanetListenerState *next_state = state->_next;
8434
0
        janet_unlisten(state, is_gc);
8435
0
        state = next_state;
8436
0
    }
8437
0
    stream->state = NULL;
8438
0
    stream->flags |= JANET_STREAM_CLOSED;
8439
#ifdef JANET_WINDOWS
8440
#ifdef JANET_NET
8441
    if (stream->flags & JANET_STREAM_SOCKET) {
8442
        closesocket((SOCKET) stream->handle);
8443
    } else
8444
#endif
8445
    {
8446
        CloseHandle(stream->handle);
8447
    }
8448
    stream->handle = INVALID_HANDLE_VALUE;
8449
#else
8450
0
    close(stream->handle);
8451
0
    stream->handle = -1;
8452
0
#endif
8453
0
}
8454
8455
0
void janet_stream_close(JanetStream *stream) {
8456
0
    janet_stream_close_impl(stream, 0);
8457
0
}
8458
8459
8460
/* Called to clean up a stream */
8461
0
static int janet_stream_gc(void *p, size_t s) {
8462
0
    (void) s;
8463
0
    JanetStream *stream = (JanetStream *)p;
8464
0
    janet_stream_close_impl(stream, 1);
8465
0
    return 0;
8466
0
}
8467
8468
/* Mark a stream for GC */
8469
0
static int janet_stream_mark(void *p, size_t s) {
8470
0
    (void) s;
8471
0
    JanetStream *stream = (JanetStream *) p;
8472
0
    JanetListenerState *state = stream->state;
8473
0
    while (NULL != state) {
8474
0
        if (NULL != state->fiber) {
8475
0
            janet_mark(janet_wrap_fiber(state->fiber));
8476
0
        }
8477
0
        (state->machine)(state, JANET_ASYNC_EVENT_MARK);
8478
0
        state = state->_next;
8479
0
    }
8480
0
    return 0;
8481
0
}
8482
8483
0
static int janet_stream_getter(void *p, Janet key, Janet *out) {
8484
0
    JanetStream *stream = (JanetStream *)p;
8485
0
    if (!janet_checktype(key, JANET_KEYWORD)) return 0;
8486
0
    const JanetMethod *stream_methods = stream->methods;
8487
0
    return janet_getmethod(janet_unwrap_keyword(key), stream_methods, out);
8488
0
}
8489
8490
0
static void janet_stream_marshal(void *p, JanetMarshalContext *ctx) {
8491
0
    JanetStream *s = p;
8492
0
    if (!(ctx->flags & JANET_MARSHAL_UNSAFE)) {
8493
0
        janet_panic("can only marshal stream with unsafe flag");
8494
0
    }
8495
0
    janet_marshal_abstract(ctx, p);
8496
0
    janet_marshal_int(ctx, (int32_t) s->flags);
8497
0
    janet_marshal_int64(ctx, (intptr_t) s->methods);
8498
#ifdef JANET_WINDOWS
8499
    /* TODO - ref counting to avoid situation where a handle is closed or GCed
8500
     * while in transit, and it's value gets reused. DuplicateHandle does not work
8501
     * for network sockets, and in general for winsock it is better to nipt duplicate
8502
     * unless there is a need to. */
8503
    HANDLE duph = INVALID_HANDLE_VALUE;
8504
    if (s->flags & JANET_STREAM_SOCKET) {
8505
        duph = s->handle;
8506
    } else {
8507
        DuplicateHandle(
8508
            GetCurrentProcess(),
8509
            s->handle,
8510
            GetCurrentProcess(),
8511
            &duph,
8512
            0,
8513
            FALSE,
8514
            DUPLICATE_SAME_ACCESS);
8515
    }
8516
    janet_marshal_int64(ctx, (int64_t)(duph));
8517
#else
8518
    /* Marshal after dup becuse it is easier than maintaining our own ref counting. */
8519
0
    int duph = dup(s->handle);
8520
0
    if (duph < 0) janet_panicf("failed to duplicate stream handle: %V", janet_ev_lasterr());
8521
0
    janet_marshal_int(ctx, (int32_t)(duph));
8522
0
#endif
8523
0
}
8524
8525
0
static void *janet_stream_unmarshal(JanetMarshalContext *ctx) {
8526
0
    if (!(ctx->flags & JANET_MARSHAL_UNSAFE)) {
8527
0
        janet_panic("can only unmarshal stream with unsafe flag");
8528
0
    }
8529
0
    JanetStream *p = janet_unmarshal_abstract(ctx, sizeof(JanetStream));
8530
    /* Can't share listening state and such across threads */
8531
0
    p->_mask = 0;
8532
0
    p->state = NULL;
8533
0
    p->flags = (uint32_t) janet_unmarshal_int(ctx);
8534
0
    p->methods = (void *) janet_unmarshal_int64(ctx);
8535
#ifdef JANET_WINDOWS
8536
    p->handle = (JanetHandle) janet_unmarshal_int64(ctx);
8537
#else
8538
0
    p->handle = (JanetHandle) janet_unmarshal_int(ctx);
8539
0
#endif
8540
0
    return p;
8541
0
}
8542
8543
0
static Janet janet_stream_next(void *p, Janet key) {
8544
0
    JanetStream *stream = (JanetStream *)p;
8545
0
    return janet_nextmethod(stream->methods, key);
8546
0
}
8547
8548
const JanetAbstractType janet_stream_type = {
8549
    "core/stream",
8550
    janet_stream_gc,
8551
    janet_stream_mark,
8552
    janet_stream_getter,
8553
    NULL,
8554
    janet_stream_marshal,
8555
    janet_stream_unmarshal,
8556
    NULL,
8557
    NULL,
8558
    NULL,
8559
    janet_stream_next,
8560
    JANET_ATEND_NEXT
8561
};
8562
8563
/* Register a fiber to resume with value */
8564
0
void janet_schedule_signal(JanetFiber *fiber, Janet value, JanetSignal sig) {
8565
0
    if (fiber->gc.flags & JANET_FIBER_EV_FLAG_CANCELED) return;
8566
0
    if (!(fiber->gc.flags & JANET_FIBER_FLAG_ROOT)) {
8567
0
        Janet task_element = janet_wrap_fiber(fiber);
8568
0
        janet_table_put(&janet_vm.active_tasks, task_element, janet_wrap_true());
8569
0
    }
8570
0
    JanetTask t = { fiber, value, sig, ++fiber->sched_id };
8571
0
    fiber->gc.flags |= JANET_FIBER_FLAG_ROOT;
8572
0
    if (sig == JANET_SIGNAL_ERROR) fiber->gc.flags |= JANET_FIBER_EV_FLAG_CANCELED;
8573
0
    janet_q_push(&janet_vm.spawn, &t, sizeof(t));
8574
0
}
8575
8576
0
void janet_cancel(JanetFiber *fiber, Janet value) {
8577
0
    janet_schedule_signal(fiber, value, JANET_SIGNAL_ERROR);
8578
0
}
8579
8580
0
void janet_schedule(JanetFiber *fiber, Janet value) {
8581
0
    janet_schedule_signal(fiber, value, JANET_SIGNAL_OK);
8582
0
}
8583
8584
0
void janet_fiber_did_resume(JanetFiber *fiber) {
8585
    /* Cancel any pending fibers */
8586
0
    if (fiber->waiting) {
8587
0
        fiber->waiting->machine(fiber->waiting, JANET_ASYNC_EVENT_CANCEL);
8588
0
        janet_unlisten(fiber->waiting, 0);
8589
0
    }
8590
0
}
8591
8592
/* Mark all pending tasks */
8593
0
void janet_ev_mark(void) {
8594
8595
    /* Pending tasks */
8596
0
    JanetTask *tasks = janet_vm.spawn.data;
8597
0
    if (janet_vm.spawn.head <= janet_vm.spawn.tail) {
8598
0
        for (int32_t i = janet_vm.spawn.head; i < janet_vm.spawn.tail; i++) {
8599
0
            janet_mark(janet_wrap_fiber(tasks[i].fiber));
8600
0
            janet_mark(tasks[i].value);
8601
0
        }
8602
0
    } else {
8603
0
        for (int32_t i = janet_vm.spawn.head; i < janet_vm.spawn.capacity; i++) {
8604
0
            janet_mark(janet_wrap_fiber(tasks[i].fiber));
8605
0
            janet_mark(tasks[i].value);
8606
0
        }
8607
0
        for (int32_t i = 0; i < janet_vm.spawn.tail; i++) {
8608
0
            janet_mark(janet_wrap_fiber(tasks[i].fiber));
8609
0
            janet_mark(tasks[i].value);
8610
0
        }
8611
0
    }
8612
8613
    /* Pending timeouts */
8614
0
    for (size_t i = 0; i < janet_vm.tq_count; i++) {
8615
0
        janet_mark(janet_wrap_fiber(janet_vm.tq[i].fiber));
8616
0
        if (janet_vm.tq[i].curr_fiber != NULL) {
8617
0
            janet_mark(janet_wrap_fiber(janet_vm.tq[i].curr_fiber));
8618
0
        }
8619
0
    }
8620
8621
    /* Pending listeners */
8622
0
    for (size_t i = 0; i < janet_vm.listener_count; i++) {
8623
0
        JanetListenerState *state = janet_vm.listeners[i];
8624
0
        if (NULL != state->fiber) {
8625
0
            janet_mark(janet_wrap_fiber(state->fiber));
8626
0
        }
8627
0
        janet_stream_mark(state->stream, sizeof(JanetStream));
8628
0
        (state->machine)(state, JANET_ASYNC_EVENT_MARK);
8629
0
    }
8630
0
}
8631
8632
static int janet_channel_push(JanetChannel *channel, Janet x, int mode);
8633
static int janet_channel_pop(JanetChannel *channel, Janet *item, int is_choice);
8634
8635
0
static Janet make_supervisor_event(const char *name, JanetFiber *fiber, int threaded) {
8636
0
    Janet tup[3];
8637
0
    tup[0] = janet_ckeywordv(name);
8638
0
    tup[1] = threaded ? fiber->last_value : janet_wrap_fiber(fiber) ;
8639
0
    if (fiber->env != NULL) {
8640
0
        tup[2] = janet_table_get(fiber->env, janet_ckeywordv("task-id"));
8641
0
    } else {
8642
0
        tup[2] = janet_wrap_nil();
8643
0
    }
8644
0
    return janet_wrap_tuple(janet_tuple_n(tup, 3));
8645
0
}
8646
8647
/* Common init code */
8648
5.24k
void janet_ev_init_common(void) {
8649
5.24k
    janet_q_init(&janet_vm.spawn);
8650
5.24k
    janet_vm.listener_count = 0;
8651
5.24k
    janet_vm.listener_cap = 0;
8652
5.24k
    janet_vm.listeners = NULL;
8653
5.24k
    janet_vm.tq = NULL;
8654
5.24k
    janet_vm.tq_count = 0;
8655
5.24k
    janet_vm.tq_capacity = 0;
8656
5.24k
    janet_table_init_raw(&janet_vm.threaded_abstracts, 0);
8657
5.24k
    janet_table_init_raw(&janet_vm.active_tasks, 0);
8658
5.24k
    janet_rng_seed(&janet_vm.ev_rng, 0);
8659
5.24k
#ifndef JANET_WINDOWS
8660
5.24k
    pthread_attr_init(&janet_vm.new_thread_attr);
8661
5.24k
    pthread_attr_setdetachstate(&janet_vm.new_thread_attr, PTHREAD_CREATE_DETACHED);
8662
5.24k
#endif
8663
5.24k
}
8664
8665
/* Common deinit code */
8666
5.24k
void janet_ev_deinit_common(void) {
8667
5.24k
    janet_q_deinit(&janet_vm.spawn);
8668
5.24k
    janet_free(janet_vm.tq);
8669
5.24k
    janet_free(janet_vm.listeners);
8670
5.24k
    janet_vm.listeners = NULL;
8671
5.24k
    janet_table_deinit(&janet_vm.threaded_abstracts);
8672
5.24k
    janet_table_deinit(&janet_vm.active_tasks);
8673
5.24k
#ifndef JANET_WINDOWS
8674
5.24k
    pthread_attr_destroy(&janet_vm.new_thread_attr);
8675
5.24k
#endif
8676
5.24k
}
8677
8678
/* Shorthand to yield to event loop */
8679
0
void janet_await(void) {
8680
    /* Store the fiber in a gobal table */
8681
0
    janet_signalv(JANET_SIGNAL_EVENT, janet_wrap_nil());
8682
0
}
8683
8684
/* Set timeout for the current root fiber */
8685
0
void janet_addtimeout(double sec) {
8686
0
    JanetFiber *fiber = janet_vm.root_fiber;
8687
0
    JanetTimeout to;
8688
0
    to.when = ts_delta(ts_now(), sec);
8689
0
    to.fiber = fiber;
8690
0
    to.curr_fiber = NULL;
8691
0
    to.sched_id = fiber->sched_id;
8692
0
    to.is_error = 1;
8693
0
    add_timeout(to);
8694
0
}
8695
8696
0
void janet_ev_inc_refcount(void) {
8697
0
    janet_vm.extra_listeners++;
8698
0
}
8699
8700
0
void janet_ev_dec_refcount(void) {
8701
0
    janet_vm.extra_listeners--;
8702
0
}
8703
8704
/* Channels */
8705
8706
#define JANET_MAX_CHANNEL_CAPACITY 0xFFFFFF
8707
8708
0
static inline int janet_chan_is_threaded(JanetChannel *chan) {
8709
0
    return chan->is_threaded;
8710
0
}
8711
8712
0
static int janet_chan_pack(JanetChannel *chan, Janet *x) {
8713
0
    if (!janet_chan_is_threaded(chan)) return 0;
8714
0
    switch (janet_type(*x)) {
8715
0
        default: {
8716
0
            JanetBuffer *buf = janet_malloc(sizeof(JanetBuffer));
8717
0
            if (NULL == buf) {
8718
0
                JANET_OUT_OF_MEMORY;
8719
0
            }
8720
0
            janet_buffer_init(buf, 10);
8721
0
            janet_marshal(buf, *x, NULL, JANET_MARSHAL_UNSAFE);
8722
0
            *x = janet_wrap_buffer(buf);
8723
0
            return 0;
8724
0
        }
8725
0
        case JANET_NIL:
8726
0
        case JANET_NUMBER:
8727
0
        case JANET_POINTER:
8728
0
        case JANET_BOOLEAN:
8729
0
        case JANET_CFUNCTION:
8730
0
            return 0;
8731
0
    }
8732
0
}
8733
8734
0
static int janet_chan_unpack(JanetChannel *chan, Janet *x, int is_cleanup) {
8735
0
    if (!janet_chan_is_threaded(chan)) return 0;
8736
0
    switch (janet_type(*x)) {
8737
0
        default:
8738
0
            return 1;
8739
0
        case JANET_BUFFER: {
8740
0
            JanetBuffer *buf = janet_unwrap_buffer(*x);
8741
0
            int flags = is_cleanup ? (JANET_MARSHAL_UNSAFE | JANET_MARSHAL_DECREF) : JANET_MARSHAL_UNSAFE;
8742
0
            *x = janet_unmarshal(buf->data, buf->count, flags, NULL, NULL);
8743
0
            janet_buffer_deinit(buf);
8744
0
            janet_free(buf);
8745
0
            return 0;
8746
0
        }
8747
0
        case JANET_NIL:
8748
0
        case JANET_NUMBER:
8749
0
        case JANET_POINTER:
8750
0
        case JANET_BOOLEAN:
8751
0
        case JANET_CFUNCTION:
8752
0
            return 0;
8753
0
    }
8754
0
}
8755
8756
0
static void janet_chan_init(JanetChannel *chan, int32_t limit, int threaded) {
8757
0
    chan->limit = limit;
8758
0
    chan->closed = 0;
8759
0
    chan->is_threaded = threaded;
8760
0
    janet_q_init(&chan->items);
8761
0
    janet_q_init(&chan->read_pending);
8762
0
    janet_q_init(&chan->write_pending);
8763
0
    janet_os_mutex_init((JanetOSMutex *) &chan->lock);
8764
0
}
8765
8766
0
static void janet_chan_lock(JanetChannel *chan) {
8767
0
    if (!janet_chan_is_threaded(chan)) return;
8768
0
    janet_os_mutex_lock((JanetOSMutex *) &chan->lock);
8769
0
}
8770
8771
0
static void janet_chan_unlock(JanetChannel *chan) {
8772
0
    if (!janet_chan_is_threaded(chan)) return;
8773
0
    janet_os_mutex_unlock((JanetOSMutex *) &chan->lock);
8774
0
}
8775
8776
0
static void janet_chan_deinit(JanetChannel *chan) {
8777
0
    if (janet_chan_is_threaded(chan)) {
8778
0
        Janet item;
8779
0
        janet_chan_lock(chan);
8780
0
        janet_q_deinit(&chan->read_pending);
8781
0
        janet_q_deinit(&chan->write_pending);
8782
0
        while (!janet_q_pop(&chan->items, &item, sizeof(item))) {
8783
0
            janet_chan_unpack(chan, &item, 1);
8784
0
        }
8785
0
        janet_q_deinit(&chan->items);
8786
0
        janet_chan_unlock(chan);
8787
0
    } else {
8788
0
        janet_q_deinit(&chan->read_pending);
8789
0
        janet_q_deinit(&chan->write_pending);
8790
0
        janet_q_deinit(&chan->items);
8791
0
    }
8792
0
    janet_os_mutex_deinit((JanetOSMutex *) &chan->lock);
8793
0
}
8794
8795
/*
8796
 * Janet Channel abstract type
8797
 */
8798
8799
0
static Janet janet_wrap_channel(JanetChannel *channel) {
8800
0
    return janet_wrap_abstract(channel);
8801
0
}
8802
8803
0
static int janet_chanat_gc(void *p, size_t s) {
8804
0
    (void) s;
8805
0
    JanetChannel *channel = p;
8806
0
    janet_chan_deinit(channel);
8807
0
    return 0;
8808
0
}
8809
8810
0
static void janet_chanat_mark_fq(JanetQueue *fq) {
8811
0
    JanetChannelPending *pending = fq->data;
8812
0
    if (fq->head <= fq->tail) {
8813
0
        for (int32_t i = fq->head; i < fq->tail; i++)
8814
0
            janet_mark(janet_wrap_fiber(pending[i].fiber));
8815
0
    } else {
8816
0
        for (int32_t i = fq->head; i < fq->capacity; i++)
8817
0
            janet_mark(janet_wrap_fiber(pending[i].fiber));
8818
0
        for (int32_t i = 0; i < fq->tail; i++)
8819
0
            janet_mark(janet_wrap_fiber(pending[i].fiber));
8820
0
    }
8821
0
}
8822
8823
0
static int janet_chanat_mark(void *p, size_t s) {
8824
0
    (void) s;
8825
0
    JanetChannel *chan = p;
8826
0
    janet_chanat_mark_fq(&chan->read_pending);
8827
0
    janet_chanat_mark_fq(&chan->write_pending);
8828
0
    JanetQueue *items = &chan->items;
8829
0
    Janet *data = chan->items.data;
8830
0
    if (items->head <= items->tail) {
8831
0
        for (int32_t i = items->head; i < items->tail; i++)
8832
0
            janet_mark(data[i]);
8833
0
    } else {
8834
0
        for (int32_t i = items->head; i < items->capacity; i++)
8835
0
            janet_mark(data[i]);
8836
0
        for (int32_t i = 0; i < items->tail; i++)
8837
0
            janet_mark(data[i]);
8838
0
    }
8839
0
    return 0;
8840
0
}
8841
8842
0
static Janet make_write_result(JanetChannel *channel) {
8843
0
    Janet *tup = janet_tuple_begin(2);
8844
0
    tup[0] = janet_ckeywordv("give");
8845
0
    tup[1] = janet_wrap_channel(channel);
8846
0
    return janet_wrap_tuple(janet_tuple_end(tup));
8847
0
}
8848
8849
0
static Janet make_read_result(JanetChannel *channel, Janet x) {
8850
0
    Janet *tup = janet_tuple_begin(3);
8851
0
    tup[0] = janet_ckeywordv("take");
8852
0
    tup[1] = janet_wrap_channel(channel);
8853
0
    tup[2] = x;
8854
0
    return janet_wrap_tuple(janet_tuple_end(tup));
8855
0
}
8856
8857
0
static Janet make_close_result(JanetChannel *channel) {
8858
0
    Janet *tup = janet_tuple_begin(2);
8859
0
    tup[0] = janet_ckeywordv("close");
8860
0
    tup[1] = janet_wrap_channel(channel);
8861
0
    return janet_wrap_tuple(janet_tuple_end(tup));
8862
0
}
8863
8864
/* Callback to use for scheduling a fiber from another thread. */
8865
0
static void janet_thread_chan_cb(JanetEVGenericMessage msg) {
8866
0
    uint32_t sched_id = (uint32_t) msg.argi;
8867
0
    JanetFiber *fiber = msg.fiber;
8868
0
    int mode = msg.tag;
8869
0
    JanetChannel *channel = (JanetChannel *) msg.argp;
8870
0
    Janet x = msg.argj;
8871
0
    janet_chan_lock(channel);
8872
0
    if (fiber->sched_id == sched_id) {
8873
0
        if (mode == JANET_CP_MODE_CHOICE_READ) {
8874
0
            janet_assert(!janet_chan_unpack(channel, &x, 0), "packing error");
8875
0
            janet_schedule(fiber, make_read_result(channel, x));
8876
0
        } else if (mode == JANET_CP_MODE_CHOICE_WRITE) {
8877
0
            janet_schedule(fiber, make_write_result(channel));
8878
0
        } else if (mode == JANET_CP_MODE_READ) {
8879
0
            janet_assert(!janet_chan_unpack(channel, &x, 0), "packing error");
8880
0
            janet_schedule(fiber, x);
8881
0
        } else if (mode == JANET_CP_MODE_WRITE) {
8882
0
            janet_schedule(fiber, janet_wrap_channel(channel));
8883
0
        } else { /* (mode == JANET_CP_MODE_CLOSE) */
8884
0
            janet_schedule(fiber, janet_wrap_nil());
8885
0
        }
8886
0
    } else if (mode != JANET_CP_MODE_CLOSE) {
8887
        /* Fiber has already been cancelled or resumed. */
8888
        /* Resend event to another waiting thread, depending on mode */
8889
0
        int is_read = (mode == JANET_CP_MODE_CHOICE_READ) || (mode == JANET_CP_MODE_READ);
8890
0
        if (is_read) {
8891
0
            JanetChannelPending reader;
8892
0
            if (!janet_q_pop(&channel->read_pending, &reader, sizeof(reader))) {
8893
0
                JanetVM *vm = reader.thread;
8894
0
                JanetEVGenericMessage msg;
8895
0
                msg.tag = reader.mode;
8896
0
                msg.fiber = reader.fiber;
8897
0
                msg.argi = (int32_t) reader.sched_id;
8898
0
                msg.argp = channel;
8899
0
                msg.argj = x;
8900
0
                janet_ev_post_event(vm, janet_thread_chan_cb, msg);
8901
0
            }
8902
0
        } else {
8903
0
            JanetChannelPending writer;
8904
0
            if (!janet_q_pop(&channel->write_pending, &writer, sizeof(writer))) {
8905
0
                JanetVM *vm = writer.thread;
8906
0
                JanetEVGenericMessage msg;
8907
0
                msg.tag = writer.mode;
8908
0
                msg.fiber = writer.fiber;
8909
0
                msg.argi = (int32_t) writer.sched_id;
8910
0
                msg.argp = channel;
8911
0
                msg.argj = janet_wrap_nil();
8912
0
                janet_ev_post_event(vm, janet_thread_chan_cb, msg);
8913
0
            }
8914
0
        }
8915
0
    }
8916
0
    janet_chan_unlock(channel);
8917
0
}
8918
8919
/* Push a value to a channel, and return 1 if channel should block, zero otherwise.
8920
 * If the push would block, will add to the write_pending queue in the channel.
8921
 * Handles both threaded and unthreaded channels. */
8922
0
static int janet_channel_push_with_lock(JanetChannel *channel, Janet x, int mode) {
8923
0
    JanetChannelPending reader;
8924
0
    int is_empty;
8925
0
    if (janet_chan_pack(channel, &x)) {
8926
0
        janet_chan_unlock(channel);
8927
0
        janet_panicf("failed to pack value for channel: %v", x);
8928
0
    }
8929
0
    if (channel->closed) {
8930
0
        janet_chan_unlock(channel);
8931
0
        janet_panic("cannot write to closed channel");
8932
0
    }
8933
0
    int is_threaded = janet_chan_is_threaded(channel);
8934
0
    if (is_threaded) {
8935
        /* don't dereference fiber from another thread */
8936
0
        is_empty = janet_q_pop(&channel->read_pending, &reader, sizeof(reader));
8937
0
    } else {
8938
0
        do {
8939
0
            is_empty = janet_q_pop(&channel->read_pending, &reader, sizeof(reader));
8940
0
        } while (!is_empty && (reader.sched_id != reader.fiber->sched_id));
8941
0
    }
8942
0
    if (is_empty) {
8943
        /* No pending reader */
8944
0
        if (janet_q_push(&channel->items, &x, sizeof(Janet))) {
8945
0
            janet_chan_unlock(channel);
8946
0
            janet_panicf("channel overflow: %v", x);
8947
0
        } else if (janet_q_count(&channel->items) > channel->limit) {
8948
            /* No root fiber, we are in completion on a root fiber. Don't block. */
8949
0
            if (mode == 2) {
8950
0
                janet_chan_unlock(channel);
8951
0
                return 0;
8952
0
            }
8953
            /* Pushed successfully, but should block. */
8954
0
            JanetChannelPending pending;
8955
0
            pending.thread = &janet_vm;
8956
0
            pending.fiber = janet_vm.root_fiber,
8957
0
            pending.sched_id = janet_vm.root_fiber->sched_id,
8958
0
            pending.mode = mode ? JANET_CP_MODE_CHOICE_WRITE : JANET_CP_MODE_WRITE;
8959
0
            janet_q_push(&channel->write_pending, &pending, sizeof(pending));
8960
0
            janet_chan_unlock(channel);
8961
0
            if (is_threaded) {
8962
0
                janet_gcroot(janet_wrap_fiber(pending.fiber));
8963
0
            }
8964
0
            return 1;
8965
0
        }
8966
0
    } else {
8967
        /* Pending reader */
8968
0
        if (is_threaded) {
8969
0
            JanetVM *vm = reader.thread;
8970
0
            JanetEVGenericMessage msg;
8971
0
            msg.tag = reader.mode;
8972
0
            msg.fiber = reader.fiber;
8973
0
            msg.argi = (int32_t) reader.sched_id;
8974
0
            msg.argp = channel;
8975
0
            msg.argj = x;
8976
0
            janet_ev_post_event(vm, janet_thread_chan_cb, msg);
8977
0
        } else {
8978
0
            if (reader.mode == JANET_CP_MODE_CHOICE_READ) {
8979
0
                janet_schedule(reader.fiber, make_read_result(channel, x));
8980
0
            } else {
8981
0
                janet_schedule(reader.fiber, x);
8982
0
            }
8983
0
        }
8984
0
    }
8985
0
    janet_chan_unlock(channel);
8986
0
    return 0;
8987
0
}
8988
8989
0
static int janet_channel_push(JanetChannel *channel, Janet x, int mode) {
8990
0
    janet_chan_lock(channel);
8991
0
    return janet_channel_push_with_lock(channel, x, mode);
8992
0
}
8993
8994
/* Pop from a channel - returns 1 if item was obtained, 0 otherwise. The item
8995
 * is returned by reference. If the pop would block, will add to the read_pending
8996
 * queue in the channel. */
8997
0
static int janet_channel_pop_with_lock(JanetChannel *channel, Janet *item, int is_choice) {
8998
0
    JanetChannelPending writer;
8999
0
    if (channel->closed) {
9000
0
        janet_chan_unlock(channel);
9001
0
        *item = janet_wrap_nil();
9002
0
        return 1;
9003
0
    }
9004
0
    int is_threaded = janet_chan_is_threaded(channel);
9005
0
    if (janet_q_pop(&channel->items, item, sizeof(Janet))) {
9006
        /* Queue empty */
9007
0
        JanetChannelPending pending;
9008
0
        pending.thread = &janet_vm;
9009
0
        pending.fiber = janet_vm.root_fiber,
9010
0
        pending.sched_id = janet_vm.root_fiber->sched_id;
9011
0
        pending.mode = is_choice ? JANET_CP_MODE_CHOICE_READ : JANET_CP_MODE_READ;
9012
0
        janet_q_push(&channel->read_pending, &pending, sizeof(pending));
9013
0
        janet_chan_unlock(channel);
9014
0
        if (is_threaded) {
9015
0
            janet_gcroot(janet_wrap_fiber(pending.fiber));
9016
0
        }
9017
0
        return 0;
9018
0
    }
9019
0
    janet_assert(!janet_chan_unpack(channel, item, 0), "bad channel packing");
9020
0
    if (!janet_q_pop(&channel->write_pending, &writer, sizeof(writer))) {
9021
        /* Pending writer */
9022
0
        if (is_threaded) {
9023
0
            JanetVM *vm = writer.thread;
9024
0
            JanetEVGenericMessage msg;
9025
0
            msg.tag = writer.mode;
9026
0
            msg.fiber = writer.fiber;
9027
0
            msg.argi = (int32_t) writer.sched_id;
9028
0
            msg.argp = channel;
9029
0
            msg.argj = janet_wrap_nil();
9030
0
            janet_ev_post_event(vm, janet_thread_chan_cb, msg);
9031
0
        } else {
9032
0
            if (writer.mode == JANET_CP_MODE_CHOICE_WRITE) {
9033
0
                janet_schedule(writer.fiber, make_write_result(channel));
9034
0
            } else {
9035
0
                janet_schedule(writer.fiber, janet_wrap_abstract(channel));
9036
0
            }
9037
0
        }
9038
0
    }
9039
0
    janet_chan_unlock(channel);
9040
0
    return 1;
9041
0
}
9042
9043
0
static int janet_channel_pop(JanetChannel *channel, Janet *item, int is_choice) {
9044
0
    janet_chan_lock(channel);
9045
0
    return janet_channel_pop_with_lock(channel, item, is_choice);
9046
0
}
9047
9048
0
JanetChannel *janet_channel_unwrap(void *abstract) {
9049
0
    return abstract;
9050
0
}
9051
9052
0
JanetChannel *janet_getchannel(const Janet *argv, int32_t n) {
9053
0
    return janet_channel_unwrap(janet_getabstract(argv, n, &janet_channel_type));
9054
0
}
9055
9056
0
JanetChannel *janet_optchannel(const Janet *argv, int32_t argc, int32_t n, JanetChannel *dflt) {
9057
0
    if (argc > n && !janet_checktype(argv[n], JANET_NIL)) {
9058
0
        return janet_getchannel(argv, n);
9059
0
    } else {
9060
0
        return dflt;
9061
0
    }
9062
0
}
9063
9064
/* Channel Methods */
9065
9066
JANET_CORE_FN(cfun_channel_push,
9067
              "(ev/give channel value)",
9068
              "Write a value to a channel, suspending the current fiber if the channel is full. "
9069
0
              "Returns the channel if the write succeeded, nil otherwise.") {
9070
0
    janet_fixarity(argc, 2);
9071
0
    JanetChannel *channel = janet_getchannel(argv, 0);
9072
0
    if (janet_channel_push(channel, argv[1], 0)) {
9073
0
        janet_await();
9074
0
    }
9075
0
    return argv[0];
9076
0
}
9077
9078
JANET_CORE_FN(cfun_channel_pop,
9079
              "(ev/take channel)",
9080
0
              "Read from a channel, suspending the current fiber if no value is available.") {
9081
0
    janet_fixarity(argc, 1);
9082
0
    JanetChannel *channel = janet_getchannel(argv, 0);
9083
0
    Janet item;
9084
0
    if (janet_channel_pop(channel, &item, 0)) {
9085
0
        janet_schedule(janet_vm.root_fiber, item);
9086
0
    }
9087
0
    janet_await();
9088
0
}
9089
9090
0
static void chan_unlock_args(const Janet *argv, int32_t n) {
9091
0
    for (int32_t i = 0; i < n; i++) {
9092
0
        int32_t len;
9093
0
        const Janet *data;
9094
0
        JanetChannel *chan;
9095
0
        if (janet_indexed_view(argv[i], &data, &len) && len == 2) {
9096
0
            chan = janet_getchannel(data, 0);
9097
0
        } else {
9098
0
            chan = janet_getchannel(argv, i);
9099
0
        }
9100
0
        janet_chan_unlock(chan);
9101
0
    }
9102
0
}
9103
9104
JANET_CORE_FN(cfun_channel_choice,
9105
              "(ev/select & clauses)",
9106
              "Block until the first of several channel operations occur. Returns a "
9107
              "tuple of the form [:give chan], [:take chan x], or [:close chan], "
9108
              "where a :give tuple is the result of a write and a :take tuple is the "
9109
              "result of a read. Each clause must be either a channel (for a channel "
9110
              "take operation) or a tuple [channel x] (for a channel give operation). "
9111
              "Operations are tried in order such that earlier clauses take "
9112
              "precedence over later clauses. Both give and take operations can "
9113
              "return a [:close chan] tuple, which indicates that the specified "
9114
              "channel was closed while waiting, or that the channel was already "
9115
0
              "closed.") {
9116
0
    janet_arity(argc, 1, -1);
9117
0
    int32_t len;
9118
0
    const Janet *data;
9119
9120
    /* Check channels for immediate reads and writes */
9121
0
    for (int32_t i = 0; i < argc; i++) {
9122
0
        if (janet_indexed_view(argv[i], &data, &len) && len == 2) {
9123
            /* Write */
9124
0
            JanetChannel *chan = janet_getchannel(data, 0);
9125
0
            janet_chan_lock(chan);
9126
0
            if (chan->closed) {
9127
0
                janet_chan_unlock(chan);
9128
0
                chan_unlock_args(argv, i);
9129
0
                return make_close_result(chan);
9130
0
            }
9131
0
            if (janet_q_count(&chan->items) < chan->limit) {
9132
0
                janet_channel_push_with_lock(chan, data[1], 1);
9133
0
                chan_unlock_args(argv, i);
9134
0
                return make_write_result(chan);
9135
0
            }
9136
0
        } else {
9137
            /* Read */
9138
0
            JanetChannel *chan = janet_getchannel(argv, i);
9139
0
            janet_chan_lock(chan);
9140
0
            if (chan->closed) {
9141
0
                janet_chan_unlock(chan);
9142
0
                chan_unlock_args(argv, i);
9143
0
                return make_close_result(chan);
9144
0
            }
9145
0
            if (chan->items.head != chan->items.tail) {
9146
0
                Janet item;
9147
0
                janet_channel_pop_with_lock(chan, &item, 1);
9148
0
                chan_unlock_args(argv, i);
9149
0
                return make_read_result(chan, item);
9150
0
            }
9151
0
        }
9152
0
    }
9153
9154
    /* Wait for all readers or writers */
9155
0
    for (int32_t i = 0; i < argc; i++) {
9156
0
        if (janet_indexed_view(argv[i], &data, &len) && len == 2) {
9157
            /* Write */
9158
0
            JanetChannel *chan = janet_getchannel(data, 0);
9159
0
            janet_channel_push_with_lock(chan, data[1], 1);
9160
0
        } else {
9161
            /* Read */
9162
0
            Janet item;
9163
0
            JanetChannel *chan = janet_getchannel(argv, i);
9164
0
            janet_channel_pop_with_lock(chan, &item, 1);
9165
0
        }
9166
0
    }
9167
9168
0
    janet_await();
9169
0
}
9170
9171
JANET_CORE_FN(cfun_channel_full,
9172
              "(ev/full channel)",
9173
0
              "Check if a channel is full or not.") {
9174
0
    janet_fixarity(argc, 1);
9175
0
    JanetChannel *channel = janet_getchannel(argv, 0);
9176
0
    janet_chan_lock(channel);
9177
0
    Janet ret = janet_wrap_boolean(janet_q_count(&channel->items) >= channel->limit);
9178
0
    janet_chan_unlock(channel);
9179
0
    return ret;
9180
0
}
9181
9182
JANET_CORE_FN(cfun_channel_capacity,
9183
              "(ev/capacity channel)",
9184
0
              "Get the number of items a channel will store before blocking writers.") {
9185
0
    janet_fixarity(argc, 1);
9186
0
    JanetChannel *channel = janet_getchannel(argv, 0);
9187
0
    janet_chan_lock(channel);
9188
0
    Janet ret = janet_wrap_integer(channel->limit);
9189
0
    janet_chan_unlock(channel);
9190
0
    return ret;
9191
0
}
9192
9193
JANET_CORE_FN(cfun_channel_count,
9194
              "(ev/count channel)",
9195
0
              "Get the number of items currently waiting in a channel.") {
9196
0
    janet_fixarity(argc, 1);
9197
0
    JanetChannel *channel = janet_getchannel(argv, 0);
9198
0
    janet_chan_lock(channel);
9199
0
    Janet ret = janet_wrap_integer(janet_q_count(&channel->items));
9200
0
    janet_chan_unlock(channel);
9201
0
    return ret;
9202
0
}
9203
9204
/* Fisher yates shuffle of arguments to get fairness */
9205
0
static void fisher_yates_args(int32_t argc, Janet *argv) {
9206
0
    for (int32_t i = argc; i > 1; i--) {
9207
0
        int32_t swap_index = janet_rng_u32(&janet_vm.ev_rng) % i;
9208
0
        Janet temp = argv[swap_index];
9209
0
        argv[swap_index] = argv[i - 1];
9210
0
        argv[i - 1] = temp;
9211
0
    }
9212
0
}
9213
9214
JANET_CORE_FN(cfun_channel_rchoice,
9215
              "(ev/rselect & clauses)",
9216
0
              "Similar to ev/select, but will try clauses in a random order for fairness.") {
9217
0
    fisher_yates_args(argc, argv);
9218
0
    return cfun_channel_choice(argc, argv);
9219
0
}
9220
9221
JANET_CORE_FN(cfun_channel_new,
9222
              "(ev/chan &opt capacity)",
9223
              "Create a new channel. capacity is the number of values to queue before "
9224
0
              "blocking writers, defaults to 0 if not provided. Returns a new channel.") {
9225
0
    janet_arity(argc, 0, 1);
9226
0
    int32_t limit = janet_optnat(argv, argc, 0, 0);
9227
0
    JanetChannel *channel = janet_abstract(&janet_channel_type, sizeof(JanetChannel));
9228
0
    janet_chan_init(channel, limit, 0);
9229
0
    return janet_wrap_abstract(channel);
9230
0
}
9231
9232
JANET_CORE_FN(cfun_channel_new_threaded,
9233
              "(ev/thread-chan &opt limit)",
9234
              "Create a threaded channel. A threaded channel is a channel that can be shared between threads and "
9235
0
              "used to communicate between any number of operating system threads.") {
9236
0
    janet_arity(argc, 0, 1);
9237
0
    int32_t limit = janet_optnat(argv, argc, 0, 0);
9238
0
    JanetChannel *tchan = janet_abstract_threaded(&janet_channel_type, sizeof(JanetChannel));
9239
0
    janet_chan_init(tchan, limit, 1);
9240
0
    return janet_wrap_abstract(tchan);
9241
0
}
9242
9243
JANET_CORE_FN(cfun_channel_close,
9244
              "(ev/chan-close chan)",
9245
              "Close a channel. A closed channel will cause all pending reads and writes to return nil. "
9246
0
              "Returns the channel.") {
9247
0
    janet_fixarity(argc, 1);
9248
0
    JanetChannel *channel = janet_getchannel(argv, 0);
9249
0
    janet_chan_lock(channel);
9250
0
    if (!channel->closed) {
9251
0
        channel->closed = 1;
9252
0
        JanetChannelPending writer;
9253
0
        while (!janet_q_pop(&channel->write_pending, &writer, sizeof(writer))) {
9254
0
            if (writer.thread != &janet_vm) {
9255
0
                JanetVM *vm = writer.thread;
9256
0
                JanetEVGenericMessage msg;
9257
0
                msg.fiber = writer.fiber;
9258
0
                msg.argp = channel;
9259
0
                msg.tag = JANET_CP_MODE_CLOSE;
9260
0
                msg.argi = (int32_t) writer.sched_id;
9261
0
                msg.argj = janet_wrap_nil();
9262
0
                janet_ev_post_event(vm, janet_thread_chan_cb, msg);
9263
0
            } else {
9264
0
                if (writer.mode == JANET_CP_MODE_CHOICE_WRITE) {
9265
0
                    janet_schedule(writer.fiber, janet_wrap_nil());
9266
0
                } else {
9267
0
                    janet_schedule(writer.fiber, make_close_result(channel));
9268
0
                }
9269
0
            }
9270
0
        }
9271
0
        JanetChannelPending reader;
9272
0
        while (!janet_q_pop(&channel->read_pending, &reader, sizeof(reader))) {
9273
0
            if (reader.thread != &janet_vm) {
9274
0
                JanetVM *vm = reader.thread;
9275
0
                JanetEVGenericMessage msg;
9276
0
                msg.fiber = reader.fiber;
9277
0
                msg.argp = channel;
9278
0
                msg.tag = JANET_CP_MODE_CLOSE;
9279
0
                msg.argi = (int32_t) reader.sched_id;
9280
0
                msg.argj = janet_wrap_nil();
9281
0
                janet_ev_post_event(vm, janet_thread_chan_cb, msg);
9282
0
            } else {
9283
0
                if (reader.mode == JANET_CP_MODE_CHOICE_READ) {
9284
0
                    janet_schedule(reader.fiber, janet_wrap_nil());
9285
0
                } else {
9286
0
                    janet_schedule(reader.fiber, make_close_result(channel));
9287
0
                }
9288
0
            }
9289
0
        }
9290
0
    }
9291
0
    janet_chan_unlock(channel);
9292
0
    return argv[0];
9293
0
}
9294
9295
static const JanetMethod ev_chanat_methods[] = {
9296
    {"select", cfun_channel_choice},
9297
    {"rselect", cfun_channel_rchoice},
9298
    {"count", cfun_channel_count},
9299
    {"take", cfun_channel_pop},
9300
    {"give", cfun_channel_push},
9301
    {"capacity", cfun_channel_capacity},
9302
    {"full", cfun_channel_full},
9303
    {"close", cfun_channel_close},
9304
    {NULL, NULL}
9305
};
9306
9307
0
static int janet_chanat_get(void *p, Janet key, Janet *out) {
9308
0
    (void) p;
9309
0
    if (!janet_checktype(key, JANET_KEYWORD)) return 0;
9310
0
    return janet_getmethod(janet_unwrap_keyword(key), ev_chanat_methods, out);
9311
0
}
9312
9313
0
static Janet janet_chanat_next(void *p, Janet key) {
9314
0
    (void) p;
9315
0
    return janet_nextmethod(ev_chanat_methods, key);
9316
0
}
9317
9318
0
static void janet_chanat_marshal(void *p, JanetMarshalContext *ctx) {
9319
0
    JanetChannel *channel = (JanetChannel *)p;
9320
0
    janet_marshal_byte(ctx, channel->closed);
9321
0
    janet_marshal_int(ctx, channel->limit);
9322
0
    int32_t count = janet_q_count(&channel->items);
9323
0
    janet_marshal_int(ctx, count);
9324
0
    JanetQueue *items = &channel->items;
9325
0
    Janet *data = channel->items.data;
9326
0
    if (items->head <= items->tail) {
9327
0
        for (int32_t i = items->head; i < items->tail; i++)
9328
0
            janet_marshal_janet(ctx, data[i]);
9329
0
    } else {
9330
0
        for (int32_t i = items->head; i < items->capacity; i++)
9331
0
            janet_marshal_janet(ctx, data[i]);
9332
0
        for (int32_t i = 0; i < items->tail; i++)
9333
0
            janet_marshal_janet(ctx, data[i]);
9334
0
    }
9335
0
}
9336
9337
0
static void *janet_chanat_unmarshal(JanetMarshalContext *ctx) {
9338
0
    JanetChannel *abst = janet_unmarshal_abstract(ctx, sizeof(JanetChannel));
9339
0
    uint8_t is_closed = janet_unmarshal_byte(ctx);
9340
0
    int32_t limit = janet_unmarshal_int(ctx);
9341
0
    int32_t count = janet_unmarshal_int(ctx);
9342
0
    if (count < 0) janet_panic("invalid negative channel count");
9343
0
    janet_chan_init(abst, limit, 0);
9344
0
    abst->closed = !!is_closed;
9345
0
    for (int32_t i = 0; i < count; i++) {
9346
0
        Janet item = janet_unmarshal_janet(ctx);
9347
0
        janet_q_push(&abst->items, &item, sizeof(item));
9348
0
    }
9349
0
    return abst;
9350
0
}
9351
9352
const JanetAbstractType janet_channel_type = {
9353
    "core/channel",
9354
    janet_chanat_gc,
9355
    janet_chanat_mark,
9356
    janet_chanat_get,
9357
    NULL, /* put */
9358
    janet_chanat_marshal,
9359
    janet_chanat_unmarshal,
9360
    NULL, /* tostring */
9361
    NULL, /* compare */
9362
    NULL, /* hash */
9363
    janet_chanat_next,
9364
    JANET_ATEND_NEXT
9365
};
9366
9367
/* Main event loop */
9368
9369
void janet_loop1_impl(int has_timeout, JanetTimestamp timeout);
9370
9371
0
int janet_loop_done(void) {
9372
0
    return !(janet_vm.listener_count ||
9373
0
             (janet_vm.spawn.head != janet_vm.spawn.tail) ||
9374
0
             janet_vm.tq_count ||
9375
0
             janet_vm.extra_listeners);
9376
0
}
9377
9378
0
JanetFiber *janet_loop1(void) {
9379
    /* Schedule expired timers */
9380
0
    JanetTimeout to;
9381
0
    JanetTimestamp now = ts_now();
9382
0
    while (peek_timeout(&to) && to.when <= now) {
9383
0
        pop_timeout(0);
9384
0
        if (to.curr_fiber != NULL) {
9385
0
            if (janet_fiber_can_resume(to.curr_fiber)) {
9386
0
                janet_cancel(to.fiber, janet_cstringv("deadline expired"));
9387
0
            }
9388
0
        } else {
9389
            /* This is a timeout (for a function call, not a whole fiber) */
9390
0
            if (to.fiber->sched_id == to.sched_id) {
9391
0
                if (to.is_error) {
9392
0
                    janet_cancel(to.fiber, janet_cstringv("timeout"));
9393
0
                } else {
9394
0
                    janet_schedule(to.fiber, janet_wrap_nil());
9395
0
                }
9396
0
            }
9397
0
        }
9398
0
    }
9399
9400
    /* Run scheduled fibers */
9401
0
    while (janet_vm.spawn.head != janet_vm.spawn.tail) {
9402
0
        JanetTask task = {NULL, janet_wrap_nil(), JANET_SIGNAL_OK, 0};
9403
0
        janet_q_pop(&janet_vm.spawn, &task, sizeof(task));
9404
0
        if (task.fiber->gc.flags & JANET_FIBER_EV_FLAG_SUSPENDED) janet_ev_dec_refcount();
9405
0
        task.fiber->gc.flags &= ~(JANET_FIBER_EV_FLAG_CANCELED | JANET_FIBER_EV_FLAG_SUSPENDED);
9406
0
        if (task.expected_sched_id != task.fiber->sched_id) continue;
9407
0
        Janet res;
9408
0
        JanetSignal sig = janet_continue_signal(task.fiber, task.value, &res, task.sig);
9409
0
        if (!janet_fiber_can_resume(task.fiber)) {
9410
0
            janet_table_remove(&janet_vm.active_tasks, janet_wrap_fiber(task.fiber));
9411
0
        }
9412
0
        void *sv = task.fiber->supervisor_channel;
9413
0
        int is_suspended = sig == JANET_SIGNAL_EVENT || sig == JANET_SIGNAL_YIELD || sig == JANET_SIGNAL_INTERRUPT;
9414
0
        if (is_suspended) {
9415
0
            task.fiber->gc.flags |= JANET_FIBER_EV_FLAG_SUSPENDED;
9416
0
            janet_ev_inc_refcount();
9417
0
        }
9418
0
        if (NULL == sv) {
9419
0
            if (!is_suspended) {
9420
0
                janet_stacktrace_ext(task.fiber, res, "");
9421
0
            }
9422
0
        } else if (sig == JANET_SIGNAL_OK || (task.fiber->flags & (1 << sig))) {
9423
0
            JanetChannel *chan = janet_channel_unwrap(sv);
9424
0
            janet_channel_push(chan, make_supervisor_event(janet_signal_names[sig],
9425
0
                               task.fiber, chan->is_threaded), 2);
9426
0
        } else if (!is_suspended) {
9427
0
            janet_stacktrace_ext(task.fiber, res, "");
9428
0
        }
9429
0
        if (sig == JANET_SIGNAL_INTERRUPT) {
9430
            /* On interrupts, return the interrupted fiber immediately */
9431
0
            return task.fiber;
9432
0
        }
9433
0
    }
9434
9435
    /* Poll for events */
9436
0
    if (janet_vm.listener_count || janet_vm.tq_count || janet_vm.extra_listeners) {
9437
0
        JanetTimeout to;
9438
0
        memset(&to, 0, sizeof(to));
9439
0
        int has_timeout;
9440
        /* Drop timeouts that are no longer needed */
9441
0
        while ((has_timeout = peek_timeout(&to))) {
9442
0
            if (to.curr_fiber != NULL) {
9443
0
                if (!janet_fiber_can_resume(to.curr_fiber)) {
9444
0
                    janet_table_remove(&janet_vm.active_tasks, janet_wrap_fiber(to.curr_fiber));
9445
0
                    pop_timeout(0);
9446
0
                    continue;
9447
0
                }
9448
0
            } else if (to.fiber->sched_id != to.sched_id) {
9449
0
                pop_timeout(0);
9450
0
                continue;
9451
0
            }
9452
0
            break;
9453
0
        }
9454
        /* Run polling implementation only if pending timeouts or pending events */
9455
0
        if (janet_vm.tq_count || janet_vm.listener_count || janet_vm.extra_listeners) {
9456
0
            janet_loop1_impl(has_timeout, to.when);
9457
0
        }
9458
0
    }
9459
9460
    /* No fiber was interrupted */
9461
0
    return NULL;
9462
0
}
9463
9464
/* Same as janet_interpreter_interrupt, but will also
9465
 * break out of the event loop if waiting for an event
9466
 * (say, waiting for ev/sleep to finish). Does this by pushing
9467
 * an empty event to the event loop. */
9468
0
void janet_loop1_interrupt(JanetVM *vm) {
9469
0
    janet_interpreter_interrupt(vm);
9470
0
    JanetEVGenericMessage msg = {0};
9471
0
    JanetCallback cb = NULL;
9472
0
    janet_ev_post_event(vm, cb, msg);
9473
0
}
9474
9475
0
void janet_loop(void) {
9476
0
    while (!janet_loop_done()) {
9477
0
        JanetFiber *interrupted_fiber = janet_loop1();
9478
0
        if (NULL != interrupted_fiber) {
9479
0
            janet_schedule(interrupted_fiber, janet_wrap_nil());
9480
0
        }
9481
0
    }
9482
0
}
9483
9484
/*
9485
 * Self-pipe handling code.
9486
 */
9487
9488
#ifdef JANET_WINDOWS
9489
9490
/* On windows, use PostQueuedCompletionStatus instead for
9491
 * custom events */
9492
9493
#else
9494
9495
5.24k
static void janet_ev_setup_selfpipe(void) {
9496
5.24k
    if (janet_make_pipe(janet_vm.selfpipe, 0)) {
9497
0
        JANET_EXIT("failed to initialize self pipe in event loop");
9498
0
    }
9499
5.24k
}
9500
9501
/* Handle events from the self pipe inside the event loop */
9502
0
static void janet_ev_handle_selfpipe(void) {
9503
0
    JanetSelfPipeEvent response;
9504
0
    while (read(janet_vm.selfpipe[0], &response, sizeof(response)) > 0) {
9505
0
        if (NULL != response.cb) {
9506
0
            response.cb(response.msg);
9507
0
        }
9508
0
    }
9509
0
}
9510
9511
5.24k
static void janet_ev_cleanup_selfpipe(void) {
9512
5.24k
    close(janet_vm.selfpipe[0]);
9513
5.24k
    close(janet_vm.selfpipe[1]);
9514
5.24k
}
9515
9516
#endif
9517
9518
#ifdef JANET_WINDOWS
9519
9520
static JanetTimestamp ts_now(void) {
9521
    return (JanetTimestamp) GetTickCount64();
9522
}
9523
9524
void janet_ev_init(void) {
9525
    janet_ev_init_common();
9526
    janet_vm.iocp = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0);
9527
    if (NULL == janet_vm.iocp) janet_panic("could not create io completion port");
9528
}
9529
9530
void janet_ev_deinit(void) {
9531
    janet_ev_deinit_common();
9532
    CloseHandle(janet_vm.iocp);
9533
}
9534
9535
JanetListenerState *janet_listen(JanetStream *stream, JanetListener behavior, int mask, size_t size, void *user) {
9536
    /* Add the handle to the io completion port if not already added */
9537
    JanetListenerState *state = janet_listen_impl(stream, behavior, mask, size, user);
9538
    if (!(stream->flags & JANET_STREAM_IOCP)) {
9539
        if (NULL == CreateIoCompletionPort(stream->handle, janet_vm.iocp, (ULONG_PTR) stream, 0)) {
9540
            janet_panicf("failed to listen for events: %V", janet_ev_lasterr());
9541
        }
9542
        stream->flags |= JANET_STREAM_IOCP;
9543
    }
9544
    return state;
9545
}
9546
9547
9548
static void janet_unlisten(JanetListenerState *state, int is_gc) {
9549
    janet_unlisten_impl(state, is_gc);
9550
}
9551
9552
void janet_loop1_impl(int has_timeout, JanetTimestamp to) {
9553
    ULONG_PTR completionKey = 0;
9554
    DWORD num_bytes_transfered = 0;
9555
    LPOVERLAPPED overlapped = NULL;
9556
9557
    /* Calculate how long to wait before timeout */
9558
    uint64_t waittime;
9559
    if (has_timeout) {
9560
        JanetTimestamp now = ts_now();
9561
        if (now > to) {
9562
            waittime = 0;
9563
        } else {
9564
            waittime = (uint64_t)(to - now);
9565
        }
9566
    } else {
9567
        waittime = INFINITE;
9568
    }
9569
    BOOL result = GetQueuedCompletionStatus(janet_vm.iocp, &num_bytes_transfered, &completionKey, &overlapped, (DWORD) waittime);
9570
9571
    if (result || overlapped) {
9572
        if (0 == completionKey) {
9573
            /* Custom event */
9574
            JanetSelfPipeEvent *response = (JanetSelfPipeEvent *)(overlapped);
9575
            if (NULL != response->cb) {
9576
                response->cb(response->msg);
9577
            }
9578
            janet_free(response);
9579
        } else {
9580
            /* Normal event */
9581
            JanetStream *stream = (JanetStream *) completionKey;
9582
            JanetListenerState *state = stream->state;
9583
            while (state != NULL) {
9584
                if (state->tag == overlapped) {
9585
                    state->event = overlapped;
9586
                    state->bytes = num_bytes_transfered;
9587
                    JanetAsyncStatus status = state->machine(state, JANET_ASYNC_EVENT_COMPLETE);
9588
                    if (status == JANET_ASYNC_STATUS_DONE) {
9589
                        janet_unlisten(state, 0);
9590
                    }
9591
                    break;
9592
                } else {
9593
                    state = state->_next;
9594
                }
9595
            }
9596
            /* Close the stream if requested and no more listeners are left */
9597
            if ((stream->flags & JANET_STREAM_TOCLOSE) && !stream->state) {
9598
                janet_stream_close(stream);
9599
            }
9600
        }
9601
    }
9602
}
9603
9604
#elif defined(JANET_EV_EPOLL)
9605
9606
0
static JanetTimestamp ts_now(void) {
9607
0
    struct timespec now;
9608
0
    janet_assert(-1 != clock_gettime(CLOCK_MONOTONIC, &now), "failed to get time");
9609
0
    uint64_t res = 1000 * now.tv_sec;
9610
0
    res += now.tv_nsec / 1000000;
9611
0
    return res;
9612
0
}
9613
9614
0
static int make_epoll_events(int mask) {
9615
0
    int events = 0;
9616
0
    if (mask & JANET_ASYNC_LISTEN_READ)
9617
0
        events |= EPOLLIN;
9618
0
    if (mask & JANET_ASYNC_LISTEN_WRITE)
9619
0
        events |= EPOLLOUT;
9620
0
    return events;
9621
0
}
9622
9623
0
static void janet_epoll_sync_callback(JanetEVGenericMessage msg) {
9624
0
    JanetListenerState *state = msg.argp;
9625
0
    JanetAsyncStatus status1 = JANET_ASYNC_STATUS_NOT_DONE;
9626
0
    JanetAsyncStatus status2 = JANET_ASYNC_STATUS_NOT_DONE;
9627
0
    if (state->stream->_mask & JANET_ASYNC_LISTEN_WRITE)
9628
0
        status1 = state->machine(state, JANET_ASYNC_EVENT_WRITE);
9629
0
    if (state->stream->_mask & JANET_ASYNC_LISTEN_READ)
9630
0
        status2 = state->machine(state, JANET_ASYNC_EVENT_READ);
9631
0
    if (status1 == JANET_ASYNC_STATUS_DONE ||
9632
0
            status2 == JANET_ASYNC_STATUS_DONE) {
9633
0
        janet_unlisten(state, 0);
9634
0
    } else {
9635
        /* Repost event */
9636
0
        janet_ev_post_event(NULL, janet_epoll_sync_callback, msg);
9637
0
    }
9638
0
}
9639
9640
/* Wait for the next event */
9641
0
JanetListenerState *janet_listen(JanetStream *stream, JanetListener behavior, int mask, size_t size, void *user) {
9642
0
    int is_first = !(stream->state);
9643
0
    int op = is_first ? EPOLL_CTL_ADD : EPOLL_CTL_MOD;
9644
0
    JanetListenerState *state = janet_listen_impl(stream, behavior, mask, size, user);
9645
0
    struct epoll_event ev;
9646
0
    ev.events = make_epoll_events(state->stream->_mask);
9647
0
    ev.data.ptr = stream;
9648
0
    int status;
9649
0
    do {
9650
0
        status = epoll_ctl(janet_vm.epoll, op, stream->handle, &ev);
9651
0
    } while (status == -1 && errno == EINTR);
9652
0
    if (status == -1) {
9653
0
        if (errno == EPERM) {
9654
            /* Couldn't add to event loop, so assume that it completes
9655
             * synchronously. In that case, fire the completion
9656
             * event manually, since this should be a read or write
9657
             * event to a file. So we just post a custom event to do the read/write
9658
             * asap. */
9659
            /* Use flag to indicate state is not registered in epoll */
9660
0
            state->_mask |= (1 << JANET_ASYNC_EVENT_COMPLETE);
9661
0
            JanetEVGenericMessage msg = {0};
9662
0
            msg.argp = state;
9663
0
            janet_ev_post_event(NULL, janet_epoll_sync_callback, msg);
9664
0
        } else {
9665
            /* Unexpected error */
9666
0
            janet_unlisten_impl(state, 0);
9667
0
            janet_panicv(janet_ev_lasterr());
9668
0
        }
9669
0
    }
9670
0
    return state;
9671
0
}
9672
9673
/* Tell system we are done listening for a certain event */
9674
0
static void janet_unlisten(JanetListenerState *state, int is_gc) {
9675
0
    JanetStream *stream = state->stream;
9676
0
    if (!(stream->flags & JANET_STREAM_CLOSED)) {
9677
        /* Use flag to indicate state is not registered in epoll */
9678
0
        if (!(state->_mask & (1 << JANET_ASYNC_EVENT_COMPLETE))) {
9679
0
            int is_last = (state->_next == NULL && stream->state == state);
9680
0
            int op = is_last ? EPOLL_CTL_DEL : EPOLL_CTL_MOD;
9681
0
            struct epoll_event ev;
9682
0
            ev.events = make_epoll_events(stream->_mask & ~state->_mask);
9683
0
            ev.data.ptr = stream;
9684
0
            int status;
9685
0
            do {
9686
0
                status = epoll_ctl(janet_vm.epoll, op, stream->handle, &ev);
9687
0
            } while (status == -1 && errno == EINTR);
9688
0
            if (status == -1) {
9689
0
                janet_panicv(janet_ev_lasterr());
9690
0
            }
9691
0
        }
9692
0
    }
9693
    /* Destroy state machine and free memory */
9694
0
    janet_unlisten_impl(state, is_gc);
9695
0
}
9696
9697
0
#define JANET_EPOLL_MAX_EVENTS 64
9698
0
void janet_loop1_impl(int has_timeout, JanetTimestamp timeout) {
9699
0
    struct itimerspec its;
9700
0
    if (janet_vm.timer_enabled || has_timeout) {
9701
0
        memset(&its, 0, sizeof(its));
9702
0
        if (has_timeout) {
9703
0
            its.it_value.tv_sec = timeout / 1000;
9704
0
            its.it_value.tv_nsec = (timeout % 1000) * 1000000;
9705
0
        }
9706
0
        timerfd_settime(janet_vm.timerfd, TFD_TIMER_ABSTIME, &its, NULL);
9707
0
    }
9708
0
    janet_vm.timer_enabled = has_timeout;
9709
9710
    /* Poll for events */
9711
0
    struct epoll_event events[JANET_EPOLL_MAX_EVENTS];
9712
0
    int ready;
9713
0
    do {
9714
0
        ready = epoll_wait(janet_vm.epoll, events, JANET_EPOLL_MAX_EVENTS, -1);
9715
0
    } while (ready == -1 && errno == EINTR);
9716
0
    if (ready == -1) {
9717
0
        JANET_EXIT("failed to poll events");
9718
0
    }
9719
9720
    /* Step state machines */
9721
0
    for (int i = 0; i < ready; i++) {
9722
0
        void *p = events[i].data.ptr;
9723
0
        if (&janet_vm.timerfd == p) {
9724
0
            /* Timer expired, ignore */;
9725
0
        } else if (janet_vm.selfpipe == p) {
9726
            /* Self-pipe handling */
9727
0
            janet_ev_handle_selfpipe();
9728
0
        } else {
9729
0
            JanetStream *stream = p;
9730
0
            int mask = events[i].events;
9731
0
            JanetListenerState *state = stream->state;
9732
0
            while (NULL != state) {
9733
0
                state->event = events + i;
9734
0
                JanetListenerState *next_state = state->_next;
9735
0
                JanetAsyncStatus status1 = JANET_ASYNC_STATUS_NOT_DONE;
9736
0
                JanetAsyncStatus status2 = JANET_ASYNC_STATUS_NOT_DONE;
9737
0
                JanetAsyncStatus status3 = JANET_ASYNC_STATUS_NOT_DONE;
9738
0
                JanetAsyncStatus status4 = JANET_ASYNC_STATUS_NOT_DONE;
9739
0
                if (mask & EPOLLOUT)
9740
0
                    status1 = state->machine(state, JANET_ASYNC_EVENT_WRITE);
9741
0
                if (mask & EPOLLIN)
9742
0
                    status2 = state->machine(state, JANET_ASYNC_EVENT_READ);
9743
0
                if (mask & EPOLLERR)
9744
0
                    status3 = state->machine(state, JANET_ASYNC_EVENT_ERR);
9745
0
                if ((mask & EPOLLHUP) && !(mask & (EPOLLOUT | EPOLLIN)))
9746
0
                    status4 = state->machine(state, JANET_ASYNC_EVENT_HUP);
9747
0
                if (status1 == JANET_ASYNC_STATUS_DONE ||
9748
0
                        status2 == JANET_ASYNC_STATUS_DONE ||
9749
0
                        status3 == JANET_ASYNC_STATUS_DONE ||
9750
0
                        status4 == JANET_ASYNC_STATUS_DONE)
9751
0
                    janet_unlisten(state, 0);
9752
0
                state = next_state;
9753
0
            }
9754
            /* Close the stream if requested and no more listeners are left */
9755
0
            if ((stream->flags & JANET_STREAM_TOCLOSE) && !stream->state) {
9756
0
                janet_stream_close(stream);
9757
0
            }
9758
0
        }
9759
0
    }
9760
0
}
9761
9762
5.24k
void janet_ev_init(void) {
9763
5.24k
    janet_ev_init_common();
9764
5.24k
    janet_ev_setup_selfpipe();
9765
5.24k
    janet_vm.epoll = epoll_create1(EPOLL_CLOEXEC);
9766
5.24k
    janet_vm.timerfd = timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC | TFD_NONBLOCK);
9767
5.24k
    janet_vm.timer_enabled = 0;
9768
5.24k
    if (janet_vm.epoll == -1 || janet_vm.timerfd == -1) goto error;
9769
5.24k
    struct epoll_event ev;
9770
5.24k
    ev.events = EPOLLIN | EPOLLET;
9771
5.24k
    ev.data.ptr = &janet_vm.timerfd;
9772
5.24k
    if (-1 == epoll_ctl(janet_vm.epoll, EPOLL_CTL_ADD, janet_vm.timerfd, &ev)) goto error;
9773
5.24k
    ev.events = EPOLLIN | EPOLLET;
9774
5.24k
    ev.data.ptr = janet_vm.selfpipe;
9775
5.24k
    if (-1 == epoll_ctl(janet_vm.epoll, EPOLL_CTL_ADD, janet_vm.selfpipe[0], &ev)) goto error;
9776
5.24k
    return;
9777
5.24k
error:
9778
0
    JANET_EXIT("failed to initialize event loop");
9779
0
}
9780
9781
5.24k
void janet_ev_deinit(void) {
9782
5.24k
    janet_ev_deinit_common();
9783
5.24k
    close(janet_vm.epoll);
9784
5.24k
    close(janet_vm.timerfd);
9785
5.24k
    janet_ev_cleanup_selfpipe();
9786
5.24k
    janet_vm.epoll = 0;
9787
5.24k
}
9788
9789
/*
9790
 * End epoll implementation
9791
 */
9792
9793
#elif defined(JANET_EV_KQUEUE)
9794
/* Definition from:
9795
 *   https://github.com/wahern/cqueues/blob/master/src/lib/kpoll.c
9796
 * NetBSD uses intptr_t while others use void * for .udata */
9797
#define EV_SETx(ev, a, b, c, d, e, f) EV_SET((ev), (a), (b), (c), (d), (e), ((__typeof__((ev)->udata))(f)))
9798
#define JANET_KQUEUE_TF (EV_ADD | EV_ENABLE | EV_CLEAR | EV_ONESHOT)
9799
#define JANET_KQUEUE_MIN_INTERVAL 0
9800
9801
/* NOTE:
9802
 * NetBSD and OpenBSD expect things are always intervals, and FreeBSD doesn't
9803
 * like an ABSTIME in the past so just use intervals always. Introduces a
9804
 * calculation to determine the minimum timeout per timeout requested of
9805
 * kqueue. Also note that NetBSD doesn't accept timeout intervals less than 1
9806
 * millisecond, so correct all intervals on that platform to be at least 1
9807
 * millisecond.*/
9808
JanetTimestamp to_interval(const JanetTimestamp ts) {
9809
    return ts >= JANET_KQUEUE_MIN_INTERVAL ? ts : JANET_KQUEUE_MIN_INTERVAL;
9810
}
9811
#define JANET_KQUEUE_INTERVAL(timestamp) (to_interval((timestamp - ts_now())))
9812
9813
static JanetTimestamp ts_now(void) {
9814
    struct timespec now;
9815
    janet_assert(-1 != clock_gettime(CLOCK_MONOTONIC, &now), "failed to get time");
9816
    uint64_t res = 1000 * now.tv_sec;
9817
    res += now.tv_nsec / 1000000;
9818
    return res;
9819
}
9820
9821
/* NOTE: Assumes Janet's timestamp precision is in milliseconds. */
9822
static void timestamp2timespec(struct timespec *t, JanetTimestamp ts) {
9823
    t->tv_sec = ts == 0 ? 0 : ts / 1000;
9824
    t->tv_nsec = ts == 0 ? 0 : (ts % 1000) * 1000000;
9825
}
9826
9827
void add_kqueue_events(const struct kevent *events, int length) {
9828
    /* NOTE: Status should be equal to the amount of events added, which isn't
9829
     * always known since deletions or modifications occur. Can't use the
9830
     * eventlist argument for it to report to us what failed otherwise we may
9831
     * poll in events to handle! This code assumes atomicity, that kqueue can
9832
     * either succeed or fail, but never partially (which is seemingly how it
9833
     * works in practice). When encountering an "inbetween" state we currently
9834
     * just panic!
9835
     *
9836
     * The FreeBSD man page kqueue(2) shows a check through the change list to
9837
     * check if kqueue had an error with any of the events being pushed to
9838
     * change. Maybe we should do this, even tho the man page also doesn't
9839
     * note that kqueue actually does this. We do not do this at this time.  */
9840
    int status;
9841
    status = kevent(janet_vm.kq, events, length, NULL, 0, NULL);
9842
    if (status == -1 && errno != EINTR)
9843
        janet_panicv(janet_ev_lasterr());
9844
}
9845
9846
JanetListenerState *janet_listen(JanetStream *stream, JanetListener behavior, int mask, size_t size, void *user) {
9847
    JanetListenerState *state = janet_listen_impl(stream, behavior, mask, size, user);
9848
    struct kevent kev[2];
9849
9850
    int length = 0;
9851
    if (state->stream->_mask & JANET_ASYNC_LISTEN_READ) {
9852
        EV_SETx(&kev[length], stream->handle, EVFILT_READ, EV_ADD | EV_ENABLE, 0, 0, stream);
9853
        length++;
9854
    }
9855
    if (state->stream->_mask & JANET_ASYNC_LISTEN_WRITE) {
9856
        EV_SETx(&kev[length], stream->handle, EVFILT_WRITE, EV_ADD | EV_ENABLE, 0, 0, stream);
9857
        length++;
9858
    }
9859
9860
    if (length > 0) {
9861
        add_kqueue_events(kev, length);
9862
    }
9863
9864
    return state;
9865
}
9866
9867
static void janet_unlisten(JanetListenerState *state, int is_gc) {
9868
    JanetStream *stream = state->stream;
9869
    if (!(stream->flags & JANET_STREAM_CLOSED)) {
9870
        /* Use flag to indicate state is not registered in kqueue */
9871
        if (!(state->_mask & (1 << JANET_ASYNC_EVENT_COMPLETE))) {
9872
            int is_last = (state->_next == NULL && stream->state == state);
9873
            int op = is_last ? EV_DELETE : EV_DISABLE | EV_ADD;
9874
            struct kevent kev[2];
9875
            EV_SETx(&kev[1], stream->handle, EVFILT_WRITE, op, 0, 0, stream);
9876
9877
            int length = 0;
9878
            if (stream->_mask & JANET_ASYNC_EVENT_WRITE) {
9879
                EV_SETx(&kev[length], stream->handle, EVFILT_WRITE, op, 0, 0, stream);
9880
                length++;
9881
            }
9882
            if (stream->_mask & JANET_ASYNC_EVENT_READ) {
9883
                EV_SETx(&kev[length], stream->handle, EVFILT_READ, op, 0, 0, stream);
9884
                length++;
9885
            }
9886
9887
            add_kqueue_events(kev, length);
9888
        }
9889
    }
9890
    janet_unlisten_impl(state, is_gc);
9891
}
9892
9893
#define JANET_KQUEUE_MAX_EVENTS 64
9894
9895
void janet_loop1_impl(int has_timeout, JanetTimestamp timeout) {
9896
    /* Poll for events */
9897
    /* NOTE:
9898
     * We calculate the timeout interval per iteration. When the interval
9899
     * drops to 0 or negative, we effect a timeout of 0. Effecting a timeout
9900
     * of infinity will not work and could make other fibers with timeouts
9901
     * miss their timeouts if we did so.
9902
     * JANET_KQUEUE_INTERVAL insures we have a timeout of no less than 0. */
9903
    int status;
9904
    struct timespec ts;
9905
    struct kevent events[JANET_KQUEUE_MAX_EVENTS];
9906
    do {
9907
        if (janet_vm.timer_enabled || has_timeout) {
9908
            timestamp2timespec(&ts, JANET_KQUEUE_INTERVAL(timeout));
9909
            status = kevent(janet_vm.kq, NULL, 0, events,
9910
                            JANET_KQUEUE_MAX_EVENTS, &ts);
9911
        } else {
9912
            status = kevent(janet_vm.kq, NULL, 0, events,
9913
                            JANET_KQUEUE_MAX_EVENTS, NULL);
9914
        }
9915
    } while (status == -1 && errno == EINTR);
9916
    if (status == -1)
9917
        JANET_EXIT("failed to poll events");
9918
9919
    /* Make sure timer is set accordingly. */
9920
    janet_vm.timer_enabled = has_timeout;
9921
9922
    /* Step state machines */
9923
    for (int i = 0; i < status; i++) {
9924
        void *p = (void *) events[i].udata;
9925
        if (janet_vm.selfpipe == p) {
9926
            /* Self-pipe handling */
9927
            janet_ev_handle_selfpipe();
9928
        } else {
9929
            JanetStream *stream = p;
9930
            JanetListenerState *state = stream->state;
9931
            while (NULL != state) {
9932
                JanetListenerState *next_state = state->_next;
9933
                state->event = events + i;
9934
                JanetAsyncStatus statuses[4];
9935
                for (int i = 0; i < 4; i++)
9936
                    statuses[i] = JANET_ASYNC_STATUS_NOT_DONE;
9937
9938
                if (!(events[i].flags & EV_ERROR)) {
9939
                    if (events[i].filter == EVFILT_WRITE)
9940
                        statuses[0] = state->machine(state, JANET_ASYNC_EVENT_WRITE);
9941
                    if (events[i].filter == EVFILT_READ)
9942
                        statuses[1] = state->machine(state, JANET_ASYNC_EVENT_READ);
9943
                    if ((events[i].flags & EV_EOF) && !(events[i].data > 0))
9944
                        statuses[3] = state->machine(state, JANET_ASYNC_EVENT_HUP);
9945
                } else {
9946
                    statuses[2] = state->machine(state, JANET_ASYNC_EVENT_ERR);
9947
                }
9948
                if (statuses[0] == JANET_ASYNC_STATUS_DONE ||
9949
                        statuses[1] == JANET_ASYNC_STATUS_DONE ||
9950
                        statuses[2] == JANET_ASYNC_STATUS_DONE ||
9951
                        statuses[3] == JANET_ASYNC_STATUS_DONE)
9952
                    janet_unlisten(state, 0);
9953
9954
                state = next_state;
9955
            }
9956
            /* Close the stream if requested and no more listeners are left */
9957
            if ((stream->flags & JANET_STREAM_TOCLOSE) && !stream->state) {
9958
                janet_stream_close(stream);
9959
            }
9960
        }
9961
    }
9962
}
9963
9964
void janet_ev_init(void) {
9965
    janet_ev_init_common();
9966
    janet_ev_setup_selfpipe();
9967
    janet_vm.kq = kqueue();
9968
    janet_vm.timer_enabled = 0;
9969
    if (janet_vm.kq == -1) goto error;
9970
    struct kevent event;
9971
    EV_SETx(&event, janet_vm.selfpipe[0], EVFILT_READ, EV_ADD | EV_ENABLE, 0, 0, janet_vm.selfpipe);
9972
    add_kqueue_events(&event, 1);
9973
    return;
9974
error:
9975
    JANET_EXIT("failed to initialize event loop");
9976
}
9977
9978
void janet_ev_deinit(void) {
9979
    janet_ev_deinit_common();
9980
    close(janet_vm.kq);
9981
    janet_ev_cleanup_selfpipe();
9982
    janet_vm.kq = 0;
9983
}
9984
9985
#else
9986
9987
#include <poll.h>
9988
9989
static JanetTimestamp ts_now(void) {
9990
    struct timespec now;
9991
    janet_assert(-1 != clock_gettime(CLOCK_REALTIME, &now), "failed to get time");
9992
    uint64_t res = 1000 * now.tv_sec;
9993
    res += now.tv_nsec / 1000000;
9994
    return res;
9995
}
9996
9997
static int make_poll_events(int mask) {
9998
    int events = 0;
9999
    if (mask & JANET_ASYNC_LISTEN_READ)
10000
        events |= POLLIN;
10001
    if (mask & JANET_ASYNC_LISTEN_WRITE)
10002
        events |= POLLOUT;
10003
    return events;
10004
}
10005
10006
/* Wait for the next event */
10007
JanetListenerState *janet_listen(JanetStream *stream, JanetListener behavior, int mask, size_t size, void *user) {
10008
    size_t oldsize = janet_vm.listener_cap;
10009
    JanetListenerState *state = janet_listen_impl(stream, behavior, mask, size, user);
10010
    size_t newsize = janet_vm.listener_cap;
10011
    if (newsize > oldsize) {
10012
        janet_vm.fds = janet_realloc(janet_vm.fds, (newsize + 1) * sizeof(struct pollfd));
10013
        if (NULL == janet_vm.fds) {
10014
            JANET_OUT_OF_MEMORY;
10015
        }
10016
    }
10017
    struct pollfd ev;
10018
    ev.fd = stream->handle;
10019
    ev.events = make_poll_events(state->stream->_mask);
10020
    ev.revents = 0;
10021
    janet_vm.fds[state->_index + 1] = ev;
10022
    return state;
10023
}
10024
10025
static void janet_unlisten(JanetListenerState *state, int is_gc) {
10026
    janet_vm.fds[state->_index + 1] = janet_vm.fds[janet_vm.listener_count];
10027
    janet_unlisten_impl(state, is_gc);
10028
}
10029
10030
void janet_loop1_impl(int has_timeout, JanetTimestamp timeout) {
10031
    /* Poll for events */
10032
    int ready;
10033
    do {
10034
        int to = -1;
10035
        if (has_timeout) {
10036
            JanetTimestamp now = ts_now();
10037
            to = now > timeout ? 0 : (int)(timeout - now);
10038
        }
10039
        ready = poll(janet_vm.fds, janet_vm.listener_count + 1, to);
10040
    } while (ready == -1 && errno == EINTR);
10041
    if (ready == -1) {
10042
        JANET_EXIT("failed to poll events");
10043
    }
10044
10045
    /* Check selfpipe */
10046
    if (janet_vm.fds[0].revents & POLLIN) {
10047
        janet_vm.fds[0].revents = 0;
10048
        janet_ev_handle_selfpipe();
10049
    }
10050
10051
    /* Step state machines */
10052
    for (size_t i = 0; i < janet_vm.listener_count; i++) {
10053
        struct pollfd *pfd = janet_vm.fds + i + 1;
10054
        /* Skip fds where nothing interesting happened */
10055
        JanetListenerState *state = janet_vm.listeners[i];
10056
        /* Normal event */
10057
        int mask = pfd->revents;
10058
        JanetAsyncStatus status1 = JANET_ASYNC_STATUS_NOT_DONE;
10059
        JanetAsyncStatus status2 = JANET_ASYNC_STATUS_NOT_DONE;
10060
        JanetAsyncStatus status3 = JANET_ASYNC_STATUS_NOT_DONE;
10061
        JanetAsyncStatus status4 = JANET_ASYNC_STATUS_NOT_DONE;
10062
        state->event = pfd;
10063
        JanetStream *stream = state->stream;
10064
        if (mask & POLLOUT)
10065
            status1 = state->machine(state, JANET_ASYNC_EVENT_WRITE);
10066
        if (mask & POLLIN)
10067
            status2 = state->machine(state, JANET_ASYNC_EVENT_READ);
10068
        if (mask & POLLERR)
10069
            status3 = state->machine(state, JANET_ASYNC_EVENT_ERR);
10070
        if ((mask & POLLHUP) && !(mask & (POLLIN | POLLOUT)))
10071
            status4 = state->machine(state, JANET_ASYNC_EVENT_HUP);
10072
        if (status1 == JANET_ASYNC_STATUS_DONE ||
10073
                status2 == JANET_ASYNC_STATUS_DONE ||
10074
                status3 == JANET_ASYNC_STATUS_DONE ||
10075
                status4 == JANET_ASYNC_STATUS_DONE)
10076
            janet_unlisten(state, 0);
10077
        /* Close the stream if requested and no more listeners are left */
10078
        if ((stream->flags & JANET_STREAM_TOCLOSE) && !stream->state) {
10079
            janet_stream_close(stream);
10080
        }
10081
    }
10082
}
10083
10084
void janet_ev_init(void) {
10085
    janet_ev_init_common();
10086
    janet_vm.fds = NULL;
10087
    janet_ev_setup_selfpipe();
10088
    janet_vm.fds = janet_malloc(sizeof(struct pollfd));
10089
    if (NULL == janet_vm.fds) {
10090
        JANET_OUT_OF_MEMORY;
10091
    }
10092
    janet_vm.fds[0].fd = janet_vm.selfpipe[0];
10093
    janet_vm.fds[0].events = POLLIN;
10094
    janet_vm.fds[0].revents = 0;
10095
    return;
10096
}
10097
10098
void janet_ev_deinit(void) {
10099
    janet_ev_deinit_common();
10100
    janet_ev_cleanup_selfpipe();
10101
    janet_free(janet_vm.fds);
10102
    janet_vm.fds = NULL;
10103
}
10104
10105
#endif
10106
10107
/*
10108
 * End poll implementation
10109
 */
10110
10111
/*
10112
 * Generic Callback system. Post a function pointer + data to the event loop (from another
10113
 * thread or even a signal handler). Allows posting events from another thread or signal handler.
10114
 */
10115
0
void janet_ev_post_event(JanetVM *vm, JanetCallback cb, JanetEVGenericMessage msg) {
10116
0
    vm = vm ? vm : &janet_vm;
10117
#ifdef JANET_WINDOWS
10118
    JanetHandle iocp = vm->iocp;
10119
    JanetSelfPipeEvent *event = janet_malloc(sizeof(JanetSelfPipeEvent));
10120
    if (NULL == event) {
10121
        JANET_OUT_OF_MEMORY;
10122
    }
10123
    event->msg = msg;
10124
    event->cb = cb;
10125
    janet_assert(PostQueuedCompletionStatus(iocp,
10126
                                            sizeof(JanetSelfPipeEvent),
10127
                                            0,
10128
                                            (LPOVERLAPPED) event),
10129
                 "failed to post completion event");
10130
#else
10131
0
    JanetSelfPipeEvent event;
10132
0
    memset(&event, 0, sizeof(event));
10133
0
    event.msg = msg;
10134
0
    event.cb = cb;
10135
0
    int fd = vm->selfpipe[1];
10136
    /* handle a bit of back pressure before giving up. */
10137
0
    int tries = 4;
10138
0
    while (tries > 0) {
10139
0
        int status;
10140
0
        do {
10141
0
            status = write(fd, &event, sizeof(event));
10142
0
        } while (status == -1 && errno == EINTR);
10143
0
        if (status > 0) break;
10144
0
        sleep(0);
10145
0
        tries--;
10146
0
    }
10147
0
    janet_assert(tries > 0, "failed to write event to self-pipe");
10148
0
#endif
10149
0
}
10150
10151
/*
10152
 * Threaded calls
10153
 */
10154
10155
#ifdef JANET_WINDOWS
10156
static DWORD WINAPI janet_thread_body(LPVOID ptr) {
10157
    JanetEVThreadInit *init = (JanetEVThreadInit *)ptr;
10158
    JanetEVGenericMessage msg = init->msg;
10159
    JanetThreadedSubroutine subr = init->subr;
10160
    JanetThreadedCallback cb = init->cb;
10161
    JanetHandle iocp = init->write_pipe;
10162
    /* Reuse memory from thread init for returning data */
10163
    init->msg = subr(msg);
10164
    init->cb = cb;
10165
    janet_assert(PostQueuedCompletionStatus(iocp,
10166
                                            sizeof(JanetSelfPipeEvent),
10167
                                            0,
10168
                                            (LPOVERLAPPED) init),
10169
                 "failed to post completion event");
10170
    return 0;
10171
}
10172
#else
10173
0
static void *janet_thread_body(void *ptr) {
10174
0
    JanetEVThreadInit *init = (JanetEVThreadInit *)ptr;
10175
0
    JanetEVGenericMessage msg = init->msg;
10176
0
    JanetThreadedSubroutine subr = init->subr;
10177
0
    JanetThreadedCallback cb = init->cb;
10178
0
    int fd = init->write_pipe;
10179
0
    janet_free(init);
10180
0
    JanetSelfPipeEvent response;
10181
0
    memset(&response, 0, sizeof(response));
10182
0
    response.msg = subr(msg);
10183
0
    response.cb = cb;
10184
    /* handle a bit of back pressure before giving up. */
10185
0
    int tries = 4;
10186
0
    while (tries > 0) {
10187
0
        int status;
10188
0
        do {
10189
0
            status = write(fd, &response, sizeof(response));
10190
0
        } while (status == -1 && errno == EINTR);
10191
0
        if (status > 0) break;
10192
0
        sleep(1);
10193
0
        tries--;
10194
0
    }
10195
0
    return NULL;
10196
0
}
10197
#endif
10198
10199
0
void janet_ev_threaded_call(JanetThreadedSubroutine fp, JanetEVGenericMessage arguments, JanetThreadedCallback cb) {
10200
0
    JanetEVThreadInit *init = janet_malloc(sizeof(JanetEVThreadInit));
10201
0
    if (NULL == init) {
10202
0
        JANET_OUT_OF_MEMORY;
10203
0
    }
10204
0
    init->msg = arguments;
10205
0
    init->subr = fp;
10206
0
    init->cb = cb;
10207
10208
#ifdef JANET_WINDOWS
10209
    init->write_pipe = janet_vm.iocp;
10210
    HANDLE thread_handle = CreateThread(NULL, 0, janet_thread_body, init, 0, NULL);
10211
    if (NULL == thread_handle) {
10212
        janet_free(init);
10213
        janet_panic("failed to create thread");
10214
    }
10215
    CloseHandle(thread_handle); /* detach from thread */
10216
#else
10217
0
    init->write_pipe = janet_vm.selfpipe[1];
10218
0
    pthread_t waiter_thread;
10219
0
    int err = pthread_create(&waiter_thread, &janet_vm.new_thread_attr, janet_thread_body, init);
10220
0
    if (err) {
10221
0
        janet_free(init);
10222
0
        janet_panicf("%s", strerror(err));
10223
0
    }
10224
0
#endif
10225
10226
    /* Increment ev refcount so we don't quit while waiting for a subprocess */
10227
0
    janet_ev_inc_refcount();
10228
0
}
10229
10230
/* Default callback for janet_ev_threaded_await. */
10231
0
void janet_ev_default_threaded_callback(JanetEVGenericMessage return_value) {
10232
0
    janet_ev_dec_refcount();
10233
0
    if (return_value.fiber == NULL) {
10234
0
        return;
10235
0
    }
10236
0
    switch (return_value.tag) {
10237
0
        default:
10238
0
        case JANET_EV_TCTAG_NIL:
10239
0
            janet_schedule(return_value.fiber, janet_wrap_nil());
10240
0
            break;
10241
0
        case JANET_EV_TCTAG_INTEGER:
10242
0
            janet_schedule(return_value.fiber, janet_wrap_integer(return_value.argi));
10243
0
            break;
10244
0
        case JANET_EV_TCTAG_STRING:
10245
0
        case JANET_EV_TCTAG_STRINGF:
10246
0
            janet_schedule(return_value.fiber, janet_cstringv((const char *) return_value.argp));
10247
0
            if (return_value.tag == JANET_EV_TCTAG_STRINGF) janet_free(return_value.argp);
10248
0
            break;
10249
0
        case JANET_EV_TCTAG_KEYWORD:
10250
0
            janet_schedule(return_value.fiber, janet_ckeywordv((const char *) return_value.argp));
10251
0
            break;
10252
0
        case JANET_EV_TCTAG_ERR_STRING:
10253
0
        case JANET_EV_TCTAG_ERR_STRINGF:
10254
0
            janet_cancel(return_value.fiber, janet_cstringv((const char *) return_value.argp));
10255
0
            if (return_value.tag == JANET_EV_TCTAG_STRINGF) janet_free(return_value.argp);
10256
0
            break;
10257
0
        case JANET_EV_TCTAG_ERR_KEYWORD:
10258
0
            janet_cancel(return_value.fiber, janet_ckeywordv((const char *) return_value.argp));
10259
0
            break;
10260
0
        case JANET_EV_TCTAG_BOOLEAN:
10261
0
            janet_schedule(return_value.fiber, janet_wrap_boolean(return_value.argi));
10262
0
            break;
10263
0
    }
10264
0
    janet_gcunroot(janet_wrap_fiber(return_value.fiber));
10265
0
}
10266
10267
10268
/* Convenience method for common case */
10269
JANET_NO_RETURN
10270
0
void janet_ev_threaded_await(JanetThreadedSubroutine fp, int tag, int argi, void *argp) {
10271
0
    JanetEVGenericMessage arguments;
10272
0
    memset(&arguments, 0, sizeof(arguments));
10273
0
    arguments.tag = tag;
10274
0
    arguments.argi = argi;
10275
0
    arguments.argp = argp;
10276
0
    arguments.fiber = janet_root_fiber();
10277
0
    janet_gcroot(janet_wrap_fiber(arguments.fiber));
10278
0
    janet_ev_threaded_call(fp, arguments, janet_ev_default_threaded_callback);
10279
0
    janet_await();
10280
0
}
10281
10282
/*
10283
 * C API helpers for reading and writing from streams.
10284
 * There is some networking code in here as well as generic
10285
 * reading and writing primitives.
10286
 */
10287
10288
0
void janet_stream_flags(JanetStream *stream, uint32_t flags) {
10289
0
    if (stream->flags & JANET_STREAM_CLOSED) {
10290
0
        janet_panic("stream is closed");
10291
0
    }
10292
0
    if ((stream->flags & flags) != flags) {
10293
0
        const char *rmsg = "", *wmsg = "", *amsg = "", *dmsg = "", *smsg = "stream";
10294
0
        if (flags & JANET_STREAM_READABLE) rmsg = "readable ";
10295
0
        if (flags & JANET_STREAM_WRITABLE) wmsg = "writable ";
10296
0
        if (flags & JANET_STREAM_ACCEPTABLE) amsg = "server ";
10297
0
        if (flags & JANET_STREAM_UDPSERVER) dmsg = "datagram ";
10298
0
        if (flags & JANET_STREAM_SOCKET) smsg = "socket";
10299
0
        janet_panicf("bad stream, expected %s%s%s%s%s", rmsg, wmsg, amsg, dmsg, smsg);
10300
0
    }
10301
0
}
10302
10303
/* When there is an IO error, we need to be able to convert it to a Janet
10304
 * string to raise a Janet error. */
10305
#ifdef JANET_WINDOWS
10306
#define JANET_EV_CHUNKSIZE 4096
10307
Janet janet_ev_lasterr(void) {
10308
    int code = GetLastError();
10309
    char msgbuf[256];
10310
    msgbuf[0] = '\0';
10311
    FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
10312
                  NULL,
10313
                  code,
10314
                  MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
10315
                  msgbuf,
10316
                  sizeof(msgbuf),
10317
                  NULL);
10318
    if (!*msgbuf) sprintf(msgbuf, "%d", code);
10319
    char *c = msgbuf;
10320
    while (*c) {
10321
        if (*c == '\n' || *c == '\r') {
10322
            *c = '\0';
10323
            break;
10324
        }
10325
        c++;
10326
    }
10327
    return janet_cstringv(msgbuf);
10328
}
10329
#else
10330
0
Janet janet_ev_lasterr(void) {
10331
0
    return janet_cstringv(strerror(errno));
10332
0
}
10333
#endif
10334
10335
/* State machine for read/recv/recvfrom */
10336
10337
typedef enum {
10338
    JANET_ASYNC_READMODE_READ,
10339
    JANET_ASYNC_READMODE_RECV,
10340
    JANET_ASYNC_READMODE_RECVFROM
10341
} JanetReadMode;
10342
10343
typedef struct {
10344
    JanetListenerState head;
10345
    int32_t bytes_left;
10346
    int32_t bytes_read;
10347
    JanetBuffer *buf;
10348
    int is_chunk;
10349
    JanetReadMode mode;
10350
#ifdef JANET_WINDOWS
10351
    OVERLAPPED overlapped;
10352
    DWORD flags;
10353
#ifdef JANET_NET
10354
    WSABUF wbuf;
10355
    struct sockaddr from;
10356
    int fromlen;
10357
#endif
10358
    uint8_t chunk_buf[JANET_EV_CHUNKSIZE];
10359
#else
10360
    int flags;
10361
#endif
10362
} StateRead;
10363
10364
0
JanetAsyncStatus ev_machine_read(JanetListenerState *s, JanetAsyncEvent event) {
10365
0
    StateRead *state = (StateRead *) s;
10366
0
    switch (event) {
10367
0
        default:
10368
0
            break;
10369
0
        case JANET_ASYNC_EVENT_MARK:
10370
0
            janet_mark(janet_wrap_buffer(state->buf));
10371
0
            break;
10372
0
        case JANET_ASYNC_EVENT_CLOSE:
10373
0
            janet_schedule(s->fiber, janet_wrap_nil());
10374
0
            return JANET_ASYNC_STATUS_DONE;
10375
#ifdef JANET_WINDOWS
10376
        case JANET_ASYNC_EVENT_COMPLETE: {
10377
            /* Called when read finished */
10378
            state->bytes_read += s->bytes;
10379
            if (state->bytes_read == 0 && (state->mode != JANET_ASYNC_READMODE_RECVFROM)) {
10380
                janet_schedule(s->fiber, janet_wrap_nil());
10381
                return JANET_ASYNC_STATUS_DONE;
10382
            }
10383
10384
            janet_buffer_push_bytes(state->buf, state->chunk_buf, s->bytes);
10385
            state->bytes_left -= s->bytes;
10386
10387
            if (state->bytes_left == 0 || !state->is_chunk || s->bytes == 0) {
10388
                Janet resume_val;
10389
#ifdef JANET_NET
10390
                if (state->mode == JANET_ASYNC_READMODE_RECVFROM) {
10391
                    void *abst = janet_abstract(&janet_address_type, state->fromlen);
10392
                    memcpy(abst, &state->from, state->fromlen);
10393
                    resume_val = janet_wrap_abstract(abst);
10394
                } else
10395
#endif
10396
                {
10397
                    resume_val = janet_wrap_buffer(state->buf);
10398
                }
10399
                janet_schedule(s->fiber, resume_val);
10400
                return JANET_ASYNC_STATUS_DONE;
10401
            }
10402
        }
10403
10404
        /* fallthrough */
10405
        case JANET_ASYNC_EVENT_USER: {
10406
            int32_t chunk_size = state->bytes_left > JANET_EV_CHUNKSIZE ? JANET_EV_CHUNKSIZE : state->bytes_left;
10407
            s->tag = &state->overlapped;
10408
            memset(&(state->overlapped), 0, sizeof(OVERLAPPED));
10409
            int status;
10410
#ifdef JANET_NET
10411
            if (state->mode == JANET_ASYNC_READMODE_RECVFROM) {
10412
                state->wbuf.len = (ULONG) chunk_size;
10413
                state->wbuf.buf = (char *) state->chunk_buf;
10414
                state->fromlen = sizeof(state->from);
10415
                status = WSARecvFrom((SOCKET) s->stream->handle, &state->wbuf, 1,
10416
                                     NULL, &state->flags, &state->from, &state->fromlen, &state->overlapped, NULL);
10417
                if (status && (WSA_IO_PENDING != WSAGetLastError())) {
10418
                    janet_cancel(s->fiber, janet_ev_lasterr());
10419
                    return JANET_ASYNC_STATUS_DONE;
10420
                }
10421
            } else
10422
#endif
10423
            {
10424
                /* Some handles (not all) read from the offset in lopOverlapped
10425
                 * if its not set before calling `ReadFile` these streams will always read from offset 0 */
10426
                state->overlapped.Offset = (DWORD) state->bytes_read;
10427
10428
                status = ReadFile(s->stream->handle, state->chunk_buf, chunk_size, NULL, &state->overlapped);
10429
                if (!status && (ERROR_IO_PENDING != GetLastError())) {
10430
                    if (GetLastError() == ERROR_BROKEN_PIPE) {
10431
                        if (state->bytes_read) {
10432
                            janet_schedule(s->fiber, janet_wrap_buffer(state->buf));
10433
                        } else {
10434
                            janet_schedule(s->fiber, janet_wrap_nil());
10435
                        }
10436
                    } else {
10437
                        janet_cancel(s->fiber, janet_ev_lasterr());
10438
                    }
10439
                    return JANET_ASYNC_STATUS_DONE;
10440
                }
10441
            }
10442
        }
10443
        break;
10444
#else
10445
0
        case JANET_ASYNC_EVENT_ERR: {
10446
0
            if (state->bytes_read) {
10447
0
                janet_schedule(s->fiber, janet_wrap_buffer(state->buf));
10448
0
            } else {
10449
0
                janet_schedule(s->fiber, janet_wrap_nil());
10450
0
            }
10451
0
            return JANET_ASYNC_STATUS_DONE;
10452
0
        }
10453
0
        case JANET_ASYNC_EVENT_HUP:
10454
0
        case JANET_ASYNC_EVENT_READ: {
10455
0
            JanetBuffer *buffer = state->buf;
10456
0
            int32_t bytes_left = state->bytes_left;
10457
0
            int32_t read_limit = state->is_chunk ? (bytes_left > 4096 ? 4096 : bytes_left) : bytes_left;
10458
0
            janet_buffer_extra(buffer, read_limit);
10459
0
            ssize_t nread;
10460
0
#ifdef JANET_NET
10461
0
            char saddr[256];
10462
0
            socklen_t socklen = sizeof(saddr);
10463
0
#endif
10464
0
            do {
10465
0
#ifdef JANET_NET
10466
0
                if (state->mode == JANET_ASYNC_READMODE_RECVFROM) {
10467
0
                    nread = recvfrom(s->stream->handle, buffer->data + buffer->count, read_limit, state->flags,
10468
0
                                     (struct sockaddr *)&saddr, &socklen);
10469
0
                } else if (state->mode == JANET_ASYNC_READMODE_RECV) {
10470
0
                    nread = recv(s->stream->handle, buffer->data + buffer->count, read_limit, state->flags);
10471
0
                } else
10472
0
#endif
10473
0
                {
10474
0
                    nread = read(s->stream->handle, buffer->data + buffer->count, read_limit);
10475
0
                }
10476
0
            } while (nread == -1 && errno == EINTR);
10477
10478
            /* Check for errors - special case errors that can just be waited on to fix */
10479
0
            if (nread == -1) {
10480
0
                if (errno == EAGAIN || errno == EWOULDBLOCK) {
10481
0
                    return JANET_ASYNC_STATUS_NOT_DONE;
10482
0
                }
10483
                /* In stream protocols, a pipe error is end of stream */
10484
0
                if (errno == EPIPE && (state->mode != JANET_ASYNC_READMODE_RECVFROM)) {
10485
0
                    nread = 0;
10486
0
                } else {
10487
0
                    janet_cancel(s->fiber, janet_ev_lasterr());
10488
0
                    return JANET_ASYNC_STATUS_DONE;
10489
0
                }
10490
0
            }
10491
10492
            /* Only allow 0-length packets in recv-from. In stream protocols, a zero length packet is EOS. */
10493
0
            state->bytes_read += nread;
10494
0
            if (state->bytes_read == 0 && (state->mode != JANET_ASYNC_READMODE_RECVFROM)) {
10495
0
                janet_schedule(s->fiber, janet_wrap_nil());
10496
0
                return JANET_ASYNC_STATUS_DONE;
10497
0
            }
10498
10499
            /* Increment buffer counts */
10500
0
            buffer->count += nread;
10501
0
            bytes_left -= nread;
10502
0
            state->bytes_left = bytes_left;
10503
10504
            /* Resume if done */
10505
0
            if (!state->is_chunk || bytes_left == 0 || nread == 0) {
10506
0
                Janet resume_val;
10507
0
#ifdef JANET_NET
10508
0
                if (state->mode == JANET_ASYNC_READMODE_RECVFROM) {
10509
0
                    void *abst = janet_abstract(&janet_address_type, socklen);
10510
0
                    memcpy(abst, &saddr, socklen);
10511
0
                    resume_val = janet_wrap_abstract(abst);
10512
0
                } else
10513
0
#endif
10514
0
                {
10515
0
                    resume_val = janet_wrap_buffer(buffer);
10516
0
                }
10517
0
                janet_schedule(s->fiber, resume_val);
10518
0
                return JANET_ASYNC_STATUS_DONE;
10519
0
            }
10520
0
        }
10521
0
        break;
10522
0
#endif
10523
0
    }
10524
0
    return JANET_ASYNC_STATUS_NOT_DONE;
10525
0
}
10526
10527
0
static void janet_ev_read_generic(JanetStream *stream, JanetBuffer *buf, int32_t nbytes, int is_chunked, JanetReadMode mode, int flags) {
10528
0
    StateRead *state = (StateRead *) janet_listen(stream, ev_machine_read,
10529
0
                       JANET_ASYNC_LISTEN_READ, sizeof(StateRead), NULL);
10530
0
    state->is_chunk = is_chunked;
10531
0
    state->buf = buf;
10532
0
    state->bytes_left = nbytes;
10533
0
    state->bytes_read = 0;
10534
0
    state->mode = mode;
10535
#ifdef JANET_WINDOWS
10536
    ev_machine_read((JanetListenerState *) state, JANET_ASYNC_EVENT_USER);
10537
    state->flags = (DWORD) flags;
10538
#else
10539
0
    state->flags = flags;
10540
0
#endif
10541
0
}
10542
10543
0
void janet_ev_read(JanetStream *stream, JanetBuffer *buf, int32_t nbytes) {
10544
0
    janet_ev_read_generic(stream, buf, nbytes, 0, JANET_ASYNC_READMODE_READ, 0);
10545
0
}
10546
0
void janet_ev_readchunk(JanetStream *stream, JanetBuffer *buf, int32_t nbytes) {
10547
0
    janet_ev_read_generic(stream, buf, nbytes, 1, JANET_ASYNC_READMODE_READ, 0);
10548
0
}
10549
#ifdef JANET_NET
10550
0
void janet_ev_recv(JanetStream *stream, JanetBuffer *buf, int32_t nbytes, int flags) {
10551
0
    janet_ev_read_generic(stream, buf, nbytes, 0, JANET_ASYNC_READMODE_RECV, flags);
10552
0
}
10553
0
void janet_ev_recvchunk(JanetStream *stream, JanetBuffer *buf, int32_t nbytes, int flags) {
10554
0
    janet_ev_read_generic(stream, buf, nbytes, 1, JANET_ASYNC_READMODE_RECV, flags);
10555
0
}
10556
0
void janet_ev_recvfrom(JanetStream *stream, JanetBuffer *buf, int32_t nbytes, int flags) {
10557
0
    janet_ev_read_generic(stream, buf, nbytes, 0, JANET_ASYNC_READMODE_RECVFROM, flags);
10558
0
}
10559
#endif
10560
10561
/*
10562
 * State machine for write/send/send-to
10563
 */
10564
10565
typedef enum {
10566
    JANET_ASYNC_WRITEMODE_WRITE,
10567
    JANET_ASYNC_WRITEMODE_SEND,
10568
    JANET_ASYNC_WRITEMODE_SENDTO,
10569
    JANET_ASYNC_WRITEMODE_CONNECT
10570
} JanetWriteMode;
10571
10572
typedef struct {
10573
    JanetListenerState head;
10574
    union {
10575
        JanetBuffer *buf;
10576
        const uint8_t *str;
10577
    } src;
10578
    int is_buffer;
10579
    JanetWriteMode mode;
10580
    void *dest_abst;
10581
#ifdef JANET_WINDOWS
10582
    OVERLAPPED overlapped;
10583
    DWORD flags;
10584
#ifdef JANET_NET
10585
    WSABUF wbuf;
10586
#endif
10587
#else
10588
    int flags;
10589
    int32_t start;
10590
#endif
10591
} StateWrite;
10592
10593
0
static JanetAsyncStatus handle_connect(JanetListenerState *s) {
10594
#ifdef JANET_WINDOWS
10595
    int res = 0;
10596
    int size = sizeof(res);
10597
    int r = getsockopt((SOCKET)s->stream->handle, SOL_SOCKET, SO_ERROR, (char *)&res, &size);
10598
#else
10599
0
    int res = 0;
10600
0
    socklen_t size = sizeof res;
10601
0
    int r = getsockopt(s->stream->handle, SOL_SOCKET, SO_ERROR, &res, &size);
10602
0
#endif
10603
0
    if (r == 0) {
10604
0
        if (res == 0) {
10605
0
            janet_schedule(s->fiber, janet_wrap_abstract(s->stream));
10606
0
        } else {
10607
0
            s->stream->flags |= JANET_STREAM_TOCLOSE;
10608
0
            janet_cancel(s->fiber, janet_cstringv(strerror(res)));
10609
0
        }
10610
0
    } else {
10611
0
        s->stream->flags |= JANET_STREAM_TOCLOSE;
10612
0
        janet_cancel(s->fiber, janet_ev_lasterr());
10613
0
    }
10614
0
    return JANET_ASYNC_STATUS_DONE;
10615
0
}
10616
10617
10618
0
JanetAsyncStatus ev_machine_write(JanetListenerState *s, JanetAsyncEvent event) {
10619
0
    StateWrite *state = (StateWrite *) s;
10620
0
    switch (event) {
10621
0
        default:
10622
0
            break;
10623
0
        case JANET_ASYNC_EVENT_MARK:
10624
0
            janet_mark(state->is_buffer
10625
0
                       ? janet_wrap_buffer(state->src.buf)
10626
0
                       : janet_wrap_string(state->src.str));
10627
0
            if (state->mode == JANET_ASYNC_WRITEMODE_SENDTO) {
10628
0
                janet_mark(janet_wrap_abstract(state->dest_abst));
10629
0
            }
10630
0
            break;
10631
0
        case JANET_ASYNC_EVENT_CLOSE:
10632
0
            janet_cancel(s->fiber, janet_cstringv("stream closed"));
10633
0
            return JANET_ASYNC_STATUS_DONE;
10634
#ifdef JANET_WINDOWS
10635
        case JANET_ASYNC_EVENT_COMPLETE: {
10636
            /* Called when write finished */
10637
            if (s->bytes == 0 && (state->mode != JANET_ASYNC_WRITEMODE_SENDTO)) {
10638
                janet_cancel(s->fiber, janet_cstringv("disconnect"));
10639
                return JANET_ASYNC_STATUS_DONE;
10640
            }
10641
10642
            janet_schedule(s->fiber, janet_wrap_nil());
10643
            return JANET_ASYNC_STATUS_DONE;
10644
        }
10645
        break;
10646
        case JANET_ASYNC_EVENT_USER: {
10647
#ifdef JANET_NET
10648
            if (state->mode == JANET_ASYNC_WRITEMODE_CONNECT) {
10649
                return handle_connect(s);
10650
            }
10651
#endif
10652
            /* Begin write */
10653
            int32_t len;
10654
            const uint8_t *bytes;
10655
            if (state->is_buffer) {
10656
                /* If buffer, convert to string. */
10657
                /* TODO - be more efficient about this */
10658
                JanetBuffer *buffer = state->src.buf;
10659
                JanetString str = janet_string(buffer->data, buffer->count);
10660
                bytes = str;
10661
                len = buffer->count;
10662
                state->is_buffer = 0;
10663
                state->src.str = str;
10664
            } else {
10665
                bytes = state->src.str;
10666
                len = janet_string_length(bytes);
10667
            }
10668
            s->tag = &state->overlapped;
10669
            memset(&(state->overlapped), 0, sizeof(WSAOVERLAPPED));
10670
10671
            int status;
10672
#ifdef JANET_NET
10673
            if (state->mode == JANET_ASYNC_WRITEMODE_SENDTO) {
10674
                SOCKET sock = (SOCKET) s->stream->handle;
10675
                state->wbuf.buf = (char *) bytes;
10676
                state->wbuf.len = len;
10677
                const struct sockaddr *to = state->dest_abst;
10678
                int tolen = (int) janet_abstract_size((void *) to);
10679
                status = WSASendTo(sock, &state->wbuf, 1, NULL, state->flags, to, tolen, &state->overlapped, NULL);
10680
                if (status && (WSA_IO_PENDING != WSAGetLastError())) {
10681
                    janet_cancel(s->fiber, janet_ev_lasterr());
10682
                    return JANET_ASYNC_STATUS_DONE;
10683
                }
10684
            } else
10685
#endif
10686
            {
10687
                /*
10688
                 * File handles in IOCP need to specify this if they are writing to the
10689
                 * ends of files, like how this is used here.
10690
                 * If the underlying resource doesn't support seeking
10691
                 * byte offsets, they will be ignored
10692
                 * but this otherwise writes to the end of the file in question
10693
                 * Right now, os/open streams aren't seekable, so this works.
10694
                 * for more details see the lpOverlapped parameter in
10695
                 * https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-writefile
10696
                 */
10697
                state->overlapped.Offset = (DWORD) 0xFFFFFFFF;
10698
                state->overlapped.OffsetHigh = (DWORD) 0xFFFFFFFF;
10699
                status = WriteFile(s->stream->handle, bytes, len, NULL, &state->overlapped);
10700
                if (!status && (ERROR_IO_PENDING != GetLastError())) {
10701
                    janet_cancel(s->fiber, janet_ev_lasterr());
10702
                    return JANET_ASYNC_STATUS_DONE;
10703
                }
10704
            }
10705
        }
10706
        break;
10707
#else
10708
0
        case JANET_ASYNC_EVENT_ERR:
10709
0
            janet_cancel(s->fiber, janet_cstringv("stream err"));
10710
0
            return JANET_ASYNC_STATUS_DONE;
10711
0
        case JANET_ASYNC_EVENT_HUP:
10712
0
            janet_cancel(s->fiber, janet_cstringv("stream hup"));
10713
0
            return JANET_ASYNC_STATUS_DONE;
10714
0
        case JANET_ASYNC_EVENT_WRITE: {
10715
0
#ifdef JANET_NET
10716
0
            if (state->mode == JANET_ASYNC_WRITEMODE_CONNECT) {
10717
0
                return handle_connect(s);
10718
0
            }
10719
0
#endif
10720
0
            int32_t start, len;
10721
0
            const uint8_t *bytes;
10722
0
            start = state->start;
10723
0
            if (state->is_buffer) {
10724
0
                JanetBuffer *buffer = state->src.buf;
10725
0
                bytes = buffer->data;
10726
0
                len = buffer->count;
10727
0
            } else {
10728
0
                bytes = state->src.str;
10729
0
                len = janet_string_length(bytes);
10730
0
            }
10731
0
            ssize_t nwrote = 0;
10732
0
            if (start < len) {
10733
0
                int32_t nbytes = len - start;
10734
0
                void *dest_abst = state->dest_abst;
10735
0
                do {
10736
0
#ifdef JANET_NET
10737
0
                    if (state->mode == JANET_ASYNC_WRITEMODE_SENDTO) {
10738
0
                        nwrote = sendto(s->stream->handle, bytes + start, nbytes, state->flags,
10739
0
                                        (struct sockaddr *) dest_abst, janet_abstract_size(dest_abst));
10740
0
                    } else if (state->mode == JANET_ASYNC_WRITEMODE_SEND) {
10741
0
                        nwrote = send(s->stream->handle, bytes + start, nbytes, state->flags);
10742
0
                    } else
10743
0
#endif
10744
0
                    {
10745
0
                        nwrote = write(s->stream->handle, bytes + start, nbytes);
10746
0
                    }
10747
0
                } while (nwrote == -1 && errno == EINTR);
10748
10749
                /* Handle write errors */
10750
0
                if (nwrote == -1) {
10751
0
                    if (errno == EAGAIN || errno  == EWOULDBLOCK) break;
10752
0
                    janet_cancel(s->fiber, janet_ev_lasterr());
10753
0
                    return JANET_ASYNC_STATUS_DONE;
10754
0
                }
10755
10756
                /* Unless using datagrams, empty message is a disconnect */
10757
0
                if (nwrote == 0 && !dest_abst) {
10758
0
                    janet_cancel(s->fiber, janet_cstringv("disconnect"));
10759
0
                    return JANET_ASYNC_STATUS_DONE;
10760
0
                }
10761
10762
0
                if (nwrote > 0) {
10763
0
                    start += nwrote;
10764
0
                } else {
10765
0
                    start = len;
10766
0
                }
10767
0
            }
10768
0
            state->start = start;
10769
0
            if (start >= len) {
10770
0
                janet_schedule(s->fiber, janet_wrap_nil());
10771
0
                return JANET_ASYNC_STATUS_DONE;
10772
0
            }
10773
0
            break;
10774
0
        }
10775
0
        break;
10776
0
#endif
10777
0
    }
10778
0
    return JANET_ASYNC_STATUS_NOT_DONE;
10779
0
}
10780
10781
0
static void janet_ev_write_generic(JanetStream *stream, void *buf, void *dest_abst, JanetWriteMode mode, int is_buffer, int flags) {
10782
0
    StateWrite *state = (StateWrite *) janet_listen(stream, ev_machine_write,
10783
0
                        JANET_ASYNC_LISTEN_WRITE, sizeof(StateWrite), NULL);
10784
0
    state->is_buffer = is_buffer;
10785
0
    state->src.buf = buf;
10786
0
    state->dest_abst = dest_abst;
10787
0
    state->mode = mode;
10788
#ifdef JANET_WINDOWS
10789
    state->flags = (DWORD) flags;
10790
    ev_machine_write((JanetListenerState *) state, JANET_ASYNC_EVENT_USER);
10791
#else
10792
0
    state->start = 0;
10793
0
    state->flags = flags;
10794
0
#endif
10795
0
}
10796
10797
10798
0
void janet_ev_write_buffer(JanetStream *stream, JanetBuffer *buf) {
10799
0
    janet_ev_write_generic(stream, buf, NULL, JANET_ASYNC_WRITEMODE_WRITE, 1, 0);
10800
0
}
10801
10802
0
void janet_ev_write_string(JanetStream *stream, JanetString str) {
10803
0
    janet_ev_write_generic(stream, (void *) str, NULL, JANET_ASYNC_WRITEMODE_WRITE, 0, 0);
10804
0
}
10805
10806
#ifdef JANET_NET
10807
0
void janet_ev_send_buffer(JanetStream *stream, JanetBuffer *buf, int flags) {
10808
0
    janet_ev_write_generic(stream, buf, NULL, JANET_ASYNC_WRITEMODE_SEND, 1, flags);
10809
0
}
10810
10811
0
void janet_ev_send_string(JanetStream *stream, JanetString str, int flags) {
10812
0
    janet_ev_write_generic(stream, (void *) str, NULL, JANET_ASYNC_WRITEMODE_SEND, 0, flags);
10813
0
}
10814
10815
0
void janet_ev_sendto_buffer(JanetStream *stream, JanetBuffer *buf, void *dest, int flags) {
10816
0
    janet_ev_write_generic(stream, buf, dest, JANET_ASYNC_WRITEMODE_SENDTO, 1, flags);
10817
0
}
10818
10819
0
void janet_ev_sendto_string(JanetStream *stream, JanetString str, void *dest, int flags) {
10820
0
    janet_ev_write_generic(stream, (void *) str, dest, JANET_ASYNC_WRITEMODE_SENDTO, 0, flags);
10821
0
}
10822
10823
0
void janet_ev_connect(JanetStream *stream, int flags) {
10824
0
    janet_ev_write_generic(stream, NULL, NULL, JANET_ASYNC_WRITEMODE_CONNECT, 0, flags);
10825
0
}
10826
#endif
10827
10828
/* For a pipe ID */
10829
#ifdef JANET_WINDOWS
10830
static volatile long PipeSerialNumber;
10831
#endif
10832
10833
/*
10834
 * mode = 0: both sides non-blocking.
10835
 * mode = 1: only read side non-blocking: write side sent to subprocess
10836
 * mode = 2: only write side non-blocking: read side sent to subprocess
10837
 */
10838
5.24k
int janet_make_pipe(JanetHandle handles[2], int mode) {
10839
#ifdef JANET_WINDOWS
10840
    /*
10841
     * On windows, the built in CreatePipe function doesn't support overlapped IO
10842
     * so we lift from the windows source code and modify for our own version.
10843
     */
10844
    JanetHandle shandle, chandle;
10845
    CHAR PipeNameBuffer[MAX_PATH];
10846
    SECURITY_ATTRIBUTES saAttr;
10847
    memset(&saAttr, 0, sizeof(saAttr));
10848
    saAttr.nLength = sizeof(saAttr);
10849
    saAttr.bInheritHandle = TRUE;
10850
    sprintf(PipeNameBuffer,
10851
            "\\\\.\\Pipe\\JanetPipeFile.%08x.%08x",
10852
            (unsigned int) GetCurrentProcessId(),
10853
            (unsigned int) InterlockedIncrement(&PipeSerialNumber));
10854
10855
    /* server handle goes to subprocess */
10856
    shandle = CreateNamedPipeA(
10857
                  PipeNameBuffer,
10858
                  (mode == 2 ? PIPE_ACCESS_INBOUND : PIPE_ACCESS_OUTBOUND) | FILE_FLAG_OVERLAPPED,
10859
                  PIPE_TYPE_BYTE | PIPE_WAIT,
10860
                  255,           /* Max number of pipes for duplication. */
10861
                  4096,          /* Out buffer size */
10862
                  4096,          /* In buffer size */
10863
                  120 * 1000,    /* Timeout in ms */
10864
                  &saAttr);
10865
    if (shandle == INVALID_HANDLE_VALUE) {
10866
        return -1;
10867
    }
10868
10869
    /* we keep client handle */
10870
    chandle = CreateFileA(
10871
                  PipeNameBuffer,
10872
                  (mode == 2 ? GENERIC_WRITE : GENERIC_READ),
10873
                  0,
10874
                  &saAttr,
10875
                  OPEN_EXISTING,
10876
                  FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
10877
                  NULL);
10878
10879
    if (chandle == INVALID_HANDLE_VALUE) {
10880
        CloseHandle(shandle);
10881
        return -1;
10882
    }
10883
    if (mode == 2) {
10884
        handles[0] = shandle;
10885
        handles[1] = chandle;
10886
    } else {
10887
        handles[0] = chandle;
10888
        handles[1] = shandle;
10889
    }
10890
    return 0;
10891
#else
10892
5.24k
    if (pipe(handles)) return -1;
10893
5.24k
    if (mode != 2 && fcntl(handles[0], F_SETFD, FD_CLOEXEC)) goto error;
10894
5.24k
    if (mode != 1 && fcntl(handles[1], F_SETFD, FD_CLOEXEC)) goto error;
10895
5.24k
    if (mode != 2 && fcntl(handles[0], F_SETFL, O_NONBLOCK)) goto error;
10896
5.24k
    if (mode != 1 && fcntl(handles[1], F_SETFL, O_NONBLOCK)) goto error;
10897
5.24k
    return 0;
10898
0
error:
10899
0
    close(handles[0]);
10900
0
    close(handles[1]);
10901
0
    return -1;
10902
5.24k
#endif
10903
5.24k
}
10904
10905
/* C functions */
10906
10907
JANET_CORE_FN(cfun_ev_go,
10908
              "(ev/go fiber-or-fun &opt value supervisor)",
10909
              "Put a fiber on the event loop to be resumed later. If a function is used, it is wrapped "
10910
              "with `fiber/new` first. "
10911
              "Optionally pass a value to resume with, otherwise resumes with nil. Returns the fiber. "
10912
              "An optional `core/channel` can be provided as a supervisor. When various "
10913
              "events occur in the newly scheduled fiber, an event will be pushed to the supervisor. "
10914
0
              "If not provided, the new fiber will inherit the current supervisor.") {
10915
0
    janet_arity(argc, 1, 3);
10916
0
    Janet value = argc >= 2 ? argv[1] : janet_wrap_nil();
10917
0
    void *supervisor = janet_optabstract(argv, argc, 2, &janet_channel_type, janet_vm.root_fiber->supervisor_channel);
10918
0
    JanetFiber *fiber;
10919
0
    if (janet_checktype(argv[0], JANET_FUNCTION)) {
10920
        /* Create a fiber for the user */
10921
0
        JanetFunction *func = janet_unwrap_function(argv[0]);
10922
0
        if (func->def->min_arity > 1) {
10923
0
            janet_panicf("task function must accept 0 or 1 arguments");
10924
0
        }
10925
0
        fiber = janet_fiber(func, 64, func->def->min_arity, &value);
10926
0
        fiber->flags |=
10927
0
            JANET_FIBER_MASK_ERROR |
10928
0
            JANET_FIBER_MASK_USER0 |
10929
0
            JANET_FIBER_MASK_USER1 |
10930
0
            JANET_FIBER_MASK_USER2 |
10931
0
            JANET_FIBER_MASK_USER3 |
10932
0
            JANET_FIBER_MASK_USER4;
10933
0
        if (!janet_vm.fiber->env) {
10934
0
            janet_vm.fiber->env = janet_table(0);
10935
0
        }
10936
0
        fiber->env = janet_table(0);
10937
0
        fiber->env->proto = janet_vm.fiber->env;
10938
0
    } else {
10939
0
        fiber = janet_getfiber(argv, 0);
10940
0
    }
10941
0
    fiber->supervisor_channel = supervisor;
10942
0
    janet_schedule(fiber, value);
10943
0
    return janet_wrap_fiber(fiber);
10944
0
}
10945
10946
0
#define JANET_THREAD_SUPERVISOR_FLAG 0x100
10947
10948
/* For ev/thread - Run an interpreter in the new thread. */
10949
0
static JanetEVGenericMessage janet_go_thread_subr(JanetEVGenericMessage args) {
10950
0
    JanetBuffer *buffer = (JanetBuffer *) args.argp;
10951
0
    const uint8_t *nextbytes = buffer->data;
10952
0
    const uint8_t *endbytes = nextbytes + buffer->count;
10953
0
    uint32_t flags = args.tag;
10954
0
    args.tag = 0;
10955
0
    janet_init();
10956
0
    janet_vm.sandbox_flags = (uint32_t) args.argi;
10957
0
    JanetTryState tstate;
10958
0
    JanetSignal signal = janet_try(&tstate);
10959
0
    if (!signal) {
10960
10961
        /* Set abstract registry */
10962
0
        if (!(flags & 0x2)) {
10963
0
            Janet aregv = janet_unmarshal(nextbytes, endbytes - nextbytes,
10964
0
                                          JANET_MARSHAL_UNSAFE, NULL, &nextbytes);
10965
0
            if (!janet_checktype(aregv, JANET_TABLE)) janet_panic("expected table for abstract registry");
10966
0
            janet_vm.abstract_registry = janet_unwrap_table(aregv);
10967
0
            janet_gcroot(janet_wrap_table(janet_vm.abstract_registry));
10968
0
        }
10969
10970
        /* Get supervsior */
10971
0
        if (flags & JANET_THREAD_SUPERVISOR_FLAG) {
10972
0
            Janet sup =
10973
0
                janet_unmarshal(nextbytes, endbytes - nextbytes,
10974
0
                                JANET_MARSHAL_UNSAFE, NULL, &nextbytes);
10975
            /* Hack - use a global variable to avoid longjmp clobber */
10976
0
            janet_vm.user = janet_unwrap_pointer(sup);
10977
0
        }
10978
10979
        /* Set cfunction registry */
10980
0
        if (!(flags & 0x4)) {
10981
0
            uint32_t count1;
10982
0
            memcpy(&count1, nextbytes, sizeof(count1));
10983
0
            size_t count = (size_t) count1;
10984
0
            if (count > (endbytes - nextbytes) * sizeof(JanetCFunRegistry)) {
10985
0
                janet_panic("thread message invalid");
10986
0
            }
10987
0
            janet_vm.registry_count = count;
10988
0
            janet_vm.registry_cap = count;
10989
0
            janet_vm.registry = janet_malloc(count * sizeof(JanetCFunRegistry));
10990
0
            if (janet_vm.registry == NULL) {
10991
0
                JANET_OUT_OF_MEMORY;
10992
0
            }
10993
0
            janet_vm.registry_dirty = 1;
10994
0
            nextbytes += sizeof(uint32_t);
10995
0
            memcpy(janet_vm.registry, nextbytes, count * sizeof(JanetCFunRegistry));
10996
0
            nextbytes += count * sizeof(JanetCFunRegistry);
10997
0
        }
10998
10999
0
        Janet fiberv = janet_unmarshal(nextbytes, endbytes - nextbytes,
11000
0
                                       JANET_MARSHAL_UNSAFE, NULL, &nextbytes);
11001
0
        Janet value = janet_unmarshal(nextbytes, endbytes - nextbytes,
11002
0
                                      JANET_MARSHAL_UNSAFE, NULL, &nextbytes);
11003
0
        JanetFiber *fiber;
11004
0
        if (!janet_checktype(fiberv, JANET_FIBER)) {
11005
0
            if (!janet_checktype(fiberv, JANET_FUNCTION)) {
11006
0
                janet_panicf("expected function or fiber, got %v", fiberv);
11007
0
            }
11008
0
            JanetFunction *func = janet_unwrap_function(fiberv);
11009
0
            fiber = janet_fiber(func, 64, func->def->min_arity, &value);
11010
0
            if (fiber == NULL) {
11011
0
                janet_panicf("thread function must accept 0 or 1 arguments");
11012
0
            }
11013
0
            fiber->flags |=
11014
0
                JANET_FIBER_MASK_ERROR |
11015
0
                JANET_FIBER_MASK_USER0 |
11016
0
                JANET_FIBER_MASK_USER1 |
11017
0
                JANET_FIBER_MASK_USER2 |
11018
0
                JANET_FIBER_MASK_USER3 |
11019
0
                JANET_FIBER_MASK_USER4;
11020
0
        } else {
11021
0
            fiber = janet_unwrap_fiber(fiberv);
11022
0
        }
11023
0
        if (flags & 0x8) {
11024
0
            if (NULL == fiber->env) fiber->env = janet_table(0);
11025
0
            janet_table_put(fiber->env, janet_ckeywordv("task-id"), value);
11026
0
        }
11027
0
        fiber->supervisor_channel = janet_vm.user;
11028
0
        janet_schedule(fiber, value);
11029
0
        janet_loop();
11030
0
        args.tag = JANET_EV_TCTAG_NIL;
11031
0
    } else {
11032
0
        void *supervisor = janet_vm.user;
11033
0
        if (NULL != supervisor) {
11034
            /* Got a supervisor, write error there */
11035
0
            Janet pair[] = {
11036
0
                janet_ckeywordv("error"),
11037
0
                tstate.payload
11038
0
            };
11039
0
            janet_channel_push((JanetChannel *)supervisor,
11040
0
                               janet_wrap_tuple(janet_tuple_n(pair, 2)), 2);
11041
0
        } else if (flags & 0x1) {
11042
            /* No wait, just print to stderr */
11043
0
            janet_eprintf("thread start failure: %v\n", tstate.payload);
11044
0
        } else {
11045
            /* Make ev/thread call from parent thread error */
11046
0
            if (janet_checktype(tstate.payload, JANET_STRING)) {
11047
0
                args.tag = JANET_EV_TCTAG_ERR_STRINGF;
11048
0
                args.argp = strdup((const char *) janet_unwrap_string(tstate.payload));
11049
0
            } else {
11050
0
                args.tag = JANET_EV_TCTAG_ERR_STRING;
11051
0
                args.argp = "failed to start thread";
11052
0
            }
11053
0
        }
11054
0
    }
11055
0
    janet_restore(&tstate);
11056
0
    janet_buffer_deinit(buffer);
11057
0
    janet_free(buffer);
11058
0
    janet_deinit();
11059
0
    return args;
11060
0
}
11061
11062
JANET_CORE_FN(cfun_ev_thread,
11063
              "(ev/thread main &opt value flags supervisor)",
11064
              "Run `main` in a new operating system thread, optionally passing `value` "
11065
              "to resume with. The parameter `main` can either be a fiber, or a function that accepts "
11066
              "0 or 1 arguments. "
11067
              "Unlike `ev/go`, this function will suspend the current fiber until the thread is complete. "
11068
              "If you want to run the thread without waiting for a result, pass the `:n` flag to return nil immediately. "
11069
              "Otherwise, returns nil. Available flags:\n\n"
11070
              "* `:n` - return immediately\n"
11071
              "* `:t` - set the task-id of the new thread to value. The task-id is passed in messages to the supervisor channel.\n"
11072
              "* `:a` - don't copy abstract registry to new thread (performance optimization)\n"
11073
0
              "* `:c` - don't copy cfunction registry to new thread (performance optimization)") {
11074
0
    janet_arity(argc, 1, 4);
11075
0
    Janet value = argc >= 2 ? argv[1] : janet_wrap_nil();
11076
0
    if (!janet_checktype(argv[0], JANET_FUNCTION)) janet_getfiber(argv, 0);
11077
0
    uint64_t flags = 0;
11078
0
    if (argc >= 3) {
11079
0
        flags = janet_getflags(argv, 2, "nact");
11080
0
    }
11081
0
    void *supervisor = janet_optabstract(argv, argc, 3, &janet_channel_type, janet_vm.root_fiber->supervisor_channel);
11082
0
    if (NULL != supervisor) flags |= JANET_THREAD_SUPERVISOR_FLAG;
11083
11084
    /* Marshal arguments for the new thread. */
11085
0
    JanetBuffer *buffer = janet_malloc(sizeof(JanetBuffer));
11086
0
    if (NULL == buffer) {
11087
0
        JANET_OUT_OF_MEMORY;
11088
0
    }
11089
0
    janet_buffer_init(buffer, 0);
11090
0
    if (!(flags & 0x2)) {
11091
0
        janet_marshal(buffer, janet_wrap_table(janet_vm.abstract_registry), NULL, JANET_MARSHAL_UNSAFE);
11092
0
    }
11093
0
    if (flags & JANET_THREAD_SUPERVISOR_FLAG) {
11094
0
        janet_marshal(buffer, janet_wrap_abstract(supervisor), NULL, JANET_MARSHAL_UNSAFE);
11095
0
    }
11096
0
    if (!(flags & 0x4)) {
11097
0
        janet_assert(janet_vm.registry_count <= INT32_MAX, "assert failed size check");
11098
0
        uint32_t temp = (uint32_t) janet_vm.registry_count;
11099
0
        janet_buffer_push_bytes(buffer, (uint8_t *) &temp, sizeof(temp));
11100
0
        janet_buffer_push_bytes(buffer, (uint8_t *) janet_vm.registry, (int32_t) janet_vm.registry_count * sizeof(JanetCFunRegistry));
11101
0
    }
11102
0
    janet_marshal(buffer, argv[0], NULL, JANET_MARSHAL_UNSAFE);
11103
0
    janet_marshal(buffer, value, NULL, JANET_MARSHAL_UNSAFE);
11104
0
    if (flags & 0x1) {
11105
        /* Return immediately */
11106
0
        JanetEVGenericMessage arguments;
11107
0
        memset(&arguments, 0, sizeof(arguments));
11108
0
        arguments.tag = (uint32_t) flags;
11109
0
        arguments.argi = (uint32_t) janet_vm.sandbox_flags;
11110
0
        arguments.argp = buffer;
11111
0
        arguments.fiber = NULL;
11112
0
        janet_ev_threaded_call(janet_go_thread_subr, arguments, janet_ev_default_threaded_callback);
11113
0
        return janet_wrap_nil();
11114
0
    } else {
11115
0
        janet_ev_threaded_await(janet_go_thread_subr, (uint32_t) flags, (uint32_t) janet_vm.sandbox_flags, buffer);
11116
0
    }
11117
0
}
11118
11119
JANET_CORE_FN(cfun_ev_give_supervisor,
11120
              "(ev/give-supervisor tag & payload)",
11121
              "Send a message to the current supervisor channel if there is one. The message will be a "
11122
              "tuple of all of the arguments combined into a single message, where the first element is tag. "
11123
0
              "By convention, tag should be a keyword indicating the type of message. Returns nil.") {
11124
0
    janet_arity(argc, 1, -1);
11125
0
    void *chanv = janet_vm.root_fiber->supervisor_channel;
11126
0
    if (NULL != chanv) {
11127
0
        JanetChannel *chan = janet_channel_unwrap(chanv);
11128
0
        if (janet_channel_push(chan, janet_wrap_tuple(janet_tuple_n(argv, argc)), 0)) {
11129
0
            janet_await();
11130
0
        }
11131
0
    }
11132
0
    return janet_wrap_nil();
11133
0
}
11134
11135
0
JANET_NO_RETURN void janet_sleep_await(double sec) {
11136
0
    JanetTimeout to;
11137
0
    to.when = ts_delta(ts_now(), sec);
11138
0
    to.fiber = janet_vm.root_fiber;
11139
0
    to.is_error = 0;
11140
0
    to.sched_id = to.fiber->sched_id;
11141
0
    to.curr_fiber = NULL;
11142
0
    add_timeout(to);
11143
0
    janet_await();
11144
0
}
11145
11146
JANET_CORE_FN(cfun_ev_sleep,
11147
              "(ev/sleep sec)",
11148
0
              "Suspend the current fiber for sec seconds without blocking the event loop.") {
11149
0
    janet_fixarity(argc, 1);
11150
0
    double sec = janet_getnumber(argv, 0);
11151
0
    janet_sleep_await(sec);
11152
0
}
11153
11154
JANET_CORE_FN(cfun_ev_deadline,
11155
              "(ev/deadline sec &opt tocancel tocheck)",
11156
              "Set a deadline for a fiber `tocheck`. If `tocheck` is not finished after `sec` seconds, "
11157
              "`tocancel` will be canceled as with `ev/cancel`. "
11158
              "If `tocancel` and `tocheck` are not given, they default to `(fiber/root)` and "
11159
0
              "`(fiber/current)` respectively. Returns `tocancel`.") {
11160
0
    janet_arity(argc, 1, 3);
11161
0
    double sec = janet_getnumber(argv, 0);
11162
0
    JanetFiber *tocancel = janet_optfiber(argv, argc, 1, janet_vm.root_fiber);
11163
0
    JanetFiber *tocheck = janet_optfiber(argv, argc, 2, janet_vm.fiber);
11164
0
    JanetTimeout to;
11165
0
    to.when = ts_delta(ts_now(), sec);
11166
0
    to.fiber = tocancel;
11167
0
    to.curr_fiber = tocheck;
11168
0
    to.is_error = 0;
11169
0
    to.sched_id = to.fiber->sched_id;
11170
0
    add_timeout(to);
11171
0
    return janet_wrap_fiber(tocancel);
11172
0
}
11173
11174
JANET_CORE_FN(cfun_ev_cancel,
11175
              "(ev/cancel fiber err)",
11176
0
              "Cancel a suspended fiber in the event loop. Differs from cancel in that it returns the canceled fiber immediately.") {
11177
0
    janet_fixarity(argc, 2);
11178
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
11179
0
    Janet err = argv[1];
11180
0
    janet_cancel(fiber, err);
11181
0
    return argv[0];
11182
0
}
11183
11184
JANET_CORE_FN(janet_cfun_stream_close,
11185
              "(ev/close stream)",
11186
0
              "Close a stream. This should be the same as calling (:close stream) for all streams.") {
11187
0
    janet_fixarity(argc, 1);
11188
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
11189
0
    janet_stream_close(stream);
11190
0
    return argv[0];
11191
0
}
11192
11193
JANET_CORE_FN(janet_cfun_stream_read,
11194
              "(ev/read stream n &opt buffer timeout)",
11195
              "Read up to n bytes into a buffer asynchronously from a stream. `n` can also be the keyword "
11196
              "`:all` to read into the buffer until end of stream. "
11197
              "Optionally provide a buffer to write into "
11198
              "as well as a timeout in seconds after which to cancel the operation and raise an error. "
11199
              "Returns the buffer if the read was successful or nil if end-of-stream reached. Will raise an "
11200
0
              "error if there are problems with the IO operation.") {
11201
0
    janet_arity(argc, 2, 4);
11202
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
11203
0
    janet_stream_flags(stream, JANET_STREAM_READABLE);
11204
0
    JanetBuffer *buffer = janet_optbuffer(argv, argc, 2, 10);
11205
0
    double to = janet_optnumber(argv, argc, 3, INFINITY);
11206
0
    if (janet_keyeq(argv[1], "all")) {
11207
0
        if (to != INFINITY) janet_addtimeout(to);
11208
0
        janet_ev_readchunk(stream, buffer, INT32_MAX);
11209
0
    } else {
11210
0
        int32_t n = janet_getnat(argv, 1);
11211
0
        if (to != INFINITY) janet_addtimeout(to);
11212
0
        janet_ev_read(stream, buffer, n);
11213
0
    }
11214
0
    janet_await();
11215
0
}
11216
11217
JANET_CORE_FN(janet_cfun_stream_chunk,
11218
              "(ev/chunk stream n &opt buffer timeout)",
11219
              "Same as ev/read, but will not return early if less than n bytes are available. If an end of "
11220
0
              "stream is reached, will also return early with the collected bytes.") {
11221
0
    janet_arity(argc, 2, 4);
11222
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
11223
0
    janet_stream_flags(stream, JANET_STREAM_READABLE);
11224
0
    int32_t n = janet_getnat(argv, 1);
11225
0
    JanetBuffer *buffer = janet_optbuffer(argv, argc, 2, 10);
11226
0
    double to = janet_optnumber(argv, argc, 3, INFINITY);
11227
0
    if (to != INFINITY) janet_addtimeout(to);
11228
0
    janet_ev_readchunk(stream, buffer, n);
11229
0
    janet_await();
11230
0
}
11231
11232
JANET_CORE_FN(janet_cfun_stream_write,
11233
              "(ev/write stream data &opt timeout)",
11234
              "Write data to a stream, suspending the current fiber until the write "
11235
              "completes. Takes an optional timeout in seconds, after which will return nil. "
11236
0
              "Returns nil, or raises an error if the write failed.") {
11237
0
    janet_arity(argc, 2, 3);
11238
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
11239
0
    janet_stream_flags(stream, JANET_STREAM_WRITABLE);
11240
0
    double to = janet_optnumber(argv, argc, 2, INFINITY);
11241
0
    if (janet_checktype(argv[1], JANET_BUFFER)) {
11242
0
        if (to != INFINITY) janet_addtimeout(to);
11243
0
        janet_ev_write_buffer(stream, janet_getbuffer(argv, 1));
11244
0
    } else {
11245
0
        JanetByteView bytes = janet_getbytes(argv, 1);
11246
0
        if (to != INFINITY) janet_addtimeout(to);
11247
0
        janet_ev_write_string(stream, bytes.bytes);
11248
0
    }
11249
0
    janet_await();
11250
0
}
11251
11252
0
static int mutexgc(void *p, size_t size) {
11253
0
    (void) size;
11254
0
    janet_os_mutex_deinit(p);
11255
0
    return 0;
11256
0
}
11257
11258
const JanetAbstractType janet_mutex_type = {
11259
    "core/lock",
11260
    mutexgc,
11261
    JANET_ATEND_GC
11262
};
11263
11264
JANET_CORE_FN(janet_cfun_mutex,
11265
              "(ev/lock)",
11266
0
              "Create a new lock to coordinate threads.") {
11267
0
    janet_fixarity(argc, 0);
11268
0
    (void) argv;
11269
0
    void *mutex = janet_abstract_threaded(&janet_mutex_type, janet_os_mutex_size());
11270
0
    janet_os_mutex_init(mutex);
11271
0
    return janet_wrap_abstract(mutex);
11272
0
}
11273
11274
JANET_CORE_FN(janet_cfun_mutex_acquire,
11275
              "(ev/acquire-lock lock)",
11276
              "Acquire a lock such that this operating system thread is the only thread with access to this resource."
11277
              " This will block this entire thread until the lock becomes available, and will not yield to other fibers "
11278
0
              "on this system thread.") {
11279
0
    janet_fixarity(argc, 1);
11280
0
    void *mutex = janet_getabstract(argv, 0, &janet_mutex_type);
11281
0
    janet_os_mutex_lock(mutex);
11282
0
    return argv[0];
11283
0
}
11284
11285
JANET_CORE_FN(janet_cfun_mutex_release,
11286
              "(ev/release-lock lock)",
11287
0
              "Release a lock such that other threads may acquire it.") {
11288
0
    janet_fixarity(argc, 1);
11289
0
    void *mutex = janet_getabstract(argv, 0, &janet_mutex_type);
11290
0
    janet_os_mutex_unlock(mutex);
11291
0
    return argv[0];
11292
0
}
11293
11294
0
static int rwlockgc(void *p, size_t size) {
11295
0
    (void) size;
11296
0
    janet_os_rwlock_deinit(p);
11297
0
    return 0;
11298
0
}
11299
11300
const JanetAbstractType janet_rwlock_type = {
11301
    "core/rwlock",
11302
    rwlockgc,
11303
    JANET_ATEND_GC
11304
};
11305
11306
JANET_CORE_FN(janet_cfun_rwlock,
11307
              "(ev/rwlock)",
11308
0
              "Create a new read-write lock to coordinate threads.") {
11309
0
    janet_fixarity(argc, 0);
11310
0
    (void) argv;
11311
0
    void *rwlock = janet_abstract_threaded(&janet_rwlock_type, janet_os_rwlock_size());
11312
0
    janet_os_rwlock_init(rwlock);
11313
0
    return janet_wrap_abstract(rwlock);
11314
0
}
11315
11316
JANET_CORE_FN(janet_cfun_rwlock_read_lock,
11317
              "(ev/acquire-rlock rwlock)",
11318
0
              "Acquire a read lock an a read-write lock.") {
11319
0
    janet_fixarity(argc, 1);
11320
0
    void *rwlock = janet_getabstract(argv, 0, &janet_rwlock_type);
11321
0
    janet_os_rwlock_rlock(rwlock);
11322
0
    return argv[0];
11323
0
}
11324
11325
JANET_CORE_FN(janet_cfun_rwlock_write_lock,
11326
              "(ev/acquire-wlock rwlock)",
11327
0
              "Acquire a write lock on a read-write lock.") {
11328
0
    janet_fixarity(argc, 1);
11329
0
    void *rwlock = janet_getabstract(argv, 0, &janet_rwlock_type);
11330
0
    janet_os_rwlock_wlock(rwlock);
11331
0
    return argv[0];
11332
0
}
11333
11334
JANET_CORE_FN(janet_cfun_rwlock_read_release,
11335
              "(ev/release-rlock rwlock)",
11336
0
              "Release a read lock on a read-write lock") {
11337
0
    janet_fixarity(argc, 1);
11338
0
    void *rwlock = janet_getabstract(argv, 0, &janet_rwlock_type);
11339
0
    janet_os_rwlock_runlock(rwlock);
11340
0
    return argv[0];
11341
0
}
11342
11343
JANET_CORE_FN(janet_cfun_rwlock_write_release,
11344
              "(ev/release-wlock rwlock)",
11345
0
              "Release a write lock on a read-write lock") {
11346
0
    janet_fixarity(argc, 1);
11347
0
    void *rwlock = janet_getabstract(argv, 0, &janet_rwlock_type);
11348
0
    janet_os_rwlock_wunlock(rwlock);
11349
0
    return argv[0];
11350
0
}
11351
11352
JANET_CORE_FN(janet_cfun_ev_all_tasks,
11353
              "(ev/all-tasks)",
11354
0
              "Get an array of all active fibers that are being used by the scheduler.") {
11355
0
    janet_fixarity(argc, 0);
11356
0
    (void) argv;
11357
0
    JanetArray *array = janet_array(janet_vm.active_tasks.count);
11358
0
    for (int32_t i = 0; i < janet_vm.active_tasks.capacity; i++) {
11359
0
        if (!janet_checktype(janet_vm.active_tasks.data[i].key, JANET_NIL)) {
11360
0
            janet_array_push(array, janet_vm.active_tasks.data[i].key);
11361
0
        }
11362
0
    }
11363
0
    return janet_wrap_array(array);
11364
0
}
11365
11366
0
void janet_lib_ev(JanetTable *env) {
11367
0
    JanetRegExt ev_cfuns_ext[] = {
11368
0
        JANET_CORE_REG("ev/give", cfun_channel_push),
11369
0
        JANET_CORE_REG("ev/take", cfun_channel_pop),
11370
0
        JANET_CORE_REG("ev/full", cfun_channel_full),
11371
0
        JANET_CORE_REG("ev/capacity", cfun_channel_capacity),
11372
0
        JANET_CORE_REG("ev/count", cfun_channel_count),
11373
0
        JANET_CORE_REG("ev/select", cfun_channel_choice),
11374
0
        JANET_CORE_REG("ev/rselect", cfun_channel_rchoice),
11375
0
        JANET_CORE_REG("ev/chan", cfun_channel_new),
11376
0
        JANET_CORE_REG("ev/thread-chan", cfun_channel_new_threaded),
11377
0
        JANET_CORE_REG("ev/chan-close", cfun_channel_close),
11378
0
        JANET_CORE_REG("ev/go", cfun_ev_go),
11379
0
        JANET_CORE_REG("ev/thread", cfun_ev_thread),
11380
0
        JANET_CORE_REG("ev/give-supervisor", cfun_ev_give_supervisor),
11381
0
        JANET_CORE_REG("ev/sleep", cfun_ev_sleep),
11382
0
        JANET_CORE_REG("ev/deadline", cfun_ev_deadline),
11383
0
        JANET_CORE_REG("ev/cancel", cfun_ev_cancel),
11384
0
        JANET_CORE_REG("ev/close", janet_cfun_stream_close),
11385
0
        JANET_CORE_REG("ev/read", janet_cfun_stream_read),
11386
0
        JANET_CORE_REG("ev/chunk", janet_cfun_stream_chunk),
11387
0
        JANET_CORE_REG("ev/write", janet_cfun_stream_write),
11388
0
        JANET_CORE_REG("ev/lock", janet_cfun_mutex),
11389
0
        JANET_CORE_REG("ev/acquire-lock", janet_cfun_mutex_acquire),
11390
0
        JANET_CORE_REG("ev/release-lock", janet_cfun_mutex_release),
11391
0
        JANET_CORE_REG("ev/rwlock", janet_cfun_rwlock),
11392
0
        JANET_CORE_REG("ev/acquire-rlock", janet_cfun_rwlock_read_lock),
11393
0
        JANET_CORE_REG("ev/acquire-wlock", janet_cfun_rwlock_write_lock),
11394
0
        JANET_CORE_REG("ev/release-rlock", janet_cfun_rwlock_read_release),
11395
0
        JANET_CORE_REG("ev/release-wlock", janet_cfun_rwlock_write_release),
11396
0
        JANET_CORE_REG("ev/all-tasks", janet_cfun_ev_all_tasks),
11397
0
        JANET_REG_END
11398
0
    };
11399
11400
0
    janet_core_cfuns_ext(env, NULL, ev_cfuns_ext);
11401
0
    janet_register_abstract_type(&janet_stream_type);
11402
0
    janet_register_abstract_type(&janet_channel_type);
11403
0
    janet_register_abstract_type(&janet_mutex_type);
11404
0
    janet_register_abstract_type(&janet_rwlock_type);
11405
0
}
11406
11407
#endif
11408
11409
11410
/* src/core/ffi.c */
11411
#line 0 "src/core/ffi.c"
11412
11413
/*
11414
* Copyright (c) 2023 Calvin Rose
11415
*
11416
* Permission is hereby granted, free of charge, to any person obtaining a copy
11417
* of this software and associated documentation files (the "Software"), to
11418
* deal in the Software without restriction, including without limitation the
11419
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
11420
* sell copies of the Software, and to permit persons to whom the Software is
11421
* furnished to do so, subject to the following conditions:
11422
*
11423
* The above copyright notice and this permission notice shall be included in
11424
* all copies or substantial portions of the Software.
11425
*
11426
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
11427
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
11428
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
11429
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
11430
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
11431
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
11432
* IN THE SOFTWARE.
11433
*/
11434
11435
#ifndef JANET_AMALG
11436
#include "features.h"
11437
#include <janet.h>
11438
#include "util.h"
11439
#include "gc.h"
11440
#endif
11441
11442
#ifdef JANET_FFI
11443
11444
#ifdef _MSC_VER
11445
#define alloca _alloca
11446
#elif defined(JANET_LINUX)
11447
#include <alloca.h>
11448
#elif !defined(alloca)
11449
/* Last ditch effort to get alloca - works for gcc and clang */
11450
#define alloca __builtin_alloca
11451
#endif
11452
11453
/* FFI jit includes */
11454
#ifdef JANET_FFI_JIT
11455
#ifndef JANET_WINDOWS
11456
#include <sys/mman.h>
11457
#endif
11458
#endif
11459
11460
0
#define JANET_FFI_MAX_RECUR 64
11461
11462
/* Compiler, OS, and arch detection. Used
11463
 * to enable a set of calling conventions. The
11464
 * :none calling convention is always enabled. */
11465
#if defined(JANET_WINDOWS) && (defined(__x86_64__) || defined(_M_X64))
11466
#define JANET_FFI_WIN64_ENABLED
11467
#endif
11468
#if (defined(__x86_64__) || defined(_M_X64)) && !defined(JANET_WINDOWS)
11469
#define JANET_FFI_SYSV64_ENABLED
11470
#endif
11471
11472
typedef struct JanetFFIType JanetFFIType;
11473
typedef struct JanetFFIStruct JanetFFIStruct;
11474
11475
typedef enum {
11476
    JANET_FFI_TYPE_VOID,
11477
    JANET_FFI_TYPE_BOOL,
11478
    JANET_FFI_TYPE_PTR,
11479
    JANET_FFI_TYPE_STRING,
11480
    JANET_FFI_TYPE_FLOAT,
11481
    JANET_FFI_TYPE_DOUBLE,
11482
    JANET_FFI_TYPE_INT8,
11483
    JANET_FFI_TYPE_UINT8,
11484
    JANET_FFI_TYPE_INT16,
11485
    JANET_FFI_TYPE_UINT16,
11486
    JANET_FFI_TYPE_INT32,
11487
    JANET_FFI_TYPE_UINT32,
11488
    JANET_FFI_TYPE_INT64,
11489
    JANET_FFI_TYPE_UINT64,
11490
    JANET_FFI_TYPE_STRUCT
11491
} JanetFFIPrimType;
11492
11493
/* Custom alignof since alignof not in c99 standard */
11494
#define ALIGNOF(type) offsetof(struct { char c; type member; }, member)
11495
11496
typedef struct {
11497
    size_t size;
11498
    size_t align;
11499
} JanetFFIPrimInfo;
11500
11501
static const JanetFFIPrimInfo janet_ffi_type_info[] = {
11502
    {0, 0}, /* JANET_FFI_TYPE_VOID */
11503
    {sizeof(char), ALIGNOF(char)}, /* JANET_FFI_TYPE_BOOL */
11504
    {sizeof(void *), ALIGNOF(void *)}, /* JANET_FFI_TYPE_PTR */
11505
    {sizeof(char *), ALIGNOF(char *)}, /* JANET_FFI_TYPE_STRING */
11506
    {sizeof(float), ALIGNOF(float)}, /* JANET_FFI_TYPE_FLOAT */
11507
    {sizeof(double), ALIGNOF(double)}, /* JANET_FFI_TYPE_DOUBLE */
11508
    {sizeof(int8_t), ALIGNOF(int8_t)}, /* JANET_FFI_TYPE_INT8 */
11509
    {sizeof(uint8_t), ALIGNOF(uint8_t)}, /* JANET_FFI_TYPE_UINT8 */
11510
    {sizeof(int16_t), ALIGNOF(int16_t)}, /* JANET_FFI_TYPE_INT16 */
11511
    {sizeof(uint16_t), ALIGNOF(uint16_t)}, /* JANET_FFI_TYPE_UINT16 */
11512
    {sizeof(int32_t), ALIGNOF(int32_t)}, /* JANET_FFI_TYPE_INT32 */
11513
    {sizeof(uint32_t), ALIGNOF(uint32_t)}, /* JANET_FFI_TYPE_UINT32 */
11514
    {sizeof(int64_t), ALIGNOF(int64_t)}, /* JANET_FFI_TYPE_INT64 */
11515
    {sizeof(uint64_t), ALIGNOF(uint64_t)}, /* JANET_FFI_TYPE_UINT64 */
11516
    {0, ALIGNOF(uint64_t)} /* JANET_FFI_TYPE_STRUCT */
11517
};
11518
11519
struct JanetFFIType {
11520
    JanetFFIStruct *st;
11521
    JanetFFIPrimType prim;
11522
    int32_t array_count;
11523
};
11524
11525
typedef struct {
11526
    JanetFFIType type;
11527
    size_t offset;
11528
} JanetFFIStructMember;
11529
11530
/* Also used to store array types */
11531
struct JanetFFIStruct {
11532
    uint32_t size;
11533
    uint32_t align;
11534
    uint32_t field_count;
11535
    uint32_t is_aligned;
11536
    JanetFFIStructMember fields[];
11537
};
11538
11539
/* Specifies how the registers are classified. This is used
11540
 * to determine if a certain argument should be passed in a register,
11541
 * on the stack, special floating pointer register, etc. */
11542
typedef enum {
11543
    JANET_SYSV64_INTEGER,
11544
    JANET_SYSV64_SSE,
11545
    JANET_SYSV64_SSEUP,
11546
    JANET_SYSV64_PAIR_INTINT,
11547
    JANET_SYSV64_PAIR_INTSSE,
11548
    JANET_SYSV64_PAIR_SSEINT,
11549
    JANET_SYSV64_PAIR_SSESSE,
11550
    JANET_SYSV64_NO_CLASS,
11551
    JANET_SYSV64_MEMORY,
11552
    JANET_WIN64_REGISTER,
11553
    JANET_WIN64_STACK,
11554
    JANET_WIN64_REGISTER_REF,
11555
    JANET_WIN64_STACK_REF
11556
} JanetFFIWordSpec;
11557
11558
/* Describe how each Janet argument is interpreted in terms of machine words
11559
 * that will be mapped to registers/stack. */
11560
typedef struct {
11561
    JanetFFIType type;
11562
    JanetFFIWordSpec spec;
11563
    uint32_t offset; /* point to the exact register / stack offset depending on spec. */
11564
    uint32_t offset2; /* for reference passing apis (windows), use to allocate reference */
11565
} JanetFFIMapping;
11566
11567
typedef enum {
11568
    JANET_FFI_CC_NONE,
11569
    JANET_FFI_CC_SYSV_64,
11570
    JANET_FFI_CC_WIN_64
11571
} JanetFFICallingConvention;
11572
11573
#ifdef JANET_FFI_WIN64_ENABLED
11574
#define JANET_FFI_CC_DEFAULT JANET_FFI_CC_WIN_64
11575
#elif defined(JANET_FFI_SYSV64_ENABLED)
11576
0
#define JANET_FFI_CC_DEFAULT JANET_FFI_CC_SYSV_64
11577
#else
11578
#define JANET_FFI_CC_DEFAULT JANET_FFI_CC_NONE
11579
#endif
11580
11581
0
#define JANET_FFI_MAX_ARGS 32
11582
11583
typedef struct {
11584
    uint32_t frame_size;
11585
    uint32_t arg_count;
11586
    uint32_t word_count;
11587
    uint32_t variant;
11588
    uint32_t stack_count;
11589
    JanetFFICallingConvention cc;
11590
    JanetFFIMapping ret;
11591
    JanetFFIMapping args[JANET_FFI_MAX_ARGS];
11592
} JanetFFISignature;
11593
11594
0
int signature_mark(void *p, size_t s) {
11595
0
    (void) s;
11596
0
    JanetFFISignature *sig = p;
11597
0
    for (uint32_t i = 0; i < sig->arg_count; i++) {
11598
0
        JanetFFIType t = sig->args[i].type;
11599
0
        if (t.prim == JANET_FFI_TYPE_STRUCT) {
11600
0
            janet_mark(janet_wrap_abstract(t.st));
11601
0
        }
11602
0
    }
11603
0
    return 0;
11604
0
}
11605
11606
static const JanetAbstractType janet_signature_type = {
11607
    "core/ffi-signature",
11608
    NULL,
11609
    signature_mark,
11610
    JANET_ATEND_GCMARK
11611
};
11612
11613
0
int struct_mark(void *p, size_t s) {
11614
0
    (void) s;
11615
0
    JanetFFIStruct *st = p;
11616
0
    for (uint32_t i = 0; i < st->field_count; i++) {
11617
0
        JanetFFIType t = st->fields[i].type;
11618
0
        if (t.prim == JANET_FFI_TYPE_STRUCT) {
11619
0
            janet_mark(janet_wrap_abstract(t.st));
11620
0
        }
11621
0
    }
11622
0
    return 0;
11623
0
}
11624
11625
typedef struct {
11626
    void *function_pointer;
11627
    size_t size;
11628
} JanetFFIJittedFn;
11629
11630
static const JanetAbstractType janet_struct_type = {
11631
    "core/ffi-struct",
11632
    NULL,
11633
    struct_mark,
11634
    JANET_ATEND_GCMARK
11635
};
11636
11637
0
static int janet_ffijit_gc(void *p, size_t s) {
11638
0
    (void) s;
11639
0
    JanetFFIJittedFn *fn = p;
11640
0
    if (fn->function_pointer == NULL) return 0;
11641
0
#ifdef JANET_FFI_JIT
11642
#ifdef JANET_WINDOWS
11643
    VirtualFree(fn->function_pointer, fn->size, MEM_RELEASE);
11644
#else
11645
0
    munmap(fn->function_pointer, fn->size);
11646
0
#endif
11647
0
#endif
11648
0
    return 0;
11649
0
}
11650
11651
0
static JanetByteView janet_ffijit_getbytes(void *p, size_t s) {
11652
0
    (void) s;
11653
0
    JanetFFIJittedFn *fn = p;
11654
0
    JanetByteView bytes;
11655
0
    bytes.bytes = fn->function_pointer;
11656
0
    bytes.len = (int32_t) fn->size;
11657
0
    return bytes;
11658
0
}
11659
11660
0
static size_t janet_ffijit_length(void *p, size_t s) {
11661
0
    (void) s;
11662
0
    JanetFFIJittedFn *fn = p;
11663
0
    return fn->size;
11664
0
}
11665
11666
const JanetAbstractType janet_type_ffijit = {
11667
    .name = "ffi/jitfn",
11668
    .gc = janet_ffijit_gc,
11669
    .bytes = janet_ffijit_getbytes,
11670
    .length = janet_ffijit_length
11671
};
11672
11673
typedef struct {
11674
    Clib clib;
11675
    int closed;
11676
    int is_self;
11677
} JanetAbstractNative;
11678
11679
static const JanetAbstractType janet_native_type = {
11680
    "core/ffi-native",
11681
    JANET_ATEND_NAME
11682
};
11683
11684
0
static JanetFFIType prim_type(JanetFFIPrimType pt) {
11685
0
    JanetFFIType t;
11686
0
    t.prim = pt;
11687
0
    t.st = NULL;
11688
0
    t.array_count = -1;
11689
0
    return t;
11690
0
}
11691
11692
0
static size_t type_size(JanetFFIType t) {
11693
0
    size_t count = t.array_count < 0 ? 1 : (size_t) t.array_count;
11694
0
    if (t.prim == JANET_FFI_TYPE_STRUCT) {
11695
0
        return t.st->size * count;
11696
0
    } else {
11697
0
        return janet_ffi_type_info[t.prim].size * count;
11698
0
    }
11699
0
}
11700
11701
0
static size_t type_align(JanetFFIType t) {
11702
0
    if (t.prim == JANET_FFI_TYPE_STRUCT) {
11703
0
        return t.st->align;
11704
0
    } else {
11705
0
        return janet_ffi_type_info[t.prim].align;
11706
0
    }
11707
0
}
11708
11709
0
static JanetFFICallingConvention decode_ffi_cc(const uint8_t *name) {
11710
0
    if (!janet_cstrcmp(name, "none")) return JANET_FFI_CC_NONE;
11711
#ifdef JANET_FFI_WIN64_ENABLED
11712
    if (!janet_cstrcmp(name, "win64")) return JANET_FFI_CC_WIN_64;
11713
#endif
11714
0
#ifdef JANET_FFI_SYSV64_ENABLED
11715
0
    if (!janet_cstrcmp(name, "sysv64")) return JANET_FFI_CC_SYSV_64;
11716
0
#endif
11717
0
    if (!janet_cstrcmp(name, "default")) return JANET_FFI_CC_DEFAULT;
11718
0
    janet_panicf("unknown calling convention %s", name);
11719
0
}
11720
11721
0
static JanetFFIPrimType decode_ffi_prim(const uint8_t *name) {
11722
0
    if (!janet_cstrcmp(name, "void")) return JANET_FFI_TYPE_VOID;
11723
0
    if (!janet_cstrcmp(name, "bool")) return JANET_FFI_TYPE_BOOL;
11724
0
    if (!janet_cstrcmp(name, "ptr")) return JANET_FFI_TYPE_PTR;
11725
0
    if (!janet_cstrcmp(name, "pointer")) return JANET_FFI_TYPE_PTR;
11726
0
    if (!janet_cstrcmp(name, "string")) return JANET_FFI_TYPE_STRING;
11727
0
    if (!janet_cstrcmp(name, "float")) return JANET_FFI_TYPE_FLOAT;
11728
0
    if (!janet_cstrcmp(name, "double")) return JANET_FFI_TYPE_DOUBLE;
11729
0
    if (!janet_cstrcmp(name, "int8")) return JANET_FFI_TYPE_INT8;
11730
0
    if (!janet_cstrcmp(name, "uint8")) return JANET_FFI_TYPE_UINT8;
11731
0
    if (!janet_cstrcmp(name, "int16")) return JANET_FFI_TYPE_INT16;
11732
0
    if (!janet_cstrcmp(name, "uint16")) return JANET_FFI_TYPE_UINT16;
11733
0
    if (!janet_cstrcmp(name, "int32")) return JANET_FFI_TYPE_INT32;
11734
0
    if (!janet_cstrcmp(name, "uint32")) return JANET_FFI_TYPE_UINT32;
11735
0
    if (!janet_cstrcmp(name, "int64")) return JANET_FFI_TYPE_INT64;
11736
0
    if (!janet_cstrcmp(name, "uint64")) return JANET_FFI_TYPE_UINT64;
11737
0
#ifdef JANET_64
11738
0
    if (!janet_cstrcmp(name, "size")) return JANET_FFI_TYPE_UINT64;
11739
0
    if (!janet_cstrcmp(name, "ssize")) return JANET_FFI_TYPE_INT64;
11740
#else
11741
    if (!janet_cstrcmp(name, "size")) return JANET_FFI_TYPE_UINT32;
11742
    if (!janet_cstrcmp(name, "ssize")) return JANET_FFI_TYPE_INT32;
11743
#endif
11744
    /* aliases */
11745
0
    if (!janet_cstrcmp(name, "r32")) return JANET_FFI_TYPE_FLOAT;
11746
0
    if (!janet_cstrcmp(name, "r64")) return JANET_FFI_TYPE_DOUBLE;
11747
0
    if (!janet_cstrcmp(name, "s8")) return JANET_FFI_TYPE_INT8;
11748
0
    if (!janet_cstrcmp(name, "u8")) return JANET_FFI_TYPE_UINT8;
11749
0
    if (!janet_cstrcmp(name, "s16")) return JANET_FFI_TYPE_INT16;
11750
0
    if (!janet_cstrcmp(name, "u16")) return JANET_FFI_TYPE_UINT16;
11751
0
    if (!janet_cstrcmp(name, "s32")) return JANET_FFI_TYPE_INT32;
11752
0
    if (!janet_cstrcmp(name, "u32")) return JANET_FFI_TYPE_UINT32;
11753
0
    if (!janet_cstrcmp(name, "s64")) return JANET_FFI_TYPE_INT64;
11754
0
    if (!janet_cstrcmp(name, "u64")) return JANET_FFI_TYPE_UINT64;
11755
0
    if (!janet_cstrcmp(name, "char")) return JANET_FFI_TYPE_INT8;
11756
0
    if (!janet_cstrcmp(name, "short")) return JANET_FFI_TYPE_INT16;
11757
0
    if (!janet_cstrcmp(name, "int")) return JANET_FFI_TYPE_INT32;
11758
0
    if (!janet_cstrcmp(name, "long")) return JANET_FFI_TYPE_INT64;
11759
0
    if (!janet_cstrcmp(name, "byte")) return JANET_FFI_TYPE_UINT8;
11760
0
    if (!janet_cstrcmp(name, "uchar")) return JANET_FFI_TYPE_UINT8;
11761
0
    if (!janet_cstrcmp(name, "ushort")) return JANET_FFI_TYPE_UINT16;
11762
0
    if (!janet_cstrcmp(name, "uint")) return JANET_FFI_TYPE_UINT32;
11763
0
    if (!janet_cstrcmp(name, "ulong")) return JANET_FFI_TYPE_UINT64;
11764
0
    janet_panicf("unknown machine type %s", name);
11765
0
}
11766
11767
/* A common callback function signature. To avoid runtime code generation, which is prohibited
11768
 * on many platforms, often buggy (see libffi), and generally complicated, instead provide
11769
 * a single (or small set of commonly used function signatures). All callbacks should
11770
 * eventually call this. */
11771
0
void janet_ffi_trampoline(void *ctx, void *userdata) {
11772
0
    if (NULL == userdata) {
11773
        /* Userdata not set. */
11774
0
        janet_eprintf("no userdata found for janet callback");
11775
0
        return;
11776
0
    }
11777
0
    Janet context = janet_wrap_pointer(ctx);
11778
0
    JanetFunction *fun = userdata;
11779
0
    janet_call(fun, 1, &context);
11780
0
}
11781
11782
static JanetFFIType decode_ffi_type(Janet x);
11783
11784
0
static JanetFFIStruct *build_struct_type(int32_t argc, const Janet *argv) {
11785
    /* Use :pack to indicate a single packed struct member and :pack-all
11786
     * to pack the remaining members */
11787
0
    int32_t member_count = argc;
11788
0
    int all_packed = 0;
11789
0
    for (int32_t i = 0; i < argc; i++) {
11790
0
        if (janet_keyeq(argv[i], "pack")) {
11791
0
            member_count--;
11792
0
        } else if (janet_keyeq(argv[i], "pack-all")) {
11793
0
            member_count--;
11794
0
            all_packed = 1;
11795
0
        }
11796
0
    }
11797
11798
0
    JanetFFIStruct *st = janet_abstract(&janet_struct_type,
11799
0
                                        sizeof(JanetFFIStruct) + argc * sizeof(JanetFFIStructMember));
11800
0
    st->field_count = member_count;
11801
0
    st->size = 0;
11802
0
    st->align = 1;
11803
0
    if (argc == 0) {
11804
0
        janet_panic("invalid empty struct");
11805
0
    }
11806
0
    uint32_t is_aligned = 1;
11807
0
    int32_t i = 0;
11808
0
    for (int32_t j = 0; j < argc; j++) {
11809
0
        int pack_one = 0;
11810
0
        if (janet_keyeq(argv[j], "pack") || janet_keyeq(argv[j], "pack-all")) {
11811
0
            pack_one = 1;
11812
0
            j++;
11813
0
            if (j == argc) break;
11814
0
        }
11815
0
        st->fields[i].type = decode_ffi_type(argv[j]);
11816
0
        size_t el_size = type_size(st->fields[i].type);
11817
0
        size_t el_align = type_align(st->fields[i].type);
11818
0
        if (all_packed || pack_one) {
11819
0
            if (st->size % el_align != 0) is_aligned = 0;
11820
0
            st->fields[i].offset = st->size;
11821
0
            st->size += (uint32_t) el_size;
11822
0
        } else {
11823
0
            if (el_align > st->align) st->align = (uint32_t) el_align;
11824
0
            st->fields[i].offset = (uint32_t)(((st->size + el_align - 1) / el_align) * el_align);
11825
0
            st->size = (uint32_t)(el_size + st->fields[i].offset);
11826
0
        }
11827
0
        i++;
11828
0
    }
11829
0
    st->is_aligned = is_aligned;
11830
0
    st->size += (st->align - 1);
11831
0
    st->size /= st->align;
11832
0
    st->size *= st->align;
11833
0
    return st;
11834
0
}
11835
11836
0
static JanetFFIType decode_ffi_type(Janet x) {
11837
0
    if (janet_checktype(x, JANET_KEYWORD)) {
11838
0
        return prim_type(decode_ffi_prim(janet_unwrap_keyword(x)));
11839
0
    }
11840
0
    JanetFFIType ret;
11841
0
    ret.array_count = -1;
11842
0
    ret.prim = JANET_FFI_TYPE_STRUCT;
11843
0
    if (janet_checkabstract(x, &janet_struct_type)) {
11844
0
        ret.st = janet_unwrap_abstract(x);
11845
0
        return ret;
11846
0
    }
11847
0
    int32_t len;
11848
0
    const Janet *els;
11849
0
    if (janet_indexed_view(x, &els, &len)) {
11850
0
        if (janet_checktype(x, JANET_ARRAY)) {
11851
0
            if (len != 2 && len != 1) janet_panicf("array type must be of form @[type count], got %v", x);
11852
0
            ret = decode_ffi_type(els[0]);
11853
0
            int32_t array_count = len == 1 ? 0 : janet_getnat(els, 1);
11854
0
            ret.array_count = array_count;
11855
0
        } else {
11856
0
            ret.st = build_struct_type(len, els);
11857
0
        }
11858
0
        return ret;
11859
0
    } else {
11860
0
        janet_panicf("bad native type %v", x);
11861
0
    }
11862
0
}
11863
11864
JANET_CORE_FN(cfun_ffi_struct,
11865
              "(ffi/struct & types)",
11866
0
              "Create a struct type definition that can be used to pass structs into native functions. ") {
11867
0
    janet_arity(argc, 1, -1);
11868
0
    return janet_wrap_abstract(build_struct_type(argc, argv));
11869
0
}
11870
11871
JANET_CORE_FN(cfun_ffi_size,
11872
              "(ffi/size type)",
11873
0
              "Get the size of an ffi type in bytes.") {
11874
0
    janet_fixarity(argc, 1);
11875
0
    size_t size = type_size(decode_ffi_type(argv[0]));
11876
0
    return janet_wrap_number((double) size);
11877
0
}
11878
11879
JANET_CORE_FN(cfun_ffi_align,
11880
              "(ffi/align type)",
11881
0
              "Get the align of an ffi type in bytes.") {
11882
0
    janet_fixarity(argc, 1);
11883
0
    size_t size = type_align(decode_ffi_type(argv[0]));
11884
0
    return janet_wrap_number((double) size);
11885
0
}
11886
11887
0
static void *janet_ffi_getpointer(const Janet *argv, int32_t n) {
11888
0
    switch (janet_type(argv[n])) {
11889
0
        default:
11890
0
            janet_panicf("bad slot #%d, expected ffi pointer convertable type, got %v", n, argv[n]);
11891
0
        case JANET_POINTER:
11892
0
        case JANET_STRING:
11893
0
        case JANET_KEYWORD:
11894
0
        case JANET_SYMBOL:
11895
0
        case JANET_CFUNCTION:
11896
0
            return janet_unwrap_pointer(argv[n]);
11897
0
        case JANET_ABSTRACT:
11898
0
            return (void *) janet_getbytes(argv, n).bytes;
11899
0
        case JANET_BUFFER:
11900
0
            return janet_unwrap_buffer(argv[n])->data;
11901
0
        case JANET_FUNCTION:
11902
            /* Users may pass in a function. Any function passed is almost certainly
11903
             * being used as a callback, so we add it to the root set. */
11904
0
            janet_gcroot(argv[n]);
11905
0
            return janet_unwrap_pointer(argv[n]);
11906
0
        case JANET_NIL:
11907
0
            return NULL;
11908
0
    }
11909
0
}
11910
11911
0
static void *janet_ffi_get_callable_pointer(const Janet *argv, int32_t n) {
11912
0
    switch (janet_type(argv[n])) {
11913
0
        default:
11914
0
            break;
11915
0
        case JANET_POINTER:
11916
0
            return janet_unwrap_pointer(argv[n]);
11917
0
        case JANET_ABSTRACT:
11918
0
            if (!janet_checkabstract(argv[n], &janet_type_ffijit)) break;
11919
0
            return ((JanetFFIJittedFn *)janet_unwrap_abstract(argv[n]))->function_pointer;
11920
0
    }
11921
0
    janet_panicf("bad slot #%d, expected ffi callable pointer type, got %v", n, argv[n]);
11922
0
}
11923
11924
/* Write a value given by some Janet values and an FFI type as it would appear in memory.
11925
 * The alignment and space available is assumed to already be sufficient */
11926
0
static void janet_ffi_write_one(void *to, const Janet *argv, int32_t n, JanetFFIType type, int recur) {
11927
0
    if (recur == 0) janet_panic("recursion too deep");
11928
0
    if (type.array_count >= 0) {
11929
0
        JanetFFIType el_type = type;
11930
0
        el_type.array_count = -1;
11931
0
        size_t el_size = type_size(el_type);
11932
0
        JanetView els = janet_getindexed(argv, n);
11933
0
        if (els.len != type.array_count) {
11934
0
            janet_panicf("bad array length, expected %d, got %d", type.array_count, els.len);
11935
0
        }
11936
0
        char *cursor = to;
11937
0
        for (int32_t i = 0; i < els.len; i++) {
11938
0
            janet_ffi_write_one(cursor, els.items, i, el_type, recur - 1);
11939
0
            cursor += el_size;
11940
0
        }
11941
0
        return;
11942
0
    }
11943
0
    switch (type.prim) {
11944
0
        case JANET_FFI_TYPE_VOID:
11945
0
            if (!janet_checktype(argv[n], JANET_NIL)) {
11946
0
                janet_panicf("expected nil, got %v", argv[n]);
11947
0
            }
11948
0
            break;
11949
0
        case JANET_FFI_TYPE_STRUCT: {
11950
0
            JanetView els = janet_getindexed(argv, n);
11951
0
            JanetFFIStruct *st = type.st;
11952
0
            if ((uint32_t) els.len != st->field_count) {
11953
0
                janet_panicf("wrong number of fields in struct, expected %d, got %d",
11954
0
                             (int32_t) st->field_count, els.len);
11955
0
            }
11956
0
            for (int32_t i = 0; i < els.len; i++) {
11957
0
                JanetFFIType tp = st->fields[i].type;
11958
0
                janet_ffi_write_one((char *) to + st->fields[i].offset, els.items, i, tp, recur - 1);
11959
0
            }
11960
0
        }
11961
0
        break;
11962
0
        case JANET_FFI_TYPE_DOUBLE:
11963
0
            ((double *)(to))[0] = janet_getnumber(argv, n);
11964
0
            break;
11965
0
        case JANET_FFI_TYPE_FLOAT:
11966
0
            ((float *)(to))[0] = (float) janet_getnumber(argv, n);
11967
0
            break;
11968
0
        case JANET_FFI_TYPE_PTR:
11969
0
            ((void **)(to))[0] = janet_ffi_getpointer(argv, n);
11970
0
            break;
11971
0
        case JANET_FFI_TYPE_STRING:
11972
0
            ((const char **)(to))[0] = janet_getcstring(argv, n);
11973
0
            break;
11974
0
        case JANET_FFI_TYPE_BOOL:
11975
0
            ((bool *)(to))[0] = janet_getboolean(argv, n);
11976
0
            break;
11977
0
        case JANET_FFI_TYPE_INT8:
11978
0
            ((int8_t *)(to))[0] = janet_getinteger(argv, n);
11979
0
            break;
11980
0
        case JANET_FFI_TYPE_INT16:
11981
0
            ((int16_t *)(to))[0] = janet_getinteger(argv, n);
11982
0
            break;
11983
0
        case JANET_FFI_TYPE_INT32:
11984
0
            ((int32_t *)(to))[0] = janet_getinteger(argv, n);
11985
0
            break;
11986
0
        case JANET_FFI_TYPE_INT64:
11987
0
            ((int64_t *)(to))[0] = janet_getinteger64(argv, n);
11988
0
            break;
11989
0
        case JANET_FFI_TYPE_UINT8:
11990
0
            ((uint8_t *)(to))[0] = (uint8_t) janet_getuinteger64(argv, n);
11991
0
            break;
11992
0
        case JANET_FFI_TYPE_UINT16:
11993
0
            ((uint16_t *)(to))[0] = (uint16_t) janet_getuinteger64(argv, n);
11994
0
            break;
11995
0
        case JANET_FFI_TYPE_UINT32:
11996
0
            ((uint32_t *)(to))[0] = (uint32_t) janet_getuinteger64(argv, n);
11997
0
            break;
11998
0
        case JANET_FFI_TYPE_UINT64:
11999
0
            ((uint64_t *)(to))[0] = janet_getuinteger64(argv, n);
12000
0
            break;
12001
0
    }
12002
0
}
12003
12004
/* Read a value from memory and construct a Janet data structure that can be passed back into
12005
 * the interpreter. This should be the inverse to janet_ffi_write_one. It is assumed that the
12006
 * size of the data is correct. */
12007
0
static Janet janet_ffi_read_one(const uint8_t *from, JanetFFIType type, int recur) {
12008
0
    if (recur == 0) janet_panic("recursion too deep");
12009
0
    if (type.array_count >= 0) {
12010
0
        JanetFFIType el_type = type;
12011
0
        el_type.array_count = -1;
12012
0
        size_t el_size = type_size(el_type);
12013
0
        JanetArray *array = janet_array(type.array_count);
12014
0
        for (int32_t i = 0; i < type.array_count; i++) {
12015
0
            janet_array_push(array, janet_ffi_read_one(from, el_type, recur - 1));
12016
0
            from += el_size;
12017
0
        }
12018
0
        return janet_wrap_array(array);
12019
0
    }
12020
0
    switch (type.prim) {
12021
0
        default:
12022
0
        case JANET_FFI_TYPE_VOID:
12023
0
            return janet_wrap_nil();
12024
0
        case JANET_FFI_TYPE_STRUCT: {
12025
0
            JanetFFIStruct *st = type.st;
12026
0
            Janet *tup = janet_tuple_begin(st->field_count);
12027
0
            for (uint32_t i = 0; i < st->field_count; i++) {
12028
0
                JanetFFIType tp = st->fields[i].type;
12029
0
                tup[i] = janet_ffi_read_one(from + st->fields[i].offset, tp, recur - 1);
12030
0
            }
12031
0
            return janet_wrap_tuple(janet_tuple_end(tup));
12032
0
        }
12033
0
        case JANET_FFI_TYPE_DOUBLE:
12034
0
            return janet_wrap_number(((double *)(from))[0]);
12035
0
        case JANET_FFI_TYPE_FLOAT:
12036
0
            return janet_wrap_number(((float *)(from))[0]);
12037
0
        case JANET_FFI_TYPE_PTR: {
12038
0
            void *ptr = ((void **)(from))[0];
12039
0
            return (NULL == ptr) ? janet_wrap_nil() : janet_wrap_pointer(ptr);
12040
0
        }
12041
0
        case JANET_FFI_TYPE_STRING:
12042
0
            return janet_cstringv(((char **)(from))[0]);
12043
0
        case JANET_FFI_TYPE_BOOL:
12044
0
            return janet_wrap_boolean(((bool *)(from))[0]);
12045
0
        case JANET_FFI_TYPE_INT8:
12046
0
            return janet_wrap_number(((int8_t *)(from))[0]);
12047
0
        case JANET_FFI_TYPE_INT16:
12048
0
            return janet_wrap_number(((int16_t *)(from))[0]);
12049
0
        case JANET_FFI_TYPE_INT32:
12050
0
            return janet_wrap_number(((int32_t *)(from))[0]);
12051
0
        case JANET_FFI_TYPE_UINT8:
12052
0
            return janet_wrap_number(((uint8_t *)(from))[0]);
12053
0
        case JANET_FFI_TYPE_UINT16:
12054
0
            return janet_wrap_number(((uint16_t *)(from))[0]);
12055
0
        case JANET_FFI_TYPE_UINT32:
12056
0
            return janet_wrap_number(((uint32_t *)(from))[0]);
12057
0
#ifdef JANET_INT_TYPES
12058
0
        case JANET_FFI_TYPE_INT64:
12059
0
            return janet_wrap_s64(((int64_t *)(from))[0]);
12060
0
        case JANET_FFI_TYPE_UINT64:
12061
0
            return janet_wrap_u64(((uint64_t *)(from))[0]);
12062
#else
12063
        case JANET_FFI_TYPE_INT64:
12064
            return janet_wrap_number(((int64_t *)(from))[0]);
12065
        case JANET_FFI_TYPE_UINT64:
12066
            return janet_wrap_number(((uint64_t *)(from))[0]);
12067
#endif
12068
0
    }
12069
0
}
12070
12071
0
static JanetFFIMapping void_mapping(void) {
12072
0
    JanetFFIMapping m;
12073
0
    m.type = prim_type(JANET_FFI_TYPE_VOID);
12074
0
    m.spec = JANET_SYSV64_NO_CLASS;
12075
0
    m.offset = 0;
12076
0
    return m;
12077
0
}
12078
12079
#ifdef JANET_FFI_SYSV64_ENABLED
12080
/* AMD64 ABI Draft 0.99.7 – November 17, 2014 – 15:08
12081
 * See section 3.2.3 Parameter Passing */
12082
0
static JanetFFIWordSpec sysv64_classify_ext(JanetFFIType type, size_t shift) {
12083
0
    switch (type.prim) {
12084
0
        case JANET_FFI_TYPE_PTR:
12085
0
        case JANET_FFI_TYPE_STRING:
12086
0
        case JANET_FFI_TYPE_BOOL:
12087
0
        case JANET_FFI_TYPE_INT8:
12088
0
        case JANET_FFI_TYPE_INT16:
12089
0
        case JANET_FFI_TYPE_INT32:
12090
0
        case JANET_FFI_TYPE_INT64:
12091
0
        case JANET_FFI_TYPE_UINT8:
12092
0
        case JANET_FFI_TYPE_UINT16:
12093
0
        case JANET_FFI_TYPE_UINT32:
12094
0
        case JANET_FFI_TYPE_UINT64:
12095
0
            return JANET_SYSV64_INTEGER;
12096
0
        case JANET_FFI_TYPE_DOUBLE:
12097
0
        case JANET_FFI_TYPE_FLOAT:
12098
0
            return JANET_SYSV64_SSE;
12099
0
        case JANET_FFI_TYPE_STRUCT: {
12100
0
            JanetFFIStruct *st = type.st;
12101
0
            if (st->size > 16) return JANET_SYSV64_MEMORY;
12102
0
            if (!st->is_aligned) return JANET_SYSV64_MEMORY;
12103
0
            JanetFFIWordSpec clazz = JANET_SYSV64_NO_CLASS;
12104
0
            if (st->size > 8 && st->size <= 16) {
12105
                /* map to pair classification */
12106
0
                int has_int_lo = 0;
12107
0
                int has_int_hi = 0;
12108
0
                for (uint32_t i = 0; i < st->field_count; i++) {
12109
0
                    JanetFFIWordSpec next_class = sysv64_classify_ext(st->fields[i].type, shift + st->fields[i].offset);
12110
0
                    switch (next_class) {
12111
0
                        default:
12112
0
                            break;
12113
0
                        case JANET_SYSV64_INTEGER:
12114
0
                            if (shift + st->fields[i].offset + type_size(st->fields[i].type) <= 8) {
12115
0
                                has_int_lo = 1;
12116
0
                            } else {
12117
0
                                has_int_hi = 2;
12118
0
                            }
12119
0
                            break;
12120
0
                        case JANET_SYSV64_PAIR_INTINT:
12121
0
                            has_int_lo = 1;
12122
0
                            has_int_hi = 2;
12123
0
                            break;
12124
0
                        case JANET_SYSV64_PAIR_INTSSE:
12125
0
                            has_int_lo = 1;
12126
0
                            break;
12127
0
                        case JANET_SYSV64_PAIR_SSEINT:
12128
0
                            has_int_hi = 2;
12129
0
                            break;
12130
0
                            break;
12131
0
                    }
12132
0
                }
12133
0
                switch (has_int_hi + has_int_lo) {
12134
0
                    case 0:
12135
0
                        clazz = JANET_SYSV64_PAIR_SSESSE;
12136
0
                        break;
12137
0
                    case 1:
12138
0
                        clazz = JANET_SYSV64_PAIR_INTSSE;
12139
0
                        break;
12140
0
                    case 2:
12141
0
                        clazz = JANET_SYSV64_PAIR_SSEINT;
12142
0
                        break;
12143
0
                    case 3:
12144
0
                        clazz = JANET_SYSV64_PAIR_INTINT;
12145
0
                        break;
12146
0
                }
12147
0
            } else {
12148
                /* Normal struct classification */
12149
0
                for (uint32_t i = 0; i < st->field_count; i++) {
12150
0
                    JanetFFIWordSpec next_class = sysv64_classify_ext(st->fields[i].type, shift + st->fields[i].offset);
12151
0
                    if (next_class != clazz) {
12152
0
                        if (clazz == JANET_SYSV64_NO_CLASS) {
12153
0
                            clazz = next_class;
12154
0
                        } else if (clazz == JANET_SYSV64_MEMORY || next_class == JANET_SYSV64_MEMORY) {
12155
0
                            clazz = JANET_SYSV64_MEMORY;
12156
0
                        } else if (clazz == JANET_SYSV64_INTEGER || next_class == JANET_SYSV64_INTEGER) {
12157
0
                            clazz = JANET_SYSV64_INTEGER;
12158
0
                        } else {
12159
0
                            clazz = JANET_SYSV64_SSE;
12160
0
                        }
12161
0
                    }
12162
0
                }
12163
0
            }
12164
0
            return clazz;
12165
0
        }
12166
0
        case JANET_FFI_TYPE_VOID:
12167
0
            return JANET_SYSV64_NO_CLASS;
12168
0
        default:
12169
0
            janet_panic("nyi");
12170
0
            return JANET_SYSV64_NO_CLASS;
12171
0
    }
12172
0
}
12173
0
static JanetFFIWordSpec sysv64_classify(JanetFFIType type) {
12174
0
    return sysv64_classify_ext(type, 0);
12175
0
}
12176
#endif
12177
12178
JANET_CORE_FN(cfun_ffi_signature,
12179
              "(ffi/signature calling-convention ret-type & arg-types)",
12180
              "Create a function signature object that can be used to make calls "
12181
0
              "with raw function pointers.") {
12182
0
    janet_arity(argc, 2, -1);
12183
0
    uint32_t frame_size = 0;
12184
0
    uint32_t variant = 0;
12185
0
    uint32_t arg_count = argc - 2;
12186
0
    uint32_t stack_count = 0;
12187
0
    JanetFFICallingConvention cc = decode_ffi_cc(janet_getkeyword(argv, 0));
12188
0
    JanetFFIType ret_type = decode_ffi_type(argv[1]);
12189
0
    JanetFFIMapping ret = {
12190
0
        ret_type,
12191
0
        JANET_SYSV64_NO_CLASS,
12192
0
        0,
12193
0
        0
12194
0
    };
12195
0
    JanetFFIMapping mappings[JANET_FFI_MAX_ARGS];
12196
0
    for (int i = 0; i < JANET_FFI_MAX_ARGS; i++) mappings[i] = void_mapping();
12197
0
    switch (cc) {
12198
0
        default:
12199
0
        case JANET_FFI_CC_NONE: {
12200
            /* Even if unsupported, we can check that the signature is valid
12201
             * and error at runtime */
12202
0
            for (uint32_t i = 0; i < arg_count; i++) {
12203
0
                decode_ffi_type(argv[i + 2]);
12204
0
            }
12205
0
        }
12206
0
        break;
12207
12208
#ifdef JANET_FFI_WIN64_ENABLED
12209
        case JANET_FFI_CC_WIN_64: {
12210
            size_t ret_size = type_size(ret.type);
12211
            uint32_t ref_stack_count = 0;
12212
            ret.spec = JANET_WIN64_REGISTER;
12213
            uint32_t next_register = 0;
12214
            if (ret_size != 0 && ret_size != 1 && ret_size != 2 && ret_size != 4 && ret_size != 8) {
12215
                ret.spec = JANET_WIN64_REGISTER_REF;
12216
                next_register++;
12217
            } else if (ret.type.prim == JANET_FFI_TYPE_FLOAT ||
12218
                       ret.type.prim == JANET_FFI_TYPE_DOUBLE) {
12219
                variant += 16;
12220
            }
12221
            for (uint32_t i = 0; i < arg_count; i++) {
12222
                mappings[i].type = decode_ffi_type(argv[i + 2]);
12223
                size_t el_size = type_size(mappings[i].type);
12224
                int is_register_sized = (el_size == 1 || el_size == 2 || el_size == 4 || el_size == 8);
12225
                if (next_register < 4) {
12226
                    mappings[i].offset = next_register;
12227
                    if (is_register_sized) {
12228
                        mappings[i].spec = JANET_WIN64_REGISTER;
12229
                        if (mappings[i].type.prim == JANET_FFI_TYPE_FLOAT ||
12230
                                mappings[i].type.prim == JANET_FFI_TYPE_DOUBLE) {
12231
                            variant += 1 << (3 - next_register);
12232
                        }
12233
                    } else {
12234
                        mappings[i].spec = JANET_WIN64_REGISTER_REF;
12235
                        mappings[i].offset2 = ref_stack_count;
12236
                        ref_stack_count += (uint32_t)((el_size + 15) / 16);
12237
                    }
12238
                    next_register++;
12239
                } else {
12240
                    if (is_register_sized) {
12241
                        mappings[i].spec = JANET_WIN64_STACK;
12242
                        mappings[i].offset = stack_count;
12243
                        stack_count++;
12244
                    } else {
12245
                        mappings[i].spec = JANET_WIN64_STACK_REF;
12246
                        mappings[i].offset = stack_count;
12247
                        stack_count++;
12248
                        mappings[i].offset2 = ref_stack_count;
12249
                        ref_stack_count += (uint32_t)((el_size + 15) / 16);
12250
                    }
12251
                }
12252
            }
12253
12254
            /* Add reference items */
12255
            stack_count += 2 * ref_stack_count;
12256
            if (stack_count & 0x1) {
12257
                stack_count++;
12258
            }
12259
12260
            /* Invert stack
12261
             * Offsets are in units of 8-bytes */
12262
            for (uint32_t i = 0; i < arg_count; i++) {
12263
                if (mappings[i].spec == JANET_WIN64_STACK_REF || mappings[i].spec == JANET_WIN64_REGISTER_REF) {
12264
                    /* Align size to 16 bytes */
12265
                    size_t size = (type_size(mappings[i].type) + 15) & ~0xFUL;
12266
                    mappings[i].offset2 = (uint32_t)(stack_count - mappings[i].offset2 - (size / 8));
12267
                }
12268
            }
12269
12270
        }
12271
        break;
12272
#endif
12273
12274
0
#ifdef JANET_FFI_SYSV64_ENABLED
12275
0
        case JANET_FFI_CC_SYSV_64: {
12276
0
            JanetFFIWordSpec ret_spec = sysv64_classify(ret.type);
12277
0
            ret.spec = ret_spec;
12278
0
            if (ret_spec == JANET_SYSV64_SSE) variant = 1;
12279
0
            if (ret_spec == JANET_SYSV64_PAIR_INTSSE) variant = 2;
12280
0
            if (ret_spec == JANET_SYSV64_PAIR_SSEINT) variant = 3;
12281
            /* Spill register overflow to memory */
12282
0
            uint32_t next_register = 0;
12283
0
            uint32_t next_fp_register = 0;
12284
0
            const uint32_t max_regs = 6;
12285
0
            const uint32_t max_fp_regs = 8;
12286
0
            if (ret_spec == JANET_SYSV64_MEMORY) {
12287
                /* First integer reg is pointer. */
12288
0
                next_register = 1;
12289
0
            }
12290
0
            for (uint32_t i = 0; i < arg_count; i++) {
12291
0
                mappings[i].type = decode_ffi_type(argv[i + 2]);
12292
0
                mappings[i].offset = 0;
12293
0
                mappings[i].spec = sysv64_classify(mappings[i].type);
12294
0
                if (mappings[i].spec == JANET_SYSV64_NO_CLASS) {
12295
0
                    janet_panic("unexpected void parameter");
12296
0
                }
12297
0
                size_t el_size = (type_size(mappings[i].type) + 7) / 8;
12298
0
                switch (mappings[i].spec) {
12299
0
                    default:
12300
0
                        janet_panicf("nyi: %d", mappings[i].spec);
12301
0
                    case JANET_SYSV64_INTEGER: {
12302
0
                        if (next_register < max_regs) {
12303
0
                            mappings[i].offset = next_register++;
12304
0
                        } else {
12305
0
                            mappings[i].spec = JANET_SYSV64_MEMORY;
12306
0
                            mappings[i].offset = stack_count;
12307
0
                            stack_count += el_size;
12308
0
                        }
12309
0
                    }
12310
0
                    break;
12311
0
                    case JANET_SYSV64_SSE: {
12312
0
                        if (next_fp_register < max_fp_regs) {
12313
0
                            mappings[i].offset = next_fp_register++;
12314
0
                        } else {
12315
0
                            mappings[i].spec = JANET_SYSV64_MEMORY;
12316
0
                            mappings[i].offset = stack_count;
12317
0
                            stack_count += el_size;
12318
0
                        }
12319
0
                    }
12320
0
                    break;
12321
0
                    case JANET_SYSV64_MEMORY: {
12322
0
                        mappings[i].offset = stack_count;
12323
0
                        stack_count += el_size;
12324
0
                    }
12325
0
                    break;
12326
0
                    case JANET_SYSV64_PAIR_INTINT: {
12327
0
                        if (next_register + 1 < max_regs) {
12328
0
                            mappings[i].offset = next_register++;
12329
0
                            mappings[i].offset2 = next_register++;
12330
0
                        } else {
12331
0
                            mappings[i].spec = JANET_SYSV64_MEMORY;
12332
0
                            mappings[i].offset = stack_count;
12333
0
                            stack_count += el_size;
12334
0
                        }
12335
0
                    }
12336
0
                    break;
12337
0
                    case JANET_SYSV64_PAIR_INTSSE: {
12338
0
                        if (next_register < max_regs && next_fp_register < max_fp_regs) {
12339
0
                            mappings[i].offset = next_register++;
12340
0
                            mappings[i].offset2 = next_fp_register++;
12341
0
                        } else {
12342
0
                            mappings[i].spec = JANET_SYSV64_MEMORY;
12343
0
                            mappings[i].offset = stack_count;
12344
0
                            stack_count += el_size;
12345
0
                        }
12346
0
                    }
12347
0
                    break;
12348
0
                    case JANET_SYSV64_PAIR_SSEINT: {
12349
0
                        if (next_register < max_regs && next_fp_register < max_fp_regs) {
12350
0
                            mappings[i].offset = next_fp_register++;
12351
0
                            mappings[i].offset2 = next_register++;
12352
0
                        } else {
12353
0
                            mappings[i].spec = JANET_SYSV64_MEMORY;
12354
0
                            mappings[i].offset = stack_count;
12355
0
                            stack_count += el_size;
12356
0
                        }
12357
0
                    }
12358
0
                    break;
12359
0
                    case JANET_SYSV64_PAIR_SSESSE: {
12360
0
                        if (next_fp_register < max_fp_regs) {
12361
0
                            mappings[i].offset = next_fp_register++;
12362
0
                            mappings[i].offset2 = next_fp_register++;
12363
0
                        } else {
12364
0
                            mappings[i].spec = JANET_SYSV64_MEMORY;
12365
0
                            mappings[i].offset = stack_count;
12366
0
                            stack_count += el_size;
12367
0
                        }
12368
0
                    }
12369
0
                    break;
12370
0
                }
12371
0
            }
12372
0
        }
12373
0
        break;
12374
0
#endif
12375
0
    }
12376
12377
    /* Create signature abstract value */
12378
0
    JanetFFISignature *abst = janet_abstract(&janet_signature_type, sizeof(JanetFFISignature));
12379
0
    abst->frame_size = frame_size;
12380
0
    abst->cc = cc;
12381
0
    abst->ret = ret;
12382
0
    abst->arg_count = arg_count;
12383
0
    abst->variant = variant;
12384
0
    abst->stack_count = stack_count;
12385
0
    memcpy(abst->args, mappings, sizeof(JanetFFIMapping) * JANET_FFI_MAX_ARGS);
12386
0
    return janet_wrap_abstract(abst);
12387
0
}
12388
12389
#ifdef JANET_FFI_SYSV64_ENABLED
12390
12391
0
static void janet_ffi_sysv64_standard_callback(void *ctx, void *userdata) {
12392
0
    janet_ffi_trampoline(ctx, userdata);
12393
0
}
12394
12395
/* Functions that set all argument registers. Two variants - one to read rax and rdx returns, another
12396
 * to read xmm0 and xmm1 returns. */
12397
typedef struct {
12398
    uint64_t x;
12399
    uint64_t y;
12400
} sysv64_int_return;
12401
typedef struct {
12402
    double x;
12403
    double y;
12404
} sysv64_sse_return;
12405
typedef struct {
12406
    uint64_t x;
12407
    double y;
12408
} sysv64_intsse_return;
12409
typedef struct {
12410
    double y;
12411
    uint64_t x;
12412
} sysv64_sseint_return;
12413
typedef sysv64_int_return janet_sysv64_variant_1(uint64_t a, uint64_t b, uint64_t c, uint64_t d, uint64_t e, uint64_t f,
12414
        double r1, double r2, double r3, double r4, double r5, double r6, double r7, double r8);
12415
typedef sysv64_sse_return janet_sysv64_variant_2(uint64_t a, uint64_t b, uint64_t c, uint64_t d, uint64_t e, uint64_t f,
12416
        double r1, double r2, double r3, double r4, double r5, double r6, double r7, double r8);
12417
typedef sysv64_intsse_return janet_sysv64_variant_3(uint64_t a, uint64_t b, uint64_t c, uint64_t d, uint64_t e, uint64_t f,
12418
        double r1, double r2, double r3, double r4, double r5, double r6, double r7, double r8);
12419
typedef sysv64_sseint_return janet_sysv64_variant_4(uint64_t a, uint64_t b, uint64_t c, uint64_t d, uint64_t e, uint64_t f,
12420
        double r1, double r2, double r3, double r4, double r5, double r6, double r7, double r8);
12421
12422
0
static Janet janet_ffi_sysv64(JanetFFISignature *signature, void *function_pointer, const Janet *argv) {
12423
0
    union {
12424
0
        sysv64_int_return int_return;
12425
0
        sysv64_sse_return sse_return;
12426
0
        sysv64_sseint_return sseint_return;
12427
0
        sysv64_intsse_return intsse_return;
12428
0
    } retu;
12429
0
    uint64_t pair[2];
12430
0
    uint64_t regs[6];
12431
0
    double fp_regs[8];
12432
0
    JanetFFIWordSpec ret_spec = signature->ret.spec;
12433
0
    void *ret_mem = &retu.int_return;
12434
0
    if (ret_spec == JANET_SYSV64_MEMORY) {
12435
0
        ret_mem = alloca(type_size(signature->ret.type));
12436
0
        regs[0] = (uint64_t) ret_mem;
12437
0
    }
12438
0
    uint64_t *stack = alloca(sizeof(uint64_t) * signature->stack_count);
12439
0
    for (uint32_t i = 0; i < signature->arg_count; i++) {
12440
0
        uint64_t *to;
12441
0
        int32_t n = i + 2;
12442
0
        JanetFFIMapping arg = signature->args[i];
12443
0
        switch (arg.spec) {
12444
0
            default:
12445
0
                janet_panic("nyi");
12446
0
            case JANET_SYSV64_INTEGER:
12447
0
                to = regs + arg.offset;
12448
0
                break;
12449
0
            case JANET_SYSV64_SSE:
12450
0
                to = (uint64_t *)(fp_regs + arg.offset);
12451
0
                break;
12452
0
            case JANET_SYSV64_MEMORY:
12453
0
                to = stack + arg.offset;
12454
0
                break;
12455
0
            case JANET_SYSV64_PAIR_INTINT:
12456
0
                janet_ffi_write_one(pair, argv, n, arg.type, JANET_FFI_MAX_RECUR);
12457
0
                regs[arg.offset] = pair[0];
12458
0
                regs[arg.offset2] = pair[1];
12459
0
                continue;
12460
0
            case JANET_SYSV64_PAIR_INTSSE:
12461
0
                janet_ffi_write_one(pair, argv, n, arg.type, JANET_FFI_MAX_RECUR);
12462
0
                regs[arg.offset] = pair[0];
12463
0
                ((uint64_t *) fp_regs)[arg.offset2] = pair[1];
12464
0
                continue;
12465
0
            case JANET_SYSV64_PAIR_SSEINT:
12466
0
                janet_ffi_write_one(pair, argv, n, arg.type, JANET_FFI_MAX_RECUR);
12467
0
                ((uint64_t *) fp_regs)[arg.offset] = pair[0];
12468
0
                regs[arg.offset2] = pair[1];
12469
0
                continue;
12470
0
            case JANET_SYSV64_PAIR_SSESSE:
12471
0
                janet_ffi_write_one(pair, argv, n, arg.type, JANET_FFI_MAX_RECUR);
12472
0
                ((uint64_t *) fp_regs)[arg.offset] = pair[0];
12473
0
                ((uint64_t *) fp_regs)[arg.offset2] = pair[1];
12474
0
                continue;
12475
0
        }
12476
0
        janet_ffi_write_one(to, argv, n, arg.type, JANET_FFI_MAX_RECUR);
12477
0
    }
12478
12479
0
    switch (signature->variant) {
12480
0
        case 0:
12481
0
            retu.int_return = ((janet_sysv64_variant_1 *)(function_pointer))(
12482
0
                                  regs[0], regs[1], regs[2], regs[3], regs[4], regs[5],
12483
0
                                  fp_regs[0], fp_regs[1], fp_regs[2], fp_regs[3],
12484
0
                                  fp_regs[4], fp_regs[5], fp_regs[6], fp_regs[7]);
12485
0
            break;
12486
0
        case 1:
12487
0
            retu.sse_return = ((janet_sysv64_variant_2 *)(function_pointer))(
12488
0
                                  regs[0], regs[1], regs[2], regs[3], regs[4], regs[5],
12489
0
                                  fp_regs[0], fp_regs[1], fp_regs[2], fp_regs[3],
12490
0
                                  fp_regs[4], fp_regs[5], fp_regs[6], fp_regs[7]);
12491
0
            break;
12492
0
        case 2:
12493
0
            retu.intsse_return = ((janet_sysv64_variant_3 *)(function_pointer))(
12494
0
                                     regs[0], regs[1], regs[2], regs[3], regs[4], regs[5],
12495
0
                                     fp_regs[0], fp_regs[1], fp_regs[2], fp_regs[3],
12496
0
                                     fp_regs[4], fp_regs[5], fp_regs[6], fp_regs[7]);
12497
0
            break;
12498
0
        case 3:
12499
0
            retu.sseint_return = ((janet_sysv64_variant_4 *)(function_pointer))(
12500
0
                                     regs[0], regs[1], regs[2], regs[3], regs[4], regs[5],
12501
0
                                     fp_regs[0], fp_regs[1], fp_regs[2], fp_regs[3],
12502
0
                                     fp_regs[4], fp_regs[5], fp_regs[6], fp_regs[7]);
12503
0
            break;
12504
0
    }
12505
12506
0
    return janet_ffi_read_one(ret_mem, signature->ret.type, JANET_FFI_MAX_RECUR);
12507
0
}
12508
12509
#endif
12510
12511
#ifdef JANET_FFI_WIN64_ENABLED
12512
12513
static void janet_ffi_win64_standard_callback(void *ctx, void *userdata) {
12514
    janet_ffi_trampoline(ctx, userdata);
12515
}
12516
12517
/* Variants that allow setting all required registers for 64 bit windows calling convention.
12518
 * win64 calling convention has up to 4 arguments on registers, and one register for returns.
12519
 * Each register can either be an integer or floating point register, resulting in
12520
 * 2^5 = 32 variants. Unlike sysv, there are no function signatures that will fill
12521
 * all of the possible registers which is why we have so many variants. If you were using
12522
 * assembly, you could manually fill all of the registers and only have a single variant.
12523
 * And msvc does not support inline assembly on 64 bit targets, so yeah, we have this hackery. */
12524
typedef uint64_t (win64_variant_i_iiii)(uint64_t, uint64_t, uint64_t, uint64_t);
12525
typedef uint64_t (win64_variant_i_iiif)(uint64_t, uint64_t, uint64_t, double);
12526
typedef uint64_t (win64_variant_i_iifi)(uint64_t, uint64_t, double, uint64_t);
12527
typedef uint64_t (win64_variant_i_iiff)(uint64_t, uint64_t, double, double);
12528
typedef uint64_t (win64_variant_i_ifii)(uint64_t, double, uint64_t, uint64_t);
12529
typedef uint64_t (win64_variant_i_ifif)(uint64_t, double, uint64_t, double);
12530
typedef uint64_t (win64_variant_i_iffi)(uint64_t, double, double, uint64_t);
12531
typedef uint64_t (win64_variant_i_ifff)(uint64_t, double, double, double);
12532
typedef uint64_t (win64_variant_i_fiii)(double, uint64_t, uint64_t, uint64_t);
12533
typedef uint64_t (win64_variant_i_fiif)(double, uint64_t, uint64_t, double);
12534
typedef uint64_t (win64_variant_i_fifi)(double, uint64_t, double, uint64_t);
12535
typedef uint64_t (win64_variant_i_fiff)(double, uint64_t, double, double);
12536
typedef uint64_t (win64_variant_i_ffii)(double, double, uint64_t, uint64_t);
12537
typedef uint64_t (win64_variant_i_ffif)(double, double, uint64_t, double);
12538
typedef uint64_t (win64_variant_i_fffi)(double, double, double, uint64_t);
12539
typedef uint64_t (win64_variant_i_ffff)(double, double, double, double);
12540
typedef double (win64_variant_f_iiii)(uint64_t, uint64_t, uint64_t, uint64_t);
12541
typedef double (win64_variant_f_iiif)(uint64_t, uint64_t, uint64_t, double);
12542
typedef double (win64_variant_f_iifi)(uint64_t, uint64_t, double, uint64_t);
12543
typedef double (win64_variant_f_iiff)(uint64_t, uint64_t, double, double);
12544
typedef double (win64_variant_f_ifii)(uint64_t, double, uint64_t, uint64_t);
12545
typedef double (win64_variant_f_ifif)(uint64_t, double, uint64_t, double);
12546
typedef double (win64_variant_f_iffi)(uint64_t, double, double, uint64_t);
12547
typedef double (win64_variant_f_ifff)(uint64_t, double, double, double);
12548
typedef double (win64_variant_f_fiii)(double, uint64_t, uint64_t, uint64_t);
12549
typedef double (win64_variant_f_fiif)(double, uint64_t, uint64_t, double);
12550
typedef double (win64_variant_f_fifi)(double, uint64_t, double, uint64_t);
12551
typedef double (win64_variant_f_fiff)(double, uint64_t, double, double);
12552
typedef double (win64_variant_f_ffii)(double, double, uint64_t, uint64_t);
12553
typedef double (win64_variant_f_ffif)(double, double, uint64_t, double);
12554
typedef double (win64_variant_f_fffi)(double, double, double, uint64_t);
12555
typedef double (win64_variant_f_ffff)(double, double, double, double);
12556
12557
static Janet janet_ffi_win64(JanetFFISignature *signature, void *function_pointer, const Janet *argv) {
12558
    union {
12559
        uint64_t integer;
12560
        double real;
12561
    } regs[4];
12562
    union {
12563
        uint64_t integer;
12564
        double real;
12565
    } ret_reg;
12566
    JanetFFIWordSpec ret_spec = signature->ret.spec;
12567
    void *ret_mem = &ret_reg.integer;
12568
    if (ret_spec == JANET_WIN64_REGISTER_REF) {
12569
        ret_mem = alloca(type_size(signature->ret.type));
12570
        regs[0].integer = (uint64_t) ret_mem;
12571
    }
12572
    size_t stack_size = signature->stack_count * 8;
12573
    size_t stack_shift = 2;
12574
    uint64_t *stack = alloca(stack_size);
12575
    for (uint32_t i = 0; i < signature->arg_count; i++) {
12576
        int32_t n = i + 2;
12577
        JanetFFIMapping arg = signature->args[i];
12578
        if (arg.spec == JANET_WIN64_STACK) {
12579
            janet_ffi_write_one(stack + arg.offset, argv, n, arg.type, JANET_FFI_MAX_RECUR);
12580
        } else if (arg.spec == JANET_WIN64_STACK_REF) {
12581
            uint8_t *ptr = (uint8_t *)(stack + arg.offset2);
12582
            janet_ffi_write_one(ptr, argv, n, arg.type, JANET_FFI_MAX_RECUR);
12583
            stack[arg.offset] = (uint64_t)(ptr - stack_shift * sizeof(uint64_t));
12584
        } else if (arg.spec == JANET_WIN64_REGISTER_REF) {
12585
            uint8_t *ptr = (uint8_t *)(stack + arg.offset2);
12586
            janet_ffi_write_one(ptr, argv, n, arg.type, JANET_FFI_MAX_RECUR);
12587
            regs[arg.offset].integer = (uint64_t)(ptr - stack_shift * sizeof(uint64_t));
12588
        } else {
12589
            janet_ffi_write_one((uint8_t *) &regs[arg.offset].integer, argv, n, arg.type, JANET_FFI_MAX_RECUR);
12590
        }
12591
    }
12592
12593
    /* hack to get proper stack placement and avoid clobbering from logic above - shift stack down, otherwise we have issues.
12594
     * Technically, this writes into 16 bytes of unallocated stack memory */
12595
#ifdef JANET_MINGW
12596
#pragma GCC diagnostic ignored "-Wstringop-overflow"
12597
#endif
12598
    if (stack_size) memmove(stack - stack_shift, stack, stack_size);
12599
#ifdef JANET_MINGW
12600
#pragma GCC diagnostic pop
12601
#endif
12602
12603
    switch (signature->variant) {
12604
        default:
12605
            janet_panicf("unknown variant %d", signature->variant);
12606
        case 0:
12607
            ret_reg.integer = ((win64_variant_i_iiii *) function_pointer)(regs[0].integer, regs[1].integer, regs[2].integer, regs[3].integer);
12608
            break;
12609
        case 1:
12610
            ret_reg.integer = ((win64_variant_i_iiif *) function_pointer)(regs[0].integer, regs[1].integer, regs[2].integer, regs[3].real);
12611
            break;
12612
        case 2:
12613
            ret_reg.integer = ((win64_variant_i_iifi *) function_pointer)(regs[0].integer, regs[1].integer, regs[2].real, regs[3].integer);
12614
            break;
12615
        case 3:
12616
            ret_reg.integer = ((win64_variant_i_iiff *) function_pointer)(regs[0].integer, regs[1].integer, regs[2].real, regs[3].real);
12617
            break;
12618
        case 4:
12619
            ret_reg.integer = ((win64_variant_i_ifii *) function_pointer)(regs[0].integer, regs[1].real, regs[2].integer, regs[3].integer);
12620
            break;
12621
        case 5:
12622
            ret_reg.integer = ((win64_variant_i_ifif *) function_pointer)(regs[0].integer, regs[1].real, regs[2].integer, regs[3].real);
12623
            break;
12624
        case 6:
12625
            ret_reg.integer = ((win64_variant_i_iffi *) function_pointer)(regs[0].integer, regs[1].real, regs[2].real, regs[3].integer);
12626
            break;
12627
        case 7:
12628
            ret_reg.integer = ((win64_variant_i_ifff *) function_pointer)(regs[0].integer, regs[1].real, regs[2].real, regs[3].real);
12629
            break;
12630
        case 8:
12631
            ret_reg.integer = ((win64_variant_i_fiii *) function_pointer)(regs[0].real, regs[1].integer, regs[2].integer, regs[3].integer);
12632
            break;
12633
        case 9:
12634
            ret_reg.integer = ((win64_variant_i_fiif *) function_pointer)(regs[0].real, regs[1].integer, regs[2].integer, regs[3].real);
12635
            break;
12636
        case 10:
12637
            ret_reg.integer = ((win64_variant_i_fifi *) function_pointer)(regs[0].real, regs[1].integer, regs[2].real, regs[3].integer);
12638
            break;
12639
        case 11:
12640
            ret_reg.integer = ((win64_variant_i_fiff *) function_pointer)(regs[0].real, regs[1].integer, regs[2].real, regs[3].real);
12641
            break;
12642
        case 12:
12643
            ret_reg.integer = ((win64_variant_i_ffii *) function_pointer)(regs[0].real, regs[1].real, regs[2].integer, regs[3].integer);
12644
            break;
12645
        case 13:
12646
            ret_reg.integer = ((win64_variant_i_ffif *) function_pointer)(regs[0].real, regs[1].real, regs[2].integer, regs[3].real);
12647
            break;
12648
        case 14:
12649
            ret_reg.integer = ((win64_variant_i_fffi *) function_pointer)(regs[0].real, regs[1].real, regs[2].real, regs[3].integer);
12650
            break;
12651
        case 15:
12652
            ret_reg.integer = ((win64_variant_i_ffff *) function_pointer)(regs[0].real, regs[1].real, regs[2].real, regs[3].real);
12653
            break;
12654
        case 16:
12655
            ret_reg.real = ((win64_variant_f_iiii *) function_pointer)(regs[0].integer, regs[1].integer, regs[2].integer, regs[3].integer);
12656
            break;
12657
        case 17:
12658
            ret_reg.real = ((win64_variant_f_iiif *) function_pointer)(regs[0].integer, regs[1].integer, regs[2].integer, regs[3].real);
12659
            break;
12660
        case 18:
12661
            ret_reg.real = ((win64_variant_f_iifi *) function_pointer)(regs[0].integer, regs[1].integer, regs[2].real, regs[3].integer);
12662
            break;
12663
        case 19:
12664
            ret_reg.real = ((win64_variant_f_iiff *) function_pointer)(regs[0].integer, regs[1].integer, regs[2].real, regs[3].real);
12665
            break;
12666
        case 20:
12667
            ret_reg.real = ((win64_variant_f_ifii *) function_pointer)(regs[0].integer, regs[1].real, regs[2].integer, regs[3].integer);
12668
            break;
12669
        case 21:
12670
            ret_reg.real = ((win64_variant_f_ifif *) function_pointer)(regs[0].integer, regs[1].real, regs[2].integer, regs[3].real);
12671
            break;
12672
        case 22:
12673
            ret_reg.real = ((win64_variant_f_iffi *) function_pointer)(regs[0].integer, regs[1].real, regs[2].real, regs[3].integer);
12674
            break;
12675
        case 23:
12676
            ret_reg.real = ((win64_variant_f_ifff *) function_pointer)(regs[0].integer, regs[1].real, regs[2].real, regs[3].real);
12677
            break;
12678
        case 24:
12679
            ret_reg.real = ((win64_variant_f_fiii *) function_pointer)(regs[0].real, regs[1].integer, regs[2].integer, regs[3].integer);
12680
            break;
12681
        case 25:
12682
            ret_reg.real = ((win64_variant_f_fiif *) function_pointer)(regs[0].real, regs[1].integer, regs[2].integer, regs[3].real);
12683
            break;
12684
        case 26:
12685
            ret_reg.real = ((win64_variant_f_fifi *) function_pointer)(regs[0].real, regs[1].integer, regs[2].real, regs[3].integer);
12686
            break;
12687
        case 27:
12688
            ret_reg.real = ((win64_variant_f_fiff *) function_pointer)(regs[0].real, regs[1].integer, regs[2].real, regs[3].real);
12689
            break;
12690
        case 28:
12691
            ret_reg.real = ((win64_variant_f_ffii *) function_pointer)(regs[0].real, regs[1].real, regs[2].integer, regs[3].integer);
12692
            break;
12693
        case 29:
12694
            ret_reg.real = ((win64_variant_f_ffif *) function_pointer)(regs[0].real, regs[1].real, regs[2].integer, regs[3].real);
12695
            break;
12696
        case 30:
12697
            ret_reg.real = ((win64_variant_f_fffi *) function_pointer)(regs[0].real, regs[1].real, regs[2].real, regs[3].integer);
12698
            break;
12699
        case 31:
12700
            ret_reg.real = ((win64_variant_f_ffff *) function_pointer)(regs[0].real, regs[1].real, regs[2].real, regs[3].real);
12701
            break;
12702
    }
12703
12704
    return janet_ffi_read_one(ret_mem, signature->ret.type, JANET_FFI_MAX_RECUR);
12705
}
12706
12707
#endif
12708
12709
/* Allocate executable memory chunks in sizes of a page. Ideally we would keep
12710
 * an allocator around so that multiple JIT allocations would point to the same
12711
 * region but it isn't really worth it. */
12712
0
#define FFI_PAGE_MASK 0xFFF
12713
12714
JANET_CORE_FN(cfun_ffi_jitfn,
12715
              "(ffi/jitfn bytes)",
12716
              "Create an abstract type that can be used as the pointer argument to `ffi/call`. The content "
12717
0
              "of `bytes` is architecture specific machine code that will be copied into executable memory.") {
12718
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_JIT);
12719
0
    janet_fixarity(argc, 1);
12720
0
    JanetByteView bytes = janet_getbytes(argv, 0);
12721
12722
    /* Quick hack to align to page boundary, we should query OS. FIXME */
12723
0
    size_t alloc_size = ((size_t) bytes.len + FFI_PAGE_MASK) & ~FFI_PAGE_MASK;
12724
12725
0
#ifdef JANET_FFI_JIT
12726
0
#ifdef JANET_EV
12727
0
    JanetFFIJittedFn *fn = janet_abstract_threaded(&janet_type_ffijit, sizeof(JanetFFIJittedFn));
12728
#else
12729
    JanetFFIJittedFn *fn = janet_abstract(&janet_type_ffijit, sizeof(JanetFFIJittedFn));
12730
#endif
12731
0
    fn->function_pointer = NULL;
12732
0
    fn->size = 0;
12733
#ifdef JANET_WINDOWS
12734
    void *ptr = VirtualAlloc(NULL, alloc_size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
12735
#elif defined(MAP_ANONYMOUS)
12736
0
    void *ptr = mmap(0, alloc_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
12737
#elif defined(MAP_ANON)
12738
    /* macos doesn't have MAP_ANONYMOUS */
12739
    void *ptr = mmap(0, alloc_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
12740
#else
12741
    /* -std=c99 gets in the way */
12742
    /* #define MAP_ANONYMOUS 0x20 should work, though. */
12743
    void *ptr = mmap(0, alloc_size, PROT_READ | PROT_WRITE, MAP_PRIVATE, -1, 0);
12744
#endif
12745
0
    if (!ptr) {
12746
0
        janet_panic("failed to memory map writable memory");
12747
0
    }
12748
0
    memcpy(ptr, bytes.bytes, bytes.len);
12749
#ifdef JANET_WINDOWS
12750
    DWORD old = 0;
12751
    if (!VirtualProtect(ptr, alloc_size, PAGE_EXECUTE_READ, &old)) {
12752
        janet_panic("failed to make mapped memory executable");
12753
    }
12754
#else
12755
0
    if (mprotect(ptr, alloc_size, PROT_READ | PROT_EXEC) == -1) {
12756
0
        janet_panic("failed to make mapped memory executable");
12757
0
    }
12758
0
#endif
12759
0
    fn->size = alloc_size;
12760
0
    fn->function_pointer = ptr;
12761
0
    return janet_wrap_abstract(fn);
12762
#else
12763
    janet_panic("ffi/jitfn not available on this platform");
12764
#endif
12765
0
}
12766
12767
JANET_CORE_FN(cfun_ffi_call,
12768
              "(ffi/call pointer signature & args)",
12769
              "Call a raw pointer as a function pointer. The function signature specifies "
12770
0
              "how Janet values in `args` are converted to native machine types.") {
12771
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_USE);
12772
0
    janet_arity(argc, 2, -1);
12773
0
    void *function_pointer = janet_ffi_get_callable_pointer(argv, 0);
12774
0
    JanetFFISignature *signature = janet_getabstract(argv, 1, &janet_signature_type);
12775
0
    janet_fixarity(argc - 2, signature->arg_count);
12776
0
    switch (signature->cc) {
12777
0
        default:
12778
0
        case JANET_FFI_CC_NONE:
12779
0
            janet_panic("calling convention not supported");
12780
#ifdef JANET_FFI_WIN64_ENABLED
12781
        case JANET_FFI_CC_WIN_64:
12782
            return janet_ffi_win64(signature, function_pointer, argv);
12783
#endif
12784
0
#ifdef JANET_FFI_SYSV64_ENABLED
12785
0
        case JANET_FFI_CC_SYSV_64:
12786
0
            return janet_ffi_sysv64(signature, function_pointer, argv);
12787
0
#endif
12788
0
    }
12789
0
}
12790
12791
JANET_CORE_FN(cfun_ffi_buffer_write,
12792
              "(ffi/write ffi-type data &opt buffer index)",
12793
              "Append a native type to a buffer such as it would appear in memory. This can be used "
12794
              "to pass pointers to structs in the ffi, or send C/C++/native structs over the network "
12795
0
              "or to files. Returns a modifed buffer or a new buffer if one is not supplied.") {
12796
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_USE);
12797
0
    janet_arity(argc, 2, 4);
12798
0
    JanetFFIType type = decode_ffi_type(argv[0]);
12799
0
    uint32_t el_size = (uint32_t) type_size(type);
12800
0
    JanetBuffer *buffer = janet_optbuffer(argv, argc, 2, el_size);
12801
0
    int32_t index = janet_optnat(argv, argc, 3, 0);
12802
0
    int32_t old_count = buffer->count;
12803
0
    if (index > old_count) janet_panic("index out of bounds");
12804
0
    buffer->count = index;
12805
0
    janet_buffer_extra(buffer, el_size);
12806
0
    buffer->count = old_count;
12807
0
    memset(buffer->data + index, 0, el_size);
12808
0
    janet_ffi_write_one(buffer->data + index, argv, 1, type, JANET_FFI_MAX_RECUR);
12809
0
    index += el_size;
12810
0
    if (buffer->count < index) buffer->count = index;
12811
0
    return janet_wrap_buffer(buffer);
12812
0
}
12813
12814
JANET_CORE_FN(cfun_ffi_buffer_read,
12815
              "(ffi/read ffi-type bytes &opt offset)",
12816
              "Parse a native struct out of a buffer and convert it to normal Janet data structures. "
12817
              "This function is the inverse of `ffi/write`. `bytes` can also be a raw pointer, although "
12818
0
              "this is unsafe.") {
12819
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_USE);
12820
0
    janet_arity(argc, 2, 3);
12821
0
    JanetFFIType type = decode_ffi_type(argv[0]);
12822
0
    size_t offset = (size_t) janet_optnat(argv, argc, 2, 0);
12823
0
    if (janet_checktype(argv[1], JANET_POINTER)) {
12824
0
        uint8_t *ptr = janet_unwrap_pointer(argv[1]);
12825
0
        return janet_ffi_read_one(ptr + offset, type, JANET_FFI_MAX_RECUR);
12826
0
    } else {
12827
0
        size_t el_size = type_size(type);
12828
0
        JanetByteView bytes = janet_getbytes(argv, 1);
12829
0
        if ((size_t) bytes.len < offset + el_size) janet_panic("read out of range");
12830
0
        return janet_ffi_read_one(bytes.bytes + offset, type, JANET_FFI_MAX_RECUR);
12831
0
    }
12832
0
}
12833
12834
JANET_CORE_FN(cfun_ffi_get_callback_trampoline,
12835
              "(ffi/trampoline cc)",
12836
              "Get a native function pointer that can be used as a callback and passed to C libraries. "
12837
              "This callback trampoline has the signature `void trampoline(void \\*ctx, void \\*userdata)` in "
12838
              "the given calling convention. This is the only function signature supported. "
12839
              "It is up to the programmer to ensure that the `userdata` argument contains a janet function "
12840
              "the will be called with one argument, `ctx` which is an opaque pointer. This pointer can "
12841
0
              "be further inspected with `ffi/read`.") {
12842
0
    janet_arity(argc, 0, 1);
12843
0
    JanetFFICallingConvention cc = JANET_FFI_CC_DEFAULT;
12844
0
    if (argc >= 1) cc = decode_ffi_cc(janet_getkeyword(argv, 0));
12845
0
    switch (cc) {
12846
0
        default:
12847
0
        case JANET_FFI_CC_NONE:
12848
0
            janet_panic("calling convention not supported");
12849
#ifdef JANET_FFI_WIN64_ENABLED
12850
        case JANET_FFI_CC_WIN_64:
12851
            return janet_wrap_pointer(janet_ffi_win64_standard_callback);
12852
#endif
12853
0
#ifdef JANET_FFI_SYSV64_ENABLED
12854
0
        case JANET_FFI_CC_SYSV_64:
12855
0
            return janet_wrap_pointer(janet_ffi_sysv64_standard_callback);
12856
0
#endif
12857
0
    }
12858
0
}
12859
12860
JANET_CORE_FN(janet_core_raw_native,
12861
              "(ffi/native &opt path)",
12862
              "Load a shared object or dll from the given path, and do not extract"
12863
              " or run any code from it. This is different than `native`, which will "
12864
              "run initialization code to get a module table. If `path` is nil, opens the current running binary. "
12865
0
              "Returns a `core/native`.") {
12866
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_DEFINE);
12867
0
    janet_arity(argc, 0, 1);
12868
0
    const char *path = janet_optcstring(argv, argc, 0, NULL);
12869
0
    Clib lib = load_clib(path);
12870
0
    if (!lib) janet_panic(error_clib());
12871
0
    JanetAbstractNative *anative = janet_abstract(&janet_native_type, sizeof(JanetAbstractNative));
12872
0
    anative->clib = lib;
12873
0
    anative->closed = 0;
12874
0
    anative->is_self = path == NULL;
12875
0
    return janet_wrap_abstract(anative);
12876
0
}
12877
12878
JANET_CORE_FN(janet_core_native_lookup,
12879
              "(ffi/lookup native symbol-name)",
12880
              "Lookup a symbol from a native object. All symbol lookups will return a raw pointer "
12881
0
              "if the symbol is found, else nil.") {
12882
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_DEFINE);
12883
0
    janet_fixarity(argc, 2);
12884
0
    JanetAbstractNative *anative = janet_getabstract(argv, 0, &janet_native_type);
12885
0
    const char *sym = janet_getcstring(argv, 1);
12886
0
    if (anative->closed) janet_panic("native object already closed");
12887
0
    void *value = symbol_clib(anative->clib, sym);
12888
0
    if (NULL == value) return janet_wrap_nil();
12889
0
    return janet_wrap_pointer(value);
12890
0
}
12891
12892
JANET_CORE_FN(janet_core_native_close,
12893
              "(ffi/close native)",
12894
              "Free a native object. Dereferencing pointers to symbols in the object will have undefined "
12895
0
              "behavior after freeing.") {
12896
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_DEFINE);
12897
0
    janet_fixarity(argc, 1);
12898
0
    JanetAbstractNative *anative = janet_getabstract(argv, 0, &janet_native_type);
12899
0
    if (anative->closed) janet_panic("native object already closed");
12900
0
    if (anative->is_self) janet_panic("cannot close self");
12901
0
    anative->closed = 1;
12902
0
    free_clib(anative->clib);
12903
0
    return janet_wrap_nil();
12904
0
}
12905
12906
JANET_CORE_FN(cfun_ffi_malloc,
12907
              "(ffi/malloc size)",
12908
0
              "Allocates memory directly using the janet memory allocator. Memory allocated in this way must be freed manually! Returns a raw pointer, or nil if size = 0.") {
12909
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_USE);
12910
0
    janet_fixarity(argc, 1);
12911
0
    size_t size = janet_getsize(argv, 0);
12912
0
    if (size == 0) return janet_wrap_nil();
12913
0
    return janet_wrap_pointer(janet_malloc(size));
12914
0
}
12915
12916
JANET_CORE_FN(cfun_ffi_free,
12917
              "(ffi/free pointer)",
12918
0
              "Free memory allocated with `ffi/malloc`. Returns nil.") {
12919
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_USE);
12920
0
    janet_fixarity(argc, 1);
12921
0
    if (janet_checktype(argv[0], JANET_NIL)) return janet_wrap_nil();
12922
0
    void *pointer = janet_getpointer(argv, 0);
12923
0
    janet_free(pointer);
12924
0
    return janet_wrap_nil();
12925
0
}
12926
12927
JANET_CORE_FN(cfun_ffi_pointer_buffer,
12928
              "(ffi/pointer-buffer pointer capacity &opt count offset)",
12929
              "Create a buffer from a pointer. The underlying memory of the buffer will not be "
12930
              "reallocated or freed by the garbage collector, allowing unmanaged, mutable memory "
12931
              "to be manipulated with buffer functions. Attempts to resize or extend the buffer "
12932
              "beyond its initial capacity will raise an error. As with many FFI functions, this is memory "
12933
0
              "unsafe and can potentially allow out of bounds memory access. Returns a new buffer.") {
12934
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_USE);
12935
0
    janet_arity(argc, 2, 4);
12936
0
    void *pointer = janet_getpointer(argv, 0);
12937
0
    int32_t capacity = janet_getnat(argv, 1);
12938
0
    int32_t count = janet_optnat(argv, argc, 2, 0);
12939
0
    int64_t offset = janet_optinteger64(argv, argc, 3, 0);
12940
0
    uint8_t *offset_pointer = ((uint8_t *) pointer) + offset;
12941
0
    return janet_wrap_buffer(janet_pointer_buffer_unsafe(offset_pointer, capacity, count));
12942
0
}
12943
12944
0
void janet_lib_ffi(JanetTable *env) {
12945
0
    JanetRegExt ffi_cfuns[] = {
12946
0
        JANET_CORE_REG("ffi/native", janet_core_raw_native),
12947
0
        JANET_CORE_REG("ffi/lookup", janet_core_native_lookup),
12948
0
        JANET_CORE_REG("ffi/close", janet_core_native_close),
12949
0
        JANET_CORE_REG("ffi/signature", cfun_ffi_signature),
12950
0
        JANET_CORE_REG("ffi/call", cfun_ffi_call),
12951
0
        JANET_CORE_REG("ffi/struct", cfun_ffi_struct),
12952
0
        JANET_CORE_REG("ffi/write", cfun_ffi_buffer_write),
12953
0
        JANET_CORE_REG("ffi/read", cfun_ffi_buffer_read),
12954
0
        JANET_CORE_REG("ffi/size", cfun_ffi_size),
12955
0
        JANET_CORE_REG("ffi/align", cfun_ffi_align),
12956
0
        JANET_CORE_REG("ffi/trampoline", cfun_ffi_get_callback_trampoline),
12957
0
        JANET_CORE_REG("ffi/jitfn", cfun_ffi_jitfn),
12958
0
        JANET_CORE_REG("ffi/malloc", cfun_ffi_malloc),
12959
0
        JANET_CORE_REG("ffi/free", cfun_ffi_free),
12960
0
        JANET_CORE_REG("ffi/pointer-buffer", cfun_ffi_pointer_buffer),
12961
0
        JANET_REG_END
12962
0
    };
12963
0
    janet_core_cfuns_ext(env, NULL, ffi_cfuns);
12964
0
}
12965
12966
#endif
12967
12968
12969
/* src/core/fiber.c */
12970
#line 0 "src/core/fiber.c"
12971
12972
/*
12973
* Copyright (c) 2023 Calvin Rose
12974
*
12975
* Permission is hereby granted, free of charge, to any person obtaining a copy
12976
* of this software and associated documentation files (the "Software"), to
12977
* deal in the Software without restriction, including without limitation the
12978
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
12979
* sell copies of the Software, and to permit persons to whom the Software is
12980
* furnished to do so, subject to the following conditions:
12981
*
12982
* The above copyright notice and this permission notice shall be included in
12983
* all copies or substantial portions of the Software.
12984
*
12985
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12986
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
12987
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
12988
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
12989
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
12990
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
12991
* IN THE SOFTWARE.
12992
*/
12993
12994
#ifndef JANET_AMALG
12995
#include "features.h"
12996
#include <janet.h>
12997
#include "fiber.h"
12998
#include "state.h"
12999
#include "gc.h"
13000
#include "util.h"
13001
#endif
13002
13003
0
static void fiber_reset(JanetFiber *fiber) {
13004
0
    fiber->maxstack = JANET_STACK_MAX;
13005
0
    fiber->frame = 0;
13006
0
    fiber->stackstart = JANET_FRAME_SIZE;
13007
0
    fiber->stacktop = JANET_FRAME_SIZE;
13008
0
    fiber->child = NULL;
13009
0
    fiber->flags = JANET_FIBER_MASK_YIELD | JANET_FIBER_RESUME_NO_USEVAL | JANET_FIBER_RESUME_NO_SKIP;
13010
0
    fiber->env = NULL;
13011
0
    fiber->last_value = janet_wrap_nil();
13012
0
#ifdef JANET_EV
13013
0
    fiber->waiting = NULL;
13014
0
    fiber->sched_id = 0;
13015
0
    fiber->supervisor_channel = NULL;
13016
0
#endif
13017
0
    janet_fiber_set_status(fiber, JANET_STATUS_NEW);
13018
0
}
13019
13020
0
static JanetFiber *fiber_alloc(int32_t capacity) {
13021
0
    Janet *data;
13022
0
    JanetFiber *fiber = janet_gcalloc(JANET_MEMORY_FIBER, sizeof(JanetFiber));
13023
0
    if (capacity < 32) {
13024
0
        capacity = 32;
13025
0
    }
13026
0
    fiber->capacity = capacity;
13027
0
    data = janet_malloc(sizeof(Janet) * (size_t) capacity);
13028
0
    if (NULL == data) {
13029
0
        JANET_OUT_OF_MEMORY;
13030
0
    }
13031
0
    janet_vm.next_collection += sizeof(Janet) * capacity;
13032
0
    fiber->data = data;
13033
0
    return fiber;
13034
0
}
13035
13036
/* Create a new fiber with argn values on the stack by reusing a fiber. */
13037
0
JanetFiber *janet_fiber_reset(JanetFiber *fiber, JanetFunction *callee, int32_t argc, const Janet *argv) {
13038
0
    int32_t newstacktop;
13039
0
    fiber_reset(fiber);
13040
0
    if (argc) {
13041
0
        newstacktop = fiber->stacktop + argc;
13042
0
        if (newstacktop >= fiber->capacity) {
13043
0
            janet_fiber_setcapacity(fiber, 2 * newstacktop);
13044
0
        }
13045
0
        if (argv) {
13046
0
            memcpy(fiber->data + fiber->stacktop, argv, argc * sizeof(Janet));
13047
0
        } else {
13048
            /* If argv not given, fill with nil */
13049
0
            for (int32_t i = 0; i < argc; i++) {
13050
0
                fiber->data[fiber->stacktop + i] = janet_wrap_nil();
13051
0
            }
13052
0
        }
13053
0
        fiber->stacktop = newstacktop;
13054
0
    }
13055
    /* Don't panic on failure since we use this to implement janet_pcall */
13056
0
    if (janet_fiber_funcframe(fiber, callee)) return NULL;
13057
0
    janet_fiber_frame(fiber)->flags |= JANET_STACKFRAME_ENTRANCE;
13058
0
#ifdef JANET_EV
13059
0
    fiber->waiting = NULL;
13060
0
    fiber->supervisor_channel = NULL;
13061
0
#endif
13062
0
    return fiber;
13063
0
}
13064
13065
/* Create a new fiber with argn values on the stack. */
13066
0
JanetFiber *janet_fiber(JanetFunction *callee, int32_t capacity, int32_t argc, const Janet *argv) {
13067
0
    return janet_fiber_reset(fiber_alloc(capacity), callee, argc, argv);
13068
0
}
13069
13070
#ifdef JANET_DEBUG
13071
/* Test for memory issues by reallocating fiber every time we push a stack frame */
13072
static void janet_fiber_refresh_memory(JanetFiber *fiber) {
13073
    int32_t n = fiber->capacity;
13074
    if (n) {
13075
        Janet *newData = janet_malloc(sizeof(Janet) * n);
13076
        if (NULL == newData) {
13077
            JANET_OUT_OF_MEMORY;
13078
        }
13079
        memcpy(newData, fiber->data, fiber->capacity * sizeof(Janet));
13080
        janet_free(fiber->data);
13081
        fiber->data = newData;
13082
    }
13083
}
13084
#endif
13085
13086
/* Ensure that the fiber has enough extra capacity */
13087
0
void janet_fiber_setcapacity(JanetFiber *fiber, int32_t n) {
13088
0
    int32_t old_size = fiber->capacity;
13089
0
    int32_t diff = n - old_size;
13090
0
    Janet *newData = janet_realloc(fiber->data, sizeof(Janet) * n);
13091
0
    if (NULL == newData) {
13092
0
        JANET_OUT_OF_MEMORY;
13093
0
    }
13094
0
    fiber->data = newData;
13095
0
    fiber->capacity = n;
13096
0
    janet_vm.next_collection += sizeof(Janet) * diff;
13097
0
}
13098
13099
/* Grow fiber if needed */
13100
0
static void janet_fiber_grow(JanetFiber *fiber, int32_t needed) {
13101
0
    int32_t cap = needed > (INT32_MAX / 2) ? INT32_MAX : 2 * needed;
13102
0
    janet_fiber_setcapacity(fiber, cap);
13103
0
}
13104
13105
/* Push a value on the next stack frame */
13106
0
void janet_fiber_push(JanetFiber *fiber, Janet x) {
13107
0
    if (fiber->stacktop == INT32_MAX) janet_panic("stack overflow");
13108
0
    if (fiber->stacktop >= fiber->capacity) {
13109
0
        janet_fiber_grow(fiber, fiber->stacktop);
13110
0
    }
13111
0
    fiber->data[fiber->stacktop++] = x;
13112
0
}
13113
13114
/* Push 2 values on the next stack frame */
13115
0
void janet_fiber_push2(JanetFiber *fiber, Janet x, Janet y) {
13116
0
    if (fiber->stacktop >= INT32_MAX - 1) janet_panic("stack overflow");
13117
0
    int32_t newtop = fiber->stacktop + 2;
13118
0
    if (newtop > fiber->capacity) {
13119
0
        janet_fiber_grow(fiber, newtop);
13120
0
    }
13121
0
    fiber->data[fiber->stacktop] = x;
13122
0
    fiber->data[fiber->stacktop + 1] = y;
13123
0
    fiber->stacktop = newtop;
13124
0
}
13125
13126
/* Push 3 values on the next stack frame */
13127
0
void janet_fiber_push3(JanetFiber *fiber, Janet x, Janet y, Janet z) {
13128
0
    if (fiber->stacktop >= INT32_MAX - 2) janet_panic("stack overflow");
13129
0
    int32_t newtop = fiber->stacktop + 3;
13130
0
    if (newtop > fiber->capacity) {
13131
0
        janet_fiber_grow(fiber, newtop);
13132
0
    }
13133
0
    fiber->data[fiber->stacktop] = x;
13134
0
    fiber->data[fiber->stacktop + 1] = y;
13135
0
    fiber->data[fiber->stacktop + 2] = z;
13136
0
    fiber->stacktop = newtop;
13137
0
}
13138
13139
/* Push an array on the next stack frame */
13140
0
void janet_fiber_pushn(JanetFiber *fiber, const Janet *arr, int32_t n) {
13141
0
    if (fiber->stacktop > INT32_MAX - n) janet_panic("stack overflow");
13142
0
    int32_t newtop = fiber->stacktop + n;
13143
0
    if (newtop > fiber->capacity) {
13144
0
        janet_fiber_grow(fiber, newtop);
13145
0
    }
13146
0
    safe_memcpy(fiber->data + fiber->stacktop, arr, n * sizeof(Janet));
13147
0
    fiber->stacktop = newtop;
13148
0
}
13149
13150
/* Create a struct with n values. If n is odd, the last value is ignored. */
13151
0
static Janet make_struct_n(const Janet *args, int32_t n) {
13152
0
    int32_t i = 0;
13153
0
    JanetKV *st = janet_struct_begin(n & (~1));
13154
0
    for (; i < n; i += 2) {
13155
0
        janet_struct_put(st, args[i], args[i + 1]);
13156
0
    }
13157
0
    return janet_wrap_struct(janet_struct_end(st));
13158
0
}
13159
13160
/* Push a stack frame to a fiber */
13161
0
int janet_fiber_funcframe(JanetFiber *fiber, JanetFunction *func) {
13162
0
    JanetStackFrame *newframe;
13163
13164
0
    int32_t i;
13165
0
    int32_t oldtop = fiber->stacktop;
13166
0
    int32_t oldframe = fiber->frame;
13167
0
    int32_t nextframe = fiber->stackstart;
13168
0
    int32_t nextstacktop = nextframe + func->def->slotcount + JANET_FRAME_SIZE;
13169
0
    int32_t next_arity = fiber->stacktop - fiber->stackstart;
13170
13171
    /* Check strict arity before messing with state */
13172
0
    if (next_arity < func->def->min_arity) return 1;
13173
0
    if (next_arity > func->def->max_arity) return 1;
13174
13175
0
    if (fiber->capacity < nextstacktop) {
13176
0
        janet_fiber_setcapacity(fiber, 2 * nextstacktop);
13177
#ifdef JANET_DEBUG
13178
    } else {
13179
        janet_fiber_refresh_memory(fiber);
13180
#endif
13181
0
    }
13182
13183
    /* Nil unset stack arguments (Needed for gc correctness) */
13184
0
    for (i = fiber->stacktop; i < nextstacktop; ++i) {
13185
0
        fiber->data[i] = janet_wrap_nil();
13186
0
    }
13187
13188
    /* Set up the next frame */
13189
0
    fiber->frame = nextframe;
13190
0
    fiber->stacktop = fiber->stackstart = nextstacktop;
13191
0
    newframe = janet_fiber_frame(fiber);
13192
0
    newframe->prevframe = oldframe;
13193
0
    newframe->pc = func->def->bytecode;
13194
0
    newframe->func = func;
13195
0
    newframe->env = NULL;
13196
0
    newframe->flags = 0;
13197
13198
    /* Check varargs */
13199
0
    if (func->def->flags & JANET_FUNCDEF_FLAG_VARARG) {
13200
0
        int32_t tuplehead = fiber->frame + func->def->arity;
13201
0
        int st = func->def->flags & JANET_FUNCDEF_FLAG_STRUCTARG;
13202
0
        if (tuplehead >= oldtop) {
13203
0
            fiber->data[tuplehead] = st
13204
0
                                     ? make_struct_n(NULL, 0)
13205
0
                                     : janet_wrap_tuple(janet_tuple_n(NULL, 0));
13206
0
        } else {
13207
0
            fiber->data[tuplehead] = st
13208
0
                                     ? make_struct_n(
13209
0
                                         fiber->data + tuplehead,
13210
0
                                         oldtop - tuplehead)
13211
0
                                     : janet_wrap_tuple(janet_tuple_n(
13212
0
                                                 fiber->data + tuplehead,
13213
0
                                                 oldtop - tuplehead));
13214
0
        }
13215
0
    }
13216
13217
    /* Good return */
13218
0
    return 0;
13219
0
}
13220
13221
/* If a frame has a closure environment, detach it from
13222
 * the stack and have it keep its own values */
13223
0
static void janet_env_detach(JanetFuncEnv *env) {
13224
    /* Check for closure environment */
13225
0
    if (env) {
13226
0
        janet_env_valid(env);
13227
0
        int32_t len = env->length;
13228
0
        size_t s = sizeof(Janet) * (size_t) len;
13229
0
        Janet *vmem = janet_malloc(s);
13230
0
        janet_vm.next_collection += (uint32_t) s;
13231
0
        if (NULL == vmem) {
13232
0
            JANET_OUT_OF_MEMORY;
13233
0
        }
13234
0
        Janet *values = env->as.fiber->data + env->offset;
13235
0
        safe_memcpy(vmem, values, s);
13236
0
        uint32_t *bitset = janet_stack_frame(values)->func->def->closure_bitset;
13237
0
        if (bitset) {
13238
            /* Clear unneeded references in closure environment */
13239
0
            for (int32_t i = 0; i < len; i += 32) {
13240
0
                uint32_t mask = ~(bitset[i >> 5]);
13241
0
                int32_t maxj = i + 32 > len ? len : i + 32;
13242
0
                for (int32_t j = i; j < maxj; j++) {
13243
0
                    if (mask & 1) vmem[j] = janet_wrap_nil();
13244
0
                    mask >>= 1;
13245
0
                }
13246
0
            }
13247
0
        }
13248
0
        env->offset = 0;
13249
0
        env->as.values = vmem;
13250
0
    }
13251
0
}
13252
13253
/* Validate potentially untrusted func env (unmarshalled envs are difficult to verify) */
13254
0
int janet_env_valid(JanetFuncEnv *env) {
13255
0
    if (env->offset < 0) {
13256
0
        int32_t real_offset = -(env->offset);
13257
0
        JanetFiber *fiber = env->as.fiber;
13258
0
        int32_t i = fiber->frame;
13259
0
        while (i > 0) {
13260
0
            JanetStackFrame *frame = (JanetStackFrame *)(fiber->data + i - JANET_FRAME_SIZE);
13261
0
            if (real_offset == i &&
13262
0
                    frame->env == env &&
13263
0
                    frame->func &&
13264
0
                    frame->func->def->slotcount == env->length) {
13265
0
                env->offset = real_offset;
13266
0
                return 1;
13267
0
            }
13268
0
            i = frame->prevframe;
13269
0
        }
13270
        /* Invalid, set to empty off-stack variant. */
13271
0
        env->offset = 0;
13272
0
        env->length = 0;
13273
0
        env->as.values = NULL;
13274
0
        return 0;
13275
0
    } else {
13276
0
        return 1;
13277
0
    }
13278
0
}
13279
13280
/* Detach a fiber from the env if the target fiber has stopped mutating */
13281
0
void janet_env_maybe_detach(JanetFuncEnv *env) {
13282
    /* Check for detachable closure envs */
13283
0
    janet_env_valid(env);
13284
0
    if (env->offset > 0) {
13285
0
        JanetFiberStatus s = janet_fiber_status(env->as.fiber);
13286
0
        int isFinished = s == JANET_STATUS_DEAD ||
13287
0
                         s == JANET_STATUS_ERROR ||
13288
0
                         s == JANET_STATUS_USER0 ||
13289
0
                         s == JANET_STATUS_USER1 ||
13290
0
                         s == JANET_STATUS_USER2 ||
13291
0
                         s == JANET_STATUS_USER3 ||
13292
0
                         s == JANET_STATUS_USER4;
13293
0
        if (isFinished) {
13294
0
            janet_env_detach(env);
13295
0
        }
13296
0
    }
13297
0
}
13298
13299
/* Create a tail frame for a function */
13300
0
int janet_fiber_funcframe_tail(JanetFiber *fiber, JanetFunction *func) {
13301
0
    int32_t i;
13302
0
    int32_t nextframetop = fiber->frame + func->def->slotcount;
13303
0
    int32_t nextstacktop = nextframetop + JANET_FRAME_SIZE;
13304
0
    int32_t next_arity = fiber->stacktop - fiber->stackstart;
13305
0
    int32_t stacksize;
13306
13307
    /* Check strict arity before messing with state */
13308
0
    if (next_arity < func->def->min_arity) return 1;
13309
0
    if (next_arity > func->def->max_arity) return 1;
13310
13311
0
    if (fiber->capacity < nextstacktop) {
13312
0
        janet_fiber_setcapacity(fiber, 2 * nextstacktop);
13313
#ifdef JANET_DEBUG
13314
    } else {
13315
        janet_fiber_refresh_memory(fiber);
13316
#endif
13317
0
    }
13318
13319
0
    Janet *stack = fiber->data + fiber->frame;
13320
0
    Janet *args = fiber->data + fiber->stackstart;
13321
13322
    /* Detach old function */
13323
0
    if (NULL != janet_fiber_frame(fiber)->func)
13324
0
        janet_env_detach(janet_fiber_frame(fiber)->env);
13325
0
    janet_fiber_frame(fiber)->env = NULL;
13326
13327
    /* Check varargs */
13328
0
    if (func->def->flags & JANET_FUNCDEF_FLAG_VARARG) {
13329
0
        int32_t tuplehead = fiber->stackstart + func->def->arity;
13330
0
        int st = func->def->flags & JANET_FUNCDEF_FLAG_STRUCTARG;
13331
0
        if (tuplehead >= fiber->stacktop) {
13332
0
            if (tuplehead >= fiber->capacity) janet_fiber_setcapacity(fiber, 2 * (tuplehead + 1));
13333
0
            for (i = fiber->stacktop; i < tuplehead; ++i) fiber->data[i] = janet_wrap_nil();
13334
0
            fiber->data[tuplehead] = st
13335
0
                                     ? make_struct_n(NULL, 0)
13336
0
                                     : janet_wrap_tuple(janet_tuple_n(NULL, 0));
13337
0
        } else {
13338
0
            fiber->data[tuplehead] = st
13339
0
                                     ? make_struct_n(
13340
0
                                         fiber->data + tuplehead,
13341
0
                                         fiber->stacktop - tuplehead)
13342
0
                                     : janet_wrap_tuple(janet_tuple_n(
13343
0
                                                 fiber->data + tuplehead,
13344
0
                                                 fiber->stacktop - tuplehead));
13345
0
        }
13346
0
        stacksize = tuplehead - fiber->stackstart + 1;
13347
0
    } else {
13348
0
        stacksize = fiber->stacktop - fiber->stackstart;
13349
0
    }
13350
13351
0
    if (stacksize) memmove(stack, args, stacksize * sizeof(Janet));
13352
13353
    /* Nil unset locals (Needed for functional correctness) */
13354
0
    for (i = fiber->frame + stacksize; i < nextframetop; ++i)
13355
0
        fiber->data[i] = janet_wrap_nil();
13356
13357
    /* Set stack stuff */
13358
0
    fiber->stacktop = fiber->stackstart = nextstacktop;
13359
13360
    /* Set frame stuff */
13361
0
    janet_fiber_frame(fiber)->func = func;
13362
0
    janet_fiber_frame(fiber)->pc = func->def->bytecode;
13363
0
    janet_fiber_frame(fiber)->flags |= JANET_STACKFRAME_TAILCALL;
13364
13365
    /* Good return */
13366
0
    return 0;
13367
0
}
13368
13369
/* Push a stack frame to a fiber for a c function */
13370
0
void janet_fiber_cframe(JanetFiber *fiber, JanetCFunction cfun) {
13371
0
    JanetStackFrame *newframe;
13372
13373
0
    int32_t oldframe = fiber->frame;
13374
0
    int32_t nextframe = fiber->stackstart;
13375
0
    int32_t nextstacktop = fiber->stacktop + JANET_FRAME_SIZE;
13376
13377
0
    if (fiber->capacity < nextstacktop) {
13378
0
        janet_fiber_setcapacity(fiber, 2 * nextstacktop);
13379
#ifdef JANET_DEBUG
13380
    } else {
13381
        janet_fiber_refresh_memory(fiber);
13382
#endif
13383
0
    }
13384
13385
    /* Set the next frame */
13386
0
    fiber->frame = nextframe;
13387
0
    fiber->stacktop = fiber->stackstart = nextstacktop;
13388
0
    newframe = janet_fiber_frame(fiber);
13389
13390
    /* Set up the new frame */
13391
0
    newframe->prevframe = oldframe;
13392
0
    newframe->pc = (uint32_t *) cfun;
13393
0
    newframe->func = NULL;
13394
0
    newframe->env = NULL;
13395
0
    newframe->flags = 0;
13396
0
}
13397
13398
/* Pop a stack frame from the fiber. */
13399
0
void janet_fiber_popframe(JanetFiber *fiber) {
13400
0
    JanetStackFrame *frame = janet_fiber_frame(fiber);
13401
0
    if (fiber->frame == 0) return;
13402
13403
    /* Clean up the frame (detach environments) */
13404
0
    if (NULL != frame->func)
13405
0
        janet_env_detach(frame->env);
13406
13407
    /* Shrink stack */
13408
0
    fiber->stacktop = fiber->stackstart = fiber->frame;
13409
0
    fiber->frame = frame->prevframe;
13410
0
}
13411
13412
0
JanetFiberStatus janet_fiber_status(JanetFiber *f) {
13413
0
    return ((f)->flags & JANET_FIBER_STATUS_MASK) >> JANET_FIBER_STATUS_OFFSET;
13414
0
}
13415
13416
0
JanetFiber *janet_current_fiber(void) {
13417
0
    return janet_vm.fiber;
13418
0
}
13419
13420
0
JanetFiber *janet_root_fiber(void) {
13421
0
    return janet_vm.root_fiber;
13422
0
}
13423
13424
/* CFuns */
13425
13426
JANET_CORE_FN(cfun_fiber_getenv,
13427
              "(fiber/getenv fiber)",
13428
              "Gets the environment for a fiber. Returns nil if no such table is "
13429
0
              "set yet.") {
13430
0
    janet_fixarity(argc, 1);
13431
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
13432
0
    return fiber->env ?
13433
0
           janet_wrap_table(fiber->env) :
13434
0
           janet_wrap_nil();
13435
0
}
13436
13437
JANET_CORE_FN(cfun_fiber_setenv,
13438
              "(fiber/setenv fiber table)",
13439
              "Sets the environment table for a fiber. Set to nil to remove the current "
13440
0
              "environment.") {
13441
0
    janet_fixarity(argc, 2);
13442
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
13443
0
    if (janet_checktype(argv[1], JANET_NIL)) {
13444
0
        fiber->env = NULL;
13445
0
    } else {
13446
0
        fiber->env = janet_gettable(argv, 1);
13447
0
    }
13448
0
    return argv[0];
13449
0
}
13450
13451
JANET_CORE_FN(cfun_fiber_new,
13452
              "(fiber/new func &opt sigmask env)",
13453
              "Create a new fiber with function body func. Can optionally "
13454
              "take a set of signals `sigmask` to capture from child fibers, "
13455
              "and an environment table `env`. The mask is specified as a keyword where each character "
13456
              "is used to indicate a signal to block. If the ev module is enabled, and "
13457
              "this fiber is used as an argument to `ev/go`, these \"blocked\" signals "
13458
              "will result in messages being sent to the supervisor channel. "
13459
              "The default sigmask is :y. "
13460
              "For example,\n\n"
13461
              "    (fiber/new myfun :e123)\n\n"
13462
              "blocks error signals and user signals 1, 2 and 3. The signals are "
13463
              "as follows:\n\n"
13464
              "* :a - block all signals\n"
13465
              "* :d - block debug signals\n"
13466
              "* :e - block error signals\n"
13467
              "* :t - block termination signals: error + user[0-4]\n"
13468
              "* :u - block user signals\n"
13469
              "* :y - block yield signals\n"
13470
              "* :w - block await signals (user9)\n"
13471
              "* :r - block interrupt signals (user8)\n"
13472
              "* :0-9 - block a specific user signal\n\n"
13473
              "The sigmask argument also can take environment flags. If any mutually "
13474
              "exclusive flags are present, the last flag takes precedence.\n\n"
13475
              "* :i - inherit the environment from the current fiber\n"
13476
0
              "* :p - the environment table's prototype is the current environment table") {
13477
0
    janet_arity(argc, 1, 3);
13478
0
    JanetFunction *func = janet_getfunction(argv, 0);
13479
0
    JanetFiber *fiber;
13480
0
    if (func->def->min_arity > 1) {
13481
0
        janet_panicf("fiber function must accept 0 or 1 arguments");
13482
0
    }
13483
0
    fiber = janet_fiber(func, 64, func->def->min_arity, NULL);
13484
0
    janet_assert(fiber != NULL, "bad fiber arity check");
13485
0
    if (argc == 3 && !janet_checktype(argv[2], JANET_NIL)) {
13486
0
        fiber->env = janet_gettable(argv, 2);
13487
0
    }
13488
0
    if (argc >= 2) {
13489
0
        int32_t i;
13490
0
        JanetByteView view = janet_getbytes(argv, 1);
13491
0
        fiber->flags = JANET_FIBER_RESUME_NO_USEVAL | JANET_FIBER_RESUME_NO_SKIP;
13492
0
        janet_fiber_set_status(fiber, JANET_STATUS_NEW);
13493
0
        for (i = 0; i < view.len; i++) {
13494
0
            if (view.bytes[i] >= '0' && view.bytes[i] <= '9') {
13495
0
                fiber->flags |= JANET_FIBER_MASK_USERN(view.bytes[i] - '0');
13496
0
            } else {
13497
0
                switch (view.bytes[i]) {
13498
0
                    default:
13499
0
                        janet_panicf("invalid flag %c, expected a, t, d, e, u, y, w, r, i, or p", view.bytes[i]);
13500
0
                        break;
13501
0
                    case 'a':
13502
0
                        fiber->flags |=
13503
0
                            JANET_FIBER_MASK_DEBUG |
13504
0
                            JANET_FIBER_MASK_ERROR |
13505
0
                            JANET_FIBER_MASK_USER |
13506
0
                            JANET_FIBER_MASK_YIELD;
13507
0
                        break;
13508
0
                    case 't':
13509
0
                        fiber->flags |=
13510
0
                            JANET_FIBER_MASK_ERROR |
13511
0
                            JANET_FIBER_MASK_USER0 |
13512
0
                            JANET_FIBER_MASK_USER1 |
13513
0
                            JANET_FIBER_MASK_USER2 |
13514
0
                            JANET_FIBER_MASK_USER3 |
13515
0
                            JANET_FIBER_MASK_USER4;
13516
0
                        break;
13517
0
                    case 'd':
13518
0
                        fiber->flags |= JANET_FIBER_MASK_DEBUG;
13519
0
                        break;
13520
0
                    case 'e':
13521
0
                        fiber->flags |= JANET_FIBER_MASK_ERROR;
13522
0
                        break;
13523
0
                    case 'u':
13524
0
                        fiber->flags |= JANET_FIBER_MASK_USER;
13525
0
                        break;
13526
0
                    case 'y':
13527
0
                        fiber->flags |= JANET_FIBER_MASK_YIELD;
13528
0
                        break;
13529
0
                    case 'w':
13530
0
                        fiber->flags |= JANET_FIBER_MASK_USER9;
13531
0
                        break;
13532
0
                    case 'r':
13533
0
                        fiber->flags |= JANET_FIBER_MASK_USER8;
13534
0
                        break;
13535
0
                    case 'i':
13536
0
                        if (!janet_vm.fiber->env) {
13537
0
                            janet_vm.fiber->env = janet_table(0);
13538
0
                        }
13539
0
                        fiber->env = janet_vm.fiber->env;
13540
0
                        break;
13541
0
                    case 'p':
13542
0
                        if (!janet_vm.fiber->env) {
13543
0
                            janet_vm.fiber->env = janet_table(0);
13544
0
                        }
13545
0
                        fiber->env = janet_table(0);
13546
0
                        fiber->env->proto = janet_vm.fiber->env;
13547
0
                        break;
13548
0
                }
13549
0
            }
13550
0
        }
13551
0
    }
13552
0
    return janet_wrap_fiber(fiber);
13553
0
}
13554
13555
JANET_CORE_FN(cfun_fiber_status,
13556
              "(fiber/status fib)",
13557
              "Get the status of a fiber. The status will be one of:\n\n"
13558
              "* :dead - the fiber has finished\n"
13559
              "* :error - the fiber has errored out\n"
13560
              "* :debug - the fiber is suspended in debug mode\n"
13561
              "* :pending - the fiber has been yielded\n"
13562
              "* :user(0-7) - the fiber is suspended by a user signal\n"
13563
              "* :interrupted - the fiber was interrupted\n"
13564
              "* :suspended - the fiber is waiting to be resumed by the scheduler\n"
13565
              "* :alive - the fiber is currently running and cannot be resumed\n"
13566
0
              "* :new - the fiber has just been created and not yet run") {
13567
0
    janet_fixarity(argc, 1);
13568
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
13569
0
    uint32_t s = janet_fiber_status(fiber);
13570
0
    return janet_ckeywordv(janet_status_names[s]);
13571
0
}
13572
13573
JANET_CORE_FN(cfun_fiber_current,
13574
              "(fiber/current)",
13575
0
              "Returns the currently running fiber.") {
13576
0
    (void) argv;
13577
0
    janet_fixarity(argc, 0);
13578
0
    return janet_wrap_fiber(janet_vm.fiber);
13579
0
}
13580
13581
JANET_CORE_FN(cfun_fiber_root,
13582
              "(fiber/root)",
13583
              "Returns the current root fiber. The root fiber is the oldest ancestor "
13584
0
              "that does not have a parent.") {
13585
0
    (void) argv;
13586
0
    janet_fixarity(argc, 0);
13587
0
    return janet_wrap_fiber(janet_vm.root_fiber);
13588
0
}
13589
13590
JANET_CORE_FN(cfun_fiber_maxstack,
13591
              "(fiber/maxstack fib)",
13592
              "Gets the maximum stack size in janet values allowed for a fiber. While memory for "
13593
              "the fiber's stack is not allocated up front, the fiber will not allocated more "
13594
0
              "than this amount and will throw a stack-overflow error if more memory is needed. ") {
13595
0
    janet_fixarity(argc, 1);
13596
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
13597
0
    return janet_wrap_integer(fiber->maxstack);
13598
0
}
13599
13600
JANET_CORE_FN(cfun_fiber_setmaxstack,
13601
              "(fiber/setmaxstack fib maxstack)",
13602
              "Sets the maximum stack size in janet values for a fiber. By default, the "
13603
0
              "maximum stack size is usually 8192.") {
13604
0
    janet_fixarity(argc, 2);
13605
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
13606
0
    int32_t maxs = janet_getinteger(argv, 1);
13607
0
    if (maxs < 0) {
13608
0
        janet_panic("expected positive integer");
13609
0
    }
13610
0
    fiber->maxstack = maxs;
13611
0
    return argv[0];
13612
0
}
13613
13614
0
int janet_fiber_can_resume(JanetFiber *fiber) {
13615
0
    JanetFiberStatus s = janet_fiber_status(fiber);
13616
0
    int isFinished = s == JANET_STATUS_DEAD ||
13617
0
                     s == JANET_STATUS_ERROR ||
13618
0
                     s == JANET_STATUS_USER0 ||
13619
0
                     s == JANET_STATUS_USER1 ||
13620
0
                     s == JANET_STATUS_USER2 ||
13621
0
                     s == JANET_STATUS_USER3 ||
13622
0
                     s == JANET_STATUS_USER4;
13623
0
    return !isFinished;
13624
0
}
13625
13626
JANET_CORE_FN(cfun_fiber_can_resume,
13627
              "(fiber/can-resume? fiber)",
13628
0
              "Check if a fiber is finished and cannot be resumed.") {
13629
0
    janet_fixarity(argc, 1);
13630
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
13631
0
    return janet_wrap_boolean(janet_fiber_can_resume(fiber));
13632
0
}
13633
13634
JANET_CORE_FN(cfun_fiber_last_value,
13635
              "(fiber/last-value)",
13636
0
              "Get the last value returned or signaled from the fiber.") {
13637
0
    janet_fixarity(argc, 1);
13638
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
13639
0
    return fiber->last_value;
13640
0
}
13641
13642
/* Module entry point */
13643
0
void janet_lib_fiber(JanetTable *env) {
13644
0
    JanetRegExt fiber_cfuns[] = {
13645
0
        JANET_CORE_REG("fiber/new", cfun_fiber_new),
13646
0
        JANET_CORE_REG("fiber/status", cfun_fiber_status),
13647
0
        JANET_CORE_REG("fiber/root", cfun_fiber_root),
13648
0
        JANET_CORE_REG("fiber/current", cfun_fiber_current),
13649
0
        JANET_CORE_REG("fiber/maxstack", cfun_fiber_maxstack),
13650
0
        JANET_CORE_REG("fiber/setmaxstack", cfun_fiber_setmaxstack),
13651
0
        JANET_CORE_REG("fiber/getenv", cfun_fiber_getenv),
13652
0
        JANET_CORE_REG("fiber/setenv", cfun_fiber_setenv),
13653
0
        JANET_CORE_REG("fiber/can-resume?", cfun_fiber_can_resume),
13654
0
        JANET_CORE_REG("fiber/last-value", cfun_fiber_last_value),
13655
0
        JANET_REG_END
13656
0
    };
13657
0
    janet_core_cfuns_ext(env, NULL, fiber_cfuns);
13658
0
}
13659
13660
13661
/* src/core/gc.c */
13662
#line 0 "src/core/gc.c"
13663
13664
/*
13665
* Copyright (c) 2023 Calvin Rose
13666
*
13667
* Permission is hereby granted, free of charge, to any person obtaining a copy
13668
* of this software and associated documentation files (the "Software"), to
13669
* deal in the Software without restriction, including without limitation the
13670
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
13671
* sell copies of the Software, and to permit persons to whom the Software is
13672
* furnished to do so, subject to the following conditions:
13673
*
13674
* The above copyright notice and this permission notice shall be included in
13675
* all copies or substantial portions of the Software.
13676
*
13677
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13678
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13679
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
13680
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
13681
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
13682
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
13683
* IN THE SOFTWARE.
13684
*/
13685
13686
#ifndef JANET_AMALG
13687
#include "features.h"
13688
#include <janet.h>
13689
#include "state.h"
13690
#include "symcache.h"
13691
#include "gc.h"
13692
#include "util.h"
13693
#include "fiber.h"
13694
#include "vector.h"
13695
#endif
13696
13697
/* Helpers for marking the various gc types */
13698
static void janet_mark_funcenv(JanetFuncEnv *env);
13699
static void janet_mark_funcdef(JanetFuncDef *def);
13700
static void janet_mark_function(JanetFunction *func);
13701
static void janet_mark_array(JanetArray *array);
13702
static void janet_mark_table(JanetTable *table);
13703
static void janet_mark_struct(const JanetKV *st);
13704
static void janet_mark_tuple(const Janet *tuple);
13705
static void janet_mark_buffer(JanetBuffer *buffer);
13706
static void janet_mark_string(const uint8_t *str);
13707
static void janet_mark_fiber(JanetFiber *fiber);
13708
static void janet_mark_abstract(void *adata);
13709
13710
/* Local state that is only temporary for gc */
13711
static JANET_THREAD_LOCAL uint32_t depth = JANET_RECURSION_GUARD;
13712
static JANET_THREAD_LOCAL size_t orig_rootcount;
13713
13714
/* Hint to the GC that we may need to collect */
13715
1.12M
void janet_gcpressure(size_t s) {
13716
1.12M
    janet_vm.next_collection += s;
13717
1.12M
}
13718
13719
/* Mark a value */
13720
0
void janet_mark(Janet x) {
13721
0
    if (depth) {
13722
0
        depth--;
13723
0
        switch (janet_type(x)) {
13724
0
            default:
13725
0
                break;
13726
0
            case JANET_STRING:
13727
0
            case JANET_KEYWORD:
13728
0
            case JANET_SYMBOL:
13729
0
                janet_mark_string(janet_unwrap_string(x));
13730
0
                break;
13731
0
            case JANET_FUNCTION:
13732
0
                janet_mark_function(janet_unwrap_function(x));
13733
0
                break;
13734
0
            case JANET_ARRAY:
13735
0
                janet_mark_array(janet_unwrap_array(x));
13736
0
                break;
13737
0
            case JANET_TABLE:
13738
0
                janet_mark_table(janet_unwrap_table(x));
13739
0
                break;
13740
0
            case JANET_STRUCT:
13741
0
                janet_mark_struct(janet_unwrap_struct(x));
13742
0
                break;
13743
0
            case JANET_TUPLE:
13744
0
                janet_mark_tuple(janet_unwrap_tuple(x));
13745
0
                break;
13746
0
            case JANET_BUFFER:
13747
0
                janet_mark_buffer(janet_unwrap_buffer(x));
13748
0
                break;
13749
0
            case JANET_FIBER:
13750
0
                janet_mark_fiber(janet_unwrap_fiber(x));
13751
0
                break;
13752
0
            case JANET_ABSTRACT:
13753
0
                janet_mark_abstract(janet_unwrap_abstract(x));
13754
0
                break;
13755
0
        }
13756
0
        depth++;
13757
0
    } else {
13758
0
        janet_gcroot(x);
13759
0
    }
13760
0
}
13761
13762
0
static void janet_mark_string(const uint8_t *str) {
13763
0
    janet_gc_mark(janet_string_head(str));
13764
0
}
13765
13766
0
static void janet_mark_buffer(JanetBuffer *buffer) {
13767
0
    janet_gc_mark(buffer);
13768
0
}
13769
13770
0
static void janet_mark_abstract(void *adata) {
13771
0
#ifdef JANET_EV
13772
    /* Check if abstract type is a threaded abstract type. If it is, marking means
13773
     * updating the threaded_abstract table. */
13774
0
    if ((janet_abstract_head(adata)->gc.flags & JANET_MEM_TYPEBITS) == JANET_MEMORY_THREADED_ABSTRACT) {
13775
0
        janet_table_put(&janet_vm.threaded_abstracts, janet_wrap_abstract(adata), janet_wrap_true());
13776
0
        return;
13777
0
    }
13778
0
#endif
13779
0
    if (janet_gc_reachable(janet_abstract_head(adata)))
13780
0
        return;
13781
0
    janet_gc_mark(janet_abstract_head(adata));
13782
0
    if (janet_abstract_head(adata)->type->gcmark) {
13783
0
        janet_abstract_head(adata)->type->gcmark(adata, janet_abstract_size(adata));
13784
0
    }
13785
0
}
13786
13787
/* Mark a bunch of items in memory */
13788
0
static void janet_mark_many(const Janet *values, int32_t n) {
13789
0
    if (values == NULL)
13790
0
        return;
13791
0
    const Janet *end = values + n;
13792
0
    while (values < end) {
13793
0
        janet_mark(*values);
13794
0
        values += 1;
13795
0
    }
13796
0
}
13797
13798
/* Mark a bunch of key values items in memory */
13799
0
static void janet_mark_kvs(const JanetKV *kvs, int32_t n) {
13800
0
    const JanetKV *end = kvs + n;
13801
0
    while (kvs < end) {
13802
0
        janet_mark(kvs->key);
13803
0
        janet_mark(kvs->value);
13804
0
        kvs++;
13805
0
    }
13806
0
}
13807
13808
0
static void janet_mark_array(JanetArray *array) {
13809
0
    if (janet_gc_reachable(array))
13810
0
        return;
13811
0
    janet_gc_mark(array);
13812
0
    janet_mark_many(array->data, array->count);
13813
0
}
13814
13815
0
static void janet_mark_table(JanetTable *table) {
13816
0
recur: /* Manual tail recursion */
13817
0
    if (janet_gc_reachable(table))
13818
0
        return;
13819
0
    janet_gc_mark(table);
13820
0
    janet_mark_kvs(table->data, table->capacity);
13821
0
    if (table->proto) {
13822
0
        table = table->proto;
13823
0
        goto recur;
13824
0
    }
13825
0
}
13826
13827
0
static void janet_mark_struct(const JanetKV *st) {
13828
0
recur:
13829
0
    if (janet_gc_reachable(janet_struct_head(st)))
13830
0
        return;
13831
0
    janet_gc_mark(janet_struct_head(st));
13832
0
    janet_mark_kvs(st, janet_struct_capacity(st));
13833
0
    st = janet_struct_proto(st);
13834
0
    if (st) goto recur;
13835
0
}
13836
13837
0
static void janet_mark_tuple(const Janet *tuple) {
13838
0
    if (janet_gc_reachable(janet_tuple_head(tuple)))
13839
0
        return;
13840
0
    janet_gc_mark(janet_tuple_head(tuple));
13841
0
    janet_mark_many(tuple, janet_tuple_length(tuple));
13842
0
}
13843
13844
/* Helper to mark function environments */
13845
0
static void janet_mark_funcenv(JanetFuncEnv *env) {
13846
0
    if (janet_gc_reachable(env))
13847
0
        return;
13848
0
    janet_gc_mark(env);
13849
    /* If closure env references a dead fiber, we can just copy out the stack frame we need so
13850
     * we don't need to keep around the whole dead fiber. */
13851
0
    janet_env_maybe_detach(env);
13852
0
    if (env->offset > 0) {
13853
        /* On stack */
13854
0
        janet_mark_fiber(env->as.fiber);
13855
0
    } else {
13856
        /* Not on stack */
13857
0
        janet_mark_many(env->as.values, env->length);
13858
0
    }
13859
0
}
13860
13861
/* GC helper to mark a FuncDef */
13862
0
static void janet_mark_funcdef(JanetFuncDef *def) {
13863
0
    int32_t i;
13864
0
    if (janet_gc_reachable(def))
13865
0
        return;
13866
0
    janet_gc_mark(def);
13867
0
    janet_mark_many(def->constants, def->constants_length);
13868
0
    for (i = 0; i < def->defs_length; ++i) {
13869
0
        janet_mark_funcdef(def->defs[i]);
13870
0
    }
13871
0
    if (def->source)
13872
0
        janet_mark_string(def->source);
13873
0
    if (def->name)
13874
0
        janet_mark_string(def->name);
13875
0
    if (def->symbolmap) {
13876
0
        for (int i = 0; i < def->symbolmap_length; i++) {
13877
0
            janet_mark_string(def->symbolmap[i].symbol);
13878
0
        }
13879
0
    }
13880
13881
0
}
13882
13883
0
static void janet_mark_function(JanetFunction *func) {
13884
0
    int32_t i;
13885
0
    int32_t numenvs;
13886
0
    if (janet_gc_reachable(func))
13887
0
        return;
13888
0
    janet_gc_mark(func);
13889
0
    if (NULL != func->def) {
13890
        /* this should always be true, except if function is only partially constructed */
13891
0
        numenvs = func->def->environments_length;
13892
0
        for (i = 0; i < numenvs; ++i) {
13893
0
            janet_mark_funcenv(func->envs[i]);
13894
0
        }
13895
0
        janet_mark_funcdef(func->def);
13896
0
    }
13897
0
}
13898
13899
0
static void janet_mark_fiber(JanetFiber *fiber) {
13900
0
    int32_t i, j;
13901
0
    JanetStackFrame *frame;
13902
0
recur:
13903
0
    if (janet_gc_reachable(fiber))
13904
0
        return;
13905
0
    janet_gc_mark(fiber);
13906
13907
0
    janet_mark(fiber->last_value);
13908
13909
    /* Mark values on the argument stack */
13910
0
    janet_mark_many(fiber->data + fiber->stackstart,
13911
0
                    fiber->stacktop - fiber->stackstart);
13912
13913
0
    i = fiber->frame;
13914
0
    j = fiber->stackstart - JANET_FRAME_SIZE;
13915
0
    while (i > 0) {
13916
0
        frame = (JanetStackFrame *)(fiber->data + i - JANET_FRAME_SIZE);
13917
0
        if (NULL != frame->func)
13918
0
            janet_mark_function(frame->func);
13919
0
        if (NULL != frame->env)
13920
0
            janet_mark_funcenv(frame->env);
13921
        /* Mark all values in the stack frame */
13922
0
        janet_mark_many(fiber->data + i, j - i);
13923
0
        j = i - JANET_FRAME_SIZE;
13924
0
        i = frame->prevframe;
13925
0
    }
13926
13927
0
    if (fiber->env)
13928
0
        janet_mark_table(fiber->env);
13929
13930
0
#ifdef JANET_EV
13931
0
    if (fiber->supervisor_channel) {
13932
0
        janet_mark_abstract(fiber->supervisor_channel);
13933
0
    }
13934
0
#endif
13935
13936
    /* Explicit tail recursion */
13937
0
    if (fiber->child) {
13938
0
        fiber = fiber->child;
13939
0
        goto recur;
13940
0
    }
13941
0
}
13942
13943
/* Deinitialize a block of memory */
13944
6.27M
static void janet_deinit_block(JanetGCObject *mem) {
13945
6.27M
    switch (mem->flags & JANET_MEM_TYPEBITS) {
13946
5.06M
        default:
13947
5.06M
        case JANET_MEMORY_FUNCTION:
13948
5.06M
            break; /* Do nothing for non gc types */
13949
27.5k
        case JANET_MEMORY_SYMBOL:
13950
27.5k
            janet_symbol_deinit(((JanetStringHead *) mem)->data);
13951
27.5k
            break;
13952
1.06k
        case JANET_MEMORY_ARRAY:
13953
1.06k
            janet_free(((JanetArray *) mem)->data);
13954
1.06k
            break;
13955
56.2k
        case JANET_MEMORY_TABLE:
13956
56.2k
            janet_free(((JanetTable *) mem)->data);
13957
56.2k
            break;
13958
0
        case JANET_MEMORY_FIBER:
13959
0
            janet_free(((JanetFiber *)mem)->data);
13960
0
            break;
13961
1.12M
        case JANET_MEMORY_BUFFER:
13962
1.12M
            janet_buffer_deinit((JanetBuffer *) mem);
13963
1.12M
            break;
13964
0
        case JANET_MEMORY_ABSTRACT: {
13965
0
            JanetAbstractHead *head = (JanetAbstractHead *)mem;
13966
0
            if (head->type->gc) {
13967
0
                janet_assert(!head->type->gc(head->data, head->size), "finalizer failed");
13968
0
            }
13969
0
        }
13970
0
        break;
13971
0
        case JANET_MEMORY_FUNCENV: {
13972
0
            JanetFuncEnv *env = (JanetFuncEnv *)mem;
13973
0
            if (0 == env->offset)
13974
0
                janet_free(env->as.values);
13975
0
        }
13976
0
        break;
13977
0
        case JANET_MEMORY_FUNCDEF: {
13978
0
            JanetFuncDef *def = (JanetFuncDef *)mem;
13979
            /* TODO - get this all with one alloc and one free */
13980
0
            janet_free(def->defs);
13981
0
            janet_free(def->environments);
13982
0
            janet_free(def->constants);
13983
0
            janet_free(def->bytecode);
13984
0
            janet_free(def->sourcemap);
13985
0
            janet_free(def->closure_bitset);
13986
0
            janet_free(def->symbolmap);
13987
0
        }
13988
0
        break;
13989
6.27M
    }
13990
6.27M
}
13991
13992
/* Iterate over all allocated memory, and free memory that is not
13993
 * marked as reachable. Flip the gc color flag for next sweep. */
13994
0
void janet_sweep() {
13995
0
    JanetGCObject *previous = NULL;
13996
0
    JanetGCObject *current = janet_vm.blocks;
13997
0
    JanetGCObject *next;
13998
0
    while (NULL != current) {
13999
0
        next = current->data.next;
14000
0
        if (current->flags & (JANET_MEM_REACHABLE | JANET_MEM_DISABLED)) {
14001
0
            previous = current;
14002
0
            current->flags &= ~JANET_MEM_REACHABLE;
14003
0
        } else {
14004
0
            janet_vm.block_count--;
14005
0
            janet_deinit_block(current);
14006
0
            if (NULL != previous) {
14007
0
                previous->data.next = next;
14008
0
            } else {
14009
0
                janet_vm.blocks = next;
14010
0
            }
14011
0
            janet_free(current);
14012
0
        }
14013
0
        current = next;
14014
0
    }
14015
0
#ifdef JANET_EV
14016
    /* Sweep threaded abstract types for references to decrement */
14017
0
    JanetKV *items = janet_vm.threaded_abstracts.data;
14018
0
    for (int32_t i = 0; i < janet_vm.threaded_abstracts.capacity; i++) {
14019
0
        if (janet_checktype(items[i].key, JANET_ABSTRACT)) {
14020
14021
            /* If item was not visited during the mark phase, then this
14022
             * abstract type isn't present in the heap and needs its refcount
14023
             * decremented, and shouuld be removed from table. If the refcount is
14024
             * then 0, the item will be collected. This ensures that only one interpreter
14025
             * will clean up the threaded abstract. */
14026
14027
            /* If not visited... */
14028
0
            if (!janet_truthy(items[i].value)) {
14029
0
                void *abst = janet_unwrap_abstract(items[i].key);
14030
0
                if (0 == janet_abstract_decref(abst)) {
14031
                    /* Run finalizer */
14032
0
                    JanetAbstractHead *head = janet_abstract_head(abst);
14033
0
                    if (head->type->gc) {
14034
0
                        janet_assert(!head->type->gc(head->data, head->size), "finalizer failed");
14035
0
                    }
14036
                    /* Mark as tombstone in place */
14037
0
                    items[i].key = janet_wrap_nil();
14038
0
                    items[i].value = janet_wrap_false();
14039
0
                    janet_vm.threaded_abstracts.deleted++;
14040
0
                    janet_vm.threaded_abstracts.count--;
14041
                    /* Free memory */
14042
0
                    janet_free(janet_abstract_head(abst));
14043
0
                }
14044
0
            }
14045
14046
            /* Reset for next sweep */
14047
0
            items[i].value = janet_wrap_false();
14048
0
        }
14049
0
    }
14050
0
#endif
14051
0
}
14052
14053
/* Allocate some memory that is tracked for garbage collection */
14054
6.27M
void *janet_gcalloc(enum JanetMemoryType type, size_t size) {
14055
6.27M
    JanetGCObject *mem;
14056
14057
    /* Make sure everything is inited */
14058
6.27M
    janet_assert(NULL != janet_vm.cache, "please initialize janet before use");
14059
6.27M
    mem = janet_malloc(size);
14060
14061
    /* Check for bad malloc */
14062
6.27M
    if (NULL == mem) {
14063
0
        JANET_OUT_OF_MEMORY;
14064
0
    }
14065
14066
    /* Configure block */
14067
6.27M
    mem->flags = type;
14068
14069
    /* Prepend block to heap list */
14070
6.27M
    janet_vm.next_collection += size;
14071
6.27M
    mem->data.next = janet_vm.blocks;
14072
6.27M
    janet_vm.blocks = mem;
14073
6.27M
    janet_vm.block_count++;
14074
14075
6.27M
    return (void *)mem;
14076
6.27M
}
14077
14078
0
static void free_one_scratch(JanetScratch *s) {
14079
0
    if (NULL != s->finalize) {
14080
0
        s->finalize((char *) s->mem);
14081
0
    }
14082
0
    janet_free(s);
14083
0
}
14084
14085
/* Free all allocated scratch memory */
14086
5.24k
static void janet_free_all_scratch(void) {
14087
5.24k
    for (size_t i = 0; i < janet_vm.scratch_len; i++) {
14088
0
        free_one_scratch(janet_vm.scratch_mem[i]);
14089
0
    }
14090
5.24k
    janet_vm.scratch_len = 0;
14091
5.24k
}
14092
14093
0
static JanetScratch *janet_mem2scratch(void *mem) {
14094
0
    JanetScratch *s = (JanetScratch *)mem;
14095
0
    return s - 1;
14096
0
}
14097
14098
/* Run garbage collection */
14099
0
void janet_collect(void) {
14100
0
    uint32_t i;
14101
0
    if (janet_vm.gc_suspend) return;
14102
0
    depth = JANET_RECURSION_GUARD;
14103
    /* Try and prevent many major collections back to back.
14104
     * A full collection will take O(janet_vm.block_count) time.
14105
     * If we have a large heap, make sure our interval is not too
14106
     * small so we won't make many collections over it. This is just a
14107
     * heuristic for automatically changing the gc interval */
14108
0
    if (janet_vm.block_count * 8 > janet_vm.gc_interval) {
14109
0
        janet_vm.gc_interval = janet_vm.block_count * sizeof(JanetGCObject);
14110
0
    }
14111
0
    orig_rootcount = janet_vm.root_count;
14112
0
#ifdef JANET_EV
14113
0
    janet_ev_mark();
14114
0
#endif
14115
0
    janet_mark_fiber(janet_vm.root_fiber);
14116
0
    for (i = 0; i < orig_rootcount; i++)
14117
0
        janet_mark(janet_vm.roots[i]);
14118
0
    while (orig_rootcount < janet_vm.root_count) {
14119
0
        Janet x = janet_vm.roots[--janet_vm.root_count];
14120
0
        janet_mark(x);
14121
0
    }
14122
0
    janet_sweep();
14123
0
    janet_vm.next_collection = 0;
14124
0
    janet_free_all_scratch();
14125
0
}
14126
14127
/* Add a root value to the GC. This prevents the GC from removing a value
14128
 * and all of its children. If gcroot is called on a value n times, unroot
14129
 * must also be called n times to remove it as a gc root. */
14130
5.24k
void janet_gcroot(Janet root) {
14131
5.24k
    size_t newcount = janet_vm.root_count + 1;
14132
5.24k
    if (newcount > janet_vm.root_capacity) {
14133
5.24k
        size_t newcap = 2 * newcount;
14134
5.24k
        janet_vm.roots = janet_realloc(janet_vm.roots, sizeof(Janet) * newcap);
14135
5.24k
        if (NULL == janet_vm.roots) {
14136
0
            JANET_OUT_OF_MEMORY;
14137
0
        }
14138
5.24k
        janet_vm.root_capacity = newcap;
14139
5.24k
    }
14140
5.24k
    janet_vm.roots[janet_vm.root_count] = root;
14141
5.24k
    janet_vm.root_count = newcount;
14142
5.24k
}
14143
14144
/* Identity equality for GC purposes */
14145
0
static int janet_gc_idequals(Janet lhs, Janet rhs) {
14146
0
    if (janet_type(lhs) != janet_type(rhs))
14147
0
        return 0;
14148
0
    switch (janet_type(lhs)) {
14149
0
        case JANET_BOOLEAN:
14150
0
        case JANET_NIL:
14151
0
        case JANET_NUMBER:
14152
            /* These values don't really matter to the gc so returning 1 all the time is fine. */
14153
0
            return 1;
14154
0
        default:
14155
0
            return janet_unwrap_pointer(lhs) == janet_unwrap_pointer(rhs);
14156
0
    }
14157
0
}
14158
14159
/* Remove a root value from the GC. This allows the gc to potentially reclaim
14160
 * a value and all its children. */
14161
0
int janet_gcunroot(Janet root) {
14162
0
    Janet *vtop = janet_vm.roots + janet_vm.root_count;
14163
    /* Search from top to bottom as access is most likely LIFO */
14164
0
    for (Janet *v = janet_vm.roots; v < vtop; v++) {
14165
0
        if (janet_gc_idequals(root, *v)) {
14166
0
            *v = janet_vm.roots[--janet_vm.root_count];
14167
0
            return 1;
14168
0
        }
14169
0
    }
14170
0
    return 0;
14171
0
}
14172
14173
/* Remove a root value from the GC. This sets the effective reference count to 0. */
14174
0
int janet_gcunrootall(Janet root) {
14175
0
    Janet *vtop = janet_vm.roots + janet_vm.root_count;
14176
0
    int ret = 0;
14177
    /* Search from top to bottom as access is most likely LIFO */
14178
0
    for (Janet *v = janet_vm.roots; v < vtop; v++) {
14179
0
        if (janet_gc_idequals(root, *v)) {
14180
0
            *v = janet_vm.roots[--janet_vm.root_count];
14181
0
            vtop--;
14182
0
            ret = 1;
14183
0
        }
14184
0
    }
14185
0
    return ret;
14186
0
}
14187
14188
/* Free all allocated memory */
14189
5.24k
void janet_clear_memory(void) {
14190
5.24k
#ifdef JANET_EV
14191
5.24k
    JanetKV *items = janet_vm.threaded_abstracts.data;
14192
10.4k
    for (int32_t i = 0; i < janet_vm.threaded_abstracts.capacity; i++) {
14193
5.24k
        if (janet_checktype(items[i].key, JANET_ABSTRACT)) {
14194
0
            void *abst = janet_unwrap_abstract(items[i].key);
14195
0
            if (0 == janet_abstract_decref(abst)) {
14196
0
                JanetAbstractHead *head = janet_abstract_head(abst);
14197
0
                if (head->type->gc) {
14198
0
                    janet_assert(!head->type->gc(head->data, head->size), "finalizer failed");
14199
0
                }
14200
0
                janet_free(janet_abstract_head(abst));
14201
0
            }
14202
0
        }
14203
5.24k
    }
14204
5.24k
#endif
14205
5.24k
    JanetGCObject *current = janet_vm.blocks;
14206
6.28M
    while (NULL != current) {
14207
6.27M
        janet_deinit_block(current);
14208
6.27M
        JanetGCObject *next = current->data.next;
14209
6.27M
        janet_free(current);
14210
6.27M
        current = next;
14211
6.27M
    }
14212
5.24k
    janet_vm.blocks = NULL;
14213
5.24k
    janet_free_all_scratch();
14214
5.24k
    janet_free(janet_vm.scratch_mem);
14215
5.24k
}
14216
14217
/* Primitives for suspending GC. */
14218
0
int janet_gclock(void) {
14219
0
    return janet_vm.gc_suspend++;
14220
0
}
14221
0
void janet_gcunlock(int handle) {
14222
0
    janet_vm.gc_suspend = handle;
14223
0
}
14224
14225
/* Scratch memory API */
14226
14227
0
void *janet_smalloc(size_t size) {
14228
0
    JanetScratch *s = janet_malloc(sizeof(JanetScratch) + size);
14229
0
    if (NULL == s) {
14230
0
        JANET_OUT_OF_MEMORY;
14231
0
    }
14232
0
    s->finalize = NULL;
14233
0
    if (janet_vm.scratch_len == janet_vm.scratch_cap) {
14234
0
        size_t newcap = 2 * janet_vm.scratch_cap + 2;
14235
0
        JanetScratch **newmem = (JanetScratch **) janet_realloc(janet_vm.scratch_mem, newcap * sizeof(JanetScratch));
14236
0
        if (NULL == newmem) {
14237
0
            JANET_OUT_OF_MEMORY;
14238
0
        }
14239
0
        janet_vm.scratch_cap = newcap;
14240
0
        janet_vm.scratch_mem = newmem;
14241
0
    }
14242
0
    janet_vm.scratch_mem[janet_vm.scratch_len++] = s;
14243
0
    return (char *)(s->mem);
14244
0
}
14245
14246
0
void *janet_scalloc(size_t nmemb, size_t size) {
14247
0
    if (nmemb && size > SIZE_MAX / nmemb) {
14248
0
        JANET_OUT_OF_MEMORY;
14249
0
    }
14250
0
    size_t n = nmemb * size;
14251
0
    void *p = janet_smalloc(n);
14252
0
    memset(p, 0, n);
14253
0
    return p;
14254
0
}
14255
14256
0
void *janet_srealloc(void *mem, size_t size) {
14257
0
    if (NULL == mem) return janet_smalloc(size);
14258
0
    JanetScratch *s = janet_mem2scratch(mem);
14259
0
    if (janet_vm.scratch_len) {
14260
0
        for (size_t i = janet_vm.scratch_len - 1; ; i--) {
14261
0
            if (janet_vm.scratch_mem[i] == s) {
14262
0
                JanetScratch *news = janet_realloc(s, size + sizeof(JanetScratch));
14263
0
                if (NULL == news) {
14264
0
                    JANET_OUT_OF_MEMORY;
14265
0
                }
14266
0
                janet_vm.scratch_mem[i] = news;
14267
0
                return (char *)(news->mem);
14268
0
            }
14269
0
            if (i == 0) break;
14270
0
        }
14271
0
    }
14272
0
    JANET_EXIT("invalid janet_srealloc");
14273
0
}
14274
14275
0
void janet_sfinalizer(void *mem, JanetScratchFinalizer finalizer) {
14276
0
    JanetScratch *s = janet_mem2scratch(mem);
14277
0
    s->finalize = finalizer;
14278
0
}
14279
14280
0
void janet_sfree(void *mem) {
14281
0
    if (NULL == mem) return;
14282
0
    JanetScratch *s = janet_mem2scratch(mem);
14283
0
    if (janet_vm.scratch_len) {
14284
0
        for (size_t i = janet_vm.scratch_len - 1; ; i--) {
14285
0
            if (janet_vm.scratch_mem[i] == s) {
14286
0
                janet_vm.scratch_mem[i] = janet_vm.scratch_mem[--janet_vm.scratch_len];
14287
0
                free_one_scratch(s);
14288
0
                return;
14289
0
            }
14290
0
            if (i == 0) break;
14291
0
        }
14292
0
    }
14293
0
    JANET_EXIT("invalid janet_sfree");
14294
0
}
14295
14296
14297
/* src/core/inttypes.c */
14298
#line 0 "src/core/inttypes.c"
14299
14300
/*
14301
* Copyright (c) 2023 Calvin Rose & contributors
14302
*
14303
* Permission is hereby granted, free of charge, to any person obtaining a copy
14304
* of this software and associated documentation files (the "Software"), to
14305
* deal in the Software without restriction, including without limitation the
14306
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
14307
* sell copies of the Software, and to permit persons to whom the Software is
14308
* furnished to do so, subject to the following conditions:
14309
*
14310
* The above copyright notice and this permission notice shall be included in
14311
* all copies or substantial portions of the Software.
14312
*
14313
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14314
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14315
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
14316
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
14317
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
14318
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
14319
* IN THE SOFTWARE.
14320
*/
14321
14322
#ifndef JANET_AMALG
14323
#include "features.h"
14324
#include <janet.h>
14325
#include "util.h"
14326
#endif
14327
14328
#include <errno.h>
14329
#include <stdlib.h>
14330
#include <limits.h>
14331
#include <inttypes.h>
14332
#include <math.h>
14333
14334
/* Conditional compilation */
14335
#ifdef JANET_INT_TYPES
14336
14337
0
#define MAX_INT_IN_DBL 9007199254740992ULL /* 2^53 */
14338
14339
static int it_s64_get(void *p, Janet key, Janet *out);
14340
static int it_u64_get(void *p, Janet key, Janet *out);
14341
static Janet janet_int64_next(void *p, Janet key);
14342
static Janet janet_uint64_next(void *p, Janet key);
14343
14344
0
static int32_t janet_int64_hash(void *p1, size_t size) {
14345
0
    (void) size;
14346
0
    int32_t *words = p1;
14347
0
    return words[0] ^ words[1];
14348
0
}
14349
14350
0
static int janet_int64_compare(void *p1, void *p2) {
14351
0
    int64_t x = *((int64_t *)p1);
14352
0
    int64_t y = *((int64_t *)p2);
14353
0
    return x == y ? 0 : x < y ? -1 : 1;
14354
0
}
14355
14356
0
static int janet_uint64_compare(void *p1, void *p2) {
14357
0
    uint64_t x = *((uint64_t *)p1);
14358
0
    uint64_t y = *((uint64_t *)p2);
14359
0
    return x == y ? 0 : x < y ? -1 : 1;
14360
0
}
14361
14362
0
static void int64_marshal(void *p, JanetMarshalContext *ctx) {
14363
0
    janet_marshal_abstract(ctx, p);
14364
0
    janet_marshal_int64(ctx, *((int64_t *)p));
14365
0
}
14366
14367
0
static void *int64_unmarshal(JanetMarshalContext *ctx) {
14368
0
    int64_t *p = janet_unmarshal_abstract(ctx, sizeof(int64_t));
14369
0
    p[0] = janet_unmarshal_int64(ctx);
14370
0
    return p;
14371
0
}
14372
14373
0
static void it_s64_tostring(void *p, JanetBuffer *buffer) {
14374
0
    char str[32];
14375
0
    sprintf(str, "%" PRId64, *((int64_t *)p));
14376
0
    janet_buffer_push_cstring(buffer, str);
14377
0
}
14378
14379
0
static void it_u64_tostring(void *p, JanetBuffer *buffer) {
14380
0
    char str[32];
14381
0
    sprintf(str, "%" PRIu64, *((uint64_t *)p));
14382
0
    janet_buffer_push_cstring(buffer, str);
14383
0
}
14384
14385
const JanetAbstractType janet_s64_type = {
14386
    "core/s64",
14387
    NULL,
14388
    NULL,
14389
    it_s64_get,
14390
    NULL,
14391
    int64_marshal,
14392
    int64_unmarshal,
14393
    it_s64_tostring,
14394
    janet_int64_compare,
14395
    janet_int64_hash,
14396
    janet_int64_next,
14397
    JANET_ATEND_NEXT
14398
};
14399
14400
const JanetAbstractType janet_u64_type = {
14401
    "core/u64",
14402
    NULL,
14403
    NULL,
14404
    it_u64_get,
14405
    NULL,
14406
    int64_marshal,
14407
    int64_unmarshal,
14408
    it_u64_tostring,
14409
    janet_uint64_compare,
14410
    janet_int64_hash,
14411
    janet_uint64_next,
14412
    JANET_ATEND_NEXT
14413
};
14414
14415
0
int64_t janet_unwrap_s64(Janet x) {
14416
0
    switch (janet_type(x)) {
14417
0
        default:
14418
0
            break;
14419
0
        case JANET_NUMBER : {
14420
0
            double dbl = janet_unwrap_number(x);
14421
0
            if (fabs(dbl) <=  MAX_INT_IN_DBL)
14422
0
                return (int64_t)dbl;
14423
0
            break;
14424
0
        }
14425
0
        case JANET_STRING: {
14426
0
            int64_t value;
14427
0
            const uint8_t *str = janet_unwrap_string(x);
14428
0
            if (janet_scan_int64(str, janet_string_length(str), &value))
14429
0
                return value;
14430
0
            break;
14431
0
        }
14432
0
        case JANET_ABSTRACT: {
14433
0
            void *abst = janet_unwrap_abstract(x);
14434
0
            if (janet_abstract_type(abst) == &janet_s64_type ||
14435
0
                    (janet_abstract_type(abst) == &janet_u64_type))
14436
0
                return *(int64_t *)abst;
14437
0
            break;
14438
0
        }
14439
0
    }
14440
0
    janet_panicf("can not convert %t %q to 64 bit signed integer", x, x);
14441
0
    return 0;
14442
0
}
14443
14444
0
uint64_t janet_unwrap_u64(Janet x) {
14445
0
    switch (janet_type(x)) {
14446
0
        default:
14447
0
            break;
14448
0
        case JANET_NUMBER : {
14449
0
            double dbl = janet_unwrap_number(x);
14450
            /* Allow negative values to be cast to "wrap around".
14451
             * This let's addition and subtraction work as expected. */
14452
0
            if (fabs(dbl) <=  MAX_INT_IN_DBL)
14453
0
                return (uint64_t)dbl;
14454
0
            break;
14455
0
        }
14456
0
        case JANET_STRING: {
14457
0
            uint64_t value;
14458
0
            const uint8_t *str = janet_unwrap_string(x);
14459
0
            if (janet_scan_uint64(str, janet_string_length(str), &value))
14460
0
                return value;
14461
0
            break;
14462
0
        }
14463
0
        case JANET_ABSTRACT: {
14464
0
            void *abst = janet_unwrap_abstract(x);
14465
0
            if (janet_abstract_type(abst) == &janet_s64_type ||
14466
0
                    (janet_abstract_type(abst) == &janet_u64_type))
14467
0
                return *(uint64_t *)abst;
14468
0
            break;
14469
0
        }
14470
0
    }
14471
0
    janet_panicf("can not convert %t %q to a 64 bit unsigned integer", x, x);
14472
0
    return 0;
14473
0
}
14474
14475
0
JanetIntType janet_is_int(Janet x) {
14476
0
    if (!janet_checktype(x, JANET_ABSTRACT)) return JANET_INT_NONE;
14477
0
    const JanetAbstractType *at = janet_abstract_type(janet_unwrap_abstract(x));
14478
0
    return (at == &janet_s64_type) ? JANET_INT_S64 :
14479
0
           ((at == &janet_u64_type) ? JANET_INT_U64 :
14480
0
            JANET_INT_NONE);
14481
0
}
14482
14483
0
Janet janet_wrap_s64(int64_t x) {
14484
0
    int64_t *box = janet_abstract(&janet_s64_type, sizeof(int64_t));
14485
0
    *box = (int64_t)x;
14486
0
    return janet_wrap_abstract(box);
14487
0
}
14488
14489
0
Janet janet_wrap_u64(uint64_t x) {
14490
0
    uint64_t *box = janet_abstract(&janet_u64_type, sizeof(uint64_t));
14491
0
    *box = (uint64_t)x;
14492
0
    return janet_wrap_abstract(box);
14493
0
}
14494
14495
JANET_CORE_FN(cfun_it_s64_new,
14496
              "(int/s64 value)",
14497
0
              "Create a boxed signed 64 bit integer from a string value.") {
14498
0
    janet_fixarity(argc, 1);
14499
0
    return janet_wrap_s64(janet_unwrap_s64(argv[0]));
14500
0
}
14501
14502
JANET_CORE_FN(cfun_it_u64_new,
14503
              "(int/u64 value)",
14504
0
              "Create a boxed unsigned 64 bit integer from a string value.") {
14505
0
    janet_fixarity(argc, 1);
14506
0
    return janet_wrap_u64(janet_unwrap_u64(argv[0]));
14507
0
}
14508
14509
JANET_CORE_FN(cfun_to_number,
14510
              "(int/to-number value)",
14511
0
              "Convert an int/u64 or int/s64 to a number. Fails if the number is out of range for an int32.") {
14512
0
    janet_fixarity(argc, 1);
14513
0
    if (janet_type(argv[0]) == JANET_ABSTRACT) {
14514
0
        void *abst = janet_unwrap_abstract(argv[0]);
14515
14516
0
        if (janet_abstract_type(abst) == &janet_s64_type) {
14517
0
            int64_t value = *((int64_t *)abst);
14518
0
            if (value > JANET_INTMAX_INT64) {
14519
0
                janet_panicf("cannot convert %q to a number, must be in the range [%q, %q]", argv[0], janet_wrap_number(JANET_INTMIN_DOUBLE), janet_wrap_number(JANET_INTMAX_DOUBLE));
14520
0
            }
14521
0
            if (value < -JANET_INTMAX_INT64) {
14522
0
                janet_panicf("cannot convert %q to a number, must be in the range [%q, %q]", argv[0], janet_wrap_number(JANET_INTMIN_DOUBLE), janet_wrap_number(JANET_INTMAX_DOUBLE));
14523
0
            }
14524
0
            return janet_wrap_number((double)value);
14525
0
        }
14526
14527
0
        if (janet_abstract_type(abst) == &janet_u64_type) {
14528
0
            uint64_t value = *((uint64_t *)abst);
14529
0
            if (value > JANET_INTMAX_INT64) {
14530
0
                janet_panicf("cannot convert %q to a number, must be in the range [%q, %q]", argv[0], janet_wrap_number(JANET_INTMIN_DOUBLE), janet_wrap_number(JANET_INTMAX_DOUBLE));
14531
0
            }
14532
14533
0
            return janet_wrap_number((double)value);
14534
0
        }
14535
0
    }
14536
14537
0
    janet_panicf("expected int/u64 or int/s64, got %q", argv[0]);
14538
0
}
14539
14540
JANET_CORE_FN(cfun_to_bytes,
14541
              "(int/to-bytes value &opt endianness buffer)",
14542
              "Write the bytes of an `int/s64` or `int/u64` into a buffer.\n"
14543
              "The `buffer` parameter specifies an existing buffer to write to, if unset a new buffer will be created.\n"
14544
              "Returns the modified buffer.\n"
14545
              "The `endianness` paramater indicates the byte order:\n"
14546
              "- `nil` (unset): system byte order\n"
14547
              "- `:le`: little-endian, least significant byte first\n"
14548
0
              "- `:be`: big-endian, most significant byte first\n") {
14549
0
    janet_arity(argc, 1, 3);
14550
0
    if (janet_is_int(argv[0]) == JANET_INT_NONE) {
14551
0
        janet_panicf("int/to-bytes: expected an int/s64 or int/u64, got %q", argv[0]);
14552
0
    }
14553
14554
0
    int reverse = 0;
14555
0
    if (argc > 1 && !janet_checktype(argv[1], JANET_NIL)) {
14556
0
        JanetKeyword endianness_kw = janet_getkeyword(argv, 1);
14557
0
        if (!janet_cstrcmp(endianness_kw, "le")) {
14558
#if JANET_BIG_ENDIAN
14559
            reverse = 1;
14560
#endif
14561
0
        } else if (!janet_cstrcmp(endianness_kw, "be")) {
14562
0
#if JANET_LITTLE_ENDIAN
14563
0
            reverse = 1;
14564
0
#endif
14565
0
        } else {
14566
0
            janet_panicf("int/to-bytes: expected endianness :le, :be or nil, got %v", argv[1]);
14567
0
        }
14568
0
    }
14569
14570
0
    JanetBuffer *buffer = NULL;
14571
0
    if (argc > 2 && !janet_checktype(argv[2], JANET_NIL)) {
14572
0
        if (!janet_checktype(argv[2], JANET_BUFFER)) {
14573
0
            janet_panicf("int/to-bytes: expected buffer or nil, got %q", argv[2]);
14574
0
        }
14575
14576
0
        buffer = janet_unwrap_buffer(argv[2]);
14577
0
        janet_buffer_extra(buffer, 8);
14578
0
    } else {
14579
0
        buffer = janet_buffer(8);
14580
0
    }
14581
14582
0
    uint8_t *bytes = janet_unwrap_abstract(argv[0]);
14583
0
    if (reverse) {
14584
0
        for (int i = 0; i < 8; ++i) {
14585
0
            buffer->data[buffer->count + 7 - i] = bytes[i];
14586
0
        }
14587
0
    } else {
14588
0
        memcpy(buffer->data + buffer->count, bytes, 8);
14589
0
    }
14590
0
    buffer->count += 8;
14591
14592
0
    return janet_wrap_buffer(buffer);
14593
0
}
14594
14595
/*
14596
 * Code to support polymorphic comparison.
14597
 * int/u64 and int/s64 support a "compare" method that allows
14598
 * comparison to each other, and to Janet numbers, using the
14599
 * "compare" "compare<" ... functions.
14600
 * In the following code explicit casts are sometimes used to help
14601
 * make it clear when int/float conversions are happening.
14602
 */
14603
0
static int compare_double_double(double x, double y) {
14604
0
    return (x < y) ? -1 : ((x > y) ? 1 : 0);
14605
0
}
14606
14607
0
static int compare_int64_double(int64_t x, double y) {
14608
0
    if (isnan(y)) {
14609
0
        return 0; // clojure and python do this
14610
0
    } else if ((y > (- ((double) MAX_INT_IN_DBL))) && (y < ((double) MAX_INT_IN_DBL))) {
14611
0
        double dx = (double) x;
14612
0
        return compare_double_double(dx, y);
14613
0
    } else if (y > ((double) INT64_MAX)) {
14614
0
        return -1;
14615
0
    } else if (y < ((double) INT64_MIN)) {
14616
0
        return 1;
14617
0
    } else {
14618
0
        int64_t yi = (int64_t) y;
14619
0
        return (x < yi) ? -1 : ((x > yi) ? 1 : 0);
14620
0
    }
14621
0
}
14622
14623
0
static int compare_uint64_double(uint64_t x, double y) {
14624
0
    if (isnan(y)) {
14625
0
        return 0; // clojure and python do this
14626
0
    } else if (y < 0) {
14627
0
        return 1;
14628
0
    } else if ((y >= 0) && (y < ((double) MAX_INT_IN_DBL))) {
14629
0
        double dx = (double) x;
14630
0
        return compare_double_double(dx, y);
14631
0
    } else if (y > ((double) UINT64_MAX)) {
14632
0
        return -1;
14633
0
    } else {
14634
0
        uint64_t yi = (uint64_t) y;
14635
0
        return (x < yi) ? -1 : ((x > yi) ? 1 : 0);
14636
0
    }
14637
0
}
14638
14639
0
static Janet cfun_it_s64_compare(int32_t argc, Janet *argv) {
14640
0
    janet_fixarity(argc, 2);
14641
0
    if (janet_is_int(argv[0]) != JANET_INT_S64)
14642
0
        janet_panic("compare method requires int/s64 as first argument");
14643
0
    int64_t x = janet_unwrap_s64(argv[0]);
14644
0
    switch (janet_type(argv[1])) {
14645
0
        default:
14646
0
            break;
14647
0
        case JANET_NUMBER : {
14648
0
            double y = janet_unwrap_number(argv[1]);
14649
0
            return janet_wrap_number(compare_int64_double(x, y));
14650
0
        }
14651
0
        case JANET_ABSTRACT: {
14652
0
            void *abst = janet_unwrap_abstract(argv[1]);
14653
0
            if (janet_abstract_type(abst) == &janet_s64_type) {
14654
0
                int64_t y = *(int64_t *)abst;
14655
0
                return janet_wrap_number((x < y) ? -1 : (x > y ? 1 : 0));
14656
0
            } else if (janet_abstract_type(abst) == &janet_u64_type) {
14657
                // comparing signed to unsigned -- be careful!
14658
0
                uint64_t y = *(uint64_t *)abst;
14659
0
                if (x < 0) {
14660
0
                    return janet_wrap_number(-1);
14661
0
                } else if (y > INT64_MAX) {
14662
0
                    return janet_wrap_number(-1);
14663
0
                } else {
14664
0
                    int64_t y2 = (int64_t) y;
14665
0
                    return janet_wrap_number((x < y2) ? -1 : (x > y2 ? 1 : 0));
14666
0
                }
14667
0
            }
14668
0
            break;
14669
0
        }
14670
0
    }
14671
0
    return janet_wrap_nil();
14672
0
}
14673
14674
0
static Janet cfun_it_u64_compare(int32_t argc, Janet *argv) {
14675
0
    janet_fixarity(argc, 2);
14676
0
    if (janet_is_int(argv[0]) != JANET_INT_U64)  // is this needed?
14677
0
        janet_panic("compare method requires int/u64 as first argument");
14678
0
    uint64_t x = janet_unwrap_u64(argv[0]);
14679
0
    switch (janet_type(argv[1])) {
14680
0
        default:
14681
0
            break;
14682
0
        case JANET_NUMBER : {
14683
0
            double y = janet_unwrap_number(argv[1]);
14684
0
            return janet_wrap_number(compare_uint64_double(x, y));
14685
0
        }
14686
0
        case JANET_ABSTRACT: {
14687
0
            void *abst = janet_unwrap_abstract(argv[1]);
14688
0
            if (janet_abstract_type(abst) == &janet_u64_type) {
14689
0
                uint64_t y = *(uint64_t *)abst;
14690
0
                return janet_wrap_number((x < y) ? -1 : (x > y ? 1 : 0));
14691
0
            } else if (janet_abstract_type(abst) == &janet_s64_type) {
14692
                // comparing unsigned to signed -- be careful!
14693
0
                int64_t y = *(int64_t *)abst;
14694
0
                if (y < 0) {
14695
0
                    return janet_wrap_number(1);
14696
0
                } else if (x > INT64_MAX) {
14697
0
                    return janet_wrap_number(1);
14698
0
                } else {
14699
0
                    int64_t x2 = (int64_t) x;
14700
0
                    return janet_wrap_number((x2 < y) ? -1 : (x2 > y ? 1 : 0));
14701
0
                }
14702
0
            }
14703
0
            break;
14704
0
        }
14705
0
    }
14706
0
    return janet_wrap_nil();
14707
0
}
14708
14709
/*
14710
 * In C, signed arithmetic overflow is undefined behvior
14711
 * but unsigned arithmetic overflow is twos complement
14712
 *
14713
 * Reference:
14714
 * https://en.cppreference.com/w/cpp/language/ub
14715
 * http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html
14716
 *
14717
 * This means OPMETHOD & OPMETHODINVERT must always use
14718
 * unsigned arithmetic internally, regardless of the true type.
14719
 * This will not affect the end result (property of twos complement).
14720
 */
14721
#define OPMETHOD(T, type, name, oper) \
14722
0
static Janet cfun_it_##type##_##name(int32_t argc, Janet *argv) { \
14723
0
    janet_arity(argc, 2, -1); \
14724
0
    T *box = janet_abstract(&janet_##type##_type, sizeof(T)); \
14725
0
    *box = janet_unwrap_##type(argv[0]); \
14726
0
    for (int32_t i = 1; i < argc; i++) \
14727
0
        /* This avoids undefined behavior. See above for why. */ \
14728
0
        *box = (T) ((uint64_t) (*box)) oper ((uint64_t) janet_unwrap_##type(argv[i])); \
14729
0
    return janet_wrap_abstract(box); \
14730
0
} \
Unexecuted instantiation: janet.c:cfun_it_s64_add
Unexecuted instantiation: janet.c:cfun_it_s64_sub
Unexecuted instantiation: janet.c:cfun_it_s64_mul
Unexecuted instantiation: janet.c:cfun_it_s64_and
Unexecuted instantiation: janet.c:cfun_it_s64_or
Unexecuted instantiation: janet.c:cfun_it_s64_xor
Unexecuted instantiation: janet.c:cfun_it_s64_lshift
Unexecuted instantiation: janet.c:cfun_it_s64_rshift
Unexecuted instantiation: janet.c:cfun_it_u64_add
Unexecuted instantiation: janet.c:cfun_it_u64_sub
Unexecuted instantiation: janet.c:cfun_it_u64_mul
Unexecuted instantiation: janet.c:cfun_it_u64_and
Unexecuted instantiation: janet.c:cfun_it_u64_or
Unexecuted instantiation: janet.c:cfun_it_u64_xor
Unexecuted instantiation: janet.c:cfun_it_u64_lshift
Unexecuted instantiation: janet.c:cfun_it_u64_rshift
14731
14732
#define OPMETHODINVERT(T, type, name, oper) \
14733
0
static Janet cfun_it_##type##_##name(int32_t argc, Janet *argv) { \
14734
0
    janet_fixarity(argc, 2); \
14735
0
    T *box = janet_abstract(&janet_##type##_type, sizeof(T)); \
14736
0
    *box = janet_unwrap_##type(argv[1]); \
14737
0
    /* This avoids undefined behavior. See above for why. */ \
14738
0
    *box = (T) ((uint64_t) *box) oper ((uint64_t) janet_unwrap_##type(argv[0])); \
14739
0
    return janet_wrap_abstract(box); \
14740
0
} \
Unexecuted instantiation: janet.c:cfun_it_s64_subi
Unexecuted instantiation: janet.c:cfun_it_u64_subi
14741
14742
#define DIVMETHOD(T, type, name, oper) \
14743
0
static Janet cfun_it_##type##_##name(int32_t argc, Janet *argv) { \
14744
0
    janet_arity(argc, 2, -1);                       \
14745
0
    T *box = janet_abstract(&janet_##type##_type, sizeof(T)); \
14746
0
    *box = janet_unwrap_##type(argv[0]); \
14747
0
    for (int32_t i = 1; i < argc; i++) { \
14748
0
      T value = janet_unwrap_##type(argv[i]); \
14749
0
      if (value == 0) janet_panic("division by zero"); \
14750
0
      *box oper##= value; \
14751
0
    } \
14752
0
    return janet_wrap_abstract(box); \
14753
0
} \
Unexecuted instantiation: janet.c:cfun_it_u64_div
Unexecuted instantiation: janet.c:cfun_it_u64_mod
14754
14755
#define DIVMETHODINVERT(T, type, name, oper) \
14756
0
static Janet cfun_it_##type##_##name(int32_t argc, Janet *argv) { \
14757
0
    janet_fixarity(argc, 2);                       \
14758
0
    T *box = janet_abstract(&janet_##type##_type, sizeof(T)); \
14759
0
    *box = janet_unwrap_##type(argv[1]); \
14760
0
    T value = janet_unwrap_##type(argv[0]); \
14761
0
    if (value == 0) janet_panic("division by zero"); \
14762
0
    *box oper##= value; \
14763
0
    return janet_wrap_abstract(box); \
14764
0
} \
Unexecuted instantiation: janet.c:cfun_it_u64_divi
Unexecuted instantiation: janet.c:cfun_it_u64_modi
14765
14766
#define DIVMETHOD_SIGNED(T, type, name, oper) \
14767
0
static Janet cfun_it_##type##_##name(int32_t argc, Janet *argv) { \
14768
0
    janet_arity(argc, 2, -1);                       \
14769
0
    T *box = janet_abstract(&janet_##type##_type, sizeof(T)); \
14770
0
    *box = janet_unwrap_##type(argv[0]); \
14771
0
    for (int32_t i = 1; i < argc; i++) { \
14772
0
      T value = janet_unwrap_##type(argv[i]); \
14773
0
      if (value == 0) janet_panic("division by zero"); \
14774
0
      if ((value == -1) && (*box == INT64_MIN)) janet_panic("INT64_MIN divided by -1"); \
14775
0
      *box oper##= value; \
14776
0
    } \
14777
0
    return janet_wrap_abstract(box); \
14778
0
} \
Unexecuted instantiation: janet.c:cfun_it_s64_div
Unexecuted instantiation: janet.c:cfun_it_s64_rem
14779
14780
#define DIVMETHODINVERT_SIGNED(T, type, name, oper) \
14781
0
static Janet cfun_it_##type##_##name(int32_t argc, Janet *argv) { \
14782
0
    janet_fixarity(argc, 2);                       \
14783
0
    T *box = janet_abstract(&janet_##type##_type, sizeof(T)); \
14784
0
    *box = janet_unwrap_##type(argv[1]); \
14785
0
    T value = janet_unwrap_##type(argv[0]); \
14786
0
    if (value == 0) janet_panic("division by zero"); \
14787
0
    if ((value == -1) && (*box == INT64_MIN)) janet_panic("INT64_MIN divided by -1"); \
14788
0
    *box oper##= value; \
14789
0
    return janet_wrap_abstract(box); \
14790
0
} \
Unexecuted instantiation: janet.c:cfun_it_s64_divi
Unexecuted instantiation: janet.c:cfun_it_s64_remi
14791
14792
0
static Janet cfun_it_s64_mod(int32_t argc, Janet *argv) {
14793
0
    janet_fixarity(argc, 2);
14794
0
    int64_t *box = janet_abstract(&janet_s64_type, sizeof(int64_t));
14795
0
    int64_t op1 = janet_unwrap_s64(argv[0]);
14796
0
    int64_t op2 = janet_unwrap_s64(argv[1]);
14797
0
    int64_t x = op1 % op2;
14798
0
    *box = (op1 > 0)
14799
0
           ? ((op2 > 0) ? x : (0 == x ? x : x + op2))
14800
0
           : ((op2 > 0) ? (0 == x ? x : x + op2) : x);
14801
0
    return janet_wrap_abstract(box);
14802
0
}
14803
14804
0
static Janet cfun_it_s64_modi(int32_t argc, Janet *argv) {
14805
0
    janet_fixarity(argc, 2);
14806
0
    int64_t *box = janet_abstract(&janet_s64_type, sizeof(int64_t));
14807
0
    int64_t op2 = janet_unwrap_s64(argv[0]);
14808
0
    int64_t op1 = janet_unwrap_s64(argv[1]);
14809
0
    int64_t x = op1 % op2;
14810
0
    *box = (op1 > 0)
14811
0
           ? ((op2 > 0) ? x : (0 == x ? x : x + op2))
14812
0
           : ((op2 > 0) ? (0 == x ? x : x + op2) : x);
14813
0
    return janet_wrap_abstract(box);
14814
0
}
14815
14816
OPMETHOD(int64_t, s64, add, +)
14817
OPMETHOD(int64_t, s64, sub, -)
14818
OPMETHODINVERT(int64_t, s64, subi, -)
14819
OPMETHOD(int64_t, s64, mul, *)
14820
DIVMETHOD_SIGNED(int64_t, s64, div, /)
14821
DIVMETHOD_SIGNED(int64_t, s64, rem, %)
14822
DIVMETHODINVERT_SIGNED(int64_t, s64, divi, /)
14823
DIVMETHODINVERT_SIGNED(int64_t, s64, remi, %)
14824
OPMETHOD(int64_t, s64, and, &)
14825
OPMETHOD(int64_t, s64, or, |)
14826
OPMETHOD(int64_t, s64, xor, ^)
14827
OPMETHOD(int64_t, s64, lshift, <<)
14828
OPMETHOD(int64_t, s64, rshift, >>)
14829
OPMETHOD(uint64_t, u64, add, +)
14830
OPMETHOD(uint64_t, u64, sub, -)
14831
OPMETHODINVERT(uint64_t, u64, subi, -)
14832
OPMETHOD(uint64_t, u64, mul, *)
14833
DIVMETHOD(uint64_t, u64, div, /)
14834
DIVMETHOD(uint64_t, u64, mod, %)
14835
DIVMETHODINVERT(uint64_t, u64, divi, /)
14836
DIVMETHODINVERT(uint64_t, u64, modi, %)
14837
OPMETHOD(uint64_t, u64, and, &)
14838
OPMETHOD(uint64_t, u64, or, |)
14839
OPMETHOD(uint64_t, u64, xor, ^)
14840
OPMETHOD(uint64_t, u64, lshift, <<)
14841
OPMETHOD(uint64_t, u64, rshift, >>)
14842
14843
#undef OPMETHOD
14844
#undef DIVMETHOD
14845
#undef DIVMETHOD_SIGNED
14846
#undef COMPMETHOD
14847
14848
static JanetMethod it_s64_methods[] = {
14849
    {"+", cfun_it_s64_add},
14850
    {"r+", cfun_it_s64_add},
14851
    {"-", cfun_it_s64_sub},
14852
    {"r-", cfun_it_s64_subi},
14853
    {"*", cfun_it_s64_mul},
14854
    {"r*", cfun_it_s64_mul},
14855
    {"/", cfun_it_s64_div},
14856
    {"r/", cfun_it_s64_divi},
14857
    {"mod", cfun_it_s64_mod},
14858
    {"rmod", cfun_it_s64_modi},
14859
    {"%", cfun_it_s64_rem},
14860
    {"r%", cfun_it_s64_remi},
14861
    {"&", cfun_it_s64_and},
14862
    {"r&", cfun_it_s64_and},
14863
    {"|", cfun_it_s64_or},
14864
    {"r|", cfun_it_s64_or},
14865
    {"^", cfun_it_s64_xor},
14866
    {"r^", cfun_it_s64_xor},
14867
    {"<<", cfun_it_s64_lshift},
14868
    {">>", cfun_it_s64_rshift},
14869
    {"compare", cfun_it_s64_compare},
14870
    {NULL, NULL}
14871
};
14872
14873
static JanetMethod it_u64_methods[] = {
14874
    {"+", cfun_it_u64_add},
14875
    {"r+", cfun_it_u64_add},
14876
    {"-", cfun_it_u64_sub},
14877
    {"r-", cfun_it_u64_subi},
14878
    {"*", cfun_it_u64_mul},
14879
    {"r*", cfun_it_u64_mul},
14880
    {"/", cfun_it_u64_div},
14881
    {"r/", cfun_it_u64_divi},
14882
    {"mod", cfun_it_u64_mod},
14883
    {"rmod", cfun_it_u64_modi},
14884
    {"%", cfun_it_u64_mod},
14885
    {"r%", cfun_it_u64_modi},
14886
    {"&", cfun_it_u64_and},
14887
    {"r&", cfun_it_u64_and},
14888
    {"|", cfun_it_u64_or},
14889
    {"r|", cfun_it_u64_or},
14890
    {"^", cfun_it_u64_xor},
14891
    {"r^", cfun_it_u64_xor},
14892
    {"<<", cfun_it_u64_lshift},
14893
    {">>", cfun_it_u64_rshift},
14894
    {"compare", cfun_it_u64_compare},
14895
    {NULL, NULL}
14896
};
14897
14898
0
static Janet janet_int64_next(void *p, Janet key) {
14899
0
    (void) p;
14900
0
    return janet_nextmethod(it_s64_methods, key);
14901
0
}
14902
14903
0
static Janet janet_uint64_next(void *p, Janet key) {
14904
0
    (void) p;
14905
0
    return janet_nextmethod(it_u64_methods, key);
14906
0
}
14907
14908
0
static int it_s64_get(void *p, Janet key, Janet *out) {
14909
0
    (void) p;
14910
0
    if (!janet_checktype(key, JANET_KEYWORD))
14911
0
        return 0;
14912
0
    return janet_getmethod(janet_unwrap_keyword(key), it_s64_methods, out);
14913
0
}
14914
14915
0
static int it_u64_get(void *p, Janet key, Janet *out) {
14916
0
    (void) p;
14917
0
    if (!janet_checktype(key, JANET_KEYWORD))
14918
0
        return 0;
14919
0
    return janet_getmethod(janet_unwrap_keyword(key), it_u64_methods, out);
14920
0
}
14921
14922
/* Module entry point */
14923
0
void janet_lib_inttypes(JanetTable *env) {
14924
0
    JanetRegExt it_cfuns[] = {
14925
0
        JANET_CORE_REG("int/s64", cfun_it_s64_new),
14926
0
        JANET_CORE_REG("int/u64", cfun_it_u64_new),
14927
0
        JANET_CORE_REG("int/to-number", cfun_to_number),
14928
0
        JANET_CORE_REG("int/to-bytes", cfun_to_bytes),
14929
0
        JANET_REG_END
14930
0
    };
14931
0
    janet_core_cfuns_ext(env, NULL, it_cfuns);
14932
0
    janet_register_abstract_type(&janet_s64_type);
14933
0
    janet_register_abstract_type(&janet_u64_type);
14934
0
}
14935
14936
#endif
14937
14938
14939
/* src/core/io.c */
14940
#line 0 "src/core/io.c"
14941
14942
/*
14943
* Copyright (c) 2023 Calvin Rose
14944
*
14945
* Permission is hereby granted, free of charge, to any person obtaining a copy
14946
* of this software and associated documentation files (the "Software"), to
14947
* deal in the Software without restriction, including without limitation the
14948
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
14949
* sell copies of the Software, and to permit persons to whom the Software is
14950
* furnished to do so, subject to the following conditions:
14951
*
14952
* The above copyright notice and this permission notice shall be included in
14953
* all copies or substantial portions of the Software.
14954
*
14955
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14956
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14957
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
14958
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
14959
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
14960
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
14961
* IN THE SOFTWARE.
14962
*/
14963
14964
#ifndef JANET_AMALG
14965
#include "features.h"
14966
#include <janet.h>
14967
#include "util.h"
14968
#endif
14969
14970
#include <stdio.h>
14971
#include <errno.h>
14972
14973
#ifndef JANET_WINDOWS
14974
#include <fcntl.h>
14975
#include <sys/wait.h>
14976
#include <unistd.h>
14977
#endif
14978
14979
static int cfun_io_gc(void *p, size_t len);
14980
static int io_file_get(void *p, Janet key, Janet *out);
14981
static void io_file_marshal(void *p, JanetMarshalContext *ctx);
14982
static void *io_file_unmarshal(JanetMarshalContext *ctx);
14983
static Janet io_file_next(void *p, Janet key);
14984
14985
const JanetAbstractType janet_file_type = {
14986
    "core/file",
14987
    cfun_io_gc,
14988
    NULL,
14989
    io_file_get,
14990
    NULL,
14991
    io_file_marshal,
14992
    io_file_unmarshal,
14993
    NULL, /* tostring */
14994
    NULL, /* compare */
14995
    NULL, /* hash */
14996
    io_file_next,
14997
    JANET_ATEND_NEXT
14998
};
14999
15000
/* Check arguments to fopen */
15001
0
static int32_t checkflags(const uint8_t *str) {
15002
0
    int32_t flags = 0;
15003
0
    int32_t i;
15004
0
    int32_t len = janet_string_length(str);
15005
0
    if (!len || len > 10)
15006
0
        janet_panic("file mode must have a length between 1 and 10");
15007
0
    switch (*str) {
15008
0
        default:
15009
0
            janet_panicf("invalid flag %c, expected w, a, or r", *str);
15010
0
            break;
15011
0
        case 'w':
15012
0
            flags |= JANET_FILE_WRITE;
15013
0
            janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
15014
0
            break;
15015
0
        case 'a':
15016
0
            flags |= JANET_FILE_APPEND;
15017
0
            janet_sandbox_assert(JANET_SANDBOX_FS);
15018
0
            break;
15019
0
        case 'r':
15020
0
            flags |= JANET_FILE_READ;
15021
0
            janet_sandbox_assert(JANET_SANDBOX_FS_READ);
15022
0
            break;
15023
0
    }
15024
0
    for (i = 1; i < len; i++) {
15025
0
        switch (str[i]) {
15026
0
            default:
15027
0
                janet_panicf("invalid flag %c, expected +, b, or n", str[i]);
15028
0
                break;
15029
0
            case '+':
15030
0
                if (flags & JANET_FILE_UPDATE) return -1;
15031
0
                janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
15032
0
                flags |= JANET_FILE_UPDATE;
15033
0
                break;
15034
0
            case 'b':
15035
0
                if (flags & JANET_FILE_BINARY) return -1;
15036
0
                flags |= JANET_FILE_BINARY;
15037
0
                break;
15038
0
            case 'n':
15039
0
                if (flags & JANET_FILE_NONIL) return -1;
15040
0
                flags |= JANET_FILE_NONIL;
15041
0
                break;
15042
0
        }
15043
0
    }
15044
0
    return flags;
15045
0
}
15046
15047
0
static void *makef(FILE *f, int32_t flags) {
15048
0
    JanetFile *iof = (JanetFile *) janet_abstract(&janet_file_type, sizeof(JanetFile));
15049
0
    iof->file = f;
15050
0
    iof->flags = flags;
15051
0
#ifndef JANET_WINDOWS
15052
    /* While we would like fopen to set cloexec by default (like O_CLOEXEC) with the e flag, that is
15053
     * not standard. */
15054
0
    if (!(flags & JANET_FILE_NOT_CLOSEABLE))
15055
0
        fcntl(fileno(f), F_SETFD, FD_CLOEXEC);
15056
0
#endif
15057
0
    return iof;
15058
0
}
15059
15060
JANET_CORE_FN(cfun_io_temp,
15061
              "(file/temp)",
15062
              "Open an anonymous temporary file that is removed on close. "
15063
0
              "Raises an error on failure.") {
15064
0
    janet_sandbox_assert(JANET_SANDBOX_FS_TEMP);
15065
0
    (void)argv;
15066
0
    janet_fixarity(argc, 0);
15067
    // XXX use mkostemp when we can to avoid CLOEXEC race.
15068
0
    FILE *tmp = tmpfile();
15069
0
    if (!tmp)
15070
0
        janet_panicf("unable to create temporary file - %s", strerror(errno));
15071
0
    return janet_makefile(tmp, JANET_FILE_WRITE | JANET_FILE_READ | JANET_FILE_BINARY);
15072
0
}
15073
15074
JANET_CORE_FN(cfun_io_fopen,
15075
              "(file/open path &opt mode)",
15076
              "Open a file. `path` is an absolute or relative path, and "
15077
              "`mode` is a set of flags indicating the mode to open the file in. "
15078
              "`mode` is a keyword where each character represents a flag. If the file "
15079
              "cannot be opened, returns nil, otherwise returns the new file handle. "
15080
              "Mode flags:\n\n"
15081
              "* r - allow reading from the file\n\n"
15082
              "* w - allow writing to the file\n\n"
15083
              "* a - append to the file\n\n"
15084
              "Following one of the initial flags, 0 or more of the following flags can be appended:\n\n"
15085
              "* b - open the file in binary mode (rather than text mode)\n\n"
15086
              "* + - append to the file instead of overwriting it\n\n"
15087
0
              "* n - error if the file cannot be opened instead of returning nil") {
15088
0
    janet_arity(argc, 1, 2);
15089
0
    const uint8_t *fname = janet_getstring(argv, 0);
15090
0
    const uint8_t *fmode;
15091
0
    int32_t flags;
15092
0
    if (argc == 2) {
15093
0
        fmode = janet_getkeyword(argv, 1);
15094
0
        flags = checkflags(fmode);
15095
0
    } else {
15096
0
        fmode = (const uint8_t *)"r";
15097
0
        janet_sandbox_assert(JANET_SANDBOX_FS_READ);
15098
0
        flags = JANET_FILE_READ;
15099
0
    }
15100
0
    FILE *f = fopen((const char *)fname, (const char *)fmode);
15101
0
    return f ? janet_makefile(f, flags)
15102
0
           : (flags & JANET_FILE_NONIL) ? (janet_panicf("failed to open file %s: %s", fname, strerror(errno)), janet_wrap_nil())
15103
0
           : janet_wrap_nil();
15104
0
}
15105
15106
/* Read up to n bytes into buffer. */
15107
0
static void read_chunk(JanetFile *iof, JanetBuffer *buffer, int32_t nBytesMax) {
15108
0
    if (!(iof->flags & (JANET_FILE_READ | JANET_FILE_UPDATE)))
15109
0
        janet_panic("file is not readable");
15110
0
    janet_buffer_extra(buffer, nBytesMax);
15111
0
    size_t ntoread = nBytesMax;
15112
0
    size_t nread = fread((char *)(buffer->data + buffer->count), 1, ntoread, iof->file);
15113
0
    if (nread != ntoread && ferror(iof->file))
15114
0
        janet_panic("could not read file");
15115
0
    buffer->count += (int32_t) nread;
15116
0
}
15117
15118
/* Read a certain number of bytes into memory */
15119
JANET_CORE_FN(cfun_io_fread,
15120
              "(file/read f what &opt buf)",
15121
              "Read a number of bytes from a file `f` into a buffer. A buffer `buf` can "
15122
              "be provided as an optional third argument, otherwise a new buffer "
15123
              "is created. `what` can either be an integer or a keyword. Returns the "
15124
              "buffer with file contents. "
15125
              "Values for `what`:\n\n"
15126
              "* :all - read the whole file\n\n"
15127
              "* :line - read up to and including the next newline character\n\n"
15128
0
              "* n (integer) - read up to n bytes from the file") {
15129
0
    janet_arity(argc, 2, 3);
15130
0
    JanetFile *iof = janet_getabstract(argv, 0, &janet_file_type);
15131
0
    if (iof->flags & JANET_FILE_CLOSED) janet_panic("file is closed");
15132
0
    JanetBuffer *buffer;
15133
0
    if (argc == 2) {
15134
0
        buffer = janet_buffer(0);
15135
0
    } else {
15136
0
        buffer = janet_getbuffer(argv, 2);
15137
0
    }
15138
0
    int32_t bufstart = buffer->count;
15139
0
    if (janet_checktype(argv[1], JANET_KEYWORD)) {
15140
0
        const uint8_t *sym = janet_unwrap_keyword(argv[1]);
15141
0
        if (!janet_cstrcmp(sym, "all")) {
15142
0
            int32_t sizeBefore;
15143
0
            do {
15144
0
                sizeBefore = buffer->count;
15145
0
                read_chunk(iof, buffer, 4096);
15146
0
            } while (sizeBefore < buffer->count);
15147
            /* Never return nil for :all */
15148
0
            return janet_wrap_buffer(buffer);
15149
0
        } else if (!janet_cstrcmp(sym, "line")) {
15150
0
            for (;;) {
15151
0
                int x = fgetc(iof->file);
15152
0
                if (x != EOF) janet_buffer_push_u8(buffer, (uint8_t)x);
15153
0
                if (x == EOF || x == '\n') break;
15154
0
            }
15155
0
        } else {
15156
0
            janet_panicf("expected one of :all, :line, got %v", argv[1]);
15157
0
        }
15158
0
    } else {
15159
0
        int32_t len = janet_getinteger(argv, 1);
15160
0
        if (len < 0) janet_panic("expected positive integer");
15161
0
        read_chunk(iof, buffer, len);
15162
0
    }
15163
0
    if (bufstart == buffer->count) return janet_wrap_nil();
15164
0
    return janet_wrap_buffer(buffer);
15165
0
}
15166
15167
/* Write bytes to a file */
15168
JANET_CORE_FN(cfun_io_fwrite,
15169
              "(file/write f bytes)",
15170
              "Writes to a file. 'bytes' must be string, buffer, or symbol. Returns the "
15171
0
              "file.") {
15172
0
    janet_arity(argc, 1, -1);
15173
0
    JanetFile *iof = janet_getabstract(argv, 0, &janet_file_type);
15174
0
    if (iof->flags & JANET_FILE_CLOSED)
15175
0
        janet_panic("file is closed");
15176
0
    if (!(iof->flags & (JANET_FILE_WRITE | JANET_FILE_APPEND | JANET_FILE_UPDATE)))
15177
0
        janet_panic("file is not writeable");
15178
0
    int32_t i;
15179
    /* Verify all arguments before writing to file */
15180
0
    for (i = 1; i < argc; i++)
15181
0
        janet_getbytes(argv, i);
15182
0
    for (i = 1; i < argc; i++) {
15183
0
        JanetByteView view = janet_getbytes(argv, i);
15184
0
        if (view.len) {
15185
0
            if (!fwrite(view.bytes, view.len, 1, iof->file)) {
15186
0
                janet_panic("error writing to file");
15187
0
            }
15188
0
        }
15189
0
    }
15190
0
    return argv[0];
15191
0
}
15192
15193
0
static void io_assert_writeable(JanetFile *iof) {
15194
0
    if (iof->flags & JANET_FILE_CLOSED)
15195
0
        janet_panic("file is closed");
15196
0
    if (!(iof->flags & (JANET_FILE_WRITE | JANET_FILE_APPEND | JANET_FILE_UPDATE)))
15197
0
        janet_panic("file is not writeable");
15198
0
}
15199
15200
/* Flush the bytes in the file */
15201
JANET_CORE_FN(cfun_io_fflush,
15202
              "(file/flush f)",
15203
              "Flush any buffered bytes to the file system. In most files, writes are "
15204
0
              "buffered for efficiency reasons. Returns the file handle.") {
15205
0
    janet_fixarity(argc, 1);
15206
0
    JanetFile *iof = janet_getabstract(argv, 0, &janet_file_type);
15207
0
    io_assert_writeable(iof);
15208
0
    if (fflush(iof->file))
15209
0
        janet_panic("could not flush file");
15210
0
    return argv[0];
15211
0
}
15212
15213
#ifdef JANET_WINDOWS
15214
#define WEXITSTATUS(x) x
15215
#endif
15216
15217
/* For closing files from C API */
15218
0
int janet_file_close(JanetFile *file) {
15219
0
    int ret = 0;
15220
0
    if (!(file->flags & (JANET_FILE_NOT_CLOSEABLE | JANET_FILE_CLOSED))) {
15221
0
        ret = fclose(file->file);
15222
0
        file->flags |= JANET_FILE_CLOSED;
15223
0
        file->file = NULL; /* NULL derefence is easier to debug then other problems */
15224
0
        return ret;
15225
0
    }
15226
0
    return 0;
15227
0
}
15228
15229
/* Cleanup a file */
15230
0
static int cfun_io_gc(void *p, size_t len) {
15231
0
    (void) len;
15232
0
    JanetFile *iof = (JanetFile *)p;
15233
0
    janet_file_close(iof);
15234
0
    return 0;
15235
0
}
15236
15237
/* Close a file */
15238
JANET_CORE_FN(cfun_io_fclose,
15239
              "(file/close f)",
15240
              "Close a file and release all related resources. When you are "
15241
              "done reading a file, close it to prevent a resource leak and let "
15242
0
              "other processes read the file.") {
15243
0
    janet_fixarity(argc, 1);
15244
0
    JanetFile *iof = janet_getabstract(argv, 0, &janet_file_type);
15245
0
    if (iof->flags & JANET_FILE_CLOSED)
15246
0
        return janet_wrap_nil();
15247
0
    if (iof->flags & (JANET_FILE_NOT_CLOSEABLE))
15248
0
        janet_panic("file not closable");
15249
0
    if (fclose(iof->file)) {
15250
0
        iof->flags |= JANET_FILE_NOT_CLOSEABLE;
15251
0
        janet_panic("could not close file");
15252
0
    }
15253
0
    iof->flags |= JANET_FILE_CLOSED;
15254
0
    return janet_wrap_nil();
15255
0
}
15256
15257
/* Seek a file */
15258
JANET_CORE_FN(cfun_io_fseek,
15259
              "(file/seek f &opt whence n)",
15260
              "Jump to a relative location in the file `f`. `whence` must be one of:\n\n"
15261
              "* :cur - jump relative to the current file location\n\n"
15262
              "* :set - jump relative to the beginning of the file\n\n"
15263
              "* :end - jump relative to the end of the file\n\n"
15264
              "By default, `whence` is :cur. Optionally a value `n` may be passed "
15265
              "for the relative number of bytes to seek in the file. `n` may be a real "
15266
0
              "number to handle large files of more than 4GB. Returns the file handle.") {
15267
0
    janet_arity(argc, 2, 3);
15268
0
    JanetFile *iof = janet_getabstract(argv, 0, &janet_file_type);
15269
0
    if (iof->flags & JANET_FILE_CLOSED)
15270
0
        janet_panic("file is closed");
15271
0
    long int offset = 0;
15272
0
    int whence = SEEK_CUR;
15273
0
    if (argc >= 2) {
15274
0
        const uint8_t *whence_sym = janet_getkeyword(argv, 1);
15275
0
        if (!janet_cstrcmp(whence_sym, "cur")) {
15276
0
            whence = SEEK_CUR;
15277
0
        } else if (!janet_cstrcmp(whence_sym, "set")) {
15278
0
            whence = SEEK_SET;
15279
0
        } else if (!janet_cstrcmp(whence_sym, "end")) {
15280
0
            whence = SEEK_END;
15281
0
        } else {
15282
0
            janet_panicf("expected one of :cur, :set, :end, got %v", argv[1]);
15283
0
        }
15284
0
        if (argc == 3) {
15285
0
            offset = (long) janet_getinteger64(argv, 2);
15286
0
        }
15287
0
    }
15288
0
    if (fseek(iof->file, offset, whence)) janet_panic("error seeking file");
15289
0
    return argv[0];
15290
0
}
15291
15292
JANET_CORE_FN(cfun_io_ftell,
15293
              "(file/tell f)",
15294
0
              "Get the current value of the file position for file `f`.") {
15295
0
    janet_fixarity(argc, 1);
15296
0
    JanetFile *iof = janet_getabstract(argv, 0, &janet_file_type);
15297
0
    if (iof->flags & JANET_FILE_CLOSED)
15298
0
        janet_panic("file is closed");
15299
0
    long pos = ftell(iof->file);
15300
0
    if (pos == -1) janet_panic("error getting position in file");
15301
0
    return janet_wrap_number((double)pos);
15302
0
}
15303
15304
static JanetMethod io_file_methods[] = {
15305
    {"close", cfun_io_fclose},
15306
    {"flush", cfun_io_fflush},
15307
    {"read", cfun_io_fread},
15308
    {"seek", cfun_io_fseek},
15309
    {"tell", cfun_io_ftell},
15310
    {"write", cfun_io_fwrite},
15311
    {NULL, NULL}
15312
};
15313
15314
0
static int io_file_get(void *p, Janet key, Janet *out) {
15315
0
    (void) p;
15316
0
    if (!janet_checktype(key, JANET_KEYWORD))
15317
0
        return 0;
15318
0
    return janet_getmethod(janet_unwrap_keyword(key), io_file_methods, out);
15319
0
}
15320
15321
0
static Janet io_file_next(void *p, Janet key) {
15322
0
    (void) p;
15323
0
    return janet_nextmethod(io_file_methods, key);
15324
0
}
15325
15326
0
static void io_file_marshal(void *p, JanetMarshalContext *ctx) {
15327
0
    JanetFile *iof = (JanetFile *)p;
15328
0
    if (ctx->flags & JANET_MARSHAL_UNSAFE) {
15329
0
        janet_marshal_abstract(ctx, p);
15330
#ifdef JANET_WINDOWS
15331
        janet_marshal_int(ctx, _fileno(iof->file));
15332
#else
15333
0
        janet_marshal_int(ctx, fileno(iof->file));
15334
0
#endif
15335
0
        janet_marshal_int(ctx, iof->flags);
15336
0
    } else {
15337
0
        janet_panic("cannot marshal file in safe mode");
15338
0
    }
15339
0
}
15340
15341
0
static void *io_file_unmarshal(JanetMarshalContext *ctx) {
15342
0
    if (ctx->flags & JANET_MARSHAL_UNSAFE) {
15343
0
        JanetFile *iof = janet_unmarshal_abstract(ctx, sizeof(JanetFile));
15344
0
        int32_t fd = janet_unmarshal_int(ctx);
15345
0
        int32_t flags = janet_unmarshal_int(ctx);
15346
0
        char fmt[4] = {0};
15347
0
        int index = 0;
15348
0
        if (flags & JANET_FILE_READ) fmt[index++] = 'r';
15349
0
        if (flags & JANET_FILE_APPEND) {
15350
0
            fmt[index++] = 'a';
15351
0
        } else if (flags & JANET_FILE_WRITE) {
15352
0
            fmt[index++] = 'w';
15353
0
        }
15354
#ifdef JANET_WINDOWS
15355
        iof->file = _fdopen(fd, fmt);
15356
#else
15357
0
        iof->file = fdopen(fd, fmt);
15358
0
#endif
15359
0
        if (iof->file == NULL) {
15360
0
            iof->flags = JANET_FILE_CLOSED;
15361
0
        } else {
15362
0
            iof->flags = flags;
15363
0
        }
15364
0
        return iof;
15365
0
    } else {
15366
0
        janet_panic("cannot unmarshal file in safe mode");
15367
0
    }
15368
0
}
15369
15370
0
FILE *janet_dynfile(const char *name, FILE *def) {
15371
0
    Janet x = janet_dyn(name);
15372
0
    if (!janet_checktype(x, JANET_ABSTRACT)) return def;
15373
0
    void *abstract = janet_unwrap_abstract(x);
15374
0
    if (janet_abstract_type(abstract) != &janet_file_type) return def;
15375
0
    JanetFile *iofile = abstract;
15376
0
    return iofile->file;
15377
0
}
15378
15379
static Janet cfun_io_print_impl_x(int32_t argc, Janet *argv, int newline,
15380
0
                                  FILE *dflt_file, int32_t offset, Janet x) {
15381
0
    FILE *f;
15382
0
    switch (janet_type(x)) {
15383
0
        default:
15384
0
            janet_panicf("cannot print to %v", x);
15385
0
        case JANET_BUFFER: {
15386
            /* Special case buffer */
15387
0
            JanetBuffer *buf = janet_unwrap_buffer(x);
15388
0
            for (int32_t i = offset; i < argc; ++i) {
15389
0
                janet_to_string_b(buf, argv[i]);
15390
0
            }
15391
0
            if (newline)
15392
0
                janet_buffer_push_u8(buf, '\n');
15393
0
            return janet_wrap_nil();
15394
0
        }
15395
0
        case JANET_FUNCTION: {
15396
            /* Special case function */
15397
0
            JanetFunction *fun = janet_unwrap_function(x);
15398
0
            JanetBuffer *buf = janet_buffer(0);
15399
0
            for (int32_t i = offset; i < argc; ++i) {
15400
0
                janet_to_string_b(buf, argv[i]);
15401
0
            }
15402
0
            if (newline)
15403
0
                janet_buffer_push_u8(buf, '\n');
15404
0
            Janet args[1] = { janet_wrap_buffer(buf) };
15405
0
            janet_call(fun, 1, args);
15406
0
            return janet_wrap_nil();
15407
0
        }
15408
0
        case JANET_NIL:
15409
0
            f = dflt_file;
15410
0
            if (f == NULL) janet_panic("cannot print to nil");
15411
0
            break;
15412
0
        case JANET_ABSTRACT: {
15413
0
            void *abstract = janet_unwrap_abstract(x);
15414
0
            if (janet_abstract_type(abstract) != &janet_file_type)
15415
0
                return janet_wrap_nil();
15416
0
            JanetFile *iofile = abstract;
15417
0
            io_assert_writeable(iofile);
15418
0
            f = iofile->file;
15419
0
            break;
15420
0
        }
15421
0
    }
15422
0
    for (int32_t i = offset; i < argc; ++i) {
15423
0
        int32_t len;
15424
0
        const uint8_t *vstr;
15425
0
        if (janet_checktype(argv[i], JANET_BUFFER)) {
15426
0
            JanetBuffer *b = janet_unwrap_buffer(argv[i]);
15427
0
            vstr = b->data;
15428
0
            len = b->count;
15429
0
        } else {
15430
0
            vstr = janet_to_string(argv[i]);
15431
0
            len = janet_string_length(vstr);
15432
0
        }
15433
0
        if (len) {
15434
0
            if (1 != fwrite(vstr, len, 1, f)) {
15435
0
                if (f == dflt_file) {
15436
0
                    janet_panicf("cannot print %d bytes", len);
15437
0
                } else {
15438
0
                    janet_panicf("cannot print %d bytes to %v", len, x);
15439
0
                }
15440
0
            }
15441
0
        }
15442
0
    }
15443
0
    if (newline)
15444
0
        putc('\n', f);
15445
0
    return janet_wrap_nil();
15446
0
}
15447
15448
15449
static Janet cfun_io_print_impl(int32_t argc, Janet *argv,
15450
0
                                int newline, const char *name, FILE *dflt_file) {
15451
0
    Janet x = janet_dyn(name);
15452
0
    return cfun_io_print_impl_x(argc, argv, newline, dflt_file, 0, x);
15453
0
}
15454
15455
JANET_CORE_FN(cfun_io_print,
15456
              "(print & xs)",
15457
              "Print values to the console (standard out). Value are converted "
15458
              "to strings if they are not already. After printing all values, a "
15459
              "newline character is printed. Use the value of `(dyn :out stdout)` to determine "
15460
              "what to push characters to. Expects `(dyn :out stdout)` to be either a core/file or "
15461
0
              "a buffer. Returns nil.") {
15462
0
    return cfun_io_print_impl(argc, argv, 1, "out", stdout);
15463
0
}
15464
15465
JANET_CORE_FN(cfun_io_prin,
15466
              "(prin & xs)",
15467
0
              "Same as `print`, but does not add trailing newline.") {
15468
0
    return cfun_io_print_impl(argc, argv, 0, "out", stdout);
15469
0
}
15470
15471
JANET_CORE_FN(cfun_io_eprint,
15472
              "(eprint & xs)",
15473
0
              "Same as `print`, but uses `(dyn :err stderr)` instead of `(dyn :out stdout)`.") {
15474
0
    return cfun_io_print_impl(argc, argv, 1, "err", stderr);
15475
0
}
15476
15477
JANET_CORE_FN(cfun_io_eprin,
15478
              "(eprin & xs)",
15479
0
              "Same as `prin`, but uses `(dyn :err stderr)` instead of `(dyn :out stdout)`.") {
15480
0
    return cfun_io_print_impl(argc, argv, 0, "err", stderr);
15481
0
}
15482
15483
JANET_CORE_FN(cfun_io_xprint,
15484
              "(xprint to & xs)",
15485
              "Print to a file or other value explicitly (no dynamic bindings) with a trailing "
15486
              "newline character. The value to print "
15487
0
              "to is the first argument, and is otherwise the same as `print`. Returns nil.") {
15488
0
    janet_arity(argc, 1, -1);
15489
0
    return cfun_io_print_impl_x(argc, argv, 1, NULL, 1, argv[0]);
15490
0
}
15491
15492
JANET_CORE_FN(cfun_io_xprin,
15493
              "(xprin to & xs)",
15494
              "Print to a file or other value explicitly (no dynamic bindings). The value to print "
15495
0
              "to is the first argument, and is otherwise the same as `prin`. Returns nil.") {
15496
0
    janet_arity(argc, 1, -1);
15497
0
    return cfun_io_print_impl_x(argc, argv, 0, NULL, 1, argv[0]);
15498
0
}
15499
15500
static Janet cfun_io_printf_impl_x(int32_t argc, Janet *argv, int newline,
15501
0
                                   FILE *dflt_file, int32_t offset, Janet x) {
15502
0
    FILE *f;
15503
0
    const char *fmt = janet_getcstring(argv, offset);
15504
0
    switch (janet_type(x)) {
15505
0
        default:
15506
0
            janet_panicf("cannot print to %v", x);
15507
0
        case JANET_BUFFER: {
15508
            /* Special case buffer */
15509
0
            JanetBuffer *buf = janet_unwrap_buffer(x);
15510
0
            janet_buffer_format(buf, fmt, offset, argc, argv);
15511
0
            if (newline) janet_buffer_push_u8(buf, '\n');
15512
0
            return janet_wrap_nil();
15513
0
        }
15514
0
        case JANET_FUNCTION: {
15515
            /* Special case function */
15516
0
            JanetFunction *fun = janet_unwrap_function(x);
15517
0
            JanetBuffer *buf = janet_buffer(0);
15518
0
            janet_buffer_format(buf, fmt, offset, argc, argv);
15519
0
            if (newline) janet_buffer_push_u8(buf, '\n');
15520
0
            Janet args[1] = { janet_wrap_buffer(buf) };
15521
0
            janet_call(fun, 1, args);
15522
0
            return janet_wrap_nil();
15523
0
        }
15524
0
        case JANET_NIL:
15525
0
            f = dflt_file;
15526
0
            if (f == NULL) janet_panic("cannot print to nil");
15527
0
            break;
15528
0
        case JANET_ABSTRACT: {
15529
0
            void *abstract = janet_unwrap_abstract(x);
15530
0
            if (janet_abstract_type(abstract) != &janet_file_type)
15531
0
                return janet_wrap_nil();
15532
0
            JanetFile *iofile = abstract;
15533
0
            if (iofile->flags & JANET_FILE_CLOSED) {
15534
0
                janet_panic("cannot print to closed file");
15535
0
            }
15536
0
            io_assert_writeable(iofile);
15537
0
            f = iofile->file;
15538
0
            break;
15539
0
        }
15540
0
    }
15541
0
    JanetBuffer *buf = janet_buffer(10);
15542
0
    janet_buffer_format(buf, fmt, offset, argc, argv);
15543
0
    if (newline) janet_buffer_push_u8(buf, '\n');
15544
0
    if (buf->count) {
15545
0
        if (1 != fwrite(buf->data, buf->count, 1, f)) {
15546
0
            janet_panicf("could not print %d bytes to file", buf->count);
15547
0
        }
15548
0
    }
15549
    /* Clear buffer to make things easier for GC */
15550
0
    buf->count = 0;
15551
0
    buf->capacity = 0;
15552
0
    janet_free(buf->data);
15553
0
    buf->data = NULL;
15554
0
    return janet_wrap_nil();
15555
0
}
15556
15557
static Janet cfun_io_printf_impl(int32_t argc, Janet *argv, int newline,
15558
0
                                 const char *name, FILE *dflt_file) {
15559
0
    janet_arity(argc, 1, -1);
15560
0
    Janet x = janet_dyn(name);
15561
0
    return cfun_io_printf_impl_x(argc, argv, newline, dflt_file, 0, x);
15562
15563
0
}
15564
15565
JANET_CORE_FN(cfun_io_printf,
15566
              "(printf fmt & xs)",
15567
0
              "Prints output formatted as if with `(string/format fmt ;xs)` to `(dyn :out stdout)` with a trailing newline.") {
15568
0
    return cfun_io_printf_impl(argc, argv, 1, "out", stdout);
15569
0
}
15570
15571
JANET_CORE_FN(cfun_io_prinf,
15572
              "(prinf fmt & xs)",
15573
0
              "Like `printf` but with no trailing newline.") {
15574
0
    return cfun_io_printf_impl(argc, argv, 0, "out", stdout);
15575
0
}
15576
15577
JANET_CORE_FN(cfun_io_eprintf,
15578
              "(eprintf fmt & xs)",
15579
0
              "Prints output formatted as if with `(string/format fmt ;xs)` to `(dyn :err stderr)` with a trailing newline.") {
15580
0
    return cfun_io_printf_impl(argc, argv, 1, "err", stderr);
15581
0
}
15582
15583
JANET_CORE_FN(cfun_io_eprinf,
15584
              "(eprinf fmt & xs)",
15585
0
              "Like `eprintf` but with no trailing newline.") {
15586
0
    return cfun_io_printf_impl(argc, argv, 0, "err", stderr);
15587
0
}
15588
15589
JANET_CORE_FN(cfun_io_xprintf,
15590
              "(xprintf to fmt & xs)",
15591
0
              "Like `printf` but prints to an explicit file or value `to`. Returns nil.") {
15592
0
    janet_arity(argc, 2, -1);
15593
0
    return cfun_io_printf_impl_x(argc, argv, 1, NULL, 1, argv[0]);
15594
0
}
15595
15596
JANET_CORE_FN(cfun_io_xprinf,
15597
              "(xprinf to fmt & xs)",
15598
0
              "Like `prinf` but prints to an explicit file or value `to`. Returns nil.") {
15599
0
    janet_arity(argc, 2, -1);
15600
0
    return cfun_io_printf_impl_x(argc, argv, 0, NULL, 1, argv[0]);
15601
0
}
15602
15603
0
static void janet_flusher(const char *name, FILE *dflt_file) {
15604
0
    Janet x = janet_dyn(name);
15605
0
    switch (janet_type(x)) {
15606
0
        default:
15607
0
            break;
15608
0
        case JANET_NIL:
15609
0
            fflush(dflt_file);
15610
0
            break;
15611
0
        case JANET_ABSTRACT: {
15612
0
            void *abstract = janet_unwrap_abstract(x);
15613
0
            if (janet_abstract_type(abstract) != &janet_file_type) break;
15614
0
            JanetFile *iofile = abstract;
15615
0
            fflush(iofile->file);
15616
0
            break;
15617
0
        }
15618
0
    }
15619
0
}
15620
15621
JANET_CORE_FN(cfun_io_flush,
15622
              "(flush)",
15623
0
              "Flush `(dyn :out stdout)` if it is a file, otherwise do nothing.") {
15624
0
    janet_fixarity(argc, 0);
15625
0
    (void) argv;
15626
0
    janet_flusher("out", stdout);
15627
0
    return janet_wrap_nil();
15628
0
}
15629
15630
JANET_CORE_FN(cfun_io_eflush,
15631
              "(eflush)",
15632
0
              "Flush `(dyn :err stderr)` if it is a file, otherwise do nothing.") {
15633
0
    janet_fixarity(argc, 0);
15634
0
    (void) argv;
15635
0
    janet_flusher("err", stderr);
15636
0
    return janet_wrap_nil();
15637
0
}
15638
15639
0
void janet_dynprintf(const char *name, FILE *dflt_file, const char *format, ...) {
15640
0
    va_list args;
15641
0
    va_start(args, format);
15642
0
    Janet x = janet_dyn(name);
15643
0
    JanetType xtype = janet_type(x);
15644
0
    switch (xtype) {
15645
0
        default:
15646
            /* Other values simply do nothing */
15647
0
            break;
15648
0
        case JANET_NIL:
15649
0
        case JANET_ABSTRACT: {
15650
0
            FILE *f = dflt_file;
15651
0
            JanetBuffer buffer;
15652
0
            int32_t len = 0;
15653
0
            while (format[len]) len++;
15654
0
            janet_buffer_init(&buffer, len);
15655
0
            janet_formatbv(&buffer, format, args);
15656
0
            if (xtype == JANET_ABSTRACT) {
15657
0
                void *abstract = janet_unwrap_abstract(x);
15658
0
                if (janet_abstract_type(abstract) != &janet_file_type)
15659
0
                    break;
15660
0
                JanetFile *iofile = abstract;
15661
0
                io_assert_writeable(iofile);
15662
0
                f = iofile->file;
15663
0
            }
15664
0
            fwrite(buffer.data, buffer.count, 1, f);
15665
0
            janet_buffer_deinit(&buffer);
15666
0
            break;
15667
0
        }
15668
0
        case JANET_FUNCTION: {
15669
0
            JanetFunction *fun = janet_unwrap_function(x);
15670
0
            int32_t len = 0;
15671
0
            while (format[len]) len++;
15672
0
            JanetBuffer *buf = janet_buffer(len);
15673
0
            janet_formatbv(buf, format, args);
15674
0
            Janet args[1] = { janet_wrap_buffer(buf) };
15675
0
            janet_call(fun, 1, args);
15676
0
            break;
15677
0
        }
15678
0
        case JANET_BUFFER:
15679
0
            janet_formatbv(janet_unwrap_buffer(x), format, args);
15680
0
            break;
15681
0
    }
15682
0
    va_end(args);
15683
0
    return;
15684
0
}
15685
15686
/* C API */
15687
15688
0
JanetFile *janet_getjfile(const Janet *argv, int32_t n) {
15689
0
    return janet_getabstract(argv, n, &janet_file_type);
15690
0
}
15691
15692
0
FILE *janet_getfile(const Janet *argv, int32_t n, int32_t *flags) {
15693
0
    JanetFile *iof = janet_getabstract(argv, n, &janet_file_type);
15694
0
    if (NULL != flags) *flags = iof->flags;
15695
0
    return iof->file;
15696
0
}
15697
15698
0
JanetFile *janet_makejfile(FILE *f, int32_t flags) {
15699
0
    return makef(f, flags);
15700
0
}
15701
15702
0
Janet janet_makefile(FILE *f, int32_t flags) {
15703
0
    return janet_wrap_abstract(makef(f, flags));
15704
0
}
15705
15706
0
JanetAbstract janet_checkfile(Janet j) {
15707
0
    return janet_checkabstract(j, &janet_file_type);
15708
0
}
15709
15710
0
FILE *janet_unwrapfile(Janet j, int32_t *flags) {
15711
0
    JanetFile *iof = janet_unwrap_abstract(j);
15712
0
    if (NULL != flags) *flags = iof->flags;
15713
0
    return iof->file;
15714
0
}
15715
15716
/* Module entry point */
15717
0
void janet_lib_io(JanetTable *env) {
15718
0
    JanetRegExt io_cfuns[] = {
15719
0
        JANET_CORE_REG("print", cfun_io_print),
15720
0
        JANET_CORE_REG("prin", cfun_io_prin),
15721
0
        JANET_CORE_REG("printf", cfun_io_printf),
15722
0
        JANET_CORE_REG("prinf", cfun_io_prinf),
15723
0
        JANET_CORE_REG("eprin", cfun_io_eprin),
15724
0
        JANET_CORE_REG("eprint", cfun_io_eprint),
15725
0
        JANET_CORE_REG("eprintf", cfun_io_eprintf),
15726
0
        JANET_CORE_REG("eprinf", cfun_io_eprinf),
15727
0
        JANET_CORE_REG("xprint", cfun_io_xprint),
15728
0
        JANET_CORE_REG("xprin", cfun_io_xprin),
15729
0
        JANET_CORE_REG("xprintf", cfun_io_xprintf),
15730
0
        JANET_CORE_REG("xprinf", cfun_io_xprinf),
15731
0
        JANET_CORE_REG("flush", cfun_io_flush),
15732
0
        JANET_CORE_REG("eflush", cfun_io_eflush),
15733
0
        JANET_CORE_REG("file/temp", cfun_io_temp),
15734
0
        JANET_CORE_REG("file/open", cfun_io_fopen),
15735
0
        JANET_CORE_REG("file/close", cfun_io_fclose),
15736
0
        JANET_CORE_REG("file/read", cfun_io_fread),
15737
0
        JANET_CORE_REG("file/write", cfun_io_fwrite),
15738
0
        JANET_CORE_REG("file/flush", cfun_io_fflush),
15739
0
        JANET_CORE_REG("file/seek", cfun_io_fseek),
15740
0
        JANET_CORE_REG("file/tell", cfun_io_ftell),
15741
0
        JANET_REG_END
15742
0
    };
15743
0
    janet_core_cfuns_ext(env, NULL, io_cfuns);
15744
0
    janet_register_abstract_type(&janet_file_type);
15745
0
    int default_flags = JANET_FILE_NOT_CLOSEABLE | JANET_FILE_SERIALIZABLE;
15746
    /* stdout */
15747
0
    JANET_CORE_DEF(env, "stdout",
15748
0
                   janet_makefile(stdout, JANET_FILE_APPEND | default_flags),
15749
0
                   "The standard output file.");
15750
    /* stderr */
15751
0
    JANET_CORE_DEF(env, "stderr",
15752
0
                   janet_makefile(stderr, JANET_FILE_APPEND | default_flags),
15753
0
                   "The standard error file.");
15754
    /* stdin */
15755
0
    JANET_CORE_DEF(env, "stdin",
15756
0
                   janet_makefile(stdin, JANET_FILE_READ | default_flags),
15757
0
                   "The standard input file.");
15758
15759
0
}
15760
15761
15762
/* src/core/marsh.c */
15763
#line 0 "src/core/marsh.c"
15764
15765
/*
15766
* Copyright (c) 2023 Calvin Rose
15767
*
15768
* Permission is hereby granted, free of charge, to any person obtaining a copy
15769
* of this software and associated documentation files (the "Software"), to
15770
* deal in the Software without restriction, including without limitation the
15771
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
15772
* sell copies of the Software, and to permit persons to whom the Software is
15773
* furnished to do so, subject to the following conditions:
15774
*
15775
* The above copyright notice and this permission notice shall be included in
15776
* all copies or substantial portions of the Software.
15777
*
15778
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15779
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15780
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
15781
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
15782
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
15783
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
15784
* IN THE SOFTWARE.
15785
*/
15786
15787
#ifndef JANET_AMALG
15788
#include "features.h"
15789
#include <janet.h>
15790
#include "state.h"
15791
#include "vector.h"
15792
#include "gc.h"
15793
#include "fiber.h"
15794
#include "util.h"
15795
#endif
15796
15797
typedef struct {
15798
    JanetBuffer *buf;
15799
    JanetTable seen;
15800
    JanetTable *rreg;
15801
    JanetFuncEnv **seen_envs;
15802
    JanetFuncDef **seen_defs;
15803
    int32_t nextid;
15804
    int maybe_cycles;
15805
} MarshalState;
15806
15807
/* Lead bytes in marshaling protocol */
15808
enum {
15809
    LB_REAL = 200,
15810
    LB_NIL, /* 201 */
15811
    LB_FALSE, /* 202 */
15812
    LB_TRUE,  /* 203 */
15813
    LB_FIBER, /* 204 */
15814
    LB_INTEGER, /* 205 */
15815
    LB_STRING, /* 206 */
15816
    LB_SYMBOL, /* 207 */
15817
    LB_KEYWORD, /* 208 */
15818
    LB_ARRAY, /* 209 */
15819
    LB_TUPLE, /* 210 */
15820
    LB_TABLE, /* 211 */
15821
    LB_TABLE_PROTO, /* 212 */
15822
    LB_STRUCT, /* 213 */
15823
    LB_BUFFER, /* 214 */
15824
    LB_FUNCTION, /* 215 */
15825
    LB_REGISTRY, /* 216 */
15826
    LB_ABSTRACT, /* 217 */
15827
    LB_REFERENCE, /* 218 */
15828
    LB_FUNCENV_REF, /* 219 */
15829
    LB_FUNCDEF_REF, /* 220 */
15830
    LB_UNSAFE_CFUNCTION, /* 221 */
15831
    LB_UNSAFE_POINTER, /* 222 */
15832
    LB_STRUCT_PROTO, /* 223 */
15833
#ifdef JANET_EV
15834
    LB_THREADED_ABSTRACT, /* 224 */
15835
    LB_POINTER_BUFFER, /* 224 */
15836
#endif
15837
} LeadBytes;
15838
15839
/* Helper to look inside an entry in an environment */
15840
0
static Janet entry_getval(Janet env_entry) {
15841
0
    if (janet_checktype(env_entry, JANET_TABLE)) {
15842
0
        JanetTable *entry = janet_unwrap_table(env_entry);
15843
0
        Janet checkval = janet_table_get(entry, janet_ckeywordv("value"));
15844
0
        if (janet_checktype(checkval, JANET_NIL)) {
15845
0
            checkval = janet_table_get(entry, janet_ckeywordv("ref"));
15846
0
        }
15847
0
        return checkval;
15848
0
    } else if (janet_checktype(env_entry, JANET_STRUCT)) {
15849
0
        const JanetKV *entry = janet_unwrap_struct(env_entry);
15850
0
        Janet checkval = janet_struct_get(entry, janet_ckeywordv("value"));
15851
0
        if (janet_checktype(checkval, JANET_NIL)) {
15852
0
            checkval = janet_struct_get(entry, janet_ckeywordv("ref"));
15853
0
        }
15854
0
        return checkval;
15855
0
    } else {
15856
0
        return janet_wrap_nil();
15857
0
    }
15858
0
}
15859
15860
/* Merge values from an environment into an existing lookup table. */
15861
0
void janet_env_lookup_into(JanetTable *renv, JanetTable *env, const char *prefix, int recurse) {
15862
0
    while (env) {
15863
0
        for (int32_t i = 0; i < env->capacity; i++) {
15864
0
            if (janet_checktype(env->data[i].key, JANET_SYMBOL)) {
15865
0
                if (prefix) {
15866
0
                    int32_t prelen = (int32_t) strlen(prefix);
15867
0
                    const uint8_t *oldsym = janet_unwrap_symbol(env->data[i].key);
15868
0
                    int32_t oldlen = janet_string_length(oldsym);
15869
0
                    uint8_t *symbuf = janet_smalloc(prelen + oldlen);
15870
0
                    safe_memcpy(symbuf, prefix, prelen);
15871
0
                    safe_memcpy(symbuf + prelen, oldsym, oldlen);
15872
0
                    Janet s = janet_symbolv(symbuf, prelen + oldlen);
15873
0
                    janet_sfree(symbuf);
15874
0
                    janet_table_put(renv, s, entry_getval(env->data[i].value));
15875
0
                } else {
15876
0
                    janet_table_put(renv,
15877
0
                                    env->data[i].key,
15878
0
                                    entry_getval(env->data[i].value));
15879
0
                }
15880
0
            }
15881
0
        }
15882
0
        env = recurse ? env->proto : NULL;
15883
0
    }
15884
0
}
15885
15886
/* Make a forward lookup table from an environment (for unmarshaling) */
15887
0
JanetTable *janet_env_lookup(JanetTable *env) {
15888
0
    JanetTable *renv = janet_table(env->count);
15889
0
    janet_env_lookup_into(renv, env, NULL, 1);
15890
0
    return renv;
15891
0
}
15892
15893
/* Marshal an integer onto the buffer */
15894
0
static void pushint(MarshalState *st, int32_t x) {
15895
0
    if (x >= 0 && x < 128) {
15896
0
        janet_buffer_push_u8(st->buf, x);
15897
0
    } else if (x <= 8191 && x >= -8192) {
15898
0
        uint8_t intbuf[2];
15899
0
        intbuf[0] = ((x >> 8) & 0x3F) | 0x80;
15900
0
        intbuf[1] = x & 0xFF;
15901
0
        janet_buffer_push_bytes(st->buf, intbuf, 2);
15902
0
    } else {
15903
0
        uint8_t intbuf[5];
15904
0
        intbuf[0] = LB_INTEGER;
15905
0
        intbuf[1] = (x >> 24) & 0xFF;
15906
0
        intbuf[2] = (x >> 16) & 0xFF;
15907
0
        intbuf[3] = (x >> 8) & 0xFF;
15908
0
        intbuf[4] = x & 0xFF;
15909
0
        janet_buffer_push_bytes(st->buf, intbuf, 5);
15910
0
    }
15911
0
}
15912
15913
0
static void pushbyte(MarshalState *st, uint8_t b) {
15914
0
    janet_buffer_push_u8(st->buf, b);
15915
0
}
15916
15917
0
static void pushbytes(MarshalState *st, const uint8_t *bytes, int32_t len) {
15918
0
    janet_buffer_push_bytes(st->buf, bytes, len);
15919
0
}
15920
15921
0
static void pushpointer(MarshalState *st, void *ptr) {
15922
0
    janet_buffer_push_bytes(st->buf, (const uint8_t *) &ptr, sizeof(ptr));
15923
0
}
15924
15925
/* Marshal a size_t onto the buffer */
15926
0
static void push64(MarshalState *st, uint64_t x) {
15927
0
    if (x <= 0xF0) {
15928
        /* Single byte */
15929
0
        pushbyte(st, (uint8_t) x);
15930
0
    } else {
15931
        /* Multibyte, little endian */
15932
0
        uint8_t bytes[9];
15933
0
        int nbytes = 0;
15934
0
        while (x) {
15935
0
            bytes[++nbytes] = x & 0xFF;
15936
0
            x >>= 8;
15937
0
        }
15938
0
        bytes[0] = 0xF0 + nbytes;
15939
0
        pushbytes(st, bytes, nbytes + 1);
15940
0
    }
15941
0
}
15942
15943
/* Forward declaration to enable mutual recursion. */
15944
static void marshal_one(MarshalState *st, Janet x, int flags);
15945
static void marshal_one_fiber(MarshalState *st, JanetFiber *fiber, int flags);
15946
static void marshal_one_def(MarshalState *st, JanetFuncDef *def, int flags);
15947
static void marshal_one_env(MarshalState *st, JanetFuncEnv *env, int flags);
15948
15949
/* Prevent stack overflows */
15950
0
#define MARSH_STACKCHECK if ((flags & 0xFFFF) > JANET_RECURSION_GUARD) janet_panic("stack overflow")
15951
15952
/* Marshal a function env */
15953
0
static void marshal_one_env(MarshalState *st, JanetFuncEnv *env, int flags) {
15954
0
    MARSH_STACKCHECK;
15955
0
    for (int32_t i = 0; i < janet_v_count(st->seen_envs); i++) {
15956
0
        if (st->seen_envs[i] == env) {
15957
0
            pushbyte(st, LB_FUNCENV_REF);
15958
0
            pushint(st, i);
15959
0
            return;
15960
0
        }
15961
0
    }
15962
0
    janet_env_valid(env);
15963
0
    janet_v_push(st->seen_envs, env);
15964
0
    if (env->offset > 0 && (JANET_STATUS_ALIVE == janet_fiber_status(env->as.fiber))) {
15965
0
        pushint(st, 0);
15966
0
        pushint(st, env->length);
15967
0
        Janet *values = env->as.fiber->data + env->offset;
15968
0
        uint32_t *bitset = janet_stack_frame(values)->func->def->closure_bitset;
15969
0
        for (int32_t i = 0; i < env->length; i++) {
15970
0
            if (1 & (bitset[i >> 5] >> (i & 0x1F))) {
15971
0
                marshal_one(st, values[i], flags + 1);
15972
0
            } else {
15973
0
                pushbyte(st, LB_NIL);
15974
0
            }
15975
0
        }
15976
0
    } else {
15977
0
        janet_env_maybe_detach(env);
15978
0
        pushint(st, env->offset);
15979
0
        pushint(st, env->length);
15980
0
        if (env->offset > 0) {
15981
            /* On stack variant */
15982
0
            marshal_one(st, janet_wrap_fiber(env->as.fiber), flags + 1);
15983
0
        } else {
15984
            /* Off stack variant */
15985
0
            for (int32_t i = 0; i < env->length; i++)
15986
0
                marshal_one(st, env->as.values[i], flags + 1);
15987
0
        }
15988
0
    }
15989
0
}
15990
15991
/* Marshal a sequence of u32s */
15992
0
static void janet_marshal_u32s(MarshalState *st, const uint32_t *u32s, int32_t n) {
15993
0
    for (int32_t i = 0; i < n; i++) {
15994
0
        pushbyte(st, u32s[i] & 0xFF);
15995
0
        pushbyte(st, (u32s[i] >> 8) & 0xFF);
15996
0
        pushbyte(st, (u32s[i] >> 16) & 0xFF);
15997
0
        pushbyte(st, (u32s[i] >> 24) & 0xFF);
15998
0
    }
15999
0
}
16000
16001
/* Marshal a function def */
16002
0
static void marshal_one_def(MarshalState *st, JanetFuncDef *def, int flags) {
16003
0
    MARSH_STACKCHECK;
16004
0
    for (int32_t i = 0; i < janet_v_count(st->seen_defs); i++) {
16005
0
        if (st->seen_defs[i] == def) {
16006
0
            pushbyte(st, LB_FUNCDEF_REF);
16007
0
            pushint(st, i);
16008
0
            return;
16009
0
        }
16010
0
    }
16011
    /* Add to lookup */
16012
0
    janet_v_push(st->seen_defs, def);
16013
0
    pushint(st, def->flags);
16014
0
    pushint(st, def->slotcount);
16015
0
    pushint(st, def->arity);
16016
0
    pushint(st, def->min_arity);
16017
0
    pushint(st, def->max_arity);
16018
0
    pushint(st, def->constants_length);
16019
0
    pushint(st, def->bytecode_length);
16020
0
    if (def->flags & JANET_FUNCDEF_FLAG_HASENVS)
16021
0
        pushint(st, def->environments_length);
16022
0
    if (def->flags & JANET_FUNCDEF_FLAG_HASDEFS)
16023
0
        pushint(st, def->defs_length);
16024
0
    if (def->flags & JANET_FUNCDEF_FLAG_HASSYMBOLMAP)
16025
0
        pushint(st, def->symbolmap_length);
16026
0
    if (def->flags & JANET_FUNCDEF_FLAG_HASNAME)
16027
0
        marshal_one(st, janet_wrap_string(def->name), flags);
16028
0
    if (def->flags & JANET_FUNCDEF_FLAG_HASSOURCE)
16029
0
        marshal_one(st, janet_wrap_string(def->source), flags);
16030
16031
    /* marshal constants */
16032
0
    for (int32_t i = 0; i < def->constants_length; i++)
16033
0
        marshal_one(st, def->constants[i], flags);
16034
16035
    /* Marshal symbol map, if needed */
16036
0
    for (int32_t i = 0; i < def->symbolmap_length; i++) {
16037
0
        pushint(st, (int32_t) def->symbolmap[i].birth_pc);
16038
0
        pushint(st, (int32_t) def->symbolmap[i].death_pc);
16039
0
        pushint(st, (int32_t) def->symbolmap[i].slot_index);
16040
0
        marshal_one(st, janet_wrap_symbol(def->symbolmap[i].symbol), flags);
16041
0
    }
16042
16043
    /* marshal the bytecode */
16044
0
    janet_marshal_u32s(st, def->bytecode, def->bytecode_length);
16045
16046
    /* marshal the environments if needed */
16047
0
    for (int32_t i = 0; i < def->environments_length; i++)
16048
0
        pushint(st, def->environments[i]);
16049
16050
    /* marshal the sub funcdefs if needed */
16051
0
    for (int32_t i = 0; i < def->defs_length; i++)
16052
0
        marshal_one_def(st, def->defs[i], flags + 1);
16053
16054
    /* marshal source maps if needed */
16055
0
    if (def->flags & JANET_FUNCDEF_FLAG_HASSOURCEMAP) {
16056
0
        int32_t current = 0;
16057
0
        for (int32_t i = 0; i < def->bytecode_length; i++) {
16058
0
            JanetSourceMapping map = def->sourcemap[i];
16059
0
            pushint(st, map.line - current);
16060
0
            pushint(st, map.column);
16061
0
            current = map.line;
16062
0
        }
16063
0
    }
16064
16065
    /* Marshal closure bitset, if needed */
16066
0
    if (def->flags & JANET_FUNCDEF_FLAG_HASCLOBITSET) {
16067
0
        janet_marshal_u32s(st, def->closure_bitset, ((def->slotcount + 31) >> 5));
16068
0
    }
16069
0
}
16070
16071
0
#define JANET_FIBER_FLAG_HASCHILD (1 << 29)
16072
0
#define JANET_FIBER_FLAG_HASENV   (1 << 30)
16073
0
#define JANET_STACKFRAME_HASENV   (INT32_MIN)
16074
16075
/* Marshal a fiber */
16076
0
static void marshal_one_fiber(MarshalState *st, JanetFiber *fiber, int flags) {
16077
0
    MARSH_STACKCHECK;
16078
0
    int32_t fflags = fiber->flags;
16079
0
    if (fiber->child) fflags |= JANET_FIBER_FLAG_HASCHILD;
16080
0
    if (fiber->env) fflags |= JANET_FIBER_FLAG_HASENV;
16081
0
    if (janet_fiber_status(fiber) == JANET_STATUS_ALIVE)
16082
0
        janet_panic("cannot marshal alive fiber");
16083
0
    pushint(st, fflags);
16084
0
    pushint(st, fiber->frame);
16085
0
    pushint(st, fiber->stackstart);
16086
0
    pushint(st, fiber->stacktop);
16087
0
    pushint(st, fiber->maxstack);
16088
    /* Do frames */
16089
0
    int32_t i = fiber->frame;
16090
0
    int32_t j = fiber->stackstart - JANET_FRAME_SIZE;
16091
0
    while (i > 0) {
16092
0
        JanetStackFrame *frame = (JanetStackFrame *)(fiber->data + i - JANET_FRAME_SIZE);
16093
0
        if (frame->env) frame->flags |= JANET_STACKFRAME_HASENV;
16094
0
        if (!frame->func) janet_panic("cannot marshal fiber with c stackframe");
16095
0
        pushint(st, frame->flags);
16096
0
        pushint(st, frame->prevframe);
16097
0
        int32_t pcdiff = (int32_t)(frame->pc - frame->func->def->bytecode);
16098
0
        pushint(st, pcdiff);
16099
0
        marshal_one(st, janet_wrap_function(frame->func), flags + 1);
16100
0
        if (frame->env) marshal_one_env(st, frame->env, flags + 1);
16101
        /* Marshal all values in the stack frame */
16102
0
        for (int32_t k = i; k < j; k++)
16103
0
            marshal_one(st, fiber->data[k], flags + 1);
16104
0
        j = i - JANET_FRAME_SIZE;
16105
0
        i = frame->prevframe;
16106
0
    }
16107
0
    if (fiber->env) {
16108
0
        marshal_one(st, janet_wrap_table(fiber->env), flags + 1);
16109
0
    }
16110
0
    if (fiber->child)
16111
0
        marshal_one(st, janet_wrap_fiber(fiber->child), flags + 1);
16112
0
    marshal_one(st, fiber->last_value, flags + 1);
16113
0
}
16114
16115
0
void janet_marshal_size(JanetMarshalContext *ctx, size_t value) {
16116
0
    janet_marshal_int64(ctx, (int64_t) value);
16117
0
}
16118
16119
0
void janet_marshal_int64(JanetMarshalContext *ctx, int64_t value) {
16120
0
    MarshalState *st = (MarshalState *)(ctx->m_state);
16121
0
    push64(st, (uint64_t) value);
16122
0
}
16123
16124
0
void janet_marshal_int(JanetMarshalContext *ctx, int32_t value) {
16125
0
    MarshalState *st = (MarshalState *)(ctx->m_state);
16126
0
    pushint(st, value);
16127
0
}
16128
16129
0
void janet_marshal_byte(JanetMarshalContext *ctx, uint8_t value) {
16130
0
    MarshalState *st = (MarshalState *)(ctx->m_state);
16131
0
    pushbyte(st, value);
16132
0
}
16133
16134
0
void janet_marshal_bytes(JanetMarshalContext *ctx, const uint8_t *bytes, size_t len) {
16135
0
    MarshalState *st = (MarshalState *)(ctx->m_state);
16136
0
    if (len > INT32_MAX) janet_panic("size_t too large to fit in buffer");
16137
0
    pushbytes(st, bytes, (int32_t) len);
16138
0
}
16139
16140
0
void janet_marshal_janet(JanetMarshalContext *ctx, Janet x) {
16141
0
    MarshalState *st = (MarshalState *)(ctx->m_state);
16142
0
    marshal_one(st, x, ctx->flags + 1);
16143
0
}
16144
16145
0
void janet_marshal_abstract(JanetMarshalContext *ctx, void *abstract) {
16146
0
    MarshalState *st = (MarshalState *)(ctx->m_state);
16147
0
    if (st->maybe_cycles) {
16148
0
        janet_table_put(&st->seen,
16149
0
                        janet_wrap_abstract(abstract),
16150
0
                        janet_wrap_integer(st->nextid++));
16151
0
    }
16152
0
}
16153
16154
#define MARK_SEEN() \
16155
0
    do { if (st->maybe_cycles) janet_table_put(&st->seen, x, janet_wrap_integer(st->nextid++)); } while (0)
16156
16157
0
static void marshal_one_abstract(MarshalState *st, Janet x, int flags) {
16158
0
    void *abstract = janet_unwrap_abstract(x);
16159
0
#ifdef JANET_EV
16160
    /* Threaded abstract types get passed through as pointers in the unsafe mode */
16161
0
    if ((flags & JANET_MARSHAL_UNSAFE) &&
16162
0
            (JANET_MEMORY_THREADED_ABSTRACT == (janet_abstract_head(abstract)->gc.flags & JANET_MEM_TYPEBITS))) {
16163
16164
        /* Increment refcount before sending message. This prevents a "death in transit" problem
16165
         * where a message is garbage collected while in transit between two threads - i.e., the sending threads
16166
         * loses the reference and runs a garbage collection before the receiving thread gets the message. */
16167
0
        janet_abstract_incref(abstract);
16168
0
        pushbyte(st, LB_THREADED_ABSTRACT);
16169
0
        pushbytes(st, (uint8_t *) &abstract, sizeof(abstract));
16170
0
        MARK_SEEN();
16171
0
        return;
16172
0
    }
16173
0
#endif
16174
0
    const JanetAbstractType *at = janet_abstract_type(abstract);
16175
0
    if (at->marshal) {
16176
0
        pushbyte(st, LB_ABSTRACT);
16177
0
        marshal_one(st, janet_csymbolv(at->name), flags + 1);
16178
0
        JanetMarshalContext context = {st, NULL, flags, NULL, at};
16179
0
        at->marshal(abstract, &context);
16180
0
    } else {
16181
0
        janet_panicf("cannot marshal %p", x);
16182
0
    }
16183
0
}
16184
16185
/* The main body of the marshaling function. Is the main
16186
 * entry point for the mutually recursive functions. */
16187
0
static void marshal_one(MarshalState *st, Janet x, int flags) {
16188
0
    MARSH_STACKCHECK;
16189
0
    JanetType type = janet_type(x);
16190
16191
    /* Check simple primitives (non reference types, no benefit from memoization) */
16192
0
    switch (type) {
16193
0
        default:
16194
0
            break;
16195
0
        case JANET_NIL:
16196
0
            pushbyte(st, LB_NIL);
16197
0
            return;
16198
0
        case JANET_BOOLEAN:
16199
0
            pushbyte(st, janet_unwrap_boolean(x) ? LB_TRUE : LB_FALSE);
16200
0
            return;
16201
0
        case JANET_NUMBER: {
16202
0
            double xval = janet_unwrap_number(x);
16203
0
            if (janet_checkintrange(xval)) {
16204
0
                pushint(st, (int32_t) xval);
16205
0
                return;
16206
0
            }
16207
0
            break;
16208
0
        }
16209
0
    }
16210
16211
    /* Check reference and registry value */
16212
0
    {
16213
0
        Janet check;
16214
0
        if (st->maybe_cycles) {
16215
0
            check = janet_table_get(&st->seen, x);
16216
0
            if (janet_checkint(check)) {
16217
0
                pushbyte(st, LB_REFERENCE);
16218
0
                pushint(st, janet_unwrap_integer(check));
16219
0
                return;
16220
0
            }
16221
0
        }
16222
0
        if (st->rreg) {
16223
0
            check = janet_table_get(st->rreg, x);
16224
0
            if (janet_checktype(check, JANET_SYMBOL)) {
16225
0
                MARK_SEEN();
16226
0
                const uint8_t *regname = janet_unwrap_symbol(check);
16227
0
                pushbyte(st, LB_REGISTRY);
16228
0
                pushint(st, janet_string_length(regname));
16229
0
                pushbytes(st, regname, janet_string_length(regname));
16230
0
                return;
16231
0
            }
16232
0
        }
16233
0
    }
16234
16235
    /* Reference types */
16236
0
    switch (type) {
16237
0
        case JANET_NUMBER: {
16238
0
            union {
16239
0
                double d;
16240
0
                uint8_t bytes[8];
16241
0
            } u;
16242
0
            u.d = janet_unwrap_number(x);
16243
#ifdef JANET_BIG_ENDIAN
16244
            /* Swap byte order */
16245
            uint8_t temp;
16246
            temp = u.bytes[7];
16247
            u.bytes[7] = u.bytes[0];
16248
            u.bytes[0] = temp;
16249
            temp = u.bytes[6];
16250
            u.bytes[6] = u.bytes[1];
16251
            u.bytes[1] = temp;
16252
            temp = u.bytes[5];
16253
            u.bytes[5] = u.bytes[2];
16254
            u.bytes[2] = temp;
16255
            temp = u.bytes[4];
16256
            u.bytes[4] = u.bytes[3];
16257
            u.bytes[3] = temp;
16258
#endif
16259
0
            pushbyte(st, LB_REAL);
16260
0
            pushbytes(st, u.bytes, 8);
16261
0
            MARK_SEEN();
16262
0
            return;
16263
0
        }
16264
0
        case JANET_STRING:
16265
0
        case JANET_SYMBOL:
16266
0
        case JANET_KEYWORD: {
16267
0
            const uint8_t *str = janet_unwrap_string(x);
16268
0
            int32_t length = janet_string_length(str);
16269
            /* Record reference */
16270
0
            MARK_SEEN();
16271
0
            uint8_t lb = (type == JANET_STRING) ? LB_STRING :
16272
0
                         (type == JANET_SYMBOL) ? LB_SYMBOL :
16273
0
                         LB_KEYWORD;
16274
0
            pushbyte(st, lb);
16275
0
            pushint(st, length);
16276
0
            pushbytes(st, str, length);
16277
0
            return;
16278
0
        }
16279
0
        case JANET_BUFFER: {
16280
0
            JanetBuffer *buffer = janet_unwrap_buffer(x);
16281
            /* Record reference */
16282
0
            MARK_SEEN();
16283
0
#ifdef JANET_EV
16284
0
            if ((flags & JANET_MARSHAL_UNSAFE) &&
16285
0
                    (buffer->gc.flags & JANET_BUFFER_FLAG_NO_REALLOC)) {
16286
0
                pushbyte(st, LB_POINTER_BUFFER);
16287
0
                pushint(st, buffer->count);
16288
0
                pushint(st, buffer->capacity);
16289
0
                pushpointer(st, buffer->data);
16290
0
                return;
16291
0
            }
16292
0
#endif
16293
0
            pushbyte(st, LB_BUFFER);
16294
0
            pushint(st, buffer->count);
16295
0
            pushbytes(st, buffer->data, buffer->count);
16296
0
            return;
16297
0
        }
16298
0
        case JANET_ARRAY: {
16299
0
            int32_t i;
16300
0
            JanetArray *a = janet_unwrap_array(x);
16301
0
            MARK_SEEN();
16302
0
            pushbyte(st, LB_ARRAY);
16303
0
            pushint(st, a->count);
16304
0
            for (i = 0; i < a->count; i++)
16305
0
                marshal_one(st, a->data[i], flags + 1);
16306
0
            return;
16307
0
        }
16308
0
        case JANET_TUPLE: {
16309
0
            int32_t i, count, flag;
16310
0
            const Janet *tup = janet_unwrap_tuple(x);
16311
0
            count = janet_tuple_length(tup);
16312
0
            flag = janet_tuple_flag(tup) >> 16;
16313
0
            pushbyte(st, LB_TUPLE);
16314
0
            pushint(st, count);
16315
0
            pushint(st, flag);
16316
0
            for (i = 0; i < count; i++)
16317
0
                marshal_one(st, tup[i], flags + 1);
16318
            /* Mark as seen AFTER marshaling */
16319
0
            MARK_SEEN();
16320
0
            return;
16321
0
        }
16322
0
        case JANET_TABLE: {
16323
0
            JanetTable *t = janet_unwrap_table(x);
16324
0
            MARK_SEEN();
16325
0
            pushbyte(st, t->proto ? LB_TABLE_PROTO : LB_TABLE);
16326
0
            pushint(st, t->count);
16327
0
            if (t->proto)
16328
0
                marshal_one(st, janet_wrap_table(t->proto), flags + 1);
16329
0
            for (int32_t i = 0; i < t->capacity; i++) {
16330
0
                if (janet_checktype(t->data[i].key, JANET_NIL))
16331
0
                    continue;
16332
0
                marshal_one(st, t->data[i].key, flags + 1);
16333
0
                marshal_one(st, t->data[i].value, flags + 1);
16334
0
            }
16335
0
            return;
16336
0
        }
16337
0
        case JANET_STRUCT: {
16338
0
            int32_t count;
16339
0
            const JanetKV *struct_ = janet_unwrap_struct(x);
16340
0
            count = janet_struct_length(struct_);
16341
0
            pushbyte(st, janet_struct_proto(struct_) ? LB_STRUCT_PROTO : LB_STRUCT);
16342
0
            pushint(st, count);
16343
0
            if (janet_struct_proto(struct_))
16344
0
                marshal_one(st, janet_wrap_struct(janet_struct_proto(struct_)), flags + 1);
16345
0
            for (int32_t i = 0; i < janet_struct_capacity(struct_); i++) {
16346
0
                if (janet_checktype(struct_[i].key, JANET_NIL))
16347
0
                    continue;
16348
0
                marshal_one(st, struct_[i].key, flags + 1);
16349
0
                marshal_one(st, struct_[i].value, flags + 1);
16350
0
            }
16351
            /* Mark as seen AFTER marshaling */
16352
0
            MARK_SEEN();
16353
0
            return;
16354
0
        }
16355
0
        case JANET_ABSTRACT: {
16356
0
            marshal_one_abstract(st, x, flags);
16357
0
            return;
16358
0
        }
16359
0
        case JANET_FUNCTION: {
16360
0
            pushbyte(st, LB_FUNCTION);
16361
0
            JanetFunction *func = janet_unwrap_function(x);
16362
0
            pushint(st, func->def->environments_length);
16363
            /* Mark seen before reading def */
16364
0
            MARK_SEEN();
16365
0
            marshal_one_def(st, func->def, flags);
16366
0
            for (int32_t i = 0; i < func->def->environments_length; i++)
16367
0
                marshal_one_env(st, func->envs[i], flags + 1);
16368
0
            return;
16369
0
        }
16370
0
        case JANET_FIBER: {
16371
0
            MARK_SEEN();
16372
0
            pushbyte(st, LB_FIBER);
16373
0
            marshal_one_fiber(st, janet_unwrap_fiber(x), flags + 1);
16374
0
            return;
16375
0
        }
16376
0
        case JANET_CFUNCTION: {
16377
0
            if (!(flags & JANET_MARSHAL_UNSAFE)) goto no_registry;
16378
0
            MARK_SEEN();
16379
0
            pushbyte(st, LB_UNSAFE_CFUNCTION);
16380
0
            JanetCFunction cfn = janet_unwrap_cfunction(x);
16381
0
            pushbytes(st, (uint8_t *) &cfn, sizeof(JanetCFunction));
16382
0
            return;
16383
0
        }
16384
0
        case JANET_POINTER: {
16385
0
            if (!(flags & JANET_MARSHAL_UNSAFE)) goto no_registry;
16386
0
            MARK_SEEN();
16387
0
            pushbyte(st, LB_UNSAFE_POINTER);
16388
0
            pushpointer(st, janet_unwrap_pointer(x));
16389
0
            return;
16390
0
        }
16391
0
    no_registry:
16392
0
        default: {
16393
0
            janet_panicf("no registry value and cannot marshal %p", x);
16394
0
        }
16395
0
    }
16396
0
#undef MARK_SEEN
16397
0
}
16398
16399
void janet_marshal(
16400
    JanetBuffer *buf,
16401
    Janet x,
16402
    JanetTable *rreg,
16403
0
    int flags) {
16404
0
    MarshalState st;
16405
0
    st.buf = buf;
16406
0
    st.nextid = 0;
16407
0
    st.seen_defs = NULL;
16408
0
    st.seen_envs = NULL;
16409
0
    st.rreg = rreg;
16410
0
    st.maybe_cycles = !(flags & JANET_MARSHAL_NO_CYCLES);
16411
0
    janet_table_init(&st.seen, 0);
16412
0
    marshal_one(&st, x, flags);
16413
0
    janet_table_deinit(&st.seen);
16414
0
    janet_v_free(st.seen_envs);
16415
0
    janet_v_free(st.seen_defs);
16416
0
}
16417
16418
typedef struct {
16419
    jmp_buf err;
16420
    Janet *lookup;
16421
    JanetTable *reg;
16422
    JanetFuncEnv **lookup_envs;
16423
    JanetFuncDef **lookup_defs;
16424
    const uint8_t *start;
16425
    const uint8_t *end;
16426
} UnmarshalState;
16427
16428
0
#define MARSH_EOS(st, data) do { \
16429
0
    if ((data) >= (st)->end) janet_panic("unexpected end of source");\
16430
0
} while (0)
16431
16432
/* Helper to read a 32 bit integer from an unmarshal state */
16433
0
static int32_t readint(UnmarshalState *st, const uint8_t **atdata) {
16434
0
    const uint8_t *data = *atdata;
16435
0
    int32_t ret;
16436
0
    MARSH_EOS(st, data);
16437
0
    if (*data < 128) {
16438
0
        ret = *data++;
16439
0
    } else if (*data < 192) {
16440
0
        MARSH_EOS(st, data + 1);
16441
0
        uint32_t uret = ((data[0] & 0x3F) << 8) + data[1];
16442
        /* Sign extend 18 MSBs */
16443
0
        uret |= (uret >> 13) ? 0xFFFFC000 : 0;
16444
0
        ret = (int32_t)uret;
16445
0
        data += 2;
16446
0
    } else if (*data == LB_INTEGER) {
16447
0
        MARSH_EOS(st, data + 4);
16448
0
        uint32_t ui = ((uint32_t)(data[1]) << 24) |
16449
0
                      ((uint32_t)(data[2]) << 16) |
16450
0
                      ((uint32_t)(data[3]) << 8) |
16451
0
                      (uint32_t)(data[4]);
16452
0
        ret = (int32_t)ui;
16453
0
        data += 5;
16454
0
    } else {
16455
0
        janet_panicf("expected integer, got byte %x at index %d",
16456
0
                     *data,
16457
0
                     data - st->start);
16458
0
        ret = 0;
16459
0
    }
16460
0
    *atdata = data;
16461
0
    return ret;
16462
0
}
16463
16464
/* Helper to read a natural number (int >= 0). */
16465
0
static int32_t readnat(UnmarshalState *st, const uint8_t **atdata) {
16466
0
    int32_t ret = readint(st, atdata);
16467
0
    if (ret < 0) {
16468
0
        janet_panicf("expected integer >= 0, got %d", ret);
16469
0
    }
16470
0
    return ret;
16471
0
}
16472
16473
/* Helper to read a size_t (up to 8 bytes unsigned). */
16474
0
static uint64_t read64(UnmarshalState *st, const uint8_t **atdata) {
16475
0
    uint64_t ret;
16476
0
    const uint8_t *data = *atdata;
16477
0
    MARSH_EOS(st, data);
16478
0
    if (*data <= 0xF0) {
16479
        /* Single byte */
16480
0
        ret = *data;
16481
0
        *atdata = data + 1;
16482
0
    } else {
16483
        /* Multibyte, little endian */
16484
0
        int nbytes = *data - 0xF0;
16485
0
        ret = 0;
16486
0
        if (nbytes > 8) janet_panic("invalid 64 bit integer");
16487
0
        MARSH_EOS(st, data + nbytes);
16488
0
        for (int i = nbytes; i > 0; i--)
16489
0
            ret = (ret << 8) + data[i];
16490
0
        *atdata = data + nbytes + 1;
16491
0
    }
16492
0
    return ret;
16493
0
}
16494
16495
/* Assert a janet type */
16496
0
static void janet_asserttype(Janet x, JanetType t) {
16497
0
    if (!janet_checktype(x, t)) {
16498
0
        janet_panicf("expected type %T, got %v", 1 << t, x);
16499
0
    }
16500
0
}
16501
16502
/* Forward declarations for mutual recursion */
16503
static const uint8_t *unmarshal_one(
16504
    UnmarshalState *st,
16505
    const uint8_t *data,
16506
    Janet *out,
16507
    int flags);
16508
static const uint8_t *unmarshal_one_env(
16509
    UnmarshalState *st,
16510
    const uint8_t *data,
16511
    JanetFuncEnv **out,
16512
    int flags);
16513
static const uint8_t *unmarshal_one_def(
16514
    UnmarshalState *st,
16515
    const uint8_t *data,
16516
    JanetFuncDef **out,
16517
    int flags);
16518
static const uint8_t *unmarshal_one_fiber(
16519
    UnmarshalState *st,
16520
    const uint8_t *data,
16521
    JanetFiber **out,
16522
    int flags);
16523
16524
/* Unmarshal a funcenv */
16525
static const uint8_t *unmarshal_one_env(
16526
    UnmarshalState *st,
16527
    const uint8_t *data,
16528
    JanetFuncEnv **out,
16529
0
    int flags) {
16530
0
    MARSH_EOS(st, data);
16531
0
    if (*data == LB_FUNCENV_REF) {
16532
0
        data++;
16533
0
        int32_t index = readint(st, &data);
16534
0
        if (index < 0 || index >= janet_v_count(st->lookup_envs))
16535
0
            janet_panicf("invalid funcenv reference %d", index);
16536
0
        *out = st->lookup_envs[index];
16537
0
    } else {
16538
0
        JanetFuncEnv *env = janet_gcalloc(JANET_MEMORY_FUNCENV, sizeof(JanetFuncEnv));
16539
0
        env->length = 0;
16540
0
        env->offset = 0;
16541
0
        env->as.values = NULL;
16542
0
        janet_v_push(st->lookup_envs, env);
16543
0
        int32_t offset = readnat(st, &data);
16544
0
        int32_t length = readnat(st, &data);
16545
0
        if (offset > 0) {
16546
0
            Janet fiberv;
16547
            /* On stack variant */
16548
0
            data = unmarshal_one(st, data, &fiberv, flags);
16549
0
            janet_asserttype(fiberv, JANET_FIBER);
16550
0
            env->as.fiber = janet_unwrap_fiber(fiberv);
16551
            /* Negative offset indicates untrusted input */
16552
0
            env->offset = -offset;
16553
0
        } else {
16554
            /* Off stack variant */
16555
0
            if (length == 0) {
16556
0
                janet_panic("invalid funcenv length");
16557
0
            }
16558
0
            env->as.values = janet_malloc(sizeof(Janet) * (size_t) length);
16559
0
            if (!env->as.values) {
16560
0
                JANET_OUT_OF_MEMORY;
16561
0
            }
16562
0
            env->offset = 0;
16563
0
            for (int32_t i = 0; i < length; i++)
16564
0
                data = unmarshal_one(st, data, env->as.values + i, flags);
16565
0
        }
16566
0
        env->length = length;
16567
0
        *out = env;
16568
0
    }
16569
0
    return data;
16570
0
}
16571
16572
/* Unmarshal a series of u32s */
16573
0
static const uint8_t *janet_unmarshal_u32s(UnmarshalState *st, const uint8_t *data, uint32_t *into, int32_t n) {
16574
0
    for (int32_t i = 0; i < n; i++) {
16575
0
        MARSH_EOS(st, data + 3);
16576
0
        into[i] =
16577
0
            (uint32_t)(data[0]) |
16578
0
            ((uint32_t)(data[1]) << 8) |
16579
0
            ((uint32_t)(data[2]) << 16) |
16580
0
            ((uint32_t)(data[3]) << 24);
16581
0
        data += 4;
16582
0
    }
16583
0
    return data;
16584
0
}
16585
16586
/* Unmarshal a funcdef */
16587
static const uint8_t *unmarshal_one_def(
16588
    UnmarshalState *st,
16589
    const uint8_t *data,
16590
    JanetFuncDef **out,
16591
0
    int flags) {
16592
0
    MARSH_EOS(st, data);
16593
0
    if (*data == LB_FUNCDEF_REF) {
16594
0
        data++;
16595
0
        int32_t index = readint(st, &data);
16596
0
        if (index < 0 || index >= janet_v_count(st->lookup_defs))
16597
0
            janet_panicf("invalid funcdef reference %d", index);
16598
0
        *out = st->lookup_defs[index];
16599
0
    } else {
16600
        /* Initialize with values that will not break garbage collection
16601
         * if unmarshalling fails. */
16602
0
        JanetFuncDef *def = janet_gcalloc(JANET_MEMORY_FUNCDEF, sizeof(JanetFuncDef));
16603
0
        def->environments_length = 0;
16604
0
        def->defs_length = 0;
16605
0
        def->constants_length = 0;
16606
0
        def->bytecode_length = 0;
16607
0
        def->name = NULL;
16608
0
        def->source = NULL;
16609
0
        def->closure_bitset = NULL;
16610
0
        def->defs = NULL;
16611
0
        def->environments = NULL;
16612
0
        def->constants = NULL;
16613
0
        def->bytecode = NULL;
16614
0
        def->sourcemap = NULL;
16615
0
        def->symbolmap = NULL;
16616
0
        def->symbolmap_length = 0;
16617
0
        janet_v_push(st->lookup_defs, def);
16618
16619
        /* Set default lengths to zero */
16620
0
        int32_t bytecode_length = 0;
16621
0
        int32_t constants_length = 0;
16622
0
        int32_t environments_length = 0;
16623
0
        int32_t defs_length = 0;
16624
0
        int32_t symbolmap_length = 0;
16625
16626
        /* Read flags and other fixed values */
16627
0
        def->flags = readint(st, &data);
16628
0
        def->slotcount = readnat(st, &data);
16629
0
        def->arity = readnat(st, &data);
16630
0
        def->min_arity = readnat(st, &data);
16631
0
        def->max_arity = readnat(st, &data);
16632
16633
        /* Read some lengths */
16634
0
        constants_length = readnat(st, &data);
16635
0
        bytecode_length = readnat(st, &data);
16636
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASENVS)
16637
0
            environments_length = readnat(st, &data);
16638
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASDEFS)
16639
0
            defs_length = readnat(st, &data);
16640
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASSYMBOLMAP)
16641
0
            symbolmap_length = readnat(st, &data);
16642
16643
        /* Check name and source (optional) */
16644
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASNAME) {
16645
0
            Janet x;
16646
0
            data = unmarshal_one(st, data, &x, flags + 1);
16647
0
            janet_asserttype(x, JANET_STRING);
16648
0
            def->name = janet_unwrap_string(x);
16649
0
        }
16650
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASSOURCE) {
16651
0
            Janet x;
16652
0
            data = unmarshal_one(st, data, &x, flags + 1);
16653
0
            janet_asserttype(x, JANET_STRING);
16654
0
            def->source = janet_unwrap_string(x);
16655
0
        }
16656
16657
        /* Unmarshal constants */
16658
0
        if (constants_length) {
16659
0
            def->constants = janet_malloc(sizeof(Janet) * constants_length);
16660
0
            if (!def->constants) {
16661
0
                JANET_OUT_OF_MEMORY;
16662
0
            }
16663
0
            for (int32_t i = 0; i < constants_length; i++)
16664
0
                data = unmarshal_one(st, data, def->constants + i, flags + 1);
16665
0
        } else {
16666
0
            def->constants = NULL;
16667
0
        }
16668
0
        def->constants_length = constants_length;
16669
16670
        /* Unmarshal symbol map, if needed */
16671
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASSYMBOLMAP) {
16672
0
            size_t size = sizeof(JanetSymbolMap) * symbolmap_length;
16673
0
            def->symbolmap = janet_malloc(size);
16674
0
            if (def->symbolmap == NULL) {
16675
0
                JANET_OUT_OF_MEMORY;
16676
0
            }
16677
0
            for (int32_t i = 0; i < symbolmap_length; i++) {
16678
0
                def->symbolmap[i].birth_pc = (uint32_t) readint(st, &data);
16679
0
                def->symbolmap[i].death_pc = (uint32_t) readint(st, &data);
16680
0
                def->symbolmap[i].slot_index = (uint32_t) readint(st, &data);
16681
0
                Janet value;
16682
0
                data = unmarshal_one(st, data, &value, flags + 1);
16683
0
                if (!janet_checktype(value, JANET_SYMBOL))
16684
0
                    janet_panic("expected symbol in symbol map");
16685
0
                def->symbolmap[i].symbol = janet_unwrap_symbol(value);
16686
0
            }
16687
0
            def->symbolmap_length = (uint32_t) symbolmap_length;
16688
0
        }
16689
16690
        /* Unmarshal bytecode */
16691
0
        def->bytecode = janet_malloc(sizeof(uint32_t) * bytecode_length);
16692
0
        if (!def->bytecode) {
16693
0
            JANET_OUT_OF_MEMORY;
16694
0
        }
16695
0
        data = janet_unmarshal_u32s(st, data, def->bytecode, bytecode_length);
16696
0
        def->bytecode_length = bytecode_length;
16697
16698
        /* Unmarshal environments */
16699
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASENVS) {
16700
0
            def->environments = janet_calloc(1, sizeof(int32_t) * (size_t) environments_length);
16701
0
            if (!def->environments) {
16702
0
                JANET_OUT_OF_MEMORY;
16703
0
            }
16704
0
            for (int32_t i = 0; i < environments_length; i++) {
16705
0
                def->environments[i] = readint(st, &data);
16706
0
            }
16707
0
        } else {
16708
0
            def->environments = NULL;
16709
0
        }
16710
0
        def->environments_length = environments_length;
16711
16712
        /* Unmarshal sub funcdefs */
16713
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASDEFS) {
16714
0
            def->defs = janet_calloc(1, sizeof(JanetFuncDef *) * (size_t) defs_length);
16715
0
            if (!def->defs) {
16716
0
                JANET_OUT_OF_MEMORY;
16717
0
            }
16718
0
            for (int32_t i = 0; i < defs_length; i++) {
16719
0
                data = unmarshal_one_def(st, data, def->defs + i, flags + 1);
16720
0
            }
16721
0
        } else {
16722
0
            def->defs = NULL;
16723
0
        }
16724
0
        def->defs_length = defs_length;
16725
16726
        /* Unmarshal source maps if needed */
16727
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASSOURCEMAP) {
16728
0
            int32_t current = 0;
16729
0
            def->sourcemap = janet_malloc(sizeof(JanetSourceMapping) * (size_t) bytecode_length);
16730
0
            if (!def->sourcemap) {
16731
0
                JANET_OUT_OF_MEMORY;
16732
0
            }
16733
0
            for (int32_t i = 0; i < bytecode_length; i++) {
16734
0
                current += readint(st, &data);
16735
0
                def->sourcemap[i].line = current;
16736
0
                def->sourcemap[i].column = readint(st, &data);
16737
0
            }
16738
0
        } else {
16739
0
            def->sourcemap = NULL;
16740
0
        }
16741
16742
        /* Unmarshal closure bitset if needed */
16743
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASCLOBITSET) {
16744
0
            int32_t n = (def->slotcount + 31) >> 5;
16745
0
            def->closure_bitset = janet_malloc(sizeof(uint32_t) * (size_t) n);
16746
0
            if (NULL == def->closure_bitset) {
16747
0
                JANET_OUT_OF_MEMORY;
16748
0
            }
16749
0
            data = janet_unmarshal_u32s(st, data, def->closure_bitset, n);
16750
0
        }
16751
16752
        /* Validate */
16753
0
        if (janet_verify(def))
16754
0
            janet_panic("funcdef has invalid bytecode");
16755
16756
        /* Set def */
16757
0
        *out = def;
16758
0
    }
16759
0
    return data;
16760
0
}
16761
16762
/* Unmarshal a fiber */
16763
static const uint8_t *unmarshal_one_fiber(
16764
    UnmarshalState *st,
16765
    const uint8_t *data,
16766
    JanetFiber **out,
16767
0
    int flags) {
16768
16769
    /* Initialize a new fiber with gc friendly defaults */
16770
0
    JanetFiber *fiber = janet_gcalloc(JANET_MEMORY_FIBER, sizeof(JanetFiber));
16771
0
    fiber->flags = 0;
16772
0
    fiber->frame = 0;
16773
0
    fiber->stackstart = 0;
16774
0
    fiber->stacktop = 0;
16775
0
    fiber->capacity = 0;
16776
0
    fiber->maxstack = 0;
16777
0
    fiber->data = NULL;
16778
0
    fiber->child = NULL;
16779
0
    fiber->env = NULL;
16780
0
    fiber->last_value = janet_wrap_nil();
16781
0
#ifdef JANET_EV
16782
0
    fiber->waiting = NULL;
16783
0
    fiber->sched_id = 0;
16784
0
    fiber->supervisor_channel = NULL;
16785
0
#endif
16786
16787
    /* Push fiber to seen stack */
16788
0
    janet_v_push(st->lookup, janet_wrap_fiber(fiber));
16789
16790
    /* Read ints */
16791
0
    int32_t fiber_flags = readint(st, &data);
16792
0
    int32_t frame = readnat(st, &data);
16793
0
    int32_t fiber_stackstart = readnat(st, &data);
16794
0
    int32_t fiber_stacktop = readnat(st, &data);
16795
0
    int32_t fiber_maxstack = readnat(st, &data);
16796
0
    JanetTable *fiber_env = NULL;
16797
16798
    /* Check for bad flags and ints */
16799
0
    if ((int32_t)(frame + JANET_FRAME_SIZE) > fiber_stackstart ||
16800
0
            fiber_stackstart > fiber_stacktop ||
16801
0
            fiber_stacktop > fiber_maxstack) {
16802
0
        janet_panic("fiber has incorrect stack setup");
16803
0
    }
16804
16805
    /* Allocate stack memory */
16806
0
    fiber->capacity = fiber_stacktop + 10;
16807
0
    fiber->data = janet_malloc(sizeof(Janet) * fiber->capacity);
16808
0
    if (!fiber->data) {
16809
0
        JANET_OUT_OF_MEMORY;
16810
0
    }
16811
0
    for (int32_t i = 0; i < fiber->capacity; i++) {
16812
0
        fiber->data[i] = janet_wrap_nil();
16813
0
    }
16814
16815
    /* get frames */
16816
0
    int32_t stack = frame;
16817
0
    int32_t stacktop = fiber_stackstart - JANET_FRAME_SIZE;
16818
0
    while (stack > 0) {
16819
0
        JanetFunction *func = NULL;
16820
0
        JanetFuncDef *def = NULL;
16821
0
        JanetFuncEnv *env = NULL;
16822
0
        int32_t frameflags = readint(st, &data);
16823
0
        int32_t prevframe = readnat(st, &data);
16824
0
        int32_t pcdiff = readnat(st, &data);
16825
16826
        /* Get frame items */
16827
0
        Janet *framestack = fiber->data + stack;
16828
0
        JanetStackFrame *framep = janet_stack_frame(framestack);
16829
16830
        /* Get function */
16831
0
        Janet funcv;
16832
0
        data = unmarshal_one(st, data, &funcv, flags + 1);
16833
0
        janet_asserttype(funcv, JANET_FUNCTION);
16834
0
        func = janet_unwrap_function(funcv);
16835
0
        def = func->def;
16836
16837
        /* Check env */
16838
0
        if (frameflags & JANET_STACKFRAME_HASENV) {
16839
0
            frameflags &= ~JANET_STACKFRAME_HASENV;
16840
0
            data = unmarshal_one_env(st, data, &env, flags + 1);
16841
0
        }
16842
16843
        /* Error checking */
16844
0
        int32_t expected_framesize = def->slotcount;
16845
0
        if (expected_framesize != stacktop - stack) {
16846
0
            janet_panic("fiber stackframe size mismatch");
16847
0
        }
16848
0
        if (pcdiff >= def->bytecode_length) {
16849
0
            janet_panic("fiber stackframe has invalid pc");
16850
0
        }
16851
0
        if ((int32_t)(prevframe + JANET_FRAME_SIZE) > stack) {
16852
0
            janet_panic("fiber stackframe does not align with previous frame");
16853
0
        }
16854
16855
        /* Get stack items */
16856
0
        for (int32_t i = stack; i < stacktop; i++)
16857
0
            data = unmarshal_one(st, data, fiber->data + i, flags + 1);
16858
16859
        /* Set frame */
16860
0
        framep->env = env;
16861
0
        framep->pc = def->bytecode + pcdiff;
16862
0
        framep->prevframe = prevframe;
16863
0
        framep->flags = frameflags;
16864
0
        framep->func = func;
16865
16866
        /* Goto previous frame */
16867
0
        stacktop = stack - JANET_FRAME_SIZE;
16868
0
        stack = prevframe;
16869
0
    }
16870
0
    if (stack < 0) {
16871
0
        janet_panic("fiber has too many stackframes");
16872
0
    }
16873
16874
    /* Check for fiber env */
16875
0
    if (fiber_flags & JANET_FIBER_FLAG_HASENV) {
16876
0
        Janet envv;
16877
0
        fiber_flags &= ~JANET_FIBER_FLAG_HASENV;
16878
0
        data = unmarshal_one(st, data, &envv, flags + 1);
16879
0
        janet_asserttype(envv, JANET_TABLE);
16880
0
        fiber_env = janet_unwrap_table(envv);
16881
0
    }
16882
16883
    /* Check for child fiber */
16884
0
    if (fiber_flags & JANET_FIBER_FLAG_HASCHILD) {
16885
0
        Janet fiberv;
16886
0
        fiber_flags &= ~JANET_FIBER_FLAG_HASCHILD;
16887
0
        data = unmarshal_one(st, data, &fiberv, flags + 1);
16888
0
        janet_asserttype(fiberv, JANET_FIBER);
16889
0
        fiber->child = janet_unwrap_fiber(fiberv);
16890
0
    }
16891
16892
    /* Get the fiber last value */
16893
0
    data = unmarshal_one(st, data, &fiber->last_value, flags + 1);
16894
16895
    /* We have valid fiber, finally construct remaining fields. */
16896
0
    fiber->frame = frame;
16897
0
    fiber->flags = fiber_flags;
16898
0
    fiber->stackstart = fiber_stackstart;
16899
0
    fiber->stacktop = fiber_stacktop;
16900
0
    fiber->maxstack = fiber_maxstack;
16901
0
    fiber->env = fiber_env;
16902
16903
0
    int status = janet_fiber_status(fiber);
16904
0
    if (status < 0 || status > JANET_STATUS_ALIVE) {
16905
0
        janet_panic("invalid fiber status");
16906
0
    }
16907
16908
    /* Return data */
16909
0
    *out = fiber;
16910
0
    return data;
16911
0
}
16912
16913
0
void janet_unmarshal_ensure(JanetMarshalContext *ctx, size_t size) {
16914
0
    UnmarshalState *st = (UnmarshalState *)(ctx->u_state);
16915
0
    MARSH_EOS(st, ctx->data + size);
16916
0
}
16917
16918
0
int32_t janet_unmarshal_int(JanetMarshalContext *ctx) {
16919
0
    UnmarshalState *st = (UnmarshalState *)(ctx->u_state);
16920
0
    return readint(st, &(ctx->data));
16921
0
}
16922
16923
0
size_t janet_unmarshal_size(JanetMarshalContext *ctx) {
16924
0
    return (size_t) janet_unmarshal_int64(ctx);
16925
0
}
16926
16927
0
int64_t janet_unmarshal_int64(JanetMarshalContext *ctx) {
16928
0
    UnmarshalState *st = (UnmarshalState *)(ctx->u_state);
16929
0
    return read64(st, &(ctx->data));
16930
0
}
16931
16932
0
uint8_t janet_unmarshal_byte(JanetMarshalContext *ctx) {
16933
0
    UnmarshalState *st = (UnmarshalState *)(ctx->u_state);
16934
0
    MARSH_EOS(st, ctx->data);
16935
0
    return *(ctx->data++);
16936
0
}
16937
16938
0
void janet_unmarshal_bytes(JanetMarshalContext *ctx, uint8_t *dest, size_t len) {
16939
0
    UnmarshalState *st = (UnmarshalState *)(ctx->u_state);
16940
0
    MARSH_EOS(st, ctx->data + len - 1);
16941
0
    safe_memcpy(dest, ctx->data, len);
16942
0
    ctx->data += len;
16943
0
}
16944
16945
0
Janet janet_unmarshal_janet(JanetMarshalContext *ctx) {
16946
0
    Janet ret;
16947
0
    UnmarshalState *st = (UnmarshalState *)(ctx->u_state);
16948
0
    ctx->data = unmarshal_one(st, ctx->data, &ret, ctx->flags);
16949
0
    return ret;
16950
0
}
16951
16952
0
void janet_unmarshal_abstract_reuse(JanetMarshalContext *ctx, void *p) {
16953
0
    UnmarshalState *st = (UnmarshalState *)(ctx->u_state);
16954
0
    if (ctx->at == NULL) {
16955
0
        janet_panicf("janet_unmarshal_abstract called more than once");
16956
0
    }
16957
0
    janet_v_push(st->lookup, janet_wrap_abstract(p));
16958
0
    ctx->at = NULL;
16959
0
}
16960
16961
0
void *janet_unmarshal_abstract(JanetMarshalContext *ctx, size_t size) {
16962
0
    void *p = janet_abstract(ctx->at, size);
16963
0
    janet_unmarshal_abstract_reuse(ctx, p);
16964
0
    return p;
16965
0
}
16966
16967
0
static const uint8_t *unmarshal_one_abstract(UnmarshalState *st, const uint8_t *data, Janet *out, int flags) {
16968
0
    Janet key;
16969
0
    data = unmarshal_one(st, data, &key, flags + 1);
16970
0
    const JanetAbstractType *at = janet_get_abstract_type(key);
16971
0
    if (at == NULL) janet_panic("unknown abstract type");
16972
0
    if (at->unmarshal) {
16973
0
        JanetMarshalContext context = {NULL, st, flags, data, at};
16974
0
        *out = janet_wrap_abstract(at->unmarshal(&context));
16975
0
        if (context.at != NULL) {
16976
0
            janet_panic("janet_unmarshal_abstract not called");
16977
0
        }
16978
0
        return context.data;
16979
0
    }
16980
0
    janet_panic("invalid abstract type - no unmarshal function pointer");
16981
0
}
16982
16983
static const uint8_t *unmarshal_one(
16984
    UnmarshalState *st,
16985
    const uint8_t *data,
16986
    Janet *out,
16987
0
    int flags) {
16988
0
    uint8_t lead;
16989
0
    MARSH_STACKCHECK;
16990
0
    MARSH_EOS(st, data);
16991
0
    lead = data[0];
16992
0
    if (lead < LB_REAL) {
16993
0
        *out = janet_wrap_integer(readint(st, &data));
16994
0
        return data;
16995
0
    }
16996
0
    switch (lead) {
16997
0
        case LB_NIL:
16998
0
            *out = janet_wrap_nil();
16999
0
            return data + 1;
17000
0
        case LB_FALSE:
17001
0
            *out = janet_wrap_false();
17002
0
            return data + 1;
17003
0
        case LB_TRUE:
17004
0
            *out = janet_wrap_true();
17005
0
            return data + 1;
17006
0
        case LB_INTEGER:
17007
            /* Long integer */
17008
0
            MARSH_EOS(st, data + 4);
17009
0
            uint32_t ui = ((uint32_t)(data[4])) |
17010
0
                          ((uint32_t)(data[3]) << 8) |
17011
0
                          ((uint32_t)(data[2]) << 16) |
17012
0
                          ((uint32_t)(data[1]) << 24);
17013
0
            int32_t si = (int32_t)ui;
17014
0
            *out = janet_wrap_integer(si);
17015
0
            return data + 5;
17016
0
        case LB_REAL:
17017
            /* Real */
17018
0
        {
17019
0
            union {
17020
0
                double d;
17021
0
                uint8_t bytes[8];
17022
0
            } u;
17023
0
            MARSH_EOS(st, data + 8);
17024
#ifdef JANET_BIG_ENDIAN
17025
            u.bytes[0] = data[8];
17026
            u.bytes[1] = data[7];
17027
            u.bytes[2] = data[6];
17028
            u.bytes[3] = data[5];
17029
            u.bytes[4] = data[4];
17030
            u.bytes[5] = data[3];
17031
            u.bytes[6] = data[2];
17032
            u.bytes[7] = data[1];
17033
#else
17034
0
            memcpy(&u.bytes, data + 1, sizeof(double));
17035
0
#endif
17036
0
            *out = janet_wrap_number_safe(u.d);
17037
0
            janet_v_push(st->lookup, *out);
17038
0
            return data + 9;
17039
0
        }
17040
0
        case LB_STRING:
17041
0
        case LB_SYMBOL:
17042
0
        case LB_BUFFER:
17043
0
        case LB_KEYWORD:
17044
0
        case LB_REGISTRY: {
17045
0
            data++;
17046
0
            int32_t len = readnat(st, &data);
17047
0
            MARSH_EOS(st, data - 1 + len);
17048
0
            if (lead == LB_STRING) {
17049
0
                const uint8_t *str = janet_string(data, len);
17050
0
                *out = janet_wrap_string(str);
17051
0
            } else if (lead == LB_SYMBOL) {
17052
0
                const uint8_t *str = janet_symbol(data, len);
17053
0
                *out = janet_wrap_symbol(str);
17054
0
            } else if (lead == LB_KEYWORD) {
17055
0
                const uint8_t *str = janet_keyword(data, len);
17056
0
                *out = janet_wrap_keyword(str);
17057
0
            } else if (lead == LB_REGISTRY) {
17058
0
                if (st->reg) {
17059
0
                    Janet regkey = janet_symbolv(data, len);
17060
0
                    *out = janet_table_get(st->reg, regkey);
17061
0
                } else {
17062
0
                    *out = janet_wrap_nil();
17063
0
                }
17064
0
            } else { /* (lead == LB_BUFFER) */
17065
0
                JanetBuffer *buffer = janet_buffer(len);
17066
0
                buffer->count = len;
17067
0
                safe_memcpy(buffer->data, data, len);
17068
0
                *out = janet_wrap_buffer(buffer);
17069
0
            }
17070
0
            janet_v_push(st->lookup, *out);
17071
0
            return data + len;
17072
0
        }
17073
0
        case LB_FIBER: {
17074
0
            JanetFiber *fiber;
17075
0
            data = unmarshal_one_fiber(st, data + 1, &fiber, flags);
17076
0
            *out = janet_wrap_fiber(fiber);
17077
0
            return data;
17078
0
        }
17079
0
        case LB_FUNCTION: {
17080
0
            JanetFunction *func;
17081
0
            JanetFuncDef *def;
17082
0
            data++;
17083
0
            int32_t len = readnat(st, &data);
17084
0
            if (len > 255) {
17085
0
                janet_panicf("invalid function - too many environments (%d)", len);
17086
0
            }
17087
0
            func = janet_gcalloc(JANET_MEMORY_FUNCTION, sizeof(JanetFunction) +
17088
0
                                 len * sizeof(JanetFuncEnv));
17089
0
            func->def = NULL;
17090
0
            *out = janet_wrap_function(func);
17091
0
            janet_v_push(st->lookup, *out);
17092
0
            data = unmarshal_one_def(st, data, &def, flags + 1);
17093
0
            func->def = def;
17094
0
            for (int32_t i = 0; i < len; i++) {
17095
0
                data = unmarshal_one_env(st, data, &(func->envs[i]), flags + 1);
17096
0
            }
17097
0
            return data;
17098
0
        }
17099
0
        case LB_ABSTRACT: {
17100
0
            data++;
17101
0
            return unmarshal_one_abstract(st, data, out, flags);
17102
0
        }
17103
0
        case LB_REFERENCE:
17104
0
        case LB_ARRAY:
17105
0
        case LB_TUPLE:
17106
0
        case LB_STRUCT:
17107
0
        case LB_STRUCT_PROTO:
17108
0
        case LB_TABLE:
17109
0
        case LB_TABLE_PROTO:
17110
            /* Things that open with integers */
17111
0
        {
17112
0
            data++;
17113
0
            int32_t len = readnat(st, &data);
17114
            /* DOS check */
17115
0
            if (lead != LB_REFERENCE) {
17116
0
                MARSH_EOS(st, data - 1 + len);
17117
0
            }
17118
0
            if (lead == LB_ARRAY) {
17119
                /* Array */
17120
0
                JanetArray *array = janet_array(len);
17121
0
                array->count = len;
17122
0
                *out = janet_wrap_array(array);
17123
0
                janet_v_push(st->lookup, *out);
17124
0
                for (int32_t i = 0; i < len; i++) {
17125
0
                    data = unmarshal_one(st, data, array->data + i, flags + 1);
17126
0
                }
17127
0
            } else if (lead == LB_TUPLE) {
17128
                /* Tuple */
17129
0
                Janet *tup = janet_tuple_begin(len);
17130
0
                int32_t flag = readint(st, &data);
17131
0
                janet_tuple_flag(tup) |= flag << 16;
17132
0
                for (int32_t i = 0; i < len; i++) {
17133
0
                    data = unmarshal_one(st, data, tup + i, flags + 1);
17134
0
                }
17135
0
                *out = janet_wrap_tuple(janet_tuple_end(tup));
17136
0
                janet_v_push(st->lookup, *out);
17137
0
            } else if (lead == LB_STRUCT || lead == LB_STRUCT_PROTO) {
17138
                /* Struct */
17139
0
                JanetKV *struct_ = janet_struct_begin(len);
17140
0
                if (lead == LB_STRUCT_PROTO) {
17141
0
                    Janet proto;
17142
0
                    data = unmarshal_one(st, data, &proto, flags + 1);
17143
0
                    janet_asserttype(proto, JANET_STRUCT);
17144
0
                    janet_struct_proto(struct_) = janet_unwrap_struct(proto);
17145
0
                }
17146
0
                for (int32_t i = 0; i < len; i++) {
17147
0
                    Janet key, value;
17148
0
                    data = unmarshal_one(st, data, &key, flags + 1);
17149
0
                    data = unmarshal_one(st, data, &value, flags + 1);
17150
0
                    janet_struct_put(struct_, key, value);
17151
0
                }
17152
0
                *out = janet_wrap_struct(janet_struct_end(struct_));
17153
0
                janet_v_push(st->lookup, *out);
17154
0
            } else if (lead == LB_REFERENCE) {
17155
0
                if (len >= janet_v_count(st->lookup))
17156
0
                    janet_panicf("invalid reference %d", len);
17157
0
                *out = st->lookup[len];
17158
0
            } else {
17159
                /* Table */
17160
0
                JanetTable *t = janet_table(len);
17161
0
                *out = janet_wrap_table(t);
17162
0
                janet_v_push(st->lookup, *out);
17163
0
                if (lead == LB_TABLE_PROTO) {
17164
0
                    Janet proto;
17165
0
                    data = unmarshal_one(st, data, &proto, flags + 1);
17166
0
                    janet_asserttype(proto, JANET_TABLE);
17167
0
                    t->proto = janet_unwrap_table(proto);
17168
0
                }
17169
0
                for (int32_t i = 0; i < len; i++) {
17170
0
                    Janet key, value;
17171
0
                    data = unmarshal_one(st, data, &key, flags + 1);
17172
0
                    data = unmarshal_one(st, data, &value, flags + 1);
17173
0
                    janet_table_put(t, key, value);
17174
0
                }
17175
0
            }
17176
0
            return data;
17177
0
        }
17178
0
        case LB_UNSAFE_POINTER: {
17179
0
            MARSH_EOS(st, data + sizeof(void *));
17180
0
            data++;
17181
0
            if (!(flags & JANET_MARSHAL_UNSAFE)) {
17182
0
                janet_panicf("unsafe flag not given, "
17183
0
                             "will not unmarshal raw pointer at index %d",
17184
0
                             (int)(data - st->start));
17185
0
            }
17186
0
            union {
17187
0
                void *ptr;
17188
0
                uint8_t bytes[sizeof(void *)];
17189
0
            } u;
17190
0
            memcpy(u.bytes, data, sizeof(void *));
17191
0
            data += sizeof(void *);
17192
0
            *out = janet_wrap_pointer(u.ptr);
17193
0
            janet_v_push(st->lookup, *out);
17194
0
            return data;
17195
0
        }
17196
0
#ifdef JANET_EV
17197
0
        case LB_POINTER_BUFFER: {
17198
0
            data++;
17199
0
            int32_t count = readnat(st, &data);
17200
0
            int32_t capacity = readnat(st, &data);
17201
0
            MARSH_EOS(st, data + sizeof(void *));
17202
0
            union {
17203
0
                void *ptr;
17204
0
                uint8_t bytes[sizeof(void *)];
17205
0
            } u;
17206
0
            if (!(flags & JANET_MARSHAL_UNSAFE)) {
17207
0
                janet_panicf("unsafe flag not given, "
17208
0
                             "will not unmarshal raw pointer at index %d",
17209
0
                             (int)(data - st->start));
17210
0
            }
17211
0
            memcpy(u.bytes, data, sizeof(void *));
17212
0
            data += sizeof(void *);
17213
0
            JanetBuffer *buffer = janet_pointer_buffer_unsafe(u.ptr, capacity, count);
17214
0
            *out = janet_wrap_buffer(buffer);
17215
0
            janet_v_push(st->lookup, *out);
17216
0
            return data;
17217
0
        }
17218
0
#endif
17219
0
        case LB_UNSAFE_CFUNCTION: {
17220
0
            MARSH_EOS(st, data + sizeof(JanetCFunction));
17221
0
            data++;
17222
0
            if (!(flags & JANET_MARSHAL_UNSAFE)) {
17223
0
                janet_panicf("unsafe flag not given, "
17224
0
                             "will not unmarshal function pointer at index %d",
17225
0
                             (int)(data - st->start));
17226
0
            }
17227
0
            union {
17228
0
                JanetCFunction ptr;
17229
0
                uint8_t bytes[sizeof(JanetCFunction)];
17230
0
            } u;
17231
0
            memcpy(u.bytes, data, sizeof(JanetCFunction));
17232
0
            data += sizeof(JanetCFunction);
17233
0
            *out = janet_wrap_cfunction(u.ptr);
17234
0
            janet_v_push(st->lookup, *out);
17235
0
            return data;
17236
0
        }
17237
0
#ifdef JANET_EV
17238
0
        case LB_THREADED_ABSTRACT: {
17239
0
            MARSH_EOS(st, data + sizeof(void *));
17240
0
            data++;
17241
0
            if (!(flags & JANET_MARSHAL_UNSAFE)) {
17242
0
                janet_panicf("unsafe flag not given, "
17243
0
                             "will not unmarshal threaded abstract pointer at index %d",
17244
0
                             (int)(data - st->start));
17245
0
            }
17246
0
            union {
17247
0
                void *ptr;
17248
0
                uint8_t bytes[sizeof(void *)];
17249
0
            } u;
17250
0
            memcpy(u.bytes, data, sizeof(void *));
17251
0
            data += sizeof(void *);
17252
17253
0
            if (flags & JANET_MARSHAL_DECREF) {
17254
                /* Decrement immediately and don't bother putting into heap */
17255
0
                janet_abstract_decref(u.ptr);
17256
0
                *out = janet_wrap_nil();
17257
0
            } else {
17258
0
                *out = janet_wrap_abstract(u.ptr);
17259
0
                Janet check = janet_table_get(&janet_vm.threaded_abstracts, *out);
17260
0
                if (janet_checktype(check, JANET_NIL)) {
17261
                    /* Transfers reference from threaded channel buffer to current heap */
17262
0
                    janet_table_put(&janet_vm.threaded_abstracts, *out, janet_wrap_false());
17263
0
                } else {
17264
                    /* Heap reference already accounted for, remove threaded channel reference. */
17265
0
                    janet_abstract_decref(u.ptr);
17266
0
                }
17267
0
            }
17268
17269
0
            janet_v_push(st->lookup, *out);
17270
0
            return data;
17271
0
        }
17272
0
#endif
17273
0
        default: {
17274
0
            janet_panicf("unknown byte %x at index %d",
17275
0
                         *data,
17276
0
                         (int)(data - st->start));
17277
0
            return NULL;
17278
0
        }
17279
0
    }
17280
0
}
17281
17282
Janet janet_unmarshal(
17283
    const uint8_t *bytes,
17284
    size_t len,
17285
    int flags,
17286
    JanetTable *reg,
17287
0
    const uint8_t **next) {
17288
0
    UnmarshalState st;
17289
0
    st.start = bytes;
17290
0
    st.end = bytes + len;
17291
0
    st.lookup_defs = NULL;
17292
0
    st.lookup_envs = NULL;
17293
0
    st.lookup = NULL;
17294
0
    st.reg = reg;
17295
0
    Janet out;
17296
0
    const uint8_t *nextbytes = unmarshal_one(&st, bytes, &out, flags);
17297
0
    if (next) *next = nextbytes;
17298
0
    janet_v_free(st.lookup_defs);
17299
0
    janet_v_free(st.lookup_envs);
17300
0
    janet_v_free(st.lookup);
17301
0
    return out;
17302
0
}
17303
17304
/* C functions */
17305
17306
JANET_CORE_FN(cfun_env_lookup,
17307
              "(env-lookup env)",
17308
              "Creates a forward lookup table for unmarshalling from an environment. "
17309
              "To create a reverse lookup table, use the invert function to swap keys "
17310
0
              "and values in the returned table.") {
17311
0
    janet_fixarity(argc, 1);
17312
0
    JanetTable *env = janet_gettable(argv, 0);
17313
0
    return janet_wrap_table(janet_env_lookup(env));
17314
0
}
17315
17316
JANET_CORE_FN(cfun_marshal,
17317
              "(marshal x &opt reverse-lookup buffer no-cycles)",
17318
              "Marshal a value into a buffer and return the buffer. The buffer "
17319
              "can then later be unmarshalled to reconstruct the initial value. "
17320
              "Optionally, one can pass in a reverse lookup table to not marshal "
17321
              "aliased values that are found in the table. Then a forward "
17322
              "lookup table can be used to recover the original value when "
17323
0
              "unmarshalling.") {
17324
0
    janet_arity(argc, 1, 4);
17325
0
    JanetBuffer *buffer;
17326
0
    JanetTable *rreg = NULL;
17327
0
    uint32_t flags = 0;
17328
0
    if (argc > 1) {
17329
0
        rreg = janet_gettable(argv, 1);
17330
0
    }
17331
0
    if (argc > 2) {
17332
0
        buffer = janet_getbuffer(argv, 2);
17333
0
    } else {
17334
0
        buffer = janet_buffer(10);
17335
0
    }
17336
0
    if (argc > 3 && janet_truthy(argv[3])) {
17337
0
        flags |= JANET_MARSHAL_NO_CYCLES;
17338
0
    }
17339
0
    janet_marshal(buffer, argv[0], rreg, flags);
17340
0
    return janet_wrap_buffer(buffer);
17341
0
}
17342
17343
JANET_CORE_FN(cfun_unmarshal,
17344
              "(unmarshal buffer &opt lookup)",
17345
              "Unmarshal a value from a buffer. An optional lookup table "
17346
              "can be provided to allow for aliases to be resolved. Returns the value "
17347
0
              "unmarshalled from the buffer.") {
17348
0
    janet_arity(argc, 1, 2);
17349
0
    JanetByteView view = janet_getbytes(argv, 0);
17350
0
    JanetTable *reg = NULL;
17351
0
    if (argc > 1) {
17352
0
        reg = janet_gettable(argv, 1);
17353
0
    }
17354
0
    return janet_unmarshal(view.bytes, (size_t) view.len, 0, reg, NULL);
17355
0
}
17356
17357
/* Module entry point */
17358
0
void janet_lib_marsh(JanetTable *env) {
17359
0
    JanetRegExt marsh_cfuns[] = {
17360
0
        JANET_CORE_REG("marshal", cfun_marshal),
17361
0
        JANET_CORE_REG("unmarshal", cfun_unmarshal),
17362
0
        JANET_CORE_REG("env-lookup", cfun_env_lookup),
17363
0
        JANET_REG_END
17364
0
    };
17365
0
    janet_core_cfuns_ext(env, NULL, marsh_cfuns);
17366
0
}
17367
17368
17369
/* src/core/math.c */
17370
#line 0 "src/core/math.c"
17371
17372
/*
17373
* Copyright (c) 2023 Calvin Rose
17374
*
17375
* Permission is hereby granted, free of charge, to any person obtaining a copy
17376
* of this software and associated documentation files (the "Software"), to
17377
* deal in the Software without restriction, including without limitation the
17378
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
17379
* sell copies of the Software, and to permit persons to whom the Software is
17380
* furnished to do so, subject to the following conditions:
17381
*
17382
* The above copyright notice and this permission notice shall be included in
17383
* all copies or substantial portions of the Software.
17384
*
17385
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17386
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17387
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17388
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17389
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
17390
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
17391
* IN THE SOFTWARE.
17392
*/
17393
17394
#ifndef JANET_AMALG
17395
#include "features.h"
17396
#include <janet.h>
17397
#include "state.h"
17398
#include "util.h"
17399
#endif
17400
17401
#include <math.h>
17402
17403
static int janet_rng_get(void *p, Janet key, Janet *out);
17404
static Janet janet_rng_next(void *p, Janet key);
17405
17406
0
static void janet_rng_marshal(void *p, JanetMarshalContext *ctx) {
17407
0
    JanetRNG *rng = (JanetRNG *)p;
17408
0
    janet_marshal_abstract(ctx, p);
17409
0
    janet_marshal_int(ctx, (int32_t) rng->a);
17410
0
    janet_marshal_int(ctx, (int32_t) rng->b);
17411
0
    janet_marshal_int(ctx, (int32_t) rng->c);
17412
0
    janet_marshal_int(ctx, (int32_t) rng->d);
17413
0
    janet_marshal_int(ctx, (int32_t) rng->counter);
17414
0
}
17415
17416
0
static void *janet_rng_unmarshal(JanetMarshalContext *ctx) {
17417
0
    JanetRNG *rng = janet_unmarshal_abstract(ctx, sizeof(JanetRNG));
17418
0
    rng->a = (uint32_t) janet_unmarshal_int(ctx);
17419
0
    rng->b = (uint32_t) janet_unmarshal_int(ctx);
17420
0
    rng->c = (uint32_t) janet_unmarshal_int(ctx);
17421
0
    rng->d = (uint32_t) janet_unmarshal_int(ctx);
17422
0
    rng->counter = (uint32_t) janet_unmarshal_int(ctx);
17423
0
    return rng;
17424
0
}
17425
17426
const JanetAbstractType janet_rng_type = {
17427
    "core/rng",
17428
    NULL,
17429
    NULL,
17430
    janet_rng_get,
17431
    NULL,
17432
    janet_rng_marshal,
17433
    janet_rng_unmarshal,
17434
    NULL, /* tostring */
17435
    NULL, /* compare */
17436
    NULL, /* hash */
17437
    janet_rng_next,
17438
    JANET_ATEND_NEXT
17439
};
17440
17441
5.24k
JanetRNG *janet_default_rng(void) {
17442
5.24k
    return &janet_vm.rng;
17443
5.24k
}
17444
17445
10.4k
void janet_rng_seed(JanetRNG *rng, uint32_t seed) {
17446
10.4k
    rng->a = seed;
17447
10.4k
    rng->b = 0x97654321u;
17448
10.4k
    rng->c = 123871873u;
17449
10.4k
    rng->d = 0xf23f56c8u;
17450
10.4k
    rng->counter = 0u;
17451
    /* First several numbers aren't that random. */
17452
178k
    for (int i = 0; i < 16; i++) janet_rng_u32(rng);
17453
10.4k
}
17454
17455
0
void janet_rng_longseed(JanetRNG *rng, const uint8_t *bytes, int32_t len) {
17456
0
    uint8_t state[16] = {0};
17457
0
    for (int32_t i = 0; i < len; i++)
17458
0
        state[i & 0xF] ^= bytes[i];
17459
0
    rng->a = state[0] + (state[1] << 8) + (state[2] << 16) + (state[3] << 24);
17460
0
    rng->b = state[4] + (state[5] << 8) + (state[6] << 16) + (state[7] << 24);
17461
0
    rng->c = state[8] + (state[9] << 8) + (state[10] << 16) + (state[11] << 24);
17462
0
    rng->d = state[12] + (state[13] << 8) + (state[14] << 16) + (state[15] << 24);
17463
0
    rng->counter = 0u;
17464
    /* a, b, c, d can't all be 0 */
17465
0
    if (rng->a == 0) rng->a = 1u;
17466
0
    for (int i = 0; i < 16; i++) janet_rng_u32(rng);
17467
0
}
17468
17469
167k
uint32_t janet_rng_u32(JanetRNG *rng) {
17470
    /* Algorithm "xorwow" from p. 5 of Marsaglia, "Xorshift RNGs" */
17471
167k
    uint32_t t = rng->d;
17472
167k
    uint32_t const s = rng->a;
17473
167k
    rng->d = rng->c;
17474
167k
    rng->c = rng->b;
17475
167k
    rng->b = s;
17476
167k
    t ^= t >> 2;
17477
167k
    t ^= t << 1;
17478
167k
    t ^= s ^ (s << 4);
17479
167k
    rng->a = t;
17480
167k
    rng->counter += 362437;
17481
167k
    return t + rng->counter;
17482
167k
}
17483
17484
0
double janet_rng_double(JanetRNG *rng) {
17485
0
    uint32_t hi = janet_rng_u32(rng);
17486
0
    uint32_t lo = janet_rng_u32(rng);
17487
0
    uint64_t big = (uint64_t)(lo) | (((uint64_t) hi) << 32);
17488
0
    return ldexp((double)(big >> (64 - 52)), -52);
17489
0
}
17490
17491
JANET_CORE_FN(cfun_rng_make,
17492
              "(math/rng &opt seed)",
17493
              "Creates a Psuedo-Random number generator, with an optional seed. "
17494
              "The seed should be an unsigned 32 bit integer or a buffer. "
17495
              "Do not use this for cryptography. Returns a core/rng abstract type."
17496
0
             ) {
17497
0
    janet_arity(argc, 0, 1);
17498
0
    JanetRNG *rng = janet_abstract(&janet_rng_type, sizeof(JanetRNG));
17499
0
    if (argc == 1) {
17500
0
        if (janet_checkint(argv[0])) {
17501
0
            uint32_t seed = (uint32_t)(janet_getinteger(argv, 0));
17502
0
            janet_rng_seed(rng, seed);
17503
0
        } else {
17504
0
            JanetByteView bytes = janet_getbytes(argv, 0);
17505
0
            janet_rng_longseed(rng, bytes.bytes, bytes.len);
17506
0
        }
17507
0
    } else {
17508
0
        janet_rng_seed(rng, 0);
17509
0
    }
17510
0
    return janet_wrap_abstract(rng);
17511
0
}
17512
17513
JANET_CORE_FN(cfun_rng_uniform,
17514
              "(math/rng-uniform rng)",
17515
              "Extract a random number in the range [0, 1) from the RNG."
17516
0
             ) {
17517
0
    janet_fixarity(argc, 1);
17518
0
    JanetRNG *rng = janet_getabstract(argv, 0, &janet_rng_type);
17519
0
    return janet_wrap_number(janet_rng_double(rng));
17520
0
}
17521
17522
JANET_CORE_FN(cfun_rng_int,
17523
              "(math/rng-int rng &opt max)",
17524
              "Extract a random integer in the range [0, max) for max > 0 from the RNG.  "
17525
              "If max is 0, return 0.  If no max is given, the default is 2^31 - 1."
17526
0
             ) {
17527
0
    janet_arity(argc, 1, 2);
17528
0
    JanetRNG *rng = janet_getabstract(argv, 0, &janet_rng_type);
17529
0
    if (argc == 1) {
17530
0
        uint32_t word = janet_rng_u32(rng) >> 1;
17531
0
        return janet_wrap_integer(word);
17532
0
    } else {
17533
0
        int32_t max = janet_optnat(argv, argc, 1, INT32_MAX);
17534
0
        if (max == 0) return janet_wrap_number(0.0);
17535
0
        uint32_t modulo = (uint32_t) max;
17536
0
        uint32_t maxgen = INT32_MAX;
17537
0
        uint32_t maxword = maxgen - (maxgen % modulo);
17538
0
        uint32_t word;
17539
0
        do {
17540
0
            word = janet_rng_u32(rng) >> 1;
17541
0
        } while (word > maxword);
17542
0
        return janet_wrap_integer(word % modulo);
17543
0
    }
17544
0
}
17545
17546
0
static void rng_get_4bytes(JanetRNG *rng, uint8_t *buf) {
17547
0
    uint32_t word = janet_rng_u32(rng);
17548
0
    buf[0] = word & 0xFF;
17549
0
    buf[1] = (word >> 8) & 0xFF;
17550
0
    buf[2] = (word >> 16) & 0xFF;
17551
0
    buf[3] = (word >> 24) & 0xFF;
17552
0
}
17553
17554
JANET_CORE_FN(cfun_rng_buffer,
17555
              "(math/rng-buffer rng n &opt buf)",
17556
              "Get n random bytes and put them in a buffer. Creates a new buffer if no buffer is "
17557
              "provided, otherwise appends to the given buffer. Returns the buffer."
17558
0
             ) {
17559
0
    janet_arity(argc, 2, 3);
17560
0
    JanetRNG *rng = janet_getabstract(argv, 0, &janet_rng_type);
17561
0
    int32_t n = janet_getnat(argv, 1);
17562
0
    JanetBuffer *buffer = janet_optbuffer(argv, argc, 2, n);
17563
17564
    /* Split into first part (that is divisible by 4), and rest */
17565
0
    int32_t first_part = n & ~3;
17566
0
    int32_t second_part = n - first_part;
17567
17568
    /* Get first part in chunks of 4 bytes */
17569
0
    janet_buffer_extra(buffer, n);
17570
0
    uint8_t *buf = buffer->data + buffer->count;
17571
0
    for (int32_t i = 0; i < first_part; i += 4) rng_get_4bytes(rng, buf + i);
17572
0
    buffer->count += first_part;
17573
17574
    /* Get remaining 0 - 3 bytes */
17575
0
    if (second_part) {
17576
0
        uint8_t wordbuf[4] = {0};
17577
0
        rng_get_4bytes(rng, wordbuf);
17578
0
        janet_buffer_push_bytes(buffer, wordbuf, second_part);
17579
0
    }
17580
17581
0
    return janet_wrap_buffer(buffer);
17582
0
}
17583
17584
static const JanetMethod rng_methods[] = {
17585
    {"uniform", cfun_rng_uniform},
17586
    {"int", cfun_rng_int},
17587
    {"buffer", cfun_rng_buffer},
17588
    {NULL, NULL}
17589
};
17590
17591
0
static int janet_rng_get(void *p, Janet key, Janet *out) {
17592
0
    (void) p;
17593
0
    if (!janet_checktype(key, JANET_KEYWORD)) return 0;
17594
0
    return janet_getmethod(janet_unwrap_keyword(key), rng_methods, out);
17595
0
}
17596
17597
0
static Janet janet_rng_next(void *p, Janet key) {
17598
0
    (void) p;
17599
0
    return janet_nextmethod(rng_methods, key);
17600
0
}
17601
17602
/* Get a random number */
17603
JANET_CORE_FN(janet_rand,
17604
              "(math/random)",
17605
0
              "Returns a uniformly distributed random number between 0 and 1.") {
17606
0
    (void) argv;
17607
0
    janet_fixarity(argc, 0);
17608
0
    return janet_wrap_number(janet_rng_double(&janet_vm.rng));
17609
0
}
17610
17611
/* Seed the random number generator */
17612
JANET_CORE_FN(janet_srand,
17613
              "(math/seedrandom seed)",
17614
              "Set the seed for the random number generator. `seed` should be "
17615
              "an integer or a buffer."
17616
0
             ) {
17617
0
    janet_fixarity(argc, 1);
17618
0
    if (janet_checkint(argv[0])) {
17619
0
        uint32_t seed = (uint32_t)(janet_getinteger(argv, 0));
17620
0
        janet_rng_seed(&janet_vm.rng, seed);
17621
0
    } else {
17622
0
        JanetByteView bytes = janet_getbytes(argv, 0);
17623
0
        janet_rng_longseed(&janet_vm.rng, bytes.bytes, bytes.len);
17624
0
    }
17625
0
    return janet_wrap_nil();
17626
0
}
17627
17628
#define JANET_DEFINE_NAMED_MATHOP(janet_name, fop, doc)\
17629
0
JANET_CORE_FN(janet_##fop, "(math/" janet_name " x)", doc) {\
17630
0
    janet_fixarity(argc, 1); \
17631
0
    double x = janet_getnumber(argv, 0); \
17632
0
    return janet_wrap_number(fop(x)); \
17633
0
}
Unexecuted instantiation: janet_acos
Unexecuted instantiation: janet_asin
Unexecuted instantiation: janet_atan
Unexecuted instantiation: janet_cos
Unexecuted instantiation: janet_cosh
Unexecuted instantiation: janet_acosh
Unexecuted instantiation: janet_sin
Unexecuted instantiation: janet_sinh
Unexecuted instantiation: janet_asinh
Unexecuted instantiation: janet_tan
Unexecuted instantiation: janet_tanh
Unexecuted instantiation: janet_atanh
Unexecuted instantiation: janet_exp
Unexecuted instantiation: janet_exp2
Unexecuted instantiation: janet_expm1
Unexecuted instantiation: janet_log
Unexecuted instantiation: janet_log10
Unexecuted instantiation: janet_log2
Unexecuted instantiation: janet_sqrt
Unexecuted instantiation: janet_cbrt
Unexecuted instantiation: janet_ceil
Unexecuted instantiation: janet_floor
Unexecuted instantiation: janet_trunc
Unexecuted instantiation: janet_round
Unexecuted instantiation: janet_log1p
Unexecuted instantiation: janet_erf
Unexecuted instantiation: janet_erfc
Unexecuted instantiation: janet_lgamma
Unexecuted instantiation: janet_fabs
Unexecuted instantiation: janet_tgamma
17634
17635
#define JANET_DEFINE_MATHOP(fop, doc) JANET_DEFINE_NAMED_MATHOP(#fop, fop, doc)
17636
17637
JANET_DEFINE_MATHOP(acos, "Returns the arccosine of x.")
17638
JANET_DEFINE_MATHOP(asin, "Returns the arcsin of x.")
17639
JANET_DEFINE_MATHOP(atan, "Returns the arctangent of x.")
17640
JANET_DEFINE_MATHOP(cos, "Returns the cosine of x.")
17641
JANET_DEFINE_MATHOP(cosh, "Returns the hyperbolic cosine of x.")
17642
JANET_DEFINE_MATHOP(acosh, "Returns the hyperbolic arccosine of x.")
17643
JANET_DEFINE_MATHOP(sin, "Returns the sine of x.")
17644
JANET_DEFINE_MATHOP(sinh, "Returns the hyperbolic sine of x.")
17645
JANET_DEFINE_MATHOP(asinh, "Returns the hyperbolic arcsine of x.")
17646
JANET_DEFINE_MATHOP(tan, "Returns the tangent of x.")
17647
JANET_DEFINE_MATHOP(tanh, "Returns the hyperbolic tangent of x.")
17648
JANET_DEFINE_MATHOP(atanh, "Returns the hyperbolic arctangent of x.")
17649
JANET_DEFINE_MATHOP(exp, "Returns e to the power of x.")
17650
JANET_DEFINE_MATHOP(exp2, "Returns 2 to the power of x.")
17651
JANET_DEFINE_MATHOP(expm1, "Returns e to the power of x minus 1.")
17652
JANET_DEFINE_MATHOP(log, "Returns the natural logarithm of x.")
17653
JANET_DEFINE_MATHOP(log10, "Returns the log base 10 of x.")
17654
JANET_DEFINE_MATHOP(log2, "Returns the log base 2 of x.")
17655
JANET_DEFINE_MATHOP(sqrt, "Returns the square root of x.")
17656
JANET_DEFINE_MATHOP(cbrt, "Returns the cube root of x.")
17657
JANET_DEFINE_MATHOP(ceil, "Returns the smallest integer value number that is not less than x.")
17658
JANET_DEFINE_MATHOP(floor, "Returns the largest integer value number that is not greater than x.")
17659
JANET_DEFINE_MATHOP(trunc, "Returns the integer between x and 0 nearest to x.")
17660
JANET_DEFINE_MATHOP(round, "Returns the integer nearest to x.")
17661
JANET_DEFINE_MATHOP(log1p, "Returns (log base e of x) + 1 more accurately than (+ (math/log x) 1)")
17662
JANET_DEFINE_MATHOP(erf, "Returns the error function of x.")
17663
JANET_DEFINE_MATHOP(erfc, "Returns the complementary error function of x.")
17664
JANET_DEFINE_NAMED_MATHOP("log-gamma", lgamma, "Returns log-gamma(x).")
17665
JANET_DEFINE_NAMED_MATHOP("abs", fabs, "Return the absolute value of x.")
17666
JANET_DEFINE_NAMED_MATHOP("gamma", tgamma, "Returns gamma(x).")
17667
17668
#define JANET_DEFINE_MATH2OP(name, fop, signature, doc)\
17669
0
JANET_CORE_FN(janet_##name, signature, doc) {\
17670
0
    janet_fixarity(argc, 2); \
17671
0
    double lhs = janet_getnumber(argv, 0); \
17672
0
    double rhs = janet_getnumber(argv, 1); \
17673
0
    return janet_wrap_number(fop(lhs, rhs)); \
17674
0
}
Unexecuted instantiation: janet_atan2
Unexecuted instantiation: janet_pow
Unexecuted instantiation: janet_hypot
Unexecuted instantiation: janet_nextafter
17675
17676
JANET_DEFINE_MATH2OP(atan2, atan2, "(math/atan2 y x)", "Returns the arctangent of y/x. Works even when x is 0.")
17677
JANET_DEFINE_MATH2OP(pow, pow, "(math/pow a x)", "Returns a to the power of x.")
17678
JANET_DEFINE_MATH2OP(hypot, hypot, "(math/hypot a b)", "Returns c from the equation c^2 = a^2 + b^2.")
17679
JANET_DEFINE_MATH2OP(nextafter, nextafter,  "(math/next x y)", "Returns the next representable floating point value after x in the direction of y.")
17680
17681
0
JANET_CORE_FN(janet_not, "(not x)", "Returns the boolean inverse of x.") {
17682
0
    janet_fixarity(argc, 1);
17683
0
    return janet_wrap_boolean(!janet_truthy(argv[0]));
17684
0
}
17685
17686
0
static double janet_gcd(double x, double y) {
17687
0
    if (isnan(x) || isnan(y)) {
17688
0
#ifdef NAN
17689
0
        return NAN;
17690
#else
17691
        return 0.0 / 0.0;
17692
#endif
17693
0
    }
17694
0
    if (isinf(x) || isinf(y)) return INFINITY;
17695
0
    while (y != 0) {
17696
0
        double temp = y;
17697
0
        y = fmod(x, y);
17698
0
        x = temp;
17699
0
    }
17700
0
    return x;
17701
0
}
17702
17703
0
static double janet_lcm(double x, double y) {
17704
0
    return (x / janet_gcd(x, y)) * y;
17705
0
}
17706
17707
JANET_CORE_FN(janet_cfun_gcd, "(math/gcd x y)",
17708
0
              "Returns the greatest common divisor between x and y.") {
17709
0
    janet_fixarity(argc, 2);
17710
0
    double x = janet_getnumber(argv, 0);
17711
0
    double y = janet_getnumber(argv, 1);
17712
0
    return janet_wrap_number(janet_gcd(x, y));
17713
0
}
17714
17715
JANET_CORE_FN(janet_cfun_lcm, "(math/lcm x y)",
17716
0
              "Returns the least common multiple of x and y.") {
17717
0
    janet_fixarity(argc, 2);
17718
0
    double x = janet_getnumber(argv, 0);
17719
0
    double y = janet_getnumber(argv, 1);
17720
0
    return janet_wrap_number(janet_lcm(x, y));
17721
0
}
17722
17723
/* Module entry point */
17724
0
void janet_lib_math(JanetTable *env) {
17725
0
    JanetRegExt math_cfuns[] = {
17726
0
        JANET_CORE_REG("not", janet_not),
17727
0
        JANET_CORE_REG("math/random", janet_rand),
17728
0
        JANET_CORE_REG("math/seedrandom", janet_srand),
17729
0
        JANET_CORE_REG("math/cos", janet_cos),
17730
0
        JANET_CORE_REG("math/sin", janet_sin),
17731
0
        JANET_CORE_REG("math/tan", janet_tan),
17732
0
        JANET_CORE_REG("math/acos", janet_acos),
17733
0
        JANET_CORE_REG("math/asin", janet_asin),
17734
0
        JANET_CORE_REG("math/atan", janet_atan),
17735
0
        JANET_CORE_REG("math/exp", janet_exp),
17736
0
        JANET_CORE_REG("math/log", janet_log),
17737
0
        JANET_CORE_REG("math/log10", janet_log10),
17738
0
        JANET_CORE_REG("math/log2", janet_log2),
17739
0
        JANET_CORE_REG("math/sqrt", janet_sqrt),
17740
0
        JANET_CORE_REG("math/cbrt", janet_cbrt),
17741
0
        JANET_CORE_REG("math/floor", janet_floor),
17742
0
        JANET_CORE_REG("math/ceil", janet_ceil),
17743
0
        JANET_CORE_REG("math/pow", janet_pow),
17744
0
        JANET_CORE_REG("math/abs", janet_fabs),
17745
0
        JANET_CORE_REG("math/sinh", janet_sinh),
17746
0
        JANET_CORE_REG("math/cosh", janet_cosh),
17747
0
        JANET_CORE_REG("math/tanh", janet_tanh),
17748
0
        JANET_CORE_REG("math/atanh", janet_atanh),
17749
0
        JANET_CORE_REG("math/asinh", janet_asinh),
17750
0
        JANET_CORE_REG("math/acosh", janet_acosh),
17751
0
        JANET_CORE_REG("math/atan2", janet_atan2),
17752
0
        JANET_CORE_REG("math/rng", cfun_rng_make),
17753
0
        JANET_CORE_REG("math/rng-uniform", cfun_rng_uniform),
17754
0
        JANET_CORE_REG("math/rng-int", cfun_rng_int),
17755
0
        JANET_CORE_REG("math/rng-buffer", cfun_rng_buffer),
17756
0
        JANET_CORE_REG("math/hypot", janet_hypot),
17757
0
        JANET_CORE_REG("math/exp2", janet_exp2),
17758
0
        JANET_CORE_REG("math/log1p", janet_log1p),
17759
0
        JANET_CORE_REG("math/gamma", janet_tgamma),
17760
0
        JANET_CORE_REG("math/log-gamma", janet_lgamma),
17761
0
        JANET_CORE_REG("math/erfc", janet_erfc),
17762
0
        JANET_CORE_REG("math/erf", janet_erf),
17763
0
        JANET_CORE_REG("math/expm1", janet_expm1),
17764
0
        JANET_CORE_REG("math/trunc", janet_trunc),
17765
0
        JANET_CORE_REG("math/round", janet_round),
17766
0
        JANET_CORE_REG("math/next", janet_nextafter),
17767
0
        JANET_CORE_REG("math/gcd", janet_cfun_gcd),
17768
0
        JANET_CORE_REG("math/lcm", janet_cfun_lcm),
17769
0
        JANET_REG_END
17770
0
    };
17771
0
    janet_core_cfuns_ext(env, NULL, math_cfuns);
17772
0
    janet_register_abstract_type(&janet_rng_type);
17773
#ifdef JANET_BOOTSTRAP
17774
    JANET_CORE_DEF(env, "math/pi", janet_wrap_number(3.1415926535897931),
17775
                   "The value pi.");
17776
    JANET_CORE_DEF(env, "math/e", janet_wrap_number(2.7182818284590451),
17777
                   "The base of the natural log.");
17778
    JANET_CORE_DEF(env, "math/inf", janet_wrap_number(INFINITY),
17779
                   "The number representing positive infinity");
17780
    JANET_CORE_DEF(env, "math/-inf", janet_wrap_number(-INFINITY),
17781
                   "The number representing negative infinity");
17782
    JANET_CORE_DEF(env, "math/int32-min", janet_wrap_number(INT32_MIN),
17783
                   "The minimum contiguous integer representable by a 32 bit signed integer");
17784
    JANET_CORE_DEF(env, "math/int32-max", janet_wrap_number(INT32_MAX),
17785
                   "The maximum contiguous integer represtenable by a 32 bit signed integer");
17786
    JANET_CORE_DEF(env, "math/int-min", janet_wrap_number(JANET_INTMIN_DOUBLE),
17787
                   "The minimum contiguous integer representable by a double (2^53)");
17788
    JANET_CORE_DEF(env, "math/int-max", janet_wrap_number(JANET_INTMAX_DOUBLE),
17789
                   "The maximum contiguous integer represtenable by a double (-(2^53))");
17790
#ifdef NAN
17791
    JANET_CORE_DEF(env, "math/nan", janet_wrap_number(NAN), "Not a number (IEEE-754 NaN)");
17792
#else
17793
    JANET_CORE_DEF(env, "math/nan", janet_wrap_number(0.0 / 0.0), "Not a number (IEEE-754 NaN)");
17794
#endif
17795
#endif
17796
0
}
17797
17798
17799
/* src/core/net.c */
17800
#line 0 "src/core/net.c"
17801
17802
/*
17803
* Copyright (c) 2023 Calvin Rose and contributors.
17804
*
17805
* Permission is hereby granted, free of charge, to any person obtaining a copy
17806
* of this software and associated documentation files (the "Software"), to
17807
* deal in the Software without restriction, including without limitation the
17808
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
17809
* sell copies of the Software, and to permit persons to whom the Software is
17810
* furnished to do so, subject to the following conditions:
17811
*
17812
* The above copyright notice and this permission notice shall be included in
17813
* all copies or substantial portions of the Software.
17814
*
17815
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17816
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17817
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17818
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17819
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
17820
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
17821
* IN THE SOFTWARE.
17822
*/
17823
17824
#ifndef JANET_AMALG
17825
#include "features.h"
17826
#include <janet.h>
17827
#include "util.h"
17828
#endif
17829
17830
#ifdef JANET_NET
17831
17832
#include <math.h>
17833
#ifdef JANET_WINDOWS
17834
#include <winsock2.h>
17835
#include <windows.h>
17836
#include <ws2tcpip.h>
17837
#include <mswsock.h>
17838
#ifdef JANET_MSVC
17839
#pragma comment (lib, "Ws2_32.lib")
17840
#pragma comment (lib, "Mswsock.lib")
17841
#pragma comment (lib, "Advapi32.lib")
17842
#endif
17843
#else
17844
#include <arpa/inet.h>
17845
#include <unistd.h>
17846
#include <signal.h>
17847
#include <sys/ioctl.h>
17848
#include <sys/types.h>
17849
#include <sys/socket.h>
17850
#include <sys/un.h>
17851
#include <netinet/in.h>
17852
#include <netinet/tcp.h>
17853
#include <netdb.h>
17854
#include <fcntl.h>
17855
#endif
17856
17857
const JanetAbstractType janet_address_type = {
17858
    "core/socket-address",
17859
    JANET_ATEND_NAME
17860
};
17861
17862
#ifdef JANET_WINDOWS
17863
#define JSOCKCLOSE(x) closesocket((SOCKET) x)
17864
#define JSOCKDEFAULT INVALID_SOCKET
17865
#define JSOCKVALID(x) ((x) != INVALID_SOCKET)
17866
#define JSock SOCKET
17867
#define JSOCKFLAGS 0
17868
#else
17869
0
#define JSOCKCLOSE(x) close(x)
17870
0
#define JSOCKDEFAULT 0
17871
0
#define JSOCKVALID(x) ((x) >= 0)
17872
0
#define JSock int
17873
#ifdef SOCK_CLOEXEC
17874
0
#define JSOCKFLAGS SOCK_CLOEXEC
17875
#else
17876
#define JSOCKFLAGS 0
17877
#endif
17878
#endif
17879
17880
/* maximum number of bytes in a socket address host (post name resolution) */
17881
#ifdef JANET_WINDOWS
17882
#define SA_ADDRSTRLEN (INET6_ADDRSTRLEN + 1)
17883
typedef unsigned short in_port_t;
17884
#else
17885
#define JANET_SA_MAX(a, b) (((a) > (b))? (a) : (b))
17886
#define SA_ADDRSTRLEN JANET_SA_MAX(INET6_ADDRSTRLEN + 1, (sizeof ((struct sockaddr_un *)0)->sun_path) + 1)
17887
#endif
17888
17889
static JanetStream *make_stream(JSock handle, uint32_t flags);
17890
17891
/* We pass this flag to all send calls to prevent sigpipe */
17892
#ifndef MSG_NOSIGNAL
17893
#define MSG_NOSIGNAL 0
17894
#endif
17895
17896
/* Make sure a socket doesn't block */
17897
0
static void janet_net_socknoblock(JSock s) {
17898
#ifdef JANET_WINDOWS
17899
    unsigned long arg = 1;
17900
    ioctlsocket(s, FIONBIO, &arg);
17901
#else
17902
#if !defined(SOCK_CLOEXEC) && defined(O_CLOEXEC)
17903
    int extra = O_CLOEXEC;
17904
#else
17905
0
    int extra = 0;
17906
0
#endif
17907
0
    fcntl(s, F_SETFL, fcntl(s, F_GETFL, 0) | O_NONBLOCK | extra);
17908
#ifdef SO_NOSIGPIPE
17909
    int enable = 1;
17910
    setsockopt(s, SOL_SOCKET, SO_NOSIGPIPE, &enable, sizeof(int));
17911
#endif
17912
0
#endif
17913
0
}
17914
17915
/* State machine for accepting connections. */
17916
17917
#ifdef JANET_WINDOWS
17918
17919
typedef struct {
17920
    JanetListenerState head;
17921
    WSAOVERLAPPED overlapped;
17922
    JanetFunction *function;
17923
    JanetStream *lstream;
17924
    JanetStream *astream;
17925
    char buf[1024];
17926
} NetStateAccept;
17927
17928
static int net_sched_accept_impl(NetStateAccept *state, Janet *err);
17929
17930
JanetAsyncStatus net_machine_accept(JanetListenerState *s, JanetAsyncEvent event) {
17931
    NetStateAccept *state = (NetStateAccept *)s;
17932
    switch (event) {
17933
        default:
17934
            break;
17935
        case JANET_ASYNC_EVENT_MARK: {
17936
            if (state->lstream) janet_mark(janet_wrap_abstract(state->lstream));
17937
            if (state->astream) janet_mark(janet_wrap_abstract(state->astream));
17938
            if (state->function) janet_mark(janet_wrap_function(state->function));
17939
            break;
17940
        }
17941
        case JANET_ASYNC_EVENT_CLOSE:
17942
            janet_schedule(s->fiber, janet_wrap_nil());
17943
            return JANET_ASYNC_STATUS_DONE;
17944
        case JANET_ASYNC_EVENT_COMPLETE: {
17945
            if (state->astream->flags & JANET_STREAM_CLOSED) {
17946
                janet_cancel(s->fiber, janet_cstringv("failed to accept connection"));
17947
                return JANET_ASYNC_STATUS_DONE;
17948
            }
17949
            SOCKET lsock = (SOCKET) state->lstream->handle;
17950
            if (NO_ERROR != setsockopt((SOCKET) state->astream->handle, SOL_SOCKET, SO_UPDATE_ACCEPT_CONTEXT,
17951
                                       (char *) &lsock, sizeof(lsock))) {
17952
                janet_cancel(s->fiber, janet_cstringv("failed to accept connection"));
17953
                return JANET_ASYNC_STATUS_DONE;
17954
            }
17955
17956
            Janet streamv = janet_wrap_abstract(state->astream);
17957
            if (state->function) {
17958
                /* Schedule worker */
17959
                JanetFiber *fiber = janet_fiber(state->function, 64, 1, &streamv);
17960
                fiber->supervisor_channel = s->fiber->supervisor_channel;
17961
                janet_schedule(fiber, janet_wrap_nil());
17962
                /* Now listen again for next connection */
17963
                Janet err;
17964
                if (net_sched_accept_impl(state, &err)) {
17965
                    janet_cancel(s->fiber, err);
17966
                    return JANET_ASYNC_STATUS_DONE;
17967
                }
17968
            } else {
17969
                janet_schedule(s->fiber, streamv);
17970
                return JANET_ASYNC_STATUS_DONE;
17971
            }
17972
        }
17973
    }
17974
    return JANET_ASYNC_STATUS_NOT_DONE;
17975
}
17976
17977
JANET_NO_RETURN static void janet_sched_accept(JanetStream *stream, JanetFunction *fun) {
17978
    Janet err;
17979
    JanetListenerState *s = janet_listen(stream, net_machine_accept, JANET_ASYNC_LISTEN_READ, sizeof(NetStateAccept), NULL);
17980
    NetStateAccept *state = (NetStateAccept *)s;
17981
    memset(&state->overlapped, 0, sizeof(WSAOVERLAPPED));
17982
    memset(&state->buf, 0, 1024);
17983
    state->function = fun;
17984
    state->lstream = stream;
17985
    s->tag = &state->overlapped;
17986
    if (net_sched_accept_impl(state, &err)) janet_panicv(err);
17987
    janet_await();
17988
}
17989
17990
static int net_sched_accept_impl(NetStateAccept *state, Janet *err) {
17991
    SOCKET lsock = (SOCKET) state->lstream->handle;
17992
    SOCKET asock = WSASocketW(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, WSA_FLAG_OVERLAPPED);
17993
    if (asock == INVALID_SOCKET) {
17994
        *err = janet_ev_lasterr();
17995
        return 1;
17996
    }
17997
    JanetStream *astream = make_stream(asock, JANET_STREAM_READABLE | JANET_STREAM_WRITABLE);
17998
    state->astream = astream;
17999
    int socksize = sizeof(SOCKADDR_STORAGE) + 16;
18000
    if (FALSE == AcceptEx(lsock, asock, state->buf, 0, socksize, socksize, NULL, &state->overlapped)) {
18001
        int code = WSAGetLastError();
18002
        if (code == WSA_IO_PENDING) return 0; /* indicates io is happening async */
18003
        *err = janet_ev_lasterr();
18004
        return 1;
18005
    }
18006
    return 0;
18007
}
18008
18009
#else
18010
18011
typedef struct {
18012
    JanetListenerState head;
18013
    JanetFunction *function;
18014
} NetStateAccept;
18015
18016
0
JanetAsyncStatus net_machine_accept(JanetListenerState *s, JanetAsyncEvent event) {
18017
0
    NetStateAccept *state = (NetStateAccept *)s;
18018
0
    switch (event) {
18019
0
        default:
18020
0
            break;
18021
0
        case JANET_ASYNC_EVENT_MARK: {
18022
0
            if (state->function) janet_mark(janet_wrap_function(state->function));
18023
0
            break;
18024
0
        }
18025
0
        case JANET_ASYNC_EVENT_CLOSE:
18026
0
            janet_schedule(s->fiber, janet_wrap_nil());
18027
0
            return JANET_ASYNC_STATUS_DONE;
18028
0
        case JANET_ASYNC_EVENT_READ: {
18029
0
#if defined(JANET_LINUX)
18030
0
            JSock connfd = accept4(s->stream->handle, NULL, NULL, SOCK_CLOEXEC);
18031
#else
18032
            /* On BSDs, CLOEXEC should be inherited from server socket */
18033
            JSock connfd = accept(s->stream->handle, NULL, NULL);
18034
#endif
18035
0
            if (JSOCKVALID(connfd)) {
18036
0
                janet_net_socknoblock(connfd);
18037
0
                JanetStream *stream = make_stream(connfd, JANET_STREAM_READABLE | JANET_STREAM_WRITABLE);
18038
0
                Janet streamv = janet_wrap_abstract(stream);
18039
0
                if (state->function) {
18040
0
                    JanetFiber *fiber = janet_fiber(state->function, 64, 1, &streamv);
18041
0
                    fiber->supervisor_channel = s->fiber->supervisor_channel;
18042
0
                    janet_schedule(fiber, janet_wrap_nil());
18043
0
                } else {
18044
0
                    janet_schedule(s->fiber, streamv);
18045
0
                    return JANET_ASYNC_STATUS_DONE;
18046
0
                }
18047
0
            }
18048
0
            break;
18049
0
        }
18050
0
    }
18051
0
    return JANET_ASYNC_STATUS_NOT_DONE;
18052
0
}
18053
18054
0
JANET_NO_RETURN static void janet_sched_accept(JanetStream *stream, JanetFunction *fun) {
18055
0
    NetStateAccept *state = (NetStateAccept *) janet_listen(stream, net_machine_accept, JANET_ASYNC_LISTEN_READ, sizeof(NetStateAccept), NULL);
18056
0
    state->function = fun;
18057
0
    janet_await();
18058
0
}
18059
18060
18061
#endif
18062
18063
/* Adress info */
18064
18065
0
static int janet_get_sockettype(Janet *argv, int32_t argc, int32_t n) {
18066
0
    JanetKeyword stype = janet_optkeyword(argv, argc, n, NULL);
18067
0
    int socktype = SOCK_DGRAM;
18068
0
    if ((NULL == stype) || !janet_cstrcmp(stype, "stream")) {
18069
0
        socktype = SOCK_STREAM;
18070
0
    } else if (janet_cstrcmp(stype, "datagram")) {
18071
0
        janet_panicf("expected socket type as :stream or :datagram, got %v", argv[n]);
18072
0
    }
18073
0
    return socktype;
18074
0
}
18075
18076
/* Needs argc >= offset + 2 */
18077
/* For unix paths, just rertuns a single sockaddr and sets *is_unix to 1,
18078
 * otherwise 0. Also, ignores is_bind when is a unix socket. */
18079
0
static struct addrinfo *janet_get_addrinfo(Janet *argv, int32_t offset, int socktype, int passive, int *is_unix) {
18080
    /* Unix socket support - not yet supported on windows. */
18081
0
#ifndef JANET_WINDOWS
18082
0
    if (janet_keyeq(argv[offset], "unix")) {
18083
0
        const char *path = janet_getcstring(argv, offset + 1);
18084
0
        struct sockaddr_un *saddr = janet_calloc(1, sizeof(struct sockaddr_un));
18085
0
        if (saddr == NULL) {
18086
0
            JANET_OUT_OF_MEMORY;
18087
0
        }
18088
0
        saddr->sun_family = AF_UNIX;
18089
0
        size_t path_size = sizeof(saddr->sun_path);
18090
0
#ifdef JANET_LINUX
18091
0
        if (path[0] == '@') {
18092
0
            saddr->sun_path[0] = '\0';
18093
0
            snprintf(saddr->sun_path + 1, path_size - 1, "%s", path + 1);
18094
0
        } else
18095
0
#endif
18096
0
        {
18097
0
            snprintf(saddr->sun_path, path_size, "%s", path);
18098
0
        }
18099
0
        *is_unix = 1;
18100
0
        return (struct addrinfo *) saddr;
18101
0
    }
18102
0
#endif
18103
    /* Get host and port */
18104
0
    char *host = (char *)janet_getcstring(argv, offset);
18105
0
    char *port = NULL;
18106
0
    if (janet_checkint(argv[offset + 1])) {
18107
0
        port = (char *)janet_to_string(argv[offset + 1]);
18108
0
    } else {
18109
0
        port = (char *)janet_optcstring(argv, offset + 2, offset + 1, NULL);
18110
0
    }
18111
    /* getaddrinfo */
18112
0
    struct addrinfo *ai = NULL;
18113
0
    struct addrinfo hints;
18114
0
    memset(&hints, 0, sizeof(hints));
18115
0
    hints.ai_family = AF_UNSPEC;
18116
0
    hints.ai_socktype = socktype;
18117
0
    hints.ai_flags = passive ? AI_PASSIVE : 0;
18118
0
    int status = getaddrinfo(host, port, &hints, &ai);
18119
0
    if (status) {
18120
0
        janet_panicf("could not get address info: %s", gai_strerror(status));
18121
0
    }
18122
0
    *is_unix = 0;
18123
0
    return ai;
18124
0
}
18125
18126
/*
18127
 * C Funs
18128
 */
18129
18130
JANET_CORE_FN(cfun_net_sockaddr,
18131
              "(net/address host port &opt type multi)",
18132
              "Look up the connection information for a given hostname, port, and connection type. Returns "
18133
              "a handle that can be used to send datagrams over network without establishing a connection. "
18134
              "On Posix platforms, you can use :unix for host to connect to a unix domain socket, where the name is "
18135
              "given in the port argument. On Linux, abstract "
18136
              "unix domain sockets are specified with a leading '@' character in port. If `multi` is truthy, will "
18137
0
              "return all address that match in an array instead of just the first.") {
18138
0
    janet_sandbox_assert(JANET_SANDBOX_NET_CONNECT); /* connect OR listen */
18139
0
    janet_arity(argc, 2, 4);
18140
0
    int socktype = janet_get_sockettype(argv, argc, 2);
18141
0
    int is_unix = 0;
18142
0
    int make_arr = (argc >= 3 && janet_truthy(argv[3]));
18143
0
    struct addrinfo *ai = janet_get_addrinfo(argv, 0, socktype, 0, &is_unix);
18144
0
#ifndef JANET_WINDOWS
18145
    /* no unix domain socket support on windows yet */
18146
0
    if (is_unix) {
18147
0
        void *abst = janet_abstract(&janet_address_type, sizeof(struct sockaddr_un));
18148
0
        memcpy(abst, ai, sizeof(struct sockaddr_un));
18149
0
        Janet ret = janet_wrap_abstract(abst);
18150
0
        return make_arr ? janet_wrap_array(janet_array_n(&ret, 1)) : ret;
18151
0
    }
18152
0
#endif
18153
0
    if (make_arr) {
18154
        /* Select all */
18155
0
        JanetArray *arr = janet_array(10);
18156
0
        struct addrinfo *iter = ai;
18157
0
        while (NULL != iter) {
18158
0
            void *abst = janet_abstract(&janet_address_type, iter->ai_addrlen);
18159
0
            memcpy(abst, iter->ai_addr, iter->ai_addrlen);
18160
0
            janet_array_push(arr, janet_wrap_abstract(abst));
18161
0
            iter = iter->ai_next;
18162
0
        }
18163
0
        freeaddrinfo(ai);
18164
0
        return janet_wrap_array(arr);
18165
0
    } else {
18166
        /* Select first */
18167
0
        if (NULL == ai) {
18168
0
            janet_panic("no data for given address");
18169
0
        }
18170
0
        void *abst = janet_abstract(&janet_address_type, ai->ai_addrlen);
18171
0
        memcpy(abst, ai->ai_addr, ai->ai_addrlen);
18172
0
        freeaddrinfo(ai);
18173
0
        return janet_wrap_abstract(abst);
18174
0
    }
18175
0
}
18176
18177
JANET_CORE_FN(cfun_net_connect,
18178
              "(net/connect host port &opt type bindhost bindport)",
18179
              "Open a connection to communicate with a server. Returns a duplex stream "
18180
              "that can be used to communicate with the server. Type is an optional keyword "
18181
              "to specify a connection type, either :stream or :datagram. The default is :stream. "
18182
              "Bindhost is an optional string to select from what address to make the outgoing "
18183
0
              "connection, with the default being the same as using the OS's preferred address. ") {
18184
0
    janet_sandbox_assert(JANET_SANDBOX_NET_CONNECT);
18185
0
    janet_arity(argc, 2, 5);
18186
18187
    /* Check arguments */
18188
0
    int socktype = janet_get_sockettype(argv, argc, 2);
18189
0
    int is_unix = 0;
18190
0
    char *bindhost = (char *) janet_optcstring(argv, argc, 3, NULL);
18191
0
    char *bindport = NULL;
18192
0
    if (argc >= 5 && janet_checkint(argv[4])) {
18193
0
        bindport = (char *)janet_to_string(argv[4]);
18194
0
    } else {
18195
0
        bindport = (char *)janet_optcstring(argv, argc, 4, NULL);
18196
0
    }
18197
18198
    /* Where we're connecting to */
18199
0
    struct addrinfo *ai = janet_get_addrinfo(argv, 0, socktype, 0, &is_unix);
18200
18201
    /* Check if we're binding address */
18202
0
    struct addrinfo *binding = NULL;
18203
0
    if (bindhost != NULL) {
18204
0
        if (is_unix) {
18205
0
            freeaddrinfo(ai);
18206
0
            janet_panic("bindhost not supported for unix domain sockets");
18207
0
        }
18208
        /* getaddrinfo */
18209
0
        struct addrinfo hints;
18210
0
        memset(&hints, 0, sizeof(hints));
18211
0
        hints.ai_family = AF_UNSPEC;
18212
0
        hints.ai_socktype = socktype;
18213
0
        hints.ai_flags = 0;
18214
0
        int status = getaddrinfo(bindhost, bindport, &hints, &binding);
18215
0
        if (status) {
18216
0
            freeaddrinfo(ai);
18217
0
            janet_panicf("could not get address info for bindhost: %s", gai_strerror(status));
18218
0
        }
18219
0
    }
18220
18221
18222
    /* Create socket */
18223
0
    JSock sock = JSOCKDEFAULT;
18224
0
    void *addr = NULL;
18225
0
    socklen_t addrlen = 0;
18226
0
#ifndef JANET_WINDOWS
18227
0
    if (is_unix) {
18228
0
        sock = socket(AF_UNIX, socktype | JSOCKFLAGS, 0);
18229
0
        if (!JSOCKVALID(sock)) {
18230
0
            Janet v = janet_ev_lasterr();
18231
0
            janet_free(ai);
18232
0
            janet_panicf("could not create socket: %V", v);
18233
0
        }
18234
0
        addr = (void *) ai;
18235
0
        addrlen = sizeof(struct sockaddr_un);
18236
0
    } else
18237
0
#endif
18238
0
    {
18239
0
        struct addrinfo *rp = NULL;
18240
0
        for (rp = ai; rp != NULL; rp = rp->ai_next) {
18241
#ifdef JANET_WINDOWS
18242
            sock = WSASocketW(rp->ai_family, rp->ai_socktype, rp->ai_protocol, NULL, 0, WSA_FLAG_OVERLAPPED);
18243
#else
18244
0
            sock = socket(rp->ai_family, rp->ai_socktype | JSOCKFLAGS, rp->ai_protocol);
18245
0
#endif
18246
0
            if (JSOCKVALID(sock)) {
18247
0
                addr = rp->ai_addr;
18248
0
                addrlen = (socklen_t) rp->ai_addrlen;
18249
0
                break;
18250
0
            }
18251
0
        }
18252
0
        if (NULL == addr) {
18253
0
            Janet v = janet_ev_lasterr();
18254
0
            if (binding) freeaddrinfo(binding);
18255
0
            freeaddrinfo(ai);
18256
0
            janet_panicf("could not create socket: %V", v);
18257
0
        }
18258
0
    }
18259
18260
    /* Bind to bindhost and bindport if given */
18261
0
    if (binding) {
18262
0
        struct addrinfo *rp = NULL;
18263
0
        int did_bind = 0;
18264
0
        for (rp = binding; rp != NULL; rp = rp->ai_next) {
18265
0
            if (bind(sock, rp->ai_addr, (int) rp->ai_addrlen) == 0) {
18266
0
                did_bind = 1;
18267
0
                break;
18268
0
            }
18269
0
        }
18270
0
        if (!did_bind) {
18271
0
            Janet v = janet_ev_lasterr();
18272
0
            freeaddrinfo(binding);
18273
0
            freeaddrinfo(ai);
18274
0
            JSOCKCLOSE(sock);
18275
0
            janet_panicf("could not bind outgoing address: %V", v);
18276
0
        } else {
18277
0
            freeaddrinfo(binding);
18278
0
        }
18279
0
    }
18280
18281
    /* Wrap socket in abstract type JanetStream */
18282
0
    JanetStream *stream = make_stream(sock, JANET_STREAM_READABLE | JANET_STREAM_WRITABLE);
18283
18284
    /* Set up the socket for non-blocking IO before connecting */
18285
0
    janet_net_socknoblock(sock);
18286
18287
    /* Connect to socket */
18288
#ifdef JANET_WINDOWS
18289
    int status = WSAConnect(sock, addr, addrlen, NULL, NULL, NULL, NULL);
18290
    int err = WSAGetLastError();
18291
    freeaddrinfo(ai);
18292
#else
18293
0
    int status = connect(sock, addr, addrlen);
18294
0
    int err = errno;
18295
0
    if (is_unix) {
18296
0
        janet_free(ai);
18297
0
    } else {
18298
0
        freeaddrinfo(ai);
18299
0
    }
18300
0
#endif
18301
18302
0
    if (status != 0) {
18303
#ifdef JANET_WINDOWS
18304
        if (err != WSAEWOULDBLOCK) {
18305
#else
18306
0
        if (err != EINPROGRESS) {
18307
0
#endif
18308
0
            JSOCKCLOSE(sock);
18309
0
            Janet lasterr = janet_ev_lasterr();
18310
0
            janet_panicf("could not connect socket: %V", lasterr);
18311
0
        }
18312
0
    }
18313
18314
    /* Handle the connect() result in the event loop*/
18315
0
    janet_ev_connect(stream, MSG_NOSIGNAL);
18316
18317
0
    janet_await();
18318
0
}
18319
18320
0
static const char *serverify_socket(JSock sfd) {
18321
    /* Set various socket options */
18322
0
    int enable = 1;
18323
0
    if (setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, (char *) &enable, sizeof(int)) < 0) {
18324
0
        return "setsockopt(SO_REUSEADDR) failed";
18325
0
    }
18326
0
#ifdef SO_REUSEPORT
18327
0
    if (setsockopt(sfd, SOL_SOCKET, SO_REUSEPORT, &enable, sizeof(int)) < 0) {
18328
0
        return "setsockopt(SO_REUSEPORT) failed";
18329
0
    }
18330
0
#endif
18331
0
    janet_net_socknoblock(sfd);
18332
0
    return NULL;
18333
0
}
18334
18335
#ifdef JANET_WINDOWS
18336
#define JANET_SHUTDOWN_RW SD_BOTH
18337
#define JANET_SHUTDOWN_R SD_RECEIVE
18338
#define JANET_SHUTDOWN_W SD_SEND
18339
#else
18340
0
#define JANET_SHUTDOWN_RW SHUT_RDWR
18341
0
#define JANET_SHUTDOWN_R SHUT_RD
18342
0
#define JANET_SHUTDOWN_W SHUT_WR
18343
#endif
18344
18345
JANET_CORE_FN(cfun_net_shutdown,
18346
              "(net/shutdown stream &opt mode)",
18347
              "Stop communication on this socket in a graceful manner, either in both directions or just "
18348
              "reading/writing from the stream. The `mode` parameter controls which communication to stop on the socket. "
18349
              "\n\n* `:wr` is the default and prevents both reading new data from the socket and writing new data to the socket.\n"
18350
              "* `:r` disables reading new data from the socket.\n"
18351
              "* `:w` disable writing data to the socket.\n\n"
18352
0
              "Returns the original socket.") {
18353
0
    janet_arity(argc, 1, 2);
18354
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
18355
0
    janet_stream_flags(stream, JANET_STREAM_SOCKET);
18356
0
    int shutdown_type = JANET_SHUTDOWN_RW;
18357
0
    if (argc == 2) {
18358
0
        const uint8_t *kw = janet_getkeyword(argv, 1);
18359
0
        if (0 == janet_cstrcmp(kw, "rw")) {
18360
0
            shutdown_type = JANET_SHUTDOWN_RW;
18361
0
        } else if (0 == janet_cstrcmp(kw, "r")) {
18362
0
            shutdown_type = JANET_SHUTDOWN_R;
18363
0
        } else if (0 == janet_cstrcmp(kw, "w")) {
18364
0
            shutdown_type = JANET_SHUTDOWN_W;
18365
0
        } else {
18366
0
            janet_panicf("unexpected keyword %v", argv[1]);
18367
0
        }
18368
0
    }
18369
0
    int status;
18370
#ifdef JANET_WINDOWS
18371
    status = shutdown((SOCKET) stream->handle, shutdown_type);
18372
#else
18373
0
    do {
18374
0
        status = shutdown(stream->handle, shutdown_type);
18375
0
    } while (status == -1 && errno == EINTR);
18376
0
#endif
18377
0
    if (status) {
18378
0
        janet_panicf("could not shutdown socket: %V", janet_ev_lasterr());
18379
0
    }
18380
0
    return argv[0];
18381
0
}
18382
18383
JANET_CORE_FN(cfun_net_listen,
18384
              "(net/listen host port &opt type)",
18385
              "Creates a server. Returns a new stream that is neither readable nor "
18386
              "writeable. Use net/accept or net/accept-loop be to handle connections and start the server. "
18387
              "The type parameter specifies the type of network connection, either "
18388
              "a :stream (usually tcp), or :datagram (usually udp). If not specified, the default is "
18389
0
              ":stream. The host and port arguments are the same as in net/address.") {
18390
0
    janet_sandbox_assert(JANET_SANDBOX_NET_LISTEN);
18391
0
    janet_arity(argc, 2, 3);
18392
18393
    /* Get host, port, and handler*/
18394
0
    int socktype = janet_get_sockettype(argv, argc, 2);
18395
0
    int is_unix = 0;
18396
0
    struct addrinfo *ai = janet_get_addrinfo(argv, 0, socktype, 1, &is_unix);
18397
18398
0
    JSock sfd = JSOCKDEFAULT;
18399
0
#ifndef JANET_WINDOWS
18400
0
    if (is_unix) {
18401
0
        sfd = socket(AF_UNIX, socktype | JSOCKFLAGS, 0);
18402
0
        if (!JSOCKVALID(sfd)) {
18403
0
            janet_free(ai);
18404
0
            janet_panicf("could not create socket: %V", janet_ev_lasterr());
18405
0
        }
18406
0
        const char *err = serverify_socket(sfd);
18407
0
        if (NULL != err || bind(sfd, (struct sockaddr *)ai, sizeof(struct sockaddr_un))) {
18408
0
            JSOCKCLOSE(sfd);
18409
0
            janet_free(ai);
18410
0
            if (err) {
18411
0
                janet_panic(err);
18412
0
            } else {
18413
0
                janet_panicf("could not bind socket: %V", janet_ev_lasterr());
18414
0
            }
18415
0
        }
18416
0
        janet_free(ai);
18417
0
    } else
18418
0
#endif
18419
0
    {
18420
        /* Check all addrinfos in a loop for the first that we can bind to. */
18421
0
        struct addrinfo *rp = NULL;
18422
0
        for (rp = ai; rp != NULL; rp = rp->ai_next) {
18423
#ifdef JANET_WINDOWS
18424
            sfd = WSASocketW(rp->ai_family, rp->ai_socktype | JSOCKFLAGS, rp->ai_protocol, NULL, 0, WSA_FLAG_OVERLAPPED);
18425
#else
18426
0
            sfd = socket(rp->ai_family, rp->ai_socktype | JSOCKFLAGS, rp->ai_protocol);
18427
0
#endif
18428
0
            if (!JSOCKVALID(sfd)) continue;
18429
0
            const char *err = serverify_socket(sfd);
18430
0
            if (NULL != err) {
18431
0
                JSOCKCLOSE(sfd);
18432
0
                continue;
18433
0
            }
18434
            /* Bind */
18435
0
            if (bind(sfd, rp->ai_addr, (int) rp->ai_addrlen) == 0) break;
18436
0
            JSOCKCLOSE(sfd);
18437
0
        }
18438
0
        freeaddrinfo(ai);
18439
0
        if (NULL == rp) {
18440
0
            janet_panic("could not bind to any sockets");
18441
0
        }
18442
0
    }
18443
18444
0
    if (socktype == SOCK_DGRAM) {
18445
        /* Datagram server (UDP) */
18446
0
        JanetStream *stream = make_stream(sfd, JANET_STREAM_UDPSERVER | JANET_STREAM_READABLE);
18447
0
        return janet_wrap_abstract(stream);
18448
0
    } else {
18449
        /* Stream server (TCP) */
18450
18451
        /* listen */
18452
0
        int status = listen(sfd, 1024);
18453
0
        if (status) {
18454
0
            JSOCKCLOSE(sfd);
18455
0
            janet_panicf("could not listen on file descriptor: %V", janet_ev_lasterr());
18456
0
        }
18457
18458
        /* Put sfd on our loop */
18459
0
        JanetStream *stream = make_stream(sfd, JANET_STREAM_ACCEPTABLE);
18460
0
        return janet_wrap_abstract(stream);
18461
0
    }
18462
0
}
18463
18464
/* Types of socket's we need to deal with - relevant type puns below.
18465
struct sockaddr *sa;           // Common base structure
18466
struct sockaddr_storage *ss;   // Size of largest socket address type
18467
struct sockaddr_in *sin;       // IPv4 address + port
18468
struct sockaddr_in6 *sin6;     // IPv6 address + port
18469
struct sockaddr_un *sun;       // Unix Domain Socket Address
18470
*/
18471
18472
/* Turn a socket address into a host, port pair.
18473
 * For unix domain sockets, returned tuple will have only a single element, the path string. */
18474
0
static Janet janet_so_getname(const void *sa_any) {
18475
0
    const struct sockaddr *sa = sa_any;
18476
0
    char buffer[SA_ADDRSTRLEN];
18477
0
    switch (sa->sa_family) {
18478
0
        default:
18479
0
            janet_panic("unknown address family");
18480
0
        case AF_INET: {
18481
0
            const struct sockaddr_in *sai = sa_any;
18482
0
            if (!inet_ntop(AF_INET, &(sai->sin_addr), buffer, sizeof(buffer))) {
18483
0
                janet_panic("unable to decode ipv4 host address");
18484
0
            }
18485
0
            Janet pair[2] = {janet_cstringv(buffer), janet_wrap_integer(ntohs(sai->sin_port))};
18486
0
            return janet_wrap_tuple(janet_tuple_n(pair, 2));
18487
0
        }
18488
0
        case AF_INET6: {
18489
0
            const struct sockaddr_in6 *sai6 = sa_any;
18490
0
            if (!inet_ntop(AF_INET6, &(sai6->sin6_addr), buffer, sizeof(buffer))) {
18491
0
                janet_panic("unable to decode ipv4 host address");
18492
0
            }
18493
0
            Janet pair[2] = {janet_cstringv(buffer), janet_wrap_integer(ntohs(sai6->sin6_port))};
18494
0
            return janet_wrap_tuple(janet_tuple_n(pair, 2));
18495
0
        }
18496
0
#ifndef JANET_WINDOWS
18497
0
        case AF_UNIX: {
18498
0
            const struct sockaddr_un *sun = sa_any;
18499
0
            Janet pathname;
18500
0
            if (sun->sun_path[0] == '\0') {
18501
0
                memcpy(buffer, sun->sun_path, sizeof(sun->sun_path));
18502
0
                buffer[0] = '@';
18503
0
                pathname = janet_cstringv(buffer);
18504
0
            } else {
18505
0
                pathname = janet_cstringv(sun->sun_path);
18506
0
            }
18507
0
            return janet_wrap_tuple(janet_tuple_n(&pathname, 1));
18508
0
        }
18509
0
#endif
18510
0
    }
18511
0
}
18512
18513
JANET_CORE_FN(cfun_net_getsockname,
18514
              "(net/localname stream)",
18515
0
              "Gets the local address and port in a tuple in that order.") {
18516
0
    janet_fixarity(argc, 1);
18517
0
    JanetStream *js = janet_getabstract(argv, 0, &janet_stream_type);
18518
0
    if (js->flags & JANET_STREAM_CLOSED) janet_panic("stream closed");
18519
0
    struct sockaddr_storage ss;
18520
0
    socklen_t slen = sizeof(ss);
18521
0
    memset(&ss, 0, slen);
18522
0
    if (getsockname((JSock)js->handle, (struct sockaddr *) &ss, &slen)) {
18523
0
        janet_panicf("Failed to get localname on %v: %V", argv[0], janet_ev_lasterr());
18524
0
    }
18525
0
    janet_assert(slen <= (socklen_t) sizeof(ss), "socket address truncated");
18526
0
    return janet_so_getname(&ss);
18527
0
}
18528
18529
JANET_CORE_FN(cfun_net_getpeername,
18530
              "(net/peername stream)",
18531
0
              "Gets the remote peer's address and port in a tuple in that order.") {
18532
0
    janet_fixarity(argc, 1);
18533
0
    JanetStream *js = janet_getabstract(argv, 0, &janet_stream_type);
18534
0
    if (js->flags & JANET_STREAM_CLOSED) janet_panic("stream closed");
18535
0
    struct sockaddr_storage ss;
18536
0
    socklen_t slen = sizeof(ss);
18537
0
    memset(&ss, 0, slen);
18538
0
    if (getpeername((JSock)js->handle, (struct sockaddr *)&ss, &slen)) {
18539
0
        janet_panicf("Failed to get peername on %v: %V", argv[0], janet_ev_lasterr());
18540
0
    }
18541
0
    janet_assert(slen <= (socklen_t) sizeof(ss), "socket address truncated");
18542
0
    return janet_so_getname(&ss);
18543
0
}
18544
18545
JANET_CORE_FN(cfun_net_address_unpack,
18546
              "(net/address-unpack address)",
18547
              "Given an address returned by net/address, return a host, port pair. Unix domain sockets "
18548
0
              "will have only the path in the returned tuple.") {
18549
0
    janet_fixarity(argc, 1);
18550
0
    struct sockaddr *sa = janet_getabstract(argv, 0, &janet_address_type);
18551
0
    return janet_so_getname(sa);
18552
0
}
18553
18554
JANET_CORE_FN(cfun_stream_accept_loop,
18555
              "(net/accept-loop stream handler)",
18556
              "Shorthand for running a server stream that will continuously accept new connections. "
18557
0
              "Blocks the current fiber until the stream is closed, and will return the stream.") {
18558
0
    janet_fixarity(argc, 2);
18559
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
18560
0
    janet_stream_flags(stream, JANET_STREAM_ACCEPTABLE | JANET_STREAM_SOCKET);
18561
0
    JanetFunction *fun = janet_getfunction(argv, 1);
18562
0
    janet_sched_accept(stream, fun);
18563
0
}
18564
18565
JANET_CORE_FN(cfun_stream_accept,
18566
              "(net/accept stream &opt timeout)",
18567
              "Get the next connection on a server stream. This would usually be called in a loop in a dedicated fiber. "
18568
              "Takes an optional timeout in seconds, after which will return nil. "
18569
0
              "Returns a new duplex stream which represents a connection to the client.") {
18570
0
    janet_arity(argc, 1, 2);
18571
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
18572
0
    janet_stream_flags(stream, JANET_STREAM_ACCEPTABLE | JANET_STREAM_SOCKET);
18573
0
    double to = janet_optnumber(argv, argc, 1, INFINITY);
18574
0
    if (to != INFINITY) janet_addtimeout(to);
18575
0
    janet_sched_accept(stream, NULL);
18576
0
}
18577
18578
JANET_CORE_FN(cfun_stream_read,
18579
              "(net/read stream nbytes &opt buf timeout)",
18580
              "Read up to n bytes from a stream, suspending the current fiber until the bytes are available. "
18581
              "`n` can also be the keyword `:all` to read into the buffer until end of stream. "
18582
              "If less than n bytes are available (and more than 0), will push those bytes and return early. "
18583
              "Takes an optional timeout in seconds, after which will return nil. "
18584
0
              "Returns a buffer with up to n more bytes in it, or raises an error if the read failed.") {
18585
0
    janet_arity(argc, 2, 4);
18586
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
18587
0
    janet_stream_flags(stream, JANET_STREAM_READABLE | JANET_STREAM_SOCKET);
18588
0
    JanetBuffer *buffer = janet_optbuffer(argv, argc, 2, 10);
18589
0
    double to = janet_optnumber(argv, argc, 3, INFINITY);
18590
0
    if (janet_keyeq(argv[1], "all")) {
18591
0
        if (to != INFINITY) janet_addtimeout(to);
18592
0
        janet_ev_recvchunk(stream, buffer, INT32_MAX, MSG_NOSIGNAL);
18593
0
    } else {
18594
0
        int32_t n = janet_getnat(argv, 1);
18595
0
        if (to != INFINITY) janet_addtimeout(to);
18596
0
        janet_ev_recv(stream, buffer, n, MSG_NOSIGNAL);
18597
0
    }
18598
0
    janet_await();
18599
0
}
18600
18601
JANET_CORE_FN(cfun_stream_chunk,
18602
              "(net/chunk stream nbytes &opt buf timeout)",
18603
              "Same a net/read, but will wait for all n bytes to arrive rather than return early. "
18604
0
              "Takes an optional timeout in seconds, after which will return nil.") {
18605
0
    janet_arity(argc, 2, 4);
18606
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
18607
0
    janet_stream_flags(stream, JANET_STREAM_READABLE | JANET_STREAM_SOCKET);
18608
0
    int32_t n = janet_getnat(argv, 1);
18609
0
    JanetBuffer *buffer = janet_optbuffer(argv, argc, 2, 10);
18610
0
    double to = janet_optnumber(argv, argc, 3, INFINITY);
18611
0
    if (to != INFINITY) janet_addtimeout(to);
18612
0
    janet_ev_recvchunk(stream, buffer, n, MSG_NOSIGNAL);
18613
0
    janet_await();
18614
0
}
18615
18616
JANET_CORE_FN(cfun_stream_recv_from,
18617
              "(net/recv-from stream nbytes buf &opt timeout)",
18618
              "Receives data from a server stream and puts it into a buffer. Returns the socket-address the "
18619
0
              "packet came from. Takes an optional timeout in seconds, after which will return nil.") {
18620
0
    janet_arity(argc, 3, 4);
18621
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
18622
0
    janet_stream_flags(stream, JANET_STREAM_UDPSERVER | JANET_STREAM_SOCKET);
18623
0
    int32_t n = janet_getnat(argv, 1);
18624
0
    JanetBuffer *buffer = janet_getbuffer(argv, 2);
18625
0
    double to = janet_optnumber(argv, argc, 3, INFINITY);
18626
0
    if (to != INFINITY) janet_addtimeout(to);
18627
0
    janet_ev_recvfrom(stream, buffer, n, MSG_NOSIGNAL);
18628
0
    janet_await();
18629
0
}
18630
18631
JANET_CORE_FN(cfun_stream_write,
18632
              "(net/write stream data &opt timeout)",
18633
              "Write data to a stream, suspending the current fiber until the write "
18634
              "completes. Takes an optional timeout in seconds, after which will return nil. "
18635
0
              "Returns nil, or raises an error if the write failed.") {
18636
0
    janet_arity(argc, 2, 3);
18637
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
18638
0
    janet_stream_flags(stream, JANET_STREAM_WRITABLE | JANET_STREAM_SOCKET);
18639
0
    double to = janet_optnumber(argv, argc, 2, INFINITY);
18640
0
    if (janet_checktype(argv[1], JANET_BUFFER)) {
18641
0
        if (to != INFINITY) janet_addtimeout(to);
18642
0
        janet_ev_send_buffer(stream, janet_getbuffer(argv, 1), MSG_NOSIGNAL);
18643
0
    } else {
18644
0
        JanetByteView bytes = janet_getbytes(argv, 1);
18645
0
        if (to != INFINITY) janet_addtimeout(to);
18646
0
        janet_ev_send_string(stream, bytes.bytes, MSG_NOSIGNAL);
18647
0
    }
18648
0
    janet_await();
18649
0
}
18650
18651
JANET_CORE_FN(cfun_stream_send_to,
18652
              "(net/send-to stream dest data &opt timeout)",
18653
              "Writes a datagram to a server stream. dest is a the destination address of the packet. "
18654
              "Takes an optional timeout in seconds, after which will return nil. "
18655
0
              "Returns stream.") {
18656
0
    janet_arity(argc, 3, 4);
18657
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
18658
0
    janet_stream_flags(stream, JANET_STREAM_UDPSERVER | JANET_STREAM_SOCKET);
18659
0
    void *dest = janet_getabstract(argv, 1, &janet_address_type);
18660
0
    double to = janet_optnumber(argv, argc, 3, INFINITY);
18661
0
    if (janet_checktype(argv[2], JANET_BUFFER)) {
18662
0
        if (to != INFINITY) janet_addtimeout(to);
18663
0
        janet_ev_sendto_buffer(stream, janet_getbuffer(argv, 2), dest, MSG_NOSIGNAL);
18664
0
    } else {
18665
0
        JanetByteView bytes = janet_getbytes(argv, 2);
18666
0
        if (to != INFINITY) janet_addtimeout(to);
18667
0
        janet_ev_sendto_string(stream, bytes.bytes, dest, MSG_NOSIGNAL);
18668
0
    }
18669
0
    janet_await();
18670
0
}
18671
18672
JANET_CORE_FN(cfun_stream_flush,
18673
              "(net/flush stream)",
18674
              "Make sure that a stream is not buffering any data. This temporarily disables Nagle's algorithm. "
18675
0
              "Use this to make sure data is sent without delay. Returns stream.") {
18676
0
    janet_fixarity(argc, 1);
18677
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
18678
0
    janet_stream_flags(stream, JANET_STREAM_WRITABLE | JANET_STREAM_SOCKET);
18679
    /* Toggle no delay flag */
18680
0
    int flag = 1;
18681
0
    setsockopt((JSock) stream->handle, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int));
18682
0
    flag = 0;
18683
0
    setsockopt((JSock) stream->handle, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int));
18684
0
    return argv[0];
18685
0
}
18686
18687
struct sockopt_type {
18688
    const char *name;
18689
    int level;
18690
    int optname;
18691
    enum JanetType type;
18692
};
18693
18694
/* List of supported socket options; The type JANET_POINTER is used
18695
 * for options that require special handling depending on the type. */
18696
static const struct sockopt_type sockopt_type_list[] = {
18697
    { "so-broadcast", SOL_SOCKET, SO_BROADCAST, JANET_BOOLEAN },
18698
    { "so-reuseaddr", SOL_SOCKET, SO_REUSEADDR, JANET_BOOLEAN },
18699
    { "so-keepalive", SOL_SOCKET, SO_KEEPALIVE, JANET_BOOLEAN },
18700
    { "ip-multicast-ttl", IPPROTO_IP, IP_MULTICAST_TTL, JANET_NUMBER },
18701
    { "ip-add-membership", IPPROTO_IP, IP_ADD_MEMBERSHIP, JANET_POINTER },
18702
    { "ip-drop-membership", IPPROTO_IP, IP_DROP_MEMBERSHIP, JANET_POINTER },
18703
    { "ipv6-join-group", IPPROTO_IPV6, IPV6_JOIN_GROUP, JANET_POINTER },
18704
    { "ipv6-leave-group", IPPROTO_IPV6, IPV6_LEAVE_GROUP, JANET_POINTER },
18705
    { NULL, 0, 0, JANET_POINTER }
18706
};
18707
18708
JANET_CORE_FN(cfun_net_setsockopt,
18709
              "(net/setsockopt stream option value)",
18710
              "set socket options.\n"
18711
              "\n"
18712
              "supported options and associated value types:\n"
18713
              "- :so-broadcast boolean\n"
18714
              "- :so-reuseaddr boolean\n"
18715
              "- :so-keepalive boolean\n"
18716
              "- :ip-multicast-ttl number\n"
18717
              "- :ip-add-membership string\n"
18718
              "- :ip-drop-membership string\n"
18719
              "- :ipv6-join-group string\n"
18720
0
              "- :ipv6-leave-group string\n") {
18721
0
    janet_arity(argc, 3, 3);
18722
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
18723
0
    janet_stream_flags(stream, JANET_STREAM_SOCKET);
18724
0
    JanetKeyword optstr = janet_getkeyword(argv, 1);
18725
18726
0
    const struct sockopt_type *st = sockopt_type_list;
18727
0
    while (st->name) {
18728
0
        if (janet_cstrcmp(optstr, st->name) == 0) {
18729
0
            break;
18730
0
        }
18731
0
        st++;
18732
0
    }
18733
18734
0
    if (st->name == NULL) {
18735
0
        janet_panicf("unknown socket option %q", argv[1]);
18736
0
    }
18737
18738
0
    union {
18739
0
        int v_int;
18740
0
        struct ip_mreq v_mreq;
18741
0
        struct ipv6_mreq v_mreq6;
18742
0
    } val;
18743
18744
0
    void *optval = (void *)&val;
18745
0
    socklen_t optlen = 0;
18746
18747
0
    if (st->type == JANET_BOOLEAN) {
18748
0
        val.v_int = janet_getboolean(argv, 2);
18749
0
        optlen = sizeof(val.v_int);
18750
0
    } else if (st->type == JANET_NUMBER) {
18751
0
        val.v_int = janet_getinteger(argv, 2);
18752
0
        optlen = sizeof(val.v_int);
18753
0
    } else if (st->optname == IP_ADD_MEMBERSHIP || st->optname == IP_DROP_MEMBERSHIP) {
18754
0
        const char *addr = janet_getcstring(argv, 2);
18755
0
        memset(&val.v_mreq, 0, sizeof val.v_mreq);
18756
0
        val.v_mreq.imr_interface.s_addr = htonl(INADDR_ANY);
18757
0
        inet_pton(AF_INET, addr, &val.v_mreq.imr_multiaddr.s_addr);
18758
0
        optlen = sizeof(val.v_mreq);
18759
0
    } else if (st->optname == IPV6_JOIN_GROUP || st->optname == IPV6_LEAVE_GROUP) {
18760
0
        const char *addr = janet_getcstring(argv, 2);
18761
0
        memset(&val.v_mreq6, 0, sizeof val.v_mreq6);
18762
0
        val.v_mreq6.ipv6mr_interface = 0;
18763
0
        inet_pton(AF_INET6, addr, &val.v_mreq6.ipv6mr_multiaddr);
18764
0
        optlen = sizeof(val.v_mreq6);
18765
0
    } else {
18766
0
        janet_panicf("invalid socket option type");
18767
0
    }
18768
18769
0
    janet_assert(optlen != 0, "invalid socket option value");
18770
18771
0
    int r = setsockopt((JSock) stream->handle, st->level, st->optname, optval, optlen);
18772
0
    if (r == -1) {
18773
0
        janet_panicf("setsockopt(%q): %s", argv[1], strerror(errno));
18774
0
    }
18775
18776
0
    return janet_wrap_nil();
18777
0
}
18778
18779
static const JanetMethod net_stream_methods[] = {
18780
    {"chunk", cfun_stream_chunk},
18781
    {"close", janet_cfun_stream_close},
18782
    {"read", cfun_stream_read},
18783
    {"write", cfun_stream_write},
18784
    {"flush", cfun_stream_flush},
18785
    {"accept", cfun_stream_accept},
18786
    {"accept-loop", cfun_stream_accept_loop},
18787
    {"send-to", cfun_stream_send_to},
18788
    {"recv-from", cfun_stream_recv_from},
18789
    {"evread", janet_cfun_stream_read},
18790
    {"evchunk", janet_cfun_stream_chunk},
18791
    {"evwrite", janet_cfun_stream_write},
18792
    {"shutdown", cfun_net_shutdown},
18793
    {"setsockopt", cfun_net_setsockopt},
18794
    {NULL, NULL}
18795
};
18796
18797
0
static JanetStream *make_stream(JSock handle, uint32_t flags) {
18798
0
    return janet_stream((JanetHandle) handle, flags | JANET_STREAM_SOCKET, net_stream_methods);
18799
0
}
18800
18801
0
void janet_lib_net(JanetTable *env) {
18802
0
    JanetRegExt net_cfuns[] = {
18803
0
        JANET_CORE_REG("net/address", cfun_net_sockaddr),
18804
0
        JANET_CORE_REG("net/listen", cfun_net_listen),
18805
0
        JANET_CORE_REG("net/accept", cfun_stream_accept),
18806
0
        JANET_CORE_REG("net/accept-loop", cfun_stream_accept_loop),
18807
0
        JANET_CORE_REG("net/read", cfun_stream_read),
18808
0
        JANET_CORE_REG("net/chunk", cfun_stream_chunk),
18809
0
        JANET_CORE_REG("net/write", cfun_stream_write),
18810
0
        JANET_CORE_REG("net/send-to", cfun_stream_send_to),
18811
0
        JANET_CORE_REG("net/recv-from", cfun_stream_recv_from),
18812
0
        JANET_CORE_REG("net/flush", cfun_stream_flush),
18813
0
        JANET_CORE_REG("net/connect", cfun_net_connect),
18814
0
        JANET_CORE_REG("net/shutdown", cfun_net_shutdown),
18815
0
        JANET_CORE_REG("net/peername", cfun_net_getpeername),
18816
0
        JANET_CORE_REG("net/localname", cfun_net_getsockname),
18817
0
        JANET_CORE_REG("net/address-unpack", cfun_net_address_unpack),
18818
0
        JANET_CORE_REG("net/setsockopt", cfun_net_setsockopt),
18819
0
        JANET_REG_END
18820
0
    };
18821
0
    janet_core_cfuns_ext(env, NULL, net_cfuns);
18822
0
}
18823
18824
5.24k
void janet_net_init(void) {
18825
#ifdef JANET_WINDOWS
18826
    WSADATA wsaData;
18827
    janet_assert(!WSAStartup(MAKEWORD(2, 2), &wsaData), "could not start winsock");
18828
#endif
18829
5.24k
}
18830
18831
5.24k
void janet_net_deinit(void) {
18832
#ifdef JANET_WINDOWS
18833
    WSACleanup();
18834
#endif
18835
5.24k
}
18836
18837
#endif
18838
18839
18840
/* src/core/os.c */
18841
#line 0 "src/core/os.c"
18842
18843
/*
18844
* Copyright (c) 2023 Calvin Rose and contributors.
18845
*
18846
* Permission is hereby granted, free of charge, to any person obtaining a copy
18847
* of this software and associated documentation files (the "Software"), to
18848
* deal in the Software without restriction, including without limitation the
18849
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
18850
* sell copies of the Software, and to permit persons to whom the Software is
18851
* furnished to do so, subject to the following conditions:
18852
*
18853
* The above copyright notice and this permission notice shall be included in
18854
* all copies or substantial portions of the Software.
18855
*
18856
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18857
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18858
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18859
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18860
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18861
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
18862
* IN THE SOFTWARE.
18863
*/
18864
18865
#ifndef JANET_AMALG
18866
#include "features.h"
18867
#include <janet.h>
18868
#include "util.h"
18869
#include "gc.h"
18870
#endif
18871
18872
#ifndef JANET_REDUCED_OS
18873
18874
#include <stdlib.h>
18875
#include <time.h>
18876
#include <fcntl.h>
18877
#include <errno.h>
18878
#include <limits.h>
18879
#include <stdio.h>
18880
#include <string.h>
18881
#include <sys/stat.h>
18882
#include <signal.h>
18883
18884
#ifdef JANET_BSD
18885
#include <sys/sysctl.h>
18886
#endif
18887
18888
#ifdef JANET_LINUX
18889
#include <sched.h>
18890
#endif
18891
18892
#ifdef JANET_WINDOWS
18893
#include <windows.h>
18894
#include <direct.h>
18895
#include <sys/utime.h>
18896
#include <io.h>
18897
#include <process.h>
18898
#else
18899
#include <spawn.h>
18900
#include <utime.h>
18901
#include <unistd.h>
18902
#include <dirent.h>
18903
#include <sys/types.h>
18904
#include <sys/wait.h>
18905
#ifdef JANET_APPLE
18906
#include <crt_externs.h>
18907
#define environ (*_NSGetEnviron())
18908
#else
18909
extern char **environ;
18910
#endif
18911
#ifdef JANET_THREADS
18912
#include <pthread.h>
18913
#endif
18914
#endif
18915
18916
/* Not POSIX, but all Unixes but Solaris have this function. */
18917
#if defined(JANET_POSIX) && !defined(__sun)
18918
time_t timegm(struct tm *tm);
18919
#elif defined(JANET_WINDOWS)
18920
#define timegm _mkgmtime
18921
#endif
18922
18923
/* Access to some global variables should be synchronized if not in single threaded mode, as
18924
 * setenv/getenv are not thread safe. */
18925
#ifdef JANET_THREADS
18926
# ifdef JANET_WINDOWS
18927
static CRITICAL_SECTION env_lock;
18928
static void janet_lock_environ(void) {
18929
    EnterCriticalSection(&env_lock);
18930
}
18931
static void janet_unlock_environ(void) {
18932
    LeaveCriticalSection(&env_lock);
18933
}
18934
# else
18935
static pthread_mutex_t env_lock = PTHREAD_MUTEX_INITIALIZER;
18936
static void janet_lock_environ(void) {
18937
    pthread_mutex_lock(&env_lock);
18938
}
18939
static void janet_unlock_environ(void) {
18940
    pthread_mutex_unlock(&env_lock);
18941
}
18942
# endif
18943
#else
18944
0
static void janet_lock_environ(void) {
18945
0
}
18946
0
static void janet_unlock_environ(void) {
18947
0
}
18948
#endif
18949
18950
#endif /* JANET_REDCUED_OS */
18951
18952
/* Core OS functions */
18953
18954
/* Full OS functions */
18955
18956
#define janet_stringify1(x) #x
18957
#define janet_stringify(x) janet_stringify1(x)
18958
18959
JANET_CORE_FN(os_which,
18960
              "(os/which)",
18961
              "Check the current operating system. Returns one of:\n\n"
18962
              "* :windows\n\n"
18963
              "* :mingw\n\n"
18964
              "* :cygwin\n\n"
18965
              "* :macos\n\n"
18966
              "* :web - Web assembly (emscripten)\n\n"
18967
              "* :linux\n\n"
18968
              "* :freebsd\n\n"
18969
              "* :openbsd\n\n"
18970
              "* :netbsd\n\n"
18971
              "* :dragonfly\n\n"
18972
              "* :bsd\n\n"
18973
              "* :posix - A POSIX compatible system (default)\n\n"
18974
0
              "May also return a custom keyword specified at build time.") {
18975
0
    janet_fixarity(argc, 0);
18976
0
    (void) argv;
18977
#if defined(JANET_OS_NAME)
18978
    return janet_ckeywordv(janet_stringify(JANET_OS_NAME));
18979
#elif defined(JANET_MINGW)
18980
    return janet_ckeywordv("mingw");
18981
#elif defined(JANET_CYGWIN)
18982
    return janet_ckeywordv("cygwin");
18983
#elif defined(JANET_WINDOWS)
18984
    return janet_ckeywordv("windows");
18985
#elif defined(JANET_APPLE)
18986
    return janet_ckeywordv("macos");
18987
#elif defined(__EMSCRIPTEN__)
18988
    return janet_ckeywordv("web");
18989
#elif defined(JANET_LINUX)
18990
0
    return janet_ckeywordv("linux");
18991
#elif defined(__FreeBSD__)
18992
    return janet_ckeywordv("freebsd");
18993
#elif defined(__NetBSD__)
18994
    return janet_ckeywordv("netbsd");
18995
#elif defined(__OpenBSD__)
18996
    return janet_ckeywordv("openbsd");
18997
#elif defined(__DragonFly__)
18998
    return janet_ckeywordv("dragonfly");
18999
#elif defined(JANET_BSD)
19000
    return janet_ckeywordv("bsd");
19001
#else
19002
    return janet_ckeywordv("posix");
19003
#endif
19004
0
}
19005
19006
/* Detect the ISA we are compiled for */
19007
JANET_CORE_FN(os_arch,
19008
              "(os/arch)",
19009
              "Check the ISA that janet was compiled for. Returns one of:\n\n"
19010
              "* :x86\n\n"
19011
              "* :x64\n\n"
19012
              "* :arm\n\n"
19013
              "* :aarch64\n\n"
19014
              "* :riscv32\n\n"
19015
              "* :riscv64\n\n"
19016
              "* :sparc\n\n"
19017
              "* :wasm\n\n"
19018
0
              "* :unknown\n") {
19019
0
    janet_fixarity(argc, 0);
19020
0
    (void) argv;
19021
    /* Check 64-bit vs 32-bit */
19022
#if defined(JANET_ARCH_NAME)
19023
    return janet_ckeywordv(janet_stringify(JANET_ARCH_NAME));
19024
#elif defined(__EMSCRIPTEN__)
19025
    return janet_ckeywordv("wasm");
19026
#elif (defined(__x86_64__) || defined(_M_X64))
19027
0
    return janet_ckeywordv("x64");
19028
#elif defined(__i386) || defined(_M_IX86)
19029
    return janet_ckeywordv("x86");
19030
#elif defined(_M_ARM64) || defined(__aarch64__)
19031
    return janet_ckeywordv("aarch64");
19032
#elif defined(_M_ARM) || defined(__arm__)
19033
    return janet_ckeywordv("arm");
19034
#elif (defined(__riscv) && (__riscv_xlen == 64))
19035
    return janet_ckeywordv("riscv64");
19036
#elif (defined(__riscv) && (__riscv_xlen == 32))
19037
    return janet_ckeywordv("riscv32");
19038
#elif (defined(__sparc__))
19039
    return janet_ckeywordv("sparc");
19040
#elif (defined(__ppc__))
19041
    return janet_ckeywordv("ppc");
19042
#elif (defined(__ppc64__) || defined(_ARCH_PPC64) || defined(_M_PPC))
19043
    return janet_ckeywordv("ppc64");
19044
#else
19045
    return janet_ckeywordv("unknown");
19046
#endif
19047
0
}
19048
19049
/* Detect the compiler used to build the interpreter */
19050
JANET_CORE_FN(os_compiler,
19051
              "(os/compiler)",
19052
              "Get the compiler used to compile the interpreter. Returns one of:\n\n"
19053
              "* :gcc\n\n"
19054
              "* :clang\n\n"
19055
              "* :msvc\n\n"
19056
0
              "* :unknown\n\n") {
19057
0
    janet_fixarity(argc, 0);
19058
0
    (void) argv;
19059
#if defined(_MSC_VER)
19060
    return janet_ckeywordv("msvc");
19061
#elif defined(__clang__)
19062
0
    return janet_ckeywordv("clang");
19063
#elif defined(__GNUC__)
19064
    return janet_ckeywordv("gcc");
19065
#else
19066
    return janet_ckeywordv("unknown");
19067
#endif
19068
0
}
19069
19070
#undef janet_stringify1
19071
#undef janet_stringify
19072
19073
JANET_CORE_FN(os_exit,
19074
              "(os/exit &opt x)",
19075
              "Exit from janet with an exit code equal to x. If x is not an integer, "
19076
0
              "the exit with status equal the hash of x.") {
19077
0
    janet_arity(argc, 0, 1);
19078
0
    int status;
19079
0
    if (argc == 0) {
19080
0
        status = EXIT_SUCCESS;
19081
0
    } else if (janet_checkint(argv[0])) {
19082
0
        status = janet_unwrap_integer(argv[0]);
19083
0
    } else {
19084
0
        status = EXIT_FAILURE;
19085
0
    }
19086
0
    janet_deinit();
19087
0
    exit(status);
19088
0
    return janet_wrap_nil();
19089
0
}
19090
19091
#ifndef JANET_REDUCED_OS
19092
19093
JANET_CORE_FN(os_cpu_count,
19094
              "(os/cpu-count &opt dflt)",
19095
              "Get an approximate number of CPUs available on for this process to use. If "
19096
0
              "unable to get an approximation, will return a default value dflt.") {
19097
0
    janet_arity(argc, 0, 1);
19098
0
    Janet dflt = argc > 0 ? argv[0] : janet_wrap_nil();
19099
#ifdef JANET_WINDOWS
19100
    (void) dflt;
19101
    SYSTEM_INFO info;
19102
    GetSystemInfo(&info);
19103
    return janet_wrap_integer(info.dwNumberOfProcessors);
19104
#elif defined(JANET_LINUX)
19105
0
    (void) dflt;
19106
0
    cpu_set_t cs;
19107
0
    CPU_ZERO(&cs);
19108
0
    sched_getaffinity(0, sizeof(cs), &cs);
19109
0
    int count = CPU_COUNT(&cs);
19110
0
    return janet_wrap_integer(count);
19111
#elif defined(JANET_BSD) && defined(HW_NCPUONLINE)
19112
    (void) dflt;
19113
    const int name[2] = {CTL_HW, HW_NCPUONLINE};
19114
    int result = 0;
19115
    size_t len = sizeof(int);
19116
    if (-1 == sysctl(name, 2, &result, &len, NULL, 0)) {
19117
        return dflt;
19118
    }
19119
    return janet_wrap_integer(result);
19120
#elif defined(JANET_BSD) && defined(HW_NCPU)
19121
    (void) dflt;
19122
    const int name[2] = {CTL_HW, HW_NCPU};
19123
    int result = 0;
19124
    size_t len = sizeof(int);
19125
    if (-1 == sysctl(name, 2, &result, &len, NULL, 0)) {
19126
        return dflt;
19127
    }
19128
    return janet_wrap_integer(result);
19129
#else
19130
    return dflt;
19131
#endif
19132
0
}
19133
19134
19135
#ifndef JANET_NO_PROCESSES
19136
19137
/* Get env for os_execute */
19138
#ifdef JANET_WINDOWS
19139
typedef char *EnvBlock;
19140
#else
19141
typedef char **EnvBlock;
19142
#endif
19143
19144
/* Get env for os_execute */
19145
0
static EnvBlock os_execute_env(int32_t argc, const Janet *argv) {
19146
0
    if (argc <= 2) return NULL;
19147
0
    JanetDictView dict = janet_getdictionary(argv, 2);
19148
#ifdef JANET_WINDOWS
19149
    JanetBuffer *temp = janet_buffer(10);
19150
    for (int32_t i = 0; i < dict.cap; i++) {
19151
        const JanetKV *kv = dict.kvs + i;
19152
        if (!janet_checktype(kv->key, JANET_STRING)) continue;
19153
        if (!janet_checktype(kv->value, JANET_STRING)) continue;
19154
        const uint8_t *keys = janet_unwrap_string(kv->key);
19155
        const uint8_t *vals = janet_unwrap_string(kv->value);
19156
        janet_buffer_push_bytes(temp, keys, janet_string_length(keys));
19157
        janet_buffer_push_u8(temp, '=');
19158
        janet_buffer_push_bytes(temp, vals, janet_string_length(vals));
19159
        janet_buffer_push_u8(temp, '\0');
19160
    }
19161
    janet_buffer_push_u8(temp, '\0');
19162
    char *ret = janet_smalloc(temp->count);
19163
    memcpy(ret, temp->data, temp->count);
19164
    return ret;
19165
#else
19166
0
    char **envp = janet_smalloc(sizeof(char *) * ((size_t)dict.len + 1));
19167
0
    int32_t j = 0;
19168
0
    for (int32_t i = 0; i < dict.cap; i++) {
19169
0
        const JanetKV *kv = dict.kvs + i;
19170
0
        if (!janet_checktype(kv->key, JANET_STRING)) continue;
19171
0
        if (!janet_checktype(kv->value, JANET_STRING)) continue;
19172
0
        const uint8_t *keys = janet_unwrap_string(kv->key);
19173
0
        const uint8_t *vals = janet_unwrap_string(kv->value);
19174
0
        int32_t klen = janet_string_length(keys);
19175
0
        int32_t vlen = janet_string_length(vals);
19176
        /* Check keys has no embedded 0s or =s. */
19177
0
        int skip = 0;
19178
0
        for (int32_t k = 0; k < klen; k++) {
19179
0
            if (keys[k] == '\0' || keys[k] == '=') {
19180
0
                skip = 1;
19181
0
                break;
19182
0
            }
19183
0
        }
19184
0
        if (skip) continue;
19185
0
        char *envitem = janet_smalloc((size_t) klen + (size_t) vlen + 2);
19186
0
        memcpy(envitem, keys, klen);
19187
0
        envitem[klen] = '=';
19188
0
        memcpy(envitem + klen + 1, vals, vlen);
19189
0
        envitem[klen + vlen + 1] = 0;
19190
0
        envp[j++] = envitem;
19191
0
    }
19192
0
    envp[j] = NULL;
19193
0
    return envp;
19194
0
#endif
19195
0
}
19196
19197
0
static void os_execute_cleanup(EnvBlock envp, const char **child_argv) {
19198
#ifdef JANET_WINDOWS
19199
    (void) child_argv;
19200
    if (NULL != envp) janet_sfree(envp);
19201
#else
19202
0
    janet_sfree((void *)child_argv);
19203
0
    if (NULL != envp) {
19204
0
        char **envitem = envp;
19205
0
        while (*envitem != NULL) {
19206
0
            janet_sfree(*envitem);
19207
0
            envitem++;
19208
0
        }
19209
0
    }
19210
0
    janet_sfree(envp);
19211
0
#endif
19212
0
}
19213
19214
#ifdef JANET_WINDOWS
19215
/* Windows processes created via CreateProcess get only one command line argument string, and
19216
 * must parse this themselves. Each processes is free to do this however they like, but the
19217
 * standard parsing method is CommandLineToArgvW. We need to properly escape arguments into
19218
 * a single string of this format. Returns a buffer that can be cast into a c string. */
19219
static JanetBuffer *os_exec_escape(JanetView args) {
19220
    JanetBuffer *b = janet_buffer(0);
19221
    for (int32_t i = 0; i < args.len; i++) {
19222
        const char *arg = janet_getcstring(args.items, i);
19223
19224
        /* Push leading space if not first */
19225
        if (i) janet_buffer_push_u8(b, ' ');
19226
19227
        /* Find first special character */
19228
        const char *first_spec = arg;
19229
        while (*first_spec) {
19230
            switch (*first_spec) {
19231
                case ' ':
19232
                case '\t':
19233
                case '\v':
19234
                case '\n':
19235
                case '"':
19236
                    goto found;
19237
                case '\0':
19238
                    janet_panic("embedded 0 not allowed in command line string");
19239
                default:
19240
                    first_spec++;
19241
                    break;
19242
            }
19243
        }
19244
    found:
19245
19246
        /* Check if needs escape */
19247
        if (*first_spec == '\0') {
19248
            /* No escape needed */
19249
            janet_buffer_push_cstring(b, arg);
19250
        } else {
19251
            /* Escape */
19252
            janet_buffer_push_u8(b, '"');
19253
            for (const char *c = arg; ; c++) {
19254
                unsigned numBackSlashes = 0;
19255
                while (*c == '\\') {
19256
                    c++;
19257
                    numBackSlashes++;
19258
                }
19259
                if (*c == '"') {
19260
                    /* Escape all backslashes and double quote mark */
19261
                    int32_t n = 2 * numBackSlashes + 1;
19262
                    janet_buffer_extra(b, n + 1);
19263
                    memset(b->data + b->count, '\\', n);
19264
                    b->count += n;
19265
                    janet_buffer_push_u8(b, '"');
19266
                } else if (*c) {
19267
                    /* Don't escape backslashes. */
19268
                    int32_t n = numBackSlashes;
19269
                    janet_buffer_extra(b, n + 1);
19270
                    memset(b->data + b->count, '\\', n);
19271
                    b->count += n;
19272
                    janet_buffer_push_u8(b, *c);
19273
                } else {
19274
                    /* we finished Escape all backslashes */
19275
                    int32_t n = 2 * numBackSlashes;
19276
                    janet_buffer_extra(b, n + 1);
19277
                    memset(b->data + b->count, '\\', n);
19278
                    b->count += n;
19279
                    break;
19280
                }
19281
            }
19282
            janet_buffer_push_u8(b, '"');
19283
        }
19284
    }
19285
    janet_buffer_push_u8(b, 0);
19286
    return b;
19287
}
19288
#endif
19289
19290
/* Process type for when running a subprocess and not immediately waiting */
19291
static const JanetAbstractType ProcAT;
19292
#define JANET_PROC_CLOSED 1
19293
0
#define JANET_PROC_WAITED 2
19294
0
#define JANET_PROC_WAITING 4
19295
0
#define JANET_PROC_ERROR_NONZERO 8
19296
0
#define JANET_PROC_OWNS_STDIN 16
19297
0
#define JANET_PROC_OWNS_STDOUT 32
19298
0
#define JANET_PROC_OWNS_STDERR 64
19299
0
#define JANET_PROC_ALLOW_ZOMBIE 128
19300
typedef struct {
19301
    int flags;
19302
#ifdef JANET_WINDOWS
19303
    HANDLE pHandle;
19304
    HANDLE tHandle;
19305
#else
19306
    pid_t pid;
19307
#endif
19308
    int return_code;
19309
#ifdef JANET_EV
19310
    JanetStream *in;
19311
    JanetStream *out;
19312
    JanetStream *err;
19313
#else
19314
    JanetFile *in;
19315
    JanetFile *out;
19316
    JanetFile *err;
19317
#endif
19318
} JanetProc;
19319
19320
#ifdef JANET_EV
19321
19322
#ifdef JANET_WINDOWS
19323
19324
static JanetEVGenericMessage janet_proc_wait_subr(JanetEVGenericMessage args) {
19325
    JanetProc *proc = (JanetProc *) args.argp;
19326
    WaitForSingleObject(proc->pHandle, INFINITE);
19327
    DWORD exitcode = 0;
19328
    GetExitCodeProcess(proc->pHandle, &exitcode);
19329
    args.tag = (int32_t) exitcode;
19330
    return args;
19331
}
19332
19333
#else /* windows check */
19334
19335
0
static int proc_get_status(JanetProc *proc) {
19336
    /* Use POSIX shell semantics for interpreting signals */
19337
0
    int status = 0;
19338
0
    pid_t result;
19339
0
    do {
19340
0
        result = waitpid(proc->pid, &status, 0);
19341
0
    } while (result == -1 && errno == EINTR);
19342
0
    if (WIFEXITED(status)) {
19343
0
        status = WEXITSTATUS(status);
19344
0
    } else if (WIFSTOPPED(status)) {
19345
0
        status = WSTOPSIG(status) + 128;
19346
0
    } else {
19347
0
        status = WTERMSIG(status) + 128;
19348
0
    }
19349
0
    return status;
19350
0
}
19351
19352
/* Function that is called in separate thread to wait on a pid */
19353
0
static JanetEVGenericMessage janet_proc_wait_subr(JanetEVGenericMessage args) {
19354
0
    JanetProc *proc = (JanetProc *) args.argp;
19355
0
    args.tag = proc_get_status(proc);
19356
0
    return args;
19357
0
}
19358
19359
#endif /* End windows check */
19360
19361
/* Callback that is called in main thread when subroutine completes. */
19362
0
static void janet_proc_wait_cb(JanetEVGenericMessage args) {
19363
0
    janet_ev_dec_refcount();
19364
0
    JanetProc *proc = (JanetProc *) args.argp;
19365
0
    if (NULL != proc) {
19366
0
        int status = args.tag;
19367
0
        proc->return_code = (int32_t) status;
19368
0
        proc->flags |= JANET_PROC_WAITED;
19369
0
        proc->flags &= ~JANET_PROC_WAITING;
19370
0
        janet_gcunroot(janet_wrap_abstract(proc));
19371
0
        janet_gcunroot(janet_wrap_fiber(args.fiber));
19372
0
        if ((status != 0) && (proc->flags & JANET_PROC_ERROR_NONZERO)) {
19373
0
            JanetString s = janet_formatc("command failed with non-zero exit code %d", status);
19374
0
            janet_cancel(args.fiber, janet_wrap_string(s));
19375
0
        } else {
19376
0
            janet_schedule(args.fiber, janet_wrap_integer(status));
19377
0
        }
19378
0
    }
19379
0
}
19380
19381
#endif /* End ev check */
19382
19383
0
static int janet_proc_gc(void *p, size_t s) {
19384
0
    (void) s;
19385
0
    JanetProc *proc = (JanetProc *) p;
19386
#ifdef JANET_WINDOWS
19387
    if (!(proc->flags & JANET_PROC_CLOSED)) {
19388
        if (!(proc->flags & JANET_PROC_ALLOW_ZOMBIE)) {
19389
            TerminateProcess(proc->pHandle, 1);
19390
        }
19391
        CloseHandle(proc->pHandle);
19392
        CloseHandle(proc->tHandle);
19393
    }
19394
#else
19395
0
    if (!(proc->flags & (JANET_PROC_WAITED | JANET_PROC_ALLOW_ZOMBIE))) {
19396
        /* Kill and wait to prevent zombies */
19397
0
        kill(proc->pid, SIGKILL);
19398
0
        int status;
19399
0
        if (!(proc->flags & JANET_PROC_WAITING)) {
19400
0
            waitpid(proc->pid, &status, 0);
19401
0
        }
19402
0
    }
19403
0
#endif
19404
0
    return 0;
19405
0
}
19406
19407
0
static int janet_proc_mark(void *p, size_t s) {
19408
0
    (void) s;
19409
0
    JanetProc *proc = (JanetProc *)p;
19410
0
    if (NULL != proc->in) janet_mark(janet_wrap_abstract(proc->in));
19411
0
    if (NULL != proc->out) janet_mark(janet_wrap_abstract(proc->out));
19412
0
    if (NULL != proc->err) janet_mark(janet_wrap_abstract(proc->err));
19413
0
    return 0;
19414
0
}
19415
19416
#ifdef JANET_EV
19417
static JANET_NO_RETURN void
19418
#else
19419
static Janet
19420
#endif
19421
0
os_proc_wait_impl(JanetProc *proc) {
19422
0
    if (proc->flags & (JANET_PROC_WAITED | JANET_PROC_WAITING)) {
19423
0
        janet_panicf("cannot wait twice on a process");
19424
0
    }
19425
0
#ifdef JANET_EV
19426
    /* Event loop implementation - threaded call */
19427
0
    proc->flags |= JANET_PROC_WAITING;
19428
0
    JanetEVGenericMessage targs;
19429
0
    memset(&targs, 0, sizeof(targs));
19430
0
    targs.argp = proc;
19431
0
    targs.fiber = janet_root_fiber();
19432
0
    janet_gcroot(janet_wrap_abstract(proc));
19433
0
    janet_gcroot(janet_wrap_fiber(targs.fiber));
19434
0
    janet_ev_threaded_call(janet_proc_wait_subr, targs, janet_proc_wait_cb);
19435
0
    janet_await();
19436
#else
19437
    /* Non evented implementation */
19438
    proc->flags |= JANET_PROC_WAITED;
19439
    int status = 0;
19440
#ifdef JANET_WINDOWS
19441
    WaitForSingleObject(proc->pHandle, INFINITE);
19442
    GetExitCodeProcess(proc->pHandle, &status);
19443
    if (!(proc->flags & JANET_PROC_CLOSED)) {
19444
        proc->flags |= JANET_PROC_CLOSED;
19445
        CloseHandle(proc->pHandle);
19446
        CloseHandle(proc->tHandle);
19447
    }
19448
#else
19449
    waitpid(proc->pid, &status, 0);
19450
#endif
19451
    proc->return_code = (int32_t) status;
19452
    return janet_wrap_integer(proc->return_code);
19453
#endif
19454
0
}
19455
19456
JANET_CORE_FN(os_proc_wait,
19457
              "(os/proc-wait proc)",
19458
0
              "Block until the subprocess completes. Returns the subprocess return code.") {
19459
0
    janet_fixarity(argc, 1);
19460
0
    JanetProc *proc = janet_getabstract(argv, 0, &ProcAT);
19461
0
#ifdef JANET_EV
19462
0
    os_proc_wait_impl(proc);
19463
0
    return janet_wrap_nil();
19464
#else
19465
    return os_proc_wait_impl(proc);
19466
#endif
19467
0
}
19468
19469
struct keyword_signal {
19470
    const char *keyword;
19471
    int signal;
19472
};
19473
19474
#ifndef JANET_WINDOWS
19475
static const struct keyword_signal signal_keywords[] = {
19476
#ifdef SIGKILL
19477
    {"kill", SIGKILL},
19478
#endif
19479
    {"int", SIGINT},
19480
    {"abrt", SIGABRT},
19481
    {"fpe", SIGFPE},
19482
    {"ill", SIGILL},
19483
    {"segv", SIGSEGV},
19484
#ifdef SIGTERM
19485
    {"term", SIGTERM},
19486
#endif
19487
#ifdef SIGARLM
19488
    {"alrm", SIGALRM},
19489
#endif
19490
#ifdef SIGHUP
19491
    {"hup", SIGHUP},
19492
#endif
19493
#ifdef SIGPIPE
19494
    {"pipe", SIGPIPE},
19495
#endif
19496
#ifdef SIGQUIT
19497
    {"quit", SIGQUIT},
19498
#endif
19499
#ifdef SIGUSR1
19500
    {"usr1", SIGUSR1},
19501
#endif
19502
#ifdef SIGUSR2
19503
    {"usr2", SIGUSR2},
19504
#endif
19505
#ifdef SIGCHLD
19506
    {"chld", SIGCHLD},
19507
#endif
19508
#ifdef SIGCONT
19509
    {"cont", SIGCONT},
19510
#endif
19511
#ifdef SIGSTOP
19512
    {"stop", SIGSTOP},
19513
#endif
19514
#ifdef SIGTSTP
19515
    {"tstp", SIGTSTP},
19516
#endif
19517
#ifdef SIGTTIN
19518
    {"ttin", SIGTTIN},
19519
#endif
19520
#ifdef SIGTTOU
19521
    {"ttou", SIGTTOU},
19522
#endif
19523
#ifdef SIGBUS
19524
    {"bus", SIGBUS},
19525
#endif
19526
#ifdef SIGPOLL
19527
    {"poll", SIGPOLL},
19528
#endif
19529
#ifdef SIGPROF
19530
    {"prof", SIGPROF},
19531
#endif
19532
#ifdef SIGSYS
19533
    {"sys", SIGSYS},
19534
#endif
19535
#ifdef SIGTRAP
19536
    {"trap", SIGTRAP},
19537
#endif
19538
#ifdef SIGURG
19539
    {"urg", SIGURG},
19540
#endif
19541
#ifdef SIGVTALRM
19542
    {"vtlarm", SIGVTALRM},
19543
#endif
19544
#ifdef SIGXCPU
19545
    {"xcpu", SIGXCPU},
19546
#endif
19547
#ifdef SIGXFSZ
19548
    {"xfsz", SIGXFSZ},
19549
#endif
19550
    {NULL, 0},
19551
};
19552
#endif
19553
19554
JANET_CORE_FN(os_proc_kill,
19555
              "(os/proc-kill proc &opt wait signal)",
19556
              "Kill a subprocess by sending SIGKILL to it on posix systems, or by closing the process "
19557
              "handle on windows. If `wait` is truthy, will wait for the process to finish and "
19558
              "returns the exit code. Otherwise, returns `proc`. If signal is specified send it instead."
19559
              "Signal keywords are named after their C counterparts but in lowercase with the leading "
19560
0
              "`SIG` stripped. Signals are ignored on windows.") {
19561
0
    janet_arity(argc, 1, 3);
19562
0
    JanetProc *proc = janet_getabstract(argv, 0, &ProcAT);
19563
0
    if (proc->flags & JANET_PROC_WAITED) {
19564
0
        janet_panicf("cannot kill process that has already finished");
19565
0
    }
19566
#ifdef JANET_WINDOWS
19567
    if (proc->flags & JANET_PROC_CLOSED) {
19568
        janet_panicf("cannot close process handle that is already closed");
19569
    }
19570
    proc->flags |= JANET_PROC_CLOSED;
19571
    TerminateProcess(proc->pHandle, 1);
19572
    CloseHandle(proc->pHandle);
19573
    CloseHandle(proc->tHandle);
19574
#else
19575
0
    int signal = -1;
19576
0
    if (argc == 3) {
19577
0
        JanetKeyword signal_kw = janet_getkeyword(argv, 2);
19578
0
        const struct keyword_signal *ptr = signal_keywords;
19579
0
        while (ptr->keyword) {
19580
0
            if (!janet_cstrcmp(signal_kw, ptr->keyword)) {
19581
0
                signal = ptr->signal;
19582
0
                break;
19583
0
            }
19584
0
            ptr++;
19585
0
        }
19586
0
        if (signal == -1) {
19587
0
            janet_panic("undefined signal");
19588
0
        }
19589
0
    }
19590
0
    int status = kill(proc->pid, signal == -1 ? SIGKILL : signal);
19591
0
    if (status) {
19592
0
        janet_panic(strerror(errno));
19593
0
    }
19594
0
#endif
19595
    /* After killing process we wait on it. */
19596
0
    if (argc > 1 && janet_truthy(argv[1])) {
19597
0
#ifdef JANET_EV
19598
0
        os_proc_wait_impl(proc);
19599
0
        return janet_wrap_nil();
19600
#else
19601
        return os_proc_wait_impl(proc);
19602
#endif
19603
0
    } else {
19604
0
        return argv[0];
19605
0
    }
19606
0
}
19607
19608
JANET_CORE_FN(os_proc_close,
19609
              "(os/proc-close proc)",
19610
              "Wait on a process if it has not been waited on, and close pipes created by `os/spawn` "
19611
0
              "if they have not been closed. Returns nil.") {
19612
0
    janet_fixarity(argc, 1);
19613
0
    JanetProc *proc = janet_getabstract(argv, 0, &ProcAT);
19614
0
#ifdef JANET_EV
19615
0
    if (proc->flags & JANET_PROC_OWNS_STDIN) janet_stream_close(proc->in);
19616
0
    if (proc->flags & JANET_PROC_OWNS_STDOUT) janet_stream_close(proc->out);
19617
0
    if (proc->flags & JANET_PROC_OWNS_STDERR) janet_stream_close(proc->err);
19618
#else
19619
    if (proc->flags & JANET_PROC_OWNS_STDIN) janet_file_close(proc->in);
19620
    if (proc->flags & JANET_PROC_OWNS_STDOUT) janet_file_close(proc->out);
19621
    if (proc->flags & JANET_PROC_OWNS_STDERR) janet_file_close(proc->err);
19622
#endif
19623
0
    proc->flags &= ~(JANET_PROC_OWNS_STDIN | JANET_PROC_OWNS_STDOUT | JANET_PROC_OWNS_STDERR);
19624
0
    if (proc->flags & (JANET_PROC_WAITED | JANET_PROC_WAITING)) {
19625
0
        return janet_wrap_nil();
19626
0
    }
19627
0
#ifdef JANET_EV
19628
0
    os_proc_wait_impl(proc);
19629
0
    return janet_wrap_nil();
19630
#else
19631
    return os_proc_wait_impl(proc);
19632
#endif
19633
0
}
19634
19635
0
static void swap_handles(JanetHandle *handles) {
19636
0
    JanetHandle temp = handles[0];
19637
0
    handles[0] = handles[1];
19638
0
    handles[1] = temp;
19639
0
}
19640
19641
0
static void close_handle(JanetHandle handle) {
19642
#ifdef JANET_WINDOWS
19643
    CloseHandle(handle);
19644
#else
19645
0
    close(handle);
19646
0
#endif
19647
0
}
19648
19649
/* Create piped file for os/execute and os/spawn. Need to be careful that we mark
19650
   the error flag if we can't create pipe and don't leak handles. *handle will be cleaned
19651
   up by the calling function. If everything goes well, *handle is owned by the calling function,
19652
   (if it is set) and the returned handle owns the other end of the pipe, which will be closed
19653
   on GC or fclose. */
19654
0
static JanetHandle make_pipes(JanetHandle *handle, int reverse, int *errflag) {
19655
0
    JanetHandle handles[2];
19656
0
#ifdef JANET_EV
19657
19658
    /* non-blocking pipes */
19659
0
    if (janet_make_pipe(handles, reverse ? 2 : 1)) goto error;
19660
0
    if (reverse) swap_handles(handles);
19661
#ifdef JANET_WINDOWS
19662
    if (!SetHandleInformation(handles[0], HANDLE_FLAG_INHERIT, 0)) goto error;
19663
#endif
19664
0
    *handle = handles[1];
19665
0
    return handles[0];
19666
19667
#else
19668
19669
    /* Normal blocking pipes */
19670
#ifdef JANET_WINDOWS
19671
    SECURITY_ATTRIBUTES saAttr;
19672
    memset(&saAttr, 0, sizeof(saAttr));
19673
    saAttr.nLength = sizeof(saAttr);
19674
    saAttr.bInheritHandle = TRUE;
19675
    if (!CreatePipe(handles, handles + 1, &saAttr, 0)) goto error;
19676
    if (reverse) swap_handles(handles);
19677
    /* Don't inherit the side of the pipe owned by this process */
19678
    if (!SetHandleInformation(handles[0], HANDLE_FLAG_INHERIT, 0)) goto error;
19679
    *handle = handles[1];
19680
    return handles[0];
19681
#else
19682
    if (pipe(handles)) goto error;
19683
    if (reverse) swap_handles(handles);
19684
    *handle = handles[1];
19685
    return handles[0];
19686
#endif
19687
19688
#endif
19689
0
error:
19690
0
    *errflag = 1;
19691
0
    return JANET_HANDLE_NONE;
19692
0
}
19693
19694
static const JanetMethod proc_methods[] = {
19695
    {"wait", os_proc_wait},
19696
    {"kill", os_proc_kill},
19697
    {"close", os_proc_close},
19698
    /* dud methods for janet_proc_next */
19699
    {"in", NULL},
19700
    {"out", NULL},
19701
    {"err", NULL},
19702
    {NULL, NULL}
19703
};
19704
19705
0
static int janet_proc_get(void *p, Janet key, Janet *out) {
19706
0
    JanetProc *proc = (JanetProc *)p;
19707
0
    if (janet_keyeq(key, "in")) {
19708
0
        *out = (NULL == proc->in) ? janet_wrap_nil() : janet_wrap_abstract(proc->in);
19709
0
        return 1;
19710
0
    }
19711
0
    if (janet_keyeq(key, "out")) {
19712
0
        *out = (NULL == proc->out) ? janet_wrap_nil() : janet_wrap_abstract(proc->out);
19713
0
        return 1;
19714
0
    }
19715
0
    if (janet_keyeq(key, "err")) {
19716
0
        *out = (NULL == proc->err) ? janet_wrap_nil() : janet_wrap_abstract(proc->err);
19717
0
        return 1;
19718
0
    }
19719
0
#ifndef JANET_WINDOWS
19720
0
    if (janet_keyeq(key, "pid")) {
19721
0
        *out = janet_wrap_number(proc->pid);
19722
0
        return 1;
19723
0
    }
19724
0
#endif
19725
0
    if ((-1 != proc->return_code) && janet_keyeq(key, "return-code")) {
19726
0
        *out = janet_wrap_integer(proc->return_code);
19727
0
        return 1;
19728
0
    }
19729
0
    if (!janet_checktype(key, JANET_KEYWORD)) return 0;
19730
0
    return janet_getmethod(janet_unwrap_keyword(key), proc_methods, out);
19731
0
}
19732
19733
0
static Janet janet_proc_next(void *p, Janet key) {
19734
0
    (void) p;
19735
0
    return janet_nextmethod(proc_methods, key);
19736
0
}
19737
19738
static const JanetAbstractType ProcAT = {
19739
    "core/process",
19740
    janet_proc_gc,
19741
    janet_proc_mark,
19742
    janet_proc_get,
19743
    NULL, /* put */
19744
    NULL, /* marshal */
19745
    NULL, /* unmarshal */
19746
    NULL, /* tostring */
19747
    NULL, /* compare */
19748
    NULL, /* hash */
19749
    janet_proc_next,
19750
    JANET_ATEND_NEXT
19751
};
19752
19753
0
static JanetHandle janet_getjstream(Janet *argv, int32_t n, void **orig) {
19754
0
#ifdef JANET_EV
19755
0
    JanetStream *stream = janet_checkabstract(argv[n], &janet_stream_type);
19756
0
    if (stream != NULL) {
19757
0
        if (stream->flags & JANET_STREAM_CLOSED)
19758
0
            janet_panic("stream is closed");
19759
0
        *orig = stream;
19760
0
        return stream->handle;
19761
0
    }
19762
0
#endif
19763
0
    JanetFile *f = janet_checkabstract(argv[n], &janet_file_type);
19764
0
    if (f != NULL) {
19765
0
        if (f->flags & JANET_FILE_CLOSED) {
19766
0
            janet_panic("file is closed");
19767
0
        }
19768
0
        *orig = f;
19769
#ifdef JANET_WINDOWS
19770
        return (HANDLE) _get_osfhandle(_fileno(f->file));
19771
#else
19772
0
        return fileno(f->file);
19773
0
#endif
19774
0
    }
19775
0
    janet_panicf("expected file|stream, got %v", argv[n]);
19776
0
}
19777
19778
#ifdef JANET_EV
19779
0
static JanetStream *get_stdio_for_handle(JanetHandle handle, void *orig, int iswrite) {
19780
0
    if (orig == NULL) {
19781
0
        return janet_stream(handle, iswrite ? JANET_STREAM_WRITABLE : JANET_STREAM_READABLE, NULL);
19782
0
    } else if (janet_abstract_type(orig) == &janet_file_type) {
19783
0
        JanetFile *jf = (JanetFile *)orig;
19784
0
        uint32_t flags = 0;
19785
0
        if (jf->flags & JANET_FILE_WRITE) {
19786
0
            flags |= JANET_STREAM_WRITABLE;
19787
0
        }
19788
0
        if (jf->flags & JANET_FILE_READ) {
19789
0
            flags |= JANET_STREAM_READABLE;
19790
0
        }
19791
        /* duplicate handle when converting file to stream */
19792
#ifdef JANET_WINDOWS
19793
        HANDLE prochandle = GetCurrentProcess();
19794
        HANDLE newHandle = INVALID_HANDLE_VALUE;
19795
        if (!DuplicateHandle(prochandle, handle, prochandle, &newHandle, 0, FALSE, DUPLICATE_SAME_ACCESS)) {
19796
            return NULL;
19797
        }
19798
#else
19799
0
        int newHandle = dup(handle);
19800
0
        if (newHandle < 0) {
19801
0
            return NULL;
19802
0
        }
19803
0
#endif
19804
0
        return janet_stream(newHandle, flags, NULL);
19805
0
    } else {
19806
0
        return orig;
19807
0
    }
19808
0
}
19809
#else
19810
static JanetFile *get_stdio_for_handle(JanetHandle handle, void *orig, int iswrite) {
19811
    if (NULL != orig) return (JanetFile *) orig;
19812
#ifdef JANET_WINDOWS
19813
    int fd = _open_osfhandle((intptr_t) handle, iswrite ? _O_WRONLY : _O_RDONLY);
19814
    if (-1 == fd) return NULL;
19815
    FILE *f = _fdopen(fd, iswrite ? "w" : "r");
19816
    if (NULL == f) {
19817
        _close(fd);
19818
        return NULL;
19819
    }
19820
#else
19821
    FILE *f = fdopen(handle, iswrite ? "w" : "r");
19822
    if (NULL == f) return NULL;
19823
#endif
19824
    return janet_makejfile(f, iswrite ? JANET_FILE_WRITE : JANET_FILE_READ);
19825
}
19826
#endif
19827
19828
0
static Janet os_execute_impl(int32_t argc, Janet *argv, int is_spawn) {
19829
0
    janet_sandbox_assert(JANET_SANDBOX_SUBPROCESS);
19830
0
    janet_arity(argc, 1, 3);
19831
19832
    /* Get flags */
19833
0
    uint64_t flags = 0;
19834
0
    if (argc > 1) {
19835
0
        flags = janet_getflags(argv, 1, "epxd");
19836
0
    }
19837
19838
    /* Get environment */
19839
0
    int use_environ = !janet_flag_at(flags, 0);
19840
0
    EnvBlock envp = os_execute_env(argc, argv);
19841
19842
    /* Get arguments */
19843
0
    JanetView exargs = janet_getindexed(argv, 0);
19844
0
    if (exargs.len < 1) {
19845
0
        janet_panic("expected at least 1 command line argument");
19846
0
    }
19847
19848
    /* Optional stdio redirections */
19849
0
    JanetAbstract orig_in = NULL, orig_out = NULL, orig_err = NULL;
19850
0
    JanetHandle new_in = JANET_HANDLE_NONE, new_out = JANET_HANDLE_NONE, new_err = JANET_HANDLE_NONE;
19851
0
    JanetHandle pipe_in = JANET_HANDLE_NONE, pipe_out = JANET_HANDLE_NONE, pipe_err = JANET_HANDLE_NONE;
19852
0
    int pipe_errflag = 0; /* Track errors setting up pipes */
19853
0
    int pipe_owner_flags = (is_spawn && (flags & 0x8)) ? JANET_PROC_ALLOW_ZOMBIE : 0;
19854
19855
    /* Get optional redirections */
19856
0
    if (argc > 2) {
19857
0
        JanetDictView tab = janet_getdictionary(argv, 2);
19858
0
        Janet maybe_stdin = janet_dictionary_get(tab.kvs, tab.cap, janet_ckeywordv("in"));
19859
0
        Janet maybe_stdout = janet_dictionary_get(tab.kvs, tab.cap, janet_ckeywordv("out"));
19860
0
        Janet maybe_stderr = janet_dictionary_get(tab.kvs, tab.cap, janet_ckeywordv("err"));
19861
0
        if (is_spawn && janet_keyeq(maybe_stdin, "pipe")) {
19862
0
            new_in = make_pipes(&pipe_in, 1, &pipe_errflag);
19863
0
            pipe_owner_flags |= JANET_PROC_OWNS_STDIN;
19864
0
        } else if (!janet_checktype(maybe_stdin, JANET_NIL)) {
19865
0
            new_in = janet_getjstream(&maybe_stdin, 0, &orig_in);
19866
0
        }
19867
0
        if (is_spawn && janet_keyeq(maybe_stdout, "pipe")) {
19868
0
            new_out = make_pipes(&pipe_out, 0, &pipe_errflag);
19869
0
            pipe_owner_flags |= JANET_PROC_OWNS_STDOUT;
19870
0
        } else if (!janet_checktype(maybe_stdout, JANET_NIL)) {
19871
0
            new_out = janet_getjstream(&maybe_stdout, 0, &orig_out);
19872
0
        }
19873
0
        if (is_spawn && janet_keyeq(maybe_stderr, "pipe")) {
19874
0
            new_err = make_pipes(&pipe_err, 0, &pipe_errflag);
19875
0
            pipe_owner_flags |= JANET_PROC_OWNS_STDERR;
19876
0
        } else if (!janet_checktype(maybe_stderr, JANET_NIL)) {
19877
0
            new_err = janet_getjstream(&maybe_stderr, 0, &orig_err);
19878
0
        }
19879
0
    }
19880
19881
    /* Clean up if any of the pipes have any issues */
19882
0
    if (pipe_errflag) {
19883
0
        if (pipe_in != JANET_HANDLE_NONE) close_handle(pipe_in);
19884
0
        if (pipe_out != JANET_HANDLE_NONE) close_handle(pipe_out);
19885
0
        if (pipe_err != JANET_HANDLE_NONE) close_handle(pipe_err);
19886
0
        janet_panic("failed to create pipes");
19887
0
    }
19888
19889
#ifdef JANET_WINDOWS
19890
19891
    HANDLE pHandle, tHandle;
19892
    SECURITY_ATTRIBUTES saAttr;
19893
    PROCESS_INFORMATION processInfo;
19894
    STARTUPINFO startupInfo;
19895
    memset(&saAttr, 0, sizeof(saAttr));
19896
    memset(&processInfo, 0, sizeof(processInfo));
19897
    memset(&startupInfo, 0, sizeof(startupInfo));
19898
    startupInfo.cb = sizeof(startupInfo);
19899
    startupInfo.dwFlags |= STARTF_USESTDHANDLES;
19900
    saAttr.nLength = sizeof(saAttr);
19901
19902
    JanetBuffer *buf = os_exec_escape(exargs);
19903
    if (buf->count > 8191) {
19904
        if (pipe_in != JANET_HANDLE_NONE) CloseHandle(pipe_in);
19905
        if (pipe_out != JANET_HANDLE_NONE) CloseHandle(pipe_out);
19906
        if (pipe_err != JANET_HANDLE_NONE) CloseHandle(pipe_err);
19907
        janet_panic("command line string too long (max 8191 characters)");
19908
    }
19909
    const char *path = (const char *) janet_unwrap_string(exargs.items[0]);
19910
19911
    /* Do IO redirection */
19912
19913
    if (pipe_in != JANET_HANDLE_NONE) {
19914
        startupInfo.hStdInput = pipe_in;
19915
    } else if (new_in != JANET_HANDLE_NONE) {
19916
        startupInfo.hStdInput = new_in;
19917
    } else {
19918
        startupInfo.hStdInput = (HANDLE) _get_osfhandle(0);
19919
    }
19920
19921
19922
    if (pipe_out != JANET_HANDLE_NONE) {
19923
        startupInfo.hStdOutput = pipe_out;
19924
    } else if (new_out != JANET_HANDLE_NONE) {
19925
        startupInfo.hStdOutput = new_out;
19926
    } else {
19927
        startupInfo.hStdOutput = (HANDLE) _get_osfhandle(1);
19928
    }
19929
19930
    if (pipe_err != JANET_HANDLE_NONE) {
19931
        startupInfo.hStdError = pipe_err;
19932
    } else if (new_err != NULL) {
19933
        startupInfo.hStdError = new_err;
19934
    } else {
19935
        startupInfo.hStdError = (HANDLE) _get_osfhandle(2);
19936
    }
19937
19938
    int cp_failed = 0;
19939
    if (!CreateProcess(janet_flag_at(flags, 1) ? NULL : path,
19940
                       (char *) buf->data, /* Single CLI argument */
19941
                       &saAttr, /* no proc inheritance */
19942
                       &saAttr, /* no thread inheritance */
19943
                       TRUE, /* handle inheritance */
19944
                       0, /* flags */
19945
                       use_environ ? NULL : envp, /* pass in environment */
19946
                       NULL, /* use parents starting directory */
19947
                       &startupInfo,
19948
                       &processInfo)) {
19949
        cp_failed = 1;
19950
    }
19951
19952
    if (pipe_in != JANET_HANDLE_NONE) CloseHandle(pipe_in);
19953
    if (pipe_out != JANET_HANDLE_NONE) CloseHandle(pipe_out);
19954
    if (pipe_err != JANET_HANDLE_NONE) CloseHandle(pipe_err);
19955
19956
    os_execute_cleanup(envp, NULL);
19957
19958
    if (cp_failed)  {
19959
        janet_panic("failed to create process");
19960
    }
19961
19962
    pHandle = processInfo.hProcess;
19963
    tHandle = processInfo.hThread;
19964
19965
#else
19966
19967
    /* Result */
19968
0
    int status = 0;
19969
19970
0
    const char **child_argv = janet_smalloc(sizeof(char *) * ((size_t) exargs.len + 1));
19971
0
    for (int32_t i = 0; i < exargs.len; i++)
19972
0
        child_argv[i] = janet_getcstring(exargs.items, i);
19973
0
    child_argv[exargs.len] = NULL;
19974
    /* Coerce to form that works for spawn. I'm fairly confident no implementation
19975
     * of posix_spawn would modify the argv array passed in. */
19976
0
    char *const *cargv = (char *const *)child_argv;
19977
19978
    /* Use posix_spawn to spawn new process */
19979
19980
0
    if (use_environ) {
19981
0
        janet_lock_environ();
19982
0
    }
19983
19984
    /* Posix spawn setup */
19985
0
    posix_spawn_file_actions_t actions;
19986
0
    posix_spawn_file_actions_init(&actions);
19987
0
    if (pipe_in != JANET_HANDLE_NONE) {
19988
0
        posix_spawn_file_actions_adddup2(&actions, pipe_in, 0);
19989
0
        posix_spawn_file_actions_addclose(&actions, pipe_in);
19990
0
    } else if (new_in != JANET_HANDLE_NONE && new_in != 0) {
19991
0
        posix_spawn_file_actions_adddup2(&actions, new_in, 0);
19992
0
        posix_spawn_file_actions_addclose(&actions, new_in);
19993
0
    }
19994
0
    if (pipe_out != JANET_HANDLE_NONE) {
19995
0
        posix_spawn_file_actions_adddup2(&actions, pipe_out, 1);
19996
0
        posix_spawn_file_actions_addclose(&actions, pipe_out);
19997
0
    } else if (new_out != JANET_HANDLE_NONE && new_out != 1) {
19998
0
        posix_spawn_file_actions_adddup2(&actions, new_out, 1);
19999
0
        posix_spawn_file_actions_addclose(&actions, new_out);
20000
0
    }
20001
0
    if (pipe_err != JANET_HANDLE_NONE) {
20002
0
        posix_spawn_file_actions_adddup2(&actions, pipe_err, 2);
20003
0
        posix_spawn_file_actions_addclose(&actions, pipe_err);
20004
0
    } else if (new_err != JANET_HANDLE_NONE && new_err != 2) {
20005
0
        posix_spawn_file_actions_adddup2(&actions, new_err, 2);
20006
0
        posix_spawn_file_actions_addclose(&actions, new_err);
20007
0
    }
20008
20009
0
    pid_t pid;
20010
0
    if (janet_flag_at(flags, 1)) {
20011
0
        status = posix_spawnp(&pid,
20012
0
                              child_argv[0], &actions, NULL, cargv,
20013
0
                              use_environ ? environ : envp);
20014
0
    } else {
20015
0
        status = posix_spawn(&pid,
20016
0
                             child_argv[0], &actions, NULL, cargv,
20017
0
                             use_environ ? environ : envp);
20018
0
    }
20019
20020
0
    posix_spawn_file_actions_destroy(&actions);
20021
20022
0
    if (pipe_in != JANET_HANDLE_NONE) close(pipe_in);
20023
0
    if (pipe_out != JANET_HANDLE_NONE) close(pipe_out);
20024
0
    if (pipe_err != JANET_HANDLE_NONE) close(pipe_err);
20025
20026
0
    if (use_environ) {
20027
0
        janet_unlock_environ();
20028
0
    }
20029
20030
0
    os_execute_cleanup(envp, child_argv);
20031
0
    if (status) {
20032
        /* correct for macos bug where errno is not set */
20033
0
        janet_panicf("%p: %s", argv[0], strerror(errno ? errno : ENOENT));
20034
0
    }
20035
20036
0
#endif
20037
0
    JanetProc *proc = janet_abstract(&ProcAT, sizeof(JanetProc));
20038
0
    proc->return_code = -1;
20039
#ifdef JANET_WINDOWS
20040
    proc->pHandle = pHandle;
20041
    proc->tHandle = tHandle;
20042
#else
20043
0
    proc->pid = pid;
20044
0
#endif
20045
0
    proc->in = NULL;
20046
0
    proc->out = NULL;
20047
0
    proc->err = NULL;
20048
0
    proc->flags = pipe_owner_flags;
20049
0
    if (janet_flag_at(flags, 2)) {
20050
0
        proc->flags |= JANET_PROC_ERROR_NONZERO;
20051
0
    }
20052
0
    if (is_spawn) {
20053
        /* Only set up pointers to stdin, stdout, and stderr if os/spawn. */
20054
0
        if (new_in != JANET_HANDLE_NONE) {
20055
0
            proc->in = get_stdio_for_handle(new_in, orig_in, 1);
20056
0
            if (NULL == proc->in) janet_panic("failed to construct proc");
20057
0
        }
20058
0
        if (new_out != JANET_HANDLE_NONE) {
20059
0
            proc->out = get_stdio_for_handle(new_out, orig_out, 0);
20060
0
            if (NULL == proc->out) janet_panic("failed to construct proc");
20061
0
        }
20062
0
        if (new_err != JANET_HANDLE_NONE) {
20063
0
            proc->err = get_stdio_for_handle(new_err, orig_err, 0);
20064
0
            if (NULL == proc->err) janet_panic("failed to construct proc");
20065
0
        }
20066
0
        return janet_wrap_abstract(proc);
20067
0
    } else {
20068
0
#ifdef JANET_EV
20069
0
        os_proc_wait_impl(proc);
20070
#else
20071
        return os_proc_wait_impl(proc);
20072
#endif
20073
0
    }
20074
0
}
20075
20076
JANET_CORE_FN(os_execute,
20077
              "(os/execute args &opt flags env)",
20078
              "Execute a program on the system and pass it string arguments. `flags` "
20079
              "is a keyword that modifies how the program will execute.\n"
20080
              "* :e - enables passing an environment to the program. Without :e, the "
20081
              "current environment is inherited.\n"
20082
              "* :p - allows searching the current PATH for the binary to execute. "
20083
              "Without this flag, binaries must use absolute paths.\n"
20084
              "* :x - raise error if exit code is non-zero.\n"
20085
              "* :d - Don't try and terminate the process on garbage collection (allow spawning zombies).\n"
20086
              "`env` is a table or struct mapping environment variables to values. It can also "
20087
              "contain the keys :in, :out, and :err, which allow redirecting stdio in the subprocess. "
20088
              "These arguments should be core/file values. "
20089
0
              "Returns the exit status of the program.") {
20090
0
    return os_execute_impl(argc, argv, 0);
20091
0
}
20092
20093
JANET_CORE_FN(os_spawn,
20094
              "(os/spawn args &opt flags env)",
20095
              "Execute a program on the system and return a handle to the process. Otherwise, takes the "
20096
              "same arguments as `os/execute`. Does not wait for the process. "
20097
              "For each of the :in, :out, and :err keys to the `env` argument, one "
20098
              "can also pass in the keyword `:pipe` "
20099
              "to get streams for standard IO of the subprocess that can be read from and written to. "
20100
              "The returned value `proc` has the fields :in, :out, :err, :return-code, and "
20101
              "the additional field :pid on unix-like platforms. Use `(os/proc-wait proc)` to rejoin the "
20102
0
              "subprocess or `(os/proc-kill proc)`.") {
20103
0
    return os_execute_impl(argc, argv, 1);
20104
0
}
20105
20106
#ifdef JANET_EV
20107
/* Runs in a separate thread */
20108
0
static JanetEVGenericMessage os_shell_subr(JanetEVGenericMessage args) {
20109
0
    int stat = system((const char *) args.argp);
20110
0
    janet_free(args.argp);
20111
0
    if (args.argi) {
20112
0
        args.tag = JANET_EV_TCTAG_INTEGER;
20113
0
    } else {
20114
0
        args.tag = JANET_EV_TCTAG_BOOLEAN;
20115
0
    }
20116
0
    args.argi = stat;
20117
0
    return args;
20118
0
}
20119
#endif
20120
20121
JANET_CORE_FN(os_shell,
20122
              "(os/shell str)",
20123
0
              "Pass a command string str directly to the system shell.") {
20124
0
    janet_sandbox_assert(JANET_SANDBOX_SUBPROCESS);
20125
0
    janet_arity(argc, 0, 1);
20126
0
    const char *cmd = argc
20127
0
                      ? janet_getcstring(argv, 0)
20128
0
                      : NULL;
20129
0
#ifdef JANET_EV
20130
0
    janet_ev_threaded_await(os_shell_subr, 0, argc, cmd ? strdup(cmd) : NULL);
20131
#else
20132
    int stat = system(cmd);
20133
    return argc
20134
           ? janet_wrap_integer(stat)
20135
           : janet_wrap_boolean(stat);
20136
#endif
20137
0
}
20138
20139
#endif /* JANET_NO_PROCESSES */
20140
20141
JANET_CORE_FN(os_environ,
20142
              "(os/environ)",
20143
0
              "Get a copy of the OS environment table.") {
20144
0
    janet_sandbox_assert(JANET_SANDBOX_ENV);
20145
0
    (void) argv;
20146
0
    janet_fixarity(argc, 0);
20147
0
    int32_t nenv = 0;
20148
0
    janet_lock_environ();
20149
0
    char **env = environ;
20150
0
    while (*env++)
20151
0
        nenv += 1;
20152
0
    JanetTable *t = janet_table(nenv);
20153
0
    for (int32_t i = 0; i < nenv; i++) {
20154
0
        char *e = environ[i];
20155
0
        char *eq = strchr(e, '=');
20156
0
        if (!eq) {
20157
0
            janet_unlock_environ();
20158
0
            janet_panic("no '=' in environ");
20159
0
        }
20160
0
        char *v = eq + 1;
20161
0
        int32_t full_len = (int32_t) strlen(e);
20162
0
        int32_t val_len = (int32_t) strlen(v);
20163
0
        janet_table_put(
20164
0
            t,
20165
0
            janet_stringv((const uint8_t *)e, full_len - val_len - 1),
20166
0
            janet_stringv((const uint8_t *)v, val_len)
20167
0
        );
20168
0
    }
20169
0
    janet_unlock_environ();
20170
0
    return janet_wrap_table(t);
20171
0
}
20172
20173
JANET_CORE_FN(os_getenv,
20174
              "(os/getenv variable &opt dflt)",
20175
0
              "Get the string value of an environment variable.") {
20176
0
    janet_sandbox_assert(JANET_SANDBOX_ENV);
20177
0
    janet_arity(argc, 1, 2);
20178
0
    const char *cstr = janet_getcstring(argv, 0);
20179
0
    const char *res = getenv(cstr);
20180
0
    janet_lock_environ();
20181
0
    Janet ret = res
20182
0
                ? janet_cstringv(res)
20183
0
                : argc == 2
20184
0
                ? argv[1]
20185
0
                : janet_wrap_nil();
20186
0
    janet_unlock_environ();
20187
0
    return ret;
20188
0
}
20189
20190
JANET_CORE_FN(os_setenv,
20191
              "(os/setenv variable value)",
20192
0
              "Set an environment variable.") {
20193
#ifdef JANET_WINDOWS
20194
#define SETENV(K,V) _putenv_s(K, V)
20195
#define UNSETENV(K) _putenv_s(K, "")
20196
#else
20197
0
#define SETENV(K,V) setenv(K, V, 1)
20198
0
#define UNSETENV(K) unsetenv(K)
20199
0
#endif
20200
0
    janet_sandbox_assert(JANET_SANDBOX_ENV);
20201
0
    janet_arity(argc, 1, 2);
20202
0
    const char *ks = janet_getcstring(argv, 0);
20203
0
    const char *vs = janet_optcstring(argv, argc, 1, NULL);
20204
0
    janet_lock_environ();
20205
0
    if (NULL == vs) {
20206
0
        UNSETENV(ks);
20207
0
    } else {
20208
0
        SETENV(ks, vs);
20209
0
    }
20210
0
    janet_unlock_environ();
20211
0
    return janet_wrap_nil();
20212
0
}
20213
20214
JANET_CORE_FN(os_time,
20215
              "(os/time)",
20216
              "Get the current time expressed as the number of whole seconds since "
20217
0
              "January 1, 1970, the Unix epoch. Returns a real number.") {
20218
0
    janet_fixarity(argc, 0);
20219
0
    (void) argv;
20220
0
    double dtime = (double)(time(NULL));
20221
0
    return janet_wrap_number(dtime);
20222
0
}
20223
20224
JANET_CORE_FN(os_clock,
20225
              "(os/clock &opt source)",
20226
              "Return the number of whole + fractional seconds of the requested clock source.\n\n"
20227
              "The `source` argument selects the clock source to use, when not specified the default "
20228
              "is `:realtime`:\n"
20229
              "- :realtime: Return the real (i.e., wall-clock) time. This clock is affected by discontinuous "
20230
              "  jumps in the system time\n"
20231
              "- :monotonic: Return the number of whole + fractional seconds since some fixed point in "
20232
              "  time. The clock is guaranteed to be non-decreasing in real time.\n"
20233
0
              "- :cputime: Return the CPU time consumed by this process  (i.e. all threads in the process)\n") {
20234
0
    janet_sandbox_assert(JANET_SANDBOX_HRTIME);
20235
0
    janet_arity(argc, 0, 1);
20236
0
    enum JanetTimeSource source = JANET_TIME_REALTIME;
20237
0
    if (argc == 1) {
20238
0
        JanetKeyword sourcestr = janet_getkeyword(argv, 0);
20239
0
        if (janet_cstrcmp(sourcestr, "realtime") == 0) {
20240
0
            source = JANET_TIME_REALTIME;
20241
0
        } else if (janet_cstrcmp(sourcestr, "monotonic") == 0) {
20242
0
            source = JANET_TIME_MONOTONIC;
20243
0
        } else if (janet_cstrcmp(sourcestr, "cputime") == 0) {
20244
0
            source = JANET_TIME_CPUTIME;
20245
0
        } else {
20246
0
            janet_panicf("expected :realtime, :monotonic, or :cputime, got %v", argv[0]);
20247
0
        }
20248
0
    }
20249
0
    struct timespec tv;
20250
0
    if (janet_gettime(&tv, source)) janet_panic("could not get time");
20251
0
    double dtime = tv.tv_sec + (tv.tv_nsec / 1E9);
20252
0
    return janet_wrap_number(dtime);
20253
0
}
20254
20255
JANET_CORE_FN(os_sleep,
20256
              "(os/sleep n)",
20257
              "Suspend the program for `n` seconds. `n` can be a real number. Returns "
20258
0
              "nil.") {
20259
0
    janet_fixarity(argc, 1);
20260
0
    double delay = janet_getnumber(argv, 0);
20261
0
    if (delay < 0) janet_panic("invalid argument to sleep");
20262
#ifdef JANET_WINDOWS
20263
    Sleep((DWORD)(delay * 1000));
20264
#else
20265
0
    int rc;
20266
0
    struct timespec ts;
20267
0
    ts.tv_sec = (time_t) delay;
20268
0
    ts.tv_nsec = (delay <= UINT32_MAX)
20269
0
                 ? (long)((delay - ((uint32_t)delay)) * 1000000000)
20270
0
                 : 0;
20271
0
    RETRY_EINTR(rc, nanosleep(&ts, &ts));
20272
0
#endif
20273
0
    return janet_wrap_nil();
20274
0
}
20275
20276
JANET_CORE_FN(os_isatty,
20277
              "(os/isatty &opt file)",
20278
              "Returns true if `file` is a terminal. If `file` is not specified, "
20279
0
              "it will default to standard output.") {
20280
0
    janet_arity(argc, 0, 1);
20281
0
    FILE *f = (argc == 1) ? janet_getfile(argv, 0, NULL) : stdout;
20282
#ifdef JANET_WINDOWS
20283
    int fd = _fileno(f);
20284
    if (fd == -1) janet_panicv(janet_ev_lasterr());
20285
    return janet_wrap_boolean(_isatty(fd));
20286
#else
20287
0
    int fd = fileno(f);
20288
0
    if (fd == -1) janet_panicv(janet_ev_lasterr());
20289
0
    return janet_wrap_boolean(isatty(fd));
20290
0
#endif
20291
0
}
20292
20293
JANET_CORE_FN(os_cwd,
20294
              "(os/cwd)",
20295
0
              "Returns the current working directory.") {
20296
0
    janet_fixarity(argc, 0);
20297
0
    (void) argv;
20298
0
    char buf[FILENAME_MAX];
20299
0
    char *ptr;
20300
#ifdef JANET_WINDOWS
20301
    ptr = _getcwd(buf, FILENAME_MAX);
20302
#else
20303
0
    ptr = getcwd(buf, FILENAME_MAX);
20304
0
#endif
20305
0
    if (NULL == ptr) janet_panic("could not get current directory");
20306
0
    return janet_cstringv(ptr);
20307
0
}
20308
20309
JANET_CORE_FN(os_cryptorand,
20310
              "(os/cryptorand n &opt buf)",
20311
0
              "Get or append `n` bytes of good quality random data provided by the OS. Returns a new buffer or `buf`.") {
20312
0
    JanetBuffer *buffer;
20313
0
    janet_arity(argc, 1, 2);
20314
0
    int32_t offset;
20315
0
    int32_t n = janet_getinteger(argv, 0);
20316
0
    if (n < 0) janet_panic("expected positive integer");
20317
0
    if (argc == 2) {
20318
0
        buffer = janet_getbuffer(argv, 1);
20319
0
        offset = buffer->count;
20320
0
    } else {
20321
0
        offset = 0;
20322
0
        buffer = janet_buffer(n);
20323
0
    }
20324
    /* We could optimize here by adding setcount_uninit */
20325
0
    janet_buffer_setcount(buffer, offset + n);
20326
20327
0
    if (janet_cryptorand(buffer->data + offset, n) != 0)
20328
0
        janet_panic("unable to get sufficient random data");
20329
20330
0
    return janet_wrap_buffer(buffer);
20331
0
}
20332
20333
/* Helper function to get given or current time as local or UTC struct tm.
20334
 * - arg n+0: optional time_t to be converted, uses current time if not given
20335
 * - arg n+1: optional truthy to indicate the convnersion uses local time */
20336
0
static struct tm *time_to_tm(const Janet *argv, int32_t argc, int32_t n, struct tm *t_infos) {
20337
0
    time_t t;
20338
0
    if (argc > n && !janet_checktype(argv[n], JANET_NIL)) {
20339
0
        int64_t integer = janet_getinteger64(argv, n);
20340
0
        t = (time_t) integer;
20341
0
    } else {
20342
0
        time(&t);
20343
0
    }
20344
0
    struct tm *t_info = NULL;
20345
0
    if (argc > n + 1 && janet_truthy(argv[n + 1])) {
20346
        /* local time */
20347
#ifdef JANET_WINDOWS
20348
        _tzset();
20349
        localtime_s(t_infos, &t);
20350
        t_info = t_infos;
20351
#else
20352
0
        tzset();
20353
0
        t_info = localtime_r(&t, t_infos);
20354
0
#endif
20355
0
    } else {
20356
        /* utc time */
20357
#ifdef JANET_WINDOWS
20358
        gmtime_s(t_infos, &t);
20359
        t_info = t_infos;
20360
#else
20361
0
        t_info = gmtime_r(&t, t_infos);
20362
0
#endif
20363
0
    }
20364
0
    return t_info;
20365
0
}
20366
20367
JANET_CORE_FN(os_date,
20368
              "(os/date &opt time local)",
20369
              "Returns the given time as a date struct, or the current time if `time` is not given. "
20370
              "Returns a struct with following key values. Note that all numbers are 0-indexed. "
20371
              "Date is given in UTC unless `local` is truthy, in which case the date is formatted for "
20372
              "the local timezone.\n\n"
20373
              "* :seconds - number of seconds [0-61]\n\n"
20374
              "* :minutes - number of minutes [0-59]\n\n"
20375
              "* :hours - number of hours [0-23]\n\n"
20376
              "* :month-day - day of month [0-30]\n\n"
20377
              "* :month - month of year [0, 11]\n\n"
20378
              "* :year - years since year 0 (e.g. 2019)\n\n"
20379
              "* :week-day - day of the week [0-6]\n\n"
20380
              "* :year-day - day of the year [0-365]\n\n"
20381
0
              "* :dst - if Day Light Savings is in effect") {
20382
0
    janet_arity(argc, 0, 2);
20383
0
    (void) argv;
20384
0
    struct tm t_infos;
20385
0
    struct tm *t_info = time_to_tm(argv, argc, 0, &t_infos);
20386
0
    JanetKV *st = janet_struct_begin(9);
20387
0
    janet_struct_put(st, janet_ckeywordv("seconds"), janet_wrap_number(t_info->tm_sec));
20388
0
    janet_struct_put(st, janet_ckeywordv("minutes"), janet_wrap_number(t_info->tm_min));
20389
0
    janet_struct_put(st, janet_ckeywordv("hours"), janet_wrap_number(t_info->tm_hour));
20390
0
    janet_struct_put(st, janet_ckeywordv("month-day"), janet_wrap_number(t_info->tm_mday - 1));
20391
0
    janet_struct_put(st, janet_ckeywordv("month"), janet_wrap_number(t_info->tm_mon));
20392
0
    janet_struct_put(st, janet_ckeywordv("year"), janet_wrap_number(t_info->tm_year + 1900));
20393
0
    janet_struct_put(st, janet_ckeywordv("week-day"), janet_wrap_number(t_info->tm_wday));
20394
0
    janet_struct_put(st, janet_ckeywordv("year-day"), janet_wrap_number(t_info->tm_yday));
20395
0
    janet_struct_put(st, janet_ckeywordv("dst"), janet_wrap_boolean(t_info->tm_isdst));
20396
0
    return janet_wrap_struct(janet_struct_end(st));
20397
0
}
20398
20399
0
#define SIZETIMEFMT     250
20400
20401
JANET_CORE_FN(os_strftime,
20402
              "(os/strftime fmt &opt time local)",
20403
              "Format the given time as a string, or the current time if `time` is not given. "
20404
              "The time is formatted according to the same rules as the ISO C89 function strftime(). "
20405
              "The time is formatted in UTC unless `local` is truthy, in which case the date is formatted for "
20406
0
              "the local timezone.") {
20407
0
    janet_arity(argc, 1, 3);
20408
0
    const char *fmt = janet_getcstring(argv, 0);
20409
    /* ANSI X3.159-1989, section 4.12.3.5 "The strftime function" */
20410
0
    static const char *valid = "aAbBcdHIjmMpSUwWxXyYZ%";
20411
0
    const char *p = fmt;
20412
0
    while (*p) {
20413
0
        if (*p++ == '%') {
20414
0
            if (!strchr(valid, *p)) {
20415
0
                janet_panicf("invalid conversion specifier '%%%c'", *p);
20416
0
            }
20417
0
            p++;
20418
0
        }
20419
0
    }
20420
0
    struct tm t_infos;
20421
0
    struct tm *t_info = time_to_tm(argv, argc, 1, &t_infos);
20422
0
    char buf[SIZETIMEFMT];
20423
0
    (void)strftime(buf, SIZETIMEFMT, fmt, t_info);
20424
0
    return janet_cstringv(buf);
20425
0
}
20426
20427
0
static int entry_getdst(Janet env_entry) {
20428
0
    Janet v;
20429
0
    if (janet_checktype(env_entry, JANET_TABLE)) {
20430
0
        JanetTable *entry = janet_unwrap_table(env_entry);
20431
0
        v = janet_table_get(entry, janet_ckeywordv("dst"));
20432
0
    } else if (janet_checktype(env_entry, JANET_STRUCT)) {
20433
0
        const JanetKV *entry = janet_unwrap_struct(env_entry);
20434
0
        v = janet_struct_get(entry, janet_ckeywordv("dst"));
20435
0
    } else {
20436
0
        v = janet_wrap_nil();
20437
0
    }
20438
0
    if (janet_checktype(v, JANET_NIL)) {
20439
0
        return -1;
20440
0
    } else {
20441
0
        return janet_truthy(v);
20442
0
    }
20443
0
}
20444
20445
#ifdef JANET_WINDOWS
20446
typedef int32_t timeint_t;
20447
#else
20448
typedef int64_t timeint_t;
20449
#endif
20450
20451
0
static timeint_t entry_getint(Janet env_entry, char *field) {
20452
0
    Janet i;
20453
0
    if (janet_checktype(env_entry, JANET_TABLE)) {
20454
0
        JanetTable *entry = janet_unwrap_table(env_entry);
20455
0
        i = janet_table_get(entry, janet_ckeywordv(field));
20456
0
    } else if (janet_checktype(env_entry, JANET_STRUCT)) {
20457
0
        const JanetKV *entry = janet_unwrap_struct(env_entry);
20458
0
        i = janet_struct_get(entry, janet_ckeywordv(field));
20459
0
    } else {
20460
0
        return 0;
20461
0
    }
20462
20463
0
    if (janet_checktype(i, JANET_NIL)) {
20464
0
        return 0;
20465
0
    }
20466
20467
#ifdef JANET_WINDOWS
20468
    if (!janet_checkint(i)) {
20469
        janet_panicf("bad slot #%s, expected 32 bit signed integer, got %v",
20470
                     field, i);
20471
    }
20472
#else
20473
0
    if (!janet_checkint64(i)) {
20474
0
        janet_panicf("bad slot #%s, expected 64 bit signed integer, got %v",
20475
0
                     field, i);
20476
0
    }
20477
0
#endif
20478
20479
0
    return (timeint_t)janet_unwrap_number(i);
20480
0
}
20481
20482
JANET_CORE_FN(os_mktime,
20483
              "(os/mktime date-struct &opt local)",
20484
              "Get the broken down date-struct time expressed as the number "
20485
              "of seconds since January 1, 1970, the Unix epoch. "
20486
              "Returns a real number. "
20487
              "Date is given in UTC unless `local` is truthy, in which case the "
20488
              "date is computed for the local timezone.\n\n"
20489
0
              "Inverse function to os/date.") {
20490
0
    janet_arity(argc, 1, 2);
20491
0
    time_t t;
20492
0
    struct tm t_info;
20493
20494
    /* Use memset instead of = {0} to silence paranoid warning in macos */
20495
0
    memset(&t_info, 0, sizeof(t_info));
20496
20497
0
    if (!janet_checktype(argv[0], JANET_TABLE) &&
20498
0
            !janet_checktype(argv[0], JANET_STRUCT))
20499
0
        janet_panic_type(argv[0], 0, JANET_TFLAG_DICTIONARY);
20500
20501
0
    t_info.tm_sec = entry_getint(argv[0], "seconds");
20502
0
    t_info.tm_min = entry_getint(argv[0], "minutes");
20503
0
    t_info.tm_hour = entry_getint(argv[0], "hours");
20504
0
    t_info.tm_mday = entry_getint(argv[0], "month-day") + 1;
20505
0
    t_info.tm_mon = entry_getint(argv[0], "month");
20506
0
    t_info.tm_year = entry_getint(argv[0], "year") - 1900;
20507
0
    t_info.tm_isdst = entry_getdst(argv[0]);
20508
20509
0
    if (argc >= 2 && janet_truthy(argv[1])) {
20510
        /* local time */
20511
0
        t = mktime(&t_info);
20512
0
    } else {
20513
        /* utc time */
20514
#ifdef JANET_NO_UTC_MKTIME
20515
        janet_panic("os/mktime UTC not supported on this platform");
20516
        return janet_wrap_nil();
20517
#else
20518
0
        t = timegm(&t_info);
20519
0
#endif
20520
0
    }
20521
20522
0
    if (t == (time_t) -1) {
20523
0
        janet_panicf("%s", strerror(errno));
20524
0
    }
20525
20526
0
    return janet_wrap_number((double)t);
20527
0
}
20528
20529
#ifdef JANET_NO_SYMLINKS
20530
#define j_symlink link
20531
#else
20532
0
#define j_symlink symlink
20533
#endif
20534
20535
JANET_CORE_FN(os_link,
20536
              "(os/link oldpath newpath &opt symlink)",
20537
              "Create a link at newpath that points to oldpath and returns nil. "
20538
              "Iff symlink is truthy, creates a symlink. "
20539
              "Iff symlink is falsey or not provided, "
20540
0
              "creates a hard link. Does not work on Windows.") {
20541
0
    janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
20542
0
    janet_arity(argc, 2, 3);
20543
#ifdef JANET_WINDOWS
20544
    (void) argc;
20545
    (void) argv;
20546
    janet_panic("os/link not supported on Windows");
20547
    return janet_wrap_nil();
20548
#else
20549
0
    const char *oldpath = janet_getcstring(argv, 0);
20550
0
    const char *newpath = janet_getcstring(argv, 1);
20551
0
    int res = ((argc == 3 && janet_truthy(argv[2])) ? j_symlink : link)(oldpath, newpath);
20552
0
    if (-1 == res) janet_panicf("%s: %s -> %s", strerror(errno), oldpath, newpath);
20553
0
    return janet_wrap_nil();
20554
0
#endif
20555
0
}
20556
20557
JANET_CORE_FN(os_symlink,
20558
              "(os/symlink oldpath newpath)",
20559
0
              "Create a symlink from oldpath to newpath, returning nil. Same as `(os/link oldpath newpath true)`.") {
20560
0
    janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
20561
0
    janet_fixarity(argc, 2);
20562
#ifdef JANET_WINDOWS
20563
    (void) argc;
20564
    (void) argv;
20565
    janet_panic("os/symlink not supported on Windows");
20566
    return janet_wrap_nil();
20567
#else
20568
0
    const char *oldpath = janet_getcstring(argv, 0);
20569
0
    const char *newpath = janet_getcstring(argv, 1);
20570
0
    int res = j_symlink(oldpath, newpath);
20571
0
    if (-1 == res) janet_panicf("%s: %s -> %s", strerror(errno), oldpath, newpath);
20572
0
    return janet_wrap_nil();
20573
0
#endif
20574
0
}
20575
20576
#undef j_symlink
20577
20578
JANET_CORE_FN(os_mkdir,
20579
              "(os/mkdir path)",
20580
              "Create a new directory. The path will be relative to the current directory if relative, otherwise "
20581
              "it will be an absolute path. Returns true if the directory was created, false if the directory already exists, and "
20582
0
              "errors otherwise.") {
20583
0
    janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
20584
0
    janet_fixarity(argc, 1);
20585
0
    const char *path = janet_getcstring(argv, 0);
20586
#ifdef JANET_WINDOWS
20587
    int res = _mkdir(path);
20588
#else
20589
0
    int res = mkdir(path, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IWGRP | S_IXGRP | S_IROTH | S_IXOTH);
20590
0
#endif
20591
0
    if (res == 0) return janet_wrap_true();
20592
0
    if (errno == EEXIST) return janet_wrap_false();
20593
0
    janet_panicf("%s: %s", strerror(errno), path);
20594
0
}
20595
20596
JANET_CORE_FN(os_rmdir,
20597
              "(os/rmdir path)",
20598
0
              "Delete a directory. The directory must be empty to succeed.") {
20599
0
    janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
20600
0
    janet_fixarity(argc, 1);
20601
0
    const char *path = janet_getcstring(argv, 0);
20602
#ifdef JANET_WINDOWS
20603
    int res = _rmdir(path);
20604
#else
20605
0
    int res = rmdir(path);
20606
0
#endif
20607
0
    if (-1 == res) janet_panicf("%s: %s", strerror(errno), path);
20608
0
    return janet_wrap_nil();
20609
0
}
20610
20611
JANET_CORE_FN(os_cd,
20612
              "(os/cd path)",
20613
0
              "Change current directory to path. Returns nil on success, errors on failure.") {
20614
0
    janet_sandbox_assert(JANET_SANDBOX_FS_READ);
20615
0
    janet_fixarity(argc, 1);
20616
0
    const char *path = janet_getcstring(argv, 0);
20617
#ifdef JANET_WINDOWS
20618
    int res = _chdir(path);
20619
#else
20620
0
    int res = chdir(path);
20621
0
#endif
20622
0
    if (-1 == res) janet_panicf("%s: %s", strerror(errno), path);
20623
0
    return janet_wrap_nil();
20624
0
}
20625
20626
JANET_CORE_FN(os_touch,
20627
              "(os/touch path &opt actime modtime)",
20628
              "Update the access time and modification times for a file. By default, sets "
20629
0
              "times to the current time.") {
20630
0
    janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
20631
0
    janet_arity(argc, 1, 3);
20632
0
    const char *path = janet_getcstring(argv, 0);
20633
0
    struct utimbuf timebuf, *bufp;
20634
0
    if (argc >= 2) {
20635
0
        bufp = &timebuf;
20636
0
        timebuf.actime = (time_t) janet_getnumber(argv, 1);
20637
0
        if (argc >= 3) {
20638
0
            timebuf.modtime = (time_t) janet_getnumber(argv, 2);
20639
0
        } else {
20640
0
            timebuf.modtime = timebuf.actime;
20641
0
        }
20642
0
    } else {
20643
0
        bufp = NULL;
20644
0
    }
20645
0
    int res = utime(path, bufp);
20646
0
    if (-1 == res) janet_panic(strerror(errno));
20647
0
    return janet_wrap_nil();
20648
0
}
20649
20650
JANET_CORE_FN(os_remove,
20651
              "(os/rm path)",
20652
0
              "Delete a file. Returns nil.") {
20653
0
    janet_fixarity(argc, 1);
20654
0
    const char *path = janet_getcstring(argv, 0);
20655
0
    int status = remove(path);
20656
0
    if (-1 == status) janet_panicf("%s: %s", strerror(errno), path);
20657
0
    return janet_wrap_nil();
20658
0
}
20659
20660
#ifndef JANET_NO_SYMLINKS
20661
JANET_CORE_FN(os_readlink,
20662
              "(os/readlink path)",
20663
0
              "Read the contents of a symbolic link. Does not work on Windows.\n") {
20664
0
    janet_fixarity(argc, 1);
20665
#ifdef JANET_WINDOWS
20666
    (void) argc;
20667
    (void) argv;
20668
    janet_panic("os/readlink not supported on Windows");
20669
    return janet_wrap_nil();
20670
#else
20671
0
    static char buffer[PATH_MAX];
20672
0
    const char *path = janet_getcstring(argv, 0);
20673
0
    ssize_t len = readlink(path, buffer, sizeof buffer);
20674
0
    if (len < 0 || (size_t)len >= sizeof buffer)
20675
0
        janet_panicf("%s: %s", strerror(errno), path);
20676
0
    return janet_stringv((const uint8_t *)buffer, len);
20677
0
#endif
20678
0
}
20679
#endif
20680
20681
#ifdef JANET_WINDOWS
20682
20683
typedef struct _stat jstat_t;
20684
typedef unsigned short jmode_t;
20685
20686
static int32_t janet_perm_to_unix(unsigned short m) {
20687
    int32_t ret = 0;
20688
    if (m & S_IEXEC) ret |= 0111;
20689
    if (m & S_IWRITE) ret |= 0222;
20690
    if (m & S_IREAD) ret |= 0444;
20691
    return ret;
20692
}
20693
20694
static unsigned short janet_perm_from_unix(int32_t x) {
20695
    unsigned short m = 0;
20696
    if (x & 111) m |= S_IEXEC;
20697
    if (x & 222) m |= S_IWRITE;
20698
    if (x & 444) m |= S_IREAD;
20699
    return m;
20700
}
20701
20702
static const uint8_t *janet_decode_mode(unsigned short m) {
20703
    const char *str = "other";
20704
    if (m & _S_IFREG) str = "file";
20705
    else if (m & _S_IFDIR) str = "directory";
20706
    else if (m & _S_IFCHR) str = "character";
20707
    return janet_ckeyword(str);
20708
}
20709
20710
static int32_t janet_decode_permissions(jmode_t mode) {
20711
    return (int32_t)(mode & (S_IEXEC | S_IWRITE | S_IREAD));
20712
}
20713
20714
#else
20715
20716
typedef struct stat jstat_t;
20717
typedef mode_t jmode_t;
20718
20719
0
static int32_t janet_perm_to_unix(mode_t m) {
20720
0
    return (int32_t) m;
20721
0
}
20722
20723
0
static mode_t janet_perm_from_unix(int32_t x) {
20724
0
    return (mode_t) x;
20725
0
}
20726
20727
0
static const uint8_t *janet_decode_mode(mode_t m) {
20728
0
    const char *str = "other";
20729
0
    if (S_ISREG(m)) str = "file";
20730
0
    else if (S_ISDIR(m)) str = "directory";
20731
0
    else if (S_ISFIFO(m)) str = "fifo";
20732
0
    else if (S_ISBLK(m)) str = "block";
20733
0
    else if (S_ISSOCK(m)) str = "socket";
20734
0
    else if (S_ISLNK(m)) str = "link";
20735
0
    else if (S_ISCHR(m)) str = "character";
20736
0
    return janet_ckeyword(str);
20737
0
}
20738
20739
0
static int32_t janet_decode_permissions(jmode_t mode) {
20740
0
    return (int32_t)(mode & 0777);
20741
0
}
20742
20743
#endif
20744
20745
0
static int32_t os_parse_permstring(const uint8_t *perm) {
20746
0
    int32_t m = 0;
20747
0
    if (perm[0] == 'r') m |= 0400;
20748
0
    if (perm[1] == 'w') m |= 0200;
20749
0
    if (perm[2] == 'x') m |= 0100;
20750
0
    if (perm[3] == 'r') m |= 0040;
20751
0
    if (perm[4] == 'w') m |= 0020;
20752
0
    if (perm[5] == 'x') m |= 0010;
20753
0
    if (perm[6] == 'r') m |= 0004;
20754
0
    if (perm[7] == 'w') m |= 0002;
20755
0
    if (perm[8] == 'x') m |= 0001;
20756
0
    return m;
20757
0
}
20758
20759
0
static Janet os_make_permstring(int32_t permissions) {
20760
0
    uint8_t bytes[9] = {0};
20761
0
    bytes[0] = (permissions & 0400) ? 'r' : '-';
20762
0
    bytes[1] = (permissions & 0200) ? 'w' : '-';
20763
0
    bytes[2] = (permissions & 0100) ? 'x' : '-';
20764
0
    bytes[3] = (permissions & 0040) ? 'r' : '-';
20765
0
    bytes[4] = (permissions & 0020) ? 'w' : '-';
20766
0
    bytes[5] = (permissions & 0010) ? 'x' : '-';
20767
0
    bytes[6] = (permissions & 0004) ? 'r' : '-';
20768
0
    bytes[7] = (permissions & 0002) ? 'w' : '-';
20769
0
    bytes[8] = (permissions & 0001) ? 'x' : '-';
20770
0
    return janet_stringv(bytes, sizeof(bytes));
20771
0
}
20772
20773
0
static int32_t os_get_unix_mode(const Janet *argv, int32_t n) {
20774
0
    int32_t unix_mode;
20775
0
    if (janet_checkint(argv[n])) {
20776
        /* Integer mode */
20777
0
        int32_t x = janet_unwrap_integer(argv[n]);
20778
0
        if (x < 0 || x > 0777) {
20779
0
            janet_panicf("bad slot #%d, expected integer in range [0, 8r777], got %v", n, argv[n]);
20780
0
        }
20781
0
        unix_mode = x;
20782
0
    } else {
20783
        /* Bytes mode */
20784
0
        JanetByteView bytes = janet_getbytes(argv, n);
20785
0
        if (bytes.len != 9) {
20786
0
            janet_panicf("bad slot #%d: expected byte sequence of length 9, got %v", n, argv[n]);
20787
0
        }
20788
0
        unix_mode = os_parse_permstring(bytes.bytes);
20789
0
    }
20790
0
    return unix_mode;
20791
0
}
20792
20793
0
static jmode_t os_getmode(const Janet *argv, int32_t n) {
20794
0
    return janet_perm_from_unix(os_get_unix_mode(argv, n));
20795
0
}
20796
20797
/* Getters */
20798
0
static Janet os_stat_dev(jstat_t *st) {
20799
0
    return janet_wrap_number(st->st_dev);
20800
0
}
20801
0
static Janet os_stat_inode(jstat_t *st) {
20802
0
    return janet_wrap_number(st->st_ino);
20803
0
}
20804
0
static Janet os_stat_mode(jstat_t *st) {
20805
0
    return janet_wrap_keyword(janet_decode_mode(st->st_mode));
20806
0
}
20807
0
static Janet os_stat_int_permissions(jstat_t *st) {
20808
0
    return janet_wrap_integer(janet_perm_to_unix(janet_decode_permissions(st->st_mode)));
20809
0
}
20810
0
static Janet os_stat_permissions(jstat_t *st) {
20811
0
    return os_make_permstring(janet_perm_to_unix(janet_decode_permissions(st->st_mode)));
20812
0
}
20813
0
static Janet os_stat_uid(jstat_t *st) {
20814
0
    return janet_wrap_number(st->st_uid);
20815
0
}
20816
0
static Janet os_stat_gid(jstat_t *st) {
20817
0
    return janet_wrap_number(st->st_gid);
20818
0
}
20819
0
static Janet os_stat_nlink(jstat_t *st) {
20820
0
    return janet_wrap_number(st->st_nlink);
20821
0
}
20822
0
static Janet os_stat_rdev(jstat_t *st) {
20823
0
    return janet_wrap_number(st->st_rdev);
20824
0
}
20825
0
static Janet os_stat_size(jstat_t *st) {
20826
0
    return janet_wrap_number(st->st_size);
20827
0
}
20828
0
static Janet os_stat_accessed(jstat_t *st) {
20829
0
    return janet_wrap_number((double) st->st_atime);
20830
0
}
20831
0
static Janet os_stat_modified(jstat_t *st) {
20832
0
    return janet_wrap_number((double) st->st_mtime);
20833
0
}
20834
0
static Janet os_stat_changed(jstat_t *st) {
20835
0
    return janet_wrap_number((double) st->st_ctime);
20836
0
}
20837
#ifdef JANET_WINDOWS
20838
static Janet os_stat_blocks(jstat_t *st) {
20839
    (void) st;
20840
    return janet_wrap_number(0);
20841
}
20842
static Janet os_stat_blocksize(jstat_t *st) {
20843
    (void) st;
20844
    return janet_wrap_number(0);
20845
}
20846
#else
20847
0
static Janet os_stat_blocks(jstat_t *st) {
20848
0
    return janet_wrap_number(st->st_blocks);
20849
0
}
20850
0
static Janet os_stat_blocksize(jstat_t *st) {
20851
0
    return janet_wrap_number(st->st_blksize);
20852
0
}
20853
#endif
20854
20855
struct OsStatGetter {
20856
    const char *name;
20857
    Janet(*fn)(jstat_t *st);
20858
};
20859
20860
static const struct OsStatGetter os_stat_getters[] = {
20861
    {"dev", os_stat_dev},
20862
    {"inode", os_stat_inode},
20863
    {"mode", os_stat_mode},
20864
    {"int-permissions", os_stat_int_permissions},
20865
    {"permissions", os_stat_permissions},
20866
    {"uid", os_stat_uid},
20867
    {"gid", os_stat_gid},
20868
    {"nlink", os_stat_nlink},
20869
    {"rdev", os_stat_rdev},
20870
    {"size", os_stat_size},
20871
    {"blocks", os_stat_blocks},
20872
    {"blocksize", os_stat_blocksize},
20873
    {"accessed", os_stat_accessed},
20874
    {"modified", os_stat_modified},
20875
    {"changed", os_stat_changed},
20876
    {NULL, NULL}
20877
};
20878
20879
0
static Janet os_stat_or_lstat(int do_lstat, int32_t argc, Janet *argv) {
20880
0
    janet_sandbox_assert(JANET_SANDBOX_FS_READ);
20881
0
    janet_arity(argc, 1, 2);
20882
0
    const char *path = janet_getcstring(argv, 0);
20883
0
    JanetTable *tab = NULL;
20884
0
    const uint8_t *key = NULL;
20885
0
    if (argc == 2) {
20886
0
        if (janet_checktype(argv[1], JANET_KEYWORD)) {
20887
0
            key = janet_getkeyword(argv, 1);
20888
0
        } else {
20889
0
            tab = janet_gettable(argv, 1);
20890
0
        }
20891
0
    } else {
20892
0
        tab = janet_table(0);
20893
0
    }
20894
20895
    /* Build result */
20896
0
    jstat_t st;
20897
#ifdef JANET_WINDOWS
20898
    (void) do_lstat;
20899
    int res = _stat(path, &st);
20900
#else
20901
0
    int res;
20902
0
    if (do_lstat) {
20903
0
        res = lstat(path, &st);
20904
0
    } else {
20905
0
        res = stat(path, &st);
20906
0
    }
20907
0
#endif
20908
0
    if (-1 == res) {
20909
0
        return janet_wrap_nil();
20910
0
    }
20911
20912
0
    if (NULL == key) {
20913
        /* Put results in table */
20914
0
        for (const struct OsStatGetter *sg = os_stat_getters; sg->name != NULL; sg++) {
20915
0
            janet_table_put(tab, janet_ckeywordv(sg->name), sg->fn(&st));
20916
0
        }
20917
0
        return janet_wrap_table(tab);
20918
0
    } else {
20919
        /* Get one result */
20920
0
        for (const struct OsStatGetter *sg = os_stat_getters; sg->name != NULL; sg++) {
20921
0
            if (janet_cstrcmp(key, sg->name)) continue;
20922
0
            return sg->fn(&st);
20923
0
        }
20924
0
        janet_panicf("unexpected keyword %v", janet_wrap_keyword(key));
20925
0
        return janet_wrap_nil();
20926
0
    }
20927
0
}
20928
20929
JANET_CORE_FN(os_stat,
20930
              "(os/stat path &opt tab|key)",
20931
              "Gets information about a file or directory. Returns a table if the second argument is a keyword, returns "
20932
              "only that information from stat. If the file or directory does not exist, returns nil. The keys are:\n\n"
20933
              "* :dev - the device that the file is on\n\n"
20934
              "* :mode - the type of file, one of :file, :directory, :block, :character, :fifo, :socket, :link, or :other\n\n"
20935
              "* :int-permissions - A Unix permission integer like 8r744\n\n"
20936
              "* :permissions - A Unix permission string like \"rwxr--r--\"\n\n"
20937
              "* :uid - File uid\n\n"
20938
              "* :gid - File gid\n\n"
20939
              "* :nlink - number of links to file\n\n"
20940
              "* :rdev - Real device of file. 0 on Windows\n\n"
20941
              "* :size - size of file in bytes\n\n"
20942
              "* :blocks - number of blocks in file. 0 on Windows\n\n"
20943
              "* :blocksize - size of blocks in file. 0 on Windows\n\n"
20944
              "* :accessed - timestamp when file last accessed\n\n"
20945
              "* :changed - timestamp when file last changed (permissions changed)\n\n"
20946
0
              "* :modified - timestamp when file last modified (content changed)\n") {
20947
0
    return os_stat_or_lstat(0, argc, argv);
20948
0
}
20949
20950
JANET_CORE_FN(os_lstat,
20951
              "(os/lstat path &opt tab|key)",
20952
0
              "Like os/stat, but don't follow symlinks.\n") {
20953
0
    return os_stat_or_lstat(1, argc, argv);
20954
0
}
20955
20956
JANET_CORE_FN(os_chmod,
20957
              "(os/chmod path mode)",
20958
              "Change file permissions, where `mode` is a permission string as returned by "
20959
              "`os/perm-string`, or an integer as returned by `os/perm-int`. "
20960
              "When `mode` is an integer, it is interpreted as a Unix permission value, best specified in octal, like "
20961
0
              "8r666 or 8r400. Windows will not differentiate between user, group, and other permissions, and thus will combine all of these permissions. Returns nil.") {
20962
0
    janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
20963
0
    janet_fixarity(argc, 2);
20964
0
    const char *path = janet_getcstring(argv, 0);
20965
#ifdef JANET_WINDOWS
20966
    int res = _chmod(path, os_getmode(argv, 1));
20967
#else
20968
0
    int res = chmod(path, os_getmode(argv, 1));
20969
0
#endif
20970
0
    if (-1 == res) janet_panicf("%s: %s", strerror(errno), path);
20971
0
    return janet_wrap_nil();
20972
0
}
20973
20974
#ifndef JANET_NO_UMASK
20975
JANET_CORE_FN(os_umask,
20976
              "(os/umask mask)",
20977
0
              "Set a new umask, returns the old umask.") {
20978
0
    janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
20979
0
    janet_fixarity(argc, 1);
20980
0
    int mask = (int) os_getmode(argv, 0);
20981
#ifdef JANET_WINDOWS
20982
    int res = _umask(mask);
20983
#else
20984
0
    int res = umask(mask);
20985
0
#endif
20986
0
    return janet_wrap_integer(janet_perm_to_unix(res));
20987
0
}
20988
#endif
20989
20990
JANET_CORE_FN(os_dir,
20991
              "(os/dir dir &opt array)",
20992
              "Iterate over files and subdirectories in a directory. Returns an array of paths parts, "
20993
0
              "with only the file name or directory name and no prefix.") {
20994
0
    janet_sandbox_assert(JANET_SANDBOX_FS_READ);
20995
0
    janet_arity(argc, 1, 2);
20996
0
    const char *dir = janet_getcstring(argv, 0);
20997
0
    JanetArray *paths = (argc == 2) ? janet_getarray(argv, 1) : janet_array(0);
20998
#ifdef JANET_WINDOWS
20999
    /* Read directory items with FindFirstFile / FindNextFile / FindClose */
21000
    struct _finddata_t afile;
21001
    char pattern[MAX_PATH + 1];
21002
    if (strlen(dir) > (sizeof(pattern) - 3))
21003
        janet_panicf("path too long: %s", dir);
21004
    sprintf(pattern, "%s/*", dir);
21005
    intptr_t res = _findfirst(pattern, &afile);
21006
    if (-1 == res) janet_panicv(janet_cstringv(strerror(errno)));
21007
    do {
21008
        if (strcmp(".", afile.name) && strcmp("..", afile.name)) {
21009
            janet_array_push(paths, janet_cstringv(afile.name));
21010
        }
21011
    } while (_findnext(res, &afile) != -1);
21012
    _findclose(res);
21013
#else
21014
    /* Read directory items with opendir / readdir / closedir */
21015
0
    struct dirent *dp;
21016
0
    DIR *dfd = opendir(dir);
21017
0
    if (dfd == NULL) janet_panicf("cannot open directory %s", dir);
21018
0
    while ((dp = readdir(dfd)) != NULL) {
21019
0
        if (!strcmp(dp->d_name, ".") || !strcmp(dp->d_name, "..")) {
21020
0
            continue;
21021
0
        }
21022
0
        janet_array_push(paths, janet_cstringv(dp->d_name));
21023
0
    }
21024
0
    closedir(dfd);
21025
0
#endif
21026
0
    return janet_wrap_array(paths);
21027
0
}
21028
21029
JANET_CORE_FN(os_rename,
21030
              "(os/rename oldname newname)",
21031
0
              "Rename a file on disk to a new path. Returns nil.") {
21032
0
    janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
21033
0
    janet_fixarity(argc, 2);
21034
0
    const char *src = janet_getcstring(argv, 0);
21035
0
    const char *dest = janet_getcstring(argv, 1);
21036
0
    int status = rename(src, dest);
21037
0
    if (status) {
21038
0
        janet_panic(strerror(errno));
21039
0
    }
21040
0
    return janet_wrap_nil();
21041
0
}
21042
21043
JANET_CORE_FN(os_realpath,
21044
              "(os/realpath path)",
21045
              "Get the absolute path for a given path, following ../, ./, and symlinks. "
21046
0
              "Returns an absolute path as a string.") {
21047
0
    janet_sandbox_assert(JANET_SANDBOX_FS_READ);
21048
0
    janet_fixarity(argc, 1);
21049
0
    const char *src = janet_getcstring(argv, 0);
21050
#ifdef JANET_NO_REALPATH
21051
    janet_panic("os/realpath not enabled for this platform");
21052
#else
21053
#ifdef JANET_WINDOWS
21054
    char *dest = _fullpath(NULL, src, _MAX_PATH);
21055
#else
21056
0
    char *dest = realpath(src, NULL);
21057
0
#endif
21058
0
    if (NULL == dest) janet_panicf("%s: %s", strerror(errno), src);
21059
0
    Janet ret = janet_cstringv(dest);
21060
0
    janet_free(dest);
21061
0
    return ret;
21062
0
#endif
21063
0
}
21064
21065
JANET_CORE_FN(os_permission_string,
21066
              "(os/perm-string int)",
21067
              "Convert a Unix octal permission value from a permission integer as returned by `os/stat` "
21068
              "to a human readable string, that follows the formatting "
21069
              "of Unix tools like `ls`. Returns the string as a 9-character string of r, w, x and - characters. Does not "
21070
0
              "include the file/directory/symlink character as rendered by `ls`.") {
21071
0
    janet_fixarity(argc, 1);
21072
0
    return os_make_permstring(os_get_unix_mode(argv, 0));
21073
0
}
21074
21075
JANET_CORE_FN(os_permission_int,
21076
              "(os/perm-int bytes)",
21077
0
              "Parse a 9-character permission string and return an integer that can be used by chmod.") {
21078
0
    janet_fixarity(argc, 1);
21079
0
    return janet_wrap_integer(os_get_unix_mode(argv, 0));
21080
0
}
21081
21082
#ifdef JANET_EV
21083
21084
/*
21085
 * Define a few functions on streams the require JANET_EV to be defined.
21086
 */
21087
21088
0
static jmode_t os_optmode(int32_t argc, const Janet *argv, int32_t n, int32_t dflt) {
21089
0
    if (argc > n) return os_getmode(argv, n);
21090
0
    return janet_perm_from_unix(dflt);
21091
0
}
21092
21093
JANET_CORE_FN(os_open,
21094
              "(os/open path &opt flags mode)",
21095
              "Create a stream from a file, like the POSIX open system call. Returns a new stream. "
21096
              "`mode` should be a file mode as passed to `os/chmod`, but only if the create flag is given. "
21097
              "The default mode is 8r666. "
21098
              "Allowed flags are as follows:\n\n"
21099
              "  * :r - open this file for reading\n"
21100
              "  * :w - open this file for writing\n"
21101
              "  * :c - create a new file (O\\_CREATE)\n"
21102
              "  * :e - fail if the file exists (O\\_EXCL)\n"
21103
              "  * :t - shorten an existing file to length 0 (O\\_TRUNC)\n\n"
21104
              "Posix-only flags:\n\n"
21105
              "  * :a - append to a file (O\\_APPEND)\n"
21106
              "  * :x - O\\_SYNC\n"
21107
              "  * :C - O\\_NOCTTY\n\n"
21108
              "Windows-only flags:\n\n"
21109
              "  * :R - share reads (FILE\\_SHARE\\_READ)\n"
21110
              "  * :W - share writes (FILE\\_SHARE\\_WRITE)\n"
21111
              "  * :D - share deletes (FILE\\_SHARE\\_DELETE)\n"
21112
              "  * :H - FILE\\_ATTRIBUTE\\_HIDDEN\n"
21113
              "  * :O - FILE\\_ATTRIBUTE\\_READONLY\n"
21114
              "  * :F - FILE\\_ATTRIBUTE\\_OFFLINE\n"
21115
              "  * :T - FILE\\_ATTRIBUTE\\_TEMPORARY\n"
21116
              "  * :d - FILE\\_FLAG\\_DELETE\\_ON\\_CLOSE\n"
21117
0
              "  * :b - FILE\\_FLAG\\_NO\\_BUFFERING\n") {
21118
0
    janet_arity(argc, 1, 3);
21119
0
    const char *path = janet_getcstring(argv, 0);
21120
0
    const uint8_t *opt_flags = janet_optkeyword(argv, argc, 1, (const uint8_t *) "r");
21121
0
    jmode_t mode = os_optmode(argc, argv, 2, 0666);
21122
0
    uint32_t stream_flags = 0;
21123
0
    JanetHandle fd;
21124
#ifdef JANET_WINDOWS
21125
    (void) mode;
21126
    DWORD desiredAccess = 0;
21127
    DWORD shareMode = 0;
21128
    DWORD creationDisp = 0;
21129
    DWORD flagsAndAttributes = FILE_FLAG_OVERLAPPED;
21130
    /* We map unix-like open flags to the creationDisp parameter */
21131
    int creatUnix = 0;
21132
#define OCREAT 1
21133
#define OEXCL 2
21134
#define OTRUNC 4
21135
    for (const uint8_t *c = opt_flags; *c; c++) {
21136
        switch (*c) {
21137
            default:
21138
                break;
21139
            case 'r':
21140
                desiredAccess |= GENERIC_READ;
21141
                stream_flags |= JANET_STREAM_READABLE;
21142
                janet_sandbox_assert(JANET_SANDBOX_FS_READ);
21143
                break;
21144
            case 'w':
21145
                desiredAccess |= GENERIC_WRITE;
21146
                stream_flags |= JANET_STREAM_WRITABLE;
21147
                janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
21148
                break;
21149
            case 'c':
21150
                creatUnix |= OCREAT;
21151
                janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
21152
                break;
21153
            case 'e':
21154
                creatUnix |= OEXCL;
21155
                break;
21156
            case 't':
21157
                creatUnix |= OTRUNC;
21158
                janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
21159
                break;
21160
            /* Windows only flags */
21161
            case 'D':
21162
                shareMode |= FILE_SHARE_DELETE;
21163
                break;
21164
            case 'R':
21165
                shareMode |= FILE_SHARE_READ;
21166
                break;
21167
            case 'W':
21168
                shareMode |= FILE_SHARE_WRITE;
21169
                break;
21170
            case 'H':
21171
                flagsAndAttributes |= FILE_ATTRIBUTE_HIDDEN;
21172
                break;
21173
            case 'O':
21174
                flagsAndAttributes |= FILE_ATTRIBUTE_READONLY;
21175
                break;
21176
            case 'F':
21177
                flagsAndAttributes |= FILE_ATTRIBUTE_OFFLINE;
21178
                break;
21179
            case 'T':
21180
                flagsAndAttributes |= FILE_ATTRIBUTE_TEMPORARY;
21181
                break;
21182
            case 'd':
21183
                flagsAndAttributes |= FILE_FLAG_DELETE_ON_CLOSE;
21184
                break;
21185
            case 'b':
21186
                flagsAndAttributes |= FILE_FLAG_NO_BUFFERING;
21187
                break;
21188
                /* we could potentially add more here -
21189
                 * https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilea
21190
                 */
21191
        }
21192
    }
21193
    switch (creatUnix) {
21194
        default:
21195
            janet_panic("invalid creation flags");
21196
        case 0:
21197
            creationDisp = OPEN_EXISTING;
21198
            break;
21199
        case OCREAT:
21200
            creationDisp = OPEN_ALWAYS;
21201
            break;
21202
        case OCREAT + OEXCL:
21203
            creationDisp = CREATE_NEW;
21204
            break;
21205
        case OCREAT + OTRUNC:
21206
            creationDisp = CREATE_ALWAYS;
21207
            break;
21208
        case OTRUNC:
21209
            creationDisp = TRUNCATE_EXISTING;
21210
            break;
21211
    }
21212
    fd = CreateFileA(path, desiredAccess, shareMode, NULL, creationDisp, flagsAndAttributes, NULL);
21213
    if (fd == INVALID_HANDLE_VALUE) janet_panicv(janet_ev_lasterr());
21214
#else
21215
0
    int open_flags = O_NONBLOCK;
21216
0
#ifdef JANET_LINUX
21217
0
    open_flags |= O_CLOEXEC;
21218
0
#endif
21219
0
    int read_flag = 0;
21220
0
    int write_flag = 0;
21221
0
    for (const uint8_t *c = opt_flags; *c; c++) {
21222
0
        switch (*c) {
21223
0
            default:
21224
0
                break;
21225
0
            case 'r':
21226
0
                read_flag = 1;
21227
0
                stream_flags |= JANET_STREAM_READABLE;
21228
0
                janet_sandbox_assert(JANET_SANDBOX_FS_READ);
21229
0
                break;
21230
0
            case 'w':
21231
0
                write_flag = 1;
21232
0
                stream_flags |= JANET_STREAM_WRITABLE;
21233
0
                janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
21234
0
                break;
21235
0
            case 'c':
21236
0
                open_flags |= O_CREAT;
21237
0
                janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
21238
0
                break;
21239
0
            case 'e':
21240
0
                open_flags |= O_EXCL;
21241
0
                break;
21242
0
            case 't':
21243
0
                open_flags |= O_TRUNC;
21244
0
                janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
21245
0
                break;
21246
            /* posix only */
21247
0
            case 'x':
21248
0
                open_flags |= O_SYNC;
21249
0
                break;
21250
0
            case 'C':
21251
0
                open_flags |= O_NOCTTY;
21252
0
                break;
21253
0
            case 'a':
21254
0
                open_flags |= O_APPEND;
21255
0
                break;
21256
0
        }
21257
0
    }
21258
    /* If both read and write, fix up to O_RDWR */
21259
0
    if (read_flag && !write_flag) {
21260
0
        open_flags |= O_RDONLY;
21261
0
    } else if (write_flag && !read_flag) {
21262
0
        open_flags |= O_WRONLY;
21263
0
    } else {
21264
0
        open_flags = O_RDWR;
21265
0
    }
21266
21267
0
    do {
21268
0
        fd = open(path, open_flags, mode);
21269
0
    } while (fd == -1 && errno == EINTR);
21270
0
    if (fd == -1) janet_panicv(janet_ev_lasterr());
21271
0
#endif
21272
0
    return janet_wrap_abstract(janet_stream(fd, stream_flags, NULL));
21273
0
}
21274
21275
JANET_CORE_FN(os_pipe,
21276
              "(os/pipe)",
21277
              "Create a readable stream and a writable stream that are connected. Returns a two-element "
21278
              "tuple where the first element is a readable stream and the second element is the writable "
21279
0
              "stream.") {
21280
0
    (void) argv;
21281
0
    janet_fixarity(argc, 0);
21282
0
    JanetHandle fds[2];
21283
0
    if (janet_make_pipe(fds, 0)) janet_panicv(janet_ev_lasterr());
21284
0
    JanetStream *reader = janet_stream(fds[0], JANET_STREAM_READABLE, NULL);
21285
0
    JanetStream *writer = janet_stream(fds[1], JANET_STREAM_WRITABLE, NULL);
21286
0
    Janet tup[2] = {janet_wrap_abstract(reader), janet_wrap_abstract(writer)};
21287
0
    return janet_wrap_tuple(janet_tuple_n(tup, 2));
21288
0
}
21289
21290
#endif
21291
21292
#endif /* JANET_REDUCED_OS */
21293
21294
/* Module entry point */
21295
0
void janet_lib_os(JanetTable *env) {
21296
#if !defined(JANET_REDUCED_OS) && defined(JANET_WINDOWS) && defined(JANET_THREADS)
21297
    /* During start up, the top-most abstract machine (thread)
21298
     * in the thread tree sets up the critical section. */
21299
    static volatile long env_lock_initializing = 0;
21300
    static volatile long env_lock_initialized = 0;
21301
    if (!InterlockedExchange(&env_lock_initializing, 1)) {
21302
        InitializeCriticalSection(&env_lock);
21303
        InterlockedOr(&env_lock_initialized, 1);
21304
    } else {
21305
        while (!InterlockedOr(&env_lock_initialized, 0)) {
21306
            Sleep(0);
21307
        }
21308
    }
21309
21310
#endif
21311
0
#ifndef JANET_NO_PROCESSES
21312
0
#endif
21313
0
    JanetRegExt os_cfuns[] = {
21314
0
        JANET_CORE_REG("os/exit", os_exit),
21315
0
        JANET_CORE_REG("os/which", os_which),
21316
0
        JANET_CORE_REG("os/arch", os_arch),
21317
0
        JANET_CORE_REG("os/compiler", os_compiler),
21318
0
#ifndef JANET_REDUCED_OS
21319
21320
        /* misc (un-sandboxed) */
21321
0
        JANET_CORE_REG("os/cpu-count", os_cpu_count),
21322
0
        JANET_CORE_REG("os/cwd", os_cwd),
21323
0
        JANET_CORE_REG("os/cryptorand", os_cryptorand),
21324
0
        JANET_CORE_REG("os/perm-string", os_permission_string),
21325
0
        JANET_CORE_REG("os/perm-int", os_permission_int),
21326
0
        JANET_CORE_REG("os/mktime", os_mktime),
21327
0
        JANET_CORE_REG("os/time", os_time), /* not high resolution */
21328
0
        JANET_CORE_REG("os/date", os_date), /* not high resolution */
21329
0
        JANET_CORE_REG("os/strftime", os_strftime),
21330
0
        JANET_CORE_REG("os/sleep", os_sleep),
21331
0
        JANET_CORE_REG("os/isatty", os_isatty),
21332
21333
        /* env functions */
21334
0
        JANET_CORE_REG("os/environ", os_environ),
21335
0
        JANET_CORE_REG("os/getenv", os_getenv),
21336
0
        JANET_CORE_REG("os/setenv", os_setenv),
21337
21338
        /* fs read */
21339
0
        JANET_CORE_REG("os/dir", os_dir),
21340
0
        JANET_CORE_REG("os/stat", os_stat),
21341
0
        JANET_CORE_REG("os/lstat", os_lstat),
21342
0
        JANET_CORE_REG("os/chmod", os_chmod),
21343
0
        JANET_CORE_REG("os/touch", os_touch),
21344
0
        JANET_CORE_REG("os/realpath", os_realpath),
21345
0
        JANET_CORE_REG("os/cd", os_cd),
21346
0
#ifndef JANET_NO_UMASK
21347
0
        JANET_CORE_REG("os/umask", os_umask),
21348
0
#endif
21349
0
#ifndef JANET_NO_SYMLINKS
21350
0
        JANET_CORE_REG("os/readlink", os_readlink),
21351
0
#endif
21352
21353
        /* fs write */
21354
0
        JANET_CORE_REG("os/mkdir", os_mkdir),
21355
0
        JANET_CORE_REG("os/rmdir", os_rmdir),
21356
0
        JANET_CORE_REG("os/rm", os_remove),
21357
0
        JANET_CORE_REG("os/link", os_link),
21358
0
        JANET_CORE_REG("os/rename", os_rename),
21359
0
#ifndef JANET_NO_SYMLINKS
21360
0
        JANET_CORE_REG("os/symlink", os_symlink),
21361
0
#endif
21362
21363
        /* processes */
21364
0
#ifndef JANET_NO_PROCESSES
21365
0
        JANET_CORE_REG("os/execute", os_execute),
21366
0
        JANET_CORE_REG("os/spawn", os_spawn),
21367
0
        JANET_CORE_REG("os/shell", os_shell),
21368
        /* no need to sandbox process management if you can't create processes
21369
         * (allows for limited functionality if use exposes C-functions to create specific processes) */
21370
0
        JANET_CORE_REG("os/proc-wait", os_proc_wait),
21371
0
        JANET_CORE_REG("os/proc-kill", os_proc_kill),
21372
0
        JANET_CORE_REG("os/proc-close", os_proc_close),
21373
0
#endif
21374
21375
        /* high resolution timers */
21376
0
        JANET_CORE_REG("os/clock", os_clock),
21377
21378
0
#ifdef JANET_EV
21379
0
        JANET_CORE_REG("os/open", os_open), /* fs read and write */
21380
0
        JANET_CORE_REG("os/pipe", os_pipe),
21381
0
#endif
21382
0
#endif
21383
0
        JANET_REG_END
21384
0
    };
21385
0
    janet_core_cfuns_ext(env, NULL, os_cfuns);
21386
0
}
21387
21388
21389
/* src/core/parse.c */
21390
#line 0 "src/core/parse.c"
21391
21392
/*
21393
* Copyright (c) 2023 Calvin Rose
21394
*
21395
* Permission is hereby granted, free of charge, to any person obtaining a copy
21396
* of this software and associated documentation files (the "Software"), to
21397
* deal in the Software without restriction, including without limitation the
21398
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
21399
* sell copies of the Software, and to permit persons to whom the Software is
21400
* furnished to do so, subject to the following conditions:
21401
*
21402
* The above copyright notice and this permission notice shall be included in
21403
* all copies or substantial portions of the Software.
21404
*
21405
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21406
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21407
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21408
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21409
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21410
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
21411
* IN THE SOFTWARE.
21412
*/
21413
21414
#ifndef JANET_AMALG
21415
#include "features.h"
21416
#include <janet.h>
21417
#include "util.h"
21418
#endif
21419
21420
0
#define JANET_PARSER_DEAD 0x1
21421
226
#define JANET_PARSER_GENERATED_ERROR 0x2
21422
21423
/* Check if a character is whitespace */
21424
3.89M
static int is_whitespace(uint8_t c) {
21425
3.89M
    return c == ' '
21426
3.89M
           || c == '\t'
21427
3.89M
           || c == '\n'
21428
3.89M
           || c == '\r'
21429
3.89M
           || c == '\0'
21430
3.89M
           || c == '\v'
21431
3.89M
           || c == '\f';
21432
3.89M
}
21433
21434
/* Code generated by tools/symcharsgen.c.
21435
 * The table contains 256 bits, where each bit is 1
21436
 * if the corresponding ascii code is a symbol char, and 0
21437
 * if not. The upper characters are also considered symbol
21438
 * chars and are then checked for utf-8 compliance. */
21439
static const uint32_t symchars[8] = {
21440
    0x00000000, 0xf7ffec72, 0xc7ffffff, 0x07fffffe,
21441
    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff
21442
};
21443
21444
/* Check if a character is a valid symbol character
21445
 * symbol chars are A-Z, a-z, 0-9, or one of !$&*+-./:<=>@\^_| */
21446
34.6M
int janet_is_symbol_char(uint8_t c) {
21447
34.6M
    return symchars[c >> 5] & ((uint32_t)1 << (c & 0x1F));
21448
34.6M
}
21449
21450
/* Validate some utf8. Useful for identifiers. Only validates
21451
 * the encoding, does not check for valid code points (they
21452
 * are less well defined than the encoding). */
21453
2.38k
int janet_valid_utf8(const uint8_t *str, int32_t len) {
21454
2.38k
    int32_t i = 0;
21455
2.38k
    int32_t j;
21456
12.1M
    while (i < len) {
21457
12.1M
        int32_t nexti;
21458
12.1M
        uint8_t c = str[i];
21459
21460
        /* Check the number of bytes in code point */
21461
12.1M
        if (c < 0x80) nexti = i + 1;
21462
56.4k
        else if ((c >> 5) == 0x06) nexti = i + 2;
21463
52.9k
        else if ((c >> 4) == 0x0E) nexti = i + 3;
21464
51.5k
        else if ((c >> 3) == 0x1E) nexti = i + 4;
21465
        /* Don't allow 5 or 6 byte code points */
21466
63
        else return 0;
21467
21468
        /* No overflow */
21469
12.1M
        if (nexti > len) return 0;
21470
21471
        /* Ensure trailing bytes are well formed (10XX XXXX) */
21472
12.2M
        for (j = i + 1; j < nexti; j++) {
21473
160k
            if ((str[j] >> 6) != 2) return 0;
21474
160k
        }
21475
21476
        /* Check for overlong encoding */
21477
12.1M
        if ((nexti == i + 2) && str[i] < 0xC2) return 0;
21478
12.1M
        if ((str[i] == 0xE0) && str[i + 1] < 0xA0) return 0;
21479
12.1M
        if ((str[i] == 0xF0) && str[i + 1] < 0x90) return 0;
21480
21481
12.1M
        i = nexti;
21482
12.1M
    }
21483
2.17k
    return 1;
21484
2.38k
}
21485
21486
/* Get hex digit from a letter */
21487
35.7k
static int to_hex(uint8_t c) {
21488
35.7k
    if (c >= '0' && c <= '9') {
21489
7.95k
        return c - '0';
21490
27.7k
    } else if (c >= 'A' && c <= 'F') {
21491
3.55k
        return 10 + c - 'A';
21492
24.2k
    } else if (c >= 'a' && c <= 'f') {
21493
24.1k
        return 10 + c - 'a';
21494
24.1k
    } else {
21495
33
        return -1;
21496
33
    }
21497
35.7k
}
21498
21499
typedef int (*Consumer)(JanetParser *p, JanetParseState *state, uint8_t c);
21500
struct JanetParseState {
21501
    int32_t counter;
21502
    int32_t argn;
21503
    int flags;
21504
    size_t line;
21505
    size_t column;
21506
    Consumer consumer;
21507
};
21508
21509
/* Define a stack on the main parser struct */
21510
#define DEF_PARSER_STACK(NAME, T, STACK, STACKCOUNT, STACKCAP) \
21511
71.3M
static void NAME(JanetParser *p, T x) { \
21512
71.3M
    size_t oldcount = p->STACKCOUNT; \
21513
71.3M
    size_t newcount = oldcount + 1; \
21514
71.3M
    if (newcount > p->STACKCAP) { \
21515
35.0k
        T *next; \
21516
35.0k
        size_t newcap = 2 * newcount; \
21517
35.0k
        next = janet_realloc(p->STACK, sizeof(T) * newcap); \
21518
35.0k
        if (NULL == next) { \
21519
0
            JANET_OUT_OF_MEMORY; \
21520
0
        } \
21521
35.0k
        p->STACK = next; \
21522
35.0k
        p->STACKCAP = newcap; \
21523
35.0k
    } \
21524
71.3M
    p->STACK[oldcount] = x; \
21525
71.3M
    p->STACKCOUNT = newcount; \
21526
71.3M
}
janet.c:_pushstate
Line
Count
Source
21511
15.0M
static void NAME(JanetParser *p, T x) { \
21512
15.0M
    size_t oldcount = p->STACKCOUNT; \
21513
15.0M
    size_t newcount = oldcount + 1; \
21514
15.0M
    if (newcount > p->STACKCAP) { \
21515
8.70k
        T *next; \
21516
8.70k
        size_t newcap = 2 * newcount; \
21517
8.70k
        next = janet_realloc(p->STACK, sizeof(T) * newcap); \
21518
8.70k
        if (NULL == next) { \
21519
0
            JANET_OUT_OF_MEMORY; \
21520
0
        } \
21521
8.70k
        p->STACK = next; \
21522
8.70k
        p->STACKCAP = newcap; \
21523
8.70k
    } \
21524
15.0M
    p->STACK[oldcount] = x; \
21525
15.0M
    p->STACKCOUNT = newcount; \
21526
15.0M
}
janet.c:push_buf
Line
Count
Source
21511
46.4M
static void NAME(JanetParser *p, T x) { \
21512
46.4M
    size_t oldcount = p->STACKCOUNT; \
21513
46.4M
    size_t newcount = oldcount + 1; \
21514
46.4M
    if (newcount > p->STACKCAP) { \
21515
16.6k
        T *next; \
21516
16.6k
        size_t newcap = 2 * newcount; \
21517
16.6k
        next = janet_realloc(p->STACK, sizeof(T) * newcap); \
21518
16.6k
        if (NULL == next) { \
21519
0
            JANET_OUT_OF_MEMORY; \
21520
0
        } \
21521
16.6k
        p->STACK = next; \
21522
16.6k
        p->STACKCAP = newcap; \
21523
16.6k
    } \
21524
46.4M
    p->STACK[oldcount] = x; \
21525
46.4M
    p->STACKCOUNT = newcount; \
21526
46.4M
}
janet.c:push_arg
Line
Count
Source
21511
9.81M
static void NAME(JanetParser *p, T x) { \
21512
9.81M
    size_t oldcount = p->STACKCOUNT; \
21513
9.81M
    size_t newcount = oldcount + 1; \
21514
9.81M
    if (newcount > p->STACKCAP) { \
21515
9.74k
        T *next; \
21516
9.74k
        size_t newcap = 2 * newcount; \
21517
9.74k
        next = janet_realloc(p->STACK, sizeof(T) * newcap); \
21518
9.74k
        if (NULL == next) { \
21519
0
            JANET_OUT_OF_MEMORY; \
21520
0
        } \
21521
9.74k
        p->STACK = next; \
21522
9.74k
        p->STACKCAP = newcap; \
21523
9.74k
    } \
21524
9.81M
    p->STACK[oldcount] = x; \
21525
9.81M
    p->STACKCOUNT = newcount; \
21526
9.81M
}
21527
21528
DEF_PARSER_STACK(push_buf, uint8_t, buf, bufcount, bufcap)
21529
DEF_PARSER_STACK(push_arg, Janet, args, argcount, argcap)
21530
DEF_PARSER_STACK(_pushstate, JanetParseState, states, statecount, statecap)
21531
21532
#undef DEF_PARSER_STACK
21533
21534
17.3M
#define PFLAG_CONTAINER 0x100
21535
3.51M
#define PFLAG_BUFFER 0x200
21536
6.91k
#define PFLAG_PARENS 0x400
21537
3.71M
#define PFLAG_SQRBRACKETS 0x800
21538
7.31M
#define PFLAG_CURLYBRACKETS 0x1000
21539
2.38M
#define PFLAG_STRING 0x2000
21540
2.39M
#define PFLAG_LONGSTRING 0x4000
21541
498k
#define PFLAG_READERMAC 0x8000
21542
4.86M
#define PFLAG_ATSYM 0x10000
21543
378
#define PFLAG_COMMENT 0x20000
21544
3.78M
#define PFLAG_TOKEN 0x40000
21545
21546
15.0M
static void pushstate(JanetParser *p, Consumer consumer, int flags) {
21547
15.0M
    JanetParseState s;
21548
15.0M
    s.counter = 0;
21549
15.0M
    s.argn = 0;
21550
15.0M
    s.flags = flags;
21551
15.0M
    s.consumer = consumer;
21552
15.0M
    s.line = p->line;
21553
15.0M
    s.column = p->column;
21554
15.0M
    _pushstate(p, s);
21555
15.0M
}
21556
21557
9.81M
static void popstate(JanetParser *p, Janet val) {
21558
9.98M
    for (;;) {
21559
9.98M
        JanetParseState top = p->states[--p->statecount];
21560
9.98M
        JanetParseState *newtop = p->states + p->statecount - 1;
21561
        /* Source mapping info */
21562
9.98M
        if (janet_checktype(val, JANET_TUPLE)) {
21563
178k
            janet_tuple_sm_line(janet_unwrap_tuple(val)) = (int32_t) top.line;
21564
178k
            janet_tuple_sm_column(janet_unwrap_tuple(val)) = (int32_t) top.column;
21565
178k
        }
21566
9.98M
        if (newtop->flags & PFLAG_CONTAINER) {
21567
9.81M
            newtop->argn++;
21568
            /* Keep track of number of values in the root state */
21569
9.81M
            if (p->statecount == 1) {
21570
44.2k
                p->pending++;
21571
                /* Root items are always wrapped in a tuple for source map info. */
21572
44.2k
                const Janet *tup = janet_tuple_n(&val, 1);
21573
44.2k
                janet_tuple_sm_line(tup) = (int32_t) top.line;
21574
44.2k
                janet_tuple_sm_column(tup) = (int32_t) top.column;
21575
44.2k
                val = janet_wrap_tuple(tup);
21576
44.2k
            }
21577
9.81M
            push_arg(p, val);
21578
9.81M
            return;
21579
9.81M
        } else if (newtop->flags & PFLAG_READERMAC) {
21580
175k
            Janet *t = janet_tuple_begin(2);
21581
175k
            int c = newtop->flags & 0xFF;
21582
175k
            const char *which =
21583
175k
                (c == '\'') ? "quote" :
21584
175k
                (c == ',') ? "unquote" :
21585
171k
                (c == ';') ? "splice" :
21586
20.9k
                (c == '|') ? "short-fn" :
21587
17.8k
                (c == '~') ? "quasiquote" : "<unknown>";
21588
175k
            t[0] = janet_csymbolv(which);
21589
175k
            t[1] = val;
21590
            /* Quote source mapping info */
21591
175k
            janet_tuple_sm_line(t) = (int32_t) newtop->line;
21592
175k
            janet_tuple_sm_column(t) = (int32_t) newtop->column;
21593
175k
            val = janet_wrap_tuple(janet_tuple_end(t));
21594
175k
        } else {
21595
0
            return;
21596
0
        }
21597
9.98M
    }
21598
9.81M
}
21599
21600
226
static void delim_error(JanetParser *parser, size_t stack_index, char c, const char *msg) {
21601
226
    JanetParseState *s = parser->states + stack_index;
21602
226
    JanetBuffer *buffer = janet_buffer(40);
21603
226
    if (msg) {
21604
226
        janet_buffer_push_cstring(buffer, msg);
21605
226
    }
21606
226
    if (c) {
21607
226
        janet_buffer_push_u8(buffer, c);
21608
226
    }
21609
226
    if (stack_index > 0) {
21610
58
        janet_buffer_push_cstring(buffer, ", ");
21611
58
        if (s->flags & PFLAG_PARENS) {
21612
8
            janet_buffer_push_u8(buffer, '(');
21613
50
        } else if (s->flags & PFLAG_SQRBRACKETS) {
21614
27
            janet_buffer_push_u8(buffer, '[');
21615
27
        } else if (s->flags & PFLAG_CURLYBRACKETS) {
21616
12
            janet_buffer_push_u8(buffer, '{');
21617
12
        } else if (s->flags & PFLAG_STRING) {
21618
0
            janet_buffer_push_u8(buffer, '"');
21619
11
        } else if (s->flags & PFLAG_LONGSTRING) {
21620
0
            int32_t i;
21621
0
            for (i = 0; i < s->argn; i++) {
21622
0
                janet_buffer_push_u8(buffer, '`');
21623
0
            }
21624
0
        }
21625
58
        janet_formatb(buffer, " opened at line %d, column %d", s->line, s->column);
21626
58
    }
21627
226
    parser->error = (const char *) janet_string(buffer->data, buffer->count);
21628
226
    parser->flag |= JANET_PARSER_GENERATED_ERROR;
21629
226
}
21630
21631
22.3k
static int checkescape(uint8_t c) {
21632
22.3k
    switch (c) {
21633
25
        default:
21634
25
            return -1;
21635
12.1k
        case 'x':
21636
13.7k
        case 'u':
21637
14.6k
        case 'U':
21638
14.6k
            return 1;
21639
5.37k
        case 'n':
21640
5.37k
            return '\n';
21641
199
        case 't':
21642
199
            return '\t';
21643
218
        case 'r':
21644
218
            return '\r';
21645
206
        case '0':
21646
206
            return '\0';
21647
204
        case 'z':
21648
204
            return '\0';
21649
290
        case 'f':
21650
290
            return '\f';
21651
388
        case 'v':
21652
388
            return '\v';
21653
204
        case 'e':
21654
204
            return 27;
21655
266
        case '"':
21656
266
            return '"';
21657
342
        case '\\':
21658
342
            return '\\';
21659
22.3k
    }
21660
22.3k
}
21661
21662
/* Forward declare */
21663
static int stringchar(JanetParser *p, JanetParseState *state, uint8_t c);
21664
21665
2.42k
static void write_codepoint(JanetParser *p, int32_t codepoint) {
21666
2.42k
    if (codepoint <= 0x7F) {
21667
240
        push_buf(p, (uint8_t) codepoint);
21668
2.18k
    } else if (codepoint <= 0x7FF) {
21669
584
        push_buf(p, (uint8_t)((codepoint >>  6) & 0x1F) | 0xC0);
21670
584
        push_buf(p, (uint8_t)((codepoint >>  0) & 0x3F) | 0x80);
21671
1.60k
    } else if (codepoint <= 0xFFFF) {
21672
805
        push_buf(p, (uint8_t)((codepoint >> 12) & 0x0F) | 0xE0);
21673
805
        push_buf(p, (uint8_t)((codepoint >>  6) & 0x3F) | 0x80);
21674
805
        push_buf(p, (uint8_t)((codepoint >>  0) & 0x3F) | 0x80);
21675
805
    } else {
21676
797
        push_buf(p, (uint8_t)((codepoint >> 18) & 0x07) | 0xF0);
21677
797
        push_buf(p, (uint8_t)((codepoint >> 12) & 0x3F) | 0x80);
21678
797
        push_buf(p, (uint8_t)((codepoint >>  6) & 0x3F) | 0x80);
21679
797
        push_buf(p, (uint8_t)((codepoint >>  0) & 0x3F) | 0x80);
21680
797
    }
21681
2.42k
}
21682
21683
24.2k
static int escapeh(JanetParser *p, JanetParseState *state, uint8_t c) {
21684
24.2k
    int digit = to_hex(c);
21685
24.2k
    if (digit < 0) {
21686
12
        p->error = "invalid hex digit in hex escape";
21687
12
        return 1;
21688
12
    }
21689
24.2k
    state->argn = (state->argn << 4) + digit;
21690
24.2k
    state->counter--;
21691
24.2k
    if (!state->counter) {
21692
12.1k
        push_buf(p, (uint8_t)(state->argn & 0xFF));
21693
12.1k
        state->argn = 0;
21694
12.1k
        state->consumer = stringchar;
21695
12.1k
    }
21696
24.2k
    return 1;
21697
24.2k
}
21698
21699
11.4k
static int escapeu(JanetParser *p, JanetParseState *state, uint8_t c) {
21700
11.4k
    int digit = to_hex(c);
21701
11.4k
    if (digit < 0) {
21702
21
        p->error = "invalid hex digit in unicode escape";
21703
21
        return 1;
21704
21
    }
21705
11.4k
    state->argn = (state->argn << 4) + digit;
21706
11.4k
    state->counter--;
21707
11.4k
    if (!state->counter) {
21708
2.43k
        if (state->argn > 0x10FFFF) {
21709
6
            p->error = "invalid unicode codepoint";
21710
6
            return 1;
21711
6
        }
21712
2.42k
        write_codepoint(p, state->argn);
21713
2.42k
        state->argn = 0;
21714
2.42k
        state->consumer = stringchar;
21715
2.42k
    }
21716
11.4k
    return 1;
21717
11.4k
}
21718
21719
22.3k
static int escape1(JanetParser *p, JanetParseState *state, uint8_t c) {
21720
22.3k
    int e = checkescape(c);
21721
22.3k
    if (e < 0) {
21722
25
        p->error = "invalid string escape sequence";
21723
25
        return 1;
21724
25
    }
21725
22.3k
    if (c == 'x') {
21726
12.1k
        state->counter = 2;
21727
12.1k
        state->argn = 0;
21728
12.1k
        state->consumer = escapeh;
21729
12.1k
    } else if (c == 'u' || c == 'U') {
21730
2.49k
        state->counter = c == 'u' ? 4 : 6;
21731
2.49k
        state->argn = 0;
21732
2.49k
        state->consumer = escapeu;
21733
7.69k
    } else {
21734
7.69k
        push_buf(p, (uint8_t) e);
21735
7.69k
        state->consumer = stringchar;
21736
7.69k
    }
21737
22.3k
    return 1;
21738
22.3k
}
21739
21740
2.39M
static int stringend(JanetParser *p, JanetParseState *state) {
21741
2.39M
    Janet ret;
21742
2.39M
    uint8_t *bufstart = p->buf;
21743
2.39M
    int32_t buflen = (int32_t) p->bufcount;
21744
2.39M
    if (state->flags & PFLAG_LONGSTRING) {
21745
        /* Post process to remove leading whitespace */
21746
2.42k
        JanetParseState top = p->states[p->statecount - 1];
21747
2.42k
        int32_t indent_col = (int32_t) top.column - 1;
21748
2.42k
        uint8_t *r = bufstart, *end = r + buflen;
21749
        /* Check if there are any characters before the start column -
21750
         * if so, do not reindent. */
21751
2.42k
        int reindent = 1;
21752
4.46M
        while (reindent && (r < end)) {
21753
4.46M
            if (*r++ == '\n') {
21754
5.93k
                for (int32_t j = 0; (r < end) && (*r != '\n') && (j < indent_col); j++, r++) {
21755
840
                    if (*r != ' ') {
21756
561
                        reindent = 0;
21757
561
                        break;
21758
561
                    }
21759
840
                }
21760
5.65k
            }
21761
4.46M
        }
21762
        /* Now reindent if able to, otherwise just drop leading newline. */
21763
2.42k
        if (!reindent) {
21764
561
            if (buflen > 0 && bufstart[0] == '\n') {
21765
336
                buflen--;
21766
336
                bufstart++;
21767
336
            }
21768
1.86k
        } else {
21769
1.86k
            uint8_t *w = bufstart;
21770
1.86k
            r = bufstart;
21771
4.45M
            while (r < end) {
21772
4.45M
                if (*r == '\n') {
21773
3.94k
                    if (r == bufstart) {
21774
                        /* Skip leading newline */
21775
612
                        r++;
21776
3.33k
                    } else {
21777
3.33k
                        *w++ = *r++;
21778
3.33k
                    }
21779
4.22k
                    for (int32_t j = 0; (r < end) && (*r != '\n') && (j < indent_col); j++, r++);
21780
4.45M
                } else {
21781
4.45M
                    *w++ = *r++;
21782
4.45M
                }
21783
4.45M
            }
21784
1.86k
            buflen = (int32_t)(w - bufstart);
21785
1.86k
        }
21786
        /* Check for trailing newline character so we can remove it */
21787
2.42k
        if (buflen > 0 && bufstart[buflen - 1] == '\n') {
21788
246
            buflen--;
21789
246
        }
21790
2.42k
    }
21791
2.39M
    if (state->flags & PFLAG_BUFFER) {
21792
1.12M
        JanetBuffer *b = janet_buffer(buflen);
21793
1.12M
        janet_buffer_push_bytes(b, bufstart, buflen);
21794
1.12M
        ret = janet_wrap_buffer(b);
21795
1.26M
    } else {
21796
1.26M
        ret = janet_wrap_string(janet_string(bufstart, buflen));
21797
1.26M
    }
21798
2.39M
    p->bufcount = 0;
21799
2.39M
    popstate(p, ret);
21800
2.39M
    return 1;
21801
2.39M
}
21802
21803
12.4M
static int stringchar(JanetParser *p, JanetParseState *state, uint8_t c) {
21804
    /* Enter escape */
21805
12.4M
    if (c == '\\') {
21806
22.3k
        state->consumer = escape1;
21807
22.3k
        return 1;
21808
22.3k
    }
21809
    /* String end */
21810
12.3M
    if (c == '"') {
21811
2.38M
        return stringend(p, state);
21812
2.38M
    }
21813
    /* normal char */
21814
9.99M
    if (c != '\n' && c != '\r')
21815
9.99M
        push_buf(p, c);
21816
9.99M
    return 1;
21817
12.3M
}
21818
21819
/* Check for string equality in the buffer */
21820
11.2M
static int check_str_const(const char *cstr, const uint8_t *str, int32_t len) {
21821
11.2M
    int32_t index;
21822
11.2M
    for (index = 0; index < len; index++) {
21823
11.2M
        uint8_t c = str[index];
21824
11.2M
        uint8_t k = ((const uint8_t *)cstr)[index];
21825
11.2M
        if (c < k) return -1;
21826
898k
        if (c > k) return 1;
21827
26.4k
        if (k == '\0') break;
21828
26.4k
    }
21829
6.02k
    return (cstr[index] == '\0') ? 0 : -1;
21830
11.2M
}
21831
21832
30.9M
static int tokenchar(JanetParser *p, JanetParseState *state, uint8_t c) {
21833
30.9M
    Janet ret;
21834
30.9M
    double numval;
21835
30.9M
    int32_t blen;
21836
30.9M
    if (janet_is_symbol_char(c)) {
21837
27.1M
        push_buf(p, (uint8_t) c);
21838
27.1M
        if (c > 127) state->argn = 1; /* Use to indicate non ascii */
21839
27.1M
        return 1;
21840
27.1M
    }
21841
    /* Token finished */
21842
3.78M
    blen = (int32_t) p->bufcount;
21843
3.78M
    int start_dig = p->buf[0] >= '0' && p->buf[0] <= '9';
21844
3.78M
    int start_num = start_dig || p->buf[0] == '-' || p->buf[0] == '+' || p->buf[0] == '.';
21845
3.78M
    if (p->buf[0] == ':') {
21846
        /* Don't do full utf-8 check unless we have seen non ascii characters. */
21847
6.44k
        int valid = (!state->argn) || janet_valid_utf8(p->buf + 1, blen - 1);
21848
6.44k
        if (!valid) {
21849
70
            p->error = "invalid utf-8 in keyword";
21850
70
            return 0;
21851
70
        }
21852
6.37k
        ret = janet_keywordv(p->buf + 1, blen - 1);
21853
3.78M
    } else if (start_num && !janet_scan_number(p->buf, blen, &numval)) {
21854
31.1k
        ret = janet_wrap_number(numval);
21855
3.75M
    } else if (!check_str_const("nil", p->buf, blen)) {
21856
3.53k
        ret = janet_wrap_nil();
21857
3.74M
    } else if (!check_str_const("false", p->buf, blen)) {
21858
291
        ret = janet_wrap_false();
21859
3.74M
    } else if (!check_str_const("true", p->buf, blen)) {
21860
552
        ret = janet_wrap_true();
21861
3.74M
    } else {
21862
3.74M
        if (start_dig) {
21863
197
            p->error = "symbol literal cannot start with a digit";
21864
197
            return 0;
21865
3.74M
        } else {
21866
            /* Don't do full utf-8 check unless we have seen non ascii characters. */
21867
3.74M
            int valid = (!state->argn) || janet_valid_utf8(p->buf, blen);
21868
3.74M
            if (!valid) {
21869
146
                p->error = "invalid utf-8 in symbol";
21870
146
                return 0;
21871
146
            }
21872
3.74M
            ret = janet_symbolv(p->buf, blen);
21873
3.74M
        }
21874
3.74M
    }
21875
3.78M
    p->bufcount = 0;
21876
3.78M
    popstate(p, ret);
21877
3.78M
    return 0;
21878
3.78M
}
21879
21880
132k
static int comment(JanetParser *p, JanetParseState *state, uint8_t c) {
21881
132k
    (void) state;
21882
132k
    if (c == '\n') {
21883
307
        p->statecount--;
21884
307
        p->bufcount = 0;
21885
131k
    } else {
21886
131k
        push_buf(p, c);
21887
131k
    }
21888
132k
    return 1;
21889
132k
}
21890
21891
2.94k
static Janet close_tuple(JanetParser *p, JanetParseState *state, int32_t flag) {
21892
2.94k
    Janet *ret = janet_tuple_begin(state->argn);
21893
2.94k
    janet_tuple_flag(ret) |= flag;
21894
1.97M
    for (int32_t i = state->argn - 1; i >= 0; i--)
21895
1.97M
        ret[i] = p->args[--p->argcount];
21896
2.94k
    return janet_wrap_tuple(janet_tuple_end(ret));
21897
2.94k
}
21898
21899
1.06k
static Janet close_array(JanetParser *p, JanetParseState *state) {
21900
1.06k
    JanetArray *array = janet_array(state->argn);
21901
593k
    for (int32_t i = state->argn - 1; i >= 0; i--)
21902
592k
        array->data[i] = p->args[--p->argcount];
21903
1.06k
    array->count = state->argn;
21904
1.06k
    return janet_wrap_array(array);
21905
1.06k
}
21906
21907
3.57M
static Janet close_struct(JanetParser *p, JanetParseState *state) {
21908
3.57M
    JanetKV *st = janet_struct_begin(state->argn >> 1);
21909
5.86M
    for (size_t i = p->argcount - state->argn; i < p->argcount; i += 2) {
21910
2.29M
        Janet key = p->args[i];
21911
2.29M
        Janet value = p->args[i + 1];
21912
2.29M
        janet_struct_put(st, key, value);
21913
2.29M
    }
21914
3.57M
    p->argcount -= state->argn;
21915
3.57M
    return janet_wrap_struct(janet_struct_end(st));
21916
3.57M
}
21917
21918
50.9k
static Janet close_table(JanetParser *p, JanetParseState *state) {
21919
50.9k
    JanetTable *table = janet_table(state->argn >> 1);
21920
635k
    for (size_t i = p->argcount - state->argn; i < p->argcount; i += 2) {
21921
584k
        Janet key = p->args[i];
21922
584k
        Janet value = p->args[i + 1];
21923
584k
        janet_table_put(table, key, value);
21924
584k
    }
21925
50.9k
    p->argcount -= state->argn;
21926
50.9k
    return janet_wrap_table(table);
21927
50.9k
}
21928
21929
10.5M
#define PFLAG_INSTRING 0x100000
21930
1.84M
#define PFLAG_END_CANDIDATE 0x200000
21931
10.4M
static int longstring(JanetParser *p, JanetParseState *state, uint8_t c) {
21932
10.4M
    if (state->flags & PFLAG_INSTRING) {
21933
        /* We are inside the long string */
21934
8.74M
        if (c == '`') {
21935
71.1k
            state->flags |= PFLAG_END_CANDIDATE;
21936
71.1k
            state->flags &= ~PFLAG_INSTRING;
21937
71.1k
            state->counter = 1; /* Use counter to keep track of number of '=' seen */
21938
71.1k
            return 1;
21939
71.1k
        }
21940
8.67M
        push_buf(p, c);
21941
8.67M
        return 1;
21942
8.74M
    } else if (state->flags & PFLAG_END_CANDIDATE) {
21943
715k
        int i;
21944
        /* We are checking a potential end of the string */
21945
715k
        if (state->counter == state->argn) {
21946
2.42k
            stringend(p, state);
21947
2.42k
            return 0;
21948
2.42k
        }
21949
712k
        if (c == '`' && state->counter < state->argn) {
21950
643k
            state->counter++;
21951
643k
            return 1;
21952
643k
        }
21953
        /* Failed end candidate */
21954
500k
        for (i = 0; i < state->counter; i++) {
21955
431k
            push_buf(p, '`');
21956
431k
        }
21957
68.6k
        push_buf(p, c);
21958
68.6k
        state->counter = 0;
21959
68.6k
        state->flags &= ~PFLAG_END_CANDIDATE;
21960
68.6k
        state->flags |= PFLAG_INSTRING;
21961
68.6k
        return 1;
21962
990k
    } else {
21963
        /* We are at beginning of string */
21964
990k
        state->argn++;
21965
990k
        if (c != '`') {
21966
2.59k
            state->flags |= PFLAG_INSTRING;
21967
2.59k
            push_buf(p, c);
21968
2.59k
        }
21969
990k
        return 1;
21970
990k
    }
21971
10.4M
}
21972
21973
static int root(JanetParser *p, JanetParseState *state, uint8_t c);
21974
21975
1.17M
static int atsign(JanetParser *p, JanetParseState *state, uint8_t c) {
21976
1.17M
    (void) state;
21977
1.17M
    p->statecount--;
21978
1.17M
    switch (c) {
21979
52.3k
        case '{':
21980
52.3k
            pushstate(p, root, PFLAG_CONTAINER | PFLAG_CURLYBRACKETS | PFLAG_ATSYM);
21981
52.3k
            return 1;
21982
1.12M
        case '"':
21983
1.12M
            pushstate(p, stringchar, PFLAG_BUFFER | PFLAG_STRING);
21984
1.12M
            return 1;
21985
733
        case '`':
21986
733
            pushstate(p, longstring, PFLAG_BUFFER | PFLAG_LONGSTRING);
21987
733
            return 1;
21988
1.53k
        case '[':
21989
1.53k
            pushstate(p, root, PFLAG_CONTAINER | PFLAG_SQRBRACKETS | PFLAG_ATSYM);
21990
1.53k
            return 1;
21991
358
        case '(':
21992
358
            pushstate(p, root, PFLAG_CONTAINER | PFLAG_PARENS | PFLAG_ATSYM);
21993
358
            return 1;
21994
2.39k
        default:
21995
2.39k
            break;
21996
1.17M
    }
21997
2.39k
    pushstate(p, tokenchar, PFLAG_TOKEN);
21998
2.39k
    push_buf(p, '@'); /* Push the leading at-sign that was dropped */
21999
2.39k
    return 0;
22000
1.17M
}
22001
22002
/* The root state of the parser */
22003
17.6M
static int root(JanetParser *p, JanetParseState *state, uint8_t c) {
22004
17.6M
    switch (c) {
22005
3.89M
        default:
22006
3.89M
            if (is_whitespace(c)) return 1;
22007
3.78M
            if (!janet_is_symbol_char(c)) {
22008
328
                p->error = "unexpected character";
22009
328
                return 1;
22010
328
            }
22011
3.78M
            pushstate(p, tokenchar, PFLAG_TOKEN);
22012
3.78M
            return 0;
22013
4.14k
        case '\'':
22014
156k
        case ',':
22015
159k
        case ';':
22016
174k
        case '~':
22017
322k
        case '|':
22018
322k
            pushstate(p, root, PFLAG_READERMAC | c);
22019
322k
            return 1;
22020
1.26M
        case '"':
22021
1.26M
            pushstate(p, stringchar, PFLAG_STRING);
22022
1.26M
            return 1;
22023
378
        case '#':
22024
378
            pushstate(p, comment, PFLAG_COMMENT);
22025
378
            return 1;
22026
1.17M
        case '@':
22027
1.17M
            pushstate(p, atsign, PFLAG_ATSYM);
22028
1.17M
            return 1;
22029
1.95k
        case '`':
22030
1.95k
            pushstate(p, longstring, PFLAG_LONGSTRING);
22031
1.95k
            return 1;
22032
913
        case ')':
22033
4.08k
        case ']':
22034
3.63M
        case '}': {
22035
3.63M
            Janet ds;
22036
3.63M
            if (p->statecount == 1) {
22037
168
                delim_error(p, 0, c, "unexpected closing delimiter ");
22038
168
                return 1;
22039
168
            }
22040
3.63M
            if ((c == ')' && (state->flags & PFLAG_PARENS)) ||
22041
3.63M
                    (c == ']' && (state->flags & PFLAG_SQRBRACKETS))) {
22042
4.00k
                if (state->flags & PFLAG_ATSYM) {
22043
1.06k
                    ds = close_array(p, state);
22044
2.94k
                } else {
22045
2.94k
                    ds = close_tuple(p, state, c == ']' ? JANET_TUPLE_FLAG_BRACKETCTOR : 0);
22046
2.94k
                }
22047
3.62M
            } else if (c == '}' && (state->flags & PFLAG_CURLYBRACKETS)) {
22048
3.62M
                if (state->argn & 1) {
22049
18
                    p->error = "struct and table literals expect even number of arguments";
22050
18
                    return 1;
22051
18
                }
22052
3.62M
                if (state->flags & PFLAG_ATSYM) {
22053
50.9k
                    ds = close_table(p, state);
22054
3.57M
                } else {
22055
3.57M
                    ds = close_struct(p, state);
22056
3.57M
                }
22057
3.62M
            } else {
22058
58
                delim_error(p, p->statecount - 1, c, "mismatched delimiter ");
22059
58
                return 1;
22060
58
            }
22061
3.63M
            popstate(p, ds);
22062
3.63M
        }
22063
0
        return 1;
22064
5.62k
        case '(':
22065
5.62k
            pushstate(p, root, PFLAG_CONTAINER | PFLAG_PARENS);
22066
5.62k
            return 1;
22067
3.70M
        case '[':
22068
3.70M
            pushstate(p, root, PFLAG_CONTAINER | PFLAG_SQRBRACKETS);
22069
3.70M
            return 1;
22070
3.63M
        case '{':
22071
3.63M
            pushstate(p, root, PFLAG_CONTAINER | PFLAG_CURLYBRACKETS);
22072
3.63M
            return 1;
22073
17.6M
    }
22074
17.6M
}
22075
22076
65.2M
static void janet_parser_checkdead(JanetParser *parser) {
22077
65.2M
    if (parser->flag) janet_panic("parser is dead, cannot consume");
22078
65.2M
    if (parser->error) janet_panic("parser has unchecked error, cannot consume");
22079
65.2M
}
22080
22081
/* Public API */
22082
22083
65.2M
void janet_parser_consume(JanetParser *parser, uint8_t c) {
22084
65.2M
    int consumed = 0;
22085
65.2M
    janet_parser_checkdead(parser);
22086
65.2M
    if (c == '\r') {
22087
16.2k
        parser->line++;
22088
16.2k
        parser->column = 0;
22089
65.2M
    } else if (c == '\n') {
22090
1.01M
        parser->column = 0;
22091
1.01M
        if (parser->lookback != '\r')
22092
1.01M
            parser->line++;
22093
64.1M
    } else {
22094
64.1M
        parser->column++;
22095
64.1M
    }
22096
138M
    while (!consumed && !parser->error) {
22097
72.7M
        JanetParseState *state = parser->states + parser->statecount - 1;
22098
72.7M
        consumed = state->consumer(parser, state, c);
22099
72.7M
    }
22100
65.2M
    parser->lookback = c;
22101
65.2M
}
22102
22103
0
void janet_parser_eof(JanetParser *parser) {
22104
0
    janet_parser_checkdead(parser);
22105
0
    size_t oldcolumn = parser->column;
22106
0
    size_t oldline = parser->line;
22107
0
    janet_parser_consume(parser, '\n');
22108
0
    if (parser->statecount > 1) {
22109
0
        delim_error(parser, parser->statecount - 1, 0, "unexpected end of source");
22110
0
    }
22111
0
    parser->line = oldline;
22112
0
    parser->column = oldcolumn;
22113
0
    parser->flag |= JANET_PARSER_DEAD;
22114
0
}
22115
22116
65.2M
enum JanetParserStatus janet_parser_status(JanetParser *parser) {
22117
65.2M
    if (parser->error) return JANET_PARSE_ERROR;
22118
65.2M
    if (parser->flag) return JANET_PARSE_DEAD;
22119
65.2M
    if (parser->statecount > 1) return JANET_PARSE_PENDING;
22120
40.1k
    return JANET_PARSE_ROOT;
22121
65.2M
}
22122
22123
0
void janet_parser_flush(JanetParser *parser) {
22124
0
    parser->argcount = 0;
22125
0
    parser->statecount = 1;
22126
0
    parser->bufcount = 0;
22127
0
    parser->pending = 0;
22128
0
}
22129
22130
0
const char *janet_parser_error(JanetParser *parser) {
22131
0
    enum JanetParserStatus status = janet_parser_status(parser);
22132
0
    if (status == JANET_PARSE_ERROR) {
22133
0
        const char *e = parser->error;
22134
0
        parser->error = NULL;
22135
0
        parser->flag &= ~JANET_PARSER_GENERATED_ERROR;
22136
0
        janet_parser_flush(parser);
22137
0
        return e;
22138
0
    }
22139
0
    return NULL;
22140
0
}
22141
22142
0
Janet janet_parser_produce(JanetParser *parser) {
22143
0
    Janet ret;
22144
0
    size_t i;
22145
0
    if (parser->pending == 0) return janet_wrap_nil();
22146
0
    ret = janet_unwrap_tuple(parser->args[0])[0];
22147
0
    for (i = 1; i < parser->argcount; i++) {
22148
0
        parser->args[i - 1] = parser->args[i];
22149
0
    }
22150
0
    parser->pending--;
22151
0
    parser->argcount--;
22152
0
    parser->states[0].argn--;
22153
0
    return ret;
22154
0
}
22155
22156
0
Janet janet_parser_produce_wrapped(JanetParser *parser) {
22157
0
    Janet ret;
22158
0
    size_t i;
22159
0
    if (parser->pending == 0) return janet_wrap_nil();
22160
0
    ret = parser->args[0];
22161
0
    for (i = 1; i < parser->argcount; i++) {
22162
0
        parser->args[i - 1] = parser->args[i];
22163
0
    }
22164
0
    parser->pending--;
22165
0
    parser->argcount--;
22166
0
    parser->states[0].argn--;
22167
0
    return ret;
22168
0
}
22169
22170
5.24k
void janet_parser_init(JanetParser *parser) {
22171
5.24k
    parser->args = NULL;
22172
5.24k
    parser->states = NULL;
22173
5.24k
    parser->buf = NULL;
22174
5.24k
    parser->argcount = 0;
22175
5.24k
    parser->argcap = 0;
22176
5.24k
    parser->bufcount = 0;
22177
5.24k
    parser->bufcap = 0;
22178
5.24k
    parser->statecount = 0;
22179
5.24k
    parser->statecap = 0;
22180
5.24k
    parser->error = NULL;
22181
5.24k
    parser->lookback = -1;
22182
5.24k
    parser->line = 1;
22183
5.24k
    parser->column = 0;
22184
5.24k
    parser->pending = 0;
22185
5.24k
    parser->flag = 0;
22186
22187
5.24k
    pushstate(parser, root, PFLAG_CONTAINER);
22188
5.24k
}
22189
22190
5.24k
void janet_parser_deinit(JanetParser *parser) {
22191
5.24k
    janet_free(parser->args);
22192
5.24k
    janet_free(parser->buf);
22193
5.24k
    janet_free(parser->states);
22194
5.24k
}
22195
22196
0
void janet_parser_clone(const JanetParser *src, JanetParser *dest) {
22197
    /* Misc fields */
22198
0
    dest->flag = src->flag;
22199
0
    dest->pending = src->pending;
22200
0
    dest->lookback = src->lookback;
22201
0
    dest->line = src->line;
22202
0
    dest->column = src->column;
22203
0
    dest->error = src->error;
22204
22205
    /* Keep counts */
22206
0
    dest->argcount = src->argcount;
22207
0
    dest->bufcount = src->bufcount;
22208
0
    dest->statecount = src->statecount;
22209
22210
    /* Capacities are equal to counts */
22211
0
    dest->bufcap = dest->bufcount;
22212
0
    dest->statecap = dest->statecount;
22213
0
    dest->argcap = dest->argcount;
22214
22215
    /* Deep cloned fields */
22216
0
    dest->args = NULL;
22217
0
    dest->states = NULL;
22218
0
    dest->buf = NULL;
22219
0
    if (dest->bufcap) {
22220
0
        dest->buf = janet_malloc(dest->bufcap);
22221
0
        if (!dest->buf) goto nomem;
22222
0
        memcpy(dest->buf, src->buf, dest->bufcap);
22223
0
    }
22224
0
    if (dest->argcap) {
22225
0
        dest->args = janet_malloc(sizeof(Janet) * dest->argcap);
22226
0
        if (!dest->args) goto nomem;
22227
0
        memcpy(dest->args, src->args, dest->argcap * sizeof(Janet));
22228
0
    }
22229
0
    if (dest->statecap) {
22230
0
        dest->states = janet_malloc(sizeof(JanetParseState) * dest->statecap);
22231
0
        if (!dest->states) goto nomem;
22232
0
        memcpy(dest->states, src->states, dest->statecap * sizeof(JanetParseState));
22233
0
    }
22234
22235
0
    return;
22236
22237
0
nomem:
22238
0
    JANET_OUT_OF_MEMORY;
22239
0
}
22240
22241
0
int janet_parser_has_more(JanetParser *parser) {
22242
0
    return !!parser->pending;
22243
0
}
22244
22245
/* C functions */
22246
22247
0
static int parsermark(void *p, size_t size) {
22248
0
    size_t i;
22249
0
    JanetParser *parser = (JanetParser *)p;
22250
0
    (void) size;
22251
0
    for (i = 0; i < parser->argcount; i++) {
22252
0
        janet_mark(parser->args[i]);
22253
0
    }
22254
0
    if (parser->flag & JANET_PARSER_GENERATED_ERROR) {
22255
0
        janet_mark(janet_wrap_string((const uint8_t *) parser->error));
22256
0
    }
22257
0
    return 0;
22258
0
}
22259
22260
0
static int parsergc(void *p, size_t size) {
22261
0
    JanetParser *parser = (JanetParser *)p;
22262
0
    (void) size;
22263
0
    janet_parser_deinit(parser);
22264
0
    return 0;
22265
0
}
22266
22267
static int parserget(void *p, Janet key, Janet *out);
22268
static Janet parsernext(void *p, Janet key);
22269
22270
const JanetAbstractType janet_parser_type = {
22271
    "core/parser",
22272
    parsergc,
22273
    parsermark,
22274
    parserget,
22275
    NULL, /* put */
22276
    NULL, /* marshal */
22277
    NULL, /* unmarshal */
22278
    NULL, /* tostring */
22279
    NULL, /* compare */
22280
    NULL, /* hash */
22281
    parsernext,
22282
    JANET_ATEND_NEXT
22283
};
22284
22285
/* C Function parser */
22286
JANET_CORE_FN(cfun_parse_parser,
22287
              "(parser/new)",
22288
              "Creates and returns a new parser object. Parsers are state machines "
22289
0
              "that can receive bytes and generate a stream of values.") {
22290
0
    (void) argv;
22291
0
    janet_fixarity(argc, 0);
22292
0
    JanetParser *p = janet_abstract(&janet_parser_type, sizeof(JanetParser));
22293
0
    janet_parser_init(p);
22294
0
    return janet_wrap_abstract(p);
22295
0
}
22296
22297
JANET_CORE_FN(cfun_parse_consume,
22298
              "(parser/consume parser bytes &opt index)",
22299
              "Input bytes into the parser and parse them. Will not throw errors "
22300
              "if there is a parse error. Starts at the byte index given by `index`. Returns "
22301
0
              "the number of bytes read.") {
22302
0
    janet_arity(argc, 2, 3);
22303
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
22304
0
    JanetByteView view = janet_getbytes(argv, 1);
22305
0
    if (argc == 3) {
22306
0
        int32_t offset = janet_getinteger(argv, 2);
22307
0
        if (offset < 0 || offset > view.len)
22308
0
            janet_panicf("invalid offset %d out of range [0,%d]", offset, view.len);
22309
0
        view.len -= offset;
22310
0
        view.bytes += offset;
22311
0
    }
22312
0
    int32_t i;
22313
0
    for (i = 0; i < view.len; i++) {
22314
0
        janet_parser_consume(p, view.bytes[i]);
22315
0
        switch (janet_parser_status(p)) {
22316
0
            case JANET_PARSE_ROOT:
22317
0
            case JANET_PARSE_PENDING:
22318
0
                break;
22319
0
            default:
22320
0
                return janet_wrap_integer(i + 1);
22321
0
        }
22322
0
    }
22323
0
    return janet_wrap_integer(i);
22324
0
}
22325
22326
JANET_CORE_FN(cfun_parse_eof,
22327
              "(parser/eof parser)",
22328
0
              "Indicate to the parser that the end of file was reached. This puts the parser in the :dead state.") {
22329
0
    janet_fixarity(argc, 1);
22330
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
22331
0
    janet_parser_eof(p);
22332
0
    return argv[0];
22333
0
}
22334
22335
JANET_CORE_FN(cfun_parse_insert,
22336
              "(parser/insert parser value)",
22337
              "Insert a value into the parser. This means that the parser state can be manipulated "
22338
              "in between chunks of bytes. This would allow a user to add extra elements to arrays "
22339
0
              "and tuples, for example. Returns the parser.") {
22340
0
    janet_fixarity(argc, 2);
22341
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
22342
0
    JanetParseState *s = p->states + p->statecount - 1;
22343
0
    if (s->consumer == tokenchar) {
22344
0
        janet_parser_consume(p, ' ');
22345
0
        p->column--;
22346
0
        s = p->states + p->statecount - 1;
22347
0
    }
22348
0
    if (s->flags & PFLAG_COMMENT) s--;
22349
0
    if (s->flags & PFLAG_CONTAINER) {
22350
0
        s->argn++;
22351
0
        if (p->statecount == 1) {
22352
0
            p->pending++;
22353
0
            Janet tup = janet_wrap_tuple(janet_tuple_n(argv + 1, 1));
22354
0
            push_arg(p, tup);
22355
0
        } else {
22356
0
            push_arg(p, argv[1]);
22357
0
        }
22358
0
    } else if (s->flags & (PFLAG_STRING | PFLAG_LONGSTRING)) {
22359
0
        const uint8_t *str = janet_to_string(argv[1]);
22360
0
        int32_t slen = janet_string_length(str);
22361
0
        size_t newcount = p->bufcount + slen;
22362
0
        if (p->bufcap < newcount) {
22363
0
            size_t newcap = 2 * newcount;
22364
0
            p->buf = janet_realloc(p->buf, newcap);
22365
0
            if (p->buf == NULL) {
22366
0
                JANET_OUT_OF_MEMORY;
22367
0
            }
22368
0
            p->bufcap = newcap;
22369
0
        }
22370
0
        safe_memcpy(p->buf + p->bufcount, str, slen);
22371
0
        p->bufcount = newcount;
22372
0
    } else {
22373
0
        janet_panic("cannot insert value into parser");
22374
0
    }
22375
0
    return argv[0];
22376
0
}
22377
22378
JANET_CORE_FN(cfun_parse_has_more,
22379
              "(parser/has-more parser)",
22380
0
              "Check if the parser has more values in the value queue.") {
22381
0
    janet_fixarity(argc, 1);
22382
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
22383
0
    return janet_wrap_boolean(janet_parser_has_more(p));
22384
0
}
22385
22386
JANET_CORE_FN(cfun_parse_byte,
22387
              "(parser/byte parser b)",
22388
0
              "Input a single byte `b` into the parser byte stream. Returns the parser.") {
22389
0
    janet_fixarity(argc, 2);
22390
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
22391
0
    int32_t i = janet_getinteger(argv, 1);
22392
0
    janet_parser_consume(p, 0xFF & i);
22393
0
    return argv[0];
22394
0
}
22395
22396
JANET_CORE_FN(cfun_parse_status,
22397
              "(parser/status parser)",
22398
              "Gets the current status of the parser state machine. The status will "
22399
              "be one of:\n\n"
22400
              "* :pending - a value is being parsed.\n\n"
22401
              "* :error - a parsing error was encountered.\n\n"
22402
0
              "* :root - the parser can either read more values or safely terminate.") {
22403
0
    janet_fixarity(argc, 1);
22404
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
22405
0
    const char *stat = NULL;
22406
0
    switch (janet_parser_status(p)) {
22407
0
        case JANET_PARSE_PENDING:
22408
0
            stat = "pending";
22409
0
            break;
22410
0
        case JANET_PARSE_ERROR:
22411
0
            stat = "error";
22412
0
            break;
22413
0
        case JANET_PARSE_ROOT:
22414
0
            stat = "root";
22415
0
            break;
22416
0
        case JANET_PARSE_DEAD:
22417
0
            stat = "dead";
22418
0
            break;
22419
0
    }
22420
0
    return janet_ckeywordv(stat);
22421
0
}
22422
22423
JANET_CORE_FN(cfun_parse_error,
22424
              "(parser/error parser)",
22425
              "If the parser is in the error state, returns the message associated with "
22426
              "that error. Otherwise, returns nil. Also flushes the parser state and parser "
22427
              "queue, so be sure to handle everything in the queue before calling "
22428
0
              "`parser/error`.") {
22429
0
    janet_fixarity(argc, 1);
22430
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
22431
0
    const char *err = janet_parser_error(p);
22432
0
    if (err) {
22433
0
        return (p->flag & JANET_PARSER_GENERATED_ERROR)
22434
0
               ? janet_wrap_string((const uint8_t *) err)
22435
0
               : janet_cstringv(err);
22436
0
    }
22437
0
    return janet_wrap_nil();
22438
0
}
22439
22440
JANET_CORE_FN(cfun_parse_produce,
22441
              "(parser/produce parser &opt wrap)",
22442
              "Dequeue the next value in the parse queue. Will return nil if "
22443
              "no parsed values are in the queue, otherwise will dequeue the "
22444
              "next value. If `wrap` is truthy, will return a 1-element tuple that "
22445
              "wraps the result. This tuple can be used for source-mapping "
22446
0
              "purposes.") {
22447
0
    janet_arity(argc, 1, 2);
22448
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
22449
0
    if (argc == 2 && janet_truthy(argv[1])) {
22450
0
        return janet_parser_produce_wrapped(p);
22451
0
    } else {
22452
0
        return janet_parser_produce(p);
22453
0
    }
22454
0
}
22455
22456
JANET_CORE_FN(cfun_parse_flush,
22457
              "(parser/flush parser)",
22458
              "Clears the parser state and parse queue. Can be used to reset the parser "
22459
              "if an error was encountered. Does not reset the line and column counter, so "
22460
0
              "to begin parsing in a new context, create a new parser.") {
22461
0
    janet_fixarity(argc, 1);
22462
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
22463
0
    janet_parser_flush(p);
22464
0
    return argv[0];
22465
0
}
22466
22467
JANET_CORE_FN(cfun_parse_where,
22468
              "(parser/where parser &opt line col)",
22469
              "Returns the current line number and column of the parser's internal state. If line is "
22470
              "provided, the current line number of the parser is first set to that value. If column is "
22471
0
              "also provided, the current column number of the parser is also first set to that value.") {
22472
0
    janet_arity(argc, 1, 3);
22473
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
22474
0
    if (argc > 1) {
22475
0
        int32_t line = janet_getinteger(argv, 1);
22476
0
        if (line < 1)
22477
0
            janet_panicf("invalid line number %d", line);
22478
0
        p->line = (size_t) line;
22479
0
    }
22480
0
    if (argc > 2) {
22481
0
        int32_t column = janet_getinteger(argv, 2);
22482
0
        if (column < 0)
22483
0
            janet_panicf("invalid column number %d", column);
22484
0
        p->column = (size_t) column;
22485
0
    }
22486
0
    Janet *tup = janet_tuple_begin(2);
22487
0
    tup[0] = janet_wrap_integer(p->line);
22488
0
    tup[1] = janet_wrap_integer(p->column);
22489
0
    return janet_wrap_tuple(janet_tuple_end(tup));
22490
0
}
22491
22492
static Janet janet_wrap_parse_state(JanetParseState *s, Janet *args,
22493
0
                                    uint8_t *buff, uint32_t bufcount) {
22494
0
    JanetTable *state = janet_table(0);
22495
0
    const uint8_t *buffer;
22496
0
    int add_buffer = 0;
22497
0
    const char *type = NULL;
22498
22499
0
    if (s->flags & PFLAG_CONTAINER) {
22500
0
        JanetArray *container_args = janet_array(s->argn);
22501
0
        for (int32_t i = 0; i < s->argn; i++) {
22502
0
            janet_array_push(container_args, args[i]);
22503
0
        }
22504
0
        janet_table_put(state, janet_ckeywordv("args"),
22505
0
                        janet_wrap_array(container_args));
22506
0
    }
22507
22508
0
    if (s->flags & PFLAG_PARENS || s->flags & PFLAG_SQRBRACKETS) {
22509
0
        if (s->flags & PFLAG_ATSYM) {
22510
0
            type = "array";
22511
0
        } else {
22512
0
            type = "tuple";
22513
0
        }
22514
0
    } else if (s->flags & PFLAG_CURLYBRACKETS) {
22515
0
        if (s->flags & PFLAG_ATSYM) {
22516
0
            type = "table";
22517
0
        } else {
22518
0
            type = "struct";
22519
0
        }
22520
0
    } else if (s->flags & PFLAG_STRING || s->flags & PFLAG_LONGSTRING) {
22521
0
        if (s->flags & PFLAG_BUFFER) {
22522
0
            type = "buffer";
22523
0
        } else {
22524
0
            type = "string";
22525
0
        }
22526
0
        add_buffer = 1;
22527
0
    } else if (s->flags & PFLAG_COMMENT) {
22528
0
        type = "comment";
22529
0
        add_buffer = 1;
22530
0
    } else if (s->flags & PFLAG_TOKEN) {
22531
0
        type = "token";
22532
0
        add_buffer = 1;
22533
0
    } else if (s->flags & PFLAG_ATSYM) {
22534
0
        type = "at";
22535
0
    } else if (s->flags & PFLAG_READERMAC) {
22536
0
        int c = s->flags & 0xFF;
22537
0
        type = (c == '\'') ? "quote" :
22538
0
               (c == ',') ? "unquote" :
22539
0
               (c == ';') ? "splice" :
22540
0
               (c == '~') ? "quasiquote" : "<reader>";
22541
0
    } else {
22542
0
        type = "root";
22543
0
    }
22544
22545
0
    if (type) {
22546
0
        janet_table_put(state, janet_ckeywordv("type"),
22547
0
                        janet_ckeywordv(type));
22548
0
    }
22549
22550
0
    if (add_buffer) {
22551
0
        buffer = janet_string(buff, bufcount);
22552
0
        janet_table_put(state, janet_ckeywordv("buffer"), janet_wrap_string(buffer));
22553
0
    }
22554
22555
0
    janet_table_put(state, janet_ckeywordv("line"), janet_wrap_integer(s->line));
22556
0
    janet_table_put(state, janet_ckeywordv("column"), janet_wrap_integer(s->column));
22557
0
    return janet_wrap_table(state);
22558
0
}
22559
22560
struct ParserStateGetter {
22561
    const char *name;
22562
    Janet(*fn)(const JanetParser *p);
22563
};
22564
22565
0
static Janet parser_state_delimiters(const JanetParser *_p) {
22566
0
    JanetParser *p = (JanetParser *)_p;
22567
0
    size_t i;
22568
0
    const uint8_t *str;
22569
0
    size_t oldcount;
22570
0
    oldcount = p->bufcount;
22571
0
    for (i = 0; i < p->statecount; i++) {
22572
0
        JanetParseState *s = p->states + i;
22573
0
        if (s->flags & PFLAG_PARENS) {
22574
0
            push_buf(p, '(');
22575
0
        } else if (s->flags & PFLAG_SQRBRACKETS) {
22576
0
            push_buf(p, '[');
22577
0
        } else if (s->flags & PFLAG_CURLYBRACKETS) {
22578
0
            push_buf(p, '{');
22579
0
        } else if (s->flags & PFLAG_STRING) {
22580
0
            push_buf(p, '"');
22581
0
        } else if (s->flags & PFLAG_LONGSTRING) {
22582
0
            int32_t i;
22583
0
            for (i = 0; i < s->argn; i++) {
22584
0
                push_buf(p, '`');
22585
0
            }
22586
0
        }
22587
0
    }
22588
    /* avoid ptr arithmetic on NULL */
22589
0
    str = janet_string(oldcount ? p->buf + oldcount : p->buf, (int32_t)(p->bufcount - oldcount));
22590
0
    p->bufcount = oldcount;
22591
0
    return janet_wrap_string(str);
22592
0
}
22593
22594
0
static Janet parser_state_frames(const JanetParser *p) {
22595
0
    int32_t count = (int32_t) p->statecount;
22596
0
    JanetArray *states = janet_array(count);
22597
0
    states->count = count;
22598
0
    uint8_t *buf = p->buf;
22599
    /* Iterate arg stack backwards */
22600
0
    Janet *args = p->argcount ? p->args + p->argcount : p->args; /* avoid ptr arithmetic on NULL */
22601
0
    for (int32_t i = count - 1; i >= 0; --i) {
22602
0
        JanetParseState *s = p->states + i;
22603
        /* avoid ptr arithmetic on args if NULL */
22604
0
        if ((s->flags & PFLAG_CONTAINER) && s->argn) {
22605
0
            args -= s->argn;
22606
0
        }
22607
0
        states->data[i] = janet_wrap_parse_state(s, args, buf, (uint32_t) p->bufcount);
22608
0
    }
22609
0
    return janet_wrap_array(states);
22610
0
}
22611
22612
static const struct ParserStateGetter parser_state_getters[] = {
22613
    {"frames", parser_state_frames},
22614
    {"delimiters", parser_state_delimiters},
22615
    {NULL, NULL}
22616
};
22617
22618
JANET_CORE_FN(cfun_parse_state,
22619
              "(parser/state parser &opt key)",
22620
              "Returns a representation of the internal state of the parser. If a key is passed, "
22621
              "only that information about the state is returned. Allowed keys are:\n\n"
22622
              "* :delimiters - Each byte in the string represents a nested data structure. For example, "
22623
              "if the parser state is '([\"', then the parser is in the middle of parsing a "
22624
              "string inside of square brackets inside parentheses. Can be used to augment a REPL prompt.\n\n"
22625
              "* :frames - Each table in the array represents a 'frame' in the parser state. Frames "
22626
              "contain information about the start of the expression being parsed as well as the "
22627
0
              "type of that expression and some type-specific information.") {
22628
0
    janet_arity(argc, 1, 2);
22629
0
    const uint8_t *key = NULL;
22630
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
22631
0
    if (argc == 2) {
22632
0
        key = janet_getkeyword(argv, 1);
22633
0
    }
22634
22635
0
    if (key) {
22636
        /* Get one result */
22637
0
        for (const struct ParserStateGetter *sg = parser_state_getters;
22638
0
                sg->name != NULL; sg++) {
22639
0
            if (janet_cstrcmp(key, sg->name)) continue;
22640
0
            return sg->fn(p);
22641
0
        }
22642
0
        janet_panicf("unexpected keyword %v", janet_wrap_keyword(key));
22643
0
        return janet_wrap_nil();
22644
0
    } else {
22645
        /* Put results in table */
22646
0
        JanetTable *tab = janet_table(0);
22647
0
        for (const struct ParserStateGetter *sg = parser_state_getters;
22648
0
                sg->name != NULL; sg++) {
22649
0
            janet_table_put(tab, janet_ckeywordv(sg->name), sg->fn(p));
22650
0
        }
22651
0
        return janet_wrap_table(tab);
22652
0
    }
22653
0
}
22654
22655
JANET_CORE_FN(cfun_parse_clone,
22656
              "(parser/clone p)",
22657
              "Creates a deep clone of a parser that is identical to the input parser. "
22658
              "This cloned parser can be used to continue parsing from a good checkpoint "
22659
0
              "if parsing later fails. Returns a new parser.") {
22660
0
    janet_fixarity(argc, 1);
22661
0
    JanetParser *src = janet_getabstract(argv, 0, &janet_parser_type);
22662
0
    JanetParser *dest = janet_abstract(&janet_parser_type, sizeof(JanetParser));
22663
0
    janet_parser_clone(src, dest);
22664
0
    return janet_wrap_abstract(dest);
22665
0
}
22666
22667
static const JanetMethod parser_methods[] = {
22668
    {"byte", cfun_parse_byte},
22669
    {"clone", cfun_parse_clone},
22670
    {"consume", cfun_parse_consume},
22671
    {"eof", cfun_parse_eof},
22672
    {"error", cfun_parse_error},
22673
    {"flush", cfun_parse_flush},
22674
    {"has-more", cfun_parse_has_more},
22675
    {"insert", cfun_parse_insert},
22676
    {"produce", cfun_parse_produce},
22677
    {"state", cfun_parse_state},
22678
    {"status", cfun_parse_status},
22679
    {"where", cfun_parse_where},
22680
    {NULL, NULL}
22681
};
22682
22683
0
static int parserget(void *p, Janet key, Janet *out) {
22684
0
    (void) p;
22685
0
    if (!janet_checktype(key, JANET_KEYWORD)) return 0;
22686
0
    return janet_getmethod(janet_unwrap_keyword(key), parser_methods, out);
22687
0
}
22688
22689
0
static Janet parsernext(void *p, Janet key) {
22690
0
    (void) p;
22691
0
    return janet_nextmethod(parser_methods, key);
22692
0
}
22693
22694
/* Load the library */
22695
0
void janet_lib_parse(JanetTable *env) {
22696
0
    JanetRegExt parse_cfuns[] = {
22697
0
        JANET_CORE_REG("parser/new", cfun_parse_parser),
22698
0
        JANET_CORE_REG("parser/clone", cfun_parse_clone),
22699
0
        JANET_CORE_REG("parser/has-more", cfun_parse_has_more),
22700
0
        JANET_CORE_REG("parser/produce", cfun_parse_produce),
22701
0
        JANET_CORE_REG("parser/consume", cfun_parse_consume),
22702
0
        JANET_CORE_REG("parser/byte", cfun_parse_byte),
22703
0
        JANET_CORE_REG("parser/error", cfun_parse_error),
22704
0
        JANET_CORE_REG("parser/status", cfun_parse_status),
22705
0
        JANET_CORE_REG("parser/flush", cfun_parse_flush),
22706
0
        JANET_CORE_REG("parser/state", cfun_parse_state),
22707
0
        JANET_CORE_REG("parser/where", cfun_parse_where),
22708
0
        JANET_CORE_REG("parser/eof", cfun_parse_eof),
22709
0
        JANET_CORE_REG("parser/insert", cfun_parse_insert),
22710
0
        JANET_REG_END
22711
0
    };
22712
0
    janet_core_cfuns_ext(env, NULL, parse_cfuns);
22713
0
}
22714
22715
22716
/* src/core/peg.c */
22717
#line 0 "src/core/peg.c"
22718
22719
/*
22720
* Copyright (c) 2023 Calvin Rose
22721
*
22722
* Permission is hereby granted, free of charge, to any person obtaining a copy
22723
* of this software and associated documentation files (the "Software"), to
22724
* deal in the Software without restriction, including without limitation the
22725
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
22726
* sell copies of the Software, and to permit persons to whom the Software is
22727
* furnished to do so, subject to the following conditions:
22728
*
22729
* The above copyright notice and this permission notice shall be included in
22730
* all copies or substantial portions of the Software.
22731
*
22732
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22733
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22734
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22735
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22736
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22737
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
22738
* IN THE SOFTWARE.
22739
*/
22740
22741
#ifndef JANET_AMALG
22742
#include "features.h"
22743
#include <janet.h>
22744
#include <string.h>
22745
#include "util.h"
22746
#include "vector.h"
22747
#include "util.h"
22748
#endif
22749
22750
#ifdef JANET_PEG
22751
22752
/*
22753
 * Runtime
22754
 */
22755
22756
/* Hold captured patterns and match state */
22757
typedef struct {
22758
    const uint8_t *text_start;
22759
    const uint8_t *text_end;
22760
    const uint32_t *bytecode;
22761
    const Janet *constants;
22762
    JanetArray *captures;
22763
    JanetBuffer *scratch;
22764
    JanetBuffer *tags;
22765
    JanetArray *tagged_captures;
22766
    const Janet *extrav;
22767
    int32_t *linemap;
22768
    int32_t extrac;
22769
    int32_t depth;
22770
    int32_t linemaplen;
22771
    int32_t has_backref;
22772
    enum {
22773
        PEG_MODE_NORMAL,
22774
        PEG_MODE_ACCUMULATE
22775
    } mode;
22776
} PegState;
22777
22778
/* Allow backtrack with captures. We need
22779
 * to save state at branches, and then reload
22780
 * if one branch fails and try a new branch. */
22781
typedef struct {
22782
    int32_t cap;
22783
    int32_t tcap;
22784
    int32_t scratch;
22785
} CapState;
22786
22787
/* Save the current capture state */
22788
0
static CapState cap_save(PegState *s) {
22789
0
    CapState cs;
22790
0
    cs.scratch = s->scratch->count;
22791
0
    cs.cap = s->captures->count;
22792
0
    cs.tcap = s->tagged_captures->count;
22793
0
    return cs;
22794
0
}
22795
22796
/* Load a saved capture state in the case of failure */
22797
0
static void cap_load(PegState *s, CapState cs) {
22798
0
    s->scratch->count = cs.scratch;
22799
0
    s->captures->count = cs.cap;
22800
0
    s->tags->count = cs.tcap;
22801
0
    s->tagged_captures->count = cs.tcap;
22802
0
}
22803
22804
/* Load a saved capture state in the case of success. Keeps
22805
 * tagged captures around for backref. */
22806
0
static void cap_load_keept(PegState *s, CapState cs) {
22807
0
    s->scratch->count = cs.scratch;
22808
0
    s->captures->count = cs.cap;
22809
0
}
22810
22811
/* Add a capture */
22812
0
static void pushcap(PegState *s, Janet capture, uint32_t tag) {
22813
0
    if (s->mode == PEG_MODE_ACCUMULATE) {
22814
0
        janet_to_string_b(s->scratch, capture);
22815
0
    }
22816
0
    if (s->mode == PEG_MODE_NORMAL) {
22817
0
        janet_array_push(s->captures, capture);
22818
0
    }
22819
0
    if (s->has_backref) {
22820
0
        janet_array_push(s->tagged_captures, capture);
22821
0
        janet_buffer_push_u8(s->tags, tag);
22822
0
    }
22823
0
}
22824
22825
/* Lazily generate line map to get line and column information for PegState.
22826
 * line and column are 1-indexed. */
22827
typedef struct {
22828
    int32_t line;
22829
    int32_t col;
22830
} LineCol;
22831
0
static LineCol get_linecol_from_position(PegState *s, int32_t position) {
22832
    /* Generate if not made yet */
22833
0
    if (s->linemaplen < 0) {
22834
0
        int32_t newline_count = 0;
22835
0
        for (const uint8_t *c = s->text_start; c < s->text_end; c++) {
22836
0
            if (*c == '\n') newline_count++;
22837
0
        }
22838
0
        int32_t *mem = janet_smalloc(sizeof(int32_t) * newline_count);
22839
0
        size_t index = 0;
22840
0
        for (const uint8_t *c = s->text_start; c < s->text_end; c++) {
22841
0
            if (*c == '\n') mem[index++] = (int32_t)(c - s->text_start);
22842
0
        }
22843
0
        s->linemaplen = newline_count;
22844
0
        s->linemap = mem;
22845
0
    }
22846
    /* Do binary search for line. Slightly modified from classic binary search:
22847
     * - if we find that our current character is a line break, just return immediately.
22848
     *   a newline character is consider to be on the same line as the character before
22849
     *   (\n is line terminator, not line separator).
22850
     * - in the not-found case, we still want to find the greatest-indexed newline that
22851
     *   is before position. we use that to calcuate the line and column.
22852
     * - in the case that lo = 0 and s->linemap[0] is still greater than position, we
22853
     *   are on the first line and our column is position + 1. */
22854
0
    int32_t hi = s->linemaplen; /* hi is greater than the actual line */
22855
0
    int32_t lo = 0; /* lo is less than or equal to the actual line */
22856
0
    LineCol ret;
22857
0
    while (lo + 1 < hi) {
22858
0
        int32_t mid = lo + (hi - lo) / 2;
22859
0
        if (s->linemap[mid] >= position) {
22860
0
            hi = mid;
22861
0
        } else {
22862
0
            lo = mid;
22863
0
        }
22864
0
    }
22865
    /* first line case */
22866
0
    if (s->linemaplen == 0 || (lo == 0 && s->linemap[0] >= position)) {
22867
0
        ret.line = 1;
22868
0
        ret.col = position + 1;
22869
0
    } else {
22870
0
        ret.line = lo + 2;
22871
0
        ret.col = position - s->linemap[lo];
22872
0
    }
22873
0
    return ret;
22874
0
}
22875
22876
/* Convert a uint64_t to a int64_t by wrapping to a maximum number of bytes */
22877
0
static int64_t peg_convert_u64_s64(uint64_t from, int width) {
22878
0
    int shift = 8 * (8 - width);
22879
0
    return ((int64_t)(from << shift)) >> shift;
22880
0
}
22881
22882
/* Prevent stack overflow */
22883
0
#define down1(s) do { \
22884
0
    if (0 == --((s)->depth)) janet_panic("peg/match recursed too deeply"); \
22885
0
} while (0)
22886
0
#define up1(s) ((s)->depth++)
22887
22888
/* Evaluate a peg rule
22889
 * Pre-conditions: s is in a valid state
22890
 * Post-conditions: If there is a match, returns a pointer to the next text.
22891
 * All captures on the capture stack are valid. If there is no match,
22892
 * returns NULL. Extra captures from successful child expressions can be
22893
 * left on the capture stack.
22894
 */
22895
static const uint8_t *peg_rule(
22896
    PegState *s,
22897
    const uint32_t *rule,
22898
0
    const uint8_t *text) {
22899
0
tail:
22900
0
    switch (*rule & 0x1F) {
22901
0
        default:
22902
0
            janet_panic("unexpected opcode");
22903
0
            return NULL;
22904
22905
0
        case RULE_LITERAL: {
22906
0
            uint32_t len = rule[1];
22907
0
            if (text + len > s->text_end) return NULL;
22908
0
            return memcmp(text, rule + 2, len) ? NULL : text + len;
22909
0
        }
22910
22911
0
        case RULE_NCHAR: {
22912
0
            uint32_t n = rule[1];
22913
0
            return (text + n > s->text_end) ? NULL : text + n;
22914
0
        }
22915
22916
0
        case RULE_NOTNCHAR: {
22917
0
            uint32_t n = rule[1];
22918
0
            return (text + n > s->text_end) ? text : NULL;
22919
0
        }
22920
22921
0
        case RULE_RANGE: {
22922
0
            uint8_t lo = rule[1] & 0xFF;
22923
0
            uint8_t hi = (rule[1] >> 16) & 0xFF;
22924
0
            return (text < s->text_end &&
22925
0
                    text[0] >= lo &&
22926
0
                    text[0] <= hi)
22927
0
                   ? text + 1
22928
0
                   : NULL;
22929
0
        }
22930
22931
0
        case RULE_SET: {
22932
0
            if (text >= s->text_end) return NULL;
22933
0
            uint32_t word = rule[1 + (text[0] >> 5)];
22934
0
            uint32_t mask = (uint32_t)1 << (text[0] & 0x1F);
22935
0
            return (word & mask)
22936
0
                   ? text + 1
22937
0
                   : NULL;
22938
0
        }
22939
22940
0
        case RULE_LOOK: {
22941
0
            text += ((int32_t *)rule)[1];
22942
0
            if (text < s->text_start || text > s->text_end) return NULL;
22943
0
            down1(s);
22944
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[2], text);
22945
0
            up1(s);
22946
0
            text -= ((int32_t *)rule)[1];
22947
0
            return result ? text : NULL;
22948
0
        }
22949
22950
0
        case RULE_CHOICE: {
22951
0
            uint32_t len = rule[1];
22952
0
            const uint32_t *args = rule + 2;
22953
0
            if (len == 0) return NULL;
22954
0
            down1(s);
22955
0
            CapState cs = cap_save(s);
22956
0
            for (uint32_t i = 0; i < len - 1; i++) {
22957
0
                const uint8_t *result = peg_rule(s, s->bytecode + args[i], text);
22958
0
                if (result) {
22959
0
                    up1(s);
22960
0
                    return result;
22961
0
                }
22962
0
                cap_load(s, cs);
22963
0
            }
22964
0
            up1(s);
22965
0
            rule = s->bytecode + args[len - 1];
22966
0
            goto tail;
22967
0
        }
22968
22969
0
        case RULE_SEQUENCE: {
22970
0
            uint32_t len = rule[1];
22971
0
            const uint32_t *args = rule + 2;
22972
0
            if (len == 0) return text;
22973
0
            down1(s);
22974
0
            for (uint32_t i = 0; text && i < len - 1; i++)
22975
0
                text = peg_rule(s, s->bytecode + args[i], text);
22976
0
            up1(s);
22977
0
            if (!text) return NULL;
22978
0
            rule = s->bytecode + args[len - 1];
22979
0
            goto tail;
22980
0
        }
22981
22982
0
        case RULE_IF: {
22983
0
            const uint32_t *rule_a = s->bytecode + rule[1];
22984
0
            const uint32_t *rule_b = s->bytecode + rule[2];
22985
0
            down1(s);
22986
0
            const uint8_t *result = peg_rule(s, rule_a, text);
22987
0
            up1(s);
22988
0
            if (!result) return NULL;
22989
0
            rule = rule_b;
22990
0
            goto tail;
22991
0
        }
22992
0
        case RULE_IFNOT: {
22993
0
            const uint32_t *rule_a = s->bytecode + rule[1];
22994
0
            const uint32_t *rule_b = s->bytecode + rule[2];
22995
0
            down1(s);
22996
0
            CapState cs = cap_save(s);
22997
0
            const uint8_t *result = peg_rule(s, rule_a, text);
22998
0
            if (!!result) {
22999
0
                up1(s);
23000
0
                return NULL;
23001
0
            } else {
23002
0
                cap_load(s, cs);
23003
0
                up1(s);
23004
0
                rule = rule_b;
23005
0
                goto tail;
23006
0
            }
23007
0
        }
23008
23009
0
        case RULE_NOT: {
23010
0
            const uint32_t *rule_a = s->bytecode + rule[1];
23011
0
            down1(s);
23012
0
            CapState cs = cap_save(s);
23013
0
            const uint8_t *result = peg_rule(s, rule_a, text);
23014
0
            if (result) {
23015
0
                up1(s);
23016
0
                return NULL;
23017
0
            } else {
23018
0
                cap_load(s, cs);
23019
0
                up1(s);
23020
0
                return text;
23021
0
            }
23022
0
        }
23023
23024
0
        case RULE_THRU:
23025
0
        case RULE_TO: {
23026
0
            const uint32_t *rule_a = s->bytecode + rule[1];
23027
0
            const uint8_t *next_text = NULL;
23028
0
            CapState cs = cap_save(s);
23029
0
            down1(s);
23030
0
            while (text <= s->text_end) {
23031
0
                CapState cs2 = cap_save(s);
23032
0
                next_text = peg_rule(s, rule_a, text);
23033
0
                if (next_text) {
23034
0
                    if (rule[0] == RULE_TO) cap_load(s, cs2);
23035
0
                    break;
23036
0
                }
23037
0
                cap_load(s, cs2);
23038
0
                text++;
23039
0
            }
23040
0
            up1(s);
23041
0
            if (text > s->text_end) {
23042
0
                cap_load(s, cs);
23043
0
                return NULL;
23044
0
            }
23045
0
            return rule[0] == RULE_TO ? text : next_text;
23046
0
        }
23047
23048
0
        case RULE_BETWEEN: {
23049
0
            uint32_t lo = rule[1];
23050
0
            uint32_t hi = rule[2];
23051
0
            const uint32_t *rule_a = s->bytecode + rule[3];
23052
0
            uint32_t captured = 0;
23053
0
            const uint8_t *next_text;
23054
0
            CapState cs = cap_save(s);
23055
0
            down1(s);
23056
0
            while (captured < hi) {
23057
0
                CapState cs2 = cap_save(s);
23058
0
                next_text = peg_rule(s, rule_a, text);
23059
0
                if (!next_text || next_text == text) {
23060
0
                    cap_load(s, cs2);
23061
0
                    break;
23062
0
                }
23063
0
                captured++;
23064
0
                text = next_text;
23065
0
            }
23066
0
            up1(s);
23067
0
            if (captured < lo) {
23068
0
                cap_load(s, cs);
23069
0
                return NULL;
23070
0
            }
23071
0
            return text;
23072
0
        }
23073
23074
        /* Capturing rules */
23075
23076
0
        case RULE_GETTAG: {
23077
0
            uint32_t search = rule[1];
23078
0
            uint32_t tag = rule[2];
23079
0
            for (int32_t i = s->tags->count - 1; i >= 0; i--) {
23080
0
                if (s->tags->data[i] == search) {
23081
0
                    pushcap(s, s->tagged_captures->data[i], tag);
23082
0
                    return text;
23083
0
                }
23084
0
            }
23085
0
            return NULL;
23086
0
        }
23087
23088
0
        case RULE_POSITION: {
23089
0
            pushcap(s, janet_wrap_number((double)(text - s->text_start)), rule[1]);
23090
0
            return text;
23091
0
        }
23092
23093
0
        case RULE_LINE: {
23094
0
            LineCol lc = get_linecol_from_position(s, (int32_t)(text - s->text_start));
23095
0
            pushcap(s, janet_wrap_number((double)(lc.line)), rule[1]);
23096
0
            return text;
23097
0
        }
23098
23099
0
        case RULE_COLUMN: {
23100
0
            LineCol lc = get_linecol_from_position(s, (int32_t)(text - s->text_start));
23101
0
            pushcap(s, janet_wrap_number((double)(lc.col)), rule[1]);
23102
0
            return text;
23103
0
        }
23104
23105
0
        case RULE_ARGUMENT: {
23106
0
            int32_t index = ((int32_t *)rule)[1];
23107
0
            Janet capture = (index >= s->extrac) ? janet_wrap_nil() : s->extrav[index];
23108
0
            pushcap(s, capture, rule[2]);
23109
0
            return text;
23110
0
        }
23111
23112
0
        case RULE_CONSTANT: {
23113
0
            pushcap(s, s->constants[rule[1]], rule[2]);
23114
0
            return text;
23115
0
        }
23116
23117
0
        case RULE_CAPTURE: {
23118
0
            down1(s);
23119
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[1], text);
23120
0
            up1(s);
23121
0
            if (!result) return NULL;
23122
            /* Specialized pushcap - avoid intermediate string creation */
23123
0
            if (!s->has_backref && s->mode == PEG_MODE_ACCUMULATE) {
23124
0
                janet_buffer_push_bytes(s->scratch, text, (int32_t)(result - text));
23125
0
            } else {
23126
0
                uint32_t tag = rule[2];
23127
0
                pushcap(s, janet_stringv(text, (int32_t)(result - text)), tag);
23128
0
            }
23129
0
            return result;
23130
0
        }
23131
23132
0
        case RULE_CAPTURE_NUM: {
23133
0
            down1(s);
23134
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[1], text);
23135
0
            up1(s);
23136
0
            if (!result) return NULL;
23137
            /* check number parsing */
23138
0
            double x = 0.0;
23139
0
            int32_t base = (int32_t) rule[2];
23140
0
            if (janet_scan_number_base(text, (int32_t)(result - text), base, &x)) return NULL;
23141
            /* Specialized pushcap - avoid intermediate string creation */
23142
0
            if (!s->has_backref && s->mode == PEG_MODE_ACCUMULATE) {
23143
0
                janet_buffer_push_bytes(s->scratch, text, (int32_t)(result - text));
23144
0
            } else {
23145
0
                uint32_t tag = rule[3];
23146
0
                pushcap(s, janet_wrap_number(x), tag);
23147
0
            }
23148
0
            return result;
23149
0
        }
23150
23151
0
        case RULE_ACCUMULATE: {
23152
0
            uint32_t tag = rule[2];
23153
0
            int oldmode = s->mode;
23154
0
            if (!tag && oldmode == PEG_MODE_ACCUMULATE) {
23155
0
                rule = s->bytecode + rule[1];
23156
0
                goto tail;
23157
0
            }
23158
0
            CapState cs = cap_save(s);
23159
0
            s->mode = PEG_MODE_ACCUMULATE;
23160
0
            down1(s);
23161
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[1], text);
23162
0
            up1(s);
23163
0
            s->mode = oldmode;
23164
0
            if (!result) return NULL;
23165
0
            Janet cap = janet_stringv(s->scratch->data + cs.scratch,
23166
0
                                      s->scratch->count - cs.scratch);
23167
0
            cap_load_keept(s, cs);
23168
0
            pushcap(s, cap, tag);
23169
0
            return result;
23170
0
        }
23171
23172
0
        case RULE_DROP: {
23173
0
            CapState cs = cap_save(s);
23174
0
            down1(s);
23175
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[1], text);
23176
0
            up1(s);
23177
0
            if (!result) return NULL;
23178
0
            cap_load(s, cs);
23179
0
            return result;
23180
0
        }
23181
23182
0
        case RULE_GROUP: {
23183
0
            uint32_t tag = rule[2];
23184
0
            int oldmode = s->mode;
23185
0
            CapState cs = cap_save(s);
23186
0
            s->mode = PEG_MODE_NORMAL;
23187
0
            down1(s);
23188
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[1], text);
23189
0
            up1(s);
23190
0
            s->mode = oldmode;
23191
0
            if (!result) return NULL;
23192
0
            int32_t num_sub_captures = s->captures->count - cs.cap;
23193
0
            JanetArray *sub_captures = janet_array(num_sub_captures);
23194
0
            safe_memcpy(sub_captures->data,
23195
0
                        s->captures->data + cs.cap,
23196
0
                        sizeof(Janet) * num_sub_captures);
23197
0
            sub_captures->count = num_sub_captures;
23198
0
            cap_load_keept(s, cs);
23199
0
            pushcap(s, janet_wrap_array(sub_captures), tag);
23200
0
            return result;
23201
0
        }
23202
23203
0
        case RULE_REPLACE:
23204
0
        case RULE_MATCHTIME: {
23205
0
            uint32_t tag = rule[3];
23206
0
            int oldmode = s->mode;
23207
0
            CapState cs = cap_save(s);
23208
0
            s->mode = PEG_MODE_NORMAL;
23209
0
            down1(s);
23210
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[1], text);
23211
0
            up1(s);
23212
0
            s->mode = oldmode;
23213
0
            if (!result) return NULL;
23214
23215
0
            Janet cap = janet_wrap_nil();
23216
0
            Janet constant = s->constants[rule[2]];
23217
0
            switch (janet_type(constant)) {
23218
0
                default:
23219
0
                    cap = constant;
23220
0
                    break;
23221
0
                case JANET_STRUCT:
23222
0
                    if (s->captures->count) {
23223
0
                        cap = janet_struct_get(janet_unwrap_struct(constant),
23224
0
                                               s->captures->data[s->captures->count - 1]);
23225
0
                    }
23226
0
                    break;
23227
0
                case JANET_TABLE:
23228
0
                    if (s->captures->count) {
23229
0
                        cap = janet_table_get(janet_unwrap_table(constant),
23230
0
                                              s->captures->data[s->captures->count - 1]);
23231
0
                    }
23232
0
                    break;
23233
0
                case JANET_CFUNCTION:
23234
0
                    cap = janet_unwrap_cfunction(constant)(s->captures->count - cs.cap,
23235
0
                                                           s->captures->data + cs.cap);
23236
0
                    break;
23237
0
                case JANET_FUNCTION:
23238
0
                    cap = janet_call(janet_unwrap_function(constant),
23239
0
                                     s->captures->count - cs.cap,
23240
0
                                     s->captures->data + cs.cap);
23241
0
                    break;
23242
0
            }
23243
0
            cap_load_keept(s, cs);
23244
0
            if (rule[0] == RULE_MATCHTIME && !janet_truthy(cap)) return NULL;
23245
0
            pushcap(s, cap, tag);
23246
0
            return result;
23247
0
        }
23248
23249
0
        case RULE_ERROR: {
23250
0
            int oldmode = s->mode;
23251
0
            s->mode = PEG_MODE_NORMAL;
23252
0
            int32_t old_cap = s->captures->count;
23253
0
            down1(s);
23254
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[1], text);
23255
0
            up1(s);
23256
0
            s->mode = oldmode;
23257
0
            if (!result) return NULL;
23258
0
            if (s->captures->count > old_cap) {
23259
                /* Throw last capture */
23260
0
                janet_panicv(s->captures->data[s->captures->count - 1]);
23261
0
            } else {
23262
                /* Throw generic error */
23263
0
                int32_t start = (int32_t)(text - s->text_start);
23264
0
                LineCol lc = get_linecol_from_position(s, start);
23265
0
                janet_panicf("match error at line %d, column %d", lc.line, lc.col);
23266
0
            }
23267
0
            return NULL;
23268
0
        }
23269
23270
0
        case RULE_BACKMATCH: {
23271
0
            uint32_t search = rule[1];
23272
0
            for (int32_t i = s->tags->count - 1; i >= 0; i--) {
23273
0
                if (s->tags->data[i] == search) {
23274
0
                    Janet capture = s->tagged_captures->data[i];
23275
0
                    if (!janet_checktype(capture, JANET_STRING))
23276
0
                        return NULL;
23277
0
                    const uint8_t *bytes = janet_unwrap_string(capture);
23278
0
                    int32_t len = janet_string_length(bytes);
23279
0
                    if (text + len > s->text_end)
23280
0
                        return NULL;
23281
0
                    return memcmp(text, bytes, len) ? NULL : text + len;
23282
0
                }
23283
0
            }
23284
0
            return NULL;
23285
0
        }
23286
23287
0
        case RULE_LENPREFIX: {
23288
0
            int oldmode = s->mode;
23289
0
            s->mode = PEG_MODE_NORMAL;
23290
0
            const uint8_t *next_text;
23291
0
            CapState cs = cap_save(s);
23292
0
            down1(s);
23293
0
            next_text = peg_rule(s, s->bytecode + rule[1], text);
23294
0
            up1(s);
23295
0
            if (NULL == next_text) return NULL;
23296
0
            s->mode = oldmode;
23297
0
            int32_t num_sub_captures = s->captures->count - cs.cap;
23298
0
            Janet lencap;
23299
0
            if (num_sub_captures <= 0 ||
23300
0
                    (lencap = s->captures->data[cs.cap], !janet_checkint(lencap))) {
23301
0
                cap_load(s, cs);
23302
0
                return NULL;
23303
0
            }
23304
0
            int32_t nrep = janet_unwrap_integer(lencap);
23305
            /* drop captures from len pattern */
23306
0
            cap_load(s, cs);
23307
0
            for (int32_t i = 0; i < nrep; i++) {
23308
0
                down1(s);
23309
0
                next_text = peg_rule(s, s->bytecode + rule[2], next_text);
23310
0
                up1(s);
23311
0
                if (NULL == next_text) {
23312
0
                    cap_load(s, cs);
23313
0
                    return NULL;
23314
0
                }
23315
0
            }
23316
0
            return next_text;
23317
0
        }
23318
23319
0
        case RULE_READINT: {
23320
0
            uint32_t tag = rule[2];
23321
0
            uint32_t signedness = rule[1] & 0x10;
23322
0
            uint32_t endianess = rule[1] & 0x20;
23323
0
            int width = (int)(rule[1] & 0xF);
23324
0
            if (text + width > s->text_end) return NULL;
23325
0
            uint64_t accum = 0;
23326
0
            if (endianess) {
23327
                /* BE */
23328
0
                for (int i = 0; i < width; i++) accum = (accum << 8) | text[i];
23329
0
            } else {
23330
                /* LE */
23331
0
                for (int i = width - 1; i >= 0; i--) accum = (accum << 8) | text[i];
23332
0
            }
23333
23334
0
            Janet capture_value;
23335
            /* We can only parse integeres of greater than 6 bytes reliable if int-types are enabled.
23336
             * Otherwise, we may lose precision, so 6 is the maximum size when int-types are disabled. */
23337
0
#ifdef JANET_INT_TYPES
23338
0
            if (width > 6) {
23339
0
                if (signedness) {
23340
0
                    capture_value = janet_wrap_s64(peg_convert_u64_s64(accum, width));
23341
0
                } else {
23342
0
                    capture_value = janet_wrap_u64(accum);
23343
0
                }
23344
0
            } else
23345
0
#endif
23346
0
            {
23347
0
                double double_value;
23348
0
                if (signedness) {
23349
0
                    double_value = (double)(peg_convert_u64_s64(accum, width));
23350
0
                } else {
23351
0
                    double_value = (double)accum;
23352
0
                }
23353
0
                capture_value = janet_wrap_number(double_value);
23354
0
            }
23355
23356
0
            pushcap(s, capture_value, tag);
23357
0
            return text + width;
23358
0
        }
23359
23360
0
        case RULE_UNREF: {
23361
0
            int32_t tcap = s->tags->count;
23362
0
            down1(s);
23363
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[1], text);
23364
0
            up1(s);
23365
0
            if (!result) return NULL;
23366
0
            int32_t final_tcap = s->tags->count;
23367
            /* Truncate tagged captures to not include items of the given tag */
23368
0
            int32_t w = tcap;
23369
            /* If no tag is given, drop ALL tagged captures */
23370
0
            if (rule[2]) {
23371
0
                for (int32_t i = tcap; i < final_tcap; i++) {
23372
0
                    if (s->tags->data[i] != (0xFF & rule[2])) {
23373
0
                        s->tags->data[w] = s->tags->data[i];
23374
0
                        s->tagged_captures->data[w] = s->tagged_captures->data[i];
23375
0
                        w++;
23376
0
                    }
23377
0
                }
23378
0
            }
23379
0
            s->tags->count = w;
23380
0
            s->tagged_captures->count = w;
23381
0
            return result;
23382
0
        }
23383
23384
0
    }
23385
0
}
23386
23387
/*
23388
 * Compilation
23389
 */
23390
23391
typedef struct {
23392
    JanetTable *grammar;
23393
    JanetTable *default_grammar;
23394
    JanetTable *tags;
23395
    Janet *constants;
23396
    uint32_t *bytecode;
23397
    Janet form;
23398
    int depth;
23399
    uint32_t nexttag;
23400
    int has_backref;
23401
} Builder;
23402
23403
/* Forward declaration to allow recursion */
23404
static uint32_t peg_compile1(Builder *b, Janet peg);
23405
23406
/*
23407
 * Errors
23408
 */
23409
23410
0
static void builder_cleanup(Builder *b) {
23411
0
    janet_v_free(b->constants);
23412
0
    janet_v_free(b->bytecode);
23413
0
}
23414
23415
0
JANET_NO_RETURN static void peg_panic(Builder *b, const char *msg) {
23416
0
    builder_cleanup(b);
23417
0
    janet_panicf("grammar error in %p, %s", b->form, msg);
23418
0
}
23419
23420
0
#define peg_panicf(b,...) peg_panic((b), (const char *) janet_formatc(__VA_ARGS__))
23421
23422
0
static void peg_fixarity(Builder *b, int32_t argc, int32_t arity) {
23423
0
    if (argc != arity) {
23424
0
        peg_panicf(b, "expected %d argument%s, got %d",
23425
0
                   arity,
23426
0
                   arity == 1 ? "" : "s",
23427
0
                   argc);
23428
0
    }
23429
0
}
23430
23431
0
static void peg_arity(Builder *b, int32_t arity, int32_t min, int32_t max) {
23432
0
    if (min >= 0 && arity < min)
23433
0
        peg_panicf(b, "arity mismatch, expected at least %d, got %d", min, arity);
23434
0
    if (max >= 0 && arity > max)
23435
0
        peg_panicf(b, "arity mismatch, expected at most %d, got %d", max, arity);
23436
0
}
23437
23438
0
static const uint8_t *peg_getset(Builder *b, Janet x) {
23439
0
    if (!janet_checktype(x, JANET_STRING))
23440
0
        peg_panic(b, "expected string for character set");
23441
0
    const uint8_t *str = janet_unwrap_string(x);
23442
0
    return str;
23443
0
}
23444
23445
0
static const uint8_t *peg_getrange(Builder *b, Janet x) {
23446
0
    if (!janet_checktype(x, JANET_STRING))
23447
0
        peg_panic(b, "expected string for character range");
23448
0
    const uint8_t *str = janet_unwrap_string(x);
23449
0
    if (janet_string_length(str) != 2)
23450
0
        peg_panicf(b, "expected string to have length 2, got %v", x);
23451
0
    if (str[1] < str[0])
23452
0
        peg_panicf(b, "range %v is empty", x);
23453
0
    return str;
23454
0
}
23455
23456
0
static int32_t peg_getinteger(Builder *b, Janet x) {
23457
0
    if (!janet_checkint(x))
23458
0
        peg_panicf(b, "expected integer, got %v", x);
23459
0
    return janet_unwrap_integer(x);
23460
0
}
23461
23462
0
static int32_t peg_getnat(Builder *b, Janet x) {
23463
0
    int32_t i = peg_getinteger(b, x);
23464
0
    if (i < 0)
23465
0
        peg_panicf(b, "expected non-negative integer, got %v", x);
23466
0
    return i;
23467
0
}
23468
23469
/*
23470
 * Emission
23471
 */
23472
23473
0
static uint32_t emit_constant(Builder *b, Janet c) {
23474
0
    uint32_t cindex = (uint32_t) janet_v_count(b->constants);
23475
0
    janet_v_push(b->constants, c);
23476
0
    return cindex;
23477
0
}
23478
23479
0
static uint32_t emit_tag(Builder *b, Janet t) {
23480
0
    if (!janet_checktype(t, JANET_KEYWORD))
23481
0
        peg_panicf(b, "expected keyword for capture tag, got %v", t);
23482
0
    Janet check = janet_table_get(b->tags, t);
23483
0
    if (janet_checktype(check, JANET_NIL)) {
23484
0
        uint32_t tag = b->nexttag++;
23485
0
        if (tag > 255) {
23486
0
            peg_panic(b, "too many tags - up to 255 tags are supported per peg");
23487
0
        }
23488
0
        Janet val = janet_wrap_number(tag);
23489
0
        janet_table_put(b->tags, t, val);
23490
0
        return tag;
23491
0
    } else {
23492
0
        return (uint32_t) janet_unwrap_number(check);
23493
0
    }
23494
0
}
23495
23496
/* Reserve space in bytecode for a rule. When a special emits a rule,
23497
 * it must place that rule immediately on the bytecode stack. This lets
23498
 * the compiler know where the rule is going to be before it is complete,
23499
 * allowing recursive rules. */
23500
typedef struct {
23501
    Builder *builder;
23502
    uint32_t index;
23503
    int32_t size;
23504
} Reserve;
23505
23506
0
static Reserve reserve(Builder *b, int32_t size) {
23507
0
    Reserve r;
23508
0
    r.index = janet_v_count(b->bytecode);
23509
0
    r.builder = b;
23510
0
    r.size = size;
23511
0
    for (int32_t i = 0; i < size; i++)
23512
0
        janet_v_push(b->bytecode, 0);
23513
0
    return r;
23514
0
}
23515
23516
/* Emit a rule in the builder. Returns the index of the new rule */
23517
0
static void emit_rule(Reserve r, int32_t op, int32_t n, const uint32_t *body) {
23518
0
    janet_assert(r.size == n + 1, "bad reserve");
23519
0
    r.builder->bytecode[r.index] = op;
23520
0
    memcpy(r.builder->bytecode + r.index + 1, body, n * sizeof(uint32_t));
23521
0
}
23522
23523
/* For RULE_LITERAL */
23524
0
static void emit_bytes(Builder *b, uint32_t op, int32_t len, const uint8_t *bytes) {
23525
0
    uint32_t next_rule = janet_v_count(b->bytecode);
23526
0
    janet_v_push(b->bytecode, op);
23527
0
    janet_v_push(b->bytecode, len);
23528
0
    int32_t words = ((len + 3) >> 2);
23529
0
    for (int32_t i = 0; i < words; i++)
23530
0
        janet_v_push(b->bytecode, 0);
23531
0
    memcpy(b->bytecode + next_rule + 2, bytes, len);
23532
0
}
23533
23534
/* For fixed arity rules of arities 1, 2, and 3 */
23535
0
static void emit_1(Reserve r, uint32_t op, uint32_t arg) {
23536
0
    emit_rule(r, op, 1, &arg);
23537
0
}
23538
0
static void emit_2(Reserve r, uint32_t op, uint32_t arg1, uint32_t arg2) {
23539
0
    uint32_t arr[2] = {arg1, arg2};
23540
0
    emit_rule(r, op, 2, arr);
23541
0
}
23542
0
static void emit_3(Reserve r, uint32_t op, uint32_t arg1, uint32_t arg2, uint32_t arg3) {
23543
0
    uint32_t arr[3] = {arg1, arg2, arg3};
23544
0
    emit_rule(r, op, 3, arr);
23545
0
}
23546
23547
/*
23548
 * Specials
23549
 */
23550
23551
0
static void bitmap_set(uint32_t *bitmap, uint8_t c) {
23552
0
    bitmap[c >> 5] |= ((uint32_t)1) << (c & 0x1F);
23553
0
}
23554
23555
0
static void spec_range(Builder *b, int32_t argc, const Janet *argv) {
23556
0
    peg_arity(b, argc, 1, -1);
23557
0
    if (argc == 1) {
23558
0
        Reserve r = reserve(b, 2);
23559
0
        const uint8_t *str = peg_getrange(b, argv[0]);
23560
0
        uint32_t arg = str[0] | (str[1] << 16);
23561
0
        emit_1(r, RULE_RANGE, arg);
23562
0
    } else {
23563
        /* Compile as a set */
23564
0
        Reserve r = reserve(b, 9);
23565
0
        uint32_t bitmap[8] = {0};
23566
0
        for (int32_t i = 0; i < argc; i++) {
23567
0
            const uint8_t *str = peg_getrange(b, argv[i]);
23568
0
            for (uint32_t c = str[0]; c <= str[1]; c++)
23569
0
                bitmap_set(bitmap, c);
23570
0
        }
23571
0
        emit_rule(r, RULE_SET, 8, bitmap);
23572
0
    }
23573
0
}
23574
23575
0
static void spec_set(Builder *b, int32_t argc, const Janet *argv) {
23576
0
    peg_fixarity(b, argc, 1);
23577
0
    Reserve r = reserve(b, 9);
23578
0
    const uint8_t *str = peg_getset(b, argv[0]);
23579
0
    uint32_t bitmap[8] = {0};
23580
0
    for (int32_t i = 0; i < janet_string_length(str); i++)
23581
0
        bitmap_set(bitmap, str[i]);
23582
0
    emit_rule(r, RULE_SET, 8, bitmap);
23583
0
}
23584
23585
0
static void spec_look(Builder *b, int32_t argc, const Janet *argv) {
23586
0
    peg_arity(b, argc, 1, 2);
23587
0
    Reserve r = reserve(b, 3);
23588
0
    int32_t rulearg = argc == 2 ? 1 : 0;
23589
0
    int32_t offset = argc == 2 ? peg_getinteger(b, argv[0]) : 0;
23590
0
    uint32_t subrule = peg_compile1(b, argv[rulearg]);
23591
0
    emit_2(r, RULE_LOOK, (uint32_t) offset, subrule);
23592
0
}
23593
23594
/* Rule of the form [len, rules...] */
23595
0
static void spec_variadic(Builder *b, int32_t argc, const Janet *argv, uint32_t op) {
23596
0
    uint32_t rule = janet_v_count(b->bytecode);
23597
0
    janet_v_push(b->bytecode, op);
23598
0
    janet_v_push(b->bytecode, argc);
23599
0
    for (int32_t i = 0; i < argc; i++)
23600
0
        janet_v_push(b->bytecode, 0);
23601
0
    for (int32_t i = 0; i < argc; i++) {
23602
0
        uint32_t rulei = peg_compile1(b, argv[i]);
23603
0
        b->bytecode[rule + 2 + i] = rulei;
23604
0
    }
23605
0
}
23606
23607
0
static void spec_choice(Builder *b, int32_t argc, const Janet *argv) {
23608
0
    spec_variadic(b, argc, argv, RULE_CHOICE);
23609
0
}
23610
0
static void spec_sequence(Builder *b, int32_t argc, const Janet *argv) {
23611
0
    spec_variadic(b, argc, argv, RULE_SEQUENCE);
23612
0
}
23613
23614
/* For (if a b) and (if-not a b) */
23615
0
static void spec_branch(Builder *b, int32_t argc, const Janet *argv, uint32_t rule) {
23616
0
    peg_fixarity(b, argc, 2);
23617
0
    Reserve r = reserve(b, 3);
23618
0
    uint32_t rule_a = peg_compile1(b, argv[0]);
23619
0
    uint32_t rule_b = peg_compile1(b, argv[1]);
23620
0
    emit_2(r, rule, rule_a, rule_b);
23621
0
}
23622
23623
0
static void spec_if(Builder *b, int32_t argc, const Janet *argv) {
23624
0
    spec_branch(b, argc, argv, RULE_IF);
23625
0
}
23626
0
static void spec_ifnot(Builder *b, int32_t argc, const Janet *argv) {
23627
0
    spec_branch(b, argc, argv, RULE_IFNOT);
23628
0
}
23629
0
static void spec_lenprefix(Builder *b, int32_t argc, const Janet *argv) {
23630
0
    spec_branch(b, argc, argv, RULE_LENPREFIX);
23631
0
}
23632
23633
0
static void spec_between(Builder *b, int32_t argc, const Janet *argv) {
23634
0
    peg_fixarity(b, argc, 3);
23635
0
    Reserve r = reserve(b, 4);
23636
0
    int32_t lo = peg_getnat(b, argv[0]);
23637
0
    int32_t hi = peg_getnat(b, argv[1]);
23638
0
    uint32_t subrule = peg_compile1(b, argv[2]);
23639
0
    emit_3(r, RULE_BETWEEN, lo, hi, subrule);
23640
0
}
23641
23642
0
static void spec_repeater(Builder *b, int32_t argc, const Janet *argv, int32_t min) {
23643
0
    peg_fixarity(b, argc, 1);
23644
0
    Reserve r = reserve(b, 4);
23645
0
    uint32_t subrule = peg_compile1(b, argv[0]);
23646
0
    emit_3(r, RULE_BETWEEN, min, UINT32_MAX, subrule);
23647
0
}
23648
23649
0
static void spec_some(Builder *b, int32_t argc, const Janet *argv) {
23650
0
    spec_repeater(b, argc, argv, 1);
23651
0
}
23652
0
static void spec_any(Builder *b, int32_t argc, const Janet *argv) {
23653
0
    spec_repeater(b, argc, argv, 0);
23654
0
}
23655
23656
0
static void spec_atleast(Builder *b, int32_t argc, const Janet *argv) {
23657
0
    peg_fixarity(b, argc, 2);
23658
0
    Reserve r = reserve(b, 4);
23659
0
    int32_t n = peg_getnat(b, argv[0]);
23660
0
    uint32_t subrule = peg_compile1(b, argv[1]);
23661
0
    emit_3(r, RULE_BETWEEN, n, UINT32_MAX, subrule);
23662
0
}
23663
23664
0
static void spec_atmost(Builder *b, int32_t argc, const Janet *argv) {
23665
0
    peg_fixarity(b, argc, 2);
23666
0
    Reserve r = reserve(b, 4);
23667
0
    int32_t n = peg_getnat(b, argv[0]);
23668
0
    uint32_t subrule = peg_compile1(b, argv[1]);
23669
0
    emit_3(r, RULE_BETWEEN, 0, n, subrule);
23670
0
}
23671
23672
0
static void spec_opt(Builder *b, int32_t argc, const Janet *argv) {
23673
0
    peg_fixarity(b, argc, 1);
23674
0
    Reserve r = reserve(b, 4);
23675
0
    uint32_t subrule = peg_compile1(b, argv[0]);
23676
0
    emit_3(r, RULE_BETWEEN, 0, 1, subrule);
23677
0
}
23678
23679
0
static void spec_repeat(Builder *b, int32_t argc, const Janet *argv) {
23680
0
    peg_fixarity(b, argc, 2);
23681
0
    Reserve r = reserve(b, 4);
23682
0
    int32_t n = peg_getnat(b, argv[0]);
23683
0
    uint32_t subrule = peg_compile1(b, argv[1]);
23684
0
    emit_3(r, RULE_BETWEEN, n, n, subrule);
23685
0
}
23686
23687
/* Rule of the form [rule] */
23688
0
static void spec_onerule(Builder *b, int32_t argc, const Janet *argv, uint32_t op) {
23689
0
    peg_fixarity(b, argc, 1);
23690
0
    Reserve r = reserve(b, 2);
23691
0
    uint32_t rule = peg_compile1(b, argv[0]);
23692
0
    emit_1(r, op, rule);
23693
0
}
23694
23695
0
static void spec_not(Builder *b, int32_t argc, const Janet *argv) {
23696
0
    spec_onerule(b, argc, argv, RULE_NOT);
23697
0
}
23698
0
static void spec_error(Builder *b, int32_t argc, const Janet *argv) {
23699
0
    if (argc == 0) {
23700
0
        Reserve r = reserve(b, 2);
23701
0
        uint32_t rule = peg_compile1(b, janet_wrap_number(0));
23702
0
        emit_1(r, RULE_ERROR, rule);
23703
0
    } else {
23704
0
        spec_onerule(b, argc, argv, RULE_ERROR);
23705
0
    }
23706
0
}
23707
0
static void spec_to(Builder *b, int32_t argc, const Janet *argv) {
23708
0
    spec_onerule(b, argc, argv, RULE_TO);
23709
0
}
23710
0
static void spec_thru(Builder *b, int32_t argc, const Janet *argv) {
23711
0
    spec_onerule(b, argc, argv, RULE_THRU);
23712
0
}
23713
0
static void spec_drop(Builder *b, int32_t argc, const Janet *argv) {
23714
0
    spec_onerule(b, argc, argv, RULE_DROP);
23715
0
}
23716
23717
/* Rule of the form [rule, tag] */
23718
0
static void spec_cap1(Builder *b, int32_t argc, const Janet *argv, uint32_t op) {
23719
0
    peg_arity(b, argc, 1, 2);
23720
0
    Reserve r = reserve(b, 3);
23721
0
    uint32_t tag = (argc == 2) ? emit_tag(b, argv[1]) : 0;
23722
0
    uint32_t rule = peg_compile1(b, argv[0]);
23723
0
    emit_2(r, op, rule, tag);
23724
0
}
23725
23726
0
static void spec_capture(Builder *b, int32_t argc, const Janet *argv) {
23727
0
    spec_cap1(b, argc, argv, RULE_CAPTURE);
23728
0
}
23729
0
static void spec_accumulate(Builder *b, int32_t argc, const Janet *argv) {
23730
0
    spec_cap1(b, argc, argv, RULE_ACCUMULATE);
23731
0
}
23732
0
static void spec_group(Builder *b, int32_t argc, const Janet *argv) {
23733
0
    spec_cap1(b, argc, argv, RULE_GROUP);
23734
0
}
23735
0
static void spec_unref(Builder *b, int32_t argc, const Janet *argv) {
23736
0
    spec_cap1(b, argc, argv, RULE_UNREF);
23737
0
}
23738
23739
0
static void spec_capture_number(Builder *b, int32_t argc, const Janet *argv) {
23740
0
    peg_arity(b, argc, 1, 3);
23741
0
    Reserve r = reserve(b, 4);
23742
0
    uint32_t base = 0;
23743
0
    if (argc >= 2) {
23744
0
        if (!janet_checktype(argv[1], JANET_NIL)) {
23745
0
            if (!janet_checkint(argv[1])) goto error;
23746
0
            base = (uint32_t) janet_unwrap_integer(argv[1]);
23747
0
            if (base < 2 || base > 36) goto error;
23748
0
        }
23749
0
    }
23750
0
    uint32_t tag = (argc == 3) ? emit_tag(b, argv[2]) : 0;
23751
0
    uint32_t rule = peg_compile1(b, argv[0]);
23752
0
    emit_3(r, RULE_CAPTURE_NUM, rule, base, tag);
23753
0
    return;
23754
0
error:
23755
0
    peg_panicf(b, "expected integer between 2 and 36, got %v", argv[1]);
23756
0
}
23757
23758
0
static void spec_reference(Builder *b, int32_t argc, const Janet *argv) {
23759
0
    peg_arity(b, argc, 1, 2);
23760
0
    Reserve r = reserve(b, 3);
23761
0
    uint32_t search = emit_tag(b, argv[0]);
23762
0
    uint32_t tag = (argc == 2) ? emit_tag(b, argv[1]) : 0;
23763
0
    b->has_backref = 1;
23764
0
    emit_2(r, RULE_GETTAG, search, tag);
23765
0
}
23766
23767
0
static void spec_tag1(Builder *b, int32_t argc, const Janet *argv, uint32_t op) {
23768
0
    peg_arity(b, argc, 0, 1);
23769
0
    Reserve r = reserve(b, 2);
23770
0
    uint32_t tag = (argc) ? emit_tag(b, argv[0]) : 0;
23771
0
    (void) argv;
23772
0
    emit_1(r, op, tag);
23773
0
}
23774
23775
0
static void spec_position(Builder *b, int32_t argc, const Janet *argv) {
23776
0
    spec_tag1(b, argc, argv, RULE_POSITION);
23777
0
}
23778
0
static void spec_line(Builder *b, int32_t argc, const Janet *argv) {
23779
0
    spec_tag1(b, argc, argv, RULE_LINE);
23780
0
}
23781
0
static void spec_column(Builder *b, int32_t argc, const Janet *argv) {
23782
0
    spec_tag1(b, argc, argv, RULE_COLUMN);
23783
0
}
23784
23785
0
static void spec_backmatch(Builder *b, int32_t argc, const Janet *argv) {
23786
0
    b->has_backref = 1;
23787
0
    spec_tag1(b, argc, argv, RULE_BACKMATCH);
23788
0
}
23789
23790
0
static void spec_argument(Builder *b, int32_t argc, const Janet *argv) {
23791
0
    peg_arity(b, argc, 1, 2);
23792
0
    Reserve r = reserve(b, 3);
23793
0
    uint32_t tag = (argc == 2) ? emit_tag(b, argv[1]) : 0;
23794
0
    int32_t index = peg_getnat(b, argv[0]);
23795
0
    emit_2(r, RULE_ARGUMENT, index, tag);
23796
0
}
23797
23798
0
static void spec_constant(Builder *b, int32_t argc, const Janet *argv) {
23799
0
    janet_arity(argc, 1, 2);
23800
0
    Reserve r = reserve(b, 3);
23801
0
    uint32_t tag = (argc == 2) ? emit_tag(b, argv[1]) : 0;
23802
0
    emit_2(r, RULE_CONSTANT, emit_constant(b, argv[0]), tag);
23803
0
}
23804
23805
0
static void spec_replace(Builder *b, int32_t argc, const Janet *argv) {
23806
0
    peg_arity(b, argc, 2, 3);
23807
0
    Reserve r = reserve(b, 4);
23808
0
    uint32_t subrule = peg_compile1(b, argv[0]);
23809
0
    uint32_t constant = emit_constant(b, argv[1]);
23810
0
    uint32_t tag = (argc == 3) ? emit_tag(b, argv[2]) : 0;
23811
0
    emit_3(r, RULE_REPLACE, subrule, constant, tag);
23812
0
}
23813
23814
0
static void spec_matchtime(Builder *b, int32_t argc, const Janet *argv) {
23815
0
    peg_arity(b, argc, 2, 3);
23816
0
    Reserve r = reserve(b, 4);
23817
0
    uint32_t subrule = peg_compile1(b, argv[0]);
23818
0
    Janet fun = argv[1];
23819
0
    if (!janet_checktype(fun, JANET_FUNCTION) &&
23820
0
            !janet_checktype(fun, JANET_CFUNCTION)) {
23821
0
        peg_panicf(b, "expected function or cfunction, got %v", fun);
23822
0
    }
23823
0
    uint32_t tag = (argc == 3) ? emit_tag(b, argv[2]) : 0;
23824
0
    uint32_t cindex = emit_constant(b, fun);
23825
0
    emit_3(r, RULE_MATCHTIME, subrule, cindex, tag);
23826
0
}
23827
23828
#ifdef JANET_INT_TYPES
23829
0
#define JANET_MAX_READINT_WIDTH 8
23830
#else
23831
#define JANET_MAX_READINT_WIDTH 6
23832
#endif
23833
23834
0
static void spec_readint(Builder *b, int32_t argc, const Janet *argv, uint32_t mask) {
23835
0
    peg_arity(b, argc, 1, 2);
23836
0
    Reserve r = reserve(b, 3);
23837
0
    uint32_t tag = (argc == 2) ? emit_tag(b, argv[1]) : 0;
23838
0
    int32_t width = peg_getnat(b, argv[0]);
23839
0
    if ((width < 0) || (width > JANET_MAX_READINT_WIDTH)) {
23840
0
        peg_panicf(b, "width must be between 0 and %d, got %d", JANET_MAX_READINT_WIDTH, width);
23841
0
    }
23842
0
    emit_2(r, RULE_READINT, mask | ((uint32_t) width), tag);
23843
0
}
23844
23845
0
static void spec_uint_le(Builder *b, int32_t argc, const Janet *argv) {
23846
0
    spec_readint(b, argc, argv, 0x0u);
23847
0
}
23848
0
static void spec_int_le(Builder *b, int32_t argc, const Janet *argv) {
23849
0
    spec_readint(b, argc, argv, 0x10u);
23850
0
}
23851
0
static void spec_uint_be(Builder *b, int32_t argc, const Janet *argv) {
23852
0
    spec_readint(b, argc, argv, 0x20u);
23853
0
}
23854
0
static void spec_int_be(Builder *b, int32_t argc, const Janet *argv) {
23855
0
    spec_readint(b, argc, argv, 0x30u);
23856
0
}
23857
23858
/* Special compiler form */
23859
typedef void (*Special)(Builder *b, int32_t argc, const Janet *argv);
23860
typedef struct {
23861
    const char *name;
23862
    Special special;
23863
} SpecialPair;
23864
23865
/* Keep in lexical order (vim :sort works well) */
23866
static const SpecialPair peg_specials[] = {
23867
    {"!", spec_not},
23868
    {"$", spec_position},
23869
    {"%", spec_accumulate},
23870
    {"*", spec_sequence},
23871
    {"+", spec_choice},
23872
    {"->", spec_reference},
23873
    {"/", spec_replace},
23874
    {"<-", spec_capture},
23875
    {">", spec_look},
23876
    {"?", spec_opt},
23877
    {"accumulate", spec_accumulate},
23878
    {"any", spec_any},
23879
    {"argument", spec_argument},
23880
    {"at-least", spec_atleast},
23881
    {"at-most", spec_atmost},
23882
    {"backmatch", spec_backmatch},
23883
    {"backref", spec_reference},
23884
    {"between", spec_between},
23885
    {"capture", spec_capture},
23886
    {"choice", spec_choice},
23887
    {"cmt", spec_matchtime},
23888
    {"column", spec_column},
23889
    {"constant", spec_constant},
23890
    {"drop", spec_drop},
23891
    {"error", spec_error},
23892
    {"group", spec_group},
23893
    {"if", spec_if},
23894
    {"if-not", spec_ifnot},
23895
    {"int", spec_int_le},
23896
    {"int-be", spec_int_be},
23897
    {"lenprefix", spec_lenprefix},
23898
    {"line", spec_line},
23899
    {"look", spec_look},
23900
    {"not", spec_not},
23901
    {"number", spec_capture_number},
23902
    {"opt", spec_opt},
23903
    {"position", spec_position},
23904
    {"quote", spec_capture},
23905
    {"range", spec_range},
23906
    {"repeat", spec_repeat},
23907
    {"replace", spec_replace},
23908
    {"sequence", spec_sequence},
23909
    {"set", spec_set},
23910
    {"some", spec_some},
23911
    {"thru", spec_thru},
23912
    {"to", spec_to},
23913
    {"uint", spec_uint_le},
23914
    {"uint-be", spec_uint_be},
23915
    {"unref", spec_unref},
23916
};
23917
23918
/* Compile a janet value into a rule and return the rule index. */
23919
0
static uint32_t peg_compile1(Builder *b, Janet peg) {
23920
23921
    /* Keep track of the form being compiled for error purposes */
23922
0
    Janet old_form = b->form;
23923
0
    JanetTable *old_grammar = b->grammar;
23924
0
    b->form = peg;
23925
23926
    /* Resolve keyword references */
23927
0
    int i = JANET_RECURSION_GUARD;
23928
0
    JanetTable *grammar = old_grammar;
23929
0
    for (; i > 0 && janet_checktype(peg, JANET_KEYWORD); --i) {
23930
0
        Janet nextPeg = janet_table_get_ex(grammar, peg, &grammar);
23931
0
        if (!grammar || janet_checktype(nextPeg, JANET_NIL)) {
23932
0
            nextPeg = (b->default_grammar == NULL)
23933
0
                      ? janet_wrap_nil()
23934
0
                      : janet_table_get(b->default_grammar, peg);
23935
0
            if (janet_checktype(nextPeg, JANET_NIL)) {
23936
0
                peg_panic(b, "unknown rule");
23937
0
            }
23938
0
        }
23939
0
        peg = nextPeg;
23940
0
        b->form = peg;
23941
0
        b->grammar = grammar;
23942
0
    }
23943
0
    if (i == 0)
23944
0
        peg_panic(b, "reference chain too deep");
23945
23946
    /* Check cache - for tuples we check only the local cache, as
23947
     * in a different grammar, the same tuple can compile to a different
23948
     * rule - for example, (+ :a :b) depends on whatever :a and :b are bound to. */
23949
0
    Janet check = janet_checktype(peg, JANET_TUPLE)
23950
0
                  ? janet_table_rawget(grammar, peg)
23951
0
                  : janet_table_get(grammar, peg);
23952
0
    if (!janet_checktype(check, JANET_NIL)) {
23953
0
        b->form = old_form;
23954
0
        b->grammar = old_grammar;
23955
0
        return (uint32_t) janet_unwrap_number(check);
23956
0
    }
23957
23958
    /* Check depth */
23959
0
    if (b->depth-- == 0)
23960
0
        peg_panic(b, "peg grammar recursed too deeply");
23961
23962
    /* The final rule to return */
23963
0
    uint32_t rule = janet_v_count(b->bytecode);
23964
23965
    /* Add to cache. Do not cache structs, as we don't yet know
23966
     * what rule they will return! We can just as effectively cache
23967
     * the structs main rule. */
23968
0
    if (!janet_checktype(peg, JANET_STRUCT)) {
23969
0
        JanetTable *which_grammar = grammar;
23970
        /* If we are a primitive pattern, add to the global cache (root grammar table) */
23971
0
        if (!janet_checktype(peg, JANET_TUPLE)) {
23972
0
            while (which_grammar->proto)
23973
0
                which_grammar = which_grammar->proto;
23974
0
        }
23975
0
        janet_table_put(which_grammar, peg, janet_wrap_number(rule));
23976
0
    }
23977
23978
0
    switch (janet_type(peg)) {
23979
0
        default:
23980
0
            peg_panic(b, "unexpected peg source");
23981
0
            return 0;
23982
0
        case JANET_NUMBER: {
23983
0
            int32_t n = peg_getinteger(b, peg);
23984
0
            Reserve r = reserve(b, 2);
23985
0
            if (n < 0) {
23986
0
                emit_1(r, RULE_NOTNCHAR, -n);
23987
0
            } else {
23988
0
                emit_1(r, RULE_NCHAR, n);
23989
0
            }
23990
0
            break;
23991
0
        }
23992
0
        case JANET_STRING: {
23993
0
            const uint8_t *str = janet_unwrap_string(peg);
23994
0
            int32_t len = janet_string_length(str);
23995
0
            emit_bytes(b, RULE_LITERAL, len, str);
23996
0
            break;
23997
0
        }
23998
0
        case JANET_TABLE: {
23999
            /* Build grammar table */
24000
0
            JanetTable *new_grammar = janet_table_clone(janet_unwrap_table(peg));
24001
0
            new_grammar->proto = grammar;
24002
0
            b->grammar = grammar = new_grammar;
24003
            /* Run the main rule */
24004
0
            Janet main_rule = janet_table_rawget(grammar, janet_ckeywordv("main"));
24005
0
            if (janet_checktype(main_rule, JANET_NIL))
24006
0
                peg_panic(b, "grammar requires :main rule");
24007
0
            rule = peg_compile1(b, main_rule);
24008
0
            break;
24009
0
        }
24010
0
        case JANET_STRUCT: {
24011
            /* Build grammar table */
24012
0
            const JanetKV *st = janet_unwrap_struct(peg);
24013
0
            JanetTable *new_grammar = janet_table(2 * janet_struct_capacity(st));
24014
0
            for (int32_t i = 0; i < janet_struct_capacity(st); i++) {
24015
0
                if (janet_checktype(st[i].key, JANET_KEYWORD)) {
24016
0
                    janet_table_put(new_grammar, st[i].key, st[i].value);
24017
0
                }
24018
0
            }
24019
0
            new_grammar->proto = grammar;
24020
0
            b->grammar = grammar = new_grammar;
24021
            /* Run the main rule */
24022
0
            Janet main_rule = janet_table_rawget(grammar, janet_ckeywordv("main"));
24023
0
            if (janet_checktype(main_rule, JANET_NIL))
24024
0
                peg_panic(b, "grammar requires :main rule");
24025
0
            rule = peg_compile1(b, main_rule);
24026
0
            break;
24027
0
        }
24028
0
        case JANET_TUPLE: {
24029
0
            const Janet *tup = janet_unwrap_tuple(peg);
24030
0
            int32_t len = janet_tuple_length(tup);
24031
0
            if (len == 0) peg_panic(b, "tuple in grammar must have non-zero length");
24032
0
            if (janet_checkint(tup[0])) {
24033
0
                int32_t n = janet_unwrap_integer(tup[0]);
24034
0
                if (n < 0) {
24035
0
                    peg_panicf(b, "expected non-negative integer, got %d", n);
24036
0
                }
24037
0
                spec_repeat(b, len, tup);
24038
0
                break;
24039
0
            }
24040
0
            if (!janet_checktype(tup[0], JANET_SYMBOL))
24041
0
                peg_panicf(b, "expected grammar command, found %v", tup[0]);
24042
0
            const uint8_t *sym = janet_unwrap_symbol(tup[0]);
24043
0
            const SpecialPair *sp = janet_strbinsearch(
24044
0
                                        &peg_specials,
24045
0
                                        sizeof(peg_specials) / sizeof(SpecialPair),
24046
0
                                        sizeof(SpecialPair),
24047
0
                                        sym);
24048
0
            if (sp) {
24049
0
                sp->special(b, len - 1, tup + 1);
24050
0
            } else {
24051
0
                peg_panicf(b, "unknown special %S", sym);
24052
0
            }
24053
0
            break;
24054
0
        }
24055
0
    }
24056
24057
    /* Increase depth again */
24058
0
    b->depth++;
24059
0
    b->form = old_form;
24060
0
    b->grammar = old_grammar;
24061
0
    return rule;
24062
0
}
24063
24064
/*
24065
 * Post-Compilation
24066
 */
24067
24068
0
static int peg_mark(void *p, size_t size) {
24069
0
    (void) size;
24070
0
    JanetPeg *peg = (JanetPeg *)p;
24071
0
    if (NULL != peg->constants)
24072
0
        for (uint32_t i = 0; i < peg->num_constants; i++)
24073
0
            janet_mark(peg->constants[i]);
24074
0
    return 0;
24075
0
}
24076
24077
0
static void peg_marshal(void *p, JanetMarshalContext *ctx) {
24078
0
    JanetPeg *peg = (JanetPeg *)p;
24079
0
    janet_marshal_size(ctx, peg->bytecode_len);
24080
0
    janet_marshal_int(ctx, (int32_t)peg->num_constants);
24081
0
    janet_marshal_abstract(ctx, p);
24082
0
    for (size_t i = 0; i < peg->bytecode_len; i++)
24083
0
        janet_marshal_int(ctx, (int32_t) peg->bytecode[i]);
24084
0
    for (uint32_t j = 0; j < peg->num_constants; j++)
24085
0
        janet_marshal_janet(ctx, peg->constants[j]);
24086
0
}
24087
24088
/* Used to ensure that if we place several arrays in one memory chunk, each
24089
 * array will be correctly aligned */
24090
0
static size_t size_padded(size_t offset, size_t size) {
24091
0
    size_t x = size + offset - 1;
24092
0
    return x - (x % size);
24093
0
}
24094
24095
0
static void *peg_unmarshal(JanetMarshalContext *ctx) {
24096
0
    size_t bytecode_len = janet_unmarshal_size(ctx);
24097
0
    uint32_t num_constants = (uint32_t) janet_unmarshal_int(ctx);
24098
24099
    /* Calculate offsets. Should match those in make_peg */
24100
0
    size_t bytecode_start = size_padded(sizeof(JanetPeg), sizeof(uint32_t));
24101
0
    size_t bytecode_size = bytecode_len * sizeof(uint32_t);
24102
0
    size_t constants_start = size_padded(bytecode_start + bytecode_size, sizeof(Janet));
24103
0
    size_t total_size = constants_start + sizeof(Janet) * (size_t) num_constants;
24104
24105
    /* DOS prevention? I.E. we could read bytecode and constants before
24106
     * hand so we don't allocated a ton of memory on bad, short input */
24107
24108
    /* Allocate PEG */
24109
0
    char *mem = janet_unmarshal_abstract(ctx, total_size);
24110
0
    JanetPeg *peg = (JanetPeg *)mem;
24111
0
    uint32_t *bytecode = (uint32_t *)(mem + bytecode_start);
24112
0
    Janet *constants = (Janet *)(mem + constants_start);
24113
0
    peg->bytecode = NULL;
24114
0
    peg->constants = NULL;
24115
0
    peg->bytecode_len = bytecode_len;
24116
0
    peg->num_constants = num_constants;
24117
24118
0
    for (size_t i = 0; i < peg->bytecode_len; i++)
24119
0
        bytecode[i] = (uint32_t) janet_unmarshal_int(ctx);
24120
0
    for (uint32_t j = 0; j < peg->num_constants; j++)
24121
0
        constants[j] = janet_unmarshal_janet(ctx);
24122
24123
    /* After here, no panics except for the bad: label. */
24124
24125
    /* Keep track at each index if an instruction was
24126
     * reference (0x01) or is in a main bytecode position
24127
     * (0x02). This lets us do a linear scan and not
24128
     * need to a depth first traversal. It is stricter
24129
     * than a dfs by not allowing certain kinds of unused
24130
     * bytecode. */
24131
0
    uint32_t blen = (int32_t) peg->bytecode_len;
24132
0
    uint32_t clen = peg->num_constants;
24133
0
    uint8_t *op_flags = janet_calloc(1, blen);
24134
0
    if (NULL == op_flags) {
24135
0
        JANET_OUT_OF_MEMORY;
24136
0
    }
24137
24138
    /* verify peg bytecode */
24139
0
    int32_t has_backref = 0;
24140
0
    uint32_t i = 0;
24141
0
    while (i < blen) {
24142
0
        uint32_t instr = bytecode[i];
24143
0
        uint32_t *rule = bytecode + i;
24144
0
        op_flags[i] |= 0x02;
24145
0
        switch (instr & 0x1F) {
24146
0
            case RULE_LITERAL:
24147
0
                i += 2 + ((rule[1] + 3) >> 2);
24148
0
                break;
24149
0
            case RULE_NCHAR:
24150
0
            case RULE_NOTNCHAR:
24151
0
            case RULE_RANGE:
24152
0
            case RULE_POSITION:
24153
0
            case RULE_LINE:
24154
0
            case RULE_COLUMN:
24155
                /* [1 word] */
24156
0
                i += 2;
24157
0
                break;
24158
0
            case RULE_BACKMATCH:
24159
                /* [1 word] */
24160
0
                i += 2;
24161
0
                has_backref = 1;
24162
0
                break;
24163
0
            case RULE_SET:
24164
                /* [8 words] */
24165
0
                i += 9;
24166
0
                break;
24167
0
            case RULE_LOOK:
24168
                /* [offset, rule] */
24169
0
                if (rule[2] >= blen) goto bad;
24170
0
                op_flags[rule[2]] |= 0x1;
24171
0
                i += 3;
24172
0
                break;
24173
0
            case RULE_CHOICE:
24174
0
            case RULE_SEQUENCE:
24175
                /* [len, rules...] */
24176
0
            {
24177
0
                uint32_t len = rule[1];
24178
0
                for (uint32_t j = 0; j < len; j++) {
24179
0
                    if (rule[2 + j] >= blen) goto bad;
24180
0
                    op_flags[rule[2 + j]] |= 0x1;
24181
0
                }
24182
0
                i += 2 + len;
24183
0
            }
24184
0
            break;
24185
0
            case RULE_IF:
24186
0
            case RULE_IFNOT:
24187
0
            case RULE_LENPREFIX:
24188
                /* [rule_a, rule_b (b if not a)] */
24189
0
                if (rule[1] >= blen) goto bad;
24190
0
                if (rule[2] >= blen) goto bad;
24191
0
                op_flags[rule[1]] |= 0x01;
24192
0
                op_flags[rule[2]] |= 0x01;
24193
0
                i += 3;
24194
0
                break;
24195
0
            case RULE_BETWEEN:
24196
                /* [lo, hi, rule] */
24197
0
                if (rule[3] >= blen) goto bad;
24198
0
                op_flags[rule[3]] |= 0x01;
24199
0
                i += 4;
24200
0
                break;
24201
0
            case RULE_ARGUMENT:
24202
                /* [searchtag, tag] */
24203
0
                i += 3;
24204
0
                break;
24205
0
            case RULE_GETTAG:
24206
                /* [searchtag, tag] */
24207
0
                i += 3;
24208
0
                has_backref = 1;
24209
0
                break;
24210
0
            case RULE_CONSTANT:
24211
                /* [constant, tag] */
24212
0
                if (rule[1] >= clen) goto bad;
24213
0
                i += 3;
24214
0
                break;
24215
0
            case RULE_CAPTURE_NUM:
24216
                /* [rule, base, tag] */
24217
0
                if (rule[1] >= blen) goto bad;
24218
0
                op_flags[rule[1]] |= 0x01;
24219
0
                i += 4;
24220
0
                break;
24221
0
            case RULE_ACCUMULATE:
24222
0
            case RULE_GROUP:
24223
0
            case RULE_CAPTURE:
24224
0
            case RULE_UNREF:
24225
                /* [rule, tag] */
24226
0
                if (rule[1] >= blen) goto bad;
24227
0
                op_flags[rule[1]] |= 0x01;
24228
0
                i += 3;
24229
0
                break;
24230
0
            case RULE_REPLACE:
24231
0
            case RULE_MATCHTIME:
24232
                /* [rule, constant, tag] */
24233
0
                if (rule[1] >= blen) goto bad;
24234
0
                if (rule[2] >= clen) goto bad;
24235
0
                op_flags[rule[1]] |= 0x01;
24236
0
                i += 4;
24237
0
                break;
24238
0
            case RULE_ERROR:
24239
0
            case RULE_DROP:
24240
0
            case RULE_NOT:
24241
0
            case RULE_TO:
24242
0
            case RULE_THRU:
24243
                /* [rule] */
24244
0
                if (rule[1] >= blen) goto bad;
24245
0
                op_flags[rule[1]] |= 0x01;
24246
0
                i += 2;
24247
0
                break;
24248
0
            case RULE_READINT:
24249
                /* [ width | (endianess << 5) | (signedness << 6), tag ] */
24250
0
                if (rule[1] > JANET_MAX_READINT_WIDTH) goto bad;
24251
0
                i += 3;
24252
0
                break;
24253
0
            default:
24254
0
                goto bad;
24255
0
        }
24256
0
    }
24257
24258
    /* last instruction cannot overflow */
24259
0
    if (i != blen) goto bad;
24260
24261
    /* Make sure all referenced instructions are actually
24262
     * in instruction positions. */
24263
0
    for (i = 0; i < blen; i++)
24264
0
        if (op_flags[i] == 0x01) goto bad;
24265
24266
    /* Good return */
24267
0
    peg->bytecode = bytecode;
24268
0
    peg->constants = constants;
24269
0
    peg->has_backref = has_backref;
24270
0
    janet_free(op_flags);
24271
0
    return peg;
24272
24273
0
bad:
24274
0
    janet_free(op_flags);
24275
0
    janet_panic("invalid peg bytecode");
24276
0
}
24277
24278
static int cfun_peg_getter(JanetAbstract a, Janet key, Janet *out);
24279
static Janet peg_next(void *p, Janet key);
24280
24281
const JanetAbstractType janet_peg_type = {
24282
    "core/peg",
24283
    NULL,
24284
    peg_mark,
24285
    cfun_peg_getter,
24286
    NULL, /* put */
24287
    peg_marshal,
24288
    peg_unmarshal,
24289
    NULL, /* tostring */
24290
    NULL, /* compare */
24291
    NULL, /* hash */
24292
    peg_next,
24293
    JANET_ATEND_NEXT
24294
};
24295
24296
/* Convert Builder to JanetPeg (Janet Abstract Value) */
24297
0
static JanetPeg *make_peg(Builder *b) {
24298
0
    size_t bytecode_start = size_padded(sizeof(JanetPeg), sizeof(uint32_t));
24299
0
    size_t bytecode_size = janet_v_count(b->bytecode) * sizeof(uint32_t);
24300
0
    size_t constants_start = size_padded(bytecode_start + bytecode_size, sizeof(Janet));
24301
0
    size_t constants_size = janet_v_count(b->constants) * sizeof(Janet);
24302
0
    size_t total_size = constants_start + constants_size;
24303
0
    char *mem = janet_abstract(&janet_peg_type, total_size);
24304
0
    JanetPeg *peg = (JanetPeg *)mem;
24305
0
    peg->bytecode = (uint32_t *)(mem + bytecode_start);
24306
0
    peg->constants = (Janet *)(mem + constants_start);
24307
0
    peg->num_constants = janet_v_count(b->constants);
24308
0
    safe_memcpy(peg->bytecode, b->bytecode, bytecode_size);
24309
0
    safe_memcpy(peg->constants, b->constants, constants_size);
24310
0
    peg->bytecode_len = janet_v_count(b->bytecode);
24311
0
    peg->has_backref = b->has_backref;
24312
0
    return peg;
24313
0
}
24314
24315
/* Compiler entry point */
24316
0
static JanetPeg *compile_peg(Janet x) {
24317
0
    Builder builder;
24318
0
    builder.grammar = janet_table(0);
24319
0
    builder.default_grammar = NULL;
24320
0
    {
24321
0
        Janet default_grammarv = janet_dyn("peg-grammar");
24322
0
        if (janet_checktype(default_grammarv, JANET_TABLE)) {
24323
0
            builder.default_grammar = janet_unwrap_table(default_grammarv);
24324
0
        }
24325
0
    }
24326
0
    builder.tags = janet_table(0);
24327
0
    builder.constants = NULL;
24328
0
    builder.bytecode = NULL;
24329
0
    builder.nexttag = 1;
24330
0
    builder.form = x;
24331
0
    builder.depth = JANET_RECURSION_GUARD;
24332
0
    builder.has_backref = 0;
24333
0
    peg_compile1(&builder, x);
24334
0
    JanetPeg *peg = make_peg(&builder);
24335
0
    builder_cleanup(&builder);
24336
0
    return peg;
24337
0
}
24338
24339
/*
24340
 * C Functions
24341
 */
24342
24343
JANET_CORE_FN(cfun_peg_compile,
24344
              "(peg/compile peg)",
24345
              "Compiles a peg source data structure into a <core/peg>. This will speed up matching "
24346
              "if the same peg will be used multiple times. Will also use `(dyn :peg-grammar)` to suppliment "
24347
0
              "the grammar of the peg for otherwise undefined peg keywords.") {
24348
0
    janet_fixarity(argc, 1);
24349
0
    JanetPeg *peg = compile_peg(argv[0]);
24350
0
    return janet_wrap_abstract(peg);
24351
0
}
24352
24353
/* Common data for peg cfunctions */
24354
typedef struct {
24355
    JanetPeg *peg;
24356
    PegState s;
24357
    JanetByteView bytes;
24358
    Janet subst;
24359
    int32_t start;
24360
} PegCall;
24361
24362
/* Initialize state for peg cfunctions */
24363
0
static PegCall peg_cfun_init(int32_t argc, Janet *argv, int get_replace) {
24364
0
    PegCall ret;
24365
0
    int32_t min = get_replace ? 3 : 2;
24366
0
    janet_arity(argc, get_replace, -1);
24367
0
    if (janet_checktype(argv[0], JANET_ABSTRACT) &&
24368
0
            janet_abstract_type(janet_unwrap_abstract(argv[0])) == &janet_peg_type) {
24369
0
        ret.peg = janet_unwrap_abstract(argv[0]);
24370
0
    } else {
24371
0
        ret.peg = compile_peg(argv[0]);
24372
0
    }
24373
0
    if (get_replace) {
24374
0
        ret.subst = argv[1];
24375
0
        ret.bytes = janet_getbytes(argv, 2);
24376
0
    } else {
24377
0
        ret.bytes = janet_getbytes(argv, 1);
24378
0
    }
24379
0
    if (argc > min) {
24380
0
        ret.start = janet_gethalfrange(argv, min, ret.bytes.len, "offset");
24381
0
        ret.s.extrac = argc - min - 1;
24382
0
        ret.s.extrav = janet_tuple_n(argv + min + 1, argc - min - 1);
24383
0
    } else {
24384
0
        ret.start = 0;
24385
0
        ret.s.extrac = 0;
24386
0
        ret.s.extrav = NULL;
24387
0
    }
24388
0
    ret.s.mode = PEG_MODE_NORMAL;
24389
0
    ret.s.text_start = ret.bytes.bytes;
24390
0
    ret.s.text_end = ret.bytes.bytes + ret.bytes.len;
24391
0
    ret.s.depth = JANET_RECURSION_GUARD;
24392
0
    ret.s.captures = janet_array(0);
24393
0
    ret.s.tagged_captures = janet_array(0);
24394
0
    ret.s.scratch = janet_buffer(10);
24395
0
    ret.s.tags = janet_buffer(10);
24396
0
    ret.s.constants = ret.peg->constants;
24397
0
    ret.s.bytecode = ret.peg->bytecode;
24398
0
    ret.s.linemap = NULL;
24399
0
    ret.s.linemaplen = -1;
24400
0
    ret.s.has_backref = ret.peg->has_backref;
24401
0
    return ret;
24402
0
}
24403
24404
0
static void peg_call_reset(PegCall *c) {
24405
0
    c->s.depth = JANET_RECURSION_GUARD;
24406
0
    c->s.captures->count = 0;
24407
0
    c->s.tagged_captures->count = 0;
24408
0
    c->s.scratch->count = 0;
24409
0
    c->s.tags->count = 0;
24410
0
}
24411
24412
JANET_CORE_FN(cfun_peg_match,
24413
              "(peg/match peg text &opt start & args)",
24414
              "Match a Parsing Expression Grammar to a byte string and return an array of captured values. "
24415
0
              "Returns nil if text does not match the language defined by peg. The syntax of PEGs is documented on the Janet website.") {
24416
0
    PegCall c = peg_cfun_init(argc, argv, 0);
24417
0
    const uint8_t *result = peg_rule(&c.s, c.s.bytecode, c.bytes.bytes + c.start);
24418
0
    return result ? janet_wrap_array(c.s.captures) : janet_wrap_nil();
24419
0
}
24420
24421
JANET_CORE_FN(cfun_peg_find,
24422
              "(peg/find peg text &opt start & args)",
24423
0
              "Find first index where the peg matches in text. Returns an integer, or nil if not found.") {
24424
0
    PegCall c = peg_cfun_init(argc, argv, 0);
24425
0
    for (int32_t i = c.start; i < c.bytes.len; i++) {
24426
0
        peg_call_reset(&c);
24427
0
        if (peg_rule(&c.s, c.s.bytecode, c.bytes.bytes + i))
24428
0
            return janet_wrap_integer(i);
24429
0
    }
24430
0
    return janet_wrap_nil();
24431
0
}
24432
24433
JANET_CORE_FN(cfun_peg_find_all,
24434
              "(peg/find-all peg text &opt start & args)",
24435
0
              "Find all indexes where the peg matches in text. Returns an array of integers.") {
24436
0
    PegCall c = peg_cfun_init(argc, argv, 0);
24437
0
    JanetArray *ret = janet_array(0);
24438
0
    for (int32_t i = c.start; i < c.bytes.len; i++) {
24439
0
        peg_call_reset(&c);
24440
0
        if (peg_rule(&c.s, c.s.bytecode, c.bytes.bytes + i))
24441
0
            janet_array_push(ret, janet_wrap_integer(i));
24442
0
    }
24443
0
    return janet_wrap_array(ret);
24444
0
}
24445
24446
0
static Janet cfun_peg_replace_generic(int32_t argc, Janet *argv, int only_one) {
24447
0
    PegCall c = peg_cfun_init(argc, argv, 1);
24448
0
    JanetBuffer *ret = janet_buffer(0);
24449
0
    int32_t trail = 0;
24450
0
    for (int32_t i = c.start; i < c.bytes.len;) {
24451
0
        peg_call_reset(&c);
24452
0
        const uint8_t *result = peg_rule(&c.s, c.s.bytecode, c.bytes.bytes + i);
24453
0
        if (NULL != result) {
24454
0
            if (trail < i) {
24455
0
                janet_buffer_push_bytes(ret, c.bytes.bytes + trail, (i - trail));
24456
0
                trail = i;
24457
0
            }
24458
0
            int32_t nexti = (int32_t)(result - c.bytes.bytes);
24459
0
            JanetByteView subst = janet_text_substitution(&c.subst, c.bytes.bytes + i, nexti - i, c.s.captures);
24460
0
            janet_buffer_push_bytes(ret, subst.bytes, subst.len);
24461
0
            trail = nexti;
24462
0
            if (nexti == i) nexti++;
24463
0
            i = nexti;
24464
0
            if (only_one) break;
24465
0
        } else {
24466
0
            i++;
24467
0
        }
24468
0
    }
24469
0
    if (trail < c.bytes.len) {
24470
0
        janet_buffer_push_bytes(ret, c.bytes.bytes + trail, (c.bytes.len - trail));
24471
0
    }
24472
0
    return janet_wrap_buffer(ret);
24473
0
}
24474
24475
JANET_CORE_FN(cfun_peg_replace_all,
24476
              "(peg/replace-all peg subst text &opt start & args)",
24477
              "Replace all matches of `peg` in `text` with `subst`, returning a new buffer. "
24478
              "The peg does not need to make captures to do replacement. "
24479
              "If `subst` is a function, it will be called with the "
24480
0
              "matching text followed by any captures.") {
24481
0
    return cfun_peg_replace_generic(argc, argv, 0);
24482
0
}
24483
24484
JANET_CORE_FN(cfun_peg_replace,
24485
              "(peg/replace peg repl text &opt start & args)",
24486
              "Replace first match of `peg` in `text` with `subst`, returning a new buffer. "
24487
              "The peg does not need to make captures to do replacement. "
24488
              "If `subst` is a function, it will be called with the "
24489
              "matching text followed by any captures. "
24490
0
              "If no matches are found, returns the input string in a new buffer.") {
24491
0
    return cfun_peg_replace_generic(argc, argv, 1);
24492
0
}
24493
24494
static JanetMethod peg_methods[] = {
24495
    {"match", cfun_peg_match},
24496
    {"find", cfun_peg_find},
24497
    {"find-all", cfun_peg_find_all},
24498
    {"replace", cfun_peg_replace},
24499
    {"replace-all", cfun_peg_replace_all},
24500
    {NULL, NULL}
24501
};
24502
24503
0
static int cfun_peg_getter(JanetAbstract a, Janet key, Janet *out) {
24504
0
    (void) a;
24505
0
    if (!janet_checktype(key, JANET_KEYWORD))
24506
0
        return 0;
24507
0
    return janet_getmethod(janet_unwrap_keyword(key), peg_methods, out);
24508
0
}
24509
24510
0
static Janet peg_next(void *p, Janet key) {
24511
0
    (void) p;
24512
0
    return janet_nextmethod(peg_methods, key);
24513
0
}
24514
24515
/* Load the peg module */
24516
0
void janet_lib_peg(JanetTable *env) {
24517
0
    JanetRegExt cfuns[] = {
24518
0
        JANET_CORE_REG("peg/compile", cfun_peg_compile),
24519
0
        JANET_CORE_REG("peg/match", cfun_peg_match),
24520
0
        JANET_CORE_REG("peg/find", cfun_peg_find),
24521
0
        JANET_CORE_REG("peg/find-all", cfun_peg_find_all),
24522
0
        JANET_CORE_REG("peg/replace", cfun_peg_replace),
24523
0
        JANET_CORE_REG("peg/replace-all", cfun_peg_replace_all),
24524
0
        JANET_REG_END
24525
0
    };
24526
0
    janet_core_cfuns_ext(env, NULL, cfuns);
24527
0
    janet_register_abstract_type(&janet_peg_type);
24528
0
}
24529
24530
#endif /* ifdef JANET_PEG */
24531
24532
24533
/* src/core/pp.c */
24534
#line 0 "src/core/pp.c"
24535
24536
/*
24537
* Copyright (c) 2023 Calvin Rose
24538
*
24539
* Permission is hereby granted, free of charge, to any person obtaining a copy
24540
* of this software and associated documentation files (the "Software"), to
24541
* deal in the Software without restriction, including without limitation the
24542
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
24543
* sell copies of the Software, and to permit persons to whom the Software is
24544
* furnished to do so, subject to the following conditions:
24545
*
24546
* The above copyright notice and this permission notice shall be included in
24547
* all copies or substantial portions of the Software.
24548
*
24549
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
24550
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24551
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24552
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24553
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24554
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
24555
* IN THE SOFTWARE.
24556
*/
24557
24558
#ifndef JANET_AMALG
24559
#include "features.h"
24560
#include <janet.h>
24561
#include "util.h"
24562
#include "state.h"
24563
#include <math.h>
24564
#endif
24565
24566
#include <string.h>
24567
#include <ctype.h>
24568
#include <inttypes.h>
24569
24570
/* Implements a pretty printer for Janet. The pretty printer
24571
 * is simple and not that flexible, but fast. */
24572
24573
/* Temporary buffer size */
24574
0
#define BUFSIZE 64
24575
24576
0
static void number_to_string_b(JanetBuffer *buffer, double x) {
24577
0
    janet_buffer_ensure(buffer, buffer->count + BUFSIZE, 2);
24578
0
    const char *fmt = (x == floor(x) &&
24579
0
                       x <= JANET_INTMAX_DOUBLE &&
24580
0
                       x >= JANET_INTMIN_DOUBLE) ? "%.0f" : "%g";
24581
0
    int count;
24582
0
    if (x == 0.0) {
24583
        /* Prevent printing of '-0' */
24584
0
        count = 1;
24585
0
        buffer->data[buffer->count] = '0';
24586
0
    } else {
24587
0
        count = snprintf((char *) buffer->data + buffer->count, BUFSIZE, fmt, x);
24588
0
    }
24589
0
    buffer->count += count;
24590
0
}
24591
24592
/* expects non positive x */
24593
0
static int count_dig10(int32_t x) {
24594
0
    int result = 1;
24595
0
    for (;;) {
24596
0
        if (x > -10) return result;
24597
0
        if (x > -100) return result + 1;
24598
0
        if (x > -1000) return result + 2;
24599
0
        if (x > -10000) return result + 3;
24600
0
        x /= 10000;
24601
0
        result += 4;
24602
0
    }
24603
0
}
24604
24605
0
static void integer_to_string_b(JanetBuffer *buffer, int32_t x) {
24606
0
    janet_buffer_extra(buffer, BUFSIZE);
24607
0
    uint8_t *buf = buffer->data + buffer->count;
24608
0
    int32_t neg = 0;
24609
0
    int32_t len = 0;
24610
0
    if (x == 0) {
24611
0
        buf[0] = '0';
24612
0
        buffer->count++;
24613
0
        return;
24614
0
    }
24615
0
    if (x > 0) {
24616
0
        x = -x;
24617
0
    } else {
24618
0
        neg = 1;
24619
0
        *buf++ = '-';
24620
0
    }
24621
0
    len = count_dig10(x);
24622
0
    buf += len;
24623
0
    while (x) {
24624
0
        uint8_t digit = (uint8_t) - (x % 10);
24625
0
        *(--buf) = '0' + digit;
24626
0
        x /= 10;
24627
0
    }
24628
0
    buffer->count += len + neg;
24629
0
}
24630
24631
0
#define HEX(i) (((uint8_t *) janet_base64)[(i)])
24632
24633
/* Returns a string description for a pointer. Truncates
24634
 * title to 32 characters */
24635
0
static void string_description_b(JanetBuffer *buffer, const char *title, void *pointer) {
24636
0
    janet_buffer_ensure(buffer, buffer->count + BUFSIZE, 2);
24637
0
    uint8_t *c = buffer->data + buffer->count;
24638
0
    int32_t i;
24639
0
    union {
24640
0
        uint8_t bytes[sizeof(void *)];
24641
0
        void *p;
24642
0
    } pbuf;
24643
24644
0
    pbuf.p = pointer;
24645
0
    *c++ = '<';
24646
    /* Maximum of 32 bytes for abstract type name */
24647
0
    for (i = 0; i < 32 && title[i]; ++i)
24648
0
        *c++ = ((uint8_t *)title) [i];
24649
0
    *c++ = ' ';
24650
0
    *c++ = '0';
24651
0
    *c++ = 'x';
24652
0
#if defined(JANET_64)
24653
0
#define POINTSIZE 6
24654
#else
24655
#define POINTSIZE (sizeof(void *))
24656
#endif
24657
0
    for (i = POINTSIZE; i > 0; --i) {
24658
0
        uint8_t byte = pbuf.bytes[i - 1];
24659
0
        *c++ = HEX(byte >> 4);
24660
0
        *c++ = HEX(byte & 0xF);
24661
0
    }
24662
0
    *c++ = '>';
24663
0
    buffer->count = (int32_t)(c - buffer->data);
24664
0
#undef POINTSIZE
24665
0
}
24666
24667
0
static void janet_escape_string_impl(JanetBuffer *buffer, const uint8_t *str, int32_t len) {
24668
0
    janet_buffer_push_u8(buffer, '"');
24669
0
    for (int32_t i = 0; i < len; ++i) {
24670
0
        uint8_t c = str[i];
24671
0
        switch (c) {
24672
0
            case '"':
24673
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\\"", 2);
24674
0
                break;
24675
0
            case '\n':
24676
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\n", 2);
24677
0
                break;
24678
0
            case '\r':
24679
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\r", 2);
24680
0
                break;
24681
0
            case '\0':
24682
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\0", 2);
24683
0
                break;
24684
0
            case '\f':
24685
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\f", 2);
24686
0
                break;
24687
0
            case '\v':
24688
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\v", 2);
24689
0
                break;
24690
0
            case 27:
24691
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\e", 2);
24692
0
                break;
24693
0
            case '\\':
24694
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\\\", 2);
24695
0
                break;
24696
0
            case '\t':
24697
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\t", 2);
24698
0
                break;
24699
0
            default:
24700
0
                if (c < 32 || c > 126) {
24701
0
                    uint8_t buf[4];
24702
0
                    buf[0] = '\\';
24703
0
                    buf[1] = 'x';
24704
0
                    buf[2] = janet_base64[(c >> 4) & 0xF];
24705
0
                    buf[3] = janet_base64[c & 0xF];
24706
0
                    janet_buffer_push_bytes(buffer, buf, 4);
24707
0
                } else {
24708
0
                    janet_buffer_push_u8(buffer, c);
24709
0
                }
24710
0
                break;
24711
0
        }
24712
0
    }
24713
0
    janet_buffer_push_u8(buffer, '"');
24714
0
}
24715
24716
0
static void janet_escape_string_b(JanetBuffer *buffer, const uint8_t *str) {
24717
0
    janet_escape_string_impl(buffer, str, janet_string_length(str));
24718
0
}
24719
24720
0
static void janet_escape_buffer_b(JanetBuffer *buffer, JanetBuffer *bx) {
24721
0
    if (bx == buffer) {
24722
        /* Ensures buffer won't resize while escaping */
24723
0
        janet_buffer_ensure(bx, bx->count + 5 * bx->count + 3, 1);
24724
0
    }
24725
0
    janet_buffer_push_u8(buffer, '@');
24726
0
    janet_escape_string_impl(buffer, bx->data, bx->count);
24727
0
}
24728
24729
0
void janet_to_string_b(JanetBuffer *buffer, Janet x) {
24730
0
    switch (janet_type(x)) {
24731
0
        case JANET_NIL:
24732
0
            janet_buffer_push_cstring(buffer, "");
24733
0
            break;
24734
0
        case JANET_BOOLEAN:
24735
0
            janet_buffer_push_cstring(buffer,
24736
0
                                      janet_unwrap_boolean(x) ? "true" : "false");
24737
0
            break;
24738
0
        case JANET_NUMBER:
24739
0
            number_to_string_b(buffer, janet_unwrap_number(x));
24740
0
            break;
24741
0
        case JANET_STRING:
24742
0
        case JANET_SYMBOL:
24743
0
        case JANET_KEYWORD:
24744
0
            janet_buffer_push_bytes(buffer,
24745
0
                                    janet_unwrap_string(x),
24746
0
                                    janet_string_length(janet_unwrap_string(x)));
24747
0
            break;
24748
0
        case JANET_BUFFER: {
24749
0
            JanetBuffer *to = janet_unwrap_buffer(x);
24750
            /* Prevent resizing buffer while appending */
24751
0
            if (buffer == to) janet_buffer_extra(buffer, to->count);
24752
0
            janet_buffer_push_bytes(buffer, to->data, to->count);
24753
0
            break;
24754
0
        }
24755
0
        case JANET_ABSTRACT: {
24756
0
            JanetAbstract p = janet_unwrap_abstract(x);
24757
0
            const JanetAbstractType *t = janet_abstract_type(p);
24758
0
            if (t->tostring != NULL) {
24759
0
                t->tostring(p, buffer);
24760
0
            } else {
24761
0
                string_description_b(buffer, t->name, p);
24762
0
            }
24763
0
        }
24764
0
        return;
24765
0
        case JANET_CFUNCTION: {
24766
0
            JanetCFunRegistry *reg = janet_registry_get(janet_unwrap_cfunction(x));
24767
0
            if (NULL != reg) {
24768
0
                janet_buffer_push_cstring(buffer, "<cfunction ");
24769
0
                if (NULL != reg->name_prefix) {
24770
0
                    janet_buffer_push_cstring(buffer, reg->name_prefix);
24771
0
                    janet_buffer_push_u8(buffer, '/');
24772
0
                }
24773
0
                janet_buffer_push_cstring(buffer, reg->name);
24774
0
                janet_buffer_push_u8(buffer, '>');
24775
0
                break;
24776
0
            }
24777
0
            goto fallthrough;
24778
0
        }
24779
0
        case JANET_FUNCTION: {
24780
0
            JanetFunction *fun = janet_unwrap_function(x);
24781
0
            JanetFuncDef *def = fun->def;
24782
0
            if (def->name) {
24783
0
                const uint8_t *n = def->name;
24784
0
                janet_buffer_push_cstring(buffer, "<function ");
24785
0
                janet_buffer_push_bytes(buffer, n, janet_string_length(n));
24786
0
                janet_buffer_push_u8(buffer, '>');
24787
0
                break;
24788
0
            }
24789
0
            goto fallthrough;
24790
0
        }
24791
0
    fallthrough:
24792
0
        default:
24793
0
            string_description_b(buffer, janet_type_names[janet_type(x)], janet_unwrap_pointer(x));
24794
0
            break;
24795
0
    }
24796
0
}
24797
24798
/* See parse.c for full table */
24799
24800
/* Check if a symbol or keyword contains no symbol characters */
24801
0
static int contains_bad_chars(const uint8_t *sym, int issym) {
24802
0
    int32_t len = janet_string_length(sym);
24803
0
    if (len && issym && sym[0] >= '0' && sym[0] <= '9') return 1;
24804
0
    if (!janet_valid_utf8(sym, len)) return 1;
24805
0
    for (int32_t i = 0; i < len; i++) {
24806
0
        if (!janet_is_symbol_char(sym[i])) return 1;
24807
0
    }
24808
0
    return 0;
24809
0
}
24810
24811
0
void janet_description_b(JanetBuffer *buffer, Janet x) {
24812
0
    switch (janet_type(x)) {
24813
0
        default:
24814
0
            break;
24815
0
        case JANET_NIL:
24816
0
            janet_buffer_push_cstring(buffer, "nil");
24817
0
            return;
24818
0
        case JANET_KEYWORD:
24819
0
            janet_buffer_push_u8(buffer, ':');
24820
0
            break;
24821
0
        case JANET_STRING:
24822
0
            janet_escape_string_b(buffer, janet_unwrap_string(x));
24823
0
            return;
24824
0
        case JANET_BUFFER: {
24825
0
            JanetBuffer *b = janet_unwrap_buffer(x);
24826
0
            janet_escape_buffer_b(buffer, b);
24827
0
            return;
24828
0
        }
24829
0
        case JANET_ABSTRACT: {
24830
0
            JanetAbstract p = janet_unwrap_abstract(x);
24831
0
            const JanetAbstractType *t = janet_abstract_type(p);
24832
0
            if (t->tostring != NULL) {
24833
0
                janet_buffer_push_cstring(buffer, "<");
24834
0
                janet_buffer_push_cstring(buffer, t->name);
24835
0
                janet_buffer_push_cstring(buffer, " ");
24836
0
                t->tostring(p, buffer);
24837
0
                janet_buffer_push_cstring(buffer, ">");
24838
0
            } else {
24839
0
                string_description_b(buffer, t->name, p);
24840
0
            }
24841
0
            return;
24842
0
        }
24843
0
    }
24844
0
    janet_to_string_b(buffer, x);
24845
0
}
24846
24847
0
const uint8_t *janet_description(Janet x) {
24848
0
    JanetBuffer b;
24849
0
    janet_buffer_init(&b, 10);
24850
0
    janet_description_b(&b, x);
24851
0
    const uint8_t *ret = janet_string(b.data, b.count);
24852
0
    janet_buffer_deinit(&b);
24853
0
    return ret;
24854
0
}
24855
24856
/* Convert any value to a janet string. Similar to description, but
24857
 * strings, symbols, and buffers will return their content. */
24858
0
const uint8_t *janet_to_string(Janet x) {
24859
0
    switch (janet_type(x)) {
24860
0
        default: {
24861
0
            JanetBuffer b;
24862
0
            janet_buffer_init(&b, 10);
24863
0
            janet_to_string_b(&b, x);
24864
0
            const uint8_t *ret = janet_string(b.data, b.count);
24865
0
            janet_buffer_deinit(&b);
24866
0
            return ret;
24867
0
        }
24868
0
        case JANET_BUFFER:
24869
0
            return janet_string(janet_unwrap_buffer(x)->data, janet_unwrap_buffer(x)->count);
24870
0
        case JANET_STRING:
24871
0
        case JANET_SYMBOL:
24872
0
        case JANET_KEYWORD:
24873
0
            return janet_unwrap_string(x);
24874
0
    }
24875
0
}
24876
24877
/* Hold state for pretty printer. */
24878
struct pretty {
24879
    JanetBuffer *buffer;
24880
    int depth;
24881
    int indent;
24882
    int flags;
24883
    int32_t bufstartlen;
24884
    int32_t *keysort_buffer;
24885
    int32_t keysort_capacity;
24886
    int32_t keysort_start;
24887
    JanetTable seen;
24888
};
24889
24890
/* Print jdn format */
24891
0
static int print_jdn_one(struct pretty *S, Janet x, int depth) {
24892
0
    if (depth == 0) return 1;
24893
0
    switch (janet_type(x)) {
24894
0
        case JANET_NIL:
24895
0
        case JANET_BOOLEAN:
24896
0
        case JANET_BUFFER:
24897
0
        case JANET_STRING:
24898
0
            janet_description_b(S->buffer, x);
24899
0
            break;
24900
0
        case JANET_NUMBER:
24901
0
            janet_buffer_ensure(S->buffer, S->buffer->count + BUFSIZE, 2);
24902
0
            int count = snprintf((char *) S->buffer->data + S->buffer->count, BUFSIZE, "%.17g", janet_unwrap_number(x));
24903
0
            S->buffer->count += count;
24904
0
            break;
24905
0
        case JANET_SYMBOL:
24906
0
        case JANET_KEYWORD:
24907
0
            if (contains_bad_chars(janet_unwrap_keyword(x), janet_type(x) == JANET_SYMBOL)) return 1;
24908
0
            janet_description_b(S->buffer, x);
24909
0
            break;
24910
0
        case JANET_TUPLE: {
24911
0
            JanetTuple t = janet_unwrap_tuple(x);
24912
0
            int isb = janet_tuple_flag(t) & JANET_TUPLE_FLAG_BRACKETCTOR;
24913
0
            janet_buffer_push_u8(S->buffer, isb ? '[' : '(');
24914
0
            for (int32_t i = 0; i < janet_tuple_length(t); i++) {
24915
0
                if (i) janet_buffer_push_u8(S->buffer, ' ');
24916
0
                if (print_jdn_one(S, t[i], depth - 1)) return 1;
24917
0
            }
24918
0
            janet_buffer_push_u8(S->buffer, isb ? ']' : ')');
24919
0
        }
24920
0
        break;
24921
0
        case JANET_ARRAY: {
24922
0
            janet_table_put(&S->seen, x, janet_wrap_true());
24923
0
            JanetArray *a = janet_unwrap_array(x);
24924
0
            janet_buffer_push_cstring(S->buffer, "@[");
24925
0
            for (int32_t i = 0; i < a->count; i++) {
24926
0
                if (i) janet_buffer_push_u8(S->buffer, ' ');
24927
0
                if (print_jdn_one(S, a->data[i], depth - 1)) return 1;
24928
0
            }
24929
0
            janet_buffer_push_u8(S->buffer, ']');
24930
0
        }
24931
0
        break;
24932
0
        case JANET_TABLE: {
24933
0
            janet_table_put(&S->seen, x, janet_wrap_true());
24934
0
            JanetTable *tab = janet_unwrap_table(x);
24935
0
            janet_buffer_push_cstring(S->buffer, "@{");
24936
0
            int isFirst = 1;
24937
0
            for (int32_t i = 0; i < tab->capacity; i++) {
24938
0
                const JanetKV *kv = tab->data + i;
24939
0
                if (janet_checktype(kv->key, JANET_NIL)) continue;
24940
0
                if (!isFirst) janet_buffer_push_u8(S->buffer, ' ');
24941
0
                isFirst = 0;
24942
0
                if (print_jdn_one(S, kv->key, depth - 1)) return 1;
24943
0
                janet_buffer_push_u8(S->buffer, ' ');
24944
0
                if (print_jdn_one(S, kv->value, depth - 1)) return 1;
24945
0
            }
24946
0
            janet_buffer_push_u8(S->buffer, '}');
24947
0
        }
24948
0
        break;
24949
0
        case JANET_STRUCT: {
24950
0
            JanetStruct st = janet_unwrap_struct(x);
24951
0
            janet_buffer_push_u8(S->buffer, '{');
24952
0
            int isFirst = 1;
24953
0
            for (int32_t i = 0; i < janet_struct_capacity(st); i++) {
24954
0
                const JanetKV *kv = st + i;
24955
0
                if (janet_checktype(kv->key, JANET_NIL)) continue;
24956
0
                if (!isFirst) janet_buffer_push_u8(S->buffer, ' ');
24957
0
                isFirst = 0;
24958
0
                if (print_jdn_one(S, kv->key, depth - 1)) return 1;
24959
0
                janet_buffer_push_u8(S->buffer, ' ');
24960
0
                if (print_jdn_one(S, kv->value, depth - 1)) return 1;
24961
0
            }
24962
0
            janet_buffer_push_u8(S->buffer, '}');
24963
0
        }
24964
0
        break;
24965
0
        default:
24966
0
            return 1;
24967
0
    }
24968
0
    return 0;
24969
0
}
24970
24971
0
static void print_newline(struct pretty *S, int just_a_space) {
24972
0
    int i;
24973
0
    if (just_a_space || (S->flags & JANET_PRETTY_ONELINE)) {
24974
0
        janet_buffer_push_u8(S->buffer, ' ');
24975
0
        return;
24976
0
    }
24977
0
    janet_buffer_push_u8(S->buffer, '\n');
24978
0
    for (i = 0; i < S->indent; i++) {
24979
0
        janet_buffer_push_u8(S->buffer, ' ');
24980
0
    }
24981
0
}
24982
24983
/* Color coding for types */
24984
static const char janet_cycle_color[] = "\x1B[36m";
24985
static const char janet_class_color[] = "\x1B[34m";
24986
static const char *janet_pretty_colors[] = {
24987
    "\x1B[32m",
24988
    "\x1B[36m",
24989
    "\x1B[36m",
24990
    "\x1B[36m",
24991
    "\x1B[35m",
24992
    "\x1B[34m",
24993
    "\x1B[33m",
24994
    "\x1B[36m",
24995
    "\x1B[36m",
24996
    "\x1B[36m",
24997
    "\x1B[36m",
24998
    "\x1B[35m",
24999
    "\x1B[36m",
25000
    "\x1B[36m",
25001
    "\x1B[36m",
25002
    "\x1B[36m"
25003
};
25004
25005
0
#define JANET_PRETTY_DICT_ONELINE 4
25006
0
#define JANET_PRETTY_IND_ONELINE 10
25007
0
#define JANET_PRETTY_DICT_LIMIT 30
25008
0
#define JANET_PRETTY_ARRAY_LIMIT 160
25009
25010
/* Helper for pretty printing */
25011
0
static void janet_pretty_one(struct pretty *S, Janet x, int is_dict_value) {
25012
    /* Add to seen */
25013
0
    switch (janet_type(x)) {
25014
0
        case JANET_NIL:
25015
0
        case JANET_NUMBER:
25016
0
        case JANET_SYMBOL:
25017
0
        case JANET_BOOLEAN:
25018
0
            break;
25019
0
        default: {
25020
0
            Janet seenid = janet_table_get(&S->seen, x);
25021
0
            if (janet_checktype(seenid, JANET_NUMBER)) {
25022
0
                if (S->flags & JANET_PRETTY_COLOR) {
25023
0
                    janet_buffer_push_cstring(S->buffer, janet_cycle_color);
25024
0
                }
25025
0
                janet_buffer_push_cstring(S->buffer, "<cycle ");
25026
0
                integer_to_string_b(S->buffer, janet_unwrap_integer(seenid));
25027
0
                janet_buffer_push_u8(S->buffer, '>');
25028
0
                if (S->flags & JANET_PRETTY_COLOR) {
25029
0
                    janet_buffer_push_cstring(S->buffer, "\x1B[0m");
25030
0
                }
25031
0
                return;
25032
0
            } else {
25033
0
                janet_table_put(&S->seen, x, janet_wrap_integer(S->seen.count));
25034
0
                break;
25035
0
            }
25036
0
        }
25037
0
    }
25038
25039
0
    switch (janet_type(x)) {
25040
0
        default: {
25041
0
            const char *color = janet_pretty_colors[janet_type(x)];
25042
0
            if (color && (S->flags & JANET_PRETTY_COLOR)) {
25043
0
                janet_buffer_push_cstring(S->buffer, color);
25044
0
            }
25045
0
            if (janet_checktype(x, JANET_BUFFER) && janet_unwrap_buffer(x) == S->buffer) {
25046
0
                janet_buffer_ensure(S->buffer, S->buffer->count + S->bufstartlen * 4 + 3, 1);
25047
0
                janet_buffer_push_u8(S->buffer, '@');
25048
0
                janet_escape_string_impl(S->buffer, S->buffer->data, S->bufstartlen);
25049
0
            } else {
25050
0
                janet_description_b(S->buffer, x);
25051
0
            }
25052
0
            if (color && (S->flags & JANET_PRETTY_COLOR)) {
25053
0
                janet_buffer_push_cstring(S->buffer, "\x1B[0m");
25054
0
            }
25055
0
            break;
25056
0
        }
25057
0
        case JANET_ARRAY:
25058
0
        case JANET_TUPLE: {
25059
0
            int32_t i = 0, len = 0;
25060
0
            const Janet *arr = NULL;
25061
0
            int isarray = janet_checktype(x, JANET_ARRAY);
25062
0
            janet_indexed_view(x, &arr, &len);
25063
0
            int hasbrackets = !isarray && (janet_tuple_flag(arr) & JANET_TUPLE_FLAG_BRACKETCTOR);
25064
0
            const char *startstr = isarray ? "@[" : hasbrackets ? "[" : "(";
25065
0
            const char endchar = isarray ? ']' : hasbrackets ? ']' : ')';
25066
0
            janet_buffer_push_cstring(S->buffer, startstr);
25067
0
            S->depth--;
25068
0
            S->indent += 2;
25069
0
            if (S->depth == 0) {
25070
0
                janet_buffer_push_cstring(S->buffer, "...");
25071
0
            } else {
25072
0
                if (!isarray && !(S->flags & JANET_PRETTY_ONELINE) && len >= JANET_PRETTY_IND_ONELINE)
25073
0
                    janet_buffer_push_u8(S->buffer, ' ');
25074
0
                if (is_dict_value && len >= JANET_PRETTY_IND_ONELINE) print_newline(S, 0);
25075
0
                if (len > JANET_PRETTY_ARRAY_LIMIT && !(S->flags & JANET_PRETTY_NOTRUNC)) {
25076
0
                    for (i = 0; i < 3; i++) {
25077
0
                        if (i) print_newline(S, 0);
25078
0
                        janet_pretty_one(S, arr[i], 0);
25079
0
                    }
25080
0
                    print_newline(S, 0);
25081
0
                    janet_buffer_push_cstring(S->buffer, "...");
25082
0
                    for (i = 0; i < 3; i++) {
25083
0
                        print_newline(S, 0);
25084
0
                        janet_pretty_one(S, arr[len - 3 + i], 0);
25085
0
                    }
25086
0
                } else {
25087
0
                    for (i = 0; i < len; i++) {
25088
0
                        if (i) print_newline(S, len < JANET_PRETTY_IND_ONELINE);
25089
0
                        janet_pretty_one(S, arr[i], 0);
25090
0
                    }
25091
0
                }
25092
0
            }
25093
0
            S->indent -= 2;
25094
0
            S->depth++;
25095
0
            janet_buffer_push_u8(S->buffer, endchar);
25096
0
            break;
25097
0
        }
25098
0
        case JANET_STRUCT:
25099
0
        case JANET_TABLE: {
25100
0
            int istable = janet_checktype(x, JANET_TABLE);
25101
25102
            /* For object-like tables, print class name */
25103
0
            if (istable) {
25104
0
                JanetTable *t = janet_unwrap_table(x);
25105
0
                JanetTable *proto = t->proto;
25106
0
                janet_buffer_push_cstring(S->buffer, "@");
25107
0
                if (NULL != proto) {
25108
0
                    Janet name = janet_table_get(proto, janet_ckeywordv("_name"));
25109
0
                    const uint8_t *n;
25110
0
                    int32_t len;
25111
0
                    if (janet_bytes_view(name, &n, &len)) {
25112
0
                        if (S->flags & JANET_PRETTY_COLOR) {
25113
0
                            janet_buffer_push_cstring(S->buffer, janet_class_color);
25114
0
                        }
25115
0
                        janet_buffer_push_bytes(S->buffer, n, len);
25116
0
                        if (S->flags & JANET_PRETTY_COLOR) {
25117
0
                            janet_buffer_push_cstring(S->buffer, "\x1B[0m");
25118
0
                        }
25119
0
                    }
25120
0
                }
25121
0
            } else {
25122
0
                JanetStruct st = janet_unwrap_struct(x);
25123
0
                JanetStruct proto = janet_struct_proto(st);
25124
0
                if (NULL != proto) {
25125
0
                    Janet name = janet_struct_get(proto, janet_ckeywordv("_name"));
25126
0
                    const uint8_t *n;
25127
0
                    int32_t len;
25128
0
                    if (janet_bytes_view(name, &n, &len)) {
25129
0
                        if (S->flags & JANET_PRETTY_COLOR) {
25130
0
                            janet_buffer_push_cstring(S->buffer, janet_class_color);
25131
0
                        }
25132
0
                        janet_buffer_push_bytes(S->buffer, n, len);
25133
0
                        if (S->flags & JANET_PRETTY_COLOR) {
25134
0
                            janet_buffer_push_cstring(S->buffer, "\x1B[0m");
25135
0
                        }
25136
0
                    }
25137
0
                }
25138
0
            }
25139
0
            janet_buffer_push_cstring(S->buffer, "{");
25140
25141
0
            S->depth--;
25142
0
            S->indent += 2;
25143
0
            if (S->depth == 0) {
25144
0
                janet_buffer_push_cstring(S->buffer, "...");
25145
0
            } else {
25146
0
                int32_t i = 0, len = 0, cap = 0;
25147
0
                const JanetKV *kvs = NULL;
25148
0
                janet_dictionary_view(x, &kvs, &len, &cap);
25149
0
                if (!istable && !(S->flags & JANET_PRETTY_ONELINE) && len >= JANET_PRETTY_DICT_ONELINE)
25150
0
                    janet_buffer_push_u8(S->buffer, ' ');
25151
0
                if (is_dict_value && len >= JANET_PRETTY_DICT_ONELINE) print_newline(S, 0);
25152
0
                int32_t ks_start = S->keysort_start;
25153
25154
                /* Ensure buffer is large enough to sort keys. */
25155
0
                int truncated = 0;
25156
0
                int64_t mincap = (int64_t) len + (int64_t) ks_start;
25157
0
                if (mincap > INT32_MAX) {
25158
0
                    truncated = 1;
25159
0
                    len = 0;
25160
0
                    mincap = ks_start;
25161
0
                }
25162
25163
0
                if (S->keysort_capacity < mincap) {
25164
0
                    if (mincap >= INT32_MAX / 2) {
25165
0
                        S->keysort_capacity = INT32_MAX;
25166
0
                    } else {
25167
0
                        S->keysort_capacity = (int32_t)(mincap * 2);
25168
0
                    }
25169
0
                    S->keysort_buffer = janet_srealloc(S->keysort_buffer, sizeof(int32_t) * S->keysort_capacity);
25170
0
                    if (NULL == S->keysort_buffer) {
25171
0
                        JANET_OUT_OF_MEMORY;
25172
0
                    }
25173
0
                }
25174
25175
0
                janet_sorted_keys(kvs, cap, S->keysort_buffer == NULL ? NULL : S->keysort_buffer + ks_start);
25176
0
                S->keysort_start += len;
25177
0
                if (!(S->flags & JANET_PRETTY_NOTRUNC) && (len > JANET_PRETTY_DICT_LIMIT)) {
25178
0
                    len = JANET_PRETTY_DICT_LIMIT;
25179
0
                    truncated = 1;
25180
0
                }
25181
25182
0
                for (i = 0; i < len; i++) {
25183
0
                    if (i) print_newline(S, len < JANET_PRETTY_DICT_ONELINE);
25184
0
                    int32_t j = S->keysort_buffer[i + ks_start];
25185
0
                    janet_pretty_one(S, kvs[j].key, 0);
25186
0
                    janet_buffer_push_u8(S->buffer, ' ');
25187
0
                    janet_pretty_one(S, kvs[j].value, 1);
25188
0
                }
25189
25190
0
                if (truncated) {
25191
0
                    print_newline(S, 0);
25192
0
                    janet_buffer_push_cstring(S->buffer, "...");
25193
0
                }
25194
25195
0
                S->keysort_start = ks_start;
25196
0
            }
25197
0
            S->indent -= 2;
25198
0
            S->depth++;
25199
0
            janet_buffer_push_u8(S->buffer, '}');
25200
0
            break;
25201
0
        }
25202
0
    }
25203
    /* Remove from seen */
25204
0
    janet_table_remove(&S->seen, x);
25205
0
    return;
25206
0
}
25207
25208
0
static JanetBuffer *janet_pretty_(JanetBuffer *buffer, int depth, int flags, Janet x, int32_t startlen) {
25209
0
    struct pretty S;
25210
0
    if (NULL == buffer) {
25211
0
        buffer = janet_buffer(0);
25212
0
    }
25213
0
    S.buffer = buffer;
25214
0
    S.depth = depth;
25215
0
    S.indent = 0;
25216
0
    S.flags = flags;
25217
0
    S.bufstartlen = startlen;
25218
0
    S.keysort_capacity = 0;
25219
0
    S.keysort_buffer = NULL;
25220
0
    S.keysort_start = 0;
25221
0
    janet_table_init(&S.seen, 10);
25222
0
    janet_pretty_one(&S, x, 0);
25223
0
    janet_table_deinit(&S.seen);
25224
0
    return S.buffer;
25225
0
}
25226
25227
/* Helper for printing a janet value in a pretty form. Not meant to be used
25228
 * for serialization or anything like that. */
25229
0
JanetBuffer *janet_pretty(JanetBuffer *buffer, int depth, int flags, Janet x) {
25230
0
    return janet_pretty_(buffer, depth, flags, x, buffer ? buffer->count : 0);
25231
0
}
25232
25233
0
static JanetBuffer *janet_jdn_(JanetBuffer *buffer, int depth, Janet x, int32_t startlen) {
25234
0
    struct pretty S;
25235
0
    if (NULL == buffer) {
25236
0
        buffer = janet_buffer(0);
25237
0
    }
25238
0
    S.buffer = buffer;
25239
0
    S.depth = depth;
25240
0
    S.indent = 0;
25241
0
    S.flags = 0;
25242
0
    S.bufstartlen = startlen;
25243
0
    S.keysort_capacity = 0;
25244
0
    S.keysort_buffer = NULL;
25245
0
    S.keysort_start = 0;
25246
0
    janet_table_init(&S.seen, 10);
25247
0
    int res = print_jdn_one(&S, x, depth);
25248
0
    janet_table_deinit(&S.seen);
25249
0
    if (res) {
25250
0
        janet_panic("could not print to jdn format");
25251
0
    }
25252
0
    return S.buffer;
25253
0
}
25254
25255
0
JanetBuffer *janet_jdn(JanetBuffer *buffer, int depth, Janet x) {
25256
0
    return janet_jdn_(buffer, depth, x, buffer ? buffer->count : 0);
25257
0
}
25258
25259
0
static const char *typestr(Janet x) {
25260
0
    JanetType t = janet_type(x);
25261
0
    return (t == JANET_ABSTRACT)
25262
0
           ? janet_abstract_type(janet_unwrap_abstract(x))->name
25263
0
           : janet_type_names[t];
25264
0
}
25265
25266
0
static void pushtypes(JanetBuffer *buffer, int types) {
25267
0
    int first = 1;
25268
0
    int i = 0;
25269
0
    while (types) {
25270
0
        if (1 & types) {
25271
0
            if (first) {
25272
0
                first = 0;
25273
0
            } else {
25274
0
                janet_buffer_push_cstring(buffer, (types == 1) ? " or " : ", ");
25275
0
            }
25276
0
            janet_buffer_push_cstring(buffer, janet_type_names[i]);
25277
0
        }
25278
0
        i++;
25279
0
        types >>= 1;
25280
0
    }
25281
0
}
25282
25283
/*
25284
 * code adapted from lua/lstrlib.c http://lua.org
25285
 */
25286
25287
232
#define MAX_ITEM  256
25288
232
#define FMT_FLAGS "-+ #0"
25289
116
#define FMT_REPLACE_INTTYPES "diouxX"
25290
#define MAX_FORMAT 32
25291
25292
struct FmtMapping {
25293
    char c;
25294
    const char *mapping;
25295
};
25296
25297
/* Janet uses fixed width integer types for most things, so map
25298
 * format specifiers to these fixed sizes */
25299
static const struct FmtMapping format_mappings[] = {
25300
    {'d', PRId64},
25301
    {'i', PRIi64},
25302
    {'o', PRIo64},
25303
    {'u', PRIu64},
25304
    {'x', PRIx64},
25305
    {'X', PRIX64},
25306
};
25307
25308
116
static const char *get_fmt_mapping(char c) {
25309
116
    for (size_t i = 0; i < (sizeof(format_mappings) / sizeof(struct FmtMapping)); i++) {
25310
116
        if (format_mappings[i].c == c)
25311
116
            return format_mappings[i].mapping;
25312
116
    }
25313
0
    janet_assert(0, "bad format mapping");
25314
0
}
25315
25316
static const char *scanformat(
25317
    const char *strfrmt,
25318
    char *form,
25319
    char width[3],
25320
116
    char precision[3]) {
25321
116
    const char *p = strfrmt;
25322
25323
    /* Parse strfrmt */
25324
116
    memset(width, '\0', 3);
25325
116
    memset(precision, '\0', 3);
25326
116
    while (*p != '\0' && strchr(FMT_FLAGS, *p) != NULL)
25327
0
        p++; /* skip flags */
25328
116
    if ((size_t)(p - strfrmt) >= sizeof(FMT_FLAGS)) janet_panic("invalid format (repeated flags)");
25329
116
    if (isdigit((int)(*p)))
25330
0
        width[0] = *p++; /* skip width */
25331
116
    if (isdigit((int)(*p)))
25332
0
        width[1] = *p++; /* (2 digits at most) */
25333
116
    if (*p == '.') {
25334
0
        p++;
25335
0
        if (isdigit((int)(*p)))
25336
0
            precision[0] = *p++; /* skip precision */
25337
0
        if (isdigit((int)(*p)))
25338
0
            precision[1] = *p++; /* (2 digits at most) */
25339
0
    }
25340
116
    if (isdigit((int)(*p)))
25341
0
        janet_panic("invalid format (width or precision too long)");
25342
25343
    /* Write to form - replace characters with fixed size stuff */
25344
116
    *(form++) = '%';
25345
116
    const char *p2 = strfrmt;
25346
232
    while (p2 <= p) {
25347
116
        char *loc = strchr(FMT_REPLACE_INTTYPES, *p2);
25348
116
        if (loc != NULL && *loc != '\0') {
25349
116
            const char *mapping = get_fmt_mapping(*p2++);
25350
116
            size_t len = strlen(mapping);
25351
116
            strcpy(form, mapping);
25352
116
            form += len;
25353
116
        } else {
25354
0
            *(form++) = *(p2++);
25355
0
        }
25356
116
    }
25357
116
    *form = '\0';
25358
25359
116
    return p;
25360
116
}
25361
25362
58
void janet_formatbv(JanetBuffer *b, const char *format, va_list args) {
25363
58
    const char *format_end = format + strlen(format);
25364
58
    const char *c = format;
25365
58
    int32_t startlen = b->count;
25366
1.62k
    while (c < format_end) {
25367
1.56k
        if (*c != '%') {
25368
1.45k
            janet_buffer_push_u8(b, (uint8_t) *c++);
25369
1.45k
        } else if (*++c == '%') {
25370
0
            janet_buffer_push_u8(b, (uint8_t) *c++);
25371
116
        } else {
25372
116
            char form[MAX_FORMAT], item[MAX_ITEM];
25373
116
            char width[3], precision[3];
25374
116
            int nb = 0; /* number of bytes in added item */
25375
116
            c = scanformat(c, form, width, precision);
25376
116
            switch (*c++) {
25377
0
                case 'c': {
25378
0
                    int n = va_arg(args, long);
25379
0
                    nb = snprintf(item, MAX_ITEM, form, n);
25380
0
                    break;
25381
0
                }
25382
116
                case 'd':
25383
116
                case 'i': {
25384
116
                    int64_t n = va_arg(args, int);
25385
116
                    nb = snprintf(item, MAX_ITEM, form, n);
25386
116
                    break;
25387
116
                }
25388
0
                case 'x':
25389
0
                case 'X':
25390
0
                case 'o':
25391
0
                case 'u': {
25392
0
                    uint64_t n = va_arg(args, unsigned int);
25393
0
                    nb = snprintf(item, MAX_ITEM, form, n);
25394
0
                    break;
25395
0
                }
25396
0
                case 'a':
25397
0
                case 'A':
25398
0
                case 'e':
25399
0
                case 'E':
25400
0
                case 'f':
25401
0
                case 'g':
25402
0
                case 'G': {
25403
0
                    double d = va_arg(args, double);
25404
0
                    nb = snprintf(item, MAX_ITEM, form, d);
25405
0
                    break;
25406
0
                }
25407
0
                case 's':
25408
0
                case 'S': {
25409
0
                    const char *str = va_arg(args, const char *);
25410
0
                    int32_t len = c[-1] == 's'
25411
0
                                  ? (int32_t) strlen(str)
25412
0
                                  : janet_string_length((JanetString) str);
25413
0
                    if (form[2] == '\0')
25414
0
                        janet_buffer_push_bytes(b, (const uint8_t *) str, len);
25415
0
                    else {
25416
0
                        if (len != (int32_t) strlen((const char *) str))
25417
0
                            janet_panic("string contains zeros");
25418
0
                        if (!strchr(form, '.') && len >= 100) {
25419
0
                            janet_panic("no precision and string is too long to be formatted");
25420
0
                        } else {
25421
0
                            nb = snprintf(item, MAX_ITEM, form, str);
25422
0
                        }
25423
0
                    }
25424
0
                    break;
25425
0
                }
25426
0
                case 'V':
25427
0
                    janet_to_string_b(b, va_arg(args, Janet));
25428
0
                    break;
25429
0
                case 'v':
25430
0
                    janet_description_b(b, va_arg(args, Janet));
25431
0
                    break;
25432
0
                case 't':
25433
0
                    janet_buffer_push_cstring(b, typestr(va_arg(args, Janet)));
25434
0
                    break;
25435
0
                case 'T': {
25436
0
                    int types = va_arg(args, long);
25437
0
                    pushtypes(b, types);
25438
0
                    break;
25439
0
                }
25440
0
                case 'M':
25441
0
                case 'm':
25442
0
                case 'N':
25443
0
                case 'n':
25444
0
                case 'Q':
25445
0
                case 'q':
25446
0
                case 'P':
25447
0
                case 'p': { /* janet pretty , precision = depth */
25448
0
                    int depth = atoi(precision);
25449
0
                    if (depth < 1) depth = JANET_RECURSION_GUARD;
25450
0
                    char d = c[-1];
25451
0
                    int has_color = (d == 'P') || (d == 'Q') || (d == 'M') || (d == 'N');
25452
0
                    int has_oneline = (d == 'Q') || (d == 'q') || (d == 'N') || (d == 'n');
25453
0
                    int has_notrunc = (d == 'M') || (d == 'm') || (d == 'N') || (d == 'n');
25454
0
                    int flags = 0;
25455
0
                    flags |= has_color ? JANET_PRETTY_COLOR : 0;
25456
0
                    flags |= has_oneline ? JANET_PRETTY_ONELINE : 0;
25457
0
                    flags |= has_notrunc ? JANET_PRETTY_NOTRUNC : 0;
25458
0
                    janet_pretty_(b, depth, flags, va_arg(args, Janet), startlen);
25459
0
                    break;
25460
0
                }
25461
0
                case 'j': {
25462
0
                    int depth = atoi(precision);
25463
0
                    if (depth < 1)
25464
0
                        depth = JANET_RECURSION_GUARD;
25465
0
                    janet_jdn_(b, depth, va_arg(args, Janet), startlen);
25466
0
                    break;
25467
0
                }
25468
0
                default: {
25469
                    /* also treat cases 'nLlh' */
25470
0
                    janet_panicf("invalid conversion '%s' to 'format'",
25471
0
                                 form);
25472
0
                }
25473
116
            }
25474
116
            if (nb >= MAX_ITEM)
25475
0
                janet_panic("format buffer overflow");
25476
116
            if (nb > 0)
25477
116
                janet_buffer_push_bytes(b, (uint8_t *) item, nb);
25478
116
        }
25479
25480
1.56k
    }
25481
58
}
25482
25483
/* Helper function for formatting strings. Useful for generating error messages and the like.
25484
 * Similar to printf, but specialized for operating with janet. */
25485
0
const uint8_t *janet_formatc(const char *format, ...) {
25486
0
    va_list args;
25487
0
    const uint8_t *ret;
25488
0
    JanetBuffer buffer;
25489
0
    int32_t len = 0;
25490
25491
    /* Calculate length, init buffer and args */
25492
0
    while (format[len]) len++;
25493
0
    janet_buffer_init(&buffer, len);
25494
0
    va_start(args, format);
25495
25496
    /* Run format */
25497
0
    janet_formatbv(&buffer, format, args);
25498
25499
    /* Iterate length */
25500
0
    va_end(args);
25501
25502
0
    ret = janet_string(buffer.data, buffer.count);
25503
0
    janet_buffer_deinit(&buffer);
25504
0
    return ret;
25505
0
}
25506
25507
58
JanetBuffer *janet_formatb(JanetBuffer *buffer, const char *format, ...) {
25508
58
    va_list args;
25509
58
    va_start(args, format);
25510
58
    janet_formatbv(buffer, format, args);
25511
58
    va_end(args);
25512
58
    return buffer;
25513
58
}
25514
25515
/* Shared implementation between string/format and
25516
 * buffer/format */
25517
void janet_buffer_format(
25518
    JanetBuffer *b,
25519
    const char *strfrmt,
25520
    int32_t argstart,
25521
    int32_t argc,
25522
0
    Janet *argv) {
25523
0
    size_t sfl = strlen(strfrmt);
25524
0
    const char *strfrmt_end = strfrmt + sfl;
25525
0
    int32_t arg = argstart;
25526
0
    int32_t startlen = b->count;
25527
0
    while (strfrmt < strfrmt_end) {
25528
0
        if (*strfrmt != '%')
25529
0
            janet_buffer_push_u8(b, (uint8_t) * strfrmt++);
25530
0
        else if (*++strfrmt == '%')
25531
0
            janet_buffer_push_u8(b, (uint8_t) * strfrmt++); /* %% */
25532
0
        else { /* format item */
25533
0
            char form[MAX_FORMAT], item[MAX_ITEM];
25534
0
            char width[3], precision[3];
25535
0
            int nb = 0; /* number of bytes in added item */
25536
0
            if (++arg >= argc)
25537
0
                janet_panic("not enough values for format");
25538
0
            strfrmt = scanformat(strfrmt, form, width, precision);
25539
0
            switch (*strfrmt++) {
25540
0
                case 'c': {
25541
0
                    nb = snprintf(item, MAX_ITEM, form, (int)
25542
0
                                  janet_getinteger(argv, arg));
25543
0
                    break;
25544
0
                }
25545
0
                case 'd':
25546
0
                case 'i': {
25547
0
                    int64_t n = janet_getinteger64(argv, arg);
25548
0
                    nb = snprintf(item, MAX_ITEM, form, n);
25549
0
                    break;
25550
0
                }
25551
0
                case 'x':
25552
0
                case 'X':
25553
0
                case 'o':
25554
0
                case 'u': {
25555
0
                    uint64_t n = janet_getuinteger64(argv, arg);
25556
0
                    nb = snprintf(item, MAX_ITEM, form, n);
25557
0
                    break;
25558
0
                }
25559
0
                case 'a':
25560
0
                case 'A':
25561
0
                case 'e':
25562
0
                case 'E':
25563
0
                case 'f':
25564
0
                case 'g':
25565
0
                case 'G': {
25566
0
                    double d = janet_getnumber(argv, arg);
25567
0
                    nb = snprintf(item, MAX_ITEM, form, d);
25568
0
                    break;
25569
0
                }
25570
0
                case 's': {
25571
0
                    JanetByteView bytes = janet_getbytes(argv, arg);
25572
0
                    const uint8_t *s = bytes.bytes;
25573
0
                    int32_t l = bytes.len;
25574
0
                    if (form[2] == '\0')
25575
0
                        janet_buffer_push_bytes(b, s, l);
25576
0
                    else {
25577
0
                        if (l != (int32_t) strlen((const char *) s))
25578
0
                            janet_panic("string contains zeros");
25579
0
                        if (!strchr(form, '.') && l >= 100) {
25580
0
                            janet_panic("no precision and string is too long to be formatted");
25581
0
                        } else {
25582
0
                            nb = snprintf(item, MAX_ITEM, form, s);
25583
0
                        }
25584
0
                    }
25585
0
                    break;
25586
0
                }
25587
0
                case 'V': {
25588
0
                    janet_to_string_b(b, argv[arg]);
25589
0
                    break;
25590
0
                }
25591
0
                case 'v': {
25592
0
                    janet_description_b(b, argv[arg]);
25593
0
                    break;
25594
0
                }
25595
0
                case 't':
25596
0
                    janet_buffer_push_cstring(b, typestr(argv[arg]));
25597
0
                    break;
25598
0
                case 'M':
25599
0
                case 'm':
25600
0
                case 'N':
25601
0
                case 'n':
25602
0
                case 'Q':
25603
0
                case 'q':
25604
0
                case 'P':
25605
0
                case 'p': { /* janet pretty , precision = depth */
25606
0
                    int depth = atoi(precision);
25607
0
                    if (depth < 1) depth = JANET_RECURSION_GUARD;
25608
0
                    char d = strfrmt[-1];
25609
0
                    int has_color = (d == 'P') || (d == 'Q') || (d == 'M') || (d == 'N');
25610
0
                    int has_oneline = (d == 'Q') || (d == 'q') || (d == 'N') || (d == 'n');
25611
0
                    int has_notrunc = (d == 'M') || (d == 'm') || (d == 'N') || (d == 'n');
25612
0
                    int flags = 0;
25613
0
                    flags |= has_color ? JANET_PRETTY_COLOR : 0;
25614
0
                    flags |= has_oneline ? JANET_PRETTY_ONELINE : 0;
25615
0
                    flags |= has_notrunc ? JANET_PRETTY_NOTRUNC : 0;
25616
0
                    janet_pretty_(b, depth, flags, argv[arg], startlen);
25617
0
                    break;
25618
0
                }
25619
0
                case 'j': {
25620
0
                    int depth = atoi(precision);
25621
0
                    if (depth < 1)
25622
0
                        depth = JANET_RECURSION_GUARD;
25623
0
                    janet_jdn_(b, depth, argv[arg], startlen);
25624
0
                    break;
25625
0
                }
25626
0
                default: {
25627
                    /* also treat cases 'nLlh' */
25628
0
                    janet_panicf("invalid conversion '%s' to 'format'",
25629
0
                                 form);
25630
0
                }
25631
0
            }
25632
0
            if (nb >= MAX_ITEM)
25633
0
                janet_panic("format buffer overflow");
25634
0
            if (nb > 0)
25635
0
                janet_buffer_push_bytes(b, (uint8_t *) item, nb);
25636
0
        }
25637
0
    }
25638
0
}
25639
25640
#undef HEX
25641
#undef BUFSIZE
25642
25643
25644
/* src/core/regalloc.c */
25645
#line 0 "src/core/regalloc.c"
25646
25647
/*
25648
* Copyright (c) 2023 Calvin Rose
25649
*
25650
* Permission is hereby granted, free of charge, to any person obtaining a copy
25651
* of this software and associated documentation files (the "Software"), to
25652
* deal in the Software without restriction, including without limitation the
25653
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
25654
* sell copies of the Software, and to permit persons to whom the Software is
25655
* furnished to do so, subject to the following conditions:
25656
*
25657
* The above copyright notice and this permission notice shall be included in
25658
* all copies or substantial portions of the Software.
25659
*
25660
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
25661
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25662
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25663
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25664
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
25665
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
25666
* IN THE SOFTWARE.
25667
*/
25668
25669
#ifndef JANET_AMALG
25670
#include "features.h"
25671
#include <janet.h>
25672
#include "regalloc.h"
25673
#include "util.h"
25674
#endif
25675
25676
/* The JanetRegisterAllocator is really just a bitset. */
25677
25678
0
void janetc_regalloc_init(JanetcRegisterAllocator *ra) {
25679
0
    ra->chunks = NULL;
25680
0
    ra->count = 0;
25681
0
    ra->capacity = 0;
25682
0
    ra->max = 0;
25683
0
    ra->regtemps = 0;
25684
0
}
25685
25686
0
void janetc_regalloc_deinit(JanetcRegisterAllocator *ra) {
25687
0
    janet_free(ra->chunks);
25688
0
}
25689
25690
/* Fallbacks for when ctz not available */
25691
#ifdef __GNUC__
25692
#define count_trailing_zeros(x) __builtin_ctz(x)
25693
0
#define count_trailing_ones(x) __builtin_ctz(~(x))
25694
#else
25695
static int32_t count_trailing_ones(uint32_t x) {
25696
    int32_t ret = 0;
25697
    while (x & 1) {
25698
        ret++;
25699
        x >>= 1;
25700
    }
25701
    return ret;
25702
}
25703
#define count_trailing_zeros(x) count_trailing_ones(~(x))
25704
#endif
25705
25706
/* Get ith bit */
25707
0
#define ithbit(I) ((uint32_t)1 << (I))
25708
25709
/* Get N bits */
25710
#define nbits(N) (ithbit(N) - 1)
25711
25712
/* Copy a register allocator */
25713
0
void janetc_regalloc_clone(JanetcRegisterAllocator *dest, JanetcRegisterAllocator *src) {
25714
0
    size_t size;
25715
0
    dest->count = src->count;
25716
0
    dest->capacity = src->capacity;
25717
0
    dest->max = src->max;
25718
0
    size = sizeof(uint32_t) * (size_t) dest->capacity;
25719
0
    dest->regtemps = 0;
25720
0
    if (size) {
25721
0
        dest->chunks = janet_malloc(size);
25722
0
        if (!dest->chunks) {
25723
0
            JANET_OUT_OF_MEMORY;
25724
0
        }
25725
0
        memcpy(dest->chunks, src->chunks, size);
25726
0
    } else {
25727
0
        dest->chunks = NULL;
25728
0
    }
25729
0
}
25730
25731
/* Allocate one more chunk in chunks */
25732
0
static void pushchunk(JanetcRegisterAllocator *ra) {
25733
    /* Registers 240-255 are always allocated (reserved) */
25734
0
    uint32_t chunk = ra->count == 7 ? 0xFFFF0000 : 0;
25735
0
    int32_t newcount = ra->count + 1;
25736
0
    if (newcount > ra->capacity) {
25737
0
        int32_t newcapacity = newcount * 2;
25738
0
        ra->chunks = janet_realloc(ra->chunks, (size_t) newcapacity * sizeof(uint32_t));
25739
0
        if (!ra->chunks) {
25740
0
            JANET_OUT_OF_MEMORY;
25741
0
        }
25742
0
        ra->capacity = newcapacity;
25743
0
    }
25744
0
    ra->chunks[ra->count] = chunk;
25745
0
    ra->count = newcount;
25746
0
}
25747
25748
/* Reallocate a given register */
25749
0
void janetc_regalloc_touch(JanetcRegisterAllocator *ra, int32_t reg) {
25750
0
    int32_t chunk = reg >> 5;
25751
0
    int32_t bit = reg & 0x1F;
25752
0
    while (chunk >= ra->count) pushchunk(ra);
25753
0
    ra->chunks[chunk] |= ithbit(bit);
25754
0
}
25755
25756
/* Allocate one register. */
25757
0
int32_t janetc_regalloc_1(JanetcRegisterAllocator *ra) {
25758
    /* Get the nth bit in the array */
25759
0
    int32_t bit, chunk, nchunks, reg;
25760
0
    bit = -1;
25761
0
    nchunks = ra->count;
25762
0
    for (chunk = 0; chunk < nchunks; chunk++) {
25763
0
        uint32_t block = ra->chunks[chunk];
25764
0
        if (block == 0xFFFFFFFF) continue;
25765
0
        bit = count_trailing_ones(block);
25766
0
        break;
25767
0
    }
25768
    /* No reg found */
25769
0
    if (bit == -1) {
25770
0
        pushchunk(ra);
25771
0
        bit = 0;
25772
0
        chunk = nchunks;
25773
0
    }
25774
    /* set the bit at index bit in chunk */
25775
0
    ra->chunks[chunk] |= ithbit(bit);
25776
0
    reg = (chunk << 5) + bit;
25777
0
    if (reg > ra->max)
25778
0
        ra->max = reg;
25779
0
    return reg;
25780
0
}
25781
25782
/* Free a register. The register must have been previously allocated
25783
 * without being freed. */
25784
0
void janetc_regalloc_free(JanetcRegisterAllocator *ra, int32_t reg) {
25785
0
    int32_t chunk = reg >> 5;
25786
0
    int32_t bit = reg & 0x1F;
25787
0
    ra->chunks[chunk] &= ~ithbit(bit);
25788
0
}
25789
25790
/* Check if a register is set. */
25791
0
int janetc_regalloc_check(JanetcRegisterAllocator *ra, int32_t reg) {
25792
0
    int32_t chunk = reg >> 5;
25793
0
    int32_t bit = reg & 0x1F;
25794
0
    while (chunk >= ra->count) pushchunk(ra);
25795
0
    return !!(ra->chunks[chunk] & ithbit(bit));
25796
0
}
25797
25798
/* Get a register that will fit in 8 bits (< 256). Do not call this
25799
 * twice with the same value of nth without calling janetc_regalloc_free
25800
 * on the returned register before. */
25801
0
int32_t janetc_regalloc_temp(JanetcRegisterAllocator *ra, JanetcRegisterTemp nth) {
25802
0
    int32_t oldmax = ra->max;
25803
0
    if (ra->regtemps & (1 << nth)) {
25804
0
        JANET_EXIT("regtemp already allocated");
25805
0
    }
25806
0
    ra->regtemps |= 1 << nth;
25807
0
    int32_t reg = janetc_regalloc_1(ra);
25808
0
    if (reg > 0xFF) {
25809
0
        reg = 0xF0 + nth;
25810
0
        ra->max = (reg > oldmax) ? reg : oldmax;
25811
0
    }
25812
0
    return reg;
25813
0
}
25814
25815
0
void janetc_regalloc_freetemp(JanetcRegisterAllocator *ra, int32_t reg, JanetcRegisterTemp nth) {
25816
0
    ra->regtemps &= ~(1 << nth);
25817
0
    if (reg < 0xF0)
25818
0
        janetc_regalloc_free(ra, reg);
25819
0
}
25820
25821
25822
/* src/core/run.c */
25823
#line 0 "src/core/run.c"
25824
25825
/*
25826
* Copyright (c) 2023 Calvin Rose
25827
*
25828
* Permission is hereby granted, free of charge, to any person obtaining a copy
25829
* of this software and associated documentation files (the "Software"), to
25830
* deal in the Software without restriction, including without limitation the
25831
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
25832
* sell copies of the Software, and to permit persons to whom the Software is
25833
* furnished to do so, subject to the following conditions:
25834
*
25835
* The above copyright notice and this permission notice shall be included in
25836
* all copies or substantial portions of the Software.
25837
*
25838
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
25839
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25840
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25841
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25842
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
25843
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
25844
* IN THE SOFTWARE.
25845
*/
25846
25847
#ifndef JANET_AMALG
25848
#include "features.h"
25849
#include <janet.h>
25850
#include "state.h"
25851
#endif
25852
25853
/* Run a string */
25854
0
int janet_dobytes(JanetTable *env, const uint8_t *bytes, int32_t len, const char *sourcePath, Janet *out) {
25855
0
    JanetParser parser;
25856
0
    int errflags = 0, done = 0;
25857
0
    int32_t index = 0;
25858
0
    Janet ret = janet_wrap_nil();
25859
0
    const uint8_t *where = sourcePath ? janet_cstring(sourcePath) : NULL;
25860
25861
0
    if (where) janet_gcroot(janet_wrap_string(where));
25862
0
    if (NULL == sourcePath) sourcePath = "<unknown>";
25863
0
    janet_parser_init(&parser);
25864
25865
    /* While we haven't seen an error */
25866
0
    while (!done) {
25867
25868
        /* Evaluate parsed values */
25869
0
        while (janet_parser_has_more(&parser)) {
25870
0
            Janet form = janet_parser_produce(&parser);
25871
0
            JanetCompileResult cres = janet_compile(form, env, where);
25872
0
            if (cres.status == JANET_COMPILE_OK) {
25873
0
                JanetFunction *f = janet_thunk(cres.funcdef);
25874
0
                JanetFiber *fiber = janet_fiber(f, 64, 0, NULL);
25875
0
                fiber->env = env;
25876
0
                JanetSignal status = janet_continue(fiber, janet_wrap_nil(), &ret);
25877
0
                if (status != JANET_SIGNAL_OK && status != JANET_SIGNAL_EVENT) {
25878
0
                    janet_stacktrace_ext(fiber, ret, "");
25879
0
                    errflags |= 0x01;
25880
0
                    done = 1;
25881
0
                }
25882
0
            } else {
25883
0
                ret = janet_wrap_string(cres.error);
25884
0
                if (cres.macrofiber) {
25885
0
                    janet_eprintf("compile error in %s: ", sourcePath);
25886
0
                    janet_stacktrace_ext(cres.macrofiber, ret, "");
25887
0
                } else {
25888
0
                    janet_eprintf("compile error in %s: %s\n", sourcePath,
25889
0
                                  (const char *)cres.error);
25890
0
                }
25891
0
                errflags |= 0x02;
25892
0
                done = 1;
25893
0
            }
25894
0
        }
25895
25896
0
        if (done) break;
25897
25898
        /* Dispatch based on parse state */
25899
0
        switch (janet_parser_status(&parser)) {
25900
0
            case JANET_PARSE_DEAD:
25901
0
                done = 1;
25902
0
                break;
25903
0
            case JANET_PARSE_ERROR: {
25904
0
                const char *e = janet_parser_error(&parser);
25905
0
                errflags |= 0x04;
25906
0
                ret = janet_cstringv(e);
25907
0
                int32_t line = (int32_t) parser.line;
25908
0
                int32_t col = (int32_t) parser.column;
25909
0
                janet_eprintf("%s:%d:%d: parse error: %s\n", sourcePath, line, col, e);
25910
0
                done = 1;
25911
0
                break;
25912
0
            }
25913
0
            case JANET_PARSE_ROOT:
25914
0
            case JANET_PARSE_PENDING:
25915
0
                if (index >= len) {
25916
0
                    janet_parser_eof(&parser);
25917
0
                } else {
25918
0
                    janet_parser_consume(&parser, bytes[index++]);
25919
0
                }
25920
0
                break;
25921
0
        }
25922
25923
0
    }
25924
25925
    /* Clean up and return errors */
25926
0
    janet_parser_deinit(&parser);
25927
0
    if (where) janet_gcunroot(janet_wrap_string(where));
25928
0
#ifdef JANET_EV
25929
    /* Enter the event loop if we are not already in it */
25930
0
    if (janet_vm.stackn == 0) {
25931
0
        janet_gcroot(ret);
25932
0
        janet_loop();
25933
0
        janet_gcunroot(ret);
25934
0
    }
25935
0
#endif
25936
0
    if (out) *out = ret;
25937
0
    return errflags;
25938
0
}
25939
25940
0
int janet_dostring(JanetTable *env, const char *str, const char *sourcePath, Janet *out) {
25941
0
    int32_t len = 0;
25942
0
    while (str[len]) ++len;
25943
0
    return janet_dobytes(env, (const uint8_t *)str, len, sourcePath, out);
25944
0
}
25945
25946
/* Run a fiber to completion (use event loop if enabled). Return the status. */
25947
0
int janet_loop_fiber(JanetFiber *fiber) {
25948
0
    int status;
25949
0
#ifdef JANET_EV
25950
0
    janet_schedule(fiber, janet_wrap_nil());
25951
0
    janet_loop();
25952
0
    status = janet_fiber_status(fiber);
25953
#else
25954
    Janet out;
25955
    status = janet_continue(fiber, janet_wrap_nil(), &out);
25956
    if (status != JANET_SIGNAL_OK && status != JANET_SIGNAL_EVENT) {
25957
        janet_stacktrace_ext(fiber, out, "");
25958
    }
25959
#endif
25960
0
    return status;
25961
0
}
25962
25963
25964
/* src/core/specials.c */
25965
#line 0 "src/core/specials.c"
25966
25967
/*
25968
* Copyright (c) 2023 Calvin Rose
25969
*
25970
* Permission is hereby granted, free of charge, to any person obtaining a copy
25971
* of this software and associated documentation files (the "Software"), to
25972
* deal in the Software without restriction, including without limitation the
25973
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
25974
* sell copies of the Software, and to permit persons to whom the Software is
25975
* furnished to do so, subject to the following conditions:
25976
*
25977
* The above copyright notice and this permission notice shall be included in
25978
* all copies or substantial portions of the Software.
25979
*
25980
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
25981
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25982
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25983
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25984
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
25985
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
25986
* IN THE SOFTWARE.
25987
*/
25988
25989
#ifndef JANET_AMALG
25990
#include "features.h"
25991
#include <janet.h>
25992
#include "compile.h"
25993
#include "util.h"
25994
#include "vector.h"
25995
#include "emit.h"
25996
#endif
25997
25998
0
static JanetSlot janetc_quote(JanetFopts opts, int32_t argn, const Janet *argv) {
25999
0
    if (argn != 1) {
26000
0
        janetc_cerror(opts.compiler, "expected 1 argument to quote");
26001
0
        return janetc_cslot(janet_wrap_nil());
26002
0
    }
26003
0
    return janetc_cslot(argv[0]);
26004
0
}
26005
26006
0
static JanetSlot janetc_splice(JanetFopts opts, int32_t argn, const Janet *argv) {
26007
0
    JanetSlot ret;
26008
0
    if (!(opts.flags & JANET_FOPTS_ACCEPT_SPLICE)) {
26009
0
        janetc_cerror(opts.compiler, "splice can only be used in function parameters and data constructors, it has no effect here");
26010
0
        return janetc_cslot(janet_wrap_nil());
26011
0
    }
26012
0
    if (argn != 1) {
26013
0
        janetc_cerror(opts.compiler, "expected 1 argument to splice");
26014
0
        return janetc_cslot(janet_wrap_nil());
26015
0
    }
26016
0
    ret = janetc_value(opts, argv[0]);
26017
0
    ret.flags |= JANET_SLOT_SPLICED;
26018
0
    return ret;
26019
0
}
26020
26021
0
static JanetSlot qq_slots(JanetFopts opts, JanetSlot *slots, int makeop) {
26022
0
    JanetSlot target = janetc_gettarget(opts);
26023
0
    janetc_pushslots(opts.compiler, slots);
26024
0
    janetc_freeslots(opts.compiler, slots);
26025
0
    janetc_emit_s(opts.compiler, makeop, target, 1);
26026
0
    return target;
26027
0
}
26028
26029
0
static JanetSlot quasiquote(JanetFopts opts, Janet x, int depth, int level) {
26030
0
    if (depth == 0) {
26031
0
        janetc_cerror(opts.compiler, "quasiquote too deeply nested");
26032
0
        return janetc_cslot(janet_wrap_nil());
26033
0
    }
26034
0
    JanetSlot *slots = NULL;
26035
0
    JanetFopts subopts = opts;
26036
0
    subopts.flags &= ~JANET_FOPTS_HINT;
26037
0
    switch (janet_type(x)) {
26038
0
        default:
26039
0
            return janetc_cslot(x);
26040
0
        case JANET_TUPLE: {
26041
0
            int32_t i, len;
26042
0
            const Janet *tup = janet_unwrap_tuple(x);
26043
0
            len = janet_tuple_length(tup);
26044
0
            if (len > 1 && janet_checktype(tup[0], JANET_SYMBOL)) {
26045
0
                const uint8_t *head = janet_unwrap_symbol(tup[0]);
26046
0
                if (!janet_cstrcmp(head, "unquote")) {
26047
0
                    if (level == 0) {
26048
0
                        JanetFopts subopts = janetc_fopts_default(opts.compiler);
26049
0
                        subopts.flags |= JANET_FOPTS_ACCEPT_SPLICE;
26050
0
                        return janetc_value(subopts, tup[1]);
26051
0
                    } else {
26052
0
                        level--;
26053
0
                    }
26054
0
                } else if (!janet_cstrcmp(head, "quasiquote")) {
26055
0
                    level++;
26056
0
                }
26057
0
            }
26058
0
            for (i = 0; i < len; i++)
26059
0
                janet_v_push(slots, quasiquote(subopts, tup[i], depth - 1, level));
26060
0
            return qq_slots(opts, slots, (janet_tuple_flag(tup) & JANET_TUPLE_FLAG_BRACKETCTOR)
26061
0
                            ? JOP_MAKE_BRACKET_TUPLE
26062
0
                            : JOP_MAKE_TUPLE);
26063
0
        }
26064
0
        case JANET_ARRAY: {
26065
0
            int32_t i;
26066
0
            JanetArray *array = janet_unwrap_array(x);
26067
0
            for (i = 0; i < array->count; i++)
26068
0
                janet_v_push(slots, quasiquote(subopts, array->data[i], depth - 1, level));
26069
0
            return qq_slots(opts, slots, JOP_MAKE_ARRAY);
26070
0
        }
26071
0
        case JANET_TABLE:
26072
0
        case JANET_STRUCT: {
26073
0
            const JanetKV *kv = NULL, *kvs = NULL;
26074
0
            int32_t len, cap = 0;
26075
0
            janet_dictionary_view(x, &kvs, &len, &cap);
26076
0
            while ((kv = janet_dictionary_next(kvs, cap, kv))) {
26077
0
                JanetSlot key = quasiquote(subopts, kv->key, depth - 1, level);
26078
0
                JanetSlot value =  quasiquote(subopts, kv->value, depth - 1, level);
26079
0
                key.flags &= ~JANET_SLOT_SPLICED;
26080
0
                value.flags &= ~JANET_SLOT_SPLICED;
26081
0
                janet_v_push(slots, key);
26082
0
                janet_v_push(slots, value);
26083
0
            }
26084
0
            return qq_slots(opts, slots,
26085
0
                            janet_checktype(x, JANET_TABLE) ? JOP_MAKE_TABLE : JOP_MAKE_STRUCT);
26086
0
        }
26087
0
    }
26088
0
}
26089
26090
0
static JanetSlot janetc_quasiquote(JanetFopts opts, int32_t argn, const Janet *argv) {
26091
0
    if (argn != 1) {
26092
0
        janetc_cerror(opts.compiler, "expected 1 argument to quasiquote");
26093
0
        return janetc_cslot(janet_wrap_nil());
26094
0
    }
26095
0
    return quasiquote(opts, argv[0], JANET_RECURSION_GUARD, 0);
26096
0
}
26097
26098
0
static JanetSlot janetc_unquote(JanetFopts opts, int32_t argn, const Janet *argv) {
26099
0
    (void) argn;
26100
0
    (void) argv;
26101
0
    janetc_cerror(opts.compiler, "cannot use unquote here");
26102
0
    return janetc_cslot(janet_wrap_nil());
26103
0
}
26104
26105
/* Perform destructuring. Be careful to
26106
 * keep the order registers are freed.
26107
 * Returns if the slot 'right' can be freed. */
26108
static int destructure(JanetCompiler *c,
26109
                       Janet left,
26110
                       JanetSlot right,
26111
                       int (*leaf)(JanetCompiler *c,
26112
                                   const uint8_t *sym,
26113
                                   JanetSlot s,
26114
                                   JanetTable *attr),
26115
0
                       JanetTable *attr) {
26116
0
    switch (janet_type(left)) {
26117
0
        default:
26118
0
            janetc_error(c, janet_formatc("unexpected type in destruction, got %v", left));
26119
0
            return 1;
26120
0
        case JANET_SYMBOL:
26121
            /* Leaf, assign right to left */
26122
0
            return leaf(c, janet_unwrap_symbol(left), right, attr);
26123
0
        case JANET_TUPLE:
26124
0
        case JANET_ARRAY: {
26125
0
            int32_t len = 0;
26126
0
            const Janet *values = NULL;
26127
0
            janet_indexed_view(left, &values, &len);
26128
0
            for (int32_t i = 0; i < len; i++) {
26129
0
                JanetSlot nextright = janetc_farslot(c);
26130
0
                Janet subval = values[i];
26131
26132
0
                if (janet_checktype(subval, JANET_SYMBOL) && !janet_cstrcmp(janet_unwrap_symbol(subval), "&")) {
26133
0
                    if (i + 1 >= len) {
26134
0
                        janetc_cerror(c, "expected symbol following '& in destructuring pattern");
26135
0
                        return 1;
26136
0
                    }
26137
26138
0
                    if (i + 2 < len) {
26139
0
                        int32_t num_extra = len - i - 1;
26140
0
                        Janet *extra = janet_tuple_begin(num_extra);
26141
0
                        janet_tuple_flag(extra) |= JANET_TUPLE_FLAG_BRACKETCTOR;
26142
26143
0
                        for (int32_t j = 0; j < num_extra; ++j) {
26144
0
                            extra[j] = values[j + i + 1];
26145
0
                        }
26146
26147
0
                        janetc_error(c, janet_formatc("expected a single symbol follow '& in destructuring pattern, found %q", janet_wrap_tuple(janet_tuple_end(extra))));
26148
0
                        return 1;
26149
0
                    }
26150
26151
26152
0
                    if (!janet_checktype(values[i + 1], JANET_SYMBOL)) {
26153
0
                        janetc_error(c, janet_formatc("expected symbol following '& in destructuring pattern, found %q", values[i + 1]));
26154
0
                        return 1;
26155
0
                    }
26156
26157
0
                    JanetSlot argi = janetc_farslot(c);
26158
0
                    JanetSlot arg  = janetc_farslot(c);
26159
0
                    JanetSlot len  = janetc_farslot(c);
26160
26161
0
                    janetc_emit_si(c, JOP_LOAD_INTEGER, argi, i, 0);
26162
0
                    janetc_emit_ss(c, JOP_LENGTH, len, right, 0);
26163
26164
                    /* loop condition - reuse arg slot for the condition result */
26165
0
                    int32_t label_loop_start = janetc_emit_sss(c, JOP_LESS_THAN, arg, argi, len, 0);
26166
0
                    int32_t label_loop_cond_jump = janetc_emit_si(c, JOP_JUMP_IF_NOT, arg, 0, 0);
26167
26168
                    /* loop body */
26169
0
                    janetc_emit_sss(c, JOP_GET, arg, right, argi, 0);
26170
0
                    janetc_emit_s(c, JOP_PUSH, arg, 0);
26171
0
                    janetc_emit_ssi(c, JOP_ADD_IMMEDIATE, argi, argi, 1, 0);
26172
26173
                    /* loop - jump back to the start of the loop */
26174
0
                    int32_t label_loop_loop = janet_v_count(c->buffer);
26175
0
                    janetc_emit(c, JOP_JUMP);
26176
0
                    int32_t label_loop_exit = janet_v_count(c->buffer);
26177
26178
                    /* avoid shifting negative numbers */
26179
0
                    c->buffer[label_loop_cond_jump] |= (uint32_t)(label_loop_exit - label_loop_cond_jump) << 16;
26180
0
                    c->buffer[label_loop_loop] |= (uint32_t)(label_loop_start - label_loop_loop) << 8;
26181
26182
0
                    janetc_freeslot(c, argi);
26183
0
                    janetc_freeslot(c, arg);
26184
0
                    janetc_freeslot(c, len);
26185
26186
0
                    janetc_emit_s(c, JOP_MAKE_TUPLE, nextright, 1);
26187
26188
0
                    leaf(c, janet_unwrap_symbol(values[i + 1]), nextright, attr);
26189
0
                    janetc_freeslot(c, nextright);
26190
0
                    break;
26191
0
                }
26192
26193
0
                if (i < 0x100) {
26194
0
                    janetc_emit_ssu(c, JOP_GET_INDEX, nextright, right, (uint8_t) i, 1);
26195
0
                } else {
26196
0
                    JanetSlot k = janetc_cslot(janet_wrap_integer(i));
26197
0
                    janetc_emit_sss(c, JOP_IN, nextright, right, k, 1);
26198
0
                }
26199
0
                if (destructure(c, subval, nextright, leaf, attr))
26200
0
                    janetc_freeslot(c, nextright);
26201
0
            }
26202
0
        }
26203
0
        return 1;
26204
0
        case JANET_TABLE:
26205
0
        case JANET_STRUCT: {
26206
0
            const JanetKV *kvs = NULL;
26207
0
            int32_t cap = 0, len = 0;
26208
0
            janet_dictionary_view(left, &kvs, &len, &cap);
26209
0
            for (int32_t i = 0; i < cap; i++) {
26210
0
                if (janet_checktype(kvs[i].key, JANET_NIL)) continue;
26211
0
                JanetSlot nextright = janetc_farslot(c);
26212
0
                JanetSlot k = janetc_value(janetc_fopts_default(c), kvs[i].key);
26213
0
                janetc_emit_sss(c, JOP_IN, nextright, right, k, 1);
26214
0
                if (destructure(c, kvs[i].value, nextright, leaf, attr))
26215
0
                    janetc_freeslot(c, nextright);
26216
0
            }
26217
0
        }
26218
0
        return 1;
26219
0
    }
26220
0
}
26221
26222
/* Create a source map for definitions. */
26223
0
static const Janet *janetc_make_sourcemap(JanetCompiler *c) {
26224
0
    Janet *tup = janet_tuple_begin(3);
26225
0
    tup[0] = c->source ? janet_wrap_string(c->source) : janet_wrap_nil();
26226
0
    tup[1] = janet_wrap_integer(c->current_mapping.line);
26227
0
    tup[2] = janet_wrap_integer(c->current_mapping.column);
26228
0
    return janet_tuple_end(tup);
26229
0
}
26230
26231
0
static JanetSlot janetc_varset(JanetFopts opts, int32_t argn, const Janet *argv) {
26232
0
    if (argn != 2) {
26233
0
        janetc_cerror(opts.compiler, "expected 2 arguments to set");
26234
0
        return janetc_cslot(janet_wrap_nil());
26235
0
    }
26236
0
    JanetFopts subopts = janetc_fopts_default(opts.compiler);
26237
0
    if (janet_checktype(argv[0], JANET_SYMBOL)) {
26238
        /* Normal var - (set a 1) */
26239
0
        const uint8_t *sym = janet_unwrap_symbol(argv[0]);
26240
0
        JanetSlot dest = janetc_resolve(opts.compiler, sym);
26241
0
        if (!(dest.flags & JANET_SLOT_MUTABLE)) {
26242
0
            janetc_cerror(opts.compiler, "cannot set constant");
26243
0
            return janetc_cslot(janet_wrap_nil());
26244
0
        }
26245
0
        subopts.flags = JANET_FOPTS_HINT;
26246
0
        subopts.hint = dest;
26247
0
        JanetSlot ret = janetc_value(subopts, argv[1]);
26248
0
        janetc_copy(opts.compiler, dest, ret);
26249
0
        return ret;
26250
0
    } else if (janet_checktype(argv[0], JANET_TUPLE)) {
26251
        /* Set a field (setf behavior) - (set (tab :key) 2) */
26252
0
        const Janet *tup = janet_unwrap_tuple(argv[0]);
26253
        /* Tuple must have 2 elements */
26254
0
        if (janet_tuple_length(tup) != 2) {
26255
0
            janetc_cerror(opts.compiler, "expected 2 element tuple for l-value to set");
26256
0
            return janetc_cslot(janet_wrap_nil());
26257
0
        }
26258
0
        JanetSlot ds = janetc_value(subopts, tup[0]);
26259
0
        JanetSlot key = janetc_value(subopts, tup[1]);
26260
        /* Can't be tail position because we will emit a PUT instruction afterwards */
26261
        /* Also can't drop either */
26262
0
        opts.flags &= ~(JANET_FOPTS_TAIL | JANET_FOPTS_DROP);
26263
0
        JanetSlot rvalue = janetc_value(opts, argv[1]);
26264
        /* Emit the PUT instruction */
26265
0
        janetc_emit_sss(opts.compiler, JOP_PUT, ds, key, rvalue, 0);
26266
0
        return rvalue;
26267
0
    } else {
26268
        /* Error */
26269
0
        janetc_cerror(opts.compiler, "expected symbol or tuple for l-value to set");
26270
0
        return janetc_cslot(janet_wrap_nil());
26271
0
    }
26272
0
}
26273
26274
/* Add attributes to a global def or var table */
26275
0
static JanetTable *handleattr(JanetCompiler *c, const char *kind, int32_t argn, const Janet *argv) {
26276
0
    int32_t i;
26277
0
    JanetTable *tab = janet_table(2);
26278
0
    const char *binding_name = janet_type(argv[0]) == JANET_SYMBOL
26279
0
                               ? ((const char *)janet_unwrap_symbol(argv[0]))
26280
0
                               : "<multiple bindings>";
26281
0
    if (argn < 2) {
26282
0
        janetc_error(c, janet_formatc("expected at least 2 arguments to %s", kind));
26283
0
        return NULL;
26284
0
    }
26285
0
    for (i = 1; i < argn - 1; i++) {
26286
0
        Janet attr = argv[i];
26287
0
        switch (janet_type(attr)) {
26288
0
            case JANET_TUPLE:
26289
0
                janetc_cerror(c, "unexpected form - did you intend to use defn?");
26290
0
                break;
26291
0
            default:
26292
0
                janetc_error(c, janet_formatc("cannot add metadata %v to binding %s", attr, binding_name));
26293
0
                break;
26294
0
            case JANET_KEYWORD:
26295
0
                janet_table_put(tab, attr, janet_wrap_true());
26296
0
                break;
26297
0
            case JANET_STRING:
26298
0
                janet_table_put(tab, janet_ckeywordv("doc"), attr);
26299
0
                break;
26300
0
            case JANET_STRUCT:
26301
0
                janet_table_merge_struct(tab, janet_unwrap_struct(attr));
26302
0
                break;
26303
0
        }
26304
0
    }
26305
0
    return tab;
26306
0
}
26307
26308
typedef struct SlotHeadPair {
26309
    Janet lhs;
26310
    JanetSlot rhs;
26311
} SlotHeadPair;
26312
26313
0
SlotHeadPair *dohead_destructure(JanetCompiler *c, SlotHeadPair *into, JanetFopts opts, Janet lhs, Janet rhs) {
26314
26315
    /* Detect if we can do an optimization to avoid some allocations */
26316
0
    int can_destructure_lhs = janet_checktype(lhs, JANET_TUPLE)
26317
0
                              || janet_checktype(lhs, JANET_ARRAY);
26318
0
    int rhs_is_indexed = janet_checktype(rhs, JANET_ARRAY)
26319
0
                         || (janet_checktype(rhs, JANET_TUPLE) && (janet_tuple_flag(janet_unwrap_tuple(rhs)) & JANET_TUPLE_FLAG_BRACKETCTOR));
26320
0
    uint32_t has_drop = opts.flags & JANET_FOPTS_DROP;
26321
26322
0
    JanetFopts subopts = janetc_fopts_default(c);
26323
0
    subopts.flags = opts.flags & ~(JANET_FOPTS_TAIL | JANET_FOPTS_DROP);
26324
26325
0
    if (has_drop && can_destructure_lhs && rhs_is_indexed) {
26326
        /* Code is of the form (def [a b] [1 2]), avoid the allocation of two tuples */
26327
0
        JanetView view_lhs, view_rhs;
26328
0
        janet_indexed_view(lhs, &view_lhs.items, &view_lhs.len);
26329
0
        janet_indexed_view(rhs, &view_rhs.items, &view_rhs.len);
26330
0
        int found_amp = 0;
26331
0
        for (int32_t i = 0; i < view_lhs.len; i++) {
26332
0
            if (janet_symeq(view_lhs.items[i], "&")) {
26333
0
                found_amp = 1;
26334
                /* Good error will be generated later. */
26335
0
                break;
26336
0
            }
26337
0
        }
26338
0
        if (!found_amp) {
26339
0
            for (int32_t i = 0; i < view_lhs.len; i++) {
26340
0
                Janet sub_rhs = view_rhs.len <= i ? janet_wrap_nil() : view_rhs.items[i];
26341
0
                into = dohead_destructure(c, into, subopts, view_lhs.items[i], sub_rhs);
26342
0
            }
26343
0
            return into;
26344
0
        }
26345
0
    }
26346
26347
    /* No optimization, do the simple way */
26348
0
    subopts.hint = opts.hint;
26349
0
    JanetSlot ret = janetc_value(subopts, rhs);
26350
0
    SlotHeadPair shp = {lhs, ret};
26351
0
    janet_v_push(into, shp);
26352
0
    return into;
26353
0
}
26354
26355
/* Def or var a symbol in a local scope */
26356
0
static int namelocal(JanetCompiler *c, const uint8_t *head, int32_t flags, JanetSlot ret) {
26357
0
    int isUnnamedRegister = !(ret.flags & JANET_SLOT_NAMED) &&
26358
0
                            ret.index > 0 &&
26359
0
                            ret.envindex >= 0;
26360
    /* optimization for `(def x my-def)` - don't emit a movn/movf instruction, we can just alias my-def */
26361
    /* TODO - implement optimization for `(def x my-var)` correctly as well w/ de-aliasing */
26362
0
    int canAlias = !(flags & JANET_SLOT_MUTABLE) &&
26363
0
                   !(ret.flags & JANET_SLOT_MUTABLE) &&
26364
0
                   (ret.flags & JANET_SLOT_NAMED) &&
26365
0
                   (ret.index >= 0) &&
26366
0
                   (ret.envindex == -1);
26367
0
    if (canAlias) {
26368
0
        ret.flags &= ~JANET_SLOT_MUTABLE;
26369
0
        isUnnamedRegister = 1; /* don't free slot after use - is an alias for another slot */
26370
0
    } else if (!isUnnamedRegister) {
26371
        /* Slot is not able to be named */
26372
0
        JanetSlot localslot = janetc_farslot(c);
26373
0
        janetc_copy(c, localslot, ret);
26374
0
        ret = localslot;
26375
0
    }
26376
0
    ret.flags |= flags;
26377
0
    janetc_nameslot(c, head, ret);
26378
0
    return !isUnnamedRegister;
26379
0
}
26380
26381
static int varleaf(
26382
    JanetCompiler *c,
26383
    const uint8_t *sym,
26384
    JanetSlot s,
26385
0
    JanetTable *reftab) {
26386
0
    if (c->scope->flags & JANET_SCOPE_TOP) {
26387
        /* Global var, generate var */
26388
0
        JanetSlot refslot;
26389
0
        JanetTable *entry = janet_table_clone(reftab);
26390
26391
0
        Janet redef_kw = janet_ckeywordv("redef");
26392
0
        int is_redef = janet_truthy(janet_table_get(c->env, redef_kw));
26393
26394
0
        JanetArray *ref;
26395
0
        JanetBinding old_binding;
26396
0
        if (is_redef && (old_binding = janet_resolve_ext(c->env, sym),
26397
0
                         old_binding.type == JANET_BINDING_VAR)) {
26398
0
            ref = janet_unwrap_array(old_binding.value);
26399
0
        } else {
26400
0
            ref = janet_array(1);
26401
0
            janet_array_push(ref, janet_wrap_nil());
26402
0
        }
26403
26404
0
        janet_table_put(entry, janet_ckeywordv("ref"), janet_wrap_array(ref));
26405
0
        janet_table_put(entry, janet_ckeywordv("source-map"),
26406
0
                        janet_wrap_tuple(janetc_make_sourcemap(c)));
26407
0
        janet_table_put(c->env, janet_wrap_symbol(sym), janet_wrap_table(entry));
26408
0
        refslot = janetc_cslot(janet_wrap_array(ref));
26409
0
        janetc_emit_ssu(c, JOP_PUT_INDEX, refslot, s, 0, 0);
26410
0
        return 1;
26411
0
    } else {
26412
0
        return namelocal(c, sym, JANET_SLOT_MUTABLE, s);
26413
0
    }
26414
0
}
26415
26416
0
static JanetSlot janetc_var(JanetFopts opts, int32_t argn, const Janet *argv) {
26417
0
    JanetCompiler *c = opts.compiler;
26418
0
    JanetTable *attr_table = handleattr(c, "var", argn, argv);
26419
0
    if (c->result.status == JANET_COMPILE_ERROR) {
26420
0
        return janetc_cslot(janet_wrap_nil());
26421
0
    }
26422
0
    SlotHeadPair *into = NULL;
26423
0
    into = dohead_destructure(c, into, opts, argv[0], argv[argn - 1]);
26424
0
    if (c->result.status == JANET_COMPILE_ERROR) {
26425
0
        janet_v_free(into);
26426
0
        return janetc_cslot(janet_wrap_nil());
26427
0
    }
26428
0
    JanetSlot ret;
26429
0
    janet_assert(janet_v_count(into) > 0, "bad destructure");
26430
0
    for (int32_t i = 0; i < janet_v_count(into); i++) {
26431
0
        destructure(c, into[i].lhs, into[i].rhs, varleaf, attr_table);
26432
0
        ret = into[i].rhs;
26433
0
    }
26434
0
    janet_v_free(into);
26435
0
    return ret;
26436
0
}
26437
26438
static int defleaf(
26439
    JanetCompiler *c,
26440
    const uint8_t *sym,
26441
    JanetSlot s,
26442
0
    JanetTable *tab) {
26443
0
    if (c->scope->flags & JANET_SCOPE_TOP) {
26444
0
        JanetTable *entry = janet_table_clone(tab);
26445
0
        janet_table_put(entry, janet_ckeywordv("source-map"),
26446
0
                        janet_wrap_tuple(janetc_make_sourcemap(c)));
26447
26448
0
        Janet redef_kw = janet_ckeywordv("redef");
26449
0
        int is_redef = janet_truthy(janet_table_get(c->env, redef_kw));
26450
0
        if (is_redef) janet_table_put(entry, redef_kw, janet_wrap_true());
26451
26452
0
        if (is_redef) {
26453
0
            JanetBinding binding = janet_resolve_ext(c->env, sym);
26454
0
            JanetArray *ref;
26455
0
            if (binding.type == JANET_BINDING_DYNAMIC_DEF || binding.type == JANET_BINDING_DYNAMIC_MACRO) {
26456
0
                ref = janet_unwrap_array(binding.value);
26457
0
            } else {
26458
0
                ref = janet_array(1);
26459
0
                janet_array_push(ref, janet_wrap_nil());
26460
0
            }
26461
0
            janet_table_put(entry, janet_ckeywordv("ref"), janet_wrap_array(ref));
26462
0
            JanetSlot refslot = janetc_cslot(janet_wrap_array(ref));
26463
0
            janetc_emit_ssu(c, JOP_PUT_INDEX, refslot, s, 0, 0);
26464
0
        } else {
26465
0
            JanetSlot valsym = janetc_cslot(janet_ckeywordv("value"));
26466
0
            JanetSlot tabslot = janetc_cslot(janet_wrap_table(entry));
26467
0
            janetc_emit_sss(c, JOP_PUT, tabslot, valsym, s, 0);
26468
0
        }
26469
26470
        /* Add env entry to env */
26471
0
        janet_table_put(c->env, janet_wrap_symbol(sym), janet_wrap_table(entry));
26472
0
    }
26473
0
    return namelocal(c, sym, 0, s);
26474
0
}
26475
26476
0
static JanetSlot janetc_def(JanetFopts opts, int32_t argn, const Janet *argv) {
26477
0
    JanetCompiler *c = opts.compiler;
26478
0
    JanetTable *attr_table = handleattr(c, "def", argn, argv);
26479
0
    if (c->result.status == JANET_COMPILE_ERROR) {
26480
0
        return janetc_cslot(janet_wrap_nil());
26481
0
    }
26482
0
    opts.flags &= ~JANET_FOPTS_HINT;
26483
0
    SlotHeadPair *into = NULL;
26484
0
    into = dohead_destructure(c, into, opts, argv[0], argv[argn - 1]);
26485
0
    if (c->result.status == JANET_COMPILE_ERROR) {
26486
0
        janet_v_free(into);
26487
0
        return janetc_cslot(janet_wrap_nil());
26488
0
    }
26489
0
    JanetSlot ret;
26490
0
    janet_assert(janet_v_count(into) > 0, "bad destructure");
26491
0
    for (int32_t i = 0; i < janet_v_count(into); i++) {
26492
0
        destructure(c, into[i].lhs, into[i].rhs, defleaf, attr_table);
26493
0
        ret = into[i].rhs;
26494
0
    }
26495
0
    janet_v_free(into);
26496
0
    return ret;
26497
0
}
26498
26499
/*
26500
 * :condition
26501
 * ...
26502
 * jump-if-not condition :right
26503
 * :left
26504
 * ...
26505
 * jump done (only if not tail)
26506
 * :right
26507
 * ...
26508
 * :done
26509
 */
26510
0
static JanetSlot janetc_if(JanetFopts opts, int32_t argn, const Janet *argv) {
26511
0
    JanetCompiler *c = opts.compiler;
26512
0
    int32_t labelr, labeljr, labeld, labeljd;
26513
0
    JanetFopts condopts, bodyopts;
26514
0
    JanetSlot cond, left, right, target;
26515
0
    Janet truebody, falsebody;
26516
0
    JanetScope condscope, tempscope;
26517
0
    const int tail = opts.flags & JANET_FOPTS_TAIL;
26518
0
    const int drop = opts.flags & JANET_FOPTS_DROP;
26519
26520
0
    if (argn < 2 || argn > 3) {
26521
0
        janetc_cerror(c, "expected 2 or 3 arguments to if");
26522
0
        return janetc_cslot(janet_wrap_nil());
26523
0
    }
26524
26525
    /* Get the bodies of the if expression */
26526
0
    truebody = argv[1];
26527
0
    falsebody = argn > 2 ? argv[2] : janet_wrap_nil();
26528
26529
    /* Get options */
26530
0
    condopts = janetc_fopts_default(c);
26531
0
    bodyopts = opts;
26532
0
    bodyopts.flags &= ~JANET_FOPTS_ACCEPT_SPLICE;
26533
26534
    /* Set target for compilation */
26535
0
    target = (drop || tail)
26536
0
             ? janetc_cslot(janet_wrap_nil())
26537
0
             : janetc_gettarget(opts);
26538
26539
    /* Compile condition */
26540
0
    janetc_scope(&condscope, c, 0, "if");
26541
0
    cond = janetc_value(condopts, argv[0]);
26542
26543
    /* Check constant condition. */
26544
    /* TODO: Use type info for more short circuits */
26545
0
    if (cond.flags & JANET_SLOT_CONSTANT) {
26546
0
        if (!janet_truthy(cond.constant)) {
26547
            /* Swap the true and false bodies */
26548
0
            Janet temp = falsebody;
26549
0
            falsebody = truebody;
26550
0
            truebody = temp;
26551
0
        }
26552
0
        janetc_scope(&tempscope, c, 0, "if-true");
26553
0
        right = janetc_value(bodyopts, truebody);
26554
0
        if (!drop && !tail) janetc_copy(c, target, right);
26555
0
        janetc_popscope(c);
26556
0
        if (!janet_checktype(falsebody, JANET_NIL)) {
26557
0
            janetc_throwaway(bodyopts, falsebody);
26558
0
        }
26559
0
        janetc_popscope(c);
26560
0
        return target;
26561
0
    }
26562
26563
    /* Compile jump to right */
26564
0
    labeljr = janetc_emit_si(c, JOP_JUMP_IF_NOT, cond, 0, 0);
26565
26566
    /* Condition left body */
26567
0
    janetc_scope(&tempscope, c, 0, "if-true");
26568
0
    left = janetc_value(bodyopts, truebody);
26569
0
    if (!drop && !tail) janetc_copy(c, target, left);
26570
0
    janetc_popscope(c);
26571
26572
    /* Compile jump to done */
26573
0
    labeljd = janet_v_count(c->buffer);
26574
0
    if (!tail) janetc_emit(c, JOP_JUMP);
26575
26576
    /* Compile right body */
26577
0
    labelr = janet_v_count(c->buffer);
26578
0
    janetc_scope(&tempscope, c, 0, "if-false");
26579
0
    right = janetc_value(bodyopts, falsebody);
26580
0
    if (!drop && !tail) janetc_copy(c, target, right);
26581
0
    janetc_popscope(c);
26582
26583
    /* Pop main scope */
26584
0
    janetc_popscope(c);
26585
26586
    /* Write jumps - only add jump lengths if jump actually emitted */
26587
0
    labeld = janet_v_count(c->buffer);
26588
0
    c->buffer[labeljr] |= (labelr - labeljr) << 16;
26589
0
    if (!tail) c->buffer[labeljd] |= (labeld - labeljd) << 8;
26590
26591
0
    if (tail) target.flags |= JANET_SLOT_RETURNED;
26592
0
    return target;
26593
0
}
26594
26595
/* Compile a do form. Do forms execute their body sequentially and
26596
 * evaluate to the last expression in the body. */
26597
0
static JanetSlot janetc_do(JanetFopts opts, int32_t argn, const Janet *argv) {
26598
0
    int32_t i;
26599
0
    JanetSlot ret = janetc_cslot(janet_wrap_nil());
26600
0
    JanetCompiler *c = opts.compiler;
26601
0
    JanetFopts subopts = janetc_fopts_default(c);
26602
0
    JanetScope tempscope;
26603
0
    janetc_scope(&tempscope, c, 0, "do");
26604
0
    for (i = 0; i < argn; i++) {
26605
0
        if (i != argn - 1) {
26606
0
            subopts.flags = JANET_FOPTS_DROP;
26607
0
        } else {
26608
0
            subopts = opts;
26609
0
            subopts.flags &= ~JANET_FOPTS_ACCEPT_SPLICE;
26610
0
        }
26611
0
        ret = janetc_value(subopts, argv[i]);
26612
0
        if (i != argn - 1) {
26613
0
            janetc_freeslot(c, ret);
26614
0
        }
26615
0
    }
26616
0
    janetc_popscope_keepslot(c, ret);
26617
0
    return ret;
26618
0
}
26619
26620
26621
/* Compile an upscope form. Upscope forms execute their body sequentially and
26622
 * evaluate to the last expression in the body, but without lexical scope. */
26623
0
static JanetSlot janetc_upscope(JanetFopts opts, int32_t argn, const Janet *argv) {
26624
0
    int32_t i;
26625
0
    JanetSlot ret = janetc_cslot(janet_wrap_nil());
26626
0
    JanetCompiler *c = opts.compiler;
26627
0
    JanetFopts subopts = janetc_fopts_default(c);
26628
0
    for (i = 0; i < argn; i++) {
26629
0
        if (i != argn - 1) {
26630
0
            subopts.flags = JANET_FOPTS_DROP;
26631
0
        } else {
26632
0
            subopts = opts;
26633
0
            subopts.flags &= ~JANET_FOPTS_ACCEPT_SPLICE;
26634
0
        }
26635
0
        ret = janetc_value(subopts, argv[i]);
26636
0
        if (i != argn - 1) {
26637
0
            janetc_freeslot(c, ret);
26638
0
        }
26639
0
    }
26640
0
    return ret;
26641
0
}
26642
26643
/* Add a funcdef to the top most function scope */
26644
0
static int32_t janetc_addfuncdef(JanetCompiler *c, JanetFuncDef *def) {
26645
0
    JanetScope *scope = c->scope;
26646
0
    while (scope) {
26647
0
        if (scope->flags & JANET_SCOPE_FUNCTION)
26648
0
            break;
26649
0
        scope = scope->parent;
26650
0
    }
26651
0
    janet_assert(scope, "could not add funcdef");
26652
0
    janet_v_push(scope->defs, def);
26653
0
    return janet_v_count(scope->defs) - 1;
26654
0
}
26655
26656
/*
26657
 * break
26658
 *
26659
 * jump :end or retn if in function
26660
 */
26661
0
static JanetSlot janetc_break(JanetFopts opts, int32_t argn, const Janet *argv) {
26662
0
    JanetCompiler *c = opts.compiler;
26663
0
    JanetScope *scope = c->scope;
26664
0
    if (argn > 1) {
26665
0
        janetc_cerror(c, "expected at most 1 argument");
26666
0
        return janetc_cslot(janet_wrap_nil());
26667
0
    }
26668
26669
    /* Find scope to break from */
26670
0
    while (scope) {
26671
0
        if (scope->flags & (JANET_SCOPE_FUNCTION | JANET_SCOPE_WHILE))
26672
0
            break;
26673
0
        scope = scope->parent;
26674
0
    }
26675
0
    if (NULL == scope) {
26676
0
        janetc_cerror(c, "break must occur in while loop or closure");
26677
0
        return janetc_cslot(janet_wrap_nil());
26678
0
    }
26679
26680
    /* Emit code to break from that scope */
26681
0
    JanetFopts subopts = janetc_fopts_default(c);
26682
0
    if (scope->flags & JANET_SCOPE_FUNCTION) {
26683
0
        if (!(scope->flags & JANET_SCOPE_WHILE) && argn) {
26684
            /* Closure body with return argument */
26685
0
            subopts.flags |= JANET_FOPTS_TAIL;
26686
0
            JanetSlot ret = janetc_value(subopts, argv[0]);
26687
0
            ret.flags |= JANET_SLOT_RETURNED;
26688
0
            return ret;
26689
0
        } else {
26690
            /* while loop IIFE or no argument */
26691
0
            if (argn) {
26692
0
                subopts.flags |= JANET_FOPTS_DROP;
26693
0
                janetc_value(subopts, argv[0]);
26694
0
            }
26695
0
            janetc_emit(c, JOP_RETURN_NIL);
26696
0
            JanetSlot s = janetc_cslot(janet_wrap_nil());
26697
0
            s.flags |= JANET_SLOT_RETURNED;
26698
0
            return s;
26699
0
        }
26700
0
    } else {
26701
0
        if (argn) {
26702
0
            subopts.flags |= JANET_FOPTS_DROP;
26703
0
            janetc_value(subopts, argv[0]);
26704
0
        }
26705
        /* Tag the instruction so the while special can turn it into a proper jump */
26706
0
        janetc_emit(c, 0x80 | JOP_JUMP);
26707
0
        return janetc_cslot(janet_wrap_nil());
26708
0
    }
26709
0
}
26710
26711
/* Check if a form matches the pattern (not= nil _) */
26712
0
static int janetc_check_notnil_form(Janet x, Janet *capture) {
26713
0
    if (!janet_checktype(x, JANET_TUPLE)) return 0;
26714
0
    JanetTuple tup = janet_unwrap_tuple(x);
26715
0
    if (!janet_checktype(tup[0], JANET_FUNCTION)) return 0;
26716
0
    if (3 != janet_tuple_length(tup)) return 0;
26717
0
    JanetFunction *fun = janet_unwrap_function(tup[0]);
26718
0
    uint32_t tag = fun->def->flags & JANET_FUNCDEF_FLAG_TAG;
26719
0
    if (tag != JANET_FUN_NEQ) return 0;
26720
0
    if (!janet_checktype(tup[1], JANET_NIL)) return 0;
26721
0
    *capture = tup[2];
26722
0
    return 1;
26723
0
}
26724
26725
/*
26726
 * :whiletop
26727
 * ...
26728
 * :condition
26729
 * jump-if-not cond :done
26730
 * ...
26731
 * jump :whiletop
26732
 * :done
26733
 */
26734
0
static JanetSlot janetc_while(JanetFopts opts, int32_t argn, const Janet *argv) {
26735
0
    JanetCompiler *c = opts.compiler;
26736
0
    JanetSlot cond;
26737
0
    JanetFopts subopts = janetc_fopts_default(c);
26738
0
    JanetScope tempscope;
26739
0
    int32_t labelwt, labeld, labeljt, labelc, i;
26740
0
    int infinite = 0;
26741
0
    int is_notnil_form = 0;
26742
0
    uint8_t ifjmp = JOP_JUMP_IF;
26743
0
    uint8_t ifnjmp = JOP_JUMP_IF_NOT;
26744
26745
0
    if (argn < 1) {
26746
0
        janetc_cerror(c, "expected at least 1 argument to while");
26747
0
        return janetc_cslot(janet_wrap_nil());
26748
0
    }
26749
26750
0
    labelwt = janet_v_count(c->buffer);
26751
26752
0
    janetc_scope(&tempscope, c, JANET_SCOPE_WHILE, "while");
26753
26754
    /* Check for `(not= nil _)` in condition, and if so, use the
26755
     * jmpnl or jmpnn instructions. This let's us implement `(each ...)`
26756
     * more efficiently. */
26757
0
    Janet condform = argv[0];
26758
0
    if (janetc_check_notnil_form(condform, &condform)) {
26759
0
        is_notnil_form = 1;
26760
0
        ifjmp = JOP_JUMP_IF_NOT_NIL;
26761
0
        ifnjmp = JOP_JUMP_IF_NIL;
26762
0
    }
26763
26764
    /* Compile condition */
26765
0
    cond = janetc_value(subopts, condform);
26766
26767
    /* Check for constant condition */
26768
0
    if (cond.flags & JANET_SLOT_CONSTANT) {
26769
        /* Loop never executes */
26770
0
        int never_executes = is_notnil_form
26771
0
                             ? janet_checktype(cond.constant, JANET_NIL)
26772
0
                             : !janet_truthy(cond.constant);
26773
0
        if (never_executes) {
26774
0
            janetc_popscope(c);
26775
0
            return janetc_cslot(janet_wrap_nil());
26776
0
        }
26777
        /* Infinite loop */
26778
0
        infinite = 1;
26779
0
    }
26780
26781
    /* Infinite loop does not need to check condition */
26782
0
    labelc = infinite
26783
0
             ? 0
26784
0
             : janetc_emit_si(c, ifnjmp, cond, 0, 0);
26785
26786
    /* Compile body */
26787
0
    for (i = 1; i < argn; i++) {
26788
0
        subopts.flags = JANET_FOPTS_DROP;
26789
0
        janetc_freeslot(c, janetc_value(subopts, argv[i]));
26790
0
    }
26791
26792
    /* Check if closure created in while scope. If so,
26793
     * recompile in a function scope. */
26794
0
    if (tempscope.flags & JANET_SCOPE_CLOSURE) {
26795
0
        subopts = janetc_fopts_default(c);
26796
0
        tempscope.flags |= JANET_SCOPE_UNUSED;
26797
0
        janetc_popscope(c);
26798
0
        if (c->buffer) janet_v__cnt(c->buffer) = labelwt;
26799
0
        if (c->mapbuffer) janet_v__cnt(c->mapbuffer) = labelwt;
26800
26801
0
        janetc_scope(&tempscope, c, JANET_SCOPE_FUNCTION, "while-iife");
26802
26803
        /* Recompile in the function scope */
26804
0
        cond = janetc_value(subopts, condform);
26805
0
        if (!(cond.flags & JANET_SLOT_CONSTANT)) {
26806
            /* If not an infinite loop, return nil when condition false */
26807
0
            janetc_emit_si(c, ifjmp, cond, 2, 0);
26808
0
            janetc_emit(c, JOP_RETURN_NIL);
26809
0
        }
26810
0
        for (i = 1; i < argn; i++) {
26811
0
            subopts.flags = JANET_FOPTS_DROP;
26812
0
            janetc_freeslot(c, janetc_value(subopts, argv[i]));
26813
0
        }
26814
        /* But now add tail recursion */
26815
0
        int32_t tempself = janetc_regalloc_temp(&tempscope.ra, JANETC_REGTEMP_0);
26816
0
        janetc_emit(c, JOP_LOAD_SELF | (tempself << 8));
26817
0
        janetc_emit(c, JOP_TAILCALL | (tempself << 8));
26818
0
        janetc_regalloc_freetemp(&c->scope->ra, tempself, JANETC_REGTEMP_0);
26819
        /* Compile function */
26820
0
        JanetFuncDef *def = janetc_pop_funcdef(c);
26821
0
        def->name = janet_cstring("_while");
26822
0
        janet_def_addflags(def);
26823
0
        int32_t defindex = janetc_addfuncdef(c, def);
26824
        /* And then load the closure and call it. */
26825
0
        int32_t cloreg = janetc_regalloc_temp(&c->scope->ra, JANETC_REGTEMP_0);
26826
0
        janetc_emit(c, JOP_CLOSURE | (cloreg << 8) | (defindex << 16));
26827
0
        janetc_emit(c, JOP_CALL | (cloreg << 8) | (cloreg << 16));
26828
0
        janetc_regalloc_freetemp(&c->scope->ra, cloreg, JANETC_REGTEMP_0);
26829
0
        c->scope->flags |= JANET_SCOPE_CLOSURE;
26830
0
        return janetc_cslot(janet_wrap_nil());
26831
0
    }
26832
26833
    /* Compile jump to :whiletop */
26834
0
    labeljt = janet_v_count(c->buffer);
26835
0
    janetc_emit(c, JOP_JUMP);
26836
26837
    /* Calculate jumps */
26838
0
    labeld = janet_v_count(c->buffer);
26839
0
    if (!infinite) c->buffer[labelc] |= (uint32_t)(labeld - labelc) << 16;
26840
0
    c->buffer[labeljt] |= (uint32_t)(labelwt - labeljt) << 8;
26841
26842
    /* Calculate breaks */
26843
0
    for (int32_t i = labelwt; i < labeld; i++) {
26844
0
        if (c->buffer[i] == (0x80 | JOP_JUMP)) {
26845
0
            c->buffer[i] = JOP_JUMP | ((labeld - i) << 8);
26846
0
        }
26847
0
    }
26848
26849
    /* Pop scope and return nil slot */
26850
0
    janetc_popscope(c);
26851
26852
0
    return janetc_cslot(janet_wrap_nil());
26853
0
}
26854
26855
0
static JanetSlot janetc_fn(JanetFopts opts, int32_t argn, const Janet *argv) {
26856
0
    JanetCompiler *c = opts.compiler;
26857
0
    JanetFuncDef *def;
26858
0
    JanetSlot ret;
26859
0
    Janet head;
26860
0
    JanetScope fnscope;
26861
0
    int32_t paramcount, argi, parami, arity, min_arity = 0, max_arity, defindex, i;
26862
0
    JanetFopts subopts = janetc_fopts_default(c);
26863
0
    const Janet *params;
26864
0
    const char *errmsg = NULL;
26865
26866
    /* Function flags */
26867
0
    int vararg = 0;
26868
0
    int structarg = 0;
26869
0
    int allow_extra = 0;
26870
0
    int selfref = 0;
26871
0
    int seenamp = 0;
26872
0
    int seenopt = 0;
26873
0
    int namedargs = 0;
26874
26875
    /* Begin function */
26876
0
    c->scope->flags |= JANET_SCOPE_CLOSURE;
26877
0
    janetc_scope(&fnscope, c, JANET_SCOPE_FUNCTION, "function");
26878
26879
0
    if (argn == 0) {
26880
0
        errmsg = "expected at least 1 argument to function literal";
26881
0
        goto error;
26882
0
    }
26883
26884
    /* Read function parameters */
26885
0
    parami = 0;
26886
0
    head = argv[0];
26887
0
    if (janet_checktype(head, JANET_SYMBOL)) {
26888
0
        selfref = 1;
26889
0
        parami = 1;
26890
0
    }
26891
0
    if (parami >= argn || !janet_checktype(argv[parami], JANET_TUPLE)) {
26892
0
        errmsg = "expected function parameters";
26893
0
        goto error;
26894
0
    }
26895
26896
    /* Keep track of destructured parameters */
26897
0
    JanetSlot *destructed_params = NULL;
26898
0
    JanetSlot *named_params = NULL;
26899
0
    JanetTable *named_table = NULL;
26900
0
    JanetSlot named_slot;
26901
26902
    /* Compile function parameters */
26903
0
    params = janet_unwrap_tuple(argv[parami]);
26904
0
    paramcount = janet_tuple_length(params);
26905
0
    arity = paramcount;
26906
0
    for (i = 0; i < paramcount; i++) {
26907
0
        Janet param = params[i];
26908
0
        if (namedargs) {
26909
0
            arity--;
26910
0
            if (!janet_checktype(param, JANET_SYMBOL)) {
26911
0
                errmsg = "only named arguments can follow &named";
26912
0
                goto error;
26913
0
            }
26914
0
            Janet key = janet_wrap_keyword(janet_unwrap_symbol(param));
26915
0
            janet_table_put(named_table, key, param);
26916
0
            janet_v_push(named_params, janetc_farslot(c));
26917
0
        } else if (janet_checktype(param, JANET_SYMBOL)) {
26918
            /* Check for varargs and unfixed arity */
26919
0
            const uint8_t *sym = janet_unwrap_symbol(param);
26920
0
            if (sym[0] == '&') {
26921
0
                if (!janet_cstrcmp(sym, "&")) {
26922
0
                    if (seenamp) {
26923
0
                        errmsg = "& in unexpected location";
26924
0
                        goto error;
26925
0
                    } else if (i == paramcount - 1) {
26926
0
                        allow_extra = 1;
26927
0
                        arity--;
26928
0
                    } else if (i == paramcount - 2) {
26929
0
                        vararg = 1;
26930
0
                        arity -= 2;
26931
0
                    } else {
26932
0
                        errmsg = "& in unexpected location";
26933
0
                        goto error;
26934
0
                    }
26935
0
                    seenamp = 1;
26936
0
                } else if (!janet_cstrcmp(sym, "&opt")) {
26937
0
                    if (seenopt) {
26938
0
                        errmsg = "only one &opt allowed";
26939
0
                        goto error;
26940
0
                    } else if (i == paramcount - 1) {
26941
0
                        errmsg = "&opt cannot be last item in parameter list";
26942
0
                        goto error;
26943
0
                    }
26944
0
                    min_arity = i;
26945
0
                    arity--;
26946
0
                    seenopt = 1;
26947
0
                } else if (!janet_cstrcmp(sym, "&keys")) {
26948
0
                    if (seenamp) {
26949
0
                        errmsg = "&keys in unexpected location";
26950
0
                        goto error;
26951
0
                    } else if (i == paramcount - 2) {
26952
0
                        vararg = 1;
26953
0
                        structarg = 1;
26954
0
                        arity -= 2;
26955
0
                    } else {
26956
0
                        errmsg = "&keys in unexpected location";
26957
0
                        goto error;
26958
0
                    }
26959
0
                    seenamp = 1;
26960
0
                } else if (!janet_cstrcmp(sym, "&named")) {
26961
0
                    if (seenamp) {
26962
0
                        errmsg = "&named in unexpected location";
26963
0
                        goto error;
26964
0
                    }
26965
0
                    vararg = 1;
26966
0
                    structarg = 1;
26967
0
                    arity--;
26968
0
                    seenamp = 1;
26969
0
                    namedargs = 1;
26970
0
                    named_table = janet_table(10);
26971
0
                    named_slot = janetc_farslot(c);
26972
0
                } else {
26973
0
                    janetc_nameslot(c, sym, janetc_farslot(c));
26974
0
                }
26975
0
            } else {
26976
0
                janetc_nameslot(c, sym, janetc_farslot(c));
26977
0
            }
26978
0
        } else {
26979
0
            janet_v_push(destructed_params, janetc_farslot(c));
26980
0
        }
26981
0
    }
26982
26983
    /* Compile destructed params */
26984
0
    int32_t j = 0;
26985
0
    for (i = 0; i < paramcount; i++) {
26986
0
        Janet param = params[i];
26987
0
        if (!janet_checktype(param, JANET_SYMBOL)) {
26988
0
            janet_assert(janet_v_count(destructed_params) > j, "out of bounds");
26989
0
            JanetSlot reg = destructed_params[j++];
26990
0
            destructure(c, param, reg, defleaf, NULL);
26991
0
            janetc_freeslot(c, reg);
26992
0
        }
26993
0
    }
26994
0
    janet_v_free(destructed_params);
26995
26996
    /* Compile named arguments */
26997
0
    if (namedargs) {
26998
0
        Janet param = janet_wrap_table(named_table);
26999
0
        destructure(c, param, named_slot, defleaf, NULL);
27000
0
        janetc_freeslot(c, named_slot);
27001
0
        janet_v_free(named_params);
27002
0
    }
27003
27004
0
    max_arity = (vararg || allow_extra) ? INT32_MAX : arity;
27005
0
    if (!seenopt) min_arity = arity;
27006
27007
    /* Check for self ref (also avoid if arguments shadow own name) */
27008
0
    if (selfref) {
27009
        /* Check if the parameters shadow the function name. If so, don't
27010
         * emit JOP_LOAD_SELF and add a binding since that most users
27011
         * seem to expect that function parameters take precedence over the
27012
         * function name */
27013
0
        const uint8_t *sym = janet_unwrap_symbol(head);
27014
0
        int32_t len = janet_v_count(c->scope->syms);
27015
0
        int found = 0;
27016
0
        for (int32_t i = 0; i < len; i++) {
27017
0
            if (c->scope->syms[i].sym == sym) {
27018
0
                found = 1;
27019
0
            }
27020
0
        }
27021
0
        if (!found) {
27022
0
            JanetSlot slot = janetc_farslot(c);
27023
0
            slot.flags = JANET_SLOT_NAMED | JANET_FUNCTION;
27024
0
            janetc_emit_s(c, JOP_LOAD_SELF, slot, 1);
27025
0
            janetc_nameslot(c, sym, slot);
27026
0
        }
27027
0
    }
27028
27029
    /* Compile function body */
27030
0
    if (parami + 1 == argn) {
27031
0
        janetc_emit(c, JOP_RETURN_NIL);
27032
0
    } else {
27033
0
        for (argi = parami + 1; argi < argn; argi++) {
27034
0
            subopts.flags = (argi == (argn - 1)) ? JANET_FOPTS_TAIL : JANET_FOPTS_DROP;
27035
0
            janetc_value(subopts, argv[argi]);
27036
0
            if (c->result.status == JANET_COMPILE_ERROR)
27037
0
                goto error2;
27038
0
        }
27039
0
    }
27040
27041
    /* Build function */
27042
0
    def = janetc_pop_funcdef(c);
27043
0
    def->arity = arity;
27044
0
    def->min_arity = min_arity;
27045
0
    def->max_arity = max_arity;
27046
0
    if (vararg) def->flags |= JANET_FUNCDEF_FLAG_VARARG;
27047
0
    if (structarg) def->flags |= JANET_FUNCDEF_FLAG_STRUCTARG;
27048
27049
0
    if (selfref) def->name = janet_unwrap_symbol(head);
27050
0
    janet_def_addflags(def);
27051
0
    defindex = janetc_addfuncdef(c, def);
27052
27053
    /* Ensure enough slots for vararg function. */
27054
0
    if (arity + vararg > def->slotcount) def->slotcount = arity + vararg;
27055
27056
    /* Instantiate closure */
27057
0
    ret = janetc_gettarget(opts);
27058
0
    janetc_emit_su(c, JOP_CLOSURE, ret, defindex, 1);
27059
0
    return ret;
27060
27061
0
error:
27062
0
    janetc_cerror(c, errmsg);
27063
0
error2:
27064
0
    janetc_popscope(c);
27065
0
    return janetc_cslot(janet_wrap_nil());
27066
0
}
27067
27068
/* Keep in lexicographic order */
27069
static const JanetSpecial janetc_specials[] = {
27070
    {"break", janetc_break},
27071
    {"def", janetc_def},
27072
    {"do", janetc_do},
27073
    {"fn", janetc_fn},
27074
    {"if", janetc_if},
27075
    {"quasiquote", janetc_quasiquote},
27076
    {"quote", janetc_quote},
27077
    {"set", janetc_varset},
27078
    {"splice", janetc_splice},
27079
    {"unquote", janetc_unquote},
27080
    {"upscope", janetc_upscope},
27081
    {"var", janetc_var},
27082
    {"while", janetc_while}
27083
};
27084
27085
/* Find a special */
27086
0
const JanetSpecial *janetc_special(const uint8_t *name) {
27087
0
    return janet_strbinsearch(
27088
0
               &janetc_specials,
27089
0
               sizeof(janetc_specials) / sizeof(JanetSpecial),
27090
0
               sizeof(JanetSpecial),
27091
0
               name);
27092
0
}
27093
27094
27095
27096
/* src/core/state.c */
27097
#line 0 "src/core/state.c"
27098
27099
/*
27100
* Copyright (c) 2023 Calvin Rose
27101
*
27102
* Permission is hereby granted, free of charge, to any person obtaining a copy
27103
* of this software and associated documentation files (the "Software"), to
27104
* deal in the Software without restriction, including without limitation the
27105
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
27106
* sell copies of the Software, and to permit persons to whom the Software is
27107
* furnished to do so, subject to the following conditions:
27108
*
27109
* The above copyright notice and this permission notice shall be included in
27110
* all copies or substantial portions of the Software.
27111
*
27112
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
27113
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
27114
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
27115
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27116
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
27117
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
27118
* IN THE SOFTWARE.
27119
*/
27120
27121
#ifndef JANET_AMALG
27122
#include "features.h"
27123
#include <janet.h>
27124
#include "state.h"
27125
#endif
27126
27127
JANET_THREAD_LOCAL JanetVM janet_vm;
27128
27129
0
JanetVM *janet_local_vm(void) {
27130
0
    return &janet_vm;
27131
0
}
27132
27133
0
JanetVM *janet_vm_alloc(void) {
27134
0
    JanetVM *mem = janet_malloc(sizeof(JanetVM));
27135
0
    if (NULL == mem) {
27136
0
        JANET_OUT_OF_MEMORY;
27137
0
    }
27138
0
    return mem;
27139
0
}
27140
27141
0
void janet_vm_free(JanetVM *vm) {
27142
0
    janet_free(vm);
27143
0
}
27144
27145
0
void janet_vm_save(JanetVM *into) {
27146
0
    *into = janet_vm;
27147
0
}
27148
27149
0
void janet_vm_load(JanetVM *from) {
27150
0
    janet_vm = *from;
27151
0
}
27152
27153
/* Trigger suspension of the Janet vm by trying to
27154
 * exit the interpeter loop when convenient. You can optionally
27155
 * use NULL to interrupt the current VM when convenient */
27156
0
void janet_interpreter_interrupt(JanetVM *vm) {
27157
0
    vm = vm ? vm : &janet_vm;
27158
0
    vm->auto_suspend = 1;
27159
0
}
27160
27161
27162
/* src/core/string.c */
27163
#line 0 "src/core/string.c"
27164
27165
/*
27166
* Copyright (c) 2023 Calvin Rose
27167
*
27168
* Permission is hereby granted, free of charge, to any person obtaining a copy
27169
* of this software and associated documentation files (the "Software"), to
27170
* deal in the Software without restriction, including without limitation the
27171
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
27172
* sell copies of the Software, and to permit persons to whom the Software is
27173
* furnished to do so, subject to the following conditions:
27174
*
27175
* The above copyright notice and this permission notice shall be included in
27176
* all copies or substantial portions of the Software.
27177
*
27178
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
27179
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
27180
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
27181
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27182
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
27183
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
27184
* IN THE SOFTWARE.
27185
*/
27186
27187
#ifndef JANET_AMALG
27188
#include "features.h"
27189
#include <janet.h>
27190
#include "gc.h"
27191
#include "util.h"
27192
#include "state.h"
27193
#endif
27194
27195
#include <string.h>
27196
27197
/* Begin building a string */
27198
0
uint8_t *janet_string_begin(int32_t length) {
27199
0
    JanetStringHead *head = janet_gcalloc(JANET_MEMORY_STRING, sizeof(JanetStringHead) + (size_t) length + 1);
27200
0
    head->length = length;
27201
0
    uint8_t *data = (uint8_t *)head->data;
27202
0
    data[length] = 0;
27203
0
    return data;
27204
0
}
27205
27206
/* Finish building a string */
27207
0
const uint8_t *janet_string_end(uint8_t *str) {
27208
0
    janet_string_hash(str) = janet_string_calchash(str, janet_string_length(str));
27209
0
    return str;
27210
0
}
27211
27212
/* Load a buffer as a string */
27213
1.26M
const uint8_t *janet_string(const uint8_t *buf, int32_t len) {
27214
1.26M
    JanetStringHead *head = janet_gcalloc(JANET_MEMORY_STRING, sizeof(JanetStringHead) + (size_t) len + 1);
27215
1.26M
    head->length = len;
27216
1.26M
    head->hash = janet_string_calchash(buf, len);
27217
1.26M
    uint8_t *data = (uint8_t *)head->data;
27218
1.26M
    safe_memcpy(data, buf, len);
27219
1.26M
    data[len] = 0;
27220
1.26M
    return data;
27221
1.26M
}
27222
27223
/* Compare two strings */
27224
991k
int janet_string_compare(const uint8_t *lhs, const uint8_t *rhs) {
27225
991k
    int32_t xlen = janet_string_length(lhs);
27226
991k
    int32_t ylen = janet_string_length(rhs);
27227
991k
    int32_t len = xlen > ylen ? ylen : xlen;
27228
991k
    int res = memcmp(lhs, rhs, len);
27229
991k
    if (res) return res > 0 ? 1 : -1;
27230
990k
    if (xlen == ylen) return 0;
27231
147k
    return xlen < ylen ? -1 : 1;
27232
990k
}
27233
27234
/* Compare a janet string with a piece of memory */
27235
4.16M
int janet_string_equalconst(const uint8_t *lhs, const uint8_t *rhs, int32_t rlen, int32_t rhash) {
27236
4.16M
    int32_t lhash = janet_string_hash(lhs);
27237
4.16M
    int32_t llen = janet_string_length(lhs);
27238
4.16M
    if (lhs == rhs)
27239
27.5k
        return 1;
27240
4.13M
    if (lhash != rhash || llen != rlen)
27241
210k
        return 0;
27242
3.92M
    return !memcmp(lhs, rhs, rlen);
27243
4.13M
}
27244
27245
/* Check if two strings are equal */
27246
16.3k
int janet_string_equal(const uint8_t *lhs, const uint8_t *rhs) {
27247
16.3k
    return janet_string_equalconst(lhs, rhs,
27248
16.3k
                                   janet_string_length(rhs), janet_string_hash(rhs));
27249
16.3k
}
27250
27251
/* Load a c string */
27252
0
const uint8_t *janet_cstring(const char *str) {
27253
0
    return janet_string((const uint8_t *)str, (int32_t)strlen(str));
27254
0
}
27255
27256
/* Knuth Morris Pratt Algorithm */
27257
27258
struct kmp_state {
27259
    int32_t i;
27260
    int32_t j;
27261
    int32_t textlen;
27262
    int32_t patlen;
27263
    int32_t *lookup;
27264
    const uint8_t *text;
27265
    const uint8_t *pat;
27266
};
27267
27268
static void kmp_init(
27269
    struct kmp_state *s,
27270
    const uint8_t *text, int32_t textlen,
27271
0
    const uint8_t *pat, int32_t patlen) {
27272
0
    if (patlen == 0) {
27273
0
        janet_panic("expected non-empty pattern");
27274
0
    }
27275
0
    int32_t *lookup = janet_calloc(patlen, sizeof(int32_t));
27276
0
    if (!lookup) {
27277
0
        JANET_OUT_OF_MEMORY;
27278
0
    }
27279
0
    s->lookup = lookup;
27280
0
    s->i = 0;
27281
0
    s->j = 0;
27282
0
    s->text = text;
27283
0
    s->pat = pat;
27284
0
    s->textlen = textlen;
27285
0
    s->patlen = patlen;
27286
    /* Init state machine */
27287
0
    {
27288
0
        int32_t i, j;
27289
0
        for (i = 1, j = 0; i < patlen; i++) {
27290
0
            while (j && pat[j] != pat[i]) j = lookup[j - 1];
27291
0
            if (pat[j] == pat[i]) j++;
27292
0
            lookup[i] = j;
27293
0
        }
27294
0
    }
27295
0
}
27296
27297
0
static void kmp_deinit(struct kmp_state *state) {
27298
0
    janet_free(state->lookup);
27299
0
}
27300
27301
0
static void kmp_seti(struct kmp_state *state, int32_t i) {
27302
0
    state->i = i;
27303
0
    state->j = 0;
27304
0
}
27305
27306
0
static int32_t kmp_next(struct kmp_state *state) {
27307
0
    int32_t i = state->i;
27308
0
    int32_t j = state->j;
27309
0
    int32_t textlen = state->textlen;
27310
0
    int32_t patlen = state->patlen;
27311
0
    const uint8_t *text = state->text;
27312
0
    const uint8_t *pat = state->pat;
27313
0
    int32_t *lookup = state->lookup;
27314
0
    while (i < textlen) {
27315
0
        if (text[i] == pat[j]) {
27316
0
            if (j == patlen - 1) {
27317
0
                state->i = i + 1;
27318
0
                state->j = lookup[j];
27319
0
                return i - j;
27320
0
            } else {
27321
0
                i++;
27322
0
                j++;
27323
0
            }
27324
0
        } else {
27325
0
            if (j > 0) {
27326
0
                j = lookup[j - 1];
27327
0
            } else {
27328
0
                i++;
27329
0
            }
27330
0
        }
27331
0
    }
27332
0
    return -1;
27333
0
}
27334
27335
/* CFuns */
27336
27337
JANET_CORE_FN(cfun_string_slice,
27338
              "(string/slice bytes &opt start end)",
27339
              "Returns a substring from a byte sequence. The substring is from "
27340
              "index `start` inclusive to index `end`, exclusive. All indexing "
27341
              "is from 0. `start` and `end` can also be negative to indicate indexing "
27342
              "from the end of the string. Note that index -1 is synonymous with "
27343
0
              "index `(length bytes)` to allow a full negative slice range. ") {
27344
0
    JanetByteView view = janet_getbytes(argv, 0);
27345
0
    JanetRange range = janet_getslice(argc, argv);
27346
0
    return janet_stringv(view.bytes + range.start, range.end - range.start);
27347
0
}
27348
27349
JANET_CORE_FN(cfun_symbol_slice,
27350
              "(symbol/slice bytes &opt start end)",
27351
0
              "Same as string/slice, but returns a symbol.") {
27352
0
    JanetByteView view = janet_getbytes(argv, 0);
27353
0
    JanetRange range = janet_getslice(argc, argv);
27354
0
    return janet_symbolv(view.bytes + range.start, range.end - range.start);
27355
0
}
27356
27357
JANET_CORE_FN(cfun_keyword_slice,
27358
              "(keyword/slice bytes &opt start end)",
27359
0
              "Same as string/slice, but returns a keyword.") {
27360
0
    JanetByteView view = janet_getbytes(argv, 0);
27361
0
    JanetRange range = janet_getslice(argc, argv);
27362
0
    return janet_keywordv(view.bytes + range.start, range.end - range.start);
27363
0
}
27364
27365
JANET_CORE_FN(cfun_string_repeat,
27366
              "(string/repeat bytes n)",
27367
0
              "Returns a string that is `n` copies of `bytes` concatenated.") {
27368
0
    janet_fixarity(argc, 2);
27369
0
    JanetByteView view = janet_getbytes(argv, 0);
27370
0
    int32_t rep = janet_getinteger(argv, 1);
27371
0
    if (rep < 0) janet_panic("expected non-negative number of repetitions");
27372
0
    if (rep == 0) return janet_cstringv("");
27373
0
    int64_t mulres = (int64_t) rep * view.len;
27374
0
    if (mulres > INT32_MAX) janet_panic("result string is too long");
27375
0
    uint8_t *newbuf = janet_string_begin((int32_t) mulres);
27376
0
    uint8_t *end = newbuf + mulres;
27377
0
    for (uint8_t *p = newbuf; p < end; p += view.len) {
27378
0
        safe_memcpy(p, view.bytes, view.len);
27379
0
    }
27380
0
    return janet_wrap_string(janet_string_end(newbuf));
27381
0
}
27382
27383
JANET_CORE_FN(cfun_string_bytes,
27384
              "(string/bytes str)",
27385
0
              "Returns a tuple of integers that are the byte values of the string.") {
27386
0
    janet_fixarity(argc, 1);
27387
0
    JanetByteView view = janet_getbytes(argv, 0);
27388
0
    Janet *tup = janet_tuple_begin(view.len);
27389
0
    int32_t i;
27390
0
    for (i = 0; i < view.len; i++) {
27391
0
        tup[i] = janet_wrap_integer((int32_t) view.bytes[i]);
27392
0
    }
27393
0
    return janet_wrap_tuple(janet_tuple_end(tup));
27394
0
}
27395
27396
JANET_CORE_FN(cfun_string_frombytes,
27397
              "(string/from-bytes & byte-vals)",
27398
              "Creates a string from integer parameters with byte values. All integers "
27399
0
              "will be coerced to the range of 1 byte 0-255.") {
27400
0
    int32_t i;
27401
0
    uint8_t *buf = janet_string_begin(argc);
27402
0
    for (i = 0; i < argc; i++) {
27403
0
        int32_t c = janet_getinteger(argv, i);
27404
0
        buf[i] = c & 0xFF;
27405
0
    }
27406
0
    return janet_wrap_string(janet_string_end(buf));
27407
0
}
27408
27409
JANET_CORE_FN(cfun_string_asciilower,
27410
              "(string/ascii-lower str)",
27411
              "Returns a new string where all bytes are replaced with the "
27412
              "lowercase version of themselves in ASCII. Does only a very simple "
27413
0
              "case check, meaning no unicode support.") {
27414
0
    janet_fixarity(argc, 1);
27415
0
    JanetByteView view = janet_getbytes(argv, 0);
27416
0
    uint8_t *buf = janet_string_begin(view.len);
27417
0
    for (int32_t i = 0; i < view.len; i++) {
27418
0
        uint8_t c = view.bytes[i];
27419
0
        if (c >= 65 && c <= 90) {
27420
0
            buf[i] = c + 32;
27421
0
        } else {
27422
0
            buf[i] = c;
27423
0
        }
27424
0
    }
27425
0
    return janet_wrap_string(janet_string_end(buf));
27426
0
}
27427
27428
JANET_CORE_FN(cfun_string_asciiupper,
27429
              "(string/ascii-upper str)",
27430
              "Returns a new string where all bytes are replaced with the "
27431
              "uppercase version of themselves in ASCII. Does only a very simple "
27432
0
              "case check, meaning no unicode support.") {
27433
0
    janet_fixarity(argc, 1);
27434
0
    JanetByteView view = janet_getbytes(argv, 0);
27435
0
    uint8_t *buf = janet_string_begin(view.len);
27436
0
    for (int32_t i = 0; i < view.len; i++) {
27437
0
        uint8_t c = view.bytes[i];
27438
0
        if (c >= 97 && c <= 122) {
27439
0
            buf[i] = c - 32;
27440
0
        } else {
27441
0
            buf[i] = c;
27442
0
        }
27443
0
    }
27444
0
    return janet_wrap_string(janet_string_end(buf));
27445
0
}
27446
27447
JANET_CORE_FN(cfun_string_reverse,
27448
              "(string/reverse str)",
27449
0
              "Returns a string that is the reversed version of `str`.") {
27450
0
    janet_fixarity(argc, 1);
27451
0
    JanetByteView view = janet_getbytes(argv, 0);
27452
0
    uint8_t *buf = janet_string_begin(view.len);
27453
0
    int32_t i, j;
27454
0
    for (i = 0, j = view.len - 1; i < view.len; i++, j--) {
27455
0
        buf[i] = view.bytes[j];
27456
0
    }
27457
0
    return janet_wrap_string(janet_string_end(buf));
27458
0
}
27459
27460
0
static void findsetup(int32_t argc, Janet *argv, struct kmp_state *s, int32_t extra) {
27461
0
    janet_arity(argc, 2, 3 + extra);
27462
0
    JanetByteView pat = janet_getbytes(argv, 0);
27463
0
    JanetByteView text = janet_getbytes(argv, 1);
27464
0
    int32_t start = 0;
27465
0
    if (argc >= 3) {
27466
0
        start = janet_getinteger(argv, 2);
27467
0
        if (start < 0) janet_panic("expected non-negative start index");
27468
0
    }
27469
0
    kmp_init(s, text.bytes, text.len, pat.bytes, pat.len);
27470
0
    s->i = start;
27471
0
}
27472
27473
JANET_CORE_FN(cfun_string_find,
27474
              "(string/find patt str &opt start-index)",
27475
              "Searches for the first instance of pattern `patt` in string "
27476
              "`str`. Returns the index of the first character in `patt` if found, "
27477
0
              "otherwise returns nil.") {
27478
0
    int32_t result;
27479
0
    struct kmp_state state;
27480
0
    findsetup(argc, argv, &state, 0);
27481
0
    result = kmp_next(&state);
27482
0
    kmp_deinit(&state);
27483
0
    return result < 0
27484
0
           ? janet_wrap_nil()
27485
0
           : janet_wrap_integer(result);
27486
0
}
27487
27488
JANET_CORE_FN(cfun_string_hasprefix,
27489
              "(string/has-prefix? pfx str)",
27490
0
              "Tests whether `str` starts with `pfx`.") {
27491
0
    janet_fixarity(argc, 2);
27492
0
    JanetByteView prefix = janet_getbytes(argv, 0);
27493
0
    JanetByteView str = janet_getbytes(argv, 1);
27494
0
    return str.len < prefix.len
27495
0
           ? janet_wrap_false()
27496
0
           : janet_wrap_boolean(memcmp(prefix.bytes, str.bytes, prefix.len) == 0);
27497
0
}
27498
27499
JANET_CORE_FN(cfun_string_hassuffix,
27500
              "(string/has-suffix? sfx str)",
27501
0
              "Tests whether `str` ends with `sfx`.") {
27502
0
    janet_fixarity(argc, 2);
27503
0
    JanetByteView suffix = janet_getbytes(argv, 0);
27504
0
    JanetByteView str = janet_getbytes(argv, 1);
27505
0
    return str.len < suffix.len
27506
0
           ? janet_wrap_false()
27507
0
           : janet_wrap_boolean(memcmp(suffix.bytes,
27508
0
                                       str.bytes + str.len - suffix.len,
27509
0
                                       suffix.len) == 0);
27510
0
}
27511
27512
JANET_CORE_FN(cfun_string_findall,
27513
              "(string/find-all patt str &opt start-index)",
27514
              "Searches for all instances of pattern `patt` in string "
27515
              "`str`. Returns an array of all indices of found patterns. Overlapping "
27516
              "instances of the pattern are counted individually, meaning a byte in `str` "
27517
0
              "may contribute to multiple found patterns.") {
27518
0
    int32_t result;
27519
0
    struct kmp_state state;
27520
0
    findsetup(argc, argv, &state, 0);
27521
0
    JanetArray *array = janet_array(0);
27522
0
    while ((result = kmp_next(&state)) >= 0) {
27523
0
        janet_array_push(array, janet_wrap_integer(result));
27524
0
    }
27525
0
    kmp_deinit(&state);
27526
0
    return janet_wrap_array(array);
27527
0
}
27528
27529
struct replace_state {
27530
    struct kmp_state kmp;
27531
    Janet subst;
27532
};
27533
27534
0
static void replacesetup(int32_t argc, Janet *argv, struct replace_state *s) {
27535
0
    janet_arity(argc, 3, 4);
27536
0
    JanetByteView pat = janet_getbytes(argv, 0);
27537
0
    Janet subst = argv[1];
27538
0
    JanetByteView text = janet_getbytes(argv, 2);
27539
0
    int32_t start = 0;
27540
0
    if (argc == 4) {
27541
0
        start = janet_getinteger(argv, 3);
27542
0
        if (start < 0) janet_panic("expected non-negative start index");
27543
0
    }
27544
0
    kmp_init(&s->kmp, text.bytes, text.len, pat.bytes, pat.len);
27545
0
    s->kmp.i = start;
27546
0
    s->subst = subst;
27547
0
}
27548
27549
JANET_CORE_FN(cfun_string_replace,
27550
              "(string/replace patt subst str)",
27551
              "Replace the first occurrence of `patt` with `subst` in the string `str`. "
27552
              "If `subst` is a function, it will be called with `patt` only if a match is found, "
27553
              "and should return the actual replacement text to use. "
27554
0
              "Will return the new string if `patt` is found, otherwise returns `str`.") {
27555
0
    int32_t result;
27556
0
    struct replace_state s;
27557
0
    uint8_t *buf;
27558
0
    replacesetup(argc, argv, &s);
27559
0
    result = kmp_next(&s.kmp);
27560
0
    if (result < 0) {
27561
0
        kmp_deinit(&s.kmp);
27562
0
        return janet_stringv(s.kmp.text, s.kmp.textlen);
27563
0
    }
27564
0
    JanetByteView subst = janet_text_substitution(&s.subst, s.kmp.text + result, s.kmp.patlen, NULL);
27565
0
    buf = janet_string_begin(s.kmp.textlen - s.kmp.patlen + subst.len);
27566
0
    safe_memcpy(buf, s.kmp.text, result);
27567
0
    safe_memcpy(buf + result, subst.bytes, subst.len);
27568
0
    safe_memcpy(buf + result + subst.len,
27569
0
                s.kmp.text + result + s.kmp.patlen,
27570
0
                s.kmp.textlen - result - s.kmp.patlen);
27571
0
    kmp_deinit(&s.kmp);
27572
0
    return janet_wrap_string(janet_string_end(buf));
27573
0
}
27574
27575
JANET_CORE_FN(cfun_string_replaceall,
27576
              "(string/replace-all patt subst str)",
27577
              "Replace all instances of `patt` with `subst` in the string `str`. Overlapping "
27578
              "matches will not be counted, only the first match in such a span will be replaced. "
27579
              "If `subst` is a function, it will be called with `patt` once for each match, "
27580
              "and should return the actual replacement text to use. "
27581
0
              "Will return the new string if `patt` is found, otherwise returns `str`.") {
27582
0
    int32_t result;
27583
0
    struct replace_state s;
27584
0
    JanetBuffer b;
27585
0
    int32_t lastindex = 0;
27586
0
    replacesetup(argc, argv, &s);
27587
0
    janet_buffer_init(&b, s.kmp.textlen);
27588
0
    while ((result = kmp_next(&s.kmp)) >= 0) {
27589
0
        JanetByteView subst = janet_text_substitution(&s.subst, s.kmp.text + result, s.kmp.patlen, NULL);
27590
0
        janet_buffer_push_bytes(&b, s.kmp.text + lastindex, result - lastindex);
27591
0
        janet_buffer_push_bytes(&b, subst.bytes, subst.len);
27592
0
        lastindex = result + s.kmp.patlen;
27593
0
        kmp_seti(&s.kmp, lastindex);
27594
0
    }
27595
0
    janet_buffer_push_bytes(&b, s.kmp.text + lastindex, s.kmp.textlen - lastindex);
27596
0
    const uint8_t *ret = janet_string(b.data, b.count);
27597
0
    janet_buffer_deinit(&b);
27598
0
    kmp_deinit(&s.kmp);
27599
0
    return janet_wrap_string(ret);
27600
0
}
27601
27602
JANET_CORE_FN(cfun_string_split,
27603
              "(string/split delim str &opt start limit)",
27604
              "Splits a string `str` with delimiter `delim` and returns an array of "
27605
              "substrings. The substrings will not contain the delimiter `delim`. If `delim` "
27606
              "is not found, the returned array will have one element. Will start searching "
27607
              "for `delim` at the index `start` (if provided), and return up to a maximum "
27608
0
              "of `limit` results (if provided).") {
27609
0
    int32_t result;
27610
0
    JanetArray *array;
27611
0
    struct kmp_state state;
27612
0
    int32_t limit = -1, lastindex = 0;
27613
0
    if (argc == 4) {
27614
0
        limit = janet_getinteger(argv, 3);
27615
0
    }
27616
0
    findsetup(argc, argv, &state, 1);
27617
0
    array = janet_array(0);
27618
0
    while ((result = kmp_next(&state)) >= 0 && --limit) {
27619
0
        const uint8_t *slice = janet_string(state.text + lastindex, result - lastindex);
27620
0
        janet_array_push(array, janet_wrap_string(slice));
27621
0
        lastindex = result + state.patlen;
27622
0
        kmp_seti(&state, lastindex);
27623
0
    }
27624
0
    const uint8_t *slice = janet_string(state.text + lastindex, state.textlen - lastindex);
27625
0
    janet_array_push(array, janet_wrap_string(slice));
27626
0
    kmp_deinit(&state);
27627
0
    return janet_wrap_array(array);
27628
0
}
27629
27630
JANET_CORE_FN(cfun_string_checkset,
27631
              "(string/check-set set str)",
27632
              "Checks that the string `str` only contains bytes that appear in the string `set`. "
27633
              "Returns true if all bytes in `str` appear in `set`, false if some bytes in `str` do "
27634
0
              "not appear in `set`.") {
27635
0
    uint32_t bitset[8] = {0, 0, 0, 0, 0, 0, 0, 0};
27636
0
    janet_fixarity(argc, 2);
27637
0
    JanetByteView set = janet_getbytes(argv, 0);
27638
0
    JanetByteView str = janet_getbytes(argv, 1);
27639
    /* Populate set */
27640
0
    for (int32_t i = 0; i < set.len; i++) {
27641
0
        int index = set.bytes[i] >> 5;
27642
0
        uint32_t mask = 1 << (set.bytes[i] & 0x1F);
27643
0
        bitset[index] |= mask;
27644
0
    }
27645
    /* Check set */
27646
0
    for (int32_t i = 0; i < str.len; i++) {
27647
0
        int index = str.bytes[i] >> 5;
27648
0
        uint32_t mask = 1 << (str.bytes[i] & 0x1F);
27649
0
        if (!(bitset[index] & mask)) {
27650
0
            return janet_wrap_false();
27651
0
        }
27652
0
    }
27653
0
    return janet_wrap_true();
27654
0
}
27655
27656
JANET_CORE_FN(cfun_string_join,
27657
              "(string/join parts &opt sep)",
27658
              "Joins an array of strings into one string, optionally separated by "
27659
0
              "a separator string `sep`.") {
27660
0
    janet_arity(argc, 1, 2);
27661
0
    JanetView parts = janet_getindexed(argv, 0);
27662
0
    JanetByteView joiner;
27663
0
    if (argc == 2) {
27664
0
        joiner = janet_getbytes(argv, 1);
27665
0
    } else {
27666
0
        joiner.bytes = NULL;
27667
0
        joiner.len = 0;
27668
0
    }
27669
    /* Check args */
27670
0
    int32_t i;
27671
0
    int64_t finallen = 0;
27672
0
    for (i = 0; i < parts.len; i++) {
27673
0
        const uint8_t *chunk;
27674
0
        int32_t chunklen = 0;
27675
0
        if (!janet_bytes_view(parts.items[i], &chunk, &chunklen)) {
27676
0
            janet_panicf("item %d of parts is not a byte sequence, got %v", i, parts.items[i]);
27677
0
        }
27678
0
        if (i) finallen += joiner.len;
27679
0
        finallen += chunklen;
27680
0
        if (finallen > INT32_MAX)
27681
0
            janet_panic("result string too long");
27682
0
    }
27683
0
    uint8_t *buf, *out;
27684
0
    out = buf = janet_string_begin((int32_t) finallen);
27685
0
    for (i = 0; i < parts.len; i++) {
27686
0
        const uint8_t *chunk = NULL;
27687
0
        int32_t chunklen = 0;
27688
0
        if (i) {
27689
0
            safe_memcpy(out, joiner.bytes, joiner.len);
27690
0
            out += joiner.len;
27691
0
        }
27692
0
        janet_bytes_view(parts.items[i], &chunk, &chunklen);
27693
0
        safe_memcpy(out, chunk, chunklen);
27694
0
        out += chunklen;
27695
0
    }
27696
0
    return janet_wrap_string(janet_string_end(buf));
27697
0
}
27698
27699
JANET_CORE_FN(cfun_string_format,
27700
              "(string/format format & values)",
27701
              "Similar to C's `snprintf`, but specialized for operating with Janet values. Returns "
27702
              "a new string.\n\n"
27703
              "The following conversion specifiers are supported, where the upper case specifiers generate "
27704
              "upper case output:\n"
27705
              "- `c`: ASCII character.\n"
27706
              "- `d`, `i`: integer, formatted as a decimal number.\n"
27707
              "- `x`, `X`: integer, formatted as a hexadecimal number.\n"
27708
              "- `o`: integer, formatted as an octal number.\n"
27709
              "- `f`, `F`: floating point number, formatted as a decimal number.\n"
27710
              "- `e`, `E`: floating point number, formatted in scientific notation.\n"
27711
              "- `g`, `G`: floating point number, formatted in its shortest form.\n"
27712
              "- `a`, `A`: floating point number, formatted as a hexadecimal number.\n"
27713
              "- `s`: formatted as a string, precision indicates padding and maximum length.\n"
27714
              "- `t`: emit the type of the given value.\n"
27715
              "- `v`: format with (describe x)"
27716
              "- `V`: format with (string x)"
27717
              "- `j`: format to jdn (Janet data notation).\n"
27718
              "\n"
27719
              "The following conversion specifiers are used for \"pretty-printing\", where the upper-case "
27720
              "variants generate colored output. These speficiers can take a precision "
27721
              "argument to specify the maximum nesting depth to print.\n"
27722
              "- `p`, `P`: pretty format, truncating if necessary\n"
27723
              "- `m`, `M`: pretty format without truncating.\n"
27724
              "- `q`, `Q`: pretty format on one line, truncating if necessary.\n"
27725
0
              "- `n`, `N`: pretty format on one line without truncation.\n") {
27726
0
    janet_arity(argc, 1, -1);
27727
0
    JanetBuffer *buffer = janet_buffer(0);
27728
0
    const char *strfrmt = (const char *) janet_getstring(argv, 0);
27729
0
    janet_buffer_format(buffer, strfrmt, 0, argc, argv);
27730
0
    return janet_stringv(buffer->data, buffer->count);
27731
0
}
27732
27733
0
static int trim_help_checkset(JanetByteView set, uint8_t x) {
27734
0
    for (int32_t j = 0; j < set.len; j++)
27735
0
        if (set.bytes[j] == x)
27736
0
            return 1;
27737
0
    return 0;
27738
0
}
27739
27740
0
static int32_t trim_help_leftedge(JanetByteView str, JanetByteView set) {
27741
0
    for (int32_t i = 0; i < str.len; i++)
27742
0
        if (!trim_help_checkset(set, str.bytes[i]))
27743
0
            return i;
27744
0
    return str.len;
27745
0
}
27746
27747
0
static int32_t trim_help_rightedge(JanetByteView str, JanetByteView set) {
27748
0
    for (int32_t i = str.len - 1; i >= 0; i--)
27749
0
        if (!trim_help_checkset(set, str.bytes[i]))
27750
0
            return i + 1;
27751
0
    return 0;
27752
0
}
27753
27754
0
static void trim_help_args(int32_t argc, Janet *argv, JanetByteView *str, JanetByteView *set) {
27755
0
    janet_arity(argc, 1, 2);
27756
0
    *str = janet_getbytes(argv, 0);
27757
0
    if (argc >= 2) {
27758
0
        *set = janet_getbytes(argv, 1);
27759
0
    } else {
27760
0
        set->bytes = (const uint8_t *)(" \t\r\n\v\f");
27761
0
        set->len = 6;
27762
0
    }
27763
0
}
27764
27765
JANET_CORE_FN(cfun_string_trim,
27766
              "(string/trim str &opt set)",
27767
              "Trim leading and trailing whitespace from a byte sequence. If the argument "
27768
0
              "`set` is provided, consider only characters in `set` to be whitespace.") {
27769
0
    JanetByteView str, set;
27770
0
    trim_help_args(argc, argv, &str, &set);
27771
0
    int32_t left_edge = trim_help_leftedge(str, set);
27772
0
    int32_t right_edge = trim_help_rightedge(str, set);
27773
0
    if (right_edge < left_edge)
27774
0
        return janet_stringv(NULL, 0);
27775
0
    return janet_stringv(str.bytes + left_edge, right_edge - left_edge);
27776
0
}
27777
27778
JANET_CORE_FN(cfun_string_triml,
27779
              "(string/triml str &opt set)",
27780
              "Trim leading whitespace from a byte sequence. If the argument "
27781
0
              "`set` is provided, consider only characters in `set` to be whitespace.") {
27782
0
    JanetByteView str, set;
27783
0
    trim_help_args(argc, argv, &str, &set);
27784
0
    int32_t left_edge = trim_help_leftedge(str, set);
27785
0
    return janet_stringv(str.bytes + left_edge, str.len - left_edge);
27786
0
}
27787
27788
JANET_CORE_FN(cfun_string_trimr,
27789
              "(string/trimr str &opt set)",
27790
              "Trim trailing whitespace from a byte sequence. If the argument "
27791
0
              "`set` is provided, consider only characters in `set` to be whitespace.") {
27792
0
    JanetByteView str, set;
27793
0
    trim_help_args(argc, argv, &str, &set);
27794
0
    int32_t right_edge = trim_help_rightedge(str, set);
27795
0
    return janet_stringv(str.bytes, right_edge);
27796
0
}
27797
27798
/* Module entry point */
27799
0
void janet_lib_string(JanetTable *env) {
27800
0
    JanetRegExt string_cfuns[] = {
27801
0
        JANET_CORE_REG("string/slice", cfun_string_slice),
27802
0
        JANET_CORE_REG("keyword/slice", cfun_keyword_slice),
27803
0
        JANET_CORE_REG("symbol/slice", cfun_symbol_slice),
27804
0
        JANET_CORE_REG("string/repeat", cfun_string_repeat),
27805
0
        JANET_CORE_REG("string/bytes", cfun_string_bytes),
27806
0
        JANET_CORE_REG("string/from-bytes", cfun_string_frombytes),
27807
0
        JANET_CORE_REG("string/ascii-lower", cfun_string_asciilower),
27808
0
        JANET_CORE_REG("string/ascii-upper", cfun_string_asciiupper),
27809
0
        JANET_CORE_REG("string/reverse", cfun_string_reverse),
27810
0
        JANET_CORE_REG("string/find", cfun_string_find),
27811
0
        JANET_CORE_REG("string/find-all", cfun_string_findall),
27812
0
        JANET_CORE_REG("string/has-prefix?", cfun_string_hasprefix),
27813
0
        JANET_CORE_REG("string/has-suffix?", cfun_string_hassuffix),
27814
0
        JANET_CORE_REG("string/replace", cfun_string_replace),
27815
0
        JANET_CORE_REG("string/replace-all", cfun_string_replaceall),
27816
0
        JANET_CORE_REG("string/split", cfun_string_split),
27817
0
        JANET_CORE_REG("string/check-set", cfun_string_checkset),
27818
0
        JANET_CORE_REG("string/join", cfun_string_join),
27819
0
        JANET_CORE_REG("string/format", cfun_string_format),
27820
0
        JANET_CORE_REG("string/trim", cfun_string_trim),
27821
0
        JANET_CORE_REG("string/triml", cfun_string_triml),
27822
0
        JANET_CORE_REG("string/trimr", cfun_string_trimr),
27823
0
        JANET_REG_END
27824
0
    };
27825
0
    janet_core_cfuns_ext(env, NULL, string_cfuns);
27826
0
}
27827
27828
27829
/* src/core/strtod.c */
27830
#line 0 "src/core/strtod.c"
27831
27832
/*
27833
* Copyright (c) 2023 Calvin Rose
27834
*
27835
* Permission is hereby granted, free of charge, to any person obtaining a copy
27836
* of this software and associated documentation files (the "Software"), to
27837
* deal in the Software without restriction, including without limitation the
27838
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
27839
* sell copies of the Software, and to permit persons to whom the Software is
27840
* furnished to do so, subject to the following conditions:
27841
*
27842
* The above copyright notice and this permission notice shall be included in
27843
* all copies or substantial portions of the Software.
27844
*
27845
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
27846
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
27847
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
27848
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27849
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
27850
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
27851
* IN THE SOFTWARE.
27852
*/
27853
27854
/* Use a custom double parser instead of libc's strtod for better portability
27855
 * and control.
27856
 *
27857
 * This version has been modified for much greater flexibility in parsing, such
27858
 * as choosing the radix and supporting scientific notation with any radix.
27859
 *
27860
 * Numbers are of the form [-+]R[rR]I.F[eE&][-+]X in pseudo-regex form, where R
27861
 * is the radix, I is the integer part, F is the fractional part, and X is the
27862
 * exponent. All signs, radix, decimal point, fractional part, and exponent can
27863
 * be omitted.  The radix is assumed to be 10 if omitted, and the E or e
27864
 * separator for the exponent can only be used when the radix is 10. This is
27865
 * because E is a valid digit in bases 15 or greater. For bases greater than
27866
 * 10, the letters are used as digits. A through Z correspond to the digits 10
27867
 * through 35, and the lowercase letters have the same values. The radix number
27868
 * is always in base 10. For example, a hexidecimal number could be written
27869
 * '16rdeadbeef'. janet_scan_number also supports some c style syntax for
27870
 * hexidecimal literals. The previous number could also be written
27871
 * '0xdeadbeef'.
27872
 */
27873
27874
#ifndef JANET_AMALG
27875
#include "features.h"
27876
#include <janet.h>
27877
#include "util.h"
27878
#endif
27879
27880
#include <math.h>
27881
#include <string.h>
27882
27883
/* Lookup table for getting values of characters when parsing numbers. Handles
27884
 * digits 0-9 and a-z (and A-Z). A-Z have values of 10 to 35. */
27885
static uint8_t digit_lookup[128] = {
27886
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
27887
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
27888
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
27889
    0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
27890
    0xff, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
27891
    25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 0xff, 0xff, 0xff, 0xff, 0xff,
27892
    0xff, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
27893
    25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 0xff, 0xff, 0xff, 0xff, 0xff
27894
};
27895
27896
22.2k
#define BIGNAT_NBIT 31
27897
11.3G
#define BIGNAT_BASE 0x80000000U
27898
27899
/* Allow for large mantissa. BigNat is a natural number. */
27900
struct BigNat {
27901
    uint32_t first_digit; /* First digit so we don't need to allocate when not needed. */
27902
    int32_t n; /* n digits */
27903
    int32_t cap; /* allocated digit capacity */
27904
    uint32_t *digits; /* Each digit is base (2 ^ 31). Digits are least significant first. */
27905
};
27906
27907
/* Initialize a bignat to 0 */
27908
129k
static void bignat_zero(struct BigNat *x) {
27909
129k
    x->first_digit = 0;
27910
129k
    x->n = 0;
27911
129k
    x->cap = 0;
27912
129k
    x->digits = NULL;
27913
129k
}
27914
27915
/* Allocate n more digits for mant. Return a pointer to these digits. */
27916
173k
static uint32_t *bignat_extra(struct BigNat *mant, int32_t n) {
27917
173k
    int32_t oldn = mant->n;
27918
173k
    int32_t newn = oldn + n;
27919
173k
    if (mant->cap < newn) {
27920
11.3k
        int32_t newcap = 2 * newn;
27921
11.3k
        uint32_t *mem = janet_realloc(mant->digits, (size_t) newcap * sizeof(uint32_t));
27922
11.3k
        if (NULL == mem) {
27923
0
            JANET_OUT_OF_MEMORY;
27924
0
        }
27925
11.3k
        mant->cap = newcap;
27926
11.3k
        mant->digits = mem;
27927
11.3k
    }
27928
173k
    mant->n = newn;
27929
173k
    return mant->digits + oldn;
27930
173k
}
27931
27932
/* Append a digit */
27933
171k
static void bignat_append(struct BigNat *mant, uint32_t dig) {
27934
171k
    bignat_extra(mant, 1)[0] = dig;
27935
171k
}
27936
27937
/* Multiply the mantissa mant by a factor and the add a term
27938
 * in one operation. factor will be between 2 and 36^4,
27939
 * term will be between 0 and 36. */
27940
2.15M
static void bignat_muladd(struct BigNat *mant, uint32_t factor, uint32_t term) {
27941
2.15M
    int32_t i;
27942
2.15M
    uint64_t carry = ((uint64_t) mant->first_digit) * factor + term;
27943
2.15M
    mant->first_digit = carry % BIGNAT_BASE;
27944
2.15M
    carry /= BIGNAT_BASE;
27945
3.52G
    for (i = 0; i < mant->n; i++) {
27946
3.52G
        carry += ((uint64_t) mant->digits[i]) * factor;
27947
3.52G
        mant->digits[i] = carry % BIGNAT_BASE;
27948
3.52G
        carry /= BIGNAT_BASE;
27949
3.52G
    }
27950
2.15M
    if (carry) bignat_append(mant, (uint32_t) carry);
27951
2.15M
}
27952
27953
/* Divide the mantissa mant by a factor. Drop the remainder. */
27954
423k
static void bignat_div(struct BigNat *mant, uint32_t divisor) {
27955
423k
    int32_t i;
27956
423k
    uint32_t quotient, remainder;
27957
423k
    uint64_t dividend;
27958
423k
    remainder = 0, quotient = 0;
27959
4.33G
    for (i = mant->n - 1; i >= 0; i--) {
27960
4.33G
        dividend = ((uint64_t)remainder * BIGNAT_BASE) + mant->digits[i];
27961
4.33G
        if (i < mant->n - 1) mant->digits[i + 1] = quotient;
27962
4.33G
        quotient = (uint32_t)(dividend / divisor);
27963
4.33G
        remainder = (uint32_t)(dividend % divisor);
27964
4.33G
        mant->digits[i] = remainder;
27965
4.33G
    }
27966
423k
    dividend = ((uint64_t)remainder * BIGNAT_BASE) + mant->first_digit;
27967
423k
    if (mant->n && mant->digits[mant->n - 1] == 0) mant->n--;
27968
423k
    mant->first_digit = (uint32_t)(dividend / divisor);
27969
423k
}
27970
27971
/* Shift left by a multiple of BIGNAT_NBIT */
27972
2.10k
static void bignat_lshift_n(struct BigNat *mant, int n) {
27973
2.10k
    if (!n) return;
27974
2.10k
    int32_t oldn = mant->n;
27975
2.10k
    bignat_extra(mant, n);
27976
2.10k
    memmove(mant->digits + n, mant->digits, sizeof(uint32_t) * oldn);
27977
2.10k
    memset(mant->digits, 0, sizeof(uint32_t) * (n - 1));
27978
2.10k
    mant->digits[n - 1] = mant->first_digit;
27979
2.10k
    mant->first_digit = 0;
27980
2.10k
}
27981
27982
#ifdef __GNUC__
27983
6.70k
#define clz(x) __builtin_clz(x)
27984
#else
27985
static int clz(uint32_t x) {
27986
    int n = 0;
27987
    if (x <= 0x0000ffff) n += 16, x <<= 16;
27988
    if (x <= 0x00ffffff) n += 8, x <<= 8;
27989
    if (x <= 0x0fffffff) n += 4, x <<= 4;
27990
    if (x <= 0x3fffffff) n += 2, x <<= 2;
27991
    if (x <= 0x7fffffff) n ++;
27992
    return n;
27993
}
27994
#endif
27995
27996
/* Extract double value from mantissa */
27997
24.0k
static double bignat_extract(struct BigNat *mant, int32_t exponent2) {
27998
24.0k
    uint64_t top53;
27999
24.0k
    int32_t n = mant->n;
28000
    /* Get most significant 53 bits from mant. Bit 52 (0 indexed) should
28001
     * always be 1. This is essentially a large right shift on mant.*/
28002
24.0k
    if (n) {
28003
        /* Two or more digits */
28004
6.70k
        uint64_t d1 = mant->digits[n - 1]; /* MSD (non-zero) */
28005
6.70k
        uint64_t d2 = (n == 1) ? mant->first_digit : mant->digits[n - 2];
28006
6.70k
        uint64_t d3 = (n > 2) ? mant->digits[n - 3] : (n == 2) ? mant->first_digit : 0;
28007
6.70k
        int lz = clz((uint32_t) d1);
28008
6.70k
        int nbits = 32 - lz;
28009
        /* First get 54 bits */
28010
6.70k
        top53 = (d2 << (54 - BIGNAT_NBIT)) + (d3 >> (2 * BIGNAT_NBIT - 54));
28011
6.70k
        top53 >>= nbits;
28012
6.70k
        top53 |= (d1 << (54 - nbits));
28013
        /* Rounding based on lowest bit of 54 */
28014
6.70k
        if (top53 & 1) top53++;
28015
6.70k
        top53 >>= 1;
28016
6.70k
        if (top53 > 0x1FffffFFFFffffUL) {
28017
537
            top53 >>= 1;
28018
537
            exponent2++;
28019
537
        }
28020
        /* Correct exponent - to correct for large right shift to mantissa. */
28021
6.70k
        exponent2 += (nbits - 53) + BIGNAT_NBIT * n;
28022
17.3k
    } else {
28023
        /* One digit */
28024
17.3k
        top53 = mant->first_digit;
28025
17.3k
    }
28026
24.0k
    return ldexp((double)top53, exponent2);
28027
24.0k
}
28028
28029
/* Read in a mantissa and exponent of a certain base, and give
28030
 * back the double value. Should properly handle 0s, infinities, and
28031
 * denormalized numbers. (When the exponent values are too large or small) */
28032
static double convert(
28033
    int negative,
28034
    struct BigNat *mant,
28035
    int32_t base,
28036
31.1k
    int32_t exponent) {
28037
28038
31.1k
    int32_t exponent2 = 0;
28039
28040
    /* Approximate exponent in base 2 of mant and exponent. This should get us a good estimate of the final size of the
28041
     * number, within * 2^32 or so. */
28042
31.1k
    int64_t mant_exp2_approx = mant->n * 32 + 16;
28043
31.1k
    int64_t exp_exp2_approx = (int64_t)(floor(log2(base) * exponent));
28044
31.1k
    int64_t exp2_approx = mant_exp2_approx + exp_exp2_approx;
28045
28046
    /* Short circuit zero, huge, and small numbers. We use the exponent range of valid IEEE754 doubles (-1022, 1023)
28047
     * with a healthy buffer to allow for inaccuracies in the approximation and denormailzed numbers. */
28048
31.1k
    if (mant->n == 0 && mant->first_digit == 0)
28049
6.46k
        return negative ? -0.0 : 0.0;
28050
24.6k
    if (exp2_approx > 1176)
28051
369
        return negative ? -INFINITY : INFINITY;
28052
24.2k
    if (exp2_approx < -1175)
28053
253
        return negative ? -0.0 : 0.0;
28054
28055
    /* Final value is X = mant * base ^ exponent * 2 ^ exponent2
28056
     * Get exponent to zero while holding X constant. */
28057
28058
    /* Positive exponents are simple */
28059
76.9k
    for (; exponent > 3; exponent -= 4) bignat_muladd(mant, base * base * base * base, 0);
28060
26.8k
    for (; exponent > 1; exponent -= 2) bignat_muladd(mant, base * base, 0);
28061
27.2k
    for (; exponent > 0; exponent -= 1) bignat_muladd(mant, base, 0);
28062
28063
    /* Negative exponents are tricky - we don't want to loose bits
28064
     * from integer division, so we need to premultiply. */
28065
24.0k
    if (exponent < 0) {
28066
2.10k
        int32_t shamt = 5 - exponent / 4;
28067
2.10k
        bignat_lshift_n(mant, shamt);
28068
2.10k
        exponent2 -= shamt * BIGNAT_NBIT;
28069
422k
        for (; exponent < -3; exponent += 4) bignat_div(mant, base * base * base * base);
28070
2.79k
        for (; exponent < -1; exponent += 2) bignat_div(mant, base * base);
28071
3.66k
        for (; exponent <  0; exponent += 1) bignat_div(mant, base);
28072
2.10k
    }
28073
28074
24.0k
    return negative
28075
24.0k
           ? -bignat_extract(mant, exponent2)
28076
24.0k
           : bignat_extract(mant, exponent2);
28077
24.2k
}
28078
28079
/* Scan a real (double) from a string. If the string cannot be converted into
28080
 * and integer, return 0. */
28081
int janet_scan_number_base(
28082
    const uint8_t *str,
28083
    int32_t len,
28084
    int32_t base,
28085
129k
    double *out) {
28086
129k
    const uint8_t *end = str + len;
28087
129k
    int seenadigit = 0;
28088
129k
    int ex = 0;
28089
129k
    int seenpoint = 0;
28090
129k
    int foundexp = 0;
28091
129k
    int neg = 0;
28092
129k
    struct BigNat mant;
28093
129k
    bignat_zero(&mant);
28094
28095
    /* Prevent some kinds of overflow bugs relating to the exponent
28096
     * overflowing.  For example, if a string was passed 2GB worth of 0s after
28097
     * the decimal point, exponent could wrap around and become positive. It's
28098
     * easier to reject ridiculously large inputs than to check for overflows.
28099
     * */
28100
129k
    if (len > INT32_MAX / 40) goto error;
28101
28102
    /* Get sign */
28103
129k
    if (str >= end) goto error;
28104
129k
    if (*str == '-') {
28105
96.9k
        neg = 1;
28106
96.9k
        str++;
28107
96.9k
    } else if (*str == '+') {
28108
3.19k
        str++;
28109
3.19k
    }
28110
28111
    /* Check for leading 0x or digit digit r */
28112
129k
    if (base == 0) {
28113
129k
        if (str + 1 < end && str[0] == '0' && str[1] == 'x') {
28114
199
            base = 16;
28115
199
            str += 2;
28116
129k
        } else if (str + 1 < end  &&
28117
129k
                   str[0] >= '0' && str[0] <= '9' &&
28118
129k
                   str[1] == 'r') {
28119
387
            base = str[0] - '0';
28120
387
            str += 2;
28121
129k
        } else if (str + 2 < end  &&
28122
129k
                   str[0] >= '0' && str[0] <= '9' &&
28123
129k
                   str[1] >= '0' && str[1] <= '9' &&
28124
129k
                   str[2] == 'r') {
28125
1.76k
            base = 10 * (str[0] - '0') + (str[1] - '0');
28126
1.76k
            if (base < 2 || base > 36) goto error;
28127
1.37k
            str += 3;
28128
1.37k
        }
28129
129k
    }
28130
28131
    /* If still base is 0, set to default (10) */
28132
129k
    if (base == 0) {
28133
127k
        base = 10;
28134
127k
    }
28135
28136
    /* Skip leading zeros */
28137
159k
    while (str < end && (*str == '0' || *str == '.')) {
28138
30.6k
        if (seenpoint) ex--;
28139
30.6k
        if (*str == '.') {
28140
6.88k
            if (seenpoint) goto error;
28141
6.52k
            seenpoint = 1;
28142
23.7k
        } else {
28143
23.7k
            seenadigit = 1;
28144
23.7k
        }
28145
30.2k
        str++;
28146
30.2k
    }
28147
28148
    /* Parse significant digits */
28149
2.22M
    while (str < end) {
28150
2.11M
        if (*str == '.') {
28151
961
            if (seenpoint) goto error;
28152
760
            seenpoint = 1;
28153
2.11M
        } else if (*str == '&') {
28154
6.39k
            foundexp = 1;
28155
6.39k
            break;
28156
2.10M
        } else if (base == 10 && (*str == 'E' || *str == 'e')) {
28157
5.11k
            foundexp = 1;
28158
5.11k
            break;
28159
2.09M
        } else if (*str == '_') {
28160
764
            if (!seenadigit) goto error;
28161
2.09M
        } else {
28162
2.09M
            int digit = digit_lookup[*str & 0x7F];
28163
2.09M
            if (*str > 127 || digit >= base) goto error;
28164
2.09M
            if (seenpoint) ex--;
28165
2.09M
            bignat_muladd(&mant, base, digit);
28166
2.09M
            seenadigit = 1;
28167
2.09M
        }
28168
2.09M
        str++;
28169
2.09M
    }
28170
28171
124k
    if (!seenadigit)
28172
89.3k
        goto error;
28173
28174
    /* Read exponent */
28175
34.8k
    if (str < end && foundexp) {
28176
9.17k
        int eneg = 0;
28177
9.17k
        int32_t ee = 0;
28178
9.17k
        seenadigit = 0;
28179
9.17k
        str++;
28180
9.17k
        if (str >= end) goto error;
28181
8.19k
        if (*str == '-') {
28182
733
            eneg = 1;
28183
733
            str++;
28184
7.45k
        } else if (*str == '+') {
28185
1.92k
            str++;
28186
1.92k
        }
28187
        /* Skip leading 0s in exponent */
28188
9.01k
        while (str < end && *str == '0') {
28189
821
            str++;
28190
821
            seenadigit = 1;
28191
821
        }
28192
20.2k
        while (str < end) {
28193
12.8k
            int digit = digit_lookup[*str & 0x7F];
28194
12.8k
            if (*str > 127 || digit >= base) goto error;
28195
12.0k
            if (ee < (INT32_MAX / 40)) {
28196
11.6k
                ee = base * ee + digit;
28197
11.6k
            }
28198
12.0k
            str++;
28199
12.0k
            seenadigit = 1;
28200
12.0k
        }
28201
7.41k
        if (eneg) ex -= ee;
28202
6.68k
        else ex += ee;
28203
7.41k
    }
28204
28205
33.0k
    if (!seenadigit)
28206
1.94k
        goto error;
28207
28208
31.1k
    *out = convert(neg, &mant, base, ex);
28209
31.1k
    janet_free(mant.digits);
28210
31.1k
    return 0;
28211
28212
98.7k
error:
28213
98.7k
    janet_free(mant.digits);
28214
98.7k
    return 1;
28215
33.0k
}
28216
28217
int janet_scan_number(
28218
    const uint8_t *str,
28219
    int32_t len,
28220
129k
    double *out) {
28221
129k
    return janet_scan_number_base(str, len, 0, out);
28222
129k
}
28223
28224
#ifdef JANET_INT_TYPES
28225
28226
static int scan_uint64(
28227
    const uint8_t *str,
28228
    int32_t len,
28229
    uint64_t *out,
28230
0
    int *neg) {
28231
0
    const uint8_t *end = str + len;
28232
0
    int seenadigit = 0;
28233
0
    int base = 10;
28234
0
    *neg = 0;
28235
0
    *out = 0;
28236
0
    uint64_t accum = 0;
28237
    /* len max is INT64_MAX in base 2 with _ between each bits */
28238
    /* '2r' + 64 bits + 63 _  + sign = 130 => 150 for some leading  */
28239
    /* zeros */
28240
0
    if (len > 150) return 0;
28241
    /* Get sign */
28242
0
    if (str >= end) return 0;
28243
0
    if (*str == '-') {
28244
0
        *neg = 1;
28245
0
        str++;
28246
0
    } else if (*str == '+') {
28247
0
        str++;
28248
0
    }
28249
    /* Check for leading 0x or digit digit r */
28250
0
    if (str + 1 < end && str[0] == '0' && str[1] == 'x') {
28251
0
        base = 16;
28252
0
        str += 2;
28253
0
    } else if (str + 1 < end  &&
28254
0
               str[0] >= '0' && str[0] <= '9' &&
28255
0
               str[1] == 'r') {
28256
0
        base = str[0] - '0';
28257
0
        str += 2;
28258
0
    } else if (str + 2 < end  &&
28259
0
               str[0] >= '0' && str[0] <= '9' &&
28260
0
               str[1] >= '0' && str[1] <= '9' &&
28261
0
               str[2] == 'r') {
28262
0
        base = 10 * (str[0] - '0') + (str[1] - '0');
28263
0
        if (base < 2 || base > 36) return 0;
28264
0
        str += 3;
28265
0
    }
28266
28267
    /* Skip leading zeros */
28268
0
    while (str < end && *str == '0') {
28269
0
        seenadigit = 1;
28270
0
        str++;
28271
0
    }
28272
    /* Parse significant digits */
28273
0
    while (str < end) {
28274
0
        if (*str == '_') {
28275
0
            if (!seenadigit) return 0;
28276
0
        } else {
28277
0
            int digit = digit_lookup[*str & 0x7F];
28278
0
            if (*str > 127 || digit >= base) return 0;
28279
0
            if (accum > (UINT64_MAX - digit) / base) return 0;
28280
0
            accum = accum * base + digit;
28281
0
            seenadigit = 1;
28282
0
        }
28283
0
        str++;
28284
0
    }
28285
28286
0
    if (!seenadigit) return 0;
28287
0
    *out = accum;
28288
0
    return 1;
28289
0
}
28290
28291
0
int janet_scan_int64(const uint8_t *str, int32_t len, int64_t *out) {
28292
0
    int neg;
28293
0
    uint64_t bi;
28294
0
    if (scan_uint64(str, len, &bi, &neg)) {
28295
0
        if (neg && bi <= ((UINT64_MAX / 2) + 1)) {
28296
0
            if (bi > INT64_MAX) {
28297
0
                *out = INT64_MIN;
28298
0
            } else {
28299
0
                *out = -((int64_t) bi);
28300
0
            }
28301
0
            return 1;
28302
0
        }
28303
0
        if (!neg && bi <= INT64_MAX) {
28304
0
            *out = (int64_t) bi;
28305
0
            return 1;
28306
0
        }
28307
0
    }
28308
0
    return 0;
28309
0
}
28310
28311
0
int janet_scan_uint64(const uint8_t *str, int32_t len, uint64_t *out) {
28312
0
    int neg;
28313
0
    uint64_t bi;
28314
0
    if (scan_uint64(str, len, &bi, &neg)) {
28315
0
        if (!neg) {
28316
0
            *out = bi;
28317
0
            return 1;
28318
0
        }
28319
0
    }
28320
0
    return 0;
28321
0
}
28322
28323
#endif
28324
28325
28326
/* src/core/struct.c */
28327
#line 0 "src/core/struct.c"
28328
28329
/*
28330
* Copyright (c) 2023 Calvin Rose
28331
*
28332
* Permission is hereby granted, free of charge, to any person obtaining a copy
28333
* of this software and associated documentation files (the "Software"), to
28334
* deal in the Software without restriction, including without limitation the
28335
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
28336
* sell copies of the Software, and to permit persons to whom the Software is
28337
* furnished to do so, subject to the following conditions:
28338
*
28339
* The above copyright notice and this permission notice shall be included in
28340
* all copies or substantial portions of the Software.
28341
*
28342
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
28343
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
28344
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28345
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28346
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28347
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
28348
* IN THE SOFTWARE.
28349
*/
28350
28351
#ifndef JANET_AMALG
28352
#include "features.h"
28353
#include <janet.h>
28354
#include "gc.h"
28355
#include "util.h"
28356
#include <math.h>
28357
#endif
28358
28359
/* Begin creation of a struct */
28360
3.57M
JanetKV *janet_struct_begin(int32_t count) {
28361
    /* Calculate capacity as power of 2 after 2 * count. */
28362
3.57M
    int32_t capacity = janet_tablen(2 * count);
28363
3.57M
    if (capacity < 0) capacity = janet_tablen(count + 1);
28364
28365
3.57M
    size_t size = sizeof(JanetStructHead) + (size_t) capacity * sizeof(JanetKV);
28366
3.57M
    JanetStructHead *head = janet_gcalloc(JANET_MEMORY_STRUCT, size);
28367
3.57M
    head->length = count;
28368
3.57M
    head->capacity = capacity;
28369
3.57M
    head->hash = 0;
28370
3.57M
    head->proto = NULL;
28371
28372
3.57M
    JanetKV *st = (JanetKV *)(head->data);
28373
3.57M
    janet_memempty(st, capacity);
28374
3.57M
    return st;
28375
3.57M
}
28376
28377
/* Find an item in a struct without looking for prototypes. Should be similar to janet_dict_find, but
28378
 * specialized to structs (slightly more compact). */
28379
0
const JanetKV *janet_struct_find(const JanetKV *st, Janet key) {
28380
0
    int32_t cap = janet_struct_capacity(st);
28381
0
    int32_t index = janet_maphash(cap, janet_hash(key));
28382
0
    int32_t i;
28383
0
    for (i = index; i < cap; i++)
28384
0
        if (janet_checktype(st[i].key, JANET_NIL) || janet_equals(st[i].key, key))
28385
0
            return st + i;
28386
0
    for (i = 0; i < index; i++)
28387
0
        if (janet_checktype(st[i].key, JANET_NIL) || janet_equals(st[i].key, key))
28388
0
            return st + i;
28389
0
    return NULL;
28390
0
}
28391
28392
/* Put a kv pair into a struct that has not yet been fully constructed.
28393
 * Nil keys and values are ignored, extra keys are ignore, and duplicate keys are
28394
 * ignored.
28395
 *
28396
 * Runs will be in sorted order, as the collisions resolver essentially
28397
 * preforms an in-place insertion sort. This ensures the internal structure of the
28398
 * hash map is independent of insertion order.
28399
 */
28400
2.98M
void janet_struct_put_ext(JanetKV *st, Janet key, Janet value, int replace) {
28401
2.98M
    int32_t cap = janet_struct_capacity(st);
28402
2.98M
    int32_t hash = janet_hash(key);
28403
2.98M
    int32_t index = janet_maphash(cap, hash);
28404
2.98M
    int32_t i, j, dist;
28405
2.98M
    int32_t bounds[4] = {index, cap, 0, index};
28406
2.98M
    if (janet_checktype(key, JANET_NIL) || janet_checktype(value, JANET_NIL)) return;
28407
2.98M
    if (janet_checktype(key, JANET_NUMBER) && isnan(janet_unwrap_number(key))) return;
28408
    /* Avoid extra items */
28409
2.98M
    if (janet_struct_hash(st) == janet_struct_length(st)) return;
28410
2.98M
    for (dist = 0, j = 0; j < 4; j += 2)
28411
3.57M
        for (i = bounds[j]; i < bounds[j + 1]; i++, dist++) {
28412
3.57M
            int status;
28413
3.57M
            int32_t otherhash;
28414
3.57M
            int32_t otherindex, otherdist;
28415
3.57M
            JanetKV *kv = st + i;
28416
            /* We found an empty slot, so just add key and value */
28417
3.57M
            if (janet_checktype(kv->key, JANET_NIL)) {
28418
1.40M
                kv->key = key;
28419
1.40M
                kv->value = value;
28420
                /* Update the temporary count */
28421
1.40M
                janet_struct_hash(st)++;
28422
1.40M
                return;
28423
1.40M
            }
28424
            /* Robinhood hashing - check if colliding kv pair
28425
             * is closer to their source than current. We use robinhood
28426
             * hashing to ensure that equivalent structs that are constructed
28427
             * with different order have the same internal layout, and therefor
28428
             * will compare properly - i.e., {1 2 3 4} should equal {3 4 1 2}.
28429
             * Collisions are resolved via an insertion sort insertion. */
28430
2.16M
            otherhash = janet_hash(kv->key);
28431
2.16M
            otherindex = janet_maphash(cap, otherhash);
28432
2.16M
            otherdist = (i + cap - otherindex) & (cap - 1);
28433
2.16M
            if (dist < otherdist)
28434
98.8k
                status = -1;
28435
2.06M
            else if (otherdist < dist)
28436
66.6k
                status = 1;
28437
1.99M
            else if (hash < otherhash)
28438
176k
                status = -1;
28439
1.82M
            else if (otherhash < hash)
28440
87.7k
                status = 1;
28441
1.73M
            else
28442
1.73M
                status = janet_compare(key, kv->key);
28443
            /* If other is closer to their ideal slot */
28444
2.16M
            if (status == 1) {
28445
                /* Swap current kv pair with pair in slot */
28446
155k
                JanetKV temp = *kv;
28447
155k
                kv->key = key;
28448
155k
                kv->value = value;
28449
155k
                key = temp.key;
28450
155k
                value = temp.value;
28451
                /* Save dist and hash of new kv pair */
28452
155k
                dist = otherdist;
28453
155k
                hash = otherhash;
28454
2.00M
            } else if (status == 0) {
28455
1.58M
                if (replace) {
28456
                    /* A key was added to the struct more than once - replace old value */
28457
1.58M
                    kv->value = value;
28458
1.58M
                }
28459
1.58M
                return;
28460
1.58M
            }
28461
2.16M
        }
28462
2.98M
}
28463
28464
2.98M
void janet_struct_put(JanetKV *st, Janet key, Janet value) {
28465
2.98M
    janet_struct_put_ext(st, key, value, 1);
28466
2.98M
}
28467
28468
/* Finish building a struct */
28469
3.57M
const JanetKV *janet_struct_end(JanetKV *st) {
28470
3.57M
    if (janet_struct_hash(st) != janet_struct_length(st)) {
28471
        /* Error building struct, probably duplicate values. We need to rebuild
28472
         * the struct using only the values that went in. The second creation should always
28473
         * succeed. */
28474
984
        JanetKV *newst = janet_struct_begin(janet_struct_hash(st));
28475
6.82M
        for (int32_t i = 0; i < janet_struct_capacity(st); i++) {
28476
6.82M
            JanetKV *kv = st + i;
28477
6.82M
            if (!janet_checktype(kv->key, JANET_NIL)) {
28478
698k
                janet_struct_put(newst, kv->key, kv->value);
28479
698k
            }
28480
6.82M
        }
28481
984
        janet_struct_proto(newst) = janet_struct_proto(st);
28482
984
        st = newst;
28483
984
    }
28484
3.57M
    janet_struct_hash(st) = janet_kv_calchash(st, janet_struct_capacity(st));
28485
3.57M
    if (janet_struct_proto(st)) {
28486
0
        janet_struct_hash(st) += 2654435761u * janet_struct_hash(janet_struct_proto(st));
28487
0
    }
28488
3.57M
    return (const JanetKV *)st;
28489
3.57M
}
28490
28491
/* Get an item from a struct without looking into prototypes. */
28492
0
Janet janet_struct_rawget(const JanetKV *st, Janet key) {
28493
0
    const JanetKV *kv = janet_struct_find(st, key);
28494
0
    return kv ? kv->value : janet_wrap_nil();
28495
0
}
28496
28497
/* Get an item from a struct */
28498
0
Janet janet_struct_get(const JanetKV *st, Janet key) {
28499
0
    for (int i = JANET_MAX_PROTO_DEPTH; st && i; --i, st = janet_struct_proto(st)) {
28500
0
        const JanetKV *kv = janet_struct_find(st, key);
28501
0
        if (NULL != kv && !janet_checktype(kv->key, JANET_NIL)) {
28502
0
            return kv->value;
28503
0
        }
28504
0
    }
28505
0
    return janet_wrap_nil();
28506
0
}
28507
28508
/* Get an item from a struct, and record which prototype the item came from. */
28509
0
Janet janet_struct_get_ex(const JanetKV *st, Janet key, JanetStruct *which) {
28510
0
    for (int i = JANET_MAX_PROTO_DEPTH; st && i; --i, st = janet_struct_proto(st)) {
28511
0
        const JanetKV *kv = janet_struct_find(st, key);
28512
0
        if (NULL != kv && !janet_checktype(kv->key, JANET_NIL)) {
28513
0
            *which = st;
28514
0
            return kv->value;
28515
0
        }
28516
0
    }
28517
0
    return janet_wrap_nil();
28518
0
}
28519
28520
/* Convert struct to table */
28521
0
JanetTable *janet_struct_to_table(const JanetKV *st) {
28522
0
    JanetTable *table = janet_table(janet_struct_capacity(st));
28523
0
    int32_t i;
28524
0
    for (i = 0; i < janet_struct_capacity(st); i++) {
28525
0
        const JanetKV *kv = st + i;
28526
0
        if (!janet_checktype(kv->key, JANET_NIL)) {
28527
0
            janet_table_put(table, kv->key, kv->value);
28528
0
        }
28529
0
    }
28530
0
    return table;
28531
0
}
28532
28533
/* C Functions */
28534
28535
JANET_CORE_FN(cfun_struct_with_proto,
28536
              "(struct/with-proto proto & kvs)",
28537
              "Create a structure, as with the usual struct constructor but set the "
28538
0
              "struct prototype as well.") {
28539
0
    janet_arity(argc, 1, -1);
28540
0
    JanetStruct proto = janet_optstruct(argv, argc, 0, NULL);
28541
0
    if (!(argc & 1))
28542
0
        janet_panic("expected odd number of arguments");
28543
0
    JanetKV *st = janet_struct_begin(argc / 2);
28544
0
    for (int32_t i = 1; i < argc; i += 2) {
28545
0
        janet_struct_put(st, argv[i], argv[i + 1]);
28546
0
    }
28547
0
    janet_struct_proto(st) = proto;
28548
0
    return janet_wrap_struct(janet_struct_end(st));
28549
0
}
28550
28551
JANET_CORE_FN(cfun_struct_getproto,
28552
              "(struct/getproto st)",
28553
0
              "Return the prototype of a struct, or nil if it doesn't have one.") {
28554
0
    janet_fixarity(argc, 1);
28555
0
    JanetStruct st = janet_getstruct(argv, 0);
28556
0
    return janet_struct_proto(st)
28557
0
           ? janet_wrap_struct(janet_struct_proto(st))
28558
0
           : janet_wrap_nil();
28559
0
}
28560
28561
JANET_CORE_FN(cfun_struct_flatten,
28562
              "(struct/proto-flatten st)",
28563
              "Convert a struct with prototypes to a struct with no prototypes by merging "
28564
0
              "all key value pairs from recursive prototypes into one new struct.") {
28565
0
    janet_fixarity(argc, 1);
28566
0
    JanetStruct st = janet_getstruct(argv, 0);
28567
28568
    /* get an upper bounds on the number of items in the final struct */
28569
0
    int64_t pair_count = 0;
28570
0
    JanetStruct cursor = st;
28571
0
    while (cursor) {
28572
0
        pair_count += janet_struct_length(cursor);
28573
0
        cursor = janet_struct_proto(cursor);
28574
0
    }
28575
28576
0
    if (pair_count > INT32_MAX) {
28577
0
        janet_panic("struct too large");
28578
0
    }
28579
28580
0
    JanetKV *accum = janet_struct_begin((int32_t) pair_count);
28581
0
    cursor = st;
28582
0
    while (cursor) {
28583
0
        for (int32_t i = 0; i < janet_struct_capacity(cursor); i++) {
28584
0
            const JanetKV *kv = cursor + i;
28585
0
            if (!janet_checktype(kv->key, JANET_NIL)) {
28586
0
                janet_struct_put_ext(accum, kv->key, kv->value, 0);
28587
0
            }
28588
0
        }
28589
0
        cursor = janet_struct_proto(cursor);
28590
0
    }
28591
0
    return janet_wrap_struct(janet_struct_end(accum));
28592
0
}
28593
28594
JANET_CORE_FN(cfun_struct_to_table,
28595
              "(struct/to-table st &opt recursive)",
28596
              "Convert a struct to a table. If recursive is true, also convert the "
28597
0
              "table's prototypes into the new struct's prototypes as well.") {
28598
0
    janet_arity(argc, 1, 2);
28599
0
    JanetStruct st = janet_getstruct(argv, 0);
28600
0
    int recursive = argc > 1 && janet_truthy(argv[1]);
28601
0
    JanetTable *tab = NULL;
28602
0
    JanetStruct cursor = st;
28603
0
    JanetTable *tab_cursor = tab;
28604
0
    do {
28605
0
        if (tab) {
28606
0
            tab_cursor->proto = janet_table(janet_struct_length(cursor));
28607
0
            tab_cursor = tab_cursor->proto;
28608
0
        } else {
28609
0
            tab = janet_table(janet_struct_length(cursor));
28610
0
            tab_cursor = tab;
28611
0
        }
28612
        /* TODO - implement as memcpy since struct memory should be compatible
28613
         * with table memory */
28614
0
        for (int32_t i = 0; i < janet_struct_capacity(cursor); i++) {
28615
0
            const JanetKV *kv = cursor + i;
28616
0
            if (!janet_checktype(kv->key, JANET_NIL)) {
28617
0
                janet_table_put(tab_cursor, kv->key, kv->value);
28618
0
            }
28619
0
        }
28620
0
        cursor = janet_struct_proto(cursor);
28621
0
    } while (recursive && cursor);
28622
0
    return janet_wrap_table(tab);
28623
0
}
28624
28625
/* Load the struct module */
28626
0
void janet_lib_struct(JanetTable *env) {
28627
0
    JanetRegExt struct_cfuns[] = {
28628
0
        JANET_CORE_REG("struct/with-proto", cfun_struct_with_proto),
28629
0
        JANET_CORE_REG("struct/getproto", cfun_struct_getproto),
28630
0
        JANET_CORE_REG("struct/proto-flatten", cfun_struct_flatten),
28631
0
        JANET_CORE_REG("struct/to-table", cfun_struct_to_table),
28632
0
        JANET_REG_END
28633
0
    };
28634
0
    janet_core_cfuns_ext(env, NULL, struct_cfuns);
28635
0
}
28636
28637
28638
/* src/core/symcache.c */
28639
#line 0 "src/core/symcache.c"
28640
28641
/*
28642
* Copyright (c) 2023 Calvin Rose
28643
*
28644
* Permission is hereby granted, free of charge, to any person obtaining a copy
28645
* of this software and associated documentation files (the "Software"), to
28646
* deal in the Software without restriction, including without limitation the
28647
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
28648
* sell copies of the Software, and to permit persons to whom the Software is
28649
* furnished to do so, subject to the following conditions:
28650
*
28651
* The above copyright notice and this permission notice shall be included in
28652
* all copies or substantial portions of the Software.
28653
*
28654
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
28655
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
28656
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28657
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28658
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28659
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
28660
* IN THE SOFTWARE.
28661
*/
28662
28663
/* The symbol cache is an open hashtable with all active symbols in the program
28664
 * stored in it. As the primary use of symbols is table lookups and equality
28665
 * checks, all symbols are interned so that there is a single copy of it in the
28666
 * whole program. Equality is then just a pointer check. */
28667
28668
#ifndef JANET_AMALG
28669
#include "features.h"
28670
#include <janet.h>
28671
#include "state.h"
28672
#include "gc.h"
28673
#include "util.h"
28674
#include "symcache.h"
28675
#endif
28676
28677
#include <string.h>
28678
28679
/* Initialize the cache (allocate cache memory) */
28680
5.24k
void janet_symcache_init() {
28681
5.24k
    janet_vm.cache_capacity = 1024;
28682
5.24k
    janet_vm.cache = janet_calloc(1, (size_t) janet_vm.cache_capacity * sizeof(const uint8_t *));
28683
5.24k
    if (NULL == janet_vm.cache) {
28684
0
        JANET_OUT_OF_MEMORY;
28685
0
    }
28686
5.24k
    memset(&janet_vm.gensym_counter, '0', sizeof(janet_vm.gensym_counter));
28687
5.24k
    janet_vm.gensym_counter[0] = '_';
28688
5.24k
    janet_vm.cache_count = 0;
28689
5.24k
    janet_vm.cache_deleted = 0;
28690
5.24k
}
28691
28692
/* Deinitialize the cache (free the cache memory) */
28693
5.24k
void janet_symcache_deinit() {
28694
5.24k
    janet_free((void *)janet_vm.cache);
28695
5.24k
    janet_vm.cache = NULL;
28696
5.24k
    janet_vm.cache_capacity = 0;
28697
5.24k
    janet_vm.cache_count = 0;
28698
5.24k
    janet_vm.cache_deleted = 0;
28699
5.24k
}
28700
28701
/* Mark an entry in the table as deleted. */
28702
static const uint8_t JANET_SYMCACHE_DELETED[1] = {0};
28703
28704
/* Find an item in the cache and return its location.
28705
 * If the item is not found, return the location
28706
 * where one would put it. */
28707
static const uint8_t **janet_symcache_findmem(
28708
    const uint8_t *str,
28709
    int32_t len,
28710
    int32_t hash,
28711
3.96M
    int *success) {
28712
3.96M
    uint32_t bounds[4];
28713
3.96M
    uint32_t i, j, index;
28714
3.96M
    const uint8_t **firstEmpty = NULL;
28715
28716
    /* We will search two ranges - index to the end,
28717
     * and 0 to the index. */
28718
3.96M
    index = (uint32_t)hash & (janet_vm.cache_capacity - 1);
28719
3.96M
    bounds[0] = index;
28720
3.96M
    bounds[1] = janet_vm.cache_capacity;
28721
3.96M
    bounds[2] = 0;
28722
3.96M
    bounds[3] = index;
28723
3.97M
    for (j = 0; j < 4; j += 2)
28724
4.19M
        for (i = bounds[j]; i < bounds[j + 1]; ++i) {
28725
4.18M
            const uint8_t *test = janet_vm.cache[i];
28726
            /* Check empty spots */
28727
4.18M
            if (NULL == test) {
28728
40.9k
                if (NULL == firstEmpty)
28729
40.9k
                    firstEmpty = janet_vm.cache + i;
28730
40.9k
                goto notfound;
28731
40.9k
            }
28732
            /* Check for marked deleted */
28733
4.14M
            if (JANET_SYMCACHE_DELETED == test) {
28734
2.91k
                if (firstEmpty == NULL)
28735
623
                    firstEmpty = janet_vm.cache + i;
28736
2.91k
                continue;
28737
2.91k
            }
28738
4.14M
            if (janet_string_equalconst(test, str, len, hash)) {
28739
                /* Replace first deleted */
28740
3.92M
                *success = 1;
28741
3.92M
                if (firstEmpty != NULL) {
28742
623
                    *firstEmpty = test;
28743
623
                    janet_vm.cache[i] = JANET_SYMCACHE_DELETED;
28744
623
                    return firstEmpty;
28745
623
                }
28746
3.92M
                return janet_vm.cache + i;
28747
3.92M
            }
28748
4.14M
        }
28749
40.9k
notfound:
28750
40.9k
    *success = 0;
28751
40.9k
    janet_assert(firstEmpty != NULL, "symcache failed to get memory");
28752
40.9k
    return firstEmpty;
28753
40.9k
}
28754
28755
#define janet_symcache_find(str, success) \
28756
40.9k
    janet_symcache_findmem((str), janet_string_length(str), janet_string_hash(str), (success))
28757
28758
/* Resize the cache. */
28759
21
static void janet_cache_resize(uint32_t newCapacity) {
28760
21
    uint32_t i, oldCapacity;
28761
21
    const uint8_t **oldCache = janet_vm.cache;
28762
21
    const uint8_t **newCache = janet_calloc(1, (size_t) newCapacity * sizeof(const uint8_t *));
28763
21
    if (newCache == NULL) {
28764
0
        JANET_OUT_OF_MEMORY;
28765
0
    }
28766
21
    oldCapacity = janet_vm.cache_capacity;
28767
21
    janet_vm.cache = newCache;
28768
21
    janet_vm.cache_capacity = newCapacity;
28769
21
    janet_vm.cache_deleted = 0;
28770
    /* Add all of the old cache entries back */
28771
26.6k
    for (i = 0; i < oldCapacity; ++i) {
28772
26.6k
        int status;
28773
26.6k
        const uint8_t **bucket;
28774
26.6k
        const uint8_t *x = oldCache[i];
28775
26.6k
        if (x != NULL && x != JANET_SYMCACHE_DELETED) {
28776
13.3k
            bucket = janet_symcache_find(x, &status);
28777
13.3k
            if (status || bucket == NULL) {
28778
                /* there was a problem with the algorithm. */
28779
0
                break;
28780
0
            }
28781
13.3k
            *bucket = x;
28782
13.3k
        }
28783
26.6k
    }
28784
    /* Free the old cache */
28785
21
    janet_free((void *)oldCache);
28786
21
}
28787
28788
/* Add an item to the cache */
28789
27.5k
static void janet_symcache_put(const uint8_t *x, const uint8_t **bucket) {
28790
27.5k
    if ((janet_vm.cache_count + janet_vm.cache_deleted) * 2 > janet_vm.cache_capacity) {
28791
21
        int status;
28792
21
        janet_cache_resize(janet_tablen((2 * janet_vm.cache_count + 1)));
28793
21
        bucket = janet_symcache_find(x, &status);
28794
21
    }
28795
    /* Add x to the cache */
28796
27.5k
    janet_vm.cache_count++;
28797
27.5k
    *bucket = x;
28798
27.5k
}
28799
28800
/* Remove a symbol from the symcache */
28801
27.5k
void janet_symbol_deinit(const uint8_t *sym) {
28802
27.5k
    int status = 0;
28803
27.5k
    const uint8_t **bucket = janet_symcache_find(sym, &status);
28804
27.5k
    if (status) {
28805
27.5k
        janet_vm.cache_count--;
28806
27.5k
        janet_vm.cache_deleted++;
28807
27.5k
        *bucket = JANET_SYMCACHE_DELETED;
28808
27.5k
    }
28809
27.5k
}
28810
28811
/* Create a symbol from a byte string */
28812
3.92M
const uint8_t *janet_symbol(const uint8_t *str, int32_t len) {
28813
3.92M
    int32_t hash = janet_string_calchash(str, len);
28814
3.92M
    uint8_t *newstr;
28815
3.92M
    int success = 0;
28816
3.92M
    const uint8_t **bucket = janet_symcache_findmem(str, len, hash, &success);
28817
3.92M
    if (success)
28818
3.90M
        return *bucket;
28819
27.5k
    JanetStringHead *head = janet_gcalloc(JANET_MEMORY_SYMBOL, sizeof(JanetStringHead) + (size_t) len + 1);
28820
27.5k
    head->hash = hash;
28821
27.5k
    head->length = len;
28822
27.5k
    newstr = (uint8_t *)(head->data);
28823
27.5k
    safe_memcpy(newstr, str, len);
28824
27.5k
    newstr[len] = 0;
28825
27.5k
    janet_symcache_put((const uint8_t *)newstr, bucket);
28826
27.5k
    return newstr;
28827
3.92M
}
28828
28829
/* Get a symbol from a cstring */
28830
175k
const uint8_t *janet_csymbol(const char *cstr) {
28831
175k
    return janet_symbol((const uint8_t *)cstr, (int32_t) strlen(cstr));
28832
175k
}
28833
28834
/* Increment the gensym buffer */
28835
0
static void inc_gensym(void) {
28836
0
    for (int i = sizeof(janet_vm.gensym_counter) - 2; i; i--) {
28837
0
        if (janet_vm.gensym_counter[i] == '9') {
28838
0
            janet_vm.gensym_counter[i] = 'a';
28839
0
            break;
28840
0
        } else if (janet_vm.gensym_counter[i] == 'z') {
28841
0
            janet_vm.gensym_counter[i] = 'A';
28842
0
            break;
28843
0
        } else if (janet_vm.gensym_counter[i] == 'Z') {
28844
0
            janet_vm.gensym_counter[i] = '0';
28845
0
        } else {
28846
0
            janet_vm.gensym_counter[i]++;
28847
0
            break;
28848
0
        }
28849
0
    }
28850
0
}
28851
28852
/* Generate a unique symbol. This is used in the library function gensym. The
28853
 * symbol will be of the format _XXXXXX, where X is a base64 digit, and
28854
 * prefix is the argument passed. No prefix for speed. */
28855
0
const uint8_t *janet_symbol_gen(void) {
28856
0
    const uint8_t **bucket = NULL;
28857
0
    uint8_t *sym;
28858
0
    int32_t hash = 0;
28859
0
    int status;
28860
    /* Leave spaces for 6 base 64 digits and two dashes. That means 64^6 possible suffixes, which
28861
     * is enough for resolving collisions. */
28862
0
    do {
28863
0
        hash = janet_string_calchash(
28864
0
                   janet_vm.gensym_counter,
28865
0
                   sizeof(janet_vm.gensym_counter) - 1);
28866
0
        bucket = janet_symcache_findmem(
28867
0
                     janet_vm.gensym_counter,
28868
0
                     sizeof(janet_vm.gensym_counter) - 1,
28869
0
                     hash,
28870
0
                     &status);
28871
0
    } while (status && (inc_gensym(), 1));
28872
0
    JanetStringHead *head = janet_gcalloc(JANET_MEMORY_SYMBOL, sizeof(JanetStringHead) + sizeof(janet_vm.gensym_counter));
28873
0
    head->length = sizeof(janet_vm.gensym_counter) - 1;
28874
0
    head->hash = hash;
28875
0
    sym = (uint8_t *)(head->data);
28876
0
    memcpy(sym, janet_vm.gensym_counter, sizeof(janet_vm.gensym_counter));
28877
0
    janet_symcache_put((const uint8_t *)sym, bucket);
28878
0
    return (const uint8_t *)sym;
28879
0
}
28880
28881
28882
/* src/core/table.c */
28883
#line 0 "src/core/table.c"
28884
28885
/*
28886
* Copyright (c) 2023 Calvin Rose
28887
*
28888
* Permission is hereby granted, free of charge, to any person obtaining a copy
28889
* of this software and associated documentation files (the "Software"), to
28890
* deal in the Software without restriction, including without limitation the
28891
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
28892
* sell copies of the Software, and to permit persons to whom the Software is
28893
* furnished to do so, subject to the following conditions:
28894
*
28895
* The above copyright notice and this permission notice shall be included in
28896
* all copies or substantial portions of the Software.
28897
*
28898
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
28899
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
28900
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28901
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28902
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28903
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
28904
* IN THE SOFTWARE.
28905
*/
28906
28907
#ifndef JANET_AMALG
28908
#include "features.h"
28909
#include <janet.h>
28910
#include "gc.h"
28911
#include "util.h"
28912
#include <math.h>
28913
#endif
28914
28915
11.8k
#define JANET_TABLE_FLAG_STACK 0x10000
28916
28917
0
static void *janet_memalloc_empty_local(int32_t count) {
28918
0
    int32_t i;
28919
0
    void *mem = janet_smalloc((size_t) count * sizeof(JanetKV));
28920
0
    JanetKV *mmem = (JanetKV *)mem;
28921
0
    for (i = 0; i < count; i++) {
28922
0
        JanetKV *kv = mmem + i;
28923
0
        kv->key = janet_wrap_nil();
28924
0
        kv->value = janet_wrap_nil();
28925
0
    }
28926
0
    return mem;
28927
0
}
28928
28929
66.7k
static JanetTable *janet_table_init_impl(JanetTable *table, int32_t capacity, int stackalloc) {
28930
66.7k
    JanetKV *data;
28931
66.7k
    capacity = janet_tablen(capacity);
28932
66.7k
    if (stackalloc) table->gc.flags = JANET_TABLE_FLAG_STACK;
28933
66.7k
    if (capacity) {
28934
66.7k
        if (stackalloc) {
28935
0
            data = janet_memalloc_empty_local(capacity);
28936
66.7k
        } else {
28937
66.7k
            data = (JanetKV *) janet_memalloc_empty(capacity);
28938
66.7k
            if (NULL == data) {
28939
0
                JANET_OUT_OF_MEMORY;
28940
0
            }
28941
66.7k
        }
28942
66.7k
        table->data = data;
28943
66.7k
        table->capacity = capacity;
28944
66.7k
    } else {
28945
0
        table->data = NULL;
28946
0
        table->capacity = 0;
28947
0
    }
28948
66.7k
    table->count = 0;
28949
66.7k
    table->deleted = 0;
28950
66.7k
    table->proto = NULL;
28951
66.7k
    return table;
28952
66.7k
}
28953
28954
/* Initialize a table (for use withs scratch memory) */
28955
0
JanetTable *janet_table_init(JanetTable *table, int32_t capacity) {
28956
0
    return janet_table_init_impl(table, capacity, 1);
28957
0
}
28958
28959
/* Initialize a table without using scratch memory */
28960
10.4k
JanetTable *janet_table_init_raw(JanetTable *table, int32_t capacity) {
28961
10.4k
    return janet_table_init_impl(table, capacity, 0);
28962
10.4k
}
28963
28964
/* Deinitialize a table */
28965
10.4k
void janet_table_deinit(JanetTable *table) {
28966
10.4k
    if (table->gc.flags & JANET_TABLE_FLAG_STACK) {
28967
0
        janet_sfree(table->data);
28968
10.4k
    } else {
28969
10.4k
        janet_free(table->data);
28970
10.4k
    }
28971
10.4k
}
28972
28973
/* Create a new table */
28974
56.2k
JanetTable *janet_table(int32_t capacity) {
28975
56.2k
    JanetTable *table = janet_gcalloc(JANET_MEMORY_TABLE, sizeof(JanetTable));
28976
56.2k
    return janet_table_init_impl(table, capacity, 0);
28977
56.2k
}
28978
28979
/* Find the bucket that contains the given key. Will also return
28980
 * bucket where key should go if not in the table. */
28981
1.33M
JanetKV *janet_table_find(JanetTable *t, Janet key) {
28982
1.33M
    return (JanetKV *) janet_dict_find(t->data, t->capacity, key);
28983
1.33M
}
28984
28985
/* Resize the dictionary table. */
28986
1.39k
static void janet_table_rehash(JanetTable *t, int32_t size) {
28987
1.39k
    JanetKV *olddata = t->data;
28988
1.39k
    JanetKV *newdata;
28989
1.39k
    int islocal = t->gc.flags & JANET_TABLE_FLAG_STACK;
28990
1.39k
    if (islocal) {
28991
0
        newdata = (JanetKV *) janet_memalloc_empty_local(size);
28992
1.39k
    } else {
28993
1.39k
        newdata = (JanetKV *) janet_memalloc_empty(size);
28994
1.39k
        if (NULL == newdata) {
28995
0
            JANET_OUT_OF_MEMORY;
28996
0
        }
28997
1.39k
    }
28998
1.39k
    int32_t i, oldcapacity;
28999
1.39k
    oldcapacity = t->capacity;
29000
1.39k
    t->data = newdata;
29001
1.39k
    t->capacity = size;
29002
1.39k
    t->deleted = 0;
29003
893k
    for (i = 0; i < oldcapacity; i++) {
29004
892k
        JanetKV *kv = olddata + i;
29005
892k
        if (!janet_checktype(kv->key, JANET_NIL)) {
29006
445k
            JanetKV *newkv = janet_table_find(t, kv->key);
29007
445k
            *newkv = *kv;
29008
445k
        }
29009
892k
    }
29010
1.39k
    if (islocal) {
29011
0
        janet_sfree(olddata);
29012
1.39k
    } else {
29013
1.39k
        janet_free(olddata);
29014
1.39k
    }
29015
1.39k
}
29016
29017
/* Get a value out of the table */
29018
0
Janet janet_table_get(JanetTable *t, Janet key) {
29019
0
    for (int i = JANET_MAX_PROTO_DEPTH; t && i; t = t->proto, --i) {
29020
0
        JanetKV *bucket = janet_table_find(t, key);
29021
0
        if (NULL != bucket && !janet_checktype(bucket->key, JANET_NIL))
29022
0
            return bucket->value;
29023
0
    }
29024
0
    return janet_wrap_nil();
29025
0
}
29026
29027
/* Get a value out of the table, and record which prototype it was from. */
29028
0
Janet janet_table_get_ex(JanetTable *t, Janet key, JanetTable **which) {
29029
0
    for (int i = JANET_MAX_PROTO_DEPTH; t && i; t = t->proto, --i) {
29030
0
        JanetKV *bucket = janet_table_find(t, key);
29031
0
        if (NULL != bucket && !janet_checktype(bucket->key, JANET_NIL)) {
29032
0
            *which = t;
29033
0
            return bucket->value;
29034
0
        }
29035
0
    }
29036
0
    return janet_wrap_nil();
29037
0
}
29038
29039
/* Get a value out of the table. Don't check prototype tables. */
29040
0
Janet janet_table_rawget(JanetTable *t, Janet key) {
29041
0
    JanetKV *bucket = janet_table_find(t, key);
29042
0
    if (NULL != bucket && !janet_checktype(bucket->key, JANET_NIL))
29043
0
        return bucket->value;
29044
0
    else
29045
0
        return janet_wrap_nil();
29046
0
}
29047
29048
/* Remove an entry from the dictionary. Return the value that
29049
 * was removed. */
29050
776
Janet janet_table_remove(JanetTable *t, Janet key) {
29051
776
    JanetKV *bucket = janet_table_find(t, key);
29052
776
    if (NULL != bucket && !janet_checktype(bucket->key, JANET_NIL)) {
29053
552
        Janet ret = bucket->value;
29054
552
        t->count--;
29055
552
        t->deleted++;
29056
552
        bucket->key = janet_wrap_nil();
29057
552
        bucket->value = janet_wrap_false();
29058
552
        return ret;
29059
552
    } else {
29060
224
        return janet_wrap_nil();
29061
224
    }
29062
776
}
29063
29064
/* Put a value into the object */
29065
584k
void janet_table_put(JanetTable *t, Janet key, Janet value) {
29066
584k
    if (janet_checktype(key, JANET_NIL)) return;
29067
583k
    if (janet_checktype(key, JANET_NUMBER) && isnan(janet_unwrap_number(key))) return;
29068
583k
    if (janet_checktype(value, JANET_NIL)) {
29069
776
        janet_table_remove(t, key);
29070
583k
    } else {
29071
583k
        JanetKV *bucket = janet_table_find(t, key);
29072
583k
        if (NULL != bucket && !janet_checktype(bucket->key, JANET_NIL)) {
29073
275k
            bucket->value = value;
29074
307k
        } else {
29075
307k
            if (NULL == bucket || 2 * (t->count + t->deleted + 1) > t->capacity) {
29076
1.39k
                janet_table_rehash(t, janet_tablen(2 * t->count + 2));
29077
1.39k
            }
29078
307k
            bucket = janet_table_find(t, key);
29079
307k
            if (janet_checktype(bucket->value, JANET_BOOLEAN))
29080
0
                --t->deleted;
29081
307k
            bucket->key = key;
29082
307k
            bucket->value = value;
29083
307k
            ++t->count;
29084
307k
        }
29085
583k
    }
29086
583k
}
29087
29088
/* Used internally so don't check arguments
29089
 * Put into a table, but if the key already exists do nothing. */
29090
0
static void janet_table_put_no_overwrite(JanetTable *t, Janet key, Janet value) {
29091
0
    JanetKV *bucket = janet_table_find(t, key);
29092
0
    if (NULL != bucket && !janet_checktype(bucket->key, JANET_NIL))
29093
0
        return;
29094
0
    if (NULL == bucket || 2 * (t->count + t->deleted + 1) > t->capacity) {
29095
0
        janet_table_rehash(t, janet_tablen(2 * t->count + 2));
29096
0
    }
29097
0
    bucket = janet_table_find(t, key);
29098
0
    if (janet_checktype(bucket->value, JANET_BOOLEAN))
29099
0
        --t->deleted;
29100
0
    bucket->key = key;
29101
0
    bucket->value = value;
29102
0
    ++t->count;
29103
0
}
29104
29105
/* Clear a table */
29106
0
void janet_table_clear(JanetTable *t) {
29107
0
    int32_t capacity = t->capacity;
29108
0
    JanetKV *data = t->data;
29109
0
    janet_memempty(data, capacity);
29110
0
    t->count = 0;
29111
0
    t->deleted = 0;
29112
0
}
29113
29114
/* Clone a table. */
29115
0
JanetTable *janet_table_clone(JanetTable *table) {
29116
0
    JanetTable *newTable = janet_gcalloc(JANET_MEMORY_TABLE, sizeof(JanetTable));
29117
0
    newTable->count = table->count;
29118
0
    newTable->capacity = table->capacity;
29119
0
    newTable->deleted = table->deleted;
29120
0
    newTable->proto = table->proto;
29121
0
    newTable->data = janet_malloc(newTable->capacity * sizeof(JanetKV));
29122
0
    if (NULL == newTable->data) {
29123
0
        JANET_OUT_OF_MEMORY;
29124
0
    }
29125
0
    memcpy(newTable->data, table->data, (size_t) table->capacity * sizeof(JanetKV));
29126
0
    return newTable;
29127
0
}
29128
29129
/* Merge a table or struct into a table */
29130
0
static void janet_table_mergekv(JanetTable *table, const JanetKV *kvs, int32_t cap) {
29131
0
    int32_t i;
29132
0
    for (i = 0; i < cap; i++) {
29133
0
        const JanetKV *kv = kvs + i;
29134
0
        if (!janet_checktype(kv->key, JANET_NIL)) {
29135
0
            janet_table_put(table, kv->key, kv->value);
29136
0
        }
29137
0
    }
29138
0
}
29139
29140
/* Merge a table into another table */
29141
0
void janet_table_merge_table(JanetTable *table, JanetTable *other) {
29142
0
    janet_table_mergekv(table, other->data, other->capacity);
29143
0
}
29144
29145
/* Merge a struct into a table */
29146
0
void janet_table_merge_struct(JanetTable *table, const JanetKV *other) {
29147
0
    janet_table_mergekv(table, other, janet_struct_capacity(other));
29148
0
}
29149
29150
/* Convert table to struct */
29151
0
const JanetKV *janet_table_to_struct(JanetTable *t) {
29152
0
    JanetKV *st = janet_struct_begin(t->count);
29153
0
    JanetKV *kv = t->data;
29154
0
    JanetKV *end = t->data + t->capacity;
29155
0
    while (kv < end) {
29156
0
        if (!janet_checktype(kv->key, JANET_NIL))
29157
0
            janet_struct_put(st, kv->key, kv->value);
29158
0
        kv++;
29159
0
    }
29160
0
    return janet_struct_end(st);
29161
0
}
29162
29163
0
JanetTable *janet_table_proto_flatten(JanetTable *t) {
29164
0
    JanetTable *newTable = janet_table(0);
29165
0
    while (t) {
29166
0
        JanetKV *kv = t->data;
29167
0
        JanetKV *end = t->data + t->capacity;
29168
0
        while (kv < end) {
29169
0
            if (!janet_checktype(kv->key, JANET_NIL))
29170
0
                janet_table_put_no_overwrite(newTable, kv->key, kv->value);
29171
0
            kv++;
29172
0
        }
29173
0
        t = t->proto;
29174
0
    }
29175
0
    return newTable;
29176
0
}
29177
29178
/* C Functions */
29179
29180
JANET_CORE_FN(cfun_table_new,
29181
              "(table/new capacity)",
29182
              "Creates a new empty table with pre-allocated memory "
29183
              "for `capacity` entries. This means that if one knows the number of "
29184
              "entries going into a table on creation, extra memory allocation "
29185
0
              "can be avoided. Returns the new table.") {
29186
0
    janet_fixarity(argc, 1);
29187
0
    int32_t cap = janet_getnat(argv, 0);
29188
0
    return janet_wrap_table(janet_table(cap));
29189
0
}
29190
29191
JANET_CORE_FN(cfun_table_getproto,
29192
              "(table/getproto tab)",
29193
              "Get the prototype table of a table. Returns nil if the table "
29194
0
              "has no prototype, otherwise returns the prototype.") {
29195
0
    janet_fixarity(argc, 1);
29196
0
    JanetTable *t = janet_gettable(argv, 0);
29197
0
    return t->proto
29198
0
           ? janet_wrap_table(t->proto)
29199
0
           : janet_wrap_nil();
29200
0
}
29201
29202
JANET_CORE_FN(cfun_table_setproto,
29203
              "(table/setproto tab proto)",
29204
0
              "Set the prototype of a table. Returns the original table `tab`.") {
29205
0
    janet_fixarity(argc, 2);
29206
0
    JanetTable *table = janet_gettable(argv, 0);
29207
0
    JanetTable *proto = NULL;
29208
0
    if (!janet_checktype(argv[1], JANET_NIL)) {
29209
0
        proto = janet_gettable(argv, 1);
29210
0
    }
29211
0
    table->proto = proto;
29212
0
    return argv[0];
29213
0
}
29214
29215
JANET_CORE_FN(cfun_table_tostruct,
29216
              "(table/to-struct tab)",
29217
              "Convert a table to a struct. Returns a new struct. This function "
29218
0
              "does not take into account prototype tables.") {
29219
0
    janet_fixarity(argc, 1);
29220
0
    JanetTable *t = janet_gettable(argv, 0);
29221
0
    return janet_wrap_struct(janet_table_to_struct(t));
29222
0
}
29223
29224
JANET_CORE_FN(cfun_table_rawget,
29225
              "(table/rawget tab key)",
29226
              "Gets a value from a table `tab` without looking at the prototype table. "
29227
              "If `tab` does not contain the key directly, the function will return "
29228
0
              "nil without checking the prototype. Returns the value in the table.") {
29229
0
    janet_fixarity(argc, 2);
29230
0
    JanetTable *table = janet_gettable(argv, 0);
29231
0
    return janet_table_rawget(table, argv[1]);
29232
0
}
29233
29234
JANET_CORE_FN(cfun_table_clone,
29235
              "(table/clone tab)",
29236
              "Create a copy of a table. Updates to the new table will not change the old table, "
29237
0
              "and vice versa.") {
29238
0
    janet_fixarity(argc, 1);
29239
0
    JanetTable *table = janet_gettable(argv, 0);
29240
0
    return janet_wrap_table(janet_table_clone(table));
29241
0
}
29242
29243
JANET_CORE_FN(cfun_table_clear,
29244
              "(table/clear tab)",
29245
0
              "Remove all key-value pairs in a table and return the modified table `tab`.") {
29246
0
    janet_fixarity(argc, 1);
29247
0
    JanetTable *table = janet_gettable(argv, 0);
29248
0
    janet_table_clear(table);
29249
0
    return janet_wrap_table(table);
29250
0
}
29251
29252
JANET_CORE_FN(cfun_table_proto_flatten,
29253
              "(table/proto-flatten tab)",
29254
0
              "Create a new table that is the result of merging all prototypes into a new table.") {
29255
0
    janet_fixarity(argc, 1);
29256
0
    JanetTable *table = janet_gettable(argv, 0);
29257
0
    return janet_wrap_table(janet_table_proto_flatten(table));
29258
0
}
29259
29260
/* Load the table module */
29261
0
void janet_lib_table(JanetTable *env) {
29262
0
    JanetRegExt table_cfuns[] = {
29263
0
        JANET_CORE_REG("table/new", cfun_table_new),
29264
0
        JANET_CORE_REG("table/to-struct", cfun_table_tostruct),
29265
0
        JANET_CORE_REG("table/getproto", cfun_table_getproto),
29266
0
        JANET_CORE_REG("table/setproto", cfun_table_setproto),
29267
0
        JANET_CORE_REG("table/rawget", cfun_table_rawget),
29268
0
        JANET_CORE_REG("table/clone", cfun_table_clone),
29269
0
        JANET_CORE_REG("table/clear", cfun_table_clear),
29270
0
        JANET_CORE_REG("table/proto-flatten", cfun_table_proto_flatten),
29271
0
        JANET_REG_END
29272
0
    };
29273
0
    janet_core_cfuns_ext(env, NULL, table_cfuns);
29274
0
}
29275
29276
29277
/* src/core/tuple.c */
29278
#line 0 "src/core/tuple.c"
29279
29280
/*
29281
* Copyright (c) 2023 Calvin Rose
29282
*
29283
* Permission is hereby granted, free of charge, to any person obtaining a copy
29284
* of this software and associated documentation files (the "Software"), to
29285
* deal in the Software without restriction, including without limitation the
29286
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
29287
* sell copies of the Software, and to permit persons to whom the Software is
29288
* furnished to do so, subject to the following conditions:
29289
*
29290
* The above copyright notice and this permission notice shall be included in
29291
* all copies or substantial portions of the Software.
29292
*
29293
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
29294
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
29295
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
29296
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
29297
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
29298
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
29299
* IN THE SOFTWARE.
29300
*/
29301
29302
#ifndef JANET_AMALG
29303
#include "features.h"
29304
#include <janet.h>
29305
#include "symcache.h"
29306
#include "gc.h"
29307
#include "util.h"
29308
#endif
29309
29310
/* Create a new empty tuple of the given size. This will return memory
29311
 * which should be filled with Janets. The memory will not be collected until
29312
 * janet_tuple_end is called. */
29313
222k
Janet *janet_tuple_begin(int32_t length) {
29314
222k
    size_t size = sizeof(JanetTupleHead) + ((size_t) length * sizeof(Janet));
29315
222k
    JanetTupleHead *head = janet_gcalloc(JANET_MEMORY_TUPLE, size);
29316
222k
    head->sm_line = -1;
29317
222k
    head->sm_column = -1;
29318
222k
    head->length = length;
29319
222k
    return (Janet *)(head->data);
29320
222k
}
29321
29322
/* Finish building a tuple */
29323
222k
const Janet *janet_tuple_end(Janet *tuple) {
29324
222k
    janet_tuple_hash(tuple) = janet_array_calchash(tuple, janet_tuple_length(tuple));
29325
222k
    return (const Janet *)tuple;
29326
222k
}
29327
29328
/* Build a tuple with n values */
29329
44.2k
const Janet *janet_tuple_n(const Janet *values, int32_t n) {
29330
44.2k
    Janet *t = janet_tuple_begin(n);
29331
44.2k
    safe_memcpy(t, values, sizeof(Janet) * n);
29332
44.2k
    return janet_tuple_end(t);
29333
44.2k
}
29334
29335
/* C Functions */
29336
29337
JANET_CORE_FN(cfun_tuple_brackets,
29338
              "(tuple/brackets & xs)",
29339
0
              "Creates a new bracketed tuple containing the elements xs.") {
29340
0
    const Janet *tup = janet_tuple_n(argv, argc);
29341
0
    janet_tuple_flag(tup) |= JANET_TUPLE_FLAG_BRACKETCTOR;
29342
0
    return janet_wrap_tuple(tup);
29343
0
}
29344
29345
JANET_CORE_FN(cfun_tuple_slice,
29346
              "(tuple/slice arrtup [,start=0 [,end=(length arrtup)]])",
29347
              "Take a sub-sequence of an array or tuple from index `start` "
29348
              "inclusive to index `end` exclusive. If `start` or `end` are not provided, "
29349
              "they default to 0 and the length of `arrtup`, respectively. "
29350
              "`start` and `end` can also be negative to indicate indexing "
29351
              "from the end of the input. Note that index -1 is synonymous with "
29352
              "index `(length arrtup)` to allow a full negative slice range. "
29353
0
              "Returns the new tuple.") {
29354
0
    JanetView view = janet_getindexed(argv, 0);
29355
0
    JanetRange range = janet_getslice(argc, argv);
29356
0
    return janet_wrap_tuple(janet_tuple_n(view.items + range.start, range.end - range.start));
29357
0
}
29358
29359
JANET_CORE_FN(cfun_tuple_type,
29360
              "(tuple/type tup)",
29361
              "Checks how the tuple was constructed. Will return the keyword "
29362
              ":brackets if the tuple was parsed with brackets, and :parens "
29363
              "otherwise. The two types of tuples will behave the same most of "
29364
              "the time, but will print differently and be treated differently by "
29365
0
              "the compiler.") {
29366
0
    janet_fixarity(argc, 1);
29367
0
    const Janet *tup = janet_gettuple(argv, 0);
29368
0
    if (janet_tuple_flag(tup) & JANET_TUPLE_FLAG_BRACKETCTOR) {
29369
0
        return janet_ckeywordv("brackets");
29370
0
    } else {
29371
0
        return janet_ckeywordv("parens");
29372
0
    }
29373
0
}
29374
29375
JANET_CORE_FN(cfun_tuple_sourcemap,
29376
              "(tuple/sourcemap tup)",
29377
              "Returns the sourcemap metadata attached to a tuple, "
29378
0
              "which is another tuple (line, column).") {
29379
0
    janet_fixarity(argc, 1);
29380
0
    const Janet *tup = janet_gettuple(argv, 0);
29381
0
    Janet contents[2];
29382
0
    contents[0] = janet_wrap_integer(janet_tuple_head(tup)->sm_line);
29383
0
    contents[1] = janet_wrap_integer(janet_tuple_head(tup)->sm_column);
29384
0
    return janet_wrap_tuple(janet_tuple_n(contents, 2));
29385
0
}
29386
29387
JANET_CORE_FN(cfun_tuple_setmap,
29388
              "(tuple/setmap tup line column)",
29389
              "Set the sourcemap metadata on a tuple. line and column indicate "
29390
0
              "should be integers.") {
29391
0
    janet_fixarity(argc, 3);
29392
0
    const Janet *tup = janet_gettuple(argv, 0);
29393
0
    janet_tuple_head(tup)->sm_line = janet_getinteger(argv, 1);
29394
0
    janet_tuple_head(tup)->sm_column = janet_getinteger(argv, 2);
29395
0
    return argv[0];
29396
0
}
29397
29398
/* Load the tuple module */
29399
0
void janet_lib_tuple(JanetTable *env) {
29400
0
    JanetRegExt tuple_cfuns[] = {
29401
0
        JANET_CORE_REG("tuple/brackets", cfun_tuple_brackets),
29402
0
        JANET_CORE_REG("tuple/slice", cfun_tuple_slice),
29403
0
        JANET_CORE_REG("tuple/type", cfun_tuple_type),
29404
0
        JANET_CORE_REG("tuple/sourcemap", cfun_tuple_sourcemap),
29405
0
        JANET_CORE_REG("tuple/setmap", cfun_tuple_setmap),
29406
0
        JANET_REG_END
29407
0
    };
29408
0
    janet_core_cfuns_ext(env, NULL, tuple_cfuns);
29409
0
}
29410
29411
29412
/* src/core/util.c */
29413
#line 0 "src/core/util.c"
29414
29415
/*
29416
* Copyright (c) 2023 Calvin Rose
29417
*
29418
* Permission is hereby granted, free of charge, to any person obtaining a copy
29419
* of this software and associated documentation files (the "Software"), to
29420
* deal in the Software without restriction, including without limitation the
29421
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
29422
* sell copies of the Software, and to permit persons to whom the Software is
29423
* furnished to do so, subject to the following conditions:
29424
*
29425
* The above copyright notice and this permission notice shall be included in
29426
* all copies or substantial portions of the Software.
29427
*
29428
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
29429
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
29430
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
29431
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
29432
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
29433
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
29434
* IN THE SOFTWARE.
29435
*/
29436
29437
#ifndef JANET_AMALG
29438
#include "features.h"
29439
#include <janet.h>
29440
#include "util.h"
29441
#include "state.h"
29442
#include "gc.h"
29443
#ifdef JANET_WINDOWS
29444
#include <windows.h>
29445
#else
29446
#include <unistd.h>
29447
#include <sys/types.h>
29448
#include <sys/stat.h>
29449
#include <fcntl.h>
29450
#endif
29451
#endif
29452
29453
#ifdef JANET_WINDOWS
29454
#ifdef JANET_DYNAMIC_MODULES
29455
#include <psapi.h>
29456
#ifdef JANET_MSVC
29457
#pragma comment (lib, "Psapi.lib")
29458
#endif
29459
#endif
29460
#endif
29461
29462
#ifdef JANET_APPLE
29463
#include <AvailabilityMacros.h>
29464
#endif
29465
29466
#include <inttypes.h>
29467
29468
/* Base 64 lookup table for digits */
29469
const char janet_base64[65] =
29470
    "0123456789"
29471
    "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
29472
    "abcdefghijklmnopqrstuvwxyz"
29473
    "_=";
29474
29475
/* The JANET value types in order. These types can be used as
29476
 * mnemonics instead of a bit pattern for type checking */
29477
const char *const janet_type_names[16] = {
29478
    "number",
29479
    "nil",
29480
    "boolean",
29481
    "fiber",
29482
    "string",
29483
    "symbol",
29484
    "keyword",
29485
    "array",
29486
    "tuple",
29487
    "table",
29488
    "struct",
29489
    "buffer",
29490
    "function",
29491
    "cfunction",
29492
    "abstract",
29493
    "pointer"
29494
};
29495
29496
const char *const janet_signal_names[14] = {
29497
    "ok",
29498
    "error",
29499
    "debug",
29500
    "yield",
29501
    "user0",
29502
    "user1",
29503
    "user2",
29504
    "user3",
29505
    "user4",
29506
    "user5",
29507
    "user6",
29508
    "user7",
29509
    "interrupt",
29510
    "await"
29511
};
29512
29513
const char *const janet_status_names[16] = {
29514
    "dead",
29515
    "error",
29516
    "debug",
29517
    "pending",
29518
    "user0",
29519
    "user1",
29520
    "user2",
29521
    "user3",
29522
    "user4",
29523
    "user5",
29524
    "user6",
29525
    "user7",
29526
    "interrupted",
29527
    "suspended",
29528
    "new",
29529
    "alive"
29530
};
29531
29532
#ifndef JANET_PRF
29533
29534
5.19M
int32_t janet_string_calchash(const uint8_t *str, int32_t len) {
29535
5.19M
    if (NULL == str) return 5381;
29536
5.19M
    const uint8_t *end = str + len;
29537
5.19M
    uint32_t hash = 5381;
29538
40.6M
    while (str < end)
29539
35.4M
        hash = (hash << 5) + hash + *str++;
29540
5.19M
    return (int32_t) hash;
29541
5.19M
}
29542
29543
#else
29544
29545
/*
29546
  Public domain siphash implementation sourced from:
29547
29548
  https://raw.githubusercontent.com/veorq/SipHash/master/halfsiphash.c
29549
29550
  We have made a few alterations, such as hardcoding the output size
29551
  and then removing dead code.
29552
*/
29553
#define cROUNDS 2
29554
#define dROUNDS 4
29555
29556
#define ROTL(x, b) (uint32_t)(((x) << (b)) | ((x) >> (32 - (b))))
29557
29558
#define U8TO32_LE(p)                                                           \
29559
    (((uint32_t)((p)[0])) | ((uint32_t)((p)[1]) << 8) |                        \
29560
     ((uint32_t)((p)[2]) << 16) | ((uint32_t)((p)[3]) << 24))
29561
29562
#define SIPROUND                                                               \
29563
    do {                                                                       \
29564
        v0 += v1;                                                              \
29565
        v1 = ROTL(v1, 5);                                                      \
29566
        v1 ^= v0;                                                              \
29567
        v0 = ROTL(v0, 16);                                                     \
29568
        v2 += v3;                                                              \
29569
        v3 = ROTL(v3, 8);                                                      \
29570
        v3 ^= v2;                                                              \
29571
        v0 += v3;                                                              \
29572
        v3 = ROTL(v3, 7);                                                      \
29573
        v3 ^= v0;                                                              \
29574
        v2 += v1;                                                              \
29575
        v1 = ROTL(v1, 13);                                                     \
29576
        v1 ^= v2;                                                              \
29577
        v2 = ROTL(v2, 16);                                                     \
29578
    } while (0)
29579
29580
static uint32_t halfsiphash(const uint8_t *in, const size_t inlen, const uint8_t *k) {
29581
29582
    uint32_t v0 = 0;
29583
    uint32_t v1 = 0;
29584
    uint32_t v2 = UINT32_C(0x6c796765);
29585
    uint32_t v3 = UINT32_C(0x74656462);
29586
    uint32_t k0 = U8TO32_LE(k);
29587
    uint32_t k1 = U8TO32_LE(k + 4);
29588
    uint32_t m;
29589
    int i;
29590
    const uint8_t *end = in + inlen - (inlen % sizeof(uint32_t));
29591
    const int left = inlen & 3;
29592
    uint32_t b = ((uint32_t)inlen) << 24;
29593
    v3 ^= k1;
29594
    v2 ^= k0;
29595
    v1 ^= k1;
29596
    v0 ^= k0;
29597
29598
    for (; in != end; in += 4) {
29599
        m = U8TO32_LE(in);
29600
        v3 ^= m;
29601
29602
        for (i = 0; i < cROUNDS; ++i)
29603
            SIPROUND;
29604
29605
        v0 ^= m;
29606
    }
29607
29608
    switch (left) {
29609
        case 3:
29610
            b |= ((uint32_t)in[2]) << 16;
29611
        /* fallthrough */
29612
        case 2:
29613
            b |= ((uint32_t)in[1]) << 8;
29614
        /* fallthrough */
29615
        case 1:
29616
            b |= ((uint32_t)in[0]);
29617
            break;
29618
        case 0:
29619
            break;
29620
    }
29621
29622
    v3 ^= b;
29623
29624
    for (i = 0; i < cROUNDS; ++i)
29625
        SIPROUND;
29626
29627
    v0 ^= b;
29628
29629
    v2 ^= 0xff;
29630
29631
    for (i = 0; i < dROUNDS; ++i)
29632
        SIPROUND;
29633
29634
    b = v1 ^ v3;
29635
    return b;
29636
}
29637
/* end of siphash */
29638
29639
static uint8_t hash_key[JANET_HASH_KEY_SIZE] = {0};
29640
29641
void janet_init_hash_key(uint8_t new_key[JANET_HASH_KEY_SIZE]) {
29642
    memcpy(hash_key, new_key, sizeof(hash_key));
29643
}
29644
29645
/* Calculate hash for string */
29646
29647
int32_t janet_string_calchash(const uint8_t *str, int32_t len) {
29648
    uint32_t hash;
29649
    hash = halfsiphash(str, len, hash_key);
29650
    return (int32_t)hash;
29651
}
29652
29653
#endif
29654
29655
12.8M
uint32_t janet_hash_mix(uint32_t input, uint32_t more) {
29656
12.8M
    uint32_t mix1 = (more + 0x9e3779b9 + (input << 6) + (input >> 2));
29657
12.8M
    return input ^ (0x9e3779b9 + (mix1 << 6) + (mix1 >> 2));
29658
12.8M
}
29659
29660
/* Computes hash of an array of values */
29661
222k
int32_t janet_array_calchash(const Janet *array, int32_t len) {
29662
222k
    const Janet *end = array + len;
29663
222k
    uint32_t hash = 33;
29664
2.58M
    while (array < end) {
29665
2.36M
        hash = janet_hash_mix(hash, janet_hash(*array++));
29666
2.36M
    }
29667
222k
    return (int32_t) hash;
29668
222k
}
29669
29670
/* Computes hash of an array of values */
29671
3.57M
int32_t janet_kv_calchash(const JanetKV *kvs, int32_t len) {
29672
3.57M
    const JanetKV *end = kvs + len;
29673
3.57M
    uint32_t hash = 33;
29674
8.79M
    while (kvs < end) {
29675
5.22M
        hash = janet_hash_mix(hash, janet_hash(kvs->key));
29676
5.22M
        hash = janet_hash_mix(hash, janet_hash(kvs->value));
29677
5.22M
        kvs++;
29678
5.22M
    }
29679
3.57M
    return (int32_t) hash;
29680
3.57M
}
29681
29682
/* Calculate next power of 2. May overflow. If n is 0,
29683
 * will return 0. */
29684
3.64M
int32_t janet_tablen(int32_t n) {
29685
3.64M
    if (n < 0) return 0;
29686
3.64M
    n |= n >> 1;
29687
3.64M
    n |= n >> 2;
29688
3.64M
    n |= n >> 4;
29689
3.64M
    n |= n >> 8;
29690
3.64M
    n |= n >> 16;
29691
3.64M
    return n + 1;
29692
3.64M
}
29693
29694
/* Avoid some undefined behavior that was common in the code base. */
29695
1.34M
void safe_memcpy(void *dest, const void *src, size_t len) {
29696
1.34M
    if (!len) return;
29697
114k
    memcpy(dest, src, len);
29698
114k
}
29699
29700
/* Helper to find a value in a Janet struct or table. Returns the bucket
29701
 * containing the key, or the first empty bucket if there is no such key. */
29702
1.33M
const JanetKV *janet_dict_find(const JanetKV *buckets, int32_t cap, Janet key) {
29703
1.33M
    int32_t index = janet_maphash(cap, janet_hash(key));
29704
1.33M
    int32_t i;
29705
1.33M
    const JanetKV *first_bucket = NULL;
29706
    /* Higher half */
29707
1.80M
    for (i = index; i < cap; i++) {
29708
1.80M
        const JanetKV *kv = buckets + i;
29709
1.80M
        if (janet_checktype(kv->key, JANET_NIL)) {
29710
1.08M
            if (janet_checktype(kv->value, JANET_NIL)) {
29711
1.05M
                return kv;
29712
1.05M
            } else if (NULL == first_bucket) {
29713
1.49k
                first_bucket = kv;
29714
1.49k
            }
29715
1.08M
        } else if (janet_equals(kv->key, key)) {
29716
275k
            return buckets + i;
29717
275k
        }
29718
1.80M
    }
29719
    /* Lower half */
29720
5.36k
    for (i = 0; i < index; i++) {
29721
5.36k
        const JanetKV *kv = buckets + i;
29722
5.36k
        if (janet_checktype(kv->key, JANET_NIL)) {
29723
3.00k
            if (janet_checktype(kv->value, JANET_NIL)) {
29724
2.50k
                return kv;
29725
2.50k
            } else if (NULL == first_bucket) {
29726
259
                first_bucket = kv;
29727
259
            }
29728
3.00k
        } else if (janet_equals(kv->key, key)) {
29729
338
            return buckets + i;
29730
338
        }
29731
5.36k
    }
29732
0
    return first_bucket;
29733
2.84k
}
29734
29735
/* Get a value from a janet struct or table. */
29736
0
Janet janet_dictionary_get(const JanetKV *data, int32_t cap, Janet key) {
29737
0
    const JanetKV *kv = janet_dict_find(data, cap, key);
29738
0
    if (kv && !janet_checktype(kv->key, JANET_NIL)) {
29739
0
        return kv->value;
29740
0
    }
29741
0
    return janet_wrap_nil();
29742
0
}
29743
29744
/* Iterate through a struct or dictionary generically */
29745
0
const JanetKV *janet_dictionary_next(const JanetKV *kvs, int32_t cap, const JanetKV *kv) {
29746
0
    const JanetKV *end = kvs + cap;
29747
0
    kv = (kv == NULL) ? kvs : kv + 1;
29748
0
    while (kv < end) {
29749
0
        if (!janet_checktype(kv->key, JANET_NIL))
29750
0
            return kv;
29751
0
        kv++;
29752
0
    }
29753
0
    return NULL;
29754
0
}
29755
29756
/* Compare a janet string with a cstring. More efficient than loading
29757
 * c string as a janet string. */
29758
0
int janet_cstrcmp(const uint8_t *str, const char *other) {
29759
0
    int32_t len = janet_string_length(str);
29760
0
    int32_t index;
29761
0
    for (index = 0; index < len; index++) {
29762
0
        uint8_t c = str[index];
29763
0
        uint8_t k = ((const uint8_t *)other)[index];
29764
0
        if (c < k) return -1;
29765
0
        if (c > k) return 1;
29766
0
        if (k == '\0') break;
29767
0
    }
29768
0
    return (other[index] == '\0') ? 0 : -1;
29769
0
}
29770
29771
/* Do a binary search on a static array of structs. Each struct must
29772
 * have a string as its first element, and the struct must be sorted
29773
 * lexicographically by that element. */
29774
const void *janet_strbinsearch(
29775
    const void *tab,
29776
    size_t tabcount,
29777
    size_t itemsize,
29778
0
    const uint8_t *key) {
29779
0
    size_t low = 0;
29780
0
    size_t hi = tabcount;
29781
0
    const char *t = (const char *)tab;
29782
0
    while (low < hi) {
29783
0
        size_t mid = low + ((hi - low) / 2);
29784
0
        const char **item = (const char **)(t + mid * itemsize);
29785
0
        const char *name = *item;
29786
0
        int comp = janet_cstrcmp(key, name);
29787
0
        if (comp < 0) {
29788
0
            hi = mid;
29789
0
        } else if (comp > 0) {
29790
0
            low = mid + 1;
29791
0
        } else {
29792
0
            return (const void *)item;
29793
0
        }
29794
0
    }
29795
0
    return NULL;
29796
0
}
29797
29798
/* Add sourcemapping and documentation to a binding table */
29799
0
static void janet_add_meta(JanetTable *table, const char *doc, const char *source_file, int32_t source_line) {
29800
0
    if (doc) {
29801
0
        janet_table_put(table, janet_ckeywordv("doc"), janet_cstringv(doc));
29802
0
    }
29803
0
    if (source_file && source_line) {
29804
0
        Janet triple[3];
29805
0
        triple[0] = janet_cstringv(source_file);
29806
0
        triple[1] = janet_wrap_integer(source_line);
29807
0
        triple[2] = janet_wrap_integer(1);
29808
0
        Janet value = janet_wrap_tuple(janet_tuple_n(triple, 3));
29809
0
        janet_table_put(table, janet_ckeywordv("source-map"), value);
29810
0
    }
29811
0
}
29812
29813
/* Add a def to an environment */
29814
0
void janet_def_sm(JanetTable *env, const char *name, Janet val, const char *doc, const char *source_file, int32_t source_line) {
29815
0
    JanetTable *subt = janet_table(2);
29816
0
    janet_table_put(subt, janet_ckeywordv("value"), val);
29817
0
    janet_add_meta(subt, doc, source_file, source_line);
29818
0
    janet_table_put(env, janet_csymbolv(name), janet_wrap_table(subt));
29819
0
}
29820
0
void janet_def(JanetTable *env, const char *name, Janet value, const char *doc) {
29821
0
    janet_def_sm(env, name, value, doc, NULL, 0);
29822
0
}
29823
29824
/* Add a var to the environment */
29825
0
void janet_var_sm(JanetTable *env, const char *name, Janet val, const char *doc, const char *source_file, int32_t source_line) {
29826
0
    JanetArray *array = janet_array(1);
29827
0
    JanetTable *subt = janet_table(2);
29828
0
    janet_array_push(array, val);
29829
0
    janet_table_put(subt, janet_ckeywordv("ref"), janet_wrap_array(array));
29830
0
    janet_add_meta(subt, doc, source_file, source_line);
29831
0
    janet_table_put(env, janet_csymbolv(name), janet_wrap_table(subt));
29832
0
}
29833
0
void janet_var(JanetTable *env, const char *name, Janet val, const char *doc) {
29834
0
    janet_var_sm(env, name, val, doc, NULL, 0);
29835
0
}
29836
29837
/* Registry functions */
29838
29839
/* Put the registry in sorted order. */
29840
0
static void janet_registry_sort(void) {
29841
0
    for (size_t i = 1; i < janet_vm.registry_count; i++) {
29842
0
        JanetCFunRegistry reg = janet_vm.registry[i];
29843
0
        size_t j;
29844
0
        for (j = i; j > 0; j--) {
29845
0
            if ((void *)(janet_vm.registry[j - 1].cfun) < (void *)(reg.cfun)) break;
29846
0
            janet_vm.registry[j] = janet_vm.registry[j - 1];
29847
0
        }
29848
0
        janet_vm.registry[j] = reg;
29849
0
    }
29850
0
    janet_vm.registry_dirty = 0;
29851
0
}
29852
29853
void janet_registry_put(
29854
    JanetCFunction key,
29855
    const char *name,
29856
    const char *name_prefix,
29857
    const char *source_file,
29858
0
    int32_t source_line) {
29859
0
    if (janet_vm.registry_count == janet_vm.registry_cap) {
29860
0
        size_t newcap = (janet_vm.registry_count + 1) * 2;
29861
        /* Size it nicely with core by default */
29862
0
        if (newcap < 512) {
29863
0
            newcap = 512;
29864
0
        }
29865
0
        void *newmem = janet_realloc(janet_vm.registry, newcap * sizeof(JanetCFunRegistry));
29866
0
        if (NULL == newmem) {
29867
0
            JANET_OUT_OF_MEMORY;
29868
0
        }
29869
0
        janet_vm.registry = newmem;
29870
0
        janet_vm.registry_cap = newcap;
29871
0
    }
29872
0
    JanetCFunRegistry value = {
29873
0
        key,
29874
0
        name,
29875
0
        name_prefix,
29876
0
        source_file,
29877
0
        source_line
29878
0
    };
29879
0
    janet_vm.registry[janet_vm.registry_count++] = value;
29880
0
    janet_vm.registry_dirty = 1;
29881
0
}
29882
29883
0
JanetCFunRegistry *janet_registry_get(JanetCFunction key) {
29884
0
    if (janet_vm.registry_dirty) {
29885
0
        janet_registry_sort();
29886
0
    }
29887
0
    for (size_t i = 0; i < janet_vm.registry_count; i++) {
29888
0
        if (janet_vm.registry[i].cfun == key) {
29889
0
            return janet_vm.registry + i;
29890
0
        }
29891
0
    }
29892
0
    JanetCFunRegistry *lo = janet_vm.registry;
29893
0
    JanetCFunRegistry *hi = lo + janet_vm.registry_count;
29894
0
    while (lo < hi) {
29895
0
        JanetCFunRegistry *mid = lo + (hi - lo) / 2;
29896
0
        if (mid->cfun == key) {
29897
0
            return mid;
29898
0
        }
29899
0
        if ((void *)(mid->cfun) > (void *)(key)) {
29900
0
            hi = mid;
29901
0
        } else {
29902
0
            lo = mid + 1;
29903
0
        }
29904
0
    }
29905
0
    return NULL;
29906
0
}
29907
29908
typedef struct {
29909
    char *buf;
29910
    size_t plen;
29911
} NameBuf;
29912
29913
0
static void namebuf_init(NameBuf *namebuf, const char *prefix) {
29914
0
    size_t plen = strlen(prefix);
29915
0
    namebuf->plen = plen;
29916
0
    namebuf->buf = janet_smalloc(namebuf->plen + 256);
29917
0
    if (NULL == namebuf->buf) {
29918
0
        JANET_OUT_OF_MEMORY;
29919
0
    }
29920
0
    memcpy(namebuf->buf, prefix, plen);
29921
0
    namebuf->buf[plen] = '/';
29922
0
}
29923
29924
0
static void namebuf_deinit(NameBuf *namebuf) {
29925
0
    janet_sfree(namebuf->buf);
29926
0
}
29927
29928
0
static char *namebuf_name(NameBuf *namebuf, const char *suffix) {
29929
0
    size_t slen = strlen(suffix);
29930
0
    namebuf->buf = janet_srealloc(namebuf->buf, namebuf->plen + 2 + slen);
29931
0
    if (NULL == namebuf->buf) {
29932
0
        JANET_OUT_OF_MEMORY;
29933
0
    }
29934
0
    memcpy(namebuf->buf + namebuf->plen + 1, suffix, slen);
29935
0
    namebuf->buf[namebuf->plen + 1 + slen] = '\0';
29936
0
    return (char *)(namebuf->buf);
29937
0
}
29938
29939
0
void janet_cfuns(JanetTable *env, const char *regprefix, const JanetReg *cfuns) {
29940
0
    while (cfuns->name) {
29941
0
        Janet fun = janet_wrap_cfunction(cfuns->cfun);
29942
0
        if (env) janet_def(env, cfuns->name, fun, cfuns->documentation);
29943
0
        janet_registry_put(cfuns->cfun, cfuns->name, regprefix, NULL, 0);
29944
0
        cfuns++;
29945
0
    }
29946
0
}
29947
29948
0
void janet_cfuns_ext(JanetTable *env, const char *regprefix, const JanetRegExt *cfuns) {
29949
0
    while (cfuns->name) {
29950
0
        Janet fun = janet_wrap_cfunction(cfuns->cfun);
29951
0
        if (env) janet_def_sm(env, cfuns->name, fun, cfuns->documentation, cfuns->source_file, cfuns->source_line);
29952
0
        janet_registry_put(cfuns->cfun, cfuns->name, regprefix, cfuns->source_file, cfuns->source_line);
29953
0
        cfuns++;
29954
0
    }
29955
0
}
29956
29957
0
void janet_cfuns_prefix(JanetTable *env, const char *regprefix, const JanetReg *cfuns) {
29958
0
    NameBuf nb;
29959
0
    if (env) namebuf_init(&nb, regprefix);
29960
0
    while (cfuns->name) {
29961
0
        Janet fun = janet_wrap_cfunction(cfuns->cfun);
29962
0
        if (env) janet_def(env, namebuf_name(&nb, cfuns->name), fun, cfuns->documentation);
29963
0
        janet_registry_put(cfuns->cfun, cfuns->name, regprefix, NULL, 0);
29964
0
        cfuns++;
29965
0
    }
29966
0
    if (env) namebuf_deinit(&nb);
29967
0
}
29968
29969
0
void janet_cfuns_ext_prefix(JanetTable *env, const char *regprefix, const JanetRegExt *cfuns) {
29970
0
    NameBuf nb;
29971
0
    if (env) namebuf_init(&nb, regprefix);
29972
0
    while (cfuns->name) {
29973
0
        Janet fun = janet_wrap_cfunction(cfuns->cfun);
29974
0
        if (env) janet_def_sm(env, namebuf_name(&nb, cfuns->name), fun, cfuns->documentation, cfuns->source_file, cfuns->source_line);
29975
0
        janet_registry_put(cfuns->cfun, cfuns->name, regprefix, cfuns->source_file, cfuns->source_line);
29976
0
        cfuns++;
29977
0
    }
29978
0
    if (env) namebuf_deinit(&nb);
29979
0
}
29980
29981
/* Register a value in the global registry */
29982
0
void janet_register(const char *name, JanetCFunction cfun) {
29983
0
    janet_registry_put(cfun, name, NULL, NULL, 0);
29984
0
}
29985
29986
/* Abstract type introspection */
29987
29988
0
void janet_register_abstract_type(const JanetAbstractType *at) {
29989
0
    Janet sym = janet_csymbolv(at->name);
29990
0
    Janet check = janet_table_get(janet_vm.abstract_registry, sym);
29991
0
    if (!janet_checktype(check, JANET_NIL) && at != janet_unwrap_pointer(check)) {
29992
0
        janet_panicf("cannot register abstract type %s, "
29993
0
                     "a type with the same name exists", at->name);
29994
0
    }
29995
0
    janet_table_put(janet_vm.abstract_registry, sym, janet_wrap_pointer((void *) at));
29996
0
}
29997
29998
0
const JanetAbstractType *janet_get_abstract_type(Janet key) {
29999
0
    Janet wrapped = janet_table_get(janet_vm.abstract_registry, key);
30000
0
    if (janet_checktype(wrapped, JANET_NIL)) {
30001
0
        return NULL;
30002
0
    }
30003
0
    return (JanetAbstractType *)(janet_unwrap_pointer(wrapped));
30004
0
}
30005
30006
#ifndef JANET_BOOTSTRAP
30007
0
void janet_core_def_sm(JanetTable *env, const char *name, Janet x, const void *p, const void *sf, int32_t sl) {
30008
0
    (void) sf;
30009
0
    (void) sl;
30010
0
    (void) p;
30011
0
    Janet key = janet_csymbolv(name);
30012
0
    janet_table_put(env, key, x);
30013
0
    if (janet_checktype(x, JANET_CFUNCTION)) {
30014
0
        janet_registry_put(janet_unwrap_cfunction(x), name, NULL, NULL, 0);
30015
0
    }
30016
0
}
30017
30018
0
void janet_core_cfuns_ext(JanetTable *env, const char *regprefix, const JanetRegExt *cfuns) {
30019
0
    (void) regprefix;
30020
0
    while (cfuns->name) {
30021
0
        Janet fun = janet_wrap_cfunction(cfuns->cfun);
30022
0
        janet_table_put(env, janet_csymbolv(cfuns->name), fun);
30023
0
        janet_registry_put(cfuns->cfun, cfuns->name, regprefix, cfuns->source_file, cfuns->source_line);
30024
0
        cfuns++;
30025
0
    }
30026
0
}
30027
#endif
30028
30029
0
JanetBinding janet_binding_from_entry(Janet entry) {
30030
0
    JanetTable *entry_table;
30031
0
    JanetBinding binding = {
30032
0
        JANET_BINDING_NONE,
30033
0
        janet_wrap_nil(),
30034
0
        JANET_BINDING_DEP_NONE
30035
0
    };
30036
30037
    /* Check environment for entry */
30038
0
    if (!janet_checktype(entry, JANET_TABLE))
30039
0
        return binding;
30040
0
    entry_table = janet_unwrap_table(entry);
30041
30042
    /* deprecation check */
30043
0
    Janet deprecate = janet_table_get(entry_table, janet_ckeywordv("deprecated"));
30044
0
    if (janet_checktype(deprecate, JANET_KEYWORD)) {
30045
0
        JanetKeyword depkw = janet_unwrap_keyword(deprecate);
30046
0
        if (!janet_cstrcmp(depkw, "relaxed")) {
30047
0
            binding.deprecation = JANET_BINDING_DEP_RELAXED;
30048
0
        } else if (!janet_cstrcmp(depkw, "normal")) {
30049
0
            binding.deprecation = JANET_BINDING_DEP_NORMAL;
30050
0
        } else if (!janet_cstrcmp(depkw, "strict")) {
30051
0
            binding.deprecation = JANET_BINDING_DEP_STRICT;
30052
0
        }
30053
0
    } else if (!janet_checktype(deprecate, JANET_NIL)) {
30054
0
        binding.deprecation = JANET_BINDING_DEP_NORMAL;
30055
0
    }
30056
30057
0
    int macro = janet_truthy(janet_table_get(entry_table, janet_ckeywordv("macro")));
30058
0
    Janet value = janet_table_get(entry_table, janet_ckeywordv("value"));
30059
0
    Janet ref = janet_table_get(entry_table, janet_ckeywordv("ref"));
30060
0
    int ref_is_valid = janet_checktype(ref, JANET_ARRAY);
30061
0
    int redef = ref_is_valid && janet_truthy(janet_table_get(entry_table, janet_ckeywordv("redef")));
30062
30063
0
    if (macro) {
30064
0
        binding.value = redef ? ref : value;
30065
0
        binding.type = redef ? JANET_BINDING_DYNAMIC_MACRO : JANET_BINDING_MACRO;
30066
0
        return binding;
30067
0
    }
30068
30069
0
    if (ref_is_valid) {
30070
0
        binding.value = ref;
30071
0
        binding.type = redef ? JANET_BINDING_DYNAMIC_DEF : JANET_BINDING_VAR;
30072
0
    } else {
30073
0
        binding.value = value;
30074
0
        binding.type = JANET_BINDING_DEF;
30075
0
    }
30076
30077
0
    return binding;
30078
0
}
30079
30080
/* If the value at the given address can be coerced to a byte view,
30081
   return that byte view. If it can't, replace the value at the address
30082
   with the result of janet_to_string, and return a byte view over that
30083
   string. */
30084
0
static JanetByteView memoize_byte_view(Janet *value) {
30085
0
    JanetByteView result;
30086
0
    if (!janet_bytes_view(*value, &result.bytes, &result.len)) {
30087
0
        JanetString str = janet_to_string(*value);
30088
0
        *value = janet_wrap_string(str);
30089
0
        result.bytes = str;
30090
0
        result.len = janet_string_length(str);
30091
0
    }
30092
0
    return result;
30093
0
}
30094
30095
0
static JanetByteView to_byte_view(Janet value) {
30096
0
    JanetByteView result;
30097
0
    if (!janet_bytes_view(value, &result.bytes, &result.len)) {
30098
0
        JanetString str = janet_to_string(value);
30099
0
        result.bytes = str;
30100
0
        result.len = janet_string_length(str);
30101
0
    }
30102
0
    return result;
30103
0
}
30104
30105
JanetByteView janet_text_substitution(
30106
    Janet *subst,
30107
    const uint8_t *bytes,
30108
    uint32_t len,
30109
0
    JanetArray *extra_argv) {
30110
0
    int32_t extra_argc = extra_argv == NULL ? 0 : extra_argv->count;
30111
0
    JanetType type = janet_type(*subst);
30112
0
    switch (type) {
30113
0
        case JANET_FUNCTION:
30114
0
        case JANET_CFUNCTION: {
30115
0
            int32_t argc = 1 + extra_argc;
30116
0
            Janet *argv = janet_tuple_begin(argc);
30117
0
            argv[0] = janet_stringv(bytes, len);
30118
0
            for (int32_t i = 0; i < extra_argc; i++) {
30119
0
                argv[i + 1] = extra_argv->data[i];
30120
0
            }
30121
0
            janet_tuple_end(argv);
30122
0
            if (type == JANET_FUNCTION) {
30123
0
                return to_byte_view(janet_call(janet_unwrap_function(*subst), argc, argv));
30124
0
            } else {
30125
0
                return to_byte_view(janet_unwrap_cfunction(*subst)(argc, argv));
30126
0
            }
30127
0
        }
30128
0
        default:
30129
0
            return memoize_byte_view(subst);
30130
0
    }
30131
0
}
30132
30133
0
JanetBinding janet_resolve_ext(JanetTable *env, const uint8_t *sym) {
30134
0
    Janet entry = janet_table_get(env, janet_wrap_symbol(sym));
30135
0
    return janet_binding_from_entry(entry);
30136
0
}
30137
30138
0
JanetBindingType janet_resolve(JanetTable *env, const uint8_t *sym, Janet *out) {
30139
0
    JanetBinding binding = janet_resolve_ext(env, sym);
30140
0
    if (binding.type == JANET_BINDING_DYNAMIC_DEF || binding.type == JANET_BINDING_DYNAMIC_MACRO) {
30141
0
        *out = janet_array_peek(janet_unwrap_array(binding.value));
30142
0
    } else {
30143
0
        *out = binding.value;
30144
0
    }
30145
0
    return binding.type;
30146
0
}
30147
30148
/* Resolve a symbol in the core environment. */
30149
0
Janet janet_resolve_core(const char *name) {
30150
0
    JanetTable *env = janet_core_env(NULL);
30151
0
    Janet out = janet_wrap_nil();
30152
0
    janet_resolve(env, janet_csymbol(name), &out);
30153
0
    return out;
30154
0
}
30155
30156
/* Read both tuples and arrays as c pointers + int32_t length. Return 1 if the
30157
 * view can be constructed, 0 if an invalid type. */
30158
0
int janet_indexed_view(Janet seq, const Janet **data, int32_t *len) {
30159
0
    if (janet_checktype(seq, JANET_ARRAY)) {
30160
0
        *data = janet_unwrap_array(seq)->data;
30161
0
        *len = janet_unwrap_array(seq)->count;
30162
0
        return 1;
30163
0
    } else if (janet_checktype(seq, JANET_TUPLE)) {
30164
0
        *data = janet_unwrap_tuple(seq);
30165
0
        *len = janet_tuple_length(janet_unwrap_tuple(seq));
30166
0
        return 1;
30167
0
    }
30168
0
    return 0;
30169
0
}
30170
30171
/* Read both strings and buffer as unsigned character array + int32_t len.
30172
 * Returns 1 if the view can be constructed and 0 if the type is invalid. */
30173
0
int janet_bytes_view(Janet str, const uint8_t **data, int32_t *len) {
30174
0
    JanetType t = janet_type(str);
30175
0
    if (t == JANET_STRING || t == JANET_SYMBOL || t == JANET_KEYWORD) {
30176
0
        *data = janet_unwrap_string(str);
30177
0
        *len = janet_string_length(janet_unwrap_string(str));
30178
0
        return 1;
30179
0
    } else if (t == JANET_BUFFER) {
30180
0
        *data = janet_unwrap_buffer(str)->data;
30181
0
        *len = janet_unwrap_buffer(str)->count;
30182
0
        return 1;
30183
0
    } else if (t == JANET_ABSTRACT) {
30184
0
        void *abst = janet_unwrap_abstract(str);
30185
0
        const JanetAbstractType *atype = janet_abstract_type(abst);
30186
0
        if (NULL == atype->bytes) {
30187
0
            return 0;
30188
0
        }
30189
0
        JanetByteView view = atype->bytes(abst, janet_abstract_size(abst));
30190
0
        *data = view.bytes;
30191
0
        *len = view.len;
30192
0
        return 1;
30193
0
    }
30194
0
    return 0;
30195
0
}
30196
30197
/* Read both structs and tables as the entries of a hashtable with
30198
 * identical structure. Returns 1 if the view can be constructed and
30199
 * 0 if the type is invalid. */
30200
0
int janet_dictionary_view(Janet tab, const JanetKV **data, int32_t *len, int32_t *cap) {
30201
0
    if (janet_checktype(tab, JANET_TABLE)) {
30202
0
        *data = janet_unwrap_table(tab)->data;
30203
0
        *cap = janet_unwrap_table(tab)->capacity;
30204
0
        *len = janet_unwrap_table(tab)->count;
30205
0
        return 1;
30206
0
    } else if (janet_checktype(tab, JANET_STRUCT)) {
30207
0
        *data = janet_unwrap_struct(tab);
30208
0
        *cap = janet_struct_capacity(janet_unwrap_struct(tab));
30209
0
        *len = janet_struct_length(janet_unwrap_struct(tab));
30210
0
        return 1;
30211
0
    }
30212
0
    return 0;
30213
0
}
30214
30215
0
int janet_checkint(Janet x) {
30216
0
    if (!janet_checktype(x, JANET_NUMBER))
30217
0
        return 0;
30218
0
    double dval = janet_unwrap_number(x);
30219
0
    return janet_checkintrange(dval);
30220
0
}
30221
30222
0
int janet_checkint64(Janet x) {
30223
0
    if (!janet_checktype(x, JANET_NUMBER))
30224
0
        return 0;
30225
0
    double dval = janet_unwrap_number(x);
30226
0
    return janet_checkint64range(dval);
30227
0
}
30228
30229
0
int janet_checkuint64(Janet x) {
30230
0
    if (!janet_checktype(x, JANET_NUMBER))
30231
0
        return 0;
30232
0
    double dval = janet_unwrap_number(x);
30233
0
    return dval >= 0 && dval <= JANET_INTMAX_DOUBLE && dval == (uint64_t) dval;
30234
0
}
30235
30236
0
int janet_checksize(Janet x) {
30237
0
    if (!janet_checktype(x, JANET_NUMBER))
30238
0
        return 0;
30239
0
    double dval = janet_unwrap_number(x);
30240
0
    if (dval != (double)((size_t) dval)) return 0;
30241
0
    if (SIZE_MAX > JANET_INTMAX_INT64) {
30242
0
        return dval <= JANET_INTMAX_INT64;
30243
0
    } else {
30244
0
        return dval <= SIZE_MAX;
30245
0
    }
30246
0
}
30247
30248
0
JanetTable *janet_get_core_table(const char *name) {
30249
0
    JanetTable *env = janet_core_env(NULL);
30250
0
    Janet out = janet_wrap_nil();
30251
0
    JanetBindingType bt = janet_resolve(env, janet_csymbol(name), &out);
30252
0
    if (bt == JANET_BINDING_NONE) return NULL;
30253
0
    if (!janet_checktype(out, JANET_TABLE)) return NULL;
30254
0
    return janet_unwrap_table(out);
30255
0
}
30256
30257
/* Sort keys of a dictionary type */
30258
0
int32_t janet_sorted_keys(const JanetKV *dict, int32_t cap, int32_t *index_buffer) {
30259
30260
    /* First, put populated indices into index_buffer */
30261
0
    int32_t next_index = 0;
30262
0
    for (int32_t i = 0; i < cap; i++) {
30263
0
        if (!janet_checktype(dict[i].key, JANET_NIL)) {
30264
0
            index_buffer[next_index++] = i;
30265
0
        }
30266
0
    }
30267
30268
    /* Next, sort those (simple insertion sort here for now) */
30269
0
    for (int32_t i = 1; i < next_index; i++) {
30270
0
        int32_t index_to_insert = index_buffer[i];
30271
0
        Janet lhs = dict[index_to_insert].key;
30272
0
        for (int32_t j = i - 1; j >= 0; j--) {
30273
0
            index_buffer[j + 1] = index_buffer[j];
30274
0
            Janet rhs = dict[index_buffer[j]].key;
30275
0
            if (janet_compare(lhs, rhs) >= 0) {
30276
0
                index_buffer[j + 1] = index_to_insert;
30277
0
                break;
30278
0
            } else if (j == 0) {
30279
0
                index_buffer[0] = index_to_insert;
30280
0
            }
30281
0
        }
30282
0
    }
30283
30284
    /* Return number of indices found */
30285
0
    return next_index;
30286
30287
0
}
30288
30289
/* Clock shims for various platforms */
30290
#ifdef JANET_GETTIME
30291
#ifdef JANET_WINDOWS
30292
#include <profileapi.h>
30293
int janet_gettime(struct timespec *spec, enum JanetTimeSource source) {
30294
    if (source == JANET_TIME_REALTIME) {
30295
        FILETIME ftime;
30296
        GetSystemTimeAsFileTime(&ftime);
30297
        int64_t wintime = (int64_t)(ftime.dwLowDateTime) | ((int64_t)(ftime.dwHighDateTime) << 32);
30298
        /* Windows epoch is January 1, 1601 apparently */
30299
        wintime -= 116444736000000000LL;
30300
        spec->tv_sec  = wintime / 10000000LL;
30301
        /* Resolution is 100 nanoseconds. */
30302
        spec->tv_nsec = wintime % 10000000LL * 100;
30303
    } else if (source == JANET_TIME_MONOTONIC) {
30304
        LARGE_INTEGER count;
30305
        LARGE_INTEGER perf_freq;
30306
        QueryPerformanceCounter(&count);
30307
        QueryPerformanceFrequency(&perf_freq);
30308
        spec->tv_sec = count.QuadPart / perf_freq.QuadPart;
30309
        spec->tv_nsec = (long)((count.QuadPart % perf_freq.QuadPart) * 1000000000 / perf_freq.QuadPart);
30310
    } else if (source == JANET_TIME_CPUTIME) {
30311
        FILETIME creationTime, exitTime, kernelTime, userTime;
30312
        GetProcessTimes(GetCurrentProcess(), &creationTime, &exitTime, &kernelTime, &userTime);
30313
        int64_t tmp = ((int64_t)userTime.dwHighDateTime << 32) + userTime.dwLowDateTime;
30314
        spec->tv_sec = tmp / 10000000LL;
30315
        spec->tv_nsec = tmp % 10000000LL * 100;
30316
    }
30317
    return 0;
30318
}
30319
/* clock_gettime() wasn't available on Mac until 10.12. */
30320
#elif defined(JANET_APPLE) && !defined(MAC_OS_X_VERSION_10_12)
30321
#include <mach/clock.h>
30322
#include <mach/mach.h>
30323
int janet_gettime(struct timespec *spec, enum JanetTimeSource source) {
30324
    if (source == JANET_TIME_REALTIME) {
30325
        clock_serv_t cclock;
30326
        mach_timespec_t mts;
30327
        host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &cclock);
30328
        clock_get_time(cclock, &mts);
30329
        mach_port_deallocate(mach_task_self(), cclock);
30330
        spec->tv_sec = mts.tv_sec;
30331
        spec->tv_nsec = mts.tv_nsec;
30332
    } else if (source == JANET_TIME_MONOTONIC) {
30333
        clock_serv_t cclock;
30334
        int nsecs;
30335
        mach_msg_type_number_t count;
30336
        host_get_clock_service(mach_host_self(), clock, &cclock);
30337
        clock_get_attributes(cclock, CLOCK_GET_TIME_RES, (clock_attr_t)&nsecs, &count);
30338
        mach_port_deallocate(mach_task_self(), cclock);
30339
        clock_getres(CLOCK_MONOTONIC, spec);
30340
    }
30341
    if (source == JANET_TIME_CPUTIME) {
30342
        clock_t tmp = clock();
30343
        spec->tv_sec = tmp;
30344
        spec->tv_nsec = (tmp - spec->tv_sec) * 1.0e9;
30345
    }
30346
    return 0;
30347
}
30348
#else
30349
0
int janet_gettime(struct timespec *spec, enum JanetTimeSource source) {
30350
0
    clockid_t cid = CLOCK_REALTIME;
30351
0
    if (source == JANET_TIME_REALTIME) {
30352
0
        cid = CLOCK_REALTIME;
30353
0
    } else if (source == JANET_TIME_MONOTONIC) {
30354
0
        cid = CLOCK_MONOTONIC;
30355
0
    } else if (source == JANET_TIME_CPUTIME) {
30356
0
        cid = CLOCK_PROCESS_CPUTIME_ID;
30357
0
    }
30358
0
    return clock_gettime(cid, spec);
30359
0
}
30360
#endif
30361
#endif
30362
30363
/* Setting C99 standard makes this not available, but it should
30364
 * work/link properly if we detect a BSD */
30365
#if defined(JANET_BSD) || defined(MAC_OS_X_VERSION_10_7)
30366
void arc4random_buf(void *buf, size_t nbytes);
30367
#endif
30368
30369
0
int janet_cryptorand(uint8_t *out, size_t n) {
30370
#ifdef JANET_WINDOWS
30371
    for (size_t i = 0; i < n; i += sizeof(unsigned int)) {
30372
        unsigned int v;
30373
        if (rand_s(&v))
30374
            return -1;
30375
        for (int32_t j = 0; (j < (int32_t) sizeof(unsigned int)) && (i + j < n); j++) {
30376
            out[i + j] = v & 0xff;
30377
            v = v >> 8;
30378
        }
30379
    }
30380
    return 0;
30381
#elif defined(JANET_LINUX) || defined(JANET_CYGWIN) || ( defined(JANET_APPLE) && !defined(MAC_OS_X_VERSION_10_7) )
30382
    /* We should be able to call getrandom on linux, but it doesn't seem
30383
       to be uniformly supported on linux distros.
30384
       On Mac, arc4random_buf wasn't available on until 10.7.
30385
       In these cases, use this fallback path for now... */
30386
0
    int rc;
30387
0
    int randfd;
30388
0
    RETRY_EINTR(randfd, open("/dev/urandom", O_RDONLY | O_CLOEXEC));
30389
0
    if (randfd < 0)
30390
0
        return -1;
30391
0
    while (n > 0) {
30392
0
        ssize_t nread;
30393
0
        RETRY_EINTR(nread, read(randfd, out, n));
30394
0
        if (nread <= 0) {
30395
0
            RETRY_EINTR(rc, close(randfd));
30396
0
            return -1;
30397
0
        }
30398
0
        out += nread;
30399
0
        n -= nread;
30400
0
    }
30401
0
    RETRY_EINTR(rc, close(randfd));
30402
0
    return 0;
30403
#elif defined(JANET_BSD) || defined(MAC_OS_X_VERSION_10_7)
30404
    arc4random_buf(out, n);
30405
    return 0;
30406
#else
30407
    (void) n;
30408
    (void) out;
30409
    return -1;
30410
#endif
30411
0
}
30412
30413
/* Dynamic library loading */
30414
30415
0
char *get_processed_name(const char *name) {
30416
0
    if (name[0] == '.') return (char *) name;
30417
0
    const char *c;
30418
0
    for (c = name; *c; c++) {
30419
0
        if (*c == '/') return (char *) name;
30420
0
    }
30421
0
    size_t l = (size_t)(c - name);
30422
0
    char *ret = janet_malloc(l + 3);
30423
0
    if (NULL == ret) {
30424
0
        JANET_OUT_OF_MEMORY;
30425
0
    }
30426
0
    ret[0] = '.';
30427
0
    ret[1] = '/';
30428
0
    memcpy(ret + 2, name, l + 1);
30429
0
    return ret;
30430
0
}
30431
30432
#if defined(JANET_NO_DYNAMIC_MODULES)
30433
30434
const char *error_clib(void) {
30435
    return "dynamic modules not supported";
30436
}
30437
30438
#else
30439
#if defined(JANET_WINDOWS)
30440
30441
static char error_clib_buf[256];
30442
char *error_clib(void) {
30443
    FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
30444
                   NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
30445
                   error_clib_buf, sizeof(error_clib_buf), NULL);
30446
    error_clib_buf[strlen(error_clib_buf) - 1] = '\0';
30447
    return error_clib_buf;
30448
}
30449
30450
Clib load_clib(const char *name) {
30451
    if (name == NULL) {
30452
        return GetModuleHandle(NULL);
30453
    } else {
30454
        return LoadLibrary(name);
30455
    }
30456
}
30457
30458
void free_clib(HINSTANCE clib) {
30459
    if (clib != GetModuleHandle(NULL)) {
30460
        FreeLibrary(clib);
30461
    }
30462
}
30463
30464
void *symbol_clib(HINSTANCE clib, const char *sym) {
30465
    if (clib != GetModuleHandle(NULL)) {
30466
        return GetProcAddress(clib, sym);
30467
    } else {
30468
        /* Look up symbols from all loaded modules */
30469
        HMODULE hMods[1024];
30470
        DWORD needed = 0;
30471
        if (EnumProcessModules(GetCurrentProcess(), hMods, sizeof(hMods), &needed)) {
30472
            needed /= sizeof(HMODULE);
30473
            for (DWORD i = 0; i < needed; i++) {
30474
                void *address = GetProcAddress(hMods[i], sym);
30475
                if (NULL != address) {
30476
                    return address;
30477
                }
30478
            }
30479
        } else {
30480
            janet_panicf("ffi: %s", error_clib());
30481
        }
30482
        return NULL;
30483
    }
30484
}
30485
30486
#endif
30487
#endif
30488
30489
/* Alloc function macro fills */
30490
0
void *(janet_malloc)(size_t size) {
30491
0
    return janet_malloc(size);
30492
0
}
30493
30494
0
void (janet_free)(void *ptr) {
30495
0
    janet_free(ptr);
30496
0
}
30497
30498
0
void *(janet_calloc)(size_t nmemb, size_t size) {
30499
0
    return janet_calloc(nmemb, size);
30500
0
}
30501
30502
0
void *(janet_realloc)(void *ptr, size_t size) {
30503
0
    return janet_realloc(ptr, size);
30504
0
}
30505
30506
30507
/* src/core/value.c */
30508
#line 0 "src/core/value.c"
30509
30510
/*
30511
* Copyright (c) 2023 Calvin Rose
30512
*
30513
* Permission is hereby granted, free of charge, to any person obtaining a copy
30514
* of this software and associated documentation files (the "Software"), to
30515
* deal in the Software without restriction, including without limitation the
30516
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
30517
* sell copies of the Software, and to permit persons to whom the Software is
30518
* furnished to do so, subject to the following conditions:
30519
*
30520
* The above copyright notice and this permission notice shall be included in
30521
* all copies or substantial portions of the Software.
30522
*
30523
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
30524
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
30525
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
30526
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
30527
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
30528
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
30529
* IN THE SOFTWARE.
30530
*/
30531
30532
#ifndef JANET_AMALG
30533
#include "features.h"
30534
#include "util.h"
30535
#include "state.h"
30536
#include "gc.h"
30537
#include "fiber.h"
30538
#include <janet.h>
30539
#endif
30540
30541
#include <math.h>
30542
30543
935k
static void push_traversal_node(void *lhs, void *rhs, int32_t index2) {
30544
935k
    JanetTraversalNode node;
30545
935k
    node.self = (JanetGCObject *) lhs;
30546
935k
    node.other = (JanetGCObject *) rhs;
30547
935k
    node.index = 0;
30548
935k
    node.index2 = index2;
30549
935k
    int is_new = janet_vm.traversal_base == NULL;
30550
935k
    if (is_new || (janet_vm.traversal + 1 >= janet_vm.traversal_top)) {
30551
255
        size_t oldsize = is_new ? 0 : (janet_vm.traversal - janet_vm.traversal_base);
30552
255
        size_t newsize = 2 * oldsize + 1;
30553
255
        if (newsize < 128) {
30554
230
            newsize = 128;
30555
230
        }
30556
255
        JanetTraversalNode *tn = janet_realloc(janet_vm.traversal_base, newsize * sizeof(JanetTraversalNode));
30557
255
        if (tn == NULL) {
30558
0
            JANET_OUT_OF_MEMORY;
30559
0
        }
30560
255
        janet_vm.traversal_base = tn;
30561
255
        janet_vm.traversal_top = janet_vm.traversal_base + newsize;
30562
255
        janet_vm.traversal = janet_vm.traversal_base + oldsize;
30563
255
    }
30564
935k
    *(++janet_vm.traversal) = node;
30565
935k
}
30566
30567
/*
30568
 * Used for travsersing structs and tuples without recursion
30569
 * Returns:
30570
 * 0 - next node found
30571
 * 1 - early stop - lhs < rhs
30572
 * 2 - no next node found
30573
 * 3 - early stop - lhs > rhs
30574
 */
30575
3.75M
static int traversal_next(Janet *x, Janet *y) {
30576
3.75M
    JanetTraversalNode *t = janet_vm.traversal;
30577
4.68M
    while (t && t > janet_vm.traversal_base) {
30578
2.82M
        JanetGCObject *self = t->self;
30579
2.82M
        JanetTupleHead *tself = (JanetTupleHead *)self;
30580
2.82M
        JanetStructHead *sself = (JanetStructHead *)self;
30581
2.82M
        JanetGCObject *other = t->other;
30582
2.82M
        JanetTupleHead *tother = (JanetTupleHead *)other;
30583
2.82M
        JanetStructHead *sother = (JanetStructHead *)other;
30584
2.82M
        if ((self->flags & JANET_MEM_TYPEBITS) == JANET_MEMORY_TUPLE) {
30585
            /* Node is a tuple at index t->index */
30586
97.0k
            if (t->index < tself->length && t->index < tother->length) {
30587
68.9k
                int32_t index = t->index++;
30588
68.9k
                *x = tself->data[index];
30589
68.9k
                *y = tother->data[index];
30590
68.9k
                janet_vm.traversal = t;
30591
68.9k
                return 0;
30592
68.9k
            }
30593
28.1k
            if (t->index2 && tself->length != tother->length) {
30594
0
                return tself->length > tother->length ? 3 : 1;
30595
0
            }
30596
2.73M
        } else {
30597
            /* Node is a struct at index t->index: if t->index2 is true, we should return the values. */
30598
2.73M
            if (t->index2) {
30599
914k
                t->index2 = 0;
30600
914k
                int32_t index = t->index++;
30601
914k
                *x = sself->data[index].value;
30602
914k
                *y = sother->data[index].value;
30603
914k
                janet_vm.traversal = t;
30604
914k
                return 0;
30605
914k
            }
30606
1.81M
            for (int32_t i = t->index; i < sself->capacity; i++) {
30607
914k
                t->index2 = 1;
30608
914k
                *x = sself->data[t->index].key;
30609
914k
                *y = sother->data[t->index].key;
30610
914k
                janet_vm.traversal = t;
30611
914k
                return 0;
30612
914k
            }
30613
            /* Traverse prototype */
30614
903k
            JanetStruct sproto = sself->proto;
30615
903k
            JanetStruct oproto = sother->proto;
30616
903k
            if (sproto && !oproto) return 3;
30617
903k
            if (!sproto && oproto) return 1;
30618
903k
            if (oproto && sproto) {
30619
0
                *x = janet_wrap_struct(sproto);
30620
0
                *y = janet_wrap_struct(oproto);
30621
0
                janet_vm.traversal = t - 1;
30622
0
                return 0;
30623
0
            }
30624
903k
        }
30625
931k
        t--;
30626
931k
    }
30627
1.85M
    janet_vm.traversal = t;
30628
1.85M
    return 2;
30629
3.75M
}
30630
30631
/*
30632
 * Define a number of functions that can be used internally on ANY Janet.
30633
 */
30634
30635
0
Janet janet_next(Janet ds, Janet key) {
30636
0
    return janet_next_impl(ds, key, 0);
30637
0
}
30638
30639
0
Janet janet_next_impl(Janet ds, Janet key, int is_interpreter) {
30640
0
    JanetType t = janet_type(ds);
30641
0
    switch (t) {
30642
0
        default:
30643
0
            janet_panicf("expected iterable type, got %v", ds);
30644
0
        case JANET_TABLE:
30645
0
        case JANET_STRUCT: {
30646
0
            const JanetKV *start;
30647
0
            int32_t cap;
30648
0
            if (t == JANET_TABLE) {
30649
0
                JanetTable *tab = janet_unwrap_table(ds);
30650
0
                cap = tab->capacity;
30651
0
                start = tab->data;
30652
0
            } else {
30653
0
                JanetStruct st = janet_unwrap_struct(ds);
30654
0
                cap = janet_struct_capacity(st);
30655
0
                start = st;
30656
0
            }
30657
0
            const JanetKV *end = start + cap;
30658
0
            const JanetKV *kv = janet_checktype(key, JANET_NIL)
30659
0
                                ? start
30660
0
                                : janet_dict_find(start, cap, key) + 1;
30661
0
            while (kv < end) {
30662
0
                if (!janet_checktype(kv->key, JANET_NIL)) return kv->key;
30663
0
                kv++;
30664
0
            }
30665
0
            break;
30666
0
        }
30667
0
        case JANET_STRING:
30668
0
        case JANET_KEYWORD:
30669
0
        case JANET_SYMBOL:
30670
0
        case JANET_BUFFER:
30671
0
        case JANET_ARRAY:
30672
0
        case JANET_TUPLE: {
30673
0
            int32_t i;
30674
0
            if (janet_checktype(key, JANET_NIL)) {
30675
0
                i = 0;
30676
0
            } else if (janet_checkint(key)) {
30677
0
                i = janet_unwrap_integer(key) + 1;
30678
0
            } else {
30679
0
                break;
30680
0
            }
30681
0
            int32_t len;
30682
0
            if (t == JANET_BUFFER) {
30683
0
                len = janet_unwrap_buffer(ds)->count;
30684
0
            } else if (t == JANET_ARRAY) {
30685
0
                len = janet_unwrap_array(ds)->count;
30686
0
            } else if (t == JANET_TUPLE) {
30687
0
                len = janet_tuple_length(janet_unwrap_tuple(ds));
30688
0
            } else {
30689
0
                len = janet_string_length(janet_unwrap_string(ds));
30690
0
            }
30691
0
            if (i < len && i >= 0) {
30692
0
                return janet_wrap_integer(i);
30693
0
            }
30694
0
            break;
30695
0
        }
30696
0
        case JANET_ABSTRACT: {
30697
0
            JanetAbstract abst = janet_unwrap_abstract(ds);
30698
0
            const JanetAbstractType *at = janet_abstract_type(abst);
30699
0
            if (NULL == at->next) break;
30700
0
            return at->next(abst, key);
30701
0
        }
30702
0
        case JANET_FIBER: {
30703
0
            JanetFiber *child = janet_unwrap_fiber(ds);
30704
0
            Janet retreg;
30705
0
            JanetFiberStatus status = janet_fiber_status(child);
30706
0
            if (status == JANET_STATUS_ALIVE ||
30707
0
                    status == JANET_STATUS_DEAD ||
30708
0
                    status == JANET_STATUS_ERROR ||
30709
0
                    status == JANET_STATUS_USER0 ||
30710
0
                    status == JANET_STATUS_USER1 ||
30711
0
                    status == JANET_STATUS_USER2 ||
30712
0
                    status == JANET_STATUS_USER3 ||
30713
0
                    status == JANET_STATUS_USER4) {
30714
0
                return janet_wrap_nil();
30715
0
            }
30716
0
            janet_vm.fiber->child = child;
30717
0
            JanetSignal sig = janet_continue(child, janet_wrap_nil(), &retreg);
30718
0
            if (sig != JANET_SIGNAL_OK && !(child->flags & (1 << sig))) {
30719
0
                if (is_interpreter) {
30720
0
                    janet_signalv(sig, retreg);
30721
0
                } else {
30722
0
                    janet_vm.fiber->child = NULL;
30723
0
                    janet_panicv(retreg);
30724
0
                }
30725
0
            }
30726
0
            janet_vm.fiber->child = NULL;
30727
0
            if (sig == JANET_SIGNAL_OK ||
30728
0
                    sig == JANET_SIGNAL_ERROR ||
30729
0
                    sig == JANET_SIGNAL_USER0 ||
30730
0
                    sig == JANET_SIGNAL_USER1 ||
30731
0
                    sig == JANET_SIGNAL_USER2 ||
30732
0
                    sig == JANET_SIGNAL_USER3 ||
30733
0
                    sig == JANET_SIGNAL_USER4) {
30734
                /* Fiber cannot be resumed, so discard last value. */
30735
0
                return janet_wrap_nil();
30736
0
            } else {
30737
0
                return janet_wrap_integer(0);
30738
0
            }
30739
0
        }
30740
0
    }
30741
0
    return janet_wrap_nil();
30742
0
}
30743
30744
/* Compare two abstract values */
30745
0
static int janet_compare_abstract(JanetAbstract xx, JanetAbstract yy) {
30746
0
    if (xx == yy) return 0;
30747
0
    const JanetAbstractType *xt = janet_abstract_type(xx);
30748
0
    const JanetAbstractType *yt = janet_abstract_type(yy);
30749
0
    if (xt != yt) {
30750
0
        return xt > yt ? 1 : -1;
30751
0
    }
30752
0
    if (xt->compare == NULL) {
30753
0
        return xx > yy ? 1 : -1;
30754
0
    }
30755
0
    return xt->compare(xx, yy);
30756
0
}
30757
30758
717k
int janet_equals(Janet x, Janet y) {
30759
717k
    janet_vm.traversal = janet_vm.traversal_base;
30760
1.02M
    do {
30761
1.02M
        if (janet_type(x) != janet_type(y)) return 0;
30762
981k
        switch (janet_type(x)) {
30763
287k
            case JANET_NIL:
30764
287k
                break;
30765
573
            case JANET_BOOLEAN:
30766
573
                if (janet_unwrap_boolean(x) != janet_unwrap_boolean(y)) return 0;
30767
379
                break;
30768
1.84k
            case JANET_NUMBER:
30769
1.84k
                if (janet_unwrap_number(x) != janet_unwrap_number(y)) return 0;
30770
1.02k
                break;
30771
16.3k
            case JANET_STRING:
30772
16.3k
                if (!janet_string_equal(janet_unwrap_string(x), janet_unwrap_string(y))) return 0;
30773
15.3k
                break;
30774
15.3k
            case JANET_ABSTRACT:
30775
0
                if (janet_compare_abstract(janet_unwrap_abstract(x), janet_unwrap_abstract(y))) return 0;
30776
0
                break;
30777
531k
            default:
30778
531k
                if (janet_unwrap_pointer(x) != janet_unwrap_pointer(y)) return 0;
30779
137k
                break;
30780
137k
            case JANET_TUPLE: {
30781
2.53k
                const Janet *t1 = janet_unwrap_tuple(x);
30782
2.53k
                const Janet *t2 = janet_unwrap_tuple(y);
30783
2.53k
                if (t1 == t2) break;
30784
2.53k
                if (JANET_TUPLE_FLAG_BRACKETCTOR & (janet_tuple_flag(t1) ^ janet_tuple_flag(t2))) return 0;
30785
2.33k
                if (janet_tuple_hash(t1) != janet_tuple_hash(t2)) return 0;
30786
1.51k
                if (janet_tuple_length(t1) != janet_tuple_length(t2)) return 0;
30787
1.30k
                push_traversal_node(janet_tuple_head(t1), janet_tuple_head(t2), 0);
30788
1.30k
                break;
30789
1.51k
            }
30790
0
            break;
30791
141k
            case JANET_STRUCT: {
30792
141k
                const JanetKV *s1 = janet_unwrap_struct(x);
30793
141k
                const JanetKV *s2 = janet_unwrap_struct(y);
30794
141k
                if (s1 == s2) break;
30795
141k
                if (janet_struct_hash(s1) != janet_struct_hash(s2)) return 0;
30796
138k
                if (janet_struct_length(s1) != janet_struct_length(s2)) return 0;
30797
138k
                if (janet_struct_proto(s1) && !janet_struct_proto(s2)) return 0;
30798
138k
                if (!janet_struct_proto(s1) && janet_struct_proto(s2)) return 0;
30799
138k
                push_traversal_node(janet_struct_head(s1), janet_struct_head(s2), 0);
30800
138k
                break;
30801
138k
            }
30802
0
            break;
30803
981k
        }
30804
981k
    } while (!traversal_next(&x, &y));
30805
276k
    return 1;
30806
717k
}
30807
30808
3.68M
static uint64_t murmur64(uint64_t h) {
30809
3.68M
    h ^= h >> 33;
30810
3.68M
    h *= 0xff51afd7ed558ccdUL;
30811
3.68M
    h ^= h >> 33;
30812
3.68M
    h *= 0xc4ceb9fe1a85ec53UL;
30813
3.68M
    h ^= h >> 33;
30814
3.68M
    return h;
30815
3.68M
}
30816
30817
/* Computes a hash value for a function */
30818
19.3M
int32_t janet_hash(Janet x) {
30819
19.3M
    int32_t hash = 0;
30820
19.3M
    switch (janet_type(x)) {
30821
9.02M
        case JANET_NIL:
30822
9.02M
            hash = 0;
30823
9.02M
            break;
30824
916
        case JANET_BOOLEAN:
30825
916
            hash = janet_unwrap_boolean(x);
30826
916
            break;
30827
942k
        case JANET_STRING:
30828
3.90M
        case JANET_SYMBOL:
30829
3.91M
        case JANET_KEYWORD:
30830
3.91M
            hash = janet_string_hash(janet_unwrap_string(x));
30831
3.91M
            break;
30832
163k
        case JANET_TUPLE:
30833
163k
            hash = janet_tuple_hash(janet_unwrap_tuple(x));
30834
163k
            hash += (janet_tuple_flag(janet_unwrap_tuple(x)) & JANET_TUPLE_FLAG_BRACKETCTOR) ? 1 : 0;
30835
163k
            break;
30836
2.48M
        case JANET_STRUCT:
30837
2.48M
            hash = janet_struct_hash(janet_unwrap_struct(x));
30838
2.48M
            break;
30839
30.8k
        case JANET_NUMBER: {
30840
30.8k
            union {
30841
30.8k
                double d;
30842
30.8k
                uint64_t u;
30843
30.8k
            } as;
30844
30.8k
            as.d = janet_unwrap_number(x);
30845
30.8k
            as.d += 0.0; /* normalize negative 0 */
30846
30.8k
            uint32_t lo = (uint32_t)(as.u & 0xFFFFFFFF);
30847
30.8k
            uint32_t hi = (uint32_t)(as.u >> 32);
30848
30.8k
            uint32_t hilo = (hi ^ lo) * 2654435769u;
30849
30.8k
            hash = (int32_t)((hilo << 16) | (hilo >> 16));
30850
30.8k
            break;
30851
3.90M
        }
30852
0
        case JANET_ABSTRACT: {
30853
0
            JanetAbstract xx = janet_unwrap_abstract(x);
30854
0
            const JanetAbstractType *at = janet_abstract_type(xx);
30855
0
            if (at->hash != NULL) {
30856
0
                hash = at->hash(xx, janet_abstract_size(xx));
30857
0
                break;
30858
0
            }
30859
0
        }
30860
        /* fallthrough */
30861
3.68M
        default:
30862
3.68M
            if (sizeof(double) == sizeof(void *)) {
30863
                /* Assuming 8 byte pointer (8 byte aligned) */
30864
3.68M
                uint64_t i = murmur64(janet_u64(x));
30865
3.68M
                hash = (int32_t)(i >> 32);
30866
3.68M
            } else {
30867
                /* Assuming 4 byte pointer (or smaller) */
30868
0
                uintptr_t diff = (uintptr_t) janet_unwrap_pointer(x);
30869
0
                uint32_t hilo = (uint32_t) diff * 2654435769u;
30870
0
                hash = (int32_t)((hilo << 16) | (hilo >> 16));
30871
0
            }
30872
3.68M
            break;
30873
19.3M
    }
30874
19.3M
    return hash;
30875
19.3M
}
30876
30877
/* Compares x to y. If they are equal returns 0. If x is less, returns -1.
30878
 * If y is less, returns 1. All types are comparable
30879
 * and should have strict ordering, excepts NaNs. */
30880
1.73M
int janet_compare(Janet x, Janet y) {
30881
1.73M
    janet_vm.traversal = janet_vm.traversal_base;
30882
1.73M
    int status;
30883
3.32M
    do {
30884
3.32M
        JanetType tx = janet_type(x);
30885
3.32M
        JanetType ty = janet_type(y);
30886
3.32M
        if (tx != ty) return tx < ty ? -1 : 1;
30887
3.32M
        switch (tx) {
30888
1.53M
            case JANET_NIL:
30889
1.53M
                break;
30890
196
            case JANET_BOOLEAN: {
30891
196
                int diff = janet_unwrap_boolean(x) - janet_unwrap_boolean(y);
30892
196
                if (diff) return diff;
30893
196
                break;
30894
196
            }
30895
1.12k
            case JANET_NUMBER: {
30896
1.12k
                double xx = janet_unwrap_number(x);
30897
1.12k
                double yy = janet_unwrap_number(y);
30898
1.12k
                if (xx == yy) {
30899
895
                    break;
30900
895
                } else {
30901
232
                    return (xx < yy) ? -1 : 1;
30902
232
                }
30903
1.12k
            }
30904
43.7k
            case JANET_STRING:
30905
991k
            case JANET_SYMBOL:
30906
991k
            case JANET_KEYWORD: {
30907
991k
                int diff = janet_string_compare(janet_unwrap_string(x), janet_unwrap_string(y));
30908
991k
                if (diff) return diff;
30909
843k
                break;
30910
991k
            }
30911
843k
            case JANET_ABSTRACT: {
30912
0
                int diff = janet_compare_abstract(janet_unwrap_abstract(x), janet_unwrap_abstract(y));
30913
0
                if (diff) return diff;
30914
0
                break;
30915
0
            }
30916
16
            default: {
30917
16
                if (janet_unwrap_pointer(x) == janet_unwrap_pointer(y)) {
30918
0
                    break;
30919
16
                } else {
30920
16
                    return janet_unwrap_pointer(x) > janet_unwrap_pointer(y) ? 1 : -1;
30921
16
                }
30922
16
            }
30923
27.5k
            case JANET_TUPLE: {
30924
27.5k
                const Janet *lhs = janet_unwrap_tuple(x);
30925
27.5k
                const Janet *rhs = janet_unwrap_tuple(y);
30926
27.5k
                if (JANET_TUPLE_FLAG_BRACKETCTOR & (janet_tuple_flag(lhs) ^ janet_tuple_flag(rhs))) {
30927
0
                    return (janet_tuple_flag(lhs) & JANET_TUPLE_FLAG_BRACKETCTOR) ? 1 : -1;
30928
0
                }
30929
27.5k
                push_traversal_node(janet_tuple_head(lhs), janet_tuple_head(rhs), 1);
30930
27.5k
                break;
30931
27.5k
            }
30932
767k
            case JANET_STRUCT: {
30933
767k
                const JanetKV *lhs = janet_unwrap_struct(x);
30934
767k
                const JanetKV *rhs = janet_unwrap_struct(y);
30935
767k
                int32_t llen = janet_struct_capacity(lhs);
30936
767k
                int32_t rlen = janet_struct_capacity(rhs);
30937
767k
                int32_t lhash = janet_struct_hash(lhs);
30938
767k
                int32_t rhash = janet_struct_hash(rhs);
30939
767k
                if (llen < rlen) return -1;
30940
767k
                if (llen > rlen) return 1;
30941
767k
                if (lhash < rhash) return -1;
30942
767k
                if (lhash > rhash) return 1;
30943
767k
                push_traversal_node(janet_struct_head(lhs), janet_struct_head(rhs), 0);
30944
767k
                break;
30945
767k
            }
30946
3.32M
        }
30947
3.32M
    } while (!(status = traversal_next(&x, &y)));
30948
1.58M
    return status - 2;
30949
1.73M
}
30950
30951
0
static int32_t getter_checkint(JanetType type, Janet key, int32_t max) {
30952
0
    if (!janet_checkint(key)) goto bad;
30953
0
    int32_t ret = janet_unwrap_integer(key);
30954
0
    if (ret < 0) goto bad;
30955
0
    if (ret >= max) goto bad;
30956
0
    return ret;
30957
0
bad:
30958
0
    janet_panicf("expected integer key for %s in range [0, %d), got %v", janet_type_names[type], max, key);
30959
0
}
30960
30961
/* Gets a value and returns. Can panic. */
30962
0
Janet janet_in(Janet ds, Janet key) {
30963
0
    Janet value;
30964
0
    JanetType type = janet_type(ds);
30965
0
    switch (type) {
30966
0
        default:
30967
0
            janet_panicf("expected %T, got %v", JANET_TFLAG_LENGTHABLE, ds);
30968
0
            break;
30969
0
        case JANET_STRUCT:
30970
0
            value = janet_struct_get(janet_unwrap_struct(ds), key);
30971
0
            break;
30972
0
        case JANET_TABLE:
30973
0
            value = janet_table_get(janet_unwrap_table(ds), key);
30974
0
            break;
30975
0
        case JANET_ARRAY: {
30976
0
            JanetArray *array = janet_unwrap_array(ds);
30977
0
            int32_t index = getter_checkint(type, key, array->count);
30978
0
            value = array->data[index];
30979
0
            break;
30980
0
        }
30981
0
        case JANET_TUPLE: {
30982
0
            const Janet *tuple = janet_unwrap_tuple(ds);
30983
0
            int32_t len = janet_tuple_length(tuple);
30984
0
            value = tuple[getter_checkint(type, key, len)];
30985
0
            break;
30986
0
        }
30987
0
        case JANET_BUFFER: {
30988
0
            JanetBuffer *buffer = janet_unwrap_buffer(ds);
30989
0
            int32_t index = getter_checkint(type, key, buffer->count);
30990
0
            value = janet_wrap_integer(buffer->data[index]);
30991
0
            break;
30992
0
        }
30993
0
        case JANET_STRING:
30994
0
        case JANET_SYMBOL:
30995
0
        case JANET_KEYWORD: {
30996
0
            const uint8_t *str = janet_unwrap_string(ds);
30997
0
            int32_t index = getter_checkint(type, key, janet_string_length(str));
30998
0
            value = janet_wrap_integer(str[index]);
30999
0
            break;
31000
0
        }
31001
0
        case JANET_ABSTRACT: {
31002
0
            JanetAbstractType *type = (JanetAbstractType *)janet_abstract_type(janet_unwrap_abstract(ds));
31003
0
            if (type->get) {
31004
0
                if (!(type->get)(janet_unwrap_abstract(ds), key, &value))
31005
0
                    janet_panicf("key %v not found in %v ", key, ds);
31006
0
            } else {
31007
0
                janet_panicf("no getter for %v ", ds);
31008
0
            }
31009
0
            break;
31010
0
        }
31011
0
        case JANET_FIBER: {
31012
            /* Bit of a hack to allow iterating over fibers. */
31013
0
            if (janet_equals(key, janet_wrap_integer(0))) {
31014
0
                return janet_unwrap_fiber(ds)->last_value;
31015
0
            } else {
31016
0
                janet_panicf("expected key 0, got %v", key);
31017
0
            }
31018
0
        }
31019
0
    }
31020
0
    return value;
31021
0
}
31022
31023
0
Janet janet_get(Janet ds, Janet key) {
31024
0
    JanetType t = janet_type(ds);
31025
0
    switch (t) {
31026
0
        default:
31027
0
            return janet_wrap_nil();
31028
0
        case JANET_STRING:
31029
0
        case JANET_SYMBOL:
31030
0
        case JANET_KEYWORD: {
31031
0
            if (!janet_checkint(key)) return janet_wrap_nil();
31032
0
            int32_t index = janet_unwrap_integer(key);
31033
0
            if (index < 0) return janet_wrap_nil();
31034
0
            const uint8_t *str = janet_unwrap_string(ds);
31035
0
            if (index >= janet_string_length(str)) return janet_wrap_nil();
31036
0
            return janet_wrap_integer(str[index]);
31037
0
        }
31038
0
        case JANET_ABSTRACT: {
31039
0
            Janet value;
31040
0
            void *abst = janet_unwrap_abstract(ds);
31041
0
            JanetAbstractType *type = (JanetAbstractType *)janet_abstract_type(abst);
31042
0
            if (!type->get) return janet_wrap_nil();
31043
0
            if ((type->get)(abst, key, &value))
31044
0
                return value;
31045
0
            return janet_wrap_nil();
31046
0
        }
31047
0
        case JANET_ARRAY:
31048
0
        case JANET_TUPLE:
31049
0
        case JANET_BUFFER: {
31050
0
            if (!janet_checkint(key)) return janet_wrap_nil();
31051
0
            int32_t index = janet_unwrap_integer(key);
31052
0
            if (index < 0) return janet_wrap_nil();
31053
0
            if (t == JANET_ARRAY) {
31054
0
                JanetArray *a = janet_unwrap_array(ds);
31055
0
                if (index >= a->count) return janet_wrap_nil();
31056
0
                return a->data[index];
31057
0
            } else if (t == JANET_BUFFER) {
31058
0
                JanetBuffer *b = janet_unwrap_buffer(ds);
31059
0
                if (index >= b->count) return janet_wrap_nil();
31060
0
                return janet_wrap_integer(b->data[index]);
31061
0
            } else {
31062
0
                const Janet *t = janet_unwrap_tuple(ds);
31063
0
                if (index >= janet_tuple_length(t)) return janet_wrap_nil();
31064
0
                return t[index];
31065
0
            }
31066
0
        }
31067
0
        case JANET_TABLE: {
31068
0
            return janet_table_get(janet_unwrap_table(ds), key);
31069
0
        }
31070
0
        case JANET_STRUCT: {
31071
0
            const JanetKV *st = janet_unwrap_struct(ds);
31072
0
            return janet_struct_get(st, key);
31073
0
        }
31074
0
        case JANET_FIBER: {
31075
            /* Bit of a hack to allow iterating over fibers. */
31076
0
            if (janet_equals(key, janet_wrap_integer(0))) {
31077
0
                return janet_unwrap_fiber(ds)->last_value;
31078
0
            } else {
31079
0
                return janet_wrap_nil();
31080
0
            }
31081
0
        }
31082
0
    }
31083
0
}
31084
31085
0
Janet janet_getindex(Janet ds, int32_t index) {
31086
0
    Janet value;
31087
0
    if (index < 0) janet_panic("expected non-negative index");
31088
0
    switch (janet_type(ds)) {
31089
0
        default:
31090
0
            janet_panicf("expected %T, got %v", JANET_TFLAG_LENGTHABLE, ds);
31091
0
            break;
31092
0
        case JANET_STRING:
31093
0
        case JANET_SYMBOL:
31094
0
        case JANET_KEYWORD:
31095
0
            if (index >= janet_string_length(janet_unwrap_string(ds))) {
31096
0
                value = janet_wrap_nil();
31097
0
            } else {
31098
0
                value = janet_wrap_integer(janet_unwrap_string(ds)[index]);
31099
0
            }
31100
0
            break;
31101
0
        case JANET_ARRAY:
31102
0
            if (index >= janet_unwrap_array(ds)->count) {
31103
0
                value = janet_wrap_nil();
31104
0
            } else {
31105
0
                value = janet_unwrap_array(ds)->data[index];
31106
0
            }
31107
0
            break;
31108
0
        case JANET_BUFFER:
31109
0
            if (index >= janet_unwrap_buffer(ds)->count) {
31110
0
                value = janet_wrap_nil();
31111
0
            } else {
31112
0
                value = janet_wrap_integer(janet_unwrap_buffer(ds)->data[index]);
31113
0
            }
31114
0
            break;
31115
0
        case JANET_TUPLE:
31116
0
            if (index >= janet_tuple_length(janet_unwrap_tuple(ds))) {
31117
0
                value = janet_wrap_nil();
31118
0
            } else {
31119
0
                value = janet_unwrap_tuple(ds)[index];
31120
0
            }
31121
0
            break;
31122
0
        case JANET_TABLE:
31123
0
            value = janet_table_get(janet_unwrap_table(ds), janet_wrap_integer(index));
31124
0
            break;
31125
0
        case JANET_STRUCT:
31126
0
            value = janet_struct_get(janet_unwrap_struct(ds), janet_wrap_integer(index));
31127
0
            break;
31128
0
        case JANET_ABSTRACT: {
31129
0
            JanetAbstractType *type = (JanetAbstractType *)janet_abstract_type(janet_unwrap_abstract(ds));
31130
0
            if (type->get) {
31131
0
                if (!(type->get)(janet_unwrap_abstract(ds), janet_wrap_integer(index), &value))
31132
0
                    value = janet_wrap_nil();
31133
0
            } else {
31134
0
                janet_panicf("no getter for %v ", ds);
31135
0
            }
31136
0
            break;
31137
0
        }
31138
0
        case JANET_FIBER: {
31139
0
            if (index == 0) {
31140
0
                value = janet_unwrap_fiber(ds)->last_value;
31141
0
            } else {
31142
0
                value = janet_wrap_nil();
31143
0
            }
31144
0
            break;
31145
0
        }
31146
0
    }
31147
0
    return value;
31148
0
}
31149
31150
0
int32_t janet_length(Janet x) {
31151
0
    switch (janet_type(x)) {
31152
0
        default:
31153
0
            janet_panicf("expected %T, got %v", JANET_TFLAG_LENGTHABLE, x);
31154
0
        case JANET_STRING:
31155
0
        case JANET_SYMBOL:
31156
0
        case JANET_KEYWORD:
31157
0
            return janet_string_length(janet_unwrap_string(x));
31158
0
        case JANET_ARRAY:
31159
0
            return janet_unwrap_array(x)->count;
31160
0
        case JANET_BUFFER:
31161
0
            return janet_unwrap_buffer(x)->count;
31162
0
        case JANET_TUPLE:
31163
0
            return janet_tuple_length(janet_unwrap_tuple(x));
31164
0
        case JANET_STRUCT:
31165
0
            return janet_struct_length(janet_unwrap_struct(x));
31166
0
        case JANET_TABLE:
31167
0
            return janet_unwrap_table(x)->count;
31168
0
        case JANET_ABSTRACT: {
31169
0
            void *abst = janet_unwrap_abstract(x);
31170
0
            const JanetAbstractType *type = janet_abstract_type(abst);
31171
0
            if (type->length != NULL) {
31172
0
                size_t len = type->length(abst, janet_abstract_size(abst));
31173
0
                if (len > INT32_MAX) {
31174
0
                    janet_panicf("invalid integer length %u", len);
31175
0
                }
31176
0
                return (int32_t)(len);
31177
0
            }
31178
0
            Janet argv[1] = { x };
31179
0
            Janet len = janet_mcall("length", 1, argv);
31180
0
            if (!janet_checkint(len))
31181
0
                janet_panicf("invalid integer length %v", len);
31182
0
            return janet_unwrap_integer(len);
31183
0
        }
31184
0
    }
31185
0
}
31186
31187
0
Janet janet_lengthv(Janet x) {
31188
0
    switch (janet_type(x)) {
31189
0
        default:
31190
0
            janet_panicf("expected %T, got %v", JANET_TFLAG_LENGTHABLE, x);
31191
0
        case JANET_STRING:
31192
0
        case JANET_SYMBOL:
31193
0
        case JANET_KEYWORD:
31194
0
            return janet_wrap_integer(janet_string_length(janet_unwrap_string(x)));
31195
0
        case JANET_ARRAY:
31196
0
            return janet_wrap_integer(janet_unwrap_array(x)->count);
31197
0
        case JANET_BUFFER:
31198
0
            return janet_wrap_integer(janet_unwrap_buffer(x)->count);
31199
0
        case JANET_TUPLE:
31200
0
            return janet_wrap_integer(janet_tuple_length(janet_unwrap_tuple(x)));
31201
0
        case JANET_STRUCT:
31202
0
            return janet_wrap_integer(janet_struct_length(janet_unwrap_struct(x)));
31203
0
        case JANET_TABLE:
31204
0
            return janet_wrap_integer(janet_unwrap_table(x)->count);
31205
0
        case JANET_ABSTRACT: {
31206
0
            void *abst = janet_unwrap_abstract(x);
31207
0
            const JanetAbstractType *type = janet_abstract_type(abst);
31208
0
            if (type->length != NULL) {
31209
0
                size_t len = type->length(abst, janet_abstract_size(abst));
31210
0
                if ((uint64_t) len <= (uint64_t) JANET_INTMAX_INT64) {
31211
0
                    return janet_wrap_number((double) len);
31212
0
                } else {
31213
0
                    janet_panicf("integer length %u too large", len);
31214
0
                }
31215
0
            }
31216
0
            Janet argv[1] = { x };
31217
0
            return janet_mcall("length", 1, argv);
31218
0
        }
31219
0
    }
31220
0
}
31221
31222
0
void janet_putindex(Janet ds, int32_t index, Janet value) {
31223
0
    switch (janet_type(ds)) {
31224
0
        default:
31225
0
            janet_panicf("expected %T, got %v",
31226
0
                         JANET_TFLAG_ARRAY | JANET_TFLAG_BUFFER | JANET_TFLAG_TABLE, ds);
31227
0
        case JANET_ARRAY: {
31228
0
            JanetArray *array = janet_unwrap_array(ds);
31229
0
            if (index >= array->count) {
31230
0
                janet_array_ensure(array, index + 1, 2);
31231
0
                array->count = index + 1;
31232
0
            }
31233
0
            array->data[index] = value;
31234
0
            break;
31235
0
        }
31236
0
        case JANET_BUFFER: {
31237
0
            JanetBuffer *buffer = janet_unwrap_buffer(ds);
31238
0
            if (!janet_checkint(value))
31239
0
                janet_panicf("can only put integers in buffers, got %v", value);
31240
0
            if (index >= buffer->count) {
31241
0
                janet_buffer_ensure(buffer, index + 1, 2);
31242
0
                buffer->count = index + 1;
31243
0
            }
31244
0
            buffer->data[index] = (uint8_t)(janet_unwrap_integer(value) & 0xFF);
31245
0
            break;
31246
0
        }
31247
0
        case JANET_TABLE: {
31248
0
            JanetTable *table = janet_unwrap_table(ds);
31249
0
            janet_table_put(table, janet_wrap_integer(index), value);
31250
0
            break;
31251
0
        }
31252
0
        case JANET_ABSTRACT: {
31253
0
            JanetAbstractType *type = (JanetAbstractType *)janet_abstract_type(janet_unwrap_abstract(ds));
31254
0
            if (type->put) {
31255
0
                (type->put)(janet_unwrap_abstract(ds), janet_wrap_integer(index), value);
31256
0
            } else {
31257
0
                janet_panicf("no setter for %v ", ds);
31258
0
            }
31259
0
            break;
31260
0
        }
31261
0
    }
31262
0
}
31263
31264
0
void janet_put(Janet ds, Janet key, Janet value) {
31265
0
    JanetType type = janet_type(ds);
31266
0
    switch (type) {
31267
0
        default:
31268
0
            janet_panicf("expected %T, got %v",
31269
0
                         JANET_TFLAG_ARRAY | JANET_TFLAG_BUFFER | JANET_TFLAG_TABLE, ds);
31270
0
        case JANET_ARRAY: {
31271
0
            JanetArray *array = janet_unwrap_array(ds);
31272
0
            int32_t index = getter_checkint(type, key, INT32_MAX - 1);
31273
0
            if (index >= array->count) {
31274
0
                janet_array_setcount(array, index + 1);
31275
0
            }
31276
0
            array->data[index] = value;
31277
0
            break;
31278
0
        }
31279
0
        case JANET_BUFFER: {
31280
0
            JanetBuffer *buffer = janet_unwrap_buffer(ds);
31281
0
            int32_t index = getter_checkint(type, key, INT32_MAX - 1);
31282
0
            if (!janet_checkint(value))
31283
0
                janet_panicf("can only put integers in buffers, got %v", value);
31284
0
            if (index >= buffer->count) {
31285
0
                janet_buffer_setcount(buffer, index + 1);
31286
0
            }
31287
0
            buffer->data[index] = (uint8_t)(janet_unwrap_integer(value) & 0xFF);
31288
0
            break;
31289
0
        }
31290
0
        case JANET_TABLE:
31291
0
            janet_table_put(janet_unwrap_table(ds), key, value);
31292
0
            break;
31293
0
        case JANET_ABSTRACT: {
31294
0
            JanetAbstractType *type = (JanetAbstractType *)janet_abstract_type(janet_unwrap_abstract(ds));
31295
0
            if (type->put) {
31296
0
                (type->put)(janet_unwrap_abstract(ds), key, value);
31297
0
            } else {
31298
0
                janet_panicf("no setter for %v ", ds);
31299
0
            }
31300
0
            break;
31301
0
        }
31302
0
    }
31303
0
}
31304
31305
31306
/* src/core/vector.c */
31307
#line 0 "src/core/vector.c"
31308
31309
/*
31310
* Copyright (c) 2023 Calvin Rose
31311
*
31312
* Permission is hereby granted, free of charge, to any person obtaining a copy
31313
* of this software and associated documentation files (the "Software"), to
31314
* deal in the Software without restriction, including without limitation the
31315
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
31316
* sell copies of the Software, and to permit persons to whom the Software is
31317
* furnished to do so, subject to the following conditions:
31318
*
31319
* The above copyright notice and this permission notice shall be included in
31320
* all copies or substantial portions of the Software.
31321
*
31322
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
31323
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
31324
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
31325
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
31326
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
31327
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
31328
* IN THE SOFTWARE.
31329
*/
31330
31331
#ifndef JANET_AMALG
31332
#include "features.h"
31333
#include "vector.h"
31334
#include "util.h"
31335
#endif
31336
31337
/* Grow the buffer dynamically. Used for push operations. */
31338
0
void *janet_v_grow(void *v, int32_t increment, int32_t itemsize) {
31339
0
    int32_t dbl_cur = (NULL != v) ? 2 * janet_v__cap(v) : 0;
31340
0
    int32_t min_needed = janet_v_count(v) + increment;
31341
0
    int32_t m = dbl_cur > min_needed ? dbl_cur : min_needed;
31342
0
    size_t newsize = ((size_t) itemsize) * m + sizeof(int32_t) * 2;
31343
0
    int32_t *p = (int32_t *) janet_srealloc(v ? janet_v__raw(v) : 0, newsize);
31344
0
    if (!v) p[1] = 0;
31345
0
    p[0] = m;
31346
0
    return p + 2;
31347
0
}
31348
31349
/* Convert a buffer to normal allocated memory (forget capacity) */
31350
0
void *janet_v_flattenmem(void *v, int32_t itemsize) {
31351
0
    char *p;
31352
0
    if (NULL == v) return NULL;
31353
0
    size_t size = (size_t) itemsize * janet_v__cnt(v);
31354
0
    p = janet_malloc(size);
31355
0
    if (NULL != p) {
31356
0
        safe_memcpy(p, v, size);
31357
0
        return p;
31358
0
    } else {
31359
0
        JANET_OUT_OF_MEMORY;
31360
0
    }
31361
0
}
31362
31363
31364
31365
/* src/core/vm.c */
31366
#line 0 "src/core/vm.c"
31367
31368
/*
31369
* Copyright (c) 2023 Calvin Rose
31370
*
31371
* Permission is hereby granted, free of charge, to any person obtaining a copy
31372
* of this software and associated documentation files (the "Software"), to
31373
* deal in the Software without restriction, including without limitation the
31374
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
31375
* sell copies of the Software, and to permit persons to whom the Software is
31376
* furnished to do so, subject to the following conditions:
31377
*
31378
* The above copyright notice and this permission notice shall be included in
31379
* all copies or substantial portions of the Software.
31380
*
31381
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
31382
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
31383
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
31384
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
31385
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
31386
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
31387
* IN THE SOFTWARE.
31388
*/
31389
31390
#ifndef JANET_AMALG
31391
#include "features.h"
31392
#include <janet.h>
31393
#include "state.h"
31394
#include "fiber.h"
31395
#include "gc.h"
31396
#include "symcache.h"
31397
#include "util.h"
31398
#endif
31399
31400
#include <math.h>
31401
31402
/* Virtual registers
31403
 *
31404
 * One instruction word
31405
 * CC | BB | AA | OP
31406
 * DD | DD | DD | OP
31407
 * EE | EE | AA | OP
31408
 */
31409
0
#define A ((*pc >> 8)  & 0xFF)
31410
0
#define B ((*pc >> 16) & 0xFF)
31411
0
#define C (*pc >> 24)
31412
0
#define D (*pc >> 8)
31413
0
#define E (*pc >> 16)
31414
31415
/* Signed interpretations of registers */
31416
0
#define CS (*((int32_t *)pc) >> 24)
31417
0
#define DS (*((int32_t *)pc) >> 8)
31418
0
#define ES (*((int32_t *)pc) >> 16)
31419
31420
/* How we dispatch instructions. By default, we use
31421
 * a switch inside an infinite loop. For GCC/clang, we use
31422
 * computed gotos. */
31423
#if defined(__GNUC__) && !defined(__EMSCRIPTEN__)
31424
#define JANET_USE_COMPUTED_GOTOS
31425
#endif
31426
31427
#ifdef JANET_USE_COMPUTED_GOTOS
31428
0
#define VM_START() { goto *op_lookup[first_opcode];
31429
0
#define VM_END() }
31430
0
#define VM_OP(op) label_##op :
31431
0
#define VM_DEFAULT() label_unknown_op:
31432
0
#define vm_next() goto *op_lookup[*pc & 0xFF]
31433
0
#define opcode (*pc & 0xFF)
31434
#else
31435
#define VM_START() uint8_t opcode = first_opcode; for (;;) {switch(opcode) {
31436
#define VM_END() }}
31437
#define VM_OP(op) case op :
31438
#define VM_DEFAULT() default:
31439
#define vm_next() opcode = *pc & 0xFF; continue
31440
#endif
31441
31442
/* Commit and restore VM state before possible longjmp */
31443
0
#define vm_commit() do { janet_stack_frame(stack)->pc = pc; } while (0)
31444
0
#define vm_restore() do { \
31445
0
    stack = fiber->data + fiber->frame; \
31446
0
    pc = janet_stack_frame(stack)->pc; \
31447
0
    func = janet_stack_frame(stack)->func; \
31448
0
} while (0)
31449
0
#define vm_return(sig, val) do { \
31450
0
    janet_vm.return_reg[0] = (val); \
31451
0
    vm_commit(); \
31452
0
    return (sig); \
31453
0
} while (0)
31454
0
#define vm_return_no_restore(sig, val) do { \
31455
0
    janet_vm.return_reg[0] = (val); \
31456
0
    return (sig); \
31457
0
} while (0)
31458
31459
/* Next instruction variations */
31460
0
#define maybe_collect() do {\
31461
0
    if (janet_vm.next_collection >= janet_vm.gc_interval) janet_collect(); } while (0)
31462
0
#define vm_checkgc_next() maybe_collect(); vm_next()
31463
0
#define vm_pcnext() pc++; vm_next()
31464
0
#define vm_checkgc_pcnext() maybe_collect(); vm_pcnext()
31465
31466
/* Handle certain errors in main vm loop */
31467
0
#define vm_throw(e) do { vm_commit(); janet_panic(e); } while (0)
31468
0
#define vm_assert(cond, e) do {if (!(cond)) vm_throw((e)); } while (0)
31469
0
#define vm_assert_type(X, T) do { \
31470
0
    if (!(janet_checktype((X), (T)))) { \
31471
0
        vm_commit(); \
31472
0
        janet_panicf("expected %T, got %v", (1 << (T)), (X)); \
31473
0
    } \
31474
0
} while (0)
31475
0
#define vm_assert_types(X, TS) do { \
31476
0
    if (!(janet_checktypes((X), (TS)))) { \
31477
0
        vm_commit(); \
31478
0
        janet_panicf("expected %T, got %v", (TS), (X)); \
31479
0
    } \
31480
0
} while (0)
31481
#ifdef JANET_NO_INTERPRETER_INTERRUPT
31482
#define vm_maybe_auto_suspend(COND)
31483
#else
31484
0
#define vm_maybe_auto_suspend(COND) do { \
31485
0
    if ((COND) && janet_vm.auto_suspend) { \
31486
0
        janet_vm.auto_suspend = 0; \
31487
0
        fiber->flags |= (JANET_FIBER_RESUME_NO_USEVAL | JANET_FIBER_RESUME_NO_SKIP); \
31488
0
        vm_return(JANET_SIGNAL_INTERRUPT, janet_wrap_nil()); \
31489
0
    } \
31490
0
} while (0)
31491
#endif
31492
31493
/* Templates for certain patterns in opcodes */
31494
#define vm_binop_immediate(op)\
31495
0
    {\
31496
0
        Janet op1 = stack[B];\
31497
0
        if (!janet_checktype(op1, JANET_NUMBER)) {\
31498
0
            vm_commit();\
31499
0
            Janet _argv[2] = { op1, janet_wrap_number(CS) };\
31500
0
            stack[A] = janet_mcall(#op, 2, _argv);\
31501
0
            vm_checkgc_pcnext();\
31502
0
        } else {\
31503
0
            double x1 = janet_unwrap_number(op1);\
31504
0
            stack[A] = janet_wrap_number(x1 op CS);\
31505
0
            vm_pcnext();\
31506
0
        }\
31507
0
    }
31508
#define _vm_bitop_immediate(op, type1)\
31509
0
    {\
31510
0
        Janet op1 = stack[B];\
31511
0
        if (!janet_checktype(op1, JANET_NUMBER)) {\
31512
0
            vm_commit();\
31513
0
            Janet _argv[2] = { op1, janet_wrap_number(CS) };\
31514
0
            stack[A] = janet_mcall(#op, 2, _argv);\
31515
0
            vm_checkgc_pcnext();\
31516
0
        } else {\
31517
0
            type1 x1 = (type1) janet_unwrap_integer(op1);\
31518
0
            stack[A] = janet_wrap_integer(x1 op CS);\
31519
0
            vm_pcnext();\
31520
0
        }\
31521
0
    }
31522
0
#define vm_bitop_immediate(op) _vm_bitop_immediate(op, int32_t);
31523
0
#define vm_bitopu_immediate(op) _vm_bitop_immediate(op, uint32_t);
31524
#define _vm_binop(op, wrap)\
31525
0
    {\
31526
0
        Janet op1 = stack[B];\
31527
0
        Janet op2 = stack[C];\
31528
0
        if (janet_checktype(op1, JANET_NUMBER) && janet_checktype(op2, JANET_NUMBER)) {\
31529
0
            double x1 = janet_unwrap_number(op1);\
31530
0
            double x2 = janet_unwrap_number(op2);\
31531
0
            stack[A] = wrap(x1 op x2);\
31532
0
            vm_pcnext();\
31533
0
        } else {\
31534
0
            vm_commit();\
31535
0
            stack[A] = janet_binop_call(#op, "r" #op, op1, op2);\
31536
0
            vm_checkgc_pcnext();\
31537
0
        }\
31538
0
    }
31539
0
#define vm_binop(op) _vm_binop(op, janet_wrap_number)
31540
#define _vm_bitop(op, type1)\
31541
0
    {\
31542
0
        Janet op1 = stack[B];\
31543
0
        Janet op2 = stack[C];\
31544
0
        if (janet_checktype(op1, JANET_NUMBER) && janet_checktype(op2, JANET_NUMBER)) {\
31545
0
            type1 x1 = (type1) janet_unwrap_integer(op1);\
31546
0
            int32_t x2 = janet_unwrap_integer(op2);\
31547
0
            stack[A] = janet_wrap_integer(x1 op x2);\
31548
0
            vm_pcnext();\
31549
0
        } else {\
31550
0
            vm_commit();\
31551
0
            stack[A] = janet_binop_call(#op, "r" #op, op1, op2);\
31552
0
            vm_checkgc_pcnext();\
31553
0
        }\
31554
0
    }
31555
0
#define vm_bitop(op) _vm_bitop(op, int32_t)
31556
0
#define vm_bitopu(op) _vm_bitop(op, uint32_t)
31557
#define vm_compop(op) \
31558
0
    {\
31559
0
        Janet op1 = stack[B];\
31560
0
        Janet op2 = stack[C];\
31561
0
        if (janet_checktype(op1, JANET_NUMBER) && janet_checktype(op2, JANET_NUMBER)) {\
31562
0
            double x1 = janet_unwrap_number(op1);\
31563
0
            double x2 = janet_unwrap_number(op2);\
31564
0
            stack[A] = janet_wrap_boolean(x1 op x2);\
31565
0
            vm_pcnext();\
31566
0
        } else {\
31567
0
            vm_commit();\
31568
0
            stack[A] = janet_wrap_boolean(janet_compare(op1, op2) op 0);\
31569
0
            vm_checkgc_pcnext();\
31570
0
        }\
31571
0
    }
31572
#define vm_compop_imm(op) \
31573
0
    {\
31574
0
        Janet op1 = stack[B];\
31575
0
        if (janet_checktype(op1, JANET_NUMBER)) {\
31576
0
            double x1 = janet_unwrap_number(op1);\
31577
0
            double x2 = (double) CS; \
31578
0
            stack[A] = janet_wrap_boolean(x1 op x2);\
31579
0
            vm_pcnext();\
31580
0
        } else {\
31581
0
            vm_commit();\
31582
0
            stack[A] = janet_wrap_boolean(janet_compare(op1, janet_wrap_integer(CS)) op 0);\
31583
0
            vm_checkgc_pcnext();\
31584
0
        }\
31585
0
    }
31586
31587
/* Trace a function call */
31588
0
static void vm_do_trace(JanetFunction *func, int32_t argc, const Janet *argv) {
31589
0
    if (func->def->name) {
31590
0
        janet_eprintf("trace (%S", func->def->name);
31591
0
    } else {
31592
0
        janet_eprintf("trace (%p", janet_wrap_function(func));
31593
0
    }
31594
0
    for (int32_t i = 0; i < argc; i++) {
31595
0
        janet_eprintf(" %p", argv[i]);
31596
0
    }
31597
0
    janet_eprintf(")\n");
31598
0
}
31599
31600
/* Invoke a method once we have looked it up */
31601
0
static Janet janet_method_invoke(Janet method, int32_t argc, Janet *argv) {
31602
0
    switch (janet_type(method)) {
31603
0
        case JANET_CFUNCTION:
31604
0
            return (janet_unwrap_cfunction(method))(argc, argv);
31605
0
        case JANET_FUNCTION: {
31606
0
            JanetFunction *fun = janet_unwrap_function(method);
31607
0
            return janet_call(fun, argc, argv);
31608
0
        }
31609
0
        case JANET_ABSTRACT: {
31610
0
            JanetAbstract abst = janet_unwrap_abstract(method);
31611
0
            const JanetAbstractType *at = janet_abstract_type(abst);
31612
0
            if (NULL != at->call) {
31613
0
                return at->call(abst, argc, argv);
31614
0
            }
31615
0
        }
31616
        /* fallthrough */
31617
0
        case JANET_STRING:
31618
0
        case JANET_BUFFER:
31619
0
        case JANET_TABLE:
31620
0
        case JANET_STRUCT:
31621
0
        case JANET_ARRAY:
31622
0
        case JANET_TUPLE: {
31623
0
            if (argc != 1) {
31624
0
                janet_panicf("%v called with %d arguments, possibly expected 1", method, argc);
31625
0
            }
31626
0
            return janet_in(method, argv[0]);
31627
0
        }
31628
0
        default: {
31629
0
            if (argc != 1) {
31630
0
                janet_panicf("%v called with %d arguments, possibly expected 1", method, argc);
31631
0
            }
31632
0
            return janet_in(argv[0], method);
31633
0
        }
31634
0
    }
31635
0
}
31636
31637
/* Call a non function type from a JOP_CALL or JOP_TAILCALL instruction.
31638
 * Assumes that the arguments are on the fiber stack. */
31639
0
static Janet call_nonfn(JanetFiber *fiber, Janet callee) {
31640
0
    int32_t argc = fiber->stacktop - fiber->stackstart;
31641
0
    fiber->stacktop = fiber->stackstart;
31642
0
    return janet_method_invoke(callee, argc, fiber->data + fiber->stacktop);
31643
0
}
31644
31645
/* Method lookup could potentially handle tables specially... */
31646
0
static Janet method_to_fun(Janet method, Janet obj) {
31647
0
    return janet_get(obj, method);
31648
0
}
31649
31650
/* Get a callable from a keyword method name and ensure that it is valid. */
31651
0
static Janet resolve_method(Janet name, JanetFiber *fiber) {
31652
0
    int32_t argc = fiber->stacktop - fiber->stackstart;
31653
0
    if (argc < 1) janet_panicf("method call (%v) takes at least 1 argument, got 0", name);
31654
0
    Janet callee = method_to_fun(name, fiber->data[fiber->stackstart]);
31655
0
    if (janet_checktype(callee, JANET_NIL))
31656
0
        janet_panicf("unknown method %v invoked on %v", name, fiber->data[fiber->stackstart]);
31657
0
    return callee;
31658
0
}
31659
31660
/* Lookup method on value x */
31661
0
static Janet janet_method_lookup(Janet x, const char *name) {
31662
0
    return method_to_fun(janet_ckeywordv(name), x);
31663
0
}
31664
31665
/* Call a method first on the righthand side, and then on the left hand side with a prefix */
31666
0
static Janet janet_binop_call(const char *lmethod, const char *rmethod, Janet lhs, Janet rhs) {
31667
0
    Janet lm = janet_method_lookup(lhs, lmethod);
31668
0
    if (janet_checktype(lm, JANET_NIL)) {
31669
        /* Invert order for rmethod */
31670
0
        Janet lr = janet_method_lookup(rhs, rmethod);
31671
0
        Janet argv[2] = { rhs, lhs };
31672
0
        if (janet_checktype(lr, JANET_NIL)) {
31673
0
            janet_panicf("could not find method :%s for %v, or :%s for %v",
31674
0
                         lmethod, lhs,
31675
0
                         rmethod, rhs);
31676
0
        }
31677
0
        return janet_method_invoke(lr, 2, argv);
31678
0
    } else {
31679
0
        Janet argv[2] = { lhs, rhs };
31680
0
        return janet_method_invoke(lm, 2, argv);
31681
0
    }
31682
0
}
31683
31684
/* Forward declaration */
31685
static JanetSignal janet_check_can_resume(JanetFiber *fiber, Janet *out, int is_cancel);
31686
static JanetSignal janet_continue_no_check(JanetFiber *fiber, Janet in, Janet *out);
31687
31688
/* Interpreter main loop */
31689
0
static JanetSignal run_vm(JanetFiber *fiber, Janet in) {
31690
31691
    /* opcode -> label lookup if using clang/GCC */
31692
0
#ifdef JANET_USE_COMPUTED_GOTOS
31693
0
    static void *op_lookup[255] = {
31694
0
        &&label_JOP_NOOP,
31695
0
        &&label_JOP_ERROR,
31696
0
        &&label_JOP_TYPECHECK,
31697
0
        &&label_JOP_RETURN,
31698
0
        &&label_JOP_RETURN_NIL,
31699
0
        &&label_JOP_ADD_IMMEDIATE,
31700
0
        &&label_JOP_ADD,
31701
0
        &&label_JOP_SUBTRACT,
31702
0
        &&label_JOP_MULTIPLY_IMMEDIATE,
31703
0
        &&label_JOP_MULTIPLY,
31704
0
        &&label_JOP_DIVIDE_IMMEDIATE,
31705
0
        &&label_JOP_DIVIDE,
31706
0
        &&label_JOP_MODULO,
31707
0
        &&label_JOP_REMAINDER,
31708
0
        &&label_JOP_BAND,
31709
0
        &&label_JOP_BOR,
31710
0
        &&label_JOP_BXOR,
31711
0
        &&label_JOP_BNOT,
31712
0
        &&label_JOP_SHIFT_LEFT,
31713
0
        &&label_JOP_SHIFT_LEFT_IMMEDIATE,
31714
0
        &&label_JOP_SHIFT_RIGHT,
31715
0
        &&label_JOP_SHIFT_RIGHT_IMMEDIATE,
31716
0
        &&label_JOP_SHIFT_RIGHT_UNSIGNED,
31717
0
        &&label_JOP_SHIFT_RIGHT_UNSIGNED_IMMEDIATE,
31718
0
        &&label_JOP_MOVE_FAR,
31719
0
        &&label_JOP_MOVE_NEAR,
31720
0
        &&label_JOP_JUMP,
31721
0
        &&label_JOP_JUMP_IF,
31722
0
        &&label_JOP_JUMP_IF_NOT,
31723
0
        &&label_JOP_JUMP_IF_NIL,
31724
0
        &&label_JOP_JUMP_IF_NOT_NIL,
31725
0
        &&label_JOP_GREATER_THAN,
31726
0
        &&label_JOP_GREATER_THAN_IMMEDIATE,
31727
0
        &&label_JOP_LESS_THAN,
31728
0
        &&label_JOP_LESS_THAN_IMMEDIATE,
31729
0
        &&label_JOP_EQUALS,
31730
0
        &&label_JOP_EQUALS_IMMEDIATE,
31731
0
        &&label_JOP_COMPARE,
31732
0
        &&label_JOP_LOAD_NIL,
31733
0
        &&label_JOP_LOAD_TRUE,
31734
0
        &&label_JOP_LOAD_FALSE,
31735
0
        &&label_JOP_LOAD_INTEGER,
31736
0
        &&label_JOP_LOAD_CONSTANT,
31737
0
        &&label_JOP_LOAD_UPVALUE,
31738
0
        &&label_JOP_LOAD_SELF,
31739
0
        &&label_JOP_SET_UPVALUE,
31740
0
        &&label_JOP_CLOSURE,
31741
0
        &&label_JOP_PUSH,
31742
0
        &&label_JOP_PUSH_2,
31743
0
        &&label_JOP_PUSH_3,
31744
0
        &&label_JOP_PUSH_ARRAY,
31745
0
        &&label_JOP_CALL,
31746
0
        &&label_JOP_TAILCALL,
31747
0
        &&label_JOP_RESUME,
31748
0
        &&label_JOP_SIGNAL,
31749
0
        &&label_JOP_PROPAGATE,
31750
0
        &&label_JOP_IN,
31751
0
        &&label_JOP_GET,
31752
0
        &&label_JOP_PUT,
31753
0
        &&label_JOP_GET_INDEX,
31754
0
        &&label_JOP_PUT_INDEX,
31755
0
        &&label_JOP_LENGTH,
31756
0
        &&label_JOP_MAKE_ARRAY,
31757
0
        &&label_JOP_MAKE_BUFFER,
31758
0
        &&label_JOP_MAKE_STRING,
31759
0
        &&label_JOP_MAKE_STRUCT,
31760
0
        &&label_JOP_MAKE_TABLE,
31761
0
        &&label_JOP_MAKE_TUPLE,
31762
0
        &&label_JOP_MAKE_BRACKET_TUPLE,
31763
0
        &&label_JOP_GREATER_THAN_EQUAL,
31764
0
        &&label_JOP_LESS_THAN_EQUAL,
31765
0
        &&label_JOP_NEXT,
31766
0
        &&label_JOP_NOT_EQUALS,
31767
0
        &&label_JOP_NOT_EQUALS_IMMEDIATE,
31768
0
        &&label_JOP_CANCEL,
31769
0
        &&label_unknown_op,
31770
0
        &&label_unknown_op,
31771
0
        &&label_unknown_op,
31772
0
        &&label_unknown_op,
31773
0
        &&label_unknown_op,
31774
0
        &&label_unknown_op,
31775
0
        &&label_unknown_op,
31776
0
        &&label_unknown_op,
31777
0
        &&label_unknown_op,
31778
0
        &&label_unknown_op,
31779
0
        &&label_unknown_op,
31780
0
        &&label_unknown_op,
31781
0
        &&label_unknown_op,
31782
0
        &&label_unknown_op,
31783
0
        &&label_unknown_op,
31784
0
        &&label_unknown_op,
31785
0
        &&label_unknown_op,
31786
0
        &&label_unknown_op,
31787
0
        &&label_unknown_op,
31788
0
        &&label_unknown_op,
31789
0
        &&label_unknown_op,
31790
0
        &&label_unknown_op,
31791
0
        &&label_unknown_op,
31792
0
        &&label_unknown_op,
31793
0
        &&label_unknown_op,
31794
0
        &&label_unknown_op,
31795
0
        &&label_unknown_op,
31796
0
        &&label_unknown_op,
31797
0
        &&label_unknown_op,
31798
0
        &&label_unknown_op,
31799
0
        &&label_unknown_op,
31800
0
        &&label_unknown_op,
31801
0
        &&label_unknown_op,
31802
0
        &&label_unknown_op,
31803
0
        &&label_unknown_op,
31804
0
        &&label_unknown_op,
31805
0
        &&label_unknown_op,
31806
0
        &&label_unknown_op,
31807
0
        &&label_unknown_op,
31808
0
        &&label_unknown_op,
31809
0
        &&label_unknown_op,
31810
0
        &&label_unknown_op,
31811
0
        &&label_unknown_op,
31812
0
        &&label_unknown_op,
31813
0
        &&label_unknown_op,
31814
0
        &&label_unknown_op,
31815
0
        &&label_unknown_op,
31816
0
        &&label_unknown_op,
31817
0
        &&label_unknown_op,
31818
0
        &&label_unknown_op,
31819
0
        &&label_unknown_op,
31820
0
        &&label_unknown_op,
31821
0
        &&label_unknown_op,
31822
0
        &&label_unknown_op,
31823
0
        &&label_unknown_op,
31824
0
        &&label_unknown_op,
31825
0
        &&label_unknown_op,
31826
0
        &&label_unknown_op,
31827
0
        &&label_unknown_op,
31828
0
        &&label_unknown_op,
31829
0
        &&label_unknown_op,
31830
0
        &&label_unknown_op,
31831
0
        &&label_unknown_op,
31832
0
        &&label_unknown_op,
31833
0
        &&label_unknown_op,
31834
0
        &&label_unknown_op,
31835
0
        &&label_unknown_op,
31836
0
        &&label_unknown_op,
31837
0
        &&label_unknown_op,
31838
0
        &&label_unknown_op,
31839
0
        &&label_unknown_op,
31840
0
        &&label_unknown_op,
31841
0
        &&label_unknown_op,
31842
0
        &&label_unknown_op,
31843
0
        &&label_unknown_op,
31844
0
        &&label_unknown_op,
31845
0
        &&label_unknown_op,
31846
0
        &&label_unknown_op,
31847
0
        &&label_unknown_op,
31848
0
        &&label_unknown_op,
31849
0
        &&label_unknown_op,
31850
0
        &&label_unknown_op,
31851
0
        &&label_unknown_op,
31852
0
        &&label_unknown_op,
31853
0
        &&label_unknown_op,
31854
0
        &&label_unknown_op,
31855
0
        &&label_unknown_op,
31856
0
        &&label_unknown_op,
31857
0
        &&label_unknown_op,
31858
0
        &&label_unknown_op,
31859
0
        &&label_unknown_op,
31860
0
        &&label_unknown_op,
31861
0
        &&label_unknown_op,
31862
0
        &&label_unknown_op,
31863
0
        &&label_unknown_op,
31864
0
        &&label_unknown_op,
31865
0
        &&label_unknown_op,
31866
0
        &&label_unknown_op,
31867
0
        &&label_unknown_op,
31868
0
        &&label_unknown_op,
31869
0
        &&label_unknown_op,
31870
0
        &&label_unknown_op,
31871
0
        &&label_unknown_op,
31872
0
        &&label_unknown_op,
31873
0
        &&label_unknown_op,
31874
0
        &&label_unknown_op,
31875
0
        &&label_unknown_op,
31876
0
        &&label_unknown_op,
31877
0
        &&label_unknown_op,
31878
0
        &&label_unknown_op,
31879
0
        &&label_unknown_op,
31880
0
        &&label_unknown_op,
31881
0
        &&label_unknown_op,
31882
0
        &&label_unknown_op,
31883
0
        &&label_unknown_op,
31884
0
        &&label_unknown_op,
31885
0
        &&label_unknown_op,
31886
0
        &&label_unknown_op,
31887
0
        &&label_unknown_op,
31888
0
        &&label_unknown_op,
31889
0
        &&label_unknown_op,
31890
0
        &&label_unknown_op,
31891
0
        &&label_unknown_op,
31892
0
        &&label_unknown_op,
31893
0
        &&label_unknown_op,
31894
0
        &&label_unknown_op,
31895
0
        &&label_unknown_op,
31896
0
        &&label_unknown_op,
31897
0
        &&label_unknown_op,
31898
0
        &&label_unknown_op,
31899
0
        &&label_unknown_op,
31900
0
        &&label_unknown_op,
31901
0
        &&label_unknown_op,
31902
0
        &&label_unknown_op,
31903
0
        &&label_unknown_op,
31904
0
        &&label_unknown_op,
31905
0
        &&label_unknown_op,
31906
0
        &&label_unknown_op,
31907
0
        &&label_unknown_op,
31908
0
        &&label_unknown_op,
31909
0
        &&label_unknown_op,
31910
0
        &&label_unknown_op,
31911
0
        &&label_unknown_op,
31912
0
        &&label_unknown_op,
31913
0
        &&label_unknown_op,
31914
0
        &&label_unknown_op,
31915
0
        &&label_unknown_op,
31916
0
        &&label_unknown_op,
31917
0
        &&label_unknown_op,
31918
0
        &&label_unknown_op,
31919
0
        &&label_unknown_op,
31920
0
        &&label_unknown_op,
31921
0
        &&label_unknown_op,
31922
0
        &&label_unknown_op,
31923
0
        &&label_unknown_op,
31924
0
        &&label_unknown_op,
31925
0
        &&label_unknown_op,
31926
0
        &&label_unknown_op,
31927
0
        &&label_unknown_op,
31928
0
        &&label_unknown_op,
31929
0
        &&label_unknown_op,
31930
0
        &&label_unknown_op,
31931
0
        &&label_unknown_op,
31932
0
        &&label_unknown_op,
31933
0
        &&label_unknown_op,
31934
0
        &&label_unknown_op,
31935
0
        &&label_unknown_op,
31936
0
        &&label_unknown_op,
31937
0
        &&label_unknown_op,
31938
0
        &&label_unknown_op,
31939
0
        &&label_unknown_op,
31940
0
        &&label_unknown_op,
31941
0
        &&label_unknown_op,
31942
0
        &&label_unknown_op,
31943
0
        &&label_unknown_op,
31944
0
        &&label_unknown_op,
31945
0
        &&label_unknown_op,
31946
0
        &&label_unknown_op,
31947
0
        &&label_unknown_op,
31948
0
        &&label_unknown_op
31949
0
    };
31950
0
#endif
31951
31952
    /* Interpreter state */
31953
0
    register Janet *stack;
31954
0
    register uint32_t *pc;
31955
0
    register JanetFunction *func;
31956
31957
0
    if (fiber->flags & JANET_FIBER_RESUME_SIGNAL) {
31958
0
        JanetSignal sig = (fiber->gc.flags & JANET_FIBER_STATUS_MASK) >> JANET_FIBER_STATUS_OFFSET;
31959
0
        fiber->gc.flags &= ~JANET_FIBER_STATUS_MASK;
31960
0
        fiber->flags &= ~(JANET_FIBER_RESUME_SIGNAL | JANET_FIBER_FLAG_MASK);
31961
0
        janet_vm.return_reg[0] = in;
31962
0
        return sig;
31963
0
    }
31964
31965
0
    vm_restore();
31966
31967
0
    if (fiber->flags & JANET_FIBER_DID_LONGJUMP) {
31968
0
        if (janet_fiber_frame(fiber)->func == NULL) {
31969
            /* Inside a c function */
31970
0
            janet_fiber_popframe(fiber);
31971
0
            vm_restore();
31972
0
        }
31973
        /* Check if we were at a tail call instruction. If so, do implicit return */
31974
0
        if ((*pc & 0xFF) == JOP_TAILCALL) {
31975
            /* Tail call resume */
31976
0
            int entrance_frame = janet_stack_frame(stack)->flags & JANET_STACKFRAME_ENTRANCE;
31977
0
            janet_fiber_popframe(fiber);
31978
0
            if (entrance_frame) {
31979
0
                fiber->flags &= ~JANET_FIBER_FLAG_MASK;
31980
0
                vm_return(JANET_SIGNAL_OK, in);
31981
0
            }
31982
0
            vm_restore();
31983
0
        }
31984
0
    }
31985
31986
0
    if (!(fiber->flags & JANET_FIBER_RESUME_NO_USEVAL)) stack[A] = in;
31987
0
    if (!(fiber->flags & JANET_FIBER_RESUME_NO_SKIP)) pc++;
31988
31989
0
    uint8_t first_opcode = *pc & ((fiber->flags & JANET_FIBER_BREAKPOINT) ? 0x7F : 0xFF);
31990
31991
0
    fiber->flags &= ~JANET_FIBER_FLAG_MASK;
31992
31993
    /* Main interpreter loop. Semantically is a switch on
31994
     * (*pc & 0xFF) inside of an infinite loop. */
31995
0
    VM_START();
31996
31997
0
    VM_DEFAULT();
31998
0
    fiber->flags |= JANET_FIBER_BREAKPOINT | JANET_FIBER_RESUME_NO_USEVAL | JANET_FIBER_RESUME_NO_SKIP;
31999
0
    vm_return(JANET_SIGNAL_DEBUG, janet_wrap_nil());
32000
32001
0
    VM_OP(JOP_NOOP)
32002
0
    vm_pcnext();
32003
32004
0
    VM_OP(JOP_ERROR)
32005
0
    vm_return(JANET_SIGNAL_ERROR, stack[A]);
32006
32007
0
    VM_OP(JOP_TYPECHECK)
32008
0
    vm_assert_types(stack[A], E);
32009
0
    vm_pcnext();
32010
32011
0
    VM_OP(JOP_RETURN) {
32012
0
        Janet retval = stack[D];
32013
0
        int entrance_frame = janet_stack_frame(stack)->flags & JANET_STACKFRAME_ENTRANCE;
32014
0
        janet_fiber_popframe(fiber);
32015
0
        if (entrance_frame) vm_return_no_restore(JANET_SIGNAL_OK, retval);
32016
0
        vm_restore();
32017
0
        stack[A] = retval;
32018
0
        vm_checkgc_pcnext();
32019
0
    }
32020
32021
0
    VM_OP(JOP_RETURN_NIL) {
32022
0
        Janet retval = janet_wrap_nil();
32023
0
        int entrance_frame = janet_stack_frame(stack)->flags & JANET_STACKFRAME_ENTRANCE;
32024
0
        janet_fiber_popframe(fiber);
32025
0
        if (entrance_frame) vm_return_no_restore(JANET_SIGNAL_OK, retval);
32026
0
        vm_restore();
32027
0
        stack[A] = retval;
32028
0
        vm_checkgc_pcnext();
32029
0
    }
32030
32031
0
    VM_OP(JOP_ADD_IMMEDIATE)
32032
0
    vm_binop_immediate(+);
32033
32034
0
    VM_OP(JOP_ADD)
32035
0
    vm_binop(+);
32036
32037
0
    VM_OP(JOP_SUBTRACT)
32038
0
    vm_binop(-);
32039
32040
0
    VM_OP(JOP_MULTIPLY_IMMEDIATE)
32041
0
    vm_binop_immediate(*);
32042
32043
0
    VM_OP(JOP_MULTIPLY)
32044
0
    vm_binop(*);
32045
32046
0
    VM_OP(JOP_DIVIDE_IMMEDIATE)
32047
0
    vm_binop_immediate( /);
32048
32049
0
    VM_OP(JOP_DIVIDE)
32050
0
    vm_binop( /);
32051
32052
0
    VM_OP(JOP_MODULO) {
32053
0
        Janet op1 = stack[B];
32054
0
        Janet op2 = stack[C];
32055
0
        if (janet_checktype(op1, JANET_NUMBER) && janet_checktype(op2, JANET_NUMBER)) {
32056
0
            double x1 = janet_unwrap_number(op1);
32057
0
            double x2 = janet_unwrap_number(op2);
32058
0
            double intres = x2 * floor(x1 / x2);
32059
0
            stack[A] = janet_wrap_number(x1 - intres);
32060
0
            vm_pcnext();
32061
0
        } else {
32062
0
            vm_commit();
32063
0
            stack[A] = janet_binop_call("mod", "rmod", op1, op2);
32064
0
            vm_checkgc_pcnext();
32065
0
        }
32066
0
    }
32067
32068
0
    VM_OP(JOP_REMAINDER) {
32069
0
        Janet op1 = stack[B];
32070
0
        Janet op2 = stack[C];
32071
0
        if (janet_checktype(op1, JANET_NUMBER) && janet_checktype(op2, JANET_NUMBER)) {
32072
0
            double x1 = janet_unwrap_number(op1);
32073
0
            double x2 = janet_unwrap_number(op2);
32074
0
            stack[A] = janet_wrap_number(fmod(x1, x2));
32075
0
            vm_pcnext();
32076
0
        } else {
32077
0
            vm_commit();
32078
0
            stack[A] = janet_binop_call("%", "r%", op1, op2);
32079
0
            vm_checkgc_pcnext();
32080
0
        }
32081
0
    }
32082
32083
0
    VM_OP(JOP_BAND)
32084
0
    vm_bitop(&);
32085
32086
0
    VM_OP(JOP_BOR)
32087
0
    vm_bitop( |);
32088
32089
0
    VM_OP(JOP_BXOR)
32090
0
    vm_bitop(^);
32091
32092
0
    VM_OP(JOP_BNOT) {
32093
0
        Janet op = stack[E];
32094
0
        vm_assert_type(op, JANET_NUMBER);
32095
0
        stack[A] = janet_wrap_integer(~janet_unwrap_integer(op));
32096
0
        vm_pcnext();
32097
0
    }
32098
32099
0
    VM_OP(JOP_SHIFT_RIGHT_UNSIGNED)
32100
0
    vm_bitopu( >>);
32101
32102
0
    VM_OP(JOP_SHIFT_RIGHT_UNSIGNED_IMMEDIATE)
32103
0
    vm_bitopu_immediate( >>);
32104
32105
0
    VM_OP(JOP_SHIFT_RIGHT)
32106
0
    vm_bitop( >>);
32107
32108
0
    VM_OP(JOP_SHIFT_RIGHT_IMMEDIATE)
32109
0
    vm_bitop_immediate( >>);
32110
32111
0
    VM_OP(JOP_SHIFT_LEFT)
32112
0
    vm_bitop( <<);
32113
32114
0
    VM_OP(JOP_SHIFT_LEFT_IMMEDIATE)
32115
0
    vm_bitop_immediate( <<);
32116
32117
0
    VM_OP(JOP_MOVE_NEAR)
32118
0
    stack[A] = stack[E];
32119
0
    vm_pcnext();
32120
32121
0
    VM_OP(JOP_MOVE_FAR)
32122
0
    stack[E] = stack[A];
32123
0
    vm_pcnext();
32124
32125
0
    VM_OP(JOP_JUMP)
32126
0
    pc += DS;
32127
0
    vm_maybe_auto_suspend(DS < 0);
32128
0
    vm_next();
32129
32130
0
    VM_OP(JOP_JUMP_IF)
32131
0
    if (janet_truthy(stack[A])) {
32132
0
        pc += ES;
32133
0
        vm_maybe_auto_suspend(ES < 0);
32134
0
    } else {
32135
0
        pc++;
32136
0
    }
32137
0
    vm_next();
32138
32139
0
    VM_OP(JOP_JUMP_IF_NOT)
32140
0
    if (janet_truthy(stack[A])) {
32141
0
        pc++;
32142
0
    } else {
32143
0
        pc += ES;
32144
0
        vm_maybe_auto_suspend(ES < 0);
32145
0
    }
32146
0
    vm_next();
32147
32148
0
    VM_OP(JOP_JUMP_IF_NIL)
32149
0
    if (janet_checktype(stack[A], JANET_NIL)) {
32150
0
        pc += ES;
32151
0
        vm_maybe_auto_suspend(ES < 0);
32152
0
    } else {
32153
0
        pc++;
32154
0
    }
32155
0
    vm_next();
32156
32157
0
    VM_OP(JOP_JUMP_IF_NOT_NIL)
32158
0
    if (janet_checktype(stack[A], JANET_NIL)) {
32159
0
        pc++;
32160
0
    } else {
32161
0
        pc += ES;
32162
0
        vm_maybe_auto_suspend(ES < 0);
32163
0
    }
32164
0
    vm_next();
32165
32166
0
    VM_OP(JOP_LESS_THAN)
32167
0
    vm_compop( <);
32168
32169
0
    VM_OP(JOP_LESS_THAN_EQUAL)
32170
0
    vm_compop( <=);
32171
32172
0
    VM_OP(JOP_LESS_THAN_IMMEDIATE)
32173
0
    vm_compop_imm( <);
32174
32175
0
    VM_OP(JOP_GREATER_THAN)
32176
0
    vm_compop( >);
32177
32178
0
    VM_OP(JOP_GREATER_THAN_EQUAL)
32179
0
    vm_compop( >=);
32180
32181
0
    VM_OP(JOP_GREATER_THAN_IMMEDIATE)
32182
0
    vm_compop_imm( >);
32183
32184
0
    VM_OP(JOP_EQUALS)
32185
0
    stack[A] = janet_wrap_boolean(janet_equals(stack[B], stack[C]));
32186
0
    vm_pcnext();
32187
32188
0
    VM_OP(JOP_EQUALS_IMMEDIATE)
32189
0
    stack[A] = janet_wrap_boolean(janet_unwrap_number(stack[B]) == (double) CS);
32190
0
    vm_pcnext();
32191
32192
0
    VM_OP(JOP_NOT_EQUALS)
32193
0
    stack[A] = janet_wrap_boolean(!janet_equals(stack[B], stack[C]));
32194
0
    vm_pcnext();
32195
32196
0
    VM_OP(JOP_NOT_EQUALS_IMMEDIATE)
32197
0
    stack[A] = janet_wrap_boolean(janet_unwrap_number(stack[B]) != (double) CS);
32198
0
    vm_pcnext();
32199
32200
0
    VM_OP(JOP_COMPARE)
32201
0
    stack[A] = janet_wrap_integer(janet_compare(stack[B], stack[C]));
32202
0
    vm_pcnext();
32203
32204
0
    VM_OP(JOP_NEXT)
32205
0
    vm_commit();
32206
0
    {
32207
0
        Janet temp = janet_next_impl(stack[B], stack[C], 1);
32208
0
        vm_restore();
32209
0
        stack[A] = temp;
32210
0
    }
32211
0
    vm_pcnext();
32212
32213
0
    VM_OP(JOP_LOAD_NIL)
32214
0
    stack[D] = janet_wrap_nil();
32215
0
    vm_pcnext();
32216
32217
0
    VM_OP(JOP_LOAD_TRUE)
32218
0
    stack[D] = janet_wrap_true();
32219
0
    vm_pcnext();
32220
32221
0
    VM_OP(JOP_LOAD_FALSE)
32222
0
    stack[D] = janet_wrap_false();
32223
0
    vm_pcnext();
32224
32225
0
    VM_OP(JOP_LOAD_INTEGER)
32226
0
    stack[A] = janet_wrap_integer(ES);
32227
0
    vm_pcnext();
32228
32229
0
    VM_OP(JOP_LOAD_CONSTANT) {
32230
0
        int32_t cindex = (int32_t)E;
32231
0
        vm_assert(cindex < func->def->constants_length, "invalid constant");
32232
0
        stack[A] = func->def->constants[cindex];
32233
0
        vm_pcnext();
32234
0
    }
32235
32236
0
    VM_OP(JOP_LOAD_SELF)
32237
0
    stack[D] = janet_wrap_function(func);
32238
0
    vm_pcnext();
32239
32240
0
    VM_OP(JOP_LOAD_UPVALUE) {
32241
0
        int32_t eindex = B;
32242
0
        int32_t vindex = C;
32243
0
        JanetFuncEnv *env;
32244
0
        vm_assert(func->def->environments_length > eindex, "invalid upvalue environment");
32245
0
        env = func->envs[eindex];
32246
0
        vm_assert(env->length > vindex, "invalid upvalue index");
32247
0
        vm_assert(janet_env_valid(env), "invalid upvalue environment");
32248
0
        if (env->offset > 0) {
32249
            /* On stack */
32250
0
            stack[A] = env->as.fiber->data[env->offset + vindex];
32251
0
        } else {
32252
            /* Off stack */
32253
0
            stack[A] = env->as.values[vindex];
32254
0
        }
32255
0
        vm_pcnext();
32256
0
    }
32257
32258
0
    VM_OP(JOP_SET_UPVALUE) {
32259
0
        int32_t eindex = B;
32260
0
        int32_t vindex = C;
32261
0
        JanetFuncEnv *env;
32262
0
        vm_assert(func->def->environments_length > eindex, "invalid upvalue environment");
32263
0
        env = func->envs[eindex];
32264
0
        vm_assert(env->length > vindex, "invalid upvalue index");
32265
0
        vm_assert(janet_env_valid(env), "invalid upvalue environment");
32266
0
        if (env->offset > 0) {
32267
0
            env->as.fiber->data[env->offset + vindex] = stack[A];
32268
0
        } else {
32269
0
            env->as.values[vindex] = stack[A];
32270
0
        }
32271
0
        vm_pcnext();
32272
0
    }
32273
32274
0
    VM_OP(JOP_CLOSURE) {
32275
0
        JanetFuncDef *fd;
32276
0
        JanetFunction *fn;
32277
0
        int32_t elen;
32278
0
        int32_t defindex = (int32_t)E;
32279
0
        vm_assert(defindex < func->def->defs_length, "invalid funcdef");
32280
0
        fd = func->def->defs[defindex];
32281
0
        elen = fd->environments_length;
32282
0
        fn = janet_gcalloc(JANET_MEMORY_FUNCTION, sizeof(JanetFunction) + ((size_t) elen * sizeof(JanetFuncEnv *)));
32283
0
        fn->def = fd;
32284
0
        {
32285
0
            int32_t i;
32286
0
            for (i = 0; i < elen; ++i) {
32287
0
                int32_t inherit = fd->environments[i];
32288
0
                if (inherit == -1 || inherit >= func->def->environments_length) {
32289
0
                    JanetStackFrame *frame = janet_stack_frame(stack);
32290
0
                    if (!frame->env) {
32291
                        /* Lazy capture of current stack frame */
32292
0
                        JanetFuncEnv *env = janet_gcalloc(JANET_MEMORY_FUNCENV, sizeof(JanetFuncEnv));
32293
0
                        env->offset = fiber->frame;
32294
0
                        env->as.fiber = fiber;
32295
0
                        env->length = func->def->slotcount;
32296
0
                        frame->env = env;
32297
0
                    }
32298
0
                    fn->envs[i] = frame->env;
32299
0
                } else {
32300
0
                    fn->envs[i] = func->envs[inherit];
32301
0
                }
32302
0
            }
32303
0
        }
32304
0
        stack[A] = janet_wrap_function(fn);
32305
0
        vm_checkgc_pcnext();
32306
0
    }
32307
32308
0
    VM_OP(JOP_PUSH)
32309
0
    janet_fiber_push(fiber, stack[D]);
32310
0
    stack = fiber->data + fiber->frame;
32311
0
    vm_checkgc_pcnext();
32312
32313
0
    VM_OP(JOP_PUSH_2)
32314
0
    janet_fiber_push2(fiber, stack[A], stack[E]);
32315
0
    stack = fiber->data + fiber->frame;
32316
0
    vm_checkgc_pcnext();
32317
32318
0
    VM_OP(JOP_PUSH_3)
32319
0
    janet_fiber_push3(fiber, stack[A], stack[B], stack[C]);
32320
0
    stack = fiber->data + fiber->frame;
32321
0
    vm_checkgc_pcnext();
32322
32323
0
    VM_OP(JOP_PUSH_ARRAY) {
32324
0
        const Janet *vals;
32325
0
        int32_t len;
32326
0
        if (janet_indexed_view(stack[D], &vals, &len)) {
32327
0
            janet_fiber_pushn(fiber, vals, len);
32328
0
        } else {
32329
0
            janet_panicf("expected %T, got %v", JANET_TFLAG_INDEXED, stack[D]);
32330
0
        }
32331
0
    }
32332
0
    stack = fiber->data + fiber->frame;
32333
0
    vm_checkgc_pcnext();
32334
32335
0
    VM_OP(JOP_CALL) {
32336
0
        vm_maybe_auto_suspend(1);
32337
0
        Janet callee = stack[E];
32338
0
        if (fiber->stacktop > fiber->maxstack) {
32339
0
            vm_throw("stack overflow");
32340
0
        }
32341
0
        if (janet_checktype(callee, JANET_KEYWORD)) {
32342
0
            vm_commit();
32343
0
            callee = resolve_method(callee, fiber);
32344
0
        }
32345
0
        if (janet_checktype(callee, JANET_FUNCTION)) {
32346
0
            func = janet_unwrap_function(callee);
32347
0
            if (func->gc.flags & JANET_FUNCFLAG_TRACE) {
32348
0
                vm_do_trace(func, fiber->stacktop - fiber->stackstart, fiber->data + fiber->stackstart);
32349
0
            }
32350
0
            janet_stack_frame(stack)->pc = pc;
32351
0
            if (janet_fiber_funcframe(fiber, func)) {
32352
0
                int32_t n = fiber->stacktop - fiber->stackstart;
32353
0
                janet_panicf("%v called with %d argument%s, expected %d",
32354
0
                             callee, n, n == 1 ? "" : "s", func->def->arity);
32355
0
            }
32356
0
            stack = fiber->data + fiber->frame;
32357
0
            pc = func->def->bytecode;
32358
0
            vm_checkgc_next();
32359
0
        } else if (janet_checktype(callee, JANET_CFUNCTION)) {
32360
0
            vm_commit();
32361
0
            int32_t argc = fiber->stacktop - fiber->stackstart;
32362
0
            janet_fiber_cframe(fiber, janet_unwrap_cfunction(callee));
32363
0
            Janet ret = janet_unwrap_cfunction(callee)(argc, fiber->data + fiber->frame);
32364
0
            janet_fiber_popframe(fiber);
32365
0
            stack = fiber->data + fiber->frame;
32366
0
            stack[A] = ret;
32367
0
            vm_checkgc_pcnext();
32368
0
        } else {
32369
0
            vm_commit();
32370
0
            stack[A] = call_nonfn(fiber, callee);
32371
0
            vm_pcnext();
32372
0
        }
32373
0
    }
32374
32375
0
    VM_OP(JOP_TAILCALL) {
32376
0
        vm_maybe_auto_suspend(1);
32377
0
        Janet callee = stack[D];
32378
0
        if (fiber->stacktop > fiber->maxstack) {
32379
0
            vm_throw("stack overflow");
32380
0
        }
32381
0
        if (janet_checktype(callee, JANET_KEYWORD)) {
32382
0
            vm_commit();
32383
0
            callee = resolve_method(callee, fiber);
32384
0
        }
32385
0
        if (janet_checktype(callee, JANET_FUNCTION)) {
32386
0
            func = janet_unwrap_function(callee);
32387
0
            if (func->gc.flags & JANET_FUNCFLAG_TRACE) {
32388
0
                vm_do_trace(func, fiber->stacktop - fiber->stackstart, fiber->data + fiber->stackstart);
32389
0
            }
32390
0
            if (janet_fiber_funcframe_tail(fiber, func)) {
32391
0
                janet_stack_frame(fiber->data + fiber->frame)->pc = pc;
32392
0
                int32_t n = fiber->stacktop - fiber->stackstart;
32393
0
                janet_panicf("%v called with %d argument%s, expected %d",
32394
0
                             callee, n, n == 1 ? "" : "s", func->def->arity);
32395
0
            }
32396
0
            stack = fiber->data + fiber->frame;
32397
0
            pc = func->def->bytecode;
32398
0
            vm_checkgc_next();
32399
0
        } else {
32400
0
            Janet retreg;
32401
0
            int entrance_frame = janet_stack_frame(stack)->flags & JANET_STACKFRAME_ENTRANCE;
32402
0
            vm_commit();
32403
0
            if (janet_checktype(callee, JANET_CFUNCTION)) {
32404
0
                int32_t argc = fiber->stacktop - fiber->stackstart;
32405
0
                janet_fiber_cframe(fiber, janet_unwrap_cfunction(callee));
32406
0
                retreg = janet_unwrap_cfunction(callee)(argc, fiber->data + fiber->frame);
32407
0
                janet_fiber_popframe(fiber);
32408
0
            } else {
32409
0
                retreg = call_nonfn(fiber, callee);
32410
0
            }
32411
0
            janet_fiber_popframe(fiber);
32412
0
            if (entrance_frame) {
32413
0
                vm_return_no_restore(JANET_SIGNAL_OK, retreg);
32414
0
            }
32415
0
            vm_restore();
32416
0
            stack[A] = retreg;
32417
0
            vm_checkgc_pcnext();
32418
0
        }
32419
0
    }
32420
32421
0
    VM_OP(JOP_RESUME) {
32422
0
        Janet retreg;
32423
0
        vm_maybe_auto_suspend(1);
32424
0
        vm_assert_type(stack[B], JANET_FIBER);
32425
0
        JanetFiber *child = janet_unwrap_fiber(stack[B]);
32426
0
        if (janet_check_can_resume(child, &retreg, 0)) {
32427
0
            vm_commit();
32428
0
            janet_panicv(retreg);
32429
0
        }
32430
0
        fiber->child = child;
32431
0
        JanetSignal sig = janet_continue_no_check(child, stack[C], &retreg);
32432
0
        if (sig != JANET_SIGNAL_OK && !(child->flags & (1 << sig))) {
32433
0
            vm_return(sig, retreg);
32434
0
        }
32435
0
        fiber->child = NULL;
32436
0
        stack = fiber->data + fiber->frame;
32437
0
        stack[A] = retreg;
32438
0
        vm_checkgc_pcnext();
32439
0
    }
32440
32441
0
    VM_OP(JOP_SIGNAL) {
32442
0
        int32_t s = C;
32443
0
        if (s > JANET_SIGNAL_USER9) s = JANET_SIGNAL_USER9;
32444
0
        if (s < 0) s = 0;
32445
0
        vm_return(s, stack[B]);
32446
0
    }
32447
32448
0
    VM_OP(JOP_PROPAGATE) {
32449
0
        Janet fv = stack[C];
32450
0
        vm_assert_type(fv, JANET_FIBER);
32451
0
        JanetFiber *f = janet_unwrap_fiber(fv);
32452
0
        JanetFiberStatus sub_status = janet_fiber_status(f);
32453
0
        if (sub_status > JANET_STATUS_USER9) {
32454
0
            vm_commit();
32455
0
            janet_panicf("cannot propagate from fiber with status :%s",
32456
0
                         janet_status_names[sub_status]);
32457
0
        }
32458
0
        fiber->child = f;
32459
0
        vm_return((int) sub_status, stack[B]);
32460
0
    }
32461
32462
0
    VM_OP(JOP_CANCEL) {
32463
0
        Janet retreg;
32464
0
        vm_assert_type(stack[B], JANET_FIBER);
32465
0
        JanetFiber *child = janet_unwrap_fiber(stack[B]);
32466
0
        if (janet_check_can_resume(child, &retreg, 1)) {
32467
0
            vm_commit();
32468
0
            janet_panicv(retreg);
32469
0
        }
32470
0
        fiber->child = child;
32471
0
        JanetSignal sig = janet_continue_signal(child, stack[C], &retreg, JANET_SIGNAL_ERROR);
32472
0
        if (sig != JANET_SIGNAL_OK && !(child->flags & (1 << sig))) {
32473
0
            vm_return(sig, retreg);
32474
0
        }
32475
0
        fiber->child = NULL;
32476
0
        stack = fiber->data + fiber->frame;
32477
0
        stack[A] = retreg;
32478
0
        vm_checkgc_pcnext();
32479
0
    }
32480
32481
0
    VM_OP(JOP_PUT)
32482
0
    vm_commit();
32483
0
    fiber->flags |= JANET_FIBER_RESUME_NO_USEVAL;
32484
0
    janet_put(stack[A], stack[B], stack[C]);
32485
0
    fiber->flags &= ~JANET_FIBER_RESUME_NO_USEVAL;
32486
0
    vm_checkgc_pcnext();
32487
32488
0
    VM_OP(JOP_PUT_INDEX)
32489
0
    vm_commit();
32490
0
    fiber->flags |= JANET_FIBER_RESUME_NO_USEVAL;
32491
0
    janet_putindex(stack[A], C, stack[B]);
32492
0
    fiber->flags &= ~JANET_FIBER_RESUME_NO_USEVAL;
32493
0
    vm_checkgc_pcnext();
32494
32495
0
    VM_OP(JOP_IN)
32496
0
    vm_commit();
32497
0
    stack[A] = janet_in(stack[B], stack[C]);
32498
0
    vm_pcnext();
32499
32500
0
    VM_OP(JOP_GET)
32501
0
    vm_commit();
32502
0
    stack[A] = janet_get(stack[B], stack[C]);
32503
0
    vm_pcnext();
32504
32505
0
    VM_OP(JOP_GET_INDEX)
32506
0
    vm_commit();
32507
0
    stack[A] = janet_getindex(stack[B], C);
32508
0
    vm_pcnext();
32509
32510
0
    VM_OP(JOP_LENGTH)
32511
0
    vm_commit();
32512
0
    stack[A] = janet_lengthv(stack[E]);
32513
0
    vm_pcnext();
32514
32515
0
    VM_OP(JOP_MAKE_ARRAY) {
32516
0
        int32_t count = fiber->stacktop - fiber->stackstart;
32517
0
        Janet *mem = fiber->data + fiber->stackstart;
32518
0
        stack[D] = janet_wrap_array(janet_array_n(mem, count));
32519
0
        fiber->stacktop = fiber->stackstart;
32520
0
        vm_checkgc_pcnext();
32521
0
    }
32522
32523
0
    VM_OP(JOP_MAKE_TUPLE)
32524
    /* fallthrough */
32525
0
    VM_OP(JOP_MAKE_BRACKET_TUPLE) {
32526
0
        int32_t count = fiber->stacktop - fiber->stackstart;
32527
0
        Janet *mem = fiber->data + fiber->stackstart;
32528
0
        const Janet *tup = janet_tuple_n(mem, count);
32529
0
        if (opcode == JOP_MAKE_BRACKET_TUPLE)
32530
0
            janet_tuple_flag(tup) |= JANET_TUPLE_FLAG_BRACKETCTOR;
32531
0
        stack[D] = janet_wrap_tuple(tup);
32532
0
        fiber->stacktop = fiber->stackstart;
32533
0
        vm_checkgc_pcnext();
32534
0
    }
32535
32536
0
    VM_OP(JOP_MAKE_TABLE) {
32537
0
        int32_t count = fiber->stacktop - fiber->stackstart;
32538
0
        Janet *mem = fiber->data + fiber->stackstart;
32539
0
        if (count & 1) {
32540
0
            vm_commit();
32541
0
            janet_panicf("expected even number of arguments to table constructor, got %d", count);
32542
0
        }
32543
0
        JanetTable *table = janet_table(count / 2);
32544
0
        for (int32_t i = 0; i < count; i += 2)
32545
0
            janet_table_put(table, mem[i], mem[i + 1]);
32546
0
        stack[D] = janet_wrap_table(table);
32547
0
        fiber->stacktop = fiber->stackstart;
32548
0
        vm_checkgc_pcnext();
32549
0
    }
32550
32551
0
    VM_OP(JOP_MAKE_STRUCT) {
32552
0
        int32_t count = fiber->stacktop - fiber->stackstart;
32553
0
        Janet *mem = fiber->data + fiber->stackstart;
32554
0
        if (count & 1) {
32555
0
            vm_commit();
32556
0
            janet_panicf("expected even number of arguments to struct constructor, got %d", count);
32557
0
        }
32558
0
        JanetKV *st = janet_struct_begin(count / 2);
32559
0
        for (int32_t i = 0; i < count; i += 2)
32560
0
            janet_struct_put(st, mem[i], mem[i + 1]);
32561
0
        stack[D] = janet_wrap_struct(janet_struct_end(st));
32562
0
        fiber->stacktop = fiber->stackstart;
32563
0
        vm_checkgc_pcnext();
32564
0
    }
32565
32566
0
    VM_OP(JOP_MAKE_STRING) {
32567
0
        int32_t count = fiber->stacktop - fiber->stackstart;
32568
0
        Janet *mem = fiber->data + fiber->stackstart;
32569
0
        JanetBuffer buffer;
32570
0
        janet_buffer_init(&buffer, 10 * count);
32571
0
        for (int32_t i = 0; i < count; i++)
32572
0
            janet_to_string_b(&buffer, mem[i]);
32573
0
        stack[D] = janet_stringv(buffer.data, buffer.count);
32574
0
        janet_buffer_deinit(&buffer);
32575
0
        fiber->stacktop = fiber->stackstart;
32576
0
        vm_checkgc_pcnext();
32577
0
    }
32578
32579
0
    VM_OP(JOP_MAKE_BUFFER) {
32580
0
        int32_t count = fiber->stacktop - fiber->stackstart;
32581
0
        Janet *mem = fiber->data + fiber->stackstart;
32582
0
        JanetBuffer *buffer = janet_buffer(10 * count);
32583
0
        for (int32_t i = 0; i < count; i++)
32584
0
            janet_to_string_b(buffer, mem[i]);
32585
0
        stack[D] = janet_wrap_buffer(buffer);
32586
0
        fiber->stacktop = fiber->stackstart;
32587
0
        vm_checkgc_pcnext();
32588
0
    }
32589
32590
0
    VM_END()
32591
0
}
32592
32593
/*
32594
 * Execute a single instruction in the fiber. Does this by inspecting
32595
 * the fiber, setting a breakpoint at the next instruction, executing, and
32596
 * reseting breakpoints to how they were prior. Yes, it's a bit hacky.
32597
 */
32598
0
JanetSignal janet_step(JanetFiber *fiber, Janet in, Janet *out) {
32599
    /* No finished or currently alive fibers. */
32600
0
    JanetFiberStatus status = janet_fiber_status(fiber);
32601
0
    if (status == JANET_STATUS_ALIVE ||
32602
0
            status == JANET_STATUS_DEAD ||
32603
0
            status == JANET_STATUS_ERROR) {
32604
0
        janet_panicf("cannot step fiber with status :%s", janet_status_names[status]);
32605
0
    }
32606
32607
    /* Get PC for setting breakpoints */
32608
0
    uint32_t *pc = janet_stack_frame(fiber->data + fiber->frame)->pc;
32609
32610
    /* Check current opcode (sans debug flag). This tells us where the next or next two candidate
32611
     * instructions will be. Usually it's the next instruction in memory,
32612
     * but for branching instructions it is also the target of the branch. */
32613
0
    uint32_t *nexta = NULL, *nextb = NULL, olda = 0, oldb = 0;
32614
32615
    /* Set temporary breakpoints */
32616
0
    switch (*pc & 0x7F) {
32617
0
        default:
32618
0
            nexta = pc + 1;
32619
0
            break;
32620
        /* These we just ignore for now. Supporting them means
32621
         * we could step into and out of functions (including JOP_CALL). */
32622
0
        case JOP_RETURN_NIL:
32623
0
        case JOP_RETURN:
32624
0
        case JOP_ERROR:
32625
0
        case JOP_TAILCALL:
32626
0
            break;
32627
0
        case JOP_JUMP:
32628
0
            nexta = pc + DS;
32629
0
            break;
32630
0
        case JOP_JUMP_IF:
32631
0
        case JOP_JUMP_IF_NOT:
32632
0
            nexta = pc + 1;
32633
0
            nextb = pc + ES;
32634
0
            break;
32635
0
    }
32636
0
    if (nexta) {
32637
0
        olda = *nexta;
32638
0
        *nexta |= 0x80;
32639
0
    }
32640
0
    if (nextb) {
32641
0
        oldb = *nextb;
32642
0
        *nextb |= 0x80;
32643
0
    }
32644
32645
    /* Go */
32646
0
    JanetSignal signal = janet_continue(fiber, in, out);
32647
32648
    /* Restore */
32649
0
    if (nexta) *nexta = olda;
32650
0
    if (nextb) *nextb = oldb;
32651
32652
0
    return signal;
32653
0
}
32654
32655
0
static Janet void_cfunction(int32_t argc, Janet *argv) {
32656
0
    (void) argc;
32657
0
    (void) argv;
32658
0
    janet_panic("placeholder");
32659
0
}
32660
32661
0
Janet janet_call(JanetFunction *fun, int32_t argc, const Janet *argv) {
32662
    /* Check entry conditions */
32663
0
    if (!janet_vm.fiber)
32664
0
        janet_panic("janet_call failed because there is no current fiber");
32665
0
    if (janet_vm.stackn >= JANET_RECURSION_GUARD)
32666
0
        janet_panic("C stack recursed too deeply");
32667
32668
    /* Dirty stack */
32669
0
    int32_t dirty_stack = janet_vm.fiber->stacktop - janet_vm.fiber->stackstart;
32670
0
    if (dirty_stack) {
32671
0
        janet_fiber_cframe(janet_vm.fiber, void_cfunction);
32672
0
    }
32673
32674
    /* Tracing */
32675
0
    if (fun->gc.flags & JANET_FUNCFLAG_TRACE) {
32676
0
        janet_vm.stackn++;
32677
0
        vm_do_trace(fun, argc, argv);
32678
0
        janet_vm.stackn--;
32679
0
    }
32680
32681
    /* Push frame */
32682
0
    janet_fiber_pushn(janet_vm.fiber, argv, argc);
32683
0
    if (janet_fiber_funcframe(janet_vm.fiber, fun)) {
32684
0
        int32_t min = fun->def->min_arity;
32685
0
        int32_t max = fun->def->max_arity;
32686
0
        Janet funv = janet_wrap_function(fun);
32687
0
        if (min == max && min != argc)
32688
0
            janet_panicf("arity mismatch in %v, expected %d, got %d", funv, min, argc);
32689
0
        if (min >= 0 && argc < min)
32690
0
            janet_panicf("arity mismatch in %v, expected at least %d, got %d", funv, min, argc);
32691
0
        janet_panicf("arity mismatch in %v, expected at most %d, got %d", funv, max, argc);
32692
0
    }
32693
0
    janet_fiber_frame(janet_vm.fiber)->flags |= JANET_STACKFRAME_ENTRANCE;
32694
32695
    /* Set up */
32696
0
    int32_t oldn = janet_vm.stackn++;
32697
0
    int handle = janet_gclock();
32698
32699
    /* Run vm */
32700
0
    janet_vm.fiber->flags |= JANET_FIBER_RESUME_NO_USEVAL | JANET_FIBER_RESUME_NO_SKIP;
32701
0
    JanetSignal signal = run_vm(janet_vm.fiber, janet_wrap_nil());
32702
32703
    /* Teardown */
32704
0
    janet_vm.stackn = oldn;
32705
0
    janet_gcunlock(handle);
32706
0
    if (dirty_stack) {
32707
0
        janet_fiber_popframe(janet_vm.fiber);
32708
0
        janet_vm.fiber->stacktop += dirty_stack;
32709
0
    }
32710
32711
0
    if (signal != JANET_SIGNAL_OK) {
32712
0
        janet_panicv(*janet_vm.return_reg);
32713
0
    }
32714
32715
0
    return *janet_vm.return_reg;
32716
0
}
32717
32718
0
static JanetSignal janet_check_can_resume(JanetFiber *fiber, Janet *out, int is_cancel) {
32719
    /* Check conditions */
32720
0
    JanetFiberStatus old_status = janet_fiber_status(fiber);
32721
0
    if (janet_vm.stackn >= JANET_RECURSION_GUARD) {
32722
0
        janet_fiber_set_status(fiber, JANET_STATUS_ERROR);
32723
0
        *out = janet_cstringv("C stack recursed too deeply");
32724
0
        return JANET_SIGNAL_ERROR;
32725
0
    }
32726
    /* If a "task" fiber is trying to be used as a normal fiber, detect that. See bug #920.
32727
     * Fibers must be marked as root fibers manually, or by the ev scheduler. */
32728
0
    if (janet_vm.fiber != NULL && (fiber->gc.flags & JANET_FIBER_FLAG_ROOT)) {
32729
0
#ifdef JANET_EV
32730
0
        *out = janet_cstringv(is_cancel
32731
0
                              ? "cannot cancel root fiber, use ev/cancel"
32732
0
                              : "cannot resume root fiber, use ev/go");
32733
#else
32734
        *out = janet_cstringv(is_cancel
32735
                              ? "cannot cancel root fiber"
32736
                              : "cannot resume root fiber");
32737
#endif
32738
0
        return JANET_SIGNAL_ERROR;
32739
0
    }
32740
0
    if (old_status == JANET_STATUS_ALIVE ||
32741
0
            old_status == JANET_STATUS_DEAD ||
32742
0
            (old_status >= JANET_STATUS_USER0 && old_status <= JANET_STATUS_USER4) ||
32743
0
            old_status == JANET_STATUS_ERROR) {
32744
0
        const uint8_t *str = janet_formatc("cannot resume fiber with status :%s",
32745
0
                                           janet_status_names[old_status]);
32746
0
        *out = janet_wrap_string(str);
32747
0
        return JANET_SIGNAL_ERROR;
32748
0
    }
32749
0
    return JANET_SIGNAL_OK;
32750
0
}
32751
32752
0
void janet_try_init(JanetTryState *state) {
32753
0
    state->stackn = janet_vm.stackn++;
32754
0
    state->gc_handle = janet_vm.gc_suspend;
32755
0
    state->vm_fiber = janet_vm.fiber;
32756
0
    state->vm_jmp_buf = janet_vm.signal_buf;
32757
0
    state->vm_return_reg = janet_vm.return_reg;
32758
0
    janet_vm.return_reg = &(state->payload);
32759
0
    janet_vm.signal_buf = &(state->buf);
32760
0
}
32761
32762
0
void janet_restore(JanetTryState *state) {
32763
0
    janet_vm.stackn = state->stackn;
32764
0
    janet_vm.gc_suspend = state->gc_handle;
32765
0
    janet_vm.fiber = state->vm_fiber;
32766
0
    janet_vm.signal_buf = state->vm_jmp_buf;
32767
0
    janet_vm.return_reg = state->vm_return_reg;
32768
0
}
32769
32770
0
static JanetSignal janet_continue_no_check(JanetFiber *fiber, Janet in, Janet *out) {
32771
32772
0
    JanetFiberStatus old_status = janet_fiber_status(fiber);
32773
32774
0
#ifdef JANET_EV
32775
0
    janet_fiber_did_resume(fiber);
32776
0
#endif
32777
32778
    /* Clear last value */
32779
0
    fiber->last_value = janet_wrap_nil();
32780
32781
    /* Continue child fiber if it exists */
32782
0
    if (fiber->child) {
32783
0
        if (janet_vm.root_fiber == NULL) janet_vm.root_fiber = fiber;
32784
0
        JanetFiber *child = fiber->child;
32785
0
        uint32_t instr = (janet_stack_frame(fiber->data + fiber->frame)->pc)[0];
32786
0
        janet_vm.stackn++;
32787
0
        JanetSignal sig = janet_continue(child, in, &in);
32788
0
        janet_vm.stackn--;
32789
0
        if (janet_vm.root_fiber == fiber) janet_vm.root_fiber = NULL;
32790
0
        if (sig != JANET_SIGNAL_OK && !(child->flags & (1 << sig))) {
32791
0
            *out = in;
32792
0
            janet_fiber_set_status(fiber, sig);
32793
0
            fiber->last_value = child->last_value;
32794
0
            return sig;
32795
0
        }
32796
        /* Check if we need any special handling for certain opcodes */
32797
0
        switch (instr & 0x7F) {
32798
0
            default:
32799
0
                break;
32800
0
            case JOP_NEXT: {
32801
0
                if (sig == JANET_SIGNAL_OK ||
32802
0
                        sig == JANET_SIGNAL_ERROR ||
32803
0
                        sig == JANET_SIGNAL_USER0 ||
32804
0
                        sig == JANET_SIGNAL_USER1 ||
32805
0
                        sig == JANET_SIGNAL_USER2 ||
32806
0
                        sig == JANET_SIGNAL_USER3 ||
32807
0
                        sig == JANET_SIGNAL_USER4) {
32808
0
                    in = janet_wrap_nil();
32809
0
                } else {
32810
0
                    in = janet_wrap_integer(0);
32811
0
                }
32812
0
                break;
32813
0
            }
32814
0
        }
32815
0
        fiber->child = NULL;
32816
0
    }
32817
32818
    /* Handle new fibers being resumed with a non-nil value */
32819
0
    if (old_status == JANET_STATUS_NEW && !janet_checktype(in, JANET_NIL)) {
32820
0
        Janet *stack = fiber->data + fiber->frame;
32821
0
        JanetFunction *func = janet_stack_frame(stack)->func;
32822
0
        if (func) {
32823
0
            if (func->def->arity > 0) {
32824
0
                stack[0] = in;
32825
0
            } else if (func->def->flags & JANET_FUNCDEF_FLAG_VARARG) {
32826
0
                stack[0] = janet_wrap_tuple(janet_tuple_n(&in, 1));
32827
0
            }
32828
0
        }
32829
0
    }
32830
32831
    /* Save global state */
32832
0
    JanetTryState tstate;
32833
0
    JanetSignal sig = janet_try(&tstate);
32834
0
    if (!sig) {
32835
        /* Normal setup */
32836
0
        if (janet_vm.root_fiber == NULL) janet_vm.root_fiber = fiber;
32837
0
        janet_vm.fiber = fiber;
32838
0
        janet_fiber_set_status(fiber, JANET_STATUS_ALIVE);
32839
0
        sig = run_vm(fiber, in);
32840
0
    }
32841
32842
    /* Restore */
32843
0
    if (janet_vm.root_fiber == fiber) janet_vm.root_fiber = NULL;
32844
0
    janet_fiber_set_status(fiber, sig);
32845
0
    janet_restore(&tstate);
32846
0
    fiber->last_value = tstate.payload;
32847
0
    *out = tstate.payload;
32848
32849
0
    return sig;
32850
0
}
32851
32852
/* Enter the main vm loop */
32853
0
JanetSignal janet_continue(JanetFiber *fiber, Janet in, Janet *out) {
32854
    /* Check conditions */
32855
0
    JanetSignal tmp_signal = janet_check_can_resume(fiber, out, 0);
32856
0
    if (tmp_signal) return tmp_signal;
32857
0
    return janet_continue_no_check(fiber, in, out);
32858
0
}
32859
32860
/* Enter the main vm loop but immediately raise a signal */
32861
0
JanetSignal janet_continue_signal(JanetFiber *fiber, Janet in, Janet *out, JanetSignal sig) {
32862
0
    JanetSignal tmp_signal = janet_check_can_resume(fiber, out, sig != JANET_SIGNAL_OK);
32863
0
    if (tmp_signal) return tmp_signal;
32864
0
    if (sig != JANET_SIGNAL_OK) {
32865
0
        JanetFiber *child = fiber;
32866
0
        while (child->child) child = child->child;
32867
0
        child->gc.flags &= ~JANET_FIBER_STATUS_MASK;
32868
0
        child->gc.flags |= sig << JANET_FIBER_STATUS_OFFSET;
32869
0
        child->flags |= JANET_FIBER_RESUME_SIGNAL;
32870
0
    }
32871
0
    return janet_continue_no_check(fiber, in, out);
32872
0
}
32873
32874
JanetSignal janet_pcall(
32875
    JanetFunction *fun,
32876
    int32_t argc,
32877
    const Janet *argv,
32878
    Janet *out,
32879
0
    JanetFiber **f) {
32880
0
    JanetFiber *fiber;
32881
0
    if (f && *f) {
32882
0
        fiber = janet_fiber_reset(*f, fun, argc, argv);
32883
0
    } else {
32884
0
        fiber = janet_fiber(fun, 64, argc, argv);
32885
0
    }
32886
0
    if (f) *f = fiber;
32887
0
    if (NULL == fiber) {
32888
0
        *out = janet_cstringv("arity mismatch");
32889
0
        return JANET_SIGNAL_ERROR;
32890
0
    }
32891
0
    return janet_continue(fiber, janet_wrap_nil(), out);
32892
0
}
32893
32894
0
Janet janet_mcall(const char *name, int32_t argc, Janet *argv) {
32895
    /* At least 1 argument */
32896
0
    if (argc < 1) {
32897
0
        janet_panicf("method :%s expected at least 1 argument", name);
32898
0
    }
32899
    /* Find method */
32900
0
    Janet method = janet_method_lookup(argv[0], name);
32901
0
    if (janet_checktype(method, JANET_NIL)) {
32902
0
        janet_panicf("could not find method :%s for %v", name, argv[0]);
32903
0
    }
32904
    /* Invoke method */
32905
0
    return janet_method_invoke(method, argc, argv);
32906
0
}
32907
32908
/* Setup VM */
32909
5.24k
int janet_init(void) {
32910
32911
    /* Garbage collection */
32912
5.24k
    janet_vm.blocks = NULL;
32913
5.24k
    janet_vm.next_collection = 0;
32914
5.24k
    janet_vm.gc_interval = 0x400000;
32915
5.24k
    janet_vm.block_count = 0;
32916
32917
5.24k
    janet_symcache_init();
32918
32919
    /* Initialize gc roots */
32920
5.24k
    janet_vm.roots = NULL;
32921
5.24k
    janet_vm.root_count = 0;
32922
5.24k
    janet_vm.root_capacity = 0;
32923
32924
    /* Scratch memory */
32925
5.24k
    janet_vm.user = NULL;
32926
5.24k
    janet_vm.scratch_mem = NULL;
32927
5.24k
    janet_vm.scratch_len = 0;
32928
5.24k
    janet_vm.scratch_cap = 0;
32929
32930
    /* Sandbox flags */
32931
5.24k
    janet_vm.sandbox_flags = 0;
32932
32933
    /* Initialize registry */
32934
5.24k
    janet_vm.registry = NULL;
32935
5.24k
    janet_vm.registry_cap = 0;
32936
5.24k
    janet_vm.registry_count = 0;
32937
5.24k
    janet_vm.registry_dirty = 0;
32938
32939
    /* Intialize abstract registry */
32940
5.24k
    janet_vm.abstract_registry = janet_table(0);
32941
5.24k
    janet_gcroot(janet_wrap_table(janet_vm.abstract_registry));
32942
32943
    /* Traversal */
32944
5.24k
    janet_vm.traversal = NULL;
32945
5.24k
    janet_vm.traversal_base = NULL;
32946
5.24k
    janet_vm.traversal_top = NULL;
32947
32948
    /* Core env */
32949
5.24k
    janet_vm.core_env = NULL;
32950
32951
    /* Auto suspension */
32952
5.24k
    janet_vm.auto_suspend = 0;
32953
32954
    /* Dynamic bindings */
32955
5.24k
    janet_vm.top_dyns = NULL;
32956
32957
    /* Seed RNG */
32958
5.24k
    janet_rng_seed(janet_default_rng(), 0);
32959
32960
    /* Fibers */
32961
5.24k
    janet_vm.fiber = NULL;
32962
5.24k
    janet_vm.root_fiber = NULL;
32963
5.24k
    janet_vm.stackn = 0;
32964
32965
5.24k
#ifdef JANET_EV
32966
5.24k
    janet_ev_init();
32967
5.24k
#endif
32968
5.24k
#ifdef JANET_NET
32969
5.24k
    janet_net_init();
32970
5.24k
#endif
32971
5.24k
    return 0;
32972
5.24k
}
32973
32974
/* Disable some features at runtime with no way to re-enable them */
32975
0
void janet_sandbox(uint32_t flags) {
32976
0
    janet_sandbox_assert(JANET_SANDBOX_SANDBOX);
32977
0
    janet_vm.sandbox_flags |= flags;
32978
0
}
32979
32980
0
void janet_sandbox_assert(uint32_t forbidden_flags) {
32981
0
    if (forbidden_flags & janet_vm.sandbox_flags) {
32982
0
        janet_panic("operation forbidden by sandbox");
32983
0
    }
32984
0
}
32985
32986
/* Clear all memory associated with the VM */
32987
5.24k
void janet_deinit(void) {
32988
5.24k
    janet_clear_memory();
32989
5.24k
    janet_symcache_deinit();
32990
5.24k
    janet_free(janet_vm.roots);
32991
5.24k
    janet_vm.roots = NULL;
32992
5.24k
    janet_vm.root_count = 0;
32993
5.24k
    janet_vm.root_capacity = 0;
32994
5.24k
    janet_vm.abstract_registry = NULL;
32995
5.24k
    janet_vm.core_env = NULL;
32996
5.24k
    janet_vm.top_dyns = NULL;
32997
5.24k
    janet_vm.user = NULL;
32998
5.24k
    janet_free(janet_vm.traversal_base);
32999
5.24k
    janet_vm.fiber = NULL;
33000
5.24k
    janet_vm.root_fiber = NULL;
33001
5.24k
    janet_free(janet_vm.registry);
33002
5.24k
    janet_vm.registry = NULL;
33003
5.24k
#ifdef JANET_EV
33004
5.24k
    janet_ev_deinit();
33005
5.24k
#endif
33006
5.24k
#ifdef JANET_NET
33007
5.24k
    janet_net_deinit();
33008
5.24k
#endif
33009
5.24k
}
33010
33011
33012
/* src/core/wrap.c */
33013
#line 0 "src/core/wrap.c"
33014
33015
/*
33016
* Copyright (c) 2023 Calvin Rose
33017
*
33018
* Permission is hereby granted, free of charge, to any person obtaining a copy
33019
* of this software and associated documentation files (the "Software"), to
33020
* deal in the Software without restriction, including without limitation the
33021
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
33022
* sell copies of the Software, and to permit persons to whom the Software is
33023
* furnished to do so, subject to the following conditions:
33024
*
33025
* The above copyright notice and this permission notice shall be included in
33026
* all copies or substantial portions of the Software.
33027
*
33028
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
33029
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
33030
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
33031
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
33032
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
33033
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
33034
* IN THE SOFTWARE.
33035
*/
33036
33037
#ifndef JANET_AMALG
33038
#include "features.h"
33039
#include <janet.h>
33040
#include <math.h>
33041
#include "util.h"
33042
#include "state.h"
33043
#endif
33044
33045
/* Macro fills */
33046
33047
0
JanetType(janet_type)(Janet x) {
33048
0
    return janet_type(x);
33049
0
}
33050
0
int (janet_checktype)(Janet x, JanetType type) {
33051
0
    return janet_checktype(x, type);
33052
0
}
33053
0
int (janet_checktypes)(Janet x, int typeflags) {
33054
0
    return janet_checktypes(x, typeflags);
33055
0
}
33056
0
int (janet_truthy)(Janet x) {
33057
0
    return janet_truthy(x);
33058
0
}
33059
33060
0
const JanetKV *(janet_unwrap_struct)(Janet x) {
33061
0
    return janet_unwrap_struct(x);
33062
0
}
33063
0
const Janet *(janet_unwrap_tuple)(Janet x) {
33064
0
    return janet_unwrap_tuple(x);
33065
0
}
33066
0
JanetFiber *(janet_unwrap_fiber)(Janet x) {
33067
0
    return janet_unwrap_fiber(x);
33068
0
}
33069
0
JanetArray *(janet_unwrap_array)(Janet x) {
33070
0
    return janet_unwrap_array(x);
33071
0
}
33072
0
JanetTable *(janet_unwrap_table)(Janet x) {
33073
0
    return janet_unwrap_table(x);
33074
0
}
33075
0
JanetBuffer *(janet_unwrap_buffer)(Janet x) {
33076
0
    return janet_unwrap_buffer(x);
33077
0
}
33078
0
const uint8_t *(janet_unwrap_string)(Janet x) {
33079
0
    return janet_unwrap_string(x);
33080
0
}
33081
0
const uint8_t *(janet_unwrap_symbol)(Janet x) {
33082
0
    return janet_unwrap_symbol(x);
33083
0
}
33084
0
const uint8_t *(janet_unwrap_keyword)(Janet x) {
33085
0
    return janet_unwrap_keyword(x);
33086
0
}
33087
0
void *(janet_unwrap_abstract)(Janet x) {
33088
0
    return janet_unwrap_abstract(x);
33089
0
}
33090
0
void *(janet_unwrap_pointer)(Janet x) {
33091
0
    return janet_unwrap_pointer(x);
33092
0
}
33093
0
JanetFunction *(janet_unwrap_function)(Janet x) {
33094
0
    return janet_unwrap_function(x);
33095
0
}
33096
0
JanetCFunction(janet_unwrap_cfunction)(Janet x) {
33097
0
    return janet_unwrap_cfunction(x);
33098
0
}
33099
0
int (janet_unwrap_boolean)(Janet x) {
33100
0
    return janet_unwrap_boolean(x);
33101
0
}
33102
0
int32_t (janet_unwrap_integer)(Janet x) {
33103
0
    return janet_unwrap_integer(x);
33104
0
}
33105
33106
#if defined(JANET_NANBOX_32) || defined(JANET_NANBOX_64)
33107
0
Janet(janet_wrap_nil)(void) {
33108
0
    return janet_wrap_nil();
33109
0
}
33110
0
Janet(janet_wrap_true)(void) {
33111
0
    return janet_wrap_true();
33112
0
}
33113
0
Janet(janet_wrap_false)(void) {
33114
0
    return janet_wrap_false();
33115
0
}
33116
0
Janet(janet_wrap_boolean)(int x) {
33117
0
    return janet_wrap_boolean(x);
33118
0
}
33119
0
Janet(janet_wrap_string)(const uint8_t *x) {
33120
0
    return janet_wrap_string(x);
33121
0
}
33122
0
Janet(janet_wrap_symbol)(const uint8_t *x) {
33123
0
    return janet_wrap_symbol(x);
33124
0
}
33125
0
Janet(janet_wrap_keyword)(const uint8_t *x) {
33126
0
    return janet_wrap_keyword(x);
33127
0
}
33128
0
Janet(janet_wrap_array)(JanetArray *x) {
33129
0
    return janet_wrap_array(x);
33130
0
}
33131
0
Janet(janet_wrap_tuple)(const Janet *x) {
33132
0
    return janet_wrap_tuple(x);
33133
0
}
33134
0
Janet(janet_wrap_struct)(const JanetKV *x) {
33135
0
    return janet_wrap_struct(x);
33136
0
}
33137
0
Janet(janet_wrap_fiber)(JanetFiber *x) {
33138
0
    return janet_wrap_fiber(x);
33139
0
}
33140
0
Janet(janet_wrap_buffer)(JanetBuffer *x) {
33141
0
    return janet_wrap_buffer(x);
33142
0
}
33143
0
Janet(janet_wrap_function)(JanetFunction *x) {
33144
0
    return janet_wrap_function(x);
33145
0
}
33146
0
Janet(janet_wrap_cfunction)(JanetCFunction x) {
33147
0
    return janet_wrap_cfunction(x);
33148
0
}
33149
0
Janet(janet_wrap_table)(JanetTable *x) {
33150
0
    return janet_wrap_table(x);
33151
0
}
33152
0
Janet(janet_wrap_abstract)(void *x) {
33153
0
    return janet_wrap_abstract(x);
33154
0
}
33155
0
Janet(janet_wrap_pointer)(void *x) {
33156
0
    return janet_wrap_pointer(x);
33157
0
}
33158
0
Janet(janet_wrap_integer)(int32_t x) {
33159
0
    return janet_wrap_integer(x);
33160
0
}
33161
#endif
33162
33163
#ifndef JANET_NANBOX_32
33164
0
double (janet_unwrap_number)(Janet x) {
33165
0
    return janet_unwrap_number(x);
33166
0
}
33167
#endif
33168
33169
#ifdef JANET_NANBOX_64
33170
0
Janet(janet_wrap_number)(double x) {
33171
0
    return janet_wrap_number(x);
33172
0
}
33173
#endif
33174
33175
/*****/
33176
33177
68.1k
void *janet_memalloc_empty(int32_t count) {
33178
68.1k
    int32_t i;
33179
68.1k
    void *mem = janet_malloc((size_t) count * sizeof(JanetKV));
33180
68.1k
    janet_vm.next_collection += (size_t) count * sizeof(JanetKV);
33181
68.1k
    if (NULL == mem) {
33182
0
        JANET_OUT_OF_MEMORY;
33183
0
    }
33184
68.1k
    JanetKV *mmem = (JanetKV *)mem;
33185
2.75M
    for (i = 0; i < count; i++) {
33186
2.68M
        JanetKV *kv = mmem + i;
33187
2.68M
        kv->key = janet_wrap_nil();
33188
2.68M
        kv->value = janet_wrap_nil();
33189
2.68M
    }
33190
68.1k
    return mem;
33191
68.1k
}
33192
33193
3.57M
void janet_memempty(JanetKV *mem, int32_t count) {
33194
3.57M
    int32_t i;
33195
15.6M
    for (i = 0; i < count; i++) {
33196
12.0M
        mem[i].key = janet_wrap_nil();
33197
12.0M
        mem[i].value = janet_wrap_nil();
33198
12.0M
    }
33199
3.57M
}
33200
33201
#ifdef JANET_NANBOX_64
33202
33203
0
Janet janet_wrap_number_safe(double d) {
33204
0
    Janet ret;
33205
0
    ret.number = isnan(d) ? NAN : d;
33206
0
    return ret;
33207
0
}
33208
33209
12.0M
void *janet_nanbox_to_pointer(Janet x) {
33210
12.0M
    x.i64 &= JANET_NANBOX_PAYLOADBITS;
33211
12.0M
    return x.pointer;
33212
12.0M
}
33213
33214
1.17M
Janet janet_nanbox_from_pointer(void *p, uint64_t tagmask) {
33215
1.17M
    Janet ret;
33216
1.17M
    ret.pointer = p;
33217
1.17M
    ret.u64 |= tagmask;
33218
1.17M
    return ret;
33219
1.17M
}
33220
33221
8.99M
Janet janet_nanbox_from_cpointer(const void *p, uint64_t tagmask) {
33222
8.99M
    Janet ret;
33223
8.99M
    ret.pointer = (void *)p;
33224
8.99M
    ret.u64 |= tagmask;
33225
8.99M
    return ret;
33226
8.99M
}
33227
33228
31.1k
Janet janet_nanbox_from_double(double d) {
33229
31.1k
    Janet ret;
33230
31.1k
    ret.number = d;
33231
31.1k
    return ret;
33232
31.1k
}
33233
33234
29.4M
Janet janet_nanbox_from_bits(uint64_t bits) {
33235
29.4M
    Janet ret;
33236
29.4M
    ret.u64 = bits;
33237
29.4M
    return ret;
33238
29.4M
}
33239
33240
#elif defined(JANET_NANBOX_32)
33241
33242
Janet janet_wrap_number(double x) {
33243
    Janet ret;
33244
    ret.number = x;
33245
    ret.tagged.type += JANET_DOUBLE_OFFSET;
33246
    return ret;
33247
}
33248
33249
Janet janet_wrap_number_safe(double d) {
33250
    double x = isnan(d) ? NAN : d;
33251
    return janet_wrap_number(x);
33252
}
33253
33254
Janet janet_nanbox32_from_tagi(uint32_t tag, int32_t integer) {
33255
    Janet ret;
33256
    ret.tagged.type = tag;
33257
    ret.tagged.payload.integer = integer;
33258
    return ret;
33259
}
33260
33261
Janet janet_nanbox32_from_tagp(uint32_t tag, void *pointer) {
33262
    Janet ret;
33263
    ret.tagged.type = tag;
33264
    ret.tagged.payload.pointer = pointer;
33265
    return ret;
33266
}
33267
33268
double janet_unwrap_number(Janet x) {
33269
    x.tagged.type -= JANET_DOUBLE_OFFSET;
33270
    return x.number;
33271
}
33272
33273
#else
33274
33275
Janet janet_wrap_number_safe(double d) {
33276
    return janet_wrap_number(d);
33277
}
33278
33279
Janet janet_wrap_nil(void) {
33280
    Janet y;
33281
    y.type = JANET_NIL;
33282
    y.as.u64 = 0;
33283
    return y;
33284
}
33285
33286
Janet janet_wrap_true(void) {
33287
    Janet y;
33288
    y.type = JANET_BOOLEAN;
33289
    y.as.u64 = 1;
33290
    return y;
33291
}
33292
33293
Janet janet_wrap_false(void) {
33294
    Janet y;
33295
    y.type = JANET_BOOLEAN;
33296
    y.as.u64 = 0;
33297
    return y;
33298
}
33299
33300
Janet janet_wrap_boolean(int x) {
33301
    Janet y;
33302
    y.type = JANET_BOOLEAN;
33303
    y.as.u64 = !!x;
33304
    return y;
33305
}
33306
33307
#define JANET_WRAP_DEFINE(NAME, TYPE, DTYPE, UM)\
33308
Janet janet_wrap_##NAME(TYPE x) {\
33309
    Janet y;\
33310
    y.type = DTYPE;\
33311
    y.as.u64 = 0; /* zero other bits in case of 32 bit integer */ \
33312
    y.as.UM = x;\
33313
    return y;\
33314
}
33315
33316
JANET_WRAP_DEFINE(number, double, JANET_NUMBER, number)
33317
JANET_WRAP_DEFINE(string, const uint8_t *, JANET_STRING, cpointer)
33318
JANET_WRAP_DEFINE(symbol, const uint8_t *, JANET_SYMBOL, cpointer)
33319
JANET_WRAP_DEFINE(keyword, const uint8_t *, JANET_KEYWORD, cpointer)
33320
JANET_WRAP_DEFINE(array, JanetArray *, JANET_ARRAY, pointer)
33321
JANET_WRAP_DEFINE(tuple, const Janet *, JANET_TUPLE, cpointer)
33322
JANET_WRAP_DEFINE(struct, const JanetKV *, JANET_STRUCT, cpointer)
33323
JANET_WRAP_DEFINE(fiber, JanetFiber *, JANET_FIBER, pointer)
33324
JANET_WRAP_DEFINE(buffer, JanetBuffer *, JANET_BUFFER, pointer)
33325
JANET_WRAP_DEFINE(function, JanetFunction *, JANET_FUNCTION, pointer)
33326
JANET_WRAP_DEFINE(cfunction, JanetCFunction, JANET_CFUNCTION, pointer)
33327
JANET_WRAP_DEFINE(table, JanetTable *, JANET_TABLE, pointer)
33328
JANET_WRAP_DEFINE(abstract, void *, JANET_ABSTRACT, pointer)
33329
JANET_WRAP_DEFINE(pointer, void *, JANET_POINTER, pointer)
33330
33331
#undef JANET_WRAP_DEFINE
33332
33333
#endif
33334
33335
33336
static const unsigned char janet_core_image_bytes[] = {
33337
  0xD3, 0x82, 0x7D, 0xCF, 0x08, 0x6F, 0x73, 0x2F, 0x63, 0x6C, 0x6F, 0x63, 0x6B, 0xD3, 0x03, 0xD0, 
33338
  0x0A, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2D, 0x6D, 0x61, 0x70, 0xD2, 0x03, 0x00, 0xCE, 0x0D, 
33339
  0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x6F, 0x73, 0x2E, 0x63, 0x85, 0x6F, 0x01, 
33340
  0xD0, 0x05, 0x76, 0x61, 0x6C, 0x75, 0x65, 0xD8, 0x08, 0x6F, 0x73, 0x2F, 0x63, 0x6C, 0x6F, 0x63, 
33341
  0x6B, 0xD0, 0x03, 0x64, 0x6F, 0x63, 0xCE, 0x82, 0x3E, 0x28, 0x6F, 0x73, 0x2F, 0x63, 0x6C, 0x6F, 
33342
  0x63, 0x6B, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x29, 0x0A, 
33343
  0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 
33344
  0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x77, 0x68, 0x6F, 0x6C, 0x65, 0x20, 0x2B, 0x20, 0x66, 0x72, 
33345
  0x61, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 
33346
  0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 
33347
  0x64, 0x20, 0x63, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2E, 0x0A, 
33348
  0x0A, 0x54, 0x68, 0x65, 0x20, 0x60, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x60, 0x20, 0x61, 0x72, 
33349
  0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x73, 0x20, 0x74, 
33350
  0x68, 0x65, 0x20, 0x63, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 
33351
  0x74, 0x6F, 0x20, 0x75, 0x73, 0x65, 0x2C, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x6E, 0x6F, 0x74, 
33352
  0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 
33353
  0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x60, 0x3A, 0x72, 0x65, 0x61, 0x6C, 
33354
  0x74, 0x69, 0x6D, 0x65, 0x60, 0x3A, 0x0A, 0x2D, 0x20, 0x3A, 0x72, 0x65, 0x61, 0x6C, 0x74, 0x69, 
33355
  0x6D, 0x65, 0x3A, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 
33356
  0x65, 0x61, 0x6C, 0x20, 0x28, 0x69, 0x2E, 0x65, 0x2E, 0x2C, 0x20, 0x77, 0x61, 0x6C, 0x6C, 0x2D, 
33357
  0x63, 0x6C, 0x6F, 0x63, 0x6B, 0x29, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x69, 
33358
  0x73, 0x20, 0x63, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x69, 0x73, 0x20, 0x61, 0x66, 0x66, 0x65, 0x63, 
33359
  0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x64, 0x69, 0x73, 0x63, 0x6F, 0x6E, 0x74, 0x69, 0x6E, 
33360
  0x75, 0x6F, 0x75, 0x73, 0x20, 0x20, 0x20, 0x6A, 0x75, 0x6D, 0x70, 0x73, 0x20, 0x69, 0x6E, 0x20, 
33361
  0x74, 0x68, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x0A, 
33362
  0x2D, 0x20, 0x3A, 0x6D, 0x6F, 0x6E, 0x6F, 0x74, 0x6F, 0x6E, 0x69, 0x63, 0x3A, 0x20, 0x52, 0x65, 
33363
  0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 
33364
  0x6F, 0x66, 0x20, 0x77, 0x68, 0x6F, 0x6C, 0x65, 0x20, 0x2B, 0x20, 0x66, 0x72, 0x61, 0x63, 0x74, 
33365
  0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x20, 0x73, 0x69, 
33366
  0x6E, 0x63, 0x65, 0x20, 0x73, 0x6F, 0x6D, 0x65, 0x20, 0x66, 0x69, 0x78, 0x65, 0x64, 0x20, 0x70, 
33367
  0x6F, 0x69, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x20, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x2E, 0x20, 
33368
  0x54, 0x68, 0x65, 0x20, 0x63, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x69, 0x73, 0x20, 0x67, 0x75, 0x61, 
33369
  0x72, 0x61, 0x6E, 0x74, 0x65, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x6E, 0x6F, 
33370
  0x6E, 0x2D, 0x64, 0x65, 0x63, 0x72, 0x65, 0x61, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x20, 
33371
  0x72, 0x65, 0x61, 0x6C, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x2E, 0x0A, 0x2D, 0x20, 0x3A, 0x63, 0x70, 
33372
  0x75, 0x74, 0x69, 0x6D, 0x65, 0x3A, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 
33373
  0x65, 0x20, 0x43, 0x50, 0x55, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x75, 
33374
  0x6D, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x63, 
33375
  0x65, 0x73, 0x73, 0x20, 0x20, 0x28, 0x69, 0x2E, 0x65, 0x2E, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x74, 
33376
  0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 
33377
  0x6F, 0x63, 0x65, 0x73, 0x73, 0x29, 0x0A, 0xCF, 0x08, 0x66, 0x66, 0x69, 0x2F, 0x72, 0x65, 0x61, 
33378
  0x64, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x0E, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 
33379
  0x72, 0x65, 0x2F, 0x66, 0x66, 0x69, 0x2E, 0x63, 0x85, 0x7E, 0x01, 0xDA, 0x06, 0xD8, 0x08, 0x66, 
33380
  0x66, 0x69, 0x2F, 0x72, 0x65, 0x61, 0x64, 0xDA, 0x08, 0xCE, 0x80, 0xE5, 0x28, 0x66, 0x66, 0x69, 
33381
  0x2F, 0x72, 0x65, 0x61, 0x64, 0x20, 0x66, 0x66, 0x69, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x20, 0x62, 
33382
  0x79, 0x74, 0x65, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 
33383
  0x29, 0x0A, 0x0A, 0x50, 0x61, 0x72, 0x73, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 
33384
  0x65, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x6F, 0x75, 0x74, 0x20, 0x6F, 0x66, 0x20, 
33385
  0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x6F, 0x6E, 
33386
  0x76, 0x65, 0x72, 0x74, 0x20, 0x69, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x6F, 0x72, 0x6D, 0x61, 
33387
  0x6C, 0x20, 0x4A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 
33388
  0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 
33389
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 
33390
  0x76, 0x65, 0x72, 0x73, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x66, 0x66, 0x69, 0x2F, 0x77, 0x72, 
33391
  0x69, 0x74, 0x65, 0x60, 0x2E, 0x20, 0x60, 0x62, 0x79, 0x74, 0x65, 0x73, 0x60, 0x20, 0x63, 0x61, 
33392
  0x6E, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x72, 0x61, 0x77, 0x20, 
33393
  0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x2C, 0x20, 0x61, 0x6C, 0x74, 0x68, 0x6F, 0x75, 0x67, 
33394
  0x68, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x75, 0x6E, 0x73, 0x61, 0x66, 0x65, 
33395
  0x2E, 0xCF, 0x09, 0x6E, 0x65, 0x74, 0x2F, 0x77, 0x72, 0x69, 0x74, 0x65, 0xD3, 0x03, 0xDA, 0x03, 
33396
  0xD2, 0x03, 0x00, 0xCE, 0x0E, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x6E, 0x65, 
33397
  0x74, 0x2E, 0x63, 0x83, 0x42, 0x01, 0xDA, 0x06, 0xD8, 0x09, 0x6E, 0x65, 0x74, 0x2F, 0x77, 0x72, 
33398
  0x69, 0x74, 0x65, 0xDA, 0x08, 0xCE, 0x80, 0xED, 0x28, 0x6E, 0x65, 0x74, 0x2F, 0x77, 0x72, 0x69, 
33399
  0x74, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x26, 
33400
  0x6F, 0x70, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x29, 0x0A, 0x0A, 0x57, 0x72, 
33401
  0x69, 0x74, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x73, 0x74, 
33402
  0x72, 0x65, 0x61, 0x6D, 0x2C, 0x20, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
33403
  0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 
33404
  0x65, 0x72, 0x20, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x72, 0x69, 
33405
  0x74, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x73, 0x2E, 0x20, 0x54, 0x61, 
33406
  0x6B, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 
33407
  0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 
33408
  0x64, 0x73, 0x2C, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 
33409
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 
33410
  0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2C, 0x20, 0x6F, 0x72, 
33411
  0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 
33412
  0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x66, 0x61, 
33413
  0x69, 0x6C, 0x65, 0x64, 0x2E, 0xCF, 0x0A, 0x68, 0x61, 0x73, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 
33414
  0x3F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x0A, 0x62, 0x6F, 0x6F, 0x74, 0x2E, 0x6A, 
33415
  0x61, 0x6E, 0x65, 0x74, 0x84, 0xB4, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
33416
  0x06, 0x02, 0x02, 0x02, 0x01, 0x06, 0x00, 0x03, 0xCE, 0x0A, 0x68, 0x61, 0x73, 0x2D, 0x76, 0x61, 
33417
  0x6C, 0x75, 0x65, 0x3F, 0xDA, 0x18, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x03, 0x02, 
33418
  0x03, 0x00, 0x10, 0x00, 0x06, 0xCE, 0x08, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x2D, 0x6F, 0x66, 0xDA, 
33419
  0x18, 0x00, 0x10, 0x00, 0xCF, 0x01, 0x78, 0x00, 0x10, 0x01, 0xCF, 0x03, 0x69, 0x6E, 0x64, 0x00, 
33420
  0x10, 0x02, 0xCF, 0x04, 0x64, 0x66, 0x6C, 0x74, 0x00, 0x10, 0x03, 0xCF, 0x08, 0x69, 0x6E, 0x64, 
33421
  0x65, 0x78, 0x2D, 0x6F, 0x66, 0x02, 0x10, 0x05, 0xCF, 0x01, 0x6B, 0x03, 0x10, 0x06, 0xCF, 0x03, 
33422
  0x72, 0x65, 0x74, 0x26, 0x05, 0x00, 0x00, 0x47, 0x04, 0x01, 0x05, 0x19, 0x05, 0x04, 0x00, 0x19, 
33423
  0x06, 0x02, 0x00, 0x26, 0x08, 0x00, 0x00, 0x48, 0x07, 0x08, 0x05, 0x1C, 0x07, 0x09, 0x00, 0x38, 
33424
  0x08, 0x01, 0x05, 0x23, 0x09, 0x08, 0x00, 0x1C, 0x09, 0x04, 0x00, 0x19, 0x06, 0x05, 0x00, 0x1A, 
33425
  0x04, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x05, 0x01, 0x05, 0x1A, 0xF6, 0xFF, 0xFF, 0x03, 
33426
  0x06, 0x00, 0x00, 0x84, 0x34, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x03, 0x01, 0x0A, 0x00, 0x0A, 
33427
  0x00, 0x03, 0x01, 0x0E, 0x00, 0x0B, 0x00, 0x05, 0x00, 0x1C, 0x00, 0x28, 0x00, 0x05, 0x01, 0x0C, 
33428
  0xBF, 0xFE, 0x03, 0xBF, 0xF9, 0x01, 0x00, 0x06, 0x00, 0xCF, 0x02, 0x64, 0x73, 0x00, 0x06, 0x01, 
33429
  0xCF, 0x05, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x00, 0x06, 0x02, 0xDA, 0x16, 0x30, 0x01, 0x00, 0x00, 
33430
  0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 0x26, 0x05, 0x00, 0x00, 0x48, 0x04, 0x05, 0x03, 
33431
  0x03, 0x04, 0x00, 0x00, 0x84, 0xB7, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x03, 0x00, 0x03, 0x00, 
33432
  0x03, 0xDA, 0x08, 0xCE, 0x80, 0x84, 0x28, 0x68, 0x61, 0x73, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 
33433
  0x3F, 0x20, 0x64, 0x73, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 
33434
  0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 
33435
  0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x60, 0x64, 0x73, 0x60, 0x20, 0x63, 0x6F, 0x6E, 0x74, 
33436
  0x61, 0x69, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x60, 
33437
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x60, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x75, 0x6E, 
33438
  0x20, 0x69, 0x6E, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x70, 0x6F, 0x72, 0x74, 
33439
  0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x7A, 
33440
  0x65, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x64, 0x73, 0x60, 0x2E, 0xCF, 0x06, 0x62, 0x79, 0x74, 0x65, 
33441
  0x73, 0x3F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x72, 0x01, 0xDA, 0x06, 0xD7, 
33442
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x01, 0x01, 0x01, 0x05, 0x16, 0x00, 0x03, 0xCE, 0x06, 
33443
  0x62, 0x79, 0x74, 0x65, 0x73, 0x3F, 0xDA, 0x18, 0xD8, 0x04, 0x74, 0x79, 0x70, 0x65, 0xD0, 0x06, 
33444
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0xD0, 0x06, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0xD0, 0x07, 
33445
  0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0xD0, 0x06, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 
33446
  0x16, 0x00, 0xDA, 0x1E, 0x00, 0x16, 0x01, 0xDA, 0x27, 0x03, 0x16, 0x03, 0xCF, 0x01, 0x74, 0x2F, 
33447
  0x00, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x19, 0x03, 0x02, 0x00, 0x2A, 
33448
  0x05, 0x01, 0x00, 0x23, 0x04, 0x03, 0x05, 0x1C, 0x04, 0x03, 0x00, 0x27, 0x05, 0x00, 0x00, 0x03, 
33449
  0x05, 0x00, 0x00, 0x2A, 0x06, 0x02, 0x00, 0x23, 0x05, 0x03, 0x06, 0x1C, 0x05, 0x03, 0x00, 0x27, 
33450
  0x06, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0x2A, 0x07, 0x03, 0x00, 0x23, 0x06, 0x03, 0x07, 0x1C, 
33451
  0x06, 0x03, 0x00, 0x27, 0x07, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, 0x2A, 0x08, 0x04, 0x00, 0x23, 
33452
  0x07, 0x03, 0x08, 0x03, 0x07, 0x00, 0x00, 0x73, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 
33453
  0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1A, 0x00, 
33454
  0x1A, 0x00, 0x1A, 0x00, 0x35, 0x00, 0x35, 0x00, 0x31, 0x00, 0x31, 0x00, 0x31, 0x00, 0x49, 0x00, 
33455
  0x49, 0x00, 0x49, 0xDA, 0x08, 0xCE, 0x3F, 0x28, 0x62, 0x79, 0x74, 0x65, 0x73, 0x3F, 0x20, 0x78, 
33456
  0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 
33457
  0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 
33458
  0x6C, 0x2C, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x62, 
33459
  0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xCF, 0x02, 0x2B, 0x3D, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 
33460
  0x00, 0xDA, 0x18, 0x80, 0x96, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 
33461
  0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x08, 0x00, 0x03, 0xCE, 0x02, 0x2B, 0x3D, 0xDA, 
33462
  0x18, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x09, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
33463
  0x00, 0x13, 0xCE, 0x01, 0x2B, 0x3D, 0x01, 0x00, 0x00, 0x24, 0x02, 0x01, 0x00, 0x1C, 0x02, 0x03, 
33464
  0x00, 0x29, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x24, 0x02, 0x01, 0x01, 0x1C, 0x02, 0x05, 
33465
  0x00, 0x29, 0x03, 0x00, 0x00, 0x3B, 0x04, 0x00, 0x00, 0x06, 0x03, 0x03, 0x04, 0x03, 0x03, 0x00, 
33466
  0x00, 0x3B, 0x03, 0x00, 0x00, 0x29, 0x05, 0x01, 0x00, 0x38, 0x04, 0x00, 0x05, 0x06, 0x03, 0x03, 
33467
  0x04, 0x05, 0x05, 0x05, 0x01, 0x23, 0x02, 0x05, 0x01, 0x1C, 0x02, 0xFC, 0xFF, 0x03, 0x03, 0x00, 
33468
  0x00, 0xCF, 0x03, 0x73, 0x65, 0x74, 0x00, 0x08, 0x00, 0xDA, 0x1E, 0x00, 0x08, 0x01, 0xCF, 0x02, 
33469
  0x6E, 0x73, 0x00, 0x08, 0x02, 0xDA, 0x33, 0x2A, 0x04, 0x00, 0x00, 0x30, 0x04, 0x00, 0x00, 0x32, 
33470
  0x01, 0x00, 0x00, 0x43, 0x03, 0x00, 0x00, 0x2A, 0x05, 0x01, 0x00, 0x31, 0x05, 0x00, 0x03, 0x43, 
33471
  0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x80, 0x96, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 
33472
  0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0xDA, 0x08, 0xCE, 0x27, 0x28, 0x2B, 0x3D, 0x20, 
33473
  0x78, 0x20, 0x26, 0x20, 0x6E, 0x73, 0x29, 0x0A, 0x0A, 0x49, 0x6E, 0x63, 0x72, 0x65, 0x6D, 0x65, 
33474
  0x6E, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x72, 0x20, 0x78, 0x20, 0x62, 0x79, 
33475
  0x20, 0x6E, 0x2E, 0xD0, 0x05, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0xCB, 0xCF, 0x0F, 0x65, 0x76, 0x2F, 
33476
  0x61, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x2D, 0x6C, 0x6F, 0x63, 0x6B, 0xD3, 0x03, 0xDA, 0x03, 
33477
  0xD2, 0x03, 0x00, 0xCE, 0x0D, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x65, 0x76, 
33478
  0x2E, 0x63, 0x8C, 0x73, 0x01, 0xDA, 0x06, 0xD8, 0x0F, 0x65, 0x76, 0x2F, 0x61, 0x63, 0x71, 0x75, 
33479
  0x69, 0x72, 0x65, 0x2D, 0x6C, 0x6F, 0x63, 0x6B, 0xDA, 0x08, 0xCE, 0x80, 0xFD, 0x28, 0x65, 0x76, 
33480
  0x2F, 0x61, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x2D, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x6C, 0x6F, 
33481
  0x63, 0x6B, 0x29, 0x0A, 0x0A, 0x41, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x20, 0x61, 0x20, 0x6C, 
33482
  0x6F, 0x63, 0x6B, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 
33483
  0x69, 0x73, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x79, 0x73, 
33484
  0x74, 0x65, 0x6D, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 
33485
  0x65, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x77, 0x69, 
33486
  0x74, 0x68, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x69, 
33487
  0x73, 0x20, 0x72, 0x65, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 
33488
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x74, 0x68, 0x69, 0x73, 
33489
  0x20, 0x65, 0x6E, 0x74, 0x69, 0x72, 0x65, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x75, 
33490
  0x6E, 0x74, 0x69, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x62, 0x65, 
33491
  0x63, 0x6F, 0x6D, 0x65, 0x73, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x2C, 
33492
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x79, 0x69, 
33493
  0x65, 0x6C, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x66, 0x69, 0x62, 
33494
  0x65, 0x72, 0x73, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, 0x79, 0x73, 0x74, 
33495
  0x65, 0x6D, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2E, 0xCF, 0x06, 0x61, 0x73, 0x73, 0x65, 
33496
  0x72, 0x74, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x80, 0x9C, 0x01, 0xDA, 0x06, 
33497
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x02, 0x01, 0x02, 0x07, 0x19, 0x00, 0x04, 0xCE, 
33498
  0x06, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0xDA, 0x18, 0xD8, 0x06, 0x67, 0x65, 0x6E, 0x73, 0x79, 
33499
  0x6D, 0xCF, 0x03, 0x64, 0x65, 0x66, 0xCE, 0x14, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x20, 0x66, 
33500
  0x61, 0x69, 0x6C, 0x75, 0x72, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x25, 0x6A, 0xD8, 0x0D, 0x73, 0x74, 
33501
  0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0x08, 
33502
  0x00, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0xCE, 0x05, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x01, 
33503
  0x00, 0x00, 0x00, 0xCF, 0x02, 0x69, 0x66, 0xCF, 0x02, 0x64, 0x6F, 0x00, 0x19, 0x00, 0xDA, 0x1E, 
33504
  0x00, 0x19, 0x01, 0xCF, 0x03, 0x65, 0x72, 0x72, 0x00, 0x19, 0x02, 0xDA, 0x44, 0x02, 0x19, 0x04, 
33505
  0xCF, 0x01, 0x76, 0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 0x19, 0x04, 0x03, 0x00, 0x2A, 
33506
  0x06, 0x01, 0x00, 0x31, 0x06, 0x04, 0x00, 0x43, 0x05, 0x00, 0x00, 0x1C, 0x01, 0x03, 0x00, 0x19, 
33507
  0x06, 0x01, 0x00, 0x1A, 0x06, 0x00, 0x00, 0x2A, 0x07, 0x02, 0x00, 0x30, 0x07, 0x00, 0x00, 0x2A, 
33508
  0x08, 0x03, 0x00, 0x33, 0x07, 0x08, 0x00, 0x19, 0x06, 0x07, 0x00, 0x2A, 0x08, 0x04, 0x00, 0x30, 
33509
  0x08, 0x06, 0x00, 0x43, 0x07, 0x00, 0x00, 0x2A, 0x08, 0x05, 0x00, 0x31, 0x08, 0x04, 0x04, 0x2F, 
33510
  0x07, 0x00, 0x00, 0x43, 0x06, 0x00, 0x00, 0x2A, 0x08, 0x06, 0x00, 0x31, 0x08, 0x05, 0x06, 0x43, 
33511
  0x07, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, 0x80, 0x9F, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x03, 
33512
  0x00, 0x03, 0x00, 0x03, 0x04, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 
33513
  0x00, 0x1D, 0x00, 0x11, 0xBF, 0xFC, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
33514
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x08, 0xCE, 0x5F, 0x28, 
33515
  0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x20, 0x78, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x65, 0x72, 
33516
  0x72, 0x29, 0x0A, 0x0A, 0x54, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 
33517
  0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x74, 
33518
  0x72, 0x75, 0x74, 0x68, 0x79, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 
33519
  0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x20, 0x60, 0x65, 0x72, 0x72, 0x60, 0x20, 0x69, 
33520
  0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2E, 0xDA, 0x3D, 
33521
  0xCB, 0xCF, 0x0C, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x76, 0x61, 0x6C, 0x75, 0x65, 0xD3, 
33522
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8A, 0xFC, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 
33523
  0x00, 0xDC, 0x00, 0x00, 0x0C, 0x03, 0x02, 0x03, 0x04, 0x1E, 0x00, 0x09, 0xCE, 0x0C, 0x6D, 0x6F, 
33524
  0x64, 0x75, 0x6C, 0x65, 0x2F, 0x76, 0x61, 0x6C, 0x75, 0x65, 0xDA, 0x18, 0xDA, 0x06, 0xD0, 0x03, 
33525
  0x72, 0x65, 0x66, 0xD0, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0xD7, 0x00, 0xCD, 0x00, 
33526
  0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x06, 0x61, 0x72, 0x72, 
33527
  0x61, 0x79, 0x3F, 0xDA, 0x18, 0xDA, 0x2C, 0xD0, 0x05, 0x61, 0x72, 0x72, 0x61, 0x79, 0x00, 0x06, 
33528
  0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xCF, 0x06, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3F, 0x2F, 0x00, 
33529
  0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x23, 0x03, 
33530
  0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x6F, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2C, 0x00, 0x2C, 
33531
  0x00, 0x2C, 0x00, 0x1E, 0x00, 0xCF, 0x06, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x00, 0x1E, 0x01, 
33532
  0xCF, 0x03, 0x73, 0x79, 0x6D, 0x00, 0x1E, 0x02, 0xCF, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 
33533
  0x65, 0x00, 0x1E, 0x03, 0xDA, 0x54, 0x01, 0x1E, 0x05, 0xCF, 0x05, 0x65, 0x6E, 0x74, 0x72, 0x79, 
33534
  0x05, 0x1D, 0x07, 0xDA, 0x52, 0x08, 0x1D, 0x08, 0xCF, 0x01, 0x72, 0x0B, 0x1D, 0x09, 0xCF, 0x01, 
33535
  0x70, 0x10, 0x18, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x59, 0x39, 0x04, 0x00, 
33536
  0x01, 0x19, 0x05, 0x04, 0x00, 0x1C, 0x05, 0x1B, 0x00, 0x2A, 0x07, 0x00, 0x00, 0x38, 0x06, 0x05, 
33537
  0x07, 0x19, 0x07, 0x06, 0x00, 0x2A, 0x08, 0x01, 0x00, 0x38, 0x06, 0x05, 0x08, 0x19, 0x08, 0x06, 
33538
  0x00, 0x2A, 0x09, 0x02, 0x00, 0x38, 0x06, 0x05, 0x09, 0x19, 0x09, 0x06, 0x00, 0x1C, 0x09, 0x05, 
33539
  0x00, 0x1C, 0x02, 0x02, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1A, 0x01, 0x00, 
33540
  0x00, 0x1C, 0x08, 0x06, 0x00, 0x2F, 0x08, 0x00, 0x00, 0x2A, 0x0B, 0x03, 0x00, 0x33, 0x0A, 0x0B, 
33541
  0x00, 0x19, 0x06, 0x0A, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x06, 0x08, 0x00, 0x1C, 0x06, 0x04, 
33542
  0x00, 0x29, 0x0B, 0x00, 0x00, 0x39, 0x0A, 0x08, 0x0B, 0x03, 0x0A, 0x00, 0x00, 0x03, 0x07, 0x00, 
33543
  0x00, 0x04, 0x00, 0x00, 0x00, 0x8B, 0x01, 0x0E, 0x00, 0x03, 0x01, 0x03, 0x01, 0x0D, 0x00, 0x0D, 
33544
  0x00, 0x05, 0x01, 0x0D, 0x00, 0x0D, 0xBF, 0xFF, 0x05, 0x02, 0x0D, 0x00, 0x0D, 0xBF, 0xFE, 0x05, 
33545
  0x03, 0x07, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x1D, 0x00, 0x07, 0x01, 0x0B, 0x00, 0x12, 0x00, 0x12, 
33546
  0x00, 0x12, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 
33547
  0xBF, 0xFF, 0x07, 0xBF, 0xFB, 0x03, 0xDA, 0x08, 0xCE, 0x80, 0xCF, 0x28, 0x6D, 0x6F, 0x64, 0x75, 
33548
  0x6C, 0x65, 0x2F, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 
33549
  0x73, 0x79, 0x6D, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 
33550
  0x29, 0x0A, 0x0A, 0x47, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x61, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 
33551
  0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2C, 0x20, 0x67, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 
33552
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x62, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 
33553
  0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x60, 0x73, 0x79, 0x6D, 0x60, 0x2E, 0x20, 
33554
  0x49, 0x66, 0x20, 0x60, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x60, 0x20, 0x69, 0x73, 0x0A, 
33555
  0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x61, 0x6C, 0x73, 
33556
  0x6F, 0x20, 0x72, 0x65, 0x73, 0x6F, 0x6C, 0x76, 0x65, 0x20, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 
33557
  0x65, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 
33558
  0x2E, 0x20, 0x49, 0x66, 0x20, 0x6E, 0x6F, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 
33559
  0x69, 0x73, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 
33560
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x0A, 0x6E, 0x69, 0x6C, 0x2E, 0xCF, 0x0D, 0x66, 0x66, 0x69, 0x2F, 
33561
  0x73, 0x69, 0x67, 0x6E, 0x61, 0x74, 0x75, 0x72, 0x65, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
33562
  0xDA, 0x0C, 0x83, 0x01, 0x01, 0xDA, 0x06, 0xD8, 0x0D, 0x66, 0x66, 0x69, 0x2F, 0x73, 0x69, 0x67, 
33563
  0x6E, 0x61, 0x74, 0x75, 0x72, 0x65, 0xDA, 0x08, 0xCE, 0x80, 0x96, 0x28, 0x66, 0x66, 0x69, 0x2F, 
33564
  0x73, 0x69, 0x67, 0x6E, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 
33565
  0x67, 0x2D, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x72, 0x65, 0x74, 
33566
  0x2D, 0x74, 0x79, 0x70, 0x65, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x2D, 0x74, 0x79, 0x70, 0x65, 
33567
  0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 
33568
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 
33569
  0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 
33570
  0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x6D, 0x61, 0x6B, 0x65, 0x20, 
33571
  0x63, 0x61, 0x6C, 0x6C, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x72, 0x61, 0x77, 0x20, 0x66, 
33572
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x73, 
33573
  0x2E, 0xCF, 0x09, 0x6E, 0x65, 0x74, 0x2F, 0x66, 0x6C, 0x75, 0x73, 0x68, 0xD3, 0x03, 0xDA, 0x03, 
33574
  0xD2, 0x03, 0x00, 0xDA, 0x12, 0x83, 0x6A, 0x01, 0xDA, 0x06, 0xD8, 0x09, 0x6E, 0x65, 0x74, 0x2F, 
33575
  0x66, 0x6C, 0x75, 0x73, 0x68, 0xDA, 0x08, 0xCE, 0x80, 0xB5, 0x28, 0x6E, 0x65, 0x74, 0x2F, 0x66, 
33576
  0x6C, 0x75, 0x73, 0x68, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x29, 0x0A, 0x0A, 0x4D, 0x61, 
33577
  0x6B, 0x65, 0x20, 0x73, 0x75, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x20, 0x73, 
33578
  0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x75, 0x66, 
33579
  0x66, 0x65, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2E, 
33580
  0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x74, 0x65, 0x6D, 0x70, 0x6F, 0x72, 0x61, 0x72, 0x69, 0x6C, 
33581
  0x79, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x20, 0x4E, 0x61, 0x67, 0x6C, 0x65, 
33582
  0x27, 0x73, 0x20, 0x61, 0x6C, 0x67, 0x6F, 0x72, 0x69, 0x74, 0x68, 0x6D, 0x2E, 0x20, 0x55, 0x73, 
33583
  0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x6D, 0x61, 0x6B, 0x65, 0x20, 0x73, 
33584
  0x75, 0x72, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x69, 0x73, 0x20, 0x73, 0x65, 0x6E, 0x74, 
33585
  0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x64, 0x65, 0x6C, 0x61, 0x79, 0x2E, 0x20, 
33586
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0xCF, 
33587
  0x03, 0x69, 0x6E, 0x63, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x80, 0x92, 0x01, 
33588
  0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x00, 0x02, 0x00, 
33589
  0x02, 0xCE, 0x03, 0x69, 0x6E, 0x63, 0xDA, 0x18, 0x00, 0x02, 0x00, 0xDA, 0x1E, 0x00, 0x02, 0x01, 
33590
  0xDA, 0x71, 0x05, 0x02, 0x00, 0x01, 0x03, 0x02, 0x00, 0x00, 0x80, 0x92, 0x20, 0x00, 0x20, 0xDA, 
33591
  0x08, 0xCE, 0x17, 0x28, 0x69, 0x6E, 0x63, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 
33592
  0x72, 0x6E, 0x73, 0x20, 0x78, 0x20, 0x2B, 0x20, 0x31, 0x2E, 0xCF, 0x06, 0x69, 0x66, 0x2D, 0x6C, 
33593
  0x65, 0x74, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x82, 0x97, 0x01, 0xDA, 0x06, 
33594
  0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x09, 0x03, 0x02, 0x03, 0x03, 0x14, 0x00, 0x01, 0x06, 
33595
  0xCE, 0x06, 0x69, 0x66, 0x2D, 0x6C, 0x65, 0x74, 0xDA, 0x18, 0xCE, 0x1B, 0x65, 0x78, 0x70, 0x65, 
33596
  0x63, 0x74, 0x65, 0x64, 0x20, 0x61, 0x74, 0x20, 0x6C, 0x65, 0x61, 0x73, 0x74, 0x20, 0x31, 0x20, 
33597
  0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 
33598
  0x01, 0x01, 0x00, 0x05, 0x00, 0x02, 0xCE, 0x04, 0x6F, 0x64, 0x64, 0x3F, 0xDA, 0x18, 0x00, 0x05, 
33599
  0x00, 0xDA, 0x1E, 0x00, 0x05, 0x01, 0xCF, 0x04, 0x6F, 0x64, 0x64, 0x3F, 0x29, 0x03, 0x02, 0x00, 
33600
  0x0C, 0x02, 0x00, 0x03, 0x29, 0x04, 0x01, 0x00, 0x23, 0x03, 0x04, 0x02, 0x03, 0x03, 0x00, 0x00, 
33601
  0x80, 0x82, 0x15, 0x00, 0x15, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0xCE, 0x23, 0x65, 0x78, 0x70, 
33602
  0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x20, 0x6E, 0x75, 
33603
  0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 
33604
  0x00, 0x14, 0x00, 0xCF, 0x08, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x00, 0x14, 0x01, 
33605
  0xCF, 0x03, 0x74, 0x72, 0x75, 0x00, 0x14, 0x02, 0xCF, 0x03, 0x66, 0x61, 0x6C, 0x00, 0x14, 0x03, 
33606
  0xDA, 0x77, 0x01, 0x14, 0x05, 0xCF, 0x03, 0x6C, 0x65, 0x6E, 0x10, 0x14, 0x07, 0xCF, 0x03, 0x61, 
33607
  0x75, 0x78, 0x3D, 0x04, 0x00, 0x00, 0x19, 0x05, 0x04, 0x00, 0x29, 0x07, 0x00, 0x00, 0x23, 0x06, 
33608
  0x07, 0x05, 0x1C, 0x06, 0x04, 0x00, 0x2A, 0x07, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x1A, 0x01, 
33609
  0x00, 0x00, 0x2F, 0x05, 0x00, 0x00, 0x2A, 0x07, 0x01, 0x00, 0x33, 0x06, 0x07, 0x00, 0x1C, 0x06, 
33610
  0x04, 0x00, 0x2A, 0x07, 0x02, 0x00, 0x01, 0x07, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x2E, 0x06, 
33611
  0x00, 0x00, 0x19, 0x07, 0x06, 0x00, 0x29, 0x08, 0x00, 0x00, 0x2F, 0x08, 0x00, 0x00, 0x34, 0x07, 
33612
  0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x06, 0x46, 0x01, 0x0B, 0xCE, 
33613
  0x03, 0x61, 0x75, 0x78, 0xDA, 0x18, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 
33614
  0x01, 0x03, 0x08, 0x00, 0x02, 0xCE, 0x0B, 0x69, 0x64, 0x65, 0x6D, 0x70, 0x6F, 0x74, 0x65, 0x6E, 
33615
  0x74, 0x3F, 0xDA, 0x18, 0xDA, 0x2C, 0xD5, 0x06, 0xDA, 0x30, 0xCB, 0xDA, 0x5D, 0xCB, 0xD0, 0x06, 
33616
  0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0xCB, 0xDA, 0x2E, 0xCB, 0xD0, 0x05, 0x74, 0x61, 0x62, 0x6C, 
33617
  0x65, 0xCB, 0xD0, 0x05, 0x74, 0x75, 0x70, 0x6C, 0x65, 0xCB, 0xD8, 0x03, 0x6E, 0x6F, 0x74, 0x00, 
33618
  0x08, 0x00, 0xDA, 0x1E, 0x00, 0x08, 0x01, 0xCF, 0x0B, 0x69, 0x64, 0x65, 0x6D, 0x70, 0x6F, 0x74, 
33619
  0x65, 0x6E, 0x74, 0x3F, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 
33620
  0x2A, 0x04, 0x01, 0x00, 0x38, 0x03, 0x04, 0x02, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x02, 0x02, 0x00, 
33621
  0x34, 0x02, 0x00, 0x00, 0x80, 0x8F, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x08, 0x00, 0x08, 0x00, 
33622
  0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x49, 0xDA, 0x4A, 0xD8, 0x05, 0x74, 0x75, 0x70, 0x6C, 0x65, 
33623
  0xDA, 0x4F, 0xDA, 0x50, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 0x81, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
33624
  0x80, 0x82, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x80, 0x83, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x77, 0xBF, 
33625
  0xFF, 0x00, 0x05, 0xDA, 0x80, 0x84, 0x00, 0x46, 0x00, 0xCF, 0x01, 0x69, 0x00, 0x46, 0x01, 0xDA, 
33626
  0x80, 0x85, 0x08, 0x46, 0x04, 0xCF, 0x02, 0x62, 0x6C, 0x0D, 0x46, 0x03, 0xCF, 0x02, 0x62, 0x72, 
33627
  0x11, 0x46, 0x06, 0xCF, 0x03, 0x61, 0x74, 0x6D, 0x18, 0x46, 0x07, 0xDA, 0x60, 0x2C, 0x01, 0x00, 
33628
  0x00, 0x2B, 0x03, 0x00, 0x05, 0x45, 0x02, 0x00, 0x03, 0x1C, 0x02, 0x03, 0x00, 0x2B, 0x03, 0x00, 
33629
  0x01, 0x03, 0x03, 0x00, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x38, 0x03, 0x04, 0x00, 0x19, 0x04, 0x03, 
33630
  0x00, 0x29, 0x05, 0x01, 0x00, 0x06, 0x03, 0x05, 0x00, 0x2B, 0x06, 0x00, 0x00, 0x38, 0x05, 0x06, 
33631
  0x03, 0x19, 0x03, 0x05, 0x00, 0x2F, 0x04, 0x00, 0x00, 0x2A, 0x06, 0x00, 0x00, 0x33, 0x05, 0x06, 
33632
  0x00, 0x19, 0x06, 0x05, 0x00, 0x1C, 0x06, 0x03, 0x00, 0x19, 0x05, 0x04, 0x00, 0x1A, 0x04, 0x00, 
33633
  0x00, 0x2A, 0x08, 0x01, 0x00, 0x33, 0x07, 0x08, 0x00, 0x19, 0x05, 0x07, 0x00, 0x19, 0x07, 0x05, 
33634
  0x00, 0x1C, 0x06, 0x13, 0x00, 0x2A, 0x05, 0x02, 0x00, 0x31, 0x05, 0x07, 0x03, 0x2A, 0x08, 0x03, 
33635
  0x00, 0x33, 0x05, 0x08, 0x00, 0x29, 0x09, 0x02, 0x00, 0x06, 0x08, 0x09, 0x00, 0x2F, 0x08, 0x00, 
33636
  0x00, 0x33, 0x09, 0x01, 0x00, 0x2A, 0x08, 0x04, 0x00, 0x31, 0x08, 0x07, 0x09, 0x2B, 0x08, 0x00, 
33637
  0x02, 0x2F, 0x08, 0x00, 0x00, 0x2A, 0x0A, 0x03, 0x00, 0x33, 0x08, 0x0A, 0x00, 0x2A, 0x09, 0x05, 
33638
  0x00, 0x31, 0x09, 0x05, 0x08, 0x2A, 0x09, 0x03, 0x00, 0x34, 0x09, 0x00, 0x00, 0x2A, 0x05, 0x02, 
33639
  0x00, 0x31, 0x05, 0x07, 0x03, 0x2A, 0x08, 0x03, 0x00, 0x33, 0x05, 0x08, 0x00, 0x2A, 0x08, 0x02, 
33640
  0x00, 0x31, 0x08, 0x04, 0x07, 0x2A, 0x09, 0x03, 0x00, 0x33, 0x08, 0x09, 0x00, 0x29, 0x0A, 0x02, 
33641
  0x00, 0x06, 0x09, 0x0A, 0x00, 0x2F, 0x09, 0x00, 0x00, 0x33, 0x0A, 0x01, 0x00, 0x2A, 0x09, 0x05, 
33642
  0x00, 0x31, 0x09, 0x08, 0x0A, 0x2A, 0x0B, 0x03, 0x00, 0x33, 0x09, 0x0B, 0x00, 0x2A, 0x08, 0x04, 
33643
  0x00, 0x31, 0x08, 0x07, 0x09, 0x2B, 0x08, 0x00, 0x02, 0x2F, 0x08, 0x00, 0x00, 0x2A, 0x0A, 0x03, 
33644
  0x00, 0x33, 0x08, 0x0A, 0x00, 0x2A, 0x09, 0x05, 0x00, 0x31, 0x09, 0x05, 0x08, 0x2A, 0x09, 0x03, 
33645
  0x00, 0x34, 0x09, 0x00, 0x00, 0xBF, 0xFF, 0x82, 0x9F, 0x03, 0x01, 0x09, 0x00, 0x09, 0x00, 0x05, 
33646
  0x00, 0x05, 0x00, 0x05, 0x03, 0x11, 0x00, 0x11, 0x00, 0x09, 0x01, 0x1E, 0x00, 0x1E, 0x00, 0x11, 
33647
  0x00, 0x11, 0x00, 0x09, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x09, 0x01, 0x12, 0x00, 0x12, 
33648
  0x00, 0x12, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x12, 0x00, 0x09, 0x01, 0x09, 0x03, 0x12, 0x00, 0x12, 
33649
  0x00, 0x12, 0x00, 0x12, 0x01, 0x26, 0x00, 0x26, 0x00, 0x21, 0x00, 0x21, 0x00, 0x12, 0x00, 0x12, 
33650
  0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFE, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
33651
  0x0B, 0x05, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x03, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 
33652
  0x20, 0x01, 0x25, 0x00, 0x25, 0x00, 0x20, 0x00, 0x20, 0xBF, 0xFE, 0x19, 0x00, 0x19, 0x00, 0x19, 
33653
  0x00, 0x19, 0xBF, 0xFF, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 
33654
  0xFE, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x82, 0x9C, 0x0C, 0x00, 0x03, 0x01, 0x07, 0x00, 
33655
  0x07, 0x00, 0x03, 0x00, 0x11, 0x00, 0x11, 0x00, 0x03, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
33656
  0x03, 0x00, 0x12, 0x00, 0x12, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x15, 0x03, 0x00, 0x03, 0x00, 
33657
  0x03, 0x27, 0x00, 0x00, 0x00, 0xDA, 0x08, 0xCE, 0x80, 0xCB, 0x28, 0x69, 0x66, 0x2D, 0x6C, 0x65, 
33658
  0x74, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x74, 0x72, 0x75, 0x20, 0x26, 
33659
  0x6F, 0x70, 0x74, 0x20, 0x66, 0x61, 0x6C, 0x29, 0x0A, 0x0A, 0x4D, 0x61, 0x6B, 0x65, 0x20, 0x6D, 
33660
  0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 
33661
  0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x61, 0x72, 0x65, 
33662
  0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 0x0A, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 
33663
  0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x74, 0x72, 0x75, 0x60, 0x20, 0x66, 0x6F, 0x72, 0x6D, 
33664
  0x2E, 0x20, 0x49, 0x66, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x61, 0x72, 0x65, 0x20, 0x66, 0x61, 0x6C, 
33665
  0x73, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x69, 0x6C, 0x2C, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 
33666
  0x61, 0x74, 0x65, 0x0A, 0x74, 0x68, 0x65, 0x20, 0x60, 0x66, 0x61, 0x6C, 0x60, 0x20, 0x66, 0x6F, 
33667
  0x72, 0x6D, 0x2E, 0x20, 0x42, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x68, 0x61, 0x76, 
33668
  0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x73, 0x79, 0x6E, 0x74, 0x61, 
33669
  0x78, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x6C, 0x65, 0x74, 0x60, 0x20, 0x6D, 
33670
  0x61, 0x63, 0x72, 0x6F, 0x2E, 0xDA, 0x3D, 0xCB, 0xCF, 0x06, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 
33671
  0xD3, 0x02, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x20, 0x02, 0x02, 0x02, 0x02, 0x00, 
33672
  0x02, 0xCE, 0x06, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x4A, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 
33673
  0x00, 0xDA, 0x08, 0xCE, 0x80, 0x9C, 0x28, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x20, 0x66, 0x69, 
33674
  0x62, 0x65, 0x72, 0x20, 0x65, 0x72, 0x72, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x73, 0x75, 0x6D, 0x65, 
33675
  0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x62, 0x75, 0x74, 0x20, 0x68, 0x61, 0x76, 
33676
  0x65, 0x20, 0x69, 0x74, 0x20, 0x69, 0x6D, 0x6D, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x6C, 0x79, 
33677
  0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 
33678
  0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x6C, 0x65, 0x74, 0x73, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6F, 
33679
  0x67, 0x72, 0x61, 0x6D, 0x6D, 0x65, 0x72, 0x20, 0x75, 0x6E, 0x77, 0x69, 0x6E, 0x64, 0x20, 0x61, 
33680
  0x20, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 
33681
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 
33682
  0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x61, 0x73, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 
33683
  0x65, 0x2E, 0xCF, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
33684
  0x03, 0x00, 0xCE, 0x12, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x63, 0x6F, 0x6D, 
33685
  0x70, 0x69, 0x6C, 0x65, 0x2E, 0x63, 0x84, 0x3A, 0x01, 0xDA, 0x06, 0xD8, 0x07, 0x63, 0x6F, 0x6D, 
33686
  0x70, 0x69, 0x6C, 0x65, 0xDA, 0x08, 0xCE, 0x81, 0xB9, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 
33687
  0x65, 0x20, 0x61, 0x73, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x20, 0x73, 
33688
  0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x6C, 0x69, 0x6E, 0x74, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x6F, 
33689
  0x6D, 0x70, 0x69, 0x6C, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x41, 0x62, 0x73, 0x74, 0x72, 0x61, 
33690
  0x63, 0x74, 0x20, 0x53, 0x79, 0x6E, 0x74, 0x61, 0x78, 0x20, 0x54, 0x72, 0x65, 0x65, 0x20, 0x28, 
33691
  0x61, 0x73, 0x74, 0x29, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 
33692
  0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x50, 0x61, 0x69, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 
33693
  0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
33694
  0x77, 0x69, 0x74, 0x68, 0x20, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x75, 0x6E, 
33695
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x69, 0x74, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6D, 
33696
  0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x2E, 0x20, 0x52, 0x65, 
33697
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x66, 0x75, 0x6E, 0x63, 
33698
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 
33699
  0x74, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x79, 0x20, 0x61, 0x73, 0x74, 0x2E, 0x20, 0x52, 0x65, 
33700
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x73, 
33701
  0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 
33702
  0x3A, 0x6C, 0x69, 0x6E, 0x65, 0x2C, 0x20, 0x3A, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x2C, 0x20, 
33703
  0x61, 0x6E, 0x64, 0x20, 0x3A, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6F, 
33704
  0x6D, 0x70, 0x69, 0x6C, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x73, 0x2E, 
33705
  0x20, 0x49, 0x66, 0x20, 0x61, 0x20, 0x60, 0x6C, 0x69, 0x6E, 0x74, 0x73, 0x60, 0x20, 0x61, 0x72, 
33706
  0x72, 0x61, 0x79, 0x20, 0x69, 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x2C, 0x20, 0x6C, 0x69, 
33707
  0x6E, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x20, 0x77, 
33708
  0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x20, 
33709
  0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x20, 0x45, 0x61, 
33710
  0x63, 0x68, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
33711
  0x62, 0x65, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 
33712
  0x65, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x60, 0x28, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x6C, 
33713
  0x69, 0x6E, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x29, 
33714
  0x60, 0x2E, 0xCF, 0x12, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2D, 
33715
  0x75, 0x6E, 0x70, 0x61, 0x63, 0x6B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x12, 0x82, 
33716
  0xEB, 0x01, 0xDA, 0x06, 0xD8, 0x12, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 
33717
  0x73, 0x2D, 0x75, 0x6E, 0x70, 0x61, 0x63, 0x6B, 0xDA, 0x08, 0xCE, 0x80, 0xA4, 0x28, 0x6E, 0x65, 
33718
  0x74, 0x2F, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2D, 0x75, 0x6E, 0x70, 0x61, 0x63, 0x6B, 
33719
  0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x29, 0x0A, 0x0A, 0x47, 0x69, 0x76, 0x65, 0x6E, 
33720
  0x20, 0x61, 0x6E, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x72, 0x65, 0x74, 0x75, 
33721
  0x72, 0x6E, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x64, 0x64, 0x72, 
33722
  0x65, 0x73, 0x73, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 0x20, 0x68, 0x6F, 
33723
  0x73, 0x74, 0x2C, 0x20, 0x70, 0x6F, 0x72, 0x74, 0x20, 0x70, 0x61, 0x69, 0x72, 0x2E, 0x20, 0x55, 
33724
  0x6E, 0x69, 0x78, 0x20, 0x64, 0x6F, 0x6D, 0x61, 0x69, 0x6E, 0x20, 0x73, 0x6F, 0x63, 0x6B, 0x65, 
33725
  0x74, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x6F, 0x6E, 0x6C, 
33726
  0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 
33727
  0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 
33728
  0x2E, 0xCF, 0x06, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x66, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
33729
  0xDA, 0x18, 0x80, 0xA6, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x05, 0x01, 
33730
  0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x06, 0x00, 0x03, 0xCE, 0x06, 0x65, 0x72, 0x72, 0x6F, 
33731
  0x72, 0x66, 0xDA, 0x18, 0xDA, 0x4C, 0x00, 0x06, 0x00, 0xCF, 0x03, 0x66, 0x6D, 0x74, 0x00, 0x06, 
33732
  0x01, 0xCF, 0x04, 0x61, 0x72, 0x67, 0x73, 0x00, 0x06, 0x02, 0xDA, 0x80, 0xA5, 0x2F, 0x00, 0x00, 
33733
  0x00, 0x32, 0x01, 0x00, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 0x01, 0x03, 0x00, 
33734
  0x00, 0x04, 0x00, 0x00, 0x00, 0x80, 0xA9, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 
33735
  0x00, 0x03, 0xDA, 0x08, 0xCE, 0x75, 0x28, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x66, 0x20, 0x66, 0x6D, 
33736
  0x74, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x41, 0x20, 0x63, 0x6F, 0x6D, 
33737
  0x62, 0x69, 0x6E, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x65, 0x72, 0x72, 
33738
  0x6F, 0x72, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 
33739
  0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x60, 0x2E, 0x20, 0x45, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6C, 
33740
  0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x28, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x28, 
33741
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x66, 0x6D, 
33742
  0x74, 0x20, 0x3B, 0x61, 0x72, 0x67, 0x73, 0x29, 0x29, 0x60, 0x2E, 0xCF, 0x04, 0x72, 0x65, 0x70, 
33743
  0x6C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8E, 0x0E, 0x01, 0xDA, 0x06, 0xD7, 
33744
  0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x0D, 0x05, 0x00, 0x05, 0x0A, 0x29, 0x00, 0x01, 0x09, 0xCE, 
33745
  0x04, 0x72, 0x65, 0x70, 0x6C, 0xDA, 0x18, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x01, 
33746
  0x00, 0x01, 0x02, 0x0B, 0x00, 0x04, 0xCE, 0x08, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x65, 0x6E, 0x76, 
33747
  0xDA, 0x18, 0xDA, 0x00, 0xD8, 0x0E, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x73, 0x65, 0x74, 0x70, 
33748
  0x72, 0x6F, 0x74, 0x6F, 0x00, 0x0B, 0x00, 0xCF, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x00, 
33749
  0x0B, 0x01, 0xCF, 0x08, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x65, 0x6E, 0x76, 0x04, 0x0B, 0x03, 0xDA, 
33750
  0x80, 0xB5, 0x09, 0x0B, 0x04, 0xCF, 0x06, 0x6E, 0x65, 0x77, 0x65, 0x6E, 0x76, 0x1C, 0x00, 0x03, 
33751
  0x00, 0x19, 0x02, 0x00, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x2A, 0x02, 0x00, 0x00, 0x19, 0x03, 0x02, 
33752
  0x00, 0x42, 0x04, 0x00, 0x00, 0x30, 0x04, 0x03, 0x00, 0x2A, 0x06, 0x01, 0x00, 0x33, 0x05, 0x06, 
33753
  0x00, 0x19, 0x04, 0x05, 0x00, 0x03, 0x04, 0x00, 0x00, 0x89, 0x23, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
33754
  0x00, 0x0F, 0x00, 0x03, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0xBF, 0xFA, 
33755
  0x01, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x07, 0x03, 0x01, 0x03, 0x00, 0x09, 0x00, 0x01, 
33756
  0x05, 0xCE, 0x12, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x72, 0x2D, 0x6F, 0x6E, 0x2D, 0x73, 
33757
  0x74, 0x61, 0x74, 0x75, 0x73, 0xDA, 0x18, 0x00, 0x09, 0x00, 0xCF, 0x03, 0x65, 0x6E, 0x76, 0x00, 
33758
  0x09, 0x01, 0xCF, 0x05, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x00, 0x09, 0x02, 0xCF, 0x07, 0x69, 0x73, 
33759
  0x2D, 0x72, 0x65, 0x70, 0x6C, 0x00, 0x09, 0x03, 0xCF, 0x12, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 
33760
  0x65, 0x72, 0x2D, 0x6F, 0x6E, 0x2D, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x06, 0x09, 0x05, 0xDA, 
33761
  0x80, 0xBB, 0x26, 0x06, 0x00, 0x00, 0x23, 0x05, 0x06, 0x01, 0x1C, 0x05, 0x03, 0x00, 0x29, 0x04, 
33762
  0x01, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x04, 0x01, 0x00, 0x19, 0x05, 0x04, 0x00, 0x2E, 0x06, 
33763
  0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x08, 0x02, 0x02, 0x02, 0x0D, 
33764
  0x29, 0x01, 0x08, 0xDA, 0x18, 0xD8, 0x0C, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x73, 0x74, 0x61, 
33765
  0x74, 0x75, 0x73, 0xD0, 0x04, 0x64, 0x65, 0x61, 0x64, 0xDA, 0x06, 0xCF, 0x01, 0x5F, 0xD0, 0x0D, 
33766
  0x70, 0x72, 0x65, 0x74, 0x74, 0x79, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0xCE, 0x02, 0x25, 
33767
  0x71, 0xD8, 0x06, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0xD8, 0x05, 0x66, 0x6C, 0x75, 0x73, 0x68, 
33768
  0xCE, 0x00, 0xD8, 0x10, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x74, 
33769
  0x72, 0x61, 0x63, 0x65, 0xD8, 0x06, 0x65, 0x66, 0x6C, 0x75, 0x73, 0x68, 0xD0, 0x05, 0x64, 0x65, 
33770
  0x62, 0x75, 0x67, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x10, 0x02, 0x01, 0x02, 0x14, 0x3E, 
33771
  0x00, 0x01, 0x06, 0xCE, 0x08, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x72, 0xDA, 0x18, 0xD8, 
33772
  0x0C, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x67, 0x65, 0x74, 0x65, 0x6E, 0x76, 0xDA, 0x80, 0xB2, 
33773
  0xD0, 0x05, 0x66, 0x69, 0x62, 0x65, 0x72, 0xD0, 0x0B, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2D, 0x6C, 
33774
  0x65, 0x76, 0x65, 0x6C, 0xD8, 0x10, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6C, 0x61, 0x73, 0x74, 
33775
  0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 0xD0, 0x06, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0xD3, 0x13, 
33776
  0xCF, 0x09, 0x2E, 0x62, 0x79, 0x74, 0x65, 0x63, 0x6F, 0x64, 0x65, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
33777
  0x03, 0x00, 0xDA, 0x18, 0x8D, 0x9F, 0x03, 0xDA, 0x06, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
33778
  0x04, 0x01, 0x00, 0x01, 0x01, 0x06, 0x01, 0x03, 0xCE, 0x09, 0x2E, 0x62, 0x79, 0x74, 0x65, 0x63, 
33779
  0x6F, 0x64, 0x65, 0xDA, 0x18, 0xD0, 0x08, 0x62, 0x79, 0x74, 0x65, 0x63, 0x6F, 0x64, 0x65, 0xBF, 
33780
  0xFF, 0x00, 0x01, 0xCF, 0x07, 0x2E, 0x64, 0x69, 0x73, 0x61, 0x73, 0x6D, 0x00, 0x06, 0x00, 0xCF, 
33781
  0x01, 0x6E, 0x00, 0x06, 0x01, 0xDA, 0x80, 0xD1, 0x2F, 0x00, 0x00, 0x00, 0x2B, 0x03, 0x00, 0x01, 
33782
  0x33, 0x02, 0x03, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x34, 0x02, 0x00, 0x00, 
33783
  0xBF, 0xFF, 0x8D, 0xA2, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
33784
  0x07, 0xC9, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x01, 0x00, 0x01, 0x03, 0x0B, 0x00, 
33785
  0x04, 0xCE, 0x07, 0x2E, 0x64, 0x69, 0x73, 0x61, 0x73, 0x6D, 0xDA, 0x18, 0xD7, 0x00, 0xCD, 0x00, 
33786
  0xDC, 0x00, 0x00, 0x06, 0x01, 0x00, 0x01, 0x02, 0x0C, 0x00, 0x04, 0xCE, 0x06, 0x2E, 0x66, 0x72, 
33787
  0x61, 0x6D, 0x65, 0xDA, 0x18, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 
33788
  0x02, 0x04, 0x00, 0x01, 0xCE, 0x06, 0x2E, 0x66, 0x69, 0x62, 0x65, 0x72, 0xDA, 0x18, 0xDA, 0x80, 
33789
  0xCC, 0xD8, 0x03, 0x64, 0x79, 0x6E, 0x00, 0x04, 0x00, 0xCF, 0x06, 0x2E, 0x66, 0x69, 0x62, 0x65, 
33790
  0x72, 0x2A, 0x01, 0x00, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x2A, 0x01, 0x01, 0x00, 0x34, 0x01, 0x00, 
33791
  0x00, 0x8D, 0x6D, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xD8, 0x0B, 0x64, 0x65, 0x62, 0x75, 
33792
  0x67, 0x2F, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x00, 0x0C, 0x00, 0xDA, 0x80, 0xD8, 0x00, 0x0C, 0x01, 
33793
  0xCF, 0x06, 0x2E, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x05, 0x0C, 0x02, 0xCF, 0x05, 0x73, 0x74, 0x61, 
33794
  0x63, 0x6B, 0x05, 0x0A, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x54, 0x2A, 0x03, 
33795
  0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x2F, 0x02, 0x00, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x33, 0x03, 
33796
  0x04, 0x00, 0x19, 0x02, 0x03, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x19, 0x04, 0x00, 0x00, 0x1A, 0x02, 
33797
  0x00, 0x00, 0x29, 0x04, 0x00, 0x00, 0x38, 0x05, 0x02, 0x04, 0x03, 0x05, 0x00, 0x00, 0x8D, 0x7E, 
33798
  0x1B, 0x00, 0x1B, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x0D, 0x00, 0x0D, 0x00, 
33799
  0x0D, 0x00, 0x0D, 0x00, 0x03, 0x00, 0x03, 0xD0, 0x08, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
33800
  0x6E, 0xD8, 0x06, 0x64, 0x69, 0x73, 0x61, 0x73, 0x6D, 0x00, 0x0B, 0x00, 0xDA, 0x80, 0xD8, 0x00, 
33801
  0x0B, 0x01, 0xDA, 0x80, 0xD7, 0x03, 0x0B, 0x03, 0xCF, 0x05, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x07, 
33802
  0x0B, 0x05, 0xCF, 0x04, 0x66, 0x75, 0x6E, 0x63, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 
33803
  0x33, 0x02, 0x03, 0x00, 0x19, 0x03, 0x02, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x2F, 0x04, 0x00, 0x00, 
33804
  0x33, 0x04, 0x03, 0x00, 0x19, 0x05, 0x04, 0x00, 0x2F, 0x05, 0x00, 0x00, 0x2A, 0x06, 0x02, 0x00, 
33805
  0x34, 0x06, 0x00, 0x00, 0x8D, 0x9B, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x0F, 0x00, 
33806
  0x0F, 0x00, 0x0F, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDA, 0x80, 0xD4, 0xC9, 0xC9, 
33807
  0xC9, 0xC9, 0xDA, 0x08, 0xCE, 0x3E, 0x28, 0x2E, 0x62, 0x79, 0x74, 0x65, 0x63, 0x6F, 0x64, 0x65, 
33808
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 
33809
  0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 
33810
  0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 
33811
  0x69, 0x6F, 0x6E, 0x2E, 0xCF, 0x07, 0x2E, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0xD3, 0x03, 0xDA, 
33812
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8D, 0xD5, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
33813
  0x00, 0x00, 0x0A, 0x01, 0x00, 0x01, 0x05, 0x11, 0x00, 0x05, 0xCE, 0x07, 0x2E, 0x73, 0x6F, 0x75, 
33814
  0x72, 0x63, 0x65, 0xDA, 0x18, 0xDA, 0x80, 0xDB, 0xD0, 0x06, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 
33815
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x01, 0x01, 0x01, 0x07, 0x15, 0x00, 0x04, 0xCE, 
33816
  0x05, 0x73, 0x6C, 0x75, 0x72, 0x70, 0xDA, 0x18, 0xD0, 0x02, 0x72, 0x62, 0xD8, 0x09, 0x66, 0x69, 
33817
  0x6C, 0x65, 0x2F, 0x6F, 0x70, 0x65, 0x6E, 0xCE, 0x14, 0x63, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x6E, 
33818
  0x6F, 0x74, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0xD8, 0x06, 0x73, 
33819
  0x74, 0x72, 0x69, 0x6E, 0x67, 0xD0, 0x03, 0x61, 0x6C, 0x6C, 0xD8, 0x09, 0x66, 0x69, 0x6C, 0x65, 
33820
  0x2F, 0x72, 0x65, 0x61, 0x64, 0xD8, 0x0A, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x63, 0x6C, 0x6F, 0x73, 
33821
  0x65, 0x00, 0x15, 0x00, 0xCF, 0x04, 0x70, 0x61, 0x74, 0x68, 0x00, 0x15, 0x01, 0xCF, 0x05, 0x73, 
33822
  0x6C, 0x75, 0x72, 0x70, 0x04, 0x15, 0x03, 0xCF, 0x01, 0x66, 0x10, 0x15, 0x05, 0xCF, 0x08, 0x63, 
33823
  0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x73, 0x2A, 0x02, 0x00, 0x00, 0x30, 0x00, 0x02, 0x00, 0x2A, 
33824
  0x03, 0x01, 0x00, 0x33, 0x02, 0x03, 0x00, 0x19, 0x03, 0x02, 0x00, 0x1C, 0x03, 0x02, 0x00, 0x1A, 
33825
  0x06, 0x00, 0x00, 0x2A, 0x04, 0x02, 0x00, 0x30, 0x04, 0x00, 0x00, 0x2A, 0x05, 0x03, 0x00, 0x33, 
33826
  0x04, 0x05, 0x00, 0x01, 0x04, 0x00, 0x00, 0x2A, 0x04, 0x04, 0x00, 0x30, 0x03, 0x04, 0x00, 0x2A, 
33827
  0x05, 0x05, 0x00, 0x33, 0x04, 0x05, 0x00, 0x19, 0x05, 0x04, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x2A, 
33828
  0x07, 0x06, 0x00, 0x33, 0x06, 0x07, 0x00, 0x03, 0x05, 0x00, 0x00, 0x86, 0xC7, 0x0A, 0x00, 0x0A, 
33829
  0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 
33830
  0x00, 0x14, 0x00, 0x0D, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x03, 0x01, 0x03, 
33831
  0x00, 0x03, 0x00, 0x03, 0xBF, 0xFA, 0x01, 0xCE, 0x01, 0x0A, 0xD8, 0x06, 0x65, 0x70, 0x72, 0x69, 
33832
  0x6E, 0x74, 0x00, 0x11, 0x00, 0xDA, 0x80, 0xD8, 0x00, 0x11, 0x01, 0xDA, 0x80, 0xEA, 0x03, 0x11, 
33833
  0x03, 0xDA, 0x80, 0xE7, 0x07, 0x11, 0x05, 0xCF, 0x01, 0x73, 0x0B, 0x11, 0x07, 0xCF, 0x0A, 0x61, 
33834
  0x6C, 0x6C, 0x2D, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x03, 0x00, 
33835
  0x00, 0x33, 0x02, 0x03, 0x00, 0x19, 0x03, 0x02, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x2F, 0x04, 0x00, 
33836
  0x00, 0x33, 0x04, 0x03, 0x00, 0x19, 0x05, 0x04, 0x00, 0x2F, 0x05, 0x00, 0x00, 0x2A, 0x07, 0x02, 
33837
  0x00, 0x33, 0x06, 0x07, 0x00, 0x19, 0x07, 0x06, 0x00, 0x2A, 0x08, 0x03, 0x00, 0x2A, 0x09, 0x03, 
33838
  0x00, 0x31, 0x08, 0x07, 0x09, 0x2A, 0x08, 0x04, 0x00, 0x34, 0x08, 0x00, 0x00, 0x8D, 0xD8, 0x0E, 
33839
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x13, 
33840
  0x00, 0x13, 0x00, 0x13, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
33841
  0xDA, 0x08, 0xCE, 0x47, 0x28, 0x2E, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x26, 0x6F, 0x70, 
33842
  0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x53, 0x68, 0x6F, 0x77, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 
33843
  0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 
33844
  0x68, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x62, 0x65, 0x69, 0x6E, 
33845
  0x67, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x64, 0x2E, 0xCF, 0x05, 0x2E, 0x73, 0x74, 
33846
  0x65, 0x70, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8D, 0xFD, 0x01, 0xDA, 0x06, 
33847
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x01, 0x00, 0x01, 0x02, 0x11, 0x00, 0x06, 0xCE, 
33848
  0x05, 0x2E, 0x73, 0x74, 0x65, 0x70, 0xDA, 0x18, 0xDA, 0x80, 0xDD, 0xD8, 0x0A, 0x64, 0x65, 0x62, 
33849
  0x75, 0x67, 0x2F, 0x73, 0x74, 0x65, 0x70, 0x00, 0x11, 0x00, 0xDA, 0x80, 0xD8, 0x00, 0x11, 0x01, 
33850
  0xDA, 0x81, 0x02, 0x00, 0x11, 0x02, 0xCF, 0x03, 0x72, 0x65, 0x73, 0x01, 0x10, 0x03, 0xDA, 0x80, 
33851
  0x90, 0x01, 0x06, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x33, 0x06, 0x10, 0x05, 
33852
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x32, 0x26, 0x02, 0x00, 0x00, 0x29, 0x03, 0x00, 
33853
  0x00, 0x1C, 0x00, 0x03, 0x00, 0x19, 0x04, 0x00, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x29, 0x04, 0x01, 
33854
  0x00, 0x19, 0x05, 0x04, 0x00, 0x21, 0x04, 0x03, 0x05, 0x1C, 0x04, 0x08, 0x00, 0x2A, 0x07, 0x00, 
33855
  0x00, 0x33, 0x06, 0x07, 0x00, 0x2F, 0x06, 0x00, 0x00, 0x2A, 0x07, 0x01, 0x00, 0x33, 0x02, 0x07, 
33856
  0x00, 0x05, 0x03, 0x03, 0x01, 0x1A, 0xF8, 0xFF, 0xFF, 0x03, 0x02, 0x00, 0x00, 0x8E, 0x00, 0x03, 
33857
  0x01, 0x03, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
33858
  0x01, 0x1A, 0x00, 0x1A, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0xBF, 
33859
  0xFC, 0x01, 0xDA, 0x08, 0xCE, 0x30, 0x28, 0x2E, 0x73, 0x74, 0x65, 0x70, 0x20, 0x26, 0x6F, 0x70, 
33860
  0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x20, 0x74, 0x68, 
33861
  0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x6E, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 
33862
  0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0xCF, 0x09, 0x2E, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x61, 0x6C, 
33863
  0x6C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8D, 0xC3, 0x03, 0xDA, 0x06, 0xD7, 
33864
  0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0B, 0x01, 0x00, 0x01, 0x05, 0x19, 0x01, 0x09, 0xCE, 0x09, 
33865
  0x2E, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x61, 0x6C, 0x6C, 0xDA, 0x18, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
33866
  0x00, 0x00, 0x05, 0x01, 0x00, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x03, 0x2E, 0x66, 0x6E, 0xDA, 
33867
  0x18, 0xDA, 0x80, 0xDB, 0xDA, 0x80, 0xE5, 0x00, 0x06, 0x00, 0xDA, 0x80, 0xD8, 0x00, 0x06, 0x01, 
33868
  0xCF, 0x03, 0x2E, 0x66, 0x6E, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 
33869
  0x00, 0x2A, 0x04, 0x01, 0x00, 0x38, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x8D, 0x89, 0x07, 
33870
  0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xD8, 0x0C, 0x64, 0x65, 0x62, 0x75, 
33871
  0x67, 0x2F, 0x66, 0x62, 0x72, 0x65, 0x61, 0x6B, 0xCE, 0x04, 0x73, 0x65, 0x74, 0x20, 0xCE, 0x10, 
33872
  0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x20, 
33873
  0xDA, 0x80, 0xFE, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x80, 0xD7, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x80, 
33874
  0xD1, 0xBF, 0xFF, 0x00, 0x03, 0xCF, 0x06, 0x2E, 0x70, 0x70, 0x61, 0x73, 0x6D, 0x00, 0x19, 0x00, 
33875
  0xDA, 0x80, 0xD8, 0x00, 0x19, 0x01, 0xDA, 0x81, 0x0C, 0x03, 0x19, 0x03, 0xCF, 0x03, 0x66, 0x75, 
33876
  0x6E, 0x07, 0x19, 0x05, 0xCF, 0x08, 0x62, 0x79, 0x74, 0x65, 0x63, 0x6F, 0x64, 0x65, 0x08, 0x12, 
33877
  0x06, 0xDA, 0x80, 0x90, 0x0A, 0x12, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x59, 
33878
  0x2F, 0x00, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x19, 0x03, 0x02, 0x00, 
33879
  0x2F, 0x00, 0x00, 0x00, 0x2B, 0x05, 0x00, 0x02, 0x33, 0x04, 0x05, 0x00, 0x19, 0x05, 0x04, 0x00, 
33880
  0x29, 0x06, 0x00, 0x00, 0x3D, 0x07, 0x05, 0x00, 0x19, 0x08, 0x07, 0x00, 0x21, 0x07, 0x06, 0x08, 
33881
  0x1C, 0x07, 0x06, 0x00, 0x30, 0x03, 0x06, 0x00, 0x2A, 0x0A, 0x01, 0x00, 0x33, 0x09, 0x0A, 0x00, 
33882
  0x05, 0x06, 0x06, 0x01, 0x1A, 0xFA, 0xFF, 0xFF, 0x3D, 0x06, 0x05, 0x00, 0x2A, 0x07, 0x02, 0x00, 
33883
  0x2A, 0x08, 0x03, 0x00, 0x31, 0x07, 0x06, 0x08, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x07, 0x04, 0x00, 
33884
  0x34, 0x07, 0x00, 0x00, 0xBF, 0xFF, 0x8D, 0xC6, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x01, 
33885
  0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x05, 0x01, 0x05, 0x00, 0x0F, 0x00, 0x05, 0x00, 0x05, 0x00, 
33886
  0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x02, 0x14, 0x00, 0x05, 
33887
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDB, 0x00, 0xDA, 0x08, 0xCE, 0x50, 
33888
  0x28, 0x2E, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x61, 0x6C, 0x6C, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 
33889
  0x6E, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 
33890
  0x6E, 0x74, 0x73, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x72, 
33891
  0x75, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 
33892
  0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 
33893
  0xCF, 0x05, 0x2E, 0x6E, 0x65, 0x78, 0x74, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 
33894
  0x8D, 0xEF, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x01, 0x00, 0x01, 
33895
  0x01, 0x10, 0x00, 0x06, 0xCE, 0x05, 0x2E, 0x6E, 0x65, 0x78, 0x74, 0xDA, 0x18, 0xDA, 0x80, 0xDD, 
33896
  0x00, 0x10, 0x00, 0xDA, 0x80, 0xD8, 0x00, 0x10, 0x01, 0xDA, 0x81, 0x1C, 0x00, 0x10, 0x02, 0xDA, 
33897
  0x81, 0x08, 0x01, 0x0F, 0x03, 0xDA, 0x80, 0x90, 0x01, 0x06, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
33898
  0x30, 0x30, 0x36, 0x31, 0x06, 0x0F, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x30, 
33899
  0x26, 0x02, 0x00, 0x00, 0x29, 0x03, 0x00, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x19, 0x04, 0x00, 0x00, 
33900
  0x1A, 0x02, 0x00, 0x00, 0x29, 0x04, 0x01, 0x00, 0x19, 0x05, 0x04, 0x00, 0x21, 0x04, 0x03, 0x05, 
33901
  0x1C, 0x04, 0x07, 0x00, 0x2A, 0x07, 0x00, 0x00, 0x33, 0x06, 0x07, 0x00, 0x26, 0x07, 0x00, 0x00, 
33902
  0x35, 0x02, 0x06, 0x07, 0x05, 0x03, 0x03, 0x01, 0x1A, 0xF9, 0xFF, 0xFF, 0x03, 0x02, 0x00, 0x00, 
33903
  0x8D, 0xF2, 0x03, 0x01, 0x03, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x03, 0x00, 
33904
  0x03, 0x00, 0x03, 0x01, 0x16, 0x00, 0x16, 0x00, 0x0E, 0x00, 0x0E, 0xBF, 0xFF, 0x03, 0x00, 0x03, 
33905
  0xBF, 0xFC, 0x01, 0xDA, 0x08, 0xCE, 0x2A, 0x28, 0x2E, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x26, 0x6F, 
33906
  0x70, 0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x47, 0x6F, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 
33907
  0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 
33908
  0x2E, 0xCF, 0x09, 0x2E, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x61, 0x6C, 0x6C, 0xD3, 0x03, 0xDA, 0x03, 
33909
  0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8D, 0xCC, 0x03, 0xDA, 0x06, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 
33910
  0x00, 0x0B, 0x01, 0x00, 0x01, 0x05, 0x19, 0x01, 0x0A, 0xCE, 0x09, 0x2E, 0x63, 0x6C, 0x65, 0x61, 
33911
  0x72, 0x61, 0x6C, 0x6C, 0xDA, 0x18, 0xDA, 0x81, 0x11, 0xD8, 0x0E, 0x64, 0x65, 0x62, 0x75, 0x67, 
33912
  0x2F, 0x75, 0x6E, 0x66, 0x62, 0x72, 0x65, 0x61, 0x6B, 0xCE, 0x08, 0x63, 0x6C, 0x65, 0x61, 0x72, 
33913
  0x65, 0x64, 0x20, 0xDA, 0x81, 0x16, 0xDA, 0x80, 0xFE, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x80, 0xD7, 
33914
  0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x80, 0xD1, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 0x17, 0xBF, 0xFF, 
33915
  0x00, 0x04, 0xDA, 0x81, 0x0C, 0x00, 0x19, 0x00, 0xDA, 0x80, 0xD8, 0x00, 0x19, 0x01, 0xDA, 0x81, 
33916
  0x24, 0x03, 0x19, 0x03, 0xDA, 0x81, 0x18, 0x07, 0x19, 0x05, 0xDA, 0x81, 0x19, 0x08, 0x12, 0x06, 
33917
  0xDA, 0x80, 0x90, 0x0A, 0x12, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x5A, 0x2F, 
33918
  0x00, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x19, 0x03, 0x02, 0x00, 0x2F, 
33919
  0x00, 0x00, 0x00, 0x2B, 0x05, 0x00, 0x02, 0x33, 0x04, 0x05, 0x00, 0x19, 0x05, 0x04, 0x00, 0x29, 
33920
  0x06, 0x00, 0x00, 0x3D, 0x07, 0x05, 0x00, 0x19, 0x08, 0x07, 0x00, 0x21, 0x07, 0x06, 0x08, 0x1C, 
33921
  0x07, 0x06, 0x00, 0x30, 0x03, 0x06, 0x00, 0x2A, 0x0A, 0x01, 0x00, 0x33, 0x09, 0x0A, 0x00, 0x05, 
33922
  0x06, 0x06, 0x01, 0x1A, 0xFA, 0xFF, 0xFF, 0x3D, 0x06, 0x05, 0x00, 0x2A, 0x07, 0x02, 0x00, 0x2A, 
33923
  0x08, 0x03, 0x00, 0x31, 0x07, 0x06, 0x08, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x07, 0x04, 0x00, 0x34, 
33924
  0x07, 0x00, 0x00, 0xBF, 0xFF, 0x8D, 0xCF, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x01, 0x13, 
33925
  0x00, 0x13, 0x00, 0x13, 0x00, 0x05, 0x01, 0x05, 0x00, 0x0F, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
33926
  0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x02, 0x18, 0x00, 0x05, 0x00, 
33927
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDB, 0x00, 0xDA, 0x08, 0xCE, 0x42, 0x28, 
33928
  0x2E, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x61, 0x6C, 0x6C, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 
33929
  0x29, 0x0A, 0x0A, 0x43, 0x6C, 0x65, 0x61, 0x72, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x62, 0x72, 0x65, 
33930
  0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
33931
  0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
33932
  0x2E, 0xDA, 0x80, 0xD7, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8D, 0x98, 0x03, 
33933
  0xDA, 0x06, 0xDA, 0x80, 0xD9, 0xDA, 0x08, 0xCE, 0x3D, 0x28, 0x2E, 0x64, 0x69, 0x73, 0x61, 0x73, 
33934
  0x6D, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 
33935
  0x74, 0x68, 0x65, 0x20, 0x61, 0x73, 0x73, 0x65, 0x6D, 0x62, 0x6C, 0x79, 0x20, 0x66, 0x6F, 0x72, 
33936
  0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x75, 0x6E, 
33937
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xCF, 0x05, 0x2E, 0x73, 0x6C, 0x6F, 0x74, 0xD3, 0x03, 0xDA, 
33938
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8D, 0x90, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
33939
  0x00, 0x00, 0x06, 0x02, 0x00, 0x02, 0x01, 0x09, 0x00, 0x04, 0xCE, 0x05, 0x2E, 0x73, 0x6C, 0x6F, 
33940
  0x74, 0xDA, 0x18, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x00, 0x01, 0x02, 0x06, 
33941
  0x00, 0x02, 0xCE, 0x06, 0x2E, 0x73, 0x6C, 0x6F, 0x74, 0x73, 0xDA, 0x18, 0xDA, 0x80, 0xDB, 0xD0, 
33942
  0x05, 0x73, 0x6C, 0x6F, 0x74, 0x73, 0x00, 0x06, 0x00, 0xDA, 0x80, 0xD8, 0x00, 0x06, 0x01, 0xCF, 
33943
  0x06, 0x2E, 0x73, 0x6C, 0x6F, 0x74, 0x73, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 
33944
  0x02, 0x03, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x38, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x8D, 
33945
  0x8E, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x09, 0x00, 0xCF, 
33946
  0x03, 0x6E, 0x74, 0x68, 0x00, 0x09, 0x01, 0xCF, 0x09, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x2D, 0x69, 
33947
  0x64, 0x78, 0x00, 0x09, 0x02, 0xDA, 0x81, 0x30, 0x02, 0x07, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
33948
  0x30, 0x30, 0x35, 0x55, 0x2F, 0x01, 0x00, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 
33949
  0x1C, 0x00, 0x03, 0x00, 0x19, 0x04, 0x00, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x29, 0x04, 0x00, 0x00, 
33950
  0x38, 0x05, 0x03, 0x04, 0x03, 0x05, 0x00, 0x00, 0x8D, 0x93, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
33951
  0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x08, 0xCE, 0x3A, 0x28, 
33952
  0x2E, 0x73, 0x6C, 0x6F, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 0x74, 0x68, 0x20, 0x66, 
33953
  0x72, 0x61, 0x6D, 0x65, 0x2D, 0x69, 0x64, 0x78, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 
33954
  0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
33955
  0x6E, 0x74, 0x68, 0x20, 0x73, 0x6C, 0x6F, 0x74, 0x2E, 0xCF, 0x06, 0x2E, 0x62, 0x72, 0x65, 0x61, 
33956
  0x6B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8D, 0xDD, 0x01, 0xDA, 0x06, 0xD7, 
33957
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x07, 0x14, 0x00, 0x04, 0xCE, 0x06, 
33958
  0x2E, 0x62, 0x72, 0x65, 0x61, 0x6B, 0xDA, 0x18, 0xDA, 0x80, 0xDB, 0xDA, 0x80, 0xE5, 0xD0, 0x02, 
33959
  0x70, 0x63, 0xDA, 0x81, 0x14, 0xCE, 0x12, 0x73, 0x65, 0x74, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 
33960
  0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0xCE, 0x07, 0x20, 0x61, 0x74, 0x20, 0x70, 
33961
  0x63, 0x3D, 0xDA, 0x80, 0xFE, 0x00, 0x14, 0x00, 0xDA, 0x81, 0x3D, 0x02, 0x14, 0x02, 0xDA, 0x80, 
33962
  0xE7, 0x06, 0x14, 0x04, 0xDA, 0x81, 0x18, 0x0A, 0x14, 0x06, 0xCF, 0x02, 0x70, 0x63, 0x2A, 0x02, 
33963
  0x00, 0x00, 0x33, 0x01, 0x02, 0x00, 0x19, 0x02, 0x01, 0x00, 0x2A, 0x03, 0x01, 0x00, 0x2F, 0x03, 
33964
  0x00, 0x00, 0x33, 0x03, 0x02, 0x00, 0x19, 0x04, 0x03, 0x00, 0x2A, 0x05, 0x02, 0x00, 0x2F, 0x05, 
33965
  0x00, 0x00, 0x33, 0x05, 0x02, 0x00, 0x19, 0x06, 0x05, 0x00, 0x30, 0x04, 0x06, 0x00, 0x2A, 0x08, 
33966
  0x03, 0x00, 0x33, 0x07, 0x08, 0x00, 0x2A, 0x08, 0x04, 0x00, 0x2A, 0x09, 0x05, 0x00, 0x31, 0x08, 
33967
  0x04, 0x09, 0x2F, 0x06, 0x00, 0x00, 0x2A, 0x08, 0x06, 0x00, 0x34, 0x08, 0x00, 0x00, 0x8D, 0xE0, 
33968
  0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x01, 0x0B, 0x00, 
33969
  0x0B, 0x00, 0x0B, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 
33970
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x08, 0xCE, 0x2B, 0x28, 0x2E, 0x62, 0x72, 0x65, 
33971
  0x61, 0x6B, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 
33972
  0x69, 0x6E, 0x74, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 
33973
  0x6E, 0x74, 0x20, 0x70, 0x63, 0x2E, 0xCF, 0x06, 0x2E, 0x63, 0x6C, 0x65, 0x61, 0x72, 0xD3, 0x03, 
33974
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8D, 0xE6, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 
33975
  0xDC, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x07, 0x14, 0x00, 0x04, 0xCE, 0x06, 0x2E, 0x63, 0x6C, 
33976
  0x65, 0x61, 0x72, 0xDA, 0x18, 0xDA, 0x80, 0xDB, 0xDA, 0x80, 0xE5, 0xDA, 0x81, 0x42, 0xDA, 0x81, 
33977
  0x29, 0xCE, 0x16, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x65, 0x64, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 
33978
  0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0xDA, 0x81, 0x44, 0xDA, 0x80, 0xFE, 0x00, 
33979
  0x14, 0x00, 0xDA, 0x81, 0x47, 0x02, 0x14, 0x02, 0xDA, 0x80, 0xE7, 0x06, 0x14, 0x04, 0xDA, 0x81, 
33980
  0x18, 0x0A, 0x14, 0x06, 0xDA, 0x81, 0x45, 0x2A, 0x02, 0x00, 0x00, 0x33, 0x01, 0x02, 0x00, 0x19, 
33981
  0x02, 0x01, 0x00, 0x2A, 0x03, 0x01, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x33, 0x03, 0x02, 0x00, 0x19, 
33982
  0x04, 0x03, 0x00, 0x2A, 0x05, 0x02, 0x00, 0x2F, 0x05, 0x00, 0x00, 0x33, 0x05, 0x02, 0x00, 0x19, 
33983
  0x06, 0x05, 0x00, 0x30, 0x04, 0x06, 0x00, 0x2A, 0x08, 0x03, 0x00, 0x33, 0x07, 0x08, 0x00, 0x2A, 
33984
  0x08, 0x04, 0x00, 0x2A, 0x09, 0x05, 0x00, 0x31, 0x08, 0x04, 0x09, 0x2F, 0x06, 0x00, 0x00, 0x2A, 
33985
  0x08, 0x06, 0x00, 0x34, 0x08, 0x00, 0x00, 0x8D, 0xE9, 0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x0C, 
33986
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x01, 0x03, 
33987
  0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
33988
  0xDA, 0x08, 0xCE, 0x27, 0x28, 0x2E, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x29, 0x0A, 0x0A, 0x43, 0x6C, 
33989
  0x65, 0x61, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 
33990
  0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x2E, 0xDA, 0x80, 0xE2, 0xD3, 0x03, 
33991
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8D, 0x7B, 0x01, 0xDA, 0x06, 0xDA, 0x80, 0xDB, 0xDA, 
33992
  0x08, 0xCE, 0x23, 0x28, 0x2E, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 
33993
  0x6E, 0x29, 0x0A, 0x0A, 0x53, 0x68, 0x6F, 0x77, 0x20, 0x61, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 
33994
  0x20, 0x66, 0x72, 0x61, 0x6D, 0x65, 0xDA, 0x81, 0x13, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
33995
  0xDA, 0x18, 0x8D, 0x86, 0x01, 0xDA, 0x06, 0xDA, 0x81, 0x11, 0xDA, 0x08, 0xCE, 0x27, 0x28, 0x2E, 
33996
  0x66, 0x6E, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 
33997
  0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x75, 0x6E, 0x63, 
33998
  0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x81, 0x38, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
33999
  0x18, 0x8D, 0x8B, 0x01, 0xDA, 0x06, 0xDA, 0x81, 0x35, 0xDA, 0x08, 0xCE, 0x38, 0x28, 0x2E, 0x73, 
34000
  0x6C, 0x6F, 0x74, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x47, 0x65, 
34001
  0x74, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x6C, 
34002
  0x6F, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x66, 
34003
  0x72, 0x61, 0x6D, 0x65, 0x2E, 0xCF, 0x06, 0x2E, 0x73, 0x74, 0x61, 0x63, 0x6B, 0xD3, 0x03, 0xDA, 
34004
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8D, 0x74, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xFC, 
34005
  0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x03, 0x0B, 0x00, 0x01, 0x01, 0xCE, 0x06, 0x2E, 0x73, 0x74, 
34006
  0x61, 0x63, 0x6B, 0xDA, 0x18, 0xD8, 0x05, 0x70, 0x72, 0x69, 0x6E, 0x74, 0xD0, 0x01, 0x70, 0xD8, 
34007
  0x09, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 0x00, 0x0B, 0x00, 0xDA, 0x81, 0x57, 
34008
  0x2A, 0x02, 0x00, 0x00, 0x33, 0x01, 0x02, 0x00, 0x2E, 0x02, 0x00, 0x00, 0x2A, 0x03, 0x01, 0x00, 
34009
  0x30, 0x02, 0x03, 0x00, 0x2A, 0x04, 0x02, 0x00, 0x33, 0x03, 0x04, 0x00, 0x26, 0x04, 0x00, 0x00, 
34010
  0x35, 0x02, 0x03, 0x04, 0x2A, 0x03, 0x00, 0x00, 0x34, 0x03, 0x00, 0x00, 0xCD, 0x00, 0xD0, 0x00, 
34011
  0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x0D, 0x00, 0xDA, 0x18, 0xD0, 0x09, 0x65, 0x72, 0x72, 0x2D, 
34012
  0x63, 0x6F, 0x6C, 0x6F, 0x72, 0xD8, 0x06, 0x73, 0x65, 0x74, 0x64, 0x79, 0x6E, 0xDA, 0x80, 0xDD, 
34013
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x01, 0xCE, 
34014
  0x07, 0x2E, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0xDA, 0x18, 0xDA, 0x80, 0xCF, 0xDA, 0x80, 0xDF, 
34015
  0x00, 0x04, 0x00, 0xCF, 0x07, 0x2E, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x2A, 0x01, 0x00, 0x00, 
34016
  0x2F, 0x01, 0x00, 0x00, 0x2A, 0x01, 0x01, 0x00, 0x34, 0x01, 0x00, 0x00, 0x8D, 0x72, 0x03, 0x00, 
34017
  0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x80, 0xC5, 0xDA, 0x80, 0xC6, 0x2A, 0x00, 0x00, 0x00, 0x28, 
34018
  0x01, 0x00, 0x00, 0x30, 0x00, 0x01, 0x00, 0x2A, 0x01, 0x01, 0x00, 0x33, 0x00, 0x01, 0x00, 0x2A, 
34019
  0x02, 0x02, 0x00, 0x33, 0x01, 0x02, 0x00, 0x2A, 0x03, 0x03, 0x00, 0x33, 0x02, 0x03, 0x00, 0x2A, 
34020
  0x03, 0x04, 0x00, 0x31, 0x01, 0x02, 0x03, 0x2A, 0x03, 0x05, 0x00, 0x34, 0x03, 0x00, 0x00, 0x8D, 
34021
  0x78, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x34, 0x00, 0x34, 0x00, 0x3D, 
34022
  0x00, 0x3D, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x8D, 0x77, 0x03, 0x00, 0x03, 0x01, 
34023
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 
34024
  0x03, 0xDA, 0x08, 0xCE, 0x28, 0x28, 0x2E, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x29, 0x0A, 0x0A, 0x50, 
34025
  0x72, 0x69, 0x6E, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 
34026
  0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x2E, 0xCF, 0x07, 0x2E, 
34027
  0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x73, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8D, 
34028
  0x81, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x00, 0x01, 0x02, 
34029
  0x06, 0x00, 0x02, 0xCE, 0x07, 0x2E, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x73, 0xDA, 0x18, 0xDA, 0x80, 
34030
  0xDB, 0xD0, 0x06, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x73, 0x00, 0x06, 0x00, 0xDA, 0x80, 0xD8, 0x00, 
34031
  0x06, 0x01, 0xDA, 0x81, 0x65, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 
34032
  0x00, 0x2A, 0x04, 0x01, 0x00, 0x39, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x8D, 0x84, 0x08, 
34033
  0x00, 0x08, 0x00, 0x08, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x08, 0xCE, 0x25, 0x28, 0x2E, 
34034
  0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 
34035
  0x53, 0x68, 0x6F, 0x77, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 
34036
  0x6E, 0x67, 0x73, 0xDA, 0x81, 0x63, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8D, 
34037
  0x6F, 0x01, 0xDA, 0x06, 0xDA, 0x81, 0x61, 0xDA, 0x08, 0xCE, 0x31, 0x28, 0x2E, 0x73, 0x69, 0x67, 
34038
  0x6E, 0x61, 0x6C, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 
34039
  0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x62, 0x65, 0x69, 
34040
  0x6E, 0x67, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x64, 0x2E, 0xDA, 0x81, 0x17, 0xD3, 
34041
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8D, 0xA4, 0x03, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 
34042
  0x00, 0xDC, 0x00, 0x00, 0x20, 0x01, 0x00, 0x01, 0x29, 0x80, 0x94, 0x00, 0x13, 0xCE, 0x06, 0x2E, 
34043
  0x70, 0x70, 0x61, 0x73, 0x6D, 0xDA, 0x18, 0xDA, 0x80, 0xDB, 0xDA, 0x80, 0xE5, 0xDA, 0x80, 0xE6, 
34044
  0xDA, 0x80, 0xD6, 0xDA, 0x81, 0x42, 0xD0, 0x09, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x6D, 0x61, 
34045
  0x70, 0xD2, 0x02, 0x00, 0xBF, 0xFE, 0xBF, 0xFE, 0xDA, 0x81, 0x61, 0xCE, 0x0F, 0x0A, 0x20, 0x20, 
34046
  0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x3A, 0x20, 0x20, 0x20, 0x20, 0x20, 0xDA, 0x80, 0xFE, 0xDA, 
34047
  0x80, 0xDD, 0xDA, 0x80, 0xBE, 0xCE, 0x0E, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3A, 
34048
  0x20, 0x20, 0x20, 0x20, 0x20, 0xD0, 0x04, 0x6E, 0x61, 0x6D, 0x65, 0xCE, 0x0B, 0x3C, 0x61, 0x6E, 
34049
  0x6F, 0x6E, 0x79, 0x6D, 0x6F, 0x75, 0x73, 0x3E, 0xDA, 0x80, 0xEF, 0xDA, 0x80, 0xC5, 0xD7, 0x00, 
34050
  0xCD, 0x00, 0x08, 0x00, 0x06, 0x04, 0x03, 0x02, 0x03, 0x00, 0x06, 0xCE, 0x02, 0x69, 0x6E, 0x38, 
34051
  0x00, 0x00, 0x01, 0x26, 0x03, 0x00, 0x00, 0x23, 0x03, 0x00, 0x03, 0x1B, 0x03, 0x02, 0x00, 0x03, 
34052
  0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0xCE, 0x0E, 0x20, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 
34053
  0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x20, 0x20, 0xCE, 0x02, 0x20, 0x5B, 0xCE, 0x01, 0x5D, 0xD0, 0x09, 
34054
  0x63, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74, 0x73, 0xCE, 0x12, 0x20, 0x20, 0x63, 0x6F, 0x6E, 
34055
  0x73, 0x74, 0x61, 0x6E, 0x74, 0x73, 0x3A, 0x20, 0x20, 0x25, 0x2E, 0x34, 0x71, 0xD8, 0x07, 0x65, 
34056
  0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0xDA, 0x81, 0x37, 0xCE, 0x13, 0x20, 0x20, 0x73, 0x6C, 0x6F, 
34057
  0x74, 0x73, 0x3A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x25, 0x2E, 0x34, 0x71, 0x0A, 0xCE, 0x01, 
34058
  0x20, 0xD8, 0x0D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 
34059
  0xD8, 0x0A, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x74, 0x79, 0x70, 0x65, 0xD0, 0x08, 0x62, 0x72, 
34060
  0x61, 0x63, 0x6B, 0x65, 0x74, 0x73, 0xCE, 0x01, 0x2A, 0xD8, 0x05, 0x65, 0x70, 0x72, 0x69, 0x6E, 
34061
  0xCE, 0x02, 0x3E, 0x20, 0xCE, 0x02, 0x20, 0x20, 0xDA, 0x80, 0xF5, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 
34062
  0x00, 0x00, 0x1B, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x80, 0xE9, 0x00, 0x35, 0xCE, 
34063
  0x03, 0x6D, 0x61, 0x70, 0xDA, 0x18, 0xD8, 0x0A, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x70, 0x75, 
34064
  0x73, 0x68, 0xD8, 0x10, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x6E, 0x65, 0x77, 0x2D, 0x66, 0x69, 
34065
  0x6C, 0x6C, 0x65, 0x64, 0x00, 0x80, 0xE9, 0x00, 0xDA, 0x80, 0xFB, 0x00, 0x80, 0xE9, 0x01, 0xDA, 
34066
  0x1F, 0x00, 0x80, 0xE9, 0x02, 0xCF, 0x04, 0x69, 0x6E, 0x64, 0x73, 0x00, 0x80, 0xE9, 0x03, 0xCF, 
34067
  0x03, 0x6D, 0x61, 0x70, 0x01, 0x80, 0xE9, 0x05, 0xDA, 0x81, 0x08, 0x03, 0x80, 0xE8, 0x07, 0xCF, 
34068
  0x05, 0x6E, 0x69, 0x6E, 0x64, 0x73, 0x03, 0x80, 0xE8, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
34069
  0x30, 0x30, 0x45, 0x05, 0x13, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x47, 0x08, 
34070
  0x13, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x46, 0x0B, 0x13, 0x0A, 0xDA, 0x1E, 
34071
  0x17, 0x2D, 0x0A, 0xCF, 0x04, 0x69, 0x6E, 0x64, 0x30, 0x18, 0x2D, 0x09, 0xCF, 0x04, 0x6B, 0x65, 
34072
  0x79, 0x30, 0x18, 0x2D, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x49, 0x1B, 0x2D, 
34073
  0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x48, 0x1E, 0x2D, 0x0D, 0xDA, 0x1E, 0x31, 
34074
  0x51, 0x0B, 0xDA, 0x81, 0x94, 0x33, 0x51, 0x0C, 0xCF, 0x04, 0x69, 0x6E, 0x64, 0x31, 0x34, 0x51, 
34075
  0x0A, 0xDA, 0x81, 0x95, 0x35, 0x51, 0x0D, 0xCF, 0x04, 0x6B, 0x65, 0x79, 0x31, 0x35, 0x51, 0x01, 
34076
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x4B, 0x38, 0x51, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 
34077
  0x30, 0x30, 0x30, 0x30, 0x4A, 0x3B, 0x51, 0x10, 0xDA, 0x1E, 0x55, 0x80, 0x80, 0x0C, 0xDA, 0x81, 
34078
  0x94, 0x57, 0x80, 0x80, 0x0D, 0xDA, 0x81, 0x98, 0x59, 0x80, 0x80, 0x0E, 0xCF, 0x04, 0x69, 0x6E, 
34079
  0x64, 0x32, 0x5A, 0x80, 0x80, 0x0B, 0xDA, 0x81, 0x95, 0x5B, 0x80, 0x80, 0x0F, 0xDA, 0x81, 0x99, 
34080
  0x5C, 0x80, 0x80, 0x10, 0xCF, 0x04, 0x6B, 0x65, 0x79, 0x32, 0x5C, 0x80, 0x80, 0x01, 0xCF, 0x07, 
34081
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x4D, 0x5F, 0x80, 0x80, 0x12, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
34082
  0x30, 0x30, 0x30, 0x4C, 0x62, 0x80, 0x80, 0x13, 0xDA, 0x1E, 0x80, 0x84, 0x80, 0xB9, 0x0D, 0xDA, 
34083
  0x81, 0x94, 0x80, 0x86, 0x80, 0xB9, 0x0E, 0xDA, 0x81, 0x98, 0x80, 0x88, 0x80, 0xB9, 0x0F, 0xDA, 
34084
  0x81, 0x9C, 0x80, 0x8A, 0x80, 0xB9, 0x10, 0xCF, 0x04, 0x69, 0x6E, 0x64, 0x33, 0x80, 0x8B, 0x80, 
34085
  0xB9, 0x0C, 0xDA, 0x81, 0x95, 0x80, 0x8C, 0x80, 0xB9, 0x11, 0xDA, 0x81, 0x99, 0x80, 0x8D, 0x80, 
34086
  0xB9, 0x12, 0xDA, 0x81, 0x9D, 0x80, 0x8E, 0x80, 0xB9, 0x13, 0xCF, 0x04, 0x6B, 0x65, 0x79, 0x33, 
34087
  0x80, 0x8E, 0x80, 0xB9, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x4F, 0x80, 0x91, 
34088
  0x80, 0xB9, 0x15, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x4E, 0x80, 0x94, 0x80, 0xB9, 
34089
  0x16, 0xDA, 0x1E, 0x80, 0xBD, 0x80, 0xE8, 0x0D, 0xCF, 0x09, 0x69, 0x74, 0x65, 0x72, 0x2D, 0x6B, 
34090
  0x65, 0x79, 0x73, 0x80, 0xC1, 0x80, 0xE8, 0x0E, 0xCF, 0x0B, 0x63, 0x61, 0x6C, 0x6C, 0x2D, 0x62, 
34091
  0x75, 0x66, 0x66, 0x65, 0x72, 0x80, 0xC2, 0x80, 0xE8, 0x0C, 0xCF, 0x04, 0x64, 0x6F, 0x6E, 0x65, 
34092
  0x80, 0xC2, 0x80, 0xE8, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x51, 0x80, 0xC5, 
34093
  0x80, 0xE8, 0x10, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x50, 0x80, 0xC8, 0x80, 0xE8, 
34094
  0x11, 0xDA, 0x1E, 0x80, 0xC9, 0x80, 0xDD, 0x0F, 0xDA, 0x80, 0x90, 0x80, 0xC9, 0x80, 0xDD, 0x07, 
34095
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x52, 0x80, 0xCD, 0x80, 0xDB, 0x14, 0xCF, 0x07, 
34096
  0x6F, 0x6C, 0x64, 0x2D, 0x6B, 0x65, 0x79, 0x80, 0xCF, 0x80, 0xDB, 0x15, 0xCF, 0x02, 0x69, 0x69, 
34097
  0x80, 0xD1, 0x80, 0xDB, 0x16, 0xCF, 0x07, 0x6E, 0x65, 0x77, 0x2D, 0x6B, 0x65, 0x79, 0x3E, 0x04, 
34098
  0x00, 0x00, 0x19, 0x05, 0x04, 0x00, 0x3D, 0x06, 0x02, 0x00, 0x19, 0x07, 0x06, 0x00, 0x24, 0x06, 
34099
  0x07, 0x00, 0x1C, 0x06, 0x0F, 0x00, 0x26, 0x09, 0x00, 0x00, 0x47, 0x08, 0x01, 0x09, 0x19, 0x09, 
34100
  0x08, 0x00, 0x1D, 0x09, 0x0A, 0x00, 0x38, 0x08, 0x01, 0x09, 0x19, 0x0A, 0x08, 0x00, 0x2F, 0x0A, 
34101
  0x00, 0x00, 0x33, 0x08, 0x00, 0x00, 0x30, 0x05, 0x08, 0x00, 0x2A, 0x0C, 0x00, 0x00, 0x33, 0x0B, 
34102
  0x0C, 0x00, 0x47, 0x09, 0x01, 0x09, 0x1A, 0xF7, 0xFF, 0xFF, 0x1A, 0xD5, 0x00, 0x00, 0x24, 0x08, 
34103
  0x07, 0x01, 0x1C, 0x08, 0x19, 0x00, 0x3B, 0x09, 0x02, 0x00, 0x19, 0x0A, 0x09, 0x00, 0x26, 0x09, 
34104
  0x00, 0x00, 0x26, 0x0C, 0x00, 0x00, 0x47, 0x0B, 0x01, 0x0C, 0x19, 0x0C, 0x0B, 0x00, 0x1D, 0x0C, 
34105
  0x11, 0x00, 0x38, 0x0B, 0x01, 0x0C, 0x19, 0x0D, 0x0B, 0x00, 0x47, 0x09, 0x0A, 0x09, 0x26, 0x0E, 
34106
  0x00, 0x00, 0x23, 0x0B, 0x0E, 0x09, 0x1C, 0x0B, 0x03, 0x00, 0x1A, 0x0A, 0x00, 0x00, 0x1A, 0x01, 
34107
  0x00, 0x00, 0x38, 0x0B, 0x0A, 0x09, 0x30, 0x0D, 0x0B, 0x00, 0x33, 0x0E, 0x00, 0x00, 0x30, 0x05, 
34108
  0x0E, 0x00, 0x2A, 0x0F, 0x00, 0x00, 0x33, 0x0B, 0x0F, 0x00, 0x47, 0x0C, 0x01, 0x0C, 0x1A, 0xF0, 
34109
  0xFF, 0xFF, 0x1A, 0xBB, 0x00, 0x00, 0x24, 0x09, 0x07, 0x02, 0x1C, 0x09, 0x23, 0x00, 0x3B, 0x0A, 
34110
  0x02, 0x00, 0x19, 0x0B, 0x0A, 0x00, 0x3B, 0x0A, 0x02, 0x01, 0x19, 0x0C, 0x0A, 0x00, 0x26, 0x0A, 
34111
  0x00, 0x00, 0x26, 0x0D, 0x00, 0x00, 0x26, 0x0F, 0x00, 0x00, 0x47, 0x0E, 0x01, 0x0F, 0x19, 0x0F, 
34112
  0x0E, 0x00, 0x1D, 0x0F, 0x18, 0x00, 0x38, 0x0E, 0x01, 0x0F, 0x19, 0x10, 0x0E, 0x00, 0x47, 0x0A, 
34113
  0x0B, 0x0A, 0x26, 0x11, 0x00, 0x00, 0x23, 0x0E, 0x11, 0x0A, 0x1C, 0x0E, 0x03, 0x00, 0x1A, 0x11, 
34114
  0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x0D, 0x0C, 0x0D, 0x26, 0x11, 0x00, 0x00, 0x23, 0x0E, 
34115
  0x11, 0x0D, 0x1C, 0x0E, 0x03, 0x00, 0x1A, 0x0B, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x38, 0x0E, 
34116
  0x0B, 0x0A, 0x38, 0x11, 0x0C, 0x0D, 0x31, 0x10, 0x0E, 0x11, 0x33, 0x12, 0x00, 0x00, 0x30, 0x05, 
34117
  0x12, 0x00, 0x2A, 0x11, 0x00, 0x00, 0x33, 0x0E, 0x11, 0x00, 0x47, 0x0F, 0x01, 0x0F, 0x1A, 0xE9, 
34118
  0xFF, 0xFF, 0x1A, 0x97, 0x00, 0x00, 0x24, 0x0A, 0x07, 0x03, 0x1C, 0x0A, 0x2E, 0x00, 0x3B, 0x0B, 
34119
  0x02, 0x00, 0x19, 0x0C, 0x0B, 0x00, 0x3B, 0x0B, 0x02, 0x01, 0x19, 0x0D, 0x0B, 0x00, 0x3B, 0x0B, 
34120
  0x02, 0x02, 0x19, 0x0E, 0x0B, 0x00, 0x26, 0x0B, 0x00, 0x00, 0x26, 0x0F, 0x00, 0x00, 0x26, 0x10, 
34121
  0x00, 0x00, 0x26, 0x12, 0x00, 0x00, 0x47, 0x11, 0x01, 0x12, 0x19, 0x12, 0x11, 0x00, 0x1D, 0x12, 
34122
  0x20, 0x00, 0x38, 0x11, 0x01, 0x12, 0x19, 0x13, 0x11, 0x00, 0x47, 0x0B, 0x0C, 0x0B, 0x26, 0x14, 
34123
  0x00, 0x00, 0x23, 0x11, 0x14, 0x0B, 0x1C, 0x11, 0x03, 0x00, 0x1A, 0x19, 0x00, 0x00, 0x1A, 0x01, 
34124
  0x00, 0x00, 0x47, 0x0F, 0x0D, 0x0F, 0x26, 0x14, 0x00, 0x00, 0x23, 0x11, 0x14, 0x0F, 0x1C, 0x11, 
34125
  0x03, 0x00, 0x1A, 0x13, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x10, 0x0E, 0x10, 0x26, 0x14, 
34126
  0x00, 0x00, 0x23, 0x11, 0x14, 0x10, 0x1C, 0x11, 0x03, 0x00, 0x1A, 0x0D, 0x00, 0x00, 0x1A, 0x01, 
34127
  0x00, 0x00, 0x38, 0x11, 0x0C, 0x0B, 0x38, 0x14, 0x0D, 0x0F, 0x38, 0x15, 0x0E, 0x10, 0x31, 0x13, 
34128
  0x11, 0x14, 0x2F, 0x15, 0x00, 0x00, 0x33, 0x16, 0x00, 0x00, 0x30, 0x05, 0x16, 0x00, 0x2A, 0x14, 
34129
  0x00, 0x00, 0x33, 0x11, 0x14, 0x00, 0x47, 0x12, 0x01, 0x12, 0x1A, 0xE1, 0xFF, 0xFF, 0x1A, 0x68, 
34130
  0x00, 0x00, 0x24, 0x0B, 0x07, 0x04, 0x1C, 0x0B, 0x38, 0x00, 0x3B, 0x0C, 0x02, 0x00, 0x19, 0x0D, 
34131
  0x0C, 0x00, 0x3B, 0x0C, 0x02, 0x01, 0x19, 0x0E, 0x0C, 0x00, 0x3B, 0x0C, 0x02, 0x02, 0x19, 0x0F, 
34132
  0x0C, 0x00, 0x3B, 0x0C, 0x02, 0x03, 0x19, 0x10, 0x0C, 0x00, 0x26, 0x0C, 0x00, 0x00, 0x26, 0x11, 
34133
  0x00, 0x00, 0x26, 0x12, 0x00, 0x00, 0x26, 0x13, 0x00, 0x00, 0x26, 0x15, 0x00, 0x00, 0x47, 0x14, 
34134
  0x01, 0x15, 0x19, 0x15, 0x14, 0x00, 0x1D, 0x15, 0x27, 0x00, 0x38, 0x14, 0x01, 0x15, 0x19, 0x16, 
34135
  0x14, 0x00, 0x47, 0x0C, 0x0D, 0x0C, 0x26, 0x17, 0x00, 0x00, 0x23, 0x14, 0x17, 0x0C, 0x1C, 0x14, 
34136
  0x03, 0x00, 0x1A, 0x20, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x11, 0x0E, 0x11, 0x26, 0x17, 
34137
  0x00, 0x00, 0x23, 0x14, 0x17, 0x11, 0x1C, 0x14, 0x03, 0x00, 0x1A, 0x1A, 0x00, 0x00, 0x1A, 0x01, 
34138
  0x00, 0x00, 0x47, 0x12, 0x0F, 0x12, 0x26, 0x17, 0x00, 0x00, 0x23, 0x14, 0x17, 0x12, 0x1C, 0x14, 
34139
  0x03, 0x00, 0x1A, 0x14, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x13, 0x10, 0x13, 0x26, 0x17, 
34140
  0x00, 0x00, 0x23, 0x14, 0x17, 0x13, 0x1C, 0x14, 0x03, 0x00, 0x1A, 0x0E, 0x00, 0x00, 0x1A, 0x01, 
34141
  0x00, 0x00, 0x38, 0x14, 0x0D, 0x0C, 0x38, 0x17, 0x0E, 0x11, 0x38, 0x18, 0x0F, 0x12, 0x38, 0x19, 
34142
  0x10, 0x13, 0x31, 0x16, 0x14, 0x17, 0x30, 0x18, 0x19, 0x00, 0x33, 0x1A, 0x00, 0x00, 0x30, 0x05, 
34143
  0x1A, 0x00, 0x2A, 0x17, 0x00, 0x00, 0x33, 0x14, 0x17, 0x00, 0x47, 0x15, 0x01, 0x15, 0x1A, 0xDA, 
34144
  0xFF, 0xFF, 0x1A, 0x2F, 0x00, 0x00, 0x2F, 0x07, 0x00, 0x00, 0x2A, 0x0D, 0x01, 0x00, 0x33, 0x0C, 
34145
  0x0D, 0x00, 0x19, 0x0D, 0x0C, 0x00, 0x2F, 0x07, 0x00, 0x00, 0x2A, 0x0E, 0x01, 0x00, 0x33, 0x0C, 
34146
  0x0E, 0x00, 0x19, 0x0E, 0x0C, 0x00, 0x28, 0x0C, 0x00, 0x00, 0x26, 0x10, 0x00, 0x00, 0x47, 0x0F, 
34147
  0x01, 0x10, 0x19, 0x10, 0x0F, 0x00, 0x1D, 0x10, 0x22, 0x00, 0x38, 0x0F, 0x01, 0x10, 0x19, 0x11, 
34148
  0x0F, 0x00, 0x29, 0x0F, 0x00, 0x00, 0x21, 0x12, 0x0F, 0x07, 0x1C, 0x12, 0x12, 0x00, 0x38, 0x13, 
34149
  0x0D, 0x0F, 0x19, 0x14, 0x13, 0x00, 0x38, 0x13, 0x02, 0x0F, 0x19, 0x15, 0x13, 0x00, 0x47, 0x13, 
34150
  0x15, 0x14, 0x19, 0x16, 0x13, 0x00, 0x26, 0x17, 0x00, 0x00, 0x23, 0x13, 0x17, 0x16, 0x1C, 0x13, 
34151
  0x04, 0x00, 0x27, 0x0C, 0x00, 0x00, 0x1A, 0x07, 0x00, 0x00, 0x1A, 0x04, 0x00, 0x00, 0x3A, 0x0D, 
34152
  0x0F, 0x16, 0x38, 0x17, 0x15, 0x16, 0x3A, 0x0E, 0x0F, 0x17, 0x05, 0x0F, 0x0F, 0x01, 0x1A, 0xEE, 
34153
  0xFF, 0xFF, 0x1C, 0x0C, 0x03, 0x00, 0x1A, 0x0A, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x2F, 0x11, 
34154
  0x00, 0x00, 0x32, 0x0E, 0x00, 0x00, 0x33, 0x0F, 0x00, 0x00, 0x30, 0x05, 0x0F, 0x00, 0x2A, 0x13, 
34155
  0x00, 0x00, 0x33, 0x12, 0x13, 0x00, 0x47, 0x10, 0x01, 0x10, 0x1A, 0xDF, 0xFF, 0xFF, 0x03, 0x05, 
34156
  0x00, 0x00, 0x83, 0xD2, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34157
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34158
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34159
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34160
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34161
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34162
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34163
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34164
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34165
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34166
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34167
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34168
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34169
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34170
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34171
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34172
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34173
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34174
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34175
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34176
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34177
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34178
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34179
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34180
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34181
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34182
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34183
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34184
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34185
  0x03, 0x00, 0x03, 0xBF, 0xFB, 0x01, 0xD8, 0x0B, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x6A, 
34186
  0x6F, 0x69, 0x6E, 0xCE, 0x05, 0x25, 0x2E, 0x32, 0x30, 0x73, 0xD8, 0x06, 0x65, 0x70, 0x72, 0x69, 
34187
  0x6E, 0x66, 0xCE, 0x08, 0x20, 0x23, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0xCE, 0x09, 0x2C, 0x20, 
34188
  0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x20, 0x00, 0x80, 0x94, 0x00, 0xDA, 0x80, 0xD8, 0x00, 0x80, 
34189
  0x94, 0x01, 0xDA, 0x81, 0x17, 0x03, 0x80, 0x94, 0x03, 0xDA, 0x80, 0xE7, 0x07, 0x80, 0x94, 0x05, 
34190
  0xDA, 0x80, 0xE8, 0x0B, 0x80, 0x94, 0x07, 0xCF, 0x04, 0x64, 0x61, 0x73, 0x6D, 0x0E, 0x80, 0x94, 
34191
  0x09, 0xDA, 0x81, 0x19, 0x12, 0x80, 0x94, 0x0B, 0xDA, 0x81, 0x45, 0x15, 0x80, 0x94, 0x0D, 0xCF, 
34192
  0x09, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x6D, 0x61, 0x70, 0x16, 0x80, 0x94, 0x0E, 0xCF, 0x08, 
34193
  0x6C, 0x61, 0x73, 0x74, 0x2D, 0x6C, 0x6F, 0x63, 0x39, 0x40, 0x12, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
34194
  0x30, 0x30, 0x35, 0x56, 0x3A, 0x3F, 0x12, 0xCF, 0x09, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 
34195
  0x74, 0x73, 0x4C, 0x80, 0x94, 0x14, 0xCF, 0x07, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x4D, 
34196
  0x80, 0x92, 0x15, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x57, 0x4F, 0x80, 0x92, 0x17, 
34197
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x58, 0x52, 0x80, 0x92, 0x18, 0xDA, 0x80, 0x90, 
34198
  0x55, 0x80, 0x90, 0x1A, 0xCF, 0x05, 0x69, 0x6E, 0x73, 0x74, 0x72, 0x7D, 0x80, 0x8D, 0x1C, 0xCF, 
34199
  0x02, 0x73, 0x6C, 0x7F, 0x80, 0x8D, 0x1D, 0xCF, 0x02, 0x73, 0x63, 0x80, 0x82, 0x80, 0x8D, 0x1B, 
34200
  0xCF, 0x03, 0x6C, 0x6F, 0x63, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 
34201
  0x00, 0x19, 0x03, 0x02, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x2F, 0x04, 0x00, 0x00, 0x33, 0x04, 0x03, 
34202
  0x00, 0x19, 0x05, 0x04, 0x00, 0x2F, 0x05, 0x00, 0x00, 0x2A, 0x07, 0x02, 0x00, 0x33, 0x06, 0x07, 
34203
  0x00, 0x19, 0x07, 0x06, 0x00, 0x2A, 0x09, 0x03, 0x00, 0x38, 0x08, 0x07, 0x09, 0x19, 0x09, 0x08, 
34204
  0x00, 0x2A, 0x0A, 0x04, 0x00, 0x2F, 0x0A, 0x00, 0x00, 0x33, 0x0A, 0x03, 0x00, 0x19, 0x0B, 0x0A, 
34205
  0x00, 0x2A, 0x0D, 0x05, 0x00, 0x38, 0x0C, 0x07, 0x0D, 0x19, 0x0D, 0x0C, 0x00, 0x2A, 0x0E, 0x06, 
34206
  0x00, 0x2A, 0x10, 0x07, 0x00, 0x33, 0x0F, 0x10, 0x00, 0x2A, 0x10, 0x08, 0x00, 0x30, 0x10, 0x0F, 
34207
  0x00, 0x2A, 0x11, 0x09, 0x00, 0x33, 0x10, 0x11, 0x00, 0x2A, 0x11, 0x0A, 0x00, 0x33, 0x0F, 0x11, 
34208
  0x00, 0x2F, 0x0F, 0x00, 0x00, 0x2A, 0x12, 0x0B, 0x00, 0x33, 0x11, 0x12, 0x00, 0x2A, 0x0F, 0x0C, 
34209
  0x00, 0x30, 0x0F, 0x11, 0x00, 0x2A, 0x12, 0x09, 0x00, 0x33, 0x0F, 0x12, 0x00, 0x2A, 0x12, 0x0D, 
34210
  0x00, 0x39, 0x11, 0x07, 0x12, 0x1E, 0x11, 0x02, 0x00, 0x2A, 0x11, 0x0E, 0x00, 0x2A, 0x12, 0x0F, 
34211
  0x00, 0x2A, 0x13, 0x10, 0x00, 0x31, 0x07, 0x12, 0x13, 0x2A, 0x13, 0x11, 0x00, 0x33, 0x12, 0x13, 
34212
  0x00, 0x2A, 0x13, 0x12, 0x00, 0x2A, 0x14, 0x13, 0x00, 0x31, 0x13, 0x11, 0x14, 0x2A, 0x13, 0x14, 
34213
  0x00, 0x30, 0x12, 0x13, 0x00, 0x2A, 0x14, 0x09, 0x00, 0x33, 0x13, 0x14, 0x00, 0x2A, 0x11, 0x15, 
34214
  0x00, 0x2F, 0x11, 0x00, 0x00, 0x33, 0x11, 0x07, 0x00, 0x19, 0x12, 0x11, 0x00, 0x1C, 0x12, 0x06, 
34215
  0x00, 0x2A, 0x11, 0x16, 0x00, 0x30, 0x11, 0x12, 0x00, 0x2A, 0x14, 0x17, 0x00, 0x33, 0x11, 0x14, 
34216
  0x00, 0x1A, 0x01, 0x00, 0x00, 0x2A, 0x11, 0x18, 0x00, 0x2F, 0x11, 0x00, 0x00, 0x33, 0x11, 0x03, 
34217
  0x00, 0x2A, 0x12, 0x19, 0x00, 0x30, 0x12, 0x11, 0x00, 0x2A, 0x14, 0x17, 0x00, 0x33, 0x12, 0x14, 
34218
  0x00, 0x2A, 0x11, 0x1A, 0x00, 0x29, 0x14, 0x14, 0x00, 0x30, 0x11, 0x14, 0x00, 0x2A, 0x14, 0x1B, 
34219
  0x00, 0x33, 0x11, 0x14, 0x00, 0x19, 0x14, 0x11, 0x00, 0x29, 0x15, 0x00, 0x00, 0x3D, 0x16, 0x09, 
34220
  0x00, 0x19, 0x17, 0x16, 0x00, 0x21, 0x16, 0x15, 0x17, 0x1C, 0x16, 0x41, 0x00, 0x19, 0x18, 0x15, 
34221
  0x00, 0x2F, 0x18, 0x00, 0x00, 0x33, 0x19, 0x09, 0x00, 0x19, 0x1A, 0x19, 0x00, 0x2F, 0x1A, 0x00, 
34222
  0x00, 0x2A, 0x1C, 0x1C, 0x00, 0x33, 0x1B, 0x1C, 0x00, 0x2A, 0x1D, 0x1D, 0x00, 0x23, 0x1C, 0x1B, 
34223
  0x1D, 0x1C, 0x1C, 0x03, 0x00, 0x2A, 0x19, 0x1E, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x2A, 0x19, 0x1A, 
34224
  0x00, 0x2F, 0x19, 0x00, 0x00, 0x2A, 0x1C, 0x1F, 0x00, 0x33, 0x1B, 0x1C, 0x00, 0x23, 0x1B, 0x18, 
34225
  0x0B, 0x1C, 0x1B, 0x03, 0x00, 0x2A, 0x19, 0x20, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x2A, 0x19, 0x21, 
34226
  0x00, 0x2F, 0x19, 0x00, 0x00, 0x2A, 0x1C, 0x1F, 0x00, 0x33, 0x1B, 0x1C, 0x00, 0x2A, 0x19, 0x22, 
34227
  0x00, 0x30, 0x19, 0x1A, 0x00, 0x2A, 0x1B, 0x23, 0x00, 0x33, 0x19, 0x1B, 0x00, 0x2A, 0x1B, 0x1A, 
34228
  0x00, 0x30, 0x19, 0x1B, 0x00, 0x2A, 0x1C, 0x24, 0x00, 0x33, 0x1B, 0x1C, 0x00, 0x30, 0x1B, 0x14, 
34229
  0x00, 0x2A, 0x1C, 0x22, 0x00, 0x33, 0x19, 0x1C, 0x00, 0x2A, 0x1B, 0x25, 0x00, 0x30, 0x1B, 0x19, 
34230
  0x00, 0x2A, 0x1C, 0x26, 0x00, 0x33, 0x1B, 0x1C, 0x00, 0x1C, 0x0D, 0x15, 0x00, 0x2F, 0x18, 0x00, 
34231
  0x00, 0x33, 0x19, 0x0D, 0x00, 0x3B, 0x1B, 0x19, 0x00, 0x19, 0x1C, 0x1B, 0x00, 0x3B, 0x1B, 0x19, 
34232
  0x01, 0x19, 0x1D, 0x1B, 0x00, 0x30, 0x1C, 0x1D, 0x00, 0x43, 0x19, 0x00, 0x00, 0x19, 0x1B, 0x19, 
34233
  0x00, 0x48, 0x19, 0x1B, 0x0E, 0x1C, 0x19, 0x09, 0x00, 0x19, 0x0E, 0x1B, 0x00, 0x2A, 0x1E, 0x27, 
34234
  0x00, 0x2A, 0x1F, 0x28, 0x00, 0x31, 0x1E, 0x1C, 0x1F, 0x2F, 0x1D, 0x00, 0x00, 0x2A, 0x1F, 0x1F, 
34235
  0x00, 0x33, 0x1E, 0x1F, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x2A, 0x1B, 0x09, 
34236
  0x00, 0x33, 0x19, 0x1B, 0x00, 0x05, 0x15, 0x15, 0x01, 0x1A, 0xBF, 0xFF, 0xFF, 0x2A, 0x15, 0x09, 
34237
  0x00, 0x34, 0x15, 0x00, 0x00, 0x8D, 0xA7, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x0F, 
34238
  0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x01, 0x13, 
34239
  0x00, 0x13, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x05, 0x01, 0x14, 0x00, 0x14, 
34240
  0x00, 0x05, 0x01, 0x05, 0x01, 0x20, 0x00, 0x20, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
34241
  0x01, 0x2C, 0x00, 0x2C, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
34242
  0x00, 0x05, 0x01, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 
34243
  0x00, 0x42, 0x00, 0x42, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
34244
  0x00, 0x05, 0x01, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x05, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 
34245
  0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x02, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x05, 0x00, 
34246
  0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 
34247
  0x05, 0x01, 0x05, 0x00, 0x18, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x18, 0x00, 
34248
  0x18, 0xBF, 0xFF, 0x05, 0x02, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0E, 
34249
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x12, 0x00, 0x0E, 
34250
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x2C, 0x00, 0x2C, 
34251
  0x00, 0x2C, 0x00, 0x2C, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x17, 0x00, 0x17, 
34252
  0x00, 0x17, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x01, 0x17, 0x00, 0x17, 
34253
  0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x13, 0x00, 0x13, 0xBF, 0xFF, 0x09, 0x02, 
34254
  0x11, 0x00, 0x0B, 0x01, 0x0D, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
34255
  0x0D, 0xBF, 0xFE, 0x0B, 0xBF, 0xFD, 0x07, 0x06, 0x07, 0x00, 0x07, 0xBF, 0xF5, 0x05, 0x00, 0x05, 
34256
  0x0C, 0x05, 0x00, 0x05, 0xDA, 0x08, 0xCE, 0x45, 0x28, 0x2E, 0x70, 0x70, 0x61, 0x73, 0x6D, 0x20, 
34257
  0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x50, 0x72, 0x65, 0x74, 0x74, 0x79, 0x20, 
34258
  0x70, 0x72, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x73, 0x73, 0x65, 0x6D, 
34259
  0x62, 0x6C, 0x79, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 
34260
  0x65, 0x6E, 0x74, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xCF, 0x06, 0x2E, 
34261
  0x6E, 0x65, 0x78, 0x74, 0x63, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8D, 0xF7, 
34262
  0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x00, 0x01, 0x02, 0x05, 
34263
  0x00, 0x02, 0xCE, 0x06, 0x2E, 0x6E, 0x65, 0x78, 0x74, 0x63, 0xDA, 0x18, 0xDA, 0x81, 0x4A, 0xDA, 
34264
  0x81, 0x1F, 0x00, 0x05, 0x00, 0xDA, 0x80, 0xD8, 0x00, 0x05, 0x01, 0xDA, 0x81, 0xBF, 0x2A, 0x03, 
34265
  0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x03, 0x01, 0x00, 0x34, 0x03, 
34266
  0x00, 0x00, 0x8D, 0xFA, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x08, 0xCE, 
34267
  0x4C, 0x28, 0x2E, 0x6E, 0x65, 0x78, 0x74, 0x63, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 0x29, 
34268
  0x0A, 0x0A, 0x47, 0x6F, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 
34269
  0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x2C, 0x20, 0x63, 0x6C, 0x65, 
34270
  0x61, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 
34271
  0x74, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x2E, 0xDA, 0x80, 0xE0, 
34272
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8D, 0x6A, 0x01, 0xDA, 0x06, 0xDA, 0x80, 
34273
  0xDD, 0xDA, 0x08, 0xCE, 0x2F, 0x28, 0x2E, 0x66, 0x69, 0x62, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x47, 
34274
  0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 
34275
  0x69, 0x62, 0x65, 0x72, 0x20, 0x62, 0x65, 0x69, 0x6E, 0x67, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 
34276
  0x67, 0x65, 0x64, 0x2E, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x08, 0x01, 0x01, 0xCD, 0x7F, 
34277
  0xFF, 0xFF, 0xFF, 0x00, 0x12, 0x00, 0x09, 0xCE, 0x0A, 0x6D, 0x65, 0x72, 0x67, 0x65, 0x2D, 0x69, 
34278
  0x6E, 0x74, 0x6F, 0xDA, 0x18, 0x00, 0x12, 0x00, 0xCF, 0x03, 0x74, 0x61, 0x62, 0x00, 0x12, 0x01, 
34279
  0xCF, 0x05, 0x63, 0x6F, 0x6C, 0x6C, 0x73, 0x00, 0x12, 0x02, 0xCF, 0x0A, 0x6D, 0x65, 0x72, 0x67, 
34280
  0x65, 0x2D, 0x69, 0x6E, 0x74, 0x6F, 0x00, 0x11, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
34281
  0x32, 0x41, 0x02, 0x11, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x7A, 0x05, 0x11, 
34282
  0x05, 0xCF, 0x01, 0x63, 0x05, 0x0F, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x79, 
34283
  0x08, 0x0F, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x78, 0x0A, 0x0F, 0x03, 0xCF, 
34284
  0x03, 0x6B, 0x65, 0x79, 0x26, 0x04, 0x00, 0x00, 0x47, 0x03, 0x01, 0x04, 0x19, 0x04, 0x03, 0x00, 
34285
  0x1D, 0x04, 0x0E, 0x00, 0x38, 0x03, 0x01, 0x04, 0x19, 0x05, 0x03, 0x00, 0x26, 0x06, 0x00, 0x00, 
34286
  0x47, 0x03, 0x05, 0x06, 0x19, 0x06, 0x03, 0x00, 0x1D, 0x06, 0x06, 0x00, 0x19, 0x03, 0x06, 0x00, 
34287
  0x38, 0x07, 0x05, 0x03, 0x3A, 0x00, 0x03, 0x07, 0x47, 0x06, 0x05, 0x06, 0x1A, 0xFB, 0xFF, 0xFF, 
34288
  0x47, 0x04, 0x01, 0x04, 0x1A, 0xF3, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x86, 0x17, 0x03, 0x00, 
34289
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34290
  0x03, 0x00, 0x03, 0x02, 0x12, 0x00, 0x05, 0xBF, 0xFE, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
34291
  0xBF, 0xFC, 0x01, 0xCE, 0x0F, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x64, 0x65, 
34292
  0x62, 0x75, 0x67, 0x5B, 0xCE, 0x12, 0x5D, 0x20, 0x2D, 0x20, 0x28, 0x71, 0x75, 0x69, 0x74, 0x29, 
34293
  0x20, 0x74, 0x6F, 0x20, 0x65, 0x78, 0x69, 0x74, 0xDA, 0x80, 0xFE, 0xDA, 0x80, 0xC4, 0xD1, 0x01, 
34294
  0xDA, 0x80, 0xB8, 0xD0, 0x06, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0x73, 0xD0, 0x09, 0x6F, 0x6E, 0x2D, 
34295
  0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0xD0, 0x03, 0x65, 0x6E, 0x76, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 
34296
  0x00, 0x00, 0x43, 0x01, 0x01, 0x01, 0x25, 0x81, 0x37, 0x00, 0x05, 0x2F, 0xCE, 0x0B, 0x72, 0x75, 
34297
  0x6E, 0x2D, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0xDA, 0x18, 0xD0, 0x04, 0x72, 0x65, 0x61, 
34298
  0x64, 0xD0, 0x0E, 0x6F, 0x6E, 0x2D, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x65, 0x72, 0x72, 0x6F, 
34299
  0x72, 0xD0, 0x0B, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2D, 0x66, 0x6C, 0x61, 0x67, 0x73, 0xDA, 0x81, 
34300
  0xD8, 0xD0, 0x10, 0x6F, 0x6E, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x2D, 0x65, 0x72, 
34301
  0x72, 0x6F, 0x72, 0xDA, 0x81, 0xD6, 0xD0, 0x06, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0xDA, 0x81, 
34302
  0xD7, 0xDA, 0x80, 0xEF, 0xD0, 0x09, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x6F, 0x72, 0xD0, 
34303
  0x12, 0x6F, 0x6E, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x2D, 0x77, 0x61, 0x72, 0x6E, 
34304
  0x69, 0x6E, 0x67, 0xD0, 0x08, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x65, 0x72, 0xD8, 0x0D, 0x66, 
34305
  0x69, 0x62, 0x65, 0x72, 0x2F, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0xDA, 0x80, 0xCB, 0xDA, 
34306
  0x80, 0xC6, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0B, 0x05, 0x03, 0x05, 0x0C, 0x25, 0x00, 
34307
  0x07, 0xCE, 0x0B, 0x62, 0x61, 0x64, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0xDA, 0x18, 
34308
  0xDA, 0x81, 0x5F, 0xDA, 0x80, 0xDF, 0xCE, 0x05, 0x1B, 0x5B, 0x33, 0x31, 0x6D, 0xDA, 0x80, 0xC5, 
34309
  0xCE, 0x01, 0x3A, 0xCE, 0x11, 0x3A, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x65, 
34310
  0x72, 0x72, 0x6F, 0x72, 0x3A, 0x20, 0xDA, 0x81, 0x87, 0xDA, 0x80, 0xC6, 0xDA, 0x80, 0xFE, 0xD7, 
34311
  0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x0A, 0x03, 0x03, 0x03, 0x08, 0x25, 0x00, 0x01, 0x07, 0xCE, 
34312
  0x0E, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x2D, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x63, 0x6F, 0x6C, 0xDA, 
34313
  0x18, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 0x06, 0x00, 0x02, 
34314
  0xCE, 0x07, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3F, 0xDA, 0x18, 0xDA, 0x2C, 0xDA, 0x2D, 0x00, 
34315
  0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xCF, 0x07, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3F, 
34316
  0x2F, 0x00, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x2A, 0x04, 0x01, 0x00, 
34317
  0x23, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x66, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2D, 
34318
  0x00, 0x2D, 0x00, 0x2D, 0xD0, 0x01, 0x72, 0xDA, 0x80, 0xF3, 0xD0, 0x02, 0x74, 0x69, 0xDA, 0x81, 
34319
  0x5E, 0xD0, 0x05, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0xDA, 0x80, 0xBE, 0xDA, 0x80, 0xBF, 0x00, 0x25, 
34320
  0x00, 0xCF, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x00, 0x25, 0x01, 0xCF, 0x04, 0x6C, 0x69, 0x6E, 
34321
  0x65, 0x00, 0x25, 0x02, 0xCF, 0x03, 0x63, 0x6F, 0x6C, 0x00, 0x25, 0x03, 0xCF, 0x0E, 0x70, 0x72, 
34322
  0x69, 0x6E, 0x74, 0x2D, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x63, 0x6F, 0x6C, 0x0D, 0x25, 0x05, 0xCF, 
34323
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x73, 0x14, 0x24, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
34324
  0x30, 0x30, 0x34, 0x71, 0x17, 0x24, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x72, 
34325
  0x1C, 0x01, 0x02, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 
34326
  0x2A, 0x05, 0x00, 0x00, 0x33, 0x04, 0x05, 0x00, 0x1C, 0x04, 0x02, 0x00, 0x1A, 0x02, 0x00, 0x00, 
34327
  0x04, 0x00, 0x00, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x30, 0x00, 0x04, 0x00, 0x2A, 0x05, 0x02, 0x00, 
34328
  0x33, 0x04, 0x05, 0x00, 0x19, 0x05, 0x04, 0x00, 0x1C, 0x05, 0x16, 0x00, 0x2E, 0x04, 0x00, 0x00, 
34329
  0x2A, 0x06, 0x03, 0x00, 0x30, 0x04, 0x06, 0x00, 0x2A, 0x07, 0x04, 0x00, 0x33, 0x06, 0x07, 0x00, 
34330
  0x19, 0x04, 0x06, 0x00, 0x26, 0x07, 0x00, 0x00, 0x35, 0x06, 0x04, 0x07, 0x19, 0x07, 0x06, 0x00, 
34331
  0x2F, 0x05, 0x00, 0x00, 0x2A, 0x08, 0x05, 0x00, 0x33, 0x06, 0x08, 0x00, 0x2F, 0x04, 0x00, 0x00, 
34332
  0x2A, 0x08, 0x06, 0x00, 0x33, 0x06, 0x08, 0x00, 0x2A, 0x09, 0x07, 0x00, 0x23, 0x08, 0x06, 0x09, 
34333
  0x1C, 0x08, 0x02, 0x00, 0x03, 0x07, 0x00, 0x00, 0x37, 0x06, 0x07, 0x04, 0x03, 0x06, 0x00, 0x00, 
34334
  0x04, 0x00, 0x00, 0x00, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0C, 0x39, 0x01, 
34335
  0x05, 0xDA, 0x18, 0xDA, 0x80, 0xF6, 0xDA, 0x80, 0xF7, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
34336
  0x03, 0x01, 0x01, 0x01, 0x00, 0x02, 0x00, 0x02, 0xCE, 0x03, 0x64, 0x65, 0x63, 0xDA, 0x18, 0x00, 
34337
  0x02, 0x00, 0xDA, 0x1E, 0x00, 0x02, 0x01, 0xCF, 0x03, 0x64, 0x65, 0x63, 0x05, 0x02, 0x00, 0xFF, 
34338
  0x03, 0x02, 0x00, 0x00, 0x80, 0x93, 0x20, 0x00, 0x20, 0xDA, 0x80, 0xFD, 0xD8, 0x0B, 0x73, 0x74, 
34339
  0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0xD8, 0x0C, 0x73, 0x74, 0x72, 0x69, 0x6E, 
34340
  0x67, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xDA, 0x81, 0x89, 0xDA, 0x80, 0xFE, 0xDA, 0x74, 0xDA, 
34341
  0x81, 0x82, 0xDA, 0x81, 0x83, 0xCE, 0x01, 0x5E, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x80, 0xFB, 0x05, 
34342
  0x39, 0x01, 0xCF, 0x0B, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2D, 0x63, 0x6F, 0x64, 0x65, 0x06, 
34343
  0x39, 0x02, 0xCF, 0x05, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x0B, 0x1A, 0x04, 0xCF, 0x07, 0x5F, 0x30, 
34344
  0x30, 0x30, 0x30, 0x34, 0x74, 0x1F, 0x38, 0x04, 0xCF, 0x08, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x65, 
34345
  0x6E, 0x64, 0x2B, 0x00, 0x00, 0x05, 0x2A, 0x01, 0x00, 0x00, 0x30, 0x00, 0x01, 0x00, 0x2A, 0x01, 
34346
  0x01, 0x00, 0x33, 0x00, 0x01, 0x00, 0x19, 0x01, 0x00, 0x00, 0x29, 0x02, 0x00, 0x00, 0x2B, 0x03, 
34347
  0x00, 0x01, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x04, 0x02, 0x00, 0x33, 0x03, 0x04, 0x00, 0x19, 0x04, 
34348
  0x03, 0x00, 0x20, 0x03, 0x04, 0x00, 0x1C, 0x03, 0x0D, 0x00, 0x1C, 0x02, 0x02, 0x00, 0x1A, 0x02, 
34349
  0x00, 0x00, 0x1A, 0x0A, 0x00, 0x00, 0x2A, 0x05, 0x03, 0x00, 0x31, 0x05, 0x01, 0x02, 0x2A, 0x05, 
34350
  0x04, 0x00, 0x33, 0x02, 0x05, 0x00, 0x1C, 0x02, 0x03, 0x00, 0x05, 0x02, 0x02, 0x01, 0x1A, 0x01, 
34351
  0x00, 0x00, 0x05, 0x04, 0x04, 0xFF, 0x1A, 0xF3, 0xFF, 0xFF, 0x1C, 0x02, 0x1E, 0x00, 0x2A, 0x03, 
34352
  0x03, 0x00, 0x31, 0x03, 0x01, 0x02, 0x2A, 0x04, 0x04, 0x00, 0x33, 0x03, 0x04, 0x00, 0x19, 0x04, 
34353
  0x03, 0x00, 0x31, 0x01, 0x02, 0x04, 0x2A, 0x05, 0x05, 0x00, 0x33, 0x03, 0x05, 0x00, 0x2A, 0x05, 
34354
  0x06, 0x00, 0x30, 0x05, 0x03, 0x00, 0x2A, 0x06, 0x07, 0x00, 0x33, 0x05, 0x06, 0x00, 0x2B, 0x03, 
34355
  0x00, 0x02, 0x1C, 0x03, 0x0F, 0x00, 0x2B, 0x03, 0x00, 0x02, 0x06, 0x02, 0x02, 0x03, 0x2B, 0x03, 
34356
  0x00, 0x02, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x05, 0x08, 0x00, 0x33, 0x03, 0x05, 0x00, 0x2A, 0x05, 
34357
  0x09, 0x00, 0x30, 0x05, 0x03, 0x00, 0x2A, 0x06, 0x0A, 0x00, 0x33, 0x05, 0x06, 0x00, 0x2A, 0x03, 
34358
  0x0B, 0x00, 0x30, 0x05, 0x03, 0x00, 0x2A, 0x03, 0x07, 0x00, 0x34, 0x03, 0x00, 0x00, 0x04, 0x00, 
34359
  0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x89, 0x42, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 
34360
  0x16, 0x00, 0x16, 0x00, 0x05, 0x01, 0x05, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
34361
  0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x15, 0x01, 0x12, 0x00, 0x12, 0x00, 
34362
  0x12, 0x00, 0x12, 0x01, 0x07, 0x00, 0x11, 0x00, 0x07, 0xBF, 0xFD, 0x05, 0x00, 0x05, 0x04, 0x05, 
34363
  0x01, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x07, 0x01, 0x14, 0x00, 0x14, 0x00, 0x14, 
34364
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x01, 0x09, 0x00, 0x09, 
34365
  0x01, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 
34366
  0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFE, 0x07, 0xBF, 0xFD, 0x05, 0x89, 0x3F, 
34367
  0x03, 0x00, 0x03, 0x00, 0x10, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x03, 0x00, 
34368
  0x1B, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34369
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34370
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34371
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x26, 0x00, 0x00, 0x00, 0xCE, 0x04, 0x1B, 
34372
  0x5B, 0x30, 0x6D, 0xDA, 0x80, 0xC7, 0x00, 0x25, 0x00, 0xCF, 0x03, 0x6D, 0x73, 0x67, 0x00, 0x25, 
34373
  0x01, 0xCF, 0x06, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x66, 0x00, 0x25, 0x02, 0xDA, 0x81, 0xF1, 0x00, 
34374
  0x25, 0x03, 0xDA, 0x81, 0xF2, 0x00, 0x25, 0x04, 0xDA, 0x81, 0xF3, 0x00, 0x25, 0x05, 0xCF, 0x0B, 
34375
  0x62, 0x61, 0x64, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x04, 0x25, 0x07, 0xCF, 0x02, 
34376
  0x65, 0x63, 0x2A, 0x06, 0x00, 0x00, 0x2F, 0x06, 0x00, 0x00, 0x2A, 0x07, 0x01, 0x00, 0x33, 0x06, 
34377
  0x07, 0x00, 0x19, 0x07, 0x06, 0x00, 0x1C, 0x07, 0x03, 0x00, 0x2A, 0x08, 0x02, 0x00, 0x1A, 0x02, 
34378
  0x00, 0x00, 0x2A, 0x08, 0x03, 0x00, 0x2A, 0x09, 0x04, 0x00, 0x31, 0x08, 0x02, 0x09, 0x2A, 0x09, 
34379
  0x04, 0x00, 0x31, 0x03, 0x09, 0x04, 0x2A, 0x09, 0x05, 0x00, 0x2F, 0x09, 0x00, 0x00, 0x2A, 0x0A, 
34380
  0x06, 0x00, 0x33, 0x09, 0x0A, 0x00, 0x1C, 0x01, 0x06, 0x00, 0x2A, 0x08, 0x03, 0x00, 0x31, 0x01, 
34381
  0x00, 0x08, 0x2A, 0x0A, 0x07, 0x00, 0x33, 0x08, 0x0A, 0x00, 0x1A, 0x04, 0x00, 0x00, 0x2F, 0x00, 
34382
  0x00, 0x00, 0x2A, 0x0A, 0x08, 0x00, 0x33, 0x08, 0x0A, 0x00, 0x1C, 0x07, 0x09, 0x00, 0x31, 0x02, 
34383
  0x03, 0x04, 0x2A, 0x0A, 0x09, 0x00, 0x33, 0x08, 0x0A, 0x00, 0x2A, 0x08, 0x0A, 0x00, 0x2F, 0x08, 
34384
  0x00, 0x00, 0x2A, 0x0A, 0x06, 0x00, 0x33, 0x08, 0x0A, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x2A, 0x08, 
34385
  0x0B, 0x00, 0x34, 0x08, 0x00, 0x00, 0x89, 0x64, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
34386
  0x03, 0x02, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 0x03, 
34387
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x08, 0x03, 0x01, 0x05, 0x00, 0x05, 
34388
  0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x02, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x03, 0x01, 
34389
  0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFE, 0x03, 
34390
  0x03, 0x03, 0x00, 0x03, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 0x05, 0x03, 0x05, 0x0C, 
34391
  0x20, 0x00, 0x07, 0xCE, 0x0C, 0x77, 0x61, 0x72, 0x6E, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 
34392
  0x65, 0xDA, 0x18, 0xDA, 0x81, 0x5F, 0xDA, 0x80, 0xDF, 0xCE, 0x05, 0x1B, 0x5B, 0x33, 0x33, 0x6D, 
34393
  0xDA, 0x80, 0xC5, 0xDA, 0x81, 0xE7, 0xCE, 0x13, 0x3A, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 
34394
  0x65, 0x20, 0x77, 0x61, 0x72, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x28, 0xCE, 0x03, 0x29, 0x3A, 0x20, 
34395
  0xDA, 0x81, 0x87, 0xDA, 0x80, 0xFE, 0xDA, 0x81, 0xE9, 0xDA, 0x82, 0x02, 0xDA, 0x80, 0xC7, 0x00, 
34396
  0x20, 0x00, 0xDA, 0x82, 0x03, 0x00, 0x20, 0x01, 0xDA, 0x80, 0xBB, 0x00, 0x20, 0x02, 0xDA, 0x81, 
34397
  0xF1, 0x00, 0x20, 0x03, 0xDA, 0x81, 0xF2, 0x00, 0x20, 0x04, 0xDA, 0x81, 0xF3, 0x00, 0x20, 0x05, 
34398
  0xCF, 0x0C, 0x77, 0x61, 0x72, 0x6E, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x04, 0x20, 
34399
  0x07, 0xDA, 0x82, 0x06, 0x2A, 0x06, 0x00, 0x00, 0x2F, 0x06, 0x00, 0x00, 0x2A, 0x07, 0x01, 0x00, 
34400
  0x33, 0x06, 0x07, 0x00, 0x19, 0x07, 0x06, 0x00, 0x1C, 0x07, 0x03, 0x00, 0x2A, 0x08, 0x02, 0x00, 
34401
  0x1A, 0x02, 0x00, 0x00, 0x2A, 0x08, 0x03, 0x00, 0x2A, 0x09, 0x04, 0x00, 0x31, 0x08, 0x02, 0x09, 
34402
  0x2A, 0x09, 0x04, 0x00, 0x31, 0x03, 0x09, 0x04, 0x2A, 0x09, 0x05, 0x00, 0x2A, 0x0A, 0x06, 0x00, 
34403
  0x31, 0x09, 0x01, 0x0A, 0x2A, 0x0A, 0x07, 0x00, 0x33, 0x09, 0x0A, 0x00, 0x2F, 0x00, 0x00, 0x00, 
34404
  0x2A, 0x0A, 0x08, 0x00, 0x33, 0x08, 0x0A, 0x00, 0x1C, 0x07, 0x09, 0x00, 0x31, 0x02, 0x03, 0x04, 
34405
  0x2A, 0x0B, 0x09, 0x00, 0x33, 0x0A, 0x0B, 0x00, 0x2A, 0x0A, 0x0A, 0x00, 0x2F, 0x0A, 0x00, 0x00, 
34406
  0x2A, 0x0B, 0x07, 0x00, 0x33, 0x0A, 0x0B, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x2A, 0x0A, 0x0B, 0x00, 
34407
  0x34, 0x0A, 0x00, 0x00, 0x89, 0x52, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x02, 
34408
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
34409
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x08, 0x03, 0x00, 0x03, 0x00, 0x03, 
34410
  0x01, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
34411
  0xBF, 0xFE, 0x03, 0x03, 0x03, 0x00, 0x03, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0D, 0x02, 
34412
  0x02, 0x02, 0x0B, 0x21, 0x00, 0x06, 0xCE, 0x09, 0x62, 0x61, 0x64, 0x2D, 0x70, 0x61, 0x72, 0x73, 
34413
  0x65, 0xDA, 0x18, 0xDA, 0x81, 0x5F, 0xDA, 0x80, 0xDF, 0xD0, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 
34414
  0xDA, 0x81, 0xE6, 0xDA, 0x80, 0xC5, 0xD0, 0x05, 0x65, 0x72, 0x72, 0x6F, 0x72, 0xDA, 0x82, 0x02, 
34415
  0xDA, 0x81, 0xE7, 0xCE, 0x0F, 0x3A, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 0x65, 0x72, 0x72, 
34416
  0x6F, 0x72, 0x3A, 0x20, 0xDA, 0x80, 0xFE, 0xDA, 0x80, 0xC7, 0x00, 0x21, 0x00, 0xDA, 0x64, 0x00, 
34417
  0x21, 0x01, 0xDA, 0x81, 0xF1, 0x00, 0x21, 0x02, 0xCF, 0x09, 0x62, 0x61, 0x64, 0x2D, 0x70, 0x61, 
34418
  0x72, 0x73, 0x65, 0x04, 0x21, 0x04, 0xDA, 0x82, 0x06, 0x09, 0x21, 0x07, 0xDA, 0x81, 0xF2, 0x0B, 
34419
  0x21, 0x08, 0xDA, 0x81, 0xF3, 0x2A, 0x03, 0x00, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x04, 0x01, 
34420
  0x00, 0x33, 0x03, 0x04, 0x00, 0x19, 0x04, 0x03, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x06, 0x02, 
34421
  0x00, 0x33, 0x05, 0x06, 0x00, 0x3B, 0x06, 0x05, 0x00, 0x19, 0x07, 0x06, 0x00, 0x3B, 0x06, 0x05, 
34422
  0x01, 0x19, 0x08, 0x06, 0x00, 0x1C, 0x04, 0x03, 0x00, 0x2A, 0x06, 0x03, 0x00, 0x1A, 0x02, 0x00, 
34423
  0x00, 0x2A, 0x06, 0x04, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x0A, 0x05, 0x00, 0x33, 0x09, 0x0A, 
34424
  0x00, 0x1C, 0x04, 0x03, 0x00, 0x2A, 0x0A, 0x06, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x2A, 0x0A, 0x04, 
34425
  0x00, 0x2A, 0x0B, 0x07, 0x00, 0x31, 0x06, 0x01, 0x0B, 0x2A, 0x0B, 0x07, 0x00, 0x31, 0x07, 0x0B, 
34426
  0x08, 0x2A, 0x0B, 0x08, 0x00, 0x31, 0x0B, 0x09, 0x0A, 0x2A, 0x0C, 0x09, 0x00, 0x33, 0x0B, 0x0C, 
34427
  0x00, 0x2A, 0x06, 0x0A, 0x00, 0x34, 0x06, 0x00, 0x00, 0x89, 0x2D, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
34428
  0x00, 0x0B, 0x00, 0x03, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
34429
  0x00, 0x03, 0x02, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x07, 0x05, 0x00, 0x05, 0x00, 0x05, 
34430
  0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xF7, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34431
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x0A, 0x03, 0x00, 0x03, 0xD0, 0x0B, 0x3C, 
34432
  0x61, 0x6E, 0x6F, 0x6E, 0x79, 0x6D, 0x6F, 0x75, 0x73, 0x3E, 0xD0, 0x03, 0x79, 0x64, 0x74, 0xDA, 
34433
  0x81, 0xEB, 0xD0, 0x0C, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x2D, 0x66, 0x69, 0x6C, 0x65, 
34434
  0xD0, 0x04, 0x65, 0x78, 0x69, 0x74, 0xD0, 0x0A, 0x65, 0x78, 0x69, 0x74, 0x2D, 0x76, 0x61, 0x6C, 
34435
  0x75, 0x65, 0xDA, 0x81, 0x79, 0xD8, 0x0A, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x6E, 0x65, 
34436
  0x77, 0xD0, 0x07, 0x63, 0x6F, 0x6E, 0x73, 0x75, 0x6D, 0x65, 0xD0, 0x07, 0x70, 0x72, 0x6F, 0x64, 
34437
  0x75, 0x63, 0x65, 0xD0, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0xD0, 0x08, 0x68, 0x61, 0x73, 
34438
  0x2D, 0x6D, 0x6F, 0x72, 0x65, 0xDA, 0x80, 0xC5, 0xD8, 0x0C, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
34439
  0x2F, 0x63, 0x6C, 0x65, 0x61, 0x72, 0xD0, 0x06, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0xD0, 0x05, 
34440
  0x66, 0x6C, 0x75, 0x73, 0x68, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x01, 0x01, 0x01, 
34441
  0x03, 0x0C, 0x00, 0x03, 0xCE, 0x08, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x3F, 0xDA, 0x18, 
34442
  0xDA, 0x2C, 0xDA, 0x5D, 0xDA, 0x80, 0x8B, 0x00, 0x0C, 0x00, 0xDA, 0x1E, 0x00, 0x0C, 0x01, 0xCF, 
34443
  0x08, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x3F, 0x03, 0x0C, 0x03, 0xDA, 0x31, 0x2F, 0x00, 
34444
  0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x19, 0x03, 0x02, 0x00, 0x2A, 0x05, 
34445
  0x01, 0x00, 0x23, 0x04, 0x03, 0x05, 0x1C, 0x04, 0x03, 0x00, 0x27, 0x05, 0x00, 0x00, 0x03, 0x05, 
34446
  0x00, 0x00, 0x2A, 0x06, 0x02, 0x00, 0x23, 0x05, 0x03, 0x06, 0x03, 0x05, 0x00, 0x00, 0x79, 0x0A, 
34447
  0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
34448
  0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0xD0, 0x03, 0x65, 0x6F, 0x66, 0xDA, 0x82, 0x10, 0x00, 0x81, 
34449
  0x37, 0x00, 0xCF, 0x04, 0x6F, 0x70, 0x74, 0x73, 0x00, 0x81, 0x37, 0x01, 0xCF, 0x0B, 0x72, 0x75, 
34450
  0x6E, 0x2D, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x02, 0x81, 0x37, 0x03, 0xCF, 0x04, 0x72, 
34451
  0x65, 0x61, 0x64, 0x05, 0x81, 0x37, 0x04, 0xCF, 0x0E, 0x6F, 0x6E, 0x2D, 0x70, 0x61, 0x72, 0x73, 
34452
  0x65, 0x2D, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x08, 0x81, 0x37, 0x05, 0xCF, 0x05, 0x67, 0x75, 0x61, 
34453
  0x72, 0x64, 0x0B, 0x81, 0x37, 0x06, 0xDA, 0x80, 0xBA, 0x0E, 0x81, 0x37, 0x07, 0xCF, 0x10, 0x6F, 
34454
  0x6E, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x2D, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x11, 
34455
  0x81, 0x37, 0x08, 0xCF, 0x06, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0x73, 0x14, 0x81, 0x37, 0x09, 0xCF, 
34456
  0x06, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x17, 0x81, 0x37, 0x0A, 0xCF, 0x08, 0x6F, 0x6E, 0x73, 
34457
  0x74, 0x61, 0x74, 0x75, 0x73, 0x1A, 0x81, 0x37, 0x0B, 0xCF, 0x0D, 0x64, 0x65, 0x66, 0x61, 0x75, 
34458
  0x6C, 0x74, 0x2D, 0x77, 0x68, 0x65, 0x72, 0x65, 0x1D, 0x81, 0x37, 0x0C, 0xCF, 0x09, 0x65, 0x76, 
34459
  0x61, 0x6C, 0x75, 0x61, 0x74, 0x6F, 0x72, 0x20, 0x81, 0x37, 0x0D, 0xCF, 0x12, 0x6F, 0x6E, 0x2D, 
34460
  0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x2D, 0x77, 0x61, 0x72, 0x6E, 0x69, 0x6E, 0x67, 0x23, 
34461
  0x81, 0x37, 0x0E, 0xCF, 0x06, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x2C, 0x32, 0x10, 0xCF, 0x07, 
34462
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x76, 0x35, 0x81, 0x37, 0x0F, 0xDA, 0x80, 0xBA, 0x3D, 0x81, 
34463
  0x37, 0x11, 0xDA, 0x82, 0x2A, 0x44, 0x81, 0x37, 0x13, 0xDA, 0x82, 0x2C, 0x4B, 0x81, 0x37, 0x15, 
34464
  0xDA, 0x82, 0x29, 0x52, 0x81, 0x37, 0x17, 0xDA, 0x82, 0x2F, 0x59, 0x81, 0x37, 0x19, 0xDA, 0x82, 
34465
  0x27, 0x61, 0x81, 0x37, 0x1B, 0xDA, 0x82, 0x2E, 0x68, 0x81, 0x37, 0x1D, 0xDA, 0x82, 0x2D, 0x6F, 
34466
  0x81, 0x37, 0x1F, 0xDA, 0x82, 0x28, 0x70, 0x81, 0x37, 0x20, 0xDA, 0x81, 0xF1, 0x79, 0x81, 0x37, 
34467
  0x22, 0xCF, 0x05, 0x6C, 0x69, 0x6E, 0x74, 0x73, 0x7B, 0x81, 0x37, 0x24, 0xCF, 0x05, 0x65, 0x76, 
34468
  0x61, 0x6C, 0x31, 0x80, 0x8B, 0x80, 0x92, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 
34469
  0x47, 0x80, 0x92, 0x81, 0x37, 0x26, 0xDA, 0x64, 0x80, 0x96, 0x81, 0x37, 0x28, 0xCF, 0x09, 0x70, 
34470
  0x2D, 0x63, 0x6F, 0x6E, 0x73, 0x75, 0x6D, 0x65, 0x80, 0x9A, 0x81, 0x37, 0x2A, 0xCF, 0x09, 0x70, 
34471
  0x2D, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x65, 0x80, 0x9E, 0x81, 0x37, 0x2C, 0xCF, 0x08, 0x70, 
34472
  0x2D, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x80, 0xA2, 0x81, 0x37, 0x2E, 0xCF, 0x0A, 0x70, 0x2D, 
34473
  0x68, 0x61, 0x73, 0x2D, 0x6D, 0x6F, 0x72, 0x65, 0x80, 0xA4, 0x81, 0x37, 0x30, 0xCF, 0x09, 0x70, 
34474
  0x61, 0x72, 0x73, 0x65, 0x2D, 0x65, 0x72, 0x72, 0x80, 0xA6, 0x81, 0x37, 0x32, 0xCF, 0x07, 0x70, 
34475
  0x72, 0x6F, 0x64, 0x75, 0x63, 0x65, 0x80, 0xAA, 0x81, 0x37, 0x34, 0xCF, 0x03, 0x62, 0x75, 0x66, 
34476
  0x80, 0xAB, 0x81, 0x37, 0x35, 0xCF, 0x0F, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2D, 0x6E, 0x6F, 
34477
  0x74, 0x2D, 0x64, 0x6F, 0x6E, 0x65, 0x80, 0xB8, 0x81, 0x15, 0x37, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
34478
  0x30, 0x30, 0x34, 0x48, 0x80, 0xCB, 0x81, 0x15, 0x39, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
34479
  0x34, 0x49, 0x80, 0xCE, 0x81, 0x15, 0x3A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x4A, 
34480
  0x80, 0xD1, 0x81, 0x15, 0x3B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x4B, 0x80, 0xD1, 
34481
  0x80, 0xDF, 0x39, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x4D, 0x80, 0xD5, 0x80, 0xDC, 
34482
  0x3E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x4C, 0x80, 0xDF, 0x80, 0xE8, 0x3B, 0xCF, 
34483
  0x09, 0x6E, 0x65, 0x77, 0x2D, 0x77, 0x68, 0x65, 0x72, 0x65, 0x80, 0xE9, 0x81, 0x15, 0x3C, 0xCF, 
34484
  0x06, 0x70, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x80, 0xEA, 0x81, 0x15, 0x3D, 0xCF, 0x07, 0x70, 0x73, 
34485
  0x74, 0x61, 0x74, 0x75, 0x73, 0x80, 0xEC, 0x81, 0x15, 0x3F, 0xDA, 0x80, 0x84, 0x2A, 0x03, 0x00, 
34486
  0x00, 0x38, 0x02, 0x00, 0x03, 0x19, 0x03, 0x02, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x38, 0x02, 0x00, 
34487
  0x04, 0x19, 0x04, 0x02, 0x00, 0x2A, 0x05, 0x02, 0x00, 0x38, 0x02, 0x00, 0x05, 0x19, 0x05, 0x02, 
34488
  0x00, 0x2A, 0x06, 0x03, 0x00, 0x38, 0x02, 0x00, 0x06, 0x19, 0x06, 0x02, 0x00, 0x2A, 0x07, 0x04, 
34489
  0x00, 0x38, 0x02, 0x00, 0x07, 0x19, 0x07, 0x02, 0x00, 0x2A, 0x08, 0x05, 0x00, 0x38, 0x02, 0x00, 
34490
  0x08, 0x19, 0x08, 0x02, 0x00, 0x2A, 0x09, 0x06, 0x00, 0x38, 0x02, 0x00, 0x09, 0x19, 0x09, 0x02, 
34491
  0x00, 0x2A, 0x0A, 0x07, 0x00, 0x38, 0x02, 0x00, 0x0A, 0x19, 0x0A, 0x02, 0x00, 0x2A, 0x0B, 0x08, 
34492
  0x00, 0x38, 0x02, 0x00, 0x0B, 0x19, 0x0B, 0x02, 0x00, 0x2A, 0x0C, 0x09, 0x00, 0x38, 0x02, 0x00, 
34493
  0x0C, 0x19, 0x0C, 0x02, 0x00, 0x2A, 0x0D, 0x0A, 0x00, 0x38, 0x02, 0x00, 0x0D, 0x19, 0x0D, 0x02, 
34494
  0x00, 0x2A, 0x0E, 0x0B, 0x00, 0x38, 0x02, 0x00, 0x0E, 0x19, 0x0E, 0x02, 0x00, 0x26, 0x10, 0x00, 
34495
  0x00, 0x23, 0x0F, 0x10, 0x06, 0x1C, 0x0F, 0x0E, 0x00, 0x2A, 0x11, 0x0C, 0x00, 0x33, 0x10, 0x11, 
34496
  0x00, 0x2F, 0x10, 0x00, 0x00, 0x2A, 0x12, 0x0D, 0x00, 0x33, 0x11, 0x12, 0x00, 0x19, 0x10, 0x11, 
34497
  0x00, 0x1C, 0x10, 0x03, 0x00, 0x19, 0x11, 0x10, 0x00, 0x1A, 0x03, 0x00, 0x00, 0x42, 0x12, 0x00, 
34498
  0x00, 0x19, 0x11, 0x12, 0x00, 0x19, 0x02, 0x11, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x02, 0x06, 
34499
  0x00, 0x19, 0x0F, 0x02, 0x00, 0x26, 0x12, 0x00, 0x00, 0x23, 0x11, 0x12, 0x08, 0x1C, 0x11, 0x04, 
34500
  0x00, 0x2E, 0x12, 0x00, 0x00, 0x19, 0x10, 0x12, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x10, 0x08, 
34501
  0x00, 0x19, 0x11, 0x10, 0x00, 0x26, 0x14, 0x00, 0x00, 0x23, 0x13, 0x14, 0x0A, 0x1C, 0x13, 0x03, 
34502
  0x00, 0x2A, 0x12, 0x0E, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x12, 0x0A, 0x00, 0x19, 0x13, 0x12, 
34503
  0x00, 0x26, 0x16, 0x00, 0x00, 0x23, 0x15, 0x16, 0x07, 0x1C, 0x15, 0x03, 0x00, 0x2A, 0x14, 0x0F, 
34504
  0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x14, 0x07, 0x00, 0x19, 0x15, 0x14, 0x00, 0x26, 0x18, 0x00, 
34505
  0x00, 0x23, 0x17, 0x18, 0x0D, 0x1C, 0x17, 0x03, 0x00, 0x2A, 0x16, 0x10, 0x00, 0x1A, 0x02, 0x00, 
34506
  0x00, 0x19, 0x16, 0x0D, 0x00, 0x19, 0x17, 0x16, 0x00, 0x26, 0x1A, 0x00, 0x00, 0x23, 0x19, 0x1A, 
34507
  0x04, 0x1C, 0x19, 0x03, 0x00, 0x2A, 0x18, 0x11, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x18, 0x04, 
34508
  0x00, 0x19, 0x19, 0x18, 0x00, 0x26, 0x1C, 0x00, 0x00, 0x23, 0x1B, 0x1C, 0x0C, 0x1C, 0x1B, 0x04, 
34509
  0x00, 0x2E, 0x1C, 0x01, 0x00, 0x19, 0x1A, 0x1C, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x1A, 0x0C, 
34510
  0x00, 0x19, 0x1B, 0x1A, 0x00, 0x26, 0x1E, 0x00, 0x00, 0x23, 0x1D, 0x1E, 0x0B, 0x1C, 0x1D, 0x03, 
34511
  0x00, 0x2A, 0x1C, 0x12, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x1C, 0x0B, 0x00, 0x19, 0x1D, 0x1C, 
34512
  0x00, 0x26, 0x20, 0x00, 0x00, 0x23, 0x1F, 0x20, 0x05, 0x1C, 0x1F, 0x03, 0x00, 0x2A, 0x1E, 0x13, 
34513
  0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x1E, 0x05, 0x00, 0x19, 0x1F, 0x1E, 0x00, 0x19, 0x20, 0x1D, 
34514
  0x00, 0x2F, 0x20, 0x00, 0x00, 0x2A, 0x22, 0x14, 0x00, 0x33, 0x21, 0x22, 0x00, 0x1C, 0x21, 0x04, 
34515
  0x00, 0x2A, 0x22, 0x15, 0x00, 0x3A, 0x0F, 0x22, 0x20, 0x1A, 0x01, 0x00, 0x00, 0x3E, 0x21, 0x00, 
34516
  0x00, 0x19, 0x22, 0x21, 0x00, 0x2E, 0x23, 0x02, 0x00, 0x19, 0x24, 0x23, 0x00, 0x1C, 0x03, 0x10, 
34517
  0x00, 0x2A, 0x26, 0x16, 0x00, 0x38, 0x25, 0x0F, 0x26, 0x1C, 0x25, 0x03, 0x00, 0x1A, 0x07, 0x00, 
34518
  0x00, 0x1A, 0x01, 0x00, 0x00, 0x30, 0x0F, 0x20, 0x00, 0x33, 0x25, 0x03, 0x00, 0x2F, 0x25, 0x00, 
34519
  0x00, 0x33, 0x26, 0x24, 0x00, 0x1A, 0xF7, 0xFF, 0xFF, 0x2A, 0x25, 0x17, 0x00, 0x31, 0x0F, 0x25, 
34520
  0x0F, 0x2A, 0x25, 0x18, 0x00, 0x34, 0x25, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x1C, 0x09, 0x03, 
34521
  0x00, 0x19, 0x25, 0x09, 0x00, 0x1A, 0x04, 0x00, 0x00, 0x2A, 0x27, 0x19, 0x00, 0x33, 0x26, 0x27, 
34522
  0x00, 0x19, 0x25, 0x26, 0x00, 0x19, 0x26, 0x25, 0x00, 0x2A, 0x27, 0x1A, 0x00, 0x2F, 0x27, 0x00, 
34523
  0x00, 0x33, 0x27, 0x26, 0x00, 0x19, 0x28, 0x27, 0x00, 0x2A, 0x29, 0x1B, 0x00, 0x2F, 0x29, 0x00, 
34524
  0x00, 0x33, 0x29, 0x26, 0x00, 0x19, 0x2A, 0x29, 0x00, 0x2A, 0x2B, 0x1C, 0x00, 0x2F, 0x2B, 0x00, 
34525
  0x00, 0x33, 0x2B, 0x26, 0x00, 0x19, 0x2C, 0x2B, 0x00, 0x2A, 0x2D, 0x1D, 0x00, 0x2F, 0x2D, 0x00, 
34526
  0x00, 0x33, 0x2D, 0x26, 0x00, 0x19, 0x2E, 0x2D, 0x00, 0x2E, 0x2F, 0x03, 0x00, 0x19, 0x30, 0x2F, 
34527
  0x00, 0x2E, 0x31, 0x04, 0x00, 0x19, 0x32, 0x31, 0x00, 0x2A, 0x33, 0x1E, 0x00, 0x2F, 0x33, 0x00, 
34528
  0x00, 0x3F, 0x33, 0x00, 0x00, 0x19, 0x34, 0x33, 0x00, 0x27, 0x35, 0x00, 0x00, 0x1C, 0x35, 0x6A, 
34529
  0x00, 0x2A, 0x36, 0x16, 0x00, 0x2F, 0x36, 0x00, 0x00, 0x33, 0x36, 0x0F, 0x00, 0x1C, 0x36, 0x03, 
34530
  0x00, 0x1A, 0x65, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x2F, 0x34, 0x00, 0x00, 0x2A, 0x37, 0x1F, 
34531
  0x00, 0x33, 0x36, 0x37, 0x00, 0x30, 0x34, 0x26, 0x00, 0x33, 0x36, 0x11, 0x00, 0x19, 0x37, 0x36, 
34532
  0x00, 0x2A, 0x38, 0x20, 0x00, 0x23, 0x36, 0x37, 0x38, 0x1C, 0x36, 0x08, 0x00, 0x2F, 0x26, 0x00, 
34533
  0x00, 0x2A, 0x39, 0x21, 0x00, 0x33, 0x38, 0x39, 0x00, 0x2F, 0x34, 0x00, 0x00, 0x2A, 0x39, 0x1F, 
34534
  0x00, 0x33, 0x38, 0x39, 0x00, 0x1A, 0x53, 0x00, 0x00, 0x2F, 0x37, 0x00, 0x00, 0x2A, 0x3A, 0x22, 
34535
  0x00, 0x33, 0x39, 0x3A, 0x00, 0x1C, 0x39, 0x04, 0x00, 0x3D, 0x3A, 0x37, 0x00, 0x19, 0x38, 0x3A, 
34536
  0x00, 0x1A, 0x02, 0x00, 0x00, 0x26, 0x38, 0x00, 0x00, 0x19, 0x39, 0x38, 0x00, 0x29, 0x3A, 0x00, 
34537
  0x00, 0x39, 0x38, 0x37, 0x3A, 0x19, 0x3A, 0x38, 0x00, 0x29, 0x3B, 0x01, 0x00, 0x39, 0x38, 0x37, 
34538
  0x3B, 0x19, 0x3B, 0x38, 0x00, 0x1C, 0x39, 0x0C, 0x00, 0x29, 0x3E, 0x02, 0x00, 0x46, 0x3D, 0x3E, 
34539
  0x39, 0x19, 0x3E, 0x3D, 0x00, 0x1C, 0x3D, 0x05, 0x00, 0x2A, 0x40, 0x08, 0x00, 0x23, 0x3F, 0x3A, 
34540
  0x40, 0x19, 0x3C, 0x3F, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x3C, 0x3E, 0x00, 0x19, 0x38, 0x3C, 
34541
  0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x38, 0x39, 0x00, 0x1C, 0x38, 0x0A, 0x00, 0x19, 0x20, 0x3B, 
34542
  0x00, 0x2F, 0x3B, 0x00, 0x00, 0x2A, 0x3D, 0x14, 0x00, 0x33, 0x3C, 0x3D, 0x00, 0x1C, 0x3C, 0x04, 
34543
  0x00, 0x2A, 0x3D, 0x15, 0x00, 0x3A, 0x0F, 0x3D, 0x3B, 0x1A, 0x01, 0x00, 0x00, 0x1A, 0x2D, 0x00, 
34544
  0x00, 0x29, 0x3C, 0x00, 0x00, 0x26, 0x3D, 0x00, 0x00, 0x3D, 0x3E, 0x34, 0x00, 0x19, 0x3F, 0x3E, 
34545
  0x00, 0x24, 0x3E, 0x3F, 0x00, 0x1C, 0x3E, 0x06, 0x00, 0x2F, 0x26, 0x00, 0x00, 0x2A, 0x41, 0x23, 
34546
  0x00, 0x33, 0x40, 0x41, 0x00, 0x28, 0x35, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x1F, 0x3E, 0x3F, 
34547
  0x3C, 0x1C, 0x3E, 0x20, 0x00, 0x31, 0x26, 0x34, 0x3C, 0x33, 0x40, 0x28, 0x00, 0x06, 0x3C, 0x3C, 
34548
  0x40, 0x2F, 0x26, 0x00, 0x00, 0x33, 0x40, 0x2E, 0x00, 0x1C, 0x40, 0x0B, 0x00, 0x33, 0x41, 0x32, 
34549
  0x00, 0x32, 0x41, 0x00, 0x00, 0x33, 0x42, 0x24, 0x00, 0x2A, 0x41, 0x16, 0x00, 0x2F, 0x41, 0x00, 
34550
  0x00, 0x33, 0x41, 0x0F, 0x00, 0x1C, 0x41, 0x03, 0x00, 0x1A, 0x03, 0x00, 0x00, 0x1A, 0x01, 0x00, 
34551
  0x00, 0x1A, 0xF4, 0xFF, 0xFF, 0x2F, 0x26, 0x00, 0x00, 0x33, 0x40, 0x2C, 0x00, 0x2A, 0x42, 0x24, 
34552
  0x00, 0x23, 0x41, 0x40, 0x42, 0x1C, 0x41, 0x0A, 0x00, 0x30, 0x26, 0x20, 0x00, 0x33, 0x40, 0x30, 
34553
  0x00, 0x2A, 0x40, 0x16, 0x00, 0x2F, 0x40, 0x00, 0x00, 0x33, 0x40, 0x0F, 0x00, 0x1C, 0x40, 0x03, 
34554
  0x00, 0x1A, 0x04, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x1A, 0xE0, 0xFF, 
34555
  0xFF, 0x1A, 0x97, 0xFF, 0xFF, 0x2A, 0x36, 0x16, 0x00, 0x2F, 0x36, 0x00, 0x00, 0x33, 0x36, 0x0F, 
34556
  0x00, 0x1C, 0x36, 0x02, 0x00, 0x1A, 0x16, 0x00, 0x00, 0x2F, 0x26, 0x00, 0x00, 0x33, 0x37, 0x2E, 
34557
  0x00, 0x1C, 0x37, 0x0B, 0x00, 0x33, 0x38, 0x32, 0x00, 0x32, 0x38, 0x00, 0x00, 0x33, 0x39, 0x24, 
34558
  0x00, 0x2A, 0x38, 0x16, 0x00, 0x2F, 0x38, 0x00, 0x00, 0x33, 0x38, 0x0F, 0x00, 0x1C, 0x38, 0x03, 
34559
  0x00, 0x1A, 0x03, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x1A, 0xF4, 0xFF, 0xFF, 0x2F, 0x26, 0x00, 
34560
  0x00, 0x33, 0x37, 0x2C, 0x00, 0x2A, 0x39, 0x24, 0x00, 0x23, 0x38, 0x37, 0x39, 0x1C, 0x38, 0x04, 
34561
  0x00, 0x30, 0x26, 0x20, 0x00, 0x33, 0x37, 0x30, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x2A, 0x36, 0x16, 
34562
  0x00, 0x26, 0x37, 0x00, 0x00, 0x3A, 0x0F, 0x36, 0x37, 0x2A, 0x36, 0x17, 0x00, 0x31, 0x0F, 0x36, 
34563
  0x0F, 0x2A, 0x36, 0x18, 0x00, 0x34, 0x36, 0x00, 0x00, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x04, 0x02, 
34564
  0x02, 0x02, 0x02, 0x05, 0x01, 0x12, 0xDA, 0x18, 0xDA, 0x80, 0xC5, 0xD8, 0x07, 0x67, 0x65, 0x74, 
34565
  0x6C, 0x69, 0x6E, 0x65, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x82, 0x24, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
34566
  0x82, 0x25, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x82, 0x26, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x82, 0x27, 
34567
  0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x82, 0x28, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x80, 0xBA, 0xBF, 0xFF, 
34568
  0x00, 0x07, 0xDA, 0x82, 0x29, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x82, 0x2A, 0xBF, 0xFF, 0x00, 0x09, 
34569
  0xDA, 0x82, 0x2B, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x82, 0x2C, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x82, 
34570
  0x2D, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x82, 0x2E, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x82, 0x2F, 0xBF, 
34571
  0xFF, 0x00, 0x0E, 0xDA, 0x82, 0x30, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x82, 0x31, 0xBF, 0xFF, 0x00, 
34572
  0x0F, 0xDA, 0x80, 0xBA, 0x00, 0x05, 0x00, 0xDA, 0x82, 0x3B, 0x00, 0x05, 0x01, 0xDA, 0x64, 0x2A, 
34573
  0x02, 0x00, 0x00, 0x2B, 0x03, 0x00, 0x0F, 0x31, 0x02, 0x00, 0x03, 0x2A, 0x02, 0x01, 0x00, 0x34, 
34574
  0x02, 0x00, 0x00, 0xBF, 0xFF, 0x89, 0xB7, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 
34575
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x02, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x00, 
34576
  0x02, 0xCE, 0x08, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0xDA, 0x18, 0x00, 0x01, 0x00, 
34577
  0xDA, 0x1E, 0x00, 0x01, 0x01, 0xCF, 0x08, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x34, 
34578
  0x00, 0x00, 0x00, 0x89, 0xBC, 0x29, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x0D, 0x03, 0x01, 0x03, 0x02, 
34579
  0x1F, 0x01, 0x01, 0x23, 0xCE, 0x05, 0x65, 0x76, 0x61, 0x6C, 0x31, 0xDA, 0x18, 0xDA, 0x81, 0x5E, 
34580
  0xD8, 0x11, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x63, 0x61, 0x6E, 0x2D, 0x72, 0x65, 0x73, 0x75, 
34581
  0x6D, 0x65, 0x3F, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x82, 0x24, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x82, 
34582
  0x25, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x82, 0x26, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x82, 0x27, 0xBF, 
34583
  0xFF, 0x00, 0x05, 0xDA, 0x82, 0x28, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x80, 0xBA, 0xBF, 0xFF, 0x00, 
34584
  0x07, 0xDA, 0x82, 0x29, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x82, 0x2A, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 
34585
  0x82, 0x2B, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x82, 0x2C, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x82, 0x2D, 
34586
  0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x82, 0x2E, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x82, 0x2F, 0xBF, 0xFF, 
34587
  0x00, 0x0E, 0xDA, 0x82, 0x30, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x82, 0x31, 0xBF, 0xFF, 0x00, 0x0F, 
34588
  0xDA, 0x80, 0xBA, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2A, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x82, 
34589
  0x2C, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x82, 0x29, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x82, 0x2F, 0xBF, 
34590
  0xFF, 0x00, 0x19, 0xDA, 0x82, 0x27, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x82, 0x2E, 0xBF, 0xFF, 0x00, 
34591
  0x1D, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x82, 0x28, 0xBF, 0xFF, 0x00, 0x20, 0xDA, 
34592
  0x81, 0xF1, 0xBF, 0xFF, 0x00, 0x22, 0xDA, 0x82, 0x32, 0x00, 0x1F, 0x00, 0xCF, 0x06, 0x73, 0x6F, 
34593
  0x75, 0x72, 0x63, 0x65, 0x00, 0x1F, 0x01, 0xCF, 0x01, 0x6C, 0x00, 0x1F, 0x02, 0xDA, 0x81, 0xCF, 
34594
  0x00, 0x1F, 0x03, 0xDA, 0x82, 0x33, 0x08, 0x1F, 0x05, 0xDA, 0x82, 0x4B, 0x09, 0x1F, 0x06, 0xCF, 
34595
  0x04, 0x67, 0x6F, 0x6F, 0x64, 0x0A, 0x1F, 0x07, 0xCF, 0x09, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 
34596
  0x76, 0x61, 0x6C, 0x11, 0x1F, 0x08, 0xDA, 0x80, 0xFB, 0x17, 0x1E, 0x0C, 0xDA, 0x81, 0x08, 0x2B, 
34597
  0x05, 0x00, 0x0E, 0x1C, 0x05, 0x06, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2B, 0x06, 0x00, 0x0E, 0x33, 
34598
  0x05, 0x06, 0x00, 0x19, 0x04, 0x05, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x04, 0x00, 0x00, 0x19, 
34599
  0x05, 0x04, 0x00, 0x27, 0x06, 0x00, 0x00, 0x26, 0x07, 0x00, 0x00, 0x2E, 0x08, 0x00, 0x00, 0x2B, 
34600
  0x09, 0x00, 0x1F, 0x2B, 0x0A, 0x00, 0x0F, 0x31, 0x08, 0x09, 0x0A, 0x2A, 0x0A, 0x00, 0x00, 0x33, 
34601
  0x09, 0x0A, 0x00, 0x19, 0x08, 0x09, 0x00, 0x2F, 0x08, 0x00, 0x00, 0x2A, 0x0B, 0x01, 0x00, 0x33, 
34602
  0x0A, 0x0B, 0x00, 0x1C, 0x0A, 0x09, 0x00, 0x35, 0x0B, 0x08, 0x07, 0x19, 0x0C, 0x0B, 0x00, 0x1C, 
34603
  0x06, 0x05, 0x00, 0x30, 0x08, 0x0C, 0x00, 0x2B, 0x0B, 0x00, 0x13, 0x33, 0x07, 0x0B, 0x00, 0x1A, 
34604
  0x01, 0x00, 0x00, 0x1A, 0xF5, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xD4, 
34605
  0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x0D, 0x80, 0x96, 0x02, 0x3A, 0xDA, 0x18, 0xD8, 0x0B, 0x61, 
34606
  0x72, 0x72, 0x61, 0x79, 0x2F, 0x63, 0x6C, 0x65, 0x61, 0x72, 0xDA, 0x80, 0x9E, 0xD7, 0x00, 0xCD, 
34607
  0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x00, 0x05, 0x00, 0x02, 0xCE, 0x06, 0x65, 0x6D, 
34608
  0x70, 0x74, 0x79, 0x3F, 0xDA, 0x18, 0x00, 0x05, 0x00, 0xCF, 0x02, 0x78, 0x73, 0x00, 0x05, 0x01, 
34609
  0xCF, 0x06, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x3F, 0x26, 0x03, 0x00, 0x00, 0x47, 0x02, 0x00, 0x03, 
34610
  0x26, 0x04, 0x00, 0x00, 0x23, 0x03, 0x04, 0x02, 0x03, 0x03, 0x00, 0x00, 0x7F, 0x32, 0x00, 0x32, 
34611
  0x00, 0x2B, 0x00, 0x2B, 0x00, 0x2B, 0xD0, 0x0B, 0x6C, 0x69, 0x6E, 0x74, 0x2D, 0x6C, 0x65, 0x76, 
34612
  0x65, 0x6C, 0x73, 0xD5, 0x05, 0xDA, 0x80, 0xF6, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 
34613
  0x7F, 0xD0, 0x04, 0x6E, 0x6F, 0x6E, 0x65, 0x00, 0xD0, 0x07, 0x72, 0x65, 0x6C, 0x61, 0x78, 0x65, 
34614
  0x64, 0x01, 0xD0, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x03, 0xD0, 0x06, 0x6E, 0x6F, 0x72, 
34615
  0x6D, 0x61, 0x6C, 0x02, 0xD0, 0x0A, 0x6C, 0x69, 0x6E, 0x74, 0x2D, 0x65, 0x72, 0x72, 0x6F, 0x72, 
34616
  0xD0, 0x09, 0x6C, 0x69, 0x6E, 0x74, 0x2D, 0x77, 0x61, 0x72, 0x6E, 0xDA, 0x2C, 0xDA, 0x80, 0xE5, 
34617
  0xD0, 0x06, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0xD0, 0x04, 0x6C, 0x69, 0x6E, 0x65, 0xDA, 0x80, 
34618
  0xCC, 0xDA, 0x82, 0x10, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x82, 0x24, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
34619
  0x82, 0x25, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x82, 0x26, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x82, 0x27, 
34620
  0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x82, 0x28, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x80, 0xBA, 0xBF, 0xFF, 
34621
  0x00, 0x07, 0xDA, 0x82, 0x29, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x82, 0x2A, 0xBF, 0xFF, 0x00, 0x09, 
34622
  0xDA, 0x82, 0x2B, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x82, 0x2C, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x82, 
34623
  0x2D, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x82, 0x2E, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x82, 0x2F, 0xBF, 
34624
  0xFF, 0x00, 0x0E, 0xDA, 0x82, 0x30, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x82, 0x31, 0xBF, 0xFF, 0x00, 
34625
  0x0F, 0xDA, 0x80, 0xBA, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2A, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 
34626
  0x82, 0x2C, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x82, 0x29, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x82, 0x2F, 
34627
  0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x82, 0x27, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x82, 0x2E, 0xBF, 0xFF, 
34628
  0x00, 0x1D, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x82, 0x28, 0xBF, 0xFF, 0x00, 0x20, 
34629
  0xDA, 0x81, 0xF1, 0xBF, 0xFF, 0x00, 0x22, 0xDA, 0x82, 0x32, 0xBF, 0xFF, 0x01, 0x00, 0xDA, 0x82, 
34630
  0x4B, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x82, 0x4C, 0xBF, 0xFF, 0x01, 0x02, 0xDA, 0x81, 0xCF, 0xBF, 
34631
  0xFF, 0x01, 0x03, 0xDA, 0x82, 0x33, 0xBF, 0xFF, 0x01, 0x05, 0xDA, 0x82, 0x4B, 0xBF, 0xFF, 0x01, 
34632
  0x06, 0xDA, 0x82, 0x4D, 0xBF, 0xFF, 0x01, 0x07, 0xDA, 0x82, 0x4E, 0x0C, 0x80, 0x96, 0x02, 0xDA, 
34633
  0x81, 0x08, 0x18, 0x6B, 0x05, 0xCF, 0x06, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x73, 0x1C, 0x6B, 0x06, 
34634
  0xCF, 0x0A, 0x6C, 0x69, 0x6E, 0x74, 0x2D, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6B, 0x07, 0xCF, 
34635
  0x0C, 0x6C, 0x69, 0x6E, 0x74, 0x2D, 0x77, 0x61, 0x72, 0x6E, 0x69, 0x6E, 0x67, 0x24, 0x29, 0x08, 
34636
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x77, 0x29, 0x6B, 0x08, 0xDA, 0x82, 0x60, 0x2D, 
34637
  0x32, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x78, 0x32, 0x6B, 0x09, 0xDA, 0x82, 
34638
  0x61, 0x33, 0x6B, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x7A, 0x36, 0x6B, 0x0B, 
34639
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x79, 0x3A, 0x6B, 0x0D, 0xDA, 0x80, 0xBB, 0x3C, 
34640
  0x6B, 0x0E, 0xDA, 0x81, 0xF2, 0x3E, 0x6B, 0x0F, 0xDA, 0x81, 0xF3, 0x40, 0x6B, 0x10, 0xDA, 0x82, 
34641
  0x03, 0x45, 0x6B, 0x0C, 0xCF, 0x03, 0x6C, 0x76, 0x6C, 0x49, 0x4E, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 
34642
  0x30, 0x30, 0x30, 0x34, 0x41, 0x4D, 0x52, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 
34643
  0x42, 0x5A, 0x5F, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x43, 0x5E, 0x63, 0x0F, 
34644
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x44, 0x7E, 0x80, 0x95, 0x05, 0xCF, 0x06, 0x63, 
34645
  0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x80, 0x81, 0x80, 0x95, 0x06, 0xDA, 0x81, 0xF2, 0x80, 0x84, 0x80, 
34646
  0x95, 0x07, 0xCF, 0x04, 0x65, 0x72, 0x72, 0x66, 0x80, 0x87, 0x80, 0x95, 0x08, 0xDA, 0x51, 0x80, 
34647
  0x87, 0x80, 0x8C, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x45, 0x80, 0x8B, 0x80, 
34648
  0x90, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x46, 0x2B, 0x00, 0x00, 0x22, 0x2F, 
34649
  0x00, 0x00, 0x00, 0x2A, 0x01, 0x00, 0x00, 0x33, 0x00, 0x01, 0x00, 0x2B, 0x01, 0x01, 0x05, 0x2B, 
34650
  0x02, 0x00, 0x0F, 0x2B, 0x03, 0x00, 0x20, 0x31, 0x01, 0x02, 0x03, 0x2B, 0x01, 0x00, 0x22, 0x2F, 
34651
  0x01, 0x00, 0x00, 0x2A, 0x02, 0x01, 0x00, 0x33, 0x01, 0x02, 0x00, 0x19, 0x02, 0x01, 0x00, 0x2B, 
34652
  0x03, 0x00, 0x22, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x04, 0x02, 0x00, 0x33, 0x03, 0x04, 0x00, 0x1C, 
34653
  0x03, 0x02, 0x00, 0x1A, 0x59, 0x00, 0x00, 0x2B, 0x05, 0x00, 0x0F, 0x2A, 0x06, 0x03, 0x00, 0x39, 
34654
  0x04, 0x05, 0x06, 0x1E, 0x04, 0x02, 0x00, 0x2A, 0x04, 0x04, 0x00, 0x19, 0x05, 0x04, 0x00, 0x2B, 
34655
  0x06, 0x00, 0x0F, 0x2A, 0x07, 0x05, 0x00, 0x39, 0x04, 0x06, 0x07, 0x19, 0x06, 0x04, 0x00, 0x2B, 
34656
  0x07, 0x00, 0x0F, 0x2A, 0x08, 0x06, 0x00, 0x39, 0x04, 0x07, 0x08, 0x19, 0x07, 0x04, 0x00, 0x39, 
34657
  0x04, 0x05, 0x06, 0x1E, 0x04, 0x02, 0x00, 0x19, 0x04, 0x06, 0x00, 0x19, 0x08, 0x04, 0x00, 0x1C, 
34658
  0x08, 0x03, 0x00, 0x19, 0x04, 0x08, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x29, 0x04, 0x00, 0x00, 0x19, 
34659
  0x08, 0x04, 0x00, 0x39, 0x04, 0x05, 0x07, 0x1E, 0x04, 0x02, 0x00, 0x19, 0x04, 0x07, 0x00, 0x19, 
34660
  0x09, 0x04, 0x00, 0x1C, 0x09, 0x03, 0x00, 0x19, 0x04, 0x09, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x29, 
34661
  0x04, 0x02, 0x00, 0x19, 0x09, 0x04, 0x00, 0x2B, 0x04, 0x00, 0x22, 0x26, 0x0B, 0x00, 0x00, 0x47, 
34662
  0x0A, 0x04, 0x0B, 0x19, 0x0B, 0x0A, 0x00, 0x1D, 0x0B, 0x34, 0x00, 0x38, 0x0A, 0x04, 0x0B, 0x3B, 
34663
  0x0C, 0x0A, 0x00, 0x19, 0x0D, 0x0C, 0x00, 0x3B, 0x0C, 0x0A, 0x01, 0x19, 0x0E, 0x0C, 0x00, 0x3B, 
34664
  0x0C, 0x0A, 0x02, 0x19, 0x0F, 0x0C, 0x00, 0x3B, 0x0C, 0x0A, 0x03, 0x19, 0x10, 0x0C, 0x00, 0x2A, 
34665
  0x0C, 0x04, 0x00, 0x39, 0x0A, 0x0C, 0x0D, 0x1E, 0x0A, 0x02, 0x00, 0x29, 0x0A, 0x00, 0x00, 0x19, 
34666
  0x0C, 0x0A, 0x00, 0x46, 0x0A, 0x0C, 0x08, 0x1C, 0x0A, 0x12, 0x00, 0x28, 0x11, 0x00, 0x00, 0x2D, 
34667
  0x11, 0x01, 0x06, 0x1C, 0x0E, 0x03, 0x00, 0x19, 0x11, 0x0E, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x2B, 
34668
  0x11, 0x01, 0x01, 0x1C, 0x0F, 0x03, 0x00, 0x19, 0x12, 0x0F, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x2B, 
34669
  0x12, 0x01, 0x02, 0x26, 0x13, 0x00, 0x00, 0x2B, 0x14, 0x00, 0x20, 0x31, 0x10, 0x13, 0x14, 0x30, 
34670
  0x11, 0x12, 0x00, 0x2B, 0x14, 0x00, 0x15, 0x33, 0x13, 0x14, 0x00, 0x1A, 0x11, 0x00, 0x00, 0x46, 
34671
  0x11, 0x0C, 0x09, 0x1C, 0x11, 0x0F, 0x00, 0x1C, 0x0E, 0x03, 0x00, 0x19, 0x12, 0x0E, 0x00, 0x1A, 
34672
  0x02, 0x00, 0x00, 0x2B, 0x12, 0x01, 0x01, 0x1C, 0x0F, 0x03, 0x00, 0x19, 0x13, 0x0F, 0x00, 0x1A, 
34673
  0x02, 0x00, 0x00, 0x2B, 0x13, 0x01, 0x02, 0x2B, 0x14, 0x00, 0x20, 0x31, 0x10, 0x0D, 0x14, 0x30, 
34674
  0x12, 0x13, 0x00, 0x2B, 0x15, 0x00, 0x17, 0x33, 0x14, 0x15, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 
34675
  0x0B, 0x04, 0x0B, 0x1A, 0xCD, 0xFF, 0xFF, 0x2B, 0x03, 0x01, 0x06, 0x1C, 0x03, 0x29, 0x00, 0x2F, 
34676
  0x02, 0x00, 0x00, 0x2A, 0x04, 0x07, 0x00, 0x33, 0x03, 0x04, 0x00, 0x2A, 0x05, 0x08, 0x00, 0x23, 
34677
  0x04, 0x03, 0x05, 0x1C, 0x04, 0x08, 0x00, 0x2B, 0x03, 0x01, 0x05, 0x2B, 0x05, 0x00, 0x0F, 0x31, 
34678
  0x02, 0x03, 0x05, 0x2B, 0x03, 0x00, 0x20, 0x2F, 0x03, 0x00, 0x00, 0x2B, 0x03, 0x00, 0x1B, 0x34, 
34679
  0x03, 0x00, 0x00, 0x28, 0x03, 0x00, 0x00, 0x2D, 0x03, 0x01, 0x06, 0x2A, 0x05, 0x09, 0x00, 0x38, 
34680
  0x03, 0x02, 0x05, 0x19, 0x05, 0x03, 0x00, 0x2A, 0x06, 0x0A, 0x00, 0x38, 0x03, 0x02, 0x06, 0x19, 
34681
  0x06, 0x03, 0x00, 0x2A, 0x07, 0x0B, 0x00, 0x38, 0x03, 0x02, 0x07, 0x19, 0x07, 0x03, 0x00, 0x2A, 
34682
  0x08, 0x0C, 0x00, 0x38, 0x03, 0x02, 0x08, 0x19, 0x08, 0x03, 0x00, 0x1C, 0x06, 0x03, 0x00, 0x19, 
34683
  0x03, 0x06, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x2B, 0x03, 0x01, 0x01, 0x1C, 0x05, 0x03, 0x00, 0x19, 
34684
  0x09, 0x05, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x2B, 0x09, 0x01, 0x02, 0x2B, 0x0A, 0x00, 0x20, 0x31, 
34685
  0x08, 0x07, 0x0A, 0x30, 0x03, 0x09, 0x00, 0x2B, 0x0A, 0x00, 0x15, 0x34, 0x0A, 0x00, 0x00, 0x04, 
34686
  0x00, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x89, 0xCE, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 
34687
  0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 
34688
  0x0B, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x0B, 0x00, 0x0B, 0x02, 0x19, 0x00, 
34689
  0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x0D, 0x01, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 
34690
  0x0D, 0x01, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x0D, 0x01, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 
34691
  0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x0D, 0x01, 0x23, 0x00, 0x23, 0x00, 
34692
  0x23, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x0D, 0x01, 0x0D, 0x00, 
34693
  0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
34694
  0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 
34695
  0x18, 0x00, 0x0F, 0x02, 0x11, 0xBF, 0xFF, 0x0F, 0x02, 0x27, 0x00, 0x27, 0x01, 0x47, 0x00, 0x47, 
34696
  0x00, 0x47, 0x00, 0x47, 0x00, 0x53, 0x00, 0x53, 0x00, 0x53, 0x00, 0x53, 0x00, 0x27, 0x00, 0x27, 
34697
  0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 0xBF, 0xFD, 0x0F, 0x04, 0x11, 0xBF, 0xFC, 0x0F, 
34698
  0x04, 0x4B, 0x00, 0x4B, 0x00, 0x4B, 0x00, 0x4B, 0x00, 0x57, 0x00, 0x57, 0x00, 0x57, 0x00, 0x57, 
34699
  0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 0xBF, 0xFC, 0x0F, 0xBF, 0xFE, 0x0D, 
34700
  0x00, 0x0D, 0x07, 0x0B, 0x00, 0x0B, 0x01, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x11, 0x00, 0x11, 
34701
  0x00, 0x0D, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
34702
  0x02, 0x11, 0x00, 0x11, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 
34703
  0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x01, 0x32, 0x00, 0x32, 
34704
  0x00, 0x32, 0x00, 0x32, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x11, 0x00, 0x11, 
34705
  0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0xBF, 0xFA, 0x0B, 0x89, 0xC8, 0x11, 0x00, 0x11, 0x00, 0x1C, 
34706
  0x00, 0x1C, 0x00, 0x1C, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x05, 0x01, 0x05, 0x01, 0x05, 
34707
  0x03, 0x09, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 
34708
  0x1C, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x10, 0x00, 0x07, 0x01, 0x07, 0x00, 0x21, 
34709
  0x00, 0x21, 0x00, 0x21, 0x00, 0x07, 0xBF, 0xFE, 0x05, 0x00, 0x05, 0x66, 0x00, 0x00, 0x00, 0xCD, 
34710
  0x02, 0xFE, 0x00, 0x00, 0x08, 0x02, 0x02, 0x02, 0x03, 0x0D, 0x01, 0x01, 0x25, 0xCE, 0x09, 0x70, 
34711
  0x61, 0x72, 0x73, 0x65, 0x2D, 0x65, 0x72, 0x72, 0xDA, 0x18, 0xD0, 0x02, 0x79, 0x69, 0xDA, 0x81, 
34712
  0x5E, 0xD8, 0x0C, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x73, 0x65, 0x74, 0x65, 0x6E, 0x76, 0xBF, 
34713
  0xFF, 0x00, 0x00, 0xDA, 0x82, 0x24, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x82, 0x25, 0xBF, 0xFF, 0x00, 
34714
  0x03, 0xDA, 0x82, 0x26, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x82, 0x27, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 
34715
  0x82, 0x28, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x80, 0xBA, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x82, 0x29, 
34716
  0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x82, 0x2A, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x82, 0x2B, 0xBF, 0xFF, 
34717
  0x00, 0x0A, 0xDA, 0x82, 0x2C, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x0C, 
34718
  0xDA, 0x82, 0x2E, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x82, 0x2F, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x82, 
34719
  0x30, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x82, 0x31, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x80, 0xBA, 0xBF, 
34720
  0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2A, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x82, 0x2C, 0xBF, 0xFF, 0x00, 
34721
  0x15, 0xDA, 0x82, 0x29, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x82, 0x2F, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 
34722
  0x82, 0x27, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x82, 0x2E, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x82, 0x2D, 
34723
  0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x82, 0x28, 0xBF, 0xFF, 0x00, 0x20, 0xDA, 0x81, 0xF1, 0xBF, 0xFF, 
34724
  0x00, 0x22, 0xDA, 0x82, 0x32, 0xBF, 0xFF, 0x00, 0x24, 0xDA, 0x82, 0x33, 0xBF, 0xFF, 0x00, 0x09, 
34725
  0xDA, 0x82, 0x34, 0xBF, 0xFF, 0x00, 0x26, 0xDA, 0x64, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x82, 0x35, 
34726
  0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x82, 0x36, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x82, 0x37, 0xBF, 0xFF, 
34727
  0x00, 0x2E, 0xDA, 0x82, 0x38, 0x00, 0x0D, 0x00, 0xDA, 0x64, 0x00, 0x0D, 0x01, 0xDA, 0x81, 0xF1, 
34728
  0x00, 0x0D, 0x02, 0xDA, 0x82, 0x39, 0x05, 0x0D, 0x03, 0xDA, 0x80, 0xFB, 0x2E, 0x03, 0x00, 0x00, 
34729
  0x2A, 0x04, 0x00, 0x00, 0x30, 0x03, 0x04, 0x00, 0x2A, 0x05, 0x01, 0x00, 0x33, 0x04, 0x05, 0x00, 
34730
  0x19, 0x03, 0x04, 0x00, 0x2B, 0x05, 0x00, 0x0F, 0x30, 0x03, 0x05, 0x00, 0x2A, 0x06, 0x02, 0x00, 
34731
  0x33, 0x05, 0x06, 0x00, 0x26, 0x07, 0x00, 0x00, 0x35, 0x06, 0x03, 0x07, 0x03, 0x06, 0x00, 0x00, 
34732
  0xBF, 0xFF, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x05, 0x02, 0x24, 0xDA, 
34733
  0x18, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x82, 0x24, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x82, 0x25, 0xBF, 
34734
  0xFF, 0x00, 0x03, 0xDA, 0x82, 0x26, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x82, 0x27, 0xBF, 0xFF, 0x00, 
34735
  0x05, 0xDA, 0x82, 0x28, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x80, 0xBA, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 
34736
  0x82, 0x29, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x82, 0x2A, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x82, 0x2B, 
34737
  0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x82, 0x2C, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 
34738
  0x00, 0x0C, 0xDA, 0x82, 0x2E, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x82, 0x2F, 0xBF, 0xFF, 0x00, 0x0E, 
34739
  0xDA, 0x82, 0x30, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x82, 0x31, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x80, 
34740
  0xBA, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2A, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x82, 0x2C, 0xBF, 
34741
  0xFF, 0x00, 0x15, 0xDA, 0x82, 0x29, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x82, 0x2F, 0xBF, 0xFF, 0x00, 
34742
  0x19, 0xDA, 0x82, 0x27, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x82, 0x2E, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 
34743
  0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x82, 0x28, 0xBF, 0xFF, 0x00, 0x20, 0xDA, 0x81, 0xF1, 
34744
  0xBF, 0xFF, 0x00, 0x22, 0xDA, 0x82, 0x32, 0xBF, 0xFF, 0x00, 0x24, 0xDA, 0x82, 0x33, 0xBF, 0xFF, 
34745
  0x00, 0x09, 0xDA, 0x82, 0x34, 0xBF, 0xFF, 0x00, 0x26, 0xDA, 0x64, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 
34746
  0x82, 0x35, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x82, 0x36, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x82, 0x37, 
34747
  0xBF, 0xFF, 0x00, 0x2E, 0xDA, 0x82, 0x38, 0xBF, 0xFF, 0x01, 0x00, 0xDA, 0x64, 0xBF, 0xFF, 0x01, 
34748
  0x01, 0xDA, 0x81, 0xF1, 0xBF, 0xFF, 0x01, 0x02, 0xDA, 0x82, 0x39, 0x2B, 0x00, 0x01, 0x00, 0x2B, 
34749
  0x01, 0x01, 0x01, 0x30, 0x00, 0x01, 0x00, 0x2B, 0x00, 0x00, 0x19, 0x34, 0x00, 0x00, 0x00, 0x00, 
34750
  0xBF, 0xFF, 0x89, 0xFC, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x89, 0xFC, 0x0C, 
34751
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 
34752
  0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x03, 0x00, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
34753
  0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x01, 0x24, 0xCE, 0x07, 0x70, 0x72, 0x6F, 0x64, 0x75, 
34754
  0x63, 0x65, 0xDA, 0x18, 0xD8, 0x0F, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x73, 0x6F, 0x75, 0x72, 
34755
  0x63, 0x65, 0x6D, 0x61, 0x70, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x82, 0x24, 0xBF, 0xFF, 0x00, 0x01, 
34756
  0xDA, 0x82, 0x25, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x82, 0x26, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x82, 
34757
  0x27, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x82, 0x28, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x80, 0xBA, 0xBF, 
34758
  0xFF, 0x00, 0x07, 0xDA, 0x82, 0x29, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x82, 0x2A, 0xBF, 0xFF, 0x00, 
34759
  0x09, 0xDA, 0x82, 0x2B, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x82, 0x2C, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 
34760
  0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x82, 0x2E, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x82, 0x2F, 
34761
  0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x82, 0x30, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x82, 0x31, 0xBF, 0xFF, 
34762
  0x00, 0x0F, 0xDA, 0x80, 0xBA, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2A, 0xBF, 0xFF, 0x00, 0x13, 
34763
  0xDA, 0x82, 0x2C, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x82, 0x29, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x82, 
34764
  0x2F, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x82, 0x27, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x82, 0x2E, 0xBF, 
34765
  0xFF, 0x00, 0x1D, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x82, 0x28, 0xBF, 0xFF, 0x00, 
34766
  0x20, 0xDA, 0x81, 0xF1, 0xBF, 0xFF, 0x00, 0x22, 0xDA, 0x82, 0x32, 0xBF, 0xFF, 0x00, 0x24, 0xDA, 
34767
  0x82, 0x33, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x82, 0x34, 0xBF, 0xFF, 0x00, 0x26, 0xDA, 0x64, 0xBF, 
34768
  0xFF, 0x00, 0x28, 0xDA, 0x82, 0x35, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x82, 0x36, 0xBF, 0xFF, 0x00, 
34769
  0x2C, 0xDA, 0x82, 0x37, 0xBF, 0xFF, 0x00, 0x2E, 0xDA, 0x82, 0x38, 0xBF, 0xFF, 0x00, 0x30, 0xDA, 
34770
  0x82, 0x39, 0x00, 0x0F, 0x00, 0xDA, 0x82, 0x3A, 0x05, 0x0F, 0x02, 0xCF, 0x03, 0x74, 0x75, 0x70, 
34771
  0x2B, 0x01, 0x00, 0x26, 0x27, 0x02, 0x00, 0x00, 0x30, 0x01, 0x02, 0x00, 0x2B, 0x02, 0x00, 0x2A, 
34772
  0x33, 0x01, 0x02, 0x00, 0x19, 0x02, 0x01, 0x00, 0x29, 0x04, 0x00, 0x00, 0x38, 0x03, 0x02, 0x04, 
34773
  0x2F, 0x02, 0x00, 0x00, 0x2A, 0x05, 0x00, 0x00, 0x33, 0x04, 0x05, 0x00, 0x2F, 0x03, 0x00, 0x00, 
34774
  0x32, 0x04, 0x00, 0x00, 0x43, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0xBF, 0xFF, 0x8A, 0x01, 
34775
  0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x01, 0x06, 0x00, 0x06, 0x00, 
34776
  0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x89, 0xAA, 0x03, 
34777
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
34778
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
34779
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
34780
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
34781
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x0C, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x22, 0x00, 0x22, 
34782
  0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 
34783
  0x00, 0x10, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 
34784
  0x00, 0x13, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 
34785
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
34786
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
34787
  0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
34788
  0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x16, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
34789
  0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
34790
  0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x03, 
34791
  0x02, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x04, 
34792
  0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x25, 0x03, 0x02, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x00, 
34793
  0x1A, 0x00, 0x07, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFE, 0x05, 0x03, 0x0C, 
34794
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFC, 0x03, 0x07, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 
34795
  0x15, 0x00, 0x15, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x03, 0x01, 
34796
  0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x03, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x03, 0x01, 
34797
  0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x03, 0x02, 0x03, 0x00, 0x03, 0x07, 0x03, 0x00, 0x03, 0x05, 
34798
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x09, 0x00, 0x09, 0x00, 
34799
  0x09, 0x00, 0x05, 0x00, 0x15, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0C, 0x00, 
34800
  0x0C, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x04, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 
34801
  0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFB, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
34802
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
34803
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
34804
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
34805
  0x00, 0x05, 0x09, 0x09, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x09, 0x01, 0x0B, 0x00, 0x0B, 
34806
  0xBF, 0xFF, 0x09, 0xBF, 0xF6, 0x05, 0x0E, 0x09, 0x01, 0x09, 0x01, 0x12, 0x00, 0x09, 0x01, 0x0F, 
34807
  0x00, 0x09, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x0B, 0xBF, 0xFE, 0x09, 0x03, 0x10, 0x00, 
34808
  0x09, 0x01, 0x16, 0x00, 0x16, 0x00, 0x0B, 0x01, 0x12, 0x00, 0x12, 0x00, 0x0B, 0x01, 0x15, 0x00, 
34809
  0x0D, 0x00, 0x0D, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0D, 0x00, 0x1D, 0x00, 0x0D, 0xBF, 
34810
  0xFE, 0x0B, 0x03, 0x14, 0x00, 0x14, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0B, 0x01, 0x0D, 0x00, 0x0D, 
34811
  0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0D, 0x00, 0x1D, 0x00, 0x0D, 0xBF, 0xFE, 0x0B, 0xBF, 
34812
  0xFB, 0x09, 0xBF, 0xE9, 0x03, 0x21, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x03, 0x01, 
34813
  0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x0F, 0x00, 0x07, 0x00, 0x07, 0x01, 0x0B, 0x00, 0x0B, 0x00, 
34814
  0x0B, 0x00, 0x07, 0x00, 0x17, 0x00, 0x07, 0xBF, 0xFE, 0x05, 0x03, 0x0E, 0x00, 0x0E, 0x00, 0x0B, 
34815
  0x00, 0x0B, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x03, 0x03, 0x00, 0x03, 0x00, 
34816
  0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0xC0, 0xA8, 0x8A, 0x45, 0x04, 0x00, 
34817
  0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x0E, 0x65, 0x78, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x64, 
34818
  0x65, 0x62, 0x75, 0x67, 0x5B, 0xDA, 0x81, 0x7D, 0xD0, 0x0C, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 
34819
  0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x00, 0x3E, 0x00, 0xCF, 0x05, 0x66, 0x69, 0x62, 0x65, 0x72, 
34820
  0x00, 0x3E, 0x01, 0xDA, 0x80, 0xBB, 0x00, 0x3E, 0x02, 0xCF, 0x08, 0x64, 0x65, 0x62, 0x75, 0x67, 
34821
  0x67, 0x65, 0x72, 0x06, 0x3E, 0x04, 0xDA, 0x80, 0xBB, 0x0D, 0x3E, 0x05, 0xCF, 0x07, 0x6E, 0x65, 
34822
  0x78, 0x74, 0x65, 0x6E, 0x76, 0x1C, 0x3E, 0x09, 0xCF, 0x0F, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 
34823
  0x65, 0x72, 0x2D, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0x73, 0x26, 0x05, 0x00, 0x00, 0x23, 0x04, 0x05, 
34824
  0x01, 0x1C, 0x04, 0x03, 0x00, 0x29, 0x03, 0x01, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x03, 0x01, 
34825
  0x00, 0x19, 0x04, 0x03, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x06, 0x00, 0x00, 0x33, 0x05, 0x06, 
34826
  0x00, 0x2F, 0x05, 0x00, 0x00, 0x2A, 0x07, 0x01, 0x00, 0x33, 0x06, 0x07, 0x00, 0x19, 0x05, 0x06, 
34827
  0x00, 0x2A, 0x07, 0x02, 0x00, 0x3A, 0x05, 0x07, 0x00, 0x2A, 0x07, 0x03, 0x00, 0x3A, 0x05, 0x07, 
34828
  0x04, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x08, 0x04, 0x00, 0x33, 0x07, 0x08, 0x00, 0x2A, 0x08, 0x05, 
34829
  0x00, 0x3A, 0x05, 0x08, 0x07, 0x2A, 0x07, 0x06, 0x00, 0x30, 0x05, 0x07, 0x00, 0x2A, 0x08, 0x07, 
34830
  0x00, 0x33, 0x07, 0x08, 0x00, 0x2E, 0x08, 0x00, 0x00, 0x19, 0x09, 0x08, 0x00, 0x2A, 0x0A, 0x08, 
34831
  0x00, 0x2A, 0x0B, 0x09, 0x00, 0x31, 0x0A, 0x04, 0x0B, 0x2A, 0x0B, 0x0A, 0x00, 0x33, 0x0A, 0x0B, 
34832
  0x00, 0x2A, 0x0C, 0x0B, 0x00, 0x33, 0x0B, 0x0C, 0x00, 0x29, 0x0D, 0x01, 0x00, 0x06, 0x0C, 0x0D, 
34833
  0x04, 0x27, 0x0D, 0x00, 0x00, 0x31, 0x05, 0x0C, 0x0D, 0x2A, 0x0E, 0x0C, 0x00, 0x3B, 0x0E, 0x0E, 
34834
  0x00, 0x33, 0x0D, 0x0E, 0x00, 0x2A, 0x0C, 0x0D, 0x00, 0x2A, 0x0E, 0x0E, 0x00, 0x31, 0x0C, 0x09, 
34835
  0x0E, 0x2A, 0x0C, 0x0F, 0x00, 0x31, 0x0D, 0x0C, 0x05, 0x41, 0x0C, 0x00, 0x00, 0x2F, 0x0C, 0x00, 
34836
  0x00, 0x2A, 0x0E, 0x10, 0x00, 0x33, 0x0D, 0x0E, 0x00, 0x2A, 0x0C, 0x11, 0x00, 0x2A, 0x0E, 0x12, 
34837
  0x00, 0x31, 0x0C, 0x04, 0x0E, 0x2A, 0x0E, 0x0A, 0x00, 0x33, 0x0C, 0x0E, 0x00, 0x2A, 0x0F, 0x0B, 
34838
  0x00, 0x33, 0x0E, 0x0F, 0x00, 0x2A, 0x0F, 0x13, 0x00, 0x2F, 0x0F, 0x00, 0x00, 0x34, 0x05, 0x00, 
34839
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x02, 0x02, 0x02, 0x09, 0x1B, 0x01, 0x0B, 0xCE, 0x0F, 
34840
  0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x72, 0x2D, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0x73, 0xDA, 
34841
  0x18, 0xD0, 0x0A, 0x64, 0x65, 0x6C, 0x69, 0x6D, 0x69, 0x74, 0x65, 0x72, 0x73, 0xD0, 0x05, 0x73, 
34842
  0x74, 0x61, 0x74, 0x65, 0xDA, 0x82, 0x0F, 0xCE, 0x06, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5B, 0xCE, 
34843
  0x02, 0x5D, 0x3A, 0xDA, 0x81, 0xE7, 0xDA, 0x81, 0x88, 0xDA, 0x80, 0xF5, 0xDA, 0x82, 0x46, 0xBF, 
34844
  0xFF, 0x00, 0x00, 0xDA, 0x82, 0x77, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x80, 0xBB, 0xBF, 0xFF, 0x00, 
34845
  0x02, 0xDA, 0x82, 0x78, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x80, 0xBB, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 
34846
  0x82, 0x79, 0x00, 0x1B, 0x00, 0xDA, 0x82, 0x3B, 0x00, 0x1B, 0x01, 0xDA, 0x64, 0x00, 0x1B, 0x02, 
34847
  0xDA, 0x82, 0x7A, 0x04, 0x1B, 0x04, 0xCF, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x0B, 0x1B, 
34848
  0x05, 0xDA, 0x81, 0xCF, 0x16, 0x1B, 0x08, 0xCF, 0x04, 0x70, 0x72, 0x70, 0x74, 0x2A, 0x03, 0x00, 
34849
  0x00, 0x30, 0x01, 0x03, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x33, 0x03, 0x04, 0x00, 0x19, 0x04, 0x03, 
34850
  0x00, 0x2F, 0x01, 0x00, 0x00, 0x2A, 0x06, 0x02, 0x00, 0x33, 0x05, 0x06, 0x00, 0x29, 0x06, 0x00, 
34851
  0x00, 0x2F, 0x06, 0x00, 0x00, 0x33, 0x06, 0x05, 0x00, 0x19, 0x05, 0x06, 0x00, 0x2A, 0x07, 0x03, 
34852
  0x00, 0x2B, 0x08, 0x00, 0x04, 0x2A, 0x09, 0x04, 0x00, 0x31, 0x07, 0x08, 0x09, 0x2A, 0x07, 0x05, 
34853
  0x00, 0x31, 0x05, 0x07, 0x04, 0x2A, 0x07, 0x06, 0x00, 0x2F, 0x07, 0x00, 0x00, 0x2A, 0x08, 0x07, 
34854
  0x00, 0x33, 0x07, 0x08, 0x00, 0x19, 0x08, 0x07, 0x00, 0x2B, 0x09, 0x00, 0x05, 0x31, 0x08, 0x00, 
34855
  0x09, 0x2A, 0x09, 0x08, 0x00, 0x34, 0x09, 0x00, 0x00, 0xBF, 0xFF, 0x8B, 0x1D, 0x11, 0x00, 0x11, 
34856
  0x00, 0x11, 0x00, 0x11, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0C, 0x00, 0x0C, 
34857
  0x00, 0x0C, 0x00, 0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
34858
  0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 
34859
  0x00, 0x05, 0x8B, 0x15, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34860
  0x03, 0x01, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x03, 0x01, 
34861
  0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x03, 0x00, 
34862
  0x03, 0x02, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x05, 0x03, 0x00, 
34863
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x03, 0x31, 0x00, 0x31, 0x00, 
34864
  0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0xBF, 0xFE, 0x03, 0x00, 0x03, 0x00, 0x03, 
34865
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x04, 0x03, 0x00, 0x03, 
34866
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 
34867
  0x30, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 0xBA, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
34868
  0x80, 0xBB, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x80, 0xBC, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x80, 0xBD, 
34869
  0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x80, 0xBB, 0x00, 0x29, 0x00, 0xDA, 0x80, 0xFB, 0x00, 0x29, 0x01, 
34870
  0xDA, 0x1E, 0x03, 0x29, 0x03, 0xCF, 0x02, 0x66, 0x73, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x03, 0x00, 
34871
  0x00, 0x33, 0x02, 0x03, 0x00, 0x19, 0x03, 0x02, 0x00, 0x2A, 0x05, 0x01, 0x00, 0x23, 0x04, 0x05, 
34872
  0x03, 0x1C, 0x04, 0x14, 0x00, 0x2B, 0x05, 0x00, 0x02, 0x1C, 0x05, 0x11, 0x00, 0x2A, 0x05, 0x02, 
34873
  0x00, 0x30, 0x05, 0x01, 0x00, 0x42, 0x05, 0x00, 0x00, 0x2B, 0x06, 0x00, 0x00, 0x2A, 0x07, 0x03, 
34874
  0x00, 0x3A, 0x06, 0x07, 0x05, 0x2B, 0x06, 0x00, 0x00, 0x2A, 0x07, 0x04, 0x00, 0x39, 0x05, 0x06, 
34875
  0x07, 0x1E, 0x05, 0x02, 0x00, 0x2A, 0x05, 0x05, 0x00, 0x30, 0x05, 0x01, 0x00, 0x2A, 0x07, 0x06, 
34876
  0x00, 0x33, 0x06, 0x07, 0x00, 0x2A, 0x05, 0x07, 0x00, 0x34, 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 
34877
  0x00, 0x2A, 0x05, 0x08, 0x00, 0x31, 0x00, 0x01, 0x05, 0x2A, 0x06, 0x09, 0x00, 0x33, 0x05, 0x06, 
34878
  0x00, 0x2A, 0x06, 0x0A, 0x00, 0x33, 0x05, 0x06, 0x00, 0x2B, 0x06, 0x00, 0x00, 0x2A, 0x07, 0x0B, 
34879
  0x00, 0x39, 0x05, 0x06, 0x07, 0x1C, 0x05, 0x05, 0x00, 0x2B, 0x06, 0x00, 0x05, 0x30, 0x00, 0x06, 
34880
  0x00, 0x2A, 0x06, 0x0C, 0x00, 0x34, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8B, 
34881
  0x33, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x05, 0x01, 0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x07, 
34882
  0x00, 0x07, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x11, 
34883
  0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x09, 
34884
  0x00, 0x09, 0xBF, 0xFD, 0x07, 0x05, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x09, 0x00, 
34885
  0x09, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x09, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 
34886
  0x1E, 0x00, 0x09, 0x8B, 0x31, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
34887
  0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x25, 0x00, 0x00, 0x00, 0xDA, 0x81, 0xDB, 0xDA, 0x81, 0xD6, 
34888
  0xDA, 0x81, 0xDF, 0xDA, 0x81, 0xD7, 0xDA, 0x80, 0xEF, 0xD0, 0x04, 0x72, 0x65, 0x70, 0x6C, 0xDA, 
34889
  0x81, 0xD8, 0xDA, 0x81, 0xD9, 0x00, 0x29, 0x00, 0xDA, 0x82, 0x2A, 0x00, 0x29, 0x01, 0xCF, 0x08, 
34890
  0x6F, 0x6E, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x00, 0x29, 0x02, 0xDA, 0x80, 0xBA, 0x00, 0x29, 
34891
  0x03, 0xDA, 0x82, 0x2B, 0x00, 0x29, 0x04, 0xDA, 0x82, 0x26, 0x00, 0x29, 0x05, 0xDA, 0x80, 0xAD, 
34892
  0x08, 0x29, 0x07, 0xDA, 0x80, 0xBA, 0x10, 0x29, 0x09, 0xDA, 0x82, 0x2A, 0x10, 0x1A, 0x01, 0xCF, 
34893
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x36, 0x26, 0x08, 0x00, 0x00, 0x23, 0x07, 0x08, 0x02, 
34894
  0x1C, 0x07, 0x05, 0x00, 0x2A, 0x09, 0x00, 0x00, 0x33, 0x08, 0x09, 0x00, 0x19, 0x06, 0x08, 0x00, 
34895
  0x1A, 0x02, 0x00, 0x00, 0x19, 0x06, 0x02, 0x00, 0x19, 0x07, 0x06, 0x00, 0x26, 0x0A, 0x00, 0x00, 
34896
  0x23, 0x09, 0x0A, 0x00, 0x1C, 0x09, 0x04, 0x00, 0x2E, 0x0A, 0x00, 0x00, 0x19, 0x08, 0x0A, 0x00, 
34897
  0x1A, 0x02, 0x00, 0x00, 0x19, 0x08, 0x00, 0x00, 0x19, 0x09, 0x08, 0x00, 0x1C, 0x01, 0x03, 0x00, 
34898
  0x19, 0x0A, 0x01, 0x00, 0x1A, 0x07, 0x00, 0x00, 0x29, 0x0B, 0x01, 0x00, 0x27, 0x0C, 0x00, 0x00, 
34899
  0x31, 0x07, 0x0B, 0x0C, 0x2A, 0x0C, 0x01, 0x00, 0x33, 0x0B, 0x0C, 0x00, 0x19, 0x0A, 0x0B, 0x00, 
34900
  0x2A, 0x0B, 0x02, 0x00, 0x2A, 0x0C, 0x03, 0x00, 0x31, 0x0B, 0x04, 0x0C, 0x2A, 0x0B, 0x04, 0x00, 
34901
  0x31, 0x09, 0x0B, 0x03, 0x2A, 0x0B, 0x05, 0x00, 0x2A, 0x0C, 0x06, 0x00, 0x31, 0x0B, 0x0A, 0x0C, 
34902
  0x2A, 0x0B, 0x07, 0x00, 0x2A, 0x0C, 0x08, 0x00, 0x31, 0x0B, 0x0C, 0x07, 0x41, 0x0A, 0x00, 0x00, 
34903
  0x2F, 0x0A, 0x00, 0x00, 0x2A, 0x0B, 0x09, 0x00, 0x34, 0x0B, 0x00, 0x00, 0xCD, 0x00, 0xD4, 0x00, 
34904
  0x00, 0x06, 0x02, 0x02, 0x02, 0x08, 0x15, 0x01, 0x09, 0xDA, 0x18, 0xDA, 0x82, 0x0F, 0xDA, 0x82, 
34905
  0x7C, 0xDA, 0x82, 0x7D, 0xCE, 0x05, 0x72, 0x65, 0x70, 0x6C, 0x3A, 0xDA, 0x81, 0xE7, 0xDA, 0x81, 
34906
  0x88, 0xDA, 0x80, 0xF5, 0xDA, 0x82, 0x46, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x82, 0x2A, 0xBF, 0xFF, 
34907
  0x00, 0x01, 0xDA, 0x82, 0x84, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x80, 0xBA, 0xBF, 0xFF, 0x00, 0x03, 
34908
  0xDA, 0x82, 0x2B, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x82, 0x26, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x80, 
34909
  0xAD, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x80, 0xBA, 0x00, 0x15, 0x00, 0xDA, 0x82, 0x3B, 0x00, 0x15, 
34910
  0x01, 0xDA, 0x64, 0x2F, 0x01, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x29, 
34911
  0x03, 0x00, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x33, 0x03, 0x02, 0x00, 0x2A, 0x02, 0x01, 0x00, 0x30, 
34912
  0x01, 0x02, 0x00, 0x2A, 0x04, 0x02, 0x00, 0x33, 0x02, 0x04, 0x00, 0x2A, 0x04, 0x03, 0x00, 0x2A, 
34913
  0x05, 0x04, 0x00, 0x31, 0x04, 0x03, 0x05, 0x2A, 0x04, 0x05, 0x00, 0x30, 0x02, 0x04, 0x00, 0x2A, 
34914
  0x05, 0x06, 0x00, 0x33, 0x04, 0x05, 0x00, 0x2B, 0x02, 0x00, 0x07, 0x31, 0x04, 0x00, 0x02, 0x2A, 
34915
  0x02, 0x07, 0x00, 0x34, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x8E, 0x1C, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 
34916
  0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x02, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFC, 
34917
  0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFF, 0x07, 
34918
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x8E, 0x16, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x10, 0x00, 
34919
  0x10, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 
34920
  0x05, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x0B, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 
34921
  0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x1C, 0xBF, 0xFE, 0x03, 0x00, 
34922
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
34923
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0xDA, 
34924
  0x08, 0xCE, 0x81, 0x88, 0x28, 0x72, 0x65, 0x70, 0x6C, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x63, 
34925
  0x68, 0x75, 0x6E, 0x6B, 0x73, 0x20, 0x6F, 0x6E, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x65, 
34926
  0x6E, 0x76, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x72, 0x65, 0x61, 0x64, 0x29, 0x0A, 
34927
  0x0A, 0x52, 0x75, 0x6E, 0x20, 0x61, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x2E, 0x20, 0x54, 0x68, 0x65, 
34928
  0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 0x65, 0x72, 
34929
  0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 
34930
  0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x61, 0x6C, 0x6C, 
34931
  0x20, 0x74, 0x6F, 0x0A, 0x67, 0x65, 0x74, 0x20, 0x61, 0x20, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0x20, 
34932
  0x6F, 0x66, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x74, 
34933
  0x68, 0x61, 0x74, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
34934
  0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 
34935
  0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 
34936
  0x64, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x61, 
34937
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 
34938
  0x73, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x61, 0x20, 
34939
  0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x69, 0x73, 0x0A, 0x63, 0x61, 0x75, 0x67, 0x68, 0x74, 
34940
  0x2E, 0x20, 0x4F, 0x6E, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 
34941
  0x65, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x65, 0x6E, 
34942
  0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 
34943
  0x74, 0x6F, 0x20, 0x72, 0x75, 0x6E, 0x0A, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x20, 
34944
  0x69, 0x6E, 0x2C, 0x20, 0x61, 0x73, 0x20, 0x77, 0x65, 0x6C, 0x6C, 0x20, 0x61, 0x73, 0x20, 0x61, 
34945
  0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 
34946
  0x72, 0x20, 0x6F, 0x72, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 
34947
  0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x61, 0x73, 0x73, 0x0A, 0x74, 0x6F, 0x20, 0x60, 0x72, 
34948
  0x75, 0x6E, 0x2D, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x60, 0x2E, 0xCF, 0x02, 0x69, 0x6E, 
34949
  0xD3, 0x02, 0xDA, 0x06, 0xDA, 0x81, 0x79, 0xDA, 0x08, 0xCE, 0x81, 0x8A, 0x28, 0x69, 0x6E, 0x20, 
34950
  0x64, 0x73, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x64, 0x66, 0x6C, 0x74, 
34951
  0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 
34952
  0x64, 0x73, 0x20, 0x61, 0x74, 0x20, 0x6B, 0x65, 0x79, 0x2C, 0x20, 0x77, 0x6F, 0x72, 0x6B, 0x73, 
34953
  0x20, 0x6F, 0x6E, 0x20, 0x61, 0x73, 0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 
34954
  0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2E, 
34955
  0x20, 0x41, 0x72, 0x72, 0x61, 0x79, 0x73, 0x2C, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x73, 0x2C, 
34956
  0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x2C, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x73, 
34957
  0x2C, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x73, 0x2C, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 
34958
  0x6C, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x73, 0x20, 
34959
  0x61, 0x72, 0x65, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x61, 0x73, 0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 
34960
  0x69, 0x76, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 
34961
  0x73, 0x65, 0x64, 0x2E, 0x20, 0x41, 0x72, 0x72, 0x61, 0x79, 0x73, 0x2C, 0x20, 0x74, 0x75, 0x70, 
34962
  0x6C, 0x65, 0x73, 0x2C, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x73, 0x2C, 0x20, 0x62, 0x75, 
34963
  0x66, 0x66, 0x65, 0x72, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 
34964
  0x6C, 0x73, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x75, 0x73, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 
34965
  0x67, 0x65, 0x72, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x72, 
34966
  0x65, 0x20, 0x69, 0x6E, 0x20, 0x62, 0x6F, 0x75, 0x6E, 0x64, 0x73, 0x20, 0x6F, 0x72, 0x20, 0x61, 
34967
  0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x73, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 
34968
  0x64, 0x2E, 0x20, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 
34969
  0x61, 0x62, 0x6C, 0x65, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x61, 
34970
  0x6E, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x6B, 0x65, 
34971
  0x79, 0x20, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x61, 0x6E, 0x64, 
34972
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 
34973
  0x20, 0x6F, 0x72, 0x20, 0x64, 0x66, 0x6C, 0x74, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x74, 0x20, 
34974
  0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2E, 0xCF, 0x08, 0x6F, 0x73, 0x2F, 0x6C, 0x73, 0x74, 0x61, 0x74, 
34975
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x88, 0x3E, 0x01, 0xDA, 0x06, 0xD8, 0x08, 
34976
  0x6F, 0x73, 0x2F, 0x6C, 0x73, 0x74, 0x61, 0x74, 0xDA, 0x08, 0xCE, 0x47, 0x28, 0x6F, 0x73, 0x2F, 
34977
  0x6C, 0x73, 0x74, 0x61, 0x74, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 
34978
  0x74, 0x61, 0x62, 0x7C, 0x6B, 0x65, 0x79, 0x29, 0x0A, 0x0A, 0x4C, 0x69, 0x6B, 0x65, 0x20, 0x6F, 
34979
  0x73, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x64, 0x6F, 0x6E, 0x27, 
34980
  0x74, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x73, 0x79, 0x6D, 0x6C, 0x69, 0x6E, 0x6B, 
34981
  0x73, 0x2E, 0x0A, 0xCF, 0x02, 0x2D, 0x2D, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 
34982
  0x80, 0x95, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 
34983
  0x02, 0x08, 0x00, 0x02, 0xCE, 0x02, 0x2D, 0x2D, 0xDA, 0x18, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 
34984
  0x0A, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x13, 0xCE, 0x01, 0x2D, 0x3D, 0x01, 
34985
  0x00, 0x00, 0x24, 0x02, 0x01, 0x00, 0x1C, 0x02, 0x03, 0x00, 0x29, 0x03, 0x00, 0x00, 0x03, 0x03, 
34986
  0x00, 0x00, 0x24, 0x02, 0x01, 0x01, 0x1C, 0x02, 0x05, 0x00, 0x29, 0x03, 0x00, 0x00, 0x3B, 0x04, 
34987
  0x00, 0x00, 0x07, 0x03, 0x03, 0x04, 0x03, 0x03, 0x00, 0x00, 0x3B, 0x03, 0x00, 0x00, 0x29, 0x05, 
34988
  0x01, 0x00, 0x38, 0x04, 0x00, 0x05, 0x07, 0x03, 0x03, 0x04, 0x05, 0x05, 0x05, 0x01, 0x23, 0x02, 
34989
  0x05, 0x01, 0x1C, 0x02, 0xFC, 0xFF, 0x03, 0x03, 0x00, 0x00, 0xDA, 0x3A, 0x00, 0x08, 0x00, 0xDA, 
34990
  0x1E, 0x00, 0x08, 0x01, 0xDA, 0x82, 0x90, 0x2A, 0x03, 0x00, 0x00, 0x29, 0x04, 0x01, 0x00, 0x31, 
34991
  0x03, 0x00, 0x04, 0x43, 0x02, 0x00, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x31, 0x04, 0x00, 0x02, 0x43, 
34992
  0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x80, 0x95, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 
34993
  0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0xDA, 0x08, 0xCE, 0x22, 0x28, 0x2D, 0x2D, 0x20, 
34994
  0x78, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x63, 0x72, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x74, 
34995
  0x68, 0x65, 0x20, 0x76, 0x61, 0x72, 0x20, 0x78, 0x20, 0x62, 0x79, 0x20, 0x31, 0x2E, 0xDA, 0x3D, 
34996
  0xCB, 0xCF, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
34997
  0x03, 0x00, 0xCE, 0x0F, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x6D, 0x61, 0x74, 
34998
  0x68, 0x2E, 0x63, 0x81, 0x19, 0x01, 0xDA, 0x06, 0xD8, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 
34999
  0x6F, 0x67, 0xDA, 0x08, 0xCE, 0x31, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0x20, 
35000
  0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
35001
  0x6E, 0x61, 0x74, 0x75, 0x72, 0x61, 0x6C, 0x20, 0x6C, 0x6F, 0x67, 0x61, 0x72, 0x69, 0x74, 0x68, 
35002
  0x6D, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xCF, 0x0A, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x74, 
35003
  0x79, 0x70, 0x65, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x10, 0x73, 0x72, 0x63, 0x2F, 
35004
  0x63, 0x6F, 0x72, 0x65, 0x2F, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2E, 0x63, 0x56, 0x01, 0xDA, 0x06, 
35005
  0xDA, 0x81, 0x84, 0xDA, 0x08, 0xCE, 0x81, 0x1D, 0x28, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x74, 
35006
  0x79, 0x70, 0x65, 0x20, 0x74, 0x75, 0x70, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x73, 
35007
  0x20, 0x68, 0x6F, 0x77, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x77, 
35008
  0x61, 0x73, 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x65, 0x64, 0x2E, 0x20, 
35009
  0x57, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
35010
  0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x3A, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 
35011
  0x73, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x77, 
35012
  0x61, 0x73, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x62, 
35013
  0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x3A, 0x70, 0x61, 
35014
  0x72, 0x65, 0x6E, 0x73, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2E, 0x20, 
35015
  0x54, 0x68, 0x65, 0x20, 0x74, 0x77, 0x6F, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x6F, 0x66, 
35016
  0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x68, 
35017
  0x61, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x6D, 0x6F, 0x73, 
35018
  0x74, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x2C, 0x20, 0x62, 
35019
  0x75, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x64, 0x69, 
35020
  0x66, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x74, 0x6C, 0x79, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x62, 0x65, 
35021
  0x20, 0x74, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 
35022
  0x6E, 0x74, 0x6C, 0x79, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 
35023
  0x69, 0x6C, 0x65, 0x72, 0x2E, 0xCF, 0x09, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x6E, 0x65, 0x77, 
35024
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x10, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 
35025
  0x65, 0x2F, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x63, 0x81, 0x2D, 0x01, 0xDA, 0x06, 0xD8, 0x09, 
35026
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x6E, 0x65, 0x77, 0xDA, 0x08, 0xCE, 0x80, 0xF3, 0x28, 0x74, 
35027
  0x61, 0x62, 0x6C, 0x65, 0x2F, 0x6E, 0x65, 0x77, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 
35028
  0x79, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 
35029
  0x77, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x77, 0x69, 
35030
  0x74, 0x68, 0x20, 0x70, 0x72, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x64, 
35031
  0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x63, 0x61, 0x70, 
35032
  0x61, 0x63, 0x69, 0x74, 0x79, 0x60, 0x20, 0x65, 0x6E, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2E, 0x20, 
35033
  0x54, 0x68, 0x69, 0x73, 0x20, 0x6D, 0x65, 0x61, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
35034
  0x69, 0x66, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6B, 0x6E, 0x6F, 0x77, 0x73, 0x20, 0x74, 0x68, 0x65, 
35035
  0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x65, 0x6E, 0x74, 0x72, 0x69, 
35036
  0x65, 0x73, 0x20, 0x67, 0x6F, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 
35037
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6F, 0x6E, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6F, 
35038
  0x6E, 0x2C, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 
35039
  0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 
35040
  0x65, 0x20, 0x61, 0x76, 0x6F, 0x69, 0x64, 0x65, 0x64, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
35041
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 
35042
  0x2E, 0xCF, 0x07, 0x70, 0x72, 0x6F, 0x74, 0x65, 0x63, 0x74, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 
35043
  0x00, 0xDA, 0x18, 0x81, 0x07, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x09, 
35044
  0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x09, 0x22, 0x00, 0x04, 0xCE, 0x07, 0x70, 0x72, 0x6F, 
35045
  0x74, 0x65, 0x63, 0x74, 0xDA, 0x18, 0xDA, 0x49, 0xCF, 0x02, 0x66, 0x6E, 0xDA, 0x81, 0x5E, 0xD0, 
35046
  0x02, 0x69, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x05, 0x02, 0x02, 0x01, 0x02, 0x00, 0x02, 
35047
  0xCE, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x35, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 
35048
  0xDA, 0x80, 0xBE, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x19, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 
35049
  0xFF, 0xFF, 0x00, 0x10, 0xCE, 0x04, 0x6E, 0x6F, 0x74, 0x3D, 0x3D, 0x01, 0x00, 0x00, 0x22, 0x02, 
35050
  0x01, 0x02, 0x1B, 0x02, 0x0A, 0x00, 0x3B, 0x03, 0x00, 0x00, 0x29, 0x05, 0x01, 0x00, 0x38, 0x04, 
35051
  0x00, 0x05, 0x23, 0x02, 0x03, 0x04, 0x1C, 0x02, 0x07, 0x00, 0x05, 0x05, 0x05, 0x01, 0x19, 0x03, 
35052
  0x04, 0x00, 0x23, 0x02, 0x05, 0x01, 0x1C, 0x02, 0xFA, 0xFF, 0x28, 0x03, 0x00, 0x00, 0x03, 0x03, 
35053
  0x00, 0x00, 0x27, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0xDA, 0x82, 0x10, 0xCF, 0x03, 0x6C, 
35054
  0x65, 0x74, 0x00, 0x22, 0x00, 0xCF, 0x04, 0x62, 0x6F, 0x64, 0x79, 0x00, 0x22, 0x01, 0xDA, 0x82, 
35055
  0xA9, 0x02, 0x22, 0x03, 0xDA, 0x80, 0xFB, 0x05, 0x22, 0x04, 0xDA, 0x63, 0x2A, 0x03, 0x00, 0x00, 
35056
  0x33, 0x02, 0x03, 0x00, 0x19, 0x03, 0x02, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x33, 0x02, 0x04, 0x00, 
35057
  0x19, 0x04, 0x02, 0x00, 0x44, 0x02, 0x00, 0x00, 0x2A, 0x06, 0x01, 0x00, 0x30, 0x06, 0x02, 0x00, 
35058
  0x32, 0x00, 0x00, 0x00, 0x43, 0x05, 0x00, 0x00, 0x2A, 0x06, 0x02, 0x00, 0x2A, 0x07, 0x03, 0x00, 
35059
  0x31, 0x06, 0x05, 0x07, 0x43, 0x02, 0x00, 0x00, 0x2A, 0x06, 0x04, 0x00, 0x30, 0x06, 0x03, 0x00, 
35060
  0x43, 0x05, 0x00, 0x00, 0x31, 0x03, 0x02, 0x04, 0x2F, 0x05, 0x00, 0x00, 0x44, 0x06, 0x00, 0x00, 
35061
  0x2A, 0x05, 0x05, 0x00, 0x30, 0x05, 0x03, 0x00, 0x43, 0x02, 0x00, 0x00, 0x2A, 0x07, 0x06, 0x00, 
35062
  0x2A, 0x08, 0x07, 0x00, 0x31, 0x07, 0x08, 0x02, 0x43, 0x05, 0x00, 0x00, 0x30, 0x05, 0x04, 0x00, 
35063
  0x44, 0x02, 0x00, 0x00, 0x2A, 0x07, 0x08, 0x00, 0x31, 0x07, 0x06, 0x02, 0x43, 0x05, 0x00, 0x00, 
35064
  0x03, 0x05, 0x00, 0x00, 0x81, 0x0C, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x16, 0x00, 0x16, 0x00, 
35065
  0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
35066
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
35067
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
35068
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDA, 0x08, 0xCE, 0x80, 0xD2, 0x28, 0x70, 
35069
  0x72, 0x6F, 0x74, 0x65, 0x63, 0x74, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 
35070
  0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 
35071
  0x69, 0x6F, 0x6E, 0x73, 0x2C, 0x20, 0x77, 0x68, 0x69, 0x6C, 0x65, 0x20, 0x63, 0x61, 0x70, 0x74, 
35072
  0x75, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 
35073
  0x2E, 0x20, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x61, 
35074
  0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x0A, 0x6F, 0x66, 0x20, 0x74, 0x77, 0x6F, 0x20, 0x65, 0x6C, 
35075
  0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 
35076
  0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 
35077
  0x65, 0x20, 0x69, 0x66, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6C, 0x2C, 
35078
  0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6E, 0x0A, 0x65, 0x72, 0x72, 
35079
  0x6F, 0x72, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x63, 0x6F, 
35080
  0x6E, 0x64, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 
35081
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 
35082
  0xDA, 0x3D, 0xCB, 0xCF, 0x0C, 0x65, 0x76, 0x2F, 0x64, 0x6F, 0x2D, 0x74, 0x68, 0x72, 0x65, 0x61, 
35083
  0x64, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8E, 0x3E, 0x03, 0xDA, 0x06, 0xD7, 
35084
  0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x04, 0x0C, 
35085
  0x00, 0x02, 0xCE, 0x0C, 0x65, 0x76, 0x2F, 0x64, 0x6F, 0x2D, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 
35086
  0xDA, 0x18, 0xCF, 0x01, 0x26, 0xDA, 0x82, 0xAE, 0xCF, 0x0A, 0x5F, 0x64, 0x6F, 0x2D, 0x74, 0x68, 
35087
  0x72, 0x65, 0x61, 0x64, 0xD8, 0x09, 0x65, 0x76, 0x2F, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x00, 
35088
  0x0C, 0x00, 0xDA, 0x82, 0xB5, 0x00, 0x0C, 0x01, 0xDA, 0x82, 0xB7, 0x2A, 0x03, 0x00, 0x00, 0x2F, 
35089
  0x03, 0x00, 0x00, 0x44, 0x02, 0x00, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x2A, 0x05, 0x02, 0x00, 0x31, 
35090
  0x04, 0x05, 0x02, 0x32, 0x00, 0x00, 0x00, 0x43, 0x03, 0x00, 0x00, 0x2A, 0x04, 0x03, 0x00, 0x30, 
35091
  0x04, 0x03, 0x00, 0x43, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x8E, 0x42, 0x05, 0x00, 0x05, 
35092
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
35093
  0x00, 0x05, 0x00, 0x05, 0xDA, 0x08, 0xCE, 0x80, 0x84, 0x28, 0x65, 0x76, 0x2F, 0x64, 0x6F, 0x2D, 
35094
  0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 
35095
  0x52, 0x75, 0x6E, 0x20, 0x73, 0x6F, 0x6D, 0x65, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x69, 0x6E, 
35096
  0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2E, 0x20, 0x53, 
35097
  0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 
35098
  0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 
35099
  0x74, 0x68, 0x65, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6F, 
35100
  0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x0A, 0x65, 0x76, 0x61, 0x6C, 
35101
  0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x3D, 0xCB, 
35102
  0xCF, 0x07, 0x65, 0x76, 0x2F, 0x63, 0x68, 0x61, 0x6E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
35103
  0xDA, 0x40, 0x84, 0x6D, 0x01, 0xDA, 0x06, 0xD8, 0x07, 0x65, 0x76, 0x2F, 0x63, 0x68, 0x61, 0x6E, 
35104
  0xDA, 0x08, 0xCE, 0x80, 0xA7, 0x28, 0x65, 0x76, 0x2F, 0x63, 0x68, 0x61, 0x6E, 0x20, 0x26, 0x6F, 
35105
  0x70, 0x74, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x29, 0x0A, 0x0A, 0x43, 0x72, 
35106
  0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 
35107
  0x65, 0x6C, 0x2E, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x20, 0x69, 0x73, 0x20, 
35108
  0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x76, 0x61, 
35109
  0x6C, 0x75, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x71, 0x75, 0x65, 0x75, 0x65, 0x20, 0x62, 0x65, 
35110
  0x66, 0x6F, 0x72, 0x65, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x77, 0x72, 
35111
  0x69, 0x74, 0x65, 0x72, 0x73, 0x2C, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x73, 0x20, 
35112
  0x74, 0x6F, 0x20, 0x30, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x76, 
35113
  0x69, 0x64, 0x65, 0x64, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 
35114
  0x6E, 0x65, 0x77, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x2E, 0xCF, 0x02, 0x2D, 0x3D, 
35115
  0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x80, 0x97, 0x01, 0xDA, 0x06, 0xD7, 0x00, 
35116
  0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x08, 0x00, 
35117
  0x03, 0xCE, 0x02, 0x2D, 0x3D, 0xDA, 0x18, 0xDA, 0x82, 0x95, 0xDA, 0x3A, 0x00, 0x08, 0x00, 0xDA, 
35118
  0x1E, 0x00, 0x08, 0x01, 0xDA, 0x3B, 0x00, 0x08, 0x02, 0xDA, 0x82, 0xC5, 0x2A, 0x04, 0x00, 0x00, 
35119
  0x30, 0x04, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0x43, 0x03, 0x00, 0x00, 0x2A, 0x05, 0x01, 0x00, 
35120
  0x31, 0x05, 0x00, 0x03, 0x43, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x80, 0x97, 0x34, 0x00, 
35121
  0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0xDA, 0x08, 0xCE, 
35122
  0x27, 0x28, 0x2D, 0x3D, 0x20, 0x78, 0x20, 0x26, 0x20, 0x6E, 0x73, 0x29, 0x0A, 0x0A, 0x44, 0x65, 
35123
  0x63, 0x72, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x72, 
35124
  0x20, 0x78, 0x20, 0x62, 0x79, 0x20, 0x6E, 0x2E, 0xDA, 0x3D, 0xCB, 0xCF, 0x06, 0x65, 0x64, 0x65, 
35125
  0x66, 0x65, 0x72, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x81, 0x4D, 0x01, 0xDA, 
35126
  0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0B, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
35127
  0x0C, 0x2E, 0x00, 0x05, 0xCE, 0x06, 0x65, 0x64, 0x65, 0x66, 0x65, 0x72, 0xDA, 0x18, 0xDA, 0x49, 
35128
  0xDA, 0x82, 0xAE, 0xDA, 0x81, 0x5E, 0xDA, 0x81, 0xEF, 0xDA, 0x4A, 0xDA, 0x82, 0xB0, 0xDA, 0x80, 
35129
  0xBE, 0xCF, 0x01, 0x3D, 0xDA, 0x80, 0xBF, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x1A, 0x02, 0x02, 
35130
  0x02, 0x02, 0x00, 0x02, 0xCE, 0x09, 0x70, 0x72, 0x6F, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x37, 
35131
  0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0xDA, 0x50, 0xDA, 0x4F, 0x00, 0x2E, 0x00, 0xCF, 0x04, 
35132
  0x66, 0x6F, 0x72, 0x6D, 0x00, 0x2E, 0x01, 0xDA, 0x82, 0xB5, 0x00, 0x2E, 0x02, 0xDA, 0x82, 0xCB, 
35133
  0x02, 0x2E, 0x04, 0xDA, 0x80, 0xFB, 0x05, 0x2E, 0x05, 0xDA, 0x63, 0x2A, 0x04, 0x00, 0x00, 0x33, 
35134
  0x03, 0x04, 0x00, 0x19, 0x04, 0x03, 0x00, 0x2A, 0x05, 0x00, 0x00, 0x33, 0x03, 0x05, 0x00, 0x19, 
35135
  0x05, 0x03, 0x00, 0x44, 0x03, 0x00, 0x00, 0x2A, 0x07, 0x01, 0x00, 0x30, 0x07, 0x03, 0x00, 0x32, 
35136
  0x01, 0x00, 0x00, 0x43, 0x06, 0x00, 0x00, 0x2A, 0x07, 0x02, 0x00, 0x2A, 0x08, 0x03, 0x00, 0x31, 
35137
  0x07, 0x06, 0x08, 0x43, 0x03, 0x00, 0x00, 0x2A, 0x07, 0x04, 0x00, 0x31, 0x07, 0x04, 0x03, 0x43, 
35138
  0x06, 0x00, 0x00, 0x2A, 0x07, 0x05, 0x00, 0x30, 0x07, 0x04, 0x00, 0x43, 0x03, 0x00, 0x00, 0x2A, 
35139
  0x08, 0x04, 0x00, 0x31, 0x08, 0x05, 0x03, 0x43, 0x07, 0x00, 0x00, 0x2A, 0x08, 0x06, 0x00, 0x30, 
35140
  0x08, 0x04, 0x00, 0x43, 0x03, 0x00, 0x00, 0x2A, 0x09, 0x07, 0x00, 0x2A, 0x0A, 0x08, 0x00, 0x31, 
35141
  0x09, 0x03, 0x0A, 0x43, 0x08, 0x00, 0x00, 0x2A, 0x09, 0x09, 0x00, 0x31, 0x09, 0x05, 0x04, 0x43, 
35142
  0x03, 0x00, 0x00, 0x2A, 0x0A, 0x0A, 0x00, 0x31, 0x0A, 0x00, 0x03, 0x43, 0x09, 0x00, 0x00, 0x2A, 
35143
  0x0A, 0x0B, 0x00, 0x31, 0x0A, 0x08, 0x05, 0x2F, 0x09, 0x00, 0x00, 0x43, 0x03, 0x00, 0x00, 0x2A, 
35144
  0x09, 0x0A, 0x00, 0x31, 0x09, 0x06, 0x07, 0x2F, 0x03, 0x00, 0x00, 0x43, 0x08, 0x00, 0x00, 0x03, 
35145
  0x08, 0x00, 0x00, 0x81, 0x51, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35146
  0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
35147
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
35148
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
35149
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
35150
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
35151
  0xDA, 0x08, 0xCE, 0x80, 0x9F, 0x28, 0x65, 0x64, 0x65, 0x66, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 
35152
  0x6D, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x60, 
35153
  0x66, 0x6F, 0x72, 0x6D, 0x60, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x60, 0x62, 0x6F, 0x64, 
35154
  0x79, 0x60, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x74, 
35155
  0x68, 0x61, 0x74, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x74, 0x65, 0x72, 0x6D, 0x69, 0x6E, 0x61, 
35156
  0x74, 0x65, 0x73, 0x20, 0x61, 0x62, 0x6E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x28, 
35157
  0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6F, 0x72, 0x20, 0x75, 0x73, 0x65, 0x72, 
35158
  0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x30, 0x2D, 0x34, 0x29, 0x2E, 0x0A, 0x4F, 0x74, 
35159
  0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 
35160
  0x6C, 0x61, 0x73, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x62, 0x6F, 
35161
  0x64, 0x79, 0x60, 0x2E, 0xDA, 0x3D, 0xCB, 0xCF, 0x02, 0x2D, 0x3E, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 
35162
  0x03, 0x00, 0xDA, 0x18, 0x84, 0xF9, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xFD, 0x00, 0x00, 
35163
  0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x05, 0x00, 0x01, 0x04, 0xCE, 0x02, 0x2D, 
35164
  0x3E, 0xDA, 0x18, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x03, 0x03, 0x03, 0x00, 0x0C, 
35165
  0x00, 0x08, 0xCE, 0x06, 0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 0xDA, 0x18, 0x00, 0x0C, 0x00, 0xDA, 
35166
  0x80, 0xFB, 0x00, 0x0C, 0x01, 0xCF, 0x04, 0x69, 0x6E, 0x69, 0x74, 0x00, 0x0C, 0x02, 0xDA, 0x1F, 
35167
  0x00, 0x0C, 0x03, 0xCF, 0x06, 0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 0x00, 0x0C, 0x04, 0xCF, 0x05, 
35168
  0x61, 0x63, 0x63, 0x75, 0x6D, 0x00, 0x0B, 0x02, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 
35169
  0x6F, 0x03, 0x0B, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x6E, 0x06, 0x0B, 0x07, 
35170
  0xCF, 0x02, 0x65, 0x6C, 0x19, 0x04, 0x01, 0x00, 0x26, 0x06, 0x00, 0x00, 0x47, 0x05, 0x02, 0x06, 
35171
  0x19, 0x06, 0x05, 0x00, 0x1D, 0x06, 0x07, 0x00, 0x38, 0x05, 0x02, 0x06, 0x19, 0x07, 0x05, 0x00, 
35172
  0x30, 0x04, 0x07, 0x00, 0x33, 0x04, 0x00, 0x00, 0x47, 0x06, 0x02, 0x06, 0x1A, 0xFA, 0xFF, 0xFF, 
35173
  0x03, 0x04, 0x00, 0x00, 0x83, 0x70, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
35174
  0x03, 0x00, 0x03, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xF7, 0x01, 0x00, 0x05, 
35175
  0x00, 0xDA, 0x1E, 0x00, 0x05, 0x01, 0xCF, 0x05, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x00, 0x05, 0x02, 
35176
  0xDA, 0x82, 0xD5, 0x01, 0x05, 0x04, 0xCF, 0x03, 0x66, 0x6F, 0x70, 0x2E, 0x03, 0x00, 0x00, 0x19, 
35177
  0x04, 0x03, 0x00, 0x31, 0x04, 0x00, 0x01, 0x2A, 0x05, 0x00, 0x00, 0x34, 0x05, 0x00, 0x00, 0xCD, 
35178
  0x00, 0xDC, 0x00, 0x00, 0x09, 0x02, 0x02, 0x02, 0x06, 0x23, 0x00, 0x06, 0xCE, 0x03, 0x66, 0x6F, 
35179
  0x70, 0xDA, 0x18, 0xDA, 0x2C, 0xDA, 0x80, 0x8B, 0xD8, 0x0B, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 
35180
  0x73, 0x6C, 0x69, 0x63, 0x65, 0xDA, 0x80, 0x8F, 0xD8, 0x0C, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 
35181
  0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x02, 0x02, 
35182
  0x02, 0x04, 0x0F, 0x00, 0x03, 0xCE, 0x0C, 0x6B, 0x65, 0x65, 0x70, 0x2D, 0x73, 0x79, 0x6E, 0x74, 
35183
  0x61, 0x78, 0x21, 0xDA, 0x18, 0xDA, 0x2C, 0xDA, 0x5D, 0xD8, 0x0B, 0x74, 0x75, 0x70, 0x6C, 0x65, 
35184
  0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x02, 0x02, 
35185
  0x02, 0x08, 0x28, 0x00, 0x05, 0xCE, 0x0B, 0x6B, 0x65, 0x65, 0x70, 0x2D, 0x73, 0x79, 0x6E, 0x74, 
35186
  0x61, 0x78, 0xDA, 0x18, 0xDA, 0x2C, 0xDA, 0x80, 0x8B, 0xDA, 0x81, 0x84, 0xD0, 0x06, 0x70, 0x61, 
35187
  0x72, 0x65, 0x6E, 0x73, 0xDA, 0x82, 0xE9, 0xD8, 0x0E, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x62, 
35188
  0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x73, 0xDA, 0x82, 0x73, 0xD8, 0x0C, 0x74, 0x75, 0x70, 0x6C, 
35189
  0x65, 0x2F, 0x73, 0x65, 0x74, 0x6D, 0x61, 0x70, 0x00, 0x28, 0x00, 0xCF, 0x06, 0x62, 0x65, 0x66, 
35190
  0x6F, 0x72, 0x65, 0x00, 0x28, 0x01, 0xCF, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x00, 0x28, 0x02, 
35191
  0xCF, 0x0B, 0x6B, 0x65, 0x65, 0x70, 0x2D, 0x73, 0x79, 0x6E, 0x74, 0x61, 0x78, 0x05, 0x0F, 0x04, 
35192
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x58, 0x1F, 0x27, 0x05, 0xDA, 0x81, 0x08, 0x2F, 
35193
  0x00, 0x00, 0x00, 0x2A, 0x05, 0x00, 0x00, 0x33, 0x04, 0x05, 0x00, 0x2A, 0x06, 0x01, 0x00, 0x23, 
35194
  0x05, 0x06, 0x04, 0x19, 0x04, 0x05, 0x00, 0x1C, 0x05, 0x08, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x2A, 
35195
  0x07, 0x00, 0x00, 0x33, 0x06, 0x07, 0x00, 0x2A, 0x08, 0x01, 0x00, 0x23, 0x07, 0x08, 0x06, 0x19, 
35196
  0x03, 0x07, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x03, 0x04, 0x00, 0x1C, 0x03, 0x18, 0x00, 0x2F, 
35197
  0x00, 0x00, 0x00, 0x2A, 0x06, 0x02, 0x00, 0x33, 0x05, 0x06, 0x00, 0x2A, 0x07, 0x03, 0x00, 0x23, 
35198
  0x06, 0x07, 0x05, 0x1C, 0x06, 0x06, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x2A, 0x07, 0x04, 0x00, 0x33, 
35199
  0x05, 0x07, 0x00, 0x19, 0x04, 0x05, 0x00, 0x1A, 0x05, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0x2A, 
35200
  0x07, 0x05, 0x00, 0x33, 0x05, 0x07, 0x00, 0x19, 0x04, 0x05, 0x00, 0x19, 0x05, 0x04, 0x00, 0x2F, 
35201
  0x00, 0x00, 0x00, 0x2A, 0x06, 0x06, 0x00, 0x33, 0x04, 0x06, 0x00, 0x2F, 0x05, 0x00, 0x00, 0x32, 
35202
  0x04, 0x00, 0x00, 0x2A, 0x06, 0x07, 0x00, 0x34, 0x06, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x84, 
35203
  0xE8, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x07, 0x00, 0x07, 0x01, 0x16, 
35204
  0x00, 0x16, 0x00, 0x16, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
35205
  0x03, 0x03, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x14, 0x00, 0x14, 0x00, 0x10, 0x01, 0x12, 0x00, 
35206
  0x12, 0x00, 0x12, 0xBF, 0xFF, 0x10, 0x00, 0x10, 0x02, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFE, 
35207
  0x10, 0x00, 0x07, 0x03, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
35208
  0x07, 0xBF, 0xFA, 0x03, 0x00, 0x0F, 0x00, 0xDA, 0x82, 0xEF, 0x00, 0x0F, 0x01, 0xDA, 0x82, 0xF0, 
35209
  0x00, 0x0F, 0x02, 0xCF, 0x0C, 0x6B, 0x65, 0x65, 0x70, 0x2D, 0x73, 0x79, 0x6E, 0x74, 0x61, 0x78, 
35210
  0x21, 0x2F, 0x01, 0x00, 0x00, 0x2A, 0x05, 0x00, 0x00, 0x33, 0x04, 0x05, 0x00, 0x2A, 0x06, 0x01, 
35211
  0x00, 0x23, 0x05, 0x06, 0x04, 0x1C, 0x05, 0x06, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x2A, 0x06, 0x02, 
35212
  0x00, 0x33, 0x04, 0x06, 0x00, 0x19, 0x03, 0x04, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x03, 0x01, 
35213
  0x00, 0x30, 0x00, 0x03, 0x00, 0x2A, 0x04, 0x03, 0x00, 0x34, 0x04, 0x00, 0x00, 0x84, 0xF5, 0x25, 
35214
  0x00, 0x25, 0x00, 0x25, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x17, 0x01, 0x19, 0x00, 0x19, 0x00, 0x19, 
35215
  0xBF, 0xFF, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x23, 0x00, 
35216
  0xCF, 0x04, 0x6C, 0x61, 0x73, 0x74, 0x00, 0x23, 0x01, 0xDA, 0x80, 0xD8, 0x00, 0x23, 0x02, 0xDA, 
35217
  0x82, 0xE3, 0x17, 0x23, 0x05, 0xCF, 0x01, 0x68, 0x19, 0x23, 0x06, 0xDA, 0x31, 0x1F, 0x23, 0x04, 
35218
  0xCF, 0x05, 0x70, 0x61, 0x72, 0x74, 0x73, 0x2F, 0x01, 0x00, 0x00, 0x2A, 0x05, 0x00, 0x00, 0x33, 
35219
  0x04, 0x05, 0x00, 0x2A, 0x06, 0x01, 0x00, 0x23, 0x05, 0x06, 0x04, 0x1C, 0x05, 0x0C, 0x00, 0x29, 
35220
  0x06, 0x00, 0x00, 0x38, 0x04, 0x01, 0x06, 0x29, 0x06, 0x01, 0x00, 0x30, 0x01, 0x06, 0x00, 0x2A, 
35221
  0x07, 0x02, 0x00, 0x33, 0x06, 0x07, 0x00, 0x30, 0x04, 0x06, 0x00, 0x2A, 0x08, 0x03, 0x00, 0x33, 
35222
  0x07, 0x08, 0x00, 0x19, 0x03, 0x07, 0x00, 0x1A, 0x06, 0x00, 0x00, 0x3E, 0x04, 0x00, 0x00, 0x30, 
35223
  0x01, 0x04, 0x00, 0x2A, 0x07, 0x03, 0x00, 0x33, 0x06, 0x07, 0x00, 0x19, 0x03, 0x06, 0x00, 0x3B, 
35224
  0x04, 0x03, 0x00, 0x19, 0x05, 0x04, 0x00, 0x3B, 0x04, 0x03, 0x01, 0x19, 0x06, 0x04, 0x00, 0x30, 
35225
  0x05, 0x00, 0x00, 0x3E, 0x04, 0x00, 0x00, 0x30, 0x04, 0x06, 0x00, 0x2A, 0x08, 0x04, 0x00, 0x33, 
35226
  0x07, 0x08, 0x00, 0x19, 0x04, 0x07, 0x00, 0x30, 0x01, 0x04, 0x00, 0x2A, 0x08, 0x05, 0x00, 0x34, 
35227
  0x08, 0x00, 0x00, 0x84, 0xFF, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x14, 0x00, 0x14, 0x00, 0x10, 
35228
  0x01, 0x19, 0x00, 0x19, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x12, 0x00, 0x12, 
35229
  0x00, 0x12, 0xBF, 0xFF, 0x10, 0x00, 0x10, 0x02, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 
35230
  0xFE, 0x10, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x03, 0x10, 0x00, 0x10, 0x00, 0x10, 
35231
  0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x84, 0xFE, 0x03, 0x00, 
35232
  0x03, 0x06, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x08, 0xCE, 0x80, 0xDD, 0x28, 0x2D, 0x3E, 0x20, 
35233
  0x78, 0x20, 0x26, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x29, 0x0A, 0x0A, 0x54, 0x68, 0x72, 0x65, 
35234
  0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2E, 0x20, 0x49, 0x6E, 0x73, 
35235
  0x65, 0x72, 0x74, 0x73, 0x20, 0x78, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 
35236
  0x63, 0x6F, 0x6E, 0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 
35237
  0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x0A, 0x69, 0x6E, 0x20, 
35238
  0x60, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x60, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x69, 0x6E, 0x73, 
35239
  0x65, 0x72, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 
35240
  0x64, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x69, 0x6E, 0x74, 
35241
  0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 
35242
  0x6D, 0x0A, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x6D, 0x61, 
35243
  0x6E, 0x6E, 0x65, 0x72, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x6F, 0x20, 0x6F, 0x6E, 0x2E, 
35244
  0x20, 0x55, 0x73, 0x65, 0x66, 0x75, 0x6C, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, 0x78, 0x70, 0x72, 
35245
  0x65, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x69, 0x70, 0x65, 0x6C, 0x69, 0x6E, 0x65, 0x73, 
35246
  0x20, 0x6F, 0x66, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2E, 0xDA, 0x3D, 0xCB, 0xCF, 0x0C, 0x73, 0x74, 
35247
  0x72, 0x69, 0x6E, 0x67, 0x2F, 0x73, 0x70, 0x6C, 0x69, 0x74, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
35248
  0x00, 0xCE, 0x11, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x73, 0x74, 0x72, 0x69, 
35249
  0x6E, 0x67, 0x2E, 0x63, 0x81, 0xBC, 0x01, 0xDA, 0x06, 0xD8, 0x0C, 0x73, 0x74, 0x72, 0x69, 0x6E, 
35250
  0x67, 0x2F, 0x73, 0x70, 0x6C, 0x69, 0x74, 0xDA, 0x08, 0xCE, 0x81, 0x77, 0x28, 0x73, 0x74, 0x72, 
35251
  0x69, 0x6E, 0x67, 0x2F, 0x73, 0x70, 0x6C, 0x69, 0x74, 0x20, 0x64, 0x65, 0x6C, 0x69, 0x6D, 0x20, 
35252
  0x73, 0x74, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x6C, 
35253
  0x69, 0x6D, 0x69, 0x74, 0x29, 0x0A, 0x0A, 0x53, 0x70, 0x6C, 0x69, 0x74, 0x73, 0x20, 0x61, 0x20, 
35254
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x73, 0x74, 0x72, 0x60, 0x20, 0x77, 0x69, 0x74, 
35255
  0x68, 0x20, 0x64, 0x65, 0x6C, 0x69, 0x6D, 0x69, 0x74, 0x65, 0x72, 0x20, 0x60, 0x64, 0x65, 0x6C, 
35256
  0x69, 0x6D, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
35257
  0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x75, 0x62, 0x73, 
35258
  0x74, 0x72, 0x69, 0x6E, 0x67, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x75, 0x62, 0x73, 
35259
  0x74, 0x72, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 
35260
  0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x6C, 0x69, 
35261
  0x6D, 0x69, 0x74, 0x65, 0x72, 0x20, 0x60, 0x64, 0x65, 0x6C, 0x69, 0x6D, 0x60, 0x2E, 0x20, 0x49, 
35262
  0x66, 0x20, 0x60, 0x64, 0x65, 0x6C, 0x69, 0x6D, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 
35263
  0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 
35264
  0x72, 0x6E, 0x65, 0x64, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
35265
  0x68, 0x61, 0x76, 0x65, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 
35266
  0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x73, 0x65, 0x61, 
35267
  0x72, 0x63, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x64, 0x65, 0x6C, 0x69, 
35268
  0x6D, 0x60, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 
35269
  0x60, 0x73, 0x74, 0x61, 0x72, 0x74, 0x60, 0x20, 0x28, 0x69, 0x66, 0x20, 0x70, 0x72, 0x6F, 0x76, 
35270
  0x69, 0x64, 0x65, 0x64, 0x29, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
35271
  0x6E, 0x20, 0x75, 0x70, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x6D, 0x61, 0x78, 0x69, 0x6D, 0x75, 
35272
  0x6D, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x6C, 0x69, 0x6D, 0x69, 0x74, 0x60, 0x20, 0x72, 0x65, 0x73, 
35273
  0x75, 0x6C, 0x74, 0x73, 0x20, 0x28, 0x69, 0x66, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 
35274
  0x64, 0x29, 0x2E, 0xCF, 0x04, 0x63, 0x6F, 0x72, 0x6F, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
35275
  0xDA, 0x18, 0x82, 0x7A, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x05, 0x00, 
35276
  0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x05, 0x0B, 0x00, 0x02, 0xCE, 0x04, 0x63, 0x6F, 0x72, 0x6F, 
35277
  0xDA, 0x18, 0xDA, 0x82, 0xAE, 0xD2, 0x00, 0x01, 0xDA, 0x80, 0x8F, 0xDA, 0x81, 0x5E, 0xDA, 0x82, 
35278
  0x70, 0x00, 0x0B, 0x00, 0xDA, 0x82, 0xB5, 0x00, 0x0B, 0x01, 0xDA, 0x82, 0xFE, 0x2A, 0x02, 0x00, 
35279
  0x00, 0x2A, 0x03, 0x01, 0x00, 0x30, 0x02, 0x03, 0x00, 0x32, 0x00, 0x00, 0x00, 0x2A, 0x03, 0x02, 
35280
  0x00, 0x33, 0x02, 0x03, 0x00, 0x2A, 0x03, 0x03, 0x00, 0x2A, 0x04, 0x04, 0x00, 0x31, 0x03, 0x02, 
35281
  0x04, 0x2A, 0x03, 0x02, 0x00, 0x34, 0x03, 0x00, 0x00, 0x82, 0x7D, 0x14, 0x00, 0x14, 0x00, 0x14, 
35282
  0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35283
  0xDA, 0x08, 0xCE, 0x7F, 0x28, 0x63, 0x6F, 0x72, 0x6F, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 
35284
  0x29, 0x0A, 0x0A, 0x41, 0x20, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 
35285
  0x20, 0x6D, 0x61, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x73, 0x20, 0x74, 
35286
  0x68, 0x61, 0x74, 0x20, 0x6D, 0x61, 0x79, 0x20, 0x79, 0x69, 0x65, 0x6C, 0x64, 0x20, 0x6D, 0x75, 
35287
  0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x28, 0x63, 
35288
  0x6F, 0x72, 0x6F, 0x75, 0x74, 0x69, 0x6E, 0x65, 0x29, 0x2E, 0x20, 0x53, 0x61, 0x6D, 0x65, 0x20, 
35289
  0x61, 0x73, 0x20, 0x60, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 0x20, 0x28, 
35290
  0x66, 0x6E, 0x20, 0x5B, 0x5D, 0x20, 0x3B, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x20, 0x3A, 0x79, 0x69, 
35291
  0x29, 0x60, 0x2E, 0xDA, 0x3D, 0xCB, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x67, 0x61, 0x6D, 
35292
  0x6D, 0x61, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 0x27, 0x01, 0xDA, 
35293
  0x06, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x67, 0x61, 0x6D, 0x6D, 0x61, 0xDA, 0x08, 0xCE, 
35294
  0x21, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x67, 0x61, 0x6D, 0x6D, 0x61, 0x20, 0x78, 0x29, 0x0A, 
35295
  0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x67, 0x61, 0x6D, 0x6D, 0x61, 0x28, 0x78, 
35296
  0x29, 0x2E, 0xCF, 0x04, 0x64, 0x65, 0x66, 0x2D, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
35297
  0x18, 0x45, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 
35298
  0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x06, 0x00, 0x03, 0xCE, 0x04, 0x64, 0x65, 0x66, 0x2D, 0xDA, 0x18, 
35299
  0xDA, 0x4A, 0xDA, 0x5A, 0x00, 0x06, 0x00, 0xCF, 0x04, 0x6E, 0x61, 0x6D, 0x65, 0x00, 0x06, 0x01, 
35300
  0xCF, 0x04, 0x6D, 0x6F, 0x72, 0x65, 0x00, 0x06, 0x02, 0xDA, 0x83, 0x0A, 0x2A, 0x04, 0x00, 0x00, 
35301
  0x2A, 0x05, 0x01, 0x00, 0x31, 0x04, 0x00, 0x05, 0x32, 0x01, 0x00, 0x00, 0x43, 0x03, 0x00, 0x00, 
35302
  0x03, 0x03, 0x00, 0x00, 0x48, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35303
  0xDA, 0x08, 0xCE, 0x45, 0x28, 0x64, 0x65, 0x66, 0x2D, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x26, 
35304
  0x20, 0x6D, 0x6F, 0x72, 0x65, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x20, 0x61, 
35305
  0x20, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 
35306
  0x68, 0x61, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 
35307
  0x65, 0x78, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x2E, 0xDA, 0x3D, 0xCB, 0xCF, 0x05, 0x65, 0x70, 
35308
  0x72, 0x69, 0x6E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x0D, 0x73, 0x72, 0x63, 0x2F, 
35309
  0x63, 0x6F, 0x72, 0x65, 0x2F, 0x69, 0x6F, 0x2E, 0x63, 0x82, 0x1A, 0x01, 0xDA, 0x06, 0xDA, 0x81, 
35310
  0x87, 0xDA, 0x08, 0xCE, 0x5A, 0x28, 0x65, 0x70, 0x72, 0x69, 0x6E, 0x20, 0x26, 0x20, 0x78, 0x73, 
35311
  0x29, 0x0A, 0x0A, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x70, 0x72, 0x69, 0x6E, 
35312
  0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x75, 0x73, 0x65, 0x73, 0x20, 0x60, 0x28, 0x64, 0x79, 
35313
  0x6E, 0x20, 0x3A, 0x65, 0x72, 0x72, 0x20, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x29, 0x60, 0x20, 
35314
  0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 
35315
  0x20, 0x3A, 0x6F, 0x75, 0x74, 0x20, 0x73, 0x74, 0x64, 0x6F, 0x75, 0x74, 0x29, 0x60, 0x2E, 0xCF, 
35316
  0x0A, 0x6E, 0x65, 0x74, 0x2F, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
35317
  0x03, 0x00, 0xDA, 0x18, 0x8E, 0x76, 0x03, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 
35318
  0x0A, 0x04, 0x02, 0x04, 0x02, 0x0B, 0x00, 0x01, 0x06, 0xCE, 0x0A, 0x6E, 0x65, 0x74, 0x2F, 0x73, 
35319
  0x65, 0x72, 0x76, 0x65, 0x72, 0xDA, 0x18, 0xD8, 0x0A, 0x6E, 0x65, 0x74, 0x2F, 0x6C, 0x69, 0x73, 
35320
  0x74, 0x65, 0x6E, 0xD7, 0x00, 0xCD, 0x02, 0xFF, 0x00, 0x00, 0x05, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 
35321
  0xFF, 0xFF, 0x01, 0x04, 0x00, 0x01, 0x03, 0xCE, 0x07, 0x65, 0x76, 0x2F, 0x63, 0x61, 0x6C, 0x6C, 
35322
  0xDA, 0x18, 0xD8, 0x05, 0x65, 0x76, 0x2F, 0x67, 0x6F, 0x00, 0x04, 0x00, 0xDA, 0x80, 0xFB, 0x00, 
35323
  0x04, 0x01, 0xDA, 0x80, 0xAB, 0x00, 0x04, 0x02, 0xCF, 0x07, 0x65, 0x76, 0x2F, 0x63, 0x61, 0x6C, 
35324
  0x6C, 0x2E, 0x03, 0x00, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x34, 0x04, 0x00, 
35325
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x02, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x04, 
35326
  0x01, 0x04, 0xCE, 0x05, 0x5F, 0x63, 0x61, 0x6C, 0x6C, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 
35327
  0x80, 0xFB, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x80, 0xAB, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x83, 0x20, 
35328
  0x00, 0x04, 0x00, 0xCF, 0x05, 0x5F, 0x63, 0x61, 0x6C, 0x6C, 0x2B, 0x01, 0x00, 0x01, 0x32, 0x01, 
35329
  0x00, 0x00, 0x2B, 0x01, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0x8E, 0x37, 0x1A, 0x00, 
35330
  0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x8E, 0x37, 0x0C, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x03, 0x00, 
35331
  0x00, 0x00, 0x00, 0x0B, 0x00, 0xCF, 0x04, 0x68, 0x6F, 0x73, 0x74, 0x00, 0x0B, 0x01, 0xCF, 0x04, 
35332
  0x70, 0x6F, 0x72, 0x74, 0x00, 0x0B, 0x02, 0xCF, 0x07, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 
35333
  0x00, 0x0B, 0x03, 0xCF, 0x04, 0x74, 0x79, 0x70, 0x65, 0x00, 0x0B, 0x04, 0xDA, 0x83, 0x17, 0x03, 
35334
  0x0B, 0x06, 0xDA, 0x80, 0xFF, 0x31, 0x00, 0x01, 0x03, 0x2A, 0x06, 0x00, 0x00, 0x33, 0x05, 0x06, 
35335
  0x00, 0x19, 0x06, 0x05, 0x00, 0x1C, 0x02, 0x06, 0x00, 0x2E, 0x07, 0x00, 0x00, 0x2F, 0x07, 0x00, 
35336
  0x00, 0x2A, 0x09, 0x01, 0x00, 0x33, 0x08, 0x09, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x03, 0x06, 0x00, 
35337
  0x00, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x05, 0x01, 0x06, 0xDA, 0x18, 
35338
  0xD8, 0x0F, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2D, 0x6C, 0x6F, 0x6F, 
35339
  0x70, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x83, 0x23, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x24, 0xBF, 
35340
  0xFF, 0x00, 0x02, 0xDA, 0x83, 0x25, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x83, 0x26, 0xBF, 0xFF, 0x00, 
35341
  0x04, 0xDA, 0x83, 0x17, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x80, 0xFF, 0x2B, 0x00, 0x00, 0x06, 0x2B, 
35342
  0x01, 0x00, 0x02, 0x30, 0x00, 0x01, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0xBF, 
35343
  0xFF, 0x8E, 0x7B, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x8E, 0x79, 0x0C, 0x00, 
35344
  0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x05, 0x01, 0x10, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 
35345
  0xFF, 0x05, 0xBF, 0xFC, 0x03, 0x44, 0x00, 0x00, 0x00, 0xDA, 0x08, 0xCE, 0x80, 0x8F, 0x28, 0x6E, 
35346
  0x65, 0x74, 0x2F, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x70, 
35347
  0x6F, 0x72, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 
35348
  0x20, 0x74, 0x79, 0x70, 0x65, 0x29, 0x0A, 0x0A, 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, 0x61, 0x20, 
35349
  0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x61, 0x73, 0x79, 0x6E, 0x63, 0x68, 0x72, 0x6F, 0x6E, 
35350
  0x6F, 0x75, 0x73, 0x6C, 0x79, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x6E, 0x65, 0x74, 0x2F, 
35351
  0x6C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x6E, 0x65, 0x74, 
35352
  0x2F, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2D, 0x6C, 0x6F, 0x6F, 0x70, 0x60, 0x2E, 0x20, 0x52, 
35353
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 
35354
  0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0xCF, 0x05, 0x63, 
35355
  0x6F, 0x75, 0x6E, 0x74, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x83, 0xE8, 0x01, 
35356
  0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x1A, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 0xFF, 
35357
  0xFF, 0x01, 0x80, 0xE8, 0x00, 0x35, 0xCE, 0x05, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0xDA, 0x18, 0xDA, 
35358
  0x81, 0x8D, 0x00, 0x80, 0xE8, 0x00, 0xCF, 0x04, 0x70, 0x72, 0x65, 0x64, 0x00, 0x80, 0xE8, 0x01, 
35359
  0xDA, 0x1F, 0x00, 0x80, 0xE8, 0x02, 0xDA, 0x81, 0x8E, 0x00, 0x80, 0xE8, 0x03, 0xDA, 0x83, 0x29, 
35360
  0x00, 0x80, 0xE8, 0x04, 0xDA, 0x81, 0x08, 0x02, 0x80, 0xE7, 0x06, 0xDA, 0x81, 0x90, 0x02, 0x80, 
35361
  0xE7, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x38, 0x04, 0x12, 0x01, 0xCF, 0x07, 
35362
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x61, 0x07, 0x12, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
35363
  0x30, 0x31, 0x39, 0x0A, 0x12, 0x09, 0xDA, 0x1E, 0x16, 0x2C, 0x09, 0xDA, 0x81, 0x94, 0x17, 0x2C, 
35364
  0x08, 0xDA, 0x81, 0x95, 0x17, 0x2C, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x63, 
35365
  0x1A, 0x2C, 0x0B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x62, 0x1D, 0x2C, 0x0C, 0xDA, 
35366
  0x1E, 0x30, 0x50, 0x0A, 0xDA, 0x81, 0x94, 0x32, 0x50, 0x0B, 0xDA, 0x81, 0x98, 0x33, 0x50, 0x09, 
35367
  0xDA, 0x81, 0x95, 0x34, 0x50, 0x0C, 0xDA, 0x81, 0x99, 0x34, 0x50, 0x01, 0xCF, 0x07, 0x5F, 0x30, 
35368
  0x30, 0x30, 0x30, 0x31, 0x65, 0x37, 0x50, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 
35369
  0x64, 0x3A, 0x50, 0x0F, 0xDA, 0x1E, 0x54, 0x7F, 0x0B, 0xDA, 0x81, 0x94, 0x56, 0x7F, 0x0C, 0xDA, 
35370
  0x81, 0x98, 0x58, 0x7F, 0x0D, 0xDA, 0x81, 0x9C, 0x59, 0x7F, 0x0A, 0xDA, 0x81, 0x95, 0x5A, 0x7F, 
35371
  0x0E, 0xDA, 0x81, 0x99, 0x5B, 0x7F, 0x0F, 0xDA, 0x81, 0x9D, 0x5B, 0x7F, 0x01, 0xCF, 0x07, 0x5F, 
35372
  0x30, 0x30, 0x30, 0x30, 0x31, 0x67, 0x5E, 0x7F, 0x11, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
35373
  0x31, 0x66, 0x61, 0x7F, 0x12, 0xDA, 0x1E, 0x80, 0x83, 0x80, 0xB8, 0x0C, 0xDA, 0x81, 0x94, 0x80, 
35374
  0x85, 0x80, 0xB8, 0x0D, 0xDA, 0x81, 0x98, 0x80, 0x87, 0x80, 0xB8, 0x0E, 0xDA, 0x81, 0x9C, 0x80, 
35375
  0x89, 0x80, 0xB8, 0x0F, 0xDA, 0x81, 0xA0, 0x80, 0x8A, 0x80, 0xB8, 0x0B, 0xDA, 0x81, 0x95, 0x80, 
35376
  0x8B, 0x80, 0xB8, 0x10, 0xDA, 0x81, 0x99, 0x80, 0x8C, 0x80, 0xB8, 0x11, 0xDA, 0x81, 0x9D, 0x80, 
35377
  0x8D, 0x80, 0xB8, 0x12, 0xDA, 0x81, 0xA1, 0x80, 0x8D, 0x80, 0xB8, 0x01, 0xCF, 0x07, 0x5F, 0x30, 
35378
  0x30, 0x30, 0x30, 0x31, 0x69, 0x80, 0x90, 0x80, 0xB8, 0x14, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
35379
  0x30, 0x31, 0x68, 0x80, 0x93, 0x80, 0xB8, 0x15, 0xDA, 0x1E, 0x80, 0xBC, 0x80, 0xE7, 0x0C, 0xDA, 
35380
  0x81, 0xA4, 0x80, 0xC0, 0x80, 0xE7, 0x0D, 0xDA, 0x81, 0xA5, 0x80, 0xC1, 0x80, 0xE7, 0x0B, 0xDA, 
35381
  0x81, 0xA6, 0x80, 0xC1, 0x80, 0xE7, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x6B, 
35382
  0x80, 0xC4, 0x80, 0xE7, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x6A, 0x80, 0xC7, 
35383
  0x80, 0xE7, 0x10, 0xDA, 0x1E, 0x80, 0xC8, 0x80, 0xDC, 0x0E, 0xDA, 0x80, 0x90, 0x80, 0xC8, 0x80, 
35384
  0xDC, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x6C, 0x80, 0xCC, 0x80, 0xDA, 0x13, 
35385
  0xDA, 0x81, 0xAA, 0x80, 0xCE, 0x80, 0xDA, 0x14, 0xDA, 0x81, 0xAB, 0x80, 0xD0, 0x80, 0xDA, 0x15, 
35386
  0xDA, 0x81, 0xAC, 0x29, 0x04, 0x00, 0x00, 0x3D, 0x05, 0x02, 0x00, 0x19, 0x06, 0x05, 0x00, 0x24, 
35387
  0x05, 0x06, 0x00, 0x1C, 0x05, 0x0F, 0x00, 0x26, 0x08, 0x00, 0x00, 0x47, 0x07, 0x01, 0x08, 0x19, 
35388
  0x08, 0x07, 0x00, 0x1D, 0x08, 0x0A, 0x00, 0x38, 0x07, 0x01, 0x08, 0x19, 0x09, 0x07, 0x00, 0x2F, 
35389
  0x09, 0x00, 0x00, 0x33, 0x07, 0x00, 0x00, 0x1C, 0x07, 0x03, 0x00, 0x05, 0x04, 0x04, 0x01, 0x1A, 
35390
  0x01, 0x00, 0x00, 0x47, 0x08, 0x01, 0x08, 0x1A, 0xF7, 0xFF, 0xFF, 0x1A, 0xD5, 0x00, 0x00, 0x24, 
35391
  0x07, 0x06, 0x01, 0x1C, 0x07, 0x19, 0x00, 0x3B, 0x08, 0x02, 0x00, 0x19, 0x09, 0x08, 0x00, 0x26, 
35392
  0x08, 0x00, 0x00, 0x26, 0x0B, 0x00, 0x00, 0x47, 0x0A, 0x01, 0x0B, 0x19, 0x0B, 0x0A, 0x00, 0x1D, 
35393
  0x0B, 0x11, 0x00, 0x38, 0x0A, 0x01, 0x0B, 0x19, 0x0C, 0x0A, 0x00, 0x47, 0x08, 0x09, 0x08, 0x26, 
35394
  0x0D, 0x00, 0x00, 0x23, 0x0A, 0x0D, 0x08, 0x1C, 0x0A, 0x03, 0x00, 0x1A, 0x0A, 0x00, 0x00, 0x1A, 
35395
  0x01, 0x00, 0x00, 0x38, 0x0A, 0x09, 0x08, 0x30, 0x0C, 0x0A, 0x00, 0x33, 0x0D, 0x00, 0x00, 0x1C, 
35396
  0x0D, 0x03, 0x00, 0x05, 0x04, 0x04, 0x01, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x0B, 0x01, 0x0B, 0x1A, 
35397
  0xF0, 0xFF, 0xFF, 0x1A, 0xBB, 0x00, 0x00, 0x24, 0x08, 0x06, 0x02, 0x1C, 0x08, 0x23, 0x00, 0x3B, 
35398
  0x09, 0x02, 0x00, 0x19, 0x0A, 0x09, 0x00, 0x3B, 0x09, 0x02, 0x01, 0x19, 0x0B, 0x09, 0x00, 0x26, 
35399
  0x09, 0x00, 0x00, 0x26, 0x0C, 0x00, 0x00, 0x26, 0x0E, 0x00, 0x00, 0x47, 0x0D, 0x01, 0x0E, 0x19, 
35400
  0x0E, 0x0D, 0x00, 0x1D, 0x0E, 0x18, 0x00, 0x38, 0x0D, 0x01, 0x0E, 0x19, 0x0F, 0x0D, 0x00, 0x47, 
35401
  0x09, 0x0A, 0x09, 0x26, 0x10, 0x00, 0x00, 0x23, 0x0D, 0x10, 0x09, 0x1C, 0x0D, 0x03, 0x00, 0x1A, 
35402
  0x11, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x0C, 0x0B, 0x0C, 0x26, 0x10, 0x00, 0x00, 0x23, 
35403
  0x0D, 0x10, 0x0C, 0x1C, 0x0D, 0x03, 0x00, 0x1A, 0x0B, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x38, 
35404
  0x0D, 0x0A, 0x09, 0x38, 0x10, 0x0B, 0x0C, 0x31, 0x0F, 0x0D, 0x10, 0x33, 0x11, 0x00, 0x00, 0x1C, 
35405
  0x11, 0x03, 0x00, 0x05, 0x04, 0x04, 0x01, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x0E, 0x01, 0x0E, 0x1A, 
35406
  0xE9, 0xFF, 0xFF, 0x1A, 0x97, 0x00, 0x00, 0x24, 0x09, 0x06, 0x03, 0x1C, 0x09, 0x2E, 0x00, 0x3B, 
35407
  0x0A, 0x02, 0x00, 0x19, 0x0B, 0x0A, 0x00, 0x3B, 0x0A, 0x02, 0x01, 0x19, 0x0C, 0x0A, 0x00, 0x3B, 
35408
  0x0A, 0x02, 0x02, 0x19, 0x0D, 0x0A, 0x00, 0x26, 0x0A, 0x00, 0x00, 0x26, 0x0E, 0x00, 0x00, 0x26, 
35409
  0x0F, 0x00, 0x00, 0x26, 0x11, 0x00, 0x00, 0x47, 0x10, 0x01, 0x11, 0x19, 0x11, 0x10, 0x00, 0x1D, 
35410
  0x11, 0x20, 0x00, 0x38, 0x10, 0x01, 0x11, 0x19, 0x12, 0x10, 0x00, 0x47, 0x0A, 0x0B, 0x0A, 0x26, 
35411
  0x13, 0x00, 0x00, 0x23, 0x10, 0x13, 0x0A, 0x1C, 0x10, 0x03, 0x00, 0x1A, 0x19, 0x00, 0x00, 0x1A, 
35412
  0x01, 0x00, 0x00, 0x47, 0x0E, 0x0C, 0x0E, 0x26, 0x13, 0x00, 0x00, 0x23, 0x10, 0x13, 0x0E, 0x1C, 
35413
  0x10, 0x03, 0x00, 0x1A, 0x13, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x0F, 0x0D, 0x0F, 0x26, 
35414
  0x13, 0x00, 0x00, 0x23, 0x10, 0x13, 0x0F, 0x1C, 0x10, 0x03, 0x00, 0x1A, 0x0D, 0x00, 0x00, 0x1A, 
35415
  0x01, 0x00, 0x00, 0x38, 0x10, 0x0B, 0x0A, 0x38, 0x13, 0x0C, 0x0E, 0x38, 0x14, 0x0D, 0x0F, 0x31, 
35416
  0x12, 0x10, 0x13, 0x2F, 0x14, 0x00, 0x00, 0x33, 0x15, 0x00, 0x00, 0x1C, 0x15, 0x03, 0x00, 0x05, 
35417
  0x04, 0x04, 0x01, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x11, 0x01, 0x11, 0x1A, 0xE1, 0xFF, 0xFF, 0x1A, 
35418
  0x68, 0x00, 0x00, 0x24, 0x0A, 0x06, 0x04, 0x1C, 0x0A, 0x38, 0x00, 0x3B, 0x0B, 0x02, 0x00, 0x19, 
35419
  0x0C, 0x0B, 0x00, 0x3B, 0x0B, 0x02, 0x01, 0x19, 0x0D, 0x0B, 0x00, 0x3B, 0x0B, 0x02, 0x02, 0x19, 
35420
  0x0E, 0x0B, 0x00, 0x3B, 0x0B, 0x02, 0x03, 0x19, 0x0F, 0x0B, 0x00, 0x26, 0x0B, 0x00, 0x00, 0x26, 
35421
  0x10, 0x00, 0x00, 0x26, 0x11, 0x00, 0x00, 0x26, 0x12, 0x00, 0x00, 0x26, 0x14, 0x00, 0x00, 0x47, 
35422
  0x13, 0x01, 0x14, 0x19, 0x14, 0x13, 0x00, 0x1D, 0x14, 0x27, 0x00, 0x38, 0x13, 0x01, 0x14, 0x19, 
35423
  0x15, 0x13, 0x00, 0x47, 0x0B, 0x0C, 0x0B, 0x26, 0x16, 0x00, 0x00, 0x23, 0x13, 0x16, 0x0B, 0x1C, 
35424
  0x13, 0x03, 0x00, 0x1A, 0x20, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x10, 0x0D, 0x10, 0x26, 
35425
  0x16, 0x00, 0x00, 0x23, 0x13, 0x16, 0x10, 0x1C, 0x13, 0x03, 0x00, 0x1A, 0x1A, 0x00, 0x00, 0x1A, 
35426
  0x01, 0x00, 0x00, 0x47, 0x11, 0x0E, 0x11, 0x26, 0x16, 0x00, 0x00, 0x23, 0x13, 0x16, 0x11, 0x1C, 
35427
  0x13, 0x03, 0x00, 0x1A, 0x14, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x12, 0x0F, 0x12, 0x26, 
35428
  0x16, 0x00, 0x00, 0x23, 0x13, 0x16, 0x12, 0x1C, 0x13, 0x03, 0x00, 0x1A, 0x0E, 0x00, 0x00, 0x1A, 
35429
  0x01, 0x00, 0x00, 0x38, 0x13, 0x0C, 0x0B, 0x38, 0x16, 0x0D, 0x10, 0x38, 0x17, 0x0E, 0x11, 0x38, 
35430
  0x18, 0x0F, 0x12, 0x31, 0x15, 0x13, 0x16, 0x30, 0x17, 0x18, 0x00, 0x33, 0x19, 0x00, 0x00, 0x1C, 
35431
  0x19, 0x03, 0x00, 0x05, 0x04, 0x04, 0x01, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x14, 0x01, 0x14, 0x1A, 
35432
  0xDA, 0xFF, 0xFF, 0x1A, 0x2F, 0x00, 0x00, 0x2F, 0x06, 0x00, 0x00, 0x2A, 0x0C, 0x00, 0x00, 0x33, 
35433
  0x0B, 0x0C, 0x00, 0x19, 0x0C, 0x0B, 0x00, 0x2F, 0x06, 0x00, 0x00, 0x2A, 0x0D, 0x00, 0x00, 0x33, 
35434
  0x0B, 0x0D, 0x00, 0x19, 0x0D, 0x0B, 0x00, 0x28, 0x0B, 0x00, 0x00, 0x26, 0x0F, 0x00, 0x00, 0x47, 
35435
  0x0E, 0x01, 0x0F, 0x19, 0x0F, 0x0E, 0x00, 0x1D, 0x0F, 0x22, 0x00, 0x38, 0x0E, 0x01, 0x0F, 0x19, 
35436
  0x10, 0x0E, 0x00, 0x29, 0x0E, 0x00, 0x00, 0x21, 0x11, 0x0E, 0x06, 0x1C, 0x11, 0x12, 0x00, 0x38, 
35437
  0x12, 0x0C, 0x0E, 0x19, 0x13, 0x12, 0x00, 0x38, 0x12, 0x02, 0x0E, 0x19, 0x14, 0x12, 0x00, 0x47, 
35438
  0x12, 0x14, 0x13, 0x19, 0x15, 0x12, 0x00, 0x26, 0x16, 0x00, 0x00, 0x23, 0x12, 0x16, 0x15, 0x1C, 
35439
  0x12, 0x04, 0x00, 0x27, 0x0B, 0x00, 0x00, 0x1A, 0x07, 0x00, 0x00, 0x1A, 0x04, 0x00, 0x00, 0x3A, 
35440
  0x0C, 0x0E, 0x15, 0x38, 0x16, 0x14, 0x15, 0x3A, 0x0D, 0x0E, 0x16, 0x05, 0x0E, 0x0E, 0x01, 0x1A, 
35441
  0xEE, 0xFF, 0xFF, 0x1C, 0x0B, 0x03, 0x00, 0x1A, 0x0A, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x2F, 
35442
  0x10, 0x00, 0x00, 0x32, 0x0D, 0x00, 0x00, 0x33, 0x0E, 0x00, 0x00, 0x1C, 0x0E, 0x03, 0x00, 0x05, 
35443
  0x04, 0x04, 0x01, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x0F, 0x01, 0x0F, 0x1A, 0xDF, 0xFF, 0xFF, 0x03, 
35444
  0x04, 0x00, 0x00, 0x83, 0xEC, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35445
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35446
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35447
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35448
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35449
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35450
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35451
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35452
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35453
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35454
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35455
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35456
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35457
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35458
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35459
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35460
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35461
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35462
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35463
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35464
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35465
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35466
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35467
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35468
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35469
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35470
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35471
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35472
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
35473
  0x00, 0x03, 0xBF, 0xFB, 0x01, 0xDA, 0x08, 0xCE, 0x5C, 0x28, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x20, 
35474
  0x70, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 0x20, 0x26, 0x20, 0x69, 0x6E, 0x64, 0x73, 0x29, 
35475
  0x0A, 0x0A, 0x43, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 
35476
  0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x69, 0x74, 0x65, 0x6D, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x60, 
35477
  0x69, 0x6E, 0x64, 0x60, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x60, 
35478
  0x28, 0x70, 0x72, 0x65, 0x64, 0x20, 0x69, 0x74, 0x65, 0x6D, 0x29, 0x60, 0x0A, 0x69, 0x73, 0x20, 
35479
  0x74, 0x72, 0x75, 0x65, 0x2E, 0xCF, 0x10, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 
35480
  0x73, 0x68, 0x2D, 0x62, 0x79, 0x74, 0x65, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x11, 
35481
  0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 
35482
  0x63, 0x81, 0x06, 0x01, 0xDA, 0x06, 0xD8, 0x10, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 
35483
  0x75, 0x73, 0x68, 0x2D, 0x62, 0x79, 0x74, 0x65, 0xDA, 0x08, 0xCE, 0x80, 0xA8, 0x28, 0x62, 0x75, 
35484
  0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x62, 0x79, 0x74, 0x65, 0x20, 0x62, 
35485
  0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x41, 0x70, 0x70, 
35486
  0x65, 0x6E, 0x64, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 
35487
  0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x65, 0x78, 0x70, 0x61, 
35488
  0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x61, 0x73, 
35489
  0x20, 0x6E, 0x65, 0x63, 0x65, 0x73, 0x73, 0x61, 0x72, 0x79, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
35490
  0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 
35491
  0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x74, 0x68, 
35492
  0x72, 0x6F, 0x77, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 
35493
  0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x66, 
35494
  0x6C, 0x6F, 0x77, 0x73, 0x2E, 0xCF, 0x0A, 0x64, 0x6F, 0x63, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x61, 
35495
  0x74, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8B, 0xFE, 0x01, 0xDA, 0x06, 0xD7, 
35496
  0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x49, 0x04, 0x01, 0x04, 0x0A, 0x80, 0x8D, 0x00, 0x18, 0x2D, 
35497
  0xCE, 0x0A, 0x64, 0x6F, 0x63, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0xDA, 0x18, 0xD0, 0x09, 
35498
  0x64, 0x6F, 0x63, 0x2D, 0x77, 0x69, 0x64, 0x74, 0x68, 0xDA, 0x80, 0xDF, 0xD0, 0x09, 0x64, 0x6F, 
35499
  0x63, 0x2D, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0xD5, 0x04, 0xD0, 0x04, 0x63, 0x6F, 0x64, 0x65, 0xD2, 
35500
  0x02, 0x00, 0xCE, 0x05, 0x1B, 0x5B, 0x39, 0x37, 0x6D, 0xCE, 0x05, 0x1B, 0x5B, 0x33, 0x39, 0x6D, 
35501
  0xD0, 0x04, 0x62, 0x6F, 0x6C, 0x64, 0xD2, 0x02, 0x00, 0xCE, 0x04, 0x1B, 0x5B, 0x31, 0x6D, 0xCE, 
35502
  0x05, 0x1B, 0x5B, 0x32, 0x32, 0x6D, 0xD0, 0x09, 0x75, 0x6E, 0x64, 0x65, 0x72, 0x6C, 0x69, 0x6E, 
35503
  0x65, 0xD2, 0x02, 0x00, 0xCE, 0x04, 0x1B, 0x5B, 0x34, 0x6D, 0xCE, 0x05, 0x1B, 0x5B, 0x32, 0x34, 
35504
  0x6D, 0xD0, 0x07, 0x69, 0x74, 0x61, 0x6C, 0x69, 0x63, 0x73, 0xDA, 0x83, 0x56, 0xD5, 0x04, 0xDA, 
35505
  0x83, 0x4B, 0xD2, 0x02, 0x00, 0xCE, 0x01, 0x60, 0xDA, 0x83, 0x59, 0xDA, 0x83, 0x4F, 0xD2, 0x02, 
35506
  0x00, 0xCE, 0x02, 0x2A, 0x2A, 0xDA, 0x83, 0x5B, 0xDA, 0x83, 0x53, 0xD2, 0x02, 0x00, 0xCE, 0x01, 
35507
  0x5F, 0xDA, 0x83, 0x5D, 0xDA, 0x83, 0x57, 0xD2, 0x02, 0x00, 0xDA, 0x81, 0x86, 0xDA, 0x81, 0x86, 
35508
  0xDA, 0x81, 0xFC, 0xDA, 0x83, 0x4C, 0xDA, 0x80, 0xC5, 0xDA, 0x83, 0x4D, 0xDA, 0x80, 0xF5, 0x00, 
35509
  0x80, 0x8D, 0x00, 0xCF, 0x03, 0x73, 0x74, 0x72, 0x00, 0x80, 0x8D, 0x01, 0xCF, 0x05, 0x77, 0x69, 
35510
  0x64, 0x74, 0x68, 0x00, 0x80, 0x8D, 0x02, 0xCF, 0x06, 0x69, 0x6E, 0x64, 0x65, 0x6E, 0x74, 0x00, 
35511
  0x80, 0x8D, 0x03, 0xCF, 0x08, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x69, 0x7A, 0x65, 0x00, 0x80, 0x8D, 
35512
  0x04, 0xDA, 0x83, 0x44, 0x06, 0x80, 0x8D, 0x06, 0xDA, 0x83, 0x63, 0x06, 0x10, 0x01, 0xCF, 0x07, 
35513
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x67, 0x11, 0x80, 0x8D, 0x07, 0xCF, 0x09, 0x6D, 0x61, 0x78, 
35514
  0x2D, 0x77, 0x69, 0x64, 0x74, 0x68, 0x1C, 0x80, 0x8D, 0x0A, 0xCF, 0x09, 0x68, 0x61, 0x73, 0x2D, 
35515
  0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x21, 0x80, 0x8D, 0x0C, 0xCF, 0x0A, 0x64, 0x65, 0x6C, 0x69, 0x6D, 
35516
  0x69, 0x74, 0x65, 0x72, 0x73, 0x23, 0x80, 0x8D, 0x0E, 0xCF, 0x05, 0x6D, 0x6F, 0x64, 0x65, 0x73, 
35517
  0x25, 0x80, 0x8D, 0x10, 0xCF, 0x0B, 0x74, 0x6F, 0x67, 0x67, 0x6C, 0x65, 0x2D, 0x6D, 0x6F, 0x64, 
35518
  0x65, 0x26, 0x80, 0x8D, 0x11, 0xCF, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6F, 0x72, 0x28, 0x80, 0x8D, 
35519
  0x13, 0xDA, 0x80, 0xE3, 0x2A, 0x80, 0x8D, 0x15, 0xDA, 0x81, 0xCF, 0x2C, 0x80, 0x8D, 0x17, 0xCF, 
35520
  0x02, 0x63, 0x6E, 0x2E, 0x80, 0x8D, 0x19, 0xCF, 0x03, 0x63, 0x2B, 0x2B, 0x30, 0x80, 0x8D, 0x1B, 
35521
  0xCF, 0x04, 0x63, 0x2B, 0x3D, 0x6E, 0x32, 0x80, 0x8D, 0x1D, 0xCF, 0x09, 0x73, 0x6B, 0x69, 0x70, 
35522
  0x77, 0x68, 0x69, 0x74, 0x65, 0x34, 0x80, 0x8D, 0x1F, 0xCF, 0x08, 0x73, 0x6B, 0x69, 0x70, 0x6C, 
35523
  0x69, 0x6E, 0x65, 0x36, 0x80, 0x8D, 0x21, 0xCF, 0x03, 0x75, 0x6C, 0x3F, 0x38, 0x80, 0x8D, 0x23, 
35524
  0xCF, 0x03, 0x6F, 0x6C, 0x3F, 0x3A, 0x80, 0x8D, 0x25, 0xCF, 0x04, 0x66, 0x63, 0x62, 0x3F, 0x3C, 
35525
  0x80, 0x8D, 0x27, 0xCF, 0x03, 0x6E, 0x6C, 0x3F, 0x3D, 0x80, 0x8D, 0x28, 0xCF, 0x0C, 0x70, 0x61, 
35526
  0x72, 0x73, 0x65, 0x2D, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x73, 0x3F, 0x80, 0x8D, 0x2A, 0xCF, 0x08, 
35527
  0x67, 0x65, 0x74, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x41, 0x80, 0x8D, 0x2C, 0xCF, 0x04, 0x70, 0x75, 
35528
  0x73, 0x68, 0x43, 0x80, 0x8D, 0x2E, 0xCF, 0x0A, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x6C, 0x69, 
35529
  0x73, 0x74, 0x45, 0x80, 0x8D, 0x30, 0xCF, 0x0D, 0x61, 0x64, 0x64, 0x2D, 0x63, 0x6F, 0x64, 0x65, 
35530
  0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x47, 0x80, 0x8D, 0x32, 0xCF, 0x09, 0x70, 0x61, 0x72, 0x73, 0x65, 
35531
  0x2D, 0x66, 0x63, 0x62, 0x49, 0x80, 0x8D, 0x34, 0xCF, 0x09, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 
35532
  0x69, 0x63, 0x62, 0x4B, 0x80, 0x8D, 0x36, 0xCF, 0x0D, 0x74, 0x6F, 0x6B, 0x65, 0x6E, 0x69, 0x7A, 
35533
  0x65, 0x2D, 0x6C, 0x69, 0x6E, 0x65, 0x58, 0x6D, 0x37, 0xCF, 0x0A, 0x66, 0x69, 0x72, 0x73, 0x74, 
35534
  0x2D, 0x6C, 0x69, 0x6E, 0x65, 0x5D, 0x6D, 0x3A, 0xCF, 0x07, 0x66, 0x6C, 0x2D, 0x6F, 0x70, 0x65, 
35535
  0x6E, 0x62, 0x6D, 0x3B, 0xCF, 0x08, 0x66, 0x6C, 0x2D, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x74, 0x80, 
35536
  0x8D, 0x39, 0xDA, 0x82, 0x3B, 0x75, 0x80, 0x8D, 0x3A, 0xCF, 0x0E, 0x63, 0x75, 0x72, 0x72, 0x65, 
35537
  0x6E, 0x74, 0x2D, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x77, 0x80, 0x8D, 0x3C, 0xCF, 0x0B, 0x65, 
35538
  0x6D, 0x69, 0x74, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x6E, 0x74, 0x79, 0x80, 0x8D, 0x3E, 0xCF, 0x07, 
35539
  0x65, 0x6D, 0x69, 0x74, 0x2D, 0x6E, 0x6C, 0x7B, 0x80, 0x8D, 0x40, 0xCF, 0x09, 0x65, 0x6D, 0x69, 
35540
  0x74, 0x2D, 0x77, 0x6F, 0x72, 0x64, 0x7D, 0x80, 0x8D, 0x42, 0xCF, 0x09, 0x65, 0x6D, 0x69, 0x74, 
35541
  0x2D, 0x63, 0x6F, 0x64, 0x65, 0x7F, 0x80, 0x8D, 0x44, 0xCF, 0x09, 0x65, 0x6D, 0x69, 0x74, 0x2D, 
35542
  0x6E, 0x6F, 0x64, 0x65, 0x80, 0x80, 0x80, 0x8C, 0x45, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
35543
  0x35, 0x49, 0x80, 0x83, 0x80, 0x8C, 0x47, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x48, 
35544
  0x80, 0x86, 0x80, 0x8C, 0x48, 0xDA, 0x82, 0xE1, 0x26, 0x07, 0x00, 0x00, 0x23, 0x06, 0x07, 0x02, 
35545
  0x1C, 0x06, 0x03, 0x00, 0x29, 0x05, 0x04, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x05, 0x02, 0x00, 
35546
  0x19, 0x06, 0x05, 0x00, 0x1C, 0x01, 0x03, 0x00, 0x19, 0x07, 0x01, 0x00, 0x1A, 0x07, 0x00, 0x00, 
35547
  0x2A, 0x08, 0x00, 0x00, 0x29, 0x09, 0x50, 0x00, 0x30, 0x08, 0x09, 0x00, 0x2A, 0x09, 0x01, 0x00, 
35548
  0x33, 0x08, 0x09, 0x00, 0x19, 0x07, 0x08, 0x00, 0x05, 0x08, 0x07, 0xF8, 0x19, 0x07, 0x08, 0x00, 
35549
  0x26, 0x0B, 0x00, 0x00, 0x48, 0x0A, 0x0B, 0x03, 0x1C, 0x0A, 0x03, 0x00, 0x19, 0x09, 0x03, 0x00, 
35550
  0x1A, 0x06, 0x00, 0x00, 0x2A, 0x0B, 0x02, 0x00, 0x2F, 0x0B, 0x00, 0x00, 0x2A, 0x0C, 0x01, 0x00, 
35551
  0x33, 0x0B, 0x0C, 0x00, 0x19, 0x09, 0x0B, 0x00, 0x19, 0x0A, 0x09, 0x00, 0x1C, 0x0A, 0x03, 0x00, 
35552
  0x2A, 0x0B, 0x03, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x2A, 0x0B, 0x04, 0x00, 0x19, 0x0C, 0x0B, 0x00, 
35553
  0x42, 0x0D, 0x00, 0x00, 0x19, 0x0E, 0x0D, 0x00, 0x2E, 0x0F, 0x00, 0x00, 0x19, 0x10, 0x0F, 0x00, 
35554
  0x29, 0x11, 0x00, 0x00, 0x3E, 0x12, 0x00, 0x00, 0x19, 0x13, 0x12, 0x00, 0x2E, 0x14, 0x01, 0x00, 
35555
  0x19, 0x15, 0x14, 0x00, 0x2E, 0x16, 0x02, 0x00, 0x19, 0x17, 0x16, 0x00, 0x2E, 0x18, 0x03, 0x00, 
35556
  0x19, 0x19, 0x18, 0x00, 0x2E, 0x1A, 0x04, 0x00, 0x19, 0x1B, 0x1A, 0x00, 0x2E, 0x1C, 0x05, 0x00, 
35557
  0x19, 0x1D, 0x1C, 0x00, 0x2E, 0x1E, 0x06, 0x00, 0x19, 0x1F, 0x1E, 0x00, 0x2E, 0x20, 0x07, 0x00, 
35558
  0x19, 0x21, 0x20, 0x00, 0x2E, 0x22, 0x08, 0x00, 0x19, 0x23, 0x22, 0x00, 0x2E, 0x24, 0x09, 0x00, 
35559
  0x19, 0x25, 0x24, 0x00, 0x2E, 0x26, 0x0A, 0x00, 0x19, 0x27, 0x26, 0x00, 0x26, 0x28, 0x00, 0x00, 
35560
  0x2E, 0x29, 0x0B, 0x00, 0x19, 0x2A, 0x29, 0x00, 0x2E, 0x2B, 0x0C, 0x00, 0x19, 0x2C, 0x2B, 0x00, 
35561
  0x2E, 0x2D, 0x0D, 0x00, 0x19, 0x2E, 0x2D, 0x00, 0x2E, 0x2F, 0x0E, 0x00, 0x19, 0x30, 0x2F, 0x00, 
35562
  0x2E, 0x31, 0x0F, 0x00, 0x19, 0x32, 0x31, 0x00, 0x2E, 0x33, 0x10, 0x00, 0x19, 0x34, 0x33, 0x00, 
35563
  0x2E, 0x35, 0x11, 0x00, 0x19, 0x36, 0x35, 0x00, 0x2E, 0x28, 0x12, 0x00, 0x29, 0x38, 0x00, 0x00, 
35564
  0x38, 0x37, 0x00, 0x38, 0x29, 0x39, 0x28, 0x00, 0x23, 0x38, 0x39, 0x37, 0x1C, 0x38, 0x1D, 0x00, 
35565
  0x33, 0x37, 0x1F, 0x00, 0x05, 0x37, 0x11, 0xFF, 0x29, 0x39, 0x00, 0x00, 0x31, 0x00, 0x39, 0x37, 
35566
  0x2A, 0x3A, 0x05, 0x00, 0x33, 0x39, 0x3A, 0x00, 0x19, 0x37, 0x39, 0x00, 0x1C, 0x0A, 0x03, 0x00, 
35567
  0x2A, 0x39, 0x06, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x2A, 0x39, 0x07, 0x00, 0x19, 0x3A, 0x39, 0x00, 
35568
  0x1C, 0x0A, 0x03, 0x00, 0x2A, 0x39, 0x08, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x2A, 0x39, 0x07, 0x00, 
35569
  0x19, 0x3B, 0x39, 0x00, 0x31, 0x3A, 0x37, 0x3B, 0x2A, 0x3C, 0x09, 0x00, 0x33, 0x39, 0x3C, 0x00, 
35570
  0x3D, 0x3C, 0x37, 0x00, 0x30, 0x39, 0x3C, 0x00, 0x43, 0x39, 0x00, 0x00, 0x2F, 0x39, 0x00, 0x00, 
35571
  0x43, 0x39, 0x00, 0x00, 0x2F, 0x39, 0x00, 0x00, 0x33, 0x3C, 0x2C, 0x00, 0x1A, 0x01, 0x00, 0x00, 
35572
  0x29, 0x37, 0x00, 0x00, 0x2F, 0x37, 0x00, 0x00, 0x33, 0x37, 0x28, 0x00, 0x2A, 0x38, 0x07, 0x00, 
35573
  0x2F, 0x38, 0x00, 0x00, 0x3F, 0x38, 0x00, 0x00, 0x19, 0x39, 0x38, 0x00, 0x29, 0x3A, 0x00, 0x00, 
35574
  0x2E, 0x3B, 0x13, 0x00, 0x19, 0x3C, 0x3B, 0x00, 0x2E, 0x3D, 0x14, 0x00, 0x19, 0x3E, 0x3D, 0x00, 
35575
  0x2E, 0x3F, 0x15, 0x00, 0x19, 0x40, 0x3F, 0x00, 0x2E, 0x41, 0x16, 0x00, 0x19, 0x42, 0x41, 0x00, 
35576
  0x2E, 0x43, 0x17, 0x00, 0x19, 0x44, 0x43, 0x00, 0x19, 0x45, 0x13, 0x00, 0x26, 0x47, 0x00, 0x00, 
35577
  0x47, 0x46, 0x45, 0x47, 0x19, 0x47, 0x46, 0x00, 0x1D, 0x47, 0x08, 0x00, 0x38, 0x46, 0x45, 0x47, 
35578
  0x19, 0x48, 0x46, 0x00, 0x33, 0x46, 0x3E, 0x00, 0x30, 0x48, 0x06, 0x00, 0x33, 0x46, 0x44, 0x00, 
35579
  0x47, 0x47, 0x45, 0x47, 0x1A, 0xF9, 0xFF, 0xFF, 0x03, 0x39, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
35580
  0x00, 0x08, 0x01, 0x01, 0x01, 0x01, 0x11, 0x01, 0x0F, 0xCE, 0x0B, 0x74, 0x6F, 0x67, 0x67, 0x6C, 
35581
  0x65, 0x2D, 0x6D, 0x6F, 0x64, 0x65, 0xDA, 0x18, 0xDA, 0x80, 0x8D, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 
35582
  0x83, 0x61, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x62, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x83, 0x63, 
35583
  0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x83, 0x44, 0xBF, 0xFF, 
35584
  0x00, 0x06, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x65, 0xBF, 0xFF, 0x00, 0x07, 
35585
  0xDA, 0x83, 0x66, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x83, 0x67, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x83, 
35586
  0x68, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x83, 0x69, 0x00, 0x11, 0x00, 0xCF, 0x04, 0x6D, 0x6F, 0x64, 
35587
  0x65, 0x00, 0x11, 0x01, 0xDA, 0x83, 0x6A, 0x02, 0x11, 0x03, 0xCF, 0x06, 0x61, 0x63, 0x74, 0x69, 
35588
  0x76, 0x65, 0x05, 0x11, 0x05, 0xCF, 0x06, 0x64, 0x65, 0x6C, 0x69, 0x6D, 0x73, 0x2B, 0x03, 0x00, 
35589
  0x0E, 0x39, 0x02, 0x03, 0x00, 0x19, 0x03, 0x02, 0x00, 0x2B, 0x05, 0x00, 0x0C, 0x39, 0x04, 0x05, 
35590
  0x00, 0x19, 0x05, 0x04, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x07, 0x00, 0x00, 0x33, 0x06, 0x07, 
35591
  0x00, 0x2B, 0x07, 0x00, 0x0E, 0x3A, 0x07, 0x00, 0x06, 0x1C, 0x03, 0x03, 0x00, 0x29, 0x06, 0x01, 
35592
  0x00, 0x1A, 0x02, 0x00, 0x00, 0x29, 0x06, 0x00, 0x00, 0x2F, 0x06, 0x00, 0x00, 0x34, 0x05, 0x00, 
35593
  0x00, 0xBF, 0xFF, 0x8C, 0x17, 0x11, 0x00, 0x11, 0x00, 0x05, 0x01, 0x11, 0x00, 0x11, 0x00, 0x05, 
35594
  0x01, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 
35595
  0x00, 0x0D, 0x00, 0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 
35596
  0x04, 0x01, 0x0F, 0xCE, 0x01, 0x63, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x83, 0x61, 0xBF, 
35597
  0xFF, 0x00, 0x01, 0xDA, 0x83, 0x62, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 
35598
  0x03, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x83, 0x44, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 
35599
  0x83, 0x63, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x65, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x83, 0x66, 
35600
  0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x83, 0x67, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x83, 0x68, 0xBF, 0xFF, 
35601
  0x00, 0x0E, 0xDA, 0x83, 0x69, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x83, 0x6A, 0xBF, 0xFF, 0x00, 0x11, 
35602
  0xDA, 0x83, 0x6B, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x80, 0xE3, 0x00, 0x04, 0x00, 0xDA, 0x81, 0xCF, 
35603
  0x2B, 0x02, 0x00, 0x00, 0x2B, 0x03, 0x00, 0x11, 0x39, 0x01, 0x02, 0x03, 0x03, 0x01, 0x00, 0x00, 
35604
  0xBF, 0xFF, 0x8C, 0x21, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
35605
  0x05, 0x01, 0x01, 0x01, 0x00, 0x05, 0x01, 0x11, 0xCE, 0x02, 0x63, 0x6E, 0xDA, 0x18, 0xBF, 0xFF, 
35606
  0x00, 0x00, 0xDA, 0x83, 0x61, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x62, 0xBF, 0xFF, 0x00, 0x02, 
35607
  0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x83, 
35608
  0x44, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x65, 0xBF, 
35609
  0xFF, 0x00, 0x07, 0xDA, 0x83, 0x66, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x83, 0x67, 0xBF, 0xFF, 0x00, 
35610
  0x0C, 0xDA, 0x83, 0x68, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x83, 0x69, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 
35611
  0x83, 0x6A, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x83, 0x6B, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x80, 0xE3, 
35612
  0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x81, 0xCF, 0x00, 0x05, 0x00, 0xDA, 0x80, 0xD8, 0x00, 0x05, 0x01, 
35613
  0xDA, 0x83, 0x6C, 0x2B, 0x03, 0x00, 0x11, 0x06, 0x02, 0x00, 0x03, 0x2B, 0x04, 0x00, 0x00, 0x39, 
35614
  0x03, 0x04, 0x02, 0x03, 0x03, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0x22, 0x19, 0x00, 0x19, 0x00, 0x10, 
35615
  0x00, 0x10, 0x00, 0x10, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 
35616
  0x12, 0xCE, 0x03, 0x63, 0x2B, 0x2B, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x83, 0x61, 0xBF, 
35617
  0xFF, 0x00, 0x01, 0xDA, 0x83, 0x62, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 
35618
  0x03, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x83, 0x44, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 
35619
  0x83, 0x63, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x65, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x83, 0x66, 
35620
  0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x83, 0x67, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x83, 0x68, 0xBF, 0xFF, 
35621
  0x00, 0x0E, 0xDA, 0x83, 0x69, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x83, 0x6A, 0xBF, 0xFF, 0x00, 0x11, 
35622
  0xDA, 0x83, 0x6B, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x80, 0xE3, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x81, 
35623
  0xCF, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x83, 0x6C, 0x00, 0x08, 0x00, 0xDA, 0x83, 0x6D, 0x03, 0x08, 
35624
  0x02, 0xDA, 0x23, 0x2B, 0x02, 0x00, 0x00, 0x2B, 0x03, 0x00, 0x11, 0x39, 0x01, 0x02, 0x03, 0x19, 
35625
  0x02, 0x01, 0x00, 0x2B, 0x03, 0x00, 0x11, 0x05, 0x01, 0x03, 0x01, 0x2D, 0x01, 0x00, 0x11, 0x03, 
35626
  0x02, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0x23, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x2C, 
35627
  0x00, 0x2C, 0x00, 0x2C, 0x00, 0x10, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x00, 
35628
  0x08, 0x01, 0x14, 0xCE, 0x04, 0x63, 0x2B, 0x3D, 0x6E, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 
35629
  0x83, 0x61, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x62, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x83, 0x63, 
35630
  0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x83, 0x44, 0xBF, 0xFF, 
35631
  0x00, 0x06, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x65, 0xBF, 0xFF, 0x00, 0x07, 
35632
  0xDA, 0x83, 0x66, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x83, 0x67, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x83, 
35633
  0x68, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x83, 0x69, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x83, 0x6A, 0xBF, 
35634
  0xFF, 0x00, 0x11, 0xDA, 0x83, 0x6B, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x80, 0xE3, 0xBF, 0xFF, 0x00, 
35635
  0x15, 0xDA, 0x81, 0xCF, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x83, 0x6C, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 
35636
  0x83, 0x6D, 0x00, 0x08, 0x00, 0xDA, 0x80, 0xD8, 0x00, 0x08, 0x01, 0xDA, 0x83, 0x6E, 0x03, 0x08, 
35637
  0x03, 0xDA, 0x23, 0x2B, 0x03, 0x00, 0x00, 0x2B, 0x04, 0x00, 0x11, 0x39, 0x02, 0x03, 0x04, 0x19, 
35638
  0x03, 0x02, 0x00, 0x2B, 0x04, 0x00, 0x11, 0x06, 0x02, 0x04, 0x00, 0x2D, 0x02, 0x00, 0x11, 0x03, 
35639
  0x03, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0x24, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x12, 0x00, 0x2E, 
35640
  0x00, 0x2E, 0x00, 0x2E, 0x00, 0x12, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 
35641
  0x0C, 0x01, 0x14, 0xCE, 0x09, 0x73, 0x6B, 0x69, 0x70, 0x77, 0x68, 0x69, 0x74, 0x65, 0xDA, 0x18, 
35642
  0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x83, 0x61, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x62, 0xBF, 0xFF, 
35643
  0x00, 0x02, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x04, 
35644
  0xDA, 0x83, 0x44, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 
35645
  0x65, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x83, 0x66, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x83, 0x67, 0xBF, 
35646
  0xFF, 0x00, 0x0C, 0xDA, 0x83, 0x68, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x83, 0x69, 0xBF, 0xFF, 0x00, 
35647
  0x10, 0xDA, 0x83, 0x6A, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x83, 0x6B, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 
35648
  0x80, 0xE3, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x81, 0xCF, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x83, 0x6C, 
35649
  0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x83, 0x6D, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x83, 0x6E, 0x00, 0x0C, 
35650
  0x00, 0xDA, 0x83, 0x6F, 0x00, 0x0C, 0x01, 0xDA, 0x1E, 0x2B, 0x01, 0x00, 0x11, 0x2B, 0x03, 0x00, 
35651
  0x15, 0x33, 0x02, 0x03, 0x00, 0x24, 0x03, 0x02, 0x20, 0x1C, 0x03, 0x05, 0x00, 0x2B, 0x04, 0x00, 
35652
  0x11, 0x05, 0x02, 0x04, 0x01, 0x2D, 0x02, 0x00, 0x11, 0x1A, 0xF9, 0xFF, 0xFF, 0x2B, 0x03, 0x00, 
35653
  0x11, 0x07, 0x02, 0x03, 0x01, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0x27, 0x05, 0x01, 0x0F, 
35654
  0x00, 0x0F, 0x00, 0x0C, 0x00, 0x05, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x05, 0x01, 0x05, 
35655
  0x00, 0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x13, 0x01, 
35656
  0x17, 0xCE, 0x08, 0x73, 0x6B, 0x69, 0x70, 0x6C, 0x69, 0x6E, 0x65, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 
35657
  0x00, 0xDA, 0x83, 0x61, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x62, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 
35658
  0x83, 0x63, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x83, 0x44, 
35659
  0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x65, 0xBF, 0xFF, 
35660
  0x00, 0x07, 0xDA, 0x83, 0x66, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x83, 0x67, 0xBF, 0xFF, 0x00, 0x0C, 
35661
  0xDA, 0x83, 0x68, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x83, 0x69, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x83, 
35662
  0x6A, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x83, 0x6B, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x80, 0xE3, 0xBF, 
35663
  0xFF, 0x00, 0x15, 0xDA, 0x81, 0xCF, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x83, 0x6C, 0xBF, 0xFF, 0x00, 
35664
  0x19, 0xDA, 0x83, 0x6D, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x83, 0x6E, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 
35665
  0x83, 0x6F, 0x00, 0x13, 0x00, 0xDA, 0x83, 0x70, 0x00, 0x13, 0x01, 0xDA, 0x1E, 0x03, 0x09, 0x03, 
35666
  0xCF, 0x01, 0x79, 0x03, 0x09, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x68, 0x2B, 
35667
  0x01, 0x00, 0x11, 0x2B, 0x03, 0x00, 0x15, 0x33, 0x02, 0x03, 0x00, 0x19, 0x03, 0x02, 0x00, 0x1C, 
35668
  0x03, 0x04, 0x00, 0x49, 0x04, 0x03, 0x0A, 0x19, 0x02, 0x04, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 
35669
  0x02, 0x03, 0x00, 0x1C, 0x02, 0x05, 0x00, 0x2B, 0x04, 0x00, 0x11, 0x05, 0x03, 0x04, 0x01, 0x2D, 
35670
  0x03, 0x00, 0x11, 0x1A, 0xF4, 0xFF, 0xFF, 0x2B, 0x03, 0x00, 0x19, 0x33, 0x02, 0x03, 0x00, 0x2B, 
35671
  0x04, 0x00, 0x11, 0x07, 0x03, 0x04, 0x01, 0x03, 0x03, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0x2B, 0x05, 
35672
  0x01, 0x14, 0x00, 0x14, 0x00, 0x0C, 0x00, 0x19, 0x00, 0x20, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 
35673
  0x00, 0x05, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x01, 0x05, 
35674
  0x00, 0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x18, 0x01, 
35675
  0x1A, 0xCE, 0x03, 0x75, 0x6C, 0x3F, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x83, 0x61, 0xBF, 
35676
  0xFF, 0x00, 0x01, 0xDA, 0x83, 0x62, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 
35677
  0x03, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x83, 0x44, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 
35678
  0x83, 0x63, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x65, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x83, 0x66, 
35679
  0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x83, 0x67, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x83, 0x68, 0xBF, 0xFF, 
35680
  0x00, 0x0E, 0xDA, 0x83, 0x69, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x83, 0x6A, 0xBF, 0xFF, 0x00, 0x11, 
35681
  0xDA, 0x83, 0x6B, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x80, 0xE3, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x81, 
35682
  0xCF, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x83, 0x6C, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x83, 0x6D, 0xBF, 
35683
  0xFF, 0x00, 0x1B, 0xDA, 0x83, 0x6E, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x83, 0x6F, 0xBF, 0xFF, 0x00, 
35684
  0x1F, 0xDA, 0x83, 0x70, 0x00, 0x18, 0x00, 0xDA, 0x83, 0x71, 0x02, 0x18, 0x02, 0xDA, 0x1E, 0x07, 
35685
  0x18, 0x03, 0xCF, 0x02, 0x78, 0x31, 0x09, 0x18, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
35686
  0x35, 0x6A, 0x0C, 0x12, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x6B, 0x12, 0x17, 
35687
  0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x69, 0x2B, 0x02, 0x00, 0x15, 0x33, 0x01, 
35688
  0x02, 0x00, 0x19, 0x02, 0x01, 0x00, 0x29, 0x01, 0x01, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x2B, 0x03, 
35689
  0x00, 0x17, 0x33, 0x01, 0x03, 0x00, 0x19, 0x03, 0x01, 0x00, 0x24, 0x01, 0x03, 0x20, 0x19, 0x04, 
35690
  0x01, 0x00, 0x1C, 0x01, 0x0D, 0x00, 0x24, 0x05, 0x02, 0x2A, 0x19, 0x06, 0x05, 0x00, 0x1C, 0x06, 
35691
  0x03, 0x00, 0x19, 0x05, 0x06, 0x00, 0x1A, 0x03, 0x00, 0x00, 0x24, 0x07, 0x02, 0x2D, 0x19, 0x05, 
35692
  0x07, 0x00, 0x19, 0x06, 0x05, 0x00, 0x1C, 0x05, 0x03, 0x00, 0x29, 0x07, 0x02, 0x00, 0x03, 0x07, 
35693
  0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0x32, 0x0D, 0x00, 
35694
  0x0D, 0x00, 0x05, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x05, 0x02, 0x09, 0xBF, 
35695
  0xFF, 0x07, 0x00, 0x07, 0x02, 0x0D, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x1D, 
35696
  0x00, 0x09, 0xBF, 0xFE, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xCD, 
35697
  0x00, 0xDC, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x29, 0x01, 0x1C, 0xCE, 0x03, 0x6F, 0x6C, 
35698
  0x3F, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x83, 0x61, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 
35699
  0x62, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x83, 0x64, 0xBF, 
35700
  0xFF, 0x00, 0x04, 0xDA, 0x83, 0x44, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 
35701
  0x01, 0xDA, 0x83, 0x65, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x83, 0x66, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 
35702
  0x83, 0x67, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x83, 0x68, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x83, 0x69, 
35703
  0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x83, 0x6A, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x83, 0x6B, 0xBF, 0xFF, 
35704
  0x00, 0x13, 0xDA, 0x80, 0xE3, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x81, 0xCF, 0xBF, 0xFF, 0x00, 0x17, 
35705
  0xDA, 0x83, 0x6C, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x83, 0x6D, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x83, 
35706
  0x6E, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x83, 0x6F, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x83, 0x70, 0xBF, 
35707
  0xFF, 0x00, 0x21, 0xDA, 0x83, 0x71, 0x00, 0x29, 0x00, 0xDA, 0x83, 0x72, 0x00, 0x29, 0x01, 0xCF, 
35708
  0x03, 0x6F, 0x6C, 0x64, 0x05, 0x0E, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x6C, 
35709
  0x14, 0x29, 0x03, 0xCF, 0x02, 0x63, 0x31, 0x19, 0x29, 0x04, 0xCF, 0x02, 0x63, 0x32, 0x1A, 0x29, 
35710
  0x02, 0xCF, 0x02, 0x63, 0x2A, 0x1D, 0x23, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 
35711
  0x6D, 0x2B, 0x01, 0x00, 0x11, 0x2B, 0x04, 0x00, 0x15, 0x33, 0x03, 0x04, 0x00, 0x29, 0x05, 0x30, 
35712
  0x00, 0x45, 0x04, 0x03, 0x05, 0x19, 0x03, 0x04, 0x00, 0x1C, 0x04, 0x07, 0x00, 0x2B, 0x06, 0x00, 
35713
  0x15, 0x33, 0x05, 0x06, 0x00, 0x29, 0x07, 0x39, 0x00, 0x46, 0x06, 0x05, 0x07, 0x19, 0x02, 0x06, 
35714
  0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x02, 0x03, 0x00, 0x1C, 0x02, 0x04, 0x00, 0x2B, 0x04, 0x00, 
35715
  0x19, 0x33, 0x03, 0x04, 0x00, 0x1A, 0xF0, 0xFF, 0xFF, 0x2B, 0x03, 0x00, 0x15, 0x33, 0x02, 0x03, 
35716
  0x00, 0x19, 0x03, 0x02, 0x00, 0x29, 0x02, 0x01, 0x00, 0x2F, 0x02, 0x00, 0x00, 0x2B, 0x04, 0x00, 
35717
  0x17, 0x33, 0x02, 0x04, 0x00, 0x19, 0x04, 0x02, 0x00, 0x2B, 0x02, 0x00, 0x11, 0x2D, 0x01, 0x00, 
35718
  0x11, 0x24, 0x06, 0x03, 0x2E, 0x19, 0x07, 0x06, 0x00, 0x1C, 0x06, 0x04, 0x00, 0x24, 0x08, 0x04, 
35719
  0x20, 0x19, 0x05, 0x08, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x05, 0x07, 0x00, 0x1C, 0x05, 0x05, 
35720
  0x00, 0x2B, 0x07, 0x00, 0x11, 0x07, 0x06, 0x02, 0x07, 0x05, 0x06, 0x06, 0x02, 0x03, 0x06, 0x00, 
35721
  0x00, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0x38, 0x05, 0x01, 0x15, 0x00, 0x15, 0x00, 0x11, 
35722
  0x00, 0x11, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x28, 0x00, 0x28, 0x00, 0x24, 0x00, 0x24, 0x00, 0x0C, 
35723
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x00, 0x38, 0x00, 0x38, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 
35724
  0x00, 0x05, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x05, 0x00, 0x05, 0x01, 0x07, 
35725
  0x01, 0x10, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x21, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x07, 
35726
  0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFF, 0x07, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
35727
  0x06, 0x00, 0x00, 0x00, 0x00, 0x14, 0x01, 0x17, 0xCE, 0x04, 0x66, 0x63, 0x62, 0x3F, 0xDA, 0x18, 
35728
  0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x83, 0x61, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x62, 0xBF, 0xFF, 
35729
  0x00, 0x02, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x04, 
35730
  0xDA, 0x83, 0x44, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 
35731
  0x65, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x83, 0x66, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x83, 0x67, 0xBF, 
35732
  0xFF, 0x00, 0x0C, 0xDA, 0x83, 0x68, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x83, 0x69, 0xBF, 0xFF, 0x00, 
35733
  0x10, 0xDA, 0x83, 0x6A, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x83, 0x6B, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 
35734
  0x80, 0xE3, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x81, 0xCF, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x83, 0x6C, 
35735
  0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x83, 0x6D, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x83, 0x6E, 0xBF, 0xFF, 
35736
  0x00, 0x1D, 0xDA, 0x83, 0x6F, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x83, 0x70, 0xBF, 0xFF, 0x00, 0x21, 
35737
  0xDA, 0x83, 0x71, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x83, 0x72, 0x00, 0x14, 0x00, 0xDA, 0x83, 0x73, 
35738
  0x2B, 0x02, 0x00, 0x15, 0x33, 0x01, 0x02, 0x00, 0x29, 0x02, 0x01, 0x00, 0x2F, 0x02, 0x00, 0x00, 
35739
  0x2B, 0x03, 0x00, 0x17, 0x33, 0x02, 0x03, 0x00, 0x29, 0x03, 0x02, 0x00, 0x2F, 0x03, 0x00, 0x00, 
35740
  0x2B, 0x04, 0x00, 0x17, 0x33, 0x03, 0x04, 0x00, 0x29, 0x05, 0x60, 0x00, 0x23, 0x04, 0x05, 0x01, 
35741
  0x1C, 0x04, 0x04, 0x00, 0x23, 0x04, 0x01, 0x02, 0x1C, 0x04, 0x02, 0x00, 0x23, 0x04, 0x02, 0x03, 
35742
  0x1C, 0x04, 0x03, 0x00, 0x29, 0x01, 0x03, 0x00, 0x03, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 
35743
  0xBF, 0xFF, 0x8C, 0x3E, 0x22, 0x00, 0x22, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 
35744
  0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 
35745
  0x15, 0x00, 0x15, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
35746
  0x04, 0x00, 0x00, 0x00, 0x00, 0x05, 0x01, 0x18, 0xCE, 0x03, 0x6E, 0x6C, 0x3F, 0xDA, 0x18, 0xBF, 
35747
  0xFF, 0x00, 0x00, 0xDA, 0x83, 0x61, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x62, 0xBF, 0xFF, 0x00, 
35748
  0x02, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 
35749
  0x83, 0x44, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x65, 
35750
  0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x83, 0x66, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x83, 0x67, 0xBF, 0xFF, 
35751
  0x00, 0x0C, 0xDA, 0x83, 0x68, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x83, 0x69, 0xBF, 0xFF, 0x00, 0x10, 
35752
  0xDA, 0x83, 0x6A, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x83, 0x6B, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x80, 
35753
  0xE3, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x81, 0xCF, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x83, 0x6C, 0xBF, 
35754
  0xFF, 0x00, 0x19, 0xDA, 0x83, 0x6D, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x83, 0x6E, 0xBF, 0xFF, 0x00, 
35755
  0x1D, 0xDA, 0x83, 0x6F, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x83, 0x70, 0xBF, 0xFF, 0x00, 0x21, 0xDA, 
35756
  0x83, 0x71, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x83, 0x72, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x83, 0x73, 
35757
  0x00, 0x05, 0x00, 0xDA, 0x83, 0x74, 0x2B, 0x02, 0x00, 0x15, 0x33, 0x01, 0x02, 0x00, 0x29, 0x03, 
35758
  0x0A, 0x00, 0x23, 0x02, 0x03, 0x01, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0x3F, 0x1E, 0x00, 
35759
  0x1E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x02, 0x02, 0x02, 
35760
  0x02, 0x0A, 0x01, 0x1D, 0xCE, 0x08, 0x67, 0x65, 0x74, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xDA, 0x18, 
35761
  0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x03, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 
35762
  0x04, 0x00, 0x02, 0xCE, 0x03, 0x6D, 0x69, 0x6E, 0xDA, 0x18, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 
35763
  0x15, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x10, 0xCE, 0x01, 0x3C, 0x3D, 0x01, 
35764
  0x00, 0x00, 0x22, 0x02, 0x01, 0x02, 0x1B, 0x02, 0x0A, 0x00, 0x3B, 0x03, 0x00, 0x00, 0x29, 0x05, 
35765
  0x01, 0x00, 0x38, 0x04, 0x00, 0x05, 0x21, 0x02, 0x03, 0x04, 0x1C, 0x02, 0x07, 0x00, 0x05, 0x05, 
35766
  0x05, 0x01, 0x19, 0x03, 0x04, 0x00, 0x23, 0x02, 0x05, 0x01, 0x1C, 0x02, 0xFA, 0xFF, 0x27, 0x03, 
35767
  0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x28, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0xD7, 0x00, 
35768
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x02, 0x02, 0x02, 0x00, 0x10, 0x00, 0x07, 0xCE, 0x07, 0x65, 
35769
  0x78, 0x74, 0x72, 0x65, 0x6D, 0x65, 0xDA, 0x18, 0x00, 0x10, 0x00, 0xCF, 0x05, 0x6F, 0x72, 0x64, 
35770
  0x65, 0x72, 0x00, 0x10, 0x01, 0xDA, 0x80, 0xAB, 0x00, 0x10, 0x02, 0xCF, 0x07, 0x65, 0x78, 0x74, 
35771
  0x72, 0x65, 0x6D, 0x65, 0x01, 0x10, 0x04, 0xDA, 0x23, 0x01, 0x0F, 0x01, 0xCF, 0x07, 0x5F, 0x30, 
35772
  0x30, 0x30, 0x30, 0x30, 0x66, 0x04, 0x0F, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 
35773
  0x65, 0x07, 0x0F, 0x06, 0xDA, 0x1E, 0x3B, 0x03, 0x01, 0x00, 0x19, 0x04, 0x03, 0x00, 0x26, 0x05, 
35774
  0x00, 0x00, 0x47, 0x03, 0x01, 0x05, 0x19, 0x05, 0x03, 0x00, 0x1D, 0x05, 0x0A, 0x00, 0x38, 0x03, 
35775
  0x01, 0x05, 0x19, 0x06, 0x03, 0x00, 0x30, 0x06, 0x04, 0x00, 0x33, 0x03, 0x00, 0x00, 0x1C, 0x03, 
35776
  0x03, 0x00, 0x19, 0x04, 0x06, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x05, 0x01, 0x05, 0x1A, 0xF7, 
35777
  0xFF, 0xFF, 0x03, 0x04, 0x00, 0x00, 0x82, 0xD8, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 
35778
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x14, 0x00, 0x14, 0x00, 0x10, 0x00, 0x22, 0x00, 
35779
  0x10, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFA, 0x01, 0x00, 0x04, 0x00, 0xDA, 0x80, 0xAB, 0x00, 0x04, 
35780
  0x01, 0xCF, 0x03, 0x6D, 0x69, 0x6E, 0x2A, 0x02, 0x00, 0x00, 0x30, 0x02, 0x00, 0x00, 0x2A, 0x02, 
35781
  0x01, 0x00, 0x34, 0x02, 0x00, 0x00, 0x82, 0xE2, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xDA, 
35782
  0x81, 0xFC, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x83, 0x61, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x62, 
35783
  0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 
35784
  0x00, 0x04, 0xDA, 0x83, 0x44, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x01, 
35785
  0xDA, 0x83, 0x65, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x83, 0x66, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x83, 
35786
  0x67, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x83, 0x68, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x83, 0x69, 0xBF, 
35787
  0xFF, 0x00, 0x10, 0xDA, 0x83, 0x6A, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x83, 0x6B, 0xBF, 0xFF, 0x00, 
35788
  0x13, 0xDA, 0x80, 0xE3, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x81, 0xCF, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 
35789
  0x83, 0x6C, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x83, 0x6D, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x83, 0x6E, 
35790
  0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x83, 0x6F, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x83, 0x70, 0xBF, 0xFF, 
35791
  0x00, 0x21, 0xDA, 0x83, 0x71, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x83, 0x72, 0xBF, 0xFF, 0x00, 0x25, 
35792
  0xDA, 0x83, 0x73, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x83, 0x74, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x83, 
35793
  0x75, 0x00, 0x0A, 0x00, 0xCF, 0x04, 0x66, 0x72, 0x6F, 0x6D, 0x00, 0x0A, 0x01, 0xCF, 0x02, 0x74, 
35794
  0x6F, 0x00, 0x0A, 0x02, 0xDA, 0x83, 0x76, 0x05, 0x0A, 0x03, 0xDA, 0x83, 0xAF, 0x2B, 0x04, 0x00, 
35795
  0x00, 0x3D, 0x03, 0x04, 0x00, 0x30, 0x01, 0x03, 0x00, 0x2A, 0x05, 0x00, 0x00, 0x33, 0x04, 0x05, 
35796
  0x00, 0x19, 0x03, 0x04, 0x00, 0x2B, 0x05, 0x00, 0x00, 0x31, 0x05, 0x00, 0x03, 0x2A, 0x05, 0x01, 
35797
  0x00, 0x34, 0x05, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0x47, 0x15, 0x00, 0x15, 0x00, 0x0D, 0x00, 0x0D, 
35798
  0x00, 0x0D, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 0x00, 
35799
  0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x1C, 0xCE, 0x04, 0x70, 0x75, 0x73, 0x68, 0xDA, 
35800
  0x18, 0xDA, 0x81, 0x8C, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x83, 0x61, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
35801
  0x83, 0x62, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x83, 0x64, 
35802
  0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x83, 0x44, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 
35803
  0x00, 0x01, 0xDA, 0x83, 0x65, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x83, 0x66, 0xBF, 0xFF, 0x00, 0x0A, 
35804
  0xDA, 0x83, 0x67, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x83, 0x68, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x83, 
35805
  0x69, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x83, 0x6A, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x83, 0x6B, 0xBF, 
35806
  0xFF, 0x00, 0x13, 0xDA, 0x80, 0xE3, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x81, 0xCF, 0xBF, 0xFF, 0x00, 
35807
  0x17, 0xDA, 0x83, 0x6C, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x83, 0x6D, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 
35808
  0x83, 0x6E, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x83, 0x6F, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x83, 0x70, 
35809
  0xBF, 0xFF, 0x00, 0x21, 0xDA, 0x83, 0x71, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x83, 0x72, 0xBF, 0xFF, 
35810
  0x00, 0x25, 0xDA, 0x83, 0x73, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x83, 0x74, 0xBF, 0xFF, 0x00, 0x28, 
35811
  0xDA, 0x83, 0x75, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x83, 0x76, 0x00, 0x04, 0x00, 0xDA, 0x1E, 0x00, 
35812
  0x04, 0x01, 0xDA, 0x83, 0x77, 0x2B, 0x02, 0x00, 0x13, 0x30, 0x02, 0x00, 0x00, 0x2A, 0x02, 0x00, 
35813
  0x00, 0x34, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0x49, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 
35814
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0D, 0x03, 0x03, 0x03, 0x00, 0x32, 0x01, 0x27, 0xCE, 0x0A, 0x70, 
35815
  0x61, 0x72, 0x73, 0x65, 0x2D, 0x6C, 0x69, 0x73, 0x74, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 
35816
  0x83, 0x61, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x62, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x83, 0x63, 
35817
  0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x83, 0x44, 0xBF, 0xFF, 
35818
  0x00, 0x06, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x65, 0xBF, 0xFF, 0x00, 0x07, 
35819
  0xDA, 0x83, 0x66, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x83, 0x67, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x83, 
35820
  0x68, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x83, 0x69, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x83, 0x6A, 0xBF, 
35821
  0xFF, 0x00, 0x11, 0xDA, 0x83, 0x6B, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x80, 0xE3, 0xBF, 0xFF, 0x00, 
35822
  0x15, 0xDA, 0x81, 0xCF, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x83, 0x6C, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 
35823
  0x83, 0x6D, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x83, 0x6E, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x83, 0x6F, 
35824
  0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x83, 0x70, 0xBF, 0xFF, 0x00, 0x21, 0xDA, 0x83, 0x71, 0xBF, 0xFF, 
35825
  0x00, 0x23, 0xDA, 0x83, 0x72, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x83, 0x73, 0xBF, 0xFF, 0x00, 0x27, 
35826
  0xDA, 0x83, 0x74, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x83, 0x75, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x83, 
35827
  0x76, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x83, 0x77, 0x00, 0x32, 0x00, 0xCF, 0x0C, 0x62, 0x75, 0x6C, 
35828
  0x6C, 0x65, 0x74, 0x2D, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x00, 0x32, 0x01, 0xCF, 0x07, 0x69, 0x6E, 
35829
  0x69, 0x74, 0x69, 0x61, 0x6C, 0x00, 0x32, 0x02, 0xDA, 0x83, 0x63, 0x00, 0x32, 0x03, 0xDA, 0x83, 
35830
  0x78, 0x02, 0x32, 0x05, 0xCF, 0x0A, 0x74, 0x65, 0x6D, 0x70, 0x2D, 0x73, 0x74, 0x61, 0x63, 0x6B, 
35831
  0x03, 0x32, 0x06, 0xCF, 0x09, 0x6F, 0x6C, 0x64, 0x2D, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x05, 0x32, 
35832
  0x07, 0xCF, 0x0E, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x6E, 
35833
  0x74, 0x08, 0x0E, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x6E, 0x10, 0x1C, 0x0A, 
35834
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x6F, 0x11, 0x19, 0x0A, 0xDA, 0x1E, 0x1C, 0x2D, 
35835
  0x0A, 0xCF, 0x0B, 0x69, 0x74, 0x65, 0x6D, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x6E, 0x74, 0x23, 0x2D, 
35836
  0x0B, 0xCF, 0x0A, 0x69, 0x74, 0x65, 0x6D, 0x2D, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x2F, 0x01, 0x00, 
35837
  0x00, 0x3E, 0x04, 0x00, 0x00, 0x19, 0x05, 0x04, 0x00, 0x2B, 0x06, 0x00, 0x13, 0x2D, 0x05, 0x00, 
35838
  0x13, 0x19, 0x07, 0x02, 0x00, 0x2B, 0x0A, 0x00, 0x15, 0x33, 0x09, 0x0A, 0x00, 0x19, 0x0A, 0x09, 
35839
  0x00, 0x1C, 0x09, 0x04, 0x00, 0x45, 0x0B, 0x07, 0x02, 0x19, 0x08, 0x0B, 0x00, 0x1A, 0x02, 0x00, 
35840
  0x00, 0x19, 0x08, 0x0A, 0x00, 0x1C, 0x08, 0x1F, 0x00, 0x33, 0x09, 0x00, 0x00, 0x19, 0x0A, 0x09, 
35841
  0x00, 0x1C, 0x0A, 0x0A, 0x00, 0x2F, 0x0A, 0x00, 0x00, 0x2B, 0x0C, 0x00, 0x1B, 0x33, 0x0B, 0x0C, 
35842
  0x00, 0x2B, 0x0C, 0x00, 0x1D, 0x33, 0x0B, 0x0C, 0x00, 0x06, 0x0C, 0x02, 0x0B, 0x06, 0x0C, 0x0C, 
35843
  0x0A, 0x19, 0x09, 0x0C, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x26, 0x09, 0x00, 0x00, 0x19, 0x0A, 0x09, 
35844
  0x00, 0x1C, 0x0A, 0x02, 0x00, 0x1A, 0x04, 0x00, 0x00, 0x2B, 0x09, 0x00, 0x1D, 0x33, 0x07, 0x09, 
35845
  0x00, 0x1A, 0x0C, 0x00, 0x00, 0x3E, 0x09, 0x00, 0x00, 0x19, 0x0B, 0x09, 0x00, 0x2D, 0x0B, 0x00, 
35846
  0x13, 0x2F, 0x0A, 0x00, 0x00, 0x2B, 0x09, 0x00, 0x28, 0x33, 0x07, 0x09, 0x00, 0x2D, 0x05, 0x00, 
35847
  0x13, 0x2F, 0x0B, 0x00, 0x00, 0x2B, 0x0C, 0x00, 0x2C, 0x33, 0x09, 0x0C, 0x00, 0x1A, 0xDA, 0xFF, 
35848
  0xFF, 0x2D, 0x06, 0x00, 0x13, 0x2F, 0x05, 0x00, 0x00, 0x2B, 0x09, 0x00, 0x2C, 0x33, 0x08, 0x09, 
35849
  0x00, 0x03, 0x07, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0x4C, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 
35850
  0x01, 0x05, 0x01, 0x05, 0x01, 0x11, 0x00, 0x11, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x15, 0x00, 0x0C, 
35851
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x02, 0x16, 0x00, 0x09, 0x00, 0x09, 0x01, 0x0B, 0x00, 0x0B, 
35852
  0x00, 0x0B, 0x01, 0x15, 0x00, 0x15, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFE, 0x09, 0x00, 0x09, 0x00, 
35853
  0x09, 0xBF, 0xFF, 0x07, 0x04, 0x07, 0x00, 0x07, 0x01, 0x1D, 0x00, 0x1D, 0x01, 0x09, 0x01, 0x07, 
35854
  0x00, 0x07, 0x01, 0x07, 0x01, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x01, 0x07, 0x01, 0x07, 0x00, 0x07, 
35855
  0x00, 0x07, 0xBF, 0xF4, 0x05, 0x0D, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xED, 0x03, 
35856
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x03, 0x03, 0x03, 0x06, 0x1A, 0x01, 0x21, 0xCE, 0x0D, 0x61, 
35857
  0x64, 0x64, 0x2D, 0x63, 0x6F, 0x64, 0x65, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0xDA, 0x18, 0xDA, 0x81, 
35858
  0x82, 0xDA, 0x81, 0x83, 0xDA, 0x80, 0xFD, 0xDA, 0x80, 0xF5, 0xD8, 0x12, 0x73, 0x74, 0x72, 0x69, 
35859
  0x6E, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 0xD0, 0x02, 
35860
  0x63, 0x62, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x83, 0x61, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x62, 
35861
  0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 
35862
  0x00, 0x04, 0xDA, 0x83, 0x44, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x01, 
35863
  0xDA, 0x83, 0x65, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x83, 0x66, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x83, 
35864
  0x67, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x83, 0x68, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x83, 0x69, 0xBF, 
35865
  0xFF, 0x00, 0x10, 0xDA, 0x83, 0x6A, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x83, 0x6B, 0xBF, 0xFF, 0x00, 
35866
  0x13, 0xDA, 0x80, 0xE3, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x81, 0xCF, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 
35867
  0x83, 0x6C, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x83, 0x6D, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x83, 0x6E, 
35868
  0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x83, 0x6F, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x83, 0x70, 0xBF, 0xFF, 
35869
  0x00, 0x21, 0xDA, 0x83, 0x71, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x83, 0x72, 0xBF, 0xFF, 0x00, 0x25, 
35870
  0xDA, 0x83, 0x73, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x83, 0x74, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x83, 
35871
  0x75, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x83, 0x76, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x83, 0x77, 0xBF, 
35872
  0xFF, 0x00, 0x2E, 0xDA, 0x83, 0x78, 0x00, 0x1A, 0x00, 0xDA, 0x83, 0x63, 0x00, 0x1A, 0x01, 0xCF, 
35873
  0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x00, 0x1A, 0x02, 0xCF, 0x03, 0x65, 0x6E, 0x64, 0x00, 0x1A, 
35874
  0x03, 0xDA, 0x83, 0x79, 0x08, 0x1A, 0x04, 0xCF, 0x0D, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 
35875
  0x2D, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0x2A, 0x04, 0x00, 0x00, 0x30, 0x04, 0x00, 0x00, 0x2A, 0x05, 
35876
  0x01, 0x00, 0x33, 0x04, 0x05, 0x00, 0x2A, 0x05, 0x02, 0x00, 0x30, 0x05, 0x04, 0x00, 0x2A, 0x06, 
35877
  0x03, 0x00, 0x33, 0x05, 0x06, 0x00, 0x19, 0x04, 0x05, 0x00, 0x30, 0x01, 0x02, 0x00, 0x2B, 0x07, 
35878
  0x00, 0x2A, 0x33, 0x06, 0x07, 0x00, 0x2A, 0x07, 0x02, 0x00, 0x31, 0x04, 0x07, 0x06, 0x2A, 0x08, 
35879
  0x04, 0x00, 0x33, 0x07, 0x08, 0x00, 0x2A, 0x06, 0x05, 0x00, 0x30, 0x06, 0x07, 0x00, 0x3E, 0x06, 
35880
  0x00, 0x00, 0x2F, 0x06, 0x00, 0x00, 0x2B, 0x08, 0x00, 0x2C, 0x33, 0x07, 0x08, 0x00, 0x2B, 0x08, 
35881
  0x00, 0x1F, 0x33, 0x06, 0x08, 0x00, 0x2B, 0x08, 0x00, 0x1D, 0x34, 0x08, 0x00, 0x00, 0xBF, 0xFF, 
35882
  0x8C, 0x62, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 
35883
  0x18, 0x00, 0x05, 0x01, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 
35884
  0x11, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 
35885
  0x05, 0x01, 0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x01, 0x01, 0x01, 0x00, 0x1C, 
35886
  0x01, 0x21, 0xCE, 0x09, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x66, 0x63, 0x62, 0xDA, 0x18, 0xBF, 
35887
  0xFF, 0x00, 0x00, 0xDA, 0x83, 0x61, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x62, 0xBF, 0xFF, 0x00, 
35888
  0x02, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 
35889
  0x83, 0x44, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x65, 
35890
  0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x83, 0x66, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x83, 0x67, 0xBF, 0xFF, 
35891
  0x00, 0x0C, 0xDA, 0x83, 0x68, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x83, 0x69, 0xBF, 0xFF, 0x00, 0x10, 
35892
  0xDA, 0x83, 0x6A, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x83, 0x6B, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x80, 
35893
  0xE3, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x81, 0xCF, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x83, 0x6C, 0xBF, 
35894
  0xFF, 0x00, 0x19, 0xDA, 0x83, 0x6D, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x83, 0x6E, 0xBF, 0xFF, 0x00, 
35895
  0x1D, 0xDA, 0x83, 0x6F, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x83, 0x70, 0xBF, 0xFF, 0x00, 0x21, 0xDA, 
35896
  0x83, 0x71, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x83, 0x72, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x83, 0x73, 
35897
  0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x83, 0x74, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x83, 0x75, 0xBF, 0xFF, 
35898
  0x00, 0x2A, 0xDA, 0x83, 0x76, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x83, 0x77, 0xBF, 0xFF, 0x00, 0x2E, 
35899
  0xDA, 0x83, 0x78, 0xBF, 0xFF, 0x00, 0x30, 0xDA, 0x83, 0x79, 0x00, 0x1C, 0x00, 0xDA, 0x83, 0x63, 
35900
  0x00, 0x1C, 0x01, 0xDA, 0x83, 0x7A, 0x09, 0x1C, 0x05, 0xDA, 0x83, 0xBE, 0x0A, 0x1C, 0x06, 0xDA, 
35901
  0x83, 0xBF, 0x29, 0x02, 0x03, 0x00, 0x2F, 0x02, 0x00, 0x00, 0x2B, 0x03, 0x00, 0x1B, 0x33, 0x02, 
35902
  0x03, 0x00, 0x2B, 0x04, 0x00, 0x1F, 0x33, 0x03, 0x04, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2B, 0x05, 
35903
  0x00, 0x1B, 0x33, 0x04, 0x05, 0x00, 0x2B, 0x05, 0x00, 0x11, 0x2B, 0x06, 0x00, 0x11, 0x2B, 0x08, 
35904
  0x00, 0x15, 0x33, 0x07, 0x08, 0x00, 0x1C, 0x07, 0x0C, 0x00, 0x2B, 0x09, 0x00, 0x25, 0x33, 0x08, 
35905
  0x09, 0x00, 0x1C, 0x08, 0x03, 0x00, 0x1A, 0x08, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x2B, 0x09, 
35906
  0x00, 0x1F, 0x33, 0x08, 0x09, 0x00, 0x2B, 0x06, 0x00, 0x11, 0x2B, 0x09, 0x00, 0x1D, 0x33, 0x08, 
35907
  0x09, 0x00, 0x1A, 0xF3, 0xFF, 0xFF, 0x31, 0x00, 0x05, 0x06, 0x2B, 0x07, 0x00, 0x30, 0x34, 0x07, 
35908
  0x00, 0x00, 0xBF, 0xFF, 0x8C, 0x68, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 
35909
  0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x01, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 
35910
  0x05, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x00, 0x12, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x01, 
35911
  0x07, 0x01, 0x07, 0x00, 0x07, 0xBF, 0xFC, 0x05, 0x05, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCD, 0x00, 
35912
  0xDC, 0x00, 0x00, 0x08, 0x01, 0x01, 0x01, 0x00, 0x13, 0x01, 0x23, 0xCE, 0x09, 0x70, 0x61, 0x72, 
35913
  0x73, 0x65, 0x2D, 0x69, 0x63, 0x62, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x83, 0x61, 0xBF, 
35914
  0xFF, 0x00, 0x01, 0xDA, 0x83, 0x62, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 
35915
  0x03, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x83, 0x44, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 
35916
  0x83, 0x63, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x65, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x83, 0x66, 
35917
  0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x83, 0x67, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x83, 0x68, 0xBF, 0xFF, 
35918
  0x00, 0x0E, 0xDA, 0x83, 0x69, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x83, 0x6A, 0xBF, 0xFF, 0x00, 0x11, 
35919
  0xDA, 0x83, 0x6B, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x80, 0xE3, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x81, 
35920
  0xCF, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x83, 0x6C, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x83, 0x6D, 0xBF, 
35921
  0xFF, 0x00, 0x1B, 0xDA, 0x83, 0x6E, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x83, 0x6F, 0xBF, 0xFF, 0x00, 
35922
  0x1F, 0xDA, 0x83, 0x70, 0xBF, 0xFF, 0x00, 0x21, 0xDA, 0x83, 0x71, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 
35923
  0x83, 0x72, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x83, 0x73, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x83, 0x74, 
35924
  0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x83, 0x75, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x83, 0x76, 0xBF, 0xFF, 
35925
  0x00, 0x2C, 0xDA, 0x83, 0x77, 0xBF, 0xFF, 0x00, 0x2E, 0xDA, 0x83, 0x78, 0xBF, 0xFF, 0x00, 0x30, 
35926
  0xDA, 0x83, 0x79, 0xBF, 0xFF, 0x00, 0x32, 0xDA, 0x83, 0x7A, 0x00, 0x13, 0x00, 0xDA, 0x83, 0x63, 
35927
  0x00, 0x13, 0x01, 0xDA, 0x83, 0x7B, 0x00, 0x13, 0x02, 0xDA, 0x83, 0xB6, 0x01, 0x13, 0x03, 0xDA, 
35928
  0x83, 0xBE, 0x02, 0x13, 0x04, 0xDA, 0x83, 0xBF, 0x19, 0x02, 0x00, 0x00, 0x2B, 0x03, 0x00, 0x11, 
35929
  0x2B, 0x04, 0x00, 0x11, 0x2B, 0x06, 0x00, 0x15, 0x33, 0x05, 0x06, 0x00, 0x1C, 0x05, 0x0B, 0x00, 
35930
  0x2B, 0x07, 0x00, 0x1F, 0x33, 0x06, 0x07, 0x00, 0x2B, 0x04, 0x00, 0x11, 0x2B, 0x06, 0x00, 0x1D, 
35931
  0x33, 0x02, 0x06, 0x00, 0x21, 0x06, 0x02, 0x00, 0x1C, 0x06, 0x03, 0x00, 0x1A, 0x03, 0x00, 0x00, 
35932
  0x1A, 0x01, 0x00, 0x00, 0x1A, 0xF4, 0xFF, 0xFF, 0x31, 0x00, 0x03, 0x04, 0x2B, 0x05, 0x00, 0x30, 
35933
  0x34, 0x05, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0x75, 0x05, 0x01, 0x05, 0x01, 0x05, 0x01, 0x0C, 0x00, 
35934
  0x0C, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x01, 0x07, 0x01, 0x1B, 0x00, 0x1B, 0x01, 0x0B, 0x00, 
35935
  0x07, 0x00, 0x25, 0x00, 0x07, 0xBF, 0xFC, 0x05, 0x05, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCD, 0x02, 
35936
  0xFE, 0x00, 0x00, 0x18, 0x01, 0x01, 0x01, 0x08, 0x58, 0x01, 0x02, 0x2A, 0xCE, 0x0D, 0x74, 0x6F, 
35937
  0x6B, 0x65, 0x6E, 0x69, 0x7A, 0x65, 0x2D, 0x6C, 0x69, 0x6E, 0x65, 0xDA, 0x18, 0xDA, 0x80, 0xC5, 
35938
  0xDA, 0x83, 0x4B, 0xDA, 0x80, 0x8D, 0xD8, 0x0B, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 
35939
  0x75, 0x73, 0x68, 0xDA, 0x83, 0x53, 0xDA, 0x83, 0x4F, 0xDA, 0x83, 0x57, 0xDA, 0x82, 0xE9, 0xBF, 
35940
  0xFF, 0x00, 0x00, 0xDA, 0x83, 0x61, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x62, 0xBF, 0xFF, 0x00, 
35941
  0x02, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 
35942
  0x83, 0x44, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x65, 
35943
  0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x83, 0x66, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x83, 0x67, 0xBF, 0xFF, 
35944
  0x00, 0x0C, 0xDA, 0x83, 0x68, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x83, 0x69, 0xBF, 0xFF, 0x00, 0x10, 
35945
  0xDA, 0x83, 0x6A, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x83, 0x6B, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x80, 
35946
  0xE3, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x81, 0xCF, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x83, 0x6C, 0xBF, 
35947
  0xFF, 0x00, 0x19, 0xDA, 0x83, 0x6D, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x83, 0x6E, 0xBF, 0xFF, 0x00, 
35948
  0x1D, 0xDA, 0x83, 0x6F, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x83, 0x70, 0xBF, 0xFF, 0x00, 0x21, 0xDA, 
35949
  0x83, 0x71, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x83, 0x72, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x83, 0x73, 
35950
  0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x83, 0x74, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x83, 0x75, 0xBF, 0xFF, 
35951
  0x00, 0x2A, 0xDA, 0x83, 0x76, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x83, 0x77, 0xBF, 0xFF, 0x00, 0x2E, 
35952
  0xDA, 0x83, 0x78, 0xBF, 0xFF, 0x00, 0x30, 0xDA, 0x83, 0x79, 0xBF, 0xFF, 0x00, 0x32, 0xDA, 0x83, 
35953
  0x7A, 0xBF, 0xFF, 0x00, 0x34, 0xDA, 0x83, 0x7B, 0x00, 0x58, 0x00, 0xDA, 0x81, 0xF2, 0x00, 0x58, 
35954
  0x01, 0xDA, 0x83, 0x7C, 0x01, 0x58, 0x03, 0xCF, 0x06, 0x74, 0x6F, 0x6B, 0x65, 0x6E, 0x73, 0x05, 
35955
  0x58, 0x05, 0xCF, 0x05, 0x74, 0x6F, 0x6B, 0x65, 0x6E, 0x06, 0x58, 0x06, 0xCF, 0x0C, 0x74, 0x6F, 
35956
  0x6B, 0x65, 0x6E, 0x2D, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x08, 0x58, 0x08, 0xCF, 0x05, 0x64, 
35957
  0x65, 0x6C, 0x69, 0x6D, 0x0A, 0x58, 0x0A, 0xCF, 0x08, 0x65, 0x6E, 0x64, 0x74, 0x6F, 0x6B, 0x65, 
35958
  0x6E, 0x0B, 0x54, 0x0B, 0xDA, 0x80, 0x90, 0x0D, 0x54, 0x0D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
35959
  0x30, 0x35, 0x70, 0x11, 0x54, 0x0F, 0xCF, 0x01, 0x62, 0x13, 0x19, 0x10, 0xCF, 0x07, 0x5F, 0x30, 
35960
  0x30, 0x30, 0x30, 0x35, 0x71, 0x3E, 0x02, 0x00, 0x00, 0x19, 0x03, 0x02, 0x00, 0x2A, 0x04, 0x00, 
35961
  0x00, 0x2F, 0x04, 0x00, 0x00, 0x3F, 0x04, 0x00, 0x00, 0x19, 0x05, 0x04, 0x00, 0x29, 0x06, 0x00, 
35962
  0x00, 0x2E, 0x07, 0x00, 0x00, 0x19, 0x08, 0x07, 0x00, 0x2E, 0x09, 0x01, 0x00, 0x19, 0x0A, 0x09, 
35963
  0x00, 0x29, 0x0B, 0x00, 0x00, 0x3D, 0x0C, 0x00, 0x00, 0x19, 0x0D, 0x0C, 0x00, 0x21, 0x0C, 0x0B, 
35964
  0x0D, 0x1C, 0x0C, 0x45, 0x00, 0x39, 0x0E, 0x00, 0x0B, 0x19, 0x0F, 0x0E, 0x00, 0x24, 0x0E, 0x0F, 
35965
  0x0A, 0x19, 0x10, 0x0E, 0x00, 0x1C, 0x10, 0x03, 0x00, 0x19, 0x0E, 0x10, 0x00, 0x1A, 0x03, 0x00, 
35966
  0x00, 0x24, 0x11, 0x0F, 0x20, 0x19, 0x0E, 0x11, 0x00, 0x1C, 0x0E, 0x03, 0x00, 0x33, 0x10, 0x0A, 
35967
  0x00, 0x1A, 0x37, 0x00, 0x00, 0x24, 0x10, 0x0F, 0x60, 0x1C, 0x10, 0x05, 0x00, 0x2A, 0x11, 0x01, 
35968
  0x00, 0x2F, 0x11, 0x00, 0x00, 0x33, 0x11, 0x08, 0x00, 0x1A, 0x31, 0x00, 0x00, 0x2A, 0x11, 0x01, 
35969
  0x00, 0x2F, 0x11, 0x00, 0x00, 0x2B, 0x12, 0x00, 0x0E, 0x33, 0x11, 0x12, 0x00, 0x2F, 0x11, 0x00, 
35970
  0x00, 0x2A, 0x13, 0x02, 0x00, 0x33, 0x12, 0x13, 0x00, 0x1C, 0x12, 0x25, 0x00, 0x24, 0x11, 0x0F, 
35971
  0x5C, 0x1C, 0x11, 0x08, 0x00, 0x05, 0x06, 0x06, 0x01, 0x05, 0x0B, 0x0B, 0x01, 0x39, 0x13, 0x00, 
35972
  0x0B, 0x30, 0x05, 0x13, 0x00, 0x2A, 0x15, 0x03, 0x00, 0x33, 0x14, 0x15, 0x00, 0x1A, 0x1B, 0x00, 
35973
  0x00, 0x24, 0x13, 0x0F, 0x5F, 0x1C, 0x13, 0x05, 0x00, 0x2A, 0x14, 0x04, 0x00, 0x2F, 0x14, 0x00, 
35974
  0x00, 0x33, 0x14, 0x08, 0x00, 0x1A, 0x15, 0x00, 0x00, 0x24, 0x14, 0x0F, 0x2A, 0x1C, 0x14, 0x0F, 
35975
  0x00, 0x05, 0x15, 0x0B, 0x01, 0x39, 0x16, 0x00, 0x15, 0x29, 0x17, 0x2A, 0x00, 0x23, 0x15, 0x17, 
35976
  0x16, 0x1C, 0x15, 0x06, 0x00, 0x05, 0x0B, 0x0B, 0x01, 0x2A, 0x16, 0x05, 0x00, 0x2F, 0x16, 0x00, 
35977
  0x00, 0x33, 0x16, 0x08, 0x00, 0x1A, 0x04, 0x00, 0x00, 0x2A, 0x16, 0x06, 0x00, 0x2F, 0x16, 0x00, 
35978
  0x00, 0x33, 0x16, 0x08, 0x00, 0x1A, 0x05, 0x00, 0x00, 0x05, 0x06, 0x06, 0x01, 0x30, 0x05, 0x0F, 
35979
  0x00, 0x2A, 0x16, 0x03, 0x00, 0x33, 0x15, 0x16, 0x00, 0x1A, 0x05, 0x00, 0x00, 0x05, 0x06, 0x06, 
35980
  0x01, 0x30, 0x05, 0x0F, 0x00, 0x2A, 0x13, 0x03, 0x00, 0x33, 0x11, 0x13, 0x00, 0x05, 0x0B, 0x0B, 
35981
  0x01, 0x1A, 0xBB, 0xFF, 0xFF, 0x33, 0x0B, 0x0A, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x0C, 0x07, 
35982
  0x00, 0x34, 0x0C, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x01, 0x01, 0x01, 
35983
  0x01, 0x0F, 0x02, 0x27, 0xCE, 0x05, 0x64, 0x65, 0x6C, 0x69, 0x6D, 0xDA, 0x18, 0xDA, 0x83, 0xC4, 
35984
  0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x83, 0x61, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x62, 0xBF, 0xFF, 
35985
  0x00, 0x02, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x04, 
35986
  0xDA, 0x83, 0x44, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 
35987
  0x65, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x83, 0x66, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x83, 0x67, 0xBF, 
35988
  0xFF, 0x00, 0x0C, 0xDA, 0x83, 0x68, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x83, 0x69, 0xBF, 0xFF, 0x00, 
35989
  0x10, 0xDA, 0x83, 0x6A, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x83, 0x6B, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 
35990
  0x80, 0xE3, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x81, 0xCF, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x83, 0x6C, 
35991
  0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x83, 0x6D, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x83, 0x6E, 0xBF, 0xFF, 
35992
  0x00, 0x1D, 0xDA, 0x83, 0x6F, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x83, 0x70, 0xBF, 0xFF, 0x00, 0x21, 
35993
  0xDA, 0x83, 0x71, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x83, 0x72, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x83, 
35994
  0x73, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x83, 0x74, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x83, 0x75, 0xBF, 
35995
  0xFF, 0x00, 0x2A, 0xDA, 0x83, 0x76, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x83, 0x77, 0xBF, 0xFF, 0x00, 
35996
  0x2E, 0xDA, 0x83, 0x78, 0xBF, 0xFF, 0x00, 0x30, 0xDA, 0x83, 0x79, 0xBF, 0xFF, 0x00, 0x32, 0xDA, 
35997
  0x83, 0x7A, 0xBF, 0xFF, 0x00, 0x34, 0xDA, 0x83, 0x7B, 0xBF, 0xFF, 0x01, 0x00, 0xDA, 0x81, 0xF2, 
35998
  0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x83, 0x7C, 0xBF, 0xFF, 0x01, 0x03, 0xDA, 0x83, 0xC5, 0xBF, 0xFF, 
35999
  0x01, 0x05, 0xDA, 0x83, 0xC6, 0xBF, 0xFF, 0x01, 0x06, 0xDA, 0x83, 0xC7, 0x00, 0x0F, 0x00, 0xDA, 
36000
  0x83, 0x89, 0x00, 0x0F, 0x01, 0xDA, 0x83, 0xC8, 0x03, 0x0F, 0x03, 0xCF, 0x01, 0x64, 0x2F, 0x00, 
36001
  0x00, 0x00, 0x2B, 0x03, 0x00, 0x10, 0x33, 0x02, 0x03, 0x00, 0x19, 0x03, 0x02, 0x00, 0x2B, 0x04, 
36002
  0x00, 0x0A, 0x1C, 0x04, 0x02, 0x00, 0x1A, 0x05, 0x00, 0x00, 0x3D, 0x04, 0x03, 0x00, 0x2B, 0x06, 
36003
  0x01, 0x06, 0x06, 0x05, 0x06, 0x04, 0x2D, 0x05, 0x01, 0x06, 0x2B, 0x04, 0x01, 0x05, 0x30, 0x04, 
36004
  0x03, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x34, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0x84, 0x0E, 
36005
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x2A, 0x00, 0x19, 
36006
  0x00, 0x19, 0x00, 0x19, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xCD, 0x00, 0xDC, 0x00, 
36007
  0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x19, 0x01, 0x07, 0xCE, 0x08, 0x65, 0x6E, 0x64, 0x74, 0x6F, 
36008
  0x6B, 0x65, 0x6E, 0xDA, 0x18, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 
36009
  0x00, 0x03, 0x00, 0x02, 0xCE, 0x05, 0x66, 0x69, 0x72, 0x73, 0x74, 0xDA, 0x18, 0x00, 0x03, 0x00, 
36010
  0xDA, 0x82, 0x52, 0x00, 0x03, 0x01, 0xCF, 0x05, 0x66, 0x69, 0x72, 0x73, 0x74, 0x29, 0x03, 0x00, 
36011
  0x00, 0x39, 0x02, 0x00, 0x03, 0x03, 0x02, 0x00, 0x00, 0x82, 0xEF, 0x03, 0x00, 0x03, 0x00, 0x03, 
36012
  0xDA, 0x80, 0xF5, 0xDA, 0x81, 0x8C, 0xDA, 0x82, 0x1D, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0xF2, 
36013
  0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x7C, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x83, 0xC5, 0xBF, 0xFF, 
36014
  0x00, 0x05, 0xDA, 0x83, 0xC6, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x83, 0xC7, 0xBF, 0xFF, 0x00, 0x08, 
36015
  0xDA, 0x83, 0xC8, 0x00, 0x19, 0x00, 0xDA, 0x83, 0xC9, 0x2B, 0x01, 0x00, 0x05, 0x2F, 0x01, 0x00, 
36016
  0x00, 0x2A, 0x02, 0x00, 0x00, 0x33, 0x01, 0x02, 0x00, 0x1C, 0x01, 0x0D, 0x00, 0x2B, 0x02, 0x00, 
36017
  0x05, 0x2F, 0x02, 0x00, 0x00, 0x2A, 0x03, 0x01, 0x00, 0x33, 0x02, 0x03, 0x00, 0x2B, 0x03, 0x00, 
36018
  0x06, 0x30, 0x02, 0x03, 0x00, 0x43, 0x02, 0x00, 0x00, 0x2B, 0x03, 0x00, 0x03, 0x30, 0x03, 0x02, 
36019
  0x00, 0x2A, 0x04, 0x02, 0x00, 0x33, 0x03, 0x04, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x2B, 0x01, 0x00, 
36020
  0x05, 0x2F, 0x01, 0x00, 0x00, 0x2A, 0x02, 0x03, 0x00, 0x33, 0x01, 0x02, 0x00, 0x29, 0x02, 0x00, 
36021
  0x00, 0x2D, 0x02, 0x00, 0x06, 0x2B, 0x02, 0x00, 0x06, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 
36022
  0x88, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 
36023
  0x00, 0x2D, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 
36024
  0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 
36025
  0x00, 0x07, 0x8C, 0x80, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 
36026
  0x05, 0x01, 0x05, 0x00, 0x05, 0x04, 0x05, 0x00, 0x05, 0x04, 0x05, 0x00, 0x0F, 0x00, 0x05, 0x00, 
36027
  0x05, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x07, 0x02, 0x0D, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 
36028
  0x09, 0x00, 0x1E, 0x00, 0x09, 0xBF, 0xFF, 0x07, 0x01, 0x2F, 0xBF, 0xFF, 0x07, 0x02, 0x09, 0xBF, 
36029
  0xFE, 0x07, 0x02, 0x19, 0x00, 0x19, 0x00, 0x19, 0xBF, 0xFE, 0x07, 0x03, 0x0E, 0x00, 0x0E, 0x00, 
36030
  0x0E, 0x00, 0x0E, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFD, 0x07, 0x05, 0x0B, 0xBF, 0xFF, 
36031
  0x09, 0x02, 0x1D, 0x01, 0x3A, 0x00, 0x30, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0xBF, 0xFD, 0x09, 
36032
  0x04, 0x0B, 0xBF, 0xFC, 0x09, 0x04, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0xBF, 0xFC, 0x09, 0x05, 0x0B, 
36033
  0xBF, 0xFB, 0x09, 0x06, 0x26, 0x00, 0x1C, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0B, 0x01, 0x11, 0x01, 
36034
  0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 0xFE, 0x0B, 0x03, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xF7, 
36035
  0x09, 0x0A, 0x0F, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0xBF, 0xF2, 0x07, 0x0F, 0x0D, 0x00, 0x1F, 
36036
  0x00, 0x1F, 0x00, 0x1F, 0xBF, 0xEF, 0x05, 0x00, 0x05, 0x12, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 
36037
  0x05, 0x68, 0x00, 0x00, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x10, 0x01, 0x01, 0x01, 0x02, 0x42, 
36038
  0x01, 0x02, 0x28, 0xCE, 0x0C, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 
36039
  0x73, 0xDA, 0x18, 0xD0, 0x02, 0x75, 0x6C, 0xD0, 0x02, 0x6F, 0x6C, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 
36040
  0x83, 0x61, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x62, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x83, 0x63, 
36041
  0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x83, 0x44, 0xBF, 0xFF, 
36042
  0x00, 0x06, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x65, 0xBF, 0xFF, 0x00, 0x07, 
36043
  0xDA, 0x83, 0x66, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x83, 0x67, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x83, 
36044
  0x68, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x83, 0x69, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x83, 0x6A, 0xBF, 
36045
  0xFF, 0x00, 0x11, 0xDA, 0x83, 0x6B, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x80, 0xE3, 0xBF, 0xFF, 0x00, 
36046
  0x15, 0xDA, 0x81, 0xCF, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x83, 0x6C, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 
36047
  0x83, 0x6D, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x83, 0x6E, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x83, 0x6F, 
36048
  0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x83, 0x70, 0xBF, 0xFF, 0x00, 0x21, 0xDA, 0x83, 0x71, 0xBF, 0xFF, 
36049
  0x00, 0x23, 0xDA, 0x83, 0x72, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x83, 0x73, 0xBF, 0xFF, 0x00, 0x27, 
36050
  0xDA, 0x83, 0x74, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x83, 0x75, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x83, 
36051
  0x76, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x83, 0x77, 0xBF, 0xFF, 0x00, 0x2E, 0xDA, 0x83, 0x78, 0xBF, 
36052
  0xFF, 0x00, 0x30, 0xDA, 0x83, 0x79, 0xBF, 0xFF, 0x00, 0x32, 0xDA, 0x83, 0x7A, 0xBF, 0xFF, 0x00, 
36053
  0x34, 0xDA, 0x83, 0x7B, 0xBF, 0xFF, 0x00, 0x36, 0xDA, 0x83, 0x7C, 0x00, 0x42, 0x00, 0xDA, 0x83, 
36054
  0x63, 0x00, 0x42, 0x01, 0xDA, 0x83, 0x75, 0x00, 0x42, 0x02, 0xCF, 0x0A, 0x6E, 0x65, 0x77, 0x2D, 
36055
  0x69, 0x6E, 0x64, 0x65, 0x6E, 0x74, 0x01, 0x42, 0x03, 0xCF, 0x07, 0x70, 0x2D, 0x73, 0x74, 0x61, 
36056
  0x72, 0x74, 0x02, 0x42, 0x04, 0xCF, 0x05, 0x70, 0x2D, 0x65, 0x6E, 0x64, 0x04, 0x42, 0x06, 0xCF, 
36057
  0x06, 0x70, 0x2D, 0x6C, 0x69, 0x6E, 0x65, 0x06, 0x42, 0x08, 0xCF, 0x08, 0x66, 0x69, 0x6E, 0x69, 
36058
  0x73, 0x68, 0x2D, 0x70, 0x09, 0x0F, 0x0B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x73, 
36059
  0x19, 0x02, 0x00, 0x00, 0x26, 0x03, 0x00, 0x00, 0x26, 0x04, 0x00, 0x00, 0x2E, 0x05, 0x00, 0x00, 
36060
  0x19, 0x06, 0x05, 0x00, 0x2E, 0x07, 0x01, 0x00, 0x19, 0x08, 0x07, 0x00, 0x2B, 0x0B, 0x00, 0x15, 
36061
  0x33, 0x0A, 0x0B, 0x00, 0x19, 0x0B, 0x0A, 0x00, 0x1C, 0x0A, 0x04, 0x00, 0x45, 0x0C, 0x02, 0x00, 
36062
  0x19, 0x09, 0x0C, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x09, 0x0B, 0x00, 0x1C, 0x09, 0x31, 0x00, 
36063
  0x2B, 0x0B, 0x00, 0x27, 0x33, 0x0A, 0x0B, 0x00, 0x1C, 0x0A, 0x07, 0x00, 0x33, 0x0B, 0x08, 0x00, 
36064
  0x2B, 0x0C, 0x00, 0x19, 0x33, 0x0B, 0x0C, 0x00, 0x2B, 0x0B, 0x00, 0x1D, 0x33, 0x02, 0x0B, 0x00, 
36065
  0x1A, 0x27, 0x00, 0x00, 0x2B, 0x0C, 0x00, 0x21, 0x33, 0x0B, 0x0C, 0x00, 0x1C, 0x0B, 0x08, 0x00, 
36066
  0x33, 0x0C, 0x08, 0x00, 0x2B, 0x0C, 0x00, 0x21, 0x2A, 0x0D, 0x00, 0x00, 0x31, 0x0C, 0x0D, 0x02, 
36067
  0x2B, 0x0C, 0x00, 0x2E, 0x33, 0x02, 0x0C, 0x00, 0x1A, 0x1D, 0x00, 0x00, 0x2B, 0x0D, 0x00, 0x23, 
36068
  0x33, 0x0C, 0x0D, 0x00, 0x1C, 0x0C, 0x08, 0x00, 0x33, 0x0D, 0x08, 0x00, 0x2B, 0x0D, 0x00, 0x23, 
36069
  0x2A, 0x0E, 0x01, 0x00, 0x31, 0x0D, 0x0E, 0x02, 0x2B, 0x0D, 0x00, 0x2E, 0x33, 0x02, 0x0D, 0x00, 
36070
  0x1A, 0x13, 0x00, 0x00, 0x2B, 0x0E, 0x00, 0x25, 0x33, 0x0D, 0x0E, 0x00, 0x1C, 0x0D, 0x06, 0x00, 
36071
  0x33, 0x0E, 0x08, 0x00, 0x2F, 0x02, 0x00, 0x00, 0x2B, 0x0E, 0x00, 0x32, 0x33, 0x02, 0x0E, 0x00, 
36072
  0x1A, 0x0B, 0x00, 0x00, 0x29, 0x0F, 0x04, 0x00, 0x06, 0x0E, 0x0F, 0x00, 0x45, 0x0F, 0x02, 0x0E, 
36073
  0x1C, 0x0F, 0x06, 0x00, 0x33, 0x0E, 0x08, 0x00, 0x2F, 0x02, 0x00, 0x00, 0x2B, 0x0E, 0x00, 0x34, 
36074
  0x33, 0x02, 0x0E, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x33, 0x0E, 0x06, 0x00, 0x1A, 0xC8, 0xFF, 0xFF, 
36075
  0x33, 0x09, 0x08, 0x00, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 
36076
  0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x26, 0xCE, 0x06, 0x70, 0x2D, 0x6C, 0x69, 0x6E, 0x65, 0xDA, 
36077
  0x18, 0xBF, 0xFF, 0x01, 0x00, 0xDA, 0x83, 0x61, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x83, 0x62, 0xBF, 
36078
  0xFF, 0x01, 0x02, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x01, 0x03, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x01, 
36079
  0x04, 0xDA, 0x83, 0x44, 0xBF, 0xFF, 0x01, 0x06, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 
36080
  0x83, 0x65, 0xBF, 0xFF, 0x01, 0x07, 0xDA, 0x83, 0x66, 0xBF, 0xFF, 0x01, 0x0A, 0xDA, 0x83, 0x67, 
36081
  0xBF, 0xFF, 0x01, 0x0C, 0xDA, 0x83, 0x68, 0xBF, 0xFF, 0x01, 0x0E, 0xDA, 0x83, 0x69, 0xBF, 0xFF, 
36082
  0x01, 0x10, 0xDA, 0x83, 0x6A, 0xBF, 0xFF, 0x01, 0x11, 0xDA, 0x83, 0x6B, 0xBF, 0xFF, 0x01, 0x13, 
36083
  0xDA, 0x80, 0xE3, 0xBF, 0xFF, 0x01, 0x15, 0xDA, 0x81, 0xCF, 0xBF, 0xFF, 0x01, 0x17, 0xDA, 0x83, 
36084
  0x6C, 0xBF, 0xFF, 0x01, 0x19, 0xDA, 0x83, 0x6D, 0xBF, 0xFF, 0x01, 0x1B, 0xDA, 0x83, 0x6E, 0xBF, 
36085
  0xFF, 0x01, 0x1D, 0xDA, 0x83, 0x6F, 0xBF, 0xFF, 0x01, 0x1F, 0xDA, 0x83, 0x70, 0xBF, 0xFF, 0x01, 
36086
  0x21, 0xDA, 0x83, 0x71, 0xBF, 0xFF, 0x01, 0x23, 0xDA, 0x83, 0x72, 0xBF, 0xFF, 0x01, 0x25, 0xDA, 
36087
  0x83, 0x73, 0xBF, 0xFF, 0x01, 0x27, 0xDA, 0x83, 0x74, 0xBF, 0xFF, 0x01, 0x28, 0xDA, 0x83, 0x75, 
36088
  0xBF, 0xFF, 0x01, 0x2A, 0xDA, 0x83, 0x76, 0xBF, 0xFF, 0x01, 0x2C, 0xDA, 0x83, 0x77, 0xBF, 0xFF, 
36089
  0x01, 0x2E, 0xDA, 0x83, 0x78, 0xBF, 0xFF, 0x01, 0x30, 0xDA, 0x83, 0x79, 0xBF, 0xFF, 0x01, 0x32, 
36090
  0xDA, 0x83, 0x7A, 0xBF, 0xFF, 0x01, 0x34, 0xDA, 0x83, 0x7B, 0xBF, 0xFF, 0x01, 0x36, 0xDA, 0x83, 
36091
  0x7C, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x75, 0xBF, 
36092
  0xFF, 0x00, 0x02, 0xDA, 0x83, 0xD6, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x83, 0xD7, 0xBF, 0xFF, 0x00, 
36093
  0x04, 0xDA, 0x83, 0xD8, 0x00, 0x0E, 0x00, 0xDA, 0x83, 0xD9, 0x2B, 0x01, 0x00, 0x03, 0x1C, 0x01, 
36094
  0x02, 0x00, 0x1A, 0x03, 0x00, 0x00, 0x2B, 0x01, 0x01, 0x11, 0x2D, 0x01, 0x00, 0x03, 0x2B, 0x02, 
36095
  0x01, 0x1F, 0x33, 0x01, 0x02, 0x00, 0x2B, 0x02, 0x01, 0x11, 0x2D, 0x02, 0x00, 0x04, 0x2B, 0x03, 
36096
  0x01, 0x1D, 0x33, 0x02, 0x03, 0x00, 0x2D, 0x02, 0x00, 0x02, 0x2B, 0x03, 0x00, 0x02, 0x03, 0x03, 
36097
  0x00, 0x00, 0xBF, 0xFF, 0x00, 0x8C, 0xA7, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x0B, 0x00, 0x0B, 
36098
  0x01, 0x09, 0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x01, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x09, 
36099
  0x00, 0x09, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, 0x28, 0xCE, 
36100
  0x08, 0x66, 0x69, 0x6E, 0x69, 0x73, 0x68, 0x2D, 0x70, 0xDA, 0x18, 0xBF, 0xFF, 0x01, 0x00, 0xDA, 
36101
  0x83, 0x61, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x83, 0x62, 0xBF, 0xFF, 0x01, 0x02, 0xDA, 0x83, 0x63, 
36102
  0xBF, 0xFF, 0x01, 0x03, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x01, 0x04, 0xDA, 0x83, 0x44, 0xBF, 0xFF, 
36103
  0x01, 0x06, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x83, 0x65, 0xBF, 0xFF, 0x01, 0x07, 
36104
  0xDA, 0x83, 0x66, 0xBF, 0xFF, 0x01, 0x0A, 0xDA, 0x83, 0x67, 0xBF, 0xFF, 0x01, 0x0C, 0xDA, 0x83, 
36105
  0x68, 0xBF, 0xFF, 0x01, 0x0E, 0xDA, 0x83, 0x69, 0xBF, 0xFF, 0x01, 0x10, 0xDA, 0x83, 0x6A, 0xBF, 
36106
  0xFF, 0x01, 0x11, 0xDA, 0x83, 0x6B, 0xBF, 0xFF, 0x01, 0x13, 0xDA, 0x80, 0xE3, 0xBF, 0xFF, 0x01, 
36107
  0x15, 0xDA, 0x81, 0xCF, 0xBF, 0xFF, 0x01, 0x17, 0xDA, 0x83, 0x6C, 0xBF, 0xFF, 0x01, 0x19, 0xDA, 
36108
  0x83, 0x6D, 0xBF, 0xFF, 0x01, 0x1B, 0xDA, 0x83, 0x6E, 0xBF, 0xFF, 0x01, 0x1D, 0xDA, 0x83, 0x6F, 
36109
  0xBF, 0xFF, 0x01, 0x1F, 0xDA, 0x83, 0x70, 0xBF, 0xFF, 0x01, 0x21, 0xDA, 0x83, 0x71, 0xBF, 0xFF, 
36110
  0x01, 0x23, 0xDA, 0x83, 0x72, 0xBF, 0xFF, 0x01, 0x25, 0xDA, 0x83, 0x73, 0xBF, 0xFF, 0x01, 0x27, 
36111
  0xDA, 0x83, 0x74, 0xBF, 0xFF, 0x01, 0x28, 0xDA, 0x83, 0x75, 0xBF, 0xFF, 0x01, 0x2A, 0xDA, 0x83, 
36112
  0x76, 0xBF, 0xFF, 0x01, 0x2C, 0xDA, 0x83, 0x77, 0xBF, 0xFF, 0x01, 0x2E, 0xDA, 0x83, 0x78, 0xBF, 
36113
  0xFF, 0x01, 0x30, 0xDA, 0x83, 0x79, 0xBF, 0xFF, 0x01, 0x32, 0xDA, 0x83, 0x7A, 0xBF, 0xFF, 0x01, 
36114
  0x34, 0xDA, 0x83, 0x7B, 0xBF, 0xFF, 0x01, 0x36, 0xDA, 0x83, 0x7C, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 
36115
  0x83, 0x63, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x75, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x83, 0xD6, 
36116
  0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x83, 0xD7, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x83, 0xD8, 0xBF, 0xFF, 
36117
  0x00, 0x06, 0xDA, 0x83, 0xD9, 0x00, 0x1A, 0x00, 0xDA, 0x83, 0xDA, 0x00, 0x09, 0x02, 0xCF, 0x07, 
36118
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x72, 0x2B, 0x02, 0x00, 0x03, 0x2B, 0x03, 0x00, 0x03, 0x1C, 
36119
  0x03, 0x06, 0x00, 0x2B, 0x04, 0x00, 0x04, 0x2B, 0x05, 0x00, 0x03, 0x1F, 0x03, 0x04, 0x05, 0x19, 
36120
  0x01, 0x03, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x01, 0x02, 0x00, 0x1C, 0x01, 0x10, 0x00, 0x2B, 
36121
  0x02, 0x00, 0x03, 0x2B, 0x03, 0x00, 0x04, 0x30, 0x02, 0x03, 0x00, 0x2B, 0x03, 0x01, 0x2A, 0x33, 
36122
  0x02, 0x03, 0x00, 0x2F, 0x02, 0x00, 0x00, 0x2B, 0x04, 0x01, 0x36, 0x33, 0x03, 0x04, 0x00, 0x2F, 
36123
  0x03, 0x00, 0x00, 0x2B, 0x04, 0x01, 0x2C, 0x33, 0x02, 0x04, 0x00, 0x26, 0x02, 0x00, 0x00, 0x2D, 
36124
  0x02, 0x00, 0x03, 0x2B, 0x02, 0x00, 0x03, 0x03, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xBF, 
36125
  0xFF, 0x00, 0x8C, 0xAD, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 
36126
  0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x09, 0x01, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 
36127
  0x20, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x0B, 0x00, 
36128
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFE, 0x09, 0x8C, 0xA3, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 
36129
  0x07, 0x00, 0x07, 0x06, 0x07, 0x00, 0x07, 0x04, 0x13, 0x00, 0x13, 0x00, 0x0E, 0x00, 0x0E, 0x00, 
36130
  0x17, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x02, 0x0B, 0x00, 0x0B, 0xBF, 0xFF, 0x09, 
36131
  0x01, 0x15, 0x00, 0x20, 0x00, 0x20, 0x00, 0x36, 0x00, 0x36, 0xBF, 0xFF, 0x09, 0x02, 0x0B, 0x00, 
36132
  0x0B, 0xBF, 0xFE, 0x09, 0x02, 0x15, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 
36133
  0xBF, 0xFE, 0x09, 0x03, 0x0B, 0x00, 0x0B, 0xBF, 0xFD, 0x09, 0x03, 0x15, 0x00, 0x30, 0x00, 0x30, 
36134
  0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0xBF, 0xFD, 0x09, 0x04, 0x0B, 0x00, 0x0B, 0xBF, 0xFC, 0x09, 
36135
  0x04, 0x16, 0x00, 0x31, 0x00, 0x31, 0x00, 0x31, 0xBF, 0xFC, 0x09, 0x05, 0x1A, 0x00, 0x1A, 0x00, 
36136
  0x0B, 0xBF, 0xFB, 0x09, 0x05, 0x2C, 0x00, 0x47, 0x00, 0x47, 0x00, 0x47, 0xBF, 0xFB, 0x09, 0x06, 
36137
  0x0B, 0xBF, 0xF9, 0x07, 0x08, 0x07, 0xBF, 0xEA, 0x05, 0x1C, 0x00, 0x00, 0x00, 0xCD, 0x00, 0xDC, 
36138
  0x00, 0x00, 0x08, 0x01, 0x01, 0x01, 0x03, 0x12, 0x01, 0x28, 0xCE, 0x0B, 0x65, 0x6D, 0x69, 0x74, 
36139
  0x2D, 0x69, 0x6E, 0x64, 0x65, 0x6E, 0x74, 0xDA, 0x18, 0xDA, 0x81, 0x82, 0xDA, 0x81, 0x83, 0xDA, 
36140
  0x83, 0xC4, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x83, 0x61, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x62, 
36141
  0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 
36142
  0x00, 0x04, 0xDA, 0x83, 0x44, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x01, 
36143
  0xDA, 0x83, 0x65, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x83, 0x66, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x83, 
36144
  0x67, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x83, 0x68, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x83, 0x69, 0xBF, 
36145
  0xFF, 0x00, 0x10, 0xDA, 0x83, 0x6A, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x83, 0x6B, 0xBF, 0xFF, 0x00, 
36146
  0x13, 0xDA, 0x80, 0xE3, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x81, 0xCF, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 
36147
  0x83, 0x6C, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x83, 0x6D, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x83, 0x6E, 
36148
  0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x83, 0x6F, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x83, 0x70, 0xBF, 0xFF, 
36149
  0x00, 0x21, 0xDA, 0x83, 0x71, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x83, 0x72, 0xBF, 0xFF, 0x00, 0x25, 
36150
  0xDA, 0x83, 0x73, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x83, 0x74, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x83, 
36151
  0x75, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x83, 0x76, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x83, 0x77, 0xBF, 
36152
  0xFF, 0x00, 0x2E, 0xDA, 0x83, 0x78, 0xBF, 0xFF, 0x00, 0x30, 0xDA, 0x83, 0x79, 0xBF, 0xFF, 0x00, 
36153
  0x32, 0xDA, 0x83, 0x7A, 0xBF, 0xFF, 0x00, 0x34, 0xDA, 0x83, 0x7B, 0xBF, 0xFF, 0x00, 0x36, 0xDA, 
36154
  0x83, 0x7C, 0xBF, 0xFF, 0x00, 0x37, 0xDA, 0x83, 0x7D, 0xBF, 0xFF, 0x00, 0x3A, 0xDA, 0x83, 0x7E, 
36155
  0xBF, 0xFF, 0x00, 0x3B, 0xDA, 0x83, 0x7F, 0xBF, 0xFF, 0x00, 0x39, 0xDA, 0x82, 0x3B, 0xBF, 0xFF, 
36156
  0x00, 0x3A, 0xDA, 0x83, 0x80, 0x00, 0x12, 0x00, 0xDA, 0x83, 0x63, 0x00, 0x12, 0x01, 0xDA, 0x83, 
36157
  0x81, 0x02, 0x12, 0x03, 0xCF, 0x05, 0x64, 0x65, 0x6C, 0x74, 0x61, 0x2B, 0x03, 0x00, 0x3A, 0x07, 
36158
  0x02, 0x00, 0x03, 0x19, 0x03, 0x02, 0x00, 0x29, 0x05, 0x00, 0x00, 0x21, 0x04, 0x05, 0x03, 0x1C, 
36159
  0x04, 0x0C, 0x00, 0x2A, 0x05, 0x00, 0x00, 0x30, 0x05, 0x03, 0x00, 0x2A, 0x06, 0x01, 0x00, 0x33, 
36160
  0x05, 0x06, 0x00, 0x2B, 0x06, 0x00, 0x39, 0x30, 0x06, 0x05, 0x00, 0x2A, 0x07, 0x02, 0x00, 0x33, 
36161
  0x06, 0x07, 0x00, 0x2D, 0x00, 0x00, 0x3A, 0x2B, 0x05, 0x00, 0x3A, 0x03, 0x05, 0x00, 0x00, 0x04, 
36162
  0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0xCB, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x0B, 0x00, 0x0B, 
36163
  0x00, 0x05, 0x01, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
36164
  0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFE, 0x05, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
36165
  0x04, 0x01, 0x00, 0x01, 0x02, 0x09, 0x01, 0x28, 0xCE, 0x07, 0x65, 0x6D, 0x69, 0x74, 0x2D, 0x6E, 
36166
  0x6C, 0xDA, 0x18, 0xDA, 0x80, 0xFD, 0xDA, 0x83, 0xC4, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x83, 0x61, 
36167
  0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x62, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 
36168
  0x00, 0x03, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x83, 0x44, 0xBF, 0xFF, 0x00, 0x06, 
36169
  0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x65, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x83, 
36170
  0x66, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x83, 0x67, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x83, 0x68, 0xBF, 
36171
  0xFF, 0x00, 0x0E, 0xDA, 0x83, 0x69, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x83, 0x6A, 0xBF, 0xFF, 0x00, 
36172
  0x11, 0xDA, 0x83, 0x6B, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x80, 0xE3, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 
36173
  0x81, 0xCF, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x83, 0x6C, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x83, 0x6D, 
36174
  0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x83, 0x6E, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x83, 0x6F, 0xBF, 0xFF, 
36175
  0x00, 0x1F, 0xDA, 0x83, 0x70, 0xBF, 0xFF, 0x00, 0x21, 0xDA, 0x83, 0x71, 0xBF, 0xFF, 0x00, 0x23, 
36176
  0xDA, 0x83, 0x72, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x83, 0x73, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x83, 
36177
  0x74, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x83, 0x75, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x83, 0x76, 0xBF, 
36178
  0xFF, 0x00, 0x2C, 0xDA, 0x83, 0x77, 0xBF, 0xFF, 0x00, 0x2E, 0xDA, 0x83, 0x78, 0xBF, 0xFF, 0x00, 
36179
  0x30, 0xDA, 0x83, 0x79, 0xBF, 0xFF, 0x00, 0x32, 0xDA, 0x83, 0x7A, 0xBF, 0xFF, 0x00, 0x34, 0xDA, 
36180
  0x83, 0x7B, 0xBF, 0xFF, 0x00, 0x36, 0xDA, 0x83, 0x7C, 0xBF, 0xFF, 0x00, 0x37, 0xDA, 0x83, 0x7D, 
36181
  0xBF, 0xFF, 0x00, 0x3A, 0xDA, 0x83, 0x7E, 0xBF, 0xFF, 0x00, 0x3B, 0xDA, 0x83, 0x7F, 0xBF, 0xFF, 
36182
  0x00, 0x39, 0xDA, 0x82, 0x3B, 0xBF, 0xFF, 0x00, 0x3A, 0xDA, 0x83, 0x80, 0xBF, 0xFF, 0x00, 0x3C, 
36183
  0xDA, 0x83, 0x81, 0x00, 0x09, 0x00, 0xDA, 0x83, 0x63, 0x00, 0x09, 0x01, 0xDA, 0x83, 0x82, 0x2B, 
36184
  0x02, 0x00, 0x39, 0x2A, 0x03, 0x00, 0x00, 0x30, 0x02, 0x03, 0x00, 0x2A, 0x03, 0x01, 0x00, 0x33, 
36185
  0x02, 0x03, 0x00, 0x29, 0x03, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x3A, 0x2B, 0x03, 0x00, 0x3A, 0x03, 
36186
  0x03, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0xD1, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
36187
  0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 0x03, 0x02, 
36188
  0x03, 0x03, 0x3C, 0x01, 0x30, 0xCE, 0x09, 0x65, 0x6D, 0x69, 0x74, 0x2D, 0x77, 0x6F, 0x72, 0x64, 
36189
  0xDA, 0x18, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x00, 0x04, 0x00, 
36190
  0x02, 0xCE, 0x04, 0x6C, 0x61, 0x73, 0x74, 0xDA, 0x18, 0x00, 0x04, 0x00, 0xDA, 0x82, 0x52, 0x00, 
36191
  0x04, 0x01, 0xDA, 0x82, 0xF4, 0x3D, 0x02, 0x00, 0x00, 0x05, 0x03, 0x02, 0xFF, 0x39, 0x02, 0x00, 
36192
  0x03, 0x03, 0x02, 0x00, 0x00, 0x82, 0xF4, 0x0E, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x81, 
36193
  0x82, 0xDA, 0x83, 0xC4, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x83, 0x61, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
36194
  0x83, 0x62, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x83, 0x64, 
36195
  0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x83, 0x44, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 
36196
  0x00, 0x01, 0xDA, 0x83, 0x65, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x83, 0x66, 0xBF, 0xFF, 0x00, 0x0A, 
36197
  0xDA, 0x83, 0x67, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x83, 0x68, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x83, 
36198
  0x69, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x83, 0x6A, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x83, 0x6B, 0xBF, 
36199
  0xFF, 0x00, 0x13, 0xDA, 0x80, 0xE3, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x81, 0xCF, 0xBF, 0xFF, 0x00, 
36200
  0x17, 0xDA, 0x83, 0x6C, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x83, 0x6D, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 
36201
  0x83, 0x6E, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x83, 0x6F, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x83, 0x70, 
36202
  0xBF, 0xFF, 0x00, 0x21, 0xDA, 0x83, 0x71, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x83, 0x72, 0xBF, 0xFF, 
36203
  0x00, 0x25, 0xDA, 0x83, 0x73, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x83, 0x74, 0xBF, 0xFF, 0x00, 0x28, 
36204
  0xDA, 0x83, 0x75, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x83, 0x76, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x83, 
36205
  0x77, 0xBF, 0xFF, 0x00, 0x2E, 0xDA, 0x83, 0x78, 0xBF, 0xFF, 0x00, 0x30, 0xDA, 0x83, 0x79, 0xBF, 
36206
  0xFF, 0x00, 0x32, 0xDA, 0x83, 0x7A, 0xBF, 0xFF, 0x00, 0x34, 0xDA, 0x83, 0x7B, 0xBF, 0xFF, 0x00, 
36207
  0x36, 0xDA, 0x83, 0x7C, 0xBF, 0xFF, 0x00, 0x37, 0xDA, 0x83, 0x7D, 0xBF, 0xFF, 0x00, 0x3A, 0xDA, 
36208
  0x83, 0x7E, 0xBF, 0xFF, 0x00, 0x3B, 0xDA, 0x83, 0x7F, 0xBF, 0xFF, 0x00, 0x39, 0xDA, 0x82, 0x3B, 
36209
  0xBF, 0xFF, 0x00, 0x3A, 0xDA, 0x83, 0x80, 0xBF, 0xFF, 0x00, 0x3C, 0xDA, 0x83, 0x81, 0xBF, 0xFF, 
36210
  0x00, 0x3E, 0xDA, 0x83, 0x82, 0x00, 0x3C, 0x00, 0xCF, 0x04, 0x77, 0x6F, 0x72, 0x64, 0x00, 0x3C, 
36211
  0x01, 0xDA, 0x83, 0x63, 0x00, 0x3C, 0x02, 0xDA, 0x80, 0x84, 0x00, 0x3C, 0x03, 0xDA, 0x83, 0x83, 
36212
  0x04, 0x3C, 0x05, 0xCF, 0x09, 0x6C, 0x61, 0x73, 0x74, 0x2D, 0x62, 0x79, 0x74, 0x65, 0x04, 0x10, 
36213
  0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x75, 0x07, 0x0D, 0x09, 0xCF, 0x07, 0x5F, 
36214
  0x30, 0x30, 0x30, 0x30, 0x35, 0x74, 0x21, 0x3C, 0x07, 0xDA, 0x80, 0x84, 0x21, 0x2C, 0x01, 0xCF, 
36215
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x76, 0x2B, 0x04, 0x00, 0x39, 0x2F, 0x04, 0x00, 0x00, 
36216
  0x2A, 0x05, 0x00, 0x00, 0x33, 0x04, 0x05, 0x00, 0x19, 0x05, 0x04, 0x00, 0x1C, 0x05, 0x0A, 0x00, 
36217
  0x49, 0x08, 0x05, 0x0A, 0x19, 0x09, 0x08, 0x00, 0x1C, 0x08, 0x04, 0x00, 0x49, 0x0A, 0x05, 0x20, 
36218
  0x19, 0x07, 0x0A, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x07, 0x09, 0x00, 0x19, 0x06, 0x07, 0x00, 
36219
  0x1A, 0x02, 0x00, 0x00, 0x19, 0x06, 0x05, 0x00, 0x1C, 0x06, 0x0A, 0x00, 0x2B, 0x07, 0x00, 0x39, 
36220
  0x2A, 0x08, 0x01, 0x00, 0x30, 0x07, 0x08, 0x00, 0x2A, 0x08, 0x02, 0x00, 0x33, 0x07, 0x08, 0x00, 
36221
  0x2B, 0x08, 0x00, 0x3A, 0x05, 0x07, 0x08, 0x01, 0x2D, 0x07, 0x00, 0x3A, 0x1A, 0x01, 0x00, 0x00, 
36222
  0x26, 0x08, 0x00, 0x00, 0x23, 0x07, 0x08, 0x02, 0x1C, 0x07, 0x04, 0x00, 0x3D, 0x08, 0x00, 0x00, 
36223
  0x19, 0x06, 0x08, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x06, 0x02, 0x00, 0x19, 0x07, 0x06, 0x00, 
36224
  0x1C, 0x01, 0x09, 0x00, 0x29, 0x0A, 0x01, 0x00, 0x2B, 0x0B, 0x00, 0x3A, 0x06, 0x09, 0x0A, 0x0B, 
36225
  0x06, 0x09, 0x09, 0x07, 0x2B, 0x0B, 0x00, 0x07, 0x1F, 0x0A, 0x09, 0x0B, 0x19, 0x08, 0x0A, 0x00, 
36226
  0x1A, 0x02, 0x00, 0x00, 0x19, 0x08, 0x01, 0x00, 0x1C, 0x08, 0x07, 0x00, 0x2B, 0x0A, 0x00, 0x3E, 
36227
  0x33, 0x09, 0x0A, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x2B, 0x0A, 0x00, 0x3C, 0x33, 0x09, 0x0A, 0x00, 
36228
  0x1A, 0x01, 0x00, 0x00, 0x2B, 0x08, 0x00, 0x39, 0x30, 0x08, 0x00, 0x00, 0x2A, 0x09, 0x02, 0x00, 
36229
  0x33, 0x08, 0x09, 0x00, 0x2B, 0x0A, 0x00, 0x3A, 0x06, 0x09, 0x0A, 0x07, 0x2D, 0x09, 0x00, 0x3A, 
36230
  0x2B, 0x0A, 0x00, 0x3A, 0x03, 0x0A, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0xD5, 0x14, 0x00, 0x14, 0x00, 
36231
  0x14, 0x00, 0x14, 0x00, 0x05, 0x01, 0x0B, 0x02, 0x0D, 0xBF, 0xFE, 0x0B, 0x00, 0x0B, 0x03, 0x0D, 
36232
  0xBF, 0xFD, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x04, 
36233
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 
36234
  0xFB, 0x05, 0x06, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x12, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
36235
  0x00, 0x05, 0x01, 0x0B, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x17, 0x00, 0x17, 
36236
  0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 
36237
  0x00, 0x07, 0xBF, 0xFE, 0x05, 0x03, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 
36238
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x02, 0x02, 0x02, 
36239
  0x07, 0x24, 0x01, 0x2C, 0xCE, 0x09, 0x65, 0x6D, 0x69, 0x74, 0x2D, 0x63, 0x6F, 0x64, 0x65, 0xDA, 
36240
  0x18, 0xDA, 0x81, 0x82, 0xDA, 0x81, 0x83, 0xDA, 0x80, 0xFD, 0xDA, 0x80, 0xF5, 0xDA, 0x83, 0xBC, 
36241
  0xDA, 0x83, 0xC4, 0xDA, 0x83, 0xE3, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x83, 0x61, 0xBF, 0xFF, 0x00, 
36242
  0x01, 0xDA, 0x83, 0x62, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
36243
  0x83, 0x64, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x83, 0x44, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x83, 0x63, 
36244
  0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x65, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x83, 0x66, 0xBF, 0xFF, 
36245
  0x00, 0x0A, 0xDA, 0x83, 0x67, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x83, 0x68, 0xBF, 0xFF, 0x00, 0x0E, 
36246
  0xDA, 0x83, 0x69, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x83, 0x6A, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x83, 
36247
  0x6B, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x80, 0xE3, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x81, 0xCF, 0xBF, 
36248
  0xFF, 0x00, 0x17, 0xDA, 0x83, 0x6C, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x83, 0x6D, 0xBF, 0xFF, 0x00, 
36249
  0x1B, 0xDA, 0x83, 0x6E, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x83, 0x6F, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 
36250
  0x83, 0x70, 0xBF, 0xFF, 0x00, 0x21, 0xDA, 0x83, 0x71, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x83, 0x72, 
36251
  0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x83, 0x73, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x83, 0x74, 0xBF, 0xFF, 
36252
  0x00, 0x28, 0xDA, 0x83, 0x75, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x83, 0x76, 0xBF, 0xFF, 0x00, 0x2C, 
36253
  0xDA, 0x83, 0x77, 0xBF, 0xFF, 0x00, 0x2E, 0xDA, 0x83, 0x78, 0xBF, 0xFF, 0x00, 0x30, 0xDA, 0x83, 
36254
  0x79, 0xBF, 0xFF, 0x00, 0x32, 0xDA, 0x83, 0x7A, 0xBF, 0xFF, 0x00, 0x34, 0xDA, 0x83, 0x7B, 0xBF, 
36255
  0xFF, 0x00, 0x36, 0xDA, 0x83, 0x7C, 0xBF, 0xFF, 0x00, 0x37, 0xDA, 0x83, 0x7D, 0xBF, 0xFF, 0x00, 
36256
  0x3A, 0xDA, 0x83, 0x7E, 0xBF, 0xFF, 0x00, 0x3B, 0xDA, 0x83, 0x7F, 0xBF, 0xFF, 0x00, 0x39, 0xDA, 
36257
  0x82, 0x3B, 0xBF, 0xFF, 0x00, 0x3A, 0xDA, 0x83, 0x80, 0xBF, 0xFF, 0x00, 0x3C, 0xDA, 0x83, 0x81, 
36258
  0xBF, 0xFF, 0x00, 0x3E, 0xDA, 0x83, 0x82, 0xBF, 0xFF, 0x00, 0x40, 0xDA, 0x83, 0x83, 0x00, 0x24, 
36259
  0x00, 0xCF, 0x04, 0x63, 0x6F, 0x64, 0x65, 0x00, 0x24, 0x01, 0xDA, 0x83, 0x63, 0x00, 0x24, 0x02, 
36260
  0xDA, 0x83, 0x84, 0x0A, 0x24, 0x04, 0xCF, 0x0B, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x6D, 
36261
  0x65, 0x6E, 0x74, 0x29, 0x04, 0x04, 0x00, 0x06, 0x03, 0x04, 0x01, 0x2A, 0x04, 0x00, 0x00, 0x30, 
36262
  0x04, 0x03, 0x00, 0x2A, 0x05, 0x01, 0x00, 0x33, 0x04, 0x05, 0x00, 0x2A, 0x03, 0x02, 0x00, 0x30, 
36263
  0x03, 0x04, 0x00, 0x2A, 0x05, 0x03, 0x00, 0x33, 0x03, 0x05, 0x00, 0x19, 0x04, 0x03, 0x00, 0x29, 
36264
  0x06, 0x04, 0x00, 0x06, 0x05, 0x06, 0x01, 0x2F, 0x05, 0x00, 0x00, 0x2B, 0x07, 0x00, 0x3C, 0x33, 
36265
  0x06, 0x07, 0x00, 0x2A, 0x05, 0x02, 0x00, 0x31, 0x05, 0x04, 0x00, 0x2A, 0x07, 0x04, 0x00, 0x33, 
36266
  0x05, 0x07, 0x00, 0x2B, 0x07, 0x00, 0x39, 0x30, 0x07, 0x05, 0x00, 0x2A, 0x08, 0x05, 0x00, 0x33, 
36267
  0x07, 0x08, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x08, 0x06, 0x00, 0x33, 0x05, 0x08, 0x00, 0x29, 
36268
  0x09, 0x0A, 0x00, 0x23, 0x08, 0x09, 0x05, 0x1C, 0x08, 0x05, 0x00, 0x29, 0x05, 0x00, 0x00, 0x2D, 
36269
  0x05, 0x00, 0x3A, 0x2B, 0x05, 0x00, 0x3A, 0x03, 0x05, 0x00, 0x00, 0x2B, 0x05, 0x00, 0x3E, 0x34, 
36270
  0x05, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0xE5, 0x36, 0x00, 0x36, 0x00, 0x23, 0x00, 0x23, 0x00, 0x23, 
36271
  0x00, 0x23, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x05, 0x01, 0x12, 0x00, 0x12, 
36272
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x05, 
36273
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x09, 0x00, 0x09, 
36274
  0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0xCD, 0x00, 
36275
  0xDC, 0x00, 0x00, 0x12, 0x02, 0x02, 0x02, 0x0D, 0x80, 0x80, 0x01, 0x3F, 0xCE, 0x09, 0x65, 0x6D, 
36276
  0x69, 0x74, 0x2D, 0x6E, 0x6F, 0x64, 0x65, 0xDA, 0x18, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
36277
  0x05, 0x01, 0x01, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x06, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x3F, 
36278
  0xDA, 0x18, 0xDA, 0x2C, 0xDA, 0x80, 0x8B, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xCF, 
36279
  0x06, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x3F, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 
36280
  0x02, 0x03, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x23, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x70, 
36281
  0x2E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x2B, 0x00, 0x2B, 0x00, 0x2B, 0xDA, 0x81, 0x82, 0xDA, 0x81, 
36282
  0x83, 0xDA, 0x80, 0xFD, 0xDA, 0x80, 0xF5, 0xDA, 0x83, 0xBC, 0xDA, 0x83, 0xD0, 0xDA, 0x83, 0xD4, 
36283
  0xCE, 0x02, 0x2A, 0x20, 0xDA, 0x83, 0xD5, 0xCE, 0x04, 0x25, 0x64, 0x2E, 0x20, 0xDA, 0x4C, 0xDA, 
36284
  0x83, 0xBD, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x83, 0x61, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x62, 
36285
  0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 
36286
  0x00, 0x04, 0xDA, 0x83, 0x44, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x83, 0x63, 0xBF, 0xFF, 0x00, 0x01, 
36287
  0xDA, 0x83, 0x65, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x83, 0x66, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x83, 
36288
  0x67, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x83, 0x68, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x83, 0x69, 0xBF, 
36289
  0xFF, 0x00, 0x10, 0xDA, 0x83, 0x6A, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x83, 0x6B, 0xBF, 0xFF, 0x00, 
36290
  0x13, 0xDA, 0x80, 0xE3, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x81, 0xCF, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 
36291
  0x83, 0x6C, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x83, 0x6D, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x83, 0x6E, 
36292
  0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x83, 0x6F, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x83, 0x70, 0xBF, 0xFF, 
36293
  0x00, 0x21, 0xDA, 0x83, 0x71, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x83, 0x72, 0xBF, 0xFF, 0x00, 0x25, 
36294
  0xDA, 0x83, 0x73, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x83, 0x74, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x83, 
36295
  0x75, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x83, 0x76, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x83, 0x77, 0xBF, 
36296
  0xFF, 0x00, 0x2E, 0xDA, 0x83, 0x78, 0xBF, 0xFF, 0x00, 0x30, 0xDA, 0x83, 0x79, 0xBF, 0xFF, 0x00, 
36297
  0x32, 0xDA, 0x83, 0x7A, 0xBF, 0xFF, 0x00, 0x34, 0xDA, 0x83, 0x7B, 0xBF, 0xFF, 0x00, 0x36, 0xDA, 
36298
  0x83, 0x7C, 0xBF, 0xFF, 0x00, 0x37, 0xDA, 0x83, 0x7D, 0xBF, 0xFF, 0x00, 0x3A, 0xDA, 0x83, 0x7E, 
36299
  0xBF, 0xFF, 0x00, 0x3B, 0xDA, 0x83, 0x7F, 0xBF, 0xFF, 0x00, 0x39, 0xDA, 0x82, 0x3B, 0xBF, 0xFF, 
36300
  0x00, 0x3A, 0xDA, 0x83, 0x80, 0xBF, 0xFF, 0x00, 0x3C, 0xDA, 0x83, 0x81, 0xBF, 0xFF, 0x00, 0x3E, 
36301
  0xDA, 0x83, 0x82, 0xBF, 0xFF, 0x00, 0x40, 0xDA, 0x83, 0x83, 0xBF, 0xFF, 0x00, 0x42, 0xDA, 0x83, 
36302
  0x84, 0x00, 0x80, 0x80, 0x00, 0xDA, 0x82, 0xE1, 0x00, 0x80, 0x80, 0x01, 0xDA, 0x83, 0x63, 0x00, 
36303
  0x80, 0x80, 0x02, 0xDA, 0x83, 0x85, 0x10, 0x25, 0x05, 0xCF, 0x03, 0x72, 0x65, 0x70, 0x10, 0x23, 
36304
  0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x78, 0x13, 0x23, 0x07, 0xCF, 0x07, 0x5F, 
36305
  0x30, 0x30, 0x30, 0x30, 0x35, 0x77, 0x17, 0x23, 0x09, 0xDA, 0x83, 0xE5, 0x19, 0x23, 0x0A, 0xDA, 
36306
  0x80, 0x84, 0x28, 0x80, 0x80, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x79, 0x2C, 
36307
  0x4E, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x7A, 0x2E, 0x4E, 0x09, 0xCF, 0x07, 
36308
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x41, 0x31, 0x4D, 0x0A, 0xDA, 0x80, 0x90, 0x3E, 0x4B, 0x0C, 
36309
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x43, 0x41, 0x4B, 0x0D, 0xCF, 0x07, 0x5F, 0x30, 
36310
  0x30, 0x30, 0x30, 0x35, 0x42, 0x44, 0x4B, 0x0E, 0xCF, 0x05, 0x73, 0x75, 0x62, 0x65, 0x6C, 0x51, 
36311
  0x77, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x44, 0x53, 0x77, 0x0A, 0xCF, 0x07, 
36312
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x45, 0x56, 0x76, 0x0B, 0xDA, 0x80, 0x90, 0x61, 0x76, 0x0D, 
36313
  0xCF, 0x03, 0x6C, 0x61, 0x62, 0x67, 0x74, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 
36314
  0x47, 0x6A, 0x74, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x46, 0x6D, 0x74, 0x10, 
36315
  0xDA, 0x83, 0xFB, 0x2C, 0x02, 0x00, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x2B, 0x04, 0x00, 0x3C, 0x33, 
36316
  0x03, 0x04, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x05, 0x00, 0x00, 0x33, 0x04, 0x05, 0x00, 0x1C, 
36317
  0x04, 0x1E, 0x00, 0x2A, 0x05, 0x01, 0x00, 0x30, 0x05, 0x01, 0x00, 0x2A, 0x06, 0x02, 0x00, 0x33, 
36318
  0x05, 0x06, 0x00, 0x2A, 0x06, 0x03, 0x00, 0x30, 0x06, 0x05, 0x00, 0x2A, 0x07, 0x04, 0x00, 0x33, 
36319
  0x06, 0x07, 0x00, 0x19, 0x05, 0x06, 0x00, 0x26, 0x07, 0x00, 0x00, 0x47, 0x06, 0x00, 0x07, 0x19, 
36320
  0x07, 0x06, 0x00, 0x1D, 0x07, 0x0F, 0x00, 0x38, 0x06, 0x00, 0x07, 0x3B, 0x08, 0x06, 0x00, 0x19, 
36321
  0x09, 0x08, 0x00, 0x3B, 0x08, 0x06, 0x01, 0x19, 0x0A, 0x08, 0x00, 0x2A, 0x06, 0x03, 0x00, 0x31, 
36322
  0x06, 0x05, 0x09, 0x2A, 0x08, 0x05, 0x00, 0x33, 0x06, 0x08, 0x00, 0x31, 0x06, 0x01, 0x0A, 0x2B, 
36323
  0x0B, 0x00, 0x40, 0x33, 0x08, 0x0B, 0x00, 0x47, 0x07, 0x00, 0x07, 0x1A, 0xF2, 0xFF, 0xFF, 0x2B, 
36324
  0x06, 0x00, 0x3E, 0x34, 0x06, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x06, 0x06, 0x00, 0x33, 
36325
  0x05, 0x06, 0x00, 0x19, 0x06, 0x05, 0x00, 0x2A, 0x07, 0x07, 0x00, 0x23, 0x05, 0x06, 0x07, 0x1C, 
36326
  0x05, 0x23, 0x00, 0x29, 0x07, 0x01, 0x00, 0x3D, 0x08, 0x00, 0x00, 0x19, 0x09, 0x08, 0x00, 0x21, 
36327
  0x08, 0x07, 0x09, 0x1C, 0x08, 0x1D, 0x00, 0x19, 0x0A, 0x07, 0x00, 0x20, 0x0B, 0x0A, 0x01, 0x1C, 
36328
  0x0B, 0x05, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x2B, 0x0D, 0x00, 0x3C, 0x33, 0x0C, 0x0D, 0x00, 0x1A, 
36329
  0x01, 0x00, 0x00, 0x2A, 0x0B, 0x08, 0x00, 0x26, 0x0C, 0x00, 0x00, 0x30, 0x0B, 0x0C, 0x00, 0x2B, 
36330
  0x0C, 0x00, 0x40, 0x33, 0x0B, 0x0C, 0x00, 0x39, 0x0B, 0x00, 0x0A, 0x19, 0x0C, 0x0B, 0x00, 0x26, 
36331
  0x0D, 0x00, 0x00, 0x47, 0x0B, 0x0C, 0x0D, 0x19, 0x0D, 0x0B, 0x00, 0x1D, 0x0D, 0x09, 0x00, 0x38, 
36332
  0x0B, 0x0C, 0x0D, 0x19, 0x0E, 0x0B, 0x00, 0x29, 0x0F, 0x02, 0x00, 0x06, 0x0B, 0x0F, 0x01, 0x30, 
36333
  0x0E, 0x0B, 0x00, 0x33, 0x0F, 0x02, 0x00, 0x47, 0x0D, 0x0C, 0x0D, 0x1A, 0xF8, 0xFF, 0xFF, 0x05, 
36334
  0x07, 0x07, 0x01, 0x1A, 0xE3, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x2A, 0x08, 0x09, 0x00, 0x23, 
36335
  0x07, 0x06, 0x08, 0x1C, 0x07, 0x27, 0x00, 0x29, 0x08, 0x01, 0x00, 0x3D, 0x09, 0x00, 0x00, 0x19, 
36336
  0x0A, 0x09, 0x00, 0x21, 0x09, 0x08, 0x0A, 0x1C, 0x09, 0x21, 0x00, 0x19, 0x0B, 0x08, 0x00, 0x20, 
36337
  0x0C, 0x0B, 0x01, 0x1C, 0x0C, 0x05, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x2B, 0x0E, 0x00, 0x3C, 0x33, 
36338
  0x0D, 0x0E, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x2A, 0x0C, 0x0A, 0x00, 0x30, 0x0C, 0x0B, 0x00, 0x2A, 
36339
  0x0D, 0x0B, 0x00, 0x33, 0x0C, 0x0D, 0x00, 0x19, 0x0D, 0x0C, 0x00, 0x26, 0x0C, 0x00, 0x00, 0x30, 
36340
  0x0D, 0x0C, 0x00, 0x2B, 0x0E, 0x00, 0x40, 0x33, 0x0C, 0x0E, 0x00, 0x39, 0x0C, 0x00, 0x0B, 0x19, 
36341
  0x0E, 0x0C, 0x00, 0x26, 0x0F, 0x00, 0x00, 0x47, 0x0C, 0x0E, 0x0F, 0x19, 0x0F, 0x0C, 0x00, 0x1D, 
36342
  0x0F, 0x09, 0x00, 0x38, 0x0C, 0x0E, 0x0F, 0x19, 0x10, 0x0C, 0x00, 0x3D, 0x0C, 0x0D, 0x00, 0x06, 
36343
  0x11, 0x0C, 0x01, 0x30, 0x10, 0x11, 0x00, 0x33, 0x0C, 0x02, 0x00, 0x47, 0x0F, 0x0E, 0x0F, 0x1A, 
36344
  0xF8, 0xFF, 0xFF, 0x05, 0x08, 0x08, 0x01, 0x1A, 0xDF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x2A, 
36345
  0x09, 0x0C, 0x00, 0x23, 0x08, 0x06, 0x09, 0x1C, 0x08, 0x06, 0x00, 0x29, 0x0A, 0x01, 0x00, 0x39, 
36346
  0x09, 0x00, 0x0A, 0x30, 0x09, 0x01, 0x00, 0x2B, 0x0A, 0x00, 0x42, 0x34, 0x0A, 0x00, 0x00, 0x04, 
36347
  0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0xEC, 0x03, 0x02, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x09, 
36348
  0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x11, 
36349
  0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x07, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 
36350
  0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x02, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 
36351
  0x00, 0x0D, 0xBF, 0xFF, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFF, 0x09, 0x00, 0x09, 0x05, 0x09, 
36352
  0x00, 0x09, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
36353
  0x01, 0x0D, 0x00, 0x16, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x13, 0x00, 0x0F, 
36354
  0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x0F, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
36355
  0x00, 0x0F, 0x01, 0x1B, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
36356
  0x00, 0x0F, 0x00, 0x37, 0x00, 0x37, 0x00, 0x26, 0x00, 0x26, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 0xFD, 
36357
  0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x00, 0x07, 0x05, 0x0D, 0x00, 0x16, 
36358
  0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x13, 0x00, 0x0F, 0x00, 0x1B, 0x00, 0x1B, 
36359
  0x00, 0x1B, 0x00, 0x0F, 0x01, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x0F, 0x01, 0x0F, 
36360
  0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x01, 0x1B, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
36361
  0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x3A, 0x00, 0x37, 0x00, 0x26, 0x00, 0x26, 0x00, 0x0F, 
36362
  0x00, 0x0F, 0xBF, 0xFC, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xFB, 0x07, 0x00, 0x07, 0x00, 0x07, 
36363
  0x0A, 0x18, 0x00, 0x18, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xF6, 0x07, 0x8C, 0x04, 0x03, 
36364
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x15, 0x00, 0x15, 
36365
  0x00, 0x15, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x15, 0x00, 0x12, 
36366
  0x00, 0x03, 0x01, 0x16, 0x00, 0x16, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x02, 0x14, 0x00, 0x14, 
36367
  0x00, 0x14, 0x00, 0x14, 0xBF, 0xFE, 0x12, 0x00, 0x03, 0x06, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
36368
  0x05, 0xBF, 0xFF, 0x03, 0x0A, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x07, 0x03, 0x01, 0x03, 
36369
  0x00, 0x03, 0x03, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x03, 
36370
  0x00, 0x03, 0x02, 0x03, 0x00, 0x03, 0x04, 0x03, 0x00, 0x03, 0x07, 0x03, 0x00, 0x03, 0x06, 0x03, 
36371
  0x00, 0x03, 0x07, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x06, 0x03, 0x01, 0x03, 0x00, 0x03, 
36372
  0x03, 0x03, 0x00, 0x03, 0x02, 0x03, 0x00, 0x03, 0x16, 0x03, 0x00, 0x03, 0x06, 0x03, 0x00, 0x03, 
36373
  0x0D, 0x03, 0x00, 0x03, 0x0B, 0x03, 0x00, 0x03, 0x23, 0x05, 0x1A, 0x16, 0x00, 0x16, 0x00, 0x09, 
36374
  0x00, 0x09, 0x00, 0x03, 0x01, 0x05, 0x01, 0x29, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 
36375
  0x00, 0x05, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x05, 0x01, 0x13, 0x00, 0x13, 
36376
  0x00, 0x13, 0x00, 0x13, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x32, 0x00, 0x0C, 
36377
  0x00, 0x0C, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFB, 0x03, 0x07, 0x03, 0x00, 
36378
  0x03, 0x00, 0x03, 0x03, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x03, 0x03, 0x00, 
36379
  0x03, 0x06, 0x03, 0x00, 0x03, 0x04, 0x03, 0x00, 0x03, 0x0F, 0x03, 0x00, 0x03, 0x09, 0x03, 0x00, 
36380
  0x03, 0x17, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 
36381
  0x05, 0x01, 0x05, 0x00, 0x05, 0xBF, 0xFE, 0x03, 0x00, 0x03, 0xBE, 0xFB, 0x01, 0x81, 0x54, 0xAB, 
36382
  0xAA, 0xAA, 0x55, 0x55, 0x56, 0x05, 0x00, 0x00, 0x00, 0xDA, 0x08, 0xCE, 0x81, 0x1F, 0x28, 0x64, 
36383
  0x6F, 0x63, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x73, 0x74, 0x72, 0x20, 0x26, 0x6F, 
36384
  0x70, 0x74, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x6E, 0x74, 0x20, 
36385
  0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x69, 0x7A, 0x65, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x66, 0x6F, 0x72, 
36386
  0x6D, 0x61, 0x74, 0x20, 0x61, 0x20, 0x64, 0x6F, 0x63, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 
36387
  0x74, 0x6F, 0x20, 0x77, 0x72, 0x61, 0x70, 0x20, 0x61, 0x20, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, 
36388
  0x6E, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2E, 0x20, 0x44, 0x6F, 0x63, 0x73, 0x74, 0x72, 0x69, 
36389
  0x6E, 0x67, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x62, 
36390
  0x65, 0x20, 0x70, 0x6C, 0x61, 0x69, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x0A, 0x6F, 0x72, 0x20, 0x61, 
36391
  0x20, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x6D, 0x61, 0x72, 0x6B, 0x64, 
36392
  0x6F, 0x77, 0x6E, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x73, 
36393
  0x20, 0x61, 0x20, 0x6C, 0x6F, 0x6E, 0x67, 0x20, 0x73, 0x69, 0x6E, 0x67, 0x6C, 0x65, 0x20, 0x6C, 
36394
  0x69, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x70, 0x72, 0x6F, 0x73, 0x65, 0x20, 0x6F, 0x72, 0x20, 
36395
  0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x74, 
36396
  0x6F, 0x20, 0x62, 0x65, 0x0A, 0x61, 0x20, 0x77, 0x65, 0x6C, 0x6C, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 
36397
  0x65, 0x64, 0x20, 0x64, 0x6F, 0x63, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2E, 0x20, 0x52, 0x65, 
36398
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x63, 
36399
  0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6F, 
36400
  0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2E, 0xCF, 0x09, 0x6D, 
36401
  0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0x32, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
36402
  0x82, 0x9A, 0x81, 0x1B, 0x01, 0xDA, 0x06, 0xD8, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 
36403
  0x67, 0x32, 0xDA, 0x08, 0xCE, 0x2B, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0x32, 
36404
  0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
36405
  0x20, 0x6C, 0x6F, 0x67, 0x20, 0x62, 0x61, 0x73, 0x65, 0x20, 0x32, 0x20, 0x6F, 0x66, 0x20, 0x78, 
36406
  0x2E, 0xCF, 0x04, 0x77, 0x68, 0x65, 0x6E, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 
36407
  0x80, 0xBA, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 
36408
  0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x08, 0x00, 0x03, 0xCE, 0x04, 0x77, 0x68, 0x65, 0x6E, 0xDA, 0x18, 
36409
  0xDA, 0x50, 0xDA, 0x4F, 0x00, 0x08, 0x00, 0xCF, 0x09, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 
36410
  0x6F, 0x6E, 0x00, 0x08, 0x01, 0xDA, 0x82, 0xB5, 0x00, 0x08, 0x02, 0xDA, 0x84, 0x07, 0x2A, 0x04, 
36411
  0x00, 0x00, 0x2F, 0x04, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0x43, 0x03, 0x00, 0x00, 0x2A, 0x05, 
36412
  0x01, 0x00, 0x31, 0x05, 0x00, 0x03, 0x43, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x80, 0xBD, 
36413
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 
36414
  0x08, 0xCE, 0x5E, 0x28, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 
36415
  0x6F, 0x6E, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 
36416
  0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x77, 
36417
  0x68, 0x65, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 
36418
  0x6E, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2E, 0x20, 0x4F, 0x74, 0x68, 0x65, 0x72, 
36419
  0x77, 0x69, 0x73, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 
36420
  0x2E, 0xDA, 0x3D, 0xCB, 0xCF, 0x07, 0x70, 0x72, 0x65, 0x77, 0x61, 0x6C, 0x6B, 0xD3, 0x03, 0xDA, 
36421
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x85, 0x51, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 
36422
  0x00, 0x00, 0x06, 0x02, 0x02, 0x02, 0x01, 0x07, 0x00, 0x01, 0x03, 0xCE, 0x07, 0x70, 0x72, 0x65, 
36423
  0x77, 0x61, 0x6C, 0x6B, 0xDA, 0x18, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x02, 0x02, 
36424
  0x02, 0x09, 0x23, 0x00, 0x04, 0xCE, 0x04, 0x77, 0x61, 0x6C, 0x6B, 0xDA, 0x18, 0xDA, 0x2C, 0xDA, 
36425
  0x80, 0x8A, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x02, 0x02, 0x02, 0x00, 0x10, 0x00, 
36426
  0x07, 0xCE, 0x09, 0x77, 0x61, 0x6C, 0x6B, 0x2D, 0x64, 0x69, 0x63, 0x74, 0xDA, 0x18, 0x00, 0x10, 
36427
  0x00, 0xDA, 0x80, 0xFB, 0x00, 0x10, 0x01, 0xDA, 0x82, 0xD3, 0x00, 0x10, 0x02, 0xCF, 0x09, 0x77, 
36428
  0x61, 0x6C, 0x6B, 0x2D, 0x64, 0x69, 0x63, 0x74, 0x01, 0x10, 0x04, 0xDA, 0x23, 0x01, 0x0F, 0x01, 
36429
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x31, 0x04, 0x0F, 0x06, 0xCF, 0x07, 0x5F, 0x30, 
36430
  0x30, 0x30, 0x30, 0x32, 0x30, 0x06, 0x0F, 0x05, 0xDA, 0x22, 0x42, 0x03, 0x00, 0x00, 0x19, 0x04, 
36431
  0x03, 0x00, 0x26, 0x06, 0x00, 0x00, 0x47, 0x05, 0x01, 0x06, 0x19, 0x06, 0x05, 0x00, 0x1D, 0x06, 
36432
  0x0A, 0x00, 0x19, 0x05, 0x06, 0x00, 0x2F, 0x05, 0x00, 0x00, 0x33, 0x07, 0x00, 0x00, 0x38, 0x08, 
36433
  0x01, 0x05, 0x2F, 0x08, 0x00, 0x00, 0x33, 0x09, 0x00, 0x00, 0x3A, 0x04, 0x07, 0x09, 0x47, 0x06, 
36434
  0x01, 0x06, 0x1A, 0xF7, 0xFF, 0xFF, 0x03, 0x04, 0x00, 0x00, 0x85, 0x39, 0x03, 0x00, 0x03, 0x01, 
36435
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x17, 0x00, 
36436
  0x14, 0x00, 0x14, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0xBF, 0xFE, 0x01, 0xDA, 0x80, 0x89, 
36437
  0xD8, 0x0F, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x74, 0x6F, 0x2D, 0x73, 0x74, 0x72, 0x75, 0x63, 
36438
  0x74, 0xDA, 0x5D, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x02, 0x02, 0x02, 0x01, 0x10, 
36439
  0x00, 0x07, 0xCE, 0x08, 0x77, 0x61, 0x6C, 0x6B, 0x2D, 0x69, 0x6E, 0x64, 0xDA, 0x18, 0xDA, 0x81, 
36440
  0x8C, 0x00, 0x10, 0x00, 0xDA, 0x80, 0xFB, 0x00, 0x10, 0x01, 0xDA, 0x82, 0xD3, 0x00, 0x10, 0x02, 
36441
  0xCF, 0x08, 0x77, 0x61, 0x6C, 0x6B, 0x2D, 0x69, 0x6E, 0x64, 0x01, 0x10, 0x04, 0xDA, 0x23, 0x01, 
36442
  0x0F, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x5A, 0x04, 0x0F, 0x06, 0xCF, 0x07, 
36443
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x59, 0x07, 0x0F, 0x07, 0xDA, 0x1E, 0x3E, 0x03, 0x00, 0x00, 
36444
  0x19, 0x04, 0x03, 0x00, 0x26, 0x06, 0x00, 0x00, 0x47, 0x05, 0x01, 0x06, 0x19, 0x06, 0x05, 0x00, 
36445
  0x1D, 0x06, 0x0A, 0x00, 0x38, 0x05, 0x01, 0x06, 0x19, 0x07, 0x05, 0x00, 0x2F, 0x07, 0x00, 0x00, 
36446
  0x33, 0x05, 0x00, 0x00, 0x30, 0x04, 0x05, 0x00, 0x2A, 0x09, 0x00, 0x00, 0x33, 0x08, 0x09, 0x00, 
36447
  0x47, 0x06, 0x01, 0x06, 0x1A, 0xF7, 0xFF, 0xFF, 0x03, 0x04, 0x00, 0x00, 0x85, 0x34, 0x03, 0x00, 
36448
  0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x20, 0x00, 
36449
  0x20, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFE, 0x01, 0xDA, 0x80, 
36450
  0x8B, 0xDA, 0x82, 0xE7, 0x00, 0x23, 0x00, 0xDA, 0x80, 0xFB, 0x00, 0x23, 0x01, 0xDA, 0x82, 0xD3, 
36451
  0x00, 0x23, 0x02, 0xCF, 0x04, 0x77, 0x61, 0x6C, 0x6B, 0x03, 0x23, 0x04, 0xCF, 0x07, 0x5F, 0x30, 
36452
  0x30, 0x30, 0x30, 0x32, 0x32, 0x2F, 0x01, 0x00, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 
36453
  0x00, 0x19, 0x04, 0x03, 0x00, 0x2A, 0x05, 0x01, 0x00, 0x23, 0x03, 0x04, 0x05, 0x1C, 0x03, 0x04, 
36454
  0x00, 0x30, 0x00, 0x01, 0x00, 0x2A, 0x05, 0x02, 0x00, 0x34, 0x05, 0x00, 0x00, 0x2A, 0x06, 0x03, 
36455
  0x00, 0x23, 0x05, 0x04, 0x06, 0x1C, 0x05, 0x07, 0x00, 0x30, 0x00, 0x01, 0x00, 0x2A, 0x07, 0x02, 
36456
  0x00, 0x33, 0x06, 0x07, 0x00, 0x2F, 0x06, 0x00, 0x00, 0x2A, 0x07, 0x04, 0x00, 0x34, 0x07, 0x00, 
36457
  0x00, 0x2A, 0x07, 0x05, 0x00, 0x23, 0x06, 0x04, 0x07, 0x1C, 0x06, 0x04, 0x00, 0x30, 0x00, 0x01, 
36458
  0x00, 0x2A, 0x07, 0x06, 0x00, 0x34, 0x07, 0x00, 0x00, 0x2A, 0x08, 0x07, 0x00, 0x23, 0x07, 0x04, 
36459
  0x08, 0x1C, 0x07, 0x07, 0x00, 0x30, 0x00, 0x01, 0x00, 0x2A, 0x09, 0x06, 0x00, 0x33, 0x08, 0x09, 
36460
  0x00, 0x30, 0x01, 0x08, 0x00, 0x2A, 0x09, 0x08, 0x00, 0x34, 0x09, 0x00, 0x00, 0x03, 0x01, 0x00, 
36461
  0x00, 0x85, 0x44, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
36462
  0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x1E, 0x00, 
36463
  0x1E, 0x00, 0x1E, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xFE, 0x03, 0x00, 0x03, 0x00, 0x03, 
36464
  0x03, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFD, 0x03, 0x00, 0x03, 0x00, 0x03, 0x04, 0x1F, 0x00, 
36465
  0x1F, 0x00, 0x1F, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFC, 0x03, 0x00, 0x07, 0x00, 0xDA, 
36466
  0x80, 0xFB, 0x00, 0x07, 0x01, 0xDA, 0x82, 0xD3, 0x00, 0x07, 0x02, 0xDA, 0x84, 0x0E, 0x2C, 0x02, 
36467
  0x00, 0x00, 0x2E, 0x03, 0x00, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x33, 0x04, 0x00, 0x00, 0x30, 0x03, 
36468
  0x04, 0x00, 0x2A, 0x05, 0x00, 0x00, 0x34, 0x05, 0x00, 0x00, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x02, 
36469
  0x01, 0x01, 0x01, 0x00, 0x04, 0x01, 0x04, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 0xFB, 
36470
  0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x82, 0xD3, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x84, 0x0E, 0x00, 0x04, 
36471
  0x00, 0xDA, 0x1E, 0x2B, 0x01, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, 0x2B, 0x01, 0x00, 0x02, 0x34, 
36472
  0x01, 0x00, 0x00, 0xBF, 0xFF, 0x85, 0x54, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x85, 0x51, 
36473
  0x01, 0x03, 0x09, 0x00, 0x20, 0x00, 0x20, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x05, 0x00, 0x00, 
36474
  0x00, 0xDA, 0x08, 0xCE, 0x44, 0x28, 0x70, 0x72, 0x65, 0x77, 0x61, 0x6C, 0x6B, 0x20, 0x66, 0x20, 
36475
  0x66, 0x6F, 0x72, 0x6D, 0x29, 0x0A, 0x0A, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 
36476
  0x6F, 0x20, 0x60, 0x70, 0x6F, 0x73, 0x74, 0x77, 0x61, 0x6C, 0x6B, 0x60, 0x2C, 0x20, 0x62, 0x75, 
36477
  0x74, 0x20, 0x64, 0x6F, 0x20, 0x70, 0x72, 0x65, 0x2D, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x20, 0x74, 
36478
  0x72, 0x61, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6C, 0x2E, 0xCF, 0x07, 0x2A, 0x72, 0x65, 0x64, 0x65, 
36479
  0x66, 0x2A, 0xD3, 0x04, 0xD0, 0x03, 0x64, 0x79, 0x6E, 0xCB, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
36480
  0x18, 0x84, 0xBD, 0x01, 0xDA, 0x06, 0xD0, 0x05, 0x72, 0x65, 0x64, 0x65, 0x66, 0xDA, 0x08, 0xCE, 
36481
  0x7A, 0x57, 0x68, 0x65, 0x6E, 0x20, 0x73, 0x65, 0x74, 0x2C, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 
36482
  0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x72, 0x65, 0x62, 
36483
  0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x6F, 0x70, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 
36484
  0x20, 0x64, 0x65, 0x66, 0x73, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x73, 0x6C, 0x6F, 0x77, 
36485
  0x20, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 
36486
  0x61, 0x6E, 0x64, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x20, 
36487
  0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x64, 
36488
  0x65, 0x76, 0x65, 0x6C, 0x6F, 0x70, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0xCF, 0x08, 0x6D, 0x61, 0x74, 
36489
  0x68, 0x2F, 0x74, 0x61, 0x6E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 
36490
  0x13, 0x01, 0xDA, 0x06, 0xD8, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x74, 0x61, 0x6E, 0xDA, 0x08, 
36491
  0xCE, 0x27, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x74, 0x61, 0x6E, 0x20, 0x78, 0x29, 0x0A, 0x0A, 
36492
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x6E, 0x67, 
36493
  0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x83, 0xAD, 0xD3, 0x03, 0xDA, 0x03, 
36494
  0xD2, 0x03, 0x00, 0xDA, 0x18, 0x82, 0xE0, 0x01, 0xDA, 0x06, 0xDA, 0x83, 0xA3, 0xDA, 0x08, 0xCE, 
36495
  0x3B, 0x28, 0x6D, 0x69, 0x6E, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x52, 
36496
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x65, 0x72, 
36497
  0x69, 0x63, 0x20, 0x6D, 0x69, 0x6E, 0x69, 0x6D, 0x75, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 
36498
  0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0xCF, 0x02, 0x2F, 0x3D, 
36499
  0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x80, 0x99, 0x01, 0xDA, 0x06, 0xD7, 0x00, 
36500
  0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x08, 0x00, 
36501
  0x03, 0xCE, 0x02, 0x2F, 0x3D, 0xDA, 0x18, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x0C, 0x06, 0x00, 
36502
  0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x13, 0xCE, 0x01, 0x2F, 0x3D, 0x01, 0x00, 0x00, 0x24, 
36503
  0x02, 0x01, 0x00, 0x1C, 0x02, 0x03, 0x00, 0x29, 0x03, 0x01, 0x00, 0x03, 0x03, 0x00, 0x00, 0x24, 
36504
  0x02, 0x01, 0x01, 0x1C, 0x02, 0x05, 0x00, 0x29, 0x03, 0x01, 0x00, 0x3B, 0x04, 0x00, 0x00, 0x0B, 
36505
  0x03, 0x03, 0x04, 0x03, 0x03, 0x00, 0x00, 0x3B, 0x03, 0x00, 0x00, 0x29, 0x05, 0x01, 0x00, 0x38, 
36506
  0x04, 0x00, 0x05, 0x0B, 0x03, 0x03, 0x04, 0x05, 0x05, 0x05, 0x01, 0x23, 0x02, 0x05, 0x01, 0x1C, 
36507
  0x02, 0xFC, 0xFF, 0x03, 0x03, 0x00, 0x00, 0xDA, 0x3A, 0x00, 0x08, 0x00, 0xDA, 0x1E, 0x00, 0x08, 
36508
  0x01, 0xDA, 0x3B, 0x00, 0x08, 0x02, 0xDA, 0x84, 0x31, 0x2A, 0x04, 0x00, 0x00, 0x30, 0x04, 0x00, 
36509
  0x00, 0x32, 0x01, 0x00, 0x00, 0x43, 0x03, 0x00, 0x00, 0x2A, 0x05, 0x01, 0x00, 0x31, 0x05, 0x00, 
36510
  0x03, 0x43, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x80, 0x99, 0x38, 0x00, 0x38, 0x00, 0x38, 
36511
  0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0xDA, 0x08, 0xCE, 0x2B, 0x28, 0x2F, 
36512
  0x3D, 0x20, 0x78, 0x20, 0x26, 0x20, 0x6E, 0x73, 0x29, 0x0A, 0x0A, 0x53, 0x68, 0x6F, 0x72, 0x74, 
36513
  0x68, 0x61, 0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x28, 0x73, 0x65, 0x74, 0x20, 0x78, 0x20, 
36514
  0x28, 0x2F, 0x20, 0x78, 0x20, 0x6E, 0x29, 0x29, 0x2E, 0xDA, 0x3D, 0xCB, 0xCF, 0x04, 0x6E, 0x6F, 
36515
  0x74, 0x3D, 0xD3, 0x02, 0xDA, 0x06, 0xDA, 0x82, 0xB2, 0xDA, 0x08, 0xCE, 0x48, 0x28, 0x6E, 0x6F, 
36516
  0x74, 0x3D, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 
36517
  0x69, 0x66, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 
36518
  0x20, 0x78, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x65, 0x71, 0x75, 0x61, 
36519
  0x6C, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x62, 0x6F, 0x6F, 
36520
  0x6C, 0x65, 0x61, 0x6E, 0x2E, 0xCF, 0x09, 0x66, 0x66, 0x69, 0x2F, 0x77, 0x72, 0x69, 0x74, 0x65, 
36521
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x0C, 0x85, 0x67, 0x01, 0xDA, 0x06, 0xD8, 0x09, 
36522
  0x66, 0x66, 0x69, 0x2F, 0x77, 0x72, 0x69, 0x74, 0x65, 0xDA, 0x08, 0xCE, 0x81, 0x25, 0x28, 0x66, 
36523
  0x66, 0x69, 0x2F, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x66, 0x66, 0x69, 0x2D, 0x74, 0x79, 0x70, 
36524
  0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x62, 0x75, 0x66, 0x66, 
36525
  0x65, 0x72, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x29, 0x0A, 0x0A, 0x41, 0x70, 0x70, 0x65, 0x6E, 
36526
  0x64, 0x20, 0x61, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 
36527
  0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x73, 0x75, 0x63, 0x68, 
36528
  0x20, 0x61, 0x73, 0x20, 0x69, 0x74, 0x20, 0x77, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x61, 0x70, 0x70, 
36529
  0x65, 0x61, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x2E, 0x20, 0x54, 
36530
  0x68, 0x69, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 
36531
  0x74, 0x6F, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x73, 
36532
  0x20, 0x74, 0x6F, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 
36533
  0x68, 0x65, 0x20, 0x66, 0x66, 0x69, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x65, 0x6E, 0x64, 0x20, 
36534
  0x43, 0x2F, 0x43, 0x2B, 0x2B, 0x2F, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x73, 0x74, 0x72, 
36535
  0x75, 0x63, 0x74, 0x73, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 
36536
  0x74, 0x77, 0x6F, 0x72, 0x6B, 0x20, 0x6F, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x66, 0x69, 0x6C, 0x65, 
36537
  0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6D, 0x6F, 0x64, 
36538
  0x69, 0x66, 0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 0x72, 0x20, 0x61, 
36539
  0x20, 0x6E, 0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x66, 0x20, 0x6F, 
36540
  0x6E, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6C, 0x69, 
36541
  0x65, 0x64, 0x2E, 0xCF, 0x08, 0x6F, 0x73, 0x2F, 0x73, 0x70, 0x61, 0x77, 0x6E, 0xD3, 0x03, 0xDA, 
36542
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x84, 0xEC, 0x01, 0xDA, 0x06, 0xD8, 0x08, 0x6F, 0x73, 0x2F, 
36543
  0x73, 0x70, 0x61, 0x77, 0x6E, 0xDA, 0x08, 0xCE, 0x82, 0x42, 0x28, 0x6F, 0x73, 0x2F, 0x73, 0x70, 
36544
  0x61, 0x77, 0x6E, 0x20, 0x61, 0x72, 0x67, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x66, 0x6C, 
36545
  0x61, 0x67, 0x73, 0x20, 0x65, 0x6E, 0x76, 0x29, 0x0A, 0x0A, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 
36546
  0x65, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x6F, 0x6E, 0x20, 0x74, 
36547
  0x68, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 
36548
  0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x74, 0x6F, 
36549
  0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x2E, 0x20, 0x4F, 0x74, 
36550
  0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2C, 0x20, 0x74, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x74, 
36551
  0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 
36552
  0x73, 0x20, 0x61, 0x73, 0x20, 0x60, 0x6F, 0x73, 0x2F, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 
36553
  0x60, 0x2E, 0x20, 0x44, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x77, 0x61, 0x69, 0x74, 
36554
  0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 
36555
  0x2E, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 
36556
  0x65, 0x20, 0x3A, 0x69, 0x6E, 0x2C, 0x20, 0x3A, 0x6F, 0x75, 0x74, 0x2C, 0x20, 0x61, 0x6E, 0x64, 
36557
  0x20, 0x3A, 0x65, 0x72, 0x72, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 
36558
  0x65, 0x20, 0x60, 0x65, 0x6E, 0x76, 0x60, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 
36559
  0x2C, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x70, 
36560
  0x61, 0x73, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 
36561
  0x72, 0x64, 0x20, 0x60, 0x3A, 0x70, 0x69, 0x70, 0x65, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x67, 0x65, 
36562
  0x74, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x73, 0x74, 
36563
  0x61, 0x6E, 0x64, 0x61, 0x72, 0x64, 0x20, 0x49, 0x4F, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 
36564
  0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 
36565
  0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x66, 0x72, 0x6F, 
36566
  0x6D, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6E, 0x20, 0x74, 0x6F, 
36567
  0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x76, 
36568
  0x61, 0x6C, 0x75, 0x65, 0x20, 0x60, 0x70, 0x72, 0x6F, 0x63, 0x60, 0x20, 0x68, 0x61, 0x73, 0x20, 
36569
  0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x65, 0x6C, 0x64, 0x73, 0x20, 0x3A, 0x69, 0x6E, 0x2C, 0x20, 
36570
  0x3A, 0x6F, 0x75, 0x74, 0x2C, 0x20, 0x3A, 0x65, 0x72, 0x72, 0x2C, 0x20, 0x3A, 0x72, 0x65, 0x74, 
36571
  0x75, 0x72, 0x6E, 0x2D, 0x63, 0x6F, 0x64, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 
36572
  0x65, 0x20, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x66, 0x69, 0x65, 
36573
  0x6C, 0x64, 0x20, 0x3A, 0x70, 0x69, 0x64, 0x20, 0x6F, 0x6E, 0x20, 0x75, 0x6E, 0x69, 0x78, 0x2D, 
36574
  0x6C, 0x69, 0x6B, 0x65, 0x20, 0x70, 0x6C, 0x61, 0x74, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x2E, 0x20, 
36575
  0x55, 0x73, 0x65, 0x20, 0x60, 0x28, 0x6F, 0x73, 0x2F, 0x70, 0x72, 0x6F, 0x63, 0x2D, 0x77, 0x61, 
36576
  0x69, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x29, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x6A, 
36577
  0x6F, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 
36578
  0x73, 0x73, 0x20, 0x6F, 0x72, 0x20, 0x60, 0x28, 0x6F, 0x73, 0x2F, 0x70, 0x72, 0x6F, 0x63, 0x2D, 
36579
  0x6B, 0x69, 0x6C, 0x6C, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x29, 0x60, 0x2E, 0xCF, 0x09, 0x77, 0x68, 
36580
  0x65, 0x6E, 0x2D, 0x77, 0x69, 0x74, 0x68, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 
36581
  0x81, 0x84, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x09, 0x01, 0x01, 0xCD, 
36582
  0x7F, 0xFF, 0xFF, 0xFF, 0x03, 0x17, 0x00, 0x06, 0xCE, 0x09, 0x77, 0x68, 0x65, 0x6E, 0x2D, 0x77, 
36583
  0x69, 0x74, 0x68, 0xDA, 0x18, 0xDA, 0x81, 0xF0, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0B, 
36584
  0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x0C, 0x2B, 0x00, 0x05, 0xCE, 0x05, 0x64, 0x65, 0x66, 
36585
  0x65, 0x72, 0xDA, 0x18, 0xDA, 0x49, 0xDA, 0x82, 0xAE, 0xDA, 0x81, 0x5E, 0xDA, 0x81, 0xEF, 0xDA, 
36586
  0x4A, 0xDA, 0x82, 0xB0, 0xDA, 0x80, 0xBE, 0xDA, 0x82, 0xD0, 0xDA, 0x80, 0xBF, 0xDA, 0x82, 0xD1, 
36587
  0xDA, 0x4F, 0xDA, 0x50, 0x00, 0x2B, 0x00, 0xDA, 0x82, 0xD3, 0x00, 0x2B, 0x01, 0xDA, 0x82, 0xB5, 
36588
  0x00, 0x2B, 0x02, 0xCF, 0x05, 0x64, 0x65, 0x66, 0x65, 0x72, 0x02, 0x2B, 0x04, 0xDA, 0x80, 0xFB, 
36589
  0x05, 0x2B, 0x05, 0xDA, 0x63, 0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 0x19, 0x04, 0x03, 
36590
  0x00, 0x2A, 0x05, 0x00, 0x00, 0x33, 0x03, 0x05, 0x00, 0x19, 0x05, 0x03, 0x00, 0x44, 0x03, 0x00, 
36591
  0x00, 0x2A, 0x07, 0x01, 0x00, 0x30, 0x07, 0x03, 0x00, 0x32, 0x01, 0x00, 0x00, 0x43, 0x06, 0x00, 
36592
  0x00, 0x2A, 0x07, 0x02, 0x00, 0x2A, 0x08, 0x03, 0x00, 0x31, 0x07, 0x06, 0x08, 0x43, 0x03, 0x00, 
36593
  0x00, 0x2A, 0x07, 0x04, 0x00, 0x31, 0x07, 0x04, 0x03, 0x43, 0x06, 0x00, 0x00, 0x2A, 0x07, 0x05, 
36594
  0x00, 0x30, 0x07, 0x04, 0x00, 0x43, 0x03, 0x00, 0x00, 0x2A, 0x08, 0x04, 0x00, 0x31, 0x08, 0x05, 
36595
  0x03, 0x43, 0x07, 0x00, 0x00, 0x2A, 0x08, 0x06, 0x00, 0x30, 0x08, 0x04, 0x00, 0x43, 0x03, 0x00, 
36596
  0x00, 0x2A, 0x09, 0x07, 0x00, 0x2A, 0x0A, 0x08, 0x00, 0x31, 0x09, 0x03, 0x0A, 0x43, 0x08, 0x00, 
36597
  0x00, 0x2A, 0x09, 0x09, 0x00, 0x31, 0x09, 0x05, 0x04, 0x43, 0x03, 0x00, 0x00, 0x2A, 0x0A, 0x0A, 
36598
  0x00, 0x31, 0x0A, 0x08, 0x05, 0x2F, 0x03, 0x00, 0x00, 0x43, 0x09, 0x00, 0x00, 0x2A, 0x08, 0x0B, 
36599
  0x00, 0x31, 0x08, 0x06, 0x07, 0x30, 0x00, 0x09, 0x00, 0x43, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 
36600
  0x00, 0x81, 0x44, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x05, 
36601
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
36602
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
36603
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
36604
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
36605
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDA, 0x77, 0x00, 0x17, 0x01, 0xDA, 0x82, 0xB5, 
36606
  0x01, 0x17, 0x03, 0xCF, 0x07, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x03, 0x17, 0x04, 0xCF, 
36607
  0x04, 0x63, 0x74, 0x6F, 0x72, 0x05, 0x17, 0x05, 0xCF, 0x04, 0x64, 0x74, 0x6F, 0x72, 0x06, 0x17, 
36608
  0x00, 0xDA, 0x84, 0x46, 0x08, 0x0D, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x32, 
36609
  0x3B, 0x02, 0x00, 0x00, 0x19, 0x03, 0x02, 0x00, 0x3B, 0x02, 0x00, 0x01, 0x19, 0x04, 0x02, 0x00, 
36610
  0x3B, 0x02, 0x00, 0x02, 0x19, 0x05, 0x02, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x30, 0x03, 0x04, 0x00, 
36611
  0x44, 0x02, 0x00, 0x00, 0x1C, 0x05, 0x03, 0x00, 0x19, 0x06, 0x05, 0x00, 0x1A, 0x02, 0x00, 0x00, 
36612
  0x2A, 0x06, 0x00, 0x00, 0x30, 0x06, 0x03, 0x00, 0x43, 0x06, 0x00, 0x00, 0x2F, 0x06, 0x00, 0x00, 
36613
  0x32, 0x01, 0x00, 0x00, 0x2A, 0x08, 0x01, 0x00, 0x33, 0x07, 0x08, 0x00, 0x2A, 0x08, 0x02, 0x00, 
36614
  0x31, 0x08, 0x02, 0x07, 0x43, 0x06, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0x81, 0x84, 0x01, 0x00, 
36615
  0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x04, 0x03, 0x00, 0x03, 0x01, 
36616
  0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x14, 0x00, 0x14, 0x00, 0x07, 0x00, 0x07, 0x00, 
36617
  0x07, 0x00, 0x07, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x08, 0xCE, 0x80, 
36618
  0xA0, 0x28, 0x77, 0x68, 0x65, 0x6E, 0x2D, 0x77, 0x69, 0x74, 0x68, 0x20, 0x5B, 0x62, 0x69, 0x6E, 
36619
  0x64, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x74, 0x6F, 0x72, 0x20, 0x64, 0x74, 0x6F, 0x72, 0x5D, 0x20, 
36620
  0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 
36621
  0x20, 0x74, 0x6F, 0x20, 0x77, 0x69, 0x74, 0x68, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x69, 0x66, 
36622
  0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x73, 0x20, 0x66, 0x61, 0x6C, 0x73, 
36623
  0x65, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x69, 0x6C, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 
36624
  0x73, 0x0A, 0x6E, 0x69, 0x6C, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x65, 0x76, 
36625
  0x61, 0x6C, 0x75, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6F, 0x64, 
36626
  0x79, 0x2E, 0x20, 0x4F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2C, 0x20, 0x74, 0x68, 
36627
  0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x77, 0x69, 0x74, 0x68, 0x60, 
36628
  0x2E, 0xDA, 0x3D, 0xCB, 0xCF, 0x04, 0x64, 0x65, 0x66, 0x6E, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 
36629
  0x00, 0xDA, 0x18, 0x0A, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x02, 0xFF, 0x00, 0x00, 0x17, 0x01, 
36630
  0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x0D, 0x36, 0x00, 0x01, 0x0C, 0xCE, 0x04, 0x64, 0x65, 0x66, 
36631
  0x6E, 0xDA, 0x18, 0xDA, 0x80, 0xC5, 0xCE, 0x01, 0x28, 0xD8, 0x06, 0x62, 0x75, 0x66, 0x66, 0x65, 
36632
  0x72, 0xDA, 0x81, 0x82, 0xD8, 0x12, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 
36633
  0x68, 0x2D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0xCE, 0x02, 0x25, 0x6A, 0xD8, 0x0D, 0x62, 0x75, 
36634
  0x66, 0x66, 0x65, 0x72, 0x2F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0xCE, 0x03, 0x29, 0x0A, 0x0A, 
36635
  0xDA, 0x80, 0xF5, 0xDA, 0x81, 0x8C, 0xDA, 0x82, 0xE9, 0xDA, 0x82, 0xAE, 0xDA, 0x4A, 0x00, 0x36, 
36636
  0x00, 0xDA, 0x83, 0x0F, 0x00, 0x36, 0x01, 0xDA, 0x83, 0x10, 0x00, 0x36, 0x02, 0xDA, 0x84, 0x53, 
36637
  0x01, 0x36, 0x04, 0xDA, 0x80, 0x84, 0x03, 0x36, 0x06, 0xCF, 0x09, 0x6D, 0x6F, 0x64, 0x69, 0x66, 
36638
  0x69, 0x65, 0x72, 0x73, 0x04, 0x36, 0x07, 0xCF, 0x06, 0x64, 0x6F, 0x63, 0x73, 0x74, 0x72, 0x06, 
36639
  0x36, 0x09, 0xCF, 0x06, 0x66, 0x73, 0x74, 0x61, 0x72, 0x74, 0x0A, 0x36, 0x0B, 0xDA, 0x83, 0xBE, 
36640
  0x0C, 0x36, 0x0D, 0xDA, 0x80, 0xAB, 0x0D, 0x36, 0x0E, 0xDA, 0x81, 0xFF, 0x0F, 0x36, 0x10, 0xCF, 
36641
  0x06, 0x61, 0x72, 0x67, 0x6C, 0x65, 0x6E, 0x14, 0x36, 0x12, 0xDA, 0x82, 0x3B, 0x3D, 0x03, 0x01, 
36642
  0x00, 0x19, 0x04, 0x03, 0x00, 0x3E, 0x05, 0x00, 0x00, 0x19, 0x06, 0x05, 0x00, 0x2A, 0x07, 0x00, 
36643
  0x00, 0x2E, 0x08, 0x00, 0x00, 0x19, 0x09, 0x08, 0x00, 0x29, 0x0A, 0x00, 0x00, 0x2F, 0x0A, 0x00, 
36644
  0x00, 0x33, 0x0A, 0x09, 0x00, 0x19, 0x0B, 0x0A, 0x00, 0x38, 0x0C, 0x01, 0x0B, 0x19, 0x0D, 0x0C, 
36645
  0x00, 0x29, 0x0E, 0x00, 0x00, 0x3D, 0x0F, 0x0D, 0x00, 0x19, 0x10, 0x0F, 0x00, 0x2A, 0x11, 0x01, 
36646
  0x00, 0x30, 0x11, 0x00, 0x00, 0x2A, 0x12, 0x02, 0x00, 0x33, 0x11, 0x12, 0x00, 0x19, 0x12, 0x11, 
36647
  0x00, 0x21, 0x13, 0x0E, 0x10, 0x1C, 0x13, 0x0C, 0x00, 0x2A, 0x14, 0x03, 0x00, 0x30, 0x12, 0x14, 
36648
  0x00, 0x2A, 0x15, 0x04, 0x00, 0x33, 0x14, 0x15, 0x00, 0x38, 0x14, 0x0D, 0x0E, 0x2A, 0x15, 0x05, 
36649
  0x00, 0x31, 0x12, 0x15, 0x14, 0x2A, 0x16, 0x06, 0x00, 0x33, 0x15, 0x16, 0x00, 0x05, 0x0E, 0x0E, 
36650
  0x01, 0x1A, 0xF4, 0xFF, 0xFF, 0x2A, 0x13, 0x07, 0x00, 0x31, 0x12, 0x13, 0x07, 0x2A, 0x14, 0x08, 
36651
  0x00, 0x33, 0x13, 0x14, 0x00, 0x30, 0x06, 0x13, 0x00, 0x2A, 0x15, 0x09, 0x00, 0x33, 0x14, 0x15, 
36652
  0x00, 0x30, 0x01, 0x0B, 0x00, 0x2A, 0x15, 0x0A, 0x00, 0x33, 0x13, 0x15, 0x00, 0x2A, 0x16, 0x0B, 
36653
  0x00, 0x30, 0x16, 0x00, 0x00, 0x32, 0x13, 0x00, 0x00, 0x43, 0x15, 0x00, 0x00, 0x2A, 0x16, 0x0C, 
36654
  0x00, 0x30, 0x16, 0x00, 0x00, 0x32, 0x06, 0x00, 0x00, 0x2F, 0x15, 0x00, 0x00, 0x43, 0x13, 0x00, 
36655
  0x00, 0x03, 0x13, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x01, 0x01, 0x01, 0x04, 0x1C, 
36656
  0x01, 0x0A, 0xCE, 0x05, 0x72, 0x65, 0x63, 0x75, 0x72, 0xDA, 0x18, 0xDA, 0x2C, 0xDA, 0x80, 0x8B, 
36657
  0xDA, 0x2D, 0xDA, 0x81, 0x8C, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x83, 0x0F, 0xBF, 0xFF, 0x00, 0x01, 
36658
  0xDA, 0x83, 0x10, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x84, 0x53, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x80, 
36659
  0x84, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x84, 0x5E, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x84, 0x5F, 0x00, 
36660
  0x1C, 0x00, 0xDA, 0x80, 0x90, 0x00, 0x1C, 0x01, 0xCF, 0x05, 0x72, 0x65, 0x63, 0x75, 0x72, 0x03, 
36661
  0x1C, 0x03, 0xCF, 0x03, 0x69, 0x74, 0x68, 0x07, 0x1C, 0x04, 0xDA, 0x31, 0x2C, 0x01, 0x00, 0x00, 
36662
  0x2B, 0x03, 0x00, 0x01, 0x38, 0x02, 0x03, 0x00, 0x19, 0x03, 0x02, 0x00, 0x2F, 0x03, 0x00, 0x00, 
36663
  0x2A, 0x04, 0x00, 0x00, 0x33, 0x02, 0x04, 0x00, 0x19, 0x04, 0x02, 0x00, 0x2A, 0x06, 0x01, 0x00, 
36664
  0x23, 0x05, 0x04, 0x06, 0x1C, 0x05, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2A, 0x07, 0x02, 0x00, 
36665
  0x23, 0x06, 0x04, 0x07, 0x1C, 0x06, 0x03, 0x00, 0x2D, 0x03, 0x00, 0x07, 0x1A, 0x05, 0x00, 0x00, 
36666
  0x2B, 0x07, 0x00, 0x06, 0x30, 0x07, 0x03, 0x00, 0x2A, 0x08, 0x03, 0x00, 0x33, 0x07, 0x08, 0x00, 
36667
  0x2B, 0x07, 0x00, 0x04, 0x21, 0x06, 0x00, 0x07, 0x1C, 0x06, 0x04, 0x00, 0x05, 0x07, 0x00, 0x01, 
36668
  0x2F, 0x07, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x15, 0x07, 
36669
  0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x09, 0x01, 0x0D, 
36670
  0x00, 0x0D, 0x00, 0x09, 0x00, 0x09, 0x03, 0x11, 0x00, 0x11, 0x00, 0x0D, 0x01, 0x0F, 0xBF, 0xFF, 
36671
  0x0D, 0x02, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x01, 0x11, 0x00, 0x11, 0x00, 0x0D, 0x00, 
36672
  0x22, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x0D, 0x11, 0x0E, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x01, 
36673
  0x05, 0x02, 0x07, 0xBF, 0xFF, 0x05, 0x0B, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x0F, 
36674
  0x00, 0x05, 0x02, 0x05, 0x01, 0x11, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
36675
  0x00, 0x05, 0x01, 0x0C, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x1F, 
36676
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x12, 0xBF, 0xFD, 0x05, 0x04, 0x1B, 0x00, 
36677
  0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x02, 0x29, 0x00, 0x29, 0x00, 
36678
  0x29, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
36679
  0x05, 0x00, 0x05, 0x00, 0x05, 0xD2, 0x00, 0x00, 0x00, 0xDA, 0x08, 0xCE, 0x57, 0x28, 0x64, 0x65, 
36680
  0x66, 0x6E, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x26, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x29, 0x0A, 
36681
  0x0A, 0x44, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 
36682
  0x6F, 0x6E, 0x2E, 0x20, 0x45, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6C, 0x65, 0x6E, 0x74, 0x20, 0x74, 
36683
  0x6F, 0x20, 0x60, 0x28, 0x64, 0x65, 0x66, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x28, 0x66, 0x6E, 
36684
  0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x5B, 0x61, 0x72, 0x67, 0x73, 0x5D, 0x20, 0x2E, 0x2E, 0x2E, 
36685
  0x29, 0x29, 0x60, 0x2E, 0xDA, 0x3D, 0xCB, 0xCF, 0x08, 0x66, 0x66, 0x69, 0x2F, 0x73, 0x69, 0x7A, 
36686
  0x65, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x0C, 0x81, 0xCD, 0x01, 0xDA, 0x06, 0xD8, 
36687
  0x08, 0x66, 0x66, 0x69, 0x2F, 0x73, 0x69, 0x7A, 0x65, 0xDA, 0x08, 0xCE, 0x36, 0x28, 0x66, 0x66, 
36688
  0x69, 0x2F, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x29, 0x0A, 0x0A, 0x47, 0x65, 
36689
  0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6E, 
36690
  0x20, 0x66, 0x66, 0x69, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x62, 0x79, 0x74, 
36691
  0x65, 0x73, 0x2E, 0xCF, 0x06, 0x2A, 0x61, 0x72, 0x67, 0x73, 0x2A, 0xD3, 0x04, 0xDA, 0x84, 0x25, 
36692
  0xCB, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8F, 0x26, 0x01, 0xDA, 0x06, 0xD0, 0x04, 0x61, 
36693
  0x72, 0x67, 0x73, 0xDA, 0x08, 0xCE, 0x4B, 0x44, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 
36694
  0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x69, 0x6C, 
36695
  0x6C, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 
36696
  0x64, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 
36697
  0x20, 0x61, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x73, 0x74, 0x61, 0x72, 
36698
  0x74, 0x2E, 0xCF, 0x0E, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x76, 0x65, 0x72, 
36699
  0x73, 0x65, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0xFA, 0x81, 0x1D, 0x01, 0xDA, 
36700
  0x06, 0xD8, 0x0E, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 
36701
  0x65, 0xDA, 0x08, 0xCE, 0x4D, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x76, 
36702
  0x65, 0x72, 0x73, 0x65, 0x20, 0x73, 0x74, 0x72, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 
36703
  0x6E, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x61, 0x74, 
36704
  0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x64, 
36705
  0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x73, 0x74, 0x72, 
36706
  0x60, 0x2E, 0xCF, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
36707
  0x00, 0xDA, 0x18, 0x86, 0x0B, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x09, 
36708
  0x03, 0x03, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x08, 0x00, 0x06, 0xCE, 0x06, 0x75, 0x70, 0x64, 
36709
  0x61, 0x74, 0x65, 0xDA, 0x18, 0x00, 0x08, 0x00, 0xDA, 0x24, 0x00, 0x08, 0x01, 0xDA, 0x81, 0xD2, 
36710
  0x00, 0x08, 0x02, 0xDA, 0x80, 0xE8, 0x00, 0x08, 0x03, 0xDA, 0x80, 0xAB, 0x00, 0x08, 0x04, 0xDA, 
36711
  0x84, 0x75, 0x01, 0x08, 0x06, 0xDA, 0x83, 0x9A, 0x39, 0x05, 0x00, 0x01, 0x19, 0x06, 0x05, 0x00, 
36712
  0x2F, 0x06, 0x00, 0x00, 0x32, 0x03, 0x00, 0x00, 0x33, 0x07, 0x02, 0x00, 0x19, 0x08, 0x00, 0x00, 
36713
  0x3A, 0x08, 0x01, 0x07, 0x03, 0x08, 0x00, 0x00, 0x86, 0x10, 0x0C, 0x00, 0x03, 0x01, 0x0F, 0x00, 
36714
  0x0F, 0x00, 0x0F, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x08, 0xCE, 0x80, 0xF1, 0x28, 0x75, 
36715
  0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x64, 0x73, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x66, 0x75, 0x6E, 
36716
  0x63, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x46, 0x6F, 0x72, 0x20, 0x61, 
36717
  0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x69, 0x6E, 0x20, 0x64, 0x61, 
36718
  0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x60, 0x64, 0x73, 
36719
  0x60, 0x2C, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x20, 0x69, 0x74, 0x73, 0x20, 0x63, 
36720
  0x6F, 0x72, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x76, 0x61, 0x6C, 
36721
  0x75, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x72, 0x65, 0x73, 0x75, 
36722
  0x6C, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x66, 
36723
  0x75, 0x6E, 0x63, 0x60, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x76, 0x61, 0x6C, 
36724
  0x75, 0x65, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x61, 0x72, 0x67, 0x73, 0x60, 0x20, 0x61, 0x72, 
36725
  0x65, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x79, 
36726
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x0A, 
36727
  0x61, 0x6C, 0x6F, 0x6E, 0x67, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x66, 0x75, 0x6E, 0x63, 0x60, 0x20, 
36728
  0x61, 0x73, 0x20, 0x77, 0x65, 0x6C, 0x6C, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
36729
  0x20, 0x60, 0x64, 0x73, 0x60, 0x2C, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x2E, 0xCF, 
36730
  0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0x78, 0x70, 0x6D, 0x31, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
36731
  0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 0x18, 0x01, 0xDA, 0x06, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 
36732
  0x2F, 0x65, 0x78, 0x70, 0x6D, 0x31, 0xDA, 0x08, 0xCE, 0x34, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 
36733
  0x65, 0x78, 0x70, 0x6D, 0x31, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
36734
  0x73, 0x20, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6F, 0x77, 0x65, 0x72, 
36735
  0x20, 0x6F, 0x66, 0x20, 0x78, 0x20, 0x6D, 0x69, 0x6E, 0x75, 0x73, 0x20, 0x31, 0x2E, 0xCF, 0x12, 
36736
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x61, 0x73, 0x63, 0x69, 0x69, 0x2D, 0x75, 0x70, 0x70, 
36737
  0x65, 0x72, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0xFA, 0x81, 0x0C, 0x01, 0xDA, 
36738
  0x06, 0xD8, 0x12, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x61, 0x73, 0x63, 0x69, 0x69, 0x2D, 
36739
  0x75, 0x70, 0x70, 0x65, 0x72, 0xDA, 0x08, 0xCE, 0x80, 0xBE, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 
36740
  0x67, 0x2F, 0x61, 0x73, 0x63, 0x69, 0x69, 0x2D, 0x75, 0x70, 0x70, 0x65, 0x72, 0x20, 0x73, 0x74, 
36741
  0x72, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 
36742
  0x77, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 
36743
  0x6C, 0x6C, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x72, 0x65, 0x70, 
36744
  0x6C, 0x61, 0x63, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 
36745
  0x70, 0x70, 0x65, 0x72, 0x63, 0x61, 0x73, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 
36746
  0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x6D, 0x73, 0x65, 0x6C, 0x76, 0x65, 0x73, 0x20, 0x69, 
36747
  0x6E, 0x20, 0x41, 0x53, 0x43, 0x49, 0x49, 0x2E, 0x20, 0x44, 0x6F, 0x65, 0x73, 0x20, 0x6F, 0x6E, 
36748
  0x6C, 0x79, 0x20, 0x61, 0x20, 0x76, 0x65, 0x72, 0x79, 0x20, 0x73, 0x69, 0x6D, 0x70, 0x6C, 0x65, 
36749
  0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2C, 0x20, 0x6D, 0x65, 0x61, 
36750
  0x6E, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x6F, 0x20, 0x75, 0x6E, 0x69, 0x63, 0x6F, 0x64, 0x65, 0x20, 
36751
  0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 0x74, 0x2E, 0xCF, 0x0F, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 
36752
  0x74, 0x6F, 0x2D, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
36753
  0xDA, 0x82, 0xA5, 0x81, 0x4E, 0x01, 0xDA, 0x06, 0xDA, 0x84, 0x1A, 0xDA, 0x08, 0xCE, 0x80, 0x84, 
36754
  0x28, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x74, 0x6F, 0x2D, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 
36755
  0x20, 0x74, 0x61, 0x62, 0x29, 0x0A, 0x0A, 0x43, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x20, 0x61, 
36756
  0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 
36757
  0x63, 0x74, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 
36758
  0x77, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x66, 
36759
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 
36760
  0x20, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x63, 0x63, 0x6F, 0x75, 
36761
  0x6E, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 0x61, 0x62, 
36762
  0x6C, 0x65, 0x73, 0x2E, 0xCF, 0x0C, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x62, 0x79, 0x74, 
36763
  0x65, 0x73, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0xFA, 0x80, 0xDD, 0x01, 0xDA, 
36764
  0x06, 0xD8, 0x0C, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x62, 0x79, 0x74, 0x65, 0x73, 0xDA, 
36765
  0x08, 0xCE, 0x57, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x62, 0x79, 0x74, 0x65, 0x73, 
36766
  0x20, 0x73, 0x74, 0x72, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 
36767
  0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 
36768
  0x72, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 
36769
  0x62, 0x79, 0x74, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x74, 
36770
  0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2E, 0xCF, 0x07, 0x65, 0x76, 0x2F, 0x67, 
36771
  0x69, 0x76, 0x65, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x40, 0x83, 0xD2, 0x01, 0xDA, 
36772
  0x06, 0xD8, 0x07, 0x65, 0x76, 0x2F, 0x67, 0x69, 0x76, 0x65, 0xDA, 0x08, 0xCE, 0x80, 0xA4, 0x28, 
36773
  0x65, 0x76, 0x2F, 0x67, 0x69, 0x76, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 
36774
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x61, 0x20, 
36775
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 
36776
  0x65, 0x6C, 0x2C, 0x20, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 
36777
  0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 
36778
  0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 
36779
  0x69, 0x73, 0x20, 0x66, 0x75, 0x6C, 0x6C, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
36780
  0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x69, 0x66, 0x20, 
36781
  0x74, 0x68, 0x65, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x65, 
36782
  0x64, 0x65, 0x64, 0x2C, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 
36783
  0x73, 0x65, 0x2E, 0xCF, 0x0C, 0x2A, 0x65, 0x78, 0x69, 0x74, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 
36784
  0x2A, 0xD3, 0x04, 0xDA, 0x84, 0x25, 0xCB, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x84, 0xC0, 
36785
  0x01, 0xDA, 0x06, 0xDA, 0x82, 0x17, 0xDA, 0x08, 0xCE, 0x60, 0x53, 0x65, 0x74, 0x20, 0x74, 0x68, 
36786
  0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x66, 
36787
  0x72, 0x6F, 0x6D, 0x20, 0x60, 0x72, 0x75, 0x6E, 0x2D, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 
36788
  0x60, 0x20, 0x75, 0x70, 0x6F, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x78, 0x69, 0x74, 0x2E, 0x20, 
36789
  0x42, 0x79, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x2C, 0x20, 0x60, 0x72, 0x75, 0x6E, 
36790
  0x2D, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x60, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 
36791
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xCF, 0x0C, 0x2A, 0x6D, 0x61, 0x63, 
36792
  0x72, 0x6F, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x2A, 0xD3, 0x04, 0xDA, 0x84, 0x25, 0xCB, 0xDA, 0x03, 
36793
  0xD2, 0x03, 0x00, 0xDA, 0x18, 0x84, 0xC3, 0x01, 0xDA, 0x06, 0xD0, 0x0A, 0x6D, 0x61, 0x63, 0x72, 
36794
  0x6F, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0xDA, 0x08, 0xCE, 0x42, 0x49, 0x6E, 0x73, 0x69, 0x64, 0x65, 
36795
  0x20, 0x61, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2C, 0x20, 0x69, 0x73, 0x20, 0x62, 0x6F, 0x75, 
36796
  0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 
36797
  0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x6E, 0x76, 0x6F, 0x6B, 
36798
  0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0xCF, 0x04, 0x2D, 0x3F, 
36799
  0x3E, 0x3E, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x85, 0x23, 0x01, 0xDA, 0x06, 
36800
  0xD7, 0x00, 0xCD, 0x00, 0xFD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 
36801
  0x05, 0x00, 0x01, 0x04, 0xCE, 0x04, 0x2D, 0x3F, 0x3E, 0x3E, 0xDA, 0x18, 0xDA, 0x82, 0xDA, 0x00, 
36802
  0x05, 0x00, 0xDA, 0x1E, 0x00, 0x05, 0x01, 0xDA, 0x82, 0xE2, 0x00, 0x05, 0x02, 0xDA, 0x84, 0x9C, 
36803
  0x01, 0x05, 0x04, 0xDA, 0x82, 0xE3, 0x2E, 0x03, 0x00, 0x00, 0x19, 0x04, 0x03, 0x00, 0x31, 0x04, 
36804
  0x00, 0x01, 0x2A, 0x05, 0x00, 0x00, 0x34, 0x05, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0E, 
36805
  0x02, 0x02, 0x02, 0x09, 0x31, 0x00, 0x07, 0xDA, 0x82, 0xE4, 0xDA, 0x18, 0xDA, 0x2C, 0xDA, 0x80, 
36806
  0x8B, 0xDA, 0x82, 0xE5, 0xDA, 0x80, 0x8F, 0xDA, 0x49, 0xDA, 0x82, 0xE6, 0xDA, 0x82, 0xE7, 0xDA, 
36807
  0x4F, 0xDA, 0x82, 0xB4, 0x00, 0x31, 0x00, 0xDA, 0x82, 0xF4, 0x00, 0x31, 0x01, 0xDA, 0x80, 0xD8, 
36808
  0x00, 0x31, 0x02, 0xDA, 0x82, 0xE3, 0x17, 0x31, 0x05, 0xDA, 0x82, 0xF5, 0x19, 0x31, 0x06, 0xDA, 
36809
  0x31, 0x1C, 0x31, 0x07, 0xDA, 0x60, 0x24, 0x31, 0x08, 0xDA, 0x82, 0xF6, 0x2F, 0x01, 0x00, 0x00, 
36810
  0x2A, 0x05, 0x00, 0x00, 0x33, 0x04, 0x05, 0x00, 0x2A, 0x06, 0x01, 0x00, 0x23, 0x05, 0x06, 0x04, 
36811
  0x1C, 0x05, 0x0C, 0x00, 0x29, 0x06, 0x00, 0x00, 0x38, 0x04, 0x01, 0x06, 0x29, 0x06, 0x01, 0x00, 
36812
  0x30, 0x01, 0x06, 0x00, 0x2A, 0x07, 0x02, 0x00, 0x33, 0x06, 0x07, 0x00, 0x30, 0x04, 0x06, 0x00, 
36813
  0x2A, 0x08, 0x03, 0x00, 0x33, 0x07, 0x08, 0x00, 0x19, 0x03, 0x07, 0x00, 0x1A, 0x06, 0x00, 0x00, 
36814
  0x3E, 0x04, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x2A, 0x07, 0x03, 0x00, 0x33, 0x06, 0x07, 0x00, 
36815
  0x19, 0x03, 0x06, 0x00, 0x3B, 0x04, 0x03, 0x00, 0x19, 0x05, 0x04, 0x00, 0x3B, 0x04, 0x03, 0x01, 
36816
  0x19, 0x06, 0x04, 0x00, 0x2A, 0x07, 0x04, 0x00, 0x33, 0x04, 0x07, 0x00, 0x19, 0x07, 0x04, 0x00, 
36817
  0x2F, 0x05, 0x00, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x2F, 0x07, 0x00, 0x00, 0x3E, 0x09, 0x00, 0x00, 
36818
  0x31, 0x08, 0x06, 0x09, 0x2A, 0x0B, 0x05, 0x00, 0x33, 0x0A, 0x0B, 0x00, 0x19, 0x08, 0x0A, 0x00, 
36819
  0x30, 0x07, 0x00, 0x00, 0x44, 0x09, 0x00, 0x00, 0x30, 0x01, 0x08, 0x00, 0x2A, 0x0C, 0x06, 0x00, 
36820
  0x33, 0x0B, 0x0C, 0x00, 0x2A, 0x0D, 0x07, 0x00, 0x31, 0x0D, 0x07, 0x0B, 0x43, 0x0C, 0x00, 0x00, 
36821
  0x2A, 0x0D, 0x08, 0x00, 0x31, 0x0D, 0x09, 0x0C, 0x43, 0x0B, 0x00, 0x00, 0x03, 0x0B, 0x00, 0x00, 
36822
  0x85, 0x2B, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x14, 0x00, 0x14, 0x00, 0x10, 0x01, 0x19, 0x00, 
36823
  0x19, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 
36824
  0xFF, 0x10, 0x00, 0x10, 0x02, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFE, 0x10, 0x00, 
36825
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x03, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x01, 0x10, 0x00, 
36826
  0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x05, 0x00, 
36827
  0x05, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
36828
  0x05, 0x00, 0x05, 0x00, 0x05, 0x85, 0x2A, 0x03, 0x00, 0x03, 0x07, 0x03, 0x00, 0x03, 0x00, 0x03, 
36829
  0xDA, 0x08, 0xCE, 0x81, 0x29, 0x28, 0x2D, 0x3F, 0x3E, 0x3E, 0x20, 0x78, 0x20, 0x26, 0x20, 0x66, 
36830
  0x6F, 0x72, 0x6D, 0x73, 0x29, 0x0A, 0x0A, 0x53, 0x68, 0x6F, 0x72, 0x74, 0x20, 0x63, 0x69, 0x72, 
36831
  0x63, 0x75, 0x69, 0x74, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6D, 
36832
  0x61, 0x63, 0x72, 0x6F, 0x2E, 0x20, 0x49, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x73, 0x20, 0x78, 0x20, 
36833
  0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 
36834
  0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 
36835
  0x6F, 0x72, 0x6D, 0x0A, 0x69, 0x6E, 0x20, 0x60, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x60, 0x2C, 0x20, 
36836
  0x61, 0x6E, 0x64, 0x20, 0x69, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
36837
  0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 
36838
  0x6F, 0x72, 0x6D, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x63, 
36839
  0x6F, 0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x0A, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
36840
  0x73, 0x61, 0x6D, 0x65, 0x20, 0x6D, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x2C, 0x20, 0x61, 0x6E, 0x64, 
36841
  0x20, 0x73, 0x6F, 0x20, 0x6F, 0x6E, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x70, 0x69, 0x70, 0x65, 
36842
  0x6C, 0x69, 0x6E, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 
36843
  0x20, 0x6E, 0x69, 0x6C, 0x0A, 0x69, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 
36844
  0x6D, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x73, 
36845
  0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x0A, 0x55, 0x73, 0x65, 0x66, 0x75, 0x6C, 0x20, 0x66, 0x6F, 0x72, 
36846
  0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x69, 0x70, 0x65, 
36847
  0x6C, 0x69, 0x6E, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2E, 0xDA, 0x3D, 
36848
  0xCB, 0xCF, 0x0A, 0x66, 0x66, 0x69, 0x2F, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0xD3, 0x03, 0xDA, 
36849
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x0C, 0x85, 0xAD, 0x01, 0xDA, 0x06, 0xD8, 0x0A, 0x66, 0x66, 0x69, 
36850
  0x2F, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0xDA, 0x08, 0xCE, 0x81, 0x1C, 0x28, 0x66, 0x66, 0x69, 
36851
  0x2F, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x70, 0x61, 0x74, 
36852
  0x68, 0x29, 0x0A, 0x0A, 0x4C, 0x6F, 0x61, 0x64, 0x20, 0x61, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 
36853
  0x64, 0x20, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x20, 0x6F, 0x72, 0x20, 0x64, 0x6C, 0x6C, 0x20, 
36854
  0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x70, 
36855
  0x61, 0x74, 0x68, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x64, 0x6F, 0x20, 0x6E, 0x6F, 0x74, 0x20, 
36856
  0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 0x6F, 0x72, 0x20, 0x72, 0x75, 0x6E, 0x20, 0x61, 
36857
  0x6E, 0x79, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x69, 0x74, 0x2E, 
36858
  0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 
36859
  0x6E, 0x74, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x60, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x60, 
36860
  0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x75, 0x6E, 
36861
  0x20, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, 0x6C, 0x69, 0x7A, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
36862
  0x63, 0x6F, 0x64, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x67, 0x65, 0x74, 0x20, 0x61, 0x20, 0x6D, 0x6F, 
36863
  0x64, 0x75, 0x6C, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 
36864
  0x70, 0x61, 0x74, 0x68, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2C, 0x20, 0x6F, 0x70, 
36865
  0x65, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 
36866
  0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x62, 0x69, 0x6E, 0x61, 0x72, 0x79, 0x2E, 0x20, 
36867
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x60, 0x63, 0x6F, 0x72, 0x65, 0x2F, 
36868
  0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x60, 0x2E, 0xCF, 0x07, 0x62, 0x6C, 0x73, 0x68, 0x69, 0x66, 
36869
  0x74, 0xD3, 0x02, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x10, 0x06, 0x00, 0x00, 0xCD, 
36870
  0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x13, 0xCE, 0x07, 0x62, 0x6C, 0x73, 0x68, 0x69, 0x66, 0x74, 0x3D, 
36871
  0x01, 0x00, 0x00, 0x24, 0x02, 0x01, 0x00, 0x1C, 0x02, 0x03, 0x00, 0x29, 0x03, 0x01, 0x00, 0x03, 
36872
  0x03, 0x00, 0x00, 0x24, 0x02, 0x01, 0x01, 0x1C, 0x02, 0x05, 0x00, 0x29, 0x03, 0x01, 0x00, 0x3B, 
36873
  0x04, 0x00, 0x00, 0x12, 0x03, 0x03, 0x04, 0x03, 0x03, 0x00, 0x00, 0x3B, 0x03, 0x00, 0x00, 0x29, 
36874
  0x05, 0x01, 0x00, 0x38, 0x04, 0x00, 0x05, 0x12, 0x03, 0x03, 0x04, 0x05, 0x05, 0x05, 0x01, 0x23, 
36875
  0x02, 0x05, 0x01, 0x1C, 0x02, 0xFC, 0xFF, 0x03, 0x03, 0x00, 0x00, 0xDA, 0x08, 0xCE, 0x80, 0x91, 
36876
  0x28, 0x62, 0x6C, 0x73, 0x68, 0x69, 0x66, 0x74, 0x20, 0x78, 0x20, 0x26, 0x20, 0x73, 0x68, 0x69, 
36877
  0x66, 0x74, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 
36878
  0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x20, 0x62, 0x69, 0x74, 
36879
  0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 0x65, 0x64, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x20, 0x62, 0x79, 
36880
  0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 
36881
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 0x73, 
36882
  0x2E, 0x20, 0x78, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x65, 0x6C, 0x65, 
36883
  0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 0x20, 0x6D, 0x75, 
36884
  0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 
36885
  0x2E, 0xCF, 0x0E, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x63, 0x6F, 0x6E, 0x73, 0x75, 0x6D, 
36886
  0x65, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x10, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 
36887
  0x72, 0x65, 0x2F, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2E, 0x63, 0x83, 0x8E, 0x01, 0xDA, 0x06, 0xD8, 
36888
  0x0E, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x63, 0x6F, 0x6E, 0x73, 0x75, 0x6D, 0x65, 0xDA, 
36889
  0x08, 0xCE, 0x80, 0xD3, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x63, 0x6F, 0x6E, 0x73, 
36890
  0x75, 0x6D, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 
36891
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x29, 0x0A, 0x0A, 0x49, 0x6E, 
36892
  0x70, 0x75, 0x74, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 
36893
  0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x61, 
36894
  0x72, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6D, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 
36895
  0x6F, 0x74, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x20, 
36896
  0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x70, 0x61, 
36897
  0x72, 0x73, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0x20, 0x53, 0x74, 0x61, 0x72, 0x74, 
36898
  0x73, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x69, 0x6E, 
36899
  0x64, 0x65, 0x78, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x62, 0x79, 0x20, 0x60, 0x69, 0x6E, 
36900
  0x64, 0x65, 0x78, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 
36901
  0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x62, 0x79, 0x74, 0x65, 
36902
  0x73, 0x20, 0x72, 0x65, 0x61, 0x64, 0x2E, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x66, 0x6C, 
36903
  0x6F, 0x6F, 0x72, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 0x1F, 0x01, 
36904
  0xDA, 0x06, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x66, 0x6C, 0x6F, 0x6F, 0x72, 0xDA, 0x08, 
36905
  0xCE, 0x54, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x66, 0x6C, 0x6F, 0x6F, 0x72, 0x20, 0x78, 0x29, 
36906
  0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 
36907
  0x72, 0x67, 0x65, 0x73, 0x74, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x76, 0x61, 
36908
  0x6C, 0x75, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
36909
  0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 
36910
  0x68, 0x61, 0x6E, 0x20, 0x78, 0x2E, 0xCF, 0x0D, 0x2A, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2D, 0x6C, 
36911
  0x69, 0x6E, 0x74, 0x73, 0x2A, 0xD3, 0x04, 0xDA, 0x84, 0x25, 0xCB, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
36912
  0xDA, 0x18, 0x87, 0xC5, 0x01, 0xDA, 0x06, 0xD0, 0x0B, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2D, 0x6C, 
36913
  0x69, 0x6E, 0x74, 0x73, 0xDA, 0x08, 0xCE, 0x80, 0x9F, 0x42, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x74, 
36914
  0x6F, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x6C, 0x69, 
36915
  0x6E, 0x74, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 
36916
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6F, 0x72, 0x74, 0x65, 
36917
  0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 
36918
  0x72, 0x20, 0x69, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x20, 0x61, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 
36919
  0x2E, 0x0A, 0x54, 0x6F, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6E, 
36920
  0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6F, 0x72, 0x20, 0x77, 0x61, 0x72, 0x6E, 0x69, 0x6E, 
36921
  0x67, 0x2C, 0x20, 0x61, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6F, 
36922
  0x72, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x60, 0x6D, 0x61, 
36923
  0x63, 0x6C, 0x69, 0x6E, 0x74, 0x66, 0x60, 0x2E, 0xCF, 0x07, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 
36924
  0x6C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x10, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 
36925
  0x72, 0x65, 0x2F, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x2E, 0x63, 0x86, 0x17, 0x01, 0xDA, 0x06, 0xD8, 
36926
  0x07, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0xDA, 0x08, 0xCE, 0x81, 0x7A, 0x28, 0x6D, 0x61, 
36927
  0x72, 0x73, 0x68, 0x61, 0x6C, 0x20, 0x78, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x72, 0x65, 0x76, 
36928
  0x65, 0x72, 0x73, 0x65, 0x2D, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x20, 0x62, 0x75, 0x66, 0x66, 
36929
  0x65, 0x72, 0x20, 0x6E, 0x6F, 0x2D, 0x63, 0x79, 0x63, 0x6C, 0x65, 0x73, 0x29, 0x0A, 0x0A, 0x4D, 
36930
  0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 
36931
  0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x61, 0x6E, 0x64, 
36932
  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 
36933
  0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x63, 
36934
  0x61, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x6E, 0x20, 0x6C, 0x61, 0x74, 0x65, 0x72, 0x20, 0x62, 0x65, 
36935
  0x20, 0x75, 0x6E, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x74, 0x6F, 
36936
  0x20, 0x72, 0x65, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x74, 0x68, 0x65, 
36937
  0x20, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x20, 
36938
  0x4F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x2C, 0x20, 0x6F, 0x6E, 0x65, 0x20, 
36939
  0x63, 0x61, 0x6E, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x72, 0x65, 
36940
  0x76, 0x65, 0x72, 0x73, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x20, 0x74, 0x61, 0x62, 
36941
  0x6C, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 
36942
  0x6C, 0x20, 0x61, 0x6C, 0x69, 0x61, 0x73, 0x65, 0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 
36943
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x72, 0x65, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x20, 
36944
  0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x54, 0x68, 
36945
  0x65, 0x6E, 0x20, 0x61, 0x20, 0x66, 0x6F, 0x72, 0x77, 0x61, 0x72, 0x64, 0x20, 0x6C, 0x6F, 0x6F, 
36946
  0x6B, 0x75, 0x70, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 
36947
  0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x63, 0x6F, 0x76, 0x65, 0x72, 
36948
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x72, 0x69, 0x67, 0x69, 0x6E, 0x61, 0x6C, 0x20, 0x76, 0x61, 
36949
  0x6C, 0x75, 0x65, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x75, 0x6E, 0x6D, 0x61, 0x72, 0x73, 0x68, 
36950
  0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x2E, 0xCF, 0x08, 0x70, 0x65, 0x67, 0x2F, 0x66, 0x69, 0x6E, 
36951
  0x64, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x0E, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 
36952
  0x72, 0x65, 0x2F, 0x70, 0x65, 0x67, 0x2E, 0x63, 0x86, 0xA9, 0x01, 0xDA, 0x06, 0xD8, 0x08, 0x70, 
36953
  0x65, 0x67, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0xDA, 0x08, 0xCE, 0x7F, 0x28, 0x70, 0x65, 0x67, 0x2F, 
36954
  0x66, 0x69, 0x6E, 0x64, 0x20, 0x70, 0x65, 0x67, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x26, 0x6F, 
36955
  0x70, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 
36956
  0x0A, 0x0A, 0x46, 0x69, 0x6E, 0x64, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x69, 0x6E, 0x64, 
36957
  0x65, 0x78, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x65, 0x67, 
36958
  0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x65, 0x78, 0x74, 
36959
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 
36960
  0x65, 0x67, 0x65, 0x72, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 
36961
  0x6E, 0x6F, 0x74, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2E, 0xCF, 0x0A, 0x64, 0x72, 0x6F, 0x70, 
36962
  0x2D, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x84, 
36963
  0x7F, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0E, 0x02, 0x02, 0x02, 0x05, 
36964
  0x19, 0x00, 0x08, 0xCE, 0x0A, 0x64, 0x72, 0x6F, 0x70, 0x2D, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0xDA, 
36965
  0x18, 0xDA, 0x2A, 0xDA, 0x81, 0xFC, 0xDA, 0x82, 0xE9, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
36966
  0x08, 0x03, 0x02, 0x03, 0x00, 0x12, 0x00, 0x07, 0xCE, 0x0A, 0x66, 0x69, 0x6E, 0x64, 0x2D, 0x69, 
36967
  0x6E, 0x64, 0x65, 0x78, 0xDA, 0x18, 0x00, 0x12, 0x00, 0xDA, 0x83, 0x2E, 0x00, 0x12, 0x01, 0xDA, 
36968
  0x1F, 0x00, 0x12, 0x02, 0xDA, 0x20, 0x00, 0x12, 0x03, 0xCF, 0x0A, 0x66, 0x69, 0x6E, 0x64, 0x2D, 
36969
  0x69, 0x6E, 0x64, 0x65, 0x78, 0x00, 0x12, 0x04, 0xDA, 0x22, 0x01, 0x12, 0x05, 0xDA, 0x23, 0x09, 
36970
  0x11, 0x07, 0xCF, 0x04, 0x69, 0x74, 0x65, 0x6D, 0x26, 0x04, 0x00, 0x00, 0x19, 0x05, 0x02, 0x00, 
36971
  0x47, 0x04, 0x01, 0x04, 0x26, 0x07, 0x00, 0x00, 0x23, 0x06, 0x04, 0x07, 0x1C, 0x06, 0x03, 0x00, 
36972
  0x1A, 0x0B, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x38, 0x06, 0x01, 0x04, 0x19, 0x07, 0x06, 0x00, 
36973
  0x2F, 0x07, 0x00, 0x00, 0x33, 0x06, 0x00, 0x00, 0x1C, 0x06, 0x04, 0x00, 0x19, 0x05, 0x04, 0x00, 
36974
  0x1A, 0x03, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x1A, 0xF2, 0xFF, 0xFF, 0x03, 0x05, 0x00, 0x00, 
36975
  0x84, 0x15, 0x03, 0x01, 0x03, 0x02, 0x0C, 0x01, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x13, 0x00, 
36976
  0x05, 0x01, 0x0F, 0x00, 0x05, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x01, 0x07, 0x01, 0x07, 0xBF, 
36977
  0xFE, 0x05, 0xBF, 0xFC, 0x03, 0xBF, 0xFB, 0x01, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 
36978
  0x01, 0x01, 0x01, 0x00, 0x03, 0x00, 0x02, 0xCE, 0x04, 0x6E, 0x69, 0x6C, 0x3F, 0xDA, 0x18, 0x00, 
36979
  0x03, 0x00, 0xDA, 0x1E, 0x00, 0x03, 0x01, 0xCF, 0x04, 0x6E, 0x69, 0x6C, 0x3F, 0x26, 0x03, 0x00, 
36980
  0x00, 0x23, 0x02, 0x00, 0x03, 0x03, 0x02, 0x00, 0x00, 0x7E, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 
36981
  0x19, 0x00, 0xDA, 0x83, 0x2E, 0x00, 0x19, 0x01, 0xDA, 0x1F, 0x00, 0x19, 0x02, 0xDA, 0x84, 0xC8, 
36982
  0x03, 0x19, 0x04, 0xCF, 0x07, 0x75, 0x73, 0x65, 0x2D, 0x73, 0x74, 0x72, 0x08, 0x19, 0x06, 0xDA, 
36983
  0x80, 0xFB, 0x0C, 0x19, 0x08, 0xDA, 0x80, 0x90, 0x0E, 0x19, 0x0A, 0xDA, 0x80, 0x84, 0x16, 0x19, 
36984
  0x0C, 0xDA, 0x83, 0xBE, 0x2F, 0x01, 0x00, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 
36985
  0x19, 0x04, 0x03, 0x00, 0x1C, 0x04, 0x03, 0x00, 0x2A, 0x05, 0x01, 0x00, 0x1A, 0x02, 0x00, 0x00, 
36986
  0x2A, 0x05, 0x02, 0x00, 0x19, 0x06, 0x05, 0x00, 0x30, 0x00, 0x01, 0x00, 0x2A, 0x08, 0x03, 0x00, 
36987
  0x33, 0x07, 0x08, 0x00, 0x19, 0x08, 0x07, 0x00, 0x3D, 0x09, 0x01, 0x00, 0x19, 0x0A, 0x09, 0x00, 
36988
  0x2F, 0x08, 0x00, 0x00, 0x2A, 0x0D, 0x04, 0x00, 0x33, 0x0C, 0x0D, 0x00, 0x1C, 0x0C, 0x03, 0x00, 
36989
  0x19, 0x0B, 0x0A, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x0B, 0x08, 0x00, 0x19, 0x0C, 0x0B, 0x00, 
36990
  0x30, 0x01, 0x0C, 0x00, 0x34, 0x06, 0x00, 0x00, 0x84, 0x82, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 
36991
  0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 
36992
  0x0A, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x03, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0E, 0x00, 
36993
  0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0xDA, 0x08, 0xCE, 0x44, 0x28, 
36994
  0x64, 0x72, 0x6F, 0x70, 0x2D, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 
36995
  0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x28, 
36996
  0x64, 0x72, 0x6F, 0x70, 0x2D, 0x77, 0x68, 0x69, 0x6C, 0x65, 0x20, 0x28, 0x63, 0x6F, 0x6D, 0x70, 
36997
  0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x70, 0x72, 0x65, 0x64, 0x29, 0x20, 0x69, 0x6E, 0x64, 
36998
  0x29, 0x60, 0x2E, 0xCF, 0x0C, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x75, 
36999
  0x73, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x10, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 
37000
  0x72, 0x65, 0x2F, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x63, 0x82, 0x53, 0x01, 0xDA, 0x06, 0xDA, 
37001
  0x80, 0xBE, 0xDA, 0x08, 0xCE, 0x82, 0x06, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x73, 0x74, 
37002
  0x61, 0x74, 0x75, 0x73, 0x20, 0x66, 0x69, 0x62, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 
37003
  0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x66, 
37004
  0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 
37005
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x3A, 
37006
  0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x64, 0x65, 0x61, 0x64, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 
37007
  0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x68, 0x61, 0x73, 0x20, 0x66, 0x69, 0x6E, 0x69, 0x73, 0x68, 
37008
  0x65, 0x64, 0x0A, 0x2A, 0x20, 0x3A, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x2D, 0x20, 0x74, 0x68, 
37009
  0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x68, 0x61, 0x73, 0x20, 0x65, 0x72, 0x72, 0x6F, 
37010
  0x72, 0x65, 0x64, 0x20, 0x6F, 0x75, 0x74, 0x0A, 0x2A, 0x20, 0x3A, 0x64, 0x65, 0x62, 0x75, 0x67, 
37011
  0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 
37012
  0x73, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x64, 0x65, 0x62, 
37013
  0x75, 0x67, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x0A, 0x2A, 0x20, 0x3A, 0x70, 0x65, 0x6E, 0x64, 0x69, 
37014
  0x6E, 0x67, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x68, 
37015
  0x61, 0x73, 0x20, 0x62, 0x65, 0x65, 0x6E, 0x20, 0x79, 0x69, 0x65, 0x6C, 0x64, 0x65, 0x64, 0x0A, 
37016
  0x2A, 0x20, 0x3A, 0x75, 0x73, 0x65, 0x72, 0x28, 0x30, 0x2D, 0x37, 0x29, 0x20, 0x2D, 0x20, 0x74, 
37017
  0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x73, 0x75, 0x73, 0x70, 
37018
  0x65, 0x6E, 0x64, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 
37019
  0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x0A, 0x2A, 0x20, 0x3A, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x72, 
37020
  0x75, 0x70, 0x74, 0x65, 0x64, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 
37021
  0x72, 0x20, 0x77, 0x61, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x65, 
37022
  0x64, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x20, 0x2D, 
37023
  0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x77, 0x61, 
37024
  0x69, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 
37025
  0x6D, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x64, 
37026
  0x75, 0x6C, 0x65, 0x72, 0x0A, 0x2A, 0x20, 0x3A, 0x61, 0x6C, 0x69, 0x76, 0x65, 0x20, 0x2D, 0x20, 
37027
  0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x63, 0x75, 0x72, 
37028
  0x72, 0x65, 0x6E, 0x74, 0x6C, 0x79, 0x20, 0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x61, 
37029
  0x6E, 0x64, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x73, 
37030
  0x75, 0x6D, 0x65, 0x64, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 0x65, 0x77, 0x20, 0x2D, 0x20, 0x74, 0x68, 
37031
  0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x68, 0x61, 0x73, 0x20, 0x6A, 0x75, 0x73, 0x74, 
37032
  0x20, 0x62, 0x65, 0x65, 0x6E, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x61, 0x6E, 
37033
  0x64, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x79, 0x65, 0x74, 0x20, 0x72, 0x75, 0x6E, 0xCF, 0x0A, 0x66, 
37034
  0x66, 0x69, 0x2F, 0x6D, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
37035
  0xDA, 0x0C, 0x85, 0xD8, 0x01, 0xDA, 0x06, 0xD8, 0x0A, 0x66, 0x66, 0x69, 0x2F, 0x6D, 0x61, 0x6C, 
37036
  0x6C, 0x6F, 0x63, 0xDA, 0x08, 0xCE, 0x80, 0xAE, 0x28, 0x66, 0x66, 0x69, 0x2F, 0x6D, 0x61, 0x6C, 
37037
  0x6C, 0x6F, 0x63, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x29, 0x0A, 0x0A, 0x41, 0x6C, 0x6C, 0x6F, 0x63, 
37038
  0x61, 0x74, 0x65, 0x73, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x64, 0x69, 0x72, 0x65, 
37039
  0x63, 0x74, 0x6C, 0x79, 0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6A, 
37040
  0x61, 0x6E, 0x65, 0x74, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 
37041
  0x63, 0x61, 0x74, 0x6F, 0x72, 0x2E, 0x20, 0x4D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x61, 0x6C, 
37042
  0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 
37043
  0x77, 0x61, 0x79, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x66, 0x72, 0x65, 0x65, 
37044
  0x64, 0x20, 0x6D, 0x61, 0x6E, 0x75, 0x61, 0x6C, 0x6C, 0x79, 0x21, 0x20, 0x52, 0x65, 0x74, 0x75, 
37045
  0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x72, 0x61, 0x77, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 
37046
  0x72, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x73, 0x69, 0x7A, 
37047
  0x65, 0x20, 0x3D, 0x20, 0x30, 0x2E, 0xCF, 0x05, 0x70, 0x72, 0x69, 0x6E, 0x66, 0xD3, 0x03, 0xDA, 
37048
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x83, 0x14, 0x82, 0x78, 0x01, 0xDA, 0x06, 0xD8, 0x05, 0x70, 0x72, 
37049
  0x69, 0x6E, 0x66, 0xDA, 0x08, 0xCE, 0x3D, 0x28, 0x70, 0x72, 0x69, 0x6E, 0x66, 0x20, 0x66, 0x6D, 
37050
  0x74, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x4C, 0x69, 0x6B, 0x65, 0x20, 0x60, 0x70, 
37051
  0x72, 0x69, 0x6E, 0x74, 0x66, 0x60, 0x20, 0x62, 0x75, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 
37052
  0x6E, 0x6F, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x65, 0x77, 0x6C, 
37053
  0x69, 0x6E, 0x65, 0x2E, 0xCF, 0x06, 0x6D, 0x61, 0x63, 0x65, 0x78, 0x31, 0xD3, 0x03, 0xDA, 0x03, 
37054
  0xD2, 0x03, 0x00, 0xDA, 0x18, 0x87, 0xD7, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 
37055
  0x00, 0x1F, 0x02, 0x01, 0x02, 0x17, 0x69, 0x00, 0x08, 0x0E, 0xCE, 0x06, 0x6D, 0x61, 0x63, 0x65, 
37056
  0x78, 0x31, 0xDA, 0x18, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 
37057
  0x06, 0x00, 0x02, 0xCE, 0x07, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x3F, 0xDA, 0x18, 0xDA, 0x2C, 
37058
  0xDA, 0x2E, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xCF, 0x07, 0x73, 0x79, 0x6D, 0x62, 
37059
  0x6F, 0x6C, 0x3F, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x2A, 
37060
  0x04, 0x01, 0x00, 0x23, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x67, 0x30, 0x00, 0x30, 0x00, 
37061
  0x30, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0xCF, 0x0A, 0x71, 0x75, 0x61, 0x73, 0x69, 0x71, 0x75, 
37062
  0x6F, 0x74, 0x65, 0xDA, 0x50, 0xDA, 0x3A, 0xCF, 0x05, 0x62, 0x72, 0x65, 0x61, 0x6B, 0xDA, 0x4A, 
37063
  0xDA, 0x4F, 0xDA, 0x82, 0xAE, 0xCF, 0x03, 0x76, 0x61, 0x72, 0xCF, 0x07, 0x75, 0x70, 0x73, 0x63, 
37064
  0x6F, 0x70, 0x65, 0xCF, 0x05, 0x77, 0x68, 0x69, 0x6C, 0x65, 0xCF, 0x05, 0x71, 0x75, 0x6F, 0x74, 
37065
  0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x02, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x02, 
37066
  0xCE, 0x08, 0x69, 0x64, 0x65, 0x6E, 0x74, 0x69, 0x74, 0x79, 0xDA, 0x18, 0x00, 0x01, 0x00, 0xDA, 
37067
  0x1E, 0x00, 0x01, 0x01, 0xCF, 0x08, 0x69, 0x64, 0x65, 0x6E, 0x74, 0x69, 0x74, 0x79, 0x03, 0x00, 
37068
  0x00, 0x00, 0x82, 0xC9, 0x01, 0xDA, 0x2C, 0xDA, 0x80, 0x8B, 0xDA, 0x81, 0x84, 0xDA, 0x81, 0x85, 
37069
  0xDA, 0x81, 0x8A, 0xDA, 0x82, 0xED, 0xDA, 0x5D, 0xDA, 0x80, 0x89, 0xDA, 0x84, 0x1A, 0xDA, 0x80, 
37070
  0x8A, 0x00, 0x69, 0x00, 0xDA, 0x1E, 0x00, 0x69, 0x01, 0xCF, 0x0A, 0x6F, 0x6E, 0x2D, 0x62, 0x69, 
37071
  0x6E, 0x64, 0x69, 0x6E, 0x67, 0x00, 0x69, 0x02, 0xDA, 0x84, 0xE5, 0x0B, 0x69, 0x04, 0xDA, 0x84, 
37072
  0x63, 0x0D, 0x69, 0x06, 0xCF, 0x07, 0x64, 0x6F, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x0F, 0x69, 0x08, 
37073
  0xCF, 0x0F, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x2D, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
37074
  0x73, 0x11, 0x69, 0x0A, 0xCF, 0x09, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x64, 0x65, 0x66, 0x13, 
37075
  0x69, 0x0C, 0xCF, 0x09, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x61, 0x6C, 0x6C, 0x15, 0x69, 0x0E, 
37076
  0xCF, 0x08, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x66, 0x6E, 0x17, 0x69, 0x10, 0xCF, 0x08, 0x65, 
37077
  0x78, 0x70, 0x61, 0x6E, 0x64, 0x71, 0x71, 0x2D, 0x69, 0x12, 0xCF, 0x05, 0x73, 0x70, 0x65, 0x63, 
37078
  0x73, 0x2F, 0x69, 0x14, 0xCF, 0x05, 0x64, 0x6F, 0x74, 0x75, 0x70, 0x33, 0x67, 0x16, 0xCF, 0x07, 
37079
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x47, 0x67, 0x69, 0x16, 0xDA, 0x23, 0x2C, 0x02, 0x00, 0x00, 
37080
  0x1C, 0x01, 0x09, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 
37081
  0x1C, 0x03, 0x04, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 
37082
  0x1A, 0x01, 0x00, 0x00, 0x2E, 0x03, 0x00, 0x00, 0x19, 0x04, 0x03, 0x00, 0x2E, 0x05, 0x01, 0x00, 
37083
  0x19, 0x06, 0x05, 0x00, 0x2E, 0x07, 0x02, 0x00, 0x19, 0x08, 0x07, 0x00, 0x2E, 0x09, 0x03, 0x00, 
37084
  0x19, 0x0A, 0x09, 0x00, 0x2E, 0x0B, 0x04, 0x00, 0x19, 0x0C, 0x0B, 0x00, 0x2E, 0x0D, 0x05, 0x00, 
37085
  0x19, 0x0E, 0x0D, 0x00, 0x2E, 0x0F, 0x06, 0x00, 0x19, 0x10, 0x0F, 0x00, 0x2A, 0x11, 0x01, 0x00, 
37086
  0x2A, 0x12, 0x02, 0x00, 0x31, 0x11, 0x10, 0x12, 0x2A, 0x11, 0x03, 0x00, 0x31, 0x0C, 0x11, 0x0A, 
37087
  0x2A, 0x11, 0x04, 0x00, 0x2A, 0x12, 0x05, 0x00, 0x31, 0x11, 0x0C, 0x12, 0x2A, 0x11, 0x06, 0x00, 
37088
  0x31, 0x0A, 0x11, 0x0C, 0x2A, 0x11, 0x07, 0x00, 0x2A, 0x12, 0x08, 0x00, 0x31, 0x11, 0x0E, 0x12, 
37089
  0x2A, 0x11, 0x09, 0x00, 0x31, 0x0A, 0x11, 0x0C, 0x2A, 0x11, 0x0A, 0x00, 0x2A, 0x12, 0x0B, 0x00, 
37090
  0x31, 0x11, 0x0C, 0x12, 0x2A, 0x11, 0x0C, 0x00, 0x2F, 0x11, 0x00, 0x00, 0x41, 0x11, 0x00, 0x00, 
37091
  0x19, 0x12, 0x11, 0x00, 0x2E, 0x13, 0x07, 0x00, 0x19, 0x14, 0x13, 0x00, 0x2F, 0x00, 0x00, 0x00, 
37092
  0x2A, 0x16, 0x0D, 0x00, 0x33, 0x15, 0x16, 0x00, 0x19, 0x16, 0x15, 0x00, 0x2A, 0x18, 0x0E, 0x00, 
37093
  0x23, 0x17, 0x16, 0x18, 0x1C, 0x17, 0x14, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x1A, 0x0F, 0x00, 
37094
  0x33, 0x19, 0x1A, 0x00, 0x2A, 0x1B, 0x10, 0x00, 0x23, 0x1A, 0x19, 0x1B, 0x1C, 0x1A, 0x09, 0x00, 
37095
  0x30, 0x04, 0x00, 0x00, 0x2A, 0x1B, 0x11, 0x00, 0x33, 0x19, 0x1B, 0x00, 0x32, 0x19, 0x00, 0x00, 
37096
  0x2A, 0x1C, 0x12, 0x00, 0x33, 0x1B, 0x1C, 0x00, 0x19, 0x18, 0x1B, 0x00, 0x1A, 0x04, 0x00, 0x00, 
37097
  0x2F, 0x00, 0x00, 0x00, 0x33, 0x19, 0x14, 0x00, 0x19, 0x18, 0x19, 0x00, 0x19, 0x15, 0x18, 0x00, 
37098
  0x1A, 0x1E, 0x00, 0x00, 0x2A, 0x1A, 0x13, 0x00, 0x23, 0x19, 0x16, 0x1A, 0x1C, 0x19, 0x06, 0x00, 
37099
  0x30, 0x04, 0x00, 0x00, 0x2A, 0x1B, 0x11, 0x00, 0x33, 0x1A, 0x1B, 0x00, 0x19, 0x18, 0x1A, 0x00, 
37100
  0x1A, 0x15, 0x00, 0x00, 0x2A, 0x1C, 0x14, 0x00, 0x23, 0x1B, 0x16, 0x1C, 0x1C, 0x1B, 0x08, 0x00, 
37101
  0x30, 0x00, 0x04, 0x00, 0x33, 0x1C, 0x06, 0x00, 0x2F, 0x1C, 0x00, 0x00, 0x2A, 0x1E, 0x15, 0x00, 
37102
  0x33, 0x1D, 0x1E, 0x00, 0x19, 0x1A, 0x1D, 0x00, 0x1A, 0x0A, 0x00, 0x00, 0x2A, 0x1E, 0x16, 0x00, 
37103
  0x23, 0x1D, 0x16, 0x1E, 0x1C, 0x1D, 0x05, 0x00, 0x30, 0x00, 0x04, 0x00, 0x33, 0x1E, 0x06, 0x00, 
37104
  0x19, 0x1C, 0x1E, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x1C, 0x00, 0x00, 0x19, 0x1A, 0x1C, 0x00, 
37105
  0x19, 0x18, 0x1A, 0x00, 0x19, 0x15, 0x18, 0x00, 0x19, 0x16, 0x15, 0x00, 0x03, 0x16, 0x00, 0x00, 
37106
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x00, 0x04, 0x01, 0x05, 0xDA, 0x84, 0x62, 
37107
  0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x84, 0xF6, 0xBF, 
37108
  0xFF, 0x00, 0x02, 0xDA, 0x84, 0xE5, 0x00, 0x04, 0x00, 0xDA, 0x83, 0x92, 0x00, 0x04, 0x01, 0xDA, 
37109
  0x84, 0x63, 0x2B, 0x02, 0x00, 0x01, 0x30, 0x00, 0x02, 0x00, 0x2B, 0x02, 0x00, 0x02, 0x34, 0x02, 
37110
  0x00, 0x00, 0xBF, 0xFF, 0x87, 0xE0, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0xCD, 0x00, 0xDC, 
37111
  0x00, 0x00, 0x0B, 0x02, 0x02, 0x02, 0x00, 0x12, 0x01, 0x09, 0xCE, 0x07, 0x64, 0x6F, 0x74, 0x61, 
37112
  0x62, 0x6C, 0x65, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
37113
  0x84, 0xF6, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x84, 0xE5, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x84, 0x63, 
37114
  0x00, 0x12, 0x00, 0xDA, 0x31, 0x00, 0x12, 0x01, 0xCF, 0x08, 0x6F, 0x6E, 0x2D, 0x76, 0x61, 0x6C, 
37115
  0x75, 0x65, 0x00, 0x12, 0x02, 0xDA, 0x84, 0xF7, 0x01, 0x12, 0x04, 0xCF, 0x04, 0x6E, 0x65, 0x77, 
37116
  0x74, 0x04, 0x12, 0x06, 0xDA, 0x81, 0xD2, 0x42, 0x03, 0x00, 0x00, 0x19, 0x04, 0x03, 0x00, 0x26, 
37117
  0x06, 0x00, 0x00, 0x47, 0x05, 0x00, 0x06, 0x19, 0x06, 0x05, 0x00, 0x26, 0x08, 0x00, 0x00, 0x48, 
37118
  0x07, 0x08, 0x06, 0x1C, 0x07, 0x0A, 0x00, 0x2F, 0x06, 0x00, 0x00, 0x2B, 0x09, 0x00, 0x04, 0x33, 
37119
  0x08, 0x09, 0x00, 0x38, 0x09, 0x00, 0x06, 0x2F, 0x09, 0x00, 0x00, 0x33, 0x0A, 0x01, 0x00, 0x3A, 
37120
  0x04, 0x08, 0x0A, 0x47, 0x06, 0x00, 0x06, 0x1A, 0xF5, 0xFF, 0xFF, 0x03, 0x04, 0x00, 0x00, 0xBF, 
37121
  0xFF, 0x87, 0xE3, 0x05, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x0C, 
37122
  0x00, 0x05, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x27, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x07, 
37123
  0x01, 0x10, 0xBF, 0xFE, 0x05, 0xBF, 0xFD, 0x03, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x01, 0x01, 
37124
  0x01, 0x08, 0x26, 0x01, 0x08, 0xCE, 0x0F, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x2D, 0x62, 0x69, 
37125
  0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0xDA, 0x18, 0xDA, 0x2C, 0xDA, 0x5D, 0xDA, 0x81, 0x8A, 0xDA, 
37126
  0x80, 0x8B, 0xDA, 0x82, 0xE9, 0xDA, 0x80, 0x8A, 0xDA, 0x80, 0x89, 0xDA, 0x84, 0x1A, 0xBF, 0xFF, 
37127
  0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x84, 0xF6, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 
37128
  0x84, 0xE5, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x84, 0x63, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x84, 0xF7, 
37129
  0x00, 0x26, 0x00, 0xDA, 0x1E, 0x00, 0x26, 0x01, 0xDA, 0x84, 0xF8, 0x04, 0x26, 0x03, 0xCF, 0x07, 
37130
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x44, 0x2C, 0x01, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 
37131
  0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x19, 0x03, 0x02, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x23, 
37132
  0x02, 0x03, 0x04, 0x1C, 0x02, 0x04, 0x00, 0x30, 0x01, 0x00, 0x00, 0x2A, 0x04, 0x02, 0x00, 0x34, 
37133
  0x04, 0x00, 0x00, 0x2A, 0x05, 0x03, 0x00, 0x23, 0x04, 0x03, 0x05, 0x1C, 0x04, 0x07, 0x00, 0x30, 
37134
  0x01, 0x00, 0x00, 0x2A, 0x06, 0x02, 0x00, 0x33, 0x05, 0x06, 0x00, 0x2F, 0x05, 0x00, 0x00, 0x2A, 
37135
  0x06, 0x04, 0x00, 0x34, 0x06, 0x00, 0x00, 0x2A, 0x06, 0x05, 0x00, 0x23, 0x05, 0x03, 0x06, 0x1C, 
37136
  0x05, 0x04, 0x00, 0x30, 0x00, 0x01, 0x00, 0x2B, 0x06, 0x00, 0x06, 0x34, 0x06, 0x00, 0x00, 0x2A, 
37137
  0x07, 0x06, 0x00, 0x23, 0x06, 0x03, 0x07, 0x1C, 0x06, 0x07, 0x00, 0x30, 0x00, 0x01, 0x00, 0x2B, 
37138
  0x08, 0x00, 0x06, 0x33, 0x07, 0x08, 0x00, 0x2F, 0x07, 0x00, 0x00, 0x2A, 0x08, 0x07, 0x00, 0x34, 
37139
  0x08, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2B, 0x07, 0x00, 0x04, 0x34, 0x07, 0x00, 0x00, 0xBF, 
37140
  0xFF, 0x87, 0xEA, 0x03, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
37141
  0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x00, 0x05, 0x02, 
37142
  0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0xBF, 0xFE, 0x05, 0x00, 0x05, 
37143
  0x00, 0x05, 0x03, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0xBF, 0xFD, 0x05, 0x00, 0x05, 0x00, 0x05, 0x04, 
37144
  0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x01, 0x07, 0x00, 0x07, 0x00, 
37145
  0x07, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0B, 0x01, 0x01, 0x01, 0x02, 0x1E, 0x01, 0x0A, 0xCE, 0x09, 
37146
  0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x64, 0x65, 0x66, 0xDA, 0x18, 0xDA, 0x82, 0xE9, 0xDA, 0x82, 
37147
  0xE6, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x84, 0xF6, 0xBF, 0xFF, 
37148
  0x00, 0x02, 0xDA, 0x84, 0xE5, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x84, 0x63, 0xBF, 0xFF, 0x00, 0x06, 
37149
  0xDA, 0x84, 0xF7, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x84, 0xF8, 0x00, 0x1E, 0x00, 0xDA, 0x31, 0x00, 
37150
  0x1E, 0x01, 0xDA, 0x84, 0xF9, 0x03, 0x1E, 0x03, 0xDA, 0x82, 0xF4, 0x06, 0x1E, 0x05, 0xCF, 0x05, 
37151
  0x62, 0x6F, 0x75, 0x6E, 0x64, 0x3D, 0x02, 0x00, 0x00, 0x05, 0x03, 0x02, 0xFF, 0x38, 0x02, 0x00, 
37152
  0x03, 0x19, 0x03, 0x02, 0x00, 0x29, 0x05, 0x01, 0x00, 0x38, 0x04, 0x00, 0x05, 0x19, 0x05, 0x04, 
37153
  0x00, 0x29, 0x07, 0x00, 0x00, 0x38, 0x06, 0x00, 0x07, 0x2F, 0x05, 0x00, 0x00, 0x2B, 0x08, 0x00, 
37154
  0x08, 0x33, 0x07, 0x08, 0x00, 0x30, 0x06, 0x07, 0x00, 0x3E, 0x06, 0x00, 0x00, 0x29, 0x07, 0x02, 
37155
  0x00, 0x29, 0x08, 0xFE, 0xFF, 0x31, 0x00, 0x07, 0x08, 0x2A, 0x08, 0x00, 0x00, 0x33, 0x07, 0x08, 
37156
  0x00, 0x2F, 0x03, 0x00, 0x00, 0x2B, 0x09, 0x00, 0x04, 0x33, 0x08, 0x09, 0x00, 0x2F, 0x08, 0x00, 
37157
  0x00, 0x3E, 0x08, 0x00, 0x00, 0x31, 0x06, 0x07, 0x08, 0x2A, 0x0A, 0x01, 0x00, 0x33, 0x09, 0x0A, 
37158
  0x00, 0x2F, 0x09, 0x00, 0x00, 0x2A, 0x06, 0x00, 0x00, 0x34, 0x06, 0x00, 0x00, 0xBF, 0xFF, 0x87, 
37159
  0xF3, 0x18, 0x00, 0x15, 0x00, 0x0F, 0x00, 0x05, 0x01, 0x10, 0x00, 0x10, 0x00, 0x05, 0x03, 0x0B, 
37160
  0x00, 0x0B, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x02, 0x09, 0x00, 
37161
  0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFD, 0x07, 
37162
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCD, 
37163
  0x00, 0xDC, 0x00, 0x00, 0x06, 0x01, 0x01, 0x01, 0x03, 0x0F, 0x01, 0x0A, 0xCE, 0x09, 0x65, 0x78, 
37164
  0x70, 0x61, 0x6E, 0x64, 0x61, 0x6C, 0x6C, 0xDA, 0x18, 0xDA, 0x82, 0xE9, 0xDA, 0x81, 0x8A, 0xDA, 
37165
  0x80, 0x8F, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x84, 0xF6, 0xBF, 
37166
  0xFF, 0x00, 0x02, 0xDA, 0x84, 0xE5, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x84, 0x63, 0xBF, 0xFF, 0x00, 
37167
  0x06, 0xDA, 0x84, 0xF7, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x84, 0xF8, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 
37168
  0x84, 0xF9, 0x00, 0x0F, 0x00, 0xDA, 0x31, 0x00, 0x0F, 0x01, 0xDA, 0x84, 0xFA, 0x08, 0x0F, 0x02, 
37169
  0xDA, 0x80, 0xAB, 0x29, 0x02, 0x01, 0x00, 0x30, 0x00, 0x02, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 
37170
  0x02, 0x03, 0x00, 0x2B, 0x03, 0x00, 0x04, 0x30, 0x03, 0x02, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x33, 
37171
  0x03, 0x04, 0x00, 0x19, 0x02, 0x03, 0x00, 0x29, 0x05, 0x00, 0x00, 0x38, 0x04, 0x00, 0x05, 0x2F, 
37172
  0x04, 0x00, 0x00, 0x32, 0x02, 0x00, 0x00, 0x2A, 0x05, 0x02, 0x00, 0x34, 0x05, 0x00, 0x00, 0xBF, 
37173
  0xFF, 0x87, 0xFC, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
37174
  0x00, 0x0F, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
37175
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x01, 0x01, 0x01, 0x05, 0x25, 0x01, 0x0D, 0xCE, 0x08, 0x65, 
37176
  0x78, 0x70, 0x61, 0x6E, 0x64, 0x66, 0x6E, 0xDA, 0x18, 0xDA, 0x84, 0xEA, 0xDA, 0x82, 0xE9, 0xDA, 
37177
  0x81, 0x8A, 0xDA, 0x82, 0xAE, 0xDA, 0x80, 0x8F, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 
37178
  0x00, 0x01, 0xDA, 0x84, 0xF6, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x84, 0xE5, 0xBF, 0xFF, 0x00, 0x04, 
37179
  0xDA, 0x84, 0x63, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x84, 0xF7, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x84, 
37180
  0xF8, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x84, 0xF9, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x84, 0xFA, 0x00, 
37181
  0x25, 0x00, 0xDA, 0x31, 0x00, 0x25, 0x01, 0xDA, 0x84, 0xFB, 0x02, 0x25, 0x03, 0xCF, 0x02, 0x74, 
37182
  0x31, 0x0F, 0x17, 0x05, 0xDA, 0x80, 0xAB, 0x1F, 0x25, 0x05, 0xDA, 0x80, 0xAB, 0x29, 0x03, 0x01, 
37183
  0x00, 0x38, 0x02, 0x00, 0x03, 0x19, 0x03, 0x02, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x05, 0x00, 
37184
  0x00, 0x33, 0x04, 0x05, 0x00, 0x1C, 0x04, 0x11, 0x00, 0x29, 0x05, 0x03, 0x00, 0x30, 0x00, 0x05, 
37185
  0x00, 0x2A, 0x06, 0x01, 0x00, 0x33, 0x05, 0x06, 0x00, 0x2B, 0x06, 0x00, 0x04, 0x30, 0x06, 0x05, 
37186
  0x00, 0x2A, 0x07, 0x02, 0x00, 0x33, 0x06, 0x07, 0x00, 0x19, 0x05, 0x06, 0x00, 0x29, 0x07, 0x02, 
37187
  0x00, 0x38, 0x06, 0x00, 0x07, 0x2A, 0x07, 0x03, 0x00, 0x31, 0x07, 0x03, 0x06, 0x32, 0x05, 0x00, 
37188
  0x00, 0x2A, 0x07, 0x04, 0x00, 0x34, 0x07, 0x00, 0x00, 0x29, 0x05, 0x02, 0x00, 0x30, 0x00, 0x05, 
37189
  0x00, 0x2A, 0x06, 0x01, 0x00, 0x33, 0x05, 0x06, 0x00, 0x2B, 0x06, 0x00, 0x04, 0x30, 0x06, 0x05, 
37190
  0x00, 0x2A, 0x07, 0x02, 0x00, 0x33, 0x06, 0x07, 0x00, 0x19, 0x05, 0x06, 0x00, 0x2A, 0x06, 0x03, 
37191
  0x00, 0x30, 0x06, 0x03, 0x00, 0x32, 0x05, 0x00, 0x00, 0x2A, 0x06, 0x04, 0x00, 0x34, 0x06, 0x00, 
37192
  0x00, 0xBF, 0xFF, 0x88, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x05, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 
37193
  0x00, 0x05, 0x02, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 
37194
  0x00, 0x13, 0x00, 0x09, 0x01, 0x17, 0x00, 0x17, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 
37195
  0x00, 0x09, 0x02, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 
37196
  0x00, 0x13, 0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xCD, 0x00, 
37197
  0xFC, 0x00, 0x00, 0x07, 0x01, 0x01, 0x01, 0x01, 0x0B, 0x01, 0x01, 0x0C, 0xCE, 0x08, 0x65, 0x78, 
37198
  0x70, 0x61, 0x6E, 0x64, 0x71, 0x71, 0xDA, 0x18, 0xDA, 0x80, 0x8F, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 
37199
  0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x84, 0xF6, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x84, 0xE5, 0xBF, 
37200
  0xFF, 0x00, 0x04, 0xDA, 0x84, 0x63, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x84, 0xF7, 0xBF, 0xFF, 0x00, 
37201
  0x08, 0xDA, 0x84, 0xF8, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x84, 0xF9, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 
37202
  0x84, 0xFA, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x84, 0xFB, 0x00, 0x0B, 0x00, 0xDA, 0x31, 0x00, 0x0B, 
37203
  0x01, 0xDA, 0x84, 0xFC, 0x01, 0x0B, 0x03, 0xCF, 0x02, 0x71, 0x71, 0x2E, 0x02, 0x00, 0x00, 0x19, 
37204
  0x03, 0x02, 0x00, 0x29, 0x05, 0x00, 0x00, 0x38, 0x04, 0x00, 0x05, 0x29, 0x06, 0x01, 0x00, 0x38, 
37205
  0x05, 0x00, 0x06, 0x2F, 0x05, 0x00, 0x00, 0x33, 0x06, 0x03, 0x00, 0x30, 0x04, 0x06, 0x00, 0x2A, 
37206
  0x05, 0x00, 0x00, 0x34, 0x05, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x01, 
37207
  0x01, 0x01, 0x0E, 0x47, 0x01, 0x0D, 0xCE, 0x02, 0x71, 0x71, 0xDA, 0x18, 0xDA, 0x2C, 0xDA, 0x80, 
37208
  0x8B, 0xDA, 0x81, 0x84, 0xDA, 0x81, 0x85, 0xDA, 0x81, 0x8A, 0xCF, 0x07, 0x75, 0x6E, 0x71, 0x75, 
37209
  0x6F, 0x74, 0x65, 0xDA, 0x80, 0x8F, 0xDA, 0x82, 0xE9, 0xDA, 0x5D, 0xDA, 0x80, 0x8A, 0xD7, 0x00, 
37210
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x01, 0x01, 0x01, 0x01, 0x0E, 0x00, 0x06, 0xCE, 0x03, 0x6B, 
37211
  0x76, 0x73, 0xDA, 0x18, 0xDA, 0x81, 0x8C, 0x00, 0x0E, 0x00, 0xCF, 0x04, 0x64, 0x69, 0x63, 0x74, 
37212
  0x00, 0x0E, 0x01, 0xCF, 0x03, 0x6B, 0x76, 0x73, 0x01, 0x0E, 0x03, 0xDA, 0x23, 0x01, 0x0D, 0x00, 
37213
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x56, 0x04, 0x0D, 0x05, 0xCF, 0x07, 0x5F, 0x30, 
37214
  0x30, 0x30, 0x30, 0x32, 0x55, 0x06, 0x0D, 0x04, 0xDA, 0x22, 0x3E, 0x02, 0x00, 0x00, 0x19, 0x03, 
37215
  0x02, 0x00, 0x26, 0x05, 0x00, 0x00, 0x47, 0x04, 0x00, 0x05, 0x19, 0x05, 0x04, 0x00, 0x1D, 0x05, 
37216
  0x08, 0x00, 0x19, 0x04, 0x05, 0x00, 0x38, 0x06, 0x00, 0x04, 0x31, 0x03, 0x04, 0x06, 0x2A, 0x08, 
37217
  0x00, 0x00, 0x33, 0x07, 0x08, 0x00, 0x47, 0x05, 0x00, 0x05, 0x1A, 0xF9, 0xFF, 0xFF, 0x03, 0x03, 
37218
  0x00, 0x00, 0x86, 0x95, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
37219
  0x03, 0x00, 0x2A, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFB, 0x01, 
37220
  0xD8, 0x05, 0x74, 0x61, 0x62, 0x6C, 0x65, 0xDA, 0x80, 0x89, 0xD8, 0x06, 0x73, 0x74, 0x72, 0x75, 
37221
  0x63, 0x74, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x84, 0xF6, 0xBF, 
37222
  0xFF, 0x00, 0x02, 0xDA, 0x84, 0xE5, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x84, 0x63, 0xBF, 0xFF, 0x00, 
37223
  0x06, 0xDA, 0x84, 0xF7, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x84, 0xF8, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 
37224
  0x84, 0xF9, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x84, 0xFA, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x84, 0xFB, 
37225
  0x00, 0x47, 0x00, 0xDA, 0x1E, 0x00, 0x47, 0x01, 0xDA, 0x85, 0x0B, 0x04, 0x47, 0x03, 0xCF, 0x07, 
37226
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x45, 0x16, 0x28, 0x06, 0xCF, 0x02, 0x78, 0x30, 0x2C, 0x01, 
37227
  0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x19, 0x03, 
37228
  0x02, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x23, 0x02, 0x03, 0x04, 0x1C, 0x02, 0x21, 0x00, 0x2F, 0x00, 
37229
  0x00, 0x00, 0x2A, 0x05, 0x02, 0x00, 0x33, 0x04, 0x05, 0x00, 0x2A, 0x06, 0x03, 0x00, 0x23, 0x05, 
37230
  0x06, 0x04, 0x1C, 0x05, 0x07, 0x00, 0x30, 0x01, 0x00, 0x00, 0x2A, 0x06, 0x04, 0x00, 0x33, 0x04, 
37231
  0x06, 0x00, 0x32, 0x04, 0x00, 0x00, 0x44, 0x06, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0x29, 0x06, 
37232
  0x00, 0x00, 0x39, 0x04, 0x00, 0x06, 0x19, 0x06, 0x04, 0x00, 0x2A, 0x07, 0x05, 0x00, 0x23, 0x04, 
37233
  0x07, 0x06, 0x1C, 0x04, 0x09, 0x00, 0x29, 0x08, 0x01, 0x00, 0x39, 0x07, 0x00, 0x08, 0x2F, 0x07, 
37234
  0x00, 0x00, 0x2B, 0x09, 0x00, 0x04, 0x33, 0x08, 0x09, 0x00, 0x30, 0x06, 0x08, 0x00, 0x2A, 0x07, 
37235
  0x06, 0x00, 0x34, 0x07, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, 0x2A, 0x08, 0x04, 0x00, 0x33, 0x07, 
37236
  0x08, 0x00, 0x2F, 0x07, 0x00, 0x00, 0x2A, 0x08, 0x07, 0x00, 0x34, 0x08, 0x00, 0x00, 0x2A, 0x05, 
37237
  0x08, 0x00, 0x23, 0x04, 0x03, 0x05, 0x1C, 0x04, 0x04, 0x00, 0x30, 0x01, 0x00, 0x00, 0x2A, 0x05, 
37238
  0x04, 0x00, 0x34, 0x05, 0x00, 0x00, 0x2A, 0x06, 0x09, 0x00, 0x23, 0x05, 0x03, 0x06, 0x1C, 0x05, 
37239
  0x0A, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x07, 0x0A, 0x00, 0x33, 0x06, 0x07, 0x00, 0x30, 0x01, 
37240
  0x06, 0x00, 0x2A, 0x08, 0x04, 0x00, 0x33, 0x07, 0x08, 0x00, 0x32, 0x07, 0x00, 0x00, 0x2A, 0x06, 
37241
  0x0B, 0x00, 0x34, 0x06, 0x00, 0x00, 0x2A, 0x07, 0x0C, 0x00, 0x23, 0x06, 0x03, 0x07, 0x1C, 0x06, 
37242
  0x0A, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x08, 0x0A, 0x00, 0x33, 0x07, 0x08, 0x00, 0x30, 0x01, 
37243
  0x07, 0x00, 0x2A, 0x09, 0x04, 0x00, 0x33, 0x08, 0x09, 0x00, 0x32, 0x08, 0x00, 0x00, 0x2A, 0x07, 
37244
  0x0D, 0x00, 0x34, 0x07, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x88, 0x0A, 0x05, 0x01, 0x0D, 
37245
  0x00, 0x0D, 0x00, 0x0D, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x21, 0x00, 0x21, 
37246
  0x00, 0x21, 0x00, 0x14, 0x00, 0x14, 0x00, 0x10, 0x01, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x12, 
37247
  0x00, 0x12, 0x00, 0x12, 0x02, 0x1C, 0x00, 0x1C, 0x00, 0x14, 0x01, 0x18, 0x00, 0x18, 0x00, 0x14, 
37248
  0x01, 0x27, 0x00, 0x27, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 
37249
  0x01, 0x23, 0x00, 0x23, 0x00, 0x23, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0xBF, 0xF9, 0x07, 0x00, 
37250
  0x07, 0x00, 0x07, 0x08, 0x10, 0x00, 0x10, 0x00, 0x10, 0xBF, 0xF8, 0x07, 0x00, 0x07, 0x00, 0x07, 
37251
  0x09, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x10, 0x00, 0x10, 
37252
  0x00, 0x10, 0xBF, 0xF7, 0x07, 0x00, 0x07, 0x00, 0x07, 0x0A, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 
37253
  0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0xBF, 0xF6, 0x07, 0x88, 0x0A, 
37254
  0x05, 0x00, 0x05, 0x0D, 0x0C, 0x00, 0x0C, 0x00, 0x19, 0x00, 0x19, 0x00, 0x15, 0x00, 0x15, 0x00, 
37255
  0x05, 0x00, 0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0E, 0x01, 0x01, 0x01, 0x09, 0x33, 
37256
  0x01, 0x14, 0xCE, 0x05, 0x64, 0x6F, 0x74, 0x75, 0x70, 0xDA, 0x18, 0xDA, 0x80, 0xDF, 0xD5, 0x00, 
37257
  0xDA, 0x59, 0xDA, 0x06, 0xDA, 0x3D, 0xDA, 0x84, 0x9A, 0xDA, 0x81, 0x60, 0xDA, 0x82, 0xE9, 0xDA, 
37258
  0x81, 0x8A, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x84, 0xF6, 0xBF, 
37259
  0xFF, 0x00, 0x02, 0xDA, 0x84, 0xE5, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x84, 0x63, 0xBF, 0xFF, 0x00, 
37260
  0x06, 0xDA, 0x84, 0xF7, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x84, 0xF8, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 
37261
  0x84, 0xF9, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x84, 0xFA, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x84, 0xFB, 
37262
  0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x84, 0xFC, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x84, 0xFD, 0x00, 0x33, 
37263
  0x00, 0xDA, 0x31, 0x00, 0x33, 0x01, 0xDA, 0x84, 0xFE, 0x02, 0x33, 0x03, 0xDA, 0x82, 0xF5, 0x05, 
37264
  0x33, 0x05, 0xDA, 0x80, 0xFF, 0x09, 0x0E, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 
37265
  0x46, 0x0E, 0x33, 0x07, 0xDA, 0x62, 0x11, 0x1A, 0x09, 0xDA, 0x63, 0x1A, 0x33, 0x09, 0xCF, 0x01, 
37266
  0x6D, 0x1D, 0x33, 0x0B, 0xCF, 0x02, 0x6D, 0x3F, 0x29, 0x03, 0x00, 0x00, 0x38, 0x02, 0x00, 0x03, 
37267
  0x19, 0x03, 0x02, 0x00, 0x2B, 0x05, 0x00, 0x12, 0x38, 0x04, 0x05, 0x03, 0x19, 0x05, 0x04, 0x00, 
37268
  0x2F, 0x03, 0x00, 0x00, 0x2A, 0x07, 0x00, 0x00, 0x33, 0x06, 0x07, 0x00, 0x19, 0x07, 0x06, 0x00, 
37269
  0x1C, 0x07, 0x03, 0x00, 0x19, 0x06, 0x07, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x2A, 0x06, 0x01, 0x00, 
37270
  0x19, 0x07, 0x06, 0x00, 0x2A, 0x09, 0x02, 0x00, 0x39, 0x08, 0x07, 0x09, 0x19, 0x09, 0x08, 0x00, 
37271
  0x1C, 0x09, 0x05, 0x00, 0x29, 0x0B, 0x00, 0x00, 0x38, 0x0A, 0x09, 0x0B, 0x19, 0x08, 0x0A, 0x00, 
37272
  0x1A, 0x04, 0x00, 0x00, 0x2A, 0x0B, 0x03, 0x00, 0x39, 0x0A, 0x07, 0x0B, 0x19, 0x08, 0x0A, 0x00, 
37273
  0x19, 0x09, 0x08, 0x00, 0x2A, 0x0B, 0x04, 0x00, 0x38, 0x0A, 0x07, 0x0B, 0x19, 0x0B, 0x0A, 0x00, 
37274
  0x1C, 0x05, 0x03, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x34, 0x05, 0x00, 0x00, 0x1C, 0x0B, 0x0B, 0x00, 
37275
  0x2A, 0x0C, 0x05, 0x00, 0x30, 0x0C, 0x00, 0x00, 0x2A, 0x0D, 0x06, 0x00, 0x33, 0x0C, 0x0D, 0x00, 
37276
  0x29, 0x0C, 0x01, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x2A, 0x0D, 0x07, 0x00, 0x33, 0x0C, 0x0D, 0x00, 
37277
  0x32, 0x0C, 0x00, 0x00, 0x34, 0x09, 0x00, 0x00, 0x2B, 0x0C, 0x00, 0x04, 0x30, 0x0C, 0x00, 0x00, 
37278
  0x2A, 0x0D, 0x08, 0x00, 0x33, 0x0C, 0x0D, 0x00, 0x2F, 0x0C, 0x00, 0x00, 0x2A, 0x0D, 0x07, 0x00, 
37279
  0x34, 0x0D, 0x00, 0x00, 0xBF, 0xFF, 0x88, 0x27, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x0C, 0x00, 
37280
  0x0C, 0x00, 0x05, 0x01, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 
37281
  0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x17, 0x00, 0x17, 0x00, 0x10, 0x00, 0x29, 0x00, 0x2F, 0x00, 
37282
  0x2F, 0x00, 0x29, 0x00, 0x29, 0x00, 0x38, 0x00, 0x38, 0x00, 0x29, 0x00, 0x05, 0x01, 0x0D, 0x00, 
37283
  0x0D, 0x00, 0x05, 0x01, 0x05, 0x01, 0x09, 0x00, 0x09, 0xBF, 0xFF, 0x05, 0x02, 0x0E, 0x00, 0x0E, 
37284
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x26, 0x00, 0x26, 
37285
  0x01, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x87, 0xD7, 
37286
  0x01, 0x05, 0x03, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 0xBF, 
37287
  0xFF, 0x05, 0xBF, 0xFF, 0x03, 0x04, 0x03, 0x00, 0x03, 0x02, 0x03, 0x00, 0x03, 0x08, 0x03, 0x00, 
37288
  0x03, 0x08, 0x03, 0x00, 0x03, 0x09, 0x03, 0x00, 0x03, 0x04, 0x03, 0x00, 0x03, 0x0A, 0x03, 0x00, 
37289
  0x03, 0x10, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
37290
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
37291
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x0D, 0x03, 0x00, 
37292
  0x03, 0x0C, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 
37293
  0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0E, 0x01, 0x21, 0x00, 0x21, 0x00, 
37294
  0x21, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0xBF, 0xFF, 0x0E, 0x00, 0x0E, 0x02, 0x10, 0x00, 0x10, 
37295
  0xBF, 0xFE, 0x0E, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x04, 0x0E, 
37296
  0x00, 0x0E, 0x00, 0x0E, 0xBF, 0xFC, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x05, 
37297
  0x20, 0x00, 0x20, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 0xFB, 0x05, 0x00, 0x05, 0x00, 0x05, 
37298
  0x00, 0x05, 0x00, 0x05, 0x06, 0x0E, 0x00, 0x0E, 0xBF, 0xFA, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
37299
  0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0xBF, 0xA6, 0x01, 0x56, 0x01, 0x04, 0x00, 0xDA, 
37300
  0x08, 0xCE, 0x80, 0x85, 0x28, 0x6D, 0x61, 0x63, 0x65, 0x78, 0x31, 0x20, 0x78, 0x20, 0x26, 0x6F, 
37301
  0x70, 0x74, 0x20, 0x6F, 0x6E, 0x2D, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x29, 0x0A, 0x0A, 
37302
  0x45, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x73, 0x20, 0x69, 0x6E, 
37303
  0x20, 0x61, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x64, 0x6F, 0x20, 
37304
  0x6E, 0x6F, 0x74, 0x20, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x6C, 0x79, 0x20, 
37305
  0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x73, 0x2E, 0x0A, 0x53, 
37306
  0x65, 0x65, 0x20, 0x60, 0x6D, 0x61, 0x63, 0x65, 0x78, 0x60, 0x20, 0x64, 0x6F, 0x63, 0x73, 0x20, 
37307
  0x66, 0x6F, 0x72, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x20, 0x6F, 0x6E, 0x20, 0x60, 0x6F, 0x6E, 0x2D, 
37308
  0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x60, 0x2E, 0xCF, 0x02, 0x6F, 0x72, 0xD3, 0x04, 0xDA, 
37309
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x81, 0x23, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 
37310
  0x00, 0x00, 0x0F, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x06, 0x27, 0x00, 0x07, 0xCE, 0x02, 
37311
  0x6F, 0x72, 0xDA, 0x18, 0xDA, 0x80, 0x87, 0xDA, 0x4F, 0xDA, 0x80, 0x8F, 0xDA, 0x49, 0xDA, 0x4A, 
37312
  0xDA, 0x50, 0x00, 0x27, 0x00, 0xDA, 0x82, 0xE2, 0x00, 0x27, 0x01, 0xDA, 0x85, 0x1E, 0x01, 0x27, 
37313
  0x03, 0xDA, 0x80, 0x84, 0x03, 0x27, 0x05, 0xDA, 0x80, 0x90, 0x05, 0x27, 0x07, 0xDA, 0x23, 0x0A, 
37314
  0x26, 0x0A, 0xCF, 0x02, 0x66, 0x69, 0x17, 0x25, 0x0C, 0xCF, 0x03, 0x24, 0x66, 0x69, 0x3D, 0x02, 
37315
  0x00, 0x00, 0x19, 0x03, 0x02, 0x00, 0x05, 0x04, 0x03, 0xFF, 0x19, 0x05, 0x04, 0x00, 0x39, 0x06, 
37316
  0x00, 0x05, 0x19, 0x07, 0x06, 0x00, 0x20, 0x08, 0x05, 0x00, 0x1C, 0x08, 0x1F, 0x00, 0x05, 0x05, 
37317
  0x05, 0xFF, 0x38, 0x09, 0x00, 0x05, 0x19, 0x0A, 0x09, 0x00, 0x2F, 0x0A, 0x00, 0x00, 0x2A, 0x0B, 
37318
  0x00, 0x00, 0x33, 0x09, 0x0B, 0x00, 0x1C, 0x09, 0x07, 0x00, 0x2A, 0x0B, 0x01, 0x00, 0x31, 0x0B, 
37319
  0x0A, 0x0A, 0x2F, 0x07, 0x00, 0x00, 0x2A, 0x0B, 0x02, 0x00, 0x33, 0x07, 0x0B, 0x00, 0x1A, 0x11, 
37320
  0x00, 0x00, 0x2A, 0x0C, 0x03, 0x00, 0x33, 0x0B, 0x0C, 0x00, 0x19, 0x0C, 0x0B, 0x00, 0x2A, 0x0B, 
37321
  0x04, 0x00, 0x31, 0x0B, 0x0C, 0x0A, 0x2A, 0x0D, 0x02, 0x00, 0x33, 0x0B, 0x0D, 0x00, 0x2A, 0x0D, 
37322
  0x01, 0x00, 0x31, 0x0D, 0x0C, 0x0C, 0x2F, 0x07, 0x00, 0x00, 0x2A, 0x0E, 0x02, 0x00, 0x33, 0x0D, 
37323
  0x0E, 0x00, 0x2A, 0x0E, 0x05, 0x00, 0x31, 0x0E, 0x0B, 0x0D, 0x2A, 0x0E, 0x02, 0x00, 0x33, 0x07, 
37324
  0x0E, 0x00, 0x1A, 0xE1, 0xFF, 0xFF, 0x03, 0x07, 0x00, 0x00, 0x81, 0x27, 0x0C, 0x00, 0x03, 0x01, 
37325
  0x0A, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x03, 0x01, 0x05, 0x01, 0x0D, 0x00, 
37326
  0x05, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0E, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 
37327
  0x10, 0x00, 0x10, 0xBF, 0xFF, 0x0E, 0x03, 0x1B, 0x00, 0x1B, 0x00, 0x12, 0x01, 0x1D, 0x00, 0x1D, 
37328
  0x00, 0x1D, 0x00, 0x1D, 0x01, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0xBF, 0xFF, 
37329
  0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xF9, 0x03, 0xBF, 0xF9, 0x01, 0xDA, 0x08, 0xCE, 
37330
  0x80, 0x83, 0x28, 0x6F, 0x72, 0x20, 0x26, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x29, 0x0A, 0x0A, 
37331
  0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 
37332
  0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 
37333
  0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x72, 0x65, 0x63, 0x65, 0x64, 0x69, 0x6E, 0x67, 0x20, 
37334
  0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x66, 0x61, 0x6C, 
37335
  0x73, 0x65, 0x79, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x0A, 0x65, 
37336
  0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 
37337
  0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x20, 0x65, 0x6C, 0x65, 
37338
  0x6D, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x3D, 0xCB, 0xCF, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x74, 
37339
  0x61, 0x6E, 0x68, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 0x14, 0x01, 
37340
  0xDA, 0x06, 0xD8, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x74, 0x61, 0x6E, 0x68, 0xDA, 0x08, 0xCE, 
37341
  0x33, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x74, 0x61, 0x6E, 0x68, 0x20, 0x78, 0x29, 0x0A, 0x0A, 
37342
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x79, 0x70, 0x65, 
37343
  0x72, 0x62, 0x6F, 0x6C, 0x69, 0x63, 0x20, 0x74, 0x61, 0x6E, 0x67, 0x65, 0x6E, 0x74, 0x20, 0x6F, 
37344
  0x66, 0x20, 0x78, 0x2E, 0xCF, 0x0B, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x69, 0x6E, 
37345
  0x64, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0xFA, 0x81, 0x39, 0x01, 0xDA, 0x06, 
37346
  0xDA, 0x81, 0xFB, 0xDA, 0x08, 0xCE, 0x80, 0xBF, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 
37347
  0x66, 0x69, 0x6E, 0x64, 0x20, 0x70, 0x61, 0x74, 0x74, 0x20, 0x73, 0x74, 0x72, 0x20, 0x26, 0x6F, 
37348
  0x70, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x29, 0x0A, 
37349
  0x0A, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 
37350
  0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x63, 0x65, 
37351
  0x20, 0x6F, 0x66, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x60, 0x70, 0x61, 0x74, 
37352
  0x74, 0x60, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x73, 0x74, 
37353
  0x72, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
37354
  0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 
37355
  0x73, 0x74, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x20, 
37356
  0x60, 0x70, 0x61, 0x74, 0x74, 0x60, 0x20, 0x69, 0x66, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2C, 
37357
  0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
37358
  0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xCF, 0x05, 0x70, 0x72, 0x69, 0x6E, 0x74, 0xD3, 0x03, 
37359
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x83, 0x14, 0x82, 0x08, 0x01, 0xDA, 0x06, 0xDA, 0x81, 0x5C, 
37360
  0xDA, 0x08, 0xCE, 0x81, 0x49, 0x28, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x26, 0x20, 0x78, 0x73, 
37361
  0x29, 0x0A, 0x0A, 0x50, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 
37362
  0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x6F, 0x6C, 0x65, 0x20, 0x28, 
37363
  0x73, 0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, 0x64, 0x20, 0x6F, 0x75, 0x74, 0x29, 0x2E, 0x20, 0x56, 
37364
  0x61, 0x6C, 0x75, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 
37365
  0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x69, 0x66, 
37366
  0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x6C, 
37367
  0x72, 0x65, 0x61, 0x64, 0x79, 0x2E, 0x20, 0x41, 0x66, 0x74, 0x65, 0x72, 0x20, 0x70, 0x72, 0x69, 
37368
  0x6E, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 
37369
  0x2C, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x63, 0x68, 0x61, 0x72, 
37370
  0x61, 0x63, 0x74, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x65, 0x64, 
37371
  0x2E, 0x20, 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
37372
  0x6F, 0x66, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x3A, 0x6F, 0x75, 0x74, 0x20, 0x73, 0x74, 
37373
  0x64, 0x6F, 0x75, 0x74, 0x29, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6D, 
37374
  0x69, 0x6E, 0x65, 0x20, 0x77, 0x68, 0x61, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x75, 0x73, 0x68, 
37375
  0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x20, 0x74, 0x6F, 0x2E, 0x20, 
37376
  0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x73, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x3A, 0x6F, 
37377
  0x75, 0x74, 0x20, 0x73, 0x74, 0x64, 0x6F, 0x75, 0x74, 0x29, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x62, 
37378
  0x65, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x61, 0x20, 0x63, 0x6F, 0x72, 0x65, 0x2F, 
37379
  0x66, 0x69, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
37380
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xCF, 0x04, 
37381
  0x64, 0x72, 0x6F, 0x70, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x84, 0x73, 0x01, 
37382
  0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x11, 0x02, 0x02, 0x02, 0x05, 0x22, 0x00, 
37383
  0x09, 0xCE, 0x04, 0x64, 0x72, 0x6F, 0x70, 0xDA, 0x18, 0xDA, 0x2A, 0xDA, 0x81, 0xFC, 0xDA, 0x82, 
37384
  0xE9, 0xDA, 0x83, 0xA3, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x03, 0x00, 0x00, 0xCD, 0x7F, 
37385
  0xFF, 0xFF, 0xFF, 0x02, 0x04, 0x00, 0x02, 0xCE, 0x03, 0x6D, 0x61, 0x78, 0xDA, 0x18, 0xD7, 0x00, 
37386
  0xCD, 0x00, 0x09, 0x00, 0x14, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x10, 0xCE, 
37387
  0x01, 0x3E, 0x3D, 0x01, 0x00, 0x00, 0x22, 0x02, 0x01, 0x02, 0x1B, 0x02, 0x0A, 0x00, 0x3B, 0x03, 
37388
  0x00, 0x00, 0x29, 0x05, 0x01, 0x00, 0x38, 0x04, 0x00, 0x05, 0x1F, 0x02, 0x03, 0x04, 0x1C, 0x02, 
37389
  0x07, 0x00, 0x05, 0x05, 0x05, 0x01, 0x19, 0x03, 0x04, 0x00, 0x23, 0x02, 0x05, 0x01, 0x1C, 0x02, 
37390
  0xFA, 0xFF, 0x27, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x28, 0x03, 0x00, 0x00, 0x03, 0x03, 
37391
  0x00, 0x00, 0xDA, 0x83, 0xA7, 0x00, 0x04, 0x00, 0xDA, 0x80, 0xAB, 0x00, 0x04, 0x01, 0xCF, 0x03, 
37392
  0x6D, 0x61, 0x78, 0x2A, 0x02, 0x00, 0x00, 0x30, 0x02, 0x00, 0x00, 0x2A, 0x02, 0x01, 0x00, 0x34, 
37393
  0x02, 0x00, 0x00, 0x82, 0xDE, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x22, 0x00, 0xDA, 
37394
  0x80, 0xD8, 0x00, 0x22, 0x01, 0xDA, 0x1F, 0x00, 0x22, 0x02, 0xDA, 0x85, 0x33, 0x03, 0x22, 0x04, 
37395
  0xDA, 0x84, 0xD4, 0x08, 0x22, 0x06, 0xDA, 0x80, 0xFB, 0x0A, 0x22, 0x08, 0xDA, 0x80, 0x84, 0x0D, 
37396
  0x22, 0x0A, 0xCF, 0x04, 0x6E, 0x65, 0x67, 0x6E, 0x15, 0x22, 0x0C, 0xDA, 0x83, 0xBE, 0x1F, 0x22, 
37397
  0x0E, 0xDA, 0x83, 0xBF, 0x2F, 0x01, 0x00, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 
37398
  0x19, 0x04, 0x03, 0x00, 0x1C, 0x04, 0x03, 0x00, 0x2A, 0x05, 0x01, 0x00, 0x1A, 0x02, 0x00, 0x00, 
37399
  0x2A, 0x05, 0x02, 0x00, 0x19, 0x06, 0x05, 0x00, 0x3D, 0x07, 0x01, 0x00, 0x19, 0x08, 0x07, 0x00, 
37400
  0x29, 0x0A, 0x00, 0x00, 0x45, 0x09, 0x00, 0x0A, 0x19, 0x0A, 0x09, 0x00, 0x1C, 0x0A, 0x06, 0x00, 
37401
  0x30, 0x00, 0x08, 0x00, 0x2A, 0x0D, 0x03, 0x00, 0x33, 0x0C, 0x0D, 0x00, 0x19, 0x0B, 0x0C, 0x00, 
37402
  0x1A, 0x02, 0x00, 0x00, 0x29, 0x0B, 0x00, 0x00, 0x19, 0x0C, 0x0B, 0x00, 0x1C, 0x0A, 0x03, 0x00, 
37403
  0x19, 0x0D, 0x08, 0x00, 0x1A, 0x07, 0x00, 0x00, 0x06, 0x0E, 0x08, 0x00, 0x29, 0x0F, 0x00, 0x00, 
37404
  0x30, 0x0F, 0x0E, 0x00, 0x2A, 0x10, 0x04, 0x00, 0x33, 0x0F, 0x10, 0x00, 0x19, 0x0D, 0x0F, 0x00, 
37405
  0x19, 0x0E, 0x0D, 0x00, 0x31, 0x01, 0x0C, 0x0E, 0x34, 0x06, 0x00, 0x00, 0x84, 0x77, 0x10, 0x00, 
37406
  0x10, 0x00, 0x10, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 
37407
  0x0C, 0x00, 0x03, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x03, 0x01, 0x0E, 0x00, 0x17, 0x00, 0x17, 0x00, 
37408
  0x17, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 
37409
  0x20, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x0C, 0x00, 0x03, 0x01, 0x03, 0x00, 
37410
  0x03, 0xDA, 0x08, 0xCE, 0x80, 0xB4, 0x28, 0x64, 0x72, 0x6F, 0x70, 0x20, 0x6E, 0x20, 0x69, 0x6E, 
37411
  0x64, 0x29, 0x0A, 0x0A, 0x44, 0x72, 0x6F, 0x70, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 
37412
  0x73, 0x74, 0x20, 0x60, 0x6E, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x69, 
37413
  0x6E, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x6F, 0x72, 0x20, 
37414
  0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
37415
  0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 
37416
  0x6F, 0x72, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x0A, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6E, 
37417
  0x63, 0x65, 0x2C, 0x20, 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x6C, 0x79, 
37418
  0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x65, 0x67, 0x61, 
37419
  0x74, 0x69, 0x76, 0x65, 0x2C, 0x20, 0x64, 0x72, 0x6F, 0x70, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
37420
  0x6C, 0x61, 0x73, 0x74, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 
37421
  0x73, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2E, 0xCF, 0x0A, 0x70, 0x61, 0x72, 0x73, 
37422
  0x65, 0x72, 0x2F, 0x65, 0x6F, 0x66, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x84, 0xAE, 
37423
  0x83, 0xA9, 0x01, 0xDA, 0x06, 0xD8, 0x0A, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x65, 0x6F, 
37424
  0x66, 0xDA, 0x08, 0xCE, 0x76, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x65, 0x6F, 0x66, 
37425
  0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x49, 0x6E, 0x64, 0x69, 0x63, 0x61, 
37426
  0x74, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 
37427
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 
37428
  0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x77, 0x61, 0x73, 0x20, 0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 
37429
  0x64, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 
37430
  0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x3A, 
37431
  0x64, 0x65, 0x61, 0x64, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2E, 0xCF, 0x06, 0x78, 0x70, 0x72, 
37432
  0x69, 0x6E, 0x66, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x83, 0x14, 0x82, 0x91, 0x01, 
37433
  0xDA, 0x06, 0xD8, 0x06, 0x78, 0x70, 0x72, 0x69, 0x6E, 0x66, 0xDA, 0x08, 0xCE, 0x5D, 0x28, 0x78, 
37434
  0x70, 0x72, 0x69, 0x6E, 0x66, 0x20, 0x74, 0x6F, 0x20, 0x66, 0x6D, 0x74, 0x20, 0x26, 0x20, 0x78, 
37435
  0x73, 0x29, 0x0A, 0x0A, 0x4C, 0x69, 0x6B, 0x65, 0x20, 0x60, 0x70, 0x72, 0x69, 0x6E, 0x66, 0x60, 
37436
  0x20, 0x62, 0x75, 0x74, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x61, 
37437
  0x6E, 0x20, 0x65, 0x78, 0x70, 0x6C, 0x69, 0x63, 0x69, 0x74, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 
37438
  0x6F, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x60, 0x74, 0x6F, 0x60, 0x2E, 0x20, 0x52, 
37439
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xCF, 0x09, 0x6D, 0x61, 0x74, 
37440
  0x68, 0x2F, 0x6E, 0x65, 0x78, 0x74, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 
37441
  0x81, 0x34, 0x01, 0xDA, 0x06, 0xD8, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6E, 0x65, 0x78, 0x74, 
37442
  0xDA, 0x08, 0xCE, 0x63, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x78, 
37443
  0x20, 0x79, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
37444
  0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x61, 
37445
  0x62, 0x6C, 0x65, 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x6F, 0x69, 
37446
  0x6E, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x78, 
37447
  0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 
37448
  0x6E, 0x20, 0x6F, 0x66, 0x20, 0x79, 0x2E, 0xCF, 0x0C, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 
37449
  0x77, 0x68, 0x65, 0x72, 0x65, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x84, 0xAE, 0x84, 
37450
  0x38, 0x01, 0xDA, 0x06, 0xD8, 0x0C, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x77, 0x68, 0x65, 
37451
  0x72, 0x65, 0xDA, 0x08, 0xCE, 0x81, 0x2B, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x77, 
37452
  0x68, 0x65, 0x72, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 
37453
  0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 
37454
  0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 
37455
  0x6C, 0x69, 0x6E, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x61, 0x6E, 0x64, 0x20, 
37456
  0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 
37457
  0x72, 0x73, 0x65, 0x72, 0x27, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x61, 0x6C, 0x20, 
37458
  0x73, 0x74, 0x61, 0x74, 0x65, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x69, 
37459
  0x73, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 
37460
  0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x6E, 0x75, 0x6D, 
37461
  0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 
37462
  0x72, 0x20, 0x69, 0x73, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 
37463
  0x6F, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x20, 0x49, 0x66, 
37464
  0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 
37465
  0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 
37466
  0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x20, 0x6E, 0x75, 0x6D, 
37467
  0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 
37468
  0x72, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 
37469
  0x73, 0x65, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 
37470
  0x65, 0x2E, 0xCF, 0x0D, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 
37471
  0x74, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x84, 0xD8, 0x82, 0x5C, 0x01, 0xDA, 0x06, 
37472
  0xDA, 0x81, 0xE3, 0xDA, 0x08, 0xCE, 0x35, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x63, 0x75, 
37473
  0x72, 0x72, 0x65, 0x6E, 0x74, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
37474
  0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x6C, 0x79, 0x20, 0x72, 0x75, 
37475
  0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0xCF, 0x05, 0x64, 0x65, 
37476
  0x65, 0x70, 0x3D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x88, 0x6C, 0x01, 0xDA, 
37477
  0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x02, 0x02, 0x02, 0x02, 0x06, 0x00, 0x03, 
37478
  0xCE, 0x05, 0x64, 0x65, 0x65, 0x70, 0x3D, 0xDA, 0x18, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
37479
  0x10, 0x02, 0x02, 0x02, 0x09, 0x67, 0x00, 0x12, 0xCE, 0x09, 0x64, 0x65, 0x65, 0x70, 0x2D, 0x6E, 
37480
  0x6F, 0x74, 0x3D, 0xDA, 0x18, 0xDA, 0x2C, 0xDA, 0x80, 0x8B, 0xDA, 0x5D, 0xDA, 0x80, 0x89, 0xDA, 
37481
  0x85, 0x0E, 0xDA, 0x80, 0x8A, 0xDA, 0x84, 0x1A, 0xDA, 0x30, 0xDA, 0x80, 0xF5, 0x00, 0x67, 0x00, 
37482
  0xDA, 0x1E, 0x00, 0x67, 0x01, 0xDA, 0x83, 0x92, 0x00, 0x67, 0x02, 0xCF, 0x09, 0x64, 0x65, 0x65, 
37483
  0x70, 0x2D, 0x6E, 0x6F, 0x74, 0x3D, 0x04, 0x67, 0x04, 0xCF, 0x02, 0x74, 0x78, 0x09, 0x67, 0x05, 
37484
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x39, 0x0B, 0x67, 0x04, 0xCF, 0x07, 0x5F, 0x30, 
37485
  0x30, 0x30, 0x30, 0x34, 0x61, 0x12, 0x28, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 
37486
  0x62, 0x15, 0x28, 0x08, 0xDA, 0x23, 0x16, 0x27, 0x09, 0xDA, 0x80, 0x90, 0x18, 0x27, 0x0B, 0xCF, 
37487
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x63, 0x1C, 0x27, 0x0D, 0xCF, 0x02, 0x78, 0x78, 0x1E, 
37488
  0x27, 0x0E, 0xCF, 0x02, 0x79, 0x79, 0x2E, 0x44, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
37489
  0x34, 0x64, 0x31, 0x44, 0x09, 0xDA, 0x23, 0x32, 0x43, 0x0A, 0xDA, 0x80, 0x90, 0x34, 0x43, 0x0C, 
37490
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x65, 0x38, 0x43, 0x0E, 0xDA, 0x85, 0x64, 0x3A, 
37491
  0x43, 0x0F, 0xDA, 0x85, 0x65, 0x2C, 0x02, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x04, 0x00, 
37492
  0x00, 0x33, 0x03, 0x04, 0x00, 0x19, 0x04, 0x03, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x2A, 0x06, 0x00, 
37493
  0x00, 0x33, 0x05, 0x06, 0x00, 0x48, 0x06, 0x04, 0x05, 0x19, 0x05, 0x06, 0x00, 0x1C, 0x05, 0x02, 
37494
  0x00, 0x03, 0x05, 0x00, 0x00, 0x2A, 0x07, 0x01, 0x00, 0x23, 0x06, 0x04, 0x07, 0x1C, 0x06, 0x1A, 
37495
  0x00, 0x3D, 0x07, 0x00, 0x00, 0x3D, 0x08, 0x01, 0x00, 0x48, 0x09, 0x07, 0x08, 0x19, 0x07, 0x09, 
37496
  0x00, 0x1C, 0x07, 0x02, 0x00, 0x03, 0x07, 0x00, 0x00, 0x28, 0x08, 0x00, 0x00, 0x29, 0x09, 0x00, 
37497
  0x00, 0x3D, 0x0A, 0x00, 0x00, 0x19, 0x0B, 0x0A, 0x00, 0x21, 0x0A, 0x09, 0x0B, 0x1C, 0x0A, 0x0D, 
37498
  0x00, 0x38, 0x0C, 0x00, 0x09, 0x19, 0x0D, 0x0C, 0x00, 0x38, 0x0C, 0x01, 0x09, 0x19, 0x0E, 0x0C, 
37499
  0x00, 0x30, 0x0D, 0x0E, 0x00, 0x33, 0x0C, 0x02, 0x00, 0x1C, 0x0C, 0x04, 0x00, 0x27, 0x08, 0x00, 
37500
  0x00, 0x1A, 0x04, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x05, 0x09, 0x09, 0x01, 0x1A, 0xF3, 0xFF, 
37501
  0xFF, 0x03, 0x08, 0x00, 0x00, 0x2A, 0x08, 0x02, 0x00, 0x23, 0x07, 0x04, 0x08, 0x1C, 0x07, 0x1A, 
37502
  0x00, 0x3D, 0x08, 0x00, 0x00, 0x3D, 0x09, 0x01, 0x00, 0x48, 0x0A, 0x08, 0x09, 0x19, 0x08, 0x0A, 
37503
  0x00, 0x1C, 0x08, 0x02, 0x00, 0x03, 0x08, 0x00, 0x00, 0x28, 0x09, 0x00, 0x00, 0x29, 0x0A, 0x00, 
37504
  0x00, 0x3D, 0x0B, 0x00, 0x00, 0x19, 0x0C, 0x0B, 0x00, 0x21, 0x0B, 0x0A, 0x0C, 0x1C, 0x0B, 0x0D, 
37505
  0x00, 0x38, 0x0D, 0x00, 0x0A, 0x19, 0x0E, 0x0D, 0x00, 0x38, 0x0D, 0x01, 0x0A, 0x19, 0x0F, 0x0D, 
37506
  0x00, 0x30, 0x0E, 0x0F, 0x00, 0x33, 0x0D, 0x02, 0x00, 0x1C, 0x0D, 0x04, 0x00, 0x27, 0x09, 0x00, 
37507
  0x00, 0x1A, 0x04, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x05, 0x0A, 0x0A, 0x01, 0x1A, 0xF3, 0xFF, 
37508
  0xFF, 0x03, 0x09, 0x00, 0x00, 0x2A, 0x09, 0x03, 0x00, 0x23, 0x08, 0x04, 0x09, 0x1C, 0x08, 0x09, 
37509
  0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x0A, 0x04, 0x00, 0x33, 0x09, 0x0A, 0x00, 0x2F, 0x01, 0x00, 
37510
  0x00, 0x2A, 0x0B, 0x04, 0x00, 0x33, 0x0A, 0x0B, 0x00, 0x30, 0x09, 0x0A, 0x00, 0x34, 0x02, 0x00, 
37511
  0x00, 0x2A, 0x0A, 0x05, 0x00, 0x23, 0x09, 0x04, 0x0A, 0x1C, 0x09, 0x09, 0x00, 0x2F, 0x00, 0x00, 
37512
  0x00, 0x2A, 0x0B, 0x06, 0x00, 0x33, 0x0A, 0x0B, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x2A, 0x0C, 0x06, 
37513
  0x00, 0x33, 0x0B, 0x0C, 0x00, 0x30, 0x0A, 0x0B, 0x00, 0x34, 0x02, 0x00, 0x00, 0x2A, 0x0B, 0x07, 
37514
  0x00, 0x23, 0x0A, 0x04, 0x0B, 0x1C, 0x0A, 0x09, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x0C, 0x08, 
37515
  0x00, 0x33, 0x0B, 0x0C, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x2A, 0x0D, 0x08, 0x00, 0x33, 0x0C, 0x0D, 
37516
  0x00, 0x48, 0x0D, 0x0B, 0x0C, 0x03, 0x0D, 0x00, 0x00, 0x48, 0x0B, 0x00, 0x01, 0x03, 0x0B, 0x00, 
37517
  0x00, 0x88, 0x4D, 0x01, 0x04, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x02, 0x0E, 0x00, 0x0E, 
37518
  0x00, 0x0E, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x05, 0x00, 0x05, 0x00, 
37519
  0x05, 0x01, 0x18, 0x00, 0x23, 0x00, 0x12, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x02, 0x14, 0x01, 
37520
  0x14, 0x00, 0x1E, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x01, 0x1E, 0x00, 0x16, 0x01, 0x1E, 0x00, 
37521
  0x16, 0x01, 0x1A, 0x00, 0x1A, 0x00, 0x16, 0x01, 0x1F, 0x00, 0x18, 0xBF, 0xFF, 0x16, 0xBF, 0xFD, 
37522
  0x14, 0x00, 0x14, 0xBF, 0xFE, 0x12, 0xBF, 0xFE, 0x05, 0x00, 0x05, 0x00, 0x05, 0x0A, 0x18, 0x00, 
37523
  0x23, 0x00, 0x12, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x02, 0x14, 0x01, 0x14, 0x00, 0x1E, 0x00, 
37524
  0x14, 0x00, 0x14, 0x00, 0x14, 0x01, 0x1E, 0x00, 0x16, 0x01, 0x1E, 0x00, 0x16, 0x01, 0x1A, 0x00, 
37525
  0x1A, 0x00, 0x16, 0x01, 0x1F, 0x00, 0x18, 0xBF, 0xFF, 0x16, 0xBF, 0xFD, 0x14, 0x00, 0x14, 0xBF, 
37526
  0xFE, 0x12, 0xBF, 0xF5, 0x05, 0x00, 0x05, 0x00, 0x05, 0x13, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 
37527
  0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 0xED, 0x05, 0x00, 0x05, 0x00, 0x05, 
37528
  0x14, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x0E, 0x00, 0x0E, 
37529
  0xBF, 0xEC, 0x05, 0x00, 0x05, 0x00, 0x05, 0x15, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x20, 0x00, 
37530
  0x20, 0x00, 0x20, 0x00, 0x0F, 0x00, 0x0F, 0x01, 0x07, 0x00, 0x07, 0xDA, 0x80, 0x8D, 0x00, 0x06, 
37531
  0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xDA, 0x83, 0x92, 0x00, 0x06, 0x02, 0xDA, 0x85, 0x57, 0x30, 
37532
  0x00, 0x01, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x2A, 
37533
  0x04, 0x01, 0x00, 0x34, 0x04, 0x00, 0x00, 0x88, 0x70, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x03, 
37534
  0x00, 0x03, 0x00, 0x03, 0xDA, 0x08, 0xCE, 0x80, 0x8F, 0x28, 0x64, 0x65, 0x65, 0x70, 0x3D, 0x20, 
37535
  0x78, 0x20, 0x79, 0x29, 0x0A, 0x0A, 0x4C, 0x69, 0x6B, 0x65, 0x20, 0x60, 0x3D, 0x60, 0x2C, 0x20, 
37536
  0x62, 0x75, 0x74, 0x20, 0x6D, 0x75, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 
37537
  0x73, 0x20, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x73, 0x2C, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 
37538
  0x73, 0x2C, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x73, 0x29, 0x20, 0x61, 0x72, 0x65, 0x20, 
37539
  0x63, 0x6F, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x72, 0x65, 0x64, 0x0A, 0x65, 0x71, 0x75, 0x61, 0x6C, 
37540
  0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x69, 0x64, 
37541
  0x65, 0x6E, 0x74, 0x69, 0x63, 0x61, 0x6C, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 
37542
  0x65, 0x2E, 0x20, 0x4D, 0x75, 0x63, 0x68, 0x20, 0x73, 0x6C, 0x6F, 0x77, 0x65, 0x72, 0x20, 0x74, 
37543
  0x68, 0x61, 0x6E, 0x20, 0x60, 0x3D, 0x60, 0x2E, 0xCF, 0x0E, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x69, 
37544
  0x6E, 0x74, 0x33, 0x32, 0x2D, 0x6D, 0x61, 0x78, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
37545
  0x82, 0x9A, 0x81, 0x9E, 0x01, 0xDA, 0x06, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0xDA, 0x08, 0xCE, 0x47, 
37546
  0x54, 0x68, 0x65, 0x20, 0x6D, 0x61, 0x78, 0x69, 0x6D, 0x75, 0x6D, 0x20, 0x63, 0x6F, 0x6E, 0x74, 
37547
  0x69, 0x67, 0x75, 0x6F, 0x75, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x72, 
37548
  0x65, 0x70, 0x72, 0x65, 0x73, 0x74, 0x65, 0x6E, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x62, 0x79, 0x20, 
37549
  0x61, 0x20, 0x33, 0x32, 0x20, 0x62, 0x69, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x20, 
37550
  0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0xCF, 0x09, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x70, 
37551
  0x6F, 0x70, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x10, 0x73, 0x72, 0x63, 0x2F, 0x63, 
37552
  0x6F, 0x72, 0x65, 0x2F, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x63, 0x80, 0xA5, 0x01, 0xDA, 0x06, 
37553
  0xD8, 0x09, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x70, 0x6F, 0x70, 0xDA, 0x08, 0xCE, 0x80, 0x86, 
37554
  0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x70, 0x6F, 0x70, 0x20, 0x61, 0x72, 0x72, 0x29, 0x0A, 
37555
  0x0A, 0x52, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 
37556
  0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
37557
  0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 
37558
  0x20, 0x69, 0x74, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 
37559
  0x79, 0x20, 0x69, 0x73, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 
37560
  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x20, 0x4D, 0x6F, 0x64, 
37561
  0x69, 0x66, 0x69, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x70, 0x75, 0x74, 0x20, 
37562
  0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xCF, 0x09, 0x65, 0x76, 0x2F, 0x72, 0x77, 0x6C, 0x6F, 0x63, 
37563
  0x6B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x40, 0x8C, 0x91, 0x01, 0xDA, 0x06, 0xD8, 
37564
  0x09, 0x65, 0x76, 0x2F, 0x72, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 0xDA, 0x08, 0xCE, 0x40, 0x28, 0x65, 
37565
  0x76, 0x2F, 0x72, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 
37566
  0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x72, 0x65, 0x61, 0x64, 0x2D, 0x77, 0x72, 0x69, 
37567
  0x74, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x6F, 0x6F, 0x72, 0x64, 
37568
  0x69, 0x6E, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x2E, 0xCF, 0x0A, 
37569
  0x66, 0x66, 0x69, 0x2F, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
37570
  0x00, 0xDA, 0x0C, 0x85, 0xBD, 0x01, 0xDA, 0x06, 0xD8, 0x0A, 0x66, 0x66, 0x69, 0x2F, 0x6C, 0x6F, 
37571
  0x6F, 0x6B, 0x75, 0x70, 0xDA, 0x08, 0xCE, 0x80, 0x95, 0x28, 0x66, 0x66, 0x69, 0x2F, 0x6C, 0x6F, 
37572
  0x6F, 0x6B, 0x75, 0x70, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x73, 0x79, 0x6D, 0x62, 
37573
  0x6F, 0x6C, 0x2D, 0x6E, 0x61, 0x6D, 0x65, 0x29, 0x0A, 0x0A, 0x4C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 
37574
  0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 
37575
  0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x2E, 0x20, 
37576
  0x41, 0x6C, 0x6C, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 
37577
  0x70, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 
37578
  0x20, 0x72, 0x61, 0x77, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x69, 0x66, 0x20, 
37579
  0x74, 0x68, 0x65, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x69, 0x73, 0x20, 0x66, 0x6F, 
37580
  0x75, 0x6E, 0x64, 0x2C, 0x20, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xCF, 0x02, 
37581
  0x70, 0x70, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x86, 0xDA, 0x01, 0xDA, 0x06, 
37582
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x05, 0x0A, 0x00, 0x02, 0xCE, 
37583
  0x02, 0x70, 0x70, 0xDA, 0x18, 0xDA, 0x80, 0xC1, 0xDA, 0x80, 0xC2, 0xDA, 0x80, 0xDF, 0xDA, 0x80, 
37584
  0xC3, 0xDA, 0x80, 0xC4, 0x00, 0x0A, 0x00, 0xDA, 0x1E, 0x00, 0x0A, 0x01, 0xDA, 0x85, 0x7D, 0x2A, 
37585
  0x02, 0x00, 0x00, 0x2A, 0x03, 0x01, 0x00, 0x30, 0x02, 0x03, 0x00, 0x2A, 0x03, 0x02, 0x00, 0x33, 
37586
  0x02, 0x03, 0x00, 0x30, 0x02, 0x00, 0x00, 0x2A, 0x04, 0x03, 0x00, 0x33, 0x03, 0x04, 0x00, 0x2A, 
37587
  0x02, 0x04, 0x00, 0x34, 0x02, 0x00, 0x00, 0x86, 0xDD, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
37588
  0x00, 0x0B, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0xDA, 0x08, 0xCE, 0x68, 
37589
  0x28, 0x70, 0x70, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x50, 0x72, 0x65, 0x74, 0x74, 0x79, 0x2D, 0x70, 
37590
  0x72, 0x69, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x74, 0x64, 0x6F, 0x75, 0x74, 0x20, 0x6F, 
37591
  0x72, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x2A, 0x6F, 0x75, 0x74, 0x2A, 0x29, 0x60, 0x2E, 
37592
  0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x73, 0x74, 0x72, 0x69, 
37593
  0x6E, 0x67, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x69, 0x73, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 
37594
  0x20, 0x2A, 0x70, 0x72, 0x65, 0x74, 0x74, 0x79, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x2A, 
37595
  0x20, 0x22, 0x25, 0x71, 0x22, 0x29, 0x60, 0x2E, 0xCF, 0x0D, 0x6E, 0x65, 0x74, 0x2F, 0x6C, 0x6F, 
37596
  0x63, 0x61, 0x6C, 0x6E, 0x61, 0x6D, 0x65, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x12, 
37597
  0x82, 0xCA, 0x01, 0xDA, 0x06, 0xD8, 0x0D, 0x6E, 0x65, 0x74, 0x2F, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 
37598
  0x6E, 0x61, 0x6D, 0x65, 0xDA, 0x08, 0xCE, 0x51, 0x28, 0x6E, 0x65, 0x74, 0x2F, 0x6C, 0x6F, 0x63, 
37599
  0x61, 0x6C, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x29, 0x0A, 0x0A, 
37600
  0x47, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x20, 0x61, 
37601
  0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x6F, 0x72, 0x74, 0x20, 
37602
  0x69, 0x6E, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 
37603
  0x61, 0x74, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2E, 0xCF, 0x06, 0x78, 0x70, 0x72, 0x69, 0x6E, 
37604
  0x74, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x83, 0x14, 0x82, 0x22, 0x01, 0xDA, 0x06, 
37605
  0xD8, 0x06, 0x78, 0x70, 0x72, 0x69, 0x6E, 0x74, 0xDA, 0x08, 0xCE, 0x80, 0xD4, 0x28, 0x78, 0x70, 
37606
  0x72, 0x69, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x50, 
37607
  0x72, 0x69, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6F, 
37608
  0x72, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x65, 0x78, 
37609
  0x70, 0x6C, 0x69, 0x63, 0x69, 0x74, 0x6C, 0x79, 0x20, 0x28, 0x6E, 0x6F, 0x20, 0x64, 0x79, 0x6E, 
37610
  0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x29, 0x20, 0x77, 
37611
  0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x6E, 
37612
  0x65, 0x77, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 
37613
  0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x70, 
37614
  0x72, 0x69, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
37615
  0x69, 0x72, 0x73, 0x74, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x61, 
37616
  0x6E, 0x64, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 
37617
  0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x70, 0x72, 0x69, 
37618
  0x6E, 0x74, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 
37619
  0x2E, 0xCF, 0x09, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x64, 0x79, 0x6E, 0x73, 0xD3, 0x04, 0xDA, 0x03, 
37620
  0xD2, 0x03, 0x00, 0xDA, 0x18, 0x85, 0x6F, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 
37621
  0x00, 0x0C, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x06, 0x23, 0x00, 0x08, 0xCE, 0x09, 0x77, 
37622
  0x69, 0x74, 0x68, 0x2D, 0x64, 0x79, 0x6E, 0x73, 0xDA, 0x18, 0xCF, 0x06, 0x73, 0x65, 0x74, 0x64, 
37623
  0x79, 0x6E, 0xDA, 0x81, 0x8C, 0xDA, 0x82, 0xAE, 0xDA, 0x81, 0x5E, 0xDA, 0x81, 0x5D, 0xDA, 0x82, 
37624
  0xB0, 0x00, 0x23, 0x00, 0xDA, 0x80, 0x81, 0x00, 0x23, 0x01, 0xDA, 0x82, 0xB5, 0x00, 0x23, 0x02, 
37625
  0xDA, 0x85, 0x8D, 0x01, 0x15, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x37, 0x02, 
37626
  0x15, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x38, 0x04, 0x15, 0x06, 0xCF, 0x07, 
37627
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x39, 0x07, 0x15, 0x07, 0xDA, 0x80, 0x90, 0x14, 0x23, 0x04, 
37628
  0xCF, 0x09, 0x64, 0x79, 0x6E, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x3E, 0x03, 0x00, 0x00, 0x19, 
37629
  0x04, 0x03, 0x00, 0x29, 0x03, 0x00, 0x00, 0x3D, 0x05, 0x00, 0x00, 0x19, 0x06, 0x05, 0x00, 0x21, 
37630
  0x05, 0x03, 0x06, 0x1C, 0x05, 0x0F, 0x00, 0x19, 0x07, 0x03, 0x00, 0x2F, 0x07, 0x00, 0x00, 0x33, 
37631
  0x08, 0x00, 0x00, 0x05, 0x09, 0x07, 0x01, 0x2F, 0x09, 0x00, 0x00, 0x33, 0x0A, 0x00, 0x00, 0x2A, 
37632
  0x0B, 0x00, 0x00, 0x31, 0x0B, 0x08, 0x0A, 0x43, 0x09, 0x00, 0x00, 0x30, 0x04, 0x09, 0x00, 0x2A, 
37633
  0x0A, 0x01, 0x00, 0x33, 0x08, 0x0A, 0x00, 0x05, 0x03, 0x03, 0x02, 0x1A, 0xF1, 0xFF, 0xFF, 0x44, 
37634
  0x03, 0x00, 0x00, 0x2A, 0x06, 0x02, 0x00, 0x30, 0x06, 0x03, 0x00, 0x32, 0x04, 0x00, 0x00, 0x32, 
37635
  0x01, 0x00, 0x00, 0x43, 0x05, 0x00, 0x00, 0x2A, 0x06, 0x03, 0x00, 0x2A, 0x07, 0x04, 0x00, 0x31, 
37636
  0x06, 0x05, 0x07, 0x43, 0x03, 0x00, 0x00, 0x2A, 0x06, 0x05, 0x00, 0x30, 0x06, 0x03, 0x00, 0x43, 
37637
  0x05, 0x00, 0x00, 0x03, 0x05, 0x00, 0x00, 0x85, 0x76, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x17, 
37638
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x11, 0x00, 0x11, 0x00, 0x29, 0x00, 0x1F, 
37639
  0x00, 0x1F, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
37640
  0x05, 0x00, 0x05, 0x02, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
37641
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 
37642
  0x08, 0xCE, 0x80, 0xE4, 0x28, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x64, 0x79, 0x6E, 0x73, 0x20, 0x62, 
37643
  0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 
37644
  0x0A, 0x52, 0x75, 0x6E, 0x20, 0x61, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x6F, 0x66, 0x20, 
37645
  0x63, 0x6F, 0x64, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x66, 0x69, 
37646
  0x62, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x68, 0x61, 0x73, 0x20, 0x73, 0x6F, 0x6D, 
37647
  0x65, 0x0A, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 
37648
  0x67, 0x73, 0x20, 0x73, 0x65, 0x74, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 
37649
  0x72, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x6D, 0x61, 0x73, 0x6B, 0x20, 
37650
  0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x0A, 0x6F, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 
37651
  0x73, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 
37652
  0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 
37653
  0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x70, 0x65, 0x72, 0x6C, 0x79, 0x0A, 0x75, 0x6E, 0x73, 
37654
  0x65, 0x74, 0x2C, 0x20, 0x61, 0x73, 0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 
37655
  0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 
37656
  0x72, 0x2D, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x2E, 0xDA, 0x3D, 0xCB, 0xCF, 0x0D, 0x6F, 0x73, 0x2F, 
37657
  0x70, 0x72, 0x6F, 0x63, 0x2D, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
37658
  0x00, 0xDA, 0x04, 0x83, 0x01, 0x01, 0xDA, 0x06, 0xD8, 0x0D, 0x6F, 0x73, 0x2F, 0x70, 0x72, 0x6F, 
37659
  0x63, 0x2D, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0xDA, 0x08, 0xCE, 0x80, 0x96, 0x28, 0x6F, 0x73, 0x2F, 
37660
  0x70, 0x72, 0x6F, 0x63, 0x2D, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x29, 
37661
  0x0A, 0x0A, 0x57, 0x61, 0x69, 0x74, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6F, 0x63, 
37662
  0x65, 0x73, 0x73, 0x20, 0x69, 0x66, 0x20, 0x69, 0x74, 0x20, 0x68, 0x61, 0x73, 0x20, 0x6E, 0x6F, 
37663
  0x74, 0x20, 0x62, 0x65, 0x65, 0x6E, 0x20, 0x77, 0x61, 0x69, 0x74, 0x65, 0x64, 0x20, 0x6F, 0x6E, 
37664
  0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x70, 0x69, 0x70, 0x65, 
37665
  0x73, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x60, 0x6F, 0x73, 
37666
  0x2F, 0x73, 0x70, 0x61, 0x77, 0x6E, 0x60, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 
37667
  0x68, 0x61, 0x76, 0x65, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x65, 0x6E, 0x20, 0x63, 0x6C, 
37668
  0x6F, 0x73, 0x65, 0x64, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 
37669
  0x6C, 0x2E, 0xCF, 0x0B, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xD3, 
37670
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0xA0, 0x4A, 0x01, 0xDA, 0x06, 0xDA, 0x82, 0xE9, 
37671
  0xDA, 0x08, 0xCE, 0x81, 0xCB, 0x28, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x73, 0x6C, 0x69, 0x63, 
37672
  0x65, 0x20, 0x61, 0x72, 0x72, 0x74, 0x75, 0x70, 0x20, 0x5B, 0x2C, 0x73, 0x74, 0x61, 0x72, 0x74, 
37673
  0x3D, 0x30, 0x20, 0x5B, 0x2C, 0x65, 0x6E, 0x64, 0x3D, 0x28, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 
37674
  0x20, 0x61, 0x72, 0x72, 0x74, 0x75, 0x70, 0x29, 0x5D, 0x5D, 0x29, 0x0A, 0x0A, 0x54, 0x61, 0x6B, 
37675
  0x65, 0x20, 0x61, 0x20, 0x73, 0x75, 0x62, 0x2D, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 
37676
  0x20, 0x6F, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x72, 0x20, 
37677
  0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 
37678
  0x20, 0x60, 0x73, 0x74, 0x61, 0x72, 0x74, 0x60, 0x20, 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x73, 0x69, 
37679
  0x76, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x60, 0x65, 0x6E, 0x64, 
37680
  0x60, 0x20, 0x65, 0x78, 0x63, 0x6C, 0x75, 0x73, 0x69, 0x76, 0x65, 0x2E, 0x20, 0x49, 0x66, 0x20, 
37681
  0x60, 0x73, 0x74, 0x61, 0x72, 0x74, 0x60, 0x20, 0x6F, 0x72, 0x20, 0x60, 0x65, 0x6E, 0x64, 0x60, 
37682
  0x20, 0x61, 0x72, 0x65, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 
37683
  0x64, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 
37684
  0x74, 0x6F, 0x20, 0x30, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x65, 0x6E, 
37685
  0x67, 0x74, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x61, 0x72, 0x72, 0x74, 0x75, 0x70, 0x60, 0x2C, 
37686
  0x20, 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x6C, 0x79, 0x2E, 0x20, 0x60, 
37687
  0x73, 0x74, 0x61, 0x72, 0x74, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x65, 0x6E, 0x64, 0x60, 
37688
  0x20, 0x63, 0x61, 0x6E, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x6E, 0x65, 0x67, 
37689
  0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 
37690
  0x65, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 
37691
  0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 
37692
  0x6E, 0x70, 0x75, 0x74, 0x2E, 0x20, 0x4E, 0x6F, 0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
37693
  0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x2D, 0x31, 0x20, 0x69, 0x73, 0x20, 0x73, 0x79, 0x6E, 0x6F, 
37694
  0x6E, 0x79, 0x6D, 0x6F, 0x75, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x69, 0x6E, 0x64, 0x65, 
37695
  0x78, 0x20, 0x60, 0x28, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x61, 0x72, 0x72, 0x74, 0x75, 
37696
  0x70, 0x29, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x61, 0x20, 0x66, 
37697
  0x75, 0x6C, 0x6C, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x73, 0x6C, 0x69, 
37698
  0x63, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
37699
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2E, 
37700
  0xCF, 0x0B, 0x65, 0x76, 0x61, 0x6C, 0x2D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0xD3, 0x03, 0xDA, 
37701
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8A, 0x63, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
37702
  0x00, 0x00, 0x07, 0x01, 0x01, 0x01, 0x02, 0x11, 0x00, 0x06, 0xCE, 0x0B, 0x65, 0x76, 0x61, 0x6C, 
37703
  0x2D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0xDA, 0x18, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
37704
  0x08, 0x01, 0x01, 0x01, 0x09, 0x2D, 0x00, 0x04, 0xCE, 0x09, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 
37705
  0x61, 0x6C, 0x6C, 0xDA, 0x18, 0xDA, 0x82, 0x18, 0xDA, 0x84, 0xB0, 0xD8, 0x0D, 0x70, 0x61, 0x72, 
37706
  0x73, 0x65, 0x72, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0xDA, 0x82, 0x10, 0xD8, 0x0C, 0x70, 
37707
  0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x65, 0x72, 0x72, 0x6F, 0x72, 0xDA, 0x85, 0x42, 0xD8, 0x0F, 
37708
  0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x68, 0x61, 0x73, 0x2D, 0x6D, 0x6F, 0x72, 0x65, 0xD8, 
37709
  0x0E, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x65, 0xDA, 
37710
  0x81, 0x8C, 0x00, 0x2D, 0x00, 0xDA, 0x83, 0x61, 0x00, 0x2D, 0x01, 0xCF, 0x09, 0x70, 0x61, 0x72, 
37711
  0x73, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 0x02, 0x2D, 0x03, 0xDA, 0x64, 0x04, 0x2D, 0x04, 0xDA, 0x23, 
37712
  0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x19, 0x03, 0x02, 0x00, 0x3E, 0x02, 0x00, 0x00, 
37713
  0x19, 0x04, 0x02, 0x00, 0x30, 0x03, 0x00, 0x00, 0x2A, 0x05, 0x01, 0x00, 0x33, 0x02, 0x05, 0x00, 
37714
  0x2F, 0x03, 0x00, 0x00, 0x2A, 0x05, 0x02, 0x00, 0x33, 0x02, 0x05, 0x00, 0x2A, 0x06, 0x03, 0x00, 
37715
  0x23, 0x05, 0x06, 0x02, 0x1C, 0x05, 0x06, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x06, 0x04, 0x00, 
37716
  0x33, 0x02, 0x06, 0x00, 0x01, 0x02, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x2F, 0x03, 0x00, 0x00, 
37717
  0x2A, 0x05, 0x05, 0x00, 0x33, 0x02, 0x05, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x05, 0x06, 0x00, 
37718
  0x33, 0x02, 0x05, 0x00, 0x1C, 0x02, 0x08, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x06, 0x07, 0x00, 
37719
  0x33, 0x05, 0x06, 0x00, 0x30, 0x04, 0x05, 0x00, 0x2A, 0x07, 0x08, 0x00, 0x33, 0x06, 0x07, 0x00, 
37720
  0x1A, 0xF6, 0xFF, 0xFF, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x05, 0x02, 0x00, 0x33, 0x02, 0x05, 0x00, 
37721
  0x2A, 0x06, 0x03, 0x00, 0x23, 0x05, 0x06, 0x02, 0x1C, 0x05, 0x06, 0x00, 0x2F, 0x03, 0x00, 0x00, 
37722
  0x2A, 0x06, 0x04, 0x00, 0x33, 0x02, 0x06, 0x00, 0x01, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 
37723
  0x03, 0x04, 0x00, 0x00, 0x8A, 0x57, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 
37724
  0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x09, 0x00, 0x09, 0x00, 
37725
  0x05, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x02, 0x05, 0x00, 0x05, 
37726
  0x00, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x17, 0x00, 0x17, 0x00, 0x17, 
37727
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x02, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 
37728
  0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0xBF, 
37729
  0xFF, 0x05, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x01, 0x01, 0x01, 0x05, 0x11, 0x00, 
37730
  0x03, 0xCE, 0x04, 0x65, 0x76, 0x61, 0x6C, 0xDA, 0x18, 0xD0, 0x04, 0x65, 0x76, 0x61, 0x6C, 0xDA, 
37731
  0x80, 0x9E, 0xDA, 0x2C, 0xDA, 0x80, 0xE5, 0xDA, 0x82, 0x10, 0x00, 0x11, 0x00, 0xDA, 0x82, 0xD3, 
37732
  0x00, 0x11, 0x01, 0xCF, 0x04, 0x65, 0x76, 0x61, 0x6C, 0x05, 0x11, 0x03, 0xDA, 0x81, 0x08, 0x26, 
37733
  0x02, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x31, 0x00, 0x02, 0x03, 0x2A, 0x03, 0x01, 0x00, 0x33, 
37734
  0x02, 0x03, 0x00, 0x19, 0x03, 0x02, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x05, 0x02, 0x00, 0x33, 
37735
  0x04, 0x05, 0x00, 0x2A, 0x06, 0x03, 0x00, 0x23, 0x05, 0x04, 0x06, 0x1C, 0x05, 0x02, 0x00, 0x34, 
37736
  0x03, 0x00, 0x00, 0x2A, 0x06, 0x04, 0x00, 0x39, 0x04, 0x03, 0x06, 0x01, 0x04, 0x00, 0x00, 0x04, 
37737
  0x00, 0x00, 0x00, 0x8A, 0x3F, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x03, 
37738
  0x01, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x01, 0x05, 0x01, 0x0C, 
37739
  0x00, 0x0C, 0x00, 0x05, 0x00, 0x05, 0x00, 0x11, 0x00, 0xDA, 0x83, 0x61, 0x00, 0x11, 0x01, 0xDA, 
37740
  0x85, 0xA1, 0x00, 0x11, 0x02, 0xDA, 0x23, 0x04, 0x10, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
37741
  0x30, 0x34, 0x4F, 0x07, 0x10, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x4E, 0x0A, 
37742
  0x10, 0x06, 0xDA, 0x1E, 0x26, 0x02, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x04, 0x00, 0x00, 
37743
  0x33, 0x03, 0x04, 0x00, 0x19, 0x04, 0x03, 0x00, 0x26, 0x05, 0x00, 0x00, 0x47, 0x03, 0x04, 0x05, 
37744
  0x19, 0x05, 0x03, 0x00, 0x1D, 0x05, 0x08, 0x00, 0x38, 0x03, 0x04, 0x05, 0x19, 0x06, 0x03, 0x00, 
37745
  0x2F, 0x06, 0x00, 0x00, 0x2A, 0x03, 0x01, 0x00, 0x33, 0x02, 0x03, 0x00, 0x47, 0x05, 0x04, 0x05, 
37746
  0x1A, 0xF9, 0xFF, 0xFF, 0x03, 0x02, 0x00, 0x00, 0x8A, 0x67, 0x03, 0x01, 0x0B, 0x00, 0x0B, 0x00, 
37747
  0x0B, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
37748
  0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFB, 0x01, 0xDA, 0x08, 0xCE, 0x80, 
37749
  0x84, 0x28, 0x65, 0x76, 0x61, 0x6C, 0x2D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x74, 
37750
  0x72, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 
37751
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 
37752
  0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 
37753
  0x74, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x72, 
37754
  0x6F, 0x6C, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x65, 0x6E, 0x76, 0x69, 
37755
  0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x65, 0x65, 0x64, 0x65, 
37756
  0x64, 0x2C, 0x20, 0x75, 0x73, 0x65, 0x20, 0x60, 0x72, 0x75, 0x6E, 0x2D, 0x63, 0x6F, 0x6E, 0x74, 
37757
  0x65, 0x78, 0x74, 0x60, 0x2E, 0xCF, 0x0B, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x2F, 0x62, 0x75, 0x69, 
37758
  0x6C, 0x64, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x08, 0x38, 0x63, 0x38, 0x31, 0x39, 0x62, 0x31, 0x66, 
37759
  0xDA, 0x08, 0xCE, 0x32, 0x54, 0x68, 0x65, 0x20, 0x62, 0x75, 0x69, 0x6C, 0x64, 0x20, 0x69, 0x64, 
37760
  0x65, 0x6E, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
37761
  0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x70, 0x72, 
37762
  0x6F, 0x67, 0x72, 0x61, 0x6D, 0x2E, 0xCF, 0x07, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x70, 0x69, 0xD3, 
37763
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 0x94, 0x01, 0xDA, 0x06, 0xC8, 0x18, 
37764
  0x2D, 0x44, 0x54, 0xFB, 0x21, 0x09, 0x40, 0xDA, 0x08, 0xCE, 0x0D, 0x54, 0x68, 0x65, 0x20, 0x76, 
37765
  0x61, 0x6C, 0x75, 0x65, 0x20, 0x70, 0x69, 0x2E, 0xCF, 0x08, 0x6E, 0x65, 0x74, 0x2F, 0x72, 0x65, 
37766
  0x61, 0x64, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x12, 0x83, 0x0F, 0x01, 0xDA, 0x06, 
37767
  0xD8, 0x08, 0x6E, 0x65, 0x74, 0x2F, 0x72, 0x65, 0x61, 0x64, 0xDA, 0x08, 0xCE, 0x81, 0xD0, 0x28, 
37768
  0x6E, 0x65, 0x74, 0x2F, 0x72, 0x65, 0x61, 0x64, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 
37769
  0x6E, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x62, 0x75, 0x66, 0x20, 
37770
  0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x61, 0x64, 0x20, 0x75, 
37771
  0x70, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6F, 
37772
  0x6D, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2C, 0x20, 0x73, 0x75, 0x73, 0x70, 
37773
  0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 
37774
  0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x74, 
37775
  0x68, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x76, 0x61, 
37776
  0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 
37777
  0x61, 0x6C, 0x73, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x77, 
37778
  0x6F, 0x72, 0x64, 0x20, 0x60, 0x3A, 0x61, 0x6C, 0x6C, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 
37779
  0x61, 0x64, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 
37780
  0x65, 0x72, 0x20, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 
37781
  0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6C, 0x65, 0x73, 0x73, 0x20, 
37782
  0x74, 0x68, 0x61, 0x6E, 0x20, 0x6E, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 
37783
  0x20, 0x61, 0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x28, 0x61, 0x6E, 0x64, 0x20, 
37784
  0x6D, 0x6F, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x30, 0x29, 0x2C, 0x20, 0x77, 0x69, 
37785
  0x6C, 0x6C, 0x20, 0x70, 0x75, 0x73, 0x68, 0x20, 0x74, 0x68, 0x6F, 0x73, 0x65, 0x20, 0x62, 0x79, 
37786
  0x74, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x65, 
37787
  0x61, 0x72, 0x6C, 0x79, 0x2E, 0x20, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 
37788
  0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x20, 
37789
  0x69, 0x6E, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2C, 0x20, 0x61, 0x66, 0x74, 0x65, 
37790
  0x72, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 
37791
  0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
37792
  0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x75, 
37793
  0x70, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 
37794
  0x73, 0x20, 0x69, 0x6E, 0x20, 0x69, 0x74, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x72, 0x61, 0x69, 0x73, 
37795
  0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 
37796
  0x68, 0x65, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x65, 0x64, 0x2E, 0xCF, 
37797
  0x04, 0x70, 0x6F, 0x73, 0x3F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x83, 0x28, 
37798
  0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x01, 0x06, 
37799
  0x00, 0x02, 0xCE, 0x04, 0x70, 0x6F, 0x73, 0x3F, 0xDA, 0x18, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
37800
  0x00, 0x08, 0x02, 0x02, 0x02, 0x01, 0x1B, 0x00, 0x09, 0xCE, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61, 
37801
  0x72, 0x65, 0xDA, 0x18, 0xD0, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x00, 0x1B, 0x00, 
37802
  0xDA, 0x1E, 0x00, 0x1B, 0x01, 0xDA, 0x83, 0x92, 0x00, 0x1B, 0x02, 0xCF, 0x07, 0x63, 0x6F, 0x6D, 
37803
  0x70, 0x61, 0x72, 0x65, 0x02, 0x09, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x69, 
37804
  0x03, 0x06, 0x04, 0xDA, 0x80, 0xFB, 0x09, 0x1B, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
37805
  0x30, 0x68, 0x0E, 0x16, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x6A, 0x0F, 0x13, 
37806
  0x05, 0xDA, 0x80, 0xFB, 0x16, 0x1B, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x67, 
37807
  0x2A, 0x04, 0x00, 0x00, 0x39, 0x03, 0x00, 0x04, 0x19, 0x04, 0x03, 0x00, 0x1C, 0x04, 0x05, 0x00, 
37808
  0x30, 0x00, 0x01, 0x00, 0x33, 0x05, 0x04, 0x00, 0x19, 0x03, 0x05, 0x00, 0x1A, 0x02, 0x00, 0x00, 
37809
  0x26, 0x03, 0x00, 0x00, 0x19, 0x04, 0x03, 0x00, 0x1C, 0x04, 0x02, 0x00, 0x03, 0x04, 0x00, 0x00, 
37810
  0x2A, 0x05, 0x00, 0x00, 0x39, 0x03, 0x01, 0x05, 0x19, 0x05, 0x03, 0x00, 0x1C, 0x05, 0x06, 0x00, 
37811
  0x30, 0x01, 0x00, 0x00, 0x33, 0x06, 0x05, 0x00, 0x08, 0x07, 0x06, 0xFF, 0x19, 0x03, 0x07, 0x00, 
37812
  0x1A, 0x02, 0x00, 0x00, 0x26, 0x03, 0x00, 0x00, 0x19, 0x05, 0x03, 0x00, 0x1C, 0x05, 0x02, 0x00, 
37813
  0x03, 0x05, 0x00, 0x00, 0x25, 0x03, 0x00, 0x01, 0x03, 0x03, 0x00, 0x00, 0x83, 0x00, 0x12, 0x00, 
37814
  0x12, 0x00, 0x05, 0x00, 0x05, 0x00, 0x24, 0x00, 0x24, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 
37815
  0xFF, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x12, 0x00, 0x12, 0x00, 0x05, 0x00, 0x05, 0x00, 0x27, 
37816
  0x00, 0x27, 0x00, 0x24, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFE, 0x03, 0x00, 0x03, 0x00, 
37817
  0x03, 0x03, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xDA, 0x85, 0xC2, 
37818
  0x29, 0x02, 0x00, 0x00, 0x30, 0x00, 0x02, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 
37819
  0x24, 0x03, 0x02, 0x01, 0x03, 0x03, 0x00, 0x00, 0x83, 0x28, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 
37820
  0x33, 0x00, 0x30, 0x00, 0x30, 0xDA, 0x08, 0xCE, 0x27, 0x28, 0x70, 0x6F, 0x73, 0x3F, 0x20, 0x78, 
37821
  0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 
37822
  0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x30, 0x2E, 
37823
  0xCF, 0x0C, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xD3, 0x03, 
37824
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0xFA, 0x80, 0xB3, 0x01, 0xDA, 0x06, 0xDA, 0x81, 0xFC, 
37825
  0xDA, 0x08, 0xCE, 0x81, 0x6B, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x73, 0x6C, 0x69, 
37826
  0x63, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 
37827
  0x61, 0x72, 0x74, 0x20, 0x65, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
37828
  0x73, 0x20, 0x61, 0x20, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x72, 
37829
  0x6F, 0x6D, 0x20, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 
37830
  0x63, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x69, 0x6E, 
37831
  0x67, 0x20, 0x69, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 
37832
  0x60, 0x73, 0x74, 0x61, 0x72, 0x74, 0x60, 0x20, 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x73, 0x69, 0x76, 
37833
  0x65, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x60, 0x65, 0x6E, 0x64, 0x60, 
37834
  0x2C, 0x20, 0x65, 0x78, 0x63, 0x6C, 0x75, 0x73, 0x69, 0x76, 0x65, 0x2E, 0x20, 0x41, 0x6C, 0x6C, 
37835
  0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x73, 0x20, 0x66, 0x72, 0x6F, 
37836
  0x6D, 0x20, 0x30, 0x2E, 0x20, 0x60, 0x73, 0x74, 0x61, 0x72, 0x74, 0x60, 0x20, 0x61, 0x6E, 0x64, 
37837
  0x20, 0x60, 0x65, 0x6E, 0x64, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 
37838
  0x62, 0x65, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x69, 
37839
  0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x69, 0x6E, 0x67, 
37840
  0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 
37841
  0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2E, 0x20, 0x4E, 0x6F, 0x74, 
37842
  0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x2D, 0x31, 0x20, 
37843
  0x69, 0x73, 0x20, 0x73, 0x79, 0x6E, 0x6F, 0x6E, 0x79, 0x6D, 0x6F, 0x75, 0x73, 0x20, 0x77, 0x69, 
37844
  0x74, 0x68, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x60, 0x28, 0x6C, 0x65, 0x6E, 0x67, 0x74, 
37845
  0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x29, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x6C, 0x6C, 
37846
  0x6F, 0x77, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6C, 0x6C, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 
37847
  0x76, 0x65, 0x20, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x2E, 0x20, 
37848
  0xCF, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0x78, 0x70, 0x32, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
37849
  0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 0x17, 0x01, 0xDA, 0x06, 0xD8, 0x09, 0x6D, 0x61, 0x74, 0x68, 
37850
  0x2F, 0x65, 0x78, 0x70, 0x32, 0xDA, 0x08, 0xCE, 0x2B, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 
37851
  0x78, 0x70, 0x32, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
37852
  0x32, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6F, 0x77, 0x65, 0x72, 0x20, 0x6F, 
37853
  0x66, 0x20, 0x78, 0x2E, 0xCF, 0x0A, 0x6F, 0x73, 0x2F, 0x73, 0x79, 0x6D, 0x6C, 0x69, 0x6E, 0x6B, 
37854
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0xB5, 0x01, 0xDA, 0x06, 0xD8, 0x0A, 
37855
  0x6F, 0x73, 0x2F, 0x73, 0x79, 0x6D, 0x6C, 0x69, 0x6E, 0x6B, 0xDA, 0x08, 0xCE, 0x80, 0x80, 0x28, 
37856
  0x6F, 0x73, 0x2F, 0x73, 0x79, 0x6D, 0x6C, 0x69, 0x6E, 0x6B, 0x20, 0x6F, 0x6C, 0x64, 0x70, 0x61, 
37857
  0x74, 0x68, 0x20, 0x6E, 0x65, 0x77, 0x70, 0x61, 0x74, 0x68, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 
37858
  0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x6C, 0x69, 0x6E, 0x6B, 0x20, 0x66, 0x72, 
37859
  0x6F, 0x6D, 0x20, 0x6F, 0x6C, 0x64, 0x70, 0x61, 0x74, 0x68, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x65, 
37860
  0x77, 0x70, 0x61, 0x74, 0x68, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x69, 0x6E, 0x67, 
37861
  0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x20, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x28, 
37862
  0x6F, 0x73, 0x2F, 0x6C, 0x69, 0x6E, 0x6B, 0x20, 0x6F, 0x6C, 0x64, 0x70, 0x61, 0x74, 0x68, 0x20, 
37863
  0x6E, 0x65, 0x77, 0x70, 0x61, 0x74, 0x68, 0x20, 0x74, 0x72, 0x75, 0x65, 0x29, 0x60, 0x2E, 0xCF, 
37864
  0x0A, 0x64, 0x72, 0x6F, 0x70, 0x2D, 0x77, 0x68, 0x69, 0x6C, 0x65, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
37865
  0x03, 0x00, 0xDA, 0x18, 0x84, 0x89, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
37866
  0x05, 0x02, 0x02, 0x02, 0x02, 0x06, 0x00, 0x03, 0xCE, 0x0A, 0x64, 0x72, 0x6F, 0x70, 0x2D, 0x77, 
37867
  0x68, 0x69, 0x6C, 0x65, 0xDA, 0x18, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x03, 0x01, 0x01, 
37868
  0x01, 0x00, 0x02, 0x00, 0x01, 0x02, 0xCE, 0x0A, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 0x65, 
37869
  0x6E, 0x74, 0xDA, 0x18, 0x00, 0x02, 0x00, 0xDA, 0x80, 0xFB, 0x00, 0x02, 0x01, 0xCF, 0x0A, 0x63, 
37870
  0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 
37871
  0x00, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x06, 0x01, 0x03, 0xDA, 0x18, 
37872
  0xDA, 0x80, 0x8D, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 0xFB, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x85, 
37873
  0xE5, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x2F, 0x00, 0x00, 0x00, 0x2B, 0x02, 0x00, 0x00, 0x33, 0x01, 
37874
  0x02, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x2A, 0x02, 0x00, 0x00, 0x34, 0x02, 0x00, 0x00, 0xBF, 0xFF, 
37875
  0x82, 0xD1, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x82, 0xD1, 0x03, 
37876
  0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0xDA, 0x84, 0xCB, 0x00, 0x06, 0x00, 0xDA, 0x83, 0x2E, 0x00, 
37877
  0x06, 0x01, 0xDA, 0x1F, 0x00, 0x06, 0x02, 0xDA, 0x85, 0xDE, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x04, 
37878
  0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 0x30, 0x03, 0x01, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x34, 0x04, 
37879
  0x00, 0x00, 0x84, 0x8D, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 
37880
  0x08, 0xCE, 0x80, 0xBC, 0x28, 0x64, 0x72, 0x6F, 0x70, 0x2D, 0x77, 0x68, 0x69, 0x6C, 0x65, 0x20, 
37881
  0x70, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x47, 0x69, 0x76, 0x65, 0x6E, 
37882
  0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2C, 0x20, 0x72, 0x65, 
37883
  0x6D, 0x6F, 0x76, 0x65, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x66, 0x72, 
37884
  0x6F, 0x6D, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x6F, 0x72, 
37885
  0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 
37886
  0x20, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x79, 0x0A, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x65, 
37887
  0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x62, 0x6F, 0x72, 
37888
  0x74, 0x20, 0x6F, 0x6E, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x75, 
37889
  0x72, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 
37890
  0x77, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 
37891
  0x67, 0x2C, 0x20, 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x6C, 0x79, 0x2E, 
37892
  0xCF, 0x03, 0x6D, 0x6F, 0x64, 0xD3, 0x02, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x1D, 
37893
  0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0xCE, 0x03, 0x6D, 0x6F, 0x64, 0x0C, 0x00, 0x00, 0x01, 0x03, 
37894
  0x00, 0x00, 0x00, 0xDA, 0x08, 0xCE, 0x41, 0x28, 0x6D, 0x6F, 0x64, 0x20, 0x64, 0x69, 0x76, 0x69, 
37895
  0x64, 0x65, 0x6E, 0x64, 0x20, 0x64, 0x69, 0x76, 0x69, 0x73, 0x6F, 0x72, 0x29, 0x0A, 0x0A, 0x52, 
37896
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 
37897
  0x6F, 0x20, 0x6F, 0x66, 0x20, 0x64, 0x69, 0x76, 0x69, 0x64, 0x65, 0x6E, 0x64, 0x20, 0x2F, 0x20, 
37898
  0x64, 0x69, 0x76, 0x69, 0x73, 0x6F, 0x72, 0x2E, 0xCF, 0x06, 0x70, 0x72, 0x6F, 0x6D, 0x70, 0x74, 
37899
  0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x81, 0x59, 0x01, 0xDA, 0x06, 0xD7, 0x00, 
37900
  0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0E, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x0A, 0x37, 0x00, 
37901
  0x07, 0xCE, 0x06, 0x70, 0x72, 0x6F, 0x6D, 0x70, 0x74, 0xDA, 0x18, 0xDA, 0x49, 0xDA, 0x50, 0xDA, 
37902
  0x82, 0xAE, 0xDA, 0x81, 0x5E, 0xD0, 0x02, 0x69, 0x30, 0xDA, 0x4A, 0xDA, 0x82, 0xB0, 0xD7, 0x00, 
37903
  0xCD, 0x00, 0x09, 0x00, 0x18, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x10, 0xCE, 
37904
  0x01, 0x3D, 0x3D, 0x01, 0x00, 0x00, 0x22, 0x02, 0x01, 0x02, 0x1B, 0x02, 0x0A, 0x00, 0x3B, 0x03, 
37905
  0x00, 0x00, 0x29, 0x05, 0x01, 0x00, 0x38, 0x04, 0x00, 0x05, 0x23, 0x02, 0x03, 0x04, 0x1C, 0x02, 
37906
  0x07, 0x00, 0x05, 0x05, 0x05, 0x01, 0x19, 0x03, 0x04, 0x00, 0x23, 0x02, 0x05, 0x01, 0x1C, 0x02, 
37907
  0xFA, 0xFF, 0x27, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x28, 0x03, 0x00, 0x00, 0x03, 0x03, 
37908
  0x00, 0x00, 0xDA, 0x82, 0xD1, 0xDA, 0x4F, 0x00, 0x37, 0x00, 0xCF, 0x03, 0x74, 0x61, 0x67, 0x00, 
37909
  0x37, 0x01, 0xDA, 0x82, 0xB5, 0x00, 0x37, 0x02, 0xDA, 0x85, 0xEC, 0x02, 0x37, 0x04, 0xDA, 0x81, 
37910
  0x08, 0x05, 0x37, 0x05, 0xCF, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x08, 0x37, 0x06, 0xCF, 
37911
  0x07, 0x70, 0x61, 0x79, 0x6C, 0x6F, 0x61, 0x64, 0x0B, 0x37, 0x07, 0xCF, 0x03, 0x66, 0x69, 0x62, 
37912
  0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 0x19, 0x04, 0x03, 0x00, 0x2A, 0x05, 0x00, 0x00, 
37913
  0x33, 0x03, 0x05, 0x00, 0x19, 0x05, 0x03, 0x00, 0x2A, 0x06, 0x00, 0x00, 0x33, 0x03, 0x06, 0x00, 
37914
  0x19, 0x06, 0x03, 0x00, 0x2A, 0x07, 0x00, 0x00, 0x33, 0x03, 0x07, 0x00, 0x19, 0x07, 0x03, 0x00, 
37915
  0x44, 0x03, 0x00, 0x00, 0x2A, 0x09, 0x01, 0x00, 0x2F, 0x09, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 
37916
  0x43, 0x08, 0x00, 0x00, 0x30, 0x00, 0x08, 0x00, 0x44, 0x09, 0x00, 0x00, 0x2A, 0x0A, 0x02, 0x00, 
37917
  0x31, 0x0A, 0x03, 0x09, 0x43, 0x08, 0x00, 0x00, 0x2A, 0x09, 0x03, 0x00, 0x2A, 0x0A, 0x04, 0x00, 
37918
  0x31, 0x09, 0x08, 0x0A, 0x43, 0x03, 0x00, 0x00, 0x2A, 0x09, 0x05, 0x00, 0x31, 0x09, 0x07, 0x03, 
37919
  0x43, 0x08, 0x00, 0x00, 0x2A, 0x09, 0x06, 0x00, 0x30, 0x09, 0x07, 0x00, 0x43, 0x03, 0x00, 0x00, 
37920
  0x2A, 0x0A, 0x05, 0x00, 0x31, 0x0A, 0x04, 0x03, 0x43, 0x09, 0x00, 0x00, 0x30, 0x05, 0x06, 0x00, 
37921
  0x44, 0x03, 0x00, 0x00, 0x2A, 0x0B, 0x05, 0x00, 0x31, 0x0B, 0x03, 0x04, 0x43, 0x0A, 0x00, 0x00, 
37922
  0x2A, 0x0B, 0x07, 0x00, 0x31, 0x0B, 0x00, 0x05, 0x43, 0x03, 0x00, 0x00, 0x2A, 0x0C, 0x08, 0x00, 
37923
  0x31, 0x0C, 0x04, 0x07, 0x43, 0x0B, 0x00, 0x00, 0x2A, 0x0D, 0x09, 0x00, 0x31, 0x0D, 0x03, 0x06, 
37924
  0x2F, 0x0B, 0x00, 0x00, 0x43, 0x0C, 0x00, 0x00, 0x2A, 0x0B, 0x01, 0x00, 0x31, 0x0B, 0x08, 0x09, 
37925
  0x30, 0x0A, 0x0C, 0x00, 0x43, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x81, 0x5D, 0x03, 0x00, 
37926
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
37927
  0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
37928
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
37929
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
37930
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
37931
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
37932
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDA, 0x08, 0xCE, 0x80, 0x8F, 
37933
  0x28, 0x70, 0x72, 0x6F, 0x6D, 0x70, 0x74, 0x20, 0x74, 0x61, 0x67, 0x20, 0x26, 0x20, 0x62, 0x6F, 
37934
  0x64, 0x79, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x75, 0x70, 0x20, 0x61, 0x20, 0x63, 0x68, 
37935
  0x65, 0x63, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 
37936
  0x6E, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x74, 0x6F, 
37937
  0x2E, 0x20, 0x60, 0x74, 0x61, 0x67, 0x60, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 
37938
  0x65, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x0A, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 
37939
  0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x60, 0x72, 0x65, 0x74, 
37940
  0x75, 0x72, 0x6E, 0x60, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 
37941
  0x6C, 0x69, 0x6B, 0x65, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x2E, 0xDA, 
37942
  0x3D, 0xCB, 0xCF, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x73, 0x71, 0x72, 0x74, 0xD3, 0x03, 0xDA, 
37943
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 0x1C, 0x01, 0xDA, 0x06, 0xD8, 0x09, 0x6D, 0x61, 
37944
  0x74, 0x68, 0x2F, 0x73, 0x71, 0x72, 0x74, 0xDA, 0x08, 0xCE, 0x2C, 0x28, 0x6D, 0x61, 0x74, 0x68, 
37945
  0x2F, 0x73, 0x71, 0x72, 0x74, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
37946
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x71, 0x75, 0x61, 0x72, 0x65, 0x20, 0x72, 0x6F, 0x6F, 
37947
  0x74, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xCF, 0x0C, 0x6E, 0x65, 0x74, 0x2F, 0x70, 0x65, 0x65, 
37948
  0x72, 0x6E, 0x61, 0x6D, 0x65, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x12, 0x82, 0xDA, 
37949
  0x01, 0xDA, 0x06, 0xD8, 0x0C, 0x6E, 0x65, 0x74, 0x2F, 0x70, 0x65, 0x65, 0x72, 0x6E, 0x61, 0x6D, 
37950
  0x65, 0xDA, 0x08, 0xCE, 0x58, 0x28, 0x6E, 0x65, 0x74, 0x2F, 0x70, 0x65, 0x65, 0x72, 0x6E, 0x61, 
37951
  0x6D, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 
37952
  0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x6D, 0x6F, 0x74, 0x65, 0x20, 0x70, 0x65, 0x65, 0x72, 
37953
  0x27, 0x73, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 
37954
  0x6F, 0x72, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x69, 
37955
  0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2E, 0xDA, 0x82, 0x78, 
37956
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8B, 0x11, 0x01, 0xDA, 0x06, 0xDA, 0x80, 
37957
  0xC9, 0xDA, 0x08, 0xCE, 0x80, 0x81, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x72, 0x20, 
37958
  0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 
37959
  0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x61, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x2D, 0x62, 0x61, 
37960
  0x73, 0x65, 0x64, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x72, 0x20, 0x6F, 0x6E, 0x20, 
37961
  0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x4F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 
37962
  0x6C, 0x6C, 0x79, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x6C, 0x65, 
37963
  0x76, 0x65, 0x6C, 0x20, 0x20, 0x74, 0x6F, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6E, 
37964
  0x74, 0x69, 0x61, 0x74, 0x65, 0x20, 0x6E, 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x64, 0x65, 0x62, 
37965
  0x75, 0x67, 0x67, 0x65, 0x72, 0x73, 0x2E, 0xCF, 0x0B, 0x2A, 0x65, 0x72, 0x72, 0x2D, 0x63, 0x6F, 
37966
  0x6C, 0x6F, 0x72, 0x2A, 0xD3, 0x04, 0xDA, 0x84, 0x25, 0xCB, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
37967
  0x18, 0x89, 0x27, 0x01, 0xDA, 0x06, 0xDA, 0x81, 0x5F, 0xDA, 0x08, 0xCE, 0x51, 0x57, 0x68, 0x65, 
37968
  0x74, 0x68, 0x65, 0x72, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x74, 
37969
  0x75, 0x72, 0x6E, 0x20, 0x6F, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x63, 0x6F, 0x6C, 
37970
  0x6F, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x74, 0x72, 
37971
  0x61, 0x63, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x65, 
37972
  0x72, 0x72, 0x6F, 0x72, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2E, 0xCF, 0x04, 
37973
  0x6A, 0x75, 0x78, 0x74, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x84, 0x99, 0x01, 
37974
  0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0B, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 
37975
  0xFF, 0x08, 0x22, 0x00, 0x07, 0xCE, 0x04, 0x6A, 0x75, 0x78, 0x74, 0xDA, 0x18, 0xCF, 0x05, 0x74, 
37976
  0x75, 0x70, 0x6C, 0x65, 0xDA, 0x49, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x03, 0x06, 0x01, 0x01, 
37977
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x0C, 0xCE, 0x05, 0x61, 0x70, 0x70, 0x6C, 0x79, 0x3D, 0x02, 
37978
  0x01, 0x00, 0x24, 0x03, 0x02, 0x00, 0x1B, 0x03, 0x09, 0x00, 0x29, 0x04, 0x00, 0x00, 0x38, 0x05, 
37979
  0x01, 0x04, 0x05, 0x04, 0x04, 0x01, 0x23, 0x03, 0x04, 0x02, 0x1B, 0x03, 0x03, 0x00, 0x2F, 0x05, 
37980
  0x00, 0x00, 0x1A, 0xFB, 0xFF, 0xFF, 0x32, 0x05, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0xDA, 0x80, 
37981
  0x8F, 0xDA, 0x81, 0x8C, 0xDA, 0x82, 0xBC, 0xDA, 0x82, 0xE9, 0xDA, 0x82, 0xAE, 0x00, 0x22, 0x00, 
37982
  0xCF, 0x04, 0x66, 0x75, 0x6E, 0x73, 0x00, 0x22, 0x01, 0xDA, 0x86, 0x0A, 0x03, 0x22, 0x03, 0xDA, 
37983
  0x82, 0xF6, 0x06, 0x22, 0x05, 0xCF, 0x05, 0x24, 0x61, 0x72, 0x67, 0x73, 0x06, 0x16, 0x00, 0xCF, 
37984
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x53, 0x09, 0x16, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
37985
  0x30, 0x30, 0x31, 0x52, 0x0C, 0x16, 0x08, 0xDA, 0x80, 0xFB, 0x2A, 0x02, 0x00, 0x00, 0x2F, 0x02, 
37986
  0x00, 0x00, 0x3E, 0x02, 0x00, 0x00, 0x19, 0x03, 0x02, 0x00, 0x2A, 0x05, 0x01, 0x00, 0x33, 0x04, 
37987
  0x05, 0x00, 0x19, 0x05, 0x04, 0x00, 0x26, 0x07, 0x00, 0x00, 0x47, 0x06, 0x00, 0x07, 0x19, 0x07, 
37988
  0x06, 0x00, 0x1D, 0x07, 0x0C, 0x00, 0x38, 0x06, 0x00, 0x07, 0x19, 0x08, 0x06, 0x00, 0x2A, 0x06, 
37989
  0x02, 0x00, 0x31, 0x06, 0x08, 0x05, 0x2A, 0x09, 0x03, 0x00, 0x33, 0x06, 0x09, 0x00, 0x30, 0x03, 
37990
  0x06, 0x00, 0x2A, 0x0A, 0x04, 0x00, 0x33, 0x09, 0x0A, 0x00, 0x47, 0x07, 0x00, 0x07, 0x1A, 0xF5, 
37991
  0xFF, 0xFF, 0x2A, 0x06, 0x05, 0x00, 0x30, 0x06, 0x05, 0x00, 0x2A, 0x07, 0x03, 0x00, 0x33, 0x06, 
37992
  0x07, 0x00, 0x29, 0x07, 0x00, 0x00, 0x30, 0x03, 0x07, 0x00, 0x2A, 0x08, 0x06, 0x00, 0x33, 0x07, 
37993
  0x08, 0x00, 0x2A, 0x08, 0x07, 0x00, 0x31, 0x08, 0x06, 0x07, 0x2A, 0x08, 0x03, 0x00, 0x34, 0x08, 
37994
  0x00, 0x00, 0x84, 0x9C, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0E, 0x00, 0x0E, 0x00, 
37995
  0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x17, 0x00, 
37996
  0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x00, 0x03, 
37997
  0x02, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 
37998
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x08, 0xCE, 0x47, 0x28, 0x6A, 0x75, 0x78, 
37999
  0x74, 0x20, 0x26, 0x20, 0x66, 0x75, 0x6E, 0x73, 0x29, 0x0A, 0x0A, 0x4D, 0x61, 0x63, 0x72, 0x6F, 
38000
  0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x6A, 0x75, 0x78, 0x74, 0x2A, 0x60, 
38001
  0x2E, 0x20, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6F, 0x72, 0x20, 
38002
  0x62, 0x75, 0x74, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x65, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 
38003
  0x6E, 0x74, 0x2E, 0xDA, 0x3D, 0xCB, 0xCF, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x70, 0x6F, 0x77, 
38004
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 0x32, 0x01, 0xDA, 0x06, 0xD8, 
38005
  0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x70, 0x6F, 0x77, 0xDA, 0x08, 0xCE, 0x2C, 0x28, 0x6D, 0x61, 
38006
  0x74, 0x68, 0x2F, 0x70, 0x6F, 0x77, 0x20, 0x61, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 
38007
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6F, 
38008
  0x77, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xCF, 0x09, 0x70, 0x65, 0x67, 0x2F, 0x6D, 
38009
  0x61, 0x74, 0x63, 0x68, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x84, 0xC4, 0x86, 0xA1, 
38010
  0x01, 0xDA, 0x06, 0xD8, 0x09, 0x70, 0x65, 0x67, 0x2F, 0x6D, 0x61, 0x74, 0x63, 0x68, 0xDA, 0x08, 
38011
  0xCE, 0x80, 0xFA, 0x28, 0x70, 0x65, 0x67, 0x2F, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x70, 0x65, 
38012
  0x67, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 
38013
  0x74, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x4D, 0x61, 0x74, 0x63, 0x68, 
38014
  0x20, 0x61, 0x20, 0x50, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x45, 0x78, 0x70, 0x72, 0x65, 
38015
  0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x47, 0x72, 0x61, 0x6D, 0x6D, 0x61, 0x72, 0x20, 0x74, 0x6F, 
38016
  0x20, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x61, 
38017
  0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 
38018
  0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x64, 0x20, 0x76, 
38019
  0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 
38020
  0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 
38021
  0x6E, 0x6F, 0x74, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 
38022
  0x6E, 0x67, 0x75, 0x61, 0x67, 0x65, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x64, 0x20, 0x62, 
38023
  0x79, 0x20, 0x70, 0x65, 0x67, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x79, 0x6E, 0x74, 0x61, 
38024
  0x78, 0x20, 0x6F, 0x66, 0x20, 0x50, 0x45, 0x47, 0x73, 0x20, 0x69, 0x73, 0x20, 0x64, 0x6F, 0x63, 
38025
  0x75, 0x6D, 0x65, 0x6E, 0x74, 0x65, 0x64, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4A, 
38026
  0x61, 0x6E, 0x65, 0x74, 0x20, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x2E, 0xCF, 0x08, 0x62, 
38027
  0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x3F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 
38028
  0x71, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 
38029
  0x06, 0x00, 0x02, 0xCE, 0x08, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x3F, 0xDA, 0x18, 0xDA, 
38030
  0x2C, 0xD0, 0x07, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 
38031
  0x06, 0x01, 0xDA, 0x86, 0x21, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 
38032
  0x00, 0x2A, 0x04, 0x01, 0x00, 0x23, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x71, 0x32, 0x00, 
38033
  0x32, 0x00, 0x32, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0xDA, 0x08, 0xCE, 0x26, 0x28, 0x62, 0x6F, 
38034
  0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 
38035
  0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 
38036
  0x61, 0x6E, 0x2E, 0xCF, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x67, 0x63, 0x64, 0xD3, 0x03, 0xDA, 
38037
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 0x51, 0x01, 0xDA, 0x06, 0xD8, 0x08, 0x6D, 0x61, 
38038
  0x74, 0x68, 0x2F, 0x67, 0x63, 0x64, 0xDA, 0x08, 0xCE, 0x44, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 
38039
  0x67, 0x63, 0x64, 0x20, 0x78, 0x20, 0x79, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
38040
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x74, 0x20, 0x63, 
38041
  0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x20, 0x64, 0x69, 0x76, 0x69, 0x73, 0x6F, 0x72, 0x20, 0x62, 0x65, 
38042
  0x74, 0x77, 0x65, 0x65, 0x6E, 0x20, 0x78, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x79, 0x2E, 0xCF, 0x0D, 
38043
  0x6E, 0x65, 0x74, 0x2F, 0x72, 0x65, 0x63, 0x76, 0x2D, 0x66, 0x72, 0x6F, 0x6D, 0xD3, 0x03, 0xDA, 
38044
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x12, 0x83, 0x32, 0x01, 0xDA, 0x06, 0xD8, 0x0D, 0x6E, 0x65, 0x74, 
38045
  0x2F, 0x72, 0x65, 0x63, 0x76, 0x2D, 0x66, 0x72, 0x6F, 0x6D, 0xDA, 0x08, 0xCE, 0x80, 0xE1, 0x28, 
38046
  0x6E, 0x65, 0x74, 0x2F, 0x72, 0x65, 0x63, 0x76, 0x2D, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x73, 0x74, 
38047
  0x72, 0x65, 0x61, 0x6D, 0x20, 0x6E, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x62, 0x75, 0x66, 0x20, 
38048
  0x26, 0x6F, 0x70, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x29, 0x0A, 0x0A, 0x52, 
38049
  0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x73, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x66, 0x72, 0x6F, 
38050
  0x6D, 0x20, 0x61, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 
38051
  0x6D, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x75, 0x74, 0x73, 0x20, 0x69, 0x74, 0x20, 0x69, 0x6E, 
38052
  0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 
38053
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0x2D, 
38054
  0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x63, 0x6B, 
38055
  0x65, 0x74, 0x20, 0x63, 0x61, 0x6D, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x2E, 0x20, 0x54, 0x61, 
38056
  0x6B, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 
38057
  0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 
38058
  0x64, 0x73, 0x2C, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 
38059
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 
38060
  0xCF, 0x0C, 0x6F, 0x73, 0x2F, 0x63, 0x70, 0x75, 0x2D, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0xD3, 0x03, 
38061
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0xFE, 0x01, 0xDA, 0x06, 0xD8, 0x0C, 0x6F, 0x73, 
38062
  0x2F, 0x63, 0x70, 0x75, 0x2D, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0xDA, 0x08, 0xCE, 0x80, 0xA6, 0x28, 
38063
  0x6F, 0x73, 0x2F, 0x63, 0x70, 0x75, 0x2D, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x26, 0x6F, 0x70, 
38064
  0x74, 0x20, 0x64, 0x66, 0x6C, 0x74, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x61, 0x6E, 0x20, 
38065
  0x61, 0x70, 0x70, 0x72, 0x6F, 0x78, 0x69, 0x6D, 0x61, 0x74, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 
38066
  0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x43, 0x50, 0x55, 0x73, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6C, 
38067
  0x61, 0x62, 0x6C, 0x65, 0x20, 0x6F, 0x6E, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, 
38068
  0x20, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x75, 0x73, 0x65, 0x2E, 
38069
  0x20, 0x49, 0x66, 0x20, 0x75, 0x6E, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x67, 0x65, 
38070
  0x74, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x70, 0x70, 0x72, 0x6F, 0x78, 0x69, 0x6D, 0x61, 0x74, 0x69, 
38071
  0x6F, 0x6E, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 
38072
  0x61, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
38073
  0x64, 0x66, 0x6C, 0x74, 0x2E, 0xCF, 0x0C, 0x70, 0x65, 0x67, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x2D, 
38074
  0x61, 0x6C, 0x6C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x84, 0xC4, 0x86, 0xB5, 0x01, 
38075
  0xDA, 0x06, 0xD8, 0x0C, 0x70, 0x65, 0x67, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x2D, 0x61, 0x6C, 0x6C, 
38076
  0xDA, 0x08, 0xCE, 0x78, 0x28, 0x70, 0x65, 0x67, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x2D, 0x61, 0x6C, 
38077
  0x6C, 0x20, 0x70, 0x65, 0x67, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 
38078
  0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x46, 
38079
  0x69, 0x6E, 0x64, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x73, 0x20, 
38080
  0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x65, 0x67, 0x20, 0x6D, 0x61, 
38081
  0x74, 0x63, 0x68, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2E, 0x20, 0x52, 
38082
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 
38083
  0x6F, 0x66, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x73, 0x2E, 0xCF, 0x10, 0x61, 0x72, 
38084
  0x72, 0x61, 0x79, 0x2F, 0x6E, 0x65, 0x77, 0x2D, 0x66, 0x69, 0x6C, 0x6C, 0x65, 0x64, 0xD3, 0x03, 
38085
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x85, 0x6F, 0x80, 0x89, 0x01, 0xDA, 0x06, 0xDA, 0x81, 0x8D, 
38086
  0xDA, 0x08, 0xCE, 0x80, 0x8F, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x6E, 0x65, 0x77, 0x2D, 
38087
  0x66, 0x69, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x26, 0x6F, 0x70, 
38088
  0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 
38089
  0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 
38090
  0x20, 0x60, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x60, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 
38091
  0x73, 0x2C, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x76, 
38092
  0x61, 0x6C, 0x75, 0x65, 0x60, 0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x64, 0x65, 0x66, 
38093
  0x61, 0x75, 0x6C, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x20, 0x52, 0x65, 
38094
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 
38095
  0x72, 0x61, 0x79, 0x2E, 0xCF, 0x0F, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x68, 0x61, 0x73, 
38096
  0x2D, 0x6D, 0x6F, 0x72, 0x65, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x84, 0xAE, 0x83, 
38097
  0xDD, 0x01, 0xDA, 0x06, 0xDA, 0x85, 0xAA, 0xDA, 0x08, 0xCE, 0x51, 0x28, 0x70, 0x61, 0x72, 0x73, 
38098
  0x65, 0x72, 0x2F, 0x68, 0x61, 0x73, 0x2D, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 
38099
  0x65, 0x72, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 
38100
  0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x68, 0x61, 0x73, 0x20, 0x6D, 0x6F, 0x72, 
38101
  0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
38102
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x71, 0x75, 0x65, 0x75, 0x65, 0x2E, 0xCF, 0x10, 0x64, 0x65, 
38103
  0x62, 0x75, 0x67, 0x2F, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x74, 0x72, 0x61, 0x63, 0x65, 0xD3, 0x03, 
38104
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x10, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 
38105
  0x64, 0x65, 0x62, 0x75, 0x67, 0x2E, 0x63, 0x81, 0x88, 0x01, 0xDA, 0x06, 0xDA, 0x80, 0xC6, 0xDA, 
38106
  0x08, 0xCE, 0x81, 0x02, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x73, 0x74, 0x61, 0x63, 0x6B, 
38107
  0x74, 0x72, 0x61, 0x63, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 
38108
  0x20, 0x65, 0x72, 0x72, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x29, 0x0A, 0x0A, 0x50, 0x72, 
38109
  0x69, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x69, 0x63, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 
38110
  0x69, 0x6E, 0x67, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x74, 0x72, 0x61, 0x63, 0x65, 0x20, 0x66, 
38111
  0x6F, 0x72, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x43, 0x61, 0x6E, 0x20, 
38112
  0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 
38113
  0x64, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 
38114
  0x65, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 
38115
  0x74, 0x61, 0x63, 0x6B, 0x20, 0x74, 0x72, 0x61, 0x63, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x2E, 
38116
  0x20, 0x49, 0x66, 0x20, 0x60, 0x65, 0x72, 0x72, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x69, 0x6C, 
38117
  0x20, 0x6F, 0x72, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 
38118
  0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6E, 0x6F, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x20, 
38119
  0x69, 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x73, 
38120
  0x6B, 0x69, 0x70, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6C, 0x69, 
38121
  0x6E, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
38122
  0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0xCF, 0x09, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6F, 
38123
  0x6E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x86, 0xAF, 0x01, 0xDA, 0x06, 0xD7, 
38124
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0F, 0x02, 0x02, 0x02, 0x06, 0x27, 0x00, 0x08, 0xCE, 0x09, 
38125
  0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0xDA, 0x18, 0xD8, 0x09, 0x6D, 0x61, 0x74, 
38126
  0x68, 0x2F, 0x63, 0x65, 0x69, 0x6C, 0xD8, 0x09, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x6E, 0x65, 
38127
  0x77, 0xDA, 0x2A, 0xDA, 0x81, 0xFC, 0xDA, 0x82, 0xE9, 0xDA, 0x81, 0x8C, 0x00, 0x27, 0x00, 0xDA, 
38128
  0x80, 0xD8, 0x00, 0x27, 0x01, 0xDA, 0x1F, 0x00, 0x27, 0x02, 0xDA, 0x86, 0x49, 0x00, 0x27, 0x03, 
38129
  0xDA, 0x80, 0x90, 0x01, 0x27, 0x04, 0xCF, 0x05, 0x6E, 0x65, 0x78, 0x74, 0x6E, 0x03, 0x27, 0x06, 
38130
  0xDA, 0x80, 0x84, 0x0B, 0x27, 0x08, 0xDA, 0x23, 0x13, 0x27, 0x0A, 0xCF, 0x06, 0x73, 0x6C, 0x69, 
38131
  0x63, 0x65, 0x72, 0x29, 0x03, 0x00, 0x00, 0x19, 0x04, 0x00, 0x00, 0x3D, 0x05, 0x01, 0x00, 0x19, 
38132
  0x06, 0x05, 0x00, 0x0B, 0x07, 0x06, 0x00, 0x2F, 0x07, 0x00, 0x00, 0x2A, 0x09, 0x00, 0x00, 0x33, 
38133
  0x08, 0x09, 0x00, 0x2F, 0x08, 0x00, 0x00, 0x2A, 0x09, 0x01, 0x00, 0x33, 0x07, 0x09, 0x00, 0x19, 
38134
  0x08, 0x07, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x2A, 0x0B, 0x02, 0x00, 0x33, 0x0A, 0x0B, 0x00, 0x1C, 
38135
  0x0A, 0x03, 0x00, 0x2A, 0x09, 0x03, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x2A, 0x09, 0x04, 0x00, 0x19, 
38136
  0x0A, 0x09, 0x00, 0x46, 0x0B, 0x04, 0x06, 0x1C, 0x0B, 0x09, 0x00, 0x31, 0x01, 0x03, 0x04, 0x33, 
38137
  0x0C, 0x0A, 0x00, 0x30, 0x08, 0x0C, 0x00, 0x2A, 0x0E, 0x05, 0x00, 0x33, 0x0D, 0x0E, 0x00, 0x19, 
38138
  0x03, 0x04, 0x00, 0x06, 0x04, 0x04, 0x00, 0x1A, 0xF7, 0xFF, 0xFF, 0x48, 0x0B, 0x03, 0x06, 0x1C, 
38139
  0x0B, 0x07, 0x00, 0x30, 0x01, 0x03, 0x00, 0x33, 0x0C, 0x0A, 0x00, 0x30, 0x08, 0x0C, 0x00, 0x2A, 
38140
  0x0E, 0x05, 0x00, 0x33, 0x0D, 0x0E, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x03, 0x08, 0x00, 0x00, 0x86, 
38141
  0xB3, 0x03, 0x00, 0x0D, 0x01, 0x0C, 0x00, 0x03, 0x01, 0x22, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 
38142
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x0F, 
38143
  0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x03, 0x01, 0x15, 0x00, 0x15, 
38144
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x01, 0x05, 0xBF, 0xFD, 0x03, 0x04, 0x07, 0x00, 
38145
  0x03, 0x00, 0x24, 0x00, 0x24, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x03, 0xBF, 0xF4, 0x01, 
38146
  0xDA, 0x08, 0xCE, 0x6A, 0x28, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6E, 
38147
  0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6F, 0x6E, 
38148
  0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 
38149
  0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 
38150
  0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x73, 0x0A, 0x6F, 0x66, 0x20, 
38151
  0x73, 0x69, 0x7A, 0x65, 0x20, 0x60, 0x6E, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
38152
  0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xCF, 0x04, 
38153
  0x73, 0x70, 0x69, 0x74, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x86, 0xCD, 0x01, 
38154
  0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0B, 0x03, 0x02, 0x03, 0x07, 0x1B, 0x00, 
38155
  0x06, 0xCE, 0x04, 0x73, 0x70, 0x69, 0x74, 0xDA, 0x18, 0xD0, 0x02, 0x77, 0x62, 0xDA, 0x80, 0xF3, 
38156
  0xDA, 0x80, 0xF4, 0xCE, 0x0B, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x20, 
38157
  0xDA, 0x80, 0xF5, 0xD8, 0x0A, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x77, 0x72, 0x69, 0x74, 0x65, 0xDA, 
38158
  0x80, 0xF8, 0x00, 0x1B, 0x00, 0xDA, 0x80, 0xF9, 0x00, 0x1B, 0x01, 0xDA, 0x80, 0xFC, 0x00, 0x1B, 
38159
  0x02, 0xDA, 0x83, 0x89, 0x00, 0x1B, 0x03, 0xDA, 0x86, 0x53, 0x06, 0x1B, 0x05, 0xDA, 0x83, 0x89, 
38160
  0x0A, 0x1B, 0x07, 0xDA, 0x80, 0xFB, 0x26, 0x06, 0x00, 0x00, 0x23, 0x05, 0x06, 0x02, 0x1C, 0x05, 
38161
  0x03, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x04, 0x02, 0x00, 0x19, 0x05, 
38162
  0x04, 0x00, 0x30, 0x00, 0x05, 0x00, 0x2A, 0x07, 0x01, 0x00, 0x33, 0x06, 0x07, 0x00, 0x19, 0x07, 
38163
  0x06, 0x00, 0x1C, 0x07, 0x02, 0x00, 0x1A, 0x08, 0x00, 0x00, 0x2A, 0x08, 0x02, 0x00, 0x2A, 0x09, 
38164
  0x03, 0x00, 0x31, 0x08, 0x00, 0x09, 0x2F, 0x05, 0x00, 0x00, 0x2A, 0x09, 0x04, 0x00, 0x33, 0x08, 
38165
  0x09, 0x00, 0x01, 0x08, 0x00, 0x00, 0x30, 0x07, 0x01, 0x00, 0x2A, 0x09, 0x05, 0x00, 0x33, 0x08, 
38166
  0x09, 0x00, 0x2F, 0x07, 0x00, 0x00, 0x2A, 0x0A, 0x06, 0x00, 0x33, 0x09, 0x0A, 0x00, 0x04, 0x00, 
38167
  0x00, 0x00, 0x86, 0xD0, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
38168
  0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x14, 0x00, 
38169
  0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0D, 0x01, 0x03, 0x00, 0x03, 0x00, 
38170
  0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xF9, 0x01, 0xDA, 0x08, 0xCE, 0x68, 0x28, 0x73, 
38171
  0x70, 0x69, 0x74, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 
38172
  0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x29, 0x0A, 0x0A, 0x57, 0x72, 
38173
  0x69, 0x74, 0x65, 0x20, 0x60, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x73, 0x60, 0x20, 0x74, 
38174
  0x6F, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x61, 0x74, 0x20, 0x60, 0x70, 0x61, 0x74, 
38175
  0x68, 0x60, 0x2E, 0x20, 0x43, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 
38176
  0x6C, 0x79, 0x20, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 
38177
  0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0xCF, 0x0A, 0x6E, 0x65, 0x74, 0x2F, 0x6C, 0x69, 0x73, 0x74, 
38178
  0x65, 0x6E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x12, 0x82, 0x4C, 0x01, 0xDA, 0x06, 
38179
  0xDA, 0x83, 0x1C, 0xDA, 0x08, 0xCE, 0x81, 0xA0, 0x28, 0x6E, 0x65, 0x74, 0x2F, 0x6C, 0x69, 0x73, 
38180
  0x74, 0x65, 0x6E, 0x20, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x70, 0x6F, 0x72, 0x74, 0x20, 0x26, 0x6F, 
38181
  0x70, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 
38182
  0x73, 0x20, 0x61, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
38183
  0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 
38184
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 
38185
  0x20, 0x72, 0x65, 0x61, 0x64, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6E, 0x6F, 0x72, 0x20, 0x77, 0x72, 
38186
  0x69, 0x74, 0x65, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x55, 0x73, 0x65, 0x20, 0x6E, 0x65, 0x74, 
38187
  0x2F, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x65, 0x74, 0x2F, 0x61, 
38188
  0x63, 0x63, 0x65, 0x70, 0x74, 0x2D, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x62, 0x65, 0x20, 0x74, 0x6F, 
38189
  0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 
38190
  0x6F, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x74, 0x68, 
38191
  0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x79, 
38192
  0x70, 0x65, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 0x65, 0x72, 0x20, 0x73, 0x70, 0x65, 
38193
  0x63, 0x69, 0x66, 0x69, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 
38194
  0x6F, 0x66, 0x20, 0x6E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 
38195
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x61, 0x20, 
38196
  0x3A, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x28, 0x75, 0x73, 0x75, 0x61, 0x6C, 0x6C, 0x79, 
38197
  0x20, 0x74, 0x63, 0x70, 0x29, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x3A, 0x64, 0x61, 0x74, 0x61, 0x67, 
38198
  0x72, 0x61, 0x6D, 0x20, 0x28, 0x75, 0x73, 0x75, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x75, 0x64, 0x70, 
38199
  0x29, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 
38200
  0x69, 0x65, 0x64, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 
38201
  0x20, 0x69, 0x73, 0x20, 0x3A, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0x20, 0x54, 0x68, 0x65, 
38202
  0x20, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x6F, 0x72, 0x74, 0x20, 0x61, 
38203
  0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 
38204
  0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x6E, 0x65, 0x74, 0x2F, 
38205
  0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2E, 0xCF, 0x06, 0x65, 0x66, 0x6C, 0x75, 0x73, 0x68, 
38206
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x83, 0x14, 0x82, 0xB3, 0x01, 0xDA, 0x06, 0xDA, 
38207
  0x80, 0xC7, 0xDA, 0x08, 0xCE, 0x4A, 0x28, 0x65, 0x66, 0x6C, 0x75, 0x73, 0x68, 0x29, 0x0A, 0x0A, 
38208
  0x46, 0x6C, 0x75, 0x73, 0x68, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x3A, 0x65, 0x72, 0x72, 
38209
  0x20, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x29, 0x60, 0x20, 0x69, 0x66, 0x20, 0x69, 0x74, 0x20, 
38210
  0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 
38211
  0x77, 0x69, 0x73, 0x65, 0x20, 0x64, 0x6F, 0x20, 0x6E, 0x6F, 0x74, 0x68, 0x69, 0x6E, 0x67, 0x2E, 
38212
  0xCF, 0x0D, 0x65, 0x76, 0x2F, 0x63, 0x68, 0x61, 0x6E, 0x2D, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0xD3, 
38213
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x40, 0x84, 0x83, 0x01, 0xDA, 0x06, 0xD8, 0x0D, 0x65, 
38214
  0x76, 0x2F, 0x63, 0x68, 0x61, 0x6E, 0x2D, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0xDA, 0x08, 0xCE, 0x80, 
38215
  0x83, 0x28, 0x65, 0x76, 0x2F, 0x63, 0x68, 0x61, 0x6E, 0x2D, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x20, 
38216
  0x63, 0x68, 0x61, 0x6E, 0x29, 0x0A, 0x0A, 0x43, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x61, 0x20, 0x63, 
38217
  0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x2E, 0x20, 0x41, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x64, 
38218
  0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x63, 0x61, 
38219
  0x75, 0x73, 0x65, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 
38220
  0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 
38221
  0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x20, 
38222
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 
38223
  0x6E, 0x65, 0x6C, 0x2E, 0xCF, 0x03, 0x73, 0x65, 0x71, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
38224
  0xDA, 0x18, 0x82, 0x5F, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x09, 0x01, 
38225
  0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x05, 0x16, 0x00, 0x04, 0xCE, 0x03, 0x73, 0x65, 0x71, 0xDA, 
38226
  0x18, 0xDA, 0x49, 0xDA, 0x4A, 0xDA, 0x50, 0xDA, 0x81, 0x8C, 0xCF, 0x04, 0x6C, 0x6F, 0x6F, 0x70, 
38227
  0x00, 0x16, 0x00, 0xCF, 0x04, 0x68, 0x65, 0x61, 0x64, 0x00, 0x16, 0x01, 0xDA, 0x82, 0xB5, 0x00, 
38228
  0x16, 0x02, 0xDA, 0x86, 0x69, 0x02, 0x16, 0x04, 0xCF, 0x06, 0x24, 0x61, 0x63, 0x63, 0x75, 0x6D, 
38229
  0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 0x19, 0x04, 0x03, 0x00, 0x3E, 0x05, 0x00, 0x00, 
38230
  0x2A, 0x07, 0x01, 0x00, 0x31, 0x07, 0x04, 0x05, 0x43, 0x06, 0x00, 0x00, 0x2A, 0x07, 0x02, 0x00, 
38231
  0x2F, 0x07, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0x43, 0x05, 0x00, 0x00, 0x2A, 0x08, 0x03, 0x00, 
38232
  0x31, 0x08, 0x04, 0x05, 0x43, 0x07, 0x00, 0x00, 0x2A, 0x08, 0x04, 0x00, 0x31, 0x08, 0x00, 0x07, 
38233
  0x43, 0x05, 0x00, 0x00, 0x2A, 0x08, 0x02, 0x00, 0x31, 0x08, 0x06, 0x05, 0x2F, 0x04, 0x00, 0x00, 
38234
  0x43, 0x07, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, 0x82, 0x63, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x01, 
38235
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
38236
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
38237
  0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x08, 0xCE, 0x7B, 0x28, 0x73, 0x65, 0x71, 0x20, 0x68, 0x65, 
38238
  0x61, 0x64, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x53, 0x69, 0x6D, 0x69, 
38239
  0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x6C, 0x6F, 0x6F, 0x70, 0x60, 0x2C, 0x20, 0x62, 
38240
  0x75, 0x74, 0x20, 0x61, 0x63, 0x63, 0x75, 0x6D, 0x75, 0x6C, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 
38241
  0x68, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x69, 0x6E, 0x74, 
38242
  0x6F, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 
38243
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x2E, 0x0A, 0x53, 0x65, 0x65, 
38244
  0x20, 0x60, 0x6C, 0x6F, 0x6F, 0x70, 0x60, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x64, 0x65, 0x74, 0x61, 
38245
  0x69, 0x6C, 0x73, 0x2E, 0xDA, 0x3D, 0xCB, 0xCF, 0x09, 0x66, 0x66, 0x69, 0x2F, 0x61, 0x6C, 0x69, 
38246
  0x67, 0x6E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x0C, 0x81, 0xD5, 0x01, 0xDA, 0x06, 
38247
  0xD8, 0x09, 0x66, 0x66, 0x69, 0x2F, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0xDA, 0x08, 0xCE, 0x38, 0x28, 
38248
  0x66, 0x66, 0x69, 0x2F, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x20, 0x74, 0x79, 0x70, 0x65, 0x29, 0x0A, 
38249
  0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x20, 0x6F, 
38250
  0x66, 0x20, 0x61, 0x6E, 0x20, 0x66, 0x66, 0x69, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x69, 0x6E, 
38251
  0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2E, 0xCF, 0x0C, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 
38252
  0x63, 0x6C, 0x65, 0x61, 0x72, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x83, 0x40, 0x81, 
38253
  0x69, 0x01, 0xDA, 0x06, 0xDA, 0x82, 0x1D, 0xDA, 0x08, 0xCE, 0x80, 0xA3, 0x28, 0x62, 0x75, 0x66, 
38254
  0x66, 0x65, 0x72, 0x2F, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
38255
  0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x7A, 0x65, 
38256
  0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x74, 0x6F, 0x20, 
38257
  0x30, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x69, 0x65, 0x73, 0x20, 0x69, 0x74, 
38258
  0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x72, 0x65, 0x74, 
38259
  0x61, 0x69, 0x6E, 0x73, 0x20, 0x69, 0x74, 0x73, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 
38260
  0x73, 0x6F, 0x20, 0x69, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x65, 0x66, 0x66, 
38261
  0x69, 0x63, 0x69, 0x65, 0x6E, 0x74, 0x6C, 0x79, 0x20, 0x72, 0x65, 0x66, 0x69, 0x6C, 0x6C, 0x65, 
38262
  0x64, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 
38263
  0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xCF, 
38264
  0x10, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x77, 0x6F, 0x72, 
38265
  0x64, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x83, 0x40, 0x81, 0x14, 0x01, 0xDA, 0x06, 
38266
  0xD8, 0x10, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x77, 0x6F, 
38267
  0x72, 0x64, 0xDA, 0x08, 0xCE, 0x80, 0xF0, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 
38268
  0x75, 0x73, 0x68, 0x2D, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 
38269
  0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x41, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x20, 0x6D, 0x61, 
38270
  0x63, 0x68, 0x69, 0x6E, 0x65, 0x20, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x61, 
38271
  0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x34, 0x20, 0x62, 
38272
  0x79, 0x74, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 
38273
  0x67, 0x65, 0x72, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x64, 
38274
  0x20, 0x69, 0x6E, 0x20, 0x74, 0x77, 0x6F, 0x73, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 
38275
  0x65, 0x6E, 0x74, 0x2C, 0x20, 0x6C, 0x69, 0x74, 0x74, 0x6C, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x69, 
38276
  0x61, 0x6E, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2C, 0x20, 0x75, 0x6E, 0x73, 0x69, 0x67, 0x6E, 
38277
  0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x78, 0x2E, 0x20, 0x52, 0x65, 
38278
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 
38279
  0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 
38280
  0x74, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 
38281
  0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 0x76, 0x65, 
38282
  0x72, 0x66, 0x6C, 0x6F, 0x77, 0x73, 0x2E, 0xCF, 0x0C, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x69, 0x6E, 
38283
  0x74, 0x2D, 0x6D, 0x61, 0x78, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 
38284
  0xA2, 0x01, 0xDA, 0x06, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x43, 0xDA, 0x08, 0xCE, 
38285
  0x42, 0x54, 0x68, 0x65, 0x20, 0x6D, 0x61, 0x78, 0x69, 0x6D, 0x75, 0x6D, 0x20, 0x63, 0x6F, 0x6E, 
38286
  0x74, 0x69, 0x67, 0x75, 0x6F, 0x75, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 
38287
  0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x74, 0x65, 0x6E, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x62, 0x79, 
38288
  0x20, 0x61, 0x20, 0x64, 0x6F, 0x75, 0x62, 0x6C, 0x65, 0x20, 0x28, 0x2D, 0x28, 0x32, 0x5E, 0x35, 
38289
  0x33, 0x29, 0x29, 0xCF, 0x10, 0x65, 0x76, 0x2F, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x2D, 
38290
  0x77, 0x6C, 0x6F, 0x63, 0x6B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x40, 0x8C, 0xB6, 
38291
  0x01, 0xDA, 0x06, 0xD8, 0x10, 0x65, 0x76, 0x2F, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x2D, 
38292
  0x77, 0x6C, 0x6F, 0x63, 0x6B, 0xDA, 0x08, 0xCE, 0x44, 0x28, 0x65, 0x76, 0x2F, 0x72, 0x65, 0x6C, 
38293
  0x65, 0x61, 0x73, 0x65, 0x2D, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x72, 0x77, 0x6C, 0x6F, 0x63, 
38294
  0x6B, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x20, 0x61, 0x20, 0x77, 0x72, 
38295
  0x69, 0x74, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x20, 0x72, 0x65, 
38296
  0x61, 0x64, 0x2D, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0xCF, 0x08, 0x6D, 
38297
  0x61, 0x74, 0x68, 0x2F, 0x72, 0x6E, 0x67, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 
38298
  0x9A, 0x7D, 0x01, 0xDA, 0x06, 0xD8, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x6E, 0x67, 0xDA, 
38299
  0x08, 0xCE, 0x80, 0xD5, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x6E, 0x67, 0x20, 0x26, 0x6F, 
38300
  0x70, 0x74, 0x20, 0x73, 0x65, 0x65, 0x64, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 
38301
  0x73, 0x20, 0x61, 0x20, 0x50, 0x73, 0x75, 0x65, 0x64, 0x6F, 0x2D, 0x52, 0x61, 0x6E, 0x64, 0x6F, 
38302
  0x6D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 
38303
  0x6F, 0x72, 0x2C, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 
38304
  0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x73, 0x65, 0x65, 0x64, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 
38305
  0x65, 0x65, 0x64, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 
38306
  0x20, 0x75, 0x6E, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x20, 0x33, 0x32, 0x20, 0x62, 0x69, 0x74, 
38307
  0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x62, 0x75, 
38308
  0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x44, 0x6F, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x75, 0x73, 0x65, 
38309
  0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6F, 
38310
  0x67, 0x72, 0x61, 0x70, 0x68, 0x79, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
38311
  0x61, 0x20, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x72, 0x6E, 0x67, 0x20, 0x61, 0x62, 0x73, 0x74, 0x72, 
38312
  0x61, 0x63, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2E, 0xCF, 0x0D, 0x70, 0x61, 0x72, 0x73, 0x65, 
38313
  0x72, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
38314
  0x84, 0xAE, 0x83, 0xF3, 0x01, 0xDA, 0x06, 0xDA, 0x85, 0xA8, 0xDA, 0x08, 0xCE, 0x81, 0x02, 0x28, 
38315
  0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x70, 0x61, 
38316
  0x72, 0x73, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
38317
  0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x6F, 
38318
  0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x73, 0x74, 0x61, 
38319
  0x74, 0x65, 0x20, 0x6D, 0x61, 0x63, 0x68, 0x69, 0x6E, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 
38320
  0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x6F, 
38321
  0x6E, 0x65, 0x20, 0x6F, 0x66, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x70, 0x65, 0x6E, 0x64, 0x69, 
38322
  0x6E, 0x67, 0x20, 0x2D, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x73, 0x20, 
38323
  0x62, 0x65, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x64, 0x2E, 0x0A, 0x0A, 0x2A, 
38324
  0x20, 0x3A, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x2D, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x73, 
38325
  0x69, 0x6E, 0x67, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x77, 0x61, 0x73, 0x20, 0x65, 0x6E, 
38326
  0x63, 0x6F, 0x75, 0x6E, 0x74, 0x65, 0x72, 0x65, 0x64, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x72, 
38327
  0x6F, 0x6F, 0x74, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 
38328
  0x20, 0x63, 0x61, 0x6E, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x72, 0x65, 0x61, 0x64, 
38329
  0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x6F, 0x72, 0x20, 
38330
  0x73, 0x61, 0x66, 0x65, 0x6C, 0x79, 0x20, 0x74, 0x65, 0x72, 0x6D, 0x69, 0x6E, 0x61, 0x74, 0x65, 
38331
  0x2E, 0xCF, 0x0C, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x2D, 0x62, 0x79, 0xD3, 
38332
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x86, 0x5C, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 
38333
  0x00, 0xDC, 0x00, 0x00, 0x0E, 0x02, 0x02, 0x02, 0x01, 0x26, 0x00, 0x0B, 0xCE, 0x0C, 0x70, 0x61, 
38334
  0x72, 0x74, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x2D, 0x62, 0x79, 0xDA, 0x18, 0xDA, 0x81, 0x8C, 0x00, 
38335
  0x26, 0x00, 0xDA, 0x80, 0xFB, 0x00, 0x26, 0x01, 0xDA, 0x1F, 0x00, 0x26, 0x02, 0xDA, 0x86, 0x93, 
38336
  0x01, 0x26, 0x04, 0xDA, 0x23, 0x02, 0x26, 0x05, 0xCF, 0x04, 0x73, 0x70, 0x61, 0x6E, 0x03, 0x26, 
38337
  0x06, 0xCF, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6F, 0x72, 0x79, 0x04, 0x26, 0x07, 0xCF, 0x06, 
38338
  0x69, 0x73, 0x2D, 0x6E, 0x65, 0x77, 0x04, 0x25, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
38339
  0x32, 0x4C, 0x07, 0x25, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x4B, 0x0A, 0x25, 
38340
  0x0A, 0xDA, 0x1E, 0x0D, 0x25, 0x0B, 0xDA, 0x83, 0x92, 0x3E, 0x03, 0x00, 0x00, 0x19, 0x04, 0x03, 
38341
  0x00, 0x26, 0x05, 0x00, 0x00, 0x26, 0x06, 0x00, 0x00, 0x27, 0x07, 0x00, 0x00, 0x26, 0x09, 0x00, 
38342
  0x00, 0x47, 0x08, 0x01, 0x09, 0x19, 0x09, 0x08, 0x00, 0x1D, 0x09, 0x1D, 0x00, 0x38, 0x08, 0x01, 
38343
  0x09, 0x19, 0x0A, 0x08, 0x00, 0x2F, 0x0A, 0x00, 0x00, 0x33, 0x08, 0x00, 0x00, 0x19, 0x0B, 0x08, 
38344
  0x00, 0x1C, 0x07, 0x09, 0x00, 0x28, 0x07, 0x00, 0x00, 0x19, 0x06, 0x0B, 0x00, 0x2F, 0x0A, 0x00, 
38345
  0x00, 0x3E, 0x05, 0x00, 0x00, 0x30, 0x04, 0x05, 0x00, 0x2A, 0x0C, 0x00, 0x00, 0x33, 0x08, 0x0C, 
38346
  0x00, 0x1A, 0x0D, 0x00, 0x00, 0x23, 0x08, 0x0B, 0x06, 0x1C, 0x08, 0x05, 0x00, 0x30, 0x05, 0x0A, 
38347
  0x00, 0x2A, 0x0D, 0x00, 0x00, 0x33, 0x0C, 0x0D, 0x00, 0x1A, 0x07, 0x00, 0x00, 0x19, 0x06, 0x0B, 
38348
  0x00, 0x2F, 0x0A, 0x00, 0x00, 0x3E, 0x05, 0x00, 0x00, 0x30, 0x04, 0x05, 0x00, 0x2A, 0x0D, 0x00, 
38349
  0x00, 0x33, 0x0C, 0x0D, 0x00, 0x47, 0x09, 0x01, 0x09, 0x1A, 0xE4, 0xFF, 0xFF, 0x03, 0x04, 0x00, 
38350
  0x00, 0x86, 0x61, 0x03, 0x00, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x00, 0x03, 
38351
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x05, 
38352
  0x01, 0x12, 0x00, 0x25, 0x00, 0x36, 0x00, 0x36, 0x00, 0x46, 0x00, 0x46, 0x00, 0x46, 0xBF, 0xFF, 
38353
  0x05, 0x02, 0x07, 0xBF, 0xFE, 0x05, 0x02, 0x16, 0x00, 0x16, 0x00, 0x16, 0xBF, 0xFE, 0x05, 0x03, 
38354
  0x0B, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x2C, 0xBF, 0xFB, 0x03, 0x00, 0x03, 
38355
  0xBF, 0xF7, 0x01, 0xDA, 0x08, 0xCE, 0x80, 0xE6, 0x28, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 
38356
  0x6F, 0x6E, 0x2D, 0x62, 0x79, 0x20, 0x66, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x50, 0x61, 
38357
  0x72, 0x74, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 
38358
  0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x74, 0x69, 0x61, 0x6C, 
38359
  0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 
38360
  0x62, 0x79, 0x20, 0x61, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x61, 0x74, 
38361
  0x69, 0x76, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x60, 0x66, 0x60, 
38362
  0x2E, 0x20, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x0A, 0x73, 0x70, 0x6C, 
38363
  0x69, 0x74, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x60, 0x28, 0x66, 0x20, 0x78, 0x29, 0x60, 0x20, 
38364
  0x63, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x73, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x77, 
38365
  0x68, 0x65, 0x6E, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x6F, 
38366
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 
38367
  0x74, 0x20, 0x60, 0x78, 0x60, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x2E, 0x20, 
38368
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 
38369
  0x72, 0x61, 0x79, 0x0A, 0x6F, 0x66, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x73, 0x2E, 0xCF, 0x09, 
38370
  0x2A, 0x73, 0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 0x2A, 0xD3, 0x04, 0xDA, 0x84, 0x25, 0xCB, 0xDA, 
38371
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x89, 0x16, 0x01, 0xDA, 0x06, 0xD0, 0x07, 0x73, 0x79, 0x73, 
38372
  0x70, 0x61, 0x74, 0x68, 0xDA, 0x08, 0xCE, 0x2E, 0x50, 0x61, 0x74, 0x68, 0x20, 0x6F, 0x66, 0x20, 
38373
  0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x6C, 0x6F, 0x61, 
38374
  0x64, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 
38375
  0x20, 0x66, 0x72, 0x6F, 0x6D, 0x2E, 0xCF, 0x0E, 0x2A, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 
38376
  0x2D, 0x66, 0x69, 0x6C, 0x65, 0x2A, 0xD3, 0x04, 0xDA, 0x84, 0x25, 0xCB, 0xDA, 0x03, 0xD2, 0x03, 
38377
  0x00, 0xDA, 0x18, 0x84, 0xCF, 0x01, 0xDA, 0x06, 0xDA, 0x82, 0x15, 0xDA, 0x08, 0xCE, 0x32, 0x42, 
38378
  0x6F, 0x75, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 
38379
  0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x6C, 
38380
  0x79, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x69, 0x6C, 0x65, 
38381
  0x2E, 0xCF, 0x06, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
38382
  0xCE, 0x12, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x6C, 
38383
  0x69, 0x62, 0x2E, 0x63, 0x81, 0xD5, 0x01, 0xDA, 0x06, 0xDA, 0x85, 0x15, 0xDA, 0x08, 0xCE, 0x80, 
38384
  0xCC, 0x28, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x26, 0x20, 0x6B, 0x76, 0x73, 0x29, 0x0A, 
38385
  0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 
38386
  0x72, 0x75, 0x63, 0x74, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x73, 0x65, 0x71, 0x75, 
38387
  0x65, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 
38388
  0x65, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x2E, 0x20, 0x6B, 0x76, 0x73, 0x20, 0x69, 0x73, 0x20, 
38389
  0x61, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6B, 0x31, 0x2C, 0x20, 0x76, 
38390
  0x31, 0x2C, 0x20, 0x6B, 0x32, 0x2C, 0x20, 0x76, 0x32, 0x2C, 0x20, 0x6B, 0x33, 0x2C, 0x20, 0x76, 
38391
  0x33, 0x2C, 0x20, 0x2E, 0x2E, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6B, 0x76, 0x73, 0x20, 0x68, 0x61, 
38392
  0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x64, 0x64, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 
38393
  0x6F, 0x66, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x20, 
38394
  0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x74, 0x68, 
38395
  0x72, 0x6F, 0x77, 0x6E, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 
38396
  0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2E, 0xDA, 0x84, 0xCF, 
38397
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x84, 0x12, 0x01, 0xDA, 0x06, 0xDA, 0x84, 
38398
  0xCD, 0xDA, 0x08, 0xCE, 0x76, 0x28, 0x66, 0x69, 0x6E, 0x64, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 
38399
  0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x64, 
38400
  0x66, 0x6C, 0x74, 0x29, 0x0A, 0x0A, 0x46, 0x69, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 
38401
  0x6E, 0x64, 0x65, 0x78, 0x20, 0x6F, 0x66, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 
38402
  0x74, 0x79, 0x70, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x60, 
38403
  0x70, 0x72, 0x65, 0x64, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2E, 0x20, 0x52, 
38404
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x60, 0x64, 0x66, 0x6C, 0x74, 0x60, 0x20, 0x69, 0x66, 
38405
  0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2E, 0xDA, 0x81, 0xFA, 0xD3, 0x03, 
38406
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x80, 0x93, 0x01, 0xDA, 0x06, 0xDA, 0x81, 0xF8, 0xDA, 
38407
  0x08, 0xCE, 0x17, 0x28, 0x64, 0x65, 0x63, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 
38408
  0x72, 0x6E, 0x73, 0x20, 0x78, 0x20, 0x2D, 0x20, 0x31, 0x2E, 0xCF, 0x0F, 0x70, 0x65, 0x67, 0x2F, 
38409
  0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
38410
  0x03, 0x00, 0xDA, 0x84, 0xC4, 0x86, 0xE2, 0x01, 0xDA, 0x06, 0xD8, 0x0F, 0x70, 0x65, 0x67, 0x2F, 
38411
  0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 0xDA, 0x08, 0xCE, 0x81, 0x17, 
38412
  0x28, 0x70, 0x65, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 
38413
  0x20, 0x70, 0x65, 0x67, 0x20, 0x73, 0x75, 0x62, 0x73, 0x74, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 
38414
  0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 
38415
  0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x20, 0x61, 0x6C, 0x6C, 0x20, 
38416
  0x6D, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x70, 0x65, 0x67, 0x60, 
38417
  0x20, 0x69, 0x6E, 0x20, 0x60, 0x74, 0x65, 0x78, 0x74, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 
38418
  0x60, 0x73, 0x75, 0x62, 0x73, 0x74, 0x60, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x69, 
38419
  0x6E, 0x67, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 
38420
  0x20, 0x54, 0x68, 0x65, 0x20, 0x70, 0x65, 0x67, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 
38421
  0x74, 0x20, 0x6E, 0x65, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x6D, 0x61, 0x6B, 0x65, 0x20, 0x63, 
38422
  0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x64, 0x6F, 0x20, 0x72, 0x65, 
38423
  0x70, 0x6C, 0x61, 0x63, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x73, 
38424
  0x75, 0x62, 0x73, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 
38425
  0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x69, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 
38426
  0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 
38427
  0x6D, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x66, 0x6F, 
38428
  0x6C, 0x6C, 0x6F, 0x77, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x63, 0x61, 
38429
  0x70, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2E, 0xCF, 0x06, 0x6F, 0x73, 0x2F, 0x64, 0x69, 0x72, 0xD3, 
38430
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x88, 0x67, 0x01, 0xDA, 0x06, 0xD8, 0x06, 0x6F, 
38431
  0x73, 0x2F, 0x64, 0x69, 0x72, 0xDA, 0x08, 0xCE, 0x80, 0xA8, 0x28, 0x6F, 0x73, 0x2F, 0x64, 0x69, 
38432
  0x72, 0x20, 0x64, 0x69, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 
38433
  0x29, 0x0A, 0x0A, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 
38434
  0x66, 0x69, 0x6C, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x75, 0x62, 0x64, 0x69, 0x72, 
38435
  0x65, 0x63, 0x74, 0x6F, 0x72, 0x69, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x64, 0x69, 
38436
  0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
38437
  0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x70, 0x61, 0x74, 
38438
  0x68, 0x73, 0x20, 0x70, 0x61, 0x72, 0x74, 0x73, 0x2C, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6F, 
38439
  0x6E, 0x6C, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6E, 0x61, 0x6D, 
38440
  0x65, 0x20, 0x6F, 0x72, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x6E, 
38441
  0x61, 0x6D, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6E, 0x6F, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 
38442
  0x78, 0x2E, 0xCF, 0x08, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x2D, 0x66, 0x6E, 0xD3, 0x04, 0xDA, 0x03, 
38443
  0xD2, 0x03, 0x00, 0xDA, 0x18, 0x88, 0xBD, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 
38444
  0x00, 0x17, 0x02, 0x01, 0x02, 0x09, 0x3A, 0x00, 0x02, 0x0F, 0xCE, 0x08, 0x73, 0x68, 0x6F, 0x72, 
38445
  0x74, 0x2D, 0x66, 0x6E, 0xDA, 0x18, 0xDA, 0x49, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 
38446
  0x02, 0x01, 0x02, 0x03, 0x17, 0x00, 0x06, 0xCE, 0x05, 0x6D, 0x61, 0x63, 0x65, 0x78, 0xDA, 0x18, 
38447
  0xDA, 0x84, 0xE8, 0xDA, 0x85, 0x5C, 0xCE, 0x1A, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x20, 0x65, 0x78, 
38448
  0x70, 0x61, 0x6E, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x6F, 0x20, 0x6E, 0x65, 0x73, 0x74, 
38449
  0x65, 0x64, 0x00, 0x17, 0x00, 0xDA, 0x1E, 0x00, 0x17, 0x01, 0xDA, 0x84, 0xF6, 0x00, 0x17, 0x02, 
38450
  0xCF, 0x05, 0x6D, 0x61, 0x63, 0x65, 0x78, 0x00, 0x17, 0x03, 0xCF, 0x08, 0x70, 0x72, 0x65, 0x76, 
38451
  0x69, 0x6F, 0x75, 0x73, 0x04, 0x17, 0x05, 0xCF, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 
38452
  0x05, 0x17, 0x06, 0xCF, 0x07, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x65, 0x72, 0x19, 0x03, 0x00, 0x00, 
38453
  0x30, 0x00, 0x01, 0x00, 0x2A, 0x05, 0x00, 0x00, 0x33, 0x04, 0x05, 0x00, 0x19, 0x05, 0x04, 0x00, 
38454
  0x29, 0x06, 0x00, 0x00, 0x30, 0x05, 0x03, 0x00, 0x2A, 0x08, 0x01, 0x00, 0x33, 0x07, 0x08, 0x00, 
38455
  0x1C, 0x07, 0x0D, 0x00, 0x05, 0x06, 0x06, 0x01, 0x29, 0x09, 0xC8, 0x00, 0x1F, 0x08, 0x06, 0x09, 
38456
  0x1C, 0x08, 0x04, 0x00, 0x2A, 0x09, 0x02, 0x00, 0x01, 0x09, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 
38457
  0x19, 0x03, 0x05, 0x00, 0x30, 0x05, 0x01, 0x00, 0x2A, 0x08, 0x00, 0x00, 0x33, 0x05, 0x08, 0x00, 
38458
  0x1A, 0xF1, 0xFF, 0xFF, 0x03, 0x05, 0x00, 0x00, 0x88, 0x95, 0x03, 0x01, 0x10, 0x00, 0x10, 0x00, 
38459
  0x10, 0x00, 0x03, 0x01, 0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x0C, 0x00, 
38460
  0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x02, 0x05, 0x01, 0x12, 
38461
  0x00, 0x12, 0x00, 0x12, 0xBF, 0xFC, 0x03, 0xBF, 0xF6, 0x01, 0xD2, 0x00, 0x00, 0xCF, 0x01, 0x24, 
38462
  0xD8, 0x06, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0xDA, 0x81, 0x8C, 0xCF, 0x02, 0x24, 0x26, 0xDA, 
38463
  0x82, 0xBC, 0xDA, 0x82, 0xAE, 0x00, 0x3A, 0x00, 0xCF, 0x03, 0x61, 0x72, 0x67, 0x00, 0x3A, 0x01, 
38464
  0xDA, 0x83, 0x0F, 0x00, 0x3A, 0x02, 0xDA, 0x86, 0xBC, 0x00, 0x3A, 0x03, 0xCF, 0x0E, 0x6D, 0x61, 
38465
  0x78, 0x2D, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x2D, 0x73, 0x65, 0x65, 0x6E, 0x01, 0x3A, 0x04, 0xCF, 
38466
  0x06, 0x76, 0x61, 0x72, 0x61, 0x72, 0x67, 0x03, 0x3A, 0x06, 0xCF, 0x0F, 0x73, 0x61, 0x77, 0x2D, 
38467
  0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x2D, 0x61, 0x72, 0x67, 0x06, 0x3A, 0x08, 0xCF, 0x06, 
38468
  0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x08, 0x3A, 0x0A, 0xDA, 0x84, 0xF6, 0x0C, 0x3A, 0x0C, 0xCF, 
38469
  0x08, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x65, 0x64, 0x13, 0x3A, 0x0E, 0xCF, 0x0B, 0x6E, 0x61, 
38470
  0x6D, 0x65, 0x2D, 0x73, 0x70, 0x6C, 0x69, 0x63, 0x65, 0x15, 0x26, 0x10, 0xCF, 0x07, 0x5F, 0x30, 
38471
  0x30, 0x30, 0x30, 0x34, 0x6B, 0x16, 0x26, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 
38472
  0x6C, 0x19, 0x26, 0x12, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x6D, 0x1C, 0x26, 0x13, 
38473
  0xDA, 0x80, 0x90, 0x25, 0x3A, 0x10, 0xCF, 0x07, 0x66, 0x6E, 0x2D, 0x61, 0x72, 0x67, 0x73, 0x29, 
38474
  0x03, 0xFF, 0xFF, 0x28, 0x04, 0x00, 0x00, 0x2E, 0x05, 0x00, 0x00, 0x19, 0x06, 0x05, 0x00, 0x2A, 
38475
  0x08, 0x00, 0x00, 0x33, 0x07, 0x08, 0x00, 0x19, 0x08, 0x07, 0x00, 0x2E, 0x09, 0x01, 0x00, 0x19, 
38476
  0x0A, 0x09, 0x00, 0x30, 0x00, 0x0A, 0x00, 0x2A, 0x0C, 0x01, 0x00, 0x33, 0x0B, 0x0C, 0x00, 0x19, 
38477
  0x0C, 0x0B, 0x00, 0x1C, 0x01, 0x05, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x43, 0x0E, 0x00, 0x00, 0x19, 
38478
  0x0D, 0x0E, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x2A, 0x0D, 0x02, 0x00, 0x19, 0x0E, 0x0D, 0x00, 0x3E, 
38479
  0x0F, 0x00, 0x00, 0x19, 0x10, 0x0F, 0x00, 0x29, 0x0F, 0x00, 0x00, 0x29, 0x12, 0x01, 0x00, 0x06, 
38480
  0x11, 0x12, 0x03, 0x19, 0x12, 0x11, 0x00, 0x21, 0x11, 0x0F, 0x12, 0x1C, 0x11, 0x0B, 0x00, 0x19, 
38481
  0x13, 0x0F, 0x00, 0x2A, 0x14, 0x03, 0x00, 0x31, 0x08, 0x14, 0x13, 0x2A, 0x15, 0x04, 0x00, 0x33, 
38482
  0x14, 0x15, 0x00, 0x30, 0x10, 0x14, 0x00, 0x2A, 0x16, 0x05, 0x00, 0x33, 0x15, 0x16, 0x00, 0x05, 
38483
  0x0F, 0x0F, 0x01, 0x1A, 0xF5, 0xFF, 0xFF, 0x1C, 0x04, 0x0A, 0x00, 0x2A, 0x11, 0x06, 0x00, 0x30, 
38484
  0x08, 0x11, 0x00, 0x2A, 0x12, 0x04, 0x00, 0x33, 0x11, 0x12, 0x00, 0x2A, 0x12, 0x07, 0x00, 0x30, 
38485
  0x12, 0x11, 0x00, 0x43, 0x11, 0x00, 0x00, 0x19, 0x0F, 0x11, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x2A, 
38486
  0x0F, 0x02, 0x00, 0x32, 0x10, 0x00, 0x00, 0x32, 0x0F, 0x00, 0x00, 0x44, 0x11, 0x00, 0x00, 0x2A, 
38487
  0x12, 0x08, 0x00, 0x2F, 0x12, 0x00, 0x00, 0x32, 0x0E, 0x00, 0x00, 0x30, 0x11, 0x0C, 0x00, 0x43, 
38488
  0x0F, 0x00, 0x00, 0x03, 0x0F, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 
38489
  0x01, 0x07, 0x01, 0x07, 0xCE, 0x0F, 0x73, 0x61, 0x77, 0x2D, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 
38490
  0x6C, 0x2D, 0x61, 0x72, 0x67, 0xDA, 0x18, 0xDA, 0x85, 0x38, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x86, 
38491
  0xCC, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x0F, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x86, 0xBC, 0xBF, 
38492
  0xFF, 0x00, 0x03, 0xDA, 0x86, 0xCD, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x86, 0xCE, 0x00, 0x07, 0x00, 
38493
  0xCF, 0x03, 0x6E, 0x75, 0x6D, 0x00, 0x07, 0x01, 0xDA, 0x86, 0xCF, 0x2B, 0x02, 0x00, 0x03, 0x30, 
38494
  0x02, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x2D, 0x02, 0x00, 0x03, 0x2B, 
38495
  0x03, 0x00, 0x03, 0x03, 0x03, 0x00, 0x00, 0xBF, 0xFF, 0x88, 0xD0, 0x19, 0x00, 0x19, 0x00, 0x19, 
38496
  0x00, 0x19, 0x00, 0x19, 0x00, 0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x01, 0x01, 
38497
  0x01, 0x08, 0x30, 0x01, 0x0A, 0xCE, 0x0A, 0x6F, 0x6E, 0x2D, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 
38498
  0x67, 0xDA, 0x18, 0xDA, 0x86, 0xC9, 0xD8, 0x12, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x68, 
38499
  0x61, 0x73, 0x2D, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x3F, 0xCF, 0x02, 0x24, 0x30, 0xDA, 0x86, 
38500
  0xCA, 0xDA, 0x86, 0xCB, 0xDA, 0x81, 0xFC, 0xD8, 0x0B, 0x73, 0x63, 0x61, 0x6E, 0x2D, 0x6E, 0x75, 
38501
  0x6D, 0x62, 0x65, 0x72, 0xD8, 0x04, 0x6E, 0x61, 0x74, 0x3F, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x86, 
38502
  0xCC, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x0F, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x86, 0xBC, 0xBF, 
38503
  0xFF, 0x00, 0x03, 0xDA, 0x86, 0xCD, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x86, 0xCE, 0xBF, 0xFF, 0x00, 
38504
  0x06, 0xDA, 0x86, 0xCF, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x86, 0xD0, 0x00, 0x30, 0x00, 0xDA, 0x1E, 
38505
  0x00, 0x30, 0x01, 0xDA, 0x84, 0xF6, 0x21, 0x2E, 0x05, 0xDA, 0x86, 0xD8, 0x2A, 0x02, 0x00, 0x00, 
38506
  0x30, 0x02, 0x00, 0x00, 0x2A, 0x03, 0x01, 0x00, 0x33, 0x02, 0x03, 0x00, 0x1C, 0x02, 0x2B, 0x00, 
38507
  0x2A, 0x04, 0x00, 0x00, 0x23, 0x03, 0x04, 0x00, 0x1C, 0x03, 0x0A, 0x00, 0x29, 0x04, 0x00, 0x00, 
38508
  0x2F, 0x04, 0x00, 0x00, 0x2B, 0x05, 0x00, 0x06, 0x33, 0x04, 0x05, 0x00, 0x2B, 0x04, 0x00, 0x08, 
38509
  0x2A, 0x05, 0x02, 0x00, 0x30, 0x04, 0x05, 0x00, 0x2A, 0x04, 0x03, 0x00, 0x34, 0x04, 0x00, 0x00, 
38510
  0x2A, 0x05, 0x04, 0x00, 0x23, 0x04, 0x05, 0x00, 0x1C, 0x04, 0x07, 0x00, 0x27, 0x05, 0x00, 0x00, 
38511
  0x2D, 0x05, 0x00, 0x04, 0x2B, 0x05, 0x00, 0x08, 0x30, 0x05, 0x00, 0x00, 0x2A, 0x05, 0x03, 0x00, 
38512
  0x34, 0x05, 0x00, 0x00, 0x29, 0x05, 0x01, 0x00, 0x30, 0x00, 0x05, 0x00, 0x2A, 0x06, 0x05, 0x00, 
38513
  0x33, 0x05, 0x06, 0x00, 0x2F, 0x05, 0x00, 0x00, 0x2A, 0x07, 0x06, 0x00, 0x33, 0x06, 0x07, 0x00, 
38514
  0x19, 0x05, 0x06, 0x00, 0x2F, 0x05, 0x00, 0x00, 0x2A, 0x07, 0x07, 0x00, 0x33, 0x06, 0x07, 0x00, 
38515
  0x1C, 0x06, 0x08, 0x00, 0x2F, 0x05, 0x00, 0x00, 0x2B, 0x08, 0x00, 0x06, 0x33, 0x07, 0x08, 0x00, 
38516
  0x2B, 0x07, 0x00, 0x08, 0x30, 0x07, 0x00, 0x00, 0x2A, 0x07, 0x03, 0x00, 0x34, 0x07, 0x00, 0x00, 
38517
  0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x88, 0xD4, 
38518
  0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x02, 0x09, 0x00, 0x09, 0xBF, 0xFF, 0x07, 
38519
  0x03, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
38520
  0x00, 0x0B, 0x01, 0x09, 0x00, 0x09, 0xBF, 0xFB, 0x07, 0x07, 0x0B, 0x00, 0x0B, 0x01, 0x0B, 0x00, 
38521
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x03, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x14, 0x00, 
38522
  0x14, 0x00, 0x14, 0x00, 0x0B, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0B, 0x02, 0x0F, 0x00, 
38523
  0x0F, 0x00, 0x0F, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 0xFD, 0x0B, 0xBF, 0xF4, 
38524
  0x07, 0xBF, 0xFF, 0x05, 0x88, 0xCC, 0x03, 0x01, 0x03, 0x01, 0x03, 0x00, 0x03, 0x03, 0x0F, 0x00, 
38525
  0x0F, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x15, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x03, 0x01, 
38526
  0x14, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x03, 0x01, 0x10, 0x00, 
38527
  0x10, 0x00, 0x10, 0x00, 0x22, 0x00, 0x22, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 
38528
  0x39, 0x00, 0x39, 0x00, 0x39, 0x00, 0x39, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 
38529
  0x10, 0x01, 0x23, 0x00, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x2E, 0x00, 0x2E, 0x00, 
38530
  0x2E, 0x00, 0x23, 0x00, 0x23, 0x00, 0x23, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
38531
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x58, 0x01, 0x00, 0x00, 0xDA, 0x08, 0xCE, 
38532
  0x82, 0x38, 0x28, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x2D, 0x66, 0x6E, 0x20, 0x61, 0x72, 0x67, 0x20, 
38533
  0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x29, 0x0A, 0x0A, 0x53, 0x68, 0x6F, 0x72, 
38534
  0x74, 0x68, 0x61, 0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x66, 0x6E, 0x60, 0x2E, 0x20, 
38535
  0x41, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x67, 0x69, 
38536
  0x76, 0x65, 0x6E, 0x20, 0x61, 0x73, 0x20, 0x60, 0x24, 0x6E, 0x60, 0x2C, 0x20, 0x77, 0x68, 0x65, 
38537
  0x72, 0x65, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x30, 0x2D, 
38538
  0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x0A, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 
38539
  0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
38540
  0x2E, 0x20, 0x60, 0x24, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x61, 0x6E, 
38541
  0x20, 0x61, 0x6C, 0x69, 0x61, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
38542
  0x69, 0x72, 0x73, 0x74, 0x20, 0x28, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x30, 0x29, 0x20, 0x61, 
38543
  0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x60, 0x24, 0x26, 
38544
  0x60, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6D, 0x61, 
38545
  0x6B, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x6E, 0x6F, 0x6E, 0x79, 0x6D, 0x6F, 0x75, 0x73, 
38546
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x64, 
38547
  0x69, 0x63, 0x20, 0x69, 0x66, 0x20, 0x69, 0x74, 0x20, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x73, 
38548
  0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x6F, 0x66, 0x20, 
38549
  0x74, 0x68, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x61, 0x6E, 
38550
  0x64, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x62, 0x69, 0x6E, 0x65, 
38551
  0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x61, 
38552
  0x6C, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0x0A, 0x0A, 0x45, 0x78, 
38553
  0x61, 0x6D, 0x70, 0x6C, 0x65, 0x20, 0x75, 0x73, 0x61, 0x67, 0x65, 0x3A, 0x0A, 0x0A, 0x20, 0x20, 
38554
  0x20, 0x20, 0x28, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x2D, 0x66, 0x6E, 0x20, 0x28, 0x2B, 0x20, 0x24, 
38555
  0x20, 0x24, 0x29, 0x29, 0x20, 0x23, 0x20, 0x41, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
38556
  0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, 0x6F, 0x75, 0x62, 0x6C, 0x65, 0x73, 0x20, 0x69, 
38557
  0x74, 0x73, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0x0A, 0x20, 0x20, 
38558
  0x20, 0x20, 0x28, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x2D, 0x66, 0x6E, 0x20, 0x28, 0x73, 0x74, 0x72, 
38559
  0x69, 0x6E, 0x67, 0x20, 0x24, 0x30, 0x20, 0x24, 0x31, 0x29, 0x29, 0x20, 0x23, 0x20, 0x61, 0x63, 
38560
  0x63, 0x65, 0x70, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 
38561
  0x20, 0x61, 0x72, 0x67, 0x73, 0x2E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x7C, 0x28, 0x2B, 0x20, 0x24, 
38562
  0x20, 0x24, 0x29, 0x20, 0x23, 0x20, 0x75, 0x73, 0x65, 0x20, 0x70, 0x69, 0x70, 0x65, 0x20, 0x72, 
38563
  0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x20, 0x66, 0x6F, 0x72, 0x20, 
38564
  0x74, 0x65, 0x72, 0x73, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6C, 
38565
  0x69, 0x74, 0x65, 0x72, 0x61, 0x6C, 0x73, 0x2E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x7C, 0x28, 0x2B, 
38566
  0x20, 0x24, 0x26, 0x29, 0x20, 0x20, 0x23, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x64, 0x69, 0x63, 
38567
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0xDA, 0x3D, 0xCB, 0xDA, 0x85, 0x11, 
38568
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x86, 0x91, 0x01, 0xDA, 0x06, 0xDA, 0x85, 
38569
  0x0E, 0xDA, 0x08, 0xCE, 0x78, 0x28, 0x6B, 0x76, 0x73, 0x20, 0x64, 0x69, 0x63, 0x74, 0x29, 0x0A, 
38570
  0x0A, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6F, 
38571
  0x72, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 
38572
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 
38573
  0x66, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x70, 0x61, 0x69, 0x72, 
38574
  0x73, 0x0A, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x60, 0x40, 0x5B, 0x6B, 0x20, 0x76, 0x20, 0x6B, 0x20, 
38575
  0x76, 0x20, 0x2E, 0x2E, 0x2E, 0x5D, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
38576
  0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xCF, 0x12, 0x73, 
38577
  0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x68, 0x61, 0x73, 0x2D, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 
38578
  0x3F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0xFA, 0x81, 0x46, 0x01, 0xDA, 0x06, 
38579
  0xDA, 0x86, 0xDA, 0xDA, 0x08, 0xCE, 0x44, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x68, 
38580
  0x61, 0x73, 0x2D, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x3F, 0x20, 0x70, 0x66, 0x78, 0x20, 0x73, 
38581
  0x74, 0x72, 0x29, 0x0A, 0x0A, 0x54, 0x65, 0x73, 0x74, 0x73, 0x20, 0x77, 0x68, 0x65, 0x74, 0x68, 
38582
  0x65, 0x72, 0x20, 0x60, 0x73, 0x74, 0x72, 0x60, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x20, 
38583
  0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x70, 0x66, 0x78, 0x60, 0x2E, 0xCF, 0x04, 0x6B, 0x65, 0x79, 
38584
  0x73, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x86, 0x27, 0x01, 0xDA, 0x06, 0xD7, 
38585
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x01, 0x01, 0x01, 0x01, 0x0E, 0x00, 0x04, 0xCE, 0x04, 
38586
  0x6B, 0x65, 0x79, 0x73, 0xDA, 0x18, 0xDA, 0x81, 0x8C, 0x00, 0x0E, 0x00, 0xDA, 0x1E, 0x00, 0x0E, 
38587
  0x01, 0xDA, 0x86, 0xE6, 0x01, 0x0E, 0x03, 0xCF, 0x03, 0x61, 0x72, 0x72, 0x04, 0x0E, 0x05, 0xDA, 
38588
  0x22, 0x3E, 0x02, 0x00, 0x00, 0x19, 0x03, 0x02, 0x00, 0x26, 0x05, 0x00, 0x00, 0x47, 0x04, 0x00, 
38589
  0x05, 0x19, 0x05, 0x04, 0x00, 0x26, 0x07, 0x00, 0x00, 0x48, 0x06, 0x07, 0x05, 0x1C, 0x06, 0x06, 
38590
  0x00, 0x30, 0x03, 0x05, 0x00, 0x2A, 0x08, 0x00, 0x00, 0x33, 0x07, 0x08, 0x00, 0x47, 0x05, 0x00, 
38591
  0x05, 0x1A, 0xF9, 0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 0x86, 0x2A, 0x03, 0x00, 0x03, 0x01, 0x0A, 
38592
  0x00, 0x0A, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 
38593
  0x01, 0x0C, 0xBF, 0xFE, 0x03, 0xBF, 0xFB, 0x01, 0xDA, 0x08, 0xCE, 0x38, 0x28, 0x6B, 0x65, 0x79, 
38594
  0x73, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 
38595
  0x79, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x73, 0x73, 0x6F, 0x63, 0x69, 0x61, 
38596
  0x74, 0x69, 0x76, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 
38597
  0x75, 0x72, 0x65, 0x2E, 0xCF, 0x0E, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x62, 0x69, 0x74, 
38598
  0x2D, 0x73, 0x65, 0x74, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x83, 0x40, 0x81, 0x9E, 
38599
  0x01, 0xDA, 0x06, 0xD8, 0x0E, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x62, 0x69, 0x74, 0x2D, 
38600
  0x73, 0x65, 0x74, 0xDA, 0x08, 0xCE, 0x57, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x62, 
38601
  0x69, 0x74, 0x2D, 0x73, 0x65, 0x74, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x6E, 
38602
  0x64, 0x65, 0x78, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 
38603
  0x69, 0x74, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 
38604
  0x62, 0x69, 0x74, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
38605
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xCF, 0x09, 
38606
  0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x73, 0x69, 0x6E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
38607
  0xDA, 0x82, 0x9A, 0x81, 0x0B, 0x01, 0xDA, 0x06, 0xD8, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 
38608
  0x73, 0x69, 0x6E, 0xDA, 0x08, 0xCE, 0x27, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x73, 0x69, 
38609
  0x6E, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 
38610
  0x65, 0x20, 0x61, 0x72, 0x63, 0x73, 0x69, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xCF, 0x06, 
38611
  0x67, 0x65, 0x74, 0x2D, 0x69, 0x6E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x85, 
38612
  0xD8, 0x01, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x03, 0x02, 0x03, 0x02, 
38613
  0x18, 0x00, 0x08, 0xCE, 0x06, 0x67, 0x65, 0x74, 0x2D, 0x69, 0x6E, 0xDA, 0x18, 0xDA, 0x84, 0xD1, 
38614
  0xDA, 0x80, 0x8D, 0x00, 0x18, 0x00, 0xDA, 0x24, 0x00, 0x18, 0x01, 0xCF, 0x02, 0x6B, 0x73, 0x00, 
38615
  0x18, 0x02, 0xDA, 0x20, 0x00, 0x18, 0x03, 0xDA, 0x86, 0xF7, 0x00, 0x18, 0x04, 0xDA, 0x83, 0xCE, 
38616
  0x00, 0x13, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x75, 0x03, 0x13, 0x06, 0xCF, 
38617
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x74, 0x06, 0x13, 0x07, 0xDA, 0x22, 0x19, 0x04, 0x00, 
38618
  0x00, 0x26, 0x06, 0x00, 0x00, 0x47, 0x05, 0x01, 0x06, 0x19, 0x06, 0x05, 0x00, 0x1D, 0x06, 0x0F, 
38619
  0x00, 0x38, 0x05, 0x01, 0x06, 0x19, 0x07, 0x05, 0x00, 0x2F, 0x04, 0x00, 0x00, 0x2A, 0x08, 0x00, 
38620
  0x00, 0x33, 0x05, 0x08, 0x00, 0x2F, 0x05, 0x00, 0x00, 0x2A, 0x09, 0x01, 0x00, 0x33, 0x08, 0x09, 
38621
  0x00, 0x1C, 0x08, 0x02, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x1A, 0x04, 0x00, 0x00, 0x39, 0x04, 0x04, 
38622
  0x07, 0x47, 0x06, 0x01, 0x06, 0x1A, 0xF2, 0xFF, 0xFF, 0x26, 0x06, 0x00, 0x00, 0x23, 0x05, 0x06, 
38623
  0x04, 0x1C, 0x05, 0x02, 0x00, 0x03, 0x02, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x85, 0xDC, 0x03, 
38624
  0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x1F, 0x00, 0x1F, 
38625
  0x00, 0x1F, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x31, 
38626
  0x00, 0x03, 0x00, 0x03, 0x01, 0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x08, 
38627
  0xCE, 0x80, 0xB9, 0x28, 0x67, 0x65, 0x74, 0x2D, 0x69, 0x6E, 0x20, 0x64, 0x73, 0x20, 0x6B, 0x73, 
38628
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x64, 0x66, 0x6C, 0x74, 0x29, 0x0A, 0x0A, 0x41, 0x63, 0x63, 
38629
  0x65, 0x73, 0x73, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x61, 
38630
  0x20, 0x6E, 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 
38631
  0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0x20, 0x4C, 0x6F, 0x6F, 0x6B, 0x73, 0x20, 0x69, 0x6E, 
38632
  0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 
38633
  0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x76, 0x69, 0x61, 0x0A, 0x61, 0x20, 0x73, 0x65, 0x71, 0x75, 
38634
  0x65, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x2E, 0x20, 0x49, 0x66, 
38635
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x6F, 
38636
  0x75, 0x6E, 0x64, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x64, 0x66, 0x6C, 0x74, 0x60, 0x20, 
38637
  0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x72, 0x65, 0x74, 
38638
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x60, 0x64, 0x66, 0x6C, 0x74, 0x60, 0x2E, 0xCF, 0x0B, 0x62, 0x75, 
38639
  0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
38640
  0xDA, 0x83, 0x40, 0x81, 0x5E, 0x01, 0xDA, 0x06, 0xDA, 0x83, 0xC4, 0xDA, 0x08, 0xCE, 0x81, 0x55, 
38641
  0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x20, 0x62, 0x75, 0x66, 
38642
  0x66, 0x65, 0x72, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x50, 0x75, 0x73, 0x68, 0x20, 
38643
  0x62, 0x6F, 0x74, 0x68, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6C, 0x20, 
38644
  0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 
38645
  0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 0x75, 
38646
  0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x78, 
38647
  0x20, 0x69, 0x6E, 0x20, 0x78, 0x73, 0x2C, 0x20, 0x70, 0x75, 0x73, 0x68, 0x20, 0x74, 0x68, 0x65, 
38648
  0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 
38649
  0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 
38650
  0x69, 0x73, 0x65, 0x20, 0x70, 0x75, 0x73, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x79, 0x74, 
38651
  0x65, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 
38652
  0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x75, 0x73, 0x2C, 0x20, 0x74, 
38653
  0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x62, 0x65, 0x68, 
38654
  0x61, 0x76, 0x65, 0x73, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x62, 0x6F, 0x74, 0x68, 0x20, 0x60, 
38655
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x73, 0x74, 0x72, 0x69, 
38656
  0x6E, 0x67, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 
38657
  0x70, 0x75, 0x73, 0x68, 0x2D, 0x62, 0x79, 0x74, 0x65, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
38658
  0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 
38659
  0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x74, 0x68, 
38660
  0x72, 0x6F, 0x77, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 
38661
  0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x66, 
38662
  0x6C, 0x6F, 0x77, 0x73, 0x2E, 0xCF, 0x0D, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x66, 0x6F, 
38663
  0x72, 0x6D, 0x61, 0x74, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x83, 0x40, 0x81, 0xF3, 
38664
  0x01, 0xDA, 0x06, 0xDA, 0x84, 0x5C, 0xDA, 0x08, 0xCE, 0x80, 0x81, 0x28, 0x62, 0x75, 0x66, 0x66, 
38665
  0x65, 0x72, 0x2F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
38666
  0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 
38667
  0x0A, 0x53, 0x6E, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x66, 
38668
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x69, 0x74, 0x79, 0x20, 0x66, 0x6F, 0x72, 
38669
  0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 
38670
  0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 
38671
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 
38672
  0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xCF, 0x0A, 0x61, 0x72, 
38673
  0x72, 0x61, 0x79, 0x2F, 0x70, 0x65, 0x65, 0x6B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
38674
  0x85, 0x6F, 0x80, 0xAD, 0x01, 0xDA, 0x06, 0xD8, 0x0A, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x70, 
38675
  0x65, 0x65, 0x6B, 0xDA, 0x08, 0xCE, 0x53, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x70, 0x65, 
38676
  0x65, 0x6B, 0x20, 0x61, 0x72, 0x72, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
38677
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 
38678
  0x74, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x20, 
38679
  0x44, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x79, 0x20, 
38680
  0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xCF, 0x0D, 0x6F, 0x73, 0x2F, 0x63, 
38681
  0x72, 0x79, 0x70, 0x74, 0x6F, 0x72, 0x61, 0x6E, 0x64, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
38682
  0xDA, 0x04, 0x85, 0xBD, 0x01, 0xDA, 0x06, 0xD8, 0x0D, 0x6F, 0x73, 0x2F, 0x63, 0x72, 0x79, 0x70, 
38683
  0x74, 0x6F, 0x72, 0x61, 0x6E, 0x64, 0xDA, 0x08, 0xCE, 0x80, 0x82, 0x28, 0x6F, 0x73, 0x2F, 0x63, 
38684
  0x72, 0x79, 0x70, 0x74, 0x6F, 0x72, 0x61, 0x6E, 0x64, 0x20, 0x6E, 0x20, 0x26, 0x6F, 0x70, 0x74, 
38685
  0x20, 0x62, 0x75, 0x66, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x70, 
38686
  0x70, 0x65, 0x6E, 0x64, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x6F, 
38687
  0x66, 0x20, 0x67, 0x6F, 0x6F, 0x64, 0x20, 0x71, 0x75, 0x61, 0x6C, 0x69, 0x74, 0x79, 0x20, 0x72, 
38688
  0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 
38689
  0x64, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4F, 0x53, 0x2E, 0x20, 0x52, 
38690
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 
38691
  0x66, 0x65, 0x72, 0x20, 0x6F, 0x72, 0x20, 0x60, 0x62, 0x75, 0x66, 0x60, 0x2E, 0xCF, 0x04, 0x62, 
38692
  0x78, 0x6F, 0x72, 0xD3, 0x02, 0xDA, 0x06, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x0F, 0x06, 0x00, 
38693
  0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x13, 0xCE, 0x04, 0x62, 0x78, 0x6F, 0x72, 0x3D, 0x01, 
38694
  0x00, 0x00, 0x24, 0x02, 0x01, 0x00, 0x1C, 0x02, 0x03, 0x00, 0x29, 0x03, 0x00, 0x00, 0x03, 0x03, 
38695
  0x00, 0x00, 0x24, 0x02, 0x01, 0x01, 0x1C, 0x02, 0x05, 0x00, 0x29, 0x03, 0x00, 0x00, 0x3B, 0x04, 
38696
  0x00, 0x00, 0x10, 0x03, 0x03, 0x04, 0x03, 0x03, 0x00, 0x00, 0x3B, 0x03, 0x00, 0x00, 0x29, 0x05, 
38697
  0x01, 0x00, 0x38, 0x04, 0x00, 0x05, 0x10, 0x03, 0x03, 0x04, 0x05, 0x05, 0x05, 0x01, 0x23, 0x02, 
38698
  0x05, 0x01, 0x1C, 0x02, 0xFC, 0xFF, 0x03, 0x03, 0x00, 0x00, 0xDA, 0x08, 0xCE, 0x59, 0x28, 0x62, 
38699
  0x78, 0x6F, 0x72, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 
38700
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x69, 0x74, 0x2D, 0x77, 0x69, 0x73, 0x65, 0x20, 
38701
  0x78, 0x6F, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
38702
  0x73, 0x20, 0x69, 0x6E, 0x20, 0x78, 0x73, 0x2E, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x69, 0x6E, 
38703
  0x20, 0x78, 0x73, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x69, 
38704
  0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2E, 0xCF, 0x07, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 
38705
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8B, 0xA2, 0x01, 0xDA, 0x06, 0xD7, 0x00, 
38706
  0xCD, 0x00, 0xDD, 0x00, 0x00, 0x05, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x06, 0x00, 
38707
  0x03, 0xCE, 0x07, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0xDA, 0x18, 0xDA, 0x85, 0x15, 0xD7, 
38708
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0D, 0x03, 0x03, 0x03, 0x0B, 0x3A, 0x00, 0x0A, 0xCE, 0x09, 
38709
  0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x2D, 0x31, 0xDA, 0x18, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 
38710
  0x00, 0x00, 0x0D, 0x01, 0x01, 0x01, 0x0D, 0x4C, 0x00, 0x01, 0x0E, 0xCE, 0x0B, 0x6D, 0x6F, 0x64, 
38711
  0x75, 0x6C, 0x65, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0xDA, 0x18, 0xD1, 0x11, 0xD2, 0x03, 0x00, 0xD7, 
38712
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x01, 0x05, 0x00, 0x02, 0xCE, 0x09, 
38713
  0x69, 0x73, 0x2D, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0xDA, 0x18, 0xD3, 0x00, 0x00, 0x05, 0x00, 
38714
  0xDA, 0x80, 0xF9, 0x00, 0x05, 0x01, 0xCF, 0x09, 0x69, 0x73, 0x2D, 0x63, 0x61, 0x63, 0x68, 0x65, 
38715
  0x64, 0x2A, 0x03, 0x00, 0x00, 0x38, 0x02, 0x03, 0x00, 0x1C, 0x02, 0x02, 0x00, 0x03, 0x00, 0x00, 
38716
  0x00, 0x04, 0x00, 0x00, 0x00, 0x8A, 0xC5, 0x38, 0x00, 0x38, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 
38717
  0xD0, 0x07, 0x70, 0x72, 0x65, 0x6C, 0x6F, 0x61, 0x64, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
38718
  0x04, 0x01, 0x01, 0x01, 0x02, 0x07, 0x00, 0x02, 0xCE, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 
38719
  0x6E, 0x6F, 0x74, 0x2D, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0xDA, 0x18, 0xCE, 0x01, 
38720
  0x2E, 0xDA, 0x86, 0xDA, 0x00, 0x07, 0x00, 0xDA, 0x1E, 0x00, 0x07, 0x01, 0xCF, 0x12, 0x63, 0x68, 
38721
  0x65, 0x63, 0x6B, 0x2D, 0x6E, 0x6F, 0x74, 0x2D, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 
38722
  0x2A, 0x02, 0x00, 0x00, 0x30, 0x02, 0x00, 0x00, 0x2A, 0x03, 0x01, 0x00, 0x33, 0x02, 0x03, 0x00, 
38723
  0x1C, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x8A, 0x94, 0x27, 0x00, 
38724
  0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0xD2, 0x03, 0x00, 0xCE, 0x12, 
38725
  0x3A, 0x63, 0x75, 0x72, 0x3A, 0x2F, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0x2E, 0x6A, 0x69, 0x6D, 0x61, 
38726
  0x67, 0x65, 0xD0, 0x05, 0x69, 0x6D, 0x61, 0x67, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
38727
  0x04, 0x01, 0x01, 0x01, 0x02, 0x07, 0x00, 0x02, 0xCE, 0x0E, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 
38728
  0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0xDA, 0x18, 0xDA, 0x87, 0x28, 0xDA, 0x86, 0xDA, 
38729
  0x00, 0x07, 0x00, 0xDA, 0x1E, 0x00, 0x07, 0x01, 0xCF, 0x0E, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 
38730
  0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2A, 0x02, 0x00, 0x00, 0x30, 0x02, 0x00, 0x00, 
38731
  0x2A, 0x03, 0x01, 0x00, 0x33, 0x02, 0x03, 0x00, 0x1C, 0x02, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 
38732
  0x04, 0x00, 0x00, 0x00, 0x8A, 0x93, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1B, 0x00, 
38733
  0x1B, 0x00, 0x1B, 0xD2, 0x03, 0x00, 0xCE, 0x11, 0x3A, 0x63, 0x75, 0x72, 0x3A, 0x2F, 0x3A, 0x61, 
38734
  0x6C, 0x6C, 0x3A, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0xDA, 0x80, 0xEF, 0xDA, 0x87, 0x2D, 0xD2, 
38735
  0x03, 0x00, 0xCE, 0x16, 0x3A, 0x63, 0x75, 0x72, 0x3A, 0x2F, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0x2F, 
38736
  0x69, 0x6E, 0x69, 0x74, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0xDA, 0x80, 0xEF, 0xDA, 0x87, 0x2D, 
38737
  0xD2, 0x03, 0x00, 0xCE, 0x13, 0x3A, 0x63, 0x75, 0x72, 0x3A, 0x2F, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 
38738
  0x3A, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x3A, 0xD0, 0x06, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 
38739
  0xDA, 0x87, 0x2D, 0xD2, 0x03, 0x00, 0xCE, 0x12, 0x3A, 0x73, 0x79, 0x73, 0x3A, 0x2F, 0x3A, 0x61, 
38740
  0x6C, 0x6C, 0x3A, 0x2E, 0x6A, 0x69, 0x6D, 0x61, 0x67, 0x65, 0xDA, 0x87, 0x2C, 0xD7, 0x00, 0xCD, 
38741
  0x00, 0xDC, 0x00, 0x00, 0x08, 0x01, 0x01, 0x01, 0x04, 0x19, 0x00, 0x04, 0xCE, 0x0C, 0x63, 0x68, 
38742
  0x65, 0x63, 0x6B, 0x2D, 0x69, 0x73, 0x2D, 0x64, 0x65, 0x70, 0xDA, 0x18, 0xDA, 0x84, 0x37, 0xDA, 
38743
  0x86, 0xDA, 0xCE, 0x01, 0x40, 0xDA, 0x87, 0x28, 0x00, 0x19, 0x00, 0xDA, 0x1E, 0x00, 0x19, 0x01, 
38744
  0xCF, 0x0C, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x69, 0x73, 0x2D, 0x64, 0x65, 0x70, 0x04, 0x16, 
38745
  0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x51, 0x0C, 0x15, 0x05, 0xCF, 0x07, 0x5F, 
38746
  0x30, 0x30, 0x30, 0x30, 0x34, 0x50, 0x2A, 0x02, 0x00, 0x00, 0x30, 0x02, 0x00, 0x00, 0x2A, 0x03, 
38747
  0x01, 0x00, 0x33, 0x02, 0x03, 0x00, 0x19, 0x03, 0x02, 0x00, 0x1C, 0x03, 0x03, 0x00, 0x19, 0x02, 
38748
  0x03, 0x00, 0x1A, 0x0F, 0x00, 0x00, 0x2A, 0x04, 0x02, 0x00, 0x30, 0x04, 0x00, 0x00, 0x2A, 0x05, 
38749
  0x01, 0x00, 0x33, 0x04, 0x05, 0x00, 0x19, 0x05, 0x04, 0x00, 0x1C, 0x05, 0x03, 0x00, 0x19, 0x04, 
38750
  0x05, 0x00, 0x1A, 0x06, 0x00, 0x00, 0x2A, 0x06, 0x03, 0x00, 0x30, 0x06, 0x00, 0x00, 0x2A, 0x07, 
38751
  0x01, 0x00, 0x33, 0x06, 0x07, 0x00, 0x19, 0x04, 0x06, 0x00, 0x19, 0x02, 0x04, 0x00, 0x1C, 0x02, 
38752
  0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x8A, 0x95, 0x25, 0x00, 0x25, 0x00, 
38753
  0x25, 0x00, 0x25, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x40, 0x00, 0x40, 0x00, 
38754
  0x40, 0x00, 0x40, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x5B, 0x00, 0x5B, 0x00, 
38755
  0x5B, 0x00, 0x5B, 0x00, 0x21, 0x00, 0x21, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0xD2, 0x03, 0x00, 
38756
  0xCE, 0x11, 0x3A, 0x73, 0x79, 0x73, 0x3A, 0x2F, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0x2E, 0x6A, 0x61, 
38757
  0x6E, 0x65, 0x74, 0xDA, 0x80, 0xEF, 0xDA, 0x87, 0x39, 0xD2, 0x03, 0x00, 0xCE, 0x16, 0x3A, 0x73, 
38758
  0x79, 0x73, 0x3A, 0x2F, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0x2F, 0x69, 0x6E, 0x69, 0x74, 0x2E, 0x6A, 
38759
  0x61, 0x6E, 0x65, 0x74, 0xDA, 0x80, 0xEF, 0xDA, 0x87, 0x39, 0xD2, 0x03, 0x00, 0xCE, 0x13, 0x3A, 
38760
  0x73, 0x79, 0x73, 0x3A, 0x2F, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0x3A, 0x6E, 0x61, 0x74, 0x69, 0x76, 
38761
  0x65, 0x3A, 0xDA, 0x87, 0x36, 0xDA, 0x87, 0x39, 0xD2, 0x03, 0x00, 0xCE, 0x0D, 0x2E, 0x3A, 0x61, 
38762
  0x6C, 0x6C, 0x3A, 0x2E, 0x6A, 0x69, 0x6D, 0x61, 0x67, 0x65, 0xDA, 0x87, 0x2C, 0xD7, 0x00, 0xCD, 
38763
  0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x02, 0x07, 0x00, 0x02, 0xCE, 0x16, 0x63, 0x68, 
38764
  0x65, 0x63, 0x6B, 0x2D, 0x70, 0x72, 0x6F, 0x6A, 0x65, 0x63, 0x74, 0x2D, 0x72, 0x65, 0x6C, 0x61, 
38765
  0x74, 0x69, 0x76, 0x65, 0xDA, 0x18, 0xDA, 0x84, 0x37, 0xDA, 0x86, 0xDA, 0x00, 0x07, 0x00, 0xDA, 
38766
  0x1E, 0x00, 0x07, 0x01, 0xCF, 0x16, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x70, 0x72, 0x6F, 0x6A, 
38767
  0x65, 0x63, 0x74, 0x2D, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2A, 0x02, 0x00, 0x00, 
38768
  0x30, 0x02, 0x00, 0x00, 0x2A, 0x03, 0x01, 0x00, 0x33, 0x02, 0x03, 0x00, 0x1C, 0x02, 0x02, 0x00, 
38769
  0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x8A, 0x96, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 
38770
  0x27, 0x00, 0x23, 0x00, 0x23, 0x00, 0x23, 0xD2, 0x03, 0x00, 0xCE, 0x0C, 0x2E, 0x3A, 0x61, 0x6C, 
38771
  0x6C, 0x3A, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0xDA, 0x80, 0xEF, 0xDA, 0x87, 0x47, 0xD2, 0x03, 
38772
  0x00, 0xCE, 0x11, 0x2E, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0x2F, 0x69, 0x6E, 0x69, 0x74, 0x2E, 0x6A, 
38773
  0x61, 0x6E, 0x65, 0x74, 0xDA, 0x80, 0xEF, 0xDA, 0x87, 0x47, 0xD2, 0x03, 0x00, 0xCE, 0x0E, 0x2E, 
38774
  0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0x3A, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x3A, 0xDA, 0x87, 0x36, 
38775
  0xDA, 0x87, 0x47, 0xD2, 0x03, 0x00, 0xCE, 0x0D, 0x3A, 0x40, 0x61, 0x6C, 0x6C, 0x3A, 0x2E, 0x6A, 
38776
  0x69, 0x6D, 0x61, 0x67, 0x65, 0xDA, 0x87, 0x2C, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 
38777
  0x01, 0x01, 0x01, 0x02, 0x07, 0x00, 0x02, 0xCE, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x64, 
38778
  0x79, 0x6E, 0x2D, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0xDA, 0x18, 0xDA, 0x87, 0x3B, 
38779
  0xDA, 0x86, 0xDA, 0x00, 0x07, 0x00, 0xDA, 0x1E, 0x00, 0x07, 0x01, 0xCF, 0x12, 0x63, 0x68, 0x65, 
38780
  0x63, 0x6B, 0x2D, 0x64, 0x79, 0x6E, 0x2D, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2A, 
38781
  0x02, 0x00, 0x00, 0x30, 0x02, 0x00, 0x00, 0x2A, 0x03, 0x01, 0x00, 0x33, 0x02, 0x03, 0x00, 0x1C, 
38782
  0x02, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x8A, 0x92, 0x23, 0x00, 0x23, 
38783
  0x00, 0x23, 0x00, 0x23, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0xD2, 0x03, 0x00, 0xCE, 0x0C, 0x3A, 
38784
  0x40, 0x61, 0x6C, 0x6C, 0x3A, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0xDA, 0x80, 0xEF, 0xDA, 0x87, 
38785
  0x52, 0xD2, 0x03, 0x00, 0xCE, 0x11, 0x3A, 0x40, 0x61, 0x6C, 0x6C, 0x3A, 0x2F, 0x69, 0x6E, 0x69, 
38786
  0x74, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0xDA, 0x80, 0xEF, 0xDA, 0x87, 0x52, 0xD2, 0x03, 0x00, 
38787
  0xCE, 0x0E, 0x3A, 0x40, 0x61, 0x6C, 0x6C, 0x3A, 0x3A, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x3A, 
38788
  0xDA, 0x87, 0x36, 0xDA, 0x87, 0x52, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x02, 0x02, 
38789
  0x02, 0x04, 0x10, 0x00, 0x04, 0xCE, 0x0A, 0x6D, 0x6F, 0x64, 0x2D, 0x66, 0x69, 0x6C, 0x74, 0x65, 
38790
  0x72, 0xDA, 0x18, 0xDA, 0x2C, 0xD0, 0x03, 0x6E, 0x69, 0x6C, 0xDA, 0x2D, 0xD8, 0x12, 0x73, 0x74, 
38791
  0x72, 0x69, 0x6E, 0x67, 0x2F, 0x68, 0x61, 0x73, 0x2D, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x3F, 
38792
  0x00, 0x10, 0x00, 0xDA, 0x1E, 0x00, 0x10, 0x01, 0xDA, 0x80, 0xF9, 0x00, 0x10, 0x02, 0xCF, 0x0A, 
38793
  0x6D, 0x6F, 0x64, 0x2D, 0x66, 0x69, 0x6C, 0x74, 0x65, 0x72, 0x03, 0x10, 0x04, 0xCF, 0x07, 0x5F, 
38794
  0x30, 0x30, 0x30, 0x30, 0x34, 0x55, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 
38795
  0x04, 0x00, 0x19, 0x04, 0x03, 0x00, 0x2A, 0x05, 0x01, 0x00, 0x23, 0x03, 0x04, 0x05, 0x1C, 0x03, 
38796
  0x02, 0x00, 0x03, 0x01, 0x00, 0x00, 0x2A, 0x06, 0x02, 0x00, 0x23, 0x05, 0x04, 0x06, 0x1C, 0x05, 
38797
  0x04, 0x00, 0x30, 0x00, 0x01, 0x00, 0x2A, 0x06, 0x03, 0x00, 0x34, 0x06, 0x00, 0x00, 0x2F, 0x01, 
38798
  0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x8A, 0xD5, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x03, 0x00, 
38799
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x0D, 0x00, 
38800
  0x0D, 0x00, 0x0D, 0x01, 0x05, 0x00, 0x05, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 
38801
  0x01, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x09, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
38802
  0x3F, 0xDA, 0x18, 0xDA, 0x2C, 0xDA, 0x80, 0xE5, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 
38803
  0xCF, 0x09, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3F, 0x2F, 0x00, 0x00, 0x00, 0x2A, 
38804
  0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x23, 0x03, 0x02, 0x04, 0x03, 
38805
  0x03, 0x00, 0x00, 0x6B, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xD8, 
38806
  0x12, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x2D, 0x70, 
38807
  0x61, 0x74, 0x68, 0xDA, 0x80, 0xF5, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 
38808
  0x01, 0x03, 0x07, 0x00, 0x02, 0xCE, 0x07, 0x66, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0xDA, 0x18, 
38809
  0xD0, 0x04, 0x6D, 0x6F, 0x64, 0x65, 0xD8, 0x07, 0x6F, 0x73, 0x2F, 0x73, 0x74, 0x61, 0x74, 0xD0, 
38810
  0x04, 0x66, 0x69, 0x6C, 0x65, 0x00, 0x07, 0x00, 0xDA, 0x80, 0xF9, 0x00, 0x07, 0x01, 0xCF, 0x07, 
38811
  0x66, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x2A, 0x02, 0x00, 0x00, 0x30, 0x00, 0x02, 0x00, 0x2A, 
38812
  0x03, 0x01, 0x00, 0x33, 0x02, 0x03, 0x00, 0x2A, 0x04, 0x02, 0x00, 0x23, 0x03, 0x04, 0x02, 0x03, 
38813
  0x03, 0x00, 0x00, 0x8A, 0xCB, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x00, 0x05, 
38814
  0x00, 0x05, 0xDA, 0x81, 0x8A, 0xDA, 0x84, 0xF3, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 
38815
  0x02, 0x02, 0x02, 0x01, 0x12, 0x00, 0x07, 0xCE, 0x06, 0x66, 0x69, 0x6C, 0x74, 0x65, 0x72, 0xDA, 
38816
  0x18, 0xDA, 0x81, 0x8C, 0x00, 0x12, 0x00, 0xDA, 0x83, 0x2E, 0x00, 0x12, 0x01, 0xDA, 0x1F, 0x00, 
38817
  0x12, 0x02, 0xCF, 0x06, 0x66, 0x69, 0x6C, 0x74, 0x65, 0x72, 0x01, 0x12, 0x04, 0xDA, 0x81, 0x08, 
38818
  0x01, 0x11, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x37, 0x04, 0x11, 0x06, 0xCF, 
38819
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x36, 0x07, 0x11, 0x07, 0xDA, 0x84, 0xD0, 0x3E, 0x03, 
38820
  0x00, 0x00, 0x19, 0x04, 0x03, 0x00, 0x26, 0x06, 0x00, 0x00, 0x47, 0x05, 0x01, 0x06, 0x19, 0x06, 
38821
  0x05, 0x00, 0x1D, 0x06, 0x0C, 0x00, 0x38, 0x05, 0x01, 0x06, 0x19, 0x07, 0x05, 0x00, 0x2F, 0x07, 
38822
  0x00, 0x00, 0x33, 0x05, 0x00, 0x00, 0x1C, 0x05, 0x05, 0x00, 0x30, 0x04, 0x07, 0x00, 0x2A, 0x09, 
38823
  0x00, 0x00, 0x33, 0x08, 0x09, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x06, 0x01, 0x06, 0x1A, 0xF5, 
38824
  0xFF, 0xFF, 0x03, 0x04, 0x00, 0x00, 0x83, 0xE2, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 
38825
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x07, 0x00, 
38826
  0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0xBF, 0xFB, 0x01, 0xCE, 0x05, 
38827
  0x0A, 0x20, 0x20, 0x20, 0x20, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 0x02, 0x02, 0x02, 
38828
  0x02, 0x1A, 0x00, 0x06, 0xCE, 0x09, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x70, 0x6F, 0x73, 0x65, 0xDA, 
38829
  0x18, 0xDA, 0x86, 0x4F, 0xDA, 0x81, 0x8C, 0x00, 0x1A, 0x00, 0xCF, 0x03, 0x73, 0x65, 0x70, 0x00, 
38830
  0x1A, 0x01, 0xDA, 0x1F, 0x00, 0x1A, 0x02, 0xCF, 0x09, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x70, 0x6F, 
38831
  0x73, 0x65, 0x01, 0x1A, 0x04, 0xDA, 0x80, 0x84, 0x08, 0x1A, 0x06, 0xDA, 0x23, 0x10, 0x1A, 0x07, 
38832
  0xDA, 0x80, 0x90, 0x3D, 0x03, 0x01, 0x00, 0x19, 0x04, 0x03, 0x00, 0x29, 0x06, 0x02, 0x00, 0x09, 
38833
  0x05, 0x06, 0x04, 0x05, 0x06, 0x05, 0xFF, 0x2F, 0x06, 0x00, 0x00, 0x2A, 0x07, 0x00, 0x00, 0x33, 
38834
  0x05, 0x07, 0x00, 0x19, 0x06, 0x05, 0x00, 0x20, 0x07, 0x04, 0x00, 0x1C, 0x07, 0x06, 0x00, 0x29, 
38835
  0x09, 0x00, 0x00, 0x38, 0x08, 0x01, 0x09, 0x29, 0x09, 0x00, 0x00, 0x3A, 0x06, 0x09, 0x08, 0x1A, 
38836
  0x01, 0x00, 0x00, 0x29, 0x07, 0x01, 0x00, 0x21, 0x08, 0x07, 0x04, 0x1C, 0x08, 0x07, 0x00, 0x38, 
38837
  0x09, 0x01, 0x07, 0x31, 0x06, 0x00, 0x09, 0x2A, 0x0B, 0x01, 0x00, 0x33, 0x0A, 0x0B, 0x00, 0x05, 
38838
  0x07, 0x07, 0x01, 0x1A, 0xF9, 0xFF, 0xFF, 0x03, 0x06, 0x00, 0x00, 0x86, 0xA6, 0x0C, 0x00, 0x03, 
38839
  0x01, 0x1A, 0x00, 0x1A, 0x00, 0x17, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x01, 0x07, 
38840
  0x00, 0x03, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x11, 0x00, 0x11, 0x00, 0x03, 0x01, 0x03, 0x01, 0x0A, 
38841
  0x00, 0x03, 0x01, 0x19, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0xBF, 0xFE, 0x03, 0xBF, 
38842
  0xF8, 0x01, 0xCE, 0x16, 0x63, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x69, 
38843
  0x6E, 0x64, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0xCE, 0x06, 0x3A, 0x0A, 0x20, 0x20, 
38844
  0x20, 0x20, 0x00, 0x4C, 0x00, 0xDA, 0x80, 0xF9, 0x00, 0x4C, 0x01, 0xCF, 0x0B, 0x6D, 0x6F, 0x64, 
38845
  0x75, 0x6C, 0x65, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x00, 0x4C, 0x02, 0xDA, 0x23, 0x01, 0x30, 0x03, 
38846
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x57, 0x04, 0x30, 0x05, 0xCF, 0x07, 0x5F, 0x30, 
38847
  0x30, 0x30, 0x30, 0x34, 0x56, 0x08, 0x30, 0x07, 0xDA, 0x64, 0x0A, 0x30, 0x08, 0xCF, 0x08, 0x6D, 
38848
  0x6F, 0x64, 0x2D, 0x6B, 0x69, 0x6E, 0x64, 0x0C, 0x30, 0x09, 0xCF, 0x07, 0x63, 0x68, 0x65, 0x63, 
38849
  0x6B, 0x65, 0x72, 0x17, 0x1D, 0x0B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x58, 0x18, 
38850
  0x1C, 0x0B, 0xDA, 0x81, 0x08, 0x24, 0x2D, 0x0A, 0xCF, 0x08, 0x66, 0x75, 0x6C, 0x6C, 0x70, 0x61, 
38851
  0x74, 0x68, 0x33, 0x4C, 0x04, 0xCF, 0x08, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x65, 0x72, 0x3C, 
38852
  0x4C, 0x03, 0xCF, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x41, 0x4C, 0x06, 0xCF, 0x09, 0x73, 0x74, 
38853
  0x72, 0x2D, 0x70, 0x61, 0x72, 0x74, 0x73, 0x26, 0x02, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x26, 
38854
  0x05, 0x00, 0x00, 0x47, 0x04, 0x03, 0x05, 0x19, 0x05, 0x04, 0x00, 0x1D, 0x05, 0x2B, 0x00, 0x38, 
38855
  0x04, 0x03, 0x05, 0x3B, 0x06, 0x04, 0x00, 0x19, 0x07, 0x06, 0x00, 0x3B, 0x06, 0x04, 0x01, 0x19, 
38856
  0x08, 0x06, 0x00, 0x3B, 0x06, 0x04, 0x02, 0x19, 0x09, 0x06, 0x00, 0x30, 0x09, 0x00, 0x00, 0x2A, 
38857
  0x06, 0x01, 0x00, 0x33, 0x04, 0x06, 0x00, 0x1C, 0x04, 0x1E, 0x00, 0x2F, 0x07, 0x00, 0x00, 0x2A, 
38858
  0x0A, 0x02, 0x00, 0x33, 0x06, 0x0A, 0x00, 0x1C, 0x06, 0x0A, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x33, 
38859
  0x0A, 0x07, 0x00, 0x19, 0x0B, 0x0A, 0x00, 0x1C, 0x0B, 0x05, 0x00, 0x30, 0x0B, 0x08, 0x00, 0x43, 
38860
  0x02, 0x00, 0x00, 0x1A, 0x15, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x1A, 0x10, 0x00, 0x00, 0x30, 
38861
  0x00, 0x07, 0x00, 0x2A, 0x0B, 0x03, 0x00, 0x33, 0x0A, 0x0B, 0x00, 0x2F, 0x0A, 0x00, 0x00, 0x2A, 
38862
  0x0C, 0x04, 0x00, 0x33, 0x0B, 0x0C, 0x00, 0x19, 0x0A, 0x0B, 0x00, 0x2F, 0x0A, 0x00, 0x00, 0x2A, 
38863
  0x0C, 0x05, 0x00, 0x33, 0x0B, 0x0C, 0x00, 0x1C, 0x0B, 0x05, 0x00, 0x30, 0x0A, 0x08, 0x00, 0x43, 
38864
  0x02, 0x00, 0x00, 0x1A, 0x05, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 
38865
  0x05, 0x03, 0x05, 0x1A, 0xD6, 0xFF, 0xFF, 0x1C, 0x02, 0x02, 0x00, 0x03, 0x02, 0x00, 0x00, 0x2E, 
38866
  0x03, 0x00, 0x00, 0x19, 0x04, 0x03, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x30, 0x04, 0x03, 0x00, 0x2A, 
38867
  0x05, 0x06, 0x00, 0x33, 0x03, 0x05, 0x00, 0x2A, 0x05, 0x07, 0x00, 0x30, 0x05, 0x03, 0x00, 0x2A, 
38868
  0x06, 0x08, 0x00, 0x33, 0x05, 0x06, 0x00, 0x19, 0x03, 0x05, 0x00, 0x2A, 0x05, 0x09, 0x00, 0x30, 
38869
  0x05, 0x03, 0x00, 0x2A, 0x06, 0x0A, 0x00, 0x33, 0x05, 0x06, 0x00, 0x19, 0x06, 0x05, 0x00, 0x2A, 
38870
  0x05, 0x0B, 0x00, 0x2A, 0x07, 0x0C, 0x00, 0x31, 0x05, 0x00, 0x07, 0x32, 0x06, 0x00, 0x00, 0x2A, 
38871
  0x07, 0x04, 0x00, 0x33, 0x05, 0x07, 0x00, 0x26, 0x07, 0x00, 0x00, 0x30, 0x07, 0x05, 0x00, 0x43, 
38872
  0x05, 0x00, 0x00, 0x03, 0x05, 0x00, 0x00, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x06, 0x01, 0x01, 0x01, 
38873
  0x03, 0x14, 0x01, 0x0E, 0xDA, 0x18, 0xDA, 0x81, 0xEB, 0xDA, 0x87, 0x5C, 0xDA, 0x87, 0x65, 0xBF, 
38874
  0xFF, 0x00, 0x00, 0xDA, 0x80, 0xF9, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x78, 0xBF, 0xFF, 0x00, 
38875
  0x02, 0xDA, 0x23, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x79, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x87, 
38876
  0x7A, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x64, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x87, 0x7B, 0xBF, 0xFF, 
38877
  0x00, 0x09, 0xDA, 0x87, 0x7C, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x87, 0x7D, 0xBF, 0xFF, 0x00, 0x0B, 
38878
  0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x7E, 0x01, 0x14, 0x02, 0xDA, 0x31, 0x03, 
38879
  0x14, 0x03, 0xDA, 0x80, 0xC0, 0x04, 0x14, 0x04, 0xCF, 0x03, 0x63, 0x68, 0x6B, 0x3B, 0x01, 0x00, 
38880
  0x00, 0x19, 0x02, 0x01, 0x00, 0x3B, 0x01, 0x00, 0x01, 0x3B, 0x01, 0x00, 0x02, 0x19, 0x04, 0x01, 
38881
  0x00, 0x2F, 0x02, 0x00, 0x00, 0x2A, 0x01, 0x00, 0x00, 0x33, 0x00, 0x01, 0x00, 0x1C, 0x00, 0x0B, 
38882
  0x00, 0x2B, 0x01, 0x00, 0x00, 0x30, 0x04, 0x01, 0x00, 0x2A, 0x05, 0x01, 0x00, 0x33, 0x01, 0x05, 
38883
  0x00, 0x1C, 0x01, 0x05, 0x00, 0x2B, 0x05, 0x00, 0x00, 0x30, 0x05, 0x02, 0x00, 0x2A, 0x05, 0x02, 
38884
  0x00, 0x34, 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8A, 
38885
  0xEF, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x01, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 
38886
  0x00, 0x16, 0x01, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x18, 0x01, 0x1A, 0x00, 0x1A, 
38887
  0x00, 0x1A, 0x00, 0x1A, 0xBF, 0xFF, 0x18, 0xBF, 0xFF, 0x16, 0x8A, 0xE2, 0x03, 0x01, 0x03, 0x00, 
38888
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
38889
  0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x01, 0x0B, 0x00, 
38890
  0x0B, 0x00, 0x0B, 0x00, 0x07, 0x01, 0x18, 0x00, 0x18, 0x00, 0x09, 0x00, 0x09, 0x01, 0x14, 0x00, 
38891
  0x14, 0x01, 0x0B, 0xBF, 0xFE, 0x09, 0xBF, 0xFF, 0x07, 0x05, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 
38892
  0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x0B, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0B, 0x01, 
38893
  0x16, 0x00, 0x16, 0x01, 0x0D, 0xBF, 0xFE, 0x0B, 0xBF, 0xF9, 0x05, 0xBF, 0xFF, 0x03, 0x00, 0x03, 
38894
  0x0B, 0x03, 0x00, 0x03, 0x01, 0x14, 0x00, 0x05, 0x04, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 
38895
  0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0xBF, 0xFC, 0x05, 0x05, 0x15, 0x00, 0x15, 0x00, 
38896
  0x15, 0x00, 0x15, 0xBF, 0xFB, 0x05, 0x06, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 
38897
  0x00, 0x0C, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0xD0, 0x05, 
38898
  0x66, 0x72, 0x65, 0x73, 0x68, 0xDA, 0x87, 0x23, 0xD3, 0x00, 0xCE, 0x14, 0x63, 0x69, 0x72, 0x63, 
38899
  0x75, 0x6C, 0x61, 0x72, 0x20, 0x64, 0x65, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x6E, 0x63, 0x79, 0x20, 
38900
  0xCE, 0x09, 0x20, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0xDA, 0x80, 0xF5, 0xD7, 0x00, 
38901
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x08, 0x6B, 
38902
  0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x3F, 0xDA, 0x18, 0xDA, 0x2C, 0xDA, 0x2F, 0x00, 0x06, 0x00, 
38903
  0xDA, 0x1E, 0x00, 0x06, 0x01, 0xCF, 0x08, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x3F, 0x2F, 
38904
  0x00, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x23, 
38905
  0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x68, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x2F, 0x00, 
38906
  0x2F, 0x00, 0x2F, 0xD3, 0x04, 0xDA, 0x87, 0x2C, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 
38907
  0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x0C, 0x69, 0x6D, 0x61, 
38908
  0x67, 0x65, 0x2D, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0xDA, 0x18, 0xDA, 0x80, 0xF0, 0xD7, 0x00, 
38909
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x02, 0x04, 0x00, 0x02, 0xCE, 0x0A, 0x6C, 
38910
  0x6F, 0x61, 0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0xDA, 0x18, 0xD3, 0x82, 0x71, 0xDA, 0x01, 
38911
  0xDA, 0x07, 0xDA, 0x0A, 0xDA, 0x0E, 0xDA, 0x10, 0xDA, 0x14, 0xDA, 0x16, 0xDA, 0x1A, 0xDA, 0x27, 
38912
  0xDA, 0x2A, 0xDA, 0x33, 0xDA, 0x36, 0xDA, 0x3E, 0xDA, 0x42, 0xDA, 0x83, 0x17, 0xDA, 0x83, 0x1A, 
38913
  0xDA, 0x44, 0xDA, 0x47, 0xDA, 0x54, 0xDA, 0x57, 0xDA, 0x67, 0xDA, 0x6A, 0xDA, 0x6C, 0xDA, 0x6F, 
38914
  0xDA, 0x71, 0xDA, 0x74, 0xDA, 0x77, 0xDA, 0x7A, 0xDA, 0x80, 0x95, 0xDA, 0x80, 0x97, 0xDA, 0x80, 
38915
  0x9A, 0xDA, 0x80, 0x9E, 0xDA, 0x80, 0xA0, 0xDA, 0x80, 0xA3, 0xDA, 0x80, 0xA5, 0xDA, 0x80, 0xA8, 
38916
  0xDA, 0x82, 0x88, 0xDA, 0x81, 0x79, 0xDA, 0x82, 0x8B, 0xDA, 0x82, 0x8E, 0xDA, 0x82, 0x90, 0xDA, 
38917
  0x82, 0x93, 0xDA, 0x82, 0x98, 0xDA, 0x82, 0x9C, 0xDA, 0x82, 0x9E, 0xDA, 0x81, 0x84, 0xDA, 0x82, 
38918
  0xA3, 0xDA, 0x82, 0xA7, 0xDA, 0x82, 0xA9, 0xDA, 0x82, 0xAC, 0xDA, 0x82, 0xC0, 0xDA, 0x82, 0xC3, 
38919
  0xDA, 0x82, 0xC5, 0xDA, 0x82, 0xC8, 0xDA, 0x82, 0xCB, 0xDA, 0x82, 0xCE, 0xDA, 0x82, 0xD5, 0xDA, 
38920
  0x82, 0xD8, 0xDA, 0x82, 0xF8, 0xDA, 0x82, 0xFC, 0xDA, 0x82, 0xFE, 0xDA, 0x83, 0x01, 0xDA, 0x83, 
38921
  0x05, 0xDA, 0x83, 0x08, 0xDA, 0x83, 0x0A, 0xDA, 0x83, 0x0D, 0xDA, 0x83, 0x12, 0xDA, 0x81, 0x87, 
38922
  0xDA, 0x84, 0x6B, 0xDA, 0x84, 0x6E, 0xDA, 0x83, 0x29, 0xDA, 0x83, 0x2C, 0xDA, 0x83, 0x3E, 0xDA, 
38923
  0x83, 0x42, 0xDA, 0x83, 0x44, 0xDA, 0x83, 0x47, 0xDA, 0x84, 0x02, 0xDA, 0x84, 0x05, 0xDA, 0x84, 
38924
  0x07, 0xDA, 0x84, 0x0A, 0xDA, 0x84, 0x0E, 0xDA, 0x84, 0x11, 0xDA, 0x84, 0x23, 0xDA, 0x84, 0x27, 
38925
  0xDA, 0x84, 0x29, 0xDA, 0x84, 0x2C, 0xDA, 0x83, 0xAD, 0xDA, 0x83, 0xA3, 0xDA, 0x84, 0x31, 0xDA, 
38926
  0x84, 0x34, 0xDA, 0x84, 0x39, 0xDA, 0x82, 0xB2, 0xDA, 0x84, 0x3C, 0xDA, 0x84, 0x3F, 0xDA, 0x84, 
38927
  0x41, 0xDA, 0x84, 0x44, 0xDA, 0x84, 0x46, 0xDA, 0x84, 0x49, 0xDA, 0x84, 0x53, 0xDA, 0x84, 0x56, 
38928
  0xDA, 0x84, 0x66, 0xDA, 0x84, 0x69, 0xDA, 0x84, 0x70, 0xDA, 0x84, 0x73, 0xDA, 0x84, 0x75, 0xDA, 
38929
  0x84, 0x78, 0xDA, 0x84, 0x7B, 0xDA, 0x84, 0x7E, 0xDA, 0x84, 0x80, 0xDA, 0x84, 0x83, 0xDA, 0x84, 
38930
  0x85, 0xDA, 0x84, 0x1A, 0xDA, 0x84, 0x89, 0xDA, 0x84, 0x8C, 0xDA, 0x84, 0x8E, 0xDA, 0x84, 0x91, 
38931
  0xDA, 0x84, 0x93, 0xDA, 0x82, 0x17, 0xDA, 0x84, 0x97, 0xDA, 0x84, 0x9A, 0xDA, 0x84, 0x9C, 0xDA, 
38932
  0x84, 0x9F, 0xDA, 0x84, 0xA2, 0xDA, 0x84, 0xA5, 0xDA, 0x84, 0xA7, 0xDA, 0x84, 0xA9, 0xDA, 0x84, 
38933
  0xAC, 0xDA, 0x84, 0xB0, 0xDA, 0x84, 0xB2, 0xDA, 0x84, 0xB5, 0xDA, 0x84, 0xB7, 0xDA, 0x84, 0xBA, 
38934
  0xDA, 0x84, 0xBC, 0xDA, 0x84, 0xC0, 0xDA, 0x84, 0xC2, 0xDA, 0x84, 0xC6, 0xDA, 0x84, 0xC8, 0xDA, 
38935
  0x84, 0xCB, 0xDA, 0x84, 0xD6, 0xDA, 0x80, 0xBE, 0xDA, 0x84, 0xDB, 0xDA, 0x84, 0xDE, 0xDA, 0x84, 
38936
  0xE0, 0xDA, 0x84, 0xE3, 0xDA, 0x84, 0xE5, 0xDA, 0x84, 0xE8, 0xDA, 0x85, 0x1E, 0xDA, 0x85, 0x21, 
38937
  0xDA, 0x85, 0x26, 0xDA, 0x85, 0x29, 0xDA, 0x85, 0x2B, 0xDA, 0x81, 0xFB, 0xDA, 0x85, 0x2F, 0xDA, 
38938
  0x81, 0x5C, 0xDA, 0x85, 0x33, 0xDA, 0x85, 0x36, 0xDA, 0x85, 0x3F, 0xDA, 0x85, 0x42, 0xDA, 0x85, 
38939
  0x44, 0xDA, 0x85, 0x47, 0xDA, 0x85, 0x49, 0xDA, 0x85, 0x4C, 0xDA, 0x85, 0x4E, 0xDA, 0x85, 0x51, 
38940
  0xDA, 0x85, 0x53, 0xDA, 0x81, 0xE3, 0xDA, 0x85, 0x57, 0xDA, 0x85, 0x5A, 0xDA, 0x85, 0x73, 0xDA, 
38941
  0x85, 0x76, 0xDA, 0x85, 0x6D, 0xDA, 0x85, 0x71, 0xDA, 0x85, 0x78, 0xDA, 0x85, 0x7B, 0xDA, 0x85, 
38942
  0x7D, 0xDA, 0x85, 0x80, 0xDA, 0x85, 0x83, 0xDA, 0x85, 0x86, 0xDA, 0x85, 0x88, 0xDA, 0x85, 0x8B, 
38943
  0xDA, 0x85, 0x8D, 0xDA, 0x85, 0x90, 0xDA, 0x85, 0x98, 0xDA, 0x85, 0x9B, 0xDA, 0x85, 0x9D, 0xDA, 
38944
  0x82, 0xE9, 0xDA, 0x85, 0xA1, 0xDA, 0x85, 0xA4, 0xDA, 0x85, 0xB4, 0xDA, 0x85, 0xB6, 0xDA, 0x85, 
38945
  0xBD, 0xDA, 0x85, 0xC0, 0xDA, 0x85, 0xC2, 0xDA, 0x85, 0xC5, 0xDA, 0x85, 0xD0, 0xDA, 0x81, 0xFC, 
38946
  0xDA, 0x85, 0xD4, 0xDA, 0x85, 0xD7, 0xDA, 0x85, 0xD9, 0xDA, 0x85, 0xDC, 0xDA, 0x85, 0xDE, 0xDA, 
38947
  0x85, 0xE1, 0xDA, 0x85, 0xE7, 0xDA, 0x85, 0xE9, 0xDA, 0x85, 0xEC, 0xDA, 0x85, 0xEF, 0xDA, 0x85, 
38948
  0xF9, 0xDA, 0x85, 0xFC, 0xDA, 0x85, 0xFE, 0xDA, 0x86, 0x01, 0xDA, 0x82, 0x78, 0xDA, 0x80, 0xC9, 
38949
  0xDA, 0x86, 0x06, 0xDA, 0x81, 0x5F, 0xDA, 0x86, 0x0A, 0xDA, 0x86, 0x0D, 0xDA, 0x86, 0x17, 0xDA, 
38950
  0x86, 0x1A, 0xDA, 0x86, 0x1C, 0xDA, 0x86, 0x1F, 0xDA, 0x86, 0x21, 0xDA, 0x86, 0x24, 0xDA, 0x86, 
38951
  0x28, 0xDA, 0x86, 0x2B, 0xDA, 0x86, 0x2D, 0xDA, 0x86, 0x30, 0xDA, 0x86, 0x32, 0xDA, 0x86, 0x35, 
38952
  0xDA, 0x86, 0x37, 0xDA, 0x86, 0x3A, 0xDA, 0x86, 0x3C, 0xDA, 0x81, 0x8D, 0xDA, 0x86, 0x40, 0xDA, 
38953
  0x85, 0xAA, 0xDA, 0x86, 0x49, 0xDA, 0x86, 0x4C, 0xDA, 0x86, 0x44, 0xDA, 0x80, 0xC6, 0xDA, 0x86, 
38954
  0x53, 0xDA, 0x86, 0x56, 0xDA, 0x86, 0x5C, 0xDA, 0x83, 0x1C, 0xDA, 0x86, 0x60, 0xDA, 0x80, 0xC7, 
38955
  0xDA, 0x86, 0x64, 0xDA, 0x86, 0x67, 0xDA, 0x86, 0x69, 0xDA, 0x86, 0x6C, 0xDA, 0x86, 0x72, 0xDA, 
38956
  0x86, 0x75, 0xDA, 0x86, 0x77, 0xDA, 0x82, 0x1D, 0xDA, 0x86, 0x7B, 0xDA, 0x86, 0x7E, 0xDA, 0x86, 
38957
  0x85, 0xDA, 0x86, 0x88, 0xDA, 0x86, 0x8A, 0xDA, 0x86, 0x8D, 0xDA, 0x86, 0x8F, 0xDA, 0x85, 0xA8, 
38958
  0xDA, 0x86, 0x93, 0xDA, 0x86, 0x96, 0xDA, 0x86, 0x9E, 0xDA, 0x86, 0xA1, 0xDA, 0x86, 0xA3, 0xDA, 
38959
  0x82, 0x15, 0xDA, 0x86, 0xA7, 0xDA, 0x85, 0x15, 0xDA, 0x84, 0xCF, 0xDA, 0x84, 0xCD, 0xDA, 0x81, 
38960
  0xFA, 0xDA, 0x81, 0xF8, 0xDA, 0x86, 0xB2, 0xDA, 0x86, 0xB5, 0xDA, 0x86, 0xB7, 0xDA, 0x86, 0xBA, 
38961
  0xDA, 0x86, 0xBC, 0xDA, 0x86, 0xBF, 0xDA, 0x85, 0x11, 0xDA, 0x85, 0x0E, 0xDA, 0x86, 0xE2, 0xDA, 
38962
  0x86, 0xDA, 0xDA, 0x86, 0xE6, 0xDA, 0x86, 0xE9, 0xDA, 0x86, 0xED, 0xDA, 0x86, 0xF0, 0xDA, 0x86, 
38963
  0xF2, 0xDA, 0x86, 0xF5, 0xDA, 0x86, 0xF7, 0xDA, 0x86, 0xFA, 0xDA, 0x87, 0x00, 0xDA, 0x83, 0xC4, 
38964
  0xDA, 0x87, 0x04, 0xDA, 0x84, 0x5C, 0xDA, 0x87, 0x08, 0xDA, 0x87, 0x0B, 0xDA, 0x87, 0x0D, 0xDA, 
38965
  0x87, 0x10, 0xDA, 0x87, 0x12, 0xDA, 0x87, 0x14, 0xDA, 0x87, 0x17, 0xDA, 0x87, 0x1A, 0xCF, 0x09, 
38966
  0x66, 0x69, 0x6C, 0x65, 0x2F, 0x74, 0x65, 0x6C, 0x6C, 0xD8, 0x09, 0x66, 0x69, 0x6C, 0x65, 0x2F, 
38967
  0x74, 0x65, 0x6C, 0x6C, 0xCF, 0x09, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x6F, 0x70, 0x65, 0x6E, 0xDA, 
38968
  0x80, 0xF3, 0xCF, 0x0E, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 
38969
  0x63, 0x65, 0xD8, 0x0E, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 
38970
  0x63, 0x65, 0xCF, 0x09, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3C, 0x3D, 0xD7, 0x00, 0xCD, 
38971
  0x00, 0xDD, 0x00, 0x00, 0x03, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x04, 0x00, 0x02, 
38972
  0xCE, 0x09, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3C, 0x3D, 0xDA, 0x18, 0xD7, 0x00, 0xCD, 
38973
  0x00, 0x09, 0x00, 0x17, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x10, 0xCE, 0x02, 
38974
  0x3C, 0x3D, 0x3D, 0x01, 0x00, 0x00, 0x22, 0x02, 0x01, 0x02, 0x1B, 0x02, 0x0A, 0x00, 0x3B, 0x03, 
38975
  0x00, 0x00, 0x29, 0x05, 0x01, 0x00, 0x38, 0x04, 0x00, 0x05, 0x46, 0x02, 0x03, 0x04, 0x1C, 0x02, 
38976
  0x07, 0x00, 0x05, 0x05, 0x05, 0x01, 0x19, 0x03, 0x04, 0x00, 0x23, 0x02, 0x05, 0x01, 0x1C, 0x02, 
38977
  0xFA, 0xFF, 0x27, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x28, 0x03, 0x00, 0x00, 0x03, 0x03, 
38978
  0x00, 0x00, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 0x02, 0x02, 0x02, 0x02, 0x1F, 0x00, 
38979
  0x09, 0xCE, 0x0E, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x2D, 0x72, 0x65, 0x64, 0x75, 0x63, 
38980
  0x65, 0xDA, 0x18, 0xDA, 0x85, 0xC7, 0xDA, 0x80, 0x8D, 0x00, 0x1F, 0x00, 0xCF, 0x02, 0x6F, 0x70, 
38981
  0x00, 0x1F, 0x01, 0xDA, 0x82, 0x52, 0x00, 0x1F, 0x02, 0xCF, 0x0E, 0x63, 0x6F, 0x6D, 0x70, 0x61, 
38982
  0x72, 0x65, 0x2D, 0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 0x00, 0x1F, 0x03, 0xDA, 0x63, 0x01, 0x1E, 
38983
  0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x6B, 0x04, 0x1E, 0x05, 0xCF, 0x07, 0x5F, 
38984
  0x30, 0x30, 0x30, 0x30, 0x30, 0x6C, 0x07, 0x1E, 0x07, 0xDA, 0x80, 0x90, 0x10, 0x1C, 0x08, 0xDA, 
38985
  0x81, 0xCF, 0x14, 0x1C, 0x0A, 0xCF, 0x02, 0x6F, 0x6B, 0x27, 0x03, 0x00, 0x00, 0x29, 0x04, 0x00, 
38986
  0x00, 0x3D, 0x05, 0x01, 0x00, 0x05, 0x06, 0x05, 0xFF, 0x19, 0x05, 0x06, 0x00, 0x21, 0x06, 0x04, 
38987
  0x05, 0x1C, 0x06, 0x18, 0x00, 0x19, 0x07, 0x04, 0x00, 0x2F, 0x07, 0x00, 0x00, 0x33, 0x08, 0x01, 
38988
  0x00, 0x05, 0x09, 0x07, 0x01, 0x2F, 0x09, 0x00, 0x00, 0x33, 0x0A, 0x01, 0x00, 0x30, 0x08, 0x0A, 
38989
  0x00, 0x2A, 0x0B, 0x00, 0x00, 0x33, 0x09, 0x0B, 0x00, 0x19, 0x08, 0x09, 0x00, 0x29, 0x09, 0x00, 
38990
  0x00, 0x30, 0x08, 0x09, 0x00, 0x33, 0x09, 0x00, 0x00, 0x19, 0x0A, 0x09, 0x00, 0x2F, 0x0A, 0x00, 
38991
  0x00, 0x2A, 0x0B, 0x01, 0x00, 0x33, 0x09, 0x0B, 0x00, 0x1C, 0x09, 0x04, 0x00, 0x28, 0x03, 0x00, 
38992
  0x00, 0x1A, 0x04, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x05, 0x04, 0x04, 0x01, 0x1A, 0xE8, 0xFF, 
38993
  0xFF, 0x03, 0x03, 0x00, 0x00, 0x83, 0x05, 0x03, 0x01, 0x03, 0x00, 0x19, 0x00, 0x16, 0x00, 0x03, 
38994
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x1B, 0x00, 0x1B, 0x00, 0x26, 0x00, 0x22, 0x00, 0x22, 
38995
  0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFF, 0x03, 0x02, 0x13, 0x00, 0x13, 0x00, 0x13, 0xBF, 
38996
  0xFE, 0x03, 0x03, 0x10, 0x00, 0x10, 0x00, 0x10, 0xBF, 0xFD, 0x03, 0x04, 0x05, 0x01, 0x05, 0xBF, 
38997
  0xFB, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFE, 0x01, 0x00, 0x04, 0x00, 0xDA, 0x82, 0x52, 0x00, 
38998
  0x04, 0x01, 0xDA, 0x87, 0x95, 0x2A, 0x02, 0x00, 0x00, 0x30, 0x02, 0x00, 0x00, 0x2A, 0x02, 0x01, 
38999
  0x00, 0x34, 0x02, 0x00, 0x00, 0x83, 0x1B, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x08, 
39000
  0x77, 0x68, 0x65, 0x6E, 0x2D, 0x6C, 0x65, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 
39001
  0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x08, 0x00, 0x03, 0xCE, 0x08, 0x77, 0x68, 0x65, 
39002
  0x6E, 0x2D, 0x6C, 0x65, 0x74, 0xDA, 0x18, 0xDA, 0x50, 0xDA, 0x77, 0x00, 0x08, 0x00, 0xDA, 0x80, 
39003
  0x81, 0x00, 0x08, 0x01, 0xDA, 0x82, 0xB5, 0x00, 0x08, 0x02, 0xDA, 0x87, 0xA1, 0x2A, 0x04, 0x00, 
39004
  0x00, 0x2F, 0x04, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0x43, 0x03, 0x00, 0x00, 0x2A, 0x05, 0x01, 
39005
  0x00, 0x31, 0x05, 0x00, 0x03, 0x43, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x82, 0xB9, 0x03, 
39006
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x87, 
39007
  0x64, 0xDA, 0x87, 0x62, 0xCF, 0x0C, 0x2A, 0x6C, 0x69, 0x6E, 0x74, 0x2D, 0x65, 0x72, 0x72, 0x6F, 
39008
  0x72, 0x2A, 0xDA, 0x82, 0x5B, 0xCF, 0x09, 0x6F, 0x73, 0x2F, 0x72, 0x65, 0x6E, 0x61, 0x6D, 0x65, 
39009
  0xD8, 0x09, 0x6F, 0x73, 0x2F, 0x72, 0x65, 0x6E, 0x61, 0x6D, 0x65, 0xCF, 0x05, 0x65, 0x72, 0x72, 
39010
  0x6F, 0x72, 0xDA, 0x4D, 0xCF, 0x06, 0x69, 0x66, 0x2D, 0x6E, 0x6F, 0x74, 0xD7, 0x00, 0xCD, 0x00, 
39011
  0xDC, 0x00, 0x00, 0x06, 0x03, 0x02, 0x03, 0x01, 0x05, 0x00, 0x04, 0xCE, 0x06, 0x69, 0x66, 0x2D, 
39012
  0x6E, 0x6F, 0x74, 0xDA, 0x18, 0xDA, 0x4F, 0x00, 0x05, 0x00, 0xDA, 0x84, 0x0C, 0x00, 0x05, 0x01, 
39013
  0xCF, 0x04, 0x74, 0x68, 0x65, 0x6E, 0x00, 0x05, 0x02, 0xCF, 0x04, 0x65, 0x6C, 0x73, 0x65, 0x00, 
39014
  0x05, 0x03, 0xDA, 0x87, 0xA8, 0x2A, 0x05, 0x00, 0x00, 0x31, 0x05, 0x00, 0x02, 0x2F, 0x01, 0x00, 
39015
  0x00, 0x43, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x80, 0xB8, 0x03, 0x00, 0x03, 0x00, 0x03, 
39016
  0x00, 0x03, 0x00, 0x03, 0xCF, 0x05, 0x78, 0x70, 0x72, 0x69, 0x6E, 0xD8, 0x05, 0x78, 0x70, 0x72, 
39017
  0x69, 0x6E, 0xCF, 0x0B, 0x6F, 0x73, 0x2F, 0x72, 0x65, 0x61, 0x64, 0x6C, 0x69, 0x6E, 0x6B, 0xD8, 
39018
  0x0B, 0x6F, 0x73, 0x2F, 0x72, 0x65, 0x61, 0x64, 0x6C, 0x69, 0x6E, 0x6B, 0xCF, 0x0A, 0x65, 0x76, 
39019
  0x2F, 0x72, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0xD8, 0x0A, 0x65, 0x76, 0x2F, 0x72, 0x73, 0x65, 
39020
  0x6C, 0x65, 0x63, 0x74, 0xCF, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x63, 0x6F, 0x73, 0xD8, 0x08, 
39021
  0x6D, 0x61, 0x74, 0x68, 0x2F, 0x63, 0x6F, 0x73, 0xCF, 0x09, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x74, 
39022
  0x65, 0x6D, 0x70, 0xD8, 0x09, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x74, 0x65, 0x6D, 0x70, 0xCF, 0x07, 
39023
  0x73, 0x61, 0x6E, 0x64, 0x62, 0x6F, 0x78, 0xD8, 0x07, 0x73, 0x61, 0x6E, 0x64, 0x62, 0x6F, 0x78, 
39024
  0xCF, 0x0B, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x66, 0x69, 0x6C, 0x6C, 0xD8, 0x0B, 0x62, 
39025
  0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x66, 0x69, 0x6C, 0x6C, 0xCF, 0x0A, 0x62, 0x75, 0x66, 0x66, 
39026
  0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 0xD8, 0x0A, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x6E, 
39027
  0x65, 0x77, 0xDA, 0x85, 0x5E, 0xDA, 0x85, 0x5C, 0xCF, 0x0F, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x73, 
39028
  0x65, 0x65, 0x64, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0xD8, 0x0F, 0x6D, 0x61, 0x74, 0x68, 0x2F, 
39029
  0x73, 0x65, 0x65, 0x64, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0xCF, 0x0A, 0x74, 0x61, 0x6B, 0x65, 
39030
  0x2D, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x02, 0x02, 
39031
  0x02, 0x06, 0x13, 0x00, 0x03, 0xCE, 0x0A, 0x74, 0x61, 0x6B, 0x65, 0x2D, 0x75, 0x6E, 0x74, 0x69, 
39032
  0x6C, 0xDA, 0x18, 0xDA, 0x2A, 0xDA, 0x81, 0xFC, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0B, 
39033
  0x03, 0x03, 0x03, 0x02, 0x11, 0x00, 0x07, 0xCE, 0x0B, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x2D, 0x75, 
39034
  0x6E, 0x74, 0x69, 0x6C, 0xDA, 0x18, 0xDA, 0x84, 0xCD, 0xDA, 0x84, 0xD1, 0x00, 0x11, 0x00, 0xDA, 
39035
  0x80, 0xFB, 0x00, 0x11, 0x01, 0xDA, 0x83, 0x2E, 0x00, 0x11, 0x02, 0xDA, 0x1F, 0x00, 0x11, 0x03, 
39036
  0xCF, 0x0B, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x2D, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x01, 0x11, 0x05, 
39037
  0xDA, 0x80, 0x84, 0x05, 0x11, 0x07, 0xDA, 0x80, 0x90, 0x0D, 0x11, 0x09, 0xDA, 0x83, 0xBF, 0x3D, 
39038
  0x04, 0x02, 0x00, 0x19, 0x05, 0x04, 0x00, 0x30, 0x01, 0x02, 0x00, 0x2A, 0x07, 0x00, 0x00, 0x33, 
39039
  0x06, 0x07, 0x00, 0x19, 0x07, 0x06, 0x00, 0x2F, 0x07, 0x00, 0x00, 0x2A, 0x0A, 0x01, 0x00, 0x33, 
39040
  0x09, 0x0A, 0x00, 0x1C, 0x09, 0x03, 0x00, 0x19, 0x08, 0x05, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 
39041
  0x08, 0x07, 0x00, 0x19, 0x09, 0x08, 0x00, 0x29, 0x0A, 0x00, 0x00, 0x31, 0x02, 0x0A, 0x09, 0x34, 
39042
  0x00, 0x00, 0x00, 0x84, 0x60, 0x0C, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 
39043
  0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x03, 
39044
  0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x82, 0x20, 0xDA, 0x82, 0xE9, 0xD7, 0x00, 0xCD, 0x00, 
39045
  0xDC, 0x00, 0x00, 0x09, 0x02, 0x02, 0x02, 0x01, 0x13, 0x00, 0x07, 0xCE, 0x13, 0x74, 0x61, 0x6B, 
39046
  0x65, 0x2D, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x2D, 0x66, 0x61, 0x6C, 0x6C, 0x62, 0x61, 0x63, 0x6B, 
39047
  0xDA, 0x18, 0xDA, 0x81, 0x8C, 0x00, 0x13, 0x00, 0xDA, 0x83, 0x2E, 0x00, 0x13, 0x01, 0xDA, 0x82, 
39048
  0x52, 0x00, 0x13, 0x02, 0xCF, 0x13, 0x74, 0x61, 0x6B, 0x65, 0x2D, 0x75, 0x6E, 0x74, 0x69, 0x6C, 
39049
  0x2D, 0x66, 0x61, 0x6C, 0x6C, 0x62, 0x61, 0x63, 0x6B, 0x01, 0x13, 0x04, 0xDA, 0x81, 0x08, 0x01, 
39050
  0x12, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x4F, 0x04, 0x12, 0x06, 0xCF, 0x07, 
39051
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x4E, 0x07, 0x12, 0x07, 0xDA, 0x1E, 0x3E, 0x03, 0x00, 0x00, 
39052
  0x19, 0x04, 0x03, 0x00, 0x26, 0x06, 0x00, 0x00, 0x47, 0x05, 0x01, 0x06, 0x19, 0x06, 0x05, 0x00, 
39053
  0x1D, 0x06, 0x0D, 0x00, 0x38, 0x05, 0x01, 0x06, 0x19, 0x07, 0x05, 0x00, 0x2F, 0x07, 0x00, 0x00, 
39054
  0x33, 0x05, 0x00, 0x00, 0x1C, 0x05, 0x03, 0x00, 0x1A, 0x07, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 
39055
  0x30, 0x04, 0x07, 0x00, 0x2A, 0x08, 0x00, 0x00, 0x33, 0x05, 0x08, 0x00, 0x47, 0x06, 0x01, 0x06, 
39056
  0x1A, 0xF4, 0xFF, 0xFF, 0x03, 0x04, 0x00, 0x00, 0x84, 0x48, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 
39057
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 
39058
  0x12, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFE, 0x03, 0x00, 0x03, 0xBF, 0xFD, 
39059
  0x01, 0x00, 0x13, 0x00, 0xDA, 0x83, 0x2E, 0x00, 0x13, 0x01, 0xDA, 0x1F, 0x00, 0x13, 0x02, 0xDA, 
39060
  0x87, 0xBF, 0x2F, 0x01, 0x00, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 0x1C, 0x03, 
39061
  0x05, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x31, 0x04, 0x00, 0x01, 0x2A, 0x04, 0x02, 0x00, 0x34, 0x04, 
39062
  0x00, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x2A, 0x05, 0x03, 0x00, 0x33, 0x04, 0x05, 0x00, 0x1C, 0x04, 
39063
  0x05, 0x00, 0x2A, 0x05, 0x04, 0x00, 0x31, 0x05, 0x00, 0x01, 0x2A, 0x05, 0x02, 0x00, 0x34, 0x05, 
39064
  0x00, 0x00, 0x30, 0x00, 0x01, 0x00, 0x2A, 0x05, 0x05, 0x00, 0x34, 0x05, 0x00, 0x00, 0x84, 0x69, 
39065
  0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 
39066
  0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFE, 0x03, 0x02, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 
39067
  0x14, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCF, 0x09, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 
39068
  0x3E, 0x3D, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x03, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 
39069
  0xFF, 0x02, 0x04, 0x00, 0x02, 0xCE, 0x09, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3E, 0x3D, 
39070
  0xDA, 0x18, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x16, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 
39071
  0xFF, 0x00, 0x10, 0xCE, 0x02, 0x3E, 0x3D, 0x3D, 0x01, 0x00, 0x00, 0x22, 0x02, 0x01, 0x02, 0x1B, 
39072
  0x02, 0x0A, 0x00, 0x3B, 0x03, 0x00, 0x00, 0x29, 0x05, 0x01, 0x00, 0x38, 0x04, 0x00, 0x05, 0x45, 
39073
  0x02, 0x03, 0x04, 0x1C, 0x02, 0x07, 0x00, 0x05, 0x05, 0x05, 0x01, 0x19, 0x03, 0x04, 0x00, 0x23, 
39074
  0x02, 0x05, 0x01, 0x1C, 0x02, 0xFA, 0xFF, 0x27, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x28, 
39075
  0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0xDA, 0x87, 0x9A, 0x00, 0x04, 0x00, 0xDA, 0x82, 0x52, 
39076
  0x00, 0x04, 0x01, 0xDA, 0x87, 0xCA, 0x2A, 0x02, 0x00, 0x00, 0x30, 0x02, 0x00, 0x00, 0x2A, 0x02, 
39077
  0x01, 0x00, 0x34, 0x02, 0x00, 0x00, 0x83, 0x25, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 
39078
  0x06, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0xD8, 0x06, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0xCF, 
39079
  0x02, 0x3C, 0x3D, 0xDA, 0x87, 0x98, 0xCF, 0x10, 0x65, 0x76, 0x2F, 0x61, 0x63, 0x71, 0x75, 0x69, 
39080
  0x72, 0x65, 0x2D, 0x72, 0x6C, 0x6F, 0x63, 0x6B, 0xD8, 0x10, 0x65, 0x76, 0x2F, 0x61, 0x63, 0x71, 
39081
  0x75, 0x69, 0x72, 0x65, 0x2D, 0x72, 0x6C, 0x6F, 0x63, 0x6B, 0xCF, 0x0E, 0x6D, 0x6F, 0x64, 0x75, 
39082
  0x6C, 0x65, 0x2F, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x73, 0xDA, 0x87, 0x8A, 0xCF, 0x09, 0x65, 
39083
  0x76, 0x2F, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0xDA, 0x82, 0xBE, 0xCF, 0x11, 0x66, 0x69, 0x62, 
39084
  0x65, 0x72, 0x2F, 0x63, 0x61, 0x6E, 0x2D, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x3F, 0xDA, 0x82, 
39085
  0x4A, 0xDA, 0x82, 0x25, 0xDA, 0x81, 0xD9, 0xCF, 0x0B, 0x66, 0x66, 0x69, 0x2F, 0x64, 0x65, 0x66, 
39086
  0x62, 0x69, 0x6E, 0x64, 0xD7, 0x01, 0xCD, 0x02, 0xFF, 0x00, 0x00, 0x20, 0x02, 0x02, 0xCD, 0x7F, 
39087
  0xFF, 0xFF, 0xFF, 0x0D, 0x63, 0x01, 0x04, 0x15, 0xCE, 0x0B, 0x66, 0x66, 0x69, 0x2F, 0x64, 0x65, 
39088
  0x66, 0x62, 0x69, 0x6E, 0x64, 0xDA, 0x18, 0xDA, 0x85, 0xAD, 0xD8, 0x05, 0x73, 0x6C, 0x69, 0x63, 
39089
  0x65, 0xDA, 0x83, 0xE3, 0xDA, 0x86, 0x4C, 0xDA, 0x81, 0x8A, 0xDA, 0x80, 0xDF, 0xCE, 0x14, 0x6E, 
39090
  0x6F, 0x20, 0x66, 0x66, 0x69, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x20, 0x66, 0x6F, 
39091
  0x75, 0x6E, 0x64, 0xD0, 0x04, 0x6C, 0x61, 0x7A, 0x79, 0xD0, 0x0B, 0x6D, 0x61, 0x70, 0x2D, 0x73, 
39092
  0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0xD0, 0x0B, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2D, 0x6C, 
39093
  0x61, 0x7A, 0x79, 0xDA, 0x87, 0x36, 0xD8, 0x08, 0x66, 0x66, 0x69, 0x2F, 0x63, 0x61, 0x6C, 0x6C, 
39094
  0xDA, 0x84, 0x53, 0xBF, 0xFF, 0x00, 0x00, 0xCF, 0x0D, 0x2A, 0x66, 0x66, 0x69, 0x2D, 0x63, 0x6F, 
39095
  0x6E, 0x74, 0x65, 0x78, 0x74, 0x2A, 0xBF, 0xFF, 0x00, 0x02, 0xCF, 0x0E, 0x64, 0x65, 0x66, 0x61, 
39096
  0x75, 0x6C, 0x74, 0x2D, 0x6D, 0x61, 0x6E, 0x67, 0x6C, 0x65, 0xBF, 0xFF, 0x00, 0x03, 0xCF, 0x0B, 
39097
  0x66, 0x66, 0x69, 0x2F, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x00, 0x63, 0x00, 0xDA, 0x83, 
39098
  0x0F, 0x00, 0x63, 0x01, 0xCF, 0x08, 0x72, 0x65, 0x74, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x00, 0x63, 
39099
  0x02, 0xDA, 0x82, 0xB5, 0x00, 0x63, 0x03, 0xDA, 0x87, 0xD7, 0x03, 0x63, 0x05, 0xCF, 0x0D, 0x72, 
39100
  0x65, 0x61, 0x6C, 0x2D, 0x72, 0x65, 0x74, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x09, 0x63, 0x07, 0xCF, 
39101
  0x04, 0x6D, 0x65, 0x74, 0x61, 0x11, 0x63, 0x08, 0xCF, 0x09, 0x61, 0x72, 0x67, 0x2D, 0x70, 0x61, 
39102
  0x69, 0x72, 0x73, 0x16, 0x63, 0x0B, 0xCF, 0x0B, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x2D, 0x61, 
39103
  0x72, 0x67, 0x73, 0x1B, 0x63, 0x0D, 0xCF, 0x09, 0x74, 0x79, 0x70, 0x65, 0x2D, 0x61, 0x72, 0x67, 
39104
  0x73, 0x21, 0x63, 0x0E, 0xCF, 0x12, 0x63, 0x6F, 0x6D, 0x70, 0x75, 0x74, 0x65, 0x64, 0x2D, 0x74, 
39105
  0x79, 0x70, 0x65, 0x2D, 0x61, 0x72, 0x67, 0x73, 0x26, 0x2D, 0x11, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
39106
  0x30, 0x30, 0x36, 0x69, 0x2F, 0x63, 0x12, 0xCF, 0x04, 0x6C, 0x61, 0x7A, 0x79, 0x32, 0x63, 0x13, 
39107
  0xCF, 0x02, 0x6D, 0x73, 0x35, 0x63, 0x14, 0xCF, 0x04, 0x6C, 0x6C, 0x69, 0x62, 0x38, 0x63, 0x15, 
39108
  0xCF, 0x03, 0x6C, 0x69, 0x62, 0x3B, 0x63, 0x16, 0xCF, 0x0A, 0x72, 0x61, 0x77, 0x2D, 0x73, 0x79, 
39109
  0x6D, 0x62, 0x6F, 0x6C, 0x3D, 0x63, 0x18, 0xCF, 0x08, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x73, 0x69, 
39110
  0x67, 0x3F, 0x63, 0x1A, 0xCF, 0x08, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x70, 0x74, 0x72, 0x2F, 0x01, 
39111
  0x00, 0x00, 0x2A, 0x05, 0x00, 0x00, 0x33, 0x04, 0x05, 0x00, 0x19, 0x05, 0x04, 0x00, 0x29, 0x06, 
39112
  0x00, 0x00, 0x29, 0x07, 0xFE, 0xFF, 0x31, 0x02, 0x06, 0x07, 0x2A, 0x07, 0x01, 0x00, 0x33, 0x06, 
39113
  0x07, 0x00, 0x19, 0x07, 0x06, 0x00, 0x2F, 0x02, 0x00, 0x00, 0x2A, 0x09, 0x02, 0x00, 0x33, 0x08, 
39114
  0x09, 0x00, 0x29, 0x09, 0x02, 0x00, 0x30, 0x09, 0x08, 0x00, 0x2A, 0x0A, 0x03, 0x00, 0x33, 0x09, 
39115
  0x0A, 0x00, 0x19, 0x08, 0x09, 0x00, 0x29, 0x0A, 0x00, 0x00, 0x30, 0x0A, 0x08, 0x00, 0x2A, 0x0B, 
39116
  0x04, 0x00, 0x33, 0x0A, 0x0B, 0x00, 0x19, 0x0B, 0x0A, 0x00, 0x29, 0x0C, 0x01, 0x00, 0x30, 0x0C, 
39117
  0x08, 0x00, 0x2A, 0x0D, 0x04, 0x00, 0x33, 0x0C, 0x0D, 0x00, 0x19, 0x0D, 0x0C, 0x00, 0x32, 0x0D, 
39118
  0x00, 0x00, 0x44, 0x0E, 0x00, 0x00, 0x2F, 0x0E, 0x00, 0x00, 0x2A, 0x10, 0x00, 0x00, 0x33, 0x0F, 
39119
  0x10, 0x00, 0x19, 0x0E, 0x0F, 0x00, 0x2B, 0x10, 0x00, 0x00, 0x2F, 0x10, 0x00, 0x00, 0x2A, 0x11, 
39120
  0x05, 0x00, 0x33, 0x10, 0x11, 0x00, 0x19, 0x11, 0x10, 0x00, 0x1C, 0x11, 0x03, 0x00, 0x19, 0x10, 
39121
  0x11, 0x00, 0x1A, 0x04, 0x00, 0x00, 0x2A, 0x12, 0x06, 0x00, 0x01, 0x12, 0x00, 0x00, 0x26, 0x10, 
39122
  0x00, 0x00, 0x2A, 0x12, 0x07, 0x00, 0x38, 0x11, 0x10, 0x12, 0x19, 0x12, 0x11, 0x00, 0x2A, 0x13, 
39123
  0x08, 0x00, 0x38, 0x11, 0x10, 0x13, 0x19, 0x13, 0x11, 0x00, 0x2A, 0x14, 0x09, 0x00, 0x38, 0x11, 
39124
  0x10, 0x14, 0x19, 0x14, 0x11, 0x00, 0x2A, 0x15, 0x0A, 0x00, 0x38, 0x11, 0x10, 0x15, 0x19, 0x15, 
39125
  0x11, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x33, 0x11, 0x13, 0x00, 0x19, 0x16, 0x11, 0x00, 0x2E, 0x17, 
39126
  0x00, 0x00, 0x19, 0x18, 0x17, 0x00, 0x2E, 0x19, 0x01, 0x00, 0x19, 0x1A, 0x19, 0x00, 0x1C, 0x12, 
39127
  0x15, 0x00, 0x32, 0x0B, 0x00, 0x00, 0x44, 0x1B, 0x00, 0x00, 0x2E, 0x1C, 0x02, 0x00, 0x33, 0x1D, 
39128
  0x1C, 0x00, 0x2F, 0x1D, 0x00, 0x00, 0x43, 0x1C, 0x00, 0x00, 0x2E, 0x1D, 0x03, 0x00, 0x33, 0x1E, 
39129
  0x1D, 0x00, 0x2F, 0x1E, 0x00, 0x00, 0x43, 0x1D, 0x00, 0x00, 0x2A, 0x1F, 0x0B, 0x00, 0x31, 0x1F, 
39130
  0x1C, 0x1D, 0x32, 0x0B, 0x00, 0x00, 0x43, 0x1E, 0x00, 0x00, 0x2A, 0x1D, 0x0C, 0x00, 0x30, 0x1D, 
39131
  0x00, 0x00, 0x32, 0x07, 0x00, 0x00, 0x30, 0x1B, 0x1E, 0x00, 0x43, 0x1C, 0x00, 0x00, 0x03, 0x1C, 
39132
  0x00, 0x00, 0x32, 0x0B, 0x00, 0x00, 0x44, 0x1B, 0x00, 0x00, 0x33, 0x1C, 0x1A, 0x00, 0x33, 0x1D, 
39133
  0x18, 0x00, 0x2A, 0x1F, 0x0B, 0x00, 0x31, 0x1F, 0x1C, 0x1D, 0x32, 0x0B, 0x00, 0x00, 0x43, 0x1E, 
39134
  0x00, 0x00, 0x2A, 0x1D, 0x0C, 0x00, 0x30, 0x1D, 0x00, 0x00, 0x32, 0x07, 0x00, 0x00, 0x30, 0x1B, 
39135
  0x1E, 0x00, 0x43, 0x1C, 0x00, 0x00, 0x03, 0x1C, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 
39136
  0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x07, 0x01, 0x11, 0xCE, 0x08, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 
39137
  0x73, 0x69, 0x67, 0xDA, 0x18, 0xD0, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0xDA, 0x6A, 
39138
  0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x83, 0x0F, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0xE3, 0xBF, 0xFF, 
39139
  0x00, 0x02, 0xDA, 0x82, 0xB5, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0xD7, 0xBF, 0xFF, 0x00, 0x05, 
39140
  0xDA, 0x87, 0xE4, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0xE5, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x87, 
39141
  0xE6, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x87, 0xE7, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x87, 0xE8, 0xBF, 
39142
  0xFF, 0x00, 0x0E, 0xDA, 0x87, 0xE9, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0xEA, 0xBF, 0xFF, 0x00, 
39143
  0x12, 0xDA, 0x87, 0xEB, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x87, 0xEC, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 
39144
  0x87, 0xED, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x87, 0xEE, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x87, 0xEF, 
39145
  0x00, 0x07, 0x00, 0xDA, 0x87, 0xF0, 0x2A, 0x01, 0x00, 0x00, 0x2B, 0x02, 0x00, 0x05, 0x30, 0x01, 
39146
  0x02, 0x00, 0x2B, 0x01, 0x00, 0x0E, 0x32, 0x01, 0x00, 0x00, 0x2A, 0x01, 0x01, 0x00, 0x34, 0x01, 
39147
  0x00, 0x00, 0xBF, 0xFF, 0x8E, 0xBA, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
39148
  0x07, 0x00, 0x07, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x15, 0x01, 0x13, 
39149
  0xCE, 0x08, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x70, 0x74, 0x72, 0xDA, 0x18, 0xDA, 0x85, 0x7B, 0xCE, 
39150
  0x1A, 0x66, 0x61, 0x69, 0x6C, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x66, 0x69, 0x6E, 0x64, 0x20, 
39151
  0x66, 0x66, 0x69, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0xDA, 0x80, 0xF5, 0xBF, 0xFF, 
39152
  0x00, 0x00, 0xDA, 0x83, 0x0F, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0xE3, 0xBF, 0xFF, 0x00, 0x02, 
39153
  0xDA, 0x82, 0xB5, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0xD7, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x87, 
39154
  0xE4, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0xE5, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x87, 0xE6, 0xBF, 
39155
  0xFF, 0x00, 0x0B, 0xDA, 0x87, 0xE7, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x87, 0xE8, 0xBF, 0xFF, 0x00, 
39156
  0x0E, 0xDA, 0x87, 0xE9, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0xEA, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 
39157
  0x87, 0xEB, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x87, 0xEC, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x87, 0xED, 
39158
  0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x87, 0xEE, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x87, 0xEF, 0xBF, 0xFF, 
39159
  0x00, 0x18, 0xDA, 0x87, 0xF0, 0x00, 0x15, 0x00, 0xDA, 0x87, 0xF1, 0x0B, 0x15, 0x01, 0xCF, 0x07, 
39160
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x6A, 0x2B, 0x02, 0x00, 0x12, 0x1C, 0x02, 0x05, 0x00, 0x2B, 
39161
  0x03, 0x00, 0x14, 0x33, 0x02, 0x03, 0x00, 0x19, 0x01, 0x02, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x2B, 
39162
  0x01, 0x00, 0x15, 0x2B, 0x02, 0x00, 0x16, 0x30, 0x01, 0x02, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 
39163
  0x02, 0x03, 0x00, 0x19, 0x01, 0x02, 0x00, 0x1C, 0x01, 0x02, 0x00, 0x03, 0x01, 0x00, 0x00, 0x2A, 
39164
  0x02, 0x01, 0x00, 0x2B, 0x03, 0x00, 0x16, 0x30, 0x02, 0x03, 0x00, 0x2A, 0x03, 0x02, 0x00, 0x33, 
39165
  0x02, 0x03, 0x00, 0x01, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8E, 0xBC, 0x1B, 
39166
  0x00, 0x1B, 0x00, 0x24, 0x00, 0x24, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x0F, 0x00, 0x0F, 
39167
  0x00, 0x0F, 0x00, 0x0F, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 
39168
  0x00, 0x3C, 0x00, 0x3C, 0x00, 0x07, 0x00, 0x07, 0xCD, 0x02, 0xF6, 0x00, 0x00, 0x03, 0x00, 0x00, 
39169
  0x00, 0x00, 0x04, 0x01, 0x01, 0x14, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x83, 0x0F, 0xBF, 
39170
  0xFF, 0x00, 0x01, 0xDA, 0x87, 0xE3, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x82, 0xB5, 0xBF, 0xFF, 0x00, 
39171
  0x03, 0xDA, 0x87, 0xD7, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x87, 0xE4, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 
39172
  0x87, 0xE5, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x87, 0xE6, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x87, 0xE7, 
39173
  0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x87, 0xE8, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0xE9, 0xBF, 0xFF, 
39174
  0x00, 0x11, 0xDA, 0x87, 0xEA, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x87, 0xEB, 0xBF, 0xFF, 0x00, 0x13, 
39175
  0xDA, 0x87, 0xEC, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x87, 0xED, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x87, 
39176
  0xEE, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x87, 0xEF, 0xBF, 0xFF, 0x00, 0x18, 0xDA, 0x87, 0xF0, 0xBF, 
39177
  0xFF, 0x00, 0x1A, 0xDA, 0x87, 0xF1, 0x00, 0x04, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
39178
  0x36, 0x6B, 0x01, 0x04, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x6C, 0x26, 0x00, 
39179
  0x00, 0x00, 0x26, 0x01, 0x00, 0x00, 0x2E, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 
39180
  0xCD, 0x00, 0xD4, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x02, 0x14, 0xDA, 0x18, 0xBF, 
39181
  0xFF, 0x01, 0x00, 0xDA, 0x83, 0x0F, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x87, 0xE3, 0xBF, 0xFF, 0x01, 
39182
  0x02, 0xDA, 0x82, 0xB5, 0xBF, 0xFF, 0x01, 0x03, 0xDA, 0x87, 0xD7, 0xBF, 0xFF, 0x01, 0x05, 0xDA, 
39183
  0x87, 0xE4, 0xBF, 0xFF, 0x01, 0x07, 0xDA, 0x87, 0xE5, 0xBF, 0xFF, 0x01, 0x08, 0xDA, 0x87, 0xE6, 
39184
  0xBF, 0xFF, 0x01, 0x0B, 0xDA, 0x87, 0xE7, 0xBF, 0xFF, 0x01, 0x0D, 0xDA, 0x87, 0xE8, 0xBF, 0xFF, 
39185
  0x01, 0x0E, 0xDA, 0x87, 0xE9, 0xBF, 0xFF, 0x01, 0x11, 0xDA, 0x87, 0xEA, 0xBF, 0xFF, 0x01, 0x12, 
39186
  0xDA, 0x87, 0xEB, 0xBF, 0xFF, 0x01, 0x13, 0xDA, 0x87, 0xEC, 0xBF, 0xFF, 0x01, 0x14, 0xDA, 0x87, 
39187
  0xED, 0xBF, 0xFF, 0x01, 0x15, 0xDA, 0x87, 0xEE, 0xBF, 0xFF, 0x01, 0x16, 0xDA, 0x87, 0xEF, 0xBF, 
39188
  0xFF, 0x01, 0x18, 0xDA, 0x87, 0xF0, 0xBF, 0xFF, 0x01, 0x1A, 0xDA, 0x87, 0xF1, 0xBF, 0xFF, 0x00, 
39189
  0x00, 0xDA, 0x87, 0xF7, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0xF8, 0x2B, 0x00, 0x00, 0x01, 0x1C, 
39190
  0x00, 0x03, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x2D, 
39191
  0x00, 0x00, 0x01, 0x2B, 0x01, 0x01, 0x1A, 0x33, 0x00, 0x01, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x2B, 
39192
  0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x00, 0x8E, 0xBF, 0x17, 0x00, 0x17, 0x00, 
39193
  0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x17, 0x00, 
39194
  0x17, 0x8E, 0xBF, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x03, 0x00, 0x00, 0x00, 0xCD, 0x02, 
39195
  0xF6, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x01, 0x14, 0xDA, 0x18, 0xBF, 0xFF, 
39196
  0x00, 0x00, 0xDA, 0x83, 0x0F, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0xE3, 0xBF, 0xFF, 0x00, 0x02, 
39197
  0xDA, 0x82, 0xB5, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0xD7, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x87, 
39198
  0xE4, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0xE5, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x87, 0xE6, 0xBF, 
39199
  0xFF, 0x00, 0x0B, 0xDA, 0x87, 0xE7, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x87, 0xE8, 0xBF, 0xFF, 0x00, 
39200
  0x0E, 0xDA, 0x87, 0xE9, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0xEA, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 
39201
  0x87, 0xEB, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x87, 0xEC, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x87, 0xED, 
39202
  0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x87, 0xEE, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x87, 0xEF, 0xBF, 0xFF, 
39203
  0x00, 0x18, 0xDA, 0x87, 0xF0, 0xBF, 0xFF, 0x00, 0x1A, 0xDA, 0x87, 0xF1, 0x00, 0x04, 0x00, 0xCF, 
39204
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x6D, 0x01, 0x04, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
39205
  0x30, 0x30, 0x36, 0x6E, 0x26, 0x00, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, 0x2E, 0x02, 0x00, 0x00, 
39206
  0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 
39207
  0x0B, 0x02, 0x14, 0xDA, 0x18, 0xBF, 0xFF, 0x01, 0x00, 0xDA, 0x83, 0x0F, 0xBF, 0xFF, 0x01, 0x01, 
39208
  0xDA, 0x87, 0xE3, 0xBF, 0xFF, 0x01, 0x02, 0xDA, 0x82, 0xB5, 0xBF, 0xFF, 0x01, 0x03, 0xDA, 0x87, 
39209
  0xD7, 0xBF, 0xFF, 0x01, 0x05, 0xDA, 0x87, 0xE4, 0xBF, 0xFF, 0x01, 0x07, 0xDA, 0x87, 0xE5, 0xBF, 
39210
  0xFF, 0x01, 0x08, 0xDA, 0x87, 0xE6, 0xBF, 0xFF, 0x01, 0x0B, 0xDA, 0x87, 0xE7, 0xBF, 0xFF, 0x01, 
39211
  0x0D, 0xDA, 0x87, 0xE8, 0xBF, 0xFF, 0x01, 0x0E, 0xDA, 0x87, 0xE9, 0xBF, 0xFF, 0x01, 0x11, 0xDA, 
39212
  0x87, 0xEA, 0xBF, 0xFF, 0x01, 0x12, 0xDA, 0x87, 0xEB, 0xBF, 0xFF, 0x01, 0x13, 0xDA, 0x87, 0xEC, 
39213
  0xBF, 0xFF, 0x01, 0x14, 0xDA, 0x87, 0xED, 0xBF, 0xFF, 0x01, 0x15, 0xDA, 0x87, 0xEE, 0xBF, 0xFF, 
39214
  0x01, 0x16, 0xDA, 0x87, 0xEF, 0xBF, 0xFF, 0x01, 0x18, 0xDA, 0x87, 0xF0, 0xBF, 0xFF, 0x01, 0x1A, 
39215
  0xDA, 0x87, 0xF1, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x87, 0xF9, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 
39216
  0xFA, 0x2B, 0x00, 0x00, 0x01, 0x1C, 0x00, 0x03, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 
39217
  0x00, 0x27, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x01, 0x2B, 0x01, 0x01, 0x18, 0x33, 0x00, 0x01, 
39218
  0x00, 0x2D, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x00, 
39219
  0x8E, 0xBF, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x34, 0x00, 
39220
  0x34, 0x00, 0x34, 0x00, 0x2D, 0x00, 0x2D, 0x8E, 0xBF, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 
39221
  0x03, 0x00, 0x00, 0x00, 0x8E, 0xAE, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x05, 0x01, 0x0F, 0x00, 
39222
  0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x01, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 
39223
  0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x05, 0x01, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 
39224
  0x16, 0x00, 0x05, 0x01, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x05, 0x01, 0x23, 0x00, 
39225
  0x23, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x05, 0x04, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 
39226
  0x24, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0xBF, 
39227
  0xFD, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
39228
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x04, 0x15, 0x00, 0x15, 0x00, 0x05, 0x01, 0x05, 
39229
  0x00, 0x05, 0x02, 0x05, 0x00, 0x05, 0x02, 0x05, 0x01, 0x07, 0x00, 0x07, 0x01, 0x17, 0x00, 0x17, 
39230
  0xBF, 0xFF, 0x07, 0x00, 0x07, 0x01, 0x2D, 0x00, 0x2D, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x00, 0x07, 
39231
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
39232
  0x00, 0x07, 0x02, 0x07, 0x00, 0x07, 0x01, 0x16, 0x00, 0x22, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x00, 
39233
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x20, 
39234
  0x40, 0x74, 0x05, 0x00, 0x06, 0xD0, 0x0B, 0x66, 0x66, 0x69, 0x2D, 0x63, 0x6F, 0x6E, 0x74, 0x65, 
39235
  0x78, 0x74, 0xC9, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 
39236
  0xFF, 0xFF, 0x03, 0x05, 0x00, 0x02, 0xCE, 0x0E, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x2D, 
39237
  0x6D, 0x61, 0x6E, 0x67, 0x6C, 0x65, 0xDA, 0x18, 0xDA, 0x82, 0x96, 0xDA, 0x83, 0x5D, 0xDA, 0x83, 
39238
  0xBC, 0x00, 0x05, 0x00, 0xDA, 0x83, 0x0F, 0x00, 0x05, 0x01, 0xDA, 0x87, 0xE1, 0x2A, 0x02, 0x00, 
39239
  0x00, 0x2A, 0x03, 0x01, 0x00, 0x31, 0x02, 0x03, 0x00, 0x2A, 0x02, 0x02, 0x00, 0x34, 0x02, 0x00, 
39240
  0x00, 0x8E, 0x9B, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xC9, 0xC9, 0xC9, 0xCF, 
39241
  0x0C, 0x6E, 0x65, 0x74, 0x2F, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6F, 0x77, 0x6E, 0xD8, 0x0C, 0x6E, 
39242
  0x65, 0x74, 0x2F, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6F, 0x77, 0x6E, 0xCF, 0x07, 0x63, 0x6F, 0x6D, 
39243
  0x6D, 0x65, 0x6E, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x01, 0x00, 0x00, 0xCD, 0x7F, 
39244
  0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x00, 0x01, 0xCE, 0x07, 0x63, 0x6F, 0x6D, 0x6D, 0x65, 0x6E, 0x74, 
39245
  0xDA, 0x18, 0x00, 0x01, 0x00, 0xDA, 0x88, 0x00, 0x04, 0x00, 0x00, 0x00, 0x80, 0xB1, 0x01, 0xCF, 
39246
  0x06, 0x74, 0x61, 0x62, 0x73, 0x65, 0x71, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0A, 0x02, 
39247
  0x02, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x05, 0x17, 0x00, 0x05, 0xCE, 0x06, 0x74, 0x61, 0x62, 0x73, 
39248
  0x65, 0x71, 0xDA, 0x18, 0xDA, 0x49, 0xDA, 0x4A, 0xDA, 0x50, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 
39249
  0x07, 0x03, 0x03, 0x03, 0x03, 0x00, 0x02, 0xCE, 0x03, 0x70, 0x75, 0x74, 0x3A, 0x00, 0x01, 0x02, 
39250
  0x03, 0x00, 0x00, 0x00, 0xDA, 0x86, 0x6E, 0x00, 0x17, 0x00, 0xDA, 0x86, 0x6F, 0x00, 0x17, 0x01, 
39251
  0xCF, 0x08, 0x6B, 0x65, 0x79, 0x2D, 0x62, 0x6F, 0x64, 0x79, 0x00, 0x17, 0x02, 0xCF, 0x0A, 0x76, 
39252
  0x61, 0x6C, 0x75, 0x65, 0x2D, 0x62, 0x6F, 0x64, 0x79, 0x00, 0x17, 0x03, 0xDA, 0x88, 0x03, 0x02, 
39253
  0x17, 0x05, 0xDA, 0x86, 0x70, 0x2A, 0x05, 0x00, 0x00, 0x33, 0x04, 0x05, 0x00, 0x19, 0x05, 0x04, 
39254
  0x00, 0x42, 0x06, 0x00, 0x00, 0x2A, 0x08, 0x01, 0x00, 0x31, 0x08, 0x05, 0x06, 0x43, 0x07, 0x00, 
39255
  0x00, 0x2A, 0x08, 0x02, 0x00, 0x2F, 0x08, 0x00, 0x00, 0x32, 0x02, 0x00, 0x00, 0x43, 0x06, 0x00, 
39256
  0x00, 0x2A, 0x09, 0x03, 0x00, 0x31, 0x09, 0x05, 0x01, 0x2F, 0x06, 0x00, 0x00, 0x43, 0x08, 0x00, 
39257
  0x00, 0x2A, 0x09, 0x04, 0x00, 0x31, 0x09, 0x00, 0x08, 0x43, 0x06, 0x00, 0x00, 0x2A, 0x09, 0x02, 
39258
  0x00, 0x31, 0x09, 0x07, 0x06, 0x2F, 0x05, 0x00, 0x00, 0x43, 0x08, 0x00, 0x00, 0x03, 0x08, 0x00, 
39259
  0x00, 0x82, 0x71, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
39260
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
39261
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
39262
  0xCF, 0x0C, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x66, 0x62, 0x72, 0x65, 0x61, 0x6B, 0xDA, 0x81, 
39263
  0x14, 0xCF, 0x12, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x68, 0x61, 0x73, 0x2D, 0x73, 0x75, 
39264
  0x66, 0x66, 0x69, 0x78, 0x3F, 0xDA, 0x87, 0x5F, 0xCF, 0x09, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x76, 
39265
  0x61, 0x72, 0x73, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x12, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 
39266
  0xFF, 0xFF, 0x10, 0x80, 0x81, 0x00, 0x1B, 0xCE, 0x09, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x76, 0x61, 
39267
  0x72, 0x73, 0xDA, 0x18, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x01, 
39268
  0x09, 0x00, 0x02, 0xCE, 0x05, 0x65, 0x76, 0x65, 0x6E, 0x3F, 0xDA, 0x18, 0xDA, 0x85, 0xC7, 0x00, 
39269
  0x09, 0x00, 0xDA, 0x1E, 0x00, 0x09, 0x01, 0xCF, 0x05, 0x65, 0x76, 0x65, 0x6E, 0x3F, 0x29, 0x03, 
39270
  0x02, 0x00, 0x0C, 0x02, 0x00, 0x03, 0x29, 0x03, 0x00, 0x00, 0x30, 0x03, 0x02, 0x00, 0x2A, 0x04, 
39271
  0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 0x29, 0x04, 0x00, 0x00, 0x23, 0x02, 0x04, 0x03, 0x03, 0x02, 
39272
  0x00, 0x00, 0x83, 0x2B, 0x37, 0x00, 0x37, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x2C, 0x00, 
39273
  0x27, 0x00, 0x27, 0x00, 0x27, 0xCE, 0x28, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 
39274
  0x65, 0x76, 0x65, 0x6E, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x61, 
39275
  0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x76, 0x61, 0x72, 0x73, 0xDA, 
39276
  0x49, 0xDA, 0x81, 0x8C, 0xDA, 0x4A, 0xDA, 0x3A, 0xDA, 0x82, 0xAE, 0xDA, 0x81, 0x5E, 0xDA, 0x81, 
39277
  0xEF, 0xDA, 0x82, 0xB0, 0xDA, 0x80, 0xBE, 0xDA, 0x82, 0xD0, 0xDA, 0x80, 0xBF, 0xDA, 0x82, 0xD1, 
39278
  0xDA, 0x4F, 0xDA, 0x50, 0x00, 0x80, 0x81, 0x00, 0xCF, 0x04, 0x76, 0x61, 0x72, 0x73, 0x00, 0x80, 
39279
  0x81, 0x01, 0xDA, 0x82, 0xB5, 0x00, 0x80, 0x81, 0x02, 0xDA, 0x88, 0x0C, 0x01, 0x80, 0x81, 0x04, 
39280
  0xDA, 0x80, 0x84, 0x0A, 0x16, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x61, 0x0B, 
39281
  0x16, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x62, 0x0B, 0x16, 0x04, 0xCF, 0x07, 
39282
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x63, 0x0E, 0x16, 0x08, 0xDA, 0x80, 0x90, 0x15, 0x80, 0x81, 
39283
  0x06, 0xCF, 0x04, 0x74, 0x65, 0x6D, 0x70, 0x17, 0x29, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
39284
  0x30, 0x32, 0x64, 0x18, 0x29, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x65, 0x18, 
39285
  0x29, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x66, 0x1B, 0x29, 0x09, 0xDA, 0x80, 
39286
  0x90, 0x28, 0x80, 0x81, 0x07, 0xCF, 0x07, 0x73, 0x61, 0x76, 0x65, 0x6F, 0x6C, 0x64, 0x2A, 0x3C, 
39287
  0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x67, 0x2B, 0x3C, 0x05, 0xCF, 0x07, 0x5F, 
39288
  0x30, 0x30, 0x30, 0x30, 0x32, 0x68, 0x2B, 0x3C, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
39289
  0x32, 0x69, 0x2E, 0x3C, 0x0A, 0xDA, 0x80, 0x90, 0x3B, 0x80, 0x81, 0x08, 0xCF, 0x06, 0x73, 0x65, 
39290
  0x74, 0x6E, 0x65, 0x77, 0x3D, 0x4F, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x6A, 
39291
  0x3E, 0x4F, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x6B, 0x3E, 0x4F, 0x04, 0xCF, 
39292
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x6C, 0x41, 0x4F, 0x0B, 0xDA, 0x80, 0x90, 0x4E, 0x80, 
39293
  0x81, 0x09, 0xCF, 0x0A, 0x72, 0x65, 0x73, 0x74, 0x6F, 0x72, 0x65, 0x6F, 0x6C, 0x64, 0x51, 0x80, 
39294
  0x81, 0x0A, 0xDA, 0x23, 0x54, 0x80, 0x81, 0x0B, 0xDA, 0x80, 0xFB, 0x57, 0x80, 0x81, 0x0C, 0xDA, 
39295
  0x80, 0xFF, 0x3D, 0x03, 0x00, 0x00, 0x19, 0x04, 0x03, 0x00, 0x2F, 0x04, 0x00, 0x00, 0x2A, 0x06, 
39296
  0x00, 0x00, 0x33, 0x05, 0x06, 0x00, 0x1C, 0x05, 0x02, 0x00, 0x1A, 0x03, 0x00, 0x00, 0x2A, 0x06, 
39297
  0x01, 0x00, 0x01, 0x06, 0x00, 0x00, 0x3E, 0x05, 0x00, 0x00, 0x19, 0x06, 0x05, 0x00, 0x29, 0x05, 
39298
  0x00, 0x00, 0x21, 0x07, 0x05, 0x04, 0x1C, 0x07, 0x09, 0x00, 0x19, 0x08, 0x05, 0x00, 0x2A, 0x0A, 
39299
  0x02, 0x00, 0x33, 0x09, 0x0A, 0x00, 0x30, 0x06, 0x09, 0x00, 0x2A, 0x0B, 0x03, 0x00, 0x33, 0x0A, 
39300
  0x0B, 0x00, 0x05, 0x05, 0x05, 0x02, 0x1A, 0xF7, 0xFF, 0xFF, 0x3E, 0x05, 0x00, 0x00, 0x19, 0x07, 
39301
  0x05, 0x00, 0x29, 0x05, 0x00, 0x00, 0x21, 0x08, 0x05, 0x04, 0x1C, 0x08, 0x0F, 0x00, 0x19, 0x09, 
39302
  0x05, 0x00, 0x0A, 0x0A, 0x09, 0x02, 0x2F, 0x0A, 0x00, 0x00, 0x33, 0x0B, 0x06, 0x00, 0x2F, 0x09, 
39303
  0x00, 0x00, 0x33, 0x0A, 0x00, 0x00, 0x2A, 0x0C, 0x04, 0x00, 0x31, 0x0C, 0x0B, 0x0A, 0x43, 0x0A, 
39304
  0x00, 0x00, 0x30, 0x07, 0x0A, 0x00, 0x2A, 0x0C, 0x03, 0x00, 0x33, 0x0B, 0x0C, 0x00, 0x05, 0x05, 
39305
  0x05, 0x02, 0x1A, 0xF1, 0xFF, 0xFF, 0x3E, 0x05, 0x00, 0x00, 0x19, 0x08, 0x05, 0x00, 0x29, 0x05, 
39306
  0x00, 0x00, 0x21, 0x09, 0x05, 0x04, 0x1C, 0x09, 0x0F, 0x00, 0x19, 0x0A, 0x05, 0x00, 0x2F, 0x0A, 
39307
  0x00, 0x00, 0x33, 0x0B, 0x00, 0x00, 0x05, 0x0C, 0x0A, 0x01, 0x2F, 0x0C, 0x00, 0x00, 0x33, 0x0D, 
39308
  0x00, 0x00, 0x2A, 0x0C, 0x05, 0x00, 0x31, 0x0C, 0x0B, 0x0D, 0x43, 0x0B, 0x00, 0x00, 0x30, 0x08, 
39309
  0x0B, 0x00, 0x2A, 0x0D, 0x03, 0x00, 0x33, 0x0C, 0x0D, 0x00, 0x05, 0x05, 0x05, 0x02, 0x1A, 0xF1, 
39310
  0xFF, 0xFF, 0x3E, 0x05, 0x00, 0x00, 0x19, 0x09, 0x05, 0x00, 0x29, 0x05, 0x00, 0x00, 0x21, 0x0A, 
39311
  0x05, 0x04, 0x1C, 0x0A, 0x0F, 0x00, 0x19, 0x0B, 0x05, 0x00, 0x2F, 0x0B, 0x00, 0x00, 0x33, 0x0C, 
39312
  0x00, 0x00, 0x0A, 0x0D, 0x0B, 0x02, 0x2F, 0x0D, 0x00, 0x00, 0x33, 0x0E, 0x06, 0x00, 0x2A, 0x0D, 
39313
  0x05, 0x00, 0x31, 0x0D, 0x0C, 0x0E, 0x43, 0x0C, 0x00, 0x00, 0x30, 0x09, 0x0C, 0x00, 0x2A, 0x0E, 
39314
  0x03, 0x00, 0x33, 0x0D, 0x0E, 0x00, 0x05, 0x05, 0x05, 0x02, 0x1A, 0xF1, 0xFF, 0xFF, 0x2A, 0x0A, 
39315
  0x02, 0x00, 0x33, 0x05, 0x0A, 0x00, 0x19, 0x0A, 0x05, 0x00, 0x2A, 0x0B, 0x02, 0x00, 0x33, 0x05, 
39316
  0x0B, 0x00, 0x19, 0x0B, 0x05, 0x00, 0x2A, 0x0C, 0x02, 0x00, 0x33, 0x05, 0x0C, 0x00, 0x19, 0x0C, 
39317
  0x05, 0x00, 0x44, 0x05, 0x00, 0x00, 0x2A, 0x0E, 0x06, 0x00, 0x30, 0x0E, 0x05, 0x00, 0x32, 0x08, 
39318
  0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0x43, 0x0D, 0x00, 0x00, 0x2A, 0x0E, 0x07, 0x00, 0x2A, 0x0F, 
39319
  0x08, 0x00, 0x31, 0x0E, 0x0D, 0x0F, 0x43, 0x05, 0x00, 0x00, 0x2A, 0x0E, 0x04, 0x00, 0x31, 0x0E, 
39320
  0x0B, 0x05, 0x43, 0x0D, 0x00, 0x00, 0x2A, 0x0E, 0x09, 0x00, 0x30, 0x0E, 0x0B, 0x00, 0x43, 0x05, 
39321
  0x00, 0x00, 0x2A, 0x0F, 0x04, 0x00, 0x31, 0x0F, 0x0A, 0x05, 0x43, 0x0E, 0x00, 0x00, 0x2A, 0x0F, 
39322
  0x0A, 0x00, 0x30, 0x0F, 0x0B, 0x00, 0x43, 0x05, 0x00, 0x00, 0x2A, 0x10, 0x0B, 0x00, 0x2A, 0x11, 
39323
  0x0C, 0x00, 0x31, 0x10, 0x05, 0x11, 0x43, 0x0F, 0x00, 0x00, 0x2A, 0x10, 0x0D, 0x00, 0x31, 0x10, 
39324
  0x0A, 0x0B, 0x43, 0x05, 0x00, 0x00, 0x2A, 0x11, 0x0E, 0x00, 0x31, 0x11, 0x0F, 0x0A, 0x2F, 0x05, 
39325
  0x00, 0x00, 0x43, 0x10, 0x00, 0x00, 0x2A, 0x0F, 0x0F, 0x00, 0x2F, 0x0F, 0x00, 0x00, 0x32, 0x07, 
39326
  0x00, 0x00, 0x30, 0x0D, 0x0E, 0x00, 0x32, 0x09, 0x00, 0x00, 0x2F, 0x10, 0x00, 0x00, 0x43, 0x05, 
39327
  0x00, 0x00, 0x03, 0x05, 0x00, 0x00, 0x85, 0x7E, 0x0C, 0x00, 0x03, 0x01, 0x0B, 0x00, 0x0B, 0x00, 
39328
  0x0B, 0x00, 0x03, 0x00, 0x03, 0x00, 0x17, 0x00, 0x17, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
39329
  0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x27, 0x00, 0x27, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
39330
  0x0D, 0x00, 0x0D, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 
39331
  0x36, 0x00, 0x30, 0x00, 0x30, 0x00, 0x3F, 0x00, 0x3F, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 
39332
  0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
39333
  0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x3E, 0x00, 0x38, 0x00, 0x38, 0x00, 
39334
  0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x01, 
39335
  0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x33, 0x00, 0x33, 0x00, 
39336
  0x42, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x13, 0x00, 0x13, 0x00, 
39337
  0x13, 0x00, 0x13, 0x00, 0x13, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
39338
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
39339
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
39340
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
39341
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
39342
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
39343
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCF, 0x0A, 0x74, 0x61, 0x6B, 0x65, 0x2D, 
39344
  0x77, 0x68, 0x69, 0x6C, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x02, 0x02, 0x02, 
39345
  0x02, 0x06, 0x00, 0x03, 0xCE, 0x0A, 0x74, 0x61, 0x6B, 0x65, 0x2D, 0x77, 0x68, 0x69, 0x6C, 0x65, 
39346
  0xDA, 0x18, 0xDA, 0x85, 0xE3, 0xDA, 0x87, 0xC0, 0x00, 0x06, 0x00, 0xDA, 0x83, 0x2E, 0x00, 0x06, 
39347
  0x01, 0xDA, 0x1F, 0x00, 0x06, 0x02, 0xDA, 0x88, 0x24, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x04, 0x00, 
39348
  0x00, 0x33, 0x03, 0x04, 0x00, 0x30, 0x03, 0x01, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x34, 0x04, 0x00, 
39349
  0x00, 0x84, 0x71, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x05, 
39350
  0x6D, 0x61, 0x74, 0x63, 0x68, 0xD7, 0x00, 0xCD, 0x02, 0xFF, 0x00, 0x00, 0x2D, 0x01, 0x01, 0xCD, 
39351
  0x7F, 0xFF, 0xFF, 0xFF, 0x17, 0x81, 0x0F, 0x00, 0x06, 0x2F, 0xCE, 0x05, 0x6D, 0x61, 0x74, 0x63, 
39352
  0x68, 0xDA, 0x18, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x01, 0x09, 
39353
  0x00, 0x02, 0xDA, 0x7E, 0xDA, 0x18, 0xDA, 0x85, 0xC7, 0x00, 0x09, 0x00, 0xDA, 0x1E, 0x00, 0x09, 
39354
  0x01, 0xDA, 0x7F, 0x29, 0x03, 0x02, 0x00, 0x0C, 0x02, 0x00, 0x03, 0x29, 0x03, 0x01, 0x00, 0x30, 
39355
  0x03, 0x02, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 0x29, 0x04, 0x00, 0x00, 0x23, 
39356
  0x02, 0x04, 0x03, 0x03, 0x02, 0x00, 0x00, 0x83, 0x2C, 0x35, 0x00, 0x35, 0x00, 0x2A, 0x00, 0x2A, 
39357
  0x00, 0x2A, 0x00, 0x2A, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0xDA, 0x83, 0xE3, 0xDA, 0x87, 0xDA, 
39358
  0xDA, 0x86, 0x4C, 0xDA, 0x80, 0x87, 0xDA, 0x49, 0xDA, 0x4A, 0xDA, 0x81, 0x8C, 0xD2, 0x02, 0x00, 
39359
  0xC9, 0xC9, 0xCF, 0x03, 0x61, 0x6E, 0x64, 0xDA, 0x85, 0xF2, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
39360
  0x00, 0x06, 0x02, 0x01, 0x02, 0x02, 0x0B, 0x00, 0x04, 0xCE, 0x04, 0x73, 0x6F, 0x72, 0x74, 0xDA, 
39361
  0x18, 0xDA, 0x83, 0xA5, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 0x04, 0x04, 0x04, 0x02, 
39362
  0x34, 0x00, 0x09, 0xCE, 0x09, 0x73, 0x6F, 0x72, 0x74, 0x2D, 0x68, 0x65, 0x6C, 0x70, 0xDA, 0x18, 
39363
  0xDA, 0x84, 0xB5, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x03, 0x03, 0x03, 0x00, 0x0B, 
39364
  0x00, 0x04, 0xCE, 0x0F, 0x6D, 0x65, 0x64, 0x69, 0x61, 0x6E, 0x2D, 0x6F, 0x66, 0x2D, 0x74, 0x68, 
39365
  0x72, 0x65, 0x65, 0xDA, 0x18, 0x00, 0x0B, 0x00, 0xCF, 0x01, 0x61, 0x00, 0x0B, 0x01, 0xDA, 0x83, 
39366
  0xCB, 0x00, 0x0B, 0x02, 0xDA, 0x81, 0xCF, 0x00, 0x0B, 0x03, 0xCF, 0x0F, 0x6D, 0x65, 0x64, 0x69, 
39367
  0x61, 0x6E, 0x2D, 0x6F, 0x66, 0x2D, 0x74, 0x68, 0x72, 0x65, 0x65, 0x1F, 0x04, 0x00, 0x01, 0x1F, 
39368
  0x05, 0x00, 0x02, 0x48, 0x06, 0x04, 0x05, 0x1C, 0x06, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1F, 
39369
  0x04, 0x01, 0x00, 0x1F, 0x05, 0x01, 0x02, 0x48, 0x07, 0x04, 0x05, 0x1C, 0x07, 0x02, 0x00, 0x03, 
39370
  0x01, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x83, 0x35, 0x0D, 0x00, 0x15, 0x00, 0x07, 0x00, 0x03, 
39371
  0x00, 0x03, 0x02, 0x0F, 0x00, 0x17, 0x00, 0x09, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x34, 
39372
  0x00, 0xDA, 0x88, 0x33, 0x00, 0x34, 0x01, 0xCF, 0x02, 0x6C, 0x6F, 0x00, 0x34, 0x02, 0xCF, 0x02, 
39373
  0x68, 0x69, 0x00, 0x34, 0x03, 0xCF, 0x07, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x3F, 0x00, 0x34, 
39374
  0x04, 0xCF, 0x09, 0x73, 0x6F, 0x72, 0x74, 0x2D, 0x68, 0x65, 0x6C, 0x70, 0x0E, 0x32, 0x06, 0xCF, 
39375
  0x05, 0x70, 0x69, 0x76, 0x6F, 0x74, 0x0F, 0x32, 0x07, 0xCF, 0x04, 0x6C, 0x65, 0x66, 0x74, 0x10, 
39376
  0x32, 0x08, 0xCF, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x26, 0x0B, 0xCF, 0x03, 0x74, 0x6D, 
39377
  0x70, 0x2C, 0x04, 0x00, 0x00, 0x21, 0x05, 0x01, 0x02, 0x1C, 0x05, 0x31, 0x00, 0x38, 0x06, 0x00, 
39378
  0x02, 0x38, 0x07, 0x00, 0x01, 0x06, 0x08, 0x01, 0x02, 0x0A, 0x09, 0x08, 0x02, 0x2F, 0x09, 0x00, 
39379
  0x00, 0x2A, 0x0A, 0x00, 0x00, 0x33, 0x08, 0x0A, 0x00, 0x38, 0x09, 0x00, 0x08, 0x31, 0x06, 0x07, 
39380
  0x09, 0x2A, 0x0A, 0x01, 0x00, 0x33, 0x08, 0x0A, 0x00, 0x19, 0x06, 0x08, 0x00, 0x19, 0x07, 0x01, 
39381
  0x00, 0x19, 0x08, 0x02, 0x00, 0x38, 0x09, 0x00, 0x07, 0x30, 0x09, 0x06, 0x00, 0x33, 0x0A, 0x03, 
39382
  0x00, 0x1C, 0x0A, 0x03, 0x00, 0x05, 0x07, 0x07, 0x01, 0x1A, 0xFB, 0xFF, 0xFF, 0x38, 0x09, 0x00, 
39383
  0x08, 0x30, 0x06, 0x09, 0x00, 0x33, 0x0A, 0x03, 0x00, 0x1C, 0x0A, 0x03, 0x00, 0x05, 0x08, 0x08, 
39384
  0xFF, 0x1A, 0xFB, 0xFF, 0xFF, 0x46, 0x09, 0x07, 0x08, 0x1C, 0x09, 0x09, 0x00, 0x38, 0x0A, 0x00, 
39385
  0x07, 0x19, 0x0B, 0x0A, 0x00, 0x38, 0x0A, 0x00, 0x08, 0x3A, 0x00, 0x07, 0x0A, 0x3A, 0x00, 0x08, 
39386
  0x0B, 0x05, 0x07, 0x07, 0x01, 0x05, 0x08, 0x08, 0xFF, 0x1A, 0x01, 0x00, 0x00, 0x45, 0x09, 0x07, 
39387
  0x08, 0x1C, 0x09, 0x03, 0x00, 0x1A, 0x03, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x1A, 0xE6, 0xFF, 
39388
  0xFF, 0x31, 0x00, 0x01, 0x08, 0x2F, 0x03, 0x00, 0x00, 0x33, 0x09, 0x04, 0x00, 0x31, 0x00, 0x07, 
39389
  0x02, 0x2F, 0x03, 0x00, 0x00, 0x33, 0x09, 0x04, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 
39390
  0x00, 0x83, 0x39, 0x01, 0x01, 0x09, 0x00, 0x03, 0x02, 0x18, 0x00, 0x22, 0x01, 0x2D, 0x00, 0x2A, 
39391
  0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x18, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 
39392
  0xFF, 0x05, 0x03, 0x05, 0x01, 0x05, 0x02, 0x17, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x2A, 
39393
  0x00, 0x07, 0x01, 0x1D, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x2B, 0x00, 0x07, 0x01, 0x0D, 
39394
  0x00, 0x07, 0x01, 0x12, 0x00, 0x09, 0x01, 0x17, 0x00, 0x09, 0x01, 0x09, 0x01, 0x09, 0x01, 0x09, 
39395
  0xBF, 0xFB, 0x07, 0x06, 0x0B, 0x00, 0x07, 0x00, 0x1B, 0x00, 0x07, 0xBF, 0xF7, 0x05, 0x0A, 0x05, 
39396
  0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xEF, 0x03, 0xBF, 0xFF, 0x01, 
39397
  0x00, 0x0B, 0x00, 0xDA, 0x1F, 0x00, 0x0B, 0x01, 0xDA, 0x88, 0x37, 0x00, 0x0B, 0x02, 0xCF, 0x04, 
39398
  0x73, 0x6F, 0x72, 0x74, 0x01, 0x06, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x6D, 
39399
  0x3D, 0x03, 0x00, 0x00, 0x05, 0x04, 0x03, 0xFF, 0x1C, 0x01, 0x03, 0x00, 0x19, 0x03, 0x01, 0x00, 
39400
  0x1A, 0x02, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x29, 0x05, 0x00, 0x00, 0x31, 0x00, 0x05, 0x04, 
39401
  0x2F, 0x03, 0x00, 0x00, 0x2A, 0x05, 0x01, 0x00, 0x34, 0x05, 0x00, 0x00, 0x83, 0x53, 0x17, 0x00, 
39402
  0x14, 0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
39403
  0x03, 0x00, 0x03, 0xDA, 0x82, 0xE6, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x01, 0x01, 
39404
  0x01, 0x02, 0x12, 0x00, 0x04, 0xCE, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0xDA, 0x18, 0xDA, 0x80, 
39405
  0x8F, 0xDA, 0x81, 0x8C, 0x00, 0x12, 0x00, 0xDA, 0x1E, 0x00, 0x12, 0x01, 0xCF, 0x05, 0x70, 0x61, 
39406
  0x69, 0x72, 0x73, 0x01, 0x12, 0x03, 0xDA, 0x86, 0xEB, 0x04, 0x12, 0x05, 0xDA, 0x22, 0x3E, 0x02, 
39407
  0x00, 0x00, 0x19, 0x03, 0x02, 0x00, 0x26, 0x05, 0x00, 0x00, 0x47, 0x04, 0x00, 0x05, 0x19, 0x05, 
39408
  0x04, 0x00, 0x26, 0x07, 0x00, 0x00, 0x48, 0x06, 0x07, 0x05, 0x1C, 0x06, 0x0A, 0x00, 0x38, 0x07, 
39409
  0x00, 0x05, 0x30, 0x05, 0x07, 0x00, 0x2A, 0x09, 0x00, 0x00, 0x33, 0x08, 0x09, 0x00, 0x30, 0x03, 
39410
  0x08, 0x00, 0x2A, 0x09, 0x01, 0x00, 0x33, 0x07, 0x09, 0x00, 0x47, 0x05, 0x00, 0x05, 0x1A, 0xF5, 
39411
  0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 0x86, 0x3E, 0x03, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 
39412
  0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x1E, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 
39413
  0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0C, 0xBF, 0xFE, 0x03, 0xBF, 0xFB, 0x01, 0xDA, 0x83, 0xD0, 
39414
  0xDA, 0x82, 0x50, 0xDA, 0x50, 0xDA, 0x82, 0xE9, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 
39415
  0x01, 0x01, 0x01, 0x02, 0x12, 0x00, 0x05, 0xCE, 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 
39416
  0xDA, 0x18, 0xDA, 0x86, 0x4F, 0xDA, 0x81, 0x8C, 0x00, 0x12, 0x00, 0xDA, 0x31, 0x00, 0x12, 0x01, 
39417
  0xCF, 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x01, 0x12, 0x03, 0xDA, 0x80, 0x84, 0x03, 
39418
  0x12, 0x05, 0xDA, 0x80, 0xD8, 0x07, 0x12, 0x07, 0xDA, 0x23, 0x3D, 0x02, 0x00, 0x00, 0x19, 0x03, 
39419
  0x02, 0x00, 0x05, 0x04, 0x03, 0xFF, 0x19, 0x05, 0x04, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x07, 
39420
  0x00, 0x00, 0x33, 0x06, 0x07, 0x00, 0x19, 0x07, 0x06, 0x00, 0x29, 0x09, 0x00, 0x00, 0x45, 0x08, 
39421
  0x05, 0x09, 0x1C, 0x08, 0x07, 0x00, 0x38, 0x09, 0x00, 0x05, 0x30, 0x07, 0x09, 0x00, 0x2A, 0x0B, 
39422
  0x01, 0x00, 0x33, 0x0A, 0x0B, 0x00, 0x05, 0x05, 0x05, 0xFF, 0x1A, 0xF8, 0xFF, 0xFF, 0x03, 0x07, 
39423
  0x00, 0x00, 0x85, 0xB6, 0x0C, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 
39424
  0x0C, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x15, 0x00, 0x05, 0x00, 0x05, 0x00, 
39425
  0x05, 0x01, 0x05, 0xBF, 0xFE, 0x03, 0xBF, 0xF8, 0x01, 0xD0, 0x06, 0x62, 0x72, 0x61, 0x6E, 0x63, 
39426
  0x68, 0xDA, 0x85, 0x71, 0xDA, 0x4F, 0xD8, 0x0C, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x72, 0x65, 
39427
  0x6D, 0x6F, 0x76, 0x65, 0x00, 0x81, 0x0F, 0x00, 0xDA, 0x1E, 0x00, 0x81, 0x0F, 0x01, 0xCF, 0x05, 
39428
  0x63, 0x61, 0x73, 0x65, 0x73, 0x00, 0x81, 0x0F, 0x02, 0xDA, 0x88, 0x27, 0x04, 0x81, 0x0F, 0x03, 
39429
  0xCF, 0x06, 0x6F, 0x64, 0x64, 0x6C, 0x65, 0x6E, 0x0C, 0x81, 0x0F, 0x06, 0xDA, 0x87, 0xAC, 0x1A, 
39430
  0x81, 0x0F, 0x07, 0xCF, 0x08, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x73, 0x24, 0x81, 0x0F, 
39431
  0x0A, 0xCF, 0x05, 0x78, 0x2D, 0x73, 0x79, 0x6D, 0x26, 0x81, 0x0F, 0x0C, 0xDA, 0x82, 0xDE, 0x33, 
39432
  0x81, 0x0F, 0x0E, 0xCF, 0x07, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x35, 0x81, 0x0F, 0x10, 
39433
  0xCF, 0x0E, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x2D, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 
39434
  0x37, 0x81, 0x0F, 0x12, 0xCF, 0x04, 0x65, 0x6D, 0x69, 0x74, 0x39, 0x81, 0x0F, 0x14, 0xCF, 0x0B, 
39435
  0x65, 0x6D, 0x69, 0x74, 0x2D, 0x62, 0x72, 0x61, 0x6E, 0x63, 0x68, 0x3B, 0x81, 0x0F, 0x16, 0xCF, 
39436
  0x07, 0x67, 0x65, 0x74, 0x2D, 0x73, 0x79, 0x6D, 0x3D, 0x81, 0x0F, 0x18, 0xCF, 0x0E, 0x67, 0x65, 
39437
  0x74, 0x2D, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x2D, 0x73, 0x79, 0x6D, 0x3F, 0x81, 0x0F, 0x1A, 
39438
  0xCF, 0x0F, 0x76, 0x69, 0x73, 0x69, 0x74, 0x2D, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x2D, 
39439
  0x31, 0x41, 0x81, 0x0F, 0x1C, 0xCF, 0x0F, 0x76, 0x69, 0x73, 0x69, 0x74, 0x2D, 0x70, 0x61, 0x74, 
39440
  0x74, 0x65, 0x72, 0x6E, 0x2D, 0x32, 0x41, 0x80, 0xC6, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
39441
  0x30, 0x33, 0x73, 0x44, 0x80, 0xC6, 0x1E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x72, 
39442
  0x48, 0x80, 0xC6, 0x20, 0xCF, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x4A, 0x80, 0xC6, 
39443
  0x21, 0xCF, 0x0A, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x4C, 0x80, 0xC6, 
39444
  0x1F, 0xCF, 0x03, 0x62, 0x32, 0x67, 0x4E, 0x80, 0xC6, 0x22, 0xCF, 0x03, 0x67, 0x75, 0x6E, 0x50, 
39445
  0x80, 0xC6, 0x23, 0xCF, 0x05, 0x70, 0x72, 0x65, 0x64, 0x73, 0x59, 0x80, 0xC6, 0x24, 0xCF, 0x04, 
39446
  0x61, 0x6E, 0x64, 0x61, 0x60, 0x80, 0xC6, 0x25, 0xCF, 0x05, 0x75, 0x6E, 0x69, 0x66, 0x79, 0x60, 
39447
  0x75, 0x1F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x75, 0x63, 0x75, 0x26, 0xCF, 0x07, 
39448
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x74, 0x66, 0x75, 0x27, 0xCF, 0x04, 0x73, 0x79, 0x6D, 0x73, 
39449
  0x74, 0x80, 0x85, 0x22, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x77, 0x77, 0x80, 0x85, 
39450
  0x26, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x76, 0x7A, 0x80, 0x85, 0x27, 0xDA, 0x84, 
39451
  0x4E, 0x7B, 0x80, 0x85, 0x28, 0xDA, 0x88, 0x5E, 0x80, 0x8C, 0x80, 0xA8, 0x26, 0xCF, 0x07, 0x5F, 
39452
  0x30, 0x30, 0x30, 0x30, 0x33, 0x78, 0x80, 0x93, 0x80, 0xA8, 0x1D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
39453
  0x30, 0x30, 0x33, 0x7A, 0x80, 0x96, 0x80, 0xA8, 0x28, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
39454
  0x33, 0x79, 0x80, 0x9A, 0x80, 0xA8, 0x2A, 0xDA, 0x22, 0x80, 0x9C, 0x80, 0xA8, 0x2B, 0xDA, 0x52, 
39455
  0x80, 0xA7, 0x80, 0xC6, 0x26, 0xCF, 0x04, 0x64, 0x65, 0x66, 0x73, 0x80, 0xB6, 0x80, 0xBA, 0x27, 
39456
  0xCF, 0x09, 0x70, 0x72, 0x65, 0x64, 0x2D, 0x6A, 0x6F, 0x69, 0x6E, 0x80, 0xC8, 0x81, 0x0F, 0x1E, 
39457
  0xDA, 0x80, 0xE3, 0x80, 0xCC, 0x81, 0x07, 0x20, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 
39458
  0x42, 0x80, 0xCF, 0x81, 0x07, 0x21, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x41, 0x80, 
39459
  0xD2, 0x81, 0x07, 0x22, 0xDA, 0x82, 0xE1, 0x80, 0xD9, 0x81, 0x01, 0x24, 0xDA, 0x84, 0x0C, 0x80, 
39460
  0xDD, 0x81, 0x01, 0x25, 0xCF, 0x06, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x80, 0xDF, 0x80, 0xF4, 
39461
  0x26, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x43, 0x80, 0xF8, 0x81, 0x01, 0x23, 0xCF, 
39462
  0x07, 0x69, 0x66, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x3D, 0x03, 0x01, 0x00, 0x2F, 0x03, 0x00, 0x00, 
39463
  0x2A, 0x05, 0x00, 0x00, 0x33, 0x04, 0x05, 0x00, 0x19, 0x03, 0x04, 0x00, 0x1C, 0x03, 0x06, 0x00, 
39464
  0x2F, 0x01, 0x00, 0x00, 0x2A, 0x07, 0x01, 0x00, 0x33, 0x06, 0x07, 0x00, 0x19, 0x05, 0x06, 0x00, 
39465
  0x1A, 0x02, 0x00, 0x00, 0x26, 0x05, 0x00, 0x00, 0x19, 0x06, 0x05, 0x00, 0x1C, 0x03, 0x08, 0x00, 
39466
  0x29, 0x08, 0x00, 0x00, 0x29, 0x09, 0xFE, 0xFF, 0x31, 0x01, 0x08, 0x09, 0x2A, 0x09, 0x02, 0x00, 
39467
  0x33, 0x08, 0x09, 0x00, 0x19, 0x07, 0x08, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x07, 0x01, 0x00, 
39468
  0x29, 0x08, 0x02, 0x00, 0x30, 0x08, 0x07, 0x00, 0x2A, 0x09, 0x03, 0x00, 0x33, 0x08, 0x09, 0x00, 
39469
  0x19, 0x07, 0x08, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x0B, 0x04, 0x00, 0x33, 0x0A, 0x0B, 0x00, 
39470
  0x1C, 0x0A, 0x03, 0x00, 0x19, 0x09, 0x00, 0x00, 0x1A, 0x04, 0x00, 0x00, 0x2A, 0x0C, 0x05, 0x00, 
39471
  0x33, 0x0B, 0x0C, 0x00, 0x19, 0x09, 0x0B, 0x00, 0x19, 0x0A, 0x09, 0x00, 0x3E, 0x0B, 0x00, 0x00, 
39472
  0x19, 0x0C, 0x0B, 0x00, 0x48, 0x0D, 0x00, 0x0A, 0x1C, 0x0D, 0x08, 0x00, 0x2A, 0x0E, 0x06, 0x00, 
39473
  0x31, 0x0E, 0x0A, 0x00, 0x43, 0x0E, 0x00, 0x00, 0x30, 0x0C, 0x0E, 0x00, 0x2A, 0x10, 0x07, 0x00, 
39474
  0x33, 0x0F, 0x10, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x2A, 0x0D, 0x08, 0x00, 0x30, 0x0D, 0x0A, 0x00, 
39475
  0x42, 0x0D, 0x00, 0x00, 0x19, 0x0E, 0x0D, 0x00, 0x42, 0x0F, 0x00, 0x00, 0x19, 0x10, 0x0F, 0x00, 
39476
  0x2E, 0x11, 0x00, 0x00, 0x19, 0x12, 0x11, 0x00, 0x2E, 0x13, 0x01, 0x00, 0x19, 0x14, 0x13, 0x00, 
39477
  0x2E, 0x15, 0x02, 0x00, 0x19, 0x16, 0x15, 0x00, 0x2E, 0x17, 0x03, 0x00, 0x19, 0x18, 0x17, 0x00, 
39478
  0x2E, 0x19, 0x04, 0x00, 0x19, 0x1A, 0x19, 0x00, 0x2E, 0x1B, 0x05, 0x00, 0x19, 0x1C, 0x1B, 0x00, 
39479
  0x26, 0x1E, 0x00, 0x00, 0x47, 0x1D, 0x07, 0x1E, 0x19, 0x1E, 0x1D, 0x00, 0x1D, 0x1E, 0x81, 0x00, 
39480
  0x38, 0x1D, 0x07, 0x1E, 0x3B, 0x1F, 0x1D, 0x00, 0x19, 0x20, 0x1F, 0x00, 0x3B, 0x1F, 0x1D, 0x01, 
39481
  0x19, 0x21, 0x1F, 0x00, 0x42, 0x1D, 0x00, 0x00, 0x19, 0x1F, 0x1D, 0x00, 0x42, 0x1D, 0x00, 0x00, 
39482
  0x19, 0x22, 0x1D, 0x00, 0x3E, 0x1D, 0x00, 0x00, 0x19, 0x23, 0x1D, 0x00, 0x26, 0x1D, 0x00, 0x00, 
39483
  0x26, 0x24, 0x00, 0x00, 0x31, 0x1F, 0x1D, 0x24, 0x2F, 0x20, 0x00, 0x00, 0x33, 0x1D, 0x1A, 0x00, 
39484
  0x2A, 0x1D, 0x09, 0x00, 0x2F, 0x1D, 0x00, 0x00, 0x3E, 0x1D, 0x00, 0x00, 0x19, 0x24, 0x1D, 0x00, 
39485
  0x31, 0x24, 0x22, 0x23, 0x26, 0x1D, 0x00, 0x00, 0x26, 0x25, 0x00, 0x00, 0x31, 0x1D, 0x25, 0x20, 
39486
  0x33, 0x1D, 0x1C, 0x00, 0x3E, 0x1D, 0x00, 0x00, 0x19, 0x25, 0x1D, 0x00, 0x26, 0x26, 0x00, 0x00, 
39487
  0x47, 0x1D, 0x1F, 0x26, 0x19, 0x26, 0x1D, 0x00, 0x1D, 0x26, 0x11, 0x00, 0x38, 0x1D, 0x1F, 0x26, 
39488
  0x19, 0x27, 0x1D, 0x00, 0x3D, 0x1D, 0x27, 0x00, 0x29, 0x29, 0x01, 0x00, 0x21, 0x28, 0x29, 0x1D, 
39489
  0x1C, 0x28, 0x09, 0x00, 0x2A, 0x1D, 0x0A, 0x00, 0x2F, 0x1D, 0x00, 0x00, 0x32, 0x27, 0x00, 0x00, 
39490
  0x43, 0x1D, 0x00, 0x00, 0x30, 0x25, 0x1D, 0x00, 0x2A, 0x2A, 0x07, 0x00, 0x33, 0x29, 0x2A, 0x00, 
39491
  0x1A, 0x01, 0x00, 0x00, 0x47, 0x26, 0x1F, 0x26, 0x1A, 0xF0, 0xFF, 0xFF, 0x26, 0x26, 0x00, 0x00, 
39492
  0x47, 0x1D, 0x22, 0x26, 0x19, 0x26, 0x1D, 0x00, 0x1D, 0x26, 0x0D, 0x00, 0x38, 0x1D, 0x22, 0x26, 
39493
  0x19, 0x27, 0x26, 0x00, 0x19, 0x28, 0x1D, 0x00, 0x2A, 0x1D, 0x0A, 0x00, 0x30, 0x1D, 0x27, 0x00, 
39494
  0x32, 0x28, 0x00, 0x00, 0x43, 0x1D, 0x00, 0x00, 0x30, 0x25, 0x1D, 0x00, 0x2A, 0x2A, 0x07, 0x00, 
39495
  0x33, 0x29, 0x2A, 0x00, 0x47, 0x26, 0x22, 0x26, 0x1A, 0xF4, 0xFF, 0xFF, 0x2F, 0x25, 0x00, 0x00, 
39496
  0x2A, 0x26, 0x0B, 0x00, 0x33, 0x1D, 0x26, 0x00, 0x30, 0x24, 0x25, 0x00, 0x2A, 0x26, 0x0C, 0x00, 
39497
  0x33, 0x1D, 0x26, 0x00, 0x3E, 0x1D, 0x00, 0x00, 0x19, 0x26, 0x1D, 0x00, 0x2F, 0x1F, 0x00, 0x00, 
39498
  0x2A, 0x27, 0x0D, 0x00, 0x33, 0x1D, 0x27, 0x00, 0x2F, 0x1D, 0x00, 0x00, 0x2A, 0x28, 0x0B, 0x00, 
39499
  0x33, 0x27, 0x28, 0x00, 0x19, 0x1D, 0x27, 0x00, 0x26, 0x28, 0x00, 0x00, 0x47, 0x27, 0x1D, 0x28, 
39500
  0x19, 0x28, 0x27, 0x00, 0x1D, 0x28, 0x11, 0x00, 0x38, 0x27, 0x1D, 0x28, 0x3B, 0x29, 0x27, 0x00, 
39501
  0x19, 0x2A, 0x29, 0x00, 0x3B, 0x29, 0x27, 0x01, 0x19, 0x2B, 0x29, 0x00, 0x2F, 0x2B, 0x00, 0x00, 
39502
  0x2A, 0x29, 0x0E, 0x00, 0x33, 0x27, 0x29, 0x00, 0x2A, 0x29, 0x06, 0x00, 0x31, 0x29, 0x2A, 0x27, 
39503
  0x43, 0x27, 0x00, 0x00, 0x30, 0x26, 0x27, 0x00, 0x2A, 0x2C, 0x07, 0x00, 0x33, 0x29, 0x2C, 0x00, 
39504
  0x47, 0x28, 0x1D, 0x28, 0x1A, 0xF0, 0xFF, 0xFF, 0x2F, 0x23, 0x00, 0x00, 0x2A, 0x27, 0x0F, 0x00, 
39505
  0x33, 0x1D, 0x27, 0x00, 0x1C, 0x1D, 0x02, 0x00, 0x1A, 0x0E, 0x00, 0x00, 0x2A, 0x28, 0x09, 0x00, 
39506
  0x2F, 0x28, 0x00, 0x00, 0x32, 0x23, 0x00, 0x00, 0x43, 0x27, 0x00, 0x00, 0x2A, 0x29, 0x10, 0x00, 
39507
  0x2F, 0x29, 0x00, 0x00, 0x32, 0x26, 0x00, 0x00, 0x2F, 0x27, 0x00, 0x00, 0x43, 0x28, 0x00, 0x00, 
39508
  0x19, 0x27, 0x28, 0x00, 0x30, 0x24, 0x27, 0x00, 0x2A, 0x29, 0x07, 0x00, 0x33, 0x28, 0x29, 0x00, 
39509
  0x2F, 0x24, 0x00, 0x00, 0x2A, 0x27, 0x11, 0x00, 0x33, 0x1D, 0x27, 0x00, 0x2A, 0x27, 0x10, 0x00, 
39510
  0x2F, 0x27, 0x00, 0x00, 0x32, 0x26, 0x00, 0x00, 0x2F, 0x21, 0x00, 0x00, 0x43, 0x27, 0x00, 0x00, 
39511
  0x30, 0x1D, 0x27, 0x00, 0x33, 0x28, 0x14, 0x00, 0x47, 0x1E, 0x07, 0x1E, 0x1A, 0x80, 0xFF, 0xFF, 
39512
  0x2F, 0x06, 0x00, 0x00, 0x3E, 0x1D, 0x00, 0x00, 0x19, 0x1E, 0x1D, 0x00, 0x2F, 0x0C, 0x00, 0x00, 
39513
  0x2A, 0x20, 0x12, 0x00, 0x33, 0x1F, 0x20, 0x00, 0x19, 0x20, 0x1F, 0x00, 0x26, 0x21, 0x00, 0x00, 
39514
  0x47, 0x1F, 0x20, 0x21, 0x19, 0x21, 0x1F, 0x00, 0x1D, 0x21, 0x37, 0x00, 0x38, 0x1F, 0x20, 0x21, 
39515
  0x19, 0x22, 0x1F, 0x00, 0x2A, 0x23, 0x13, 0x00, 0x23, 0x1F, 0x23, 0x22, 0x1C, 0x1F, 0x2D, 0x00, 
39516
  0x2F, 0x1E, 0x00, 0x00, 0x2A, 0x24, 0x14, 0x00, 0x33, 0x23, 0x24, 0x00, 0x19, 0x24, 0x23, 0x00, 
39517
  0x2F, 0x1E, 0x00, 0x00, 0x2A, 0x25, 0x14, 0x00, 0x33, 0x23, 0x25, 0x00, 0x19, 0x25, 0x23, 0x00, 
39518
  0x3D, 0x23, 0x1E, 0x00, 0x19, 0x26, 0x23, 0x00, 0x24, 0x27, 0x26, 0x00, 0x1C, 0x27, 0x03, 0x00, 
39519
  0x26, 0x23, 0x00, 0x00, 0x1A, 0x11, 0x00, 0x00, 0x24, 0x29, 0x26, 0x01, 0x1C, 0x29, 0x06, 0x00, 
39520
  0x29, 0x2A, 0x00, 0x00, 0x2F, 0x2A, 0x00, 0x00, 0x33, 0x2A, 0x1E, 0x00, 0x19, 0x28, 0x2A, 0x00, 
39521
  0x1A, 0x09, 0x00, 0x00, 0x2F, 0x1E, 0x00, 0x00, 0x2A, 0x2B, 0x12, 0x00, 0x33, 0x2A, 0x2B, 0x00, 
39522
  0x2A, 0x2C, 0x10, 0x00, 0x2F, 0x2C, 0x00, 0x00, 0x32, 0x2A, 0x00, 0x00, 0x43, 0x2B, 0x00, 0x00, 
39523
  0x19, 0x28, 0x2B, 0x00, 0x19, 0x23, 0x28, 0x00, 0x2A, 0x27, 0x15, 0x00, 0x31, 0x27, 0x24, 0x25, 
39524
  0x2F, 0x23, 0x00, 0x00, 0x43, 0x26, 0x00, 0x00, 0x19, 0x23, 0x26, 0x00, 0x3D, 0x26, 0x1E, 0x00, 
39525
  0x29, 0x27, 0x00, 0x00, 0x31, 0x1E, 0x27, 0x26, 0x2A, 0x28, 0x16, 0x00, 0x33, 0x27, 0x28, 0x00, 
39526
  0x30, 0x1E, 0x23, 0x00, 0x2A, 0x27, 0x07, 0x00, 0x33, 0x26, 0x27, 0x00, 0x1A, 0x04, 0x00, 0x00, 
39527
  0x30, 0x1E, 0x22, 0x00, 0x2A, 0x24, 0x07, 0x00, 0x33, 0x23, 0x24, 0x00, 0x47, 0x21, 0x20, 0x21, 
39528
  0x1A, 0xCA, 0xFF, 0xFF, 0x2F, 0x1E, 0x00, 0x00, 0x2A, 0x20, 0x12, 0x00, 0x33, 0x1F, 0x20, 0x00, 
39529
  0x2A, 0x21, 0x10, 0x00, 0x2F, 0x21, 0x00, 0x00, 0x32, 0x1F, 0x00, 0x00, 0x43, 0x20, 0x00, 0x00, 
39530
  0x03, 0x20, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 
39531
  0x0C, 0xCE, 0x04, 0x65, 0x6D, 0x69, 0x74, 0xDA, 0x18, 0xDA, 0x81, 0x8C, 0xBF, 0xFF, 0x00, 0x00, 
39532
  0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0x47, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x88, 0x27, 
39533
  0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x88, 0x48, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0xAC, 0xBF, 0xFF, 
39534
  0x00, 0x07, 0xDA, 0x88, 0x49, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x88, 0x4A, 0xBF, 0xFF, 0x00, 0x0C, 
39535
  0xDA, 0x82, 0xDE, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x88, 0x4B, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x88, 
39536
  0x4C, 0x00, 0x04, 0x00, 0xDA, 0x1E, 0x00, 0x04, 0x01, 0xDA, 0x88, 0x4D, 0x2B, 0x02, 0x00, 0x0C, 
39537
  0x30, 0x02, 0x00, 0x00, 0x2A, 0x02, 0x00, 0x00, 0x34, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x87, 0x1C, 
39538
  0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x02, 0x02, 0x02, 
39539
  0x02, 0x06, 0x01, 0x0E, 0xCE, 0x0B, 0x65, 0x6D, 0x69, 0x74, 0x2D, 0x62, 0x72, 0x61, 0x6E, 0x63, 
39540
  0x68, 0xDA, 0x18, 0xDA, 0x88, 0x45, 0xDA, 0x81, 0x8C, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 
39541
  0xFF, 0x00, 0x01, 0xDA, 0x88, 0x47, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x88, 0x27, 0xBF, 0xFF, 0x00, 
39542
  0x03, 0xDA, 0x88, 0x48, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0xAC, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 
39543
  0x88, 0x49, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x88, 0x4A, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x82, 0xDE, 
39544
  0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x88, 0x4B, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x88, 0x4C, 0xBF, 0xFF, 
39545
  0x00, 0x12, 0xDA, 0x88, 0x4D, 0x00, 0x06, 0x00, 0xDA, 0x84, 0x0C, 0x00, 0x06, 0x01, 0xCF, 0x06, 
39546
  0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x00, 0x06, 0x02, 0xDA, 0x88, 0x4E, 0x2B, 0x03, 0x00, 0x0C, 
39547
  0x2A, 0x04, 0x00, 0x00, 0x31, 0x03, 0x04, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x2A, 0x03, 0x01, 0x00, 
39548
  0x34, 0x03, 0x00, 0x00, 0xBF, 0xFF, 0x87, 0x1D, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 
39549
  0x28, 0x00, 0x28, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x02, 0x02, 0x02, 0x03, 0x17, 0x01, 0x12, 
39550
  0xCE, 0x07, 0x67, 0x65, 0x74, 0x2D, 0x73, 0x79, 0x6D, 0xDA, 0x18, 0xDA, 0x49, 0xD7, 0x00, 0xCD, 
39551
  0x00, 0x08, 0x00, 0x1B, 0x04, 0x03, 0x02, 0x03, 0x00, 0x06, 0xCE, 0x03, 0x67, 0x65, 0x74, 0x39, 
39552
  0x00, 0x00, 0x01, 0x26, 0x03, 0x00, 0x00, 0x23, 0x03, 0x00, 0x03, 0x1B, 0x03, 0x02, 0x00, 0x03, 
39553
  0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0xDA, 0x4A, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 
39554
  0xFF, 0x00, 0x01, 0xDA, 0x88, 0x47, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x88, 0x27, 0xBF, 0xFF, 0x00, 
39555
  0x03, 0xDA, 0x88, 0x48, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0xAC, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 
39556
  0x88, 0x49, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x88, 0x4A, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x82, 0xDE, 
39557
  0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x88, 0x4B, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x88, 0x4C, 0xBF, 0xFF, 
39558
  0x00, 0x12, 0xDA, 0x88, 0x4D, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x88, 0x4E, 0x00, 0x17, 0x00, 0xCF, 
39559
  0x0A, 0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x2D, 0x73, 0x79, 0x6D, 0x00, 0x17, 0x01, 0xDA, 0x81, 
39560
  0xD2, 0x00, 0x17, 0x02, 0xDA, 0x88, 0x4F, 0x02, 0x17, 0x04, 0xCF, 0x0A, 0x73, 0x79, 0x6D, 0x62, 
39561
  0x6F, 0x6C, 0x2D, 0x6B, 0x65, 0x79, 0x05, 0x17, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
39562
  0x32, 0x59, 0x0A, 0x17, 0x07, 0xDA, 0x80, 0xFF, 0x30, 0x00, 0x01, 0x00, 0x43, 0x03, 0x00, 0x00, 
39563
  0x19, 0x04, 0x03, 0x00, 0x2B, 0x06, 0x00, 0x0E, 0x39, 0x05, 0x06, 0x04, 0x19, 0x06, 0x05, 0x00, 
39564
  0x1C, 0x06, 0x02, 0x00, 0x03, 0x06, 0x00, 0x00, 0x2A, 0x07, 0x00, 0x00, 0x33, 0x05, 0x07, 0x00, 
39565
  0x19, 0x07, 0x05, 0x00, 0x2B, 0x05, 0x00, 0x0E, 0x3A, 0x05, 0x04, 0x07, 0x2A, 0x05, 0x01, 0x00, 
39566
  0x31, 0x05, 0x00, 0x01, 0x43, 0x05, 0x00, 0x00, 0x2A, 0x08, 0x02, 0x00, 0x31, 0x08, 0x07, 0x05, 
39567
  0x43, 0x05, 0x00, 0x00, 0x2F, 0x05, 0x00, 0x00, 0x2B, 0x09, 0x00, 0x12, 0x33, 0x08, 0x09, 0x00, 
39568
  0x03, 0x07, 0x00, 0x00, 0xBF, 0xFF, 0x87, 0x21, 0x15, 0x00, 0x15, 0x00, 0x05, 0x01, 0x09, 0x00, 
39569
  0x09, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x11, 0x00, 0x11, 0x00, 0x09, 0x01, 0x0B, 0x00, 
39570
  0x0B, 0x01, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0B, 0x00, 
39571
  0x0B, 0x00, 0x0B, 0xBF, 0xFE, 0x09, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x01, 0x01, 0x01, 0x05, 
39572
  0x1A, 0x01, 0x11, 0xCE, 0x0E, 0x67, 0x65, 0x74, 0x2D, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x2D, 
39573
  0x73, 0x79, 0x6D, 0xDA, 0x18, 0xDA, 0x49, 0xDA, 0x82, 0x20, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 
39574
  0x08, 0x01, 0x01, 0x01, 0x01, 0x00, 0x02, 0xCE, 0x06, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3D, 
39575
  0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xDA, 0x4F, 0xDA, 0x4A, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 
39576
  0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0x47, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x88, 0x27, 0xBF, 
39577
  0xFF, 0x00, 0x03, 0xDA, 0x88, 0x48, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0xAC, 0xBF, 0xFF, 0x00, 
39578
  0x07, 0xDA, 0x88, 0x49, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x88, 0x4A, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 
39579
  0x82, 0xDE, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x88, 0x4B, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x88, 0x4C, 
39580
  0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x88, 0x4D, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x88, 0x4E, 0xBF, 0xFF, 
39581
  0x00, 0x16, 0xDA, 0x88, 0x4F, 0x00, 0x1A, 0x00, 0xDA, 0x88, 0x71, 0x00, 0x1A, 0x01, 0xDA, 0x88, 
39582
  0x50, 0x02, 0x1A, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x5A, 0x07, 0x1A, 0x04, 
39583
  0xDA, 0x80, 0xFF, 0x2B, 0x03, 0x00, 0x10, 0x39, 0x02, 0x03, 0x00, 0x19, 0x03, 0x02, 0x00, 0x1C, 
39584
  0x03, 0x02, 0x00, 0x03, 0x03, 0x00, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x33, 0x02, 0x04, 0x00, 0x19, 
39585
  0x04, 0x02, 0x00, 0x2B, 0x02, 0x00, 0x10, 0x3A, 0x02, 0x00, 0x04, 0x2A, 0x02, 0x01, 0x00, 0x30, 
39586
  0x02, 0x00, 0x00, 0x43, 0x02, 0x00, 0x00, 0x2A, 0x05, 0x02, 0x00, 0x30, 0x05, 0x00, 0x00, 0x43, 
39587
  0x05, 0x00, 0x00, 0x2A, 0x06, 0x03, 0x00, 0x31, 0x06, 0x02, 0x05, 0x43, 0x02, 0x00, 0x00, 0x2A, 
39588
  0x05, 0x04, 0x00, 0x31, 0x05, 0x04, 0x02, 0x43, 0x02, 0x00, 0x00, 0x2F, 0x02, 0x00, 0x00, 0x2B, 
39589
  0x06, 0x00, 0x12, 0x33, 0x05, 0x06, 0x00, 0x03, 0x04, 0x00, 0x00, 0xBF, 0xFF, 0x87, 0x2A, 0x09, 
39590
  0x00, 0x09, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x11, 0x00, 0x11, 0x00, 0x09, 0x01, 0x0B, 
39591
  0x00, 0x0B, 0x01, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x19, 
39592
  0x00, 0x19, 0x00, 0x19, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
39593
  0xBF, 0xFE, 0x09, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x17, 0x04, 0x04, 0x04, 0x13, 0x80, 0xD5, 0x01, 
39594
  0x28, 0xCE, 0x0F, 0x76, 0x69, 0x73, 0x69, 0x74, 0x2D, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 
39595
  0x2D, 0x31, 0xDA, 0x18, 0xDA, 0x80, 0xC0, 0xDA, 0x2C, 0xDA, 0x5D, 0xDA, 0x80, 0x8B, 0xDA, 0x81, 
39596
  0x84, 0xDA, 0x81, 0x85, 0xDA, 0x2E, 0xDA, 0x81, 0x8C, 0xDA, 0x84, 0xF2, 0xDA, 0x80, 0x89, 0xDA, 
39597
  0x80, 0x8A, 0xDA, 0x82, 0xBC, 0xDA, 0x74, 0xCE, 0x26, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 
39598
  0x64, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 
39599
  0x6E, 0x67, 0x20, 0x26, 0x20, 0x69, 0x6E, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0xDA, 
39600
  0x80, 0xA8, 0xDA, 0x87, 0xDA, 0xCE, 0x37, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 
39601
  0x61, 0x20, 0x73, 0x69, 0x6E, 0x67, 0x6C, 0x65, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 
39602
  0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x27, 0x26, 0x20, 0x69, 0x6E, 0x20, 0x70, 0x61, 0x74, 
39603
  0x74, 0x65, 0x72, 0x6E, 0x2C, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x25, 0x71, 0xCE, 0x30, 
39604
  0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 
39605
  0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x69, 0x6E, 0x20, 0x70, 
39606
  0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x2C, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x25, 0x71, 
39607
  0xCF, 0x01, 0x40, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0x47, 
39608
  0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x88, 0x27, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x88, 0x48, 0xBF, 0xFF, 
39609
  0x00, 0x06, 0xDA, 0x87, 0xAC, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x88, 0x49, 0xBF, 0xFF, 0x00, 0x0A, 
39610
  0xDA, 0x88, 0x4A, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x82, 0xDE, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x88, 
39611
  0x4B, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x88, 0x4C, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x88, 0x4D, 0xBF, 
39612
  0xFF, 0x00, 0x14, 0xDA, 0x88, 0x4E, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x88, 0x4F, 0xBF, 0xFF, 0x00, 
39613
  0x18, 0xDA, 0x88, 0x50, 0x00, 0x80, 0xD5, 0x00, 0xDA, 0x88, 0x57, 0x00, 0x80, 0xD5, 0x01, 0xDA, 
39614
  0x88, 0x71, 0x00, 0x80, 0xD5, 0x02, 0xDA, 0x81, 0xD2, 0x00, 0x80, 0xD5, 0x03, 0xDA, 0x88, 0x55, 
39615
  0x00, 0x80, 0xD5, 0x04, 0xDA, 0x88, 0x51, 0x09, 0x80, 0xD5, 0x06, 0xDA, 0x80, 0xFF, 0x0D, 0x80, 
39616
  0xD5, 0x08, 0xDA, 0x31, 0x10, 0x21, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x30, 
39617
  0x16, 0x20, 0x0D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x31, 0x21, 0x80, 0xD5, 0x0A, 
39618
  0xCF, 0x05, 0x69, 0x73, 0x61, 0x72, 0x72, 0x26, 0x30, 0x0D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
39619
  0x30, 0x33, 0x32, 0x27, 0x2B, 0x0D, 0xDA, 0x1E, 0x32, 0x44, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
39620
  0x30, 0x30, 0x33, 0x34, 0x37, 0x41, 0x10, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x33, 
39621
  0x48, 0x4F, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x35, 0x4F, 0x5D, 0x03, 0xCF, 
39622
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x37, 0x52, 0x5D, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
39623
  0x30, 0x30, 0x33, 0x36, 0x55, 0x5C, 0x10, 0xDA, 0x80, 0x90, 0x56, 0x5C, 0x11, 0xCF, 0x0B, 0x73, 
39624
  0x75, 0x62, 0x2D, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x60, 0x80, 0xAD, 0x03, 0xCF, 0x07, 
39625
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x39, 0x63, 0x80, 0xAD, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
39626
  0x30, 0x30, 0x33, 0x38, 0x66, 0x80, 0xAC, 0x10, 0xDA, 0x80, 0x90, 0x67, 0x80, 0xAC, 0x11, 0xDA, 
39627
  0x88, 0x86, 0x80, 0xAF, 0x80, 0xC1, 0x10, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x62, 
39628
  0x80, 0xB4, 0x80, 0xBE, 0x12, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x61, 0x80, 0xC5, 
39629
  0x80, 0xCD, 0x11, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x63, 0x2C, 0x04, 0x00, 0x00, 
39630
  0x2A, 0x06, 0x00, 0x00, 0x23, 0x05, 0x03, 0x06, 0x1C, 0x05, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 
39631
  0x1A, 0x01, 0x00, 0x00, 0x30, 0x01, 0x02, 0x00, 0x2B, 0x06, 0x00, 0x16, 0x33, 0x05, 0x06, 0x00, 
39632
  0x19, 0x06, 0x05, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x08, 0x01, 0x00, 0x33, 0x07, 0x08, 0x00, 
39633
  0x19, 0x08, 0x07, 0x00, 0x2A, 0x0A, 0x02, 0x00, 0x23, 0x09, 0x08, 0x0A, 0x19, 0x0A, 0x09, 0x00, 
39634
  0x1C, 0x0A, 0x03, 0x00, 0x19, 0x09, 0x0A, 0x00, 0x1A, 0x0E, 0x00, 0x00, 0x2A, 0x0D, 0x03, 0x00, 
39635
  0x23, 0x0C, 0x08, 0x0D, 0x19, 0x0D, 0x0C, 0x00, 0x1C, 0x0C, 0x08, 0x00, 0x2F, 0x03, 0x00, 0x00, 
39636
  0x2A, 0x0F, 0x04, 0x00, 0x33, 0x0E, 0x0F, 0x00, 0x2A, 0x10, 0x05, 0x00, 0x23, 0x0F, 0x0E, 0x10, 
39637
  0x19, 0x0B, 0x0F, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x0B, 0x0D, 0x00, 0x19, 0x09, 0x0B, 0x00, 
39638
  0x19, 0x0A, 0x09, 0x00, 0x2A, 0x0C, 0x06, 0x00, 0x23, 0x0B, 0x08, 0x0C, 0x1C, 0x0B, 0x0C, 0x00, 
39639
  0x38, 0x0C, 0x00, 0x03, 0x19, 0x0D, 0x0C, 0x00, 0x1C, 0x0D, 0x04, 0x00, 0x30, 0x0D, 0x06, 0x00, 
39640
  0x2A, 0x0C, 0x07, 0x00, 0x34, 0x0C, 0x00, 0x00, 0x2F, 0x06, 0x00, 0x00, 0x3E, 0x0C, 0x00, 0x00, 
39641
  0x19, 0x0E, 0x00, 0x00, 0x3A, 0x0E, 0x03, 0x0C, 0x03, 0x0E, 0x00, 0x00, 0x2A, 0x0E, 0x03, 0x00, 
39642
  0x23, 0x0D, 0x08, 0x0E, 0x19, 0x0E, 0x0D, 0x00, 0x1C, 0x0D, 0x10, 0x00, 0x3D, 0x10, 0x03, 0x00, 
39643
  0x29, 0x12, 0x02, 0x00, 0x23, 0x11, 0x12, 0x10, 0x19, 0x10, 0x11, 0x00, 0x1C, 0x11, 0x08, 0x00, 
39644
  0x29, 0x12, 0x00, 0x00, 0x2F, 0x12, 0x00, 0x00, 0x33, 0x12, 0x03, 0x00, 0x2A, 0x14, 0x08, 0x00, 
39645
  0x23, 0x13, 0x14, 0x12, 0x19, 0x0F, 0x13, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x0F, 0x10, 0x00, 
39646
  0x19, 0x0C, 0x0F, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x0C, 0x0E, 0x00, 0x1C, 0x0C, 0x02, 0x00, 
39647
  0x04, 0x00, 0x00, 0x00, 0x2A, 0x0E, 0x09, 0x00, 0x23, 0x0D, 0x08, 0x0E, 0x19, 0x0E, 0x0D, 0x00, 
39648
  0x1C, 0x0E, 0x03, 0x00, 0x19, 0x0D, 0x0E, 0x00, 0x1A, 0x04, 0x00, 0x00, 0x2A, 0x10, 0x0A, 0x00, 
39649
  0x23, 0x0F, 0x08, 0x10, 0x19, 0x0D, 0x0F, 0x00, 0x1C, 0x0D, 0x0E, 0x00, 0x26, 0x0F, 0x00, 0x00, 
39650
  0x47, 0x0E, 0x03, 0x0F, 0x19, 0x0F, 0x0E, 0x00, 0x1D, 0x0F, 0x09, 0x00, 0x38, 0x0E, 0x03, 0x0F, 
39651
  0x19, 0x10, 0x0F, 0x00, 0x19, 0x11, 0x0E, 0x00, 0x31, 0x00, 0x06, 0x10, 0x2F, 0x11, 0x00, 0x00, 
39652
  0x33, 0x0E, 0x04, 0x00, 0x47, 0x0F, 0x03, 0x0F, 0x1A, 0xF8, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 
39653
  0x1C, 0x0A, 0x50, 0x00, 0x2F, 0x06, 0x00, 0x00, 0x2B, 0x0F, 0x00, 0x18, 0x33, 0x0E, 0x0F, 0x00, 
39654
  0x26, 0x0F, 0x00, 0x00, 0x47, 0x0E, 0x03, 0x0F, 0x19, 0x0F, 0x0E, 0x00, 0x1D, 0x0F, 0x48, 0x00, 
39655
  0x38, 0x0E, 0x03, 0x0F, 0x19, 0x10, 0x0F, 0x00, 0x19, 0x11, 0x0E, 0x00, 0x2A, 0x12, 0x0B, 0x00, 
39656
  0x23, 0x0E, 0x11, 0x12, 0x1C, 0x0E, 0x3D, 0x00, 0x3D, 0x12, 0x03, 0x00, 0x2F, 0x10, 0x00, 0x00, 
39657
  0x2A, 0x14, 0x0C, 0x00, 0x33, 0x13, 0x14, 0x00, 0x46, 0x14, 0x12, 0x13, 0x1C, 0x14, 0x06, 0x00, 
39658
  0x2A, 0x12, 0x0D, 0x00, 0x2F, 0x12, 0x00, 0x00, 0x2A, 0x13, 0x0E, 0x00, 0x33, 0x12, 0x13, 0x00, 
39659
  0x1A, 0x01, 0x00, 0x00, 0x05, 0x12, 0x10, 0x02, 0x3D, 0x13, 0x03, 0x00, 0x21, 0x14, 0x12, 0x13, 
39660
  0x1C, 0x14, 0x0C, 0x00, 0x2F, 0x10, 0x00, 0x00, 0x2A, 0x13, 0x0C, 0x00, 0x33, 0x12, 0x13, 0x00, 
39661
  0x30, 0x03, 0x12, 0x00, 0x2A, 0x15, 0x0F, 0x00, 0x33, 0x13, 0x15, 0x00, 0x2A, 0x12, 0x10, 0x00, 
39662
  0x30, 0x12, 0x13, 0x00, 0x2A, 0x15, 0x0E, 0x00, 0x33, 0x12, 0x15, 0x00, 0x1A, 0x01, 0x00, 0x00, 
39663
  0x2F, 0x10, 0x00, 0x00, 0x2A, 0x13, 0x0C, 0x00, 0x33, 0x12, 0x13, 0x00, 0x2F, 0x12, 0x00, 0x00, 
39664
  0x33, 0x13, 0x03, 0x00, 0x2F, 0x13, 0x00, 0x00, 0x2A, 0x14, 0x01, 0x00, 0x33, 0x12, 0x14, 0x00, 
39665
  0x2A, 0x14, 0x06, 0x00, 0x48, 0x13, 0x12, 0x14, 0x1C, 0x13, 0x0B, 0x00, 0x2F, 0x10, 0x00, 0x00, 
39666
  0x2A, 0x14, 0x0C, 0x00, 0x33, 0x12, 0x14, 0x00, 0x2F, 0x12, 0x00, 0x00, 0x33, 0x14, 0x03, 0x00, 
39667
  0x2A, 0x12, 0x11, 0x00, 0x30, 0x12, 0x14, 0x00, 0x2A, 0x15, 0x0E, 0x00, 0x33, 0x12, 0x15, 0x00, 
39668
  0x1A, 0x01, 0x00, 0x00, 0x2F, 0x10, 0x00, 0x00, 0x2A, 0x13, 0x0C, 0x00, 0x33, 0x12, 0x13, 0x00, 
39669
  0x2F, 0x12, 0x00, 0x00, 0x33, 0x13, 0x03, 0x00, 0x2A, 0x12, 0x0F, 0x00, 0x31, 0x12, 0x06, 0x10, 
39670
  0x43, 0x12, 0x00, 0x00, 0x2F, 0x12, 0x00, 0x00, 0x3E, 0x12, 0x00, 0x00, 0x3A, 0x00, 0x13, 0x12, 
39671
  0x1A, 0x07, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x31, 0x00, 0x06, 0x10, 0x2F, 0x11, 0x00, 0x00, 
39672
  0x33, 0x0E, 0x04, 0x00, 0x47, 0x0F, 0x03, 0x0F, 0x1A, 0xB9, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 
39673
  0x2A, 0x10, 0x03, 0x00, 0x23, 0x0F, 0x08, 0x10, 0x19, 0x10, 0x0F, 0x00, 0x1C, 0x0F, 0x10, 0x00, 
39674
  0x3D, 0x12, 0x03, 0x00, 0x29, 0x14, 0x02, 0x00, 0x23, 0x13, 0x14, 0x12, 0x19, 0x12, 0x13, 0x00, 
39675
  0x1C, 0x13, 0x08, 0x00, 0x29, 0x14, 0x00, 0x00, 0x2F, 0x14, 0x00, 0x00, 0x33, 0x14, 0x03, 0x00, 
39676
  0x2A, 0x16, 0x12, 0x00, 0x23, 0x15, 0x16, 0x14, 0x19, 0x11, 0x15, 0x00, 0x1A, 0x02, 0x00, 0x00, 
39677
  0x19, 0x11, 0x12, 0x00, 0x19, 0x0E, 0x11, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x0E, 0x10, 0x00, 
39678
  0x1C, 0x0E, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2A, 0x11, 0x03, 0x00, 0x23, 0x10, 0x08, 0x11, 
39679
  0x19, 0x11, 0x10, 0x00, 0x1C, 0x10, 0x06, 0x00, 0x3D, 0x12, 0x03, 0x00, 0x29, 0x14, 0x02, 0x00, 
39680
  0x45, 0x13, 0x12, 0x14, 0x19, 0x0F, 0x13, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x0F, 0x11, 0x00, 
39681
  0x1C, 0x0F, 0x07, 0x00, 0x29, 0x10, 0x00, 0x00, 0x2F, 0x10, 0x00, 0x00, 0x33, 0x10, 0x03, 0x00, 
39682
  0x31, 0x00, 0x01, 0x02, 0x2F, 0x10, 0x00, 0x00, 0x34, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 
39683
  0xBF, 0xFF, 0x87, 0x30, 0x03, 0x02, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x18, 0x00, 0x05, 0x01, 
39684
  0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 
39685
  0x14, 0x00, 0x14, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x26, 0x00, 0x26, 0x00, 
39686
  0x21, 0x00, 0x21, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x33, 0x00, 0x33, 0x00, 0x21, 0x00, 
39687
  0x21, 0x00, 0x21, 0x00, 0x10, 0x00, 0x05, 0x04, 0x07, 0x00, 0x07, 0xBF, 0xFD, 0x05, 0x04, 0x12, 
39688
  0x00, 0x07, 0x00, 0x07, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 
39689
  0x00, 0x09, 0x00, 0x09, 0x03, 0x0C, 0x00, 0x0C, 0x00, 0x07, 0x00, 0x07, 0x00, 0x1E, 0x00, 0x19, 
39690
  0x00, 0x19, 0x00, 0x07, 0x00, 0x07, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x30, 0x00, 0x30, 
39691
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xF7, 0x05, 0x0A, 
39692
  0x07, 0x03, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x19, 0x00, 
39693
  0x19, 0x00, 0x07, 0xBF, 0xF3, 0x05, 0x0E, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
39694
  0x00, 0x07, 0x00, 0x07, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x00, 
39695
  0x07, 0xBF, 0xF2, 0x05, 0x13, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 
39696
  0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x11, 0x00, 0x11, 0x00, 0x0B, 0x01, 0x17, 
39697
  0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x13, 0x00, 0x0D, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
39698
  0x00, 0x0F, 0xBF, 0xFF, 0x0D, 0x03, 0x16, 0x00, 0x1E, 0x00, 0x13, 0x00, 0x0D, 0x01, 0x60, 0x00, 
39699
  0x60, 0x00, 0x60, 0x00, 0x51, 0x00, 0x51, 0x00, 0x51, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
39700
  0x0F, 0xBF, 0xFF, 0x0D, 0x03, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x19, 
39701
  0x00, 0x19, 0x00, 0x19, 0x00, 0x13, 0x00, 0x13, 0x00, 0x0D, 0x01, 0x53, 0x00, 0x53, 0x00, 0x53, 
39702
  0x00, 0x4A, 0x00, 0x4A, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 0xFF, 0x0D, 0x03, 
39703
  0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x16, 0x00, 0x16, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 
39704
  0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x0D, 0xBF, 0xF5, 0x0B, 0x0C, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
39705
  0xBF, 0xF3, 0x09, 0x00, 0x09, 0x00, 0x09, 0x10, 0x0C, 0x00, 0x0C, 0x00, 0x07, 0x00, 0x07, 0x00, 
39706
  0x1E, 0x00, 0x19, 0x00, 0x19, 0x00, 0x07, 0x00, 0x07, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 
39707
  0x30, 0x00, 0x30, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 
39708
  0xDC, 0x05, 0x25, 0x07, 0x03, 0x0C, 0x00, 0x0C, 0x00, 0x07, 0x00, 0x07, 0x00, 0x1D, 0x00, 0x19, 
39709
  0x00, 0x19, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xD8, 0x05, 0x2A, 0x2D, 0x00, 0x2D, 0x00, 
39710
  0x2D, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xD6, 0x05, 0xCD, 0x00, 0xFC, 0x00, 0x00, 0x19, 
39711
  0x06, 0x06, 0x06, 0x12, 0x80, 0xD6, 0x01, 0x01, 0x2E, 0xCE, 0x0F, 0x76, 0x69, 0x73, 0x69, 0x74, 
39712
  0x2D, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x2D, 0x32, 0xDA, 0x18, 0xDA, 0x80, 0xC0, 0xDA, 
39713
  0x2C, 0xDA, 0x5D, 0xDA, 0x80, 0x8B, 0xDA, 0x81, 0x84, 0xDA, 0x81, 0x85, 0xDA, 0x81, 0x8C, 0xDA, 
39714
  0x84, 0xCD, 0xDA, 0x87, 0x98, 0xDA, 0x80, 0x89, 0xDA, 0x80, 0x8A, 0xDA, 0x82, 0xB2, 0xDA, 0x82, 
39715
  0xBC, 0xDA, 0x2E, 0xDA, 0x84, 0xF2, 0xDA, 0x82, 0xD0, 0xDA, 0x88, 0x7C, 0xDA, 0x87, 0xDA, 0xBF, 
39716
  0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0x47, 0xBF, 0xFF, 0x00, 0x02, 
39717
  0xDA, 0x88, 0x27, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x88, 0x48, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 
39718
  0xAC, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x88, 0x49, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x88, 0x4A, 0xBF, 
39719
  0xFF, 0x00, 0x0C, 0xDA, 0x82, 0xDE, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x88, 0x4B, 0xBF, 0xFF, 0x00, 
39720
  0x10, 0xDA, 0x88, 0x4C, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x88, 0x4D, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 
39721
  0x88, 0x4E, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x88, 0x4F, 0xBF, 0xFF, 0x00, 0x18, 0xDA, 0x88, 0x50, 
39722
  0xBF, 0xFF, 0x00, 0x1A, 0xDA, 0x88, 0x51, 0x00, 0x80, 0xD6, 0x00, 0xDA, 0x88, 0x5A, 0x00, 0x80, 
39723
  0xD6, 0x01, 0xDA, 0x88, 0x58, 0x00, 0x80, 0xD6, 0x02, 0xDA, 0x88, 0x59, 0x00, 0x80, 0xD6, 0x03, 
39724
  0xDA, 0x88, 0x71, 0x00, 0x80, 0xD6, 0x04, 0xDA, 0x81, 0xD2, 0x00, 0x80, 0xD6, 0x05, 0xDA, 0x88, 
39725
  0x55, 0x00, 0x80, 0xD6, 0x06, 0xDA, 0x88, 0x52, 0x09, 0x80, 0xD6, 0x08, 0xDA, 0x80, 0xFF, 0x0D, 
39726
  0x80, 0xD6, 0x0A, 0xDA, 0x31, 0x10, 0x21, 0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 
39727
  0x64, 0x16, 0x20, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x65, 0x21, 0x80, 0xD6, 
39728
  0x0C, 0xDA, 0x88, 0x7F, 0x2D, 0x33, 0x0D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x66, 
39729
  0x2E, 0x2F, 0x0D, 0xCF, 0x08, 0x72, 0x65, 0x73, 0x74, 0x2D, 0x69, 0x64, 0x78, 0x33, 0x3D, 0x0D, 
39730
  0xCF, 0x0B, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x2D, 0x6C, 0x65, 0x6E, 0x40, 0x47, 0x0E, 
39731
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x67, 0x47, 0x5F, 0x05, 0xCF, 0x07, 0x5F, 0x30, 
39732
  0x30, 0x30, 0x30, 0x33, 0x69, 0x4A, 0x5F, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 
39733
  0x68, 0x4D, 0x5E, 0x10, 0xDA, 0x80, 0x90, 0x4E, 0x5E, 0x11, 0xDA, 0x88, 0x86, 0x5F, 0x72, 0x05, 
39734
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x6B, 0x62, 0x72, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 
39735
  0x30, 0x30, 0x30, 0x33, 0x6A, 0x65, 0x71, 0x10, 0xDA, 0x80, 0x90, 0x66, 0x71, 0x11, 0xDA, 0x88, 
39736
  0x86, 0x78, 0x80, 0x8A, 0x11, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x6D, 0x7D, 0x80, 
39737
  0x87, 0x13, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x6C, 0x80, 0x93, 0x80, 0xA5, 0x12, 
39738
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x6F, 0x80, 0x98, 0x80, 0xA2, 0x14, 0xCF, 0x07, 
39739
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x6E, 0x80, 0xAA, 0x80, 0xB7, 0x11, 0xCF, 0x07, 0x5F, 0x30, 
39740
  0x30, 0x30, 0x30, 0x33, 0x70, 0x80, 0xAB, 0x80, 0xAF, 0x11, 0xDA, 0x1E, 0x80, 0xB9, 0x80, 0xC1, 
39741
  0x13, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x71, 0x2C, 0x06, 0x00, 0x00, 0x2A, 0x08, 
39742
  0x00, 0x00, 0x23, 0x07, 0x05, 0x08, 0x1C, 0x07, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1A, 0x01, 
39743
  0x00, 0x00, 0x30, 0x03, 0x04, 0x00, 0x2B, 0x08, 0x00, 0x16, 0x33, 0x07, 0x08, 0x00, 0x19, 0x08, 
39744
  0x07, 0x00, 0x2F, 0x05, 0x00, 0x00, 0x2A, 0x0A, 0x01, 0x00, 0x33, 0x09, 0x0A, 0x00, 0x19, 0x0A, 
39745
  0x09, 0x00, 0x2A, 0x0C, 0x02, 0x00, 0x23, 0x0B, 0x0A, 0x0C, 0x19, 0x0C, 0x0B, 0x00, 0x1C, 0x0C, 
39746
  0x03, 0x00, 0x19, 0x0B, 0x0C, 0x00, 0x1A, 0x0E, 0x00, 0x00, 0x2A, 0x0F, 0x03, 0x00, 0x23, 0x0E, 
39747
  0x0A, 0x0F, 0x19, 0x0F, 0x0E, 0x00, 0x1C, 0x0E, 0x08, 0x00, 0x2F, 0x05, 0x00, 0x00, 0x2A, 0x11, 
39748
  0x04, 0x00, 0x33, 0x10, 0x11, 0x00, 0x2A, 0x12, 0x05, 0x00, 0x23, 0x11, 0x10, 0x12, 0x19, 0x0D, 
39749
  0x11, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x0D, 0x0F, 0x00, 0x19, 0x0B, 0x0D, 0x00, 0x19, 0x0C, 
39750
  0x0B, 0x00, 0x1C, 0x0C, 0x1C, 0x00, 0x2F, 0x08, 0x00, 0x00, 0x2B, 0x0E, 0x00, 0x18, 0x33, 0x0D, 
39751
  0x0E, 0x00, 0x30, 0x00, 0x0D, 0x00, 0x2A, 0x0F, 0x06, 0x00, 0x33, 0x0E, 0x0F, 0x00, 0x2E, 0x0D, 
39752
  0x00, 0x00, 0x30, 0x0D, 0x05, 0x00, 0x2A, 0x0F, 0x07, 0x00, 0x33, 0x0E, 0x0F, 0x00, 0x19, 0x0D, 
39753
  0x0E, 0x00, 0x1C, 0x0D, 0x03, 0x00, 0x19, 0x0E, 0x0D, 0x00, 0x1A, 0x03, 0x00, 0x00, 0x3D, 0x0F, 
39754
  0x05, 0x00, 0x19, 0x0E, 0x0F, 0x00, 0x19, 0x0D, 0x0E, 0x00, 0x2F, 0x08, 0x00, 0x00, 0x2B, 0x0F, 
39755
  0x00, 0x18, 0x33, 0x0E, 0x0F, 0x00, 0x2A, 0x0F, 0x08, 0x00, 0x31, 0x0F, 0x0D, 0x0E, 0x43, 0x0E, 
39756
  0x00, 0x00, 0x30, 0x00, 0x0E, 0x00, 0x2A, 0x10, 0x06, 0x00, 0x33, 0x0F, 0x10, 0x00, 0x1A, 0x01, 
39757
  0x00, 0x00, 0x2A, 0x0E, 0x09, 0x00, 0x23, 0x0D, 0x0A, 0x0E, 0x19, 0x0E, 0x0D, 0x00, 0x1C, 0x0E, 
39758
  0x03, 0x00, 0x19, 0x0D, 0x0E, 0x00, 0x1A, 0x04, 0x00, 0x00, 0x2A, 0x10, 0x0A, 0x00, 0x23, 0x0F, 
39759
  0x0A, 0x10, 0x19, 0x0D, 0x0F, 0x00, 0x1C, 0x0D, 0x18, 0x00, 0x26, 0x0F, 0x00, 0x00, 0x47, 0x0E, 
39760
  0x05, 0x0F, 0x19, 0x0F, 0x0E, 0x00, 0x1D, 0x0F, 0x13, 0x00, 0x38, 0x0E, 0x05, 0x0F, 0x19, 0x10, 
39761
  0x0F, 0x00, 0x19, 0x11, 0x0E, 0x00, 0x30, 0x08, 0x10, 0x00, 0x2B, 0x12, 0x00, 0x16, 0x33, 0x0E, 
39762
  0x12, 0x00, 0x2A, 0x12, 0x0B, 0x00, 0x26, 0x13, 0x00, 0x00, 0x31, 0x12, 0x13, 0x0E, 0x43, 0x0E, 
39763
  0x00, 0x00, 0x30, 0x00, 0x0E, 0x00, 0x2A, 0x13, 0x06, 0x00, 0x33, 0x12, 0x13, 0x00, 0x31, 0x00, 
39764
  0x01, 0x02, 0x31, 0x08, 0x10, 0x11, 0x33, 0x0E, 0x06, 0x00, 0x47, 0x0F, 0x05, 0x0F, 0x1A, 0xEE, 
39765
  0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x1C, 0x0C, 0x13, 0x00, 0x26, 0x0F, 0x00, 0x00, 0x47, 0x0E, 
39766
  0x05, 0x0F, 0x19, 0x0F, 0x0E, 0x00, 0x1D, 0x0F, 0x0E, 0x00, 0x38, 0x0E, 0x05, 0x0F, 0x19, 0x10, 
39767
  0x0F, 0x00, 0x19, 0x11, 0x0E, 0x00, 0x2A, 0x12, 0x0C, 0x00, 0x23, 0x0E, 0x11, 0x12, 0x1C, 0x0E, 
39768
  0x03, 0x00, 0x1A, 0x07, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x31, 0x00, 0x01, 0x02, 0x31, 0x08, 
39769
  0x10, 0x11, 0x33, 0x0E, 0x06, 0x00, 0x47, 0x0F, 0x05, 0x0F, 0x1A, 0xF3, 0xFF, 0xFF, 0x04, 0x00, 
39770
  0x00, 0x00, 0x2A, 0x0F, 0x0D, 0x00, 0x23, 0x0E, 0x0A, 0x0F, 0x1C, 0x0E, 0x02, 0x00, 0x04, 0x00, 
39771
  0x00, 0x00, 0x2A, 0x11, 0x03, 0x00, 0x23, 0x10, 0x0A, 0x11, 0x19, 0x11, 0x10, 0x00, 0x1C, 0x10, 
39772
  0x10, 0x00, 0x3D, 0x13, 0x05, 0x00, 0x29, 0x15, 0x02, 0x00, 0x23, 0x14, 0x15, 0x13, 0x19, 0x13, 
39773
  0x14, 0x00, 0x1C, 0x14, 0x08, 0x00, 0x29, 0x15, 0x00, 0x00, 0x2F, 0x15, 0x00, 0x00, 0x33, 0x15, 
39774
  0x05, 0x00, 0x2A, 0x17, 0x0E, 0x00, 0x23, 0x16, 0x17, 0x15, 0x19, 0x12, 0x16, 0x00, 0x1A, 0x02, 
39775
  0x00, 0x00, 0x19, 0x12, 0x13, 0x00, 0x19, 0x0F, 0x12, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x0F, 
39776
  0x11, 0x00, 0x1C, 0x0F, 0x07, 0x00, 0x2A, 0x10, 0x0F, 0x00, 0x31, 0x10, 0x08, 0x05, 0x43, 0x10, 
39777
  0x00, 0x00, 0x30, 0x00, 0x10, 0x00, 0x2A, 0x11, 0x06, 0x00, 0x34, 0x11, 0x00, 0x00, 0x2A, 0x12, 
39778
  0x03, 0x00, 0x23, 0x11, 0x0A, 0x12, 0x19, 0x12, 0x11, 0x00, 0x1C, 0x11, 0x10, 0x00, 0x3D, 0x14, 
39779
  0x05, 0x00, 0x29, 0x16, 0x02, 0x00, 0x23, 0x15, 0x16, 0x14, 0x19, 0x14, 0x15, 0x00, 0x1C, 0x15, 
39780
  0x08, 0x00, 0x29, 0x16, 0x00, 0x00, 0x2F, 0x16, 0x00, 0x00, 0x33, 0x16, 0x05, 0x00, 0x2A, 0x18, 
39781
  0x10, 0x00, 0x23, 0x17, 0x18, 0x16, 0x19, 0x13, 0x17, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x13, 
39782
  0x14, 0x00, 0x19, 0x10, 0x13, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x10, 0x12, 0x00, 0x1C, 0x10, 
39783
  0x12, 0x00, 0x29, 0x11, 0x01, 0x00, 0x2F, 0x11, 0x00, 0x00, 0x33, 0x11, 0x05, 0x00, 0x38, 0x12, 
39784
  0x01, 0x11, 0x19, 0x11, 0x12, 0x00, 0x1C, 0x11, 0x04, 0x00, 0x30, 0x11, 0x08, 0x00, 0x2A, 0x12, 
39785
  0x06, 0x00, 0x34, 0x12, 0x00, 0x00, 0x29, 0x12, 0x01, 0x00, 0x2F, 0x12, 0x00, 0x00, 0x33, 0x12, 
39786
  0x05, 0x00, 0x2F, 0x08, 0x00, 0x00, 0x3E, 0x13, 0x00, 0x00, 0x19, 0x14, 0x01, 0x00, 0x3A, 0x14, 
39787
  0x12, 0x13, 0x03, 0x14, 0x00, 0x00, 0x2A, 0x13, 0x03, 0x00, 0x23, 0x12, 0x0A, 0x13, 0x19, 0x13, 
39788
  0x12, 0x00, 0x1C, 0x12, 0x06, 0x00, 0x3D, 0x14, 0x05, 0x00, 0x29, 0x16, 0x02, 0x00, 0x45, 0x15, 
39789
  0x14, 0x16, 0x19, 0x11, 0x15, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x11, 0x13, 0x00, 0x1C, 0x11, 
39790
  0x0F, 0x00, 0x29, 0x12, 0x01, 0x00, 0x30, 0x05, 0x12, 0x00, 0x2A, 0x13, 0x11, 0x00, 0x33, 0x12, 
39791
  0x13, 0x00, 0x2F, 0x02, 0x00, 0x00, 0x32, 0x12, 0x00, 0x00, 0x2A, 0x14, 0x06, 0x00, 0x33, 0x13, 
39792
  0x14, 0x00, 0x29, 0x12, 0x00, 0x00, 0x2F, 0x12, 0x00, 0x00, 0x33, 0x12, 0x05, 0x00, 0x31, 0x00, 
39793
  0x01, 0x02, 0x31, 0x03, 0x04, 0x12, 0x34, 0x06, 0x00, 0x00, 0x2A, 0x12, 0x0F, 0x00, 0x31, 0x12, 
39794
  0x08, 0x05, 0x43, 0x12, 0x00, 0x00, 0x30, 0x00, 0x12, 0x00, 0x2A, 0x13, 0x06, 0x00, 0x34, 0x13, 
39795
  0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 
39796
  0x01, 0xDA, 0x18, 0xDA, 0x82, 0xBC, 0x00, 0x03, 0x00, 0xDA, 0x1E, 0x2A, 0x02, 0x00, 0x00, 0x23, 
39797
  0x01, 0x00, 0x02, 0x03, 0x01, 0x00, 0x00, 0x87, 0x6B, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x87, 0x62, 
39798
  0x03, 0x02, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x18, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 
39799
  0x0C, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x14, 0x00, 0x14, 0x00, 
39800
  0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x26, 0x00, 0x26, 0x00, 0x21, 0x00, 0x21, 0x00, 
39801
  0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x33, 0x00, 0x33, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 
39802
  0x10, 0x00, 0x05, 0x01, 0x05, 0x01, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x07, 0x00, 0x07, 0x00, 
39803
  0x07, 0x02, 0x27, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 
39804
  0x09, 0x02, 0x0B, 0xBF, 0xFE, 0x09, 0xBF, 0xFF, 0x07, 0x04, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 
39805
  0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFA, 0x05, 0x0A, 0x0B, 
39806
  0x00, 0x0B, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x19, 0x00, 0x19, 0x00, 0x07, 
39807
  0xBF, 0xFD, 0x05, 0x04, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
39808
  0x07, 0x01, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 
39809
  0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFE, 0x07, 0x00, 0x07, 
39810
  0x00, 0x07, 0xBF, 0xFC, 0x05, 0x09, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
39811
  0x07, 0x00, 0x07, 0x02, 0x0F, 0x00, 0x0F, 0x00, 0x09, 0x01, 0x0B, 0xBF, 0xFF, 0x09, 0x02, 0x09, 
39812
  0x00, 0x09, 0x00, 0x09, 0xBF, 0xFC, 0x07, 0x00, 0x07, 0x00, 0x07, 0x07, 0x07, 0x00, 0x07, 0xBF, 
39813
  0xF0, 0x05, 0x10, 0x15, 0x03, 0x0C, 0x00, 0x0C, 0x00, 0x07, 0x00, 0x07, 0x00, 0x1E, 0x00, 0x19, 
39814
  0x00, 0x19, 0x00, 0x07, 0x00, 0x07, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x30, 0x00, 0x30, 
39815
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xED, 0x05, 0x14, 
39816
  0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x03, 0x0C, 0x00, 0x0C, 0x00, 
39817
  0x07, 0x00, 0x07, 0x00, 0x1E, 0x00, 0x19, 0x00, 0x19, 0x00, 0x07, 0x00, 0x07, 0x00, 0x36, 0x00, 
39818
  0x36, 0x00, 0x36, 0x00, 0x30, 0x00, 0x30, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
39819
  0x07, 0x00, 0x07, 0xBF, 0xE9, 0x05, 0x18, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x12, 0x00, 0x07, 
39820
  0x00, 0x07, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x09, 
39821
  0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x03, 0x0C, 0x00, 0x0C, 0x00, 0x07, 0x00, 0x07, 
39822
  0x00, 0x1D, 0x00, 0x19, 0x00, 0x19, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xE3, 0x05, 0x1F, 
39823
  0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 
39824
  0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x03, 0x18, 0x00, 0x18, 0x00, 
39825
  0x18, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x87, 0x0F, 0x15, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
39826
  0x00, 0x03, 0x01, 0x0D, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 
39827
  0x00, 0x03, 0x01, 0x1E, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x1E, 
39828
  0x00, 0x1E, 0x00, 0x1E, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x03, 0x03, 0x12, 
39829
  0x00, 0x12, 0x00, 0x12, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x24, 0x00, 0x24, 0x00, 0x0E, 
39830
  0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x07, 0x00, 0x03, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 
39831
  0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x03, 0x03, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
39832
  0x01, 0x03, 0x00, 0x03, 0x02, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x02, 0x03, 0x00, 0x03, 
39833
  0x09, 0x03, 0x00, 0x03, 0x08, 0x03, 0x00, 0x03, 0x32, 0x03, 0x00, 0x03, 0x33, 0x03, 0x00, 0x03, 
39834
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x05, 
39835
  0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 
39836
  0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 
39837
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x02, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 
39838
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x12, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x07, 0x01, 0x1B, 
39839
  0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFF, 0x07, 0xBF, 
39840
  0xFF, 0x05, 0x00, 0x05, 0x04, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
39841
  0x00, 0x05, 0x01, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
39842
  0xBF, 0xFF, 0x05, 0x00, 0x05, 0x02, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 
39843
  0x05, 0x02, 0x0F, 0x00, 0x0F, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x1F, 0x00, 0x1F, 0x00, 
39844
  0x1F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
39845
  0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x3B, 0x00, 0x3B, 0x00, 0x3B, 0x00, 0x33, 0x00, 0x33, 0x00, 
39846
  0x33, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x02, 0x0D, 0x00, 0x0D, 0x00, 
39847
  0x0D, 0x00, 0x05, 0x00, 0x05, 0x01, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 
39848
  0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 
39849
  0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 
39850
  0x05, 0x00, 0x05, 0xBF, 0xE9, 0x03, 0x00, 0x03, 0x1A, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0C, 
39851
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
39852
  0x00, 0x03, 0x01, 0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x07, 
39853
  0x01, 0x14, 0x00, 0x14, 0x00, 0x14, 0xBF, 0xFF, 0x07, 0x03, 0x1F, 0x00, 0x19, 0x00, 0x19, 0x00, 
39854
  0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x02, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0xBF, 
39855
  0xFE, 0x19, 0x00, 0x19, 0x03, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 
39856
  0x00, 0x1B, 0xBF, 0xFD, 0x19, 0x00, 0x19, 0xBF, 0xFF, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 
39857
  0xBF, 0xFE, 0x07, 0x07, 0x1F, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x09, 0x00, 
39858
  0x09, 0x00, 0x09, 0xBF, 0xF7, 0x05, 0x0A, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xF5, 0x03, 0x00, 
39859
  0x03, 0x0D, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
39860
  0x03, 0x00, 0x50, 0x45, 0x01, 0x00, 0x00, 0x00, 0x00, 0xDA, 0x86, 0xC4, 0xDA, 0x86, 0xC1, 0xDA, 
39861
  0x80, 0xB6, 0xDA, 0x80, 0xB2, 0xCF, 0x08, 0x65, 0x76, 0x2F, 0x77, 0x72, 0x69, 0x74, 0x65, 0xD8, 
39862
  0x08, 0x65, 0x76, 0x2F, 0x77, 0x72, 0x69, 0x74, 0x65, 0xCF, 0x02, 0x3E, 0x3D, 0xDA, 0x87, 0xCD, 
39863
  0xCF, 0x04, 0x64, 0x6F, 0x63, 0x2A, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x0D, 0x01, 0x00, 
39864
  0x01, 0x13, 0x45, 0x00, 0x01, 0x07, 0xCE, 0x04, 0x64, 0x6F, 0x63, 0x2A, 0xDA, 0x18, 0xDA, 0x81, 
39865
  0xEB, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x0D, 0x3C, 0x00, 0x04, 
39866
  0xCE, 0x0B, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0xDA, 0x18, 0xD7, 
39867
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x02, 0x00, 0x02, 0x02, 0x04, 0x00, 0x03, 0xCE, 0x0C, 
39868
  0x61, 0x6C, 0x6C, 0x2D, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0xDA, 0x18, 0xDA, 0x84, 
39869
  0xEA, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x10, 0x03, 0x01, 0x03, 0x06, 0x37, 0x00, 0x0E, 
39870
  0xCE, 0x08, 0x65, 0x6E, 0x76, 0x2D, 0x77, 0x61, 0x6C, 0x6B, 0xDA, 0x18, 0xDA, 0x81, 0xE3, 0xDA, 
39871
  0x80, 0xCB, 0xDA, 0x81, 0x8C, 0xD8, 0x0E, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x67, 0x65, 0x74, 
39872
  0x70, 0x72, 0x6F, 0x74, 0x6F, 0xDA, 0x86, 0xE9, 0xDA, 0x88, 0x2D, 0x00, 0x37, 0x00, 0xDA, 0x83, 
39873
  0x2E, 0x00, 0x37, 0x01, 0xDA, 0x80, 0xBA, 0x00, 0x37, 0x02, 0xCF, 0x05, 0x6C, 0x6F, 0x63, 0x61, 
39874
  0x6C, 0x00, 0x37, 0x03, 0xCF, 0x08, 0x65, 0x6E, 0x76, 0x2D, 0x77, 0x61, 0x6C, 0x6B, 0x0B, 0x37, 
39875
  0x05, 0xDA, 0x80, 0xBA, 0x0D, 0x37, 0x07, 0xCF, 0x04, 0x65, 0x6E, 0x76, 0x73, 0x0E, 0x1A, 0x08, 
39876
  0xCF, 0x01, 0x65, 0x1B, 0x37, 0x09, 0xCF, 0x07, 0x72, 0x65, 0x74, 0x2D, 0x73, 0x65, 0x74, 0x1B, 
39877
  0x31, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x66, 0x1E, 0x31, 0x0B, 0xCF, 0x07, 
39878
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x65, 0x21, 0x31, 0x0C, 0xCF, 0x04, 0x65, 0x6E, 0x76, 0x69, 
39879
  0x21, 0x2F, 0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x64, 0x24, 0x2F, 0x0D, 0xCF, 
39880
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x63, 0x26, 0x2F, 0x0A, 0xDA, 0x22, 0x26, 0x06, 0x00, 
39881
  0x00, 0x23, 0x05, 0x06, 0x01, 0x1C, 0x05, 0x08, 0x00, 0x2A, 0x07, 0x00, 0x00, 0x33, 0x06, 0x07, 
39882
  0x00, 0x2F, 0x06, 0x00, 0x00, 0x2A, 0x08, 0x01, 0x00, 0x33, 0x07, 0x08, 0x00, 0x19, 0x04, 0x07, 
39883
  0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x04, 0x01, 0x00, 0x19, 0x05, 0x04, 0x00, 0x3E, 0x06, 0x00, 
39884
  0x00, 0x19, 0x07, 0x06, 0x00, 0x19, 0x08, 0x05, 0x00, 0x1C, 0x08, 0x0B, 0x00, 0x30, 0x07, 0x08, 
39885
  0x00, 0x2A, 0x0A, 0x02, 0x00, 0x33, 0x09, 0x0A, 0x00, 0x2F, 0x08, 0x00, 0x00, 0x2A, 0x09, 0x03, 
39886
  0x00, 0x33, 0x08, 0x09, 0x00, 0x1C, 0x02, 0x03, 0x00, 0x1A, 0x03, 0x00, 0x00, 0x1A, 0x01, 0x00, 
39887
  0x00, 0x1A, 0xF6, 0xFF, 0xFF, 0x42, 0x08, 0x00, 0x00, 0x19, 0x09, 0x08, 0x00, 0x26, 0x0B, 0x00, 
39888
  0x00, 0x47, 0x0A, 0x07, 0x0B, 0x19, 0x0B, 0x0A, 0x00, 0x1D, 0x0B, 0x12, 0x00, 0x38, 0x0A, 0x07, 
39889
  0x0B, 0x19, 0x0C, 0x0A, 0x00, 0x26, 0x0D, 0x00, 0x00, 0x47, 0x0A, 0x0C, 0x0D, 0x19, 0x0D, 0x0A, 
39890
  0x00, 0x1D, 0x0D, 0x0A, 0x00, 0x19, 0x0A, 0x0D, 0x00, 0x2F, 0x0A, 0x00, 0x00, 0x33, 0x0E, 0x00, 
39891
  0x00, 0x1C, 0x0E, 0x04, 0x00, 0x27, 0x0F, 0x00, 0x00, 0x3A, 0x09, 0x0A, 0x0F, 0x1A, 0x01, 0x00, 
39892
  0x00, 0x47, 0x0D, 0x0C, 0x0D, 0x1A, 0xF7, 0xFF, 0xFF, 0x47, 0x0B, 0x07, 0x0B, 0x1A, 0xEF, 0xFF, 
39893
  0xFF, 0x2F, 0x09, 0x00, 0x00, 0x2A, 0x0B, 0x04, 0x00, 0x33, 0x0A, 0x0B, 0x00, 0x2F, 0x0A, 0x00, 
39894
  0x00, 0x2A, 0x0B, 0x05, 0x00, 0x34, 0x0B, 0x00, 0x00, 0x8B, 0xE0, 0x03, 0x00, 0x03, 0x00, 0x03, 
39895
  0x00, 0x1E, 0x00, 0x1E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
39896
  0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x07, 0x00, 0x13, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 
39897
  0x00, 0x37, 0x00, 0x37, 0x00, 0x37, 0x00, 0x4B, 0x00, 0x55, 0x00, 0x4B, 0x00, 0x13, 0x01, 0x03, 
39898
  0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
39899
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x10, 0x00, 0x10, 0xBF, 0xFE, 0x03, 0x03, 
39900
  0x05, 0x00, 0x05, 0xBF, 0xFD, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x04, 0x09, 
39901
  0x00, 0x09, 0x00, 0x09, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 0x00, 0xDA, 0x80, 0xBA, 
39902
  0x00, 0x04, 0x01, 0xDA, 0x88, 0xAA, 0x00, 0x04, 0x02, 0xCF, 0x0C, 0x61, 0x6C, 0x6C, 0x2D, 0x62, 
39903
  0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x2A, 0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 0x01, 0x2A, 
39904
  0x03, 0x01, 0x00, 0x34, 0x03, 0x00, 0x00, 0x8B, 0xEF, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
39905
  0xDA, 0x87, 0x6C, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x02, 0x00, 0x02, 0x02, 0x04, 
39906
  0x00, 0x03, 0xCE, 0x0C, 0x61, 0x6C, 0x6C, 0x2D, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x73, 
39907
  0xDA, 0x18, 0xDA, 0x87, 0x87, 0xDA, 0x88, 0xA7, 0x00, 0x04, 0x00, 0xDA, 0x80, 0xBA, 0x00, 0x04, 
39908
  0x01, 0xDA, 0x88, 0xAA, 0x00, 0x04, 0x02, 0xCF, 0x0C, 0x61, 0x6C, 0x6C, 0x2D, 0x64, 0x79, 0x6E, 
39909
  0x61, 0x6D, 0x69, 0x63, 0x73, 0x2A, 0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 0x01, 0x2A, 0x03, 0x01, 
39910
  0x00, 0x34, 0x03, 0x00, 0x00, 0x8B, 0xF6, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xD8, 0x08, 
39911
  0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0xDA, 0x81, 0x8A, 0xDA, 0x81, 0x5C, 0xDA, 0x81, 
39912
  0x82, 0xDA, 0x81, 0xAD, 0xCE, 0x0B, 0x42, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x3A, 0x0A, 
39913
  0x0A, 0xDA, 0x80, 0xF5, 0xDA, 0x83, 0x47, 0xCE, 0x0B, 0x44, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 
39914
  0x73, 0x3A, 0x0A, 0x0A, 0xCE, 0x36, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x55, 0x73, 0x65, 0x20, 0x28, 
39915
  0x64, 0x6F, 0x63, 0x20, 0x73, 0x79, 0x6D, 0x29, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6D, 0x6F, 0x72, 
39916
  0x65, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x6E, 
39917
  0x20, 0x61, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x2E, 0x0A, 0x00, 0x3C, 0x00, 0xCF, 
39918
  0x04, 0x66, 0x6C, 0x74, 0x72, 0x00, 0x3C, 0x01, 0xCF, 0x0B, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x2D, 
39919
  0x69, 0x6E, 0x64, 0x65, 0x78, 0x05, 0x3C, 0x02, 0xDA, 0x80, 0x81, 0x0F, 0x3C, 0x05, 0xCF, 0x08, 
39920
  0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x73, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 
39921
  0x30, 0x00, 0x02, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x33, 0x03, 0x04, 0x00, 0x19, 0x02, 0x03, 0x00, 
39922
  0x2A, 0x05, 0x02, 0x00, 0x33, 0x04, 0x05, 0x00, 0x30, 0x00, 0x04, 0x00, 0x2A, 0x06, 0x01, 0x00, 
39923
  0x33, 0x05, 0x06, 0x00, 0x2A, 0x04, 0x03, 0x00, 0x30, 0x04, 0x05, 0x00, 0x2A, 0x06, 0x04, 0x00, 
39924
  0x33, 0x04, 0x06, 0x00, 0x19, 0x05, 0x04, 0x00, 0x2A, 0x07, 0x05, 0x00, 0x33, 0x06, 0x07, 0x00, 
39925
  0x2A, 0x07, 0x06, 0x00, 0x30, 0x02, 0x07, 0x00, 0x2A, 0x08, 0x07, 0x00, 0x33, 0x07, 0x08, 0x00, 
39926
  0x2A, 0x08, 0x08, 0x00, 0x30, 0x08, 0x07, 0x00, 0x2A, 0x09, 0x09, 0x00, 0x33, 0x08, 0x09, 0x00, 
39927
  0x26, 0x07, 0x00, 0x00, 0x26, 0x09, 0x00, 0x00, 0x31, 0x08, 0x07, 0x09, 0x28, 0x07, 0x00, 0x00, 
39928
  0x2F, 0x07, 0x00, 0x00, 0x2A, 0x09, 0x0A, 0x00, 0x33, 0x07, 0x09, 0x00, 0x2F, 0x07, 0x00, 0x00, 
39929
  0x2A, 0x09, 0x05, 0x00, 0x33, 0x08, 0x09, 0x00, 0x2A, 0x09, 0x05, 0x00, 0x33, 0x07, 0x09, 0x00, 
39930
  0x2A, 0x09, 0x06, 0x00, 0x30, 0x05, 0x09, 0x00, 0x2A, 0x0A, 0x07, 0x00, 0x33, 0x09, 0x0A, 0x00, 
39931
  0x2A, 0x0A, 0x0B, 0x00, 0x30, 0x0A, 0x09, 0x00, 0x2A, 0x0B, 0x09, 0x00, 0x33, 0x0A, 0x0B, 0x00, 
39932
  0x26, 0x09, 0x00, 0x00, 0x26, 0x0B, 0x00, 0x00, 0x31, 0x0A, 0x09, 0x0B, 0x28, 0x09, 0x00, 0x00, 
39933
  0x2F, 0x09, 0x00, 0x00, 0x2A, 0x0B, 0x0A, 0x00, 0x33, 0x09, 0x0B, 0x00, 0x2F, 0x09, 0x00, 0x00, 
39934
  0x2A, 0x0B, 0x05, 0x00, 0x33, 0x0A, 0x0B, 0x00, 0x2A, 0x09, 0x0C, 0x00, 0x2F, 0x09, 0x00, 0x00, 
39935
  0x2A, 0x09, 0x05, 0x00, 0x34, 0x09, 0x00, 0x00, 0x8D, 0x0C, 0x1E, 0x00, 0x1E, 0x00, 0x11, 0x00, 
39936
  0x11, 0x00, 0x11, 0x00, 0x03, 0x01, 0x2C, 0x00, 0x2C, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 
39937
  0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x2E, 0x00, 
39938
  0x2E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0A, 0x00, 
39939
  0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x00, 0x03, 0x00, 
39940
  0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x2E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x16, 0x00, 
39941
  0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 
39942
  0x0A, 0x00, 0x0A, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
39943
  0x03, 0xDA, 0x80, 0xDF, 0xDA, 0x80, 0x8D, 0xD2, 0x0D, 0x01, 0xDA, 0x84, 0xEE, 0xDA, 0x4A, 0xDA, 
39944
  0x50, 0xDA, 0x82, 0xAE, 0xDA, 0x4F, 0xDA, 0x84, 0xED, 0xDA, 0x84, 0xF2, 0xDA, 0x3A, 0xCF, 0x06, 
39945
  0x73, 0x70, 0x6C, 0x69, 0x63, 0x65, 0xDA, 0x85, 0x0D, 0xDA, 0x84, 0xF0, 0xDA, 0x84, 0xEF, 0xDA, 
39946
  0x84, 0xF1, 0xDA, 0x1C, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x01, 0x01, 0x01, 0x07, 
39947
  0x12, 0x00, 0x02, 0xCE, 0x18, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x2D, 0x73, 0x70, 0x65, 0x63, 0x69, 
39948
  0x61, 0x6C, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x2D, 0x65, 0x6E, 0x74, 0x72, 0x79, 0xDA, 0x18, 0xCE, 
39949
  0x12, 0x20, 0x20, 0x20, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x20, 0x66, 0x6F, 0x72, 
39950
  0x6D, 0x0A, 0x0A, 0xDA, 0x80, 0xF5, 0xCE, 0x05, 0x20, 0x20, 0x20, 0x20, 0x28, 0xCE, 0x07, 0x20, 
39951
  0x2E, 0x2E, 0x2E, 0x29, 0x0A, 0x0A, 0xCE, 0x33, 0x20, 0x20, 0x20, 0x20, 0x53, 0x65, 0x65, 0x20, 
39952
  0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x2D, 0x6C, 0x61, 
39953
  0x6E, 0x67, 0x2E, 0x6F, 0x72, 0x67, 0x2F, 0x64, 0x6F, 0x63, 0x73, 0x2F, 0x73, 0x70, 0x65, 0x63, 
39954
  0x69, 0x61, 0x6C, 0x73, 0x2E, 0x68, 0x74, 0x6D, 0x6C, 0x0A, 0x0A, 0xCE, 0x02, 0x0A, 0x0A, 0xDA, 
39955
  0x81, 0x5C, 0x00, 0x12, 0x00, 0xDA, 0x1E, 0x00, 0x12, 0x01, 0xCF, 0x18, 0x70, 0x72, 0x69, 0x6E, 
39956
  0x74, 0x2D, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x2D, 0x65, 
39957
  0x6E, 0x74, 0x72, 0x79, 0x2A, 0x02, 0x00, 0x00, 0x2F, 0x02, 0x00, 0x00, 0x2A, 0x03, 0x01, 0x00, 
39958
  0x33, 0x02, 0x03, 0x00, 0x2A, 0x03, 0x02, 0x00, 0x2A, 0x04, 0x03, 0x00, 0x31, 0x03, 0x00, 0x04, 
39959
  0x2A, 0x04, 0x01, 0x00, 0x33, 0x03, 0x04, 0x00, 0x2A, 0x04, 0x04, 0x00, 0x2F, 0x04, 0x00, 0x00, 
39960
  0x2A, 0x05, 0x01, 0x00, 0x33, 0x04, 0x05, 0x00, 0x2A, 0x05, 0x05, 0x00, 0x31, 0x05, 0x02, 0x03, 
39961
  0x2F, 0x04, 0x00, 0x00, 0x2A, 0x05, 0x06, 0x00, 0x34, 0x05, 0x00, 0x00, 0x8D, 0x2C, 0x0A, 0x00, 
39962
  0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x01, 
39963
  0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0xBF, 0xFD, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
39964
  0x00, 0x03, 0xDA, 0x80, 0xF5, 0xDA, 0x87, 0x1E, 0xDA, 0x87, 0x23, 0xDA, 0x08, 0xDA, 0x03, 0xD0, 
39965
  0x04, 0x6B, 0x69, 0x6E, 0x64, 0xD0, 0x06, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0xD7, 0x00, 0xCD, 
39966
  0x00, 0xDC, 0x00, 0x00, 0x10, 0x01, 0x01, 0x01, 0x15, 0x7E, 0x00, 0x0A, 0xCE, 0x12, 0x70, 0x72, 
39967
  0x69, 0x6E, 0x74, 0x2D, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2D, 0x65, 0x6E, 0x74, 0x72, 0x79, 
39968
  0xDA, 0x18, 0xDA, 0x84, 0x27, 0xDA, 0x59, 0xDA, 0x2C, 0xD0, 0x03, 0x76, 0x61, 0x72, 0xCE, 0x02, 
39969
  0x20, 0x28, 0xCE, 0x01, 0x29, 0xDA, 0x80, 0xF5, 0xDA, 0x3D, 0xDA, 0x88, 0xCA, 0xDA, 0x88, 0xC9, 
39970
  0xDA, 0x06, 0xCE, 0x04, 0x20, 0x20, 0x20, 0x20, 0xDA, 0x80, 0xFD, 0xDA, 0x03, 0xDA, 0x08, 0xCE, 
39971
  0x09, 0x20, 0x6F, 0x6E, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0xDA, 0x81, 0xB1, 0xDA, 0x83, 0x47, 
39972
  0xCE, 0x1D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x6E, 0x6F, 0x20, 0x64, 0x6F, 0x63, 0x75, 0x6D, 0x65, 
39973
  0x6E, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2E, 0x0A, 0xDA, 
39974
  0x88, 0xC7, 0xDA, 0x81, 0x5C, 0x00, 0x7E, 0x00, 0xDA, 0x1E, 0x00, 0x7E, 0x01, 0xCF, 0x12, 0x70, 
39975
  0x72, 0x69, 0x6E, 0x74, 0x2D, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2D, 0x65, 0x6E, 0x74, 0x72, 
39976
  0x79, 0x48, 0x7E, 0x02, 0xCF, 0x09, 0x62, 0x69, 0x6E, 0x64, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x4C, 
39977
  0x7E, 0x05, 0xCF, 0x02, 0x73, 0x6D, 0x50, 0x7E, 0x07, 0xDA, 0x83, 0xCE, 0x50, 0x6D, 0x05, 0xCF, 
39978
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x4A, 0x53, 0x6A, 0x0A, 0xDA, 0x80, 0xF9, 0x55, 0x6A, 
39979
  0x0B, 0xDA, 0x81, 0xF2, 0x57, 0x6A, 0x0C, 0xDA, 0x81, 0xF3, 0x57, 0x5C, 0x0B, 0xCF, 0x07, 0x5F, 
39980
  0x30, 0x30, 0x30, 0x30, 0x35, 0x4B, 0x2A, 0x03, 0x00, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x33, 0x03, 
39981
  0x00, 0x00, 0x1C, 0x03, 0x0B, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x2F, 0x04, 0x00, 0x00, 0x33, 0x04, 
39982
  0x00, 0x00, 0x29, 0x06, 0x00, 0x00, 0x38, 0x05, 0x04, 0x06, 0x2F, 0x05, 0x00, 0x00, 0x2A, 0x06, 
39983
  0x02, 0x00, 0x33, 0x04, 0x06, 0x00, 0x19, 0x02, 0x04, 0x00, 0x1A, 0x36, 0x00, 0x00, 0x2A, 0x05, 
39984
  0x01, 0x00, 0x2F, 0x05, 0x00, 0x00, 0x33, 0x05, 0x00, 0x00, 0x1C, 0x05, 0x12, 0x00, 0x2A, 0x06, 
39985
  0x01, 0x00, 0x2F, 0x06, 0x00, 0x00, 0x33, 0x06, 0x00, 0x00, 0x29, 0x08, 0x00, 0x00, 0x38, 0x07, 
39986
  0x06, 0x08, 0x2F, 0x07, 0x00, 0x00, 0x2A, 0x08, 0x02, 0x00, 0x33, 0x06, 0x08, 0x00, 0x2A, 0x07, 
39987
  0x03, 0x00, 0x2A, 0x08, 0x04, 0x00, 0x31, 0x07, 0x08, 0x06, 0x2A, 0x07, 0x05, 0x00, 0x2F, 0x07, 
39988
  0x00, 0x00, 0x2A, 0x08, 0x06, 0x00, 0x33, 0x07, 0x08, 0x00, 0x19, 0x04, 0x07, 0x00, 0x1A, 0x20, 
39989
  0x00, 0x00, 0x2A, 0x07, 0x07, 0x00, 0x2F, 0x07, 0x00, 0x00, 0x33, 0x07, 0x00, 0x00, 0x1C, 0x07, 
39990
  0x03, 0x00, 0x2A, 0x06, 0x07, 0x00, 0x1A, 0x19, 0x00, 0x00, 0x2A, 0x09, 0x08, 0x00, 0x2F, 0x09, 
39991
  0x00, 0x00, 0x33, 0x09, 0x00, 0x00, 0x1C, 0x09, 0x0D, 0x00, 0x2A, 0x0A, 0x09, 0x00, 0x2F, 0x0A, 
39992
  0x00, 0x00, 0x33, 0x0A, 0x00, 0x00, 0x2A, 0x0B, 0x08, 0x00, 0x2A, 0x0C, 0x04, 0x00, 0x31, 0x0B, 
39993
  0x0C, 0x0A, 0x2A, 0x0B, 0x05, 0x00, 0x2F, 0x0B, 0x00, 0x00, 0x2A, 0x0C, 0x06, 0x00, 0x33, 0x0B, 
39994
  0x0C, 0x00, 0x19, 0x08, 0x0B, 0x00, 0x1A, 0x08, 0x00, 0x00, 0x2A, 0x0A, 0x0A, 0x00, 0x2F, 0x0A, 
39995
  0x00, 0x00, 0x33, 0x0A, 0x00, 0x00, 0x2F, 0x0A, 0x00, 0x00, 0x2A, 0x0C, 0x02, 0x00, 0x33, 0x0B, 
39996
  0x0C, 0x00, 0x19, 0x08, 0x0B, 0x00, 0x19, 0x06, 0x08, 0x00, 0x19, 0x04, 0x06, 0x00, 0x19, 0x02, 
39997
  0x04, 0x00, 0x2A, 0x03, 0x0B, 0x00, 0x2A, 0x04, 0x0C, 0x00, 0x31, 0x03, 0x02, 0x04, 0x2A, 0x04, 
39998
  0x06, 0x00, 0x33, 0x03, 0x04, 0x00, 0x19, 0x02, 0x03, 0x00, 0x2A, 0x04, 0x0D, 0x00, 0x2F, 0x04, 
39999
  0x00, 0x00, 0x33, 0x04, 0x00, 0x00, 0x19, 0x05, 0x04, 0x00, 0x2A, 0x06, 0x0E, 0x00, 0x2F, 0x06, 
40000
  0x00, 0x00, 0x33, 0x06, 0x00, 0x00, 0x19, 0x07, 0x06, 0x00, 0x1C, 0x05, 0x1B, 0x00, 0x3B, 0x09, 
40001
  0x05, 0x00, 0x19, 0x0A, 0x09, 0x00, 0x3B, 0x09, 0x05, 0x01, 0x19, 0x0B, 0x09, 0x00, 0x3B, 0x09, 
40002
  0x05, 0x02, 0x19, 0x0C, 0x09, 0x00, 0x1C, 0x0B, 0x03, 0x00, 0x19, 0x0D, 0x0C, 0x00, 0x1A, 0x02, 
40003
  0x00, 0x00, 0x19, 0x0D, 0x0B, 0x00, 0x1C, 0x0D, 0x09, 0x00, 0x2A, 0x0E, 0x0F, 0x00, 0x2A, 0x0F, 
40004
  0x10, 0x00, 0x31, 0x0E, 0x0B, 0x0F, 0x2F, 0x0C, 0x00, 0x00, 0x2A, 0x0F, 0x06, 0x00, 0x33, 0x0E, 
40005
  0x0F, 0x00, 0x19, 0x09, 0x0E, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x26, 0x09, 0x00, 0x00, 0x2A, 0x0D, 
40006
  0x0B, 0x00, 0x31, 0x0D, 0x0A, 0x09, 0x2A, 0x0E, 0x06, 0x00, 0x33, 0x0D, 0x0E, 0x00, 0x19, 0x08, 
40007
  0x0D, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x26, 0x08, 0x00, 0x00, 0x1C, 0x05, 0x03, 0x00, 0x2A, 0x09, 
40008
  0x0C, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x26, 0x09, 0x00, 0x00, 0x1C, 0x07, 0x06, 0x00, 0x2F, 0x07, 
40009
  0x00, 0x00, 0x2A, 0x0C, 0x11, 0x00, 0x33, 0x0B, 0x0C, 0x00, 0x19, 0x0A, 0x0B, 0x00, 0x1A, 0x02, 
40010
  0x00, 0x00, 0x2A, 0x0A, 0x12, 0x00, 0x2A, 0x0B, 0x13, 0x00, 0x31, 0x0B, 0x02, 0x08, 0x2A, 0x0B, 
40011
  0x0C, 0x00, 0x31, 0x09, 0x0A, 0x0B, 0x2A, 0x0B, 0x14, 0x00, 0x34, 0x0B, 0x00, 0x00, 0x8D, 0x19, 
40012
  0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 0xFF, 0x0D, 0x01, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x20, 
40013
  0x00, 0x20, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0xBF, 0xFF, 0x0D, 0x00, 0x0D, 0x02, 0x0F, 0x00, 
40014
  0x0F, 0x00, 0x0F, 0xBF, 0xFE, 0x0D, 0x02, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x30, 0x00, 0x30, 
40015
  0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 
40016
  0x00, 0x18, 0x00, 0x18, 0xBF, 0xFE, 0x0D, 0x00, 0x0D, 0x03, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 
40017
  0xFD, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x04, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 0xFC, 0x0D, 0x04, 
40018
  0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 
40019
  0x1B, 0x00, 0x1B, 0xBF, 0xFC, 0x0D, 0x00, 0x0D, 0x05, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x0F, 
40020
  0x00, 0x0F, 0x00, 0x0F, 0xBF, 0xFB, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xFF, 0x05, 
40021
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x09, 0x0B, 0x00, 0x0B, 0x00, 
40022
  0x0B, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x03, 0x0A, 0x00, 0x0A, 0x00, 
40023
  0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x01, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 
40024
  0x26, 0x00, 0x20, 0x00, 0x35, 0x00, 0x35, 0x00, 0x35, 0x00, 0x35, 0x00, 0x35, 0x00, 0x35, 0x00, 
40025
  0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFF, 0x0A, 
40026
  0x00, 0x0A, 0x00, 0x0A, 0x02, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x01, 0x0A, 0x00, 0x10, 
40027
  0x00, 0x10, 0x00, 0x10, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0xBF, 0xFB, 0x03, 0x00, 0x03, 0x00, 
40028
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCE, 0x07, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 
40029
  0xCE, 0x0B, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2E, 0xDA, 0x81, 0x5C, 
40030
  0xDA, 0x84, 0xF3, 0x00, 0x45, 0x00, 0xDA, 0x60, 0x00, 0x45, 0x01, 0xDA, 0x88, 0xA0, 0x0C, 0x41, 
40031
  0x04, 0xDA, 0x1E, 0x20, 0x3E, 0x08, 0xDA, 0x87, 0x7E, 0x22, 0x3E, 0x09, 0xDA, 0x87, 0x7B, 0x25, 
40032
  0x3E, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x4C, 0x26, 0x39, 0x07, 0xCF, 0x07, 
40033
  0x6D, 0x6F, 0x64, 0x2D, 0x65, 0x6E, 0x76, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 
40034
  0x02, 0x03, 0x00, 0x1C, 0x02, 0x05, 0x00, 0x2E, 0x03, 0x00, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x2A, 
40035
  0x04, 0x01, 0x00, 0x34, 0x04, 0x00, 0x00, 0x1C, 0x00, 0x39, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 
40036
  0x04, 0x02, 0x00, 0x33, 0x03, 0x04, 0x00, 0x19, 0x04, 0x03, 0x00, 0x2F, 0x04, 0x00, 0x00, 0x2A, 
40037
  0x05, 0x03, 0x00, 0x33, 0x03, 0x05, 0x00, 0x1C, 0x03, 0x2E, 0x00, 0x2A, 0x05, 0x04, 0x00, 0x30, 
40038
  0x00, 0x05, 0x00, 0x2A, 0x06, 0x05, 0x00, 0x33, 0x05, 0x06, 0x00, 0x1C, 0x05, 0x04, 0x00, 0x2F, 
40039
  0x00, 0x00, 0x00, 0x2A, 0x06, 0x06, 0x00, 0x34, 0x06, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 
40040
  0x07, 0x07, 0x00, 0x33, 0x06, 0x07, 0x00, 0x2F, 0x06, 0x00, 0x00, 0x2A, 0x08, 0x08, 0x00, 0x33, 
40041
  0x07, 0x08, 0x00, 0x3B, 0x06, 0x07, 0x00, 0x19, 0x08, 0x06, 0x00, 0x3B, 0x06, 0x07, 0x01, 0x19, 
40042
  0x09, 0x06, 0x00, 0x2A, 0x07, 0x09, 0x00, 0x38, 0x06, 0x07, 0x08, 0x19, 0x07, 0x06, 0x00, 0x1C, 
40043
  0x07, 0x13, 0x00, 0x26, 0x06, 0x00, 0x00, 0x26, 0x0A, 0x00, 0x00, 0x31, 0x08, 0x06, 0x0A, 0x43, 
40044
  0x06, 0x00, 0x00, 0x2A, 0x0B, 0x0A, 0x00, 0x38, 0x0A, 0x07, 0x0B, 0x2A, 0x0B, 0x0B, 0x00, 0x2A, 
40045
  0x0C, 0x0C, 0x00, 0x31, 0x0B, 0x06, 0x0C, 0x2A, 0x0B, 0x0D, 0x00, 0x27, 0x0C, 0x00, 0x00, 0x31, 
40046
  0x09, 0x0B, 0x0C, 0x2A, 0x0B, 0x0A, 0x00, 0x30, 0x0B, 0x0A, 0x00, 0x41, 0x06, 0x00, 0x00, 0x2F, 
40047
  0x06, 0x00, 0x00, 0x2A, 0x0A, 0x0E, 0x00, 0x34, 0x0A, 0x00, 0x00, 0x2A, 0x06, 0x0F, 0x00, 0x2A, 
40048
  0x0A, 0x10, 0x00, 0x31, 0x06, 0x00, 0x0A, 0x2A, 0x06, 0x11, 0x00, 0x34, 0x06, 0x00, 0x00, 0x2F, 
40049
  0x04, 0x00, 0x00, 0x2A, 0x05, 0x0E, 0x00, 0x34, 0x05, 0x00, 0x00, 0x2A, 0x03, 0x12, 0x00, 0x2F, 
40050
  0x03, 0x00, 0x00, 0x2A, 0x03, 0x01, 0x00, 0x34, 0x03, 0x00, 0x00, 0xCD, 0x00, 0xD4, 0x00, 0x00, 
40051
  0x02, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x03, 0xDA, 0x18, 0xDA, 0x81, 0xFB, 0xBF, 0xFF, 0x00, 
40052
  0x00, 0xDA, 0x60, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xA0, 0x00, 0x04, 0x00, 0xDA, 0x1E, 0x2B, 
40053
  0x01, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, 0x2A, 0x01, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0xBF, 
40054
  0xFF, 0x8D, 0x36, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x8D, 0x35, 0x05, 0x00, 0x05, 0x00, 
40055
  0x05, 0xBF, 0xFF, 0x03, 0x02, 0x12, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFE, 0x03, 0x06, 
40056
  0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x01, 
40057
  0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x09, 0x02, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x02, 
40058
  0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
40059
  0x0D, 0x00, 0x0D, 0x01, 0x1E, 0x00, 0x1E, 0x00, 0x0D, 0x00, 0x0D, 0x03, 0x30, 0x00, 0x30, 0x00, 
40060
  0x30, 0x00, 0x30, 0x01, 0x29, 0x00, 0x29, 0xBF, 0xFD, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
40061
  0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
40062
  0x04, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 
40063
  0x03, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0xCF, 0x03, 0x62, 0x6F, 
40064
  0x72, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x0E, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
40065
  0x00, 0x13, 0xCE, 0x03, 0x62, 0x6F, 0x72, 0x3D, 0x01, 0x00, 0x00, 0x24, 0x02, 0x01, 0x00, 0x1C, 
40066
  0x02, 0x03, 0x00, 0x29, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x24, 0x02, 0x01, 0x01, 0x1C, 
40067
  0x02, 0x05, 0x00, 0x29, 0x03, 0x00, 0x00, 0x3B, 0x04, 0x00, 0x00, 0x0F, 0x03, 0x03, 0x04, 0x03, 
40068
  0x03, 0x00, 0x00, 0x3B, 0x03, 0x00, 0x00, 0x29, 0x05, 0x01, 0x00, 0x38, 0x04, 0x00, 0x05, 0x0F, 
40069
  0x03, 0x03, 0x04, 0x05, 0x05, 0x05, 0x01, 0x23, 0x02, 0x05, 0x01, 0x1C, 0x02, 0xFC, 0xFF, 0x03, 
40070
  0x03, 0x00, 0x00, 0xCF, 0x06, 0x74, 0x72, 0x61, 0x63, 0x65, 0x76, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
40071
  0x00, 0x00, 0x15, 0x01, 0x01, 0x01, 0x15, 0x4C, 0x00, 0x0A, 0xCE, 0x06, 0x74, 0x72, 0x61, 0x63, 
40072
  0x65, 0x76, 0xDA, 0x18, 0xDA, 0x84, 0x9A, 0xDA, 0x86, 0xC8, 0xDA, 0x80, 0xDF, 0xDA, 0x82, 0x73, 
40073
  0xDA, 0x82, 0x15, 0xCE, 0x0A, 0x74, 0x72, 0x61, 0x63, 0x65, 0x20, 0x5B, 0x25, 0x73, 0x5D, 0xDA, 
40074
  0x4C, 0xCE, 0x05, 0x74, 0x72, 0x61, 0x63, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 
40075
  0x01, 0x01, 0x01, 0x01, 0x06, 0x00, 0x02, 0xCE, 0x04, 0x6E, 0x65, 0x67, 0x3F, 0xDA, 0x18, 0xDA, 
40076
  0x85, 0xC7, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xCF, 0x04, 0x6E, 0x65, 0x67, 0x3F, 
40077
  0x29, 0x02, 0x00, 0x00, 0x30, 0x00, 0x02, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 
40078
  0x24, 0x03, 0x02, 0xFF, 0x03, 0x03, 0x00, 0x00, 0x83, 0x29, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 
40079
  0x30, 0x00, 0x2D, 0x00, 0x2D, 0xDA, 0x81, 0xE7, 0xCE, 0x17, 0x20, 0x6F, 0x6E, 0x20, 0x6C, 0x69, 
40080
  0x6E, 0x65, 0x20, 0x25, 0x64, 0x2C, 0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x20, 0x25, 0x64, 
40081
  0x3A, 0xCE, 0x07, 0x20, 0x25, 0x6A, 0x20, 0x69, 0x73, 0x20, 0xDA, 0x80, 0xF5, 0xDA, 0x49, 0xDA, 
40082
  0x4A, 0xDA, 0x84, 0xF2, 0xDA, 0x81, 0xAF, 0xDA, 0x80, 0xC1, 0xDA, 0x80, 0xC2, 0xDA, 0x81, 0x80, 
40083
  0xDA, 0x84, 0xF0, 0x00, 0x4C, 0x00, 0xDA, 0x1E, 0x00, 0x4C, 0x01, 0xDA, 0x88, 0xDF, 0x09, 0x4C, 
40084
  0x04, 0xDA, 0x82, 0x4C, 0x0B, 0x4C, 0x05, 0xDA, 0x81, 0xCF, 0x10, 0x4C, 0x06, 0xCF, 0x02, 0x63, 
40085
  0x66, 0x19, 0x4C, 0x08, 0xCF, 0x05, 0x66, 0x6D, 0x74, 0x2D, 0x31, 0x1D, 0x25, 0x0B, 0xCF, 0x07, 
40086
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x57, 0x2D, 0x4C, 0x0A, 0xCF, 0x05, 0x66, 0x6D, 0x74, 0x2D, 
40087
  0x32, 0x32, 0x4C, 0x0C, 0xDA, 0x80, 0xAA, 0x35, 0x4C, 0x0E, 0xDA, 0x80, 0xFF, 0x2A, 0x02, 0x00, 
40088
  0x00, 0x2A, 0x03, 0x01, 0x00, 0x30, 0x02, 0x03, 0x00, 0x2A, 0x03, 0x02, 0x00, 0x33, 0x02, 0x03, 
40089
  0x00, 0x2F, 0x02, 0x00, 0x00, 0x2A, 0x04, 0x03, 0x00, 0x33, 0x03, 0x04, 0x00, 0x3B, 0x02, 0x03, 
40090
  0x00, 0x19, 0x04, 0x02, 0x00, 0x3B, 0x02, 0x03, 0x01, 0x19, 0x05, 0x02, 0x00, 0x2A, 0x02, 0x04, 
40091
  0x00, 0x2F, 0x02, 0x00, 0x00, 0x2A, 0x06, 0x02, 0x00, 0x33, 0x02, 0x06, 0x00, 0x19, 0x06, 0x02, 
40092
  0x00, 0x1C, 0x06, 0x07, 0x00, 0x2A, 0x08, 0x05, 0x00, 0x30, 0x08, 0x06, 0x00, 0x2A, 0x09, 0x06, 
40093
  0x00, 0x33, 0x08, 0x09, 0x00, 0x19, 0x07, 0x08, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x2A, 0x07, 0x07, 
40094
  0x00, 0x19, 0x08, 0x07, 0x00, 0x2F, 0x04, 0x00, 0x00, 0x2A, 0x0B, 0x08, 0x00, 0x33, 0x0A, 0x0B, 
40095
  0x00, 0x19, 0x0B, 0x0A, 0x00, 0x1C, 0x0B, 0x03, 0x00, 0x19, 0x0A, 0x0B, 0x00, 0x1A, 0x05, 0x00, 
40096
  0x00, 0x2F, 0x05, 0x00, 0x00, 0x2A, 0x0D, 0x08, 0x00, 0x33, 0x0C, 0x0D, 0x00, 0x19, 0x0A, 0x0C, 
40097
  0x00, 0x1C, 0x0A, 0x03, 0x00, 0x2A, 0x09, 0x09, 0x00, 0x1A, 0x06, 0x00, 0x00, 0x2A, 0x0B, 0x0A, 
40098
  0x00, 0x31, 0x0B, 0x04, 0x05, 0x2A, 0x0C, 0x06, 0x00, 0x33, 0x0B, 0x0C, 0x00, 0x19, 0x09, 0x0B, 
40099
  0x00, 0x19, 0x0A, 0x09, 0x00, 0x2A, 0x0B, 0x0B, 0x00, 0x31, 0x08, 0x0A, 0x0B, 0x2A, 0x0C, 0x0C, 
40100
  0x00, 0x33, 0x0B, 0x0C, 0x00, 0x19, 0x0C, 0x0B, 0x00, 0x2A, 0x0E, 0x0D, 0x00, 0x33, 0x0D, 0x0E, 
40101
  0x00, 0x19, 0x0E, 0x0D, 0x00, 0x2A, 0x10, 0x0E, 0x00, 0x31, 0x10, 0x0E, 0x00, 0x43, 0x0F, 0x00, 
40102
  0x00, 0x2A, 0x11, 0x0F, 0x00, 0x30, 0x11, 0x00, 0x00, 0x43, 0x10, 0x00, 0x00, 0x2A, 0x12, 0x10, 
40103
  0x00, 0x31, 0x12, 0x0C, 0x10, 0x43, 0x11, 0x00, 0x00, 0x2A, 0x12, 0x02, 0x00, 0x2A, 0x13, 0x11, 
40104
  0x00, 0x2A, 0x14, 0x12, 0x00, 0x31, 0x12, 0x13, 0x14, 0x43, 0x10, 0x00, 0x00, 0x2A, 0x13, 0x13, 
40105
  0x00, 0x31, 0x13, 0x10, 0x0E, 0x43, 0x12, 0x00, 0x00, 0x2A, 0x13, 0x14, 0x00, 0x31, 0x13, 0x0F, 
40106
  0x11, 0x30, 0x12, 0x0E, 0x00, 0x43, 0x10, 0x00, 0x00, 0x03, 0x10, 0x00, 0x00, 0x84, 0xD6, 0x1F, 
40107
  0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x03, 
40108
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 
40109
  0x01, 0x0E, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
40110
  0x00, 0x03, 0x01, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 
40111
  0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x12, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x2D, 
40112
  0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 
40113
  0x00, 0x0C, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 
40114
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40115
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40116
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0F, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x6E, 0x67, 
40117
  0x2D, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0xD8, 0x0F, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x6E, 
40118
  0x67, 0x2D, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0xCF, 0x05, 0x74, 0x61, 0x62, 0x6C, 0x65, 0xDA, 
40119
  0x85, 0x14, 0xCF, 0x07, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
40120
  0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x07, 0x6E, 0x75, 0x6D, 0x62, 
40121
  0x65, 0x72, 0x3F, 0xDA, 0x18, 0xDA, 0x2C, 0xD0, 0x06, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x00, 
40122
  0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xDA, 0x88, 0xF0, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x03, 
40123
  0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x23, 0x03, 0x02, 0x04, 0x03, 0x03, 
40124
  0x00, 0x00, 0x64, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0xCF, 0x03, 
40125
  0x2D, 0x3E, 0x3E, 0xD7, 0x00, 0xCD, 0x00, 0xFD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 
40126
  0xFF, 0xFF, 0x01, 0x05, 0x00, 0x01, 0x04, 0xCE, 0x03, 0x2D, 0x3E, 0x3E, 0xDA, 0x18, 0xDA, 0x82, 
40127
  0xDA, 0x00, 0x05, 0x00, 0xDA, 0x1E, 0x00, 0x05, 0x01, 0xDA, 0x82, 0xE2, 0x00, 0x05, 0x02, 0xDA, 
40128
  0x88, 0xF4, 0x01, 0x05, 0x04, 0xDA, 0x82, 0xE3, 0x2E, 0x03, 0x00, 0x00, 0x19, 0x04, 0x03, 0x00, 
40129
  0x31, 0x04, 0x00, 0x01, 0x2A, 0x05, 0x00, 0x00, 0x34, 0x05, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
40130
  0x00, 0x0A, 0x02, 0x02, 0x02, 0x06, 0x25, 0x00, 0x06, 0xDA, 0x82, 0xE4, 0xDA, 0x18, 0xDA, 0x2C, 
40131
  0xDA, 0x80, 0x8B, 0xDA, 0x82, 0xE5, 0xDA, 0x80, 0x8F, 0xDA, 0x82, 0xE6, 0xDA, 0x82, 0xE7, 0x00, 
40132
  0x25, 0x00, 0xDA, 0x82, 0xF4, 0x00, 0x25, 0x01, 0xDA, 0x80, 0xD8, 0x00, 0x25, 0x02, 0xDA, 0x82, 
40133
  0xE3, 0x17, 0x25, 0x05, 0xDA, 0x82, 0xF5, 0x19, 0x25, 0x06, 0xDA, 0x31, 0x21, 0x25, 0x04, 0xDA, 
40134
  0x82, 0xF6, 0x2F, 0x01, 0x00, 0x00, 0x2A, 0x05, 0x00, 0x00, 0x33, 0x04, 0x05, 0x00, 0x2A, 0x06, 
40135
  0x01, 0x00, 0x23, 0x05, 0x06, 0x04, 0x1C, 0x05, 0x0C, 0x00, 0x29, 0x06, 0x00, 0x00, 0x38, 0x04, 
40136
  0x01, 0x06, 0x29, 0x06, 0x01, 0x00, 0x30, 0x01, 0x06, 0x00, 0x2A, 0x07, 0x02, 0x00, 0x33, 0x06, 
40137
  0x07, 0x00, 0x30, 0x04, 0x06, 0x00, 0x2A, 0x08, 0x03, 0x00, 0x33, 0x07, 0x08, 0x00, 0x19, 0x03, 
40138
  0x07, 0x00, 0x1A, 0x06, 0x00, 0x00, 0x3E, 0x04, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x2A, 0x07, 
40139
  0x03, 0x00, 0x33, 0x06, 0x07, 0x00, 0x19, 0x03, 0x06, 0x00, 0x3B, 0x04, 0x03, 0x00, 0x19, 0x05, 
40140
  0x04, 0x00, 0x3B, 0x04, 0x03, 0x01, 0x19, 0x06, 0x04, 0x00, 0x2F, 0x05, 0x00, 0x00, 0x3E, 0x04, 
40141
  0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x3E, 0x07, 0x00, 0x00, 0x31, 0x04, 0x06, 0x07, 0x2A, 0x09, 
40142
  0x04, 0x00, 0x33, 0x08, 0x09, 0x00, 0x19, 0x04, 0x08, 0x00, 0x30, 0x01, 0x04, 0x00, 0x2A, 0x07, 
40143
  0x05, 0x00, 0x34, 0x07, 0x00, 0x00, 0x85, 0x0C, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x14, 0x00, 
40144
  0x14, 0x00, 0x10, 0x01, 0x19, 0x00, 0x19, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 
40145
  0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFF, 0x10, 0x00, 0x10, 0x02, 0x12, 0x00, 0x12, 0x00, 0x12, 
40146
  0x00, 0x12, 0xBF, 0xFE, 0x10, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x03, 0x10, 0x00, 
40147
  0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x05, 0x00, 
40148
  0x05, 0x00, 0x05, 0x85, 0x0B, 0x03, 0x00, 0x03, 0x06, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0C, 
40149
  0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x63, 0x6C, 0x6F, 0x6E, 0x65, 0xD8, 0x0C, 0x70, 0x61, 
40150
  0x72, 0x73, 0x65, 0x72, 0x2F, 0x63, 0x6C, 0x6F, 0x6E, 0x65, 0xCF, 0x09, 0x65, 0x76, 0x2F, 0x63, 
40151
  0x61, 0x6E, 0x63, 0x65, 0x6C, 0xD8, 0x09, 0x65, 0x76, 0x2F, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 
40152
  0xDA, 0x21, 0xDA, 0x1C, 0xCF, 0x05, 0x61, 0x73, 0x3F, 0x2D, 0x3E, 0xD7, 0x00, 0xCD, 0x02, 0xFF, 
40153
  0x00, 0x00, 0x07, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x03, 0x07, 0x00, 0x02, 0x05, 0xCE, 
40154
  0x05, 0x61, 0x73, 0x3F, 0x2D, 0x3E, 0xDA, 0x18, 0xDA, 0x49, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 
40155
  0x00, 0x06, 0x02, 0x02, 0x02, 0x01, 0x07, 0x00, 0x01, 0x03, 0xCE, 0x08, 0x70, 0x6F, 0x73, 0x74, 
40156
  0x77, 0x61, 0x6C, 0x6B, 0xDA, 0x18, 0xDA, 0x84, 0x13, 0x00, 0x07, 0x00, 0xDA, 0x80, 0xFB, 0x00, 
40157
  0x07, 0x01, 0xDA, 0x82, 0xD3, 0x00, 0x07, 0x02, 0xCF, 0x08, 0x70, 0x6F, 0x73, 0x74, 0x77, 0x61, 
40158
  0x6C, 0x6B, 0x2C, 0x02, 0x00, 0x00, 0x2E, 0x03, 0x00, 0x00, 0x30, 0x03, 0x01, 0x00, 0x2A, 0x05, 
40159
  0x00, 0x00, 0x33, 0x04, 0x05, 0x00, 0x2F, 0x04, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0xCD, 0x00, 
40160
  0xD4, 0x00, 0x00, 0x02, 0x01, 0x01, 0x01, 0x00, 0x04, 0x01, 0x04, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 
40161
  0x00, 0xDA, 0x80, 0xFB, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x82, 0xD3, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 
40162
  0x89, 0x00, 0x00, 0x04, 0x00, 0xDA, 0x1E, 0x2B, 0x01, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00, 0x2B, 
40163
  0x01, 0x00, 0x02, 0x34, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0x85, 0x4F, 0x14, 0x00, 0x14, 0x00, 0x14, 
40164
  0x00, 0x14, 0x85, 0x4B, 0x01, 0x04, 0x0C, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x03, 0x00, 
40165
  0x03, 0x05, 0x00, 0x00, 0x00, 0xDA, 0x77, 0x00, 0x07, 0x00, 0xDA, 0x1E, 0x00, 0x07, 0x01, 0xCF, 
40166
  0x02, 0x61, 0x73, 0x00, 0x07, 0x02, 0xDA, 0x82, 0xE2, 0x00, 0x07, 0x03, 0xDA, 0x88, 0xFB, 0x00, 
40167
  0x07, 0x04, 0xCF, 0x04, 0x70, 0x72, 0x65, 0x76, 0x19, 0x04, 0x00, 0x00, 0x26, 0x06, 0x00, 0x00, 
40168
  0x47, 0x05, 0x02, 0x06, 0x19, 0x06, 0x05, 0x00, 0x2E, 0x05, 0x01, 0x00, 0x33, 0x05, 0x05, 0x00, 
40169
  0x03, 0x04, 0x00, 0x00, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x00, 0x06, 0x01, 
40170
  0x06, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x89, 0x01, 
40171
  0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x82, 0xE2, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x88, 0xFB, 0xBF, 0xFF, 
40172
  0x00, 0x04, 0xDA, 0x89, 0x02, 0x00, 0x06, 0x00, 0xDA, 0x83, 0x92, 0x2B, 0x02, 0x00, 0x01, 0x23, 
40173
  0x01, 0x00, 0x02, 0x1C, 0x01, 0x03, 0x00, 0x2B, 0x02, 0x00, 0x08, 0x03, 0x02, 0x00, 0x00, 0x03, 
40174
  0x00, 0x00, 0x00, 0xBF, 0xFF, 0x85, 0x6B, 0x2A, 0x00, 0x2A, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 
40175
  0x00, 0x26, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x07, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x03, 
40176
  0x1C, 0x01, 0x01, 0x05, 0xCE, 0x06, 0x5F, 0x77, 0x68, 0x69, 0x6C, 0x65, 0xDA, 0x18, 0xDA, 0x49, 
40177
  0xDA, 0x88, 0xFE, 0xDA, 0x77, 0xBF, 0xFF, 0x00, 0x02, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
40178
  0x32, 0x36, 0xBF, 0xFF, 0x00, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x35, 0x06, 
40179
  0x1C, 0x01, 0xDA, 0x82, 0xD3, 0x09, 0x1C, 0x02, 0xDA, 0x60, 0x0E, 0x1C, 0x00, 0xCF, 0x09, 0x6E, 
40180
  0x65, 0x78, 0x74, 0x2D, 0x70, 0x72, 0x65, 0x76, 0x2B, 0x00, 0x00, 0x06, 0x1E, 0x00, 0x02, 0x00, 
40181
  0x04, 0x00, 0x00, 0x00, 0x2B, 0x01, 0x00, 0x02, 0x2B, 0x02, 0x00, 0x06, 0x38, 0x00, 0x01, 0x02, 
40182
  0x19, 0x01, 0x00, 0x00, 0x2A, 0x02, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x19, 0x02, 0x00, 0x00, 
40183
  0x2E, 0x00, 0x00, 0x00, 0x30, 0x00, 0x01, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x33, 0x03, 0x04, 0x00, 
40184
  0x19, 0x00, 0x03, 0x00, 0x2B, 0x04, 0x00, 0x04, 0x30, 0x02, 0x04, 0x00, 0x44, 0x03, 0x00, 0x00, 
40185
  0x2A, 0x05, 0x02, 0x00, 0x31, 0x05, 0x03, 0x00, 0x43, 0x04, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x04, 
40186
  0x2B, 0x05, 0x00, 0x02, 0x2B, 0x06, 0x00, 0x06, 0x47, 0x03, 0x05, 0x06, 0x2D, 0x03, 0x00, 0x06, 
40187
  0x2C, 0x05, 0x00, 0x00, 0x34, 0x05, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x03, 
40188
  0x01, 0x01, 0x01, 0x00, 0x06, 0x02, 0x08, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 
40189
  0xFF, 0x00, 0x01, 0xDA, 0x89, 0x01, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x82, 0xE2, 0xBF, 0xFF, 0x00, 
40190
  0x03, 0xDA, 0x88, 0xFB, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x02, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 
40191
  0x82, 0xD3, 0xBF, 0xFF, 0x01, 0x02, 0xDA, 0x60, 0x00, 0x06, 0x00, 0xDA, 0x83, 0x92, 0x2B, 0x02, 
40192
  0x00, 0x01, 0x23, 0x01, 0x00, 0x02, 0x1C, 0x01, 0x03, 0x00, 0x2B, 0x02, 0x01, 0x02, 0x03, 0x02, 
40193
  0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x85, 0x6B, 0x2A, 0x00, 0x2A, 0x00, 0x26, 
40194
  0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x85, 0x69, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40195
  0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x01, 0x1E, 0x00, 0x14, 0x00, 
40196
  0x14, 0x00, 0x14, 0x00, 0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
40197
  0x0F, 0x00, 0x0F, 0xBF, 0xFD, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40198
  0x04, 0x00, 0x00, 0x00, 0x85, 0x68, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40199
  0x03, 0xBF, 0xF9, 0x01, 0x56, 0x01, 0x00, 0x00, 0xCF, 0x06, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x66, 
40200
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x03, 0x02, 0x03, 0x01, 0x06, 0x00, 0x04, 0xCE, 
40201
  0x06, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x66, 0xDA, 0x18, 0xDA, 0x85, 0xAD, 0x00, 0x06, 0x00, 0xCF, 
40202
  0x03, 0x63, 0x6E, 0x64, 0x00, 0x06, 0x01, 0xDA, 0x80, 0x82, 0x00, 0x06, 0x02, 0xCF, 0x04, 0x66, 
40203
  0x61, 0x6C, 0x73, 0x00, 0x06, 0x03, 0xDA, 0x89, 0x07, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x05, 0x00, 
40204
  0x00, 0x33, 0x04, 0x05, 0x00, 0x1C, 0x04, 0x02, 0x00, 0x03, 0x01, 0x00, 0x00, 0x03, 0x02, 0x00, 
40205
  0x00, 0x8A, 0x7D, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x08, 
40206
  0x63, 0x6F, 0x6D, 0x70, 0x77, 0x68, 0x65, 0x6E, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 
40207
  0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x0A, 0x00, 0x03, 0xCE, 0x08, 0x63, 0x6F, 0x6D, 
40208
  0x70, 0x77, 0x68, 0x65, 0x6E, 0xDA, 0x18, 0xDA, 0x85, 0xAD, 0xDA, 0x84, 0xF0, 0x00, 0x0A, 0x00, 
40209
  0xDA, 0x89, 0x0A, 0x00, 0x0A, 0x01, 0xDA, 0x82, 0xB5, 0x00, 0x0A, 0x02, 0xDA, 0x89, 0x0C, 0x2F, 
40210
  0x00, 0x00, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 0x1C, 0x03, 0x06, 0x00, 0x2A, 
40211
  0x05, 0x01, 0x00, 0x2F, 0x05, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0x43, 0x04, 0x00, 0x00, 0x03, 
40212
  0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x8A, 0x84, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 
40213
  0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0xCF, 0x0D, 0x6B, 
40214
  0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xD8, 0x0D, 0x6B, 0x65, 
40215
  0x79, 0x77, 0x6F, 0x72, 0x64, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xCF, 0x0A, 0x66, 0x69, 0x6C, 
40216
  0x65, 0x2F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0xDA, 0x80, 0xF8, 0xCF, 0x08, 0x6F, 0x73, 0x2F, 0x6D, 
40217
  0x6B, 0x64, 0x69, 0x72, 0xD8, 0x08, 0x6F, 0x73, 0x2F, 0x6D, 0x6B, 0x64, 0x69, 0x72, 0xCF, 0x03, 
40218
  0x2D, 0x3F, 0x3E, 0xD7, 0x00, 0xCD, 0x00, 0xFD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 
40219
  0xFF, 0xFF, 0x01, 0x05, 0x00, 0x01, 0x04, 0xCE, 0x03, 0x2D, 0x3F, 0x3E, 0xDA, 0x18, 0xDA, 0x82, 
40220
  0xDA, 0x00, 0x05, 0x00, 0xDA, 0x1E, 0x00, 0x05, 0x01, 0xDA, 0x82, 0xE2, 0x00, 0x05, 0x02, 0xDA, 
40221
  0x89, 0x14, 0x01, 0x05, 0x04, 0xDA, 0x82, 0xE3, 0x2E, 0x03, 0x00, 0x00, 0x19, 0x04, 0x03, 0x00, 
40222
  0x31, 0x04, 0x00, 0x01, 0x2A, 0x05, 0x00, 0x00, 0x34, 0x05, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
40223
  0x00, 0x0E, 0x02, 0x02, 0x02, 0x09, 0x2F, 0x00, 0x07, 0xDA, 0x82, 0xE4, 0xDA, 0x18, 0xDA, 0x2C, 
40224
  0xDA, 0x80, 0x8B, 0xDA, 0x82, 0xE5, 0xDA, 0x80, 0x8F, 0xDA, 0x49, 0xDA, 0x82, 0xE6, 0xDA, 0x82, 
40225
  0xE7, 0xDA, 0x4F, 0xDA, 0x82, 0xB4, 0x00, 0x2F, 0x00, 0xDA, 0x82, 0xF4, 0x00, 0x2F, 0x01, 0xDA, 
40226
  0x80, 0xD8, 0x00, 0x2F, 0x02, 0xDA, 0x82, 0xE3, 0x17, 0x2F, 0x05, 0xDA, 0x82, 0xF5, 0x19, 0x2F, 
40227
  0x06, 0xDA, 0x31, 0x1C, 0x2F, 0x07, 0xDA, 0x60, 0x22, 0x2F, 0x08, 0xDA, 0x82, 0xF6, 0x2F, 0x01, 
40228
  0x00, 0x00, 0x2A, 0x05, 0x00, 0x00, 0x33, 0x04, 0x05, 0x00, 0x2A, 0x06, 0x01, 0x00, 0x23, 0x05, 
40229
  0x06, 0x04, 0x1C, 0x05, 0x0C, 0x00, 0x29, 0x06, 0x00, 0x00, 0x38, 0x04, 0x01, 0x06, 0x29, 0x06, 
40230
  0x01, 0x00, 0x30, 0x01, 0x06, 0x00, 0x2A, 0x07, 0x02, 0x00, 0x33, 0x06, 0x07, 0x00, 0x30, 0x04, 
40231
  0x06, 0x00, 0x2A, 0x08, 0x03, 0x00, 0x33, 0x07, 0x08, 0x00, 0x19, 0x03, 0x07, 0x00, 0x1A, 0x06, 
40232
  0x00, 0x00, 0x3E, 0x04, 0x00, 0x00, 0x30, 0x01, 0x04, 0x00, 0x2A, 0x07, 0x03, 0x00, 0x33, 0x06, 
40233
  0x07, 0x00, 0x19, 0x03, 0x06, 0x00, 0x3B, 0x04, 0x03, 0x00, 0x19, 0x05, 0x04, 0x00, 0x3B, 0x04, 
40234
  0x03, 0x01, 0x19, 0x06, 0x04, 0x00, 0x2A, 0x07, 0x04, 0x00, 0x33, 0x04, 0x07, 0x00, 0x19, 0x07, 
40235
  0x04, 0x00, 0x30, 0x05, 0x07, 0x00, 0x3E, 0x08, 0x00, 0x00, 0x30, 0x08, 0x06, 0x00, 0x2A, 0x0A, 
40236
  0x05, 0x00, 0x33, 0x09, 0x0A, 0x00, 0x19, 0x08, 0x09, 0x00, 0x30, 0x07, 0x00, 0x00, 0x44, 0x0A, 
40237
  0x00, 0x00, 0x30, 0x01, 0x08, 0x00, 0x2A, 0x0C, 0x06, 0x00, 0x33, 0x0B, 0x0C, 0x00, 0x2A, 0x0D, 
40238
  0x07, 0x00, 0x31, 0x0D, 0x07, 0x0B, 0x43, 0x0C, 0x00, 0x00, 0x2A, 0x0D, 0x08, 0x00, 0x31, 0x0D, 
40239
  0x0A, 0x0C, 0x43, 0x0B, 0x00, 0x00, 0x03, 0x0B, 0x00, 0x00, 0x85, 0x1B, 0x1E, 0x00, 0x1E, 0x00, 
40240
  0x1E, 0x00, 0x14, 0x00, 0x14, 0x00, 0x10, 0x01, 0x19, 0x00, 0x19, 0x00, 0x22, 0x00, 0x22, 0x00, 
40241
  0x22, 0x00, 0x22, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFF, 0x10, 0x00, 0x10, 0x02, 0x12, 
40242
  0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFE, 0x10, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
40243
  0x05, 0x03, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 
40244
  0x10, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x05, 0x00, 
40245
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x85, 0x1A, 0x03, 0x00, 0x03, 
40246
  0x07, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0E, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x6C, 
40247
  0x6F, 0x61, 0x64, 0x69, 0x6E, 0x67, 0xDA, 0x87, 0x84, 0xCF, 0x09, 0x77, 0x69, 0x74, 0x68, 0x2D, 
40248
  0x73, 0x79, 0x6D, 0x73, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0C, 0x01, 0x01, 0xCD, 0x7F, 
40249
  0xFF, 0xFF, 0xFF, 0x03, 0x15, 0x00, 0x06, 0xCE, 0x09, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x73, 0x79, 
40250
  0x6D, 0x73, 0xDA, 0x18, 0xD2, 0x01, 0x00, 0xDA, 0x49, 0xDA, 0x81, 0x8C, 0xDA, 0x82, 0xB4, 0x00, 
40251
  0x15, 0x00, 0xDA, 0x88, 0x5E, 0x00, 0x15, 0x01, 0xDA, 0x82, 0xB5, 0x00, 0x15, 0x02, 0xDA, 0x89, 
40252
  0x18, 0x00, 0x15, 0x03, 0xDA, 0x80, 0x90, 0x02, 0x15, 0x05, 0xDA, 0x80, 0x84, 0x04, 0x15, 0x07, 
40253
  0xDA, 0x82, 0xDE, 0x29, 0x03, 0x00, 0x00, 0x3D, 0x04, 0x00, 0x00, 0x19, 0x05, 0x04, 0x00, 0x3E, 
40254
  0x06, 0x00, 0x00, 0x19, 0x07, 0x06, 0x00, 0x21, 0x08, 0x03, 0x05, 0x1C, 0x08, 0x08, 0x00, 0x38, 
40255
  0x09, 0x00, 0x03, 0x2A, 0x0A, 0x00, 0x00, 0x31, 0x07, 0x09, 0x0A, 0x2A, 0x0B, 0x01, 0x00, 0x33, 
40256
  0x0A, 0x0B, 0x00, 0x05, 0x03, 0x03, 0x01, 0x1A, 0xF8, 0xFF, 0xFF, 0x32, 0x07, 0x00, 0x00, 0x43, 
40257
  0x08, 0x00, 0x00, 0x2A, 0x0A, 0x02, 0x00, 0x30, 0x0A, 0x08, 0x00, 0x32, 0x01, 0x00, 0x00, 0x43, 
40258
  0x09, 0x00, 0x00, 0x03, 0x09, 0x00, 0x00, 0x81, 0x38, 0x03, 0x01, 0x0C, 0x00, 0x03, 0x01, 0x03, 
40259
  0x00, 0x03, 0x01, 0x0A, 0x00, 0x03, 0x01, 0x17, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
40260
  0x01, 0x05, 0xBF, 0xFE, 0x03, 0x03, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40261
  0x03, 0x00, 0x03, 0xDA, 0x83, 0xAA, 0xDA, 0x83, 0xA7, 0xCF, 0x08, 0x63, 0x6F, 0x6D, 0x70, 0x74, 
40262
  0x69, 0x6D, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x03, 
40263
  0x00, 0x02, 0xCE, 0x08, 0x63, 0x6F, 0x6D, 0x70, 0x74, 0x69, 0x6D, 0x65, 0xDA, 0x18, 0xDA, 0x85, 
40264
  0xAD, 0x00, 0x03, 0x00, 0xDA, 0x1E, 0x00, 0x03, 0x01, 0xDA, 0x89, 0x1C, 0x2F, 0x00, 0x00, 0x00, 
40265
  0x2A, 0x02, 0x00, 0x00, 0x34, 0x02, 0x00, 0x00, 0x8A, 0x78, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 
40266
  0x06, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0xDA, 0x88, 0x75, 0xCF, 0x04, 0x68, 0x61, 0x73, 0x68, 
40267
  0xD8, 0x04, 0x68, 0x61, 0x73, 0x68, 0xCF, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x63, 0x6F, 0x73, 
40268
  0x68, 0xD8, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x63, 0x6F, 0x73, 0x68, 0xCF, 0x0C, 0x70, 0x61, 
40269
  0x72, 0x73, 0x65, 0x72, 0x2F, 0x65, 0x72, 0x72, 0x6F, 0x72, 0xDA, 0x85, 0xA9, 0xCF, 0x0A, 0x64, 
40270
  0x65, 0x62, 0x75, 0x67, 0x2F, 0x73, 0x74, 0x65, 0x70, 0xDA, 0x81, 0x07, 0xCF, 0x04, 0x74, 0x68, 
40271
  0x61, 0x77, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x01, 0x01, 0x01, 0x0B, 0x2A, 0x00, 
40272
  0x03, 0xCE, 0x04, 0x74, 0x68, 0x61, 0x77, 0xDA, 0x18, 0xDA, 0x2C, 0xDA, 0x5D, 0xDA, 0x84, 0x1B, 
40273
  0xDA, 0x80, 0x8B, 0xDA, 0x80, 0x8A, 0xD8, 0x13, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x70, 0x72, 
40274
  0x6F, 0x74, 0x6F, 0x2D, 0x66, 0x6C, 0x61, 0x74, 0x74, 0x65, 0x6E, 0xDA, 0x84, 0x15, 0xDA, 0x80, 
40275
  0x89, 0xD8, 0x14, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x2D, 
40276
  0x66, 0x6C, 0x61, 0x74, 0x74, 0x65, 0x6E, 0xDA, 0x2D, 0xDA, 0x84, 0x59, 0x00, 0x2A, 0x00, 0xDA, 
40277
  0x24, 0x00, 0x2A, 0x01, 0xDA, 0x89, 0x26, 0x04, 0x2A, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
40278
  0x30, 0x34, 0x68, 0x2C, 0x01, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 
40279
  0x02, 0x03, 0x00, 0x19, 0x03, 0x02, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x23, 0x02, 0x03, 0x04, 0x1C, 
40280
  0x02, 0x04, 0x00, 0x30, 0x01, 0x00, 0x00, 0x2A, 0x04, 0x02, 0x00, 0x34, 0x04, 0x00, 0x00, 0x2A, 
40281
  0x05, 0x03, 0x00, 0x23, 0x04, 0x03, 0x05, 0x1C, 0x04, 0x04, 0x00, 0x30, 0x01, 0x00, 0x00, 0x2A, 
40282
  0x05, 0x02, 0x00, 0x34, 0x05, 0x00, 0x00, 0x2A, 0x06, 0x04, 0x00, 0x23, 0x05, 0x03, 0x06, 0x1C, 
40283
  0x05, 0x07, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x07, 0x05, 0x00, 0x33, 0x06, 0x07, 0x00, 0x30, 
40284
  0x01, 0x06, 0x00, 0x2A, 0x07, 0x06, 0x00, 0x34, 0x07, 0x00, 0x00, 0x2A, 0x07, 0x07, 0x00, 0x23, 
40285
  0x06, 0x03, 0x07, 0x1C, 0x06, 0x07, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x08, 0x08, 0x00, 0x33, 
40286
  0x07, 0x08, 0x00, 0x30, 0x01, 0x07, 0x00, 0x2A, 0x08, 0x06, 0x00, 0x34, 0x08, 0x00, 0x00, 0x2A, 
40287
  0x08, 0x09, 0x00, 0x23, 0x07, 0x03, 0x08, 0x1C, 0x07, 0x04, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 
40288
  0x08, 0x0A, 0x00, 0x34, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x88, 0x81, 0x01, 0x05, 0x09, 
40289
  0x00, 0x09, 0x00, 0x09, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x0C, 
40290
  0x00, 0x0C, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 
40291
  0xFE, 0x03, 0x00, 0x03, 0x00, 0x03, 0x03, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x0C, 
40292
  0x00, 0x0C, 0xBF, 0xFD, 0x03, 0x00, 0x03, 0x00, 0x03, 0x04, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 
40293
  0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xFC, 0x03, 0x00, 0x03, 0x00, 0x03, 0x05, 0x0D, 0x00, 0x0D, 
40294
  0x00, 0x0D, 0xBF, 0xFB, 0x03, 0xCF, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0x72, 0x66, 0xD8, 
40295
  0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0x72, 0x66, 0xDA, 0x81, 0xCC, 0xDA, 0x81, 0xC8, 0xCF, 
40296
  0x0C, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xD8, 0x0C, 0x62, 
40297
  0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xCF, 0x0B, 0x64, 0x65, 0x62, 
40298
  0x75, 0x67, 0x2F, 0x62, 0x72, 0x65, 0x61, 0x6B, 0xD8, 0x0B, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 
40299
  0x62, 0x72, 0x65, 0x61, 0x6B, 0xCF, 0x0C, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x73, 0x74, 
40300
  0x61, 0x74, 0x65, 0xD8, 0x0C, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x73, 0x74, 0x61, 0x74, 
40301
  0x65, 0xDA, 0x5E, 0xDA, 0x5B, 0xCF, 0x0C, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x69, 0x6E, 0x73, 
40302
  0x65, 0x72, 0x74, 0xD8, 0x0C, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x69, 0x6E, 0x73, 0x65, 0x72, 
40303
  0x74, 0xCF, 0x0E, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x75, 0x6E, 0x66, 0x62, 0x72, 0x65, 0x61, 
40304
  0x6B, 0xDA, 0x81, 0x29, 0xCF, 0x0D, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x2F, 0x76, 0x65, 0x72, 0x73, 
40305
  0x69, 0x6F, 0x6E, 0xCE, 0x0A, 0x31, 0x2E, 0x32, 0x38, 0x2E, 0x30, 0x2D, 0x64, 0x65, 0x76, 0xCF, 
40306
  0x0F, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x67, 0x65, 0x74, 0x70, 0x72, 0x6F, 0x74, 0x6F, 
40307
  0xD8, 0x0F, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x67, 0x65, 0x74, 0x70, 0x72, 0x6F, 0x74, 
40308
  0x6F, 0xDA, 0x82, 0x53, 0xDA, 0x82, 0x50, 0xDA, 0x89, 0x00, 0xDA, 0x88, 0xFE, 0xCF, 0x03, 0x64, 
40309
  0x6F, 0x63, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x00, 0x01, 0x02, 0x07, 0x00, 
40310
  0x02, 0xCE, 0x03, 0x64, 0x6F, 0x63, 0xDA, 0x18, 0xDA, 0x84, 0xF2, 0xDA, 0x88, 0xA1, 0x00, 0x07, 
40311
  0x00, 0xDA, 0x60, 0x00, 0x07, 0x01, 0xDA, 0x89, 0x3B, 0x2A, 0x03, 0x00, 0x00, 0x30, 0x03, 0x00, 
40312
  0x00, 0x43, 0x02, 0x00, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x30, 0x04, 0x02, 0x00, 0x43, 0x03, 0x00, 
40313
  0x00, 0x03, 0x03, 0x00, 0x00, 0x8D, 0x52, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40314
  0x00, 0x03, 0x00, 0x03, 0xDA, 0x82, 0x05, 0xDA, 0x81, 0xE4, 0xCF, 0x14, 0x73, 0x74, 0x72, 0x75, 
40315
  0x63, 0x74, 0x2F, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x2D, 0x66, 0x6C, 0x61, 0x74, 0x74, 0x65, 0x6E, 
40316
  0xDA, 0x89, 0x2A, 0xCF, 0x09, 0x64, 0x65, 0x66, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2D, 0xD7, 0x00, 
40317
  0xCD, 0x00, 0xDD, 0x00, 0x00, 0x05, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x03, 0x06, 0x00, 
40318
  0x03, 0xCE, 0x09, 0x64, 0x65, 0x66, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2D, 0xDA, 0x18, 0xDA, 0x3D, 
40319
  0xDA, 0x5A, 0xDA, 0x84, 0x56, 0x00, 0x06, 0x00, 0xDA, 0x83, 0x0F, 0x00, 0x06, 0x01, 0xDA, 0x83, 
40320
  0x10, 0x00, 0x06, 0x02, 0xDA, 0x89, 0x3F, 0x2A, 0x03, 0x00, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x31, 
40321
  0x00, 0x03, 0x04, 0x32, 0x01, 0x00, 0x00, 0x2A, 0x03, 0x02, 0x00, 0x34, 0x03, 0x00, 0x00, 0x3E, 
40322
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x06, 0x73, 0x6F, 0x72, 
40323
  0x74, 0x65, 0x64, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x02, 0x01, 0x02, 0x02, 0x06, 
40324
  0x00, 0x03, 0xCE, 0x06, 0x73, 0x6F, 0x72, 0x74, 0x65, 0x64, 0xDA, 0x18, 0xDA, 0x82, 0xE5, 0xDA, 
40325
  0x88, 0x2D, 0x00, 0x06, 0x00, 0xDA, 0x1F, 0x00, 0x06, 0x01, 0xDA, 0x88, 0x37, 0x00, 0x06, 0x02, 
40326
  0xDA, 0x89, 0x42, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 0x30, 
40327
  0x03, 0x01, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x34, 0x04, 0x00, 0x00, 0x83, 0x60, 0x09, 0x00, 0x09, 
40328
  0x00, 0x09, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x88, 0xB4, 0xDA, 0x88, 0xA5, 0xCF, 0x0B, 
40329
  0x64, 0x69, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x72, 0x79, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
40330
  0x00, 0x00, 0x07, 0x01, 0x01, 0x01, 0x03, 0x0C, 0x00, 0x03, 0xCE, 0x0B, 0x64, 0x69, 0x63, 0x74, 
40331
  0x69, 0x6F, 0x6E, 0x61, 0x72, 0x79, 0x3F, 0xDA, 0x18, 0xDA, 0x2C, 0xDA, 0x80, 0x8A, 0xDA, 0x80, 
40332
  0x89, 0x00, 0x0C, 0x00, 0xDA, 0x1E, 0x00, 0x0C, 0x01, 0xDA, 0x89, 0x45, 0x03, 0x0C, 0x03, 0xDA, 
40333
  0x31, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x19, 0x03, 0x02, 
40334
  0x00, 0x2A, 0x05, 0x01, 0x00, 0x23, 0x04, 0x03, 0x05, 0x1C, 0x04, 0x03, 0x00, 0x27, 0x05, 0x00, 
40335
  0x00, 0x03, 0x05, 0x00, 0x00, 0x2A, 0x06, 0x02, 0x00, 0x23, 0x05, 0x03, 0x06, 0x03, 0x05, 0x00, 
40336
  0x00, 0x76, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 
40337
  0x03, 0x00, 0x03, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0xDA, 0x82, 0xF3, 0xDA, 0x82, 0xE7, 0xCF, 
40338
  0x07, 0x2A, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2A, 0xDA, 0x80, 0xC8, 0xDA, 0x88, 0xB7, 0xDA, 0x88, 
40339
  0xB5, 0xCF, 0x08, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0xDA, 0x88, 0xB8, 0xCF, 0x13, 
40340
  0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x2D, 0x70, 0x65, 0x67, 0x2D, 0x67, 0x72, 0x61, 0x6D, 
40341
  0x6D, 0x61, 0x72, 0xD3, 0x14, 0xD0, 0x02, 0x73, 0x2A, 0xD2, 0x02, 0x00, 0xCF, 0x03, 0x61, 0x6E, 
40342
  0x79, 0xD0, 0x01, 0x73, 0xD0, 0x02, 0x73, 0x2B, 0xD2, 0x02, 0x00, 0xCF, 0x04, 0x73, 0x6F, 0x6D, 
40343
  0x65, 0xDA, 0x89, 0x4E, 0xD0, 0x01, 0x61, 0xD2, 0x03, 0x00, 0xCF, 0x05, 0x72, 0x61, 0x6E, 0x67, 
40344
  0x65, 0xCE, 0x02, 0x61, 0x7A, 0xCE, 0x02, 0x41, 0x5A, 0xD0, 0x02, 0x77, 0x2B, 0xD2, 0x02, 0x00, 
40345
  0xDA, 0x89, 0x51, 0xD0, 0x01, 0x77, 0xD0, 0x02, 0x77, 0x2A, 0xD2, 0x02, 0x00, 0xDA, 0x89, 0x4D, 
40346
  0xDA, 0x89, 0x59, 0xD0, 0x01, 0x64, 0xD2, 0x02, 0x00, 0xDA, 0x89, 0x54, 0xCE, 0x02, 0x30, 0x39, 
40347
  0xD0, 0x01, 0x68, 0xD2, 0x04, 0x00, 0xDA, 0x89, 0x54, 0xDA, 0x89, 0x5E, 0xCE, 0x02, 0x61, 0x66, 
40348
  0xCE, 0x02, 0x41, 0x46, 0xD0, 0x02, 0x64, 0x2A, 0xD2, 0x02, 0x00, 0xDA, 0x89, 0x4D, 0xDA, 0x89, 
40349
  0x5D, 0xD0, 0x02, 0x64, 0x2B, 0xD2, 0x02, 0x00, 0xDA, 0x89, 0x51, 0xDA, 0x89, 0x5D, 0xD0, 0x02, 
40350
  0x68, 0x2A, 0xD2, 0x02, 0x00, 0xDA, 0x89, 0x4D, 0xDA, 0x89, 0x60, 0xDA, 0x89, 0x4E, 0xD2, 0x02, 
40351
  0x00, 0xDA, 0x3A, 0xCE, 0x07, 0x20, 0x09, 0x0D, 0x0A, 0x00, 0x0C, 0x0B, 0xD0, 0x02, 0x68, 0x2B, 
40352
  0xD2, 0x02, 0x00, 0xDA, 0x89, 0x51, 0xDA, 0x89, 0x60, 0xDA, 0x89, 0x59, 0xD2, 0x04, 0x00, 0xDA, 
40353
  0x89, 0x54, 0xDA, 0x89, 0x55, 0xDA, 0x89, 0x56, 0xDA, 0x89, 0x5E, 0xD0, 0x01, 0x41, 0xD2, 0x03, 
40354
  0x00, 0xDA, 0x87, 0xA8, 0xDA, 0x89, 0x53, 0x01, 0xD0, 0x01, 0x44, 0xD2, 0x03, 0x00, 0xDA, 0x87, 
40355
  0xA8, 0xDA, 0x89, 0x5D, 0x01, 0xD0, 0x01, 0x48, 0xD2, 0x03, 0x00, 0xDA, 0x87, 0xA8, 0xDA, 0x89, 
40356
  0x60, 0x01, 0xD0, 0x02, 0x61, 0x2A, 0xD2, 0x02, 0x00, 0xDA, 0x89, 0x4D, 0xDA, 0x89, 0x53, 0xD0, 
40357
  0x02, 0x61, 0x2B, 0xD2, 0x02, 0x00, 0xDA, 0x89, 0x51, 0xDA, 0x89, 0x53, 0xD0, 0x01, 0x53, 0xD2, 
40358
  0x03, 0x00, 0xDA, 0x87, 0xA8, 0xDA, 0x89, 0x4E, 0x01, 0xD0, 0x01, 0x57, 0xD2, 0x03, 0x00, 0xDA, 
40359
  0x87, 0xA8, 0xDA, 0x89, 0x59, 0x01, 0xCF, 0x0A, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x63, 0x63, 0x65, 
40360
  0x70, 0x74, 0xD8, 0x0A, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0xCF, 0x0A, 
40361
  0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0xD8, 0x0A, 0x61, 0x72, 0x72, 0x61, 
40362
  0x79, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0xCF, 0x0E, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x67, 0x65, 
40363
  0x74, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0xDA, 0x88, 0xA9, 0xCF, 0x06, 0x64, 0x6F, 0x63, 0x2D, 0x6F, 
40364
  0x66, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0E, 0x01, 0x01, 0x01, 0x07, 0x33, 0x00, 0x0E, 
40365
  0xCE, 0x06, 0x64, 0x6F, 0x63, 0x2D, 0x6F, 0x66, 0xDA, 0x18, 0xD2, 0x02, 0x00, 0xD2, 0x01, 0x00, 
40366
  0xDA, 0x00, 0xDA, 0x87, 0x23, 0xDA, 0x59, 0xDA, 0x06, 0xDA, 0x88, 0xCB, 0xCE, 0x18, 0x64, 0x6F, 
40367
  0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x6F, 0x72, 0x20, 
40368
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0xDA, 0x88, 0xD9, 0xDA, 0x81, 0x5C, 0x00, 0x33, 0x00, 0xDA, 
40369
  0x1E, 0x00, 0x33, 0x01, 0xDA, 0x89, 0x82, 0x00, 0x33, 0x02, 0xCF, 0x05, 0x66, 0x6F, 0x75, 0x6E, 
40370
  0x64, 0x01, 0x2C, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x52, 0x04, 0x2C, 0x05, 
40371
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x51, 0x07, 0x2C, 0x06, 0xCF, 0x0A, 0x6D, 0x6F, 
40372
  0x64, 0x75, 0x6C, 0x65, 0x2D, 0x73, 0x65, 0x74, 0x07, 0x2A, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
40373
  0x30, 0x30, 0x35, 0x50, 0x0A, 0x2A, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x4F, 
40374
  0x0D, 0x2A, 0x08, 0xDA, 0x5F, 0x0D, 0x28, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 
40375
  0x4E, 0x10, 0x28, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x4D, 0x13, 0x28, 0x0A, 
40376
  0xDA, 0x25, 0x16, 0x1D, 0x0B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x53, 0x1D, 0x26, 
40377
  0x0B, 0xCF, 0x05, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x28, 0x02, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 
40378
  0x26, 0x05, 0x00, 0x00, 0x47, 0x04, 0x03, 0x05, 0x19, 0x05, 0x04, 0x00, 0x1D, 0x05, 0x27, 0x00, 
40379
  0x38, 0x04, 0x03, 0x05, 0x19, 0x06, 0x04, 0x00, 0x26, 0x07, 0x00, 0x00, 0x47, 0x04, 0x06, 0x07, 
40380
  0x19, 0x07, 0x04, 0x00, 0x1D, 0x07, 0x1F, 0x00, 0x38, 0x04, 0x06, 0x07, 0x19, 0x08, 0x04, 0x00, 
40381
  0x26, 0x09, 0x00, 0x00, 0x47, 0x04, 0x08, 0x09, 0x19, 0x09, 0x04, 0x00, 0x1D, 0x09, 0x17, 0x00, 
40382
  0x38, 0x04, 0x08, 0x09, 0x19, 0x0A, 0x04, 0x00, 0x2A, 0x0B, 0x01, 0x00, 0x39, 0x04, 0x0A, 0x0B, 
40383
  0x19, 0x0B, 0x04, 0x00, 0x1C, 0x0B, 0x03, 0x00, 0x19, 0x04, 0x0B, 0x00, 0x1A, 0x04, 0x00, 0x00, 
40384
  0x2A, 0x0D, 0x02, 0x00, 0x39, 0x0C, 0x0A, 0x0D, 0x19, 0x04, 0x0C, 0x00, 0x19, 0x0B, 0x04, 0x00, 
40385
  0x23, 0x04, 0x0B, 0x00, 0x1C, 0x04, 0x07, 0x00, 0x2F, 0x0A, 0x00, 0x00, 0x2A, 0x0D, 0x03, 0x00, 
40386
  0x33, 0x0C, 0x0D, 0x00, 0x27, 0x02, 0x00, 0x00, 0x1A, 0x04, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 
40387
  0x47, 0x09, 0x08, 0x09, 0x1A, 0xEA, 0xFF, 0xFF, 0x47, 0x07, 0x06, 0x07, 0x1A, 0xE2, 0xFF, 0xFF, 
40388
  0x47, 0x05, 0x03, 0x05, 0x1A, 0xDA, 0xFF, 0xFF, 0x1C, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 
40389
  0x2A, 0x03, 0x04, 0x00, 0x2A, 0x04, 0x05, 0x00, 0x31, 0x03, 0x00, 0x04, 0x2A, 0x03, 0x06, 0x00, 
40390
  0x34, 0x03, 0x00, 0x00, 0x8D, 0x58, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40391
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40392
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x03, 0x15, 0x00, 
40393
  0x15, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x26, 0x00, 0x26, 0x00, 0x11, 0x00, 
40394
  0x05, 0x01, 0x0D, 0x00, 0x07, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x09, 0x01, 0x09, 0xBF, 
40395
  0xFD, 0x07, 0xBF, 0xFC, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x08, 
40396
  0x03, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDA, 0x82, 0xF1, 
40397
  0xDA, 0x82, 0xEA, 0xCF, 0x0B, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x63, 0x6C, 0x65, 0x61, 0x72, 
40398
  0xD8, 0x0B, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x63, 0x6C, 0x65, 0x61, 0x72, 0xCF, 0x07, 0x6F, 
40399
  0x73, 0x2F, 0x6C, 0x69, 0x6E, 0x6B, 0xD8, 0x07, 0x6F, 0x73, 0x2F, 0x6C, 0x69, 0x6E, 0x6B, 0xCF, 
40400
  0x08, 0x65, 0x76, 0x2F, 0x73, 0x6C, 0x65, 0x65, 0x70, 0xD8, 0x08, 0x65, 0x76, 0x2F, 0x73, 0x6C, 
40401
  0x65, 0x65, 0x70, 0xCF, 0x08, 0x66, 0x66, 0x69, 0x2F, 0x66, 0x72, 0x65, 0x65, 0xD8, 0x08, 0x66, 
40402
  0x66, 0x69, 0x2F, 0x66, 0x72, 0x65, 0x65, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x73, 
40403
  0x69, 0x6E, 0x68, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x73, 0x69, 0x6E, 0x68, 0xDA, 
40404
  0x82, 0x12, 0xDA, 0x82, 0x0D, 0xCF, 0x06, 0x67, 0x65, 0x6E, 0x73, 0x79, 0x6D, 0xDA, 0x49, 0xCF, 
40405
  0x06, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0xDA, 0x84, 0x59, 0xCF, 0x09, 0x76, 0x61, 0x72, 0x67, 
40406
  0x6C, 0x6F, 0x62, 0x61, 0x6C, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x02, 0x02, 0x02, 
40407
  0x03, 0x0D, 0x00, 0x04, 0xCE, 0x09, 0x76, 0x61, 0x72, 0x67, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0xDA, 
40408
  0x18, 0xDA, 0x86, 0xCA, 0xDA, 0x59, 0xDA, 0x81, 0x60, 0x00, 0x0D, 0x00, 0xDA, 0x83, 0x0F, 0x00, 
40409
  0x0D, 0x01, 0xDA, 0x82, 0xDC, 0x00, 0x0D, 0x02, 0xDA, 0x89, 0x9E, 0x03, 0x0D, 0x04, 0xCF, 0x05, 
40410
  0x6E, 0x61, 0x6D, 0x65, 0x2A, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 
40411
  0x00, 0x19, 0x04, 0x03, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x3E, 0x05, 0x00, 0x00, 0x2A, 0x06, 0x01, 
40412
  0x00, 0x30, 0x06, 0x05, 0x00, 0x42, 0x05, 0x00, 0x00, 0x30, 0x04, 0x05, 0x00, 0x2A, 0x07, 0x02, 
40413
  0x00, 0x33, 0x06, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5E, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 
40414
  0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40415
  0x03, 0xBF, 0xFC, 0x01, 0xCF, 0x05, 0x2A, 0x65, 0x72, 0x72, 0x2A, 0xD0, 0x03, 0x65, 0x72, 0x72, 
40416
  0xCF, 0x05, 0x7A, 0x65, 0x72, 0x6F, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 
40417
  0x01, 0x01, 0x01, 0x06, 0x00, 0x02, 0xCE, 0x05, 0x7A, 0x65, 0x72, 0x6F, 0x3F, 0xDA, 0x18, 0xDA, 
40418
  0x85, 0xC7, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xDA, 0x89, 0xA4, 0x29, 0x02, 0x00, 
40419
  0x00, 0x30, 0x00, 0x02, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x24, 0x03, 0x02, 
40420
  0x00, 0x03, 0x03, 0x00, 0x00, 0x83, 0x27, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x27, 
40421
  0x00, 0x27, 0xCF, 0x09, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 0xDA, 0x81, 0x5E, 
40422
  0xCF, 0x04, 0x66, 0x69, 0x6E, 0x64, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x03, 0x02, 
40423
  0x03, 0x00, 0x12, 0x00, 0x07, 0xCE, 0x04, 0x66, 0x69, 0x6E, 0x64, 0xDA, 0x18, 0x00, 0x12, 0x00, 
40424
  0xDA, 0x83, 0x2E, 0x00, 0x12, 0x01, 0xDA, 0x1F, 0x00, 0x12, 0x02, 0xDA, 0x20, 0x00, 0x12, 0x03, 
40425
  0xDA, 0x89, 0xA8, 0x00, 0x12, 0x04, 0xDA, 0x22, 0x01, 0x12, 0x05, 0xDA, 0x23, 0x09, 0x11, 0x07, 
40426
  0xDA, 0x84, 0xD0, 0x26, 0x04, 0x00, 0x00, 0x19, 0x05, 0x02, 0x00, 0x47, 0x04, 0x01, 0x04, 0x26, 
40427
  0x07, 0x00, 0x00, 0x23, 0x06, 0x04, 0x07, 0x1C, 0x06, 0x03, 0x00, 0x1A, 0x0B, 0x00, 0x00, 0x1A, 
40428
  0x01, 0x00, 0x00, 0x38, 0x06, 0x01, 0x04, 0x19, 0x07, 0x06, 0x00, 0x2F, 0x07, 0x00, 0x00, 0x33, 
40429
  0x06, 0x00, 0x00, 0x1C, 0x06, 0x04, 0x00, 0x19, 0x05, 0x07, 0x00, 0x1A, 0x03, 0x00, 0x00, 0x1A, 
40430
  0x01, 0x00, 0x00, 0x1A, 0xF2, 0xFF, 0xFF, 0x03, 0x05, 0x00, 0x00, 0x84, 0x24, 0x03, 0x01, 0x03, 
40431
  0x02, 0x0C, 0x01, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x13, 0x00, 0x05, 0x01, 0x0F, 0x00, 0x05, 
40432
  0x01, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x01, 0x07, 0x01, 0x07, 0xBF, 0xFE, 0x05, 0xBF, 0xFC, 0x03, 
40433
  0xBF, 0xFA, 0x01, 0xCF, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x63, 0x62, 0x72, 0x74, 0xD8, 0x09, 
40434
  0x6D, 0x61, 0x74, 0x68, 0x2F, 0x63, 0x62, 0x72, 0x74, 0xCF, 0x0E, 0x62, 0x75, 0x66, 0x66, 0x65, 
40435
  0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x61, 0x74, 0xD8, 0x0E, 0x62, 0x75, 0x66, 0x66, 0x65, 
40436
  0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x61, 0x74, 0xCF, 0x0B, 0x64, 0x65, 0x62, 0x75, 0x67, 
40437
  0x2F, 0x73, 0x74, 0x61, 0x63, 0x6B, 0xDA, 0x80, 0xE1, 0xCF, 0x10, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 
40438
  0x65, 0x2F, 0x61, 0x64, 0x64, 0x2D, 0x70, 0x61, 0x74, 0x68, 0x73, 0xD7, 0x00, 0xCD, 0x00, 0xFC, 
40439
  0x00, 0x00, 0x13, 0x02, 0x02, 0x02, 0x0C, 0x40, 0x00, 0x01, 0x08, 0xCE, 0x10, 0x6D, 0x6F, 0x64, 
40440
  0x75, 0x6C, 0x65, 0x2F, 0x61, 0x64, 0x64, 0x2D, 0x70, 0x61, 0x74, 0x68, 0x73, 0xDA, 0x18, 0xCE, 
40441
  0x06, 0x3A, 0x40, 0x61, 0x6C, 0x6C, 0x3A, 0xDA, 0x80, 0xF5, 0xDA, 0x87, 0x52, 0xDA, 0x87, 0x20, 
40442
  0xDA, 0x89, 0x35, 0xCE, 0x06, 0x2E, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0xDA, 0x87, 0x47, 0xCE, 0x05, 
40443
  0x3A, 0x73, 0x79, 0x73, 0x3A, 0xCE, 0x0B, 0x3A, 0x73, 0x79, 0x73, 0x3A, 0x2F, 0x3A, 0x61, 0x6C, 
40444
  0x6C, 0x3A, 0xDA, 0x87, 0x39, 0xCE, 0x0B, 0x3A, 0x63, 0x75, 0x72, 0x3A, 0x2F, 0x3A, 0x61, 0x6C, 
40445
  0x6C, 0x3A, 0xDA, 0x87, 0x2D, 0x00, 0x40, 0x00, 0xCF, 0x03, 0x65, 0x78, 0x74, 0x00, 0x40, 0x01, 
40446
  0xCF, 0x06, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x00, 0x40, 0x02, 0xDA, 0x89, 0xB0, 0x01, 0x40, 
40447
  0x04, 0xCF, 0x0B, 0x66, 0x69, 0x6E, 0x64, 0x2D, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x05, 0x40, 
40448
  0x06, 0xCF, 0x09, 0x64, 0x79, 0x6E, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x14, 0x40, 0x09, 0xCF, 
40449
  0x09, 0x61, 0x6C, 0x6C, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x23, 0x40, 0x0C, 0xCF, 0x09, 0x73, 
40450
  0x79, 0x73, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x32, 0x40, 0x0F, 0xCF, 0x0C, 0x63, 0x75, 0x72, 
40451
  0x61, 0x6C, 0x6C, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x2E, 0x03, 0x00, 0x00, 0x19, 0x04, 0x03, 
40452
  0x00, 0x2A, 0x05, 0x00, 0x00, 0x2F, 0x05, 0x00, 0x00, 0x33, 0x05, 0x04, 0x00, 0x19, 0x06, 0x05, 
40453
  0x00, 0x2A, 0x07, 0x00, 0x00, 0x30, 0x07, 0x00, 0x00, 0x2A, 0x08, 0x01, 0x00, 0x33, 0x07, 0x08, 
40454
  0x00, 0x2A, 0x08, 0x02, 0x00, 0x31, 0x07, 0x01, 0x08, 0x43, 0x07, 0x00, 0x00, 0x2A, 0x08, 0x03, 
40455
  0x00, 0x31, 0x08, 0x06, 0x07, 0x2A, 0x09, 0x04, 0x00, 0x33, 0x08, 0x09, 0x00, 0x2A, 0x07, 0x05, 
40456
  0x00, 0x2F, 0x07, 0x00, 0x00, 0x33, 0x07, 0x04, 0x00, 0x19, 0x09, 0x07, 0x00, 0x2A, 0x0A, 0x05, 
40457
  0x00, 0x30, 0x0A, 0x00, 0x00, 0x2A, 0x0B, 0x01, 0x00, 0x33, 0x0A, 0x0B, 0x00, 0x2A, 0x0B, 0x06, 
40458
  0x00, 0x31, 0x0A, 0x01, 0x0B, 0x43, 0x0A, 0x00, 0x00, 0x2A, 0x0B, 0x03, 0x00, 0x31, 0x0B, 0x09, 
40459
  0x0A, 0x2A, 0x0C, 0x04, 0x00, 0x33, 0x0B, 0x0C, 0x00, 0x2A, 0x0A, 0x07, 0x00, 0x2F, 0x0A, 0x00, 
40460
  0x00, 0x33, 0x0A, 0x04, 0x00, 0x19, 0x0C, 0x0A, 0x00, 0x2A, 0x0D, 0x08, 0x00, 0x30, 0x0D, 0x00, 
40461
  0x00, 0x2A, 0x0E, 0x01, 0x00, 0x33, 0x0D, 0x0E, 0x00, 0x2A, 0x0E, 0x09, 0x00, 0x31, 0x0D, 0x01, 
40462
  0x0E, 0x43, 0x0D, 0x00, 0x00, 0x2A, 0x0E, 0x03, 0x00, 0x31, 0x0E, 0x0C, 0x0D, 0x2A, 0x0F, 0x04, 
40463
  0x00, 0x33, 0x0E, 0x0F, 0x00, 0x2A, 0x0D, 0x0A, 0x00, 0x2F, 0x0D, 0x00, 0x00, 0x33, 0x0D, 0x04, 
40464
  0x00, 0x19, 0x0F, 0x0D, 0x00, 0x2A, 0x10, 0x0A, 0x00, 0x30, 0x10, 0x00, 0x00, 0x2A, 0x11, 0x01, 
40465
  0x00, 0x33, 0x10, 0x11, 0x00, 0x2A, 0x11, 0x0B, 0x00, 0x31, 0x10, 0x01, 0x11, 0x43, 0x10, 0x00, 
40466
  0x00, 0x2A, 0x11, 0x03, 0x00, 0x31, 0x11, 0x0F, 0x10, 0x2A, 0x12, 0x04, 0x00, 0x33, 0x11, 0x12, 
40467
  0x00, 0x2A, 0x10, 0x03, 0x00, 0x03, 0x10, 0x00, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x05, 0x01, 
40468
  0x01, 0x01, 0x02, 0x0A, 0x00, 0x01, 0x03, 0xCE, 0x0B, 0x66, 0x69, 0x6E, 0x64, 0x2D, 0x70, 0x72, 
40469
  0x65, 0x66, 0x69, 0x78, 0xDA, 0x18, 0xDA, 0x87, 0x20, 0xDA, 0x84, 0xCD, 0x00, 0x0A, 0x00, 0xCF, 
40470
  0x03, 0x70, 0x72, 0x65, 0x00, 0x0A, 0x01, 0xDA, 0x89, 0xBA, 0x05, 0x0A, 0x02, 0xCF, 0x07, 0x5F, 
40471
  0x30, 0x30, 0x30, 0x30, 0x34, 0x52, 0x2E, 0x02, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x30, 0x02, 
40472
  0x03, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x33, 0x03, 0x04, 0x00, 0x19, 0x02, 0x03, 0x00, 0x1C, 0x02, 
40473
  0x02, 0x00, 0x03, 0x02, 0x00, 0x00, 0x29, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0xCD, 0x00, 
40474
  0xD4, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 0x10, 0x01, 0x04, 0xDA, 0x18, 0xDA, 0x81, 0xEB, 
40475
  0xDA, 0x86, 0xDA, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x89, 0xC0, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x89, 
40476
  0xBA, 0x00, 0x10, 0x00, 0xCF, 0x09, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x53, 0x24, 0x30, 0x06, 
40477
  0x10, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x54, 0x29, 0x01, 0x00, 0x00, 0x2F, 
40478
  0x01, 0x00, 0x00, 0x33, 0x01, 0x00, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 
40479
  0x02, 0x03, 0x00, 0x19, 0x01, 0x02, 0x00, 0x1C, 0x02, 0x08, 0x00, 0x29, 0x03, 0x00, 0x00, 0x2F, 
40480
  0x03, 0x00, 0x00, 0x33, 0x03, 0x00, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x30, 0x04, 0x03, 0x00, 0x2A, 
40481
  0x04, 0x01, 0x00, 0x34, 0x04, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0x8A, 0xB6, 0x15, 
40482
  0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 
40483
  0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x8A, 0xB6, 
40484
  0x15, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
40485
  0x05, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x8A, 0xB4, 0x03, 0x00, 0x03, 0x03, 0x12, 0x00, 0x12, 
40486
  0x00, 0x12, 0x00, 0x03, 0x01, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x28, 0x00, 0x28, 
40487
  0x00, 0x28, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 
40488
  0x00, 0x03, 0x01, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 
40489
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x03, 
40490
  0x01, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x03, 
40491
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x03, 0x01, 0x2C, 
40492
  0x00, 0x2C, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x2B, 0x00, 0x2B, 0x00, 0x2B, 0x00, 0x03, 0x00, 0x03, 
40493
  0x00, 0x03, 0x00, 0x03, 0xBF, 0xED, 0x01, 0x00, 0x01, 0xCF, 0x0C, 0x73, 0x79, 0x6D, 0x62, 0x6F, 
40494
  0x6C, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xD8, 0x0C, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2F, 
40495
  0x73, 0x6C, 0x69, 0x63, 0x65, 0xCF, 0x0B, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x6A, 0x6F, 
40496
  0x69, 0x6E, 0xDA, 0x81, 0xAD, 0xCF, 0x05, 0x6A, 0x75, 0x78, 0x74, 0x2A, 0xD7, 0x00, 0xCD, 0x02, 
40497
  0xFF, 0x00, 0x00, 0x03, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x02, 0x00, 0x01, 0x02, 
40498
  0xCE, 0x05, 0x6A, 0x75, 0x78, 0x74, 0x2A, 0xDA, 0x18, 0x00, 0x02, 0x00, 0xDA, 0x86, 0x12, 0x00, 
40499
  0x02, 0x01, 0xDA, 0x89, 0xC7, 0x2E, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0xCD, 0x00, 0xD5, 
40500
  0x00, 0x00, 0x09, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x14, 0x01, 0x07, 0xDA, 0x18, 
40501
  0xDA, 0x81, 0x8C, 0xDA, 0x82, 0xE9, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x86, 0x12, 0xBF, 0xFF, 0x00, 
40502
  0x01, 0xDA, 0x89, 0xC7, 0x00, 0x14, 0x00, 0xDA, 0x80, 0xAB, 0x01, 0x14, 0x02, 0xDA, 0x23, 0x02, 
40503
  0x10, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x51, 0x05, 0x10, 0x05, 0xCF, 0x07, 
40504
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x50, 0x08, 0x10, 0x06, 0xDA, 0x80, 0xFB, 0x3E, 0x01, 0x00, 
40505
  0x00, 0x19, 0x02, 0x01, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x26, 0x05, 0x00, 0x00, 0x47, 0x04, 0x03, 
40506
  0x05, 0x19, 0x05, 0x04, 0x00, 0x1D, 0x05, 0x0A, 0x00, 0x38, 0x04, 0x03, 0x05, 0x19, 0x06, 0x04, 
40507
  0x00, 0x32, 0x00, 0x00, 0x00, 0x33, 0x04, 0x06, 0x00, 0x30, 0x02, 0x04, 0x00, 0x2A, 0x08, 0x00, 
40508
  0x00, 0x33, 0x07, 0x08, 0x00, 0x47, 0x05, 0x03, 0x05, 0x1A, 0xF7, 0xFF, 0xFF, 0x29, 0x03, 0x00, 
40509
  0x00, 0x30, 0x02, 0x03, 0x00, 0x2A, 0x03, 0x01, 0x00, 0x34, 0x03, 0x00, 0x00, 0xBF, 0xFF, 0x84, 
40510
  0x94, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
40511
  0x00, 0x05, 0x01, 0x17, 0x00, 0x17, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x00, 
40512
  0x05, 0x02, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x84, 0x93, 0x03, 0x00, 0x03, 0x01, 0x00, 
40513
  0x00, 0x00, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x74, 0x72, 0x75, 0x6E, 0x63, 0xD8, 0x0A, 
40514
  0x6D, 0x61, 0x74, 0x68, 0x2F, 0x74, 0x72, 0x75, 0x6E, 0x63, 0xCF, 0x0D, 0x73, 0x74, 0x72, 0x69, 
40515
  0x6E, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0xDA, 0x81, 0x83, 0xCF, 0x06, 0x66, 0x69, 
40516
  0x62, 0x65, 0x72, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 
40517
  0x06, 0x00, 0x02, 0xCE, 0x06, 0x66, 0x69, 0x62, 0x65, 0x72, 0x3F, 0xDA, 0x18, 0xDA, 0x2C, 0xDA, 
40518
  0x80, 0xCC, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xDA, 0x89, 0xCF, 0x2F, 0x00, 0x00, 
40519
  0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x23, 0x03, 0x02, 
40520
  0x04, 0x03, 0x03, 0x00, 0x00, 0x65, 0x2E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x2B, 0x00, 0x2B, 0x00, 
40521
  0x2B, 0xCF, 0x03, 0x66, 0x6F, 0x72, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x08, 0x03, 0x03, 
40522
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x03, 0x08, 0x00, 0x05, 0xCE, 0x03, 0x66, 0x6F, 0x72, 0xDA, 0x18, 
40523
  0xDA, 0x83, 0xA5, 0xDA, 0x38, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 0x07, 0x07, 0x07, 
40524
  0x03, 0x0E, 0x00, 0x09, 0xCE, 0x0C, 0x66, 0x6F, 0x72, 0x2D, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 
40525
  0x74, 0x65, 0xDA, 0x18, 0xDA, 0x49, 0xDA, 0x4A, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x13, 
40526
  0x07, 0x07, 0x07, 0x0B, 0x44, 0x00, 0x0C, 0xCE, 0x10, 0x66, 0x6F, 0x72, 0x2D, 0x76, 0x61, 0x72, 
40527
  0x2D, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0xDA, 0x18, 0xDA, 0x49, 0xDA, 0x80, 0x87, 
40528
  0xDA, 0x3A, 0xDA, 0x84, 0xF1, 0xDA, 0x84, 0xEF, 0xDA, 0x4A, 0xDA, 0x86, 0xC8, 0xDA, 0x88, 0xF1, 
40529
  0xDA, 0x85, 0x3A, 0xDA, 0x4F, 0xDA, 0x50, 0x00, 0x44, 0x00, 0xDA, 0x80, 0x90, 0x00, 0x44, 0x01, 
40530
  0xDA, 0x83, 0xBE, 0x00, 0x44, 0x02, 0xCF, 0x04, 0x73, 0x74, 0x6F, 0x70, 0x00, 0x44, 0x03, 0xCF, 
40531
  0x04, 0x73, 0x74, 0x65, 0x70, 0x00, 0x44, 0x04, 0xCF, 0x0A, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 
40532
  0x69, 0x73, 0x6F, 0x6E, 0x00, 0x44, 0x05, 0xDA, 0x83, 0xE0, 0x00, 0x44, 0x06, 0xDA, 0x82, 0xB5, 
40533
  0x00, 0x44, 0x07, 0xCF, 0x10, 0x66, 0x6F, 0x72, 0x2D, 0x76, 0x61, 0x72, 0x2D, 0x74, 0x65, 0x6D, 
40534
  0x70, 0x6C, 0x61, 0x74, 0x65, 0x02, 0x44, 0x09, 0xDA, 0x80, 0xFF, 0x0C, 0x44, 0x0A, 0xCF, 0x02, 
40535
  0x73, 0x74, 0x19, 0x44, 0x08, 0xCF, 0x09, 0x6C, 0x6F, 0x6F, 0x70, 0x2D, 0x62, 0x6F, 0x64, 0x79, 
40536
  0x2D, 0x33, 0x11, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x34, 0x2A, 0x09, 0x00, 0x00, 
40537
  0x33, 0x08, 0x09, 0x00, 0x19, 0x09, 0x08, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x0B, 0x01, 0x00, 
40538
  0x33, 0x0A, 0x0B, 0x00, 0x1C, 0x0A, 0x03, 0x00, 0x19, 0x08, 0x03, 0x00, 0x1A, 0x04, 0x00, 0x00, 
40539
  0x2A, 0x0C, 0x00, 0x00, 0x33, 0x0B, 0x0C, 0x00, 0x19, 0x08, 0x0B, 0x00, 0x19, 0x0A, 0x08, 0x00, 
40540
  0x31, 0x04, 0x00, 0x09, 0x43, 0x08, 0x00, 0x00, 0x31, 0x05, 0x00, 0x0A, 0x43, 0x0B, 0x00, 0x00, 
40541
  0x2A, 0x0D, 0x02, 0x00, 0x31, 0x0D, 0x00, 0x0B, 0x43, 0x0C, 0x00, 0x00, 0x2A, 0x0D, 0x03, 0x00, 
40542
  0x30, 0x0D, 0x08, 0x00, 0x32, 0x06, 0x00, 0x00, 0x2F, 0x0C, 0x00, 0x00, 0x43, 0x0B, 0x00, 0x00, 
40543
  0x19, 0x08, 0x0B, 0x00, 0x2A, 0x0C, 0x04, 0x00, 0x31, 0x0C, 0x00, 0x01, 0x43, 0x0B, 0x00, 0x00, 
40544
  0x2A, 0x0D, 0x05, 0x00, 0x31, 0x0D, 0x09, 0x02, 0x43, 0x0C, 0x00, 0x00, 0x23, 0x0E, 0x0A, 0x03, 
40545
  0x1C, 0x0E, 0x03, 0x00, 0x2A, 0x0D, 0x06, 0x00, 0x1A, 0x07, 0x00, 0x00, 0x2A, 0x10, 0x05, 0x00, 
40546
  0x31, 0x10, 0x0A, 0x03, 0x43, 0x0F, 0x00, 0x00, 0x2F, 0x0F, 0x00, 0x00, 0x43, 0x0F, 0x00, 0x00, 
40547
  0x19, 0x0D, 0x0F, 0x00, 0x2F, 0x0A, 0x00, 0x00, 0x2A, 0x11, 0x07, 0x00, 0x33, 0x10, 0x11, 0x00, 
40548
  0x19, 0x11, 0x10, 0x00, 0x1C, 0x10, 0x04, 0x00, 0x20, 0x12, 0x0A, 0x00, 0x19, 0x0F, 0x12, 0x00, 
40549
  0x1A, 0x02, 0x00, 0x00, 0x19, 0x0F, 0x11, 0x00, 0x1C, 0x0F, 0x03, 0x00, 0x19, 0x0E, 0x08, 0x00, 
40550
  0x1A, 0x09, 0x00, 0x00, 0x2A, 0x11, 0x08, 0x00, 0x29, 0x12, 0x00, 0x00, 0x31, 0x11, 0x0A, 0x12, 
40551
  0x43, 0x10, 0x00, 0x00, 0x2A, 0x12, 0x09, 0x00, 0x31, 0x12, 0x10, 0x08, 0x43, 0x11, 0x00, 0x00, 
40552
  0x19, 0x0E, 0x11, 0x00, 0x2A, 0x10, 0x0A, 0x00, 0x31, 0x10, 0x0B, 0x0C, 0x32, 0x0D, 0x00, 0x00, 
40553
  0x2F, 0x0E, 0x00, 0x00, 0x43, 0x0F, 0x00, 0x00, 0x03, 0x0F, 0x00, 0x00, 0x81, 0x96, 0x03, 0x00, 
40554
  0x03, 0x00, 0x03, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
40555
  0x29, 0x00, 0x29, 0x00, 0x0D, 0x00, 0x05, 0x02, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
40556
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 
40557
  0xFF, 0x05, 0x04, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x03, 0x0E, 
40558
  0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1D, 0x00, 0x1D, 
40559
  0x00, 0x0A, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x1F, 0x00, 0x0D, 
40560
  0x00, 0x0D, 0x00, 0x0D, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x02, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
40561
  0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFE, 0x09, 0xBF, 0xFC, 0x05, 0x00, 0x05, 
40562
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x0E, 0x00, 0xDA, 0x84, 0x4E, 0x00, 0x0E, 
40563
  0x01, 0xDA, 0x83, 0xBE, 0x00, 0x0E, 0x02, 0xDA, 0x89, 0xD9, 0x00, 0x0E, 0x03, 0xDA, 0x89, 0xDA, 
40564
  0x00, 0x0E, 0x04, 0xDA, 0x89, 0xDB, 0x00, 0x0E, 0x05, 0xDA, 0x83, 0xE0, 0x00, 0x0E, 0x06, 0xDA, 
40565
  0x82, 0xB5, 0x00, 0x0E, 0x07, 0xCF, 0x0C, 0x66, 0x6F, 0x72, 0x2D, 0x74, 0x65, 0x6D, 0x70, 0x6C, 
40566
  0x61, 0x74, 0x65, 0x02, 0x0E, 0x09, 0xDA, 0x80, 0x90, 0x2A, 0x09, 0x00, 0x00, 0x33, 0x08, 0x09, 
40567
  0x00, 0x19, 0x09, 0x08, 0x00, 0x2A, 0x0B, 0x01, 0x00, 0x31, 0x0B, 0x00, 0x09, 0x43, 0x0A, 0x00, 
40568
  0x00, 0x2F, 0x0A, 0x00, 0x00, 0x32, 0x06, 0x00, 0x00, 0x43, 0x0A, 0x00, 0x00, 0x31, 0x09, 0x01, 
40569
  0x02, 0x31, 0x03, 0x04, 0x05, 0x2F, 0x0A, 0x00, 0x00, 0x2A, 0x0B, 0x02, 0x00, 0x34, 0x0B, 0x00, 
40570
  0x00, 0x81, 0xA6, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x02, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x15, 
40571
  0x00, 0x15, 0x00, 0x15, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40572
  0x08, 0x00, 0xDA, 0x80, 0x90, 0x00, 0x08, 0x01, 0xDA, 0x83, 0xBE, 0x00, 0x08, 0x02, 0xDA, 0x89, 
40573
  0xD9, 0x00, 0x08, 0x03, 0xDA, 0x82, 0xB5, 0x00, 0x08, 0x04, 0xDA, 0x89, 0xD2, 0x31, 0x00, 0x01, 
40574
  0x02, 0x29, 0x05, 0x01, 0x00, 0x2A, 0x06, 0x00, 0x00, 0x2A, 0x07, 0x01, 0x00, 0x31, 0x05, 0x06, 
40575
  0x07, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x05, 0x02, 0x00, 0x34, 0x05, 0x00, 0x00, 0x81, 0xFD, 0x03, 
40576
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x83, 
40577
  0xD2, 0xDA, 0x83, 0xD0, 0xDA, 0x84, 0x20, 0xDA, 0x84, 0x13, 0xCF, 0x04, 0x65, 0x61, 0x63, 0x68, 
40578
  0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x05, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 
40579
  0x05, 0x00, 0x04, 0xCE, 0x04, 0x65, 0x61, 0x63, 0x68, 0xDA, 0x18, 0xD0, 0x04, 0x65, 0x61, 0x63, 
40580
  0x68, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x12, 0x04, 0x04, 0x04, 0x0D, 0x4D, 0x00, 0x08, 
40581
  0xCE, 0x0D, 0x65, 0x61, 0x63, 0x68, 0x2D, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0xDA, 
40582
  0x18, 0xDA, 0x49, 0xDA, 0x80, 0x87, 0xDA, 0x4A, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x1C, 0x02, 
40583
  0x02, 0x01, 0x02, 0x00, 0x02, 0xCE, 0x04, 0x6E, 0x65, 0x78, 0x74, 0x47, 0x00, 0x00, 0x01, 0x03, 
40584
  0x00, 0x00, 0x00, 0xDA, 0x84, 0xEF, 0xDA, 0x82, 0xB2, 0xDA, 0x89, 0xE4, 0xDA, 0x81, 0x79, 0xD0, 
40585
  0x04, 0x6B, 0x65, 0x79, 0x73, 0xD0, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0xDA, 0x3A, 0xDA, 0x84, 
40586
  0xF1, 0xDA, 0x50, 0x00, 0x4D, 0x00, 0xDA, 0x84, 0x4E, 0x00, 0x4D, 0x01, 0xCF, 0x03, 0x69, 0x6E, 
40587
  0x78, 0x00, 0x4D, 0x02, 0xCF, 0x04, 0x6B, 0x69, 0x6E, 0x64, 0x00, 0x4D, 0x03, 0xDA, 0x82, 0xB5, 
40588
  0x00, 0x4D, 0x04, 0xCF, 0x0D, 0x65, 0x61, 0x63, 0x68, 0x2D, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 
40589
  0x74, 0x65, 0x02, 0x4D, 0x06, 0xDA, 0x22, 0x0C, 0x4D, 0x07, 0xDA, 0x24, 0x1F, 0x3A, 0x02, 0xCF, 
40590
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x36, 0x2A, 0x06, 0x00, 0x00, 0x33, 0x05, 0x06, 0x00, 
40591
  0x19, 0x06, 0x05, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x2A, 0x08, 0x01, 0x00, 0x33, 0x07, 0x08, 0x00, 
40592
  0x1C, 0x07, 0x03, 0x00, 0x19, 0x05, 0x01, 0x00, 0x1A, 0x04, 0x00, 0x00, 0x2A, 0x09, 0x00, 0x00, 
40593
  0x33, 0x08, 0x09, 0x00, 0x19, 0x05, 0x08, 0x00, 0x19, 0x07, 0x05, 0x00, 0x23, 0x08, 0x07, 0x01, 
40594
  0x1C, 0x08, 0x03, 0x00, 0x26, 0x05, 0x00, 0x00, 0x1A, 0x05, 0x00, 0x00, 0x2A, 0x0A, 0x02, 0x00, 
40595
  0x31, 0x0A, 0x07, 0x01, 0x43, 0x09, 0x00, 0x00, 0x19, 0x05, 0x09, 0x00, 0x2A, 0x09, 0x03, 0x00, 
40596
  0x26, 0x0A, 0x00, 0x00, 0x31, 0x09, 0x07, 0x0A, 0x43, 0x08, 0x00, 0x00, 0x2A, 0x0A, 0x04, 0x00, 
40597
  0x31, 0x0A, 0x06, 0x08, 0x43, 0x09, 0x00, 0x00, 0x2A, 0x0A, 0x05, 0x00, 0x26, 0x0B, 0x00, 0x00, 
40598
  0x31, 0x0A, 0x0B, 0x06, 0x43, 0x08, 0x00, 0x00, 0x2A, 0x0C, 0x06, 0x00, 0x23, 0x0B, 0x02, 0x0C, 
40599
  0x1C, 0x0B, 0x06, 0x00, 0x2A, 0x0D, 0x07, 0x00, 0x31, 0x0D, 0x07, 0x06, 0x43, 0x0C, 0x00, 0x00, 
40600
  0x19, 0x0A, 0x0C, 0x00, 0x1A, 0x13, 0x00, 0x00, 0x2A, 0x0E, 0x08, 0x00, 0x23, 0x0D, 0x02, 0x0E, 
40601
  0x1C, 0x0D, 0x03, 0x00, 0x19, 0x0C, 0x06, 0x00, 0x1A, 0x0D, 0x00, 0x00, 0x2A, 0x10, 0x09, 0x00, 
40602
  0x23, 0x0F, 0x02, 0x10, 0x1C, 0x0F, 0x08, 0x00, 0x2A, 0x11, 0x07, 0x00, 0x31, 0x11, 0x07, 0x06, 
40603
  0x43, 0x10, 0x00, 0x00, 0x30, 0x06, 0x10, 0x00, 0x44, 0x11, 0x00, 0x00, 0x19, 0x0E, 0x11, 0x00, 
40604
  0x1A, 0x02, 0x00, 0x00, 0x26, 0x0E, 0x00, 0x00, 0x19, 0x0C, 0x0E, 0x00, 0x19, 0x0A, 0x0C, 0x00, 
40605
  0x2A, 0x0C, 0x02, 0x00, 0x31, 0x0C, 0x00, 0x0A, 0x43, 0x0B, 0x00, 0x00, 0x2A, 0x0C, 0x03, 0x00, 
40606
  0x31, 0x0C, 0x07, 0x06, 0x43, 0x0A, 0x00, 0x00, 0x2A, 0x0D, 0x0A, 0x00, 0x31, 0x0D, 0x06, 0x0A, 
40607
  0x43, 0x0C, 0x00, 0x00, 0x2A, 0x0D, 0x0B, 0x00, 0x31, 0x0D, 0x08, 0x0B, 0x32, 0x03, 0x00, 0x00, 
40608
  0x2F, 0x0C, 0x00, 0x00, 0x43, 0x0A, 0x00, 0x00, 0x2A, 0x0B, 0x0C, 0x00, 0x31, 0x0B, 0x05, 0x09, 
40609
  0x2F, 0x0A, 0x00, 0x00, 0x43, 0x08, 0x00, 0x00, 0x03, 0x08, 0x00, 0x00, 0x81, 0xB6, 0x03, 0x00, 
40610
  0x03, 0x00, 0x03, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
40611
  0x27, 0x00, 0x27, 0x00, 0x0D, 0x00, 0x05, 0x02, 0x11, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 
40612
  0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x09, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
40613
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x05, 0x0D, 
40614
  0x00, 0x0D, 0x00, 0x0D, 0x01, 0x15, 0x00, 0x15, 0x00, 0x15, 0xBF, 0xFF, 0x0D, 0x00, 0x0D, 0x00, 
40615
  0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x03, 
40616
  0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0xBF, 0xFD, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 
40617
  0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xFB, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
40618
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
40619
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0xDA, 0x1E, 
40620
  0x00, 0x05, 0x01, 0xDA, 0x24, 0x00, 0x05, 0x02, 0xDA, 0x82, 0xB5, 0x00, 0x05, 0x03, 0xDA, 0x89, 
40621
  0xE1, 0x2A, 0x04, 0x00, 0x00, 0x31, 0x00, 0x01, 0x04, 0x2F, 0x02, 0x00, 0x00, 0x2A, 0x04, 0x01, 
40622
  0x00, 0x34, 0x04, 0x00, 0x00, 0x82, 0x17, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40623
  0xCF, 0x08, 0x68, 0x61, 0x73, 0x2D, 0x6B, 0x65, 0x79, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
40624
  0x00, 0x06, 0x02, 0x02, 0x02, 0x00, 0x04, 0x00, 0x03, 0xCE, 0x08, 0x68, 0x61, 0x73, 0x2D, 0x6B, 
40625
  0x65, 0x79, 0x3F, 0xDA, 0x18, 0x00, 0x04, 0x00, 0xDA, 0x24, 0x00, 0x04, 0x01, 0xDA, 0x81, 0xD2, 
40626
  0x00, 0x04, 0x02, 0xDA, 0x89, 0xEF, 0x39, 0x03, 0x00, 0x01, 0x26, 0x05, 0x00, 0x00, 0x48, 0x04, 
40627
  0x05, 0x03, 0x03, 0x04, 0x00, 0x00, 0x84, 0xB2, 0x0D, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 
40628
  0x0E, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6D, 0x61, 0x78, 0x73, 0x74, 0x61, 0x63, 0x6B, 0xD8, 
40629
  0x0E, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6D, 0x61, 0x78, 0x73, 0x74, 0x61, 0x63, 0x6B, 0xCF, 
40630
  0x03, 0x73, 0x75, 0x6D, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x01, 0x01, 0x01, 0x00, 
40631
  0x0B, 0x00, 0x06, 0xCE, 0x03, 0x73, 0x75, 0x6D, 0xDA, 0x18, 0x00, 0x0B, 0x00, 0xDA, 0x82, 0x52, 
40632
  0x00, 0x0B, 0x01, 0xDA, 0x89, 0xF4, 0x00, 0x0B, 0x02, 0xDA, 0x82, 0xDE, 0x00, 0x0A, 0x00, 0xCF, 
40633
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x61, 0x03, 0x0A, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
40634
  0x30, 0x30, 0x30, 0x39, 0x06, 0x0A, 0x05, 0xDA, 0x1E, 0x29, 0x02, 0x00, 0x00, 0x26, 0x04, 0x00, 
40635
  0x00, 0x47, 0x03, 0x00, 0x04, 0x19, 0x04, 0x03, 0x00, 0x1D, 0x04, 0x06, 0x00, 0x38, 0x03, 0x00, 
40636
  0x04, 0x19, 0x05, 0x03, 0x00, 0x06, 0x02, 0x02, 0x05, 0x47, 0x04, 0x00, 0x04, 0x1A, 0xFB, 0xFF, 
40637
  0xFF, 0x03, 0x02, 0x00, 0x00, 0x82, 0x87, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40638
  0x00, 0x03, 0x00, 0x03, 0x00, 0x0E, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFC, 0x01, 0xCF, 0x0C, 0x66, 
40639
  0x6C, 0x61, 0x74, 0x74, 0x65, 0x6E, 0x2D, 0x69, 0x6E, 0x74, 0x6F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
40640
  0x00, 0x00, 0x08, 0x02, 0x02, 0x02, 0x02, 0x14, 0x00, 0x06, 0xCE, 0x0C, 0x66, 0x6C, 0x61, 0x74, 
40641
  0x74, 0x65, 0x6E, 0x2D, 0x69, 0x6E, 0x74, 0x6F, 0xDA, 0x18, 0xDA, 0x82, 0x20, 0xDA, 0x81, 0x8C, 
40642
  0x00, 0x14, 0x00, 0xCF, 0x04, 0x69, 0x6E, 0x74, 0x6F, 0x00, 0x14, 0x01, 0xDA, 0x82, 0x52, 0x00, 
40643
  0x14, 0x02, 0xDA, 0x89, 0xF9, 0x00, 0x13, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 
40644
  0x54, 0x03, 0x13, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x53, 0x06, 0x13, 0x05, 
40645
  0xDA, 0x1E, 0x2C, 0x02, 0x00, 0x00, 0x26, 0x04, 0x00, 0x00, 0x47, 0x03, 0x01, 0x04, 0x19, 0x04, 
40646
  0x03, 0x00, 0x1D, 0x04, 0x0F, 0x00, 0x38, 0x03, 0x01, 0x04, 0x19, 0x05, 0x03, 0x00, 0x2F, 0x05, 
40647
  0x00, 0x00, 0x2A, 0x06, 0x00, 0x00, 0x33, 0x03, 0x06, 0x00, 0x1C, 0x03, 0x04, 0x00, 0x30, 0x00, 
40648
  0x05, 0x00, 0x33, 0x06, 0x02, 0x00, 0x1A, 0x04, 0x00, 0x00, 0x30, 0x00, 0x05, 0x00, 0x2A, 0x07, 
40649
  0x01, 0x00, 0x33, 0x06, 0x07, 0x00, 0x47, 0x04, 0x01, 0x04, 0x1A, 0xF2, 0xFF, 0xFF, 0x03, 0x00, 
40650
  0x00, 0x00, 0x86, 0x81, 0x01, 0x04, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40651
  0x03, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 
40652
  0x02, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFD, 0x03, 0x00, 0x03, 0xBF, 0xFC, 0x01, 0xCF, 0x06, 
40653
  0x75, 0x6E, 0x6C, 0x65, 0x73, 0x73, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x07, 0x01, 0x01, 
40654
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x0A, 0x00, 0x03, 0xCE, 0x06, 0x75, 0x6E, 0x6C, 0x65, 0x73, 
40655
  0x73, 0xDA, 0x18, 0xDA, 0x50, 0xDA, 0x4F, 0x00, 0x0A, 0x00, 0xDA, 0x84, 0x0C, 0x00, 0x0A, 0x01, 
40656
  0xDA, 0x82, 0xB5, 0x00, 0x0A, 0x02, 0xDA, 0x89, 0xFF, 0x2A, 0x04, 0x00, 0x00, 0x2F, 0x04, 0x00, 
40657
  0x00, 0x32, 0x01, 0x00, 0x00, 0x43, 0x03, 0x00, 0x00, 0x2A, 0x05, 0x01, 0x00, 0x26, 0x06, 0x00, 
40658
  0x00, 0x31, 0x05, 0x00, 0x06, 0x2F, 0x03, 0x00, 0x00, 0x43, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 
40659
  0x00, 0x80, 0xC2, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40660
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0A, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x72, 0x6F, 
40661
  0x6F, 0x74, 0xD8, 0x0A, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x72, 0x6F, 0x6F, 0x74, 0xCF, 0x0B, 
40662
  0x6F, 0x73, 0x2F, 0x70, 0x65, 0x72, 0x6D, 0x2D, 0x69, 0x6E, 0x74, 0xD8, 0x0B, 0x6F, 0x73, 0x2F, 
40663
  0x70, 0x65, 0x72, 0x6D, 0x2D, 0x69, 0x6E, 0x74, 0xCF, 0x0F, 0x6C, 0x6F, 0x61, 0x64, 0x2D, 0x69, 
40664
  0x6D, 0x61, 0x67, 0x65, 0x2D, 0x64, 0x69, 0x63, 0x74, 0xDA, 0x87, 0x8F, 0xCF, 0x08, 0x6D, 0x61, 
40665
  0x74, 0x68, 0x2F, 0x65, 0x78, 0x70, 0xD8, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0x78, 0x70, 
40666
  0xCF, 0x0B, 0x70, 0x65, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0xD8, 0x0B, 0x70, 
40667
  0x65, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0xCF, 0x09, 0x67, 0x63, 0x63, 0x6F, 
40668
  0x6C, 0x6C, 0x65, 0x63, 0x74, 0xD8, 0x09, 0x67, 0x63, 0x63, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 
40669
  0xCF, 0x06, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0xDA, 0x80, 0xC3, 0xDA, 0x80, 0x8E, 0xDA, 0x80, 
40670
  0x87, 0xCF, 0x0B, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0xD8, 0x0B, 
40671
  0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0xCF, 0x09, 0x64, 0x65, 0x66, 
40672
  0x67, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x02, 0x02, 
40673
  0x02, 0x03, 0x0B, 0x00, 0x04, 0xCE, 0x09, 0x64, 0x65, 0x66, 0x67, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 
40674
  0xDA, 0x18, 0xDA, 0x86, 0xCA, 0xDA, 0x06, 0xDA, 0x81, 0x60, 0x00, 0x0B, 0x00, 0xDA, 0x83, 0x0F, 
40675
  0x00, 0x0B, 0x01, 0xDA, 0x25, 0x00, 0x0B, 0x02, 0xDA, 0x8A, 0x10, 0x03, 0x0B, 0x04, 0xDA, 0x89, 
40676
  0xA1, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 0x19, 0x04, 0x03, 
40677
  0x00, 0x2A, 0x05, 0x01, 0x00, 0x30, 0x05, 0x01, 0x00, 0x42, 0x05, 0x00, 0x00, 0x30, 0x04, 0x05, 
40678
  0x00, 0x2A, 0x07, 0x02, 0x00, 0x33, 0x06, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x57, 0x0E, 0x00, 
40679
  0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40680
  0x03, 0xBF, 0xFC, 0x01, 0xCF, 0x0A, 0x61, 0x63, 0x63, 0x75, 0x6D, 0x75, 0x6C, 0x61, 0x74, 0x65, 
40681
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0B, 0x03, 0x03, 0x03, 0x01, 0x11, 0x00, 0x09, 0xCE, 
40682
  0x0A, 0x61, 0x63, 0x63, 0x75, 0x6D, 0x75, 0x6C, 0x61, 0x74, 0x65, 0xDA, 0x18, 0xDA, 0x81, 0x8C, 
40683
  0x00, 0x11, 0x00, 0xDA, 0x80, 0xFB, 0x00, 0x11, 0x01, 0xDA, 0x82, 0xDC, 0x00, 0x11, 0x02, 0xDA, 
40684
  0x1F, 0x00, 0x11, 0x03, 0xDA, 0x8A, 0x13, 0x00, 0x11, 0x04, 0xDA, 0x81, 0x08, 0x02, 0x11, 0x06, 
40685
  0xDA, 0x23, 0x02, 0x10, 0x02, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x71, 0x05, 0x10, 
40686
  0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x70, 0x08, 0x10, 0x09, 0xDA, 0x1E, 0x19, 
40687
  0x04, 0x01, 0x00, 0x3E, 0x05, 0x00, 0x00, 0x19, 0x06, 0x05, 0x00, 0x26, 0x08, 0x00, 0x00, 0x47, 
40688
  0x07, 0x02, 0x08, 0x19, 0x08, 0x07, 0x00, 0x1D, 0x08, 0x0A, 0x00, 0x38, 0x07, 0x02, 0x08, 0x19, 
40689
  0x09, 0x07, 0x00, 0x30, 0x04, 0x09, 0x00, 0x33, 0x04, 0x00, 0x00, 0x30, 0x06, 0x04, 0x00, 0x2A, 
40690
  0x0A, 0x00, 0x00, 0x33, 0x07, 0x0A, 0x00, 0x47, 0x08, 0x02, 0x08, 0x1A, 0xF7, 0xFF, 0xFF, 0x03, 
40691
  0x06, 0x00, 0x00, 0x83, 0x88, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 
40692
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x28, 0x00, 0x28, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
40693
  0x00, 0x03, 0x00, 0x03, 0xBF, 0xF7, 0x01, 0xDA, 0x82, 0xB4, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 
40694
  0x00, 0x0F, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x08, 0x26, 0x00, 0x08, 0xCE, 0x03, 0x6C, 
40695
  0x65, 0x74, 0xDA, 0x18, 0xDA, 0x7D, 0xCE, 0x27, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 
40696
  0x20, 0x65, 0x76, 0x65, 0x6E, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 
40697
  0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x6C, 0x65, 0x74, 0xDA, 
40698
  0x50, 0xDA, 0x4A, 0xDA, 0x80, 0x8F, 0xDA, 0x81, 0x8C, 0xDA, 0x82, 0xE6, 0xDA, 0x82, 0xE9, 0x00, 
40699
  0x26, 0x00, 0xDA, 0x80, 0x81, 0x00, 0x26, 0x01, 0xDA, 0x82, 0xB5, 0x00, 0x26, 0x02, 0xDA, 0x82, 
40700
  0xB4, 0x09, 0x26, 0x04, 0xDA, 0x80, 0x84, 0x0A, 0x26, 0x05, 0xDA, 0x80, 0x90, 0x0E, 0x26, 0x07, 
40701
  0xDA, 0x82, 0xDE, 0x13, 0x1F, 0x0B, 0xDA, 0x52, 0x15, 0x1F, 0x0C, 0xDA, 0x22, 0x3D, 0x03, 0x00, 
40702
  0x00, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x05, 0x00, 0x00, 0x33, 0x04, 0x05, 0x00, 0x1C, 0x04, 0x04, 
40703
  0x00, 0x2A, 0x03, 0x01, 0x00, 0x01, 0x03, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x3D, 0x03, 0x00, 
40704
  0x00, 0x19, 0x04, 0x03, 0x00, 0x29, 0x05, 0x00, 0x00, 0x2A, 0x06, 0x02, 0x00, 0x2F, 0x06, 0x00, 
40705
  0x00, 0x3E, 0x06, 0x00, 0x00, 0x19, 0x07, 0x06, 0x00, 0x21, 0x08, 0x05, 0x04, 0x1C, 0x08, 0x0F, 
40706
  0x00, 0x05, 0x0A, 0x05, 0x01, 0x38, 0x09, 0x00, 0x0A, 0x19, 0x0B, 0x09, 0x00, 0x38, 0x09, 0x00, 
40707
  0x05, 0x19, 0x0C, 0x09, 0x00, 0x2A, 0x09, 0x03, 0x00, 0x31, 0x09, 0x0C, 0x0B, 0x2A, 0x0D, 0x04, 
40708
  0x00, 0x33, 0x09, 0x0D, 0x00, 0x30, 0x07, 0x09, 0x00, 0x2A, 0x0E, 0x05, 0x00, 0x33, 0x0D, 0x0E, 
40709
  0x00, 0x05, 0x05, 0x05, 0x02, 0x1A, 0xF1, 0xFF, 0xFF, 0x30, 0x07, 0x01, 0x00, 0x2A, 0x09, 0x06, 
40710
  0x00, 0x33, 0x08, 0x09, 0x00, 0x29, 0x09, 0x00, 0x00, 0x30, 0x07, 0x09, 0x00, 0x2A, 0x09, 0x07, 
40711
  0x00, 0x34, 0x09, 0x00, 0x00, 0x80, 0xEC, 0x0D, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 
40712
  0x00, 0x20, 0x00, 0x20, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x03, 0x01, 0x03, 0x01, 0x03, 0x00, 0x03, 
40713
  0x00, 0x03, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x03, 0x01, 0x0F, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
40714
  0x00, 0x05, 0x01, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
40715
  0x01, 0x05, 0xBF, 0xFD, 0x03, 0x04, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 
40716
  0x03, 0x00, 0x03, 0xDA, 0x83, 0xF0, 0xDA, 0x83, 0xEE, 0xCF, 0x07, 0x6F, 0x73, 0x2F, 0x65, 0x78, 
40717
  0x69, 0x74, 0xD8, 0x07, 0x6F, 0x73, 0x2F, 0x65, 0x78, 0x69, 0x74, 0xDA, 0x88, 0x11, 0xDA, 0x88, 
40718
  0x0F, 0xCF, 0x03, 0x75, 0x73, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xFD, 0x00, 0x00, 0x05, 0x00, 0x00, 
40719
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x09, 0x00, 0x01, 0x02, 0xCE, 0x03, 0x75, 0x73, 0x65, 0xDA, 
40720
  0x18, 0xDA, 0x81, 0x8A, 0xDA, 0x50, 0x00, 0x09, 0x00, 0xCF, 0x07, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 
40721
  0x65, 0x73, 0x00, 0x09, 0x01, 0xDA, 0x8A, 0x1D, 0x2E, 0x02, 0x00, 0x00, 0x30, 0x02, 0x00, 0x00, 
40722
  0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x2F, 0x04, 0x00, 0x00, 
40723
  0x32, 0x03, 0x00, 0x00, 0x43, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0xCD, 0x00, 0xD4, 0x00, 
40724
  0x00, 0x05, 0x01, 0x01, 0x01, 0x04, 0x0A, 0x00, 0x01, 0xDA, 0x18, 0xDA, 0x80, 0xF5, 0xD7, 0x00, 
40725
  0xCD, 0x00, 0xDD, 0x00, 0x00, 0x12, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x0B, 0x35, 0x00, 
40726
  0x0D, 0xCE, 0x07, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x2A, 0xDA, 0x18, 0xD7, 0x00, 0xCD, 0x00, 
40727
  0xDC, 0x00, 0x00, 0x08, 0x01, 0x00, 0x01, 0x03, 0x16, 0x00, 0x04, 0xCE, 0x06, 0x63, 0x75, 0x72, 
40728
  0x65, 0x6E, 0x76, 0xDA, 0x18, 0xDA, 0x81, 0xE3, 0xDA, 0x80, 0xCB, 0xDA, 0x88, 0xA9, 0x00, 0x16, 
40729
  0x00, 0xDA, 0x80, 0xD8, 0x00, 0x16, 0x01, 0xCF, 0x06, 0x63, 0x75, 0x72, 0x65, 0x6E, 0x76, 0x05, 
40730
  0x16, 0x02, 0xDA, 0x88, 0xAD, 0x07, 0x14, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 
40731
  0x75, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x2F, 0x02, 0x00, 0x00, 0x2A, 0x04, 0x01, 
40732
  0x00, 0x33, 0x03, 0x04, 0x00, 0x19, 0x02, 0x03, 0x00, 0x1C, 0x00, 0x0F, 0x00, 0x19, 0x04, 0x00, 
40733
  0x00, 0x20, 0x05, 0x04, 0x00, 0x1C, 0x05, 0x0B, 0x00, 0x26, 0x07, 0x00, 0x00, 0x23, 0x06, 0x07, 
40734
  0x02, 0x1C, 0x06, 0x03, 0x00, 0x1A, 0x07, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x2F, 0x02, 0x00, 
40735
  0x00, 0x2A, 0x06, 0x02, 0x00, 0x33, 0x02, 0x06, 0x00, 0x05, 0x04, 0x04, 0xFF, 0x1A, 0xF5, 0xFF, 
40736
  0xFF, 0x1A, 0x01, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x89, 0x79, 0x18, 0x00, 0x18, 0x00, 0x0A, 
40737
  0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x03, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x17, 
40738
  0x00, 0x17, 0x00, 0x13, 0x00, 0x21, 0x00, 0x13, 0x00, 0x31, 0x00, 0x31, 0x00, 0x31, 0x00, 0x09, 
40739
  0x00, 0x09, 0x00, 0x03, 0xBF, 0xFB, 0x01, 0xDA, 0x85, 0x14, 0xD0, 0x02, 0x61, 0x73, 0xD0, 0x06, 
40740
  0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0xD0, 0x06, 0x65, 0x78, 0x70, 0x6F, 0x72, 0x74, 0xDA, 0x87, 
40741
  0x1C, 0xDA, 0x84, 0x37, 0xDA, 0x80, 0xF5, 0xDA, 0x82, 0xFC, 0xDA, 0x83, 0xE3, 0xD7, 0x00, 0xCD, 
40742
  0x00, 0xDC, 0x00, 0x00, 0x0D, 0x04, 0x02, 0x04, 0x05, 0x25, 0x00, 0x0A, 0xCE, 0x0C, 0x6D, 0x65, 
40743
  0x72, 0x67, 0x65, 0x2D, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0xDA, 0x18, 0xDA, 0x84, 0xEA, 0xDA, 
40744
  0x5A, 0xDA, 0x80, 0x8D, 0xDA, 0x80, 0xB4, 0xDA, 0x86, 0xCA, 0x00, 0x25, 0x00, 0xDA, 0x85, 0xF5, 
40745
  0x00, 0x25, 0x01, 0xDA, 0x82, 0x4B, 0x00, 0x25, 0x02, 0xDA, 0x86, 0xD0, 0x00, 0x25, 0x03, 0xCF, 
40746
  0x06, 0x65, 0x78, 0x70, 0x6F, 0x72, 0x74, 0x00, 0x25, 0x04, 0xCF, 0x0C, 0x6D, 0x65, 0x72, 0x67, 
40747
  0x65, 0x2D, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x00, 0x24, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
40748
  0x30, 0x30, 0x35, 0x37, 0x02, 0x24, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x36, 
40749
  0x05, 0x24, 0x07, 0xDA, 0x22, 0x06, 0x24, 0x08, 0xDA, 0x52, 0x1B, 0x20, 0x09, 0xCF, 0x04, 0x6E, 
40750
  0x65, 0x77, 0x76, 0x26, 0x06, 0x00, 0x00, 0x47, 0x05, 0x01, 0x06, 0x19, 0x06, 0x05, 0x00, 0x1D, 
40751
  0x06, 0x21, 0x00, 0x38, 0x05, 0x01, 0x06, 0x19, 0x07, 0x06, 0x00, 0x19, 0x08, 0x05, 0x00, 0x2F, 
40752
  0x07, 0x00, 0x00, 0x2A, 0x09, 0x00, 0x00, 0x33, 0x05, 0x09, 0x00, 0x1C, 0x05, 0x18, 0x00, 0x2A, 
40753
  0x09, 0x01, 0x00, 0x2F, 0x09, 0x00, 0x00, 0x33, 0x09, 0x08, 0x00, 0x2F, 0x09, 0x00, 0x00, 0x2A, 
40754
  0x0B, 0x02, 0x00, 0x33, 0x0A, 0x0B, 0x00, 0x1C, 0x0A, 0x10, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x2A, 
40755
  0x0B, 0x02, 0x00, 0x33, 0x09, 0x0B, 0x00, 0x2A, 0x0B, 0x01, 0x00, 0x30, 0x0B, 0x09, 0x00, 0x42, 
40756
  0x09, 0x00, 0x00, 0x30, 0x09, 0x08, 0x00, 0x2A, 0x0C, 0x03, 0x00, 0x33, 0x0B, 0x0C, 0x00, 0x19, 
40757
  0x09, 0x0B, 0x00, 0x30, 0x02, 0x07, 0x00, 0x2A, 0x0C, 0x04, 0x00, 0x33, 0x0B, 0x0C, 0x00, 0x3A, 
40758
  0x00, 0x0B, 0x09, 0x1A, 0x01, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x06, 0x01, 0x06, 0x1A, 
40759
  0xE0, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x8B, 0xAF, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40760
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x03, 0x00, 0x3B, 
40761
  0x00, 0x3B, 0x00, 0x3B, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x03, 0x01, 0x2A, 0x00, 0x2A, 
40762
  0x00, 0x2A, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 
40763
  0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x05, 0xBF, 0xFE, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40764
  0x03, 0xBF, 0xFA, 0x01, 0x00, 0x35, 0x00, 0xDA, 0x80, 0xF9, 0x00, 0x35, 0x01, 0xDA, 0x80, 0xAB, 
40765
  0x00, 0x35, 0x02, 0xCF, 0x07, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x2A, 0x02, 0x35, 0x04, 0xDA, 
40766
  0x80, 0xBA, 0x06, 0x35, 0x06, 0xCF, 0x05, 0x6B, 0x61, 0x72, 0x67, 0x73, 0x09, 0x35, 0x08, 0xDA, 
40767
  0x89, 0x01, 0x0C, 0x35, 0x09, 0xDA, 0x86, 0xD0, 0x0F, 0x35, 0x0A, 0xCF, 0x02, 0x65, 0x70, 0x13, 
40768
  0x35, 0x0B, 0xDA, 0x80, 0xB7, 0x13, 0x1C, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 
40769
  0x61, 0x1C, 0x30, 0x0D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x39, 0x1F, 0x2F, 0x09, 
40770
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x38, 0x30, 0x35, 0x0D, 0xDA, 0x86, 0xD0, 0x2A, 
40771
  0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 0x19, 0x04, 0x03, 0x00, 0x32, 0x01, 0x00, 0x00, 0x2A, 
40772
  0x06, 0x01, 0x00, 0x33, 0x05, 0x06, 0x00, 0x19, 0x06, 0x05, 0x00, 0x2A, 0x08, 0x02, 0x00, 0x38, 
40773
  0x07, 0x06, 0x08, 0x19, 0x08, 0x07, 0x00, 0x2A, 0x09, 0x03, 0x00, 0x38, 0x07, 0x06, 0x09, 0x19, 
40774
  0x09, 0x07, 0x00, 0x2A, 0x0A, 0x04, 0x00, 0x38, 0x07, 0x06, 0x0A, 0x19, 0x0A, 0x07, 0x00, 0x31, 
40775
  0x00, 0x01, 0x06, 0x2A, 0x0B, 0x05, 0x00, 0x33, 0x07, 0x0B, 0x00, 0x19, 0x0B, 0x07, 0x00, 0x1C, 
40776
  0x08, 0x07, 0x00, 0x2A, 0x0D, 0x06, 0x00, 0x30, 0x08, 0x0D, 0x00, 0x2A, 0x0E, 0x07, 0x00, 0x33, 
40777
  0x0D, 0x0E, 0x00, 0x19, 0x0C, 0x0D, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x0C, 0x08, 0x00, 0x19, 
40778
  0x0D, 0x0C, 0x00, 0x1C, 0x0D, 0x03, 0x00, 0x19, 0x0C, 0x0D, 0x00, 0x1A, 0x11, 0x00, 0x00, 0x1C, 
40779
  0x09, 0x03, 0x00, 0x19, 0x0E, 0x09, 0x00, 0x1A, 0x0D, 0x00, 0x00, 0x2A, 0x0F, 0x06, 0x00, 0x30, 
40780
  0x0F, 0x00, 0x00, 0x2A, 0x10, 0x08, 0x00, 0x33, 0x0F, 0x10, 0x00, 0x2F, 0x0F, 0x00, 0x00, 0x2A, 
40781
  0x11, 0x09, 0x00, 0x33, 0x10, 0x11, 0x00, 0x2A, 0x0F, 0x06, 0x00, 0x30, 0x10, 0x0F, 0x00, 0x2A, 
40782
  0x11, 0x07, 0x00, 0x33, 0x0F, 0x11, 0x00, 0x19, 0x0E, 0x0F, 0x00, 0x19, 0x0C, 0x0E, 0x00, 0x19, 
40783
  0x0D, 0x0C, 0x00, 0x31, 0x04, 0x0B, 0x0D, 0x2F, 0x0A, 0x00, 0x00, 0x2A, 0x0E, 0x0A, 0x00, 0x34, 
40784
  0x0E, 0x00, 0x00, 0x8B, 0xB8, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
40785
  0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40786
  0x00, 0x03, 0x00, 0x03, 0x03, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x02, 0x11, 0x00, 0x19, 
40787
  0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0xBF, 0xFF, 0x0F, 0x00, 
40788
  0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x03, 0x1F, 0x00, 0x1F, 0x00, 
40789
  0x1F, 0x00, 0x1F, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 
40790
  0x11, 0xBF, 0xFD, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x04, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40791
  0xDA, 0x8A, 0x28, 0xDA, 0x80, 0xC5, 0x00, 0x0A, 0x00, 0xCF, 0x09, 0x5F, 0x30, 0x30, 0x30, 0x30, 
40792
  0x35, 0x62, 0x24, 0x30, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x02, 0x00, 0x00, 0x33, 0x01, 0x02, 0x00, 
40793
  0x2A, 0x03, 0x01, 0x00, 0x2A, 0x04, 0x02, 0x00, 0x31, 0x03, 0x01, 0x04, 0x2A, 0x03, 0x03, 0x00, 
40794
  0x2F, 0x03, 0x00, 0x00, 0x43, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x8B, 0xD6, 0x0F, 0x00, 
40795
  0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
40796
  0x0F, 0x8B, 0xD6, 0x0F, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40797
  0x00, 0x03, 0x00, 0x03, 0xCF, 0x0D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x6F, 0x72, 
40798
  0x6D, 0x61, 0x74, 0xDA, 0x4C, 0xCF, 0x11, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x6E, 0x65, 
40799
  0x77, 0x2D, 0x66, 0x69, 0x6C, 0x6C, 0x65, 0x64, 0xD8, 0x11, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
40800
  0x2F, 0x6E, 0x65, 0x77, 0x2D, 0x66, 0x69, 0x6C, 0x6C, 0x65, 0x64, 0xCF, 0x0F, 0x2A, 0x70, 0x72, 
40801
  0x65, 0x74, 0x74, 0x79, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x2A, 0xDA, 0x80, 0xC1, 0xDA, 
40802
  0x80, 0xFA, 0xDA, 0x80, 0xF0, 0xCF, 0x07, 0x7A, 0x69, 0x70, 0x63, 0x6F, 0x6C, 0x6C, 0xD7, 0x00, 
40803
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x02, 0x02, 0x02, 0x00, 0x15, 0x00, 0x06, 0xCE, 0x07, 0x7A, 
40804
  0x69, 0x70, 0x63, 0x6F, 0x6C, 0x6C, 0xDA, 0x18, 0x00, 0x15, 0x00, 0xDA, 0x86, 0xFC, 0x00, 0x15, 
40805
  0x01, 0xCF, 0x02, 0x76, 0x73, 0x00, 0x15, 0x02, 0xDA, 0x8A, 0x3C, 0x01, 0x15, 0x04, 0xDA, 0x81, 
40806
  0x08, 0x02, 0x15, 0x05, 0xCF, 0x02, 0x6B, 0x6B, 0x03, 0x15, 0x06, 0xCF, 0x02, 0x76, 0x6B, 0x42, 
40807
  0x03, 0x00, 0x00, 0x19, 0x04, 0x03, 0x00, 0x26, 0x05, 0x00, 0x00, 0x26, 0x06, 0x00, 0x00, 0x47, 
40808
  0x05, 0x00, 0x05, 0x26, 0x08, 0x00, 0x00, 0x23, 0x07, 0x08, 0x05, 0x1C, 0x07, 0x03, 0x00, 0x1A, 
40809
  0x0C, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x06, 0x01, 0x06, 0x26, 0x08, 0x00, 0x00, 0x23, 
40810
  0x07, 0x08, 0x06, 0x1C, 0x07, 0x03, 0x00, 0x1A, 0x06, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x38, 
40811
  0x07, 0x00, 0x05, 0x38, 0x08, 0x01, 0x06, 0x3A, 0x04, 0x07, 0x08, 0x1A, 0xF1, 0xFF, 0xFF, 0x03, 
40812
  0x04, 0x00, 0x00, 0x85, 0xCD, 0x03, 0x00, 0x03, 0x01, 0x03, 0x01, 0x03, 0x02, 0x0D, 0x01, 0x09, 
40813
  0x00, 0x09, 0x00, 0x05, 0x00, 0x14, 0x00, 0x05, 0x01, 0x0D, 0x01, 0x09, 0x00, 0x09, 0x00, 0x05, 
40814
  0x00, 0x14, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x19, 0x00, 0x05, 0xBF, 0xFB, 0x03, 0xBF, 0xF9, 0x01, 
40815
  0xCF, 0x0A, 0x66, 0x72, 0x6F, 0x6D, 0x2D, 0x70, 0x61, 0x69, 0x72, 0x73, 0xD7, 0x00, 0xCD, 0x00, 
40816
  0xDC, 0x00, 0x00, 0x09, 0x01, 0x01, 0x01, 0x00, 0x0F, 0x00, 0x07, 0xCE, 0x0A, 0x66, 0x72, 0x6F, 
40817
  0x6D, 0x2D, 0x70, 0x61, 0x69, 0x72, 0x73, 0xDA, 0x18, 0x00, 0x0F, 0x00, 0xCF, 0x02, 0x70, 0x73, 
40818
  0x00, 0x0F, 0x01, 0xDA, 0x8A, 0x42, 0x01, 0x0F, 0x03, 0xDA, 0x23, 0x01, 0x0E, 0x00, 0xCF, 0x07, 
40819
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x58, 0x04, 0x0E, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
40820
  0x30, 0x32, 0x57, 0x08, 0x0E, 0x07, 0xDA, 0x22, 0x0A, 0x0E, 0x08, 0xDA, 0x52, 0x42, 0x02, 0x00, 
40821
  0x00, 0x19, 0x03, 0x02, 0x00, 0x26, 0x05, 0x00, 0x00, 0x47, 0x04, 0x00, 0x05, 0x19, 0x05, 0x04, 
40822
  0x00, 0x1D, 0x05, 0x09, 0x00, 0x38, 0x04, 0x00, 0x05, 0x3B, 0x06, 0x04, 0x00, 0x19, 0x07, 0x06, 
40823
  0x00, 0x3B, 0x06, 0x04, 0x01, 0x19, 0x08, 0x06, 0x00, 0x3A, 0x03, 0x07, 0x08, 0x47, 0x05, 0x00, 
40824
  0x05, 0x1A, 0xF8, 0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 0x86, 0x9D, 0x03, 0x00, 0x03, 0x01, 0x03, 
40825
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40826
  0x01, 0x05, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0xBF, 0xFB, 0x01, 0xDA, 0x83, 0x20, 0xDA, 0x83, 0x1D, 
40827
  0xCF, 0x0C, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x73, 0x65, 0x74, 0x65, 0x6E, 0x76, 0xDA, 0x82, 
40828
  0x71, 0xDA, 0x89, 0x54, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x13, 0x00, 0x00, 0xCD, 0x7F, 
40829
  0xFF, 0xFF, 0xFF, 0x05, 0x59, 0x00, 0x19, 0xCE, 0x05, 0x72, 0x61, 0x6E, 0x67, 0x65, 0xDA, 0x18, 
40830
  0xDA, 0x86, 0x4F, 0xDA, 0x89, 0xA5, 0xDA, 0x88, 0xE4, 0xDA, 0x81, 0x8C, 0xCE, 0x22, 0x65, 0x78, 
40831
  0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x31, 0x20, 0x74, 0x6F, 0x20, 0x33, 0x20, 0x61, 0x72, 
40832
  0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 
40833
  0x00, 0x59, 0x00, 0xDA, 0x80, 0xAB, 0x00, 0x59, 0x01, 0xDA, 0x89, 0x54, 0x01, 0x59, 0x03, 0xCF, 
40834
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x41, 0x05, 0x11, 0x05, 0xDA, 0x80, 0xD8, 0x09, 0x11, 
40835
  0x06, 0xDA, 0x86, 0xEB, 0x0A, 0x10, 0x04, 0xDA, 0x80, 0x90, 0x0A, 0x10, 0x05, 0xCF, 0x07, 0x5F, 
40836
  0x30, 0x30, 0x30, 0x30, 0x31, 0x42, 0x14, 0x24, 0x06, 0xDA, 0x80, 0xD8, 0x16, 0x24, 0x07, 0xDA, 
40837
  0x85, 0x1B, 0x1B, 0x24, 0x05, 0xDA, 0x86, 0xEB, 0x1C, 0x23, 0x08, 0xDA, 0x80, 0x90, 0x1C, 0x23, 
40838
  0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x43, 0x27, 0x56, 0x07, 0xDA, 0x80, 0xD8, 
40839
  0x29, 0x56, 0x08, 0xDA, 0x85, 0x1B, 0x2B, 0x56, 0x09, 0xDA, 0x80, 0xFF, 0x37, 0x47, 0x0C, 0xCF, 
40840
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x44, 0x38, 0x46, 0x0B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
40841
  0x30, 0x30, 0x31, 0x45, 0x38, 0x46, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x46, 
40842
  0x3A, 0x46, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x47, 0x3F, 0x45, 0x10, 0xDA, 
40843
  0x80, 0x90, 0x48, 0x56, 0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x48, 0x49, 0x55, 
40844
  0x0B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x49, 0x49, 0x55, 0x08, 0xCF, 0x07, 0x5F, 
40845
  0x30, 0x30, 0x30, 0x30, 0x31, 0x4A, 0x49, 0x55, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
40846
  0x31, 0x4B, 0x4E, 0x54, 0x0F, 0xDA, 0x80, 0x90, 0x3D, 0x02, 0x00, 0x00, 0x19, 0x03, 0x02, 0x00, 
40847
  0x24, 0x02, 0x03, 0x01, 0x1C, 0x02, 0x0E, 0x00, 0x3B, 0x04, 0x00, 0x00, 0x19, 0x05, 0x04, 0x00, 
40848
  0x2F, 0x05, 0x00, 0x00, 0x2A, 0x06, 0x00, 0x00, 0x33, 0x04, 0x06, 0x00, 0x19, 0x06, 0x04, 0x00, 
40849
  0x29, 0x04, 0x00, 0x00, 0x21, 0x07, 0x04, 0x05, 0x1C, 0x07, 0x04, 0x00, 0x3A, 0x06, 0x04, 0x04, 
40850
  0x05, 0x04, 0x04, 0x01, 0x1A, 0xFC, 0xFF, 0xFF, 0x03, 0x06, 0x00, 0x00, 0x24, 0x04, 0x03, 0x02, 
40851
  0x1C, 0x04, 0x12, 0x00, 0x3B, 0x05, 0x00, 0x00, 0x19, 0x06, 0x05, 0x00, 0x3B, 0x05, 0x00, 0x01, 
40852
  0x19, 0x07, 0x05, 0x00, 0x07, 0x05, 0x07, 0x06, 0x2F, 0x05, 0x00, 0x00, 0x2A, 0x09, 0x00, 0x00, 
40853
  0x33, 0x08, 0x09, 0x00, 0x19, 0x05, 0x08, 0x00, 0x19, 0x08, 0x06, 0x00, 0x21, 0x09, 0x08, 0x07, 
40854
  0x1C, 0x09, 0x05, 0x00, 0x07, 0x0A, 0x08, 0x06, 0x3A, 0x05, 0x0A, 0x08, 0x05, 0x08, 0x08, 0x01, 
40855
  0x1A, 0xFB, 0xFF, 0xFF, 0x03, 0x05, 0x00, 0x00, 0x24, 0x05, 0x03, 0x03, 0x1C, 0x05, 0x31, 0x00, 
40856
  0x3B, 0x06, 0x00, 0x00, 0x19, 0x07, 0x06, 0x00, 0x3B, 0x06, 0x00, 0x01, 0x19, 0x08, 0x06, 0x00, 
40857
  0x3B, 0x06, 0x00, 0x02, 0x19, 0x09, 0x06, 0x00, 0x2F, 0x09, 0x00, 0x00, 0x2A, 0x0A, 0x01, 0x00, 
40858
  0x33, 0x06, 0x0A, 0x00, 0x1C, 0x06, 0x03, 0x00, 0x3E, 0x0A, 0x00, 0x00, 0x03, 0x0A, 0x00, 0x00, 
40859
  0x2F, 0x09, 0x00, 0x00, 0x2A, 0x0B, 0x02, 0x00, 0x33, 0x0A, 0x0B, 0x00, 0x1C, 0x0A, 0x12, 0x00, 
40860
  0x3E, 0x0B, 0x00, 0x00, 0x19, 0x0C, 0x0B, 0x00, 0x19, 0x0B, 0x07, 0x00, 0x08, 0x0D, 0x09, 0xFF, 
40861
  0x19, 0x0E, 0x0D, 0x00, 0x20, 0x0D, 0x0E, 0x00, 0x1C, 0x0D, 0x0A, 0x00, 0x1F, 0x0F, 0x0B, 0x08, 
40862
  0x1C, 0x0F, 0x07, 0x00, 0x19, 0x10, 0x0B, 0x00, 0x30, 0x0C, 0x10, 0x00, 0x2A, 0x12, 0x03, 0x00, 
40863
  0x33, 0x11, 0x12, 0x00, 0x07, 0x0B, 0x0B, 0x0E, 0x1A, 0xF9, 0xFF, 0xFF, 0x1A, 0x01, 0x00, 0x00, 
40864
  0x03, 0x0C, 0x00, 0x00, 0x3E, 0x0B, 0x00, 0x00, 0x19, 0x0C, 0x0B, 0x00, 0x19, 0x0B, 0x07, 0x00, 
40865
  0x20, 0x0D, 0x09, 0x00, 0x1C, 0x0D, 0x0A, 0x00, 0x21, 0x0E, 0x0B, 0x08, 0x1C, 0x0E, 0x07, 0x00, 
40866
  0x19, 0x0F, 0x0B, 0x00, 0x30, 0x0C, 0x0F, 0x00, 0x2A, 0x11, 0x03, 0x00, 0x33, 0x10, 0x11, 0x00, 
40867
  0x06, 0x0B, 0x0B, 0x09, 0x1A, 0xF9, 0xFF, 0xFF, 0x1A, 0x01, 0x00, 0x00, 0x03, 0x0C, 0x00, 0x00, 
40868
  0x2A, 0x06, 0x04, 0x00, 0x01, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x83, 0xFF, 0x09, 0x00, 
40869
  0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x09, 0x00, 0x09, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 
40870
  0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x15, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFD, 0x07, 
40871
  0xBF, 0xFF, 0x03, 0x00, 0x03, 0x07, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x1D, 0x00, 
40872
  0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x1E, 0x00, 
40873
  0x15, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFD, 0x07, 0xBF, 0xFA, 0x03, 0x00, 0x03, 0x0C, 0x09, 0x00, 
40874
  0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x02, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 
40875
  0xFF, 0x09, 0x00, 0x09, 0x00, 0x09, 0x02, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFE, 0x09, 0x02, 
40876
  0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x27, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 
40877
  0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 
40878
  0x14, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
40879
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 
40880
  0x05, 0x00, 0x05, 0x00, 0x05, 0xCF, 0x0B, 0x6E, 0x65, 0x74, 0x2F, 0x73, 0x65, 0x6E, 0x64, 0x2D, 
40881
  0x74, 0x6F, 0xD8, 0x0B, 0x6E, 0x65, 0x74, 0x2F, 0x73, 0x65, 0x6E, 0x64, 0x2D, 0x74, 0x6F, 0xCF, 
40882
  0x05, 0x6D, 0x65, 0x72, 0x67, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x09, 0x00, 0x00, 
40883
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x14, 0x00, 0x09, 0xCE, 0x05, 0x6D, 0x65, 0x72, 0x67, 0x65, 
40884
  0xDA, 0x18, 0x00, 0x14, 0x00, 0xDA, 0x81, 0xCB, 0x00, 0x14, 0x01, 0xDA, 0x8A, 0x59, 0x01, 0x14, 
40885
  0x03, 0xCF, 0x09, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x65, 0x72, 0x01, 0x13, 0x00, 0xCF, 
40886
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x45, 0x04, 0x13, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
40887
  0x30, 0x30, 0x32, 0x44, 0x07, 0x13, 0x06, 0xDA, 0x81, 0xCF, 0x07, 0x11, 0x06, 0xCF, 0x07, 0x5F, 
40888
  0x30, 0x30, 0x30, 0x30, 0x32, 0x43, 0x0A, 0x11, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
40889
  0x32, 0x42, 0x0C, 0x11, 0x04, 0xDA, 0x81, 0xD2, 0x42, 0x02, 0x00, 0x00, 0x19, 0x03, 0x02, 0x00, 
40890
  0x26, 0x05, 0x00, 0x00, 0x47, 0x04, 0x00, 0x05, 0x19, 0x05, 0x04, 0x00, 0x1D, 0x05, 0x0E, 0x00, 
40891
  0x38, 0x04, 0x00, 0x05, 0x19, 0x06, 0x04, 0x00, 0x26, 0x07, 0x00, 0x00, 0x47, 0x04, 0x06, 0x07, 
40892
  0x19, 0x07, 0x04, 0x00, 0x1D, 0x07, 0x06, 0x00, 0x19, 0x04, 0x07, 0x00, 0x38, 0x08, 0x06, 0x04, 
40893
  0x3A, 0x03, 0x04, 0x08, 0x47, 0x07, 0x06, 0x07, 0x1A, 0xFB, 0xFF, 0xFF, 0x47, 0x05, 0x00, 0x05, 
40894
  0x1A, 0xF3, 0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 0x86, 0x21, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 
40895
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40896
  0x03, 0x00, 0x03, 0x02, 0x18, 0x00, 0x05, 0xBF, 0xFE, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40897
  0xBF, 0xFA, 0x01, 0xCF, 0x08, 0x6F, 0x73, 0x2F, 0x75, 0x6D, 0x61, 0x73, 0x6B, 0xD8, 0x08, 0x6F, 
40898
  0x73, 0x2F, 0x75, 0x6D, 0x61, 0x73, 0x6B, 0xCF, 0x0B, 0x2A, 0x64, 0x6F, 0x63, 0x2D, 0x63, 0x6F, 
40899
  0x6C, 0x6F, 0x72, 0x2A, 0xDA, 0x83, 0x4A, 0xCF, 0x06, 0x64, 0x69, 0x73, 0x61, 0x73, 0x6D, 0xDA, 
40900
  0x80, 0xE6, 0xCF, 0x0B, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0xD8, 
40901
  0x0B, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0xCF, 0x0D, 0x2A, 0x70, 
40902
  0x65, 0x67, 0x2D, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x61, 0x72, 0x2A, 0xD0, 0x0B, 0x70, 0x65, 0x67, 
40903
  0x2D, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x61, 0x72, 0xCF, 0x04, 0x61, 0x6E, 0x79, 0x3F, 0xD7, 0x00, 
40904
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x01, 0x01, 0x01, 0x00, 0x10, 0x00, 0x06, 0xCE, 0x04, 0x61, 
40905
  0x6E, 0x79, 0x3F, 0xDA, 0x18, 0x00, 0x10, 0x00, 0xDA, 0x1F, 0x00, 0x10, 0x01, 0xDA, 0x8A, 0x69, 
40906
  0x00, 0x10, 0x02, 0xDA, 0x81, 0x08, 0x00, 0x0F, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
40907
  0x32, 0x70, 0x03, 0x0F, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x6F, 0x06, 0x0F, 
40908
  0x05, 0xDA, 0x1E, 0x26, 0x02, 0x00, 0x00, 0x26, 0x04, 0x00, 0x00, 0x47, 0x03, 0x00, 0x04, 0x19, 
40909
  0x04, 0x03, 0x00, 0x1D, 0x04, 0x0B, 0x00, 0x38, 0x03, 0x00, 0x04, 0x19, 0x05, 0x03, 0x00, 0x1C, 
40910
  0x02, 0x03, 0x00, 0x1A, 0x07, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x1C, 0x05, 0x03, 0x00, 0x19, 
40911
  0x02, 0x05, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x04, 0x00, 0x04, 0x1A, 0xF6, 0xFF, 0xFF, 0x03, 
40912
  0x02, 0x00, 0x00, 0x85, 0x9E, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40913
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x05, 0x00, 0x0B, 0x00, 0x05, 0xBF, 0xFF, 
40914
  0x03, 0x00, 0x03, 0xBF, 0xFC, 0x01, 0xCF, 0x0A, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x6C, 0x69, 0x6E, 
40915
  0x65, 0x73, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x02, 0x05, 0x00, 
40916
  0x01, 0x02, 0xCE, 0x0A, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x6C, 0x69, 0x6E, 0x65, 0x73, 0xDA, 0x18, 
40917
  0xDA, 0x82, 0x70, 0xDA, 0x81, 0x5E, 0x00, 0x05, 0x00, 0xCF, 0x04, 0x66, 0x69, 0x6C, 0x65, 0x00, 
40918
  0x05, 0x01, 0xDA, 0x8A, 0x6E, 0x2E, 0x02, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x30, 0x02, 0x03, 
40919
  0x00, 0x2A, 0x03, 0x01, 0x00, 0x34, 0x03, 0x00, 0x00, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x03, 0x00, 
40920
  0x00, 0x00, 0x02, 0x0A, 0x01, 0x03, 0xDA, 0x18, 0xDA, 0x82, 0x5E, 0xDA, 0x80, 0xF7, 0xBF, 0xFF, 
40921
  0x00, 0x00, 0xDA, 0x8A, 0x71, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8A, 0x6E, 0x05, 0x09, 0x01, 0xDA, 
40922
  0x81, 0xF2, 0x2B, 0x00, 0x00, 0x00, 0x2A, 0x01, 0x00, 0x00, 0x30, 0x00, 0x01, 0x00, 0x2A, 0x01, 
40923
  0x01, 0x00, 0x33, 0x00, 0x01, 0x00, 0x19, 0x01, 0x00, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x36, 0x02, 
40924
  0x01, 0x03, 0x1A, 0xF8, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x86, 0xE5, 0x16, 0x00, 
40925
  0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x07, 0xBF, 0xFF, 0x05, 
40926
  0x00, 0x05, 0x86, 0xE4, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x00, 0x00, 
40927
  0x00, 0xCF, 0x0A, 0x67, 0x63, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6C, 0xD8, 0x0A, 0x67, 
40928
  0x63, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6C, 0xCF, 0x0B, 0x70, 0x61, 0x72, 0x73, 0x65, 
40929
  0x72, 0x2F, 0x62, 0x79, 0x74, 0x65, 0xD8, 0x0B, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x62, 
40930
  0x79, 0x74, 0x65, 0xCF, 0x0B, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x63, 0x6C, 0x65, 0x61, 0x72, 
40931
  0xDA, 0x82, 0x4F, 0xDA, 0x7F, 0xDA, 0x88, 0x2A, 0xDA, 0x82, 0xDD, 0xDA, 0x82, 0xDA, 0xCF, 0x0F, 
40932
  0x65, 0x76, 0x2F, 0x73, 0x70, 0x61, 0x77, 0x6E, 0x2D, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0xD7, 
40933
  0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x05, 0x0F, 
40934
  0x00, 0x02, 0xCE, 0x0F, 0x65, 0x76, 0x2F, 0x73, 0x70, 0x61, 0x77, 0x6E, 0x2D, 0x74, 0x68, 0x72, 
40935
  0x65, 0x61, 0x64, 0xDA, 0x18, 0xDA, 0x82, 0xBC, 0xDA, 0x82, 0xAE, 0xCF, 0x0D, 0x5F, 0x73, 0x70, 
40936
  0x61, 0x77, 0x6E, 0x2D, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0xDA, 0x82, 0xBE, 0xD0, 0x01, 0x6E, 
40937
  0x00, 0x0F, 0x00, 0xDA, 0x82, 0xB5, 0x00, 0x0F, 0x01, 0xDA, 0x8A, 0x77, 0x2A, 0x03, 0x00, 0x00, 
40938
  0x2F, 0x03, 0x00, 0x00, 0x44, 0x02, 0x00, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x2A, 0x05, 0x02, 0x00, 
40939
  0x31, 0x04, 0x05, 0x02, 0x32, 0x00, 0x00, 0x00, 0x43, 0x03, 0x00, 0x00, 0x2A, 0x04, 0x03, 0x00, 
40940
  0x26, 0x05, 0x00, 0x00, 0x31, 0x04, 0x03, 0x05, 0x2A, 0x04, 0x04, 0x00, 0x2F, 0x04, 0x00, 0x00, 
40941
  0x43, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x8E, 0x47, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
40942
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
40943
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCF, 0x0B, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x64, 0x64, 
40944
  0x72, 0x65, 0x73, 0x73, 0xD8, 0x0B, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 
40945
  0x73, 0xCF, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
40946
  0x05, 0x02, 0x01, 0x02, 0x01, 0x06, 0x00, 0x03, 0xCE, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 
40947
  0xDA, 0x18, 0xD8, 0x06, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x00, 0x06, 0x00, 0xDA, 0x83, 0xAF, 
40948
  0x00, 0x06, 0x01, 0xDA, 0x25, 0x00, 0x06, 0x02, 0xDA, 0x8A, 0x7E, 0x30, 0x00, 0x01, 0x00, 0x43, 
40949
  0x03, 0x00, 0x00, 0x29, 0x04, 0x00, 0x00, 0x30, 0x04, 0x03, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x34, 
40950
  0x04, 0x00, 0x00, 0x81, 0x78, 0x0D, 0x00, 0x0D, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40951
  0xDA, 0x84, 0x4D, 0xDA, 0x84, 0x4B, 0xCF, 0x05, 0x2A, 0x6F, 0x75, 0x74, 0x2A, 0xD0, 0x03, 0x6F, 
40952
  0x75, 0x74, 0xCF, 0x09, 0x6F, 0x73, 0x2F, 0x69, 0x73, 0x61, 0x74, 0x74, 0x79, 0xD8, 0x09, 0x6F, 
40953
  0x73, 0x2F, 0x69, 0x73, 0x61, 0x74, 0x74, 0x79, 0xCF, 0x04, 0x6E, 0x61, 0x6E, 0x3F, 0xD7, 0x00, 
40954
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x00, 0x02, 0x00, 0x02, 0xCE, 0x04, 0x6E, 
40955
  0x61, 0x6E, 0x3F, 0xDA, 0x18, 0x00, 0x02, 0x00, 0xDA, 0x1E, 0x00, 0x02, 0x01, 0xDA, 0x8A, 0x86, 
40956
  0x48, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x63, 0x25, 0x00, 0x25, 0xCF, 0x03, 0x64, 0x79, 
40957
  0x6E, 0xDA, 0x80, 0xDF, 0xCF, 0x09, 0x75, 0x6E, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0xD8, 
40958
  0x09, 0x75, 0x6E, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0xCF, 0x0B, 0x2A, 0x6C, 0x69, 0x6E, 
40959
  0x74, 0x2D, 0x77, 0x61, 0x72, 0x6E, 0x2A, 0xDA, 0x82, 0x5C, 0xCF, 0x09, 0x61, 0x62, 0x73, 0x74, 
40960
  0x72, 0x61, 0x63, 0x74, 0x3F, 0xD8, 0x09, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x3F, 
40961
  0xDA, 0x82, 0xF4, 0xDA, 0x83, 0xE3, 0xDA, 0x88, 0xE6, 0xDA, 0x88, 0xE4, 0xCF, 0x0D, 0x67, 0x63, 
40962
  0x73, 0x65, 0x74, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6C, 0xD8, 0x0D, 0x67, 0x63, 0x73, 
40963
  0x65, 0x74, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6C, 0xCF, 0x0C, 0x61, 0x72, 0x72, 0x61, 
40964
  0x79, 0x2F, 0x65, 0x6E, 0x73, 0x75, 0x72, 0x65, 0xD8, 0x0C, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 
40965
  0x65, 0x6E, 0x73, 0x75, 0x72, 0x65, 0xCF, 0x0C, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x67, 0x65, 
40966
  0x74, 0x65, 0x6E, 0x76, 0xDA, 0x80, 0xCB, 0xCF, 0x06, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0xD7, 
40967
  0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x09, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x06, 0x16, 
40968
  0x00, 0x04, 0xCE, 0x06, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0xDA, 0x18, 0xDA, 0x49, 0xDA, 0x84, 
40969
  0xEF, 0xCF, 0x01, 0x3E, 0xDA, 0x82, 0x90, 0xDA, 0x84, 0xF1, 0xDA, 0x50, 0x00, 0x16, 0x00, 0xDA, 
40970
  0x80, 0xD8, 0x00, 0x16, 0x01, 0xDA, 0x82, 0xB5, 0x00, 0x16, 0x02, 0xDA, 0x8A, 0x94, 0x02, 0x16, 
40971
  0x04, 0xCF, 0x04, 0x69, 0x74, 0x65, 0x72, 0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 0x19, 
40972
  0x04, 0x03, 0x00, 0x2A, 0x05, 0x01, 0x00, 0x31, 0x05, 0x04, 0x00, 0x43, 0x03, 0x00, 0x00, 0x2A, 
40973
  0x06, 0x02, 0x00, 0x29, 0x07, 0x00, 0x00, 0x31, 0x06, 0x04, 0x07, 0x43, 0x05, 0x00, 0x00, 0x2A, 
40974
  0x07, 0x03, 0x00, 0x30, 0x07, 0x04, 0x00, 0x43, 0x06, 0x00, 0x00, 0x2A, 0x08, 0x04, 0x00, 0x30, 
40975
  0x08, 0x05, 0x00, 0x32, 0x01, 0x00, 0x00, 0x2F, 0x06, 0x00, 0x00, 0x43, 0x07, 0x00, 0x00, 0x2A, 
40976
  0x06, 0x05, 0x00, 0x31, 0x06, 0x03, 0x07, 0x43, 0x05, 0x00, 0x00, 0x03, 0x05, 0x00, 0x00, 0x82, 
40977
  0x0C, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
40978
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
40979
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDA, 0x87, 0x89, 0xDA, 
40980
  0x87, 0x87, 0xCF, 0x06, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
40981
  0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x06, 0x74, 0x61, 0x62, 0x6C, 0x65, 
40982
  0x3F, 0xDA, 0x18, 0xDA, 0x2C, 0xDA, 0x80, 0x8A, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 
40983
  0xDA, 0x8A, 0x99, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x2A, 
40984
  0x04, 0x01, 0x00, 0x23, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x6D, 0x2B, 0x00, 0x2B, 0x00, 
40985
  0x2B, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0xCF, 0x0F, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 
40986
  0x74, 0x6F, 0x2D, 0x74, 0x61, 0x62, 0x6C, 0x65, 0xD8, 0x0F, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 
40987
  0x2F, 0x74, 0x6F, 0x2D, 0x74, 0x61, 0x62, 0x6C, 0x65, 0xCF, 0x0B, 0x6F, 0x73, 0x2F, 0x63, 0x6F, 
40988
  0x6D, 0x70, 0x69, 0x6C, 0x65, 0x72, 0xD8, 0x0B, 0x6F, 0x73, 0x2F, 0x63, 0x6F, 0x6D, 0x70, 0x69, 
40989
  0x6C, 0x65, 0x72, 0xCF, 0x09, 0x6E, 0x65, 0x74, 0x2F, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0xD8, 0x09, 
40990
  0x6E, 0x65, 0x74, 0x2F, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0xCF, 0x0F, 0x64, 0x65, 0x62, 0x75, 0x67, 
40991
  0x2F, 0x61, 0x72, 0x67, 0x2D, 0x73, 0x74, 0x61, 0x63, 0x6B, 0xD8, 0x0F, 0x64, 0x65, 0x62, 0x75, 
40992
  0x67, 0x2F, 0x61, 0x72, 0x67, 0x2D, 0x73, 0x74, 0x61, 0x63, 0x6B, 0xCF, 0x07, 0x65, 0x70, 0x72, 
40993
  0x69, 0x6E, 0x74, 0x66, 0xDA, 0x81, 0x80, 0xCF, 0x0B, 0x65, 0x76, 0x2F, 0x64, 0x65, 0x61, 0x64, 
40994
  0x6C, 0x69, 0x6E, 0x65, 0xD8, 0x0B, 0x65, 0x76, 0x2F, 0x64, 0x65, 0x61, 0x64, 0x6C, 0x69, 0x6E, 
40995
  0x65, 0xCF, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
40996
  0x00, 0x06, 0x02, 0x02, 0x02, 0x03, 0x0C, 0x00, 0x03, 0xCE, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 
40997
  0x6C, 0x74, 0xDA, 0x18, 0xDA, 0x82, 0xD0, 0xDA, 0x4F, 0xDA, 0x4A, 0x00, 0x0C, 0x00, 0xDA, 0x60, 
40998
  0x00, 0x0C, 0x01, 0xCF, 0x03, 0x76, 0x61, 0x6C, 0x00, 0x0C, 0x02, 0xDA, 0x8A, 0xA7, 0x2A, 0x04, 
40999
  0x00, 0x00, 0x26, 0x05, 0x00, 0x00, 0x31, 0x04, 0x05, 0x00, 0x43, 0x03, 0x00, 0x00, 0x2A, 0x05, 
41000
  0x01, 0x00, 0x31, 0x05, 0x03, 0x01, 0x2F, 0x00, 0x00, 0x00, 0x43, 0x04, 0x00, 0x00, 0x2A, 0x05, 
41001
  0x02, 0x00, 0x31, 0x05, 0x00, 0x04, 0x43, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x80, 0xAF, 
41002
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
41003
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0F, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x63, 0x63, 
41004
  0x65, 0x70, 0x74, 0x2D, 0x6C, 0x6F, 0x6F, 0x70, 0xDA, 0x83, 0x27, 0xCF, 0x07, 0x62, 0x72, 0x73, 
41005
  0x68, 0x69, 0x66, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x11, 0x06, 0x00, 0x00, 0xCD, 0x7F, 
41006
  0xFF, 0xFF, 0xFF, 0x00, 0x13, 0xCE, 0x07, 0x62, 0x72, 0x73, 0x68, 0x69, 0x66, 0x74, 0x3D, 0x01, 
41007
  0x00, 0x00, 0x24, 0x02, 0x01, 0x00, 0x1C, 0x02, 0x03, 0x00, 0x29, 0x03, 0x01, 0x00, 0x03, 0x03, 
41008
  0x00, 0x00, 0x24, 0x02, 0x01, 0x01, 0x1C, 0x02, 0x05, 0x00, 0x29, 0x03, 0x01, 0x00, 0x3B, 0x04, 
41009
  0x00, 0x00, 0x14, 0x03, 0x03, 0x04, 0x03, 0x03, 0x00, 0x00, 0x3B, 0x03, 0x00, 0x00, 0x29, 0x05, 
41010
  0x01, 0x00, 0x38, 0x04, 0x00, 0x05, 0x14, 0x03, 0x03, 0x04, 0x05, 0x05, 0x05, 0x01, 0x23, 0x02, 
41011
  0x05, 0x01, 0x1C, 0x02, 0xFC, 0xFF, 0x03, 0x03, 0x00, 0x00, 0xCF, 0x09, 0x66, 0x69, 0x6C, 0x65, 
41012
  0x2F, 0x73, 0x65, 0x65, 0x6B, 0xD8, 0x09, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x73, 0x65, 0x65, 0x6B, 
41013
  0xCF, 0x08, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3C, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 
41014
  0x00, 0x03, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x04, 0x00, 0x02, 0xCE, 0x08, 0x63, 
41015
  0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3C, 0xDA, 0x18, 0xDA, 0x83, 0xA5, 0xDA, 0x87, 0x9A, 0x00, 
41016
  0x04, 0x00, 0xDA, 0x82, 0x52, 0x00, 0x04, 0x01, 0xDA, 0x8A, 0xB1, 0x2A, 0x02, 0x00, 0x00, 0x30, 
41017
  0x02, 0x00, 0x00, 0x2A, 0x02, 0x01, 0x00, 0x34, 0x02, 0x00, 0x00, 0x83, 0x16, 0x03, 0x00, 0x03, 
41018
  0x00, 0x03, 0x00, 0x03, 0xCF, 0x08, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3D, 0xD7, 0x00, 
41019
  0xCD, 0x00, 0xDD, 0x00, 0x00, 0x03, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x04, 0x00, 
41020
  0x02, 0xCE, 0x08, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3D, 0xDA, 0x18, 0xDA, 0x85, 0xF2, 
41021
  0xDA, 0x87, 0x9A, 0x00, 0x04, 0x00, 0xDA, 0x82, 0x52, 0x00, 0x04, 0x01, 0xDA, 0x8A, 0xB4, 0x2A, 
41022
  0x02, 0x00, 0x00, 0x30, 0x02, 0x00, 0x00, 0x2A, 0x02, 0x01, 0x00, 0x34, 0x02, 0x00, 0x00, 0x83, 
41023
  0x11, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x08, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 
41024
  0x65, 0x3E, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x03, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 
41025
  0xFF, 0x02, 0x04, 0x00, 0x02, 0xCE, 0x08, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3E, 0xDA, 
41026
  0x18, 0xDA, 0x85, 0x3A, 0xDA, 0x87, 0x9A, 0x00, 0x04, 0x00, 0xDA, 0x82, 0x52, 0x00, 0x04, 0x01, 
41027
  0xDA, 0x8A, 0xB7, 0x2A, 0x02, 0x00, 0x00, 0x30, 0x02, 0x00, 0x00, 0x2A, 0x02, 0x01, 0x00, 0x34, 
41028
  0x02, 0x00, 0x00, 0x83, 0x20, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x09, 0x65, 0x76, 
41029
  0x2F, 0x67, 0x61, 0x74, 0x68, 0x65, 0x72, 0xD7, 0x01, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x11, 0x00, 
41030
  0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x09, 0x49, 0x01, 0x13, 0xCE, 0x09, 0x65, 0x76, 0x2F, 0x67, 
41031
  0x61, 0x74, 0x68, 0x65, 0x72, 0xDA, 0x18, 0xDA, 0x49, 0xDA, 0x4A, 0xDA, 0x82, 0xC3, 0xCF, 0x03, 
41032
  0x70, 0x75, 0x74, 0xDA, 0x82, 0xAE, 0xDA, 0x83, 0x1F, 0xDA, 0x88, 0x06, 0xDA, 0x50, 0xDA, 0x81, 
41033
  0x8C, 0xBF, 0xFF, 0x00, 0x01, 0xCF, 0x09, 0x6E, 0x65, 0x74, 0x2F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 
41034
  0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x83, 0x20, 0xBF, 0xFF, 0x00, 0x03, 0xCF, 0x08, 0x65, 0x76, 0x2F, 
41035
  0x73, 0x70, 0x61, 0x77, 0x6E, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x82, 0xB7, 0xBF, 0xFF, 0x00, 0x05, 
41036
  0xDA, 0x8A, 0x77, 0xBF, 0xFF, 0x00, 0x06, 0xCF, 0x10, 0x65, 0x76, 0x2F, 0x77, 0x69, 0x74, 0x68, 
41037
  0x2D, 0x64, 0x65, 0x61, 0x64, 0x6C, 0x69, 0x6E, 0x65, 0xBF, 0xFF, 0x00, 0x07, 0xCF, 0x0A, 0x63, 
41038
  0x61, 0x6E, 0x63, 0x65, 0x6C, 0x2D, 0x61, 0x6C, 0x6C, 0xBF, 0xFF, 0x00, 0x08, 0xCF, 0x0F, 0x77, 
41039
  0x61, 0x69, 0x74, 0x2D, 0x66, 0x6F, 0x72, 0x2D, 0x66, 0x69, 0x62, 0x65, 0x72, 0x73, 0x00, 0x49, 
41040
  0x00, 0xCF, 0x06, 0x62, 0x6F, 0x64, 0x69, 0x65, 0x73, 0x00, 0x49, 0x01, 0xDA, 0x8A, 0xBA, 0x02, 
41041
  0x49, 0x03, 0xCF, 0x04, 0x63, 0x68, 0x61, 0x6E, 0x05, 0x49, 0x04, 0xDA, 0x81, 0x08, 0x08, 0x49, 
41042
  0x05, 0xCF, 0x04, 0x66, 0x73, 0x65, 0x74, 0x0B, 0x49, 0x06, 0xCF, 0x05, 0x66, 0x74, 0x65, 0x6D, 
41043
  0x70, 0x1B, 0x3F, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x64, 0x1B, 0x3F, 0x00, 
41044
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x66, 0x1E, 0x3F, 0x0B, 0xCF, 0x07, 0x5F, 0x30, 
41045
  0x30, 0x30, 0x30, 0x36, 0x65, 0x21, 0x3F, 0x0C, 0xDA, 0x80, 0x90, 0x22, 0x3F, 0x0D, 0xDA, 0x82, 
41046
  0xB5, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x19, 0x03, 0x02, 0x00, 0x2A, 0x04, 0x00, 
41047
  0x00, 0x33, 0x02, 0x04, 0x00, 0x19, 0x04, 0x02, 0x00, 0x2A, 0x05, 0x00, 0x00, 0x33, 0x02, 0x05, 
41048
  0x00, 0x19, 0x05, 0x02, 0x00, 0x2A, 0x06, 0x00, 0x00, 0x33, 0x02, 0x06, 0x00, 0x19, 0x06, 0x02, 
41049
  0x00, 0x42, 0x02, 0x00, 0x00, 0x2A, 0x08, 0x01, 0x00, 0x31, 0x08, 0x05, 0x02, 0x43, 0x07, 0x00, 
41050
  0x00, 0x2A, 0x08, 0x02, 0x00, 0x2F, 0x08, 0x00, 0x00, 0x43, 0x02, 0x00, 0x00, 0x2A, 0x09, 0x01, 
41051
  0x00, 0x31, 0x09, 0x03, 0x02, 0x43, 0x08, 0x00, 0x00, 0x3E, 0x02, 0x00, 0x00, 0x2A, 0x0A, 0x01, 
41052
  0x00, 0x31, 0x0A, 0x04, 0x02, 0x43, 0x09, 0x00, 0x00, 0x3E, 0x02, 0x00, 0x00, 0x19, 0x0A, 0x02, 
41053
  0x00, 0x26, 0x0B, 0x00, 0x00, 0x47, 0x02, 0x00, 0x0B, 0x19, 0x0B, 0x02, 0x00, 0x1D, 0x0B, 0x20, 
41054
  0x00, 0x38, 0x02, 0x00, 0x0B, 0x19, 0x0C, 0x0B, 0x00, 0x19, 0x0D, 0x02, 0x00, 0x44, 0x02, 0x00, 
41055
  0x00, 0x2A, 0x0F, 0x03, 0x00, 0x31, 0x0F, 0x04, 0x0C, 0x2F, 0x0D, 0x00, 0x00, 0x43, 0x0E, 0x00, 
41056
  0x00, 0x2A, 0x10, 0x04, 0x00, 0x31, 0x10, 0x02, 0x0E, 0x43, 0x0F, 0x00, 0x00, 0x2A, 0x0E, 0x05, 
41057
  0x00, 0x26, 0x10, 0x00, 0x00, 0x31, 0x0E, 0x0F, 0x10, 0x2F, 0x03, 0x00, 0x00, 0x43, 0x02, 0x00, 
41058
  0x00, 0x2A, 0x0F, 0x01, 0x00, 0x31, 0x0F, 0x06, 0x02, 0x43, 0x0E, 0x00, 0x00, 0x2A, 0x0F, 0x06, 
41059
  0x00, 0x31, 0x0F, 0x05, 0x06, 0x2F, 0x06, 0x00, 0x00, 0x43, 0x02, 0x00, 0x00, 0x2A, 0x10, 0x07, 
41060
  0x00, 0x31, 0x10, 0x0E, 0x02, 0x43, 0x0F, 0x00, 0x00, 0x30, 0x0A, 0x0F, 0x00, 0x2A, 0x0E, 0x08, 
41061
  0x00, 0x33, 0x02, 0x0E, 0x00, 0x47, 0x0B, 0x00, 0x0B, 0x1A, 0xE1, 0xFF, 0xFF, 0x2B, 0x0B, 0x00, 
41062
  0x08, 0x31, 0x0B, 0x03, 0x05, 0x43, 0x02, 0x00, 0x00, 0x2A, 0x0C, 0x07, 0x00, 0x31, 0x0C, 0x07, 
41063
  0x08, 0x2F, 0x09, 0x00, 0x00, 0x32, 0x0A, 0x00, 0x00, 0x30, 0x02, 0x04, 0x00, 0x43, 0x0B, 0x00, 
41064
  0x00, 0x03, 0x0B, 0x00, 0x00, 0xBF, 0xFF, 0x8E, 0x69, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
41065
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
41066
  0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
41067
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x04, 0x0C, 0x00, 0x0C, 
41068
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x01, 0x0E, 
41069
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
41070
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
41071
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0xBF, 0xFF, 0x0C, 0x00, 
41072
  0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFC, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
41073
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x0B, 0xC9, 0xC9, 
41074
  0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x03, 0x03, 0x03, 
41075
  0x03, 0x19, 0x00, 0x09, 0xCE, 0x0A, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x2D, 0x61, 0x6C, 0x6C, 
41076
  0xDA, 0x18, 0xDA, 0x88, 0xFA, 0xDA, 0x89, 0x93, 0xD8, 0x07, 0x65, 0x76, 0x2F, 0x74, 0x61, 0x6B, 
41077
  0x65, 0x00, 0x19, 0x00, 0xDA, 0x8A, 0xC4, 0x00, 0x19, 0x01, 0xCF, 0x06, 0x66, 0x69, 0x62, 0x65, 
41078
  0x72, 0x73, 0x00, 0x19, 0x02, 0xCF, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6F, 0x6E, 0x00, 0x19, 0x03, 
41079
  0xDA, 0x8A, 0xC1, 0x00, 0x0B, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x38, 0x02, 
41080
  0x0B, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x37, 0x05, 0x0B, 0x06, 0xDA, 0x80, 
41081
  0xFB, 0x0C, 0x19, 0x05, 0xDA, 0x80, 0xD8, 0x10, 0x19, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
41082
  0x30, 0x36, 0x39, 0x26, 0x05, 0x00, 0x00, 0x47, 0x04, 0x01, 0x05, 0x19, 0x05, 0x04, 0x00, 0x1D, 
41083
  0x05, 0x08, 0x00, 0x38, 0x04, 0x01, 0x05, 0x19, 0x06, 0x04, 0x00, 0x30, 0x06, 0x02, 0x00, 0x2A, 
41084
  0x07, 0x00, 0x00, 0x33, 0x04, 0x07, 0x00, 0x47, 0x05, 0x01, 0x05, 0x1A, 0xF9, 0xFF, 0xFF, 0x3D, 
41085
  0x04, 0x01, 0x00, 0x19, 0x05, 0x04, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x2A, 0x06, 0x01, 0x00, 0x33, 
41086
  0x04, 0x06, 0x00, 0x19, 0x04, 0x05, 0x00, 0x20, 0x06, 0x04, 0x00, 0x1C, 0x06, 0x06, 0x00, 0x2F, 
41087
  0x00, 0x00, 0x00, 0x2A, 0x08, 0x02, 0x00, 0x33, 0x07, 0x08, 0x00, 0x05, 0x04, 0x04, 0xFF, 0x1A, 
41088
  0xFA, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x8E, 0x53, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
41089
  0x00, 0x05, 0x00, 0x05, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0D, 
41090
  0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x11, 
41091
  0x00, 0x11, 0x00, 0x11, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xD7, 0x01, 0xCD, 0x02, 0xFE, 0x00, 
41092
  0x00, 0x08, 0x02, 0x02, 0x02, 0x05, 0x16, 0x01, 0x01, 0x0C, 0xCE, 0x0F, 0x77, 0x61, 0x69, 0x74, 
41093
  0x2D, 0x66, 0x6F, 0x72, 0x2D, 0x66, 0x69, 0x62, 0x65, 0x72, 0x73, 0xDA, 0x18, 0xDA, 0x81, 0xEF, 
41094
  0xDA, 0x81, 0x5E, 0xCE, 0x0F, 0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x63, 
41095
  0x65, 0x6C, 0x65, 0x64, 0xDA, 0x80, 0xBE, 0xDA, 0x80, 0xBF, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8A, 
41096
  0xBE, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x83, 0x20, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x8A, 0xBF, 0xBF, 
41097
  0xFF, 0x00, 0x04, 0xDA, 0x82, 0xB7, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x8A, 0x77, 0xBF, 0xFF, 0x00, 
41098
  0x06, 0xDA, 0x8A, 0xC0, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x8A, 0xC1, 0x00, 0x16, 0x00, 0xDA, 0x8A, 
41099
  0xC4, 0x00, 0x16, 0x01, 0xDA, 0x8A, 0xCD, 0x00, 0x16, 0x02, 0xDA, 0x8A, 0xC2, 0x05, 0x16, 0x03, 
41100
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x61, 0x08, 0x16, 0x05, 0xCF, 0x07, 0x5F, 0x30, 
41101
  0x30, 0x30, 0x30, 0x36, 0x62, 0x2E, 0x03, 0x00, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x30, 0x03, 0x04, 
41102
  0x00, 0x2A, 0x05, 0x01, 0x00, 0x33, 0x04, 0x05, 0x00, 0x19, 0x03, 0x04, 0x00, 0x26, 0x05, 0x00, 
41103
  0x00, 0x35, 0x04, 0x03, 0x05, 0x19, 0x05, 0x04, 0x00, 0x2A, 0x04, 0x02, 0x00, 0x31, 0x00, 0x01, 
41104
  0x04, 0x2B, 0x06, 0x00, 0x07, 0x33, 0x04, 0x06, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x06, 0x03, 
41105
  0x00, 0x33, 0x04, 0x06, 0x00, 0x2A, 0x07, 0x04, 0x00, 0x23, 0x06, 0x04, 0x07, 0x1C, 0x06, 0x02, 
41106
  0x00, 0x03, 0x05, 0x00, 0x00, 0x37, 0x04, 0x05, 0x03, 0x03, 0x04, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 
41107
  0x00, 0xD4, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x21, 0x02, 0x0D, 0xDA, 0x18, 0xDA, 0x8A, 
41108
  0xCC, 0xD0, 0x02, 0x6F, 0x6B, 0xCE, 0x10, 0x73, 0x69, 0x62, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x63, 
41109
  0x61, 0x6E, 0x63, 0x65, 0x6C, 0x65, 0x64, 0xDA, 0x80, 0xCE, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x8A, 
41110
  0xBE, 0xBF, 0xFF, 0x01, 0x02, 0xDA, 0x83, 0x20, 0xBF, 0xFF, 0x01, 0x03, 0xDA, 0x8A, 0xBF, 0xBF, 
41111
  0xFF, 0x01, 0x04, 0xDA, 0x82, 0xB7, 0xBF, 0xFF, 0x01, 0x05, 0xDA, 0x8A, 0x77, 0xBF, 0xFF, 0x01, 
41112
  0x06, 0xDA, 0x8A, 0xC0, 0xBF, 0xFF, 0x01, 0x07, 0xDA, 0x8A, 0xC1, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 
41113
  0x8A, 0xC4, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8A, 0xCD, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8A, 0xC2, 
41114
  0x02, 0x21, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x63, 0x0A, 0x20, 0x04, 0xCF, 
41115
  0x03, 0x73, 0x69, 0x67, 0x0C, 0x20, 0x05, 0xDA, 0x82, 0x77, 0x2B, 0x01, 0x00, 0x01, 0x3D, 0x00, 
41116
  0x01, 0x00, 0x19, 0x01, 0x00, 0x00, 0x20, 0x00, 0x01, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x2B, 0x02, 
41117
  0x00, 0x00, 0x2F, 0x02, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x3B, 0x03, 
41118
  0x02, 0x00, 0x19, 0x04, 0x03, 0x00, 0x3B, 0x03, 0x02, 0x01, 0x19, 0x05, 0x03, 0x00, 0x2A, 0x03, 
41119
  0x01, 0x00, 0x23, 0x02, 0x04, 0x03, 0x1C, 0x02, 0x05, 0x00, 0x2B, 0x03, 0x00, 0x01, 0x26, 0x06, 
41120
  0x00, 0x00, 0x3A, 0x03, 0x05, 0x06, 0x1A, 0x0B, 0x00, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x2B, 0x06, 
41121
  0x00, 0x01, 0x2A, 0x07, 0x02, 0x00, 0x31, 0x03, 0x06, 0x07, 0x2B, 0x06, 0x01, 0x07, 0x33, 0x03, 
41122
  0x06, 0x00, 0x2F, 0x05, 0x00, 0x00, 0x2A, 0x06, 0x03, 0x00, 0x33, 0x03, 0x06, 0x00, 0x37, 0x06, 
41123
  0x03, 0x05, 0x05, 0x01, 0x01, 0xFF, 0x1A, 0xE4, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 
41124
  0x00, 0x8E, 0x5B, 0x0F, 0x00, 0x0F, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x1A, 0x00, 0x1A, 
41125
  0x00, 0x1A, 0x00, 0x1A, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x0D, 0x00, 0x0D, 
41126
  0x00, 0x09, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFF, 0x09, 0x03, 0x0D, 0x00, 0x0D, 0x00, 
41127
  0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x0D, 0xBF, 
41128
  0xFA, 0x07, 0x00, 0x07, 0x00, 0x07, 0x8E, 0x5A, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
41129
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 
41130
  0x0C, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
41131
  0x05, 0x00, 0x05, 0x03, 0x00, 0x00, 0x00, 0xDB, 0x02, 0xC9, 0xC9, 0xDA, 0x85, 0xB0, 0xDA, 0x85, 
41132
  0xAD, 0xCF, 0x0C, 0x2A, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2A, 0xD0, 
41133
  0x0A, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6C, 0x65, 0xCF, 0x05, 0x6F, 0x73, 0x2F, 
41134
  0x63, 0x64, 0xD8, 0x05, 0x6F, 0x73, 0x2F, 0x63, 0x64, 0xCF, 0x0C, 0x61, 0x72, 0x72, 0x61, 0x79, 
41135
  0x2F, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0xDA, 0x88, 0x46, 0xDA, 0x88, 0x44, 0xDA, 0x88, 0x42, 
41136
  0xCF, 0x11, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x73, 0x65, 0x74, 0x6D, 0x61, 0x78, 0x73, 0x74, 
41137
  0x61, 0x63, 0x6B, 0xD8, 0x11, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x73, 0x65, 0x74, 0x6D, 0x61, 
41138
  0x78, 0x73, 0x74, 0x61, 0x63, 0x6B, 0xCF, 0x0B, 0x6F, 0x73, 0x2F, 0x73, 0x74, 0x72, 0x66, 0x74, 
41139
  0x69, 0x6D, 0x65, 0xD8, 0x0B, 0x6F, 0x73, 0x2F, 0x73, 0x74, 0x72, 0x66, 0x74, 0x69, 0x6D, 0x65, 
41140
  0xCF, 0x10, 0x65, 0x76, 0x2F, 0x61, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x2D, 0x77, 0x6C, 0x6F, 
41141
  0x63, 0x6B, 0xD8, 0x10, 0x65, 0x76, 0x2F, 0x61, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x2D, 0x77, 
41142
  0x6C, 0x6F, 0x63, 0x6B, 0xCF, 0x05, 0x74, 0x72, 0x75, 0x65, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
41143
  0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x00, 0x03, 0x00, 0x02, 0xCE, 0x05, 0x74, 0x72, 0x75, 0x65, 
41144
  0x3F, 0xDA, 0x18, 0x00, 0x03, 0x00, 0xDA, 0x1E, 0x00, 0x03, 0x01, 0xDA, 0x8A, 0xE6, 0x27, 0x03, 
41145
  0x00, 0x00, 0x23, 0x02, 0x00, 0x03, 0x03, 0x02, 0x00, 0x00, 0x7C, 0x27, 0x00, 0x27, 0x00, 0x27, 
41146
  0xCF, 0x08, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6E, 0x63, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
41147
  0x00, 0x0B, 0x01, 0x01, 0x01, 0x01, 0x15, 0x00, 0x07, 0xCE, 0x08, 0x64, 0x69, 0x73, 0x74, 0x69, 
41148
  0x6E, 0x63, 0x74, 0xDA, 0x18, 0xDA, 0x81, 0x8C, 0x00, 0x15, 0x00, 0xDA, 0x82, 0x52, 0x00, 0x15, 
41149
  0x01, 0xDA, 0x8A, 0xE9, 0x01, 0x15, 0x03, 0xDA, 0x23, 0x03, 0x15, 0x05, 0xCF, 0x04, 0x73, 0x65, 
41150
  0x65, 0x6E, 0x03, 0x14, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x52, 0x06, 0x14, 
41151
  0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x51, 0x09, 0x14, 0x08, 0xDA, 0x1E, 0x3E, 
41152
  0x02, 0x00, 0x00, 0x19, 0x03, 0x02, 0x00, 0x42, 0x04, 0x00, 0x00, 0x19, 0x05, 0x04, 0x00, 0x26, 
41153
  0x07, 0x00, 0x00, 0x47, 0x06, 0x00, 0x07, 0x19, 0x07, 0x06, 0x00, 0x1D, 0x07, 0x0D, 0x00, 0x38, 
41154
  0x06, 0x00, 0x07, 0x19, 0x08, 0x06, 0x00, 0x38, 0x06, 0x05, 0x08, 0x1C, 0x06, 0x02, 0x00, 0x1A, 
41155
  0x06, 0x00, 0x00, 0x27, 0x09, 0x00, 0x00, 0x3A, 0x05, 0x08, 0x09, 0x30, 0x03, 0x08, 0x00, 0x2A, 
41156
  0x0A, 0x00, 0x00, 0x33, 0x09, 0x0A, 0x00, 0x47, 0x07, 0x00, 0x07, 0x1A, 0xF4, 0xFF, 0xFF, 0x03, 
41157
  0x03, 0x00, 0x00, 0x86, 0x7C, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 
41158
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x12, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x26, 
41159
  0x00, 0x26, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFB, 0x01, 0xCF, 
41160
  0x08, 0x67, 0x65, 0x74, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0xD8, 0x08, 0x67, 0x65, 0x74, 0x70, 0x72, 
41161
  0x6F, 0x74, 0x6F, 0xCF, 0x05, 0x79, 0x69, 0x65, 0x6C, 0x64, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 
41162
  0x04, 0x02, 0x01, 0x00, 0x01, 0x00, 0x02, 0xCE, 0x05, 0x79, 0x69, 0x65, 0x6C, 0x64, 0x36, 0x00, 
41163
  0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0xCF, 0x04, 0x70, 0x72, 0x69, 0x6E, 0xD8, 0x04, 0x70, 0x72, 
41164
  0x69, 0x6E, 0xCF, 0x04, 0x63, 0x61, 0x73, 0x65, 0xD7, 0x00, 0xCD, 0x02, 0xFF, 0x00, 0x00, 0x0C, 
41165
  0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x05, 0x1C, 0x00, 0x01, 0x06, 0xCE, 0x04, 0x63, 0x61, 
41166
  0x73, 0x65, 0xDA, 0x18, 0xDA, 0x80, 0x87, 0xDA, 0x49, 0xDA, 0x4A, 0xDA, 0x80, 0x8F, 0xDA, 0x50, 
41167
  0x00, 0x1C, 0x00, 0xCF, 0x08, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x00, 0x1C, 0x01, 
41168
  0xDA, 0x88, 0x41, 0x00, 0x1C, 0x02, 0xDA, 0x8A, 0xF6, 0x03, 0x1C, 0x04, 0xDA, 0x80, 0x93, 0x0A, 
41169
  0x1C, 0x06, 0xDA, 0x60, 0x0C, 0x1C, 0x08, 0xDA, 0x80, 0x85, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x04, 
41170
  0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 0x19, 0x04, 0x03, 0x00, 0x1C, 0x04, 0x03, 0x00, 0x19, 0x05, 
41171
  0x00, 0x00, 0x1A, 0x04, 0x00, 0x00, 0x2A, 0x07, 0x01, 0x00, 0x33, 0x06, 0x07, 0x00, 0x19, 0x05, 
41172
  0x06, 0x00, 0x19, 0x06, 0x05, 0x00, 0x2E, 0x07, 0x00, 0x00, 0x19, 0x08, 0x07, 0x00, 0x1C, 0x04, 
41173
  0x04, 0x00, 0x29, 0x09, 0x00, 0x00, 0x2F, 0x09, 0x00, 0x00, 0x34, 0x08, 0x00, 0x00, 0x2A, 0x09, 
41174
  0x02, 0x00, 0x31, 0x09, 0x06, 0x00, 0x2A, 0x0A, 0x03, 0x00, 0x33, 0x09, 0x0A, 0x00, 0x29, 0x0A, 
41175
  0x00, 0x00, 0x2F, 0x0A, 0x00, 0x00, 0x33, 0x0A, 0x08, 0x00, 0x2A, 0x0B, 0x04, 0x00, 0x31, 0x0B, 
41176
  0x09, 0x0A, 0x2A, 0x0B, 0x03, 0x00, 0x34, 0x0B, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 
41177
  0x01, 0x01, 0x01, 0x03, 0x1F, 0x01, 0x08, 0xDA, 0x80, 0x86, 0xDA, 0x18, 0xDA, 0x85, 0xF2, 0xDA, 
41178
  0x80, 0x8F, 0xDA, 0x4F, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x8A, 0xF9, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
41179
  0x88, 0x41, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8A, 0xF6, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x80, 0x93, 
41180
  0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x60, 0x00, 0x1F, 0x00, 0xDA, 0x80, 0x90, 0x00, 0x1F, 0x01, 0xDA, 
41181
  0x80, 0x85, 0x04, 0x1F, 0x02, 0xCF, 0x07, 0x72, 0x65, 0x73, 0x74, 0x6C, 0x65, 0x6E, 0x2C, 0x01, 
41182
  0x00, 0x00, 0x2B, 0x03, 0x00, 0x01, 0x3D, 0x02, 0x03, 0x00, 0x07, 0x03, 0x02, 0x00, 0x19, 0x02, 
41183
  0x03, 0x00, 0x24, 0x04, 0x02, 0x00, 0x1C, 0x04, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x24, 0x05, 
41184
  0x02, 0x01, 0x1C, 0x05, 0x04, 0x00, 0x2B, 0x07, 0x00, 0x01, 0x38, 0x06, 0x07, 0x00, 0x03, 0x06, 
41185
  0x00, 0x00, 0x2B, 0x07, 0x00, 0x01, 0x38, 0x06, 0x07, 0x00, 0x2A, 0x07, 0x00, 0x00, 0x2B, 0x08, 
41186
  0x00, 0x06, 0x31, 0x07, 0x08, 0x06, 0x2A, 0x08, 0x01, 0x00, 0x33, 0x07, 0x08, 0x00, 0x05, 0x06, 
41187
  0x00, 0x01, 0x2B, 0x09, 0x00, 0x01, 0x38, 0x08, 0x09, 0x06, 0x05, 0x06, 0x00, 0x02, 0x2F, 0x06, 
41188
  0x00, 0x00, 0x33, 0x09, 0x01, 0x00, 0x2A, 0x06, 0x02, 0x00, 0x31, 0x06, 0x07, 0x08, 0x2F, 0x09, 
41189
  0x00, 0x00, 0x2A, 0x06, 0x01, 0x00, 0x34, 0x06, 0x00, 0x00, 0xBF, 0xFF, 0x80, 0xDA, 0x03, 0x01, 
41190
  0x15, 0x00, 0x15, 0x00, 0x12, 0x00, 0x05, 0x01, 0x09, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0B, 0x00, 
41191
  0x07, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x01, 0x21, 0x00, 0x21, 0x00, 0x14, 0x00, 0x14, 0x00, 
41192
  0x14, 0x00, 0x14, 0x00, 0x14, 0x01, 0x1A, 0x00, 0x10, 0x00, 0x10, 0x01, 0x15, 0x00, 0x10, 0x00, 
41193
  0x10, 0xBF, 0xFE, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x80, 0xD8, 0x0C, 0x00, 
41194
  0x0C, 0x00, 0x0C, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x1D, 0x00, 0x1D, 0x00, 
41195
  0x0C, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x07, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x02, 
41196
  0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFE, 0x05, 
41197
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x42, 0x00, 0x00, 0x00, 0xCF, 0x0D, 0x69, 0x6E, 0x74, 0x2F, 
41198
  0x74, 0x6F, 0x2D, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0xD8, 0x0D, 0x69, 0x6E, 0x74, 0x2F, 0x74, 
41199
  0x6F, 0x2D, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0xCF, 0x0B, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
41200
  0x2F, 0x62, 0x6C, 0x69, 0x74, 0xD8, 0x0B, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x62, 0x6C, 
41201
  0x69, 0x74, 0xCF, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x74, 0x61, 0x6E, 0xD8, 0x09, 0x6D, 
41202
  0x61, 0x74, 0x68, 0x2F, 0x61, 0x74, 0x61, 0x6E, 0xCF, 0x08, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 
41203
  0x65, 0x21, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x00, 0x13, 0x00, 
41204
  0x09, 0xCE, 0x08, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x21, 0xDA, 0x18, 0x00, 0x13, 0x00, 
41205
  0xDA, 0x31, 0x00, 0x13, 0x01, 0xDA, 0x8B, 0x01, 0x02, 0x13, 0x02, 0xCF, 0x05, 0x6C, 0x65, 0x6E, 
41206
  0x2D, 0x31, 0x04, 0x13, 0x05, 0xCF, 0x04, 0x68, 0x61, 0x6C, 0x66, 0x05, 0x12, 0x06, 0xDA, 0x80, 
41207
  0x90, 0x05, 0x12, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x71, 0x09, 0x12, 0x09, 
41208
  0xCF, 0x01, 0x6A, 0x0B, 0x12, 0x0A, 0xDA, 0x82, 0x4C, 0x0D, 0x12, 0x0B, 0xDA, 0x63, 0x3D, 0x02, 
41209
  0x00, 0x00, 0x05, 0x03, 0x02, 0xFF, 0x19, 0x02, 0x03, 0x00, 0x0A, 0x04, 0x02, 0x02, 0x19, 0x05, 
41210
  0x04, 0x00, 0x29, 0x06, 0x00, 0x00, 0x21, 0x07, 0x06, 0x05, 0x1C, 0x07, 0x0B, 0x00, 0x07, 0x08, 
41211
  0x02, 0x06, 0x19, 0x09, 0x08, 0x00, 0x38, 0x08, 0x00, 0x06, 0x19, 0x0A, 0x08, 0x00, 0x38, 0x08, 
41212
  0x00, 0x09, 0x19, 0x0B, 0x08, 0x00, 0x3A, 0x00, 0x06, 0x0B, 0x3A, 0x00, 0x09, 0x0A, 0x05, 0x06, 
41213
  0x06, 0x01, 0x1A, 0xF5, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x85, 0xA7, 0x11, 0x00, 0x0E, 0x00, 
41214
  0x03, 0x01, 0x0D, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x05, 0x01, 
41215
  0x0C, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x05, 0x01, 0x05, 0x01, 0x05, 0xBF, 0xFB, 0x03, 0x00, 0x03, 
41216
  0xBF, 0xFA, 0x01, 0xCF, 0x07, 0x6F, 0x73, 0x2F, 0x70, 0x69, 0x70, 0x65, 0xD8, 0x07, 0x6F, 0x73, 
41217
  0x2F, 0x70, 0x69, 0x70, 0x65, 0xDA, 0x83, 0x26, 0xDA, 0x2C, 0xCF, 0x04, 0x6E, 0x61, 0x74, 0x3F, 
41218
  0xDA, 0x86, 0xDD, 0xCF, 0x07, 0x6F, 0x73, 0x2F, 0x6F, 0x70, 0x65, 0x6E, 0xD8, 0x07, 0x6F, 0x73, 
41219
  0x2F, 0x6F, 0x70, 0x65, 0x6E, 0xCF, 0x06, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0xD8, 0x06, 0x6E, 
41220
  0x61, 0x74, 0x69, 0x76, 0x65, 0xCF, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2D, 0x69, 0x6E, 
41221
  0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0F, 0x03, 0x03, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 
41222
  0x25, 0x00, 0x0E, 0xCE, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2D, 0x69, 0x6E, 0xDA, 0x18, 
41223
  0xCE, 0x1D, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x61, 0x74, 0x20, 0x6C, 0x65, 
41224
  0x61, 0x73, 0x74, 0x20, 0x31, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x69, 0x6E, 0x20, 0x6B, 0x73, 0xDA, 
41225
  0x85, 0x14, 0x00, 0x25, 0x00, 0xDA, 0x24, 0x00, 0x25, 0x01, 0xDA, 0x86, 0xFC, 0x00, 0x25, 0x02, 
41226
  0xDA, 0x80, 0xFB, 0x00, 0x25, 0x03, 0xDA, 0x80, 0xAB, 0x00, 0x25, 0x04, 0xDA, 0x8B, 0x0F, 0x00, 
41227
  0x25, 0x05, 0xDA, 0x83, 0xCE, 0x03, 0x25, 0x06, 0xDA, 0x8B, 0x04, 0x09, 0x1C, 0x08, 0xDA, 0x80, 
41228
  0x90, 0x09, 0x1C, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x76, 0x0D, 0x1C, 0x0B, 
41229
  0xDA, 0x22, 0x0F, 0x1C, 0x0C, 0xDA, 0x52, 0x15, 0x18, 0x0E, 0xDA, 0x8A, 0x30, 0x1D, 0x25, 0x09, 
41230
  0xCF, 0x08, 0x6C, 0x61, 0x73, 0x74, 0x2D, 0x6B, 0x65, 0x79, 0x1F, 0x25, 0x0B, 0xCF, 0x08, 0x6C, 
41231
  0x61, 0x73, 0x74, 0x2D, 0x76, 0x61, 0x6C, 0x19, 0x05, 0x00, 0x00, 0x3D, 0x06, 0x01, 0x00, 0x05, 
41232
  0x07, 0x06, 0xFF, 0x19, 0x06, 0x07, 0x00, 0x22, 0x08, 0x06, 0x00, 0x1C, 0x08, 0x04, 0x00, 0x2A, 
41233
  0x09, 0x00, 0x00, 0x01, 0x09, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x29, 0x08, 0x00, 0x00, 0x21, 
41234
  0x09, 0x08, 0x06, 0x1C, 0x09, 0x11, 0x00, 0x39, 0x0A, 0x01, 0x08, 0x19, 0x0B, 0x0A, 0x00, 0x39, 
41235
  0x0A, 0x05, 0x0B, 0x19, 0x0C, 0x0A, 0x00, 0x26, 0x0D, 0x00, 0x00, 0x23, 0x0A, 0x0D, 0x0C, 0x1C, 
41236
  0x0A, 0x07, 0x00, 0x2A, 0x0E, 0x01, 0x00, 0x33, 0x0D, 0x0E, 0x00, 0x19, 0x0E, 0x0D, 0x00, 0x3A, 
41237
  0x05, 0x0B, 0x0E, 0x19, 0x05, 0x0E, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x05, 0x0C, 0x00, 0x05, 
41238
  0x08, 0x08, 0x01, 0x1A, 0xEF, 0xFF, 0xFF, 0x39, 0x08, 0x01, 0x06, 0x19, 0x09, 0x08, 0x00, 0x39, 
41239
  0x0A, 0x05, 0x09, 0x19, 0x0B, 0x0A, 0x00, 0x2F, 0x0B, 0x00, 0x00, 0x32, 0x03, 0x00, 0x00, 0x33, 
41240
  0x0C, 0x02, 0x00, 0x3A, 0x05, 0x09, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x85, 0xE6, 0x03, 0x01, 0x11, 
41241
  0x00, 0x0E, 0x00, 0x03, 0x01, 0x07, 0x00, 0x03, 0x00, 0x13, 0x00, 0x13, 0x00, 0x03, 0x01, 0x03, 
41242
  0x00, 0x03, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x05, 0x01, 0x09, 0x00, 0x09, 
41243
  0x00, 0x05, 0x01, 0x12, 0x00, 0x12, 0x00, 0x07, 0x01, 0x09, 0x01, 0x09, 0xBF, 0xFD, 0x05, 0x04, 
41244
  0x07, 0xBF, 0xF9, 0x03, 0x00, 0x03, 0x08, 0x11, 0x00, 0x03, 0x01, 0x11, 0x00, 0x03, 0x01, 0x13, 
41245
  0x00, 0x13, 0x00, 0x13, 0x00, 0x03, 0xBF, 0xED, 0x01, 0xCF, 0x05, 0x64, 0x65, 0x66, 0x6E, 0x2D, 
41246
  0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x04, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 
41247
  0x05, 0x00, 0x03, 0xCE, 0x05, 0x64, 0x65, 0x66, 0x6E, 0x2D, 0xDA, 0x18, 0xDA, 0x5A, 0xDA, 0x84, 
41248
  0x56, 0x00, 0x05, 0x00, 0xDA, 0x83, 0x0F, 0x00, 0x05, 0x01, 0xDA, 0x83, 0x10, 0x00, 0x05, 0x02, 
41249
  0xDA, 0x8B, 0x16, 0x2A, 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x32, 0x01, 0x00, 0x00, 0x2A, 
41250
  0x03, 0x01, 0x00, 0x34, 0x03, 0x00, 0x00, 0x43, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
41251
  0x03, 0xDA, 0x8A, 0xBE, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 
41252
  0x03, 0x00, 0x02, 0xCE, 0x09, 0x6E, 0x65, 0x74, 0x2F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0xDA, 0x18, 
41253
  0xD8, 0x08, 0x65, 0x76, 0x2F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x00, 0x03, 0x00, 0xCF, 0x06, 0x73, 
41254
  0x74, 0x72, 0x65, 0x61, 0x6D, 0x00, 0x03, 0x01, 0xDA, 0x8A, 0xBE, 0x2F, 0x00, 0x00, 0x00, 0x2A, 
41255
  0x02, 0x00, 0x00, 0x34, 0x02, 0x00, 0x00, 0x8E, 0x2F, 0x34, 0x00, 0x34, 0x00, 0x34, 0xCF, 0x0B, 
41256
  0x61, 0x63, 0x63, 0x75, 0x6D, 0x75, 0x6C, 0x61, 0x74, 0x65, 0x32, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
41257
  0x00, 0x00, 0x0D, 0x02, 0x02, 0x02, 0x01, 0x1C, 0x00, 0x06, 0xCE, 0x0B, 0x61, 0x63, 0x63, 0x75, 
41258
  0x6D, 0x75, 0x6C, 0x61, 0x74, 0x65, 0x32, 0xDA, 0x18, 0xDA, 0x81, 0x8C, 0x00, 0x1C, 0x00, 0xDA, 
41259
  0x80, 0xFB, 0x00, 0x1C, 0x01, 0xDA, 0x1F, 0x00, 0x1C, 0x02, 0xDA, 0x8B, 0x1D, 0x02, 0x1C, 0x04, 
41260
  0xDA, 0x22, 0x04, 0x1C, 0x06, 0xDA, 0x23, 0x0B, 0x1C, 0x08, 0xDA, 0x81, 0x08, 0x26, 0x04, 0x00, 
41261
  0x00, 0x47, 0x03, 0x01, 0x04, 0x19, 0x04, 0x03, 0x00, 0x3E, 0x05, 0x00, 0x00, 0x19, 0x06, 0x05, 
41262
  0x00, 0x26, 0x08, 0x00, 0x00, 0x23, 0x07, 0x08, 0x04, 0x1C, 0x07, 0x03, 0x00, 0x03, 0x06, 0x00, 
41263
  0x00, 0x1A, 0x01, 0x00, 0x00, 0x38, 0x07, 0x01, 0x04, 0x19, 0x08, 0x07, 0x00, 0x30, 0x06, 0x08, 
41264
  0x00, 0x2A, 0x0A, 0x00, 0x00, 0x33, 0x09, 0x0A, 0x00, 0x47, 0x04, 0x01, 0x04, 0x26, 0x0B, 0x00, 
41265
  0x00, 0x48, 0x0A, 0x0B, 0x04, 0x1C, 0x0A, 0x09, 0x00, 0x38, 0x0B, 0x01, 0x04, 0x30, 0x08, 0x0B, 
41266
  0x00, 0x33, 0x08, 0x00, 0x00, 0x30, 0x06, 0x08, 0x00, 0x2A, 0x0C, 0x00, 0x00, 0x33, 0x0B, 0x0C, 
41267
  0x00, 0x47, 0x04, 0x01, 0x04, 0x1A, 0xF6, 0xFF, 0xFF, 0x03, 0x06, 0x00, 0x00, 0x83, 0x92, 0x0A, 
41268
  0x00, 0x0A, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 0x11, 
41269
  0x00, 0x03, 0x01, 0x0C, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0A, 0x01, 0x0A, 
41270
  0x00, 0x0A, 0x00, 0x03, 0x01, 0x15, 0x00, 0x0E, 0x00, 0x0E, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 
41271
  0x01, 0x0C, 0xBF, 0xFD, 0x03, 0xBF, 0xF5, 0x01, 0xCF, 0x06, 0x6D, 0x65, 0x6D, 0x63, 0x6D, 0x70, 
41272
  0xD8, 0x06, 0x6D, 0x65, 0x6D, 0x63, 0x6D, 0x70, 0xCF, 0x06, 0x74, 0x6F, 0x67, 0x67, 0x6C, 0x65, 
41273
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 0x07, 0x00, 0x02, 0xCE, 
41274
  0x06, 0x74, 0x6F, 0x67, 0x67, 0x6C, 0x65, 0xDA, 0x18, 0xDA, 0x80, 0x8D, 0xDA, 0x3A, 0x00, 0x07, 
41275
  0x00, 0xDA, 0x25, 0x00, 0x07, 0x01, 0xDA, 0x8B, 0x22, 0x2A, 0x03, 0x00, 0x00, 0x30, 0x03, 0x00, 
41276
  0x00, 0x43, 0x02, 0x00, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x31, 0x04, 0x00, 0x02, 0x43, 0x03, 0x00, 
41277
  0x00, 0x03, 0x03, 0x00, 0x00, 0x52, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
41278
  0x03, 0x00, 0x03, 0xCF, 0x06, 0x73, 0x74, 0x64, 0x6F, 0x75, 0x74, 0xD8, 0x06, 0x73, 0x74, 0x64, 
41279
  0x6F, 0x75, 0x74, 0xCF, 0x06, 0x65, 0x70, 0x72, 0x69, 0x6E, 0x66, 0xDA, 0x81, 0xAF, 0xCF, 0x13, 
41280
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x2D, 0x66, 0x6C, 0x61, 0x74, 
41281
  0x74, 0x65, 0x6E, 0xDA, 0x89, 0x29, 0xCF, 0x05, 0x64, 0x65, 0x62, 0x75, 0x67, 0xD7, 0x00, 0xCD, 
41282
  0x00, 0x08, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x02, 0xCE, 0x05, 0x64, 0x65, 0x62, 0x75, 
41283
  0x67, 0x36, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0xCF, 0x07, 0x65, 0x76, 0x2F, 0x72, 0x65, 
41284
  0x61, 0x64, 0xD8, 0x07, 0x65, 0x76, 0x2F, 0x72, 0x65, 0x61, 0x64, 0xCF, 0x08, 0x6F, 0x73, 0x2F, 
41285
  0x73, 0x68, 0x65, 0x6C, 0x6C, 0xD8, 0x08, 0x6F, 0x73, 0x2F, 0x73, 0x68, 0x65, 0x6C, 0x6C, 0xCF, 
41286
  0x06, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 
41287
  0x01, 0x01, 0x00, 0x03, 0x00, 0x02, 0xCE, 0x06, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x3F, 0xDA, 0x18, 
41288
  0x00, 0x03, 0x00, 0xDA, 0x1E, 0x00, 0x03, 0x01, 0xDA, 0x8B, 0x30, 0x28, 0x03, 0x00, 0x00, 0x23, 
41289
  0x02, 0x00, 0x03, 0x03, 0x02, 0x00, 0x00, 0x7D, 0x29, 0x00, 0x29, 0x00, 0x29, 0xCF, 0x11, 0x73, 
41290
  0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x72, 0x6F, 0x6D, 0x2D, 0x62, 0x79, 0x74, 0x65, 0x73, 
41291
  0xD8, 0x11, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x72, 0x6F, 0x6D, 0x2D, 0x62, 0x79, 
41292
  0x74, 0x65, 0x73, 0xCF, 0x05, 0x64, 0x65, 0x6C, 0x61, 0x79, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 
41293
  0x00, 0x0E, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x06, 0x2C, 0x00, 0x04, 0xCE, 0x05, 0x64, 
41294
  0x65, 0x6C, 0x61, 0x79, 0xDA, 0x18, 0xDA, 0x49, 0xDA, 0x84, 0xEF, 0xDA, 0x3A, 0xDA, 0x50, 0xDA, 
41295
  0x4F, 0xDA, 0x82, 0xAE, 0x00, 0x2C, 0x00, 0xDA, 0x82, 0xE2, 0x00, 0x2C, 0x01, 0xDA, 0x8B, 0x35, 
41296
  0x02, 0x2C, 0x03, 0xCF, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x05, 0x2C, 0x05, 0xCF, 0x06, 0x6C, 
41297
  0x6F, 0x61, 0x64, 0x65, 0x64, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x19, 0x03, 0x02, 
41298
  0x00, 0x2A, 0x05, 0x00, 0x00, 0x33, 0x04, 0x05, 0x00, 0x19, 0x05, 0x04, 0x00, 0x44, 0x06, 0x00, 
41299
  0x00, 0x2A, 0x08, 0x01, 0x00, 0x26, 0x09, 0x00, 0x00, 0x31, 0x08, 0x03, 0x09, 0x43, 0x07, 0x00, 
41300
  0x00, 0x2A, 0x09, 0x01, 0x00, 0x26, 0x0A, 0x00, 0x00, 0x31, 0x09, 0x05, 0x0A, 0x43, 0x08, 0x00, 
41301
  0x00, 0x44, 0x09, 0x00, 0x00, 0x2A, 0x0B, 0x02, 0x00, 0x27, 0x0C, 0x00, 0x00, 0x31, 0x0B, 0x05, 
41302
  0x0C, 0x43, 0x0A, 0x00, 0x00, 0x2A, 0x0C, 0x03, 0x00, 0x2F, 0x0C, 0x00, 0x00, 0x32, 0x00, 0x00, 
41303
  0x00, 0x43, 0x0B, 0x00, 0x00, 0x2A, 0x0D, 0x02, 0x00, 0x31, 0x0D, 0x03, 0x0B, 0x43, 0x0C, 0x00, 
41304
  0x00, 0x2A, 0x0D, 0x03, 0x00, 0x31, 0x0D, 0x0A, 0x0C, 0x43, 0x0B, 0x00, 0x00, 0x2A, 0x0C, 0x04, 
41305
  0x00, 0x31, 0x0C, 0x05, 0x03, 0x2F, 0x0B, 0x00, 0x00, 0x43, 0x0A, 0x00, 0x00, 0x2A, 0x0C, 0x05, 
41306
  0x00, 0x31, 0x0C, 0x09, 0x0A, 0x43, 0x0B, 0x00, 0x00, 0x2A, 0x0A, 0x05, 0x00, 0x31, 0x0A, 0x06, 
41307
  0x07, 0x30, 0x08, 0x0B, 0x00, 0x43, 0x09, 0x00, 0x00, 0x2F, 0x09, 0x00, 0x00, 0x43, 0x06, 0x00, 
41308
  0x00, 0x03, 0x06, 0x00, 0x00, 0x8E, 0x89, 0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x0F, 0x00, 0x0F, 
41309
  0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41310
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41311
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41312
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41313
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x06, 
41314
  0x65, 0x70, 0x72, 0x69, 0x6E, 0x74, 0xDA, 0x80, 0xFE, 0xCF, 0x11, 0x62, 0x75, 0x66, 0x66, 0x65, 
41315
  0x72, 0x2F, 0x62, 0x69, 0x74, 0x2D, 0x74, 0x6F, 0x67, 0x67, 0x6C, 0x65, 0xD8, 0x11, 0x62, 0x75, 
41316
  0x66, 0x66, 0x65, 0x72, 0x2F, 0x62, 0x69, 0x74, 0x2D, 0x74, 0x6F, 0x67, 0x67, 0x6C, 0x65, 0xCF, 
41317
  0x09, 0x70, 0x72, 0x6F, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0xDA, 0x82, 0xD1, 0xCF, 0x08, 0x6D, 
41318
  0x61, 0x74, 0x68, 0x2F, 0x73, 0x69, 0x6E, 0xD8, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x73, 0x69, 
41319
  0x6E, 0xCF, 0x0B, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0xD8, 0x0B, 
41320
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0xCF, 0x08, 0x62, 0x72, 0x75, 
41321
  0x73, 0x68, 0x69, 0x66, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x12, 0x06, 0x00, 0x00, 0xCD, 
41322
  0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x13, 0xCE, 0x08, 0x62, 0x72, 0x75, 0x73, 0x68, 0x69, 0x66, 0x74, 
41323
  0x3D, 0x01, 0x00, 0x00, 0x24, 0x02, 0x01, 0x00, 0x1C, 0x02, 0x03, 0x00, 0x29, 0x03, 0x01, 0x00, 
41324
  0x03, 0x03, 0x00, 0x00, 0x24, 0x02, 0x01, 0x01, 0x1C, 0x02, 0x05, 0x00, 0x29, 0x03, 0x01, 0x00, 
41325
  0x3B, 0x04, 0x00, 0x00, 0x16, 0x03, 0x03, 0x04, 0x03, 0x03, 0x00, 0x00, 0x3B, 0x03, 0x00, 0x00, 
41326
  0x29, 0x05, 0x01, 0x00, 0x38, 0x04, 0x00, 0x05, 0x16, 0x03, 0x03, 0x04, 0x05, 0x05, 0x05, 0x01, 
41327
  0x23, 0x02, 0x05, 0x01, 0x1C, 0x02, 0xFC, 0xFF, 0x03, 0x03, 0x00, 0x00, 0xCF, 0x08, 0x66, 0x6C, 
41328
  0x79, 0x63, 0x68, 0x65, 0x63, 0x6B, 0xD7, 0x00, 0xCD, 0x03, 0xFF, 0x00, 0x00, 0x0B, 0x01, 0x01, 
41329
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x0A, 0x26, 0x00, 0x01, 0x08, 0xCE, 0x08, 0x66, 0x6C, 0x79, 0x63, 
41330
  0x68, 0x65, 0x63, 0x6B, 0xDA, 0x18, 0xDA, 0x87, 0x23, 0xD8, 0x0B, 0x74, 0x61, 0x62, 0x6C, 0x65, 
41331
  0x2F, 0x63, 0x6C, 0x6F, 0x6E, 0x65, 0xDA, 0x89, 0x93, 0xDA, 0x82, 0xAF, 0xDA, 0x81, 0x5E, 0xDA, 
41332
  0x80, 0xBE, 0xDA, 0x82, 0x10, 0xDA, 0x80, 0xC5, 0xDA, 0x80, 0xC6, 0xDA, 0x81, 0xC8, 0x00, 0x26, 
41333
  0x00, 0xDA, 0x80, 0xF9, 0x00, 0x26, 0x01, 0xCF, 0x06, 0x6B, 0x77, 0x61, 0x72, 0x67, 0x73, 0x00, 
41334
  0x26, 0x02, 0xDA, 0x8B, 0x45, 0x04, 0x26, 0x04, 0xCF, 0x0C, 0x6F, 0x6C, 0x64, 0x2D, 0x6D, 0x6F, 
41335
  0x64, 0x63, 0x61, 0x63, 0x68, 0x65, 0x0E, 0x1D, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
41336
  0x36, 0x73, 0x11, 0x1D, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x74, 0x17, 0x1C, 
41337
  0x08, 0xDA, 0x88, 0xAD, 0x17, 0x1C, 0x06, 0xDA, 0x80, 0xFB, 0x2A, 0x03, 0x00, 0x00, 0x2F, 0x03, 
41338
  0x00, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x33, 0x03, 0x04, 0x00, 0x19, 0x04, 0x03, 0x00, 0x2A, 0x05, 
41339
  0x00, 0x00, 0x2F, 0x05, 0x00, 0x00, 0x2A, 0x06, 0x02, 0x00, 0x33, 0x05, 0x06, 0x00, 0x2E, 0x06, 
41340
  0x00, 0x00, 0x2A, 0x07, 0x03, 0x00, 0x30, 0x06, 0x07, 0x00, 0x2A, 0x08, 0x04, 0x00, 0x33, 0x07, 
41341
  0x08, 0x00, 0x19, 0x06, 0x07, 0x00, 0x26, 0x08, 0x00, 0x00, 0x35, 0x07, 0x06, 0x08, 0x19, 0x08, 
41342
  0x07, 0x00, 0x2F, 0x06, 0x00, 0x00, 0x2A, 0x09, 0x05, 0x00, 0x33, 0x07, 0x09, 0x00, 0x2A, 0x0A, 
41343
  0x06, 0x00, 0x23, 0x09, 0x07, 0x0A, 0x1C, 0x09, 0x06, 0x00, 0x2A, 0x07, 0x07, 0x00, 0x31, 0x06, 
41344
  0x08, 0x07, 0x2A, 0x0A, 0x08, 0x00, 0x33, 0x07, 0x0A, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x2A, 0x06, 
41345
  0x00, 0x00, 0x2F, 0x06, 0x00, 0x00, 0x2A, 0x07, 0x02, 0x00, 0x33, 0x06, 0x07, 0x00, 0x2A, 0x07, 
41346
  0x00, 0x00, 0x30, 0x07, 0x04, 0x00, 0x2A, 0x08, 0x09, 0x00, 0x33, 0x07, 0x08, 0x00, 0x04, 0x00, 
41347
  0x00, 0x00, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x0B, 0x01, 0x04, 0xDA, 
41348
  0x18, 0xDA, 0x85, 0x0E, 0xDA, 0x81, 0xE0, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x10, 0x04, 
41349
  0x04, 0x04, 0x10, 0x50, 0x00, 0x0B, 0xCE, 0x12, 0x66, 0x6C, 0x79, 0x63, 0x68, 0x65, 0x63, 0x6B, 
41350
  0x2D, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x6F, 0x72, 0xDA, 0x18, 0xDA, 0x83, 0xEE, 0xD5, 
41351
  0x0B, 0xDA, 0x83, 0x0A, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x02, 
41352
  0x06, 0x00, 0x02, 0xCE, 0x0B, 0x69, 0x73, 0x2D, 0x73, 0x61, 0x66, 0x65, 0x2D, 0x64, 0x65, 0x66, 
41353
  0xDA, 0x18, 0xDA, 0x83, 0xE3, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x01, 0x01, 0x01, 
41354
  0x08, 0x2B, 0x00, 0x03, 0xCE, 0x0F, 0x6E, 0x6F, 0x2D, 0x73, 0x69, 0x64, 0x65, 0x2D, 0x65, 0x66, 
41355
  0x66, 0x65, 0x63, 0x74, 0x73, 0xDA, 0x18, 0xDA, 0x83, 0xEE, 0xDA, 0x81, 0x84, 0xDA, 0x81, 0x85, 
41356
  0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x1A, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 
41357
  0x80, 0xF4, 0x00, 0x3B, 0xCE, 0x03, 0x61, 0x6C, 0x6C, 0xDA, 0x18, 0xDA, 0x81, 0x8D, 0x00, 0x80, 
41358
  0xF4, 0x00, 0xDA, 0x83, 0x2E, 0x00, 0x80, 0xF4, 0x01, 0xDA, 0x1F, 0x00, 0x80, 0xF4, 0x02, 0xDA, 
41359
  0x81, 0x8E, 0x00, 0x80, 0xF4, 0x03, 0xCF, 0x03, 0x61, 0x6C, 0x6C, 0x00, 0x80, 0xF4, 0x04, 0xDA, 
41360
  0x81, 0x08, 0x02, 0x80, 0xF3, 0x06, 0xDA, 0x81, 0x90, 0x02, 0x80, 0xF3, 0x06, 0xCF, 0x07, 0x5F, 
41361
  0x30, 0x30, 0x30, 0x30, 0x33, 0x48, 0x04, 0x14, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
41362
  0x33, 0x4A, 0x07, 0x14, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x49, 0x0A, 0x14, 
41363
  0x09, 0xDA, 0x1E, 0x0D, 0x12, 0x0A, 0xDA, 0x83, 0x92, 0x18, 0x30, 0x09, 0xDA, 0x81, 0x94, 0x19, 
41364
  0x30, 0x08, 0xDA, 0x81, 0x95, 0x19, 0x30, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 
41365
  0x4C, 0x1C, 0x30, 0x0B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x4B, 0x1F, 0x30, 0x0C, 
41366
  0xDA, 0x1E, 0x29, 0x2E, 0x0A, 0xDA, 0x83, 0x92, 0x34, 0x56, 0x0A, 0xDA, 0x81, 0x94, 0x36, 0x56, 
41367
  0x0B, 0xDA, 0x81, 0x98, 0x37, 0x56, 0x09, 0xDA, 0x81, 0x95, 0x38, 0x56, 0x0C, 0xDA, 0x81, 0x99, 
41368
  0x38, 0x56, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x4E, 0x3B, 0x56, 0x0E, 0xCF, 
41369
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x4D, 0x3E, 0x56, 0x0F, 0xDA, 0x1E, 0x4F, 0x54, 0x0D, 
41370
  0xDA, 0x83, 0x92, 0x5A, 0x80, 0x87, 0x0B, 0xDA, 0x81, 0x94, 0x5C, 0x80, 0x87, 0x0C, 0xDA, 0x81, 
41371
  0x98, 0x5E, 0x80, 0x87, 0x0D, 0xDA, 0x81, 0x9C, 0x5F, 0x80, 0x87, 0x0A, 0xDA, 0x81, 0x95, 0x60, 
41372
  0x80, 0x87, 0x0E, 0xDA, 0x81, 0x99, 0x61, 0x80, 0x87, 0x0F, 0xDA, 0x81, 0x9D, 0x61, 0x80, 0x87, 
41373
  0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x50, 0x64, 0x80, 0x87, 0x11, 0xCF, 0x07, 
41374
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x4F, 0x67, 0x80, 0x87, 0x12, 0xDA, 0x1E, 0x80, 0x80, 0x80, 
41375
  0x85, 0x10, 0xDA, 0x83, 0x92, 0x80, 0x8B, 0x80, 0xC2, 0x0C, 0xDA, 0x81, 0x94, 0x80, 0x8D, 0x80, 
41376
  0xC2, 0x0D, 0xDA, 0x81, 0x98, 0x80, 0x8F, 0x80, 0xC2, 0x0E, 0xDA, 0x81, 0x9C, 0x80, 0x91, 0x80, 
41377
  0xC2, 0x0F, 0xDA, 0x81, 0xA0, 0x80, 0x92, 0x80, 0xC2, 0x0B, 0xDA, 0x81, 0x95, 0x80, 0x93, 0x80, 
41378
  0xC2, 0x10, 0xDA, 0x81, 0x99, 0x80, 0x94, 0x80, 0xC2, 0x11, 0xDA, 0x81, 0x9D, 0x80, 0x95, 0x80, 
41379
  0xC2, 0x12, 0xDA, 0x81, 0xA1, 0x80, 0x95, 0x80, 0xC2, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
41380
  0x30, 0x33, 0x52, 0x80, 0x98, 0x80, 0xC2, 0x14, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 
41381
  0x51, 0x80, 0x9B, 0x80, 0xC2, 0x15, 0xDA, 0x1E, 0x80, 0xBB, 0x80, 0xC0, 0x13, 0xDA, 0x83, 0x92, 
41382
  0x80, 0xC6, 0x80, 0xF3, 0x0C, 0xDA, 0x81, 0xA4, 0x80, 0xCA, 0x80, 0xF3, 0x0D, 0xDA, 0x81, 0xA5, 
41383
  0x80, 0xCB, 0x80, 0xF3, 0x0B, 0xDA, 0x81, 0xA6, 0x80, 0xCB, 0x80, 0xF3, 0x01, 0xCF, 0x07, 0x5F, 
41384
  0x30, 0x30, 0x30, 0x30, 0x33, 0x54, 0x80, 0xCE, 0x80, 0xF3, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
41385
  0x30, 0x30, 0x33, 0x53, 0x80, 0xD1, 0x80, 0xF3, 0x10, 0xDA, 0x1E, 0x80, 0xD2, 0x80, 0xE6, 0x0E, 
41386
  0xDA, 0x80, 0x90, 0x80, 0xD2, 0x80, 0xE6, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 
41387
  0x55, 0x80, 0xD6, 0x80, 0xE4, 0x13, 0xDA, 0x81, 0xAA, 0x80, 0xD8, 0x80, 0xE4, 0x14, 0xDA, 0x81, 
41388
  0xAB, 0x80, 0xDA, 0x80, 0xE4, 0x15, 0xDA, 0x81, 0xAC, 0x80, 0xEC, 0x80, 0xF1, 0x11, 0xDA, 0x83, 
41389
  0x92, 0x27, 0x04, 0x00, 0x00, 0x3D, 0x05, 0x02, 0x00, 0x19, 0x06, 0x05, 0x00, 0x24, 0x05, 0x06, 
41390
  0x00, 0x1C, 0x05, 0x11, 0x00, 0x26, 0x08, 0x00, 0x00, 0x47, 0x07, 0x01, 0x08, 0x19, 0x08, 0x07, 
41391
  0x00, 0x1D, 0x08, 0x0C, 0x00, 0x38, 0x07, 0x01, 0x08, 0x19, 0x09, 0x07, 0x00, 0x2F, 0x09, 0x00, 
41392
  0x00, 0x33, 0x07, 0x00, 0x00, 0x19, 0x0A, 0x07, 0x00, 0x1C, 0x07, 0x02, 0x00, 0x1A, 0x03, 0x00, 
41393
  0x00, 0x19, 0x04, 0x0A, 0x00, 0x1A, 0x03, 0x00, 0x00, 0x47, 0x08, 0x01, 0x08, 0x1A, 0xF5, 0xFF, 
41394
  0xFF, 0x1A, 0xDF, 0x00, 0x00, 0x24, 0x07, 0x06, 0x01, 0x1C, 0x07, 0x1B, 0x00, 0x3B, 0x08, 0x02, 
41395
  0x00, 0x19, 0x09, 0x08, 0x00, 0x26, 0x08, 0x00, 0x00, 0x26, 0x0B, 0x00, 0x00, 0x47, 0x0A, 0x01, 
41396
  0x0B, 0x19, 0x0B, 0x0A, 0x00, 0x1D, 0x0B, 0x13, 0x00, 0x38, 0x0A, 0x01, 0x0B, 0x19, 0x0C, 0x0A, 
41397
  0x00, 0x47, 0x08, 0x09, 0x08, 0x26, 0x0D, 0x00, 0x00, 0x23, 0x0A, 0x0D, 0x08, 0x1C, 0x0A, 0x03, 
41398
  0x00, 0x1A, 0x0C, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x38, 0x0A, 0x09, 0x08, 0x30, 0x0C, 0x0A, 
41399
  0x00, 0x33, 0x0D, 0x00, 0x00, 0x19, 0x0A, 0x0D, 0x00, 0x1C, 0x0D, 0x02, 0x00, 0x1A, 0x03, 0x00, 
41400
  0x00, 0x19, 0x04, 0x0A, 0x00, 0x1A, 0x03, 0x00, 0x00, 0x47, 0x0B, 0x01, 0x0B, 0x1A, 0xEE, 0xFF, 
41401
  0xFF, 0x1A, 0xC3, 0x00, 0x00, 0x24, 0x08, 0x06, 0x02, 0x1C, 0x08, 0x25, 0x00, 0x3B, 0x09, 0x02, 
41402
  0x00, 0x19, 0x0A, 0x09, 0x00, 0x3B, 0x09, 0x02, 0x01, 0x19, 0x0B, 0x09, 0x00, 0x26, 0x09, 0x00, 
41403
  0x00, 0x26, 0x0C, 0x00, 0x00, 0x26, 0x0E, 0x00, 0x00, 0x47, 0x0D, 0x01, 0x0E, 0x19, 0x0E, 0x0D, 
41404
  0x00, 0x1D, 0x0E, 0x1A, 0x00, 0x38, 0x0D, 0x01, 0x0E, 0x19, 0x0F, 0x0D, 0x00, 0x47, 0x09, 0x0A, 
41405
  0x09, 0x26, 0x10, 0x00, 0x00, 0x23, 0x0D, 0x10, 0x09, 0x1C, 0x0D, 0x03, 0x00, 0x1A, 0x13, 0x00, 
41406
  0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x0C, 0x0B, 0x0C, 0x26, 0x10, 0x00, 0x00, 0x23, 0x0D, 0x10, 
41407
  0x0C, 0x1C, 0x0D, 0x03, 0x00, 0x1A, 0x0D, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x38, 0x0D, 0x0A, 
41408
  0x09, 0x38, 0x10, 0x0B, 0x0C, 0x31, 0x0F, 0x0D, 0x10, 0x33, 0x11, 0x00, 0x00, 0x19, 0x0D, 0x11, 
41409
  0x00, 0x1C, 0x11, 0x02, 0x00, 0x1A, 0x03, 0x00, 0x00, 0x19, 0x04, 0x0D, 0x00, 0x1A, 0x03, 0x00, 
41410
  0x00, 0x47, 0x0E, 0x01, 0x0E, 0x1A, 0xE7, 0xFF, 0xFF, 0x1A, 0x9D, 0x00, 0x00, 0x24, 0x09, 0x06, 
41411
  0x03, 0x1C, 0x09, 0x30, 0x00, 0x3B, 0x0A, 0x02, 0x00, 0x19, 0x0B, 0x0A, 0x00, 0x3B, 0x0A, 0x02, 
41412
  0x01, 0x19, 0x0C, 0x0A, 0x00, 0x3B, 0x0A, 0x02, 0x02, 0x19, 0x0D, 0x0A, 0x00, 0x26, 0x0A, 0x00, 
41413
  0x00, 0x26, 0x0E, 0x00, 0x00, 0x26, 0x0F, 0x00, 0x00, 0x26, 0x11, 0x00, 0x00, 0x47, 0x10, 0x01, 
41414
  0x11, 0x19, 0x11, 0x10, 0x00, 0x1D, 0x11, 0x22, 0x00, 0x38, 0x10, 0x01, 0x11, 0x19, 0x12, 0x10, 
41415
  0x00, 0x47, 0x0A, 0x0B, 0x0A, 0x26, 0x13, 0x00, 0x00, 0x23, 0x10, 0x13, 0x0A, 0x1C, 0x10, 0x03, 
41416
  0x00, 0x1A, 0x1B, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x0E, 0x0C, 0x0E, 0x26, 0x13, 0x00, 
41417
  0x00, 0x23, 0x10, 0x13, 0x0E, 0x1C, 0x10, 0x03, 0x00, 0x1A, 0x15, 0x00, 0x00, 0x1A, 0x01, 0x00, 
41418
  0x00, 0x47, 0x0F, 0x0D, 0x0F, 0x26, 0x13, 0x00, 0x00, 0x23, 0x10, 0x13, 0x0F, 0x1C, 0x10, 0x03, 
41419
  0x00, 0x1A, 0x0F, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x38, 0x10, 0x0B, 0x0A, 0x38, 0x13, 0x0C, 
41420
  0x0E, 0x38, 0x14, 0x0D, 0x0F, 0x31, 0x12, 0x10, 0x13, 0x2F, 0x14, 0x00, 0x00, 0x33, 0x15, 0x00, 
41421
  0x00, 0x19, 0x10, 0x15, 0x00, 0x1C, 0x15, 0x02, 0x00, 0x1A, 0x03, 0x00, 0x00, 0x19, 0x04, 0x10, 
41422
  0x00, 0x1A, 0x03, 0x00, 0x00, 0x47, 0x11, 0x01, 0x11, 0x1A, 0xDF, 0xFF, 0xFF, 0x1A, 0x6C, 0x00, 
41423
  0x00, 0x24, 0x0A, 0x06, 0x04, 0x1C, 0x0A, 0x3A, 0x00, 0x3B, 0x0B, 0x02, 0x00, 0x19, 0x0C, 0x0B, 
41424
  0x00, 0x3B, 0x0B, 0x02, 0x01, 0x19, 0x0D, 0x0B, 0x00, 0x3B, 0x0B, 0x02, 0x02, 0x19, 0x0E, 0x0B, 
41425
  0x00, 0x3B, 0x0B, 0x02, 0x03, 0x19, 0x0F, 0x0B, 0x00, 0x26, 0x0B, 0x00, 0x00, 0x26, 0x10, 0x00, 
41426
  0x00, 0x26, 0x11, 0x00, 0x00, 0x26, 0x12, 0x00, 0x00, 0x26, 0x14, 0x00, 0x00, 0x47, 0x13, 0x01, 
41427
  0x14, 0x19, 0x14, 0x13, 0x00, 0x1D, 0x14, 0x29, 0x00, 0x38, 0x13, 0x01, 0x14, 0x19, 0x15, 0x13, 
41428
  0x00, 0x47, 0x0B, 0x0C, 0x0B, 0x26, 0x16, 0x00, 0x00, 0x23, 0x13, 0x16, 0x0B, 0x1C, 0x13, 0x03, 
41429
  0x00, 0x1A, 0x22, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x10, 0x0D, 0x10, 0x26, 0x16, 0x00, 
41430
  0x00, 0x23, 0x13, 0x16, 0x10, 0x1C, 0x13, 0x03, 0x00, 0x1A, 0x1C, 0x00, 0x00, 0x1A, 0x01, 0x00, 
41431
  0x00, 0x47, 0x11, 0x0E, 0x11, 0x26, 0x16, 0x00, 0x00, 0x23, 0x13, 0x16, 0x11, 0x1C, 0x13, 0x03, 
41432
  0x00, 0x1A, 0x16, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x12, 0x0F, 0x12, 0x26, 0x16, 0x00, 
41433
  0x00, 0x23, 0x13, 0x16, 0x12, 0x1C, 0x13, 0x03, 0x00, 0x1A, 0x10, 0x00, 0x00, 0x1A, 0x01, 0x00, 
41434
  0x00, 0x38, 0x13, 0x0C, 0x0B, 0x38, 0x16, 0x0D, 0x10, 0x38, 0x17, 0x0E, 0x11, 0x38, 0x18, 0x0F, 
41435
  0x12, 0x31, 0x15, 0x13, 0x16, 0x30, 0x17, 0x18, 0x00, 0x33, 0x19, 0x00, 0x00, 0x19, 0x13, 0x19, 
41436
  0x00, 0x1C, 0x19, 0x02, 0x00, 0x1A, 0x03, 0x00, 0x00, 0x19, 0x04, 0x13, 0x00, 0x1A, 0x03, 0x00, 
41437
  0x00, 0x47, 0x14, 0x01, 0x14, 0x1A, 0xD8, 0xFF, 0xFF, 0x1A, 0x31, 0x00, 0x00, 0x2F, 0x06, 0x00, 
41438
  0x00, 0x2A, 0x0C, 0x00, 0x00, 0x33, 0x0B, 0x0C, 0x00, 0x19, 0x0C, 0x0B, 0x00, 0x2F, 0x06, 0x00, 
41439
  0x00, 0x2A, 0x0D, 0x00, 0x00, 0x33, 0x0B, 0x0D, 0x00, 0x19, 0x0D, 0x0B, 0x00, 0x28, 0x0B, 0x00, 
41440
  0x00, 0x26, 0x0F, 0x00, 0x00, 0x47, 0x0E, 0x01, 0x0F, 0x19, 0x0F, 0x0E, 0x00, 0x1D, 0x0F, 0x24, 
41441
  0x00, 0x38, 0x0E, 0x01, 0x0F, 0x19, 0x10, 0x0E, 0x00, 0x29, 0x0E, 0x00, 0x00, 0x21, 0x11, 0x0E, 
41442
  0x06, 0x1C, 0x11, 0x12, 0x00, 0x38, 0x12, 0x0C, 0x0E, 0x19, 0x13, 0x12, 0x00, 0x38, 0x12, 0x02, 
41443
  0x0E, 0x19, 0x14, 0x12, 0x00, 0x47, 0x12, 0x14, 0x13, 0x19, 0x15, 0x12, 0x00, 0x26, 0x16, 0x00, 
41444
  0x00, 0x23, 0x12, 0x16, 0x15, 0x1C, 0x12, 0x04, 0x00, 0x27, 0x0B, 0x00, 0x00, 0x1A, 0x07, 0x00, 
41445
  0x00, 0x1A, 0x04, 0x00, 0x00, 0x3A, 0x0C, 0x0E, 0x15, 0x38, 0x16, 0x14, 0x15, 0x3A, 0x0D, 0x0E, 
41446
  0x16, 0x05, 0x0E, 0x0E, 0x01, 0x1A, 0xEE, 0xFF, 0xFF, 0x1C, 0x0B, 0x03, 0x00, 0x1A, 0x0C, 0x00, 
41447
  0x00, 0x1A, 0x01, 0x00, 0x00, 0x2F, 0x10, 0x00, 0x00, 0x32, 0x0D, 0x00, 0x00, 0x33, 0x0E, 0x00, 
41448
  0x00, 0x19, 0x11, 0x0E, 0x00, 0x1C, 0x0E, 0x02, 0x00, 0x1A, 0x03, 0x00, 0x00, 0x19, 0x04, 0x11, 
41449
  0x00, 0x1A, 0x03, 0x00, 0x00, 0x47, 0x0F, 0x01, 0x0F, 0x1A, 0xDD, 0xFF, 0xFF, 0x03, 0x04, 0x00, 
41450
  0x00, 0x88, 0x41, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41451
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41452
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41453
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41454
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41455
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41456
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41457
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41458
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41459
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41460
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41461
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41462
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41463
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41464
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41465
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41466
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41467
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41468
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41469
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41470
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41471
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41472
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41473
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41474
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41475
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41476
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41477
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41478
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41479
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41480
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFA, 0x01, 0xDA, 0x5B, 0xDA, 0x89, 0x46, 
41481
  0xDA, 0x86, 0xE9, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x01, 0x01, 0x01, 0x01, 0x0F, 
41482
  0x00, 0x04, 0xCE, 0x06, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0xDA, 0x18, 0xDA, 0x81, 0x8C, 0x00, 
41483
  0x0F, 0x00, 0xDA, 0x1E, 0x00, 0x0F, 0x01, 0xCF, 0x06, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x01, 
41484
  0x0F, 0x03, 0xDA, 0x86, 0xEB, 0x04, 0x0F, 0x05, 0xDA, 0x22, 0x3E, 0x02, 0x00, 0x00, 0x19, 0x03, 
41485
  0x02, 0x00, 0x26, 0x05, 0x00, 0x00, 0x47, 0x04, 0x00, 0x05, 0x19, 0x05, 0x04, 0x00, 0x26, 0x07, 
41486
  0x00, 0x00, 0x48, 0x06, 0x07, 0x05, 0x1C, 0x06, 0x07, 0x00, 0x38, 0x07, 0x00, 0x05, 0x30, 0x03, 
41487
  0x07, 0x00, 0x2A, 0x09, 0x00, 0x00, 0x33, 0x08, 0x09, 0x00, 0x47, 0x05, 0x00, 0x05, 0x1A, 0xF8, 
41488
  0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 0x86, 0x34, 0x03, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 
41489
  0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x15, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 
41490
  0x0C, 0xBF, 0xFE, 0x03, 0xBF, 0xFB, 0x01, 0x00, 0x2B, 0x00, 0xCF, 0x03, 0x73, 0x72, 0x63, 0x00, 
41491
  0x2B, 0x01, 0xCF, 0x0F, 0x6E, 0x6F, 0x2D, 0x73, 0x69, 0x64, 0x65, 0x2D, 0x65, 0x66, 0x66, 0x65, 
41492
  0x63, 0x74, 0x73, 0x20, 0x29, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x6F, 0x2C, 
41493
  0x01, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x1C, 
41494
  0x02, 0x0B, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x33, 0x03, 0x04, 0x00, 0x2A, 
41495
  0x05, 0x02, 0x00, 0x23, 0x04, 0x03, 0x05, 0x1C, 0x04, 0x04, 0x00, 0x30, 0x01, 0x00, 0x00, 0x2A, 
41496
  0x03, 0x03, 0x00, 0x34, 0x03, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 
41497
  0x04, 0x04, 0x00, 0x33, 0x03, 0x04, 0x00, 0x1C, 0x03, 0x04, 0x00, 0x30, 0x01, 0x00, 0x00, 0x2A, 
41498
  0x04, 0x03, 0x00, 0x34, 0x04, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x05, 0x05, 0x00, 0x33, 
41499
  0x04, 0x05, 0x00, 0x1C, 0x04, 0x10, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x06, 0x06, 0x00, 0x33, 
41500
  0x05, 0x06, 0x00, 0x30, 0x01, 0x05, 0x00, 0x2A, 0x07, 0x03, 0x00, 0x33, 0x06, 0x07, 0x00, 0x19, 
41501
  0x05, 0x06, 0x00, 0x1C, 0x06, 0x07, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x08, 0x07, 0x00, 0x33, 
41502
  0x07, 0x08, 0x00, 0x30, 0x01, 0x07, 0x00, 0x2A, 0x08, 0x03, 0x00, 0x34, 0x08, 0x00, 0x00, 0x03, 
41503
  0x05, 0x00, 0x00, 0x27, 0x05, 0x00, 0x00, 0x03, 0x05, 0x00, 0x00, 0x8E, 0xC9, 0x01, 0x05, 0x05, 
41504
  0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x02, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x09, 0x00, 
41505
  0x09, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x02, 0x05, 0x00, 0x05, 
41506
  0x00, 0x05, 0xBF, 0xFC, 0x03, 0x05, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 
41507
  0x05, 0xBF, 0xFA, 0x03, 0x07, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 
41508
  0x00, 0x05, 0x00, 0x05, 0x01, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 
41509
  0xBF, 0xFF, 0x05, 0xBF, 0xF9, 0x03, 0x00, 0x03, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 
41510
  0xCF, 0x0B, 0x69, 0x73, 0x2D, 0x73, 0x61, 0x66, 0x65, 0x2D, 0x64, 0x65, 0x66, 0x2F, 0x00, 0x00, 
41511
  0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x2F, 0x02, 0x00, 0x00, 0x2A, 0x03, 0x01, 
41512
  0x00, 0x34, 0x03, 0x00, 0x00, 0x8E, 0xD8, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x18, 0x00, 0x18, 
41513
  0x00, 0x18, 0xDA, 0x84, 0x53, 0xCB, 0xCF, 0x05, 0x76, 0x61, 0x72, 0x66, 0x6E, 0xCB, 0xDA, 0x8A, 
41514
  0x10, 0xDA, 0x8B, 0x4F, 0xCF, 0x08, 0x64, 0x65, 0x66, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0xCB, 0xDA, 
41515
  0x84, 0xEF, 0xDA, 0x8B, 0x4F, 0xDA, 0x8B, 0x16, 0xCB, 0xDA, 0x89, 0x3F, 0xCB, 0xDA, 0x4A, 0xDA, 
41516
  0x8B, 0x4F, 0xCF, 0x04, 0x76, 0x61, 0x72, 0x2D, 0xDA, 0x8B, 0x4F, 0xDA, 0x89, 0x9E, 0xDA, 0x8B, 
41517
  0x4F, 0xDA, 0x84, 0xEA, 0xCE, 0x07, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x2D, 0xDA, 0x86, 0xDA, 
41518
  0xDA, 0x8B, 0x4F, 0xDA, 0x87, 0x62, 0xDA, 0x8A, 0x1D, 0xDA, 0x82, 0xE9, 0xD7, 0x00, 0xCD, 0x00, 
41519
  0xDC, 0x00, 0x00, 0x08, 0x02, 0x02, 0x02, 0x05, 0x13, 0x00, 0x06, 0xCE, 0x05, 0x75, 0x73, 0x65, 
41520
  0x2D, 0x32, 0xDA, 0x18, 0xDA, 0x80, 0xF5, 0xDA, 0x8A, 0x28, 0xDA, 0x80, 0xC5, 0xDA, 0x81, 0xE0, 
41521
  0xDA, 0x8A, 0x21, 0x00, 0x13, 0x00, 0xDA, 0x82, 0x2E, 0x00, 0x13, 0x01, 0xDA, 0x80, 0xAB, 0x00, 
41522
  0x13, 0x02, 0xCF, 0x05, 0x75, 0x73, 0x65, 0x2D, 0x32, 0x00, 0x13, 0x01, 0xCF, 0x07, 0x5F, 0x30, 
41523
  0x30, 0x30, 0x30, 0x36, 0x71, 0x02, 0x13, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 
41524
  0x70, 0x05, 0x12, 0x05, 0xDA, 0x88, 0x33, 0x26, 0x04, 0x00, 0x00, 0x47, 0x03, 0x01, 0x04, 0x19, 
41525
  0x04, 0x03, 0x00, 0x1D, 0x04, 0x0F, 0x00, 0x38, 0x03, 0x01, 0x04, 0x19, 0x05, 0x03, 0x00, 0x2F, 
41526
  0x05, 0x00, 0x00, 0x2A, 0x06, 0x00, 0x00, 0x33, 0x03, 0x06, 0x00, 0x2A, 0x06, 0x01, 0x00, 0x2A, 
41527
  0x07, 0x02, 0x00, 0x31, 0x03, 0x06, 0x07, 0x2A, 0x06, 0x03, 0x00, 0x30, 0x06, 0x00, 0x00, 0x2A, 
41528
  0x07, 0x04, 0x00, 0x33, 0x06, 0x07, 0x00, 0x47, 0x04, 0x01, 0x04, 0x1A, 0xF2, 0xFF, 0xFF, 0x04, 
41529
  0x00, 0x00, 0x00, 0x8E, 0xE0, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41530
  0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 
41531
  0x00, 0x10, 0x00, 0x10, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xD5, 0x04, 0xCF, 0x06, 0x69, 0x6D, 
41532
  0x70, 0x6F, 0x72, 0x74, 0xCB, 0xDA, 0x87, 0x17, 0xCB, 0xCF, 0x06, 0x64, 0x6F, 0x66, 0x69, 0x6C, 
41533
  0x65, 0xCB, 0xDA, 0x8A, 0x31, 0xCB, 0xDA, 0x82, 0x73, 0xDA, 0x81, 0xE0, 0xDA, 0x80, 0x8F, 0xDA, 
41534
  0x82, 0xEE, 0xDA, 0x80, 0x9E, 0x00, 0x50, 0x00, 0xCF, 0x05, 0x74, 0x68, 0x75, 0x6E, 0x6B, 0x00, 
41535
  0x50, 0x01, 0xDA, 0x82, 0x4B, 0x00, 0x50, 0x02, 0xDA, 0x80, 0xBA, 0x00, 0x50, 0x03, 0xDA, 0x81, 
41536
  0xF1, 0x00, 0x50, 0x04, 0xCF, 0x12, 0x66, 0x6C, 0x79, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x65, 
41537
  0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x6F, 0x72, 0x08, 0x4F, 0x07, 0xDA, 0x86, 0x6F, 0x0C, 0x20, 
41538
  0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x72, 0x20, 0x4F, 0x08, 0xCF, 0x0A, 0x73, 
41539
  0x61, 0x66, 0x65, 0x2D, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x3E, 0x4E, 0x0D, 0xDA, 0x82, 0x4C, 0x40, 
41540
  0x4E, 0x0E, 0xDA, 0x81, 0xCF, 0x49, 0x4E, 0x0B, 0xCF, 0x06, 0x6E, 0x65, 0x77, 0x74, 0x75, 0x70, 
41541
  0x2C, 0x04, 0x00, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x2A, 0x06, 0x00, 0x00, 0x33, 0x05, 0x06, 0x00, 
41542
  0x1C, 0x05, 0x4B, 0x00, 0x29, 0x06, 0x00, 0x00, 0x2F, 0x06, 0x00, 0x00, 0x33, 0x06, 0x01, 0x00, 
41543
  0x19, 0x07, 0x06, 0x00, 0x2F, 0x07, 0x00, 0x00, 0x2A, 0x08, 0x01, 0x00, 0x33, 0x06, 0x08, 0x00, 
41544
  0x19, 0x08, 0x06, 0x00, 0x1C, 0x08, 0x03, 0x00, 0x19, 0x06, 0x08, 0x00, 0x1A, 0x11, 0x00, 0x00, 
41545
  0x2F, 0x07, 0x00, 0x00, 0x2A, 0x0B, 0x02, 0x00, 0x33, 0x0A, 0x0B, 0x00, 0x1C, 0x0A, 0x0B, 0x00, 
41546
  0x2A, 0x0C, 0x03, 0x00, 0x30, 0x0C, 0x07, 0x00, 0x2A, 0x0D, 0x04, 0x00, 0x33, 0x0C, 0x0D, 0x00, 
41547
  0x1C, 0x0C, 0x03, 0x00, 0x2A, 0x0B, 0x05, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x26, 0x0B, 0x00, 0x00, 
41548
  0x19, 0x09, 0x0B, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x26, 0x09, 0x00, 0x00, 0x19, 0x06, 0x09, 0x00, 
41549
  0x19, 0x08, 0x06, 0x00, 0x2F, 0x08, 0x00, 0x00, 0x2A, 0x09, 0x06, 0x00, 0x33, 0x06, 0x09, 0x00, 
41550
  0x1C, 0x06, 0x06, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x33, 0x09, 0x08, 0x00, 0x1C, 0x09, 0x02, 0x00, 
41551
  0x34, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1C, 0x08, 0x02, 0x00, 0x34, 0x00, 0x00, 0x00, 
41552
  0x2A, 0x0A, 0x07, 0x00, 0x23, 0x09, 0x0A, 0x07, 0x1C, 0x09, 0x08, 0x00, 0x29, 0x0A, 0x01, 0x00, 
41553
  0x30, 0x01, 0x0A, 0x00, 0x2A, 0x0B, 0x08, 0x00, 0x33, 0x0A, 0x0B, 0x00, 0x30, 0x04, 0x0A, 0x00, 
41554
  0x2A, 0x0B, 0x09, 0x00, 0x34, 0x0B, 0x00, 0x00, 0x2F, 0x07, 0x00, 0x00, 0x2A, 0x0B, 0x0A, 0x00, 
41555
  0x33, 0x0A, 0x0B, 0x00, 0x1C, 0x0A, 0x15, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x2A, 0x0C, 0x0B, 0x00, 
41556
  0x33, 0x0B, 0x0C, 0x00, 0x3B, 0x0C, 0x0B, 0x00, 0x19, 0x0D, 0x0C, 0x00, 0x3B, 0x0C, 0x0B, 0x01, 
41557
  0x19, 0x0E, 0x0C, 0x00, 0x32, 0x01, 0x00, 0x00, 0x2A, 0x0B, 0x0C, 0x00, 0x30, 0x0B, 0x04, 0x00, 
41558
  0x2A, 0x0C, 0x0D, 0x00, 0x33, 0x0B, 0x0C, 0x00, 0x31, 0x0B, 0x0D, 0x0E, 0x2A, 0x0F, 0x0E, 0x00, 
41559
  0x33, 0x0C, 0x0F, 0x00, 0x19, 0x0B, 0x0C, 0x00, 0x31, 0x0B, 0x02, 0x03, 0x2A, 0x0F, 0x0F, 0x00, 
41560
  0x33, 0x0C, 0x0F, 0x00, 0x34, 0x0C, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 
41561
  0x8E, 0xE2, 0x01, 0x05, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x03, 0x01, 0x0F, 0x00, 0x0F, 0x00, 
41562
  0x0F, 0x00, 0x05, 0x03, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x00, 0x07, 
41563
  0x00, 0x07, 0x02, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x09, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
41564
  0x00, 0x0F, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFF, 0x09, 0x00, 0x09, 0x00, 
41565
  0x09, 0xBF, 0xFE, 0x07, 0xBF, 0xFF, 0x05, 0x07, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFE, 0x05, 
41566
  0x03, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x00, 0x1F, 0x00, 0x07, 0xBF, 0xFD, 0x05, 0x06, 0x07, 0x02, 
41567
  0x07, 0x00, 0x07, 0xBF, 0xF8, 0x05, 0x09, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x07, 
41568
  0x00, 0x07, 0x00, 0x07, 0x02, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xF5, 0x05, 0x0C, 0x13, 0x00, 
41569
  0x13, 0x00, 0x13, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x22, 0x00, 0x22, 0x00, 
41570
  0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0xBF, 0xFF, 0x07, 0x02, 0x0A, 
41571
  0x00, 0x0A, 0x00, 0x0A, 0x00, 0x09, 0xBF, 0xF2, 0x05, 0xBF, 0xF9, 0x03, 0xD7, 0x00, 0xCD, 0x03, 
41572
  0xFF, 0x00, 0x00, 0x24, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x16, 0x7E, 0x00, 0x04, 0x16, 
41573
  0xCE, 0x06, 0x64, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0xDA, 0x18, 0xDA, 0x81, 0xDB, 0xDA, 0x81, 0xDF, 
41574
  0xDA, 0x80, 0xEF, 0xDA, 0x81, 0xE0, 0xDA, 0x81, 0xE2, 0xDA, 0x81, 0xD8, 0xDA, 0x82, 0x16, 0xDA, 
41575
  0x2C, 0xD0, 0x09, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x66, 0x69, 0x6C, 0x65, 0xD0, 0x0B, 0x63, 0x6F, 
41576
  0x72, 0x65, 0x2F, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0xDA, 0x80, 0xF2, 0xDA, 0x80, 0xF3, 0xDA, 
41577
  0x80, 0xB2, 0xDA, 0x80, 0xF5, 0xCE, 0x14, 0x63, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x6E, 0x6F, 0x74, 
41578
  0x20, 0x66, 0x69, 0x6E, 0x64, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0xDA, 0x82, 0x13, 0xDA, 0x81, 
41579
  0xDC, 0xDA, 0x81, 0xDE, 0xDA, 0x81, 0xD6, 0xDA, 0x81, 0xD7, 0xDA, 0x81, 0xD9, 0xDA, 0x81, 0xF0, 
41580
  0x00, 0x7E, 0x00, 0xDA, 0x80, 0xF9, 0x02, 0x7E, 0x0A, 0xDA, 0x82, 0x26, 0x05, 0x7E, 0x0B, 0xDA, 
41581
  0x82, 0x2B, 0x08, 0x7E, 0x0C, 0xDA, 0x82, 0x4B, 0x0B, 0x7E, 0x0D, 0xDA, 0x82, 0x2E, 0x0E, 0x7E, 
41582
  0x0E, 0xDA, 0x87, 0x7F, 0x11, 0x7E, 0x0F, 0xDA, 0x80, 0xBA, 0x14, 0x7E, 0x10, 0xCF, 0x04, 0x65, 
41583
  0x78, 0x69, 0x74, 0x15, 0x7E, 0x01, 0xDA, 0x8B, 0x76, 0x19, 0x2A, 0x11, 0xCF, 0x07, 0x5F, 0x30, 
41584
  0x30, 0x30, 0x30, 0x34, 0x5A, 0x2A, 0x7E, 0x11, 0xDA, 0x80, 0xFB, 0x2C, 0x7E, 0x13, 0xCF, 0x0C, 
41585
  0x70, 0x61, 0x74, 0x68, 0x2D, 0x69, 0x73, 0x2D, 0x66, 0x69, 0x6C, 0x65, 0x35, 0x7E, 0x15, 0xDA, 
41586
  0x80, 0xBA, 0x39, 0x7E, 0x17, 0xCF, 0x05, 0x73, 0x70, 0x61, 0x74, 0x68, 0x39, 0x42, 0x0C, 0xCF, 
41587
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x30, 0x44, 0x7E, 0x18, 0xCF, 0x0A, 0x65, 0x78, 0x69, 
41588
  0x74, 0x2D, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x45, 0x7E, 0x19, 0xCF, 0x0A, 0x65, 0x78, 0x69, 0x74, 
41589
  0x2D, 0x66, 0x69, 0x62, 0x65, 0x72, 0x47, 0x7E, 0x1B, 0xDA, 0x82, 0x2A, 0x49, 0x7E, 0x1D, 0xCF, 
41590
  0x02, 0x62, 0x70, 0x4B, 0x7E, 0x1F, 0xCF, 0x02, 0x62, 0x63, 0x53, 0x5C, 0x0C, 0xCF, 0x07, 0x5F, 
41591
  0x30, 0x30, 0x30, 0x30, 0x35, 0x31, 0x71, 0x7E, 0x20, 0xCF, 0x04, 0x6E, 0x65, 0x6E, 0x76, 0x2A, 
41592
  0x0A, 0x00, 0x00, 0x38, 0x09, 0x01, 0x0A, 0x19, 0x0A, 0x09, 0x00, 0x2A, 0x0B, 0x01, 0x00, 0x38, 
41593
  0x09, 0x01, 0x0B, 0x19, 0x0B, 0x09, 0x00, 0x2A, 0x0C, 0x02, 0x00, 0x38, 0x09, 0x01, 0x0C, 0x19, 
41594
  0x0C, 0x09, 0x00, 0x2A, 0x0D, 0x03, 0x00, 0x38, 0x09, 0x01, 0x0D, 0x19, 0x0D, 0x09, 0x00, 0x2A, 
41595
  0x0E, 0x04, 0x00, 0x38, 0x09, 0x01, 0x0E, 0x19, 0x0E, 0x09, 0x00, 0x2A, 0x0F, 0x05, 0x00, 0x38, 
41596
  0x09, 0x01, 0x0F, 0x19, 0x0F, 0x09, 0x00, 0x2A, 0x10, 0x06, 0x00, 0x38, 0x09, 0x01, 0x10, 0x19, 
41597
  0x10, 0x09, 0x00, 0x2C, 0x01, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x11, 0x07, 0x00, 0x33, 
41598
  0x09, 0x11, 0x00, 0x19, 0x11, 0x09, 0x00, 0x2A, 0x13, 0x08, 0x00, 0x23, 0x12, 0x11, 0x13, 0x1C, 
41599
  0x12, 0x03, 0x00, 0x19, 0x09, 0x00, 0x00, 0x1A, 0x0C, 0x00, 0x00, 0x2A, 0x15, 0x09, 0x00, 0x23, 
41600
  0x14, 0x11, 0x15, 0x1C, 0x14, 0x03, 0x00, 0x19, 0x13, 0x00, 0x00, 0x1A, 0x06, 0x00, 0x00, 0x2A, 
41601
  0x15, 0x0A, 0x00, 0x30, 0x00, 0x15, 0x00, 0x2A, 0x16, 0x0B, 0x00, 0x33, 0x15, 0x16, 0x00, 0x19, 
41602
  0x13, 0x15, 0x00, 0x19, 0x09, 0x13, 0x00, 0x19, 0x11, 0x09, 0x00, 0x23, 0x12, 0x11, 0x00, 0x19, 
41603
  0x13, 0x12, 0x00, 0x26, 0x16, 0x00, 0x00, 0x23, 0x15, 0x16, 0x0F, 0x1C, 0x15, 0x05, 0x00, 0x2A, 
41604
  0x17, 0x0C, 0x00, 0x33, 0x16, 0x17, 0x00, 0x19, 0x14, 0x16, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 
41605
  0x14, 0x0F, 0x00, 0x19, 0x15, 0x14, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x17, 0x0D, 0x00, 0x33, 
41606
  0x16, 0x17, 0x00, 0x19, 0x17, 0x16, 0x00, 0x1C, 0x0C, 0x03, 0x00, 0x19, 0x18, 0x0C, 0x00, 0x1A, 
41607
  0x06, 0x00, 0x00, 0x1C, 0x13, 0x03, 0x00, 0x19, 0x19, 0x00, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 
41608
  0x19, 0x17, 0x00, 0x19, 0x18, 0x19, 0x00, 0x2A, 0x19, 0x02, 0x00, 0x3A, 0x15, 0x19, 0x18, 0x26, 
41609
  0x18, 0x00, 0x00, 0x26, 0x19, 0x00, 0x00, 0x2E, 0x1A, 0x00, 0x00, 0x19, 0x1B, 0x1A, 0x00, 0x2E, 
41610
  0x1C, 0x01, 0x00, 0x19, 0x1D, 0x1C, 0x00, 0x2E, 0x1E, 0x02, 0x00, 0x19, 0x1F, 0x1E, 0x00, 0x1C, 
41611
  0x11, 0x02, 0x00, 0x1A, 0x06, 0x00, 0x00, 0x2A, 0x20, 0x0E, 0x00, 0x30, 0x20, 0x00, 0x00, 0x2A, 
41612
  0x21, 0x0D, 0x00, 0x33, 0x20, 0x21, 0x00, 0x01, 0x20, 0x00, 0x00, 0x2E, 0x20, 0x03, 0x00, 0x1C, 
41613
  0x0C, 0x03, 0x00, 0x19, 0x21, 0x0C, 0x00, 0x1A, 0x06, 0x00, 0x00, 0x1C, 0x13, 0x03, 0x00, 0x2A, 
41614
  0x22, 0x0F, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x22, 0x17, 0x00, 0x19, 0x21, 0x22, 0x00, 0x2A, 
41615
  0x22, 0x00, 0x00, 0x2A, 0x23, 0x10, 0x00, 0x31, 0x22, 0x0A, 0x23, 0x2A, 0x22, 0x05, 0x00, 0x31, 
41616
  0x1D, 0x22, 0x15, 0x2A, 0x22, 0x11, 0x00, 0x2A, 0x23, 0x12, 0x00, 0x31, 0x22, 0x1F, 0x23, 0x2A, 
41617
  0x22, 0x01, 0x00, 0x31, 0x1B, 0x22, 0x0B, 0x2A, 0x22, 0x13, 0x00, 0x2A, 0x23, 0x02, 0x00, 0x31, 
41618
  0x22, 0x20, 0x23, 0x2A, 0x22, 0x03, 0x00, 0x31, 0x21, 0x22, 0x0D, 0x2A, 0x22, 0x04, 0x00, 0x30, 
41619
  0x22, 0x0E, 0x00, 0x41, 0x20, 0x00, 0x00, 0x2F, 0x20, 0x00, 0x00, 0x2A, 0x22, 0x14, 0x00, 0x33, 
41620
  0x21, 0x22, 0x00, 0x19, 0x20, 0x21, 0x00, 0x1C, 0x13, 0x02, 0x00, 0x1A, 0x04, 0x00, 0x00, 0x2F, 
41621
  0x11, 0x00, 0x00, 0x2A, 0x23, 0x15, 0x00, 0x33, 0x22, 0x23, 0x00, 0x1C, 0x18, 0x06, 0x00, 0x1C, 
41622
  0x19, 0x03, 0x00, 0x37, 0x22, 0x18, 0x19, 0x1A, 0x02, 0x00, 0x00, 0x01, 0x18, 0x00, 0x00, 0x1A, 
41623
  0x01, 0x00, 0x00, 0x03, 0x20, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x02, 0x02, 0x02, 
41624
  0x01, 0x05, 0x01, 0x14, 0xCE, 0x06, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0x73, 0xDA, 0x18, 0xDA, 0x81, 
41625
  0xDB, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 0xF9, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x82, 0x26, 0xBF, 
41626
  0xFF, 0x00, 0x0B, 0xDA, 0x82, 0x2B, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x82, 0x4B, 0xBF, 0xFF, 0x00, 
41627
  0x0D, 0xDA, 0x82, 0x2E, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x7F, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 
41628
  0x80, 0xBA, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8B, 0x82, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8B, 0x76, 
41629
  0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x8B, 0x83, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x80, 0xFB, 0xBF, 0xFF, 
41630
  0x00, 0x13, 0xDA, 0x8B, 0x84, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x80, 0xBA, 0xBF, 0xFF, 0x00, 0x17, 
41631
  0xDA, 0x8B, 0x85, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x8B, 0x86, 0xBF, 0xFF, 0x00, 0x18, 0xDA, 0x8B, 
41632
  0x87, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x8B, 0x88, 0x00, 0x05, 0x00, 0xDA, 0x82, 0x3B, 0x00, 0x05, 
41633
  0x01, 0xDA, 0x80, 0xC0, 0x00, 0x05, 0x02, 0xDA, 0x82, 0x2A, 0x2B, 0x03, 0x00, 0x11, 0x29, 0x04, 
41634
  0x00, 0x10, 0x31, 0x03, 0x04, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x34, 0x03, 0x00, 0x00, 0xBF, 0xFF, 
41635
  0x8B, 0x50, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0xCD, 0x02, 0xFE, 0x00, 0x00, 
41636
  0x08, 0x02, 0x00, 0x02, 0x07, 0x21, 0x01, 0x01, 0x16, 0xCE, 0x02, 0x62, 0x70, 0xDA, 0x18, 0xDA, 
41637
  0x82, 0x0D, 0xDA, 0x8A, 0x1C, 0xDA, 0x82, 0x16, 0xDA, 0x80, 0xC5, 0xDA, 0x81, 0x5D, 0xDA, 0x81, 
41638
  0x5E, 0xDA, 0x81, 0xFC, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 0xF9, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 
41639
  0x82, 0x26, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x82, 0x2B, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x82, 0x4B, 
41640
  0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x82, 0x2E, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x7F, 0xBF, 0xFF, 
41641
  0x00, 0x0F, 0xDA, 0x80, 0xBA, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8B, 0x82, 0xBF, 0xFF, 0x00, 0x01, 
41642
  0xDA, 0x8B, 0x76, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x8B, 0x83, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x80, 
41643
  0xFB, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x8B, 0x84, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x80, 0xBA, 0xBF, 
41644
  0xFF, 0x00, 0x17, 0xDA, 0x8B, 0x85, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x8B, 0x86, 0xBF, 0xFF, 0x00, 
41645
  0x18, 0xDA, 0x8B, 0x87, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x8B, 0x88, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 
41646
  0x82, 0x2A, 0x00, 0x21, 0x00, 0xDA, 0x1E, 0x00, 0x21, 0x01, 0xDA, 0x83, 0x92, 0x00, 0x21, 0x02, 
41647
  0xDA, 0x8B, 0x89, 0x11, 0x21, 0x04, 0xDA, 0x82, 0x3B, 0x2B, 0x03, 0x00, 0x10, 0x1C, 0x03, 0x09, 
41648
  0x00, 0x30, 0x00, 0x01, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 0x29, 0x03, 0x01, 
41649
  0x00, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x33, 0x03, 0x04, 0x00, 0x1A, 0x01, 0x00, 
41650
  0x00, 0x2B, 0x03, 0x00, 0x15, 0x2A, 0x04, 0x02, 0x00, 0x27, 0x05, 0x00, 0x00, 0x3A, 0x03, 0x04, 
41651
  0x05, 0x2A, 0x03, 0x03, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x3F, 0x03, 0x00, 0x00, 0x19, 0x04, 0x03, 
41652
  0x00, 0x2E, 0x05, 0x00, 0x00, 0x2A, 0x06, 0x04, 0x00, 0x30, 0x05, 0x06, 0x00, 0x2A, 0x07, 0x05, 
41653
  0x00, 0x33, 0x06, 0x07, 0x00, 0x26, 0x07, 0x00, 0x00, 0x35, 0x05, 0x06, 0x07, 0x29, 0x06, 0x00, 
41654
  0x00, 0x29, 0x07, 0xFE, 0xFF, 0x31, 0x04, 0x06, 0x07, 0x2A, 0x07, 0x06, 0x00, 0x33, 0x06, 0x07, 
41655
  0x00, 0x2D, 0x06, 0x00, 0x18, 0x2B, 0x07, 0x00, 0x18, 0x03, 0x07, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 
41656
  0x00, 0xD4, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x0F, 0x01, 0x04, 0xDA, 0x18, 0xDA, 0x89, 
41657
  0xA3, 0xDA, 0x81, 0x60, 0xDA, 0x81, 0x5F, 0xDA, 0x82, 0x0D, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 
41658
  0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x92, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8B, 0x89, 0xBF, 0xFF, 
41659
  0x00, 0x04, 0xDA, 0x82, 0x3B, 0x2A, 0x00, 0x00, 0x00, 0x2B, 0x01, 0x00, 0x04, 0x30, 0x00, 0x01, 
41660
  0x00, 0x2A, 0x01, 0x01, 0x00, 0x33, 0x00, 0x01, 0x00, 0x2A, 0x01, 0x02, 0x00, 0x28, 0x02, 0x00, 
41661
  0x00, 0x30, 0x01, 0x02, 0x00, 0x2A, 0x02, 0x01, 0x00, 0x33, 0x01, 0x02, 0x00, 0x2B, 0x02, 0x00, 
41662
  0x00, 0x2B, 0x03, 0x00, 0x01, 0x30, 0x02, 0x03, 0x00, 0x2A, 0x02, 0x03, 0x00, 0x34, 0x02, 0x00, 
41663
  0x00, 0xBF, 0xFF, 0x8B, 0x57, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
41664
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
41665
  0x00, 0x07, 0x8B, 0x52, 0x05, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 
41666
  0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFE, 0x05, 0x03, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
41667
  0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
41668
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x02, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 
41669
  0x00, 0x15, 0x00, 0x05, 0x00, 0x05, 0x13, 0x00, 0x00, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x0B, 
41670
  0x05, 0x00, 0x05, 0x07, 0x23, 0x01, 0x01, 0x1A, 0xCE, 0x02, 0x62, 0x63, 0xDA, 0x18, 0xDA, 0x81, 
41671
  0xE4, 0xDA, 0x8A, 0x1C, 0xDA, 0x82, 0x16, 0xDA, 0x80, 0xC5, 0xDA, 0x81, 0x5D, 0xDA, 0x81, 0x5E, 
41672
  0xDA, 0x81, 0xFC, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 0xF9, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x82, 
41673
  0x26, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x82, 0x2B, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x82, 0x4B, 0xBF, 
41674
  0xFF, 0x00, 0x0D, 0xDA, 0x82, 0x2E, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x7F, 0xBF, 0xFF, 0x00, 
41675
  0x0F, 0xDA, 0x80, 0xBA, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8B, 0x82, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
41676
  0x8B, 0x76, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x8B, 0x83, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x80, 0xFB, 
41677
  0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x8B, 0x84, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x80, 0xBA, 0xBF, 0xFF, 
41678
  0x00, 0x17, 0xDA, 0x8B, 0x85, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x8B, 0x86, 0xBF, 0xFF, 0x00, 0x18, 
41679
  0xDA, 0x8B, 0x87, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x8B, 0x88, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x82, 
41680
  0x2A, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x8B, 0x89, 0x00, 0x23, 0x00, 0xDA, 0x1E, 0x00, 0x23, 0x01, 
41681
  0xDA, 0x83, 0x92, 0x00, 0x23, 0x02, 0xCF, 0x01, 0x7A, 0x00, 0x23, 0x03, 0xDA, 0x88, 0x33, 0x00, 
41682
  0x23, 0x04, 0xDA, 0x83, 0xCB, 0x00, 0x23, 0x05, 0xDA, 0x8B, 0x8A, 0x12, 0x23, 0x07, 0xDA, 0x82, 
41683
  0x3B, 0x2B, 0x06, 0x00, 0x10, 0x1C, 0x06, 0x0A, 0x00, 0x31, 0x00, 0x01, 0x02, 0x30, 0x03, 0x04, 
41684
  0x00, 0x2A, 0x07, 0x00, 0x00, 0x33, 0x06, 0x07, 0x00, 0x29, 0x06, 0x01, 0x00, 0x2F, 0x06, 0x00, 
41685
  0x00, 0x2A, 0x07, 0x01, 0x00, 0x33, 0x06, 0x07, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x2B, 0x06, 0x00, 
41686
  0x15, 0x2A, 0x07, 0x02, 0x00, 0x27, 0x08, 0x00, 0x00, 0x3A, 0x06, 0x07, 0x08, 0x2A, 0x06, 0x03, 
41687
  0x00, 0x2F, 0x06, 0x00, 0x00, 0x3F, 0x06, 0x00, 0x00, 0x19, 0x07, 0x06, 0x00, 0x2E, 0x08, 0x00, 
41688
  0x00, 0x2A, 0x09, 0x04, 0x00, 0x30, 0x08, 0x09, 0x00, 0x2A, 0x0A, 0x05, 0x00, 0x33, 0x09, 0x0A, 
41689
  0x00, 0x26, 0x0A, 0x00, 0x00, 0x35, 0x08, 0x09, 0x0A, 0x29, 0x09, 0x00, 0x00, 0x29, 0x0A, 0xFE, 
41690
  0xFF, 0x31, 0x07, 0x09, 0x0A, 0x2A, 0x0A, 0x06, 0x00, 0x33, 0x09, 0x0A, 0x00, 0x2D, 0x09, 0x00, 
41691
  0x18, 0x2D, 0x01, 0x00, 0x19, 0x2B, 0x0A, 0x00, 0x19, 0x03, 0x0A, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 
41692
  0x00, 0xD4, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x13, 0x01, 0x07, 0xDA, 0x18, 0xDA, 0x89, 
41693
  0xA3, 0xDA, 0x81, 0x60, 0xDA, 0x81, 0x5F, 0xDA, 0x81, 0xE4, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 
41694
  0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x92, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8B, 0x90, 0xBF, 0xFF, 
41695
  0x00, 0x03, 0xDA, 0x88, 0x33, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x83, 0xCB, 0xBF, 0xFF, 0x00, 0x05, 
41696
  0xDA, 0x8B, 0x8A, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x82, 0x3B, 0x2A, 0x00, 0x00, 0x00, 0x2B, 0x01, 
41697
  0x00, 0x07, 0x30, 0x00, 0x01, 0x00, 0x2A, 0x01, 0x01, 0x00, 0x33, 0x00, 0x01, 0x00, 0x2A, 0x01, 
41698
  0x02, 0x00, 0x28, 0x02, 0x00, 0x00, 0x30, 0x01, 0x02, 0x00, 0x2A, 0x02, 0x01, 0x00, 0x33, 0x01, 
41699
  0x02, 0x00, 0x2B, 0x02, 0x00, 0x00, 0x26, 0x03, 0x00, 0x00, 0x2B, 0x04, 0x00, 0x02, 0x31, 0x02, 
41700
  0x03, 0x04, 0x2B, 0x02, 0x00, 0x03, 0x2B, 0x03, 0x00, 0x04, 0x30, 0x02, 0x03, 0x00, 0x2A, 0x02, 
41701
  0x03, 0x00, 0x34, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x8B, 0x60, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
41702
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x07, 0x00, 
41703
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x8B, 
41704
  0x5B, 0x05, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 
41705
  0x00, 0x07, 0x00, 0x07, 0xBF, 0xFE, 0x05, 0x03, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 
41706
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
41707
  0x05, 0x00, 0x05, 0x00, 0x05, 0x02, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 
41708
  0x15, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x9D, 0x00, 0x00, 0x00, 0xCD, 0x00, 0xD4, 0x00, 0x00, 
41709
  0x07, 0x02, 0x02, 0x02, 0x09, 0x26, 0x01, 0x16, 0xDA, 0x18, 0xDA, 0x80, 0xBE, 0xDA, 0x80, 0xBF, 
41710
  0xDA, 0x80, 0xC5, 0xDA, 0x80, 0xC6, 0xDA, 0x80, 0xC7, 0xDA, 0x8A, 0x1C, 0xDA, 0x80, 0xC8, 0xDA, 
41711
  0x80, 0xB8, 0xDA, 0x82, 0x16, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 0xF9, 0xBF, 0xFF, 0x00, 0x0A, 
41712
  0xDA, 0x82, 0x26, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x82, 0x2B, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x82, 
41713
  0x4B, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x82, 0x2E, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x7F, 0xBF, 
41714
  0xFF, 0x00, 0x0F, 0xDA, 0x80, 0xBA, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8B, 0x82, 0xBF, 0xFF, 0x00, 
41715
  0x01, 0xDA, 0x8B, 0x76, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x8B, 0x83, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 
41716
  0x80, 0xFB, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x8B, 0x84, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x80, 0xBA, 
41717
  0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x8B, 0x85, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x8B, 0x86, 0xBF, 0xFF, 
41718
  0x00, 0x18, 0xDA, 0x8B, 0x87, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x8B, 0x88, 0xBF, 0xFF, 0x00, 0x1B, 
41719
  0xDA, 0x82, 0x2A, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x8B, 0x89, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x8B, 
41720
  0x8A, 0x00, 0x26, 0x00, 0xDA, 0x80, 0xFB, 0x00, 0x26, 0x01, 0xDA, 0x1E, 0x2F, 0x00, 0x00, 0x00, 
41721
  0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x48, 0x03, 0x02, 0x04, 
41722
  0x1C, 0x03, 0x20, 0x00, 0x2B, 0x02, 0x00, 0x10, 0x1C, 0x02, 0x0C, 0x00, 0x2A, 0x02, 0x02, 0x00, 
41723
  0x31, 0x00, 0x01, 0x02, 0x2A, 0x04, 0x03, 0x00, 0x33, 0x02, 0x04, 0x00, 0x2A, 0x04, 0x04, 0x00, 
41724
  0x33, 0x02, 0x04, 0x00, 0x29, 0x02, 0x01, 0x00, 0x2F, 0x02, 0x00, 0x00, 0x2A, 0x04, 0x05, 0x00, 
41725
  0x33, 0x02, 0x04, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x2B, 0x04, 0x00, 0x15, 0x2A, 0x05, 0x06, 0x00, 
41726
  0x39, 0x02, 0x04, 0x05, 0x1C, 0x02, 0x07, 0x00, 0x2B, 0x04, 0x00, 0x15, 0x2F, 0x04, 0x00, 0x00, 
41727
  0x2A, 0x05, 0x07, 0x00, 0x33, 0x04, 0x05, 0x00, 0x30, 0x00, 0x01, 0x00, 0x34, 0x04, 0x00, 0x00, 
41728
  0x2B, 0x04, 0x00, 0x15, 0x2A, 0x05, 0x08, 0x00, 0x27, 0x06, 0x00, 0x00, 0x3A, 0x04, 0x05, 0x06, 
41729
  0x2D, 0x01, 0x00, 0x18, 0x2D, 0x00, 0x00, 0x19, 0x2B, 0x04, 0x00, 0x19, 0x03, 0x04, 0x00, 0x00, 
41730
  0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8B, 0x6C, 0x2C, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x26, 0x00, 
41731
  0x26, 0x00, 0x20, 0x01, 0x22, 0x00, 0x22, 0x01, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x01, 
41732
  0x24, 0x00, 0x24, 0x01, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0xBF, 0xFD, 0x22, 0x04, 0x26, 
41733
  0x00, 0x26, 0x00, 0x26, 0x00, 0x22, 0x01, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x24, 
41734
  0x00, 0x24, 0x02, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x01, 0x26, 0x01, 0x26, 0x00, 0x26, 
41735
  0x00, 0x26, 0xBF, 0xF6, 0x20, 0x8B, 0x40, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 
41736
  0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 
41737
  0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 
41738
  0x00, 0x01, 0x06, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 
41739
  0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x03, 0x0C, 
41740
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFD, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x04, 0x15, 0x00, 
41741
  0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x10, 0x00, 0x10, 0x00, 0x03, 0x00, 0x03, 0x00, 
41742
  0x03, 0x00, 0x03, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x14, 0x00, 0x14, 0x00, 
41743
  0x14, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x14, 0x00, 0x03, 0x00, 0x03, 0x01, 
41744
  0x03, 0x01, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x09, 0x03, 0x00, 0x03, 0x0A, 
41745
  0x03, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x06, 0x1E, 0x10, 
41746
  0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x1B, 0xBF, 
41747
  0xEC, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
41748
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
41749
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x16, 0x03, 0x00, 
41750
  0x03, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x01, 0x03, 0x01, 0x05, 0x01, 0x07, 0xBF, 0xFF, 0x05, 
41751
  0x02, 0x07, 0xBF, 0xFD, 0x03, 0xBF, 0xC3, 0x01, 0x00, 0x00, 0x23, 0x03, 0x00, 0x00, 0x00, 0x00, 
41752
  0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 0xF9, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8B, 0x49, 0xBF, 0xFF, 
41753
  0x00, 0x02, 0xDA, 0x8B, 0x45, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x8B, 0x4A, 0x2B, 0x00, 0x00, 0x01, 
41754
  0x2F, 0x00, 0x00, 0x00, 0x2A, 0x01, 0x00, 0x00, 0x33, 0x00, 0x01, 0x00, 0x2B, 0x01, 0x00, 0x00, 
41755
  0x2A, 0x02, 0x01, 0x00, 0x2A, 0x03, 0x02, 0x00, 0x31, 0x01, 0x02, 0x03, 0x32, 0x00, 0x00, 0x00, 
41756
  0x2A, 0x01, 0x03, 0x00, 0x34, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0x8F, 0x07, 0x31, 0x00, 0x31, 0x00, 
41757
  0x31, 0x00, 0x31, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
41758
  0x05, 0x8F, 0x04, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 
41759
  0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41760
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41761
  0x00, 0x03, 0x03, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFD, 0x03, 0x04, 0x03, 0x00, 
41762
  0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xF3, 0x01, 
41763
  0x03, 0x00, 0x00, 0x00, 0xCF, 0x0C, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x74, 0x72, 0x69, 
41764
  0x6D, 0x6C, 0xD8, 0x0C, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0x6C, 
41765
  0xCF, 0x06, 0x2A, 0x65, 0x78, 0x69, 0x74, 0x2A, 0xDA, 0x82, 0x16, 0xCF, 0x0C, 0x73, 0x74, 0x72, 
41766
  0x69, 0x6E, 0x67, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0x72, 0xD8, 0x0C, 0x73, 0x74, 0x72, 0x69, 0x6E, 
41767
  0x67, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0x72, 0xDA, 0x85, 0x92, 0xDA, 0x81, 0x60, 0xCF, 0x0B, 0x61, 
41768
  0x72, 0x72, 0x61, 0x79, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xDA, 0x82, 0xE5, 0xCF, 0x05, 0x65, 
41769
  0x76, 0x2F, 0x67, 0x6F, 0xDA, 0x83, 0x1F, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x6F, 
41770
  0x75, 0x6E, 0x64, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0xCF, 
41771
  0x05, 0x66, 0x6C, 0x75, 0x73, 0x68, 0xDA, 0x80, 0xC4, 0xCF, 0x05, 0x73, 0x74, 0x64, 0x69, 0x6E, 
41772
  0xD8, 0x05, 0x73, 0x74, 0x64, 0x69, 0x6E, 0xCF, 0x12, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 
41773
  0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 0xDA, 0x83, 0xBC, 0xCF, 0x0A, 
41774
  0x66, 0x66, 0x69, 0x2F, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0xD8, 0x0A, 0x66, 0x66, 0x69, 0x2F, 
41775
  0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x74, 0x61, 
41776
  0x6E, 0x32, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x74, 0x61, 0x6E, 0x32, 0xCF, 0x0C, 
41777
  0x69, 0x6E, 0x74, 0x2F, 0x74, 0x6F, 0x2D, 0x62, 0x79, 0x74, 0x65, 0x73, 0xD8, 0x0C, 0x69, 0x6E, 
41778
  0x74, 0x2F, 0x74, 0x6F, 0x2D, 0x62, 0x79, 0x74, 0x65, 0x73, 0xDA, 0x8A, 0x25, 0xDA, 0x8A, 0x23, 
41779
  0xCF, 0x0C, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x70, 0x61, 0x74, 0x68, 0x73, 0xDA, 0x87, 
41780
  0x20, 0xCF, 0x0C, 0x65, 0x76, 0x2F, 0x61, 0x6C, 0x6C, 0x2D, 0x74, 0x61, 0x73, 0x6B, 0x73, 0xD8, 
41781
  0x0C, 0x65, 0x76, 0x2F, 0x61, 0x6C, 0x6C, 0x2D, 0x74, 0x61, 0x73, 0x6B, 0x73, 0xCF, 0x05, 0x70, 
41782
  0x61, 0x72, 0x73, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x01, 0x01, 0x01, 0x09, 
41783
  0x29, 0x00, 0x03, 0xCE, 0x05, 0x70, 0x61, 0x72, 0x73, 0x65, 0xDA, 0x18, 0xDA, 0x82, 0x18, 0xDA, 
41784
  0x84, 0xB0, 0xDA, 0x85, 0xA8, 0xDA, 0x82, 0x10, 0xDA, 0x85, 0xA9, 0xDA, 0x85, 0x42, 0xDA, 0x85, 
41785
  0xAA, 0xDA, 0x85, 0xAB, 0xCE, 0x08, 0x6E, 0x6F, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x00, 0x29, 
41786
  0x00, 0xDA, 0x83, 0x61, 0x00, 0x29, 0x01, 0xDA, 0x8B, 0xA7, 0x02, 0x29, 0x03, 0xDA, 0x64, 0x2A, 
41787
  0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x19, 0x03, 0x02, 0x00, 0x30, 0x03, 0x00, 0x00, 0x2A, 
41788
  0x04, 0x01, 0x00, 0x33, 0x02, 0x04, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x04, 0x02, 0x00, 0x33, 
41789
  0x02, 0x04, 0x00, 0x2A, 0x05, 0x03, 0x00, 0x23, 0x04, 0x05, 0x02, 0x1C, 0x04, 0x06, 0x00, 0x2F, 
41790
  0x03, 0x00, 0x00, 0x2A, 0x05, 0x04, 0x00, 0x33, 0x02, 0x05, 0x00, 0x01, 0x02, 0x00, 0x00, 0x1A, 
41791
  0x01, 0x00, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x04, 0x05, 0x00, 0x33, 0x02, 0x04, 0x00, 0x2F, 
41792
  0x03, 0x00, 0x00, 0x2A, 0x04, 0x06, 0x00, 0x33, 0x02, 0x04, 0x00, 0x1C, 0x02, 0x04, 0x00, 0x2F, 
41793
  0x03, 0x00, 0x00, 0x2A, 0x04, 0x07, 0x00, 0x34, 0x04, 0x00, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x2A, 
41794
  0x05, 0x02, 0x00, 0x33, 0x04, 0x05, 0x00, 0x2A, 0x06, 0x03, 0x00, 0x23, 0x05, 0x06, 0x04, 0x1C, 
41795
  0x05, 0x06, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x06, 0x04, 0x00, 0x33, 0x04, 0x06, 0x00, 0x01, 
41796
  0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2A, 0x04, 0x08, 0x00, 0x01, 0x04, 0x00, 0x00, 0x04, 
41797
  0x00, 0x00, 0x00, 0x8A, 0x48, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 
41798
  0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 
41799
  0x00, 0x0E, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x02, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x09, 0x00, 
41800
  0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x15, 0x00, 0x15, 0x00, 
41801
  0x15, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x09, 0x00, 
41802
  0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0xCF, 0x04, 0x66, 0x6F, 0x72, 0x76, 0xD7, 0x00, 0xCD, 
41803
  0x00, 0xDD, 0x00, 0x00, 0x08, 0x03, 0x03, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x03, 0x08, 0x00, 0x05, 
41804
  0xCE, 0x04, 0x66, 0x6F, 0x72, 0x76, 0xDA, 0x18, 0xDA, 0x83, 0xA5, 0xDA, 0x38, 0xDA, 0x89, 0xD7, 
41805
  0x00, 0x08, 0x00, 0xDA, 0x80, 0x90, 0x00, 0x08, 0x01, 0xDA, 0x83, 0xBE, 0x00, 0x08, 0x02, 0xDA, 
41806
  0x89, 0xD9, 0x00, 0x08, 0x03, 0xDA, 0x82, 0xB5, 0x00, 0x08, 0x04, 0xDA, 0x8B, 0xAB, 0x31, 0x00, 
41807
  0x01, 0x02, 0x29, 0x05, 0x01, 0x00, 0x2A, 0x06, 0x00, 0x00, 0x2A, 0x07, 0x01, 0x00, 0x31, 0x05, 
41808
  0x06, 0x07, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x05, 0x02, 0x00, 0x34, 0x05, 0x00, 0x00, 0x81, 0xF8, 
41809
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 
41810
  0x85, 0xAC, 0xDA, 0x85, 0xA6, 0xCF, 0x12, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x61, 0x73, 
41811
  0x63, 0x69, 0x69, 0x2D, 0x6C, 0x6F, 0x77, 0x65, 0x72, 0xD8, 0x12, 0x73, 0x74, 0x72, 0x69, 0x6E, 
41812
  0x67, 0x2F, 0x61, 0x73, 0x63, 0x69, 0x69, 0x2D, 0x6C, 0x6F, 0x77, 0x65, 0x72, 0xCF, 0x03, 0x6E, 
41813
  0x6F, 0x74, 0xDA, 0x80, 0x8D, 0xCF, 0x0A, 0x6F, 0x73, 0x2F, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 
41814
  0x6E, 0xD8, 0x0A, 0x6F, 0x73, 0x2F, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0xCF, 0x08, 0x65, 
41815
  0x76, 0x2F, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0xD8, 0x08, 0x65, 0x76, 0x2F, 0x63, 0x6F, 0x75, 0x6E, 
41816
  0x74, 0xDA, 0x87, 0x78, 0xDA, 0x87, 0x1E, 0xCF, 0x0A, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x77, 0x72, 
41817
  0x69, 0x74, 0x65, 0xDA, 0x86, 0x5A, 0xCF, 0x09, 0x66, 0x66, 0x69, 0x2F, 0x63, 0x6C, 0x6F, 0x73, 
41818
  0x65, 0xD8, 0x09, 0x66, 0x66, 0x69, 0x2F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0xCF, 0x0C, 0x6F, 0x73, 
41819
  0x2F, 0x70, 0x72, 0x6F, 0x63, 0x2D, 0x6B, 0x69, 0x6C, 0x6C, 0xD8, 0x0C, 0x6F, 0x73, 0x2F, 0x70, 
41820
  0x72, 0x6F, 0x63, 0x2D, 0x6B, 0x69, 0x6C, 0x6C, 0xCF, 0x05, 0x6C, 0x61, 0x62, 0x65, 0x6C, 0xD7, 
41821
  0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x07, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x04, 0x0C, 
41822
  0x00, 0x03, 0xCE, 0x05, 0x6C, 0x61, 0x62, 0x65, 0x6C, 0xDA, 0x18, 0xDA, 0x4A, 0xD6, 0x00, 0xDA, 
41823
  0x85, 0xEF, 0xDA, 0x50, 0x00, 0x0C, 0x00, 0xDA, 0x83, 0x0F, 0x00, 0x0C, 0x01, 0xDA, 0x82, 0xB5, 
41824
  0x00, 0x0C, 0x02, 0xDA, 0x8B, 0xBA, 0x2A, 0x04, 0x00, 0x00, 0x2A, 0x05, 0x01, 0x00, 0x31, 0x04, 
41825
  0x00, 0x05, 0x43, 0x03, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0x2A, 0x05, 
41826
  0x02, 0x00, 0x33, 0x04, 0x05, 0x00, 0x2A, 0x06, 0x03, 0x00, 0x31, 0x06, 0x03, 0x04, 0x43, 0x05, 
41827
  0x00, 0x00, 0x03, 0x05, 0x00, 0x00, 0x81, 0x71, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 
41828
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFE, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41829
  0xCF, 0x12, 0x65, 0x76, 0x2F, 0x67, 0x69, 0x76, 0x65, 0x2D, 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 
41830
  0x69, 0x73, 0x6F, 0x72, 0xD8, 0x12, 0x65, 0x76, 0x2F, 0x67, 0x69, 0x76, 0x65, 0x2D, 0x73, 0x75, 
41831
  0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6F, 0x72, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 
41832
  0x74, 0x61, 0x6E, 0x68, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x74, 0x61, 0x6E, 0x68, 
41833
  0xDA, 0x87, 0x6E, 0xDA, 0x87, 0x6C, 0xDA, 0x8A, 0xC0, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 
41834
  0x09, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x05, 0x16, 0x00, 0x04, 0xCE, 0x10, 0x65, 0x76, 
41835
  0x2F, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x64, 0x65, 0x61, 0x64, 0x6C, 0x69, 0x6E, 0x65, 0xDA, 0x18, 
41836
  0xDA, 0x49, 0xDA, 0x82, 0xFE, 0xDA, 0x8A, 0xA6, 0xDA, 0x82, 0xB0, 0xDA, 0x82, 0xB4, 0x00, 0x16, 
41837
  0x00, 0xCF, 0x08, 0x64, 0x65, 0x61, 0x64, 0x6C, 0x69, 0x6E, 0x65, 0x00, 0x16, 0x01, 0xDA, 0x82, 
41838
  0xB5, 0x00, 0x16, 0x02, 0xDA, 0x8A, 0xC0, 0x02, 0x16, 0x04, 0xDA, 0x80, 0xFB, 0x2A, 0x04, 0x00, 
41839
  0x00, 0x33, 0x03, 0x04, 0x00, 0x19, 0x04, 0x03, 0x00, 0x2A, 0x05, 0x01, 0x00, 0x2F, 0x05, 0x00, 
41840
  0x00, 0x32, 0x01, 0x00, 0x00, 0x43, 0x03, 0x00, 0x00, 0x30, 0x04, 0x03, 0x00, 0x44, 0x05, 0x00, 
41841
  0x00, 0x2A, 0x06, 0x02, 0x00, 0x26, 0x07, 0x00, 0x00, 0x31, 0x06, 0x00, 0x07, 0x2F, 0x04, 0x00, 
41842
  0x00, 0x43, 0x03, 0x00, 0x00, 0x2A, 0x07, 0x03, 0x00, 0x30, 0x07, 0x04, 0x00, 0x43, 0x06, 0x00, 
41843
  0x00, 0x2A, 0x08, 0x04, 0x00, 0x31, 0x08, 0x05, 0x03, 0x2F, 0x06, 0x00, 0x00, 0x43, 0x07, 0x00, 
41844
  0x00, 0x03, 0x07, 0x00, 0x00, 0x8E, 0x4D, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 
41845
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
41846
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
41847
  0x00, 0x07, 0xDA, 0x86, 0x0F, 0xDA, 0x80, 0x8F, 0xCF, 0x07, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 
41848
  0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x00, 0x05, 0x00, 0x02, 
41849
  0xCE, 0x07, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x3F, 0xDA, 0x18, 0x00, 0x05, 0x00, 0xDA, 0x1E, 
41850
  0x00, 0x05, 0x01, 0xDA, 0x8B, 0xC5, 0x1C, 0x00, 0x03, 0x00, 0x27, 0x02, 0x00, 0x00, 0x03, 0x02, 
41851
  0x00, 0x00, 0x28, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x7B, 0x2B, 0x00, 0x2B, 0x00, 0x2B, 
41852
  0x00, 0x2B, 0x00, 0x2B, 0xCF, 0x0A, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x66, 0x6C, 0x75, 0x73, 0x68, 
41853
  0xD8, 0x0A, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x66, 0x6C, 0x75, 0x73, 0x68, 0xCF, 0x07, 0x65, 0x76, 
41854
  0x2F, 0x6C, 0x6F, 0x63, 0x6B, 0xD8, 0x07, 0x65, 0x76, 0x2F, 0x6C, 0x6F, 0x63, 0x6B, 0xDA, 0x89, 
41855
  0x51, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x1A, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
41856
  0x01, 0x80, 0xF4, 0x00, 0x3B, 0xCE, 0x04, 0x73, 0x6F, 0x6D, 0x65, 0xDA, 0x18, 0xDA, 0x81, 0x8D, 
41857
  0x00, 0x80, 0xF4, 0x00, 0xDA, 0x83, 0x2E, 0x00, 0x80, 0xF4, 0x01, 0xDA, 0x1F, 0x00, 0x80, 0xF4, 
41858
  0x02, 0xDA, 0x81, 0x8E, 0x00, 0x80, 0xF4, 0x03, 0xDA, 0x89, 0x51, 0x00, 0x80, 0xF4, 0x04, 0xDA, 
41859
  0x81, 0x08, 0x02, 0x80, 0xF3, 0x06, 0xDA, 0x81, 0x90, 0x02, 0x80, 0xF3, 0x06, 0xCF, 0x07, 0x5F, 
41860
  0x30, 0x30, 0x30, 0x30, 0x33, 0x56, 0x04, 0x14, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
41861
  0x33, 0x58, 0x07, 0x14, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x57, 0x0A, 0x14, 
41862
  0x09, 0xDA, 0x1E, 0x0D, 0x12, 0x0A, 0xDA, 0x83, 0x92, 0x18, 0x30, 0x09, 0xDA, 0x81, 0x94, 0x19, 
41863
  0x30, 0x08, 0xDA, 0x81, 0x95, 0x19, 0x30, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 
41864
  0x5A, 0x1C, 0x30, 0x0B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x59, 0x1F, 0x30, 0x0C, 
41865
  0xDA, 0x1E, 0x29, 0x2E, 0x0A, 0xDA, 0x83, 0x92, 0x34, 0x56, 0x0A, 0xDA, 0x81, 0x94, 0x36, 0x56, 
41866
  0x0B, 0xDA, 0x81, 0x98, 0x37, 0x56, 0x09, 0xDA, 0x81, 0x95, 0x38, 0x56, 0x0C, 0xDA, 0x81, 0x99, 
41867
  0x38, 0x56, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x31, 0x3B, 0x56, 0x0E, 0xCF, 
41868
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x30, 0x3E, 0x56, 0x0F, 0xDA, 0x1E, 0x4F, 0x54, 0x0D, 
41869
  0xDA, 0x83, 0x92, 0x5A, 0x80, 0x87, 0x0B, 0xDA, 0x81, 0x94, 0x5C, 0x80, 0x87, 0x0C, 0xDA, 0x81, 
41870
  0x98, 0x5E, 0x80, 0x87, 0x0D, 0xDA, 0x81, 0x9C, 0x5F, 0x80, 0x87, 0x0A, 0xDA, 0x81, 0x95, 0x60, 
41871
  0x80, 0x87, 0x0E, 0xDA, 0x81, 0x99, 0x61, 0x80, 0x87, 0x0F, 0xDA, 0x81, 0x9D, 0x61, 0x80, 0x87, 
41872
  0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x33, 0x64, 0x80, 0x87, 0x11, 0xCF, 0x07, 
41873
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x32, 0x67, 0x80, 0x87, 0x12, 0xDA, 0x1E, 0x80, 0x80, 0x80, 
41874
  0x85, 0x10, 0xDA, 0x83, 0x92, 0x80, 0x8B, 0x80, 0xC2, 0x0C, 0xDA, 0x81, 0x94, 0x80, 0x8D, 0x80, 
41875
  0xC2, 0x0D, 0xDA, 0x81, 0x98, 0x80, 0x8F, 0x80, 0xC2, 0x0E, 0xDA, 0x81, 0x9C, 0x80, 0x91, 0x80, 
41876
  0xC2, 0x0F, 0xDA, 0x81, 0xA0, 0x80, 0x92, 0x80, 0xC2, 0x0B, 0xDA, 0x81, 0x95, 0x80, 0x93, 0x80, 
41877
  0xC2, 0x10, 0xDA, 0x81, 0x99, 0x80, 0x94, 0x80, 0xC2, 0x11, 0xDA, 0x81, 0x9D, 0x80, 0x95, 0x80, 
41878
  0xC2, 0x12, 0xDA, 0x81, 0xA1, 0x80, 0x95, 0x80, 0xC2, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
41879
  0x30, 0x34, 0x35, 0x80, 0x98, 0x80, 0xC2, 0x14, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 
41880
  0x34, 0x80, 0x9B, 0x80, 0xC2, 0x15, 0xDA, 0x1E, 0x80, 0xBB, 0x80, 0xC0, 0x13, 0xDA, 0x83, 0x92, 
41881
  0x80, 0xC6, 0x80, 0xF3, 0x0C, 0xDA, 0x81, 0xA4, 0x80, 0xCA, 0x80, 0xF3, 0x0D, 0xDA, 0x81, 0xA5, 
41882
  0x80, 0xCB, 0x80, 0xF3, 0x0B, 0xDA, 0x81, 0xA6, 0x80, 0xCB, 0x80, 0xF3, 0x01, 0xCF, 0x07, 0x5F, 
41883
  0x30, 0x30, 0x30, 0x30, 0x34, 0x37, 0x80, 0xCE, 0x80, 0xF3, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
41884
  0x30, 0x30, 0x34, 0x36, 0x80, 0xD1, 0x80, 0xF3, 0x10, 0xDA, 0x1E, 0x80, 0xD2, 0x80, 0xE6, 0x0E, 
41885
  0xDA, 0x80, 0x90, 0x80, 0xD2, 0x80, 0xE6, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 
41886
  0x38, 0x80, 0xD6, 0x80, 0xE4, 0x13, 0xDA, 0x81, 0xAA, 0x80, 0xD8, 0x80, 0xE4, 0x14, 0xDA, 0x81, 
41887
  0xAB, 0x80, 0xDA, 0x80, 0xE4, 0x15, 0xDA, 0x81, 0xAC, 0x80, 0xEC, 0x80, 0xF1, 0x11, 0xDA, 0x83, 
41888
  0x92, 0x26, 0x04, 0x00, 0x00, 0x3D, 0x05, 0x02, 0x00, 0x19, 0x06, 0x05, 0x00, 0x24, 0x05, 0x06, 
41889
  0x00, 0x1C, 0x05, 0x11, 0x00, 0x26, 0x08, 0x00, 0x00, 0x47, 0x07, 0x01, 0x08, 0x19, 0x08, 0x07, 
41890
  0x00, 0x1D, 0x08, 0x0C, 0x00, 0x38, 0x07, 0x01, 0x08, 0x19, 0x09, 0x07, 0x00, 0x2F, 0x09, 0x00, 
41891
  0x00, 0x33, 0x07, 0x00, 0x00, 0x19, 0x0A, 0x07, 0x00, 0x1C, 0x07, 0x04, 0x00, 0x19, 0x04, 0x0A, 
41892
  0x00, 0x1A, 0x04, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x08, 0x01, 0x08, 0x1A, 0xF5, 0xFF, 
41893
  0xFF, 0x1A, 0xDF, 0x00, 0x00, 0x24, 0x07, 0x06, 0x01, 0x1C, 0x07, 0x1B, 0x00, 0x3B, 0x08, 0x02, 
41894
  0x00, 0x19, 0x09, 0x08, 0x00, 0x26, 0x08, 0x00, 0x00, 0x26, 0x0B, 0x00, 0x00, 0x47, 0x0A, 0x01, 
41895
  0x0B, 0x19, 0x0B, 0x0A, 0x00, 0x1D, 0x0B, 0x13, 0x00, 0x38, 0x0A, 0x01, 0x0B, 0x19, 0x0C, 0x0A, 
41896
  0x00, 0x47, 0x08, 0x09, 0x08, 0x26, 0x0D, 0x00, 0x00, 0x23, 0x0A, 0x0D, 0x08, 0x1C, 0x0A, 0x03, 
41897
  0x00, 0x1A, 0x0C, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x38, 0x0A, 0x09, 0x08, 0x30, 0x0C, 0x0A, 
41898
  0x00, 0x33, 0x0D, 0x00, 0x00, 0x19, 0x0A, 0x0D, 0x00, 0x1C, 0x0D, 0x04, 0x00, 0x19, 0x04, 0x0A, 
41899
  0x00, 0x1A, 0x04, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x0B, 0x01, 0x0B, 0x1A, 0xEE, 0xFF, 
41900
  0xFF, 0x1A, 0xC3, 0x00, 0x00, 0x24, 0x08, 0x06, 0x02, 0x1C, 0x08, 0x25, 0x00, 0x3B, 0x09, 0x02, 
41901
  0x00, 0x19, 0x0A, 0x09, 0x00, 0x3B, 0x09, 0x02, 0x01, 0x19, 0x0B, 0x09, 0x00, 0x26, 0x09, 0x00, 
41902
  0x00, 0x26, 0x0C, 0x00, 0x00, 0x26, 0x0E, 0x00, 0x00, 0x47, 0x0D, 0x01, 0x0E, 0x19, 0x0E, 0x0D, 
41903
  0x00, 0x1D, 0x0E, 0x1A, 0x00, 0x38, 0x0D, 0x01, 0x0E, 0x19, 0x0F, 0x0D, 0x00, 0x47, 0x09, 0x0A, 
41904
  0x09, 0x26, 0x10, 0x00, 0x00, 0x23, 0x0D, 0x10, 0x09, 0x1C, 0x0D, 0x03, 0x00, 0x1A, 0x13, 0x00, 
41905
  0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x0C, 0x0B, 0x0C, 0x26, 0x10, 0x00, 0x00, 0x23, 0x0D, 0x10, 
41906
  0x0C, 0x1C, 0x0D, 0x03, 0x00, 0x1A, 0x0D, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x38, 0x0D, 0x0A, 
41907
  0x09, 0x38, 0x10, 0x0B, 0x0C, 0x31, 0x0F, 0x0D, 0x10, 0x33, 0x11, 0x00, 0x00, 0x19, 0x0D, 0x11, 
41908
  0x00, 0x1C, 0x11, 0x04, 0x00, 0x19, 0x04, 0x0D, 0x00, 0x1A, 0x04, 0x00, 0x00, 0x1A, 0x01, 0x00, 
41909
  0x00, 0x47, 0x0E, 0x01, 0x0E, 0x1A, 0xE7, 0xFF, 0xFF, 0x1A, 0x9D, 0x00, 0x00, 0x24, 0x09, 0x06, 
41910
  0x03, 0x1C, 0x09, 0x30, 0x00, 0x3B, 0x0A, 0x02, 0x00, 0x19, 0x0B, 0x0A, 0x00, 0x3B, 0x0A, 0x02, 
41911
  0x01, 0x19, 0x0C, 0x0A, 0x00, 0x3B, 0x0A, 0x02, 0x02, 0x19, 0x0D, 0x0A, 0x00, 0x26, 0x0A, 0x00, 
41912
  0x00, 0x26, 0x0E, 0x00, 0x00, 0x26, 0x0F, 0x00, 0x00, 0x26, 0x11, 0x00, 0x00, 0x47, 0x10, 0x01, 
41913
  0x11, 0x19, 0x11, 0x10, 0x00, 0x1D, 0x11, 0x22, 0x00, 0x38, 0x10, 0x01, 0x11, 0x19, 0x12, 0x10, 
41914
  0x00, 0x47, 0x0A, 0x0B, 0x0A, 0x26, 0x13, 0x00, 0x00, 0x23, 0x10, 0x13, 0x0A, 0x1C, 0x10, 0x03, 
41915
  0x00, 0x1A, 0x1B, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x0E, 0x0C, 0x0E, 0x26, 0x13, 0x00, 
41916
  0x00, 0x23, 0x10, 0x13, 0x0E, 0x1C, 0x10, 0x03, 0x00, 0x1A, 0x15, 0x00, 0x00, 0x1A, 0x01, 0x00, 
41917
  0x00, 0x47, 0x0F, 0x0D, 0x0F, 0x26, 0x13, 0x00, 0x00, 0x23, 0x10, 0x13, 0x0F, 0x1C, 0x10, 0x03, 
41918
  0x00, 0x1A, 0x0F, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x38, 0x10, 0x0B, 0x0A, 0x38, 0x13, 0x0C, 
41919
  0x0E, 0x38, 0x14, 0x0D, 0x0F, 0x31, 0x12, 0x10, 0x13, 0x2F, 0x14, 0x00, 0x00, 0x33, 0x15, 0x00, 
41920
  0x00, 0x19, 0x10, 0x15, 0x00, 0x1C, 0x15, 0x04, 0x00, 0x19, 0x04, 0x10, 0x00, 0x1A, 0x04, 0x00, 
41921
  0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x11, 0x01, 0x11, 0x1A, 0xDF, 0xFF, 0xFF, 0x1A, 0x6C, 0x00, 
41922
  0x00, 0x24, 0x0A, 0x06, 0x04, 0x1C, 0x0A, 0x3A, 0x00, 0x3B, 0x0B, 0x02, 0x00, 0x19, 0x0C, 0x0B, 
41923
  0x00, 0x3B, 0x0B, 0x02, 0x01, 0x19, 0x0D, 0x0B, 0x00, 0x3B, 0x0B, 0x02, 0x02, 0x19, 0x0E, 0x0B, 
41924
  0x00, 0x3B, 0x0B, 0x02, 0x03, 0x19, 0x0F, 0x0B, 0x00, 0x26, 0x0B, 0x00, 0x00, 0x26, 0x10, 0x00, 
41925
  0x00, 0x26, 0x11, 0x00, 0x00, 0x26, 0x12, 0x00, 0x00, 0x26, 0x14, 0x00, 0x00, 0x47, 0x13, 0x01, 
41926
  0x14, 0x19, 0x14, 0x13, 0x00, 0x1D, 0x14, 0x29, 0x00, 0x38, 0x13, 0x01, 0x14, 0x19, 0x15, 0x13, 
41927
  0x00, 0x47, 0x0B, 0x0C, 0x0B, 0x26, 0x16, 0x00, 0x00, 0x23, 0x13, 0x16, 0x0B, 0x1C, 0x13, 0x03, 
41928
  0x00, 0x1A, 0x22, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x10, 0x0D, 0x10, 0x26, 0x16, 0x00, 
41929
  0x00, 0x23, 0x13, 0x16, 0x10, 0x1C, 0x13, 0x03, 0x00, 0x1A, 0x1C, 0x00, 0x00, 0x1A, 0x01, 0x00, 
41930
  0x00, 0x47, 0x11, 0x0E, 0x11, 0x26, 0x16, 0x00, 0x00, 0x23, 0x13, 0x16, 0x11, 0x1C, 0x13, 0x03, 
41931
  0x00, 0x1A, 0x16, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x12, 0x0F, 0x12, 0x26, 0x16, 0x00, 
41932
  0x00, 0x23, 0x13, 0x16, 0x12, 0x1C, 0x13, 0x03, 0x00, 0x1A, 0x10, 0x00, 0x00, 0x1A, 0x01, 0x00, 
41933
  0x00, 0x38, 0x13, 0x0C, 0x0B, 0x38, 0x16, 0x0D, 0x10, 0x38, 0x17, 0x0E, 0x11, 0x38, 0x18, 0x0F, 
41934
  0x12, 0x31, 0x15, 0x13, 0x16, 0x30, 0x17, 0x18, 0x00, 0x33, 0x19, 0x00, 0x00, 0x19, 0x13, 0x19, 
41935
  0x00, 0x1C, 0x19, 0x04, 0x00, 0x19, 0x04, 0x13, 0x00, 0x1A, 0x04, 0x00, 0x00, 0x1A, 0x01, 0x00, 
41936
  0x00, 0x47, 0x14, 0x01, 0x14, 0x1A, 0xD8, 0xFF, 0xFF, 0x1A, 0x31, 0x00, 0x00, 0x2F, 0x06, 0x00, 
41937
  0x00, 0x2A, 0x0C, 0x00, 0x00, 0x33, 0x0B, 0x0C, 0x00, 0x19, 0x0C, 0x0B, 0x00, 0x2F, 0x06, 0x00, 
41938
  0x00, 0x2A, 0x0D, 0x00, 0x00, 0x33, 0x0B, 0x0D, 0x00, 0x19, 0x0D, 0x0B, 0x00, 0x28, 0x0B, 0x00, 
41939
  0x00, 0x26, 0x0F, 0x00, 0x00, 0x47, 0x0E, 0x01, 0x0F, 0x19, 0x0F, 0x0E, 0x00, 0x1D, 0x0F, 0x24, 
41940
  0x00, 0x38, 0x0E, 0x01, 0x0F, 0x19, 0x10, 0x0E, 0x00, 0x29, 0x0E, 0x00, 0x00, 0x21, 0x11, 0x0E, 
41941
  0x06, 0x1C, 0x11, 0x12, 0x00, 0x38, 0x12, 0x0C, 0x0E, 0x19, 0x13, 0x12, 0x00, 0x38, 0x12, 0x02, 
41942
  0x0E, 0x19, 0x14, 0x12, 0x00, 0x47, 0x12, 0x14, 0x13, 0x19, 0x15, 0x12, 0x00, 0x26, 0x16, 0x00, 
41943
  0x00, 0x23, 0x12, 0x16, 0x15, 0x1C, 0x12, 0x04, 0x00, 0x27, 0x0B, 0x00, 0x00, 0x1A, 0x07, 0x00, 
41944
  0x00, 0x1A, 0x04, 0x00, 0x00, 0x3A, 0x0C, 0x0E, 0x15, 0x38, 0x16, 0x14, 0x15, 0x3A, 0x0D, 0x0E, 
41945
  0x16, 0x05, 0x0E, 0x0E, 0x01, 0x1A, 0xEE, 0xFF, 0xFF, 0x1C, 0x0B, 0x03, 0x00, 0x1A, 0x0C, 0x00, 
41946
  0x00, 0x1A, 0x01, 0x00, 0x00, 0x2F, 0x10, 0x00, 0x00, 0x32, 0x0D, 0x00, 0x00, 0x33, 0x0E, 0x00, 
41947
  0x00, 0x19, 0x11, 0x0E, 0x00, 0x1C, 0x0E, 0x04, 0x00, 0x19, 0x04, 0x11, 0x00, 0x1A, 0x04, 0x00, 
41948
  0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x0F, 0x01, 0x0F, 0x1A, 0xDD, 0xFF, 0xFF, 0x03, 0x04, 0x00, 
41949
  0x00, 0x88, 0x49, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41950
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41951
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41952
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41953
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41954
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41955
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41956
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41957
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41958
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41959
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41960
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41961
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41962
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41963
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41964
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41965
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41966
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41967
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41968
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41969
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41970
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41971
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41972
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41973
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41974
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41975
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41976
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41977
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41978
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41979
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFB, 0x01, 0xCF, 0x10, 0x66, 0x69, 0x62, 
41980
  0x65, 0x72, 0x2F, 0x6C, 0x61, 0x73, 0x74, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 0xDA, 0x80, 0xCE, 
41981
  0xCF, 0x0E, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x73, 0x65, 0x74, 0x70, 0x72, 0x6F, 0x74, 0x6F, 
41982
  0xDA, 0x80, 0xB4, 0xCF, 0x01, 0x25, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x1E, 0x02, 0x02, 0x02, 
41983
  0x02, 0x00, 0x02, 0xCE, 0x01, 0x25, 0x0D, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0xCF, 0x06, 
41984
  0x6D, 0x61, 0x78, 0x2D, 0x6F, 0x66, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 
41985
  0x01, 0x02, 0x04, 0x00, 0x02, 0xCE, 0x06, 0x6D, 0x61, 0x78, 0x2D, 0x6F, 0x66, 0xDA, 0x18, 0xDA, 
41986
  0x85, 0x3A, 0xDA, 0x83, 0xA7, 0x00, 0x04, 0x00, 0xDA, 0x80, 0xAB, 0x00, 0x04, 0x01, 0xDA, 0x8B, 
41987
  0xE1, 0x2A, 0x02, 0x00, 0x00, 0x30, 0x02, 0x00, 0x00, 0x2A, 0x02, 0x01, 0x00, 0x34, 0x02, 0x00, 
41988
  0x00, 0x82, 0xE6, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0xCF, 0x01, 0x2A, 0xD7, 0x00, 0xCD, 
41989
  0x00, 0x09, 0x00, 0x0B, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x13, 0xDA, 0x81, 
41990
  0x86, 0x3D, 0x01, 0x00, 0x00, 0x24, 0x02, 0x01, 0x00, 0x1C, 0x02, 0x03, 0x00, 0x29, 0x03, 0x01, 
41991
  0x00, 0x03, 0x03, 0x00, 0x00, 0x24, 0x02, 0x01, 0x01, 0x1C, 0x02, 0x05, 0x00, 0x29, 0x03, 0x01, 
41992
  0x00, 0x3B, 0x04, 0x00, 0x00, 0x09, 0x03, 0x03, 0x04, 0x03, 0x03, 0x00, 0x00, 0x3B, 0x03, 0x00, 
41993
  0x00, 0x29, 0x05, 0x01, 0x00, 0x38, 0x04, 0x00, 0x05, 0x09, 0x03, 0x03, 0x04, 0x05, 0x05, 0x05, 
41994
  0x01, 0x23, 0x02, 0x05, 0x01, 0x1C, 0x02, 0xFC, 0xFF, 0x03, 0x03, 0x00, 0x00, 0xCF, 0x01, 0x2B, 
41995
  0xDA, 0x38, 0xCF, 0x08, 0x6F, 0x73, 0x2F, 0x73, 0x6C, 0x65, 0x65, 0x70, 0xD8, 0x08, 0x6F, 0x73, 
41996
  0x2F, 0x73, 0x6C, 0x65, 0x65, 0x70, 0xCF, 0x01, 0x2D, 0xDA, 0x82, 0x95, 0xCF, 0x01, 0x2F, 0xDA, 
41997
  0x84, 0x36, 0xCF, 0x0B, 0x70, 0x65, 0x67, 0x2F, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0xD8, 
41998
  0x0B, 0x70, 0x65, 0x67, 0x2F, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0xDA, 0x8B, 0x55, 0xDA, 
41999
  0x8B, 0x53, 0xCF, 0x01, 0x3C, 0xDA, 0x83, 0xA5, 0xDA, 0x82, 0xD0, 0xDA, 0x85, 0xF2, 0xDA, 0x8A, 
42000
  0x97, 0xDA, 0x85, 0x3A, 0xCF, 0x06, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0xDA, 0x8A, 0x81, 0xCF, 
42001
  0x03, 0x63, 0x68, 0x72, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x01, 0x01, 0x01, 0x03, 
42002
  0x14, 0x00, 0x03, 0xCE, 0x03, 0x63, 0x68, 0x72, 0xDA, 0x18, 0xDA, 0x81, 0xEB, 0xCE, 0x23, 0x65, 
42003
  0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x6F, 
42004
  0x66, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x31, 0x2C, 0x20, 0x67, 0x6F, 0x74, 0x20, 
42005
  0x25, 0x76, 0xDA, 0x4C, 0x00, 0x14, 0x00, 0xDA, 0x81, 0xCF, 0x00, 0x14, 0x01, 0xDA, 0x8B, 0xEF, 
42006
  0x03, 0x0A, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x2F, 0x00, 0x00, 0x00, 
42007
  0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 0x19, 0x04, 0x03, 0x00, 0x1C, 0x03, 0x05, 0x00, 
42008
  0x3D, 0x05, 0x00, 0x00, 0x24, 0x06, 0x05, 0x01, 0x19, 0x02, 0x06, 0x00, 0x1A, 0x02, 0x00, 0x00, 
42009
  0x19, 0x02, 0x04, 0x00, 0x1C, 0x02, 0x02, 0x00, 0x1A, 0x06, 0x00, 0x00, 0x2A, 0x03, 0x01, 0x00, 
42010
  0x30, 0x03, 0x00, 0x00, 0x2A, 0x04, 0x02, 0x00, 0x33, 0x03, 0x04, 0x00, 0x01, 0x03, 0x00, 0x00, 
42011
  0x29, 0x02, 0x00, 0x00, 0x2F, 0x02, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x81, 0x69, 0x10, 0x00, 
42012
  0x10, 0x00, 0x10, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x1F, 0x00, 0x1C, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
42013
  0x0B, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 
42014
  0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0D, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x6C, 0x69, 0x6E, 
42015
  0x65, 0x61, 0x67, 0x65, 0xD8, 0x0D, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x6C, 0x69, 0x6E, 0x65, 
42016
  0x61, 0x67, 0x65, 0xCF, 0x07, 0x66, 0x6C, 0x61, 0x74, 0x74, 0x65, 0x6E, 0xD7, 0x00, 0xCD, 0x00, 
42017
  0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x01, 0x04, 0x00, 0x02, 0xCE, 0x07, 0x66, 0x6C, 0x61, 
42018
  0x74, 0x74, 0x65, 0x6E, 0xDA, 0x18, 0xDA, 0x89, 0xFA, 0x00, 0x04, 0x00, 0xDA, 0x82, 0x52, 0x00, 
42019
  0x04, 0x01, 0xDA, 0x8B, 0xF6, 0x3E, 0x02, 0x00, 0x00, 0x30, 0x02, 0x00, 0x00, 0x2A, 0x03, 0x00, 
42020
  0x00, 0x34, 0x03, 0x00, 0x00, 0x86, 0x8F, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x08, 
42021
  0x6F, 0x73, 0x2F, 0x72, 0x6D, 0x64, 0x69, 0x72, 0xD8, 0x08, 0x6F, 0x73, 0x2F, 0x72, 0x6D, 0x64, 
42022
  0x69, 0x72, 0xCF, 0x0A, 0x65, 0x6E, 0x76, 0x2D, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0xD8, 0x0A, 
42023
  0x65, 0x6E, 0x76, 0x2D, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0xCF, 0x11, 0x73, 0x74, 0x72, 0x75, 
42024
  0x63, 0x74, 0x2F, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0xD8, 0x11, 0x73, 
42025
  0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x70, 0x72, 0x6F, 0x74, 0x6F, 
42026
  0xCF, 0x0B, 0x65, 0x76, 0x2F, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0xD8, 0x0B, 0x65, 
42027
  0x76, 0x2F, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0xCF, 0x0B, 0x66, 0x72, 0x65, 0x71, 
42028
  0x75, 0x65, 0x6E, 0x63, 0x69, 0x65, 0x73, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x01, 
42029
  0x01, 0x01, 0x00, 0x14, 0x00, 0x07, 0xCE, 0x0B, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 
42030
  0x69, 0x65, 0x73, 0xDA, 0x18, 0x00, 0x14, 0x00, 0xDA, 0x1F, 0x00, 0x14, 0x01, 0xDA, 0x8C, 0x01, 
42031
  0x01, 0x14, 0x03, 0xCF, 0x05, 0x66, 0x72, 0x65, 0x71, 0x73, 0x01, 0x13, 0x00, 0xCF, 0x07, 0x5F, 
42032
  0x30, 0x30, 0x30, 0x30, 0x32, 0x47, 0x04, 0x13, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
42033
  0x32, 0x46, 0x07, 0x13, 0x06, 0xDA, 0x1E, 0x09, 0x13, 0x07, 0xDA, 0x80, 0xD8, 0x42, 0x02, 0x00, 
42034
  0x00, 0x19, 0x03, 0x02, 0x00, 0x26, 0x05, 0x00, 0x00, 0x47, 0x04, 0x00, 0x05, 0x19, 0x05, 0x04, 
42035
  0x00, 0x1D, 0x05, 0x0E, 0x00, 0x38, 0x04, 0x00, 0x05, 0x19, 0x06, 0x04, 0x00, 0x38, 0x04, 0x03, 
42036
  0x06, 0x19, 0x07, 0x04, 0x00, 0x1C, 0x07, 0x05, 0x00, 0x29, 0x09, 0x01, 0x00, 0x06, 0x08, 0x09, 
42037
  0x07, 0x19, 0x04, 0x08, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x29, 0x04, 0x01, 0x00, 0x3A, 0x03, 0x06, 
42038
  0x04, 0x47, 0x05, 0x00, 0x05, 0x1A, 0xF3, 0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 0x86, 0x48, 0x03, 
42039
  0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0C, 
42040
  0x00, 0x05, 0x01, 0x14, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x05, 
42041
  0xBF, 0xFE, 0x03, 0x00, 0x03, 0xBF, 0xFC, 0x01, 0xCF, 0x0B, 0x6E, 0x65, 0x74, 0x2F, 0x63, 0x6F, 
42042
  0x6E, 0x6E, 0x65, 0x63, 0x74, 0xD8, 0x0B, 0x6E, 0x65, 0x74, 0x2F, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 
42043
  0x63, 0x74, 0xCF, 0x0F, 0x65, 0x76, 0x2F, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x2D, 0x6C, 
42044
  0x6F, 0x63, 0x6B, 0xD8, 0x0F, 0x65, 0x76, 0x2F, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x2D, 
42045
  0x6C, 0x6F, 0x63, 0x6B, 0xDA, 0x84, 0xD3, 0xDA, 0x84, 0xD1, 0xCF, 0x0C, 0x74, 0x75, 0x70, 0x6C, 
42046
  0x65, 0x2F, 0x73, 0x65, 0x74, 0x6D, 0x61, 0x70, 0xDA, 0x82, 0xEE, 0xCF, 0x04, 0x71, 0x75, 0x69, 
42047
  0x74, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x00, 0x01, 0x03, 0x0A, 0x00, 0x02, 
42048
  0xCE, 0x04, 0x71, 0x75, 0x69, 0x74, 0xDA, 0x18, 0xDA, 0x82, 0x16, 0xDA, 0x81, 0x60, 0xDA, 0x82, 
42049
  0x17, 0x00, 0x0A, 0x00, 0xDA, 0x25, 0x00, 0x0A, 0x01, 0xDA, 0x8C, 0x0C, 0x2A, 0x02, 0x00, 0x00, 
42050
  0x27, 0x03, 0x00, 0x00, 0x30, 0x02, 0x03, 0x00, 0x2A, 0x03, 0x01, 0x00, 0x33, 0x02, 0x03, 0x00, 
42051
  0x2A, 0x03, 0x02, 0x00, 0x30, 0x03, 0x00, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x33, 0x03, 0x04, 0x00, 
42052
  0x04, 0x00, 0x00, 0x00, 0x8A, 0x37, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 
42053
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFA, 0x01, 0xCF, 0x09, 0x6F, 0x73, 0x2F, 0x73, 
42054
  0x65, 0x74, 0x65, 0x6E, 0x76, 0xD8, 0x09, 0x6F, 0x73, 0x2F, 0x73, 0x65, 0x74, 0x65, 0x6E, 0x76, 
42055
  0xCF, 0x06, 0x6D, 0x69, 0x6E, 0x2D, 0x6F, 0x66, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 
42056
  0x01, 0x01, 0x01, 0x02, 0x04, 0x00, 0x02, 0xCE, 0x06, 0x6D, 0x69, 0x6E, 0x2D, 0x6F, 0x66, 0xDA, 
42057
  0x18, 0xDA, 0x83, 0xA5, 0xDA, 0x83, 0xA7, 0x00, 0x04, 0x00, 0xDA, 0x80, 0xAB, 0x00, 0x04, 0x01, 
42058
  0xDA, 0x8C, 0x11, 0x2A, 0x02, 0x00, 0x00, 0x30, 0x02, 0x00, 0x00, 0x2A, 0x02, 0x01, 0x00, 0x34, 
42059
  0x02, 0x00, 0x00, 0x82, 0xEA, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0xCF, 0x0E, 0x70, 0x61, 
42060
  0x72, 0x73, 0x65, 0x72, 0x2F, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x65, 0xDA, 0x85, 0xAB, 0xCF, 
42061
  0x0A, 0x6C, 0x6F, 0x61, 0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0xDA, 0x87, 0x8D, 0xDA, 0x88, 
42062
  0x2C, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0D, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
42063
  0x04, 0x23, 0x00, 0x07, 0xCE, 0x03, 0x61, 0x6E, 0x64, 0xDA, 0x18, 0xDA, 0x80, 0x87, 0xDA, 0x4F, 
42064
  0xDA, 0x49, 0xDA, 0x4A, 0x00, 0x23, 0x00, 0xDA, 0x82, 0xE2, 0x00, 0x23, 0x01, 0xDA, 0x88, 0x2C, 
42065
  0x00, 0x23, 0x02, 0xDA, 0x23, 0x02, 0x23, 0x04, 0xDA, 0x80, 0x84, 0x03, 0x23, 0x05, 0xDA, 0x80, 
42066
  0x90, 0x08, 0x22, 0x08, 0xDA, 0x52, 0x19, 0x21, 0x0B, 0xDA, 0x80, 0xFF, 0x27, 0x02, 0x00, 0x00, 
42067
  0x3D, 0x03, 0x00, 0x00, 0x19, 0x04, 0x03, 0x00, 0x19, 0x05, 0x04, 0x00, 0x20, 0x06, 0x05, 0x00, 
42068
  0x1C, 0x06, 0x1D, 0x00, 0x05, 0x05, 0x05, 0xFF, 0x38, 0x07, 0x00, 0x05, 0x19, 0x08, 0x07, 0x00, 
42069
  0x05, 0x07, 0x04, 0xFF, 0x23, 0x09, 0x05, 0x07, 0x1C, 0x09, 0x03, 0x00, 0x19, 0x02, 0x08, 0x00, 
42070
  0x1A, 0x14, 0x00, 0x00, 0x2F, 0x08, 0x00, 0x00, 0x2A, 0x0A, 0x00, 0x00, 0x33, 0x07, 0x0A, 0x00, 
42071
  0x1C, 0x07, 0x06, 0x00, 0x2A, 0x0A, 0x01, 0x00, 0x31, 0x0A, 0x08, 0x02, 0x2F, 0x08, 0x00, 0x00, 
42072
  0x43, 0x02, 0x00, 0x00, 0x1A, 0x0B, 0x00, 0x00, 0x2A, 0x0B, 0x02, 0x00, 0x33, 0x0A, 0x0B, 0x00, 
42073
  0x19, 0x0B, 0x0A, 0x00, 0x2A, 0x0A, 0x03, 0x00, 0x31, 0x0A, 0x0B, 0x08, 0x43, 0x0A, 0x00, 0x00, 
42074
  0x2A, 0x0C, 0x01, 0x00, 0x31, 0x0C, 0x0A, 0x02, 0x2F, 0x0B, 0x00, 0x00, 0x43, 0x02, 0x00, 0x00, 
42075
  0x1A, 0xE3, 0xFF, 0xFF, 0x03, 0x02, 0x00, 0x00, 0x81, 0x15, 0x03, 0x01, 0x0C, 0x00, 0x03, 0x01, 
42076
  0x03, 0x01, 0x0A, 0x00, 0x03, 0x01, 0x05, 0x01, 0x0C, 0x00, 0x05, 0x01, 0x17, 0x00, 0x12, 0x00, 
42077
  0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x02, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x10, 0x01, 0x12, 0x00, 
42078
  0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFF, 0x10, 0x02, 0x1D, 0x00, 0x1D, 0x00, 0x16, 0x01, 0x19, 
42079
  0x00, 0x19, 0x00, 0x19, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0xBF, 0xF8, 0x03, 0xBF, 
42080
  0xF9, 0x01, 0xDA, 0x8A, 0xBF, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x00, 0x00, 0xCD, 
42081
  0x7F, 0xFF, 0xFF, 0xFF, 0x04, 0x0C, 0x00, 0x02, 0xCE, 0x08, 0x65, 0x76, 0x2F, 0x73, 0x70, 0x61, 
42082
  0x77, 0x6E, 0xDA, 0x18, 0xDA, 0x82, 0xBC, 0xDA, 0x82, 0xAE, 0xCF, 0x06, 0x5F, 0x73, 0x70, 0x61, 
42083
  0x77, 0x6E, 0xDA, 0x83, 0x1F, 0x00, 0x0C, 0x00, 0xDA, 0x82, 0xB5, 0x00, 0x0C, 0x01, 0xDA, 0x8A, 
42084
  0xBF, 0x2A, 0x03, 0x00, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x44, 0x02, 0x00, 0x00, 0x2A, 0x04, 0x01, 
42085
  0x00, 0x2A, 0x05, 0x02, 0x00, 0x31, 0x04, 0x05, 0x02, 0x32, 0x00, 0x00, 0x00, 0x43, 0x03, 0x00, 
42086
  0x00, 0x2A, 0x04, 0x03, 0x00, 0x30, 0x04, 0x03, 0x00, 0x43, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 
42087
  0x00, 0x8E, 0x3C, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42088
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCF, 0x09, 0x6F, 0x73, 0x2F, 0x6D, 
42089
  0x6B, 0x74, 0x69, 0x6D, 0x65, 0xD8, 0x09, 0x6F, 0x73, 0x2F, 0x6D, 0x6B, 0x74, 0x69, 0x6D, 0x65, 
42090
  0xCF, 0x07, 0x65, 0x76, 0x2F, 0x66, 0x75, 0x6C, 0x6C, 0xD8, 0x07, 0x65, 0x76, 0x2F, 0x66, 0x75, 
42091
  0x6C, 0x6C, 0xCF, 0x05, 0x61, 0x72, 0x72, 0x61, 0x79, 0xD8, 0x05, 0x61, 0x72, 0x72, 0x61, 0x79, 
42092
  0xCF, 0x07, 0x6F, 0x73, 0x2F, 0x74, 0x69, 0x6D, 0x65, 0xD8, 0x07, 0x6F, 0x73, 0x2F, 0x74, 0x69, 
42093
  0x6D, 0x65, 0xDA, 0x8B, 0x6C, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 
42094
  0x7F, 0xFF, 0xFF, 0xFF, 0x03, 0x09, 0x00, 0x03, 0xCE, 0x08, 0x64, 0x65, 0x66, 0x6D, 0x61, 0x63, 
42095
  0x72, 0x6F, 0xDA, 0x18, 0xDA, 0x81, 0x60, 0xDA, 0x3D, 0xDA, 0x84, 0x56, 0x00, 0x09, 0x00, 0xDA, 
42096
  0x83, 0x0F, 0x00, 0x09, 0x01, 0xDA, 0x83, 0x10, 0x00, 0x09, 0x02, 0xDA, 0x8B, 0x6C, 0x42, 0x03, 
42097
  0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x2A, 0x05, 0x00, 0x00, 0x33, 0x04, 0x05, 0x00, 0x2A, 0x03, 
42098
  0x01, 0x00, 0x30, 0x00, 0x03, 0x00, 0x32, 0x01, 0x00, 0x00, 0x2A, 0x03, 0x02, 0x00, 0x34, 0x03, 
42099
  0x00, 0x00, 0x30, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 
42100
  0x00, 0x03, 0x00, 0x03, 0xCF, 0x0D, 0x2A, 0x6C, 0x69, 0x6E, 0x74, 0x2D, 0x6C, 0x65, 0x76, 0x65, 
42101
  0x6C, 0x73, 0x2A, 0xDA, 0x82, 0x54, 0xCF, 0x0A, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x6E, 
42102
  0x65, 0x77, 0xDA, 0x82, 0x18, 0xCF, 0x0E, 0x6F, 0x73, 0x2F, 0x70, 0x65, 0x72, 0x6D, 0x2D, 0x73, 
42103
  0x74, 0x72, 0x69, 0x6E, 0x67, 0xD8, 0x0E, 0x6F, 0x73, 0x2F, 0x70, 0x65, 0x72, 0x6D, 0x2D, 0x73, 
42104
  0x74, 0x72, 0x69, 0x6E, 0x67, 0xCF, 0x09, 0x65, 0x76, 0x2F, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 
42105
  0xD8, 0x09, 0x65, 0x76, 0x2F, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0xCF, 0x0E, 0x65, 0x76, 0x2F, 
42106
  0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2D, 0x63, 0x68, 0x61, 0x6E, 0xD8, 0x0E, 0x65, 0x76, 0x2F, 
42107
  0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2D, 0x63, 0x68, 0x61, 0x6E, 0xCF, 0x07, 0x65, 0x76, 0x2F, 
42108
  0x74, 0x61, 0x6B, 0x65, 0xDA, 0x8A, 0xCC, 0xCF, 0x07, 0x75, 0x6E, 0x74, 0x72, 0x61, 0x63, 0x65, 
42109
  0xD8, 0x07, 0x75, 0x6E, 0x74, 0x72, 0x61, 0x63, 0x65, 0xCF, 0x08, 0x61, 0x73, 0x2D, 0x6D, 0x61, 
42110
  0x63, 0x72, 0x6F, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x03, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 
42111
  0xFF, 0xFF, 0x00, 0x02, 0x00, 0x03, 0xCE, 0x08, 0x61, 0x73, 0x2D, 0x6D, 0x61, 0x63, 0x72, 0x6F, 
42112
  0xDA, 0x18, 0x00, 0x02, 0x00, 0xDA, 0x80, 0xFB, 0x00, 0x02, 0x01, 0xDA, 0x80, 0xAB, 0x00, 0x02, 
42113
  0x02, 0xDA, 0x8C, 0x30, 0x32, 0x01, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x39, 0x03, 0x00, 0x03, 
42114
  0xCF, 0x08, 0x67, 0x72, 0x6F, 0x75, 0x70, 0x2D, 0x62, 0x79, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
42115
  0x00, 0x0B, 0x02, 0x02, 0x02, 0x01, 0x18, 0x00, 0x0A, 0xCE, 0x08, 0x67, 0x72, 0x6F, 0x75, 0x70, 
42116
  0x2D, 0x62, 0x79, 0xDA, 0x18, 0xDA, 0x81, 0x8C, 0x00, 0x18, 0x00, 0xDA, 0x80, 0xFB, 0x00, 0x18, 
42117
  0x01, 0xDA, 0x1F, 0x00, 0x18, 0x02, 0xDA, 0x8C, 0x33, 0x01, 0x18, 0x04, 0xDA, 0x23, 0x01, 0x17, 
42118
  0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x49, 0x04, 0x17, 0x06, 0xCF, 0x07, 0x5F, 
42119
  0x30, 0x30, 0x30, 0x30, 0x32, 0x48, 0x07, 0x17, 0x07, 0xDA, 0x1E, 0x0A, 0x17, 0x08, 0xDA, 0x83, 
42120
  0x92, 0x0C, 0x15, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x4A, 0x0D, 0x11, 0x09, 
42121
  0xDA, 0x86, 0xEB, 0x42, 0x03, 0x00, 0x00, 0x19, 0x04, 0x03, 0x00, 0x26, 0x06, 0x00, 0x00, 0x47, 
42122
  0x05, 0x01, 0x06, 0x19, 0x06, 0x05, 0x00, 0x1D, 0x06, 0x12, 0x00, 0x38, 0x05, 0x01, 0x06, 0x19, 
42123
  0x07, 0x05, 0x00, 0x2F, 0x07, 0x00, 0x00, 0x33, 0x05, 0x00, 0x00, 0x19, 0x08, 0x05, 0x00, 0x39, 
42124
  0x05, 0x04, 0x08, 0x19, 0x09, 0x05, 0x00, 0x1C, 0x09, 0x05, 0x00, 0x30, 0x09, 0x07, 0x00, 0x2A, 
42125
  0x0A, 0x00, 0x00, 0x33, 0x05, 0x0A, 0x00, 0x1A, 0x04, 0x00, 0x00, 0x2F, 0x07, 0x00, 0x00, 0x3E, 
42126
  0x05, 0x00, 0x00, 0x3A, 0x04, 0x08, 0x05, 0x47, 0x06, 0x01, 0x06, 0x1A, 0xEF, 0xFF, 0xFF, 0x03, 
42127
  0x04, 0x00, 0x00, 0x86, 0x54, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42128
  0x00, 0x03, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x12, 0x00, 0x05, 0x00, 0x05, 
42129
  0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x02, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 
42130
  0xFC, 0x03, 0x00, 0x03, 0xBF, 0xF9, 0x01, 0xCF, 0x0C, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 
42131
  0x66, 0x6C, 0x75, 0x73, 0x68, 0xD8, 0x0C, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x66, 0x6C, 
42132
  0x75, 0x73, 0x68, 0xCF, 0x07, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x74, 0xD7, 0x00, 0xCD, 0x00, 
42133
  0xDC, 0x00, 0x00, 0x06, 0x01, 0x01, 0x01, 0x00, 0x0B, 0x00, 0x06, 0xCE, 0x07, 0x70, 0x72, 0x6F, 
42134
  0x64, 0x75, 0x63, 0x74, 0xDA, 0x18, 0x00, 0x0B, 0x00, 0xDA, 0x82, 0x52, 0x00, 0x0B, 0x01, 0xDA, 
42135
  0x8C, 0x3B, 0x00, 0x0B, 0x02, 0xDA, 0x82, 0xDE, 0x00, 0x0A, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
42136
  0x30, 0x30, 0x30, 0x63, 0x03, 0x0A, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x62, 
42137
  0x06, 0x0A, 0x05, 0xDA, 0x1E, 0x29, 0x02, 0x01, 0x00, 0x26, 0x04, 0x00, 0x00, 0x47, 0x03, 0x00, 
42138
  0x04, 0x19, 0x04, 0x03, 0x00, 0x1D, 0x04, 0x06, 0x00, 0x38, 0x03, 0x00, 0x04, 0x19, 0x05, 0x03, 
42139
  0x00, 0x09, 0x02, 0x02, 0x05, 0x47, 0x04, 0x00, 0x04, 0x1A, 0xFB, 0xFF, 0xFF, 0x03, 0x02, 0x00, 
42140
  0x00, 0x82, 0x93, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42141
  0x00, 0x0E, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFC, 0x01, 0xCF, 0x0B, 0x6F, 0x73, 0x2F, 0x72, 0x65, 
42142
  0x61, 0x6C, 0x70, 0x61, 0x74, 0x68, 0xD8, 0x0B, 0x6F, 0x73, 0x2F, 0x72, 0x65, 0x61, 0x6C, 0x70, 
42143
  0x61, 0x74, 0x68, 0xCF, 0x04, 0x74, 0x61, 0x6B, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
42144
  0x06, 0x02, 0x02, 0x02, 0x06, 0x13, 0x00, 0x03, 0xCE, 0x04, 0x74, 0x61, 0x6B, 0x65, 0xDA, 0x18, 
42145
  0xDA, 0x2A, 0xDA, 0x81, 0xFC, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0B, 0x03, 0x03, 0x03, 
42146
  0x00, 0x11, 0x00, 0x07, 0xCE, 0x07, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x2D, 0x6E, 0xDA, 0x18, 0x00, 
42147
  0x11, 0x00, 0xDA, 0x80, 0xFB, 0x00, 0x11, 0x01, 0xDA, 0x80, 0xD8, 0x00, 0x11, 0x02, 0xDA, 0x1F, 
42148
  0x00, 0x11, 0x03, 0xCF, 0x07, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x2D, 0x6E, 0x01, 0x11, 0x05, 0xDA, 
42149
  0x80, 0x84, 0x07, 0x11, 0x07, 0xDA, 0x85, 0x1B, 0x0D, 0x11, 0x09, 0xDA, 0x83, 0xBF, 0x3D, 0x04, 
42150
  0x02, 0x00, 0x19, 0x05, 0x04, 0x00, 0x20, 0x07, 0x01, 0x00, 0x1C, 0x07, 0x03, 0x00, 0x19, 0x06, 
42151
  0x01, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x29, 0x06, 0x00, 0x00, 0x19, 0x07, 0x06, 0x00, 0x1F, 0x09, 
42152
  0x07, 0x05, 0x1C, 0x09, 0x03, 0x00, 0x19, 0x08, 0x05, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x08, 
42153
  0x07, 0x00, 0x19, 0x09, 0x08, 0x00, 0x29, 0x0A, 0x00, 0x00, 0x31, 0x02, 0x0A, 0x09, 0x34, 0x00, 
42154
  0x00, 0x00, 0x84, 0x50, 0x0C, 0x00, 0x03, 0x02, 0x0E, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 
42155
  0x0A, 0x00, 0x03, 0x01, 0x10, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x01, 
42156
  0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x82, 0x20, 0xDA, 0x82, 0xE9, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
42157
  0x00, 0x00, 0x0B, 0x02, 0x02, 0x02, 0x01, 0x18, 0x00, 0x08, 0xCE, 0x0F, 0x74, 0x61, 0x6B, 0x65, 
42158
  0x2D, 0x6E, 0x2D, 0x66, 0x61, 0x6C, 0x6C, 0x62, 0x61, 0x63, 0x6B, 0xDA, 0x18, 0xDA, 0x81, 0x8C, 
42159
  0x00, 0x18, 0x00, 0xDA, 0x80, 0xD8, 0x00, 0x18, 0x01, 0xDA, 0x82, 0x52, 0x00, 0x18, 0x02, 0xCF, 
42160
  0x0F, 0x74, 0x61, 0x6B, 0x65, 0x2D, 0x6E, 0x2D, 0x66, 0x61, 0x6C, 0x6C, 0x62, 0x61, 0x63, 0x6B, 
42161
  0x01, 0x18, 0x04, 0xDA, 0x81, 0x08, 0x04, 0x16, 0x06, 0xDA, 0x88, 0x3A, 0x04, 0x16, 0x01, 0xCF, 
42162
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x4D, 0x07, 0x16, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
42163
  0x30, 0x30, 0x31, 0x4C, 0x0A, 0x16, 0x09, 0xDA, 0x1E, 0x3E, 0x03, 0x00, 0x00, 0x19, 0x04, 0x03, 
42164
  0x00, 0x20, 0x05, 0x00, 0x00, 0x1C, 0x05, 0x14, 0x00, 0x19, 0x06, 0x00, 0x00, 0x26, 0x08, 0x00, 
42165
  0x00, 0x47, 0x07, 0x01, 0x08, 0x19, 0x08, 0x07, 0x00, 0x1D, 0x08, 0x0E, 0x00, 0x38, 0x07, 0x01, 
42166
  0x08, 0x19, 0x09, 0x07, 0x00, 0x30, 0x04, 0x09, 0x00, 0x2A, 0x0A, 0x00, 0x00, 0x33, 0x07, 0x0A, 
42167
  0x00, 0x05, 0x06, 0x06, 0xFF, 0x29, 0x0A, 0x00, 0x00, 0x23, 0x07, 0x0A, 0x06, 0x1C, 0x07, 0x03, 
42168
  0x00, 0x1A, 0x04, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x08, 0x01, 0x08, 0x1A, 0xF3, 0xFF, 
42169
  0xFF, 0x1A, 0x01, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x84, 0x3D, 0x03, 0x00, 0x03, 0x01, 0x09, 
42170
  0x00, 0x03, 0x01, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42171
  0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x00, 0x16, 
42172
  0x00, 0x07, 0xBF, 0xFD, 0x05, 0x00, 0x05, 0xBF, 0xFE, 0x03, 0xBF, 0xFD, 0x01, 0x00, 0x13, 0x00, 
42173
  0xDA, 0x80, 0xD8, 0x00, 0x13, 0x01, 0xDA, 0x1F, 0x00, 0x13, 0x02, 0xDA, 0x8C, 0x42, 0x2F, 0x01, 
42174
  0x00, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 0x1C, 0x03, 0x05, 0x00, 0x2A, 0x04, 
42175
  0x01, 0x00, 0x31, 0x04, 0x00, 0x01, 0x2A, 0x04, 0x02, 0x00, 0x34, 0x04, 0x00, 0x00, 0x2F, 0x01, 
42176
  0x00, 0x00, 0x2A, 0x05, 0x03, 0x00, 0x33, 0x04, 0x05, 0x00, 0x1C, 0x04, 0x05, 0x00, 0x2A, 0x05, 
42177
  0x04, 0x00, 0x31, 0x05, 0x00, 0x01, 0x2A, 0x05, 0x02, 0x00, 0x34, 0x05, 0x00, 0x00, 0x30, 0x00, 
42178
  0x01, 0x00, 0x2A, 0x05, 0x05, 0x00, 0x34, 0x05, 0x00, 0x00, 0x84, 0x5A, 0x05, 0x00, 0x05, 0x00, 
42179
  0x05, 0xBF, 0xFF, 0x03, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x01, 0x05, 0x00, 0x05, 
42180
  0x00, 0x05, 0xBF, 0xFE, 0x03, 0x02, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x01, 0x05, 0x00, 
42181
  0x05, 0x00, 0x05, 0xCF, 0x05, 0x61, 0x70, 0x70, 0x6C, 0x79, 0xDA, 0x86, 0x10, 0xCF, 0x0E, 0x74, 
42182
  0x75, 0x70, 0x6C, 0x65, 0x2F, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x73, 0xDA, 0x82, 0xED, 
42183
  0xCF, 0x0A, 0x63, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 
42184
  0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x0A, 0x63, 0x66, 0x75, 
42185
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3F, 0xDA, 0x18, 0xDA, 0x2C, 0xD0, 0x09, 0x63, 0x66, 0x75, 
42186
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xDA, 0x8C, 
42187
  0x4F, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x2A, 0x04, 0x01, 
42188
  0x00, 0x23, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x6C, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 
42189
  0x30, 0x00, 0x30, 0x00, 0x30, 0xCF, 0x07, 0x69, 0x6E, 0x74, 0x2F, 0x73, 0x36, 0x34, 0xD8, 0x07, 
42190
  0x69, 0x6E, 0x74, 0x2F, 0x73, 0x36, 0x34, 0xCF, 0x0E, 0x66, 0x66, 0x69, 0x2F, 0x74, 0x72, 0x61, 
42191
  0x6D, 0x70, 0x6F, 0x6C, 0x69, 0x6E, 0x65, 0xD8, 0x0E, 0x66, 0x66, 0x69, 0x2F, 0x74, 0x72, 0x61, 
42192
  0x6D, 0x70, 0x6F, 0x6C, 0x69, 0x6E, 0x65, 0xCF, 0x06, 0x66, 0x72, 0x65, 0x65, 0x7A, 0x65, 0xD7, 
42193
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x01, 0x01, 0x01, 0x0E, 0x43, 0x00, 0x05, 0xCE, 0x06, 
42194
  0x66, 0x72, 0x65, 0x65, 0x7A, 0x65, 0xDA, 0x18, 0xDA, 0x2C, 0xDA, 0x5D, 0xDA, 0x81, 0x8A, 0xDA, 
42195
  0x82, 0xE9, 0xDA, 0x80, 0x8B, 0xDA, 0x80, 0x8A, 0xDA, 0x88, 0xA9, 0xDA, 0x8B, 0x48, 0xDA, 0x8A, 
42196
  0x5A, 0xDA, 0x85, 0x0E, 0xDA, 0x85, 0x15, 0xDA, 0x80, 0x89, 0xDA, 0x30, 0xDA, 0x80, 0xF5, 0x00, 
42197
  0x43, 0x00, 0xDA, 0x1E, 0x00, 0x43, 0x01, 0xDA, 0x8C, 0x57, 0x04, 0x43, 0x03, 0xCF, 0x07, 0x5F, 
42198
  0x30, 0x30, 0x30, 0x30, 0x34, 0x66, 0x1D, 0x30, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
42199
  0x34, 0x67, 0x1E, 0x27, 0x07, 0xDA, 0x64, 0x2C, 0x01, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 
42200
  0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x19, 0x03, 0x02, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x23, 
42201
  0x02, 0x03, 0x04, 0x1C, 0x02, 0x07, 0x00, 0x30, 0x01, 0x00, 0x00, 0x2A, 0x05, 0x02, 0x00, 0x33, 
42202
  0x04, 0x05, 0x00, 0x2F, 0x04, 0x00, 0x00, 0x2A, 0x05, 0x03, 0x00, 0x34, 0x05, 0x00, 0x00, 0x2A, 
42203
  0x05, 0x04, 0x00, 0x23, 0x04, 0x03, 0x05, 0x1C, 0x04, 0x07, 0x00, 0x30, 0x01, 0x00, 0x00, 0x2A, 
42204
  0x06, 0x02, 0x00, 0x33, 0x05, 0x06, 0x00, 0x2F, 0x05, 0x00, 0x00, 0x2A, 0x06, 0x03, 0x00, 0x34, 
42205
  0x06, 0x00, 0x00, 0x2A, 0x06, 0x05, 0x00, 0x23, 0x05, 0x03, 0x06, 0x1C, 0x05, 0x17, 0x00, 0x2F, 
42206
  0x00, 0x00, 0x00, 0x2A, 0x07, 0x06, 0x00, 0x33, 0x06, 0x07, 0x00, 0x19, 0x07, 0x06, 0x00, 0x1C, 
42207
  0x07, 0x09, 0x00, 0x2F, 0x07, 0x00, 0x00, 0x2A, 0x08, 0x07, 0x00, 0x33, 0x06, 0x08, 0x00, 0x30, 
42208
  0x06, 0x00, 0x00, 0x2A, 0x09, 0x08, 0x00, 0x33, 0x08, 0x09, 0x00, 0x2F, 0x08, 0x00, 0x00, 0x34, 
42209
  0x01, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x08, 0x09, 0x00, 0x33, 0x06, 0x08, 0x00, 0x30, 
42210
  0x01, 0x06, 0x00, 0x2A, 0x09, 0x02, 0x00, 0x33, 0x08, 0x09, 0x00, 0x32, 0x08, 0x00, 0x00, 0x2A, 
42211
  0x06, 0x0A, 0x00, 0x34, 0x06, 0x00, 0x00, 0x2A, 0x07, 0x0B, 0x00, 0x23, 0x06, 0x03, 0x07, 0x1C, 
42212
  0x06, 0x0A, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x08, 0x09, 0x00, 0x33, 0x07, 0x08, 0x00, 0x30, 
42213
  0x01, 0x07, 0x00, 0x2A, 0x09, 0x02, 0x00, 0x33, 0x08, 0x09, 0x00, 0x32, 0x08, 0x00, 0x00, 0x2A, 
42214
  0x07, 0x0A, 0x00, 0x34, 0x07, 0x00, 0x00, 0x2A, 0x08, 0x0C, 0x00, 0x23, 0x07, 0x03, 0x08, 0x1C, 
42215
  0x07, 0x04, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x08, 0x0D, 0x00, 0x34, 0x08, 0x00, 0x00, 0x03, 
42216
  0x00, 0x00, 0x00, 0x88, 0x72, 0x01, 0x05, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x03, 0x00, 0x03, 
42217
  0x00, 0x03, 0x00, 0x03, 0x01, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 
42218
  0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x0C, 0x00, 
42219
  0x0C, 0x00, 0x0C, 0xBF, 0xFE, 0x03, 0x00, 0x03, 0x00, 0x03, 0x03, 0x17, 0x00, 0x17, 0x00, 0x17, 
42220
  0x00, 0x0C, 0x00, 0x0C, 0x01, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 
42221
  0x00, 0x0E, 0x00, 0x0E, 0x01, 0x23, 0x00, 0x23, 0x00, 0x23, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 
42222
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0xBF, 0xFB, 0x03, 0x00, 0x03, 0x00, 0x03, 0x06, 0x22, 0x00, 
42223
  0x22, 0x00, 0x22, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 
42224
  0xFA, 0x03, 0x00, 0x03, 0x00, 0x03, 0x07, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xF9, 0x03, 0xCF, 
42225
  0x0A, 0x6F, 0x73, 0x2F, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0xD8, 0x0A, 0x6F, 0x73, 0x2F, 
42226
  0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0xDA, 0x88, 0x3D, 0xDA, 0x88, 0x2D, 0xCF, 0x04, 0x69, 
42227
  0x6E, 0x74, 0x3F, 0xD8, 0x04, 0x69, 0x6E, 0x74, 0x3F, 0xCF, 0x10, 0x6D, 0x61, 0x74, 0x68, 0x2F, 
42228
  0x72, 0x6E, 0x67, 0x2D, 0x75, 0x6E, 0x69, 0x66, 0x6F, 0x72, 0x6D, 0xD8, 0x10, 0x6D, 0x61, 0x74, 
42229
  0x68, 0x2F, 0x72, 0x6E, 0x67, 0x2D, 0x75, 0x6E, 0x69, 0x66, 0x6F, 0x72, 0x6D, 0xCF, 0x0B, 0x2A, 
42230
  0x64, 0x6F, 0x63, 0x2D, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2A, 0xDA, 0x83, 0x49, 0xCF, 0x0C, 0x6D, 
42231
  0x61, 0x74, 0x68, 0x2F, 0x72, 0x6E, 0x67, 0x2D, 0x69, 0x6E, 0x74, 0xD8, 0x0C, 0x6D, 0x61, 0x74, 
42232
  0x68, 0x2F, 0x72, 0x6E, 0x67, 0x2D, 0x69, 0x6E, 0x74, 0xCF, 0x07, 0x69, 0x66, 0x2D, 0x77, 0x69, 
42233
  0x74, 0x68, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0B, 0x03, 0x02, 0x03, 0x03, 0x1A, 0x00, 
42234
  0x07, 0xCE, 0x07, 0x69, 0x66, 0x2D, 0x77, 0x69, 0x74, 0x68, 0xDA, 0x18, 0xDA, 0x81, 0xF0, 0xDA, 
42235
  0x84, 0x4B, 0xDA, 0x77, 0x00, 0x1A, 0x01, 0xDA, 0x88, 0x68, 0x00, 0x1A, 0x02, 0xCF, 0x06, 0x66, 
42236
  0x61, 0x6C, 0x73, 0x65, 0x79, 0x01, 0x1A, 0x04, 0xDA, 0x84, 0x4E, 0x03, 0x1A, 0x05, 0xDA, 0x84, 
42237
  0x4F, 0x05, 0x1A, 0x06, 0xDA, 0x84, 0x50, 0x06, 0x1A, 0x00, 0xDA, 0x8C, 0x65, 0x08, 0x0D, 0x06, 
42238
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x33, 0x3B, 0x03, 0x00, 0x00, 0x19, 0x04, 0x03, 
42239
  0x00, 0x3B, 0x03, 0x00, 0x01, 0x19, 0x05, 0x03, 0x00, 0x3B, 0x03, 0x00, 0x02, 0x19, 0x06, 0x03, 
42240
  0x00, 0x2C, 0x00, 0x00, 0x00, 0x30, 0x04, 0x05, 0x00, 0x44, 0x03, 0x00, 0x00, 0x1C, 0x06, 0x03, 
42241
  0x00, 0x19, 0x07, 0x06, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x2A, 0x07, 0x00, 0x00, 0x30, 0x07, 0x04, 
42242
  0x00, 0x43, 0x07, 0x00, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x43, 0x08, 0x00, 0x00, 0x2F, 0x07, 0x00, 
42243
  0x00, 0x32, 0x08, 0x00, 0x00, 0x2A, 0x0A, 0x01, 0x00, 0x33, 0x09, 0x0A, 0x00, 0x2A, 0x08, 0x02, 
42244
  0x00, 0x31, 0x08, 0x03, 0x09, 0x2F, 0x02, 0x00, 0x00, 0x43, 0x07, 0x00, 0x00, 0x03, 0x07, 0x00, 
42245
  0x00, 0x81, 0x8B, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 
42246
  0x05, 0x03, 0x00, 0x03, 0x01, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x14, 0x00, 0x14, 
42247
  0x00, 0x2F, 0x00, 0x2F, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x03, 0x00, 
42248
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x09, 0x6F, 0x73, 0x2F, 0x67, 0x65, 0x74, 0x65, 
42249
  0x6E, 0x76, 0xD8, 0x09, 0x6F, 0x73, 0x2F, 0x67, 0x65, 0x74, 0x65, 0x6E, 0x76, 0xCF, 0x09, 0x6D, 
42250
  0x61, 0x74, 0x68, 0x2F, 0x61, 0x63, 0x6F, 0x73, 0xD8, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 
42251
  0x63, 0x6F, 0x73, 0xCF, 0x03, 0x63, 0x6D, 0x70, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x1F, 0x02, 
42252
  0x02, 0x02, 0x02, 0x00, 0x02, 0xCE, 0x03, 0x63, 0x6D, 0x70, 0x25, 0x00, 0x00, 0x01, 0x03, 0x00, 
42253
  0x00, 0x00, 0xCF, 0x03, 0x67, 0x65, 0x74, 0xDA, 0x88, 0x6F, 0xCF, 0x06, 0x63, 0x61, 0x74, 0x73, 
42254
  0x65, 0x71, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x09, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 
42255
  0xFF, 0x05, 0x16, 0x00, 0x04, 0xCE, 0x06, 0x63, 0x61, 0x74, 0x73, 0x65, 0x71, 0xDA, 0x18, 0xDA, 
42256
  0x49, 0xDA, 0x4A, 0xDA, 0x50, 0xDA, 0x82, 0xE6, 0xDA, 0x86, 0x6E, 0x00, 0x16, 0x00, 0xDA, 0x86, 
42257
  0x6F, 0x00, 0x16, 0x01, 0xDA, 0x82, 0xB5, 0x00, 0x16, 0x02, 0xDA, 0x8C, 0x72, 0x02, 0x16, 0x04, 
42258
  0xDA, 0x86, 0x70, 0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 0x19, 0x04, 0x03, 0x00, 0x3E, 
42259
  0x05, 0x00, 0x00, 0x2A, 0x07, 0x01, 0x00, 0x31, 0x07, 0x04, 0x05, 0x43, 0x06, 0x00, 0x00, 0x2A, 
42260
  0x07, 0x02, 0x00, 0x2F, 0x07, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0x43, 0x05, 0x00, 0x00, 0x2A, 
42261
  0x08, 0x03, 0x00, 0x31, 0x08, 0x04, 0x05, 0x43, 0x07, 0x00, 0x00, 0x2A, 0x08, 0x04, 0x00, 0x31, 
42262
  0x08, 0x00, 0x07, 0x43, 0x05, 0x00, 0x00, 0x2A, 0x08, 0x02, 0x00, 0x31, 0x08, 0x06, 0x05, 0x2F, 
42263
  0x04, 0x00, 0x00, 0x43, 0x07, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, 0x82, 0x6A, 0x0F, 0x00, 0x0F, 
42264
  0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42265
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42266
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0C, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 
42267
  0x2F, 0x63, 0x61, 0x63, 0x68, 0x65, 0xDA, 0x87, 0x23, 0xDA, 0x84, 0xEC, 0xDA, 0x84, 0xEA, 0xCF, 
42268
  0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0x72, 0x66, 0x63, 0xD8, 0x09, 0x6D, 0x61, 0x74, 0x68, 
42269
  0x2F, 0x65, 0x72, 0x66, 0x63, 0xCF, 0x06, 0x64, 0x65, 0x66, 0x64, 0x79, 0x6E, 0xD7, 0x00, 0xCD, 
42270
  0x00, 0xDD, 0x00, 0x00, 0x0A, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x0B, 0x33, 0x00, 0x08, 
42271
  0xCE, 0x06, 0x64, 0x65, 0x66, 0x64, 0x79, 0x6E, 0xDA, 0x18, 0xDA, 0x84, 0xEA, 0xCE, 0x16, 0x61, 
42272
  0x6C, 0x69, 0x61, 0x73, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x73, 
42273
  0x79, 0x6D, 0x62, 0x6F, 0x6C, 0xDA, 0x83, 0xD0, 0xDA, 0x83, 0xE3, 0xCE, 0x32, 0x6E, 0x61, 0x6D, 
42274
  0x65, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x6C, 0x65, 0x61, 0x64, 
42275
  0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6C, 0x69, 0x6E, 0x67, 
42276
  0x20, 0x27, 0x2A, 0x27, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0xD0, 
42277
  0x0D, 0x64, 0x65, 0x66, 0x64, 0x79, 0x6E, 0x2D, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0xDA, 0x80, 
42278
  0xDF, 0xDA, 0x87, 0xDA, 0xD8, 0x07, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0xDA, 0x4A, 0xDA, 
42279
  0x84, 0x25, 0x00, 0x33, 0x00, 0xCF, 0x05, 0x61, 0x6C, 0x69, 0x61, 0x73, 0x00, 0x33, 0x01, 0xDA, 
42280
  0x83, 0x10, 0x00, 0x33, 0x02, 0xDA, 0x8C, 0x78, 0x03, 0x08, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
42281
  0x30, 0x30, 0x31, 0x54, 0x0A, 0x19, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x56, 
42282
  0x19, 0x1E, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x55, 0x22, 0x33, 0x04, 0xDA, 
42283
  0x86, 0xD0, 0x2B, 0x33, 0x05, 0xCF, 0x02, 0x6B, 0x77, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x04, 0x00, 
42284
  0x00, 0x33, 0x03, 0x04, 0x00, 0x19, 0x04, 0x03, 0x00, 0x1C, 0x04, 0x02, 0x00, 0x1A, 0x03, 0x00, 
42285
  0x00, 0x2A, 0x03, 0x01, 0x00, 0x01, 0x03, 0x00, 0x00, 0x3D, 0x04, 0x00, 0x00, 0x20, 0x05, 0x04, 
42286
  0x02, 0x19, 0x04, 0x05, 0x00, 0x1C, 0x05, 0x0D, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x07, 0x02, 
42287
  0x00, 0x33, 0x06, 0x07, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x08, 0x03, 0x00, 0x33, 0x07, 0x08, 
42288
  0x00, 0x29, 0x09, 0x2A, 0x00, 0x23, 0x08, 0x09, 0x06, 0x1C, 0x08, 0x02, 0x00, 0x23, 0x08, 0x06, 
42289
  0x07, 0x19, 0x03, 0x08, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x03, 0x04, 0x00, 0x19, 0x04, 0x03, 
42290
  0x00, 0x1C, 0x04, 0x02, 0x00, 0x1A, 0x03, 0x00, 0x00, 0x2A, 0x03, 0x04, 0x00, 0x01, 0x03, 0x00, 
42291
  0x00, 0x2A, 0x03, 0x05, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x04, 0x06, 0x00, 0x33, 0x03, 0x04, 
42292
  0x00, 0x19, 0x04, 0x03, 0x00, 0x29, 0x05, 0x01, 0x00, 0x29, 0x06, 0xFE, 0xFF, 0x31, 0x00, 0x05, 
42293
  0x06, 0x2A, 0x06, 0x07, 0x00, 0x33, 0x05, 0x06, 0x00, 0x30, 0x04, 0x05, 0x00, 0x2A, 0x07, 0x08, 
42294
  0x00, 0x33, 0x06, 0x07, 0x00, 0x19, 0x05, 0x06, 0x00, 0x2A, 0x08, 0x09, 0x00, 0x2A, 0x09, 0x0A, 
42295
  0x00, 0x31, 0x08, 0x00, 0x09, 0x32, 0x01, 0x00, 0x00, 0x2F, 0x05, 0x00, 0x00, 0x43, 0x07, 0x00, 
42296
  0x00, 0x03, 0x07, 0x00, 0x00, 0x84, 0xA9, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x03, 
42297
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x13, 0x00, 0x10, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x2B, 
42298
  0x00, 0x2B, 0x00, 0x2B, 0x00, 0x39, 0x00, 0x39, 0x00, 0x39, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 
42299
  0x00, 0x25, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42300
  0x00, 0x03, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x01, 0x1B, 0x00, 0x1B, 
42301
  0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x01, 0x03, 
42302
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x04, 0x77, 0x69, 
42303
  0x74, 0x68, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x09, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 
42304
  0xFF, 0x04, 0x18, 0x00, 0x06, 0xCE, 0x04, 0x77, 0x69, 0x74, 0x68, 0xDA, 0x18, 0xDA, 0x4A, 0xDA, 
42305
  0x81, 0xF0, 0xDA, 0x84, 0x4B, 0xDA, 0x50, 0x00, 0x18, 0x01, 0xDA, 0x82, 0xB5, 0x01, 0x18, 0x03, 
42306
  0xDA, 0x84, 0x4E, 0x03, 0x18, 0x04, 0xDA, 0x84, 0x4F, 0x05, 0x18, 0x05, 0xDA, 0x84, 0x50, 0x06, 
42307
  0x18, 0x00, 0xDA, 0x8C, 0x84, 0x09, 0x0E, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 
42308
  0x31, 0x3B, 0x02, 0x00, 0x00, 0x19, 0x03, 0x02, 0x00, 0x3B, 0x02, 0x00, 0x01, 0x19, 0x04, 0x02, 
42309
  0x00, 0x3B, 0x02, 0x00, 0x02, 0x19, 0x05, 0x02, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x2A, 0x06, 0x00, 
42310
  0x00, 0x31, 0x06, 0x03, 0x04, 0x43, 0x02, 0x00, 0x00, 0x1C, 0x05, 0x03, 0x00, 0x19, 0x06, 0x05, 
42311
  0x00, 0x1A, 0x02, 0x00, 0x00, 0x2A, 0x06, 0x01, 0x00, 0x30, 0x06, 0x03, 0x00, 0x43, 0x06, 0x00, 
42312
  0x00, 0x2F, 0x06, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0x2A, 0x08, 0x02, 0x00, 0x33, 0x07, 0x08, 
42313
  0x00, 0x2A, 0x08, 0x03, 0x00, 0x31, 0x08, 0x02, 0x07, 0x43, 0x06, 0x00, 0x00, 0x03, 0x06, 0x00, 
42314
  0x00, 0x81, 0x7A, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 
42315
  0x06, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x14, 
42316
  0x00, 0x14, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFE, 0x03, 0x00, 0x03, 0x00, 
42317
  0x03, 0x00, 0x03, 0xCF, 0x0C, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x72, 0x61, 0x77, 0x67, 0x65, 
42318
  0x74, 0xD8, 0x0C, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x72, 0x61, 0x77, 0x67, 0x65, 0x74, 0xDA, 
42319
  0x8A, 0x2D, 0xDA, 0x8A, 0x2A, 0xDA, 0x84, 0xF5, 0xDA, 0x84, 0xF3, 0xCF, 0x09, 0x6D, 0x61, 0x74, 
42320
  0x68, 0x2F, 0x73, 0x69, 0x6E, 0x68, 0xD8, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x73, 0x69, 0x6E, 
42321
  0x68, 0xCF, 0x12, 0x66, 0x66, 0x69, 0x2F, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x2D, 0x62, 
42322
  0x75, 0x66, 0x66, 0x65, 0x72, 0xD8, 0x12, 0x66, 0x66, 0x69, 0x2F, 0x70, 0x6F, 0x69, 0x6E, 0x74, 
42323
  0x65, 0x72, 0x2D, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0xCF, 0x08, 0x6D, 0x61, 0x63, 0x6C, 0x69, 
42324
  0x6E, 0x74, 0x66, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0F, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 
42325
  0xFF, 0xFF, 0x08, 0x34, 0x00, 0x0B, 0xCE, 0x08, 0x6D, 0x61, 0x63, 0x6C, 0x69, 0x6E, 0x74, 0x66, 
42326
  0xDA, 0x18, 0xDA, 0x84, 0xBA, 0xDA, 0x80, 0xDF, 0xDA, 0x84, 0x9A, 0xDA, 0x83, 0xEE, 0xDA, 0x82, 
42327
  0x73, 0xDA, 0x88, 0x2B, 0xDA, 0x4C, 0xDA, 0x81, 0x8C, 0x00, 0x34, 0x00, 0xDA, 0x80, 0xBB, 0x00, 
42328
  0x34, 0x01, 0xDA, 0x80, 0xAA, 0x00, 0x34, 0x02, 0xDA, 0x80, 0xAB, 0x00, 0x34, 0x03, 0xDA, 0x8C, 
42329
  0x8E, 0x04, 0x34, 0x05, 0xDA, 0x82, 0x32, 0x0A, 0x32, 0x07, 0xDA, 0x82, 0xD3, 0x16, 0x32, 0x09, 
42330
  0xDA, 0x82, 0x4C, 0x18, 0x32, 0x0A, 0xDA, 0x81, 0xCF, 0x1F, 0x32, 0x08, 0xDA, 0x82, 0x4C, 0x26, 
42331
  0x32, 0x0B, 0xDA, 0x81, 0xCF, 0x2B, 0x32, 0x0C, 0xDA, 0x82, 0x03, 0x2A, 0x04, 0x00, 0x00, 0x2F, 
42332
  0x04, 0x00, 0x00, 0x2A, 0x05, 0x01, 0x00, 0x33, 0x04, 0x05, 0x00, 0x19, 0x05, 0x04, 0x00, 0x1C, 
42333
  0x05, 0x2E, 0x00, 0x2A, 0x06, 0x02, 0x00, 0x2F, 0x06, 0x00, 0x00, 0x2A, 0x07, 0x01, 0x00, 0x33, 
42334
  0x06, 0x07, 0x00, 0x19, 0x07, 0x06, 0x00, 0x2F, 0x07, 0x00, 0x00, 0x2A, 0x09, 0x03, 0x00, 0x33, 
42335
  0x08, 0x09, 0x00, 0x1C, 0x08, 0x06, 0x00, 0x2F, 0x07, 0x00, 0x00, 0x2A, 0x0A, 0x04, 0x00, 0x33, 
42336
  0x09, 0x0A, 0x00, 0x19, 0x06, 0x09, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x2A, 0x06, 0x05, 0x00, 0x3B, 
42337
  0x08, 0x06, 0x00, 0x19, 0x09, 0x08, 0x00, 0x3B, 0x08, 0x06, 0x01, 0x19, 0x0A, 0x08, 0x00, 0x29, 
42338
  0x0B, 0xFF, 0xFF, 0x23, 0x08, 0x0B, 0x09, 0x1C, 0x08, 0x03, 0x00, 0x26, 0x06, 0x00, 0x00, 0x1A, 
42339
  0x02, 0x00, 0x00, 0x19, 0x06, 0x09, 0x00, 0x19, 0x08, 0x06, 0x00, 0x29, 0x0C, 0xFF, 0xFF, 0x23, 
42340
  0x0B, 0x0C, 0x0A, 0x1C, 0x0B, 0x03, 0x00, 0x26, 0x06, 0x00, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 
42341
  0x06, 0x0A, 0x00, 0x19, 0x0B, 0x06, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x32, 0x02, 0x00, 0x00, 0x2A, 
42342
  0x0C, 0x06, 0x00, 0x33, 0x06, 0x0C, 0x00, 0x19, 0x0C, 0x06, 0x00, 0x31, 0x00, 0x08, 0x0B, 0x2F, 
42343
  0x0C, 0x00, 0x00, 0x43, 0x06, 0x00, 0x00, 0x30, 0x05, 0x06, 0x00, 0x2A, 0x0E, 0x07, 0x00, 0x33, 
42344
  0x0D, 0x0E, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x87, 0xCD, 0x0E, 0x00, 0x0E, 
42345
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x03, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
42346
  0x00, 0x05, 0x01, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x10, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 
42347
  0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x14, 
42348
  0x00, 0x14, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x14, 0x00, 0x14, 
42349
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
42350
  0x00, 0x0E, 0x00, 0x05, 0x01, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42351
  0xBF, 0xFA, 0x03, 0xBF, 0xFB, 0x01, 0xCF, 0x0A, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x69, 0x6D, 0x61, 
42352
  0x67, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x02, 0x04, 0x00, 
42353
  0x02, 0xCE, 0x0A, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0xDA, 0x18, 0xD3, 
42354
  0x00, 0xDA, 0x84, 0xC0, 0x00, 0x04, 0x00, 0xDA, 0x80, 0xBA, 0x00, 0x04, 0x01, 0xDA, 0x8C, 0x91, 
42355
  0x2A, 0x02, 0x00, 0x00, 0x30, 0x00, 0x02, 0x00, 0x2A, 0x02, 0x01, 0x00, 0x34, 0x02, 0x00, 0x00, 
42356
  0x8A, 0x8B, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x05, 0x6F, 0x73, 0x2F, 0x72, 0x6D, 
42357
  0xD8, 0x05, 0x6F, 0x73, 0x2F, 0x72, 0x6D, 0xCF, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x63, 
42358
  0x6D, 0xD8, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x63, 0x6D, 0xCF, 0x06, 0x6D, 0x61, 0x70, 
42359
  0x63, 0x61, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x1B, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 
42360
  0xFF, 0xFF, 0x02, 0x80, 0xE9, 0x00, 0x35, 0xCE, 0x06, 0x6D, 0x61, 0x70, 0x63, 0x61, 0x74, 0xDA, 
42361
  0x18, 0xDA, 0x82, 0xE6, 0xDA, 0x81, 0x8D, 0x00, 0x80, 0xE9, 0x00, 0xDA, 0x80, 0xFB, 0x00, 0x80, 
42362
  0xE9, 0x01, 0xDA, 0x1F, 0x00, 0x80, 0xE9, 0x02, 0xDA, 0x81, 0x8E, 0x00, 0x80, 0xE9, 0x03, 0xDA, 
42363
  0x8C, 0x99, 0x01, 0x80, 0xE9, 0x05, 0xDA, 0x81, 0x08, 0x03, 0x80, 0xE8, 0x07, 0xDA, 0x81, 0x90, 
42364
  0x03, 0x80, 0xE8, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x53, 0x05, 0x13, 0x01, 
42365
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x55, 0x08, 0x13, 0x09, 0xCF, 0x07, 0x5F, 0x30, 
42366
  0x30, 0x30, 0x30, 0x30, 0x54, 0x0B, 0x13, 0x0A, 0xDA, 0x1E, 0x17, 0x2D, 0x0A, 0xDA, 0x81, 0x94, 
42367
  0x18, 0x2D, 0x09, 0xDA, 0x81, 0x95, 0x18, 0x2D, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
42368
  0x30, 0x57, 0x1B, 0x2D, 0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x56, 0x1E, 0x2D, 
42369
  0x0D, 0xDA, 0x1E, 0x31, 0x51, 0x0B, 0xDA, 0x81, 0x94, 0x33, 0x51, 0x0C, 0xDA, 0x81, 0x98, 0x34, 
42370
  0x51, 0x0A, 0xDA, 0x81, 0x95, 0x35, 0x51, 0x0D, 0xDA, 0x81, 0x99, 0x35, 0x51, 0x01, 0xCF, 0x07, 
42371
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x59, 0x38, 0x51, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
42372
  0x30, 0x30, 0x58, 0x3B, 0x51, 0x10, 0xDA, 0x1E, 0x55, 0x80, 0x80, 0x0C, 0xDA, 0x81, 0x94, 0x57, 
42373
  0x80, 0x80, 0x0D, 0xDA, 0x81, 0x98, 0x59, 0x80, 0x80, 0x0E, 0xDA, 0x81, 0x9C, 0x5A, 0x80, 0x80, 
42374
  0x0B, 0xDA, 0x81, 0x95, 0x5B, 0x80, 0x80, 0x0F, 0xDA, 0x81, 0x99, 0x5C, 0x80, 0x80, 0x10, 0xDA, 
42375
  0x81, 0x9D, 0x5C, 0x80, 0x80, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x30, 0x5F, 
42376
  0x80, 0x80, 0x12, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5A, 0x62, 0x80, 0x80, 0x13, 
42377
  0xDA, 0x1E, 0x80, 0x84, 0x80, 0xB9, 0x0D, 0xDA, 0x81, 0x94, 0x80, 0x86, 0x80, 0xB9, 0x0E, 0xDA, 
42378
  0x81, 0x98, 0x80, 0x88, 0x80, 0xB9, 0x0F, 0xDA, 0x81, 0x9C, 0x80, 0x8A, 0x80, 0xB9, 0x10, 0xDA, 
42379
  0x81, 0xA0, 0x80, 0x8B, 0x80, 0xB9, 0x0C, 0xDA, 0x81, 0x95, 0x80, 0x8C, 0x80, 0xB9, 0x11, 0xDA, 
42380
  0x81, 0x99, 0x80, 0x8D, 0x80, 0xB9, 0x12, 0xDA, 0x81, 0x9D, 0x80, 0x8E, 0x80, 0xB9, 0x13, 0xDA, 
42381
  0x81, 0xA1, 0x80, 0x8E, 0x80, 0xB9, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x32, 
42382
  0x80, 0x91, 0x80, 0xB9, 0x15, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x31, 0x80, 0x94, 
42383
  0x80, 0xB9, 0x16, 0xDA, 0x1E, 0x80, 0xBD, 0x80, 0xE8, 0x0D, 0xDA, 0x81, 0xA4, 0x80, 0xC1, 0x80, 
42384
  0xE8, 0x0E, 0xDA, 0x81, 0xA5, 0x80, 0xC2, 0x80, 0xE8, 0x0C, 0xDA, 0x81, 0xA6, 0x80, 0xC2, 0x80, 
42385
  0xE8, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x34, 0x80, 0xC5, 0x80, 0xE8, 0x10, 
42386
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x33, 0x80, 0xC8, 0x80, 0xE8, 0x11, 0xDA, 0x1E, 
42387
  0x80, 0xC9, 0x80, 0xDD, 0x0F, 0xDA, 0x80, 0x90, 0x80, 0xC9, 0x80, 0xDD, 0x07, 0xCF, 0x07, 0x5F, 
42388
  0x30, 0x30, 0x30, 0x30, 0x31, 0x35, 0x80, 0xCD, 0x80, 0xDB, 0x14, 0xDA, 0x81, 0xAA, 0x80, 0xCF, 
42389
  0x80, 0xDB, 0x15, 0xDA, 0x81, 0xAB, 0x80, 0xD1, 0x80, 0xDB, 0x16, 0xDA, 0x81, 0xAC, 0x3E, 0x04, 
42390
  0x00, 0x00, 0x19, 0x05, 0x04, 0x00, 0x3D, 0x06, 0x02, 0x00, 0x19, 0x07, 0x06, 0x00, 0x24, 0x06, 
42391
  0x07, 0x00, 0x1C, 0x06, 0x0F, 0x00, 0x26, 0x09, 0x00, 0x00, 0x47, 0x08, 0x01, 0x09, 0x19, 0x09, 
42392
  0x08, 0x00, 0x1D, 0x09, 0x0A, 0x00, 0x38, 0x08, 0x01, 0x09, 0x19, 0x0A, 0x08, 0x00, 0x2F, 0x0A, 
42393
  0x00, 0x00, 0x33, 0x08, 0x00, 0x00, 0x30, 0x05, 0x08, 0x00, 0x2A, 0x0C, 0x00, 0x00, 0x33, 0x0B, 
42394
  0x0C, 0x00, 0x47, 0x09, 0x01, 0x09, 0x1A, 0xF7, 0xFF, 0xFF, 0x1A, 0xD5, 0x00, 0x00, 0x24, 0x08, 
42395
  0x07, 0x01, 0x1C, 0x08, 0x19, 0x00, 0x3B, 0x09, 0x02, 0x00, 0x19, 0x0A, 0x09, 0x00, 0x26, 0x09, 
42396
  0x00, 0x00, 0x26, 0x0C, 0x00, 0x00, 0x47, 0x0B, 0x01, 0x0C, 0x19, 0x0C, 0x0B, 0x00, 0x1D, 0x0C, 
42397
  0x11, 0x00, 0x38, 0x0B, 0x01, 0x0C, 0x19, 0x0D, 0x0B, 0x00, 0x47, 0x09, 0x0A, 0x09, 0x26, 0x0E, 
42398
  0x00, 0x00, 0x23, 0x0B, 0x0E, 0x09, 0x1C, 0x0B, 0x03, 0x00, 0x1A, 0x0A, 0x00, 0x00, 0x1A, 0x01, 
42399
  0x00, 0x00, 0x38, 0x0B, 0x0A, 0x09, 0x30, 0x0D, 0x0B, 0x00, 0x33, 0x0E, 0x00, 0x00, 0x30, 0x05, 
42400
  0x0E, 0x00, 0x2A, 0x0F, 0x00, 0x00, 0x33, 0x0B, 0x0F, 0x00, 0x47, 0x0C, 0x01, 0x0C, 0x1A, 0xF0, 
42401
  0xFF, 0xFF, 0x1A, 0xBB, 0x00, 0x00, 0x24, 0x09, 0x07, 0x02, 0x1C, 0x09, 0x23, 0x00, 0x3B, 0x0A, 
42402
  0x02, 0x00, 0x19, 0x0B, 0x0A, 0x00, 0x3B, 0x0A, 0x02, 0x01, 0x19, 0x0C, 0x0A, 0x00, 0x26, 0x0A, 
42403
  0x00, 0x00, 0x26, 0x0D, 0x00, 0x00, 0x26, 0x0F, 0x00, 0x00, 0x47, 0x0E, 0x01, 0x0F, 0x19, 0x0F, 
42404
  0x0E, 0x00, 0x1D, 0x0F, 0x18, 0x00, 0x38, 0x0E, 0x01, 0x0F, 0x19, 0x10, 0x0E, 0x00, 0x47, 0x0A, 
42405
  0x0B, 0x0A, 0x26, 0x11, 0x00, 0x00, 0x23, 0x0E, 0x11, 0x0A, 0x1C, 0x0E, 0x03, 0x00, 0x1A, 0x11, 
42406
  0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x0D, 0x0C, 0x0D, 0x26, 0x11, 0x00, 0x00, 0x23, 0x0E, 
42407
  0x11, 0x0D, 0x1C, 0x0E, 0x03, 0x00, 0x1A, 0x0B, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x38, 0x0E, 
42408
  0x0B, 0x0A, 0x38, 0x11, 0x0C, 0x0D, 0x31, 0x10, 0x0E, 0x11, 0x33, 0x12, 0x00, 0x00, 0x30, 0x05, 
42409
  0x12, 0x00, 0x2A, 0x11, 0x00, 0x00, 0x33, 0x0E, 0x11, 0x00, 0x47, 0x0F, 0x01, 0x0F, 0x1A, 0xE9, 
42410
  0xFF, 0xFF, 0x1A, 0x97, 0x00, 0x00, 0x24, 0x0A, 0x07, 0x03, 0x1C, 0x0A, 0x2E, 0x00, 0x3B, 0x0B, 
42411
  0x02, 0x00, 0x19, 0x0C, 0x0B, 0x00, 0x3B, 0x0B, 0x02, 0x01, 0x19, 0x0D, 0x0B, 0x00, 0x3B, 0x0B, 
42412
  0x02, 0x02, 0x19, 0x0E, 0x0B, 0x00, 0x26, 0x0B, 0x00, 0x00, 0x26, 0x0F, 0x00, 0x00, 0x26, 0x10, 
42413
  0x00, 0x00, 0x26, 0x12, 0x00, 0x00, 0x47, 0x11, 0x01, 0x12, 0x19, 0x12, 0x11, 0x00, 0x1D, 0x12, 
42414
  0x20, 0x00, 0x38, 0x11, 0x01, 0x12, 0x19, 0x13, 0x11, 0x00, 0x47, 0x0B, 0x0C, 0x0B, 0x26, 0x14, 
42415
  0x00, 0x00, 0x23, 0x11, 0x14, 0x0B, 0x1C, 0x11, 0x03, 0x00, 0x1A, 0x19, 0x00, 0x00, 0x1A, 0x01, 
42416
  0x00, 0x00, 0x47, 0x0F, 0x0D, 0x0F, 0x26, 0x14, 0x00, 0x00, 0x23, 0x11, 0x14, 0x0F, 0x1C, 0x11, 
42417
  0x03, 0x00, 0x1A, 0x13, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x10, 0x0E, 0x10, 0x26, 0x14, 
42418
  0x00, 0x00, 0x23, 0x11, 0x14, 0x10, 0x1C, 0x11, 0x03, 0x00, 0x1A, 0x0D, 0x00, 0x00, 0x1A, 0x01, 
42419
  0x00, 0x00, 0x38, 0x11, 0x0C, 0x0B, 0x38, 0x14, 0x0D, 0x0F, 0x38, 0x15, 0x0E, 0x10, 0x31, 0x13, 
42420
  0x11, 0x14, 0x2F, 0x15, 0x00, 0x00, 0x33, 0x16, 0x00, 0x00, 0x30, 0x05, 0x16, 0x00, 0x2A, 0x14, 
42421
  0x00, 0x00, 0x33, 0x11, 0x14, 0x00, 0x47, 0x12, 0x01, 0x12, 0x1A, 0xE1, 0xFF, 0xFF, 0x1A, 0x68, 
42422
  0x00, 0x00, 0x24, 0x0B, 0x07, 0x04, 0x1C, 0x0B, 0x38, 0x00, 0x3B, 0x0C, 0x02, 0x00, 0x19, 0x0D, 
42423
  0x0C, 0x00, 0x3B, 0x0C, 0x02, 0x01, 0x19, 0x0E, 0x0C, 0x00, 0x3B, 0x0C, 0x02, 0x02, 0x19, 0x0F, 
42424
  0x0C, 0x00, 0x3B, 0x0C, 0x02, 0x03, 0x19, 0x10, 0x0C, 0x00, 0x26, 0x0C, 0x00, 0x00, 0x26, 0x11, 
42425
  0x00, 0x00, 0x26, 0x12, 0x00, 0x00, 0x26, 0x13, 0x00, 0x00, 0x26, 0x15, 0x00, 0x00, 0x47, 0x14, 
42426
  0x01, 0x15, 0x19, 0x15, 0x14, 0x00, 0x1D, 0x15, 0x27, 0x00, 0x38, 0x14, 0x01, 0x15, 0x19, 0x16, 
42427
  0x14, 0x00, 0x47, 0x0C, 0x0D, 0x0C, 0x26, 0x17, 0x00, 0x00, 0x23, 0x14, 0x17, 0x0C, 0x1C, 0x14, 
42428
  0x03, 0x00, 0x1A, 0x20, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x11, 0x0E, 0x11, 0x26, 0x17, 
42429
  0x00, 0x00, 0x23, 0x14, 0x17, 0x11, 0x1C, 0x14, 0x03, 0x00, 0x1A, 0x1A, 0x00, 0x00, 0x1A, 0x01, 
42430
  0x00, 0x00, 0x47, 0x12, 0x0F, 0x12, 0x26, 0x17, 0x00, 0x00, 0x23, 0x14, 0x17, 0x12, 0x1C, 0x14, 
42431
  0x03, 0x00, 0x1A, 0x14, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x13, 0x10, 0x13, 0x26, 0x17, 
42432
  0x00, 0x00, 0x23, 0x14, 0x17, 0x13, 0x1C, 0x14, 0x03, 0x00, 0x1A, 0x0E, 0x00, 0x00, 0x1A, 0x01, 
42433
  0x00, 0x00, 0x38, 0x14, 0x0D, 0x0C, 0x38, 0x17, 0x0E, 0x11, 0x38, 0x18, 0x0F, 0x12, 0x38, 0x19, 
42434
  0x10, 0x13, 0x31, 0x16, 0x14, 0x17, 0x30, 0x18, 0x19, 0x00, 0x33, 0x1A, 0x00, 0x00, 0x30, 0x05, 
42435
  0x1A, 0x00, 0x2A, 0x17, 0x00, 0x00, 0x33, 0x14, 0x17, 0x00, 0x47, 0x15, 0x01, 0x15, 0x1A, 0xDA, 
42436
  0xFF, 0xFF, 0x1A, 0x2F, 0x00, 0x00, 0x2F, 0x07, 0x00, 0x00, 0x2A, 0x0D, 0x01, 0x00, 0x33, 0x0C, 
42437
  0x0D, 0x00, 0x19, 0x0D, 0x0C, 0x00, 0x2F, 0x07, 0x00, 0x00, 0x2A, 0x0E, 0x01, 0x00, 0x33, 0x0C, 
42438
  0x0E, 0x00, 0x19, 0x0E, 0x0C, 0x00, 0x28, 0x0C, 0x00, 0x00, 0x26, 0x10, 0x00, 0x00, 0x47, 0x0F, 
42439
  0x01, 0x10, 0x19, 0x10, 0x0F, 0x00, 0x1D, 0x10, 0x22, 0x00, 0x38, 0x0F, 0x01, 0x10, 0x19, 0x11, 
42440
  0x0F, 0x00, 0x29, 0x0F, 0x00, 0x00, 0x21, 0x12, 0x0F, 0x07, 0x1C, 0x12, 0x12, 0x00, 0x38, 0x13, 
42441
  0x0D, 0x0F, 0x19, 0x14, 0x13, 0x00, 0x38, 0x13, 0x02, 0x0F, 0x19, 0x15, 0x13, 0x00, 0x47, 0x13, 
42442
  0x15, 0x14, 0x19, 0x16, 0x13, 0x00, 0x26, 0x17, 0x00, 0x00, 0x23, 0x13, 0x17, 0x16, 0x1C, 0x13, 
42443
  0x04, 0x00, 0x27, 0x0C, 0x00, 0x00, 0x1A, 0x07, 0x00, 0x00, 0x1A, 0x04, 0x00, 0x00, 0x3A, 0x0D, 
42444
  0x0F, 0x16, 0x38, 0x17, 0x15, 0x16, 0x3A, 0x0E, 0x0F, 0x17, 0x05, 0x0F, 0x0F, 0x01, 0x1A, 0xEE, 
42445
  0xFF, 0xFF, 0x1C, 0x0C, 0x03, 0x00, 0x1A, 0x0A, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x2F, 0x11, 
42446
  0x00, 0x00, 0x32, 0x0E, 0x00, 0x00, 0x33, 0x0F, 0x00, 0x00, 0x30, 0x05, 0x0F, 0x00, 0x2A, 0x13, 
42447
  0x00, 0x00, 0x33, 0x12, 0x13, 0x00, 0x47, 0x10, 0x01, 0x10, 0x1A, 0xDF, 0xFF, 0xFF, 0x03, 0x05, 
42448
  0x00, 0x00, 0x83, 0xDA, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42449
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42450
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42451
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42452
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42453
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42454
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42455
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42456
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42457
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42458
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42459
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42460
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42461
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42462
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42463
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42464
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42465
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42466
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42467
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42468
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42469
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42470
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42471
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42472
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42473
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42474
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42475
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42476
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42477
  0x03, 0x00, 0x03, 0xBF, 0xFB, 0x01, 0xDA, 0x87, 0xE0, 0xDA, 0x87, 0xFB, 0xCF, 0x0A, 0x6D, 0x61, 
42478
  0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0x31, 0x30, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 
42479
  0x6F, 0x67, 0x31, 0x30, 0xCF, 0x05, 0x65, 0x61, 0x63, 0x68, 0x6B, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 
42480
  0x00, 0x00, 0x05, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x05, 0x00, 0x04, 0xCE, 0x05, 
42481
  0x65, 0x61, 0x63, 0x68, 0x6B, 0xDA, 0x18, 0xDA, 0x89, 0xE9, 0xDA, 0x89, 0xE5, 0x00, 0x05, 0x00, 
42482
  0xDA, 0x1E, 0x00, 0x05, 0x01, 0xDA, 0x24, 0x00, 0x05, 0x02, 0xDA, 0x82, 0xB5, 0x00, 0x05, 0x03, 
42483
  0xDA, 0x8C, 0xAC, 0x2A, 0x04, 0x00, 0x00, 0x31, 0x00, 0x01, 0x04, 0x2F, 0x02, 0x00, 0x00, 0x2A, 
42484
  0x04, 0x01, 0x00, 0x34, 0x04, 0x00, 0x00, 0x82, 0x02, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42485
  0x00, 0x03, 0xCF, 0x04, 0x6E, 0x65, 0x78, 0x74, 0xDA, 0x89, 0xE7, 0xCF, 0x08, 0x66, 0x66, 0x69, 
42486
  0x2F, 0x63, 0x61, 0x6C, 0x6C, 0xDA, 0x87, 0xDF, 0xCF, 0x03, 0x61, 0x73, 0x6D, 0xD8, 0x03, 0x61, 
42487
  0x73, 0x6D, 0xCF, 0x05, 0x65, 0x61, 0x63, 0x68, 0x70, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 
42488
  0x05, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x05, 0x00, 0x04, 0xCE, 0x05, 0x65, 0x61, 
42489
  0x63, 0x68, 0x70, 0xDA, 0x18, 0xDA, 0x89, 0xEA, 0xDA, 0x89, 0xE5, 0x00, 0x05, 0x00, 0xDA, 0x1E, 
42490
  0x00, 0x05, 0x01, 0xDA, 0x24, 0x00, 0x05, 0x02, 0xDA, 0x82, 0xB5, 0x00, 0x05, 0x03, 0xDA, 0x8C, 
42491
  0xB3, 0x2A, 0x04, 0x00, 0x00, 0x31, 0x00, 0x01, 0x04, 0x2F, 0x02, 0x00, 0x00, 0x2A, 0x04, 0x01, 
42492
  0x00, 0x34, 0x04, 0x00, 0x00, 0x82, 0x07, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42493
  0xCF, 0x04, 0x6F, 0x6E, 0x65, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 
42494
  0x01, 0x01, 0x06, 0x00, 0x02, 0xCE, 0x04, 0x6F, 0x6E, 0x65, 0x3F, 0xDA, 0x18, 0xDA, 0x85, 0xC7, 
42495
  0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xDA, 0x8C, 0xB6, 0x29, 0x02, 0x01, 0x00, 0x30, 
42496
  0x00, 0x02, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x24, 0x03, 0x02, 0x00, 0x03, 
42497
  0x03, 0x00, 0x00, 0x83, 0x2A, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2C, 0x00, 0x2C, 
42498
  0xCF, 0x06, 0x65, 0x76, 0x65, 0x72, 0x79, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 
42499
  0x01, 0x01, 0x01, 0x00, 0x10, 0x00, 0x06, 0xCE, 0x06, 0x65, 0x76, 0x65, 0x72, 0x79, 0x3F, 0xDA, 
42500
  0x18, 0x00, 0x10, 0x00, 0xDA, 0x1F, 0x00, 0x10, 0x01, 0xDA, 0x8C, 0xB9, 0x00, 0x10, 0x02, 0xDA, 
42501
  0x81, 0x08, 0x00, 0x0F, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x6E, 0x03, 0x0F, 
42502
  0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x6D, 0x06, 0x0F, 0x05, 0xDA, 0x1E, 0x27, 
42503
  0x02, 0x00, 0x00, 0x26, 0x04, 0x00, 0x00, 0x47, 0x03, 0x00, 0x04, 0x19, 0x04, 0x03, 0x00, 0x1D, 
42504
  0x04, 0x0B, 0x00, 0x38, 0x03, 0x00, 0x04, 0x19, 0x05, 0x03, 0x00, 0x1C, 0x02, 0x02, 0x00, 0x1A, 
42505
  0x02, 0x00, 0x00, 0x1A, 0x06, 0x00, 0x00, 0x1C, 0x05, 0x02, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 
42506
  0x02, 0x05, 0x00, 0x47, 0x04, 0x00, 0x04, 0x1A, 0xF6, 0xFF, 0xFF, 0x03, 0x02, 0x00, 0x00, 0x85, 
42507
  0x96, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42508
  0x00, 0x03, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x0F, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0xBF, 
42509
  0xFB, 0x01, 0xCF, 0x07, 0x78, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0xD8, 0x07, 0x78, 0x70, 0x72, 
42510
  0x69, 0x6E, 0x74, 0x66, 0xCF, 0x05, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xDA, 0x87, 0xDA, 0xCF, 0x0D, 
42511
  0x2A, 0x70, 0x72, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0x70, 0x61, 0x74, 0x68, 0x2A, 0xD0, 0x0B, 0x70, 
42512
  0x72, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0x70, 0x61, 0x74, 0x68, 0xDA, 0x8A, 0xBD, 0xDA, 0x88, 0x06, 
42513
  0xCF, 0x07, 0x69, 0x6E, 0x74, 0x2F, 0x75, 0x36, 0x34, 0xD8, 0x07, 0x69, 0x6E, 0x74, 0x2F, 0x75, 
42514
  0x36, 0x34, 0xCF, 0x10, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x63, 0x68, 0x65, 0x63, 0x6B, 
42515
  0x2D, 0x73, 0x65, 0x74, 0xD8, 0x10, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x63, 0x68, 0x65, 
42516
  0x63, 0x6B, 0x2D, 0x73, 0x65, 0x74, 0xDA, 0x8B, 0x6B, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 
42517
  0x16, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x12, 0x66, 0x00, 0x0D, 0xCE, 0x05, 0x76, 0x61, 
42518
  0x72, 0x66, 0x6E, 0xDA, 0x18, 0xDA, 0x84, 0x56, 0xDA, 0x83, 0xE3, 0xDA, 0x82, 0xE9, 0xDA, 0x87, 
42519
  0x87, 0xDA, 0x81, 0xEB, 0xDA, 0x08, 0xCE, 0x11, 0x69, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 
42520
  0x6D, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0xDA, 0x80, 0xF5, 0xDA, 0x49, 0xDA, 0x84, 
42521
  0xF2, 0xDA, 0x80, 0xDF, 0xDA, 0x59, 0xDA, 0x85, 0x1E, 0xDA, 0x4A, 0xDA, 0x81, 0x60, 0xD7, 0x00, 
42522
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0E, 0x03, 0x03, 0x03, 0x02, 0x22, 0x00, 0x0D, 0xCE, 0x06, 0x70, 
42523
  0x75, 0x74, 0x2D, 0x69, 0x6E, 0xDA, 0x18, 0xDA, 0x8B, 0x12, 0xDA, 0x85, 0x14, 0x00, 0x22, 0x00, 
42524
  0xDA, 0x24, 0x00, 0x22, 0x01, 0xDA, 0x86, 0xFC, 0x00, 0x22, 0x02, 0xDA, 0x52, 0x00, 0x22, 0x03, 
42525
  0xCF, 0x06, 0x70, 0x75, 0x74, 0x2D, 0x69, 0x6E, 0x00, 0x22, 0x04, 0xDA, 0x83, 0xCE, 0x03, 0x22, 
42526
  0x05, 0xDA, 0x8B, 0x04, 0x09, 0x1C, 0x07, 0xDA, 0x80, 0x90, 0x09, 0x1C, 0x05, 0xCF, 0x07, 0x5F, 
42527
  0x30, 0x30, 0x30, 0x30, 0x32, 0x77, 0x0D, 0x1C, 0x0A, 0xDA, 0x22, 0x0F, 0x1C, 0x0B, 0xDA, 0x52, 
42528
  0x15, 0x18, 0x0D, 0xDA, 0x8A, 0x30, 0x1D, 0x22, 0x08, 0xDA, 0x8B, 0x14, 0x1F, 0x22, 0x0A, 0xDA, 
42529
  0x8B, 0x15, 0x19, 0x04, 0x00, 0x00, 0x3D, 0x05, 0x01, 0x00, 0x05, 0x06, 0x05, 0xFF, 0x19, 0x05, 
42530
  0x06, 0x00, 0x22, 0x07, 0x05, 0x00, 0x1C, 0x07, 0x04, 0x00, 0x2A, 0x08, 0x00, 0x00, 0x01, 0x08, 
42531
  0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x29, 0x07, 0x00, 0x00, 0x21, 0x08, 0x07, 0x05, 0x1C, 0x08, 
42532
  0x11, 0x00, 0x39, 0x09, 0x01, 0x07, 0x19, 0x0A, 0x09, 0x00, 0x39, 0x09, 0x04, 0x0A, 0x19, 0x0B, 
42533
  0x09, 0x00, 0x26, 0x0C, 0x00, 0x00, 0x23, 0x09, 0x0C, 0x0B, 0x1C, 0x09, 0x07, 0x00, 0x2A, 0x0D, 
42534
  0x01, 0x00, 0x33, 0x0C, 0x0D, 0x00, 0x19, 0x0D, 0x0C, 0x00, 0x3A, 0x04, 0x0A, 0x0D, 0x19, 0x04, 
42535
  0x0D, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x04, 0x0B, 0x00, 0x05, 0x07, 0x07, 0x01, 0x1A, 0xEF, 
42536
  0xFF, 0xFF, 0x39, 0x07, 0x01, 0x05, 0x19, 0x08, 0x07, 0x00, 0x39, 0x09, 0x04, 0x08, 0x19, 0x0A, 
42537
  0x09, 0x00, 0x3A, 0x04, 0x08, 0x02, 0x03, 0x00, 0x00, 0x00, 0x85, 0xFB, 0x03, 0x01, 0x11, 0x00, 
42538
  0x0E, 0x00, 0x03, 0x01, 0x07, 0x00, 0x03, 0x00, 0x13, 0x00, 0x13, 0x00, 0x03, 0x01, 0x03, 0x00, 
42539
  0x03, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x05, 0x01, 0x09, 0x00, 0x09, 0x00, 
42540
  0x05, 0x01, 0x12, 0x00, 0x12, 0x00, 0x07, 0x01, 0x09, 0x01, 0x09, 0xBF, 0xFD, 0x05, 0x04, 0x07, 
42541
  0xBF, 0xF9, 0x03, 0x00, 0x03, 0x08, 0x11, 0x00, 0x03, 0x01, 0x11, 0x00, 0x03, 0x01, 0x03, 0xBF, 
42542
  0xEE, 0x01, 0xDA, 0x81, 0xC8, 0xDA, 0x82, 0xB4, 0x00, 0x66, 0x00, 0xDA, 0x83, 0x0F, 0x00, 0x66, 
42543
  0x01, 0xDA, 0x82, 0xB5, 0x00, 0x66, 0x02, 0xDA, 0x8B, 0x6B, 0x04, 0x66, 0x04, 0xCF, 0x09, 0x65, 
42544
  0x78, 0x70, 0x61, 0x6E, 0x73, 0x69, 0x6F, 0x6E, 0x08, 0x66, 0x06, 0xCF, 0x05, 0x66, 0x62, 0x6F, 
42545
  0x64, 0x79, 0x0E, 0x66, 0x08, 0xDA, 0x84, 0x5E, 0x10, 0x66, 0x0A, 0xCF, 0x08, 0x6D, 0x65, 0x74, 
42546
  0x61, 0x64, 0x61, 0x74, 0x61, 0x10, 0x2C, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 
42547
  0x6A, 0x13, 0x2C, 0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x69, 0x16, 0x2C, 0x0D, 
42548
  0xDA, 0x85, 0x1B, 0x2E, 0x66, 0x0C, 0xDA, 0x62, 0x31, 0x66, 0x0D, 0xCF, 0x09, 0x6F, 0x6C, 0x64, 
42549
  0x2D, 0x65, 0x6E, 0x74, 0x72, 0x79, 0x34, 0x66, 0x0E, 0xDA, 0x80, 0xFB, 0x2F, 0x00, 0x00, 0x00, 
42550
  0x32, 0x01, 0x00, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 0x19, 0x04, 0x03, 0x00, 
42551
  0x2F, 0x04, 0x00, 0x00, 0x2A, 0x06, 0x01, 0x00, 0x33, 0x05, 0x06, 0x00, 0x19, 0x06, 0x05, 0x00, 
42552
  0x29, 0x07, 0x02, 0x00, 0x29, 0x08, 0xFE, 0xFF, 0x31, 0x04, 0x07, 0x08, 0x2A, 0x08, 0x02, 0x00, 
42553
  0x33, 0x07, 0x08, 0x00, 0x19, 0x08, 0x07, 0x00, 0x42, 0x09, 0x00, 0x00, 0x19, 0x0A, 0x09, 0x00, 
42554
  0x26, 0x0C, 0x00, 0x00, 0x47, 0x0B, 0x08, 0x0C, 0x19, 0x0C, 0x0B, 0x00, 0x1D, 0x0C, 0x18, 0x00, 
42555
  0x38, 0x0B, 0x08, 0x0C, 0x19, 0x0D, 0x0B, 0x00, 0x2F, 0x0D, 0x00, 0x00, 0x2A, 0x0E, 0x03, 0x00, 
42556
  0x33, 0x0B, 0x0E, 0x00, 0x1C, 0x0B, 0x04, 0x00, 0x27, 0x0E, 0x00, 0x00, 0x3A, 0x0A, 0x0D, 0x0E, 
42557
  0x1A, 0x0D, 0x00, 0x00, 0x2F, 0x0D, 0x00, 0x00, 0x2A, 0x0F, 0x04, 0x00, 0x33, 0x0E, 0x0F, 0x00, 
42558
  0x1C, 0x0E, 0x04, 0x00, 0x2A, 0x0F, 0x05, 0x00, 0x3A, 0x0A, 0x0F, 0x0D, 0x1A, 0x06, 0x00, 0x00, 
42559
  0x2A, 0x0F, 0x06, 0x00, 0x30, 0x0F, 0x0D, 0x00, 0x2A, 0x10, 0x07, 0x00, 0x33, 0x0F, 0x10, 0x00, 
42560
  0x01, 0x0F, 0x00, 0x00, 0x47, 0x0C, 0x08, 0x0C, 0x1A, 0xE9, 0xFF, 0xFF, 0x2A, 0x0C, 0x08, 0x00, 
42561
  0x33, 0x0B, 0x0C, 0x00, 0x19, 0x0C, 0x0B, 0x00, 0x2A, 0x0D, 0x08, 0x00, 0x33, 0x0B, 0x0D, 0x00, 
42562
  0x19, 0x0D, 0x0B, 0x00, 0x2A, 0x0E, 0x08, 0x00, 0x33, 0x0B, 0x0E, 0x00, 0x19, 0x0E, 0x0B, 0x00, 
42563
  0x2A, 0x0F, 0x09, 0x00, 0x30, 0x0F, 0x00, 0x00, 0x43, 0x0B, 0x00, 0x00, 0x2A, 0x10, 0x0A, 0x00, 
42564
  0x30, 0x10, 0x0B, 0x00, 0x43, 0x0F, 0x00, 0x00, 0x30, 0x0D, 0x0F, 0x00, 0x44, 0x0B, 0x00, 0x00, 
42565
  0x26, 0x10, 0x00, 0x00, 0x2F, 0x10, 0x00, 0x00, 0x3E, 0x0F, 0x00, 0x00, 0x2A, 0x11, 0x0B, 0x00, 
42566
  0x30, 0x11, 0x0F, 0x00, 0x42, 0x10, 0x00, 0x00, 0x2A, 0x11, 0x0C, 0x00, 0x31, 0x11, 0x0D, 0x10, 
42567
  0x43, 0x0F, 0x00, 0x00, 0x2A, 0x11, 0x0D, 0x00, 0x31, 0x11, 0x0C, 0x0F, 0x43, 0x10, 0x00, 0x00, 
42568
  0x2A, 0x11, 0x09, 0x00, 0x30, 0x11, 0x00, 0x00, 0x43, 0x0F, 0x00, 0x00, 0x2A, 0x12, 0x0E, 0x00, 
42569
  0x31, 0x12, 0x0F, 0x0C, 0x43, 0x11, 0x00, 0x00, 0x2A, 0x12, 0x0D, 0x00, 0x31, 0x12, 0x0E, 0x06, 
42570
  0x43, 0x0F, 0x00, 0x00, 0x2A, 0x13, 0x0B, 0x00, 0x29, 0x14, 0x00, 0x00, 0x30, 0x13, 0x14, 0x00, 
42571
  0x44, 0x12, 0x00, 0x00, 0x2A, 0x14, 0x0F, 0x00, 0x31, 0x14, 0x0C, 0x12, 0x2F, 0x0E, 0x00, 0x00, 
42572
  0x43, 0x13, 0x00, 0x00, 0x2A, 0x14, 0x09, 0x00, 0x30, 0x14, 0x0A, 0x00, 0x43, 0x12, 0x00, 0x00, 
42573
  0x2A, 0x15, 0x10, 0x00, 0x31, 0x15, 0x0C, 0x12, 0x43, 0x14, 0x00, 0x00, 0x2A, 0x15, 0x11, 0x00, 
42574
  0x31, 0x15, 0x0B, 0x10, 0x31, 0x11, 0x0F, 0x13, 0x30, 0x14, 0x0E, 0x00, 0x43, 0x12, 0x00, 0x00, 
42575
  0x03, 0x12, 0x00, 0x00, 0x88, 0xA5, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x03, 0x01, 
42576
  0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 
42577
  0x12, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42578
  0x03, 0x00, 0x03, 0x02, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x01, 0x14, 0x00, 0x14, 
42579
  0xBF, 0xFF, 0x05, 0x02, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFE, 0x05, 0x02, 0x13, 0x00, 0x13, 
42580
  0xBF, 0xFE, 0x05, 0x03, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0xBF, 0xFC, 0x03, 
42581
  0x00, 0x03, 0x05, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42582
  0x00, 0x03, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42583
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42584
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42585
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42586
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42587
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42588
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCF, 0x09, 0x2A, 0x74, 0x61, 0x73, 0x6B, 0x2D, 0x69, 0x64, 
42589
  0x2A, 0xD0, 0x07, 0x74, 0x61, 0x73, 0x6B, 0x2D, 0x69, 0x64, 0xCF, 0x08, 0x65, 0x76, 0x2F, 0x63, 
42590
  0x68, 0x75, 0x6E, 0x6B, 0xD8, 0x08, 0x65, 0x76, 0x2F, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0xCF, 0x07, 
42591
  0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0xDA, 0x8C, 0x7E, 0xCF, 0x0E, 0x6E, 0x65, 0x74, 0x2F, 
42592
  0x73, 0x65, 0x74, 0x73, 0x6F, 0x63, 0x6B, 0x6F, 0x70, 0x74, 0xD8, 0x0E, 0x6E, 0x65, 0x74, 0x2F, 
42593
  0x73, 0x65, 0x74, 0x73, 0x6F, 0x63, 0x6B, 0x6F, 0x70, 0x74, 0xDA, 0x85, 0xCA, 0xDA, 0x85, 0xC7, 
42594
  0xCF, 0x07, 0x6F, 0x73, 0x2F, 0x64, 0x61, 0x74, 0x65, 0xD8, 0x07, 0x6F, 0x73, 0x2F, 0x64, 0x61, 
42595
  0x74, 0x65, 0xCF, 0x0A, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x6C, 0x65, 0x61, 0x76, 0x65, 0xD7, 0x00, 
42596
  0xCD, 0x00, 0xDD, 0x00, 0x00, 0x11, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x04, 0x21, 0x00, 
42597
  0x0B, 0xCE, 0x0A, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x6C, 0x65, 0x61, 0x76, 0x65, 0xDA, 0x18, 0xDA, 
42598
  0x88, 0x75, 0xDA, 0x81, 0x8A, 0xDA, 0x83, 0xA3, 0xDA, 0x81, 0x8C, 0x00, 0x21, 0x00, 0xCF, 0x04, 
42599
  0x63, 0x6F, 0x6C, 0x73, 0x00, 0x21, 0x01, 0xDA, 0x8C, 0xDD, 0x01, 0x21, 0x03, 0xDA, 0x81, 0x08, 
42600
  0x03, 0x21, 0x05, 0xCF, 0x04, 0x6E, 0x63, 0x6F, 0x6C, 0x0D, 0x1F, 0x07, 0xDA, 0x80, 0x84, 0x0E, 
42601
  0x1F, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x4F, 0x0E, 0x1F, 0x07, 0xCF, 0x07, 
42602
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x50, 0x11, 0x1F, 0x0A, 0xDA, 0x80, 0x90, 0x12, 0x1D, 0x0B, 
42603
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x4D, 0x12, 0x1D, 0x05, 0xCF, 0x07, 0x5F, 0x30, 
42604
  0x30, 0x30, 0x30, 0x32, 0x4E, 0x15, 0x1D, 0x0D, 0xCF, 0x02, 0x63, 0x69, 0x3E, 0x02, 0x00, 0x00, 
42605
  0x19, 0x03, 0x02, 0x00, 0x3D, 0x04, 0x00, 0x00, 0x19, 0x05, 0x04, 0x00, 0x20, 0x06, 0x05, 0x00, 
42606
  0x1C, 0x06, 0x1B, 0x00, 0x2A, 0x07, 0x00, 0x00, 0x30, 0x07, 0x00, 0x00, 0x2A, 0x08, 0x01, 0x00, 
42607
  0x33, 0x07, 0x08, 0x00, 0x32, 0x07, 0x00, 0x00, 0x2A, 0x09, 0x02, 0x00, 0x33, 0x08, 0x09, 0x00, 
42608
  0x19, 0x07, 0x08, 0x00, 0x29, 0x08, 0x00, 0x00, 0x21, 0x09, 0x08, 0x07, 0x1C, 0x09, 0x0F, 0x00, 
42609
  0x19, 0x0A, 0x08, 0x00, 0x29, 0x0B, 0x00, 0x00, 0x21, 0x0C, 0x0B, 0x05, 0x1C, 0x0C, 0x09, 0x00, 
42610
  0x19, 0x0D, 0x0B, 0x00, 0x38, 0x0E, 0x00, 0x0D, 0x38, 0x0F, 0x0E, 0x0A, 0x30, 0x03, 0x0F, 0x00, 
42611
  0x2A, 0x10, 0x03, 0x00, 0x33, 0x0E, 0x10, 0x00, 0x05, 0x0B, 0x0B, 0x01, 0x1A, 0xF7, 0xFF, 0xFF, 
42612
  0x05, 0x08, 0x08, 0x01, 0x1A, 0xF1, 0xFF, 0xFF, 0x1A, 0x01, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 
42613
  0x86, 0x70, 0x03, 0x00, 0x03, 0x01, 0x0D, 0x00, 0x03, 0x01, 0x09, 0x00, 0x03, 0x01, 0x14, 0x00, 
42614
  0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x01, 0x05, 0x00, 
42615
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x02, 0x1B, 0x00, 
42616
  0x17, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFE, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42617
  0xBF, 0xFE, 0x03, 0xBF, 0xFB, 0x01, 0xCF, 0x0D, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x69, 
42618
  0x6E, 0x73, 0x65, 0x72, 0x74, 0xD8, 0x0D, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x69, 0x6E, 
42619
  0x73, 0x65, 0x72, 0x74, 0xCF, 0x06, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0xDA, 0x86, 0xCA, 0xCF, 
42620
  0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x63, 0x65, 0x69, 0x6C, 0xDA, 0x86, 0x4E, 0xDA, 0x87, 0x75, 
42621
  0xDA, 0x87, 0x72, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0x31, 0x70, 0xD8, 
42622
  0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0x31, 0x70, 0xCF, 0x10, 0x62, 0x75, 0x66, 
42623
  0x66, 0x65, 0x72, 0x2F, 0x62, 0x69, 0x74, 0x2D, 0x63, 0x6C, 0x65, 0x61, 0x72, 0xD8, 0x10, 0x62, 
42624
  0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x62, 0x69, 0x74, 0x2D, 0x63, 0x6C, 0x65, 0x61, 0x72, 0xCF, 
42625
  0x0D, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x75, 0x6E, 0x62, 0x72, 0x65, 0x61, 0x6B, 0xD8, 0x0D, 
42626
  0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x75, 0x6E, 0x62, 0x72, 0x65, 0x61, 0x6B, 0xCF, 0x0F, 0x6D, 
42627
  0x61, 0x6B, 0x65, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x2D, 0x64, 0x69, 0x63, 0x74, 0xDA, 0x8C, 
42628
  0x94, 0xCF, 0x08, 0x6F, 0x73, 0x2F, 0x77, 0x68, 0x69, 0x63, 0x68, 0xD8, 0x08, 0x6F, 0x73, 0x2F, 
42629
  0x77, 0x68, 0x69, 0x63, 0x68, 0xCF, 0x0C, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x63, 0x6F, 0x6E, 
42630
  0x63, 0x61, 0x74, 0xDA, 0x82, 0xE6, 0xDA, 0x87, 0xE2, 0xD7, 0x01, 0xCD, 0x03, 0xFF, 0x00, 0x00, 
42631
  0x0E, 0x01, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x07, 0x2B, 0x01, 0x01, 0x09, 0xCE, 0x0B, 0x66, 
42632
  0x66, 0x69, 0x2F, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0xDA, 0x18, 0xDA, 0x87, 0xDC, 0xDA, 
42633
  0x87, 0xDD, 0xDA, 0x84, 0xA5, 0xD0, 0x0B, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2D, 0x70, 0x61, 
42634
  0x74, 0x68, 0xDA, 0x87, 0xDE, 0xDA, 0x87, 0x36, 0xDA, 0x81, 0x60, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 
42635
  0x87, 0xE0, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0xE1, 0x00, 0x2B, 0x00, 0xCF, 0x0B, 0x6E, 0x61, 
42636
  0x74, 0x69, 0x76, 0x65, 0x2D, 0x70, 0x61, 0x74, 0x68, 0x02, 0x2B, 0x05, 0xDA, 0x87, 0xEB, 0x05, 
42637
  0x2B, 0x06, 0xCF, 0x0B, 0x6D, 0x61, 0x70, 0x2D, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x06, 
42638
  0x2B, 0x01, 0xDA, 0x87, 0xE2, 0x0D, 0x2B, 0x07, 0xDA, 0x8C, 0xF9, 0x15, 0x2B, 0x09, 0xDA, 0x87, 
42639
  0xEE, 0x1C, 0x2B, 0x0B, 0xCF, 0x08, 0x6C, 0x61, 0x7A, 0x79, 0x2D, 0x6C, 0x69, 0x62, 0x2A, 0x05, 
42640
  0x00, 0x00, 0x38, 0x04, 0x01, 0x05, 0x19, 0x05, 0x04, 0x00, 0x2A, 0x06, 0x01, 0x00, 0x38, 0x04, 
42641
  0x01, 0x06, 0x19, 0x06, 0x04, 0x00, 0x2C, 0x01, 0x00, 0x00, 0x26, 0x08, 0x00, 0x00, 0x23, 0x07, 
42642
  0x08, 0x06, 0x1C, 0x07, 0x03, 0x00, 0x2B, 0x04, 0x00, 0x02, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x04, 
42643
  0x06, 0x00, 0x19, 0x07, 0x04, 0x00, 0x1C, 0x05, 0x03, 0x00, 0x26, 0x08, 0x00, 0x00, 0x1A, 0x05, 
42644
  0x00, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x0A, 0x02, 0x00, 0x33, 0x09, 0x0A, 0x00, 0x19, 0x08, 
42645
  0x09, 0x00, 0x19, 0x09, 0x08, 0x00, 0x1C, 0x05, 0x05, 0x00, 0x2E, 0x0B, 0x00, 0x00, 0x33, 0x0C, 
42646
  0x0B, 0x00, 0x19, 0x0A, 0x0C, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x26, 0x0A, 0x00, 0x00, 0x19, 0x0B, 
42647
  0x0A, 0x00, 0x2A, 0x0C, 0x00, 0x00, 0x2A, 0x0D, 0x03, 0x00, 0x31, 0x0C, 0x05, 0x0D, 0x2A, 0x0C, 
42648
  0x04, 0x00, 0x31, 0x00, 0x0C, 0x0B, 0x2A, 0x0C, 0x01, 0x00, 0x2A, 0x0D, 0x05, 0x00, 0x31, 0x0C, 
42649
  0x07, 0x0D, 0x2F, 0x09, 0x00, 0x00, 0x42, 0x0C, 0x00, 0x00, 0x2B, 0x0D, 0x00, 0x00, 0x30, 0x0D, 
42650
  0x0C, 0x00, 0x2A, 0x0D, 0x06, 0x00, 0x34, 0x0D, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x02, 0xF6, 0x00, 
42651
  0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x01, 0x08, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x00, 
42652
  0xDA, 0x8C, 0xF8, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x87, 0xEB, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8C, 
42653
  0xF9, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0xE2, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x8C, 0xF9, 0xBF, 
42654
  0xFF, 0x00, 0x09, 0xDA, 0x87, 0xEE, 0x00, 0x04, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
42655
  0x36, 0x67, 0x01, 0x04, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x68, 0x26, 0x00, 
42656
  0x00, 0x00, 0x26, 0x01, 0x00, 0x00, 0x2E, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 
42657
  0xCD, 0x00, 0xD4, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x0D, 0x02, 0x08, 0xDA, 0x18, 0xDA, 
42658
  0x84, 0xA5, 0xBF, 0xFF, 0x01, 0x00, 0xDA, 0x8C, 0xF8, 0xBF, 0xFF, 0x01, 0x05, 0xDA, 0x87, 0xEB, 
42659
  0xBF, 0xFF, 0x01, 0x06, 0xDA, 0x8C, 0xF9, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x87, 0xE2, 0xBF, 0xFF, 
42660
  0x01, 0x07, 0xDA, 0x8C, 0xF9, 0xBF, 0xFF, 0x01, 0x09, 0xDA, 0x87, 0xEE, 0xBF, 0xFF, 0x00, 0x00, 
42661
  0xDA, 0x8C, 0xFB, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8C, 0xFC, 0x2B, 0x00, 0x00, 0x01, 0x1C, 0x00, 
42662
  0x03, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x2D, 0x00, 
42663
  0x00, 0x01, 0x2B, 0x00, 0x01, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x01, 0x00, 0x00, 0x33, 0x00, 
42664
  0x01, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 
42665
  0x00, 0x8E, 0xA3, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x23, 
42666
  0x00, 0x23, 0x00, 0x23, 0x00, 0x23, 0x00, 0x23, 0x00, 0x1C, 0x00, 0x1C, 0x8E, 0xA3, 0x1C, 0x00, 
42667
  0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x00, 0x8E, 0x9D, 0x03, 0x00, 0x03, 0x00, 0x03, 
42668
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x04, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42669
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x1B, 0x00, 0x1B, 
42670
  0x00, 0x1B, 0x00, 0x0E, 0x00, 0x05, 0x01, 0x13, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x13, 0x00, 0x13, 
42671
  0x00, 0x13, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42672
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42673
  0x01, 0x00, 0x00, 0x00, 0xDB, 0x01, 0xCF, 0x08, 0x63, 0x6C, 0x69, 0x2D, 0x6D, 0x61, 0x69, 0x6E, 
42674
  0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x27, 0x01, 0x01, 0x01, 0x45, 0x81, 0x45, 0x00, 0x19, 
42675
  0x23, 0xCE, 0x08, 0x63, 0x6C, 0x69, 0x2D, 0x6D, 0x61, 0x69, 0x6E, 0xDA, 0x18, 0xDA, 0x84, 0x6E, 
42676
  0xDA, 0x81, 0x60, 0xCE, 0x0A, 0x4A, 0x41, 0x4E, 0x45, 0x54, 0x5F, 0x50, 0x41, 0x54, 0x48, 0xDA, 
42677
  0x8C, 0x6B, 0xDA, 0x86, 0xA1, 0xCE, 0x0D, 0x4A, 0x41, 0x4E, 0x45, 0x54, 0x5F, 0x50, 0x52, 0x4F, 
42678
  0x46, 0x49, 0x4C, 0x45, 0xDA, 0x8C, 0xC2, 0xCE, 0x08, 0x4E, 0x4F, 0x5F, 0x43, 0x4F, 0x4C, 0x4F, 
42679
  0x52, 0xDA, 0x80, 0x8D, 0xDA, 0x8B, 0x26, 0xDA, 0x8A, 0x85, 0xDA, 0x83, 0x8C, 0xCE, 0x01, 0x64, 
42680
  0xCE, 0x01, 0x65, 0xCE, 0x01, 0x68, 0xCE, 0x01, 0x69, 0xCE, 0x01, 0x6B, 0xCE, 0x01, 0x6C, 0xCE, 
42681
  0x01, 0x6D, 0xDA, 0x82, 0x96, 0xCE, 0x01, 0x6E, 0xCE, 0x01, 0x70, 0xCE, 0x01, 0x71, 0xCE, 0x01, 
42682
  0x72, 0xCE, 0x01, 0x73, 0xCE, 0x01, 0x76, 0xCE, 0x01, 0x77, 0xCE, 0x01, 0x78, 0xCE, 0x01, 0x45, 
42683
  0xCE, 0x01, 0x4E, 0xCE, 0x01, 0x52, 0xDA, 0x81, 0xFC, 0xDA, 0x82, 0xE5, 0xDA, 0x80, 0xF0, 0xDA, 
42684
  0x87, 0x8D, 0xDA, 0x82, 0x5B, 0xDA, 0x82, 0x5C, 0xDA, 0x80, 0xC8, 0xDA, 0x84, 0x27, 0xD7, 0x00, 
42685
  0xCD, 0x02, 0xFE, 0x00, 0x00, 0x0E, 0x03, 0x03, 0x03, 0x0B, 0x34, 0x00, 0x01, 0x0C, 0xCE, 0x08, 
42686
  0x72, 0x75, 0x6E, 0x2D, 0x6D, 0x61, 0x69, 0x6E, 0xDA, 0x18, 0xCF, 0x04, 0x6D, 0x61, 0x69, 0x6E, 
42687
  0xDA, 0x06, 0xDA, 0x59, 0xDA, 0x80, 0xC8, 0xDA, 0x82, 0x14, 0xD0, 0x01, 0x79, 0xDA, 0x81, 0x5E, 
42688
  0xDA, 0x82, 0x4A, 0xDA, 0x80, 0xBE, 0xDA, 0x80, 0xBF, 0xDA, 0x80, 0xB8, 0x00, 0x34, 0x00, 0xDA, 
42689
  0x80, 0xBA, 0x00, 0x34, 0x01, 0xCF, 0x07, 0x73, 0x75, 0x62, 0x61, 0x72, 0x67, 0x73, 0x00, 0x34, 
42690
  0x02, 0xDA, 0x86, 0xCC, 0x00, 0x34, 0x03, 0xCF, 0x08, 0x72, 0x75, 0x6E, 0x2D, 0x6D, 0x61, 0x69, 
42691
  0x6E, 0x02, 0x34, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x76, 0x03, 0x33, 0x05, 
42692
  0xDA, 0x62, 0x06, 0x0F, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x78, 0x0F, 0x33, 
42693
  0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x77, 0x17, 0x32, 0x07, 0xDA, 0x82, 0x28, 
42694
  0x19, 0x32, 0x08, 0xCF, 0x09, 0x77, 0x72, 0x61, 0x70, 0x2D, 0x6D, 0x61, 0x69, 0x6E, 0x1D, 0x32, 
42695
  0x09, 0xDA, 0x80, 0xFB, 0x1E, 0x32, 0x04, 0xDA, 0x81, 0x08, 0x2A, 0x05, 0x00, 0x00, 0x38, 0x04, 
42696
  0x00, 0x05, 0x19, 0x05, 0x04, 0x00, 0x1C, 0x05, 0x30, 0x00, 0x2A, 0x06, 0x01, 0x00, 0x39, 0x04, 
42697
  0x05, 0x06, 0x19, 0x06, 0x04, 0x00, 0x1C, 0x06, 0x03, 0x00, 0x19, 0x04, 0x06, 0x00, 0x1A, 0x06, 
42698
  0x00, 0x00, 0x2A, 0x08, 0x02, 0x00, 0x39, 0x07, 0x05, 0x08, 0x29, 0x09, 0x00, 0x00, 0x38, 0x08, 
42699
  0x07, 0x09, 0x19, 0x04, 0x08, 0x00, 0x19, 0x06, 0x04, 0x00, 0x1C, 0x06, 0x22, 0x00, 0x2A, 0x08, 
42700
  0x03, 0x00, 0x39, 0x07, 0x00, 0x08, 0x1C, 0x07, 0x03, 0x00, 0x2A, 0x04, 0x04, 0x00, 0x1A, 0x02, 
42701
  0x00, 0x00, 0x2A, 0x04, 0x05, 0x00, 0x19, 0x07, 0x04, 0x00, 0x2E, 0x04, 0x00, 0x00, 0x19, 0x08, 
42702
  0x04, 0x00, 0x31, 0x08, 0x07, 0x00, 0x2A, 0x09, 0x06, 0x00, 0x33, 0x04, 0x09, 0x00, 0x19, 0x09, 
42703
  0x04, 0x00, 0x26, 0x04, 0x00, 0x00, 0x2F, 0x09, 0x00, 0x00, 0x2A, 0x0B, 0x07, 0x00, 0x33, 0x0A, 
42704
  0x0B, 0x00, 0x1C, 0x0A, 0x0F, 0x00, 0x35, 0x04, 0x09, 0x04, 0x2F, 0x09, 0x00, 0x00, 0x2A, 0x0C, 
42705
  0x08, 0x00, 0x33, 0x0B, 0x0C, 0x00, 0x2A, 0x0D, 0x09, 0x00, 0x48, 0x0C, 0x0D, 0x0B, 0x1C, 0x0C, 
42706
  0x07, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x0D, 0x0A, 0x00, 0x33, 0x0B, 0x0D, 0x00, 0x30, 0x09, 
42707
  0x04, 0x00, 0x33, 0x0D, 0x0B, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x1A, 0xEF, 0xFF, 0xFF, 0x04, 0x00, 
42708
  0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x02, 
42709
  0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x04, 0x01, 0x02, 0xCE, 0x09, 0x77, 0x72, 0x61, 
42710
  0x70, 0x2D, 0x6D, 0x61, 0x69, 0x6E, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8D, 0x17, 0x00, 
42711
  0x04, 0x00, 0xDA, 0x8D, 0x1E, 0x2B, 0x01, 0x00, 0x01, 0x32, 0x01, 0x00, 0x00, 0x2B, 0x01, 0x00, 
42712
  0x06, 0x34, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0x8F, 0x1E, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
42713
  0x8F, 0x1A, 0x14, 0x00, 0x14, 0x00, 0x03, 0x00, 0x03, 0x01, 0x17, 0x00, 0x17, 0x00, 0x13, 0x00, 
42714
  0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x13, 0xBF, 
42715
  0xFF, 0x03, 0x00, 0x03, 0x02, 0x14, 0x00, 0x14, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 
42716
  0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x02, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x05, 
42717
  0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x10, 0x01, 0x19, 0x00, 0x19, 0x00, 0x19, 
42718
  0x00, 0x0D, 0x00, 0x0D, 0x00, 0x07, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x09, 0x00, 0x09, 
42719
  0xBF, 0xFF, 0x07, 0xBF, 0xFE, 0x05, 0x00, 0x05, 0xBF, 0xF9, 0x03, 0x00, 0x03, 0x42, 0x00, 0x00, 
42720
  0x00, 0xDA, 0x80, 0xB2, 0xDA, 0x82, 0x16, 0xDA, 0x81, 0xD8, 0xDA, 0x8B, 0x46, 0xDA, 0x8B, 0x7D, 
42721
  0xDA, 0x8B, 0x9C, 0xDA, 0x80, 0xEF, 0xD0, 0x05, 0x73, 0x74, 0x64, 0x69, 0x6E, 0xDA, 0x8C, 0xF3, 
42722
  0xD8, 0x07, 0x6F, 0x73, 0x2F, 0x61, 0x72, 0x63, 0x68, 0xDA, 0x8A, 0x9F, 0xCE, 0x06, 0x4A, 0x61, 
42723
  0x6E, 0x65, 0x74, 0x20, 0xDA, 0x89, 0x38, 0xDA, 0x85, 0xB6, 0xDA, 0x81, 0x82, 0xDA, 0x84, 0x37, 
42724
  0xCE, 0x13, 0x20, 0x2D, 0x20, 0x27, 0x28, 0x64, 0x6F, 0x63, 0x29, 0x27, 0x20, 0x66, 0x6F, 0x72, 
42725
  0x20, 0x68, 0x65, 0x6C, 0x70, 0xDA, 0x81, 0x5C, 0xDA, 0x80, 0xC4, 0xDA, 0x80, 0xDF, 0xDA, 0x80, 
42726
  0xC5, 0xDA, 0x8A, 0x2A, 0xDA, 0x82, 0x46, 0xCE, 0x05, 0x25, 0x2E, 0x32, 0x30, 0x51, 0xCE, 0x05, 
42727
  0x25, 0x2E, 0x32, 0x30, 0x71, 0xDA, 0x80, 0xC1, 0xDA, 0x81, 0x5F, 0xDA, 0x83, 0x4A, 0xDA, 0x80, 
42728
  0xB0, 0x00, 0x81, 0x45, 0x00, 0xDA, 0x80, 0xAB, 0x00, 0x81, 0x45, 0x01, 0xDA, 0x8C, 0xFD, 0x04, 
42729
  0x81, 0x45, 0x03, 0xCF, 0x0B, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x2D, 0x72, 0x65, 0x70, 0x6C, 
42730
  0x05, 0x81, 0x45, 0x04, 0xCF, 0x07, 0x6E, 0x6F, 0x2D, 0x66, 0x69, 0x6C, 0x65, 0x06, 0x81, 0x45, 
42731
  0x05, 0xCF, 0x05, 0x71, 0x75, 0x69, 0x65, 0x74, 0x07, 0x81, 0x45, 0x06, 0xCF, 0x09, 0x72, 0x61, 
42732
  0x77, 0x2D, 0x73, 0x74, 0x64, 0x69, 0x6E, 0x08, 0x81, 0x45, 0x07, 0xCF, 0x0A, 0x68, 0x61, 0x6E, 
42733
  0x64, 0x6C, 0x65, 0x6F, 0x70, 0x74, 0x73, 0x09, 0x81, 0x45, 0x08, 0xCF, 0x0D, 0x65, 0x78, 0x69, 
42734
  0x74, 0x2D, 0x6F, 0x6E, 0x2D, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x0A, 0x81, 0x45, 0x09, 0xDA, 0x83, 
42735
  0x64, 0x0B, 0x81, 0x45, 0x0A, 0xCF, 0x0A, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2D, 0x66, 0x6C, 0x61, 
42736
  0x67, 0x0C, 0x81, 0x45, 0x0B, 0xCF, 0x0C, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x2D, 0x6F, 
42737
  0x6E, 0x6C, 0x79, 0x0D, 0x81, 0x45, 0x0C, 0xCF, 0x0A, 0x77, 0x61, 0x72, 0x6E, 0x2D, 0x6C, 0x65, 
42738
  0x76, 0x65, 0x6C, 0x0E, 0x81, 0x45, 0x0D, 0xCF, 0x0B, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2D, 0x6C, 
42739
  0x65, 0x76, 0x65, 0x6C, 0x0F, 0x81, 0x45, 0x0E, 0xCF, 0x0C, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 
42740
  0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x14, 0x1B, 0x10, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
42741
  0x36, 0x79, 0x15, 0x1A, 0x10, 0xCF, 0x02, 0x6A, 0x70, 0x1F, 0x26, 0x10, 0xCF, 0x07, 0x5F, 0x30, 
42742
  0x30, 0x30, 0x30, 0x36, 0x7A, 0x20, 0x25, 0x10, 0xCF, 0x08, 0x6A, 0x70, 0x72, 0x6F, 0x66, 0x69, 
42743
  0x6C, 0x65, 0x2D, 0x35, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x41, 0x36, 0x81, 
42744
  0x45, 0x10, 0xCF, 0x0E, 0x67, 0x65, 0x74, 0x2D, 0x6C, 0x69, 0x6E, 0x74, 0x2D, 0x6C, 0x65, 0x76, 
42745
  0x65, 0x6C, 0x6E, 0x81, 0x45, 0x12, 0xCF, 0x08, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x73, 
42746
  0x70, 0x81, 0x45, 0x14, 0xCF, 0x09, 0x64, 0x6F, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x71, 
42747
  0x81, 0x45, 0x15, 0xDA, 0x80, 0x90, 0x73, 0x81, 0x45, 0x17, 0xCF, 0x07, 0x6C, 0x65, 0x6E, 0x61, 
42748
  0x72, 0x67, 0x73, 0x77, 0x80, 0xD0, 0x1A, 0xDA, 0x86, 0xCC, 0x78, 0x80, 0x84, 0x1B, 0xCF, 0x07, 
42749
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x43, 0x80, 0x90, 0x80, 0xCF, 0x1C, 0xDA, 0x8D, 0x19, 0x80, 
42750
  0x99, 0x80, 0xAB, 0x1B, 0xDA, 0x80, 0xBA, 0x80, 0xAE, 0x80, 0xCE, 0x1D, 0xDA, 0x80, 0xBA, 0x80, 
42751
  0xD0, 0x80, 0xD5, 0x18, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x44, 0x80, 0xFA, 0x81, 
42752
  0x44, 0x1B, 0xCF, 0x08, 0x67, 0x65, 0x74, 0x73, 0x74, 0x64, 0x69, 0x6E, 0x81, 0x02, 0x81, 0x11, 
42753
  0x1D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x45, 0x81, 0x03, 0x81, 0x10, 0x1D, 0xCF, 
42754
  0x0D, 0x70, 0x72, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x81, 0x09, 
42755
  0x81, 0x10, 0x1E, 0xCF, 0x07, 0x6E, 0x65, 0x77, 0x2D, 0x65, 0x6E, 0x76, 0x81, 0x1F, 0x81, 0x44, 
42756
  0x1E, 0xCF, 0x08, 0x67, 0x65, 0x74, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0x2A, 0x02, 0x00, 0x00, 0x30, 
42757
  0x02, 0x00, 0x00, 0x2A, 0x03, 0x01, 0x00, 0x33, 0x02, 0x03, 0x00, 0x28, 0x03, 0x00, 0x00, 0x27, 
42758
  0x04, 0x00, 0x00, 0x28, 0x05, 0x00, 0x00, 0x28, 0x06, 0x00, 0x00, 0x27, 0x07, 0x00, 0x00, 0x27, 
42759
  0x08, 0x00, 0x00, 0x27, 0x09, 0x00, 0x00, 0x28, 0x0A, 0x00, 0x00, 0x28, 0x0B, 0x00, 0x00, 0x26, 
42760
  0x0C, 0x00, 0x00, 0x26, 0x0D, 0x00, 0x00, 0x28, 0x0E, 0x00, 0x00, 0x2A, 0x0F, 0x02, 0x00, 0x2F, 
42761
  0x0F, 0x00, 0x00, 0x2A, 0x10, 0x03, 0x00, 0x33, 0x0F, 0x10, 0x00, 0x19, 0x10, 0x0F, 0x00, 0x1C, 
42762
  0x10, 0x06, 0x00, 0x2A, 0x0F, 0x04, 0x00, 0x30, 0x0F, 0x10, 0x00, 0x2A, 0x11, 0x01, 0x00, 0x33, 
42763
  0x0F, 0x11, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x2A, 0x0F, 0x05, 0x00, 0x2F, 0x0F, 0x00, 0x00, 0x2A, 
42764
  0x10, 0x03, 0x00, 0x33, 0x0F, 0x10, 0x00, 0x19, 0x10, 0x0F, 0x00, 0x1C, 0x10, 0x06, 0x00, 0x2A, 
42765
  0x0F, 0x06, 0x00, 0x30, 0x0F, 0x10, 0x00, 0x2A, 0x11, 0x01, 0x00, 0x33, 0x0F, 0x11, 0x00, 0x1A, 
42766
  0x01, 0x00, 0x00, 0x2A, 0x0F, 0x07, 0x00, 0x2F, 0x0F, 0x00, 0x00, 0x2A, 0x10, 0x03, 0x00, 0x33, 
42767
  0x0F, 0x10, 0x00, 0x2F, 0x0F, 0x00, 0x00, 0x2A, 0x11, 0x08, 0x00, 0x33, 0x10, 0x11, 0x00, 0x19, 
42768
  0x0F, 0x10, 0x00, 0x1C, 0x10, 0x06, 0x00, 0x2A, 0x11, 0x09, 0x00, 0x2F, 0x11, 0x00, 0x00, 0x2A, 
42769
  0x11, 0x0A, 0x00, 0x33, 0x09, 0x11, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x09, 0x0F, 0x00, 0x2E, 
42770
  0x0F, 0x00, 0x00, 0x19, 0x10, 0x0F, 0x00, 0x2E, 0x11, 0x01, 0x00, 0x2E, 0x12, 0x02, 0x00, 0x2E, 
42771
  0x13, 0x03, 0x00, 0x2E, 0x14, 0x04, 0x00, 0x2E, 0x15, 0x05, 0x00, 0x2E, 0x16, 0x06, 0x00, 0x2E, 
42772
  0x17, 0x07, 0x00, 0x2E, 0x18, 0x08, 0x00, 0x2E, 0x19, 0x09, 0x00, 0x2E, 0x1A, 0x0A, 0x00, 0x2E, 
42773
  0x1B, 0x0B, 0x00, 0x2E, 0x1C, 0x0C, 0x00, 0x2E, 0x1D, 0x0D, 0x00, 0x2E, 0x1E, 0x0E, 0x00, 0x2E, 
42774
  0x1F, 0x0F, 0x00, 0x2E, 0x20, 0x10, 0x00, 0x2E, 0x21, 0x11, 0x00, 0x2E, 0x22, 0x12, 0x00, 0x2E, 
42775
  0x23, 0x13, 0x00, 0x2E, 0x24, 0x14, 0x00, 0x2A, 0x25, 0x0B, 0x00, 0x2A, 0x26, 0x0C, 0x00, 0x31, 
42776
  0x25, 0x11, 0x26, 0x2A, 0x25, 0x0D, 0x00, 0x31, 0x12, 0x25, 0x13, 0x2A, 0x25, 0x0E, 0x00, 0x2A, 
42777
  0x26, 0x0F, 0x00, 0x31, 0x25, 0x14, 0x26, 0x2A, 0x25, 0x10, 0x00, 0x31, 0x15, 0x25, 0x16, 0x2A, 
42778
  0x25, 0x11, 0x00, 0x2A, 0x26, 0x12, 0x00, 0x31, 0x25, 0x17, 0x26, 0x2A, 0x25, 0x13, 0x00, 0x31, 
42779
  0x18, 0x25, 0x19, 0x2A, 0x25, 0x14, 0x00, 0x2A, 0x26, 0x15, 0x00, 0x31, 0x25, 0x1A, 0x26, 0x2A, 
42780
  0x25, 0x16, 0x00, 0x31, 0x1B, 0x25, 0x1C, 0x2A, 0x25, 0x17, 0x00, 0x2A, 0x26, 0x18, 0x00, 0x31, 
42781
  0x25, 0x1D, 0x26, 0x2A, 0x25, 0x19, 0x00, 0x31, 0x1E, 0x25, 0x1F, 0x2A, 0x25, 0x1A, 0x00, 0x2A, 
42782
  0x26, 0x1B, 0x00, 0x31, 0x25, 0x20, 0x26, 0x2A, 0x25, 0x1C, 0x00, 0x31, 0x21, 0x25, 0x22, 0x2A, 
42783
  0x25, 0x1D, 0x00, 0x2A, 0x26, 0x1E, 0x00, 0x31, 0x25, 0x23, 0x26, 0x2F, 0x24, 0x00, 0x00, 0x41, 
42784
  0x11, 0x00, 0x00, 0x19, 0x12, 0x11, 0x00, 0x2E, 0x13, 0x15, 0x00, 0x19, 0x14, 0x13, 0x00, 0x29, 
42785
  0x15, 0x00, 0x00, 0x3D, 0x16, 0x00, 0x00, 0x19, 0x17, 0x16, 0x00, 0x21, 0x18, 0x15, 0x17, 0x1C, 
42786
  0x18, 0x5B, 0x00, 0x38, 0x19, 0x00, 0x15, 0x19, 0x1A, 0x19, 0x00, 0x19, 0x1B, 0x07, 0x00, 0x1C, 
42787
  0x07, 0x0A, 0x00, 0x29, 0x1C, 0x00, 0x00, 0x29, 0x1D, 0x01, 0x00, 0x31, 0x1A, 0x1C, 0x1D, 0x2A, 
42788
  0x1D, 0x1F, 0x00, 0x33, 0x1C, 0x1D, 0x00, 0x2A, 0x1E, 0x13, 0x00, 0x23, 0x1D, 0x1E, 0x1C, 0x19, 
42789
  0x19, 0x1D, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x19, 0x1B, 0x00, 0x1C, 0x19, 0x09, 0x00, 0x29, 
42790
  0x1B, 0x01, 0x00, 0x30, 0x1A, 0x1B, 0x00, 0x2A, 0x1C, 0x1F, 0x00, 0x33, 0x1B, 0x1C, 0x00, 0x30, 
42791
  0x1B, 0x15, 0x00, 0x33, 0x1C, 0x14, 0x00, 0x06, 0x15, 0x15, 0x1C, 0x1A, 0x43, 0x00, 0x00, 0x30, 
42792
  0x00, 0x15, 0x00, 0x2A, 0x1C, 0x20, 0x00, 0x33, 0x1B, 0x1C, 0x00, 0x19, 0x1C, 0x1B, 0x00, 0x28, 
42793
  0x04, 0x00, 0x00, 0x1C, 0x0E, 0x1A, 0x00, 0x2F, 0x1A, 0x00, 0x00, 0x2A, 0x1D, 0x21, 0x00, 0x33, 
42794
  0x1B, 0x1D, 0x00, 0x2F, 0x1B, 0x00, 0x00, 0x2A, 0x1E, 0x22, 0x00, 0x33, 0x1D, 0x1E, 0x00, 0x19, 
42795
  0x1B, 0x1D, 0x00, 0x2A, 0x1D, 0x00, 0x00, 0x3A, 0x1B, 0x1D, 0x1C, 0x2A, 0x1D, 0x23, 0x00, 0x3A, 
42796
  0x1B, 0x1D, 0x0D, 0x2A, 0x1D, 0x24, 0x00, 0x3A, 0x1B, 0x1D, 0x0C, 0x1C, 0x0A, 0x08, 0x00, 0x2A, 
42797
  0x1D, 0x25, 0x00, 0x27, 0x1E, 0x00, 0x00, 0x3A, 0x1B, 0x1D, 0x1E, 0x2A, 0x1D, 0x26, 0x00, 0x27, 
42798
  0x1E, 0x00, 0x00, 0x3A, 0x1B, 0x1D, 0x1E, 0x1A, 0x01, 0x00, 0x00, 0x31, 0x1B, 0x1C, 0x1A, 0x2A, 
42799
  0x1E, 0x27, 0x00, 0x33, 0x1D, 0x1E, 0x00, 0x1A, 0x23, 0x00, 0x00, 0x2A, 0x1D, 0x28, 0x00, 0x33, 
42800
  0x1B, 0x1D, 0x00, 0x19, 0x1D, 0x1B, 0x00, 0x2A, 0x1B, 0x00, 0x00, 0x3A, 0x1D, 0x1B, 0x1C, 0x2A, 
42801
  0x1B, 0x23, 0x00, 0x3A, 0x1D, 0x1B, 0x0D, 0x2A, 0x1B, 0x24, 0x00, 0x3A, 0x1D, 0x1B, 0x0C, 0x1C, 
42802
  0x0A, 0x08, 0x00, 0x2A, 0x1B, 0x25, 0x00, 0x27, 0x1E, 0x00, 0x00, 0x3A, 0x1D, 0x1B, 0x1E, 0x2A, 
42803
  0x1B, 0x26, 0x00, 0x27, 0x1E, 0x00, 0x00, 0x3A, 0x1D, 0x1B, 0x1E, 0x1A, 0x01, 0x00, 0x00, 0x1C, 
42804
  0x0B, 0x08, 0x00, 0x2A, 0x1B, 0x29, 0x00, 0x31, 0x1A, 0x1B, 0x08, 0x2A, 0x1B, 0x2A, 0x00, 0x30, 
42805
  0x1B, 0x1D, 0x00, 0x2A, 0x1E, 0x2B, 0x00, 0x33, 0x1B, 0x1E, 0x00, 0x1A, 0x0A, 0x00, 0x00, 0x2A, 
42806
  0x1B, 0x29, 0x00, 0x31, 0x1A, 0x1B, 0x08, 0x2A, 0x1B, 0x2A, 0x00, 0x30, 0x1B, 0x1D, 0x00, 0x2A, 
42807
  0x1E, 0x2C, 0x00, 0x33, 0x1B, 0x1E, 0x00, 0x31, 0x1D, 0x1C, 0x1A, 0x2A, 0x1E, 0x27, 0x00, 0x33, 
42808
  0x1B, 0x1E, 0x00, 0x19, 0x15, 0x17, 0x00, 0x1A, 0xA5, 0xFF, 0xFF, 0x19, 0x18, 0x03, 0x00, 0x1C, 
42809
  0x18, 0x03, 0x00, 0x19, 0x19, 0x18, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 0x19, 0x04, 0x00, 0x1C, 
42810
  0x19, 0x6F, 0x00, 0x1C, 0x0B, 0x09, 0x00, 0x2A, 0x18, 0x2D, 0x00, 0x2A, 0x1A, 0x2E, 0x00, 0x2A, 
42811
  0x1B, 0x2F, 0x00, 0x31, 0x18, 0x1A, 0x1B, 0x2A, 0x18, 0x29, 0x00, 0x30, 0x18, 0x08, 0x00, 0x2A, 
42812
  0x18, 0x2B, 0x00, 0x34, 0x18, 0x00, 0x00, 0x1C, 0x05, 0x02, 0x00, 0x1A, 0x15, 0x00, 0x00, 0x2A, 
42813
  0x1A, 0x30, 0x00, 0x33, 0x18, 0x1A, 0x00, 0x2A, 0x1B, 0x31, 0x00, 0x33, 0x1A, 0x1B, 0x00, 0x2A, 
42814
  0x1C, 0x32, 0x00, 0x33, 0x1B, 0x1C, 0x00, 0x2A, 0x1C, 0x33, 0x00, 0x2A, 0x1D, 0x34, 0x00, 0x2A, 
42815
  0x1E, 0x13, 0x00, 0x31, 0x1C, 0x1D, 0x1E, 0x2A, 0x1C, 0x35, 0x00, 0x2A, 0x1D, 0x36, 0x00, 0x31, 
42816
  0x1C, 0x1D, 0x18, 0x2A, 0x1C, 0x37, 0x00, 0x2A, 0x1D, 0x37, 0x00, 0x31, 0x1C, 0x1A, 0x1D, 0x2A, 
42817
  0x1C, 0x38, 0x00, 0x30, 0x1B, 0x1C, 0x00, 0x2A, 0x1D, 0x39, 0x00, 0x33, 0x1C, 0x1D, 0x00, 0x2A, 
42818
  0x1A, 0x3A, 0x00, 0x33, 0x18, 0x1A, 0x00, 0x2E, 0x18, 0x16, 0x00, 0x19, 0x1A, 0x18, 0x00, 0x2E, 
42819
  0x18, 0x17, 0x00, 0x19, 0x1B, 0x18, 0x00, 0x2A, 0x1C, 0x28, 0x00, 0x33, 0x18, 0x1C, 0x00, 0x19, 
42820
  0x1C, 0x18, 0x00, 0x2A, 0x18, 0x06, 0x00, 0x2F, 0x18, 0x00, 0x00, 0x2A, 0x1D, 0x3B, 0x00, 0x33, 
42821
  0x18, 0x1D, 0x00, 0x19, 0x1D, 0x18, 0x00, 0x1C, 0x1D, 0x0E, 0x00, 0x2A, 0x18, 0x29, 0x00, 0x27, 
42822
  0x1E, 0x00, 0x00, 0x31, 0x1D, 0x18, 0x1E, 0x2A, 0x1E, 0x2C, 0x00, 0x33, 0x18, 0x1E, 0x00, 0x19, 
42823
  0x1E, 0x18, 0x00, 0x2A, 0x18, 0x3C, 0x00, 0x31, 0x1C, 0x1E, 0x18, 0x28, 0x18, 0x00, 0x00, 0x2F, 
42824
  0x18, 0x00, 0x00, 0x2A, 0x1F, 0x3D, 0x00, 0x33, 0x18, 0x1F, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x1C, 
42825
  0x0A, 0x08, 0x00, 0x2A, 0x18, 0x25, 0x00, 0x27, 0x1D, 0x00, 0x00, 0x3A, 0x1C, 0x18, 0x1D, 0x2A, 
42826
  0x18, 0x26, 0x00, 0x27, 0x1D, 0x00, 0x00, 0x3A, 0x1C, 0x18, 0x1D, 0x1A, 0x01, 0x00, 0x00, 0x1C, 
42827
  0x06, 0x03, 0x00, 0x19, 0x18, 0x1B, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x2A, 0x18, 0x3E, 0x00, 0x19, 
42828
  0x1D, 0x18, 0x00, 0x2E, 0x18, 0x18, 0x00, 0x19, 0x1E, 0x18, 0x00, 0x1C, 0x09, 0x03, 0x00, 0x2A, 
42829
  0x18, 0x3F, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x2A, 0x18, 0x40, 0x00, 0x2A, 0x1F, 0x41, 0x00, 0x30, 
42830
  0x1F, 0x18, 0x00, 0x2A, 0x20, 0x01, 0x00, 0x33, 0x1F, 0x20, 0x00, 0x1C, 0x09, 0x03, 0x00, 0x27, 
42831
  0x18, 0x00, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x26, 0x18, 0x00, 0x00, 0x2A, 0x1F, 0x42, 0x00, 0x30, 
42832
  0x1F, 0x18, 0x00, 0x2A, 0x20, 0x01, 0x00, 0x33, 0x1F, 0x20, 0x00, 0x1C, 0x09, 0x03, 0x00, 0x27, 
42833
  0x18, 0x00, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x26, 0x18, 0x00, 0x00, 0x2A, 0x1F, 0x43, 0x00, 0x30, 
42834
  0x1F, 0x18, 0x00, 0x2A, 0x20, 0x01, 0x00, 0x33, 0x1F, 0x20, 0x00, 0x2A, 0x18, 0x23, 0x00, 0x30, 
42835
  0x18, 0x0D, 0x00, 0x2A, 0x1F, 0x01, 0x00, 0x33, 0x18, 0x1F, 0x00, 0x2A, 0x18, 0x24, 0x00, 0x30, 
42836
  0x18, 0x0D, 0x00, 0x2A, 0x1F, 0x01, 0x00, 0x33, 0x18, 0x1F, 0x00, 0x26, 0x18, 0x00, 0x00, 0x31, 
42837
  0x1E, 0x18, 0x1C, 0x2A, 0x18, 0x44, 0x00, 0x34, 0x18, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xCD, 
42838
  0x00, 0xDC, 0x00, 0x00, 0x06, 0x01, 0x01, 0x01, 0x02, 0x0D, 0x01, 0x17, 0xCE, 0x0E, 0x67, 0x65, 
42839
  0x74, 0x2D, 0x6C, 0x69, 0x6E, 0x74, 0x2D, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0xDA, 0x18, 0xDA, 0x86, 
42840
  0xDC, 0xDA, 0x8C, 0x7E, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 0xAB, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
42841
  0x8C, 0xFD, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x8D, 0x26, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x8D, 0x27, 
42842
  0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x8D, 0x28, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8D, 0x29, 0xBF, 0xFF, 
42843
  0x00, 0x07, 0xDA, 0x8D, 0x2A, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x8D, 0x2B, 0xBF, 0xFF, 0x00, 0x09, 
42844
  0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x8D, 0x2C, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x8D, 
42845
  0x2D, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x8D, 0x2E, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x8D, 0x2F, 0xBF, 
42846
  0xFF, 0x00, 0x0E, 0xDA, 0x8D, 0x30, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x31, 0xBF, 0xFF, 0x00, 
42847
  0x10, 0xDA, 0x8D, 0x32, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x33, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 
42848
  0x8D, 0x34, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x8D, 0x35, 0x00, 0x0D, 0x00, 0xDA, 0x80, 0x90, 0x00, 
42849
  0x0D, 0x01, 0xDA, 0x8D, 0x36, 0x03, 0x0D, 0x02, 0xDA, 0x1E, 0x07, 0x0D, 0x05, 0xCF, 0x07, 0x5F, 
42850
  0x30, 0x30, 0x30, 0x30, 0x36, 0x42, 0x05, 0x02, 0x00, 0x01, 0x2B, 0x04, 0x00, 0x00, 0x38, 0x03, 
42851
  0x04, 0x02, 0x19, 0x02, 0x03, 0x00, 0x2F, 0x02, 0x00, 0x00, 0x2A, 0x05, 0x00, 0x00, 0x33, 0x04, 
42852
  0x05, 0x00, 0x19, 0x05, 0x04, 0x00, 0x1C, 0x05, 0x02, 0x00, 0x03, 0x05, 0x00, 0x00, 0x2F, 0x02, 
42853
  0x00, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x34, 0x04, 0x00, 0x00, 0xBF, 0xFF, 0x8F, 0x4F, 0x15, 0x00, 
42854
  0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x05, 0x00, 
42855
  0x05, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x01, 0x01, 0xCD, 
42856
  0x7F, 0xFF, 0xFF, 0xFF, 0x03, 0x15, 0x01, 0x18, 0xCE, 0x08, 0x63, 0x2D, 0x73, 0x77, 0x69, 0x74, 
42857
  0x63, 0x68, 0xDA, 0x18, 0xDA, 0x8B, 0x7D, 0xDA, 0x8C, 0x92, 0xDA, 0x86, 0x56, 0xBF, 0xFF, 0x00, 
42858
  0x00, 0xDA, 0x80, 0xAB, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8C, 0xFD, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
42859
  0x8D, 0x26, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x8D, 0x27, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x8D, 0x28, 
42860
  0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8D, 0x29, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x8D, 0x2A, 0xBF, 0xFF, 
42861
  0x00, 0x08, 0xDA, 0x8D, 0x2B, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x0A, 
42862
  0xDA, 0x8D, 0x2C, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x8D, 0x2D, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x8D, 
42863
  0x2E, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x8D, 0x2F, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x8D, 0x30, 0xBF, 
42864
  0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x32, 0xBF, 0xFF, 0x00, 
42865
  0x10, 0xDA, 0x8D, 0x33, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x34, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 
42866
  0x8D, 0x35, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x36, 0x00, 0x15, 0x00, 0xDA, 0x80, 0x90, 0x00, 
42867
  0x15, 0x01, 0xCF, 0x08, 0x63, 0x2D, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x03, 0x15, 0x02, 0xDA, 
42868
  0x80, 0xF9, 0x07, 0x15, 0x05, 0xDA, 0x88, 0xAD, 0x05, 0x02, 0x00, 0x01, 0x2B, 0x04, 0x00, 0x00, 
42869
  0x38, 0x03, 0x04, 0x02, 0x19, 0x02, 0x03, 0x00, 0x2F, 0x02, 0x00, 0x00, 0x2A, 0x05, 0x00, 0x00, 
42870
  0x33, 0x04, 0x05, 0x00, 0x19, 0x05, 0x04, 0x00, 0x05, 0x06, 0x00, 0x02, 0x2B, 0x08, 0x00, 0x00, 
42871
  0x38, 0x07, 0x08, 0x06, 0x2F, 0x05, 0x00, 0x00, 0x2A, 0x08, 0x01, 0x00, 0x33, 0x06, 0x08, 0x00, 
42872
  0x30, 0x07, 0x06, 0x00, 0x2A, 0x09, 0x02, 0x00, 0x33, 0x08, 0x09, 0x00, 0x28, 0x06, 0x00, 0x00, 
42873
  0x2D, 0x06, 0x00, 0x04, 0x29, 0x06, 0x03, 0x00, 0x03, 0x06, 0x00, 0x00, 0xBF, 0xFF, 0x8F, 0x7B, 
42874
  0x1F, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0C, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x0C, 0x01, 
42875
  0x1B, 0x00, 0x12, 0x00, 0x12, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x0C, 0x00, 0x0C, 0x00, 
42876
  0x0C, 0x01, 0x0C, 0x00, 0x0C, 0xBF, 0xFC, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x01, 
42877
  0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x04, 0x01, 0x14, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 
42878
  0x00, 0xDA, 0x80, 0xAB, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8C, 0xFD, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
42879
  0x8D, 0x26, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x8D, 0x27, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x8D, 0x28, 
42880
  0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8D, 0x29, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x8D, 0x2A, 0xBF, 0xFF, 
42881
  0x00, 0x08, 0xDA, 0x8D, 0x2B, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x0A, 
42882
  0xDA, 0x8D, 0x2C, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x8D, 0x2D, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x8D, 
42883
  0x2E, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x8D, 0x2F, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x8D, 0x30, 0xBF, 
42884
  0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x32, 0xBF, 0xFF, 0x00, 
42885
  0x10, 0xDA, 0x8D, 0x33, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x34, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 
42886
  0x8D, 0x35, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x36, 0x27, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 
42887
  0x0A, 0x29, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8F, 0x92, 0x12, 0x00, 0x12, 
42888
  0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 
42889
  0xFF, 0x01, 0x0A, 0x01, 0x16, 0xCE, 0x08, 0x65, 0x2D, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0xDA, 
42890
  0x18, 0xDA, 0x85, 0xA4, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 0xAB, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
42891
  0x8C, 0xFD, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x8D, 0x26, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x8D, 0x27, 
42892
  0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x8D, 0x28, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8D, 0x29, 0xBF, 0xFF, 
42893
  0x00, 0x07, 0xDA, 0x8D, 0x2A, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x8D, 0x2B, 0xBF, 0xFF, 0x00, 0x09, 
42894
  0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x8D, 0x2C, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x8D, 
42895
  0x2D, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x8D, 0x2E, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x8D, 0x2F, 0xBF, 
42896
  0xFF, 0x00, 0x0E, 0xDA, 0x8D, 0x30, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x31, 0xBF, 0xFF, 0x00, 
42897
  0x10, 0xDA, 0x8D, 0x32, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x33, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 
42898
  0x8D, 0x34, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x8D, 0x35, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x36, 
42899
  0x00, 0x0A, 0x00, 0xDA, 0x80, 0x90, 0x00, 0x0A, 0x01, 0xCF, 0x08, 0x65, 0x2D, 0x73, 0x77, 0x69, 
42900
  0x74, 0x63, 0x68, 0x28, 0x02, 0x00, 0x00, 0x2D, 0x02, 0x00, 0x04, 0x05, 0x02, 0x00, 0x01, 0x2B, 
42901
  0x04, 0x00, 0x00, 0x38, 0x03, 0x04, 0x02, 0x2F, 0x03, 0x00, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x33, 
42902
  0x02, 0x04, 0x00, 0x29, 0x03, 0x02, 0x00, 0x03, 0x03, 0x00, 0x00, 0xBF, 0xFF, 0x8F, 0x86, 0x0C, 
42903
  0x00, 0x0C, 0x01, 0x22, 0x00, 0x19, 0x00, 0x19, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFE, 
42904
  0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD0, 0x00, 0x00, 0x04, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
42905
  0x08, 0x14, 0x00, 0xDA, 0x18, 0xDA, 0x8A, 0xDC, 0xCE, 0x05, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0xDA, 
42906
  0x80, 0xDF, 0xCE, 0x07, 0x75, 0x73, 0x61, 0x67, 0x65, 0x3A, 0x20, 0xCE, 0x19, 0x20, 0x5B, 0x6F, 
42907
  0x70, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x5D, 0x20, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x61, 
42908
  0x72, 0x67, 0x73, 0x2E, 0x2E, 0x2E, 0xDA, 0x81, 0x5C, 0xCE, 0x84, 0x02, 0x4F, 0x70, 0x74, 0x69, 
42909
  0x6F, 0x6E, 0x73, 0x20, 0x61, 0x72, 0x65, 0x3A, 0x0A, 0x20, 0x20, 0x2D, 0x68, 0x20, 0x3A, 0x20, 
42910
  0x53, 0x68, 0x6F, 0x77, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x68, 0x65, 0x6C, 0x70, 0x0A, 0x20, 
42911
  0x20, 0x2D, 0x76, 0x20, 0x3A, 0x20, 0x50, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 
42912
  0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x0A, 0x20, 
42913
  0x20, 0x2D, 0x73, 0x20, 0x3A, 0x20, 0x55, 0x73, 0x65, 0x20, 0x72, 0x61, 0x77, 0x20, 0x73, 0x74, 
42914
  0x64, 0x69, 0x6E, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x67, 
42915
  0x65, 0x74, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 
42916
  0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x69, 0x74, 0x79, 0x0A, 0x20, 0x20, 0x2D, 0x65, 0x20, 0x63, 
42917
  0x6F, 0x64, 0x65, 0x20, 0x3A, 0x20, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x20, 0x61, 0x20, 
42918
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x66, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x0A, 
42919
  0x20, 0x20, 0x2D, 0x45, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 
42920
  0x6E, 0x74, 0x73, 0x2E, 0x2E, 0x2E, 0x20, 0x3A, 0x20, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 
42921
  0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 
42922
  0x61, 0x73, 0x20, 0x61, 0x20, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x2D, 0x66, 0x6E, 0x20, 0x77, 0x69, 
42923
  0x74, 0x68, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x0A, 0x20, 0x20, 0x2D, 
42924
  0x64, 0x20, 0x3A, 0x20, 0x53, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x62, 0x75, 
42925
  0x67, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x52, 0x45, 
42926
  0x50, 0x4C, 0x0A, 0x20, 0x20, 0x2D, 0x72, 0x20, 0x3A, 0x20, 0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 
42927
  0x74, 0x68, 0x65, 0x20, 0x52, 0x45, 0x50, 0x4C, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x72, 
42928
  0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x73, 0x63, 0x72, 0x69, 0x70, 
42929
  0x74, 0x73, 0x0A, 0x20, 0x20, 0x2D, 0x52, 0x20, 0x3A, 0x20, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6C, 
42930
  0x65, 0x73, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x72, 0x6F, 0x66, 0x69, 
42931
  0x6C, 0x65, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x4A, 0x41, 
42932
  0x4E, 0x45, 0x54, 0x5F, 0x50, 0x52, 0x4F, 0x46, 0x49, 0x4C, 0x45, 0x20, 0x69, 0x73, 0x20, 0x70, 
42933
  0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x0A, 0x20, 0x20, 0x2D, 0x70, 0x20, 0x3A, 0x20, 0x4B, 0x65, 
42934
  0x65, 0x70, 0x20, 0x6F, 0x6E, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6E, 0x67, 0x20, 
42935
  0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x6F, 
42936
  0x70, 0x2D, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x28, 0x70, 
42937
  0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x74, 0x29, 0x0A, 0x20, 0x20, 0x2D, 0x71, 0x20, 
42938
  0x3A, 0x20, 0x48, 0x69, 0x64, 0x65, 0x20, 0x6C, 0x6F, 0x67, 0x6F, 0x20, 0x28, 0x71, 0x75, 0x69, 
42939
  0x65, 0x74, 0x29, 0x0A, 0x20, 0x20, 0x2D, 0x6B, 0x20, 0x3A, 0x20, 0x43, 0x6F, 0x6D, 0x70, 0x69, 
42940
  0x6C, 0x65, 0x20, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x20, 0x62, 0x75, 0x74, 0x20, 0x64, 
42941
  0x6F, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x20, 0x28, 0x66, 
42942
  0x6C, 0x79, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x29, 0x0A, 0x20, 0x20, 0x2D, 0x6D, 0x20, 0x73, 0x79, 
42943
  0x73, 0x70, 0x61, 0x74, 0x68, 0x20, 0x3A, 0x20, 0x53, 0x65, 0x74, 0x20, 0x73, 0x79, 0x73, 0x74, 
42944
  0x65, 0x6D, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6C, 0x6F, 0x61, 0x64, 
42945
  0x69, 0x6E, 0x67, 0x20, 0x67, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 
42946
  0x65, 0x73, 0x0A, 0x20, 0x20, 0x2D, 0x63, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x6F, 
42947
  0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x3A, 0x20, 0x43, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 
42948
  0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x63, 0x6F, 0x64, 
42949
  0x65, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x0A, 
42950
  0x20, 0x20, 0x2D, 0x69, 0x20, 0x3A, 0x20, 0x4C, 0x6F, 0x61, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 
42951
  0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 
42952
  0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 
42953
  0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x6F, 0x75, 0x72, 
42954
  0x63, 0x65, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x0A, 0x20, 0x20, 0x2D, 0x6E, 0x20, 0x3A, 0x20, 0x44, 
42955
  0x69, 0x73, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x41, 0x4E, 0x53, 0x49, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 
42956
  0x72, 0x20, 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
42957
  0x52, 0x45, 0x50, 0x4C, 0x0A, 0x20, 0x20, 0x2D, 0x4E, 0x20, 0x3A, 0x20, 0x45, 0x6E, 0x61, 0x62, 
42958
  0x6C, 0x65, 0x20, 0x41, 0x4E, 0x53, 0x49, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x20, 0x6F, 0x75, 
42959
  0x74, 0x70, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x52, 0x45, 0x50, 0x4C, 
42960
  0x0A, 0x20, 0x20, 0x2D, 0x6C, 0x20, 0x6C, 0x69, 0x62, 0x20, 0x3A, 0x20, 0x55, 0x73, 0x65, 0x20, 
42961
  0x61, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x20, 
42962
  0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 
42963
  0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x0A, 0x20, 0x20, 0x2D, 0x77, 0x20, 0x6C, 
42964
  0x65, 0x76, 0x65, 0x6C, 0x20, 0x3A, 0x20, 0x53, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 
42965
  0x69, 0x6E, 0x74, 0x20, 0x77, 0x61, 0x72, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x6C, 0x65, 0x76, 0x65, 
42966
  0x6C, 0x20, 0x2D, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x22, 
42967
  0x6E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x22, 0x0A, 0x20, 0x20, 0x2D, 0x78, 0x20, 0x6C, 0x65, 0x76, 
42968
  0x65, 0x6C, 0x20, 0x3A, 0x20, 0x53, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x69, 0x6E, 
42969
  0x74, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x2D, 0x20, 
42970
  0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x22, 0x6E, 0x6F, 0x6E, 0x65, 
42971
  0x22, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x20, 0x3A, 0x20, 0x53, 0x74, 0x6F, 0x70, 0x20, 0x68, 0x61, 
42972
  0x6E, 0x64, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0xDA, 0x8A, 
42973
  0x1C, 0x2A, 0x00, 0x00, 0x00, 0x2A, 0x01, 0x01, 0x00, 0x30, 0x00, 0x01, 0x00, 0x2A, 0x01, 0x02, 
42974
  0x00, 0x33, 0x00, 0x01, 0x00, 0x2A, 0x01, 0x03, 0x00, 0x2A, 0x02, 0x04, 0x00, 0x31, 0x01, 0x00, 
42975
  0x02, 0x2A, 0x02, 0x05, 0x00, 0x33, 0x01, 0x02, 0x00, 0x2A, 0x00, 0x06, 0x00, 0x2F, 0x00, 0x00, 
42976
  0x00, 0x2A, 0x02, 0x05, 0x00, 0x33, 0x00, 0x02, 0x00, 0x29, 0x02, 0x00, 0x00, 0x2F, 0x02, 0x00, 
42977
  0x00, 0x2A, 0x03, 0x07, 0x00, 0x33, 0x02, 0x03, 0x00, 0x29, 0x03, 0x01, 0x00, 0x03, 0x03, 0x00, 
42978
  0x00, 0x8F, 0x55, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x0C, 0x00, 0x0C, 
42979
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x18, 0x0C, 
42980
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xE6, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 
42981
  0x01, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x04, 0x01, 0x14, 0xDA, 0x18, 0xBF, 0xFF, 
42982
  0x00, 0x00, 0xDA, 0x80, 0xAB, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8C, 0xFD, 0xBF, 0xFF, 0x00, 0x03, 
42983
  0xDA, 0x8D, 0x26, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x8D, 0x27, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x8D, 
42984
  0x28, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8D, 0x29, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x8D, 0x2A, 0xBF, 
42985
  0xFF, 0x00, 0x08, 0xDA, 0x8D, 0x2B, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 
42986
  0x0A, 0xDA, 0x8D, 0x2C, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x8D, 0x2D, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 
42987
  0x8D, 0x2E, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x8D, 0x2F, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x8D, 0x30, 
42988
  0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x32, 0xBF, 0xFF, 
42989
  0x00, 0x10, 0xDA, 0x8D, 0x33, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x34, 0xBF, 0xFF, 0x00, 0x0F, 
42990
  0xDA, 0x8D, 0x35, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x36, 0x27, 0x00, 0x00, 0x00, 0x2D, 0x00, 
42991
  0x00, 0x0E, 0x29, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8F, 0x75, 0x12, 0x00, 
42992
  0x12, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x01, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 
42993
  0xFF, 0xFF, 0x00, 0x06, 0x01, 0x14, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 0xAB, 0xBF, 
42994
  0xFF, 0x00, 0x01, 0xDA, 0x8C, 0xFD, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x8D, 0x26, 0xBF, 0xFF, 0x00, 
42995
  0x04, 0xDA, 0x8D, 0x27, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x8D, 0x28, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 
42996
  0x8D, 0x29, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x8D, 0x2A, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x8D, 0x2B, 
42997
  0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x8D, 0x2C, 0xBF, 0xFF, 
42998
  0x00, 0x0B, 0xDA, 0x8D, 0x2D, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x8D, 0x2E, 0xBF, 0xFF, 0x00, 0x0D, 
42999
  0xDA, 0x8D, 0x2F, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x8D, 0x30, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 
43000
  0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x32, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x33, 0xBF, 
43001
  0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x34, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x8D, 0x35, 0xBF, 0xFF, 0x00, 
43002
  0x10, 0xDA, 0x8D, 0x36, 0x27, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x0B, 0x28, 0x00, 0x00, 0x00, 
43003
  0x2D, 0x00, 0x00, 0x08, 0x29, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8F, 0x76, 
43004
  0x12, 0x00, 0x12, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
43005
  0x05, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x04, 0x0D, 0x01, 0x16, 0xCE, 0x08, 0x6C, 0x2D, 
43006
  0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0xDA, 0x18, 0xDA, 0x8A, 0x28, 0xDA, 0x80, 0xC5, 0xDA, 0x82, 
43007
  0x16, 0xDA, 0x8A, 0x21, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 0xAB, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
43008
  0x8C, 0xFD, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x8D, 0x26, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x8D, 0x27, 
43009
  0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x8D, 0x28, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8D, 0x29, 0xBF, 0xFF, 
43010
  0x00, 0x07, 0xDA, 0x8D, 0x2A, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x8D, 0x2B, 0xBF, 0xFF, 0x00, 0x09, 
43011
  0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x8D, 0x2C, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x8D, 
43012
  0x2D, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x8D, 0x2E, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x8D, 0x2F, 0xBF, 
43013
  0xFF, 0x00, 0x0E, 0xDA, 0x8D, 0x30, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x31, 0xBF, 0xFF, 0x00, 
43014
  0x10, 0xDA, 0x8D, 0x32, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x33, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 
43015
  0x8D, 0x34, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x8D, 0x35, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x36, 
43016
  0x00, 0x0D, 0x00, 0xDA, 0x80, 0x90, 0x00, 0x0D, 0x01, 0xCF, 0x08, 0x6C, 0x2D, 0x73, 0x77, 0x69, 
43017
  0x74, 0x63, 0x68, 0x05, 0x02, 0x00, 0x01, 0x2B, 0x04, 0x00, 0x00, 0x38, 0x03, 0x04, 0x02, 0x2A, 
43018
  0x02, 0x00, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x31, 0x03, 0x02, 0x04, 0x2A, 0x02, 0x02, 0x00, 0x2B, 
43019
  0x04, 0x00, 0x08, 0x30, 0x02, 0x04, 0x00, 0x2A, 0x04, 0x03, 0x00, 0x33, 0x02, 0x04, 0x00, 0x29, 
43020
  0x03, 0x02, 0x00, 0x03, 0x03, 0x00, 0x00, 0xBF, 0xFF, 0x8F, 0x82, 0x1E, 0x00, 0x15, 0x00, 0x15, 
43021
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 
43022
  0xBF, 0xFF, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x04, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 
43023
  0xFF, 0xFF, 0x02, 0x09, 0x01, 0x15, 0xDA, 0x18, 0xDA, 0x86, 0xA1, 0xDA, 0x81, 0x60, 0xBF, 0xFF, 
43024
  0x00, 0x00, 0xDA, 0x80, 0xAB, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8C, 0xFD, 0xBF, 0xFF, 0x00, 0x03, 
43025
  0xDA, 0x8D, 0x26, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x8D, 0x27, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x8D, 
43026
  0x28, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8D, 0x29, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x8D, 0x2A, 0xBF, 
43027
  0xFF, 0x00, 0x08, 0xDA, 0x8D, 0x2B, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 
43028
  0x0A, 0xDA, 0x8D, 0x2C, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x8D, 0x2D, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 
43029
  0x8D, 0x2E, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x8D, 0x2F, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x8D, 0x30, 
43030
  0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x32, 0xBF, 0xFF, 
43031
  0x00, 0x10, 0xDA, 0x8D, 0x33, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x34, 0xBF, 0xFF, 0x00, 0x0F, 
43032
  0xDA, 0x8D, 0x35, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x36, 0x00, 0x09, 0x00, 0xDA, 0x80, 0x90, 
43033
  0x05, 0x01, 0x00, 0x01, 0x2B, 0x03, 0x00, 0x00, 0x38, 0x02, 0x03, 0x01, 0x2A, 0x01, 0x00, 0x00, 
43034
  0x30, 0x01, 0x02, 0x00, 0x2A, 0x03, 0x01, 0x00, 0x33, 0x01, 0x03, 0x00, 0x29, 0x02, 0x02, 0x00, 
43035
  0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x8F, 0x79, 0x2F, 0x00, 0x26, 0x00, 0x26, 0x00, 0x14, 0x00, 
43036
  0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x01, 0x00, 
43037
  0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x04, 0x01, 0x14, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x00, 
43038
  0xDA, 0x80, 0xAB, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8C, 0xFD, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x8D, 
43039
  0x26, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x8D, 0x27, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x8D, 0x28, 0xBF, 
43040
  0xFF, 0x00, 0x06, 0xDA, 0x8D, 0x29, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x8D, 0x2A, 0xBF, 0xFF, 0x00, 
43041
  0x08, 0xDA, 0x8D, 0x2B, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 
43042
  0x8D, 0x2C, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x8D, 0x2D, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x8D, 0x2E, 
43043
  0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x8D, 0x2F, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x8D, 0x30, 0xBF, 0xFF, 
43044
  0x00, 0x10, 0xDA, 0x8D, 0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x32, 0xBF, 0xFF, 0x00, 0x10, 
43045
  0xDA, 0x8D, 0x33, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x34, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x8D, 
43046
  0x35, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x36, 0x28, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x07, 
43047
  0x29, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8F, 0x80, 0x12, 0x00, 0x12, 0x00, 
43048
  0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x01, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
43049
  0x00, 0x04, 0x01, 0x14, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 0xAB, 0xBF, 0xFF, 0x00, 
43050
  0x01, 0xDA, 0x8C, 0xFD, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x8D, 0x26, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 
43051
  0x8D, 0x27, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x8D, 0x28, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8D, 0x29, 
43052
  0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x8D, 0x2A, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x8D, 0x2B, 0xBF, 0xFF, 
43053
  0x00, 0x09, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x8D, 0x2C, 0xBF, 0xFF, 0x00, 0x0B, 
43054
  0xDA, 0x8D, 0x2D, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x8D, 0x2E, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x8D, 
43055
  0x2F, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x8D, 0x30, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x31, 0xBF, 
43056
  0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x32, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x33, 0xBF, 0xFF, 0x00, 
43057
  0x10, 0xDA, 0x8D, 0x34, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x8D, 0x35, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 
43058
  0x8D, 0x36, 0x28, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x09, 0x29, 0x00, 0x01, 0x00, 0x03, 0x00, 
43059
  0x00, 0x00, 0xBF, 0xFF, 0x8F, 0x77, 0x12, 0x00, 0x12, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 
43060
  0x00, 0x00, 0x01, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x04, 0x01, 0x14, 0xDA, 0x18, 
43061
  0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 0xAB, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8C, 0xFD, 0xBF, 0xFF, 
43062
  0x00, 0x03, 0xDA, 0x8D, 0x26, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x8D, 0x27, 0xBF, 0xFF, 0x00, 0x05, 
43063
  0xDA, 0x8D, 0x28, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8D, 0x29, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x8D, 
43064
  0x2A, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x8D, 0x2B, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x83, 0x64, 0xBF, 
43065
  0xFF, 0x00, 0x0A, 0xDA, 0x8D, 0x2C, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x8D, 0x2D, 0xBF, 0xFF, 0x00, 
43066
  0x0C, 0xDA, 0x8D, 0x2E, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x8D, 0x2F, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 
43067
  0x8D, 0x30, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x32, 
43068
  0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x33, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x34, 0xBF, 0xFF, 
43069
  0x00, 0x0F, 0xDA, 0x8D, 0x35, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x36, 0x28, 0x00, 0x00, 0x00, 
43070
  0x2D, 0x00, 0x00, 0x08, 0x29, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8F, 0x73, 
43071
  0x12, 0x00, 0x12, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x01, 0x00, 0x00, 0xCD, 
43072
  0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x04, 0x01, 0x14, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 
43073
  0xAB, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8C, 0xFD, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x8D, 0x26, 0xBF, 
43074
  0xFF, 0x00, 0x04, 0xDA, 0x8D, 0x27, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x8D, 0x28, 0xBF, 0xFF, 0x00, 
43075
  0x06, 0xDA, 0x8D, 0x29, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x8D, 0x2A, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 
43076
  0x8D, 0x2B, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x8D, 0x2C, 
43077
  0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x8D, 0x2D, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x8D, 0x2E, 0xBF, 0xFF, 
43078
  0x00, 0x0D, 0xDA, 0x8D, 0x2F, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x8D, 0x30, 0xBF, 0xFF, 0x00, 0x10, 
43079
  0xDA, 0x8D, 0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x32, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 
43080
  0x33, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x34, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x8D, 0x35, 0xBF, 
43081
  0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x36, 0x27, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x05, 0x29, 0x00, 
43082
  0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8F, 0x74, 0x12, 0x00, 0x12, 0x00, 0x0A, 0x00, 
43083
  0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x01, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x04, 
43084
  0x01, 0x14, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 0xAB, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
43085
  0x8C, 0xFD, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x8D, 0x26, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x8D, 0x27, 
43086
  0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x8D, 0x28, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8D, 0x29, 0xBF, 0xFF, 
43087
  0x00, 0x07, 0xDA, 0x8D, 0x2A, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x8D, 0x2B, 0xBF, 0xFF, 0x00, 0x09, 
43088
  0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x8D, 0x2C, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x8D, 
43089
  0x2D, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x8D, 0x2E, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x8D, 0x2F, 0xBF, 
43090
  0xFF, 0x00, 0x0E, 0xDA, 0x8D, 0x30, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x31, 0xBF, 0xFF, 0x00, 
43091
  0x10, 0xDA, 0x8D, 0x32, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x33, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 
43092
  0x8D, 0x34, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x8D, 0x35, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x36, 
43093
  0x27, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x03, 0x29, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 
43094
  0xBF, 0xFF, 0x8F, 0x72, 0x12, 0x00, 0x12, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 
43095
  0x01, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x06, 0x01, 0x14, 0xDA, 0x18, 0xBF, 0xFF, 
43096
  0x00, 0x00, 0xDA, 0x80, 0xAB, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8C, 0xFD, 0xBF, 0xFF, 0x00, 0x03, 
43097
  0xDA, 0x8D, 0x26, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x8D, 0x27, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x8D, 
43098
  0x28, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8D, 0x29, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x8D, 0x2A, 0xBF, 
43099
  0xFF, 0x00, 0x08, 0xDA, 0x8D, 0x2B, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 
43100
  0x0A, 0xDA, 0x8D, 0x2C, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x8D, 0x2D, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 
43101
  0x8D, 0x2E, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x8D, 0x2F, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x8D, 0x30, 
43102
  0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x32, 0xBF, 0xFF, 
43103
  0x00, 0x10, 0xDA, 0x8D, 0x33, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x34, 0xBF, 0xFF, 0x00, 0x0F, 
43104
  0xDA, 0x8D, 0x35, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x36, 0x27, 0x00, 0x00, 0x00, 0x2D, 0x00, 
43105
  0x00, 0x06, 0x27, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x03, 0x29, 0x00, 0x01, 0x00, 0x03, 0x00, 
43106
  0x00, 0x00, 0xBF, 0xFF, 0x8F, 0x71, 0x12, 0x00, 0x12, 0x00, 0x27, 0x00, 0x27, 0x00, 0x0A, 0x00, 
43107
  0x0A, 0xCD, 0x00, 0xD0, 0x00, 0x00, 0x03, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x05, 0x0C, 
43108
  0x00, 0xDA, 0x18, 0xDA, 0x89, 0x38, 0xDA, 0x82, 0x96, 0xDA, 0x85, 0xB6, 0xDA, 0x81, 0x5C, 0xDA, 
43109
  0x8A, 0x1C, 0x2A, 0x00, 0x00, 0x00, 0x2A, 0x01, 0x01, 0x00, 0x2A, 0x02, 0x02, 0x00, 0x31, 0x00, 
43110
  0x01, 0x02, 0x2A, 0x01, 0x03, 0x00, 0x33, 0x00, 0x01, 0x00, 0x29, 0x01, 0x00, 0x00, 0x2F, 0x01, 
43111
  0x00, 0x00, 0x2A, 0x02, 0x04, 0x00, 0x33, 0x01, 0x02, 0x00, 0x29, 0x02, 0x01, 0x00, 0x03, 0x02, 
43112
  0x00, 0x00, 0x8F, 0x70, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 
43113
  0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 
43114
  0x03, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x06, 0x01, 0x15, 0xDA, 0x18, 0xBF, 0xFF, 
43115
  0x00, 0x00, 0xDA, 0x80, 0xAB, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8C, 0xFD, 0xBF, 0xFF, 0x00, 0x03, 
43116
  0xDA, 0x8D, 0x26, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x8D, 0x27, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x8D, 
43117
  0x28, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8D, 0x29, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x8D, 0x2A, 0xBF, 
43118
  0xFF, 0x00, 0x08, 0xDA, 0x8D, 0x2B, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 
43119
  0x0A, 0xDA, 0x8D, 0x2C, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x8D, 0x2D, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 
43120
  0x8D, 0x2E, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x8D, 0x2F, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x8D, 0x30, 
43121
  0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x32, 0xBF, 0xFF, 
43122
  0x00, 0x10, 0xDA, 0x8D, 0x33, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x34, 0xBF, 0xFF, 0x00, 0x0F, 
43123
  0xDA, 0x8D, 0x35, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x36, 0x00, 0x06, 0x00, 0xDA, 0x80, 0x90, 
43124
  0x2F, 0x00, 0x00, 0x00, 0x2B, 0x02, 0x00, 0x10, 0x33, 0x01, 0x02, 0x00, 0x2D, 0x01, 0x00, 0x0C, 
43125
  0x29, 0x02, 0x02, 0x00, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x8F, 0x93, 0x24, 0x00, 0x24, 0x00, 
43126
  0x24, 0x00, 0x24, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x03, 0x01, 0x01, 0xCD, 
43127
  0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x06, 0x01, 0x15, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 
43128
  0xAB, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8C, 0xFD, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x8D, 0x26, 0xBF, 
43129
  0xFF, 0x00, 0x04, 0xDA, 0x8D, 0x27, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x8D, 0x28, 0xBF, 0xFF, 0x00, 
43130
  0x06, 0xDA, 0x8D, 0x29, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x8D, 0x2A, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 
43131
  0x8D, 0x2B, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x8D, 0x2C, 
43132
  0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x8D, 0x2D, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x8D, 0x2E, 0xBF, 0xFF, 
43133
  0x00, 0x0D, 0xDA, 0x8D, 0x2F, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x8D, 0x30, 0xBF, 0xFF, 0x00, 0x10, 
43134
  0xDA, 0x8D, 0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x32, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 
43135
  0x33, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x34, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x8D, 0x35, 0xBF, 
43136
  0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x36, 0x00, 0x06, 0x00, 0xDA, 0x80, 0x90, 0x2F, 0x00, 0x00, 0x00, 
43137
  0x2B, 0x02, 0x00, 0x10, 0x33, 0x01, 0x02, 0x00, 0x2D, 0x01, 0x00, 0x0D, 0x29, 0x02, 0x02, 0x00, 
43138
  0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x8F, 0x94, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 
43139
  0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0B, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
43140
  0x08, 0x24, 0x01, 0x19, 0xCE, 0x08, 0x45, 0x2D, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0xDA, 0x18, 
43141
  0xDA, 0x82, 0xE5, 0xDA, 0x8B, 0xA8, 0xDA, 0x86, 0xBC, 0xCF, 0x0C, 0x45, 0x2D, 0x65, 0x78, 0x70, 
43142
  0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0xDA, 0x80, 0x9E, 0xDA, 0x87, 0x62, 0xDA, 0x82, 0x10, 
43143
  0xDA, 0x82, 0x55, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 0xAB, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8C, 
43144
  0xFD, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x8D, 0x26, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x8D, 0x27, 0xBF, 
43145
  0xFF, 0x00, 0x05, 0xDA, 0x8D, 0x28, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8D, 0x29, 0xBF, 0xFF, 0x00, 
43146
  0x07, 0xDA, 0x8D, 0x2A, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x8D, 0x2B, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 
43147
  0x83, 0x64, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x8D, 0x2C, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x8D, 0x2D, 
43148
  0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x8D, 0x2E, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x8D, 0x2F, 0xBF, 0xFF, 
43149
  0x00, 0x0E, 0xDA, 0x8D, 0x30, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x31, 0xBF, 0xFF, 0x00, 0x10, 
43150
  0xDA, 0x8D, 0x32, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x33, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 
43151
  0x34, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x8D, 0x35, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x36, 0x00, 
43152
  0x24, 0x00, 0xDA, 0x80, 0x90, 0x00, 0x24, 0x01, 0xCF, 0x08, 0x45, 0x2D, 0x73, 0x77, 0x69, 0x74, 
43153
  0x63, 0x68, 0x07, 0x24, 0x02, 0xDA, 0x8D, 0x19, 0x12, 0x24, 0x04, 0xDA, 0x8B, 0x67, 0x16, 0x24, 
43154
  0x07, 0xDA, 0x8B, 0x78, 0x28, 0x02, 0x00, 0x00, 0x2D, 0x02, 0x00, 0x04, 0x05, 0x02, 0x00, 0x02, 
43155
  0x2B, 0x03, 0x00, 0x00, 0x30, 0x03, 0x02, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 
43156
  0x19, 0x02, 0x03, 0x00, 0x05, 0x04, 0x00, 0x01, 0x2B, 0x06, 0x00, 0x00, 0x38, 0x05, 0x06, 0x04, 
43157
  0x2F, 0x05, 0x00, 0x00, 0x2A, 0x06, 0x01, 0x00, 0x33, 0x04, 0x06, 0x00, 0x2A, 0x06, 0x02, 0x00, 
43158
  0x2A, 0x07, 0x03, 0x00, 0x31, 0x06, 0x04, 0x07, 0x43, 0x05, 0x00, 0x00, 0x19, 0x04, 0x05, 0x00, 
43159
  0x2F, 0x04, 0x00, 0x00, 0x2A, 0x07, 0x04, 0x00, 0x33, 0x06, 0x07, 0x00, 0x19, 0x07, 0x06, 0x00, 
43160
  0x2F, 0x07, 0x00, 0x00, 0x2A, 0x09, 0x05, 0x00, 0x33, 0x08, 0x09, 0x00, 0x1C, 0x08, 0x05, 0x00, 
43161
  0x33, 0x09, 0x07, 0x00, 0x32, 0x02, 0x00, 0x00, 0x33, 0x0A, 0x09, 0x00, 0x1A, 0x04, 0x00, 0x00, 
43162
  0x2A, 0x0A, 0x06, 0x00, 0x39, 0x09, 0x07, 0x0A, 0x01, 0x09, 0x00, 0x00, 0x2A, 0x08, 0x07, 0x00, 
43163
  0x03, 0x08, 0x00, 0x00, 0xBF, 0xFF, 0x8F, 0x8A, 0x0C, 0x00, 0x0C, 0x01, 0x2B, 0x00, 0x19, 0x00, 
43164
  0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x0C, 0x01, 0x31, 0x00, 0x28, 0x00, 0x28, 0x00, 0x21, 0x00, 
43165
  0x21, 0x00, 0x21, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x0C, 0x01, 0x17, 0x00, 
43166
  0x17, 0x00, 0x17, 0x00, 0x0C, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0C, 0x01, 0x0F, 0x00, 
43167
  0x0E, 0x00, 0x0E, 0xBF, 0xFF, 0x0C, 0x02, 0x15, 0x00, 0x15, 0x00, 0x0E, 0xBF, 0xF9, 0x0A, 0x00, 
43168
  0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x01, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x04, 
43169
  0x01, 0x14, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 0xAB, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
43170
  0x8C, 0xFD, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x8D, 0x26, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x8D, 0x27, 
43171
  0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x8D, 0x28, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8D, 0x29, 0xBF, 0xFF, 
43172
  0x00, 0x07, 0xDA, 0x8D, 0x2A, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x8D, 0x2B, 0xBF, 0xFF, 0x00, 0x09, 
43173
  0xDA, 0x83, 0x64, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x8D, 0x2C, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x8D, 
43174
  0x2D, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x8D, 0x2E, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x8D, 0x2F, 0xBF, 
43175
  0xFF, 0x00, 0x0E, 0xDA, 0x8D, 0x30, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x31, 0xBF, 0xFF, 0x00, 
43176
  0x10, 0xDA, 0x8D, 0x32, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x33, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 
43177
  0x8D, 0x34, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x8D, 0x35, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x36, 
43178
  0x27, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x09, 0x29, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 
43179
  0xBF, 0xFF, 0x8F, 0x78, 0x12, 0x00, 0x12, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD0, 0x00, 0x00, 
43180
  0x02, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x07, 0x00, 0xDA, 0x18, 0xDA, 0x8C, 0xC2, 
43181
  0xDA, 0x81, 0x60, 0x2A, 0x00, 0x00, 0x00, 0x26, 0x01, 0x00, 0x00, 0x30, 0x00, 0x01, 0x00, 0x2A, 
43182
  0x01, 0x01, 0x00, 0x33, 0x00, 0x01, 0x00, 0x29, 0x01, 0x01, 0x00, 0x03, 0x01, 0x00, 0x00, 0x8F, 
43183
  0x95, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 
43184
  0xDC, 0x00, 0x00, 0x08, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x03, 0x0E, 0x01, 0x19, 0xCE, 
43185
  0x09, 0x64, 0x6F, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0xDA, 0x18, 0xCE, 0x0E, 0x75, 0x6E, 
43186
  0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x20, 0x2D, 0xDA, 0x81, 0x5C, 0xDA, 
43187
  0x8D, 0x05, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 0xAB, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8C, 0xFD, 
43188
  0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x8D, 0x26, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x8D, 0x27, 0xBF, 0xFF, 
43189
  0x00, 0x05, 0xDA, 0x8D, 0x28, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8D, 0x29, 0xBF, 0xFF, 0x00, 0x07, 
43190
  0xDA, 0x8D, 0x2A, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x8D, 0x2B, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x83, 
43191
  0x64, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x8D, 0x2C, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x8D, 0x2D, 0xBF, 
43192
  0xFF, 0x00, 0x0C, 0xDA, 0x8D, 0x2E, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x8D, 0x2F, 0xBF, 0xFF, 0x00, 
43193
  0x0E, 0xDA, 0x8D, 0x30, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 
43194
  0x8D, 0x32, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x33, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x34, 
43195
  0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x8D, 0x35, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8D, 0x36, 0xBF, 0xFF, 
43196
  0x00, 0x12, 0xDA, 0x8D, 0x37, 0x00, 0x0E, 0x00, 0xDA, 0x80, 0xD8, 0x00, 0x0E, 0x01, 0xDA, 0x80, 
43197
  0x90, 0x00, 0x0E, 0x02, 0xDA, 0x8D, 0x38, 0x02, 0x0E, 0x04, 0xDA, 0x82, 0xF5, 0x2B, 0x04, 0x00, 
43198
  0x12, 0x38, 0x03, 0x04, 0x00, 0x19, 0x04, 0x03, 0x00, 0x1C, 0x04, 0x03, 0x00, 0x2F, 0x01, 0x00, 
43199
  0x00, 0x34, 0x04, 0x00, 0x00, 0x2A, 0x05, 0x00, 0x00, 0x30, 0x05, 0x00, 0x00, 0x2A, 0x06, 0x01, 
43200
  0x00, 0x33, 0x05, 0x06, 0x00, 0x2B, 0x06, 0x00, 0x12, 0x2A, 0x07, 0x02, 0x00, 0x38, 0x05, 0x06, 
43201
  0x07, 0x34, 0x05, 0x00, 0x00, 0xBF, 0xFF, 0x8F, 0x98, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x05, 
43202
  0x00, 0x0B, 0x00, 0x0B, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x31, 0x00, 0x31, 
43203
  0x00, 0x31, 0x00, 0x30, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x01, 0x01, 0x01, 0x07, 0x10, 0x00, 
43204
  0x03, 0xCE, 0x09, 0x67, 0x65, 0x74, 0x70, 0x72, 0x6F, 0x6D, 0x70, 0x74, 0xDA, 0x18, 0xDA, 0x85, 
43205
  0x51, 0xDA, 0x82, 0x7C, 0xDA, 0x89, 0x33, 0xDA, 0x82, 0x86, 0xDA, 0x81, 0xE7, 0xDA, 0x81, 0x88, 
43206
  0xDA, 0x80, 0xF5, 0x00, 0x10, 0x00, 0xDA, 0x64, 0x00, 0x10, 0x01, 0xCF, 0x09, 0x67, 0x65, 0x74, 
43207
  0x70, 0x72, 0x6F, 0x6D, 0x70, 0x74, 0x04, 0x10, 0x04, 0xDA, 0x81, 0xF2, 0x2F, 0x00, 0x00, 0x00, 
43208
  0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x3B, 0x03, 0x02, 0x00, 0x19, 0x04, 0x03, 0x00, 
43209
  0x2A, 0x03, 0x01, 0x00, 0x30, 0x00, 0x03, 0x00, 0x2A, 0x05, 0x02, 0x00, 0x33, 0x03, 0x05, 0x00, 
43210
  0x2A, 0x05, 0x03, 0x00, 0x2A, 0x06, 0x04, 0x00, 0x31, 0x05, 0x04, 0x06, 0x2A, 0x05, 0x05, 0x00, 
43211
  0x30, 0x03, 0x05, 0x00, 0x2A, 0x05, 0x06, 0x00, 0x34, 0x05, 0x00, 0x00, 0x8F, 0xC6, 0x17, 0x00, 
43212
  0x17, 0x00, 0x17, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 
43213
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xCD, 0x00, 0xDC, 
43214
  0x00, 0x00, 0x08, 0x03, 0x03, 0x03, 0x06, 0x0D, 0x00, 0x04, 0xCE, 0x08, 0x67, 0x65, 0x74, 0x73, 
43215
  0x74, 0x64, 0x69, 0x6E, 0xDA, 0x18, 0xDA, 0x8B, 0x26, 0xDA, 0x86, 0x5A, 0xDA, 0x8B, 0xC9, 0xDA, 
43216
  0x8B, 0x9C, 0xDA, 0x82, 0x5E, 0xDA, 0x80, 0xF7, 0x00, 0x0D, 0x00, 0xDA, 0x85, 0xEC, 0x00, 0x0D, 
43217
  0x01, 0xDA, 0x82, 0x3B, 0x00, 0x0D, 0x02, 0xDA, 0x80, 0xC0, 0x00, 0x0D, 0x03, 0xDA, 0x8D, 0x3C, 
43218
  0x2A, 0x04, 0x00, 0x00, 0x30, 0x04, 0x00, 0x00, 0x2A, 0x05, 0x01, 0x00, 0x33, 0x04, 0x05, 0x00, 
43219
  0x2A, 0x05, 0x00, 0x00, 0x2F, 0x05, 0x00, 0x00, 0x2A, 0x06, 0x02, 0x00, 0x33, 0x05, 0x06, 0x00, 
43220
  0x2A, 0x06, 0x03, 0x00, 0x2A, 0x07, 0x04, 0x00, 0x31, 0x06, 0x07, 0x01, 0x2A, 0x06, 0x05, 0x00, 
43221
  0x34, 0x06, 0x00, 0x00, 0x8F, 0xC9, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x0B, 0x00, 
43222
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xCD, 
43223
  0x00, 0xDC, 0x00, 0x00, 0x05, 0x02, 0x02, 0x02, 0x00, 0x07, 0x01, 0x0A, 0xCE, 0x08, 0x67, 0x65, 
43224
  0x74, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x1A, 0xDA, 0x8D, 0x53, 0xBF, 
43225
  0xFF, 0x00, 0x1B, 0xDA, 0x8D, 0x3C, 0xBF, 0xFF, 0x00, 0x1C, 0xDA, 0x80, 0xBA, 0xBF, 0xFF, 0x00, 
43226
  0x1D, 0xDA, 0x8D, 0x3D, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x8D, 0x3E, 0xBF, 0xFF, 0x00, 0x1E, 0xDA, 
43227
  0x8D, 0x3F, 0xBF, 0xFF, 0x00, 0x1D, 0xCF, 0x06, 0x67, 0x65, 0x74, 0x74, 0x65, 0x72, 0x00, 0x07, 
43228
  0x00, 0xDA, 0x82, 0x3B, 0x00, 0x07, 0x01, 0xDA, 0x64, 0x00, 0x07, 0x02, 0xDA, 0x8D, 0x40, 0x2F, 
43229
  0x01, 0x00, 0x00, 0x2B, 0x04, 0x00, 0x1A, 0x33, 0x03, 0x04, 0x00, 0x2B, 0x04, 0x00, 0x1C, 0x31, 
43230
  0x03, 0x00, 0x04, 0x2B, 0x04, 0x00, 0x1D, 0x34, 0x04, 0x00, 0x00, 0xBF, 0xFF, 0x8F, 0xD5, 0x13, 
43231
  0x00, 0x13, 0x00, 0x13, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x8F, 0x38, 0x03, 0x00, 
43232
  0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 
43233
  0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x02, 0x0F, 0x00, 
43234
  0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x00, 0x03, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x2C, 0x00, 
43235
  0x2C, 0x00, 0x03, 0x01, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x03, 0x00, 0x03, 0x00, 
43236
  0x35, 0x00, 0x35, 0x00, 0x35, 0x00, 0x35, 0x00, 0x03, 0x02, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 
43237
  0x18, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0xBF, 0xFF, 0x11, 0x00, 0x11, 0x02, 0x13, 0x00, 0x13, 
43238
  0x00, 0x13, 0x00, 0x13, 0xBF, 0xFE, 0x11, 0x00, 0x11, 0x04, 0x03, 0x00, 0x03, 0x2D, 0x0A, 0x18, 
43239
  0x0A, 0xBF, 0xF3, 0x0A, 0xBF, 0xCF, 0x0A, 0x21, 0x0A, 0x01, 0x0A, 0x0B, 0x0A, 0xBF, 0xF8, 0x0A, 
43240
  0x07, 0x0A, 0xBF, 0xF7, 0x0A, 0xBF, 0xFC, 0x0A, 0x01, 0x0A, 0xBF, 0xFE, 0x0A, 0xBF, 0xFF, 0x0A, 
43241
  0xBF, 0xFF, 0x0A, 0x23, 0x0A, 0x01, 0x0A, 0xBF, 0xF5, 0x0A, 0xBF, 0xEF, 0x0A, 0x1D, 0x0A, 0xBF, 
43242
  0xBE, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
43243
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
43244
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
43245
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
43246
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x44, 0x03, 0x00, 0x03, 0x05, 0x03, 0x01, 0x10, 
43247
  0x00, 0x03, 0x01, 0x0A, 0x00, 0x03, 0x01, 0x0E, 0x00, 0x05, 0x01, 0x09, 0x00, 0x09, 0x00, 0x20, 
43248
  0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x19, 0x00, 0x19, 0x00, 0x09, 0x00, 0x09, 
43249
  0x00, 0x09, 0x00, 0x05, 0x01, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x0D, 0x00, 0x0D, 
43250
  0x00, 0x07, 0xBF, 0xFF, 0x05, 0x03, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x09, 0x01, 0x09, 0x01, 
43251
  0x09, 0x02, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0D, 0x01, 
43252
  0x0D, 0x00, 0x0D, 0x01, 0x0D, 0x00, 0x0D, 0x01, 0x0D, 0x00, 0x0D, 0x01, 0x0D, 0x01, 0x0F, 0x00, 
43253
  0x0F, 0x00, 0x0F, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 0xFE, 0x0D, 0x03, 0x0D, 0x00, 0x0D, 
43254
  0x00, 0x0D, 0xBF, 0xF7, 0x09, 0x0B, 0x16, 0x00, 0x16, 0x00, 0x0D, 0x01, 0x0D, 0x00, 0x0D, 0x01, 
43255
  0x0D, 0x00, 0x0D, 0x01, 0x0D, 0x00, 0x0D, 0x01, 0x0D, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x01, 
43256
  0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 0xFE, 0x0D, 0x03, 0x0D, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
43257
  0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 0xFF, 0x0D, 0x03, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 
43258
  0x11, 0x00, 0x11, 0x00, 0x11, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x01, 0x09, 0xBF, 0xE2, 0x03, 
43259
  0x20, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x01, 0x05, 0x01, 0x14, 
43260
  0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x02, 0x09, 
43261
  0x00, 0x09, 0x01, 0x3D, 0x00, 0x3D, 0x00, 0x4C, 0x00, 0x4C, 0x00, 0x5A, 0x00, 0x5A, 0x00, 0x0B, 
43262
  0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
43263
  0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x09, 0x00, 0x09, 0x01, 0x09, 
43264
  0x00, 0x09, 0x03, 0x09, 0x00, 0x09, 0x04, 0x12, 0x00, 0x12, 0x00, 0x09, 0x01, 0x22, 0x00, 0x22, 
43265
  0x00, 0x22, 0x00, 0x22, 0x00, 0x09, 0x00, 0x09, 0x01, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 
43266
  0x00, 0x18, 0x00, 0x0B, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
43267
  0xBF, 0xFE, 0x09, 0x03, 0x09, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x0B, 0x00, 0x0B, 0x00, 
43268
  0x0B, 0xBF, 0xFE, 0x09, 0x03, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x09, 0x01, 0x09, 
43269
  0x00, 0x09, 0x02, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 
43270
  0x00, 0x09, 0x01, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 
43271
  0x00, 0x09, 0x01, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 
43272
  0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 
43273
  0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xE3, 0x03, 0xF9, 0x7F, 0x05, 
43274
  0x34, 0x00, 0x00, 0x00, 0x00, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x68, 0x79, 0x70, 0x6F, 
43275
  0x74, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x68, 0x79, 0x70, 0x6F, 0x74, 0xCF, 0x07, 0x6F, 
43276
  0x73, 0x2F, 0x73, 0x74, 0x61, 0x74, 0xDA, 0x87, 0x69, 0xCF, 0x0F, 0x73, 0x74, 0x72, 0x69, 0x6E, 
43277
  0x67, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x2D, 0x61, 0x6C, 0x6C, 0xD8, 0x0F, 0x73, 0x74, 0x72, 0x69, 
43278
  0x6E, 0x67, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x2D, 0x61, 0x6C, 0x6C, 0xCF, 0x06, 0x72, 0x65, 0x73, 
43279
  0x75, 0x6D, 0x65, 0xDA, 0x82, 0xB0, 0xCF, 0x10, 0x65, 0x76, 0x2F, 0x72, 0x65, 0x6C, 0x65, 0x61, 
43280
  0x73, 0x65, 0x2D, 0x72, 0x6C, 0x6F, 0x63, 0x6B, 0xD8, 0x10, 0x65, 0x76, 0x2F, 0x72, 0x65, 0x6C, 
43281
  0x65, 0x61, 0x73, 0x65, 0x2D, 0x72, 0x6C, 0x6F, 0x63, 0x6B, 0xDA, 0x85, 0xE5, 0xDA, 0x85, 0xE3, 
43282
  0xDA, 0x88, 0x41, 0xDA, 0x88, 0x3F, 0xDA, 0x80, 0xBD, 0xDA, 0x80, 0xB8, 0xCF, 0x07, 0x73, 0x74, 
43283
  0x72, 0x75, 0x63, 0x74, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 
43284
  0x02, 0x06, 0x00, 0x02, 0xCE, 0x07, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x3F, 0xDA, 0x18, 0xDA, 
43285
  0x2C, 0xDA, 0x80, 0x89, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xDA, 0x8D, 0x5F, 0x2F, 
43286
  0x00, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x23, 
43287
  0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x6E, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2A, 0x00, 
43288
  0x2A, 0x00, 0x2A, 0xCF, 0x04, 0x6B, 0x65, 0x65, 0x70, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 
43289
  0x1B, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x80, 0xFB, 0x00, 0x3B, 0xCE, 0x04, 0x6B, 
43290
  0x65, 0x65, 0x70, 0xDA, 0x18, 0xDA, 0x81, 0x8C, 0xDA, 0x81, 0x8D, 0x00, 0x80, 0xFB, 0x00, 0xDA, 
43291
  0x83, 0x2E, 0x00, 0x80, 0xFB, 0x01, 0xDA, 0x1F, 0x00, 0x80, 0xFB, 0x02, 0xDA, 0x81, 0x8E, 0x00, 
43292
  0x80, 0xFB, 0x03, 0xDA, 0x8D, 0x62, 0x01, 0x80, 0xFB, 0x05, 0xDA, 0x81, 0x08, 0x03, 0x80, 0xFA, 
43293
  0x07, 0xDA, 0x81, 0x90, 0x03, 0x80, 0xFA, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 
43294
  0x6D, 0x05, 0x16, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x6F, 0x08, 0x16, 0x09, 
43295
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x6E, 0x0B, 0x16, 0x0A, 0xDA, 0x1E, 0x0E, 0x14, 
43296
  0x0B, 0xDA, 0x83, 0x92, 0x1A, 0x33, 0x0A, 0xDA, 0x81, 0x94, 0x1B, 0x33, 0x09, 0xDA, 0x81, 0x95, 
43297
  0x1B, 0x33, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x71, 0x1E, 0x33, 0x0C, 0xCF, 
43298
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x70, 0x21, 0x33, 0x0D, 0xDA, 0x1E, 0x2B, 0x31, 0x0B, 
43299
  0xDA, 0x83, 0x92, 0x37, 0x5A, 0x0B, 0xDA, 0x81, 0x94, 0x39, 0x5A, 0x0C, 0xDA, 0x81, 0x98, 0x3A, 
43300
  0x5A, 0x0A, 0xDA, 0x81, 0x95, 0x3B, 0x5A, 0x0D, 0xDA, 0x81, 0x99, 0x3B, 0x5A, 0x01, 0xCF, 0x07, 
43301
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x73, 0x3E, 0x5A, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
43302
  0x30, 0x31, 0x72, 0x41, 0x5A, 0x10, 0xDA, 0x1E, 0x52, 0x58, 0x0E, 0xDA, 0x83, 0x92, 0x5E, 0x80, 
43303
  0x8C, 0x0C, 0xDA, 0x81, 0x94, 0x60, 0x80, 0x8C, 0x0D, 0xDA, 0x81, 0x98, 0x62, 0x80, 0x8C, 0x0E, 
43304
  0xDA, 0x81, 0x9C, 0x63, 0x80, 0x8C, 0x0B, 0xDA, 0x81, 0x95, 0x64, 0x80, 0x8C, 0x0F, 0xDA, 0x81, 
43305
  0x99, 0x65, 0x80, 0x8C, 0x10, 0xDA, 0x81, 0x9D, 0x65, 0x80, 0x8C, 0x01, 0xCF, 0x07, 0x5F, 0x30, 
43306
  0x30, 0x30, 0x30, 0x31, 0x75, 0x68, 0x80, 0x8C, 0x12, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
43307
  0x31, 0x74, 0x6B, 0x80, 0x8C, 0x13, 0xDA, 0x1E, 0x80, 0x84, 0x80, 0x8A, 0x11, 0xDA, 0x83, 0x92, 
43308
  0x80, 0x90, 0x80, 0xC8, 0x0D, 0xDA, 0x81, 0x94, 0x80, 0x92, 0x80, 0xC8, 0x0E, 0xDA, 0x81, 0x98, 
43309
  0x80, 0x94, 0x80, 0xC8, 0x0F, 0xDA, 0x81, 0x9C, 0x80, 0x96, 0x80, 0xC8, 0x10, 0xDA, 0x81, 0xA0, 
43310
  0x80, 0x97, 0x80, 0xC8, 0x0C, 0xDA, 0x81, 0x95, 0x80, 0x98, 0x80, 0xC8, 0x11, 0xDA, 0x81, 0x99, 
43311
  0x80, 0x99, 0x80, 0xC8, 0x12, 0xDA, 0x81, 0x9D, 0x80, 0x9A, 0x80, 0xC8, 0x13, 0xDA, 0x81, 0xA1, 
43312
  0x80, 0x9A, 0x80, 0xC8, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x77, 0x80, 0x9D, 
43313
  0x80, 0xC8, 0x15, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x76, 0x80, 0xA0, 0x80, 0xC8, 
43314
  0x16, 0xDA, 0x1E, 0x80, 0xC0, 0x80, 0xC6, 0x14, 0xDA, 0x83, 0x92, 0x80, 0xCC, 0x80, 0xFA, 0x0D, 
43315
  0xDA, 0x81, 0xA4, 0x80, 0xD0, 0x80, 0xFA, 0x0E, 0xDA, 0x81, 0xA5, 0x80, 0xD1, 0x80, 0xFA, 0x0C, 
43316
  0xDA, 0x81, 0xA6, 0x80, 0xD1, 0x80, 0xFA, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 
43317
  0x79, 0x80, 0xD4, 0x80, 0xFA, 0x10, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x78, 0x80, 
43318
  0xD7, 0x80, 0xFA, 0x11, 0xDA, 0x1E, 0x80, 0xD8, 0x80, 0xEC, 0x0F, 0xDA, 0x80, 0x90, 0x80, 0xD8, 
43319
  0x80, 0xEC, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x7A, 0x80, 0xDC, 0x80, 0xEA, 
43320
  0x14, 0xDA, 0x81, 0xAA, 0x80, 0xDE, 0x80, 0xEA, 0x15, 0xDA, 0x81, 0xAB, 0x80, 0xE0, 0x80, 0xEA, 
43321
  0x16, 0xDA, 0x81, 0xAC, 0x80, 0xF2, 0x80, 0xF8, 0x12, 0xDA, 0x83, 0x92, 0x3E, 0x04, 0x00, 0x00, 
43322
  0x19, 0x05, 0x04, 0x00, 0x3D, 0x06, 0x02, 0x00, 0x19, 0x07, 0x06, 0x00, 0x24, 0x06, 0x07, 0x00, 
43323
  0x1C, 0x06, 0x12, 0x00, 0x26, 0x09, 0x00, 0x00, 0x47, 0x08, 0x01, 0x09, 0x19, 0x09, 0x08, 0x00, 
43324
  0x1D, 0x09, 0x0D, 0x00, 0x38, 0x08, 0x01, 0x09, 0x19, 0x0A, 0x08, 0x00, 0x2F, 0x0A, 0x00, 0x00, 
43325
  0x33, 0x08, 0x00, 0x00, 0x19, 0x0B, 0x08, 0x00, 0x1C, 0x08, 0x05, 0x00, 0x30, 0x05, 0x0B, 0x00, 
43326
  0x2A, 0x0D, 0x00, 0x00, 0x33, 0x0C, 0x0D, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x09, 0x01, 0x09, 
43327
  0x1A, 0xF4, 0xFF, 0xFF, 0x1A, 0xE4, 0x00, 0x00, 0x24, 0x08, 0x07, 0x01, 0x1C, 0x08, 0x1C, 0x00, 
43328
  0x3B, 0x09, 0x02, 0x00, 0x19, 0x0A, 0x09, 0x00, 0x26, 0x09, 0x00, 0x00, 0x26, 0x0C, 0x00, 0x00, 
43329
  0x47, 0x0B, 0x01, 0x0C, 0x19, 0x0C, 0x0B, 0x00, 0x1D, 0x0C, 0x14, 0x00, 0x38, 0x0B, 0x01, 0x0C, 
43330
  0x19, 0x0D, 0x0B, 0x00, 0x47, 0x09, 0x0A, 0x09, 0x26, 0x0E, 0x00, 0x00, 0x23, 0x0B, 0x0E, 0x09, 
43331
  0x1C, 0x0B, 0x03, 0x00, 0x1A, 0x0D, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x38, 0x0B, 0x0A, 0x09, 
43332
  0x30, 0x0D, 0x0B, 0x00, 0x33, 0x0E, 0x00, 0x00, 0x19, 0x0B, 0x0E, 0x00, 0x1C, 0x0E, 0x05, 0x00, 
43333
  0x30, 0x05, 0x0B, 0x00, 0x2A, 0x10, 0x00, 0x00, 0x33, 0x0F, 0x10, 0x00, 0x1A, 0x01, 0x00, 0x00, 
43334
  0x47, 0x0C, 0x01, 0x0C, 0x1A, 0xED, 0xFF, 0xFF, 0x1A, 0xC7, 0x00, 0x00, 0x24, 0x09, 0x07, 0x02, 
43335
  0x1C, 0x09, 0x26, 0x00, 0x3B, 0x0A, 0x02, 0x00, 0x19, 0x0B, 0x0A, 0x00, 0x3B, 0x0A, 0x02, 0x01, 
43336
  0x19, 0x0C, 0x0A, 0x00, 0x26, 0x0A, 0x00, 0x00, 0x26, 0x0D, 0x00, 0x00, 0x26, 0x0F, 0x00, 0x00, 
43337
  0x47, 0x0E, 0x01, 0x0F, 0x19, 0x0F, 0x0E, 0x00, 0x1D, 0x0F, 0x1B, 0x00, 0x38, 0x0E, 0x01, 0x0F, 
43338
  0x19, 0x10, 0x0E, 0x00, 0x47, 0x0A, 0x0B, 0x0A, 0x26, 0x11, 0x00, 0x00, 0x23, 0x0E, 0x11, 0x0A, 
43339
  0x1C, 0x0E, 0x03, 0x00, 0x1A, 0x14, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x0D, 0x0C, 0x0D, 
43340
  0x26, 0x11, 0x00, 0x00, 0x23, 0x0E, 0x11, 0x0D, 0x1C, 0x0E, 0x03, 0x00, 0x1A, 0x0E, 0x00, 0x00, 
43341
  0x1A, 0x01, 0x00, 0x00, 0x38, 0x0E, 0x0B, 0x0A, 0x38, 0x11, 0x0C, 0x0D, 0x31, 0x10, 0x0E, 0x11, 
43342
  0x33, 0x12, 0x00, 0x00, 0x19, 0x0E, 0x12, 0x00, 0x1C, 0x12, 0x05, 0x00, 0x30, 0x05, 0x0E, 0x00, 
43343
  0x2A, 0x13, 0x00, 0x00, 0x33, 0x11, 0x13, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x0F, 0x01, 0x0F, 
43344
  0x1A, 0xE6, 0xFF, 0xFF, 0x1A, 0xA0, 0x00, 0x00, 0x24, 0x0A, 0x07, 0x03, 0x1C, 0x0A, 0x31, 0x00, 
43345
  0x3B, 0x0B, 0x02, 0x00, 0x19, 0x0C, 0x0B, 0x00, 0x3B, 0x0B, 0x02, 0x01, 0x19, 0x0D, 0x0B, 0x00, 
43346
  0x3B, 0x0B, 0x02, 0x02, 0x19, 0x0E, 0x0B, 0x00, 0x26, 0x0B, 0x00, 0x00, 0x26, 0x0F, 0x00, 0x00, 
43347
  0x26, 0x10, 0x00, 0x00, 0x26, 0x12, 0x00, 0x00, 0x47, 0x11, 0x01, 0x12, 0x19, 0x12, 0x11, 0x00, 
43348
  0x1D, 0x12, 0x23, 0x00, 0x38, 0x11, 0x01, 0x12, 0x19, 0x13, 0x11, 0x00, 0x47, 0x0B, 0x0C, 0x0B, 
43349
  0x26, 0x14, 0x00, 0x00, 0x23, 0x11, 0x14, 0x0B, 0x1C, 0x11, 0x03, 0x00, 0x1A, 0x1C, 0x00, 0x00, 
43350
  0x1A, 0x01, 0x00, 0x00, 0x47, 0x0F, 0x0D, 0x0F, 0x26, 0x14, 0x00, 0x00, 0x23, 0x11, 0x14, 0x0F, 
43351
  0x1C, 0x11, 0x03, 0x00, 0x1A, 0x16, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x10, 0x0E, 0x10, 
43352
  0x26, 0x14, 0x00, 0x00, 0x23, 0x11, 0x14, 0x10, 0x1C, 0x11, 0x03, 0x00, 0x1A, 0x10, 0x00, 0x00, 
43353
  0x1A, 0x01, 0x00, 0x00, 0x38, 0x11, 0x0C, 0x0B, 0x38, 0x14, 0x0D, 0x0F, 0x38, 0x15, 0x0E, 0x10, 
43354
  0x31, 0x13, 0x11, 0x14, 0x2F, 0x15, 0x00, 0x00, 0x33, 0x16, 0x00, 0x00, 0x19, 0x11, 0x16, 0x00, 
43355
  0x1C, 0x16, 0x05, 0x00, 0x30, 0x05, 0x11, 0x00, 0x2A, 0x15, 0x00, 0x00, 0x33, 0x14, 0x15, 0x00, 
43356
  0x1A, 0x01, 0x00, 0x00, 0x47, 0x12, 0x01, 0x12, 0x1A, 0xDE, 0xFF, 0xFF, 0x1A, 0x6E, 0x00, 0x00, 
43357
  0x24, 0x0B, 0x07, 0x04, 0x1C, 0x0B, 0x3B, 0x00, 0x3B, 0x0C, 0x02, 0x00, 0x19, 0x0D, 0x0C, 0x00, 
43358
  0x3B, 0x0C, 0x02, 0x01, 0x19, 0x0E, 0x0C, 0x00, 0x3B, 0x0C, 0x02, 0x02, 0x19, 0x0F, 0x0C, 0x00, 
43359
  0x3B, 0x0C, 0x02, 0x03, 0x19, 0x10, 0x0C, 0x00, 0x26, 0x0C, 0x00, 0x00, 0x26, 0x11, 0x00, 0x00, 
43360
  0x26, 0x12, 0x00, 0x00, 0x26, 0x13, 0x00, 0x00, 0x26, 0x15, 0x00, 0x00, 0x47, 0x14, 0x01, 0x15, 
43361
  0x19, 0x15, 0x14, 0x00, 0x1D, 0x15, 0x2A, 0x00, 0x38, 0x14, 0x01, 0x15, 0x19, 0x16, 0x14, 0x00, 
43362
  0x47, 0x0C, 0x0D, 0x0C, 0x26, 0x17, 0x00, 0x00, 0x23, 0x14, 0x17, 0x0C, 0x1C, 0x14, 0x03, 0x00, 
43363
  0x1A, 0x23, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x11, 0x0E, 0x11, 0x26, 0x17, 0x00, 0x00, 
43364
  0x23, 0x14, 0x17, 0x11, 0x1C, 0x14, 0x03, 0x00, 0x1A, 0x1D, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 
43365
  0x47, 0x12, 0x0F, 0x12, 0x26, 0x17, 0x00, 0x00, 0x23, 0x14, 0x17, 0x12, 0x1C, 0x14, 0x03, 0x00, 
43366
  0x1A, 0x17, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x13, 0x10, 0x13, 0x26, 0x17, 0x00, 0x00, 
43367
  0x23, 0x14, 0x17, 0x13, 0x1C, 0x14, 0x03, 0x00, 0x1A, 0x11, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 
43368
  0x38, 0x14, 0x0D, 0x0C, 0x38, 0x17, 0x0E, 0x11, 0x38, 0x18, 0x0F, 0x12, 0x38, 0x19, 0x10, 0x13, 
43369
  0x31, 0x16, 0x14, 0x17, 0x30, 0x18, 0x19, 0x00, 0x33, 0x1A, 0x00, 0x00, 0x19, 0x14, 0x1A, 0x00, 
43370
  0x1C, 0x1A, 0x05, 0x00, 0x30, 0x05, 0x14, 0x00, 0x2A, 0x18, 0x00, 0x00, 0x33, 0x17, 0x18, 0x00, 
43371
  0x1A, 0x01, 0x00, 0x00, 0x47, 0x15, 0x01, 0x15, 0x1A, 0xD7, 0xFF, 0xFF, 0x1A, 0x32, 0x00, 0x00, 
43372
  0x2F, 0x07, 0x00, 0x00, 0x2A, 0x0D, 0x01, 0x00, 0x33, 0x0C, 0x0D, 0x00, 0x19, 0x0D, 0x0C, 0x00, 
43373
  0x2F, 0x07, 0x00, 0x00, 0x2A, 0x0E, 0x01, 0x00, 0x33, 0x0C, 0x0E, 0x00, 0x19, 0x0E, 0x0C, 0x00, 
43374
  0x28, 0x0C, 0x00, 0x00, 0x26, 0x10, 0x00, 0x00, 0x47, 0x0F, 0x01, 0x10, 0x19, 0x10, 0x0F, 0x00, 
43375
  0x1D, 0x10, 0x25, 0x00, 0x38, 0x0F, 0x01, 0x10, 0x19, 0x11, 0x0F, 0x00, 0x29, 0x0F, 0x00, 0x00, 
43376
  0x21, 0x12, 0x0F, 0x07, 0x1C, 0x12, 0x12, 0x00, 0x38, 0x13, 0x0D, 0x0F, 0x19, 0x14, 0x13, 0x00, 
43377
  0x38, 0x13, 0x02, 0x0F, 0x19, 0x15, 0x13, 0x00, 0x47, 0x13, 0x15, 0x14, 0x19, 0x16, 0x13, 0x00, 
43378
  0x26, 0x17, 0x00, 0x00, 0x23, 0x13, 0x17, 0x16, 0x1C, 0x13, 0x04, 0x00, 0x27, 0x0C, 0x00, 0x00, 
43379
  0x1A, 0x07, 0x00, 0x00, 0x1A, 0x04, 0x00, 0x00, 0x3A, 0x0D, 0x0F, 0x16, 0x38, 0x17, 0x15, 0x16, 
43380
  0x3A, 0x0E, 0x0F, 0x17, 0x05, 0x0F, 0x0F, 0x01, 0x1A, 0xEE, 0xFF, 0xFF, 0x1C, 0x0C, 0x03, 0x00, 
43381
  0x1A, 0x0D, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x2F, 0x11, 0x00, 0x00, 0x32, 0x0E, 0x00, 0x00, 
43382
  0x33, 0x0F, 0x00, 0x00, 0x19, 0x12, 0x0F, 0x00, 0x1C, 0x0F, 0x05, 0x00, 0x30, 0x05, 0x12, 0x00, 
43383
  0x2A, 0x14, 0x00, 0x00, 0x33, 0x13, 0x14, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x47, 0x10, 0x01, 0x10, 
43384
  0x1A, 0xDC, 0xFF, 0xFF, 0x03, 0x05, 0x00, 0x00, 0x83, 0xF6, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 
43385
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43386
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43387
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43388
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43389
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43390
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43391
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43392
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43393
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43394
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43395
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43396
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43397
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43398
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43399
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43400
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43401
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43402
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43403
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43404
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43405
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43406
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43407
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43408
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43409
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43410
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43411
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43412
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43413
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43414
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43415
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xF9, 0x01, 
43416
  0xCF, 0x07, 0x67, 0x65, 0x74, 0x6C, 0x69, 0x6E, 0x65, 0xDA, 0x82, 0x46, 0xCF, 0x0F, 0x74, 0x75, 
43417
  0x70, 0x6C, 0x65, 0x2F, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x6D, 0x61, 0x70, 0xDA, 0x82, 0x73, 
43418
  0xCF, 0x12, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x73, 0x74, 
43419
  0x72, 0x69, 0x6E, 0x67, 0xDA, 0x84, 0x5A, 0xCF, 0x12, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 
43420
  0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x2D, 0x70, 0x61, 0x74, 0x68, 0xDA, 0x87, 0x65, 0xCF, 0x06, 
43421
  0x6F, 0x73, 0x2F, 0x63, 0x77, 0x64, 0xD8, 0x06, 0x6F, 0x73, 0x2F, 0x63, 0x77, 0x64, 0xDA, 0x80, 
43422
  0xAD, 0xDA, 0x80, 0xB0, 0xDA, 0x8B, 0x76, 0xDA, 0x8B, 0x7D, 0xCF, 0x08, 0x6F, 0x73, 0x2F, 0x74, 
43423
  0x6F, 0x75, 0x63, 0x68, 0xD8, 0x08, 0x6F, 0x73, 0x2F, 0x74, 0x6F, 0x75, 0x63, 0x68, 0xCF, 0x07, 
43424
  0x66, 0x6F, 0x72, 0x65, 0x76, 0x65, 0x72, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x05, 0x00, 
43425
  0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x06, 0x00, 0x02, 0xCE, 0x07, 0x66, 0x6F, 0x72, 0x65, 
43426
  0x76, 0x65, 0x72, 0xDA, 0x18, 0xDA, 0x84, 0xF1, 0x00, 0x06, 0x00, 0xDA, 0x82, 0xB5, 0x00, 0x06, 
43427
  0x01, 0xDA, 0x8D, 0x7B, 0x2A, 0x03, 0x00, 0x00, 0x27, 0x04, 0x00, 0x00, 0x30, 0x03, 0x04, 0x00, 
43428
  0x32, 0x00, 0x00, 0x00, 0x43, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x82, 0x12, 0x03, 0x00, 
43429
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x82, 0x22, 0xDA, 0x82, 0x20, 0xCF, 
43430
  0x02, 0x25, 0x3D, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x02, 0x02, 0x02, 0x02, 0x07, 
43431
  0x00, 0x03, 0xCE, 0x02, 0x25, 0x3D, 0xDA, 0x18, 0xDA, 0x8B, 0xDF, 0xDA, 0x3A, 0x00, 0x07, 0x00, 
43432
  0xDA, 0x1E, 0x00, 0x07, 0x01, 0xDA, 0x80, 0xD8, 0x00, 0x07, 0x02, 0xDA, 0x8D, 0x7E, 0x2A, 0x04, 
43433
  0x00, 0x00, 0x31, 0x04, 0x00, 0x01, 0x43, 0x03, 0x00, 0x00, 0x2A, 0x05, 0x01, 0x00, 0x31, 0x05, 
43434
  0x00, 0x03, 0x43, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x80, 0x9A, 0x35, 0x00, 0x35, 0x00, 
43435
  0x35, 0x00, 0x35, 0x00, 0x35, 0x00, 0x35, 0x00, 0x35, 0xCF, 0x0E, 0x6D, 0x61, 0x74, 0x68, 0x2F, 
43436
  0x6C, 0x6F, 0x67, 0x2D, 0x67, 0x61, 0x6D, 0x6D, 0x61, 0xD8, 0x0E, 0x6D, 0x61, 0x74, 0x68, 0x2F, 
43437
  0x6C, 0x6F, 0x67, 0x2D, 0x67, 0x61, 0x6D, 0x6D, 0x61, 0xCF, 0x04, 0x62, 0x6E, 0x6F, 0x74, 0xD7, 
43438
  0x00, 0xCD, 0x00, 0x08, 0x00, 0x13, 0x01, 0x01, 0x01, 0x01, 0x00, 0x02, 0xCE, 0x04, 0x62, 0x6E, 
43439
  0x6F, 0x74, 0x11, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xCF, 0x09, 0x61, 0x72, 0x72, 0x61, 
43440
  0x79, 0x2F, 0x6E, 0x65, 0x77, 0xDA, 0x86, 0x4F, 0xDA, 0x86, 0x6E, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 
43441
  0x00, 0x00, 0x04, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x04, 0x00, 0x03, 0xCE, 0x04, 
43442
  0x6C, 0x6F, 0x6F, 0x70, 0xDA, 0x18, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x15, 0x03, 0x03, 
43443
  0x03, 0x27, 0x80, 0xCC, 0x00, 0x0C, 0xCE, 0x05, 0x6C, 0x6F, 0x6F, 0x70, 0x31, 0xDA, 0x18, 0xDA, 
43444
  0x50, 0xDA, 0x87, 0x87, 0xD0, 0x05, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0xDA, 0x84, 0xEE, 0xDA, 0x4F, 
43445
  0xD0, 0x05, 0x77, 0x68, 0x69, 0x6C, 0x65, 0xD0, 0x03, 0x6C, 0x65, 0x74, 0xDA, 0x82, 0xB4, 0xD0, 
43446
  0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0xD0, 0x06, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0xD0, 0x06, 
43447
  0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0xDA, 0x49, 0xDA, 0x84, 0xEF, 0xDA, 0x8A, 0x97, 0xDA, 0x82, 
43448
  0x90, 0xDA, 0x84, 0xF1, 0xD0, 0x04, 0x77, 0x68, 0x65, 0x6E, 0xDA, 0x84, 0x07, 0xCE, 0x19, 0x75, 
43449
  0x6E, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x6D, 
43450
  0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0xDA, 0x80, 0xF5, 0xD0, 0x05, 0x72, 0x61, 0x6E, 
43451
  0x67, 0x65, 0xDA, 0x38, 0xDA, 0x83, 0xA5, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 0x05, 
43452
  0x05, 0x05, 0x02, 0x14, 0x00, 0x0A, 0xCE, 0x0E, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x2D, 0x74, 0x65, 
43453
  0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0xDA, 0x18, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 
43454
  0x01, 0x01, 0x01, 0x03, 0x0B, 0x00, 0x02, 0xCE, 0x0D, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x69, 
43455
  0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0xDA, 0x18, 0xDA, 0x82, 0x20, 0xCE, 0x1E, 0x65, 0x78, 0x70, 
43456
  0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 
43457
  0x72, 0x61, 0x6E, 0x67, 0x65, 0x2C, 0x20, 0x67, 0x6F, 0x74, 0x20, 0xDA, 0x80, 0xF5, 0x00, 0x0B, 
43458
  0x00, 0xDA, 0x1E, 0x00, 0x0B, 0x01, 0xCF, 0x0D, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x69, 0x6E, 
43459
  0x64, 0x65, 0x78, 0x65, 0x64, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 
43460
  0x00, 0x1C, 0x02, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2A, 0x03, 0x01, 0x00, 0x30, 0x03, 0x00, 
43461
  0x00, 0x2A, 0x04, 0x02, 0x00, 0x33, 0x03, 0x04, 0x00, 0x01, 0x03, 0x00, 0x00, 0x04, 0x00, 0x00, 
43462
  0x00, 0x81, 0xAB, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 0x02, 0x0C, 0x00, 0x0C, 
43463
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x00, 0x05, 0xDA, 0x89, 0xD5, 0x00, 0x14, 0x00, 0xDA, 0x84, 
43464
  0x4E, 0x00, 0x14, 0x01, 0xCF, 0x06, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x00, 0x14, 0x02, 0xCF, 
43465
  0x04, 0x72, 0x65, 0x73, 0x74, 0x00, 0x14, 0x03, 0xDA, 0x87, 0x9C, 0x00, 0x14, 0x04, 0xDA, 0x89, 
43466
  0xDB, 0x00, 0x14, 0x05, 0xCF, 0x0E, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x2D, 0x74, 0x65, 0x6D, 0x70, 
43467
  0x6C, 0x61, 0x74, 0x65, 0x04, 0x14, 0x08, 0xDA, 0x83, 0xBE, 0x06, 0x14, 0x09, 0xDA, 0x89, 0xD9, 
43468
  0x08, 0x14, 0x0A, 0xDA, 0x89, 0xDA, 0x08, 0x0D, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
43469
  0x30, 0x35, 0x2F, 0x01, 0x00, 0x00, 0x2A, 0x07, 0x00, 0x00, 0x33, 0x06, 0x07, 0x00, 0x3B, 0x07, 
43470
  0x06, 0x00, 0x19, 0x08, 0x07, 0x00, 0x3B, 0x07, 0x06, 0x01, 0x19, 0x09, 0x07, 0x00, 0x3B, 0x07, 
43471
  0x06, 0x02, 0x19, 0x0A, 0x07, 0x00, 0x1C, 0x0A, 0x03, 0x00, 0x19, 0x06, 0x0A, 0x00, 0x1A, 0x02, 
43472
  0x00, 0x00, 0x29, 0x06, 0x01, 0x00, 0x2F, 0x02, 0x00, 0x00, 0x43, 0x07, 0x00, 0x00, 0x31, 0x00, 
43473
  0x08, 0x09, 0x31, 0x06, 0x04, 0x03, 0x2F, 0x07, 0x00, 0x00, 0x2A, 0x0B, 0x01, 0x00, 0x34, 0x0B, 
43474
  0x00, 0x00, 0x81, 0xB1, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43475
  0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x40, 0x00, 
43476
  0x40, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xD0, 0x08, 0x72, 0x61, 0x6E, 
43477
  0x67, 0x65, 0x2D, 0x74, 0x6F, 0xDA, 0x87, 0x98, 0xD0, 0x04, 0x64, 0x6F, 0x77, 0x6E, 0xDA, 0x82, 
43478
  0x95, 0xDA, 0x85, 0x3A, 0xD0, 0x07, 0x64, 0x6F, 0x77, 0x6E, 0x2D, 0x74, 0x6F, 0xDA, 0x87, 0xCD, 
43479
  0xDA, 0x89, 0xE9, 0xDA, 0x89, 0xE5, 0xDA, 0x89, 0xEA, 0xD0, 0x02, 0x69, 0x6E, 0xDA, 0x89, 0xE4, 
43480
  0xD0, 0x07, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
43481
  0x0A, 0x03, 0x03, 0x03, 0x06, 0x15, 0x00, 0x05, 0xCE, 0x10, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 
43482
  0x65, 0x2D, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0xDA, 0x18, 0xDA, 0x49, 0xDA, 0x84, 
43483
  0xEF, 0xDA, 0x3A, 0xDA, 0x4A, 0xDA, 0x84, 0xF1, 0xDA, 0x50, 0x00, 0x15, 0x00, 0xDA, 0x84, 0x4E, 
43484
  0x00, 0x15, 0x01, 0xCF, 0x04, 0x65, 0x78, 0x70, 0x72, 0x00, 0x15, 0x02, 0xDA, 0x82, 0xB5, 0x00, 
43485
  0x15, 0x03, 0xCF, 0x10, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x2D, 0x74, 0x65, 0x6D, 0x70, 
43486
  0x6C, 0x61, 0x74, 0x65, 0x02, 0x15, 0x05, 0xDA, 0x80, 0x90, 0x2A, 0x05, 0x00, 0x00, 0x33, 0x04, 
43487
  0x05, 0x00, 0x19, 0x05, 0x04, 0x00, 0x2A, 0x06, 0x01, 0x00, 0x26, 0x07, 0x00, 0x00, 0x31, 0x06, 
43488
  0x05, 0x07, 0x43, 0x04, 0x00, 0x00, 0x2A, 0x07, 0x02, 0x00, 0x31, 0x07, 0x05, 0x01, 0x43, 0x06, 
43489
  0x00, 0x00, 0x2A, 0x08, 0x03, 0x00, 0x31, 0x08, 0x00, 0x05, 0x43, 0x07, 0x00, 0x00, 0x2A, 0x09, 
43490
  0x04, 0x00, 0x31, 0x09, 0x06, 0x07, 0x2F, 0x02, 0x00, 0x00, 0x43, 0x08, 0x00, 0x00, 0x2A, 0x07, 
43491
  0x05, 0x00, 0x31, 0x07, 0x04, 0x08, 0x43, 0x06, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0x81, 0xC6, 
43492
  0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
43493
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
43494
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCE, 0x15, 0x75, 0x6E, 0x65, 0x78, 0x70, 
43495
  0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x76, 0x65, 0x72, 0x62, 0x20, 
43496
  0x00, 0x80, 0xCC, 0x00, 0xDA, 0x82, 0xB5, 0x00, 0x80, 0xCC, 0x01, 0xDA, 0x86, 0x6F, 0x00, 0x80, 
43497
  0xCC, 0x02, 0xDA, 0x80, 0x90, 0x00, 0x80, 0xCC, 0x03, 0xCF, 0x05, 0x6C, 0x6F, 0x6F, 0x70, 0x31, 
43498
  0x0C, 0x80, 0xCC, 0x06, 0xCF, 0x04, 0x76, 0x65, 0x72, 0x62, 0x0E, 0x80, 0xCC, 0x07, 0xDA, 0x84, 
43499
  0x4E, 0x16, 0x76, 0x08, 0xDA, 0x8D, 0x9B, 0x16, 0x76, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
43500
  0x30, 0x30, 0x37, 0x56, 0x69, 0x10, 0xDA, 0x8A, 0x98, 0x79, 0x80, 0xCC, 0x09, 0xDA, 0x8D, 0x9A, 
43501
  0x7D, 0x80, 0xCC, 0x04, 0xDA, 0x8D, 0x9B, 0x7D, 0x80, 0xCC, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
43502
  0x30, 0x30, 0x30, 0x38, 0x2C, 0x03, 0x00, 0x00, 0x3D, 0x04, 0x01, 0x00, 0x46, 0x05, 0x04, 0x02, 
43503
  0x1C, 0x05, 0x07, 0x00, 0x2A, 0x06, 0x00, 0x00, 0x2F, 0x06, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 
43504
  0x43, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 0x05, 0x05, 0x02, 0x01, 
43505
  0x38, 0x04, 0x01, 0x05, 0x19, 0x06, 0x04, 0x00, 0x38, 0x04, 0x01, 0x02, 0x19, 0x07, 0x04, 0x00, 
43506
  0x2F, 0x07, 0x00, 0x00, 0x2A, 0x08, 0x01, 0x00, 0x33, 0x04, 0x08, 0x00, 0x1C, 0x04, 0x65, 0x00, 
43507
  0x05, 0x08, 0x02, 0x02, 0x31, 0x00, 0x01, 0x08, 0x33, 0x09, 0x03, 0x00, 0x19, 0x08, 0x09, 0x00, 
43508
  0x2A, 0x0A, 0x02, 0x00, 0x23, 0x09, 0x07, 0x0A, 0x1C, 0x09, 0x0D, 0x00, 0x2A, 0x0B, 0x03, 0x00, 
43509
  0x2F, 0x0B, 0x00, 0x00, 0x43, 0x0A, 0x00, 0x00, 0x2A, 0x0C, 0x04, 0x00, 0x31, 0x0C, 0x06, 0x0A, 
43510
  0x26, 0x0C, 0x00, 0x00, 0x2F, 0x0C, 0x00, 0x00, 0x43, 0x0B, 0x00, 0x00, 0x2A, 0x0C, 0x00, 0x00, 
43511
  0x31, 0x0C, 0x0B, 0x08, 0x43, 0x0A, 0x00, 0x00, 0x03, 0x0A, 0x00, 0x00, 0x2A, 0x0B, 0x05, 0x00, 
43512
  0x23, 0x0A, 0x07, 0x0B, 0x1C, 0x0A, 0x0D, 0x00, 0x2A, 0x0C, 0x03, 0x00, 0x2F, 0x0C, 0x00, 0x00, 
43513
  0x43, 0x0B, 0x00, 0x00, 0x2A, 0x0D, 0x04, 0x00, 0x26, 0x0E, 0x00, 0x00, 0x31, 0x0D, 0x06, 0x0E, 
43514
  0x2F, 0x0B, 0x00, 0x00, 0x43, 0x0C, 0x00, 0x00, 0x2A, 0x0D, 0x00, 0x00, 0x31, 0x0D, 0x0C, 0x08, 
43515
  0x43, 0x0B, 0x00, 0x00, 0x03, 0x0B, 0x00, 0x00, 0x2A, 0x0C, 0x06, 0x00, 0x23, 0x0B, 0x07, 0x0C, 
43516
  0x1C, 0x0B, 0x08, 0x00, 0x2A, 0x0D, 0x00, 0x00, 0x30, 0x0D, 0x08, 0x00, 0x43, 0x0C, 0x00, 0x00, 
43517
  0x2A, 0x0E, 0x07, 0x00, 0x31, 0x0E, 0x06, 0x0C, 0x43, 0x0D, 0x00, 0x00, 0x03, 0x0D, 0x00, 0x00, 
43518
  0x2A, 0x0D, 0x08, 0x00, 0x23, 0x0C, 0x07, 0x0D, 0x1C, 0x0C, 0x07, 0x00, 0x2A, 0x0E, 0x00, 0x00, 
43519
  0x31, 0x0E, 0x08, 0x06, 0x26, 0x0E, 0x00, 0x00, 0x2F, 0x0E, 0x00, 0x00, 0x43, 0x0D, 0x00, 0x00, 
43520
  0x03, 0x0D, 0x00, 0x00, 0x2A, 0x0E, 0x09, 0x00, 0x23, 0x0D, 0x07, 0x0E, 0x1C, 0x0D, 0x07, 0x00, 
43521
  0x2A, 0x0F, 0x00, 0x00, 0x31, 0x0F, 0x06, 0x08, 0x26, 0x0F, 0x00, 0x00, 0x2F, 0x0F, 0x00, 0x00, 
43522
  0x43, 0x0E, 0x00, 0x00, 0x03, 0x0E, 0x00, 0x00, 0x2A, 0x0F, 0x0A, 0x00, 0x23, 0x0E, 0x07, 0x0F, 
43523
  0x1C, 0x0E, 0x16, 0x00, 0x2A, 0x10, 0x0B, 0x00, 0x33, 0x0F, 0x10, 0x00, 0x19, 0x10, 0x0F, 0x00, 
43524
  0x2A, 0x11, 0x0C, 0x00, 0x31, 0x11, 0x10, 0x06, 0x43, 0x0F, 0x00, 0x00, 0x2A, 0x12, 0x0D, 0x00, 
43525
  0x29, 0x13, 0x00, 0x00, 0x31, 0x12, 0x10, 0x13, 0x43, 0x11, 0x00, 0x00, 0x2A, 0x13, 0x0E, 0x00, 
43526
  0x30, 0x13, 0x10, 0x00, 0x43, 0x12, 0x00, 0x00, 0x2A, 0x14, 0x0F, 0x00, 0x31, 0x14, 0x11, 0x08, 
43527
  0x2F, 0x12, 0x00, 0x00, 0x43, 0x13, 0x00, 0x00, 0x2A, 0x12, 0x00, 0x00, 0x31, 0x12, 0x0F, 0x13, 
43528
  0x43, 0x11, 0x00, 0x00, 0x03, 0x11, 0x00, 0x00, 0x2A, 0x10, 0x10, 0x00, 0x23, 0x0F, 0x07, 0x10, 
43529
  0x1C, 0x0F, 0x05, 0x00, 0x2A, 0x11, 0x11, 0x00, 0x31, 0x11, 0x06, 0x08, 0x43, 0x10, 0x00, 0x00, 
43530
  0x03, 0x10, 0x00, 0x00, 0x2A, 0x10, 0x12, 0x00, 0x30, 0x10, 0x07, 0x00, 0x2A, 0x11, 0x13, 0x00, 
43531
  0x33, 0x10, 0x11, 0x00, 0x01, 0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1A, 0x01, 0x00, 0x00, 
43532
  0x05, 0x08, 0x02, 0x02, 0x38, 0x04, 0x01, 0x08, 0x19, 0x09, 0x04, 0x00, 0x05, 0x04, 0x02, 0x03, 
43533
  0x31, 0x00, 0x01, 0x04, 0x33, 0x0A, 0x03, 0x00, 0x19, 0x04, 0x0A, 0x00, 0x2A, 0x0B, 0x14, 0x00, 
43534
  0x23, 0x0A, 0x06, 0x0B, 0x1C, 0x0A, 0x07, 0x00, 0x31, 0x07, 0x09, 0x04, 0x2A, 0x0B, 0x15, 0x00, 
43535
  0x2A, 0x0C, 0x16, 0x00, 0x30, 0x0B, 0x0C, 0x00, 0x2A, 0x0B, 0x17, 0x00, 0x34, 0x0B, 0x00, 0x00, 
43536
  0x2A, 0x0C, 0x18, 0x00, 0x23, 0x0B, 0x06, 0x0C, 0x1C, 0x0B, 0x07, 0x00, 0x31, 0x07, 0x09, 0x04, 
43537
  0x2A, 0x0C, 0x15, 0x00, 0x2A, 0x0D, 0x19, 0x00, 0x30, 0x0C, 0x0D, 0x00, 0x2A, 0x0C, 0x17, 0x00, 
43538
  0x34, 0x0C, 0x00, 0x00, 0x2A, 0x0D, 0x1A, 0x00, 0x23, 0x0C, 0x06, 0x0D, 0x1C, 0x0C, 0x07, 0x00, 
43539
  0x31, 0x07, 0x09, 0x04, 0x2A, 0x0D, 0x1B, 0x00, 0x2A, 0x0E, 0x1C, 0x00, 0x30, 0x0D, 0x0E, 0x00, 
43540
  0x2A, 0x0D, 0x17, 0x00, 0x34, 0x0D, 0x00, 0x00, 0x2A, 0x0E, 0x1D, 0x00, 0x23, 0x0D, 0x06, 0x0E, 
43541
  0x1C, 0x0D, 0x07, 0x00, 0x31, 0x07, 0x09, 0x04, 0x2A, 0x0E, 0x1B, 0x00, 0x2A, 0x0F, 0x1E, 0x00, 
43542
  0x30, 0x0E, 0x0F, 0x00, 0x2A, 0x0E, 0x17, 0x00, 0x34, 0x0E, 0x00, 0x00, 0x2A, 0x0F, 0x1F, 0x00, 
43543
  0x23, 0x0E, 0x06, 0x0F, 0x1C, 0x0E, 0x08, 0x00, 0x2F, 0x04, 0x00, 0x00, 0x43, 0x0F, 0x00, 0x00, 
43544
  0x2A, 0x10, 0x1F, 0x00, 0x31, 0x07, 0x09, 0x10, 0x2F, 0x0F, 0x00, 0x00, 0x2A, 0x10, 0x20, 0x00, 
43545
  0x34, 0x10, 0x00, 0x00, 0x2A, 0x10, 0x21, 0x00, 0x23, 0x0F, 0x06, 0x10, 0x1C, 0x0F, 0x08, 0x00, 
43546
  0x2F, 0x04, 0x00, 0x00, 0x43, 0x10, 0x00, 0x00, 0x2A, 0x11, 0x21, 0x00, 0x31, 0x07, 0x09, 0x11, 
43547
  0x2F, 0x10, 0x00, 0x00, 0x2A, 0x11, 0x20, 0x00, 0x34, 0x11, 0x00, 0x00, 0x2A, 0x11, 0x22, 0x00, 
43548
  0x23, 0x10, 0x06, 0x11, 0x1C, 0x10, 0x08, 0x00, 0x2F, 0x04, 0x00, 0x00, 0x43, 0x11, 0x00, 0x00, 
43549
  0x2A, 0x12, 0x23, 0x00, 0x31, 0x07, 0x09, 0x12, 0x2F, 0x11, 0x00, 0x00, 0x2A, 0x12, 0x20, 0x00, 
43550
  0x34, 0x12, 0x00, 0x00, 0x2A, 0x12, 0x24, 0x00, 0x23, 0x11, 0x06, 0x12, 0x1C, 0x11, 0x04, 0x00, 
43551
  0x31, 0x07, 0x09, 0x04, 0x2A, 0x12, 0x25, 0x00, 0x34, 0x12, 0x00, 0x00, 0x2A, 0x12, 0x26, 0x00, 
43552
  0x30, 0x12, 0x06, 0x00, 0x2A, 0x13, 0x13, 0x00, 0x33, 0x12, 0x13, 0x00, 0x01, 0x12, 0x00, 0x00, 
43553
  0x04, 0x00, 0x00, 0x00, 0x81, 0xCD, 0x01, 0x04, 0x0D, 0x00, 0x09, 0x00, 0x03, 0x01, 0x0C, 0x00, 
43554
  0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFF, 0x03, 0x04, 0x09, 0xBF, 0xFF, 0x03, 0x00, 
43555
  0x03, 0x00, 0x03, 0x00, 0x03, 0x04, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x03, 0x02, 0x23, 0x00, 
43556
  0x12, 0x00, 0x12, 0x00, 0x07, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x12, 0x00, 0x12, 0x00, 
43557
  0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 
43558
  0x12, 0x00, 0x12, 0xBF, 0xFF, 0x09, 0x00, 0x09, 0x00, 0x09, 0x02, 0x12, 0x00, 0x12, 0x00, 0x12, 
43559
  0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 
43560
  0x00, 0x12, 0xBF, 0xFE, 0x09, 0x00, 0x09, 0x00, 0x09, 0x03, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 
43561
  0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0xBF, 0xFD, 0x09, 0x00, 0x09, 0x00, 0x09, 0x04, 0x12, 
43562
  0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFC, 0x09, 0x00, 0x09, 0x00, 
43563
  0x09, 0x05, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0xBF, 0xFB, 0x09, 
43564
  0x00, 0x09, 0x00, 0x09, 0x06, 0x13, 0x00, 0x13, 0x00, 0x13, 0x01, 0x15, 0x00, 0x15, 0x00, 0x15, 
43565
  0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 
43566
  0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0xBF, 0xF9, 
43567
  0x09, 0x00, 0x09, 0x00, 0x09, 0x08, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x01, 0x12, 0x00, 
43568
  0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xF4, 0x03, 0x0F, 0x09, 0x00, 0x03, 
43569
  0x00, 0x03, 0x01, 0x1F, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 
43570
  0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0xBF, 0xFF, 0x05, 0x00, 
43571
  0x05, 0x00, 0x05, 0x02, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0xBF, 
43572
  0xFE, 0x05, 0x00, 0x05, 0x00, 0x05, 0x03, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 
43573
  0x00, 0x0D, 0xBF, 0xFD, 0x05, 0x00, 0x05, 0x00, 0x05, 0x04, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 
43574
  0x10, 0x00, 0x10, 0x00, 0x10, 0xBF, 0xFC, 0x05, 0x00, 0x05, 0x00, 0x05, 0x05, 0x31, 0x00, 0x31, 
43575
  0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xFB, 0x05, 0x00, 0x05, 0x00, 
43576
  0x05, 0x06, 0x33, 0x00, 0x33, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0xBF, 
43577
  0xFA, 0x05, 0x00, 0x05, 0x00, 0x05, 0x07, 0x2F, 0x00, 0x2F, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
43578
  0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xF9, 0x05, 0x00, 0x05, 0x00, 0x05, 0x08, 0x10, 0x00, 0x10, 0x00, 
43579
  0x10, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x00, 0x04, 0x00, 
43580
  0xDA, 0x86, 0x6F, 0x00, 0x04, 0x01, 0xDA, 0x82, 0xB5, 0x00, 0x04, 0x02, 0xDA, 0x86, 0x6E, 0x29, 
43581
  0x03, 0x00, 0x00, 0x31, 0x01, 0x00, 0x03, 0x2A, 0x03, 0x00, 0x00, 0x34, 0x03, 0x00, 0x00, 0x82, 
43582
  0x5D, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x04, 0x6D, 0x65, 0x61, 0x6E, 0xD7, 0x00, 
43583
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x01, 0x06, 0x00, 0x02, 0xCE, 0x04, 0x6D, 
43584
  0x65, 0x61, 0x6E, 0xDA, 0x18, 0xDA, 0x89, 0xF5, 0x00, 0x06, 0x00, 0xDA, 0x82, 0x52, 0x00, 0x06, 
43585
  0x01, 0xDA, 0x8D, 0xAC, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 
43586
  0x3D, 0x03, 0x00, 0x00, 0x0B, 0x04, 0x02, 0x03, 0x03, 0x04, 0x00, 0x00, 0x82, 0x8E, 0x06, 0x00, 
43587
  0x06, 0x00, 0x06, 0x00, 0x0F, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 
43588
  0x61, 0x63, 0x6F, 0x73, 0x68, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x63, 0x6F, 0x73, 
43589
  0x68, 0xCF, 0x0B, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x63, 0x6C, 0x6F, 0x6E, 0x65, 0xDA, 0x8B, 
43590
  0x48, 0xCF, 0x0F, 0x2A, 0x64, 0x65, 0x66, 0x64, 0x79, 0x6E, 0x2D, 0x70, 0x72, 0x65, 0x66, 0x69, 
43591
  0x78, 0x2A, 0xDA, 0x8C, 0x7D, 0xCF, 0x07, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x3F, 0xD7, 0x00, 
43592
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x07, 0x62, 
43593
  0x75, 0x66, 0x66, 0x65, 0x72, 0x3F, 0xDA, 0x18, 0xDA, 0x2C, 0xDA, 0x30, 0x00, 0x06, 0x00, 0xDA, 
43594
  0x1E, 0x00, 0x06, 0x01, 0xDA, 0x8D, 0xB3, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 
43595
  0x02, 0x03, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x23, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x69, 
43596
  0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0xCF, 0x08, 0x72, 0x6F, 0x6F, 
43597
  0x74, 0x2D, 0x65, 0x6E, 0x76, 0xDA, 0x00, 0xDA, 0x8B, 0x75, 0xD7, 0x00, 0xCD, 0x00, 0xFD, 0x00, 
43598
  0x00, 0x09, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x05, 0x12, 0x00, 0x01, 0x05, 0xCE, 0x06, 
43599
  0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0xDA, 0x18, 0xDA, 0x86, 0x4C, 0xDA, 0x8C, 0x9A, 0xDA, 0x80, 
43600
  0xF5, 0xDA, 0x8A, 0x21, 0xDA, 0x80, 0x8F, 0x00, 0x12, 0x00, 0xDA, 0x80, 0xF9, 0x00, 0x12, 0x01, 
43601
  0xDA, 0x80, 0xAB, 0x00, 0x12, 0x02, 0xDA, 0x8B, 0x75, 0x04, 0x12, 0x04, 0xDA, 0x8A, 0x45, 0x09, 
43602
  0x12, 0x05, 0xCF, 0x04, 0x61, 0x72, 0x67, 0x6D, 0x29, 0x03, 0x02, 0x00, 0x30, 0x03, 0x01, 0x00, 
43603
  0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 0x19, 0x04, 0x03, 0x00, 0x2E, 0x05, 0x00, 0x00, 
43604
  0x30, 0x05, 0x04, 0x00, 0x2A, 0x07, 0x01, 0x00, 0x33, 0x06, 0x07, 0x00, 0x19, 0x05, 0x06, 0x00, 
43605
  0x2F, 0x00, 0x00, 0x00, 0x2A, 0x08, 0x02, 0x00, 0x33, 0x07, 0x08, 0x00, 0x2A, 0x08, 0x03, 0x00, 
43606
  0x30, 0x08, 0x07, 0x00, 0x32, 0x05, 0x00, 0x00, 0x2A, 0x08, 0x04, 0x00, 0x34, 0x08, 0x00, 0x00, 
43607
  0xCD, 0x00, 0xD4, 0x00, 0x00, 0x06, 0x01, 0x01, 0x01, 0x02, 0x10, 0x00, 0x02, 0xDA, 0x18, 0xDA, 
43608
  0x8A, 0x27, 0xDA, 0x80, 0xF5, 0x01, 0x10, 0x02, 0xDA, 0x22, 0x03, 0x10, 0x03, 0xDA, 0x52, 0x3B, 
43609
  0x01, 0x00, 0x00, 0x19, 0x02, 0x01, 0x00, 0x3B, 0x01, 0x00, 0x01, 0x19, 0x03, 0x01, 0x00, 0x2A, 
43610
  0x04, 0x00, 0x00, 0x23, 0x01, 0x02, 0x04, 0x1C, 0x01, 0x06, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x2A, 
43611
  0x05, 0x01, 0x00, 0x33, 0x04, 0x05, 0x00, 0x19, 0x00, 0x04, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 
43612
  0x00, 0x03, 0x00, 0x30, 0x02, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x8B, 
43613
  0xCF, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x28, 0x00, 0x28, 0x00, 0x24, 0x00, 0x32, 
43614
  0x00, 0x32, 0x00, 0x32, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 
43615
  0x8B, 0xCE, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x01, 0x15, 0x00, 0x0D, 0x00, 
43616
  0x0D, 0x00, 0x0D, 0x00, 0x03, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x03, 0x00, 0x03, 0x00, 
43617
  0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x08, 0x6F, 0x73, 0x2F, 0x63, 0x68, 0x6D, 0x6F, 0x64, 0xD8, 
43618
  0x08, 0x6F, 0x73, 0x2F, 0x63, 0x68, 0x6D, 0x6F, 0x64, 0xDA, 0x8C, 0xCC, 0xDA, 0x8C, 0xCA, 0xDA, 
43619
  0x81, 0x8F, 0xDA, 0x81, 0x8A, 0xCF, 0x03, 0x74, 0x72, 0x79, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
43620
  0x00, 0x0E, 0x02, 0x02, 0x02, 0x0D, 0x3A, 0x00, 0x07, 0xCE, 0x03, 0x74, 0x72, 0x79, 0xDA, 0x18, 
43621
  0xDA, 0x49, 0xDA, 0x82, 0xAE, 0xDA, 0x81, 0x5E, 0xDA, 0x82, 0xAF, 0xDA, 0x82, 0xB0, 0xDA, 0x80, 
43622
  0xBE, 0xDA, 0x85, 0xF2, 0xDA, 0x82, 0x10, 0xDA, 0x4A, 0xDA, 0x82, 0xE9, 0xDA, 0x50, 0xDA, 0x4F, 
43623
  0xDA, 0x82, 0xB4, 0x00, 0x3A, 0x00, 0xDA, 0x82, 0xB5, 0x00, 0x3A, 0x01, 0xCF, 0x05, 0x63, 0x61, 
43624
  0x74, 0x63, 0x68, 0x00, 0x3A, 0x02, 0xDA, 0x8D, 0xBC, 0x02, 0x3A, 0x05, 0xDA, 0x51, 0x04, 0x3A, 
43625
  0x06, 0xDA, 0x85, 0xF7, 0x07, 0x3A, 0x04, 0xDA, 0x80, 0xFB, 0x0A, 0x3A, 0x07, 0xDA, 0x63, 0x3B, 
43626
  0x03, 0x01, 0x00, 0x3B, 0x04, 0x03, 0x00, 0x19, 0x05, 0x04, 0x00, 0x3B, 0x04, 0x03, 0x01, 0x19, 
43627
  0x06, 0x04, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 0x19, 0x04, 0x03, 0x00, 0x2A, 
43628
  0x07, 0x00, 0x00, 0x33, 0x03, 0x07, 0x00, 0x19, 0x07, 0x03, 0x00, 0x44, 0x03, 0x00, 0x00, 0x2A, 
43629
  0x09, 0x01, 0x00, 0x31, 0x09, 0x03, 0x00, 0x43, 0x08, 0x00, 0x00, 0x2A, 0x09, 0x02, 0x00, 0x2A, 
43630
  0x0A, 0x03, 0x00, 0x31, 0x09, 0x08, 0x0A, 0x43, 0x03, 0x00, 0x00, 0x2A, 0x09, 0x04, 0x00, 0x30, 
43631
  0x09, 0x04, 0x00, 0x43, 0x08, 0x00, 0x00, 0x31, 0x04, 0x03, 0x07, 0x2F, 0x08, 0x00, 0x00, 0x44, 
43632
  0x09, 0x00, 0x00, 0x2A, 0x08, 0x05, 0x00, 0x30, 0x08, 0x04, 0x00, 0x43, 0x03, 0x00, 0x00, 0x2A, 
43633
  0x0A, 0x06, 0x00, 0x2A, 0x0B, 0x07, 0x00, 0x31, 0x0A, 0x03, 0x0B, 0x43, 0x08, 0x00, 0x00, 0x2A, 
43634
  0x0A, 0x08, 0x00, 0x31, 0x0A, 0x05, 0x07, 0x43, 0x03, 0x00, 0x00, 0x1C, 0x06, 0x06, 0x00, 0x2A, 
43635
  0x0C, 0x08, 0x00, 0x31, 0x0C, 0x06, 0x04, 0x43, 0x0B, 0x00, 0x00, 0x19, 0x0A, 0x0B, 0x00, 0x1A, 
43636
  0x02, 0x00, 0x00, 0x26, 0x0A, 0x00, 0x00, 0x29, 0x0B, 0x01, 0x00, 0x30, 0x01, 0x0B, 0x00, 0x2A, 
43637
  0x0C, 0x09, 0x00, 0x33, 0x0B, 0x0C, 0x00, 0x2A, 0x0D, 0x0A, 0x00, 0x31, 0x0D, 0x03, 0x0A, 0x32, 
43638
  0x0B, 0x00, 0x00, 0x43, 0x0C, 0x00, 0x00, 0x2A, 0x0A, 0x0B, 0x00, 0x31, 0x0A, 0x08, 0x0C, 0x2F, 
43639
  0x07, 0x00, 0x00, 0x43, 0x03, 0x00, 0x00, 0x2A, 0x0A, 0x0C, 0x00, 0x31, 0x0A, 0x09, 0x03, 0x43, 
43640
  0x08, 0x00, 0x00, 0x03, 0x08, 0x00, 0x00, 0x80, 0xFE, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
43641
  0x00, 0x03, 0x01, 0x0B, 0x00, 0x0B, 0xBF, 0xFF, 0x03, 0x02, 0x0B, 0x00, 0x0B, 0xBF, 0xFE, 0x03, 
43642
  0x03, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
43643
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
43644
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
43645
  0x03, 0x1D, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x37, 
43646
  0x00, 0x37, 0x00, 0x37, 0x00, 0x37, 0xBF, 0xFD, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
43647
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCF, 
43648
  0x08, 0x65, 0x76, 0x2F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0xDA, 0x8B, 0x1B, 0xCF, 0x04, 0x61, 0x73, 
43649
  0x2D, 0x3E, 0xD7, 0x00, 0xCD, 0x02, 0xFF, 0x00, 0x00, 0x07, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 0xFF, 
43650
  0xFF, 0x03, 0x07, 0x00, 0x02, 0x05, 0xCE, 0x04, 0x61, 0x73, 0x2D, 0x3E, 0xDA, 0x18, 0xDA, 0x49, 
43651
  0xDA, 0x88, 0xFE, 0xDA, 0x82, 0xB4, 0x00, 0x07, 0x00, 0xDA, 0x1E, 0x00, 0x07, 0x01, 0xDA, 0x89, 
43652
  0x01, 0x00, 0x07, 0x02, 0xDA, 0x82, 0xE2, 0x00, 0x07, 0x03, 0xDA, 0x8D, 0xC1, 0x00, 0x07, 0x04, 
43653
  0xDA, 0x89, 0x02, 0x19, 0x04, 0x00, 0x00, 0x26, 0x06, 0x00, 0x00, 0x47, 0x05, 0x02, 0x06, 0x19, 
43654
  0x06, 0x05, 0x00, 0x2E, 0x05, 0x01, 0x00, 0x33, 0x05, 0x05, 0x00, 0x03, 0x04, 0x00, 0x00, 0xCD, 
43655
  0x00, 0xD4, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x00, 0x06, 0x01, 0x06, 0xDA, 0x18, 0xBF, 0xFF, 
43656
  0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x89, 0x01, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 
43657
  0x82, 0xE2, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x8D, 0xC1, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x02, 
43658
  0x00, 0x06, 0x00, 0xDA, 0x83, 0x92, 0x2B, 0x02, 0x00, 0x01, 0x23, 0x01, 0x00, 0x02, 0x1C, 0x01, 
43659
  0x03, 0x00, 0x2B, 0x02, 0x00, 0x08, 0x03, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 
43660
  0x85, 0x5E, 0x2A, 0x00, 0x2A, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0xCD, 0x02, 0xFE, 
43661
  0x00, 0x00, 0x07, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x03, 0x1C, 0x01, 0x01, 0x05, 0xDA, 
43662
  0x89, 0x03, 0xDA, 0x18, 0xDA, 0x49, 0xDA, 0x88, 0xFE, 0xDA, 0x82, 0xB4, 0xBF, 0xFF, 0x00, 0x02, 
43663
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x34, 0xBF, 0xFF, 0x00, 0x06, 0xCF, 0x07, 0x5F, 
43664
  0x30, 0x30, 0x30, 0x30, 0x32, 0x33, 0x06, 0x1C, 0x01, 0xDA, 0x82, 0xD3, 0x09, 0x1C, 0x02, 0xDA, 
43665
  0x60, 0x0E, 0x1C, 0x00, 0xDA, 0x89, 0x06, 0x2B, 0x00, 0x00, 0x06, 0x1E, 0x00, 0x02, 0x00, 0x04, 
43666
  0x00, 0x00, 0x00, 0x2B, 0x01, 0x00, 0x02, 0x2B, 0x02, 0x00, 0x06, 0x38, 0x00, 0x01, 0x02, 0x19, 
43667
  0x01, 0x00, 0x00, 0x2A, 0x02, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 0x19, 0x02, 0x00, 0x00, 0x2E, 
43668
  0x00, 0x00, 0x00, 0x30, 0x00, 0x01, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x33, 0x03, 0x04, 0x00, 0x19, 
43669
  0x00, 0x03, 0x00, 0x2B, 0x04, 0x00, 0x04, 0x30, 0x02, 0x04, 0x00, 0x44, 0x03, 0x00, 0x00, 0x2A, 
43670
  0x05, 0x02, 0x00, 0x31, 0x05, 0x03, 0x00, 0x43, 0x04, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x04, 0x2B, 
43671
  0x05, 0x00, 0x02, 0x2B, 0x06, 0x00, 0x06, 0x47, 0x03, 0x05, 0x06, 0x2D, 0x03, 0x00, 0x06, 0x2C, 
43672
  0x05, 0x00, 0x00, 0x34, 0x05, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x03, 0x01, 
43673
  0x01, 0x01, 0x00, 0x06, 0x02, 0x08, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 
43674
  0x00, 0x01, 0xDA, 0x89, 0x01, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x82, 0xE2, 0xBF, 0xFF, 0x00, 0x03, 
43675
  0xDA, 0x8D, 0xC1, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x02, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x82, 
43676
  0xD3, 0xBF, 0xFF, 0x01, 0x02, 0xDA, 0x60, 0x00, 0x06, 0x00, 0xDA, 0x83, 0x92, 0x2B, 0x02, 0x00, 
43677
  0x01, 0x23, 0x01, 0x00, 0x02, 0x1C, 0x01, 0x03, 0x00, 0x2B, 0x02, 0x01, 0x02, 0x03, 0x02, 0x00, 
43678
  0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x85, 0x5E, 0x2A, 0x00, 0x2A, 0x00, 0x26, 0x00, 
43679
  0x26, 0x00, 0x26, 0x00, 0x26, 0x85, 0x5C, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
43680
  0x00, 0x03, 0x00, 0x03, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x01, 0x1E, 0x00, 0x14, 0x00, 0x14, 
43681
  0x00, 0x14, 0x00, 0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
43682
  0x00, 0x0F, 0xBF, 0xFD, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x04, 
43683
  0x00, 0x00, 0x00, 0x85, 0x5B, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
43684
  0xBF, 0xFA, 0x01, 0x56, 0x01, 0x00, 0x00, 0xDA, 0x85, 0x3C, 0xDA, 0x85, 0x38, 0xCF, 0x0A, 0x62, 
43685
  0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x62, 0x69, 0x74, 0xD8, 0x0A, 0x62, 0x75, 0x66, 0x66, 0x65, 
43686
  0x72, 0x2F, 0x62, 0x69, 0x74, 0xCF, 0x08, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2D, 0x66, 0x6E, 0xD7, 
43687
  0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x05, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x04, 0x0A, 
43688
  0x00, 0x03, 0xCE, 0x08, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2D, 0x66, 0x6E, 0xDA, 0x18, 0xDA, 0x82, 
43689
  0xAE, 0xDA, 0x83, 0x03, 0xDA, 0x80, 0x8F, 0xDA, 0x81, 0x5E, 0x00, 0x0A, 0x00, 0xCF, 0x05, 0x66, 
43690
  0x6C, 0x61, 0x67, 0x73, 0x00, 0x0A, 0x01, 0xDA, 0x82, 0xB5, 0x00, 0x0A, 0x02, 0xDA, 0x8D, 0xC8, 
43691
  0x2A, 0x03, 0x00, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x30, 0x03, 0x04, 0x00, 0x32, 0x01, 0x00, 0x00, 
43692
  0x2A, 0x04, 0x02, 0x00, 0x33, 0x03, 0x04, 0x00, 0x2A, 0x04, 0x03, 0x00, 0x31, 0x04, 0x03, 0x00, 
43693
  0x2A, 0x04, 0x02, 0x00, 0x34, 0x04, 0x00, 0x00, 0x82, 0x82, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 
43694
  0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x05, 0x74, 
43695
  0x72, 0x61, 0x63, 0x65, 0xD8, 0x05, 0x74, 0x72, 0x61, 0x63, 0x65, 0xCF, 0x0C, 0x64, 0x65, 0x62, 
43696
  0x75, 0x67, 0x67, 0x65, 0x72, 0x2D, 0x65, 0x6E, 0x76, 0xDA, 0x80, 0xD0, 0xCF, 0x0B, 0x73, 0x63, 
43697
  0x61, 0x6E, 0x2D, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0xDA, 0x86, 0xDC, 0xCF, 0x09, 0x66, 0x66, 
43698
  0x69, 0x2F, 0x6A, 0x69, 0x74, 0x66, 0x6E, 0xD8, 0x09, 0x66, 0x66, 0x69, 0x2F, 0x6A, 0x69, 0x74, 
43699
  0x66, 0x6E, 0xDA, 0x8A, 0x31, 0xDA, 0x8A, 0x21, 0xCF, 0x09, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x72, 
43700
  0x65, 0x61, 0x64, 0xDA, 0x80, 0xF7, 0xDA, 0x82, 0x0C, 0xDA, 0x82, 0x07, 0xCF, 0x0A, 0x61, 0x72, 
43701
  0x72, 0x61, 0x79, 0x2F, 0x70, 0x75, 0x73, 0x68, 0xDA, 0x81, 0x8C, 0xCF, 0x04, 0x63, 0x6F, 0x6D, 
43702
  0x70, 0xD7, 0x00, 0xCD, 0x02, 0xFF, 0x00, 0x00, 0x18, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
43703
  0x01, 0x3A, 0x00, 0x04, 0x03, 0xCE, 0x04, 0x63, 0x6F, 0x6D, 0x70, 0xDA, 0x18, 0xDA, 0x82, 0xE9, 
43704
  0x00, 0x3A, 0x00, 0xCF, 0x09, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x00, 0x3A, 
43705
  0x01, 0xDA, 0x8D, 0xD4, 0x02, 0x3A, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x64, 
43706
  0x2C, 0x01, 0x00, 0x00, 0x3D, 0x02, 0x00, 0x00, 0x19, 0x03, 0x02, 0x00, 0x24, 0x02, 0x03, 0x00, 
43707
  0x1C, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x24, 0x04, 0x03, 0x01, 0x1C, 0x04, 0x04, 0x00, 
43708
  0x29, 0x06, 0x00, 0x00, 0x38, 0x05, 0x00, 0x06, 0x03, 0x05, 0x00, 0x00, 0x24, 0x05, 0x03, 0x02, 
43709
  0x1C, 0x05, 0x07, 0x00, 0x3B, 0x06, 0x00, 0x00, 0x19, 0x07, 0x06, 0x00, 0x3B, 0x06, 0x00, 0x01, 
43710
  0x19, 0x08, 0x06, 0x00, 0x2E, 0x06, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0x24, 0x06, 0x03, 0x03, 
43711
  0x1C, 0x06, 0x09, 0x00, 0x3B, 0x09, 0x00, 0x00, 0x19, 0x0A, 0x09, 0x00, 0x3B, 0x09, 0x00, 0x01, 
43712
  0x19, 0x0B, 0x09, 0x00, 0x3B, 0x09, 0x00, 0x02, 0x19, 0x0C, 0x09, 0x00, 0x2E, 0x09, 0x01, 0x00, 
43713
  0x03, 0x09, 0x00, 0x00, 0x24, 0x09, 0x03, 0x04, 0x1C, 0x09, 0x0B, 0x00, 0x3B, 0x0D, 0x00, 0x00, 
43714
  0x19, 0x0E, 0x0D, 0x00, 0x3B, 0x0D, 0x00, 0x01, 0x19, 0x0F, 0x0D, 0x00, 0x3B, 0x0D, 0x00, 0x02, 
43715
  0x19, 0x10, 0x0D, 0x00, 0x3B, 0x0D, 0x00, 0x03, 0x19, 0x11, 0x0D, 0x00, 0x2E, 0x0D, 0x02, 0x00, 
43716
  0x03, 0x0D, 0x00, 0x00, 0x3B, 0x0D, 0x00, 0x00, 0x19, 0x12, 0x0D, 0x00, 0x3B, 0x0D, 0x00, 0x01, 
43717
  0x19, 0x13, 0x0D, 0x00, 0x3B, 0x0D, 0x00, 0x02, 0x19, 0x14, 0x0D, 0x00, 0x3B, 0x0D, 0x00, 0x03, 
43718
  0x19, 0x15, 0x0D, 0x00, 0x2E, 0x0D, 0x03, 0x00, 0x29, 0x16, 0x04, 0x00, 0x29, 0x17, 0xFF, 0xFF, 
43719
  0x31, 0x00, 0x16, 0x17, 0x2A, 0x17, 0x00, 0x00, 0x33, 0x16, 0x17, 0x00, 0x2F, 0x0D, 0x00, 0x00, 
43720
  0x32, 0x16, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0xCD, 0x00, 0xD5, 0x00, 0x00, 0x03, 0x00, 0x00, 
43721
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x06, 0x01, 0x03, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 
43722
  0x80, 0xFB, 0xBF, 0xFF, 0x00, 0x08, 0xCF, 0x01, 0x67, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x32, 0x00, 
43723
  0x00, 0x00, 0x2B, 0x02, 0x00, 0x08, 0x33, 0x01, 0x02, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x2B, 0x02, 
43724
  0x00, 0x07, 0x34, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x82, 0xC2, 0x2B, 0x00, 0x2B, 0x00, 0x2B, 0x00, 
43725
  0x28, 0x00, 0x28, 0x00, 0x28, 0xCD, 0x00, 0xD5, 0x00, 0x00, 0x04, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 
43726
  0xFF, 0xFF, 0x00, 0x09, 0x01, 0x04, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x80, 0xFB, 0xBF, 
43727
  0xFF, 0x00, 0x0B, 0xDA, 0x8D, 0xD9, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x82, 0xF5, 0x00, 0x09, 0x00, 
43728
  0xDA, 0x1E, 0x32, 0x00, 0x00, 0x00, 0x2B, 0x02, 0x00, 0x0C, 0x33, 0x01, 0x02, 0x00, 0x2F, 0x01, 
43729
  0x00, 0x00, 0x2B, 0x03, 0x00, 0x0B, 0x33, 0x02, 0x03, 0x00, 0x2F, 0x02, 0x00, 0x00, 0x2B, 0x01, 
43730
  0x00, 0x0A, 0x34, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0x82, 0xC3, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 
43731
  0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0xCD, 0x00, 0xD5, 0x00, 0x00, 
43732
  0x04, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x0C, 0x01, 0x05, 0xDA, 0x18, 0xBF, 0xFF, 
43733
  0x00, 0x0E, 0xDA, 0x80, 0xFB, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x8D, 0xD9, 0xBF, 0xFF, 0x00, 0x10, 
43734
  0xDA, 0x82, 0xF5, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x80, 0x90, 0x00, 0x0C, 0x00, 0xDA, 0x1E, 0x32, 
43735
  0x00, 0x00, 0x00, 0x2B, 0x02, 0x00, 0x11, 0x33, 0x01, 0x02, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x2B, 
43736
  0x03, 0x00, 0x10, 0x33, 0x02, 0x03, 0x00, 0x2F, 0x02, 0x00, 0x00, 0x2B, 0x03, 0x00, 0x0F, 0x33, 
43737
  0x01, 0x03, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x2B, 0x02, 0x00, 0x0E, 0x34, 0x02, 0x00, 0x00, 0xBF, 
43738
  0xFF, 0x82, 0xC4, 0x35, 0x00, 0x35, 0x00, 0x35, 0x00, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x2F, 
43739
  0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x2C, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x04, 
43740
  0x01, 0x01, 0x01, 0x00, 0x0C, 0x01, 0x05, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x80, 0xFB, 
43741
  0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x8D, 0xD9, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x82, 0xF5, 0xBF, 0xFF, 
43742
  0x00, 0x15, 0xDA, 0x80, 0x90, 0x00, 0x0C, 0x00, 0xDA, 0x1E, 0x2F, 0x00, 0x00, 0x00, 0x2B, 0x02, 
43743
  0x00, 0x15, 0x33, 0x01, 0x02, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x2B, 0x03, 0x00, 0x14, 0x33, 0x02, 
43744
  0x03, 0x00, 0x2F, 0x02, 0x00, 0x00, 0x2B, 0x03, 0x00, 0x13, 0x33, 0x01, 0x03, 0x00, 0x2F, 0x01, 
43745
  0x00, 0x00, 0x2B, 0x02, 0x00, 0x12, 0x34, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x82, 0xC6, 0x1E, 0x00, 
43746
  0x1E, 0x00, 0x1E, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 
43747
  0x15, 0x00, 0x15, 0x00, 0x15, 0x82, 0xBB, 0x01, 0x04, 0x09, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
43748
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFE, 0x03, 0x00, 
43749
  0x03, 0x03, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x1E, 0x00, 0x1E, 0xBF, 0xFD, 0x03, 
43750
  0x00, 0x03, 0x04, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x20, 
43751
  0x00, 0x20, 0xBF, 0xFC, 0x03, 0x00, 0x03, 0x05, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
43752
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x22, 0x00, 0x22, 0x01, 0x05, 0x00, 0x05, 0x00, 
43753
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0D, 0x01, 0x0E, 0x00, 
43754
  0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x00, 0x07, 0x80, 0xDD, 
43755
  0x3F, 0x00, 0xDA, 0x8B, 0x6D, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 
43756
  0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x06, 0x00, 0x03, 0xCE, 0x04, 0x76, 0x61, 0x72, 0x2D, 0xDA, 0x18, 
43757
  0xDA, 0x84, 0xEF, 0xDA, 0x5A, 0x00, 0x06, 0x00, 0xDA, 0x83, 0x0F, 0x00, 0x06, 0x01, 0xDA, 0x83, 
43758
  0x10, 0x00, 0x06, 0x02, 0xDA, 0x8B, 0x6D, 0x2A, 0x04, 0x00, 0x00, 0x2A, 0x05, 0x01, 0x00, 0x31, 
43759
  0x04, 0x00, 0x05, 0x32, 0x01, 0x00, 0x00, 0x43, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x4D, 
43760
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x81, 0xED, 0xDA, 0x81, 
43761
  0xEB, 0xCF, 0x06, 0x69, 0x6E, 0x76, 0x65, 0x72, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
43762
  0x07, 0x01, 0x01, 0x01, 0x00, 0x0C, 0x00, 0x06, 0xCE, 0x06, 0x69, 0x6E, 0x76, 0x65, 0x72, 0x74, 
43763
  0xDA, 0x18, 0x00, 0x0C, 0x00, 0xDA, 0x24, 0x00, 0x0C, 0x01, 0xDA, 0x8D, 0xDC, 0x01, 0x0C, 0x03, 
43764
  0xDA, 0x23, 0x01, 0x0B, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x73, 0x04, 0x0B, 
43765
  0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x72, 0x06, 0x0B, 0x04, 0xDA, 0x22, 0x42, 
43766
  0x02, 0x00, 0x00, 0x19, 0x03, 0x02, 0x00, 0x26, 0x05, 0x00, 0x00, 0x47, 0x04, 0x00, 0x05, 0x19, 
43767
  0x05, 0x04, 0x00, 0x1D, 0x05, 0x06, 0x00, 0x19, 0x04, 0x05, 0x00, 0x38, 0x06, 0x00, 0x04, 0x3A, 
43768
  0x03, 0x06, 0x04, 0x47, 0x05, 0x00, 0x05, 0x1A, 0xFB, 0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 0x85, 
43769
  0xC4, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0E, 
43770
  0x00, 0x05, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0xBF, 0xF9, 0x01, 0xDA, 0x82, 0xB7, 0xDA, 0x82, 0xBA, 
43771
  0xCF, 0x04, 0x63, 0x6F, 0x6E, 0x64, 0xD7, 0x00, 0xCD, 0x02, 0xFF, 0x00, 0x00, 0x05, 0x00, 0x00, 
43772
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x05, 0x00, 0x01, 0x03, 0xCE, 0x04, 0x63, 0x6F, 0x6E, 0x64, 
43773
  0xDA, 0x18, 0x00, 0x05, 0x00, 0xDA, 0x88, 0x41, 0x00, 0x05, 0x01, 0xDA, 0x8D, 0xE1, 0x01, 0x05, 
43774
  0x03, 0xDA, 0x80, 0x85, 0x2E, 0x02, 0x00, 0x00, 0x19, 0x03, 0x02, 0x00, 0x29, 0x04, 0x00, 0x00, 
43775
  0x2F, 0x04, 0x00, 0x00, 0x34, 0x03, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x01, 0x01, 
43776
  0x01, 0x02, 0x1A, 0x01, 0x05, 0xDA, 0x80, 0x86, 0xDA, 0x18, 0xDA, 0x4F, 0xDA, 0x80, 0x8F, 0xBF, 
43777
  0xFF, 0x00, 0x00, 0xDA, 0x88, 0x41, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8D, 0xE1, 0x00, 0x1A, 0x00, 
43778
  0xDA, 0x80, 0x90, 0x00, 0x1A, 0x01, 0xDA, 0x80, 0x85, 0x04, 0x1A, 0x02, 0xDA, 0x8A, 0xFA, 0x2C, 
43779
  0x01, 0x00, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x3D, 0x02, 0x03, 0x00, 0x07, 0x03, 0x02, 0x00, 0x19, 
43780
  0x02, 0x03, 0x00, 0x24, 0x04, 0x02, 0x00, 0x1C, 0x04, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x24, 
43781
  0x05, 0x02, 0x01, 0x1C, 0x05, 0x04, 0x00, 0x2B, 0x07, 0x00, 0x00, 0x38, 0x06, 0x07, 0x00, 0x03, 
43782
  0x06, 0x00, 0x00, 0x2B, 0x07, 0x00, 0x00, 0x38, 0x06, 0x07, 0x00, 0x05, 0x07, 0x00, 0x01, 0x2B, 
43783
  0x09, 0x00, 0x00, 0x38, 0x08, 0x09, 0x07, 0x05, 0x07, 0x00, 0x02, 0x2F, 0x07, 0x00, 0x00, 0x33, 
43784
  0x09, 0x01, 0x00, 0x2A, 0x07, 0x00, 0x00, 0x31, 0x07, 0x06, 0x08, 0x2F, 0x09, 0x00, 0x00, 0x2A, 
43785
  0x07, 0x01, 0x00, 0x34, 0x07, 0x00, 0x00, 0xBF, 0xFF, 0x80, 0xCA, 0x03, 0x01, 0x15, 0x00, 0x15, 
43786
  0x00, 0x12, 0x00, 0x05, 0x01, 0x09, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0B, 0x00, 0x07, 0x00, 0x19, 
43787
  0x00, 0x19, 0x00, 0x19, 0x01, 0x14, 0x00, 0x14, 0x01, 0x1A, 0x00, 0x10, 0x00, 0x10, 0x01, 0x15, 
43788
  0x00, 0x10, 0x00, 0x10, 0xBF, 0xFE, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x80, 
43789
  0xCA, 0x03, 0x00, 0x03, 0x07, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0xCF, 0x0C, 
43790
  0x6F, 0x73, 0x2F, 0x70, 0x72, 0x6F, 0x63, 0x2D, 0x77, 0x61, 0x69, 0x74, 0xD8, 0x0C, 0x6F, 0x73, 
43791
  0x2F, 0x70, 0x72, 0x6F, 0x63, 0x2D, 0x77, 0x61, 0x69, 0x74, 0xCF, 0x07, 0x70, 0x61, 0x72, 0x74, 
43792
  0x69, 0x61, 0x6C, 0xD7, 0x00, 0xCD, 0x02, 0xFF, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 
43793
  0xFF, 0xFF, 0x01, 0x08, 0x00, 0x01, 0x03, 0xCE, 0x07, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6C, 
43794
  0xDA, 0x18, 0xDA, 0x89, 0xA5, 0x00, 0x08, 0x00, 0xDA, 0x80, 0xFB, 0x00, 0x08, 0x01, 0xDA, 0x83, 
43795
  0x10, 0x00, 0x08, 0x02, 0xDA, 0x8D, 0xE6, 0x3D, 0x03, 0x01, 0x00, 0x2F, 0x03, 0x00, 0x00, 0x2A, 
43796
  0x05, 0x00, 0x00, 0x33, 0x04, 0x05, 0x00, 0x1C, 0x04, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2E, 
43797
  0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0xCD, 0x00, 0xD5, 0x00, 0x00, 0x02, 0x00, 0x00, 0xCD, 
43798
  0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x05, 0x01, 0x04, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 
43799
  0xFB, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x10, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8D, 0xE6, 0x00, 
43800
  0x05, 0x00, 0xDA, 0x63, 0x2B, 0x01, 0x00, 0x01, 0x32, 0x01, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 
43801
  0x2B, 0x01, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0x85, 0x90, 0x0F, 0x00, 0x0F, 0x00, 
43802
  0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x85, 0x8F, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 
43803
  0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x03, 0x00, 0x00, 0x00, 0xCF, 0x08, 0x6D, 0x61, 0x74, 0x68, 
43804
  0x2F, 0x61, 0x62, 0x73, 0xD8, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x62, 0x73, 0xCF, 0x07, 
43805
  0x73, 0x6F, 0x72, 0x74, 0x2D, 0x62, 0x79, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x05, 0x02, 
43806
  0x02, 0x02, 0x01, 0x04, 0x00, 0x01, 0x03, 0xCE, 0x07, 0x73, 0x6F, 0x72, 0x74, 0x2D, 0x62, 0x79, 
43807
  0xDA, 0x18, 0xDA, 0x88, 0x2D, 0x00, 0x04, 0x00, 0xDA, 0x80, 0xFB, 0x00, 0x04, 0x01, 0xDA, 0x1F, 
43808
  0x00, 0x04, 0x02, 0xDA, 0x8D, 0xEB, 0x2E, 0x03, 0x00, 0x00, 0x30, 0x01, 0x03, 0x00, 0x2A, 0x04, 
43809
  0x00, 0x00, 0x34, 0x04, 0x00, 0x00, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x05, 0x02, 0x02, 0x02, 0x00, 
43810
  0x08, 0x01, 0x05, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 0xFB, 0xBF, 0xFF, 0x00, 0x01, 
43811
  0xDA, 0x1F, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8D, 0xEB, 0x00, 0x08, 0x00, 0xDA, 0x1E, 0x00, 0x08, 
43812
  0x01, 0xDA, 0x83, 0x92, 0x2F, 0x00, 0x00, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 
43813
  0x2F, 0x01, 0x00, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 0x21, 0x04, 0x02, 0x03, 
43814
  0x03, 0x04, 0x00, 0x00, 0xBF, 0xFF, 0x83, 0x59, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x20, 0x00, 
43815
  0x20, 0x00, 0x20, 0x00, 0x17, 0x00, 0x17, 0x83, 0x59, 0x0D, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
43816
  0x01, 0x00, 0x00, 0x00, 0xCF, 0x04, 0x62, 0x61, 0x6E, 0x64, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 
43817
  0x0D, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x13, 0xCE, 0x04, 0x62, 0x61, 0x6E, 
43818
  0x64, 0x3D, 0x01, 0x00, 0x00, 0x24, 0x02, 0x01, 0x00, 0x1C, 0x02, 0x03, 0x00, 0x29, 0x03, 0xFF, 
43819
  0xFF, 0x03, 0x03, 0x00, 0x00, 0x24, 0x02, 0x01, 0x01, 0x1C, 0x02, 0x05, 0x00, 0x29, 0x03, 0xFF, 
43820
  0xFF, 0x3B, 0x04, 0x00, 0x00, 0x0E, 0x03, 0x03, 0x04, 0x03, 0x03, 0x00, 0x00, 0x3B, 0x03, 0x00, 
43821
  0x00, 0x29, 0x05, 0x01, 0x00, 0x38, 0x04, 0x00, 0x05, 0x0E, 0x03, 0x03, 0x04, 0x05, 0x05, 0x05, 
43822
  0x01, 0x23, 0x02, 0x05, 0x01, 0x1C, 0x02, 0xFC, 0xFF, 0x03, 0x03, 0x00, 0x00, 0xCF, 0x09, 0x73, 
43823
  0x6F, 0x72, 0x74, 0x65, 0x64, 0x2D, 0x62, 0x79, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x05, 
43824
  0x02, 0x02, 0x02, 0x01, 0x04, 0x00, 0x01, 0x03, 0xCE, 0x09, 0x73, 0x6F, 0x72, 0x74, 0x65, 0x64, 
43825
  0x2D, 0x62, 0x79, 0xDA, 0x18, 0xDA, 0x89, 0x43, 0x00, 0x04, 0x00, 0xDA, 0x80, 0xFB, 0x00, 0x04, 
43826
  0x01, 0xDA, 0x1F, 0x00, 0x04, 0x02, 0xDA, 0x8D, 0xF1, 0x2E, 0x03, 0x00, 0x00, 0x30, 0x01, 0x03, 
43827
  0x00, 0x2A, 0x04, 0x00, 0x00, 0x34, 0x04, 0x00, 0x00, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x05, 0x02, 
43828
  0x02, 0x02, 0x00, 0x08, 0x01, 0x05, 0xDA, 0x18, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 0xFB, 0xBF, 
43829
  0xFF, 0x00, 0x01, 0xDA, 0x1F, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8D, 0xF1, 0x00, 0x08, 0x00, 0xDA, 
43830
  0x1E, 0x00, 0x08, 0x01, 0xDA, 0x83, 0x92, 0x2F, 0x00, 0x00, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x33, 
43831
  0x02, 0x03, 0x00, 0x2F, 0x01, 0x00, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x33, 0x03, 0x04, 0x00, 0x21, 
43832
  0x04, 0x02, 0x03, 0x03, 0x04, 0x00, 0x00, 0xBF, 0xFF, 0x83, 0x66, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 
43833
  0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x19, 0x00, 0x19, 0x83, 0x66, 0x0F, 0x00, 0x03, 0x00, 
43834
  0x03, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0xCF, 0x0B, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 
43835
  0x70, 0x6F, 0x70, 0x6E, 0xD8, 0x0B, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x6F, 0x70, 
43836
  0x6E, 0xCF, 0x02, 0x2A, 0x3D, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 
43837
  0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x08, 0x00, 0x03, 0xCE, 0x02, 0x2A, 0x3D, 0xDA, 0x18, 0xDA, 0x8B, 
43838
  0xE5, 0xDA, 0x3A, 0x00, 0x08, 0x00, 0xDA, 0x1E, 0x00, 0x08, 0x01, 0xDA, 0x3B, 0x00, 0x08, 0x02, 
43839
  0xDA, 0x8D, 0xF6, 0x2A, 0x04, 0x00, 0x00, 0x30, 0x04, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0x43, 
43840
  0x03, 0x00, 0x00, 0x2A, 0x05, 0x01, 0x00, 0x31, 0x05, 0x00, 0x03, 0x43, 0x04, 0x00, 0x00, 0x03, 
43841
  0x04, 0x00, 0x00, 0x80, 0x98, 0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x3A, 
43842
  0x00, 0x3A, 0x00, 0x3A, 0xCF, 0x07, 0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 0x32, 0xD7, 0x00, 0xCD, 
43843
  0x00, 0xDC, 0x00, 0x00, 0x09, 0x02, 0x02, 0x02, 0x00, 0x14, 0x00, 0x05, 0xCE, 0x07, 0x72, 0x65, 
43844
  0x64, 0x75, 0x63, 0x65, 0x32, 0xDA, 0x18, 0x00, 0x14, 0x00, 0xDA, 0x80, 0xFB, 0x00, 0x14, 0x01, 
43845
  0xDA, 0x1F, 0x00, 0x14, 0x02, 0xDA, 0x8D, 0xF9, 0x02, 0x14, 0x04, 0xDA, 0x22, 0x09, 0x14, 0x06, 
43846
  0xDA, 0x81, 0x08, 0x26, 0x04, 0x00, 0x00, 0x47, 0x03, 0x01, 0x04, 0x19, 0x04, 0x03, 0x00, 0x26, 
43847
  0x06, 0x00, 0x00, 0x23, 0x05, 0x06, 0x04, 0x1C, 0x05, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1A, 
43848
  0x01, 0x00, 0x00, 0x38, 0x05, 0x01, 0x04, 0x19, 0x06, 0x05, 0x00, 0x47, 0x04, 0x01, 0x04, 0x26, 
43849
  0x08, 0x00, 0x00, 0x48, 0x07, 0x08, 0x04, 0x1C, 0x07, 0x06, 0x00, 0x38, 0x08, 0x01, 0x04, 0x30, 
43850
  0x06, 0x08, 0x00, 0x33, 0x06, 0x00, 0x00, 0x47, 0x04, 0x01, 0x04, 0x1A, 0xF9, 0xFF, 0xFF, 0x03, 
43851
  0x06, 0x00, 0x00, 0x83, 0x78, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x07, 0x00, 0x07, 0x00, 0x03, 
43852
  0x00, 0x11, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x03, 0x01, 0x0A, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x03, 
43853
  0x01, 0x15, 0x00, 0x0E, 0x00, 0x0E, 0x01, 0x0C, 0xBF, 0xFE, 0x03, 0xBF, 0xF8, 0x01, 0xCF, 0x08, 
43854
  0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x07, 
43855
  0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x06, 0x13, 0x00, 0x03, 0xCE, 0x08, 0x67, 0x65, 0x6E, 
43856
  0x65, 0x72, 0x61, 0x74, 0x65, 0xDA, 0x18, 0xDA, 0x50, 0xDA, 0x8A, 0xF1, 0xDA, 0x86, 0x6E, 0xDA, 
43857
  0x82, 0xAE, 0xDA, 0x81, 0x5E, 0xDA, 0x82, 0x70, 0x00, 0x13, 0x00, 0xDA, 0x86, 0x6F, 0x00, 0x13, 
43858
  0x01, 0xDA, 0x82, 0xB5, 0x00, 0x13, 0x02, 0xDA, 0x8D, 0xFC, 0x44, 0x03, 0x00, 0x00, 0x2A, 0x05, 
43859
  0x00, 0x00, 0x2F, 0x05, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0x43, 0x04, 0x00, 0x00, 0x2A, 0x06, 
43860
  0x01, 0x00, 0x30, 0x06, 0x04, 0x00, 0x43, 0x05, 0x00, 0x00, 0x2A, 0x06, 0x02, 0x00, 0x31, 0x06, 
43861
  0x00, 0x05, 0x43, 0x04, 0x00, 0x00, 0x2A, 0x06, 0x03, 0x00, 0x31, 0x06, 0x03, 0x04, 0x43, 0x05, 
43862
  0x00, 0x00, 0x2A, 0x04, 0x04, 0x00, 0x2A, 0x06, 0x05, 0x00, 0x31, 0x04, 0x05, 0x06, 0x43, 0x03, 
43863
  0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x82, 0x78, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43864
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
43865
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x07, 0x6F, 
43866
  0x73, 0x2F, 0x61, 0x72, 0x63, 0x68, 0xDA, 0x8D, 0x21, 0xDA, 0x8B, 0x66, 0xDA, 0x8B, 0x64, 0xCF, 
43867
  0x0A, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x66, 0x69, 0x6C, 0x6C, 0xD8, 0x0A, 0x61, 0x72, 0x72, 
43868
  0x61, 0x79, 0x2F, 0x66, 0x69, 0x6C, 0x6C, 0xCF, 0x02, 0x2B, 0x2B, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
43869
  0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 0x08, 0x00, 0x02, 0xCE, 0x02, 0x2B, 0x2B, 0xDA, 0x18, 
43870
  0xDA, 0x38, 0xDA, 0x3A, 0x00, 0x08, 0x00, 0xDA, 0x1E, 0x00, 0x08, 0x01, 0xDA, 0x8E, 0x02, 0x2A, 
43871
  0x03, 0x00, 0x00, 0x29, 0x04, 0x01, 0x00, 0x31, 0x03, 0x00, 0x04, 0x43, 0x02, 0x00, 0x00, 0x2A, 
43872
  0x04, 0x01, 0x00, 0x31, 0x04, 0x00, 0x02, 0x43, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x80, 
43873
  0x94, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 
43874
  0xCF, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0xDA, 0x80, 0xF5, 0xDA, 0x8A, 0x8B, 0x00, 0x04, 
43875
  0x00, 0xCF, 0x05, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x00, 0x04, 0x01, 0xDA, 0x8C, 0x15, 0x2A, 0x02, 
43876
  0x00, 0x00, 0x30, 0x00, 0x02, 0x00, 0x2A, 0x02, 0x01, 0x00, 0x34, 0x02, 0x00, 0x00, 0x8A, 0x90, 
43877
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x06, 0x00, 0xDA, 0x80, 0xF9, 0x00, 0x06, 0x01, 
43878
  0xCF, 0x0C, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x2D, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x2F, 0x00, 
43879
  0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 0x2F, 0x02, 0x00, 0x00, 0x2A, 0x03, 
43880
  0x01, 0x00, 0x34, 0x03, 0x00, 0x00, 0x8B, 0x91, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x26, 0x00, 
43881
  0x26, 0x00, 0x26, 0xDA, 0x87, 0x36, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 
43882
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x05, 0x00, 0x02, 0xCE, 0x0D, 0x6E, 0x61, 0x74, 0x69, 0x76, 
43883
  0x65, 0x2D, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0xDA, 0x18, 0xDA, 0x80, 0xB2, 0xDA, 0x8B, 0x0E, 
43884
  0x00, 0x05, 0x00, 0xDA, 0x80, 0xF9, 0x00, 0x05, 0x01, 0xCF, 0x0D, 0x6E, 0x61, 0x74, 0x69, 0x76, 
43885
  0x65, 0x2D, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x2A, 0x03, 0x00, 0x00, 0x33, 0x02, 0x03, 0x00, 
43886
  0x30, 0x00, 0x02, 0x00, 0x2A, 0x03, 0x01, 0x00, 0x34, 0x03, 0x00, 0x00, 0x8B, 0x87, 0x35, 0x00, 
43887
  0x35, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0xDA, 0x87, 0x25, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 
43888
  0x00, 0x07, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x10, 0x00, 0x05, 0xCE, 0x0E, 0x70, 
43889
  0x72, 0x65, 0x6C, 0x6F, 0x61, 0x64, 0x2D, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0xDA, 0x18, 0xDA, 
43890
  0x87, 0x23, 0xDA, 0x87, 0x62, 0x00, 0x10, 0x00, 0xDA, 0x80, 0xF9, 0x00, 0x10, 0x01, 0xDA, 0x80, 
43891
  0xAB, 0x00, 0x10, 0x02, 0xCF, 0x0E, 0x70, 0x72, 0x65, 0x6C, 0x6F, 0x61, 0x64, 0x2D, 0x6C, 0x6F, 
43892
  0x61, 0x64, 0x65, 0x72, 0x02, 0x10, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x32, 
43893
  0x03, 0x0F, 0x04, 0xDA, 0x85, 0x1B, 0x2A, 0x04, 0x00, 0x00, 0x38, 0x03, 0x04, 0x00, 0x19, 0x04, 
43894
  0x03, 0x00, 0x1C, 0x04, 0x0C, 0x00, 0x2F, 0x04, 0x00, 0x00, 0x2A, 0x05, 0x01, 0x00, 0x33, 0x03, 
43895
  0x05, 0x00, 0x1C, 0x03, 0x07, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0x33, 0x05, 
43896
  0x04, 0x00, 0x2A, 0x06, 0x00, 0x00, 0x3A, 0x06, 0x00, 0x05, 0x03, 0x05, 0x00, 0x00, 0x03, 0x04, 
43897
  0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x8B, 0x8D, 0x1D, 0x00, 0x1D, 0x00, 0x10, 0x00, 0x10, 0x01, 
43898
  0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x12, 0x01, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x14, 0x00, 
43899
  0x14, 0x00, 0x14, 0xBF, 0xFF, 0x12, 0xBF, 0xFF, 0x10, 0xDA, 0x80, 0xEF, 0xD7, 0x00, 0xCD, 0x02, 
43900
  0xFE, 0x00, 0x00, 0x08, 0x02, 0x02, 0x02, 0x05, 0x18, 0x00, 0x01, 0x05, 0xCE, 0x0D, 0x73, 0x6F, 
43901
  0x75, 0x72, 0x63, 0x65, 0x2D, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0xDA, 0x18, 0xDA, 0x87, 0x84, 
43902
  0xDA, 0x81, 0xEF, 0xDA, 0x81, 0x5E, 0xDA, 0x80, 0xBE, 0xDA, 0x80, 0xBF, 0x00, 0x18, 0x00, 0xDA, 
43903
  0x80, 0xF9, 0x00, 0x18, 0x01, 0xDA, 0x80, 0xAB, 0x00, 0x18, 0x02, 0xCF, 0x0D, 0x73, 0x6F, 0x75, 
43904
  0x72, 0x63, 0x65, 0x2D, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x08, 0x18, 0x03, 0xCF, 0x07, 0x5F, 
43905
  0x30, 0x30, 0x30, 0x30, 0x35, 0x33, 0x0B, 0x18, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
43906
  0x35, 0x34, 0x2A, 0x03, 0x00, 0x00, 0x27, 0x04, 0x00, 0x00, 0x3A, 0x03, 0x00, 0x04, 0x2E, 0x03, 
43907
  0x00, 0x00, 0x2A, 0x04, 0x01, 0x00, 0x30, 0x03, 0x04, 0x00, 0x2A, 0x05, 0x02, 0x00, 0x33, 0x04, 
43908
  0x05, 0x00, 0x19, 0x03, 0x04, 0x00, 0x26, 0x05, 0x00, 0x00, 0x35, 0x04, 0x03, 0x05, 0x19, 0x05, 
43909
  0x04, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x26, 0x06, 0x00, 0x00, 0x3A, 0x04, 0x00, 0x06, 0x2F, 0x03, 
43910
  0x00, 0x00, 0x2A, 0x06, 0x03, 0x00, 0x33, 0x04, 0x06, 0x00, 0x2A, 0x07, 0x04, 0x00, 0x23, 0x06, 
43911
  0x04, 0x07, 0x1C, 0x06, 0x02, 0x00, 0x03, 0x05, 0x00, 0x00, 0x37, 0x04, 0x05, 0x03, 0x03, 0x04, 
43912
  0x00, 0x00, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x06, 0x01, 0x03, 0xDA, 
43913
  0x18, 0xDA, 0x8B, 0x7D, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 0xF9, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
43914
  0x80, 0xAB, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8E, 0x11, 0x2B, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 
43915
  0x00, 0x2B, 0x00, 0x00, 0x01, 0x32, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 
43916
  0x00, 0xBF, 0xFF, 0x8B, 0x8B, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 
43917
  0x8B, 0x89, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
43918
  0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 
43919
  0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
43920
  0x0F, 0x03, 0x00, 0x00, 0x00, 0xCE, 0x0C, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x74, 0x79, 
43921
  0x70, 0x65, 0x20, 0xCE, 0x08, 0x20, 0x75, 0x6E, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x00, 0x3A, 0x00, 
43922
  0xDA, 0x80, 0xF9, 0x00, 0x3A, 0x01, 0xDA, 0x80, 0xAB, 0x00, 0x3A, 0x02, 0xDA, 0x8A, 0x32, 0x00, 
43923
  0x3A, 0x03, 0xCF, 0x09, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x2D, 0x31, 0x04, 0x3A, 0x06, 
43924
  0xDA, 0x87, 0x7E, 0x06, 0x3A, 0x07, 0xDA, 0x87, 0x7B, 0x13, 0x3A, 0x08, 0xCF, 0x07, 0x5F, 0x30, 
43925
  0x30, 0x30, 0x30, 0x35, 0x35, 0x14, 0x16, 0x08, 0xDA, 0x89, 0x91, 0x2B, 0x3A, 0x0A, 0xDA, 0x89, 
43926
  0xB9, 0x36, 0x3A, 0x0B, 0xDA, 0x80, 0xBA, 0x2F, 0x00, 0x00, 0x00, 0x2A, 0x05, 0x00, 0x00, 0x33, 
43927
  0x04, 0x05, 0x00, 0x3B, 0x05, 0x04, 0x00, 0x19, 0x06, 0x05, 0x00, 0x3B, 0x05, 0x04, 0x01, 0x19, 
43928
  0x07, 0x05, 0x00, 0x1C, 0x06, 0x02, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x2A, 
43929
  0x08, 0x01, 0x00, 0x2F, 0x08, 0x00, 0x00, 0x33, 0x08, 0x02, 0x00, 0x1C, 0x08, 0x03, 0x00, 0x26, 
43930
  0x05, 0x00, 0x00, 0x1A, 0x04, 0x00, 0x00, 0x2A, 0x0A, 0x02, 0x00, 0x38, 0x09, 0x0A, 0x06, 0x19, 
43931
  0x05, 0x09, 0x00, 0x19, 0x08, 0x05, 0x00, 0x1C, 0x08, 0x02, 0x00, 0x03, 0x08, 0x00, 0x00, 0x2F, 
43932
  0x06, 0x00, 0x00, 0x2A, 0x09, 0x03, 0x00, 0x33, 0x05, 0x09, 0x00, 0x1C, 0x05, 0x08, 0x00, 0x2A, 
43933
  0x09, 0x04, 0x00, 0x2A, 0x0A, 0x05, 0x00, 0x31, 0x09, 0x06, 0x0A, 0x2A, 0x0A, 0x06, 0x00, 0x33, 
43934
  0x09, 0x0A, 0x00, 0x01, 0x09, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2F, 0x07, 0x00, 0x00, 0x2A, 
43935
  0x0B, 0x07, 0x00, 0x33, 0x0A, 0x0B, 0x00, 0x1C, 0x0A, 0x06, 0x00, 0x2F, 0x07, 0x00, 0x00, 0x2A, 
43936
  0x0C, 0x08, 0x00, 0x33, 0x0B, 0x0C, 0x00, 0x19, 0x09, 0x0B, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x19, 
43937
  0x09, 0x07, 0x00, 0x19, 0x0A, 0x09, 0x00, 0x1C, 0x0A, 0x02, 0x00, 0x1A, 0x07, 0x00, 0x00, 0x2A, 
43938
  0x09, 0x09, 0x00, 0x2A, 0x0B, 0x0A, 0x00, 0x31, 0x09, 0x07, 0x0B, 0x2A, 0x0B, 0x06, 0x00, 0x33, 
43939
  0x09, 0x0B, 0x00, 0x01, 0x09, 0x00, 0x00, 0x30, 0x06, 0x01, 0x00, 0x33, 0x09, 0x0A, 0x00, 0x19, 
43940
  0x0B, 0x09, 0x00, 0x2A, 0x09, 0x02, 0x00, 0x3A, 0x09, 0x06, 0x0B, 0x03, 0x0B, 0x00, 0x00, 0x8B, 
43941
  0x95, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 
43942
  0x00, 0x03, 0x00, 0x14, 0x01, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 
43943
  0x00, 0x29, 0x00, 0x29, 0x00, 0x12, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x09, 0x00, 0x09, 
43944
  0x00, 0x09, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 
43945
  0x00, 0x07, 0x02, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x15, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 
43946
  0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 0x1F, 0x00, 0x1F, 
43947
  0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x18, 0x01, 0x12, 0x00, 0x12, 0x00, 0x09, 0x01, 0x09, 
43948
  0x00, 0x09, 0xBF, 0xFC, 0x07, 0x00, 0x06, 0x00, 0xDA, 0x80, 0xF9, 0x00, 0x06, 0x01, 0xDA, 0x80, 
43949
  0xAB, 0x00, 0x06, 0x02, 0xDA, 0x87, 0x17, 0x32, 0x01, 0x00, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x33, 
43950
  0x03, 0x04, 0x00, 0x31, 0x00, 0x01, 0x03, 0x2A, 0x04, 0x01, 0x00, 0x34, 0x04, 0x00, 0x00, 0x8B, 
43951
  0xA7, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x08, 0xCE, 0x80, 
43952
  0xB6, 0x28, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x26, 
43953
  0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x20, 
43954
  0x61, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 
43955
  0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x2E, 0x20, 0x57, 0x69, 
43956
  0x6C, 0x6C, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6F, 0x66, 
43957
  0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x73, 0x20, 0x69, 0x6E, 0x0A, 0x60, 0x6D, 
43958
  0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x70, 0x61, 0x74, 0x68, 0x73, 0x60, 0x2E, 0x20, 0x52, 0x65, 
43959
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x65, 0x6E, 
43960
  0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x0A, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 
43961
  0x65, 0x64, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x69, 0x6E, 
43962
  0x67, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 
43963
  0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0xDA, 0x87, 0x90, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
43964
  0x00, 0xDA, 0x83, 0x14, 0x81, 0x61, 0x01, 0xDA, 0x06, 0xDA, 0x87, 0x91, 0xDA, 0x08, 0xCE, 0x47, 
43965
  0x28, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x74, 0x65, 0x6C, 0x6C, 0x20, 0x66, 0x29, 0x0A, 0x0A, 0x47, 
43966
  0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x76, 
43967
  0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 
43968
  0x20, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x66, 0x69, 
43969
  0x6C, 0x65, 0x20, 0x60, 0x66, 0x60, 0x2E, 0xDA, 0x87, 0x92, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
43970
  0x00, 0xDA, 0x83, 0x14, 0x80, 0x92, 0x01, 0xDA, 0x06, 0xDA, 0x80, 0xF3, 0xDA, 0x08, 0xCE, 0x82, 
43971
  0x98, 0x28, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x6F, 0x70, 0x65, 0x6E, 0x20, 0x70, 0x61, 0x74, 0x68, 
43972
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x29, 0x0A, 0x0A, 0x4F, 0x70, 0x65, 
43973
  0x6E, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x20, 0x60, 0x70, 0x61, 0x74, 0x68, 0x60, 
43974
  0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x62, 0x73, 0x6F, 0x6C, 0x75, 0x74, 0x65, 0x20, 
43975
  0x6F, 0x72, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 
43976
  0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x65, 0x60, 0x20, 0x69, 0x73, 0x20, 
43977
  0x61, 0x20, 0x73, 0x65, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x69, 
43978
  0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 
43979
  0x64, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
43980
  0x69, 0x6C, 0x65, 0x20, 0x69, 0x6E, 0x2E, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x65, 0x60, 0x20, 0x69, 
43981
  0x73, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x77, 0x68, 0x65, 0x72, 
43982
  0x65, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 
43983
  0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x20, 0x66, 0x6C, 
43984
  0x61, 0x67, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 
43985
  0x63, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x65, 0x64, 
43986
  0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2C, 0x20, 0x6F, 
43987
  0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
43988
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x68, 0x61, 
43989
  0x6E, 0x64, 0x6C, 0x65, 0x2E, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 
43990
  0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x72, 0x20, 0x2D, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x72, 
43991
  0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 
43992
  0x66, 0x69, 0x6C, 0x65, 0x0A, 0x0A, 0x2A, 0x20, 0x77, 0x20, 0x2D, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 
43993
  0x77, 0x20, 0x77, 0x72, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 
43994
  0x20, 0x66, 0x69, 0x6C, 0x65, 0x0A, 0x0A, 0x2A, 0x20, 0x61, 0x20, 0x2D, 0x20, 0x61, 0x70, 0x70, 
43995
  0x65, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x0A, 
43996
  0x0A, 0x46, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 
43997
  0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, 0x6C, 0x20, 0x66, 0x6C, 
43998
  0x61, 0x67, 0x73, 0x2C, 0x20, 0x30, 0x20, 0x6F, 0x72, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x6F, 
43999
  0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 
44000
  0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x61, 0x70, 0x70, 
44001
  0x65, 0x6E, 0x64, 0x65, 0x64, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x62, 0x20, 0x2D, 0x20, 0x6F, 0x70, 
44002
  0x65, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x62, 
44003
  0x69, 0x6E, 0x61, 0x72, 0x79, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x20, 0x28, 0x72, 0x61, 0x74, 0x68, 
44004
  0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x6D, 0x6F, 0x64, 
44005
  0x65, 0x29, 0x0A, 0x0A, 0x2A, 0x20, 0x2B, 0x20, 0x2D, 0x20, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 
44006
  0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x69, 0x6E, 0x73, 
44007
  0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 
44008
  0x69, 0x6E, 0x67, 0x20, 0x69, 0x74, 0x0A, 0x0A, 0x2A, 0x20, 0x6E, 0x20, 0x2D, 0x20, 0x65, 0x72, 
44009
  0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 
44010
  0x63, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x65, 0x64, 
44011
  0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x72, 0x65, 0x74, 0x75, 
44012
  0x72, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x69, 0x6C, 0xDA, 0x87, 0x93, 0xD3, 0x03, 0xDA, 0x03, 
44013
  0xD2, 0x03, 0x00, 0xDA, 0x82, 0xFA, 0x81, 0x86, 0x01, 0xDA, 0x06, 0xDA, 0x87, 0x94, 0xDA, 0x08, 
44014
  0xCE, 0x81, 0x39, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 
44015
  0x63, 0x65, 0x20, 0x70, 0x61, 0x74, 0x74, 0x20, 0x73, 0x75, 0x62, 0x73, 0x74, 0x20, 0x73, 0x74, 
44016
  0x72, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 
44017
  0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x6F, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x63, 0x65, 
44018
  0x20, 0x6F, 0x66, 0x20, 0x60, 0x70, 0x61, 0x74, 0x74, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 
44019
  0x60, 0x73, 0x75, 0x62, 0x73, 0x74, 0x60, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 
44020
  0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x73, 0x74, 0x72, 0x60, 0x2E, 0x20, 0x49, 0x66, 0x20, 
44021
  0x60, 0x73, 0x75, 0x62, 0x73, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 
44022
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x69, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 
44023
  0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x70, 
44024
  0x61, 0x74, 0x74, 0x60, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x69, 0x66, 0x20, 0x61, 0x20, 0x6D, 
44025
  0x61, 0x74, 0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2C, 0x20, 0x61, 
44026
  0x6E, 0x64, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 
44027
  0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6C, 0x20, 0x72, 0x65, 0x70, 0x6C, 
44028
  0x61, 0x63, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x74, 0x6F, 0x20, 
44029
  0x75, 0x73, 0x65, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 
44030
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 
44031
  0x69, 0x66, 0x20, 0x60, 0x70, 0x61, 0x74, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x66, 0x6F, 0x75, 
44032
  0x6E, 0x64, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x72, 0x65, 
44033
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x60, 0x73, 0x74, 0x72, 0x60, 0x2E, 0xDA, 0x87, 0x95, 0xD3, 
44034
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x83, 0x18, 0x01, 0xDA, 0x06, 0xDA, 0x87, 0x96, 
44035
  0xDA, 0x08, 0xCE, 0x65, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3C, 0x3D, 0x20, 0x26, 
44036
  0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x45, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6C, 0x65, 0x6E, 0x74, 
44037
  0x20, 0x6F, 0x66, 0x20, 0x60, 0x3C, 0x3D, 0x60, 0x20, 0x62, 0x75, 0x74, 0x20, 0x75, 0x73, 0x69, 
44038
  0x6E, 0x67, 0x20, 0x70, 0x6F, 0x6C, 0x79, 0x6D, 0x6F, 0x72, 0x70, 0x68, 0x69, 0x63, 0x20, 0x60, 
44039
  0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x60, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 
44040
  0x20, 0x6F, 0x66, 0x20, 0x70, 0x72, 0x69, 0x6D, 0x69, 0x74, 0x69, 0x76, 0x65, 0x20, 0x63, 0x6F, 
44041
  0x6D, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x2E, 0xDA, 0x87, 0xA1, 0xD3, 0x04, 0xDA, 0x03, 
44042
  0xD2, 0x03, 0x00, 0xDA, 0x18, 0x82, 0xB6, 0x01, 0xDA, 0x06, 0xDA, 0x87, 0xA2, 0xDA, 0x08, 0xCE, 
44043
  0x43, 0x28, 0x77, 0x68, 0x65, 0x6E, 0x2D, 0x6C, 0x65, 0x74, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 
44044
  0x6E, 0x67, 0x73, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x53, 0x61, 0x6D, 
44045
  0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x28, 0x69, 0x66, 0x2D, 0x6C, 0x65, 0x74, 0x20, 0x62, 0x69, 
44046
  0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x28, 0x64, 0x6F, 0x20, 0x3B, 0x62, 0x6F, 0x64, 0x79, 
44047
  0x29, 0x29, 0x60, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x87, 0x64, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
44048
  0x00, 0xDA, 0x18, 0x6A, 0x01, 0xDA, 0x06, 0xDA, 0x87, 0x62, 0xDA, 0x08, 0xCE, 0x3A, 0x28, 0x66, 
44049
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 
44050
  0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 
44051
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x28, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x20, 0x63, 0x66, 0x75, 
44052
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x29, 0x2E, 0xDA, 0x87, 0xA4, 0xD3, 0x04, 0xDA, 0x84, 0x25, 
44053
  0xCB, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x84, 0xC6, 0x01, 0xDA, 0x06, 0xDA, 0x82, 0x5B, 
44054
  0xDA, 0x08, 0xCE, 0x7E, 0x54, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 
44055
  0x6C, 0x69, 0x6E, 0x74, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 
44056
  0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6C, 0x65, 0x76, 0x65, 
44057
  0x6C, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x69, 0x6E, 0x74, 0x20, 0x6C, 0x65, 
44058
  0x76, 0x65, 0x6C, 0x20, 0x61, 0x74, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x63, 0x6F, 0x6D, 
44059
  0x70, 0x69, 0x6C, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x65, 0x78, 
44060
  0x69, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 
44061
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x69, 0x6E, 0x75, 
44062
  0x65, 0x2E, 0xDA, 0x87, 0xA5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x88, 0x8D, 
44063
  0x01, 0xDA, 0x06, 0xDA, 0x87, 0xA6, 0xDA, 0x08, 0xCE, 0x4E, 0x28, 0x6F, 0x73, 0x2F, 0x72, 0x65, 
44064
  0x6E, 0x61, 0x6D, 0x65, 0x20, 0x6F, 0x6C, 0x64, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x6E, 0x65, 0x77, 
44065
  0x6E, 0x61, 0x6D, 0x65, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x20, 
44066
  0x66, 0x69, 0x6C, 0x65, 0x20, 0x6F, 0x6E, 0x20, 0x64, 0x69, 0x73, 0x6B, 0x20, 0x74, 0x6F, 0x20, 
44067
  0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
44068
  0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x87, 0xA7, 0xD3, 0x02, 0xDA, 0x06, 0xDA, 
44069
  0x4D, 0xDA, 0x08, 0xCE, 0x4E, 0x28, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x65, 0x29, 0x0A, 0x0A, 
44070
  0x54, 0x68, 0x72, 0x6F, 0x77, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 
44071
  0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x63, 0x61, 
44072
  0x75, 0x67, 0x68, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x64, 
44073
  0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 
44074
  0x65, 0x72, 0x2E, 0xDA, 0x87, 0xA8, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x80, 
44075
  0xB5, 0x01, 0xDA, 0x06, 0xDA, 0x87, 0xA9, 0xDA, 0x08, 0xCE, 0x52, 0x28, 0x69, 0x66, 0x2D, 0x6E, 
44076
  0x6F, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 
44077
  0x6E, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x65, 0x6C, 0x73, 0x65, 0x29, 0x0A, 0x0A, 0x53, 0x68, 
44078
  0x6F, 0x72, 0x74, 0x68, 0x61, 0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x28, 0x69, 0x66, 
44079
  0x20, 0x28, 0x6E, 0x6F, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x29, 
44080
  0x20, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6E, 0x29, 0x60, 0x2E, 0xDA, 0x3D, 0xCB, 
44081
  0xDA, 0x87, 0xAD, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x83, 0x14, 0x82, 0x2A, 0x01, 
44082
  0xDA, 0x06, 0xDA, 0x87, 0xAE, 0xDA, 0x08, 0xCE, 0x80, 0xB0, 0x28, 0x78, 0x70, 0x72, 0x69, 0x6E, 
44083
  0x20, 0x74, 0x6F, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x50, 0x72, 0x69, 0x6E, 0x74, 
44084
  0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x6F, 0x74, 
44085
  0x68, 0x65, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x65, 0x78, 0x70, 0x6C, 0x69, 0x63, 
44086
  0x69, 0x74, 0x6C, 0x79, 0x20, 0x28, 0x6E, 0x6F, 0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 
44087
  0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x29, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 
44088
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x74, 
44089
  0x6F, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x61, 
44090
  0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x69, 0x73, 0x20, 
44091
  0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 
44092
  0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x70, 0x72, 0x69, 0x6E, 0x60, 0x2E, 0x20, 0x52, 0x65, 
44093
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x87, 0xAF, 0xD3, 0x03, 0xDA, 
44094
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x87, 0x1D, 0x01, 0xDA, 0x06, 0xDA, 0x87, 0xB0, 0xDA, 0x08, 
44095
  0xCE, 0x54, 0x28, 0x6F, 0x73, 0x2F, 0x72, 0x65, 0x61, 0x64, 0x6C, 0x69, 0x6E, 0x6B, 0x20, 0x70, 
44096
  0x61, 0x74, 0x68, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x61, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 
44097
  0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 
44098
  0x62, 0x6F, 0x6C, 0x69, 0x63, 0x20, 0x6C, 0x69, 0x6E, 0x6B, 0x2E, 0x20, 0x44, 0x6F, 0x65, 0x73, 
44099
  0x20, 0x6E, 0x6F, 0x74, 0x20, 0x77, 0x6F, 0x72, 0x6B, 0x20, 0x6F, 0x6E, 0x20, 0x57, 0x69, 0x6E, 
44100
  0x64, 0x6F, 0x77, 0x73, 0x2E, 0x0A, 0xDA, 0x87, 0xB1, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
44101
  0xDA, 0x40, 0x84, 0x65, 0x01, 0xDA, 0x06, 0xDA, 0x87, 0xB2, 0xDA, 0x08, 0xCE, 0x62, 0x28, 0x65, 
44102
  0x76, 0x2F, 0x72, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x26, 0x20, 0x63, 0x6C, 0x61, 0x75, 
44103
  0x73, 0x65, 0x73, 0x29, 0x0A, 0x0A, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 
44104
  0x20, 0x65, 0x76, 0x2F, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 
44105
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x74, 0x72, 0x79, 0x20, 0x63, 0x6C, 0x61, 0x75, 0x73, 0x65, 0x73, 
44106
  0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x20, 0x6F, 0x72, 0x64, 
44107
  0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x66, 0x61, 0x69, 0x72, 0x6E, 0x65, 0x73, 0x73, 0x2E, 
44108
  0xDA, 0x87, 0xB3, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 0x0D, 0x01, 
44109
  0xDA, 0x06, 0xDA, 0x87, 0xB4, 0xDA, 0x08, 0xCE, 0x26, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x63, 
44110
  0x6F, 0x73, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 
44111
  0x68, 0x65, 0x20, 0x63, 0x6F, 0x73, 0x69, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 
44112
  0x87, 0xB5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x83, 0x14, 0x7A, 0x01, 0xDA, 0x06, 
44113
  0xDA, 0x87, 0xB6, 0xDA, 0x08, 0xCE, 0x63, 0x28, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x74, 0x65, 0x6D, 
44114
  0x70, 0x29, 0x0A, 0x0A, 0x4F, 0x70, 0x65, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x6E, 0x6F, 0x6E, 
44115
  0x79, 0x6D, 0x6F, 0x75, 0x73, 0x20, 0x74, 0x65, 0x6D, 0x70, 0x6F, 0x72, 0x61, 0x72, 0x79, 0x20, 
44116
  0x66, 0x69, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x6D, 
44117
  0x6F, 0x76, 0x65, 0x64, 0x20, 0x6F, 0x6E, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x2E, 0x20, 0x52, 
44118
  0x61, 0x69, 0x73, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6F, 
44119
  0x6E, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x75, 0x72, 0x65, 0x2E, 0xDA, 0x87, 0xB7, 0xD3, 0x03, 0xDA, 
44120
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 0xA9, 0x82, 0xCD, 0x01, 0xDA, 0x06, 0xDA, 0x87, 0xB8, 0xDA, 
44121
  0x08, 0xCE, 0x84, 0x6B, 0x28, 0x73, 0x61, 0x6E, 0x64, 0x62, 0x6F, 0x78, 0x20, 0x26, 0x20, 0x66, 
44122
  0x6F, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6E, 0x2D, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6C, 
44123
  0x69, 0x74, 0x69, 0x65, 0x73, 0x29, 0x0A, 0x0A, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6C, 0x65, 0x20, 
44124
  0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x73, 0x65, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 
44125
  0x70, 0x72, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 
44126
  0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x72, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x75, 0x73, 0x69, 
44127
  0x6E, 0x67, 0x20, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 
44128
  0x6D, 0x20, 0x72, 0x65, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2E, 0x20, 0x4F, 0x6E, 0x63, 
44129
  0x65, 0x20, 0x61, 0x20, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x64, 
44130
  0x69, 0x73, 0x61, 0x62, 0x6C, 0x65, 0x64, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 
44131
  0x73, 0x20, 0x6E, 0x6F, 0x20, 0x77, 0x61, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x2D, 0x65, 
44132
  0x6E, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x69, 0x74, 0x2E, 0x20, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 
44133
  0x6C, 0x69, 0x74, 0x69, 0x65, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x3A, 0x0A, 0x0A, 
44134
  0x2A, 0x20, 0x3A, 0x61, 0x6C, 0x6C, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 
44135
  0x77, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x28, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x20, 0x49, 0x4F, 
44136
  0x20, 0x74, 0x6F, 0x20, 0x73, 0x74, 0x64, 0x6F, 0x75, 0x74, 0x2C, 0x20, 0x73, 0x74, 0x64, 0x65, 
44137
  0x72, 0x72, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x74, 0x64, 0x69, 0x6E, 0x29, 0x0A, 0x2A, 
44138
  0x20, 0x3A, 0x65, 0x6E, 0x76, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 
44139
  0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x77, 0x72, 0x69, 
44140
  0x74, 0x65, 0x20, 0x65, 0x6E, 0x76, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x73, 
44141
  0x0A, 0x2A, 0x20, 0x3A, 0x66, 0x66, 0x69, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 
44142
  0x6F, 0x77, 0x20, 0x46, 0x46, 0x49, 0x20, 0x28, 0x72, 0x65, 0x63, 0x6F, 0x6D, 0x6D, 0x65, 0x6E, 
44143
  0x64, 0x65, 0x64, 0x20, 0x69, 0x66, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6C, 0x69, 0x6E, 0x67, 
44144
  0x20, 0x61, 0x6E, 0x79, 0x74, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x6C, 0x73, 0x65, 0x29, 0x0A, 
44145
  0x2A, 0x20, 0x3A, 0x66, 0x66, 0x69, 0x2D, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x20, 0x2D, 0x20, 
44146
  0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x69, 0x6E, 0x67, 
44147
  0x20, 0x6E, 0x65, 0x77, 0x20, 0x46, 0x46, 0x49, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 
44148
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x65, 0x77, 
44149
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x0A, 0x2A, 0x20, 0x3A, 0x66, 0x66, 
44150
  0x69, 0x2D, 0x6A, 0x69, 0x74, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 
44151
  0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x66, 0x66, 0x69, 0x2F, 0x6A, 0x69, 
44152
  0x74, 0x66, 0x6E, 0x60, 0x0A, 0x2A, 0x20, 0x3A, 0x66, 0x66, 0x69, 0x2D, 0x75, 0x73, 0x65, 0x20, 
44153
  0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 
44154
  0x20, 0x61, 0x6E, 0x79, 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6F, 0x75, 0x73, 0x6C, 0x79, 0x20, 
44155
  0x62, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x46, 0x46, 0x49, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 
44156
  0x6F, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x2D, 0x75, 
44157
  0x6E, 0x73, 0x61, 0x66, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 
44158
  0x0A, 0x2A, 0x20, 0x3A, 0x66, 0x73, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 
44159
  0x77, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 
44160
  0x66, 0x69, 0x6C, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x0A, 0x2A, 0x20, 0x3A, 0x66, 
44161
  0x73, 0x2D, 0x72, 0x65, 0x61, 0x64, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 
44162
  0x77, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x6F, 
44163
  0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 
44164
  0x0A, 0x2A, 0x20, 0x3A, 0x66, 0x73, 0x2D, 0x74, 0x65, 0x6D, 0x70, 0x20, 0x2D, 0x20, 0x64, 0x69, 
44165
  0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 
44166
  0x74, 0x65, 0x6D, 0x70, 0x6F, 0x72, 0x61, 0x72, 0x79, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x73, 0x0A, 
44167
  0x2A, 0x20, 0x3A, 0x66, 0x73, 0x2D, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x2D, 0x20, 0x64, 0x69, 
44168
  0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x61, 0x63, 0x63, 
44169
  0x65, 0x73, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 
44170
  0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x0A, 0x2A, 0x20, 0x3A, 0x68, 0x72, 0x74, 0x69, 0x6D, 0x65, 
44171
  0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x68, 0x69, 0x67, 0x68, 
44172
  0x2D, 0x72, 0x65, 0x73, 0x6F, 0x6C, 0x75, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x69, 0x6D, 0x65, 
44173
  0x72, 0x73, 0x0A, 0x2A, 0x20, 0x3A, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 0x20, 0x2D, 0x20, 
44174
  0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x64, 0x79, 
44175
  0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 0x20, 0x28, 0x6E, 
44176
  0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x29, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 0x65, 0x74, 0x20, 0x2D, 
44177
  0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x6E, 0x65, 0x74, 0x77, 0x6F, 0x72, 
44178
  0x6B, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 0x65, 0x74, 0x2D, 
44179
  0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 
44180
  0x6F, 0x77, 0x20, 0x6D, 0x61, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x75, 0x74, 0x62, 0x6F, 0x75, 
44181
  0x6E, 0x64, 0x20, 0x6E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 
44182
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 0x65, 0x74, 0x2D, 0x6C, 0x69, 
44183
  0x73, 0x74, 0x65, 0x6E, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 
44184
  0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x62, 0x6F, 0x75, 0x6E, 
44185
  0x64, 0x20, 0x6E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 
44186
  0x74, 0x69, 0x6F, 0x6E, 0x73, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x61, 0x6E, 0x64, 0x62, 0x6F, 0x78, 
44187
  0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x63, 0x61, 0x6C, 0x6C, 
44188
  0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
44189
  0x6E, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 
44190
  0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x72, 0x75, 0x6E, 0x6E, 0x69, 
44191
  0x6E, 0x67, 0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0xDA, 
44192
  0x87, 0xB9, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x83, 0x40, 0x80, 0xE3, 0x01, 0xDA, 
44193
  0x06, 0xDA, 0x87, 0xBA, 0xDA, 0x08, 0xCE, 0x80, 0x90, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
44194
  0x2F, 0x66, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x26, 0x6F, 0x70, 
44195
  0x74, 0x20, 0x62, 0x79, 0x74, 0x65, 0x29, 0x0A, 0x0A, 0x46, 0x69, 0x6C, 0x6C, 0x20, 0x75, 0x70, 
44196
  0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x62, 
44197
  0x79, 0x74, 0x65, 0x73, 0x2C, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 
44198
  0x20, 0x74, 0x6F, 0x20, 0x30, 0x73, 0x2E, 0x20, 0x44, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 
44199
  0x20, 0x63, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 
44200
  0x65, 0x72, 0x27, 0x73, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x2E, 0x20, 0x52, 0x65, 0x74, 
44201
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 
44202
  0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x87, 0xBB, 0xD3, 0x03, 0xDA, 0x03, 
44203
  0xD2, 0x03, 0x00, 0xDA, 0x83, 0x40, 0x80, 0xC7, 0x01, 0xDA, 0x06, 0xDA, 0x87, 0xBC, 0xDA, 0x08, 
44204
  0xCE, 0x80, 0x85, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 0x20, 0x63, 
44205
  0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 
44206
  0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x2C, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x20, 0x62, 
44207
  0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x65, 0x6E, 0x6F, 0x75, 0x67, 
44208
  0x68, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 
44209
  0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x60, 0x20, 
44210
  0x62, 0x79, 0x74, 0x65, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 
44211
  0x20, 0x6E, 0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x6C, 
44212
  0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x30, 0x2E, 0xDA, 0x85, 0x5E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
44213
  0x03, 0x00, 0xDA, 0x18, 0x88, 0x4D, 0x01, 0xDA, 0x06, 0xDA, 0x85, 0x5C, 0xDA, 0x08, 0xCE, 0x80, 
44214
  0x99, 0x28, 0x64, 0x65, 0x65, 0x70, 0x2D, 0x6E, 0x6F, 0x74, 0x3D, 0x20, 0x78, 0x20, 0x79, 0x29, 
44215
  0x0A, 0x0A, 0x4C, 0x69, 0x6B, 0x65, 0x20, 0x60, 0x6E, 0x6F, 0x74, 0x3D, 0x60, 0x2C, 0x20, 0x62, 
44216
  0x75, 0x74, 0x20, 0x6D, 0x75, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 
44217
  0x20, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x73, 0x2C, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x73, 
44218
  0x2C, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x73, 0x29, 0x20, 0x61, 0x72, 0x65, 0x20, 0x63, 
44219
  0x6F, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x72, 0x65, 0x64, 0x0A, 0x65, 0x71, 0x75, 0x61, 0x6C, 0x20, 
44220
  0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x69, 0x64, 0x65, 
44221
  0x6E, 0x74, 0x69, 0x63, 0x61, 0x6C, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 
44222
  0x2E, 0x20, 0x4D, 0x75, 0x63, 0x68, 0x20, 0x73, 0x6C, 0x6F, 0x77, 0x65, 0x72, 0x20, 0x74, 0x68, 
44223
  0x61, 0x6E, 0x20, 0x60, 0x6E, 0x6F, 0x74, 0x3D, 0x60, 0x2E, 0xCF, 0x0E, 0x6D, 0x61, 0x74, 0x68, 
44224
  0x2F, 0x69, 0x6E, 0x74, 0x33, 0x32, 0x2D, 0x6D, 0x69, 0x6E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
44225
  0x00, 0xDA, 0x82, 0x9A, 0x81, 0x9C, 0x01, 0xDA, 0x06, 0xCD, 0x80, 0x00, 0x00, 0x00, 0xDA, 0x08, 
44226
  0xCE, 0x47, 0x54, 0x68, 0x65, 0x20, 0x6D, 0x69, 0x6E, 0x69, 0x6D, 0x75, 0x6D, 0x20, 0x63, 0x6F, 
44227
  0x6E, 0x74, 0x69, 0x67, 0x75, 0x6F, 0x75, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 
44228
  0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x62, 
44229
  0x79, 0x20, 0x61, 0x20, 0x33, 0x32, 0x20, 0x62, 0x69, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x65, 
44230
  0x64, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0xDA, 0x87, 0xBD, 0xD3, 0x03, 0xDA, 0x03, 
44231
  0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x80, 0xF5, 0x01, 0xDA, 0x06, 0xDA, 0x87, 0xBE, 0xDA, 0x08, 
44232
  0xCE, 0x6E, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x73, 0x65, 0x65, 0x64, 0x72, 0x61, 0x6E, 0x64, 
44233
  0x6F, 0x6D, 0x20, 0x73, 0x65, 0x65, 0x64, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x74, 0x68, 
44234
  0x65, 0x20, 0x73, 0x65, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 
44235
  0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x67, 0x65, 0x6E, 
44236
  0x65, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x2E, 0x20, 0x60, 0x73, 0x65, 0x65, 0x64, 0x60, 0x20, 0x73, 
44237
  0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 
44238
  0x67, 0x65, 0x72, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 
44239
  0xDA, 0x87, 0xBF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x84, 0x65, 0x01, 0xDA, 
44240
  0x06, 0xDA, 0x87, 0xC0, 0xDA, 0x08, 0xCE, 0x44, 0x28, 0x74, 0x61, 0x6B, 0x65, 0x2D, 0x75, 0x6E, 
44241
  0x74, 0x69, 0x6C, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x53, 
44242
  0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x28, 0x74, 0x61, 0x6B, 0x65, 0x2D, 0x77, 0x68, 
44243
  0x69, 0x6C, 0x65, 0x20, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 
44244
  0x70, 0x72, 0x65, 0x64, 0x29, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x60, 0x2E, 0xDA, 0x87, 0xCA, 0xD3, 
44245
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x83, 0x22, 0x01, 0xDA, 0x06, 0xDA, 0x87, 0xCB, 
44246
  0xDA, 0x08, 0xCE, 0x65, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3E, 0x3D, 0x20, 0x26, 
44247
  0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x45, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6C, 0x65, 0x6E, 0x74, 
44248
  0x20, 0x6F, 0x66, 0x20, 0x60, 0x3E, 0x3D, 0x60, 0x20, 0x62, 0x75, 0x74, 0x20, 0x75, 0x73, 0x69, 
44249
  0x6E, 0x67, 0x20, 0x70, 0x6F, 0x6C, 0x79, 0x6D, 0x6F, 0x72, 0x70, 0x68, 0x69, 0x63, 0x20, 0x60, 
44250
  0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x60, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 
44251
  0x20, 0x6F, 0x66, 0x20, 0x70, 0x72, 0x69, 0x6D, 0x69, 0x74, 0x69, 0x76, 0x65, 0x20, 0x63, 0x6F, 
44252
  0x6D, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x2E, 0xDA, 0x87, 0xCF, 0xD3, 0x03, 0xDA, 0x03, 
44253
  0xD2, 0x03, 0x00, 0xDA, 0x83, 0x14, 0x83, 0x2C, 0x01, 0xDA, 0x06, 0xDA, 0x87, 0xD0, 0xDA, 0x08, 
44254
  0xCE, 0x18, 0x54, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, 0x64, 0x20, 0x65, 
44255
  0x72, 0x72, 0x6F, 0x72, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0xDA, 0x87, 0xD1, 0xD3, 0x02, 0xDA, 
44256
  0x06, 0xDA, 0x87, 0x98, 0xDA, 0x08, 0xCE, 0x45, 0x28, 0x3C, 0x3D, 0x20, 0x26, 0x20, 0x78, 0x73, 
44257
  0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x73, 0x20, 0x69, 
44258
  0x73, 0x20, 0x69, 0x6E, 0x20, 0x6E, 0x6F, 0x6E, 0x2D, 0x64, 0x65, 0x73, 0x63, 0x65, 0x6E, 0x64, 
44259
  0x69, 0x6E, 0x67, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
44260
  0x6E, 0x73, 0x20, 0x61, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x2E, 0xDA, 0x87, 0xD2, 
44261
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x40, 0x8C, 0x9B, 0x01, 0xDA, 0x06, 0xDA, 0x87, 
44262
  0xD3, 0xDA, 0x08, 0xCE, 0x44, 0x28, 0x65, 0x76, 0x2F, 0x61, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 
44263
  0x2D, 0x72, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x72, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 0x29, 0x0A, 0x0A, 
44264
  0x41, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x6C, 
44265
  0x6F, 0x63, 0x6B, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x64, 0x2D, 0x77, 0x72, 
44266
  0x69, 0x74, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x2E, 0xDA, 0x87, 0xD4, 0xD3, 0x03, 0xDA, 0x03, 
44267
  0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8B, 0x83, 0x01, 0xDA, 0x06, 0xDA, 0x87, 0x8A, 0xDA, 0x08, 0xCE, 
44268
  0x80, 0x8B, 0x41, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x6C, 0x6F, 0x61, 
44269
  0x64, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x65, 0x74, 0x68, 0x6F, 0x64, 0x20, 0x6E, 0x61, 0x6D, 0x65, 
44270
  0x73, 0x20, 0x74, 0x6F, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x75, 0x6E, 
44271
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x0A, 0x54, 0x68, 0x69, 0x73, 0x20, 0x74, 0x61, 0x62, 
44272
  0x6C, 0x65, 0x20, 0x6C, 0x65, 0x74, 0x73, 0x20, 0x60, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 
44273
  0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x60, 0x20, 0x6C, 
44274
  0x6F, 0x61, 0x64, 0x20, 0x6D, 0x61, 0x6E, 0x79, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 
44275
  0x6E, 0x74, 0x20, 0x6B, 0x69, 0x6E, 0x64, 0x73, 0x0A, 0x6F, 0x66, 0x20, 0x66, 0x69, 0x6C, 0x65, 
44276
  0x73, 0x20, 0x61, 0x73, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 0x2E, 0xDA, 0x87, 0xD5, 
44277
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x40, 0x8B, 0xA6, 0x01, 0xDA, 0x06, 0xDA, 0x82, 
44278
  0xBE, 0xDA, 0x08, 0xCE, 0x82, 0xFA, 0x28, 0x65, 0x76, 0x2F, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 
44279
  0x20, 0x6D, 0x61, 0x69, 0x6E, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
44280
  0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6F, 
44281
  0x72, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x60, 0x6D, 0x61, 0x69, 0x6E, 0x60, 0x20, 0x69, 
44282
  0x6E, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6E, 
44283
  0x67, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2C, 
44284
  0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x70, 0x61, 0x73, 0x73, 
44285
  0x69, 0x6E, 0x67, 0x20, 0x60, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x72, 
44286
  0x65, 0x73, 0x75, 0x6D, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 
44287
  0x70, 0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 0x65, 0x72, 0x20, 0x60, 0x6D, 0x61, 0x69, 0x6E, 0x60, 
44288
  0x20, 0x63, 0x61, 0x6E, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x62, 0x65, 0x20, 0x61, 
44289
  0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 
44290
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x63, 0x63, 0x65, 0x70, 
44291
  0x74, 0x73, 0x20, 0x30, 0x20, 0x6F, 0x72, 0x20, 0x31, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 
44292
  0x6E, 0x74, 0x73, 0x2E, 0x20, 0x55, 0x6E, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x60, 0x65, 0x76, 0x2F, 
44293
  0x67, 0x6F, 0x60, 0x2C, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 
44294
  0x6F, 0x6E, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x20, 
44295
  0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 
44296
  0x72, 0x20, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x68, 0x72, 0x65, 
44297
  0x61, 0x64, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x2E, 0x20, 
44298
  0x49, 0x66, 0x20, 0x79, 0x6F, 0x75, 0x20, 0x77, 0x61, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x72, 
44299
  0x75, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x77, 0x69, 
44300
  0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x6F, 
44301
  0x72, 0x20, 0x61, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x2C, 0x20, 0x70, 0x61, 0x73, 0x73, 
44302
  0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x3A, 0x6E, 0x60, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x20, 0x74, 
44303
  0x6F, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x6D, 0x6D, 
44304
  0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x6C, 0x79, 0x2E, 0x20, 0x4F, 0x74, 0x68, 0x65, 0x72, 0x77, 
44305
  0x69, 0x73, 0x65, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 
44306
  0x2E, 0x20, 0x41, 0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x66, 0x6C, 0x61, 0x67, 
44307
  0x73, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x6E, 0x60, 0x20, 0x2D, 0x20, 0x72, 0x65, 0x74, 
44308
  0x75, 0x72, 0x6E, 0x20, 0x69, 0x6D, 0x6D, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x6C, 0x79, 0x0A, 
44309
  0x2A, 0x20, 0x60, 0x3A, 0x74, 0x60, 0x20, 0x2D, 0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 
44310
  0x20, 0x74, 0x61, 0x73, 0x6B, 0x2D, 0x69, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
44311
  0x6E, 0x65, 0x77, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x76, 0x61, 
44312
  0x6C, 0x75, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x61, 0x73, 0x6B, 0x2D, 0x69, 0x64, 
44313
  0x20, 0x69, 0x73, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x6D, 0x65, 
44314
  0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 
44315
  0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6F, 0x72, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 
44316
  0x2E, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x61, 0x60, 0x20, 0x2D, 0x20, 0x64, 0x6F, 0x6E, 0x27, 0x74, 
44317
  0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 0x72, 
44318
  0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 
44319
  0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x28, 0x70, 0x65, 0x72, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x6E, 
44320
  0x63, 0x65, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6D, 0x69, 0x7A, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x29, 
44321
  0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x63, 0x60, 0x20, 0x2D, 0x20, 0x64, 0x6F, 0x6E, 0x27, 0x74, 0x20, 
44322
  0x63, 0x6F, 0x70, 0x79, 0x20, 0x63, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x72, 
44323
  0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 
44324
  0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x28, 0x70, 0x65, 0x72, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x6E, 
44325
  0x63, 0x65, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6D, 0x69, 0x7A, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x29, 
44326
  0xDA, 0x87, 0xD6, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x84, 0xD8, 0x82, 0x91, 0x01, 
44327
  0xDA, 0x06, 0xDA, 0x82, 0x4A, 0xDA, 0x08, 0xCE, 0x4E, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 
44328
  0x63, 0x61, 0x6E, 0x2D, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x3F, 0x20, 0x66, 0x69, 0x62, 0x65, 
44329
  0x72, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x61, 0x20, 0x66, 
44330
  0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x66, 0x69, 0x6E, 0x69, 0x73, 0x68, 0x65, 0x64, 
44331
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 
44332
  0x65, 0x73, 0x75, 0x6D, 0x65, 0x64, 0x2E, 0xDA, 0x82, 0x25, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
44333
  0x00, 0xDA, 0x18, 0x89, 0x84, 0x01, 0xDA, 0x06, 0xDA, 0x81, 0xD9, 0xDA, 0x08, 0xCE, 0x85, 0x6A, 
44334
  0x28, 0x72, 0x75, 0x6E, 0x2D, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x20, 0x6F, 0x70, 0x74, 
44335
  0x73, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x61, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 
44336
  0x74, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 
44337
  0x73, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x69, 0x6E, 
44338
  0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 
44339
  0x0A, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x6E, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6C, 0x61, 0x74, 0x65, 
44340
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x63, 
44341
  0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 
44342
  0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x0A, 0x52, 0x65, 0x74, 0x75, 
44343
  0x72, 0x6E, 0x73, 0x20, 0x60, 0x28, 0x69, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 
44344
  0x6D, 0x65, 0x6E, 0x74, 0x20, 0x3A, 0x65, 0x78, 0x69, 0x74, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 
44345
  0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x29, 0x60, 0x20, 0x77, 
44346
  0x68, 0x65, 0x6E, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x2E, 0x0A, 0x60, 0x6F, 
44347
  0x70, 0x74, 0x73, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 
44348
  0x6F, 0x72, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x6F, 0x70, 0x74, 
44349
  0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 
44350
  0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x73, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x73, 
44351
  0x3A, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x60, 0x3A, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0x73, 0x60, 
44352
  0x20, 0x2D, 0x2D, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x62, 0x61, 0x63, 0x6B, 0x20, 0x74, 0x6F, 0x20, 
44353
  0x72, 0x65, 0x61, 0x64, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 
44354
  0x65, 0x72, 0x20, 0x2D, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 
44355
  0x67, 0x65, 0x74, 0x6C, 0x69, 0x6E, 0x65, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x60, 0x3A, 0x6F, 
44356
  0x6E, 0x2D, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x60, 0x20, 0x2D, 
44357
  0x2D, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x62, 0x61, 0x63, 0x6B, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 
44358
  0x70, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x73, 0x20, 0x2D, 0x20, 
44359
  0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x62, 0x61, 0x64, 0x2D, 0x70, 
44360
  0x61, 0x72, 0x73, 0x65, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x60, 0x3A, 0x65, 0x6E, 0x76, 0x60, 
44361
  0x20, 0x2D, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 
44362
  0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x61, 
44363
  0x67, 0x61, 0x69, 0x6E, 0x73, 0x74, 0x20, 0x2D, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 
44364
  0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 
44365
  0x65, 0x6E, 0x76, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x60, 0x3A, 0x73, 0x6F, 0x75, 0x72, 0x63, 
44366
  0x65, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x70, 0x61, 0x74, 
44367
  0x68, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x62, 0x65, 0x74, 0x74, 0x65, 0x72, 0x20, 0x65, 0x72, 0x72, 
44368
  0x6F, 0x72, 0x73, 0x20, 0x28, 0x75, 0x73, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 
44369
  0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6E, 0x6F, 0x6E, 0x2D, 0x70, 0x61, 0x74, 0x68, 0x73, 0x29, 
44370
  0x20, 0x2D, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x69, 
44371
  0x73, 0x20, 0x3A, 0x3C, 0x61, 0x6E, 0x6F, 0x6E, 0x79, 0x6D, 0x6F, 0x75, 0x73, 0x3E, 0x0A, 0x0A, 
44372
  0x20, 0x20, 0x2A, 0x20, 0x60, 0x3A, 0x6F, 0x6E, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 
44373
  0x2D, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x62, 
44374
  0x61, 0x63, 0x6B, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x61, 
44375
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x73, 0x20, 0x2D, 0x20, 0x64, 0x65, 0x66, 
44376
  0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x62, 0x61, 0x64, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 
44377
  0x69, 0x6C, 0x65, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x60, 0x3A, 0x6F, 0x6E, 0x2D, 0x63, 0x6F, 
44378
  0x6D, 0x70, 0x69, 0x6C, 0x65, 0x2D, 0x77, 0x61, 0x72, 0x6E, 0x69, 0x6E, 0x67, 0x60, 0x20, 0x2D, 
44379
  0x2D, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x62, 0x61, 0x63, 0x6B, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 
44380
  0x6E, 0x79, 0x20, 0x6C, 0x69, 0x6E, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 
44381
  0x20, 0x2D, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x77, 0x61, 
44382
  0x72, 0x6E, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 
44383
  0x60, 0x3A, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x6F, 0x72, 0x60, 0x20, 0x2D, 0x2D, 0x20, 
44384
  0x63, 0x61, 0x6C, 0x6C, 0x62, 0x61, 0x63, 0x6B, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x65, 0x78, 
44385
  0x65, 0x63, 0x75, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x75, 0x6E, 0x6B, 0x73, 0x2E, 0x20, 0x53, 
44386
  0x69, 0x67, 0x6E, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x28, 0x65, 0x76, 0x61, 
44387
  0x6C, 0x75, 0x61, 0x74, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x75, 0x6E, 0x6B, 0x20, 0x73, 0x6F, 0x75, 
44388
  0x72, 0x63, 0x65, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6E, 0x76, 0x20, 0x77, 0x68, 0x65, 0x72, 
44389
  0x65, 0x29, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x60, 0x3A, 0x6F, 0x6E, 0x2D, 0x73, 0x74, 0x61, 
44390
  0x74, 0x75, 0x73, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x62, 0x61, 0x63, 0x6B, 
44391
  0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x73, 
44392
  0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x64, 0x20, 0x2D, 0x20, 0x64, 0x65, 0x66, 
44393
  0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x73, 0x74, 
44394
  0x61, 0x63, 0x6B, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2E, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x60, 
44395
  0x3A, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2D, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x60, 0x20, 0x2D, 0x2D, 
44396
  0x20, 0x77, 0x68, 0x61, 0x74, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x77, 
44397
  0x72, 0x61, 0x70, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x61, 0x74, 
44398
  0x69, 0x6F, 0x6E, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x77, 0x69, 0x74, 0x68, 0x2E, 0x20, 
44399
  0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x3A, 0x69, 0x61, 0x2E, 0x0A, 
44400
  0x0A, 0x20, 0x20, 0x2A, 0x20, 0x60, 0x3A, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x65, 0x72, 0x60, 
44401
  0x20, 0x2D, 0x2D, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 
44402
  0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 
44403
  0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x6F, 0x6E, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 
44404
  0x74, 0x6F, 0x70, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x62, 
44405
  0x65, 0x66, 0x6F, 0x72, 0x65, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x65, 0x69, 0x6E, 0x67, 0x20, 
44406
  0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x64, 0x2E, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x60, 
44407
  0x3A, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x70, 0x72, 0x6F, 0x76, 
44408
  0x69, 0x64, 0x65, 0x20, 0x61, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6F, 0x6D, 0x20, 0x70, 0x61, 0x72, 
44409
  0x73, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 0x65, 
44410
  0x6E, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x69, 0x6E, 0x74, 
44411
  0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, 0x61, 0x73, 0x20, 0x4A, 0x61, 0x6E, 0x65, 0x74, 0x27, 
44412
  0x73, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x75, 0x69, 0x6C, 0x74, 0x2D, 0x69, 0x6E, 0x20, 0x70, 
44413
  0x61, 0x72, 0x73, 0x65, 0x72, 0x2E, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x60, 0x3A, 0x72, 0x65, 
44414
  0x61, 0x64, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 
44415
  0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x67, 0x65, 0x74, 0x20, 
44416
  0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x2C, 0x20, 0x63, 
44417
  0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x60, 0x28, 0x72, 0x65, 0x61, 
44418
  0x64, 0x20, 0x65, 0x6E, 0x76, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x29, 0x60, 0x2E, 0x0A, 
44419
  0x20, 0x20, 0x20, 0x20, 0x4F, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x20, 0x61, 0x6C, 
44420
  0x6C, 0x20, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x2E, 0xDA, 0x87, 0xD7, 0xD3, 0x04, 0xDA, 
44421
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8E, 0xAB, 0x03, 0xDA, 0x06, 0xDA, 0x87, 0xD8, 0xDA, 0x08, 
44422
  0xCE, 0x62, 0x28, 0x66, 0x66, 0x69, 0x2F, 0x64, 0x65, 0x66, 0x62, 0x69, 0x6E, 0x64, 0x20, 0x6E, 
44423
  0x61, 0x6D, 0x65, 0x20, 0x72, 0x65, 0x74, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x20, 0x26, 0x20, 0x62, 
44424
  0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x62, 
44425
  0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6E, 0x61, 0x74, 0x69, 
44426
  0x76, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x69, 0x6E, 0x20, 
44427
  0x61, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x69, 0x65, 0x6E, 0x74, 0x20, 0x6D, 0x61, 0x6E, 
44428
  0x6E, 0x65, 0x72, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x87, 0xFE, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
44429
  0x00, 0xDA, 0x12, 0x82, 0x27, 0x01, 0xDA, 0x06, 0xDA, 0x87, 0xFF, 0xDA, 0x08, 0xCE, 0x81, 0xCF, 
44430
  0x28, 0x6E, 0x65, 0x74, 0x2F, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6F, 0x77, 0x6E, 0x20, 0x73, 0x74, 
44431
  0x72, 0x65, 0x61, 0x6D, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x29, 0x0A, 
44432
  0x0A, 0x53, 0x74, 0x6F, 0x70, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x75, 0x6E, 0x69, 0x63, 0x61, 0x74, 
44433
  0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, 0x6F, 0x63, 0x6B, 
44434
  0x65, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x67, 0x72, 0x61, 0x63, 0x65, 0x66, 0x75, 0x6C, 
44435
  0x20, 0x6D, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x2C, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 
44436
  0x69, 0x6E, 0x20, 0x62, 0x6F, 0x74, 0x68, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 
44437
  0x6E, 0x73, 0x20, 0x6F, 0x72, 0x20, 0x6A, 0x75, 0x73, 0x74, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 
44438
  0x6E, 0x67, 0x2F, 0x77, 0x72, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 
44439
  0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 
44440
  0x60, 0x6D, 0x6F, 0x64, 0x65, 0x60, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 0x65, 0x72, 
44441
  0x20, 0x63, 0x6F, 0x6E, 0x74, 0x72, 0x6F, 0x6C, 0x73, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 
44442
  0x63, 0x6F, 0x6D, 0x6D, 0x75, 0x6E, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 
44443
  0x20, 0x73, 0x74, 0x6F, 0x70, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6F, 0x63, 
44444
  0x6B, 0x65, 0x74, 0x2E, 0x20, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x77, 0x72, 0x60, 0x20, 0x69, 
44445
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x61, 0x6E, 
44446
  0x64, 0x20, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x62, 0x6F, 0x74, 0x68, 0x20, 
44447
  0x72, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x64, 0x61, 0x74, 0x61, 
44448
  0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6F, 0x63, 0x6B, 0x65, 0x74, 
44449
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x77, 0x72, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x65, 0x77, 
44450
  0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6F, 0x63, 
44451
  0x6B, 0x65, 0x74, 0x2E, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x72, 0x60, 0x20, 0x64, 0x69, 0x73, 0x61, 
44452
  0x62, 0x6C, 0x65, 0x73, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x65, 0x77, 
44453
  0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 
44454
  0x6F, 0x63, 0x6B, 0x65, 0x74, 0x2E, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x77, 0x60, 0x20, 0x64, 0x69, 
44455
  0x73, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x77, 0x72, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x64, 0x61, 
44456
  0x74, 0x61, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6F, 0x63, 0x6B, 0x65, 0x74, 
44457
  0x2E, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 
44458
  0x72, 0x69, 0x67, 0x69, 0x6E, 0x61, 0x6C, 0x20, 0x73, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0x2E, 0xDA, 
44459
  0x88, 0x00, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x80, 0xB1, 0x01, 0xDA, 0x06, 
44460
  0xDA, 0x88, 0x01, 0xDA, 0x08, 0xCE, 0x2D, 0x28, 0x63, 0x6F, 0x6D, 0x6D, 0x65, 0x6E, 0x74, 0x20, 
44461
  0x26, 0x29, 0x0A, 0x0A, 0x49, 0x67, 0x6E, 0x6F, 0x72, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
44462
  0x62, 0x6F, 0x64, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 
44463
  0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x3D, 0xCB, 0xCF, 0x11, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x2F, 0x63, 
44464
  0x6F, 0x6E, 0x66, 0x69, 0x67, 0x2D, 0x62, 0x69, 0x74, 0x73, 0xD3, 0x02, 0xDA, 0x06, 0x01, 0xDA, 
44465
  0x08, 0xCE, 0x7E, 0x54, 0x68, 0x65, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x20, 0x73, 0x65, 0x74, 0x20, 
44466
  0x6F, 0x66, 0x20, 0x63, 0x6F, 0x6E, 0x66, 0x69, 0x67, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 
44467
  0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x63, 0x6F, 0x6E, 0x66, 
44468
  0x2E, 0x68, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 
44469
  0x20, 0x74, 0x6F, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x61, 0x74, 
44470
  0x69, 0x76, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 
44471
  0x63, 0x6F, 0x6D, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 
44472
  0x74, 0x68, 0x65, 0x20, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 
44473
  0x2E, 0xDA, 0x88, 0x03, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x82, 0x6D, 0x01, 
44474
  0xDA, 0x06, 0xDA, 0x88, 0x04, 0xDA, 0x08, 0xCE, 0x7D, 0x28, 0x74, 0x61, 0x62, 0x73, 0x65, 0x71, 
44475
  0x20, 0x68, 0x65, 0x61, 0x64, 0x20, 0x6B, 0x65, 0x79, 0x2D, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x26, 
44476
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2D, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x53, 0x69, 
44477
  0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x6C, 0x6F, 0x6F, 0x70, 0x60, 0x2C, 
44478
  0x20, 0x62, 0x75, 0x74, 0x20, 0x61, 0x63, 0x63, 0x75, 0x6D, 0x75, 0x6C, 0x61, 0x74, 0x65, 0x73, 
44479
  0x20, 0x6B, 0x65, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 
44480
  0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x0A, 0x53, 
44481
  0x65, 0x65, 0x20, 0x60, 0x6C, 0x6F, 0x6F, 0x70, 0x60, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x64, 0x65, 
44482
  0x74, 0x61, 0x69, 0x6C, 0x73, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x88, 0x0A, 0xD3, 0x03, 0xDA, 0x03, 
44483
  0xD2, 0x03, 0x00, 0xDA, 0x86, 0x46, 0x80, 0xF5, 0x01, 0xDA, 0x06, 0xDA, 0x81, 0x14, 0xDA, 0x08, 
44484
  0xCE, 0x80, 0xD3, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x66, 0x62, 0x72, 0x65, 0x61, 0x6B, 
44485
  0x20, 0x66, 0x75, 0x6E, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x70, 0x63, 0x29, 0x0A, 0x0A, 0x53, 
44486
  0x65, 0x74, 0x20, 0x61, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 
44487
  0x69, 0x6E, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 
44488
  0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x70, 0x63, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 
44489
  0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2C, 0x20, 0x77, 
44490
  0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x62, 0x79, 0x74, 0x65, 0x63, 
44491
  0x6F, 0x64, 0x65, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 
44492
  0x2E, 0x20, 0x66, 0x75, 0x6E, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 
44493
  0x69, 0x6F, 0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 
44494
  0x74, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 
44495
  0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 0x69, 0x73, 0x20, 
44496
  0x74, 0x6F, 0x6F, 0x20, 0x6C, 0x61, 0x72, 0x67, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x65, 0x67, 
44497
  0x61, 0x74, 0x69, 0x76, 0x65, 0x2E, 0xDA, 0x88, 0x0B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
44498
  0xDA, 0x82, 0xFA, 0x81, 0x51, 0x01, 0xDA, 0x06, 0xDA, 0x87, 0x5F, 0xDA, 0x08, 0xCE, 0x42, 0x28, 
44499
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x68, 0x61, 0x73, 0x2D, 0x73, 0x75, 0x66, 0x66, 0x69, 
44500
  0x78, 0x3F, 0x20, 0x73, 0x66, 0x78, 0x20, 0x73, 0x74, 0x72, 0x29, 0x0A, 0x0A, 0x54, 0x65, 0x73, 
44501
  0x74, 0x73, 0x20, 0x77, 0x68, 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, 0x60, 0x73, 0x74, 0x72, 0x60, 
44502
  0x20, 0x65, 0x6E, 0x64, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x73, 0x66, 0x78, 0x60, 
44503
  0x2E, 0xDA, 0x88, 0x0C, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x85, 0x7A, 0x01, 
44504
  0xDA, 0x06, 0xDA, 0x88, 0x0D, 0xDA, 0x08, 0xCE, 0x80, 0x90, 0x28, 0x77, 0x69, 0x74, 0x68, 0x2D, 
44505
  0x76, 0x61, 0x72, 0x73, 0x20, 0x76, 0x61, 0x72, 0x73, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 
44506
  0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x60, 0x62, 0x6F, 
44507
  0x64, 0x79, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x76, 0x61, 
44508
  0x72, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x76, 0x61, 0x72, 0x73, 0x60, 0x20, 0x74, 0x65, 0x6D, 0x70, 
44509
  0x6F, 0x72, 0x61, 0x72, 0x69, 0x6C, 0x79, 0x20, 0x62, 0x6F, 0x75, 0x6E, 0x64, 0x2E, 0x20, 0x53, 
44510
  0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x74, 0x75, 0x72, 0x65, 
44511
  0x20, 0x74, 0x6F, 0x0A, 0x60, 0x6C, 0x65, 0x74, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x65, 
44512
  0x61, 0x63, 0x68, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x75, 0x73, 0x74, 
44513
  0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x76, 0x61, 0x72, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x88, 0x24, 
44514
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x84, 0x6D, 0x01, 0xDA, 0x06, 0xDA, 0x88, 
44515
  0x25, 0xDA, 0x08, 0xCE, 0x80, 0xCE, 0x28, 0x74, 0x61, 0x6B, 0x65, 0x2D, 0x77, 0x68, 0x69, 0x6C, 
44516
  0x65, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x47, 0x69, 0x76, 
44517
  0x65, 0x6E, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2C, 0x20, 
44518
  0x74, 0x61, 0x6B, 0x65, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 
44519
  0x74, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2C, 
44520
  0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x62, 0x79, 0x74, 
44521
  0x65, 0x73, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x73, 0x61, 0x74, 
44522
  0x69, 0x73, 0x66, 0x79, 0x0A, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 
44523
  0x74, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x62, 0x6F, 0x72, 0x74, 0x20, 0x6F, 0x6E, 
44524
  0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x75, 0x72, 0x65, 0x2E, 0x20, 
44525
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 
44526
  0x72, 0x61, 0x79, 0x2C, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x73, 
44527
  0x74, 0x72, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 
44528
  0x65, 0x6C, 0x79, 0x2E, 0xDA, 0x88, 0x27, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 
44529
  0x86, 0xEE, 0x01, 0xDA, 0x06, 0xDA, 0x88, 0x28, 0xDA, 0x08, 0xCE, 0x85, 0x18, 0x28, 0x6D, 0x61, 
44530
  0x74, 0x63, 0x68, 0x20, 0x78, 0x20, 0x26, 0x20, 0x63, 0x61, 0x73, 0x65, 0x73, 0x29, 0x0A, 0x0A, 
44531
  0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6E, 0x67, 
44532
  0x2E, 0x20, 0x4D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 
44533
  0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x60, 0x78, 0x60, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6E, 0x73, 
44534
  0x74, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 
44535
  0x63, 0x61, 0x73, 0x65, 0x73, 0x2E, 0x0A, 0x45, 0x61, 0x63, 0x68, 0x20, 0x63, 0x61, 0x73, 0x65, 
44536
  0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x74, 0x6F, 
44537
  0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6E, 0x73, 0x74, 0x2C, 0x20, 
44538
  0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x6E, 0x20, 0x65, 
44539
  0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x0A, 0x65, 0x76, 0x61, 
44540
  0x6C, 0x75, 0x61, 0x74, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x61, 0x74, 
44541
  0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 
44542
  0x2E, 0x20, 0x20, 0x4C, 0x65, 0x67, 0x61, 0x6C, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 
44543
  0x73, 0x20, 0x61, 0x72, 0x65, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 
44544
  0x20, 0x2D, 0x2D, 0x20, 0x61, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x74, 0x68, 
44545
  0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x77, 
44546
  0x69, 0x6C, 0x6C, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x61, 0x6E, 0x79, 0x74, 0x68, 0x69, 
44547
  0x6E, 0x67, 0x2C, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x78, 0x60, 0x27, 
44548
  0x73, 0x0A, 0x20, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x61, 
44549
  0x74, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x61, 0x72, 0x72, 
44550
  0x61, 0x79, 0x20, 0x6F, 0x72, 0x20, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x20, 0x74, 0x75, 
44551
  0x70, 0x6C, 0x65, 0x20, 0x2D, 0x2D, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 
44552
  0x6F, 0x72, 0x20, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 
44553
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 
44554
  0x20, 0x69, 0x66, 0x0A, 0x20, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6F, 0x66, 0x20, 0x69, 0x74, 0x73, 
44555
  0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 
44556
  0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x72, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x69, 0x6E, 
44557
  0x67, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x78, 
44558
  0x60, 0x2E, 0x0A, 0x20, 0x20, 0x55, 0x73, 0x65, 0x20, 0x60, 0x26, 0x20, 0x72, 0x65, 0x73, 0x74, 
44559
  0x60, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 
44560
  0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x72, 0x20, 0x62, 0x72, 0x61, 0x63, 
44561
  0x6B, 0x65, 0x74, 0x65, 0x64, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x62, 
44562
  0x69, 0x6E, 0x64, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x6D, 0x61, 0x69, 0x6E, 0x69, 0x6E, 
44563
  0x67, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x72, 0x65, 0x73, 
44564
  0x74, 0x60, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 
44565
  0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x2D, 0x2D, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 
44566
  0x65, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 
44567
  0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x76, 0x61, 
44568
  0x6C, 0x75, 0x65, 0x73, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x77, 0x69, 0x74, 0x68, 0x0A, 
44569
  0x20, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x72, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x64, 
44570
  0x69, 0x6E, 0x67, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x78, 
44571
  0x60, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x2D, 0x2D, 0x20, 0x61, 
44572
  0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x77, 
44573
  0x69, 0x6C, 0x6C, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x69, 0x66, 0x20, 0x69, 0x74, 0x73, 
44574
  0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x6D, 
44575
  0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x0A, 
44576
  0x20, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x6C, 0x65, 0x6D, 
44577
  0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 
44578
  0x20, 0x61, 0x73, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 
44579
  0x6E, 0x64, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 
44580
  0x60, 0x5F, 0x60, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x2D, 0x2D, 0x20, 0x74, 0x68, 
44581
  0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x20, 0x63, 
44582
  0x61, 0x73, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x5F, 0x60, 0x20, 0x73, 
44583
  0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 
44584
  0x61, 0x20, 0x77, 0x69, 0x6C, 0x64, 0x63, 0x61, 0x72, 0x64, 0x0A, 0x20, 0x20, 0x74, 0x68, 0x61, 
44585
  0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x61, 0x6E, 0x79, 
44586
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x63, 
44587
  0x72, 0x65, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 
44588
  0x67, 0x2E, 0x0A, 0x0A, 0x57, 0x68, 0x69, 0x6C, 0x65, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 
44589
  0x6F, 0x6C, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
44590
  0x6F, 0x72, 0x64, 0x69, 0x6E, 0x61, 0x72, 0x69, 0x6C, 0x79, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 
44591
  0x20, 0x61, 0x6E, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 
44592
  0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x60, 0x28, 0x40, 0x20, 0x3C, 0x73, 0x79, 0x6D, 
44593
  0x3E, 0x29, 0x60, 0x2C, 0x0A, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x3C, 0x73, 0x79, 0x6D, 0x3E, 
44594
  0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2C, 0x20, 
44595
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6D, 0x70, 0x74, 0x20, 0x74, 0x6F, 0x20, 
44596
  0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x60, 0x78, 0x60, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6E, 0x73, 
44597
  0x74, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x0A, 0x61, 0x6C, 0x72, 0x65, 0x61, 0x64, 
44598
  0x79, 0x20, 0x62, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x3C, 0x73, 0x79, 0x6D, 
44599
  0x3E, 0x60, 0x2C, 0x20, 0x72, 0x61, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 
44600
  0x6D, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x62, 
44601
  0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x74, 0x2E, 0x0A, 0x0A, 0x41, 0x6E, 0x79, 0x20, 
44602
  0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x70, 0x61, 0x74, 0x74, 
44603
  0x65, 0x72, 0x6E, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x6D, 0x61, 
44604
  0x74, 0x63, 0x68, 0x20, 0x69, 0x66, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x65, 0x71, 0x75, 
44605
  0x61, 0x6C, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x78, 0x60, 0x2E, 0x0A, 0x51, 0x75, 0x6F, 0x74, 0x69, 
44606
  0x6E, 0x67, 0x20, 0x61, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x77, 0x69, 0x74, 
44607
  0x68, 0x20, 0x60, 0x27, 0x60, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 
44608
  0x74, 0x72, 0x65, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
44609
  0x61, 0x73, 0x20, 0x61, 0x20, 0x6C, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6C, 0x20, 0x76, 0x61, 0x6C, 
44610
  0x75, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x61, 0x67, 0x61, 0x69, 
44611
  0x6E, 0x73, 0x74, 0x2E, 0x0A, 0xDA, 0x3D, 0xCB, 0xDA, 0x86, 0xC4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
44612
  0x03, 0x00, 0xDA, 0x18, 0x88, 0x8E, 0x01, 0xDA, 0x06, 0xDA, 0x86, 0xC1, 0xDA, 0x08, 0xCE, 0x81, 
44613
  0x61, 0x28, 0x6D, 0x61, 0x63, 0x65, 0x78, 0x20, 0x78, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6F, 
44614
  0x6E, 0x2D, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x29, 0x0A, 0x0A, 0x45, 0x78, 0x70, 0x61, 
44615
  0x6E, 0x64, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x73, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 
44616
  0x74, 0x65, 0x6C, 0x79, 0x2E, 0x0A, 0x60, 0x6F, 0x6E, 0x2D, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 
44617
  0x67, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 
44618
  0x6C, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x62, 0x61, 0x63, 0x6B, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x77, 
44619
  0x68, 0x65, 0x6E, 0x65, 0x76, 0x65, 0x72, 0x20, 0x61, 0x20, 0x6E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 
44620
  0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 
44621
  0x67, 0x0A, 0x69, 0x73, 0x20, 0x65, 0x6E, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x65, 0x72, 0x65, 0x64, 
44622
  0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x73, 0x20, 0x6D, 0x61, 
44623
  0x63, 0x72, 0x6F, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x65, 0x61, 0x73, 0x69, 0x6C, 0x79, 0x20, 0x73, 
44624
  0x65, 0x65, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 
44625
  0x75, 0x73, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x0A, 0x61, 0x72, 
44626
  0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x62, 0x79, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 
44627
  0x6E, 0x67, 0x20, 0x60, 0x6D, 0x61, 0x63, 0x65, 0x78, 0x60, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 
44628
  0x65, 0x69, 0x72, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0x20, 0x54, 0x68, 
44629
  0x65, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x74, 0x73, 0x65, 0x6C, 0x66, 
44630
  0x20, 0x69, 0x73, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x0A, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 
44631
  0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x72, 
44632
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x60, 0x6F, 0x6E, 0x2D, 0x62, 
44633
  0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6E, 0x20, 0x74, 
44634
  0x68, 0x65, 0x20, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x65, 0x64, 0x20, 0x6D, 0x61, 0x63, 0x72, 
44635
  0x6F, 0x2E, 0xDA, 0x80, 0xB6, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x89, 0x1E, 
44636
  0x01, 0xDA, 0x06, 0xDA, 0x80, 0xB2, 0xDA, 0x08, 0xCE, 0x80, 0xB8, 0x28, 0x6D, 0x61, 0x6B, 0x65, 
44637
  0x2D, 0x65, 0x6E, 0x76, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 
44638
  0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 
44639
  0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x61, 0x62, 0x6C, 
44640
  0x65, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 
44641
  0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x0A, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 0x68, 0x65, 
44642
  0x72, 0x69, 0x74, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x66, 0x72, 0x6F, 
44643
  0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x65, 0x6E, 0x76, 
44644
  0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6E, 0x65, 
44645
  0x77, 0x0A, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
44646
  0x6E, 0x6F, 0x74, 0x20, 0x70, 0x6F, 0x6C, 0x6C, 0x75, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 
44647
  0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 
44648
  0x6E, 0x74, 0x2E, 0xDA, 0x88, 0x9D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x40, 0x8C, 
44649
  0x49, 0x01, 0xDA, 0x06, 0xDA, 0x88, 0x9E, 0xDA, 0x08, 0xCE, 0x80, 0xEC, 0x28, 0x65, 0x76, 0x2F, 
44650
  0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x64, 0x61, 0x74, 
44651
  0x61, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x29, 0x0A, 
44652
  0x0A, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x74, 0x6F, 0x20, 0x61, 
44653
  0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2C, 0x20, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 
44654
  0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 
44655
  0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 
44656
  0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x73, 0x2E, 
44657
  0x20, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 
44658
  0x61, 0x6C, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x65, 
44659
  0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2C, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x77, 0x68, 0x69, 
44660
  0x63, 0x68, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 
44661
  0x69, 0x6C, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2C, 
44662
  0x20, 0x6F, 0x72, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 
44663
  0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 
44664
  0x20, 0x66, 0x61, 0x69, 0x6C, 0x65, 0x64, 0x2E, 0xDA, 0x88, 0x9F, 0xD3, 0x02, 0xDA, 0x06, 0xDA, 
44665
  0x87, 0xCD, 0xDA, 0x08, 0xCE, 0x44, 0x28, 0x3E, 0x3D, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 
44666
  0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x73, 0x20, 0x69, 0x73, 0x20, 
44667
  0x69, 0x6E, 0x20, 0x6E, 0x6F, 0x6E, 0x2D, 0x61, 0x73, 0x63, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
44668
  0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
44669
  0x61, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x2E, 0xDA, 0x88, 0xA0, 0xD3, 0x03, 0xDA, 
44670
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8D, 0x30, 0x01, 0xDA, 0x06, 0xDA, 0x88, 0xA1, 0xDA, 0x08, 
44671
  0xCE, 0x63, 0x28, 0x64, 0x6F, 0x63, 0x2A, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x79, 0x6D, 
44672
  0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x6F, 0x63, 0x75, 0x6D, 
44673
  0x65, 0x6E, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x73, 
44674
  0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 
44675
  0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x46, 0x75, 
44676
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x60, 
44677
  0x64, 0x6F, 0x63, 0x60, 0x2E, 0xDA, 0x88, 0xDC, 0xD3, 0x02, 0xDA, 0x06, 0xDA, 0x88, 0xDD, 0xDA, 
44678
  0x08, 0xCE, 0x59, 0x28, 0x62, 0x6F, 0x72, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 
44679
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x69, 0x74, 0x2D, 0x77, 
44680
  0x69, 0x73, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x76, 0x61, 
44681
  0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x78, 0x73, 0x2E, 0x20, 0x45, 0x61, 0x63, 0x68, 
44682
  0x20, 0x78, 0x20, 0x69, 0x6E, 0x20, 0x78, 0x73, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 
44683
  0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2E, 0xDA, 0x88, 0xDF, 0xD3, 
44684
  0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x84, 0xD2, 0x01, 0xDA, 0x06, 0xDA, 0x88, 0xE0, 
44685
  0xDA, 0x08, 0xCE, 0x6B, 0x28, 0x74, 0x72, 0x61, 0x63, 0x65, 0x76, 0x20, 0x78, 0x29, 0x0A, 0x0A, 
44686
  0x50, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x20, 
44687
  0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x20, 0x64, 0x65, 
44688
  0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 
44689
  0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x64, 0x75, 
44690
  0x63, 0x65, 0x64, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x0A, 
44691
  0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x78, 0x2E, 0xDA, 
44692
  0x3D, 0xCB, 0xDA, 0x88, 0xED, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x80, 
44693
  0xBB, 0x01, 0xDA, 0x06, 0xDA, 0x88, 0xEE, 0xDA, 0x08, 0xCE, 0x80, 0xB8, 0x28, 0x6D, 0x61, 0x74, 
44694
  0x68, 0x2F, 0x72, 0x6E, 0x67, 0x2D, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x72, 0x6E, 0x67, 
44695
  0x20, 0x6E, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x62, 0x75, 0x66, 0x29, 0x0A, 0x0A, 0x47, 0x65, 
44696
  0x74, 0x20, 0x6E, 0x20, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 
44697
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6D, 0x20, 0x69, 0x6E, 
44698
  0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 
44699
  0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 
44700
  0x69, 0x66, 0x20, 0x6E, 0x6F, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 
44701
  0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 
44702
  0x69, 0x73, 0x65, 0x20, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 
44703
  0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 
44704
  0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 
44705
  0x66, 0x65, 0x72, 0x2E, 0xDA, 0x88, 0xEF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 
44706
  0xA9, 0x81, 0xB2, 0x01, 0xDA, 0x06, 0xDA, 0x85, 0x14, 0xDA, 0x08, 0xCE, 0x80, 0xD1, 0x28, 0x74, 
44707
  0x61, 0x62, 0x6C, 0x65, 0x20, 0x26, 0x20, 0x6B, 0x76, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 
44708
  0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 
44709
  0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x64, 0x69, 0x63, 
44710
  0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 
44711
  0x61, 0x6E, 0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 0x6B, 0x76, 0x73, 0x20, 
44712
  0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6B, 0x31, 
44713
  0x2C, 0x20, 0x76, 0x31, 0x2C, 0x20, 0x6B, 0x32, 0x2C, 0x20, 0x76, 0x32, 0x2C, 0x20, 0x6B, 0x33, 
44714
  0x2C, 0x20, 0x76, 0x33, 0x2C, 0x20, 0x2E, 0x2E, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6B, 0x76, 0x73, 
44715
  0x20, 0x68, 0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x64, 0x64, 0x20, 0x6E, 0x75, 0x6D, 0x62, 
44716
  0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2C, 0x20, 
44717
  0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 
44718
  0x20, 0x74, 0x68, 0x72, 0x6F, 0x77, 0x6E, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
44719
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 
44720
  0x88, 0xF0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x64, 0x01, 0xDA, 0x06, 0xDA, 
44721
  0x88, 0xF1, 0xDA, 0x08, 0xCE, 0x24, 0x28, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x3F, 0x20, 0x78, 
44722
  0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 
44723
  0x20, 0x61, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2E, 0xDA, 0x88, 0xF4, 0xD3, 0x04, 0xDA, 
44724
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x85, 0x06, 0x01, 0xDA, 0x06, 0xDA, 0x88, 0xF5, 0xDA, 0x08, 
44725
  0xCE, 0x80, 0xDC, 0x28, 0x2D, 0x3E, 0x3E, 0x20, 0x78, 0x20, 0x26, 0x20, 0x66, 0x6F, 0x72, 0x6D, 
44726
  0x73, 0x29, 0x0A, 0x0A, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x61, 
44727
  0x63, 0x72, 0x6F, 0x2E, 0x20, 0x49, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x73, 0x20, 0x78, 0x20, 0x61, 
44728
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
44729
  0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x6F, 
44730
  0x72, 0x6D, 0x0A, 0x69, 0x6E, 0x20, 0x60, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x60, 0x2C, 0x20, 0x61, 
44731
  0x6E, 0x64, 0x20, 0x69, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 
44732
  0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x6F, 
44733
  0x72, 0x6D, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x63, 0x6F, 
44734
  0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x0A, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 
44735
  0x61, 0x6D, 0x65, 0x20, 0x6D, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 
44736
  0x73, 0x6F, 0x20, 0x6F, 0x6E, 0x2E, 0x20, 0x55, 0x73, 0x65, 0x66, 0x75, 0x6C, 0x20, 0x66, 0x6F, 
44737
  0x72, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x69, 0x70, 
44738
  0x65, 0x6C, 0x69, 0x6E, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2E, 0xDA, 
44739
  0x3D, 0xCB, 0xDA, 0x88, 0xF7, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x84, 0xAE, 0x84, 
44740
  0xF4, 0x01, 0xDA, 0x06, 0xDA, 0x88, 0xF8, 0xDA, 0x08, 0xCE, 0x80, 0xD1, 0x28, 0x70, 0x61, 0x72, 
44741
  0x73, 0x65, 0x72, 0x2F, 0x63, 0x6C, 0x6F, 0x6E, 0x65, 0x20, 0x70, 0x29, 0x0A, 0x0A, 0x43, 0x72, 
44742
  0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x64, 0x65, 0x65, 0x70, 0x20, 0x63, 0x6C, 0x6F, 
44743
  0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x74, 
44744
  0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x69, 0x64, 0x65, 0x6E, 0x74, 0x69, 0x63, 0x61, 0x6C, 
44745
  0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x70, 0x75, 0x74, 0x20, 0x70, 0x61, 
44746
  0x72, 0x73, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x63, 0x6C, 0x6F, 0x6E, 0x65, 
44747
  0x64, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 
44748
  0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x69, 0x6E, 0x75, 0x65, 
44749
  0x20, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 
44750
  0x67, 0x6F, 0x6F, 0x64, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 
44751
  0x69, 0x66, 0x20, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x6C, 0x61, 0x74, 0x65, 0x72, 
44752
  0x20, 0x66, 0x61, 0x69, 0x6C, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
44753
  0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2E, 0xDA, 0x88, 0xF9, 
44754
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x40, 0x8C, 0x0D, 0x01, 0xDA, 0x06, 0xDA, 0x88, 
44755
  0xFA, 0xDA, 0x08, 0xCE, 0x80, 0x89, 0x28, 0x65, 0x76, 0x2F, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 
44756
  0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x65, 0x72, 0x72, 0x29, 0x0A, 0x0A, 0x43, 0x61, 0x6E, 
44757
  0x63, 0x65, 0x6C, 0x20, 0x61, 0x20, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x20, 
44758
  0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x76, 0x65, 
44759
  0x6E, 0x74, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x2E, 0x20, 0x44, 0x69, 0x66, 0x66, 0x65, 0x72, 0x73, 
44760
  0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x20, 0x69, 0x6E, 0x20, 
44761
  0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x74, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
44762
  0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x65, 0x64, 0x20, 0x66, 0x69, 0x62, 
44763
  0x65, 0x72, 0x20, 0x69, 0x6D, 0x6D, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x6C, 0x79, 0x2E, 0xCF, 
44764
  0x0C, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x69, 0x6E, 0x74, 0x2D, 0x6D, 0x69, 0x6E, 0xD3, 0x03, 0xDA, 
44765
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 0xA0, 0x01, 0xDA, 0x06, 0xC8, 0x00, 0x00, 0x00, 
44766
  0x00, 0x00, 0x00, 0x40, 0xC3, 0xDA, 0x08, 0xCE, 0x3F, 0x54, 0x68, 0x65, 0x20, 0x6D, 0x69, 0x6E, 
44767
  0x69, 0x6D, 0x75, 0x6D, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x69, 0x67, 0x75, 0x6F, 0x75, 0x73, 0x20, 
44768
  0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 
44769
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x64, 0x6F, 0x75, 0x62, 0x6C, 
44770
  0x65, 0x20, 0x28, 0x32, 0x5E, 0x35, 0x33, 0x29, 0xDA, 0x21, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
44771
  0x00, 0xDA, 0x18, 0x84, 0x2F, 0x01, 0xDA, 0x06, 0xDA, 0x1C, 0xDA, 0x08, 0xCE, 0x80, 0xBB, 0x28, 
44772
  0x69, 0x6E, 0x64, 0x65, 0x78, 0x2D, 0x6F, 0x66, 0x20, 0x78, 0x20, 0x69, 0x6E, 0x64, 0x20, 0x26, 
44773
  0x6F, 0x70, 0x74, 0x20, 0x64, 0x66, 0x6C, 0x74, 0x29, 0x0A, 0x0A, 0x46, 0x69, 0x6E, 0x64, 0x20, 
44774
  0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x61, 0x73, 
44775
  0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 
44776
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x78, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 
44777
  0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2C, 0x20, 0x61, 0x63, 0x74, 
44778
  0x69, 0x6E, 0x67, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x61, 0x20, 0x72, 0x65, 0x76, 0x65, 0x72, 
44779
  0x73, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x2E, 0x0A, 0x57, 0x69, 0x6C, 0x6C, 0x20, 
44780
  0x6E, 0x6F, 0x74, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x20, 0x61, 0x74, 0x20, 0x74, 0x61, 0x62, 0x6C, 
44781
  0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2E, 0x0A, 0x52, 0x65, 
44782
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x60, 0x64, 0x66, 0x6C, 0x74, 0x60, 0x20, 0x69, 0x66, 0x20, 
44783
  0x6E, 0x6F, 0x74, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2E, 0xDA, 0x88, 0xFB, 0xD3, 0x04, 0xDA, 
44784
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x85, 0x62, 0x01, 0xDA, 0x06, 0xDA, 0x88, 0xFC, 0xDA, 0x08, 
44785
  0xCE, 0x80, 0xE0, 0x28, 0x61, 0x73, 0x3F, 0x2D, 0x3E, 0x20, 0x78, 0x20, 0x61, 0x73, 0x20, 0x26, 
44786
  0x20, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x29, 0x0A, 0x0A, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 
44787
  0x66, 0x6F, 0x72, 0x6D, 0x73, 0x20, 0x74, 0x6F, 0x67, 0x65, 0x74, 0x68, 0x65, 0x72, 0x2C, 0x20, 
44788
  0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x61, 0x73, 0x60, 0x20, 0x69, 
44789
  0x6E, 0x20, 0x60, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 
44790
  0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x0A, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
44791
  0x70, 0x72, 0x65, 0x76, 0x69, 0x6F, 0x75, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x2E, 0x20, 0x54, 
44792
  0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x69, 0x73, 
44793
  0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x78, 0x2E, 0x20, 0x49, 0x66, 
44794
  0x20, 0x61, 0x6E, 0x79, 0x0A, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x6D, 0x65, 0x64, 0x69, 0x61, 0x74, 
44795
  0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x66, 0x61, 0x6C, 
44796
  0x73, 0x65, 0x79, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x3B, 
44797
  0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 
44798
  0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 
44799
  0x75, 0x65, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x89, 0x07, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
44800
  0xDA, 0x18, 0x8A, 0x7A, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0x08, 0xDA, 0x08, 0xCE, 0x77, 0x28, 0x63, 
44801
  0x6F, 0x6D, 0x70, 0x69, 0x66, 0x20, 0x63, 0x6E, 0x64, 0x20, 0x74, 0x72, 0x75, 0x20, 0x26, 0x6F, 
44802
  0x70, 0x74, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 
44803
  0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x60, 0x63, 
44804
  0x6E, 0x64, 0x60, 0x20, 0x61, 0x74, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x74, 
44805
  0x69, 0x6D, 0x65, 0x20, 0x2D, 0x2D, 0x20, 0x69, 0x66, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 
44806
  0x2C, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x60, 0x74, 0x72, 0x75, 0x60, 0x2C, 
44807
  0x20, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x60, 0x66, 
44808
  0x61, 0x6C, 0x73, 0x60, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x89, 0x0C, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 
44809
  0x03, 0x00, 0xDA, 0x18, 0x8A, 0x81, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0x0D, 0xDA, 0x08, 0xCE, 0x7B, 
44810
  0x28, 0x63, 0x6F, 0x6D, 0x70, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x63, 0x6E, 0x64, 0x20, 0x26, 0x20, 
44811
  0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x74, 0x68, 0x65, 
44812
  0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x60, 0x63, 0x6E, 0x64, 0x60, 
44813
  0x20, 0x61, 0x74, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 
44814
  0x20, 0x2D, 0x2D, 0x20, 0x69, 0x66, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 0x20, 0x63, 
44815
  0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x60, 0x28, 0x75, 0x70, 0x73, 0x63, 0x6F, 0x70, 0x65, 
44816
  0x20, 0x3B, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x60, 0x2C, 0x20, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x63, 
44817
  0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x89, 
44818
  0x0F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0xFA, 0x80, 0xC3, 0x01, 0xDA, 0x06, 
44819
  0xDA, 0x89, 0x10, 0xDA, 0x08, 0xCE, 0x52, 0x28, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x2F, 
44820
  0x73, 0x6C, 0x69, 0x63, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 
44821
  0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x65, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x53, 0x61, 0x6D, 
44822
  0x65, 0x20, 0x61, 0x73, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x73, 0x6C, 0x69, 0x63, 
44823
  0x65, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 
44824
  0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x2E, 0xDA, 0x89, 0x11, 0xD3, 0x03, 0xDA, 0x03, 
44825
  0xD2, 0x03, 0x00, 0xDA, 0x83, 0x14, 0x81, 0x2D, 0x01, 0xDA, 0x06, 0xDA, 0x80, 0xF8, 0xDA, 0x08, 
44826
  0xCE, 0x80, 0xAC, 0x28, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x66, 
44827
  0x29, 0x0A, 0x0A, 0x43, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 
44828
  0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x20, 0x61, 0x6C, 0x6C, 0x20, 
44829
  0x72, 0x65, 0x6C, 0x61, 0x74, 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 
44830
  0x73, 0x2E, 0x20, 0x57, 0x68, 0x65, 0x6E, 0x20, 0x79, 0x6F, 0x75, 0x20, 0x61, 0x72, 0x65, 0x20, 
44831
  0x64, 0x6F, 0x6E, 0x65, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x66, 
44832
  0x69, 0x6C, 0x65, 0x2C, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x69, 0x74, 0x20, 0x74, 0x6F, 
44833
  0x20, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x61, 0x20, 0x72, 0x65, 0x73, 0x6F, 0x75, 
44834
  0x72, 0x63, 0x65, 0x20, 0x6C, 0x65, 0x61, 0x6B, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6C, 0x65, 0x74, 
44835
  0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 
44836
  0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0xDA, 
44837
  0x89, 0x12, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0xCC, 0x01, 0xDA, 0x06, 
44838
  0xDA, 0x89, 0x13, 0xDA, 0x08, 0xCE, 0x80, 0xF7, 0x28, 0x6F, 0x73, 0x2F, 0x6D, 0x6B, 0x64, 0x69, 
44839
  0x72, 0x20, 0x70, 0x61, 0x74, 0x68, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 
44840
  0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x2E, 
44841
  0x20, 0x54, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 
44842
  0x65, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 
44843
  0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 
44844
  0x6F, 0x72, 0x79, 0x20, 0x69, 0x66, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2C, 
44845
  0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x69, 0x74, 0x20, 0x77, 0x69, 
44846
  0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x62, 0x73, 0x6F, 0x6C, 0x75, 0x74, 
44847
  0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
44848
  0x74, 0x72, 0x75, 0x65, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x69, 0x72, 0x65, 
44849
  0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x77, 0x61, 0x73, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 
44850
  0x64, 0x2C, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
44851
  0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x61, 0x6C, 0x72, 0x65, 0x61, 0x64, 
44852
  0x79, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x72, 
44853
  0x72, 0x6F, 0x72, 0x73, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2E, 0xDA, 
44854
  0x89, 0x14, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x85, 0x13, 0x01, 0xDA, 0x06, 
44855
  0xDA, 0x89, 0x15, 0xDA, 0x08, 0xCE, 0x81, 0x2A, 0x28, 0x2D, 0x3F, 0x3E, 0x20, 0x78, 0x20, 0x26, 
44856
  0x20, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x29, 0x0A, 0x0A, 0x53, 0x68, 0x6F, 0x72, 0x74, 0x20, 0x63, 
44857
  0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 
44858
  0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2E, 0x20, 0x49, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x73, 0x20, 
44859
  0x78, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x20, 
44860
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 
44861
  0x73, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x0A, 0x69, 0x6E, 0x20, 0x60, 0x66, 0x6F, 0x72, 0x6D, 
44862
  0x73, 0x60, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x69, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x73, 0x20, 
44863
  0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x66, 0x69, 0x72, 
44864
  0x73, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 
44865
  0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x0A, 0x69, 0x6E, 0x20, 
44866
  0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x6D, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x2C, 
44867
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x6F, 0x20, 0x6F, 0x6E, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 
44868
  0x70, 0x69, 0x70, 0x65, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 
44869
  0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x0A, 0x69, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x69, 
44870
  0x6E, 0x74, 0x65, 0x72, 0x6D, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 
44871
  0x65, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x0A, 0x55, 0x73, 0x65, 0x66, 0x75, 0x6C, 
44872
  0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 
44873
  0x70, 0x69, 0x70, 0x65, 0x6C, 0x69, 0x6E, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x64, 0x61, 0x74, 
44874
  0x61, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x89, 0x17, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
44875
  0x18, 0x8A, 0xF7, 0x01, 0xDA, 0x06, 0xDA, 0x87, 0x84, 0xDA, 0x08, 0xCE, 0x5A, 0x41, 0x20, 0x74, 
44876
  0x61, 0x62, 0x6C, 0x65, 0x2C, 0x20, 0x6D, 0x61, 0x70, 0x70, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x75, 
44877
  0x72, 0x72, 0x65, 0x6E, 0x74, 0x6C, 0x79, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 
44878
  0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2E, 
44879
  0x20, 0x55, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6E, 0x74, 
44880
  0x0A, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6C, 0x61, 0x72, 0x20, 0x64, 0x65, 0x70, 0x65, 0x6E, 0x64, 
44881
  0x65, 0x6E, 0x63, 0x69, 0x65, 0x73, 0x2E, 0xDA, 0x89, 0x18, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 
44882
  0x00, 0xDA, 0x18, 0x81, 0x35, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0x19, 0xDA, 0x08, 0xCE, 0x69, 0x28, 
44883
  0x77, 0x69, 0x74, 0x68, 0x2D, 0x73, 0x79, 0x6D, 0x73, 0x20, 0x73, 0x79, 0x6D, 0x73, 0x20, 0x26, 
44884
  0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 
44885
  0x73, 0x20, 0x60, 0x62, 0x6F, 0x64, 0x79, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x65, 0x61, 
44886
  0x63, 0x68, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x73, 0x79, 
44887
  0x6D, 0x73, 0x60, 0x20, 0x62, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x67, 
44888
  0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2C, 0x20, 0x75, 0x6E, 0x69, 0x71, 0x75, 0x65, 
44889
  0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x83, 0xAA, 0xD3, 0x03, 
44890
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x82, 0xD3, 0x01, 0xDA, 0x06, 0xDA, 0x83, 0xA7, 0xDA, 
44891
  0x08, 0xCE, 0x80, 0xC5, 0x28, 0x65, 0x78, 0x74, 0x72, 0x65, 0x6D, 0x65, 0x20, 0x6F, 0x72, 0x64, 
44892
  0x65, 0x72, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
44893
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x65, 0x78, 0x74, 0x72, 0x65, 
44894
  0x6D, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x61, 0x72, 0x67, 
44895
  0x73, 0x60, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
44896
  0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x60, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x60, 
44897
  0x2E, 0x0A, 0x60, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x60, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 
44898
  0x20, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x74, 0x77, 0x6F, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 
44899
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x72, 0x75, 0x65, 
44900
  0x20, 0x6F, 0x72, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x28, 0x61, 0x20, 0x63, 0x6F, 0x6D, 
44901
  0x70, 0x61, 0x72, 0x69, 0x73, 0x6F, 0x6E, 0x29, 0x2E, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
44902
  0x73, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x60, 0x61, 0x72, 0x67, 0x73, 0x60, 0x20, 
44903
  0x69, 0x73, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2E, 0xDA, 0x89, 0x1C, 0xD3, 0x04, 0xDA, 0x03, 
44904
  0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8A, 0x75, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0x1D, 0xDA, 0x08, 0xCE, 
44905
  0x5D, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x45, 
44906
  0x76, 0x61, 0x6C, 0x73, 0x20, 0x78, 0x20, 0x61, 0x74, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 
44907
  0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
44908
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x2E, 0x20, 0x53, 
44909
  0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x74, 0x6F, 0x70, 0x20, 
44910
  0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x75, 0x6E, 0x71, 0x75, 0x6F, 0x74, 0x65, 0x2E, 0xDA, 0x3D, 
44911
  0xCB, 0xDA, 0x89, 0x1F, 0xD3, 0x02, 0xDA, 0x06, 0xDA, 0x88, 0x75, 0xDA, 0x08, 0xCE, 0x80, 0xB1, 
44912
  0x28, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x64, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 
44913
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 
44914
  0x6F, 0x72, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x64, 0x61, 
44915
  0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x69, 0x6E, 0x20, 
44916
  0x63, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x61, 0x73, 
44917
  0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2E, 0x20, 0x46, 0x6F, 0x72, 
44918
  0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x61, 0x62, 
44919
  0x6C, 0x65, 0x73, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
44920
  0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x6B, 0x65, 0x79, 0x2D, 0x76, 
44921
  0x61, 0x6C, 0x75, 0x65, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 
44922
  0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 
44923
  0x2E, 0xDA, 0x89, 0x20, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 0xA9, 0x82, 0x2D, 
44924
  0x01, 0xDA, 0x06, 0xDA, 0x89, 0x21, 0xDA, 0x08, 0xCE, 0x80, 0xBF, 0x28, 0x68, 0x61, 0x73, 0x68, 
44925
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 0x61, 0x20, 
44926
  0x68, 0x61, 0x73, 0x68, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x76, 0x61, 0x6C, 
44927
  0x75, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x68, 0x61, 0x73, 0x68, 0x20, 0x69, 0x73, 0x20, 
44928
  0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 
44929
  0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x63, 0x68, 0x65, 0x61, 
44930
  0x70, 0x20, 0x68, 0x61, 0x73, 0x68, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
44931
  0x66, 0x6F, 0x72, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 
44932
  0x49, 0x66, 0x20, 0x74, 0x77, 0x6F, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x61, 0x72, 
44933
  0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x6C, 0x79, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6C, 
44934
  0x2C, 0x20, 0x74, 0x68, 0x65, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 0x77, 0x69, 0x6C, 0x6C, 
44935
  0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x68, 
44936
  0x61, 0x73, 0x68, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0xDA, 0x89, 0x22, 0xD3, 0x03, 0xDA, 
44937
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 0x0E, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0x23, 0xDA, 
44938
  0x08, 0xCE, 0x32, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x63, 0x6F, 0x73, 0x68, 0x20, 0x78, 0x29, 
44939
  0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x79, 
44940
  0x70, 0x65, 0x72, 0x62, 0x6F, 0x6C, 0x69, 0x63, 0x20, 0x63, 0x6F, 0x73, 0x69, 0x6E, 0x65, 0x20, 
44941
  0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x89, 0x24, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
44942
  0x84, 0xAE, 0x84, 0x0D, 0x01, 0xDA, 0x06, 0xDA, 0x85, 0xA9, 0xDA, 0x08, 0xCE, 0x80, 0xFF, 0x28, 
44943
  0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x70, 0x61, 0x72, 
44944
  0x73, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 
44945
  0x73, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x72, 
44946
  0x72, 0x6F, 0x72, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
44947
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x61, 
44948
  0x73, 0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 
44949
  0x68, 0x61, 0x74, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0x20, 0x4F, 0x74, 0x68, 0x65, 0x72, 
44950
  0x77, 0x69, 0x73, 0x65, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 
44951
  0x6C, 0x2E, 0x20, 0x41, 0x6C, 0x73, 0x6F, 0x20, 0x66, 0x6C, 0x75, 0x73, 0x68, 0x65, 0x73, 0x20, 
44952
  0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 
44953
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x71, 0x75, 0x65, 0x75, 
44954
  0x65, 0x2C, 0x20, 0x73, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x73, 0x75, 0x72, 0x65, 0x20, 0x74, 0x6F, 
44955
  0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, 0x74, 0x68, 0x69, 
44956
  0x6E, 0x67, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x71, 0x75, 0x65, 0x75, 0x65, 0x20, 
44957
  0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x60, 
44958
  0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x60, 0x2E, 0xDA, 0x89, 
44959
  0x25, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 0x46, 0x81, 0xA2, 0x01, 0xDA, 0x06, 
44960
  0xDA, 0x81, 0x07, 0xDA, 0x08, 0xCE, 0x80, 0xF9, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x73, 
44961
  0x74, 0x65, 0x70, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x78, 
44962
  0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x66, 
44963
  0x6F, 0x72, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6C, 0x20, 0x69, 
44964
  0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 
44965
  0x65, 0x20, 0x4A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x6D, 0x61, 0x63, 0x68, 0x69, 0x6E, 0x65, 0x2E, 
44966
  0x20, 0x43, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 
44967
  0x70, 0x61, 0x73, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
44968
  0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x70, 0x61, 0x73, 
44969
  0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 
44970
  0x69, 0x6E, 0x67, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
44971
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x76, 0x61, 
44972
  0x6C, 0x75, 0x65, 0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
44973
  0x75, 0x73, 0x75, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x62, 0x65, 0x20, 0x6E, 0x69, 0x6C, 0x2C, 0x20, 
44974
  0x61, 0x73, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x72, 
44975
  0x61, 0x69, 0x73, 0x65, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 
44976
  0x2E, 0xDA, 0x89, 0x26, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x88, 0x81, 0x01, 
44977
  0xDA, 0x06, 0xDA, 0x89, 0x27, 0xDA, 0x08, 0xCE, 0x80, 0xBE, 0x28, 0x74, 0x68, 0x61, 0x77, 0x20, 
44978
  0x64, 0x73, 0x29, 0x0A, 0x0A, 0x54, 0x68, 0x61, 0x77, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x62, 0x6A, 
44979
  0x65, 0x63, 0x74, 0x20, 0x28, 0x6D, 0x61, 0x6B, 0x65, 0x20, 0x69, 0x74, 0x20, 0x6D, 0x75, 0x74, 
44980
  0x61, 0x62, 0x6C, 0x65, 0x29, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x64, 0x6F, 0x20, 0x61, 0x20, 0x64, 
44981
  0x65, 0x65, 0x70, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x2C, 0x20, 0x6D, 0x61, 0x6B, 0x69, 0x6E, 0x67, 
44982
  0x0A, 0x63, 0x68, 0x69, 0x6C, 0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x61, 0x6C, 0x73, 
44983
  0x6F, 0x20, 0x6D, 0x75, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x43, 0x6C, 0x6F, 0x73, 0x75, 
44984
  0x72, 0x65, 0x73, 0x2C, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 
44985
  0x20, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x0A, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 
44986
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x63, 0x75, 
44987
  0x72, 0x73, 0x69, 0x76, 0x65, 0x6C, 0x79, 0x20, 0x74, 0x68, 0x61, 0x77, 0x65, 0x64, 0x2C, 0x20, 
44988
  0x62, 0x75, 0x74, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x79, 
44989
  0x70, 0x65, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0xDA, 0x89, 0x2C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
44990
  0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 0x23, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0x2D, 0xDA, 0x08, 0xCE, 
44991
  0x2E, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0x72, 0x66, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 
44992
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 
44993
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 
44994
  0x81, 0xCC, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x86, 0x13, 0x01, 0xDA, 0x06, 
44995
  0xDA, 0x81, 0xC8, 0xDA, 0x08, 0xCE, 0x80, 0xBF, 0x28, 0x6D, 0x65, 0x72, 0x67, 0x65, 0x2D, 0x69, 
44996
  0x6E, 0x74, 0x6F, 0x20, 0x74, 0x61, 0x62, 0x20, 0x26, 0x20, 0x63, 0x6F, 0x6C, 0x6C, 0x73, 0x29, 
44997
  0x0A, 0x0A, 0x4D, 0x65, 0x72, 0x67, 0x65, 0x73, 0x20, 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 
44998
  0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x2F, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x73, 
44999
  0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x60, 0x74, 0x61, 0x62, 
45000
  0x60, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x61, 0x70, 0x70, 0x65, 
45001
  0x61, 0x72, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x6E, 
45002
  0x20, 0x6F, 0x6E, 0x65, 0x0A, 0x63, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
45003
  0x69, 0x6E, 0x20, 0x60, 0x63, 0x6F, 0x6C, 0x6C, 0x73, 0x60, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x6E, 
45004
  0x20, 0x6C, 0x61, 0x74, 0x65, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x72, 0x65, 
45005
  0x70, 0x6C, 0x61, 0x63, 0x65, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6F, 
45006
  0x75, 0x73, 0x20, 0x6F, 0x6E, 0x65, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
45007
  0x20, 0x60, 0x74, 0x61, 0x62, 0x60, 0x2E, 0xDA, 0x89, 0x2E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
45008
  0x00, 0xDA, 0x83, 0x40, 0x81, 0x84, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0x2F, 0xDA, 0x08, 0xCE, 0x81, 
45009
  0x30, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x20, 0x62, 
45010
  0x79, 0x74, 0x65, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 
45011
  0x65, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x61, 0x20, 0x73, 0x6C, 
45012
  0x69, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 
45013
  0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x60, 0x73, 0x74, 0x61, 
45014
  0x72, 0x74, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x65, 0x6E, 0x64, 0x60, 0x2E, 0x20, 0x54, 0x68, 
45015
  0x65, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x69, 0x73, 0x20, 0x68, 0x61, 0x6C, 0x66, 0x20, 
45016
  0x6F, 0x70, 0x65, 0x6E, 0x2C, 0x20, 0x5B, 0x73, 0x74, 0x61, 0x72, 0x74, 0x2C, 0x20, 0x65, 0x6E, 
45017
  0x64, 0x29, 0x2E, 0x20, 0x49, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 
45018
  0x61, 0x6C, 0x73, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 
45019
  0x2C, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x64, 
45020
  0x65, 0x78, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 
45021
  0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 
45022
  0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x20, 0x42, 0x79, 0x20, 0x64, 
45023
  0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x2C, 0x20, 0x60, 0x73, 0x74, 0x61, 0x72, 0x74, 0x60, 0x20, 
45024
  0x69, 0x73, 0x20, 0x30, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x65, 0x6E, 0x64, 0x60, 0x20, 0x69, 
45025
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x6F, 0x66, 0x20, 
45026
  0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
45027
  0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
45028
  0x2E, 0xDA, 0x89, 0x30, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 0x46, 0x80, 0xDD, 
45029
  0x01, 0xDA, 0x06, 0xDA, 0x89, 0x31, 0xDA, 0x08, 0xCE, 0x81, 0x0C, 0x28, 0x64, 0x65, 0x62, 0x75, 
45030
  0x67, 0x2F, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x6C, 
45031
  0x69, 0x6E, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x73, 0x20, 0x61, 
45032
  0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x60, 
45033
  0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x60, 0x20, 0x61, 0x74, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 
45034
  0x65, 0x6E, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x6F, 0x6C, 0x75, 
45035
  0x6D, 0x6E, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 
45036
  0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 
45037
  0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 
45038
  0x6F, 0x6E, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x66, 0x6F, 0x75, 
45039
  0x6E, 0x64, 0x2E, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x65, 0x78, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x0A, 
45040
  0x0A, 0x09, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x20, 0x22, 
45041
  0x63, 0x6F, 0x72, 0x65, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x22, 0x20, 0x31, 0x30, 0x20, 0x34, 
45042
  0x29, 0x0A, 0x0A, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x73, 0x65, 0x74, 0x20, 0x61, 0x20, 0x62, 0x72, 
45043
  0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x61, 0x74, 0x20, 0x6C, 0x69, 0x6E, 0x65, 
45044
  0x20, 0x31, 0x30, 0x2C, 0x20, 0x34, 0x74, 0x68, 0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x20, 
45045
  0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x63, 0x6F, 0x72, 0x65, 
45046
  0x2E, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x2E, 0xDA, 0x89, 0x32, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
45047
  0x00, 0xDA, 0x84, 0xAE, 0x84, 0xD4, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0x33, 0xDA, 0x08, 0xCE, 0x82, 
45048
  0x9B, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x70, 
45049
  0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6B, 0x65, 0x79, 0x29, 0x0A, 
45050
  0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 
45051
  0x73, 0x65, 0x6E, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 
45052
  0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x61, 0x6C, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 
45053
  0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2E, 0x20, 0x49, 
45054
  0x66, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x69, 0x73, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 
45055
  0x64, 0x2C, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x6E, 0x66, 
45056
  0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x62, 0x6F, 0x75, 0x74, 0x20, 0x74, 
45057
  0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x74, 0x75, 
45058
  0x72, 0x6E, 0x65, 0x64, 0x2E, 0x20, 0x41, 0x6C, 0x6C, 0x6F, 0x77, 0x65, 0x64, 0x20, 0x6B, 0x65, 
45059
  0x79, 0x73, 0x20, 0x61, 0x72, 0x65, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x64, 0x65, 0x6C, 0x69, 
45060
  0x6D, 0x69, 0x74, 0x65, 0x72, 0x73, 0x20, 0x2D, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x62, 0x79, 
45061
  0x74, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 
45062
  0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 
45063
  0x73, 0x74, 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 
45064
  0x75, 0x72, 0x65, 0x2E, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x65, 0x78, 0x61, 0x6D, 0x70, 0x6C, 0x65, 
45065
  0x2C, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 
45066
  0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x69, 0x73, 0x20, 0x27, 0x28, 0x5B, 0x22, 0x27, 0x2C, 0x20, 
45067
  0x74, 0x68, 0x65, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 
45068
  0x69, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x69, 0x64, 0x64, 0x6C, 0x65, 
45069
  0x20, 0x6F, 0x66, 0x20, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x73, 0x74, 
45070
  0x72, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x73, 
45071
  0x71, 0x75, 0x61, 0x72, 0x65, 0x20, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x73, 0x20, 0x69, 
45072
  0x6E, 0x73, 0x69, 0x64, 0x65, 0x20, 0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x68, 0x65, 0x73, 0x65, 
45073
  0x73, 0x2E, 0x20, 0x43, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 
45074
  0x6F, 0x20, 0x61, 0x75, 0x67, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x61, 0x20, 0x52, 0x45, 0x50, 0x4C, 
45075
  0x20, 0x70, 0x72, 0x6F, 0x6D, 0x70, 0x74, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x66, 0x72, 0x61, 
45076
  0x6D, 0x65, 0x73, 0x20, 0x2D, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 
45077
  0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x72, 0x65, 
45078
  0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x20, 0x27, 0x66, 0x72, 0x61, 0x6D, 
45079
  0x65, 0x27, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 
45080
  0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2E, 0x20, 0x46, 0x72, 0x61, 0x6D, 0x65, 0x73, 0x20, 0x63, 
45081
  0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 
45082
  0x6F, 0x6E, 0x20, 0x61, 0x62, 0x6F, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 
45083
  0x72, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 
45084
  0x73, 0x69, 0x6F, 0x6E, 0x20, 0x62, 0x65, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 
45085
  0x64, 0x20, 0x61, 0x73, 0x20, 0x77, 0x65, 0x6C, 0x6C, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 
45086
  0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x65, 0x78, 
45087
  0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x6F, 0x6D, 
45088
  0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2D, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 
45089
  0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x5E, 0xD3, 0x03, 
45090
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x6F, 0x01, 0xDA, 0x06, 0xDA, 0x5B, 0xDA, 0x08, 0xCE, 
45091
  0x23, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 
45092
  0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 
45093
  0x72, 0x61, 0x79, 0x2E, 0xDA, 0x89, 0x34, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x85, 
45094
  0x6F, 0x81, 0x07, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0x35, 0xDA, 0x08, 0xCE, 0x81, 0x19, 0x28, 0x61, 
45095
  0x72, 0x72, 0x61, 0x79, 0x2F, 0x69, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x20, 0x61, 0x72, 0x72, 0x20, 
45096
  0x61, 0x74, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x49, 0x6E, 0x73, 0x65, 0x72, 0x74, 
45097
  0x20, 0x61, 0x6C, 0x6C, 0x20, 0x60, 0x78, 0x73, 0x60, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 
45098
  0x72, 0x72, 0x61, 0x79, 0x20, 0x60, 0x61, 0x72, 0x72, 0x60, 0x20, 0x61, 0x74, 0x20, 0x69, 0x6E, 
45099
  0x64, 0x65, 0x78, 0x20, 0x60, 0x61, 0x74, 0x60, 0x2E, 0x20, 0x60, 0x61, 0x74, 0x60, 0x20, 0x73, 
45100
  0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 
45101
  0x67, 0x65, 0x72, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6E, 0x20, 0x30, 0x20, 0x61, 0x6E, 
45102
  0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x6F, 0x66, 0x20, 
45103
  0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x20, 0x41, 0x20, 0x6E, 0x65, 0x67, 
45104
  0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 
45105
  0x60, 0x61, 0x74, 0x60, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 
45106
  0x62, 0x61, 0x63, 0x6B, 0x77, 0x61, 0x72, 0x64, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 
45107
  0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 
45108
  0x72, 0x61, 0x79, 0x2C, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 
45109
  0x6E, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x74, 0x20, 0x2D, 0x31, 0x20, 0x61, 
45110
  0x70, 0x70, 0x65, 0x6E, 0x64, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 
45111
  0x72, 0x61, 0x79, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
45112
  0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x89, 0x36, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
45113
  0x00, 0xDA, 0x86, 0x46, 0x80, 0xFF, 0x01, 0xDA, 0x06, 0xDA, 0x81, 0x29, 0xDA, 0x08, 0xCE, 0x47, 
45114
  0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x75, 0x6E, 0x66, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x20, 
45115
  0x66, 0x75, 0x6E, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x70, 0x63, 0x29, 0x0A, 0x0A, 0x55, 0x6E, 
45116
  0x73, 0x65, 0x74, 0x20, 0x61, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 
45117
  0x20, 0x73, 0x65, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 
45118
  0x66, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x2E, 0xDA, 0x89, 0x37, 0xD3, 0x02, 0xDA, 0x06, 0xDA, 0x89, 
45119
  0x38, 0xDA, 0x08, 0xCE, 0x30, 0x54, 0x68, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 
45120
  0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 
45121
  0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x70, 0x72, 0x6F, 
45122
  0x67, 0x72, 0x61, 0x6D, 0x2E, 0xDA, 0x89, 0x39, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 
45123
  0x11, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 
45124
  0x2E, 0x63, 0x80, 0xE1, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0x3A, 0xDA, 0x08, 0xCE, 0x56, 0x28, 0x73, 
45125
  0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x67, 0x65, 0x74, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x20, 0x73, 
45126
  0x74, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 
45127
  0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x73, 0x74, 
45128
  0x72, 0x75, 0x63, 0x74, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 
45129
  0x69, 0x74, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x6E, 0x27, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 
45130
  0x6F, 0x6E, 0x65, 0x2E, 0xDA, 0x82, 0x53, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 
45131
  0x7F, 0x01, 0xDA, 0x06, 0xDA, 0x82, 0x50, 0xDA, 0x08, 0xCE, 0x22, 0x28, 0x65, 0x6D, 0x70, 0x74, 
45132
  0x79, 0x3F, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 
45133
  0x20, 0x78, 0x73, 0x20, 0x69, 0x73, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2E, 0xDA, 0x89, 0x00, 
45134
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x85, 0x4B, 0x01, 0xDA, 0x06, 0xDA, 0x88, 
45135
  0xFE, 0xDA, 0x08, 0xCE, 0x66, 0x28, 0x70, 0x6F, 0x73, 0x74, 0x77, 0x61, 0x6C, 0x6B, 0x20, 0x66, 
45136
  0x20, 0x66, 0x6F, 0x72, 0x6D, 0x29, 0x0A, 0x0A, 0x44, 0x6F, 0x20, 0x61, 0x20, 0x70, 0x6F, 0x73, 
45137
  0x74, 0x2D, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x20, 0x74, 0x72, 0x61, 0x76, 0x65, 0x72, 0x73, 0x61, 
45138
  0x6C, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 
45139
  0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x60, 
45140
  0x28, 0x66, 0x20, 0x78, 0x29, 0x60, 0x0A, 0x6F, 0x6E, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, 0x20, 
45141
  0x76, 0x69, 0x73, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x89, 0x3B, 0xD3, 0x04, 
45142
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8D, 0x4C, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0x3C, 0xDA, 
45143
  0x08, 0xCE, 0x81, 0x60, 0x28, 0x64, 0x6F, 0x63, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x79, 
45144
  0x6D, 0x29, 0x0A, 0x0A, 0x53, 0x68, 0x6F, 0x77, 0x73, 0x20, 0x64, 0x6F, 0x63, 0x75, 0x6D, 0x65, 
45145
  0x6E, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 
45146
  0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2C, 0x20, 0x6F, 0x72, 
45147
  0x20, 0x63, 0x61, 0x6E, 0x20, 0x73, 0x68, 0x6F, 0x77, 0x20, 0x61, 0x20, 0x6C, 0x69, 0x73, 0x74, 
45148
  0x20, 0x6F, 0x66, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x62, 0x69, 
45149
  0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x2E, 0x0A, 0x49, 0x66, 0x20, 0x60, 0x73, 0x79, 0x6D, 0x60, 
45150
  0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2C, 0x20, 0x77, 0x69, 
45151
  0x6C, 0x6C, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x64, 0x6F, 0x63, 0x75, 
45152
  0x6D, 0x65, 0x6E, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 
45153
  0x61, 0x74, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x73, 
45154
  0x79, 0x6D, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x0A, 
45155
  0x6F, 0x72, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 
45156
  0x65, 0x64, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x73, 0x68, 0x6F, 0x77, 0x20, 0x61, 0x6C, 
45157
  0x6C, 0x20, 0x6C, 0x65, 0x78, 0x69, 0x63, 0x61, 0x6C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x64, 0x79, 
45158
  0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x69, 
45159
  0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x65, 0x6E, 
45160
  0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x0A, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 
45161
  0x6E, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 
45162
  0x20, 0x28, 0x61, 0x6C, 0x6C, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x77, 
45163
  0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x73, 0x68, 0x6F, 0x77, 0x6E, 0x20, 0x69, 0x66, 0x20, 
45164
  0x6E, 0x6F, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x73, 0x20, 0x67, 0x69, 0x76, 
45165
  0x65, 0x6E, 0x29, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x82, 0x05, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
45166
  0x00, 0xDA, 0x18, 0x89, 0x61, 0x01, 0xDA, 0x06, 0xDA, 0x81, 0xE4, 0xDA, 0x08, 0xCE, 0x52, 0x28, 
45167
  0x62, 0x61, 0x64, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x6D, 0x73, 0x67, 0x20, 
45168
  0x6D, 0x61, 0x63, 0x72, 0x6F, 0x66, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x26, 0x6F, 0x70, 
45169
  0x74, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x66, 
45170
  0x61, 0x75, 0x6C, 0x74, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 
45171
  0x20, 0x61, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 
45172
  0x2E, 0xDA, 0x89, 0x3E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x0A, 0x80, 0xEC, 
45173
  0x01, 0xDA, 0x06, 0xDA, 0x89, 0x2A, 0xDA, 0x08, 0xCE, 0x80, 0xA8, 0x28, 0x73, 0x74, 0x72, 0x75, 
45174
  0x63, 0x74, 0x2F, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x2D, 0x66, 0x6C, 0x61, 0x74, 0x74, 0x65, 0x6E, 
45175
  0x20, 0x73, 0x74, 0x29, 0x0A, 0x0A, 0x43, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x20, 0x61, 0x20, 
45176
  0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x70, 0x72, 0x6F, 0x74, 
45177
  0x6F, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 
45178
  0x63, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6E, 0x6F, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 
45179
  0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x62, 0x79, 0x20, 0x6D, 0x65, 0x72, 0x67, 0x69, 0x6E, 0x67, 
45180
  0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x70, 
45181
  0x61, 0x69, 0x72, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 
45182
  0x69, 0x76, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x69, 
45183
  0x6E, 0x74, 0x6F, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 0x72, 0x75, 
45184
  0x63, 0x74, 0x2E, 0xDA, 0x89, 0x3F, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x3B, 
45185
  0x01, 0xDA, 0x06, 0xDA, 0x89, 0x40, 0xDA, 0x08, 0xCE, 0x4A, 0x28, 0x64, 0x65, 0x66, 0x6D, 0x61, 
45186
  0x63, 0x72, 0x6F, 0x2D, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x26, 0x20, 0x6D, 0x6F, 0x72, 0x65, 
45187
  0x29, 0x0A, 0x0A, 0x44, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x20, 0x70, 0x72, 0x69, 0x76, 
45188
  0x61, 0x74, 0x65, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 
45189
  0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x78, 0x70, 0x6F, 0x72, 
45190
  0x74, 0x65, 0x64, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x89, 0x42, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
45191
  0x00, 0xDA, 0x18, 0x83, 0x5B, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0x43, 0xDA, 0x08, 0xCE, 0x80, 0xB3, 
45192
  0x28, 0x73, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 0x20, 0x26, 0x6F, 0x70, 0x74, 
45193
  0x20, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x3F, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 
45194
  0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x20, 
45195
  0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x6D, 0x6F, 
45196
  0x64, 0x69, 0x66, 0x79, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x6C, 0x64, 0x20, 
45197
  0x6F, 0x6E, 0x65, 0x2E, 0x0A, 0x49, 0x66, 0x20, 0x61, 0x20, 0x60, 0x62, 0x65, 0x66, 0x6F, 0x72, 
45198
  0x65, 0x3F, 0x60, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x20, 0x66, 
45199
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 
45200
  0x64, 0x65, 0x64, 0x2C, 0x20, 0x73, 0x6F, 0x72, 0x74, 0x73, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 
45201
  0x6E, 0x74, 0x73, 0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x61, 0x74, 0x2C, 0x0A, 
45202
  0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x75, 0x73, 0x65, 0x73, 0x20, 0x60, 
45203
  0x3C, 0x60, 0x2E, 0xDA, 0x88, 0xB4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8B, 
45204
  0xEA, 0x01, 0xDA, 0x06, 0xDA, 0x88, 0xA5, 0xDA, 0x08, 0xCE, 0x80, 0xC8, 0x28, 0x61, 0x6C, 0x6C, 
45205
  0x2D, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x65, 
45206
  0x6E, 0x76, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x61, 
45207
  0x6C, 0x6C, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6C, 
45208
  0x61, 0x62, 0x6C, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 
45209
  0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x73, 
45210
  0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x0A, 
45211
  0x66, 0x69, 0x62, 0x65, 0x72, 0x27, 0x73, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 
45212
  0x65, 0x6E, 0x74, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x60, 0x20, 
45213
  0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
45214
  0x6E, 0x6F, 0x74, 0x20, 0x73, 0x68, 0x6F, 0x77, 0x20, 0x69, 0x6E, 0x68, 0x65, 0x72, 0x69, 0x74, 
45215
  0x65, 0x64, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x0A, 0x28, 0x66, 0x72, 0x6F, 
45216
  0x6D, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 
45217
  0x65, 0x73, 0x29, 0x2E, 0xDA, 0x89, 0x45, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 
45218
  0x75, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0x46, 0xDA, 0x08, 0xCE, 0x31, 0x28, 0x64, 0x69, 0x63, 0x74, 
45219
  0x69, 0x6F, 0x6E, 0x61, 0x72, 0x79, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 
45220
  0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 
45221
  0x65, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2E, 0xDA, 0x82, 0xF3, 0xD3, 
45222
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x84, 0xF1, 0x01, 0xDA, 0x06, 0xDA, 0x82, 0xE7, 
45223
  0xDA, 0x08, 0xCE, 0x80, 0xB5, 0x28, 0x6B, 0x65, 0x65, 0x70, 0x2D, 0x73, 0x79, 0x6E, 0x74, 0x61, 
45224
  0x78, 0x21, 0x20, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x29, 
45225
  0x0A, 0x0A, 0x4C, 0x69, 0x6B, 0x65, 0x20, 0x60, 0x6B, 0x65, 0x65, 0x70, 0x2D, 0x73, 0x79, 0x6E, 
45226
  0x74, 0x61, 0x78, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x69, 0x66, 0x20, 0x60, 0x61, 0x66, 
45227
  0x74, 0x65, 0x72, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 
45228
  0x2C, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6F, 0x65, 0x72, 0x63, 0x65, 0x64, 0x20, 
45229
  0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2E, 0x0A, 0x55, 0x73, 
45230
  0x65, 0x66, 0x75, 0x6C, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 
45231
  0x20, 0x73, 0x79, 0x6E, 0x74, 0x61, 0x63, 0x74, 0x69, 0x63, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x72, 
45232
  0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x74, 0x72, 0x61, 0x6E, 
45233
  0x73, 0x66, 0x6F, 0x72, 0x6D, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x73, 0x74, 0x20, 
45234
  0x69, 0x6E, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x73, 0x2E, 0xDA, 0x89, 0x48, 0xD3, 0x04, 0xDA, 
45235
  0x84, 0x25, 0xCB, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x84, 0xBE, 0x01, 0xDA, 0x06, 0xDA, 
45236
  0x80, 0xC8, 0xDA, 0x08, 0xCE, 0x58, 0x45, 0x6E, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x20, 0x61, 0x20, 
45237
  0x62, 0x75, 0x69, 0x6C, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 
45238
  0x72, 0x20, 0x6F, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 
45239
  0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x75, 0x73, 0x65, 0x66, 0x75, 0x6C, 0x20, 0x66, 0x65, 0x61, 
45240
  0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 
45241
  0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x2E, 0xDA, 0x88, 
45242
  0xB7, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8B, 0xF1, 0x01, 0xDA, 0x06, 0xDA, 
45243
  0x88, 0xB5, 0xDA, 0x08, 0xCE, 0x80, 0xC7, 0x28, 0x61, 0x6C, 0x6C, 0x2D, 0x64, 0x79, 0x6E, 0x61, 
45244
  0x6D, 0x69, 0x63, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x20, 0x6C, 0x6F, 
45245
  0x63, 0x61, 0x6C, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x64, 0x79, 
45246
  0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x69, 
45247
  0x6E, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 
45248
  0x2E, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 
45249
  0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x0A, 0x66, 0x69, 0x62, 0x65, 0x72, 0x27, 
45250
  0x73, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x49, 
45251
  0x66, 0x20, 0x60, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 
45252
  0x74, 0x68, 0x79, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x73, 0x68, 
45253
  0x6F, 0x77, 0x20, 0x69, 0x6E, 0x68, 0x65, 0x72, 0x69, 0x74, 0x65, 0x64, 0x20, 0x62, 0x69, 0x6E, 
45254
  0x64, 0x69, 0x6E, 0x67, 0x73, 0x0A, 0x28, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x70, 0x72, 0x6F, 0x74, 
45255
  0x6F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x29, 0x2E, 0xDA, 0x89, 
45256
  0x49, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 0xA9, 0x81, 0x3F, 0x01, 0xDA, 0x06, 
45257
  0xDA, 0x88, 0xB8, 0xDA, 0x08, 0xCE, 0x80, 0xC9, 0x28, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 
45258
  0x65, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 
45259
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 
45260
  0x20, 0x68, 0x75, 0x6D, 0x61, 0x6E, 0x2D, 0x72, 0x65, 0x61, 0x64, 0x61, 0x62, 0x6C, 0x65, 0x20, 
45261
  0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x60, 
45262
  0x78, 0x60, 0x2E, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 
45263
  0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 
45264
  0x73, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x72, 0x65, 
45265
  0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 0x20, 
45266
  0x61, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
45267
  0x66, 0x72, 0x6F, 0x6D, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 
45268
  0x64, 0x65, 0x6E, 0x74, 0x69, 0x74, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x78, 0x60, 0x20, 0x63, 
45269
  0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6D, 0x69, 0x6E, 0x65, 0x64, 
45270
  0x2E, 0xDA, 0x89, 0x4A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x88, 0xF6, 0x01, 
45271
  0xDA, 0x06, 0xDA, 0x89, 0x4B, 0xDA, 0x08, 0xCE, 0x80, 0x8A, 0x54, 0x68, 0x65, 0x20, 0x64, 0x65, 
45272
  0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x61, 0x72, 0x20, 0x75, 0x73, 
45273
  0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x70, 0x65, 0x67, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x69, 
45274
  0x73, 0x20, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x61, 0x72, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 
45275
  0x73, 0x20, 0x73, 0x65, 0x76, 0x65, 0x72, 0x61, 0x6C, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 
45276
  0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x73, 0x0A, 0x74, 0x68, 0x61, 0x74, 0x20, 0x73, 
45277
  0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x6D, 0x61, 0x6B, 0x65, 0x20, 0x69, 0x74, 0x20, 0x65, 0x61, 
45278
  0x73, 0x69, 0x65, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x6D, 0x6F, 
45279
  0x72, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x78, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 
45280
  0x72, 0x6E, 0x73, 0x2E, 0xDA, 0x89, 0x7D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x12, 
45281
  0x83, 0x00, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0x7E, 0xDA, 0x08, 0xCE, 0x81, 0x16, 0x28, 0x6E, 0x65, 
45282
  0x74, 0x2F, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 
45283
  0x26, 0x6F, 0x70, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x29, 0x0A, 0x0A, 0x47, 
45284
  0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 
45285
  0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x20, 0x73, 0x65, 0x72, 0x76, 
45286
  0x65, 0x72, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 
45287
  0x77, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x75, 0x73, 0x75, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x62, 0x65, 
45288
  0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x6C, 0x6F, 0x6F, 
45289
  0x70, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x64, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 
45290
  0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x61, 0x6E, 
45291
  0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 
45292
  0x74, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2C, 0x20, 0x61, 0x66, 
45293
  0x74, 0x65, 0x72, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 
45294
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
45295
  0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x64, 0x75, 0x70, 0x6C, 0x65, 0x78, 0x20, 
45296
  0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x72, 0x65, 0x70, 
45297
  0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 
45298
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6C, 0x69, 0x65, 
45299
  0x6E, 0x74, 0x2E, 0xDA, 0x89, 0x7F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x85, 0x6F, 
45300
  0x81, 0x41, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0x80, 0xDA, 0x08, 0xCE, 0x69, 0x28, 0x61, 0x72, 0x72, 
45301
  0x61, 0x79, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0x20, 0x61, 0x72, 0x72, 0x29, 0x0A, 0x0A, 0x53, 0x65, 
45302
  0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x61, 
45303
  0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 
45304
  0x61, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x74, 0x73, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 
45305
  0x74, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
45306
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x61, 
45307
  0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x89, 0x81, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
45308
  0x82, 0xA5, 0x81, 0x36, 0x01, 0xDA, 0x06, 0xDA, 0x88, 0xA9, 0xDA, 0x08, 0xCE, 0x80, 0x85, 0x28, 
45309
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x67, 0x65, 0x74, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x20, 0x74, 
45310
  0x61, 0x62, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 
45311
  0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6F, 0x66, 0x20, 
45312
  0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
45313
  0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 
45314
  0x65, 0x20, 0x68, 0x61, 0x73, 0x20, 0x6E, 0x6F, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 
45315
  0x70, 0x65, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x72, 0x65, 
45316
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 
45317
  0x79, 0x70, 0x65, 0x2E, 0xDA, 0x89, 0x82, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 
45318
  0x8D, 0x54, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0x83, 0xDA, 0x08, 0xCE, 0x80, 0xAA, 0x28, 0x64, 0x6F, 
45319
  0x63, 0x2D, 0x6F, 0x66, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 
45320
  0x73, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x64, 0x20, 0x6D, 0x6F, 0x64, 
45321
  0x75, 0x6C, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x63, 
45322
  0x61, 0x63, 0x68, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 
45323
  0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x72, 0x69, 
45324
  0x6E, 0x74, 0x73, 0x20, 0x6F, 0x75, 0x74, 0x20, 0x69, 0x74, 0x73, 0x20, 0x64, 0x6F, 0x63, 0x75, 
45325
  0x6D, 0x65, 0x6E, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x0A, 0x54, 0x68, 0x69, 0x73, 0x20, 
45326
  0x64, 0x6F, 0x65, 0x73, 0x20, 0x61, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x62, 0x79, 
45327
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 
45328
  0x66, 0x20, 0x62, 0x79, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
45329
  0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x82, 0xF1, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
45330
  0x00, 0xDA, 0x18, 0x84, 0xE2, 0x01, 0xDA, 0x06, 0xDA, 0x82, 0xEA, 0xDA, 0x08, 0xCE, 0x81, 0x0E, 
45331
  0x28, 0x6B, 0x65, 0x65, 0x70, 0x2D, 0x73, 0x79, 0x6E, 0x74, 0x61, 0x78, 0x20, 0x62, 0x65, 0x66, 
45332
  0x6F, 0x72, 0x65, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 
45333
  0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 
45334
  0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 
45335
  0x61, 0x6E, 0x64, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x6D, 0x61, 0x70, 0x20, 0x6F, 0x66, 
45336
  0x20, 0x60, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x60, 0x20, 0x62, 0x75, 0x74, 0x20, 0x74, 0x68, 
45337
  0x65, 0x0A, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x61, 
45338
  0x66, 0x74, 0x65, 0x72, 0x60, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 
45339
  0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x69, 0x74, 0x73, 0x20, 0x61, 0x72, 0x67, 0x65, 
45340
  0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x20, 0x74, 
45341
  0x75, 0x70, 0x6C, 0x65, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x0A, 0x60, 0x61, 
45342
  0x66, 0x74, 0x65, 0x72, 0x60, 0x20, 0x75, 0x6E, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 
45343
  0x2E, 0x20, 0x55, 0x73, 0x65, 0x66, 0x75, 0x6C, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x65, 0x73, 
45344
  0x65, 0x72, 0x76, 0x65, 0x20, 0x73, 0x79, 0x6E, 0x74, 0x61, 0x63, 0x74, 0x69, 0x63, 0x20, 0x69, 
45345
  0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 
45346
  0x74, 0x72, 0x61, 0x6E, 0x73, 0x66, 0x6F, 0x72, 0x6D, 0x69, 0x6E, 0x67, 0x0A, 0x61, 0x6E, 0x20, 
45347
  0x61, 0x73, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x73, 0x2E, 0xDA, 0x89, 
45348
  0x92, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0xA5, 0x81, 0x69, 0x01, 0xDA, 0x06, 
45349
  0xDA, 0x89, 0x93, 0xDA, 0x08, 0xCE, 0x5D, 0x28, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x63, 0x6C, 
45350
  0x65, 0x61, 0x72, 0x20, 0x74, 0x61, 0x62, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x6D, 0x6F, 0x76, 0x65, 
45351
  0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6B, 0x65, 0x79, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x70, 
45352
  0x61, 0x69, 0x72, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 
45353
  0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 
45354
  0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x60, 0x74, 
45355
  0x61, 0x62, 0x60, 0x2E, 0xDA, 0x89, 0x94, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
45356
  0x86, 0xA2, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0x95, 0xDA, 0x08, 0xCE, 0x80, 0xE8, 0x28, 0x6F, 0x73, 
45357
  0x2F, 0x6C, 0x69, 0x6E, 0x6B, 0x20, 0x6F, 0x6C, 0x64, 0x70, 0x61, 0x74, 0x68, 0x20, 0x6E, 0x65, 
45358
  0x77, 0x70, 0x61, 0x74, 0x68, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x79, 0x6D, 0x6C, 0x69, 
45359
  0x6E, 0x6B, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6C, 0x69, 
45360
  0x6E, 0x6B, 0x20, 0x61, 0x74, 0x20, 0x6E, 0x65, 0x77, 0x70, 0x61, 0x74, 0x68, 0x20, 0x74, 0x68, 
45361
  0x61, 0x74, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x6F, 0x6C, 0x64, 
45362
  0x70, 0x61, 0x74, 0x68, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
45363
  0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x20, 0x49, 0x66, 0x66, 0x20, 0x73, 0x79, 0x6D, 0x6C, 0x69, 0x6E, 
45364
  0x6B, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 0x20, 0x63, 0x72, 0x65, 
45365
  0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x6C, 0x69, 0x6E, 0x6B, 0x2E, 0x20, 
45366
  0x49, 0x66, 0x66, 0x20, 0x73, 0x79, 0x6D, 0x6C, 0x69, 0x6E, 0x6B, 0x20, 0x69, 0x73, 0x20, 0x66, 
45367
  0x61, 0x6C, 0x73, 0x65, 0x79, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x70, 0x72, 0x6F, 
45368
  0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 
45369
  0x20, 0x68, 0x61, 0x72, 0x64, 0x20, 0x6C, 0x69, 0x6E, 0x6B, 0x2E, 0x20, 0x44, 0x6F, 0x65, 0x73, 
45370
  0x20, 0x6E, 0x6F, 0x74, 0x20, 0x77, 0x6F, 0x72, 0x6B, 0x20, 0x6F, 0x6E, 0x20, 0x57, 0x69, 0x6E, 
45371
  0x64, 0x6F, 0x77, 0x73, 0x2E, 0xDA, 0x89, 0x96, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
45372
  0x40, 0x8B, 0xF1, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0x97, 0xDA, 0x08, 0xCE, 0x5A, 0x28, 0x65, 0x76, 
45373
  0x2F, 0x73, 0x6C, 0x65, 0x65, 0x70, 0x20, 0x73, 0x65, 0x63, 0x29, 0x0A, 0x0A, 0x53, 0x75, 0x73, 
45374
  0x70, 0x65, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 
45375
  0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x73, 0x65, 0x63, 0x20, 0x73, 
45376
  0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x62, 
45377
  0x6C, 0x6F, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x76, 0x65, 0x6E, 
45378
  0x74, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x2E, 0xDA, 0x89, 0x98, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
45379
  0x00, 0xDA, 0x0C, 0x85, 0xE2, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0x99, 0xDA, 0x08, 0xCE, 0x49, 0x28, 
45380
  0x66, 0x66, 0x69, 0x2F, 0x66, 0x72, 0x65, 0x65, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 
45381
  0x29, 0x0A, 0x0A, 0x46, 0x72, 0x65, 0x65, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x61, 
45382
  0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x66, 
45383
  0x66, 0x69, 0x2F, 0x6D, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
45384
  0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x89, 0x9A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
45385
  0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 0x12, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0x9B, 0xDA, 0x08, 0xCE, 
45386
  0x34, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x73, 0x69, 0x6E, 0x68, 0x20, 0x78, 0x29, 0x0A, 
45387
  0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x79, 0x70, 
45388
  0x65, 0x72, 0x62, 0x6F, 0x6C, 0x69, 0x63, 0x20, 0x61, 0x72, 0x63, 0x73, 0x69, 0x6E, 0x65, 0x20, 
45389
  0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x82, 0x12, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
45390
  0x18, 0x89, 0x2A, 0x01, 0xDA, 0x06, 0xDA, 0x82, 0x0D, 0xDA, 0x08, 0xCE, 0x37, 0x28, 0x62, 0x61, 
45391
  0x64, 0x2D, 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 0x70, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x29, 
45392
  0x0A, 0x0A, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 
45393
  0x72, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 0x65, 0x72, 
45394
  0x72, 0x6F, 0x72, 0x2E, 0xDA, 0x89, 0x9C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 
45395
  0xA9, 0x81, 0xE5, 0x01, 0xDA, 0x06, 0xDA, 0x49, 0xDA, 0x08, 0xCE, 0x80, 0xD1, 0x28, 0x67, 0x65, 
45396
  0x6E, 0x73, 0x79, 0x6D, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 
45397
  0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x74, 0x68, 0x61, 0x74, 
45398
  0x20, 0x69, 0x73, 0x20, 0x75, 0x6E, 0x69, 0x71, 0x75, 0x65, 0x20, 0x61, 0x63, 0x72, 0x6F, 0x73, 
45399
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x75, 0x6E, 0x74, 0x69, 0x6D, 0x65, 0x2E, 0x20, 0x54, 
45400
  0x68, 0x69, 0x73, 0x20, 0x6D, 0x65, 0x61, 0x6E, 0x73, 0x20, 0x69, 0x74, 0x20, 0x77, 0x69, 0x6C, 
45401
  0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x63, 0x6F, 0x6C, 0x6C, 0x69, 0x64, 0x65, 0x20, 0x77, 0x69, 
45402
  0x74, 0x68, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x61, 0x6C, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x63, 
45403
  0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x20, 0x64, 
45404
  0x75, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x61, 0x74, 0x69, 0x6F, 
45405
  0x6E, 0x2C, 0x20, 0x73, 0x6F, 0x20, 0x69, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 
45406
  0x75, 0x73, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x73, 0x20, 0x74, 
45407
  0x6F, 0x20, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x61, 0x75, 0x74, 0x6F, 0x6D, 
45408
  0x61, 0x74, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x2E, 0xCF, 0x08, 
45409
  0x6D, 0x61, 0x74, 0x68, 0x2F, 0x69, 0x6E, 0x66, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
45410
  0x82, 0x9A, 0x81, 0x98, 0x01, 0xDA, 0x06, 0xDA, 0x82, 0x55, 0xDA, 0x08, 0xCE, 0x29, 0x54, 0x68, 
45411
  0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 
45412
  0x6E, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x20, 0x69, 
45413
  0x6E, 0x66, 0x69, 0x6E, 0x69, 0x74, 0x79, 0xDA, 0x89, 0x9D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
45414
  0x00, 0xDA, 0x86, 0xA9, 0x81, 0x6B, 0x01, 0xDA, 0x06, 0xDA, 0x84, 0x59, 0xDA, 0x08, 0xCE, 0x80, 
45415
  0xB6, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 
45416
  0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
45417
  0x20, 0x62, 0x79, 0x20, 0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74, 0x65, 0x6E, 0x61, 0x74, 0x69, 0x6E, 
45418
  0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 
45419
  0x66, 0x20, 0x60, 0x78, 0x73, 0x60, 0x20, 0x74, 0x6F, 0x67, 0x65, 0x74, 0x68, 0x65, 0x72, 0x2E, 
45420
  0x20, 0x49, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 
45421
  0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 
45422
  0x75, 0x65, 0x6E, 0x63, 0x65, 0x2C, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6F, 0x6E, 
45423
  0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 
45424
  0x76, 0x69, 0x61, 0x20, 0x60, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x60, 0x2E, 0x20, 
45425
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 
45426
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x89, 0x9E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
45427
  0x00, 0xDA, 0x18, 0x5B, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0x9F, 0xDA, 0x08, 0xCE, 0x37, 0x28, 0x76, 
45428
  0x61, 0x72, 0x67, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x69, 0x6E, 
45429
  0x69, 0x74, 0x29, 0x0A, 0x0A, 0x44, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x61, 0x6C, 0x6C, 0x79, 
45430
  0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x67, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 
45431
  0x20, 0x76, 0x61, 0x72, 0x2E, 0xDA, 0x89, 0xA2, 0xD3, 0x04, 0xDA, 0x84, 0x25, 0xCB, 0xDA, 0x03, 
45432
  0xD2, 0x03, 0x00, 0xDA, 0x18, 0x84, 0xBC, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0xA3, 0xDA, 0x08, 0xCE, 
45433
  0x26, 0x57, 0x68, 0x65, 0x72, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x70, 0x72, 0x69, 
45434
  0x6E, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x75, 0x74, 
45435
  0x70, 0x75, 0x74, 0x20, 0x74, 0x6F, 0x2E, 0xDA, 0x89, 0xA4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
45436
  0x00, 0xDA, 0x18, 0x83, 0x27, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0xA5, 0xDA, 0x08, 0xCE, 0x1E, 0x28, 
45437
  0x7A, 0x65, 0x72, 0x6F, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 
45438
  0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x7A, 0x65, 0x72, 0x6F, 0x2E, 0xDA, 0x89, 0xA7, 
45439
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x84, 0xD8, 0x81, 0xF9, 0x01, 0xDA, 0x06, 0xDA, 
45440
  0x81, 0x5E, 0xDA, 0x08, 0xCE, 0x84, 0x81, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6E, 0x65, 
45441
  0x77, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6D, 
45442
  0x61, 0x73, 0x6B, 0x20, 0x65, 0x6E, 0x76, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 
45443
  0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x77, 0x69, 0x74, 
45444
  0x68, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 
45445
  0x66, 0x75, 0x6E, 0x63, 0x2E, 0x20, 0x43, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 
45446
  0x61, 0x6C, 0x6C, 0x79, 0x20, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x61, 0x20, 0x73, 0x65, 0x74, 0x20, 
45447
  0x6F, 0x66, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x20, 0x60, 0x73, 0x69, 0x67, 0x6D, 
45448
  0x61, 0x73, 0x6B, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x20, 
45449
  0x66, 0x72, 0x6F, 0x6D, 0x20, 0x63, 0x68, 0x69, 0x6C, 0x64, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 
45450
  0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 
45451
  0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x60, 0x65, 0x6E, 0x76, 
45452
  0x60, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6D, 0x61, 0x73, 0x6B, 0x20, 0x69, 0x73, 0x20, 0x73, 
45453
  0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x6B, 0x65, 
45454
  0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x65, 0x61, 0x63, 0x68, 
45455
  0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 
45456
  0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x61, 
45457
  0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 
45458
  0x2E, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x76, 0x20, 0x6D, 0x6F, 0x64, 0x75, 
45459
  0x6C, 0x65, 0x20, 0x69, 0x73, 0x20, 0x65, 0x6E, 0x61, 0x62, 0x6C, 0x65, 0x64, 0x2C, 0x20, 0x61, 
45460
  0x6E, 0x64, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x73, 
45461
  0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x67, 0x75, 
45462
  0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x65, 0x76, 0x2F, 0x67, 0x6F, 0x60, 0x2C, 
45463
  0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x20, 0x22, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x65, 0x64, 0x22, 
45464
  0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 
45465
  0x73, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 
45466
  0x20, 0x62, 0x65, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x74, 
45467
  0x68, 0x65, 0x20, 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6F, 0x72, 0x20, 0x63, 0x68, 
45468
  0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 
45469
  0x6C, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6D, 0x61, 0x73, 0x6B, 0x20, 0x69, 0x73, 0x20, 0x3A, 0x79, 
45470
  0x2E, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x65, 0x78, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x2C, 0x0A, 0x0A, 
45471
  0x20, 0x20, 0x20, 0x20, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 0x20, 0x6D, 
45472
  0x79, 0x66, 0x75, 0x6E, 0x20, 0x3A, 0x65, 0x31, 0x32, 0x33, 0x29, 0x0A, 0x0A, 0x62, 0x6C, 0x6F, 
45473
  0x63, 0x6B, 0x73, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 
45474
  0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 
45475
  0x6C, 0x73, 0x20, 0x31, 0x2C, 0x20, 0x32, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x33, 0x2E, 0x20, 0x54, 
45476
  0x68, 0x65, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 
45477
  0x73, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x73, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x61, 
45478
  0x20, 0x2D, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x73, 0x69, 0x67, 
45479
  0x6E, 0x61, 0x6C, 0x73, 0x0A, 0x2A, 0x20, 0x3A, 0x64, 0x20, 0x2D, 0x20, 0x62, 0x6C, 0x6F, 0x63, 
45480
  0x6B, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x0A, 
45481
  0x2A, 0x20, 0x3A, 0x65, 0x20, 0x2D, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x65, 0x72, 0x72, 
45482
  0x6F, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x0A, 0x2A, 0x20, 0x3A, 0x74, 0x20, 
45483
  0x2D, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x74, 0x65, 0x72, 0x6D, 0x69, 0x6E, 0x61, 0x74, 
45484
  0x69, 0x6F, 0x6E, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x3A, 0x20, 0x65, 0x72, 0x72, 
45485
  0x6F, 0x72, 0x20, 0x2B, 0x20, 0x75, 0x73, 0x65, 0x72, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x0A, 0x2A, 
45486
  0x20, 0x3A, 0x75, 0x20, 0x2D, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x75, 0x73, 0x65, 0x72, 
45487
  0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x0A, 0x2A, 0x20, 0x3A, 0x79, 0x20, 0x2D, 0x20, 
45488
  0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x79, 0x69, 0x65, 0x6C, 0x64, 0x20, 0x73, 0x69, 0x67, 0x6E, 
45489
  0x61, 0x6C, 0x73, 0x0A, 0x2A, 0x20, 0x3A, 0x77, 0x20, 0x2D, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 
45490
  0x20, 0x61, 0x77, 0x61, 0x69, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x20, 0x28, 
45491
  0x75, 0x73, 0x65, 0x72, 0x39, 0x29, 0x0A, 0x2A, 0x20, 0x3A, 0x72, 0x20, 0x2D, 0x20, 0x62, 0x6C, 
45492
  0x6F, 0x63, 0x6B, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x20, 0x73, 0x69, 
45493
  0x67, 0x6E, 0x61, 0x6C, 0x73, 0x20, 0x28, 0x75, 0x73, 0x65, 0x72, 0x38, 0x29, 0x0A, 0x2A, 0x20, 
45494
  0x3A, 0x30, 0x2D, 0x39, 0x20, 0x2D, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x61, 0x20, 0x73, 
45495
  0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x73, 0x69, 0x67, 
45496
  0x6E, 0x61, 0x6C, 0x0A, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x73, 0x69, 0x67, 0x6D, 0x61, 0x73, 0x6B, 
45497
  0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x63, 
45498
  0x61, 0x6E, 0x20, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 
45499
  0x65, 0x6E, 0x74, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x61, 0x6E, 
45500
  0x79, 0x20, 0x6D, 0x75, 0x74, 0x75, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x65, 0x78, 0x63, 0x6C, 0x75, 
45501
  0x73, 0x69, 0x76, 0x65, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x70, 
45502
  0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 
45503
  0x20, 0x66, 0x6C, 0x61, 0x67, 0x20, 0x74, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x70, 0x72, 0x65, 0x63, 
45504
  0x65, 0x64, 0x65, 0x6E, 0x63, 0x65, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x69, 0x20, 0x2D, 0x20, 
45505
  0x69, 0x6E, 0x68, 0x65, 0x72, 0x69, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x76, 0x69, 
45506
  0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 
45507
  0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x0A, 0x2A, 
45508
  0x20, 0x3A, 0x70, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 
45509
  0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x27, 0x73, 0x20, 0x70, 0x72, 
45510
  0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 
45511
  0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 
45512
  0x6E, 0x74, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0xDA, 0x89, 0xA8, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
45513
  0x03, 0x00, 0xDA, 0x18, 0x84, 0x20, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0xA9, 0xDA, 0x08, 0xCE, 0x80, 
45514
  0x81, 0x28, 0x66, 0x69, 0x6E, 0x64, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 0x20, 
45515
  0x26, 0x6F, 0x70, 0x74, 0x20, 0x64, 0x66, 0x6C, 0x74, 0x29, 0x0A, 0x0A, 0x46, 0x69, 0x6E, 0x64, 
45516
  0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
45517
  0x20, 0x69, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x63, 
45518
  0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x73, 
45519
  0x61, 0x74, 0x69, 0x73, 0x66, 0x69, 0x65, 0x73, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 
45520
  0x63, 0x61, 0x74, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x0A, 0x60, 0x64, 
45521
  0x66, 0x6C, 0x74, 0x60, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x6F, 0x75, 0x6E, 
45522
  0x64, 0x2E, 0xDA, 0x89, 0xAB, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 
45523
  0x1D, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0xAC, 0xDA, 0x08, 0xCE, 0x2A, 0x28, 0x6D, 0x61, 0x74, 0x68, 
45524
  0x2F, 0x63, 0x62, 0x72, 0x74, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
45525
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x62, 0x65, 0x20, 0x72, 0x6F, 0x6F, 0x74, 0x20, 
45526
  0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x89, 0xAD, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
45527
  0x83, 0x40, 0x81, 0x48, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0xAE, 0xDA, 0x08, 0xCE, 0x73, 0x28, 0x62, 
45528
  0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x61, 0x74, 0x20, 0x62, 0x75, 
45529
  0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 
45530
  0x0A, 0x0A, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
45531
  0x2F, 0x70, 0x75, 0x73, 0x68, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x63, 0x6F, 0x70, 0x69, 0x65, 
45532
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x69, 
45533
  0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x20, 
45534
  0x61, 0x74, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x60, 
45535
  0x2E, 0xDA, 0x89, 0xAF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 0x46, 0x81, 0x74, 
45536
  0x01, 0xDA, 0x06, 0xDA, 0x80, 0xE1, 0xDA, 0x08, 0xCE, 0x83, 0x4C, 0x28, 0x64, 0x65, 0x62, 0x75, 
45537
  0x67, 0x2F, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x66, 0x69, 0x62, 0x29, 0x0A, 0x0A, 0x47, 0x65, 
45538
  0x74, 0x73, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 
45539
  0x62, 0x6F, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x61, 
45540
  0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x61, 
45541
  0x62, 0x6C, 0x65, 0x73, 0x2E, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 
45542
  0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x63, 0x6F, 
45543
  0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 
45544
  0x6F, 0x6E, 0x20, 0x61, 0x62, 0x6F, 0x75, 0x74, 0x20, 0x61, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 
45545
  0x20, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x6F, 0x70, 0x2D, 
45546
  0x6D, 0x6F, 0x73, 0x74, 0x2C, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x73, 0x74, 
45547
  0x61, 0x63, 0x6B, 0x20, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 
45548
  0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x69, 0x6E, 0x20, 
45549
  0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 
45550
  0x68, 0x65, 0x20, 0x62, 0x6F, 0x74, 0x74, 0x6F, 0x6D, 0x2D, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x73, 
45551
  0x74, 0x61, 0x63, 0x6B, 0x20, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 
45552
  0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x20, 0x45, 0x61, 
45553
  0x63, 0x68, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x20, 0x63, 
45554
  0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 0x20, 0x73, 0x6F, 0x6D, 0x65, 0x20, 0x6F, 0x66, 0x20, 
45555
  0x74, 0x68, 0x65, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x74, 
45556
  0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x63, 0x20, 
45557
  0x2D, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 
45558
  0x61, 0x63, 0x6B, 0x20, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x63, 
45559
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x6E, 0x76, 0x6F, 0x63, 0x61, 
45560
  0x74, 0x69, 0x6F, 0x6E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2D, 
45561
  0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 
45562
  0x72, 0x65, 0x6E, 0x74, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x75, 
45563
  0x6D, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 
45564
  0x66, 0x72, 0x61, 0x6D, 0x65, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 
45565
  0x6F, 0x6E, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
45566
  0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 
45567
  0x20, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 
45568
  0x73, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2D, 0x6C, 0x69, 0x6E, 
45569
  0x65, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 
45570
  0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 
45571
  0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x0A, 0x0A, 
45572
  0x2A, 0x20, 0x3A, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x75, 
45573
  0x6D, 0x61, 0x6E, 0x2D, 0x66, 0x72, 0x69, 0x65, 0x6E, 0x64, 0x6C, 0x79, 0x20, 0x6E, 0x61, 0x6D, 
45574
  0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
45575
  0x6E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x70, 0x63, 0x20, 0x2D, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 
45576
  0x65, 0x72, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 
45577
  0x65, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 
45578
  0x65, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x65, 
45579
  0x72, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x2D, 0x20, 0x73, 
45580
  0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
45581
  0x69, 0x6C, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x6F, 0x72, 0x20, 0x6F, 0x74, 0x68, 0x65, 
45582
  0x72, 0x20, 0x69, 0x64, 0x65, 0x6E, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 
45583
  0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x63, 0x6F, 0x64, 0x65, 
45584
  0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x6C, 0x6F, 0x74, 0x73, 0x20, 0x2D, 0x20, 0x61, 0x72, 0x72, 
45585
  0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 
45586
  0x20, 0x69, 0x6E, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x73, 0x6C, 0x6F, 0x74, 0x0A, 0x0A, 0x2A, 
45587
  0x20, 0x3A, 0x74, 0x61, 0x69, 0x6C, 0x20, 0x2D, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 
45588
  0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x74, 0x61, 
45589
  0x69, 0x6C, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0xDA, 0x89, 0xB0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
45590
  0x00, 0xDA, 0x18, 0x8A, 0xAB, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0xB1, 0xDA, 0x08, 0xCE, 0x81, 0x71, 
45591
  0x28, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x61, 0x64, 0x64, 0x2D, 0x70, 0x61, 0x74, 0x68, 
45592
  0x73, 0x20, 0x65, 0x78, 0x74, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x41, 
45593
  0x64, 0x64, 0x20, 0x70, 0x61, 0x74, 0x68, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x6D, 0x6F, 0x64, 
45594
  0x75, 0x6C, 0x65, 0x2F, 0x70, 0x61, 0x74, 0x68, 0x73, 0x60, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 
45595
  0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x20, 0x73, 0x75, 
45596
  0x63, 0x68, 0x20, 0x74, 0x68, 0x61, 0x74, 0x0A, 0x74, 0x68, 0x65, 0x20, 0x67, 0x65, 0x6E, 0x65, 
45597
  0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x70, 0x61, 0x74, 0x68, 0x73, 0x20, 0x62, 0x65, 0x68, 0x61, 
45598
  0x76, 0x65, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x6D, 0x6F, 
45599
  0x64, 0x75, 0x6C, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2C, 0x20, 0x69, 0x6E, 0x63, 0x6C, 
45600
  0x75, 0x64, 0x69, 0x6E, 0x67, 0x0A, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x69, 
45601
  0x6D, 0x70, 0x6F, 0x72, 0x74, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x79, 0x73, 0x70, 0x61, 
45602
  0x74, 0x68, 0x20, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x73, 0x2E, 0x20, 0x60, 0x65, 0x78, 0x74, 
45603
  0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x65, 0x78, 
45604
  0x74, 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, 0x0A, 0x74, 0x6F, 0x20, 0x61, 0x73, 0x73, 0x6F, 0x63, 
45605
  0x69, 0x61, 0x74, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x6D, 
45606
  0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2C, 0x20, 0x69, 0x6E, 0x63, 0x6C, 
45607
  0x75, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x6F, 0x74, 0x2E, 0x20, 0x60, 
45608
  0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x6B, 
45609
  0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 
45610
  0x20, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x75, 
45611
  0x6C, 0x65, 0x2F, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x73, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 
45612
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 
45613
  0x64, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x70, 0x61, 0x74, 0x68, 0x73, 0x60, 
45614
  0x2E, 0xDA, 0x89, 0xC4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0xFA, 0x80, 0xBB, 
45615
  0x01, 0xDA, 0x06, 0xDA, 0x89, 0xC5, 0xDA, 0x08, 0xCE, 0x50, 0x28, 0x73, 0x79, 0x6D, 0x62, 0x6F, 
45616
  0x6C, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x26, 0x6F, 
45617
  0x70, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x65, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x53, 
45618
  0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x73, 0x6C, 
45619
  0x69, 0x63, 0x65, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
45620
  0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2E, 0xDA, 0x89, 0xC6, 0xD3, 0x03, 0xDA, 
45621
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0xFA, 0x81, 0xEF, 0x01, 0xDA, 0x06, 0xDA, 0x81, 0xAD, 0xDA, 
45622
  0x08, 0xCE, 0x7A, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x6A, 0x6F, 0x69, 0x6E, 0x20, 
45623
  0x70, 0x61, 0x72, 0x74, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x65, 0x70, 0x29, 0x0A, 
45624
  0x0A, 0x4A, 0x6F, 0x69, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 
45625
  0x6F, 0x66, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 
45626
  0x6F, 0x6E, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x6F, 0x70, 0x74, 0x69, 
45627
  0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x65, 0x64, 
45628
  0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x20, 
45629
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x73, 0x65, 0x70, 0x60, 0x2E, 0xDA, 0x89, 0xC7, 
45630
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x84, 0x8F, 0x01, 0xDA, 0x06, 0xDA, 0x89, 
45631
  0xC8, 0xDA, 0x08, 0xCE, 0x7F, 0x28, 0x6A, 0x75, 0x78, 0x74, 0x2A, 0x20, 0x26, 0x20, 0x66, 0x75, 
45632
  0x6E, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
45633
  0x20, 0x6A, 0x75, 0x78, 0x74, 0x61, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 
45634
  0x66, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x20, 0x49, 0x6E, 0x20, 
45635
  0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x2C, 0x0A, 0x60, 0x28, 0x28, 
45636
  0x6A, 0x75, 0x78, 0x74, 0x2A, 0x20, 0x61, 0x20, 0x62, 0x20, 0x63, 0x29, 0x20, 0x78, 0x29, 0x60, 
45637
  0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x5B, 
45638
  0x28, 0x61, 0x20, 0x78, 0x29, 0x20, 0x28, 0x62, 0x20, 0x78, 0x29, 0x20, 0x28, 0x63, 0x20, 0x78, 
45639
  0x29, 0x5D, 0x60, 0x2E, 0xDA, 0x89, 0xCC, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 
45640
  0x9A, 0x81, 0x20, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0xCD, 0xDA, 0x08, 0xCE, 0x41, 0x28, 0x6D, 0x61, 
45641
  0x74, 0x68, 0x2F, 0x74, 0x72, 0x75, 0x6E, 0x63, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 
45642
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 
45643
  0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6E, 0x20, 0x78, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x30, 
45644
  0x20, 0x6E, 0x65, 0x61, 0x72, 0x65, 0x73, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x78, 0x2E, 0xDA, 0x89, 
45645
  0xCE, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0xFA, 0x80, 0xCB, 0x01, 0xDA, 0x06, 
45646
  0xDA, 0x81, 0x83, 0xDA, 0x08, 0xCE, 0x55, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x72, 
45647
  0x65, 0x70, 0x65, 0x61, 0x74, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 
45648
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 
45649
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x63, 0x6F, 0x70, 
45650
  0x69, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x62, 0x79, 0x74, 0x65, 0x73, 0x60, 0x20, 0x63, 
45651
  0x6F, 0x6E, 0x63, 0x61, 0x74, 0x65, 0x6E, 0x61, 0x74, 0x65, 0x64, 0x2E, 0xDA, 0x89, 0xCF, 0xD3, 
45652
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x65, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0xD0, 0xDA, 
45653
  0x08, 0xCE, 0x22, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 
45654
  0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 
45655
  0x69, 0x62, 0x65, 0x72, 0x2E, 0xDA, 0x89, 0xD2, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
45656
  0x18, 0x81, 0xFA, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0xD3, 0xDA, 0x08, 0xCE, 0x4F, 0x28, 0x66, 0x6F, 
45657
  0x72, 0x20, 0x69, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x73, 0x74, 0x6F, 0x70, 0x20, 0x26, 
45658
  0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x44, 0x6F, 0x20, 0x61, 0x20, 0x43, 0x2D, 0x73, 
45659
  0x74, 0x79, 0x6C, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x2D, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x66, 0x6F, 
45660
  0x72, 0x20, 0x73, 0x69, 0x64, 0x65, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x73, 0x2E, 0x20, 
45661
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 
45662
  0x83, 0xD2, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x82, 0xEC, 0x01, 0xDA, 0x06, 
45663
  0xDA, 0x83, 0xD0, 0xDA, 0x08, 0xCE, 0x41, 0x28, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x78, 0x73, 
45664
  0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 
45665
  0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x6E, 
45666
  0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 
45667
  0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0xDA, 0x84, 0x20, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
45668
  0x03, 0x00, 0xDA, 0x18, 0x85, 0x3E, 0x01, 0xDA, 0x06, 0xDA, 0x84, 0x13, 0xDA, 0x08, 0xCE, 0x80, 
45669
  0xAB, 0x28, 0x77, 0x61, 0x6C, 0x6B, 0x20, 0x66, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x29, 0x0A, 0x0A, 
45670
  0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 
45671
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x73, 0x74, 0x20, 0x61, 
45672
  0x6E, 0x64, 0x20, 0x61, 0x70, 0x70, 0x6C, 0x79, 0x20, 0x60, 0x66, 0x60, 0x0A, 0x74, 0x6F, 0x20, 
45673
  0x74, 0x68, 0x65, 0x6D, 0x2E, 0x20, 0x43, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x74, 0x68, 
45674
  0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x64, 
45675
  0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0x20, 0x49, 
45676
  0x66, 0x20, 0x61, 0x73, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x0A, 0x74, 
45677
  0x61, 0x62, 0x6C, 0x65, 0x2C, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2C, 0x20, 0x61, 0x72, 
45678
  0x72, 0x61, 0x79, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2C, 0x0A, 0x72, 
45679
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x2E, 0xDA, 0x89, 0xE1, 0xD3, 
45680
  0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x82, 0x14, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0xE2, 
45681
  0xDA, 0x08, 0xCE, 0x3E, 0x28, 0x65, 0x61, 0x63, 0x68, 0x20, 0x78, 0x20, 0x64, 0x73, 0x20, 0x26, 
45682
  0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x4C, 0x6F, 0x6F, 0x70, 0x20, 0x6F, 0x76, 0x65, 
45683
  0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 
45684
  0x60, 0x64, 0x73, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 
45685
  0x6C, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x89, 0xEF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
45686
  0x18, 0x84, 0xAF, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0xF0, 0xDA, 0x08, 0xCE, 0x49, 0x28, 0x68, 0x61, 
45687
  0x73, 0x2D, 0x6B, 0x65, 0x79, 0x3F, 0x20, 0x64, 0x73, 0x20, 0x6B, 0x65, 0x79, 0x29, 0x0A, 0x0A, 
45688
  0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 
45689
  0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x60, 0x64, 0x73, 0x60, 0x20, 0x63, 
45690
  0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x20, 
45691
  0x60, 0x6B, 0x65, 0x79, 0x60, 0x2E, 0xDA, 0x89, 0xF2, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
45692
  0xDA, 0x84, 0xD8, 0x82, 0x6F, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0xF3, 0xDA, 0x08, 0xCE, 0x81, 0x08, 
45693
  0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6D, 0x61, 0x78, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 
45694
  0x66, 0x69, 0x62, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 
45695
  0x61, 0x78, 0x69, 0x6D, 0x75, 0x6D, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x73, 0x69, 0x7A, 
45696
  0x65, 0x20, 0x69, 0x6E, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
45697
  0x73, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 
45698
  0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x57, 0x68, 0x69, 0x6C, 0x65, 0x20, 0x6D, 0x65, 0x6D, 
45699
  0x6F, 0x72, 0x79, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 
45700
  0x72, 0x27, 0x73, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 
45701
  0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x75, 0x70, 0x20, 0x66, 0x72, 
45702
  0x6F, 0x6E, 0x74, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x77, 
45703
  0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 
45704
  0x64, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x74, 0x68, 0x69, 0x73, 
45705
  0x20, 0x61, 0x6D, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x77, 0x69, 0x6C, 0x6C, 
45706
  0x20, 0x74, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x2D, 0x6F, 
45707
  0x76, 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 
45708
  0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x69, 0x73, 0x20, 
45709
  0x6E, 0x65, 0x65, 0x64, 0x65, 0x64, 0x2E, 0x20, 0xDA, 0x89, 0xF4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
45710
  0x03, 0x00, 0xDA, 0x18, 0x82, 0x84, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0xF5, 0xDA, 0x08, 0xCE, 0x3B, 
45711
  0x28, 0x73, 0x75, 0x6D, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
45712
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x73, 0x2E, 
45713
  0x20, 0x49, 0x66, 0x20, 0x78, 0x73, 0x20, 0x69, 0x73, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2C, 
45714
  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x30, 0x2E, 0xDA, 0x89, 0xF9, 0xD3, 0x03, 
45715
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x86, 0x81, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0xFA, 0xDA, 
45716
  0x08, 0xCE, 0x80, 0x87, 0x28, 0x66, 0x6C, 0x61, 0x74, 0x74, 0x65, 0x6E, 0x2D, 0x69, 0x6E, 0x74, 
45717
  0x6F, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x54, 0x61, 0x6B, 0x65, 
45718
  0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 
45719
  0x20, 0x28, 0x74, 0x72, 0x65, 0x65, 0x29, 0x20, 0x60, 0x78, 0x73, 0x60, 0x20, 0x61, 0x6E, 0x64, 
45720
  0x20, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x70, 
45721
  0x74, 0x68, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x74, 0x72, 0x61, 0x76, 0x65, 0x72, 0x73, 
45722
  0x61, 0x6C, 0x20, 0x6F, 0x66, 0x0A, 0x60, 0x78, 0x73, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x72, 
45723
  0x72, 0x61, 0x79, 0x20, 0x60, 0x69, 0x6E, 0x74, 0x6F, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
45724
  0x72, 0x6E, 0x73, 0x20, 0x60, 0x69, 0x6E, 0x74, 0x6F, 0x60, 0x2E, 0xDA, 0x89, 0xFF, 0xD3, 0x04, 
45725
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x80, 0xBF, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x00, 0xDA, 
45726
  0x08, 0xCE, 0x49, 0x28, 0x75, 0x6E, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 
45727
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x53, 0x68, 
45728
  0x6F, 0x72, 0x74, 0x68, 0x61, 0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x28, 0x77, 0x68, 
45729
  0x65, 0x6E, 0x20, 0x28, 0x6E, 0x6F, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 
45730
  0x6E, 0x29, 0x20, 0x3B, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x60, 0x2E, 0x20, 0xDA, 0x3D, 0xCB, 0xDA, 
45731
  0x8A, 0x02, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x84, 0xD8, 0x82, 0x65, 0x01, 0xDA, 
45732
  0x06, 0xDA, 0x8A, 0x03, 0xDA, 0x08, 0xCE, 0x70, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x72, 
45733
  0x6F, 0x6F, 0x74, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 
45734
  0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x72, 0x6F, 0x6F, 0x74, 0x20, 0x66, 
45735
  0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x6F, 0x6F, 0x74, 0x20, 0x66, 
45736
  0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x6C, 0x64, 0x65, 
45737
  0x73, 0x74, 0x20, 0x61, 0x6E, 0x63, 0x65, 0x73, 0x74, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 
45738
  0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 
45739
  0x20, 0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x8A, 0x04, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
45740
  0x03, 0x00, 0xDA, 0x04, 0x88, 0xBB, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x05, 0xDA, 0x08, 0xCE, 0x6B, 
45741
  0x28, 0x6F, 0x73, 0x2F, 0x70, 0x65, 0x72, 0x6D, 0x2D, 0x69, 0x6E, 0x74, 0x20, 0x62, 0x79, 0x74, 
45742
  0x65, 0x73, 0x29, 0x0A, 0x0A, 0x50, 0x61, 0x72, 0x73, 0x65, 0x20, 0x61, 0x20, 0x39, 0x2D, 0x63, 
45743
  0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x20, 0x70, 0x65, 0x72, 0x6D, 0x69, 0x73, 0x73, 
45744
  0x69, 0x6F, 0x6E, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 
45745
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 
45746
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 
45747
  0x64, 0x20, 0x62, 0x79, 0x20, 0x63, 0x68, 0x6D, 0x6F, 0x64, 0x2E, 0xDA, 0x8A, 0x06, 0xD3, 0x03, 
45748
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8A, 0x6B, 0x01, 0xDA, 0x06, 0xDA, 0x87, 0x8F, 0xDA, 
45749
  0x08, 0xCE, 0x80, 0xB4, 0x41, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 
45750
  0x20, 0x69, 0x6E, 0x20, 0x63, 0x6F, 0x6D, 0x62, 0x69, 0x6E, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
45751
  0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x75, 0x6E, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x60, 
45752
  0x20, 0x74, 0x6F, 0x20, 0x75, 0x6E, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x20, 0x62, 0x79, 
45753
  0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x73, 0x20, 0x63, 0x72, 0x65, 
45754
  0x61, 0x74, 0x65, 0x64, 0x0A, 0x62, 0x79, 0x20, 0x60, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x69, 0x6D, 
45755
  0x61, 0x67, 0x65, 0x60, 0x2C, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
45756
  0x60, 0x28, 0x6C, 0x6F, 0x61, 0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x20, 0x62, 0x79, 0x74, 
45757
  0x65, 0x73, 0x29, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 
45758
  0x20, 0x61, 0x73, 0x20, 0x60, 0x28, 0x75, 0x6E, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x20, 
45759
  0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 
45760
  0x2D, 0x64, 0x69, 0x63, 0x74, 0x29, 0x60, 0x2E, 0xDA, 0x8A, 0x07, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
45761
  0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 0x16, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x08, 0xDA, 0x08, 0xCE, 
45762
  0x2A, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0x78, 0x70, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 
45763
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 
45764
  0x70, 0x6F, 0x77, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x8A, 0x09, 0xD3, 0x03, 
45765
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x84, 0xC4, 0x86, 0xEC, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x0A, 
45766
  0xDA, 0x08, 0xCE, 0x81, 0x55, 0x28, 0x70, 0x65, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 
45767
  0x65, 0x20, 0x70, 0x65, 0x67, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 
45768
  0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 
45769
  0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 
45770
  0x74, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x70, 0x65, 0x67, 0x60, 
45771
  0x20, 0x69, 0x6E, 0x20, 0x60, 0x74, 0x65, 0x78, 0x74, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 
45772
  0x60, 0x73, 0x75, 0x62, 0x73, 0x74, 0x60, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x69, 
45773
  0x6E, 0x67, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 
45774
  0x20, 0x54, 0x68, 0x65, 0x20, 0x70, 0x65, 0x67, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 
45775
  0x74, 0x20, 0x6E, 0x65, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x6D, 0x61, 0x6B, 0x65, 0x20, 0x63, 
45776
  0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x64, 0x6F, 0x20, 0x72, 0x65, 
45777
  0x70, 0x6C, 0x61, 0x63, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x73, 
45778
  0x75, 0x62, 0x73, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 
45779
  0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x69, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 
45780
  0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 
45781
  0x6D, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x66, 0x6F, 
45782
  0x6C, 0x6C, 0x6F, 0x77, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x63, 0x61, 
45783
  0x70, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6E, 0x6F, 0x20, 0x6D, 0x61, 
45784
  0x74, 0x63, 0x68, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2C, 
45785
  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x70, 
45786
  0x75, 0x74, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x6E, 
45787
  0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x8A, 0x0B, 0xD3, 0x03, 0xDA, 
45788
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 0xA9, 0x81, 0xED, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x0C, 0xDA, 
45789
  0x08, 0xCE, 0x50, 0x28, 0x67, 0x63, 0x63, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x29, 0x0A, 0x0A, 
45790
  0x52, 0x75, 0x6E, 0x20, 0x67, 0x61, 0x72, 0x62, 0x61, 0x67, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x6C, 
45791
  0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x59, 0x6F, 0x75, 0x20, 0x73, 0x68, 0x6F, 0x75, 
45792
  0x6C, 0x64, 0x20, 0x70, 0x72, 0x6F, 0x62, 0x61, 0x62, 0x6C, 0x79, 0x20, 0x6E, 0x6F, 0x74, 0x20, 
45793
  0x63, 0x61, 0x6C, 0x6C, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x6D, 0x61, 0x6E, 0x75, 0x61, 0x6C, 
45794
  0x6C, 0x79, 0x2E, 0xDA, 0x8A, 0x0D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x83, 0x14, 
45795
  0x82, 0x72, 0x01, 0xDA, 0x06, 0xDA, 0x80, 0xC3, 0xDA, 0x08, 0xCE, 0x7F, 0x28, 0x70, 0x72, 0x69, 
45796
  0x6E, 0x74, 0x66, 0x20, 0x66, 0x6D, 0x74, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x50, 
45797
  0x72, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x66, 0x6F, 0x72, 
45798
  0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x69, 0x66, 0x20, 0x77, 0x69, 0x74, 
45799
  0x68, 0x20, 0x60, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 
45800
  0x74, 0x20, 0x66, 0x6D, 0x74, 0x20, 0x3B, 0x78, 0x73, 0x29, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x60, 
45801
  0x28, 0x64, 0x79, 0x6E, 0x20, 0x3A, 0x6F, 0x75, 0x74, 0x20, 0x73, 0x74, 0x64, 0x6F, 0x75, 0x74, 
45802
  0x29, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6C, 0x69, 
45803
  0x6E, 0x67, 0x20, 0x6E, 0x65, 0x77, 0x6C, 0x69, 0x6E, 0x65, 0x2E, 0xDA, 0x80, 0x8E, 0xD3, 0x03, 
45804
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x80, 0x8C, 0x01, 0xDA, 0x06, 0xDA, 0x80, 0x87, 0xDA, 
45805
  0x08, 0xCE, 0x4E, 0x28, 0x69, 0x64, 0x65, 0x6D, 0x70, 0x6F, 0x74, 0x65, 0x6E, 0x74, 0x3F, 0x20, 
45806
  0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 
45807
  0x73, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x65, 
45808
  0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x74, 0x73, 0x65, 
45809
  0x6C, 0x66, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x64, 
45810
  0x2E, 0xDA, 0x8A, 0x0E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x80, 0xEA, 
45811
  0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x0F, 0xDA, 0x08, 0xCE, 0x4D, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 
45812
  0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
45813
  0x20, 0x61, 0x20, 0x75, 0x6E, 0x69, 0x66, 0x6F, 0x72, 0x6D, 0x6C, 0x79, 0x20, 0x64, 0x69, 0x73, 
45814
  0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x64, 0x20, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x20, 
45815
  0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6E, 0x20, 0x30, 
45816
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x31, 0x2E, 0xDA, 0x8A, 0x10, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
45817
  0x00, 0xDA, 0x18, 0x54, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x11, 0xDA, 0x08, 0xCE, 0x38, 0x28, 0x64, 
45818
  0x65, 0x66, 0x67, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x76, 0x61, 
45819
  0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x44, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x61, 0x6C, 0x6C, 
45820
  0x79, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x67, 0x6C, 0x6F, 0x62, 0x61, 
45821
  0x6C, 0x20, 0x64, 0x65, 0x66, 0x2E, 0xDA, 0x8A, 0x13, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
45822
  0xDA, 0x18, 0x83, 0x81, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x14, 0xDA, 0x08, 0xCE, 0x81, 0x32, 0x28, 
45823
  0x61, 0x63, 0x63, 0x75, 0x6D, 0x75, 0x6C, 0x61, 0x74, 0x65, 0x20, 0x66, 0x20, 0x69, 0x6E, 0x69, 
45824
  0x74, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 
45825
  0x74, 0x6F, 0x20, 0x60, 0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 
45826
  0x20, 0x61, 0x63, 0x63, 0x75, 0x6D, 0x75, 0x6C, 0x61, 0x74, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x74, 
45827
  0x65, 0x72, 0x6D, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 
45828
  0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x0A, 
45829
  0x54, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 
45830
  0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x69, 0x73, 
45831
  0x20, 0x77, 0x68, 0x61, 0x74, 0x20, 0x77, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x74, 
45832
  0x68, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
45833
  0x66, 0x72, 0x6F, 0x6D, 0x20, 0x60, 0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 0x60, 0x2E, 0x0A, 0x54, 
45834
  0x68, 0x65, 0x20, 0x60, 0x69, 0x6E, 0x69, 0x74, 0x60, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
45835
  0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x64, 0x64, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 
45836
  0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x28, 0x74, 0x68, 0x65, 0x20, 0x72, 
45837
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 
45838
  0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x0A, 0x6E, 
45839
  0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 
45840
  0x73, 0x20, 0x61, 0x73, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x29, 0x2E, 0x0A, 0x52, 0x65, 0x74, 
45841
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 
45842
  0x2E, 0xDA, 0x82, 0xB4, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x80, 0xE7, 0x01, 
45843
  0xDA, 0x06, 0xDA, 0x8A, 0x18, 0xDA, 0x08, 0xCE, 0x80, 0xAE, 0x28, 0x6C, 0x65, 0x74, 0x20, 0x62, 
45844
  0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 
45845
  0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x63, 0x6F, 0x70, 0x65, 0x20, 
45846
  0x61, 0x6E, 0x64, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 
45847
  0x74, 0x6F, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x2E, 0x20, 0x45, 0x61, 0x63, 0x68, 
45848
  0x20, 0x70, 0x61, 0x69, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 
45849
  0x67, 0x73, 0x60, 0x20, 0x69, 0x73, 0x0A, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x20, 
45850
  0x61, 0x73, 0x20, 0x69, 0x66, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x64, 0x65, 0x66, 0x60, 
45851
  0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x6F, 
45852
  0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x6C, 0x65, 0x74, 0x60, 0x20, 0x66, 0x6F, 0x72, 0x6D, 
45853
  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 
45854
  0x74, 0x0A, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x83, 0xF0, 0xD3, 0x03, 
45855
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x70, 0x01, 0xDA, 0x06, 0xDA, 0x83, 0xEE, 0xDA, 0x08, 
45856
  0xCE, 0x22, 0x28, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 
45857
  0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x75, 
45858
  0x70, 0x6C, 0x65, 0x2E, 0xDA, 0x8A, 0x1B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
45859
  0x80, 0xEA, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x1C, 0xDA, 0x08, 0xCE, 0x80, 0x81, 0x28, 0x6F, 0x73, 
45860
  0x2F, 0x65, 0x78, 0x69, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x45, 
45861
  0x78, 0x69, 0x74, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x77, 
45862
  0x69, 0x74, 0x68, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x63, 0x6F, 0x64, 0x65, 
45863
  0x20, 0x65, 0x71, 0x75, 0x61, 0x6C, 0x20, 0x74, 0x6F, 0x20, 0x78, 0x2E, 0x20, 0x49, 0x66, 0x20, 
45864
  0x78, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 
45865
  0x67, 0x65, 0x72, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x77, 0x69, 
45866
  0x74, 0x68, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6C, 0x20, 
45867
  0x74, 0x68, 0x65, 0x20, 0x68, 0x61, 0x73, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x88, 
45868
  0x11, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x83, 0x2B, 0x01, 0xDA, 0x06, 0xDA, 
45869
  0x88, 0x0F, 0xDA, 0x08, 0xCE, 0x1E, 0x28, 0x65, 0x76, 0x65, 0x6E, 0x3F, 0x20, 0x78, 0x29, 0x0A, 
45870
  0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x65, 
45871
  0x76, 0x65, 0x6E, 0x2E, 0xDA, 0x8A, 0x1D, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 
45872
  0x8B, 0xD2, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x1E, 0xDA, 0x08, 0xCE, 0x80, 0x94, 0x28, 0x75, 0x73, 
45873
  0x65, 0x20, 0x26, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 0x29, 0x0A, 0x0A, 0x53, 0x69, 
45874
  0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 
45875
  0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x20, 
45876
  0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6E, 0x6F, 0x74, 
45877
  0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 
45878
  0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x0A, 0x69, 0x64, 0x65, 0x6E, 0x74, 0x69, 0x66, 0x69, 
45879
  0x65, 0x72, 0x2E, 0x20, 0x43, 0x61, 0x6E, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x69, 0x6D, 0x70, 
45880
  0x6F, 0x72, 0x74, 0x20, 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 0x20, 0x6D, 0x6F, 0x64, 
45881
  0x75, 0x6C, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x73, 0x68, 0x6F, 0x74, 
45882
  0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x8A, 0x38, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 
45883
  0xFA, 0x82, 0x31, 0x01, 0xDA, 0x06, 0xDA, 0x4C, 0xDA, 0x08, 0xCE, 0x85, 0x49, 0x28, 0x73, 0x74, 
45884
  0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 
45885
  0x61, 0x74, 0x20, 0x26, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x29, 0x0A, 0x0A, 0x53, 0x69, 
45886
  0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x43, 0x27, 0x73, 0x20, 0x60, 0x73, 0x6E, 
45887
  0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x73, 0x70, 0x65, 
45888
  0x63, 0x69, 0x61, 0x6C, 0x69, 0x7A, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6F, 0x70, 0x65, 
45889
  0x72, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x4A, 0x61, 0x6E, 0x65, 
45890
  0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
45891
  0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2E, 0x0A, 
45892
  0x0A, 0x54, 0x68, 0x65, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 0x63, 
45893
  0x6F, 0x6E, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 
45894
  0x69, 0x65, 0x72, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 0x74, 
45895
  0x65, 0x64, 0x2C, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x70, 
45896
  0x70, 0x65, 0x72, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 
45897
  0x65, 0x72, 0x73, 0x20, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x75, 0x70, 0x70, 
45898
  0x65, 0x72, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x3A, 0x0A, 
45899
  0x2D, 0x20, 0x60, 0x63, 0x60, 0x3A, 0x20, 0x41, 0x53, 0x43, 0x49, 0x49, 0x20, 0x63, 0x68, 0x61, 
45900
  0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x2E, 0x0A, 0x2D, 0x20, 0x60, 0x64, 0x60, 0x2C, 0x20, 0x60, 
45901
  0x69, 0x60, 0x3A, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2C, 0x20, 0x66, 0x6F, 0x72, 
45902
  0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x64, 0x65, 0x63, 0x69, 
45903
  0x6D, 0x61, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2E, 0x0A, 0x2D, 0x20, 0x60, 0x78, 
45904
  0x60, 0x2C, 0x20, 0x60, 0x58, 0x60, 0x3A, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2C, 
45905
  0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 
45906
  0x68, 0x65, 0x78, 0x61, 0x64, 0x65, 0x63, 0x69, 0x6D, 0x61, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 0x62, 
45907
  0x65, 0x72, 0x2E, 0x0A, 0x2D, 0x20, 0x60, 0x6F, 0x60, 0x3A, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 
45908
  0x65, 0x72, 0x2C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 
45909
  0x20, 0x61, 0x6E, 0x20, 0x6F, 0x63, 0x74, 0x61, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 
45910
  0x2E, 0x0A, 0x2D, 0x20, 0x60, 0x66, 0x60, 0x2C, 0x20, 0x60, 0x46, 0x60, 0x3A, 0x20, 0x66, 0x6C, 
45911
  0x6F, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x6E, 0x75, 0x6D, 
45912
  0x62, 0x65, 0x72, 0x2C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x61, 
45913
  0x73, 0x20, 0x61, 0x20, 0x64, 0x65, 0x63, 0x69, 0x6D, 0x61, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 0x62, 
45914
  0x65, 0x72, 0x2E, 0x0A, 0x2D, 0x20, 0x60, 0x65, 0x60, 0x2C, 0x20, 0x60, 0x45, 0x60, 0x3A, 0x20, 
45915
  0x66, 0x6C, 0x6F, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x6E, 
45916
  0x75, 0x6D, 0x62, 0x65, 0x72, 0x2C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 
45917
  0x20, 0x69, 0x6E, 0x20, 0x73, 0x63, 0x69, 0x65, 0x6E, 0x74, 0x69, 0x66, 0x69, 0x63, 0x20, 0x6E, 
45918
  0x6F, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x0A, 0x2D, 0x20, 0x60, 0x67, 0x60, 0x2C, 0x20, 
45919
  0x60, 0x47, 0x60, 0x3A, 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x6F, 
45920
  0x69, 0x6E, 0x74, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 
45921
  0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x69, 0x74, 0x73, 0x20, 0x73, 0x68, 0x6F, 
45922
  0x72, 0x74, 0x65, 0x73, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x2E, 0x0A, 0x2D, 0x20, 0x60, 0x61, 
45923
  0x60, 0x2C, 0x20, 0x60, 0x41, 0x60, 0x3A, 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x69, 0x6E, 0x67, 
45924
  0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2C, 0x20, 0x66, 
45925
  0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x68, 0x65, 
45926
  0x78, 0x61, 0x64, 0x65, 0x63, 0x69, 0x6D, 0x61, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 
45927
  0x2E, 0x0A, 0x2D, 0x20, 0x60, 0x73, 0x60, 0x3A, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 
45928
  0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2C, 0x20, 
45929
  0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 
45930
  0x74, 0x65, 0x73, 0x20, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x64, 0x20, 
45931
  0x6D, 0x61, 0x78, 0x69, 0x6D, 0x75, 0x6D, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x2E, 0x0A, 
45932
  0x2D, 0x20, 0x60, 0x74, 0x60, 0x3A, 0x20, 0x65, 0x6D, 0x69, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 
45933
  0x74, 0x79, 0x70, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 
45934
  0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x0A, 0x2D, 0x20, 0x60, 0x76, 0x60, 0x3A, 0x20, 
45935
  0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x28, 0x64, 0x65, 0x73, 
45936
  0x63, 0x72, 0x69, 0x62, 0x65, 0x20, 0x78, 0x29, 0x2D, 0x20, 0x60, 0x56, 0x60, 0x3A, 0x20, 0x66, 
45937
  0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x28, 0x73, 0x74, 0x72, 0x69, 
45938
  0x6E, 0x67, 0x20, 0x78, 0x29, 0x2D, 0x20, 0x60, 0x6A, 0x60, 0x3A, 0x20, 0x66, 0x6F, 0x72, 0x6D, 
45939
  0x61, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x6A, 0x64, 0x6E, 0x20, 0x28, 0x4A, 0x61, 0x6E, 0x65, 0x74, 
45940
  0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x6E, 0x6F, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x29, 0x2E, 
45941
  0x0A, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 
45942
  0x63, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 
45943
  0x66, 0x69, 0x65, 0x72, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 
45944
  0x6F, 0x72, 0x20, 0x22, 0x70, 0x72, 0x65, 0x74, 0x74, 0x79, 0x2D, 0x70, 0x72, 0x69, 0x6E, 0x74, 
45945
  0x69, 0x6E, 0x67, 0x22, 0x2C, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 
45946
  0x75, 0x70, 0x70, 0x65, 0x72, 0x2D, 0x63, 0x61, 0x73, 0x65, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 
45947
  0x6E, 0x74, 0x73, 0x20, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x63, 0x6F, 0x6C, 
45948
  0x6F, 0x72, 0x65, 0x64, 0x20, 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2E, 0x20, 0x54, 0x68, 0x65, 
45949
  0x73, 0x65, 0x20, 0x73, 0x70, 0x65, 0x66, 0x69, 0x63, 0x69, 0x65, 0x72, 0x73, 0x20, 0x63, 0x61, 
45950
  0x6E, 0x20, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 
45951
  0x6F, 0x6E, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x73, 
45952
  0x70, 0x65, 0x63, 0x69, 0x66, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x61, 0x78, 0x69, 0x6D, 
45953
  0x75, 0x6D, 0x20, 0x6E, 0x65, 0x73, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x64, 0x65, 0x70, 0x74, 0x68, 
45954
  0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x2E, 0x0A, 0x2D, 0x20, 0x60, 0x70, 0x60, 
45955
  0x2C, 0x20, 0x60, 0x50, 0x60, 0x3A, 0x20, 0x70, 0x72, 0x65, 0x74, 0x74, 0x79, 0x20, 0x66, 0x6F, 
45956
  0x72, 0x6D, 0x61, 0x74, 0x2C, 0x20, 0x74, 0x72, 0x75, 0x6E, 0x63, 0x61, 0x74, 0x69, 0x6E, 0x67, 
45957
  0x20, 0x69, 0x66, 0x20, 0x6E, 0x65, 0x63, 0x65, 0x73, 0x73, 0x61, 0x72, 0x79, 0x0A, 0x2D, 0x20, 
45958
  0x60, 0x6D, 0x60, 0x2C, 0x20, 0x60, 0x4D, 0x60, 0x3A, 0x20, 0x70, 0x72, 0x65, 0x74, 0x74, 0x79, 
45959
  0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 
45960
  0x74, 0x72, 0x75, 0x6E, 0x63, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x2E, 0x0A, 0x2D, 0x20, 0x60, 0x71, 
45961
  0x60, 0x2C, 0x20, 0x60, 0x51, 0x60, 0x3A, 0x20, 0x70, 0x72, 0x65, 0x74, 0x74, 0x79, 0x20, 0x66, 
45962
  0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x6F, 0x6E, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6C, 0x69, 0x6E, 
45963
  0x65, 0x2C, 0x20, 0x74, 0x72, 0x75, 0x6E, 0x63, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x66, 
45964
  0x20, 0x6E, 0x65, 0x63, 0x65, 0x73, 0x73, 0x61, 0x72, 0x79, 0x2E, 0x0A, 0x2D, 0x20, 0x60, 0x6E, 
45965
  0x60, 0x2C, 0x20, 0x60, 0x4E, 0x60, 0x3A, 0x20, 0x70, 0x72, 0x65, 0x74, 0x74, 0x79, 0x20, 0x66, 
45966
  0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x6F, 0x6E, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6C, 0x69, 0x6E, 
45967
  0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x74, 0x72, 0x75, 0x6E, 0x63, 0x61, 
45968
  0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x0A, 0xDA, 0x8A, 0x39, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
45969
  0xDA, 0x83, 0x40, 0x80, 0xD1, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x3A, 0xDA, 0x08, 0xCE, 0x80, 0x90, 
45970
  0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 0x2D, 0x66, 0x69, 0x6C, 0x6C, 
45971
  0x65, 0x64, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x62, 0x79, 
45972
  0x74, 0x65, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 
45973
  0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x6C, 0x65, 0x6E, 
45974
  0x67, 0x74, 0x68, 0x20, 0x60, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x60, 0x20, 0x66, 0x69, 0x6C, 0x6C, 
45975
  0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x62, 0x79, 0x74, 0x65, 0x60, 0x2E, 0x20, 
45976
  0x42, 0x79, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x2C, 0x20, 0x60, 0x62, 0x79, 0x74, 
45977
  0x65, 0x60, 0x20, 0x69, 0x73, 0x20, 0x30, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
45978
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 
45979
  0xDA, 0x8A, 0x3B, 0xD3, 0x04, 0xDA, 0x84, 0x25, 0xCB, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 
45980
  0x86, 0xD7, 0x01, 0xDA, 0x06, 0xDA, 0x80, 0xC1, 0xDA, 0x08, 0xCE, 0x26, 0x46, 0x6F, 0x72, 0x6D, 
45981
  0x61, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 
45982
  0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x70, 0x70, 0x60, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 
45983
  0x6F, 0x6E, 0xDA, 0x80, 0xFA, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x86, 0xC4, 
45984
  0x01, 0xDA, 0x06, 0xDA, 0x80, 0xF0, 0xDA, 0x08, 0xCE, 0x51, 0x28, 0x73, 0x6C, 0x75, 0x72, 0x70, 
45985
  0x20, 0x70, 0x61, 0x74, 0x68, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x61, 0x64, 0x20, 0x61, 0x6C, 0x6C, 
45986
  0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 
45987
  0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x60, 0x70, 0x61, 0x74, 
45988
  0x68, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x6E, 0x20, 0x63, 0x6C, 0x6F, 0x73, 
45989
  0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0xDA, 0x8A, 0x3C, 0xD3, 0x03, 
45990
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x85, 0xC9, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x3D, 0xDA, 
45991
  0x08, 0xCE, 0x4D, 0x28, 0x7A, 0x69, 0x70, 0x63, 0x6F, 0x6C, 0x6C, 0x20, 0x6B, 0x73, 0x20, 0x76, 
45992
  0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x74, 0x61, 
45993
  0x62, 0x6C, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x77, 0x6F, 0x20, 0x61, 0x72, 0x72, 
45994
  0x61, 0x79, 0x73, 0x2F, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x73, 0x2E, 0x0A, 0x52, 0x65, 0x74, 0x75, 
45995
  0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 
45996
  0xDA, 0x8A, 0x42, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x86, 0x99, 0x01, 0xDA, 
45997
  0x06, 0xDA, 0x8A, 0x43, 0xDA, 0x08, 0xCE, 0x80, 0x8C, 0x28, 0x66, 0x72, 0x6F, 0x6D, 0x2D, 0x70, 
45998
  0x61, 0x69, 0x72, 0x73, 0x20, 0x70, 0x73, 0x29, 0x0A, 0x0A, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x20, 
45999
  0x61, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x70, 0x61, 
46000
  0x69, 0x72, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 
46001
  0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x65, 0x61, 0x63, 
46002
  0x68, 0x20, 0x70, 0x61, 0x69, 0x72, 0x2E, 0x20, 0x49, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 
46003
  0x65, 0x20, 0x69, 0x6E, 0x76, 0x65, 0x72, 0x73, 0x65, 0x20, 0x6F, 0x66, 0x0A, 0x60, 0x70, 0x61, 
46004
  0x69, 0x72, 0x73, 0x60, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 
46005
  0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 
46006
  0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x83, 0x20, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
46007
  0x18, 0x8E, 0x31, 0x03, 0xDA, 0x06, 0xDA, 0x83, 0x1D, 0xDA, 0x08, 0xCE, 0x6A, 0x28, 0x65, 0x76, 
46008
  0x2F, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x66, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 
46009
  0x0A, 0x43, 0x61, 0x6C, 0x6C, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
46010
  0x20, 0x61, 0x73, 0x79, 0x6E, 0x63, 0x68, 0x72, 0x6F, 0x6E, 0x6F, 0x75, 0x73, 0x6C, 0x79, 0x2E, 
46011
  0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 
46012
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6C, 
46013
  0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x75, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x75, 
46014
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x8A, 0x48, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
46015
  0x00, 0xDA, 0x84, 0xD8, 0x81, 0xD5, 0x01, 0xDA, 0x06, 0xDA, 0x82, 0x71, 0xDA, 0x08, 0xCE, 0x71, 
46016
  0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x73, 0x65, 0x74, 0x65, 0x6E, 0x76, 0x20, 0x66, 0x69, 
46017
  0x62, 0x65, 0x72, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x73, 
46018
  0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 
46019
  0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 
46020
  0x65, 0x72, 0x2E, 0x20, 0x53, 0x65, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x74, 
46021
  0x6F, 0x20, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 
46022
  0x72, 0x65, 0x6E, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 
46023
  0x2E, 0xDA, 0x89, 0x54, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x83, 0xFA, 0x01, 
46024
  0xDA, 0x06, 0xDA, 0x8A, 0x49, 0xDA, 0x08, 0xCE, 0x80, 0xDD, 0x28, 0x72, 0x61, 0x6E, 0x67, 0x65, 
46025
  0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 
46026
  0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x76, 0x61, 0x6C, 
46027
  0x75, 0x65, 0x73, 0x20, 0x5B, 0x73, 0x74, 0x61, 0x72, 0x74, 0x2C, 0x20, 0x65, 0x6E, 0x64, 0x29, 
46028
  0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x73, 0x74, 
46029
  0x65, 0x70, 0x2E, 0x0A, 0x57, 0x69, 0x74, 0x68, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x61, 0x72, 0x67, 
46030
  0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 
46031
  0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x5B, 0x30, 0x2C, 0x20, 0x65, 0x6E, 0x64, 0x29, 0x2E, 
46032
  0x20, 0x57, 0x69, 0x74, 0x68, 0x20, 0x74, 0x77, 0x6F, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 
46033
  0x6E, 0x74, 0x73, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x0A, 0x61, 0x20, 0x72, 
46034
  0x61, 0x6E, 0x67, 0x65, 0x20, 0x5B, 0x73, 0x74, 0x61, 0x72, 0x74, 0x2C, 0x20, 0x65, 0x6E, 0x64, 
46035
  0x29, 0x2E, 0x20, 0x57, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x2C, 0x20, 0x72, 
46036
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x77, 
46037
  0x69, 0x74, 0x68, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x73, 0x74, 0x65, 
46038
  0x70, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x2E, 0xDA, 0x8A, 0x57, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
46039
  0x00, 0xDA, 0x12, 0x83, 0x56, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x58, 0xDA, 0x08, 0xCE, 0x80, 0xD6, 
46040
  0x28, 0x6E, 0x65, 0x74, 0x2F, 0x73, 0x65, 0x6E, 0x64, 0x2D, 0x74, 0x6F, 0x20, 0x73, 0x74, 0x72, 
46041
  0x65, 0x61, 0x6D, 0x20, 0x64, 0x65, 0x73, 0x74, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x26, 0x6F, 
46042
  0x70, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x29, 0x0A, 0x0A, 0x57, 0x72, 0x69, 
46043
  0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x74, 
46044
  0x6F, 0x20, 0x61, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 
46045
  0x6D, 0x2E, 0x20, 0x64, 0x65, 0x73, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x68, 0x65, 
46046
  0x20, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6E, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x64, 0x64, 
46047
  0x72, 0x65, 0x73, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x63, 0x6B, 
46048
  0x65, 0x74, 0x2E, 0x20, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 
46049
  0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x20, 0x69, 0x6E, 
46050
  0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2C, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 
46051
  0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
46052
  0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x73, 
46053
  0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0xDA, 0x8A, 0x59, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
46054
  0xDA, 0x18, 0x86, 0x1C, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x5A, 0xDA, 0x08, 0xCE, 0x80, 0xC0, 0x28, 
46055
  0x6D, 0x65, 0x72, 0x67, 0x65, 0x20, 0x26, 0x20, 0x63, 0x6F, 0x6C, 0x6C, 0x73, 0x29, 0x0A, 0x0A, 
46056
  0x4D, 0x65, 0x72, 0x67, 0x65, 0x73, 0x20, 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 0x20, 
46057
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x2F, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x73, 0x20, 0x69, 
46058
  0x6E, 0x74, 0x6F, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 
46059
  0x65, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x61, 0x70, 0x70, 0x65, 
46060
  0x61, 0x72, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x6E, 
46061
  0x20, 0x6F, 0x6E, 0x65, 0x0A, 0x63, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
46062
  0x69, 0x6E, 0x20, 0x60, 0x63, 0x6F, 0x6C, 0x6C, 0x73, 0x60, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x6E, 
46063
  0x20, 0x6C, 0x61, 0x74, 0x65, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x72, 0x65, 
46064
  0x70, 0x6C, 0x61, 0x63, 0x65, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6F, 
46065
  0x75, 0x73, 0x20, 0x6F, 0x6E, 0x65, 0x73, 0x2E, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
46066
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 
46067
  0x8A, 0x61, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x88, 0x57, 0x01, 0xDA, 0x06, 
46068
  0xDA, 0x8A, 0x62, 0xDA, 0x08, 0xCE, 0x38, 0x28, 0x6F, 0x73, 0x2F, 0x75, 0x6D, 0x61, 0x73, 0x6B, 
46069
  0x20, 0x6D, 0x61, 0x73, 0x6B, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x61, 0x20, 0x6E, 0x65, 
46070
  0x77, 0x20, 0x75, 0x6D, 0x61, 0x73, 0x6B, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
46071
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x6C, 0x64, 0x20, 0x75, 0x6D, 0x61, 0x73, 0x6B, 0x2E, 0xDA, 
46072
  0x8A, 0x63, 0xD3, 0x04, 0xDA, 0x84, 0x25, 0xCB, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8B, 
46073
  0xFB, 0x01, 0xDA, 0x06, 0xDA, 0x83, 0x4A, 0xDA, 0x08, 0xCE, 0x43, 0x57, 0x68, 0x65, 0x74, 0x68, 
46074
  0x65, 0x72, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x6F, 0x6C, 
46075
  0x6F, 0x72, 0x69, 0x7A, 0x65, 0x20, 0x64, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x61, 0x74, 
46076
  0x69, 0x6F, 0x6E, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 
46077
  0x20, 0x60, 0x64, 0x6F, 0x63, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x60, 0x2E, 0xDA, 0x8A, 
46078
  0x64, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x0E, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 
46079
  0x72, 0x65, 0x2F, 0x61, 0x73, 0x6D, 0x2E, 0x63, 0x84, 0x31, 0x01, 0xDA, 0x06, 0xDA, 0x80, 0xE6, 
46080
  0xDA, 0x08, 0xCE, 0x84, 0xC5, 0x28, 0x64, 0x69, 0x73, 0x61, 0x73, 0x6D, 0x20, 0x66, 0x75, 0x6E, 
46081
  0x63, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x66, 0x69, 0x65, 0x6C, 0x64, 0x29, 0x0A, 0x0A, 0x52, 
46082
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x73, 0x73, 0x65, 0x6D, 0x62, 0x6C, 0x79, 0x20, 
46083
  0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 
46084
  0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x74, 0x68, 
46085
  0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
46086
  0x2E, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 
46087
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 
46088
  0x20, 0x63, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x57, 0x69, 0x6C, 
46089
  0x6C, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x6F, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 
46090
  0x20, 0x6F, 0x6E, 0x20, 0x61, 0x20, 0x62, 0x61, 0x64, 0x6C, 0x79, 0x20, 0x74, 0x79, 0x70, 0x65, 
46091
  0x64, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x67, 
46092
  0x69, 0x76, 0x65, 0x6E, 0x20, 0x61, 0x20, 0x66, 0x69, 0x65, 0x6C, 0x64, 0x20, 0x6E, 0x61, 0x6D, 
46093
  0x65, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x72, 0x65, 0x74, 
46094
  0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x70, 0x61, 0x72, 0x74, 0x20, 0x6F, 0x66, 
46095
  0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x73, 
46096
  0x73, 0x65, 0x6D, 0x62, 0x6C, 0x79, 0x2E, 0x20, 0x50, 0x6F, 0x73, 0x73, 0x69, 0x62, 0x6C, 0x65, 
46097
  0x20, 0x66, 0x69, 0x65, 0x6C, 0x64, 0x73, 0x20, 0x61, 0x72, 0x65, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 
46098
  0x3A, 0x61, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 
46099
  0x6F, 0x66, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x20, 0x61, 0x6E, 0x64, 0x20, 
46100
  0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 
46101
  0x74, 0x73, 0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x6D, 0x69, 0x6E, 0x2D, 0x61, 0x72, 0x69, 0x74, 0x79, 
46102
  0x20, 0x2D, 0x20, 0x6D, 0x69, 0x6E, 0x69, 0x6D, 0x75, 0x6D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 
46103
  0x72, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x66, 
46104
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x63, 
46105
  0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x6D, 
46106
  0x61, 0x78, 0x2D, 0x61, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2D, 0x20, 0x6D, 0x61, 0x78, 0x69, 0x6D, 
46107
  0x75, 0x6D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x72, 0x67, 
46108
  0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
46109
  0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x77, 0x69, 
46110
  0x74, 0x68, 0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x76, 0x61, 0x72, 0x61, 0x72, 0x67, 0x20, 0x2D, 0x20, 
46111
  0x74, 0x72, 0x75, 0x65, 0x20, 0x69, 0x66, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
46112
  0x20, 0x63, 0x61, 0x6E, 0x20, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x61, 0x20, 0x76, 0x61, 0x72, 0x69, 
46113
  0x61, 0x62, 0x6C, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x61, 
46114
  0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x62, 0x79, 0x74, 
46115
  0x65, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x2D, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 
46116
  0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x64, 0x20, 0x62, 0x79, 0x74, 0x65, 0x63, 0x6F, 0x64, 0x65, 
46117
  0x20, 0x69, 0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x20, 0x45, 
46118
  0x61, 0x63, 0x68, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
46119
  0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 
46120
  0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x2D, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x6F, 0x66, 0x20, 
46121
  0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 
46122
  0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 
46123
  0x61, 0x73, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6F, 0x6D, 
46124
  0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x6E, 0x61, 0x6D, 0x65, 
46125
  0x20, 0x6F, 0x66, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x0A, 0x2A, 0x20, 
46126
  0x3A, 0x73, 0x6C, 0x6F, 0x74, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x2D, 0x20, 0x68, 0x6F, 0x77, 
46127
  0x20, 0x6D, 0x61, 0x6E, 0x79, 0x20, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6C, 0x20, 0x72, 0x65, 
46128
  0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x6C, 0x6F, 0x74, 
46129
  0x73, 0x2C, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
46130
  0x20, 0x75, 0x73, 0x65, 0x73, 0x2E, 0x20, 0x43, 0x6F, 0x72, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 
46131
  0x64, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x73, 0x70, 0x61, 0x63, 
46132
  0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 
46133
  0x6F, 0x6E, 0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x6D, 0x61, 0x70, 
46134
  0x20, 0x2D, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x20, 0x61, 
46135
  0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x73, 0x6C, 0x6F, 0x74, 0x73, 0x2E, 0x0A, 
46136
  0x2A, 0x20, 0x3A, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74, 0x73, 0x20, 0x2D, 0x20, 0x61, 
46137
  0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x74, 
46138
  0x61, 0x6E, 0x74, 0x73, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x64, 0x20, 
46139
  0x62, 0x79, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
46140
  0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x6D, 0x61, 0x70, 0x20, 0x2D, 
46141
  0x20, 0x61, 0x20, 0x6D, 0x61, 0x70, 0x70, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x66, 0x20, 0x65, 0x61, 
46142
  0x63, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x69, 0x6E, 0x73, 0x74, 
46143
  0x72, 0x75, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x6C, 0x69, 0x6E, 
46144
  0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x20, 0x69, 0x6E, 0x20, 
46145
  0x74, 0x68, 0x65, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 
46146
  0x0A, 0x2A, 0x20, 0x3A, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x73, 
46147
  0x20, 0x2D, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x61, 0x6C, 0x20, 0x6D, 
46148
  0x61, 0x70, 0x70, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x66, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 
46149
  0x65, 0x6E, 0x63, 0x6C, 0x6F, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 
46150
  0x6F, 0x6E, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 
46151
  0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x2E, 
46152
  0x0A, 0x2A, 0x20, 0x3A, 0x64, 0x65, 0x66, 0x73, 0x20, 0x2D, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 
46153
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x69, 
46154
  0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 
46155
  0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6D, 0x61, 0x79, 0x20, 0x69, 0x6E, 0x73, 
46156
  0x74, 0x61, 0x6E, 0x74, 0x69, 0x61, 0x74, 0x65, 0x2E, 0x0A, 0xDA, 0x8A, 0x65, 0xD3, 0x03, 0xDA, 
46157
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0xFA, 0x82, 0x5C, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x66, 0xDA, 
46158
  0x08, 0xCE, 0x80, 0xAD, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x74, 0x72, 0x69, 0x6D, 
46159
  0x20, 0x73, 0x74, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x65, 0x74, 0x29, 0x0A, 0x0A, 
46160
  0x54, 0x72, 0x69, 0x6D, 0x20, 0x6C, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x64, 
46161
  0x20, 0x74, 0x72, 0x61, 0x69, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x77, 0x68, 0x69, 0x74, 0x65, 0x73, 
46162
  0x70, 0x61, 0x63, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 
46163
  0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 
46164
  0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x60, 0x73, 0x65, 0x74, 0x60, 
46165
  0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x63, 0x6F, 
46166
  0x6E, 0x73, 0x69, 0x64, 0x65, 0x72, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x63, 0x68, 0x61, 0x72, 
46167
  0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x73, 0x65, 0x74, 0x60, 0x20, 
46168
  0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x77, 0x68, 0x69, 0x74, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 
46169
  0x2E, 0xDA, 0x8A, 0x67, 0xD3, 0x04, 0xDA, 0x84, 0x25, 0xCB, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
46170
  0x18, 0x88, 0xF2, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x68, 0xDA, 0x08, 0xCE, 0x80, 0x91, 0x54, 0x68, 
46171
  0x65, 0x20, 0x69, 0x6D, 0x70, 0x6C, 0x69, 0x63, 0x69, 0x74, 0x20, 0x62, 0x61, 0x73, 0x65, 0x20, 
46172
  0x67, 0x72, 0x61, 0x6D, 0x6D, 0x61, 0x72, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 
46173
  0x6E, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x50, 0x45, 0x47, 0x73, 
46174
  0x2E, 0x20, 0x41, 0x6E, 0x79, 0x20, 0x75, 0x6E, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x64, 0x20, 
46175
  0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x0A, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x77, 
46176
  0x68, 0x65, 0x6E, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 
46177
  0x70, 0x65, 0x67, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 
46178
  0x6B, 0x75, 0x70, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x74, 0x61, 0x62, 0x6C, 
46179
  0x65, 0x20, 0x28, 0x69, 0x66, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x64, 0x29, 0x2E, 0xDA, 
46180
  0x8A, 0x69, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x85, 0x9B, 0x01, 0xDA, 0x06, 
46181
  0xDA, 0x8A, 0x6A, 0xDA, 0x08, 0xCE, 0x43, 0x28, 0x61, 0x6E, 0x79, 0x3F, 0x20, 0x69, 0x6E, 0x64, 
46182
  0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
46183
  0x69, 0x72, 0x73, 0x74, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 
46184
  0x65, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 
46185
  0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x8A, 0x6E, 0xD3, 0x03, 0xDA, 
46186
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x86, 0xE1, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x6F, 0xDA, 0x08, 
46187
  0xCE, 0x3F, 0x28, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x6C, 0x69, 0x6E, 0x65, 0x73, 0x20, 0x66, 0x69, 
46188
  0x6C, 0x65, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x69, 
46189
  0x74, 0x65, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 
46190
  0x20, 0x6C, 0x69, 0x6E, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 
46191
  0x2E, 0xDA, 0x8A, 0x72, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 0xA9, 0x82, 0x08, 
46192
  0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x73, 0xDA, 0x08, 0xCE, 0x70, 0x28, 0x67, 0x63, 0x69, 0x6E, 0x74, 
46193
  0x65, 0x72, 0x76, 0x61, 0x6C, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
46194
  0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x6E, 0x75, 0x6D, 0x62, 
46195
  0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x61, 
46196
  0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x20, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x20, 0x72, 
46197
  0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 
46198
  0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x67, 0x61, 0x72, 0x62, 0x61, 0x67, 0x65, 0x20, 0x63, 
46199
  0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x8A, 0x74, 0xD3, 0x03, 0xDA, 
46200
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x84, 0xAE, 0x83, 0xE5, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x75, 0xDA, 
46201
  0x08, 0xCE, 0x60, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x62, 0x79, 0x74, 0x65, 0x20, 
46202
  0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x62, 0x29, 0x0A, 0x0A, 0x49, 0x6E, 0x70, 0x75, 0x74, 
46203
  0x20, 0x61, 0x20, 0x73, 0x69, 0x6E, 0x67, 0x6C, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x60, 
46204
  0x62, 0x60, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 
46205
  0x65, 0x72, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0x20, 
46206
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 
46207
  0x65, 0x72, 0x2E, 0xDA, 0x8A, 0x76, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x85, 0x6F, 
46208
  0x81, 0x58, 0x01, 0xDA, 0x06, 0xDA, 0x82, 0x4F, 0xDA, 0x08, 0xCE, 0x80, 0x80, 0x28, 0x61, 0x72, 
46209
  0x72, 0x61, 0x79, 0x2F, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x20, 0x61, 0x72, 0x72, 0x29, 0x0A, 0x0A, 
46210
  0x45, 0x6D, 0x70, 0x74, 0x69, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 
46211
  0x2C, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x74, 0x27, 0x73, 0x20, 0x63, 
46212
  0x6F, 0x75, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x30, 0x20, 0x62, 0x75, 0x74, 0x20, 0x64, 0x6F, 
46213
  0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x72, 0x65, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 
46214
  0x62, 0x61, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 
46215
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 
46216
  0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x7F, 0xD3, 
46217
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x83, 0x2C, 0x01, 0xDA, 0x06, 0xDA, 0x88, 0x2A, 
46218
  0xDA, 0x08, 0xCE, 0x1C, 0x28, 0x6F, 0x64, 0x64, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 
46219
  0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x64, 0x64, 0x2E, 
46220
  0xDA, 0x82, 0xDD, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x83, 0x68, 0x01, 0xDA, 
46221
  0x06, 0xDA, 0x82, 0xDA, 0xDA, 0x08, 0xCE, 0x81, 0xC7, 0x28, 0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 
46222
  0x20, 0x66, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x52, 0x65, 
46223
  0x64, 0x75, 0x63, 0x65, 0x2C, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x6B, 0x6E, 0x6F, 0x77, 0x20, 
46224
  0x61, 0x73, 0x20, 0x66, 0x6F, 0x6C, 0x64, 0x2D, 0x6C, 0x65, 0x66, 0x74, 0x20, 0x69, 0x6E, 0x20, 
46225
  0x6D, 0x61, 0x6E, 0x79, 0x20, 0x6C, 0x61, 0x6E, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x2C, 0x20, 
46226
  0x74, 0x72, 0x61, 0x6E, 0x73, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x0A, 0x61, 0x6E, 0x20, 0x69, 0x6E, 
46227
  0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x28, 0x61, 0x72, 0x72, 0x61, 
46228
  0x79, 0x2C, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x29, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 
46229
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x6F, 
46230
  0x64, 0x75, 0x63, 0x65, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x62, 0x79, 0x20, 
46231
  0x61, 0x70, 0x70, 0x6C, 0x79, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x66, 0x60, 0x20, 0x74, 0x6F, 0x0A, 
46232
  0x65, 0x61, 0x63, 0x68, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 
46233
  0x6F, 0x72, 0x64, 0x65, 0x72, 0x2E, 0x20, 0x60, 0x66, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 
46234
  0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x32, 0x20, 0x61, 0x72, 
46235
  0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2C, 0x20, 0x60, 0x28, 0x66, 0x20, 0x61, 0x63, 0x63, 
46236
  0x75, 0x6D, 0x20, 0x65, 0x6C, 0x29, 0x60, 0x2C, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x0A, 0x60, 
46237
  0x61, 0x63, 0x63, 0x75, 0x6D, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 
46238
  0x69, 0x74, 0x69, 0x61, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 
46239
  0x60, 0x65, 0x6C, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 
46240
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 
46241
  0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 
46242
  0x2E, 0x0A, 0x60, 0x66, 0x60, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 
46243
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
46244
  0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x60, 0x61, 0x63, 0x63, 0x75, 
46245
  0x6D, 0x60, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x63, 
46246
  0x61, 0x6C, 0x6C, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x66, 0x60, 0x2E, 0x20, 0x60, 0x72, 0x65, 0x64, 
46247
  0x75, 0x63, 0x65, 0x60, 0x0A, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
46248
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 
46249
  0x6E, 0x61, 0x6C, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x66, 0x60, 0x2E, 
46250
  0xDA, 0x8A, 0x77, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8E, 0x44, 0x03, 0xDA, 
46251
  0x06, 0xDA, 0x8A, 0x78, 0xDA, 0x08, 0xCE, 0x6A, 0x28, 0x65, 0x76, 0x2F, 0x73, 0x70, 0x61, 0x77, 
46252
  0x6E, 0x2D, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 
46253
  0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x73, 0x6F, 0x6D, 0x65, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 
46254
  0x69, 0x6E, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2E, 
46255
  0x20, 0x4C, 0x69, 0x6B, 0x65, 0x20, 0x60, 0x65, 0x76, 0x2F, 0x64, 0x6F, 0x2D, 0x74, 0x68, 0x72, 
46256
  0x65, 0x61, 0x64, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 
46257
  0x73, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x6D, 0x6D, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x6C, 
46258
  0x79, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x8A, 0x7C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
46259
  0x12, 0x81, 0x50, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x7D, 0xDA, 0x08, 0xCE, 0x82, 0x1C, 0x28, 0x6E, 
46260
  0x65, 0x74, 0x2F, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x68, 0x6F, 0x73, 0x74, 0x20, 
46261
  0x70, 0x6F, 0x72, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6D, 
46262
  0x75, 0x6C, 0x74, 0x69, 0x29, 0x0A, 0x0A, 0x4C, 0x6F, 0x6F, 0x6B, 0x20, 0x75, 0x70, 0x20, 0x74, 
46263
  0x68, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x6E, 
46264
  0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 
46265
  0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x68, 0x6F, 0x73, 0x74, 0x6E, 0x61, 0x6D, 0x65, 0x2C, 0x20, 
46266
  0x70, 0x6F, 0x72, 0x74, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 
46267
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
46268
  0x6E, 0x73, 0x20, 0x61, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 
46269
  0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 
46270
  0x73, 0x65, 0x6E, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6D, 0x73, 0x20, 0x6F, 
46271
  0x76, 0x65, 0x72, 0x20, 0x6E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x20, 0x77, 0x69, 0x74, 0x68, 
46272
  0x6F, 0x75, 0x74, 0x20, 0x65, 0x73, 0x74, 0x61, 0x62, 0x6C, 0x69, 0x73, 0x68, 0x69, 0x6E, 0x67, 
46273
  0x20, 0x61, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x4F, 
46274
  0x6E, 0x20, 0x50, 0x6F, 0x73, 0x69, 0x78, 0x20, 0x70, 0x6C, 0x61, 0x74, 0x66, 0x6F, 0x72, 0x6D, 
46275
  0x73, 0x2C, 0x20, 0x79, 0x6F, 0x75, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x75, 0x73, 0x65, 0x20, 0x3A, 
46276
  0x75, 0x6E, 0x69, 0x78, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x74, 0x6F, 
46277
  0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x75, 0x6E, 
46278
  0x69, 0x78, 0x20, 0x64, 0x6F, 0x6D, 0x61, 0x69, 0x6E, 0x20, 0x73, 0x6F, 0x63, 0x6B, 0x65, 0x74, 
46279
  0x2C, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 
46280
  0x20, 0x69, 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 
46281
  0x20, 0x70, 0x6F, 0x72, 0x74, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 
46282
  0x4F, 0x6E, 0x20, 0x4C, 0x69, 0x6E, 0x75, 0x78, 0x2C, 0x20, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 
46283
  0x63, 0x74, 0x20, 0x75, 0x6E, 0x69, 0x78, 0x20, 0x64, 0x6F, 0x6D, 0x61, 0x69, 0x6E, 0x20, 0x73, 
46284
  0x6F, 0x63, 0x6B, 0x65, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 
46285
  0x66, 0x69, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x6C, 0x65, 0x61, 0x64, 
46286
  0x69, 0x6E, 0x67, 0x20, 0x27, 0x40, 0x27, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 
46287
  0x72, 0x20, 0x69, 0x6E, 0x20, 0x70, 0x6F, 0x72, 0x74, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x6D, 
46288
  0x75, 0x6C, 0x74, 0x69, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 
46289
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 0x6C, 0x6C, 
46290
  0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6D, 0x61, 
46291
  0x74, 0x63, 0x68, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 
46292
  0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x6A, 0x75, 0x73, 0x74, 0x20, 
46293
  0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x2E, 0xDA, 0x8A, 0x7E, 0xD3, 0x03, 0xDA, 
46294
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x81, 0x75, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x7F, 0xDA, 0x08, 
46295
  0xCE, 0x31, 0x28, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x26, 0x6F, 0x70, 
46296
  0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
46297
  0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6F, 0x6D, 0x70, 0x74, 0x20, 0x70, 0x6F, 0x69, 
46298
  0x6E, 0x74, 0x2E, 0xCF, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x2D, 0x69, 0x6E, 0x66, 0xD3, 0x03, 
46299
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 0x9A, 0x01, 0xDA, 0x06, 0xC8, 0x00, 0x00, 
46300
  0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xDA, 0x08, 0xCE, 0x29, 0x54, 0x68, 0x65, 0x20, 0x6E, 0x75, 
46301
  0x6D, 0x62, 0x65, 0x72, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x69, 0x6E, 
46302
  0x67, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x69, 0x6E, 0x66, 0x69, 0x6E, 
46303
  0x69, 0x74, 0x79, 0xDA, 0x84, 0x4D, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x81, 
46304
  0x40, 0x01, 0xDA, 0x06, 0xDA, 0x84, 0x4B, 0xDA, 0x08, 0xCE, 0x80, 0x96, 0x28, 0x64, 0x65, 0x66, 
46305
  0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 
46306
  0x0A, 0x52, 0x75, 0x6E, 0x20, 0x60, 0x66, 0x6F, 0x72, 0x6D, 0x60, 0x20, 0x75, 0x6E, 0x63, 0x6F, 
46307
  0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x61, 0x66, 0x74, 0x65, 
46308
  0x72, 0x20, 0x60, 0x62, 0x6F, 0x64, 0x79, 0x60, 0x2C, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x20, 0x69, 
46309
  0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x77, 
46310
  0x73, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0x0A, 0x57, 0x69, 0x6C, 0x6C, 
46311
  0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x72, 0x75, 0x6E, 0x20, 0x60, 0x66, 0x6F, 0x72, 0x6D, 0x60, 
46312
  0x20, 0x69, 0x66, 0x20, 0x61, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 
46313
  0x6C, 0x20, 0x30, 0x2D, 0x34, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 
46314
  0x64, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x8A, 0x82, 0xD3, 0x04, 0xDA, 0x84, 0x25, 0xCB, 0xDA, 0x03, 
46315
  0xD2, 0x03, 0x00, 0xDA, 0x18, 0x84, 0xBB, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x83, 0xDA, 0x08, 0xCE, 
46316
  0x2D, 0x57, 0x68, 0x65, 0x72, 0x65, 0x20, 0x6E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x20, 0x70, 0x72, 
46317
  0x69, 0x6E, 0x74, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x70, 0x72, 
46318
  0x69, 0x6E, 0x74, 0x20, 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x74, 0x6F, 0x2E, 0xDA, 0x8A, 
46319
  0x84, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x9D, 0x01, 0xDA, 0x06, 0xDA, 
46320
  0x8A, 0x85, 0xDA, 0x08, 0xCE, 0x7C, 0x28, 0x6F, 0x73, 0x2F, 0x69, 0x73, 0x61, 0x74, 0x74, 0x79, 
46321
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 
46322
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x69, 0x66, 0x20, 0x60, 0x66, 0x69, 
46323
  0x6C, 0x65, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x65, 0x72, 0x6D, 0x69, 0x6E, 0x61, 
46324
  0x6C, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x66, 0x69, 0x6C, 0x65, 0x60, 0x20, 0x69, 0x73, 0x20, 
46325
  0x6E, 0x6F, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2C, 0x20, 0x69, 
46326
  0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x74, 
46327
  0x6F, 0x20, 0x73, 0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, 0x64, 0x20, 0x6F, 0x75, 0x74, 0x70, 0x75, 
46328
  0x74, 0x2E, 0xDA, 0x8A, 0x86, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x63, 0x01, 
46329
  0xDA, 0x06, 0xDA, 0x8A, 0x87, 0xDA, 0x08, 0xCE, 0x1C, 0x28, 0x6E, 0x61, 0x6E, 0x3F, 0x20, 0x78, 
46330
  0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 
46331
  0x20, 0x4E, 0x61, 0x4E, 0x2E, 0xDA, 0x8A, 0x89, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
46332
  0x86, 0xA9, 0x81, 0x07, 0x01, 0xDA, 0x06, 0xDA, 0x80, 0xDF, 0xDA, 0x08, 0xCE, 0x66, 0x28, 0x64, 
46333
  0x79, 0x6E, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x64, 0x65, 0x66, 0x61, 
46334
  0x75, 0x6C, 0x74, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x61, 0x20, 0x64, 0x79, 0x6E, 0x61, 
46335
  0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x2E, 0x20, 0x52, 0x65, 0x74, 
46336
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 
46337
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x28, 0x6F, 0x72, 0x20, 0x6E, 0x69, 0x6C, 0x29, 0x20, 
46338
  0x69, 0x66, 0x20, 0x6E, 0x6F, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x6F, 
46339
  0x75, 0x6E, 0x64, 0x2E, 0xDA, 0x8A, 0x8A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x84, 
46340
  0xBE, 0x86, 0x2F, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x8B, 0xDA, 0x08, 0xCE, 0x80, 0xBE, 0x28, 0x75, 
46341
  0x6E, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 
46342
  0x26, 0x6F, 0x70, 0x74, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x29, 0x0A, 0x0A, 0x55, 0x6E, 
46343
  0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
46344
  0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x41, 
46345
  0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 
46346
  0x70, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x70, 
46347
  0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 
46348
  0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x6C, 0x69, 0x61, 0x73, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 
46349
  0x62, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6F, 0x6C, 0x76, 0x65, 0x64, 0x2E, 0x20, 0x52, 0x65, 0x74, 
46350
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x75, 
46351
  0x6E, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6F, 0x6D, 
46352
  0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x8A, 0x8C, 0xD3, 
46353
  0x04, 0xDA, 0x84, 0x25, 0xCB, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x84, 0xC9, 0x01, 0xDA, 
46354
  0x06, 0xDA, 0x82, 0x5C, 0xDA, 0x08, 0xCE, 0x80, 0x8F, 0x54, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 
46355
  0x72, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x69, 0x6E, 0x74, 0x20, 0x77, 0x61, 0x72, 0x6E, 0x69, 0x6E, 
46356
  0x67, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x77, 0x61, 0x72, 
46357
  0x6E, 0x69, 0x6E, 0x67, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 
46358
  0x65, 0x20, 0x6C, 0x69, 0x6E, 0x74, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x61, 0x74, 0x20, 
46359
  0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 
46360
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x65, 0x64, 0x20, 
46361
  0x62, 0x75, 0x74, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
46362
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x69, 0x6E, 0x75, 0x65, 0x20, 0x61, 0x73, 
46363
  0x20, 0x6E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x2E, 0xDA, 0x8A, 0x8D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
46364
  0x03, 0x00, 0xDA, 0x86, 0xA9, 0x81, 0x74, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x8E, 0xDA, 0x08, 0xCE, 
46365
  0x2E, 0x28, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 
46366
  0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 
46367
  0x20, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2E, 0xDA, 
46368
  0x82, 0xF4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x82, 0xF1, 0x01, 0xDA, 0x06, 
46369
  0xDA, 0x83, 0xE3, 0xDA, 0x08, 0xCE, 0x3F, 0x28, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x78, 0x73, 0x29, 
46370
  0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x65, 
46371
  0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x6E, 0x20, 0x69, 
46372
  0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 
46373
  0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0xDA, 0x88, 0xE6, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
46374
  0xDA, 0x18, 0x83, 0x29, 0x01, 0xDA, 0x06, 0xDA, 0x88, 0xE4, 0xDA, 0x08, 0xCE, 0x24, 0x28, 0x6E, 
46375
  0x65, 0x67, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 
46376
  0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 
46377
  0x30, 0x2E, 0xDA, 0x8A, 0x8F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 0xA9, 0x81, 
46378
  0xF8, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x90, 0xDA, 0x08, 0xCE, 0x80, 0xD3, 0x28, 0x67, 0x63, 0x73, 
46379
  0x65, 0x74, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6C, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 
46380
  0x76, 0x61, 0x6C, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 
46381
  0x65, 0x67, 0x65, 0x72, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x62, 
46382
  0x79, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 
46383
  0x20, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x20, 0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 
46384
  0x67, 0x61, 0x72, 0x62, 0x61, 0x67, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x69, 
46385
  0x6F, 0x6E, 0x2E, 0x20, 0x4C, 0x6F, 0x77, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x66, 
46386
  0x6F, 0x72, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 
46387
  0x20, 0x62, 0x65, 0x20, 0x73, 0x6C, 0x6F, 0x77, 0x65, 0x72, 0x20, 0x62, 0x75, 0x74, 0x20, 0x75, 
46388
  0x73, 0x65, 0x20, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x2E, 0x20, 
46389
  0x48, 0x69, 0x67, 0x68, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 
46390
  0x20, 0x62, 0x65, 0x20, 0x66, 0x61, 0x73, 0x74, 0x65, 0x72, 0x20, 0x62, 0x75, 0x74, 0x20, 0x75, 
46391
  0x73, 0x65, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x2E, 0xDA, 
46392
  0x8A, 0x91, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x85, 0x6F, 0x80, 0xC7, 0x01, 0xDA, 
46393
  0x06, 0xDA, 0x8A, 0x92, 0xDA, 0x08, 0xCE, 0x81, 0x56, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 
46394
  0x65, 0x6E, 0x73, 0x75, 0x72, 0x65, 0x20, 0x61, 0x72, 0x72, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 
46395
  0x69, 0x74, 0x79, 0x20, 0x67, 0x72, 0x6F, 0x77, 0x74, 0x68, 0x29, 0x0A, 0x0A, 0x45, 0x6E, 0x73, 
46396
  0x75, 0x72, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x65, 
46397
  0x6D, 0x6F, 0x72, 0x79, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 
46398
  0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x69, 0x73, 0x20, 0x6C, 0x61, 0x72, 0x67, 0x65, 0x20, 
46399
  0x65, 0x6E, 0x6F, 0x75, 0x67, 0x68, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x63, 0x61, 0x70, 0x61, 
46400
  0x63, 0x69, 0x74, 0x79, 0x60, 0x20, 0x69, 0x74, 0x65, 0x6D, 0x73, 0x20, 0x61, 0x74, 0x20, 0x74, 
46401
  0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x72, 0x61, 0x74, 0x65, 0x20, 0x6F, 0x66, 
46402
  0x20, 0x67, 0x72, 0x6F, 0x77, 0x74, 0x68, 0x2E, 0x20, 0x60, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 
46403
  0x74, 0x79, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x67, 0x72, 0x6F, 0x77, 0x74, 0x68, 0x60, 
46404
  0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 
46405
  0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x69, 0x6E, 
46406
  0x67, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6C, 
46407
  0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x65, 0x6E, 0x6F, 0x75, 0x67, 0x68, 0x2C, 0x20, 0x74, 0x68, 
46408
  0x65, 0x6E, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
46409
  0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x68, 0x69, 0x6E, 0x67, 0x2E, 0x20, 0x4F, 
46410
  0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x61, 
46411
  0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x77, 0x69, 0x6C, 
46412
  0x6C, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x64, 
46413
  0x20, 0x73, 0x6F, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 
46414
  0x73, 0x20, 0x65, 0x6E, 0x6F, 0x75, 0x67, 0x68, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2E, 0xDA, 
46415
  0x8A, 0x93, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x84, 0xD8, 0x81, 0xCA, 0x01, 0xDA, 
46416
  0x06, 0xDA, 0x80, 0xCB, 0xDA, 0x08, 0xCE, 0x60, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x67, 
46417
  0x65, 0x74, 0x65, 0x6E, 0x76, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x47, 0x65, 
46418
  0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 
46419
  0x6E, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 
46420
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x6E, 
46421
  0x6F, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x69, 0x73, 0x20, 
46422
  0x73, 0x65, 0x74, 0x20, 0x79, 0x65, 0x74, 0x2E, 0xDA, 0x8A, 0x94, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 
46423
  0x03, 0x00, 0xDA, 0x18, 0x82, 0x09, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x95, 0xDA, 0x08, 0xCE, 0x6D, 
46424
  0x28, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x20, 0x6E, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 
46425
  0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x20, 0x62, 0x6F, 0x64, 0x79, 
46426
  0x20, 0x6E, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6E, 0x20, 0x69, 
46427
  0x73, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2C, 0x20, 0x62, 0x6F, 0x64, 0x79, 
46428
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 
46429
  0x65, 0x64, 0x20, 0x30, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x73, 0x2E, 0x20, 0x45, 0x76, 0x61, 0x6C, 
46430
  0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x3D, 0xCB, 
46431
  0xDA, 0x87, 0x89, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x68, 0x01, 0xDA, 0x06, 
46432
  0xDA, 0x87, 0x87, 0xDA, 0x08, 0xCE, 0x26, 0x28, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x3F, 
46433
  0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 
46434
  0x69, 0x73, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x2E, 0xDA, 0x8A, 0x99, 
46435
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x6D, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x9A, 
46436
  0xDA, 0x08, 0xCE, 0x1F, 0x28, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 
46437
  0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 
46438
  0x6C, 0x65, 0x2E, 0xDA, 0x8A, 0x9C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x0A, 
46439
  0x81, 0x0D, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x9D, 0xDA, 0x08, 0xCE, 0x80, 0xA5, 0x28, 0x73, 0x74, 
46440
  0x72, 0x75, 0x63, 0x74, 0x2F, 0x74, 0x6F, 0x2D, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x73, 0x74, 
46441
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x29, 
46442
  0x0A, 0x0A, 0x43, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 
46443
  0x63, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x49, 
46444
  0x66, 0x20, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 
46445
  0x72, 0x75, 0x65, 0x2C, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x72, 
46446
  0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x27, 0x73, 0x20, 0x70, 0x72, 
46447
  0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 
46448
  0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x27, 0x73, 0x20, 0x70, 
46449
  0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x61, 0x73, 0x20, 0x77, 0x65, 0x6C, 
46450
  0x6C, 0x2E, 0xDA, 0x8A, 0x9E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0xD6, 
46451
  0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x9F, 0xDA, 0x08, 0xCE, 0x79, 0x28, 0x6F, 0x73, 0x2F, 0x63, 0x6F, 
46452
  0x6D, 0x70, 0x69, 0x6C, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 
46453
  0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x72, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 
46454
  0x6F, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 
46455
  0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
46456
  0x6E, 0x73, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x67, 
46457
  0x63, 0x63, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x63, 0x6C, 0x61, 0x6E, 0x67, 0x0A, 0x0A, 0x2A, 0x20, 
46458
  0x3A, 0x6D, 0x73, 0x76, 0x63, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x75, 0x6E, 0x6B, 0x6E, 0x6F, 0x77, 
46459
  0x6E, 0x0A, 0x0A, 0xDA, 0x8A, 0xA0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x12, 0x83, 
46460
  0x23, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0xA1, 0xDA, 0x08, 0xCE, 0x80, 0xC1, 0x28, 0x6E, 0x65, 0x74, 
46461
  0x2F, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x6E, 0x62, 
46462
  0x79, 0x74, 0x65, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x62, 0x75, 0x66, 0x20, 0x74, 0x69, 
46463
  0x6D, 0x65, 0x6F, 0x75, 0x74, 0x29, 0x0A, 0x0A, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x20, 0x6E, 
46464
  0x65, 0x74, 0x2F, 0x72, 0x65, 0x61, 0x64, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x77, 0x69, 0x6C, 
46465
  0x6C, 0x20, 0x77, 0x61, 0x69, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6E, 
46466
  0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x72, 0x72, 0x69, 0x76, 0x65, 
46467
  0x20, 0x72, 0x61, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x72, 0x65, 0x74, 
46468
  0x75, 0x72, 0x6E, 0x20, 0x65, 0x61, 0x72, 0x6C, 0x79, 0x2E, 0x20, 0x54, 0x61, 0x6B, 0x65, 0x73, 
46469
  0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x74, 0x69, 0x6D, 
46470
  0x65, 0x6F, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2C, 
46471
  0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 0x69, 0x6C, 
46472
  0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x8A, 0xA2, 
46473
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 0x46, 0x81, 0x95, 0x01, 0xDA, 0x06, 0xDA, 
46474
  0x8A, 0xA3, 0xDA, 0x08, 0xCE, 0x80, 0xCF, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x61, 0x72, 
46475
  0x67, 0x2D, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x29, 0x0A, 0x0A, 
46476
  0x47, 0x65, 0x74, 0x73, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 
46477
  0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x6C, 0x79, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 
46478
  0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x27, 0x73, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 
46479
  0x74, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x2E, 0x20, 0x4E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x6C, 
46480
  0x79, 0x2C, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 
46481
  0x65, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x20, 0x75, 0x6E, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x74, 
46482
  0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 
46483
  0x20, 0x77, 0x68, 0x69, 0x6C, 0x65, 0x20, 0x70, 0x75, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x61, 
46484
  0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x6D, 0x61, 0x6B, 0x65, 
46485
  0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, 0x61, 0x6C, 0x6C, 
46486
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 
46487
  0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x8A, 0xA4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
46488
  0xDA, 0x83, 0x14, 0x82, 0x7E, 0x01, 0xDA, 0x06, 0xDA, 0x81, 0x80, 0xDA, 0x08, 0xCE, 0x80, 0x80, 
46489
  0x28, 0x65, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0x20, 0x66, 0x6D, 0x74, 0x20, 0x26, 0x20, 0x78, 
46490
  0x73, 0x29, 0x0A, 0x0A, 0x50, 0x72, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x75, 0x74, 0x70, 0x75, 
46491
  0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x69, 
46492
  0x66, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 
46493
  0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x66, 0x6D, 0x74, 0x20, 0x3B, 0x78, 0x73, 0x29, 0x60, 
46494
  0x20, 0x74, 0x6F, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x3A, 0x65, 0x72, 0x72, 0x20, 0x73, 
46495
  0x74, 0x64, 0x65, 0x72, 0x72, 0x29, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x74, 
46496
  0x72, 0x61, 0x69, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x65, 0x77, 0x6C, 0x69, 0x6E, 0x65, 0x2E, 
46497
  0xDA, 0x8A, 0xA5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x40, 0x8B, 0xFC, 0x01, 0xDA, 
46498
  0x06, 0xDA, 0x8A, 0xA6, 0xDA, 0x08, 0xCE, 0x81, 0x33, 0x28, 0x65, 0x76, 0x2F, 0x64, 0x65, 0x61, 
46499
  0x64, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x73, 0x65, 0x63, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x74, 
46500
  0x6F, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x20, 0x74, 0x6F, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x29, 
46501
  0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x61, 0x20, 0x64, 0x65, 0x61, 0x64, 0x6C, 0x69, 0x6E, 0x65, 
46502
  0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x60, 0x74, 0x6F, 
46503
  0x63, 0x68, 0x65, 0x63, 0x6B, 0x60, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x74, 0x6F, 0x63, 0x68, 
46504
  0x65, 0x63, 0x6B, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x69, 0x6E, 0x69, 
46505
  0x73, 0x68, 0x65, 0x64, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x60, 0x73, 0x65, 0x63, 0x60, 
46506
  0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2C, 0x20, 0x60, 0x74, 0x6F, 0x63, 0x61, 0x6E, 
46507
  0x63, 0x65, 0x6C, 0x60, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x63, 0x61, 0x6E, 
46508
  0x63, 0x65, 0x6C, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x65, 
46509
  0x76, 0x2F, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x60, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x74, 
46510
  0x6F, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x74, 0x6F, 
46511
  0x63, 0x68, 0x65, 0x63, 0x6B, 0x60, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x67, 
46512
  0x69, 0x76, 0x65, 0x6E, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 
46513
  0x6C, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x72, 0x6F, 
46514
  0x6F, 0x74, 0x29, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 
46515
  0x2F, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x29, 0x60, 0x20, 0x72, 0x65, 0x73, 0x70, 0x65, 
46516
  0x63, 0x74, 0x69, 0x76, 0x65, 0x6C, 0x79, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
46517
  0x20, 0x60, 0x74, 0x6F, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x60, 0x2E, 0xDA, 0x8A, 0xA7, 0xD3, 
46518
  0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x80, 0xAB, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0xA8, 
46519
  0xDA, 0x08, 0xCE, 0x74, 0x28, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x73, 0x79, 0x6D, 
46520
  0x20, 0x76, 0x61, 0x6C, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x20, 
46521
  0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x66, 0x6F, 
46522
  0x72, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x61, 0x72, 
46523
  0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x0A, 0x45, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x73, 0x20, 
46524
  0x74, 0x6F, 0x20, 0x60, 0x28, 0x64, 0x65, 0x66, 0x20, 0x73, 0x79, 0x6D, 0x20, 0x28, 0x69, 0x66, 
46525
  0x20, 0x28, 0x3D, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x73, 0x79, 0x6D, 0x29, 0x20, 0x76, 0x61, 0x6C, 
46526
  0x20, 0x73, 0x79, 0x6D, 0x29, 0x29, 0x60, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x86, 0xA1, 0xCE, 0x14, 
46527
  0x2F, 0x75, 0x73, 0x72, 0x2F, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x2F, 0x6C, 0x69, 0x62, 0x2F, 0x6A, 
46528
  0x61, 0x6E, 0x65, 0x74, 0xDA, 0x8A, 0xAB, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x12, 
46529
  0x82, 0xF4, 0x01, 0xDA, 0x06, 0xDA, 0x83, 0x27, 0xDA, 0x08, 0xCE, 0x80, 0xC7, 0x28, 0x6E, 0x65, 
46530
  0x74, 0x2F, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2D, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x73, 0x74, 
46531
  0x72, 0x65, 0x61, 0x6D, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x53, 
46532
  0x68, 0x6F, 0x72, 0x74, 0x68, 0x61, 0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x72, 0x75, 0x6E, 
46533
  0x6E, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, 0x74, 
46534
  0x72, 0x65, 0x61, 0x6D, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x63, 
46535
  0x6F, 0x6E, 0x74, 0x69, 0x6E, 0x75, 0x6F, 0x75, 0x73, 0x6C, 0x79, 0x20, 0x61, 0x63, 0x63, 0x65, 
46536
  0x70, 0x74, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 
46537
  0x6E, 0x73, 0x2E, 0x20, 0x42, 0x6C, 0x6F, 0x63, 0x6B, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 
46538
  0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x75, 0x6E, 0x74, 
46539
  0x69, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x69, 0x73, 
46540
  0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x64, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x77, 0x69, 0x6C, 
46541
  0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 
46542
  0x65, 0x61, 0x6D, 0x2E, 0xDA, 0x8A, 0xAC, 0xD3, 0x02, 0xDA, 0x06, 0xDA, 0x8A, 0xAD, 0xDA, 0x08, 
46543
  0xCE, 0x80, 0x92, 0x28, 0x62, 0x72, 0x73, 0x68, 0x69, 0x66, 0x74, 0x20, 0x78, 0x20, 0x26, 0x20, 
46544
  0x73, 0x68, 0x69, 0x66, 0x74, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
46545
  0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x20, 
46546
  0x62, 0x69, 0x74, 0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 0x65, 0x64, 0x20, 0x72, 0x69, 0x67, 0x68, 
46547
  0x74, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x6D, 0x20, 0x6F, 0x66, 0x20, 
46548
  0x61, 0x6C, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x68, 
46549
  0x69, 0x66, 0x74, 0x73, 0x2E, 0x20, 0x78, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x61, 0x63, 0x68, 
46550
  0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x68, 0x69, 0x66, 
46551
  0x74, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 
46552
  0x65, 0x67, 0x65, 0x72, 0x2E, 0xDA, 0x8A, 0xAF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
46553
  0x83, 0x14, 0x81, 0x45, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0xB0, 0xDA, 0x08, 0xCE, 0x81, 0xCF, 0x28, 
46554
  0x66, 0x69, 0x6C, 0x65, 0x2F, 0x73, 0x65, 0x65, 0x6B, 0x20, 0x66, 0x20, 0x26, 0x6F, 0x70, 0x74, 
46555
  0x20, 0x77, 0x68, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x4A, 0x75, 0x6D, 0x70, 
46556
  0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x6C, 
46557
  0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
46558
  0x69, 0x6C, 0x65, 0x20, 0x60, 0x66, 0x60, 0x2E, 0x20, 0x60, 0x77, 0x68, 0x65, 0x6E, 0x63, 0x65, 
46559
  0x60, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 
46560
  0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x63, 0x75, 0x72, 0x20, 0x2D, 0x20, 0x6A, 0x75, 0x6D, 0x70, 
46561
  0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 
46562
  0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6C, 0x6F, 
46563
  0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x65, 0x74, 0x20, 0x2D, 
46564
  0x20, 0x6A, 0x75, 0x6D, 0x70, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 
46565
  0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 
46566
  0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 
46567
  0x65, 0x6E, 0x64, 0x20, 0x2D, 0x20, 0x6A, 0x75, 0x6D, 0x70, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 
46568
  0x69, 0x76, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 
46569
  0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x0A, 0x0A, 0x42, 0x79, 0x20, 0x64, 
46570
  0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x2C, 0x20, 0x60, 0x77, 0x68, 0x65, 0x6E, 0x63, 0x65, 0x60, 
46571
  0x20, 0x69, 0x73, 0x20, 0x3A, 0x63, 0x75, 0x72, 0x2E, 0x20, 0x4F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 
46572
  0x61, 0x6C, 0x6C, 0x79, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x60, 0x6E, 0x60, 
46573
  0x20, 0x6D, 0x61, 0x79, 0x20, 0x62, 0x65, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 0x66, 
46574
  0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 
46575
  0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 
46576
  0x74, 0x6F, 0x20, 0x73, 0x65, 0x65, 0x6B, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
46577
  0x69, 0x6C, 0x65, 0x2E, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x6D, 0x61, 0x79, 0x20, 0x62, 0x65, 0x20, 
46578
  0x61, 0x20, 0x72, 0x65, 0x61, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x74, 0x6F, 
46579
  0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x6C, 0x61, 0x72, 0x67, 0x65, 0x20, 0x66, 0x69, 
46580
  0x6C, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x6E, 
46581
  0x20, 0x34, 0x47, 0x42, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 
46582
  0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x2E, 0xDA, 0x8A, 
46583
  0xB1, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x83, 0x13, 0x01, 0xDA, 0x06, 0xDA, 
46584
  0x8A, 0xB2, 0xDA, 0x08, 0xCE, 0x63, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3C, 0x20, 
46585
  0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x45, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6C, 0x65, 0x6E, 
46586
  0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x3C, 0x60, 0x20, 0x62, 0x75, 0x74, 0x20, 0x75, 0x73, 0x69, 
46587
  0x6E, 0x67, 0x20, 0x70, 0x6F, 0x6C, 0x79, 0x6D, 0x6F, 0x72, 0x70, 0x68, 0x69, 0x63, 0x20, 0x60, 
46588
  0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x60, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 
46589
  0x20, 0x6F, 0x66, 0x20, 0x70, 0x72, 0x69, 0x6D, 0x69, 0x74, 0x69, 0x76, 0x65, 0x20, 0x63, 0x6F, 
46590
  0x6D, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x2E, 0xDA, 0x8A, 0xB4, 0xD3, 0x03, 0xDA, 0x03, 
46591
  0xD2, 0x03, 0x00, 0xDA, 0x18, 0x83, 0x0E, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0xB5, 0xDA, 0x08, 0xCE, 
46592
  0x63, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3D, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 
46593
  0x0A, 0x0A, 0x45, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6C, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 
46594
  0x60, 0x3D, 0x60, 0x20, 0x62, 0x75, 0x74, 0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x6F, 
46595
  0x6C, 0x79, 0x6D, 0x6F, 0x72, 0x70, 0x68, 0x69, 0x63, 0x20, 0x60, 0x63, 0x6F, 0x6D, 0x70, 0x61, 
46596
  0x72, 0x65, 0x60, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x70, 
46597
  0x72, 0x69, 0x6D, 0x69, 0x74, 0x69, 0x76, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x61, 
46598
  0x74, 0x6F, 0x72, 0x2E, 0xDA, 0x8A, 0xB7, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 
46599
  0x83, 0x1D, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0xB8, 0xDA, 0x08, 0xCE, 0x63, 0x28, 0x63, 0x6F, 0x6D, 
46600
  0x70, 0x61, 0x72, 0x65, 0x3E, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x45, 0x71, 0x75, 
46601
  0x69, 0x76, 0x61, 0x6C, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x3E, 0x60, 0x20, 0x62, 
46602
  0x75, 0x74, 0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x6F, 0x6C, 0x79, 0x6D, 0x6F, 0x72, 
46603
  0x70, 0x68, 0x69, 0x63, 0x20, 0x60, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x60, 0x20, 0x69, 
46604
  0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x70, 0x72, 0x69, 0x6D, 0x69, 0x74, 
46605
  0x69, 0x76, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x2E, 0xDA, 
46606
  0x8A, 0xBA, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8E, 0x63, 0x03, 0xDA, 0x06, 
46607
  0xDA, 0x8A, 0xBB, 0xDA, 0x08, 0xCE, 0x80, 0x92, 0x28, 0x65, 0x76, 0x2F, 0x67, 0x61, 0x74, 0x68, 
46608
  0x65, 0x72, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x69, 0x65, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x75, 
46609
  0x6E, 0x20, 0x61, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x66, 0x69, 
46610
  0x62, 0x65, 0x72, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6C, 0x6C, 0x65, 0x6C, 
46611
  0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x6F, 
46612
  0x6F, 0x70, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6A, 0x6F, 0x69, 0x6E, 0x20, 0x77, 0x68, 0x65, 
46613
  0x6E, 0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x2E, 
46614
  0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x61, 0x74, 
46615
  0x68, 0x65, 0x72, 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x73, 0x20, 0x69, 0x6E, 
46616
  0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x85, 0xB0, 
46617
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8A, 0x3B, 0x01, 0xDA, 0x06, 0xDA, 0x85, 
46618
  0xAD, 0xDA, 0x08, 0xCE, 0x7C, 0x28, 0x65, 0x76, 0x61, 0x6C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x29, 
46619
  0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x66, 0x6F, 
46620
  0x72, 0x6D, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 
46621
  0x74, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x49, 
46622
  0x66, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x72, 0x6F, 0x6C, 0x20, 0x6F, 
46623
  0x76, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 
46624
  0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x65, 0x65, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x75, 
46625
  0x73, 0x65, 0x20, 0x60, 0x72, 0x75, 0x6E, 0x2D, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x60, 
46626
  0x2E, 0xDA, 0x8A, 0xDB, 0xD3, 0x04, 0xDA, 0x84, 0x25, 0xCB, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
46627
  0x18, 0x8F, 0x29, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0xDC, 0xDA, 0x08, 0xCE, 0x80, 0x8E, 0x4E, 0x61, 
46628
  0x6D, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x70, 
46629
  0x72, 0x65, 0x74, 0x65, 0x72, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6C, 0x65, 
46630
  0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 
46631
  0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x2E, 0x20, 0x43, 
46632
  0x6F, 0x72, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x61, 
46633
  0x72, 0x67, 0x76, 0x5B, 0x30, 0x5D, 0x60, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 
46634
  0x61, 0x6C, 0x6C, 0x20, 0x74, 0x6F, 0x0A, 0x20, 0x20, 0x60, 0x69, 0x6E, 0x74, 0x20, 0x6D, 0x61, 
46635
  0x69, 0x6E, 0x28, 0x69, 0x6E, 0x74, 0x20, 0x61, 0x72, 0x67, 0x63, 0x2C, 0x20, 0x63, 0x68, 0x61, 
46636
  0x72, 0x20, 0x2A, 0x2A, 0x61, 0x72, 0x67, 0x76, 0x29, 0x3B, 0x60, 0x2E, 0xDA, 0x8A, 0xDD, 0xD3, 
46637
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0xEB, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0xDE, 
46638
  0xDA, 0x08, 0xCE, 0x5A, 0x28, 0x6F, 0x73, 0x2F, 0x63, 0x64, 0x20, 0x70, 0x61, 0x74, 0x68, 0x29, 
46639
  0x0A, 0x0A, 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 
46640
  0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x61, 
46641
  0x74, 0x68, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x20, 
46642
  0x6F, 0x6E, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2C, 0x20, 0x65, 0x72, 0x72, 0x6F, 
46643
  0x72, 0x73, 0x20, 0x6F, 0x6E, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x75, 0x72, 0x65, 0x2E, 0xDA, 0x8A, 
46644
  0xDF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x85, 0x6F, 0x81, 0x26, 0x01, 0xDA, 0x06, 
46645
  0xDA, 0x88, 0x46, 0xDA, 0x08, 0xCE, 0x80, 0xEF, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x72, 
46646
  0x65, 0x6D, 0x6F, 0x76, 0x65, 0x20, 0x61, 0x72, 0x72, 0x20, 0x61, 0x74, 0x20, 0x26, 0x6F, 0x70, 
46647
  0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x20, 0x75, 0x70, 0x20, 
46648
  0x74, 0x6F, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 
46649
  0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x74, 0x20, 0x69, 0x6E, 0x64, 0x65, 
46650
  0x78, 0x20, 0x60, 0x61, 0x74, 0x60, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 
46651
  0x60, 0x61, 0x72, 0x72, 0x60, 0x2E, 0x20, 0x60, 0x61, 0x74, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 
46652
  0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 
46653
  0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 
46654
  0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 
46655
  0x69, 0x6E, 0x64, 0x65, 0x78, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x6D, 
46656
  0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x6F, 0x6E, 0x2D, 0x6E, 0x65, 0x67, 
46657
  0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2E, 0x20, 0x42, 
46658
  0x79, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x2C, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x69, 
46659
  0x73, 0x20, 0x31, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
46660
  0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x88, 0x44, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
46661
  0x00, 0xDA, 0x18, 0x85, 0xB1, 0x01, 0xDA, 0x06, 0xDA, 0x88, 0x42, 0xDA, 0x08, 0xCE, 0x80, 0xB4, 
46662
  0x28, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x20, 0x74, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x76, 
46663
  0x65, 0x72, 0x73, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x20, 
46664
  0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 
46665
  0x69, 0x6E, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 
46666
  0x20, 0x6F, 0x72, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 
46667
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x0A, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 
46668
  0x79, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x6F, 
46669
  0x72, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x76, 
46670
  0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x6E, 
46671
  0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x69, 0x74, 0x73, 0x0A, 0x62, 0x79, 
46672
  0x74, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2C, 0x20, 0x72, 0x65, 0x76, 0x65, 0x72, 
46673
  0x73, 0x65, 0x64, 0x2E, 0xDA, 0x8A, 0xE0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x84, 
46674
  0xD8, 0x82, 0x78, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0xE1, 0xDA, 0x08, 0xCE, 0x80, 0x8E, 0x28, 0x66, 
46675
  0x69, 0x62, 0x65, 0x72, 0x2F, 0x73, 0x65, 0x74, 0x6D, 0x61, 0x78, 0x73, 0x74, 0x61, 0x63, 0x6B, 
46676
  0x20, 0x66, 0x69, 0x62, 0x20, 0x6D, 0x61, 0x78, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x29, 0x0A, 0x0A, 
46677
  0x53, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x61, 0x78, 0x69, 0x6D, 0x75, 0x6D, 
46678
  0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x6A, 
46679
  0x61, 0x6E, 0x65, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 
46680
  0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x42, 0x79, 0x20, 0x64, 0x65, 0x66, 0x61, 
46681
  0x75, 0x6C, 0x74, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x61, 0x78, 0x69, 0x6D, 0x75, 0x6D, 
46682
  0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x69, 0x73, 0x20, 0x75, 
46683
  0x73, 0x75, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x38, 0x31, 0x39, 0x32, 0x2E, 0xDA, 0x8A, 0xE2, 0xD3, 
46684
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0x1C, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0xE3, 
46685
  0xDA, 0x08, 0xCE, 0x81, 0x3A, 0x28, 0x6F, 0x73, 0x2F, 0x73, 0x74, 0x72, 0x66, 0x74, 0x69, 0x6D, 
46686
  0x65, 0x20, 0x66, 0x6D, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 
46687
  0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x29, 0x0A, 0x0A, 0x46, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x74, 
46688
  0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x61, 0x73, 
46689
  0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x74, 0x68, 
46690
  0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x69, 
46691
  0x66, 0x20, 0x60, 0x74, 0x69, 0x6D, 0x65, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 
46692
  0x67, 0x69, 0x76, 0x65, 0x6E, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 
46693
  0x69, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x61, 0x63, 0x63, 
46694
  0x6F, 0x72, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 
46695
  0x6D, 0x65, 0x20, 0x72, 0x75, 0x6C, 0x65, 0x73, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
46696
  0x49, 0x53, 0x4F, 0x20, 0x43, 0x38, 0x39, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
46697
  0x20, 0x73, 0x74, 0x72, 0x66, 0x74, 0x69, 0x6D, 0x65, 0x28, 0x29, 0x2E, 0x20, 0x54, 0x68, 0x65, 
46698
  0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x69, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 
46699
  0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x55, 0x54, 0x43, 0x20, 0x75, 0x6E, 0x6C, 0x65, 0x73, 0x73, 
46700
  0x20, 0x60, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 
46701
  0x68, 0x79, 0x2C, 0x20, 0x69, 0x6E, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x63, 0x61, 0x73, 
46702
  0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 0x65, 0x20, 0x69, 0x73, 0x20, 0x66, 0x6F, 
46703
  0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 
46704
  0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x7A, 0x6F, 0x6E, 0x65, 0x2E, 0xDA, 
46705
  0x8A, 0xE4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x40, 0x8C, 0xA4, 0x01, 0xDA, 0x06, 
46706
  0xDA, 0x8A, 0xE5, 0xDA, 0x08, 0xCE, 0x45, 0x28, 0x65, 0x76, 0x2F, 0x61, 0x63, 0x71, 0x75, 0x69, 
46707
  0x72, 0x65, 0x2D, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x72, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 0x29, 
46708
  0x0A, 0x0A, 0x41, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x20, 0x61, 0x20, 0x77, 0x72, 0x69, 0x74, 
46709
  0x65, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x64, 
46710
  0x2D, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x2E, 0xDA, 0x8A, 0xE6, 0xD3, 
46711
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x7C, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0xE7, 0xDA, 
46712
  0x08, 0xCE, 0x1E, 0x28, 0x74, 0x72, 0x75, 0x65, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 
46713
  0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x65, 
46714
  0x2E, 0xDA, 0x8A, 0xE9, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x86, 0x79, 0x01, 
46715
  0xDA, 0x06, 0xDA, 0x8A, 0xEA, 0xDA, 0x08, 0xCE, 0x43, 0x28, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6E, 
46716
  0x63, 0x74, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
46717
  0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
46718
  0x64, 0x65, 0x64, 0x75, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x76, 0x61, 0x6C, 
46719
  0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x78, 0x73, 0x60, 0x2E, 0xDA, 0x8A, 0xEF, 0xD3, 
46720
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 0xA9, 0x81, 0xBF, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 
46721
  0xF0, 0xDA, 0x08, 0xCE, 0x5E, 0x28, 0x67, 0x65, 0x74, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x20, 0x78, 
46722
  0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 
46723
  0x74, 0x79, 0x70, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 
46724
  0x6F, 0x72, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 
46725
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x60, 0x78, 
46726
  0x60, 0x20, 0x68, 0x61, 0x73, 0x20, 0x6E, 0x6F, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 
46727
  0x70, 0x65, 0x2E, 0xDA, 0x8A, 0xF1, 0xD3, 0x02, 0xDA, 0x06, 0xDA, 0x8A, 0xF2, 0xDA, 0x08, 0xCE, 
46728
  0x80, 0xE3, 0x28, 0x79, 0x69, 0x65, 0x6C, 0x64, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x78, 0x29, 
46729
  0x0A, 0x0A, 0x59, 0x69, 0x65, 0x6C, 0x64, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
46730
  0x74, 0x6F, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 
46731
  0x72, 0x2E, 0x20, 0x57, 0x68, 0x65, 0x6E, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 
46732
  0x79, 0x69, 0x65, 0x6C, 0x64, 0x73, 0x2C, 0x20, 0x69, 0x74, 0x73, 0x20, 0x65, 0x78, 0x65, 0x63, 
46733
  0x75, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x73, 0x20, 0x70, 0x61, 0x75, 0x73, 0x65, 0x64, 0x20, 
46734
  0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x61, 0x6E, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x68, 
46735
  0x72, 0x65, 0x61, 0x64, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x73, 0x20, 0x69, 0x74, 0x2E, 
46736
  0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
46737
  0x74, 0x68, 0x65, 0x6E, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 
46738
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x79, 0x69, 0x65, 0x6C, 0x64, 0x20, 
46739
  0x63, 0x61, 0x6C, 0x6C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 
46740
  0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
46741
  0x77, 0x61, 0x73, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 
46742
  0x73, 0x75, 0x6D, 0x65, 0x2E, 0xDA, 0x8A, 0xF4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
46743
  0x83, 0x14, 0x82, 0x0E, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0xF5, 0xDA, 0x08, 0xCE, 0x40, 0x28, 0x70, 
46744
  0x72, 0x69, 0x6E, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x53, 0x61, 0x6D, 0x65, 0x20, 
46745
  0x61, 0x73, 0x20, 0x60, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 
46746
  0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x64, 0x64, 0x20, 0x74, 0x72, 0x61, 
46747
  0x69, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x65, 0x77, 0x6C, 0x69, 0x6E, 0x65, 0x2E, 0xDA, 0x8A, 
46748
  0xF6, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x80, 0xD3, 0x01, 0xDA, 0x06, 0xDA, 
46749
  0x8A, 0xF7, 0xDA, 0x08, 0xCE, 0x80, 0xBB, 0x28, 0x63, 0x61, 0x73, 0x65, 0x20, 0x64, 0x69, 0x73, 
46750
  0x70, 0x61, 0x74, 0x63, 0x68, 0x20, 0x26, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x29, 0x0A, 0x0A, 
46751
  0x53, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 
46752
  0x74, 0x68, 0x61, 0x74, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6C, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
46753
  0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x20, 
46754
  0x57, 0x68, 0x65, 0x6E, 0x20, 0x60, 0x70, 0x61, 0x69, 0x72, 0x73, 0x60, 0x0A, 0x68, 0x61, 0x73, 
46755
  0x20, 0x61, 0x6E, 0x20, 0x6F, 0x64, 0x64, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 
46756
  0x66, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 
46757
  0x6C, 0x61, 0x73, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 
46758
  0x75, 0x6C, 0x74, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x2E, 0x0A, 
46759
  0x49, 0x66, 0x20, 0x6E, 0x6F, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 0x66, 
46760
  0x6F, 0x75, 0x6E, 0x64, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 
46761
  0x6C, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x8A, 0xFB, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 
46762
  0x13, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x69, 0x6E, 0x74, 0x74, 0x79, 0x70, 
46763
  0x65, 0x73, 0x2E, 0x63, 0x80, 0xD4, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0xFC, 0xDA, 0x08, 0xCE, 0x73, 
46764
  0x28, 0x69, 0x6E, 0x74, 0x2F, 0x74, 0x6F, 0x2D, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x76, 
46765
  0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x43, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x20, 0x61, 
46766
  0x6E, 0x20, 0x69, 0x6E, 0x74, 0x2F, 0x75, 0x36, 0x34, 0x20, 0x6F, 0x72, 0x20, 0x69, 0x6E, 0x74, 
46767
  0x2F, 0x73, 0x36, 0x34, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 
46768
  0x2E, 0x20, 0x46, 0x61, 0x69, 0x6C, 0x73, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 
46769
  0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x75, 0x74, 0x20, 0x6F, 0x66, 0x20, 
46770
  0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 
46771
  0x33, 0x32, 0x2E, 0xDA, 0x8A, 0xFD, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x83, 0x40, 
46772
  0x81, 0xCB, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0xFE, 0xDA, 0x08, 0xCE, 0x81, 0x1F, 0x28, 0x62, 0x75, 
46773
  0x66, 0x66, 0x65, 0x72, 0x2F, 0x62, 0x6C, 0x69, 0x74, 0x20, 0x64, 0x65, 0x73, 0x74, 0x20, 0x73, 
46774
  0x72, 0x63, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x64, 0x65, 0x73, 0x74, 0x2D, 0x73, 0x74, 0x61, 
46775
  0x72, 0x74, 0x20, 0x73, 0x72, 0x63, 0x2D, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x73, 0x72, 0x63, 
46776
  0x2D, 0x65, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x49, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x20, 0x74, 0x68, 
46777
  0x65, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x73, 
46778
  0x72, 0x63, 0x60, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x60, 0x64, 0x65, 0x73, 0x74, 0x60, 0x2E, 
46779
  0x20, 0x43, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 
46780
  0x74, 0x61, 0x6B, 0x65, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 
46781
  0x74, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 
46782
  0x20, 0x70, 0x61, 0x72, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x73, 0x72, 0x63, 0x60, 0x20, 0x74, 
46783
  0x6F, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x77, 0x68, 0x69, 0x63, 
46784
  0x68, 0x20, 0x70, 0x61, 0x72, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x64, 0x65, 0x73, 0x74, 0x60, 
46785
  0x2E, 0x20, 0x49, 0x6E, 0x64, 0x69, 0x63, 0x65, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 
46786
  0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x6F, 0x72, 0x64, 
46787
  0x65, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x66, 0x72, 0x6F, 0x6D, 
46788
  0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x73, 0x72, 0x63, 
46789
  0x60, 0x20, 0x6F, 0x72, 0x20, 0x60, 0x64, 0x65, 0x73, 0x74, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 
46790
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x60, 0x64, 0x65, 0x73, 0x74, 0x60, 0x2E, 0xDA, 0x8A, 0xFF, 0xD3, 
46791
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 0x0C, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 
46792
  0x00, 0xDA, 0x08, 0xCE, 0x2B, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x74, 0x61, 0x6E, 0x20, 
46793
  0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
46794
  0x61, 0x72, 0x63, 0x74, 0x61, 0x6E, 0x67, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 
46795
  0xDA, 0x8B, 0x01, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x85, 0xA3, 0x01, 0xDA, 
46796
  0x06, 0xDA, 0x8B, 0x02, 0xDA, 0x08, 0xCE, 0x63, 0x28, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 
46797
  0x21, 0x20, 0x74, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x73, 0x20, 0x74, 
46798
  0x68, 0x65, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
46799
  0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x67, 0x69, 
46800
  0x76, 0x65, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x72, 0x20, 0x62, 0x75, 0x66, 
46801
  0x66, 0x65, 0x72, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
46802
  0x69, 0x74, 0x0A, 0x6D, 0x75, 0x74, 0x61, 0x74, 0x65, 0x64, 0x2E, 0xDA, 0x8B, 0x08, 0xD3, 0x03, 
46803
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x89, 0x85, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0x09, 0xDA, 
46804
  0x08, 0xCE, 0x80, 0xC5, 0x28, 0x6F, 0x73, 0x2F, 0x70, 0x69, 0x70, 0x65, 0x29, 0x0A, 0x0A, 0x43, 
46805
  0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x64, 0x61, 0x62, 0x6C, 0x65, 
46806
  0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x20, 0x77, 0x72, 
46807
  0x69, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x74, 0x68, 
46808
  0x61, 0x74, 0x20, 0x61, 0x72, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x65, 0x64, 
46809
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x74, 0x77, 0x6F, 0x2D, 
46810
  0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x77, 0x68, 
46811
  0x65, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x65, 0x6C, 
46812
  0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x64, 0x61, 
46813
  0x62, 0x6C, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 
46814
  0x68, 0x65, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 
46815
  0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6C, 
46816
  0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0xDA, 0x83, 0x26, 0xD3, 0x03, 0xDA, 0x03, 
46817
  0xD2, 0x03, 0x00, 0xDA, 0x86, 0xA9, 0x82, 0x1F, 0x01, 0xDA, 0x06, 0xDA, 0x2C, 0xDA, 0x08, 0xCE, 
46818
  0x81, 0x02, 0x28, 0x74, 0x79, 0x70, 0x65, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 
46819
  0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6F, 0x66, 0x20, 
46820
  0x60, 0x78, 0x60, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 
46821
  0x2E, 0x20, 0x60, 0x78, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x3A, 
46822
  0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 0x69, 0x6C, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x62, 0x6F, 0x6F, 
46823
  0x6C, 0x65, 0x61, 0x6E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x0A, 
46824
  0x0A, 0x2A, 0x20, 0x3A, 0x61, 0x72, 0x72, 0x61, 0x79, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x74, 0x75, 
46825
  0x70, 0x6C, 0x65, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x0A, 0x0A, 0x2A, 
46826
  0x20, 0x3A, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x74, 0x72, 
46827
  0x69, 0x6E, 0x67, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x0A, 0x0A, 
46828
  0x2A, 0x20, 0x3A, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6B, 0x65, 
46829
  0x79, 0x77, 0x6F, 0x72, 0x64, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 
46830
  0x6F, 0x6E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x63, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
46831
  0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x66, 0x69, 0x62, 0x65, 0x72, 0x0A, 0x0A, 0x6F, 0x72, 0x20, 0x61, 
46832
  0x6E, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x66, 
46833
  0x6F, 0x72, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 0x74, 
46834
  0x79, 0x70, 0x65, 0x2E, 0xDA, 0x8B, 0x0A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 
46835
  0xA9, 0x82, 0x6F, 0x01, 0xDA, 0x06, 0xDA, 0x86, 0xDD, 0xDA, 0x08, 0xCE, 0x69, 0x28, 0x6E, 0x61, 
46836
  0x74, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 
46837
  0x78, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x65, 0x78, 0x61, 0x63, 0x74, 0x6C, 0x79, 
46838
  0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 
46839
  0x61, 0x20, 0x6E, 0x6F, 0x6E, 0x2D, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x33, 
46840
  0x32, 0x20, 0x62, 0x69, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x20, 0x74, 0x77, 0x6F, 
46841
  0x27, 0x73, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x6E, 
46842
  0x74, 0x65, 0x67, 0x65, 0x72, 0x2E, 0xDA, 0x8B, 0x0B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
46843
  0xDA, 0x04, 0x88, 0xE3, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0x0C, 0xDA, 0x08, 0xCE, 0x83, 0xA6, 0x28, 
46844
  0x6F, 0x73, 0x2F, 0x6F, 0x70, 0x65, 0x6E, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x26, 0x6F, 0x70, 
46845
  0x74, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x29, 0x0A, 0x0A, 0x43, 
46846
  0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x66, 
46847
  0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2C, 0x20, 0x6C, 0x69, 0x6B, 0x65, 
46848
  0x20, 0x74, 0x68, 0x65, 0x20, 0x50, 0x4F, 0x53, 0x49, 0x58, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x20, 
46849
  0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x2E, 0x20, 0x52, 0x65, 0x74, 
46850
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 
46851
  0x6D, 0x2E, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x65, 0x60, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 
46852
  0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x20, 
46853
  0x61, 0x73, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x6F, 0x73, 
46854
  0x2F, 0x63, 0x68, 0x6D, 0x6F, 0x64, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6F, 0x6E, 0x6C, 
46855
  0x79, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 
46856
  0x66, 0x6C, 0x61, 0x67, 0x20, 0x69, 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x2E, 0x20, 0x54, 
46857
  0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x20, 
46858
  0x69, 0x73, 0x20, 0x38, 0x72, 0x36, 0x36, 0x36, 0x2E, 0x20, 0x41, 0x6C, 0x6C, 0x6F, 0x77, 0x65, 
46859
  0x64, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x73, 0x20, 0x66, 
46860
  0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x73, 0x3A, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x72, 0x20, 
46861
  0x2D, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 0x6C, 0x65, 
46862
  0x20, 0x66, 0x6F, 0x72, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x0A, 0x20, 0x20, 0x2A, 
46863
  0x20, 0x3A, 0x77, 0x20, 0x2D, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 
46864
  0x66, 0x69, 0x6C, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x77, 0x72, 0x69, 0x74, 0x69, 0x6E, 0x67, 
46865
  0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x63, 0x20, 0x2D, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 
46866
  0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x28, 0x4F, 0x5C, 0x5F, 
46867
  0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x29, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x65, 0x20, 0x2D, 
46868
  0x20, 0x66, 0x61, 0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 
46869
  0x65, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x20, 0x28, 0x4F, 0x5C, 0x5F, 0x45, 0x58, 0x43, 
46870
  0x4C, 0x29, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x74, 0x20, 0x2D, 0x20, 0x73, 0x68, 0x6F, 0x72, 
46871
  0x74, 0x65, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6E, 0x67, 0x20, 
46872
  0x66, 0x69, 0x6C, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x30, 
46873
  0x20, 0x28, 0x4F, 0x5C, 0x5F, 0x54, 0x52, 0x55, 0x4E, 0x43, 0x29, 0x0A, 0x0A, 0x50, 0x6F, 0x73, 
46874
  0x69, 0x78, 0x2D, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x3A, 0x0A, 0x0A, 
46875
  0x20, 0x20, 0x2A, 0x20, 0x3A, 0x61, 0x20, 0x2D, 0x20, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x20, 
46876
  0x74, 0x6F, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x28, 0x4F, 0x5C, 0x5F, 0x41, 0x50, 
46877
  0x50, 0x45, 0x4E, 0x44, 0x29, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x78, 0x20, 0x2D, 0x20, 0x4F, 
46878
  0x5C, 0x5F, 0x53, 0x59, 0x4E, 0x43, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x43, 0x20, 0x2D, 0x20, 
46879
  0x4F, 0x5C, 0x5F, 0x4E, 0x4F, 0x43, 0x54, 0x54, 0x59, 0x0A, 0x0A, 0x57, 0x69, 0x6E, 0x64, 0x6F, 
46880
  0x77, 0x73, 0x2D, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x3A, 0x0A, 0x0A, 
46881
  0x20, 0x20, 0x2A, 0x20, 0x3A, 0x52, 0x20, 0x2D, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x72, 
46882
  0x65, 0x61, 0x64, 0x73, 0x20, 0x28, 0x46, 0x49, 0x4C, 0x45, 0x5C, 0x5F, 0x53, 0x48, 0x41, 0x52, 
46883
  0x45, 0x5C, 0x5F, 0x52, 0x45, 0x41, 0x44, 0x29, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x57, 0x20, 
46884
  0x2D, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x20, 0x28, 
46885
  0x46, 0x49, 0x4C, 0x45, 0x5C, 0x5F, 0x53, 0x48, 0x41, 0x52, 0x45, 0x5C, 0x5F, 0x57, 0x52, 0x49, 
46886
  0x54, 0x45, 0x29, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x44, 0x20, 0x2D, 0x20, 0x73, 0x68, 0x61, 
46887
  0x72, 0x65, 0x20, 0x64, 0x65, 0x6C, 0x65, 0x74, 0x65, 0x73, 0x20, 0x28, 0x46, 0x49, 0x4C, 0x45, 
46888
  0x5C, 0x5F, 0x53, 0x48, 0x41, 0x52, 0x45, 0x5C, 0x5F, 0x44, 0x45, 0x4C, 0x45, 0x54, 0x45, 0x29, 
46889
  0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x48, 0x20, 0x2D, 0x20, 0x46, 0x49, 0x4C, 0x45, 0x5C, 0x5F, 
46890
  0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5C, 0x5F, 0x48, 0x49, 0x44, 0x44, 0x45, 
46891
  0x4E, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x4F, 0x20, 0x2D, 0x20, 0x46, 0x49, 0x4C, 0x45, 0x5C, 
46892
  0x5F, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5C, 0x5F, 0x52, 0x45, 0x41, 0x44, 
46893
  0x4F, 0x4E, 0x4C, 0x59, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x46, 0x20, 0x2D, 0x20, 0x46, 0x49, 
46894
  0x4C, 0x45, 0x5C, 0x5F, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5C, 0x5F, 0x4F, 
46895
  0x46, 0x46, 0x4C, 0x49, 0x4E, 0x45, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x54, 0x20, 0x2D, 0x20, 
46896
  0x46, 0x49, 0x4C, 0x45, 0x5C, 0x5F, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5C, 
46897
  0x5F, 0x54, 0x45, 0x4D, 0x50, 0x4F, 0x52, 0x41, 0x52, 0x59, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 
46898
  0x64, 0x20, 0x2D, 0x20, 0x46, 0x49, 0x4C, 0x45, 0x5C, 0x5F, 0x46, 0x4C, 0x41, 0x47, 0x5C, 0x5F, 
46899
  0x44, 0x45, 0x4C, 0x45, 0x54, 0x45, 0x5C, 0x5F, 0x4F, 0x4E, 0x5C, 0x5F, 0x43, 0x4C, 0x4F, 0x53, 
46900
  0x45, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x62, 0x20, 0x2D, 0x20, 0x46, 0x49, 0x4C, 0x45, 0x5C, 
46901
  0x5F, 0x46, 0x4C, 0x41, 0x47, 0x5C, 0x5F, 0x4E, 0x4F, 0x5C, 0x5F, 0x42, 0x55, 0x46, 0x46, 0x45, 
46902
  0x52, 0x49, 0x4E, 0x47, 0x0A, 0xDA, 0x8B, 0x0D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
46903
  0x86, 0xA9, 0x81, 0x26, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0x0E, 0xDA, 0x08, 0xCE, 0x81, 0x28, 0x28, 
46904
  0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x26, 0x6F, 0x70, 0x74, 
46905
  0x20, 0x65, 0x6E, 0x76, 0x29, 0x0A, 0x0A, 0x4C, 0x6F, 0x61, 0x64, 0x20, 0x61, 0x20, 0x6E, 0x61, 
46906
  0x74, 0x69, 0x76, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 
46907
  0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2E, 
46908
  0x20, 0x54, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 
46909
  0x65, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x62, 0x73, 0x6F, 0x6C, 0x75, 0x74, 0x65, 0x20, 0x6F, 0x72, 
46910
  0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x6F, 
46911
  0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 
46912
  0x6D, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x75, 0x61, 0x6C, 0x6C, 
46913
  0x79, 0x20, 0x61, 0x20, 0x2E, 0x73, 0x6F, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6F, 0x6E, 0x20, 
46914
  0x55, 0x6E, 0x69, 0x78, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x73, 0x2C, 0x20, 0x61, 0x6E, 
46915
  0x64, 0x20, 0x61, 0x20, 0x2E, 0x64, 0x6C, 0x6C, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6F, 0x6E, 
46916
  0x20, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
46917
  0x73, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 
46918
  0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x74, 
46919
  0x61, 0x69, 0x6E, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x61, 
46920
  0x6E, 0x64, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 
46921
  0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 
46922
  0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2E, 0xDA, 0x8B, 0x0F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
46923
  0x00, 0xDA, 0x18, 0x85, 0xE0, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0x10, 0xDA, 0x08, 0xCE, 0x81, 0x1B, 
46924
  0x28, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2D, 0x69, 0x6E, 0x20, 0x64, 0x73, 0x20, 0x6B, 0x73, 
46925
  0x20, 0x66, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x55, 0x70, 0x64, 0x61, 
46926
  0x74, 0x65, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 
46927
  0x6E, 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 
46928
  0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x60, 0x64, 0x73, 0x60, 0x2E, 0x20, 0x4C, 0x6F, 0x6F, 0x6B, 
46929
  0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x60, 0x64, 0x73, 0x60, 0x20, 0x76, 0x69, 0x61, 0x20, 
46930
  0x61, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x6B, 0x65, 
46931
  0x79, 0x73, 0x2C, 0x0A, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x73, 
46932
  0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 
46933
  0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x66, 0x60, 0x20, 
46934
  0x61, 0x70, 0x70, 0x6C, 0x69, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
46935
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x0A, 0x4D, 0x69, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x64, 
46936
  0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x77, 
46937
  0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x64, 0x20, 
46938
  0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 
46939
  0x75, 0x72, 0x6E, 0x73, 0x0A, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 
46940
  0x64, 0x2C, 0x20, 0x6F, 0x72, 0x69, 0x67, 0x69, 0x6E, 0x61, 0x6C, 0x20, 0x64, 0x61, 0x74, 0x61, 
46941
  0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0xDA, 0x8B, 0x16, 0xD3, 0x04, 
46942
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x40, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0x17, 0xDA, 0x08, 
46943
  0xCE, 0x49, 0x28, 0x64, 0x65, 0x66, 0x6E, 0x2D, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x26, 0x20, 
46944
  0x6D, 0x6F, 0x72, 0x65, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x20, 
46945
  0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
46946
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x62, 
46947
  0x65, 0x20, 0x65, 0x78, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x8A, 
46948
  0xBE, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8E, 0x2F, 0x03, 0xDA, 0x06, 0xDA, 
46949
  0x8B, 0x19, 0xDA, 0x08, 0xCE, 0x29, 0x28, 0x6E, 0x65, 0x74, 0x2F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 
46950
  0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x29, 0x0A, 0x0A, 0x41, 0x6C, 0x69, 0x61, 0x73, 0x20, 
46951
  0x66, 0x6F, 0x72, 0x20, 0x60, 0x65, 0x76, 0x2F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x60, 0x2E, 0xDA, 
46952
  0x8B, 0x1D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x83, 0x8D, 0x01, 0xDA, 0x06, 
46953
  0xDA, 0x8B, 0x1E, 0xDA, 0x08, 0xCE, 0x80, 0xDC, 0x28, 0x61, 0x63, 0x63, 0x75, 0x6D, 0x75, 0x6C, 
46954
  0x61, 0x74, 0x65, 0x32, 0x20, 0x66, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x54, 0x68, 0x65, 
46955
  0x20, 0x32, 0x2D, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 
46956
  0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x61, 0x63, 0x63, 0x75, 0x6D, 0x75, 0x6C, 0x61, 
46957
  0x74, 0x65, 0x60, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 
46958
  0x74, 0x20, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, 
46959
  0x6C, 0x69, 0x7A, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x0A, 
46960
  0x54, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
46961
  0x69, 0x6E, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 
46962
  0x20, 0x61, 0x64, 0x64, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 
46963
  0x72, 0x61, 0x79, 0x20, 0x61, 0x73, 0x20, 0x69, 0x73, 0x2C, 0x20, 0x73, 0x6F, 0x20, 0x74, 0x68, 
46964
  0x65, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x0A, 
46965
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x77, 0x69, 0x6C, 
46966
  0x6C, 0x20, 0x62, 0x65, 0x20, 0x60, 0x28, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x69, 0x6E, 
46967
  0x64, 0x29, 0x60, 0x2E, 0xDA, 0x8B, 0x20, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 
46968
  0xA9, 0x82, 0x93, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0x21, 0xDA, 0x08, 0xCE, 0x81, 0x32, 0x28, 0x6D, 
46969
  0x65, 0x6D, 0x63, 0x6D, 0x70, 0x20, 0x61, 0x20, 0x62, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6C, 
46970
  0x65, 0x6E, 0x20, 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2D, 0x61, 0x20, 0x6F, 0x66, 0x66, 0x73, 
46971
  0x65, 0x74, 0x2D, 0x62, 0x29, 0x0A, 0x0A, 0x43, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x20, 0x6D, 
46972
  0x65, 0x6D, 0x6F, 0x72, 0x79, 0x2E, 0x20, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x74, 0x77, 0x6F, 
46973
  0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x73, 0x20, 
46974
  0x60, 0x61, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x62, 0x60, 0x2C, 0x20, 0x61, 0x6E, 0x64, 
46975
  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x30, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 
46976
  0x79, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6E, 0x74, 0x69, 0x63, 0x61, 0x6C, 
46977
  0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x73, 0x2C, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x67, 
46978
  0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x69, 0x66, 
46979
  0x20, 0x61, 0x20, 0x69, 0x73, 0x20, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 
46980
  0x62, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x20, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x76, 
46981
  0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x69, 0x66, 0x20, 0x61, 0x20, 0x69, 
46982
  0x73, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x62, 
46983
  0x2E, 0x20, 0x4F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x74, 0x61, 0x6B, 
46984
  0x65, 0x20, 0x61, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6F, 
46985
  0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 
46986
  0x65, 0x20, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
46987
  0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x73, 0x2E, 
46988
  0xDA, 0x8B, 0x22, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x4F, 0x01, 0xDA, 0x06, 
46989
  0xDA, 0x8B, 0x23, 0xDA, 0x08, 0xCE, 0x56, 0x28, 0x74, 0x6F, 0x67, 0x67, 0x6C, 0x65, 0x20, 0x76, 
46990
  0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 
46991
  0x75, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x74, 0x73, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 
46992
  0x6E, 0x20, 0x69, 0x6E, 0x76, 0x65, 0x72, 0x73, 0x65, 0x2E, 0x20, 0x53, 0x61, 0x6D, 0x65, 0x20, 
46993
  0x61, 0x73, 0x20, 0x60, 0x28, 0x73, 0x65, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x28, 
46994
  0x6E, 0x6F, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x29, 0x60, 0x2E, 0xDA, 0x3D, 0xCB, 
46995
  0xDA, 0x8B, 0x25, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x83, 0x14, 0x83, 0x28, 0x01, 
46996
  0xDA, 0x06, 0xDA, 0x8B, 0x26, 0xDA, 0x08, 0xCE, 0x19, 0x54, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 
46997
  0x6E, 0x64, 0x61, 0x72, 0x64, 0x20, 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x66, 0x69, 0x6C, 
46998
  0x65, 0x2E, 0xDA, 0x8B, 0x27, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x83, 0x14, 0x82, 
46999
  0x84, 0x01, 0xDA, 0x06, 0xDA, 0x81, 0xAF, 0xDA, 0x08, 0xCE, 0x3F, 0x28, 0x65, 0x70, 0x72, 0x69, 
47000
  0x6E, 0x66, 0x20, 0x66, 0x6D, 0x74, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x4C, 0x69, 
47001
  0x6B, 0x65, 0x20, 0x60, 0x65, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0x60, 0x20, 0x62, 0x75, 0x74, 
47002
  0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6E, 0x6F, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6C, 0x69, 0x6E, 
47003
  0x67, 0x20, 0x6E, 0x65, 0x77, 0x6C, 0x69, 0x6E, 0x65, 0x2E, 0xDA, 0x8B, 0x28, 0xD3, 0x03, 0xDA, 
47004
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0xA5, 0x81, 0x72, 0x01, 0xDA, 0x06, 0xDA, 0x89, 0x29, 0xDA, 
47005
  0x08, 0xCE, 0x6C, 0x28, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x2D, 
47006
  0x66, 0x6C, 0x61, 0x74, 0x74, 0x65, 0x6E, 0x20, 0x74, 0x61, 0x62, 0x29, 0x0A, 0x0A, 0x43, 0x72, 
47007
  0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 
47008
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 
47009
  0x75, 0x6C, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x6D, 0x65, 0x72, 0x67, 0x69, 0x6E, 0x67, 0x20, 0x61, 
47010
  0x6C, 0x6C, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x69, 0x6E, 
47011
  0x74, 0x6F, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 
47012
  0x8B, 0x29, 0xD3, 0x02, 0xDA, 0x06, 0xDA, 0x8B, 0x2A, 0xDA, 0x08, 0xCE, 0x80, 0xAD, 0x28, 0x64, 
47013
  0x65, 0x62, 0x75, 0x67, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x54, 0x68, 
47014
  0x72, 0x6F, 0x77, 0x73, 0x20, 0x61, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x20, 0x73, 0x69, 0x67, 
47015
  0x6E, 0x61, 0x6C, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 
47016
  0x63, 0x61, 0x75, 0x67, 0x68, 0x74, 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x65, 
47017
  0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x75, 0x73, 0x65, 
47018
  0x64, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6E, 0x73, 0x70, 0x65, 0x63, 0x74, 0x20, 0x74, 0x68, 0x65, 
47019
  0x20, 0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x6F, 
47020
  0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 
47021
  0x62, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
47022
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 0x69, 0x6E, 
47023
  0x20, 0x62, 0x79, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x2E, 0xDA, 0x8B, 0x2C, 0xD3, 0x03, 
47024
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x40, 0x8C, 0x25, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0x2D, 0xDA, 
47025
  0x08, 0xCE, 0x81, 0xC8, 0x28, 0x65, 0x76, 0x2F, 0x72, 0x65, 0x61, 0x64, 0x20, 0x73, 0x74, 0x72, 
47026
  0x65, 0x61, 0x6D, 0x20, 0x6E, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 
47027
  0x72, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x61, 0x64, 
47028
  0x20, 0x75, 0x70, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x69, 
47029
  0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x61, 0x73, 0x79, 
47030
  0x6E, 0x63, 0x68, 0x72, 0x6F, 0x6E, 0x6F, 0x75, 0x73, 0x6C, 0x79, 0x20, 0x66, 0x72, 0x6F, 0x6D, 
47031
  0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x63, 
47032
  0x61, 0x6E, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 
47033
  0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x60, 0x3A, 0x61, 0x6C, 0x6C, 0x60, 0x20, 0x74, 0x6F, 
47034
  0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 
47035
  0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x65, 0x6E, 0x64, 0x20, 
47036
  0x6F, 0x66, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0x20, 0x4F, 0x70, 0x74, 0x69, 0x6F, 
47037
  0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x20, 0x61, 0x20, 
47038
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 
47039
  0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x73, 0x20, 0x77, 0x65, 0x6C, 0x6C, 0x20, 0x61, 0x73, 0x20, 
47040
  0x61, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x65, 0x63, 
47041
  0x6F, 0x6E, 0x64, 0x73, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 
47042
  0x20, 0x74, 0x6F, 0x20, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 
47043
  0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x61, 0x69, 
47044
  0x73, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 
47045
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 
47046
  0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x77, 0x61, 0x73, 0x20, 
47047
  0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6C, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x69, 
47048
  0x6C, 0x20, 0x69, 0x66, 0x20, 0x65, 0x6E, 0x64, 0x2D, 0x6F, 0x66, 0x2D, 0x73, 0x74, 0x72, 0x65, 
47049
  0x61, 0x6D, 0x20, 0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 
47050
  0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 
47051
  0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x70, 0x72, 0x6F, 
47052
  0x62, 0x6C, 0x65, 0x6D, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x49, 
47053
  0x4F, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x8B, 0x2E, 0xD3, 
47054
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x01, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0x2F, 
47055
  0xDA, 0x08, 0xCE, 0x47, 0x28, 0x6F, 0x73, 0x2F, 0x73, 0x68, 0x65, 0x6C, 0x6C, 0x20, 0x73, 0x74, 
47056
  0x72, 0x29, 0x0A, 0x0A, 0x50, 0x61, 0x73, 0x73, 0x20, 0x61, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x61, 
47057
  0x6E, 0x64, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x74, 0x72, 0x20, 0x64, 0x69, 
47058
  0x72, 0x65, 0x63, 0x74, 0x6C, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x79, 
47059
  0x73, 0x74, 0x65, 0x6D, 0x20, 0x73, 0x68, 0x65, 0x6C, 0x6C, 0x2E, 0xDA, 0x8B, 0x30, 0xD3, 0x03, 
47060
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x7D, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0x31, 0xDA, 0x08, 
47061
  0xCE, 0x20, 0x28, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 
47062
  0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x66, 0x61, 0x6C, 0x73, 
47063
  0x65, 0x2E, 0xDA, 0x8B, 0x33, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0xFA, 0x80, 
47064
  0xEB, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0x34, 0xDA, 0x08, 0xCE, 0x80, 0x96, 0x28, 0x73, 0x74, 0x72, 
47065
  0x69, 0x6E, 0x67, 0x2F, 0x66, 0x72, 0x6F, 0x6D, 0x2D, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x26, 
47066
  0x20, 0x62, 0x79, 0x74, 0x65, 0x2D, 0x76, 0x61, 0x6C, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 
47067
  0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x72, 
47068
  0x6F, 0x6D, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6D, 
47069
  0x65, 0x74, 0x65, 0x72, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 
47070
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 0x41, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 0x74, 0x65, 
47071
  0x67, 0x65, 0x72, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x63, 0x6F, 0x65, 
47072
  0x72, 0x63, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x67, 
47073
  0x65, 0x20, 0x6F, 0x66, 0x20, 0x31, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x30, 0x2D, 0x32, 0x35, 
47074
  0x35, 0x2E, 0xDA, 0x8B, 0x35, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8E, 0x84, 
47075
  0x01, 0xDA, 0x06, 0xDA, 0x8B, 0x36, 0xDA, 0x08, 0xCE, 0x80, 0xBE, 0x28, 0x64, 0x65, 0x6C, 0x61, 
47076
  0x79, 0x20, 0x26, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x29, 0x0A, 0x0A, 0x4C, 0x61, 0x7A, 0x69, 
47077
  0x6C, 0x79, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x65, 
47078
  0x72, 0x69, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 
47079
  0x6F, 0x6E, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x66, 
47080
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x20, 0x72, 0x65, 
47081
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 
47082
  0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x65, 0x78, 0x70, 
47083
  0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x6F, 0x6E, 
47084
  0x6C, 0x79, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 
47085
  0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x6F, 0x6E, 0x63, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 
47086
  0x74, 0x68, 0x65, 0x6E, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x69, 0x7A, 0x65, 0x73, 0x20, 0x74, 0x68, 
47087
  0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x8B, 0x3A, 0xD3, 
47088
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x83, 0x14, 0x82, 0x14, 0x01, 0xDA, 0x06, 0xDA, 0x80, 
47089
  0xFE, 0xDA, 0x08, 0xCE, 0x5C, 0x28, 0x65, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x26, 0x20, 0x78, 
47090
  0x73, 0x29, 0x0A, 0x0A, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x70, 0x72, 0x69, 
47091
  0x6E, 0x74, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x75, 0x73, 0x65, 0x73, 0x20, 0x60, 0x28, 
47092
  0x64, 0x79, 0x6E, 0x20, 0x3A, 0x65, 0x72, 0x72, 0x20, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x29, 
47093
  0x60, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x28, 0x64, 
47094
  0x79, 0x6E, 0x20, 0x3A, 0x6F, 0x75, 0x74, 0x20, 0x73, 0x74, 0x64, 0x6F, 0x75, 0x74, 0x29, 0x60, 
47095
  0x2E, 0xDA, 0x8B, 0x3B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x83, 0x40, 0x81, 0xBE, 
47096
  0x01, 0xDA, 0x06, 0xDA, 0x8B, 0x3C, 0xDA, 0x08, 0xCE, 0x67, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 
47097
  0x72, 0x2F, 0x62, 0x69, 0x74, 0x2D, 0x74, 0x6F, 0x67, 0x67, 0x6C, 0x65, 0x20, 0x62, 0x75, 0x66, 
47098
  0x66, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x29, 0x0A, 0x0A, 0x54, 0x6F, 0x67, 0x67, 
47099
  0x6C, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x69, 0x74, 0x20, 0x61, 0x74, 0x20, 0x74, 
47100
  0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x62, 0x69, 0x74, 0x20, 0x69, 0x6E, 0x64, 
47101
  0x65, 0x78, 0x20, 0x69, 0x6E, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 
47102
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
47103
  0x2E, 0xDA, 0x8B, 0x3D, 0xD3, 0x02, 0xDA, 0x06, 0xDA, 0x82, 0xD1, 0xDA, 0x08, 0xCE, 0x81, 0x53, 
47104
  0x28, 0x70, 0x72, 0x6F, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x20, 0x78, 0x20, 0x66, 0x69, 0x62, 
47105
  0x65, 0x72, 0x29, 0x0A, 0x0A, 0x50, 0x72, 0x6F, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x20, 0x61, 
47106
  0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x66, 
47107
  0x69, 0x62, 0x65, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 
47108
  0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 
47109
  0x65, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x74, 
47110
  0x72, 0x61, 0x63, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 
47111
  0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x77, 0x69, 0x6C, 0x6C, 
47112
  0x20, 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x64, 0x65, 0x20, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x73, 0x20, 
47113
  0x66, 0x72, 0x6F, 0x6D, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x66, 
47114
  0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x73, 0x74, 0x61, 
47115
  0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x72, 
47116
  0x65, 0x73, 0x75, 0x6D, 0x65, 0x64, 0x2C, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x69, 0x6E, 0x67, 
47117
  0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 
47118
  0x65, 0x72, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x72, 0x65, 
47119
  0x73, 0x75, 0x6D, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 
47120
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 
47121
  0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x2D, 0x72, 0x61, 0x69, 0x73, 
47122
  0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 
47123
  0x75, 0x74, 0x20, 0x6C, 0x6F, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x72, 
47124
  0x69, 0x67, 0x69, 0x6E, 0x61, 0x6C, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x74, 0x72, 0x61, 
47125
  0x63, 0x65, 0x2E, 0xDA, 0x8B, 0x3E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 
47126
  0x81, 0x10, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0x3F, 0xDA, 0x08, 0xCE, 0x24, 0x28, 0x6D, 0x61, 0x74, 
47127
  0x68, 0x2F, 0x73, 0x69, 0x6E, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
47128
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 
47129
  0xDA, 0x8B, 0x40, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x83, 0x40, 0x80, 0xF3, 0x01, 
47130
  0xDA, 0x06, 0xDA, 0x8B, 0x41, 0xDA, 0x08, 0xCE, 0x7E, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
47131
  0x2F, 0x74, 0x72, 0x69, 0x6D, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x53, 
47132
  0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x63, 
47133
  0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 
47134
  0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 
47135
  0x72, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x74, 
47136
  0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
47137
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 
47138
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x8B, 0x42, 0xD3, 0x02, 0xDA, 0x06, 0xDA, 0x8B, 
47139
  0x43, 0xDA, 0x08, 0xCE, 0x80, 0xF4, 0x28, 0x62, 0x72, 0x75, 0x73, 0x68, 0x69, 0x66, 0x74, 0x20, 
47140
  0x78, 0x20, 0x26, 0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 
47141
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 
47142
  0x66, 0x20, 0x78, 0x20, 0x62, 0x69, 0x74, 0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 0x65, 0x64, 0x20, 
47143
  0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x6D, 
47144
  0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 
47145
  0x6E, 0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 0x73, 0x2E, 0x20, 0x78, 0x20, 0x61, 0x6E, 0x64, 0x20, 
47146
  0x65, 0x61, 0x63, 0x68, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 
47147
  0x73, 0x68, 0x69, 0x66, 0x74, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 
47148
  0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x69, 
47149
  0x67, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x70, 
47150
  0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2C, 0x20, 0x73, 0x6F, 0x20, 0x66, 0x6F, 0x72, 
47151
  0x20, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 0x73, 
47152
  0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 
47153
  0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x61, 0x6C, 0x77, 0x61, 0x79, 0x73, 0x20, 0x62, 0x65, 
47154
  0x20, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x2E, 0xDA, 0x8B, 0x45, 0xD3, 0x03, 0xDA, 
47155
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8E, 0xFE, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0x46, 0xDA, 0x08, 
47156
  0xCE, 0x81, 0x3D, 0x28, 0x66, 0x6C, 0x79, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x70, 0x61, 0x74, 
47157
  0x68, 0x20, 0x26, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x6B, 0x77, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 
47158
  0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x66, 0x6F, 
47159
  0x72, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 
47160
  0x20, 0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 
47161
  0x65, 0x2E, 0x20, 0x46, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x20, 
47162
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x65, 0x64, 0x20, 
47163
  0x74, 0x6F, 0x20, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x0A, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 
47164
  0x20, 0x75, 0x73, 0x75, 0x61, 0x6C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x2E, 0x20, 0x4D, 
47165
  0x61, 0x63, 0x72, 0x6F, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x73, 0x74, 0x69, 0x6C, 0x6C, 
47166
  0x20, 0x62, 0x65, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x2C, 0x20, 0x68, 0x6F, 
47167
  0x77, 0x65, 0x76, 0x65, 0x72, 0x2C, 0x20, 0x73, 0x6F, 0x0A, 0x61, 0x72, 0x62, 0x69, 0x74, 0x72, 
47168
  0x61, 0x72, 0x79, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x73, 
47169
  0x20, 0x70, 0x6F, 0x73, 0x73, 0x69, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x4F, 0x74, 0x68, 0x65, 0x72, 
47170
  0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 
47171
  0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x64, 0x6F, 0x66, 0x69, 
47172
  0x6C, 0x65, 0x60, 0x2E, 0x20, 0x60, 0x70, 0x61, 0x74, 0x68, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 
47173
  0x61, 0x6C, 0x73, 0x6F, 0x20, 0x62, 0x65, 0x0A, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x76, 
47174
  0x61, 0x6C, 0x75, 0x65, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x61, 0x73, 0x20, 0x73, 0x74, 0x64, 
47175
  0x69, 0x6E, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 
47176
  0xDA, 0x8B, 0x91, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0xFA, 0x82, 0x69, 0x01, 
47177
  0xDA, 0x06, 0xDA, 0x8B, 0x92, 0xDA, 0x08, 0xCE, 0x80, 0xA1, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 
47178
  0x67, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0x6C, 0x20, 0x73, 0x74, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 
47179
  0x20, 0x73, 0x65, 0x74, 0x29, 0x0A, 0x0A, 0x54, 0x72, 0x69, 0x6D, 0x20, 0x6C, 0x65, 0x61, 0x64, 
47180
  0x69, 0x6E, 0x67, 0x20, 0x77, 0x68, 0x69, 0x74, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x66, 
47181
  0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 
47182
  0x6E, 0x63, 0x65, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 
47183
  0x6D, 0x65, 0x6E, 0x74, 0x20, 0x60, 0x73, 0x65, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 
47184
  0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x72, 
47185
  0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 
47186
  0x20, 0x69, 0x6E, 0x20, 0x60, 0x73, 0x65, 0x74, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 
47187
  0x77, 0x68, 0x69, 0x74, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2E, 0xDA, 0x8B, 0x93, 0xD3, 0x04, 
47188
  0xDA, 0x84, 0x25, 0xCB, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x84, 0xBF, 0x01, 0xDA, 0x06, 
47189
  0xDA, 0x82, 0x16, 0xDA, 0x08, 0xCE, 0x6A, 0x57, 0x68, 0x65, 0x6E, 0x20, 0x73, 0x65, 0x74, 0x2C, 
47190
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x63, 0x61, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 
47191
  0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x20, 
47192
  0x74, 0x6F, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x2E, 0x20, 0x43, 0x61, 0x6E, 
47193
  0x20, 0x62, 0x65, 0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 
47194
  0x66, 0x72, 0x6F, 0x6D, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x20, 0x28, 0x6F, 0x72, 0x20, 0x66, 0x69, 
47195
  0x6C, 0x65, 0x29, 0x2C, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, 0x78, 0x61, 0x6D, 0x70, 0x6C, 0x65, 
47196
  0x2E, 0xDA, 0x8B, 0x94, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0xFA, 0x82, 0x73, 
47197
  0x01, 0xDA, 0x06, 0xDA, 0x8B, 0x95, 0xDA, 0x08, 0xCE, 0x80, 0xA2, 0x28, 0x73, 0x74, 0x72, 0x69, 
47198
  0x6E, 0x67, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0x72, 0x20, 0x73, 0x74, 0x72, 0x20, 0x26, 0x6F, 0x70, 
47199
  0x74, 0x20, 0x73, 0x65, 0x74, 0x29, 0x0A, 0x0A, 0x54, 0x72, 0x69, 0x6D, 0x20, 0x74, 0x72, 0x61, 
47200
  0x69, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x77, 0x68, 0x69, 0x74, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 
47201
  0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 
47202
  0x75, 0x65, 0x6E, 0x63, 0x65, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 
47203
  0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x60, 0x73, 0x65, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 
47204
  0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x69, 0x64, 
47205
  0x65, 0x72, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 
47206
  0x72, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x73, 0x65, 0x74, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x62, 
47207
  0x65, 0x20, 0x77, 0x68, 0x69, 0x74, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2E, 0xDA, 0x85, 0x92, 
47208
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 0xA9, 0x81, 0x17, 0x01, 0xDA, 0x06, 0xDA, 
47209
  0x81, 0x60, 0xDA, 0x08, 0xCE, 0x39, 0x28, 0x73, 0x65, 0x74, 0x64, 0x79, 0x6E, 0x20, 0x6B, 0x65, 
47210
  0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x61, 0x20, 
47211
  0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x2E, 
47212
  0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0xDA, 
47213
  0x8B, 0x96, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x85, 0x6F, 0x80, 0xD7, 0x01, 0xDA, 
47214
  0x06, 0xDA, 0x82, 0xE5, 0xDA, 0x08, 0xCE, 0x81, 0x86, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 
47215
  0x73, 0x6C, 0x69, 0x63, 0x65, 0x20, 0x61, 0x72, 0x72, 0x74, 0x75, 0x70, 0x20, 0x26, 0x6F, 0x70, 
47216
  0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x65, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x54, 0x61, 
47217
  0x6B, 0x65, 0x73, 0x20, 0x61, 0x20, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 
47218
  0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x72, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x66, 0x72, 
47219
  0x6F, 0x6D, 0x20, 0x60, 0x73, 0x74, 0x61, 0x72, 0x74, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x65, 
47220
  0x6E, 0x64, 0x60, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x69, 
47221
  0x73, 0x20, 0x68, 0x61, 0x6C, 0x66, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x2C, 0x20, 0x5B, 0x73, 0x74, 
47222
  0x61, 0x72, 0x74, 0x2C, 0x20, 0x65, 0x6E, 0x64, 0x29, 0x2E, 0x20, 0x49, 0x6E, 0x64, 0x65, 0x78, 
47223
  0x65, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x6E, 
47224
  0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2C, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 
47225
  0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x72, 0x6F, 
47226
  0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 
47227
  0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x20, 0x42, 0x79, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 
47228
  0x6C, 0x74, 0x2C, 0x20, 0x60, 0x73, 0x74, 0x61, 0x72, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x30, 
47229
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x65, 0x6E, 0x64, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 
47230
  0x65, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
47231
  0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x20, 0x4E, 0x6F, 0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 
47232
  0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x2D, 0x31, 0x20, 0x69, 0x73, 0x20, 0x73, 0x79, 0x6E, 
47233
  0x6F, 0x6E, 0x79, 0x6D, 0x6F, 0x75, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x69, 0x6E, 0x64, 
47234
  0x65, 0x78, 0x20, 0x60, 0x28, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x61, 0x72, 0x72, 0x74, 
47235
  0x75, 0x70, 0x29, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x61, 0x20, 
47236
  0x66, 0x75, 0x6C, 0x6C, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x73, 0x6C, 
47237
  0x69, 0x63, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
47238
  0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 
47239
  0x8B, 0x97, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x40, 0x8B, 0x07, 0x01, 0xDA, 0x06, 
47240
  0xDA, 0x83, 0x1F, 0xDA, 0x08, 0xCE, 0x81, 0xD5, 0x28, 0x65, 0x76, 0x2F, 0x67, 0x6F, 0x20, 0x66, 
47241
  0x69, 0x62, 0x65, 0x72, 0x2D, 0x6F, 0x72, 0x2D, 0x66, 0x75, 0x6E, 0x20, 0x26, 0x6F, 0x70, 0x74, 
47242
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6F, 
47243
  0x72, 0x29, 0x0A, 0x0A, 0x50, 0x75, 0x74, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 
47244
  0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x6F, 0x6F, 
47245
  0x70, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x64, 0x20, 
47246
  0x6C, 0x61, 0x74, 0x65, 0x72, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 
47247
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x2C, 0x20, 0x69, 0x74, 
47248
  0x20, 0x69, 0x73, 0x20, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 
47249
  0x20, 0x60, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 0x60, 0x20, 0x66, 0x69, 0x72, 
47250
  0x73, 0x74, 0x2E, 0x20, 0x4F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x70, 
47251
  0x61, 0x73, 0x73, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x72, 
47252
  0x65, 0x73, 0x75, 0x6D, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 
47253
  0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x73, 0x20, 0x77, 0x69, 
47254
  0x74, 0x68, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
47255
  0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x41, 0x6E, 0x20, 0x6F, 0x70, 
47256
  0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x60, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x63, 0x68, 0x61, 
47257
  0x6E, 0x6E, 0x65, 0x6C, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 0x6F, 
47258
  0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x73, 0x75, 0x70, 0x65, 0x72, 
47259
  0x76, 0x69, 0x73, 0x6F, 0x72, 0x2E, 0x20, 0x57, 0x68, 0x65, 0x6E, 0x20, 0x76, 0x61, 0x72, 0x69, 
47260
  0x6F, 0x75, 0x73, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x63, 0x63, 0x75, 0x72, 
47261
  0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x6C, 0x79, 0x20, 0x73, 0x63, 
47262
  0x68, 0x65, 0x64, 0x75, 0x6C, 0x65, 0x64, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2C, 0x20, 0x61, 
47263
  0x6E, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 
47264
  0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 
47265
  0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6F, 0x72, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6E, 0x6F, 0x74, 
47266
  0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 
47267
  0x65, 0x77, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 
47268
  0x68, 0x65, 0x72, 0x69, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 
47269
  0x74, 0x20, 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6F, 0x72, 0x2E, 0xDA, 0x8B, 0x98, 
47270
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 0x21, 0x01, 0xDA, 0x06, 0xDA, 
47271
  0x8B, 0x99, 0xDA, 0x08, 0xCE, 0x31, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x6F, 0x75, 0x6E, 
47272
  0x64, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 
47273
  0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x6E, 0x65, 0x61, 0x72, 0x65, 0x73, 
47274
  0x74, 0x20, 0x74, 0x6F, 0x20, 0x78, 0x2E, 0xDA, 0x8B, 0x9A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
47275
  0x00, 0xDA, 0x83, 0x14, 0x82, 0xAA, 0x01, 0xDA, 0x06, 0xDA, 0x80, 0xC4, 0xDA, 0x08, 0xCE, 0x49, 
47276
  0x28, 0x66, 0x6C, 0x75, 0x73, 0x68, 0x29, 0x0A, 0x0A, 0x46, 0x6C, 0x75, 0x73, 0x68, 0x20, 0x60, 
47277
  0x28, 0x64, 0x79, 0x6E, 0x20, 0x3A, 0x6F, 0x75, 0x74, 0x20, 0x73, 0x74, 0x64, 0x6F, 0x75, 0x74, 
47278
  0x29, 0x60, 0x20, 0x69, 0x66, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x69, 
47279
  0x6C, 0x65, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x64, 0x6F, 
47280
  0x20, 0x6E, 0x6F, 0x74, 0x68, 0x69, 0x6E, 0x67, 0x2E, 0xDA, 0x8B, 0x9B, 0xD3, 0x03, 0xDA, 0x03, 
47281
  0xD2, 0x03, 0x00, 0xDA, 0x83, 0x14, 0x83, 0x30, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0x9C, 0xDA, 0x08, 
47282
  0xCE, 0x18, 0x54, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, 0x64, 0x20, 0x69, 
47283
  0x6E, 0x70, 0x75, 0x74, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0xDA, 0x8B, 0x9D, 0xD3, 0x03, 0xDA, 
47284
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0xFA, 0x81, 0xA1, 0x01, 0xDA, 0x06, 0xDA, 0x83, 0xBC, 0xDA, 
47285
  0x08, 0xCE, 0x81, 0x90, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 
47286
  0x61, 0x63, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x61, 0x74, 0x74, 0x20, 0x73, 0x75, 0x62, 
47287
  0x73, 0x74, 0x20, 0x73, 0x74, 0x72, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 
47288
  0x20, 0x61, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x63, 0x65, 0x73, 0x20, 0x6F, 
47289
  0x66, 0x20, 0x60, 0x70, 0x61, 0x74, 0x74, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x73, 
47290
  0x75, 0x62, 0x73, 0x74, 0x60, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 
47291
  0x69, 0x6E, 0x67, 0x20, 0x60, 0x73, 0x74, 0x72, 0x60, 0x2E, 0x20, 0x4F, 0x76, 0x65, 0x72, 0x6C, 
47292
  0x61, 0x70, 0x70, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x20, 0x77, 
47293
  0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 
47294
  0x65, 0x64, 0x2C, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 
47295
  0x73, 0x74, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x75, 0x63, 0x68, 
47296
  0x20, 0x61, 0x20, 0x73, 0x70, 0x61, 0x6E, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 
47297
  0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x64, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x73, 0x75, 
47298
  0x62, 0x73, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 
47299
  0x6F, 0x6E, 0x2C, 0x20, 0x69, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x63, 
47300
  0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x70, 0x61, 0x74, 0x74, 
47301
  0x60, 0x20, 0x6F, 0x6E, 0x63, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 
47302
  0x6D, 0x61, 0x74, 0x63, 0x68, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 
47303
  0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 
47304
  0x75, 0x61, 0x6C, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 
47305
  0x74, 0x65, 0x78, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x75, 0x73, 0x65, 0x2E, 0x20, 0x57, 0x69, 0x6C, 
47306
  0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 
47307
  0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x66, 0x20, 0x60, 0x70, 0x61, 0x74, 0x74, 
47308
  0x60, 0x20, 0x69, 0x73, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 
47309
  0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x60, 0x73, 
47310
  0x74, 0x72, 0x60, 0x2E, 0xDA, 0x8B, 0x9E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x0C, 
47311
  0x81, 0xC6, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0x9F, 0xDA, 0x08, 0xCE, 0x6E, 0x28, 0x66, 0x66, 0x69, 
47312
  0x2F, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x26, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x29, 
47313
  0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 
47314
  0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x6F, 
47315
  0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 
47316
  0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 
47317
  0x74, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x66, 
47318
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x20, 0xDA, 0x8B, 0xA0, 0xD3, 0x03, 0xDA, 
47319
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 0x31, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0xA1, 0xDA, 
47320
  0x08, 0xCE, 0x48, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x74, 0x61, 0x6E, 0x32, 0x20, 0x79, 
47321
  0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
47322
  0x20, 0x61, 0x72, 0x63, 0x74, 0x61, 0x6E, 0x67, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x79, 
47323
  0x2F, 0x78, 0x2E, 0x20, 0x57, 0x6F, 0x72, 0x6B, 0x73, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x20, 0x77, 
47324
  0x68, 0x65, 0x6E, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x30, 0x2E, 0xDA, 0x8A, 0x68, 0xDA, 0x89, 
47325
  0x4B, 0xDA, 0x8B, 0xA2, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0xB2, 0x80, 0xF9, 
47326
  0x01, 0xDA, 0x06, 0xDA, 0x8B, 0xA3, 0xDA, 0x08, 0xCE, 0x81, 0xAC, 0x28, 0x69, 0x6E, 0x74, 0x2F, 
47327
  0x74, 0x6F, 0x2D, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x26, 
47328
  0x6F, 0x70, 0x74, 0x20, 0x65, 0x6E, 0x64, 0x69, 0x61, 0x6E, 0x6E, 0x65, 0x73, 0x73, 0x20, 0x62, 
47329
  0x75, 0x66, 0x66, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, 0x68, 
47330
  0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x60, 0x69, 
47331
  0x6E, 0x74, 0x2F, 0x73, 0x36, 0x34, 0x60, 0x20, 0x6F, 0x72, 0x20, 0x60, 0x69, 0x6E, 0x74, 0x2F, 
47332
  0x75, 0x36, 0x34, 0x60, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 
47333
  0x65, 0x72, 0x2E, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x60, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x60, 
47334
  0x20, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 0x65, 0x72, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 
47335
  0x66, 0x69, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6E, 0x67, 
47336
  0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 
47337
  0x20, 0x74, 0x6F, 0x2C, 0x20, 0x69, 0x66, 0x20, 0x75, 0x6E, 0x73, 0x65, 0x74, 0x20, 0x61, 0x20, 
47338
  0x6E, 0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
47339
  0x62, 0x65, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x2E, 0x0A, 0x52, 0x65, 0x74, 0x75, 
47340
  0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 
47341
  0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x60, 0x65, 0x6E, 
47342
  0x64, 0x69, 0x61, 0x6E, 0x6E, 0x65, 0x73, 0x73, 0x60, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x61, 
47343
  0x74, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 
47344
  0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A, 0x0A, 0x2D, 0x20, 
47345
  0x60, 0x6E, 0x69, 0x6C, 0x60, 0x20, 0x28, 0x75, 0x6E, 0x73, 0x65, 0x74, 0x29, 0x3A, 0x20, 0x73, 
47346
  0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 
47347
  0x0A, 0x2D, 0x20, 0x60, 0x3A, 0x6C, 0x65, 0x60, 0x3A, 0x20, 0x6C, 0x69, 0x74, 0x74, 0x6C, 0x65, 
47348
  0x2D, 0x65, 0x6E, 0x64, 0x69, 0x61, 0x6E, 0x2C, 0x20, 0x6C, 0x65, 0x61, 0x73, 0x74, 0x20, 0x73, 
47349
  0x69, 0x67, 0x6E, 0x69, 0x66, 0x69, 0x63, 0x61, 0x6E, 0x74, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 
47350
  0x66, 0x69, 0x72, 0x73, 0x74, 0x0A, 0x2D, 0x20, 0x60, 0x3A, 0x62, 0x65, 0x60, 0x3A, 0x20, 0x62, 
47351
  0x69, 0x67, 0x2D, 0x65, 0x6E, 0x64, 0x69, 0x61, 0x6E, 0x2C, 0x20, 0x6D, 0x6F, 0x73, 0x74, 0x20, 
47352
  0x73, 0x69, 0x67, 0x6E, 0x69, 0x66, 0x69, 0x63, 0x61, 0x6E, 0x74, 0x20, 0x62, 0x79, 0x74, 0x65, 
47353
  0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x0A, 0xDA, 0x8A, 0x25, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
47354
  0x00, 0xDA, 0x18, 0x89, 0x75, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x23, 0xDA, 0x08, 0xCE, 0x80, 0xA2, 
47355
  0x28, 0x63, 0x75, 0x72, 0x65, 0x6E, 0x76, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 0x29, 0x0A, 
47356
  0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 
47357
  0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x61, 0x62, 
47358
  0x6C, 0x65, 0x2E, 0x20, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x28, 0x66, 0x69, 
47359
  0x62, 0x65, 0x72, 0x2F, 0x67, 0x65, 0x74, 0x65, 0x6E, 0x76, 0x20, 0x28, 0x66, 0x69, 0x62, 0x65, 
47360
  0x72, 0x2F, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x29, 0x29, 0x60, 0x2E, 0x20, 0x49, 0x66, 
47361
  0x20, 0x60, 0x6E, 0x60, 0x0A, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 
47362
  0x2C, 0x20, 0x67, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x74, 0x68, 0x20, 0x70, 
47363
  0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
47364
  0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x61, 0x62, 0x6C, 
47365
  0x65, 0x2E, 0xDA, 0x8B, 0xA4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8A, 0x9C, 
47366
  0x01, 0xDA, 0x06, 0xDA, 0x87, 0x20, 0xDA, 0x08, 0xCE, 0x82, 0x09, 0x54, 0x68, 0x65, 0x20, 0x6C, 
47367
  0x69, 0x73, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x70, 0x61, 0x74, 0x68, 0x73, 0x20, 0x74, 0x6F, 0x20, 
47368
  0x6C, 0x6F, 0x6F, 0x6B, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 
47369
  0x2C, 0x20, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 
47370
  0x60, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x2D, 0x70, 
47371
  0x61, 0x74, 0x68, 0x60, 0x2E, 0x0A, 0x45, 0x61, 0x63, 0x68, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 
47372
  0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x77, 0x6F, 0x2D, 0x65, 0x6C, 0x65, 0x6D, 
47373
  0x65, 0x6E, 0x74, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2C, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 
47374
  0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x0A, 0x74, 
47375
  0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x20, 0x6B, 0x65, 
47376
  0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x3A, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2C, 0x20, 0x3A, 
47377
  0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x3A, 0x69, 0x6D, 0x61, 0x67, 
47378
  0x65, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x68, 0x6F, 0x77, 
47379
  0x0A, 0x60, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x60, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 
47380
  0x64, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x73, 0x20, 0x66, 0x6F, 0x75, 
47381
  0x6E, 0x64, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 
47382
  0x73, 0x2E, 0x0A, 0x0A, 0x41, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x20, 
47383
  0x61, 0x6C, 0x73, 0x6F, 0x0A, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x74, 
47384
  0x68, 0x69, 0x72, 0x64, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x73, 0x70, 
47385
  0x65, 0x63, 0x69, 0x66, 0x79, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x74, 0x65, 
47386
  0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x73, 0x20, 
47387
  0x60, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x60, 0x0A, 0x66, 0x72, 
47388
  0x6F, 0x6D, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x61, 
47389
  0x74, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0x20, 
47390
  0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x74, 0x65, 0x72, 0x20, 0x64, 0x6F, 
47391
  0x65, 0x73, 0x6E, 0x27, 0x74, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 
47392
  0x69, 0x6E, 0x70, 0x75, 0x74, 0x0A, 0x70, 0x61, 0x74, 0x68, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 
47393
  0x66, 0x69, 0x6C, 0x74, 0x65, 0x72, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 
47394
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x64, 
47395
  0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 
47396
  0x61, 0x6E, 0x64, 0x0A, 0x69, 0x73, 0x20, 0x6F, 0x66, 0x74, 0x65, 0x6E, 0x20, 0x61, 0x20, 0x66, 
47397
  0x69, 0x6C, 0x65, 0x20, 0x65, 0x78, 0x74, 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x69, 
47398
  0x6E, 0x63, 0x6C, 0x75, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x65, 0x72, 
47399
  0x69, 0x6F, 0x64, 0x2E, 0xDA, 0x8B, 0xA5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x40, 
47400
  0x8C, 0xBF, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0xA6, 0xDA, 0x08, 0xCE, 0x57, 0x28, 0x65, 0x76, 0x2F, 
47401
  0x61, 0x6C, 0x6C, 0x2D, 0x74, 0x61, 0x73, 0x6B, 0x73, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 
47402
  0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 
47403
  0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x73, 0x20, 0x74, 0x68, 
47404
  0x61, 0x74, 0x20, 0x61, 0x72, 0x65, 0x20, 0x62, 0x65, 0x69, 0x6E, 0x67, 0x20, 0x75, 0x73, 0x65, 
47405
  0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6C, 
47406
  0x65, 0x72, 0x2E, 0xDA, 0x8B, 0xA7, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8A, 
47407
  0x44, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0xA8, 0xDA, 0x08, 0xCE, 0x80, 0x88, 0x28, 0x70, 0x61, 0x72, 
47408
  0x73, 0x65, 0x20, 0x73, 0x74, 0x72, 0x29, 0x0A, 0x0A, 0x50, 0x61, 0x72, 0x73, 0x65, 0x20, 0x61, 
47409
  0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 
47410
  0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 
47411
  0x75, 0x65, 0x2E, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x78, 0x20, 
47412
  0x70, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x61, 0x73, 
47413
  0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x20, 0x77, 0x69, 0x74, 0x68, 
47414
  0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x69, 0x6E, 0x67, 0x2C, 
47415
  0x0A, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 
47416
  0x61, 0x70, 0x69, 0x2E, 0xDA, 0x8B, 0xAB, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 
47417
  0x81, 0xF4, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0xAC, 0xDA, 0x08, 0xCE, 0x80, 0x9C, 0x28, 0x66, 0x6F, 
47418
  0x72, 0x76, 0x20, 0x69, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x73, 0x74, 0x6F, 0x70, 0x20, 
47419
  0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x44, 0x6F, 0x20, 0x61, 0x20, 0x43, 0x2D, 
47420
  0x73, 0x74, 0x79, 0x6C, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x2D, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x66, 
47421
  0x6F, 0x72, 0x20, 0x73, 0x69, 0x64, 0x65, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x73, 0x2E, 
47422
  0x20, 0x54, 0x68, 0x65, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x76, 
47423
  0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x60, 0x69, 0x60, 0x0A, 0x63, 0x61, 0x6E, 0x20, 
47424
  0x62, 0x65, 0x20, 0x6D, 0x75, 0x74, 0x61, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 
47425
  0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x2C, 0x20, 0x75, 0x6E, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x6E, 
47426
  0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x20, 0x60, 0x66, 0x6F, 0x72, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 
47427
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x85, 0xAC, 0xD3, 
47428
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8A, 0x53, 0x01, 0xDA, 0x06, 0xDA, 0x85, 0xA6, 
47429
  0xDA, 0x08, 0xCE, 0x80, 0x8E, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 0x20, 
47430
  0x73, 0x74, 0x72, 0x29, 0x0A, 0x0A, 0x50, 0x61, 0x72, 0x73, 0x65, 0x20, 0x61, 0x20, 0x73, 0x74, 
47431
  0x72, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 
47432
  0x61, 0x6C, 0x6C, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
47433
  0x73, 0x2E, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x78, 0x20, 0x70, 
47434
  0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x61, 0x73, 0x20, 
47435
  0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 
47436
  0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x69, 0x6E, 0x67, 0x2C, 0x0A, 
47437
  0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x61, 
47438
  0x70, 0x69, 0x2E, 0xDA, 0x8B, 0xAE, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0xFA, 
47439
  0x80, 0xF9, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0xAF, 0xDA, 0x08, 0xCE, 0x80, 0xBE, 0x28, 0x73, 0x74, 
47440
  0x72, 0x69, 0x6E, 0x67, 0x2F, 0x61, 0x73, 0x63, 0x69, 0x69, 0x2D, 0x6C, 0x6F, 0x77, 0x65, 0x72, 
47441
  0x20, 0x73, 0x74, 0x72, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 
47442
  0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x77, 0x68, 0x65, 0x72, 
47443
  0x65, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 
47444
  0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 
47445
  0x65, 0x20, 0x6C, 0x6F, 0x77, 0x65, 0x72, 0x63, 0x61, 0x73, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 
47446
  0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x6D, 0x73, 0x65, 0x6C, 0x76, 0x65, 
47447
  0x73, 0x20, 0x69, 0x6E, 0x20, 0x41, 0x53, 0x43, 0x49, 0x49, 0x2E, 0x20, 0x44, 0x6F, 0x65, 0x73, 
47448
  0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x61, 0x20, 0x76, 0x65, 0x72, 0x79, 0x20, 0x73, 0x69, 0x6D, 
47449
  0x70, 0x6C, 0x65, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2C, 0x20, 
47450
  0x6D, 0x65, 0x61, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x6F, 0x20, 0x75, 0x6E, 0x69, 0x63, 0x6F, 
47451
  0x64, 0x65, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 0x74, 0x2E, 0xDA, 0x8B, 0xB0, 0xD3, 0x03, 
47452
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 0x36, 0x01, 0xDA, 0x06, 0xDA, 0x80, 0x8D, 
47453
  0xDA, 0x08, 0xCE, 0x2A, 0x28, 0x6E, 0x6F, 0x74, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 
47454
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 
47455
  0x20, 0x69, 0x6E, 0x76, 0x65, 0x72, 0x73, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x8B, 
47456
  0xB1, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x15, 0x01, 0xDA, 0x06, 0xDA, 
47457
  0x8B, 0xB2, 0xDA, 0x08, 0xCE, 0x35, 0x28, 0x6F, 0x73, 0x2F, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 
47458
  0x6E, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x61, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x6F, 
47459
  0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4F, 0x53, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 
47460
  0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x8B, 0xB3, 0xD3, 0x03, 
47461
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x40, 0x84, 0x50, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0xB4, 0xDA, 
47462
  0x08, 0xCE, 0x4B, 0x28, 0x65, 0x76, 0x2F, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x63, 0x68, 0x61, 
47463
  0x6E, 0x6E, 0x65, 0x6C, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 
47464
  0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x69, 0x74, 0x65, 0x6D, 0x73, 0x20, 0x63, 
47465
  0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x6C, 0x79, 0x20, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6E, 0x67, 
47466
  0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x2E, 0xDA, 0x87, 
47467
  0x78, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8A, 0xDA, 0x01, 0xDA, 0x06, 0xDA, 
47468
  0x87, 0x1E, 0xDA, 0x08, 0xCE, 0x81, 0x01, 0x28, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x66, 
47469
  0x69, 0x6E, 0x64, 0x20, 0x70, 0x61, 0x74, 0x68, 0x29, 0x0A, 0x0A, 0x54, 0x72, 0x79, 0x20, 0x74, 
47470
  0x6F, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x61, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 
47471
  0x20, 0x6F, 0x72, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x66, 0x72, 
47472
  0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x73, 0x20, 
47473
  0x69, 0x6E, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x70, 0x61, 0x74, 0x68, 0x73, 
47474
  0x60, 0x2E, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 
47475
  0x6C, 0x65, 0x20, 0x28, 0x66, 0x75, 0x6C, 0x6C, 0x70, 0x61, 0x74, 0x68, 0x20, 0x6B, 0x69, 0x6E, 
47476
  0x64, 0x29, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x69, 0x6E, 
47477
  0x64, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x3A, 0x73, 0x6F, 0x75, 
47478
  0x72, 0x63, 0x65, 0x2C, 0x20, 0x3A, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2C, 0x0A, 0x6F, 0x72, 
47479
  0x20, 0x3A, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 
47480
  0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x69, 0x73, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2C, 0x20, 
47481
  0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 
47482
  0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 
47483
  0x77, 0x65, 0x64, 0x20, 0x62, 0x79, 0x0A, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 
47484
  0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2E, 0xDA, 0x8B, 0xB5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
47485
  0x03, 0x00, 0xDA, 0x83, 0x14, 0x80, 0xE6, 0x01, 0xDA, 0x06, 0xDA, 0x86, 0x5A, 0xDA, 0x08, 0xCE, 
47486
  0x64, 0x28, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x66, 0x20, 0x62, 
47487
  0x79, 0x74, 0x65, 0x73, 0x29, 0x0A, 0x0A, 0x57, 0x72, 0x69, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 
47488
  0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x20, 0x27, 0x62, 0x79, 0x74, 0x65, 0x73, 0x27, 
47489
  0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2C, 
47490
  0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x79, 0x6D, 0x62, 
47491
  0x6F, 0x6C, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
47492
  0x66, 0x69, 0x6C, 0x65, 0x2E, 0xDA, 0x8B, 0xB6, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
47493
  0x0C, 0x85, 0xCB, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0xB7, 0xDA, 0x08, 0xCE, 0x80, 0x85, 0x28, 0x66, 
47494
  0x66, 0x69, 0x2F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x29, 
47495
  0x0A, 0x0A, 0x46, 0x72, 0x65, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 
47496
  0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x2E, 0x20, 0x44, 0x65, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 
47497
  0x6E, 0x63, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x73, 0x20, 0x74, 
47498
  0x6F, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 
47499
  0x20, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x68, 0x61, 0x76, 
47500
  0x65, 0x20, 0x75, 0x6E, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x64, 0x20, 0x62, 0x65, 0x68, 0x61, 
47501
  0x76, 0x69, 0x6F, 0x72, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x66, 0x72, 0x65, 0x65, 0x69, 
47502
  0x6E, 0x67, 0x2E, 0xDA, 0x8B, 0xB8, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x82, 
47503
  0xCE, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0xB9, 0xDA, 0x08, 0xCE, 0x81, 0xAC, 0x28, 0x6F, 0x73, 0x2F, 
47504
  0x70, 0x72, 0x6F, 0x63, 0x2D, 0x6B, 0x69, 0x6C, 0x6C, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x20, 0x26, 
47505
  0x6F, 0x70, 0x74, 0x20, 0x77, 0x61, 0x69, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x29, 
47506
  0x0A, 0x0A, 0x4B, 0x69, 0x6C, 0x6C, 0x20, 0x61, 0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 
47507
  0x65, 0x73, 0x73, 0x20, 0x62, 0x79, 0x20, 0x73, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x53, 
47508
  0x49, 0x47, 0x4B, 0x49, 0x4C, 0x4C, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x74, 0x20, 0x6F, 0x6E, 0x20, 
47509
  0x70, 0x6F, 0x73, 0x69, 0x78, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x73, 0x2C, 0x20, 0x6F, 
47510
  0x72, 0x20, 0x62, 0x79, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 
47511
  0x20, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x20, 
47512
  0x6F, 0x6E, 0x20, 0x77, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 
47513
  0x77, 0x61, 0x69, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 
47514
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x77, 0x61, 0x69, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 
47515
  0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x66, 0x69, 
47516
  0x6E, 0x69, 0x73, 0x68, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
47517
  0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x2E, 0x20, 
47518
  0x4F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
47519
  0x6E, 0x73, 0x20, 0x60, 0x70, 0x72, 0x6F, 0x63, 0x60, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x73, 0x69, 
47520
  0x67, 0x6E, 0x61, 0x6C, 0x20, 0x69, 0x73, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 
47521
  0x64, 0x20, 0x73, 0x65, 0x6E, 0x64, 0x20, 0x69, 0x74, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 
47522
  0x64, 0x2E, 0x53, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 
47523
  0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x64, 0x20, 0x61, 0x66, 0x74, 0x65, 
47524
  0x72, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x43, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x65, 
47525
  0x72, 0x70, 0x61, 0x72, 0x74, 0x73, 0x20, 0x62, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x6C, 0x6F, 
47526
  0x77, 0x65, 0x72, 0x63, 0x61, 0x73, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 
47527
  0x20, 0x6C, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x53, 0x49, 0x47, 0x60, 0x20, 0x73, 
47528
  0x74, 0x72, 0x69, 0x70, 0x70, 0x65, 0x64, 0x2E, 0x20, 0x53, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 
47529
  0x20, 0x61, 0x72, 0x65, 0x20, 0x69, 0x67, 0x6E, 0x6F, 0x72, 0x65, 0x64, 0x20, 0x6F, 0x6E, 0x20, 
47530
  0x77, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x2E, 0xDA, 0x8B, 0xBA, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 
47531
  0x03, 0x00, 0xDA, 0x18, 0x81, 0x6D, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0xBB, 0xDA, 0x08, 0xCE, 0x7B, 
47532
  0x28, 0x6C, 0x61, 0x62, 0x65, 0x6C, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x26, 0x20, 0x62, 0x6F, 
47533
  0x64, 0x79, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x61, 0x20, 0x6C, 0x61, 0x62, 0x65, 0x6C, 
47534
  0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6C, 
47535
  0x65, 0x78, 0x69, 0x63, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x73, 0x63, 0x6F, 0x70, 0x65, 0x64, 0x2E, 
47536
  0x20, 0x60, 0x6E, 0x61, 0x6D, 0x65, 0x60, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 
47537
  0x65, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x0A, 0x74, 0x68, 0x61, 0x74, 0x20, 
47538
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x62, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x74, 0x6F, 
47539
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x62, 0x65, 0x6C, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x8B, 
47540
  0xBE, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x40, 0x8B, 0xD8, 0x01, 0xDA, 0x06, 0xDA, 
47541
  0x8B, 0xBF, 0xDA, 0x08, 0xCE, 0x81, 0x2D, 0x28, 0x65, 0x76, 0x2F, 0x67, 0x69, 0x76, 0x65, 0x2D, 
47542
  0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6F, 0x72, 0x20, 0x74, 0x61, 0x67, 0x20, 0x26, 
47543
  0x20, 0x70, 0x61, 0x79, 0x6C, 0x6F, 0x61, 0x64, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x6E, 0x64, 0x20, 
47544
  0x61, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 
47545
  0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 
47546
  0x73, 0x6F, 0x72, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x74, 
47547
  0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x6E, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x65, 
47548
  0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 
47549
  0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 
47550
  0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 
47551
  0x20, 0x63, 0x6F, 0x6D, 0x62, 0x69, 0x6E, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 
47552
  0x20, 0x73, 0x69, 0x6E, 0x67, 0x6C, 0x65, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2C, 
47553
  0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 
47554
  0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x61, 0x67, 0x2E, 
47555
  0x20, 0x42, 0x79, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 
47556
  0x74, 0x61, 0x67, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 
47557
  0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 
47558
  0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x6D, 
47559
  0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
47560
  0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x8B, 0xC0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 
47561
  0x9A, 0x81, 0x15, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0xC1, 0xDA, 0x08, 0xCE, 0x37, 0x28, 0x6D, 0x61, 
47562
  0x74, 0x68, 0x2F, 0x61, 0x74, 0x61, 0x6E, 0x68, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 
47563
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x79, 0x70, 0x65, 0x72, 0x62, 0x6F, 
47564
  0x6C, 0x69, 0x63, 0x20, 0x61, 0x72, 0x63, 0x74, 0x61, 0x6E, 0x67, 0x65, 0x6E, 0x74, 0x20, 0x6F, 
47565
  0x66, 0x20, 0x78, 0x2E, 0xDA, 0x87, 0x6E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 
47566
  0x83, 0xDE, 0x01, 0xDA, 0x06, 0xDA, 0x87, 0x6C, 0xDA, 0x08, 0xCE, 0x80, 0x8A, 0x28, 0x66, 0x69, 
47567
  0x6C, 0x74, 0x65, 0x72, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 
47568
  0x47, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 
47569
  0x65, 0x2C, 0x20, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x65, 0x6C, 0x65, 
47570
  0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 
47571
  0x72, 0x61, 0x79, 0x20, 0x6F, 0x72, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x66, 0x6F, 0x72, 
47572
  0x0A, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x60, 0x28, 0x70, 0x72, 0x65, 0x64, 0x20, 0x65, 0x6C, 
47573
  0x65, 0x6D, 0x65, 0x6E, 0x74, 0x29, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 
47574
  0x79, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 
47575
  0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x8A, 0xC0, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 
47576
  0x00, 0xDA, 0x18, 0x8E, 0x49, 0x03, 0xDA, 0x06, 0xDA, 0x8B, 0xC2, 0xDA, 0x08, 0xCE, 0x80, 0x9F, 
47577
  0x28, 0x65, 0x76, 0x2F, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x64, 0x65, 0x61, 0x64, 0x6C, 0x69, 0x6E, 
47578
  0x65, 0x20, 0x64, 0x65, 0x61, 0x64, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 
47579
  0x79, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x61, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x6F, 
47580
  0x66, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x64, 0x65, 
47581
  0x61, 0x64, 0x6C, 0x69, 0x6E, 0x65, 0x2C, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x74, 0x68, 0x61, 
47582
  0x74, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x64, 0x6F, 
47583
  0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x20, 
47584
  0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x0A, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x61, 0x64, 0x6C, 
47585
  0x69, 0x6E, 0x65, 0x20, 0x69, 0x73, 0x20, 0x75, 0x70, 0x2C, 0x20, 0x69, 0x74, 0x20, 0x77, 0x69, 
47586
  0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x65, 0x64, 0x2E, 0xDA, 
47587
  0x3D, 0xCB, 0xDA, 0x86, 0x0F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 0xA9, 0x81, 
47588
  0x8F, 0x01, 0xDA, 0x06, 0xDA, 0x80, 0x8F, 0xDA, 0x08, 0xCE, 0x50, 0x28, 0x74, 0x75, 0x70, 0x6C, 
47589
  0x65, 0x20, 0x26, 0x20, 0x69, 0x74, 0x65, 0x6D, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 
47590
  0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 
47591
  0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 0x20, 0x69, 0x74, 
47592
  0x65, 0x6D, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
47593
  0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2E, 0xDA, 0x8B, 0xC5, 0xD3, 0x03, 
47594
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x7B, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0xC6, 0xDA, 0x08, 
47595
  0xCE, 0x22, 0x28, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 
47596
  0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 
47597
  0x74, 0x68, 0x79, 0x2E, 0xDA, 0x8B, 0xC8, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x83, 
47598
  0x14, 0x81, 0x07, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0xC9, 0xDA, 0x08, 0xCE, 0x80, 0x90, 0x28, 0x66, 
47599
  0x69, 0x6C, 0x65, 0x2F, 0x66, 0x6C, 0x75, 0x73, 0x68, 0x20, 0x66, 0x29, 0x0A, 0x0A, 0x46, 0x6C, 
47600
  0x75, 0x73, 0x68, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 
47601
  0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 
47602
  0x6C, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x2E, 0x20, 0x49, 0x6E, 0x20, 0x6D, 0x6F, 
47603
  0x73, 0x74, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x73, 0x2C, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 
47604
  0x20, 0x61, 0x72, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x20, 0x66, 0x6F, 
47605
  0x72, 0x20, 0x65, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6E, 0x63, 0x79, 0x20, 0x72, 0x65, 0x61, 
47606
  0x73, 0x6F, 0x6E, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 
47607
  0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x2E, 0xDA, 0x8B, 
47608
  0xCA, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x40, 0x8C, 0x67, 0x01, 0xDA, 0x06, 0xDA, 
47609
  0x8B, 0xCB, 0xDA, 0x08, 0xCE, 0x33, 0x28, 0x65, 0x76, 0x2F, 0x6C, 0x6F, 0x63, 0x6B, 0x29, 0x0A, 
47610
  0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x6C, 0x6F, 
47611
  0x63, 0x6B, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x6F, 0x6F, 0x72, 0x64, 0x69, 0x6E, 0x61, 0x74, 0x65, 
47612
  0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x2E, 0xDA, 0x89, 0x51, 0xD3, 0x03, 0xDA, 0x03, 
47613
  0xD2, 0x03, 0x00, 0xDA, 0x18, 0x88, 0x45, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0xCC, 0xDA, 0x08, 0xCE, 
47614
  0x80, 0x95, 0x28, 0x73, 0x6F, 0x6D, 0x65, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 
47615
  0x20, 0x26, 0x20, 0x69, 0x6E, 0x64, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
47616
  0x73, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x60, 0x28, 0x70, 0x72, 0x65, 0x64, 0x20, 
47617
  0x69, 0x74, 0x65, 0x6D, 0x29, 0x60, 0x20, 0x69, 0x73, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 
47618
  0x6F, 0x72, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, 
47619
  0x20, 0x69, 0x74, 0x65, 0x6D, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x2E, 0x0A, 
47620
  0x4F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
47621
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x74, 0x72, 0x75, 
47622
  0x74, 0x68, 0x79, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x65, 0x6E, 0x63, 0x6F, 0x75, 
47623
  0x6E, 0x74, 0x65, 0x72, 0x65, 0x64, 0x2E, 0xDA, 0x8B, 0xDC, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
47624
  0x00, 0xDA, 0x84, 0xD8, 0x82, 0x99, 0x01, 0xDA, 0x06, 0xDA, 0x80, 0xCE, 0xDA, 0x08, 0xCE, 0x4B, 
47625
  0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6C, 0x61, 0x73, 0x74, 0x2D, 0x76, 0x61, 0x6C, 0x75, 
47626
  0x65, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 
47627
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 
47628
  0x6F, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6F, 0x6D, 
47629
  0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0xDA, 0x8B, 0xDD, 0xD3, 0x03, 
47630
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0xA5, 0x81, 0x40, 0x01, 0xDA, 0x06, 0xDA, 0x80, 0xB4, 
47631
  0xDA, 0x08, 0xCE, 0x5B, 0x28, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x73, 0x65, 0x74, 0x70, 0x72, 
47632
  0x6F, 0x74, 0x6F, 0x20, 0x74, 0x61, 0x62, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x29, 0x0A, 0x0A, 
47633
  0x53, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 
47634
  0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x52, 0x65, 
47635
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x72, 0x69, 0x67, 0x69, 0x6E, 
47636
  0x61, 0x6C, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x60, 0x74, 0x61, 0x62, 0x60, 0x2E, 0xDA, 
47637
  0x8B, 0xDE, 0xD3, 0x02, 0xDA, 0x06, 0xDA, 0x8B, 0xDF, 0xDA, 0x08, 0xCE, 0x42, 0x28, 0x25, 0x20, 
47638
  0x64, 0x69, 0x76, 0x69, 0x64, 0x65, 0x6E, 0x64, 0x20, 0x64, 0x69, 0x76, 0x69, 0x73, 0x6F, 0x72, 
47639
  0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 
47640
  0x65, 0x6D, 0x61, 0x69, 0x6E, 0x64, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x64, 0x69, 0x76, 0x69, 
47641
  0x64, 0x65, 0x6E, 0x64, 0x20, 0x2F, 0x20, 0x64, 0x69, 0x76, 0x69, 0x73, 0x6F, 0x72, 0x2E, 0xDA, 
47642
  0x8B, 0xE1, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x82, 0xE4, 0x01, 0xDA, 0x06, 
47643
  0xDA, 0x8B, 0xE2, 0xDA, 0x08, 0xCE, 0x44, 0x28, 0x6D, 0x61, 0x78, 0x2D, 0x6F, 0x66, 0x20, 0x61, 
47644
  0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 
47645
  0x65, 0x20, 0x6E, 0x75, 0x6D, 0x65, 0x72, 0x69, 0x63, 0x20, 0x6D, 0x61, 0x78, 0x69, 0x6D, 0x75, 
47646
  0x6D, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 
47647
  0x74, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x2E, 0xDA, 0x8B, 0xE4, 0xD3, 0x02, 
47648
  0xDA, 0x06, 0xDA, 0x8B, 0xE5, 0xDA, 0x08, 0xCE, 0x4F, 0x28, 0x2A, 0x20, 0x26, 0x20, 0x78, 0x73, 
47649
  0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 
47650
  0x72, 0x6F, 0x64, 0x75, 0x63, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x65, 0x6C, 
47651
  0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x78, 0x73, 0x2E, 0x20, 0x49, 0x66, 
47652
  0x20, 0x78, 0x73, 0x20, 0x69, 0x73, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2C, 0x20, 0x72, 0x65, 
47653
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x31, 0x2E, 0xDA, 0x8B, 0xE6, 0xD3, 0x02, 0xDA, 0x06, 0xDA, 
47654
  0x38, 0xDA, 0x08, 0xCE, 0x68, 0x28, 0x2B, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 
47655
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x6D, 0x20, 0x6F, 
47656
  0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x78, 0x73, 0x2E, 0x20, 0x78, 0x73, 0x20, 0x6D, 0x75, 0x73, 
47657
  0x74, 0x20, 0x62, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x73, 0x20, 0x6F, 0x72, 
47658
  0x20, 0x72, 0x65, 0x61, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x73, 0x20, 0x6F, 0x6E, 
47659
  0x6C, 0x79, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x78, 0x73, 0x20, 0x69, 0x73, 0x20, 0x65, 0x6D, 0x70, 
47660
  0x74, 0x79, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x30, 0x2E, 0xDA, 0x8B, 0xE7, 
47661
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x88, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 
47662
  0xE8, 0xDA, 0x08, 0xCE, 0x59, 0x28, 0x6F, 0x73, 0x2F, 0x73, 0x6C, 0x65, 0x65, 0x70, 0x20, 0x6E, 
47663
  0x29, 0x0A, 0x0A, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 
47664
  0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x73, 
47665
  0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2E, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 
47666
  0x62, 0x65, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 
47667
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x8B, 
47668
  0xE9, 0xD3, 0x02, 0xDA, 0x06, 0xDA, 0x82, 0x95, 0xDA, 0x08, 0xCE, 0x80, 0xDB, 0x28, 0x2D, 0x20, 
47669
  0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 
47670
  0x68, 0x65, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x66, 
47671
  0x20, 0x78, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x78, 0x73, 0x20, 0x69, 0x73, 0x20, 0x65, 0x6D, 
47672
  0x70, 0x74, 0x79, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x30, 0x2E, 0x20, 
47673
  0x49, 0x66, 0x20, 0x78, 0x73, 0x20, 0x68, 0x61, 0x73, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x65, 0x6C, 
47674
  0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 
47675
  0x68, 0x65, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 
47676
  0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 
47677
  0x74, 0x2E, 0x20, 0x4F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2C, 0x20, 0x72, 0x65, 
47678
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 
47679
  0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x78, 0x73, 0x20, 0x6D, 0x69, 
47680
  0x6E, 0x75, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x74, 
47681
  0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 
47682
  0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0xDA, 0x8B, 0xEA, 0xD3, 0x02, 0xDA, 0x06, 0xDA, 
47683
  0x84, 0x36, 0xDA, 0x08, 0xCE, 0x80, 0xC7, 0x28, 0x2F, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 
47684
  0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x71, 0x75, 0x6F, 
47685
  0x74, 0x69, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 
47686
  0x78, 0x73, 0x20, 0x69, 0x73, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2C, 0x20, 0x72, 0x65, 0x74, 
47687
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x31, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x78, 0x73, 0x20, 0x68, 0x61, 
47688
  0x73, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x78, 0x2C, 0x20, 0x72, 
47689
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x63, 0x69, 0x70, 
47690
  0x72, 0x6F, 0x63, 0x61, 0x6C, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0x20, 0x4F, 0x74, 0x68, 0x65, 
47691
  0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 
47692
  0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 
47693
  0x78, 0x73, 0x20, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x6C, 0x79, 0x20, 0x64, 0x69, 
47694
  0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x6D, 
47695
  0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0xDA, 0x8B, 
47696
  0xEB, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x84, 0xC4, 0x86, 0x5D, 0x01, 0xDA, 0x06, 
47697
  0xDA, 0x8B, 0xEC, 0xDA, 0x08, 0xCE, 0x81, 0x01, 0x28, 0x70, 0x65, 0x67, 0x2F, 0x63, 0x6F, 0x6D, 
47698
  0x70, 0x69, 0x6C, 0x65, 0x20, 0x70, 0x65, 0x67, 0x29, 0x0A, 0x0A, 0x43, 0x6F, 0x6D, 0x70, 0x69, 
47699
  0x6C, 0x65, 0x73, 0x20, 0x61, 0x20, 0x70, 0x65, 0x67, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 
47700
  0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 
47701
  0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x3C, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x70, 0x65, 0x67, 
47702
  0x3E, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x73, 0x70, 0x65, 
47703
  0x65, 0x64, 0x20, 0x75, 0x70, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x69, 
47704
  0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x70, 0x65, 0x67, 0x20, 0x77, 
47705
  0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x6D, 0x75, 0x6C, 0x74, 
47706
  0x69, 0x70, 0x6C, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x73, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 
47707
  0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x75, 0x73, 0x65, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 
47708
  0x3A, 0x70, 0x65, 0x67, 0x2D, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x61, 0x72, 0x29, 0x60, 0x20, 0x74, 
47709
  0x6F, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6C, 0x69, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x68, 0x65, 
47710
  0x20, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x61, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
47711
  0x70, 0x65, 0x67, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 
47712
  0x65, 0x20, 0x75, 0x6E, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x64, 0x20, 0x70, 0x65, 0x67, 0x20, 
47713
  0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x2E, 0xDA, 0x8B, 0x55, 0xD3, 0x03, 0xDA, 0x03, 
47714
  0xD2, 0x03, 0x00, 0xDA, 0x18, 0x88, 0x3C, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0x53, 0xDA, 0x08, 0xCE, 
47715
  0x80, 0xAF, 0x28, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 0x20, 
47716
  0x26, 0x20, 0x69, 0x6E, 0x64, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
47717
  0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x69, 0x66, 0x20, 0x60, 0x28, 0x70, 0x72, 0x65, 0x64, 0x20, 
47718
  0x69, 0x74, 0x65, 0x6D, 0x29, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 
47719
  0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, 0x20, 0x69, 0x74, 0x65, 0x6D, 0x20, 
47720
  0x69, 0x6E, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x2E, 0x0A, 0x4F, 0x74, 0x68, 0x65, 0x72, 0x77, 
47721
  0x69, 0x73, 0x65, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
47722
  0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x79, 0x20, 0x72, 0x65, 
47723
  0x73, 0x75, 0x6C, 0x74, 0x20, 0x65, 0x6E, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x65, 0x72, 0x65, 0x64, 
47724
  0x2E, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x69, 
47725
  0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x69, 0x73, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 
47726
  0x2E, 0xDA, 0x8B, 0xED, 0xD3, 0x02, 0xDA, 0x06, 0xDA, 0x83, 0xA5, 0xDA, 0x08, 0xCE, 0x3F, 0x28, 
47727
  0x3C, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 
47728
  0x66, 0x20, 0x78, 0x73, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x73, 0x63, 0x65, 0x6E, 
47729
  0x64, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
47730
  0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x2E, 0xDA, 0x82, 
47731
  0xD0, 0xD3, 0x02, 0xDA, 0x06, 0xDA, 0x85, 0xF2, 0xDA, 0x08, 0xCE, 0x41, 0x28, 0x3D, 0x20, 0x26, 
47732
  0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x61, 
47733
  0x6C, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x78, 0x73, 0x20, 
47734
  0x61, 0x72, 0x65, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6C, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
47735
  0x6E, 0x73, 0x20, 0x61, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x2E, 0xDA, 0x8A, 0x97, 
47736
  0xD3, 0x02, 0xDA, 0x06, 0xDA, 0x85, 0x3A, 0xDA, 0x08, 0xCE, 0x40, 0x28, 0x3E, 0x20, 0x26, 0x20, 
47737
  0x78, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x73, 
47738
  0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x64, 0x65, 0x73, 0x63, 0x65, 0x6E, 0x64, 0x69, 0x6E, 
47739
  0x67, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
47740
  0x20, 0x61, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x2E, 0xDA, 0x8B, 0xEE, 0xD3, 0x03, 
47741
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 0xA9, 0x82, 0x7A, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x81, 
47742
  0xDA, 0x08, 0xCE, 0x30, 0x28, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x77, 0x68, 0x61, 0x74, 
47743
  0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x61, 0x69, 0x73, 0x65, 0x20, 0x61, 0x20, 0x73, 0x69, 0x67, 
47744
  0x6E, 0x61, 0x6C, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x70, 0x61, 0x79, 0x6C, 0x6F, 0x61, 0x64, 
47745
  0x20, 0x78, 0x2E, 0x20, 0xDA, 0x8B, 0xEF, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 
47746
  0x81, 0x66, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0xF0, 0xDA, 0x08, 0xCE, 0x50, 0x28, 0x63, 0x68, 0x72, 
47747
  0x20, 0x63, 0x29, 0x0A, 0x0A, 0x43, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x20, 0x61, 0x20, 0x73, 
47748
  0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x66, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 
47749
  0x31, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x74, 0x73, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x28, 0x61, 
47750
  0x73, 0x63, 0x69, 0x69, 0x29, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x61, 0x74, 0x20, 0x63, 
47751
  0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 
47752
  0x8B, 0xF4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 0x46, 0x81, 0x0C, 0x01, 0xDA, 
47753
  0x06, 0xDA, 0x8B, 0xF5, 0xDA, 0x08, 0xCE, 0x81, 0x2E, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 
47754
  0x6C, 0x69, 0x6E, 0x65, 0x61, 0x67, 0x65, 0x20, 0x66, 0x69, 0x62, 0x29, 0x0A, 0x0A, 0x52, 0x65, 
47755
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 
47756
  0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x63, 0x68, 0x69, 0x6C, 0x64, 0x20, 0x66, 0x69, 0x62, 0x65, 
47757
  0x72, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x72, 0x6F, 0x6F, 0x74, 0x20, 0x66, 
47758
  0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 
47759
  0x69, 0x6F, 0x6E, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x66, 0x75, 0x6C, 0x20, 0x77, 0x68, 
47760
  0x65, 0x6E, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 
47761
  0x6C, 0x73, 0x20, 0x6F, 0x72, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x20, 0x74, 0x6F, 0x20, 
47762
  0x61, 0x6E, 0x20, 0x61, 0x6E, 0x63, 0x65, 0x73, 0x74, 0x6F, 0x72, 0x20, 0x66, 0x69, 0x62, 0x65, 
47763
  0x72, 0x2E, 0x20, 0x55, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 
47764
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 
47765
  0x72, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 
47766
  0x72, 0x72, 0x6F, 0x72, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x73, 0x65, 0x65, 0x20, 0x77, 0x68, 0x69, 
47767
  0x63, 0x68, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x64, 0x20, 
47768
  0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 
47769
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 
47770
  0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x6D, 0x6F, 0x73, 0x74, 0x6C, 0x79, 0x20, 
47771
  0x66, 0x6F, 0x72, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x75, 
47772
  0x72, 0x70, 0x6F, 0x73, 0x65, 0x73, 0x2E, 0xDA, 0x8B, 0xF6, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
47773
  0x00, 0xDA, 0x18, 0x86, 0x8B, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0xF7, 0xDA, 0x08, 0xCE, 0x70, 0x28, 
47774
  0x66, 0x6C, 0x61, 0x74, 0x74, 0x65, 0x6E, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x54, 0x61, 0x6B, 
47775
  0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x61, 0x72, 0x72, 0x61, 
47776
  0x79, 0x20, 0x28, 0x74, 0x72, 0x65, 0x65, 0x29, 0x20, 0x60, 0x78, 0x73, 0x60, 0x20, 0x61, 0x6E, 
47777
  0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 
47778
  0x70, 0x74, 0x68, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x74, 0x72, 0x61, 0x76, 0x65, 0x72, 
47779
  0x73, 0x61, 0x6C, 0x20, 0x6F, 0x66, 0x0A, 0x69, 0x74, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
47780
  0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 
47781
  0x8B, 0xF9, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0xDC, 0x01, 0xDA, 0x06, 
47782
  0xDA, 0x8B, 0xFA, 0xDA, 0x08, 0xCE, 0x4C, 0x28, 0x6F, 0x73, 0x2F, 0x72, 0x6D, 0x64, 0x69, 0x72, 
47783
  0x20, 0x70, 0x61, 0x74, 0x68, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x6C, 0x65, 0x74, 0x65, 0x20, 0x61, 
47784
  0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 
47785
  0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 
47786
  0x65, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 
47787
  0x65, 0x64, 0x2E, 0xDA, 0x8B, 0xFB, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x84, 0xBE, 
47788
  0x86, 0x0A, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0xFC, 0xDA, 0x08, 0xCE, 0x80, 0xC0, 0x28, 0x65, 0x6E, 
47789
  0x76, 0x2D, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x20, 0x65, 0x6E, 0x76, 0x29, 0x0A, 0x0A, 0x43, 
47790
  0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x66, 0x6F, 0x72, 0x77, 0x61, 0x72, 0x64, 
47791
  0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x66, 0x6F, 
47792
  0x72, 0x20, 0x75, 0x6E, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x20, 
47793
  0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 
47794
  0x65, 0x6E, 0x74, 0x2E, 0x20, 0x54, 0x6F, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 
47795
  0x20, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x20, 
47796
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x2C, 0x20, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 
47797
  0x6E, 0x76, 0x65, 0x72, 0x74, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 
47798
  0x6F, 0x20, 0x73, 0x77, 0x61, 0x70, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 
47799
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 
47800
  0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x8B, 0xFD, 
47801
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x0A, 0x80, 0xD2, 0x01, 0xDA, 0x06, 0xDA, 
47802
  0x8B, 0xFE, 0xDA, 0x08, 0xCE, 0x7F, 0x28, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x77, 0x69, 
47803
  0x74, 0x68, 0x2D, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x20, 0x26, 
47804
  0x20, 0x6B, 0x76, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 
47805
  0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2C, 0x20, 0x61, 0x73, 0x20, 0x77, 0x69, 
47806
  0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x75, 0x61, 0x6C, 0x20, 0x73, 0x74, 0x72, 
47807
  0x75, 0x63, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x6F, 0x72, 0x20, 
47808
  0x62, 0x75, 0x74, 0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x75, 
47809
  0x63, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x61, 0x73, 0x20, 
47810
  0x77, 0x65, 0x6C, 0x6C, 0x2E, 0xDA, 0x8B, 0xFF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
47811
  0x40, 0x84, 0x45, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x00, 0xDA, 0x08, 0xCE, 0x5C, 0x28, 0x65, 0x76, 
47812
  0x2F, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 
47813
  0x6C, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 
47814
  0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x69, 0x74, 0x65, 0x6D, 0x73, 0x20, 0x61, 0x20, 0x63, 0x68, 
47815
  0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x73, 0x74, 0x6F, 0x72, 0x65, 
47816
  0x20, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x69, 0x6E, 0x67, 
47817
  0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, 0x73, 0x2E, 0xDA, 0x8C, 0x01, 0xD3, 0x03, 0xDA, 0x03, 
47818
  0xD2, 0x03, 0x00, 0xDA, 0x18, 0x86, 0x45, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x02, 0xDA, 0x08, 0xCE, 
47819
  0x5C, 0x28, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x69, 0x65, 0x73, 0x20, 0x69, 0x6E, 
47820
  0x64, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 
47821
  0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x6F, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x63, 0x65, 
47822
  0x73, 0x20, 0x6F, 0x66, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
47823
  0x69, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x64, 0x61, 
47824
  0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0xDA, 0x8C, 0x07, 
47825
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x12, 0x81, 0x7E, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 
47826
  0x08, 0xDA, 0x08, 0xCE, 0x81, 0xBE, 0x28, 0x6E, 0x65, 0x74, 0x2F, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 
47827
  0x63, 0x74, 0x20, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x70, 0x6F, 0x72, 0x74, 0x20, 0x26, 0x6F, 0x70, 
47828
  0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x68, 0x6F, 0x73, 0x74, 0x20, 
47829
  0x62, 0x69, 0x6E, 0x64, 0x70, 0x6F, 0x72, 0x74, 0x29, 0x0A, 0x0A, 0x4F, 0x70, 0x65, 0x6E, 0x20, 
47830
  0x61, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 
47831
  0x63, 0x6F, 0x6D, 0x6D, 0x75, 0x6E, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 
47832
  0x20, 0x61, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
47833
  0x6E, 0x73, 0x20, 0x61, 0x20, 0x64, 0x75, 0x70, 0x6C, 0x65, 0x78, 0x20, 0x73, 0x74, 0x72, 0x65, 
47834
  0x61, 0x6D, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 
47835
  0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x75, 0x6E, 0x69, 0x63, 0x61, 
47836
  0x74, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 
47837
  0x65, 0x72, 0x2E, 0x20, 0x54, 0x79, 0x70, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 
47838
  0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 
47839
  0x74, 0x6F, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x79, 0x20, 0x61, 0x20, 0x63, 0x6F, 0x6E, 
47840
  0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2C, 0x20, 0x65, 0x69, 
47841
  0x74, 0x68, 0x65, 0x72, 0x20, 0x3A, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x6F, 0x72, 0x20, 
47842
  0x3A, 0x64, 0x61, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6D, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x64, 
47843
  0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x3A, 0x73, 0x74, 0x72, 0x65, 0x61, 
47844
  0x6D, 0x2E, 0x20, 0x42, 0x69, 0x6E, 0x64, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 
47845
  0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 
47846
  0x67, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x66, 0x72, 0x6F, 0x6D, 
47847
  0x20, 0x77, 0x68, 0x61, 0x74, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x74, 0x6F, 
47848
  0x20, 0x6D, 0x61, 0x6B, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x75, 0x74, 0x67, 0x6F, 0x69, 
47849
  0x6E, 0x67, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x77, 
47850
  0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 
47851
  0x62, 0x65, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 
47852
  0x73, 0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4F, 0x53, 0x27, 0x73, 
47853
  0x20, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 
47854
  0x73, 0x73, 0x2E, 0x20, 0xDA, 0x8C, 0x09, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x40, 
47855
  0x8C, 0x7C, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x0A, 0xDA, 0x08, 0xCE, 0x4E, 0x28, 0x65, 0x76, 0x2F, 
47856
  0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x2D, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x6C, 0x6F, 0x63, 
47857
  0x6B, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x20, 0x61, 0x20, 0x6C, 0x6F, 
47858
  0x63, 0x6B, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6F, 0x74, 0x68, 
47859
  0x65, 0x72, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x6D, 0x61, 0x79, 0x20, 0x61, 
47860
  0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x20, 0x69, 0x74, 0x2E, 0xDA, 0x84, 0xD3, 0xD3, 0x03, 0xDA, 
47861
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x7E, 0x01, 0xDA, 0x06, 0xDA, 0x84, 0xD1, 0xDA, 0x08, 0xCE, 
47862
  0x1C, 0x28, 0x6E, 0x69, 0x6C, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 
47863
  0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x8C, 0x0B, 
47864
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0xA0, 0x6F, 0x01, 0xDA, 0x06, 0xDA, 0x82, 
47865
  0xEE, 0xDA, 0x08, 0xCE, 0x73, 0x28, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x73, 0x65, 0x74, 0x6D, 
47866
  0x61, 0x70, 0x20, 0x74, 0x75, 0x70, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x75, 
47867
  0x6D, 0x6E, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6F, 0x75, 
47868
  0x72, 0x63, 0x65, 0x6D, 0x61, 0x70, 0x20, 0x6D, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 
47869
  0x6F, 0x6E, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2E, 0x20, 0x6C, 0x69, 0x6E, 0x65, 
47870
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x69, 
47871
  0x63, 0x61, 0x74, 0x65, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x69, 
47872
  0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x73, 0x2E, 0xDA, 0x8C, 0x0C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
47873
  0x03, 0x00, 0xDA, 0x18, 0x8A, 0x32, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x0D, 0xDA, 0x08, 0xCE, 0x80, 
47874
  0xF6, 0x28, 0x71, 0x75, 0x69, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 
47875
  0x65, 0x29, 0x0A, 0x0A, 0x54, 0x72, 0x69, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x65, 0x78, 0x69, 
47876
  0x74, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 
47877
  0x6E, 0x74, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x20, 0x6F, 0x72, 0x20, 0x72, 0x75, 0x6E, 0x2D, 0x63, 
47878
  0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x2E, 0x20, 0x44, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 
47879
  0x20, 0x61, 0x6C, 0x77, 0x61, 0x79, 0x73, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x74, 0x68, 0x65, 
47880
  0x20, 0x61, 0x70, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x0A, 0x57, 0x6F, 
47881
  0x72, 0x6B, 0x73, 0x20, 0x62, 0x79, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 
47882
  0x68, 0x65, 0x20, 0x3A, 0x65, 0x78, 0x69, 0x74, 0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 
47883
  0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x72, 0x75, 0x65, 
47884
  0x2E, 0x20, 0x50, 0x61, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x6E, 0x6F, 0x6E, 0x2D, 
47885
  0x6E, 0x69, 0x6C, 0x20, 0x60, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x60, 0x20, 0x68, 0x65, 0x72, 0x65, 
47886
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x63, 0x61, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 
47887
  0x6F, 0x75, 0x74, 0x65, 0x72, 0x0A, 0x72, 0x75, 0x6E, 0x2D, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 
47888
  0x74, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 
47889
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0xDA, 0x8C, 0x0F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
47890
  0x00, 0xDA, 0x04, 0x85, 0x46, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x10, 0xDA, 0x08, 0xCE, 0x38, 0x28, 
47891
  0x6F, 0x73, 0x2F, 0x73, 0x65, 0x74, 0x65, 0x6E, 0x76, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 
47892
  0x6C, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x61, 
47893
  0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x76, 0x61, 
47894
  0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x8C, 0x11, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
47895
  0x00, 0xDA, 0x18, 0x82, 0xE8, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x12, 0xDA, 0x08, 0xCE, 0x44, 0x28, 
47896
  0x6D, 0x69, 0x6E, 0x2D, 0x6F, 0x66, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 
47897
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x65, 0x72, 0x69, 
47898
  0x63, 0x20, 0x6D, 0x69, 0x6E, 0x69, 0x6D, 0x75, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 
47899
  0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 
47900
  0x63, 0x65, 0x2E, 0xDA, 0x8C, 0x14, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x84, 0xAE, 
47901
  0x84, 0x1F, 0x01, 0xDA, 0x06, 0xDA, 0x85, 0xAB, 0xDA, 0x08, 0xCE, 0x81, 0x28, 0x28, 0x70, 0x61, 
47902
  0x72, 0x73, 0x65, 0x72, 0x2F, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x65, 0x20, 0x70, 0x61, 0x72, 
47903
  0x73, 0x65, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x77, 0x72, 0x61, 0x70, 0x29, 0x0A, 0x0A, 
47904
  0x44, 0x65, 0x71, 0x75, 0x65, 0x75, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 
47905
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 
47906
  0x72, 0x73, 0x65, 0x20, 0x71, 0x75, 0x65, 0x75, 0x65, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 
47907
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 
47908
  0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x61, 
47909
  0x72, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x71, 0x75, 0x65, 0x75, 0x65, 0x2C, 
47910
  0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
47911
  0x64, 0x65, 0x71, 0x75, 0x65, 0x75, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 
47912
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x77, 0x72, 0x61, 0x70, 
47913
  0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 0x20, 0x77, 0x69, 0x6C, 
47914
  0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 0x20, 0x31, 0x2D, 0x65, 0x6C, 0x65, 
47915
  0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
47916
  0x77, 0x72, 0x61, 0x70, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 
47917
  0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x63, 0x61, 0x6E, 
47918
  0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x73, 0x6F, 0x75, 
47919
  0x72, 0x63, 0x65, 0x2D, 0x6D, 0x61, 0x70, 0x70, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x75, 0x72, 0x70, 
47920
  0x6F, 0x73, 0x65, 0x73, 0x2E, 0xDA, 0x8C, 0x15, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
47921
  0x18, 0x8A, 0x8D, 0x01, 0xDA, 0x06, 0xDA, 0x87, 0x8D, 0xDA, 0x08, 0xCE, 0x52, 0x28, 0x6C, 0x6F, 
47922
  0x61, 0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x20, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x29, 0x0A, 
47923
  0x0A, 0x54, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x76, 0x65, 0x72, 0x73, 0x65, 0x20, 0x6F, 0x70, 0x65, 
47924
  0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 
47925
  0x69, 0x6D, 0x61, 0x67, 0x65, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
47926
  0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 
47927
  0x88, 0x2C, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x81, 0x11, 0x01, 0xDA, 0x06, 
47928
  0xDA, 0x8C, 0x16, 0xDA, 0x08, 0xCE, 0x80, 0x85, 0x28, 0x61, 0x6E, 0x64, 0x20, 0x26, 0x20, 0x66, 
47929
  0x6F, 0x72, 0x6D, 0x73, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 
47930
  0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x61, 0x72, 0x67, 
47931
  0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x72, 0x65, 
47932
  0x63, 0x65, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 
47933
  0x61, 0x72, 0x65, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 
47934
  0x72, 0x77, 0x69, 0x73, 0x65, 0x0A, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 
47935
  0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x61, 0x6C, 
47936
  0x73, 0x65, 0x79, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x3D, 0xCB, 
47937
  0xDA, 0x8A, 0xBF, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8E, 0x39, 0x03, 0xDA, 
47938
  0x06, 0xDA, 0x8C, 0x18, 0xDA, 0x08, 0xCE, 0x5F, 0x28, 0x65, 0x76, 0x2F, 0x73, 0x70, 0x61, 0x77, 
47939
  0x6E, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x73, 
47940
  0x6F, 0x6D, 0x65, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x6E, 0x65, 
47941
  0x77, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 
47942
  0x20, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x68, 0x61, 0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 
47943
  0x28, 0x65, 0x76, 0x2F, 0x67, 0x6F, 0x20, 0x28, 0x66, 0x6E, 0x20, 0x5B, 0x5D, 0x20, 0x3B, 0x62, 
47944
  0x6F, 0x64, 0x79, 0x29, 0x29, 0x60, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x8C, 0x1B, 0xD3, 0x03, 0xDA, 
47945
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0x6F, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x1C, 0xDA, 0x08, 
47946
  0xCE, 0x81, 0x31, 0x28, 0x6F, 0x73, 0x2F, 0x6D, 0x6B, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x64, 0x61, 
47947
  0x74, 0x65, 0x2D, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6C, 
47948
  0x6F, 0x63, 0x61, 0x6C, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 
47949
  0x72, 0x6F, 0x6B, 0x65, 0x6E, 0x20, 0x64, 0x6F, 0x77, 0x6E, 0x20, 0x64, 0x61, 0x74, 0x65, 0x2D, 
47950
  0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x65, 0x78, 0x70, 0x72, 
47951
  0x65, 0x73, 0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 
47952
  0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x20, 0x73, 
47953
  0x69, 0x6E, 0x63, 0x65, 0x20, 0x4A, 0x61, 0x6E, 0x75, 0x61, 0x72, 0x79, 0x20, 0x31, 0x2C, 0x20, 
47954
  0x31, 0x39, 0x37, 0x30, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x55, 0x6E, 0x69, 0x78, 0x20, 0x65, 
47955
  0x70, 0x6F, 0x63, 0x68, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 
47956
  0x72, 0x65, 0x61, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x44, 0x61, 0x74, 
47957
  0x65, 0x20, 0x69, 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x69, 0x6E, 0x20, 0x55, 0x54, 
47958
  0x43, 0x20, 0x75, 0x6E, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x60, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x60, 
47959
  0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 0x20, 0x69, 0x6E, 0x20, 0x77, 
47960
  0x68, 0x69, 0x63, 0x68, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 
47961
  0x74, 0x65, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x75, 0x74, 0x65, 0x64, 0x20, 0x66, 
47962
  0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x20, 0x74, 0x69, 0x6D, 
47963
  0x65, 0x7A, 0x6F, 0x6E, 0x65, 0x2E, 0x0A, 0x0A, 0x49, 0x6E, 0x76, 0x65, 0x72, 0x73, 0x65, 0x20, 
47964
  0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x6F, 0x73, 0x2F, 0x64, 
47965
  0x61, 0x74, 0x65, 0x2E, 0xDA, 0x8C, 0x1D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x40, 
47966
  0x84, 0x3A, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x1E, 0xDA, 0x08, 0xCE, 0x35, 0x28, 0x65, 0x76, 0x2F, 
47967
  0x66, 0x75, 0x6C, 0x6C, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x29, 0x0A, 0x0A, 0x43, 
47968
  0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x61, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 
47969
  0x6C, 0x20, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6C, 0x6C, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x6F, 0x74, 
47970
  0x2E, 0xDA, 0x8C, 0x1F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 0xA9, 0x81, 0x95, 
47971
  0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x20, 0xDA, 0x08, 0xCE, 0x4F, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 
47972
  0x20, 0x26, 0x20, 0x69, 0x74, 0x65, 0x6D, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 
47973
  0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x74, 0x68, 
47974
  0x61, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 0x20, 0x69, 0x74, 0x65, 0x6D, 
47975
  0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 
47976
  0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x8C, 0x21, 0xD3, 0x03, 0xDA, 0x03, 
47977
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x5F, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x22, 0xDA, 0x08, 0xCE, 
47978
  0x80, 0x86, 0x28, 0x6F, 0x73, 0x2F, 0x74, 0x69, 0x6D, 0x65, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 
47979
  0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x69, 0x6D, 
47980
  0x65, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x74, 
47981
  0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x77, 0x68, 0x6F, 
47982
  0x6C, 0x65, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x20, 0x73, 0x69, 0x6E, 0x63, 0x65, 
47983
  0x20, 0x4A, 0x61, 0x6E, 0x75, 0x61, 0x72, 0x79, 0x20, 0x31, 0x2C, 0x20, 0x31, 0x39, 0x37, 0x30, 
47984
  0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x55, 0x6E, 0x69, 0x78, 0x20, 0x65, 0x70, 0x6F, 0x63, 0x68, 
47985
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x6C, 
47986
  0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2E, 0xDA, 0x8B, 0x6C, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 
47987
  0x03, 0x00, 0xDA, 0x18, 0x2D, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x23, 0xDA, 0x08, 0xCE, 0x27, 0x28, 
47988
  0x64, 0x65, 0x66, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x26, 0x20, 
47989
  0x6D, 0x6F, 0x72, 0x65, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x20, 
47990
  0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x8C, 0x25, 0xD3, 0x04, 0xDA, 0x84, 
47991
  0x25, 0xCB, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x84, 0xCC, 0x01, 0xDA, 0x06, 0xDA, 0x82, 
47992
  0x54, 0xDA, 0x08, 0xCE, 0x7A, 0x41, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6F, 0x66, 0x20, 
47993
  0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x61, 0x6C, 0x69, 0x61, 0x73, 0x20, 0x74, 0x6F, 
47994
  0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x73, 0x20, 0x64, 0x65, 0x6E, 0x6F, 0x74, 0x69, 0x6E, 
47995
  0x67, 0x20, 0x61, 0x20, 0x6C, 0x69, 0x6E, 0x74, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x2E, 0x20, 
47996
  0x43, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x70, 
47997
  0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6F, 0x6D, 0x20, 0x61, 
47998
  0x6C, 0x69, 0x61, 0x73, 0x65, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6E, 0x75, 0x6D, 0x65, 0x72, 
47999
  0x69, 0x63, 0x20, 0x6C, 0x69, 0x6E, 0x74, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x73, 0x2E, 0xDA, 
48000
  0x8C, 0x26, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x84, 0xAE, 0x83, 0x82, 0x01, 0xDA, 
48001
  0x06, 0xDA, 0x82, 0x18, 0xDA, 0x08, 0xCE, 0x80, 0x89, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 
48002
  0x2F, 0x6E, 0x65, 0x77, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 
48003
  0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 
48004
  0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x2E, 0x20, 
48005
  0x50, 0x61, 0x72, 0x73, 0x65, 0x72, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 
48006
  0x65, 0x20, 0x6D, 0x61, 0x63, 0x68, 0x69, 0x6E, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
48007
  0x63, 0x61, 0x6E, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 
48008
  0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x61, 
48009
  0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
48010
  0x73, 0x2E, 0xDA, 0x8C, 0x27, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x88, 0xB4, 
48011
  0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x28, 0xDA, 0x08, 0xCE, 0x81, 0x52, 0x28, 0x6F, 0x73, 0x2F, 0x70, 
48012
  0x65, 0x72, 0x6D, 0x2D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x74, 0x29, 0x0A, 
48013
  0x0A, 0x43, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x20, 0x61, 0x20, 0x55, 0x6E, 0x69, 0x78, 0x20, 
48014
  0x6F, 0x63, 0x74, 0x61, 0x6C, 0x20, 0x70, 0x65, 0x72, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 
48015
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x70, 0x65, 
48016
  0x72, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 
48017
  0x20, 0x61, 0x73, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 
48018
  0x60, 0x6F, 0x73, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x68, 
48019
  0x75, 0x6D, 0x61, 0x6E, 0x20, 0x72, 0x65, 0x61, 0x64, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x73, 0x74, 
48020
  0x72, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 
48021
  0x77, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x69, 0x6E, 
48022
  0x67, 0x20, 0x6F, 0x66, 0x20, 0x55, 0x6E, 0x69, 0x78, 0x20, 0x74, 0x6F, 0x6F, 0x6C, 0x73, 0x20, 
48023
  0x6C, 0x69, 0x6B, 0x65, 0x20, 0x60, 0x6C, 0x73, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
48024
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x73, 
48025
  0x20, 0x61, 0x20, 0x39, 0x2D, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x20, 0x73, 
48026
  0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x66, 0x20, 0x72, 0x2C, 0x20, 0x77, 0x2C, 0x20, 0x78, 
48027
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x2D, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 
48028
  0x73, 0x2E, 0x20, 0x44, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x69, 0x6E, 0x63, 0x6C, 
48029
  0x75, 0x64, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x64, 0x69, 0x72, 
48030
  0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x2F, 0x73, 0x79, 0x6D, 0x6C, 0x69, 0x6E, 0x6B, 0x20, 0x63, 
48031
  0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x20, 0x61, 0x73, 0x20, 0x72, 0x65, 0x6E, 0x64, 
48032
  0x65, 0x72, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x60, 0x6C, 0x73, 0x60, 0x2E, 0xDA, 0x8C, 0x29, 
48033
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x40, 0x84, 0x00, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 
48034
  0x2A, 0xDA, 0x08, 0xCE, 0x82, 0x79, 0x28, 0x65, 0x76, 0x2F, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 
48035
  0x20, 0x26, 0x20, 0x63, 0x6C, 0x61, 0x75, 0x73, 0x65, 0x73, 0x29, 0x0A, 0x0A, 0x42, 0x6C, 0x6F, 
48036
  0x63, 0x6B, 0x20, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 
48037
  0x73, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x65, 0x76, 0x65, 0x72, 0x61, 0x6C, 0x20, 0x63, 0x68, 
48038
  0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, 
48039
  0x20, 0x6F, 0x63, 0x63, 0x75, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
48040
  0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
48041
  0x6F, 0x72, 0x6D, 0x20, 0x5B, 0x3A, 0x67, 0x69, 0x76, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x5D, 
48042
  0x2C, 0x20, 0x5B, 0x3A, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x20, 0x78, 0x5D, 
48043
  0x2C, 0x20, 0x6F, 0x72, 0x20, 0x5B, 0x3A, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x63, 0x68, 0x61, 
48044
  0x6E, 0x5D, 0x2C, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x20, 0x3A, 0x67, 0x69, 0x76, 
48045
  0x65, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 
48046
  0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 
48047
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x20, 0x3A, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x74, 0x75, 0x70, 
48048
  0x6C, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 
48049
  0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x64, 0x2E, 0x20, 0x45, 0x61, 0x63, 0x68, 
48050
  0x20, 0x63, 0x6C, 0x61, 0x75, 0x73, 0x65, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 
48051
  0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x61, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 
48052
  0x20, 0x28, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 
48053
  0x74, 0x61, 0x6B, 0x65, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x29, 0x20, 
48054
  0x6F, 0x72, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x5B, 0x63, 0x68, 0x61, 0x6E, 
48055
  0x6E, 0x65, 0x6C, 0x20, 0x78, 0x5D, 0x20, 0x28, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x63, 0x68, 
48056
  0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x67, 0x69, 0x76, 0x65, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 
48057
  0x74, 0x69, 0x6F, 0x6E, 0x29, 0x2E, 0x20, 0x4F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 
48058
  0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x72, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x6F, 
48059
  0x72, 0x64, 0x65, 0x72, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x65, 
48060
  0x61, 0x72, 0x6C, 0x69, 0x65, 0x72, 0x20, 0x63, 0x6C, 0x61, 0x75, 0x73, 0x65, 0x73, 0x20, 0x74, 
48061
  0x61, 0x6B, 0x65, 0x20, 0x70, 0x72, 0x65, 0x63, 0x65, 0x64, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6F, 
48062
  0x76, 0x65, 0x72, 0x20, 0x6C, 0x61, 0x74, 0x65, 0x72, 0x20, 0x63, 0x6C, 0x61, 0x75, 0x73, 0x65, 
48063
  0x73, 0x2E, 0x20, 0x42, 0x6F, 0x74, 0x68, 0x20, 0x67, 0x69, 0x76, 0x65, 0x20, 0x61, 0x6E, 0x64, 
48064
  0x20, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, 
48065
  0x20, 0x63, 0x61, 0x6E, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 0x20, 0x5B, 0x3A, 
48066
  0x63, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x5D, 0x20, 0x74, 0x75, 0x70, 0x6C, 
48067
  0x65, 0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 
48068
  0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 
48069
  0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x77, 0x61, 
48070
  0x73, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x64, 0x20, 0x77, 0x68, 0x69, 0x6C, 0x65, 0x20, 0x77, 
48071
  0x61, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
48072
  0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x77, 0x61, 0x73, 0x20, 
48073
  0x61, 0x6C, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x64, 0x2E, 0xDA, 
48074
  0x8C, 0x2B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x40, 0x84, 0x78, 0x01, 0xDA, 0x06, 
48075
  0xDA, 0x8C, 0x2C, 0xDA, 0x08, 0xCE, 0x80, 0xC2, 0x28, 0x65, 0x76, 0x2F, 0x74, 0x68, 0x72, 0x65, 
48076
  0x61, 0x64, 0x2D, 0x63, 0x68, 0x61, 0x6E, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6C, 0x69, 0x6D, 
48077
  0x69, 0x74, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x74, 0x68, 
48078
  0x72, 0x65, 0x61, 0x64, 0x65, 0x64, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x2E, 0x20, 
48079
  0x41, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x65, 0x64, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 
48080
  0x65, 0x6C, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 
48081
  0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x73, 0x68, 0x61, 0x72, 
48082
  0x65, 0x64, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6E, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 
48083
  0x64, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x63, 
48084
  0x6F, 0x6D, 0x6D, 0x75, 0x6E, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 
48085
  0x65, 0x6E, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 
48086
  0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 
48087
  0x6D, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x2E, 0xDA, 0x8C, 0x2D, 0xD3, 0x03, 0xDA, 
48088
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x40, 0x83, 0xDD, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0xCC, 0xDA, 0x08, 
48089
  0xCE, 0x5E, 0x28, 0x65, 0x76, 0x2F, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 
48090
  0x65, 0x6C, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x61, 0x64, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 
48091
  0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x2C, 0x20, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6E, 
48092
  0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 
48093
  0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x20, 0x76, 0x61, 0x6C, 
48094
  0x75, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x2E, 
48095
  0xDA, 0x8C, 0x2E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 0xA9, 0x82, 0x5B, 0x01, 
48096
  0xDA, 0x06, 0xDA, 0x8C, 0x2F, 0xDA, 0x08, 0xCE, 0x45, 0x28, 0x75, 0x6E, 0x74, 0x72, 0x61, 0x63, 
48097
  0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x29, 0x0A, 0x0A, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6C, 0x65, 
48098
  0x73, 0x20, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x20, 0x66, 
48099
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
48100
  0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x8C, 
48101
  0x30, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x33, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 
48102
  0x31, 0xDA, 0x08, 0xCE, 0x80, 0xFE, 0x28, 0x61, 0x73, 0x2D, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x20, 
48103
  0x66, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x55, 0x73, 0x65, 0x20, 0x61, 
48104
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x72, 0x20, 0x6D, 0x61, 0x63, 
48105
  0x72, 0x6F, 0x20, 0x6C, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6C, 0x20, 0x60, 0x66, 0x60, 0x20, 0x61, 
48106
  0x73, 0x20, 0x61, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 
48107
  0x6C, 0x65, 0x74, 0x73, 0x0A, 0x61, 0x6E, 0x79, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
48108
  0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x6D, 
48109
  0x61, 0x63, 0x72, 0x6F, 0x2E, 0x20, 0x49, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x20, 0x61, 0x20, 0x71, 
48110
  0x75, 0x61, 0x73, 0x69, 0x71, 0x75, 0x6F, 0x74, 0x65, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x69, 
48111
  0x64, 0x69, 0x6F, 0x6D, 0x20, 0x60, 0x28, 0x61, 0x73, 0x2D, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x20, 
48112
  0x2C, 0x6D, 0x79, 0x2D, 0x63, 0x75, 0x73, 0x74, 0x6F, 0x6D, 0x2D, 0x6D, 0x61, 0x63, 0x72, 0x6F, 
48113
  0x20, 0x61, 0x72, 0x67, 0x31, 0x20, 0x61, 0x72, 0x67, 0x32, 0x2E, 0x2E, 0x2E, 0x29, 0x60, 0x20, 
48114
  0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x0A, 0x74, 0x6F, 0x20, 0x61, 
48115
  0x76, 0x6F, 0x69, 0x64, 0x20, 0x75, 0x6E, 0x77, 0x61, 0x6E, 0x74, 0x65, 0x64, 0x20, 0x76, 0x61, 
48116
  0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x20, 0x6F, 
48117
  0x66, 0x20, 0x60, 0x6D, 0x79, 0x2D, 0x63, 0x75, 0x73, 0x74, 0x6F, 0x6D, 0x2D, 0x6D, 0x61, 0x63, 
48118
  0x72, 0x6F, 0x60, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x8C, 0x33, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
48119
  0x00, 0xDA, 0x18, 0x86, 0x4E, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x34, 0xDA, 0x08, 0xCE, 0x81, 0x40, 
48120
  0x28, 0x67, 0x72, 0x6F, 0x75, 0x70, 0x2D, 0x62, 0x79, 0x20, 0x66, 0x20, 0x69, 0x6E, 0x64, 0x29, 
48121
  0x0A, 0x0A, 0x47, 0x72, 0x6F, 0x75, 0x70, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 
48122
  0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x66, 
48123
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x60, 0x66, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 
48124
  0x70, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x73, 0x20, 
48125
  0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 
48126
  0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x6F, 0x66, 0x0A, 0x74, 0x68, 
48127
  0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 
48128
  0x64, 0x69, 0x73, 0x74, 0x69, 0x6E, 0x63, 0x74, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 
48129
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x63, 0x61, 0x6C, 0x6C, 
48130
  0x69, 0x6E, 0x67, 0x20, 0x60, 0x66, 0x60, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 
48131
  0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 
48132
  0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x0A, 0x6F, 0x66, 0x20, 
48133
  0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x72, 
48134
  0x72, 0x61, 0x79, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x65, 0x6C, 0x65, 0x6D, 
48135
  0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x66, 0x6F, 
48136
  0x72, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x60, 0x66, 0x60, 0x20, 0x63, 0x61, 0x6C, 0x6C, 
48137
  0x65, 0x64, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 
48138
  0x74, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6C, 0x73, 0x0A, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x6F, 
48139
  0x72, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6B, 0x65, 0x79, 0x2E, 
48140
  0xDA, 0x8C, 0x39, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x84, 0xAE, 0x84, 0x2D, 0x01, 
48141
  0xDA, 0x06, 0xDA, 0x8C, 0x3A, 0xDA, 0x08, 0xCE, 0x80, 0xE3, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 
48142
  0x72, 0x2F, 0x66, 0x6C, 0x75, 0x73, 0x68, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x29, 0x0A, 
48143
  0x0A, 0x43, 0x6C, 0x65, 0x61, 0x72, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 
48144
  0x65, 0x72, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x61, 0x72, 
48145
  0x73, 0x65, 0x20, 0x71, 0x75, 0x65, 0x75, 0x65, 0x2E, 0x20, 0x43, 0x61, 0x6E, 0x20, 0x62, 0x65, 
48146
  0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x73, 0x65, 0x74, 0x20, 0x74, 
48147
  0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6E, 0x20, 
48148
  0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x77, 0x61, 0x73, 0x20, 0x65, 0x6E, 0x63, 0x6F, 0x75, 0x6E, 
48149
  0x74, 0x65, 0x72, 0x65, 0x64, 0x2E, 0x20, 0x44, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 
48150
  0x72, 0x65, 0x73, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x61, 
48151
  0x6E, 0x64, 0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x65, 
48152
  0x72, 0x2C, 0x20, 0x73, 0x6F, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x20, 0x70, 
48153
  0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 
48154
  0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x2C, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 
48155
  0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2E, 0xDA, 0x8C, 0x3B, 
48156
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x82, 0x90, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 
48157
  0x3C, 0xDA, 0x08, 0xCE, 0x43, 0x28, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x74, 0x20, 0x78, 0x73, 
48158
  0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 
48159
  0x72, 0x6F, 0x64, 0x75, 0x63, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x73, 0x2E, 0x20, 0x49, 0x66, 
48160
  0x20, 0x78, 0x73, 0x20, 0x69, 0x73, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2C, 0x20, 0x72, 0x65, 
48161
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x31, 0x2E, 0xDA, 0x8C, 0x40, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
48162
  0x03, 0x00, 0xDA, 0x04, 0x88, 0x9C, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x41, 0xDA, 0x08, 0xCE, 0x80, 
48163
  0x82, 0x28, 0x6F, 0x73, 0x2F, 0x72, 0x65, 0x61, 0x6C, 0x70, 0x61, 0x74, 0x68, 0x20, 0x70, 0x61, 
48164
  0x74, 0x68, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x62, 0x73, 
48165
  0x6F, 0x6C, 0x75, 0x74, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 
48166
  0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2C, 0x20, 0x66, 0x6F, 0x6C, 
48167
  0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 0x2E, 0x2E, 0x2F, 0x2C, 0x20, 0x2E, 0x2F, 0x2C, 0x20, 
48168
  0x61, 0x6E, 0x64, 0x20, 0x73, 0x79, 0x6D, 0x6C, 0x69, 0x6E, 0x6B, 0x73, 0x2E, 0x20, 0x52, 0x65, 
48169
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x62, 0x73, 0x6F, 0x6C, 0x75, 0x74, 
48170
  0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 
48171
  0x6E, 0x67, 0x2E, 0xDA, 0x8C, 0x42, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x84, 
48172
  0x56, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x43, 0xDA, 0x08, 0xCE, 0x7E, 0x28, 0x74, 0x61, 0x6B, 0x65, 
48173
  0x20, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x54, 0x61, 0x6B, 0x65, 0x20, 0x74, 0x68, 
48174
  0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x6E, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 
48175
  0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2C, 0x20, 0x69, 
48176
  0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x6F, 0x72, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 
48177
  0x74, 0x79, 0x70, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 
48178
  0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2C, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 
48179
  0x20, 0x6F, 0x72, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x72, 0x65, 0x73, 0x70, 
48180
  0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x6C, 0x79, 0x2E, 0xDA, 0x8C, 0x4D, 0xD3, 0x02, 0xDA, 0x06, 
48181
  0xDA, 0x86, 0x10, 0xDA, 0x08, 0xCE, 0x81, 0x5C, 0x28, 0x61, 0x70, 0x70, 0x6C, 0x79, 0x20, 0x66, 
48182
  0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x41, 0x70, 0x70, 0x6C, 0x69, 0x65, 
48183
  0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 
48184
  0x61, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 
48185
  0x72, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0x20, 
48186
  0x45, 0x61, 0x63, 0x68, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 
48187
  0x61, 0x72, 0x67, 0x73, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 
48188
  0x61, 0x6E, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x66, 
48189
  0x2C, 0x20, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 
48190
  0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x72, 0x67, 
48191
  0x73, 0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 0x65, 0x78, 0x70, 0x65, 
48192
  0x63, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 
48193
  0x72, 0x61, 0x79, 0x2D, 0x6C, 0x69, 0x6B, 0x65, 0x2E, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x65, 
48194
  0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x6C, 
48195
  0x61, 0x73, 0x74, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 
48196
  0x74, 0x68, 0x65, 0x6E, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 
48197
  0x20, 0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 
48198
  0x74, 0x6F, 0x20, 0x66, 0x2E, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x65, 0x78, 0x61, 0x6D, 0x70, 0x6C, 
48199
  0x65, 0x3A, 0x0A, 0x0A, 0x09, 0x28, 0x61, 0x70, 0x70, 0x6C, 0x79, 0x20, 0x2B, 0x20, 0x31, 0x30, 
48200
  0x30, 0x30, 0x20, 0x28, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x31, 0x30, 0x29, 0x29, 0x0A, 0x0A, 
48201
  0x73, 0x75, 0x6D, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x31, 
48202
  0x30, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x31, 
48203
  0x30, 0x30, 0x30, 0x2E, 0xDA, 0x8C, 0x4E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 
48204
  0xA0, 0x3C, 0x01, 0xDA, 0x06, 0xDA, 0x82, 0xED, 0xDA, 0x08, 0xCE, 0x50, 0x28, 0x74, 0x75, 0x70, 
48205
  0x6C, 0x65, 0x2F, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x73, 0x20, 0x26, 0x20, 0x78, 0x73, 
48206
  0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 
48207
  0x20, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x65, 0x64, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 
48208
  0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 
48209
  0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x78, 0x73, 0x2E, 0xDA, 0x8C, 0x4F, 0xD3, 
48210
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x6C, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x50, 0xDA, 
48211
  0x08, 0xCE, 0x27, 0x28, 0x63, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3F, 0x20, 0x78, 
48212
  0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x61, 0x20, 
48213
  0x63, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x8C, 0x53, 0xD3, 0x03, 0xDA, 
48214
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0xB2, 0x80, 0xC6, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x54, 0xDA, 
48215
  0x08, 0xCE, 0x4A, 0x28, 0x69, 0x6E, 0x74, 0x2F, 0x73, 0x36, 0x34, 0x20, 0x76, 0x61, 0x6C, 0x75, 
48216
  0x65, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x62, 0x6F, 0x78, 
48217
  0x65, 0x64, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x20, 0x36, 0x34, 0x20, 0x62, 0x69, 0x74, 
48218
  0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 
48219
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0xDA, 0x8C, 0x55, 
48220
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x0C, 0x85, 0x95, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 
48221
  0x56, 0xDA, 0x08, 0xCE, 0x81, 0xF1, 0x28, 0x66, 0x66, 0x69, 0x2F, 0x74, 0x72, 0x61, 0x6D, 0x70, 
48222
  0x6F, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x63, 0x63, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x61, 
48223
  0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
48224
  0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 
48225
  0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x63, 
48226
  0x61, 0x6C, 0x6C, 0x62, 0x61, 0x63, 0x6B, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x61, 0x73, 0x73, 
48227
  0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x43, 0x20, 0x6C, 0x69, 0x62, 0x72, 0x61, 0x72, 0x69, 0x65, 
48228
  0x73, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x62, 0x61, 0x63, 0x6B, 
48229
  0x20, 0x74, 0x72, 0x61, 0x6D, 0x70, 0x6F, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x68, 0x61, 0x73, 0x20, 
48230
  0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x60, 0x76, 
48231
  0x6F, 0x69, 0x64, 0x20, 0x74, 0x72, 0x61, 0x6D, 0x70, 0x6F, 0x6C, 0x69, 0x6E, 0x65, 0x28, 0x76, 
48232
  0x6F, 0x69, 0x64, 0x20, 0x5C, 0x2A, 0x63, 0x74, 0x78, 0x2C, 0x20, 0x76, 0x6F, 0x69, 0x64, 0x20, 
48233
  0x5C, 0x2A, 0x75, 0x73, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x29, 0x60, 0x20, 0x69, 0x6E, 0x20, 
48234
  0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 
48235
  0x67, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x54, 0x68, 
48236
  0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x66, 
48237
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x74, 0x75, 0x72, 
48238
  0x65, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x2E, 0x20, 0x49, 0x74, 0x20, 
48239
  0x69, 0x73, 0x20, 0x75, 0x70, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 
48240
  0x67, 0x72, 0x61, 0x6D, 0x6D, 0x65, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x65, 0x6E, 0x73, 0x75, 0x72, 
48241
  0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x75, 0x73, 0x65, 0x72, 
48242
  0x64, 0x61, 0x74, 0x61, 0x60, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x63, 
48243
  0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 
48244
  0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x69, 0x6C, 
48245
  0x6C, 0x20, 0x62, 0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 
48246
  0x20, 0x6F, 0x6E, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x60, 
48247
  0x63, 0x74, 0x78, 0x60, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 
48248
  0x20, 0x6F, 0x70, 0x61, 0x71, 0x75, 0x65, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x2E, 
48249
  0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x63, 0x61, 
48250
  0x6E, 0x20, 0x62, 0x65, 0x20, 0x66, 0x75, 0x72, 0x74, 0x68, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x73, 
48251
  0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x66, 0x66, 0x69, 
48252
  0x2F, 0x72, 0x65, 0x61, 0x64, 0x60, 0x2E, 0xDA, 0x8C, 0x57, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
48253
  0x00, 0xDA, 0x18, 0x88, 0x72, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x58, 0xDA, 0x08, 0xCE, 0x80, 0xC7, 
48254
  0x28, 0x66, 0x72, 0x65, 0x65, 0x7A, 0x65, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x46, 0x72, 0x65, 0x65, 
48255
  0x7A, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x20, 0x28, 0x6D, 0x61, 
48256
  0x6B, 0x65, 0x20, 0x69, 0x74, 0x20, 0x69, 0x6D, 0x6D, 0x75, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x29, 
48257
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x64, 0x6F, 0x20, 0x61, 0x20, 0x64, 0x65, 0x65, 0x70, 0x20, 0x63, 
48258
  0x6F, 0x70, 0x79, 0x2C, 0x20, 0x6D, 0x61, 0x6B, 0x69, 0x6E, 0x67, 0x0A, 0x63, 0x68, 0x69, 0x6C, 
48259
  0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x69, 0x6D, 
48260
  0x6D, 0x75, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x43, 0x6C, 0x6F, 0x73, 0x75, 0x72, 0x65, 
48261
  0x73, 0x2C, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 
48262
  0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x0A, 0x77, 0x69, 
48263
  0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 
48264
  0x69, 0x76, 0x65, 0x6C, 0x79, 0x20, 0x66, 0x72, 0x6F, 0x7A, 0x65, 0x6E, 0x2C, 0x20, 0x62, 0x75, 
48265
  0x74, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x79, 0x70, 0x65, 
48266
  0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x2E, 0xDA, 0x8C, 0x5C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
48267
  0x00, 0xDA, 0x04, 0x84, 0xDF, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x5D, 0xDA, 0x08, 0xCE, 0x83, 0x04, 
48268
  0x28, 0x6F, 0x73, 0x2F, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x20, 0x61, 0x72, 0x67, 0x73, 
48269
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x65, 0x6E, 0x76, 0x29, 
48270
  0x0A, 0x0A, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6F, 0x67, 
48271
  0x72, 0x61, 0x6D, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 
48272
  0x6D, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x69, 0x74, 0x20, 0x73, 0x74, 
48273
  0x72, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0x20, 
48274
  0x60, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 
48275
  0x77, 0x6F, 0x72, 0x64, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 
48276
  0x65, 0x73, 0x20, 0x68, 0x6F, 0x77, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 
48277
  0x61, 0x6D, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x2E, 
48278
  0x0A, 0x2A, 0x20, 0x3A, 0x65, 0x20, 0x2D, 0x20, 0x65, 0x6E, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x20, 
48279
  0x70, 0x61, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 
48280
  0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 
48281
  0x6F, 0x67, 0x72, 0x61, 0x6D, 0x2E, 0x20, 0x57, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x3A, 
48282
  0x65, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x65, 
48283
  0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 
48284
  0x68, 0x65, 0x72, 0x69, 0x74, 0x65, 0x64, 0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x70, 0x20, 0x2D, 0x20, 
48285
  0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x73, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x69, 0x6E, 0x67, 
48286
  0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x50, 0x41, 0x54, 
48287
  0x48, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x69, 0x6E, 0x61, 0x72, 0x79, 
48288
  0x20, 0x74, 0x6F, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x2E, 0x20, 0x57, 0x69, 0x74, 
48289
  0x68, 0x6F, 0x75, 0x74, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x2C, 0x20, 
48290
  0x62, 0x69, 0x6E, 0x61, 0x72, 0x69, 0x65, 0x73, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x75, 0x73, 
48291
  0x65, 0x20, 0x61, 0x62, 0x73, 0x6F, 0x6C, 0x75, 0x74, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x73, 
48292
  0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x78, 0x20, 0x2D, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x20, 0x65, 
48293
  0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x63, 0x6F, 0x64, 
48294
  0x65, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x6E, 0x2D, 0x7A, 0x65, 0x72, 0x6F, 0x2E, 0x0A, 0x2A, 
48295
  0x20, 0x3A, 0x64, 0x20, 0x2D, 0x20, 0x44, 0x6F, 0x6E, 0x27, 0x74, 0x20, 0x74, 0x72, 0x79, 0x20, 
48296
  0x61, 0x6E, 0x64, 0x20, 0x74, 0x65, 0x72, 0x6D, 0x69, 0x6E, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 
48297
  0x65, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x6F, 0x6E, 0x20, 0x67, 0x61, 0x72, 
48298
  0x62, 0x61, 0x67, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
48299
  0x28, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x73, 0x70, 0x61, 0x77, 0x6E, 0x69, 0x6E, 0x67, 0x20, 
48300
  0x7A, 0x6F, 0x6D, 0x62, 0x69, 0x65, 0x73, 0x29, 0x2E, 0x0A, 0x60, 0x65, 0x6E, 0x76, 0x60, 0x20, 
48301
  0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x74, 
48302
  0x72, 0x75, 0x63, 0x74, 0x20, 0x6D, 0x61, 0x70, 0x70, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x6E, 0x76, 
48303
  0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 
48304
  0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 0x49, 0x74, 
48305
  0x20, 0x63, 0x61, 0x6E, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 
48306
  0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x3A, 0x69, 0x6E, 0x2C, 0x20, 
48307
  0x3A, 0x6F, 0x75, 0x74, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x3A, 0x65, 0x72, 0x72, 0x2C, 0x20, 
48308
  0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x72, 0x65, 0x64, 0x69, 
48309
  0x72, 0x65, 0x63, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x74, 0x64, 0x69, 0x6F, 0x20, 0x69, 0x6E, 
48310
  0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x2E, 
48311
  0x20, 0x54, 0x68, 0x65, 0x73, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 
48312
  0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x63, 0x6F, 0x72, 0x65, 0x2F, 
48313
  0x66, 0x69, 0x6C, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 
48314
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x73, 0x74, 
48315
  0x61, 0x74, 0x75, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x67, 
48316
  0x72, 0x61, 0x6D, 0x2E, 0xDA, 0x88, 0x3D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 
48317
  0x83, 0x4E, 0x01, 0xDA, 0x06, 0xDA, 0x88, 0x2D, 0xDA, 0x08, 0xCE, 0x80, 0xC7, 0x28, 0x73, 0x6F, 
48318
  0x72, 0x74, 0x20, 0x69, 0x6E, 0x64, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x62, 0x65, 0x66, 0x6F, 
48319
  0x72, 0x65, 0x3F, 0x29, 0x0A, 0x0A, 0x53, 0x6F, 0x72, 0x74, 0x73, 0x20, 0x60, 0x69, 0x6E, 0x64, 
48320
  0x60, 0x20, 0x69, 0x6E, 0x2D, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 
48321
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x69, 0x74, 0x2E, 0x20, 0x55, 0x73, 0x65, 0x73, 
48322
  0x20, 0x71, 0x75, 0x69, 0x63, 0x6B, 0x2D, 0x73, 0x6F, 0x72, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 
48323
  0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x20, 0x73, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 
48324
  0x73, 0x6F, 0x72, 0x74, 0x2E, 0x0A, 0x49, 0x66, 0x20, 0x61, 0x20, 0x60, 0x62, 0x65, 0x66, 0x6F, 
48325
  0x72, 0x65, 0x3F, 0x60, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x20, 
48326
  0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x76, 
48327
  0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x73, 0x6F, 0x72, 0x74, 0x73, 0x20, 0x65, 0x6C, 0x65, 0x6D, 
48328
  0x65, 0x6E, 0x74, 0x73, 0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x61, 0x74, 0x2C, 
48329
  0x0A, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x75, 0x73, 0x65, 0x73, 0x20, 
48330
  0x60, 0x3C, 0x60, 0x2E, 0xDA, 0x8C, 0x5E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 
48331
  0xA9, 0x82, 0x64, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x5F, 0xDA, 0x08, 0xCE, 0x5C, 0x28, 0x69, 0x6E, 
48332
  0x74, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 
48333
  0x78, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x65, 0x78, 0x61, 0x63, 0x74, 0x6C, 0x79, 
48334
  0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 
48335
  0x61, 0x20, 0x33, 0x32, 0x20, 0x62, 0x69, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x20, 
48336
  0x74, 0x77, 0x6F, 0x27, 0x73, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 
48337
  0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2E, 0xDA, 0x8C, 0x60, 0xD3, 0x03, 0xDA, 0x03, 
48338
  0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x80, 0x91, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x61, 0xDA, 0x08, 
48339
  0xCE, 0x51, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x6E, 0x67, 0x2D, 0x75, 0x6E, 0x69, 0x66, 
48340
  0x6F, 0x72, 0x6D, 0x20, 0x72, 0x6E, 0x67, 0x29, 0x0A, 0x0A, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 
48341
  0x74, 0x20, 0x61, 0x20, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 
48342
  0x72, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x5B, 
48343
  0x30, 0x2C, 0x20, 0x31, 0x29, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x52, 
48344
  0x4E, 0x47, 0x2E, 0xDA, 0x8C, 0x62, 0xD3, 0x04, 0xDA, 0x84, 0x25, 0xCB, 0xDA, 0x03, 0xD2, 0x03, 
48345
  0x00, 0xDA, 0x18, 0x8B, 0xF8, 0x01, 0xDA, 0x06, 0xDA, 0x83, 0x49, 0xDA, 0x08, 0xCE, 0x42, 0x57, 
48346
  0x69, 0x64, 0x74, 0x68, 0x20, 0x69, 0x6E, 0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x73, 0x20, 
48347
  0x74, 0x6F, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x64, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 
48348
  0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x65, 0x64, 0x20, 0x77, 
48349
  0x69, 0x74, 0x68, 0x20, 0x60, 0x64, 0x6F, 0x63, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x60, 
48350
  0x2E, 0xDA, 0x8C, 0x63, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x80, 0x9B, 
48351
  0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x64, 0xDA, 0x08, 0xCE, 0x80, 0xAB, 0x28, 0x6D, 0x61, 0x74, 0x68, 
48352
  0x2F, 0x72, 0x6E, 0x67, 0x2D, 0x69, 0x6E, 0x74, 0x20, 0x72, 0x6E, 0x67, 0x20, 0x26, 0x6F, 0x70, 
48353
  0x74, 0x20, 0x6D, 0x61, 0x78, 0x29, 0x0A, 0x0A, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 
48354
  0x61, 0x20, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 
48355
  0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x5B, 0x30, 
48356
  0x2C, 0x20, 0x6D, 0x61, 0x78, 0x29, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6D, 0x61, 0x78, 0x20, 0x3E, 
48357
  0x20, 0x30, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x52, 0x4E, 0x47, 0x2E, 
48358
  0x20, 0x20, 0x49, 0x66, 0x20, 0x6D, 0x61, 0x78, 0x20, 0x69, 0x73, 0x20, 0x30, 0x2C, 0x20, 0x72, 
48359
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x30, 0x2E, 0x20, 0x20, 0x49, 0x66, 0x20, 0x6E, 0x6F, 0x20, 
48360
  0x6D, 0x61, 0x78, 0x20, 0x69, 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x2C, 0x20, 0x74, 0x68, 
48361
  0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x32, 0x5E, 0x33, 
48362
  0x31, 0x20, 0x2D, 0x20, 0x31, 0x2E, 0xDA, 0x8C, 0x65, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
48363
  0xDA, 0x18, 0x81, 0x8B, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x66, 0xDA, 0x08, 0xCE, 0x80, 0xD0, 0x28, 
48364
  0x69, 0x66, 0x2D, 0x77, 0x69, 0x74, 0x68, 0x20, 0x5B, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
48365
  0x20, 0x63, 0x74, 0x6F, 0x72, 0x20, 0x64, 0x74, 0x6F, 0x72, 0x5D, 0x20, 0x74, 0x72, 0x75, 0x74, 
48366
  0x68, 0x79, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x79, 0x29, 0x0A, 
48367
  0x0A, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x77, 0x69, 0x74, 
48368
  0x68, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x69, 0x66, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 
48369
  0x6E, 0x67, 0x20, 0x69, 0x73, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x6E, 
48370
  0x69, 0x6C, 0x2C, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x0A, 0x74, 0x68, 
48371
  0x65, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x79, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2E, 0x20, 0x4F, 
48372
  0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2C, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 
48373
  0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x20, 0x70, 
48374
  0x61, 0x74, 0x68, 0x2E, 0x20, 0x49, 0x6E, 0x20, 0x62, 0x6F, 0x74, 0x68, 0x20, 0x63, 0x61, 0x73, 
48375
  0x65, 0x73, 0x2C, 0x0A, 0x60, 0x63, 0x74, 0x6F, 0x72, 0x60, 0x20, 0x69, 0x73, 0x20, 0x62, 0x6F, 
48376
  0x75, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x2E, 0xDA, 
48377
  0x3D, 0xCB, 0xDA, 0x8C, 0x6A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x35, 
48378
  0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x6B, 0xDA, 0x08, 0xCE, 0x50, 0x28, 0x6F, 0x73, 0x2F, 0x67, 0x65, 
48379
  0x74, 0x65, 0x6E, 0x76, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x26, 0x6F, 
48380
  0x70, 0x74, 0x20, 0x64, 0x66, 0x6C, 0x74, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 
48381
  0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 
48382
  0x66, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 
48383
  0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x8C, 0x6C, 0xD3, 0x03, 0xDA, 
48384
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 0x0A, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x6D, 0xDA, 
48385
  0x08, 0xCE, 0x2A, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x63, 0x6F, 0x73, 0x20, 0x78, 0x29, 
48386
  0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 
48387
  0x63, 0x63, 0x6F, 0x73, 0x69, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x8C, 0x6E, 
48388
  0xD3, 0x02, 0xDA, 0x06, 0xDA, 0x8C, 0x6F, 0xDA, 0x08, 0xCE, 0x80, 0x99, 0x28, 0x63, 0x6D, 0x70, 
48389
  0x20, 0x78, 0x20, 0x79, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x2D, 
48390
  0x31, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 
48391
  0x6C, 0x79, 0x20, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x79, 0x2C, 0x20, 
48392
  0x31, 0x20, 0x69, 0x66, 0x20, 0x79, 0x20, 0x69, 0x73, 0x20, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 
48393
  0x6C, 0x79, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 
48394
  0x78, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x30, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 
48395
  0x73, 0x65, 0x2E, 0x20, 0x54, 0x6F, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x30, 0x2C, 
48396
  0x20, 0x78, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x79, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 
48397
  0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x61, 0x63, 0x74, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 
48398
  0x74, 0x79, 0x70, 0x65, 0x2E, 0xDA, 0x8C, 0x71, 0xD3, 0x02, 0xDA, 0x06, 0xDA, 0x88, 0x6F, 0xDA, 
48399
  0x08, 0xCE, 0x81, 0x30, 0x28, 0x67, 0x65, 0x74, 0x20, 0x64, 0x73, 0x20, 0x6B, 0x65, 0x79, 0x20, 
48400
  0x26, 0x6F, 0x70, 0x74, 0x20, 0x64, 0x66, 0x6C, 0x74, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 
48401
  0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6D, 0x61, 0x70, 0x70, 0x65, 0x64, 
48402
  0x20, 0x74, 0x6F, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x69, 0x6E, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 
48403
  0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x64, 0x73, 0x2C, 0x20, 0x61, 0x6E, 
48404
  0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x64, 0x66, 0x6C, 0x74, 0x20, 0x6F, 0x72, 
48405
  0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x6F, 0x75, 0x6E, 
48406
  0x64, 0x2E, 0x20, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6E, 
48407
  0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x74, 
48408
  0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 
48409
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x76, 0x61, 
48410
  0x6C, 0x69, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 
48411
  0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x75, 0x6E, 0x6C, 0x65, 0x73, 
48412
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 
48413
  0x74, 0x75, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x62, 0x73, 0x74, 0x72, 
48414
  0x61, 0x63, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2E, 0x20, 0x49, 0x6E, 0x20, 0x74, 0x68, 0x61, 
48415
  0x74, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x62, 0x73, 0x74, 
48416
  0x72, 0x61, 0x63, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x67, 0x65, 0x74, 0x74, 0x65, 0x72, 
48417
  0x20, 0x6D, 0x61, 0x79, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 
48418
  0x72, 0x6F, 0x72, 0x2E, 0xDA, 0x8C, 0x72, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 
48419
  0x82, 0x66, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x73, 0xDA, 0x08, 0xCE, 0x80, 0x91, 0x28, 0x63, 0x61, 
48420
  0x74, 0x73, 0x65, 0x71, 0x20, 0x68, 0x65, 0x61, 0x64, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 
48421
  0x29, 0x0A, 0x0A, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x6C, 
48422
  0x6F, 0x6F, 0x70, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74, 
48423
  0x65, 0x6E, 0x61, 0x74, 0x65, 0x73, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x65, 0x6C, 0x65, 0x6D, 
48424
  0x65, 0x6E, 0x74, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 
48425
  0x70, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x6E, 0x20, 0x61, 
48426
  0x72, 0x72, 0x61, 0x79, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
48427
  0x20, 0x74, 0x68, 0x61, 0x74, 0x2E, 0x0A, 0x53, 0x65, 0x65, 0x20, 0x60, 0x6C, 0x6F, 0x6F, 0x70, 
48428
  0x60, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6C, 0x73, 0x2E, 0xDA, 0x3D, 
48429
  0xCB, 0xDA, 0x8C, 0x75, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8A, 0x98, 0x01, 
48430
  0xDA, 0x06, 0xDA, 0x87, 0x23, 0xDA, 0x08, 0xCE, 0x41, 0x41, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 
48431
  0x2C, 0x20, 0x6D, 0x61, 0x70, 0x70, 0x69, 0x6E, 0x67, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x64, 
48432
  0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6E, 0x74, 0x69, 0x66, 0x69, 
48433
  0x65, 0x72, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x65, 0x6E, 0x76, 
48434
  0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0xDA, 0x84, 0xEC, 0xD3, 0x03, 0xDA, 
48435
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x67, 0x01, 0xDA, 0x06, 0xDA, 0x84, 0xEA, 0xDA, 0x08, 0xCE, 
48436
  0x24, 0x28, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 
48437
  0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x79, 
48438
  0x6D, 0x62, 0x6F, 0x6C, 0x2E, 0xDA, 0x8C, 0x76, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
48439
  0x82, 0x9A, 0x81, 0x24, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x77, 0xDA, 0x08, 0xCE, 0x3D, 0x28, 0x6D, 
48440
  0x61, 0x74, 0x68, 0x2F, 0x65, 0x72, 0x66, 0x63, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 
48441
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 
48442
  0x65, 0x6E, 0x74, 0x61, 0x72, 0x79, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x66, 0x75, 0x6E, 
48443
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x8C, 0x78, 0xD3, 0x04, 
48444
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x84, 0xA2, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x79, 0xDA, 
48445
  0x08, 0xCE, 0x81, 0x61, 0x28, 0x64, 0x65, 0x66, 0x64, 0x79, 0x6E, 0x20, 0x61, 0x6C, 0x69, 0x61, 
48446
  0x73, 0x20, 0x26, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x66, 0x69, 0x6E, 
48447
  0x65, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x6C, 0x69, 0x61, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 
48448
  0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 
48449
  0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 
48450
  0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x0A, 
48451
  0x61, 0x6C, 0x69, 0x61, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x6F, 0x72, 0x6D, 0x61, 
48452
  0x6C, 0x2C, 0x20, 0x6C, 0x65, 0x78, 0x69, 0x63, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x73, 0x63, 0x6F, 
48453
  0x70, 0x65, 0x64, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x61, 0x74, 
48454
  0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x73, 
48455
  0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x0A, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 
48456
  0x64, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x79, 0x70, 
48457
  0x6F, 0x73, 0x2E, 0x20, 0x60, 0x64, 0x65, 0x66, 0x64, 0x79, 0x6E, 0x60, 0x20, 0x64, 0x6F, 0x65, 
48458
  0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x73, 0x65, 0x74, 0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 
48459
  0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x6F, 0x72, 0x20, 0x6F, 0x74, 
48460
  0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x0A, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x20, 
48461
  0x60, 0x64, 0x79, 0x6E, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x73, 0x65, 0x74, 0x64, 0x79, 
48462
  0x6E, 0x60, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x61, 0x6C, 0x69, 0x61, 0x73, 0x20, 0x5F, 0x6D, 
48463
  0x75, 0x73, 0x74, 0x5F, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 
48464
  0x6E, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x2A, 0x60, 0x20, 
48465
  0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x2C, 0x20, 0x75, 0x73, 0x75, 0x61, 0x6C, 
48466
  0x6C, 0x79, 0x0A, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x22, 0x65, 0x61, 0x72, 0x6D, 0x75, 
48467
  0x66, 0x66, 0x73, 0x22, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x8C, 0x84, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 
48468
  0x03, 0x00, 0xDA, 0x18, 0x81, 0x7A, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x85, 0xDA, 0x08, 0xCE, 0x81, 
48469
  0x41, 0x28, 0x77, 0x69, 0x74, 0x68, 0x20, 0x5B, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 
48470
  0x63, 0x74, 0x6F, 0x72, 0x20, 0x64, 0x74, 0x6F, 0x72, 0x5D, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 
48471
  0x79, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x20, 0x60, 0x62, 0x6F, 
48472
  0x64, 0x79, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x73, 0x6F, 0x6D, 0x65, 0x20, 0x72, 0x65, 
48473
  0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 0x69, 
48474
  0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x61, 0x75, 0x74, 0x6F, 0x6D, 0x61, 0x74, 0x69, 0x63, 0x61, 
48475
  0x6C, 0x6C, 0x79, 0x20, 0x63, 0x6C, 0x65, 0x61, 0x6E, 0x65, 0x64, 0x20, 0x75, 0x70, 0x0A, 0x69, 
48476
  0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 
48477
  0x72, 0x6F, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x62, 0x6F, 0x64, 0x79, 0x60, 0x2E, 0x20, 0x60, 
48478
  0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x60, 0x20, 0x69, 0x73, 0x20, 0x62, 0x6F, 0x75, 0x6E, 
48479
  0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 
48480
  0x69, 0x6F, 0x6E, 0x20, 0x60, 0x63, 0x74, 0x6F, 0x72, 0x60, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x0A, 
48481
  0x60, 0x64, 0x74, 0x6F, 0x72, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 
48482
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x72, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x61, 0x62, 0x6C, 0x65, 
48483
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 
48484
  0x74, 0x68, 0x65, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x2E, 0x20, 0x49, 0x66, 0x20, 
48485
  0x6E, 0x6F, 0x20, 0x64, 0x65, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x6F, 0x72, 0x0A, 0x28, 0x60, 
48486
  0x64, 0x74, 0x6F, 0x72, 0x60, 0x29, 0x20, 0x69, 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x2C, 
48487
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x3A, 0x63, 0x6C, 0x6F, 0x73, 
48488
  0x65, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6F, 0x75, 0x72, 0x63, 
48489
  0x65, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x8C, 0x88, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
48490
  0x82, 0xA5, 0x81, 0x58, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x89, 0xDA, 0x08, 0xCE, 0x80, 0xE8, 0x28, 
48491
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x72, 0x61, 0x77, 0x67, 0x65, 0x74, 0x20, 0x74, 0x61, 0x62, 
48492
  0x20, 0x6B, 0x65, 0x79, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 0x61, 0x20, 0x76, 0x61, 
48493
  0x6C, 0x75, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 
48494
  0x20, 0x60, 0x74, 0x61, 0x62, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x6C, 
48495
  0x6F, 0x6F, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 
48496
  0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x49, 
48497
  0x66, 0x20, 0x60, 0x74, 0x61, 0x62, 0x60, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 
48498
  0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 
48499
  0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6C, 0x79, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
48500
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 
48501
  0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 
48502
  0x63, 0x68, 0x65, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 
48503
  0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
48504
  0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 
48505
  0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x8A, 0x2D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
48506
  0x00, 0xDA, 0x18, 0x8B, 0xA9, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x2A, 0xDA, 0x08, 0xCE, 0x81, 0x4F, 
48507
  0x28, 0x6D, 0x65, 0x72, 0x67, 0x65, 0x2D, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x74, 0x61, 
48508
  0x72, 0x67, 0x65, 0x74, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x26, 0x6F, 0x70, 0x74, 
48509
  0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x20, 0x65, 0x78, 0x70, 0x6F, 0x72, 0x74, 0x29, 0x0A, 
48510
  0x0A, 0x4D, 0x65, 0x72, 0x67, 0x65, 0x20, 0x61, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 
48511
  0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 
48512
  0x60, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x60, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 
48513
  0x6D, 0x65, 0x6E, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x60, 0x70, 0x72, 0x65, 
48514
  0x66, 0x69, 0x78, 0x60, 0x2C, 0x20, 0x61, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 
48515
  0x65, 0x20, 0x60, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x60, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 
48516
  0x2E, 0x0A, 0x54, 0x68, 0x69, 0x73, 0x20, 0x6C, 0x65, 0x74, 0x73, 0x20, 0x75, 0x73, 0x65, 0x72, 
48517
  0x73, 0x20, 0x65, 0x6D, 0x75, 0x6C, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x65, 
48518
  0x68, 0x61, 0x76, 0x69, 0x6F, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6D, 0x70, 0x6F, 0x72, 
48519
  0x74, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6F, 0x6D, 
48520
  0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x0A, 0x49, 
48521
  0x66, 0x20, 0x60, 0x65, 0x78, 0x70, 0x6F, 0x72, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 
48522
  0x75, 0x74, 0x68, 0x79, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x6E, 0x20, 0x6D, 0x65, 0x72, 0x67, 0x65, 
48523
  0x64, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 
48524
  0x6E, 0x6F, 0x74, 0x20, 0x6D, 0x61, 0x72, 0x6B, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x70, 0x72, 
48525
  0x69, 0x76, 0x61, 0x74, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x0A, 0x74, 
48526
  0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x74, 0x61, 0x72, 0x67, 
48527
  0x65, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 
48528
  0x84, 0xF5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x82, 0xC9, 0x01, 0xDA, 0x06, 
48529
  0xDA, 0x84, 0xF3, 0xDA, 0x08, 0xCE, 0x33, 0x28, 0x69, 0x64, 0x65, 0x6E, 0x74, 0x69, 0x74, 0x79, 
48530
  0x20, 0x78, 0x29, 0x0A, 0x0A, 0x41, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
48531
  0x74, 0x68, 0x61, 0x74, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x69, 0x74, 0x73, 
48532
  0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x8C, 0x8A, 0xD3, 0x03, 0xDA, 
48533
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 0x11, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x8B, 0xDA, 
48534
  0x08, 0xCE, 0x30, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x73, 0x69, 0x6E, 0x68, 0x20, 0x78, 0x29, 
48535
  0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x79, 
48536
  0x70, 0x65, 0x72, 0x62, 0x6F, 0x6C, 0x69, 0x63, 0x20, 0x73, 0x69, 0x6E, 0x65, 0x20, 0x6F, 0x66, 
48537
  0x20, 0x78, 0x2E, 0xDA, 0x8C, 0x8C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x0C, 0x85, 
48538
  0xF1, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x8D, 0xDA, 0x08, 0xCE, 0x81, 0xDB, 0x28, 0x66, 0x66, 0x69, 
48539
  0x2F, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x2D, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 
48540
  0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 
48541
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x66, 0x73, 
48542
  0x65, 0x74, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x62, 0x75, 
48543
  0x66, 0x66, 0x65, 0x72, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x70, 0x6F, 0x69, 0x6E, 
48544
  0x74, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x75, 0x6E, 0x64, 0x65, 0x72, 0x6C, 0x79, 
48545
  0x69, 0x6E, 0x67, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 
48546
  0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 
48547
  0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x64, 
48548
  0x20, 0x6F, 0x72, 0x20, 0x66, 0x72, 0x65, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 
48549
  0x20, 0x67, 0x61, 0x72, 0x62, 0x61, 0x67, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 
48550
  0x6F, 0x72, 0x2C, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 0x75, 0x6E, 0x6D, 
48551
  0x61, 0x6E, 0x61, 0x67, 0x65, 0x64, 0x2C, 0x20, 0x6D, 0x75, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 
48552
  0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x6D, 0x61, 0x6E, 
48553
  0x69, 0x70, 0x75, 0x6C, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x62, 0x75, 
48554
  0x66, 0x66, 0x65, 0x72, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x20, 
48555
  0x41, 0x74, 0x74, 0x65, 0x6D, 0x70, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x73, 0x69, 
48556
  0x7A, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x65, 0x78, 0x74, 0x65, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 
48557
  0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x62, 0x65, 0x79, 0x6F, 0x6E, 0x64, 0x20, 0x69, 
48558
  0x74, 0x73, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, 0x6C, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 
48559
  0x69, 0x74, 0x79, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x20, 0x61, 
48560
  0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0x20, 0x41, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 
48561
  0x20, 0x6D, 0x61, 0x6E, 0x79, 0x20, 0x46, 0x46, 0x49, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 
48562
  0x6F, 0x6E, 0x73, 0x2C, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x6D, 0x65, 0x6D, 
48563
  0x6F, 0x72, 0x79, 0x20, 0x75, 0x6E, 0x73, 0x61, 0x66, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 
48564
  0x61, 0x6E, 0x20, 0x70, 0x6F, 0x74, 0x65, 0x6E, 0x74, 0x69, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x61, 
48565
  0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x6F, 0x75, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x62, 0x6F, 0x75, 0x6E, 
48566
  0x64, 0x73, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 
48567
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 
48568
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x8C, 0x8E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
48569
  0x00, 0xDA, 0x18, 0x87, 0xC9, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x8F, 0xDA, 0x08, 0xCE, 0x80, 0xAF, 
48570
  0x28, 0x6D, 0x61, 0x63, 0x6C, 0x69, 0x6E, 0x74, 0x66, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 
48571
  0x66, 0x6D, 0x74, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x57, 0x68, 0x65, 
48572
  0x6E, 0x20, 0x69, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x20, 0x61, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 
48573
  0x2C, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 
48574
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x64, 0x64, 0x20, 0x61, 0x20, 0x6C, 0x69, 
48575
  0x6E, 0x74, 0x65, 0x72, 0x20, 0x77, 0x61, 0x72, 0x6E, 0x69, 0x6E, 0x67, 0x2E, 0x20, 0x54, 0x61, 
48576
  0x6B, 0x65, 0x73, 0x0A, 0x61, 0x20, 0x60, 0x66, 0x6D, 0x74, 0x60, 0x20, 0x61, 0x72, 0x67, 0x75, 
48577
  0x6D, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x60, 0x73, 0x74, 0x72, 0x69, 0x6E, 
48578
  0x67, 0x2F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x60, 0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 
48579
  0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x66, 0x6F, 0x72, 0x6D, 
48580
  0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2E, 0xDA, 
48581
  0x8C, 0x91, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8A, 0x87, 0x01, 0xDA, 0x06, 
48582
  0xDA, 0x8C, 0x92, 0xDA, 0x08, 0xCE, 0x72, 0x28, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x69, 0x6D, 0x61, 
48583
  0x67, 0x65, 0x20, 0x65, 0x6E, 0x76, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 
48584
  0x61, 0x6E, 0x20, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x6E, 
48585
  0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x72, 0x65, 0x74, 
48586
  0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x60, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 
48587
  0x65, 0x60, 0x2E, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
48588
  0x69, 0x6D, 0x61, 0x67, 0x65, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x61, 0x73, 0x20, 
48589
  0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2E, 0xDA, 0x8C, 0x95, 0xD3, 0x03, 0xDA, 0x03, 
48590
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x87, 0x12, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x96, 0xDA, 0x08, 0xCE, 
48591
  0x29, 0x28, 0x6F, 0x73, 0x2F, 0x72, 0x6D, 0x20, 0x70, 0x61, 0x74, 0x68, 0x29, 0x0A, 0x0A, 0x44, 
48592
  0x65, 0x6C, 0x65, 0x74, 0x65, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x20, 0x52, 0x65, 
48593
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x8C, 0x97, 0xD3, 0x03, 0xDA, 
48594
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 0x59, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x98, 0xDA, 
48595
  0x08, 0xCE, 0x3D, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x63, 0x6D, 0x20, 0x78, 0x20, 0x79, 
48596
  0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 
48597
  0x65, 0x61, 0x73, 0x74, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x20, 0x6D, 0x75, 0x6C, 0x74, 
48598
  0x69, 0x70, 0x6C, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x79, 0x2E, 
48599
  0xDA, 0x8C, 0x99, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x83, 0xD6, 0x01, 0xDA, 
48600
  0x06, 0xDA, 0x8C, 0x9A, 0xDA, 0x08, 0xCE, 0x80, 0x80, 0x28, 0x6D, 0x61, 0x70, 0x63, 0x61, 0x74, 
48601
  0x20, 0x66, 0x20, 0x69, 0x6E, 0x64, 0x20, 0x26, 0x20, 0x69, 0x6E, 0x64, 0x73, 0x29, 0x0A, 0x0A, 
48602
  0x4D, 0x61, 0x70, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 
48603
  0x76, 0x65, 0x72, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 
48604
  0x74, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x72, 
48605
  0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x0A, 0x75, 0x73, 0x65, 0x20, 0x60, 
48606
  0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74, 0x60, 0x20, 0x74, 0x6F, 
48607
  0x20, 0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74, 0x65, 0x6E, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 
48608
  0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x73, 0x2E, 0xDA, 0x8C, 0xAA, 0xD3, 0x03, 0xDA, 0x03, 
48609
  0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 0x1A, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0xAB, 0xDA, 0x08, 
48610
  0xCE, 0x2D, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0x31, 0x30, 0x20, 0x78, 0x29, 
48611
  0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 
48612
  0x67, 0x20, 0x62, 0x61, 0x73, 0x65, 0x20, 0x31, 0x30, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 
48613
  0x8C, 0xAC, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x81, 0xFF, 0x01, 0xDA, 0x06, 
48614
  0xDA, 0x8C, 0xAD, 0xDA, 0x08, 0xCE, 0x3D, 0x28, 0x65, 0x61, 0x63, 0x68, 0x6B, 0x20, 0x78, 0x20, 
48615
  0x64, 0x73, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x4C, 0x6F, 0x6F, 0x70, 
48616
  0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x69, 
48617
  0x6E, 0x20, 0x60, 0x64, 0x73, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
48618
  0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x87, 0xE0, 0xD3, 0x04, 0xDA, 0x84, 0x25, 0xCB, 
48619
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8E, 0x97, 0x03, 0xDA, 0x06, 0xDA, 0x87, 0xFB, 0xDA, 
48620
  0x08, 0xCE, 0x37, 0x20, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x6E, 0x61, 0x74, 0x69, 
48621
  0x76, 0x65, 0x20, 0x6C, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x66, 
48622
  0x66, 0x69, 0x2F, 0x62, 0x69, 0x6E, 0x64, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6F, 0x74, 0x68, 0x65, 
48623
  0x72, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6E, 0x67, 0x73, 0xDA, 0x8C, 0xAF, 0xD3, 0x02, 0xDA, 
48624
  0x06, 0xDA, 0x89, 0xE7, 0xDA, 0x08, 0xCE, 0x81, 0x69, 0x28, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x64, 
48625
  0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6B, 0x65, 0x79, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 
48626
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x69, 
48627
  0x6E, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 
48628
  0x72, 0x65, 0x2E, 0x20, 0x43, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 
48629
  0x74, 0x6F, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x75, 
48630
  0x67, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 
48631
  0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 
48632
  0x69, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x75, 0x6E, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 
48633
  0x64, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2E, 0x20, 0x4B, 0x65, 0x79, 0x73, 0x20, 0x61, 0x72, 
48634
  0x65, 0x20, 0x67, 0x75, 0x61, 0x72, 0x61, 0x6E, 0x74, 0x65, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 
48635
  0x62, 0x65, 0x20, 0x73, 0x65, 0x65, 0x6E, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x6F, 0x6E, 0x63, 
48636
  0x65, 0x20, 0x70, 0x65, 0x72, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
48637
  0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 
48638
  0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x6D, 0x75, 
48639
  0x74, 0x61, 0x74, 0x65, 0x64, 0x20, 0x64, 0x75, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x74, 0x65, 
48640
  0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x69, 
48641
  0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2C, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x72, 0x65, 0x74, 0x75, 
48642
  0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x6B, 0x65, 
48643
  0x79, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
48644
  0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 
48645
  0x65, 0x20, 0x6E, 0x6F, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x74, 
48646
  0x6F, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x75, 0x67, 
48647
  0x68, 0x2E, 0xDA, 0x8C, 0xB0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x0C, 0x85, 0x4E, 
48648
  0x01, 0xDA, 0x06, 0xDA, 0x87, 0xDF, 0xDA, 0x08, 0xCE, 0x80, 0xB1, 0x28, 0x66, 0x66, 0x69, 0x2F, 
48649
  0x63, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x73, 0x69, 0x67, 
48650
  0x6E, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 
48651
  0x43, 0x61, 0x6C, 0x6C, 0x20, 0x61, 0x20, 0x72, 0x61, 0x77, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 
48652
  0x65, 0x72, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
48653
  0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 0x75, 
48654
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x74, 0x75, 0x72, 0x65, 
48655
  0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x73, 0x20, 0x68, 0x6F, 0x77, 0x20, 0x4A, 
48656
  0x61, 0x6E, 0x65, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x60, 
48657
  0x61, 0x72, 0x67, 0x73, 0x60, 0x20, 0x61, 0x72, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x72, 
48658
  0x74, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x6D, 0x61, 
48659
  0x63, 0x68, 0x69, 0x6E, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2E, 0xDA, 0x8C, 0xB1, 0xD3, 
48660
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x02, 0x84, 0x15, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 
48661
  0xB2, 0xDA, 0x08, 0xCE, 0x80, 0xF0, 0x28, 0x61, 0x73, 0x6D, 0x20, 0x61, 0x73, 0x73, 0x65, 0x6D, 
48662
  0x62, 0x6C, 0x79, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 
48663
  0x6E, 0x65, 0x77, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x61, 
48664
  0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 
48665
  0x64, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
48666
  0x61, 0x73, 0x73, 0x65, 0x6D, 0x62, 0x6C, 0x79, 0x2E, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x73, 0x79, 
48667
  0x6E, 0x74, 0x61, 0x78, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x73, 0x73, 
48668
  0x65, 0x6D, 0x62, 0x6C, 0x79, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x66, 0x6F, 0x75, 
48669
  0x6E, 0x64, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4A, 0x61, 0x6E, 0x65, 0x74, 0x20, 
48670
  0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x68, 0x6F, 
48671
  0x75, 0x6C, 0x64, 0x20, 0x63, 0x6F, 0x72, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x0A, 0x74, 
48672
  0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x76, 0x61, 0x6C, 
48673
  0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x64, 0x69, 0x73, 0x61, 0x73, 0x6D, 0x2E, 0x20, 0x57, 0x69, 
48674
  0x6C, 0x6C, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 0x6E, 0x0A, 0x65, 0x72, 0x72, 0x6F, 
48675
  0x72, 0x20, 0x6F, 0x6E, 0x20, 0x69, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x61, 0x73, 0x73, 
48676
  0x65, 0x6D, 0x62, 0x6C, 0x79, 0x2E, 0xDA, 0x8C, 0xB3, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
48677
  0xDA, 0x18, 0x82, 0x04, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0xB4, 0xDA, 0x08, 0xCE, 0x4B, 0x28, 0x65, 
48678
  0x61, 0x63, 0x68, 0x70, 0x20, 0x78, 0x20, 0x64, 0x73, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 
48679
  0x29, 0x0A, 0x0A, 0x4C, 0x6F, 0x6F, 0x70, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x65, 0x61, 0x63, 
48680
  0x68, 0x20, 0x28, 0x6B, 0x65, 0x79, 0x2C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x20, 0x70, 
48681
  0x61, 0x69, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x64, 0x73, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 
48682
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x8C, 0xB6, 0xD3, 
48683
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x83, 0x2A, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0xB7, 
48684
  0xDA, 0x08, 0xCE, 0x23, 0x28, 0x6F, 0x6E, 0x65, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 
48685
  0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x65, 0x71, 0x75, 0x61, 
48686
  0x6C, 0x20, 0x74, 0x6F, 0x20, 0x31, 0x2E, 0xDA, 0x8C, 0xB9, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
48687
  0x00, 0xDA, 0x18, 0x85, 0x92, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0xBA, 0xDA, 0x08, 0xCE, 0x66, 0x28, 
48688
  0x65, 0x76, 0x65, 0x72, 0x79, 0x3F, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 
48689
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x69, 0x66, 0x20, 0x65, 0x61, 0x63, 
48690
  0x68, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 
48691
  0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 
48692
  0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 
48693
  0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x0A, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x79, 0x20, 0x76, 
48694
  0x61, 0x6C, 0x75, 0x65, 0x2E, 0xDA, 0x8C, 0xBE, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
48695
  0x83, 0x14, 0x82, 0x8A, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0xBF, 0xDA, 0x08, 0xCE, 0x5F, 0x28, 0x78, 
48696
  0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0x20, 0x74, 0x6F, 0x20, 0x66, 0x6D, 0x74, 0x20, 0x26, 0x20, 
48697
  0x78, 0x73, 0x29, 0x0A, 0x0A, 0x4C, 0x69, 0x6B, 0x65, 0x20, 0x60, 0x70, 0x72, 0x69, 0x6E, 0x74, 
48698
  0x66, 0x60, 0x20, 0x62, 0x75, 0x74, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x74, 0x6F, 
48699
  0x20, 0x61, 0x6E, 0x20, 0x65, 0x78, 0x70, 0x6C, 0x69, 0x63, 0x69, 0x74, 0x20, 0x66, 0x69, 0x6C, 
48700
  0x65, 0x20, 0x6F, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x60, 0x74, 0x6F, 0x60, 0x2E, 
48701
  0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x8C, 0xC0, 
48702
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 0xA9, 0x81, 0x9E, 0x01, 0xDA, 0x06, 0xDA, 
48703
  0x87, 0xDA, 0xDA, 0x08, 0xCE, 0x5C, 0x28, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x20, 0x78, 0x20, 0x26, 
48704
  0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x65, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 
48705
  0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 0x61, 0x20, 0x73, 0x75, 0x62, 0x2D, 0x72, 0x61, 
48706
  0x6E, 0x67, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 
48707
  0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 
48708
  0x20, 0x6F, 0x72, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 
48709
  0x65, 0x2E, 0xDA, 0x8C, 0xC1, 0xD3, 0x04, 0xDA, 0x84, 0x25, 0xCB, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
48710
  0xDA, 0x18, 0x8F, 0x2D, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0xC2, 0xDA, 0x08, 0xCE, 0x36, 0x50, 0x61, 
48711
  0x74, 0x68, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x66, 0x69, 
48712
  0x6C, 0x65, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x73, 
48713
  0x74, 0x61, 0x72, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x75, 0x70, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 
48714
  0x65, 0x70, 0x6C, 0x2E, 0xDA, 0x8A, 0xBD, 0xD3, 0x02, 0xDA, 0x06, 0xDA, 0x88, 0x06, 0xDA, 0x08, 
48715
  0xCE, 0x82, 0x57, 0x28, 0x70, 0x75, 0x74, 0x20, 0x64, 0x73, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x76, 
48716
  0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x41, 0x73, 0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 0x65, 
48717
  0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x76, 0x61, 
48718
  0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x6D, 0x75, 0x74, 0x61, 0x62, 
48719
  0x6C, 0x65, 0x20, 0x61, 0x73, 0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x64, 
48720
  0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0x20, 0x49, 
48721
  0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 
48722
  0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x73, 0x20, 0x61, 
48723
  0x6E, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x73, 0x29, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 
48724
  0x20, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x20, 0x6E, 0x6F, 0x6E, 0x2D, 0x6E, 0x65, 0x67, 0x61, 
48725
  0x74, 0x69, 0x76, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x6B, 0x65, 0x79, 
48726
  0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x65, 0x78, 0x70, 0x61, 
48727
  0x6E, 0x64, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x75, 0x74, 0x20, 0x6F, 0x66, 0x20, 
48728
  0x62, 0x6F, 0x75, 0x6E, 0x64, 0x73, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x73, 0x20, 
48729
  0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2E, 0x20, 0x49, 0x6E, 0x20, 0x61, 0x6E, 0x20, 
48730
  0x61, 0x72, 0x72, 0x61, 0x79, 0x2C, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 0x20, 0x73, 0x70, 0x61, 
48731
  0x63, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x6C, 0x65, 
48732
  0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6E, 0x69, 0x6C, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 
48733
  0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2C, 0x20, 0x65, 0x78, 
48734
  0x74, 0x72, 0x61, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 
48735
  0x65, 0x20, 0x66, 0x69, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x30, 0x20, 
48736
  0x62, 0x79, 0x74, 0x65, 0x73, 0x2E, 0x20, 0x49, 0x6E, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 
48737
  0x65, 0x2C, 0x20, 0x70, 0x75, 0x74, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 
48738
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 
48739
  0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 
48740
  0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x68, 
48741
  0x69, 0x64, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x73, 0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 
48742
  0x69, 0x6F, 0x6E, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 
48743
  0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x2C, 0x20, 0x62, 0x75, 
48744
  0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x6D, 0x75, 0x74, 0x61, 0x74, 
48745
  0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x20, 
48746
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x50, 0x75, 0x74, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 
48747
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 
48748
  0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x6D, 
48749
  0x6F, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x66, 0x72, 0x6F, 0x6D, 
48750
  0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
48751
  0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 
48752
  0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x64, 0x73, 0x2E, 0xDA, 0x8C, 0xC3, 0xD3, 0x03, 0xDA, 
48753
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0xB2, 0x80, 0xCD, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0xC4, 0xDA, 
48754
  0x08, 0xCE, 0x4C, 0x28, 0x69, 0x6E, 0x74, 0x2F, 0x75, 0x36, 0x34, 0x20, 0x76, 0x61, 0x6C, 0x75, 
48755
  0x65, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x62, 0x6F, 0x78, 
48756
  0x65, 0x64, 0x20, 0x75, 0x6E, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x20, 0x36, 0x34, 0x20, 0x62, 
48757
  0x69, 0x74, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 
48758
  0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0xDA, 
48759
  0x8C, 0xC5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0xFA, 0x81, 0xD6, 0x01, 0xDA, 
48760
  0x06, 0xDA, 0x8C, 0xC6, 0xDA, 0x08, 0xCE, 0x80, 0xD6, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 
48761
  0x2F, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x73, 0x65, 0x74, 0x20, 0x73, 0x65, 0x74, 0x20, 0x73, 
48762
  0x74, 0x72, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 
48763
  0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x73, 0x74, 0x72, 
48764
  0x60, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 0x20, 
48765
  0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x70, 0x70, 0x65, 0x61, 
48766
  0x72, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 
48767
  0x60, 0x73, 0x65, 0x74, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 
48768
  0x72, 0x75, 0x65, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 
48769
  0x20, 0x69, 0x6E, 0x20, 0x60, 0x73, 0x74, 0x72, 0x60, 0x20, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 
48770
  0x20, 0x69, 0x6E, 0x20, 0x60, 0x73, 0x65, 0x74, 0x60, 0x2C, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 
48771
  0x20, 0x69, 0x66, 0x20, 0x73, 0x6F, 0x6D, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x69, 
48772
  0x6E, 0x20, 0x60, 0x73, 0x74, 0x72, 0x60, 0x20, 0x64, 0x6F, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 
48773
  0x70, 0x70, 0x65, 0x61, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x73, 0x65, 0x74, 0x60, 0x2E, 0xDA, 
48774
  0x8B, 0x6B, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x88, 0x9F, 0x01, 0xDA, 0x06, 
48775
  0xDA, 0x8C, 0xC7, 0xDA, 0x08, 0xCE, 0x81, 0x01, 0x28, 0x76, 0x61, 0x72, 0x66, 0x6E, 0x20, 0x6E, 
48776
  0x61, 0x6D, 0x65, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 
48777
  0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 
48778
  0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x62, 0x6F, 0x75, 
48779
  0x6E, 0x64, 0x2E, 0x20, 0x60, 0x76, 0x61, 0x72, 0x66, 0x6E, 0x60, 0x20, 0x68, 0x61, 0x73, 0x20, 
48780
  0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x74, 0x75, 
48781
  0x72, 0x65, 0x0A, 0x61, 0x73, 0x20, 0x60, 0x64, 0x65, 0x66, 0x6E, 0x60, 0x2C, 0x20, 0x62, 0x75, 
48782
  0x74, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 
48783
  0x6F, 0x6E, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 
48784
  0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x61, 0x73, 0x20, 0x76, 0x61, 0x72, 0x73, 0x2E, 0x20, 
48785
  0x49, 0x66, 0x20, 0x61, 0x20, 0x76, 0x61, 0x72, 0x20, 0x60, 0x6E, 0x61, 0x6D, 0x65, 0x60, 0x0A, 
48786
  0x61, 0x6C, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x20, 0x69, 
48787
  0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 
48788
  0x74, 0x2C, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x62, 0x6F, 0x75, 0x6E, 0x64, 
48789
  0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x66, 0x75, 0x6E, 0x63, 
48790
  0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x0A, 0x61, 0x20, 
48791
  0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x8C, 0xD4, 0xD3, 
48792
  0x04, 0xDA, 0x84, 0x25, 0xCB, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x84, 0xC1, 0x01, 0xDA, 
48793
  0x06, 0xDA, 0x8C, 0xD5, 0xDA, 0x08, 0xCE, 0x55, 0x57, 0x68, 0x65, 0x6E, 0x20, 0x73, 0x70, 0x61, 
48794
  0x77, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x6F, 
48795
  0x72, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x73, 
48796
  0x6B, 0x2D, 0x69, 0x64, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x61, 0x73, 0x73, 0x69, 
48797
  0x67, 0x6E, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x63, 0x6F, 0x6E, 0x63, 0x75, 0x72, 0x72, 
48798
  0x65, 0x63, 0x6E, 0x79, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x72, 0x6F, 0x6C, 0x2E, 0xDA, 0x8C, 0xD6, 
48799
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x40, 0x8C, 0x39, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 
48800
  0xD7, 0xDA, 0x08, 0xCE, 0x80, 0xC8, 0x28, 0x65, 0x76, 0x2F, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0x20, 
48801
  0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x6E, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x62, 0x75, 
48802
  0x66, 0x66, 0x65, 0x72, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x29, 0x0A, 0x0A, 0x53, 
48803
  0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x65, 0x76, 0x2F, 0x72, 0x65, 0x61, 0x64, 0x2C, 0x20, 
48804
  0x62, 0x75, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x72, 0x65, 0x74, 
48805
  0x75, 0x72, 0x6E, 0x20, 0x65, 0x61, 0x72, 0x6C, 0x79, 0x20, 0x69, 0x66, 0x20, 0x6C, 0x65, 0x73, 
48806
  0x73, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x6E, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x61, 
48807
  0x72, 0x65, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x49, 0x66, 
48808
  0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 
48809
  0x6D, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64, 0x2C, 0x20, 0x77, 0x69, 
48810
  0x6C, 0x6C, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x65, 
48811
  0x61, 0x72, 0x6C, 0x79, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 
48812
  0x6C, 0x6C, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2E, 0xDA, 0x8C, 
48813
  0xD8, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 0xA9, 0x81, 0x60, 0x01, 0xDA, 0x06, 
48814
  0xDA, 0x8C, 0x7E, 0xDA, 0x08, 0xCE, 0x80, 0xB9, 0x28, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 
48815
  0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 
48816
  0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x62, 0x79, 0x20, 0x63, 0x6F, 0x6E, 
48817
  0x63, 0x61, 0x74, 0x65, 0x6E, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 
48818
  0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x78, 0x73, 0x60, 0x20, 
48819
  0x74, 0x6F, 0x67, 0x65, 0x74, 0x68, 0x65, 0x72, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x61, 0x6E, 0x20, 
48820
  0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 
48821
  0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x2C, 0x20, 
48822
  0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x20, 
48823
  0x74, 0x6F, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x76, 0x69, 0x61, 0x20, 0x60, 0x64, 0x65, 
48824
  0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
48825
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 
48826
  0x2E, 0xDA, 0x8C, 0xD9, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x12, 0x83, 0x97, 0x01, 
48827
  0xDA, 0x06, 0xDA, 0x8C, 0xDA, 0xDA, 0x08, 0xCE, 0x81, 0x3A, 0x28, 0x6E, 0x65, 0x74, 0x2F, 0x73, 
48828
  0x65, 0x74, 0x73, 0x6F, 0x63, 0x6B, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 
48829
  0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 
48830
  0x73, 0x65, 0x74, 0x20, 0x73, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 
48831
  0x6E, 0x73, 0x2E, 0x0A, 0x0A, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x20, 0x6F, 
48832
  0x70, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x73, 0x73, 0x6F, 0x63, 
48833
  0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 
48834
  0x73, 0x3A, 0x0A, 0x2D, 0x20, 0x3A, 0x73, 0x6F, 0x2D, 0x62, 0x72, 0x6F, 0x61, 0x64, 0x63, 0x61, 
48835
  0x73, 0x74, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x0A, 0x2D, 0x20, 0x3A, 0x73, 0x6F, 
48836
  0x2D, 0x72, 0x65, 0x75, 0x73, 0x65, 0x61, 0x64, 0x64, 0x72, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 
48837
  0x61, 0x6E, 0x0A, 0x2D, 0x20, 0x3A, 0x73, 0x6F, 0x2D, 0x6B, 0x65, 0x65, 0x70, 0x61, 0x6C, 0x69, 
48838
  0x76, 0x65, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x0A, 0x2D, 0x20, 0x3A, 0x69, 0x70, 
48839
  0x2D, 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x2D, 0x74, 0x74, 0x6C, 0x20, 0x6E, 
48840
  0x75, 0x6D, 0x62, 0x65, 0x72, 0x0A, 0x2D, 0x20, 0x3A, 0x69, 0x70, 0x2D, 0x61, 0x64, 0x64, 0x2D, 
48841
  0x6D, 0x65, 0x6D, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 
48842
  0x67, 0x0A, 0x2D, 0x20, 0x3A, 0x69, 0x70, 0x2D, 0x64, 0x72, 0x6F, 0x70, 0x2D, 0x6D, 0x65, 0x6D, 
48843
  0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x0A, 0x2D, 
48844
  0x20, 0x3A, 0x69, 0x70, 0x76, 0x36, 0x2D, 0x6A, 0x6F, 0x69, 0x6E, 0x2D, 0x67, 0x72, 0x6F, 0x75, 
48845
  0x70, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x0A, 0x2D, 0x20, 0x3A, 0x69, 0x70, 0x76, 0x36, 
48846
  0x2D, 0x6C, 0x65, 0x61, 0x76, 0x65, 0x2D, 0x67, 0x72, 0x6F, 0x75, 0x70, 0x20, 0x73, 0x74, 0x72, 
48847
  0x69, 0x6E, 0x67, 0x0A, 0xDA, 0x85, 0xCA, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 
48848
  0x82, 0xF8, 0x01, 0xDA, 0x06, 0xDA, 0x85, 0xC7, 0xDA, 0x08, 0xCE, 0x81, 0x3D, 0x28, 0x63, 0x6F, 
48849
  0x6D, 0x70, 0x61, 0x72, 0x65, 0x20, 0x78, 0x20, 0x79, 0x29, 0x0A, 0x0A, 0x50, 0x6F, 0x6C, 0x79, 
48850
  0x6D, 0x6F, 0x72, 0x70, 0x68, 0x69, 0x63, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x2E, 
48851
  0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x2D, 0x31, 0x2C, 0x20, 0x30, 0x2C, 0x20, 
48852
  0x31, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x78, 0x20, 0x3C, 0x20, 0x79, 0x2C, 0x20, 0x78, 0x20, 0x3D, 
48853
  0x20, 0x79, 0x2C, 0x20, 0x78, 0x20, 0x3E, 0x20, 0x79, 0x20, 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, 
48854
  0x74, 0x69, 0x76, 0x65, 0x6C, 0x79, 0x2E, 0x0A, 0x44, 0x69, 0x66, 0x66, 0x65, 0x72, 0x73, 0x20, 
48855
  0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x69, 0x6D, 0x69, 0x74, 0x69, 
48856
  0x76, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x73, 0x20, 0x69, 
48857
  0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x74, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 
48858
  0x63, 0x68, 0x65, 0x63, 0x6B, 0x73, 0x20, 0x74, 0x6F, 0x0A, 0x73, 0x65, 0x65, 0x20, 0x77, 0x68, 
48859
  0x65, 0x74, 0x68, 0x65, 0x72, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x78, 0x20, 0x6F, 
48860
  0x72, 0x20, 0x79, 0x20, 0x69, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x61, 0x20, 
48861
  0x60, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x60, 0x20, 0x6D, 0x65, 0x74, 0x68, 0x6F, 0x64, 
48862
  0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x63, 0x61, 0x6E, 0x0A, 0x63, 0x6F, 0x6D, 0x70, 0x61, 
48863
  0x72, 0x65, 0x20, 0x78, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x79, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x73, 
48864
  0x6F, 0x2C, 0x20, 0x69, 0x74, 0x20, 0x75, 0x73, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
48865
  0x6D, 0x65, 0x74, 0x68, 0x6F, 0x64, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6E, 0x6F, 0x74, 0x2C, 0x20, 
48866
  0x69, 0x74, 0x0A, 0x64, 0x65, 0x6C, 0x65, 0x67, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 
48867
  0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x69, 0x6D, 0x69, 0x74, 0x69, 0x76, 0x65, 0x20, 0x63, 0x6F, 
48868
  0x6D, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x73, 0x2E, 0xDA, 0x8C, 0xDB, 0xD3, 0x03, 0xDA, 
48869
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0x03, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0xDC, 0xDA, 0x08, 
48870
  0xCE, 0x82, 0x84, 0x28, 0x6F, 0x73, 0x2F, 0x64, 0x61, 0x74, 0x65, 0x20, 0x26, 0x6F, 0x70, 0x74, 
48871
  0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x29, 0x0A, 0x0A, 0x52, 0x65, 
48872
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 
48873
  0x74, 0x69, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x65, 0x20, 0x73, 
48874
  0x74, 0x72, 0x75, 0x63, 0x74, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 
48875
  0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x69, 0x66, 0x20, 0x60, 0x74, 
48876
  0x69, 0x6D, 0x65, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x67, 0x69, 0x76, 0x65, 
48877
  0x6E, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 
48878
  0x75, 0x63, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 
48879
  0x6E, 0x67, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 0x4E, 
48880
  0x6F, 0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 
48881
  0x62, 0x65, 0x72, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x30, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 
48882
  0x65, 0x64, 0x2E, 0x20, 0x44, 0x61, 0x74, 0x65, 0x20, 0x69, 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 
48883
  0x6E, 0x20, 0x69, 0x6E, 0x20, 0x55, 0x54, 0x43, 0x20, 0x75, 0x6E, 0x6C, 0x65, 0x73, 0x73, 0x20, 
48884
  0x60, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 
48885
  0x79, 0x2C, 0x20, 0x69, 0x6E, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x63, 0x61, 0x73, 0x65, 
48886
  0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 0x65, 0x20, 0x69, 0x73, 0x20, 0x66, 0x6F, 0x72, 
48887
  0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 
48888
  0x6F, 0x63, 0x61, 0x6C, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x7A, 0x6F, 0x6E, 0x65, 0x2E, 0x0A, 0x0A, 
48889
  0x2A, 0x20, 0x3A, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x20, 0x2D, 0x20, 0x6E, 0x75, 0x6D, 
48890
  0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x20, 0x5B, 
48891
  0x30, 0x2D, 0x36, 0x31, 0x5D, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6D, 0x69, 0x6E, 0x75, 0x74, 0x65, 
48892
  0x73, 0x20, 0x2D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x6D, 0x69, 
48893
  0x6E, 0x75, 0x74, 0x65, 0x73, 0x20, 0x5B, 0x30, 0x2D, 0x35, 0x39, 0x5D, 0x0A, 0x0A, 0x2A, 0x20, 
48894
  0x3A, 0x68, 0x6F, 0x75, 0x72, 0x73, 0x20, 0x2D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 
48895
  0x6F, 0x66, 0x20, 0x68, 0x6F, 0x75, 0x72, 0x73, 0x20, 0x5B, 0x30, 0x2D, 0x32, 0x33, 0x5D, 0x0A, 
48896
  0x0A, 0x2A, 0x20, 0x3A, 0x6D, 0x6F, 0x6E, 0x74, 0x68, 0x2D, 0x64, 0x61, 0x79, 0x20, 0x2D, 0x20, 
48897
  0x64, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x6D, 0x6F, 0x6E, 0x74, 0x68, 0x20, 0x5B, 0x30, 0x2D, 
48898
  0x33, 0x30, 0x5D, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6D, 0x6F, 0x6E, 0x74, 0x68, 0x20, 0x2D, 0x20, 
48899
  0x6D, 0x6F, 0x6E, 0x74, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x79, 0x65, 0x61, 0x72, 0x20, 0x5B, 0x30, 
48900
  0x2C, 0x20, 0x31, 0x31, 0x5D, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x79, 0x65, 0x61, 0x72, 0x20, 0x2D, 
48901
  0x20, 0x79, 0x65, 0x61, 0x72, 0x73, 0x20, 0x73, 0x69, 0x6E, 0x63, 0x65, 0x20, 0x79, 0x65, 0x61, 
48902
  0x72, 0x20, 0x30, 0x20, 0x28, 0x65, 0x2E, 0x67, 0x2E, 0x20, 0x32, 0x30, 0x31, 0x39, 0x29, 0x0A, 
48903
  0x0A, 0x2A, 0x20, 0x3A, 0x77, 0x65, 0x65, 0x6B, 0x2D, 0x64, 0x61, 0x79, 0x20, 0x2D, 0x20, 0x64, 
48904
  0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x65, 0x65, 0x6B, 0x20, 0x5B, 
48905
  0x30, 0x2D, 0x36, 0x5D, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x79, 0x65, 0x61, 0x72, 0x2D, 0x64, 0x61, 
48906
  0x79, 0x20, 0x2D, 0x20, 0x64, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x79, 
48907
  0x65, 0x61, 0x72, 0x20, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x35, 0x5D, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 
48908
  0x64, 0x73, 0x74, 0x20, 0x2D, 0x20, 0x69, 0x66, 0x20, 0x44, 0x61, 0x79, 0x20, 0x4C, 0x69, 0x67, 
48909
  0x68, 0x74, 0x20, 0x53, 0x61, 0x76, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 
48910
  0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0xDA, 0x8C, 0xDD, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
48911
  0x00, 0xDA, 0x18, 0x86, 0x6D, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0xDE, 0xDA, 0x08, 0xCE, 0x67, 0x28, 
48912
  0x69, 0x6E, 0x74, 0x65, 0x72, 0x6C, 0x65, 0x61, 0x76, 0x65, 0x20, 0x26, 0x20, 0x63, 0x6F, 0x6C, 
48913
  0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 
48914
  0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 
48915
  0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x65, 0x61, 
48916
  0x63, 0x68, 0x20, 0x63, 0x6F, 0x6C, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x6E, 0x20, 0x74, 0x68, 0x65, 
48917
  0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 
48918
  0x2C, 0x20, 0x65, 0x74, 0x63, 0x2E, 0xDA, 0x8C, 0xE7, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
48919
  0xDA, 0x84, 0xAE, 0x83, 0xB4, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0xE8, 0xDA, 0x08, 0xCE, 0x80, 0xF2, 
48920
  0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x69, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x20, 0x70, 
48921
  0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x49, 0x6E, 
48922
  0x73, 0x65, 0x72, 0x74, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x74, 
48923
  0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 
48924
  0x69, 0x73, 0x20, 0x6D, 0x65, 0x61, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 
48925
  0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x63, 
48926
  0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x6D, 0x61, 0x6E, 0x69, 0x70, 0x75, 0x6C, 0x61, 0x74, 0x65, 
48927
  0x64, 0x20, 0x69, 0x6E, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6E, 0x20, 0x63, 0x68, 0x75, 
48928
  0x6E, 0x6B, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2E, 0x20, 0x54, 0x68, 
48929
  0x69, 0x73, 0x20, 0x77, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x61, 
48930
  0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x64, 0x64, 0x20, 0x65, 0x78, 0x74, 
48931
  0x72, 0x61, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x61, 
48932
  0x72, 0x72, 0x61, 0x79, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x73, 
48933
  0x2C, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, 0x78, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x2E, 0x20, 0x52, 
48934
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 
48935
  0x72, 0x2E, 0xDA, 0x8C, 0xE9, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 0xA9, 0x81, 
48936
  0x55, 0x01, 0xDA, 0x06, 0xDA, 0x86, 0xCA, 0xDA, 0x08, 0xCE, 0x80, 0xB6, 0x28, 0x73, 0x79, 0x6D, 
48937
  0x62, 0x6F, 0x6C, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 
48938
  0x65, 0x73, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x62, 0x79, 0x20, 0x63, 
48939
  0x6F, 0x6E, 0x63, 0x61, 0x74, 0x65, 0x6E, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 
48940
  0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x78, 0x73, 
48941
  0x60, 0x20, 0x74, 0x6F, 0x67, 0x65, 0x74, 0x68, 0x65, 0x72, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x61, 
48942
  0x6E, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 
48943
  0x20, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 
48944
  0x2C, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x65, 
48945
  0x64, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x76, 0x69, 0x61, 0x20, 0x60, 
48946
  0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
48947
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 
48948
  0x6C, 0x2E, 0xDA, 0x8C, 0xEA, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 
48949
  0x1E, 0x01, 0xDA, 0x06, 0xDA, 0x86, 0x4E, 0xDA, 0x08, 0xCE, 0x51, 0x28, 0x6D, 0x61, 0x74, 0x68, 
48950
  0x2F, 0x63, 0x65, 0x69, 0x6C, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
48951
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6D, 0x61, 0x6C, 0x6C, 0x65, 0x73, 0x74, 0x20, 0x69, 
48952
  0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6E, 0x75, 0x6D, 
48953
  0x62, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 
48954
  0x6C, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x78, 0x2E, 0xCF, 0x08, 0x6D, 0x61, 
48955
  0x74, 0x68, 0x2F, 0x6E, 0x61, 0x6E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 
48956
  0x81, 0xA4, 0x01, 0xDA, 0x06, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x7F, 0xDA, 0x08, 
48957
  0xCE, 0x1B, 0x4E, 0x6F, 0x74, 0x20, 0x61, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x28, 
48958
  0x49, 0x45, 0x45, 0x45, 0x2D, 0x37, 0x35, 0x34, 0x20, 0x4E, 0x61, 0x4E, 0x29, 0xDA, 0x87, 0x75, 
48959
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x86, 0xA2, 0x01, 0xDA, 0x06, 0xDA, 0x87, 
48960
  0x72, 0xDA, 0x08, 0xCE, 0x69, 0x28, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x70, 0x6F, 0x73, 0x65, 0x20, 
48961
  0x73, 0x65, 0x70, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
48962
  0x73, 0x20, 0x61, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 
48963
  0x74, 0x68, 0x65, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 
48964
  0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 
48965
  0x62, 0x79, 0x0A, 0x60, 0x73, 0x65, 0x70, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
48966
  0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x8C, 
48967
  0xEB, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 0x22, 0x01, 0xDA, 0x06, 
48968
  0xDA, 0x8C, 0xEC, 0xDA, 0x08, 0xCE, 0x55, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 
48969
  0x31, 0x70, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x28, 
48970
  0x6C, 0x6F, 0x67, 0x20, 0x62, 0x61, 0x73, 0x65, 0x20, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x29, 
48971
  0x20, 0x2B, 0x20, 0x31, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x61, 0x63, 0x63, 0x75, 0x72, 0x61, 
48972
  0x74, 0x65, 0x6C, 0x79, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x28, 0x2B, 0x20, 0x28, 0x6D, 0x61, 
48973
  0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0x20, 0x78, 0x29, 0x20, 0x31, 0x29, 0xDA, 0x8C, 0xED, 0xD3, 
48974
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x83, 0x40, 0x81, 0xA9, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 
48975
  0xEE, 0xDA, 0x08, 0xCE, 0x5B, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x62, 0x69, 0x74, 
48976
  0x2D, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x6E, 
48977
  0x64, 0x65, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x6C, 0x65, 0x61, 0x72, 0x73, 0x20, 0x74, 0x68, 0x65, 
48978
  0x20, 0x62, 0x69, 0x74, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 
48979
  0x6E, 0x20, 0x62, 0x69, 0x74, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x2E, 0x20, 0x52, 0x65, 0x74, 
48980
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 
48981
  0xCF, 0x06, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
48982
  0x82, 0x9A, 0x81, 0x96, 0x01, 0xDA, 0x06, 0xC8, 0x69, 0x57, 0x14, 0x8B, 0x0A, 0xBF, 0x05, 0x40, 
48983
  0xDA, 0x08, 0xCE, 0x1C, 0x54, 0x68, 0x65, 0x20, 0x62, 0x61, 0x73, 0x65, 0x20, 0x6F, 0x66, 0x20, 
48984
  0x74, 0x68, 0x65, 0x20, 0x6E, 0x61, 0x74, 0x75, 0x72, 0x61, 0x6C, 0x20, 0x6C, 0x6F, 0x67, 0x2E, 
48985
  0xDA, 0x8C, 0xEF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 0x46, 0x80, 0xE9, 0x01, 
48986
  0xDA, 0x06, 0xDA, 0x8C, 0xF0, 0xDA, 0x08, 0xCE, 0x80, 0x9C, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 
48987
  0x2F, 0x75, 0x6E, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 
48988
  0x6C, 0x69, 0x6E, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x29, 0x0A, 0x0A, 0x52, 0x65, 
48989
  0x6D, 0x6F, 0x76, 0x65, 0x20, 0x61, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 
48990
  0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 
48991
  0x6B, 0x65, 0x79, 0x20, 0x61, 0x74, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x6C, 
48992
  0x69, 0x6E, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x2E, 0x20, 
48993
  0x57, 0x69, 0x6C, 0x6C, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 
48994
  0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 
48995
  0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 
48996
  0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2E, 0xDA, 0x8C, 0xF1, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
48997
  0xDA, 0x18, 0x8A, 0x70, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x94, 0xDA, 0x08, 0xCE, 0x80, 0x8D, 0x41, 
48998
  0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x63, 
48999
  0x6F, 0x6D, 0x62, 0x69, 0x6E, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 
49000
  0x60, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x6D, 0x61, 0x72, 
49001
  0x73, 0x68, 0x61, 0x6C, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x28, 0x69, 0x6D, 0x61, 0x67, 0x65, 
49002
  0x73, 0x29, 0x2C, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x74, 0x68, 0x61, 0x74, 0x0A, 0x60, 0x28, 
49003
  0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x20, 0x78, 0x29, 0x60, 0x20, 0x69, 
49004
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x28, 
49005
  0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x20, 0x78, 0x20, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x69, 
49006
  0x6D, 0x61, 0x67, 0x65, 0x2D, 0x64, 0x69, 0x63, 0x74, 0x29, 0x60, 0x2E, 0xDA, 0x8C, 0xF2, 0xD3, 
49007
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0x84, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0xF3, 
49008
  0xDA, 0x08, 0xCE, 0x81, 0x3C, 0x28, 0x6F, 0x73, 0x2F, 0x77, 0x68, 0x69, 0x63, 0x68, 0x29, 0x0A, 
49009
  0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 
49010
  0x6E, 0x74, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x79, 0x73, 
49011
  0x74, 0x65, 0x6D, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6F, 0x6E, 0x65, 
49012
  0x20, 0x6F, 0x66, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x77, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 
49013
  0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6D, 0x69, 0x6E, 0x67, 0x77, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x63, 
49014
  0x79, 0x67, 0x77, 0x69, 0x6E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6D, 0x61, 0x63, 0x6F, 0x73, 0x0A, 
49015
  0x0A, 0x2A, 0x20, 0x3A, 0x77, 0x65, 0x62, 0x20, 0x2D, 0x20, 0x57, 0x65, 0x62, 0x20, 0x61, 0x73, 
49016
  0x73, 0x65, 0x6D, 0x62, 0x6C, 0x79, 0x20, 0x28, 0x65, 0x6D, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 
49017
  0x65, 0x6E, 0x29, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6C, 0x69, 0x6E, 0x75, 0x78, 0x0A, 0x0A, 0x2A, 
49018
  0x20, 0x3A, 0x66, 0x72, 0x65, 0x65, 0x62, 0x73, 0x64, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6F, 0x70, 
49019
  0x65, 0x6E, 0x62, 0x73, 0x64, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 0x65, 0x74, 0x62, 0x73, 0x64, 
49020
  0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x64, 0x72, 0x61, 0x67, 0x6F, 0x6E, 0x66, 0x6C, 0x79, 0x0A, 0x0A, 
49021
  0x2A, 0x20, 0x3A, 0x62, 0x73, 0x64, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x70, 0x6F, 0x73, 0x69, 0x78, 
49022
  0x20, 0x2D, 0x20, 0x41, 0x20, 0x50, 0x4F, 0x53, 0x49, 0x58, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 
49023
  0x74, 0x69, 0x62, 0x6C, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x28, 0x64, 0x65, 
49024
  0x66, 0x61, 0x75, 0x6C, 0x74, 0x29, 0x0A, 0x0A, 0x4D, 0x61, 0x79, 0x20, 0x61, 0x6C, 0x73, 0x6F, 
49025
  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6F, 0x6D, 
49026
  0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 
49027
  0x65, 0x64, 0x20, 0x61, 0x74, 0x20, 0x62, 0x75, 0x69, 0x6C, 0x64, 0x20, 0x74, 0x69, 0x6D, 0x65, 
49028
  0x2E, 0xDA, 0x8C, 0xF4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x85, 0x6F, 0x80, 0xE6, 
49029
  0x01, 0xDA, 0x06, 0xDA, 0x82, 0xE6, 0xDA, 0x08, 0xCE, 0x81, 0x41, 0x28, 0x61, 0x72, 0x72, 0x61, 
49030
  0x79, 0x2F, 0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74, 0x20, 0x61, 0x72, 0x72, 0x20, 0x26, 0x20, 0x70, 
49031
  0x61, 0x72, 0x74, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x6F, 0x6E, 0x63, 0x61, 0x74, 0x65, 0x6E, 0x61, 
49032
  0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6E, 
49033
  0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x73, 0x20, 
49034
  0x28, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x73, 0x29, 0x20, 0x69, 0x6E, 0x74, 
49035
  0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x61, 0x72, 0x67, 0x75, 
49036
  0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x6D, 0x75, 0x73, 0x74, 
49037
  0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x20, 0x49, 0x66, 
49038
  0x20, 0x61, 0x6E, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x74, 
49039
  0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x73, 0x20, 0x6F, 0x72, 0x20, 
49040
  0x74, 0x75, 0x70, 0x6C, 0x65, 0x73, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x65, 0x6C, 
49041
  0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x69, 
49042
  0x6E, 0x73, 0x65, 0x72, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 
49043
  0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x20, 0x4F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 
49044
  0x65, 0x2C, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x70, 0x61, 0x72, 0x74, 0x20, 0x69, 0x6E, 0x20, 
49045
  0x60, 0x70, 0x61, 0x72, 0x74, 0x73, 0x60, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 
49046
  0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x61, 0x72, 0x72, 
49047
  0x60, 0x20, 0x69, 0x6E, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
49048
  0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 
49049
  0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x60, 0x61, 0x72, 0x72, 0x60, 0x2E, 0xDA, 0x87, 0xE2, 0xD3, 
49050
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8E, 0x9D, 0x03, 0xDA, 0x06, 0xDA, 0x8C, 0xF5, 
49051
  0xDA, 0x08, 0xCE, 0x80, 0xB6, 0x28, 0x66, 0x66, 0x69, 0x2F, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 
49052
  0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2D, 0x70, 0x61, 
49053
  0x74, 0x68, 0x20, 0x26, 0x6E, 0x61, 0x6D, 0x65, 0x64, 0x20, 0x6D, 0x61, 0x70, 0x2D, 0x73, 0x79, 
49054
  0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x20, 0x6C, 0x61, 0x7A, 0x79, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 
49055
  0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 
49056
  0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x6C, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 
49057
  0x20, 0x74, 0x6F, 0x20, 0x69, 0x6D, 0x70, 0x6C, 0x69, 0x63, 0x74, 0x6C, 0x79, 0x20, 0x62, 0x69, 
49058
  0x6E, 0x64, 0x2C, 0x20, 0x61, 0x73, 0x20, 0x77, 0x65, 0x6C, 0x6C, 0x20, 0x20, 0x20, 0x20, 0x20, 
49059
  0x61, 0x73, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x67, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x20, 
49060
  0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, 0x61, 0x73, 0x65, 0x20, 0x6F, 
49061
  0x66, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 
49062
  0x65, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x2E, 0xDA, 0x8C, 0xFD, 0xD3, 0x03, 
49063
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8F, 0x33, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0xFE, 0xDA, 
49064
  0x08, 0xCE, 0x80, 0xA1, 0x28, 0x63, 0x6C, 0x69, 0x2D, 0x6D, 0x61, 0x69, 0x6E, 0x20, 0x61, 0x72, 
49065
  0x67, 0x73, 0x29, 0x0A, 0x0A, 0x45, 0x6E, 0x74, 0x72, 0x61, 0x6E, 0x63, 0x65, 0x20, 0x66, 0x6F, 
49066
  0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x43, 0x4C, 0x49, 0x20, 
49067
  0x74, 0x6F, 0x6F, 0x6C, 0x2E, 0x20, 0x43, 0x61, 0x6C, 0x6C, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 
49068
  0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 
49069
  0x65, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x0A, 0x61, 
49070
  0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 
49071
  0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x72, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x6F, 0x66, 
49072
  0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6E, 0x76, 0x6F, 
49073
  0x6B, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x4C, 0x49, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 
49074
  0x66, 0x61, 0x63, 0x65, 0x2E, 0xDA, 0x8D, 0x57, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
49075
  0x82, 0x9A, 0x81, 0x33, 0x01, 0xDA, 0x06, 0xDA, 0x8D, 0x58, 0xDA, 0x08, 0xCE, 0x3E, 0x28, 0x6D, 
49076
  0x61, 0x74, 0x68, 0x2F, 0x68, 0x79, 0x70, 0x6F, 0x74, 0x20, 0x61, 0x20, 0x62, 0x29, 0x0A, 0x0A, 
49077
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x63, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 
49078
  0x68, 0x65, 0x20, 0x65, 0x71, 0x75, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, 0x5E, 0x32, 0x20, 
49079
  0x3D, 0x20, 0x61, 0x5E, 0x32, 0x20, 0x2B, 0x20, 0x62, 0x5E, 0x32, 0x2E, 0xDA, 0x8D, 0x59, 0xD3, 
49080
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x88, 0x38, 0x01, 0xDA, 0x06, 0xDA, 0x87, 0x69, 
49081
  0xDA, 0x08, 0xCE, 0x83, 0xB1, 0x28, 0x6F, 0x73, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x20, 0x70, 0x61, 
49082
  0x74, 0x68, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x74, 0x61, 0x62, 0x7C, 0x6B, 0x65, 0x79, 0x29, 
49083
  0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 
49084
  0x6F, 0x6E, 0x20, 0x61, 0x62, 0x6F, 0x75, 0x74, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 
49085
  0x6F, 0x72, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x2E, 0x20, 0x52, 0x65, 
49086
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x69, 0x66, 
49087
  0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x20, 0x61, 0x72, 0x67, 0x75, 
49088
  0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 
49089
  0x64, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 
49090
  0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 
49091
  0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x73, 0x74, 0x61, 0x74, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x74, 
49092
  0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 
49093
  0x74, 0x6F, 0x72, 0x79, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x65, 0x78, 
49094
  0x69, 0x73, 0x74, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 
49095
  0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x61, 0x72, 0x65, 0x3A, 0x0A, 
49096
  0x0A, 0x2A, 0x20, 0x3A, 0x64, 0x65, 0x76, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 
49097
  0x76, 0x69, 0x63, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 
49098
  0x6C, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x6E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6D, 0x6F, 0x64, 
49099
  0x65, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6F, 0x66, 0x20, 
49100
  0x66, 0x69, 0x6C, 0x65, 0x2C, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x3A, 0x66, 0x69, 
49101
  0x6C, 0x65, 0x2C, 0x20, 0x3A, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x2C, 0x20, 
49102
  0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x2C, 0x20, 0x3A, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 
49103
  0x65, 0x72, 0x2C, 0x20, 0x3A, 0x66, 0x69, 0x66, 0x6F, 0x2C, 0x20, 0x3A, 0x73, 0x6F, 0x63, 0x6B, 
49104
  0x65, 0x74, 0x2C, 0x20, 0x3A, 0x6C, 0x69, 0x6E, 0x6B, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x3A, 0x6F, 
49105
  0x74, 0x68, 0x65, 0x72, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x69, 0x6E, 0x74, 0x2D, 0x70, 0x65, 0x72, 
49106
  0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x2D, 0x20, 0x41, 0x20, 0x55, 0x6E, 0x69, 
49107
  0x78, 0x20, 0x70, 0x65, 0x72, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x6E, 0x74, 
49108
  0x65, 0x67, 0x65, 0x72, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x38, 0x72, 0x37, 0x34, 0x34, 0x0A, 
49109
  0x0A, 0x2A, 0x20, 0x3A, 0x70, 0x65, 0x72, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0x20, 
49110
  0x2D, 0x20, 0x41, 0x20, 0x55, 0x6E, 0x69, 0x78, 0x20, 0x70, 0x65, 0x72, 0x6D, 0x69, 0x73, 0x73, 
49111
  0x69, 0x6F, 0x6E, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 
49112
  0x22, 0x72, 0x77, 0x78, 0x72, 0x2D, 0x2D, 0x72, 0x2D, 0x2D, 0x22, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 
49113
  0x75, 0x69, 0x64, 0x20, 0x2D, 0x20, 0x46, 0x69, 0x6C, 0x65, 0x20, 0x75, 0x69, 0x64, 0x0A, 0x0A, 
49114
  0x2A, 0x20, 0x3A, 0x67, 0x69, 0x64, 0x20, 0x2D, 0x20, 0x46, 0x69, 0x6C, 0x65, 0x20, 0x67, 0x69, 
49115
  0x64, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 0x6C, 0x69, 0x6E, 0x6B, 0x20, 0x2D, 0x20, 0x6E, 0x75, 
49116
  0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x6C, 0x69, 0x6E, 0x6B, 0x73, 0x20, 0x74, 0x6F, 
49117
  0x20, 0x66, 0x69, 0x6C, 0x65, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x72, 0x64, 0x65, 0x76, 0x20, 0x2D, 
49118
  0x20, 0x52, 0x65, 0x61, 0x6C, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 
49119
  0x66, 0x69, 0x6C, 0x65, 0x2E, 0x20, 0x30, 0x20, 0x6F, 0x6E, 0x20, 0x57, 0x69, 0x6E, 0x64, 0x6F, 
49120
  0x77, 0x73, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x2D, 0x20, 0x73, 0x69, 
49121
  0x7A, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x62, 0x79, 
49122
  0x74, 0x65, 0x73, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x73, 0x20, 0x2D, 
49123
  0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 
49124
  0x73, 0x20, 0x69, 0x6E, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x20, 0x30, 0x20, 0x6F, 0x6E, 0x20, 
49125
  0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 
49126
  0x6B, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x2D, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x6F, 0x66, 0x20, 
49127
  0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x20, 
49128
  0x30, 0x20, 0x6F, 0x6E, 0x20, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x0A, 0x0A, 0x2A, 0x20, 
49129
  0x3A, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x20, 0x2D, 0x20, 0x74, 0x69, 0x6D, 0x65, 
49130
  0x73, 0x74, 0x61, 0x6D, 0x70, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 
49131
  0x6C, 0x61, 0x73, 0x74, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x0A, 0x0A, 0x2A, 
49132
  0x20, 0x3A, 0x63, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x64, 0x20, 0x2D, 0x20, 0x74, 0x69, 0x6D, 0x65, 
49133
  0x73, 0x74, 0x61, 0x6D, 0x70, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 
49134
  0x6C, 0x61, 0x73, 0x74, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x64, 0x20, 0x28, 0x70, 0x65, 
49135
  0x72, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x67, 0x65, 
49136
  0x64, 0x29, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 
49137
  0x2D, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x73, 0x74, 0x61, 0x6D, 0x70, 0x20, 0x77, 0x68, 0x65, 0x6E, 
49138
  0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 
49139
  0x69, 0x65, 0x64, 0x20, 0x28, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x20, 0x63, 0x68, 0x61, 
49140
  0x6E, 0x67, 0x65, 0x64, 0x29, 0x0A, 0xDA, 0x8D, 0x5A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
49141
  0xDA, 0x82, 0xFA, 0x81, 0x61, 0x01, 0xDA, 0x06, 0xDA, 0x8D, 0x5B, 0xDA, 0x08, 0xCE, 0x81, 0x1F, 
49142
  0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x2D, 0x61, 0x6C, 0x6C, 
49143
  0x20, 0x70, 0x61, 0x74, 0x74, 0x20, 0x73, 0x74, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 
49144
  0x74, 0x61, 0x72, 0x74, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x61, 
49145
  0x72, 0x63, 0x68, 0x65, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 
49146
  0x73, 0x74, 0x61, 0x6E, 0x63, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 
49147
  0x72, 0x6E, 0x20, 0x60, 0x70, 0x61, 0x74, 0x74, 0x60, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x74, 0x72, 
49148
  0x69, 0x6E, 0x67, 0x20, 0x60, 0x73, 0x74, 0x72, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
49149
  0x6E, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x61, 
49150
  0x6C, 0x6C, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x66, 0x6F, 
49151
  0x75, 0x6E, 0x64, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x73, 0x2E, 0x20, 0x4F, 0x76, 
49152
  0x65, 0x72, 0x6C, 0x61, 0x70, 0x70, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6E, 
49153
  0x63, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 
49154
  0x72, 0x6E, 0x20, 0x61, 0x72, 0x65, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x65, 0x64, 0x20, 0x69, 
49155
  0x6E, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6C, 0x6C, 0x79, 0x2C, 0x20, 0x6D, 0x65, 0x61, 
49156
  0x6E, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x60, 
49157
  0x73, 0x74, 0x72, 0x60, 0x20, 0x6D, 0x61, 0x79, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x72, 0x69, 0x62, 
49158
  0x75, 0x74, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 0x20, 
49159
  0x66, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x73, 0x2E, 0xDA, 
49160
  0x8D, 0x5C, 0xD3, 0x02, 0xDA, 0x06, 0xDA, 0x82, 0xB0, 0xDA, 0x08, 0xCE, 0x81, 0x62, 0x28, 0x72, 
49161
  0x65, 0x73, 0x75, 0x6D, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 
49162
  0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 
49163
  0x77, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x20, 0x66, 
49164
  0x69, 0x62, 0x65, 0x72, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 
49165
  0x6C, 0x6C, 0x79, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x76, 0x61, 
49166
  0x6C, 0x75, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 
49167
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 
49168
  0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 
49169
  0x73, 0x74, 0x20, 0x79, 0x69, 0x65, 0x6C, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
49170
  0x63, 0x61, 0x73, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 
49171
  0x67, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 
49172
  0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 
49173
  0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
49174
  0x6E, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x6F, 0x66, 
49175
  0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 
49176
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 
49177
  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x6F, 
49178
  0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x27, 0x73, 0x20, 0x64, 0x69, 
49179
  0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 
49180
  0x20, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x66, 0x72, 
49181
  0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x79, 0x69, 0x65, 0x6C, 
49182
  0x64, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 
49183
  0xDA, 0x8D, 0x5D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x40, 0x8C, 0xAD, 0x01, 0xDA, 
49184
  0x06, 0xDA, 0x8D, 0x5E, 0xDA, 0x08, 0xCE, 0x43, 0x28, 0x65, 0x76, 0x2F, 0x72, 0x65, 0x6C, 0x65, 
49185
  0x61, 0x73, 0x65, 0x2D, 0x72, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x72, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 
49186
  0x29, 0x0A, 0x0A, 0x52, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 
49187
  0x64, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x64, 
49188
  0x2D, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0xDA, 0x85, 0xE5, 0xD3, 0x03, 
49189
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x82, 0xCE, 0x01, 0xDA, 0x06, 0xDA, 0x85, 0xE3, 0xDA, 
49190
  0x08, 0xCE, 0x4A, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x66, 
49191
  0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 
49192
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 
49193
  0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 
49194
  0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x80, 0xBD, 
49195
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8B, 0x2B, 0x01, 0xDA, 0x06, 0xDA, 0x80, 
49196
  0xB8, 0xDA, 0x08, 0xCE, 0x81, 0x15, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x72, 0x2D, 
49197
  0x6F, 0x6E, 0x2D, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x65, 0x6E, 0x76, 0x20, 0x26, 0x6F, 
49198
  0x70, 0x74, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x69, 0x73, 0x2D, 0x72, 0x65, 0x70, 0x6C, 
49199
  0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 
49200
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 
49201
  0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x72, 0x75, 0x6E, 0x2D, 
49202
  0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x60, 0x27, 0x73, 0x20, 0x60, 0x3A, 0x6F, 0x6E, 0x2D, 
49203
  0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x60, 0x20, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 
49204
  0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x64, 0x72, 0x6F, 0x70, 
49205
  0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x72, 
49206
  0x20, 0x6F, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 
49207
  0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x72, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x20, 0x6F, 
49208
  0x6E, 0x6C, 0x79, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x62, 0x6E, 
49209
  0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x20, 0x69, 0x66, 
49210
  0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x76, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x68, 
49211
  0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x3A, 0x64, 0x65, 0x62, 0x75, 0x67, 0x60, 0x20, 
49212
  0x64, 0x79, 0x6E, 0x20, 0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x74, 0x72, 
49213
  0x75, 0x74, 0x68, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0xDA, 0x88, 0x41, 0xD3, 0x03, 
49214
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x86, 0x3B, 0x01, 0xDA, 0x06, 0xDA, 0x88, 0x3F, 0xDA, 
49215
  0x08, 0xCE, 0x44, 0x28, 0x70, 0x61, 0x69, 0x72, 0x73, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x47, 0x65, 
49216
  0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
49217
  0x70, 0x61, 0x69, 0x72, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x73, 0x73, 0x6F, 
49218
  0x63, 0x69, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 
49219
  0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0xDA, 0x8D, 0x5F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
49220
  0x00, 0xDA, 0x18, 0x6E, 0x01, 0xDA, 0x06, 0xDA, 0x8D, 0x60, 0xDA, 0x08, 0xCE, 0x21, 0x28, 0x73, 
49221
  0x74, 0x72, 0x75, 0x63, 0x74, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 
49222
  0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2E, 0xDA, 
49223
  0x8D, 0x62, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x83, 0xF0, 0x01, 0xDA, 0x06, 
49224
  0xDA, 0x8D, 0x63, 0xDA, 0x08, 0xCE, 0x81, 0x15, 0x28, 0x6B, 0x65, 0x65, 0x70, 0x20, 0x70, 0x72, 
49225
  0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 0x20, 0x26, 0x20, 0x69, 0x6E, 0x64, 0x73, 0x29, 0x0A, 0x0A, 
49226
  0x47, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 
49227
  0x65, 0x20, 0x60, 0x70, 0x72, 0x65, 0x64, 0x60, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 
49228
  0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x63, 0x6F, 0x6E, 
49229
  0x74, 0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x72, 0x75, 0x74, 
49230
  0x68, 0x79, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x73, 0x0A, 0x6F, 0x66, 0x20, 0x61, 0x70, 
49231
  0x70, 0x6C, 0x79, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x70, 0x72, 0x65, 0x64, 0x60, 0x20, 0x74, 0x6F, 
49232
  0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x6E, 
49233
  0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x63, 0x6F, 0x6C, 
49234
  0x6C, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x2E, 0x20, 0x54, 
49235
  0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x0A, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x74, 
49236
  0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x60, 0x66, 0x69, 0x6C, 0x74, 0x65, 0x72, 0x60, 0x20, 0x77, 
49237
  0x68, 0x69, 0x63, 0x68, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x20, 
49238
  0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x72, 0x69, 
49239
  0x67, 0x69, 0x6E, 0x61, 0x6C, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x77, 
49240
  0x68, 0x65, 0x72, 0x65, 0x0A, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 
49241
  0x74, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2E, 0xDA, 0x8D, 0x73, 
49242
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 0xA9, 0x82, 0x37, 0x01, 0xDA, 0x06, 0xDA, 
49243
  0x82, 0x46, 0xDA, 0x08, 0xCE, 0x81, 0x1C, 0x28, 0x67, 0x65, 0x74, 0x6C, 0x69, 0x6E, 0x65, 0x20, 
49244
  0x26, 0x6F, 0x70, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x6D, 0x70, 0x74, 0x20, 0x62, 0x75, 0x66, 0x20, 
49245
  0x65, 0x6E, 0x76, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x61, 0x64, 0x73, 0x20, 0x61, 0x20, 0x6C, 0x69, 
49246
  0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x69, 0x6E, 0x70, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x74, 0x6F, 
49247
  0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2C, 0x20, 0x69, 0x6E, 0x63, 0x6C, 0x75, 
49248
  0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x6C, 0x69, 0x6E, 0x65, 
49249
  0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x2C, 0x20, 0x75, 0x73, 0x69, 0x6E, 
49250
  0x67, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6F, 0x6D, 0x70, 0x74, 0x2E, 0x20, 0x41, 0x6E, 0x20, 0x6F, 
49251
  0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 
49252
  0x65, 0x6E, 0x74, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 
49253
  0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x75, 
49254
  0x74, 0x6F, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 
49255
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 
49256
  0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 
49257
  0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x69, 
49258
  0x6D, 0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6D, 0x70, 0x6C, 
49259
  0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 
49260
  0x61, 0x20, 0x74, 0x65, 0x72, 0x6D, 0x69, 0x6E, 0x61, 0x6C, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 
49261
  0x61, 0x6D, 0x2E, 0xDA, 0x8D, 0x74, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0xA0, 
49262
  0x63, 0x01, 0xDA, 0x06, 0xDA, 0x82, 0x73, 0xDA, 0x08, 0xCE, 0x71, 0x28, 0x74, 0x75, 0x70, 0x6C, 
49263
  0x65, 0x2F, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x6D, 0x61, 0x70, 0x20, 0x74, 0x75, 0x70, 0x29, 
49264
  0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6F, 
49265
  0x75, 0x72, 0x63, 0x65, 0x6D, 0x61, 0x70, 0x20, 0x6D, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 
49266
  0x20, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x74, 
49267
  0x75, 0x70, 0x6C, 0x65, 0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 0x61, 
49268
  0x6E, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x28, 0x6C, 0x69, 
49269
  0x6E, 0x65, 0x2C, 0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x29, 0x2E, 0xDA, 0x8D, 0x75, 0xD3, 
49270
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x83, 0x40, 0x81, 0x27, 0x01, 0xDA, 0x06, 0xDA, 0x84, 
49271
  0x5A, 0xDA, 0x08, 0xCE, 0x80, 0xD5, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 
49272
  0x73, 0x68, 0x2D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
49273
  0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x50, 0x75, 0x73, 0x68, 0x20, 0x62, 0x79, 0x74, 
49274
  0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x73, 0x20, 0x6F, 0x6E, 0x74, 0x6F, 
49275
  0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x62, 0x75, 
49276
  0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x61, 0x63, 0x63, 0x65, 0x70, 
49277
  0x74, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x73, 
49278
  0x2C, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x2C, 0x20, 0x73, 0x79, 0x6D, 0x62, 
49279
  0x6F, 0x6C, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x73, 
49280
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 
49281
  0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x57, 
49282
  0x69, 0x6C, 0x6C, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 
49283
  0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
49284
  0x20, 0x6F, 0x76, 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x73, 0x2E, 0xDA, 0x8D, 0x76, 0xD3, 0x03, 
49285
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 0xA9, 0x7B, 0x01, 0xDA, 0x06, 0xDA, 0x87, 0x65, 0xDA, 
49286
  0x08, 0xCE, 0x83, 0x15, 0x28, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x65, 0x78, 0x70, 0x61, 
49287
  0x6E, 0x64, 0x2D, 0x70, 0x61, 0x74, 0x68, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x74, 0x65, 0x6D, 
49288
  0x70, 0x6C, 0x61, 0x74, 0x65, 0x29, 0x0A, 0x0A, 0x45, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x73, 0x20, 
49289
  0x61, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0x20, 
49290
  0x61, 0x73, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x6D, 0x6F, 0x64, 
49291
  0x75, 0x6C, 0x65, 0x2F, 0x70, 0x61, 0x74, 0x68, 0x73, 0x60, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 
49292
  0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x60, 0x2E, 0x20, 0x54, 0x68, 
49293
  0x69, 0x73, 0x20, 0x74, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x70, 0x61, 
49294
  0x74, 0x68, 0x20, 0x28, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 
49295
  0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x29, 0x20, 0x61, 0x6E, 0x64, 
49296
  0x20, 0x61, 0x20, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 
49297
  0x6E, 0x67, 0x2C, 0x20, 0x74, 0x6F, 0x20, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 
49298
  0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x70, 0x61, 0x74, 0x68, 
49299
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 
49300
  0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x69, 0x6E, 0x67, 0x20, 
49301
  0x66, 0x69, 0x6C, 0x65, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 
49302
  0x63, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x73, 0x20, 0x66, 
49303
  0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x73, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 
49304
  0x20, 0x2D, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 
49305
  0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x76, 0x65, 0x72, 0x62, 0x61, 0x74, 0x69, 0x6D, 0x2E, 0x0A, 
49306
  0x0A, 0x2A, 0x20, 0x3A, 0x40, 0x61, 0x6C, 0x6C, 0x3A, 0x20, 0x2D, 0x2D, 0x20, 0x53, 0x61, 0x6D, 
49307
  0x65, 0x20, 0x61, 0x73, 0x20, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 
49308
  0x69, 0x66, 0x20, 0x60, 0x70, 0x61, 0x74, 0x68, 0x60, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 
49309
  0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x40, 0x20, 0x63, 0x68, 0x61, 0x72, 
49310
  0x61, 0x63, 0x74, 0x65, 0x72, 0x2C, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
49311
  0x20, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x70, 0x61, 0x74, 0x68, 
49312
  0x20, 0x73, 0x65, 0x67, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x70, 0x6C, 
49313
  0x61, 0x63, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x64, 0x79, 0x6E, 0x61, 
49314
  0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x0A, 0x20, 0x20, 0x20, 0x20, 
49315
  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x3C, 0x66, 0x69, 
49316
  0x72, 0x73, 0x74, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x73, 0x65, 0x67, 0x6D, 0x65, 0x6E, 0x74, 
49317
  0x20, 0x61, 0x73, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x3E, 0x29, 0x60, 0x2E, 0x0A, 
49318
  0x0A, 0x2A, 0x20, 0x3A, 0x63, 0x75, 0x72, 0x3A, 0x20, 0x2D, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 
49319
  0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2C, 0x20, 0x6F, 0x72, 
49320
  0x20, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x3A, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x2D, 0x66, 
49321
  0x69, 0x6C, 0x65, 0x29, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x64, 0x69, 0x72, 0x3A, 0x20, 0x2D, 0x2D, 
49322
  0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x63, 
49323
  0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 
49324
  0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 
49325
  0x61, 0x6D, 0x65, 0x3A, 0x20, 0x2D, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 
49326
  0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6F, 0x6E, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x70, 0x61, 
49327
  0x74, 0x68, 0x2C, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x65, 0x78, 0x74, 0x65, 0x6E, 0x73, 0x69, 
49328
  0x6F, 0x6E, 0x20, 0x69, 0x66, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 
49329
  0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x3A, 0x20, 0x2D, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 
49330
  0x78, 0x74, 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 
49331
  0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x2C, 0x20, 0x2E, 
49332
  0x73, 0x6F, 0x20, 0x6F, 0x72, 0x20, 0x2E, 0x64, 0x6C, 0x6C, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 
49333
  0x79, 0x73, 0x3A, 0x20, 0x2D, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 
49334
  0x6D, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x28, 0x64, 0x79, 0x6E, 0x20, 
49335
  0x3A, 0x73, 0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 0x29, 0xDA, 0x8D, 0x77, 0xD3, 0x03, 0xDA, 0x03, 
49336
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0xAD, 0x01, 0xDA, 0x06, 0xDA, 0x8D, 0x78, 0xDA, 0x08, 0xCE, 
49337
  0x30, 0x28, 0x6F, 0x73, 0x2F, 0x63, 0x77, 0x64, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 
49338
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x77, 
49339
  0x6F, 0x72, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 
49340
  0x2E, 0xDA, 0x8B, 0x76, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8B, 0x40, 0x01, 
49341
  0xDA, 0x06, 0xDA, 0x8B, 0x7D, 0xDA, 0x08, 0xCE, 0x81, 0x69, 0x28, 0x64, 0x6F, 0x66, 0x69, 0x6C, 
49342
  0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x26, 0x6E, 0x61, 0x6D, 0x65, 0x64, 0x20, 0x65, 0x78, 
49343
  0x69, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x65, 0x78, 
49344
  0x70, 0x61, 0x6E, 0x64, 0x65, 0x72, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x6F, 0x72, 
49345
  0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x45, 
49346
  0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2C, 0x20, 
49347
  0x66, 0x69, 0x6C, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x74, 
49348
  0x72, 0x65, 0x61, 0x6D, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 
49349
  0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x6E, 
49350
  0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x3A, 0x65, 0x6E, 0x76, 0x2C, 
49351
  0x20, 0x3A, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x65, 0x72, 0x2C, 0x0A, 0x3A, 0x73, 0x6F, 0x75, 
49352
  0x72, 0x63, 0x65, 0x2C, 0x20, 0x3A, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x6F, 0x72, 0x2C, 
49353
  0x20, 0x3A, 0x72, 0x65, 0x61, 0x64, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x3A, 0x70, 0x61, 0x72, 
49354
  0x73, 0x65, 0x72, 0x20, 0x61, 0x72, 0x65, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 
49355
  0x68, 0x72, 0x6F, 0x75, 0x67, 0x68, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x6E, 
49356
  0x64, 0x65, 0x72, 0x6C, 0x79, 0x69, 0x6E, 0x67, 0x0A, 0x60, 0x72, 0x75, 0x6E, 0x2D, 0x63, 0x6F, 
49357
  0x6E, 0x74, 0x65, 0x78, 0x74, 0x60, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x2E, 0x20, 0x49, 0x66, 0x20, 
49358
  0x60, 0x65, 0x78, 0x69, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2C, 0x20, 
49359
  0x61, 0x6E, 0x79, 0x20, 0x74, 0x6F, 0x70, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x65, 0x72, 
49360
  0x72, 0x6F, 0x72, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 
49361
  0x72, 0x20, 0x61, 0x0A, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x28, 0x6F, 0x73, 
49362
  0x2F, 0x65, 0x78, 0x69, 0x74, 0x20, 0x31, 0x29, 0x60, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 
49363
  0x70, 0x72, 0x69, 0x6E, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x72, 0x72, 
49364
  0x6F, 0x72, 0x2E, 0xDA, 0x8D, 0x79, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 
49365
  0xFB, 0x01, 0xDA, 0x06, 0xDA, 0x8D, 0x7A, 0xDA, 0x08, 0xCE, 0x80, 0x8A, 0x28, 0x6F, 0x73, 0x2F, 
49366
  0x74, 0x6F, 0x75, 0x63, 0x68, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 
49367
  0x61, 0x63, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x74, 0x69, 0x6D, 0x65, 0x29, 0x0A, 
49368
  0x0A, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x63, 0x65, 
49369
  0x73, 0x73, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6D, 0x6F, 0x64, 0x69, 
49370
  0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x73, 0x20, 0x66, 
49371
  0x6F, 0x72, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x20, 0x42, 0x79, 0x20, 0x64, 0x65, 
49372
  0x66, 0x61, 0x75, 0x6C, 0x74, 0x2C, 0x20, 0x73, 0x65, 0x74, 0x73, 0x20, 0x74, 0x69, 0x6D, 0x65, 
49373
  0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 
49374
  0x20, 0x74, 0x69, 0x6D, 0x65, 0x2E, 0xDA, 0x8D, 0x7B, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
49375
  0xDA, 0x18, 0x82, 0x0F, 0x01, 0xDA, 0x06, 0xDA, 0x8D, 0x7C, 0xDA, 0x08, 0xCE, 0x4E, 0x28, 0x66, 
49376
  0x6F, 0x72, 0x65, 0x76, 0x65, 0x72, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 
49377
  0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x66, 0x6F, 
49378
  0x72, 0x65, 0x76, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x2C, 
49379
  0x20, 0x6F, 0x72, 0x20, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x61, 0x20, 0x62, 0x72, 0x65, 0x61, 
49380
  0x6B, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 
49381
  0x82, 0x22, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x78, 0x01, 0xDA, 0x06, 0xDA, 
49382
  0x82, 0x20, 0xDA, 0x08, 0xCE, 0x2E, 0x28, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x3F, 0x20, 
49383
  0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 
49384
  0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x72, 0x20, 0x74, 0x75, 
49385
  0x70, 0x6C, 0x65, 0x2E, 0xDA, 0x8D, 0x7E, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 
49386
  0x80, 0x9A, 0x01, 0xDA, 0x06, 0xDA, 0x8D, 0x7F, 0xDA, 0x08, 0xCE, 0x28, 0x28, 0x25, 0x3D, 0x20, 
49387
  0x78, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x53, 0x68, 0x6F, 0x72, 0x74, 0x68, 0x61, 0x6E, 0x64, 0x20, 
49388
  0x66, 0x6F, 0x72, 0x20, 0x28, 0x73, 0x65, 0x74, 0x20, 0x78, 0x20, 0x28, 0x25, 0x20, 0x78, 0x20, 
49389
  0x6E, 0x29, 0x29, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x8D, 0x81, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
49390
  0x00, 0xDA, 0x82, 0x9A, 0x81, 0x25, 0x01, 0xDA, 0x06, 0xDA, 0x8D, 0x82, 0xDA, 0x08, 0xCE, 0x29, 
49391
  0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0x2D, 0x67, 0x61, 0x6D, 0x6D, 0x61, 0x20, 
49392
  0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6C, 0x6F, 0x67, 0x2D, 
49393
  0x67, 0x61, 0x6D, 0x6D, 0x61, 0x28, 0x78, 0x29, 0x2E, 0xDA, 0x8D, 0x83, 0xD3, 0x02, 0xDA, 0x06, 
49394
  0xDA, 0x8D, 0x84, 0xDA, 0x08, 0xCE, 0x34, 0x28, 0x62, 0x6E, 0x6F, 0x74, 0x20, 0x78, 0x29, 0x0A, 
49395
  0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x69, 0x74, 
49396
  0x2D, 0x77, 0x69, 0x73, 0x65, 0x20, 0x69, 0x6E, 0x76, 0x65, 0x72, 0x73, 0x65, 0x20, 0x6F, 0x66, 
49397
  0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x78, 0x2E, 0xDA, 0x8D, 0x86, 0xD3, 0x03, 
49398
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x85, 0x6F, 0x80, 0x80, 0x01, 0xDA, 0x06, 0xDA, 0x86, 0x4F, 
49399
  0xDA, 0x08, 0xCE, 0x80, 0xA8, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x6E, 0x65, 0x77, 0x20, 
49400
  0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 
49401
  0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x20, 0x61, 
49402
  0x72, 0x72, 0x61, 0x79, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x2D, 
49403
  0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 
49404
  0x74, 0x79, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 
49405
  0x60, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x29, 0x60, 0x20, 0x62, 0x75, 0x74, 0x20, 0x63, 0x61, 
49406
  0x6E, 0x20, 0x62, 0x65, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x65, 0x66, 0x66, 0x69, 0x63, 0x69, 
49407
  0x65, 0x6E, 0x74, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x61, 0x78, 0x69, 0x6D, 
49408
  0x75, 0x6D, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 
49409
  0x72, 0x61, 0x79, 0x20, 0x69, 0x73, 0x20, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x2E, 0xDA, 0x86, 0x6E, 
49410
  0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x82, 0x19, 0x01, 0xDA, 0x06, 0xDA, 0x8D, 
49411
  0x87, 0xDA, 0x08, 0xCE, 0x88, 0xF2, 0x28, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x68, 0x65, 0x61, 0x64, 
49412
  0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x41, 0x20, 0x67, 0x65, 0x6E, 0x65, 
49413
  0x72, 0x61, 0x6C, 0x20, 0x70, 0x75, 0x72, 0x70, 0x6F, 0x73, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 
49414
  0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x6D, 0x61, 0x63, 
49415
  0x72, 0x6F, 0x20, 0x69, 0x73, 0x20, 0x73, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 
49416
  0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x20, 0x4C, 0x69, 0x73, 0x70, 
49417
  0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x0A, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2C, 0x20, 0x61, 0x6C, 0x74, 
49418
  0x68, 0x6F, 0x75, 0x67, 0x68, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x69, 0x6F, 0x6E, 0x61, 
49419
  0x6C, 0x6C, 0x79, 0x20, 0x6D, 0x75, 0x63, 0x68, 0x20, 0x73, 0x6D, 0x61, 0x6C, 0x6C, 0x65, 0x72, 
49420
  0x20, 0x69, 0x6E, 0x20, 0x73, 0x63, 0x6F, 0x70, 0x65, 0x2E, 0x20, 0x20, 0x54, 0x68, 0x65, 0x20, 
49421
  0x68, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 
49422
  0x0A, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 
49423
  0x6C, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 
49424
  0x20, 0x61, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x65, 
49425
  0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x6F, 
49426
  0x72, 0x0A, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x73, 0x2E, 0x20, 
49427
  0x41, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 
49428
  0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 
49429
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, 0x65, 0x66, 
49430
  0x69, 0x6E, 0x65, 0x20, 0x73, 0x6F, 0x6D, 0x65, 0x74, 0x68, 0x69, 0x6E, 0x67, 0x0A, 0x74, 0x6F, 
49431
  0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x2E, 0x20, 0x42, 0x69, 0x6E, 0x64, 
49432
  0x69, 0x6E, 0x67, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6E, 
49433
  0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x3A, 0x0A, 
49434
  0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x3A, 0x76, 0x65, 
49435
  0x72, 0x62, 0x20, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x2F, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 
49436
  0x73, 0x69, 0x6F, 0x6E, 0x0A, 0x0A, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x60, 0x62, 0x69, 0x6E, 
49437
  0x64, 0x69, 0x6E, 0x67, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 
49438
  0x6E, 0x67, 0x20, 0x61, 0x73, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 
49439
  0x64, 0x65, 0x66, 0x2C, 0x20, 0x60, 0x3A, 0x76, 0x65, 0x72, 0x62, 0x60, 0x20, 0x69, 0x73, 0x20, 
49440
  0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x73, 0x65, 0x74, 0x20, 0x6F, 0x66, 0x0A, 
49441
  0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x6F, 
49442
  0x62, 0x6A, 0x65, 0x63, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x65, 0x78, 
49443
  0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x73, 
49444
  0x75, 0x62, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x74, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 
49445
  0x67, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x0A, 0x6E, 0x65, 0x73, 0x74, 
49446
  0x65, 0x64, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6E, 0x20, 0x74, 
49447
  0x68, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 
49448
  0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6F, 0x75, 0x73, 0x20, 
49449
  0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x2E, 0x0A, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x61, 0x76, 
49450
  0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x76, 0x65, 0x72, 0x62, 0x73, 0x20, 0x61, 0x72, 
49451
  0x65, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x60, 
49452
  0x20, 0x2D, 0x2D, 0x20, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x6C, 0x79, 0x20, 0x65, 
49453
  0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x62, 0x69, 0x6E, 0x64, 
49454
  0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 
49455
  0x6F, 0x6E, 0x20, 0x77, 0x68, 0x69, 0x6C, 0x65, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x0A, 0x20, 
49456
  0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x72, 0x61, 
49457
  0x6E, 0x67, 0x65, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x6F, 0x76, 0x65, 
49458
  0x72, 0x20, 0x61, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6F, 
49459
  0x62, 0x6A, 0x65, 0x63, 0x74, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 
49460
  0x61, 0x20, 0x74, 0x77, 0x6F, 0x2D, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x75, 
49461
  0x70, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x0A, 0x20, 0x20, 0x61, 0x20, 0x73, 0x74, 0x61, 
49462
  0x72, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
49463
  0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 
49464
  0x6C, 0x20, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x20, 0x73, 0x74, 0x65, 0x70, 0x2E, 
49465
  0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x69, 0x73, 0x20, 0x68, 0x61, 
49466
  0x6C, 0x66, 0x0A, 0x20, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x2C, 0x20, 0x5B, 0x73, 0x74, 0x61, 0x72, 
49467
  0x74, 0x2C, 0x20, 0x65, 0x6E, 0x64, 0x29, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x72, 0x61, 
49468
  0x6E, 0x67, 0x65, 0x2D, 0x74, 0x6F, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 
49469
  0x61, 0x73, 0x20, 0x3A, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x74, 
49470
  0x68, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x63, 0x6C, 
49471
  0x75, 0x73, 0x69, 0x76, 0x65, 0x20, 0x5B, 0x73, 0x74, 0x61, 0x72, 0x74, 0x2C, 0x20, 0x65, 0x6E, 
49472
  0x64, 0x5D, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x64, 0x6F, 0x77, 0x6E, 0x60, 0x20, 0x2D, 
49473
  0x2D, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x61, 0x20, 0x72, 0x61, 
49474
  0x6E, 0x67, 0x65, 0x2C, 0x20, 0x73, 0x74, 0x65, 0x70, 0x70, 0x69, 0x6E, 0x67, 0x20, 0x64, 0x6F, 
49475
  0x77, 0x6E, 0x77, 0x61, 0x72, 0x64, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6F, 0x62, 0x6A, 
49476
  0x65, 0x63, 0x74, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x61, 0x0A, 
49477
  0x20, 0x20, 0x74, 0x77, 0x6F, 0x2D, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x75, 
49478
  0x70, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 
49479
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x28, 0x65, 0x78, 0x63, 0x6C, 0x75, 0x73, 0x69, 0x76, 0x65, 0x29, 
49480
  0x20, 0x65, 0x6E, 0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 
49481
  0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x0A, 0x20, 0x20, 0x28, 0x70, 
49482
  0x6F, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x21, 0x29, 0x20, 0x73, 0x74, 0x65, 0x70, 0x20, 0x73, 
49483
  0x69, 0x7A, 0x65, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x64, 0x6F, 0x77, 0x6E, 0x2D, 0x74, 
49484
  0x6F, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x3A, 0x64, 
49485
  0x6F, 0x77, 0x6E, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x61, 0x6E, 
49486
  0x67, 0x65, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x73, 0x69, 0x76, 0x65, 0x20, 
49487
  0x5B, 0x73, 0x74, 0x61, 0x72, 0x74, 0x2C, 0x20, 0x65, 0x6E, 0x64, 0x5D, 0x2E, 0x0A, 0x0A, 0x2A, 
49488
  0x20, 0x60, 0x3A, 0x6B, 0x65, 0x79, 0x73, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x69, 0x74, 0x65, 0x72, 
49489
  0x61, 0x74, 0x65, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 
49490
  0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 
49491
  0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x70, 0x61, 0x69, 0x72, 
49492
  0x73, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x6F, 0x76, 
49493
  0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 
49494
  0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x20, 0x61, 0x73, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x73, 
49495
  0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 
49496
  0x74, 0x75, 0x72, 0x65, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x69, 0x6E, 0x60, 0x20, 0x2D, 
49497
  0x2D, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x74, 
49498
  0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x64, 
49499
  0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x6F, 0x72, 
49500
  0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x0A, 0x0A, 0x60, 0x6C, 0x6F, 0x6F, 0x70, 0x60, 0x20, 
49501
  0x61, 0x6C, 0x73, 0x6F, 0x20, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x20, 0x63, 0x6F, 0x6E, 
49502
  0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x66, 
49503
  0x69, 0x6E, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x69, 0x6E, 0x67, 0x20, 
49504
  0x66, 0x75, 0x72, 0x74, 0x68, 0x65, 0x72, 0x2E, 0x20, 0x43, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 
49505
  0x6F, 0x6E, 0x61, 0x6C, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6F, 0x66, 0x0A, 0x74, 0x68, 0x65, 
49506
  0x20, 0x66, 0x6F, 0x72, 0x6D, 0x3A, 0x0A, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x6D, 0x6F, 0x64, 
49507
  0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x0A, 0x0A, 
49508
  0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x60, 0x3A, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 
49509
  0x60, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x73, 0x65, 
49510
  0x74, 0x20, 0x6F, 0x66, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x2C, 0x20, 0x61, 
49511
  0x6E, 0x64, 0x20, 0x60, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x60, 0x20, 0x69, 0x73, 
49512
  0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x2D, 0x64, 0x65, 0x70, 0x65, 0x6E, 0x64, 0x65, 
49513
  0x6E, 0x74, 0x2E, 0x0A, 0x60, 0x3A, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x60, 0x20, 
49514
  0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x3A, 0x0A, 0x0A, 
49515
  0x2A, 0x20, 0x60, 0x3A, 0x77, 0x68, 0x69, 0x6C, 0x65, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 
49516
  0x73, 0x69, 0x6F, 0x6E, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x73, 0x20, 
49517
  0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 
49518
  0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x69, 0x66, 0x20, 0x60, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 
49519
  0x73, 0x69, 0x6F, 0x6E, 0x60, 0x20, 0x69, 0x73, 0x0A, 0x20, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 
49520
  0x79, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x65, 0x78, 
49521
  0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x62, 0x72, 0x65, 
49522
  0x61, 0x6B, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 
49523
  0x72, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x69, 0x66, 0x20, 0x60, 0x65, 0x78, 
49524
  0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x60, 0x20, 0x69, 0x73, 0x0A, 0x20, 0x20, 0x74, 
49525
  0x72, 0x75, 0x74, 0x68, 0x79, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x6C, 0x65, 0x74, 0x20, 
49526
  0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x64, 0x65, 0x66, 
49527
  0x69, 0x6E, 0x65, 0x73, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x69, 0x6E, 
49528
  0x73, 0x69, 0x64, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 
49529
  0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x61, 0x73, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 
49530
  0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x20, 0x20, 0x60, 0x6C, 0x65, 0x74, 0x60, 0x20, 0x6D, 
49531
  0x61, 0x63, 0x72, 0x6F, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x62, 0x65, 0x66, 0x6F, 0x72, 
49532
  0x65, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 
49533
  0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x66, 0x6F, 0x72, 0x20, 
49534
  0x61, 0x20, 0x73, 0x69, 0x64, 0x65, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x20, 0x62, 0x65, 
49535
  0x66, 0x6F, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x69, 0x6E, 
49536
  0x6E, 0x65, 0x72, 0x0A, 0x20, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 
49537
  0x3A, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x60, 0x20, 0x2D, 0x2D, 0x20, 
49538
  0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x3A, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 
49539
  0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x64, 0x65, 0x20, 
49540
  0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x20, 0x68, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x73, 0x20, 0x61, 
49541
  0x66, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x20, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 
49542
  0x69, 0x6E, 0x6E, 0x65, 0x72, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 
49543
  0x3A, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x20, 0x6E, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x72, 0x65, 
49544
  0x70, 0x65, 0x61, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x69, 
49545
  0x6E, 0x6E, 0x65, 0x72, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x74, 0x69, 
49546
  0x6D, 0x65, 0x73, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x63, 
49547
  0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x6F, 0x6E, 0x6C, 
49548
  0x79, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
49549
  0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x62, 0x6F, 0x64, 
49550
  0x79, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x60, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 
49551
  0x6E, 0x60, 0x0A, 0x20, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2E, 0x0A, 0x0A, 0x54, 
49552
  0x68, 0x65, 0x20, 0x60, 0x6C, 0x6F, 0x6F, 0x70, 0x60, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x20, 
49553
  0x61, 0x6C, 0x77, 0x61, 0x79, 0x73, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 
49554
  0x20, 0x74, 0x6F, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x8D, 0xAC, 0xD3, 0x03, 
49555
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x82, 0x8B, 0x01, 0xDA, 0x06, 0xDA, 0x8D, 0xAD, 0xDA, 
49556
  0x08, 0xCE, 0x39, 0x28, 0x6D, 0x65, 0x61, 0x6E, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 
49557
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x65, 0x61, 0x6E, 0x20, 0x6F, 
49558
  0x66, 0x20, 0x78, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2C, 0x20, 
49559
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x4E, 0x61, 0x4E, 0x2E, 0xDA, 0x8D, 0xAF, 0xD3, 
49560
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 0x0F, 0x01, 0xDA, 0x06, 0xDA, 0x8D, 
49561
  0xB0, 0xDA, 0x08, 0xCE, 0x36, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x63, 0x6F, 0x73, 0x68, 
49562
  0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
49563
  0x20, 0x68, 0x79, 0x70, 0x65, 0x72, 0x62, 0x6F, 0x6C, 0x69, 0x63, 0x20, 0x61, 0x72, 0x63, 0x63, 
49564
  0x6F, 0x73, 0x69, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x8D, 0xB1, 0xD3, 0x03, 
49565
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0xA5, 0x81, 0x61, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0x48, 
49566
  0xDA, 0x08, 0xCE, 0x74, 0x28, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x63, 0x6C, 0x6F, 0x6E, 0x65, 
49567
  0x20, 0x74, 0x61, 0x62, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 
49568
  0x63, 0x6F, 0x70, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 
49569
  0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 
49570
  0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 
49571
  0x6F, 0x74, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x6C, 
49572
  0x64, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x76, 0x69, 0x63, 
49573
  0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x61, 0x2E, 0xDA, 0x8D, 0xB2, 0xD3, 0x04, 0xDA, 0x84, 0x25, 
49574
  0xCB, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x84, 0xB9, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0x7D, 
49575
  0xDA, 0x08, 0xCE, 0x80, 0x87, 0x4F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x6E, 0x61, 
49576
  0x6D, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x20, 0x74, 
49577
  0x6F, 0x20, 0x61, 0x64, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 
49578
  0x73, 0x20, 0x64, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 
49579
  0x60, 0x64, 0x65, 0x66, 0x64, 0x79, 0x6E, 0x60, 0x2E, 0x0A, 0x20, 0x20, 0x55, 0x73, 0x65, 0x20, 
49580
  0x74, 0x68, 0x69, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 
49581
  0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x63, 0x6F, 0x6C, 0x6C, 0x69, 0x73, 0x69, 0x6F, 
49582
  0x6E, 0x73, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6E, 0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 
49583
  0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x2E, 0xDA, 0x8D, 0xB3, 0xD3, 
49584
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x69, 0x01, 0xDA, 0x06, 0xDA, 0x8D, 0xB4, 0xDA, 
49585
  0x08, 0xCE, 0x24, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 
49586
  0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 
49587
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x8D, 0xB6, 0xD3, 0x02, 0xDA, 0x06, 0xDA, 0x00, 
49588
  0xDA, 0x08, 0xCE, 0x41, 0x54, 0x68, 0x65, 0x20, 0x72, 0x6F, 0x6F, 0x74, 0x20, 0x65, 0x6E, 0x76, 
49589
  0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 
49590
  0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 
49591
  0x65, 0x6E, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x28, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 
49592
  0x65, 0x6E, 0x76, 0x29, 0x2E, 0xDA, 0x8B, 0x75, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
49593
  0x18, 0x8B, 0xC4, 0x01, 0xDA, 0x06, 0xDA, 0x8D, 0xB7, 0xDA, 0x08, 0xCE, 0x82, 0x2E, 0x28, 0x69, 
49594
  0x6D, 0x70, 0x6F, 0x72, 0x74, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 
49595
  0x73, 0x29, 0x0A, 0x0A, 0x49, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x20, 0x61, 0x20, 0x6D, 0x6F, 0x64, 
49596
  0x75, 0x6C, 0x65, 0x2E, 0x20, 0x46, 0x69, 0x72, 0x73, 0x74, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 
49597
  0x72, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2C, 0x20, 
49598
  0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x6E, 0x20, 0x6D, 0x65, 0x72, 0x67, 0x65, 0x73, 0x20, 
49599
  0x69, 0x74, 0x73, 0x0A, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 
49600
  0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x65, 0x6E, 0x76, 
49601
  0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x70, 0x72, 0x65, 0x70, 0x65, 0x6E, 
49602
  0x64, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x70, 0x72, 0x65, 
49603
  0x66, 0x69, 0x78, 0x20, 0x61, 0x73, 0x20, 0x6E, 0x65, 0x65, 0x64, 0x65, 0x64, 0x2E, 0x0A, 0x28, 
49604
  0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x3A, 0x61, 0x73, 0x20, 0x6F, 0x72, 0x20, 0x3A, 
49605
  0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 
49606
  0x20, 0x73, 0x65, 0x74, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x29, 0x2E, 0x20, 
49607
  0x49, 0x66, 0x20, 0x6E, 0x6F, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x20, 0x69, 0x73, 0x20, 
49608
  0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x0A, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 
49609
  0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 
49610
  0x64, 0x75, 0x6C, 0x65, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 
49611
  0x2E, 0x20, 0x4F, 0x6E, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x75, 
49612
  0x73, 0x65, 0x20, 0x22, 0x60, 0x3A, 0x65, 0x78, 0x70, 0x6F, 0x72, 0x74, 0x20, 0x74, 0x72, 0x75, 
49613
  0x65, 0x60, 0x22, 0x0A, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x2D, 0x65, 0x78, 0x70, 0x6F, 0x72, 0x74, 
49614
  0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x20, 0x73, 0x79, 
49615
  0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x22, 0x60, 0x3A, 0x65, 0x78, 0x69, 
49616
  0x74, 0x20, 0x74, 0x72, 0x75, 0x65, 0x60, 0x22, 0x20, 0x69, 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 
49617
  0x6E, 0x20, 0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 
49618
  0x2C, 0x0A, 0x61, 0x6E, 0x79, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x20, 0x65, 0x6E, 0x63, 
49619
  0x6F, 0x75, 0x6E, 0x74, 0x65, 0x72, 0x65, 0x64, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 
49620
  0x74, 0x6F, 0x70, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 
49621
  0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x63, 0x61, 0x75, 
49622
  0x73, 0x65, 0x20, 0x60, 0x28, 0x6F, 0x73, 0x2F, 0x65, 0x78, 0x69, 0x74, 0x20, 0x31, 0x29, 0x60, 
49623
  0x0A, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x2E, 0x20, 0x44, 
49624
  0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 
49625
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x4E, 0x4F, 0x54, 0x20, 0x62, 0x65, 0x20, 0x69, 0x6D, 0x70, 0x6F, 
49626
  0x72, 0x74, 0x65, 0x64, 0x2E, 0x20, 0x55, 0x73, 0x65, 0x20, 0x3A, 0x66, 0x72, 0x65, 0x73, 0x68, 
49627
  0x20, 0x74, 0x6F, 0x20, 0x62, 0x79, 0x70, 0x61, 0x73, 0x73, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x6D, 
49628
  0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 
49629
  0x8D, 0xBA, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x88, 0x47, 0x01, 0xDA, 0x06, 
49630
  0xDA, 0x8D, 0xBB, 0xDA, 0x08, 0xCE, 0x81, 0x9E, 0x28, 0x6F, 0x73, 0x2F, 0x63, 0x68, 0x6D, 0x6F, 
49631
  0x64, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x29, 0x0A, 0x0A, 0x43, 0x68, 
49632
  0x61, 0x6E, 0x67, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x70, 0x65, 0x72, 0x6D, 0x69, 0x73, 
49633
  0x73, 0x69, 0x6F, 0x6E, 0x73, 0x2C, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x60, 0x6D, 0x6F, 
49634
  0x64, 0x65, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x70, 0x65, 0x72, 0x6D, 0x69, 0x73, 0x73, 
49635
  0x69, 0x6F, 0x6E, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x73, 0x20, 0x72, 0x65, 
49636
  0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x60, 0x6F, 0x73, 0x2F, 0x70, 0x65, 
49637
  0x72, 0x6D, 0x2D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x60, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x61, 
49638
  0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x61, 0x73, 0x20, 0x72, 0x65, 0x74, 
49639
  0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x60, 0x6F, 0x73, 0x2F, 0x70, 0x65, 0x72, 
49640
  0x6D, 0x2D, 0x69, 0x6E, 0x74, 0x60, 0x2E, 0x20, 0x57, 0x68, 0x65, 0x6E, 0x20, 0x60, 0x6D, 0x6F, 
49641
  0x64, 0x65, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 
49642
  0x72, 0x2C, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x70, 0x72, 
49643
  0x65, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x55, 0x6E, 0x69, 0x78, 0x20, 0x70, 
49644
  0x65, 0x72, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2C, 
49645
  0x20, 0x62, 0x65, 0x73, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 
49646
  0x69, 0x6E, 0x20, 0x6F, 0x63, 0x74, 0x61, 0x6C, 0x2C, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x38, 
49647
  0x72, 0x36, 0x36, 0x36, 0x20, 0x6F, 0x72, 0x20, 0x38, 0x72, 0x34, 0x30, 0x30, 0x2E, 0x20, 0x57, 
49648
  0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 
49649
  0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x74, 0x69, 0x61, 0x74, 0x65, 0x20, 0x62, 0x65, 
49650
  0x74, 0x77, 0x65, 0x65, 0x6E, 0x20, 0x75, 0x73, 0x65, 0x72, 0x2C, 0x20, 0x67, 0x72, 0x6F, 0x75, 
49651
  0x70, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x70, 0x65, 0x72, 
49652
  0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 
49653
  0x75, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x63, 0x6F, 0x6D, 0x62, 0x69, 0x6E, 0x65, 0x20, 
49654
  0x61, 0x6C, 0x6C, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x20, 0x70, 0x65, 0x72, 
49655
  0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
49656
  0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x8C, 0xCC, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
49657
  0xDA, 0x18, 0x85, 0xF6, 0x01, 0xDA, 0x06, 0xDA, 0x8C, 0xCA, 0xDA, 0x08, 0xCE, 0x80, 0xCD, 0x28, 
49658
  0x70, 0x75, 0x74, 0x2D, 0x69, 0x6E, 0x20, 0x64, 0x73, 0x20, 0x6B, 0x73, 0x20, 0x76, 0x29, 0x0A, 
49659
  0x0A, 0x50, 0x75, 0x74, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x74, 
49660
  0x6F, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 
49661
  0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x60, 0x64, 0x73, 0x60, 0x2E, 0x20, 
49662
  0x4C, 0x6F, 0x6F, 0x6B, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x60, 0x64, 0x73, 0x60, 0x20, 
49663
  0x76, 0x69, 0x61, 0x0A, 0x61, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6F, 
49664
  0x66, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x2E, 0x20, 0x4D, 0x69, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 
49665
  0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 
49666
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x64, 
49667
  0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x2E, 0x20, 0x52, 0x65, 
49668
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x0A, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 
49669
  0x65, 0x64, 0x2C, 0x20, 0x6F, 0x72, 0x69, 0x67, 0x69, 0x6E, 0x61, 0x6C, 0x20, 0x64, 0x61, 0x74, 
49670
  0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0xDA, 0x81, 0x8F, 0xD3, 
49671
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x83, 0xCE, 0x01, 0xDA, 0x06, 0xDA, 0x81, 0x8A, 
49672
  0xDA, 0x08, 0xCE, 0x6B, 0x28, 0x6D, 0x61, 0x70, 0x20, 0x66, 0x20, 0x69, 0x6E, 0x64, 0x20, 0x26, 
49673
  0x20, 0x69, 0x6E, 0x64, 0x73, 0x29, 0x0A, 0x0A, 0x4D, 0x61, 0x70, 0x20, 0x61, 0x20, 0x66, 0x75, 
49674
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x65, 0x76, 0x65, 0x72, 
49675
  0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 
49676
  0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x0A, 
49677
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 
49678
  0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x73, 0x2E, 0xDA, 
49679
  0x8D, 0xBC, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x80, 0xF7, 0x01, 0xDA, 0x06, 
49680
  0xDA, 0x8D, 0xBD, 0xDA, 0x08, 0xCE, 0x81, 0x48, 0x28, 0x74, 0x72, 0x79, 0x20, 0x62, 0x6F, 0x64, 
49681
  0x79, 0x20, 0x63, 0x61, 0x74, 0x63, 0x68, 0x29, 0x0A, 0x0A, 0x54, 0x72, 0x79, 0x20, 0x73, 0x6F, 
49682
  0x6D, 0x65, 0x74, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x61, 0x74, 0x63, 
49683
  0x68, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x2E, 0x20, 0x60, 0x62, 0x6F, 0x64, 0x79, 0x60, 
49684
  0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 
49685
  0x6F, 0x6E, 0x2C, 0x0A, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x63, 0x61, 0x74, 0x63, 0x68, 0x60, 0x20, 
49686
  0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x66, 0x6F, 0x72, 0x6D, 
49687
  0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 
49688
  0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 
49689
  0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x74, 0x75, 
49690
  0x70, 0x6C, 0x65, 0x0A, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 
49691
  0x69, 0x6E, 0x20, 0x61, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x6F, 0x72, 
49692
  0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x6E, 0x20, 0x6F, 
49693
  0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 
49694
  0x66, 0x6F, 0x72, 0x0A, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x77, 0x72, 
49695
  0x61, 0x70, 0x70, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x2E, 
49696
  0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 
49697
  0x75, 0x6C, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x62, 0x6F, 0x64, 0x79, 0x60, 0x20, 0x69, 0x66, 
49698
  0x20, 0x6E, 0x6F, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2C, 0x0A, 0x6F, 0x72, 0x20, 0x74, 0x68, 
49699
  0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x63, 0x61, 0x74, 
49700
  0x63, 0x68, 0x60, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 
49701
  0xDA, 0x3D, 0xCB, 0xDA, 0x8D, 0xC0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x40, 0x8C, 
49702
  0x17, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0x1B, 0xDA, 0x08, 0xCE, 0x66, 0x28, 0x65, 0x76, 0x2F, 0x63, 
49703
  0x6C, 0x6F, 0x73, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x29, 0x0A, 0x0A, 0x43, 0x6C, 
49704
  0x6F, 0x73, 0x65, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0x20, 0x54, 0x68, 
49705
  0x69, 0x73, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x74, 0x68, 0x65, 
49706
  0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 
49707
  0x20, 0x28, 0x3A, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x29, 
49708
  0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x73, 
49709
  0x2E, 0xDA, 0x8D, 0xC1, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x85, 0x56, 0x01, 
49710
  0xDA, 0x06, 0xDA, 0x8D, 0xC2, 0xDA, 0x08, 0xCE, 0x80, 0xA1, 0x28, 0x61, 0x73, 0x2D, 0x3E, 0x20, 
49711
  0x78, 0x20, 0x61, 0x73, 0x20, 0x26, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x29, 0x0A, 0x0A, 0x54, 
49712
  0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x20, 0x74, 0x6F, 0x67, 0x65, 
49713
  0x74, 0x68, 0x65, 0x72, 0x2C, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x69, 0x6E, 0x67, 0x20, 
49714
  0x60, 0x61, 0x73, 0x60, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x60, 0x20, 
49715
  0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x0A, 0x6F, 
49716
  0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6F, 0x75, 0x73, 0x20, 0x66, 
49717
  0x6F, 0x72, 0x6D, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 
49718
  0x6F, 0x72, 0x6D, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
49719
  0x20, 0x78, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x0A, 
49720
  0x6C, 0x61, 0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x85, 
49721
  0x3C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x82, 0xDC, 0x01, 0xDA, 0x06, 0xDA, 
49722
  0x85, 0x38, 0xDA, 0x08, 0xCE, 0x3B, 0x28, 0x6D, 0x61, 0x78, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 
49723
  0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
49724
  0x6E, 0x75, 0x6D, 0x65, 0x72, 0x69, 0x63, 0x20, 0x6D, 0x61, 0x78, 0x69, 0x6D, 0x75, 0x6D, 0x20, 
49725
  0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 
49726
  0x2E, 0xDA, 0x8D, 0xC6, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x83, 0x40, 0x81, 0xB4, 
49727
  0x01, 0xDA, 0x06, 0xDA, 0x8D, 0xC7, 0xDA, 0x08, 0xCE, 0x6D, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 
49728
  0x72, 0x2F, 0x62, 0x69, 0x74, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x64, 
49729
  0x65, 0x78, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x69, 
49730
  0x74, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x62, 
49731
  0x69, 0x74, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
49732
  0x73, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x69, 
49733
  0x74, 0x20, 0x69, 0x73, 0x20, 0x73, 0x65, 0x74, 0x2C, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 
49734
  0x69, 0x66, 0x20, 0x6E, 0x6F, 0x74, 0x2E, 0xDA, 0x8D, 0xC8, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 
49735
  0x00, 0xDA, 0x18, 0x82, 0x7F, 0x01, 0xDA, 0x06, 0xDA, 0x8D, 0xC9, 0xDA, 0x08, 0xCE, 0x60, 0x28, 
49736
  0x66, 0x69, 0x62, 0x65, 0x72, 0x2D, 0x66, 0x6E, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x26, 
49737
  0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x41, 0x20, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 
49738
  0x72, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6D, 0x61, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x69, 0x62, 
49739
  0x65, 0x72, 0x73, 0x2E, 0x20, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x28, 0x66, 
49740
  0x69, 0x62, 0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 0x20, 0x28, 0x66, 0x6E, 0x20, 0x5B, 0x5D, 0x20, 
49741
  0x3B, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x29, 0x60, 0x2E, 0xDA, 
49742
  0x3D, 0xCB, 0xDA, 0x8D, 0xCC, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x86, 0xA9, 0x82, 
49743
  0x52, 0x01, 0xDA, 0x06, 0xDA, 0x8D, 0xCD, 0xDA, 0x08, 0xCE, 0x41, 0x28, 0x74, 0x72, 0x61, 0x63, 
49744
  0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x29, 0x0A, 0x0A, 0x45, 0x6E, 0x61, 0x62, 0x6C, 0x65, 0x20, 
49745
  0x74, 0x72, 0x61, 0x63, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 
49746
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 
49747
  0x68, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x8D, 0xCE, 0xD3, 
49748
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x8B, 0x0B, 0x01, 0xDA, 0x06, 0xDA, 0x80, 0xD0, 
49749
  0xDA, 0x08, 0xCE, 0x42, 0x41, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 
49750
  0x6E, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 
49751
  0x20, 0x64, 0x6F, 0x74, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x64, 0x20, 0x66, 0x75, 
49752
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x64, 0x65, 0x62, 0x75, 
49753
  0x67, 0x67, 0x69, 0x6E, 0x67, 0x2E, 0xDA, 0x8D, 0xCF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
49754
  0xDA, 0x86, 0xA9, 0x81, 0x7F, 0x01, 0xDA, 0x06, 0xDA, 0x86, 0xDC, 0xDA, 0x08, 0xCE, 0x81, 0x54, 
49755
  0x28, 0x73, 0x63, 0x61, 0x6E, 0x2D, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x73, 0x74, 0x72, 
49756
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x62, 0x61, 0x73, 0x65, 0x29, 0x0A, 0x0A, 0x50, 0x61, 0x72, 
49757
  0x73, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x66, 0x72, 0x6F, 0x6D, 
49758
  0x20, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 
49759
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 
49760
  0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2C, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 
49761
  0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x20, 
49762
  0x72, 0x65, 0x61, 0x6C, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 
49763
  0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
49764
  0x73, 0x61, 0x6D, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x61, 0x73, 0x20, 0x6E, 
49765
  0x75, 0x6D, 0x62, 0x65, 0x72, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 
49766
  0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x2E, 0x20, 0x57, 0x69, 0x6C, 
49767
  0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x6F, 0x6E, 0x20, 
49768
  0x61, 0x6E, 0x20, 0x69, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 
49769
  0x72, 0x2E, 0x20, 0x4F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x70, 0x72, 
49770
  0x6F, 0x76, 0x69, 0x64, 0x65, 0x20, 0x61, 0x20, 0x62, 0x61, 0x73, 0x65, 0x20, 0x2D, 0x20, 0x69, 
49771
  0x66, 0x20, 0x61, 0x20, 0x62, 0x61, 0x73, 0x65, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x76, 
49772
  0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x6E, 0x6F, 0x20, 0x72, 0x61, 0x64, 0x69, 0x78, 0x20, 0x73, 
49773
  0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x65, 0x78, 0x70, 0x65, 
49774
  0x63, 0x74, 0x65, 0x64, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x65, 0x67, 0x69, 
49775
  0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 
49776
  0x62, 0x65, 0x72, 0x2E, 0xDA, 0x8D, 0xD0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x0C, 
49777
  0x85, 0x19, 0x01, 0xDA, 0x06, 0xDA, 0x8D, 0xD1, 0xDA, 0x08, 0xCE, 0x80, 0xCB, 0x28, 0x66, 0x66, 
49778
  0x69, 0x2F, 0x6A, 0x69, 0x74, 0x66, 0x6E, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x29, 0x0A, 0x0A, 
49779
  0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 
49780
  0x63, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 
49781
  0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
49782
  0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 
49783
  0x20, 0x74, 0x6F, 0x20, 0x60, 0x66, 0x66, 0x69, 0x2F, 0x63, 0x61, 0x6C, 0x6C, 0x60, 0x2E, 0x20, 
49784
  0x54, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 
49785
  0x62, 0x79, 0x74, 0x65, 0x73, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 
49786
  0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 
49787
  0x6D, 0x61, 0x63, 0x68, 0x69, 0x6E, 0x65, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x74, 0x68, 0x61, 
49788
  0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x63, 0x6F, 0x70, 0x69, 0x65, 0x64, 
49789
  0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6C, 0x65, 
49790
  0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x2E, 0xDA, 0x8A, 0x31, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
49791
  0x03, 0x00, 0xDA, 0x18, 0x8B, 0xB4, 0x01, 0xDA, 0x06, 0xDA, 0x8A, 0x21, 0xDA, 0x08, 0xCE, 0x80, 
49792
  0x86, 0x28, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x2A, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x26, 
49793
  0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x46, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
49794
  0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 
49795
  0x60, 0x2E, 0x20, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 0x65, 
49796
  0x72, 0x73, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 
49797
  0x0A, 0x61, 0x6E, 0x64, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 
49798
  0x6C, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 0x65, 0x72, 0x73, 0x20, 0x73, 0x68, 0x6F, 
49799
  0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x69, 
49800
  0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2E, 0xDA, 0x8D, 0xD2, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
49801
  0x00, 0xDA, 0x83, 0x14, 0x80, 0xBB, 0x01, 0xDA, 0x06, 0xDA, 0x80, 0xF7, 0xDA, 0x08, 0xCE, 0x81, 
49802
  0xAA, 0x28, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x72, 0x65, 0x61, 0x64, 0x20, 0x66, 0x20, 0x77, 0x68, 
49803
  0x61, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x62, 0x75, 0x66, 0x29, 0x0A, 0x0A, 0x52, 0x65, 
49804
  0x61, 0x64, 0x20, 0x61, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x62, 
49805
  0x79, 0x74, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 
49806
  0x20, 0x60, 0x66, 0x60, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 
49807
  0x65, 0x72, 0x2E, 0x20, 0x41, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x60, 0x62, 0x75, 
49808
  0x66, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 
49809
  0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 
49810
  0x6C, 0x20, 0x74, 0x68, 0x69, 0x72, 0x64, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 
49811
  0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 
49812
  0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x63, 0x72, 0x65, 0x61, 
49813
  0x74, 0x65, 0x64, 0x2E, 0x20, 0x60, 0x77, 0x68, 0x61, 0x74, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 
49814
  0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 
49815
  0x65, 0x67, 0x65, 0x72, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 
49816
  0x64, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 
49817
  0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 
49818
  0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0x20, 0x56, 0x61, 0x6C, 0x75, 0x65, 0x73, 
49819
  0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x77, 0x68, 0x61, 0x74, 0x60, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 
49820
  0x3A, 0x61, 0x6C, 0x6C, 0x20, 0x2D, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 
49821
  0x77, 0x68, 0x6F, 0x6C, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6C, 
49822
  0x69, 0x6E, 0x65, 0x20, 0x2D, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x75, 0x70, 0x20, 0x74, 0x6F, 
49823
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 
49824
  0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x6E, 0x65, 0x77, 0x6C, 0x69, 0x6E, 0x65, 0x20, 
49825
  0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x0A, 0x0A, 0x2A, 0x20, 0x6E, 0x20, 0x28, 
49826
  0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x29, 0x20, 0x2D, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 
49827
  0x75, 0x70, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x66, 0x72, 
49828
  0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0xDA, 0x82, 0x0C, 0xD3, 0x03, 
49829
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x89, 0x4F, 0x01, 0xDA, 0x06, 0xDA, 0x82, 0x07, 0xDA, 
49830
  0x08, 0xCE, 0x54, 0x28, 0x77, 0x61, 0x72, 0x6E, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 
49831
  0x20, 0x6D, 0x73, 0x67, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 
49832
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x29, 0x0A, 
49833
  0x0A, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 
49834
  0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x77, 
49835
  0x61, 0x72, 0x6E, 0x69, 0x6E, 0x67, 0x2E, 0xDA, 0x8D, 0xD3, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
49836
  0x00, 0xDA, 0x85, 0x6F, 0x80, 0xB5, 0x01, 0xDA, 0x06, 0xDA, 0x81, 0x8C, 0xDA, 0x08, 0xCE, 0x66, 
49837
  0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x20, 0x61, 0x72, 0x72, 0x20, 
49838
  0x78, 0x29, 0x0A, 0x0A, 0x49, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6C, 
49839
  0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 
49840
  0x20, 0x6F, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x20, 0x4D, 0x6F, 
49841
  0x64, 0x69, 0x66, 0x69, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x70, 0x75, 0x74, 
49842
  0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
49843
  0x6E, 0x73, 0x20, 0x69, 0x74, 0x2E, 0xDA, 0x8D, 0xD4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
49844
  0xDA, 0x18, 0x82, 0xBB, 0x01, 0xDA, 0x06, 0xDA, 0x8D, 0xD5, 0xDA, 0x08, 0xCE, 0x6F, 0x28, 0x63, 
49845
  0x6F, 0x6D, 0x70, 0x20, 0x26, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x29, 
49846
  0x0A, 0x0A, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 
49847
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 
49848
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
49849
  0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 
49850
  0x6D, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x0A, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x6F, 
49851
  0x73, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0xDA, 0x8B, 0x6D, 
49852
  0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x4A, 0x01, 0xDA, 0x06, 0xDA, 0x8D, 0xDA, 
49853
  0xDA, 0x08, 0xCE, 0x43, 0x28, 0x76, 0x61, 0x72, 0x2D, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x26, 
49854
  0x20, 0x6D, 0x6F, 0x72, 0x65, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x20, 0x61, 
49855
  0x20, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x76, 0x61, 0x72, 0x20, 0x74, 0x68, 0x61, 
49856
  0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x78, 
49857
  0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x81, 0xED, 0xD3, 0x03, 0xDA, 
49858
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x66, 0x01, 0xDA, 0x06, 0xDA, 0x81, 0xEB, 0xDA, 0x08, 0xCE, 
49859
  0x24, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 
49860
  0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 
49861
  0x72, 0x69, 0x6E, 0x67, 0x2E, 0xDA, 0x8D, 0xDC, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
49862
  0x18, 0x85, 0xBE, 0x01, 0xDA, 0x06, 0xDA, 0x8D, 0xDD, 0xDA, 0x08, 0xCE, 0x81, 0x07, 0x28, 0x69, 
49863
  0x6E, 0x76, 0x65, 0x72, 0x74, 0x20, 0x64, 0x73, 0x29, 0x0A, 0x0A, 0x47, 0x69, 0x76, 0x65, 0x6E, 
49864
  0x20, 0x61, 0x6E, 0x20, 0x61, 0x73, 0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 
49865
  0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x60, 
49866
  0x64, 0x73, 0x60, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 
49867
  0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 
49868
  0x68, 0x65, 0x0A, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x64, 0x73, 0x60, 0x20, 
49869
  0x61, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2C, 0x20, 
49870
  0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x61, 
49871
  0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 
49872
  0x6D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x0A, 0x69, 0x6E, 
49873
  0x20, 0x60, 0x64, 0x73, 0x60, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6D, 0x61, 0x70, 0x70, 0x65, 0x64, 
49874
  0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x76, 0x61, 0x6C, 
49875
  0x75, 0x65, 0x2C, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 
49876
  0x74, 0x68, 0x6F, 0x73, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x77, 0x69, 0x6C, 
49877
  0x6C, 0x0A, 0x62, 0x65, 0x63, 0x6F, 0x6D, 0x65, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x69, 
49878
  0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x74, 
49879
  0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x8D, 0xE1, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
49880
  0x18, 0x80, 0xC4, 0x01, 0xDA, 0x06, 0xDA, 0x8D, 0xE2, 0xDA, 0x08, 0xCE, 0x81, 0x0A, 0x28, 0x63, 
49881
  0x6F, 0x6E, 0x64, 0x20, 0x26, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x29, 0x0A, 0x0A, 0x45, 0x76, 
49882
  0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 
49883
  0x6E, 0x73, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x74, 0x69, 0x61, 0x6C, 0x6C, 0x79, 0x20, 
49884
  0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 
49885
  0x74, 0x72, 0x75, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x0A, 0x69, 
49886
  0x73, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 
49887
  0x6E, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 
49888
  0x6F, 0x72, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x62, 0x6F, 0x64, 
49889
  0x79, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 
49890
  0x61, 0x6E, 0x0A, 0x6F, 0x64, 0x64, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 
49891
  0x20, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6E, 0x6F, 0x20, 0x66, 
49892
  0x6F, 0x72, 0x6D, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 
49893
  0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 
49894
  0x73, 0x73, 0x69, 0x6F, 0x6E, 0x0A, 0x69, 0x73, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 
49895
  0x64, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 
49896
  0x6E, 0x6F, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 
49897
  0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x8D, 0xE4, 0xD3, 0x03, 
49898
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x82, 0x68, 0x01, 0xDA, 0x06, 0xDA, 0x8D, 0xE5, 0xDA, 
49899
  0x08, 0xCE, 0x5E, 0x28, 0x6F, 0x73, 0x2F, 0x70, 0x72, 0x6F, 0x63, 0x2D, 0x77, 0x61, 0x69, 0x74, 
49900
  0x20, 0x70, 0x72, 0x6F, 0x63, 0x29, 0x0A, 0x0A, 0x42, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x75, 0x6E, 
49901
  0x74, 0x69, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 
49902
  0x73, 0x73, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x73, 0x2E, 0x20, 0x52, 0x65, 
49903
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 
49904
  0x63, 0x65, 0x73, 0x73, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x63, 0x6F, 0x64, 0x65, 
49905
  0x2E, 0xDA, 0x8D, 0xE6, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x85, 0x8C, 0x01, 
49906
  0xDA, 0x06, 0xDA, 0x8D, 0xE7, 0xDA, 0x08, 0xCE, 0x31, 0x28, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 
49907
  0x6C, 0x20, 0x66, 0x20, 0x26, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x29, 0x0A, 0x0A, 0x50, 0x61, 0x72, 
49908
  0x74, 0x69, 0x61, 0x6C, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x70, 
49909
  0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x8D, 0xE9, 0xD3, 0x03, 0xDA, 
49910
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x82, 0x9A, 0x81, 0x26, 0x01, 0xDA, 0x06, 0xDA, 0x8D, 0xEA, 0xDA, 
49911
  0x08, 0xCE, 0x2D, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x62, 0x73, 0x20, 0x78, 0x29, 0x0A, 
49912
  0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x62, 0x73, 0x6F, 
49913
  0x6C, 0x75, 0x74, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 
49914
  0xDA, 0x8D, 0xEB, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x83, 0x55, 0x01, 0xDA, 
49915
  0x06, 0xDA, 0x8D, 0xEC, 0xDA, 0x08, 0xCE, 0x72, 0x28, 0x73, 0x6F, 0x72, 0x74, 0x2D, 0x62, 0x79, 
49916
  0x20, 0x66, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x53, 0x6F, 0x72, 0x74, 0x73, 0x20, 0x60, 
49917
  0x69, 0x6E, 0x64, 0x60, 0x20, 0x69, 0x6E, 0x2D, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x20, 0x62, 0x79, 
49918
  0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 
49919
  0x69, 0x6F, 0x6E, 0x20, 0x60, 0x66, 0x60, 0x20, 0x6F, 0x6E, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 
49920
  0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x0A, 0x63, 0x6F, 0x6D, 0x70, 
49921
  0x61, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 
49922
  0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x3C, 0x60, 0x2E, 0xDA, 0x8D, 0xEE, 0xD3, 0x02, 0xDA, 
49923
  0x06, 0xDA, 0x8D, 0xEF, 0xDA, 0x08, 0xCE, 0x5B, 0x28, 0x62, 0x61, 0x6E, 0x64, 0x20, 0x26, 0x20, 
49924
  0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
49925
  0x20, 0x62, 0x69, 0x74, 0x2D, 0x77, 0x69, 0x73, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6F, 0x66, 
49926
  0x20, 0x61, 0x6C, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x78, 
49927
  0x73, 0x2E, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x78, 0x20, 0x69, 0x6E, 0x20, 0x78, 0x73, 0x20, 
49928
  0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 
49929
  0x65, 0x72, 0x2E, 0xDA, 0x8D, 0xF1, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x83, 
49930
  0x62, 0x01, 0xDA, 0x06, 0xDA, 0x8D, 0xF2, 0xDA, 0x08, 0xCE, 0x80, 0x92, 0x28, 0x73, 0x6F, 0x72, 
49931
  0x74, 0x65, 0x64, 0x2D, 0x62, 0x79, 0x20, 0x66, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x52, 
49932
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x6F, 0x72, 
49933
  0x74, 0x65, 0x64, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 
49934
  0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x73, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 
49935
  0x20, 0x62, 0x79, 0x20, 0x69, 0x6E, 0x76, 0x6F, 0x6B, 0x69, 0x6E, 0x67, 0x0A, 0x61, 0x20, 0x66, 
49936
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x60, 0x66, 0x60, 0x20, 0x6F, 0x6E, 0x20, 0x65, 
49937
  0x61, 0x63, 0x68, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 
49938
  0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 
49939
  0x73, 0x75, 0x6C, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x3C, 0x60, 0x2E, 0xDA, 0x8D, 
49940
  0xF4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x83, 0x40, 0x81, 0x72, 0x01, 0xDA, 0x06, 
49941
  0xDA, 0x8D, 0xF5, 0xDA, 0x08, 0xCE, 0x60, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 
49942
  0x6F, 0x70, 0x6E, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x52, 
49943
  0x65, 0x6D, 0x6F, 0x76, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 
49944
  0x60, 0x6E, 0x60, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 
49945
  0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
49946
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 
49947
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x8D, 0xF6, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 
49948
  0x00, 0xDA, 0x18, 0x80, 0x98, 0x01, 0xDA, 0x06, 0xDA, 0x8D, 0xF7, 0xDA, 0x08, 0xCE, 0x2C, 0x28, 
49949
  0x2A, 0x3D, 0x20, 0x78, 0x20, 0x26, 0x20, 0x6E, 0x73, 0x29, 0x0A, 0x0A, 0x53, 0x68, 0x6F, 0x72, 
49950
  0x74, 0x68, 0x61, 0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x28, 0x73, 0x65, 0x74, 0x20, 0x78, 
49951
  0x20, 0x28, 0x5C, 0x2A, 0x20, 0x78, 0x20, 0x6E, 0x29, 0x29, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x8D, 
49952
  0xF9, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x83, 0x74, 0x01, 0xDA, 0x06, 0xDA, 
49953
  0x8D, 0xFA, 0xDA, 0x08, 0xCE, 0x80, 0xA3, 0x28, 0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 0x32, 0x20, 
49954
  0x66, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x32, 0x2D, 0x61, 0x72, 
49955
  0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 
49956
  0x66, 0x20, 0x60, 0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 0x60, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
49957
  0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x61, 0x6E, 
49958
  0x20, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, 0x6C, 0x69, 0x7A, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
49959
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x0A, 0x49, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2C, 0x20, 
49960
  0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 
49961
  0x74, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x69, 
49962
  0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x69, 
49963
  0x61, 0x6C, 0x69, 0x7A, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x8D, 0xFC, 0xD3, 0x04, 0xDA, 
49964
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x18, 0x82, 0x74, 0x01, 0xDA, 0x06, 0xDA, 0x8D, 0xFD, 0xDA, 0x08, 
49965
  0xCE, 0x80, 0xA7, 0x28, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x68, 0x65, 0x61, 
49966
  0x64, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 
49967
  0x65, 0x20, 0x61, 0x20, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x20, 0x65, 0x78, 
49968
  0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x74, 
49969
  0x68, 0x65, 0x20, 0x60, 0x6C, 0x6F, 0x6F, 0x70, 0x60, 0x20, 0x73, 0x79, 0x6E, 0x74, 0x61, 0x78, 
49970
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 
49971
  0x72, 0x0A, 0x74, 0x68, 0x61, 0x74, 0x20, 0x79, 0x69, 0x65, 0x6C, 0x64, 0x73, 0x20, 0x61, 0x6C, 
49972
  0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x20, 
49973
  0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x69, 0x6E, 0x20, 0x6F, 0x72, 0x64, 0x65, 
49974
  0x72, 0x2E, 0x20, 0x53, 0x65, 0x65, 0x20, 0x60, 0x6C, 0x6F, 0x6F, 0x70, 0x60, 0x20, 0x66, 0x6F, 
49975
  0x72, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6C, 0x73, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x8D, 0xFF, 
49976
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0xB0, 0x01, 0xDA, 0x06, 0xDA, 0x8D, 
49977
  0x21, 0xDA, 0x08, 0xCE, 0x80, 0xA1, 0x28, 0x6F, 0x73, 0x2F, 0x61, 0x72, 0x63, 0x68, 0x29, 0x0A, 
49978
  0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x74, 0x68, 0x65, 0x20, 0x49, 0x53, 0x41, 0x20, 0x74, 
49979
  0x68, 0x61, 0x74, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x77, 0x61, 0x73, 0x20, 0x63, 0x6F, 
49980
  0x6D, 0x70, 0x69, 0x6C, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
49981
  0x72, 0x6E, 0x73, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 
49982
  0x78, 0x38, 0x36, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x78, 0x36, 0x34, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 
49983
  0x61, 0x72, 0x6D, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x61, 0x61, 0x72, 0x63, 0x68, 0x36, 0x34, 0x0A, 
49984
  0x0A, 0x2A, 0x20, 0x3A, 0x72, 0x69, 0x73, 0x63, 0x76, 0x33, 0x32, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 
49985
  0x72, 0x69, 0x73, 0x63, 0x76, 0x36, 0x34, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x70, 0x61, 0x72, 
49986
  0x63, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x77, 0x61, 0x73, 0x6D, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x75, 
49987
  0x6E, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x0A, 0xDA, 0x8B, 0x66, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
49988
  0x00, 0xDA, 0x18, 0x86, 0x31, 0x01, 0xDA, 0x06, 0xDA, 0x8B, 0x64, 0xDA, 0x08, 0xCE, 0x3C, 0x28, 
49989
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 
49990
  0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6E, 0x20, 
49991
  0x61, 0x73, 0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 
49992
  0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0xDA, 0x8E, 0x00, 0xD3, 0x03, 
49993
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x85, 0x6F, 0x80, 0x98, 0x01, 0xDA, 0x06, 0xDA, 0x8E, 0x01, 
49994
  0xDA, 0x08, 0xCE, 0x80, 0xA4, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x66, 0x69, 0x6C, 0x6C, 
49995
  0x20, 0x61, 0x72, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 
49996
  0x0A, 0x0A, 0x52, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x65, 0x6C, 
49997
  0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 
49998
  0x61, 0x79, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x60, 0x20, 
49999
  0x28, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x6F, 0x20, 0x6E, 
50000
  0x69, 0x6C, 0x29, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x63, 0x68, 0x61, 0x6E, 
50001
  0x67, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 
50002
  0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x20, 0x52, 0x65, 
50003
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 
50004
  0x65, 0x64, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x8E, 0x02, 0xD3, 0x04, 0xDA, 0x03, 
50005
  0xD2, 0x03, 0x00, 0xDA, 0x18, 0x80, 0x94, 0x01, 0xDA, 0x06, 0xDA, 0x8E, 0x03, 0xDA, 0x08, 0xCE, 
50006
  0x22, 0x28, 0x2B, 0x2B, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x49, 0x6E, 0x63, 0x72, 0x65, 0x6D, 0x65, 
50007
  0x6E, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x72, 0x20, 0x78, 0x20, 0x62, 0x79, 
50008
  0x20, 0x31, 0x2E, 0xDA, 0x3D, 0xCB, 0xDA, 0x8E, 0x05, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
50009
  0xDA, 0x86, 0xA9, 0x81, 0x4A, 0x01, 0xDA, 0x06, 0xDA, 0x80, 0xF5, 0xDA, 0x08, 0xCE, 0x80, 0xB6, 
50010
  0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x43, 
50011
  0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 
50012
  0x62, 0x79, 0x20, 0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74, 0x65, 0x6E, 0x61, 0x74, 0x69, 0x6E, 0x67, 
50013
  0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 
50014
  0x20, 0x60, 0x78, 0x73, 0x60, 0x20, 0x74, 0x6F, 0x67, 0x65, 0x74, 0x68, 0x65, 0x72, 0x2E, 0x20, 
50015
  0x49, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 
50016
  0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 
50017
  0x65, 0x6E, 0x63, 0x65, 0x2C, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6F, 0x6E, 0x76, 
50018
  0x65, 0x72, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x76, 
50019
  0x69, 0x61, 0x20, 0x60, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x60, 0x2E, 0x20, 0x52, 
50020
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 
50021
  0x74, 0x72, 0x69, 0x6E, 0x67, 0x2E, 
50022
  0
50023
};
50024
50025
const unsigned char *janet_core_image = janet_core_image_bytes;
50026
size_t janet_core_image_size = sizeof(janet_core_image_bytes);