| Bytes | Lang | Time | Link |
|---|---|---|---|
| 055 | Setanta | 250828T194325Z | bb94 |
| 020 | Pip | 200906T192728Z | DLosc |
| 165 | Nibbles | 230319T191041Z | Adam |
| nan | 230319T181238Z | The Thon | |
| 103 | Pascal ISO standard 10206 | 221025T154440Z | Kai Burg |
| 046 | Python 3 | 221025T135034Z | Mr.McNug |
| 073 | GFortran | 190523T023712Z | roblogic |
| 034 | Excel | 190521T101205Z | Wernisch |
| 034 | nroff | 221019T023404Z | 鳴神裁四点一号 |
| 015 | Vyxal | 221019T024147Z | naffetS |
| 034 | Haskell | 211212T215014Z | Benji |
| 032 | Bash | 220826T093158Z | fipsbox |
| 024 | Knight | 220825T235008Z | Benji |
| 044 | Lexurgy | 220120T235609Z | bigyihsu |
| 334 | Python 3 34 Bytes | 211215T100257Z | poggersb |
| 141 | JavaScript/Python polyglot | 211213T120658Z | CreaZyp1 |
| 032 | APOL | 211213T134655Z | Ginger |
| 021 | jq | 211002T224717Z | Sara J |
| 381 | FerNANDo | 211002T075840Z | user1004 |
| 352 | CLCINTERCAL | 210917T114049Z | user1004 |
| 038 | Pxem don't break loop when items are insufficient | 210917T032847Z | user1004 |
| 047 | TIBasic | 210917T001246Z | Youserna |
| 3432 | PHP | 190521T152205Z | 640KB |
| 026 | Perl 5 p | 210811T031508Z | Silvio M |
| 016 | Vyxal Ṫ | 210810T202215Z | emanresu |
| 030 | TeX | 190522T093337Z | John Gow |
| 051 | VBScript | 210319T171113Z | wasif |
| 3736 | x86 | 190522T182732Z | 640KB |
| 036 | Scala | 210219T155138Z | user |
| 021 | Zsh c | 210219T082609Z | pxeger |
| 043 | Nim | 210219T081305Z | Adam |
| 020 | 05AB1E | 210218T230352Z | Makonede |
| 122 | naz | 200103T070018Z | sporebal |
| 037 | Wren | 200102T133835Z | user8505 |
| 036 | Clojure 36 Bytes | 200102T221718Z | soweli N |
| 035 | Runic Enchantments | 191029T134114Z | Draco18s |
| 094 | C# .NET | 190820T143053Z | canttalk |
| nan | Malbolge | 190814T170742Z | Kamila S |
| 026 | Ruby p | 190520T233647Z | Value In |
| 021 | k | 190618T230628Z | Henry He |
| 025 | AWK | 190610T114927Z | user4098 |
| 315 | Assembly gcc | 190609T005439Z | r3dapple |
| nan | 190521T082447Z | Chronoci | |
| 319 | 아희 Aheui | 190531T113901Z | LegenDUS |
| 021 | Pyth | 190530T195544Z | Ian Prin |
| 037 | JavaScript V8 | 190530T194918Z | user2657 |
| 092 | Sinclair ZX80 BASIC | 190530T132731Z | Shaun Be |
| 030 | Bean | 190523T162335Z | Patrick |
| 030 | Ed | 190523T153221Z | Jeff Sch |
| 053 | PowerShell Core | 190523T153622Z | Jeff Fre |
| 030 | Julia 1.0 | 190523T152023Z | gggg |
| 031 | ReRegex | 190523T122811Z | Cedric R |
| 059 | Lua | 190522T122250Z | Scribble |
| 039 | Dart | 190521T124330Z | Elcan |
| 051 | VSL | 190523T011513Z | Downgoat |
| 035 | Rexx Regina | 190522T221828Z | theblitz |
| 034 | Kotlin | 190522T200914Z | Xvolks |
| 040 | Forth gforth | 190522T202649Z | reffu |
| 033 | C gcc | 190521T012844Z | Neil A. |
| 034 | Python 3 | 190521T010245Z | Stephen |
| 019 | Gema | 190522T134229Z | manatwor |
| 049 | C gcc | 190521T112444Z | peterzug |
| 035 | Octave | 190521T051538Z | Stewie G |
| 060 | Javascript Node.js in TIO | 190521T083951Z | jdt |
| 018 | Japt | 190521T020309Z | Gymhgy |
| 017 | Jelly | 190520T235318Z | Nick Ken |
| 036 | Clojure | 190521T200603Z | user7058 |
| 055 | SNOBOL4 CSNOBOL4 | 190521T203956Z | Giuseppe |
| 019 | Canvas | 190521T203133Z | dzaima |
| 045 | Befunge93 | 190521T093442Z | negative |
| 045 | AutoIt | 190521T172943Z | seadoggi |
| 037 | PowerShell | 190521T140744Z | Veskah |
| 044 | TSQL | 190521T172217Z | BradC |
| 015 | Jelly | 190521T105902Z | Jonathan |
| 025 | sed r | 190521T093305Z | Nahuel F |
| 024 | bash | 190521T071004Z | Nahuel F |
| 024 | Perl 5 p | 190521T041643Z | Xcali |
| 039 | R | 190521T091541Z | niko |
| 013 | Stax | 190521T020140Z | recursiv |
| 023 | Retina 0.8.2 | 190521T075020Z | Kevin Cr |
| 021 | APL+WIN | 190521T051011Z | Graham |
| 027 | Perl 6 | 190521T025726Z | Jo King |
| 021 | Retina | 190521T092341Z | Neil |
| 043 | AutoHotkey | 190521T115000Z | stackzeb |
| 021 | Charcoal | 190521T093148Z | Neil |
| 062 | IBM/Lotus Notes Formula Language | 190521T085204Z | ElPedro |
| 013 | V | 190521T055819Z | tsh |
| 013 | V | 190521T095507Z | Candy Gu |
| nan | Batch | 190521T092742Z | Neil |
| 022 | QuadR | 190521T091220Z | Adá |
| 267 | Whitespace | 190521T083608Z | Kevin Cr |
| 021 | 05AB1E | 190521T062054Z | Emigna |
| 043 | Wolfram Language Mathematica | 190521T080636Z | att |
| 036 | Java | 190521T074822Z | Kevin Cr |
| 054 | Haxe | 190521T071543Z | darrylye |
| 052 | Icon | 190521T070528Z | Galen Iv |
| 032 | Nim | 190521T070320Z | darrylye |
| 039 | Red | 190521T065740Z | Galen Iv |
| 021 | K ngn/k | 190521T064725Z | Galen Iv |
| 041 | Rust | 190521T063832Z | darrylye |
| 037 | JavaScript | 190521T060841Z | darrylye |
| 033 | C# Visual C# Interactive Compiler | 190521T015737Z | Gymhgy |
| 022 | J | 190521T004527Z | Jonah |
| 164 | brainfuck | 190521T003314Z | cardboar |
Pip, 21 20 bytes
["Hi"aS-3kaH4"Pip!"]
Explanation
Constructs a list containing:
- Literal string
"Hi" - The input, minus its first three characters (
aS-3) - A string containing a comma and a space (which happens to be the initial value of the variable
k) - The first four characters of the input (
aH4) - Literal string
"Pip!"
By default, lists are concatenated together when they are output.
Nibbles, 16.5 bytes
"Hi "`>4@", "$"Nibbles!"
Explanation
"Hi "`>4@", "$"Nibbles!"
"Hi " Output "Hi "
`> Drop the first
4 4 characters
@ from input
`> and remember them
", " Output ", "
$ Output the remembered string
"Nibbles!" Output "Nibbles!"
Thunno KJ, \$ 22 \log_{256}(96) \approx \$ 18.11 bytes
3Zx", I'm Thunno!"s"Hi
Thunno, \$ 23 \log_{256}(96) \approx \$ 18.93 bytes
3Zx"Hi%s, I'm Thunno!"$
Explanation
# Implicit input
3Zx # Remove first three characters
"..." # Push the string literal
s"Hi "# Swap and push "Hi"
# Implicit output of joined stack
# Implicit input
3Zx # Remove first three characters
"..." # Push the string literal
$ # Replace "%s" with ^^
# Implicit output
Pascal (ISO standard 10206, “Extended Pascal”), 103 characters
program d(input,output);var s:string(99);begin readLn(s);writeLn('Hi',subStr(s,4),', I''m Pascal!')end.
FreePascal, 83 characters
The FPC (FreePascal Compiler) in its default configuration (specifically {$mode FPC}), discards and doesn’t need a program header (the program d(input,output);).
Instead a program always has the text files input and output at its disposal.
Furthermore string is shorthand for string[255].
However, the subStr function is not (yet) supported (as of FPC version 3.2.0) and copy will necessarily require a length specification (can only be omitted in {$mode Delphi}).
Thus we can condense the above program to:
var s:string;begin readLn(s);writeLn('Hi',s[4..length(s)],', I''m FreePascal!')end.
var s:string;begin readLn(s);delete(s,1,3);writeLn('Hi',s,', I''m FreePascal!')end.
GFortran, 73 bytes
As usual, Fortran string handling is clunky and annoying!
character(99)S;read'(A)',S
print*,'Hi',trim(S(4:)),', I''m GFortran!'
end
Excel, 36 34 bytes
-2 bytes thanks to Johan du Toit.
Input goes into A1.
="Hi "&MID(A1,4,99)&", I'm Excel!"
First attempt:
=REPLACE(A1,1,3,"Hi")&", I'm Excel!"
nroff, 34 bytes
Using a hack NOT to quote the input with quotation marks for usage to split an argument into words.
.de x
.shift
Hi \\$* I'm nroff!
..
Usage examples
.x I'm a programmer
.x I'm tired
.x I'm bored
Lexurgy, 44 bytes
a:
I'm=>Hi
*=>\,\ I'm\ Lexurgy\!/_ $//_ $$
Ungolfed explanation:
a:
I'm => Hi # Swap "I'm" to "Hi"
* => \,\ I'm\ Lexurgy\! # the tack on the joke...
/ _ $ # when at the end of a word...
// _ $$ # but not in between words.
Python 3 (34 Bytes)
lambda m:"Hi%s, I'm Python!"%m[3:]
Python 3 (35 Bytes)
lambda m:"Hi"+m[3:]+", I'm Python!"
JavaScript/Python (polyglot), 149 141 bytes
a=1//2;import sys
eval(["print('Hi'+sys.argv[1][3:]+', I\\'m Python!')","console.log('Hi'+process.argv[2].slice(3)+`, I'm JavaScript!`)"][a])
Example input (First arg)
I'm bored
JavaScript output (Try it Online!)
Hi bored, I'm JavaScript!
Python output (Try it Online!)
Hi bored, I'm Python!
Explanation
a=1//2;import sys:- What Python see:
a=1//2=0(integer division/no-reminder),;import sys - What JavaScript see:
a=1(the rest commented)
- What Python see:
["print('Hi'+s[...]","console.log([...]"]: Array with the code in Python, and the code in JavaScript respectively.[a]: Select the index of it (Python:0', JavaScript:1)
APOL, 32 bytes
+("Hi " +(V(i 4) ", I'm APOL!"))
FerNANDo, 381 bytes
Outputting language name as ferNANDo, as in esolang page title.
0 A S D F G H J K
0 Q W E R T Y U I
1 0 1 1 0 1 1 0 1
0 1 0 0 1 0 0 0
0 1 1 0 1 0 0 1
? a b c d e f g h
?
a b c d e f g h
? a b c d e f g h
?
0 0 1 0 1 1 0 0
0 0 1 0 0 0 0 0
A S D F G H J K
Q W E R T Y U I
0 1 1 0 1 1 0 1
0 0 1 0 0 0 0 0
0 1 1 0 0 1 1 0
0 1 1 0 0 1 0 1
0 1 1 1 0 0 1 0
0 1 0 0 1 1 1 0
0 1 0 0 0 0 0 1
0 1 0 0 1 1 1 0
0 1 0 0 0 1 0 0
0 1 1 0 1 1 1 1
0 0 1 0 0 0 0 1
How it works
# accepts I
0 A S D F G H J K
# accepts '
0 Q W E R T Y U I
# accepts m
1 0 1 1 0 1 1 0 1
# outputs H
0 1 0 0 1 0 0 0
# outputs i
0 1 1 0 1 0 0 1
# cat begins
? a b c d e f g h
?
a b c d e f g h
? a b c d e f g h
?
# cat ends
# outputs rest
# characters .
0 0 1 0 1 1 0 0
0 0 1 0 0 0 0 0
A S D F G H J K
Q W E R T Y U I
0 1 1 0 1 1 0 1
0 0 1 0 0 0 0 0
0 1 1 0 0 1 1 0
0 1 1 0 0 1 0 1
0 1 1 1 0 0 1 0
0 1 0 0 1 1 1 0
0 1 0 0 0 0 0 1
0 1 0 0 1 1 1 0
0 1 0 0 0 1 0 0
0 1 1 0 1 1 1 1
0 0 1 0 0 0 0 1
CLC-INTERCAL, 356 352 bytes.
Assumes adjective and noun has <100 characters.
DO;1<-#3DO;2<-#99DOWRITEIN;1+;2DO;3<-#2DO;3SUB#1<-#29DO;3SUB#2<-#1118DO;4<-#1DO;4SUB#1<-#127DO;6<-#1DO;6SUB#1<-#117DO;5<-#13DO;5SUB#1<-#16DO;5SUB#2<-#368DO;5SUB#3<-#368DO;5SUB#4<-#274DO;5SUB#5<-#103DO;5SUB#6<-#376DO;5SUB#7<-#217DO;5SUB#8<-#374DO;5SUB#9<-#356DO;5SUB#10<-#374DO;5SUB#11<-#375DO;5SUB#12<-#1353DO;5SUB#13<-#276DOREADOUT;3+;2+;4+;6+;1+;6+;5
Copy and paste to try it online!
With comments
DONOTE ;1 for "I'm", ;2 for rest of input
DO;1<-#3
DO;2<-#99
DOWRITEIN;1+;2
DONOTE ;3 for "Hi"
DO;3<-#2DO;3SUB#1<-#29DO;3SUB#2<-#1118
DONOTE ;4 for ","
DO;4<-#1DO;4SUB#1<-#127
DONOTE ;6 for " "
DO;6<-#1DO;6SUB#1<-#117
DONOTE ;5 for "CLC-INTERCAL!"
DO;5<-#13DO;5SUB#1<-#16DO;5SUB#2<-#368DO;5SUB#3<-#368DO;5SUB#4<-#274DO;5SUB#5<-#103DO;5SUB#6<-#376DO;5SUB#7<-#217DO;5SUB#8<-#374DO;5SUB#9<-#356DO;5SUB#10<-#374DO;5SUB#11<-#375DO;5SUB#12<-#1353DO;5SUB#13<-#276
DONOTE concatenate those strings
DOREADOUT;3+;2+;4+;6+;1+;6+;5
Pxem (don't break loop when items are insufficient), 46 38 bytes, filename only.
It's been a while. As usual, \0001 is not such a string but a character 0x01.
.z.im.a_iH.w.i.c\0001.+.a.s!mexP m'I ,.v.p
With comments
XX.Z
.A.zXX.Z
# push(getchar())
.A.iXX.Z
# constant 'm' charcode
.AXXm.Z
# break loop if pop==pop
.A.aXX.Z
# "Hi" and dummy
.AXX_iH.Z
# dummy is popped before entering loop
.A.wXX.Z
# keep pushing until EOF (-1) is met
.A.i.c\0001.+.aXX.Z
# discard final EOF
.A.sXX.Z
# ", I'm Pxem!"
# reverse stack before printing each item
.A!mexP m'I ,.v.p
TI-Basic, 47 bytes
Input Str1
"Hi"+sub(Str1,4,length(Str1)-3)+", I'm TI-Basic!
Output is stored in Ans and displayed at the end.
PHP, 34 32 bytes
Hi<?=substr($argn,3)?>, I'm PHP!
Input via STDIN, call with -F.
$ echo I'm a Stack-Overflow-er|php -F dad.php
Hi a Stack-Overflow-er, I'm PHP!
$ echo I'm hungry|php -F dad.php
Hi hungry, I'm PHP!
Perl 5 (-p), 26 bytes
s/I'm(.*)/Hi$1, I'm Perl!/
No deep magic, just a straight regex substitution
Vyxal Ṫ, 16 bytes
3ȯ‛Hi$`, I'm ₴ŀ!
I'm assuming I don't need to include the flag, since the ruby answer doesn't.
TeX, 48 43 30 bytes
Yes I could save a byte by writing TeX instead of \TeX, but it seems a shame.
\def\s[#1]#2#3#4{}\def~[#1]{Hi\s[]#1, I'm \TeX!}
Update: saved 3 5 bytes thanks to fixed pattern matching.
\def\s[]I'm{}\def~[#1]{Hi\s[]#1, I'm \TeX!}
Update: -13 bytes (thanks, Jairo A. del Rio).
\def~I'm #1~{Hi #1, I'm \TeX!}
Test file
\def~I'm #1~{Hi #1, I'm \TeX!}
~I'm amazing~
~I'm hungry~
~I'm tired~
~I'm fat~
~I'm a programmer~
~I'm a question-writer~
~I'm a Stack-Overflow-er~
\bye
VBScript, 51 bytes
Msgbox "Hi "&Wscript.Arguments(1)&", I'm VBScript!"
Test like:
ScriptFile.vbs I'm tired
x86, 37 36 bytes
00000000: d1ee ac8a d8c6 0024 adc7 0448 698b d6b4 .......$...Hi...
00000010: 09cd 21ba 1901 cd21 c32c 2049 276d 2078 ..!....!., I'm x
00000020: 3836 2124 86!$
Unassembled:
D1 EE SHR SI, 1 ; point SI to DOS PSP (80H)
AC LODSB ; load string length into AL, advance SI
8A D8 MOV BL, AL ; put string length into BL
C6 40 24 MOV BYTE PTR[BX][SI], '$' ; add string terminator to end of string
AD LODSW ; advance SI two chars
C7 04 6948 MOV WORD PTR[SI], 'iH' ; replace second and third char with 'Hi'
8B D6 MOV DX, SI ; load offset for INT 21H string function
B4 09 MOV AH, 9 ; display a '$'-terminated string function
CD 21 INT 21H ; call DOS API
BA 0119 MOV DX, OFFSET S ; load offset for second part of string
CD 21 INT 21H ; call DOS API
C3 RET ; return to DOS
S DB ", I'm x86!$"
A standalone executable DOS program. Input from command line, output to screen.
* The exact "language" name here is a little ambiguous as CPU machine code isn't really a language in a formal sense. Going with "x86" as a generally understood and accepted name for the target platform.
05AB1E, 20 bytes
3.$”ŒÞÿ, I'm 05AB1E!
3.$”ŒÞÿ, I'm 05AB1E! # full program
”ŒÞÿ, I'm 05AB1E! # "Hiÿ, I'm 05AB1E!"...
# (implicit) with ÿ replaced by...
# implicit input...
.$ # excluding the first...
3 # literal...
.$ # chars
# implicit output
naz, 122 bytes
2a2x1v7a8m1o3d4m9a1o3d3s1o1x1f5r3x1v2e1o1f0x1x2f0a0x1f0m9a2a4m1o9s3s1o2m9a1o2d3a1o3m8s1o3d4s1o3m9a5a1o9s4s1o9a9a7a1o3d7s1o
Uses a lot of arithmetic instructions to set the register to each of the character values in the dad-joke format.
Works for any input file terminated with the control character STX (U+0002).
Explanation (with 0x instructions removed)
2a2x1v # Set variable 1 equal to 2
7a8m1o # Output "H"
3d4m9a1o # Output "i"
3d3s1o # Output a space
1x1f5r3x1v2e1o1f # Function 1
# Read the 5th byte of input, then remove it from the input
# This has the effect of skipping over the self-descriptor's "I'm "
# Jump to function 2 if the value of the byte is equal to variable 1
# Otherwise, output the byte and jump back to the start of function 1
1x2f0a # Function 2
# Add 0 to the register
1f # Call function 1
0m9a2a4m1o # Output ","
9s3s1o # Output a space
2m9a1o # Output "I"
2d3a1o # Output an apostrophe (')
3m8s1o # Output "m"
3d4s1o # Output a space
3m9a5a1o # Output "n"
9s4s1o # Output "a"
9a9a7a1o # Output "z"
3d7s1o # Output "!"
Wren, 37 bytes
Fn.new{|x|"Hi%(x[3..-1]), I'm Wren!"}
Explanation
Fn.new{|x| } // New anonymous function
"Hi // The hi section
%(x[3..-1]) // THe input sliced, without the "I'm"
, I'm Wren!" // THe third part, the remaining of the string
Clojure - 36 Bytes
#(str"Hi "(subs %4)", I'm Clojure!")
Trivial solution is trivial, probably has room for improvement
Runic Enchantments, 35 bytes
iiil2="Hi "$5*?S$' $", "$" Runic!"@
Spaces only need to be escaped if you want to use an adjective or noun-phrase as your <I'm!>. Runic splits input on spaces and newlines and as the challenge specified input as either an <adj> or <noun> as single word tokens, I used this feature to avoid parsing and splitting input with code.
C# .NET, 94 bytes
class P{static void Main(string[]a){System.Console.Write($"Hi {a[0].Substring(4)}, I'm C#");}}
Malbolge, 24477 bytes
Mors sum, Dominus Pestifer Mundi
Hi, Dominus Pestifer Mundi, I'm dad!
bP&A@?>=<;:9876543210/.-,+*)('&%$T"!~}|;]yxwvutslUSRQ.yx+i)J9edFb4`_^]\yxwRQ)(TSRQ]m!G0KJIyxFvDa%_@?"=<5:98765.-2+*/.-,+*)('&%$#"!~}|utyrqvutsrqjonmPkjihgfedc\DDYAA\>>Y;;V886L5322G//D,,G))>&&A##!7~5:{y7xvuu,10/.-,+*)('&%$#"yb}|{zyxwvutmVqSohmOOjihafeHcEa`YAA\[ZYRW:U7SLKP3NMLK-I,GFED&%%@?>=6;|9y70/4u210/o-n+k)"!gg$#"!x}`{zyxZvYtsrqSoRmlkjLhKfedcEaD_^]\>Z=XWVU7S6QPON0LKDI,GFEDCBA#?"=};438y6543s1r/o-&%*k('&%e#d!~}|^z]xwvuWsVqponPlOjihgIeHcba`B^A\[ZY;W:UTSR4PI2MLKJ,,AFE(&B;:?"~<}{zz165v3s+*/pn,mk)jh&ge#db~a_{^\xwvoXsrqpRnmfkjMKg`_GG\aDB^A?[><X;9U86R53ONM0KJC,+FEDC&A@?!!6||3876w4-tr*/.-&+*)('&%$e"!~}|utyxwvutWlkponmlOjchg`edGba`_XW\?ZYRQVOT7RQPINML/JIHAFEDC&A@?>!<;{98yw5.-ss*/pn,+lj(!~ff{"ca}`^z][wZXtWUqTRnQOkNLhgfIdcFaZ_^A\[Z<XW:U8SRQPOHML/JIHG*ED=%%:?>=~;:{876w43210/(-,+*)('h%$d"ca}|_z\rqYYnsVTpoRPledLLafIGcbE`BXW??TY<:V97S64P31M0.J-+G*(DCB%@?"=<;|98765.3210p.-n+$)i'h%${"!~}|{zyxwvuXVlkpSQmlOjLbafIGcbE`BXW??TY<:V97S64P31M0.J-+G*(D'%A@?"=<}:98y6543,1r/.o,+*)j'&%eez!~a|^tsx[YutWUqjinQOkjMhJ`_dGEaDB^A?[><X;9U86R53O20LKJ-HG*ED'BA@?>7~;:{y7x5.3210q.-n+*)jh&%$#"c~}`{z]rwvutWrkpohmPkjihafI^cba`_^A\[>YXW:UTS5QP3NM0KJ-HGF?D'BA:?>=~;:z8765v32s0/.-nl$#(ig%fd"ca}|_]yrqvYWsVTpSQmPNjMKgJHdGEa`_B]\?ZY<WVUTMR5PO20LK.IHA))>CB%#?87}}49zx6wu3tr0qo-nl*ki'hf$ec!~}`{^yxwvotsrUponQlkMihKIe^]EEZ_B@\?=Y<:V97S64P31M0.J-+GFE(C&A@?8=<;:{876w43s10qo-&%kk"'hf$ec!b`|_]y\ZvYWsVTpSQmlkNiLgf_dcba`C^]\?ZY;WV97SLK33HM0.J-+G*(D'%A$">!};|z8yw543t1r/(-,+*)(i&%fd"!~}|_t]xwvutslqTonmPNdchKIeHFbaD_AWV[><X;9U86R53ON1L.DCH+)EDC&;@#>=<;|98x6wu32s0p(',mk)(i&f|{"ca}`^z][wZXtWUqTRnmPNjcbJJ_dcbEDYB@@?ZSX;VUTS6QPO11F..CHGF)(C<A$?>=<}:98xx/uu,10/po,+$kiih%$#z!b}|{z]xwvXXmUUjonmPOjihafIdcbaD_^]??T<<QVUT76QPONG0..-HGFED=B%@?>=~|438yw5vt21r/o'&+lj(ig%fd"ca}`^z][wZXtWUqpoRQlkjihafIdcbaD_^]??T<<QVUT76QPONMLE.,,+FEDCBA@9>!<;:9zx0/uu,10/po,+*)('&}$e"!~}`{zy[[pXXmrqpSRmlkjihgf_Hcba`_AW\[ZY;Q:OTSRKPIN1//.CH+FEDC&A@?>=~|:327xv43tr0)(-nl*ki'hf$ec!b`|_]y\ZvYWsVTponQPejMhgfeHcbaCCX@@UZYX;:UN7554ONGL/JIHG*ED&BA$?!76;|zyy054us1*).om+lj(ig%fd"ca}`^z][wZXWWlqpoRQlkdiLgfedGba`BBW??TYXW:9TSRK4221LKJIBG*EDCB%@?>~~5{{2765vu210/(-n+*)(i&%$ddyaav{zy\[vutsrkTRRQlkjihg`eHcba`C^]\>>S;;PUTS65PONMLKDI,GFED'%;:?"~<}{9zx6wu3tr0qo-nl*ki'hfeez!~}`_zyxwvutmVTTSnmlkjihg`eHcba`C^]?>>SXW:8TMLQPO21LKJIHGFE>C&A@?>=}5:987w/v-210).',m*)('h%$#ccx``uzyx[ZoXVVUpinQlkjiLgfeGG\DDY^]\?>YRW:UTSR5PON00E--BGFE('BA:#!!~;:927x5432s0/.nn%kk"'&%fe"!~w|_zyxwZutsUUjRRglkjMLgfed]FDDC^]\[ZSX;VUTS6QPO11FKJ-H*@?D'%A$">!}||387xv4-,1rp.om+lj(ig%fd"ca}`^zyx[ZutsrqjoRmlkjMhgfHH]EEZ_^]@?ZYXWVUN7554ONMLKJIBG*EDCB%@?>~~5{{2765vu210/.-,%*k('&%f#"b~a_{^\x[YutWUqjinQOkNLhKIeHFbEC_B@\?=<<QVUT76QPONMLKJC,GFEDC%;@?>=}5|381654-2sqqp',m*)('h%$#ccx``uzyx[ZotWrqpoRmlkMMbJJ_dcbED_XA??>YXQV9TSRQ4ON0L/-IH+F(>=B%#?>!<|438yw5vt2sq/pn,mk)jh&%fd"yx``uzyx[ZutmrUponmPkjiKK`HH]ba`CB]\[T=;;:UTSRKP3NMLK.IHG))>&&;@?>!~;:9816w4321r/.-mm$jj!&%$ed!~}|{t][[ZutsrqpinQlkjiLgfeGG\DDY^]\?>YXWVUTMR5PONM0KJI++@((=BA@#"=<;:9870wuut10/.-,+*#(i&%$#d!~}__t\\qvutWVqponmlkjchKfedcbDZ_^]\>T=RWVUNSLQ4ONML/-CBG*(D'%A$">=~|:327xv43tr0)(-nl*ki'hf$ec!b`|_]\\qvutWVkTRRQlejMhgfeHcbD`_B]?UTY<:99NSR5P2HGL/-IH+F(>=B%#""7<;|9y105vt2sq/pn,mk)jh&%$ed!x}`{z]xwYuXVrUSoRPlkNLha`eHFbEC_B@??TYX;V8NMR53ON1L.DCH+)ED'B$:9>!};|z876wv32+r/.-n+*j(ig%$ec!xw|_]yx[YunmrUSonQOkdchKIeHFbEC_B@\?=Y<:99NSRQ43NMLKD-++*EDCBA:?"=<;|z21ww.321rq.-,+*#(i&%$e"!~``uzy\ZvonsrqTSnmlkjibKIIHcba`_^]V[>YXW:UTS55JON1L.DCH+)E(&BA$?!76;|z8ywvv-21r/o'&+lj(ig%fd"ca}`^z][ZZotsrUTonmlkjibgJedcFa`_^]@>ZSRW:877LQP31MFEJ-+GF)'C<;@#!=~|:{y76wu3,+0qo-nl*ki'hf$ecbbw|{z]\wvutsrqpiRmlkjiKafedcE[DY^]\UZSX;998MR5PON1LK-,,AFE(C%;:?"~<;|9y105vt2sq/pn,+l)i!~%fd"ca}`^z][wZXtsrUTinQlkNihgII^FF[`_^A@[T=XWV9TSR44INM0K-CBG*(D'%$$9>=~|:327xv4usrr).-nl*#"'hf$ec!b`|_]y\ZvYWsrqTSnmleNLLKfedc\aD_^]@[ZYXW:8TMLQ42NM0K-CBG*(DC&A#98=~|:9z7w/.3tr0/p-m%$)jh&ge#db~a_{^\x[YXXmrqpSRmlkjchKfedGbaC_^A\>TSX;9UT75QJIN1/KJ-+G@?D'%A@#!=65:{y7xv4us1rp.om+lj('&gf#"!~}v_]]\wvutsrkpSnmlOjihJJ_dcFaCYX]@>Z=;WV9T6LKP31M0.--BGF)D&<;@#!=~|:{y7xv4us1rpoo&+*)ji&%$#"!x}`{zy\ZpotWUTTinmPNjcbgJHdGEaDB^A?>>SXW:8TMLQ42N1/K.,H+)E(&%%:?>=~}:987654-trrq.-,+*)('~%f#"!b}|{]]rwvYWslkpSQPPejiLgI_^cFD`CA]@>Z=;::OTS6Q3IHM0.J-+G*(D'%A$">=<}|98765432+0q.-,+*j"'&%$dzcx}|uzyrwZutsrUponPPeMMbgfeHGbaZCAA@[ZYRW:UTSR5PONML/-IBAF)'C&$##8=<}{9216wu3tr0qo-nl*ki'hf$ec!b`__tyxwZYtsrkpSnmlkNihgII^cbE`BXW\?=Y<:VU8S5KJO20L/-I,*F)'C&$@#!=~|:9z7w/.321rq.-,+$kiih%$#"!x}`{zyx[vuWsVTSShmlOMibafIGFF[`_B@\UTY<:VU8S5KJO20L/-I,*F)'C&$@#!~~5:98yx54321*/p-,+*k('&ff{ccx}|{^]xwvutsrqjSnmlkjLbgfedF\EZ_^]V[TY<::9NS6QPON1LK-I,*FE(C%;:?"~}}498y6v.-2sq/pn,mk)jh&ge#db~a_^^sxwvYXmrUponmPkjLhKIHH]baDB^WV[><X;9U86R53O20L/-I,*FED'&A:#!!~;:38y65vt,+qq(-,+lk('~%f#"cawv{^\x[YuXVrUSoRPOOdihKfH^]bEC_B@\?=<<QVU86RKJO20LKJ-,GFE>'%%$?>=<5:{87x54t21r/o'&+lj('h%e{z!b`|{^\xqpuXVrUSoRPlOMiLJfIGcFDCCX]\[>=XWVUNS6443NMLKJC,GFE(CB$@#!=~|{{276w4t,+0qo-nl*)j'g}|#db~a_{^\xwZuWmlqpoRQlkjihaJHHGba`_^]V[>YXW:UTSRQ42NGFK.,HG*E'=<A$">!};:{y70/4us10qo-&%*ki'hf$ec!b`|_]y\ZvutWVqponmlejMhgJedcEEZ_^A\>TSX;9UT7R4JIN1/KJ-H*@?D'%$$9>=~;{327xv4us1rp.om+lj(ig%fd"!~a`{zyxwvunWUUTonmlkjihafIdcbE`_A]\?=YRQV9766KPO2M/EDI,*F)'C&$@#!=~|:{y7xv4usrr).-,ml)('&%$#"y~a|{zyxZputsrTjShmlkdibgJedcbE`_^@@U==RWVU87L5332MFK.IHGF)DC%A$">=~;{327xv4us10q.n&%*ki'hf$ec!b`|_]y\ZvutWVqjoRmlkjMhgIHH]baDB^WV[><;;PUT75QJIN1/K.,H+)E(&B%#?"~<}{987xw43,sqqp-,+$)j'&%f#"!aav{z]xZpotWUqTRnmPkMcbgJHdGEaDB^A?[><X;9U86R5322GLKJ-,GFE>C&A@#>=<;:{y70/4us10qo-&%*ki'hf$ec!~a|^tsx[YuXVUUjonQOkdchgfIHcba`YB]\[>YX:99NSR5P2HGL/-IH+)E>=B%#?"~<}{9zx6wu3tr0qo-nlkk"'&%fe"!~}|{t][[ZutsrqpohmPkjiLgfHdGEa`C^@VUZ=;WV9T6LKP31ML/J,BAF)'C&$@#!=~|:{y7xvuu,10/po,+*)('&}$e"!~a|{zyx[YunmrUSoRPlkNLha`eHFbaDB^WV[><XW:8TMLQ42N1/K.,H+)E(&B%#?>=~}:9876543,s0/.-,l$)('&f|ez!~w|{ty\ZZYnsVqpoRmlkMMbgfIdF\[`CA]@>ZY<W9ONS64P3100EJI,G)?>C&$@#!=~|:{y7xv4usrr).-,ml#(i&%$e"!a}`^z][wZXtWUqpSQmfejMKgJHdGEaDB^A?>>SXWV98SL5332MLEJ-HGF)DCBA@#!=65:{y7xv4us1rp.om+*k(h~}$ec!b`|_]y\ZvYWsrqTSnmfkNLLKfed]Fa`_B]\>ZY<:VONS64P31M0.J-+G*(D'%A$">!};|zyy0543ts0/.'nllk('&%|#d!~}`{zy[[putWrTjinQONNchgJeG]\aDBAAV[Z=;WPOT75Q42N1/KJ-H*@?D'%A$">!};:{8x0/432sr/.-,%*kiih%$#"!xa|{z]xwvutWUqjinQOkNLKK`edGEaZY^A?[Z=X:POT7544INM0K-CBG*(DC&A#98=~|:{y7xv4usrr).-,ml)('&%|eccb}|{zyxqvYtsrUpoQmPNMMbgfIGc\[`CA@@UZY<W9ONS64P31M0.--BGF)'C<;@#!=~|:{y7xv4us10/po,+*)('~%fddc~}|{zyxqZutsVqpRnmPkMcbgJHdGEa`C^@VUZ=;WV9T6LKP31M0.J-+G*(D'%A$"!!6;:9zy6543210)pnnm*)('&%$#z!b}|{^yxZvuXsUkjoRPlkNiKa`eHFbECBBW\[><XQPU86RQ4O1GFK.,H+)E(&B%#""7<;:{z76543210).o,+*)(h~%$#"bxav{zyrwpuXsrqTonPlkNiKa`eHFbEC_B@\?=Y<:V97S64P31M0.--BGFE('<%##"=6;|987x54t2sq/pn,mk)(ig%|{"ca}|_z\rqvYWsVTSShmlOMibafIGcFD`CA]@>Z=;WVU87RKP3NML/JI+GF)D&<;@#!=~|:9z7w/.3tr0qo-nl*ki'hf$ec!b`|{z]\wvoXVVUponglOjiLgfHdcFaCYX]@>Z=;WV9T6LKP31M0.J-+G*(D'%A$">!};:9zy654-2s0/p-,+kk"'&g$dzy~}|_^yxwvoXVVUponmlejMhgfIG]\aDB^A?[><XW:U7MLQ42N1/..CHG*E'=<A$">!};|z8yw5vt210qp-,+*)"'h%$#d!~`|{^\xqpuXVrUSoRPlkNLha`eHFbaDB^WV[><XW:U7MLQ42N1/K.,H+)E(&BA@#"=<;:981xvvu210/.-,%*k('h%$d"!b}_uty\ZvYWsrUpRhglOMLLafeHcE[Z_B@??TYX;V8NMR53O20LK.I+A@E(&B%#?>!<|43876wv3210/.-&+l)('hf|{ccx}|{^]xwvutsrqjSnmlkjLbgfedF\EZ_^]V[TY<::9NS6QP3NMLKJ-+G@?D'%A$">=~;{327xvuu,10qo-&%*ki'hf$ec!~a|^tsx[YXXmrqTRngfkNLKK`edGEaZY^]\?>SX;998SRKP3NM0.DC++@EDC&%@?8=~;:9z765uu,10qo-&%*)(ih%$#zcaa`{zyxqvYtsVTjinQOkjMhJ`_dGEa`C^@VUZ=;W:8T75Q42N1/KJ-H*@?D'%A$"!!6;:{8x0/4us10/po,+*)"'h%$#dbxw__tyxwZYtsrqpiRPPOjihgfe^cFa`C^]\[Z=;WPOT75QP3N0FEJ-+**?DC&$@98=~|:{y7xv4us1rp.-n+k#"'hf$ecbbw|{^\xqpuXVUUjonmPOjihgfe^cFDDC^]\[ZYXWPU8SR53IH00EJIH+*EDCBA@?>7<}:9876v.3210p(o&+$)('~%f#"c~}|^^sxwZXtmlqTRnQONNchgJeG]\aDB^]@[=SRW:877LQP31MFEJ-+G*(D'%A$">!};|zyy0543ts*q.-nl$#ii~%$#dc~}v_]]\wvunsVqpSnmlNNchgJHd]\a`_BA\[ZSX;998SRQPOHM0KJ-+A@((=BA@#"=<;:927x54u210pp',+lj(!~%$#dc~}|{zyr[vuXVlkSShmlkNMhgfedcbaZC^]\[Z<RWVUT6L5JONMFKDI,**)>C&A@#!76;|z8yw54u2r*).om+lj(ig%fd"ca}`^z][wZXtsrUTinQOONibKfedGE[Z_B@\?=Y<:99NSR5P2HGL/-IH+F(>=B%#?>!<|438yw5vt2sq/pnmm$)('hg${dbba|{ty\wvYtsrqpSQmfeMMbgfeHGbaZ_B]\[>YX:VU86RKJO20L/-I,*FE(&B;:?"~<;|z8105vt21r/o'&+lj(ig%fd"ca}`^zyx[ZutslUSSRmlkjchKfedGE[ZBBW\[Z=<WVUTSL5332MLKJIHAF)DCB%@?!=~|:{y7xv4us10qo-&%*ki'&g$dzy~a_{^\x[YuXVrUSonmPOjihgfe^cFa`C^]\>>SXW:U7MLQPO21LKJIHGF?(&&%@?>=<;:927x543tr*).om+lj(ig%$e"bxw|_]y\ZvYWsVTpSQmPNjMKgfeHGba`_^]\[TY<WVUTS5KPONM/E.CHGF?D=B%@?"=<;:9zx6/.3tr0/pn,%$)jh&ge#db~}`{]srwZXtWUqpoRQfOMMLg`eHcbECYX]@>Z=;W:8T75Q4211FKJ-H*@?D'%A$">!}||387xv4-,1rp.-,ml)"'h%$e"!a}|_z\rqvYWsrUpRhglOMihKIe^]bEC_B@\?=Y<:V97S64P3100EJIH+*ED=&$$#>=<5:{876wu-,1rp.-n+k#"'hf$ec!~a_{tsx[YuXVrUSoRPlOMiLJfIGFF[`_^A@[ZYRW:UTS6QPONM0.JCBG*(DC&A#98=~|:{y7xv4us1rp.om+lj(ig%fd"!~a`{zyxqZXXWrqponglOjiLgfeGG\a`C^@VUZ=;WV9T6LKP31ML/J,BAF)'&&;@?"=}549zx6wu3tr0qo-nl*ki'hf$#"cb}|{zyrwZutsVqpRnQOkjMhJ`_dGEa`C^@VUZ=;W:8T75Q42N1/K.,H+)EDC&%@?>=<;4{yyx543210/(-n+*k('&%$ec!xw|_]yx[YunmrUSoRPlOMihKfH^]bEC_B@\[Z=<WVUTSRQJO2ML/-CBG*(D'%A$">!};|zyy054u2r*).om+lj(igff{"!b`|uty\ZvutWVqponmlkjcLgfedcE[`_^]?U>SXWPUTMR5332GL/JI,GF(DC&A#98=~|:9z7w/.3tr0/pn,%$)jh&ge#db~a_{^\x[YuXVUUjonmPOdiLJJId]Fa`_B]\>ZY<:VONS64P31M0.--BGF)D&<;@#!=~|:{y7xv4us1rpoo&+*)ji&}fddc~}v{^yxwZutVUUjonQlNdchKIHH]baDB^WV[><XW:8TMLQ42NM0.JCBG*(D'%A$">!};|z8yw543ts0/(-n+*k('&ff{"!b}_uty\ZvuXsUkjoRPlkNiKa`eHFEEZ_^A\>TSX;9U86R53O20L/-I,*F)'CBA$#>=<5|zzy6543,1r/.-n+*)ii~%$e"bxw|_]yx[vXnmrUSRRglkNiKa`eHFbECBBW\[>Y;QPU86R53O20L/-I,*F)'&&;@?>!~;:9816w43t10/.-nl*#"'hf$#db~wv{^\x[YuXVrqToQgfkNLhKIedcFE`_^]\U><<;VUTSRQJO2ML/-CBG*(D'%A$">!};|zyy054u2r*).om+lj(igff{"!b`|uty\ZvutWVqponmlejMhgJedFbaD_AWV[><XW:U7MLQ42NM0.JCBG*(D'%A$">!};|z8yw5vtss*/.-nm*)('&%${dbba|{zyxwvunsVqpoRPfejMKgfIdF\[`CA]\?Z<RQV97S64P31M0.J-+G*(D'%A$"!!6;:9zy6543210/(-n+*)('g}$#"!aw`uzyxqvotWrqTonPlkNiKa`eHFbEC_^A\>TSX;9U86R53O20L/-I,*F)'CBA$#8!<;|z21ww.321rq.-&mkkj'&%|#d!~}`{zy[[putWUqjinQOkNLhgJeG]\aDB^A?[><X;9U86R53O20L/-,,AFED'&A@?8=~;:{y105vt2sq/.o,l$#(ig%fd"ca}`^z][wZXtWUqTRnmlONihgf_HFFE`_^]\UZ=XWV97MLQ42N1/KJ-+G@?D'%$$9>=~;{327xvuu,10qo-&%*ki'hf$ec!b`|_]y\ZvutWVqponmfkNihgfIdcbDDYAAV[ZY<;VUTSRQPOH1LKJIH*@EDCB$:#8=<;4927xvvu,1r/.-,m*)i'hf$ec!~a|^tsx[YuXVrqToQgfkNLhKIeHFbEC_B@\?=Y<:VUT76KP3NMLK.IH*FE(C%;:?"~<}{98yw5.-2sq/pn,mk)jh&ge#db~a_{zy\[voXsrqpSnmlNNcKK`edcFE`_^W@>>=XWVUNS6QPON1/EDI,*F)'&&;@?"=}549zxww.32s0p(',mk)jh&ge#db~a_{^\x[YXXmrqpSRmlkjchKfedcFa`B^A?>>SXW:8TMLQ42N1/K.,H+)E(&B%#?"~<;:{z76543,sqqp-,+*)(!&g$#d!~}|{^\xqpuXVrqTRngfkNLhKIeHFbaD_AWV[><X;988MRQ42NGFKJI,+FEDCBA:?"~~}:9876543,1r/.-n+*j(igff{"!b}_uty\ZvYWsrUpRhglOMiLJfeHcE[Z_B@\?=Y<:V97S64PON10KJIHGFED=B%@?>=<|49876v.u,10).-&+l)('h%$d"ca}|_]yrqvYWsrUpRhglOMihKIe^]bEC_B@\?=Y<:V97S6433HMLK.-B+))(C<A$?>=~;:987xv4-,1rp.omll#('h%e{z!b`|_]yx[vXnmrUSonQlNdchKIeHFbEC_B@??TYXW:9TMR5PO2ML.JI,*F?>C&$@#!=~|:{y7xv4us1rp.om+ljii~%$#dc~}v_]]\wvunsVqponQlkMiLJfeHcE[Z_B@\?=YX;9UNMR53O20L/-I,*F)'C&$@?>!~;:927xvvu210/.',m*)('h%$d"ca``uzy\ZvonsVTSShmlOjLbafIGcFD`CA]@>Z=;W:8T75QPO21LKJIHAF)''&A@?>=<;49z76w432rr).-n+k#"'hf$#d!awv{^\x[YutWrTjinQONNchgJeG]\aDBAAV[Z=X:POT75Q42NM0K-CBG*(''<A@?"!<;:9876/4u210/.n&+*)(h~g|#"!x}v{^yxwvYtsUqTRnQOkjMKg`_dGEaDB^A?[><X;9U86R5322GLKJ-,AF)DC&A@">!};|z8ywvv-21rp.'&+lj('hf${z!b`|_]y\ZvYWsVTSShmlkNMhg`eHFFE`_^]V[>YXWV9TS5Q42N1/..CHG*E'=<A$">!};|z8yw5vt2sq/pn,+*kj'&%${"caa`{zyxwvotWrqTonPlOMiLJfIGcFD`_B]?UTY<:VU8S5KJO20L/-I,*F)'C&$##8=<}:z216wu321rq.-,+*)"'hffe"!~}|{zyrwZutWrqponQOkdchKIeHFbEC_^A\>TSX;988MRQ42NGFK.,H+)E(&B%#?"~<;:{z76543210).o,+*)(h~%$#"bxav{zyrwpuXsrUponmlOMibafIGcFD`CA]\?Z<RQV97S6433HML/J,BAF)'CBA$#>7<}{{z765.3t10q.-m+lj('h%e{z!b`|{^y[qpuXVrUSRRglkNiKa`eHFEEZ_^A?[TSX;9U86R53O20L/-IHG*)DCB;@#>=~;:z8yw5vt2sq/pn,mk)(ig%|{"ca}`^z][wZXtWUTTinmlONihgfe^cFa`C^]?[><;;PUT7R4JIN1/K.,H+)E(&B%#?"~<}{9zx654ut10/.-,+$)j'&%$#cy~}|{]s\qputsrkpSQQPejMhgJedcEEZ_^A?[TSX;988MRQ42NGFK.,HG*E'=<A$">!};|z87x5u-,1rp.om+lj(ig%$#dcx}`^^]xwpuXsrUpoQmlOjLbafIGcbE`BXW\?=Y<:V97S64P31M0.J-+G*(DCB%$?>7<}{{z7654-2s0/.-n+*j('h%e{z!b`__tyx[vXnmrUSoRPlOMiLJfIGcFD`CA]@>==RWVU87RQPOHM0KJIH+FE'C&$##8=<}{9216wu3tr0qo-nl*ki'hf$ec!b`|_]yxwZYtsrqpohmPkjMKa`eHFbaDB^WV[><XW:8TMLQ42N1/K.,++@ED'B$:9>!}||387xv4-,1rpoo&+*ki'~}$#"cb}|{zyxwpYWWVqponmlkjchKfeHcbaCCX]\?Z<RQVUT76QPONMLKJCH+FEDCB$:?>=<|4{2765.3,1rppo&m*)(ig}|#db~a_{^\xwZuWmlqTRnQOkNLKK`edcFEZCAA@[TY<WVU8SR4P31ML/-IBAF)'&&;@?"~<549zx65vt2+*/pnmm$)(i&f|{"ca}`^z][wZXtWUqpoRQlejMKKJed]Fa`_B]\[ZY<:VONS64P31M0.--BGF)D&<;@#!=<}:z216wu32s0p(',mk)jh&ge#dbaav{zy\[vunWUUTonmfkNihgJedFbEC_B@\?=<<QVU86RKJO20LK.,HA@E(&BA$?!76;|z8yw5vt2sq/pn,+*kj'&%|#dbba|{zyr[vutWrqpRRglkNiKa`eHFbEC_^A\>TSX;9U8655JON1L.DCH+)E(&B%#?"~<}{9zxww.321rq.-,+$kiih%$#"!x}`{zy\wvXtsVTpihmPNjiLgI_^cFD`CA]@>Z=;::OTS64PIHM0.J-+G*(D'%A@#>~65:{yxx/432sr/.-,+$)jhhg$#"!~}v_zyx[vutVVkpoRmOediLJfeHcE[Z_B@\?=Y<:V9766KPO2M/EDI,*F)'C&$@#!=<}{921654ut10/.-,%ljji&%$#"!~w|_zyx[vuWsrUSohglOMiLJfIGcFD`CA]@>Z=;W:8T7544INML/.IHGFEDC<A$?>=~|438yw54u2r*).om+lj('h%e{z!b`|_]\\qvuXVrkjoRPlOMiLJfIGcFDCCX]\[>=XWVUTSRQJ3NMLKJ,BGFED&<%:?>=6;49zxxw.3t10/p-,l*)jh&}|#db~a_{z][wpotWUqTRQQfkjMhJ`_dGEaDB^A?[><X;9UTS65JO2MLK.IH*F)'&&;@?"~<549zxww.32s0p(',mk)jh&geddy~}`^zsrwZXtWUqTRnQOkNLhgfIHc\ECCB]\UZ=XWV9TS5Q42N1/KJ-H*@?D'%A$">=~;{327xvuu,10qo-&%kk"'&%fe"!x}`{zy\wvXtWUqpSnPfejMKgJHdGEDDY^]@[=SRW:8T75Q42N1/..CHGF)(CBA:#!!~;:9816w432s0/o-,m*j"!&ge#db~a_{^\x[YuXVrUSoRPlOMLLafedGFa`_^W\?ZYX;VU7S64P3100EJI,*F?>C&$@#!=~|{{276wu3,+0qo-nl*ki'hf$ec!~}`_zyxwvoXVVUponmlkdiLgfeHF\[`CA]@>Z=;WV9T6LKP3100EJI,G)?>C&$@#!=~|:{y7xv4us10/po,+*)('~%f#"!b`vuz][wvYtVlkpSQmPNjMKgfIGc\[`CA]@>Z=;W:8T75Q4211FKJI,+FEDCBA@9"~~}:9876543,1r/.-n+*)ii~%$ec!xw|_]yx[vXnmrUSRRglkNiKa`eHFbaD_AWV[><X;9U86R53O20L/-I,*FED'&A@?>=<;:38y65432r*/.-,l$k"'&}$#z!b}|{^yxwYYnsrUpRhglOMiLJfIGcbE`BXW\?=Y<:V97S64P31M0.J-+**?DCB%$9"~~}:38y654u21q/.om+$#(ig%fd"ca}`^z][wZXtWUqTRnQONNchgfIHc\aD_^]@[Z<X;988MRQ42NGFK.,++@ED'%A:9>!};|z87x5u-,1rp.om+lj(igff{"!~a`{zs\ZZYtsrkpSnmlOjihJJ_dcFD`YX]@>ZY<:VONS6433HML/J,BAF)'&&;@?"=}549zx6wu3tr0qo-nl*ki'hfeez!~}`_zyxqvYtsrUpoQPPejiLgI_^cFD`_B]?UTY<:V9766KPO2M/EDI,*))>CB%@"87<}{9zx6wu3tr0/p-m%$)('hg$#"!xa__^yxwvunsVqpoRmlNjiLgI_^cFDCCX]\?=YRQV9766KPO20LEDI,*FE(&B;:?"~<}{9zx6wu3trqq(-,mk)"!&%$ed!~}|{ty\wvuXsrTpSQmlOjLbafIGcbE`BXW\?=YX;V8NMR5322GLK.I+A@E(&B%#?"~<}{98yw5.-210qp-,+*)(!hffe"!~}|{zsx[vutWrqSonQlNdchKIeHFbEC_B@\?=Y<:V97S64P3100EJIH+*EDCBA@?8=~;:9z76v4us1rp.-nl*#"'hf$ec!b`|{^\xqpuXVUUjonQOkdchKIeHFbEC_^A\>TSX;9U8655JONM0/JIHGFEDC<%@?>=<|49876v.u,10/(-&+ljji~%f#"!b}|^]]rwvYtVlkpSQmPNjMKgfIdF\[`CA@@UZY<W9ONS64P31M0.--BGFE('<A$?>=~;:9yy054us1*).om+lj('hf${z!b`|_]\\qvuXVrkjoRPlOMiLJfIGcFD`CA@@UZYX;:UN7554ONGL/JIH+FE'C&$@?"=}549zxww.32sq/(',mk)jh&ge#db~a_{^\[[putsVUpohmPkjiLgfHdcFaCYX]@>Z=;WV97SLKP3100EJI,G)?>C&$@#!=~|:{y7xv4us1rp.-,ml)('~geed!~}|uz]xwZutsrqTRngfkNLhgJHd]\aDB^A?[><XW:U7MLQ42N1/KJI,+FEDC<A$?>!}549zx6wu3tr0qo-nlkk"'&g$dzy~a_{^\x[YXXmrqTRngfkNLhgfIHcba`_XA??>YXWVUTMR5PON1LK-I,*F)'C&$@?"=}549zx65vt2+*/pn,mk)(i&f|{"ca}`^z][wZXtWUTTinmlONihgfed]bE`_B]\[==RWV9T6LKPON10KJIHGFE>'%%$?>=<;:9816w432s0/o-,mk)"!&ge#db~a_{z][wpotWUqTRnQOkNLhKIeHFba`CB]\[ZYXWVOT7RQPON0FKJIH*@)>CBA:?8=~;:{87654us1*).om+*ki'~}$ec!b`|_]yx[vXnmrUSoRPlkjMLaJHHGb[`C^]@>TSX;9U86R53O20L/-,,AFE(C%;:?"~<}{9zxww.32sq/(',mk)('hg${"caa`{zs\wvuXsrTSShmlOjLbafIGcFD`CA]\?Z<RQV97S64P31M0.J-+G*(''<A@?"!<;4{yyx543,1r/.o,+*jj!&%f#cyx}|{^]xwvotWrqpSnmOkNLhKIHH]baD_AWV[><;;PUT75QJIN1/K.,H+)E(&B%#?"~<;:{z7654-trrq.-,+*#(i&%f#"!~}`^zsrwZXtsVTpihmPNjMKgJHdcFaCYX]@>Z=;WVU87RQPONGL/JI,*@?D'%A$">!};|z8ywvv-21r/o'&+lj(ig%fdccx}|_]yrqvYWsrqTSnmlkjibKIIHcba`_^]V[>YXW:UT6R53O20LK.,HA@E(&%%:?>!<|438yw5vt2sq/pn,mk)jhgg|#"!ba|{zyxwvotWrqTonmOOdihKfH^]ba`CB]\[ZYXWVO8SRQPO1GLKJI+A*?DC<A@9>!}}|38y654u210pp',+l)i!~%fd"!b}_uty\ZvYWsVTpSQmPNjMKgJHdGEaDBAAV[ZY<;PU8SRQP3NM/KJ-H*@?D'%A$">!};|z8yw5vt2sq/pnmm$)('hg$#"yb``_zyxwpuXsrqpSnmOkjMKg`_dGEaDBAAV[Z=;WPOT7544INM0K-CBG*(D'%A$">!};|z8yw5vtss*/.-nm*)('~%f#"!~a|{]yx[vXnmrUSoRPlkNLha`eHFbEC_B@\?=Y<:V97S64PON10KJIHG@)DCBA$?>=}}4zz1654ut10/.-,+$kiih%$#"!~}|uz]xwvuXVlkpSQmPNMMbgfIdF\[`CA@@UZY<W9ONS64P31M0.J-+G*(D'%A$"!!6;:9zy6543210/(-n+*)('g}$#"!aw`uzyxqvotWrqpoRmlNjMKJJ_dcFD`YX]@>Z=;W:8T75Q42N1/K.,HGF)(=&$$#>7<}:9z76543tr0)(-nl*)jh&}|#db~a_{^\xwZuWmlqTRnQOkjiLKf_dGbaDBXW\?=Y<:V97S64P3100EJI,G)?>C&$@#!=~|{{276wu3,+0qo-,+lk('~geed!~}v{^yx[vutVVkSShmlkNMhgf_dGbaD_^]??T<<QVUT76QPONG0..-HGFED=B%@?>!<;:98yw5.-2sq/.om+$#(ig%$e"bxw|_]y\ZvuXVrkjoRPlOMiLJfIGcFD`CA]\[>=XWVUTMR5332MLKJIHA*(('BA@?>=<5:{876wu-,rr).-,ml)('&%$#z!b``_zyxwvutslUponQlkMiLJfeHcE[Z_B@\?=<<QVU8S5KJO20L/-I,*F)'C&$@#!~~5:98yx543210/.'n+*)('g}$#"!aw`uzyxqvotWUUTinQlkNihgII^cbE`BXW\[Z=<QV9776QJ3NML/-CBG*(''<A@#>~65:{y7xv4us1rp.om+lj(ig%fd"ca``uzyx[ZunWUUTonglOjiLgfedcFD`YX]@>ZY<:VONS64P31M0.JI,G)?>C&$@#!=<;|{8705v32sq)(-nl*ki'hf$ec!b`__tyx[vXnmrUSoRPlOMLLafeHFb[Z_B@\[Z=<WVUN7554ONMLEJ-HGF)DCBA@#!=65:{y76wu3,+0qo-,m*j"!&ge#db~}`^zsrwZXtWUqTRnQOkNLhKIedcFE`_^]V[><<;VUTSRK4ON1LKJ,HG*)DCBA@9"~~}:98765.3t10/pn&%kk"'&%fe"!~}|{ty\wvuXsrTpSQmPNjiLgI_^cFD`_B]?UTY<:VU86RKJO20L/-I,*F)'C&$##8=<;|{8765432+rppo,+*)('&%|#d!~a|{z\\qvuXsUkjonmPOjihgfedc\aD_^]\[=SXWVU7M6KPINMLEJ-++*?(CBA$?>~<}{9zx6wu32s0p(',mk)jh&ge#"c~`vuz][wZXtWUqTRnmPkMcbgJHGG\a`_BAV?==<WPU8SR5PONML/-IBAF)'CB%#?87<}{9zx6wu32s0p(',mk)jh&%$ed!x}`{z][qpuXVrUSoRPlOMiLJII^cbE`BXW\?=Y<:V9766KPO20LEDI,*FED'&A@9"~~}:9816w432sq)(-nl*)jh&}|#db~a_{^\x[YuXVrUSoRPlOMiLJfedGFa`_X]@[Z=XWV88MRQ4O1GFKJI,+FEDC<%##"=<;:927x543tr*).om+lj(ig%fd"!b`|uty\ZvYWsVTpSQmPNjMKgfeHGba`_^W\?ZYX;9ONS64P31ML/J,BAF)'C&$@#!=~|:{y7xv4us1rp.-,ml)('&%${dbba|{zyxwvotWrqTonmlkNLha`HH]ba`CB]\[ZYXWPU8SRQ4ON0//DIH+F(>=B%#?"~<}{98y6v.-2sq/pn,+lj(!~%fd"ca}`^z][wZXtsrUTonmlkjihaJedcbaCY^]\[=S<QVUTMRKP3110EJ-HG*EDC%%:?>!<|43876wv-2sqqp-&m*)(ig}|#db~}`{]srwZXtWUqTRnQOkjMhJ`_dGEaDB^A?[><XW:U7MLQPO21LE.,,+FE>C&A@#>=<;:{y70/4us10qo-&%*ki'hf$ec!~a|^tsx[YuXVrqpSRmlejMhgJH^]bEC_B@\?=Y<:V9766KPO2M/EDI,*F)'C&$##8=<}{9216wu321rq.-,%ljji&%$#z!b}|{^yxwvuXVrkjoRPlkNLha`eHFbaD_AWV[><X;9UT75QJIN1/K.,H+)E(&B%#?"~<;:{z7654-2sqqp-,+*)"iggf#"!~}|uz]xwvYWmlTTinmlONihgfed]bE`_^A\[=<<QVU8S5KJO20L/-I,*F)'C&$@?"=}549zx65v3s+*/pn,+l)i!~%fd"!~a`{zyxwvunWUUTonmlkjihafIdcFa`_AAV[Z=X:POTSR54ONMLKJIHAF)DCBA@"8=<;:z2y0543,1*/pnnm$k('&g$#c!b`|_]y\ZvYWsrUpRhglOMihKfH^]bEC_B@\?=Y<:VU8S5KJO20//DIHG*)>'%%$?8=~;:{87654us1*).om+*ki'~}$ec!b`|_]yx[vXnmrUSoRPlkjMLg`eHcbECYX]@>Z=;W:8T75Q4211FKJ-H*@?D'%A$">!}||387xv4-,1rp.-,ml)(!hffe"!~w|_zyx[vutsrUSohglOMihKfH^]bEC_B@\?=<<QVU86RKJO20L/-I,*F)'C&$@#!=<;|{876/4u210q.-m+*k(h~}$ec!b`|{^y[qpuXVrUSonQOkdchKIeHFbEC_B@\?=<<QVUT76QPONG0..-HGFED=B%@?"=<;{{276w4t,+0/.on+*)('~%f#"!b}|^]]rwvYWslkpSQmPNjMKgJHdcFaCYX]@>Z=;W:8T75QP31MFEJIH+*EDCBA@9"~~}:987654-2s0/.o,+*jj!&%f#cyx}`^]]rwvYtVlkpSQmPNjMKgfIdF\[`CA@@UZY<W9ONS64P31M0.J-+**?DCB%$?>=<;:927x543t10p.om+lj(igff{"!b`|uty\ZYYnsrUSohglOMiLJfIGcFD`CA]\[>=XWVUTSRQJ3NMLKJ,BGFED&<%:?>7<;49zxxw.3t10q.-,ll#ii~%$#dcx}`{zy\wvXtWUqTRnQOkNLhKIeHFbECBBW\[><XQPU86R53O20LK.I+A@E(&BA$?!76;|z876wv3,sqqp-,%*k('&g$#c!b`__tyx[vXnmrUSRRglkNLha`eHFEEZ_^A?[TSX;988MRQ4O1GFK.,H+)E(&B%#?"~<;:{z76/4u21rp.-,+*kj'&%|eccb}|{zsx[vutWUkjRRglkjMLgfed]bE`_B]\[ZY<:VONS64PO20LEDI,*F)'C&$@?"=}549zx6wutt+0/pn,%$)('hg$#"!~w`^^]xwvutslqTonQOejihgJIdcba`_X]@[Z=;QP88MRQP32MLKJIHG@)''&A@?>=<;:38y654u210pp',+lj(!~%fd"ca}|_z\rqvYWVVkpoRmOediLJfIGFF[`_B@\UTY<:V97S64P31M0.--BGFE('BA@?>=<;49z76543s+0/.-m%l#('&}${"c~}`^tsx[YutWrTjinQOkNLKK`edGbDZY^A?[><X;9U86R53O20L/-IHG*)>'%%$?8=~;:9z76v43t1q)(-nl*)j'g}|#db~a_{z]xZpotWUTTinmPkMcbgJHdGEa`C^@VUZYX;:UNS6QP3NMLKJ-+G@?D'%A@#!=65:{y7xv4us10q.n&%*ki'hf$#"cb}|u^\\[vutmrUpoRPfejMKgJHdGEaDB^A?>>SXW:U7MLQ42N1/K.,++@ED'%A:9>!};:9zy654-2s0/.o,+*)(ig%|{"ca}|_]yrqvYWsrUpRhglOMiLJfeHFb[Z_B@\?=Y<:V97S64P31MLK.-HGFE>'BA$">=<;:{z76543,1r/.-nl$#ii~%$#dc~}|{zyr[YYXsrqponmfkNihgJedFbEC_^A?[TSX;9UT7R4JIN1/..CHG*E'=<A$">!};|z8yw5vt2sq/pn,+*kj'&%$#"!x}`{z]xwvXXmrqToQgfkjiLKfedcba`_XA\[ZYX:PUTSR4J3HMLKDIBG*(('<A$?>=~;:z87x5u-,1rp.om+*k(h~}$ec!~a|^tsx[YuXVrUSonQlNdchgfIH]bE`_B]\[ZY<:VONS64PO20LEDI,*F)'C&$@?"=}549zx6wu321rq.'nllk('~%f#"cawv{^\x[YuXVrUSoRPOOdihKfH^]bEC_B@\?=<<QVU86RKJO20LKJ-,GF?D'BA@#>=<;:{y70/4us10qo-&%*ki'&g$dzy~a_{^\xwZXtmlqTRnQOkNLhKIeHFbEC_^]@?ZYXQ:UT75QPONM0/JIHG@E(CBA$"87}}4987xw43210)pnnm*)('&%|#d!~a|{]\\qvuXVrkjoRPlOMiLJfeHcE[Z_B@\?=<<QVU86RKJONM0/JIHGFE>C&$$#>=<;:981x54us+0/.-nm*)('&%${dbba|{zyxwvunsVqpSQgfNNchgfIHcba`_^]\UZ=XWVUT6LQPON0F/DIHAFE>C&A@?"=<|{{276w4t,+0qo-nlkk"'&g$dzy~a_{z]xZpotWUqpSnPfejMKgJHdGEaDB^]\?>S<::9TMR5PO20FEJ-+GF)D&<;@#!=~|{{276w4t,+0qo-nl*ki'hf$ec!b`|_]yxwZYtmrUSSRmleNihgJedFbEC_^A?[TSX;9UT7R4JIN1/K.,H+)E(&B%#?"~<;|9y10vv-210qp-,%ljji&%${"c~}`{zyxwZXtmlqTRnmPNjcbgJHdGEaDB^]@[=SRW:8T75QPO21LKJCH+FE(&<;@#!=~|:{y7xv4usrr).-n+k#"'hf$ec!b`__tyx[YunmrUSonmPOjihg`IGGFa`_^]V[>YXW:UTSRQ42NGFK.,HG*(D=<A$">=~;{327xv4us10qo-&%*ki'hf$ec!b`|_]y\ZvutWVqponmfkNLLKfedcbaZCAA@[ZYXWVUNS6QPO20FE--BGFE('BA@?>=<5:{87x54tss*/.om+$#(ig%fd"ca}|_z\rqvYWsVTSShmlOMibafedGFa`_^]\[ZS<WVUTS5KPONM/E.CHGF?D=B%##"7<}:987x54t21r/o'&+lj(ig%$e"bxw|_]yxwZYnsVqpSQgfNNchgfIHc\ECCB]\UZ=XWV9TS5Q42N1/K.,HG*E'=<A$">=~;{327xv4us1rp.om+*)ji&%|#d!~a_uty\ZvuXsUkjoRPlOMLLafeHcE[Z_B@\?=Y<:V97S64P31M0.JIH+*EDC<%##"=<;:38y654u21q/pn,mk)(i&f|{"ca}|_z\rqvYWsVTpSQmPNjMKgfIdF\[CCX]\[>=XWVUNS6QPON1LK-I,*FE(&B;:?"~<}{9zx6wu3tr0qo-nlkk"'&%fe"!~}|{zs\ZZYtsrqponmfkNihgfIdcba`CA]VUZ=;W:877LQP31MFEJ-+**?DC&A#98=~|:{y7xv4us1rp.om+ljii~%$#dc~}|{zyxwpuXsrqpoQglkjiKaJ_dcb[`Y^A\[ZY<WV8TS6Q3IHM0.J-+GF)'C<;@#!=~|:{y7xv4us1rp.om+*)ji~g$#"!b}|{]]rZZotsrUTongPNNMhgf_dGba`_B@VUZ=;W:877LQP3N0FEJ-+**?DC&A#98=~|:{y7xv4us1rp.om+ljii~%$#dc~}|uz]xwvuXsrTpSQPPejiLJf_^cFD`CA]@>Z=;W:8T75Q42NML/.IHGF?(&&%@?>=<5:{87x54321rp.'&+lj('hf${z!b`|_]y\ZvuXsUkjoRPlOMihgJIdcba`Y^A\[><RQV97S64P31M0.J-+**?DC&A#98=~|:{y7xvuu,10qo-&%*ki'&%fe"!~}|{t][[ZutsrqpohmPkjMhgfHH]baD_AWV[ZY<;VUTSRQPIN1//.IHGFEDCB;$?>=~;:987xv4-,rr).-,ml)('&%$#"yb}|{zy[qvutsUkTinglkjchKIIH]bE`_B]\[ZY<:VON66KPON10EJ-HGF)DC%$$9>=~|:327xv43t1q)(-nl*ki'&ge#zy~a_{^\x[YuXVrUSoRPlkjMLg`IGGFa`Y^A\[>YXW9UT76QPIN1LKJ-+A@((=BA@#"=<;4{yyx5432+0q.-,m*)i'hf$ec!~a|^tsx[YutWrTjinQOkjMKg`_dGEaDB^A?[><X;988MRQP32MLKJCH+FE(CBA##8=<}:z21654ut10/.-&mkkj'&%$#"y~a|{z]xwYuXVrqTRngfkNLhKIHH]baDB^WV[><X;9UT7R4JIN1/K.,H+)E(&B%#?>=~}:98765.3t10q.-,+*ki'~}$ec!~a_{tsx[YuXVrUSonQlNdchKIeHFba`CB]\[ZYXWP9776QPONMLKJCH+FE(&<;@#!=~|:{y7xv4usrr).-n+k#"'hf$ec!b`__tyx[YunmrUSonmPOjihgfedc\aD_^]\[=SXWVU7M6KPONGLEJ-HGF)DC%A$">=~;{327xv4us1rp.om+lj(ig%fd"ca``uzyx[ZoXVVUpinQlkNihgIedGFaZ_B]\[><RQ99NSRQ43NMF/--,GFE>C&A@?"=<|{{276w4t,+0qo-nl*ki'&g$dzy~a_{^\xwZXtmlqTRnQOkNLhKIeHFba`CB]\[TY<WV9TSR44INM0K-CBGFE('BA@?8!}}|98765.3t10/p-,l*)jh&}|#db~a_{^\[[putWUqjinQOkNLhgJeG]\aDB^A?[><X;9UT7R4JIN1/..CHGF)(CBA@?8=~;:{87654us1*).om+*ki'~}$ec!b`|_]yx[vXnmrUSoRPlkjMLgfedcb[DBBA\[ZYXWVOT7RQ42HGL/-I,*F)'C&$@#!~~5:9z7w/.3tr0qo-nlkk"'&ge#zy~a_{zy\[vutsrqpinQlkNihJfIGFF[`_B@\UTY<:VU8S5KJO20LK.I+A@E(&B%#?"~<}{9zx6wu321rq.-,+*)('~g$#"!~`v{zyxZpYnsrqjohmPkjMKa`HH]ba`CB]V?==<WVOT7RQ42HGL/-I,*))>CB%@"87<}{98y6v.-2sq/.om+$#(ig%fd"ca}`^z][wZXWWlqpoRQlkdiLgfeHcbD`CA]@>Z=;::OTS6Q3IHM0.JI,G)?>C&$@#!=~|:{y76w4t,+0/.on+*)"i&%fd"!~}|_t]xwvutslqTonmPkjLKK`edGbDZY^A?>>SXW:U7MLQ42NM0K-CBG*(DC&A#98=~|{{2765v-2s0/.-n+*)ii~ff{"!~a`u^\\[votWrqpoRmlNMMbgfIGc\[`CA]\?Z<RQV97S64P31M0.J-+G*(D'%A$">!}||3876wv3,1r/.-,m*)i'&g$dzy~a_{^\xwZXtmlqTRnQOkNLhKIeHFbEC_B@\[Z=<WVO8SRQP3NML..C++@EDC&%@?>=6}{{z76543,1r/.-,mk#"'hf$ecbbw|{^y[qpuXVUUjonQlNdchKIeHFbEC_B@\?=Y<:V9766KPON10KJIHG@E(CBA@#>=};|zyy054us1*).om+lj(ig%fd"ca}`^z][wvuXWrqponmfOjiLJfedcbEZC^]\[ZYRW:UTS6QP2N1/KJ-H*@?D'%$$9>=~|:327xv4us10qo-&%*ki'hf$ec!b`|_]y\ZvutWlqTonmlOjihJJ_GG\a`_BAV?==<WPU8SRQP3NM/..CHG*(D=<A$">=~;{327xv4us1rp.om+lj(ig%fd"ca}`^]]rwvuXWrkpSnmlkNihJfeHcE[Z_B@\?=YX;9UNMR53O20L/-I,*F)'C&$@#!=<;|{870w4321r/.-mm$jj!&%$ed!~}|u^\\[vutsrkpSnmlkNLbafIGcFDCCX]\?Z<RQV9766KPO2M/EDI,*F)'C&$@#!=~|:{y7xvuu,10/po,+*)(!&g$#"!b}|^z][ZZotsVTpihmPNjMKgJHdGEaDB^A?[><XWV98SRQPONG0KJ-+GFEDC&;$?>=<;:38y654u21qpp',+lj(!~%fdccx}|_z\rqvYWsVTpSQmPNjMKgJHdGEaDB^]@[=SRW:877LQPO2GL/JIHG*EDC%%:""7<;:{z1xvvu2+0q.-,+l)(hgg|#"ca}vuz][wvYtVlkpSQmPNjMKgJHdGEaDB^A?[><X;988MRQP32MFK.IHGF)DC%A@#>~65:{y7xv43tr0)(-nl*ki'hf$ec!b`|_]y\ZvutWVqpiRmlOMihgfeH]Fa`_^]\UZ=;W:UNSRQP3HM0KJIH+FE'CB%@"87<}{9zxww.32s0p(',mk)jh&ge#db~a_{^\x[YXXmrqpSRgPNNchKIIH]bE`_^]\?ZYX::O77LQPO21FK.IHG*(DCBA@#8!<;:98705v321r/.n,+l)i!~%fdccx}|_]yrqvYWsrUpRhglOMiLJfIGcFD`CA]\?Z<RQ99NSRQ4I2MLKJIH+dd'&s_@?"![|k9EUC54tPPq)(Ln%I)"h3g1B@y~>O;M\[87o#WE2pSh.?,=iu:s&Gc\"~~XjzUgfwd:ss7L533!1}KhIH+@d>P<$$?![6}X9yUCBvQ,1=Mo',I*6"iDVfA@.?`<_M\r8IHXV31So/.lkjvLt`H%F#!DC1|?>gSXuPb'6p4n2mGFEi-yTFcD=%_#"8J<}{Fyx05SRPPa/L-,lH)F43fCAc!aaOu;:xZpH533TCBQzlOMvKgfe$]"D!C^j/>-w+u)O'6%$J\mM}E{,fx@E'=<_$po!6lkjz7wvAR,1a/.^&l$#Yig}|d/yx}=NM:9w%u5m3D0|.@-ewcKgsI7G#n`BA0/.yxeWtb'6pK43lkkEW-,Gdcb&&r_pK7~5|W2UgTR-sba/_^Jl$6F!hV1TAcQP<;;9977uWmEDS0.gfxdv;gsHH6\!`B|0i.xYvvPU7&_5]2ll}ihgHfeRQC&A#^!!}|Y9iVCSuQQPN<L^JJHGFF&V$AcyQw_{t\\J6H5sU1}Bhg?+*L(aJ%dGF!32|j{zT<w*P8'S%oJm[0k.i,g*e(c&a$_"]~[|YzWxUvStQrOpM:JJljFF&V1{@RQ
Ruby -p, 32 27 26 bytes
-5 bytes by leveraging Nick Kennedy's Jelly answer.
-1 byte from splitting on a different point in the string. Also realized my old bytecount was wrong.
~/m/;$_="Hi#$', I'm Ruby!"
Explanation
# -p gets line of input and saves to $_
~/m/; # Find first 'm' in $_ using regex
$_="Hi#$', I'm Ruby!" # Save modified string to $_
# ($' is the string AFTER the most recent regex match)
# -p outputs $_ to screen
k, 21 bytes
,[;", I'm k!"]"Hi",3_
AWK, 28 25 bytes
$1="Hi",$0=$0", I'm AWK!"
This program modifies the contents of field "$1" and "$0" in a range pattern. Because no actions are specified after the pattern, the default action {print $0} is executed.
Assembly (gcc, x64, Linux), 315 bytes
h:.int 26952
s:.int 32
g:.asciz ", I'm GNU Assembler!\n"
.globl main
main:
mov %rdi, %r13
mov %rsi, %r14
lea h, %rdi
mov $0, %rax
call printf
mov $2, %r15
l:
lea s, %rdi
mov $0, %rax
call printf
mov (%r14, %r15, 8), %rdi
mov $0, %rax
call printf
inc %r15
cmp %r15, %r13
jg l
lea g, %rdi
mov $0, %rax
call printf
ret
Ungolfed:
.section .bss
.section .data
hi:
.asciz "Hi"
space:
.asciz " "
imgnuasm:
.asciz ", I'm GNU Assembler!\n"
badArgumentCount:
.asciz "Requires at least two arguments\n"
.section .text
.globl main
main:
cmpq $3, %rdi # must have at least two arguments
jl .error
movq %rdi, %r13 # save argc
movq %rsi, %r14 # save argv
leaq hi, %rdi
movq $0, %rax #%rax holds how many xmm regs to be used in x86-64
call printf
movq $2, %r15 # because (%r14, %r15(==0), 8) is the program path and (%r14, %r15(==1), 8) is "I'm"
.loopbegin:
leaq space, %rdi
movq $0, %rax
call printf
movq (%r14, %r15, 8), %rdi #(%r14, %r15, 8)
movq $0, %rax
call printf
incq %r15
cmp %r15, %r13
jg .loopbegin
leaq imgnuasm, %rdi
movq $0, %rax
call printf
jmp .done
.error:
leaq badArgumentCount, %rdi
movq $0, %rax #%rax holds how many xmm regs to be used in x86-64
call printf
.done:
movq $0, %rax # return 0 (success)
ret
VBA (Excel), 27 28 bytes
?"Hi"Mid([A1],4)", I'm VBA!
Input goes in cell A1 of the Active Sheet in Excel, run code in the Immediate Window
Takes advantage of the fact that "SomeString"SomeValue and SomeValue"SomeString" will implicitly concatenate, and that omitting the third argument from the MID function will take all characters from the end of the input - turning it into a "dump initial characters" function
(-1 byte thanks to Shaggy, but +1 when OP confirmed that all answers should end with an exclamation mark)
(-1 byte thanks to Taylor Scott reminding me that the final double-quote was optional)
아희 (Aheui), 319 bytes
밦밚따밬다발빠받밠따따빠따따밟밢밙다다다분
뭏떠벓벑떠떠벐벌벋떠떠벉더너벅번뻐떠뻐떠벊
맣@섹뵗솬밯삭밧타뿌싿삳빠맣박밯빠싸주마붗
반밚따따두쪼@썽선처손@@@오섣멓서차소빠
성멓뻐섣멓@@@@@@희@먛@셔멓섣멓멓멓
Prints 아희(official Korean name of the language) instead of Aheui, so the code is quite long.
Sinclair ZX80 BASIC, 92 tokenized BASIC bytes
As the Sinclair ZX80 character set only allows for upper-case and 'inversed' characters, and doesn't include a single-quote, shifted-E is substituted here. There is no exclamation mark in the ZX80 character set either - Source.
1 INPUT A$
2 FOR I=0 TO 2
3 LET A$=TL$(A$)
4 NEXT I
5 PRINT "HI";A$;","
6 PRINT "I'M SINCLAIR ZX80 BASIC"
How it works:
Line 1 takes the input as a string value to A$;
Line 2 - 4 creates a loop to remove the first three characters of the entered value;
Line 5 - 6 then outputs the ultimate Dad joke.
Bean, 30 bytes
00000000: 56d8 8100 d3d0 80a0 5d20 8081 253c 5881 VØ..ÓÐ. ] ..%<X.
00000010: 01c8 69ac a0c9 a7ed a0c2 e5e1 ee21 .Èi¬ ɧí Âåáî!
Original JavaScript:
`Hi${a.slice(3)}, I'm Bean!`
The program takes the first line of raw input implicitly in a, removing the first three characters, and outputs the template above using that string.
Test Suite
00000000: 53d0 80d3 d080 a078 2080 8840 a05d 56d8 SÐ.ÓÐ. x ..@ ]VØ
00000010: 8100 d3d0 80a0 5d20 8081 253c 5881 0120 ..ÓÐ. ] ..%<X..
00000020: 807b 2381 02c8 69ac a0c9 a7ed a0c2 e5e1 .{#..Èi¬ ɧí Âåá
00000030: ee21 0a î!.
Original JavaScript:
_.map(a=>`Hi${a.slice(3)}, I'm Bean!`).join('\n')
The test suite takes all the lines of raw input implicitly in _, applies the first program to each line using map(), then outputs each result per line.
PowerShell Core, 53 bytes
Filter f{$_-replace"(...)(.*)",'Hi$2, $1 PowerShell'}
Probably could do more improvement on the regex. Oh well.
Lua, 68 59 bytes
function d(s)return(s:gsub("(I\'m)(.*)","Hi%2, %1 Lua"))end
Uses a pattern to swap in the I'm in the original and then returns the joke. Having chucks on a single line like this is valid, but ugly.
Edit: More efficient use of gsub
VSL, 51 bytes
fn f(s:String){print("Hi "+s[from:4]+", I'm VSL!")}
Glad VSL can now participate in some golfs :)
Try it online! (doesn't have latest VSL so might not work just yet)
Kotlin, 34 bytes
"Hi${i.substring(3)}, I'm Kotlin!"
Kotlin, 26 bytes
Is this a loop hole ?
"Hi${i.s(3)}, I'm Kotlin!"
The 26 is definitely a loophole else I can golf it to 5 bytes with:
i.k()
which is meaningless.
Forth (gforth), 40 bytes
: f 3 -3 d+ ." Hi"type ." , I'm Forth!";
Code Explanation
: f \ start a new word definition
3 -3 d+ \ add 3 to the starting address and subtract 3 from the string length
." Hi"type \ output "Hi" followed by all but the first 3 characters of the input string
." , I'm Forth!"; \ output ", I'm Forth!" and end the word definition
C (gcc), 59 42 33 bytes
-17 bytes thanks to @Conor O'Brien noticing that the import wasn't necessary
-9 bytes thanks to @tsh pointing out a shorter, UB way of writing the function
a(x){printf("Hi%s, I'm C!",x+3);}
Chops off the first 3 characters of the input (removes I'm) and surrounds it with the desired text.
Python 3, 35 34 bytes
lambda s:"Hi%s, I'm Python!"%s[3:]
-1 byte thanks to Embodiment of Ignorance
Also 34 bytes, using the newer formatted strings, thanks to Gábor Fekete:
lambda s:f"Hi{s[3:]}, I'm Python!"
Gema, 20 19 characters
<G>*=Hi*, $1 Gema\!
Sample run:
bash-4.4$ echo -n "I'm amazing" | gema '<G>*=Hi*, $1 Gema\!'
Hi amazing, I'm Gema!
bash-4.4$ echo -n "I'm a programmer" | gema '<G>*=Hi*, $1 Gema\!'
Hi a programmer, I'm Gema!
C (gcc), 49 bytes
+3 Bytes: was not working
-3 Bytes: K&R style function. thanks JohanduToit
This is similar to the answer from Neil A. but takes the input as commandline arguments instead of a function parameter.
main(b,a)char**a;{printf("Hi%s, I'm C!",a[1]+3);}
Octave, 35 bytes
@(s)["Hi" s(4:end) ", I'm Octave!"]
@(s) % Anonymous function taking a string input
[ ] % Concatenate everything inside the brackets
"Hi" ", I'm Octave!"] % The fixed parts of the output string
s(4:end) % The input, except "I'm"
% Returns the concatenated string
42 bytes:
I tried retrieving "Octave" somehow, without writing it out, since 6 chars is quite a lot compared to some of the other language names here. Unfortunately, I could only find ver, which outputs a struct with comma separated fields. Takes way more than 6 bytes. :(
@(s)["Hi" s(4:end) ", I'm " {ver.Name}{1}]
Javascript (Node.js in TIO), 60 bytes
s=>"Hi"+s.slice(3)+", I'm J"+process.argv[0].slice(6,15)+"!"
Japt, 18 bytes
`Hi{s3}, I'm Japt!
When Japt's string compression library achieves a 0% compress rate...
Another 18-byte alternative:
`Hi{Ť}, {¯4}Japt!
Jelly, 20 17 bytes
ṫ4;“'ṫṗḶ/÷!Ṗ»⁾Hi;
A monadic link taking the input as its argument and returning a Jelly string.
Explanation
ṫ4 | everything from 4th character on
;“'ṫṗḶ/÷!Ṗ» | concatenate ", I’m Jelly!" to the end
⁾Hi; | concatenate "Hi" to the beginning
Clojure, 36 bytes
#(str"Hi"(subs % 3)", I'm Clojure!")
Befunge-93, 45 bytes
"iH",,~~~>~# :1+#,_0"!39-egnufeB m'I ,">:#,_@
Dissected:
"iH",, Push then output constant "Hi"
~~~ Read "I'm" from output, which gets unused
>~# :1+#,_ Non-wrapping cat program
0"!39-egnufeB m'I ," Push null-terminated constant string to stack
>:#,_@ Output string and exit
AutoIt, 45
Msgbox(0,0,"Hi "&$cmdLine[2]&", I'm AutoIt")
Grabs the second word from the command line and puts it in a popup. (Must be compiled to exe)
PowerShell, 42 41 40 37 bytes
-1 byte thanks to Spitemaster
"Hi$($args|% s*g 3), I'm PowerShell!"
There might be a cheaper automatic variable holding the PowerShell version hiding somewhere but I'm not sure. Answer takes the substring after I'm to the end and builds a string with it.
T-SQL, 44 bytes
SELECT STUFF(v,1,3,'Hi')+', I''m SQL!'FROM t
Input is taken via pre-existing table t with text field v, per our IO standards.
STUFF is shorter than variations using SUBSTRING or RIGHT.
Can handle multiple inputs (as separate rows in t), although that's not required.
Jelly, 16 15 bytes
Ḋa⁾Hi“'ṫṗḶ/÷!Ṗ»
A full program accepting a (Python formatted) string argument which prints the result.
How?
Ḋa⁾Hi“'ṫṗḶ/÷!Ṗ» - Link: list of characters e.g. "I'm a programmer"
Ḋ - dequeue "'m a programmer"
⁾Hi - pair of characters "Hi"
a - logical AND (vectorises) "Hi a programmer"
“'ṫṗḶ/÷!Ṗ» - list of characters ", I'm Jelly!"
- - since this is a new leading constant chain the previous result
- is implicitly printed (with no trailing newline)
- program result is implicitly printed (again with no trailing newline)
Note: Ḋ⁾Hio... works too.
sed (-r), 31 28 25 bytes
-3 bytes thanks to Shaggy
-3 bytes because -r not needed in output
s/I'm(.*)/Hi\1, I'm sed!/
Perl 5 -p, 31 24 bytes
Cut down based on clarifications from OP and a suggestion from @NahuelFouilleul.
/ /;$_="Hi $', $` Perl!"
R 45 44 39 bytes
@Giuseppe Edit
sub("I'm(.*)","Hi\\1, I'm R",scan(,""))
@AaronHayman Edit
function(s)sub("I'm (.*)","Hi \\1, I'm R",s)
Stax, 13 bytes
â∞¿φ‼0▲(─ƒSqÄ
Unpacked, ungolfed, and commented, it looks like this.
.Hip print "Hi" with no newline
3tp trim 3 characters from start of input and print with no newline
final line is to print the unterminated compressed literal ", I'm stax!"
`dYgAwg_
I moved the final comment up one line since nothing may follow an unterminated string literal.
Retina 0.8.2, 26 25 23 bytes
^...
Hi
$
, I'm Retina!
-1 byte thanks to @attinat.
-2 bytes by porting @Adám's QuadR answer, so make sure to upvote him!!
PS: @Neil posted a shorter Retina answer in the new version, so I've changed this answer to Retina 0.8.2 explicitly.
Explanation:
Replace the first three characters with "Hi":
^...
Hi
And then append a trailing ", I'm Retina!" (by replacing the end of the string):
$
, I'm Retina!
APL+WIN, 31 21 bytes
10 bytes saved by taking on board Adam's comments. Thanks.
"Hi",3↓⎕,", I'm APL!"
Prompts for input string.
Retina, 22 21 bytes
3L$`
Hi$', $` Retina!
Try it online! Link includes test cases. Does not work in Retina 0.8.2, so adapt @Adám's QuadR answer instead. Explanation: The pattern is empty, so it matches at every position in the input string. We only need the third (or fourth would work) match however. The substitution is then applied to that match. Within that substitution, $' refers to the rest of the string and $` refers the the beginning of the string.
AutoHotkey, 43 bytes
s := "I'm tired"
MsgBox % "Hi"SubStr(s,4)", I'm AutoHotkey!"
Not sure what's considered an output in AutoHotkey and I guess input string is not counted, so in that case the second line is 43 bytes.
Charcoal, 21 bytes
Hi✂S³P, I'm Charcoal!
Try it online! Link is to verbose version of code. Explanation: ✂ is the Slice operator which normally takes four arguments, however the use of the P command to output the suffix allows Charcoal to deduce that the last two arguments were omitted.
IBM/Lotus Notes Formula Language, 61 62 bytes
+1 because I hadn't noticed the ! at the end of the output.
"Hi"+@Right(i;"I'm")+", I'm IBM/Lotus Notes Formula Language!"
Computed field formula that takes it's input from an editable field i. It would fail for "I'm an I'm" but since that wouldn't make any sense at all I'm assuming that it won't happen.
Shame that at 32 bytes, the name of the language is more than half the total length of the formula!
Screenshot below showing an example input and output:
V, 13 bytes
cEHi<Esc>A, <C-O>p V!
New to V. Just knew it about 30 minutes ago. Anyway, this language is chosen just because its name only cost 1 byte. I'm not sure how to send <End> key in V. Most vim environment would accept <End> as a replacement of <Esc>A in this example. But, you know, V is 2 characters shorter than vim. :)
Thanks to @Candy Gumdrop, saves 1 byte.
V, 13 bytes
cEHi<esc>A, <C-r>" V!
Inspired by tsh's answer
This takes advantage of the fact that I'm is yanked from the start of the string when deleting the text from the start, and pastes it to the end with <C-r>" while in insert mode.
Batch, 22 + 3 = 25 bytes
@echo Hi %*, %0 Batch!
+3 bytes for naming this file I'm (with the required .bat extension for Batch files). Invoke as I'm hungry, when it will echo Hi hungry, I'm Batch!.
QuadR, 22 bytes
^...
$
Hi
, I'm QuadR!
This replaces:
^... three initial characters
and
$ the end-of-line
with
Hi
and
,I'm QuadR
respectively
Whitespace, 267 bytes
[S S S T S S T S S S N
_Push_72_H][T N
S S _Print_as_character][S S S T T S T S S T N
_Push_105_i][T N
S S _Print_as_character][S S S N
_Push_0][S N
S _Duplicate_0][S N
S _Duplicate_0][T N
T S _Read_STDIN_as_character][T N
T S _Read_STDIN_as_character][T N
T S _Read_STDIN_as_character][N
S S N
_Create_Label_INPUT_LOOP][S S S N
_Push_0][S N
S _Duplicate_0][T N
T S _Read_STDIN_as_character][T T T _Retrieve][S N
S _Duplicate_input][S S S T S T S N
_Push_10][T S S T _Subtract][N
T S S N
_If_0_Jump_to_Label_TRAILING][T N
S S _Print_as_character][N
S N
N
_Jump_to_Label_INPUT_LOOP][N
S S S N
_Create_Label_TRAILING][S N
N
_Discard_top][S S T T S S S T S T N
_Push_-69_!][S S T T N
_Push_-1_e][S S T T T N
_Push_-3_c][S S T T S T N
_Push_-5_a][S S S T S T S N
_Push_10_p][S S S T T S T N
_Push_13_s][S S T T N
_Push_-1_e][S S S T T T S N
_Push_14_t][S S S T T N
_Push_3_i][S S S T S N
_Push_2_h][S S T T T T T N
_Push_-15_W][S S T T S S S T T S N
_Push_-70_space][S S S T T T N
_Push_7_m][S S T T T T T T T N
_Push_-63_'][S S T T T T S T N
_Push_-29_I][S T S S T T N
_Copy_0-based_3rd_-70_space][S S T T T T S T S N
_Push_-58_,][N
S S T N
_Create_Label_PRINT_TRAILING_LOOP][S S S T T S S T T S N
_Push_102][T S S S _Add][T N
S S _Print_as_character][N
S N
T N
_Jump_to_Label_PRINT_TRAILING_LOOP]
Letters S (space), T (tab), and N (new-line) added as highlighting only.
[..._some_action] added as explanation only.
Since Whitespace inputs one character at a time, the input should contain a trailing newline so it knows when to stop reading characters and the input is done.
Try it online (with raw spaces, tabs, and new-lines only).
Explanation in pseudo-code:
Print "Hi"
Read three characters from STDIN, and do nothing with them
Start INPUT_LOOP:
Character c = STDIN as character
If(c == '\n'):
Call function PRINT_TRAILING
Print c as character
Go to next iteration of INPUT_LOOP
function PRINT_TRAILING:
Discard the top of the stack (the c='\n' that was still on the stack)
Push "!ecapsetihW m'I ," one character at a time
Start PRINT_TRAILING_LOOP:
Print as character
Go to next iteration of PRINT_TRAILING_LOOP
The characters of ", I'm Whitespace!" are pushed in reversed order, and then printed in a loop. All values of these characters are also lowered by 102, which are added in the loop before printing to save bytes. This constant 102 to lower each character with is generated with this Java program. Also, instead of pushing the value -70 for both spaces twice, the second space in "!ecapsetihW m'I ," is copied from the first with the Copy builtin to save a few bytes.
05AB1E, 23 21 bytes
Saved 2 bytes thanks to Kevin Cruijssen
',«#À„Hiš"05AB1E!"ªðý
Explanation
',« # append ","
# # split on spaces
À # rotate left
„Hiš # prepend "Hi"
"05AB1E!"ª # append the language name
ðý # join on spaces
brainfuck, 164
,-.+>,>,----.++++>,.>,[.,]<<<+++++.----->>.[<]>[.>]<[->+++<]>++.[--->+<]>----.+++[->+++<]>++.++++++++.+++++.--------.-[--->+<]>--.+[->+++<]>+.++++++++.+[++>---<]>-.
The "brainfuck!" part of the string is generated with this tool, can probably be golfed further by hand.



