-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRestProxy_manual.rtf
More file actions
1289 lines (1254 loc) · 100 KB
/
RestProxy_manual.rtf
File metadata and controls
1289 lines (1254 loc) · 100 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang6153\deflangfe6153{\fonttbl{\f0\fswiss\fprq2\fcharset0 Calibri Light;}{\f1\fswiss\fprq2\fcharset204 Calibri Light Cyr;}{\f2\fswiss\fprq2\fcharset0 Calibri;}{\f3\fmodern\fprq1\fcharset0 Courier New;}{\f4\fmodern\fprq1\fcharset204 Courier New;}{\f5\fnil\fcharset0 Calibri;}{\f6\fnil\fcharset2 Symbol;}}
{\colortbl ;\red0\green0\blue255;\red0\green0\blue0;\red255\green0\blue0;\red5\green99\blue193;}
{\stylesheet{ Normal;}{\s1 heading 1;}{\s2 heading 2;}}
{\*\generator Riched20 10.0.14393}{\*\mmathPr\mnaryLim0\mdispDef1\mwrapIndent1440 }\viewkind4\uc1
\pard\keepn\widctlpar\s1\sb240\sa60\sl252\slmult1\kerning32\b\f0\fs32 RestProxy Version 0.54\par
RestProxy \f1\lang1049\'d1\f0\lang6153 oncept\par
\pard\widctlpar\li360\sa160\sl252\slmult1\kerning0\b0\f2\fs22 RestProxy is a server application implementing SMS/MMS proxy messaging service for Twilio messaging gateway. It allows web clients to send SMS & MMS messages via HTTP calls and acts as an inbox, allowing web clients to fetch incoming SMS messages, received from Twilio.\par
RestProxy provides HTTP API and uses persistent storage (MS SQL CE) for fail-proof handling of outgoing (from web client) messages and storing incoming messages (from Twilio).\par
\pard\keepn\widctlpar\s1\sb240\sa60\sl252\slmult1\kerning32\b\f0\fs32 Sending SMS Messages\par
\pard\widctlpar\li360\sa160\sl252\slmult1\kerning0\b0\f2\fs22 Twilio provides a phone number and web API, where messages can be sent. RestProxy implements following API syntax:\par
{{\field{\*\fldinst{HYPERLINK http://11.22.33.44/api/sms/send/$number/$body/[$TwilioNumber }}{\fldrslt{http://11.22.33.44/api/sms/send/$number/$body/[$TwilioNumber\ul0\cf0}}}}\f2\fs22 ]\par
\b Where:\par
\b0 11.22.33.44 is the IP address and the port number where RestProxy is running\par
$number \endash message recipient number (where message will be sent) \ul without plus sign\ulnone\par
$body \endash message body\par
$TwilioNumber \endash optional alternative Twilio gateway phone number. Default Twilio phone number is configured in service properties (read below \ldblquote Configuration\rdblquote ). If the Twilio account has multiple phone numbers available, and a web client wants to use specific one, this can be given as a parameter.\par
\b Implementation\par
\b0 When a web client calls RestProxy with this call, for example:\par
11.22.33.44/api/sms/send/1800123123/test_from_twilio\par
RestProxy will store this message as a local database entry (in table \ldblquote Outbox\rdblquote ) and then attempt to call Twilio API for sending the message. If the call is succeeded and the Twilio API responds with \ldblquote successful\rdblquote HTTP status code (HTTP OK, Status Code 200), RestProxy outputs the Twilio response to the web client, for example:\par
\pard\widctlpar\li360\cf2\f3\fs16 <TwilioResponse>\par
<Message>\par
<Sid>SM4a6b094c07f047b3a62e59793f8f420b</Sid>\par
<DateCreated>Mon, 11 Sep 2017 08:58:29 +0000</DateCreated>\par
<DateUpdated>Mon, 11 Sep 2017 08:58:29 +0000</DateUpdated>\par
<DateSent/>\par
<AccountSid>AC6f30881e1231231231234e5bf941</AccountSid>\par
<To>+3584015151515</To>\par
<From>+1424343\f4\lang1049 4343\f3\lang6153 </From>\par
<MessagingServiceSid/>\par
<Body>test25_from_twilio</Body>\par
<Status>queued</Status>\par
<NumSegments>1</NumSegments>\par
<NumMedia>0</NumMedia>\par
<Direction>outbound-api</Direction>\par
<ApiVersion>2010-04-01</ApiVersion>\par
<Price/>\par
<PriceUnit>USD</PriceUnit>\par
<ErrorCode/>\par
<ErrorMessage/>\par
<Uri>\par
/2010-04-01/Accounts/AC6f30881e523412312312434192038a1e5bf941/Messages/SM4a6b094c07f047b3a62e59793f8f420b\par
</Uri>\par
<SubresourceUris>\par
<Media>\par
/2010-04-01/Accounts/AC6f30881e5812312412312338a1e5bf941/Messages/SM4a6b094c07f047b3a62e59793f8f420b/Media\par
</Media>\par
</SubresourceUris>\par
</Message>\par
</TwilioResponse>\fs20\par
\pard\widctlpar\li360\sa160\sl252\slmult1\cf0\f2\fs22\par
The message is then deleted from local database. If Twilio responds with error condition, for example, wrong format of recipient\rquote s phone number, this response also is forwarded to a web client and the message is also deleted from local database. \par
If a message sending failed due to network error, for example Twilio web host is down, the message is kept in local database and is available for later re-sending (see section \ldblquote Re-sending failed messages\rdblquote ).\par
\par
\pard\keepn\widctlpar\s1\sb240\sa60\sl252\slmult1\kerning32\b\f0\fs32 Sending MMS Messages \par
\pard\widctlpar\li360\sa160\sl252\slmult1\kerning0\b0\f2\fs22 MMS messages sending is similar to sending SMS messages, \par
Twilio provides a phone number and web API, where messages can be sent. RestProxy implements following API syntax:\par
{{\field{\*\fldinst{HYPERLINK http://11.22.33.44/api/mms/send/$number/$body/$mediaURLs/[$TwilioNumber }}{\fldrslt{http://11.22.33.44/api/mms/send/$number/$body/$mediaURLs/[$TwilioNumber\ul0\cf0}}}}\f2\fs22 ]\par
\b Where:\par
\b0 11.22.33.44 is the IP address and the port number where RestProxy is running\par
$number, $body and $TwilioNumber \endash are the same parameters as in case of SMS sending;\par
$mediaURLs is a set of http(s) links to the media files of multimedia content attached to this MMS message. \par
Twilio expects multimedia content to be given as \ldblquote shortlinks\rdblquote \endash direct web links to files. $mediaURLs parameter contains these links. Note that the format of $mediaURLs is URL-encoded string of comma-separated URL-encoded links, this means 2 passes of URL-encoding. Example:\par
Web client sends MMS with media content linked from \ldblquote {{\field{\*\fldinst{HYPERLINK http://imgur.com/cnt }}{\fldrslt{http://imgur.com/cnt\ul0\cf0}}}}\f2\fs22\rdblquote and \ldblquote {{\field{\*\fldinst{HYPERLINK http://test.com/abc.jpg }}{\fldrslt{http://test.com/abc.jpg\ul0\cf0}}}}\f2\fs22\rdblquote\par
First, those links are URL-encoded as \ldblquote http%3A%2F%2Fimgur.com%2Fcnt\rdblquote and \ldblquote http%3A%2F%2Ftest.com%2Fabc.jpg\rdblquote\par
MediaURLs string is comma-separated set of those, e.g.:\par
\ldblquote http%3A%2F%2Fimgur.com%2Fcnt,http%3A%2F%2Ftest.com%2Fabc.jpg\rdblquote\par
This string needs to be URL-encoded too, in order to correctly transmit without mixing with standard URL-encoded request that will be decoded by web server before the application code. So the resulting two-pass URL-encoded $mediaURLs parameter looks like this:\par
\ldblquote http%253A%252F%252Fimgur.com%252Fcnt%2Chttp%253A%252F%252Ftest.com%252Fabc.jpg\rdblquote\par
The full syntax example of the MMS sending call:\par
{{\field{\*\fldinst{HYPERLINK http://11.22.33.44/api/mms/send/1800123123123/test25_from_twilio/http%253A%252F%252Fimgur.com%252Fcnt%2Chttp%253A%252F%252Ftest.com%252Fabc.jpg }}{\fldrslt{http://11.22.33.44/api/mms/send/1800123123123/test25_from_twilio/http%253A%252F%252Fimgur.com%252Fcnt%2Chttp%253A%252F%252Ftest.com%252Fabc.jpg\ul0\cf0}}}}\f2\fs22\par
\b Implementation\par
\b0 Implementation and response is happening in the same way as in case of SMS sending.\par
\par
\pard\keepn\widctlpar\s1\sb240\sa60\sl252\slmult1\kerning32\b\f0\fs32 Getting Delivery Status\par
\pard\widctlpar\li360\sa160\sl252\slmult1\kerning0\b0\f2\fs22 After a message is sent via Twilio, it responds with \ldblquote queued\rdblquote status in the output. As a next step, Twilio attempts sending the message through mobile network and maintains delivery status accordingly. To check in detail if a message has reached destination (status \ldblquote delivered\rdblquote ), it is possible to enquiry a particular message details. Each message is uniquely identified with \ldblquote MessageSid\rdblquote tag. Submitting this tag to /api/sms/message API point will output full set of details of this message, including delivery status:\par
{{\field{\*\fldinst{HYPERLINK http://11.22.33.44/api/sms/message/$messagesid }}{\fldrslt{http://11.22.33.44/api/sms/message/$messagesid\ul0\cf0}}}}\f2\fs22\par
\b Where:\par
\b0 11.22.33.44 is the IP address and the port number where RestProxy is running\par
$messagesid \endash Message id\par
The response is the Message Resource XML structure, including <Status> element, specifying delivery status. Possible values are \ldblquote accepted\rdblquote , \ldblquote sending\rdblquote , \ldblquote sent\rdblquote , \ldblquote delivered\rdblquote , \ldblquote failed\rdblquote , and others as described here: {{\field{\*\fldinst{HYPERLINK https://www.twilio.com/docs/api/messaging/message#message-status-values }}{\fldrslt{https://www.twilio.com/docs/api/messaging/message#message-status-values\ul0\cf0}}}}\f2\fs22\par
\pard\widctlpar\li360\cf2\f3\fs18 <TwilioResponse>\par
<Message>\par
<Sid>SMc009baad11d1404f85ca6d7843c8c026</Sid>\par
<DateCreated>Wed, 20 Sep 2017 15:15:28 +0000</DateCreated>\par
<DateUpdated>Wed, 20 Sep 2017 15:15:47 +0000</DateUpdated>\par
<DateSent>Wed, 20 Sep 2017 15:15:28 +0000</DateSent>\par
<AccountSid>AC6f1231231231231234bf941</AccountSid>\par
<To>+35239480552</To>\par
<From>+140892383467</From>\par
<MessagingServiceSid/>\par
<Body>test212_from_twilio</Body>\par
\cf3 <Status>delivered</Status>\par
\cf2 <NumSegments>1</NumSegments>\par
<NumMedia>0</NumMedia>\par
<Direction>outbound-api</Direction>\par
<ApiVersion>2010-04-01</ApiVersion>\par
<Price>-0.08200</Price>\par
<PriceUnit>USD</PriceUnit>\par
<ErrorCode/>\par
<ErrorMessage/>\par
<Uri>\par
/2010-04-01/Accounts/AC6f30881e581231231241231a1e5bf941/Messages/SMc009baad11d1404f85ca6d7843c8c026\par
</Uri>\par
<SubresourceUris>\par
<Media>\par
/2010-04-01/Accounts/AC6f30881e585398e1231231231e5bf941/Messages/SMc009baad11d1404f85ca6d7843c8c026/Media\par
</Media>\par
</SubresourceUris>\par
</Message>\par
</TwilioResponse>\cf0\f2\fs22\par
\pard\widctlpar\sa160\sl252\slmult1\par
\pard\keepn\widctlpar\s1\sb240\sa60\sl252\slmult1\kerning32\b\f0\fs32 Receiving Messages\par
\pard\keepn\widctlpar\s2\sb240\sa60\sl252\slmult1\kerning0\i\fs28 Twilio Web Hook API \par
\pard\widctlpar\li360\sa160\sl252\slmult1\b0\i0\f2\fs22 When a text messages are sent to the registered Twilio gateway number, Twilio will get them and forward to the RestProxy server via web hook call. This is an HTTP call from Twilio to RestProxy HTTP API. It needs to be configured at the Twilio account dashboard: \ldblquote Phone numbers\rdblquote section, available via \ldblquote #\rdblquote menu lists active phone numbers. Selecting a number brings list of options, and web hooks are listed under \ldblquote Messaging\rdblquote :\par
\f5\lang9{\pict{\*\picprop{\sp{\sn wzDescription}{\sv Image}}{\sp{\sn posv}{\sv 1}}
}\pngblip\picw16181\pich1905\picwgoal9173\pichgoal1080
89504e470d0a1a0a0000000d494844520000054f000000a00802000000b3130ac4000000017352
474200aece1ce90000000467414d410000b18f0bfc6105000000097048597300000ec300000ec3
01c76fa8640000421449444154785eeddd0d5c14d5c23ff0a3e8ae9220a2a8a008081201e205e2
89151e214a2045ba229206868a9909dde78a7a137952ac4cef55a1a70b5cf32d09df42c5c4d540
8b58ffe0722f01490b2982801828201218b66babff79db37585e54445d7fdf4f9f9c99333b333b
3becce6fce393303eeddbb470000000000000040870ce4fe05000000000000005d81b40f000000
000000a06b90f601000000000000740dd23e00000000000080ae41da07000000000000d03548fb
00000000000000ba06691f00000000000040d720ed03000000000000e81aa47d00000000000000
5d83b40f000000000000a06b90f601000000000000740dd23e00000000000080ae41da07000000
000000d035cf7adaffbd95fc7e971b06000000000000d00dbd4afba7be26dbb2480b37a69d388b
6cfb9a5471634f87967f13ab9dc42a831b05000000000000d00dbd48fbd7c9ee4ab24a428ed672
13b4a8251f4bc8aa4a22bece4d782a184d2073869250536e140000000000004037f4b625ffd881
24a9981beeacb8989c1a48c672634f0f5392b89c6c7d891b03000000000000d00dbdaadb4f27e4
633b525c49b2a5dc340d5272b492445893a984543d5575fb000000000000003a69c0bd7bf7b8c1
ae9c2703be25e7a2c8c96472cd8decf2e4262bb5e4921105e4bb45e4d46e32623a8975e2a6d3ee
92aa029254468a6f13329444bc44deb4e74a38ade4d4bf49fa25a6c3ff50126441e67890b17cb6
aca75229292e2047ab88b88d1eb33222415e64c638a648a981ecfe961c606e39e03c89acf22646
6de4dc8fe4da78f2a62dbdfcddd9c4d495cc30676626447c865459d0452d97c8ee7c728a5af220
12e446229db91938dd2f16000000000000e0b1eab96effda0d7aae217c32c79aec9668b90fdf51
0971b6263e46640421454ddc44da5d929e42269e23232c48ac80448e26bbb348e819f23b574c48
3389da4da22ac9d84964a51d99c127fbcf93ad255c610fa5846c4c26330a49cb5032c38cfe8fb4
909987c8ee1aae94f27b09999a4a4ee993d857c9560131ad26a69f11ab54b2f102296a64e6b84d
4e5592e29bcc30a3aa9aecbe44d2f7911784a48a59b2f30012954da2f2b819283d2f1600000000
0000e0b1eab96ebfea5b32b18ad4bf4dc6d6929969c467269dbd552e109793243284449893ddc9
e4941d39eac3955465918965e464049961c84df9fd3c99fa2d099d45563215e0f492cb48511471
565e73b84b5a6e13a3e7e8c1ee4b292df5c448fd067b77c9b644b27502a9ff33332a25ff9b4c8a
edc9493f669472971cd84d561a90aa7964083be53a99b38fb8a8b54738b09384b6121f73b27f36
193b98997497ecde41960c26f511cc8d097ab35800000000000080c7aa1775fb2d8ab9cc498431
d9faa35ae53c21d93f926263328769093f7430496f66a652ee92f48bc4c75e15f52943a690c8a1
64ff456e94c8b97f5506aac27c0fa54433ea530692a963c9b53fb831728d88ef9220f50b130389
c08a5cab273f73e35d18434e8628a23e6520b11f45bf1dce032f16000000000000a0bff49cf6e9
a03b9cbbdffe0c27427e21a79491be991cf8857cec4a8c9831231ef30feb3a39778758dd25d9c5
1afffdfe1c296ea02233cdca8eccb843666c2749b9a48ae97bafaefb5295dfe827021c3849fe37
95acfc859b461b426f55cb6d6e8cd5d24e089fdbda2e0de9b68afe81170b000000000000d05f7a
4efb55bf72039421ce64d560b2bb901bad2a24bb9f236f2a9ac18f788e909b5c92278df49dfccf
55928d628dffd27f233ecadbec5990a3f3c8aaa164dbbfc9c41dc4f4ffc8c65cd2a2ac45efbe94
90dfa985ef2403b693d03c527487d8db925063ae883686841a91ad79a4ea0e3781d492ad9574b5
bc1537fe401ed16201000000000000fa4ecffdf60fec20476dd47ae39f21137f66bad313ba9ffc
cf2eaabbf4179f202ed7981efed448397139a1eaa2df833ba4aa8abefdfeb60632d68264076bd6
ae6b2d2d27534f90a1e624d197bca0a855171fa19f02782f981b25bf91a40324ea16777da1ea36
71b623bb5f2346ca4b1c5afbed8f505b02835eec4dc5fba2f4b85800000000000080c7aa1775fb
9aade8ad5c49c41d72b498fc5e4cb6cac99b6edc748ae973f433edb89bf68fa583f7cf0dec484f
06132b5b12b98014bd44c435e494fa8dfd29da4ab37f20e2e7c8ae1055d4d7621015fdc99b36f4
130162a7d157288eceec8b4cfe88160b000000000000d0477a0aa977c96d425c4671633463f2e6
38b2b184ec2e21a6d66acdf229540c5632243346314fec536b7bcffab9921b50ddfa4ec188b9a5
dfefecfdf9ba2dbdf61bbd251a8de77f23456acfd2a355928fdbc8081e311d477c1c8991faa63e
8c47b458000000000000803ed253da6fd472ab799f3f11e76612d54c229db929acb14c357bd575
66849019bee4cddbe495dd24fb17f23b15dd7f235512b26a3bb13f4b5a9819b20f913947487615
69a1a2fb1dd2f20bd9984fc8734430a6e7526733fa7e81bbcbb9258bb3c99c1d245dd9979e3589
6c33224912629f4a066c23f68924ea6b925dcb153eb847b458000000000000803ed273dd3ec5ca
841956b22391cfd155ebec83f75406313ddb9575f2a6647f28891c48420f91a109f4edf4269e21
bf9b93fa30eef6f52e0ec4b48984a69311dbc980cfc88843249b4f8adee46aecbb2f7de13572d2
84fcef096ec9a195242298ec7764ca58f524ea73727424a9ff0bb91745ea83c8567b32e406094d
23530f71971b1ec4235a2c00000000000040dfe9f92e7d7d404a5aa4f4bf6c53fc8eee92965bf4
bf43869221caa7dc2b755ffa1b699113a2a7f11c7ed6eeed24c98c140572a34a2dff262fe4926d
61e44da68dc0fd7a448b05000000000000e843fd7273393e9df3b5477dca40ae544b98a7745ffa
1c53da29ea53aefd46acf4b961754398776c349419b97f8f68b1000000000000007da85fd2fee3
30c39a9cfb89ac3a433f1780eef9ff1b696920d967c8cc5ce2e34c667475e9a1278f68b1000000
000000007da85f5af23f26d72464770139d942c4ccad04c60e22538d49843799d1e17603f7e911
2d16000000000000a0afe872da070000000000007836e96c4b7e000000000000806716d23e0000
0000000080ae41da07000000000000d03548fb00000000000000ba06691f00000000000040d720
ed03000000000000e81aa47d000000000000005d83b40f000000000000a06b90f6010000000000
00740dd23e00000000000080ae41da07000000000000d03548fb00000000000000ba06691f0000
0000000040d720ed03000000000000e81aa47d000000000000005d83b40f000000000000a06b90
f601000000000000740dd23e00000000000080ae41da07000000000000d03548fb000000000000
00ba06691f00000000000040d70cb877ef1e3708000fa7bebe9e1b020000d0646a6aca0d010000
f40bd4ed03000000000000e81aa47d000000000000005d83b40f000000000000a06b90f6010000
00000000740dd23e00000000000080ae41da07000000000000d03548fb00000000000000ba0669
1f00000000000040d720ed03000000000000e81aa47d000000000000005d83b40ff0546afe7e43
ecc9666ea423494ad04e0937dc5724899e897dbd4c0000000000785490f601fa8bbc3c65ee6a61
0337c6b99432d77359fa556e8c5393be786e4ab99c1bd3aefd968c1bd2a2ad41ca0de98866e12a
4fad567779c9a38366d147fefec9858a9d2649f4f49cbbb79c1b53477f4c9e9ec9aa2b1bcd2757
ab8f6a2549e6b6c7d3d3277079bcf0b2eac3293f10e6b94258cf8d3d2ef4fbd5d0d33b7a400dc2
d51a57853aec7600000000e83f03eeddbbc70dc213467ea35494535c75b35d7e9790c1faa32c5e
9cee6367c096dd6dabfa4154505ad7728790817a46664e6effed66c59511d29877f0f8950981f3
3d46731328174eeda898b834c08e19a1663856dac60cd20c1c82e67b8c22a4e9dcc13364fafca9
d4204bde24119dfdb1aaa99dce9d7afaa3ac267b784e19c3a38b9af2a8795f9def61428fb0345e
aebe8ac14666ce9eaffdc94c8f1dedb07662364db15d4a15a777978e59f0fa146655b49682b4b4
8b6303c2a699711334df916ab8e3c259060eb3994dbd20dc71d966e90cf5b551938a47b0a50fad
bebe874c2749f639fa42c6fa978771e354144c9dfb61267f58f096edb34db9494cbc0cae09cf5e
eec88d6b43cdb389c46c9969cc8d6ba0a25d8e776e5477afbf6f8f62990fa424d1f34bcb8cad01
dc3ba78e4deec0ba1ff2c244ff5821cf77e3b16857e551c69015c42ffe87b8da3d3a7ba5802da1
7675604d786eb71f0795f6532c32d88fe3d685f40def89bdf66f0950fb037cdca88f2fc532fdd1
6f1295f683aac39f84e304e041d51714121757d31ebf58ea0b0be5aeaee3b9b1de3035557dcf03
0000f403d4ed3fa91af2d28e15cb9e9f3e3f7c2965e1ec6956836e2b426cfb85cca3a25f46b8cd
5e4897bd35c7cda85674f478490b574ce3912b3967ebee72635a50099f7e318389fa9d5d3f9796
7e5ef6fcabf323e89922e6bf6a3fe8f74e39ba1b8a5544cc71d3fff99bec0a6e324d7ded9da23e
c5c6664253d505557d606369453bef8fcad22a6e9c90bb15b50d6636b6dc988a89c77c6eb1d3cc
e8eb08acbe09f30fcfd62d4054f4935a3d67b938c336fcfd20922956bb4e70eba782c2204fc4a5
de7980a84fb9515f33256ae55c71fad95bdc14ce2d518678fa9b01a6f5373a14f4de30bba07981
6251412f1b1d00c093445e2fc9880d5d2bacefbe7555bd70f55bb1e9a58fbbd50e000040b790f6
9f4c4d79df5d1ae115e2ef38467f303dce339ae03ccd99add7965dc8ce6fb50b98ed6165c4543d
f28caca606fdd9519a7fb6441523074ff0726e17655e68e7c6ef5fddd933e5237ce6fa3b8cd567
f2949efe58bb692fd968d683f68a9ea19593857e53431337de1b136d26dc54c5fdba9fabf4ec7d
1c9ebb52a1bc6470b9ea97d136764fdbf1cb9b2208c814abe27e8d4464e72d70f20e30382d5636
e697fd54f86d80abf212487361cafb813e9e9e9e33c3620f486ea99f80ca9b240762c3665265fe
cb3e4a2fbfcd4d66dda811a7ac0df3a70aa707ae3e50ae768941567d327e5910bd48ffd0d814cd
50da5c94121b4abfc8276859fcc9728dd529c9eb851f042e4b653746567e6cc3327a1ba8972c8e
a526b2f374837a478a0d5bb64d58ae7a81247195b059de5cb8977a53f162b52dee86ac20de679b
6a5e7a746e8aaa81fea594b9efa4b3e7e39264b566ff7242bdc4f5d5f9370e9fd6385bbf7afa68
c37c5f8f91962db2566ed2031aa6cffdada87704a086138b64cd05dc4ef67f275ea45a7deff664
9fee3d8d7d422949f4a416c20e370857ffb350d6a058ddcc65f1dfabedaadbd5679257074ea737
3670f9864345f48be8771ab4594c0e2da3378fbb7344875574798075b7bafb3fc6001e989ee9f4
b82f627889a16bd3ab35bf5455e8a81f4ffefac5463fd4d50300c0130d69ff89d45c71e5ce44a7
49da93f5959aba112fb874a88d3772b21bd35077851ba3f126f9fb189565973d60de6fa9fde50f
2ba70709f79dc81a8af3caa5a3c66a6d40d0152b1bf3a6aa9fd9c85257718567f5c28429cf8fba
72998bfb55d5bf8c9ad8b94dc0138fe72af0178a2f7063d505420b1fc130623cf56583d3055cb6
919d170b670bb8e6e5b7c5f10b0e192c3a909d9b9b7b6c4b40c3e60d99aae054f8cfcdc2e1e1db
3372734547a25f102ffb4091d368e9295fd5bb2edf9349bf70bdc5b16529a55c4179eae2c5672d
a3bfa01799b135e0c6a7c11bbee7d2d3adef37046fbb11b0955a626ef617d19667972d3bd0a967
fbedeaf4b5ef88dd3fdfbec071981e95ae1397e54d5e4fbf22377bffc6f90ec37a38647e156d78
23e1c6cc2d19a2dcdccc03d116a265efa8dda1205fbce31f7f49e7cddf722c9a6b46df13de14af
804cb1b25f787941d1482292d470a3d5e7459681de5acec71bab0b275a1a8ff79d33fae069c5c7
4129fff6e0c8b9bea683f8e442dd03464ab9ac3e2f3e217fde1c77557f0d75e91f2cde54ea18f5
05fdc97ce15f1ffbe919f653ebd59eecebbdd7838cd8c5db248eef3147d1e7bef51fc473db2aaf
4effebe2a306e107e882ec231f04482f55519f80f1cc2db9e96b0464de766af299b73bb74ee9e1
00eb6275f77d8c013c242ef0ef581ca72df073517fff969988fa0000f0a443da7f22c9e564b05e
5767b47fc8891ebf53218fa77757da7e871b638d71f7182111e63772a31ada4ad377b0d20ab435
cfa7d6c21fac584b43de3e6ee61d42b568d403c52af6665cd0737e6dfa446e324db5f67d791dee
5aa7603571c2cd1aa676ff6ac51543bb290684f782d5a82ba54c0386aa8aaba3b434e3ef8dab67
b93573ced67105fd8337d9c54b749e4d38d5459916de6e74263476f3325034e62f2f107ab94c66
777d7376ba645164901d931b79a68237e791bd2794f1c872c9ba35336da9c84df486d9064746b5
a49cb8c415111214fdb720c7f1cc6286b97abf2c2baf66939358f8b945ccda20dbe1f418b5c8e8
0fc225c9479965569fde2f09ff205a60cabc6ab86dd0da188bcf0f8ad453efedf294951f56cfde
bb51719acba30ec5b6baba7a266d0f357574b1ec74686aa83e9322095d17ed61cae3367b7dccc4
9d0755cde9c5379cb66c7cd391dd845ee14df69a291417311b2097e4e44d8f5e6e212ca866caa8
3d3cd2cb4ddbad0dfe60ff19e615283898a9b856202b141e16044d1b468c4d2d88ac8d9bda5be2
4d8174edb397cfdcf7cbbdfefaa6e3506e7a07966f7dbc65a12bfb064d3dbc047917d923b0377b
f2e1f69e787310bd81b425e9ec0eea81c5c28f3f09e7b675bcb797bbf822d3024556901e4fa2d6
33977b283c53d7f0373adcfd40ab9e0eb02e5677bfc718401f5006fe95291acda610f50100e0a9
82b4ff44d2d32377e45d658d417a442eed5478574e06f2d966ff2a03c77804d85dff3eef7ae70e
fcaa9ef3216ecadbfba9a1d622bda358cb688f307ace20076d73768959c5eb8e06fa93bc02a68c
e126b2546b0f53bf95a0064bab71cd7463feaa0b978d6c9de8f37b9e93c3849b551765e472c52f
c613263ed8c13b5ed1979fa376dfbf7e31cc65aaad484267ad9a22e1786f57b60278f4542fae31
7f79e1f75eec25004a5d8db8fcd3302ea15182368bebdbda1475b92387197243344b5b977ac965
b5da7dad2e4984a6b6164cd4e7d8b97ad54b6aa8d7355f125f70b454bfe3d4705781bba85c514f
4e4851fcf2c5d5415ba3ddd5f2b353d49125a3849f04fb4c0f5cf6d1a1c22eaedd28345f2a2877
b450dfe5c35cdd05a24a65f60c0abfef73689eab4f90308f49eca539f9fe02819bb7456611b787
8dbca66a3bc09aeb6b5cc78fa4067853bc7c4fa68b7ea527de3a9b2e9e1ba088adf537d46f84d1
0b8218a6f63937373b237ae4913717776e16c1d0fcd4d4f4bc271f72ef09d6a4b31b989bbb2bc8
929bd82da361864c9eefa0fa92d8d4d3f1beb34e8f075817abbbcf630ca08fb0817fe4c165cac0
cf46fdf710f50100e0a981b4ff44329e306ee0a5a22e1ae14fb0306b2a2be810e05b8a4aeb469b
4de0c6d4e83b4d77ba29fa7f75cad6bebd64643e6e5055695597f7f91b357278dbf55f34b6b0e5
56bb1e8fcf8d288c99fafa8bbf89840f7003818136566637ab7e2eadb836ce4e518d6f33715c53
e585aadaeb23acec9ed6fa3d2ae118098b6ae866fc8efe02456b6f636fff9174637eba27ff54ee
120063fa4774bb663551ae5a131191b5dd26a6c3d55ed9f75c223f5a732b615387a7c919bbcd5b
9f9c917d72ef1a4153d2a20d6c72ee570ede414c63fef222c974775b2a024f353d5d7495d4179d
36f5f7d6fad002a95cc6d3638e559e6b4068f9d16cea2dd59f3e7c63feabeca16666e92ea3eff6
ff4078c6b6417f8d32f84274bfcfb87bfc7bf249853d038f8732f02fdf59784911f50311f50100
e0a981b4ff64329be635a9e55c7aa6e43adb385fde7efdc2d93cf6c9723c3b1f8fe197be399e57
d5c2d4bddf69ab3a97fe7599feb457990af04ef4ed02dcee880aeeb742cc6cda74dba63307334b
af31cfdfa3d2644b539b5a4f013b3babd61f33f32e3335cd7765d77f3c9e5b37cec5a973edbfbe
ddab6e83fe73bcab16fbdda0b2fdcde2822673071be5716ae330e95641769581d5f34f6f635ee3
a92f8f144b0a8bce380a5c54ef62989bf7482ab24ac423dd55617fa4a9a3e8e75eb5b926b2f2c2
7c81edc49e76cb24c7807ab144fdf1fe972545a68e165426369e24b0131572f74a60dcbe28c9f7
b2b5e0c628fcf1011bff2910adddac766f39059eb1e5ab5191fe677e52b505e8cc78929bade8fc
45b575c82e9688bdac7b55d3dc253d47df50b1b8a0502c1608e80e23c35cdd0dc4e72585792395
ad243ab871b5d074245764fbea7c72e0b4a4f4f4c1d1737c5535cf85d55abbc0f4832ef7e4a3d9
7bea3a371ad2c6d24e702357d2f910e8412f0eb01ef4ea1803e8536ce01f7ff47f16c59377f66c
44d4070080a70ad2fe93ca7cdafcd9cebc8b670ea6d09dcb777f25aa183466dc736c99be9dff1c
af71370b8eeda5cb52d20a5accbd6607d8e9b3a55a58f9f84c1ac20df7de98a92141537817bf3d
b89b5ecd8ed4af4bfeb099e66ecd959289d3e7788f693a974697ee493d5369e016e8affdae7e3c
1b7fff09bfe4e4d5292f16a8faed530ee67515ab265a8dbb3768dc24f5a6cb663613f872e3a7b7
669f66ec28b8712021dd56712b3ed67081f7e81db1c944bd9fb9a97f78c0b1cdf179f532e68acb
ad1a71ca8a9d858a3ae71bbfd6b1d3c9afe5c26d9bf35f0ef7edf169ea3c41c03bb7123f499130
b5a3b27a71fc073b2c96cf616ab42d7d43bd849fc69fa961f2d8afe5e971b19277e67b69e665de
c4a08def9b1e5c9b28619ab63617a40b4bb8cd230d22d159473376f36bd2174f8f1777bac195e5
f470af9309f1df56d32f91df2a3f121b2b797bfeb4876d9260eb1e20fe743315f66d99860fc66e
5e247955e2506f817a9f05355239e129ee994fc6fbceb14b59f5b7838240e57ba53bee2bfaf6df
37597379faa7f137def2baaf872876b927d5f4f9de1b69ea5878f61cfda431f9adea6f13972517
f526caf05c82a248e2865d856c577aeafd0abf12737d4806f1a9e3b48ba717f6ea00ebac377b06
e0116202fffffd7dcfc660dc330200009e3203eeddbbc70d02c0c3a9afef657d6775fa92b0ea25
d9d1ee1aa78eb7be8df53fec7af8f3208dc4d55098f269c2c1b3d5b7c830cb6901e18b164e9f44
c7a35b2587b67d71ba5052de7c9bf0463b0644442ff567eed84793247ae678e74629d3a624d933
c52263cb4c3624c9aa4f266ede2d9434c8865978cd5fb932dc45159e9a8b52b66d3b28aab9c52c
734dd44ce5d9adc63265253bff9244dedef6f6f357857bbf4c3f5d406f86fad26e7dbf6151cdfc
c30bb5dd4ab1b930652bf38e861a3bfa2f5db33cc092bba15dc7cdd6ae24d1f34bcb8cad011a89
4f5e9e326f59db07d9514eec78b37055a0d83f73e3abaa28a9b613a8d255b2f7f604296a956505
f1feff18b9fd50387bb180a2bec79a4fae0edc2466a733a66fcc5cdf21a352f32f3bc00ef28c27
097c43c317becc7d1cf4cb6bc27397d36f8b1ade4462141f04f5e10a57075587336ff9d605ed7b
b2a307dc7b54698a65fa96800ed7836e971f8a5bb523af5936dc316879f452b79a0dff90c6b0fb
96dab67f106e9846efd2eab772b93d7cbb5a98bc7947a6a4f936cfd8c9ebcd45efcde3ae52c924
7bffb26a97e41609fabfec68575e8763afeb03acebd5f576cf003cf14c4dd134000000fa15d23e
409fe975dad77932f1b6bfd4bfb13d48fd966c0000cf36a47d0000e86768c90f007daeae86a8f7
81070000000080fe86ba7d803e83ba7d0000e80aeaf60100a09fa16e1f00000000000040d720ed
03000000000000e81aa47d000000000000005d83b40f000000000000a06b90f601000000000000
740dd23e00000000000080ae41da07000000000000d03548fb00000000000000ba06691f000000
00000040d720ed03000000000000e81aa47d000000000000005d33e0debd7bdc20000000000000
00e804d4ed03000000000000e81aa47d000000000000005d83b40f000000000000a06b90f60100
0000000000740dd23e00000000000080ae41da07000000000000d03548fb00000000000000ba06
691f00000000000040d720ed03000000000000e81aa47d000000000000005d83b40f0000000000
00a06b90f601000000000000740dd23e00000000000080ae41da07000000000000d03548fb0000
0000000000ba06691f00000000000040d720ed03000000000000e81aa47d000000000000005d83
b40f000000000000a06b90f60100000000000074cd807bf7ee718300f070eaebebb921806780a9
a92937f4a0f02703000000d027b49e9821ed03f419441778a6f449da1f3e7cf8800103d8516a00
3f49000000fd80facdbd79f32637023a01691fe0d142da87674a9fa47d2323236a800dfccad80f
0000008f14f59b7be3c60d6e047402d23ec0a385b40fcf94be4afbd409c7c0810395811fbf4a00
00008f14fb9bdbd8d8c88e826e40da0778b490f6e199d287695f4f4f4f19f8010000a01f5cbf7e
9d1b029d80b40ff06821edc333a54fd2fe881123a8904f457d2af05353a801b6080000001e1136
005ebb768d1d05dda0f5c40ce7550000f0d8b0271c6cad3e15f571011a0000e051a37e76d95f5e
d07948fb0000f09829433e4e3e00000000fa0ad23e00000000000080ae41da07000000000000d0
3548fb00000000000000ba06691f00000000000040d720ed033c959abfdf107bb2991be9489212
b453c20df71549a267625f2f13e0be142779c41773c3fdadec5fb3e244526ea483b2a459eb72ba
2883a74f779ff543ba99b52234b542ce8df58f47f8760000e08987e7edf7095949c6de7ce2be30
d089c74dd1e68270c7d916bb80b06966dc0456d3b983e91283694b03ecd8f1c6bc83c74adbd861
9a99b2e8fa7961f60f756dd489829efe84975ef777346026b7579ccdcc2f6f6abf4bc8602307bf
100fcde5cb7e3abef7dfc4fdadd73b6d9cbc49223afb6355533b7deaa1a73fca6ab287e79431dc
5cf4d6d6b183340387a0f91ea3b8113577dbaa7e101594d6b5dc2164a01ecf708cc3545fb7f1dc
32e4374a4539c55537dbe57799e5ff699a97e328fa99da2ce69dea0b16be3e5963cb641784a967
dbec66cff730612734e51d4cd7be471a4a84d90575ad726ad5fae3dc5f7fcd81dd23ea2e9cda51
3151313ff5a6f2c9b490003b7d6694462dfc0c7955b9ae87d2c3f3f6e5e529f3768e4cda12309a
9b40bb9432779178fea1ed41e3b909b49af4c5abdad61c0ab755edac8e9a4faede4462b6cc34e6
c63550c93cc73b37ca911bed138f6299f074eb93e7ed1b19190d64e8e9e951ffe70ab42bde649d
e95f19e3cc8d6aba9616e15119a55eda79ca03bb9a16b18e6cde13a2e57b425e9bf6761cf96477
c8586e42636ed2fa0f776555b69211367e0be336bc2b3061ff905b2b72be4a4adc9b557c4ddab1
484d6b654eda3fb7c59f98ba9fdd7239f5b2b4a41dbbb27e689412431bdf25711f460a3a6fc7b5
e2b4bd3b77cb433262bdf9dc244dd78a539337261d2b6e6c2786ce81d1b11b16381bb22552519c
fde2547698611e7d2227d29e1ba1de60ce96b835fb731adbbb5e7b71bc7d7052c740f9f691ca35
ccbe97378affb53e6e6f56c54d6268edb7e4c30d91ee5d7ce1f63467ed779be2d6a5e65c936a29
edfeb5ad65695bd7c5d36f9f6ff26248f4473121b6daf753779f756f94edf29b951321da17a2fe
95ce918a3786e6f8ed8f79b18b553f0a0ff9767aab316b95ef9a51c9f96b04fdf8de00e061f570
e2ca9c6d06d684e72eef70f6479d13a658a63327b425899ecb0f719335ccdb9e1b6546bd7c9398
9ba0ce7d4dc6d600e306e1eaa0cd5cf15063c7696fbe1d39cfb5f3896d4fb3ddba7466ef17074f
179437df26c32cbc0216852f7cd97698facf6b7361cad6848367ab6f9161966e82f095eba78f67
de5a37dbc68d3c65f0bcfd47a62ebfa499c76bb870be859bd0153dde1f972515dc08eb6e4571b9
943798507958858ad64b951457016ab2bf29d3770fa12745ccf5b031e27e52db7ecccc6db6f20f
a7a72f9ce96436989dac54977ffe268f77fdc28f1d37eefab9b4f4f3b2e75f9d1fc12c72feabf6
837e578bd494f1d3e81296d6a84fda2f641e15fd32c26df6427a9ef0f9af4d3194dfe6ca48435e
dab162d9f3d3e7d3db462dff79d9f9f48367af70a52c1eefe6cf1d765bcbf992263d9e9c685c86
3270984daf81a5d82357b24f95727b243cc4c36644af4e32f86d25df96b47323fd4bcfd6f5e5c2
c2d25bdc28a33c5fc8b7b875ba40e3dbb65922ae7ed9b59ba80fd07bf50585f5bda94bac2f2cbc
ca0d82a6d6acad19deb1daf3526b567c86778c32eab79e5ae1f569eb823df99594b349fe153161
3bcad8a246d1be2cfdb712ce94d1457949de2511ca22a5da4361be7f171bbef2b20b3781fa3ac8
d997cd7feb1f22fa65e5f9495e4511a14965ea1f28957213c3fca28e4b3da3f7adea22ea938a5d
51db5a7d13443fd22b17ad77c9796b45da35aeacb5b1d6fbefcc067334a27edabb8189c3a34e53
2f2ccfdf15dc18e71391a178a18a7334f3ae94caf6bd6518e864cd94b566adf4da766bc1ae3cba
203fd1bfe2fdb0a48eef9bd5c39cb547220277184609e955e5ef09695ce71571ac912bebfeb5f2
b2a4e0e562fb0f9977517c62b549da9c355937b9424ddd7dd6bd62bf24ab526bd4a72f047c228d
8aeecfa8fff06fa7b74cfcb6161723ea033c839ca27239196bdcc9bc646e243737ca514e8c676e
e1c672b7cf238235e9dc48eedf95717ade76764ae691f53e75096fc417cab8024d5dce569f151b
1c5768366fe3914cba3c63eb7cb3820f03d70a55673e32c9cef7126eccfc8c2e17657cf68e2b8f
796d2fb6ed51e9e71333a4fd3e5021b9cc73fcb3ef24d9c512b5caf04e9a9adbf46d1cc6d51515
a8a5dbf69f4a7f31739834a4ade50637a52b2dd7ae13333b2ba6f25acfd0ca46517f7efd7ad308
2b87514cc8e78db6b3eaf0ab5e517a7988c39f7dec64e59a1b5777f64cf9089fb9fe0e63f59950
a9a73fd66eda4b361dabffbb25bb909ddf6a1730dbc3ca8879dd60fd31cf4f739fc42ea329efbb
4b23bc42fc1dc7e8d3db462ddfc17ffef43197cfaa5a0cdcb8d936dac18194165ce626d0ae965c
240e0ea3db6f76d54a5da9b9eefac0717696cc1e196c6035c9ac571b3fdcd967cc05e1b9ebdc68
ffb2750b1015fda4f63d562eceb00d7f3f88648ad5e2fead9f0a0a833c51890e7d415e2fc9880d
55ffd9d3aa5eb8faadd8f4d21eaef13f9ba4a2f8448b95216c74eda03d27fe5fe62bdfb0e14649
abf874c682553182f14cead1b7095cb5dc243993ed7d60322b6e53a8b339dbb0886f13f27e0cef
d0f71d62aff9dc7df93b6242dcd8d7334c02e3362e70b66026e8f16de6c5c4e81ffefe22534493
166f59bccb302ee348dc024f1b932ec396cd92aff6457a9af399af7bc3c90b96cccbc9ca554665
62a8affd9552f1ee38fe863def3a1b522fd4e39bbf1297b4fad7f823dac3bacab5e3bbb297bced
c7b41d6815679e58b072b5c09c5903df3630fa5d93a42c6d1d32ba9f93da940dfc0ddb239d47d0
63fcf1de71ff8af9f5d334eec247f7afbdf8fd6193e5d1f3ecd97761f262e4ca79196939aab7af
d4dd67fd90e415a91b8bde5eded5e59847e211be1d00801e75536bd5b9488f67eab1f46d8f74f1
056e82761d66bb9abe61ab2c6aeb9a2027531eb34c9ea963d0df3e8b191abffa403933072197c4
0747ce9befc144783d9eb15d80d744667a57bad9ec3ed1ef276648fb0f4d56527a6d9c9b8b9199
9b93c1e5d20af52a7a4df2bb72bd21760e13d52f0ad4fdf053db44473bdee00e55d95a184db4e2
5fcacefcf14adb1d6e0a6bc2c409378b85672f5e976959b5aca4ec97712e6e46e35f741a466d1c
3795d252fbcb1f564ef717ee3bb9525337e205176d75fe5414afb87267a21397fc15065a3958fd
f14bade26ac75dea8f6ed494174654494a140158565274c1e08529a3a83fd9aef724c7d8c68a77
213babf84a6b6fae8fa98c7a29c0a9252faf811bed4fbc2982804cb12aeed7484476de0227ef00
83d362e5d53bd94f85df06b872ed1798d647ef07fa787a7ace0c8b3d20b9a5fe5ee54d9203b161
33a932ff651fa5972b5b55306ed48853d686f95385d303a9af3cb54b0cb2ea93f1cb82e845fa87
c6a614685c56692e4a890da55fe413b42cfe64b9c6ea94e4f5c20f0297a56a6e0c3c99f44ca7c7
7d11c34b0c5d9b5ead7984a8d0bf28f1e4af5f6cf47bd896f9fda0a13227e95d3f676b6bebc9ee
113bcbd8d6e38d4722ac3d6272c8ae607a3addb7bff314dab5b4888de2d6b2b4b8607a01cebecb
7715b7b225d42bd2165b471ce99400e565bbb69295ef386b0d696529dbc8aa48b532bee1087e45
752d3746c5ad6b9557ddc66bade825edad6dd6261d2b5d7b3cc990cb5a6f5a9b28ea1da4a24d6b
e46b93dfb2e939436a2e790835aa9872b52267f468ae55bf26a9f874aadf6bdeea6536be21d69f
73d72fba527624f9d7a581f6ecf2f986c3f52b6a55a72bd2a6eaab0273c52ef96193b5f5266e69
ddce29cdcf4a7de5756f26ea73acfd43ac93324b98e1eed7f29ce1a8ab9557556dba1a6b2bf936
e69d2abc353eebd6b2239b96cf72b7a70e146b67bf777795a95e5ebc2934ade29a3869295d6aef
111c7742f589d3c798f21da969cd4acaf28b0964db80c86b733647b84f6616ed1bb642f972e6f8
94524b668ff01783e34ed592f68a0c6e66e7e0cd398dca6fddab399b980da0372f7c45460d3759
45f3d02dde1c91768d34e6272df7755674e397561c890b7e915a82bdfb1b711a4b50ad942a5ab1
2b5ff577412d21c2835eade69f0fb57cc59f4f4d6ab09746eb8db244efe02f15e71fed1569eb98
3fbfc9eec1eb326af12302006a64bdfb4e50ce56feedc11ba16f07743879d1339ebe288af7a590
abff1f36d2b2fe06dd0ffa09d1ef276648fb0fabe5c70b648a8715b523f59ddcacae9796aaa52a
4d375bdbf5871998bda87651a0a2f4f230a717cd0c0cf435abb2db4ad377b0f6a942a9897bc86c
675e45f6c194bd69d9a52d8a30cc9be43fc7dbbcb5e8f8de3d0785ffb9a2d146bde5fc85bb2e1e
f4152c7da717275e2f53866af2879cf0072ba27843de3e6e753b84ea57d4ae9ee5a6ee10966acb
ded442f4f85d5c3090cbc960bdce65bcc17cb994dbc6a696367d7d039e839b5daba21304b5c1ad
766e0e3c037dfdb696266612abadf418b729fb7295d5f2a3dce704390fbe949db67bef91ecd21e
db02a8e8db79dbdffc2eb3a2cbcfea91e1b90afc85cacb96d505420b1fc130623cf5650365637e
d979b170b6c095dd77b7c5f10b0e192c3a909d9b9b7b6c4b40c3e60d99aaf759f8cfcdc2e1e1db
3372734547a25f102ffb40a8b60fd253beaa775dbe876eb6746cbdc5b16529a55c4179eae2c567
2da3bfa01799b135e0c6a7c11bbee73a17dcfa7e43f0b61b015ba925e6667f116d7976d932e595
51a5dbd5e96bdf11bb7fbe7d81a3469f28786271bf2b3b16c769fb5de17e51f66f99f914447d42
5213f7d44e5d93515c5959999760b32f3889c95526c1bb2bf33679932547a8e93f453b6b9bc239
14119a424276d20b106d1388df9aabc82526217b2a7707774c8015fb3fa97837da5b75a70f3595
a99f5c8c8af6520fda7c41441cd918189698537153da5a96bae27fce052e7fbd733b6a698d38fe
e34c3f6d45dd69af157fb62ef3b5a8d7b98e038dc7532ae67a4a77b1e1904a83ab52d5f257d7da
c599df387bbba8569eb6965d029dfad2ca948b6868a8b477795ef342c0d84936eda5973a37e657
928ad3f67a47cd36e746a95db29ec4fd392ce9bb8a566a97ec5ff16e5e60d40cc5aa5f8ca954de
58a1db391bea2bec5dac3537c56492adb4b4924998ddafc52224f6b59c883762527fa8954a1b73
362e8e7f6e7398ea98e0687ed6d2062288dec976a010c5591c0efe4c2dc2e7c7cd7d5fecb28e2e
2dfe2a8afcd36fc5a96ef73bdd06c4666d28d706a4f6d08a38f912ba5b416565fefeb810cb21ec
74daa108aff78b5c62e923bc38d155fcde12bfb7e21b5e8da3bb601427bb7e43056c76bedad4bf
c691b74eb3fd3bf6ad0be97cbda7d3a19b93931013b69ffff69efc38e6a0adf83234b2d43b81ee
fb5076fa7fad8fbfbda998bd0820af487d2bf04bb6fb466599685b88b4ac82bb3c208af3dd63b8
52d199e2eafbaafe202a16afbfe574f8fb9fb831222ffbfef0a8d7bd98f74e2f39b2cc2b21bfbc
b2f2c7d31fda1c5fb2855b27003ceb64cde52713532e877b2babbbb4d298adb95c52efe562cb96
68b0b01510490d7b666de13ddfeee0b2f7768a6b34fad23e4efd7b6286b4ff90ea4aca5baeff9b
0bcbc28bedd73bf6425791df65a2b1be9383d995a21fa8b95a0a7efc659ca313f55bcce7e9c9a5
6ad153d56f3fcc43ed8e6e7a231d7c82174684f84cba539c96aeea106060e916307fe9c24067c3
5fb2d3beade2a6d21b77b1a5219fdbb85317daafa9ee2c30488f48ef28d638da238c5e5750c77b
dca9faed0738683b52a885686cb63a3d3d7247deb98c6ee0c0e7ce3ee8611e9f0c3473b22525ff
a12ffc57fd504a6c9dcc06d23b44b5793455bffd30cf31dc34cae0510e3e210bc3e7fbd8c88ad3
d3d4bb48f440df2ee0bff58bbebdd0ef1df879935dbc44e7d9085d5d9469e1ed368c1a3276f332
5034e62f2f107ab970f72d6cce4e972c8a0cb2a3e7213c53c19bf3c8de13cafc6db964dd9a99cc
6d48f486d9064746b5a49cb8c415111214fdb72047b6bbc73057ef9765e5d5cca5009958f8b945
ccda20dbe1f418b5c8e80fc225c9479965569fde2f09ff205a60cabc6ab86dd0da188bcf0f8ad4
bf1b6f97a7acfcb07af6de8d4f47320405e5efcaca148d36204f59d4a72cf850d9acdd50e0ff9a
22ecf59e7574c22721f64c15b1e1e40531ab7949199d2b6215ae656ccaf28b645ba477d498f1f7
2cbff73a958d0f493e1af97b4284df8bf6ceb3d2ccffbe47b39f766bd65f9954fdc636f2de9ede
dfadadf5d40afa6593e76e232bf7ac563626b85a29121f3e54e1c25efe28177de894131aacd9ab
bf33796dda5f9757bc97b0c0829be0bcba2cff9b2c7a094ceacb7a437905a4a9327f34ff3976b8
b75a4fa7e62c0c51bf3e621e9c9cf1ceeff14bfd9ca95d72c83c614fb4b35aa9ba6ee66caa168f
d667beb6bad0ed5af8ceabf725387d1ff786b7bdbdfb9a9a907d5b03cd3b5cacecf8599b78077b
db8c65f6b49ea1e0556f69f925b543edf5847f45b3fd35f8e3bd636243328e64767d204a8b3fdf
46562de11a3b1032843f9c34d65e6da6732edfc4463059ed9a8f53cce13d91ec920dddfdbd8949
c4a7c94b5e64ba6030077c4535bb9e217c43d270f56a23b50c3dbe89b5c05e71e7088eb64337e7
a6f3ae4f9738b3dd44e4c587b738c6acf166fb3e507f0b513ea95f7e475fb390e6ee8b2331096c
f70dfa0d0a2217b31df21b8fa71446bfbf80fdf3a1de78e452927cac73b70e436f5ffbc322c5f4
e2e3494e6fbdce1e6cc58737d9c7c4bcc2bc1d3d43fbd028effd5fe6f4e6fa14003c4607967976
b44ceb7df91ec82176e93ef356a5d4b8aefbfc6d47f60cb823adb3d555e7b3a59d99994e29affb
951d369e1e77644f282f7d45a0ff3bf1c24b4f46e6efc71333a4fd8753517a65b40f1743690bdd
875c2cd17e4305b6269b1eb2719c44f7a2a7b2f8ef131d98ebdd06fafaedbff5f6174fcf7082b3
df8b66cdd73b5c52e78db69be63989df58c7d589dfa5366e8ccf126ecb280b05fc8be7b94e0446
e6e306559556f5d85abe5b13ccc65c2f2bb8ae7521c63613065f2a526bfb48bb5b555241c6991b
b1636c63076ac0e84f76a3ae9496b49694548fb0fb135d6a304c5fd6eb1d42061b4cf893ff8b66
2d1df748f7c64ff3322a3973bebff3fe3097a9b6224935355453241cefedca0479327aaa17d798
bfbcf07b2ff61200a5ae465cfe6918f3fdc608da2cae6f5336461a394cfd4cced2d6a55e72b9a7
160e972442535b0bf573663b57af7a490df5bae64be20b8e96ea6d8e87bb0adc45e5aae69d45f1
cb1757076d8d767f4aef54fa6c637f57461e5ca6fc5d617f51de7b8aa27e5f30361cae16f36cec
a76aa63875d29ce49d2eb10b6cd4e657928a92763aaf5dd0a94774eda998c0a8ca90af8bcbcaf2
b376f857bcef3b2b41bdf6d2d0ef5326557ffde1f8138b358bba633823817ed94f273e34cf58fc
e7f862f67bebdaa50ab264f3bf9608b85efd86f66fc5c4e82b1ab76b256fccf978c9ee897b9283
1575ef143d3edb9f9f42a5becdebc72b7abc8fb2766f90fec60cf692bc2c756b43c42ce55dfee8
8b0b59ef074656849cf881de25bbfd2a56bc362bfe076defbbdb3947590a1adab913372dba5f4b
7b59d29bbe3b4725e4949595651f891c7b7caec7f20c8d5f6a6d9fb5bcb5e2bbd44dabc266f93a
5bbfb18b9bc8311cae76c182ffbcbdb7a852fb2f3fa5326d5b8d461b1093d909c9af542686ba5b
bfe8b77c7386aa2d0585cfa73b59a8f0c9206e489349c8a7c92f57278679d02dea379d28d3ecd0
a6fdd05db03444758da3f152457b6a04d3138015bc53dad84aefe1cab21cf3575cd58e0fa5ab95
a2b2385f6e7e8afbfb39b5cd5a3e1443df05de7b8f17339b54fcadaa334863758574bfda3a6d83
77b537fe8ab40ff0847b93bb419e9aedf3b8b287c7dd7e2f3b7dcfc6e5d36db9f3dfceb4ce6666
e9ce0e7456577fded64c79baab37ccd2237ccbe1cc2f222d257181ab4faafa7d3d4efd756286b4
ff30642565d727382aefcf44e139d98fb95ca46a30af4626bfa3c763dbeb99b93b195ececebe6c
30c59d7d585ea7aa6c2dda2e975cb8c63c2befaeecfa8f179bf40dd99fcfba0bc5575a98d7de69
ab2abbd2f69c013b5d565a7a7d82838dda27cc7370185355c06d9cd9b4e9b64d670e6696b2cba4
e66f69ea7047801ef1267bb93f77e99be37955ec06dc95b5d41667ff87bdebfe288f57ecdacea5
674aaeb7338b953594667e95dd643b5df10042994ca6e807c07372b36d2bc92869b375e31e13c8
e3eb51e5cc6097daaa4a2e2a175e7cb141b1477a6dcc545fb3cbd9977ee746fb0915a18d844535
74337e477f81e26bcdd8db7f24dd989feec93f95bb04c098fe11738f51952857cd13380559db6d
623abccbafc9bee012f9d19a5b099b844fc69724dc37e5efcaf29d859714bf2881cf74330de96f
523248ad1db51ae90ff189fcb54bd472ab8ab438fe9ffcb5e19dcaa4e2ddefff1af9d5a690c986
7cbe89cd2b91bbcf244ffd7a5d5a2557aec41f6b1ff2e14ad7c4c4acae6b84b5d037b10f8e5be9
9cc4bd6cec241bd2d0a011966c6cdca4528de0a74e5abc256c133feeb0aa758016269636d29f6b
99158c1e6d5d567451338d5dbb54a1ef30a9434db282549cb6cb676588a2d50085da252bda230f
ff3dc47e04bd4bbca3768b12a7667c9ca6f9701a5af7738e36b5292baad4dc94c64be57c076bba
62bcfbd7d61e5b77f8bff71f592130e7f3f916ce0b3e3c92b14aba62478ef2928396cffa5ac6f2
97bce20af8deef26ec3f925ff9d5126eba56bf491bbab8cd21b591691b7302576956b2eb19dacf
8a493e5d5c7976d7db23337b6e8ea195a17de09ae4ac1f2af377be6d723a74aedaf31dba3b74d5
8d8f3e415f4352d9374f5bc6d71098cc34025189157025eaf82e7eb3d28e8ba5d40773fc4848c8
2baa776fbeaae33ab53fbf0000a067c6961379a2a24e7d4e2957cb0b898b6d87af173d9ea953d0
9a4fa2da3e154ab8498f5bbf9c9821ed3f8496f3177e7fde49f3e1f6c4c661a2b217ba86d6d6df
f50db8a6f23c27fb71d23be31c1cb8d62a1dabb255fdf62907f398d32e797b5d49e6c1ddd4845d
7b85e57cb7196c6a96ffd15c75f6d85e7ac694b4bc5f27f8bfcae6e596f33f4b3b6edc406ae3da
948fe21b333524680aefe2b7cc3277ec48fdbae40f9b69eeea5555aa7efb148d1efd0a464e0173
bcc6dd2c6037604faaf03f37474c50dcb66fb4077da3818b670ea6d085a9a72ff226bf1e3255d9
0ebfb5ed36d7d88162e6f43caf9da7da60037dfddb6d1a7b44d16f9f72f01cd37ce14e7bddf96f
d885ef3d7989ff5f018aeb08bd67e4e6e73e6a0037d25f8ca7be3c522c292c3ae32870e10e00ca
3037ef9199e2428978a4bb2aec8f347514fd4cb703e899acbc305f603b51b540ed263906d48b25
ea9550972545a68e16c6d4764d12d8890a7f56bbc672fba224dfcb56edc49d3f3e60e33f05a2b5
9b4508fc4f29f67765fcd1ff59144fded9b3f1d98efa542c2aca49b3f7b4576b48ad20af484b68
787bb9f6278a557cb5ad6171a4a07373f4d6c6da767313f560a73fde7a7c65a36648e50ce27713
b9bb4605566e88106b97591969a7d52e18c82b4a0becc7abdfca4e455abc39700da1a2be806da1
dd958a9273e6ce36cc3ee10b7c17647da3d1d4bae2745ae53bfe9dfabcb35ab3beca5912a4b1d3
a85d221dabb14bf8cc2ed17cdc2badfb39f9ee7e0bbe3b9ea3fed8bccaccb4ca487f277ab0fbd7
3635948d1fa5d151cddcd2865c6be5de97b6cfbaec587cedf2c3fbd68408ac4d0c0d7bf8a06af3
8f97cd76d17e5d489494eab6b2cb40ab6feefc764c8c4991e4be2efa68e25b382f793fc6a440b1
8c6e0f5d9511e6e6cd45126d0de2ac277b377c57a876e341a551e39db3b49e5777c217042d117f
57d45a90255e18a2dc14c3b1e60dcaed040078688e33a346eedfd9a9164a26fe2a91bc13e0a8f5
c76ee448d3dbbd6c57d72f1efd8919d2fe4330720b0971e35aa5ab984d0bd3329510bb00e573e2
2936d323164d5755bc5385331485261ef3b9a6f7acf91ecc699791a37fc842e6d1f84b974684f8
3b708da9f5264c0d0a5bc44c5d121116e831813b01ed7ae3fe4b39556f94a34f509862990b4302
a6dab14ff2a3519ba4416de3d50d34b0faaf8010e506ccf1711eab3a05a66f3430272c82e94d10
1116e4e3384aedef6e94c77ceeadd1a8ed5daab6c1d44e503de19f9a9359bec2fca94c89b103bd
47d8ae0a8b42fcedb5ec748add0cb54d57dfcf2c7dbb80856a9bd12f8c1d05370e24a4db2a6ec5
c71a2ef01ebd23369978b9a9dac99bfa87071cdb1c9f57cfde7df4568d3865c5ce42452dd08d5f
ebb8bb92fe5a2edcb639ffe5705fb5bb3c68c71304bc732bf1931409d3fa52562f8eff6087c5f2
39cc1d4e2c7d43bd849fc69fa96102ffafe5e971b19277e67b693617e04d0cdaf8bee9c1b58992
ceb71581a702f3bbf27f7fdfb331d8b2a78b434f15bd2154e8d3a8e8ee3c85d27cb582eeeb4c85
2269c589b8b8237e51b3d4db67711a8f6dca9915eda735365f4bdb941318adb533bf8977c8acd4
b88f736ad996f6d2c6b22fe3e21ab9445a716cd3aedc5aaee25d5a9bf3715ceaac10ef1ebf7c2a
3336ed14730b944b6bbf8b8b3b14a87899a1dfd2e8ab1bde8d67172bad157fb626c932ea752d4f
5c93162704afd31af5af656c4acc51ee136af991c98e31f3b8e84adf7550ba7ef1bf8ae986e26c
e916f398d02e6a8dcb529348f482c9dc188bda258187e2e2bee3de38b54b523f8c6b5caee57a41
0f73d2f7e193ae5f9654cc047ee9d59cb8773799bfbf80ed0cdffd6b9dfd221b37c6a5fed4c895
d6e4c4ad4b0dfc33b713b57ed60686a3daeaafb2efbaf1a78c4d5b52b9024e6d6d0d77b2d8fa43
d28acd6dd1f3b43d5aaf8b3620152776e554721bd35a969555626eaefd024d372a32762a3fb5d6
b2d3594516e6ec11d9dda1ab8e2f085bfd2bb51fcad80b28d2dae2fd313147e88c4f95c4904d2b
12c4b5cce2a99d99b6877d5ca179c87b21a96be372ae72ebadf82e292c414c0f7736f9e5c0ecd4
355fe5047aa9de3ebde4d6b8355f72fd0ea4578b536363d2baec020100d0138ba0f5ab78894b62
0f9570a7cab2e672e1a6c5b10dd1eb675b327310522a4cc9ab6e662bb3a813df5d3b2f2df4d676
67bfc7e7119f9821ed03f43b0b9780a1d52e1e1a619f9061022fd75be305aeea897da8207aff8a
912757077a79d28fd9fbbcd06cf97cb6253fcfdcd5a2203e987e589ea7cfa2f872a775dbdfe9e2
ce269a6c17ecd933f346e222fa097c81ab8423571e59ff3217e887bdbcfec84ad39cb581ec32ab
a7edd9b340cbf721cf2efcb315fcc4bfee2c7c626e6e0af747cfd4d543b7a23ec5c42f6ac5a535
f49de5e3c46c10eb3c8572f3dcae282fbae7b0ad7be4a9f171d9098a5ca4f604be9b599fa4b8ac
9cabb555736bd6e65497556afd9f3518fa6d13c58d4c5b3e9de99bec119658f77ac6d7916c2235
771190af63025fa24bec7d561c378b136d535c33507f105d07a6ce029216f367e696f97ff25af1
8dfa3613621f997134a4f59f739d6da9d52d491dbcf2b47299f4a3e0e887aed18a934213cbca76
86d1b329d827302b1ce12ce01f8f0b75a727b1cbff66936af97ae621ffca88fa35d1f74ff41e5b
72c4447dedc59badad372bb75a9a736897e08d4e574146f8259c893339b2dc8b5a82b5b57b68e2
d5591919ef2a12a0fa1bef7e4efa3e7cbb3396b62606d0fbd67d719ac987a284198ab575ff5afb
c8c35ff9556e0d73a7dfbebdd7df8e8f57beb68bcfda7cf6e6e5d2442f6afe3f79bd9bd2e0bd26
ce9b2b6135a46d0e649f62e0bba531e4684664c7444f2bdbb34e5b1b1029df901cff90db18df0d
57fd8ec6f45411df09b30cc5a7e6bbaeda2f6335b38cee0edd8e6c42f71cf1ad5cc7ec4fea80fc
b23d309a7d92829ecd822f33426e6e9bcb3c9ccf2b6a67abad037b6584ef15275a6792b69859ef
4b73e30bccd746686bc94fb30f5cda90551f11a87ef5875af29e237e15ebe8c3895af2ca2fa5af
45a3253f003c0c53bf8d473ef56e3ac49e2a7b06be9752edb62ee3930053c5cfb4cc78243f3be1
2fb3e9529f791b4e8f5ef1d9a25e9d30f7ab47796236e0debd9e9ef30e00bd535f8f06eef00c31
357dd8f666d49f8c9191d140869e9e1ef57faee011a102f05ab2794f48b715ead2e2cda199afee
d77ac37ce90f9b42bff5dfbfa6bb7eeff0f4e8eeb3ee5af126eb4c7fe58303bbd2ab83ad6f3dd8
db018067174e5c758cd61333d4ed0300002894ed5ad71ea5f9d83c0579d9ae0dd2a8bf20eaeb8a
6e3eeb87d59ab539c33bb63fa3fe237d3b0000f0b442dd3e409fc1255278a6e868dd3e40f77a57
b70f00f0c4c389ab8ed17a6286b40fd067f0a509cf94a72fed03000080024e5c750c5af2030000
000000003c1390f601000000000000740dd23e00000000000080ae41da07000000000000d03548
fb00000000000000ba06691f00000000000040d720ed0300c0633660c000eaff78222c0000403f
a07e70f19bfb8c40da070080c786caf96cd40700000080be3500d77500fa4a7d7d3d3704f00c30
3535e5861e14fe6400000000fa84d61333a47d000000000000005d8396fc00000000000000ba06
691f00000000000040d720ed03000000000000e81aa47d000000000000005d83b40f0000000000
00a06b90f601000000000000740dd23e00000000000080ae41da07000000000000d02d84fc7f2c
e76b0192c920ce0000000049454e44ae426082
}\f2\lang6153\par
/api/sms/receive is the API point of RestProxy for HTTP POST calls with Twilio-specific parameter set. Web hook address is {{\field{\*\fldinst{HYPERLINK "../../../../Desktop/port/api/sms/receive"}}{\fldrslt{\ul\cf1\cf4\ul URL:port/api/sms/receive}}}}\f2\fs22 .\par
When a message is sent to a registered Twilio phone number, Twilio delivers it to RestProxy server via web hook. Rest Proxy keeps this incoming message as a database entry in \ldblquote Inbox\rdblquote table awaiting further fetching by a web client. \par
\pard\keepn\widctlpar\s2\sb240\sa60\sl252\slmult1\b\i\f0\fs28 Receiving Arrived Messages\par
\pard\widctlpar\li360\sa160\sl252\slmult1\b0\i0\f2\fs22 RestProxy web client should poll for getting incoming messages. API syntax as follows:\par
{{\field{\*\fldinst{HYPERLINK http://11.22.33.44/api/sms/list }}{\fldrslt{http://11.22.33.44/api/sms/list\ul0\cf0}}}}\f2\fs22\par
This call will deliver an array of <IncomingTwilioMessage> XML elements with the complete set of details of the messages.\par
Example:\par
\pard\widctlpar\li360\cf2\f3\fs16 <ArrayOfIncomingTwilioMessage\~xmlns:i="http://www.w3.org/2001/XMLSchema-instance"\~xmlns="{{\field{\*\fldinst{HYPERLINK http://schemas.datacontract.org/2004/07/RestProxy.Net.DTO }}{\fldrslt{http://schemas.datacontract.org/2004/07/RestProxy.Net.DTO\ul0\cf0}}}}\f3\fs16 ">\par
<IncomingTwilioMessage>\par
<AccountSid>AC6f30881e581231232412312338a1e5bf941</AccountSid>\par
<ApiVersion>2010-04-01</ApiVersion>\par
<Body>Test text. Text</Body>\par
<From>+358123123123</From>\par
<FromCity/>\par
<FromCountry>FI</FromCountry>\par
<FromState/>\par
<FromZip/>\par
<MediaURLs/>\par
<MessageSid>SM14c961e87e54d9ae72d2fe2816d8aa7f</MessageSid>\par
<NumMedia>0</NumMedia>\par
<NumSegments/>\par
<SmsSid>SM14c961e87e54d9ae72d2fe2816d8aa7f</SmsSid>\par
<SmsStatus>received</SmsStatus>\par
<Timestamp>2017-09-11T13:45:40.663</Timestamp>\par
<To>+1424123\f4\lang1049 123123\f3\lang6153 </To>\par
<ToCity/>\par
<ToCountry>US</ToCountry>\par
<ToState>CA</ToState>\par
<ToZip/>\par
<id>1</id>\par
</IncomingTwilioMessage>\par
<IncomingTwilioMessage>\par
<AccountSid>AC6f30881e581231241212312a1e5bf941</AccountSid>\par
<ApiVersion>2010-04-01</ApiVersion>\par
<Body>Sample sample</Body>\par
<From>+358123123123</From>\par
<FromCity/>\par
<FromCountry>FI</FromCountry>\par
<FromState/>\par
<FromZip/>\par
<MediaURLs/>\par
<MessageSid>SMc299ce90b3d6d9ad4e0024f047a7998a</MessageSid>\par
<NumMedia>0</NumMedia>\par
<NumSegments/>\par
<SmsSid>SMc299ce90b3d6d9ad4e0024f047a7998a</SmsSid>\par
<SmsStatus>received</SmsStatus>\par
<Timestamp>2017-09-11T13:46:01.633</Timestamp>\par
<To>+1424123123</To>\par
<ToCity/>\par
<ToCountry>US</ToCountry>\par
<ToState>CA</ToState>\par
<ToZip/>\par
<id>2</id>\par
</IncomingTwilioMessage>\par
</ArrayOfIncomingTwilioMessage>\par
\pard\widctlpar\li360\sa160\sl252\slmult1\cf0\f2\fs22\par
If the messages are successfully retrieved by a web client (HTTP request completes OK), they will then be deleted from local database. Otherwise, in case of any errors during transmission they will persist in database Inbox table and will be available for next fetching session.\par
If there are no pending Inbox messages awaiting pickup, RestProxy responds with HTTP Status Code \ldblquote No Content\rdblquote (204).\par
\pard\keepn\widctlpar\s1\sb240\sa60\sl252\slmult1\kerning32\b\f0\fs32 Test Call\par
\pard\widctlpar\li360\sa160\sl252\slmult1\kerning0\b0\f2\fs22 RestProxy implements a test call API for checking its running status, default Twilio gateway number, application version and log level.\par
{{\field{\*\fldinst{HYPERLINK http://11.22.33.44/api/sms/test }}{\fldrslt{http://11.22.33.44/api/sms/test\ul0\cf0}}}}\f2\fs22\par
Will output the following:\par
\pard\widctlpar\li360\cf2\f3\fs16 <string\~xmlns="{{\field{\*\fldinst{HYPERLINK http://schemas.microsoft.com/2003/10/Serialization/ }}{\fldrslt{http://schemas.microsoft.com/2003/10/Serialization/\ul0\cf0}}}}\f3\fs16 ">\par
Test OK. v0.52 / phone +142434\f4\lang1049 34343\f3\lang6153 via {{\field{\*\fldinst{HYPERLINK https://api.twilio.com }}{\fldrslt{https://api.twilio.com\ul0\cf0}}}}\f3\fs16 . Debug mode is true.\par
</string>\fs20\par
\pard\widctlpar\li360\sa160\sl252\slmult1\cf0\f2\fs22\par
\pard\keepn\widctlpar\s1\sb240\sa60\sl252\slmult1\kerning32\b\f0\fs32 Logging\par
\pard\widctlpar\li360\sa160\sl252\slmult1\kerning0\b0\f2\fs22 RestProxy creates and maintains own log file in the application data directory \ldblquote C:\\RestProxy\\RestProxy\\RestProxyNet_log.txt\rdblquote \par
By default, logging is switched off. Logging can be toggled on/off via API call:\par
{{\field{\*\fldinst{HYPERLINK http://11.22.33.44/api/sms/debug }}{\fldrslt{http://11.22.33.44/api/sms/debug\ul0\cf0}}}}\f2\fs22 \tab\tab will display the current status \par
{{\field{\*\fldinst{HYPERLINK http://11.22.33.44/api/sms/debug/0 }}{\fldrslt{http://11.22.33.44/api/sms/debug/0\ul0\cf0}}}}\f2\fs22\tab deactivate logging (1 = activate logging)\par
\par
\pard\keepn\widctlpar\s1\sb240\sa60\sl252\slmult1\kerning32\b\f0\fs32 Deployment\par
\pard\keepn\widctlpar\s2\sb240\sa60\sl252\slmult1\kerning0\i\fs28 Web service installation\par
\pard\widctlpar\li360\sa160\sl252\slmult1\b0\i0\f2\fs22 IIS server (version 8.5 or above) on Windows platform (Windows Server 2012 R2 or above) is required. \par
\ldblquote IIS Rewrite Module 2\rdblquote must be installed into IIS via \ldblquote Web Platform Installer\rdblquote component of IIS.\par
\ldblquote .NET Framework 4.7\rdblquote must be installed on the server, unless it is an in-built component of current latest server versions.\par
SQL CE is the database that is used by RestProxy. It requires no installation, as it is in-built into the application binary set and maintains data store in local file \ldblquote C:\\RestProxy\\RestProxyNet.sdf\rdblquote . This file can be deleted any time (with a possible loss of stored inbox and outbox messages), but it will be re-created by RestProxy on start-up if not found.\par
\pard
{\pntext\f2 1.\tab}{\*\pn\pnlvlbody\pnf2\pnindent0\pnstart1\pndec{\pntxta.}}
\widctlpar\fi-360\li360\sa160\sl252\slmult1 Create an empty Site and adjust the URL and port as desire. Unzip the release package to the site location to get the following structure:\line{\pict{\*\picprop{\sp{\sn wzDescription}{\sv Image}}{\sp{\sn posv}{\sv 1}}
}\pngblip\picw7212\pich7416\picwgoal4089\pichgoal4204
89504e470d0a1a0a0000000d49484452000001620000016c08020000007934245d000000017352
474200aece1ce90000000467414d410000b18f0bfc6105000000097048597300000ec300000ec3
01c76fa8640000598f49444154785eed9d096015d5d9f7e76e59812cec20c892a086285a106c62
b5a252135cd0f64b7dfdac88f54d5a51935a694be5edd7b7c66a4b6b13775217a2562b558b0b89
525c50093b6e212c49d8214002217b72efcc9def79ce393377ee7e73730349787e39997be6cc39
67e6ce9df39fe79c3be7b9a64d9b36ddf8e1e0ba25e74b044110be308b578220083f904c100411
049209822082e03636d172704dd757f73915c5644e304f7d646be3848f771e935b9c575d30eebb
178f4a4e8ce365088238ab70b3264e7d726bfc39578f987a7df245b72a950b8fedbaf354f3ebf7
0eb9f389f531b7147db17afd0ea75315590982386b70930993eaa8dfbbede96f679daa7d65f8a5
3fbf65e4c13f8dfed79804353665d039e32714bdb773dda63daa4a4a41106717ee326189319ba5
e75a875c511dd7b6f38db8c9f31286753925a7c33a247e6cddac07df7fe2cb670fd63589dc0441
9c1db8c9c4d0abfef1c6b0e58a45b59c1c2bab316afc65eac4a54ec5dad624dd953ce8bada7b1e
98fee3c387aadf2e5bf3ca5bab9efbc75ba2988bf23c535eb9889f29821d036c07328b6bc47aaf
51539cd993ddf0e344c23aa53ddcbb01ac090f413fb18633ec7e90b0e66b972c93d79bc06a4fc7
c74044003799881a7af1aacdbb95c363fe317ebbdc587bea8bdf366cfe6397d2e6388c5b9b2cd1
773ef20484c2dffd66e4c47365c5c90a858e9fab287cc2a8b03c2fbb24b74c55d7e5a78894c862
38a494fc7561ef06da50b604878954a7edf66c6221d093bd1ba9299ebf22a77a59965835e27590
59cbaa7356ccf7f58964645416baa7972f2da81051a2cfe32613e6986176bb2c1fe8bc7ee5caef
7cfaee8caf575cb9fb936b767fabecc58e46e685e76f78e37908afbcbb2a396188dd21f352fd8d
8cb45411ebbb545755e88799929fefab919e1e6a56ad9072e6fa561b1f079992bf24bd60a90f55
4b4f9756ac32e844f9ca92dcdc5cb142f475dc6402b8352dede447751df226e70f5e1b7bf39ba9
99ef0c936a9c273ae186f1eaabaf3ff9b72720bcf84cc99bafffabb9a55594f101bba9160b8b94
dd5e2125bb44aa2848d5ec4f667432745336332f0fd260d5bb38c3ad8857859e043a0651a7ab42
bd0eafc3281779605dcfae1f12e410607957fddaaa96d1cf8e7cbc474ed6bcdc8a02cffbb2df33
9699c9bb051cb15bc3debd4a7a25786510045209df07999a9651b9db3d09495b64d48f9ae2c2ca
a245f3c41a3b6481d8bdef93e395cd75e02cb7f7d9e6f9b036fe99b2cd44f7d9b469d3a8877770
cb116838d19e30b22cee96ff91d65f3ca6f9aacb3beebafaabc20b972e5fb761f3c113a778d873
ec44755dfd6ffff49428e3a22c57428b9e452443548f65145563cc2d5e96cb6298cf9514b8b8ab
8896e20212433f0691aa56176588744c74ed066a70256be986721a90a4e7d34abb25fade91d7e1
19c1ac7a16b79abdcf18440df95854cfefdaa586575586e2ee1837e87163a2c74102de75418afb
4ea09048703f2e570a44029c1cb76c7c1b3b0e3d51abd6c7a5458483a735313439f6e517cf57ab
264aff9c70e4eba66da76ab75f58d69455e6703896bff4ea93c54f43287afc89bf97bcd4d1d121
caf826a36811b395e19e2379dd5f6a7657f2bb2e905d525155cd52330c372eafe2be8b0426e831
e4cee3f63c18cbb97a95ee8751ca3af85883966eac4ddce0c088f08fff1d053a3cc8ba0e2fffca
6c764f0c7cc6a0869295fcceb912eed37c5f1c30082a7297184729bcab0213a024dbd3a20909f7
8344fc9813708c8b8af80045f9d28274b703f2791a7d9d1c8f6cf046b45c785e595a9013458485
a74c00d75f37e1eda26b46567c5f7a6f70fbe7278ead8a6afb648c43715e7ce9cccb675f83e1aa
ab2ffece74a7d2c3b109c32dc2e708990fc228d29b80712bc6f0c44d35f2a4e4971665080508f4
f6451b446b3ea406e15e156beca5d27c6859ba39df0ddc0eb2baaa227d8acf2348999b23ad5855
ce3a1cc6c30ff13476e36cf7b1eba4ff63deb6659b886a98cda61fcc19b7fecd3b1fb938effc7d
e3cffff292df8dbd535114d8a43a9d109c4e455115c5d9dd6f3a0ca44c49974a3cc6be83104691
c0b00ac5b50dcdab44bbe1878e3e8687776c9ee48b3076545eacbd51ac1a7712ecedb336b874e9
0acffb346ec8702fe8a72ad00a687fee96805fd300f13e488cc21d5e1bd7f4840d706617788e76
84781abdb3c11ba910031e785e595ad013458481f97b577e4f440d984cd2c4f109bffdafffdab1
6855d5ef1ebfffe669cded5d20cd0a0b2013f027dbed2277a880f9c8ac41bc61652dab2e928469
18e22dccbb88b1c230c00ac15a4652fd7de91710b885f3039a5f952eee6f3e0fa9fb3bca9a5225
de686a417a19fb6233d819439d282949f7962068fe65e95a4156ceab2a6d6c1076e6ae32dc00f0
d3e47c1c64206302813396e1de03027c9c465ff83adbcbca724bd8899d2fe5884e47d01345741f
d3f6eddbaf7edb1cd42dcdebef94c70d4992994dd13cf9f793a56daf3d7bef737ffe5fbe9518b0
80a93f5f2a0df5098ceee58e24b0e7d4aa25d4c7e81d7c8c4df8a4b9b9959b11109eed58f3c789
2755274a0631c049c92fcd59911ada3db93ccfcb1c395de0d35a7e3b3b444f09d59af89f47ff66
77c8321b8f70c84a7b5baba3ababf499bff2ad0471264013427b9833b78c4c895e2354992008e2
ac25d44e074110672d24130441048164822024fe2816e10f3136f1ead52324c984cf4bc01203f3
51c51d55c1125e71a94a66fc2ada29a94e5585a8190b40660d16c5bc920ad97023ac60655a26ac
4385c2b08e2962773c936462af1083ca55a713e3b81d176c3ff80a5938ac6a6d158f8bbf02ac0a
2d9f8842857c1d5f7914965ad5f8c2dea30eab4dc0d28d1b192c072bae9575cbc252f92b446007
b0a6b215b606e96cdfbc201e1d976bb73a007d1dcf0dbeb025a017e6af18e31562cdfcc50d57c5
da1bd56b10050ce8f58a0daeed5acc70b6f0ad41152c8525f28f916fe2ff3c2f9e7a96ce16bc6e
b61516dac78318a22ed81e445158aa8a0c41325925b3d56a31c39fa2c84e59863cb817bc34e18a
d06ae2afbcac78d13611a12164e2c59b1370455cc1781af18cc3a70717b0d96c319955c5a92aaa
64810fc0a4e0a7e48444f87820039e782cc4ffa0913b9d4e9009ac8eed827f26bc52f10c275469
864f1230595813c6a6828d058ec06c820cf8d0a7561aae23cc08c7c01334788d18c3e3c218e4d4
f3f08685794416b1c9c476c7023b3e71d47ca380eb076ec71db00364f93151477b775eb857c54b
b9a589368235f2b307fbf07873ee6b0c1f49da11f93b1224d0361db7ba7d95f05b0b2b09c76f52
209309df180f2c957f062e8cb5e87151833f8c5bb00c2b67ac88adf18007c24af0e09e2b08c6fd
109e089978e1c6442d01cfaec562b5582cb22c8348435b611f02b6c1e3c78fd71f3fd6d9057f9d
d0cca1f94647c744c7c4c4c5c5c5c6c6c741888b3743498b05e5002d026c4cf8a1415363cd0deb
85ad8aac38654576c8b2a313e9eae884bf0ebbddee70d8a3a2a2a3a3a2e2070d8e8b1f141f3f18
0224da1db295c15b2de08a48aa85ef85afb25df26b44dc83f80adc66008b19f60d7f98a065d360
15b8da3fabc8f5cfc08dee8582e1cacd2bd1b40c96b08937253c66f6ca5f5cf04c9ee8d9bcb7f9
c8ed23c9275e3b47422bac4a2813109852f052bc3aef43f559236be05eb8a5e91fa386b62ac496
2540098ffd7ac0f310dd43c8c4f3d727b1b3274e7134b6fee82e86aaca100e1edc77e8e07eabc9
6c339bad665c3acd26d56c564c2a5c2016b3cd628ee24b2c191d33081a78fc205009003a2908f4
3554b50b24066987d0ded1d2d1d18af6035c5dacd18382808ee061a8922d2a362a2a8e85589407
9b2d86c1ead260870b99c166c732500f7b0f78d5b06de2f2612d1f965089d516d5e590edb2030b
880a4435fef0141337825c765e2531bfbe5758c10c70245ef90c04393c0ddf5504aad81ffa0ebd
0b438aafc351253ec1074e34e4d0337967d56af4538f071e59b4c23a7c3bdf238fe8fb3516f52a
e7c2630f846f844cbc74e350bc7af102c6d667b35aa0615a2ce696e6e6dada9a8686066863d09a
131313921213b1ab00a604de3944b3042bc0de05b77c87bdcb8e1d04900f009fd9c46e06330e40
74d006b1454545d96c2af4619c0aec017684cdd704ea82e282455993866370c88ac3a1b0a53316
8c95d8d898185cc031f3562f3e7df641c31d9a7fe07c2960ed1bab1706822adb3bc11a4a181c7f
f204bc23d86446a580c0b7bbd0040410853d7300900552ddf62810695ef73f81b108e64099f055
8dcfbd6af82e602040593f845002b2f8d83124f1545e035ff21463ba0e3b31ae7a5cb1d0301686
08b374310d963cbdbb1512411032f1f2bc61d85a70681297d88424a9cba11ed8bbbbfee8615b54
f4e084a4a4e46116ab4d94f38b0afd09f873ca0ea84b91c112c17608f0e66ac23e8719ea012182
ee09f4015883f4fbb9a2cc280a1407f581c3888d1b048222b685c5a1fdb5375cf91db14204c4a3
7107847f82bc84de8c8d1f6b772a0b88563b5c5762079a1cb3a51fc1257a822613370d63e79837
699009b5e9d4a986e3c7eb8f1d8e898d1b3a62745cfc60963f0cd020756207c5824a1416ec90c0
46b1e0b0456c2c56152e2413a1c32dbbd0804e87a1ad22013e6b9fd586726db082b0f0712179d4
e9af362c2ca244c8e832311c2e09fc1249c591043895fbf6edad3bb037362e7ed4d8f1701b17d9
cf1cc210013b242a0a16b02a36741390891bbfef26135d751f47edfc05d82c4ed390ce943f6c6b
9cb0aeb65e6e7166a48c9d7ee188a484b3f72711bb231370cd84f989741bdf2d5ddf3ba940e471
5913b8020a81fd0e67437d7d4d75755cb475f8a8b171f1f13ceb1905fb2bb0008db0596d2016f8
3d4b58804cdce42e136d6f8f197ed1adb183a214dbd8135f3ff761ebf0754d17ff26a13cefc0ba
ceaecafbae187de5f42966fe60c6d98adef28c2dd4784634f31fd0a5c54773359475f50d029c59
6315982d4056c090db703c1e4015fe36117ed11b9b09f4013d52b1d0d5d565b3d9862426b3be06
e439d30135825d802a7eab19b646f8c4a43aea6ab63ebeed52ef9f441c377ec20bffa9d9b4752f
c8a7c87d36818fc0b0c06f1e103ce2860c3a7aa221ab1674581111b4fc3e829e07033e76c7831f
d00c66d930a73f026c22fc22da1bc4b8ca5aac567c8ca1cb1e1b1797903c141fb4740fed4ecba6
c6646cb9bd193a5a1a2449d157e15e8e7f7821f03e5144613f89f85257a2cf9f44bc6cd1fb2fec
f8fbe163cd22730459bd70d890681616ae11493de18307446d10ae7cae56a4f60466c0f595c00c
011e5cb8ad20228f47590a3d0caedb32d309d56ab17674e0f35371b1f1368bd5d0723174c8d6d7
f78ffbf8d8b08d0d433d36453074369d683b79f4d491bd26a793a7e0a1b2c365dfc538b9a2458a
d88cd257935e0cf093888b2ebdb5bd71dfdacf3f2b5bfd9f7fbdfb9e28d6436a9fccfa91f4cfe6
ae06085f9e5fb31a92a09d87d8bcfde5bcacf04bac70d363d292bc27f788c49e205a5ddf080257
12bf2ef0c53d07a2a7518840d0ac0909bfb0046b5e5664b026e0ec833581edd210da14eb3ff69f
53df15353cc67e7172b3c7d60886d821c9b6e858d9d175b26e0f8a024f6787abaa201d113628cc
89d3fef3654dcf7f12116ee322160ab53b37cf3c7f128f4fbeef6773782c324cba67f11d9bde5c
dd6383c27599f4a1a0bfc25243bb3c5c170a858806cd9a60edce6c362bb2d2d9d109a73b2e2ede
98b14db1fc63df58ae11b74f3c1c6765732e7a27982c96a431936cd1314c296a5515f62580add0
3f826e2b3be8c8a0460d8dd44f22764329e6dc70c7a607173ea3376530106e7a59dab0e492e861
f91fc0fa9a7cad07c156b905f140fe952cd12d6760bcea61860c4bc97ae6499755a225baf780bc
3e9b331bd8052082077a3a09452f04dd9ae04b665398c19488659f082e20b4cbd67fec151af193
8947e22d4e7d532f05b3d99a3466b22d2a56b177351e019b42530a71e0919409e0e6d4f323f193
8808b434110bc2758f3757ddf4761ae47f007b1cb0face1dbcd7507c1dac5f53ccfa2390f8d2a3
5aff62c38ef35e1489869cdeec79e6d19767fe68ce648c7bd5f3c103973c78c19b98f8b4f4e6cb
988527be7913ebb034bc29fdd5255e7d0cf8d88d41c75f3a1121f4b10961c7836e804d11171b2b
9aa5c9d40e7d8dbd634023606b7d67d4e33b2614564ef60e2277581cdbf3ad77a8df5725db3be1
8864508ac37bd0432f2a04fc43cf23c2d7c2cd33c7381b63da2cbb0f0fff68cfe4ad2767542a59
9f74667e0056cbdc9b6ebc2b2f17c2bdf72fbcfbeef98e107e762064a598fcb3355d0d5ffe65c7
8fb852b8230638c170d0b9eca61fb0a6ef1766620c899ef99bf47faeb94ff4683ceaa9adde31f3
2ff7b23e0ef64d581a266a6587fde8f9cdbb42f945b53e00e9c2e9c2604db02f3bcc269cc16f32
9bc0b447bb827ffd086d331838b2117e08061e0480cf79c302d6c55e23447252ec334fa744e227
1111b8278b58284cbeefe9c72e7b79957bf7c135c059553853a4858018c26c687efa1a9ed08d7a
ee16e3a9105c468ade10fb540880474e0a91099a4c401c5f24b3c564b50999305b2493458a8f56
7e927a6c542cde4587c5387e997ef0ff5db2cf3b40ceb0c3e829d3bcc3c8c953add1d16041d862
62869d33d96ab5c2b182604109801d6e249973cdf8e58f7e7ff8ba2b7bf89388a16ac4ea27b5ae
44edeab7375c7a9ebbef787d80b3b6ec9d4d3c292cbceb999c7ac1a6079f62c60bf64d581a264a
cffbe86bb85d2a7d27e017e37e82474e0a9109422658a71f87051459898d89853eb9cd1665912c
16d00dc93cd8aa2e48393e3ad6ded0692bad19d5eeb0f1f4de0b26c5d978a8d669b74747c70d1f
9b6ab544a13430cb0354cc1a696b02009369f6ecb11fbc7cfb4317dc9dba675cead68b1f1cf613
f48e0367893decc3a6a005f949c46ed81173527773237f48da92a9ef94df03bd89ebb217680393
731e28941e9c095bf3765ee0c30a30e40c8c8f7aae7bfccdbb5ffe11ee7aa1f423d1e980c42fff
22fd06074a308430324a9c55b82692c38d1a9aa1ecb0cb0e47537373725232340c689cecc92ba4
43362faf1e5ed7110536c582d4fac136e6d9a517803b76c3c16ad9d1698b8e1d3a36c56cb1e268
2a3322707835dae654cd76451c5577f17e583b001faf5d1b333881ffd6596747bbc321afaf585f
f83fbfe55bfb3dd025b964e72ff51e8a37da474f9ce568d604fc81c986cee97086555c5c1cdcb7
4136d88880203e4a5a70de89d1b10eb0292a4fc58bd45ea0b3f594227745c5c60f1f37c56a8bc2
243e7e6136d9ac684c84345812097046bc4667da6313a6ddc6ecda01c29a271e743dbbe10b666f
52a060ec74c03ade3d4c669489786894368b0dcd7cd646791864537f7afe89ebc7377f6f549b9e
18f130247964d2887123ce49054d1089e808c764b598a34124aca749238081f89388b5cf5dc33b
3bd1b7be74b7eb0b115fe0d36c142840e09d8ed21b87a16aa04cb025930db88b33f7b612dc4bf9
757346e0aa00c6447494157a1c70746d5d8a5d0ef390bc279207a0f8a9a7bd7f12f1af7f7a946f
1df090871782e32d1300ca04344e90098c3b1591dc2d82def243ac93d5c34c094b6c8c0d0ea8c3
ae74d89dce708e09e9964c9ce5605794207499587ec350deefc024ed05fe989f7c100a6dc09035
4e630375bb8e5815d073816e02480e4a0d7a9964b609a432e9e1fd1a9e4dc40cf09a5d89ac88c5
628ab258a25022a42e59ede852e41e3cac0d3241deab42c6e3f321ce520c32816bfa1fdbc65e60
0d221085179c8885ed1b5ea1d5438054b6c48d2c177b6511568cc1b643397811ffbc0eae19dc39
80483599a13a27566a36a98a495262a26dd8d190cc103a3bed1d9d76c8083bc7ecb00756b9194a
ba7f458ad56a80666165b82bd5a2ca87f6565f7d65a65595c156b258ccccab41cfba54c69d11c4
404493891b994cb014debaf555ed6b068cf044586a3155180cacd5627bc1a5f6a7c3338b2491ce
a5844720985deb9801aa54c08651140bf3f18dfb90cc5d76d9cec62498aa603e48c580e558593f
404e942255951d5d0dc78f260c8e6f3cd1805fa030f736eec745108427fad8c450beca969a0ab0
550b6b4edaaf7401fcab07366c0101b3a071211e41c29b337e39c04c047197163f42e16a876031
a0e6605d6c69e175c352729a2505966052d81d8a1da76d9bd85c0ef43b21cb8a83f53730b0c60d
1b5063a04a7841ad72c1f709a0830a275be23363366b5494c321db1d0e6dff7808c683eb363d28
4a10fd024d266e32c884b8ee59eb8380f025bbe723b8d4f2c1125a20bb5df31e094fd5228868b2
aedbb6a89655037fdc5e817fd8880bb6445b42e115436e68c9265861eaa3ed98f73ab80ae13fc2
12781481552cc53283e2a0c37fec68e04f88e08e39c61286a3f68fb6b31e11ca8e08a24f609409
edeac70b586f095a8f42bbac7174926d66eb2e3560b9c436d6f4302b5b1a1a84de08d9ab495bd5
4ab8463b20e056141ea709ad122626b095276321dc3326b072185385d5026084ef0264826d8600
11c8644659617d25d8aa1510c7a1bd19bd9e8004c805d504de4a10fd0921132f814cb8ae5e7689
6babac71e21f362a7e2f174bd8c8db15b43af444c773f14df0c7da31568039b01ecca2d583c510
5689f6c70a600d38e681f68316200f64143bd34a4004b7b2cd3c13a4f2570ec6312726b33a21af
d008633606afdb80e7ba3fb41d6344af16e322ca611b5c49a1564e107d0221132fdc988c6b78f9
6a97ba06efc3b3b10330fbd9b8038e3c68e30e6c81bd06cc0159ccecab03cc027f2c0baf92f72b
580e3670c84ab27f96134505cab0ac900a0d0e072c5866a85adb2bfe63595e92bda236c19a7ed4
6c83f13df004a614982eec08bd029e95a989c81b0863c51c48f1161d962aa204d1ef11325134e3
844830b4200ebbfbe3121a24bf8be376edeecb9b889683e5c10cb8c05796eecaa02f75588dee31
5135b33b505b789d988e70e971ab83adf1420658026ce1af623313155fe0768f2a3c8ed31d1fd5
60929fda7de2592541f455844c1cfcedf922c103762df336044bde1260e9d6d641580cd93c1039
61c9550096867cf082428092c072b23c4c14e0c5b50f5fb1c8208ea307781c518043f5b1af9eef
9e207a1f66ff23d83c458056aa07c32a1b3c1481e1568805dcc66270cfc7608225e67365d0633c
e030011ba7c44de26b0c8f3caed2b8601978178207b64dbc88c02bf111d876dff82c0e6b7a5c1c
249c0416bcb28b7ab408bcb07380dd29115c455c8120fa039a35b1788a4810182e61d60cf0e608
4bbc43b2af23186858a029c0db09e6e2ed051b3f6e87760caf7a605b45c5f8c2a3621b8e5af214
6c835a7e0ed482057912db3bfeb364de42456ac81833e34eb41d31c40a7fbf7c850b120eaef263
61491c7e245ae019212ade2a7fbffcf09819c6fe09a27f216462ffaf27733130a0ade22b6ba7d0
90b11188a6c07a095c26f8780466815b266485f6c49a05a4e12b14601156930b7d4d680ae4c79c
ec9b0e568a8335bb9220a23539dc2fea046440b79d1eb5337812ab3e045c15b023823721cc065c
a23371b60d77cfed0900977838ec687083c8ce8e4cd80f7880d8b1821cec97898ce09b2388be8e
9089bd0f4e60d73460bc70591cdb2f5ff266231e4460ed02023e72850d42340ba111f87802f652
b00db1a5debbf18295c3ee09361a6c486c828619aac28d7cdf6c876cc9db29d70a264fec5b1293
058a607e8121eac2a3897a8395e341e03bc03781492a9b6282495827af02a3bc818b3448e54f9b
c33a9b700285c4535dfcaca04ae083a4ec3931518e20fa0b4226f6fcf25caf6b57acb2f6c09402
5e14c9ac484e8b0ac16c355b6c66559624993f0a0d4dc02941c0195b66b3553559f12b4e561cda
9090098f7d202adca845d3632fb0869a609165b3223bad16a7d5aa286659b644599428b3d36e56
1c26c5e6b44539a3b86439e09840553c612958255bd35e7ce3599abf5f9362ee52cc769b1a6d73
46a9aa4555cd66b3d364521c921d82d964339bac2607048b1ca5285172b4a4c6486a9722753921
b7c5ca4e07ff9111fc4618aa153201781f3041f4512c0b172e7c7987e9feef268804c3e50b315c
61092cae9a6593059a299b7701ad16807445468380c904c8832cc916d56191ac92095a31c807fa
746126b7568fa84c04d73a64e3ebb8844669b7dbba3aa161aa36abdd61e9b2dbac1635caeab45b
eced964e8bd36243d1305b9d1687057601a1078803d11107229b3bed96369b1a15e58c33392df8
e3c7e8dc4b75983abba456e8e958402ced3673bb158ec16e9363cd4e8b4576aace36fcf5538b4d
b261e7038d2d1429d03e562de0b93f82e8cb68377917683ee03c081681f6cf1790e0041bdfe674
c6c1ebea82c183e2a263a3a2e362acb1b39fac910efd6d4ec2e54fd65a1479cd0343b29e3cecec
34c9f06fb24b66d9c99eca62f5f03d78c276c41ea6c6e68eab282e8a2d5a894fb64bd1ab7f1e3f
e7d99df1b62e5027bb22d9debf7fccc20a73cd939727643e5e2db75b3a5449e615850f3b04018f
a3ee382d4e5bb46370946a6e57572e1c72c55ff7b59f929adb1d0e8b6a9594750fc6dcf8d44e67
a7a5438a97ad6639caee747459ba3a63e4ae8f17c5cf7eee80051f1bc3b3272c25a85b3b03face
08a21f2064029f713480bd051ee0c2e69a0117bb8206b45d521c56b8e8673db6a5b5b9e1647373
d37f169eeb3ce7bed5cd9f2e9ca040e3ee92a04fa0da1413ce04879a4d562cade06c2bad5ad65c
44d01261ab82163a972868588aeaec541daad9796dd6822d55b592d90172a028ca87efbc7ee7ec
2c697cfe9a536b7e360574431107dd73f8a16840bdaa6286fe4da78c3f8dde25d94127a3d03650
ecb26473c662674b368341d565ee504cb299fd0cb25d9165d56292a2d54ec5a1dae16dc3a943a1
156f96f9d5c44010fd066f6b2238018a04d81436ce49e7cd2c7d770d3433e4a37fbf72fb8d737a
6c3e7413eff7e59da213601341f447c29109c0abc847f909739eaec6af1ef44de69a6767272625
00c9f77cd403335b99f4831b2e5bbeea438c9b3f58f9f2ffbd693656e6daa3c78e3eba3ff1810f
30b3679e5f96f1d4f0f03e4b01dea9b6090fe0b90f9fe35bb39edcc31209a29f11a64ca8968dbf
9d312491c1db2454626563045ae4a3fba6fffbc79b1b1a1b1b5b5eb3fee5a91eb41069c28d732f
dd51bd17a2ab5795de953d5b24fbd9d1b5d977bcb0ea23c860f9f09ded973adfffa016e27bcade
8a9e703e2b172e86b7ccb8a5d424fb7ba7fad98052bf7edc5172e244f39647bbfee7ee921a6114
11443f224c993029b3feb4f9c449c65fe6608a5e098f986b767d6bdafcab19c9494949837f5c5a
b1bb4737d209d7dddcf1feaa3dea9eaadd979c3759b4347f3b824eca25bb771c54e5f75657fef0
c11ff282efae926ffac1785e303c8c6f99f1e67cd50ae93edfa97e36b0d4933f9f28a9f2a4bcdf
fe64ebce1a346d08a27f11a94e87a74c0016f58e7f9d387982f3b7eff3c4f0807ec72dd25bab57
af7e57bae9ba490a4ff4b7239eb9ace6930fbfbdf19a6bae99e7aca9ad59632c181e01deb2f73b
f53e1b92bab76ab7670d04d12fe82d999027a54e362fef515fc380533d372b3b7af1ad8bcd59d7
8f55cd3cd1df8e78e6b7162edd3977ee0475c2dceb77beffd47663c1f0f0f7967dbe533d739779
e3bfcbf741c45453feee86f959d7f26482e84f843b36e15d424f1191ab9eae7858fefdcc618c11
bf58c353c366d29cb9d34dd3dd3a0efe7704999d5b9c3c33c4b7bfb2bd873d0ec4ef5bf6f54eb5
cc51ce9917ec5e08e949b3964c7dedf1abf07b5182e8678887b5bfc9e32e7389c8f2f1a2118f9f
b7e1fdbb03fc502741f479844c7c9dcb9cdc85c6c89123454ce3f8b16322d60b8cf0da1dd0ab7b
f4c6e731708e053a928f7f35f26f53d6bf473241f46b844c7cf5df49228188241fff72ec5f2ef8
bc8c6482e8d70899f8f2ee4491401004e18e90896d77e93344098220dc1032b175c11091401004
e18e90892d770e1609044110ee0899d83c7f90482008827047c804f385491004e103974cbcf0d2
0b228d2008c2809b4c5c90728148260882d010733a088220fc413241104410482608820802c904
411041209920082208241304410421549938fceffbaf9e73350ff7fffbb0483dcd6c7efc4cee9d
20ce564292894d4557dff1ecf6b98f7cf4d16a088f5e29924f0b4c1a1edf2cd6088238fd842013
47de7ab54c92b21f7de052be3ef387378fe5b1d3c0a675ab440cb8f401d0a9274ee3de09820082
3f8509dd0d6e4a6832a101f7f987441b9efaf397b1f5f294b4a953abb66f87d4b47b5e2efae158
9f891039f2d6fd773e83297e12a1cedbf7dfb118148a93fde847995f40556efb6204dabbb4e9f1
398b453ea8a160268f1204113ac1ad89c3fba1d14d3dd7e316cedb2434bcd51fbdfcf3a9db9fbd
c3d02fb8f2d72c51aa7ae60dbf899b1e073960c53f5a7ecfd4aa67ee28da2434029a37766dd06a
9859f0d1a3d95818fb3bc6161ef2de371581464cbd6739eb2e9146104458843884b97dbffbb821
ef0bcccdc4863776d695532569d5ba4d6c8b244d18a74bcabe435a318fc4cd5f60f9b2c53826aa
990f8737ae4541baf2320f45f226f4bd8f3d17366e7fe64e1af82488f0092e133333e7c2d2d5e0
23c1e143fb60099d05bcc9f3a0ddea279c135425bac1d89b9ff8e8113c7eb038ae2e788ba48220
c220046be2d21fdf9386cd4c33ec37bdf5efc346ede05600bfb787083701b63ffb86b00136bff5
d611cd2ef8875b6366e68027dddb3b0e7c3e8a050882088b503a1d637f58f43228c5aa87f87313
8bd7421ab4bd47e6e22d7a0e7e570a7681e7006760c6fcf089e5f74c95562de6cf623c84558ac4
aa67ee303c9d31f6e6dba185e3ae8bb46e0510f2de37158963c6118a5fb151528220ba09f99b20
082208210e61120471f6423241104410482608820802c9044110412099200822082413044104c1
ed0bd1bcffce13c90441101a96850b17bebcc3549091f8e5575f4effce74914c1004a1e1664ddc
7dd7dd2299200842c34d267e7ae75d2299200842c34d26ee9abf40243376361da8a9df131b6d4d
308fd85b175bd7629933cd747ef268b1b9fb6cfbf2cbc6c646880c1f3e9ca7f8a4bebe5e96e551
23474e9b364d24758796961687c3919c9c2cd67b4c734bcba9c646a7aa5a2c968ef676c5e91c33
7a74424282d84c10031d3799b8f327f379aaaa4affacf96cb5edd189ea82f1b109f6a8efcb4d1d
5fd57624db9b2f18b7ffc7e75d151365e339bbc5e75f7cb17bd72e68c0575f7db5d309ed4e8525
dfa447cc66f3c68d1bebeaead2a64efdee6597f144235f7fb96eda259962c50b10885dbb767576
7682129d7beeb9223504fc557be0c00190ad68061c9ba228cdcdcd2693293129e9dcf1e3ad56ab
c847100317b72f44a1dd72966f58ffaae9fe739589f3468c9e337a5463e2e0af6393634cd6861a
cb9eae6f5edcf08e435644d6ee603699eebaeb2e157604fa046dce62b1da6c102c56ab2d2a8ac7
21c056ccc674c41b38ceafbe5e2d56dcb13b1c7bf7ee8525d47ca4ae0e8c979ada5a3db4b5b78b
7cbef0592d943a7ce4081c5b42622204c8d465b74b26537b4747535353757535a886c84a100317
3799805b3af04dd5f1125b8139da3c69c8e0b109a33b63678c8fb3d924b0b51d0ec574aa6aea37
9b4f7cf0c5769eb95b3864f9830f3e405b05f60c2ac082135a1a8be8e9b07ce79d77a0dfc14b79
603c544e6b6beb4ec697dbb6c1adde6ab1400dc9494916b3393626a6adb5f5d8d1a383e2e3eb8e
1c11057ce15d6d43430314814a62a2a3a11ed0b8e8a828fd20a1f771ecd8b183070f8adc043170
f121132b3ed8d2dcd87a6c9ff95b79f83f9d176e76461f6c531cad5d1d76a7c9dc55b365d877ff
eb9b4323de9215108e6e0337e4504280aa8d87caa96f68802e406c5c1cdce7a12c1821f18306c1
0d1f8e70ff810360059c3b6102c471937fbcabddb3776f675717d820b06c6e69810a210207c6ab
6a6a6e1e396a54474787c84d1003171f9d8e8ddf7c6babf8dee0cf9eacdaf7932f6adb56ef6bde
79a0f5d4f1aee646a5f1a8333afaa46c3a5267a93ed1dac2f3770bb12786778a11d8c0337820b6
1a80ee0b101b1b3b6cd8b0e4e464be7aead429c83664c810b035c0c4003c4a79c06a75cb70fcf8
f1aeae2e87c3d1dede0e5d0ca8b0adadcd6e873e8d03d22d160be401e100a5e0f90962a0e22e13
ccf86fdce7548fa91dedc73b77349ea83cb27fdbd1bdeb76346dadb41eda39cc7aa2a3f9c45787
8e6ca8ddd1dc758ae7ef56802e06b4457f0132f00866f32acb83f150458aaadaac565842cfc261
b743a7037a0449898913ce3d77f4a85110468e180101128da53c8277b5901f6a931d0e8840cfa5
b9a9a9f1e4c996e6663b6884d90c9b200eda01198ca528501878c147a763506cacfdabf152cb71
b9b2a36b6b73c2d6bd0fa574dd7da1f5bae9f1b7cc4bceba32b1a17672c7d68c68399ee7e70c1d
3edc1844aa175c9cfc01c7c0233c2b2be189f15039fa382244c07680654b4b4b4c4c0cdcf6753a
3b3b45b57ef0ae16ec05b023a0365842b5b01c356ad4881123c0661933660c44c08e80448f5204
31f0f0d1e9983eed5c677bac63f7a0a3a37f5d37e6beb113b78f18926472744e1a39dcd4651f3e
d87c7bfc5d5943ae4f1a1cc7f3738e1f3d2a6a9124888b542f60979001ba0010e799793a000d92
b77048e4d9c406775821b74d7c1596f5f5f55010eef0f1f1f1d0dd601905269309963cbf4f7836
b1c2183a7428ffbe13f40296d0918144a81f7a3710898a8a4a0212136d51512c3b410c58dc6482
73c3756951268b79f0b1939d5f1e39ba69975ab6df19bbe360434bf3a96debd7bd5fbee6d3ad5b
468ee88cb261e331c295c2a8171ef0c66fb3d9befaeaabb51a9f323ef9e4131ed9b46913dca579
fe100171017ba1b6b616eef950363131115a38e802ec4e07deaac81d32a3468e04ad494848183c
7830e80ea41c397204044e96e513274e1c3e7c1896900e1d109e9f20062a3eac8919d3c766ff60
d2a0b68429a6ab93ccc95bb76df9fdd2bc7da74ed45be20f1d3e327ce4c89cf9779a62a20e3734
f2fc468ed5d589984f601feccb8891a3464d983871d4e8d11026a7a44c9a3c1956274e9a74ceb8
718949491dd041f07fe7371eaa4092dadadba3a2a3ad365b4a6a6af2d0a1668b850b8367f08f77
b57687232e3efea269d3609bc56a9d76f1c58ad3d9d2da2a2b0aec2e2636168e1904a8adad4d14
2088018adb0cd1b4f3d1b33698e7332f1dbb6bd75ec7912923be3368c805b127d5da9dab37d61f
54edb1c9a71a1bedf5fb53bef3dd2f0fd477b6368f1d96c41b5828ecdfbf5f91a1952970a31e37
6edc375f7fddd2dc3c722488c6a8b8b8b8d89818b0e4a1d30180b51f171b7bce39e78892061a4f
1e934c8ee424d7a6a6a6a6218307435f20013a1ad0e055153b18ccca804e8208aa0a86467292df
a3f5aeb6a6b6163a1ac78e1dbbf0c20b870f1fbea3aaca61b7b7b7b5c131433ad82f4e45193468
d089c646100b387e518c20061cbe0de6d858dbef9764675cd019f5952dae6ee8f4f179975c94ef
90952152f3dc192997cfb8e4e48ead5192bcab4529ff7c83281302dcf88725c4c1748796062d19
eec600b461feed23df1a1e509603d50222355ce050e178a08b0471de0f425965e314a06263c78e
1d3d7a34bc0bb3c974ead4a983870e6119821888b85913179c77be4866237697ce987a79dad4f3
d4f1133a632f9d929c35332dfbcacc8b2e4c879bfc79a9a9adf575078f9facaadd7fd5f4745126
18fbf6ed8376058d2d3939392626068c0b8843cf1fe2900ecd1b96adadada01a2693090cfe73c6
faf8fd9dc6c6e370db4f4a74ddf69bd9f71a505cacfb01aa0d301fccbbdacece4eb06b2ebef8e2
6fbef9a6a1a1e1bcf3ce3b74e8101c2d44c69d730e5435283e3e313111d40e7a228d8d8d634687
3f298e20fa324186dfc0d8feee6533b3b3afbefacacba1c1400701eeae274e35efad6f740c1e61
979568a553640d0593098af3af0f401132323266ce9c09bb80160e7a0189a04d1cb869876e0ec0
3dbfbebe1e6ee99c93274f9e3871021a36f417eaeaea8e1c3902cdfbc081032040a240688c1831
02d467fdfaf5dcd2d9bc79737474746a6aeab0a143a183034206e9d0dfe18f94732b832006246e
33446fb9719e48f60334e68e2efba186c603c71a8e9e681c316cd8f7d226c5c6448bcdc18046bb
73d72e68ff388e9098d8dad2c29a18025b411d6053277b780922e3c68d4bbbc0c7af90eddd53a9
9adb264d9825d62384cf6a41598ed4d5d53734c01b0775007b41ff9ed56eb7b7b7b7838502070c
6f67e48811a414c440a57b32d147d8b36f63c46502e8a56a09a2bfe3261337df709348260882d0
a0478308820882db371de74f394f2413044168b8753aca57558b648220080d379958f8f38522b9
fb6c3b26226709df1929220431e089f0d884b9ede0e8cd978edc7071d2965ba4e67d8d0dc75757
6c295fb3e9e4d17ac9298b4c0441f42b222c13432aae4c1c3b6b6cdaecf15333cfa9bab6eeeb5b
f6d7bdf47fa51fffa5dcbee8ef9f349dac17f90882e83f4458262c6ac7dec3cdcbf7de70aaf6d5
e197fefce611fb1f1bbd624c821a3379f0e873cefddb6b156da7f0773a0882e84744582654cb10
b349fdebd1ce2baa63db76be1137795ec2b02ea7e4745887c48fad9bfe8b775ff8e209a7c32e72
fbe4e3bce9a34c2ce4ad13493da1fc11511b84ccd7f6895482204227c232d13aebfd0dc30b9d16
d57272acacc6a8f197a913973a156b5b937457f2a0eb6aefc9bb30db71e4eb7d5bd76cff62d5a6
356f89623afb8a17dc263d7154dd0a6143dafe8f2109da7988cddb5fce8c5f6ec00a57fe41faeb
bdc50745224110a11261999063c7bdbf6db77c78cc3fc66f971b6b4f7df1db86cd7fec52da1c87
716b9325face479e8050f8bbdf8c9c78aeac78cde9dc53f5cd8cb4f13c3e21ffb6d93c1619c6e5
2eb965cb8acfc9a020886e126199705a62ec0e593ed079fdca95dff9f4dd195fafb872f727d7ec
fe56d9db045b332f3c7fc31bcf4378e5dd55c9094320272fe562f6bc5bb614fcaea446aca28190
fdb654f1d7cb4cd31795c3faba455a0f82ad720be29145992cd12d6760bcea61860c4b595052ec
b24ab4c408f58008a25f126199006e9b7e61e3c7751df226e70f5e1b7bf39ba999ef0c936a9c27
d0b1f5abafbefee4df9e80f0e233256fbefeafe616ef99dd590f1dadbef6dd5468998f608f0356
cb6ee1bd86a559b09eb994f54720f19542ad7f5151935a2a120d39bd395852f8f68c9cef4dc0b8
573de58f5c5690f21a26fe415af13666e1892bae651d96adaf49cfbbc48b20ce2e222f1353268e
b2b4c4b659761f1efed19ec95b4fcea854b23ee9ccfcc0a94a736fbaf1aebc5c08f7debff0eebb
e73bec3ec732536e7b5fddbaa1a8e636ae14ee88014e301c7432ae9d9322a2be6126c628d3bcdf
a53ff17efe389ee651cfbedd35338aee607d1cec9bb0344cd4ca4ebfade49b6a7a4495384be99e
4cdc7ffffd0196cb1fc1a564b6befede0cd3ce49d23f271cf9ba69dba9daed1796356595391c8e
e52fbdfa64f1d3108a1e7fe2ef252f71cf71be9990ff873f64bc5deede7d700d7056ff7286480b
013184b9f5e832f18be3dda827578ca742f063a410c480a77b32f1c4134f0458def9102e81e4d1
c3defbe74d93bf9923bd37b8fdf313c75645b57d32c6a1382fbe74e6e5b3afc170d5d5177f67ba
53f11a9bf8b858eb4ad47cfe6ec545a9a97c45a00f70ee5bf59f2d3c292cbceb993025654bc1cb
cc78c1be094bc344a984fa1a04118e35110a0923925e2fbd6bf90ffe7cf9d11997efbaeac969f7
73a775dccf35fb1972fca9629ed9c5ec297bb9913f2af5af1794bd940bbd89acefff441b989cbd
e89752c13cd87a6f558a0f2bc09033303eeac97ae8b5dcb76fc35dff4eca119d0e48dc5024fd0e