From b485aab7e71c1625cfc27e0f92c9509f42378458 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 5 May 2024 13:19:16 +0200 Subject: Adding upstream version 1.45.3+dfsg. Signed-off-by: Daniel Baumann --- src/web/server/h2o/libh2o/t/00unit.evloop.t | 6 + src/web/server/h2o/libh2o/t/00unit.libuv.t | 6 + src/web/server/h2o/libh2o/t/00unit.mruby.t | 6 + src/web/server/h2o/libh2o/t/00unit.mruby/acl.rb | 179 + .../server/h2o/libh2o/t/00unit.mruby/trie_addr.rb | 64 + src/web/server/h2o/libh2o/t/00unit/assets/1000.txt | 100 + .../server/h2o/libh2o/t/00unit/assets/1000000.txt | 100000 ++++++++++++++++++ .../server/h2o/libh2o/t/00unit/assets/index.html | 1 + .../h2o/libh2o/t/00unit/assets/index_txt/index.txt | 1 + .../assets/index_txt_as_dir/index.txt/.gitkeep | 0 .../h2o/libh2o/t/00unit/assets/read_command.pl | 12 + src/web/server/h2o/libh2o/t/00unit/issues/293.c | 116 + .../t/00unit/issues/percent-encode-zero-byte.c | 46 + .../server/h2o/libh2o/t/00unit/lib/common/cache.c | 84 + .../h2o/libh2o/t/00unit/lib/common/hostinfo.c | 53 + .../h2o/libh2o/t/00unit/lib/common/multithread.c | 157 + .../h2o/libh2o/t/00unit/lib/common/serverutil.c | 95 + .../server/h2o/libh2o/t/00unit/lib/common/socket.c | 171 + .../server/h2o/libh2o/t/00unit/lib/common/string.c | 335 + .../server/h2o/libh2o/t/00unit/lib/common/time.c | 48 + .../server/h2o/libh2o/t/00unit/lib/common/url.c | 662 + .../server/h2o/libh2o/t/00unit/lib/core/headers.c | 53 + .../server/h2o/libh2o/t/00unit/lib/core/proxy.c | 49 + src/web/server/h2o/libh2o/t/00unit/lib/core/util.c | 435 + .../h2o/libh2o/t/00unit/lib/handler/compress.c | 125 + .../h2o/libh2o/t/00unit/lib/handler/fastcgi.c | 183 + .../server/h2o/libh2o/t/00unit/lib/handler/file.c | 752 + .../h2o/libh2o/t/00unit/lib/handler/headers.c | 127 + .../h2o/libh2o/t/00unit/lib/handler/mimemap.c | 127 + .../h2o/libh2o/t/00unit/lib/handler/redirect.c | 82 + .../h2o/libh2o/t/00unit/lib/http2/cache_digests.c | 78 + .../server/h2o/libh2o/t/00unit/lib/http2/casper.c | 133 + .../server/h2o/libh2o/t/00unit/lib/http2/hpack.c | 511 + .../h2o/libh2o/t/00unit/lib/http2/scheduler.c | 563 + src/web/server/h2o/libh2o/t/00unit/src/ssl.c | 202 + src/web/server/h2o/libh2o/t/00unit/test.c | 202 + src/web/server/h2o/libh2o/t/00unit/test.h | 76 + src/web/server/h2o/libh2o/t/10http1client.t | 13 + src/web/server/h2o/libh2o/t/40bad-request.t | 28 + src/web/server/h2o/libh2o/t/40env.t | 80 + src/web/server/h2o/libh2o/t/40max-connections.t | 80 + .../h2o/libh2o/t/40memcached-session-resumption.t | 62 + src/web/server/h2o/libh2o/t/40protocol.t | 63 + src/web/server/h2o/libh2o/t/40proxy-protocol.t | 153 + src/web/server/h2o/libh2o/t/40running-user.t | 38 + src/web/server/h2o/libh2o/t/40server-push-attrs.t | 65 + .../server/h2o/libh2o/t/40server-push-multiple.t | 66 + src/web/server/h2o/libh2o/t/40server-push.t | 245 + src/web/server/h2o/libh2o/t/40session-ticket.t | 133 + .../libh2o/t/40session-ticket/forever_ticket.yaml | 6 + src/web/server/h2o/libh2o/t/40ssl-cipher-suite.t | 38 + src/web/server/h2o/libh2o/t/40unix-socket.t | 28 + src/web/server/h2o/libh2o/t/40virtual-host.t | 83 + src/web/server/h2o/libh2o/t/40websocket.t | 114 + src/web/server/h2o/libh2o/t/50access-log.t | 281 + .../h2o/libh2o/t/50chunked-encoding-proxying.t | 84 + src/web/server/h2o/libh2o/t/50compress-hint.t | 88 + src/web/server/h2o/libh2o/t/50compress.t | 88 + src/web/server/h2o/libh2o/t/50config-tag.t | 111 + src/web/server/h2o/libh2o/t/50errordoc.t | 179 + src/web/server/h2o/libh2o/t/50expires.t | 47 + src/web/server/h2o/libh2o/t/50fastcgi-cgi.t | 35 + src/web/server/h2o/libh2o/t/50fastcgi-php.t | 54 + src/web/server/h2o/libh2o/t/50fastcgi.t | 139 + src/web/server/h2o/libh2o/t/50file-config.t | 143 + .../server/h2o/libh2o/t/50file-custom-handler.t | 96 + src/web/server/h2o/libh2o/t/50file-file.t | 54 + src/web/server/h2o/libh2o/t/50file-range.t | 100 + src/web/server/h2o/libh2o/t/50file.t | 22 + src/web/server/h2o/libh2o/t/50headers.t | 25 + src/web/server/h2o/libh2o/t/50http2_debug_state.t | 69 + src/web/server/h2o/libh2o/t/50internal-redirect.t | 117 + src/web/server/h2o/libh2o/t/50mimemap.t | 88 + .../h2o/libh2o/t/50mimemap/doc_root/index.xhtml | 1 + src/web/server/h2o/libh2o/t/50mruby-acl.t | 39 + src/web/server/h2o/libh2o/t/50mruby-dos-detector.t | 111 + src/web/server/h2o/libh2o/t/50mruby-htpasswd.t | 48 + src/web/server/h2o/libh2o/t/50mruby-http-request.t | 269 + src/web/server/h2o/libh2o/t/50mruby.t | 541 + src/web/server/h2o/libh2o/t/50mruby/hello.rb | 3 + src/web/server/h2o/libh2o/t/50mruby/index.html | 1 + src/web/server/h2o/libh2o/t/50post-size-limit.t | 77 + src/web/server/h2o/libh2o/t/50redirect.t | 92 + src/web/server/h2o/libh2o/t/50reverse-proxy-0.t | 4 + src/web/server/h2o/libh2o/t/50reverse-proxy-1.t | 4 + src/web/server/h2o/libh2o/t/50reverse-proxy-10.t | 4 + src/web/server/h2o/libh2o/t/50reverse-proxy-11.t | 4 + src/web/server/h2o/libh2o/t/50reverse-proxy-12.t | 4 + src/web/server/h2o/libh2o/t/50reverse-proxy-13.t | 4 + src/web/server/h2o/libh2o/t/50reverse-proxy-14.t | 4 + src/web/server/h2o/libh2o/t/50reverse-proxy-15.t | 4 + src/web/server/h2o/libh2o/t/50reverse-proxy-2.t | 4 + src/web/server/h2o/libh2o/t/50reverse-proxy-3.t | 4 + src/web/server/h2o/libh2o/t/50reverse-proxy-4.t | 4 + src/web/server/h2o/libh2o/t/50reverse-proxy-5.t | 4 + src/web/server/h2o/libh2o/t/50reverse-proxy-6.t | 4 + src/web/server/h2o/libh2o/t/50reverse-proxy-7.t | 4 + src/web/server/h2o/libh2o/t/50reverse-proxy-8.t | 4 + src/web/server/h2o/libh2o/t/50reverse-proxy-9.t | 4 + .../h2o/libh2o/t/50reverse-proxy-added-headers.t | 73 + .../server/h2o/libh2o/t/50reverse-proxy-config.t | 104 + .../t/50reverse-proxy-disconnected-keepalive.t | 77 + .../h2o/libh2o/t/50reverse-proxy-drop-headers.t | 57 + .../server/h2o/libh2o/t/50reverse-proxy-https.t | 70 + .../h2o/libh2o/t/50reverse-proxy-preserve-case.t | 68 + .../h2o/libh2o/t/50reverse-proxy-proxy-protocol.t | 55 + .../libh2o/t/50reverse-proxy-session-resumption.t | 210 + .../h2o/libh2o/t/50reverse-proxy-upstream-down.t | 35 + .../server/h2o/libh2o/t/50reverse-proxy/hello.txt | 1 + .../server/h2o/libh2o/t/50reverse-proxy/test.pl | 249 + src/web/server/h2o/libh2o/t/50server-starter.t | 103 + src/web/server/h2o/libh2o/t/50servername.t | 97 + src/web/server/h2o/libh2o/t/50status.t | 88 + src/web/server/h2o/libh2o/t/50throttle-response.t | 42 + src/web/server/h2o/libh2o/t/80dup-host-headers.t | 51 + src/web/server/h2o/libh2o/t/80graceful-shutdown.t | 80 + .../h2o/libh2o/t/80invalid-h2-chars-in-headers.t | 44 + ...80issues-from-proxy-reproxy-to-different-host.t | 79 + src/web/server/h2o/libh2o/t/80issues579.t | 45 + src/web/server/h2o/libh2o/t/80issues595.t | 42 + src/web/server/h2o/libh2o/t/80issues61.t | 57 + src/web/server/h2o/libh2o/t/80one-byte-window.t | 56 + ...reverse-proxy-missing-content-length-for-post.t | 76 + src/web/server/h2o/libh2o/t/80yaml-merge.t | 82 + .../h2o/libh2o/t/90live-fetch-ocsp-response.t | 50 + src/web/server/h2o/libh2o/t/90live-sni.t | 91 + src/web/server/h2o/libh2o/t/90root-fastcgi-php.t | 78 + src/web/server/h2o/libh2o/t/README.md | 9 + src/web/server/h2o/libh2o/t/Util.pm | 283 + src/web/server/h2o/libh2o/t/assets/.htpasswd | 1 + .../server/h2o/libh2o/t/assets/doc_root/404.html | 1 + .../server/h2o/libh2o/t/assets/doc_root/alice.txt | 31 + .../h2o/libh2o/t/assets/doc_root/alice2.txt.gz | Bin 0 -> 645 bytes .../server/h2o/libh2o/t/assets/doc_root/esi.html | 1 + .../h2o/libh2o/t/assets/doc_root/halfdome.jpg | Bin 0 -> 481218 bytes .../server/h2o/libh2o/t/assets/doc_root/hello.cgi | 13 + .../server/h2o/libh2o/t/assets/doc_root/hello.php | 6 + .../server/h2o/libh2o/t/assets/doc_root/index.js | 1 + .../server/h2o/libh2o/t/assets/doc_root/index.txt | 1 + .../h2o/libh2o/t/assets/doc_root/index.txt.br | 2 + .../h2o/libh2o/t/assets/doc_root/index.txt.gz | Bin 0 -> 26 bytes .../h2o/libh2o/t/assets/doc_root/issues/951.php | 11 + .../h2o/libh2o/t/assets/doc_root/printenv.cgi | 9 + .../h2o/libh2o/t/assets/doc_root/subdir/index.txt | 1 + .../h2o/libh2o/t/assets/session_tickets.yaml | 12 + src/web/server/h2o/libh2o/t/assets/upstream.psgi | 225 + 146 files changed, 112968 insertions(+) create mode 100644 src/web/server/h2o/libh2o/t/00unit.evloop.t create mode 100644 src/web/server/h2o/libh2o/t/00unit.libuv.t create mode 100644 src/web/server/h2o/libh2o/t/00unit.mruby.t create mode 100644 src/web/server/h2o/libh2o/t/00unit.mruby/acl.rb create mode 100644 src/web/server/h2o/libh2o/t/00unit.mruby/trie_addr.rb create mode 100644 src/web/server/h2o/libh2o/t/00unit/assets/1000.txt create mode 100644 src/web/server/h2o/libh2o/t/00unit/assets/1000000.txt create mode 100644 src/web/server/h2o/libh2o/t/00unit/assets/index.html create mode 100644 src/web/server/h2o/libh2o/t/00unit/assets/index_txt/index.txt create mode 100644 src/web/server/h2o/libh2o/t/00unit/assets/index_txt_as_dir/index.txt/.gitkeep create mode 100755 src/web/server/h2o/libh2o/t/00unit/assets/read_command.pl create mode 100644 src/web/server/h2o/libh2o/t/00unit/issues/293.c create mode 100644 src/web/server/h2o/libh2o/t/00unit/issues/percent-encode-zero-byte.c create mode 100644 src/web/server/h2o/libh2o/t/00unit/lib/common/cache.c create mode 100644 src/web/server/h2o/libh2o/t/00unit/lib/common/hostinfo.c create mode 100644 src/web/server/h2o/libh2o/t/00unit/lib/common/multithread.c create mode 100644 src/web/server/h2o/libh2o/t/00unit/lib/common/serverutil.c create mode 100644 src/web/server/h2o/libh2o/t/00unit/lib/common/socket.c create mode 100644 src/web/server/h2o/libh2o/t/00unit/lib/common/string.c create mode 100644 src/web/server/h2o/libh2o/t/00unit/lib/common/time.c create mode 100644 src/web/server/h2o/libh2o/t/00unit/lib/common/url.c create mode 100644 src/web/server/h2o/libh2o/t/00unit/lib/core/headers.c create mode 100644 src/web/server/h2o/libh2o/t/00unit/lib/core/proxy.c create mode 100644 src/web/server/h2o/libh2o/t/00unit/lib/core/util.c create mode 100644 src/web/server/h2o/libh2o/t/00unit/lib/handler/compress.c create mode 100644 src/web/server/h2o/libh2o/t/00unit/lib/handler/fastcgi.c create mode 100644 src/web/server/h2o/libh2o/t/00unit/lib/handler/file.c create mode 100644 src/web/server/h2o/libh2o/t/00unit/lib/handler/headers.c create mode 100644 src/web/server/h2o/libh2o/t/00unit/lib/handler/mimemap.c create mode 100644 src/web/server/h2o/libh2o/t/00unit/lib/handler/redirect.c create mode 100644 src/web/server/h2o/libh2o/t/00unit/lib/http2/cache_digests.c create mode 100644 src/web/server/h2o/libh2o/t/00unit/lib/http2/casper.c create mode 100644 src/web/server/h2o/libh2o/t/00unit/lib/http2/hpack.c create mode 100644 src/web/server/h2o/libh2o/t/00unit/lib/http2/scheduler.c create mode 100644 src/web/server/h2o/libh2o/t/00unit/src/ssl.c create mode 100644 src/web/server/h2o/libh2o/t/00unit/test.c create mode 100644 src/web/server/h2o/libh2o/t/00unit/test.h create mode 100644 src/web/server/h2o/libh2o/t/10http1client.t create mode 100644 src/web/server/h2o/libh2o/t/40bad-request.t create mode 100644 src/web/server/h2o/libh2o/t/40env.t create mode 100644 src/web/server/h2o/libh2o/t/40max-connections.t create mode 100644 src/web/server/h2o/libh2o/t/40memcached-session-resumption.t create mode 100644 src/web/server/h2o/libh2o/t/40protocol.t create mode 100644 src/web/server/h2o/libh2o/t/40proxy-protocol.t create mode 100644 src/web/server/h2o/libh2o/t/40running-user.t create mode 100644 src/web/server/h2o/libh2o/t/40server-push-attrs.t create mode 100644 src/web/server/h2o/libh2o/t/40server-push-multiple.t create mode 100644 src/web/server/h2o/libh2o/t/40server-push.t create mode 100644 src/web/server/h2o/libh2o/t/40session-ticket.t create mode 100644 src/web/server/h2o/libh2o/t/40session-ticket/forever_ticket.yaml create mode 100644 src/web/server/h2o/libh2o/t/40ssl-cipher-suite.t create mode 100644 src/web/server/h2o/libh2o/t/40unix-socket.t create mode 100644 src/web/server/h2o/libh2o/t/40virtual-host.t create mode 100644 src/web/server/h2o/libh2o/t/40websocket.t create mode 100644 src/web/server/h2o/libh2o/t/50access-log.t create mode 100644 src/web/server/h2o/libh2o/t/50chunked-encoding-proxying.t create mode 100644 src/web/server/h2o/libh2o/t/50compress-hint.t create mode 100644 src/web/server/h2o/libh2o/t/50compress.t create mode 100644 src/web/server/h2o/libh2o/t/50config-tag.t create mode 100644 src/web/server/h2o/libh2o/t/50errordoc.t create mode 100644 src/web/server/h2o/libh2o/t/50expires.t create mode 100644 src/web/server/h2o/libh2o/t/50fastcgi-cgi.t create mode 100644 src/web/server/h2o/libh2o/t/50fastcgi-php.t create mode 100644 src/web/server/h2o/libh2o/t/50fastcgi.t create mode 100644 src/web/server/h2o/libh2o/t/50file-config.t create mode 100644 src/web/server/h2o/libh2o/t/50file-custom-handler.t create mode 100644 src/web/server/h2o/libh2o/t/50file-file.t create mode 100644 src/web/server/h2o/libh2o/t/50file-range.t create mode 100644 src/web/server/h2o/libh2o/t/50file.t create mode 100644 src/web/server/h2o/libh2o/t/50headers.t create mode 100644 src/web/server/h2o/libh2o/t/50http2_debug_state.t create mode 100644 src/web/server/h2o/libh2o/t/50internal-redirect.t create mode 100644 src/web/server/h2o/libh2o/t/50mimemap.t create mode 100644 src/web/server/h2o/libh2o/t/50mimemap/doc_root/index.xhtml create mode 100644 src/web/server/h2o/libh2o/t/50mruby-acl.t create mode 100644 src/web/server/h2o/libh2o/t/50mruby-dos-detector.t create mode 100644 src/web/server/h2o/libh2o/t/50mruby-htpasswd.t create mode 100644 src/web/server/h2o/libh2o/t/50mruby-http-request.t create mode 100644 src/web/server/h2o/libh2o/t/50mruby.t create mode 100644 src/web/server/h2o/libh2o/t/50mruby/hello.rb create mode 100644 src/web/server/h2o/libh2o/t/50mruby/index.html create mode 100644 src/web/server/h2o/libh2o/t/50post-size-limit.t create mode 100644 src/web/server/h2o/libh2o/t/50redirect.t create mode 100644 src/web/server/h2o/libh2o/t/50reverse-proxy-0.t create mode 100644 src/web/server/h2o/libh2o/t/50reverse-proxy-1.t create mode 100644 src/web/server/h2o/libh2o/t/50reverse-proxy-10.t create mode 100644 src/web/server/h2o/libh2o/t/50reverse-proxy-11.t create mode 100644 src/web/server/h2o/libh2o/t/50reverse-proxy-12.t create mode 100644 src/web/server/h2o/libh2o/t/50reverse-proxy-13.t create mode 100644 src/web/server/h2o/libh2o/t/50reverse-proxy-14.t create mode 100644 src/web/server/h2o/libh2o/t/50reverse-proxy-15.t create mode 100644 src/web/server/h2o/libh2o/t/50reverse-proxy-2.t create mode 100644 src/web/server/h2o/libh2o/t/50reverse-proxy-3.t create mode 100644 src/web/server/h2o/libh2o/t/50reverse-proxy-4.t create mode 100644 src/web/server/h2o/libh2o/t/50reverse-proxy-5.t create mode 100644 src/web/server/h2o/libh2o/t/50reverse-proxy-6.t create mode 100644 src/web/server/h2o/libh2o/t/50reverse-proxy-7.t create mode 100644 src/web/server/h2o/libh2o/t/50reverse-proxy-8.t create mode 100644 src/web/server/h2o/libh2o/t/50reverse-proxy-9.t create mode 100644 src/web/server/h2o/libh2o/t/50reverse-proxy-added-headers.t create mode 100644 src/web/server/h2o/libh2o/t/50reverse-proxy-config.t create mode 100644 src/web/server/h2o/libh2o/t/50reverse-proxy-disconnected-keepalive.t create mode 100644 src/web/server/h2o/libh2o/t/50reverse-proxy-drop-headers.t create mode 100644 src/web/server/h2o/libh2o/t/50reverse-proxy-https.t create mode 100644 src/web/server/h2o/libh2o/t/50reverse-proxy-preserve-case.t create mode 100644 src/web/server/h2o/libh2o/t/50reverse-proxy-proxy-protocol.t create mode 100644 src/web/server/h2o/libh2o/t/50reverse-proxy-session-resumption.t create mode 100644 src/web/server/h2o/libh2o/t/50reverse-proxy-upstream-down.t create mode 100644 src/web/server/h2o/libh2o/t/50reverse-proxy/hello.txt create mode 100755 src/web/server/h2o/libh2o/t/50reverse-proxy/test.pl create mode 100644 src/web/server/h2o/libh2o/t/50server-starter.t create mode 100644 src/web/server/h2o/libh2o/t/50servername.t create mode 100644 src/web/server/h2o/libh2o/t/50status.t create mode 100644 src/web/server/h2o/libh2o/t/50throttle-response.t create mode 100644 src/web/server/h2o/libh2o/t/80dup-host-headers.t create mode 100644 src/web/server/h2o/libh2o/t/80graceful-shutdown.t create mode 100644 src/web/server/h2o/libh2o/t/80invalid-h2-chars-in-headers.t create mode 100644 src/web/server/h2o/libh2o/t/80issues-from-proxy-reproxy-to-different-host.t create mode 100644 src/web/server/h2o/libh2o/t/80issues579.t create mode 100644 src/web/server/h2o/libh2o/t/80issues595.t create mode 100644 src/web/server/h2o/libh2o/t/80issues61.t create mode 100644 src/web/server/h2o/libh2o/t/80one-byte-window.t create mode 100644 src/web/server/h2o/libh2o/t/80reverse-proxy-missing-content-length-for-post.t create mode 100644 src/web/server/h2o/libh2o/t/80yaml-merge.t create mode 100644 src/web/server/h2o/libh2o/t/90live-fetch-ocsp-response.t create mode 100644 src/web/server/h2o/libh2o/t/90live-sni.t create mode 100644 src/web/server/h2o/libh2o/t/90root-fastcgi-php.t create mode 100644 src/web/server/h2o/libh2o/t/README.md create mode 100644 src/web/server/h2o/libh2o/t/Util.pm create mode 100644 src/web/server/h2o/libh2o/t/assets/.htpasswd create mode 100644 src/web/server/h2o/libh2o/t/assets/doc_root/404.html create mode 100644 src/web/server/h2o/libh2o/t/assets/doc_root/alice.txt create mode 100644 src/web/server/h2o/libh2o/t/assets/doc_root/alice2.txt.gz create mode 100644 src/web/server/h2o/libh2o/t/assets/doc_root/esi.html create mode 100644 src/web/server/h2o/libh2o/t/assets/doc_root/halfdome.jpg create mode 100755 src/web/server/h2o/libh2o/t/assets/doc_root/hello.cgi create mode 100644 src/web/server/h2o/libh2o/t/assets/doc_root/hello.php create mode 100644 src/web/server/h2o/libh2o/t/assets/doc_root/index.js create mode 100644 src/web/server/h2o/libh2o/t/assets/doc_root/index.txt create mode 100644 src/web/server/h2o/libh2o/t/assets/doc_root/index.txt.br create mode 100644 src/web/server/h2o/libh2o/t/assets/doc_root/index.txt.gz create mode 100644 src/web/server/h2o/libh2o/t/assets/doc_root/issues/951.php create mode 100755 src/web/server/h2o/libh2o/t/assets/doc_root/printenv.cgi create mode 100644 src/web/server/h2o/libh2o/t/assets/doc_root/subdir/index.txt create mode 100644 src/web/server/h2o/libh2o/t/assets/session_tickets.yaml create mode 100644 src/web/server/h2o/libh2o/t/assets/upstream.psgi (limited to 'src/web/server/h2o/libh2o/t') diff --git a/src/web/server/h2o/libh2o/t/00unit.evloop.t b/src/web/server/h2o/libh2o/t/00unit.evloop.t new file mode 100644 index 000000000..e87189e1e --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit.evloop.t @@ -0,0 +1,6 @@ +use strict; +use warnings; + +use t::Util; + +exec_unittest('evloop'); diff --git a/src/web/server/h2o/libh2o/t/00unit.libuv.t b/src/web/server/h2o/libh2o/t/00unit.libuv.t new file mode 100644 index 000000000..ffedabe8c --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit.libuv.t @@ -0,0 +1,6 @@ +use strict; +use warnings; + +use t::Util; + +exec_unittest('libuv'); diff --git a/src/web/server/h2o/libh2o/t/00unit.mruby.t b/src/web/server/h2o/libh2o/t/00unit.mruby.t new file mode 100644 index 000000000..b56454384 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit.mruby.t @@ -0,0 +1,6 @@ +use strict; +use warnings; + +use t::Util; + +exec_mruby_unittest; diff --git a/src/web/server/h2o/libh2o/t/00unit.mruby/acl.rb b/src/web/server/h2o/libh2o/t/00unit.mruby/acl.rb new file mode 100644 index 000000000..771047dad --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit.mruby/acl.rb @@ -0,0 +1,179 @@ +$LOAD_PATH << 'share/h2o/mruby' +require 'misc/mruby-mtest/mrblib/mtest_unit.rb' +require 'acl.rb' + +class ACLTest < MTest::Unit::TestCase + include H2O::ACL + def setup + H2O::ConfigurationContext.reset + end + + def test_use + act = acl { + use proc {|env| [200, {}, ["hello test_use"]]} + }.call({}) + assert_equal([200, {}, ["hello test_use"]], act) + end + + def test_respond + act = acl { + respond(409, {"custom" => "header"}, ["Conflict"]) + }.call({}) + assert_equal([409, {"custom" => "header"}, ["Conflict"]], act) + end + + def test_deny + act = acl { + deny + }.call({}) + assert_equal([403, {}, ["Forbidden"]], act) + end + + def test_allow + act = acl { + allow + }.call({}) + assert_equal([399, {}, []], act) + end + + def test_redirect + act = acl { + redirect("https://h2o.examp1e.net/", 301) + }.call({}) + assert_equal([301, {"Location" => "https://h2o.examp1e.net/"}, []], act) + end + + ##### tests for condition block + + def test_conditional_true + act = acl { + respond(200) { true } + }.call({}) + assert_equal([200, {}, []], act) + end + + def test_conditional_false + act = acl { + respond(200) { false } + }.call({}) + assert_equal([399, {}, []], act) + end + + ##### tests for acl block + + def test_empty + act = acl { + }.call({})[0] + assert_equal(399, act) + end + + def test_multiple1 + act = acl { + respond(201) { true } + respond(202) { true } + }.call({})[0] + assert_equal(201, act) + end + + def test_multiple2 + act = acl { + respond(201) { false } + respond(202) { true } + }.call({})[0] + assert_equal(202, act) + end + + def test_multiple3 + act = acl { + respond(201) { false } + respond(202) { false } + }.call({})[0] + assert_equal(399, act) + end + + def test_acl_restriction1 + acl { respond(200) } + assert_raise(RuntimeError, "must raise exception if acl method is called more than once") { + acl { respond(200) } + } + end + + ##### tests for matcher + + def test_addr + handler = acl { + respond(200) { addr.match(/^192\.168\./) } + respond(403) { addr.match(/^200\./) } + respond(503) { addr.match(/^201\./) } + } + assert_equal(200, handler.call({ "REMOTE_ADDR" => "192.168.0.1"})[0]) + assert_equal(403, handler.call({ "REMOTE_ADDR" => "200.0.0.1"})[0]) + assert_equal(503, handler.call({ "REMOTE_ADDR" => "201.0.0.1"})[0]) + assert_equal(399, handler.call({ "REMOTE_ADDR" => "127.0.0.1"})[0]) + assert_equal(200, handler.call({ "HTTP_X_FORWARDED_FOR" => "192.168.0.1"})[0]) + end + + def test_addr_not_forwarded + handler = acl { + respond(200) { addr(false).match(/^192\.168\./) } + respond(403) + } + assert_equal(200, handler.call({ "REMOTE_ADDR" => "192.168.0.1"})[0]) + assert_equal(403, handler.call({ "HTTP_X_FORWARDED_FOR" => "192.168.0.1"})[0]) + end + + def test_path + handler = acl { + respond(200) { path == "/foo" } + respond(404) + } + assert_equal(200, handler.call({ "PATH_INFO" => "/foo"})[0]) + assert_equal(404, handler.call({ "PATH_INFO" => "/bar"})[0]) + end + + def test_method + handler = acl { + allow { method.match(/^(GET|HEAD)$/) } + respond(405) + } + assert_equal(399, handler.call({ "REQUEST_METHOD" => "GET"})[0]) + assert_equal(405, handler.call({ "REQUEST_METHOD" => "POST"})[0]) + end + + def test_method + handler = acl { + allow { method.match(/^(GET|HEAD)$/) } + respond(405) + } + assert_equal(399, handler.call({ "REQUEST_METHOD" => "GET"})[0]) + assert_equal(405, handler.call({ "REQUEST_METHOD" => "POST"})[0]) + end + + def test_header + handler = acl { + respond(400, {}, ["authorization header missing"]) { header("Authorization").empty? } + } + assert_equal(400, handler.call({})[0]) + assert_equal(399, handler.call({ "HTTP_AUTHORIZATION" => "Bearer xyz"})[0]) + end + + def test_user_agent + handler = acl { + respond(200, {}, ["hello googlebot!"]) { user_agent.match(/Googlebot/i) } + } + assert_equal(200, handler.call({ "HTTP_USER_AGENT" => "i'm Googlebot"})[0]) + assert_equal(399, handler.call({})[0]) + end + + def test_multiple_matchers + handler = acl { + respond(403, {}, []) { ! addr.start_with?("192.168.") && user_agent.match(/curl/i) } + } + assert_equal(399, handler.call({ "REMOTE_ADDR" => "192.168.100.100", "HTTP_USER_AGENT" => "i'm firefox"})[0]) + assert_equal(399, handler.call({ "REMOTE_ADDR" => "192.168.100.100", "HTTP_USER_AGENT" => "i'm curl"})[0]) + assert_equal(399, handler.call({ "REMOTE_ADDR" => "222.222.222.222", "HTTP_USER_AGENT" => "i'm firefox"})[0]) + assert_equal(403, handler.call({ "REMOTE_ADDR" => "222.222.222.222", "HTTP_USER_AGENT" => "i'm curl"})[0]) + end +end + +MTest::Unit.new.run diff --git a/src/web/server/h2o/libh2o/t/00unit.mruby/trie_addr.rb b/src/web/server/h2o/libh2o/t/00unit.mruby/trie_addr.rb new file mode 100644 index 000000000..9b6936d3b --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit.mruby/trie_addr.rb @@ -0,0 +1,64 @@ +$LOAD_PATH << 'share/h2o/mruby' +require 'misc/mruby-mtest/mrblib/mtest_unit.rb' +require 'trie_addr.rb' + +class TrieAddrTest < MTest::Unit::TestCase + def test_basic + addr = TrieAddr.new + addr.add("10.0.0.0/12") + addr.add("10.255.0.0/12") + + assert_true(addr.match?("10.10.0.0")) + assert_false(addr.match?("10.128.0.0")) + assert_true(addr.match?("10.250.0.0")) + + addr.add("10.255.0.0/8") + assert_true(addr.match?("10.128.0.0")) + + end + + def test_missing_prefix_length + addr = TrieAddr.new + addr.add("12.34.56.78") + + assert_false(addr.match?("12.34.56.77")) + assert_true(addr.match?("12.34.56.78")) + assert_false(addr.match?("12.34.56.79")) + end + + def test_ipv6_addr + addr = TrieAddr.new + assert_raise(ArgumentError, "ipv6 is currently not supported") { addr.add("::1") } + assert_false(addr.match?("::1"), "always returns false") + end + + def test_invalid_addr + addr = TrieAddr.new + addr.add("0.0.0.0/8") + assert_false(addr.match?("hogehoge")) + end + + # taken from https://github.com/hirose31/p5-net-ip-match?-trie/blob/master/t/10_match?_ip_PP.t + def test_nimt_cases + addr = TrieAddr.new + addr.add(["10.0.0.0/24", "10.0.1.0/24", "11.0.0.0/16", "10.1.0.0/28", "10.0.0.0/8", "10.2.0.0/24"]) + + cases = [ + { :name => "match 1", :input => "10.0.0.100", :expected => true }, + { :name => "match 2", :input => "10.1.0.8", :expected => true }, + { :name => "match 3", :input => "10.2.0.1", :expected => true }, + { :name => "not match", :input => "192.168.1.2", :expected => false }, + { :name => "match min", :input => "10.0.0.0", :expected => true }, + { :name => "match max", :input => "10.0.0.255", :expected => true }, + { :name => "invalid IP", :input => "11.0.999.1", :expected => false }, + { :name => "0.0.0.0", :input => "0.0.0.0", :expected => false }, + { :name => "255.255.255.255", :input => "255.255.255.255", :expected => false }, + { :name => "big", :input => "10.255.255.255", :expected => true }, + ] + cases.each {|c| + assert_equal(c[:expected], addr.match?(c[:input]), c[:name]) + } + end +end + +MTest::Unit.new.run diff --git a/src/web/server/h2o/libh2o/t/00unit/assets/1000.txt b/src/web/server/h2o/libh2o/t/00unit/assets/1000.txt new file mode 100644 index 000000000..79fb52d24 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/assets/1000.txt @@ -0,0 +1,100 @@ +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 diff --git a/src/web/server/h2o/libh2o/t/00unit/assets/1000000.txt b/src/web/server/h2o/libh2o/t/00unit/assets/1000000.txt new file mode 100644 index 000000000..224235de4 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/assets/1000000.txt @@ -0,0 +1,100000 @@ +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 +123456789 diff --git a/src/web/server/h2o/libh2o/t/00unit/assets/index.html b/src/web/server/h2o/libh2o/t/00unit/assets/index.html new file mode 100644 index 000000000..1178c0ef2 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/assets/index.html @@ -0,0 +1 @@ +hello html diff --git a/src/web/server/h2o/libh2o/t/00unit/assets/index_txt/index.txt b/src/web/server/h2o/libh2o/t/00unit/assets/index_txt/index.txt new file mode 100644 index 000000000..77ff4944b --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/assets/index_txt/index.txt @@ -0,0 +1 @@ +hello text diff --git a/src/web/server/h2o/libh2o/t/00unit/assets/index_txt_as_dir/index.txt/.gitkeep b/src/web/server/h2o/libh2o/t/00unit/assets/index_txt_as_dir/index.txt/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/src/web/server/h2o/libh2o/t/00unit/assets/read_command.pl b/src/web/server/h2o/libh2o/t/00unit/assets/read_command.pl new file mode 100755 index 000000000..b24f1bc87 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/assets/read_command.pl @@ -0,0 +1,12 @@ +#! /bin/sh +exec perl -x $0 "$@" +#! perl + +use strict; +use warnings; + +die "expected one arg" + unless @ARGV == 1; + +print $ARGV[0]; +exit($ENV{READ_COMMAND_EXIT_STATUS} || 0); diff --git a/src/web/server/h2o/libh2o/t/00unit/issues/293.c b/src/web/server/h2o/libh2o/t/00unit/issues/293.c new file mode 100644 index 000000000..bce57589b --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/issues/293.c @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2014 DeNA Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include +#include +#include "../test.h" + +static h2o_context_t ctx; + +static void register_authority(h2o_globalconf_t *globalconf, h2o_iovec_t host, uint16_t port) +{ + static h2o_iovec_t x_authority = {H2O_STRLIT("x-authority")}; + + h2o_hostconf_t *hostconf = h2o_config_register_host(globalconf, host, port); + h2o_pathconf_t *pathconf = h2o_config_register_path(hostconf, "/", 0); + h2o_file_register(pathconf, "t/00unit/assets", NULL, NULL, 0); + + char *authority = h2o_mem_alloc(host.len + sizeof(":" H2O_UINT16_LONGEST_STR)); + sprintf(authority, "%.*s:%" PRIu16, (int)host.len, host.base, port); + h2o_headers_command_t *cmds = h2o_mem_alloc(sizeof(*cmds) * 2); + cmds[0] = (h2o_headers_command_t){H2O_HEADERS_CMD_ADD, &x_authority, {authority, strlen(authority)}}; + cmds[1] = (h2o_headers_command_t){H2O_HEADERS_CMD_NULL}; + h2o_headers_register(pathconf, cmds); +} + +static void check(const h2o_url_scheme_t *scheme, const char *host, const char *expected) +{ + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.scheme = scheme; + conn->req.input.authority = h2o_iovec_init(host, strlen(host)); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 200); + + size_t index = h2o_find_header_by_str(&conn->req.res.headers, H2O_STRLIT("x-authority"), SIZE_MAX); + ok(index != SIZE_MAX); + + if (index != SIZE_MAX) { + ok(h2o_memis(conn->req.res.headers.entries[index].value.base, conn->req.res.headers.entries[index].value.len, expected, + strlen(expected))); + } + + h2o_loopback_destroy(conn); +} + +void test_issues293() +{ + h2o_globalconf_t globalconf; + + h2o_config_init(&globalconf); + + /* register two hosts, using 80 and 443 */ + register_authority(&globalconf, h2o_iovec_init(H2O_STRLIT("default")), 65535); + register_authority(&globalconf, h2o_iovec_init(H2O_STRLIT("host1")), 80); + register_authority(&globalconf, h2o_iovec_init(H2O_STRLIT("host1")), 443); + register_authority(&globalconf, h2o_iovec_init(H2O_STRLIT("host2")), 80); + register_authority(&globalconf, h2o_iovec_init(H2O_STRLIT("host2")), 443); + register_authority(&globalconf, h2o_iovec_init(H2O_STRLIT("host3")), 65535); + + h2o_context_init(&ctx, test_loop, &globalconf); + + /* run the tests */ + check(&H2O_URL_SCHEME_HTTP, "host1", "host1:80"); + check(&H2O_URL_SCHEME_HTTPS, "host1", "host1:443"); + check(&H2O_URL_SCHEME_HTTP, "host2", "host2:80"); + check(&H2O_URL_SCHEME_HTTPS, "host2", "host2:443"); + + /* supplied port number in the Host header must be preferred */ + check(&H2O_URL_SCHEME_HTTP, "host1:80", "host1:80"); + check(&H2O_URL_SCHEME_HTTP, "host1:443", "host1:443"); + check(&H2O_URL_SCHEME_HTTPS, "host1:80", "host1:80"); + check(&H2O_URL_SCHEME_HTTPS, "host1:443", "host1:443"); + check(&H2O_URL_SCHEME_HTTP, "host2:80", "host2:80"); + check(&H2O_URL_SCHEME_HTTP, "host2:443", "host2:443"); + check(&H2O_URL_SCHEME_HTTPS, "host2:80", "host2:80"); + check(&H2O_URL_SCHEME_HTTPS, "host2:443", "host2:443"); + + /* host-level conf without default port */ + check(&H2O_URL_SCHEME_HTTP, "host3", "host3:65535"); + check(&H2O_URL_SCHEME_HTTPS, "host3", "host3:65535"); + check(&H2O_URL_SCHEME_HTTP, "host3", "host3:65535"); + check(&H2O_URL_SCHEME_HTTPS, "host3", "host3:65535"); + check(&H2O_URL_SCHEME_HTTP, "host3:80", "host3:65535"); + check(&H2O_URL_SCHEME_HTTPS, "host3:80", "default:65535"); + check(&H2O_URL_SCHEME_HTTP, "host3:443", "default:65535"); + check(&H2O_URL_SCHEME_HTTPS, "host3:443", "host3:65535"); + + /* upper-case */ + check(&H2O_URL_SCHEME_HTTP, "HoST1", "host1:80"); + check(&H2O_URL_SCHEME_HTTP, "HoST1:80", "host1:80"); + check(&H2O_URL_SCHEME_HTTPS, "HoST1", "host1:443"); + check(&H2O_URL_SCHEME_HTTPS, "HoST1:443", "host1:443"); + + h2o_context_dispose(&ctx); + h2o_config_dispose(&globalconf); +} diff --git a/src/web/server/h2o/libh2o/t/00unit/issues/percent-encode-zero-byte.c b/src/web/server/h2o/libh2o/t/00unit/issues/percent-encode-zero-byte.c new file mode 100644 index 000000000..c007c0831 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/issues/percent-encode-zero-byte.c @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2016 DeNA Co., Fastly, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#include +#include +#include "../test.h" + +void test_percent_encode_zero_byte(void) +{ + h2o_pathconf_t pathconf = {NULL, {H2O_STRLIT("/abc")}}; + h2o_req_t req; + h2o_iovec_t dest; + + h2o_init_request(&req, NULL, NULL); + + /* basic pattern */ + req.path_normalized = h2o_iovec_init(H2O_STRLIT("/abc/mno\0xyz")); + req.query_at = req.path_normalized.len; + req.path = h2o_concat(&req.pool, req.path_normalized, h2o_iovec_init(H2O_STRLIT("?q"))); + req.pathconf = &pathconf; + dest = h2o_build_destination(&req, H2O_STRLIT("/def"), 1); + ok(h2o_memis(dest.base, dest.len, H2O_STRLIT("/def/mno%00xyz?q"))); + dest = h2o_build_destination(&req, H2O_STRLIT("/def/"), 1); + ok(h2o_memis(dest.base, dest.len, H2O_STRLIT("/def/mno%00xyz?q"))); + + h2o_mem_clear_pool(&req.pool); +} diff --git a/src/web/server/h2o/libh2o/t/00unit/lib/common/cache.c b/src/web/server/h2o/libh2o/t/00unit/lib/common/cache.c new file mode 100644 index 000000000..ea18cbc45 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/lib/common/cache.c @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2014-2016 DeNA Co., Ltd., Kazuho Oku + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include "../../test.h" +#include "../../../../lib/common/cache.c" + +static size_t bytes_destroyed; + +static void on_destroy(h2o_iovec_t vec) +{ + bytes_destroyed += vec.len; +} + +void test_lib__common__cache_c(void) +{ + h2o_cache_t *cache = h2o_cache_create(H2O_CACHE_FLAG_EARLY_UPDATE, 1024, 1000, on_destroy); + uint64_t now = 0; + h2o_iovec_t key = {H2O_STRLIT("key")}; + h2o_cache_ref_t *ref; + + /* fetch "key" */ + ref = h2o_cache_fetch(cache, now, key, 0); + ok(ref == NULL); + + /* set "key" => "value" */ + h2o_cache_set(cache, now, key, 0, h2o_iovec_init(H2O_STRLIT("value"))); + + /* delete "key" */ + h2o_cache_delete(cache, now, key, 0); + ref = h2o_cache_fetch(cache, now, key, 0); + ok(ref == NULL); + + /* set "key" => "value" */ + h2o_cache_set(cache, now, key, 0, h2o_iovec_init(H2O_STRLIT("value"))); + + /* fetch "key" */ + ref = h2o_cache_fetch(cache, now, key, 0); + ok(h2o_memis(ref->value.base, ref->value.len, H2O_STRLIT("value"))); + h2o_cache_release(cache, ref); + + /* proceed 999ms */ + now += 999; + + /* should fail to fetch "key" */ + ref = h2o_cache_fetch(cache, now, key, 0); + ok(ref == NULL); + + /* refetch should succeed */ + ref = h2o_cache_fetch(cache, now, key, 0); + ok(h2o_memis(ref->value.base, ref->value.len, H2O_STRLIT("value"))); + h2o_cache_release(cache, ref); + + /* set "key" to "value2" */ + h2o_cache_set(cache, now, key, 0, h2o_iovec_init(H2O_STRLIT("value2"))); + + /* fetch */ + ref = h2o_cache_fetch(cache, now, key, 0); + ok(h2o_memis(ref->value.base, ref->value.len, H2O_STRLIT("value2"))); + h2o_cache_release(cache, ref); + + ok(bytes_destroyed == 10); + + h2o_cache_destroy(cache); + + ok(bytes_destroyed == 16); +} diff --git a/src/web/server/h2o/libh2o/t/00unit/lib/common/hostinfo.c b/src/web/server/h2o/libh2o/t/00unit/lib/common/hostinfo.c new file mode 100644 index 000000000..9d8e5fe7c --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/lib/common/hostinfo.c @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2014 DeNA Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include +#include "../../test.h" +#include "../../../../lib/common/hostinfo.c" + +static void test_aton(void) +{ + struct in_addr addr; + + memset(&addr, 0x55, sizeof(addr)); + ok(h2o_hostinfo_aton((h2o_iovec_t){H2O_STRLIT("127.0.0.1")}, &addr) == 0); + ok(ntohl(addr.s_addr) == 0x7f000001); + + memset(&addr, 0x55, sizeof(addr)); + ok(h2o_hostinfo_aton((h2o_iovec_t){"127.0.0.12", sizeof("127.0.0.1") - 1}, &addr) == 0); + ok(ntohl(addr.s_addr) == 0x7f000001); + + memset(&addr, 0x55, sizeof(addr)); + ok(h2o_hostinfo_aton((h2o_iovec_t){H2O_STRLIT("255.001.002.128")}, &addr) == 0); + ok(ntohl(addr.s_addr) == 0xff010280); + + ok(h2o_hostinfo_aton((h2o_iovec_t){H2O_STRLIT("127.0.0.z")}, &addr) != 0); + ok(h2o_hostinfo_aton((h2o_iovec_t){H2O_STRLIT("256.0.0.0")}, &addr) != 0); + ok(h2o_hostinfo_aton((h2o_iovec_t){H2O_STRLIT("0001.0.0.0")}, &addr) != 0); + ok(h2o_hostinfo_aton((h2o_iovec_t){H2O_STRLIT("0.0..1")}, &addr) != 0); + ok(h2o_hostinfo_aton((h2o_iovec_t){H2O_STRLIT("1.0.0.0.")}, &addr) != 0); +} + +void test_lib__common__hostinfo_c(void) +{ + /* TODO add tests for h2o_hostinfo_getaddr and related */ + subtest("aton", test_aton); +} diff --git a/src/web/server/h2o/libh2o/t/00unit/lib/common/multithread.c b/src/web/server/h2o/libh2o/t/00unit/lib/common/multithread.c new file mode 100644 index 000000000..683e489a5 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/lib/common/multithread.c @@ -0,0 +1,157 @@ +/* + * Copyright (c) 2014 DeNA Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include +#include "../../test.h" +#include "../../../../lib/common/multithread.c" + +struct st_thread_t { + h2o_loop_t *loop; + h2o_multithread_queue_t *queue; +}; + +struct { + h2o_loop_t *loop; + h2o_multithread_queue_t *queue; + h2o_multithread_receiver_t pong_receiver; + h2o_multithread_receiver_t shutdown_receiver; + int received_shutdown; +} main_thread; + +struct { + h2o_loop_t *loop; + h2o_multithread_queue_t *queue; + h2o_multithread_receiver_t ping_receiver; + size_t num_ping_received; + int should_exit; +} worker_thread; + +static void send_empty_message(h2o_multithread_receiver_t *receiver) +{ + h2o_multithread_message_t *message = h2o_mem_alloc(sizeof(*message)); + *message = (h2o_multithread_message_t){{NULL}}; + h2o_multithread_send_message(receiver, message); +} + +static void pop_empty_message(h2o_linklist_t *list) +{ + h2o_multithread_message_t *message = H2O_STRUCT_FROM_MEMBER(h2o_multithread_message_t, link, list->next); + h2o_linklist_unlink(&message->link); + free(message); +} + +static void on_ping(h2o_multithread_receiver_t *receiver, h2o_linklist_t *list) +{ + while (!h2o_linklist_is_empty(list)) { + pop_empty_message(list); + if (++worker_thread.num_ping_received < 100) { + send_empty_message(&main_thread.pong_receiver); + } else { + send_empty_message(&main_thread.shutdown_receiver); + worker_thread.should_exit = 1; + } + } +} + +static void on_pong(h2o_multithread_receiver_t *receiver, h2o_linklist_t *list) +{ + while (!h2o_linklist_is_empty(list)) { + pop_empty_message(list); + send_empty_message(&worker_thread.ping_receiver); + } +} + +static void on_shutdown(h2o_multithread_receiver_t *receiver, h2o_linklist_t *list) +{ + while (!h2o_linklist_is_empty(list)) + pop_empty_message(list); + main_thread.received_shutdown = 1; +} + +#if H2O_USE_LIBUV +static h2o_loop_t *create_loop(void) +{ + h2o_loop_t *loop = h2o_mem_alloc(sizeof(*loop)); + uv_loop_init(loop); + return loop; +} + +static void destroy_loop(h2o_loop_t *loop) +{ + uv_run(loop, UV_RUN_NOWAIT); + uv_loop_close(loop); + free(loop); +} +#else +#define create_loop h2o_evloop_create +#define destroy_loop(loop) (0) /* FIXME */ +#endif + +static void *worker_main(void *_unused) +{ + while (!worker_thread.should_exit) { +#if H2O_USE_LIBUV + uv_run(worker_thread.loop, UV_RUN_ONCE); +#else + h2o_evloop_run(worker_thread.loop, INT32_MAX); +#endif + } + + return NULL; +} + +void test_lib__common__multithread_c(void) +{ + pthread_t tid; + + main_thread.loop = create_loop(); + main_thread.queue = h2o_multithread_create_queue(main_thread.loop); + h2o_multithread_register_receiver(main_thread.queue, &main_thread.pong_receiver, on_pong); + h2o_multithread_register_receiver(main_thread.queue, &main_thread.shutdown_receiver, on_shutdown); + worker_thread.loop = create_loop(); + worker_thread.queue = h2o_multithread_create_queue(worker_thread.loop); + h2o_multithread_register_receiver(worker_thread.queue, &worker_thread.ping_receiver, on_ping); + + pthread_create(&tid, NULL, worker_main, NULL); + + /* send first message */ + send_empty_message(&worker_thread.ping_receiver); + + while (!main_thread.received_shutdown) { +#if H2O_USE_LIBUV + uv_run(main_thread.loop, UV_RUN_ONCE); +#else + h2o_evloop_run(main_thread.loop, INT32_MAX); +#endif + } + + pthread_join(tid, NULL); + + h2o_multithread_unregister_receiver(worker_thread.queue, &worker_thread.ping_receiver); + h2o_multithread_destroy_queue(worker_thread.queue); + destroy_loop(worker_thread.loop); + h2o_multithread_unregister_receiver(main_thread.queue, &main_thread.pong_receiver); + h2o_multithread_unregister_receiver(main_thread.queue, &main_thread.shutdown_receiver); + h2o_multithread_destroy_queue(main_thread.queue); + destroy_loop(main_thread.loop); + + ok(1); +} diff --git a/src/web/server/h2o/libh2o/t/00unit/lib/common/serverutil.c b/src/web/server/h2o/libh2o/t/00unit/lib/common/serverutil.c new file mode 100644 index 000000000..dfbb27156 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/lib/common/serverutil.c @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2014 DeNA Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include +#include "../../test.h" +#include "../../../../lib/common/serverutil.c" + +static void test_server_starter(void) +{ + int *fds; + size_t num_fds; + + unsetenv("SERVER_STARTER_PORT"); + num_fds = h2o_server_starter_get_fds(&fds); + ok(num_fds == 0); + + setenv("SERVER_STARTER_PORT", "0.0.0.0:80=3", 1); + num_fds = h2o_server_starter_get_fds(&fds); + ok(num_fds == 1); + ok(fds[0] == 3); + + setenv("SERVER_STARTER_PORT", "0.0.0.0:80=3;/tmp/foo.sock=4", 1); + num_fds = h2o_server_starter_get_fds(&fds); + ok(num_fds == 2); + ok(fds[0] == 3); + ok(fds[1] == 4); + + setenv("SERVER_STARTER_PORT", "0.0.0.0:80=foo", 1); + num_fds = h2o_server_starter_get_fds(&fds); + ok(num_fds == SIZE_MAX); + + /* without bind address */ + setenv("SERVER_STARTER_PORT", "50908=4", 1); + num_fds = h2o_server_starter_get_fds(&fds); + ok(num_fds == 1); + ok(fds[0] == 4); +} + +static void test_read_command(void) +{ + char *argv[] = {"t/00unit/assets/read_command.pl", "hello", NULL}; + h2o_buffer_t *resp; + int ret, status; + + /* success */ + ret = h2o_read_command(argv[0], argv, &resp, &status); + ok(ret == 0); + if (ret == 0) { + ok(WIFEXITED(status)); + ok(WEXITSTATUS(status) == 0); + ok(h2o_memis(resp->bytes, resp->size, H2O_STRLIT("hello"))); + h2o_buffer_dispose(&resp); + } + + /* exit status */ + setenv("READ_COMMAND_EXIT_STATUS", "75", 1); + ret = h2o_read_command(argv[0], argv, &resp, &status); + ok(ret == 0); + if (ret == 0) { + ok(WIFEXITED(status)); + ok(WEXITSTATUS(status) == 75); + ok(h2o_memis(resp->bytes, resp->size, H2O_STRLIT("hello"))); + h2o_buffer_dispose(&resp); + } + unsetenv("READ_COMMAND_EXIT_STATUS"); + + /* command not an executable */ + argv[0] = "t/00unit/assets"; + ret = h2o_read_command(argv[0], argv, &resp, &status); + ok(ret != 0 || (ret == 0 && WIFEXITED(status) && WEXITSTATUS(status) == 127)); +} + +void test_lib__common__serverutil_c(void) +{ + subtest("server-starter", test_server_starter); + subtest("read-command", test_read_command); +} diff --git a/src/web/server/h2o/libh2o/t/00unit/lib/common/socket.c b/src/web/server/h2o/libh2o/t/00unit/lib/common/socket.c new file mode 100644 index 000000000..89aae515c --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/lib/common/socket.c @@ -0,0 +1,171 @@ +/* + * Copyright (c) 2015 DeNA Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include +#include "../../test.h" +#include "../../../../lib/common/socket.c" + +static void test_on_alpn_select(void) +{ + static const h2o_iovec_t protocols[] = {{H2O_STRLIT("h2")}, {H2O_STRLIT("h2-16")}, {H2O_STRLIT("h2-14")}, {NULL}}; + const unsigned char *out; + unsigned char outlen; + int ret; + + ret = on_alpn_select(NULL, &out, &outlen, (const unsigned char *)H2O_STRLIT("\3foo"), (void *)protocols); + ok(ret == SSL_TLSEXT_ERR_NOACK); + + ret = on_alpn_select(NULL, &out, &outlen, (const unsigned char *)H2O_STRLIT("\2h2"), (void *)protocols); + ok(ret == SSL_TLSEXT_ERR_OK); + ok(h2o_memis(out, outlen, H2O_STRLIT("h2"))); + + ret = on_alpn_select(NULL, &out, &outlen, (const unsigned char *)H2O_STRLIT("\5h2-14\5h2-16\2h2"), (void *)protocols); + ok(ret == SSL_TLSEXT_ERR_OK); + ok(h2o_memis(out, outlen, H2O_STRLIT("h2"))); + + ret = on_alpn_select(NULL, &out, &outlen, (const unsigned char *)H2O_STRLIT("\5h2-14\5h2-16"), (void *)protocols); + ok(ret == SSL_TLSEXT_ERR_OK); + ok(h2o_memis(out, outlen, H2O_STRLIT("h2-16"))); +} + +static void test_sliding_counter(void) +{ + h2o_sliding_counter_t counter = {0}; + size_t i; + + h2o_sliding_counter_start(&counter, 100); + h2o_sliding_counter_stop(&counter, 80 + 100); + ok(counter.average == 10); + + for (i = 0; i != 7; ++i) { + h2o_sliding_counter_start(&counter, 1); + h2o_sliding_counter_stop(&counter, 81); + } + ok(counter.average == 80); + + h2o_sliding_counter_start(&counter, 1000); + h2o_sliding_counter_stop(&counter, 1000 + 1000 * 8 - 80 * 7); + ok(counter.average == 1000); + + for (i = 0; i != 8; ++i) { + h2o_sliding_counter_start(&counter, 1); + h2o_sliding_counter_stop(&counter, 11); + } + ok(counter.average == 10); +} + +static struct { + struct { + int ret; + } fetch_tcp_info; + struct { + int ret; + unsigned cur; + size_t call_cnt; + } minimize_notsent_lowat; + struct { + unsigned long ret; + } get_cipher; +} cb_ret_vars; + +static int test_adjust_notsent_lowat(h2o_socket_t *sock, unsigned notsent_lowat) +{ + cb_ret_vars.minimize_notsent_lowat.cur = notsent_lowat; + ++cb_ret_vars.minimize_notsent_lowat.call_cnt; + return cb_ret_vars.minimize_notsent_lowat.ret; +} + +static void test_prepare_for_latency_optimization(void) +{ + struct st_h2o_socket_ssl_t sock_ssl = {NULL, NULL, NULL, 5 + 8 + 16 /* GCM overhead */}; + h2o_socket_t sock = {NULL, &sock_ssl}; + h2o_socket_latency_optimization_conditions_t cond = {UINT_MAX, 10, 65535}; + + /* option disabled, or if rtt is too small */ + memset(&sock._latency_optimization, 0, sizeof(sock._latency_optimization)); + memset(&cb_ret_vars, 0, sizeof(cb_ret_vars)); + cb_ret_vars.fetch_tcp_info.ret = 0; + cb_ret_vars.get_cipher.ret = TLS1_CK_RSA_WITH_AES_128_GCM_SHA256; + prepare_for_latency_optimized_write(&sock, &cond, 50000 /* rtt */, 1400 /* mss */, 10 /* cwnd_size */, 6 /* cwnd_avail */, 4, + test_adjust_notsent_lowat); + ok(sock._latency_optimization.state == H2O_SOCKET_LATENCY_OPTIMIZATION_STATE_DISABLED); + ok(sock._latency_optimization.suggested_tls_payload_size == 16384); + ok(sock._latency_optimization.suggested_write_size == SIZE_MAX); + ok(cb_ret_vars.minimize_notsent_lowat.call_cnt == 0); + + /* trigger optimiziation */ + memset(&sock._latency_optimization, 0, sizeof(sock._latency_optimization)); + cond.min_rtt = 25; /* 25 ms */ + prepare_for_latency_optimized_write(&sock, &cond, 50000 /* rtt */, 1400 /* mss */, 10 /* cwnd_size */, 6 /* cwnd_avail */, 4, + test_adjust_notsent_lowat); + ok(sock._latency_optimization.state == H2O_SOCKET_LATENCY_OPTIMIZATION_STATE_DETERMINED); + ok(sock._latency_optimization.suggested_tls_payload_size == 1400 - (5 + 8 + 16)); + ok(sock._latency_optimization.suggested_write_size == (1400 - (5 + 8 + 16)) * (10 - 5 + 1)); + ok(cb_ret_vars.minimize_notsent_lowat.call_cnt == 1); + ok(cb_ret_vars.minimize_notsent_lowat.cur == 1); + + /* recalculate with an updated cwnd,unacked */ + sock._latency_optimization.state = H2O_SOCKET_LATENCY_OPTIMIZATION_STATE_NEEDS_UPDATE; + prepare_for_latency_optimized_write(&sock, &cond, 50000 /* rtt */, 1400 /* mss */, 14 /* cwnd_size */, 12 /* cwnd_avail */, 4, + test_adjust_notsent_lowat); + ok(sock._latency_optimization.state == H2O_SOCKET_LATENCY_OPTIMIZATION_STATE_DETERMINED); + ok(sock._latency_optimization.suggested_tls_payload_size == 1400 - (5 + 8 + 16)); + ok(sock._latency_optimization.suggested_write_size == (1400 - (5 + 8 + 16)) * (14 - 3 + 1)); + ok(cb_ret_vars.minimize_notsent_lowat.call_cnt == 1); + ok(cb_ret_vars.minimize_notsent_lowat.cur == 1); + + /* switches to B/W optimization when CWND becomes greater */ + sock._latency_optimization.state = H2O_SOCKET_LATENCY_OPTIMIZATION_STATE_NEEDS_UPDATE; + prepare_for_latency_optimized_write(&sock, &cond, 50000 /* rtt */, 1400 /* mss */, (65535 / 1400) + 1 /* cwnd_size */, + (65535 / 1400) + 1 /* cwnd_avail */, 4, test_adjust_notsent_lowat); + ok(sock._latency_optimization.state == H2O_SOCKET_LATENCY_OPTIMIZATION_STATE_DETERMINED); + ok(sock._latency_optimization.suggested_tls_payload_size == 16384); + ok(sock._latency_optimization.suggested_write_size == SIZE_MAX); + ok(cb_ret_vars.minimize_notsent_lowat.call_cnt == 2); + ok(cb_ret_vars.minimize_notsent_lowat.cur == 0); + + /* switches back to latency optimization when CWND becomes small */ + sock._latency_optimization.state = H2O_SOCKET_LATENCY_OPTIMIZATION_STATE_NEEDS_UPDATE; + prepare_for_latency_optimized_write(&sock, &cond, 50000 /* rtt */, 1400 /* mss */, 8 /* cwnd_size */, 6 /* cwnd_avail */, 4, + test_adjust_notsent_lowat); + ok(sock._latency_optimization.state == H2O_SOCKET_LATENCY_OPTIMIZATION_STATE_DETERMINED); + ok(sock._latency_optimization.suggested_tls_payload_size == 1400 - (5 + 8 + 16)); + ok(sock._latency_optimization.suggested_write_size == (1400 - (5 + 8 + 16)) * (8 - 3 + 1)); + ok(cb_ret_vars.minimize_notsent_lowat.call_cnt == 3); + ok(cb_ret_vars.minimize_notsent_lowat.cur == 1); + + /* switches back to B/W optimization when loop time becomes greater than threshold */ + sock._latency_optimization.state = H2O_SOCKET_LATENCY_OPTIMIZATION_STATE_NEEDS_UPDATE; + prepare_for_latency_optimized_write(&sock, &cond, 50000 /* rtt */, 1400 /* mss */, 8 /* cwnd_size */, 6 /* cwnd_avail */, 6, + test_adjust_notsent_lowat); + ok(sock._latency_optimization.state == H2O_SOCKET_LATENCY_OPTIMIZATION_STATE_DISABLED); + ok(sock._latency_optimization.suggested_tls_payload_size == 16384); + ok(sock._latency_optimization.suggested_write_size == SIZE_MAX); + ok(cb_ret_vars.minimize_notsent_lowat.call_cnt == 4); + ok(cb_ret_vars.minimize_notsent_lowat.cur == 0); +} + +void test_lib__common__socket_c(void) +{ + subtest("on_alpn_select", test_on_alpn_select); + subtest("sliding_counter", test_sliding_counter); + subtest("prepare_for_latency_optimization", test_prepare_for_latency_optimization); +} diff --git a/src/web/server/h2o/libh2o/t/00unit/lib/common/string.c b/src/web/server/h2o/libh2o/t/00unit/lib/common/string.c new file mode 100644 index 000000000..464506e3c --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/lib/common/string.c @@ -0,0 +1,335 @@ +/* + * Copyright (c) 2014 DeNA Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include "../../test.h" +#include "../../../../lib/common/string.c" + +static void test_strstr(void) +{ + ok(h2o_strstr("abcd", 4, "bc", 2) == 1); + ok(h2o_strstr("abcd", 3, "bc", 2) == 1); + ok(h2o_strstr("abcd", 2, "bc", 2) == -1); +} + +static void test_stripws(void) +{ + h2o_iovec_t t; + + t = h2o_str_stripws(H2O_STRLIT("")); + ok(h2o_memis(t.base, t.len, H2O_STRLIT(""))); + t = h2o_str_stripws(H2O_STRLIT("hello world")); + ok(h2o_memis(t.base, t.len, H2O_STRLIT("hello world"))); + t = h2o_str_stripws(H2O_STRLIT(" hello world")); + ok(h2o_memis(t.base, t.len, H2O_STRLIT("hello world"))); + t = h2o_str_stripws(H2O_STRLIT("hello world ")); + ok(h2o_memis(t.base, t.len, H2O_STRLIT("hello world"))); + t = h2o_str_stripws(H2O_STRLIT(" hello world ")); + ok(h2o_memis(t.base, t.len, H2O_STRLIT("hello world"))); + t = h2o_str_stripws(H2O_STRLIT(" ")); + ok(h2o_memis(t.base, t.len, H2O_STRLIT(""))); +} + +static void test_get_filext(void) +{ + h2o_iovec_t ext; + + ext = h2o_get_filext(H2O_STRLIT("/abc.txt")); + ok(h2o_memis(ext.base, ext.len, H2O_STRLIT("txt"))); + ext = h2o_get_filext(H2O_STRLIT("/abc.txt.gz")); + ok(h2o_memis(ext.base, ext.len, H2O_STRLIT("gz"))); + ext = h2o_get_filext(H2O_STRLIT("/abc.")); + ok(h2o_memis(ext.base, ext.len, H2O_STRLIT(""))); + ext = h2o_get_filext(H2O_STRLIT("/abc")); + ok(ext.base == NULL); + ext = h2o_get_filext(H2O_STRLIT("/abc.def/abc")); + ok(ext.base == NULL); + ext = h2o_get_filext(H2O_STRLIT("/abc.def/")); + ok(ext.base == NULL); +} + +static void test_next_token(void) +{ + h2o_iovec_t iter; + const char *token; + size_t token_len; + +#define NEXT() \ + if ((token = h2o_next_token(&iter, ',', &token_len, NULL)) == NULL) { \ + ok(0); \ + return; \ + } + + iter = h2o_iovec_init(H2O_STRLIT("public, max-age=86400, must-revalidate")); + NEXT(); + ok(h2o_memis(token, token_len, H2O_STRLIT("public"))); + NEXT(); + ok(h2o_memis(token, token_len, H2O_STRLIT("max-age=86400"))); + NEXT(); + ok(h2o_memis(token, token_len, H2O_STRLIT("must-revalidate"))); + token = h2o_next_token(&iter, ',', &token_len, NULL); + ok(token == NULL); + + iter = h2o_iovec_init(H2O_STRLIT(" public ,max-age=86400 ,")); + NEXT(); + ok(h2o_memis(token, token_len, H2O_STRLIT("public"))); + NEXT(); + ok(h2o_memis(token, token_len, H2O_STRLIT("max-age=86400"))); + token = h2o_next_token(&iter, ',', &token_len, NULL); + ok(token == NULL); + + iter = h2o_iovec_init(H2O_STRLIT("")); + token = h2o_next_token(&iter, ',', &token_len, NULL); + ok(token == NULL); + + iter = h2o_iovec_init(H2O_STRLIT(", ,a, ")); + NEXT(); + ok(token_len == 0); + NEXT(); + ok(token_len == 0); + NEXT(); + ok(h2o_memis(token, token_len, H2O_STRLIT("a"))); + token = h2o_next_token(&iter, ',', &token_len, NULL); + ok(token == NULL); + +#undef NEXT +} + +static void test_next_token2(void) +{ + h2o_iovec_t iter, value; + const char *name; + size_t name_len; + +#define NEXT() \ + if ((name = h2o_next_token(&iter, ',', &name_len, &value)) == NULL) { \ + ok(0); \ + return; \ + } + + iter = h2o_iovec_init(H2O_STRLIT("public, max-age=86400, must-revalidate")); + NEXT(); + ok(h2o_memis(name, name_len, H2O_STRLIT("public"))); + ok(value.base == NULL); + ok(value.len == 0); + NEXT(); + ok(h2o_memis(name, name_len, H2O_STRLIT("max-age"))); + ok(h2o_memis(value.base, value.len, H2O_STRLIT("86400"))); + NEXT(); + ok(h2o_memis(name, name_len, H2O_STRLIT("must-revalidate"))); + ok(value.base == NULL); + ok(value.len == 0); + name = h2o_next_token(&iter, ',', &name_len, &value); + ok(name == NULL); + + iter = h2o_iovec_init(H2O_STRLIT("public, max-age = 86400 = c , must-revalidate=")); + NEXT(); + ok(h2o_memis(name, name_len, H2O_STRLIT("public"))); + ok(value.base == NULL); + ok(value.len == 0); + NEXT(); + ok(h2o_memis(name, name_len, H2O_STRLIT("max-age"))); + ok(h2o_memis(value.base, value.len, H2O_STRLIT("86400 = c"))); + NEXT(); + ok(h2o_memis(name, name_len, H2O_STRLIT("must-revalidate"))); + name = h2o_next_token(&iter, ',', &name_len, &value); + ok(h2o_memis(value.base, value.len, H2O_STRLIT(""))); + +#undef NEXT +} + +static void test_next_token3(void) +{ + h2o_iovec_t iter, value; + const char *name; + size_t name_len; + +#define NEXT() \ + if ((name = h2o_next_token(&iter, ';', &name_len, &value)) == NULL) { \ + ok(0); \ + return; \ + } + + iter = h2o_iovec_init(H2O_STRLIT("; rel=preload; xxx=,, ")); + NEXT(); + ok(h2o_memis(name, name_len, H2O_STRLIT(""))); + ok(value.base == NULL); + ok(value.len == 0); + NEXT(); + ok(h2o_memis(name, name_len, H2O_STRLIT("rel"))); + ok(h2o_memis(value.base, value.len, H2O_STRLIT("preload"))); + NEXT(); + ok(h2o_memis(name, name_len, H2O_STRLIT("xxx"))); + ok(value.base != NULL); /* xxx _has_ a value! */ + ok(value.len == 0); + NEXT(); + ok(h2o_memis(name, name_len, H2O_STRLIT(","))); + ok(value.base == NULL); + ok(value.len == 0); + NEXT(); + ok(h2o_memis(name, name_len, H2O_STRLIT(""))); + ok(value.base == NULL); + ok(value.len == 0); + NEXT(); + ok(h2o_memis(name, name_len, H2O_STRLIT(","))); + ok(value.base == NULL); + ok(value.len == 0); + NEXT(); + ok(h2o_memis(name, name_len, H2O_STRLIT(""))); + ok(value.base == NULL); + ok(value.len == 0); + name = h2o_next_token(&iter, ',', &name_len, &value); + ok(name == NULL); + +#undef NEXT +} + +static void test_decode_base64(void) +{ + h2o_mem_pool_t pool; + char buf[256]; + + h2o_mem_init_pool(&pool); + + h2o_iovec_t src = {H2O_STRLIT("The quick brown fox jumps over the lazy dog.")}, decoded; + h2o_base64_encode(buf, (const uint8_t *)src.base, src.len, 1); + ok(strcmp(buf, "VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy4") == 0); + decoded = h2o_decode_base64url(&pool, buf, strlen(buf)); + ok(src.len == decoded.len); + ok(strcmp(decoded.base, src.base) == 0); + + h2o_mem_clear_pool(&pool); +} + +static void test_htmlescape(void) +{ + h2o_mem_pool_t pool; + h2o_mem_init_pool(&pool); + +#define TEST(src, expected) \ + do { \ + h2o_iovec_t escaped = h2o_htmlescape(&pool, H2O_STRLIT(src)); \ + ok(h2o_memis(escaped.base, escaped.len, H2O_STRLIT(expected))); \ + } while (0) + + TEST("hello world", "hello world"); + TEST("x < y", "x < y"); + TEST("\0\"&'<>", "\0"&'<>"); + +#undef TEST + + h2o_mem_clear_pool(&pool); +} + +static void test_uri_escape(void) +{ + h2o_mem_pool_t pool; + h2o_mem_init_pool(&pool); + +#define TEST(src, preserve, expected) \ + do { \ + h2o_iovec_t escaped = h2o_uri_escape(&pool, H2O_STRLIT(src), preserve); \ + ok(h2o_memis(escaped.base, escaped.len, H2O_STRLIT(expected))); \ + } while (0) + + TEST("abc", NULL, "abc"); + TEST("a/c", NULL, "a%2Fc"); + TEST("a/c", "/", "a/c"); + TEST("\xe3\x81\x82", NULL, "%E3%81%82"); + TEST("a\0!", NULL, "a%00!"); + TEST("a/\0!", "/", "a/%00!"); + +#undef TEST + + h2o_mem_clear_pool(&pool); +} + +static void test_at_position(void) +{ + char buf[160]; + int ret; + + /* normal cases */ + ret = h2o_str_at_position(buf, H2O_STRLIT("hello\nworld\n"), 1, 1); + ok(ret == 0); + ok(strcmp(buf, "hello\n^\n") == 0); + + ret = h2o_str_at_position(buf, H2O_STRLIT("hello\nworld\n"), 1, 5); + ok(ret == 0); + ok(strcmp(buf, "hello\n ^\n") == 0); + + ret = h2o_str_at_position(buf, H2O_STRLIT("hello\nworld\n"), 1, 6); + ok(ret == 0); + ok(strcmp(buf, "hello\n ^\n") == 0); + + ret = h2o_str_at_position(buf, H2O_STRLIT("hello\nworld\n"), 1, 7); + ok(ret == 0); + ok(strcmp(buf, "hello\n ^\n") == 0); + + ret = h2o_str_at_position(buf, H2O_STRLIT("hello\nworld\n"), 2, 1); + ok(ret == 0); + ok(strcmp(buf, "world\n^\n") == 0); + + ret = h2o_str_at_position(buf, H2O_STRLIT("hello\nworld\n"), 2, 5); + ok(ret == 0); + ok(strcmp(buf, "world\n ^\n") == 0); + + ret = h2o_str_at_position(buf, H2O_STRLIT("hello\nworld\n"), 1, 7); + ok(ret == 0); + ok(strcmp(buf, "hello\n ^\n") == 0); + + ret = h2o_str_at_position( + buf, H2O_STRLIT("_________1_________2_________3_________4_________5_________6_________7_________\nworld\n"), 1, 5); + ok(ret == 0); + ok(strcmp(buf, "_________1_________2_________3_________4_________5_________6_________7______\n ^\n") == 0); + + ret = h2o_str_at_position( + buf, H2O_STRLIT("_________1_________2_________3_________4_________5_________6_________7_________\nworld\n"), 1, 60); + ok(ret == 0); + ok(strcmp(buf, "_________3_________4_________5_________6_________7_________\n ^\n") == 0); + + ret = h2o_str_at_position(buf, H2O_STRLIT("hello"), 1, 20); + ok(ret == 0); + ok(strcmp(buf, "hello\n ^\n") == 0); + + /* error cases */ + ret = h2o_str_at_position(buf, H2O_STRLIT("hello\nworld\n"), 0, 1); + ok(ret != 0); + + ret = h2o_str_at_position(buf, H2O_STRLIT("hello\nworld\n"), 1, 0); + ok(ret != 0); + + ret = h2o_str_at_position(buf, H2O_STRLIT("hello\nworld\n"), 4, 1); + ok(ret != 0); +} + +void test_lib__common__string_c(void) +{ + subtest("strstr", test_strstr); + subtest("stripws", test_stripws); + subtest("get_filext", test_get_filext); + subtest("next_token", test_next_token); + subtest("next_token2", test_next_token2); + subtest("next_token3", test_next_token3); + subtest("decode_base64", test_decode_base64); + subtest("htmlescape", test_htmlescape); + subtest("uri_escape", test_uri_escape); + subtest("at_position", test_at_position); +} diff --git a/src/web/server/h2o/libh2o/t/00unit/lib/common/time.c b/src/web/server/h2o/libh2o/t/00unit/lib/common/time.c new file mode 100644 index 000000000..c6fc12ff9 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/lib/common/time.c @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2014 DeNA Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include "../../test.h" +#include "../../../../lib/common/time.c" + +void test_lib__common__time_c(void) +{ + struct tm tm = { + 56, /* sec */ + 34, /* min */ + 12, /* hour */ + 4, /* 4th */ + 1, /* feb */ + 115, /* 2015 */ + 3 /* Wed */ + }; + char buf[H2O_TIMESTR_RFC1123_LEN + 1]; + + h2o_time2str_rfc1123(buf, &tm); + ok(strcmp(buf, "Wed, 04 Feb 2015 12:34:56 GMT") == 0); + tm = (struct tm){0}; + h2o_time_parse_rfc1123(buf, H2O_TIMESTR_RFC1123_LEN, &tm); + ok(tm.tm_year == 115); + ok(tm.tm_mon == 1); + ok(tm.tm_mday == 4); + ok(tm.tm_hour == 12); + ok(tm.tm_min == 34); + ok(tm.tm_sec == 56); +} diff --git a/src/web/server/h2o/libh2o/t/00unit/lib/common/url.c b/src/web/server/h2o/libh2o/t/00unit/lib/common/url.c new file mode 100644 index 000000000..ce1676001 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/lib/common/url.c @@ -0,0 +1,662 @@ +/* + * Copyright (c) 2014,2015 DeNA Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include "../../test.h" +#include "../../../../lib/common/url.c" + +static void test_normalize_path(void) +{ + h2o_mem_pool_t pool; + + h2o_mem_init_pool(&pool); + + size_t q; + size_t *norm_indexes = NULL; + h2o_iovec_t input; + h2o_iovec_t b; + + input = h2o_iovec_init(NULL, 0); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 1); + ok(memcmp(b.base, H2O_STRLIT("/")) == 0); + ok(q == SIZE_MAX); + ok(norm_indexes == NULL); + + input = h2o_iovec_init(H2O_STRLIT("a")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 2); + ok(memcmp(b.base, H2O_STRLIT("/a")) == 0); + ok(q == SIZE_MAX); + ok(norm_indexes != NULL); + ok(norm_indexes[0] == 0); + ok(norm_indexes[1] == 1); + norm_indexes = NULL; + + input = h2o_iovec_init(H2O_STRLIT("aa")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 3); + ok(memcmp(b.base, H2O_STRLIT("/aa")) == 0); + ok(q == SIZE_MAX); + ok(norm_indexes != NULL); + ok(norm_indexes[0] == 0); + ok(norm_indexes[1] == 1); + ok(norm_indexes[2] == 2); + norm_indexes = NULL; + + input = h2o_iovec_init(H2O_STRLIT("/")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 1); + ok(memcmp(b.base, H2O_STRLIT("/")) == 0); + ok(q == SIZE_MAX); + ok(norm_indexes == NULL); + + input = h2o_iovec_init(H2O_STRLIT("/.")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 1); + ok(memcmp(b.base, H2O_STRLIT("/")) == 0); + ok(q == SIZE_MAX); + ok(norm_indexes != NULL); + ok(norm_indexes[0] == 1); + norm_indexes = NULL; + + input = h2o_iovec_init(H2O_STRLIT("/./")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 1); + ok(memcmp(b.base, H2O_STRLIT("/")) == 0); + ok(q == SIZE_MAX); + ok(norm_indexes != NULL); + ok(norm_indexes[0] == 1); + norm_indexes = NULL; + + input = h2o_iovec_init(H2O_STRLIT("/..")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 1); + ok(memcmp(b.base, H2O_STRLIT("/")) == 0); + ok(q == SIZE_MAX); + ok(norm_indexes != NULL); + ok(norm_indexes[0] == 1); + norm_indexes = NULL; + + input = h2o_iovec_init(H2O_STRLIT("/../")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 1); + ok(memcmp(b.base, H2O_STRLIT("/")) == 0); + ok(q == SIZE_MAX); + ok(norm_indexes != NULL); + ok(norm_indexes[0] == 1); + norm_indexes = NULL; + + input = h2o_iovec_init(H2O_STRLIT("/abc")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 4); + ok(memcmp(b.base, H2O_STRLIT("/abc")) == 0); + ok(q == SIZE_MAX); + ok(norm_indexes == NULL); + + input = h2o_iovec_init(H2O_STRLIT("/abc")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 4); + ok(memcmp(b.base, H2O_STRLIT("/abc")) == 0); + ok(q == SIZE_MAX); + ok(norm_indexes == NULL); + + input = h2o_iovec_init(H2O_STRLIT("/abc/../def")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 4); + ok(memcmp(b.base, H2O_STRLIT("/def")) == 0); + ok(q == SIZE_MAX); + ok(norm_indexes != NULL); + ok(norm_indexes[0] == 1); + ok(norm_indexes[1] == 9); + ok(norm_indexes[2] == 10); + ok(norm_indexes[3] == 11); + norm_indexes = NULL; + + input = h2o_iovec_init(H2O_STRLIT("/abc/../../def")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 4); + ok(memcmp(b.base, H2O_STRLIT("/def")) == 0); + ok(q == SIZE_MAX); + ok(norm_indexes != NULL); + ok(norm_indexes[0] == 1); + ok(norm_indexes[1] == 12); + ok(norm_indexes[2] == 13); + ok(norm_indexes[3] == 14); + norm_indexes = NULL; + + input = h2o_iovec_init(H2O_STRLIT("/abc/./def")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 8); + ok(memcmp(b.base, H2O_STRLIT("/abc/def")) == 0); + ok(q == SIZE_MAX); + ok(norm_indexes != NULL); + ok(norm_indexes[0] == 1); + ok(norm_indexes[1] == 2); + ok(norm_indexes[2] == 3); + ok(norm_indexes[3] == 4); + ok(norm_indexes[4] == 5); + ok(norm_indexes[5] == 8); + ok(norm_indexes[6] == 9); + ok(norm_indexes[7] == 10); + norm_indexes = NULL; + + input = h2o_iovec_init(H2O_STRLIT("/abc/././def")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 8); + ok(memcmp(b.base, H2O_STRLIT("/abc/def")) == 0); + ok(q == SIZE_MAX); + ok(norm_indexes != NULL); + ok(norm_indexes[0] == 1); + ok(norm_indexes[1] == 2); + ok(norm_indexes[2] == 3); + ok(norm_indexes[3] == 4); + ok(norm_indexes[4] == 5); + ok(norm_indexes[5] == 10); + ok(norm_indexes[6] == 11); + ok(norm_indexes[7] == 12); + norm_indexes = NULL; + + input = h2o_iovec_init(H2O_STRLIT("/abc/def/ghi/../..")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 5); + ok(memcmp(b.base, H2O_STRLIT("/abc/")) == 0); + ok(q == SIZE_MAX); + ok(norm_indexes != NULL); + ok(norm_indexes[0] == 1); + ok(norm_indexes[1] == 2); + ok(norm_indexes[2] == 3); + ok(norm_indexes[3] == 4); + ok(norm_indexes[4] == 5); + norm_indexes = NULL; + + input = h2o_iovec_init(H2O_STRLIT("/abc/def/./.")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 9); + ok(memcmp(b.base, H2O_STRLIT("/abc/def/")) == 0); + ok(q == SIZE_MAX); + ok(norm_indexes != NULL); + ok(norm_indexes[0] == 1); + ok(norm_indexes[1] == 2); + ok(norm_indexes[2] == 3); + ok(norm_indexes[3] == 4); + ok(norm_indexes[4] == 5); + ok(norm_indexes[5] == 6); + ok(norm_indexes[6] == 7); + ok(norm_indexes[7] == 8); + norm_indexes = NULL; + + input = h2o_iovec_init(H2O_STRLIT("/abc/def/ghi/../.")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 9); + ok(memcmp(b.base, H2O_STRLIT("/abc/def/")) == 0); + ok(q == SIZE_MAX); + ok(norm_indexes != NULL); + ok(norm_indexes[0] == 1); + ok(norm_indexes[1] == 2); + ok(norm_indexes[2] == 3); + ok(norm_indexes[3] == 4); + ok(norm_indexes[4] == 5); + ok(norm_indexes[5] == 6); + ok(norm_indexes[6] == 7); + ok(norm_indexes[7] == 8); + norm_indexes = NULL; + + input = h2o_iovec_init(H2O_STRLIT("/abc/def/./..")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 5); + ok(memcmp(b.base, H2O_STRLIT("/abc/")) == 0); + ok(q == SIZE_MAX); + ok(norm_indexes != NULL); + ok(norm_indexes[0] == 1); + ok(norm_indexes[1] == 2); + ok(norm_indexes[2] == 3); + ok(norm_indexes[3] == 4); + ok(norm_indexes[4] == 5); + norm_indexes = NULL; + + input = h2o_iovec_init(H2O_STRLIT("/abc/def/..")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 5); + ok(memcmp(b.base, H2O_STRLIT("/abc/")) == 0); + ok(q == SIZE_MAX); + ok(norm_indexes != NULL); + ok(norm_indexes[0] == 1); + ok(norm_indexes[1] == 2); + ok(norm_indexes[2] == 3); + ok(norm_indexes[3] == 4); + ok(norm_indexes[4] == 5); + norm_indexes = NULL; + + input = h2o_iovec_init(H2O_STRLIT("/abc/def/.")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 9); + ok(memcmp(b.base, H2O_STRLIT("/abc/def/")) == 0); + ok(q == SIZE_MAX); + ok(norm_indexes != NULL); + ok(norm_indexes[0] == 1); + ok(norm_indexes[1] == 2); + ok(norm_indexes[2] == 3); + ok(norm_indexes[3] == 4); + ok(norm_indexes[4] == 5); + ok(norm_indexes[5] == 6); + ok(norm_indexes[6] == 7); + norm_indexes = NULL; + + input = h2o_iovec_init(H2O_STRLIT("/abc?xx")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 4); + ok(memcmp(b.base, H2O_STRLIT("/abc")) == 0); + ok(q == 4); + ok(norm_indexes == NULL); + + input = h2o_iovec_init(H2O_STRLIT("/abc/../def?xx")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 4); + ok(memcmp(b.base, H2O_STRLIT("/def")) == 0); + ok(q == 11); + ok(norm_indexes != NULL); + ok(norm_indexes[0] == 1); + ok(norm_indexes[1] == 9); + ok(norm_indexes[2] == 10); + ok(norm_indexes[3] == 11); + norm_indexes = NULL; + + input = h2o_iovec_init(H2O_STRLIT("/a%62c")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 4); + ok(memcmp(b.base, H2O_STRLIT("/abc")) == 0); + ok(q == SIZE_MAX); + ok(norm_indexes != NULL); + ok(norm_indexes[0] == 1); + ok(norm_indexes[1] == 2); + ok(norm_indexes[2] == 5); + ok(norm_indexes[3] == 6); + norm_indexes = NULL; + + input = h2o_iovec_init(H2O_STRLIT("/a%6")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 4); + ok(memcmp(b.base, H2O_STRLIT("/a%6")) == 0); + ok(q == SIZE_MAX); + ok(norm_indexes != NULL); + ok(norm_indexes[0] == 1); + ok(norm_indexes[1] == 2); + ok(norm_indexes[2] == 3); + ok(norm_indexes[3] == 4); + norm_indexes = NULL; + + input = h2o_iovec_init(H2O_STRLIT("/a%6?")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 4); + ok(memcmp(b.base, H2O_STRLIT("/a%6")) == 0); + ok(q == 4); + ok(norm_indexes != NULL); + ok(norm_indexes[0] == 1); + ok(norm_indexes[1] == 2); + ok(norm_indexes[2] == 3); + ok(norm_indexes[3] == 4); + norm_indexes = NULL; + + input = h2o_iovec_init(H2O_STRLIT("/%25")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 2); + ok(memcmp(b.base, H2O_STRLIT("/%")) == 0); + ok(q == SIZE_MAX); + ok(norm_indexes != NULL); + ok(norm_indexes[0] == 1); + ok(norm_indexes[1] == 4); + norm_indexes = NULL; + + input = h2o_iovec_init(H2O_STRLIT("/abc//")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 6); + ok(memcmp(b.base, H2O_STRLIT("/abc//")) == 0); + ok(q == SIZE_MAX); + ok(norm_indexes == NULL); + + input = h2o_iovec_init(H2O_STRLIT("/abc//d")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 7); + ok(memcmp(b.base, H2O_STRLIT("/abc//d")) == 0); + ok(q == SIZE_MAX); + ok(norm_indexes == NULL); + + input = h2o_iovec_init(H2O_STRLIT("//")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 2); + ok(memcmp(b.base, H2O_STRLIT("//")) == 0); + ok(q == SIZE_MAX); + ok(norm_indexes == NULL); + + input = h2o_iovec_init(H2O_STRLIT("//abc")); + b = h2o_url_normalize_path(&pool, input.base, input.len, &q, &norm_indexes); + ok(b.len == 5); + ok(memcmp(b.base, H2O_STRLIT("//abc")) == 0); + ok(q == SIZE_MAX); + ok(norm_indexes == NULL); + + h2o_mem_clear_pool(&pool); +} + +static void test_hostport(void) +{ + h2o_iovec_t input, host; + uint16_t port; + const char *ret; + + input = h2o_iovec_init(H2O_STRLIT("127.0.0.1")); + ret = h2o_url_parse_hostport(input.base, input.len, &host, &port); + ok(ret == input.base + input.len); + ok(h2o_memis(host.base, host.len, H2O_STRLIT("127.0.0.1"))); + ok(port == 65535); + + input = h2o_iovec_init(H2O_STRLIT("127.0.0.1/")); + ret = h2o_url_parse_hostport(input.base, input.len, &host, &port); + ok(strcmp(ret, "/") == 0); + ok(h2o_memis(host.base, host.len, H2O_STRLIT("127.0.0.1"))); + ok(port == 65535); + + input = h2o_iovec_init(H2O_STRLIT("127.0.0.1:8081/")); + ret = h2o_url_parse_hostport(input.base, input.len, &host, &port); + ok(strcmp(ret, "/") == 0); + ok(h2o_memis(host.base, host.len, H2O_STRLIT("127.0.0.1"))); + ok(port == 8081); + + input = h2o_iovec_init(H2O_STRLIT("[::ffff:192.0.2.1]:8081/")); + ret = h2o_url_parse_hostport(input.base, input.len, &host, &port); + ok(strcmp(ret, "/") == 0); + ok(h2o_memis(host.base, host.len, H2O_STRLIT("::ffff:192.0.2.1"))); + ok(port == 8081); + + input = h2o_iovec_init(H2O_STRLIT("[::ffff:192.0.2.1:8081/")); + ret = h2o_url_parse_hostport(input.base, input.len, &host, &port); + ok(ret == NULL); + + input = h2o_iovec_init(H2O_STRLIT(":8081/")); + ret = h2o_url_parse_hostport(input.base, input.len, &host, &port); + ok(ret == NULL); + + input = h2o_iovec_init(H2O_STRLIT("[]:8081/")); + ret = h2o_url_parse_hostport(input.base, input.len, &host, &port); + ok(ret == NULL); +} + +static void test_parse(void) +{ + h2o_url_t parsed; + int ret; + + ret = h2o_url_parse("http://example.com/abc", SIZE_MAX, &parsed); + ok(ret == 0); + ok(parsed.scheme == &H2O_URL_SCHEME_HTTP); + ok(h2o_memis(parsed.authority.base, parsed.authority.len, H2O_STRLIT("example.com"))); + ok(h2o_memis(parsed.host.base, parsed.host.len, H2O_STRLIT("example.com"))); + ok(parsed._port == 65535); + ok(h2o_url_get_port(&parsed) == 80); + ok(h2o_memis(parsed.path.base, parsed.path.len, H2O_STRLIT("/abc"))); + + ret = h2o_url_parse("http://example.com", SIZE_MAX, &parsed); + ok(ret == 0); + ok(parsed.scheme == &H2O_URL_SCHEME_HTTP); + ok(h2o_memis(parsed.authority.base, parsed.authority.len, H2O_STRLIT("example.com"))); + ok(h2o_memis(parsed.host.base, parsed.host.len, H2O_STRLIT("example.com"))); + ok(parsed._port == 65535); + ok(h2o_url_get_port(&parsed) == 80); + ok(h2o_memis(parsed.path.base, parsed.path.len, H2O_STRLIT("/"))); + + ret = h2o_url_parse("http://example.com:81/abc", SIZE_MAX, &parsed); + ok(ret == 0); + ok(parsed.scheme == &H2O_URL_SCHEME_HTTP); + ok(h2o_memis(parsed.authority.base, parsed.authority.len, H2O_STRLIT("example.com:81"))); + ok(h2o_memis(parsed.host.base, parsed.host.len, H2O_STRLIT("example.com"))); + ok(parsed._port == 81); + ok(h2o_url_get_port(&parsed) == 81); + ok(h2o_memis(parsed.path.base, parsed.path.len, H2O_STRLIT("/abc"))); + + ret = h2o_url_parse("http://example.com:81", SIZE_MAX, &parsed); + ok(ret == 0); + ok(parsed.scheme == &H2O_URL_SCHEME_HTTP); + ok(h2o_memis(parsed.authority.base, parsed.authority.len, H2O_STRLIT("example.com:81"))); + ok(h2o_memis(parsed.host.base, parsed.host.len, H2O_STRLIT("example.com"))); + ok(parsed._port == 81); + ok(h2o_url_get_port(&parsed) == 81); + ok(h2o_memis(parsed.path.base, parsed.path.len, H2O_STRLIT("/"))); + + ret = h2o_url_parse("https://example.com/abc", SIZE_MAX, &parsed); + ok(ret == 0); + ok(parsed.scheme == &H2O_URL_SCHEME_HTTPS); + ok(h2o_memis(parsed.authority.base, parsed.authority.len, H2O_STRLIT("example.com"))); + ok(h2o_memis(parsed.host.base, parsed.host.len, H2O_STRLIT("example.com"))); + ok(parsed._port == 65535); + ok(h2o_url_get_port(&parsed) == 443); + ok(h2o_memis(parsed.path.base, parsed.path.len, H2O_STRLIT("/abc"))); + + ret = h2o_url_parse("http:/abc", SIZE_MAX, &parsed); + ok(ret != 0); + + ret = h2o_url_parse("ftp://example.com/abc", SIZE_MAX, &parsed); + ok(ret != 0); + + ret = h2o_url_parse("http://abc:111111/def", SIZE_MAX, &parsed); + ok(ret != 0); + + ret = h2o_url_parse("http://[::ffff:192.0.2.128]", SIZE_MAX, &parsed); + ok(ret == 0); + ok(parsed.scheme == &H2O_URL_SCHEME_HTTP); + ok(h2o_memis(parsed.authority.base, parsed.authority.len, H2O_STRLIT("[::ffff:192.0.2.128]"))); + ok(h2o_memis(parsed.host.base, parsed.host.len, H2O_STRLIT("::ffff:192.0.2.128"))); + ok(parsed._port == 65535); + ok(h2o_url_get_port(&parsed) == 80); + ok(h2o_memis(parsed.path.base, parsed.path.len, H2O_STRLIT("/"))); + + ret = h2o_url_parse("https://[::ffff:192.0.2.128]/abc", SIZE_MAX, &parsed); + ok(ret == 0); + ok(parsed.scheme == &H2O_URL_SCHEME_HTTPS); + ok(h2o_memis(parsed.authority.base, parsed.authority.len, H2O_STRLIT("[::ffff:192.0.2.128]"))); + ok(h2o_memis(parsed.host.base, parsed.host.len, H2O_STRLIT("::ffff:192.0.2.128"))); + ok(parsed._port == 65535); + ok(h2o_url_get_port(&parsed) == 443); + ok(h2o_memis(parsed.path.base, parsed.path.len, H2O_STRLIT("/abc"))); + + ret = h2o_url_parse("https://[::ffff:192.0.2.128]:111/abc", SIZE_MAX, &parsed); + ok(ret == 0); + ok(parsed.scheme == &H2O_URL_SCHEME_HTTPS); + ok(h2o_memis(parsed.authority.base, parsed.authority.len, H2O_STRLIT("[::ffff:192.0.2.128]:111"))); + ok(h2o_memis(parsed.host.base, parsed.host.len, H2O_STRLIT("::ffff:192.0.2.128"))); + ok(parsed._port == 111); + ok(h2o_url_get_port(&parsed) == 111); + ok(h2o_memis(parsed.path.base, parsed.path.len, H2O_STRLIT("/abc"))); +} + +static void test_parse_relative(void) +{ + h2o_url_t parsed; + int ret; + + memset(&parsed, 0x55, sizeof(parsed)); + ret = h2o_url_parse_relative("abc", SIZE_MAX, &parsed); + ok(ret == 0); + ok(parsed.scheme == NULL); + ok(parsed.authority.base == NULL); + ok(parsed.host.base == NULL); + ok(parsed._port == 65535); + ok(h2o_memis(parsed.path.base, parsed.path.len, H2O_STRLIT("abc"))); + + memset(&parsed, 0x55, sizeof(parsed)); + ret = h2o_url_parse_relative("/abc", SIZE_MAX, &parsed); + ok(ret == 0); + ok(parsed.scheme == NULL); + ok(parsed.authority.base == NULL); + ok(parsed.host.base == NULL); + ok(parsed._port == 65535); + ok(h2o_memis(parsed.path.base, parsed.path.len, H2O_STRLIT("/abc"))); + + memset(&parsed, 0x55, sizeof(parsed)); + ret = h2o_url_parse_relative("http:abc", SIZE_MAX, &parsed); + ok(ret == 0); + ok(parsed.scheme == &H2O_URL_SCHEME_HTTP); + ok(parsed.authority.base == NULL); + ok(parsed.host.base == NULL); + ok(parsed._port == 65535); + ok(h2o_memis(parsed.path.base, parsed.path.len, H2O_STRLIT("abc"))); + + memset(&parsed, 0x55, sizeof(parsed)); + ret = h2o_url_parse_relative("//host", SIZE_MAX, &parsed); + ok(ret == 0); + ok(parsed.scheme == NULL); + ok(h2o_memis(parsed.authority.base, parsed.authority.len, H2O_STRLIT("host"))); + ok(h2o_memis(parsed.host.base, parsed.host.len, H2O_STRLIT("host"))); + ok(parsed._port == 65535); + ok(h2o_memis(parsed.path.base, parsed.path.len, H2O_STRLIT("/"))); + + memset(&parsed, 0x55, sizeof(parsed)); + ret = h2o_url_parse_relative("//host:12345/path", SIZE_MAX, &parsed); + ok(ret == 0); + ok(parsed.scheme == NULL); + ok(h2o_memis(parsed.authority.base, parsed.authority.len, H2O_STRLIT("host:12345"))); + ok(h2o_memis(parsed.host.base, parsed.host.len, H2O_STRLIT("host"))); + ok(parsed._port == 12345); + ok(h2o_memis(parsed.path.base, parsed.path.len, H2O_STRLIT("/path"))); + + memset(&parsed, 0x55, sizeof(parsed)); + ret = h2o_url_parse_relative("https://host:12345/path", SIZE_MAX, &parsed); + ok(ret == 0); + ok(parsed.scheme == &H2O_URL_SCHEME_HTTPS); + ok(h2o_memis(parsed.authority.base, parsed.authority.len, H2O_STRLIT("host:12345"))); + ok(h2o_memis(parsed.host.base, parsed.host.len, H2O_STRLIT("host"))); + ok(parsed._port == 12345); + ok(h2o_memis(parsed.path.base, parsed.path.len, H2O_STRLIT("/path"))); +} + +static void test_resolve(void) +{ + h2o_mem_pool_t pool; + h2o_url_t base, relative, resolved; + h2o_iovec_t final; + int ret; + + h2o_mem_init_pool(&pool); + + ret = h2o_url_parse("http://example.com/dir/index.html", SIZE_MAX, &base); + ok(ret == 0); + + ret = h2o_url_parse_relative("../assets/jquery.js", SIZE_MAX, &relative); + ok(ret == 0); + final = h2o_url_resolve(&pool, &base, &relative, &resolved); + ok(h2o_memis(final.base, final.len, H2O_STRLIT("http://example.com/assets/jquery.js"))); + ok(resolved.scheme == &H2O_URL_SCHEME_HTTP); + ok(h2o_memis(resolved.authority.base, resolved.authority.len, H2O_STRLIT("example.com"))); + ok(h2o_memis(resolved.host.base, resolved.host.len, H2O_STRLIT("example.com"))); + ok(resolved._port == 65535); + ok(h2o_url_get_port(&resolved) == 80); + ok(h2o_memis(resolved.path.base, resolved.path.len, H2O_STRLIT("/assets/jquery.js"))); + + ret = h2o_url_parse_relative("foo.html", SIZE_MAX, &relative); + ok(ret == 0); + final = h2o_url_resolve(&pool, &base, &relative, &resolved); + ok(h2o_memis(final.base, final.len, H2O_STRLIT("http://example.com/dir/foo.html"))); + ok(resolved.scheme == &H2O_URL_SCHEME_HTTP); + ok(h2o_memis(resolved.authority.base, resolved.authority.len, H2O_STRLIT("example.com"))); + ok(h2o_memis(resolved.host.base, resolved.host.len, H2O_STRLIT("example.com"))); + ok(resolved._port == 65535); + ok(h2o_url_get_port(&resolved) == 80); + ok(h2o_memis(resolved.path.base, resolved.path.len, H2O_STRLIT("/dir/foo.html"))); + + ret = h2o_url_parse_relative("./bar.txt", SIZE_MAX, &relative); + ok(ret == 0); + final = h2o_url_resolve(&pool, &base, &relative, &resolved); + ok(h2o_memis(final.base, final.len, H2O_STRLIT("http://example.com/dir/bar.txt"))); + ok(resolved.scheme == &H2O_URL_SCHEME_HTTP); + ok(h2o_memis(resolved.authority.base, resolved.authority.len, H2O_STRLIT("example.com"))); + ok(h2o_memis(resolved.host.base, resolved.host.len, H2O_STRLIT("example.com"))); + ok(resolved._port == 65535); + ok(h2o_url_get_port(&resolved) == 80); + ok(h2o_memis(resolved.path.base, resolved.path.len, H2O_STRLIT("/dir/bar.txt"))); + + ret = h2o_url_parse_relative("../../../traverse", SIZE_MAX, &relative); + ok(ret == 0); + final = h2o_url_resolve(&pool, &base, &relative, &resolved); + ok(h2o_memis(final.base, final.len, H2O_STRLIT("http://example.com/traverse"))); + ok(resolved.scheme == &H2O_URL_SCHEME_HTTP); + ok(h2o_memis(resolved.authority.base, resolved.authority.len, H2O_STRLIT("example.com"))); + ok(h2o_memis(resolved.host.base, resolved.host.len, H2O_STRLIT("example.com"))); + ok(resolved._port == 65535); + ok(h2o_url_get_port(&resolved) == 80); + ok(h2o_memis(resolved.path.base, resolved.path.len, H2O_STRLIT("/traverse"))); + + ret = h2o_url_parse_relative("http:foo.html", SIZE_MAX, &relative); + ok(ret == 0); + final = h2o_url_resolve(&pool, &base, &relative, &resolved); + ok(h2o_memis(final.base, final.len, H2O_STRLIT("http://example.com/dir/foo.html"))); + ok(resolved.scheme == &H2O_URL_SCHEME_HTTP); + ok(h2o_memis(resolved.authority.base, resolved.authority.len, H2O_STRLIT("example.com"))); + ok(h2o_memis(resolved.host.base, resolved.host.len, H2O_STRLIT("example.com"))); + ok(resolved._port == 65535); + ok(h2o_url_get_port(&resolved) == 80); + ok(h2o_memis(resolved.path.base, resolved.path.len, H2O_STRLIT("/dir/foo.html"))); + + ret = h2o_url_parse_relative("http:/icon.ico", SIZE_MAX, &relative); + ok(ret == 0); + final = h2o_url_resolve(&pool, &base, &relative, &resolved); + ok(h2o_memis(final.base, final.len, H2O_STRLIT("http://example.com/icon.ico"))); + ok(resolved.scheme == &H2O_URL_SCHEME_HTTP); + ok(h2o_memis(resolved.authority.base, resolved.authority.len, H2O_STRLIT("example.com"))); + ok(h2o_memis(resolved.host.base, resolved.host.len, H2O_STRLIT("example.com"))); + ok(resolved._port == 65535); + ok(h2o_url_get_port(&resolved) == 80); + ok(h2o_memis(resolved.path.base, resolved.path.len, H2O_STRLIT("/icon.ico"))); + + ret = h2o_url_parse_relative("https:/icon.ico", SIZE_MAX, &relative); + ok(ret == 0); + final = h2o_url_resolve(&pool, &base, &relative, &resolved); + ok(h2o_memis(final.base, final.len, H2O_STRLIT("https://example.com/icon.ico"))); + ok(resolved.scheme == &H2O_URL_SCHEME_HTTPS); + ok(h2o_memis(resolved.authority.base, resolved.authority.len, H2O_STRLIT("example.com"))); + ok(h2o_memis(resolved.host.base, resolved.host.len, H2O_STRLIT("example.com"))); + ok(resolved._port == 65535); + ok(h2o_url_get_port(&resolved) == 443); + ok(h2o_memis(resolved.path.base, resolved.path.len, H2O_STRLIT("/icon.ico"))); + + ret = h2o_url_parse_relative("//example.jp:81/icon.ico", SIZE_MAX, &relative); + ok(ret == 0); + final = h2o_url_resolve(&pool, &base, &relative, &resolved); + ok(h2o_memis(final.base, final.len, H2O_STRLIT("http://example.jp:81/icon.ico"))); + ok(resolved.scheme == &H2O_URL_SCHEME_HTTP); + ok(h2o_memis(resolved.authority.base, resolved.authority.len, H2O_STRLIT("example.jp:81"))); + ok(h2o_memis(resolved.host.base, resolved.host.len, H2O_STRLIT("example.jp"))); + ok(resolved._port == 81); + ok(h2o_url_get_port(&resolved) == 81); + ok(h2o_memis(resolved.path.base, resolved.path.len, H2O_STRLIT("/icon.ico"))); + + final = h2o_url_stringify(&pool, &base); + ok(h2o_memis(final.base, final.len, H2O_STRLIT("http://example.com/dir/index.html"))); + + h2o_mem_clear_pool(&pool); +} + +void test_lib__common__url_c(void) +{ + subtest("normalize_path", test_normalize_path); + subtest("hostport", test_hostport); + subtest("parse", test_parse); + subtest("parse_relative", test_parse_relative); + subtest("resolve", test_resolve); +} diff --git a/src/web/server/h2o/libh2o/t/00unit/lib/core/headers.c b/src/web/server/h2o/libh2o/t/00unit/lib/core/headers.c new file mode 100644 index 000000000..97cea41e8 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/lib/core/headers.c @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2014 DeNA Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include "../../test.h" +#include "../../../../lib/core/headers.c" + +static void test_set_header_token(void) +{ + h2o_mem_pool_t pool; + h2o_headers_t headers = {NULL}; + + h2o_mem_init_pool(&pool); + + h2o_set_header_token(&pool, &headers, H2O_TOKEN_VARY, H2O_STRLIT("cookie")); + ok(headers.size == 1); + ok(headers.entries[0].name == &H2O_TOKEN_VARY->buf); + ok(h2o_memis(headers.entries[0].value.base, headers.entries[0].value.len, H2O_STRLIT("cookie"))); + h2o_set_header_token(&pool, &headers, H2O_TOKEN_VARY, H2O_STRLIT("accept-encoding")); + ok(headers.size == 1); + ok(headers.entries[0].name == &H2O_TOKEN_VARY->buf); + ok(h2o_memis(headers.entries[0].value.base, headers.entries[0].value.len, H2O_STRLIT("cookie, accept-encoding"))); + + headers.entries[0].value.base[0] = 'C'; + h2o_set_header_token(&pool, &headers, H2O_TOKEN_VARY, H2O_STRLIT("cookie")); + ok(headers.size == 1); + ok(headers.entries[0].name == &H2O_TOKEN_VARY->buf); + ok(h2o_memis(headers.entries[0].value.base, headers.entries[0].value.len, H2O_STRLIT("Cookie, accept-encoding"))); + + h2o_mem_clear_pool(&pool); +} + +void test_lib__core__headers_c(void) +{ + subtest("set_header_token", test_set_header_token); +} diff --git a/src/web/server/h2o/libh2o/t/00unit/lib/core/proxy.c b/src/web/server/h2o/libh2o/t/00unit/lib/core/proxy.c new file mode 100644 index 000000000..6f87db1fd --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/lib/core/proxy.c @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2014 DeNA Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include "../../test.h" +#include "../../../../lib/core/proxy.c" + +static void test_rewrite_location(void) +{ + h2o_url_t upstream; + h2o_mem_pool_t pool; + h2o_iovec_t ret; + + h2o_url_parse(H2O_STRLIT("http://realhost:81/real/"), &upstream); + + h2o_mem_init_pool(&pool); + + ret = rewrite_location(&pool, H2O_STRLIT("http://realhost:81/real/abc"), &upstream, &H2O_URL_SCHEME_HTTPS, + h2o_iovec_init(H2O_STRLIT("vhost:8443")), h2o_iovec_init(H2O_STRLIT("/virtual/"))); + ok(h2o_memis(ret.base, ret.len, H2O_STRLIT("https://vhost:8443/virtual/abc"))); + ret = rewrite_location(&pool, H2O_STRLIT("http://realhost:81/other/abc"), &upstream, &H2O_URL_SCHEME_HTTPS, + h2o_iovec_init(H2O_STRLIT("vhost:8443")), h2o_iovec_init(H2O_STRLIT("/virtual/"))); + ok(ret.base == NULL); + ok(ret.len == 0); + + h2o_mem_clear_pool(&pool); +} + +void test_lib__core__proxy_c() +{ + subtest("rewrite_location", test_rewrite_location); +} diff --git a/src/web/server/h2o/libh2o/t/00unit/lib/core/util.c b/src/web/server/h2o/libh2o/t/00unit/lib/core/util.c new file mode 100644 index 000000000..a3141577d --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/lib/core/util.c @@ -0,0 +1,435 @@ +/* + * Copyright (c) 2015 DeNA Co., Ltd., Kazuho Oku + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include +#include "../../test.h" +#include "../../../../lib/core/util.c" + +static void test_parse_proxy_line(void) +{ + char in[256]; + struct sockaddr_storage sa; + socklen_t salen; + ssize_t ret; + + strcpy(in, ""); + ret = parse_proxy_line(in, strlen(in), (void *)&sa, &salen); + ok(ret == -2); + + strcpy(in, "PROXY TCP4 192.168.0.1 192.168.0.11 56324 443\r\nabc"); + ret = parse_proxy_line(in, strlen(in), (void *)&sa, &salen); + ok(ret == strlen(in) - 3); + ok(salen == sizeof(struct sockaddr_in)); + ok(sa.ss_family == AF_INET); + ok(((struct sockaddr_in *)&sa)->sin_addr.s_addr == htonl(0xc0a80001)); + ok(((struct sockaddr_in *)&sa)->sin_port == htons(56324)); + + strcpy(in, "PROXY TCP4 192.168.0.1 192.168.0.11 56324 443\r"); + ret = parse_proxy_line(in, strlen(in), (void *)&sa, &salen); + ok(ret == -2); + + strcpy(in, "PROXY TCP5"); + ret = parse_proxy_line(in, strlen(in), (void *)&sa, &salen); + ok(ret == -1); + + strcpy(in, "PROXY UNKNOWN"); + ret = parse_proxy_line(in, strlen(in), (void *)&sa, &salen); + ok(ret == -2); + + strcpy(in, "PROXY UNKNOWN\r\nabc"); + ret = parse_proxy_line(in, strlen(in), (void *)&sa, &salen); + ok(ret == strlen(in) - 3); + ok(salen == 0); + + strcpy(in, "PROXY TCP6 ::1 ::1 56324 443\r\n"); + ret = parse_proxy_line(in, strlen(in), (void *)&sa, &salen); + ok(ret == strlen(in)); + ok(salen == sizeof(struct sockaddr_in6)); + ok(sa.ss_family == AF_INET6); + ok(memcmp(&((struct sockaddr_in6 *)&sa)->sin6_addr, H2O_STRLIT("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1")) == 0); + ok(((struct sockaddr_in6 *)&sa)->sin6_port == htons(56324)); +} + +static void test_extract_push_path_from_link_header(void) +{ + h2o_mem_pool_t pool; + h2o_iovec_vector_t paths; + h2o_iovec_t path; + h2o_iovec_t filtered_value; + h2o_iovec_t base_path = {H2O_STRLIT("/basepath/")}, input_authority = {H2O_STRLIT("basehost")}, + other_authority = {H2O_STRLIT("otherhost")}; +#define INPUT base_path, &H2O_URL_SCHEME_HTTP, input_authority + h2o_mem_init_pool(&pool); + h2o_iovec_t value; + + value = h2o_iovec_init(H2O_STRLIT("; rel=preload")); + paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, NULL, NULL, &filtered_value); + ok(paths.size == 1); + path = paths.entries[0]; + ok(h2o_memis(path.base, path.len, H2O_STRLIT("/otherpath"))); + ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); + + value = h2o_iovec_init(H2O_STRLIT("; rel=preload")); + paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, NULL, NULL, &filtered_value); + ok(paths.size == 1); + path = paths.entries[0]; + ok(h2o_memis(path.base, path.len, H2O_STRLIT("/otherpath"))); + ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); + + value = h2o_iovec_init(H2O_STRLIT("; rel=preload")); + paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, NULL, NULL, &filtered_value); + ok(paths.size == 1); + path = paths.entries[0]; + ok(h2o_memis(path.base, path.len, H2O_STRLIT("/basepath/otherpath"))); + ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); + + value = h2o_iovec_init(H2O_STRLIT("<../otherpath>; rel=preload")); + paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, NULL, NULL, &filtered_value); + ok(paths.size == 1); + path = paths.entries[0]; + ok(h2o_memis(path.base, path.len, H2O_STRLIT("/otherpath"))); + ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); + + value = h2o_iovec_init(H2O_STRLIT("; rel=preload")); + paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, NULL, NULL, &filtered_value); + ok(paths.size == 1); + path = paths.entries[0]; + ok(h2o_memis(path.base, path.len, H2O_STRLIT("/basepath/otherpath"))); + ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); + + value = h2o_iovec_init(H2O_STRLIT("<../otherpath>; rel=author")); + paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, NULL, NULL, &filtered_value); + ok(paths.size == 0); + ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); + + value = h2o_iovec_init(H2O_STRLIT("; rel=preload")); + paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, NULL, NULL, &filtered_value); + ok(paths.size == 0); + ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); + + value = h2o_iovec_init(H2O_STRLIT("; rel=preload")); + paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, NULL, NULL, &filtered_value); + ok(paths.size == 0); + ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); + + value = h2o_iovec_init(H2O_STRLIT("; rel=preload")); + paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, NULL, NULL, &filtered_value); + ok(paths.size == 0); + ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); + + value = h2o_iovec_init(H2O_STRLIT("; rel=preload")); + paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTPS, &input_authority, + &filtered_value); + ok(paths.size == 0); + ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); + + value = h2o_iovec_init(H2O_STRLIT("; rel=preload")); + paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &input_authority, + &filtered_value); + ok(paths.size == 1); + path = paths.entries[0]; + ok(h2o_memis(path.base, path.len, H2O_STRLIT("/otherpath"))); + ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); + + value = h2o_iovec_init(H2O_STRLIT("; rel=preload")); + paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &other_authority, + &filtered_value); + ok(paths.entries == 0); + ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); + + value = h2o_iovec_init(H2O_STRLIT("; rel=preload")); + paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &other_authority, + &filtered_value); + ok(paths.size == 1); + path = paths.entries[0]; + ok(h2o_memis(path.base, path.len, H2O_STRLIT("/otherpath"))); + ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); + + value = h2o_iovec_init(H2O_STRLIT("; rel=preload; nopush")); + paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, NULL, NULL, &filtered_value); + ok(paths.entries == 0); + ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); + + value = h2o_iovec_init(H2O_STRLIT("; rel=preload, ; rel=preload")); + paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &input_authority, + &filtered_value); + ok(paths.size == 2); + path = paths.entries[0]; + ok(h2o_memis(path.base, path.len, H2O_STRLIT("/firstpath"))); + path = paths.entries[1]; + ok(h2o_memis(path.base, path.len, H2O_STRLIT("/secondpath"))); + ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); + + value = h2o_iovec_init(H2O_STRLIT("; rel=preload; nopush, ; rel=preload")); + paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &input_authority, + &filtered_value); + ok(paths.size == 1); + path = paths.entries[0]; + ok(h2o_memis(path.base, path.len, H2O_STRLIT("/secondpath"))); + ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); + + value = h2o_iovec_init(H2O_STRLIT("; rel=preload; nopush, ; nopush; rel=preload; ")); + paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &input_authority, + &filtered_value); + ok(paths.size == 0); + ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); + + value = h2o_iovec_init(H2O_STRLIT("; rel=preload; nopush, ; rel=notpreload")); + paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &input_authority, + &filtered_value); + ok(paths.size == 0); + ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); + + value = h2o_iovec_init(H2O_STRLIT("; rel=preload, ; rel=preload; nopush, ; rel=preload")); + paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &input_authority, + &filtered_value); + ok(paths.size == 2); + path = paths.entries[0]; + ok(h2o_memis(path.base, path.len, H2O_STRLIT("/firstpath"))); + path = paths.entries[1]; + ok(h2o_memis(path.base, path.len, H2O_STRLIT("/thirdpath"))); + ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); + + value = h2o_iovec_init(H2O_STRLIT("hogefoo")); + paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &input_authority, + &filtered_value); + ok(paths.size == 0); + ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); + + h2o_mem_clear_pool(&pool); +#undef INPUT +} + +static void test_extract_push_path_from_link_header_push_only(void) +{ + h2o_mem_pool_t pool; + h2o_iovec_vector_t paths; + h2o_iovec_t path; + h2o_iovec_t filtered_value; + h2o_iovec_t base_path = {H2O_STRLIT("/basepath/")}, input_authority = {H2O_STRLIT("basehost")}; +#define INPUT base_path, &H2O_URL_SCHEME_HTTP, input_authority + h2o_mem_init_pool(&pool); + h2o_iovec_t value; + + value = h2o_iovec_init(H2O_STRLIT("; rel=preload, ; rel=preload; nopush, ; rel=preload, " + "; rel=preload; x-http2-push-only")); + paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &input_authority, + &filtered_value); + ok(paths.size == 3); + path = paths.entries[0]; + ok(h2o_memis(path.base, path.len, H2O_STRLIT("/firstpath"))); + path = paths.entries[1]; + ok(h2o_memis(path.base, path.len, H2O_STRLIT("/thirdpath"))); + path = paths.entries[2]; + ok(h2o_memis(path.base, path.len, H2O_STRLIT("/fourthpath"))); + value = h2o_iovec_init(H2O_STRLIT("; rel=preload, ; rel=preload; nopush, ; rel=preload")); + ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); + + value = h2o_iovec_init(H2O_STRLIT("; rel=preload; x-http2-push-only, ; rel=preload; nopush, " + "; rel=preload, ; rel=preload; x-http2-push-only")); + paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &input_authority, + &filtered_value); + ok(paths.size == 3); + path = paths.entries[0]; + ok(h2o_memis(path.base, path.len, H2O_STRLIT("/firstpath"))); + path = paths.entries[1]; + ok(h2o_memis(path.base, path.len, H2O_STRLIT("/thirdpath"))); + path = paths.entries[2]; + ok(h2o_memis(path.base, path.len, H2O_STRLIT("/fourthpath"))); + value = h2o_iovec_init(H2O_STRLIT("; rel=preload; nopush, ; rel=preload")); + ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); + + value = h2o_iovec_init(H2O_STRLIT("; rel=preload, ; rel=preload; x-http2-push-only, ; " + "rel=preload; nopush, ; rel=preload; x-http2-push-only")); + paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &input_authority, + &filtered_value); + ok(paths.size == 3); + path = paths.entries[0]; + ok(h2o_memis(path.base, path.len, H2O_STRLIT("/firstpath"))); + path = paths.entries[1]; + ok(h2o_memis(path.base, path.len, H2O_STRLIT("/secondpath"))); + path = paths.entries[2]; + ok(h2o_memis(path.base, path.len, H2O_STRLIT("/fourthpath"))); + value = h2o_iovec_init(H2O_STRLIT("; rel=preload, ; rel=preload; nopush")); + ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); + + value = h2o_iovec_init(H2O_STRLIT("; rel=preload; x-http2-push-only, ; rel=preload, ; " + "rel=preload; x-http2-push-only, ; rel=preload; nopush")); + paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &input_authority, + &filtered_value); + ok(paths.size == 3); + path = paths.entries[0]; + ok(h2o_memis(path.base, path.len, H2O_STRLIT("/firstpath"))); + path = paths.entries[1]; + ok(h2o_memis(path.base, path.len, H2O_STRLIT("/secondpath"))); + path = paths.entries[2]; + ok(h2o_memis(path.base, path.len, H2O_STRLIT("/thirdpath"))); + value = h2o_iovec_init(H2O_STRLIT("; rel=preload, ; rel=preload; nopush")); + ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); + + value = h2o_iovec_init( + H2O_STRLIT("; rel=preload; x-http2-push-only, ; rel=preload; x-http2-push-only, ; " + "rel=preload, ; rel=preload; nopush")); + paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &input_authority, + &filtered_value); + ok(paths.size == 3); + path = paths.entries[0]; + ok(h2o_memis(path.base, path.len, H2O_STRLIT("/firstpath"))); + path = paths.entries[1]; + ok(h2o_memis(path.base, path.len, H2O_STRLIT("/secondpath"))); + path = paths.entries[2]; + ok(h2o_memis(path.base, path.len, H2O_STRLIT("/thirdpath"))); + value = h2o_iovec_init(H2O_STRLIT("; rel=preload, ; rel=preload; nopush")); + ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); + + value = h2o_iovec_init(H2O_STRLIT("firstpath; rel=preload, ; rel=preload; x-http2-push-only, ; " + "rel=preload; nopush, ; rel=preload; x-http2-push-only")); + paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &input_authority, + &filtered_value); + ok(paths.size == 0); + ok(h2o_memis(value.base, value.len, filtered_value.base, filtered_value.len)); + + value = h2o_iovec_init(H2O_STRLIT("; rel=preload; x-http2-push-only, bar")); + paths = h2o_extract_push_path_from_link_header(&pool, value.base, value.len, INPUT, &H2O_URL_SCHEME_HTTP, &input_authority, + &filtered_value); + ok(paths.size == 1); + path = paths.entries[0]; + ok(h2o_memis(path.base, path.len, H2O_STRLIT("/firstpath"))); + ok(h2o_memis(H2O_STRLIT("bar"), filtered_value.base, filtered_value.len)); + + h2o_mem_clear_pool(&pool); +} +void test_build_destination(void) +{ + h2o_pathconf_t conf_not_slashed = {NULL, {H2O_STRLIT("/abc")}}, conf_slashed = {NULL, {H2O_STRLIT("/abc/")}}; + h2o_req_t req; + h2o_iovec_t dest; + int escape; + + for (escape = 0; escape <= 1; escape++) { + h2o_init_request(&req, NULL, NULL); + + note("escaping: %s", escape ? "on" : "off"); + req.path_normalized = h2o_iovec_init(H2O_STRLIT("/abc/xyz")); + req.query_at = req.path_normalized.len; + req.input.path = req.path = h2o_concat(&req.pool, req.path_normalized, h2o_iovec_init(H2O_STRLIT("?q"))); + + /* basic pattern */ + req.pathconf = &conf_not_slashed; + dest = h2o_build_destination(&req, H2O_STRLIT("/def"), escape); + ok(h2o_memis(dest.base, dest.len, H2O_STRLIT("/def/xyz?q"))); + dest = h2o_build_destination(&req, H2O_STRLIT("/def/"), escape); + ok(h2o_memis(dest.base, dest.len, H2O_STRLIT("/def/xyz?q"))); + req.pathconf = &conf_slashed; + dest = h2o_build_destination(&req, H2O_STRLIT("/def"), escape); + ok(h2o_memis(dest.base, dest.len, H2O_STRLIT("/def/xyz?q"))); + dest = h2o_build_destination(&req, H2O_STRLIT("/def/"), escape); + ok(h2o_memis(dest.base, dest.len, H2O_STRLIT("/def/xyz?q"))); + + /* test wo. query */ + if (escape) { + req.pathconf = &conf_not_slashed; + req.query_at = SIZE_MAX; + dest = h2o_build_destination(&req, H2O_STRLIT("/def"), escape); + ok(h2o_memis(dest.base, dest.len, H2O_STRLIT("/def/xyz"))); + } + + /* no trailing */ + req.path_normalized = h2o_iovec_init(H2O_STRLIT("/abc")); + req.query_at = req.path_normalized.len; + req.input.path = req.path = h2o_concat(&req.pool, req.path_normalized, h2o_iovec_init(H2O_STRLIT("?q"))); + + req.pathconf = &conf_not_slashed; + dest = h2o_build_destination(&req, H2O_STRLIT("/def"), escape); + ok(h2o_memis(dest.base, dest.len, H2O_STRLIT("/def?q"))); + dest = h2o_build_destination(&req, H2O_STRLIT("/def/"), escape); + ok(h2o_memis(dest.base, dest.len, H2O_STRLIT("/def/?q"))); + } + + h2o_mem_clear_pool(&req.pool); +} + +void test_build_destination_escaping(void) +{ + h2o_req_t req; + h2o_iovec_t dest; + int escape = 0; + int i, j; + struct { + char *pathconf; + char *dest; + char *input; + char *output; + } tests[] = { + {"/abc", "/def", "/abc/xyz?query&m=n/o", "/def/xyz?query&m=n/o"}, + {"/abc", "/def", "/%61bc/xyz?query&m=n/o", "/def/xyz?query&m=n/o"}, + {"/abc", "/def", "/%61%62c/xyz?query&m=n/o", "/def/xyz?query&m=n/o"}, + {"/abc", "/def", "/%61%62%63/xyz?query&m=n/o", "/def/xyz?query&m=n/o"}, + {"/abc", "/def", "/./%61%62%63/xyz?query&m=n/o", "/def/xyz?query&m=n/o"}, + {"/abc", "/def", "/../%61%62%63/xyz?query&m=n/o", "/def/xyz?query&m=n/o"}, + {"/abc", "/def", "/././%61%62%63/xyz?query&m=n/o", "/def/xyz?query&m=n/o"}, + {"/abc", "/def", "/./.././%61%62%63/xyz?query&m=n/o", "/def/xyz?query&m=n/o"}, + {"/abc", "/def", "/./../blah/../%61%62%63/xyz?query&m=n/o", "/def/xyz?query&m=n/o"}, + {"/abc", "/def", "/./../blah/.././%61%62c/xyz?query&m=n/o", "/def/xyz?query&m=n/o"}, + {"/abc", "/def", "/./../blah/.././../../%61b%63/xyz?query&m=n/o", "/def/xyz?query&m=n/o"}, + {"/abc", "/def", "/abc/xyz/?query&m=n/o", "/def/xyz/?query&m=n/o"}, + {"/abc", "/def", "/abc/xyz/.?query&m=n/o", "/def/xyz/.?query&m=n/o"}, + {"/abc", "/def", "/abc/xyz/./?query&m=n/o", "/def/xyz/./?query&m=n/o"}, + {"/abc", "/def", "/abc/xyz/..?query&m=n/o", "/def/xyz/..?query&m=n/o"}, + {"/abc", "/def", "/abc/xyz/../?query&m=n/o", "/def/xyz/../?query&m=n/o"}, + {"/abc", "/def", "/abc/xyz/../a?query&m=n/o", "/def/xyz/../a?query&m=n/o"}, + {"/abc", "/def", "/abc/%yz/?query&m=n/o", "/def/%yz/?query&m=n/o"}, + {"/abc", "/def", "/abc/%78yz/?query&m=n/o", "/def/%78yz/?query&m=n/o"}, + {"/", "/", "/xyz/../mno", "/xyz/../mno"}, + {"/", "/", "/xyz/../mno/..", "/xyz/../mno/.."}, + {"/", "/def", "/xyz/../mno", "/def/xyz/../mno"}, + {"/", "/def/", "/xyz/../mno", "/def/xyz/../mno"}, + {"/", "/def", "/xyz/../", "/def/xyz/../"}, + {"/", "/def/", "/xyz/..", "/def/xyz/.."}, + }; + h2o_init_request(&req, NULL, NULL); + + /* 'j' runs the test with a missing leading '/' in the input path */ + for (j = 0; j <= 1; j++) { + for (i = 0; i < sizeof(tests) / sizeof(tests[0]); i++) { + h2o_pathconf_t conf = {NULL, {tests[i].pathconf, strlen(tests[i].pathconf)}}; + req.pathconf = &conf; + req.path = req.input.path = h2o_iovec_init(tests[i].input + j, strlen(tests[i].input) - j); + req.norm_indexes = NULL; + req.path_normalized = h2o_url_normalize_path(&req.pool, req.path.base, req.path.len, &req.query_at, &req.norm_indexes); + dest = h2o_build_destination(&req, tests[i].dest, strlen(tests[i].dest), escape); + note("%s: %d, %sskipping the leading '/'", tests[i].input, i, !j ? "not " : ""); + ok(dest.len == strlen(tests[i].output)); + ok(h2o_memis(dest.base, dest.len, tests[i].output, strlen(tests[i].output))); + } + } + + h2o_mem_clear_pool(&req.pool); +} + +void test_lib__core__util_c() +{ + subtest("parse_proxy_line", test_parse_proxy_line); + subtest("extract_push_path_from_link_header", test_extract_push_path_from_link_header); + subtest("extract_push_path_from_link_header_push_only", test_extract_push_path_from_link_header_push_only); + subtest("test_build_destination", test_build_destination); + subtest("test_build_destination_escaping", test_build_destination_escaping); +} diff --git a/src/web/server/h2o/libh2o/t/00unit/lib/handler/compress.c b/src/web/server/h2o/libh2o/t/00unit/lib/handler/compress.c new file mode 100644 index 000000000..5b430b4c5 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/lib/handler/compress.c @@ -0,0 +1,125 @@ +/* + * Copyright (c) 2015 DeNA Co., Ltd., Kazuho Oku + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include +#include +#include "../../test.h" +#define BUF_SIZE 256 +#include "../../../../lib/handler/compress/gzip.c" +#include "../../../../lib/handler/compress.c" + +static void check_result(h2o_iovec_t *vecs, size_t num_vecs, const char *expected, size_t expectedlen) +{ + z_stream zs; + char decbuf[expectedlen + 1]; + + memset(&zs, 0, sizeof(zs)); + zs.zalloc = alloc_cb; + zs.zfree = free_cb; + zs.next_out = (void *)decbuf; + zs.avail_out = (unsigned)sizeof(decbuf); + + inflateInit2(&zs, WINDOW_BITS); + + int inflate_ret = -1; + size_t i; + for (i = 0; i != num_vecs; ++i) { + zs.next_in = (void *)vecs[i].base; + zs.avail_in = (unsigned)vecs[i].len; + inflate_ret = inflate(&zs, Z_NO_FLUSH); + if (zs.avail_out == 0) { + ok(0); + return; + } + if (zs.avail_in != 0) { + ok(0); + return; + } + } + + ok(inflate_ret == Z_STREAM_END); + inflateEnd(&zs); + + ok(zs.avail_out == sizeof(decbuf) - expectedlen); + ok(memcmp(decbuf, expected, expectedlen) == 0); +} + +void test_gzip_simple(void) +{ + h2o_mem_pool_t pool; + h2o_iovec_t inbuf, *outbufs; + size_t outbufcnt; + + h2o_mem_init_pool(&pool); + + h2o_compress_context_t *compressor = h2o_compress_gzip_open(&pool, Z_BEST_SPEED); + inbuf = h2o_iovec_init(H2O_STRLIT("hello world")); + compressor->transform(compressor, &inbuf, 1, 1, &outbufs, &outbufcnt); + + check_result(outbufs, outbufcnt, H2O_STRLIT("hello world")); + + h2o_mem_clear_pool(&pool); +} + +void test_gzip_multi(void) +{ +#define P1 \ + "Alice was beginning to get very tired of sitting by her sister on the bank, and of having nothing to do: once or twice she " \ + "had peeped into the book her sister was reading, but it had no pictures or conversations in it, `and what is the use of a " \ + "book,' thought Alice `without pictures or conversation?'\n\n" +#define P2 \ + "So she was considering in her own mind (as well as she could, for the hot day made her feel very sleepy and stupid), " \ + "whether the pleasure of making a daisy-chain would be worth the trouble of getting up and picking the daisies, when " \ + "suddenly a White Rabbit with pink eyes ran close by her.\n\n" +#define P3 \ + "There was nothing so very remarkable in that; nor did Alice think it so very much out of the way to hear the Rabbit say to " \ + "itself, `Oh dear! Oh dear! I shall be late!' (when she thought it over afterwards, it occurred to her that she ought to " \ + "have wondered at this, but at the time it all seemed quite natural); but when the Rabbit actually took a watch out of its " \ + "waistcoat-pocket, and looked at it, and then hurried on, Alice started to her feet, for it flashed across her mind that she " \ + "had never before seen a rabbit with either a waistcoat-pocket, or a watch to take out of it, and burning with curiosity, " \ + "she ran across the field after it, and fortunately was just in time to see it pop down a large rabbit-hole under the " \ + "hedge.\n\n" + + h2o_mem_pool_t pool; + h2o_iovec_t inbufs[] = {{H2O_STRLIT(P1)}, {H2O_STRLIT(P2)}, {H2O_STRLIT(P3)}}, *outbufs; + size_t outbufcnt; + + h2o_mem_init_pool(&pool); + + h2o_compress_context_t *compressor = h2o_compress_gzip_open(&pool, Z_BEST_SPEED); + compressor->transform(compressor, inbufs, sizeof(inbufs) / sizeof(inbufs[0]), 1, &outbufs, &outbufcnt); + + assert(outbufcnt > 1); /* we want to test multi-vec output */ + + check_result(outbufs, outbufcnt, H2O_STRLIT(P1 P2 P3)); + + h2o_mem_clear_pool(&pool); + +#undef P1 +#undef P2 +#undef P3 +} + +void test_lib__handler__gzip_c() +{ + subtest("gzip_simple", test_gzip_simple); + subtest("gzip_multi", test_gzip_multi); +} diff --git a/src/web/server/h2o/libh2o/t/00unit/lib/handler/fastcgi.c b/src/web/server/h2o/libh2o/t/00unit/lib/handler/fastcgi.c new file mode 100644 index 000000000..f79fbf708 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/lib/handler/fastcgi.c @@ -0,0 +1,183 @@ +/* + * Copyright (c) 2015 DeNA Co., Ltd., Kazuho Oku + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include +#include "../../test.h" +#include "../../../../lib/handler/fastcgi.c" + +static h2o_context_t ctx; + +static int check_params(h2o_iovec_t *vecs, size_t *index, uint16_t request_id, const char *expected, size_t expected_len) +{ +#define DECODE_UINT16(p) (((unsigned char *)&p)[0] << 8 | ((unsigned char *)&p)[1]) + + char buf[4096]; + size_t offset = 0; + + while (1) { + if (vecs[*index].len != FCGI_RECORD_HEADER_SIZE) { + fprintf(stderr, "record too short (index: %zu)\n", *index); + return 0; + } + struct st_fcgi_record_header_t *header = (void *)vecs[*index].base; + if (header->version != FCGI_VERSION_1 || header->type != FCGI_PARAMS || header->paddingLength != 0 || + header->reserved != 0) { + fprintf(stderr, "header is corrupt (index: %zu)\n", *index); + return 0; + } + if (DECODE_UINT16(header->requestId) != request_id) { + fprintf(stderr, "unexpected request id (index: %zu)\n", *index); + return 0; + } + ++*index; + if (DECODE_UINT16(header->contentLength) == 0) + break; + if (vecs[*index].len != DECODE_UINT16(header->contentLength)) { + fprintf(stderr, "unexpected body size (index: %zu)\n", *index); + return 0; + } + memcpy(buf + offset, vecs[*index].base, vecs[*index].len); + offset += vecs[*index].len; + ++*index; + } + + if (!h2o_memis(buf, offset, expected, expected_len)) { + fprintf(stderr, "PARAMS content mistach\n"); + return 0; + } + + return 1; + +#undef DECODE_UINT16 +} + +static void test_build_request(void) +{ + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + h2o_fastcgi_config_vars_t config = {5000, 0}; + iovec_vector_t vecs; + size_t vec_index; + + conn->req.input.method = conn->req.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.scheme = conn->req.scheme = &H2O_URL_SCHEME_HTTP; + conn->req.input.authority = conn->req.authority = h2o_iovec_init(H2O_STRLIT("localhost")); + conn->req.input.path = conn->req.path = h2o_iovec_init(H2O_STRLIT("/")); + conn->req.path_normalized = conn->req.path; + conn->req.query_at = SIZE_MAX; + conn->req.version = 0x101; + conn->req.hostconf = *ctx.globalconf->hosts; + conn->req.pathconf = conn->req.hostconf->paths.entries; + h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_COOKIE, NULL, H2O_STRLIT("foo=bar")); + h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_USER_AGENT, NULL, + H2O_STRLIT("Mozilla/5.0 (X11; Linux) KHTML/4.9.1 (like Gecko) Konqueror/4.9")); + + /* build with max_record_size=65535 */ + build_request(&conn->req, &vecs, 0x1234, 65535, &config); + ok(h2o_memis(vecs.entries[0].base, vecs.entries[0].len, H2O_STRLIT("\x01\x01\x12\x34\x00\x08\x00\x00" + "\x00\x01\0\0\0\0\0\0"))); + vec_index = 1; + ok(check_params(vecs.entries, &vec_index, 0x1234, + H2O_STRLIT("\x0b\x00SCRIPT_NAME" /* */ + "\x09\x01PATH_INFO/" /* */ + "\x0c\x00QUERY_STRING" /* */ + "\x0b\x09REMOTE_ADDR127.0.0.1" /* */ + "\x0b\x05REMOTE_PORT55555" /* */ + "\x0e\x03REQUEST_METHODGET" /* */ + "\x09\x09HTTP_HOSTlocalhost" /* */ + "\x0b\x01REQUEST_URI/" /* */ + "\x0b\x09SERVER_ADDR127.0.0.1" /* */ + "\x0b\x02SERVER_PORT80" /* */ + "\x0b\x07SERVER_NAMEdefault" /* */ + "\x0f\x08SERVER_PROTOCOLHTTP/1.1" /* */ + "\x0f\x10SERVER_SOFTWAREh2o/1.2.1-alpha1" /* */ + "\x0f\x3fHTTP_USER_AGENTMozilla/5.0 (X11; Linux) KHTML/4.9.1 (like Gecko) Konqueror/4.9" /* */ + "\x0b\x07HTTP_COOKIEfoo=bar" /* */ + ))); + ok(h2o_memis(vecs.entries[vec_index].base, vecs.entries[vec_index].len, H2O_STRLIT("\x01\x05\x12\x34\x00\x00\x00\x00"))); + ++vec_index; + ok(vec_index == vecs.size); + + /* build with max_record_size=64, DOCUMENT_ROOT, additional cookie, and content */ + config.document_root = h2o_iovec_init(H2O_STRLIT("/var/www/htdocs")); + h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_COOKIE, NULL, H2O_STRLIT("hoge=fuga")); + conn->req.entity = h2o_iovec_init(H2O_STRLIT("The above copyright notice and this permission notice shall be included in all " + "copies or substantial portions of the Software.")); + build_request(&conn->req, &vecs, 0x1234, 64, &config); + ok(h2o_memis(vecs.entries[0].base, vecs.entries[0].len, H2O_STRLIT("\x01\x01\x12\x34\x00\x08\x00\x00" + "\x00\x01\0\0\0\0\0\0"))); + vec_index = 1; + ok(check_params(vecs.entries, &vec_index, 0x1234, + H2O_STRLIT("\x0e\x03" + "CONTENT_LENGTH126" /* */ + "\x0b\x00SCRIPT_NAME" /* */ + "\x09\x01PATH_INFO/" /* */ + "\x0d\x0f" + "DOCUMENT_ROOT/var/www/htdocs" /* */ + "\x0f\x10PATH_TRANSLATED/var/www/htdocs/" /* */ + "\x0c\x00QUERY_STRING" /* */ + "\x0b\x09REMOTE_ADDR127.0.0.1" /* */ + "\x0b\x05REMOTE_PORT55555" /* */ + "\x0e\x03REQUEST_METHODGET" /* */ + "\x09\x09HTTP_HOSTlocalhost" /* */ + "\x0b\x01REQUEST_URI/" /* */ + "\x0b\x09SERVER_ADDR127.0.0.1" /* */ + "\x0b\x02SERVER_PORT80" /* */ + "\x0b\x07SERVER_NAMEdefault" /* */ + "\x0f\x08SERVER_PROTOCOLHTTP/1.1" /* */ + "\x0f\x10SERVER_SOFTWAREh2o/1.2.1-alpha1" /* */ + "\x0f\x3fHTTP_USER_AGENTMozilla/5.0 (X11; Linux) KHTML/4.9.1 (like Gecko) Konqueror/4.9" /* */ + "\x0b\x11HTTP_COOKIEfoo=bar;hoge=fuga" /* */ + ))); + ok(h2o_memis(vecs.entries[vec_index].base, vecs.entries[vec_index].len, H2O_STRLIT("\x01\x05\x12\x34\x00\x40\x00\x00"))); + ++vec_index; + ok(h2o_memis(vecs.entries[vec_index].base, vecs.entries[vec_index].len, + H2O_STRLIT("The above copyright notice and this permission notice shall be i"))); + ++vec_index; + ok(h2o_memis(vecs.entries[vec_index].base, vecs.entries[vec_index].len, H2O_STRLIT("\x01\x05\x12\x34\x00\x3e\x00\x00"))); + ++vec_index; + ok(h2o_memis(vecs.entries[vec_index].base, vecs.entries[vec_index].len, + H2O_STRLIT("ncluded in all copies or substantial portions of the Software."))); + ++vec_index; + ok(h2o_memis(vecs.entries[vec_index].base, vecs.entries[vec_index].len, H2O_STRLIT("\x01\x05\x12\x34\x00\x00\x00\x00"))); + ++vec_index; + ok(vec_index == vecs.size); + + h2o_loopback_destroy(conn); +} + +void test_lib__handler__fastcgi_c() +{ + h2o_globalconf_t globalconf; + h2o_hostconf_t *hostconf; + h2o_pathconf_t *pathconf; + + h2o_config_init(&globalconf); + globalconf.server_name = h2o_iovec_init(H2O_STRLIT("h2o/1.2.1-alpha1")); + hostconf = h2o_config_register_host(&globalconf, h2o_iovec_init(H2O_STRLIT("default")), 65535); + pathconf = h2o_config_register_path(hostconf, "/", 0); + + h2o_context_init(&ctx, test_loop, &globalconf); + + subtest("build-request", test_build_request); + + h2o_context_dispose(&ctx); + h2o_config_dispose(&globalconf); +} diff --git a/src/web/server/h2o/libh2o/t/00unit/lib/handler/file.c b/src/web/server/h2o/libh2o/t/00unit/lib/handler/file.c new file mode 100644 index 000000000..6c0e59487 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/lib/handler/file.c @@ -0,0 +1,752 @@ +/* + * Copyright (c) 2014 DeNA Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include +#include "../../test.h" +#include "../../../../lib/handler/file.c" + +static h2o_context_t ctx; + +static int check_header(h2o_res_t *res, const h2o_token_t *header_name, const char *expected) +{ + size_t index = h2o_find_header(&res->headers, header_name, SIZE_MAX); + if (index == SIZE_MAX) + return 0; + return h2o_lcstris(res->headers.entries[index].value.base, res->headers.entries[index].value.len, expected, strlen(expected)); +} + +static int check_multirange_body(char *resbody, const char *boundary, const h2o_iovec_t *expected, size_t partlen) +{ + char *bptr = resbody; + const h2o_iovec_t *eptr = expected; + int not_first_line = 0; + while (partlen--) { + if (not_first_line) { + if (!h2o_memis(bptr, 2, H2O_STRLIT("\r\n"))) + return 0; + bptr += 2; + } else + not_first_line = 1; + if (!h2o_memis(bptr, 2, H2O_STRLIT("--"))) + return 0; + bptr += 2; + if (!h2o_memis(bptr, BOUNDARY_SIZE, boundary, BOUNDARY_SIZE)) + return 0; + bptr += 20; + if (!h2o_memis(bptr, 2, H2O_STRLIT("\r\n"))) + return 0; + bptr += 2; + if (!h2o_memis(bptr, eptr->len, eptr->base, eptr->len)) + return 0; + bptr += eptr->len; + eptr++; + } + if (!h2o_memis(bptr, 4, H2O_STRLIT("\r\n--"))) + return 0; + bptr += 4; + if (!h2o_memis(bptr, BOUNDARY_SIZE, boundary, BOUNDARY_SIZE)) + return 0; + bptr += 20; + if (!h2o_memis(bptr, 4, H2O_STRLIT("--\r\n"))) + return 0; + return 1; +} + +static void test_process_range(void) +{ + h2o_mem_pool_t testpool; + size_t ret, *ranges; + h2o_iovec_t testrange; + h2o_mem_init_pool(&testpool); + + { /* check single range within filesize */ + testrange = h2o_iovec_init(H2O_STRLIT("bytes=, 0-10")); + ranges = process_range(&testpool, &testrange, 100, &ret); + ok(ret == 1); + ok(*ranges++ == 0); + ok(*ranges == 11); + } + + { /* check single range with only start */ + testrange = h2o_iovec_init(H2O_STRLIT("bytes=60-")); + ranges = process_range(&testpool, &testrange, 100, &ret); + ok(ret == 1); + ok(*ranges++ == 60); + ok(*ranges == 40); + } + + { /* check single suffix range */ + testrange = h2o_iovec_init(H2O_STRLIT("bytes=-10")); + ranges = process_range(&testpool, &testrange, 100, &ret); + ok(ret == 1); + ok(*ranges++ == 90); + ok(*ranges == 10); + } + + { /* this and next two check multiple ranges within filesize */ + testrange = h2o_iovec_init(H2O_STRLIT("bytes=0-10, -10")); + ranges = process_range(&testpool, &testrange, 100, &ret); + ok(ret == 2); + ok(*ranges++ == 0); + ok(*ranges++ == 11); + ok(*ranges++ == 90); + ok(*ranges == 10); + } + + { + testrange = h2o_iovec_init(H2O_STRLIT("bytes=0-0, 20-89")); + ranges = process_range(&testpool, &testrange, 100, &ret); + ok(ret == 2); + ok(*ranges++ == 0); + ok(*ranges++ == 1); + ok(*ranges++ == 20); + ok(*ranges == 70); + } + + { + testrange = h2o_iovec_init(H2O_STRLIT("bytes=-10,-20")); + ranges = process_range(&testpool, &testrange, 100, &ret); + ok(ret == 2); + ok(*ranges++ == 90); + ok(*ranges++ == 10); + ok(*ranges++ == 80); + ok(*ranges++ == 20); + } + + { /* check ranges entirely out of filesize */ + testrange = h2o_iovec_init(H2O_STRLIT("bytes=100-102")); + ranges = process_range(&testpool, &testrange, 100, &ret); + ok(ranges == NULL); + } + + { /* check ranges with "negative" length */ + testrange = h2o_iovec_init(H2O_STRLIT("bytes=70-21")); + ranges = process_range(&testpool, &testrange, 100, &ret); + ok(ranges == NULL); + } + + { /* check ranges with one side inside filesize */ + testrange = h2o_iovec_init(H2O_STRLIT("bytes=90-102")); + ranges = process_range(&testpool, &testrange, 100, &ret); + ok(ret == 1); + ok(*ranges++ == 90); + ok(*ranges == 10); + } + + { /* check suffix range larger than filesize */ + testrange = h2o_iovec_init(H2O_STRLIT("bytes=-200")); + ranges = process_range(&testpool, &testrange, 100, &ret); + ok(ret == 1); + ok(*ranges++ == 0); + ok(*ranges == 100); + } + + { /* check multiple ranges with unsatisfiable ranges, but also contain satisfiable ranges */ + testrange = h2o_iovec_init(H2O_STRLIT("bytes=100-102, 90-102, 72-30,-22, 95-")); + ranges = process_range(&testpool, &testrange, 100, &ret); + ok(ret == 3); + ok(*ranges++ == 90); + ok(*ranges++ == 10); + ok(*ranges++ == 78); + ok(*ranges++ == 22); + ok(*ranges++ == 95); + ok(*ranges++ == 5); + } + + { /* this and next 6 check malformed ranges */ + testrange = h2o_iovec_init(H2O_STRLIT("bytes 20-1002")); + ranges = process_range(&testpool, &testrange, 100, &ret); + ok(ranges == NULL); + } + + { + testrange = h2o_iovec_init(H2O_STRLIT("bytes=")); + ranges = process_range(&testpool, &testrange, 100, &ret); + ok(ranges == NULL); + } + + { + testrange = h2o_iovec_init(H2O_STRLIT("bsdfeadsfjwleakjf")); + ranges = process_range(&testpool, &testrange, 100, &ret); + ok(ranges == NULL); + } + + { + testrange = h2o_iovec_init(H2O_STRLIT("bytes=100-102, 90-102, -72-30,-22,95-")); + ranges = process_range(&testpool, &testrange, 100, &ret); + ok(ranges == NULL); + } + + { + testrange = h2o_iovec_init(H2O_STRLIT("bytes=10-12-13, 90-102, -72, -22, 95-")); + ranges = process_range(&testpool, &testrange, 100, &ret); + ok(ranges == NULL); + } + + { + testrange = h2o_iovec_init(H2O_STRLIT("bytes=100-102, 90-102, 70-39, -22$")); + ranges = process_range(&testpool, &testrange, 100, &ret); + ok(ranges == NULL); + } + + { + testrange = h2o_iovec_init(H2O_STRLIT("bytes=-0")); + ranges = process_range(&testpool, &testrange, 100, &ret); + ok(ranges == NULL); + } + + { /* check same ranges with different filesize */ + testrange = h2o_iovec_init(H2O_STRLIT("bytes=20-200")); + ranges = process_range(&testpool, &testrange, 100, &ret); + ok(ret == 1); + ok(*ranges++ == 20); + ok(*ranges == 80); + } + + { + ranges = process_range(&testpool, &testrange, 1000, &ret); + ok(ret == 1); + ok(*ranges++ == 20); + ok(*ranges == 181); + } + + { /* check a range with plenty of WS and COMMA */ + testrange = h2o_iovec_init(H2O_STRLIT("bytes=,\t,1-3 ,, ,5-9,")); + ranges = process_range(&testpool, &testrange, 100, &ret); + ok(ret == 2); + ok(*ranges++ == 1); + ok(*ranges++ == 3); + ok(*ranges++ == 5); + ok(*ranges == 5); + } + + { + testrange = h2o_iovec_init(H2O_STRLIT("bytes= 1-3")); + ranges = process_range(&testpool, &testrange, 100, &ret); + ok(ranges == NULL); + } + + { + testrange = h2o_iovec_init(H2O_STRLIT("bytes=1-3 5-10")); + ranges = process_range(&testpool, &testrange, 100, &ret); + ok(ranges == NULL); + } + + { + testrange = h2o_iovec_init(H2O_STRLIT("bytes=1-\t,5-10")); + ranges = process_range(&testpool, &testrange, 100, &ret); + ok(ret == 2); + ok(*ranges++ == 1); + ok(*ranges++ == 99); + ok(*ranges++ == 5); + ok(*ranges == 6); + } + + h2o_mem_clear_pool(&testpool); +} + +static void test_if_modified_since(void) +{ + char lm_date[H2O_TIMESTR_RFC1123_LEN + 1]; + + { /* obtain last-modified */ + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + ssize_t lm_index; + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 200); + if ((lm_index = h2o_find_header(&conn->req.res.headers, H2O_TOKEN_LAST_MODIFIED, -1)) == -1) { + ok(0); + return; + } + ok(conn->req.res.headers.entries[lm_index].value.len == H2O_TIMESTR_RFC1123_LEN); + memcpy(lm_date, conn->req.res.headers.entries[lm_index].value.base, H2O_TIMESTR_RFC1123_LEN); + lm_date[H2O_TIMESTR_RFC1123_LEN] = '\0'; + h2o_loopback_destroy(conn); + } + + { /* send if-modified-since using the obtained last-modified */ + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/")); + h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_IF_MODIFIED_SINCE, NULL, lm_date, H2O_TIMESTR_RFC1123_LEN); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 304); + ok(conn->body->size == 0); + ok(h2o_find_header(&conn->req.res.headers, H2O_TOKEN_ETAG, -1) != -1); + h2o_loopback_destroy(conn); + } + + { /* send if-modified-since using an old date */ + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/")); + h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_IF_MODIFIED_SINCE, NULL, + H2O_STRLIT("Sun, 06 Nov 1994 08:49:37 GMT")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 200); + h2o_loopback_destroy(conn); + } + + { /* send if-modified-since using a date in the future */ + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/")); + h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_IF_MODIFIED_SINCE, NULL, + H2O_STRLIT("Wed, 18 May 2033 12:33:20 GMT")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 304); + ok(conn->body->size == 0); + ok(h2o_find_header(&conn->req.res.headers, H2O_TOKEN_ETAG, -1) != -1); + h2o_loopback_destroy(conn); + } +} + +static void test_if_match(void) +{ + h2o_iovec_t etag = {NULL}; + + { /* obtain etag */ + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + ssize_t etag_index; + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 200); + if ((etag_index = h2o_find_header(&conn->req.res.headers, H2O_TOKEN_ETAG, -1)) == -1) { + ok(0); + return; + } + etag = h2o_strdup(NULL, conn->req.res.headers.entries[etag_index].value.base, + conn->req.res.headers.entries[etag_index].value.len); + h2o_loopback_destroy(conn); + } + + { /* send if-non-match using the obtained etag */ + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/")); + h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_IF_NONE_MATCH, NULL, etag.base, etag.len); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 304); + ok(conn->body->size == 0); + h2o_loopback_destroy(conn); + } + + free(etag.base); +} + +static void test_range_req(void) +{ + { /* check if accept-ranges is "bytes" */ + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 200); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain")); + if (check_header(&conn->req.res, H2O_TOKEN_ACCEPT_RANGES, "none")) { + ok(1); + return; + } + ok(check_header(&conn->req.res, H2O_TOKEN_ACCEPT_RANGES, "bytes")); + ok(conn->body->size == 1000); + ok(strcmp(sha1sum(conn->body->bytes, conn->body->size), "dfd3ae1f5c475555fad62efe42e07309fa45f2ed") == 0); + h2o_loopback_destroy(conn); + } + { /* check a normal single range */ + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); + h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_RANGE, NULL, H2O_STRLIT("bytes=0-10")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 206); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain")); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_RANGE, "bytes 0-10/1000")); + ok(conn->body->size == 11); + ok(memcmp(conn->body->bytes, "123456789\n1", 11) == 0); + h2o_loopback_destroy(conn); + } + { /* check an over range single range */ + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); + h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_RANGE, NULL, H2O_STRLIT("bytes=990-1100")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 206); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain")); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_RANGE, "bytes 990-999/1000")); + ok(conn->body->size == 10); + ok(memcmp(conn->body->bytes, "123456789\n", 10) == 0); + h2o_loopback_destroy(conn); + } + { /* check a single range without end */ + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); + h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_RANGE, NULL, H2O_STRLIT("bytes=989-")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 206); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain")); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_RANGE, "bytes 989-999/1000")); + ok(conn->body->size == 11); + ok(memcmp(conn->body->bytes, "\n123456789\n", 11) == 0); + h2o_loopback_destroy(conn); + } + { /* check a single suffix range */ + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); + h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_RANGE, NULL, H2O_STRLIT("bytes=-21")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 206); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain")); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_RANGE, "bytes 979-999/1000")); + ok(conn->body->size == 21); + ok(memcmp(conn->body->bytes, "\n123456789\n123456789\n", 21) == 0); + h2o_loopback_destroy(conn); + } + { /* check a single suffix range over filesize */ + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); + h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_RANGE, NULL, H2O_STRLIT("bytes=-2100")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 206); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain")); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_RANGE, "bytes 0-999/1000")); + ok(conn->body->size == 1000); + ok(strcmp(sha1sum(conn->body->bytes, conn->body->size), "dfd3ae1f5c475555fad62efe42e07309fa45f2ed") == 0); + h2o_loopback_destroy(conn); + } + { /* malformed range */ + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); + h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_RANGE, NULL, H2O_STRLIT("bytes=-0-10, 9-, -10")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 416); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain; charset=utf-8")); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_RANGE, "bytes */1000")); + ok(conn->body->size == strlen("requested range not satisfiable")); + ok(h2o_memis(conn->body->bytes, conn->body->size, H2O_STRLIT("requested range not satisfiable"))); + h2o_loopback_destroy(conn); + } + { /* malformed range */ + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); + h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_RANGE, NULL, H2O_STRLIT("bytes=0-10-12, 9-, -10")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 416); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain; charset=utf-8")); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_RANGE, "bytes */1000")); + ok(conn->body->size == strlen("requested range not satisfiable")); + ok(h2o_memis(conn->body->bytes, conn->body->size, H2O_STRLIT("requested range not satisfiable"))); + h2o_loopback_destroy(conn); + } + { /* malformed range */ + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); + h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_RANGE, NULL, H2O_STRLIT("bytfasdf")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 416); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain; charset=utf-8")); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_RANGE, "bytes */1000")); + ok(conn->body->size == strlen("requested range not satisfiable")); + ok(h2o_memis(conn->body->bytes, conn->body->size, H2O_STRLIT("requested range not satisfiable"))); + h2o_loopback_destroy(conn); + } + { /* half-malformed range */ + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); + h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_RANGE, NULL, H2O_STRLIT("bytes=-0")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 416); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain; charset=utf-8")); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_RANGE, "bytes */1000")); + ok(conn->body->size == strlen("requested range not satisfiable")); + ok(h2o_memis(conn->body->bytes, conn->body->size, H2O_STRLIT("requested range not satisfiable"))); + h2o_loopback_destroy(conn); + } + { /* single range over filesize */ + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); + h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_RANGE, NULL, H2O_STRLIT("bytes=1000-1001")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 416); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain; charset=utf-8")); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_RANGE, "bytes */1000")); + ok(conn->body->size == strlen("requested range not satisfiable")); + ok(h2o_memis(conn->body->bytes, conn->body->size, H2O_STRLIT("requested range not satisfiable"))); + h2o_loopback_destroy(conn); + } + { /* single range with "negative" length */ + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); + h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_RANGE, NULL, H2O_STRLIT("bytes=900-100")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 416); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain; charset=utf-8")); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_RANGE, "bytes */1000")); + ok(conn->body->size == strlen("requested range not satisfiable")); + ok(h2o_memis(conn->body->bytes, conn->body->size, H2O_STRLIT("requested range not satisfiable"))); + h2o_loopback_destroy(conn); + } + { /* check a half-malformed range with a normal range */ + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); + h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_RANGE, NULL, H2O_STRLIT("bytes=-0, 0-0")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 206); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain")); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_RANGE, "bytes 0-0/1000")); + ok(conn->body->size == 1); + ok(memcmp(conn->body->bytes, "1", 1) == 0); + h2o_loopback_destroy(conn); + } + { /* multiple ranges */ + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + ssize_t content_type_index; + h2o_iovec_t content_type, expected[2] = {{NULL}}; + char boundary[BOUNDARY_SIZE + 1]; + size_t mimebaselen = strlen("multipart/byteranges; boundary="); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); + h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_RANGE, NULL, H2O_STRLIT("bytes=-0, 0-9,-11")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 206); + if ((content_type_index = h2o_find_header(&conn->req.res.headers, H2O_TOKEN_CONTENT_TYPE, -1)) == -1) { + ok(0); + return; + } + content_type = conn->req.res.headers.entries[content_type_index].value; + ok(h2o_memis(content_type.base, mimebaselen, "multipart/byteranges; boundary=", mimebaselen)); + memcpy(boundary, content_type.base + mimebaselen, BOUNDARY_SIZE); + boundary[BOUNDARY_SIZE] = 0; + expected[0].base = h2o_mem_alloc_pool(&conn->req.pool, 256); + expected[0].len = + sprintf(expected[0].base, "Content-Type: %s\r\nContent-Range: bytes 0-9/1000\r\n\r\n%s", "text/plain", "123456789\n"); + expected[1].base = h2o_mem_alloc_pool(&conn->req.pool, 256); + expected[1].len = sprintf(expected[1].base, "Content-Type: %s\r\nContent-Range: bytes 989-999/1000\r\n\r\n%s", "text/plain", + "\n123456789\n"); + ok(h2o_find_header(&conn->req.res.headers, H2O_TOKEN_CONTENT_RANGE, -1) == -1); + ok(conn->body->size == conn->req.res.content_length); + ok(check_multirange_body(conn->body->bytes, boundary, expected, 2)); + h2o_loopback_destroy(conn); + } + { /* multiple ranges with plenty of WS and COMMA */ + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + ssize_t content_type_index; + h2o_iovec_t content_type, expected[2] = {{NULL}}; + char boundary[BOUNDARY_SIZE + 1]; + size_t mimebaselen = strlen("multipart/byteranges; boundary="); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); + h2o_add_header(&conn->req.pool, &conn->req.headers, H2O_TOKEN_RANGE, NULL, H2O_STRLIT("bytes=,\t,1-3 ,, ,5-9,")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 206); + if ((content_type_index = h2o_find_header(&conn->req.res.headers, H2O_TOKEN_CONTENT_TYPE, -1)) == -1) { + ok(0); + return; + } + content_type = conn->req.res.headers.entries[content_type_index].value; + ok(h2o_memis(content_type.base, mimebaselen, "multipart/byteranges; boundary=", mimebaselen)); + memcpy(boundary, content_type.base + mimebaselen, BOUNDARY_SIZE); + boundary[BOUNDARY_SIZE] = 0; + expected[0].base = h2o_mem_alloc_pool(&conn->req.pool, 256); + expected[0].len = + sprintf(expected[0].base, "Content-Type: %s\r\nContent-Range: bytes 1-3/1000\r\n\r\n%s", "text/plain", "234"); + expected[1].base = h2o_mem_alloc_pool(&conn->req.pool, 256); + expected[1].len = + sprintf(expected[1].base, "Content-Type: %s\r\nContent-Range: bytes 5-9/1000\r\n\r\n%s", "text/plain", "6789\n"); + ok(h2o_find_header(&conn->req.res.headers, H2O_TOKEN_CONTENT_RANGE, -1) == -1); + ok(conn->body->size == conn->req.res.content_length); + ok(check_multirange_body(conn->body->bytes, boundary, expected, 2)); + h2o_loopback_destroy(conn); + } +} + +void test_lib__handler__file_c() +{ + h2o_globalconf_t globalconf; + h2o_hostconf_t *hostconf; + h2o_pathconf_t *pathconf; + + h2o_config_init(&globalconf); + hostconf = h2o_config_register_host(&globalconf, h2o_iovec_init(H2O_STRLIT("default")), 65535); + pathconf = h2o_config_register_path(hostconf, "/", 0); + h2o_file_register(pathconf, "t/00unit/assets", NULL, NULL, 0); + + h2o_context_init(&ctx, test_loop, &globalconf); + + { + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("HEAD")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 200); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/html")); + ok(conn->body->size == 0); + h2o_loopback_destroy(conn); + } + { + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 200); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/html")); + ok(h2o_memis(conn->body->bytes, conn->body->size, H2O_STRLIT("hello html\n"))); + h2o_loopback_destroy(conn); + } + { + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("HEAD")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/index.html")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 200); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/html")); + ok(conn->body->size == 0); + h2o_loopback_destroy(conn); + } + { + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/index.html")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 200); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/html")); + ok(h2o_memis(conn->body->bytes, conn->body->size, H2O_STRLIT("hello html\n"))); + h2o_loopback_destroy(conn); + } + { + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("HEAD")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 200); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain")); + ok(conn->body->size == 0); + h2o_loopback_destroy(conn); + } + { + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000.txt")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 200); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain")); + ok(conn->body->size == 1000); + ok(strcmp(sha1sum(conn->body->bytes, conn->body->size), "dfd3ae1f5c475555fad62efe42e07309fa45f2ed") == 0); + h2o_loopback_destroy(conn); + } + { + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("HEAD")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000000.txt")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 200); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain")); + ok(conn->body->size == 0); + h2o_loopback_destroy(conn); + } + { + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/1000000.txt")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 200); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain")); + ok(conn->body->size == 1000000); + ok(strcmp(sha1sum(conn->body->bytes, conn->body->size), "00c8ab71d0914dce6a1ec2eaa0fda0df7044b2a2") == 0); + h2o_loopback_destroy(conn); + } + { + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("HEAD")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/index_txt/")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 200); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain")); + ok(conn->body->size == 0); + h2o_loopback_destroy(conn); + } + { + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/index_txt/")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 200); + ok(check_header(&conn->req.res, H2O_TOKEN_CONTENT_TYPE, "text/plain")); + ok(h2o_memis(conn->body->bytes, conn->body->size, H2O_STRLIT("hello text\n"))); + h2o_loopback_destroy(conn); + } + { + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("HEAD")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/index_txt")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 301); + ok(check_header(&conn->req.res, H2O_TOKEN_LOCATION, "/index_txt/")); + h2o_loopback_destroy(conn); + } + { + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/index_txt")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 301); + ok(check_header(&conn->req.res, H2O_TOKEN_LOCATION, "/index_txt/")); + h2o_loopback_destroy(conn); + } + { + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("HEAD")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/index_txt_as_dir/")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 301); + ok(check_header(&conn->req.res, H2O_TOKEN_LOCATION, "/index_txt_as_dir/index.txt/")); + h2o_loopback_destroy(conn); + } + { + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/index_txt_as_dir/")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 301); + ok(check_header(&conn->req.res, H2O_TOKEN_LOCATION, "/index_txt_as_dir/index.txt/")); + h2o_loopback_destroy(conn); + } + subtest("if-modified-since", test_if_modified_since); + subtest("if-match", test_if_match); + subtest("process_range()", test_process_range); + subtest("range request", test_range_req); + + h2o_context_dispose(&ctx); + h2o_config_dispose(&globalconf); +} diff --git a/src/web/server/h2o/libh2o/t/00unit/lib/handler/headers.c b/src/web/server/h2o/libh2o/t/00unit/lib/handler/headers.c new file mode 100644 index 000000000..9ef8386b9 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/lib/handler/headers.c @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2015 DeNA Co., Ltd., Kazuho Oku + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include "../../test.h" +#include "../../../../lib/handler/headers.c" + +static int headers_are(h2o_mem_pool_t *pool, h2o_headers_t *headers, const char *s, size_t len) +{ + size_t i; + h2o_iovec_t flattened = {NULL}; + + for (i = 0; i != headers->size; ++i) { + flattened = h2o_concat(pool, flattened, *headers->entries[i].name, h2o_iovec_init(H2O_STRLIT(": ")), + headers->entries[i].value, h2o_iovec_init(H2O_STRLIT("\n"))); + } + + return h2o_memis(flattened.base, flattened.len, s, len); +} + +static void setup_headers(h2o_mem_pool_t *pool, h2o_headers_t *headers) +{ + *headers = (h2o_headers_t){NULL}; + h2o_add_header(pool, headers, H2O_TOKEN_CONTENT_TYPE, NULL, H2O_STRLIT("text/plain")); + h2o_add_header(pool, headers, H2O_TOKEN_CACHE_CONTROL, NULL, H2O_STRLIT("public, max-age=86400")); + h2o_add_header(pool, headers, H2O_TOKEN_SET_COOKIE, NULL, H2O_STRLIT("a=b")); + h2o_add_header_by_str(pool, headers, H2O_STRLIT("x-foo"), 0, NULL, H2O_STRLIT("bar")); +} + +void test_lib__handler__headers_c(void) +{ + h2o_mem_pool_t pool; + h2o_headers_t headers; + h2o_headers_command_t cmd; + h2o_iovec_t header_str; + + h2o_mem_init_pool(&pool); + + /* tests using token headers */ + setup_headers(&pool, &headers); + ok(headers_are(&pool, &headers, + H2O_STRLIT("content-type: text/plain\ncache-control: public, max-age=86400\nset-cookie: a=b\nx-foo: bar\n"))); + cmd = (h2o_headers_command_t){H2O_HEADERS_CMD_ADD, &H2O_TOKEN_SET_COOKIE->buf, {H2O_STRLIT("c=d")}}; + h2o_rewrite_headers(&pool, &headers, &cmd); + ok(headers_are( + &pool, &headers, + H2O_STRLIT( + "content-type: text/plain\ncache-control: public, max-age=86400\nset-cookie: a=b\nx-foo: bar\nset-cookie: c=d\n"))); + + setup_headers(&pool, &headers); + cmd = (h2o_headers_command_t){H2O_HEADERS_CMD_APPEND, &H2O_TOKEN_CACHE_CONTROL->buf, {H2O_STRLIT("public")}}; + h2o_rewrite_headers(&pool, &headers, &cmd); + ok(headers_are( + &pool, &headers, + H2O_STRLIT("content-type: text/plain\ncache-control: public, max-age=86400, public\nset-cookie: a=b\nx-foo: bar\n"))); + + setup_headers(&pool, &headers); + cmd = (h2o_headers_command_t){H2O_HEADERS_CMD_MERGE, &H2O_TOKEN_CACHE_CONTROL->buf, {H2O_STRLIT("public")}}; + h2o_rewrite_headers(&pool, &headers, &cmd); + ok(headers_are(&pool, &headers, + H2O_STRLIT("content-type: text/plain\ncache-control: public, max-age=86400\nset-cookie: a=b\nx-foo: bar\n"))); + + setup_headers(&pool, &headers); + cmd = (h2o_headers_command_t){H2O_HEADERS_CMD_SET, &H2O_TOKEN_CACHE_CONTROL->buf, {H2O_STRLIT("no-cache")}}; + h2o_rewrite_headers(&pool, &headers, &cmd); + ok(headers_are(&pool, &headers, + H2O_STRLIT("content-type: text/plain\nset-cookie: a=b\nx-foo: bar\ncache-control: no-cache\n"))); + + setup_headers(&pool, &headers); + cmd = (h2o_headers_command_t){H2O_HEADERS_CMD_SETIFEMPTY, &H2O_TOKEN_CACHE_CONTROL->buf, {H2O_STRLIT("no-cache")}}; + h2o_rewrite_headers(&pool, &headers, &cmd); + ok(headers_are(&pool, &headers, + H2O_STRLIT("content-type: text/plain\ncache-control: public, max-age=86400\nset-cookie: a=b\nx-foo: bar\n"))); + + /* tests using non-token headers */ + header_str = h2o_iovec_init(H2O_STRLIT("x-foo")); + setup_headers(&pool, &headers); + cmd = (h2o_headers_command_t){H2O_HEADERS_CMD_ADD, &header_str, {H2O_STRLIT("baz")}}; + h2o_rewrite_headers(&pool, &headers, &cmd); + ok(headers_are( + &pool, &headers, + H2O_STRLIT("content-type: text/plain\ncache-control: public, max-age=86400\nset-cookie: a=b\nx-foo: bar\nx-foo: baz\n"))); + + setup_headers(&pool, &headers); + cmd = (h2o_headers_command_t){H2O_HEADERS_CMD_APPEND, &header_str, {H2O_STRLIT("bar")}}; + h2o_rewrite_headers(&pool, &headers, &cmd); + ok(headers_are( + &pool, &headers, + H2O_STRLIT("content-type: text/plain\ncache-control: public, max-age=86400\nset-cookie: a=b\nx-foo: bar, bar\n"))); + + setup_headers(&pool, &headers); + cmd = (h2o_headers_command_t){H2O_HEADERS_CMD_MERGE, &header_str, {H2O_STRLIT("bar")}}; + h2o_rewrite_headers(&pool, &headers, &cmd); + ok(headers_are(&pool, &headers, + H2O_STRLIT("content-type: text/plain\ncache-control: public, max-age=86400\nset-cookie: a=b\nx-foo: bar\n"))); + + setup_headers(&pool, &headers); + cmd = (h2o_headers_command_t){H2O_HEADERS_CMD_SET, &header_str, {H2O_STRLIT("baz")}}; + h2o_rewrite_headers(&pool, &headers, &cmd); + ok(headers_are(&pool, &headers, + H2O_STRLIT("content-type: text/plain\ncache-control: public, max-age=86400\nset-cookie: a=b\nx-foo: baz\n"))); + + setup_headers(&pool, &headers); + cmd = (h2o_headers_command_t){H2O_HEADERS_CMD_SETIFEMPTY, &header_str, {H2O_STRLIT("baz")}}; + h2o_rewrite_headers(&pool, &headers, &cmd); + ok(headers_are(&pool, &headers, + H2O_STRLIT("content-type: text/plain\ncache-control: public, max-age=86400\nset-cookie: a=b\nx-foo: bar\n"))); + + h2o_mem_clear_pool(&pool); +} diff --git a/src/web/server/h2o/libh2o/t/00unit/lib/handler/mimemap.c b/src/web/server/h2o/libh2o/t/00unit/lib/handler/mimemap.c new file mode 100644 index 000000000..51ebdff6c --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/lib/handler/mimemap.c @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2014 DeNA Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include "../../test.h" +#include "../../../../lib/handler/mimemap.c" + +static void test_default_attributes(void) +{ + h2o_mime_attributes_t attr; + + h2o_mimemap_get_default_attributes("text/plain", &attr); + ok(attr.is_compressible); + ok(attr.priority == H2O_MIME_ATTRIBUTE_PRIORITY_NORMAL); + + h2o_mimemap_get_default_attributes("text/plain; charset=utf-8", &attr); + ok(attr.is_compressible); + ok(attr.priority == H2O_MIME_ATTRIBUTE_PRIORITY_NORMAL); + + h2o_mimemap_get_default_attributes("application/xhtml+xml", &attr); + ok(attr.is_compressible); + ok(attr.priority == H2O_MIME_ATTRIBUTE_PRIORITY_NORMAL); + + h2o_mimemap_get_default_attributes("application/xhtml+xml; charset=utf-8", &attr); + ok(attr.is_compressible); + ok(attr.priority == H2O_MIME_ATTRIBUTE_PRIORITY_NORMAL); + + h2o_mimemap_get_default_attributes("text/css", &attr); + ok(attr.is_compressible); + ok(attr.priority == H2O_MIME_ATTRIBUTE_PRIORITY_HIGHEST); + + h2o_mimemap_get_default_attributes("text/css; charset=utf-8", &attr); + ok(attr.is_compressible); + ok(attr.priority == H2O_MIME_ATTRIBUTE_PRIORITY_HIGHEST); + + h2o_mimemap_get_default_attributes("application/octet-stream", &attr); + ok(!attr.is_compressible); + ok(attr.priority == H2O_MIME_ATTRIBUTE_PRIORITY_NORMAL); +} + +static int is_mimetype(h2o_mimemap_type_t *type, const char *expected) +{ + return type->type == H2O_MIMEMAP_TYPE_MIMETYPE && type->data.mimetype.len == strlen(expected) && + memcmp(type->data.mimetype.base, expected, type->data.mimetype.len) == 0; +} + +static void test_basic() +{ + h2o_mimemap_t *mimemap = h2o_mimemap_create(), *mimemap2; + + subtest("default-attributes", test_default_attributes); + + /* default and set default */ + ok(is_mimetype(h2o_mimemap_get_default_type(mimemap), "application/octet-stream")); + { + char buf[sizeof("text/plain")]; + strcpy(buf, "text/plain"); + h2o_mimemap_set_default_type(mimemap, buf, NULL); + memset(buf, 0, sizeof(buf)); + } + ok(is_mimetype(h2o_mimemap_get_default_type(mimemap), "text/plain")); + + /* set and overwrite */ + h2o_mimemap_define_mimetype(mimemap, "foo", "example/foo", NULL); + ok(is_mimetype(h2o_mimemap_get_type_by_extension(mimemap, h2o_iovec_init(H2O_STRLIT("foo"))), "example/foo")); + ok(is_mimetype(h2o_mimemap_get_type_by_extension(mimemap, h2o_iovec_init(H2O_STRLIT("FOO"))), "example/foo")); + ok(h2o_mimemap_get_type_by_extension(mimemap, h2o_iovec_init(H2O_STRLIT("foo"))) == + h2o_mimemap_get_type_by_mimetype(mimemap, h2o_iovec_init(H2O_STRLIT("example/foo")), 0)); + h2o_mimemap_define_mimetype(mimemap, "foo", "example/overwritten", NULL); + ok(is_mimetype(h2o_mimemap_get_type_by_extension(mimemap, h2o_iovec_init(H2O_STRLIT("foo"))), "example/overwritten")); + ok(h2o_mimemap_get_type_by_extension(mimemap, h2o_iovec_init(H2O_STRLIT("foo"))) == + h2o_mimemap_get_type_by_mimetype(mimemap, h2o_iovec_init(H2O_STRLIT("example/overwritten")), 0)); + ok(h2o_mimemap_get_type_by_mimetype(mimemap, h2o_iovec_init(H2O_STRLIT("example/foo")), 0) == NULL); + + /* clone and release */ + mimemap2 = h2o_mimemap_clone(mimemap); + ok(is_mimetype(h2o_mimemap_get_default_type(mimemap2), "text/plain")); + ok(is_mimetype(h2o_mimemap_get_type_by_extension(mimemap2, h2o_iovec_init(H2O_STRLIT("foo"))), "example/overwritten")); + ok(h2o_mimemap_get_type_by_extension(mimemap, h2o_iovec_init(H2O_STRLIT("foo"))) == + h2o_mimemap_get_type_by_mimetype(mimemap, h2o_iovec_init(H2O_STRLIT("example/overwritten")), 0)); + h2o_mem_release_shared(mimemap2); + + /* check original */ + ok(is_mimetype(h2o_mimemap_get_default_type(mimemap), "text/plain")); + ok(is_mimetype(h2o_mimemap_get_type_by_extension(mimemap, h2o_iovec_init(H2O_STRLIT("foo"))), "example/overwritten")); + + /* remove */ + h2o_mimemap_remove_type(mimemap, "foo"); + ok(is_mimetype(h2o_mimemap_get_type_by_extension(mimemap, h2o_iovec_init(H2O_STRLIT("foo"))), "text/plain")); + ok(h2o_mimemap_get_type_by_mimetype(mimemap, h2o_iovec_init(H2O_STRLIT("example/overwritten")), 0) == NULL); + h2o_mimemap_remove_type(mimemap, "foo"); + ok(is_mimetype(h2o_mimemap_get_type_by_extension(mimemap, h2o_iovec_init(H2O_STRLIT("foo"))), "text/plain")); + + h2o_mem_release_shared(mimemap); +} + +static void test_dynamic() +{ + h2o_mimemap_t *mimemap = h2o_mimemap_create(); + const char *exts[] = {".php", NULL}; + h2o_globalconf_t global = {NULL}; + h2o_mimemap_define_dynamic(mimemap, exts, &global); + h2o_mem_release_shared(mimemap); +} + +void test_lib__handler__mimemap_c() +{ + subtest("basic", test_basic); + subtest("dynamic", test_dynamic); +} diff --git a/src/web/server/h2o/libh2o/t/00unit/lib/handler/redirect.c b/src/web/server/h2o/libh2o/t/00unit/lib/handler/redirect.c new file mode 100644 index 000000000..90cb987d3 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/lib/handler/redirect.c @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2015 DeNA Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include +#include "../../test.h" +#include "../../../../lib/handler/redirect.c" + +static h2o_context_t ctx; + +static int check_header(h2o_res_t *res, const h2o_token_t *header_name, const char *expected) +{ + size_t index = h2o_find_header(&res->headers, header_name, SIZE_MAX); + if (index == SIZE_MAX) + return 0; + return h2o_lcstris(res->headers.entries[index].value.base, res->headers.entries[index].value.len, expected, strlen(expected)); +} + +void test_lib__handler__redirect_c() +{ + h2o_globalconf_t globalconf; + h2o_hostconf_t *hostconf; + h2o_pathconf_t *pathconf; + + h2o_config_init(&globalconf); + hostconf = h2o_config_register_host(&globalconf, h2o_iovec_init(H2O_STRLIT("default")), 65535); + pathconf = h2o_config_register_path(hostconf, "/", 0); + h2o_redirect_register(pathconf, 0, 301, "https://example.com/bar/"); + + h2o_context_init(&ctx, test_loop, &globalconf); + + { + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 301); + ok(check_header(&conn->req.res, H2O_TOKEN_LOCATION, "https://example.com/bar/")); + ok(conn->body->size != 0); + h2o_loopback_destroy(conn); + } + { + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/abc")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 301); + ok(check_header(&conn->req.res, H2O_TOKEN_LOCATION, "https://example.com/bar/abc")); + ok(conn->body->size != 0); + h2o_loopback_destroy(conn); + } + { + h2o_loopback_conn_t *conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("HEAD")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/")); + h2o_loopback_run_loop(conn); + ok(conn->req.res.status == 301); + ok(check_header(&conn->req.res, H2O_TOKEN_LOCATION, "https://example.com/bar/")); + ok(conn->body->size == 0); + h2o_loopback_destroy(conn); + } + + h2o_context_dispose(&ctx); + h2o_config_dispose(&globalconf); +} diff --git a/src/web/server/h2o/libh2o/t/00unit/lib/http2/cache_digests.c b/src/web/server/h2o/libh2o/t/00unit/lib/http2/cache_digests.c new file mode 100644 index 000000000..3e55d1732 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/lib/http2/cache_digests.c @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2016 DeNA Co., Ltd., Kazuho Oku + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include +#include "../../test.h" +#include "../../../../lib/http2/cache_digests.c" + +static void test_calc_hash(void) +{ + ok(calc_hash(H2O_STRLIT("https://example.com/style.css"), H2O_STRLIT("")) == 0xbaf9e86f03330860); + ok(calc_hash(H2O_STRLIT("https://example.com/style.css"), H2O_STRLIT("\"deadbeef\"")) == 0xa53eb398509042d7); +} + +static void test_decode(void) +{ + h2o_cache_digests_t *digests = NULL; + + h2o_cache_digests_load_header(&digests, H2O_STRLIT("AeLA")); + ok(digests != NULL); + if (digests == NULL) + return; + ok(digests->fresh.url_only.size == 1); + ok(digests->fresh.url_and_etag.size == 0); + ok(digests->fresh.url_only.entries[0].capacity_bits == 7); + ok(digests->fresh.url_only.entries[0].keys.size == 1); + ok(digests->fresh.url_only.entries[0].keys.entries[0] == 0x0b); + ok(!digests->fresh.complete); + + ok(h2o_cache_digests_lookup_by_url(digests, H2O_STRLIT("https://127.0.0.1.xip.io:8081/cache-digests.cgi/hello.js")) == + H2O_CACHE_DIGESTS_STATE_FRESH); + ok(h2o_cache_digests_lookup_by_url(digests, H2O_STRLIT("https://127.0.0.1.xip.io:8081/notfound.js")) == + H2O_CACHE_DIGESTS_STATE_UNKNOWN); + + h2o_cache_digests_load_header(&digests, H2O_STRLIT("FOO; stale, AcA; validators; complete")); + ok(digests->fresh.url_only.size == 1); + ok(digests->fresh.url_and_etag.size == 1); + ok(digests->fresh.url_and_etag.entries[0].capacity_bits == 7); + ok(digests->fresh.url_and_etag.entries[0].keys.size == 0); + ok(digests->fresh.complete); + + ok(h2o_cache_digests_lookup_by_url(digests, H2O_STRLIT("https://127.0.0.1.xip.io:8081/notfound.js")) == + H2O_CACHE_DIGESTS_STATE_NOT_CACHED); + ok(h2o_cache_digests_lookup_by_url(digests, H2O_STRLIT("https://127.0.0.1.xip.io:8081/cache-digests.cgi/hello.js")) == + H2O_CACHE_DIGESTS_STATE_FRESH); + + h2o_cache_digests_load_header(&digests, H2O_STRLIT("AcA; reset")); + ok(digests->fresh.url_only.size == 1); + ok(digests->fresh.url_and_etag.size == 0); + ok(digests->fresh.url_only.entries[0].capacity_bits == 7); + ok(digests->fresh.url_only.entries[0].keys.size == 0); + ok(!digests->fresh.complete); + + h2o_cache_digests_destroy(digests); +} + +void test_lib__http2__cache_digests(void) +{ + subtest("calc_hash", test_calc_hash); + subtest("test_decode", test_decode); +} diff --git a/src/web/server/h2o/libh2o/t/00unit/lib/http2/casper.c b/src/web/server/h2o/libh2o/t/00unit/lib/http2/casper.c new file mode 100644 index 000000000..5b2a43a5e --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/lib/http2/casper.c @@ -0,0 +1,133 @@ +/* + * Copyright (c) 2015 DeNA Co., Ltd., Kazuho Oku + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include +#include "../../test.h" +#include "../../../../lib/http2/casper.c" + +static size_t get_end_of_cookie_value(char *cookie, size_t cookie_len) +{ + size_t i; + for (i = 0; i != cookie_len; ++i) + if (cookie[i] == ';') + break; + return i; +} + +static void test_calc_key(void) +{ + h2o_http2_casper_t *casper = h2o_http2_casper_create(13, 6); + + unsigned key = calc_key(casper, H2O_STRLIT("/index.html")), expected; + memcpy(&expected, "\x14\xfe\x45\x59", 4); + expected &= (1 << 13) - 1; + ok(key == expected); + + h2o_http2_casper_destroy(casper); +} + +static void test_lookup(void) +{ + h2o_http2_casper_t *casper; + casper = h2o_http2_casper_create(13, 6); + + ok(h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.html"), 0) == 0); + ok(h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.html"), 1) == 0); + ok(casper->keys.size == 1); + ok(h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.html"), 0) == 1); + ok(h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.html"), 1) == 1); + ok(casper->keys.size == 1); + + h2o_http2_casper_destroy(casper); +} + +static void test_cookie(void) +{ + h2o_http2_casper_t *casper; + + casper = h2o_http2_casper_create(13, 6); + + h2o_iovec_t cookie = h2o_http2_casper_get_cookie(casper); + ok(cookie.base == NULL); + ok(cookie.len == 0); + + h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.html"), 1); + cookie = h2o_http2_casper_get_cookie(casper); + ok(cookie.len != 0); + cookie = h2o_strdup(NULL, cookie.base, cookie.len); + h2o_http2_casper_destroy(casper); + casper = h2o_http2_casper_create(13, 6); + + h2o_http2_casper_consume_cookie(casper, cookie.base, get_end_of_cookie_value(cookie.base, cookie.len)); + ok(h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.html"), 0) == 1); + ok(h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.php"), 0) == 0); + h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.php"), 1); + + h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.html"), 1); + cookie = h2o_http2_casper_get_cookie(casper); + ok(cookie.len != 0); + cookie = h2o_strdup(NULL, cookie.base, cookie.len); + + h2o_http2_casper_destroy(casper); + casper = h2o_http2_casper_create(13, 6); + + h2o_http2_casper_consume_cookie(casper, cookie.base, get_end_of_cookie_value(cookie.base, cookie.len)); + ok(h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.html"), 0) == 1); + ok(h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.php"), 0) == 1); + + h2o_http2_casper_destroy(casper); +} + +static void test_cookie_merge(void) +{ + h2o_http2_casper_t *casper; + + casper = h2o_http2_casper_create(13, 6); + h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.html"), 1); + h2o_iovec_t cookie1 = h2o_http2_casper_get_cookie(casper); + cookie1 = h2o_strdup(NULL, cookie1.base, cookie1.len); + h2o_http2_casper_destroy(casper); + + casper = h2o_http2_casper_create(13, 6); + h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.php"), 1); + h2o_iovec_t cookie2 = h2o_http2_casper_get_cookie(casper); + cookie2 = h2o_strdup(NULL, cookie2.base, cookie2.len); + h2o_http2_casper_destroy(casper); + + casper = h2o_http2_casper_create(13, 6); + h2o_http2_casper_consume_cookie(casper, cookie1.base, get_end_of_cookie_value(cookie1.base, cookie1.len)); + h2o_http2_casper_consume_cookie(casper, cookie1.base, get_end_of_cookie_value(cookie1.base, cookie1.len)); + ok(casper->keys.size == 1); + ok(h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.html"), 0) == 1); + h2o_http2_casper_consume_cookie(casper, cookie2.base, get_end_of_cookie_value(cookie2.base, cookie2.len)); + ok(casper->keys.size == 2); + ok(h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.html"), 0) == 1); + ok(h2o_http2_casper_lookup(casper, H2O_STRLIT("/index.php"), 0) == 1); + h2o_http2_casper_destroy(casper); +} + +void test_lib__http2__casper(void) +{ + subtest("calc_key", test_calc_key); + subtest("test_lookup", test_lookup); + subtest("cookie", test_cookie); + subtest("cookie-merge", test_cookie_merge); +} diff --git a/src/web/server/h2o/libh2o/t/00unit/lib/http2/hpack.c b/src/web/server/h2o/libh2o/t/00unit/lib/http2/hpack.c new file mode 100644 index 000000000..059df82c7 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/lib/http2/hpack.c @@ -0,0 +1,511 @@ +/* + * Copyright (c) 2014 DeNA Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include +#include "../../test.h" +#include "../../../../lib/http2/hpack.c" + +static void test_request(h2o_iovec_t first_req, h2o_iovec_t second_req, h2o_iovec_t third_req) +{ + h2o_hpack_header_table_t header_table; + h2o_req_t req; + h2o_iovec_t in; + int r, pseudo_headers_map; + size_t content_length; + const char *err_desc = NULL; + + memset(&header_table, 0, sizeof(header_table)); + header_table.hpack_capacity = 4096; + + memset(&req, 0, sizeof(req)); + h2o_mem_init_pool(&req.pool); + in = first_req; + r = h2o_hpack_parse_headers(&req, &header_table, (const uint8_t *)in.base, in.len, &pseudo_headers_map, &content_length, NULL, + &err_desc); + ok(r == 0); + ok(req.input.authority.len == 15); + ok(memcmp(req.input.authority.base, H2O_STRLIT("www.example.com")) == 0); + ok(req.input.method.len == 3); + ok(memcmp(req.input.method.base, H2O_STRLIT("GET")) == 0); + ok(req.input.path.len == 1); + ok(memcmp(req.input.path.base, H2O_STRLIT("/")) == 0); + ok(req.input.scheme == &H2O_URL_SCHEME_HTTP); + ok(req.headers.size == 0); + + h2o_mem_clear_pool(&req.pool); + + memset(&req, 0, sizeof(req)); + h2o_mem_init_pool(&req.pool); + in = second_req; + r = h2o_hpack_parse_headers(&req, &header_table, (const uint8_t *)in.base, in.len, &pseudo_headers_map, &content_length, NULL, + &err_desc); + ok(r == 0); + ok(req.input.authority.len == 15); + ok(memcmp(req.input.authority.base, H2O_STRLIT("www.example.com")) == 0); + ok(req.input.method.len == 3); + ok(memcmp(req.input.method.base, H2O_STRLIT("GET")) == 0); + ok(req.input.path.len == 1); + ok(memcmp(req.input.path.base, H2O_STRLIT("/")) == 0); + ok(req.input.scheme == &H2O_URL_SCHEME_HTTP); + ok(req.headers.size == 1); + ok(h2o_memis(req.headers.entries[0].name->base, req.headers.entries[0].name->len, H2O_STRLIT("cache-control"))); + ok(h2o_lcstris(req.headers.entries[0].value.base, req.headers.entries[0].value.len, H2O_STRLIT("no-cache"))); + + h2o_mem_clear_pool(&req.pool); + + memset(&req, 0, sizeof(req)); + h2o_mem_init_pool(&req.pool); + in = third_req; + r = h2o_hpack_parse_headers(&req, &header_table, (const uint8_t *)in.base, in.len, &pseudo_headers_map, &content_length, NULL, + &err_desc); + ok(r == 0); + ok(req.input.authority.len == 15); + ok(memcmp(req.input.authority.base, H2O_STRLIT("www.example.com")) == 0); + ok(req.input.method.len == 3); + ok(memcmp(req.input.method.base, H2O_STRLIT("GET")) == 0); + ok(req.input.path.len == 11); + ok(memcmp(req.input.path.base, H2O_STRLIT("/index.html")) == 0); + ok(req.input.scheme == &H2O_URL_SCHEME_HTTPS); + ok(req.headers.size == 1); + ok(h2o_memis(req.headers.entries[0].name->base, req.headers.entries[0].name->len, H2O_STRLIT("custom-key"))); + ok(h2o_lcstris(req.headers.entries[0].value.base, req.headers.entries[0].value.len, H2O_STRLIT("custom-value"))); + + h2o_hpack_dispose_header_table(&header_table); + h2o_mem_clear_pool(&req.pool); +} + +static void check_flatten(h2o_hpack_header_table_t *header_table, h2o_res_t *res, const char *expected, size_t expected_len) +{ + h2o_buffer_t *buf; + h2o_http2_frame_t frame; + const char *err_desc; + + h2o_buffer_init(&buf, &h2o_socket_buffer_prototype); + h2o_hpack_flatten_response(&buf, header_table, 1, H2O_HTTP2_SETTINGS_DEFAULT.max_frame_size, res, NULL, NULL, SIZE_MAX); + + ok(h2o_http2_decode_frame(&frame, (uint8_t *)buf->bytes, buf->size, &H2O_HTTP2_SETTINGS_DEFAULT, &err_desc) > 0); + ok(h2o_memis(frame.payload, frame.length, expected, expected_len)); + + h2o_buffer_dispose(&buf); +} + +static void test_hpack(void) +{ + h2o_mem_pool_t pool; + const char *err_desc; + + h2o_mem_init_pool(&pool); + + note("decode_int"); + { + h2o_iovec_t in; + const uint8_t *p; + int32_t out; +#define TEST(input, output) \ + in = h2o_iovec_init(H2O_STRLIT(input)); \ + p = (const uint8_t *)in.base; \ + out = decode_int(&p, p + in.len, 7); \ + ok(out == output); \ + ok(p == (const uint8_t *)in.base + in.len); + TEST("\x00", 0); + TEST("\x03", 3); + TEST("\x81", 1); + TEST("\x7f\x00", 127); + TEST("\x7f\x01", 128); + TEST("\x7f\x7f", 254); + TEST("\x7f\x81\x00", 128); + TEST("\x7f\x80\x01", 255); + TEST("\x7f\xff\xff\xff\x7f", 0xfffffff + 127); + /* failures */ + TEST("", -1); + TEST("\x7f", -1); + TEST("\x7f\xff", -1); + TEST("\x7f\xff\xff\xff\xff", -1); +#undef TEST + } + + note("encode_int"); + { + uint8_t buf[16]; + size_t len; +#define TEST(encoded, value) \ + memset(buf, 0, sizeof(buf)); \ + len = encode_int(buf, value, 7) - buf; \ + ok(len == sizeof(encoded) - 1); \ + ok(memcmp(buf, encoded, sizeof(encoded) - 1) == 0); + TEST("\x00", 0); + TEST("\x03", 3); + TEST("\x7e", 126); + TEST("\x7f\x00", 127); + TEST("\x7f\x01", 128); + TEST("\x7f\x7f", 254); + TEST("\x7f\x80\x01", 255); + TEST("\x7f\xff\xff\xff\x7f", 0xfffffff + 127); +#undef TEST + } + + note("decode_huffman"); + { + h2o_iovec_t huffcode = {H2O_STRLIT("\xf1\xe3\xc2\xe5\xf2\x3a\x6b\xa0\xab\x90\xf4\xff")}; + uint8_t flags = 0; + h2o_iovec_t *decoded = decode_huffman(&pool, (const uint8_t *)huffcode.base, huffcode.len, &flags); + ok(decoded->len == sizeof("www.example.com") - 1); + ok(strcmp(decoded->base, "www.example.com") == 0); + ok(flags == 0); + } + h2o_mem_clear_pool(&pool); + + note("decode_string_bogus"); + { + char *str = "\x8c\xf1\xe3\xc2\xe5\xf2\x3a\x6b\xa0\xab\x90\xf4\xff"; + const uint8_t *buf; + const char *errstr = NULL; + size_t len; + len = strlen(str); + buf = (const uint8_t *)str; + /* since we're only passing one byte, decode_string should fail */ + h2o_iovec_t *decoded = decode_string(&pool, &buf, &buf[1], 0, &errstr); + ok(decoded == NULL); + } + h2o_mem_clear_pool(&pool); + + note("decode_header (literal header field with indexing)"); + { + struct st_h2o_decode_header_result_t result; + h2o_hpack_header_table_t header_table; + h2o_iovec_t in; + int r; + + memset(&header_table, 0, sizeof(header_table)); + header_table.hpack_capacity = 4096; + in = h2o_iovec_init( + H2O_STRLIT("\x40\x0a\x63\x75\x73\x74\x6f\x6d\x2d\x6b\x65\x79\x0d\x63\x75\x73\x74\x6f\x6d\x2d\x68\x65\x61\x64\x65\x72")); + const uint8_t *p = (const uint8_t *)in.base; + err_desc = NULL; + r = decode_header(&pool, &result, &header_table, &p, p + in.len, &err_desc); + ok(r == 0); + ok(result.name->len == 10); + ok(strcmp(result.name->base, "custom-key") == 0); + ok(result.value->len == 13); + ok(strcmp(result.value->base, "custom-header") == 0); + ok(header_table.hpack_size == 55); + } + h2o_mem_clear_pool(&pool); + + note("decode_header (literal header field without indexing)"); + { + struct st_h2o_decode_header_result_t result; + h2o_hpack_header_table_t header_table; + h2o_iovec_t in; + int r; + + memset(&header_table, 0, sizeof(header_table)); + header_table.hpack_capacity = 4096; + in = h2o_iovec_init(H2O_STRLIT("\x04\x0c\x2f\x73\x61\x6d\x70\x6c\x65\x2f\x70\x61\x74\x68")); + const uint8_t *p = (const uint8_t *)in.base; + err_desc = NULL; + r = decode_header(&pool, &result, &header_table, &p, p + in.len, &err_desc); + ok(r == 0); + ok(result.name == &H2O_TOKEN_PATH->buf); + ok(result.value->len == 12); + ok(strcmp(result.value->base, "/sample/path") == 0); + ok(header_table.hpack_size == 0); + } + h2o_mem_clear_pool(&pool); + + note("decode_header (literal header field never indexed)"); + { + struct st_h2o_decode_header_result_t result; + h2o_hpack_header_table_t header_table; + h2o_iovec_t in; + int r; + + memset(&header_table, 0, sizeof(header_table)); + header_table.hpack_capacity = 4096; + in = h2o_iovec_init(H2O_STRLIT("\x10\x08\x70\x61\x73\x73\x77\x6f\x72\x64\x06\x73\x65\x63\x72\x65\x74")); + const uint8_t *p = (const uint8_t *)in.base; + err_desc = NULL; + r = decode_header(&pool, &result, &header_table, &p, p + in.len, &err_desc); + ok(r == 0); + ok(result.name->len == 8); + ok(strcmp(result.name->base, "password") == 0); + ok(result.value->len == 6); + ok(strcmp(result.value->base, "secret") == 0); + ok(header_table.hpack_size == 0); + } + h2o_mem_clear_pool(&pool); + + note("decode_header (indexed header field)"); + { + struct st_h2o_decode_header_result_t result; + h2o_hpack_header_table_t header_table; + h2o_iovec_t in; + int r; + + memset(&header_table, 0, sizeof(header_table)); + header_table.hpack_capacity = 4096; + in = h2o_iovec_init(H2O_STRLIT("\x82")); + const uint8_t *p = (const uint8_t *)in.base; + err_desc = NULL; + r = decode_header(&pool, &result, &header_table, &p, p + in.len, &err_desc); + ok(r == 0); + ok(result.name == &H2O_TOKEN_METHOD->buf); + ok(result.value->len == 3); + ok(strcmp(result.value->base, "GET") == 0); + ok(header_table.hpack_size == 0); + } + h2o_mem_clear_pool(&pool); + + note("request examples without huffman coding"); + test_request(h2o_iovec_init(H2O_STRLIT("\x82\x86\x84\x41\x0f\x77\x77\x77\x2e\x65\x78\x61\x6d\x70\x6c\x65\x2e\x63\x6f\x6d")), + h2o_iovec_init(H2O_STRLIT("\x82\x86\x84\xbe\x58\x08\x6e\x6f\x2d\x63\x61\x63\x68\x65")), + h2o_iovec_init(H2O_STRLIT("\x82\x87\x85\xbf\x40\x0a\x63\x75\x73\x74\x6f\x6d\x2d\x6b\x65\x79\x0c\x63\x75\x73\x74" + "\x6f\x6d\x2d\x76\x61\x6c\x75\x65"))); + + note("request examples with huffman coding"); + test_request(h2o_iovec_init(H2O_STRLIT("\x82\x86\x84\x41\x8c\xf1\xe3\xc2\xe5\xf2\x3a\x6b\xa0\xab\x90\xf4\xff")), + h2o_iovec_init(H2O_STRLIT("\x82\x86\x84\xbe\x58\x86\xa8\xeb\x10\x64\x9c\xbf")), + h2o_iovec_init(H2O_STRLIT( + "\x82\x87\x85\xbf\x40\x88\x25\xa8\x49\xe9\x5b\xa9\x7d\x7f\x89\x25\xa8\x49\xe9\x5b\xb8\xe8\xb4\xbf"))); + + note("encode_huffman"); + { + h2o_iovec_t huffcode = {H2O_STRLIT("\xf1\xe3\xc2\xe5\xf2\x3a\x6b\xa0\xab\x90\xf4\xff")}; + char buf[sizeof("www.example.com")]; + size_t l = encode_huffman((uint8_t *)buf, (uint8_t *)H2O_STRLIT("www.example.com")); + ok(l == huffcode.len); + ok(memcmp(buf, huffcode.base, huffcode.len) == 0); + } + + note("response examples with huffmann coding"); + { + h2o_hpack_header_table_t header_table; + h2o_res_t res; + + memset(&header_table, 0, sizeof(header_table)); + header_table.hpack_capacity = 256; + + memset(&res, 0, sizeof(res)); + res.status = 302; + res.reason = "Found"; + h2o_add_header(&pool, &res.headers, H2O_TOKEN_CACHE_CONTROL, NULL, H2O_STRLIT("private")); + h2o_add_header(&pool, &res.headers, H2O_TOKEN_DATE, NULL, H2O_STRLIT("Mon, 21 Oct 2013 20:13:21 GMT")); + h2o_add_header(&pool, &res.headers, H2O_TOKEN_LOCATION, NULL, H2O_STRLIT("https://www.example.com")); + check_flatten(&header_table, &res, H2O_STRLIT("\x08\x03\x33\x30\x32\x58\x85\xae\xc3\x77\x1a\x4b\x61\x96\xd0\x7a\xbe\x94\x10" + "\x54\xd4\x44\xa8\x20\x05\x95\x04\x0b\x81\x66\xe0\x82\xa6\x2d\x1b\xff\x6e\x91" + "\x9d\x29\xad\x17\x18\x63\xc7\x8f\x0b\x97\xc8\xe9\xae\x82\xae\x43\xd3")); + + memset(&res, 0, sizeof(res)); + res.status = 307; + res.reason = "Temporary Redirect"; + h2o_add_header(&pool, &res.headers, H2O_TOKEN_CACHE_CONTROL, NULL, H2O_STRLIT("private")); + h2o_add_header(&pool, &res.headers, H2O_TOKEN_DATE, NULL, H2O_STRLIT("Mon, 21 Oct 2013 20:13:21 GMT")); + h2o_add_header(&pool, &res.headers, H2O_TOKEN_LOCATION, NULL, H2O_STRLIT("https://www.example.com")); + check_flatten(&header_table, &res, H2O_STRLIT("\x08\x03\x33\x30\x37\xc0\xbf\xbe")); +#if 0 + h2o_iovec_init(H2O_STRLIT("\x48\x03\x33\x30\x37\xc1\xc0\xbf")), + h2o_iovec_init(H2O_STRLIT("\x88\xc1\x61\x1d\x4d\x6f\x6e\x2c\x20\x32\x31\x20\x4f\x63\x74\x20\x32\x30\x31\x33\x20\x32\x30\x3a\x31\x33\x3a\x32\x32\x20\x47\x4d\x54\xc0\x5a\x04\x67\x7a\x69\x70\x77\x38\x66\x6f\x6f\x3d\x41\x53\x44\x4a\x4b\x48\x51\x4b\x42\x5a\x58\x4f\x51\x57\x45\x4f\x50\x49\x55\x41\x58\x51\x57\x45\x4f\x49\x55\x3b\x20\x6d\x61\x78\x2d\x61\x67\x65\x3d\x33\x36\x30\x30\x3b\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x31"))); +#endif + } + + h2o_mem_clear_pool(&pool); +} + +static void parse_and_compare_request(h2o_hpack_header_table_t *ht, const char *promise_base, size_t promise_len, + h2o_iovec_t expected_method, const h2o_url_scheme_t *expected_scheme, + h2o_iovec_t expected_authority, h2o_iovec_t expected_path, ...) +{ + h2o_req_t req = {NULL}; + h2o_mem_init_pool(&req.pool); + + int pseudo_header_exists_map = 0; + size_t content_length = SIZE_MAX; + const char *err_desc = NULL; + int r = h2o_hpack_parse_headers(&req, ht, (void *)(promise_base + 13), promise_len - 13, &pseudo_header_exists_map, + &content_length, NULL, &err_desc); + ok(r == 0); + ok(h2o_memis(req.input.method.base, req.input.method.len, expected_method.base, expected_method.len)); + ok(req.input.scheme == expected_scheme); + ok(h2o_memis(req.input.authority.base, req.input.authority.len, expected_authority.base, expected_authority.len)); + ok(h2o_memis(req.input.path.base, req.input.path.len, expected_path.base, expected_path.len)); + + va_list args; + va_start(args, expected_path); + size_t i; + for (i = 0; i != req.headers.size; ++i) { + h2o_iovec_t expected_name = va_arg(args, h2o_iovec_t); + if (expected_name.base == NULL) + break; + h2o_iovec_t expected_value = va_arg(args, h2o_iovec_t); + ok(h2o_memis(req.headers.entries[i].name->base, req.headers.entries[i].name->len, expected_name.base, expected_name.len)); + ok(h2o_memis(req.headers.entries[i].value.base, req.headers.entries[i].value.len, expected_value.base, expected_value.len)); + } + ok(i == req.headers.size); + va_end(args); + + h2o_mem_clear_pool(&req.pool); +} + +static void test_hpack_push(void) +{ + const static h2o_iovec_t method = {H2O_STRLIT("GET")}, authority = {H2O_STRLIT("example.com")}, + user_agent = {H2O_STRLIT( + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:40.0) Gecko/20100101 Firefox/40.0")}, + accept_root = {H2O_STRLIT("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")}, + accept_images = {H2O_STRLIT("image/png,image/*;q=0.8,*/*;q=0.5")}, + accept_language = {H2O_STRLIT("ja,en-US;q=0.7,en;q=0.3")}, + accept_encoding = {H2O_STRLIT("gzip, deflate")}, referer = {H2O_STRLIT("https://example.com/")}; + + h2o_hpack_header_table_t encode_table = {NULL}, decode_table = {NULL}; + encode_table.hpack_capacity = decode_table.hpack_capacity = 4096; + h2o_req_t req = {NULL}; + h2o_mem_init_pool(&req.pool); + h2o_buffer_t *buf; + h2o_buffer_init(&buf, &h2o_socket_buffer_prototype); + + /* setup first request */ + req.input.method = method; + req.input.scheme = &H2O_URL_SCHEME_HTTPS; + req.input.authority = authority; + req.input.path = h2o_iovec_init(H2O_STRLIT("/")); + h2o_add_header(&req.pool, &req.headers, H2O_TOKEN_USER_AGENT, NULL, user_agent.base, user_agent.len); + h2o_add_header(&req.pool, &req.headers, H2O_TOKEN_ACCEPT, NULL, accept_root.base, accept_root.len); + h2o_add_header(&req.pool, &req.headers, H2O_TOKEN_ACCEPT_LANGUAGE, NULL, accept_language.base, accept_language.len); + h2o_add_header(&req.pool, &req.headers, H2O_TOKEN_ACCEPT_ENCODING, NULL, accept_encoding.base, accept_encoding.len); + + /* serialize, deserialize, and compare */ + h2o_hpack_flatten_request(&buf, &encode_table, 0, 16384, &req, 0); + parse_and_compare_request(&decode_table, buf->bytes, buf->size, method, &H2O_URL_SCHEME_HTTPS, authority, + h2o_iovec_init(H2O_STRLIT("/")), H2O_TOKEN_USER_AGENT->buf, user_agent, H2O_TOKEN_ACCEPT->buf, + accept_root, H2O_TOKEN_ACCEPT_LANGUAGE->buf, accept_language, H2O_TOKEN_ACCEPT_ENCODING->buf, + accept_encoding, (h2o_iovec_t){NULL}); + h2o_buffer_consume(&buf, buf->size); + + /* setup second request */ + req.input.path = h2o_iovec_init(H2O_STRLIT("/banner.jpg")); + req.headers = (h2o_headers_t){NULL}; + h2o_add_header(&req.pool, &req.headers, H2O_TOKEN_USER_AGENT, NULL, user_agent.base, user_agent.len); + h2o_add_header(&req.pool, &req.headers, H2O_TOKEN_ACCEPT, NULL, accept_images.base, accept_images.len); + h2o_add_header(&req.pool, &req.headers, H2O_TOKEN_ACCEPT_LANGUAGE, NULL, accept_language.base, accept_language.len); + h2o_add_header(&req.pool, &req.headers, H2O_TOKEN_ACCEPT_ENCODING, NULL, accept_encoding.base, accept_encoding.len); + h2o_add_header(&req.pool, &req.headers, H2O_TOKEN_REFERER, NULL, referer.base, referer.len); + + /* serialize, deserialize, and compare */ + h2o_hpack_flatten_request(&buf, &encode_table, 0, 16384, &req, 0); + parse_and_compare_request( + &decode_table, buf->bytes, buf->size, method, &H2O_URL_SCHEME_HTTPS, authority, h2o_iovec_init(H2O_STRLIT("/banner.jpg")), + H2O_TOKEN_USER_AGENT->buf, user_agent, H2O_TOKEN_ACCEPT->buf, accept_images, H2O_TOKEN_ACCEPT_LANGUAGE->buf, + accept_language, H2O_TOKEN_ACCEPT_ENCODING->buf, accept_encoding, H2O_TOKEN_REFERER->buf, referer, (h2o_iovec_t){NULL}); + h2o_buffer_consume(&buf, buf->size); + + /* setup third request (headers are the same) */ + req.input.path = h2o_iovec_init(H2O_STRLIT("/icon.png")); + + /* serialize, deserialize, and compare */ + h2o_hpack_flatten_request(&buf, &encode_table, 0, 16384, &req, 0); + parse_and_compare_request(&decode_table, buf->bytes, buf->size, method, &H2O_URL_SCHEME_HTTPS, authority, + h2o_iovec_init(H2O_STRLIT("/icon.png")), H2O_TOKEN_USER_AGENT->buf, user_agent, H2O_TOKEN_ACCEPT->buf, + accept_images, H2O_TOKEN_ACCEPT_LANGUAGE->buf, accept_language, H2O_TOKEN_ACCEPT_ENCODING->buf, + accept_encoding, H2O_TOKEN_REFERER->buf, referer, (h2o_iovec_t){NULL}); + h2o_buffer_consume(&buf, buf->size); + + h2o_buffer_dispose(&buf); + h2o_mem_clear_pool(&req.pool); +} + +static void test_hpack_dynamic_table(void) +{ + h2o_hpack_header_table_t header_table; + uint8_t encoded[256], *p; + h2o_iovec_t n, v; + + memset(&header_table, 0, sizeof(header_table)); + header_table.hpack_capacity = 4096; + + p = encoded; + /* expected: literal header with incremental indexing (name not indexed) */ + n = h2o_iovec_init(H2O_STRLIT("x-name")); + v = h2o_iovec_init(H2O_STRLIT("v1")); + p = encode_header(&header_table, p, &n, &v); + /* expected: literal header with incremental indexing (name indexed) */ + v = h2o_iovec_init(H2O_STRLIT("v2")); + p = encode_header(&header_table, p, &n, &v); + /* expected: literal header with incremental indexing (name indexed, referring to the name associated with v2) */ + v = h2o_iovec_init(H2O_STRLIT("v3")); + p = encode_header(&header_table, p, &n, &v); + /* expected: indexed header field */ + v = h2o_iovec_init(H2O_STRLIT("v1")); + p = encode_header(&header_table, p, &n, &v); + + const h2o_iovec_t expected = h2o_iovec_init( + H2O_STRLIT("\x40\x85" /* literal header with incremental indexing (name not indexed, 5 bytes, huffman coded) */ + "\xf2\xb5\x43\xa4\xbf" /* "x-name" */ + "\x02" /* value not compressed, 2 bytes */ + "v1" /* "v1" */ + "\x7e" /* literal header with incremental indexing (name indexed) */ + "\x02" /* value not compressed, 2 bytes */ + "v2" /* "v2" */ + "\x7e" /* literal header with incremental indexing (name indexed, referring to the last entry) */ + "\x02" /* value not compressed, 2 bytes */ + "v3" /* "v3" */ + "\xc0" /* indexed header field */ + )); + ok(p - encoded == expected.len); + ok(memcmp(encoded, expected.base, expected.len) == 0); +} + +void test_token_wo_hpack_id(void) +{ + h2o_mem_pool_t pool; + h2o_mem_init_pool(&pool); + h2o_hpack_header_table_t table = {NULL}; + table.hpack_capacity = 4096; + h2o_res_t res = {0}; + h2o_buffer_t *buf; + h2o_buffer_init(&buf, &h2o_socket_buffer_prototype); + + res.status = 200; + res.reason = "OK"; + h2o_add_header(&pool, &res.headers, H2O_TOKEN_TE, NULL, H2O_STRLIT("test")); + + h2o_hpack_flatten_response(&buf, &table, 1, H2O_HTTP2_SETTINGS_DEFAULT.max_frame_size, &res, NULL, NULL, SIZE_MAX); + ok(h2o_memis(buf->bytes + 9, buf->size - 9, H2O_STRLIT("\x88" /* :status:200 */ + "\x40\x02" /* literal header w. incremental indexing, raw, TE */ + "te" + "\x83" /* header value, huffman */ + "IP\x9f" /* test */))); + h2o_buffer_consume(&buf, buf->size); + h2o_hpack_flatten_response(&buf, &table, 1, H2O_HTTP2_SETTINGS_DEFAULT.max_frame_size, &res, NULL, NULL, SIZE_MAX); + ok(h2o_memis(buf->bytes + 9, buf->size - 9, H2O_STRLIT("\x88" /* :status:200 */ + "\xbe" /* te: test, indexed */))); + + h2o_buffer_dispose(&buf); + h2o_hpack_dispose_header_table(&table); + h2o_mem_clear_pool(&pool); +} + +void test_lib__http2__hpack(void) +{ + subtest("hpack", test_hpack); + subtest("hpack-push", test_hpack_push); + subtest("hpack-dynamic-table", test_hpack_dynamic_table); + subtest("token-wo-hpack-id", test_token_wo_hpack_id); +} diff --git a/src/web/server/h2o/libh2o/t/00unit/lib/http2/scheduler.c b/src/web/server/h2o/libh2o/t/00unit/lib/http2/scheduler.c new file mode 100644 index 000000000..d643cbf4c --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/lib/http2/scheduler.c @@ -0,0 +1,563 @@ +/* + * Copyright (c) 2015 DeNA Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include +#include "../../test.h" +#include "../../../../lib/http2/scheduler.c" + +static void test_queue(void) +{ + h2o_http2_scheduler_queue_t drr; + struct node_t { + h2o_http2_scheduler_queue_node_t super; + uint16_t weight; + size_t cnt; + } w256 = {{{NULL}}, 256}, w128 = {{{NULL}}, 128}, w32 = {{{NULL}}, 32}, w1 = {{{NULL}}, 1}; + size_t i; + + queue_init(&drr); + queue_set(&drr, &w256.super, 256); + queue_set(&drr, &w128.super, 128); + queue_set(&drr, &w32.super, 32); + queue_set(&drr, &w1.super, 1); + + for (i = 0; i != (256 + 128 + 32 + 1) * 100; ++i) { + struct node_t *popped = (struct node_t *)queue_pop(&drr); + if (popped == NULL) { + ok(0); + return; + } + ++popped->cnt; + queue_set(&drr, &popped->super, popped->weight); + } + + ok(w256.cnt == 25600); + ok(w128.cnt == 12800); + ok(w32.cnt == 3200); + ok(w1.cnt == 100); +} + +typedef struct { + h2o_http2_scheduler_openref_t ref; + const char *name; + int still_is_active; + int bail_out; +} node_t; + +static char output[1024]; +static size_t max_cnt; + +static int iterate_cb(h2o_http2_scheduler_openref_t *ref, int *still_is_active, void *_unused) +{ + node_t *node = (void *)ref; + + if (output[0] != '\0') + strcat(output, ","); + strcat(output, node->name); + *still_is_active = node->still_is_active; + + if (--max_cnt == 0) + return 1; + return node->bail_out; +} + +static void test_round_robin(void) +{ + h2o_http2_scheduler_node_t root; + node_t nodeA = {{{NULL}}, "A", 1, 0}; + node_t nodeB = {{{NULL}}, "B", 1, 0}; + node_t nodeC = {{{NULL}}, "C", 1, 0}; + + h2o_http2_scheduler_init(&root); + h2o_http2_scheduler_open(&nodeA.ref, &root, 1, 0); + h2o_http2_scheduler_open(&nodeB.ref, &root, 1, 0); + h2o_http2_scheduler_open(&nodeC.ref, &root, 1, 0); + + /* none are active */ + output[0] = '\0'; + max_cnt = 4; + h2o_http2_scheduler_run(&root, iterate_cb, NULL); + ok(strcmp(output, "") == 0); + + /* set A to active */ + h2o_http2_scheduler_activate(&nodeA.ref); + output[0] = '\0'; + max_cnt = 4; + h2o_http2_scheduler_run(&root, iterate_cb, NULL); + ok(strcmp(output, "A,A,A,A") == 0); + + /* A should change to inactive */ + nodeA.still_is_active = 0; + output[0] = '\0'; + max_cnt = 4; + h2o_http2_scheduler_run(&root, iterate_cb, NULL); + ok(strcmp(output, "A") == 0); + + /* set all to active */ + h2o_http2_scheduler_activate(&nodeA.ref); + nodeA.still_is_active = 1; + h2o_http2_scheduler_activate(&nodeB.ref); + h2o_http2_scheduler_activate(&nodeC.ref); + output[0] = '\0'; + max_cnt = 7; + h2o_http2_scheduler_run(&root, iterate_cb, NULL); + ok(strcmp(output, "A,B,C,A,B,C,A") == 0); + + /* change them to inactive */ + nodeA.still_is_active = 0; + nodeB.still_is_active = 0; + nodeC.still_is_active = 0; + output[0] = '\0'; + max_cnt = 4; + h2o_http2_scheduler_run(&root, iterate_cb, NULL); + ok(strcmp(output, "B,C,A") == 0); + + /* close C */ + h2o_http2_scheduler_close(&nodeC.ref); + h2o_http2_scheduler_activate(&nodeA.ref); + h2o_http2_scheduler_activate(&nodeB.ref); + output[0] = '\0'; + max_cnt = 4; + h2o_http2_scheduler_run(&root, iterate_cb, NULL); + ok(strcmp(output, "A,B") == 0); + + h2o_http2_scheduler_close(&nodeA.ref); + h2o_http2_scheduler_close(&nodeB.ref); + h2o_http2_scheduler_dispose(&root); +} + +static void test_priority(void) +{ + h2o_http2_scheduler_node_t root; + node_t nodeA = {{{NULL}}, "A", 1, 0}; + node_t nodeB = {{{NULL}}, "B", 1, 0}; + node_t nodeC = {{{NULL}}, "C", 1, 0}; + + h2o_http2_scheduler_init(&root); + h2o_http2_scheduler_open(&nodeA.ref, &root, 32, 0); + h2o_http2_scheduler_activate(&nodeA.ref); + h2o_http2_scheduler_open(&nodeB.ref, &root, 32, 0); + h2o_http2_scheduler_activate(&nodeB.ref); + h2o_http2_scheduler_open(&nodeC.ref, &root, 12, 0); + h2o_http2_scheduler_activate(&nodeC.ref); + + /* should only get the higher ones */ + output[0] = '\0'; + max_cnt = 20; + h2o_http2_scheduler_run(&root, iterate_cb, NULL); + ok(strcmp(output, "A,B,A,B,C,A,B,A,B,A,B,C,A,B,A,B,C,A,B,A") == 0); + + /* eventually disactivate A */ + nodeA.still_is_active = 0; + output[0] = '\0'; + max_cnt = 10; + h2o_http2_scheduler_run(&root, iterate_cb, NULL); + ok(strcmp(output, "B,A,B,C,B,B,B,C,B,B") == 0); + + /* should start serving C as B gets disactivated */ + nodeB.still_is_active = 0; + output[0] = '\0'; + max_cnt = 10; + h2o_http2_scheduler_run(&root, iterate_cb, NULL); + ok(strcmp(output, "C,B,C,C,C,C,C,C,C,C") == 0); + + h2o_http2_scheduler_close(&nodeA.ref); + h2o_http2_scheduler_close(&nodeB.ref); + h2o_http2_scheduler_close(&nodeC.ref); + h2o_http2_scheduler_dispose(&root); +} + +static void test_dependency(void) +{ + h2o_http2_scheduler_node_t root; + node_t nodeA = {{{NULL}}, "A", 1, 0}; + node_t nodeB = {{{NULL}}, "B", 1, 0}; + node_t nodeC = {{{NULL}}, "C", 1, 0}; + node_t nodeD = {{{NULL}}, "D", 1, 0}; + + /* + * root + * /|\ + * A B C + * | + * D + */ + + h2o_http2_scheduler_init(&root); + h2o_http2_scheduler_open(&nodeA.ref, &root, 32, 0); + h2o_http2_scheduler_activate(&nodeA.ref); + h2o_http2_scheduler_open(&nodeB.ref, &root, 32, 0); + h2o_http2_scheduler_activate(&nodeB.ref); + h2o_http2_scheduler_open(&nodeC.ref, &root, 12, 0); + h2o_http2_scheduler_activate(&nodeC.ref); + h2o_http2_scheduler_open(&nodeD.ref, &nodeA.ref.node, 6, 0); + h2o_http2_scheduler_activate(&nodeD.ref); + + /* should get A and B (and some C) */ + output[0] = '\0'; + max_cnt = 20; + h2o_http2_scheduler_run(&root, iterate_cb, NULL); + ok(strcmp(output, "A,B,A,B,C,A,B,A,B,A,B,C,A,B,A,B,C,A,B,A") == 0); + + /* eventually disactivate A, should get D,B (and some C) */ + nodeA.still_is_active = 0; + output[0] = '\0'; + max_cnt = 20; + h2o_http2_scheduler_run(&root, iterate_cb, NULL); + ok(strcmp(output, "B,A,B,C,D,B,D,B,D,B,C,D,B,D,B,C,D,B,D,B") == 0); + + /* eventually disactivate B, should get D only (and some C) */ + nodeB.still_is_active = 0; + output[0] = '\0'; + max_cnt = 20; + h2o_http2_scheduler_run(&root, iterate_cb, NULL); + ok(strcmp(output, "D,B,C,D,D,D,C,D,D,C,D,D,D,C,D,D,C,D,D,D") == 0); + + /* closing A raises D, and the priority becomes D = B > C */ + h2o_http2_scheduler_close(&nodeA.ref); + h2o_http2_scheduler_activate(&nodeB.ref); + nodeB.still_is_active = 1; + output[0] = '\0'; + max_cnt = 20; + h2o_http2_scheduler_run(&root, iterate_cb, NULL); + ok(strcmp(output, "D,C,B,D,B,D,B,C,D,B,D,B,D,C,B,D,B,D,B,C") == 0); + + h2o_http2_scheduler_close(&nodeB.ref); + h2o_http2_scheduler_close(&nodeC.ref); + h2o_http2_scheduler_close(&nodeD.ref); + h2o_http2_scheduler_dispose(&root); +} + +static void test_exclusive(void) +{ + h2o_http2_scheduler_node_t scheduler; + node_t nodeA = {{{NULL}}, "A", 1, 0}; + node_t nodeB = {{{NULL}}, "B", 1, 0}; + node_t nodeC = {{{NULL}}, "C", 1, 0}; + + h2o_http2_scheduler_init(&scheduler); + + /* + * root root + * /\ | + * A B => C + * |\ + * A B + */ + + /* open A & B */ + h2o_http2_scheduler_open(&nodeA.ref, &scheduler, 32, 0); + h2o_http2_scheduler_activate(&nodeA.ref); + h2o_http2_scheduler_open(&nodeB.ref, &scheduler, 32, 0); + h2o_http2_scheduler_activate(&nodeB.ref); + + output[0] = '\0'; + max_cnt = 5; + h2o_http2_scheduler_run(&scheduler, iterate_cb, NULL); + ok(strcmp(output, "A,B,A,B,A") == 0); + + /* add C as an exclusive */ + h2o_http2_scheduler_open(&nodeC.ref, &scheduler, 12, 1); + + /* should get A & B since C is inactive */ + output[0] = '\0'; + max_cnt = 5; + h2o_http2_scheduler_run(&scheduler, iterate_cb, NULL); + ok(strcmp(output, "A,B,A,B,A") == 0); /* under current impl, moving the deps causes them to be ordered using _all_ref */ + + /* should see C once it is activated */ + h2o_http2_scheduler_activate(&nodeC.ref); + output[0] = '\0'; + max_cnt = 5; + h2o_http2_scheduler_run(&scheduler, iterate_cb, NULL); + ok(strcmp(output, "C,C,C,C,C") == 0); + + /* eventually disabling C should show A and B */ + nodeC.still_is_active = 0; + output[0] = '\0'; + max_cnt = 5; + h2o_http2_scheduler_run(&scheduler, iterate_cb, NULL); + ok(strcmp(output, "C,B,A,B,A") == 0); + + h2o_http2_scheduler_close(&nodeA.ref); + h2o_http2_scheduler_close(&nodeB.ref); + h2o_http2_scheduler_close(&nodeC.ref); + h2o_http2_scheduler_dispose(&scheduler); +} + +static void test_firefox(void) +{ + /* + * firefox sends something like below + * + * PRIORITY: id:3, dependency:0, weight: 201 + * PRIORITY: id:5, dependency:0, weight: 101 + * PRIORITY: id:7, dependency:0, weight: 1 + * PRIORITY: id:9, dependency:7, weight: 1 + * PRIORITY: id:11, dependency:3, weight: 1 + * HEADERS: id:13, dependency:11, weight: 22 + * HEADERS: id:15, dependency:3, weight: 22 + * HEADERS: id:17, dependency:3, weight: 22 + */ + h2o_http2_scheduler_node_t root; + node_t g1 = {{{NULL}}, "g1", 0, 0}; + node_t g2 = {{{NULL}}, "g2", 0, 0}; + node_t g3 = {{{NULL}}, "g3", 0, 0}; + node_t g4 = {{{NULL}}, "g4", 0, 0}; + node_t g5 = {{{NULL}}, "g5", 0, 0}; + node_t r1 = {{{NULL}}, "r1", 1, 0}; + node_t r2 = {{{NULL}}, "r2", 1, 0}; + node_t r3 = {{{NULL}}, "r3", 1, 0}; + + h2o_http2_scheduler_init(&root); + + /* setup the proirity groups */ + h2o_http2_scheduler_open(&g1.ref, &root, 201, 0); + h2o_http2_scheduler_open(&g2.ref, &root, 101, 0); + h2o_http2_scheduler_open(&g3.ref, &root, 1, 0); + h2o_http2_scheduler_open(&g4.ref, &g3.ref.node, 1, 0); + h2o_http2_scheduler_open(&g5.ref, &g1.ref.node, 1, 0); + + /* open r1 and set serving */ + h2o_http2_scheduler_open(&r1.ref, &g5.ref.node, 22, 0); + h2o_http2_scheduler_activate(&r1.ref); + output[0] = '\0'; + max_cnt = 5; + h2o_http2_scheduler_run(&root, iterate_cb, NULL); + ok(strcmp(output, "r1,r1,r1,r1,r1") == 0); + + /* open r2,r3 and serve */ + h2o_http2_scheduler_open(&r2.ref, &g1.ref.node, 22, 0); + h2o_http2_scheduler_activate(&r2.ref); + h2o_http2_scheduler_open(&r3.ref, &g1.ref.node, 22, 0); + h2o_http2_scheduler_activate(&r3.ref); + output[0] = '\0'; + max_cnt = 5; + h2o_http2_scheduler_run(&root, iterate_cb, NULL); + ok(strcmp(output, "r2,r3,r2,r3,r2") == 0); + + /* eventually disactive r2,r3 */ + r2.still_is_active = 0; + r3.still_is_active = 0; + output[0] = '\0'; + max_cnt = 5; + h2o_http2_scheduler_run(&root, iterate_cb, NULL); + ok(strcmp(output, "r3,r2,r1,r1,r1") == 0); + + /* close r2,r3 */ + h2o_http2_scheduler_close(&r2.ref); + h2o_http2_scheduler_close(&r3.ref); + output[0] = '\0'; + max_cnt = 5; + h2o_http2_scheduler_run(&root, iterate_cb, NULL); + ok(strcmp(output, "r1,r1,r1,r1,r1") == 0); + + h2o_http2_scheduler_close(&r1.ref); + + h2o_http2_scheduler_close(&g1.ref); + h2o_http2_scheduler_close(&g2.ref); + h2o_http2_scheduler_close(&g3.ref); + h2o_http2_scheduler_close(&g4.ref); + h2o_http2_scheduler_close(&g5.ref); + h2o_http2_scheduler_dispose(&root); +} + +static void dump_tree(h2o_http2_scheduler_node_t *node) +{ + if (node->_parent != NULL) { + node_t *n = (void *)node; + strcat(output, n->name); + sprintf(output + strlen(output), "%u", (unsigned)h2o_http2_scheduler_get_weight(&n->ref)); + } + + if (!h2o_linklist_is_empty(&node->_all_refs)) { + unsigned weight; + int found_any = 0; + for (weight = 256; weight >= 1; --weight) { + h2o_linklist_t *link; + for (link = node->_all_refs.next; link != &node->_all_refs; link = link->next) { + h2o_http2_scheduler_openref_t *ref = H2O_STRUCT_FROM_MEMBER(h2o_http2_scheduler_openref_t, _all_link, link); + if (ref->weight == weight) { + if (!found_any) { + found_any = 1; + strcat(output, "("); + } + dump_tree(&ref->node); + } + } + } + if (found_any) + strcat(output, ")"); + } +} + +static int test_reprioritize_exclusive; + +static void test_reprioritize(void) +{ + /* from 5.3.3 of HTTP-2 draft 16 + * ? ? ? ? + * | / \ | | + * A D A D D + * / \ / / \ / \ | + * B C ==> F B C ==> F A OR A + * / \ | / \ /|\ + * D E E B C B C F + * | | | + * F E E + * (intermediate) (non-exclusive) (exclusive) + */ + h2o_http2_scheduler_node_t root; + node_t a = {{{NULL}}, "A"}; + node_t b = {{{NULL}}, "B"}; + node_t c = {{{NULL}}, "C"}; + node_t d = {{{NULL}}, "D"}; + node_t e = {{{NULL}}, "E"}; + node_t f = {{{NULL}}, "F"}; + + h2o_http2_scheduler_init(&root); + h2o_http2_scheduler_open(&a.ref, &root, 6, 0); + h2o_http2_scheduler_open(&b.ref, &a.ref.node, 5, 0); + h2o_http2_scheduler_open(&c.ref, &a.ref.node, 4, 0); + h2o_http2_scheduler_open(&d.ref, &c.ref.node, 3, 0); + h2o_http2_scheduler_open(&e.ref, &c.ref.node, 2, 0); + h2o_http2_scheduler_open(&f.ref, &d.ref.node, 1, 0); + + output[0] = '\0'; + dump_tree(&root); + ok(strcmp(output, "(A6(B5C4(D3(F1)E2)))") == 0); + + h2o_http2_scheduler_rebind(&a.ref, &d.ref.node, 1, test_reprioritize_exclusive); + output[0] = '\0'; + dump_tree(&root); + if (!test_reprioritize_exclusive) { + ok(strcmp(output, "(D3(F1A1(B5C4(E2))))") == 0); + } else { + ok(strcmp(output, "(D3(A1(B5C4(E2)F1)))") == 0); + } + + h2o_http2_scheduler_close(&a.ref); + h2o_http2_scheduler_close(&b.ref); + h2o_http2_scheduler_close(&c.ref); + h2o_http2_scheduler_close(&d.ref); + h2o_http2_scheduler_close(&e.ref); + h2o_http2_scheduler_close(&f.ref); + h2o_http2_scheduler_dispose(&root); +} + +static void test_change_weight(void) +{ + h2o_http2_scheduler_node_t root; + node_t nodeA = {{{NULL}}, "A", 1, 0}; + node_t nodeB = {{{NULL}}, "B", 1, 0}; + node_t nodeC = {{{NULL}}, "C", 1, 0}; + + h2o_http2_scheduler_init(&root); + + /* open them all with priority=16 */ + h2o_http2_scheduler_open(&nodeA.ref, &root, 16, 0); + h2o_http2_scheduler_activate(&nodeA.ref); + h2o_http2_scheduler_open(&nodeB.ref, &root, 16, 0); + h2o_http2_scheduler_activate(&nodeB.ref); + h2o_http2_scheduler_open(&nodeC.ref, &root, 16, 0); + h2o_http2_scheduler_activate(&nodeC.ref); + output[0] = '\0'; + dump_tree(&root); + ok(strcmp(output, "(A16B16C16)") == 0); + + /* check the output */ + output[0] = '\0'; + max_cnt = 20; + h2o_http2_scheduler_run(&root, iterate_cb, NULL); + ok(strcmp(output, "A,B,C,A,B,C,A,B,C,A,B,C,A,B,C,A,B,C,A,B") == 0); + + /* nodeA.priority = 4 */ + h2o_http2_scheduler_rebind(&nodeA.ref, &root, 4, 0); + output[0] = '\0'; + dump_tree(&root); + ok(strcmp(output, "(B16C16A4)") == 0); + output[0] = '\0'; + max_cnt = 20; + h2o_http2_scheduler_run(&root, iterate_cb, NULL); + ok(strcmp(output, "C,B,C,B,C,B,C,A,B,C,B,C,B,C,B,C,A,B,C,B") == 0); + + /* eventually disactivate B,C */ + nodeB.still_is_active = 0; + nodeC.still_is_active = 0; + output[0] = '\0'; + max_cnt = 10; + h2o_http2_scheduler_run(&root, iterate_cb, NULL); + ok(strcmp(output, "C,B,A,A,A,A,A,A,A,A") == 0); + + h2o_http2_scheduler_close(&nodeA.ref); + h2o_http2_scheduler_close(&nodeB.ref); + h2o_http2_scheduler_close(&nodeC.ref); + h2o_http2_scheduler_dispose(&root); +} + +static void test_exclusive_at_current_pos(void) +{ + h2o_http2_scheduler_node_t root; + node_t nodeA = {{{NULL}}, "A", 1, 0}; + node_t nodeB = {{{NULL}}, "B", 1, 0}; + node_t nodeC = {{{NULL}}, "C", 1, 0}; + + h2o_http2_scheduler_init(&root); + + /* open them all with priority=16 */ + h2o_http2_scheduler_open(&nodeA.ref, &root, 16, 0); + h2o_http2_scheduler_activate(&nodeA.ref); + h2o_http2_scheduler_open(&nodeB.ref, &root, 16, 0); + h2o_http2_scheduler_activate(&nodeB.ref); + h2o_http2_scheduler_open(&nodeC.ref, &root, 16, 0); + h2o_http2_scheduler_activate(&nodeC.ref); + + output[0] = '\0'; + dump_tree(&root); + ok(strcmp(output, "(A16B16C16)") == 0); + + h2o_http2_scheduler_rebind(&nodeB.ref, &root, 1, 1); + + output[0] = '\0'; + dump_tree(&root); + ok(strcmp(output, "(B1(A16C16))") == 0); + + h2o_http2_scheduler_close(&nodeA.ref); + h2o_http2_scheduler_close(&nodeB.ref); + h2o_http2_scheduler_close(&nodeC.ref); + h2o_http2_scheduler_dispose(&root); +} + +void test_lib__http2__scheduler(void) +{ + subtest("drr", test_queue); + subtest("round-robin", test_round_robin); + subtest("priority", test_priority); + subtest("dependency", test_dependency); + subtest("exclusive", test_exclusive); + subtest("firefox", test_firefox); + test_reprioritize_exclusive = 0; + subtest("repriortize-nonexclusive", test_reprioritize); + test_reprioritize_exclusive = 1; + subtest("repriortize-exclusive", test_reprioritize); + subtest("change-weight", test_change_weight); + subtest("exclusive-at-current-pos", test_exclusive_at_current_pos); +} diff --git a/src/web/server/h2o/libh2o/t/00unit/src/ssl.c b/src/web/server/h2o/libh2o/t/00unit/src/ssl.c new file mode 100644 index 000000000..10fb27375 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/src/ssl.c @@ -0,0 +1,202 @@ +/* + * Copyright (c) 2015 DeNA Co., Ltd., Kazuho Oku + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include "../test.h" +#include "../../../src/ssl.c" + +const uint64_t UTC2000 = (365 * 30 + 7) * 86400; + +static void test_load_tickets_file(void) +{ + int ret = load_tickets_file("t/assets/session_tickets.yaml"); + ok(ret == 0); + if (ret != 0) + return; + + pthread_rwlock_rdlock(&session_tickets.rwlock); + ok(session_tickets.tickets.size == 2); + if (session_tickets.tickets.size != 2) + goto Exit; + + /* first entry should be the newer one */ + struct st_session_ticket_t *ticket = session_tickets.tickets.entries[0]; + ok(memcmp(ticket->name, H2O_STRLIT("\xe7\xe3\xc6\x98\x0b\x18\x32\xbd\x5d\x23\x91\x75\x72\xe8\x44\x8f")) == 0); + ok(ticket->cipher.cipher == EVP_aes_256_cbc()); + ok(memcmp(ticket->cipher.key, H2O_STRLIT("\xf6\xe0\x71\xd9\x93\xb0\x5f\x77\xce\x51\xcb\x0f\xe2\xe0\xe1\x8c\x72\x00\xc2\xa7" + "\x87\x3a\x66\x00\x8c\x8e\x1d\x75\xae\x7b\x8e\x2a")) == 0); + ok(ticket->hmac.md == EVP_sha256()); + ok(memcmp(ticket->hmac.key, + H2O_STRLIT("\xf4\xfc\xb8\x6f\xdf\x03\xa7\xf3\x35\x63\x2e\x66\x8a\x8f\xe9\x56\xc5\xbf\xe7\x7a\x41\x41\x2d\x26\x99" + "\x79\x63\x47\x68\x99\x9a\xdd\x6a\x84\xca\xfe\xa4\x1b\x6b\x2c\x47\xaa\xf1\xa5\x14\xca\x9d\x2a\x84\xf4" + "\x8d\x1f\x5f\x70\x18\xff\x17\x40\xcf\x9b\x94\x4b\x8f\xcf")) == 0); + ok(ticket->not_before == 1437093330); + ok(ticket->not_after == 1437096929); + + /* second is the older one */ + ticket = session_tickets.tickets.entries[1]; + ok(memcmp(ticket->name, H2O_STRLIT("\xa3\x97\xb6\xb7\xfa\xb9\x29\x36\x62\x03\xf1\x6f\xc8\x1f\xfb\xed")) == 0); + ok(ticket->cipher.cipher == EVP_aes_128_cbc()); + ok(memcmp(ticket->cipher.key, H2O_STRLIT("\xf1\xed\x89\xcd\xe6\x87\x63\x63\x0e\x80\xd2\xbe\x82\x7c\xfb\x98")) == 0); + ok(ticket->hmac.md == EVP_sha1()); + ok(memcmp(ticket->hmac.key, + H2O_STRLIT("\xe3\xfe\x72\x64\x4f\x64\x31\x5a\x4a\x8a\xd6\x37\x69\xa3\x57\x7c\xce\xc4\xdd\x13\xb2\x0e\xaf\x8c\x00\x88" + "\x86\xe5\x45\x8d\xb1\x0e\x65\x8c\xf2\xa8\x3f\x04\x40\x3a\xc4\xe9\x80\x35\xd2\x42\x2a\x75\x80\x67\x30\xeb" + "\x4f\x2f\xee\x12\xfa\xff\x95\x48\x95\xbc\x65\xd1")) == 0); + ok(ticket->not_before == 1437092430); + ok(ticket->not_after == 1437096029); + + ticket = find_ticket_for_encryption(&session_tickets.tickets, 1437092429); + ok(ticket == NULL); + ticket = find_ticket_for_encryption(&session_tickets.tickets, 1437092430); + ok(ticket == session_tickets.tickets.entries[1]); + ticket = find_ticket_for_encryption(&session_tickets.tickets, 1437093329); + ok(ticket == session_tickets.tickets.entries[1]); + ticket = find_ticket_for_encryption(&session_tickets.tickets, 1437093330); + ok(ticket == session_tickets.tickets.entries[0]); + ticket = find_ticket_for_encryption(&session_tickets.tickets, 1437096029); + ok(ticket == session_tickets.tickets.entries[0]); + ticket = find_ticket_for_encryption(&session_tickets.tickets, 1437096030); + ok(ticket == session_tickets.tickets.entries[0]); + ticket = find_ticket_for_encryption(&session_tickets.tickets, 1437096929); + ok(ticket == session_tickets.tickets.entries[0]); + ticket = find_ticket_for_encryption(&session_tickets.tickets, 1437096930); + ok(ticket == NULL); + +Exit: + pthread_rwlock_unlock(&session_tickets.rwlock); + ; +} + +static void test_serialize_tickets(void) +{ + session_ticket_vector_t orig = {NULL}, parsed = {NULL}; + h2o_iovec_t serialized; + char errstr[256]; + int ret; + size_t i; + + h2o_vector_reserve(NULL, &orig, orig.size + 2); + orig.entries[orig.size++] = new_ticket(EVP_aes_256_cbc(), EVP_sha256(), UTC2000, UTC2000 + 3600, 1); + orig.entries[orig.size++] = new_ticket(EVP_aes_256_cbc(), EVP_sha256(), UTC2000 + 600, UTC2000 + 4200, 1); + + serialized = serialize_tickets(&orig); + ok(serialized.base != NULL); + + ret = parse_tickets(&parsed, serialized.base, serialized.len, errstr); + ok(ret == 0); + + ok(parsed.size == orig.size); + for (i = 0; i != parsed.size; ++i) { +#define OK_VALUE(n) ok(parsed.entries[i]->n == orig.entries[i]->n) +#define OK_MEMCMP(n, s) ok(memcmp(parsed.entries[i]->n, orig.entries[i]->n, (s)) == 0) + OK_MEMCMP(name, sizeof(parsed.entries[i]->name)); + OK_VALUE(cipher.cipher); + OK_MEMCMP(cipher.key, EVP_CIPHER_key_length(parsed.entries[i]->cipher.cipher)); + OK_VALUE(hmac.md); + OK_MEMCMP(hmac.key, EVP_MD_block_size(parsed.entries[i]->hmac.md)); + OK_VALUE(not_before); + OK_VALUE(not_after); +#undef OK_VALUE +#undef OK_MEMCMP + } + + free_tickets(&orig); + free_tickets(&parsed); + free(serialized.base); +} + +static void test_memcached_ticket_update(void) +{ +#define TEST_KEY "h2o:session-ticket-test" + + const char *memc_port_str; + uint16_t memc_port; + yrmcds conn; + yrmcds_response resp; + yrmcds_error err; + + /* obtain port number (or skip) */ + if ((memc_port_str = getenv("MEMCACHED_PORT")) == NULL) { + printf("MEMCACHED_PORT is not defined; skipping tests\n"); + return; + } + if (sscanf(memc_port_str, "%" SCNu16, &memc_port) != 1) { + fprintf(stderr, "failed to parse the value of MEMCACHED_PORT\n"); + ok(0); + return; + } + /* connect */ + err = yrmcds_connect(&conn, "127.0.0.1", memc_port); + ok(err == YRMCDS_OK); + if (err != YRMCDS_OK) + return; + /* delete test key */ + err = yrmcds_remove(&conn, H2O_STRLIT(TEST_KEY), 0, NULL); + ok(err == YRMCDS_OK); + if (err != YRMCDS_OK) + return; + err = yrmcds_recv(&conn, &resp); + ok(err == YRMCDS_OK); + if (err != YRMCDS_OK) + return; + + /* set a new entry that immediately becomes active */ + int retry = ticket_memcached_update_tickets(&conn, h2o_iovec_init(H2O_STRLIT(TEST_KEY)), UTC2000); + ok(retry == 1); /* first attempt should return a retry, since valid ticket does not exist */ + retry = ticket_memcached_update_tickets(&conn, h2o_iovec_init(H2O_STRLIT(TEST_KEY)), UTC2000 + 1); + ok(retry == 0); + ok(session_tickets.tickets.size == 1); + ok(session_tickets.tickets.entries[0]->not_before == UTC2000); + + /* continue using existing one */ + retry = ticket_memcached_update_tickets(&conn, h2o_iovec_init(H2O_STRLIT(TEST_KEY)), UTC2000 + conf.lifetime / 8); + ok(retry == 0); + ok(session_tickets.tickets.size == 1); + ok(session_tickets.tickets.entries[0]->not_before == UTC2000); + + /* schedule a new entry */ + retry = ticket_memcached_update_tickets(&conn, h2o_iovec_init(H2O_STRLIT(TEST_KEY)), UTC2000 + conf.lifetime / 2); + ok(retry == 1); + retry = ticket_memcached_update_tickets(&conn, h2o_iovec_init(H2O_STRLIT(TEST_KEY)), UTC2000 + conf.lifetime / 2); + ok(retry == 0); + ok(session_tickets.tickets.size == 2); + ok(session_tickets.tickets.entries[0]->not_before > UTC2000 + conf.lifetime / 2); + ok(session_tickets.tickets.entries[1]->not_before == UTC2000); + + /* old entry gets removed when expired, and new entry is scheduled */ + retry = ticket_memcached_update_tickets(&conn, h2o_iovec_init(H2O_STRLIT(TEST_KEY)), UTC2000 + conf.lifetime); + ok(retry == 1); + retry = ticket_memcached_update_tickets(&conn, h2o_iovec_init(H2O_STRLIT(TEST_KEY)), UTC2000 + conf.lifetime); + ok(retry == 0); + ok(session_tickets.tickets.size == 2); + ok(session_tickets.tickets.entries[0]->not_before > UTC2000 + conf.lifetime); + ok(session_tickets.tickets.entries[1]->not_before > UTC2000 + conf.lifetime / 2); + + /* disconnect */ + yrmcds_close(&conn); +} + +void test_src__ssl_c(void) +{ + subtest("load-tickets-file", test_load_tickets_file); + subtest("serialize-tickets", test_serialize_tickets); + subtest("memcached-ticket-update", test_memcached_ticket_update); +} diff --git a/src/web/server/h2o/libh2o/t/00unit/test.c b/src/web/server/h2o/libh2o/t/00unit/test.c new file mode 100644 index 000000000..a74859d22 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/test.c @@ -0,0 +1,202 @@ +/* + * Copyright (c) 2014 DeNA Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include "h2o.h" +#include "h2o/configurator.h" +#include "../../src/standalone.h" +#include "./test.h" + +static void loopback_on_send(h2o_ostream_t *self, h2o_req_t *req, h2o_iovec_t *inbufs, size_t inbufcnt, h2o_send_state_t send_state) +{ + h2o_loopback_conn_t *conn = H2O_STRUCT_FROM_MEMBER(h2o_loopback_conn_t, _ostr_final, self); + size_t i; + + for (i = 0; i != inbufcnt; ++i) { + h2o_buffer_reserve(&conn->body, inbufs[i].len); + memcpy(conn->body->bytes + conn->body->size, inbufs[i].base, inbufs[i].len); + conn->body->size += inbufs[i].len; + } + + if (h2o_send_state_is_in_progress(send_state)) + h2o_proceed_response(&conn->req); + else + conn->_is_complete = 1; +} + +static socklen_t get_sockname(h2o_conn_t *conn, struct sockaddr *sa) +{ + struct sockaddr_in *sin = (void *)sa; + sin->sin_family = AF_INET; + sin->sin_addr.s_addr = htonl(0x7f000001); + sin->sin_port = htons(80); + return sizeof(*sin); +} + +static socklen_t get_peername(h2o_conn_t *conn, struct sockaddr *sa) +{ + struct sockaddr_in *sin = (void *)sa; + sin->sin_family = AF_INET; + sin->sin_addr.s_addr = htonl(0x7f000001); + sin->sin_port = htons(55555); + return sizeof(*sin); +} + +h2o_loopback_conn_t *h2o_loopback_create(h2o_context_t *ctx, h2o_hostconf_t **hosts) +{ + static const h2o_conn_callbacks_t callbacks = {get_sockname, get_peername}; + h2o_loopback_conn_t *conn = (void *)h2o_create_connection(sizeof(*conn), ctx, hosts, (struct timeval){0}, &callbacks); + + memset((char *)conn + sizeof(conn->super), 0, offsetof(struct st_h2o_loopback_conn_t, req) - sizeof(conn->super)); + conn->super.ctx = ctx; + conn->super.hosts = hosts; + conn->super.callbacks = &callbacks; + h2o_init_request(&conn->req, &conn->super, NULL); + h2o_buffer_init(&conn->body, &h2o_socket_buffer_prototype); + conn->req._ostr_top = &conn->_ostr_final; + conn->_ostr_final.do_send = loopback_on_send; + + return conn; +} + +void h2o_loopback_destroy(h2o_loopback_conn_t *conn) +{ + h2o_buffer_dispose(&conn->body); + h2o_dispose_request(&conn->req); + free(conn); +} + +void h2o_loopback_run_loop(h2o_loopback_conn_t *conn) +{ + if (conn->req.input.scheme == NULL) + conn->req.input.scheme = &H2O_URL_SCHEME_HTTP; + if (conn->req.version == 0) + conn->req.version = 0x100; /* HTTP/1.0 */ + + h2o_process_request(&conn->req); + + while (!conn->_is_complete) { +#if H2O_USE_LIBUV + uv_run(conn->super.ctx->loop, UV_RUN_ONCE); +#else + h2o_evloop_run(conn->super.ctx->loop, INT32_MAX); +#endif + } +} + +char *sha1sum(const void *src, size_t len) +{ + SHA_CTX ctx; + unsigned char bin[SHA_DIGEST_LENGTH]; + static char hexbuf[SHA_DIGEST_LENGTH * 2 + 1]; + size_t i; + + SHA1_Init(&ctx); + SHA1_Update(&ctx, src, len); + SHA1_Final(bin, &ctx); + + for (i = 0; i != SHA_DIGEST_LENGTH; ++i) { + hexbuf[i * 2] = ("0123456789abcdef")[bin[i] >> 4]; + hexbuf[i * 2 + 1] = ("0123456789abcdef")[bin[i] & 0xf]; + } + hexbuf[i * 2] = '\0'; + + return hexbuf; +} + +h2o_loop_t *test_loop; + +static void test_loopback(void) +{ + h2o_globalconf_t conf; + h2o_context_t ctx; + h2o_loopback_conn_t *conn; + + h2o_config_init(&conf); + h2o_config_register_host(&conf, h2o_iovec_init(H2O_STRLIT("default")), 65535); + h2o_context_init(&ctx, test_loop, &conf); + + conn = h2o_loopback_create(&ctx, ctx.globalconf->hosts); + conn->req.input.method = h2o_iovec_init(H2O_STRLIT("GET")); + conn->req.input.path = h2o_iovec_init(H2O_STRLIT("/")); + h2o_loopback_run_loop(conn); + + ok(conn->req.res.status == 404); + + h2o_loopback_destroy(conn); + + h2o_context_dispose(&ctx); + h2o_config_dispose(&conf); +} + +int main(int argc, char **argv) +{ + init_openssl(); + + { /* library tests */ + subtest("lib/cache.c", test_lib__common__cache_c); + subtest("lib/common/multithread.c", test_lib__common__multithread_c); + subtest("lib/common/hostinfo.c", test_lib__common__hostinfo_c); + subtest("lib/common/serverutil.c", test_lib__common__serverutil_c); + subtest("lib/common/serverutil.c", test_lib__common__socket_c); + subtest("lib/common/string.c", test_lib__common__string_c); + subtest("lib/common/url.c", test_lib__common__url_c); + subtest("lib/common/time.c", test_lib__common__time_c); + subtest("lib/core/headers.c", test_lib__core__headers_c); + subtest("lib/core/proxy.c", test_lib__core__proxy_c); + subtest("lib/core/util.c", test_lib__core__util_c); + subtest("lib/handler/headers.c", test_lib__handler__headers_c); + subtest("lib/handler/mimemap.c", test_lib__handler__mimemap_c); + subtest("lib/http2/hpack.c", test_lib__http2__hpack); + subtest("lib/http2/scheduler.c", test_lib__http2__scheduler); + subtest("lib/http2/casper.c", test_lib__http2__casper); + subtest("lib/http2/cache_digests.c", test_lib__http2__cache_digests); + } + + { /* tests that use the run loop */ +#if H2O_USE_LIBUV + test_loop = h2o_mem_alloc(sizeof(*test_loop)); + uv_loop_init(test_loop); +#else + test_loop = h2o_evloop_create(); +#endif + + subtest("lib/t/test.c/loopback", test_loopback); + subtest("lib/fastcgi.c", test_lib__handler__fastcgi_c); + subtest("lib/file.c", test_lib__handler__file_c); + subtest("lib/gzip.c", test_lib__handler__gzip_c); + subtest("lib/redirect.c", test_lib__handler__redirect_c); + subtest("issues/293.c", test_issues293); + subtest("issues/percent-encode-zero-byte.c", test_percent_encode_zero_byte); + +#if H2O_USE_LIBUV + uv_loop_close(test_loop); + free(test_loop); +#else +// h2o_evloop_destroy(loop); +#endif + } + + { /* src tests */ + subtest("src/ssl.c", test_src__ssl_c); + } + + return done_testing(); +} diff --git a/src/web/server/h2o/libh2o/t/00unit/test.h b/src/web/server/h2o/libh2o/t/00unit/test.h new file mode 100644 index 000000000..b1479eba3 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/00unit/test.h @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2014 DeNA Co., Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#ifndef h2o__t__test_h +#define h2o__t__test_h + +#include "picotest.h" +#include "h2o.h" + +typedef struct st_h2o_loopback_conn_t { + h2o_conn_t super; + /** + * the response + */ + h2o_buffer_t *body; + /* internal structure */ + h2o_ostream_t _ostr_final; + int _is_complete; + /** + * the HTTP request / response (intentionally placed at the last, since it is a large structure and has it's own ctor) + */ + h2o_req_t req; +} h2o_loopback_conn_t; + +h2o_loopback_conn_t *h2o_loopback_create(h2o_context_t *ctx, h2o_hostconf_t **hosts); +void h2o_loopback_destroy(h2o_loopback_conn_t *conn); +void h2o_loopback_run_loop(h2o_loopback_conn_t *conn); + +extern h2o_loop_t *test_loop; + +char *sha1sum(const void *src, size_t len); + +void test_lib__common__cache_c(void); +void test_lib__common__hostinfo_c(void); +void test_lib__common__multithread_c(void); +void test_lib__common__serverutil_c(void); +void test_lib__common__socket_c(void); +void test_lib__common__string_c(void); +void test_lib__common__time_c(void); +void test_lib__common__url_c(void); +void test_lib__core__headers_c(void); +void test_lib__core__proxy_c(void); +void test_lib__core__util_c(void); +void test_lib__handler__fastcgi_c(void); +void test_lib__handler__file_c(void); +void test_lib__handler__gzip_c(void); +void test_lib__handler__headers_c(void); +void test_lib__handler__mimemap_c(void); +void test_lib__handler__redirect_c(void); +void test_lib__http2__hpack(void); +void test_lib__http2__scheduler(void); +void test_lib__http2__casper(void); +void test_lib__http2__cache_digests(void); +void test_src__ssl_c(void); +void test_issues293(void); +void test_percent_encode_zero_byte(void); + +#endif diff --git a/src/web/server/h2o/libh2o/t/10http1client.t b/src/web/server/h2o/libh2o/t/10http1client.t new file mode 100644 index 000000000..7461d146e --- /dev/null +++ b/src/web/server/h2o/libh2o/t/10http1client.t @@ -0,0 +1,13 @@ +use strict; +use warnings; +use Test::More; +use t::Util; + +my $fn = bindir() . "/examples-http1client"; + +plan skip_all => 'http1client not found' + unless -x $fn; + +is(system("$fn http://kazuhooku.com > /dev/null"), 0); + +done_testing; diff --git a/src/web/server/h2o/libh2o/t/40bad-request.t b/src/web/server/h2o/libh2o/t/40bad-request.t new file mode 100644 index 000000000..643e1f02d --- /dev/null +++ b/src/web/server/h2o/libh2o/t/40bad-request.t @@ -0,0 +1,28 @@ +use strict; +use warnings; +use Test::More; +use t::Util; + +plan skip_all => "nc not found" + unless prog_exists("nc"); + +my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + "/": + file.dir: @{[ DOC_ROOT ]} +EOT + +my $resp; + +$resp = `nc 127.0.0.1 $server->{port} < /dev/null 2>&1`; +is $resp, "", "silent close on empty request"; + +$resp = `echo "GET / HTTP/1.2\r\na\r\n\r" | nc 127.0.0.1 $server->{port} 2>&1`; +like $resp, qr{^HTTP/1\.1 400 .*Content-Length:\s*11\r\n\r\nBad Request$}is, "400 on broken request"; + +$resp = `echo "\r" | nc 127.0.0.1 $server->{port} 2>&1`; +is $resp, "", "silent close on CRLF"; + +done_testing; diff --git a/src/web/server/h2o/libh2o/t/40env.t b/src/web/server/h2o/libh2o/t/40env.t new file mode 100644 index 000000000..daaa08665 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/40env.t @@ -0,0 +1,80 @@ +use strict; +use warnings; +use Digest::MD5 qw(md5_hex); +use File::Temp qw(tempdir); +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +subtest "fastcgi" => sub { + my $server = spawn_h2o(<< "EOT"); +file.custom-handler: + extension: .cgi + fastcgi.spawn: "exec \$H2O_ROOT/share/h2o/fastcgi-cgi" + unsetenv: + - "foo" +setenv: + "global": 123 +hosts: + default: + setenv: + "host": 234 + paths: + "/": + setenv: + "path": 345 + "foo": "abc" + file.dir: @{[ DOC_ROOT ]} + "/unset": + unsetenv: "host" + file.dir: @{[ DOC_ROOT ]} +EOT + subtest "basic" => sub { + run_with_curl($server, sub { + my ($proto, $port, $curl) = @_; + my $resp = `$curl --silent $proto://127.0.0.1:$port/printenv.cgi`; + like $resp, qr{^global:123$}m; + like $resp, qr{^host:234$}m; + like $resp, qr{^path:345$}m; + unlike $resp, qr{^foo:}m; + }); + }; + subtest "unsetenv" => sub { + run_with_curl($server, sub { + my ($proto, $port, $curl) = @_; + my $resp = `$curl --silent $proto://127.0.0.1:$port/unset/printenv.cgi`; + like $resp, qr{^global:123$}m; + unlike $resp, qr{^host:}m; + unlike $resp, qr{^path:}m; + unlike $resp, qr{^foo:}m; + }); + }; +}; + +subtest "mruby" => sub { + plan skip_all => 'mruby support is off' + unless server_features()->{mruby}; + my $server = spawn_h2o(<< 'EOT'); +hosts: + default: + paths: + "/": + setenv: + foo: 123 + mruby.handler: | + Proc.new do |env| + [ + 200, + {"content-type" => "text/plain; charset=utf-8"}, + [(env.map {|k, v| k + ":" + String(v) + "\n"}).join] + ] + end +EOT + run_with_curl($server, sub { + my ($proto, $port, $curl) = @_; + my $resp = `$curl --silent $proto://127.0.0.1:$port/`; + like $resp, qr{^foo:123$}m; + }); +}; + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/40max-connections.t b/src/web/server/h2o/libh2o/t/40max-connections.t new file mode 100644 index 000000000..1fa7cbe6a --- /dev/null +++ b/src/web/server/h2o/libh2o/t/40max-connections.t @@ -0,0 +1,80 @@ +use strict; +use warnings; +use IO::Socket::INET; +use Test::More; +use Time::HiRes qw(sleep); +use t::Util; + +my $MAX_CONN = 2; +my $WAIT = 0.1; + +subtest "single-threaded" => sub { + doit(1); +}; +subtest "multi-threaded" => sub { + doit(4); +}; + +done_testing; + +sub doit { + my $num_threads = shift; + my $server = spawn_h2o(<< "EOT"); +num-threads: $num_threads +max-connections: $MAX_CONN +hosts: + default: + paths: + /: + file.dir: @{[ DOC_ROOT ]} +EOT + + my $port = $server->{port}; + my $tls_port = $server->{tls_port}; + + # establish connections to the maximum (and write partial requests so that the server would accept(2) the connections) + my @conns; + for (1..$MAX_CONN) { + my $conn = IO::Socket::INET->new( + PeerAddr => "127.0.0.1:$port", + Proto => "tcp", + ) or die "connection failed:$!"; + syswrite($conn, "GET / HTTP/1.0\r\n") + or die "failed to write partial request:$!"; + push @conns, $conn; + } + + sleep $WAIT; + + # create one more connection and send request + my $blocked_conn = IO::Socket::INET->new( + PeerAddr => "127.0.0.1:$port", + Proto => "tcp", + ) or die "connection failed:$!"; + syswrite($blocked_conn, "GET / HTTP/1.0\r\n\r\n") + or die "failed to write request:$!"; + + sleep $WAIT; + + ok ! data_ready($blocked_conn), "succeeding conn is not handled"; + + # close the preceeding connections + while (@conns) { + close shift @conns; + } + + sleep $WAIT; + + ok data_ready($blocked_conn), "succeeding conn should have been handled"; + + my $resp = do { local $/; <$blocked_conn> }; + like $resp, qr{^HTTP/1\.1 200 OK\r\n}s, "response is valid"; +} + +sub data_ready { + my $conn = shift; + my $rfds = ''; + vec($rfds, fileno($conn), 1) = 1; + my $nfound = select $rfds, undef, undef, 0; + return $nfound != 0; +} diff --git a/src/web/server/h2o/libh2o/t/40memcached-session-resumption.t b/src/web/server/h2o/libh2o/t/40memcached-session-resumption.t new file mode 100644 index 000000000..129affbe0 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/40memcached-session-resumption.t @@ -0,0 +1,62 @@ +use strict; +use warnings; +use File::Temp qw(tempdir); +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +plan skip_all => "could not find memcached" + unless prog_exists("memcached"); + +plan skip_all => "could not find openssl" + unless prog_exists("openssl"); + +my $tempdir = tempdir(CLEANUP => 1); + +doit("binary"); +doit("ascii"); + +done_testing; + +sub doit { + my $memc_proto = shift; + subtest $memc_proto => sub { + # start memcached + my $memc_port = empty_port(); + my $memc_guard = spawn_server( + argv => [ qw(memcached -l 127.0.0.1 -p), $memc_port, "-B", $memc_proto ], + is_ready => sub { + check_port($memc_port); + }, + ); + # the test + my $spawn_and_connect = sub { + my ($opts, $expected) = @_; + my $server = spawn_h2o(<< "EOT"); +ssl-session-resumption: + mode: cache + cache-store: memcached + memcached: + host: 127.0.0.1 + port: $memc_port + protocol: $memc_proto +hosts: + default: + paths: + /: + file.dir: @{[ DOC_ROOT ]} +EOT + my $lines = do { + open my $fh, "-|", "openssl s_client -no_ticket $opts -connect 127.0.0.1:$server->{tls_port} 2>&1 < /dev/null" + or die "failed to open pipe:$!"; + local $/; + <$fh>; + }; + $lines =~ m{---\n(New|Reused),}s + or die "failed to parse the output of s_client:{{{$lines}}}"; + is $1, $expected; + }; + $spawn_and_connect->("-sess_out $tempdir/session", "New"); + $spawn_and_connect->("-sess_in $tempdir/session", "Reused"); + }; +} diff --git a/src/web/server/h2o/libh2o/t/40protocol.t b/src/web/server/h2o/libh2o/t/40protocol.t new file mode 100644 index 000000000..e12f01604 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/40protocol.t @@ -0,0 +1,63 @@ +use strict; +use warnings; +use Digest::MD5 qw(md5_hex); +use Test::More; +use t::Util; + +my %files = map { do { + my $fn = DOC_ROOT . "/$_"; + +($_ => { size => +(stat $fn)[7], md5 => md5_file($fn) }); +} } qw(index.txt halfdome.jpg); + +my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + file.dir: @{[ DOC_ROOT ]} +EOT + +my $port = $server->{port}; +my $tls_port = $server->{tls_port}; + +subtest 'curl' => sub { + run_with_curl($server, sub { + my ($proto, $port, $curl) = @_; + for my $file (sort keys %files) { + my $content = `$curl --silent --show-error $proto://127.0.0.1:$port/$file`; + is length($content), $files{$file}->{size}, "$file (size)"; + is md5_hex($content), $files{$file}->{md5}, "$file (md5)"; + } + }); +}; + +subtest 'nghttp' => sub { + plan skip_all => 'nghttp not found' + unless prog_exists('nghttp'); + my $doit = sub { + my ($proto, $port) = @_; + my $opt = $proto eq 'http' ? '-u' : ''; + for my $file (sort keys %files) { + my $content = `nghttp $opt $proto://127.0.0.1:$port/$file`; + is length($content), $files{$file}->{size}, "$proto://127.0.0.1/$file (size)"; + is md5_hex($content), $files{$file}->{md5}, "$proto://127.0.0.1/$file (md5)"; + } + my $out = `nghttp -u -m 100 $proto://127.0.0.1:$port/index.txt`; + is $out, "hello\n" x 100, "$proto://127.0.0.1/index.txt x 100 times"; + }; + $doit->('http', $port); + subtest 'https' => sub { + plan skip_all => 'OpenSSL does not support protocol negotiation; it is too old' + unless openssl_can_negotiate(); + $doit->('https', $tls_port); + }; +}; + +subtest 'ab' => sub { + plan skip_all => 'ab not found' + unless prog_exists('ab'); + ok(system("ab -c 10 -n 10000 -k http://127.0.0.1:$port/index.txt") == 0); + ok(system("ab -f tls1 -c 10 -n 10000 -k https://127.0.0.1:$tls_port/index.txt") == 0); +}; + +done_testing; diff --git a/src/web/server/h2o/libh2o/t/40proxy-protocol.t b/src/web/server/h2o/libh2o/t/40proxy-protocol.t new file mode 100644 index 000000000..b6c5f149a --- /dev/null +++ b/src/web/server/h2o/libh2o/t/40proxy-protocol.t @@ -0,0 +1,153 @@ +use strict; +use warnings; +use File::Temp qw(tempdir); +use IO::Socket::INET; +use IO::Socket::SSL; +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +my $tempdir = tempdir(CLEANUP => 1); +my $port = empty_port(); + +sub spawn_h2o { + my ($proxy_protocol, $ssl) = @_; + + open my $fh, ">", "$tempdir/h2o.conf" + or die "failed to create file:$tempdir/h2o.conf:$!"; + print $fh <<"EOT"; +handshake-timeout: 3 +hosts: + default: + access-log: + format: "%h" + path: $tempdir/access_log + paths: + /: + file.dir: @{[ DOC_ROOT ]} + listen: + host: 127.0.0.1 + port: $port + proxy-protocol: @{[$proxy_protocol ? "ON" : "OFF"]} +EOT + if ($ssl) { + print $fh <<"EOT"; + ssl: + key-file: examples/h2o/server.key + certificate-file: examples/h2o/server.crt +EOT + } + close $fh; + + spawn_server( + argv => [ bindir() . "/h2o", "-c", "$tempdir/h2o.conf" ], + is_ready => sub { + check_port($port); + }, + ); +} + +sub fetch { + my $req = shift; + my $conn = IO::Socket::INET->new( + PeerHost => q(127.0.0.1), + PeerPort => $port, + Proto => q(tcp), + ) or die "failed to connect to host:$!"; + $conn->write($req); + $conn->read(my $buf, 1048576); + $buf; +} + +sub fetch_ssl { + my ($pre, $req) = @_; + my $conn = IO::Socket::INET->new( + PeerHost => q(127.0.0.1), + PeerPort => $port, + SSL_startHandshake => 0, + ) or die "failed to connect to host:$!"; + $conn->write($pre); + IO::Socket::SSL->start_SSL($conn, SSL_verify_mode => 0) + or die $SSL_ERROR; + $conn->write($req); + $conn->read(my $buf, 1048576); + $buf; +} + +sub last_log { + open my $fh, "<", "$tempdir/access_log" + or die "failed to open file:$tempdir/access_log:$!"; + my $last; + while (<$fh>) { + $last = $_; + } + chomp $last; + $last; +} + +sub test_timeout { + local $@; + my $gotsig = 0; + local $SIG{ALRM} = sub { + $gotsig = 1; + die "gotsig"; + }; + alarm(5); + eval { fetch("") }; + alarm(0); + ok ! $gotsig; +} + +subtest "http" => sub { + my $guard = spawn_h2o(1, 0); + subtest "with proxy" => sub { + my $resp = fetch("PROXY TCP4 1.2.3.4 5.6.7.8 1234 9999\r\nGET / HTTP/1.0\r\n\r\n"); + like $resp, qr{^HTTP/1.1 200 OK\r\n}s; + is last_log(), "1.2.3.4"; + }; + subtest "without proxy" => sub { + my $resp = fetch("GET / HTTP/1.0\r\n\r\n"); + like $resp, qr{^HTTP/1.1 200 OK\r\n}s; + is last_log(), "127.0.0.1"; + }; + subtest "timeout" => sub { + test_timeout(); + }; +}; + +subtest "https" => sub { + my $guard = spawn_h2o(1, 1); + subtest "with proxy" => sub { + my $resp = fetch_ssl("PROXY TCP4 1.2.3.4 5.6.7.8 1234 9999\r\n", "GET / HTTP/1.0\r\n\r\n"); + like $resp, qr{^HTTP/1.1 200 OK\r\n}s; + is last_log(), "1.2.3.4"; + }; + subtest "without proxy" => sub { + my $resp = fetch_ssl("", "GET / HTTP/1.0\r\n\r\n"); + like $resp, qr{^HTTP/1.1 200 OK\r\n}s; + is last_log(), "127.0.0.1"; + }; + subtest "timeout" => sub { + test_timeout(); + }; +}; + +subtest "off" => sub { + my $guard = spawn_h2o(0, 0); + subtest "with proxy" => sub { + my $resp = fetch("PROXY TCP4 1.2.3.4 5.6.7.8 1234 9999\r\nGET / HTTP/1.0\r\n\r\n"); + unlike $resp, qr{^HTTP/1.1 200 OK\r\n}s; + }; + subtest "without proxy" => sub { + my $resp = fetch("GET / HTTP/1.0\r\n\r\n"); + like $resp, qr{^HTTP/1.1 200 OK\r\n}s; + }; +}; + +subtest "https handshake timeout" => sub { + # timeout test for PROXY:OFF over HTTPS is implemented here since it is easier to do so + my $guard = spawn_h2o(0, 1); + test_timeout(); +}; + +done_testing; diff --git a/src/web/server/h2o/libh2o/t/40running-user.t b/src/web/server/h2o/libh2o/t/40running-user.t new file mode 100644 index 000000000..53ebc1176 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/40running-user.t @@ -0,0 +1,38 @@ +use strict; +use warnings; +use English; +use Test::More; +use t::Util; + +plan skip_all => "not running as root" + if $UID != 0; +plan skip_all => "user 'nobody' does not exist" + unless defined getpwnam("nobody"); + + +subtest "set-user" => sub { + doit(<< 'EOT'); +user: nobody +EOT +}; + +subtest "automatic fallback to nobody" => sub { + doit(''); +}; + +done_testing; + +sub doit { + my $conf = shift; + my $server = spawn_h2o(<< "EOT"); +$conf +hosts: + default: + paths: + /: + file.dir: @{[ DOC_ROOT ]} +EOT + + my $resp = `curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/ 2>&1 > /dev/null`; + like $resp, qr{^HTTP/1}s; +} diff --git a/src/web/server/h2o/libh2o/t/40server-push-attrs.t b/src/web/server/h2o/libh2o/t/40server-push-attrs.t new file mode 100644 index 000000000..059152314 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/40server-push-attrs.t @@ -0,0 +1,65 @@ +use strict; +use warnings; +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +plan skip_all => 'plackup not found' + unless prog_exists('plackup'); +plan skip_all => 'Starlet not found' + unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; +plan skip_all => 'nghttp not found' + unless prog_exists('nghttp'); +plan skip_all => 'mruby support is off' + unless server_features()->{mruby}; + +subtest "basic" => sub { + # spawn upstream + my $upstream_port = empty_port(); + my $upstream = spawn_server( + argv => [ + qw(plackup -s Starlet --access-log /dev/null -p), $upstream_port, ASSETS_DIR . "/upstream.psgi", + ], + is_ready => sub { + check_port($upstream_port); + }, + ); + # spawn server + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /assets: + file.dir: @{[DOC_ROOT]} + /: + proxy.reverse.url: http://127.0.0.1:$upstream_port +EOT + + my $pushes_encoded = "; rel=preload, ; rel=preload, ; rel=preload; nopush"; + $pushes_encoded =~ s{([^A-Za-z0-9_])}{sprintf "%%%02x", ord $1}eg; + my $resp = `nghttp -vn --stat 'https://127.0.0.1:$server->{tls_port}/push-attr?pushes=$pushes_encoded'`; + like $resp, qr{\nid\s*responseEnd\s.*\s/assets/index\.txt\.gz}is, "index.txt.gz is pushed"; + like $resp, qr{\nid\s*responseEnd\s.*\s/assets/index\.txt\.gz\?1}is, "index.txt.gz?1 is pushed"; + unlike $resp, qr{\nid\s*responseEnd\s.*\s/assets/index\.txt\.gz\?nopush}is, "index.txt.gz?nopush isn't pushed"; + + $pushes_encoded = "; rel=preload, ; rel=preload, ; rel=preload; nopush, ; rel=preload; x-http2-push-only"; + $pushes_encoded =~ s{([^A-Za-z0-9_])}{sprintf "%%%02x", ord $1}eg; + $resp = `nghttp -vn --stat 'https://127.0.0.1:$server->{tls_port}/push-attr?pushes=$pushes_encoded'`; + + like $resp, qr{\nid\s*responseEnd\s.*\s/assets/index\.txt\.gz}is, "index.txt.gz is pushed"; + like $resp, qr{\nid\s*responseEnd\s.*\s/assets/index\.txt\.gz\?1}is, "index.txt.gz?1 is pushed"; + unlike $resp, qr{\nid\s*responseEnd\s.*\s/assets/index\.txt\.gz\?nopush}is, "index.txt.gz?nopush isn't pushed"; + like $resp, qr{\nid\s*responseEnd\s.*\s/assets/index\.txt\.gz\?push-only}is, "index.txt.gz?push-only is pushed"; + like $resp, qr{link: ; rel=preload, ; rel=preload, ; rel=preload; nopush\n}, "push-only doesn't appear in the link header"; + + # Check that the header is removed if there's only one link with x-http2-push-only + $pushes_encoded = "; rel=preload; x-http2-push-only"; + $pushes_encoded =~ s{([^A-Za-z0-9_])}{sprintf "%%%02x", ord $1}eg; + $resp = `nghttp -vn --stat 'https://127.0.0.1:$server->{tls_port}/push-attr?pushes=$pushes_encoded'`; + + like $resp, qr{\nid\s*responseEnd\s.*\s/assets/index\.txt\.gz\?push-only}is, "index.txt.gz?push-only is pushed"; + unlike $resp, qr{link:\s*\n}, "push-only doesn't appear in the link header"; +}; + + +done_testing; diff --git a/src/web/server/h2o/libh2o/t/40server-push-multiple.t b/src/web/server/h2o/libh2o/t/40server-push-multiple.t new file mode 100644 index 000000000..b43c9675f --- /dev/null +++ b/src/web/server/h2o/libh2o/t/40server-push-multiple.t @@ -0,0 +1,66 @@ +use strict; +use warnings; +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +plan skip_all => 'plackup not found' + unless prog_exists('plackup'); +plan skip_all => 'Starlet not found' + unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; +plan skip_all => 'nghttp not found' + unless prog_exists('nghttp'); +plan skip_all => 'mruby support is off' + unless server_features()->{mruby}; + +subtest "basic" => sub { + # spawn upstream + my $upstream_port = empty_port(); + my $upstream = spawn_server( + argv => [ + qw(plackup -s Starlet --access-log /dev/null -p), $upstream_port, ASSETS_DIR . "/upstream.psgi", + ], + is_ready => sub { + check_port($upstream_port); + }, + ); + # spawn server + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + proxy.reverse.url: http://127.0.0.1:$upstream_port + /mruby: + mruby.handler: | + Proc.new do |env| + [399, { "link" => "; rel=preload, ; rel=preload, ; rel=preload; nopush" }, [] ] + end + proxy.reverse.url: http://127.0.0.1:$upstream_port + /assets: + file.dir: @{[DOC_ROOT]} +EOT + + my $doit = sub { + my ($proto, $opts, $port) = @_; + subtest 'push-prioritized' => sub { + my $resp = `nghttp $opts -n --stat '$proto://127.0.0.1:$port/mruby'`; + like $resp, qr{\nid\s*responseEnd\s.*\s/index\.txt\.gz}is, "index.txt.gz is pushed"; + like $resp, qr{\nid\s*responseEnd\s.*\s/index\.txt\.gz\?1}is, "index.txt.gz?1 is pushed"; + unlike $resp, qr{\nid\s*responseEnd\s.*\s/index\.txt\.gz\?nopush}is, "index.txt.gz?nopush isn't pushed"; + }; + }; + + subtest 'h2 direct' => sub { + $doit->('http', '', $server->{port}); + }; + subtest 'h2 upgrade' => sub { + $doit->('http', '-u', $server->{port}); + }; + subtest 'h2c' => sub { + $doit->('https', '', $server->{tls_port}); + }; +}; + + +done_testing; diff --git a/src/web/server/h2o/libh2o/t/40server-push.t b/src/web/server/h2o/libh2o/t/40server-push.t new file mode 100644 index 000000000..519d1be80 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/40server-push.t @@ -0,0 +1,245 @@ +use strict; +use warnings; +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +plan skip_all => 'plackup not found' + unless prog_exists('plackup'); +plan skip_all => 'Starlet not found' + unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; +plan skip_all => 'nghttp not found' + unless prog_exists('nghttp'); +plan skip_all => 'mruby support is off' + unless server_features()->{mruby}; + +subtest "basic" => sub { + # spawn upstream + my $upstream_port = empty_port(); + my $upstream = spawn_server( + argv => [ + qw(plackup -s Starlet --access-log /dev/null -p), $upstream_port, ASSETS_DIR . "/upstream.psgi", + ], + is_ready => sub { + check_port($upstream_port); + }, + ); + # spawn server + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + proxy.reverse.url: http://127.0.0.1:$upstream_port + /mruby: + mruby.handler: | + Proc.new do |env| + [399, { "link" => "; rel=preload" }, [] ] + end + proxy.reverse.url: http://127.0.0.1:$upstream_port + /assets: + file.dir: @{[DOC_ROOT]} +EOT + + my $doit = sub { + my ($proto, $opts, $port) = @_; + subtest 'push-prioritized' => sub { + my $resp = `nghttp $opts -n --stat '$proto://127.0.0.1:$port/index.txt?resp:link=\%3b\%20rel=preload'`; + like $resp, qr{\nid\s*responseEnd\s.*\s/assets/index\.js\n.*\s/index\.txt\?}is; + }; + subtest 'push-unprioritized' => sub { + my $resp = `nghttp $opts -n --stat '$proto://127.0.0.1:$port/index.txt?resp:link=\%3b\%20rel=preload'`; + like $resp, qr{\nid\s*responseEnd\s.*\s/index\.txt\?.*\s/index\.txt.gz\n}is; + }; + subtest "push-1xx" => sub { + my $out = `nghttp $opts -n --stat '$proto://127.0.0.1:$port/1xx-push/'`; + # index.js arrives < 100ms, and /1xx-push/ arrives > 1sec + $out = (split /^.*?\nid *responseEnd .*?\n/s, $out, 2)[1]; + chomp $out; + my @responses = split /\n/, $out; + is scalar(@responses), 2, "2 responses"; + like $responses[0], qr{\+[0-9]{1,2}\.[0-9]*ms .* /index.js$}, "index.js arrives < 100ms"; + like $responses[1], qr{\+1\.[0-9]*s .* /1xx-push/$}, "/1xx-push/ arrives >= 1sec"; + }; + subtest 'push-while-sleep' => sub { + my $resp = `nghttp $opts -n --stat '$proto://127.0.0.1:$port/mruby/sleep-and-respond?sleep=1'`; + like $resp, qr{\nid\s*responseEnd\s.*\s/index\.txt\.gz\n.*\s/mruby/sleep-and-respond}is; + }; + }; + + subtest 'h2 direct' => sub { + $doit->('http', '', $server->{port}); + }; + subtest 'h2 upgrade' => sub { + $doit->('http', '-u', $server->{port}); + }; + subtest 'h2c' => sub { + $doit->('https', '', $server->{tls_port}); + }; +}; + +subtest "push-twice" => sub { + my $server = spawn_h2o(sub { + my ($port, $tls_port) = @_; + return << "EOT"; +hosts: + "127.0.0.1:$tls_port": + paths: + /: + mruby.handler: | + Proc.new do |env| + case env["PATH_INFO"] + when "/index.txt" + push_paths = [] + push_paths << "/index.js" + [399, push_paths.empty? ? {} : {"link" => push_paths.map{|p| "<#{p}>; rel=preload"}.join("\\n")}, []] + else + [399, {}, []] + end + end + file.dir: t/assets/doc_root +EOT + }); + my $resp = `nghttp -v -m 2 -n --stat https://127.0.0.1:$server->{tls_port}/index.txt`; + like $resp, qr{\s+200\s+16\s+/index\.js\n}is, "receives index.js"; + unlike $resp, qr{\s+200\s+16\s+/index\.js\n.*\s+200\s+16\s+/index\.js\n}is, "receives index.js only once"; +}; + + +subtest "push-after-reproxy" => sub { + subtest "authority-match" => sub { + my $server = spawn_h2o(sub { + my ($port, $tls_port) = @_; + return << "EOT"; +hosts: + "127.0.0.1:$tls_port": + paths: + /: + reproxy: ON + mruby.handler: | + Proc.new do |env| + case env["PATH_INFO"] + when "/reproxy" + [307, {"x-reproxy-url" => "/index.txt"}, ["should never see this"]] + when "/index.txt" + push_paths = [] + push_paths << "/index.js" + [399, push_paths.empty? ? {} : {"link" => push_paths.map{|p| "<#{p}>; rel=preload"}.join("\\n")}, []] + else + [399, {}, []] + end + end + file.dir: t/assets/doc_root +EOT + }); + my $resp = `nghttp -n --stat https://127.0.0.1:$server->{tls_port}/reproxy`; + like $resp, qr{\nid\s*responseEnd\s.*\s/index\.js\n.*\s/reproxy}is, "receives index.js then /reproxy"; + }; + subtest "authority-mismatch" => sub { + my $server = spawn_h2o(sub { + my ($port, $tls_port) = @_; + return << "EOT"; +hosts: + default: + paths: + /: + reproxy: ON + mruby.handler: | + Proc.new do |env| + case env["PATH_INFO"] + when "/reproxy" + [307, {"x-reproxy-url" => "/index.txt"}, ["should never see this"]] + when "/index.txt" + push_paths = [] + push_paths << "/index.js?1" + push_paths << "https://127.0.0.1:$tls_port/index.js?2" + [399, push_paths.empty? ? {} : {"link" => push_paths.map{|p| "<#{p}>; rel=preload"}.join("\\n")}, []] + else + [399, {}, []] + end + end + file.dir: t/assets/doc_root +EOT + }); + my $resp = `nghttp -n --stat https://127.0.0.1:$server->{tls_port}/reproxy`; + like $resp, qr{\nid\s*responseEnd\s.*\s/index\.js\?2\n.*\s/reproxy}is, "receives index.js?2 then /reproxy"; + unlike $resp, qr{/index\.js\?1\n}is, "index.js?1 not received (authority mismatch)"; + }; +}; + +subtest "casper" => sub { + subtest "custom capacity-bits" => sub { + my $server = spawn_h2o(sub { + my ($port, $tls_port) = @_; + return << "EOT"; +hosts: + "127.0.0.1:$tls_port": + http2-casper: + capacity-bits: 11 + paths: + /: + reproxy: ON + mruby.handler: | + Proc.new do |env| + case env["PATH_INFO"] + when "/index.txt" + push_paths = [] + push_paths << "/index.js" + [399, push_paths.empty? ? {} : {"link" => push_paths.map{|p| "<#{p}>; rel=preload"}.join("\\n")}, []] + else + [399, {}, []] + end + end + file.dir: t/assets/doc_root +EOT + }); + my $resp = `nghttp -v -n --stat https://127.0.0.1:$server->{tls_port}/index.txt`; + like $resp, qr{\nid\s*responseEnd\s.*\s/index\.js\n.*\s/index.txt}is, "receives index.js then /index.txt"; + my ($casper) = ($resp =~ qr{set-cookie:\s*(h2o_casper=[^\s;]+)}i); + + is length($casper), 17; + + { + my $resp = `nghttp -H'cookie: $casper' -v -n --stat https://127.0.0.1:$server->{tls_port}/index.txt`; + unlike $resp, qr{\nid\s*responseEnd\s.*\s/index\.js\n}is, "does not receives index.js"; + } + }; +}; + +subtest "cache-digest" => sub { + plan skip_all => 'node not found' + unless prog_exists('node'); + my $server = spawn_h2o(sub { + my ($port, $tls_port) = @_; + return << "EOT"; +hosts: + "127.0.0.1:$tls_port": + paths: + /: + mruby.handler: | + Proc.new do |env| + case env["PATH_INFO"] + when "/index.txt" + [399, {"link" => "; rel=preload"}, []] + else + [399, {}, []] + end + end + file.dir: t/assets/doc_root +EOT + }); + my $calc_digest = sub { + my $cmd = "node misc/cache-digest.js/cli.js -b @{[join ' ', map { qq{https://127.0.0.1:$server->{tls_port}$_} } @_]}"; + my $digest = `$cmd`; + chomp $digest; + return "$digest; complete"; + }; + my $resp = `nghttp -H'cache-digest: @{[$calc_digest->()]}' -v -n --stat https://127.0.0.1:$server->{tls_port}/index.txt`; + like $resp, qr{\nid\s*responseEnd\s.*\s/index\.js\n.*\s/index.txt}is, "receives index.js then /index.txt"; + $resp = `nghttp -H'cache-digest: @{[$calc_digest->("/index.js", "/style.css")]}' -v -n --stat https://127.0.0.1:$server->{tls_port}/index.txt`; + unlike $resp, qr{\nid\s*responseEnd\s.*\s/index\.js\n}is, "does not receive index.js"; + $resp = `nghttp -H'cache-digest: @{[$calc_digest->("/script.js", "/style.css")]}' -v -n --stat https://127.0.0.1:$server->{tls_port}/index.txt`; + like $resp, qr{\nid\s*responseEnd\s.*\s/index\.js\n.*\s/index.txt}is, "receives index.js then /index.txt"; +}; + +done_testing; diff --git a/src/web/server/h2o/libh2o/t/40session-ticket.t b/src/web/server/h2o/libh2o/t/40session-ticket.t new file mode 100644 index 000000000..2e5d5e4ac --- /dev/null +++ b/src/web/server/h2o/libh2o/t/40session-ticket.t @@ -0,0 +1,133 @@ +use strict; +use warnings; +use File::Temp qw(tempdir); +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +plan skip_all => "could not find openssl" + unless prog_exists("openssl"); +#plan skip_all => "openssl 1.0.2 or above is required" +# unless `openssl version` =~ /^OpenSSL 1\.(?:0\.[2-9][^0-9]|[1-9])/s; + +my $tempdir = tempdir(CLEANUP => 1); + +subtest "internal" => sub { + spawn_with(<< "EOT", + mode: ticket +EOT + sub { + is test(), "New"; + test(); # openssl 0.9.8 seems to return "New" (maybe because in the first run we did not specify -sess_in) + is test(), "Reused"; + is test(), "Reused"; + }); + spawn_with(<< "EOT", + mode: ticket +EOT + sub { + is test(), "New"; + }); +}; + +subtest "file" => sub { + my $tickets_file = "t/40session-ticket/forever_ticket.yaml"; + spawn_with(<< "EOT", + mode: ticket + ticket-store: file + ticket-file: $tickets_file +EOT + sub { + is test(), "New"; + is test(), "Reused"; + is test(), "Reused"; + }); + spawn_with(<< "EOT", + mode: ticket + ticket-store: file + ticket-file: $tickets_file +EOT + sub { + sleep 1; + is test(), "Reused"; + }); +}; + +subtest "no-tickets-in-file" => sub { + my $tickets_file = "t/40session-ticket/nonexistent"; + spawn_with(<< "EOT", + mode: ticket + ticket-store: file + ticket-file: $tickets_file +EOT + sub { + is test(), "New"; + is test(), "New"; + is test(), "New"; + }); +}; + +subtest "memcached" => sub { + plan skip_all => "memcached not found" + unless prog_exists("memcached"); + my $memc_port = empty_port(); + my $doit = sub { + my $memc_proto = shift; + my $memc_guard = spawn_server( + argv => [ qw(memcached -l 127.0.0.1 -p), $memc_port, "-B", $memc_proto ], + is_ready => sub { + check_port($memc_port); + }, + ); + my $conf =<< "EOT"; + mode: ticket + ticket-store: memcached + memcached: + host: 127.0.0.1 + port: $memc_port + protocol: $memc_proto +EOT + spawn_with($conf, sub { + is test(), "New"; + is test(), "Reused"; + is test(), "Reused"; + }); + spawn_with($conf, sub { + sleep 1; + is test(), "Reused"; + }); + }; + $doit->("binary"); + $doit->("ascii"); +}; + +done_testing; + +my $server; + +sub spawn_with { + my ($opts, $cb) = @_; + $server = spawn_h2o(<< "EOT"); +ssl-session-resumption: +$opts +hosts: + default: + paths: + /: + file.dir: @{[ DOC_ROOT ]} +EOT + $cb->(); +} + +sub test { + my $lines = do { + my $cmd_opts = (-e "$tempdir/session" ? "-sess_in $tempdir/session" : "") . " -sess_out $tempdir/session"; + open my $fh, "-|", "openssl s_client $cmd_opts -connect 127.0.0.1:$server->{tls_port} 2>&1 < /dev/null" + or die "failed to open pipe:$!"; + local $/; + <$fh>; + }; + $lines =~ m{---\n(New|Reused),}s + or die "failed to parse the output of s_client:{{{$lines}}}"; + $1; +} diff --git a/src/web/server/h2o/libh2o/t/40session-ticket/forever_ticket.yaml b/src/web/server/h2o/libh2o/t/40session-ticket/forever_ticket.yaml new file mode 100644 index 000000000..0d7157887 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/40session-ticket/forever_ticket.yaml @@ -0,0 +1,6 @@ +- name: a397b6b7fab929366203f16fc81ffbed + cipher: aes-128-cbc + hash: sha1 + key: f1ed89cde68763630e80d2be827cfb98e3fe72644f64315a4a8ad63769a3577ccec4dd13b20eaf8c008886e5458db10e658cf2a83f04403ac4e98035d2422a75806730eb4f2fee12faff954895bc65d1 + not_before: 0 + not_after: 18446744073709551615 diff --git a/src/web/server/h2o/libh2o/t/40ssl-cipher-suite.t b/src/web/server/h2o/libh2o/t/40ssl-cipher-suite.t new file mode 100644 index 000000000..bda718421 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/40ssl-cipher-suite.t @@ -0,0 +1,38 @@ +use strict; +use warnings; +use File::Temp qw(tempfile); +use Net::EmptyPort qw(check_port empty_port); +use Scope::Guard qw(scope_guard); +use Test::More; +use t::Util; + +my $port = empty_port(); + +# spawn server that only accepts AES128-SHA +my ($conffh, $conffn) = tempfile(UNLINK => 1); +print $conffh <<"EOT"; +listen: + host: 127.0.0.1 + port: $port + ssl: + key-file: examples/h2o/server.key + certificate-file: examples/h2o/server.crt + cipher-suite: AES128-SHA +hosts: + default: + paths: + /: + file.dir: @{[ DOC_ROOT ]} +EOT +my ($guard, $pid) = spawn_server( + argv => [ bindir() . "/h2o", "-c", $conffn ], + is_ready => sub { + check_port($port); + }, +); + +# connect to the server with AES256-SHA as the first choice, and check that AES128-SHA was selected +my $log = `openssl s_client -cipher AES256-SHA:AES128-SHA -host 127.0.0.1 -port $port < /dev/null 2>&1`; +like $log, qr/^\s*Cipher\s*:\s*AES128-SHA\s*$/m; + +done_testing; diff --git a/src/web/server/h2o/libh2o/t/40unix-socket.t b/src/web/server/h2o/libh2o/t/40unix-socket.t new file mode 100644 index 000000000..985e76d38 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/40unix-socket.t @@ -0,0 +1,28 @@ +use strict; +use warnings; +use Digest::MD5 qw(md5_hex); +use File::Temp qw(tempdir); +use Test::More; +use t::Util; + +plan skip_all => 'nc -U not found' + unless prog_exists('nc') and `nc -h 2>&1` =~ /-U\t+Use UNIX domain socket/; + +my $tempdir = tempdir(CLEANUP => 1); +my $sock_path = "$tempdir/h2o.sock"; + +my $server = spawn_h2o(<< "EOT"); +listen: + type: unix + port: $sock_path +hosts: + default: + paths: + /: + file.dir: @{[ DOC_ROOT ]} +EOT + +my $resp = `(echo "GET / HTTP/1.0" ; echo) | nc -U $sock_path 2>&1`; +like $resp, qr{^HTTP/1\.[0-9]+ 200 OK\r\n}s; + +done_testing; diff --git a/src/web/server/h2o/libh2o/t/40virtual-host.t b/src/web/server/h2o/libh2o/t/40virtual-host.t new file mode 100644 index 000000000..aef1b6566 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/40virtual-host.t @@ -0,0 +1,83 @@ +use strict; +use warnings; +use Digest::MD5 qw(md5_hex); +use Net::EmptyPort qw(check_port); +use File::Temp qw(tempfile); +use Test::More; +use t::Util; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); + +subtest "basic" => sub { + # create config + my ($global_port, $alternate_port) = empty_ports(2); + my ($conffh, $conffn) = tempfile(UNLINK => 1); + print $conffh <<"EOT"; +listen: + host: 127.0.0.1 + port: $global_port +hosts: + "default:$global_port": + paths: + /: + file.dir: examples/doc_root + "alternate:$global_port": + listen: + host: 127.0.0.1 + port: $alternate_port + paths: + /: + file.dir: examples/doc_root.alternate +EOT + + # start server + my ($guard, $pid) = spawn_server( + argv => [ bindir() . "/h2o", "-c", $conffn ], + is_ready => sub { + check_port($global_port) && check_port($alternate_port); + }, + ); + + my $resp = `curl --silent --resolve default:$global_port:127.0.0.1 http://default:$global_port/`; + is md5_hex($resp), md5_file("examples/doc_root/index.html"), "'host: default' against default port"; + + $resp = `curl --silent --resolve alternate:$global_port:127.0.0.1 http://alternate:$global_port/`; + is md5_hex($resp), md5_file("examples/doc_root.alternate/index.txt"), "'host: alternate' against default port"; + + $resp = `curl --silent --resolve default:$alternate_port:127.0.0.1 http://default:$alternate_port/`; + is md5_hex($resp), md5_file("examples/doc_root.alternate/index.txt"), "'host: default' against alternate port"; + + $resp = `curl --silent --resolve alternate:$alternate_port:127.0.0.1 http://alternate:$alternate_port/`; + is md5_hex($resp), md5_file("examples/doc_root.alternate/index.txt"), "'host: alternate' against alternate port"; +}; + +subtest "wildcard" => sub { + my $server = spawn_h2o(sub { + my ($port, $tls_port) = @_; + return << "EOT"; +hosts: + default: + paths: + /: + file.dir: examples/doc_root + "*.example.com:$port": + paths: + /: + file.dir: examples/doc_root.alternate +EOT + }); + + my $fetch = sub { + my $host = shift; + my $resp = `curl --silent --resolve $host:$server->{port}:127.0.0.1 http://$host:$server->{port}/`; + md5_hex($resp); + }; + + is $fetch->("www.example.com"), md5_file("examples/doc_root.alternate/index.txt"), "www.example.com"; + is $fetch->("xxx.example.com"), md5_file("examples/doc_root.alternate/index.txt"), "xxx.example.com"; + is $fetch->("example.com"), md5_file("examples/doc_root/index.html"), "example.com"; + is $fetch->("example.org"), md5_file("examples/doc_root/index.html"), "example.org"; +}; + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/40websocket.t b/src/web/server/h2o/libh2o/t/40websocket.t new file mode 100644 index 000000000..a321c034a --- /dev/null +++ b/src/web/server/h2o/libh2o/t/40websocket.t @@ -0,0 +1,114 @@ +use strict; +use warnings; +use IO::Socket::INET; +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +plan skip_all => 'plackup not found' + unless prog_exists('plackup'); +plan skip_all => 'Starlet not found' + unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; + +# spawn upstream +my $upstream_port = empty_port(); +my $upstream = spawn_server( + argv => [ + qw(plackup -s Starlet --access-log /dev/null -p), $upstream_port, ASSETS_DIR . "/upstream.psgi", + ], + is_ready => sub { + check_port($upstream_port); + }, +); + +sub silent_server { + return spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + proxy.reverse.url: http://127.0.0.1:$upstream_port/ + proxy.websocket: ON + proxy.websocket.timeout: 1000 +EOT +} + +subtest "http/1.1" => sub { + my $server = silent_server(); + plan skip_all => "curl not found" + unless prog_exists("curl"); + my $resp = `curl --silent --insecure 'http://127.0.0.1:$server->{port}/index.txt'`; + is $resp, "hello\n"; +}; + +sub doit { + my $conn = shift; + my $req = join( + "\r\n", + "GET /websocket/ HTTP/1.1", + "Connection: upgrade", + "Upgrade: websocket", + "Sec-Websocket-Key: abcde", + "Sec-Websocket-Version: 13", + "", + "", + ); + is $conn->syswrite($req), length($req), "send request"; + $conn->sysread(my $rbuf, 65536) > 0 + or die "failed to read HTTP response"; + like $rbuf, qr{^HTTP\/1\.1 101 }is; + like $rbuf, qr{\r\n\r\n$}is; + like $rbuf, qr{\r\nupgrade: websocket\r\n}is; + unlike $rbuf, qr{\r\nupgrade:.*\r\nupgrade:}is; + like $rbuf, qr{\r\nsec-websocket-accept: .*\r\n}is; + for my $i (1..10) { + my $msg = "hello world $i\n"; + is $conn->syswrite($msg), length($msg), "write text ($i)"; + is $conn->sysread($rbuf, 65536), length($msg), "read echo ($i)"; + is $rbuf, $msg, "echo is correct ($i)"; + } + $conn->close; +} + +subtest "ws" => sub { + my $server = silent_server(); + my $conn = IO::Socket::INET->new( + PeerHost => '127.0.0.1', + PeerPort => $server->{port}, + Proto => 'tcp', + ) or die "failed to connect to 127.0.0.1:$server->{port}:$!"; + doit($conn); +}; + +subtest "wss" => sub { + my $server = silent_server(); + eval q{use IO::Socket::SSL; 1} + or plan skip_all => "IO::Socket::SSL not found"; + my $conn = IO::Socket::SSL->new( + PeerAddr => "127.0.0.1:$server->{tls_port}", + SSL_verify_mode => 0, + ) or die "failed to connect via TLS to 127.0.0.1:$server->{tls_port}:". IO::Socket::SSL::errstr(); + doit($conn); +}; + +subtest "logged-ws" => sub { + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + proxy.reverse.url: http://127.0.0.1:$upstream_port/ + proxy.websocket: ON + proxy.websocket.timeout: 1000 +access-log: /dev/null # enable logging +EOT + + my $conn = IO::Socket::INET->new( + PeerHost => '127.0.0.1', + PeerPort => $server->{port}, + Proto => 'tcp', + ) or die "failed to connect to 127.0.0.1:$server->{port}:$!"; + doit($conn); +}; + +done_testing; diff --git a/src/web/server/h2o/libh2o/t/50access-log.t b/src/web/server/h2o/libh2o/t/50access-log.t new file mode 100644 index 000000000..fd96217c2 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50access-log.t @@ -0,0 +1,281 @@ +use strict; +use warnings; +use File::Temp qw(tempdir); +use Test::More; +use t::Util; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); + +my $tempdir = tempdir(CLEANUP => 1); + +sub doit { + my ($cmd, $args, @expected) = @_; + + unlink "$tempdir/access_log"; + + $args = { format => $args } + unless ref $args; + + my $server = spawn_h2o(<< "EOT"); +ssl-session-resumption: + mode: cache + cache-store: internal +hosts: + default: + paths: + /: + file.dir: @{[ DOC_ROOT ]} + /fastcgi: + fastcgi.connect: + port: /nonexistent + type: unix + error-log.emit-request-errors: OFF + /set-cookie: + file.dir: @{[ DOC_ROOT ]} + header.add: "set-cookie: a=b" + header.add: "set-cookie: c=d" + header.add: "cache-control: must-revalidate" + header.add: "cache-control: no-store" + /compress: + file.dir: @{[ DOC_ROOT ]} + compress: [gzip] + access-log: + format: "$args->{format}" +@{[$args->{escape} ? " escape: $args->{escape}" : ""]} + path: $tempdir/access_log +EOT + + $cmd->($server); + + my @log = do { + open my $fh, "<", "$tempdir/access_log" + or die "failed to open access_log:$!"; + map { my $l = $_; chomp $l; $l } <$fh>; + }; + + for (my $i = 0; $i != @expected; ++$i) { + $expected[$i] = $expected[$i]->($server) + if ref $expected[$i] eq 'CODE'; + like $log[$i], $expected[$i]; + } +} + +subtest "custom-log" => sub { + doit( + sub { + my $server = shift; + system("curl --silent --referer http://example.com/ http://127.0.0.1:$server->{port}/ > /dev/null"); + }, + '%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\"', + qr{^127\.0\.0\.1 - - \[[0-9]{2}/[A-Z][a-z]{2}/20[0-9]{2}:[0-9]{2}:[0-9]{2}:[0-9]{2} [+\-][0-9]{4}\] "GET / HTTP/1\.1" 200 6 "http://example.com/" "curl/.*"$}, + ); +}; + +subtest "strftime" => sub { + doit( + sub { + my $server = shift; + system("curl --silent http://127.0.0.1:$server->{port}/ > /dev/null"); + }, + '%{%Y-%m-%dT%H:%M:%S}t', + qr{^20[0-9]{2}-(?:0[1-9]|1[012])-(?:[012][0-9]|3[01])T[0-9]{2}:[0-9]{2}:[0-9]{2}$}, + ); +}; + +subtest "strftime-special" => sub { + doit( + sub { + my $server = shift; + system("curl --silent http://127.0.0.1:$server->{port}/ > /dev/null"); + }, + '%{msec_frac}t::%{usec_frac}t::%{sec}t::%{msec}t::%{usec}t', + qr{^([0-9]{3})::(\1[0-9]{3})::([0-9]+)::\3\1::\3\2$}, + ); +}; + +subtest "more-fields" => sub { + my $local_port = ""; + doit( + sub { + my $server = shift; + my $resp = `curl --silent -w ',\%{local_port}' http://127.0.0.1:$server->{port}/`; + like $resp, qr{,(\d+)$}s; + $local_port = do { $resp =~ /,(\d+)$/s; $1 }; + }, + '\"%A:%p\" \"%{local}p\" \"%{remote}p\"', + sub { my $server = shift; qr{^\"127\.0\.0\.1:$server->{port}\" \"$server->{port}\" \"$local_port\"$} }, + ); +}; + +subtest 'ltsv-related' => sub { + doit( + sub { + my $server = shift; + system("curl --silent http://127.0.0.1:$server->{port} > /dev/null"); + system("curl --silent http://127.0.0.1:$server->{port}/query?abc=d > /dev/null"); + }, + '%m::%U%q::%H::%V::%v', + qr{^GET::/::HTTP/1\.1::127\.0\.0\.1:[0-9]+::default$}, + qr{^GET::/query\?abc=d::HTTP/1\.1::127\.0\.0\.1:[0-9]+::default$}, + ); +}; + +subtest 'timings' => sub { + my $doit = sub { + my $opts = shift; + doit( + sub { + my $server = shift; + system("curl $opts --silent --data helloworld http://127.0.0.1:$server->{port}/ > /dev/null"); + system("curl $opts --silent --insecure --data helloworld https://127.0.0.1:$server->{tls_port}/ > /dev/null"); + }, + '%{connect-time}x:%{request-header-time}x:%{request-body-time}x:%{response-time}x:%{request-total-time}x:%{duration}x:%{undefined}x', + map { qr{^[0-9\.]+:[0-9\.]+:[0-9\.]+:[0-9\.]+:[0-9\.]+:[0-9\.]+:-$} } (1..2), + ); + }; + subtest 'http1' => sub { + $doit->(""); + }; + subtest 'http2' => sub { + plan skip_all => "curl does not support HTTP/2" + unless curl_supports_http2(); + $doit->("--http2"); + }; +}; + +subtest 'header-termination (issue 462)' => sub { + doit( + sub { + my $server = shift; + system("curl --user-agent foobar/1 --silent http://127.0.0.1:$server->{port} > /dev/null"); + }, + '%{user-agent}i', + qr{^foobar/1$}, + ); + doit( + sub { + my $server = shift; + system("curl --user-agent foobar/1 --silent http://127.0.0.1:$server->{port} > /dev/null"); + }, + '%{content-type}o', + qr{^text/plain$}, + ); +}; + +subtest 'extensions' => sub { + doit( + sub { + my $server = shift; + system("curl --silent http://127.0.0.1:$server->{port}/ > /dev/null"); + system("curl --silent --insecure @{[curl_supports_http2() ? ' --http1.1' : '']} https://127.0.0.1:$server->{tls_port}/ > /dev/null"); + if (prog_exists("nghttp")) { + system("nghttp -n https://127.0.0.1:$server->{tls_port}/"); + system("nghttp -n --weight=22 https://127.0.0.1:$server->{tls_port}/"); + } + }, + '%{connection-id}x %{ssl.protocol-version}x %{ssl.session-reused}x %{ssl.cipher}x %{ssl.cipher-bits}x %{http2.stream-id}x %{http2.priority.received}x', + do { + my @expected = ( + qr{^2 - - - - - -$}is, + qr{^3 TLSv[0-9.]+ 0 \S+RSA\S+ (?:128|256) - -$}is, + ); + if (prog_exists("nghttp")) { + push @expected, +( + qr{^4 TLSv[0-9.]+ 0 \S+RSA\S+ (?:128|256) [0-9]*[13579] 0:[0-9]+:16}is, + qr{^5 TLSv[0-9.]+ 0 \S+RSA\S+ (?:128|256) [0-9]*[13579] 0:[0-9]+:22}is, + ); + } + @expected; + }, + ); +}; + +subtest 'ssl-log' => sub { + doit( + sub { + my $server = shift; + system("curl --silent -k https://127.0.0.1:$server->{tls_port}/ > /dev/null"); + }, + '%{ssl.session-id}x', + qr{^\S+$}s, + ); +}; + +subtest 'error' => sub { + doit( + sub { + my $server = shift; + system("curl --silent http://127.0.0.1:$server->{port}/fastcgi > /dev/null"); + }, + '%{error}x', + qr{^\[lib/handler/fastcgi\.c\] connection failed:}s, + ); +}; + +subtest 'set-cookie' => sub { + # set-cookie header is the only header to be concatenated with %{...}o, according to Apache + doit( + sub { + my $server = shift; + system("curl --silent http://127.0.0.1:$server->{port}/set-cookie/ > /dev/null"); + }, + '\\"%<{set-cookie}o\\" \\"%>{set-cookie}o\\" \\"%{set-cookie}o\\" \\"%{cache-control}o\\"', + qr{^"-" "a=b, c=d" "a=b, c=d" "must-revalidate"$}s, + ); +}; + +subtest 'escape' => sub { + for my $i ([default => qr{^/\\xe3\\x81\\x82$}s], [apache => qr{^/\\xe3\\x81\\x82$}s], [json => qr{^/\\u00e3\\u0081\\u0082$}s]) { + my ($escape, $expected) = @$i; + subtest $escape => sub { + doit( + sub { + my $server = shift; + system("curl --silent http://127.0.0.1:$server->{port}/\xe3\x81\x82 > /dev/null"); + }, + $escape eq 'default' ? '%U' : { format => '%U', escape => $escape }, + $expected, + ); + }; + } +}; + +subtest "json-null" => sub { + doit( + sub { + my $server = shift; + system("curl --silent http://127.0.0.1:$server->{port}/ > /dev/null"); + }, + # single specifier surrounded by quotes that consist a string literal in JSON should be converted to `null` if the specifier + # resolves to null + { format => '\\"%h\\" %l \\"%l\\" \'%l\' \'%l \' \'\\"%l\\"\'', escape => 'json' }, + qr{^"127\.0\.0\.1" null null null 'null ' '"null"'$}, + ); +}; + +subtest 'compressed-body-size' => sub { + my $doit = sub { + my ($opts, $expected) = @_; + doit( + sub { + my $server = shift; + system("curl $opts --silent http://127.0.0.1:$server->{port}/compress/alice.txt > /dev/null"); + }, + '%b', + qr{^$expected$}, + ); + }; + subtest 'http1' => sub { + $doit->("", 1661); + $doit->("-H 'Accept-Encoding: gzip'", 908); # it doesn't contain chunked encoding overhead (12) + }; + subtest 'http2' => sub { + plan skip_all => "curl does not support HTTP/2" + unless curl_supports_http2(); + $doit->("--http2", 1661); + $doit->("--http2 -H 'Accept-Encoding: gzip'", 908); + }; +}; + +done_testing; diff --git a/src/web/server/h2o/libh2o/t/50chunked-encoding-proxying.t b/src/web/server/h2o/libh2o/t/50chunked-encoding-proxying.t new file mode 100644 index 000000000..bb0dff806 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50chunked-encoding-proxying.t @@ -0,0 +1,84 @@ +use strict; +use warnings; +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; +use Time::HiRes qw(usleep); + +plan skip_all => 'nc not found' + unless prog_exists('nc'); + +plan skip_all => 'nghttp not found' + unless prog_exists('nghttp'); + +my $upstream_port = empty_port(); +$| = 1; +my $socket = new IO::Socket::INET ( + LocalHost => '127.0.0.1', + LocalPort => $upstream_port, + Proto => 'tcp', + Listen => 1, + Reuse => 1 +); +die "cannot create socket $!\n" unless $socket; + +check_port($upstream_port) or die "can't connect to server socket"; +# accent and close check_port's connection +my $client_socket = $socket->accept(); +close($client_socket); + +my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + "/": + proxy.reverse.url: http://127.0.0.1:$upstream_port +EOT + +sub doit { + my $chunk = shift; + my $data = shift; + my $stream_window_bits = shift; + my $defer_close = shift; + my $expect_rst_stream = shift; + open my $nghttp, "-|", "nghttp -w $stream_window_bits -v http://127.0.0.1:$server->{'port'}/ -H 'host: host.example.com' 2>&1"; + + my $req; + $client_socket = $socket->accept(); + $client_socket->recv($req, 1024); + $client_socket->send("HTTP/1.1 200 Ok\r\nTransfer-Encoding:chunked\r\nConnection:close\r\n\r\n$chunk"); + if ($defer_close) { + usleep(50000); + } + close($client_socket); + + my $found_rst_stream=0; + my $found_data=""; + while(<$nghttp>) { + if (/^[\[|\s]/) { + if (/RST_STREAM/) { + $found_rst_stream = 1; + } + } else { + # reassamble the DATA output + if (/^([^\[|^\s]+)[\[|\s].*DATA.*/) { + $found_data = $found_data.$1; + } + } + } + if ($expect_rst_stream) { + ok($found_rst_stream == 1, "Found RST_STREAM"); + } else { + ok($found_rst_stream == 0, "RST_STREAM not found, as expected"); + } + ok($found_data eq $data, "Found the expected data"); +} + +for my $w (1 .. 5) { + doit("5\r\nHello\r\n50\r\nThere", "HelloThere", $w, 0, 1); + doit("5\r\nHello\r\n50\r\nThere", "HelloThere", $w, 1, 1); +} +doit("5\r\nHello\r\n5\r\nThere\r\n", "HelloThere", 14); + +$socket->close(); +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/50compress-hint.t b/src/web/server/h2o/libh2o/t/50compress-hint.t new file mode 100644 index 000000000..23e52c50f --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50compress-hint.t @@ -0,0 +1,88 @@ +use strict; +use warnings; +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +plan skip_all => 'nc not found' + unless prog_exists('nc'); + +plan skip_all => 'curl not found' + unless prog_exists('curl'); + +my $upstream_port = empty_port(); +$| = 1; +my $socket = new IO::Socket::INET ( + LocalHost => '127.0.0.1', + LocalPort => $upstream_port, + Proto => 'tcp', + Listen => 1, + Reuse => 1 +); +die "cannot create socket $!\n" unless $socket; + +check_port($upstream_port) or die "can't connect to server socket"; +# accent and close check_port's connection +my $client_socket = $socket->accept(); +close($client_socket); + +my $server = spawn_h2o(<< "EOT"); +compress: ON +compress-minimum-size: 10 +hosts: + default: + paths: + "/": + proxy.reverse.url: http://127.0.0.1:$upstream_port +EOT + +sub doit { + my $msg = shift; + my $x_compress_header = shift; + my $expect_content_encoding = shift; + my $accept_gzip = shift; + + my $ae_header = ""; + if ($accept_gzip) { + $ae_header = "-Haccept-encoding:gzip"; + } + open(CURL, "curl $ae_header -Hhost:host.example.com -svo /dev/null http://127.0.0.1:$server->{'port'}/ 2>&1 |"); + + my $req; + $client_socket = $socket->accept(); + $client_socket->recv($req, 1024); + my $cl = length($msg); + $client_socket->send("HTTP/1.1 200 Ok\r\ncontent-length:${cl}\r\ncontent-type:text/html\r\n${x_compress_header}Connection:close\r\n\r\n$msg"); + close($client_socket); + + my $seen_content_encoding = 0; + while() { + if (/< content-encoding/) { + $seen_content_encoding = 1; + } + } + + my $neg = ""; + if ($expect_content_encoding == 0) { + $neg = "not "; + } + ok($seen_content_encoding == $expect_content_encoding, "The body was ${neg}encoded as expected"); +} + +doit("This is large enough to be compressed", "", 1, 1); +doit("This is large enough to be compressed", "x-compress-hint: auto\r\n", 1, 1); +doit("This is large enough to be compressed", "x-compress-hint: on\r\n", 1, 1); +doit("This is large enough to be compressed", "x-compress-hint: off\r\n", 0, 1); + +doit("too small", "", 0, 1); +doit("too small", "x-compress-hint: auto\r\n", 0, 1); +doit("too small", "x-compress-hint: on\r\n", 1, 1); +doit("too small", "x-compress-hint: off\r\n", 0, 1); + +doit("This is large enough to be compressed", "", 0, 0); +doit("This is large enough to be compressed", "x-compress-hint: auto\r\n", 0, 0); +doit("This is large enough to be compressed", "x-compress-hint: on\r\n", 0, 0); +doit("This is large enough to be compressed", "x-compress-hint: off\r\n", 0, 0); + +$socket->close(); +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/50compress.t b/src/web/server/h2o/libh2o/t/50compress.t new file mode 100644 index 000000000..b8674f7fa --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50compress.t @@ -0,0 +1,88 @@ +use strict; +use warnings; +use Digest::MD5 qw(md5_hex); +use Test::More; +use t::Util; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); + +my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /off: + file.dir: @{[DOC_ROOT]} + /on: + file.dir: @{[DOC_ROOT]} + compress: ON + /off-by-mime: + file.dir: @{[DOC_ROOT]} + compress: ON + file.mime.settypes: + text/plain: + extensions: [".txt"] + is_compressible: NO + /compress-jpg: + file.dir: @{[DOC_ROOT]} + compress: ON + file.mime.settypes: + image/jpg: + extensions: [".jpg"] + is_compressible: YES +EOT + +run_with_curl($server, sub { + my ($proto, $port, $curl) = @_; + plan skip_all => 'curl issue #661' + if $curl =~ /--http2/; + my $fetch_orig = sub { + my ($path, $opts) = @_; + run_prog("$curl --silent $opts $proto://127.0.0.1:$port$path/alice.txt"); + }; + my $fetch_gunzip = sub { + my ($path, $opts) = @_; + run_prog("$curl --silent $opts $proto://127.0.0.1:$port$path/alice.txt | gzip -cd"); + }; + my $expected = md5_file("@{[DOC_ROOT]}/alice.txt"); + + my $resp = $fetch_orig->("/off", ""); + is md5_hex($resp), $expected, "off wo. accept-encoding"; + $resp = $fetch_orig->("/on", ""); + is md5_hex($resp), $expected, "on wo. accept-encoding"; + $resp = $fetch_orig->("/off", "-H accept-encoding:gzip"); + is md5_hex($resp), $expected, "off with accept-encoding"; + $resp = $fetch_gunzip->("/on", "-H accept-encoding:gzip"); + is md5_hex($resp), $expected, "on with accept-encoding"; + $resp = $fetch_gunzip->("/on", "-H 'accept-encoding:gzip, deflate'"); + is md5_hex($resp), $expected, "on with accept-encoding: gzip, deflate"; + $resp = $fetch_gunzip->("/on", "-H 'accept-encoding:deflate, gzip'"); + is md5_hex($resp), $expected, "on with accept-encoding: deflate, gzip"; + $resp = $fetch_orig->("/on", "-H accept-encoding:deflate"); + is md5_hex($resp), $expected, "on with accept-encoding, deflate only"; + + $resp = $fetch_orig->("/off-by-mime", "-H accept-encoding:gzip"); + is md5_hex($resp), $expected, "off due to is_compressible:NO"; + + $resp = run_prog("$curl --silent -H accept-encoding:gzip $proto://127.0.0.1:$port/on/index.txt"); + is md5_hex($resp), md5_file("@{[DOC_ROOT]}/index.txt"), "tiny file not compressed"; + + $resp = run_prog("$curl --silent -H accept-encoding:gzip $proto://127.0.0.1:$port/on/halfdome.jpg"); + is md5_hex($resp), md5_file("@{[DOC_ROOT]}/halfdome.jpg"), "image not compressed"; + + $resp = run_prog("$curl --silent -H accept-encoding:gzip $proto://127.0.0.1:$port/compress-jpg/halfdome.jpg | gzip -cd"); + is md5_hex($resp), md5_file("@{[DOC_ROOT]}/halfdome.jpg"), "image compressed using gzip"; + + subtest "brotli-decompress" => sub { + plan skip_all => "bro not found" + unless prog_exists("bro"); + $resp = run_prog("$curl --silent -H accept-encoding:br $proto://127.0.0.1:$port/on/alice.txt | bro --decompress"); + is md5_hex($resp), md5_file("@{[DOC_ROOT]}/alice.txt"), "alice.txt"; + $resp = run_prog("$curl --silent -H accept-encoding:br $proto://127.0.0.1:$port/compress-jpg/halfdome.jpg | bro --decompress"); + is md5_hex($resp), md5_file("@{[DOC_ROOT]}/halfdome.jpg"), "halfdome.jpg"; + }; +}); + +undef $server; + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/50config-tag.t b/src/web/server/h2o/libh2o/t/50config-tag.t new file mode 100644 index 000000000..dd37f996d --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50config-tag.t @@ -0,0 +1,111 @@ +use strict; +use warnings; +use File::Temp qw(tempfile); +use Test::More; +use t::Util; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); + +my $curl = "curl --silent --show-error --dump-header /dev/stderr"; + +subtest 'basic' => sub { + my $included = temp_config_file(<< "EOT"); +header.add: &marked "foo: FOO" +file.dir: @{[DOC_ROOT]} +EOT + + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: !file $included +EOT + + my ($stderr, $stdout) = run_prog("$curl http://127.0.0.1:@{[$server->{port}]}/"); + like $stderr, qr{^HTTP/[^ ]+ 200\s}s; + like $stderr, qr{^foo: ?FOO\r$}im; +}; + +subtest 'multi-hop' => sub { + my $included2 = temp_config_file(<< "EOT"); +header.add: &marked "foo: FOO" +file.dir: @{[DOC_ROOT]} +EOT + my $included1 = temp_config_file(<< "EOT"); +!file $included2 +EOT + + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: !file $included1 +EOT + + my ($stderr, $stdout) = run_prog("$curl http://127.0.0.1:@{[$server->{port}]}/"); + like $stderr, qr{^HTTP/[^ ]+ 200\s}s; + like $stderr, qr{^foo: ?FOO\r$}im; +}; + +subtest 'with-alias' => sub { + my $included = temp_config_file(<< "EOT"); +header.add: &marked "foo: FOO" +file.dir: @{[DOC_ROOT]} +EOT + + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: !file $included + /another: + header.add: *marked + file.dir: @{[DOC_ROOT]} +EOT + + subtest 'with_merge' => sub { + my ($stderr, $stdout) = run_prog("$curl http://127.0.0.1:@{[$server->{port}]}/"); + like $stderr, qr{^HTTP/[^ ]+ 200\s}s; + like $stderr, qr{^foo: ?FOO\r$}im; + }; + + subtest 'with_alias' => sub { + my ($stderr, $stdout) = run_prog("$curl http://127.0.0.1:@{[$server->{port}]}/another/"); + like $stderr, qr{^HTTP/[^ ]+ 200\s}s; + like $stderr, qr{^foo: ?FOO\r$}im; + }; +}; + +subtest 'with-merge' => sub { + my $included2 = temp_config_file(<< "EOT"); +header.add: "foo: FOO" +EOT + my $included1 = temp_config_file(<< "EOT"); +<<: !file $included2 +header.append: "bar: BAR" +EOT + + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + <<: !file $included1 + file.dir: @{[ DOC_ROOT ]} +EOT + + my ($stderr, $stdout) = run_prog("$curl http://127.0.0.1:@{[$server->{port}]}/"); + like $stderr, qr{^HTTP/[^ ]+ 200\s}s; + like $stderr, qr{^foo: ?FOO\r$}im; + like $stderr, qr{^bar: ?BAR\r$}im; +}; + +done_testing(); + +sub temp_config_file { + my ($content) = @_; + my ($fh, $fn) = tempfile(UNLINK => 1); + print $fh $content; + return $fn; +} diff --git a/src/web/server/h2o/libh2o/t/50errordoc.t b/src/web/server/h2o/libh2o/t/50errordoc.t new file mode 100644 index 000000000..6f847dae4 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50errordoc.t @@ -0,0 +1,179 @@ +use strict; +use warnings; +use Test::More; +use Test::Exception; +use t::Util; + +subtest 'basic' => sub { + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + file.dir: @{[DOC_ROOT]} +error-doc: + status: 404 + url: /404.html +EOT + + my $expected = do { + open my $fh, '<', "@{[DOC_ROOT]}/404.html" + or die "failed to read file:@{[DOC_ROOT]}/404.html:$!"; + local $/; + <$fh>; + }; + run_with_curl($server, sub { + my ($proto, $port, $curl) = @_; + my $resp = `$curl --silent $proto://127.0.0.1:$port/nonexist`; + is $resp, $expected, "content"; + $resp = `$curl --silent --dump-header /dev/stderr $proto://127.0.0.1:$port/nonexist 2>&1 > /dev/null`; + like $resp, qr{^HTTP/[^ ]+ 404\s}s, "status"; + like $resp, qr{\r\ncontent-type:\s*text/html.*\r\n}is, "content-type"; + like $resp, qr{\r\ncontent-length:\s*@{[length $expected]}\r\n}is, "content-length"; + unlike $resp, qr{\r\nlast-modified:}is, "no last-modified"; + unlike $resp, qr{\r\etag:}is, "no etag"; + }); +}; + +subtest 'double-error' => sub { + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + file.dir: @{[DOC_ROOT]} +error-doc: + status: 404 + url: /nonexist +EOT + + run_with_curl($server, sub { + my ($proto, $port, $curl) = @_; + my $resp = `$curl --silent $proto://127.0.0.1:$port/nonexist`; + is $resp, "not found", "content"; + $resp = `$curl --silent --dump-header /dev/stderr $proto://127.0.0.1:$port/nonexist 2>&1 > /dev/null`; + like $resp, qr{^HTTP/[^ ]+ 404\s}s, "status"; + like $resp, qr{\r\ncontent-type:\s*text/plain.*\r\n}is, "content-type"; + like $resp, qr{\r\ncontent-length:\s*@{[length "not found"]}\r\n}is, "content-length"; + unlike $resp, qr{\r\nlast-modified:}is, "no last-modified"; + unlike $resp, qr{\r\etag:}is, "no etag"; + }); +}; + +subtest 'redirect' => sub { + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + file.dir: @{[DOC_ROOT]} +error-doc: + status: 404 + url: /subdir +EOT + + my $expected = do { + open my $fh, '<', "@{[DOC_ROOT]}/subdir/index.txt" + or die "failed to read file:@{[DOC_ROOT]}/subdir/index.txt:$!"; + local $/; + <$fh>; + }; + run_with_curl($server, sub { + my ($proto, $port, $curl) = @_; + my $resp = `$curl --silent $proto://127.0.0.1:$port/nonexist`; + is $resp, $expected, "content"; + $resp = `$curl --silent --dump-header /dev/stderr $proto://127.0.0.1:$port/nonexist 2>&1 > /dev/null`; + like $resp, qr{^HTTP/[^ ]+ 404\s}s, "status"; + like $resp, qr{\r\ncontent-type:\s*text/plain.*\r\n}is, "content-type"; + like $resp, qr{\r\ncontent-length:\s*@{[length $expected]}\r\n}is, "content-length"; + unlike $resp, qr{\r\nlast-modified:}is, "no last-modified"; + unlike $resp, qr{\r\etag:}is, "no etag"; + }); +}; + +subtest 'multi-error' => sub { + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + file.dir: @{[DOC_ROOT]} +error-doc: + - status: 404 + url: /404.html + - status: 500 + url: /500.html +EOT + + run_with_curl($server, sub { + my ($proto, $port, $curl) = @_; + my $resp = `$curl --silent --dump-header /dev/stderr $proto://127.0.0.1:$port/nonexist 2>&1 > /dev/null`; + like $resp, qr{^HTTP/[^ ]+ 404\s}s, "status"; + }); +}; + +subtest 'multi-status-error' => sub { + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + file.dir: @{[DOC_ROOT]} +error-doc: + - status: [404, 405] + url: /404.html +EOT + + my $expected = do { + open my $fh, '<', "@{[DOC_ROOT]}/404.html" + or die "failed to read file:@{[DOC_ROOT]}/404.html:$!"; + local $/; + <$fh>; + }; + run_with_curl($server, sub { + my ($proto, $port, $curl) = @_; + my $resp = `$curl --silent $proto://127.0.0.1:$port/nonexist`; + is $resp, $expected, "content"; + $resp = `$curl --silent --dump-header /dev/stderr $proto://127.0.0.1:$port/nonexist 2>&1 > /dev/null`; + like $resp, qr{^HTTP/[^ ]+ 404\s}s, "status"; + }); + run_with_curl($server, sub { + my ($proto, $port, $curl) = @_; + my $resp = `$curl --silent -X POST $proto://127.0.0.1:$port/index.txt`; + is $resp, $expected, "content"; + $resp = `$curl --silent --dump-header /dev/stderr -X POST $proto://127.0.0.1:$port/index.txt 2>&1 > /dev/null`; + like $resp, qr{^HTTP/[^ ]+ 405\s}s, "status"; + }); +}; + +subtest "empty status" => sub { + throws_ok sub { + spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + file.dir: @{[DOC_ROOT]} +error-doc: + - status: [] + url: /404.html +EOT + }, qr/server failed to start/, 'status must not be empty'; +}; + +subtest "duplicated statuses" => sub { + throws_ok sub { + spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + file.dir: @{[DOC_ROOT]} +error-doc: + - status: [@{[ join(', ', (400 .. 599), 599) ]}] + url: /error.html +EOT + }, qr/server failed to start/, 'duplicated statuses'; +}; + +done_testing; diff --git a/src/web/server/h2o/libh2o/t/50expires.t b/src/web/server/h2o/libh2o/t/50expires.t new file mode 100644 index 000000000..d5c25701b --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50expires.t @@ -0,0 +1,47 @@ +use strict; +use warnings; +use Test::More; +use t::Util; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); + +sub fetch { + my $extra_conf = shift; + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + file.dir: examples/doc_root +$extra_conf +EOT + return `curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/ 2>&1 > /dev/null`; +} + + +my $resp = fetch(''); +unlike $resp, qr/^cache-control:.*\Wmax-age/im, "off by default"; + +$resp = fetch(<< 'EOT'); +expires: OFF +EOT +unlike $resp, qr/^cache-control:.*\Wmax-age/im, "explicitly turned off"; + +$resp = fetch(<< 'EOT'); +expires: 1 day +EOT +like $resp, qr/^cache-control:.*\Wmax-age=86400\W/im, "expires 1 day"; + +$resp = fetch(<< 'EOT'); +expires: 1 month +EOT +like $resp, qr/^cache-control:.*\Wmax-age=2592000\W/im, "expires 1 month"; + +$resp = fetch(<< 'EOT'); + expires: OFF +expires: 1 day +EOT +unlike $resp, qr/^cache-control:.*\Wmax-age/im, "on at global, off at path-level"; + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/50fastcgi-cgi.t b/src/web/server/h2o/libh2o/t/50fastcgi-cgi.t new file mode 100644 index 000000000..c9440f391 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50fastcgi-cgi.t @@ -0,0 +1,35 @@ +# this test checks the behavior of `file.custom-handler` and `fastcgi.spawn` +use strict; +use warnings; +use Digest::MD5 qw(md5_hex); +use File::Temp qw(tempdir); +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); +eval q{use CGI; 1} + or plan skip_all => 'CGI.pm not found'; + +# spawn h2o +my $server = spawn_h2o(<< "EOT"); +file.custom-handler: + extension: .cgi + fastcgi.spawn: "exec \$H2O_ROOT/share/h2o/fastcgi-cgi" +hosts: + default: + paths: + "/": + file.dir: @{[ DOC_ROOT ]} +EOT + +run_with_curl($server, sub { + my ($proto, $port, $curl) = @_; + my $resp = `$curl --silent $proto://127.0.0.1:$port/hello.cgi?name=world`; + is $resp, "Hello world", "GET"; + $resp = `$curl --silent -F name=world $proto://127.0.0.1:$port/hello.cgi`; + is $resp, "Hello world", "POST"; +}); + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/50fastcgi-php.t b/src/web/server/h2o/libh2o/t/50fastcgi-php.t new file mode 100644 index 000000000..58678a936 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50fastcgi-php.t @@ -0,0 +1,54 @@ +# this test checks the behavior of `file.custom-handler` and `fastcgi.spawn` +use strict; +use warnings; +use Digest::MD5 qw(md5_hex); +use File::Temp qw(tempdir); +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); +plan skip_all => 'php-cgi not found' + unless prog_exists('php-cgi'); + +# spawn h2o +my $server = spawn_h2o(<< "EOT"); +file.custom-handler: + extension: .php + fastcgi.spawn: "exec php-cgi" +hosts: + default: + paths: + "/": + file.dir: @{[ DOC_ROOT ]} +EOT + +my $resp = `curl --silent http://127.0.0.1:$server->{port}/index.txt`; +is $resp, "hello\n", 'ordinary file'; + +$resp = `curl --silent http://127.0.0.1:$server->{port}/hello.php`; +is $resp, 'hello world', 'php'; + +subtest 'server-push' => sub { + plan skip_all => 'nghttp not found' + unless prog_exists('nghttp'); + my $doit = sub { + my ($proto, $port) = @_; + my $resp = `nghttp -n --stat '$proto://127.0.0.1:$port/hello.php?link=\%3b\%20rel=preload'`; + like $resp, qr{\nid\s*responseEnd\s.*\s/index\.js\n.*\s/hello\.php\?}is, $proto; + }; + $doit->('http', $server->{port}); + $doit->('https', $server->{tls_port}); +}; + +subtest 'huge-headers' => sub { + run_with_curl($server, sub { + my ($proto, $port, $curl) = @_; + my $resp = `$curl --silent --dump-header /dev/stderr --max-redirs 0 $proto://127.0.0.1:$port/issues/951.php 2>&1 > /dev/null`; + like $resp, qr{^HTTP/[^ ]* 302 ?}is; + like $resp, qr{^set-cookie: ?}im; + }); +}; + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/50fastcgi.t b/src/web/server/h2o/libh2o/t/50fastcgi.t new file mode 100644 index 000000000..bdec377b4 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50fastcgi.t @@ -0,0 +1,139 @@ +use strict; +use warnings; +use Digest::MD5 qw(md5_hex); +use File::Temp qw(tempdir); +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); +plan skip_all => 'plackup not found' + unless prog_exists('plackup'); +plan skip_all => 'cannot run perl -MPlack::Handler::FCGI' + if system("perl -MPlack::Handler::FCGI /dev/null > /dev/null 2>&1") != 0; + +my $tempdir = tempdir(CLEANUP => 1); +my $fcgi_port = empty_port(); + +# gather information of test data +my %files = map { do { + my $fn = DOC_ROOT . "/$_"; + +($_ => { size => (stat $fn)[7], md5 => md5_file($fn) }); +} } qw(index.txt halfdome.jpg); + +sub doit { + my ($tcp, $keepalive) = @_; + subtest "tcp:$tcp,keepalive:$keepalive" => sub { + # spawn upstream + unlink "$tempdir/fcgi.sock"; + my $upstream = spawn_server( + argv => [ + qw(plackup -s FCGI --access-log /dev/null --listen), + ($tcp ? ":$fcgi_port" : "$tempdir/fcgi.sock"), + ASSETS_DIR . "/upstream.psgi", + ], + is_ready => sub { + $tcp ? check_port($fcgi_port) : -e "$tempdir/fcgi.sock"; + }, + ); + # spawn h2o + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + "/": + fastcgi.connect: + @{[$tcp ? "host: 127.0.0.1" : ""]} + port: @{[$tcp ? $fcgi_port : "$tempdir/fcgi.sock"]} + type: @{[$tcp ? "tcp" : "unix"]} +fastcgi.timeout.keepalive: @{[$keepalive ? 5000 : 0]} +EOT + # the tests + subtest 'files' => sub { + run_with_curl($server, sub { + my ($proto, $port, $curl) = @_; + for my $file (sort keys %files) { + my $content = `$curl --silent --show-error $proto://127.0.0.1:$port/$file`; + is length($content), $files{$file}->{size}, "$proto://127.0.0.1/$file (size)"; + is md5_hex($content), $files{$file}->{md5}, "$proto://127.0.0.1/$file (md5)"; + } + }); + }; + subtest 'echo' => sub { + # send header that exceeds the max. length fcgi record (the size of the response also exceeds the record size, and uses chunked encoding) + run_with_curl($server, sub { + my ($proto, $port, $curl) = @_; + plan skip_all => "skip due to curl bug #659" + if $curl =~ /--http2/; + my $content = `$curl --silent --show-error -H foo:@{["0123456789"x7000]} $proto://127.0.0.1:$port/echo-headers`; + like $content, qr/^foo: (0123456789){7000,7000}$/mi; + if ($proto eq 'https') { + like $content, qr/^https: on$/m; + } else { + unlike $content, qr/^https: on$/m; + } + }); + }; + subtest 'cookie-merge' => sub { + plan skip_all => "curl does not support HTTP/2" + unless curl_supports_http2(); + plan skip_all => "cowardly skipping to avoid https://github.com/plack/Plack/pull/511; unless PLACK_ENV=deployment is set" + unless $ENV{PLACK_ENV} && $ENV{PLACK_ENV} eq 'deployment'; + my $content = `curl --http2 --silent --show-error --insecure -H "cookie:a=b;c=d" https://127.0.0.1:$server->{tls_port}/echo-headers`; + like $content, qr/^cookie: a=b;\s*c=d$/mi; + }; + delete $server->{guard}; + }; +} + +doit(0, 0); +doit(1, 0); +doit(0, 1); +doit(1, 1); + +subtest 'httpoxy' => sub { + my $doit = sub { + my ($drop, $cb) = @_; + unlink "$tempdir/fcgi.sock"; + my $upstream = spawn_server( + argv => [ + qw(plackup -s FCGI --access-log /dev/null --listen), + "$tempdir/fcgi.sock", + ASSETS_DIR . "/upstream.psgi", + ], + is_ready => sub { + -e "$tempdir/fcgi.sock"; + }, + ); + # spawn h2o + my $dropconf = $drop ? << 'EOT' : ""; + setenv: + HTTP_PROXY: "" +EOT + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + "/": + fastcgi.connect: + port: $tempdir/fcgi.sock + type: unix +$dropconf +EOT + run_with_curl($server, sub { + my ($proto, $port, $curl) = @_; + my $content = `$curl --silent --show-error -H proxy:foobar $proto://127.0.0.1:$port/echo-headers`; + $cb->($content); + }); + }; + $doit->(undef, sub { + like $_[0], qr{^proxy: foobar$}mi, "keep"; + }); + $doit->(1, sub { + like $_[0], qr{^proxy: $}mi, "drop"; + }); +}; + + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/50file-config.t b/src/web/server/h2o/libh2o/t/50file-config.t new file mode 100644 index 000000000..aa58e697d --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50file-config.t @@ -0,0 +1,143 @@ +use strict; +use warnings; +use Test::More; +use t::Util; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); + +subtest 'root-redirect' => sub { + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /abc: + file.dir: @{[ DOC_ROOT ]} +EOT + + run_with_curl($server, sub { + my ($proto, $port, $curl) = @_; + my ($stderr, $stdout) = run_prog("$curl --silent --show-error --max-redirs 0 --dump-header /dev/stderr $proto://127.0.0.1:$port/abc"); + like $stderr, qr{^HTTP/[^ ]+ 301\s}s, "is 301"; + like $stderr, qr{^location: ?/abc/\r$}im, "location header"; + }); +}; + +subtest 'etag' => sub { + my $fetch = sub { + my $extra_conf = shift; + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + file.dir: examples/doc_root +$extra_conf +EOT + return `curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/ 2>&1 > /dev/null`; + }; + + my $etag_re = qr/^etag: /im; + my $resp = $fetch->(''); + like $resp, $etag_re, "default is on"; + $resp = $fetch->('file.etag: off'); + unlike $resp, $etag_re, "off"; + $resp = $fetch->('file.etag: on'); + like $resp, $etag_re, "on"; +}; + +subtest 'send-compressed' => sub { + my $doit = sub { + my ($send_compressed, $curl_opts, $paths, $expected_length) = @_; + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + file.dir: t/assets/doc_root +@{[ $send_compressed ? "file.send-compressed: $send_compressed" : "" ]} +EOT + my $fetch = sub { + my $path = shift; + subtest "send-compressed:@{[ $send_compressed || q(default) ]}, $curl_opts, $path" => sub { + my $resp = `curl --silent --dump-header /dev/stderr $curl_opts http://127.0.0.1:$server->{port}$path 2>&1 > /dev/null`; + if ($send_compressed ne 'gunzip') { + like $resp, qr/^content-length:\s*$expected_length\r$/im, "length is as expected"; + } + if ($send_compressed eq 'ON' || $send_compressed eq 'gunzip') { + like $resp, qr/^vary:\s*accept-encoding\r$/im, "has vary set"; + } else { + unlike $resp, qr/^vary:\s*accept-encoding\r$/im, "not has vary set"; + } + }; + }; + $fetch->($_) for @$paths; + }; + + my $index_orig_len = (stat 't/assets/doc_root/index.txt')[7]; + my $index_gz_len = (stat 't/assets/doc_root/index.txt.gz')[7]; + my $index_br_len = (stat 't/assets/doc_root/index.txt.br')[7]; + my $alice2_orig_len = `gzip -cd < t/assets/doc_root/alice2.txt.gz | wc -c`; + my $alice2_gz_len = (stat 't/assets/doc_root/alice2.txt.gz')[7]; + + $doit->("", "", ['/index.txt', '/'], $index_orig_len); + $doit->("", q{--header "Accept-Encoding: gzip"}, ['/index.txt', '/'], $index_orig_len); + $doit->("OFF", q{--header "Accept-Encoding: gzip"}, ['/index.txt', '/'], $index_orig_len); + $doit->("OFF", q{--header "Accept-Encoding: br, gzip"}, ['/index.txt', '/'], $index_orig_len); + + $doit->("ON", "", ['/index.txt', '/'], $index_orig_len); + $doit->("ON", q{--header "Accept-Encoding: gzip"}, ['/index.txt', '/'], $index_gz_len); + $doit->("ON", q{--header "Accept-Encoding: gzip, deflate"}, ['/index.txt', '/'], $index_gz_len); + $doit->("ON", q{--header "Accept-Encoding: deflate, gzip"}, ['/index.txt', '/'], $index_gz_len); + $doit->("ON", q{--header "Accept-Encoding: deflate"}, ['/index.txt', '/'], $index_orig_len); + $doit->("ON", q{--header "Accept-Encoding: br, gzip"}, ['/index.txt', '/'], $index_br_len); + $doit->("ON", q{--header "Accept-Encoding: gzip, br"}, ['/index.txt', '/'], $index_br_len); + $doit->("ON", q{--header "Accept-Encoding: br"}, ['/index.txt', '/'], $index_br_len); + + $doit->("gunzip", "", ['/alice2.txt'], $alice2_orig_len); + $doit->("gunzip", q{--header "Accept-Encoding: gzip"}, ['/alice2.txt'], $alice2_gz_len); + + + subtest 'MSIE-workaround' => sub { + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + file.dir: t/assets/doc_root + file.send-gzip: ON +EOT + my $resp = `curl --silent --dump-header /dev/stderr --user-agent "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)" --header "Accept-Encoding: gzip" http://127.0.0.1:$server->{port}/ 2>&1 > /dev/null`; + like $resp, qr/^content-length:\s*$index_gz_len\r$/im, "length is as expected"; + like $resp, qr/^cache-control:.*private.*\r$/im, "cache-control: private"; + unlike $resp, qr/^vary:/im, "no vary"; + }; +}; + +subtest 'dir-listing' => sub { + my $server = spawn_h2o(<< 'EOT'); +hosts: + default: + paths: + /off: + file.dir: examples/doc_root + file.dirlisting: off + /on: + file.dir: examples/doc_root + file.dirlisting: on + file.index: [] +EOT + + my $fetch = sub { + my $path = shift; + run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}$path"); + }; + + my ($headers, $content) = $fetch->("/on/"); + like $headers, qr{^HTTP/1\.[0-9]+ 200 }s, "ON returns 200"; + unlike $content, qr{examples}, "result should not include internal info"; + ($headers, $content) = $fetch->("/off/"); + like $headers, qr{^HTTP/1\.[0-9]+ 403 }s, "OFF returns 403"; +}; + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/50file-custom-handler.t b/src/web/server/h2o/libh2o/t/50file-custom-handler.t new file mode 100644 index 000000000..1acc9c1e7 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50file-custom-handler.t @@ -0,0 +1,96 @@ +use strict; +use warnings; +use Test::More; +use t::Util; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); + +subtest 'cgi file' => sub { + eval q{use CGI; 1} + or plan skip_all => 'CGI.pm not found'; + + # spawn h2o + my $server = spawn_h2o(<< "EOT"); +file.custom-handler: + extension: .cgi + fastcgi.spawn: "exec \$H2O_ROOT/share/h2o/fastcgi-cgi" +hosts: + default: + paths: + /robots.txt: + file.file: @{[DOC_ROOT]}/hello.cgi +EOT + run_with_curl($server, sub { + my ($proto, $port, $cmd) = @_; + my $resp = `$cmd --silent $proto://127.0.0.1:$port/robots.txt?name=Tobor`; + is $resp, "Hello Tobor"; + }); +}; + +subtest 'directory containing cgi files' => sub { + eval q{use CGI; 1} + or plan skip_all => 'CGI.pm not found'; + + # spawn h2o + my $server = spawn_h2o(<< "EOT"); +file.custom-handler: + extension: [".cgi"] + fastcgi.spawn: "exec \$H2O_ROOT/share/h2o/fastcgi-cgi" +hosts: + default: + paths: + /: + file.dir: @{[DOC_ROOT]} +EOT + run_with_curl($server, sub { + my ($proto, $port, $cmd) = @_; + my $resp = `$cmd --silent $proto://127.0.0.1:$port/hello.cgi?name=Tobor`; + is $resp, "Hello Tobor"; + }); +}; + +subtest 'SCRIPT_NAME and PATH_INFO for fastcgi' => sub { + eval q{use CGI; 1} + or plan skip_all => 'CGI.pm not found'; + + # spawn h2o + my $server = spawn_h2o(<< "EOT"); +file.index: ['printenv.cgi'] +file.custom-handler: + extension: .cgi + fastcgi.spawn: "exec \$H2O_ROOT/share/h2o/fastcgi-cgi" +hosts: + default: + paths: + /: + file.dir: @{[DOC_ROOT]} + /foo: + file.dir: @{[DOC_ROOT]} +EOT + my $doit = sub { + my ($path, $expected) = @_; + subtest $path => sub { + my $resp = `curl --silent http://127.0.0.1:$server->{port}$path`; + my $env = +{ map { split(':', $_, 2) } split(/\n/, $resp) }; + for my $key (sort keys %$expected) { + is $env->{$key}, $expected->{$key}, $key; + } + }; + }; + + $doit->('/printenv.cgi', + +{ SCRIPT_NAME => '/printenv.cgi', PATH_INFO => undef }); + $doit->('/printenv.cgi/path/info', + +{ SCRIPT_NAME => '/printenv.cgi', PATH_INFO => '/path/info' }); + $doit->('/foo/printenv.cgi/path/info', + +{ SCRIPT_NAME => '/foo/printenv.cgi', PATH_INFO => '/path/info' }); + $doit->('/', + +{ SCRIPT_NAME => '/printenv.cgi', PATH_INFO => undef }); + $doit->('/foo/', + +{ SCRIPT_NAME => '/foo/printenv.cgi', PATH_INFO => undef }); + +}; + +done_testing; + diff --git a/src/web/server/h2o/libh2o/t/50file-file.t b/src/web/server/h2o/libh2o/t/50file-file.t new file mode 100644 index 000000000..7dd3b9228 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50file-file.t @@ -0,0 +1,54 @@ +use strict; +use warnings; +use Test::More; +use t::Util; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); + +subtest 'static' => sub { + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /favicon.ico: + file.file: @{[DOC_ROOT]}/halfdome.jpg +EOT + run_with_curl($server, sub { + my ($proto, $port, $cmd) = @_; + my $fetch = sub { + my $path = shift; + return `$cmd --silent --dump-header /dev/stderr --max-redirs 0 $proto://127.0.0.1:$port$path 2>&1 > /dev/null`; + }; + my $resp = $fetch->("/"); + like $resp, qr{^HTTP/[0-9\.]+ 404}is; + $resp = $fetch->("/favicon.ico"); + like $resp, qr{^HTTP/[0-9\.]+ 200}is; + like $resp, qr{^content-type:\s*image/jpeg\r$}im; # type is inferred from the extension of the real file + like $resp, qr{^content-length:\s*@{[(stat "@{[DOC_ROOT]}/halfdome.jpg")[7]]}\r$}im; + }); +}; + +subtest 'dynamic' => sub { + eval q{use CGI; 1} + or plan skip_all => 'CGI.pm not found'; + + # spawn h2o + my $server = spawn_h2o(<< "EOT"); +file.custom-handler: + extension: .cgi + fastcgi.spawn: "exec \$H2O_ROOT/share/h2o/fastcgi-cgi" +hosts: + default: + paths: + /robots.txt: + file.file: @{[DOC_ROOT]}/hello.cgi +EOT + run_with_curl($server, sub { + my ($proto, $port, $cmd) = @_; + my $resp = `$cmd --silent $proto://127.0.0.1:$port/robots.txt?name=Tobor`; + is $resp, "Hello Tobor"; + }); +}; + +done_testing; diff --git a/src/web/server/h2o/libh2o/t/50file-range.t b/src/web/server/h2o/libh2o/t/50file-range.t new file mode 100644 index 000000000..826a2d283 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50file-range.t @@ -0,0 +1,100 @@ +use strict; +use warnings; +use Test::More; +use t::Util; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); + +my $all_data = do { + open my $fh, "<", "@{[DOC_ROOT]}/halfdome.jpg" + or die "failed to open file:@{[DOC_ROOT]}/halfdome.jpg:$!"; + undef $/; + <$fh>; +}; + +my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + file.dir: @{[ DOC_ROOT ]} +EOT + +run_with_curl($server, sub { + my ($proto, $port, $curl_cmd) = @_; + $curl_cmd .= " --silent --show-error"; + my $url = "$proto://127.0.0.1:$port/halfdome.jpg"; + + subtest "non-ranged" => sub { + my $resp = `$curl_cmd $url`; + is $resp, $all_data; + }; + + subtest "single-ranged" => sub { + subtest "closed" => sub { + my $resp = `$curl_cmd -r 100-499 $url`; + is $resp, substr($all_data, 100, 400), "content"; + + my $headers = `$curl_cmd -r 100-499 --dump-header /dev/stderr $url 2>&1 > /dev/null`; + like $headers, qr{^content-type:\s*image/jpeg\r$}mi, "content-type"; + like $headers, qr{^content-range:\s*bytes 100-499/@{[length $all_data]}\r}mi, "content-range"; + }; + + subtest "closed-exceed-end" => sub { + my $resp = `$curl_cmd -r 100-999999 $url`; + is $resp, substr($all_data, 100), "content"; + + my $headers = `$curl_cmd -r 100-999999 --dump-header /dev/stderr $url 2>&1 > /dev/null`; + like $headers, qr{^content-type:\s*image/jpeg\r$}mi, "content-type"; + like $headers, qr{^content-range:\s*bytes 100-@{[length($all_data) - 1]}/@{[length $all_data]}\r}mi, "content-range"; + }; + + subtest "closed-unsatisfied" => sub { + my $headers = `$curl_cmd --dump-header /dev/stderr -r 999999-999999 $url 2>&1 > /dev/null`; + like $headers, qr{^HTTP/[^ ]+ 416\s}mi, "416 response"; + }; + + subtest "tail-open" => sub { + my $resp = `$curl_cmd -r 100- $url`; + is $resp, substr($all_data, 100), "content"; + + my $headers = `$curl_cmd -r 100- --dump-header /dev/stderr $url 2>&1 > /dev/null`; + like $headers, qr{^content-type:\s*image/jpeg\r$}mi, "content-type"; + like $headers, qr{^content-range:\s*bytes 100-@{[length($all_data) - 1]}/@{[length $all_data]}\r}mi, "content-range"; + }; + + subtest "suffix" => sub { + my $resp = `$curl_cmd -r -100 $url`; + is $resp, substr($all_data, -100), "content"; + + my $headers = `$curl_cmd -r -100 --dump-header /dev/stderr $url 2>&1 > /dev/null`; + like $headers, qr{^content-type:\s*image/jpeg\r$}mi, "content-type"; + like $headers, qr{^content-range:\s*bytes @{[length($all_data) - 100]}-@{[length($all_data) - 1]}/@{[length $all_data]}\r}mi, "content-range"; + }; + + subtest "suffix-exceed" => sub { + my $resp = `$curl_cmd -r -999999 $url`; + is $resp, $all_data, "content"; + + my $headers = `$curl_cmd -r -999999 --dump-header /dev/stderr $url 2>&1 > /dev/null`; + like $headers, qr{^content-type:\s*image/jpeg\r$}mi, "content-type"; + like $headers, qr{^content-range:\s*bytes 0-@{[length($all_data) - 1]}/@{[length $all_data]}\r}mi, "content-range"; + }; + }; + + subtest "multi-ranged" => sub { + my $resp = `$curl_cmd -r 100-199,1000-1099 $url`; + my @chunks = split /(?:^|\r\n)--[0-9A-Za-z]{20}/s, $resp; + is scalar(@chunks), 4, "number of ranges"; + is $chunks[0], "", "before first boundary"; + is substr($chunks[1], -104), "\r\n\r\n" . substr($all_data, 100, 100), "first chunk"; + is substr($chunks[2], -104), "\r\n\r\n" . substr($all_data, 1000, 100), "second chunk"; + is $chunks[3], "--\r\n", "last boundary"; + + my $headers = `$curl_cmd -r 100-199,1000-1099 --dump-header /dev/stderr $url 2>&1 > /dev/null`; + like $headers, qr{^content-type:\s*multipart/byteranges; boundary=[0-9A-Za-z]{20}\r$}mi, "content-type"; + }; +}); + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/50file.t b/src/web/server/h2o/libh2o/t/50file.t new file mode 100644 index 000000000..c3474068b --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50file.t @@ -0,0 +1,22 @@ +use strict; +use warnings; +use Test::More; +use t::Util; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); + +subtest 'trailing-slash' => sub { + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + file.dir: @{[DOC_ROOT]} +EOT + + my $resp = `curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/index.txt/ 2>&1 > /dev/null`; + like $resp, qr{^HTTP/1.1 404 File Not Found}s, "status"; +}; + +done_testing; diff --git a/src/web/server/h2o/libh2o/t/50headers.t b/src/web/server/h2o/libh2o/t/50headers.t new file mode 100644 index 000000000..b930a07c3 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50headers.t @@ -0,0 +1,25 @@ +use strict; +use warnings; +use Test::More; +use t::Util; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); + +my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + file.dir: @{[ DOC_ROOT ]} +header.add: "strict-transport-security: max-age=31536000; includeSubDomains; preload " +header.unset: last-modified +EOT + +my $resp = `curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/index.txt 2>&1 > /dev/null`; +like $resp, qr{^HTTP/1\.1 200 }s, "200 response"; +like $resp, qr{^strict-transport-security: max-age=31536000; includeSubDomains; preload\r$}im, "hsts added"; +is +(() = $resp =~ m{^strict-transport-security:}img), 1, "header added only once"; +unlike $resp, qr{^last-modified: }, "last-modified unset"; + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/50http2_debug_state.t b/src/web/server/h2o/libh2o/t/50http2_debug_state.t new file mode 100644 index 000000000..b78dee413 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50http2_debug_state.t @@ -0,0 +1,69 @@ +use strict; +use warnings; +use Test::More; +use Test::Exception; +use t::Util; +use JSON; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); + +subtest 'minimum' => sub { + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + http2-debug-state: minimum + paths: + /: + file.dir: @{[ DOC_ROOT ]} +EOT + + run_with_curl($server, sub { + my ($proto, $port, $curl_cmd) = @_; + $curl_cmd .= " --silent --show-error"; + my $url = "$proto://127.0.0.1:$port/.well-known/h2/state"; + + if ($curl_cmd =~ /--http2/) { + subtest "single stream itself" => sub { + my ($headers, $body) = run_prog("$curl_cmd --dump-header /dev/stderr $url"); + like($headers, qr!^HTTP/2(\.0)? 200!); + my $data; + lives_ok { $data = decode_json($body) }; + is($data->{streams}->{1}->{state}, 'HALF_CLOSED_REMOTE'); + }; + } else { + subtest "return_404_when_http1" => sub { + my ($headers, $body) = run_prog("$curl_cmd --dump-header /dev/stderr $url"); + like($headers, qr!^HTTP/1.1 404!); + }; + } + }); +}; + +subtest 'hpack' => sub { + plan skip_all => "curl does not support HTTP/2" + unless curl_supports_http2(); + + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + http2-debug-state: hpack + paths: + /: + file.dir: @{[ DOC_ROOT ]} +EOT + + my ($proto, $port) = ('https', $server->{tls_port}); + my $curl_cmd = 'curl --insecure --http2 --silent --show-error --dump-header /dev/stderr'; + my $url = "$proto://127.0.0.1:$port/.well-known/h2/state"; + + subtest "with hpack state" => sub { + my ($headers, $body) = run_prog("$curl_cmd $url"); + like($headers, qr!^HTTP/2(\.0)? 200!); + my $data; + lives_ok { $data = decode_json($body) }; + ok(exists $data->{hpack}); + }; +}; + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/50internal-redirect.t b/src/web/server/h2o/libh2o/t/50internal-redirect.t new file mode 100644 index 000000000..01311e517 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50internal-redirect.t @@ -0,0 +1,117 @@ +use strict; +use warnings; +use File::Temp qw(tempfile); +use Net::EmptyPort qw(check_port empty_port); +use Digest::MD5 qw(md5_hex); +use Test::More; +use t::Util; + +plan skip_all => "curl not found" + unless prog_exists("curl"); + +my $upstream_port = empty_port(); +my $upstream = spawn_server( + argv => [ qw(plackup -s Starlet --access-log /dev/null --listen), $upstream_port, ASSETS_DIR . "/upstream.psgi" ], + is_ready => sub { + check_port($upstream_port); + }, +); + +subtest 'reproxy' => sub { + my ($port1, $port2) = empty_ports(2, { host => "0.0.0.0" }); + my $path_conf = << "EOT"; + proxy.reverse.url: http://127.0.0.1:$upstream_port +EOT + doit($port1, $path_conf, $port2, $path_conf, sub { + `curl --silent 'http://127.0.0.1:$port1/?resp:x-reproxy-url=http://127.0.0.1:$port2/'`; + }); +}; + +subtest 'location' => sub { + my ($port1, $port2) = empty_ports(2, { host => "0.0.0.0" }); + my $path_conf1 = << "EOT"; + redirect: + status: 302 + internal: YES + url: http://127.0.0.1:$port2/ +EOT + my $path_conf2 = << "EOT"; + file.dir: t/assets/doc_root +EOT + doit($port1, $path_conf1, $port2, $path_conf2, sub { + `curl --silent --max-redirs 0 'http://127.0.0.1:$port1/'`; + }); +}; + +subtest 'errordoc' => sub { + my ($port1, $port2) = empty_ports(2, { host => "0.0.0.0" }); + my $path_conf1 = << "EOT"; + file.dir: t/assets/doc_root + error-doc: + status: 404 + url: http://127.0.0.1:$port2/index.txt +EOT + my $path_conf2 = << "EOT"; + file.dir: t/assets/doc_root +EOT + doit($port1, $path_conf1, $port2, $path_conf2, sub { + `curl --silent 'http://127.0.0.1:$port1/404'`; + }); +}; + +done_testing; + +sub doit { + my ($port1, $path_conf1, $port2, $path_conf2, $cb) = @_; + (undef, my $access_log) = tempfile(UNLINK => 1); + my $conf = << "EOT"; +access-log: $access_log +reproxy: ON +hosts: + "127.0.0.1:$port1": + listen: + host: 0.0.0.0 + port: $port1 + paths: + "/": +$path_conf1 + "127.0.0.1:$port2": + listen: + host: 0.0.0.0 + port: $port2 + paths: + "/": +$path_conf2 +EOT + my $server = _spawn_h2o_raw($conf, [$port1, $port2]); + $cb->(); + + my @log = do { + open my $fh, '<', $access_log or die "failed to open log file: $!"; + <$fh>; + }; + is scalar(@log), 1, 'redirected internally'; +} + +sub _spawn_h2o_raw { + my ($conf, $ports) = @_; + my @opts; + + my ($conffh, $conffn) = tempfile(UNLINK => 1); + print $conffh $conf; + + my ($guard, $pid) = spawn_server( + argv => [ bindir() . "/h2o", "-c", $conffn ], + is_ready => sub { + check_port($_) or return for @$ports; + 1; + }, + ); + my $ret = { + guard => $guard, + pid => $pid, + conf_file => $conffn, + }; + return $ret; +} + diff --git a/src/web/server/h2o/libh2o/t/50mimemap.t b/src/web/server/h2o/libh2o/t/50mimemap.t new file mode 100644 index 000000000..c85febd97 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50mimemap.t @@ -0,0 +1,88 @@ +use strict; +use warnings; +use Test::More; +use t::Util; + +my $CURL_CMD = q{curl --silent --show-error --output /dev/null --write-out '%{content_type}'}; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); + +subtest "basic" => sub { + my $server = spawn_h2o(<< 'EOT'); +hosts: + default: + paths: + /: + file.dir: t/50mimemap/doc_root + /addtypes: + file.dir: t/50mimemap/doc_root + file.mime.addtypes: + application/xhtml+xml: .xhtml + /removetypes: + file.dir: t/50mimemap/doc_root + file.mime.removetypes: + - .xhtml + /settypes: + file.dir: t/50mimemap/doc_root + file.mime.settypes: + text/xml: .xhtml + file.mime.addtypes: + application/xml: .xhtml + default-type-test: + paths: + /: + file.dir: t/50mimemap/doc_root + file.mime.setdefaulttype: application/xhtml+xml +file.index: + - index.xhtml +EOT + + my $port = $server->{port}; + my %expected = ( + '/' => 'application/xml', + '/addtypes/' => 'application/xhtml+xml', + '/removetypes/' => 'application/octet-stream', + '/settypes/' => 'text/xml', + ); + + for my $path (sort keys %expected) { + my $ct = `$CURL_CMD http://127.0.0.1:$port$path`; + is $ct, $expected{$path}, "$path"; + $ct = `$CURL_CMD http://127.0.0.1:$port${path}index.xhtml`; + is $ct, $expected{$path}, "${path}index.xhtml"; + } + + my $ct = `$CURL_CMD --header 'host: default-type-test' http://127.0.0.1:$port/`; + is $ct, 'application/xhtml+xml', 'setdefaulttype'; +}; + +subtest "issue730" => sub { + my $server = spawn_h2o(<< 'EOT'); +hosts: + default: + paths: + /: + file.dir: t/assets/doc_root +file.mime.addtypes: + "text/plain; charset=mycharset": ".txt" +EOT + my $ct = `$CURL_CMD http://127.0.0.1:$server->{port}/index.txt`; + is $ct, "text/plain; charset=mycharset"; +}; + +subtest "reset mimemap to minimum" => sub { + my $server = spawn_h2o(<< 'EOT'); +file.mime.setdefaulttype: "application/octet-stream" +file.mime.settypes: {} +hosts: + default: + paths: + /: + file.dir: t/assets/doc_root +EOT + my $ct = `$CURL_CMD http://127.0.0.1:$server->{port}/index.txt`; + is $ct, "application/octet-stream"; +}; + +done_testing; diff --git a/src/web/server/h2o/libh2o/t/50mimemap/doc_root/index.xhtml b/src/web/server/h2o/libh2o/t/50mimemap/doc_root/index.xhtml new file mode 100644 index 000000000..ce0136250 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50mimemap/doc_root/index.xhtml @@ -0,0 +1 @@ +hello diff --git a/src/web/server/h2o/libh2o/t/50mruby-acl.t b/src/web/server/h2o/libh2o/t/50mruby-acl.t new file mode 100644 index 000000000..0c84a6821 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50mruby-acl.t @@ -0,0 +1,39 @@ +use strict; +use warnings; +use Digest::MD5 qw(md5_hex); +use Test::More; +use Test::Exception; +use t::Util; + +plan skip_all => 'mruby support is off' + unless server_features()->{mruby}; + +subtest "invalid configuration 1" => sub { + throws_ok sub { + spawn_h2o(<< 'EOT'); +hosts: + default: + paths: + /: + mruby.handler: | + acl { respond(403) } + acl { respond(200) } +EOT + }, qr/server failed to start/, 'acl cannot be called more than once'; +}; + +subtest "invalid configuration 2" => sub { + throws_ok sub { + spawn_h2o(<< 'EOT'); +hosts: + default: + paths: + /: + mruby.handler: | + acl { respond(403) } + proc {|env| [200, {}, []]} +EOT + }, qr/server failed to start/, 'acl configuration is ignored'; +}; + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/50mruby-dos-detector.t b/src/web/server/h2o/libh2o/t/50mruby-dos-detector.t new file mode 100644 index 000000000..6b7cdc561 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50mruby-dos-detector.t @@ -0,0 +1,111 @@ +use strict; +use warnings; +use Digest::MD5 qw(md5_hex); +use Test::More; +use t::Util; + +plan skip_all => 'mruby support is off' + unless server_features()->{mruby}; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); + +subtest "default callback" => sub { + my $server = spawn_h2o(<< 'EOT'); +num-threads: 1 +hosts: + default: + paths: + /: + mruby.handler: | + require "share/h2o/mruby/dos_detector.rb" + DoSDetector.new({ + :strategy => DoSDetector::CountingStrategy.new({ :period => 1000, :threshold => 2, :ban_period => 1 << 32 }), + }) + mruby.handler: + Proc.new do |env| + [200, {}, []] + end +EOT + subtest "forbidden" => sub { + { + my ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); + like $headers, qr{^HTTP/1\.1 200 }s, "status"; + } + { + my ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); + like $headers, qr{^HTTP/1\.1 403 }s, "status"; + is $body, "Forbidden", "content"; + } + }; +}; + +subtest "fallthrough callback" => sub { + my $server = spawn_h2o(<< 'EOT'); +num-threads: 1 +hosts: + default: + paths: + /: + mruby.handler: | + require "share/h2o/mruby/dos_detector.rb" + DoSDetector.new({ + :strategy => DoSDetector::CountingStrategy.new({ :period => 1000, :threshold => 2, :ban_period => 1 << 32 }), + :callback => DoSDetector.fallthrough_callback, + }) + mruby.handler: + Proc.new do |env| + [200, {}, ["DOS_COUNT is ", env["DOS_COUNT"], ", DOS_IP is ", env["DOS_IP"]]] + end +EOT + subtest "success" => sub { + { + my ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); + like $headers, qr{^HTTP/1\.1 200 }s, "status"; + } + { + my ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); + like $headers, qr{^HTTP/1\.1 200 }s, "status"; + is $body, "DOS_COUNT is 2, DOS_IP is 127.0.0.1", "content"; + } + }; +}; + +subtest "customized callback" => sub { + my $server = spawn_h2o(<< 'EOT'); +num-threads: 1 +hosts: + default: + paths: + /: + mruby.handler: | + require "share/h2o/mruby/dos_detector.rb" + DoSDetector.new({ + :strategy => DoSDetector::CountingStrategy.new({ :period => 1000, :threshold => 2, :ban_period => 1 << 32 }), + :callback => Proc.new do |env, detected, ip| + if detected + [503, {}, ["Service Unavailable"]] + else + [399, {}, []] + end + end + }) + mruby.handler: + Proc.new do |env| + [200, {}, []] + end +EOT + subtest "success" => sub { + { + my ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); + like $headers, qr{^HTTP/1\.1 200 }s, "status"; + } + { + my ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); + like $headers, qr{^HTTP/1\.1 503 }s, "status"; + is $body, "Service Unavailable", "content"; + } + }; +}; + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/50mruby-htpasswd.t b/src/web/server/h2o/libh2o/t/50mruby-htpasswd.t new file mode 100644 index 000000000..31cbf5961 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50mruby-htpasswd.t @@ -0,0 +1,48 @@ +use strict; +use warnings; +use Digest::MD5 qw(md5_hex); +use Test::More; +use t::Util; + +plan skip_all => 'mruby support is off' + unless server_features()->{mruby}; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); + +subtest "basic" => sub { + my $server = spawn_h2o(<< 'EOT'); +hosts: + default: + paths: + /: + mruby.handler: | + require "share/h2o/mruby/htpasswd.rb" + Htpasswd.new("t/assets/.htpasswd", "protected space") + mruby.handler: + Proc.new do |env| + [200, {}, ["hello ", env["REMOTE_USER"], "\n"]] + end +EOT + subtest "no-auth" => sub { + my ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); + like $headers, qr{^HTTP/1\.1 401 }s, "status"; + like $headers, qr{\r\nwww-authenticate: basic realm="protected space"\r}is, "www-authenticate header"; + unlike $body, qr/hello/; + }; + + subtest "fail" => sub { + my ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://aaa:aaa\@127.0.0.1:$server->{port}/"); + like $headers, qr{^HTTP/1\.1 401 }s, "status"; + like $headers, qr{\r\nwww-authenticate: basic realm="protected space"\r}is, "www-authenticate header"; + unlike $body, qr/hello/; + }; + + subtest "success" => sub { + my ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://dankogai:kogaidan\@127.0.0.1:$server->{port}/"); + like $headers, qr{^HTTP/1\.1 200 }s, "status"; + is $body, "hello dankogai\n", "content"; + }; +}; + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/50mruby-http-request.t b/src/web/server/h2o/libh2o/t/50mruby-http-request.t new file mode 100644 index 000000000..991d34ba0 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50mruby-http-request.t @@ -0,0 +1,269 @@ +use strict; +use warnings; +use Digest::MD5 qw(md5_hex); +use Net::EmptyPort qw(empty_port check_port); +use Test::More; +use t::Util; + +plan skip_all => 'mruby support is off' + unless server_features()->{mruby}; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); + +plan skip_all => 'plackup not found' + unless prog_exists('plackup'); + +plan skip_all => 'Starlet not found' + unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; + +my $upstream_hostport = "127.0.0.1:@{[empty_port()]}"; + +sub create_upstream { + my @args = ( + qw(plackup -s Starlet --keepalive-timeout 100 --access-log /dev/null --listen), + $upstream_hostport, + ASSETS_DIR . "/upstream.psgi", + ); + spawn_server( + argv => \@args, + is_ready => sub { + $upstream_hostport =~ /:([0-9]+)$/s + or die "failed to extract port number"; + check_port($1); + }, + ); +}; + +my $server = spawn_h2o(sub { + my ($port, $tls_port) = @_; + return << "EOT"; +proxy.timeout.io: 1000 +hosts: + default: + paths: + /: + mruby.handler: | + Proc.new do |env| + headers = {} + env.each do |key, value| + if /^HTTP_/.match(key) + headers[\$'] = value + end + end + headers["x-h2o-mruby"] = "1" + http_request("http://$upstream_hostport#{env["PATH_INFO"]}#{env["QUERY_STRING"]}", { + method: env["REQUEST_METHOD"], + headers: headers, + body: env["rack.input"], + }).join + end + /as_str: + mruby.handler: | + Proc.new do |env| + [200, {}, [http_request("http://$upstream_hostport/index.txt").join[2].join]] + end + /cl: + mruby.handler: | + Proc.new do |env| + if !/^\\/([0-9]+)/.match(env["PATH_INFO"]) + raise "failed to parse PATH_INFO" + end + cl = \$1 + body = ["abc", "def", "ghi", "jkl", "mno"] + if \$'.length != 0 + class T + def initialize(a) + \@a = a + end + def each(&b) + \@a.each(&b) + end + end + body = T.new(body) + end + [200, {"content-length" => cl}, body] + end + /esi: + mruby.handler: | + class ESIResponse + def initialize(input) + \@parts = input.split /()/ + \@parts.each_with_index do |part, index| + if /^ sub { + my ($headers, $body) = run_prog("$curl_cmd $proto://127.0.0.1:$port/index.txt"); + like $headers, qr{HTTP/[^ ]+ 500\s}is; + }; + my $upstream = create_upstream(); + subtest "get" => sub { + my ($headers, $body) = run_prog("$curl_cmd $proto://127.0.0.1:$port/index.txt"); + like $headers, qr{HTTP/[^ ]+ 200\s}is; + is $body, "hello\n"; + }; + subtest "headers" => sub { + my ($headers, $body) = run_prog("$curl_cmd $proto://127.0.0.1:$port/echo-headers"); + like $headers, qr{^HTTP/[^ ]+ 200\s}is; + like $body, qr{^host: $upstream_hostport$}im; + unlike $body, qr{^host: 127.0.0.1:$port$}im; + like $body, qr{^user-agent: *curl/}im; + like $body, qr{^accept: *\*/\*$}im; + like $body, qr{^x-h2o-mruby:}im; + }; + subtest "post" => sub { + my ($headers, $body) = run_prog("$curl_cmd --data 'hello world' $proto://127.0.0.1:$port/echo"); + like $headers, qr{HTTP/[^ ]+ 200\s}is; + is $body, 'hello world'; + }; + subtest "slow-chunked" => sub { + my ($headers, $body) = run_prog("$curl_cmd $proto://127.0.0.1:$port/streaming-body"); + like $headers, qr{HTTP/[^ ]+ 200\s}is; + is $body, (join "", 1..30); + }; + subtest "as_str" => sub { + my ($headers, $body) = run_prog("$curl_cmd $proto://127.0.0.1:$port/as_str/"); + like $headers, qr{HTTP/[^ ]+ 200\s}is; + is $body, "hello\n"; + }; + subtest "content-length" => sub { + subtest "non-chunked" => sub { + for my $i (0..15) { + subtest "cl=$i" => sub { + my ($headers, $body) = run_prog("$curl_cmd $proto://127.0.0.1:$port/cl/$i"); + like $headers, qr{^HTTP/[^ ]+ 200\s.*\ncontent-length:\s*$i\r}is; + is $body, substr "abcdefghijklmno", 0, $i; + } + }; + for my $i (16..30) { + subtest "cl=$i" => sub { + my ($headers, $body) = run_prog("$curl_cmd $proto://127.0.0.1:$port/cl/$i"); + like $headers, qr{^HTTP/[^ ]+ 200\s.*\ncontent-length:\s*15\r}is; + is $body, "abcdefghijklmno"; + } + }; + }; + subtest "chunked" => sub { + for my $i (0..30) { + subtest "cl=$i" => sub { + my ($headers, $body) = run_prog("$curl_cmd $proto://127.0.0.1:$port/cl/$i/chunked"); + like $headers, qr{^HTTP/[^ ]+ 200\s.*\ncontent-length:\s*$i\r}is; + is $body, substr "abcdefghijklmno", 0, $i; + } + }; + }; + }; + subtest "esi" => sub { + my ($headers, $body) = run_prog("$curl_cmd $proto://127.0.0.1:$port/esi/"); + like $headers, qr{HTTP/[^ ]+ 200\s}is; + is $body, "Hello to the world, from H2O!\n"; + }; + subtest "fast-path-partial" => sub { + my ($headers, $body) = run_prog("$curl_cmd $proto://127.0.0.1:$port/fast-path-partial/"); + like $headers, qr{HTTP/[^ ]+ 200\s}is; + is $body, join "", 2..30; + }; + subtest "async-delegate" => sub { + subtest "non-delegated" => sub { + my ($headers, $body) = run_prog("$curl_cmd $proto://127.0.0.1:$port/async-delegate/index.txt"); + like $headers, qr{HTTP/[^ ]+ 200\s}is; + is $body, "hello\n"; + }; + subtest "delegated" => sub { + my ($headers, $body) = run_prog("$curl_cmd $proto://127.0.0.1:$port/async-delegate/notfound"); + like $headers, qr{HTTP/[^ ]+ 200\s}is; + is $body, "delegated!"; + }; + }; +}); + +subtest 'empty body' => sub { + my $upstream = create_upstream(); + my $server = spawn_h2o(sub { + my ($port, $tls_port) = @_; + return << "EOT"; +hosts: + default: + paths: + /no-content: + mruby.handler: | + proc {|env| + resp = http_request("http://$upstream_hostport/no-content").join + resp[2] = [resp[2].join] + resp + } + /head: + mruby.handler: | + proc {|env| + resp = http_request("http://$upstream_hostport/index.txt", { :method => 'HEAD' }).join + resp[2] = [resp[2].join] + resp + } +EOT + }); + + run_with_curl($server, sub { + my ($proto, $port, $curl_cmd) = @_; + $curl_cmd .= ' --silent --dump-header /dev/stderr'; + + subtest "no content" => sub { + my ($headers, $body) = run_prog("$curl_cmd -m 1 $proto://127.0.0.1:$port/no-content"); + like $headers, qr{HTTP/[^ ]+ 204\s}is; + is $body, ""; + }; + + subtest "head" => sub { + my ($headers, $body) = run_prog("$curl_cmd -m 1 $proto://127.0.0.1:$port/head"); + like $headers, qr{HTTP/[^ ]+ 200\s}is; + is $body, ""; + }; + }); +}; + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/50mruby.t b/src/web/server/h2o/libh2o/t/50mruby.t new file mode 100644 index 000000000..d93f17e04 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50mruby.t @@ -0,0 +1,541 @@ +use strict; +use warnings; +use Digest::MD5 qw(md5_hex); +use File::Temp qw(tempdir); +use Test::More; +use t::Util; + +plan skip_all => 'mruby support is off' + unless server_features()->{mruby}; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); + +subtest "handler-file" => sub { + my $server = spawn_h2o(<< 'EOT'); +hosts: + default: + paths: + /: + mruby.handler-file: t/50mruby/hello.rb +EOT + my ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); + is $body, "hello from h2o_mruby\n"; + like $headers, qr{^HTTP/1\.1 200 OK\r\n}s; + like $headers, qr{^content-type: text/plain; charset=utf-8\r$}im; +}; + +subtest "basic" => sub { + my $server = spawn_h2o(<< 'EOT'); +hosts: + default: + paths: + /inline: + mruby.handler: | + Proc.new do |env| + [200, {}, ["hello from h2o_mruby\n"]] + end + /return-404: + mruby.handler: | + Proc.new do |env| + [404, {}, ["not found"]] + end + file.dir: examples/doc_root + /fallthru: + mruby.handler: | + Proc.new do |env| + [399, {}, []] + end + file.dir: t/50mruby/ + /echo: + mruby.handler: | + Proc.new do |env| + [200, {}, [JSON.generate(env)]] + end + /headers: + mruby.handler: | + Proc.new do |env| + [200, {"foo" => "123\n456", "bar" => "baz"}, []] + end + /headers-each: + mruby.handler: | + Proc.new do |env| + [200, [["content-type", "text/plain"], ["hello", "world"]], []] + end +EOT + my $fetch = sub { + my $path = shift; + run_prog("curl --silent -A h2o_mruby_test --dump-header /dev/stderr http://127.0.0.1:$server->{port}$path"); + }; + my ($headers, $body) = $fetch->("/inline/"); + is $body, "hello from h2o_mruby\n", "inline"; + subtest "return-404" => sub { + ($headers, $body) = $fetch->("/return-404/"); + like $headers, qr{^HTTP/1\.1 404 }is; + is $body, "not found"; + }; + subtest "fallthru" => sub { + ($headers, $body) = $fetch->("/fallthru/"); + like $headers, qr{^HTTP/1\.1 200 OK\r\n}is; + is md5_hex($body), md5_file("t/50mruby/index.html"); + }; + subtest "echo" => sub { + ($headers, $body) = $fetch->("/echo/abc?def"); + like $body, qr{"REQUEST_METHOD":"GET"}, "REQUEST_METHOD"; + like $body, qr{"SCRIPT_NAME":"/echo"}, "SCRIPT_NAME"; + like $body, qr{"PATH_INFO":"/abc"}, "PATH_INFO"; + like $body, qr{"QUERY_STRING":"def"}, "QUERY_STRING"; + like $body, qr{"SERVER_NAME":"default"}, "SERVER_NAME"; + like $body, qr{"SERVER_ADDR":"127.0.0.1"}, "SERVER_ADDR"; + like $body, qr{"SERVER_PORT":"$server->{port}"}, "SERVER_PORT"; + like $body, qr{"HTTP_HOST":"127.0.0.1:$server->{port}"}, "HTTP_HOST"; + like $body, qr{"SERVER_ADDR":"127.0.0.1"}, "REMOTE_ADDR"; + like $body, qr{"SERVER_PORT":"[0-9]+"}, "REMOTE_PORT"; + like $body, qr{"HTTP_USER_AGENT":"h2o_mruby_test"}, "HTTP_USER_AGENT"; + like $body, qr{"rack.url_scheme":"http"}, "url_scheme"; + like $body, qr{"SERVER_SOFTWARE":"h2o/[0-9]+\.[0-9]+\.[0-9]+}, "SERVER_SOFTWARE"; + }; + subtest "protocol" => sub { + run_with_curl($server, sub { + my ($proto, $port, $curl) = @_; + my $content = `$curl --silent --show-error $proto://127.0.0.1:$port/echo`; + if ($curl =~ /http2/) { + like $content, qr{"SERVER_PROTOCOL":"HTTP/2"}, "SERVER_PROTOCOL"; + } else { + like $content, qr{"SERVER_PROTOCOL":"HTTP/1\.1"}, "SERVER_PROTOCOL"; + } + }); + }; + subtest "headers" => sub { + ($headers, $body) = $fetch->("/headers/"); + like $headers, qr{^foo: 123\r$}mi; + like $headers, qr{^foo: 456\r$}mi; + like $headers, qr{^bar: baz\r$}mi; + }; + subtest "headers-each" => sub { + ($headers, $body) = $fetch->("/headers-each/"); + like $headers, qr{^content-type: text/plain\r$}mi; + like $headers, qr{^hello: world\r$}mi; + }; +}; + +subtest "reprocess_request" => sub { + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + reproxy: ON + paths: + /: + mruby.handler: | + Proc.new do |env| + [200, {"x-reproxy-url" => "http://default/dest#{env["PATH_INFO"]}"}, ["should never see this"]] + end + /307: + mruby.handler: | + Proc.new do |env| + [307, {"x-reproxy-url" => "http://default/dest#{env["PATH_INFO"]}"}, ["should never see this"]] + end + /dest: + mruby.handler: | + Proc.new do |env| + [200, {}, ["#{env["SCRIPT_NAME"]}#{env["PATH_INFO"]};#{env["CONTENT_LENGTH"]}"]] + end +EOT + my ($stderr, $stdout) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); + is $stdout, "/dest/;"; + ($stderr, $stdout) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/hoge"); + is $stdout, "/dest/hoge;"; + subtest "preserve-method" => sub { + ($stderr, $stdout) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/307/"); + is $stdout, "/dest/;"; + ($stderr, $stdout) = run_prog("curl --data hello --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/307/"); + is $stdout, "/dest/;5"; + ($stderr, $stdout) = run_prog("curl --data hello --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); + is $stdout, "/dest/;"; + }; +}; + +subtest "server-push" => sub { + plan skip_all => 'nghttp not found' + unless prog_exists('nghttp'); + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + mruby.handler: | + Proc.new do |env| + push_paths = [] + if env["PATH_INFO"] == "/index.txt" + push_paths << "/index.js" + end + [399, push_paths.empty? ? {} : {"link" => push_paths.map{|p| "<#{p}>; rel=preload"}.join()}, []] + end + file.dir: t/assets/doc_root +EOT + my $resp = `nghttp -n --stat https://127.0.0.1:$server->{tls_port}/index.txt`; + like $resp, qr{\nid\s*responseEnd\s.*\s/index\.js\n.*\s/index\.txt}is, "receives index.js then /index.txt"; +}; + +subtest "server-push / nopush" => sub { + plan skip_all => 'nghttp not found' + unless prog_exists('nghttp'); + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + mruby.handler: | + Proc.new do |env| + push_paths = [] + if env["PATH_INFO"] == "/index.txt" + push_paths << "/index.js" + end + [399, push_paths.empty? ? {} : {"link" => push_paths.map{|p| "<#{p}>; rel=preload; nopush"}.join()}, []] + end + file.dir: t/assets/doc_root +EOT + my $resp = `nghttp -n --stat https://127.0.0.1:$server->{tls_port}/index.txt`; + unlike $resp, qr{/index\.js}is, "receives only /index.txt"; + like $resp, qr{/index\.txt}is, "receives only /index.txt"; +}; + +subtest "infinite-reprocess" => sub { + my $server = spawn_h2o(sub { + my ($port, $tls_port) = @_; + return << "EOT"; +hosts: + "127.0.0.1:$port": + paths: + /: + reproxy: ON + mruby.handler: | + Proc.new do |env| + [200,{"x-reproxy-url" => "http://127.0.0.1:$port/"},[]] + end +EOT + }); + my ($stderr, $stdout) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); + like $stderr, qr{^HTTP\/1.1 502 }s, "502 response"; + like $stdout, qr{too many internal delegations}, "reason"; +}; + +subtest "send-file" => sub { + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + mruby.handler: | + Proc.new do |env| + [200,{}, File::open("t/50mruby/index.html")] + end +EOT + my ($headers, $body) = run_prog("curl --silent -A h2o_mruby_test --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); + like $headers, qr{^HTTP/1\.1 200 OK\r\n}is; + is md5_hex($body), md5_file("t/50mruby/index.html"); +}; + +subtest "exception" => sub { + my $server = spawn_h2o(<< 'EOT'); +num-threads: 1 +hosts: + default: + paths: + /: + mruby.handler: | + cnt = 0 + Proc.new do |env| + cnt += 1 + if cnt % 2 != 0 + [200, {}, ["hello\n"]] + else + raise "error from rack" + end + end +EOT + my $fetch = sub { + run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}"); + }; + for (1..3) { + my ($headers, $body) = $fetch->(); + like $headers, qr{^HTTP/1\.1 200 }is; + is $body, "hello\n"; + ($headers, $body) = $fetch->(); + like $headers, qr{^HTTP/1\.1 500 }is; + } +}; + +subtest "post" => sub { + my $server = spawn_h2o(<< "EOT"); +num-threads: 1 +hosts: + default: + paths: + /: + mruby.handler: | + Proc.new do |env| + body = [] + 3.times do + env["rack.input"].rewind + body << env["rack.input"].read + body << "\\n" + end + [200, {}, body] + end +EOT + my ($headers, $body) = run_prog("curl --silent --data 'hello' --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); + like $headers, qr{^HTTP/1\.1 200 OK\r\n}is; + is $body, "hello\n" x 3; +}; + +subtest "InputStream#read-after-close" => sub { + my $server = spawn_h2o(<< "EOT"); +num-threads: 1 +hosts: + default: + paths: + /: + mruby.handler: | + prev_input = nil + Proc.new do |env| + if !prev_input + prev_input = env["rack.input"] + resp = "not cached" + else + begin + prev_input.read + resp = "must not seed this" + rescue IOError => e + resp = "got IOError" + end + end + [200, {}, [resp]] + end +EOT + my ($headers, $body) = run_prog("curl --silent --data 'hello' --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); + like $headers, qr{^HTTP/1\.1 200 OK\r\n}is; + is $body, "not cached"; + ($headers, $body) = run_prog("curl --silent --data 'hello' --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); + like $headers, qr{^HTTP/1\.1 200 OK\r\n}is; + is $body, "got IOError"; +}; + +subtest "header-concat" => sub { + my $server = spawn_h2o(<< "EOT"); +num-threads: 1 +hosts: + default: + paths: + /: + mruby.handler: | + Proc.new do |env| + [200, {}, [env["HTTP_COOKIE"]]] + end +EOT + run_with_curl($server, sub { + my ($proto, $port, $curl) = @_; + my ($headers, $body) = run_prog("$curl --silent -H 'cookie: a=b' -H 'cookie: c=d' --dump-header /dev/stderr $proto://127.0.0.1:$port/"); + like $headers, qr{^HTTP/\S+ 200}is; + like $body, qr{^a=b;\s*c=d$}is; + }); +}; + +subtest "close-called" => sub { + my $server = spawn_h2o(<< "EOT"); +num-threads: 1 +hosts: + default: + paths: + /: + mruby.handler: | + is_open = false + lambda do |env| + if is_open + return [500, {}, ["close not called"]] + end + is_open = true + return [ + 200, + {}, + Class.new do + def each + yield "hello" + end + define_method(:close) do + is_open = false + end + end.new, + ] + end +EOT + my ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); + like $headers, qr{^HTTP/1\.1 200 }is; + is $body, "hello"; + ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); + like $headers, qr{^HTTP/1\.1 200 }is; + is $body, "hello"; +}; + +subtest "close-called-on-exception" => sub { + my $server = spawn_h2o(<< "EOT"); +num-threads: 1 +hosts: + default: + paths: + /: + mruby.handler: | + is_open = false + lambda do |env| + if is_open + return [500, {}, ["close not called"]] + end + is_open = true + return [ + 200, + {}, + Class.new do + def each + yield "hello" + raise "yeah!" + end + define_method(:close) do + is_open = false + end + end.new, + ] + end +EOT + my ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); + like $headers, qr{^HTTP/1\.1 200 }is; + is $body, "hello"; + ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); + like $headers, qr{^HTTP/1\.1 200 }is; + is $body, "hello"; +}; + +subtest "log lineno" => sub { + my $tester = sub { + my ($name, $conf, $expected) = @_; + + subtest $name => sub { + my $tempdir = tempdir(CLEANUP => 1); + unlink "$tempdir/error_log"; + my $server = spawn_h2o(<< "EOT"); +$conf +error-log: $tempdir/error_log +EOT + run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); + my @log = do { + open my $fh, "<", "$tempdir/error_log" + or die "failed to open error_log:$!"; + map { my $l = $_; chomp $l; $l } <$fh>; + }; + @log = grep { $_ =~ /^\[h2o_mruby\]/ } @log; + like $log[$#log], qr{\[h2o_mruby\] in request:/:mruby raised: @{[$server->{conf_file}]}:$expected:\s*hoge \(RuntimeError\)}; + }; + }; + $tester->("flow style", <<"EOT", 5); +hosts: + default: + paths: + /: + mruby.handler: Proc.new do |env| raise "hoge" end +EOT + $tester->("block style", <<"EOT", 7); +hosts: + default: + paths: + /: + mruby.handler: | + Proc.new do |env| + raise "hoge" + end +EOT +}; + +subtest 'response with specific statuses should not contain content-length header' => sub { + my $server = spawn_h2o(<< "EOT"); +num-threads: 1 +hosts: + default: + paths: + /: + mruby.handler: | + proc {|env| + [204, {}, []] + } +EOT + my ($headers, $body) = run_prog("curl --silent --data 'hello' --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); + like $headers, qr{^HTTP/1\.1 204 OK\r\n}is; + unlike $headers, qr{^content-length:}im; +}; + +subtest 'PATH_INFO and SCRIPT_NAME' => sub { + plan skip_all => "nc not found" + unless prog_exists("nc"); + + my $server = spawn_h2o(<< "EOT"); +num-threads: 1 +hosts: + default: + paths: + /: + mruby.handler: | + proc {|env| + [200, {}, ['handler1, ' + env['SCRIPT_NAME'] + ', ' + env['PATH_INFO']]] + } + /abc: + mruby.handler: | + proc {|env| + [200, {}, ['handler2, ' + env['SCRIPT_NAME'] + ', ' + env['PATH_INFO']]] + } + "/foo bar": + mruby.handler: | + proc {|env| + [200, {}, ['handler3, ' + env['SCRIPT_NAME'] + ', ' + env['PATH_INFO']]] + } +EOT + my $nc = sub { + my $path = shift; + my $cmd = "echo 'GET $path HTTP/1.1\\r\\nHost: 127.0.0.1\\r\\n\\r' | nc 127.0.0.1 $server->{port}"; + (undef, my $r) = run_prog($cmd); + split(/\r\n\r\n/, $r, 2); + }; + + my $body; + (undef, $body) = $nc->('/abc/def%20ghi'); + is $body, 'handler2, /abc, /def%20ghi', 'should be kept undecoded'; + + (undef, $body) = $nc->('/abc/def/../ghi/../jhk'); + is $body, 'handler2, /abc, /def/../ghi/../jhk', 'https://github.com/h2o/h2o/pull/1480#issuecomment-339614160'; + + (undef, $body) = $nc->('/123/../abc/def/../ghi'); + is $body, 'handler2, /abc, /def/../ghi', 'https://github.com/h2o/h2o/pull/1480#issuecomment-339658134'; + + (undef, $body) = $nc->('/foo%20bar/baz'); + is $body, 'handler3, /foo bar, /baz', 'paths should be decoded'; + + (undef, $body) = $nc->('/xxx/../hoge'); + is $body, 'handler1, , /xxx/../hoge', 'string size is too big issue 1'; + + (undef, $body) = $nc->('/../abc'); + is $body, 'handler2, /abc, ', 'string size is too big issue 2'; + + (undef, $body) = $nc->('abc'); + is $body, 'handler2, /abc, ', 'no leading slash 1'; + + (undef, $body) = $nc->('abc/def'); + is $body, 'handler2, /abc, /def', 'no leading slash 2'; + + (undef, $body) = $nc->('123/../abc/def/../ghi'); + is $body, 'handler2, /abc, /def/../ghi', 'no leading slash 3'; + + (undef, $body) = $nc->('xyz'); + is $body, 'handler1, , xyz', 'no leading slash 4'; + + (undef, $body) = $nc->(''); + is $body, 'handler1, , ', 'empty path'; +}; + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/50mruby/hello.rb b/src/web/server/h2o/libh2o/t/50mruby/hello.rb new file mode 100644 index 000000000..34f32140c --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50mruby/hello.rb @@ -0,0 +1,3 @@ +Proc.new do |env| + [200, {"content-type" => "text/plain; charset=utf-8"}, ["hello from h2o_mruby\n"]] +end diff --git a/src/web/server/h2o/libh2o/t/50mruby/index.html b/src/web/server/h2o/libh2o/t/50mruby/index.html new file mode 100644 index 000000000..d0287e655 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50mruby/index.html @@ -0,0 +1 @@ +I'm index.html diff --git a/src/web/server/h2o/libh2o/t/50post-size-limit.t b/src/web/server/h2o/libh2o/t/50post-size-limit.t new file mode 100644 index 000000000..970cdd807 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50post-size-limit.t @@ -0,0 +1,77 @@ +use strict; +use warnings; +use File::Temp qw(tempfile); +use Test::More; +use t::Util; + +my $server = spawn_h2o(<< 'EOT'); +hosts: + default: + paths: + /: + file.dir: examples/doc_root +limit-request-body: 6 +EOT + +subtest 'http1' => sub { + plan skip_all => 'curl not found' + unless prog_exists('curl'); + + my $doit = sub { + my ($proto, $port, $chunked) = @_; + my $url = "$proto://127.0.0.1:$port/"; + my $extra = ""; + if ($proto eq 'https') { + $extra .= " --insecure"; + $extra .= " --http1.1" + if curl_supports_http2(); + } + $extra .= " --header 'Transfer-Encoding: chunked'" + if $chunked; + subtest "$proto, @{[ $chunked ? 'chunked' : 'content-length' ]}" => sub { + my $resp = `curl --silent --dump-header /dev/stderr --data hello $extra $url 2>&1 > /dev/null`; + like $resp, qr{^HTTP/[^ ]+ 405\s}s, 'shorter than the limit'; + $resp = `curl --silent --dump-header /dev/stderr --data helloworld $extra $url 2>&1 > /dev/null`; + like $resp, qr{^HTTP/[^ ]+ 413\s}s, 'longer than the limit'; + }; + }; + $doit->("http", $server->{port}); + $doit->("http", $server->{port}, 1); + $doit->("https", $server->{tls_port}); + $doit->("https", $server->{tls_port}, 1); +}; + +subtest 'http2' => sub { + plan skip_all => 'nghttp not found' + unless prog_exists('nghttp'); + + my $doit = sub { + my ($proto, $opts, $port) = @_; + my $url = "$proto://127.0.0.1:$port/"; + { + my ($tempfh, $tempfn) = tempfile(UNLINK => 1); + print $tempfh 'hello'; + close $tempfh; + my $resp = `nghttp $opts -d $tempfn -s $url 2>&1`; + like $resp, qr/(^|\s)405(\s|$)/im, 'shorter than the limit'; + } + { + my ($tempfh, $tempfn) = tempfile(UNLINK => 1); + print $tempfh 'helloworld'; + close $tempfh; + my $resp = `nghttp $opts -v -d $tempfn -s $url 2>&1`; + like $resp, qr/recv RST_STREAM[^\n]*\n[^\n]*error_code=REFUSED_STREAM/is, 'longer than the limit'; + } + }; + subtest "http (direct)" => sub { + $doit->("http", "", $server->{port}); + }; + subtest "http (upgrade)" => sub { + $doit->("http", "-u", $server->{port}); + }; + subtest "https" => sub { + $doit->("https", "", $server->{tls_port}); + }; +}; + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/50redirect.t b/src/web/server/h2o/libh2o/t/50redirect.t new file mode 100644 index 000000000..b407063a0 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50redirect.t @@ -0,0 +1,92 @@ +use strict; +use warnings; +use Test::More; +use t::Util; + +subtest "basic" => sub { + plan skip_all => 'curl not found' + unless prog_exists('curl'); + + my $curl = "curl --insecure"; + $curl .= " --http1.1" + if curl_supports_http2(); + + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + redirect: https://example.com/ + /abc/: + redirect: + status: 301 + url: http://example.net/bar/ +EOT + + my $doit = sub { + my ($url, $expected_status, $expected_location) = @_; + subtest $url => sub { + my ($stderr, $stdout) = run_prog("$curl --silent --show-error --max-redirs 0 --dump-header /dev/stderr $url"); + like $stderr, qr{^HTTP/[^ ]+ $expected_status\s}s, "status"; + like $stderr, qr{^location: ?$expected_location\r$}im, "location"; + }; + }; + + $doit->("http://127.0.0.1:$server->{port}/foo", 302, "https://example.com/foo"); + $doit->("https://127.0.0.1:$server->{tls_port}/foo", 302, "https://example.com/foo"); + $doit->("http://127.0.0.1:$server->{port}/abc/foo/baz", 301, "http://example.net/bar/foo/baz"); + $doit->("http://127.0.0.1:$server->{port}/abc/foo:baz", 301, "http://example.net/bar/foo:baz"); + $doit->("http://127.0.0.1:$server->{port}/foo?abc=def", 302, qr{https://example.com/foo\?abc=def}); + $doit->("http://127.0.0.1:$server->{port}/foo%0D%0Aa:1", 302, "https://example\.com/foo\%0d\%0aa:1"); +}; + +subtest "trailing-slash" => sub { + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /p1: + redirect: /dest + /p2: + redirect: /dest/ + /p3/: + redirect: /dest + /p4/: + redirect: /dest/ +EOT + + run_with_curl($server, sub { + my ($proto, $port, $cmd) = @_; + my $fetch = sub { + my $path = shift; + my ($stderr, $stdout) = run_prog("$cmd --silent --show-error --max-redirs 0 --dump-header /dev/stderr $proto://127.0.0.1:$port$path"); + $stderr; + }; + subtest "p1" => sub { + like $fetch->("/p1"), qr{^location:\s*/dest\r$}im; + like $fetch->("/p12"), qr{^HTTP/\S*\s+404}is; + like $fetch->("/p1?abc"), qr{^location:\s*/dest\?abc\r$}im; + like $fetch->("/p1/"), qr{^location:\s*/dest/\r$}im; + like $fetch->("/p1/abc"), qr{^location:\s*/dest/abc\r$}im; + }; + subtest "p2" => sub { + like $fetch->("/p2"), qr{^location:\s*/dest/\r$}im; + like $fetch->("/p12"), qr{^HTTP/\S*\s+404}is; + like $fetch->("/p2?abc"), qr{^location:\s*/dest/\?abc\r$}im; + like $fetch->("/p2/"), qr{^location:\s*/dest/\r$}im; + like $fetch->("/p2/abc"), qr{^location:\s*/dest/abc\r$}im; + }; + subtest "p3" => sub { + like $fetch->("/p3"), qr{^HTTP/\S*\s+404}is; + like $fetch->("/p3/"), qr{^location:\s*/dest/\r$}im; + like $fetch->("/p3/abc"), qr{^location:\s*/dest/abc\r$}im; + }; + subtest "p4" => sub { + like $fetch->("/p4"), qr{^HTTP/\S*\s+404}is; + like $fetch->("/p4/"), qr{^location:\s*/dest/\r$}im; + like $fetch->("/p4/abc"), qr{^location:\s*/dest/abc\r$}im; + }; + }); +}; + +done_testing; diff --git a/src/web/server/h2o/libh2o/t/50reverse-proxy-0.t b/src/web/server/h2o/libh2o/t/50reverse-proxy-0.t new file mode 100644 index 000000000..28e191ff4 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50reverse-proxy-0.t @@ -0,0 +1,4 @@ +$0 =~ /-([0-9]+)\.t$/s + or die "failed to extract mode"; +exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; +die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/src/web/server/h2o/libh2o/t/50reverse-proxy-1.t b/src/web/server/h2o/libh2o/t/50reverse-proxy-1.t new file mode 100644 index 000000000..28e191ff4 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50reverse-proxy-1.t @@ -0,0 +1,4 @@ +$0 =~ /-([0-9]+)\.t$/s + or die "failed to extract mode"; +exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; +die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/src/web/server/h2o/libh2o/t/50reverse-proxy-10.t b/src/web/server/h2o/libh2o/t/50reverse-proxy-10.t new file mode 100644 index 000000000..28e191ff4 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50reverse-proxy-10.t @@ -0,0 +1,4 @@ +$0 =~ /-([0-9]+)\.t$/s + or die "failed to extract mode"; +exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; +die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/src/web/server/h2o/libh2o/t/50reverse-proxy-11.t b/src/web/server/h2o/libh2o/t/50reverse-proxy-11.t new file mode 100644 index 000000000..28e191ff4 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50reverse-proxy-11.t @@ -0,0 +1,4 @@ +$0 =~ /-([0-9]+)\.t$/s + or die "failed to extract mode"; +exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; +die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/src/web/server/h2o/libh2o/t/50reverse-proxy-12.t b/src/web/server/h2o/libh2o/t/50reverse-proxy-12.t new file mode 100644 index 000000000..28e191ff4 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50reverse-proxy-12.t @@ -0,0 +1,4 @@ +$0 =~ /-([0-9]+)\.t$/s + or die "failed to extract mode"; +exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; +die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/src/web/server/h2o/libh2o/t/50reverse-proxy-13.t b/src/web/server/h2o/libh2o/t/50reverse-proxy-13.t new file mode 100644 index 000000000..28e191ff4 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50reverse-proxy-13.t @@ -0,0 +1,4 @@ +$0 =~ /-([0-9]+)\.t$/s + or die "failed to extract mode"; +exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; +die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/src/web/server/h2o/libh2o/t/50reverse-proxy-14.t b/src/web/server/h2o/libh2o/t/50reverse-proxy-14.t new file mode 100644 index 000000000..28e191ff4 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50reverse-proxy-14.t @@ -0,0 +1,4 @@ +$0 =~ /-([0-9]+)\.t$/s + or die "failed to extract mode"; +exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; +die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/src/web/server/h2o/libh2o/t/50reverse-proxy-15.t b/src/web/server/h2o/libh2o/t/50reverse-proxy-15.t new file mode 100644 index 000000000..28e191ff4 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50reverse-proxy-15.t @@ -0,0 +1,4 @@ +$0 =~ /-([0-9]+)\.t$/s + or die "failed to extract mode"; +exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; +die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/src/web/server/h2o/libh2o/t/50reverse-proxy-2.t b/src/web/server/h2o/libh2o/t/50reverse-proxy-2.t new file mode 100644 index 000000000..28e191ff4 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50reverse-proxy-2.t @@ -0,0 +1,4 @@ +$0 =~ /-([0-9]+)\.t$/s + or die "failed to extract mode"; +exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; +die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/src/web/server/h2o/libh2o/t/50reverse-proxy-3.t b/src/web/server/h2o/libh2o/t/50reverse-proxy-3.t new file mode 100644 index 000000000..28e191ff4 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50reverse-proxy-3.t @@ -0,0 +1,4 @@ +$0 =~ /-([0-9]+)\.t$/s + or die "failed to extract mode"; +exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; +die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/src/web/server/h2o/libh2o/t/50reverse-proxy-4.t b/src/web/server/h2o/libh2o/t/50reverse-proxy-4.t new file mode 100644 index 000000000..28e191ff4 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50reverse-proxy-4.t @@ -0,0 +1,4 @@ +$0 =~ /-([0-9]+)\.t$/s + or die "failed to extract mode"; +exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; +die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/src/web/server/h2o/libh2o/t/50reverse-proxy-5.t b/src/web/server/h2o/libh2o/t/50reverse-proxy-5.t new file mode 100644 index 000000000..28e191ff4 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50reverse-proxy-5.t @@ -0,0 +1,4 @@ +$0 =~ /-([0-9]+)\.t$/s + or die "failed to extract mode"; +exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; +die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/src/web/server/h2o/libh2o/t/50reverse-proxy-6.t b/src/web/server/h2o/libh2o/t/50reverse-proxy-6.t new file mode 100644 index 000000000..28e191ff4 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50reverse-proxy-6.t @@ -0,0 +1,4 @@ +$0 =~ /-([0-9]+)\.t$/s + or die "failed to extract mode"; +exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; +die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/src/web/server/h2o/libh2o/t/50reverse-proxy-7.t b/src/web/server/h2o/libh2o/t/50reverse-proxy-7.t new file mode 100644 index 000000000..28e191ff4 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50reverse-proxy-7.t @@ -0,0 +1,4 @@ +$0 =~ /-([0-9]+)\.t$/s + or die "failed to extract mode"; +exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; +die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/src/web/server/h2o/libh2o/t/50reverse-proxy-8.t b/src/web/server/h2o/libh2o/t/50reverse-proxy-8.t new file mode 100644 index 000000000..28e191ff4 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50reverse-proxy-8.t @@ -0,0 +1,4 @@ +$0 =~ /-([0-9]+)\.t$/s + or die "failed to extract mode"; +exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; +die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/src/web/server/h2o/libh2o/t/50reverse-proxy-9.t b/src/web/server/h2o/libh2o/t/50reverse-proxy-9.t new file mode 100644 index 000000000..28e191ff4 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50reverse-proxy-9.t @@ -0,0 +1,4 @@ +$0 =~ /-([0-9]+)\.t$/s + or die "failed to extract mode"; +exec $^X, "t/50reverse-proxy/test.pl", "--mode=$1"; +die "failed to invoke $^X t/50reverse-proxy/test.pl:$!"; diff --git a/src/web/server/h2o/libh2o/t/50reverse-proxy-added-headers.t b/src/web/server/h2o/libh2o/t/50reverse-proxy-added-headers.t new file mode 100644 index 000000000..0e87a198c --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50reverse-proxy-added-headers.t @@ -0,0 +1,73 @@ +use strict; +use warnings; +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); +plan skip_all => 'plackup not found' + unless prog_exists('plackup'); +plan skip_all => 'Starlet not found' + unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; + +my $upstream_port = empty_port(); + +my $guard = spawn_server( + argv => [ qw(plackup -s Starlet --keepalive-timeout 100 --access-log /dev/null --listen), $upstream_port, ASSETS_DIR . "/upstream.psgi" ], + is_ready => sub { + check_port($upstream_port); + }, +); + +sub do_test { + my $emit_xff = shift; + my $emit_via = shift; + my $emit_xff_str = $emit_xff ? "ON" : "OFF"; + my $emit_via_str = $emit_via ? "ON" : "OFF"; + + my $server = spawn_h2o(<< "EOT"); +proxy.emit-x-forwarded-headers: $emit_xff_str +proxy.emit-via-header: $emit_via_str +hosts: + default: + paths: + /: + proxy.reverse.url: http://127.0.0.1.XIP.IO:$upstream_port +EOT + + run_with_curl($server, sub { + my ($proto, $port, $curl) = @_; + my $resp = `$curl --silent $proto://127.0.0.1:$port/echo-headers`; + if ($emit_xff) { + like $resp, qr/^x-forwarded-for: ?127\.0\.0\.1$/mi, "x-forwarded-for"; + like $resp, qr/^x-forwarded-proto: ?$proto$/mi, "x-forwarded-proto"; + } else { + unlike $resp, qr/^x-forwarded-for: ?127\.0\.0\.1$/mi, "x-forwarded-for not present"; + unlike $resp, qr/^x-forwarded-proto: ?$proto$/mi, "x-forwarded-proto not present"; + } + if ($emit_via) { + like $resp, qr/^via: ?[^ ]+ 127\.0\.0\.1:$port$/mi, "via"; + } else { + unlike $resp, qr/^via: ?[^ ]+ 127\.0\.0\.1:$port$/mi, "via"; + } + $resp = `$curl --silent --header 'X-Forwarded-For: 127.0.0.2' --header 'Via: 2 example.com' $proto://127.0.0.1:$port/echo-headers`; + if ($emit_xff) { + like $resp, qr/^x-forwarded-for: ?127\.0\.0\.2, 127\.0\.0\.1$/mi, "x-forwarded-for (append)"; + } else { + like $resp, qr/^x-forwarded-for: ?127\.0\.0\.2$/mi, "x-forwarded-for only contains the original header"; + } + if ($emit_via) { + like $resp, qr/^via: ?2 example.com, [^ ]+ 127\.0\.0\.1:$port$/mi, "via (append)"; + } else { + like $resp, qr/^via: 2 example.com$/mi, "via left as-is"; + } + }); +} + +do_test(0, 0); +do_test(0, 1); +do_test(1, 0); +do_test(1, 1); + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/50reverse-proxy-config.t b/src/web/server/h2o/libh2o/t/50reverse-proxy-config.t new file mode 100644 index 000000000..62b34668a --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50reverse-proxy-config.t @@ -0,0 +1,104 @@ +use strict; +use warnings; +use Digest::MD5 qw(md5_hex); +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +plan skip_all => 'plackup not found' + unless prog_exists('plackup'); + +plan skip_all => 'Starlet not found' + unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); + +# start upstream +my $upstream_port = empty_port(); +my $upstream = spawn_server( + argv => [ + qw(plackup -MPlack::App::File -s Starlet --access-log /dev/null -p), $upstream_port, + ASSETS_DIR . "/upstream.psgi", + ], + is_ready => sub { + check_port($upstream_port); + }, +); + +subtest 'preserve-host' => sub { + my $doit = sub { + my $flag = shift; + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + proxy.reverse.url: http://127.0.0.1:$upstream_port + proxy.preserve-host: @{[ $flag ? 'ON' : 'OFF' ]} +EOT + my $res = `curl --silent http://127.0.0.1:$server->{port}/echo-headers`; + like $res, qr/^host: 127.0.0.1:@{[ $flag ? $server->{port} : $upstream_port ]}$/im, 'host header'; + + $res = `curl --silent --dump-header /dev/stdout "http://127.0.0.1:$server->{port}/?resp:status=302&resp:location=http://127.0.0.1:$server->{port}/foo"`; + like $res, qr{^location: http://127\.0\.0\.1:$server->{port}/foo}im, 'location: :server_port'; + warn qq{curl --silent --dump-header /dev/stdout "http://127.0.0.1:$server->{port}/?resp:status=302&resp:location=http://127.0.0.1:$upstream_port/foo"}; + $res = `curl --silent --dump-header /dev/stdout "http://127.0.0.1:$server->{port}/?resp:status=302&resp:location=http://127.0.0.1:$upstream_port/foo"`; + like $res, qr{^location: http://127\.0\.0\.1:$server->{port}/foo}im, 'location :upstream_port'; + }; + + subtest 'ON' => sub { + $doit->(1); + }; + subtest 'OFF' => sub { + $doit->(0); + }; +}; + +subtest 'timeout.io' => sub { + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + proxy.reverse.url: http://127.0.0.1:$upstream_port + proxy.timeout.io: 2000 +EOT + my $fetch = sub { + my $sleep = shift; + `curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/sleep-and-respond?sleep=$sleep 2>&1 > /dev/null`; + }; + my $resp = $fetch->(1); + like $resp, qr{^HTTP/1\.1 200 }s, "respond before timeout"; + $resp = $fetch->(3); + like $resp, qr{^HTTP/1\.1 502 }s, "respond after timeout"; +}; + +subtest 'infinite-internal-redirect' => sub { + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + proxy.reverse.url: http://127.0.0.1:$upstream_port +reproxy: ON +EOT + my $resp = `curl --silent --dump-header /dev/stderr "http://127.0.0.1:$server->{port}/?resp:x-reproxy-url=http://127.0.0.1:$upstream_port/infinite-redirect" 2>&1 > /dev/null`; + like $resp, qr{^HTTP/1\.1 502 }s; +}; + +subtest 'max-delegations' => sub { + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + proxy.reverse.url: http://127.0.0.1:$upstream_port +reproxy: ON +max-delegations: 0 +EOT + my $resp = `curl --silent --dump-header /dev/stderr "http://127.0.0.1:$server->{port}/?resp:x-reproxy-url=http://127.0.0.1:$upstream_port/index.txt" 2>&1 > /dev/null`; + like $resp, qr{^HTTP/1\.1 502 }s; +}; + +done_testing; diff --git a/src/web/server/h2o/libh2o/t/50reverse-proxy-disconnected-keepalive.t b/src/web/server/h2o/libh2o/t/50reverse-proxy-disconnected-keepalive.t new file mode 100644 index 000000000..4e35cba97 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50reverse-proxy-disconnected-keepalive.t @@ -0,0 +1,77 @@ +use strict; +use warnings; +use File::Temp qw(tempfile); +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); +plan skip_all => 'Starlet not found' + unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; + +subtest "tcp" => sub { + my $port = empty_port(); + my $upstream = spawn_upstream($port); + doit("127.0.0.1:$port"); +}; + +subtest "unix-socket" => sub { + plan skip_all => 'skipping unix-socket tests, requires Starlet >= 0.25' + if `perl -MStarlet -e 'print \$Starlet::VERSION'` < 0.25; + + (undef, my $sockfn) = tempfile(UNLINK => 0); + unlink $sockfn; + my $guard = Scope::Guard->new(sub { + unlink $sockfn; + }); + + my $upstream = spawn_upstream($sockfn); + doit("[unix:$sockfn]"); +}; + +done_testing; + +sub doit { + my $upaddr = shift; + + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + proxy.reverse.url: http://$upaddr + proxy.timeout.io: 1000 + proxy.timeout.keepalive: 10000 +EOT + my $port = $server->{port}; + + my $check_req = sub { + my ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$port/index.txt 2>&1"); + like $headers, qr{^HTTP/1\.1 200 }is; + is $body, "hello\n"; + }; + subtest "first-connect" => $check_req; + subtest "redo-immediate" => $check_req; + sleep 2; + subtest "redo-after-upstream-disconnect" => $check_req; + sleep 2; + subtest "once-more" => $check_req; +}; + +sub spawn_upstream { + my $addr = shift; + spawn_server( + argv => [ + qw(plackup -s Starlet --max-keepalive-reqs 100 --keepalive-timeout 1 --access-log /dev/null --listen), $addr, + ASSETS_DIR . "/upstream.psgi" + ], + is_ready => sub { + if ($addr =~ /^\d+$/) { + check_port($addr); + } else { + !! -e $addr; + } + }, + ); +} diff --git a/src/web/server/h2o/libh2o/t/50reverse-proxy-drop-headers.t b/src/web/server/h2o/libh2o/t/50reverse-proxy-drop-headers.t new file mode 100644 index 000000000..0ae1e61dd --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50reverse-proxy-drop-headers.t @@ -0,0 +1,57 @@ +use strict; +use warnings; +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); +plan skip_all => 'plackup not found' + unless prog_exists('plackup'); +plan skip_all => 'Starlet not found' + unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; + +my $upstream_port = empty_port(); + +my $guard = spawn_server( + argv => [ qw(plackup -s Starlet --keepalive-timeout 100 --access-log /dev/null --listen), "127.0.0.1:$upstream_port", ASSETS_DIR . "/upstream.psgi" ], + is_ready => sub { + check_port($upstream_port); + }, +); + +subtest 'request-header' => sub { +# proxy-authenticate + + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + proxy.reverse.url: http://127.0.0.1.XIP.IO:$upstream_port +EOT + + my $curl = 'curl --silent --dump-header /dev/stderr'; + my ($headers, $body) = run_prog("$curl" + . " -H 'Proxy-Authenticate: hoge'" + . " -H 'Date: Thu, 01 Jan 1970 00:00:00 GMT'" + . " http://127.0.0.1:@{[$server->{port}]}/echo-headers"); + unlike $body, qr/^proxy-authenticate:/mi, 'proxy-authenticate header should be dropped'; + like $body, qr/^date:/mi, 'date request header is not dropped'; +}; + +subtest 'response header' => sub { + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + proxy.reverse.url: http://127.0.0.1.XIP.IO:$upstream_port +EOT + + my $curl = 'curl --silent --dump-header /dev/stderr'; + my ($headers, $body) = run_prog("$curl http://127.0.0.1:@{[$server->{port}]}/fixed-date-header"); + unlike $headers, qr/Thu, 01 Jan 1970 00:00:00 GMT/, "date response header from upstream should be dropped and replaced"; +}; + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/50reverse-proxy-https.t b/src/web/server/h2o/libh2o/t/50reverse-proxy-https.t new file mode 100644 index 000000000..1bb499f97 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50reverse-proxy-https.t @@ -0,0 +1,70 @@ +use strict; +use warnings; +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +plan skip_all => 'plackup not found' + unless prog_exists('plackup'); + +my $upstream_port = empty_port(); +my $upstream = spawn_server( + argv => [ + qw( + plackup -s Standalone --ssl=1 --ssl-key-file=examples/h2o/server.key --ssl-cert-file=examples/h2o/server.crt --port + ), + $upstream_port, ASSETS_DIR . "/upstream.psgi" + ], + is_ready => sub { + check_port($upstream_port); + }, +); + +subtest "reverse-proxy" => sub { + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + "/verify": + proxy.reverse.url: https://127.0.0.1:$upstream_port + "/no-verify": + proxy.reverse.url: https://127.0.0.1:$upstream_port + proxy.ssl.verify-peer: OFF + "/wikipedia": + proxy.reverse.url: https://en.wikipedia.org/wiki/Main_Page +EOT + run_with_curl($server, sub { + my ($proto, $port, $curl) = @_; + my $resp = `$curl --silent --dump-header /dev/stderr --max-redirs 0 $proto://127.0.0.1:$port/verify/ 2>&1 > /dev/null`; + like $resp, qr{^HTTP/[^ ]* 502\s}is; + $resp = `$curl --silent --dump-header /dev/stderr --max-redirs 0 $proto://127.0.0.1:$port/no-verify/ 2>&1 > /dev/null`; + unlike $resp, qr{^HTTP/[^ ]* 502\s}is; + $resp = `$curl --silent --dump-header /dev/stderr --max-redirs 0 $proto://127.0.0.1:$port/wikipedia/ 2>&1 > /dev/null`; + like $resp, qr{^HTTP/[^ ]* 200\s}is; + }); +}; + +subtest "reproxy" => sub { + plan skip_all => "mruby support is off" + unless server_features()->{mruby}; + my $server = spawn_h2o(<< "EOT"); +proxy.ssl.verify-peer: OFF +hosts: + default: + paths: + "/": + reproxy: ON + mruby.handler: | + Proc.new do |env| + [200, {"x-reproxy-url" => "https://127.0.0.1:$upstream_port/index.txt"}, ["should never see this"]] + end +EOT + run_with_curl($server, sub { + my ($proto, $port, $curl) = @_; + my $resp = `$curl --silent --dump-header /dev/stdout --max-redirs 0 $proto://127.0.0.1:$port/`; + like $resp, qr{^HTTP/[^ ]* 200}im; + like $resp, qr{^hello$}m; + }); +}; + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/50reverse-proxy-preserve-case.t b/src/web/server/h2o/libh2o/t/50reverse-proxy-preserve-case.t new file mode 100644 index 000000000..da2aee2c2 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50reverse-proxy-preserve-case.t @@ -0,0 +1,68 @@ +use strict; +use warnings; +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); +plan skip_all => 'plackup not found' + unless prog_exists('plackup'); +plan skip_all => 'Starlet not found' + unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; + +my $upstream_port = empty_port(); + +my $upstream = new IO::Socket::INET ( + LocalHost => '127.0.0.1', + LocalPort => $upstream_port, + Proto => 'tcp', + Listen => 1, + Reuse => 1 +); +die "cannot create socket $!\n" unless $upstream; + +sub handler_curl { + my $socket = shift; + my $client_socket = $socket->accept(); + + my $data = ""; + $client_socket->recv($data, 4906); + + my $resp = "HTTP/1.0 200 Ok\r\nMyResponseHeader:1\r\nContent-Length:2\r\nConnection: close\r\n\r\nOk"; + $client_socket->send($resp); + $client_socket->flush; + + close($client_socket); + return $data; +}; + + +my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + proxy.reverse.url: http://127.0.0.1:$upstream_port +EOT + +run_with_curl($server, sub { + my ($proto, $port, $curl) = @_; + open(CURL, "$curl -HUpper-Case:TheValue -kv $proto://127.0.0.1:$port/ 2>&1 |"); + my $forwarded = handler_curl($upstream); + my @lines; + while () { + push(@lines, $_); + + } + my $resp = join("", @lines); + if ($curl =~ /http2/) { + like($forwarded, qr{upper-case:\s*TheValue}, "Request header name is lowercased"); + like($resp, qr{myresponseheader:\s*1}, "Response header name is lowercase"); + } else { + like($forwarded, qr{Upper-Case:\s*TheValue}, "Request header name is not lowercased"); + like($resp, qr{MyResponseHeader:\s*1}, "Response header name has case preserved"); + } + }); + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/50reverse-proxy-proxy-protocol.t b/src/web/server/h2o/libh2o/t/50reverse-proxy-proxy-protocol.t new file mode 100644 index 000000000..0bb1a821e --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50reverse-proxy-proxy-protocol.t @@ -0,0 +1,55 @@ +use strict; +use warnings; +use IO::Socket::INET; +use Test::TCP; +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use Scope::Guard qw(guard); +use t::Util; + +my $upstream_port = empty_port(); + +my $listen = IO::Socket::INET->new( + LocalAddr => '127.0.0.1', + LocalPort => $upstream_port, + Listen => 5, +) or die "failed to listen to 127.0.0.1:$upstream_port:$!"; + +my $upstream_guard = do { + my $pid = fork; + die "fork failed:$!" + unless defined $pid; + if ($pid == 0) { + # server process + while (1) { + if (my $conn = $listen->accept) { + sysread $conn, my $buf, 4096; +print STDERR "**** $buf"; + syswrite $conn, "HTTP/1.1 200 OK\r\nconnection: close\r\n\r\n$buf"; +print STDERR "**** yeoh"; + $conn->close; + } + } + } + guard { + kill 'TERM', $pid; + }; +}; + +my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + "/": + proxy.reverse.url: http://127.0.0.1:$upstream_port/ + proxy.proxy-protocol: ON + proxy.timeout.keepalive: 0 +EOT + +run_with_curl($server, sub { + my ($proto, $port, $curl_cmd) = @_; + my $resp = `$curl_cmd --silent $proto://127.0.0.1:$port/hello`; + like $resp, qr{^PROXY TCP4 127\.0\.0\.1 127\.0\.0\.1 [0-9]{1,5} $port\r\nGET /hello HTTP/1\.}is; +}); + +done_testing; diff --git a/src/web/server/h2o/libh2o/t/50reverse-proxy-session-resumption.t b/src/web/server/h2o/libh2o/t/50reverse-proxy-session-resumption.t new file mode 100644 index 000000000..acf6a7813 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50reverse-proxy-session-resumption.t @@ -0,0 +1,210 @@ +use strict; +use warnings; +use File::Temp qw(tempdir); +use Net::EmptyPort qw(check_port empty_port); +use Test::Builder; +use Test::More; +use t::Util; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); +plan skip_all => 'Starlet not found' + unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; + +my $tempdir = tempdir(CLEANUP => 1); + +sub create_upstream { + unlink "$tempdir/access_log"; + return spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + file.dir: @{[ DOC_ROOT ]} + access-log: + path: $tempdir/access_log + format: "%{ssl.session-reused}x" +EOT +} + +sub doit { + my ($conf, $scenario, $opts) = @_; + local $Test::Builder::Level = $Test::Builder::Level + 1; + $opts ||= +{}; + + my $upstream = $opts->{upstream} || create_upstream(); + if (ref($conf) eq 'CODE') { + $conf = $conf->($upstream); + } + my $server = spawn_h2o($conf); + my $port = $server->{port}; + + for my $s (@$scenario) { + my $path = $s->{path} || '/'; + Time::HiRes::sleep($s->{interval}) if $s->{interval}; + my $res = `curl --silent --dump-header /dev/stderr http://127.0.0.1:@{[$server->{port}]}$path 2>&1 > /dev/null`; + like $res, qr{^HTTP/1\.1 200 }, $s->{desc}; + } + + my @log = do { + open my $fh, "<", "$tempdir/access_log" + or die "failed to open access_log:$!"; + map { my $l = $_; chomp $l; $l } <$fh>; + }; + + for my $i (0..scalar(@$scenario)-1) { + my $s = $scenario->[$i]; + next unless defined($s->{expected}); + + my $reused = $log[$i] + 0; + is($reused, $s->{expected}, $s->{desc}); + } +}; + +subtest 'default' => sub { + doit(sub { + my ($upstream) = @_; + return <<"EOC"; +proxy.ssl.verify-peer: OFF +proxy.timeout.keepalive: 0 +hosts: + default: + paths: + /: + proxy.reverse.url: https://127.0.0.1:@{[$upstream->{tls_port}]} +EOC + }, [ + +{}, + +{ expected => 1 }, + ]); +}; + +subtest 'off' => sub { + doit(sub { + my ($upstream) = @_; + return <<"EOC"; +proxy.timeout.keepalive: 0 +proxy.ssl.session-cache: OFF +hosts: + default: + paths: + /: + proxy.ssl.verify-peer: OFF + proxy.reverse.url: https://127.0.0.1:@{[$upstream->{tls_port}]} +EOC + }, [ + +{}, + +{ expected => 0 }, + ]); +}; + +subtest 'lifetime' => sub { + doit(sub { + my ($upstream) = @_; + return <<"EOC"; +proxy.ssl.verify-peer: OFF +proxy.timeout.keepalive: 0 +hosts: + default: + paths: + /: + proxy.reverse.url: https://127.0.0.1:@{[$upstream->{tls_port}]} + proxy.ssl.session-cache: + capacity: 4096 + lifetime: 2 +EOC + }, [ + +{}, + +{ interval => 1, expected => 1 }, + +{ interval => 2, expected => 0, desc => 'expire' }, + ]); +}; + +subtest 'config' => sub { + doit(sub { + my ($upstream) = @_; + return <<"EOC"; +proxy.ssl.verify-peer: OFF +proxy.timeout.keepalive: 0 +hosts: + default: + proxy.ssl.session-cache: OFF + paths: + /: + proxy.reverse.url: https://127.0.0.1:@{[$upstream->{tls_port}]} + proxy.ssl.session-cache: ON + /sample.txt: + proxy.reverse.url: https://127.0.0.1:@{[$upstream->{tls_port}]} + proxy.ssl.session-cache: + capacity: 4096 + lifetime: 2 + +EOC + }, [ + +{ path => '/' }, + +{ path => '/', interval => 0, expected => 1, desc => 'reuse on second request to /' }, + +{ path => '/sample.txt', interval => 0, expected => 0, desc => 'not reuse on first request to /sample.txt' }, + +{ path => '/sample.txt', interval => 1, expected => 1, desc => 'reuse on second request to /sample.txt' }, + +{ path => '/sample.txt', interval => 2, expected => 0, desc => 'expire on third request to /sample.txt' }, + ]); +}; + +subtest 'reproxy' => sub { + my $upstream = create_upstream(); + my $upstream_port = $upstream->{tls_port}; + my $app_port = empty_port(); + my $app_server = spawn_server( + argv => [ + qw( + plackup -s Starlet --max-workers=1 --port + ), + $app_port, "-e sub { [200, ['X-Reproxy-URL' => 'https://127.0.0.1:$upstream_port/'], []] }" + ], + is_ready => sub { + check_port($app_port); + }, + ); + + doit(sub { + return <<"EOC"; +proxy.ssl.verify-peer: OFF +proxy.timeout.keepalive: 0 +hosts: + default: + paths: + /: + proxy.reverse.url: http://127.0.0.1:$app_port + reproxy: ON +EOC + }, [ + +{}, + +{ expected => 1 }, + ], +{ upstream => $upstream }); +}; + +subtest 'multiple-hosts' => sub { + doit(sub { + my ($upstream) = @_; + return <<"EOC"; +proxy.ssl.verify-peer: OFF +proxy.timeout.keepalive: 0 +proxy.ssl.session-cache: ON +hosts: + default: + paths: + /: + proxy.reverse.url: https://127.0.0.1:@{[$upstream->{tls_port}]} + example.com: + paths: + /: + proxy.reverse.url: https://127.0.0.1:@{[$upstream->{tls_port}]} + proxy.ssl.verify-peer: ON + proxy.ssl.session-cache: OFF +EOC + }, [ + +{}, + +{ expected => 1 }, + ]); +}; + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/50reverse-proxy-upstream-down.t b/src/web/server/h2o/libh2o/t/50reverse-proxy-upstream-down.t new file mode 100644 index 000000000..3f30a4471 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50reverse-proxy-upstream-down.t @@ -0,0 +1,35 @@ +use strict; +use warnings; +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); + +sub doit { + my $persistent = shift; + my $upstream_port = empty_port(); + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + proxy.reverse.url: http://127.0.0.1:$upstream_port + proxy.timeout.io: 2000 +@{[ $persistent ? "" : "proxy.timeout.keepalive: 0" ]} +EOT + my $port = $server->{port}; + my $res = `curl --max-time 5 --silent --dump-header /dev/stderr http://127.0.0.1:$port/ 2>&1 > /dev/null`; + like $res, qr{^HTTP/1\.1 502 }, "502 response on upstream error"; +}; + +subtest 'non-persistent' => sub { + doit(0); +}; + +subtest 'persistent' => sub { + doit(1); +}; + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/50reverse-proxy/hello.txt b/src/web/server/h2o/libh2o/t/50reverse-proxy/hello.txt new file mode 100644 index 000000000..ce0136250 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50reverse-proxy/hello.txt @@ -0,0 +1 @@ +hello diff --git a/src/web/server/h2o/libh2o/t/50reverse-proxy/test.pl b/src/web/server/h2o/libh2o/t/50reverse-proxy/test.pl new file mode 100755 index 000000000..3781cba3c --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50reverse-proxy/test.pl @@ -0,0 +1,249 @@ +use strict; +use warnings; +use Digest::MD5 qw(md5_hex); +use File::Temp qw(tempfile); +use Getopt::Long; +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use URI::Escape; +use t::Util; + +my ($aggregated_mode, $h2o_keepalive, $starlet_keepalive, $starlet_force_chunked, $unix_socket); + +GetOptions( + "mode=i" => sub { + (undef, my $m) = @_; + $h2o_keepalive = ($m & 1) != 0; + $starlet_keepalive = ($m & 2) != 0; + $starlet_force_chunked = ($m & 4) != 0; + $unix_socket = ($m & 8) != 0; + }, + "h2o-keepalive=i" => \$h2o_keepalive, + "starlet-keepalive=i" => \$starlet_keepalive, + "starlet-force-chunked=i" => \$starlet_force_chunked, + "unix-socket=i" => \$unix_socket, +) or exit(1); + +plan skip_all => 'plackup not found' + unless prog_exists('plackup'); + +plan skip_all => 'Starlet not found' + unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; +plan skip_all => 'skipping unix-socket tests, requires Starlet >= 0.25' + if $unix_socket && `perl -MStarlet -e 'print \$Starlet::VERSION'` < 0.25; + +my %files = map { do { + my $fn = DOC_ROOT . "/$_"; + +($_ => { size => (stat $fn)[7], md5 => md5_file($fn) }); +} } qw(index.txt halfdome.jpg); + +my $huge_file_size = 50 * 1024 * 1024; # should be larger than the mmap_backend threshold of h2o +my $huge_file = create_data_file($huge_file_size); +my $huge_file_md5 = md5_file($huge_file); + +my ($unix_socket_file, $unix_socket_guard) = do { + (undef, my $fn) = tempfile(UNLINK => 0); + unlink $fn; + +( + $fn, + Scope::Guard->new(sub { + unlink $fn; + }), + ); +} if $unix_socket; + +my $upstream = $unix_socket_file ? "[unix:$unix_socket_file]" : "127.0.0.1:@{[empty_port()]}"; + +my $guard = do { + local $ENV{FORCE_CHUNKED} = $starlet_force_chunked; + my @args = (qw(plackup -s Starlet --keepalive-timeout 100 --access-log /dev/null --listen), $unix_socket_file || $upstream); + if ($starlet_keepalive) { + push @args, "--max-keepalive-reqs=100"; + } + push @args, ASSETS_DIR . "/upstream.psgi"; + spawn_server( + argv => \@args, + is_ready => sub { + if ($unix_socket_file) { + !! -e $unix_socket_file; + } else { + $upstream =~ /:([0-9]+)$/s + or die "failed to extract port number"; + check_port($1); + } + }, + ); +}; + +my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + proxy.reverse.url: http://$upstream + /gzip: + proxy.reverse.url: http://$upstream + gzip: ON + /files: + file.dir: @{[ DOC_ROOT ]} +@{[ $h2o_keepalive ? "" : " proxy.timeout.keepalive: 0" ]} +reproxy: ON +EOT + +run_with_curl($server, sub { + my ($proto, $port, $curl) = @_; + for my $file (sort keys %files) { + my $content = `$curl --silent --show-error $proto://127.0.0.1:$port/$file`; + is length($content), $files{$file}->{size}, "$proto://127.0.0.1/$file (size)"; + is md5_hex($content), $files{$file}->{md5}, "$proto://127.0.0.1/$file (md5)"; + } + for my $file (sort keys %files) { + my $content = `$curl --silent --show-error --data-binary \@@{[ DOC_ROOT ]}/$file $proto://127.0.0.1:$port/echo`; + is length($content), $files{$file}->{size}, "$proto://127.0.0.1/echo (POST, $file, size)"; + is md5_hex($content), $files{$file}->{md5}, "$proto://127.0.0.1/echo (POST, $file, md5)"; + } + if ($curl !~ /--http2/) { + for my $file (sort keys %files) { + my $content = `$curl --silent --show-error --header 'Transfer-Encoding: chunked' --data-binary \@@{[ DOC_ROOT ]}/$file $proto://127.0.0.1:$port/echo`; + is length($content), $files{$file}->{size}, "$proto://127.0.0.1/echo (POST, chunked, $file, size)"; + is md5_hex($content), $files{$file}->{md5}, "$proto://127.0.0.1/echo (POST, chunked, $file, md5)"; + } + } + my $content = `$curl --silent --show-error --data-binary \@$huge_file $proto://127.0.0.1:$port/echo`; + is length($content), $huge_file_size, "$proto://127.0.0.1/echo (POST, mmap-backed, size)"; + is md5_hex($content), $huge_file_md5, "$proto://127.0.0.1/echo (POST, mmap-backed, md5)"; + if ($curl !~ /--http2/) { + $content = `$curl --silent --show-error --header 'Transfer-Encoding: chunked' --data-binary \@$huge_file $proto://127.0.0.1:$port/echo`; + is length($content), $huge_file_size, "$proto://127.0.0.1/echo (POST, chunked, mmap-backed, size)"; + is md5_hex($content), $huge_file_md5, "$proto://127.0.0.1/echo (POST, chunked, mmap-backed, md5)"; + } + subtest 'rewrite-redirect' => sub { + $content = `$curl --silent --dump-header /dev/stdout --max-redirs 0 "$proto://127.0.0.1:$port/?resp:status=302&resp:location=http://@{[uri_escape($upstream)]}/abc"`; + like $content, qr{HTTP/[^ ]+ 302\s}m; + like $content, qr{^location: ?$proto://127.0.0.1:$port/abc\r$}m; + }; + subtest "x-reproxy-url ($proto)" => sub { + my $fetch_test = sub { + my $url_prefix = shift; + for my $file (sort keys %files) { + my $content = `$curl --silent --show-error "$proto://127.0.0.1:$port/404?resp:status=200&resp:x-reproxy-url=$url_prefix$file"`; + is length($content), $files{$file}->{size}, "$file (size)"; + is md5_hex($content), $files{$file}->{md5}, "$file (md5)"; + } + }; + subtest "abs-url" => sub { + $fetch_test->("http://@{[uri_escape($upstream)]}/"); + }; + subtest "abs-path" => sub { + $fetch_test->("/"); + }; + subtest "rel-path" => sub { + $fetch_test->(""); + }; + my $content = `$curl --silent --show-error "$proto://127.0.0.1:$port/streaming-body?resp:status=200&resp:x-reproxy-url=http://@{[uri_escape($upstream)]}/index.txt"`; + is $content, "hello\n", "streaming-body"; + $content = `$curl --silent "$proto://127.0.0.1:$port/?resp:status=200&resp:x-reproxy-url=https://default/files/index.txt"`; + is length($content), $files{"index.txt"}->{size}, "to file handler (size)"; + is md5_hex($content), $files{"index.txt"}->{md5}, "to file handler (md5)"; + $content = `$curl --silent "$proto://127.0.0.1:$port/?resp:status=200&resp:x-reproxy-url=http://@{[uri_escape($upstream)]}/?resp:status=302%26resp:location=index.txt"`; + is length($content), $files{"index.txt"}->{size}, "reproxy & internal redirect to upstream (size)"; + is md5_hex($content), $files{"index.txt"}->{md5}, "reproxy & internal redirect to upstream (md5)"; + $content = `$curl --silent "$proto://127.0.0.1:$port/?resp:status=200&resp:x-reproxy-url=http://@{[uri_escape($upstream)]}/?resp:status=302%26resp:location=https://default/files/index.txt"`; + is length($content), $files{"index.txt"}->{size}, "reproxy & internal redirect to file (size)"; + is md5_hex($content), $files{"index.txt"}->{md5}, "reproxy & internal redirect to file (md5)"; + $content = `$curl --silent "$proto://127.0.0.1:$port/?resp:status=200&resp:x-reproxy-url=http://default/files"`; + is length($content), $files{"index.txt"}->{size}, "redirect handled internally after delegation (size)"; + is md5_hex($content), $files{"index.txt"}->{md5}, "redirect handled internally after delegation (md5)"; + }; + subtest "x-forwarded ($proto)" => sub { + my $resp = `$curl --silent $proto://127.0.0.1:$port/echo-headers`; + like $resp, qr/^x-forwarded-for: ?127\.0\.0\.1$/mi, "x-forwarded-for"; + like $resp, qr/^x-forwarded-proto: ?$proto$/mi, "x-forwarded-proto"; + like $resp, qr/^via: ?[^ ]+ 127\.0\.0\.1:$port$/mi, "via"; + $resp = `$curl --silent --header 'X-Forwarded-For: 127.0.0.2' --header 'Via: 2 example.com' $proto://127.0.0.1:$port/echo-headers`; + like $resp, qr/^x-forwarded-for: ?127\.0\.0\.2, 127\.0\.0\.1$/mi, "x-forwarded-for (append)"; + like $resp, qr/^via: ?2 example.com, [^ ]+ 127\.0\.0\.1:$port$/mi, "via (append)"; + }; + subtest 'issues/266' => sub { + my $resp = `$curl --dump-header /dev/stderr --silent -H 'cookie: a=@{['x' x 4000]}' $proto://127.0.0.1:$port/index.txt 2>&1 > /dev/null`; + like $resp, qr{^HTTP/[^ ]+ 200\s}m; + }; + subtest 'gzip' => sub { + plan skip_all => 'curl issue #661' + if $curl =~ /--http2/; + my $resp = `$curl --silent -H Accept-Encoding:gzip $proto://127.0.0.1:$port/gzip/alice.txt | gzip -cd`; + is md5_hex($resp), md5_file("@{[DOC_ROOT]}/alice.txt"); + }; +}); + +subtest 'nghttp' => sub { + plan skip_all => 'nghttp not found' + unless prog_exists('nghttp'); + my $doit = sub { + my ($proto, $opt, $port) = @_; + for my $file (sort keys %files) { + my $content = `nghttp $opt $proto://127.0.0.1:$port/$file`; + is length($content), $files{$file}->{size}, "$proto://127.0.0.1/$file (size)"; + is md5_hex($content), $files{$file}->{md5}, "$proto://127.0.0.1/$file (md5)"; + } + my $out = `nghttp $opt -d t/50reverse-proxy/hello.txt $proto://127.0.0.1:$port/echo`; + is $out, "hello\n", "$proto://127.0.0.1/echo (POST)"; + $out = `nghttp $opt -m 10 $proto://127.0.0.1:$port/index.txt`; + is $out, "hello\n" x 10, "$proto://127.0.0.1/index.txt x 10 times"; + $out = `nghttp $opt -d $huge_file $proto://127.0.0.1:$port/echo`; + is length($out), $huge_file_size, "$proto://127.0.0.1/echo (mmap-backed, size)"; + is md5_hex($out), $huge_file_md5, "$proto://127.0.0.1/echo (mmap-backed, md5)"; + subtest 'cookies' => sub { + plan skip_all => 'nghttp issues #161' + if $opt eq '-u'; + $out = `nghttp $opt -H 'cookie: a=b' -H 'cookie: c=d' $proto://127.0.0.1:$port/echo-headers`; + like $out, qr{^cookie: a=b; c=d$}m; + }; + subtest "x-reproxy-url ($proto)" => sub { + for my $file (sort keys %files) { + my $content = `nghttp $opt "$proto://127.0.0.1:$port/404?resp:status=200&resp:x-reproxy-url=http://@{[uri_escape($upstream)]}/$file"`; + is length($content), $files{$file}->{size}, "$file (size)"; + is md5_hex($content), $files{$file}->{md5}, "$file (md5)"; + } + my $content = `nghttp $opt "$proto://127.0.0.1:$port/streaming-body?resp:status=200&resp:x-reproxy-url=http://@{[uri_escape($upstream)]}/index.txt"`; + is $content, "hello\n", "streaming-body"; + $content = `nghttp $opt "$proto://127.0.0.1:$port/?resp:status=200&resp:x-reproxy-url=https://default/files/index.txt"`; + is length($content), $files{"index.txt"}->{size}, "to file handler (size)"; + is md5_hex($content), $files{"index.txt"}->{md5}, "to file handler (md5)"; + $content = `nghttp $opt "$proto://127.0.0.1:$port/?resp:status=200&resp:x-reproxy-url=http://@{[uri_escape($upstream)]}/?resp:status=302%26resp:location=index.txt"`; + is length($content), $files{"index.txt"}->{size}, "reproxy & internal redirect to upstream (size)"; + is md5_hex($content), $files{"index.txt"}->{md5}, "reproxy & internal redirect to upstream (md5)"; + $content = `nghttp $opt "$proto://127.0.0.1:$port/?resp:status=200&resp:x-reproxy-url=http://@{[uri_escape($upstream)]}/?resp:status=302%26resp:location=https://default/files/index.txt"`; + is length($content), $files{"index.txt"}->{size}, "reproxy & internal redirect to file (size)"; + is md5_hex($content), $files{"index.txt"}->{md5}, "reproxy & internal redirect to file (md5)"; + $content = `nghttp -v $opt "$proto://127.0.0.1:$port/?resp:status=200&resp:x-reproxy-url=http://default/files"`; + unlike $content, qr/ :status: 3/, "once delegated, redirects of the file handler should be handled internally"; + }; + subtest 'issues/185' => sub { + my $out = `nghttp $opt -v "$proto://127.0.0.1:$port/?resp:access-control-allow-origin=%2a"`; + is $?, 0; + like $out, qr/ access-control-allow-origin: \*$/m; + }; + subtest 'issues/192' => sub { + my $cookie = '_yohoushi_session=ZU5tK2FhcllVQ1RGaTZmZE9MUXozZnAzdTdmR250ZjRFU1hNSnZ4Y2JxZm9pYzJJSEpISGFKNmtWcW1HcjBySmUxZzIwNngrdlVIOC9jdmg0R3I3TFR4eVYzaHlFSHdEL1M4dnh1SmRCbVl3ZE5FckZEU1NyRmZveWZwTmVjcVV5V1JhNUd5REIvWjAwQ3RiT1ZBNGVMUkhiN0tWR0c1RzZkSVhrVkdoeW1lWXRDeHJPUW52NUwxSytRTEQrWXdoZ1EvVG9kak9aeUxnUFRNTDB4Vis1RDNUYWVHZm12bDgwL1lTa09MTlJYcGpXN2VUWmdHQ2FuMnVEVDd4c3l1TTJPMXF1dGhYcGRHS2U2bW9UaG0yZGIwQ0ZWVzFsY1hNTkY5cVFvWjNqSWNrQ0pOY1gvMys4UmRHdXJLU1A0ZTZQc3pSK1dKcXlpTEF2djJHLzUwbytwSnVpS0xhdFp6NU9kTDhtcmgxamVXMkI0Nm9Nck1rMStLUmV0TEdUeGFSTjlKSzM0STc3NTlSZ05ZVjJhWUNibkdzY1I1NUg4bG96dWZSeGorYzF4M2tzMGhKSkxmeFBTNkpZS09HTFgrREN4SWd4a29kamRxT3FobDRQZ2xMVUE9PS0tQUxSWU5nWmVTVzRoN09sS3pmUVM3dz09--3a411c0cf59845f0b8ccf61f69b8eb87aa1727ac; path=/; HttpOnly'; + my $cookie_encoded = $cookie; + $cookie_encoded =~ s{([^A-Za-z0-9_])}{sprintf "%%%02x", ord $1}eg; + $out = `nghttp $opt -v $proto://127.0.0.1:$port/?resp:set-cookie=$cookie_encoded`; + is $?, 0; + like $out, qr/ set-cookie: $cookie$/m; + }; + }; + subtest 'http (upgrade)' => sub { + $doit->('http', '-u', $server->{port}); + }; + subtest 'http (direct)' => sub { + $doit->('http', '', $server->{port}); + }; + subtest 'https' => sub { + plan skip_all => 'OpenSSL does not support protocol negotiation; it is too old' + unless openssl_can_negotiate(); + $doit->('https', '', $server->{tls_port}); + }; +}; + +done_testing; diff --git a/src/web/server/h2o/libh2o/t/50server-starter.t b/src/web/server/h2o/libh2o/t/50server-starter.t new file mode 100644 index 000000000..9be37d378 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50server-starter.t @@ -0,0 +1,103 @@ +use strict; +use warnings; +use Digest::MD5 qw(md5_hex); +use File::Temp qw(tempdir); +use Test::More; +use t::Util; + +plan skip_all => 'start_server not found' + unless prog_exists('start_server'); + +my $tempdir = tempdir(CLEANUP => 1); + +subtest "master-mode" => sub { + my $server = spawn_h2o({ + opts => [ qw(--mode=master) ], + conf => << "EOT", +pid-file: $tempdir/h2o.pid +hosts: + default: + paths: + /: + file.dir: @{[ DOC_ROOT ]} +EOT + }); + + subtest 'before-HUP' => sub { + is read_file("$tempdir/h2o.pid"), "$server->{pid}\n", "pid"; + fetch_test($server->{port}, $server->{tls_port}); + }; + kill 'HUP', $server->{pid}; + sleep 1; + subtest 'after-HUP' => sub { + fetch_test($server->{port}, $server->{tls_port}); + is read_file("$tempdir/h2o.pid"), "$server->{pid}\n", "pid unchanged"; + }; + + undef $server; + + ok ! stat("$tempdir/h2o.pid"), "pid-file is unlinked"; +}; + +subtest "daemon-mode" => sub { + my $server = spawn_h2o({ + opts => [ qw(--mode=daemon) ], + conf => << "EOT", +pid-file: $tempdir/h2o.pid +error-log: $tempdir/h2o.error +hosts: + default: + paths: + /: + file.dir: @{[ DOC_ROOT ]} +EOT + }); + my ($port, $tls_port) = map { $server->{$_} } qw(port tls_port); + + sleep 1; + undef $server; # should have performed a double-fork by now + + my $pid = read_file("$tempdir/h2o.pid"); + chomp $pid; + + subtest 'before-HUP' => sub { + fetch_test($port, $tls_port); + }; + kill 'HUP', $pid; + sleep 1; + subtest 'after-HUP' => sub { + fetch_test($port, $tls_port); + is read_file("$tempdir/h2o.pid"), "$pid\n", "pid unchanged"; + }; + + kill 'TERM', $pid; + sleep 1; + ok ! stat("$tempdir/h2o.pid"), "pid-file is unlinked"; +}; + +done_testing; + +sub fetch_test { + my ($port, $tls_port) = @_; + + plan skip_all => 'curl not found' + unless prog_exists('curl'); + my $curl = "curl --insecure"; + $curl .= " --http1.1" + if curl_supports_http2(); + + my $doit = sub { + my ($proto, $port) = @_; + my $content = `$curl --silent --show-error $proto://127.0.0.1:$port/`; + is md5_hex($content), md5_file(DOC_ROOT . "/index.txt"), $proto; + }; + $doit->("http", $port); + $doit->("https", $tls_port); +} + +sub read_file { + my $fn = shift; + open my $fh, '<', $fn + or die "failed to open file:$fn:$!"; + join '', <$fh>; +} diff --git a/src/web/server/h2o/libh2o/t/50servername.t b/src/web/server/h2o/libh2o/t/50servername.t new file mode 100644 index 000000000..62b30aade --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50servername.t @@ -0,0 +1,97 @@ +use strict; +use warnings; +use Test::More; +use Net::EmptyPort qw(check_port empty_port); +use t::Util; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); + +subtest "default server header" => sub { + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + file.dir: @{[ DOC_ROOT ]} +EOT + + my $resp = `curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/index.txt 2>&1 > /dev/null`; + like $resp, qr{^HTTP/1\.1 200 }s, "200 response"; + like $resp, qr{^server: h2o/.*\r$}im, "h2o default Server: header found"; + is +(() = $resp =~ m{^server}img), 1, "header added only once"; +}; + +subtest "alternate server header" => sub { + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + file.dir: @{[ DOC_ROOT ]} +server-name: h2oalternate +EOT + + my $resp = `curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/index.txt 2>&1 > /dev/null`; + like $resp, qr{^HTTP/1\.1 200 }s, "200 response"; + like $resp, qr{^server: h2oalternate\r$}im, "alternate h2o Server: header found"; + is +(() = $resp =~ m{^server}img), 1, "header added only once"; +}; + +subtest "no server header" => sub { + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + file.dir: @{[ DOC_ROOT ]} +server-name: h2oalternate +send-server-name: OFF +EOT + my $resp = `curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/index.txt 2>&1 > /dev/null`; + like $resp, qr{^HTTP/1\.1 200 }s, "200 response"; + unlike $resp, qr{\nserver}, "server unset"; +}; + +my $upstream_port = empty_port(); + +my $upstream = spawn_server( + argv => [ qw(plackup -s Starlet --keepalive-timeout 100 --access-log /dev/null --listen), $upstream_port, ASSETS_DIR . "/upstream.psgi" ], + is_ready => sub { + check_port($upstream_port); + }, +); + +subtest "preserve server header" => sub { + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + proxy.reverse.url: http://127.0.0.1:$upstream_port +server-name: not-sent +send-server-name: preserve +EOT + my $resp = `curl --silent -Hserver:this-one-is-sent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/echo-server-header 2>&1 > /dev/null`; + like $resp, qr{^HTTP/1\.1 200 }s, "200 response"; + like $resp, qr{\nserver: this-one-is-sent}i, "server: set to expected value"; + unlike $resp, qr{\nserver: not-sent}i, "server: not set to the internal value"; +}; + +subtest "do not preserve server header" => sub { + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + proxy.reverse.url: http://127.0.0.1:$upstream_port +server-name: sent-this-time +send-server-name: ON +EOT + my $resp = `curl --silent -Hserver:this-one-is-not-sent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/echo-server-header 2>&1 > /dev/null`; + like $resp, qr{^HTTP/1\.1 200 }s, "200 response"; + like $resp, qr{\nserver: sent-this-time}i, "server: set to the internal value"; + unlike $resp, qr{\nserver: this-one-is-not-sent}i, "server: not set to the backend value"; +}; + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/50status.t b/src/web/server/h2o/libh2o/t/50status.t new file mode 100644 index 000000000..64adf9604 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50status.t @@ -0,0 +1,88 @@ +use strict; +use warnings; +use Test::More; +use t::Util; +use JSON; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); + +subtest "default json handler" => sub { + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + file.dir: @{[ DOC_ROOT ]} + /s: + status: ON +EOT + + my $resp = `curl --silent -o /dev/stderr http://127.0.0.1:$server->{port}/s/json 2>&1 > /dev/null`; + my $jresp = decode_json("$resp"); + my @requests = @{$jresp->{'requests'}}; + is $jresp->{'connections'}, 1, "One connection"; + is scalar @requests, 1, "One request"; +}; + +subtest "json hander without requests" => sub { + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + file.dir: @{[ DOC_ROOT ]} + /s: + status: ON +EOT + + my $resp = `curl --silent -o /dev/stderr 'http://127.0.0.1:$server->{port}/s/json?show=main,events' 2>&1 > /dev/null`; + my $jresp = decode_json("$resp"); + is $jresp->{'connections'}, 1, "One connection"; + is $jresp->{'requests'}, undef, "Requests not present"; + is $jresp->{'status-errors.404'}, 0, "Internal errors monitoring"; +}; + +subtest "json hander check 404 error counter" => sub { + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + file.dir: @{[ DOC_ROOT ]} + /s: + status: ON +EOT + my $resp = `curl --silent -o /dev/stderr 'http://127.0.0.1:$server->{port}/beeb98fcf148317be5fe5d763c658bc9ea9c087a' 2>&1 > /dev/null`; + my $resp = `curl --silent -o /dev/stderr 'http://127.0.0.1:$server->{port}/s/json?show=events' 2>&1 > /dev/null`; + my $jresp = decode_json("$resp"); + is $jresp->{'connections'}, undef, "Connections not present"; + is $jresp->{'requests'}, undef, "Requests not present"; + is $jresp->{'status-errors.404'}, 1, "Found the 404 error"; +}; + +subtest "duration stats" => sub { + my $server = spawn_h2o(<< "EOT"); +duration-stats: ON +hosts: + default: + paths: + /: + file.dir: @{[ DOC_ROOT ]} + /s: + status: ON +EOT + + my $resp = `curl --silent -o /dev/stderr http://127.0.0.1:$server->{port}/s/json?noreqs 2>&1 > /dev/null`; + my $jresp = decode_json("$resp"); + my @nr_requests = @{ $jresp->{'requests'} }; + is $jresp->{'connections'}, 1, "One connection"; + is scalar @nr_requests, 1, "One request"; + is $jresp->{'status-errors.404'}, 0, "Additional errors"; + is $jresp->{'connect-time-0'}, 0, "Duration stats"; +}; + + + + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/50throttle-response.t b/src/web/server/h2o/libh2o/t/50throttle-response.t new file mode 100644 index 000000000..4fba4d238 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/50throttle-response.t @@ -0,0 +1,42 @@ +use strict; +use warnings; +use Test::More; +use t::Util; +use Time::HiRes qw(time); + +plan skip_all => 'curl not found' + unless prog_exists('curl'); + +my $all_data = do { + open my $fh, "<", "@{[DOC_ROOT]}/halfdome.jpg" + or die "failed to open file:@{[DOC_ROOT]}/halfdome.jpg:$!"; + undef $/; + <$fh>; +}; + +my $server = spawn_h2o(<< "EOT"); +throttle-response: ON +hosts: + default: + paths: + /: + file.dir: @{[ DOC_ROOT ]} + header.add: "X-Traffic: 100000" +EOT + +run_with_curl($server, sub { + my ($proto, $port, $curl_cmd) = @_; + $curl_cmd .= " --silent --show-error"; + my $url = "$proto://127.0.0.1:$port/halfdome.jpg"; + + subtest "throttle-to-low-speed" => sub { + my $start_time = time; + my $resp = `$curl_cmd $url`; + my $end_time = time; + is $resp, $all_data; + my $speed = length($resp) / ($end_time - $start_time); + cmp_ok($speed, '<=', 100000 * 1.1); # the implementation may cause response speed is a bit larger than the limitation, especially when file is not big enough. + }; +}); + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/80dup-host-headers.t b/src/web/server/h2o/libh2o/t/80dup-host-headers.t new file mode 100644 index 000000000..eae679b99 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/80dup-host-headers.t @@ -0,0 +1,51 @@ +use strict; +use warnings; +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +plan skip_all => 'nghttp not found' + unless prog_exists('nghttp'); + +my $upstream_port = empty_port(); +$| = 1; +my $socket = new IO::Socket::INET ( + LocalHost => '127.0.0.1', + LocalPort => $upstream_port, + Proto => 'tcp', + Listen => 1, + Reuse => 1 +); +die "cannot create socket $!\n" unless $socket; + +check_port($upstream_port) or die "can't connect to server socket"; +# accent and close check_port's connection +my $client_socket = $socket->accept(); +close($client_socket); + +my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + "/": + proxy.reverse.url: http://127.0.0.1:$upstream_port +EOT + +system("nghttp http://127.0.0.1:$server->{'port'}/ -H 'host: host.example.com' &"); + +my $req; +$client_socket = $socket->accept(); +$client_socket->recv($req, 1024); +$client_socket->send("HTTP/1.1 200 Ok\r\nConnection:close\r\n\r\nBody\r\n"); +close($client_socket); +$socket->close(); + +my $host_headers = 0; +foreach (split(/\r\n/, $req)) { + if (/^host:/i) { + $host_headers++ + } +} + +ok($host_headers == 1, "Only saw one host: header"); +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/80graceful-shutdown.t b/src/web/server/h2o/libh2o/t/80graceful-shutdown.t new file mode 100644 index 000000000..cdc904f94 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/80graceful-shutdown.t @@ -0,0 +1,80 @@ +use strict; +use warnings; +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +plan skip_all => 'nghttp not found' + unless prog_exists('nghttp'); + +plan skip_all => 'plackup not found' + unless prog_exists('plackup'); + +plan skip_all => 'Starlet not found' + unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; + +my $upstream_port = empty_port(); +my $upstream_hostport = "127.0.0.1:$upstream_port"; + +sub create_upstream { + my @args = ( + qw(plackup -s Starlet --keepalive-timeout 100 --access-log /dev/null --listen), + $upstream_hostport, + ASSETS_DIR . "/upstream.psgi", + ); + spawn_server( + argv => \@args, + is_ready => sub { + $upstream_hostport =~ /:([0-9]+)$/s + or die "failed to extract port number"; + check_port($1); + }, + ); +}; + +sub doit { + my $timeout = shift; + my $server = spawn_h2o(<< "EOT"); +http2-graceful-shutdown-timeout: $timeout +hosts: + default: + paths: + "/": + proxy.reverse.url: http://127.0.0.1:$upstream_port +EOT + + my $upstream = create_upstream(); + my $nghttp_pid = open(NGHTTP, "nghttp -w 1 -v http://127.0.0.1:$server->{'port'}/infinite-stream 2>&1 |"); + + my $nghttp_interrupted=0; + eval { + local $SIG{ALRM} = sub { die "Timeout" }; + my $stopped=0; + alarm(5); + while () { + if (/recv DATA frame/ && !$stopped) { + # after the request started, stop H2O + kill 'TERM', $server->{pid}; + $stopped = 1; + } + if (/Some requests were not processed/) { + $nghttp_interrupted = 1; + } + } + alarm(0); + }; + my $err = $@; + if ($timeout == 1) { + ok($nghttp_interrupted == 1, "nghttp was interrupted"); + ok($err !~ /^Timeout/, "nghttp didn't timeout"); + } else { + kill 'TERM', $nghttp_pid; + ok($nghttp_interrupted == 0, "nghttp was not interrupted"); + ok($err =~ /^Timeout/, "nghttp did timeout"); + } +} + +doit(0); +doit(1); + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/80invalid-h2-chars-in-headers.t b/src/web/server/h2o/libh2o/t/80invalid-h2-chars-in-headers.t new file mode 100644 index 000000000..0d277f9fb --- /dev/null +++ b/src/web/server/h2o/libh2o/t/80invalid-h2-chars-in-headers.t @@ -0,0 +1,44 @@ +use strict; +use warnings; +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +plan skip_all => 'nghttp not found' + unless prog_exists('nghttp'); + +my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + "/": + file.dir: @{[ DOC_ROOT ]} +EOT + +my $resp = `nghttp -v http://127.0.0.1:$server->{'port'}/ -H 'h\rost: host.example.com' 2>&1`; +like $resp, qr{.*error_code=NO_ERROR.*}, "No protocol error for a bogus header name"; +like $resp, qr{.*:status: 400}, "400 bad headers sent"; +like $resp, qr{found an invalid character in header name}, "Found expected error message"; + +$resp = `nghttp -v http://127.0.0.1:$server->{'port'}/ -H 'host: host.\rexample.com' 2>&1`; +like $resp, qr{.*error_code=NO_ERROR.*}, "No protocol error for a bogus header value"; +like $resp, qr{.*:status: 400}, "400 bad headers sent"; +like $resp, qr{found an invalid character in header value}, "Found expected error message"; + +$resp = `nghttp -nv http://127.0.0.1:$server->{'port'}/test/ -H 'host: host.example.com' -H'blah:1' -H'blah:2' -H'blah:3' 2>&1`; +like $resp, qr{.*error_code=NO_ERROR.*}, "No error for no bogus error value"; + +$resp = `nghttp -nv http://127.0.0.1:$server->{'port'}/test/ -H 'host: host.example.com' -H'bl\ah:1' -H'bl\ah:2' -H'bl\ah:3' 2>&1`; +like $resp, qr{.*error_code=NO_ERROR.*}, "No protocol error for repeated bogus headers"; +like $resp, qr{.*:status: 400}, "400 bad headers sent"; + +$resp = `nghttp -nv http://127.0.0.1:$server->{'port'}/ -H ':bad: 1234' -H'x-reproxy-url: http://www.example.com' 2>&1`; +like $resp, qr{.*error_code=PROTOCOL_ERROR.*}, "Error for an invalid pseudo-header"; + +$resp = `nghttp -nv http://127.0.0.1:$server->{'port'}/test/ -H 'host: host.example.com' -H'bl\ah:1' -H':badpseudo:2' 2>&1`; +like $resp, qr{.*error_code=PROTOCOL_ERROR.*}, "Protocol error for an invalid pseudo-header, even when a bad header was present"; + +$resp = `nghttp -nv http://127.0.0.1:$server->{'port'}/test/ -H 'host: host.उदाहरण.com' 2>&1`; +like $resp, qr{.*error_code=NO_ERROR.*}, "No error for utf-8 in value"; + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/80issues-from-proxy-reproxy-to-different-host.t b/src/web/server/h2o/libh2o/t/80issues-from-proxy-reproxy-to-different-host.t new file mode 100644 index 000000000..9a05a1db4 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/80issues-from-proxy-reproxy-to-different-host.t @@ -0,0 +1,79 @@ +use strict; +use warnings; +use Digest::MD5 qw(md5_hex); +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); +plan skip_all => 'plackup not found' + unless prog_exists('plackup'); +plan skip_all => 'Starlet not found' + unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; + +# start upstream +my $upstream = empty_port(); +my $upstream_guard = spawn_server( + argv => [ + qw(plackup -s Starlet --keepalive-timeout 100 --access-log /dev/null --listen), "127.0.0.1:$upstream", + ASSETS_DIR . "/upstream.psgi", + ], + is_ready => sub { + check_port($upstream); + }, +); + +my $error_upstream = empty_port(); +my $error_upstream_guard = spawn_server( + argv => [ + qw(plackup -s Starlet --keepalive-timeout 100 --access-log /dev/null --listen), "127.0.0.1:$error_upstream", + "-e", 'sub { [200, [], [123]] }', + ], + is_ready => sub { + check_port($error_upstream); + }, +); + +subtest "internal-redirect-from-proxy" => sub { + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + "/": + proxy.reverse.url: http://127.0.0.1:$upstream/ + error-doc: + status: 404 + url: http://127.0.0.1:$error_upstream/ +EOT + my ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/index.txt"); + like $headers, qr{^HTTP/1\.1 200 }is; + is $body, "hello\n"; + + ($headers, $body) = run_prog("curl --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/notfound"); + like $headers, qr{^HTTP/1\.1 404 }is; + is $body, "123"; +}; + +subtest "internal-redirect-within-proxy" => sub { + plan skip_all => 'mruby support is off' + unless server_features()->{mruby}; + my $server = spawn_h2o(<< "EOT"); +reproxy: ON +hosts: + default: + paths: + "/": + mruby.handler: | + Proc.new do |env| + [200, { "x-reproxy-url" => "/proxy/?resp:status=302&resp:location=/index.txt" }, ["from mruby"]] + end + "/proxy": + proxy.reverse.url: http://127.0.0.1:$upstream/ +EOT + my ($headers, $body) = run_prog("curl --max-redirs 0 --silent --dump-header /dev/stderr http://127.0.0.1:$server->{port}/"); + like $headers, qr{^HTTP/1\.1 200 }is; + is $body, "hello\n"; +}; + +done_testing; diff --git a/src/web/server/h2o/libh2o/t/80issues579.t b/src/web/server/h2o/libh2o/t/80issues579.t new file mode 100644 index 000000000..046e188ad --- /dev/null +++ b/src/web/server/h2o/libh2o/t/80issues579.t @@ -0,0 +1,45 @@ +use strict; +use warnings; +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +plan skip_all => 'mruby support is off' + unless server_features()->{mruby}; +plan skip_all => 'plackup not found' + unless prog_exists('plackup'); +plan skip_all => 'Starlet not found' + unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; +plan skip_all => 'nghttp not found' + unless prog_exists('nghttp'); + +# spawn upstream +my $upstream_port = empty_port(); +my $upstream = spawn_server( + argv => [ + qw(plackup -s Starlet --access-log /dev/null -p), $upstream_port, ASSETS_DIR . "/upstream.psgi", + ], + is_ready => sub { + check_port($upstream_port); + }, +); + +# spawn server +my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + mruby.handler: | + Proc.new do |env| + [399, {"link" => "; rel=preload"}, []] + end + proxy.reverse.url: http://127.0.0.1:$upstream_port + /assets: + file.dir: @{[DOC_ROOT]} +EOT + +my $resp = `nghttp -n --stat "http://127.0.0.1:$server->{port}/index.txt"`; +like $resp, qr{\nid\s*responseEnd\s.*\s/assets/index\.js\n.*\s/index\.txt\n}is, 'should receive pushed blocking asset from file handler before the main response'; + +done_testing; diff --git a/src/web/server/h2o/libh2o/t/80issues595.t b/src/web/server/h2o/libh2o/t/80issues595.t new file mode 100644 index 000000000..721e054ed --- /dev/null +++ b/src/web/server/h2o/libh2o/t/80issues595.t @@ -0,0 +1,42 @@ +use strict; +use warnings; +use Test::More; +use t::Util; + +plan skip_all => 'nghttp not found' + unless prog_exists('nghttp'); + +my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + file.dir: @{[DOC_ROOT]} +EOT + +subtest "trailing HEADERS" => sub { + my $doit = sub { + my ($proto, $opts, $port) = @_; + my $resp = `nghttp $opts -M 1 -m 3 -H ':method: GET' -d /dev/null --trailer 'foo: bar' '$proto://127.0.0.1:$port/'`; + is $resp, "hello\n" x 3, $proto; + }; + $doit->("http", "", $server->{port}); + $doit->("https", "", $server->{tls_port}); +}; + +subtest "trailing HEADERS with CONTINUATION" => sub { + my $doit = sub { + my ($proto, $opts, $port) = @_; + my $cmd = "nghttp $opts -M 1 -m 3 -H ':method: GET' -d /dev/null"; + $cmd .= join "", map { + " --trailer 'foo$_: 0123456789abcdef:$_'" + } 1..1000; + $cmd .= " '$proto://127.0.0.1:$port/'"; + my $resp = `$cmd`; + is $resp, "hello\n" x 3, $proto; + }; + $doit->("http", "", $server->{port}); + $doit->("https", "", $server->{tls_port}); +}; + +done_testing; diff --git a/src/web/server/h2o/libh2o/t/80issues61.t b/src/web/server/h2o/libh2o/t/80issues61.t new file mode 100644 index 000000000..bdcfd6ea5 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/80issues61.t @@ -0,0 +1,57 @@ +use strict; +use warnings; +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +plan skip_all => 'plackup not found' + unless prog_exists('plackup'); +plan skip_all => 'Starlet not found' + unless system('perl -MStarlet /dev/null > /dev/null 2>&1') == 0; + +my $upstream_port = empty_port(); + +my $upstream = spawn_server( + argv => [ + qw(plackup -s Starlet --access-log /dev/null -p), $upstream_port, ASSETS_DIR . "/upstream.psgi", + ], + is_ready => sub { + check_port($upstream_port); + }, +); + +my $h2o = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + proxy.reverse.url: http://127.0.0.1:$upstream_port +EOT + +subtest 'http1' => sub { + plan skip_all => 'curl not found' + unless prog_exists('curl'); + + my $doit = sub { + my ($proto, $port) = @_; + my $extra = ''; + if ($proto eq 'https') { + $extra .= ' --insecure'; + $extra .= ' --http1.1' + if curl_supports_http2(); + } + subtest $proto => sub { + my $resp = `curl --max-time 1 $extra $proto://127.0.0.1:$port/streaming-body 2>&1`; + like $resp, qr/operation timed out/i, "operation should time out"; + sleep 1; + $resp = `curl --silent --dump-header /dev/stderr $extra $proto://127.0.0.1:$port/ 2>&1 > /dev/null`; + like $resp, qr{^HTTP/[^ ]+ 404\s}s, "server is still alive"; + }; + }; + $doit->('http', $h2o->{port}); + $doit->('https', $h2o->{tls_port}); +}; + +# note: implement test using HTTP/2, nghttp --timeout 2 does not seem to work like above + +done_testing; diff --git a/src/web/server/h2o/libh2o/t/80one-byte-window.t b/src/web/server/h2o/libh2o/t/80one-byte-window.t new file mode 100644 index 000000000..f2d0813cb --- /dev/null +++ b/src/web/server/h2o/libh2o/t/80one-byte-window.t @@ -0,0 +1,56 @@ +use strict; +use warnings; +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +plan skip_all => 'nc not found' + unless prog_exists('nc'); + +plan skip_all => 'nghttp not found' + unless prog_exists('nghttp'); + +my $upstream_port = empty_port(); +$| = 1; +my $socket = new IO::Socket::INET ( + LocalHost => '127.0.0.1', + LocalPort => $upstream_port, + Proto => 'tcp', + Listen => 1, + Reuse => 1 +); +die "cannot create socket $!\n" unless $socket; + +check_port($upstream_port) or die "can't connect to server socket"; +# accent and close check_port's connection +my $client_socket = $socket->accept(); +close($client_socket); + +my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + "/": + proxy.reverse.url: http://127.0.0.1:$upstream_port +EOT + +my $msg = "this is the message"; +open(NGHTTP, "nghttp -t 3 -w 1 -v http://127.0.0.1:$server->{'port'}/ -H 'host: host.example.com' 2>&1 |"); + +my $req; +$client_socket = $socket->accept(); +$client_socket->recv($req, 1024); +$client_socket->send("HTTP/1.1 200 Ok\r\nConnection:close\r\n\r\n$msg"); +close($client_socket); + +my $worked = 1; +while() { + if (/Timeout/) { + $worked = 0; + } +} + +ok($worked == 1, "The connection didn't timeout"); + +$socket->close(); +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/80reverse-proxy-missing-content-length-for-post.t b/src/web/server/h2o/libh2o/t/80reverse-proxy-missing-content-length-for-post.t new file mode 100644 index 000000000..4afd9f8c7 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/80reverse-proxy-missing-content-length-for-post.t @@ -0,0 +1,76 @@ +use strict; +use warnings; +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); +plan skip_all => 'curl does not support HTTP/2' + unless curl_supports_http2(); + +my $upstream_port = empty_port(); +$| = 1; +my $socket = new IO::Socket::INET ( + LocalHost => '127.0.0.1', + LocalPort => $upstream_port, + Proto => 'tcp', + Listen => 1, + Reuse => 1 +); +die "cannot create socket $!\n" unless $socket; + +check_port($upstream_port) or die "can't connect to server socket"; +# accept and close check_port's connection +my $client_socket = $socket->accept(); +close($client_socket); + +my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + "/": + proxy.reverse.url: http://127.0.0.1:$upstream_port +EOT + +sub doit { + my $cmd = shift; + my $should_see_cl = shift; + my $cl_value = shift; + system($cmd); + + my $req; + $client_socket = $socket->accept(); + $client_socket->recv($req, 1 * 1024); + $client_socket->send("HTTP/1.1 200 Ok\r\nConnection:close\r\n\r\nBody\r\n"); + close($client_socket); + + my $cl_actual_value = -1; + my $cl_headers = 0; + foreach (split(/\r\n/, $req)) { + if (/^content-length:(.*)$/i) { + $cl_headers++; + $cl_actual_value = $1; + } + } + if ($should_see_cl) { + ok($cl_headers == 1, "Saw one, and only one content-length: header"); + ok($cl_actual_value == $cl_value, "content-length: header has the expected value"); + } else { + ok($cl_headers == 0, "Saw no content-length: header"); + } +} +my $file_size = 512; +my $file = create_data_file($file_size); + +# curl doesn't add a CL header when using -X POST +doit("curl -so /dev/null --http2 -X POST http://127.0.0.1:$server->{'port'}/ &", 1, 0); +# curl adds a content-length:0 header when using --data '' +doit("curl -so /dev/null --http2 --data '' http://127.0.0.1:$server->{'port'}/ &", 1, 0); + +# check that an existing CL header is preserved +doit("curl -so /dev/null --http2 --data 'a=b' http://127.0.0.1:$server->{'port'}/ &", 1, 3); +doit("curl -so /dev/null --http2 --header 'transfer-encoding: chunked' --data-binary \@$file -X POST http://127.0.0.1:$server->{'port'}/ &", 1, $file_size); + +$socket->close(); +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/80yaml-merge.t b/src/web/server/h2o/libh2o/t/80yaml-merge.t new file mode 100644 index 000000000..55cd3911d --- /dev/null +++ b/src/web/server/h2o/libh2o/t/80yaml-merge.t @@ -0,0 +1,82 @@ +use strict; +use warnings; +use Digest::MD5 qw(md5_hex); +use File::Temp qw(tempdir); +use Net::EmptyPort qw(check_port); +use Test::More; +use t::Util; + +plan skip_all => 'mruby support is off' + unless server_features()->{mruby}; + +plan skip_all => 'nc not found' + unless prog_exists('nc'); + +my @ports = empty_ports(3); + +my $tempdir = tempdir(CLEANUP => 1); + +{ # create configuration file + open my $fh, ">", "$tempdir/h2o.conf" + or die "failed to create file:$tempdir/h2o.conf:$!"; + print $fh <<"EOT"; +hosts: + host1: \&default + listen: $ports[0] + paths: + /: + mruby.handler: | + Proc.new do |env| + [200, {}, [env["SERVER_NAME"]]] + end + host2: + listen: $ports[1] + <<: *default + host3: + <<: *default + listen: $ports[2] +EOT +}; + +my $guard = spawn_server( + argv => [ bindir() . "/h2o", "-c", "$tempdir/h2o.conf" ], + is_ready => sub { + for (@ports) { + return unless check_port($_); + } + return 1; + }, +); + +subtest "port1" => sub { + subtest "no-host" => sub { + my $resp = `(echo "GET / HTTP/1.0"; echo) | nc 127.0.0.1 $ports[0] 2>&1`; + like $resp, qr{^HTTP/1\.[0-9]+ 200 OK\r\n}s; + like $resp, qr{\r\n\r\nhost1$}s; + }; + subtest "host=host2" => sub { + my $resp = `(echo "GET / HTTP/1.0"; echo "Host: host2"; echo) | nc 127.0.0.1 $ports[0] 2>&1`; + like $resp, qr{^HTTP/1\.[0-9]+ 200 OK\r\n}s; + like $resp, qr{\r\n\r\nhost2$}s; + }; + subtest "host=host3" => sub { + # host3 is not listening on the default port + my $resp = `(echo "GET / HTTP/1.0"; echo) | nc 127.0.0.1 $ports[0] 2>&1`; + like $resp, qr{^HTTP/1\.[0-9]+ 200 OK\r\n}s; + like $resp, qr{\r\n\r\nhost1$}s; + }; +}; + +subtest "port2" => sub { + my $resp = `(echo "GET / HTTP/1.0"; echo) | nc 127.0.0.1 $ports[1] 2>&1`; + like $resp, qr{^HTTP/1\.[0-9]+ 200 OK\r\n}s; + like $resp, qr{\r\n\r\nhost2$}s; +}; + +subtest "port3" => sub { + my $resp = `(echo "GET / HTTP/1.0"; echo) | nc 127.0.0.1 $ports[2] 2>&1`; + like $resp, qr{^HTTP/1\.[0-9]+ 200 OK\r\n}s; + like $resp, qr{\r\n\r\nhost3$}s; +}; + +done_testing; diff --git a/src/web/server/h2o/libh2o/t/90live-fetch-ocsp-response.t b/src/web/server/h2o/libh2o/t/90live-fetch-ocsp-response.t new file mode 100644 index 000000000..112098dfa --- /dev/null +++ b/src/web/server/h2o/libh2o/t/90live-fetch-ocsp-response.t @@ -0,0 +1,50 @@ +use strict; +use warnings; +use File::Temp qw(tempfile); +use Test::More; + +plan skip_all => "skipping live tests (setenv LIVE_TESTS=1 to run them)" + unless $ENV{LIVE_TESTS}; + +my @HOSTS = qw( + www.verisign.com + www.thawte.com + www.cybertrust.ne.jp + www.comodo.com + www.godaddy.com + www.startssl.com +); + +for my $host (@HOSTS) { + subtest $host => sub { + doit($host); + }; +} + +done_testing; + +sub doit { + my $host = shift; + my $input = do { + open my $fh, "-|", "openssl s_client -showcerts -host $host -port 443 -CAfile /dev/null < /dev/null 2>&1" + or die "failed to invoke openssl:$!"; + local $/; + <$fh>; + }; + my @certs; + while ($input =~ /(-----BEGIN CERTIFICATE-----.*?-----END CERTIFICATE-----)/sg) { + push @certs, $1; + } + ok @certs >= 2, "chain has more than 2 certificates"; + + my ($cert_fh, $cert_fn) = tempfile(UNLINK => 1); + print $cert_fh join "\n", @certs; + close $cert_fh; + + my $ret = system("share/h2o/fetch-ocsp-response $cert_fn > /dev/null"); + if ($ret == 0) { + pass "successfully fetched and verified OCSP response"; + } else { + fail "fetch-ocsp-response exitted with status:$?"; + } +} diff --git a/src/web/server/h2o/libh2o/t/90live-sni.t b/src/web/server/h2o/libh2o/t/90live-sni.t new file mode 100644 index 000000000..eb5bb5d8d --- /dev/null +++ b/src/web/server/h2o/libh2o/t/90live-sni.t @@ -0,0 +1,91 @@ +use strict; +use warnings; +use Digest::MD5 qw(md5_hex); +use Test::More; +use t::Util; + +our $CA_CERT = "misc/test-ca/ca.crt"; + +# using wget since curl of OS X 10.9.5 returns invalid certificate chain error with the test +plan skip_all => 'wget not found' + unless prog_exists('wget'); + +plan skip_all => 'only wget >= 1.14 supports SNI' + unless `wget --version` =~ /^GNU Wget 1\.([0-9]+)/ && $1 >= 14; + +plan skip_all => "skipping live tests (setenv LIVE_TESTS=1 to run them)" + unless $ENV{LIVE_TESTS}; + +subtest "basic" => sub { + my $server = spawn_h2o(sub { + my ($port, $tls_port) = @_; + return << "EOT"; +hosts: + "127.0.0.1.xip.io:$tls_port": + paths: + /: + file.dir: examples/doc_root + "alternate.127.0.0.1.xip.io:$tls_port": + listen: + port: $tls_port + ssl: + key-file: examples/h2o/alternate.key + certificate-file: examples/h2o/alternate.crt + paths: + /: + file.dir: examples/doc_root.alternate +EOT + }); + + do_test( + "127.0.0.1.xip.io:$server->{tls_port}", + md5_file("examples/doc_root/index.html"), + ); + + do_test( + "alternate.127.0.0.1.xip.io:$server->{tls_port}", + md5_file("examples/doc_root.alternate/index.txt"), + ); +}; + +subtest "wildcard" => sub { + my $server = spawn_h2o(sub { + my ($port, $tls_port) = @_; + return << "EOT"; +hosts: + "127.0.0.1.xip.io:$tls_port": + paths: + /: + file.dir: examples/doc_root + "*.127.0.0.1.xip.io:$tls_port": + listen: + port: $tls_port + ssl: + key-file: examples/h2o/alternate.key + certificate-file: examples/h2o/alternate.crt + paths: + /: + file.dir: examples/doc_root.alternate +EOT + }); + + do_test( + "127.0.0.1.xip.io:$server->{tls_port}", + md5_file("examples/doc_root/index.html"), + ); + + do_test( + "alternate.127.0.0.1.xip.io:$server->{tls_port}", + md5_file("examples/doc_root.alternate/index.txt"), + ); +}; + + +done_testing(); + +sub do_test { + my ($authority, $md5_expected) = @_; + my $content = `wget -nv --ca-certificate=$CA_CERT -O - https://$authority/`; + is $?, 0, "wget returns success"; + is md5_hex($content), $md5_expected, "content is as expected"; +} diff --git a/src/web/server/h2o/libh2o/t/90root-fastcgi-php.t b/src/web/server/h2o/libh2o/t/90root-fastcgi-php.t new file mode 100644 index 000000000..94010984e --- /dev/null +++ b/src/web/server/h2o/libh2o/t/90root-fastcgi-php.t @@ -0,0 +1,78 @@ +# this test checks the behavior of `file.custom-handler` and `fastcgi.spawn` +use strict; +use warnings; +use Digest::MD5 qw(md5_hex); +use File::Temp qw(tempdir); +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +plan skip_all => 'test requires root privileges' + unless $< == 0; +plan skip_all => 'user: nobody does not exist' + unless getpwnam 'nobody'; +plan skip_all => 'user: daemon does not exist' + unless getpwnam 'daemon'; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); +plan skip_all => 'php-cgi not found' + unless prog_exists('php-cgi'); + +sub check_resp { + my $port = shift; + my $resp = `curl --silent http://127.0.0.1:$port/index.txt`; + is $resp, "hello\n", 'ordinary file'; + $resp = `curl --silent http://127.0.0.1:$port/hello.php`; + is $resp, 'hello world', 'php'; +} + +subtest 'user-in-global-conf' => sub { + my $server = spawn_h2o(<< "EOT"); +user: nobody +file.custom-handler: + extension: .php + fastcgi.spawn: "exec php-cgi" +hosts: + default: + paths: + "/": + file.dir: @{[ DOC_ROOT ]} +EOT + check_resp($server->{port}); +}; + +subtest 'user-in-fastcgi.spawn' => sub { + my $server = spawn_h2o(<< "EOT"); +user: nobody +file.custom-handler: + extension: .php + fastcgi.spawn: + command: "exec php-cgi" + user: daemon +hosts: + default: + paths: + "/": + file.dir: @{[ DOC_ROOT ]} +EOT + check_resp($server->{port}); +}; + +subtest 'user-not-in-map-style-fastcgi.spawn' => sub { + my $server = spawn_h2o(<< "EOT"); +user: nobody +file.custom-handler: + extension: .php + fastcgi.spawn: + command: "exec php-cgi" +hosts: + default: + paths: + "/": + file.dir: @{[ DOC_ROOT ]} +EOT + check_resp($server->{port}); +}; + +done_testing(); diff --git a/src/web/server/h2o/libh2o/t/README.md b/src/web/server/h2o/libh2o/t/README.md new file mode 100644 index 000000000..a2f203959 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/README.md @@ -0,0 +1,9 @@ +The tests are numbered using the following rule. + +- 00 - unit tests +- 10 - module-level end-to-end tests +- (library level tests may go in here) +- 40 - protocol tests +- 50 - end-to-end tests +- 80 - issue tests +- 90 - author tests? diff --git a/src/web/server/h2o/libh2o/t/Util.pm b/src/web/server/h2o/libh2o/t/Util.pm new file mode 100644 index 000000000..220bb631b --- /dev/null +++ b/src/web/server/h2o/libh2o/t/Util.pm @@ -0,0 +1,283 @@ +package t::Util; + +use strict; +use warnings; +use Digest::MD5 qw(md5_hex); +use File::Temp qw(tempfile); +use Net::EmptyPort qw(check_port empty_port); +use POSIX ":sys_wait_h"; +use Path::Tiny; +use Scope::Guard qw(scope_guard); +use Test::More; +use Time::HiRes qw(sleep); + +use base qw(Exporter); +our @EXPORT = qw(ASSETS_DIR DOC_ROOT bindir server_features exec_unittest exec_mruby_unittest spawn_server spawn_h2o empty_ports create_data_file md5_file prog_exists run_prog openssl_can_negotiate curl_supports_http2 run_with_curl); + +use constant ASSETS_DIR => 't/assets'; +use constant DOC_ROOT => ASSETS_DIR . "/doc_root"; + +sub bindir { + $ENV{BINARY_DIR} || '.'; +} + +sub server_features { + open my $fh, "-|", bindir() . "/h2o", "--version" + or die "failed to invoke: h2o --version:$!"; + <$fh>; # skip h2o version + +{ + map { chomp($_); split /:/, $_, 2 } <$fh> + }; +} + +sub exec_unittest { + my $base = shift; + my $fn = bindir() . "/t-00unit-$base.t"; + plan skip_all => "unit test:$base does not exist" + if ! -e $fn; + + if (prog_exists("memcached")) { + my $port = empty_port(); + pipe my $rfh, my $wfh + or die "pipe failed:$!"; + my $pid = fork; + die "fork failed:$!" + unless defined $pid; + if ($pid == 0) { + # child process + close $wfh; + POSIX::dup2($rfh->fileno, 5) + or die "dup2 failed:$!"; + exec qw(share/h2o/kill-on-close -- memcached -l 127.0.0.1 -p), $port; + exit 1; + } + close $rfh; + POSIX::dup($wfh->fileno) + or die "dup failed:$!"; + sleep 1; + if (waitpid($pid, WNOHANG) == $pid) { + die "failed to launch memcached"; + } + $ENV{MEMCACHED_PORT} = $port; + } + + exec $fn; + die "failed to exec $fn:$!"; +} + +sub exec_mruby_unittest { + plan skip_all => 'mruby support is off' + unless server_features()->{mruby}; + + my $test_dir = path('t/00unit.mruby'); + my $bin = path(bindir(), 'mruby/host/bin/mruby'); + unless (-e $bin) { + die "unit test: mruby binary $bin does not exist"; + } + + my $k = 0; + $test_dir->visit(sub { + my ($path) = @_; + return unless $path =~ /\.rb$/; + + my $fn = "$bin $path"; + my $output = `$fn`; + + # parse mruby test output + $output =~ /# Running tests:\n\n([SFE\.]+)\n/ + or die "cannot parse test output for $path"; + my ($i, $j) = (0, 0); + my @results = map { +{ type => $_, index => ++$i, failed => ($_ eq 'F' || $_ eq 'E') } } split(//, $1); + while ($output =~ /\d\) (Skipped|Failure|Error):\n([^\n]+)/g) { + my ($type, $detail) = (substr($1, 0, 1), $2); + while ($results[$j]->{type} ne $type) { $j++; } + $results[$j++]->{detail} = $detail; + } + + # print TAP compatible output + printf("%s %s\n", $path, '.' x (51 - length($path))); + for my $r (@results) { + printf(" %s %d - %s\n", $r->{failed} ? 'not ok' : 'ok', $r->{index}, $r->{detail} || ''); + printf STDERR ("# Error - %s\n", $r->{detail}) if $r->{failed}; + } + printf(" 1..%d\n", scalar(@results)); + printf("%s %d - %s\n", (grep { $_->{failed} } @results) ? 'not ok' : 'ok', ++$k, $path); + + }, +{ recurse => 1 }); + + printf("1..%d\n", $k); +} + +# spawns a child process and returns a guard object that kills the process when destroyed +sub spawn_server { + my %args = @_; + my $pid = fork; + die "fork failed:$!" + unless defined $pid; + if ($pid != 0) { + print STDERR "spawning $args{argv}->[0]... "; + if ($args{is_ready}) { + while (1) { + if ($args{is_ready}->()) { + print STDERR "done\n"; + last; + } + if (waitpid($pid, WNOHANG) == $pid) { + die "server failed to start (got $?)\n"; + } + sleep 0.1; + } + } + my $guard = scope_guard(sub { + print STDERR "killing $args{argv}->[0]... "; + my $sig = 'TERM'; + Retry: + if (kill $sig, $pid) { + my $i = 0; + while (1) { + if (waitpid($pid, WNOHANG) == $pid) { + print STDERR "killed (got $?)\n"; + last; + } + if ($i++ == 100) { + if ($sig eq 'TERM') { + print STDERR "failed, sending SIGKILL... "; + $sig = 'KILL'; + goto Retry; + } + print STDERR "failed, continuing anyways\n"; + last; + } + sleep 0.1; + } + } else { + print STDERR "no proc? ($!)\n"; + } + }); + return wantarray ? ($guard, $pid) : $guard; + } + # child process + exec @{$args{argv}}; + die "failed to exec $args{argv}->[0]:$!"; +} + +# returns a hash containing `port`, `tls_port`, `guard` +sub spawn_h2o { + my ($conf) = @_; + my @opts; + + # decide the port numbers + my ($port, $tls_port) = empty_ports(2); + + # setup the configuration file + my ($conffh, $conffn) = tempfile(UNLINK => 1); + $conf = $conf->($port, $tls_port) + if ref $conf eq 'CODE'; + if (ref $conf eq 'HASH') { + @opts = @{$conf->{opts}} + if $conf->{opts}; + $conf = $conf->{conf}; + } + print $conffh <<"EOT"; +$conf +listen: + host: 0.0.0.0 + port: $port +listen: + host: 0.0.0.0 + port: $tls_port + ssl: + key-file: examples/h2o/server.key + certificate-file: examples/h2o/server.crt +EOT + + # spawn the server + my ($guard, $pid) = spawn_server( + argv => [ bindir() . "/h2o", "-c", $conffn, @opts ], + is_ready => sub { + check_port($port) && check_port($tls_port); + }, + ); + my $ret = { + port => $port, + tls_port => $tls_port, + guard => $guard, + pid => $pid, + conf_file => $conffn, + }; + return $ret; +} + +sub empty_ports { + my $n = shift; + my @ports; + while (@ports < $n) { + my $t = empty_port(); + push @ports, $t + unless grep { $_ == $t } @ports; + } + return @ports; +} + +sub create_data_file { + my $sz = shift; + my ($fh, $fn) = tempfile(UNLINK => 1); + print $fh '0' x $sz; + close $fh; + return $fn; +} + +sub md5_file { + my $fn = shift; + open my $fh, "<", $fn + or die "failed to open file:$fn:$!"; + local $/; + return md5_hex(join '', <$fh>); +} + +sub prog_exists { + my $prog = shift; + system("which $prog > /dev/null 2>&1") == 0; +} + +sub run_prog { + my $cmd = shift; + my ($tempfh, $tempfn) = tempfile(UNLINK => 1); + my $stderr = `$cmd 2>&1 > $tempfn`; + my $stdout = do { local $/; <$tempfh> }; + return ($stderr, $stdout); +} + +sub openssl_can_negotiate { + my $openssl_ver = `openssl version`; + $openssl_ver =~ /^\S+\s(\d+)\.(\d+)\.(\d+)/ + or die "cannot parse OpenSSL version: $openssl_ver"; + $openssl_ver = $1 * 10000 + $2 * 100 + $3; + return $openssl_ver >= 10001; +} + +sub curl_supports_http2 { + return !! (`curl --version` =~ /^Features:.*\sHTTP2(?:\s|$)/m); +} + +sub run_with_curl { + my ($server, $cb) = @_; + plan skip_all => "curl not found" + unless prog_exists("curl"); + subtest "http/1" => sub { + $cb->("http", $server->{port}, "curl"); + }; + subtest "https/1" => sub { + my $cmd = "curl --insecure"; + $cmd .= " --http1.1" + if curl_supports_http2(); + $cb->("https", $server->{tls_port}, $cmd); + }; + subtest "https/2" => sub { + plan skip_all => "curl does not support HTTP/2" + unless curl_supports_http2(); + $cb->("https", $server->{tls_port}, "curl --insecure --http2"); + }; +} + +1; diff --git a/src/web/server/h2o/libh2o/t/assets/.htpasswd b/src/web/server/h2o/libh2o/t/assets/.htpasswd new file mode 100644 index 000000000..ae2071650 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/assets/.htpasswd @@ -0,0 +1 @@ +dankogai:$apr1$UZu91fLT$LZuXFeu3wSYdgLY6Wez5m/ diff --git a/src/web/server/h2o/libh2o/t/assets/doc_root/404.html b/src/web/server/h2o/libh2o/t/assets/doc_root/404.html new file mode 100644 index 000000000..1990b40f9 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/assets/doc_root/404.html @@ -0,0 +1 @@ +hi I fixed ur webpage diff --git a/src/web/server/h2o/libh2o/t/assets/doc_root/alice.txt b/src/web/server/h2o/libh2o/t/assets/doc_root/alice.txt new file mode 100644 index 000000000..adace8072 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/assets/doc_root/alice.txt @@ -0,0 +1,31 @@ +Alice was beginning to get very tired of sitting by her sister on the +bank, and of having nothing to do: once or twice she had peeped into the +book her sister was reading, but it had no pictures or conversations in +it, 'and what is the use of a book,' thought Alice 'without pictures or +conversations?' + +So she was considering in her own mind (as well as she could, for the +hot day made her feel very sleepy and stupid), whether the pleasure +of making a daisy-chain would be worth the trouble of getting up and +picking the daisies, when suddenly a White Rabbit with pink eyes ran +close by her. + +There was nothing so VERY remarkable in that; nor did Alice think it so +VERY much out of the way to hear the Rabbit say to itself, 'Oh dear! +Oh dear! I shall be late!' (when she thought it over afterwards, it +occurred to her that she ought to have wondered at this, but at the time +it all seemed quite natural); but when the Rabbit actually TOOK A WATCH +OUT OF ITS WAISTCOAT-POCKET, and looked at it, and then hurried on, +Alice started to her feet, for it flashed across her mind that she had +never before seen a rabbit with either a waistcoat-pocket, or a watch +to take out of it, and burning with curiosity, she ran across the field +after it, and fortunately was just in time to see it pop down a large +rabbit-hole under the hedge. + +In another moment down went Alice after it, never once considering how +in the world she was to get out again. + +The rabbit-hole went straight on like a tunnel for some way, and then +dipped suddenly down, so suddenly that Alice had not a moment to think +about stopping herself before she found herself falling down a very deep +well. diff --git a/src/web/server/h2o/libh2o/t/assets/doc_root/alice2.txt.gz b/src/web/server/h2o/libh2o/t/assets/doc_root/alice2.txt.gz new file mode 100644 index 000000000..42ff445da Binary files /dev/null and b/src/web/server/h2o/libh2o/t/assets/doc_root/alice2.txt.gz differ diff --git a/src/web/server/h2o/libh2o/t/assets/doc_root/esi.html b/src/web/server/h2o/libh2o/t/assets/doc_root/esi.html new file mode 100644 index 000000000..fea3eec6d --- /dev/null +++ b/src/web/server/h2o/libh2o/t/assets/doc_root/esi.html @@ -0,0 +1 @@ +Hello to the , from ! diff --git a/src/web/server/h2o/libh2o/t/assets/doc_root/halfdome.jpg b/src/web/server/h2o/libh2o/t/assets/doc_root/halfdome.jpg new file mode 100644 index 000000000..4e96991a0 Binary files /dev/null and b/src/web/server/h2o/libh2o/t/assets/doc_root/halfdome.jpg differ diff --git a/src/web/server/h2o/libh2o/t/assets/doc_root/hello.cgi b/src/web/server/h2o/libh2o/t/assets/doc_root/hello.cgi new file mode 100755 index 000000000..4401481bf --- /dev/null +++ b/src/web/server/h2o/libh2o/t/assets/doc_root/hello.cgi @@ -0,0 +1,13 @@ +#! /usr/bin/env perl + +use strict; +use warnings; +use CGI; + +my $q = CGI->new; + +print $q->header("text/plain; charset=utf-8"); +print "Hello ", $q->param("name") || "unknown"; + +close STDOUT; +print STDERR "hello.cgi is shutting down\n"; diff --git a/src/web/server/h2o/libh2o/t/assets/doc_root/hello.php b/src/web/server/h2o/libh2o/t/assets/doc_root/hello.php new file mode 100644 index 000000000..905beefec --- /dev/null +++ b/src/web/server/h2o/libh2o/t/assets/doc_root/hello.php @@ -0,0 +1,6 @@ + diff --git a/src/web/server/h2o/libh2o/t/assets/doc_root/index.js b/src/web/server/h2o/libh2o/t/assets/doc_root/index.js new file mode 100644 index 000000000..3254c9294 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/assets/doc_root/index.js @@ -0,0 +1 @@ +alert("hello"); diff --git a/src/web/server/h2o/libh2o/t/assets/doc_root/index.txt b/src/web/server/h2o/libh2o/t/assets/doc_root/index.txt new file mode 100644 index 000000000..ce0136250 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/assets/doc_root/index.txt @@ -0,0 +1 @@ +hello diff --git a/src/web/server/h2o/libh2o/t/assets/doc_root/index.txt.br b/src/web/server/h2o/libh2o/t/assets/doc_root/index.txt.br new file mode 100644 index 000000000..b931f4d7a --- /dev/null +++ b/src/web/server/h2o/libh2o/t/assets/doc_root/index.txt.br @@ -0,0 +1,2 @@ +‹€hello + \ No newline at end of file diff --git a/src/web/server/h2o/libh2o/t/assets/doc_root/index.txt.gz b/src/web/server/h2o/libh2o/t/assets/doc_root/index.txt.gz new file mode 100644 index 000000000..c15976b94 Binary files /dev/null and b/src/web/server/h2o/libh2o/t/assets/doc_root/index.txt.gz differ diff --git a/src/web/server/h2o/libh2o/t/assets/doc_root/issues/951.php b/src/web/server/h2o/libh2o/t/assets/doc_root/issues/951.php new file mode 100644 index 000000000..871b47765 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/assets/doc_root/issues/951.php @@ -0,0 +1,11 @@ + \ No newline at end of file diff --git a/src/web/server/h2o/libh2o/t/assets/doc_root/printenv.cgi b/src/web/server/h2o/libh2o/t/assets/doc_root/printenv.cgi new file mode 100755 index 000000000..efe9b74c0 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/assets/doc_root/printenv.cgi @@ -0,0 +1,9 @@ +#! /bin/sh +exec ${H2O_PERL:-perl} -x $0 "$@" +#! perl + +print "content-type: text/plain; charset=utf-8\r\n\r\n"; + +for my $k (sort keys %ENV) { + print "$k:$ENV{$k}\n"; +} diff --git a/src/web/server/h2o/libh2o/t/assets/doc_root/subdir/index.txt b/src/web/server/h2o/libh2o/t/assets/doc_root/subdir/index.txt new file mode 100644 index 000000000..1fa86464d --- /dev/null +++ b/src/web/server/h2o/libh2o/t/assets/doc_root/subdir/index.txt @@ -0,0 +1 @@ +subdir index diff --git a/src/web/server/h2o/libh2o/t/assets/session_tickets.yaml b/src/web/server/h2o/libh2o/t/assets/session_tickets.yaml new file mode 100644 index 000000000..f97285299 --- /dev/null +++ b/src/web/server/h2o/libh2o/t/assets/session_tickets.yaml @@ -0,0 +1,12 @@ +- name: a397b6b7fab929366203f16fc81ffbed + cipher: aes-128-cbc + hash: sha1 + key: f1ed89cde68763630e80d2be827cfb98e3fe72644f64315a4a8ad63769a3577ccec4dd13b20eaf8c008886e5458db10e658cf2a83f04403ac4e98035d2422a75806730eb4f2fee12faff954895bc65d1 + not_before: 1437092430 + not_after: 1437096029 +- name: e7e3c6980b1832bd5d23917572e8448f + cipher: aes-256-cbc + hash: sha256 + key: f6e071d993b05f77ce51cb0fe2e0e18c7200c2a7873a66008c8e1d75ae7b8e2af4fcb86fdf03a7f335632e668a8fe956c5bfe77a41412d269979634768999add6a84cafea41b6b2c47aaf1a514ca9d2a84f48d1f5f7018ff1740cf9b944b8fcf + not_before: 1437093330 + not_after: 1437096929 diff --git a/src/web/server/h2o/libh2o/t/assets/upstream.psgi b/src/web/server/h2o/libh2o/t/assets/upstream.psgi new file mode 100644 index 000000000..95427428a --- /dev/null +++ b/src/web/server/h2o/libh2o/t/assets/upstream.psgi @@ -0,0 +1,225 @@ +use strict; +use warnings; +use Digest::SHA qw(sha1_base64); +use Plack::App::File; +use Plack::Builder; +use Plack::Request; +use Plack::TempBuffer; +use Time::HiRes qw(sleep); +use t::Util; + +my $force_chunked = $ENV{FORCE_CHUNKED} || 0; + +builder { + enable sub { + my $app = shift; + return sub { + my $env = shift; + my $query = Plack::Request->new($env)->query_parameters; + my $res = $app->($env); + Plack::Util::response_cb($res, sub { + my $res = shift; + if ($query->{"resp:status"}) { + $res->[0] = $query->get("resp:status"); + $query->remove("resp:status"); + } + push @{$res->[1]}, map { + my $n = $_; + +(substr($n, length "resp:") => $query->get($n)) + } grep { + $_ =~ /^resp:/ + } $query->keys; + $res; + }); + }; + }; + if ($force_chunked) { + enable sub { + my $app = shift; + return sub { + my $env = shift; + my $res = $app->($env); + Plack::Util::response_cb($res, sub { + my $res = shift; + my @headers; + for (my $i = 0; $i != @{$res->[1]}; $i += 2) { + push @headers, $res->[1][$i], $res->[1][$i + 1] + if lc $res->[1][$i] ne 'content-length'; + } + $res->[1] = \@headers; + return $res; + }); + }; + }; + } + mount "/" => Plack::App::File->new(root => DOC_ROOT)->to_app; + mount "/echo-query" => sub { + my $env = shift; + return [ + 200, + [ + 'content-type' => 'text/plain', + ], + [$env->{QUERY_STRING}], + ]; + }; + mount "/echo" => sub { + my $env = shift; + my $content = Plack::TempBuffer->new; + if ($env->{'psgi.input'}) { + my $buf; + while ($env->{'psgi.input'}->read($buf, 65536)) { + $content->print($buf); + } + } + return [ + 200, + [ + 'content-type' => 'text/plain', + 'content-length' => $content->size(), + ], + $content->rewind(), + ]; + }; + mount "/echo-headers" => sub { + my $env = shift; + return [ + 200, + [ + 'content-type' => 'text/plain', + ], + [ + join "\n", map { my $n = lc $_; $n=~ s/^http_//; $n =~ tr/_/-/; "$n: $env->{$_}" } sort grep { /^(HTTP_|HTTPS$)/ } keys %$env, + ] + ]; + }; + mount "/echo-server-header" => sub { + my $env = shift; + my @resph = [ 'content-type' => 'text/plain' ]; + if ($env->{HTTP_SERVER}) { + @resph = [ 'content-type' => 'text/plain', 'server' => $env->{HTTP_SERVER} ]; + } + return [ + 200, @resph, [ "Ok" ] + ]; + }; + mount "/streaming-body" => sub { + my $env = shift; + return sub { + my $responder = shift; + my $writer = $responder->([ 200, [ 'content-type' => 'text/plain' ] ]); + for my $i (1..30) { + sleep 0.1; + $writer->write($i); + } + $writer->close; + }; + }; + mount "/sleep-and-respond" => sub { + my $env = shift; + my $query = Plack::Request->new($env)->parameters; + sleep($query->{sleep} || 0); + return [ + 200, + [ + 'content-type' => 'text/plain; charset=utf-8', + ], + [ + 'hello world', + ], + ]; + }; + mount "/fixed-date-header" => sub { + my $env = shift; + return [ + 200, + [ + 'content-type' => 'text/plain', + 'date' => 'Thu, 01 Jan 1970 00:00:00 GMT', + ], + [] + ]; + }; + mount "/infinite-stream" => sub { + my $env = shift; + return sub { + my $responder = shift; + my $writer = $responder->([ 200, [ 'content-type' => 'text/plain' ] ]); + while ($writer->write("lorem ipsum dolor sit amet")) { + sleep 0.1; + } + $writer->close; + }; + }; + mount "/infinite-redirect" => sub { + my $env = shift; + return [ + 302, + [ + location => '/infinite-redirect', + ], + [], + ]; + }; + mount "/websocket" => sub { + my $env = shift; + my $key = $env->{HTTP_SEC_WEBSOCKET_KEY} + or return [400, [], ["no Sec-WebSocket-Key"]]; + $key .= "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"; + my $accept_key = sha1_base64($key); + my $fh = $env->{"psgix.io"}; + print $fh join( + "\r\n", + "HTTP/1.1 101 Switching Protocols", + "Upgrade: websocket", + "Sec-Websocket-Accept: $accept_key", + "", + "", + ); + while (1) { + my $rfds = ''; + vec($rfds, fileno($fh), 1) = 1; + next if select($rfds, undef, undef, undef) <= 0; + $fh->sysread(my $data, 65536) <= 0 + and last; + while (length($data) != 0) { + my $wfds = ''; + vec($wfds, fileno($fh), 1) = 1; + next if select(undef, $wfds, undef, undef) <= 0; + my $wlen = $fh->syswrite($data); + last if $wlen <= 0; + $data = substr $data, $wlen; + } + } + close $fh; + exit 0; + }; + mount "/1xx-push" => sub { + my $env = shift; + my $fh = $env->{"psgix.io"}; + print $fh join( + "\r\n", + "HTTP/1.1 100 Continue", + "link: ; rel=preload", + "", + "", + ); + sleep 1.1; + [200, ["content-type" => "text/plain; charset=utf-8", "content-length" => 11], ["hello world"]]; + }; + mount "/push-attr" => sub { + my $env = shift; + my $query = Plack::Request->new($env)->query_parameters; + [200, ["content-type" => "text/plain; charset=utf-8", "content-length" => 11, "link" => "$query->{'pushes'}"], ["hello world"]]; + }; + mount "/no-content" => sub { + my $env = shift; + return [ + 204, + [ + 'content-type' => 'text/plain', + ], + [], + ]; + }; +}; -- cgit v1.2.3